On 29/08/2016 06:53, Suravee Suthikulpanit wrote: > Hi Joerg, Radim > > Any other concerns? Joerg, if there's no other issues, could you apply the first 9 patches to a branch based on 4.8-rc1 or similar, so that I can pull it into the KVM tree? Thanks, Paolo > Thanks, > Suravee > > On 8/24/16 01:52, Suravee Suthikulpanit wrote: >> From: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx> >> >> CHANGES FROM V6 >> =============== >> >> Per Radim: >> * No longer expose struct amd_ir_data to SVM. >> * Introduce struct amd_svm_iommu_ir (amd_ir_data wrapper). >> * Fix logic to manage ir_list where we need to remove >> the posted interrupt from the previous ir_list before >> mapping it to a new vcpu. Tested running smp VM with: >> - Using irqbalance >> - No irqbalance (manually set /proc/irq/smp_affinity) >> >> Misc: >> * 08/12: Only set ga_root_ptr in amd_ir_set_vcpu_affinity(). >> * 10/12: Fix bug in #define AVIC_GATAG_TO_VCPUID. >> >> GITHUB >> ====== >> Latest git tree can be found at: >> http://github.com/ssuthiku/linux.git avic_part2_v7 >> >> OVERVIEW >> ======== >> This patch set is the second part of the two-part patch series to >> introduce >> the new AMD Advance Virtual Interrupt Controller (AVIC) support. >> >> In addition to the SVM AVIC, AMD IOMMU also extends the AVIC capability >> to allow I/O interrupts injection directly into the virtualized guest >> local APIC without the need for hypervisor intervention. >> >> This patch series introduces a new hardware interrupt remapping (IR) mode >> in AMD IOMMU driver, the Guest Virtual APIC (GA) mode. This is in >> contrast >> to the existing "legacy" mode. The IR mode can be specified with a new >> kernel parameter: >> >> amd_iommu_guest_ir=[vapic (default) | legacy] >> >> When enabling GA mode, the AMD IOMMU driver will configure device >> interrupt >> remapping in GA mode when possible (i.e. SVM AVIC must be enabled, and if >> the interrupt types are supported). Otherewise, the driver will fallback >> to using the legacy IR mode. >> >> This patch series also introduces new interfaces between SVM and IOMMU >> to allow: >> * SVM driver to communicate to IOMMU with updated vcpu scheduling >> information. >> * IOMMU driver to notify SVM driver to schedule vcpu on to physical >> core >> handle IOMMU GALog entry. >> >> DOCUMENTATIONS >> ============== >> More information about SVM AVIC can be found in the >> AMD64 Architecture Programmer’s Manual Volume 2 - System Programming. >> >> http://support.amd.com/TechDocs/24593.pdf >> >> More information about IOMMU AVIC can be found int the >> AMD I/O Virtualization Technology (IOMMU) Specification - Rev 2.62. >> >> http://support.amd.com/TechDocs/48882_IOMMU.pdf >> >> Any feedback and comments are very much appreciated. >> >> Thank you, >> Suravee >> >> Suravee Suthikulpanit (12): >> iommu/amd: Detect and enable guest vAPIC support >> iommu/amd: Move and introduce new IRTE-related unions and structures >> iommu/amd: Introduce interrupt remapping ops structure >> iommu/amd: Add support for multiple IRTE formats >> iommu/amd: Detect and initialize guest vAPIC log >> iommu/amd: Adding GALOG interrupt handler >> iommu/amd: Introduce amd_iommu_update_ga() >> iommu/amd: Implements irq_set_vcpu_affinity() hook to setup vapic mode >> for pass-through devices >> iommu/amd: Enable vAPIC interrupt remapping mode by default >> svm: Introduces AVIC per-VM ID >> svm: Introduce AMD IOMMU avic_ga_log_notifier >> svm: Implements update_pi_irte hook to setup posted interrupt >> >> Documentation/kernel-parameters.txt | 9 + >> arch/x86/include/asm/kvm_host.h | 2 + >> arch/x86/kvm/svm.c | 406 ++++++++++++++++++++++++++++-- >> drivers/iommu/amd_iommu.c | 484 >> +++++++++++++++++++++++++++++++----- >> drivers/iommu/amd_iommu_init.c | 181 +++++++++++++- >> drivers/iommu/amd_iommu_proto.h | 1 + >> drivers/iommu/amd_iommu_types.h | 149 +++++++++++ >> include/linux/amd-iommu.h | 43 +++- >> 8 files changed, 1188 insertions(+), 87 deletions(-) >> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html