linux/arch/x86/include/asm/xen
Boris Ostrovsky 14520c92cb xen/pci: Use APIC directly when APIC virtualization hardware is available
When hardware supports APIC/x2APIC virtualization we don't need to use
pirqs for MSI handling and instead use APIC since most APIC accesses
(MMIO or MSR) will now be processed without VMEXITs.

As an example, netperf on the original code produces this profile
(collected wih 'xentrace -e 0x0008ffff -T 5'):

    342 cpu_change
    260 CPUID
  34638 HLT
  64067 INJ_VIRQ
  28374 INTR
  82733 INTR_WINDOW
     10 NPF
  24337 TRAP
 370610 vlapic_accept_pic_intr
 307528 VMENTRY
 307527 VMEXIT
 140998 VMMCALL
    127 wrap_buffer

After applying this patch the same test shows

    230 cpu_change
    260 CPUID
  36542 HLT
    174 INJ_VIRQ
  27250 INTR
    222 INTR_WINDOW
     20 NPF
  24999 TRAP
 381812 vlapic_accept_pic_intr
 166480 VMENTRY
 166479 VMEXIT
  77208 VMMCALL
     81 wrap_buffer

ApacheBench results (ab -n 10000 -c 200) improve by about 10%

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
2014-12-04 13:02:43 +00:00
..
cpuid.h xen/pci: Use APIC directly when APIC virtualization hardware is available 2014-12-04 13:02:43 +00:00
events.h xen: Support 64-bit PV guest receiving NMIs 2013-08-09 10:55:47 -04:00
hypercall.h arm: xen: implement multicall hypercall support. 2014-04-24 13:09:46 +01:00
hypervisor.h xen: Switch to use hypervisor_cpuid_base() 2013-08-05 06:34:09 -07:00
interface_32.h
interface_64.h
interface.h arm: xen: implement multicall hypercall support. 2014-04-24 13:09:46 +01:00
page-coherent.h xen: add a dma_addr_t dev_addr argument to xen_dma_map_page 2014-12-04 12:41:51 +00:00
page.h xen/arm/arm64: introduce xen_arch_need_swiotlb 2014-12-04 12:41:54 +00:00
pci.h xen/pci: Squash pci_xen_initial_domain and xen_setup_pirqs together. 2011-07-11 13:19:30 -04:00
swiotlb-xen.h xen/swiotlb: Use the swiotlb_late_init_with_tbl to init Xen-SWIOTLB late when PV PCI is used. 2012-09-17 12:58:16 -04:00
trace_types.h xen/trace: add multicall tracing 2011-07-18 15:43:26 -07:00