mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
xen/dom0: Deprecate iommu_hwdom_inclusive and leave it disabled by default
This option is unique to x86 PV dom0's, but it is not sensible to have a catch-all which blindly maps all non-RAM regions into the IOMMU. The map-reserved option remains, and covers all the buggy firmware issues that I am aware of. The two common cases are legacy USB keyboard emulation, and the BMC mailbox used by vendor firmware in NICs/HBAs to report information back to the iLO/iDRAC/etc for remote remote management purposes. A specific advantage of this change is that x86 dom0's IOMMU setup is now consistent between PV and PVH. This change is not expected to have any impact, due to map-reserved remaining. In the unlikely case that it does cause an issue, we should introduce other map-$SPECIFIC options rather than re-introducing this catch-all. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Release-acked-by: Juergen Gross <jgross@suse.com> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
633a409473
commit
b7e8dee07c
5 files changed
+20
-15
No files matched your search
@@ -707,14 +707,16 @@ Controls for the dom0 IOMMU setup.
|
||||
Where possible, finer grain corrections should be made with the `rmrr=`,
|
||||
`ivrs_hpet=` or `ivrs_ioapic=` command line options.
|
||||
|
||||
This option is enabled by default on x86 systems, and invalid on ARM
|
||||
systems.
|
||||
This option is disabled by default, and deprecated and intended for
|
||||
removal in future versions of Xen. If specifying `map-inclusive` is the
|
||||
only way to make your system boot, please report a bug.
|
||||
|
||||
* The `map-reserved` functionality is very similar to `map-inclusive`.
|
||||
|
||||
The differences from `map-inclusive` are that `map-reserved` is applicable
|
||||
to both x86 PV and PVH dom0's, and represents a subset of the correction
|
||||
by only mapping reserved memory regions rather than all non-RAM regions.
|
||||
to both x86 PV and PVH dom0's, is enabled by default, and represents a
|
||||
subset of the correction by only mapping reserved memory regions rather
|
||||
than all non-RAM regions.
|
||||
|
||||
### dom0_ioports_disable (x86)
|
||||
> `= List of <hex>-<hex>`
|
||||
|
||||
@@ -2714,10 +2714,10 @@ static int arm_smmu_iommu_domain_init(struct domain *d)
|
||||
static void __hwdom_init arm_smmu_iommu_hwdom_init(struct domain *d)
|
||||
{
|
||||
/* Set to false options not supported on ARM. */
|
||||
if ( iommu_hwdom_inclusive == 1 )
|
||||
if ( iommu_hwdom_inclusive )
|
||||
printk(XENLOG_WARNING
|
||||
"map-inclusive dom0-iommu option is not supported on ARM\n");
|
||||
iommu_hwdom_inclusive = 0;
|
||||
iommu_hwdom_inclusive = false;
|
||||
if ( iommu_hwdom_reserved == 1 )
|
||||
printk(XENLOG_WARNING
|
||||
"map-reserved dom0-iommu option is not supported on ARM\n");
|
||||
|
||||
@@ -38,7 +38,7 @@ bool_t __read_mostly iommu_intremap = 1;
|
||||
|
||||
bool __hwdom_initdata iommu_hwdom_strict;
|
||||
bool __read_mostly iommu_hwdom_passthrough;
|
||||
int8_t __hwdom_initdata iommu_hwdom_inclusive = -1;
|
||||
bool __hwdom_initdata iommu_hwdom_inclusive;
|
||||
int8_t __hwdom_initdata iommu_hwdom_reserved = -1;
|
||||
|
||||
/*
|
||||
|
||||
@@ -214,18 +214,21 @@ void __hwdom_init arch_iommu_hwdom_init(struct domain *d)
|
||||
|
||||
BUG_ON(!is_hardware_domain(d));
|
||||
|
||||
/* Inclusive mappings are enabled by default for PV. */
|
||||
if ( iommu_hwdom_inclusive == -1 )
|
||||
iommu_hwdom_inclusive = is_pv_domain(d);
|
||||
/* Reserved IOMMU mappings are enabled by default. */
|
||||
if ( iommu_hwdom_reserved == -1 )
|
||||
iommu_hwdom_reserved = 1;
|
||||
|
||||
if ( iommu_hwdom_inclusive && !is_pv_domain(d) )
|
||||
if ( iommu_hwdom_inclusive )
|
||||
{
|
||||
printk(XENLOG_WARNING
|
||||
"IOMMU inclusive mappings are only supported on PV Dom0\n");
|
||||
iommu_hwdom_inclusive = 0;
|
||||
"IOMMU inclusive mappings are deprecated and will be removed in future versions\n");
|
||||
|
||||
if ( !is_pv_domain(d) )
|
||||
{
|
||||
printk(XENLOG_WARNING
|
||||
"IOMMU inclusive mappings are only supported on PV Dom0\n");
|
||||
iommu_hwdom_inclusive = false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( iommu_hwdom_passthrough )
|
||||
|
||||
@@ -60,8 +60,8 @@ extern bool_t iommu_hap_pt_share;
|
||||
extern bool_t iommu_debug;
|
||||
extern bool_t amd_iommu_perdev_intremap;
|
||||
|
||||
extern bool iommu_hwdom_strict, iommu_hwdom_passthrough;
|
||||
extern int8_t iommu_hwdom_inclusive, iommu_hwdom_reserved;
|
||||
extern bool iommu_hwdom_strict, iommu_hwdom_passthrough, iommu_hwdom_inclusive;
|
||||
extern int8_t iommu_hwdom_reserved;
|
||||
|
||||
extern unsigned int iommu_dev_iotlb_timeout;
|
||||
|
||||
|
||||