android_kernel_motorola_sm6225/arch/x86/kvm
Sasha Levin 743eeb0b01 KVM: Intelligent device lookup on I/O bus
Currently the method of dealing with an IO operation on a bus (PIO/MMIO)
is to call the read or write callback for each device registered
on the bus until we find a device which handles it.

Since the number of devices on a bus can be significant due to ioeventfds
and coalesced MMIO zones, this leads to a lot of overhead on each IO
operation.

Instead of registering devices, we now register ranges which points to
a device. Lookup is done using an efficient bsearch instead of a linear
search.

Performance test was conducted by comparing exit count per second with
200 ioeventfds created on one byte and the guest is trying to access a
different byte continuously (triggering usermode exits).
Before the patch the guest has achieved 259k exits per second, after the
patch the guest does 274k exits per second.

Cc: Avi Kivity <avi@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
2011-09-25 19:17:59 +03:00
..
emulate.c KVM: x86 emulator: fix Src2CL decode 2011-09-25 19:14:58 +03:00
i8254.c KVM: Intelligent device lookup on I/O bus 2011-09-25 19:17:59 +03:00
i8254.h KVM: remove useless function declaration kvm_inject_pit_timer_irqs() 2011-05-11 07:57:09 -04:00
i8259.c KVM: Intelligent device lookup on I/O bus 2011-09-25 19:17:59 +03:00
irq.c
irq.h KVM: Intelligent device lookup on I/O bus 2011-09-25 19:17:59 +03:00
Kconfig KVM: uses TASKSTATS, depends on NET 2011-08-16 19:00:41 +03:00
kvm_cache_regs.h
kvm_timer.h
lapic.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
lapic.h KVM: x86: Remove useless regs_page pointer from kvm_lapic 2011-03-17 13:08:33 -03:00
Makefile
mmu.c KVM: MMU: fix incorrect return of spte 2011-09-25 19:13:25 +03:00
mmu.h KVM: MMU: mmio page fault support 2011-07-24 11:50:40 +03:00
mmu_audit.c KVM: MMU: remove bypass_guest_pf 2011-07-24 11:50:33 +03:00
mmutrace.h KVM: MMU: trace mmio page fault 2011-07-24 11:50:41 +03:00
paging_tmpl.h KVM: MMU: mmio page fault support 2011-07-24 11:50:40 +03:00
svm.c KVM: Use __print_symbolic() for vmexit tracepoints 2011-09-25 19:17:59 +03:00
timer.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
trace.h KVM: Use __print_symbolic() for vmexit tracepoints 2011-09-25 19:17:59 +03:00
tss.h
vmx.c KVM: Use __print_symbolic() for vmexit tracepoints 2011-09-25 19:17:59 +03:00
x86.c KVM: Intelligent device lookup on I/O bus 2011-09-25 19:17:59 +03:00
x86.h KVM: MMU: cache mmio info on page fault path 2011-07-24 11:50:26 +03:00