Kay, Allen M
2009-Jun-02 00:23 UTC
[Xen-devel] [VTD][PATCH] enabling pci mmcfg and ATS for x86_64
This patch enables PCI MMCONFIG in xen and turns on hooks for ATS. All previous feedbacks for PCI MMCFG have been incorporated. I have tested the patch on Intel x86_64 and build tested on IA-64 and x86_32. Since PCI config offsets below 256 is still using cfc/cf8 method, I don''t expect impact to existing code accessing PCI config area. xen/arch/x86/acpi/boot.c : add call acpi_mmcfg_init() xen/arch/x86/e820.c : add linux function e820_all_mapped() - used by mmconfig-shared.c xen/arch/x86/pci.c : move pci_conf_*() from here to x86_64 and x86_32 xen/arch/x86/x86_32/pci.c : pci_conf_read*() and pci_conf_write*() moved here unchanged xen/arch/x86/x86_64/pci.c : for PCI reg value > 255 use pci_mmcfg_*() else use the original cfc/cf8 xen/include/asm-x86/msr-index.h : sync with Linux kernel, change "#define FAM10H_MMIO_CONF_ENABLE_BIT 0" to "#define FAM10H_MMIO_CONF_ENABLE (1<<0)" xen/arch/x86/traps.c : change (1 << FAM10H_MMIO_CONF_ENABLE_BIT) to FAM10H_MMIO_CONF_ENABLE xen/arch/x86/x86_64/acpi_mmcfg.c : Linux acpi mmcfg parsing functions xen/arch/x86/x86_64/mmconfig-shared.c : ported over Linux file with same name xen/arch/x86/x86_64/mmconfig.h : misc. definitions used by mmcfg xen/arch/x86/x86_64/mmconfig_64.c : ported over Linux file with same name xen/arch/x86/x86_32/Makefile : add pci.o xen/arch/x86/x86_64/Makefile : add pci.o, acpi_mmcfg.o, mmconfig_64.o, mmconfig-shared.o xen/drivers/passthrough/vtd/extern.h : add new ats function prototypes xen/drivers/passthrough/vtd/ia64/ats.c : remove unnecessary stub function. xen/drivers/passthrough/vtd/iommu.c : enable call to ats_device() and enable_ats_device() xen/drivers/passthrough/vtd/qinval.c : enable call to dev_invalidate_iotlb() xen/drivers/passthrough/vtd/x86/ats.c : remove unnecessary stub function. xen/include/asm-x86/acpi.h : add acpi_mmcfg_init() prototype, clean up xen/include/asm-x86/config.h : reserve SLOT 257 for PCI_MCFG_VIRT_START/END. Given PML4 slot has 39 bits, we currently limit to maximum of 2049 PCI segments. xen/include/asm-x86/e820.h : add prototype for e820_all_mapped() xen/include/xen/pci.h : add prototypes for pci_mmcfg_read/write(), pci_find_ext_capability() Signed-off-by: Allen Kay allen.m.kay@intel.com _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel