IOMMU updates for 3.3-rc1
Hi Linus,
The following changes since commit dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50:
Linux 3.2-rc5 (2011-12-09 15:09:32 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git next
The most important changes for this merge window in the IOMMU tree are:
* Generic support for multiple page-sizes. The iommu-layer now gets a bitmap from the iommu-driver about the supported page-sizes and the generic code splits the map-requests accordingly (by Ohad Ben-Cohen)
* Device-group code, the iommu-drivers now export information which devices the iommu hardware can safely isolate and which not. Devices which can't be safely isolated with the hardware belong to the same group. This will be used by the VFIO driver (by Alex Williamson)
* AMD IOMMU driver extensions to support the version 2 of AMD IOMMU hardware. With hardware that can make use of it this is a step towards demand-paging for device-dma (by me)
* Other random fixes and improvements
You also find a few patches in this pull-request which are from the PCI tree. I pulled in the patches into the x86/amd branch from the pri-changes branch kindly provided by Jesse Barnes. The patches in this branch should also be in the PCI tree. I had to do this because patches in the PCI tree renamed some constants I use in my new code. Doing it this way makes sure that everything still compiles when this tree is pulled.
The top-commit of the next branch on my local machine is
f4e8a3c5e33972dc78f042f9e839b33e213325d0
When I did a test-pull of the branch against v3.2 there was a conflict in drivers/pci/hotplug/acpiphp_glue.c (due to the changes I pulled in from the PCI tree). Please let me know in case you want me to fix that.
Thanks,
Joerg
Alex Williamson (7):
iommu: Add iommu_device_group callback and iommu_group sysfs entry iommu/intel: Implement iommu_device_group
iommu/amd: Implement iommu_device_group
iommu: Add option to group multi-function devices
PCI: Fix PRI and PASID consistency
PCI: Enable is not exposed as a PASID capability
PCI: More PRI/PASID cleanup
Eric W. Biederman (1):
PCI: msi: Disable msi interrupts when we initialize a pci device
Joerg Roedel (32):
iommu: Fix compile error with !IOMMU_API
Merge branch 'for-joerg' of git://git.kernel.org/.../ohad/linux into arm/omap iommu/amd: Convert dev_table_entry to u64
iommu/amd: Get the maximum number of PASIDs supported
iommu/amd: Setup PPR log when supported by IOMMU
iommu/amd: Enable GT mode when supported by IOMMU
iommu/amd: Add iommuv2 flag to struct amd_iommu
iommu/amd: Put IOMMUv2 capable devices in pt_domain
iommu/amd: Implement notifier for PPR faults
iommu/amd: Add amd_iommu_domain_direct_map function
iommu/amd: Add support for IOMMUv2 domain mode
iommu/amd: Implement IOMMUv2 TLB flushing routines
iommu/amd: Implement functions to manage GCR3 table
iommu/amd: Implement function to send PPR completions
iommu/amd: Add function to get IOMMUv2 domain for pdev
iommu/amd: Add device errata handling
iommu/amd: Add stat counter for IOMMUv2 events
iommu/amd: Add driver stub for AMD IOMMUv2 support
iommu/amd: Implement device aquisition code for IOMMUv2
iommu/amd: Add routines to bind/unbind a pasid
iommu/amd: Implement IO page-fault handler
iommu/amd: Implement notifiers for IOMMUv2
iommu/amd: Add invalid_ppr callback
Merge branch 'iommu/page-sizes' into x86/amd
Merge remote-tracking branch 'pci/pri-changes' into x86/amd
iommu/amd: Adapt IOMMU driver to PCI register name changes
iommu/amd: Add amd_iommu_device_info() function
iommu/amd: Add invalidate-context call-back
iommu/amd: Remove unnecessary cache flushes in amd_iommu_resume
iommu/amd: Init stats for iommu=pt
iommu/amd: Set IOTLB invalidation timeout
Merge branches 'iommu/fixes', 'arm/omap', 'x86/amd', 'iommu/page-sizes' and 'iommu/group-id' into next
Kenji Kaneshige (2):
PCI: pciehp: Fix wrong workqueue cleanup
PCI: pciehp: Handle push button event asynchronously
KyongHo Cho (1):
iommu: Initialize domain->handler in iommu_domain_alloc()
Matthew Garrett (1):
PCI: Rework ASPM disable code
Neil Horman (1):
PCI/sysfs: add per pci device msi[x] irq listing (v5)
Ohad Ben-Cohen (11):
iommu/core: stop converting bytes to page order back and forth iommu/core: split mapping to page sizes as supported by the hardware iommu/omap: announce supported page sizes
iommu/msm: announce supported page sizes
iommu/amd: announce supported page sizes
iommu/intel: announce supported page sizes
iommu/core: remove the temporary pgsize settings
ARM: OMAP: iommu: declare a private iommu binding struct
ARM: OMAP3: bind omap3isp_device to its iommu device iommu/omap: eliminate the public omap_find_iommu_device() method iommu/omap: be verbose when omap_iommu_iova_to_phys fails
Rafael J. Wysocki (2):
PCI/ACPI: Make acpiphp ignore root bridges using SHPC native hotplug PCI/ACPI/PM: Avoid resuming devices that don't signal PME
Documentation/ABI/testing/sysfs-bus-pci | 18 + Documentation/kernel-parameters.txt | 9 +- arch/arm/mach-omap2/devices.c | 7 + arch/arm/plat-omap/include/plat/iommu.h | 31 +- arch/arm/plat-omap/include/plat/iovmm.h | 12 +- arch/ia64/include/asm/iommu.h | 2 + arch/ia64/kernel/pci-dma.c | 1 + arch/x86/include/asm/iommu.h | 1 + arch/x86/kernel/pci-dma.c | 11 + drivers/acpi/pci_root.c | 7 + drivers/iommu/Kconfig | 13 +- drivers/iommu/Makefile | 1 + drivers/iommu/amd_iommu.c | 883 ++++++++++++++++++++++++++-- drivers/iommu/amd_iommu_init.c | 133 ++++- drivers/iommu/amd_iommu_proto.h | 24 + drivers/iommu/amd_iommu_types.h | 118 ++++- drivers/iommu/amd_iommu_v2.c | 994 +++++++++++++++++++++++++++++++ drivers/iommu/intel-iommu.c | 79 +++- drivers/iommu/iommu.c | 179 ++++++- drivers/iommu/msm_iommu.c | 25 +- drivers/iommu/omap-iommu.c | 80 ++-- drivers/iommu/omap-iovmm.c | 48 +- drivers/media/video/omap3isp/isp.c | 30 +- drivers/media/video/omap3isp/isp.h | 2 - drivers/media/video/omap3isp/ispccdc.c | 18 +- drivers/media/video/omap3isp/ispstat.c | 8 +- drivers/media/video/omap3isp/ispvideo.c | 4 +- drivers/pci/ats.c | 90 ++-- drivers/pci/hotplug/acpiphp_glue.c | 4 +- drivers/pci/hotplug/pciehp.h | 1 - drivers/pci/hotplug/pciehp_core.c | 11 +- drivers/pci/hotplug/pciehp_ctrl.c | 4 +- drivers/pci/hotplug/pciehp_hpc.c | 1 - drivers/pci/msi.c | 121 ++++ drivers/pci/pci-acpi.c | 13 +- drivers/pci/pcie/aspm.c | 58 ++- include/linux/acpi.h | 4 + include/linux/amd-iommu.h | 138 +++++- include/linux/iommu.h | 33 +- include/linux/msi.h | 3 + include/linux/pci-aspm.h | 4 +- include/linux/pci.h | 1 + include/linux/pci_regs.h | 34 +- virt/kvm/iommu.c | 8 +- 44 files changed, 2946 insertions(+), 320 deletions(-) create mode 100644 drivers/iommu/amd_iommu_v2.c
Hi Linus,
Quoted 3 lines · Joerg Roedel
When I did a test-pull of the branch against v3.2 there was a conflict in
drivers/pci/hotplug/acpiphp_glue.c(due to the changes I pulled in from the PCI tree). Please let me know in case you want me to fix that.
Okay, I re-merged the branches on a v3.2 base. This makes the conflict go away and the shortlog against v3.2 looks much cleaner now. Also my test-pull worked fine. The patches in the branches have not changed or rebased. The patches pulled in from Jesse's PCI tree are also still in here too. So I updated the next branch with the result. The top-commit on my local machine is now
f93ea733878733f3e98475bc3e2ccf789bebcfb8
and here is the updated pull-request. Please pull:
The following changes since commit 805a6af8dba5dfdd35ec35dc52ec0122400b2610:
Linux 3.2 (2012-01-04 15:55:44 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git next
Alex Williamson (7):
iommu: Add iommu_device_group callback and iommu_group sysfs entry iommu/intel: Implement iommu_device_group
iommu/amd: Implement iommu_device_group
iommu: Add option to group multi-function devices
PCI: Fix PRI and PASID consistency
PCI: Enable is not exposed as a PASID capability
PCI: More PRI/PASID cleanup
Eric W. Biederman (1):
PCI: msi: Disable msi interrupts when we initialize a pci device
Joerg Roedel (33):
iommu: Fix compile error with !IOMMU_API
Merge branch 'for-joerg' of git://git.kernel.org/.../ohad/linux into arm/omap iommu/amd: Convert dev_table_entry to u64
iommu/amd: Get the maximum number of PASIDs supported
iommu/amd: Setup PPR log when supported by IOMMU
iommu/amd: Enable GT mode when supported by IOMMU
iommu/amd: Add iommuv2 flag to struct amd_iommu
iommu/amd: Put IOMMUv2 capable devices in pt_domain
iommu/amd: Implement notifier for PPR faults
iommu/amd: Add amd_iommu_domain_direct_map function
iommu/amd: Add support for IOMMUv2 domain mode
iommu/amd: Implement IOMMUv2 TLB flushing routines
iommu/amd: Implement functions to manage GCR3 table
iommu/amd: Implement function to send PPR completions
iommu/amd: Add function to get IOMMUv2 domain for pdev iommu/amd: Add device errata handling
iommu/amd: Add stat counter for IOMMUv2 events
iommu/amd: Add driver stub for AMD IOMMUv2 support
iommu/amd: Implement device aquisition code for IOMMUv2 iommu/amd: Add routines to bind/unbind a pasid
iommu/amd: Implement IO page-fault handler
iommu/amd: Implement notifiers for IOMMUv2
iommu/amd: Add invalid_ppr callback
Merge branch 'iommu/page-sizes' into x86/amd
Merge remote-tracking branch 'pci/pri-changes' into x86/amd iommu/amd: Adapt IOMMU driver to PCI register name changes iommu/amd: Add amd_iommu_device_info() function
iommu/amd: Add invalidate-context call-back
iommu/amd: Remove unnecessary cache flushes in amd_iommu_resume iommu/amd: Init stats for iommu=pt
iommu/amd: Set IOTLB invalidation timeout
Merge branches 'iommu/fixes', 'arm/omap' and 'x86/amd' into next Merge branches 'iommu/page-sizes' and 'iommu/group-id' into next
Kenji Kaneshige (2):
PCI: pciehp: Fix wrong workqueue cleanup
PCI: pciehp: Handle push button event asynchronously
Matthew Garrett (1):
PCI: Rework ASPM disable code
Neil Horman (1):
PCI/sysfs: add per pci device msi[x] irq listing (v5)
Ohad Ben-Cohen (11):
iommu/core: stop converting bytes to page order back and forth iommu/core: split mapping to page sizes as supported by the hardware iommu/omap: announce supported page sizes
iommu/msm: announce supported page sizes
iommu/amd: announce supported page sizes
iommu/intel: announce supported page sizes
iommu/core: remove the temporary pgsize settings
ARM: OMAP: iommu: declare a private iommu binding struct
ARM: OMAP3: bind omap3isp_device to its iommu device iommu/omap: eliminate the public omap_find_iommu_device() method iommu/omap: be verbose when omap_iommu_iova_to_phys fails
Rafael J. Wysocki (2):
PCI/ACPI: Make acpiphp ignore root bridges using SHPC native hotplug PCI/ACPI/PM: Avoid resuming devices that don't signal PME
Documentation/ABI/testing/sysfs-bus-pci | 18 + Documentation/kernel-parameters.txt | 9 +- arch/arm/mach-omap2/devices.c | 7 + arch/arm/plat-omap/include/plat/iommu.h | 31 +- arch/arm/plat-omap/include/plat/iovmm.h | 12 +- arch/ia64/include/asm/iommu.h | 2 + arch/ia64/kernel/pci-dma.c | 1 + arch/x86/include/asm/iommu.h | 1 + arch/x86/kernel/pci-dma.c | 11 + drivers/acpi/pci_root.c | 7 + drivers/iommu/Kconfig | 13 +- drivers/iommu/Makefile | 1 + drivers/iommu/amd_iommu.c | 883 ++++++++++++++++++++++++++-- drivers/iommu/amd_iommu_init.c | 133 ++++- drivers/iommu/amd_iommu_proto.h | 24 + drivers/iommu/amd_iommu_types.h | 118 ++++- drivers/iommu/amd_iommu_v2.c | 994 +++++++++++++++++++++++++++++++ drivers/iommu/intel-iommu.c | 79 +++- drivers/iommu/iommu.c | 177 +++++- drivers/iommu/msm_iommu.c | 25 +- drivers/iommu/omap-iommu.c | 80 ++-- drivers/iommu/omap-iovmm.c | 48 +- drivers/media/video/omap3isp/isp.c | 30 +- drivers/media/video/omap3isp/isp.h | 2 - drivers/media/video/omap3isp/ispccdc.c | 18 +- drivers/media/video/omap3isp/ispstat.c | 8 +- drivers/media/video/omap3isp/ispvideo.c | 4 +- drivers/pci/ats.c | 90 ++-- drivers/pci/hotplug/pciehp.h | 1 - drivers/pci/hotplug/pciehp_core.c | 11 +- drivers/pci/hotplug/pciehp_ctrl.c | 4 +- drivers/pci/hotplug/pciehp_hpc.c | 1 - drivers/pci/msi.c | 121 ++++ drivers/pci/pci-acpi.c | 13 +- drivers/pci/pcie/aspm.c | 58 ++- include/linux/acpi.h | 4 + include/linux/amd-iommu.h | 138 +++++- include/linux/iommu.h | 33 +- include/linux/msi.h | 3 + include/linux/pci-aspm.h | 4 +- include/linux/pci.h | 1 + include/linux/pci_regs.h | 34 +- virt/kvm/iommu.c | 8 +- 43 files changed, 2943 insertions(+), 317 deletions(-) create mode 100644 drivers/iommu/amd_iommu_v2.c