lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 18 Aug 2016 14:42:32 -0500
From:   Suravee Suthikulpanit <Suravee.Suthikulpanit@....com>
To:     <rkrcmar@...hat.com>, <joro@...tes.org>, <pbonzini@...hat.com>,
        <alex.williamson@...hat.com>
CC:     <kvm@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
        <sherry.hurwitz@....com>,
        Suravee Suthikulpanit <Suravee.Suthikulpanit@....com>
Subject: [PART2 PATCH v6 00/12] iommu/AMD: Introduce IOMMU AVIC support

CHANGES FROM V5
===============
Per Joerg:
    * Add documentation for amd_iommu_intr parameter.
    * Clean up early_amd_iommu_init() .
    * Do not update the tail pointer while processing ga_log.
      to avoid potential soft-lockup.

Per Radim:
    * Fix vm_id logic.
    * Refactor avic_set_running().
    * Use per-vcpu list of struct amd_ir_data instead of
      struct amd_iommu_pi_data. This result in changes in
      svm_update_pi_irte().

Misc:
    * Clean up amd_iommu_update_ga()
    * Other minor clean ups.

GITHUB
======
Latest git tree can be found at:
    http://github.com/ssuthiku/linux.git    avic_part2_v6

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                  | 371 +++++++++++++++++++++++++--
 drivers/iommu/amd_iommu.c           | 487 +++++++++++++++++++++++++++++++-----
 drivers/iommu/amd_iommu_init.c      | 181 +++++++++++++-
 drivers/iommu/amd_iommu_proto.h     |   1 +
 drivers/iommu/amd_iommu_types.h     | 136 ++++++++++
 include/linux/amd-iommu.h           |  56 ++++-
 8 files changed, 1154 insertions(+), 89 deletions(-)

-- 
1.9.1

Powered by blists - more mailing lists