Le 15/04/2024 à 14:15, Teddy Astie a écrit :
> All hardware that supports VT-d/AMD-Vi that exists also supports cx16 (aside
> specifically crafted virtual machines).
>
> Some IOMMU code paths in Xen consider cases where VT-d/AMD-Vi is supported
> while cx16 isn't, those paths may be bugged and are barely tested, dead code
> in practice.
>
> Disable IOMMU in case we have IOMMU hardware but no cx16, then cleanup
> no-cx16 handling logic from VT-d and AMD-Vi drivers. Also disable
> interrupt remapping that also relies on cx16.
>
> Teddy Astie (5):
> VT-d: Disable IOMMU if cx16 isn't supported
> AMD-Vi: Disable IOMMU if cx16 isn't supported
> VT-d: Cleanup MAP_SINGLE_DEVICE and related code
> VT-d: Disable intrerrupt remapping if cx16 is not supported
> AMD-Vi: Disable intrerrupt remapping if cx16 is not supported
>
> xen/drivers/passthrough/amd/iommu_intr.c | 6 ++
> xen/drivers/passthrough/amd/iommu_map.c | 42 ++++------
> xen/drivers/passthrough/amd/pci_amd_iommu.c | 6 ++
> xen/drivers/passthrough/vtd/intremap.c | 70 +++++-----------
> xen/drivers/passthrough/vtd/iommu.c | 92 +++++++--------------
> xen/drivers/passthrough/vtd/vtd.h | 5 +-
> 6 files changed, 77 insertions(+), 144 deletions(-)
>
Here is the patch history that got lost for some reason in this cover.
Changed in v2:
* Added cleanup no-cx16 code for x2APIC
* Fixed commit and code formatting
* Added missing Suggested-by note
Changed in v3:
* Use -ENODEV instead of -ENOSYS.
Changed in v4:
* Reworded "Disable IOMMU if cx16 isn't supported"
* Moved interrupt remapping cleanup in separate patches
* Check cx16 for interrupt remapping in driver's callbacks rather than
in x2apic_bsp_setup
Teddy
---
Teddy Astie | Vates XCP-ng Intern
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech