Re: [PART2 RFC v1 1/9] iommu/amd: Detect and enable guest vAPIC support

From: Suravee Suthikulanit
Date: Thu Jun 02 2016 - 16:38:58 EST

On 5/9/2016 6:49 AM, Joerg Roedel wrote:
On Fri, Apr 08, 2016 at 07:49:22AM -0500, Suthikulpanit, Suravee wrote:
From: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx>

This patch introduces a new IOMMU driver parameter, amd_iommu_guest_ir,
which can be used to specify different interrupt remapping mode for
passthrough devices to VM guest:
* legacy: Legacy interrupt remapping mode (w/ 32-bit IRTE)
* ga : Guest vAPIC interrupt remapping mode (w/ 128-bit IRTE)

Note that the GA mode also supports legacy interrupt remapping
for non-passthrough devices with the 128-bit IRTE.

Does this need to be under user control? The code can just check what
the hardware supports and use the 128bit IRTEs if supported, no?


It does not need to be signified by user.

Currently, if the MMIO Offset 30h[GASup] bit (of IOMMU Extended Feature Register) is set, the driver should default to using the 128bit IRTE by setting MMIO Offset 0018h[GAEn] bit (of IOMMU Control Register). The default is also enabling GA mode (by setting MMIO 0018h[GAEn] if MMIO 0030h[GASup] is set).

However, if SVM AVIC is not enabled, or if the AVIC HW cannot support the type of interrupt (e.g. multicast/broadcast), it falls back to use legacy interrupt remapping mode w/ 128-bit IRTE.

This option is intended for the case when we want to force IOMMU to use legacy interrupt remapping (hence no need for 128-bit IRTE).

I will improve on the documentation in the next patch series.