[PATCH v3 0/3] iommu/amd: IVMD handling cleanup and ivmd= boot override
From: Sairaj Kodilkar
Date: Thu Nov 05 2026 - 23:17:44 EST
This series refreshes how the AMD IOMMU driver models IVRS IVMD entries
after the hardware exclusion range registers were repurposed.
The first patch renames the associated MMIO offsets to reflect completion-wait
store base/limit.
The second patch drops the workaround that forced IVMD exclusion ranges to
r/w unity mappings; the driver no longer programs exclusion range
registers, so that the workaround is obsolete.
The third patch centralizes IVMD flag definitions, renames the unity-map
structures to ivmd_entry, stores the raw IVMD flags byte from ACPI, and
derives IOMMU reserved regions (including exclusion as IOMMU_RESV_RESERVED)
from those flags.
The fourth patch adds an ivmd= kernel parameter so up to four per-device
IVMD-style ranges can be supplied from the command line when the IVRS
table is wrong or incomplete, documented in kernel-parameters.txt.
Changes from v2:
https://lore.kernel.org/all/20260424092213.16976-1-suravee.suthikulpanit@xxxxxxx/#t
*Patch 2: Report an IVMD exclusion range as IOMMU_RESV_RESERVED in this
patch, instead of leaving that for patch 3. This patch stops
forcing the exclusion to read/write unity, the range has no read
or write permission. iommu_map() rejects that, so a tree checked
out at patch 2 does not boot. Reserving the range in the same
patch keeps the series bisectable.
* Patch 4: Drop this patch, ivmd= command line does not have any real use and
complicates driver
Change from v1:
(https://lore.kernel.org/linux-iommu/20260420170033.6780-1-suravee.suthikulpanit@xxxxxxx/)
* Rebase on top of patch "[PATCH] iommu/amd: Remove dead code for exclusion ranges in IVMD"
that was submitted by Yu Zhang <zhangyu1@xxxxxxxxxxxxxxxxxxx>.
(https://lore.kernel.org/all/20260331152550.479841-1-zhangyu1@xxxxxxxxxxxxxxxxxxx/)
* Patch 1: Modified to only rename the marco.
* Patch 3: Reintroduce logic to parse IVMD exclusion flag to allow
reserve region of type IOMMU_RESV_RESERVED.
* Patch 4:
- Update the sscan function to scan start, length, flags in hex format only.
- Fix apply_ivmd_cmdline_entries() to not free the cmd, which points to
the early_ivmd_cmdline_map[] on failure path.
Suravee Suthikulpanit (2):
iommu/amd: Drop unused global exclusion range fields and init
iommu/amd: Do not convert IVMD exclusion range to unity range
iommu/amd: Rename unity_map_entry and unit_map to ivmd_entry and
ivhd_entry_map
drivers/iommu/amd/amd_iommu_types.h | 22 ++++++------
drivers/iommu/amd/init.c | 54 ++++++++++++-----------------
drivers/iommu/amd/iommu.c | 28 ++++++++++++---
3 files changed, 58 insertions(+), 46 deletions(-)
Base: 945b3729fca6176fdbb83e38c8116b0132c68fbe
--
2.34.1