x86/dom0: Improve dom0= useability

Having a pvh boolean isn't ideal.  If we gain a 3rd virtulsation mode,
what does `dom0=no-pvh` mean?

Change the syntax to be "dom0 = pv | pvh" which offers an option to more
obviously select PV mode.  Hide both options behind the relevent
CONFIG_* settings, and default to PVH mode when CONFIG_PV is compiled
out.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Release-acked-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
Andrew Cooper committed 2019-01-21 18:11:34 +00:00
1 parent 01397478f2
commit 53a84f672d
2 files changed
+14 -10

No files matched your search

+9 -7
View File
@@ -637,21 +637,23 @@ trace feature is only enabled in debugging builds of Xen.
Specify the bit width of the DMA heap.
### dom0
= List of [ pvh=<bool>, shadow=<bool>, verbose=<bool> ]
= List of [ pv | pvh, shadow=<bool>, verbose=<bool> ]
Applicability: x86
Controls for how dom0 is constructed on x86 systems.
* The `pvh` boolean controls whether dom0 is constructed as a PV or a PVH
guest. The default is PV. In addition, the following requirements must
be met:
* The `pv` and `pvh` options select the virtualisation mode of dom0.
The `pv` option is only available when `CONFIG_PV` is compiled in. The
`pvh` option is only available when `CONFIG_HVM` is compiled in. When
both options are compiled in, the default is PV.
In addition, the following requirements must be met:
* The dom0 kernel selected by the boot loader must be capable of the
selected mode.
* For a PV dom0, Xen must have been compiled with `CONFIG_PV` enabled.
* For a PVH dom0, Xen must have been compiled with `CONFIG_HVM` enabled,
and the hardware must have VT-x/SVM extensions available.
* For a PVH dom0, the hardware must have VT-x/SVM extensions available.
* The `shadow` boolean is only applicable when dom0 is constructed as a PVH
guest, and controls whether dom0 uses hardware assisted paging, or shadow
+5 -3
View File
@@ -280,7 +280,7 @@ struct vcpu *__init alloc_dom0_vcpu0(struct domain *dom0)
#ifdef CONFIG_SHADOW_PAGING
bool __initdata opt_dom0_shadow;
#endif
bool __initdata dom0_pvh;
bool __initdata dom0_pvh = !IS_ENABLED(CONFIG_PV);
bool __initdata dom0_verbose;
static int __init parse_dom0_param(const char *s)
@@ -295,8 +295,10 @@ static int __init parse_dom0_param(const char *s)
if ( !ss )
ss = strchr(s, '\0');
if ( (val = parse_boolean("pvh", s, ss)) >= 0 )
dom0_pvh = val;
if ( IS_ENABLED(CONFIG_PV) && !cmdline_strcmp(s, "pv") )
dom0_pvh = false;
else if ( IS_ENABLED(CONFIG_HVM) && !cmdline_strcmp(s, "pvh") )
dom0_pvh = true;
#ifdef CONFIG_SHADOW_PAGING
else if ( (val = parse_boolean("shadow", s, ss)) >= 0 )
opt_dom0_shadow = val;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.