Skip to content

x64, x2apic/intr-remap: Interrupt-remapping and x2apic support

Suresh Siddha lkml 1 version Applied

Status from this message: applied to tip/x86/x2apic - thanks Suresh.

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest26 patches 60 repliesApplied

Patches in v1 Applied

#Subject and filesSizeRepliesApplied
1/26x64, x2apic/intr-remap: Intel vt-d, IOMMU code reorganizationdrivers/pci/dma_remapping.h drivers/pci/dmar.c drivers/pci/intel-iommu.c +1 more+264 -2360 replies
2/26x64, x2apic/intr-remap: fix the need for sequential array allocation of iommusdrivers/pci/dmar.c drivers/pci/intel-iommu.c drivers/pci/intel-iommu.h+18 -210 replies
3/26x64, x2apic/intr-remap: code re-structuring, to be used by both DMA and Interrupt remappingdrivers/pci/dmar.c drivers/pci/intel-iommu.c drivers/pci/intel-iommu.h +1 more+88 -230 replies
4/26x64, x2apic/intr-remap: use CONFIG_DMAR for DMA-remapping specific codedrivers/pci/dmar.c+24 -110 replies
5/26x64, x2apic/intr-remap: Fix the need for RMRR in the DMA-remapping detectiondrivers/pci/dmar.c+1 -30 replies
6/26x64, x2apic/intr-remap: parse ioapic scope under vt-d structuresdrivers/pci/Makefile drivers/pci/dmar.c drivers/pci/intel-iommu.h +3 more+84 -00 replies
7/26x64, x2apic/intr-remap: move IOMMU_WAIT_OP() macro to intel-iommu.hdrivers/pci/intel-iommu.c drivers/pci/intel-iommu.h+15 -150 replies
8/26x64, x2apic/intr-remap: Queued invalidation infrastructure (part of VT-d)drivers/pci/dmar.c drivers/pci/intel-iommu.c drivers/pci/intel-iommu.h+211 -70 replies
9/26x64, x2apic/intr-remap: Interrupt remapping infrastructuredrivers/pci/dma_remapping.h drivers/pci/dmar.c drivers/pci/intel-iommu.c +4 more+272 -500 replies
10/26x64, x2apic/intr-remap: routines managing Interrupt remapping table entries.drivers/pci/intel-iommu.h drivers/pci/intr_remapping.c include/linux/dmar.h+259 -00 replies
11/26x64, x2apic/intr-remap: generic irq migration support from process contextinclude/linux/irq.h kernel/irq/manage.c+9 -13 replies
12/26x64, x2apic/intr-remap: 8259 specific mask/unmask routinesarch/x86/kernel/i8259.c include/asm-x86/i8259.h+27 -00 replies
13/26x64, x2apic/intr-remap: ioapic routines which deal with initial io-apic RTE setuparch/x86/kernel/io_apic_64.c include/asm-x86/io_apic.h+72 -00 replies
14/26x64, x2apic/intr-remap: introduce read_apic_id() to genapic routinesarch/x86/kernel/apic_64.c arch/x86/kernel/genapic_64.c arch/x86/kernel/genapic_flat_64.c +5 more+36 -170 replies
15/26x64, x2apic/intr-remap: basic apic ops supportarch/x86/kernel/apic_32.c arch/x86/kernel/apic_64.c arch/x86/kernel/io_apic_64.c +6 more+109 -380 replies
16/26x64, x2apic/intr-remap: cpuid bits for x2apic featurearch/x86/kernel/cpu/feature_names.c include/asm-x86/cpufeature.h+3 -10 replies
17/26x64, x2apic/intr-remap: disable DMA-remapping if Interrupt-remapping is detected (temporary quirk)drivers/pci/dmar.c+25 -00 replies
18/26x64, x2apic/intr-remap: x2apic ops for x2apic mode supportarch/x86/kernel/apic_64.c include/asm-x86/apic.h include/asm-x86/apicdef.h+60 -00 replies
19/26x64, x2apic/intr-remap: introcude self IPI to genapic routinesarch/x86/kernel/genapic_64.c arch/x86/kernel/genapic_flat_64.c include/asm-x86/genapic_64.h +2 more+8 -14 replies
20/26x64, x2apic/intr-remap: x2apic cluster mode supportarch/x86/kernel/Makefile arch/x86/kernel/genapic_64.c arch/x86/kernel/genx2apic_cluster.c +1 more+139 -00 replies
21/26x64, x2apic/intr-remap: setup init_apic_ldr for UVarch/x86/kernel/genx2apic_uv_x.c+5 -02 replies
22/26x64, x2apic/intr-remap: IO-APIC support for interrupt-remappingarch/x86/kernel/apic_64.c arch/x86/kernel/io_apic_64.c drivers/pci/intr_remapping.c +4 more+321 -220 replies
23/26x64, x2apic/intr-remap: MSI and MSI-X support for interrupt remapping infrastructurearch/x86/kernel/io_apic_64.c drivers/pci/intr_remapping.c include/asm-x86/msidef.h +1 more+238 -85 replies
24/26x64, x2apic/intr-remap: add x2apic support, including enabling interrupt-remappingDocumentation/kernel-parameters.txt arch/x86/kernel/acpi/boot.c arch/x86/kernel/apic_64.c +6 more+171 -40 replies
25/26x64, x2apic/intr-remap: support for x2apic physical mode supportarch/x86/kernel/Makefile arch/x86/kernel/genapic_64.c arch/x86/kernel/genx2apic_phys.c +1 more+139 -30 replies
26/26x64, x2apic/intr-remap: introduce CONFIG_INTR_REMAParch/x86/Kconfig+8 -04 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [patch 00/26] x64, x2apic/intr-remap: Interrupt-remapping and x2apic support

x2APIC architecture provides a new x2apic mode, which allows for the increased range of processor addressability ( > 8 bit apic ID support), MSR access to APIC registers, etc. x2apic specification can be found at
http://download.intel.com/design/processor/specupdt/318148.pdf
(located under http://developer.intel.com/products/processor/manuals/index.htm )

Interrupt-remapping is part of Intel Virtualization Technology for Directed I/O architecture and the specification can be found from
http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf
(above link seems to be broken for the moment, but in general it should be found under http://www.intel.com/technology/virtualization/ )

Interrupt-remapping architecture enables extended Interrupt Mode on x86 platforms supporting 32-bit APIC-IDs. This infrastructure allows the existing interrupt sources such as I/OxAPICs and MSI/MSI-X devices work seamlessly with apic-id's > 8 bits. As such, this is a pre-requisite for enabling x2apic mode in the CPU.

This patchset adds 64-bit support for interrupt-remapping and x2apic, which introduces apic_ops for basic APIC ops(uncached memory Vs MSR accesses etc), new irq_chip's for supporting interrupt-remapping and new genapic for supporting IPI's, logical cluster/physical x2apic modes.

irq migration in the presence of interrupt-remapping is done from the process-context as opposed to interrupt-context. Interrupt-remapping infrastrucutre allows us to do this migration in a simple fashion (atleast for edge triggered interrupts).

Interrupt-remapping (CONFIG_INTR_REMAP) and DMA-remapping (CONFIG_DMAR) can be enabled separately.

More details in the individual patches that follow.