mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/dom0: Add a dom0-iommu=none option
For development purposes, it is very convenient to boot Xen as a PVH guest, with an XTF PV or PVH "dom0". The edit-compile-go cycle is a matter of seconds, and you can reasonably insert printk() debugging in places which which would be completely infeasible when booting fully-fledged guests. However, the PVH dom0 path insists on having a working IOMMU, which doesn't exist when virtualised as a PVH guest, and isn't necessary for XTF anyway. Introduce a developer mode to skip the IOMMU requirement. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> Release-acked-by: Juergen Gross <jgross@suse.com> Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
b7e8dee07c
commit
e1fe5f9c38
2 files changed
+11
-2
No files matched your search
@@ -667,7 +667,7 @@ Controls for how dom0 is constructed on x86 systems.
|
||||
|
||||
### dom0-iommu
|
||||
= List of [ passthrough=<bool>, strict=<bool>, map-inclusive=<bool>,
|
||||
map-reserved=<bool> ]
|
||||
map-reserved=<bool>, none ]
|
||||
|
||||
Controls for the dom0 IOMMU setup.
|
||||
|
||||
@@ -718,6 +718,12 @@ Controls for the dom0 IOMMU setup.
|
||||
subset of the correction by only mapping reserved memory regions rather
|
||||
than all non-RAM regions.
|
||||
|
||||
* The `none` option is intended for development purposes only, and skips
|
||||
certain safety checks pertaining to the correct IOMMU configuration for
|
||||
dom0 to boot.
|
||||
|
||||
Incorrect use of this option may result in a malfunctioning system.
|
||||
|
||||
### dom0_ioports_disable (x86)
|
||||
> `= List of <hex>-<hex>`
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ bool_t __read_mostly iommu_snoop = 1;
|
||||
bool_t __read_mostly iommu_qinval = 1;
|
||||
bool_t __read_mostly iommu_intremap = 1;
|
||||
|
||||
static bool __hwdom_initdata iommu_hwdom_none;
|
||||
bool __hwdom_initdata iommu_hwdom_strict;
|
||||
bool __read_mostly iommu_hwdom_passthrough;
|
||||
bool __hwdom_initdata iommu_hwdom_inclusive;
|
||||
@@ -131,6 +132,8 @@ static int __init parse_dom0_iommu_param(const char *s)
|
||||
iommu_hwdom_inclusive = val;
|
||||
else if ( (val = parse_boolean("map-reserved", s, ss)) >= 0 )
|
||||
iommu_hwdom_reserved = val;
|
||||
else if ( !cmdline_strcmp(s, "none") )
|
||||
iommu_hwdom_none = true;
|
||||
else
|
||||
rc = -EINVAL;
|
||||
|
||||
@@ -159,7 +162,7 @@ int iommu_domain_init(struct domain *d)
|
||||
|
||||
static void __hwdom_init check_hwdom_reqs(struct domain *d)
|
||||
{
|
||||
if ( !paging_mode_translate(d) )
|
||||
if ( iommu_hwdom_none || !paging_mode_translate(d) )
|
||||
return;
|
||||
|
||||
arch_iommu_check_autotranslated_hwdom(d);
|
||||
|
||||