public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PART2 PATCH v7 00/12] iommu/AMD: Introduce IOMMU AVIC support
@ 2016-08-23 18:52 Suravee Suthikulpanit
  2016-08-23 18:52 ` [PART2 PATCH v7 01/12] iommu/amd: Detect and enable guest vAPIC support Suravee Suthikulpanit
                   ` (12 more replies)
  0 siblings, 13 replies; 20+ messages in thread
From: Suravee Suthikulpanit @ 2016-08-23 18:52 UTC (permalink / raw)
  To: rkrcmar, joro, pbonzini, alex.williamson
  Cc: kvm, linux-kernel, sherry.hurwitz, Suravee Suthikulpanit

From: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>

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(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2016-09-05 14:07 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-23 18:52 [PART2 PATCH v7 00/12] iommu/AMD: Introduce IOMMU AVIC support Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 01/12] iommu/amd: Detect and enable guest vAPIC support Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 02/12] iommu/amd: Move and introduce new IRTE-related unions and structures Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 03/12] iommu/amd: Introduce interrupt remapping ops structure Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 04/12] iommu/amd: Add support for multiple IRTE formats Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 05/12] iommu/amd: Detect and initialize guest vAPIC log Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 06/12] iommu/amd: Adding GALOG interrupt handler Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 07/12] iommu/amd: Introduce amd_iommu_update_ga() Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 08/12] iommu/amd: Implements irq_set_vcpu_affinity() hook to setup vapic mode for pass-through devices Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 09/12] iommu/amd: Enable vAPIC interrupt remapping mode by default Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 10/12] svm: Introduces AVIC per-VM ID Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 11/12] svm: Introduce AMD IOMMU avic_ga_log_notifier Suravee Suthikulpanit
2016-08-23 18:52 ` [PART2 PATCH v7 12/12] svm: Implements update_pi_irte hook to setup posted interrupt Suravee Suthikulpanit
2016-08-31  4:07   ` Radim Krčmář
2016-08-29  4:53 ` [PART2 PATCH v7 00/12] iommu/AMD: Introduce IOMMU AVIC support Suravee Suthikulpanit
2016-09-02 10:46   ` Paolo Bonzini
2016-09-02 14:05     ` Joerg Roedel
2016-09-02 14:17       ` Suravee Suthikulpanit
2016-09-05 13:57     ` Joerg Roedel
2016-09-05 14:07       ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox