[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 3/7] x86/pvh: allow PVH Dom0 to use the debug IO port console
Add an option to allow trapping accesses to IO port 0xe9 for a PVH Dom0, so it can print to the HVM debug console. Note this is not enabled by default in order to prevent clashes with hardware on the system using 0xe9. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- Cc: Jan Beulich <jbeulich@xxxxxxxx> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Cc: Wei Liu <wei.liu2@xxxxxxxxxx> --- Changes since v1: - Use a define for 0xe9. - Expand 'List of' in the Xen command doc. --- docs/misc/xen-command-line.markdown | 14 +++++++++++++- xen/arch/x86/dom0_build.c | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index 2c7046eb86..2fc0448f07 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -664,7 +664,7 @@ trace feature is only enabled in debugging builds of Xen. Specify the bit width of the DMA heap. ### dom0 (x86) -> `= List of [ pvh | shadow ]` +> `= List of [ pvh | shadow | debug-ioport ]` > Sub-options: @@ -681,6 +681,18 @@ Flag that makes a dom0 boot in PVHv2 mode. Flag that makes a dom0 use shadow paging. Only works when "pvh" is enabled. +> `debug-ioport` + +> Default: `false` + +Flag that enables the HVM debug console for a PVH Dom0. Xen will trap accesses +to IO port 0xe9 so that Dom0 kernel can print output using this IO port before +setting up the hypercall page. + +Note this option is not enabled by default because it might clash with hardware +on the system using IO port 0xe9 (XEN_HVM_DEBUGCONS_IOPORT) and should only be +used for debug purposes. + ### dom0-iommu > `= List of [ passthrough | strict | map-inclusive ]` diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c index dcd7afb058..7b1aaaa7cb 100644 --- a/xen/arch/x86/dom0_build.c +++ b/xen/arch/x86/dom0_build.c @@ -212,12 +212,16 @@ struct vcpu *__init alloc_dom0_vcpu0(struct domain *dom0) bool __initdata opt_dom0_shadow; #endif bool __initdata dom0_pvh; +#ifdef CONFIG_HVM +bool __initdata opt_dom0_debug_ioport; +#endif /* * List of parameters that affect Dom0 creation: * * - pvh Create a PVHv2 Dom0. * - shadow Use shadow paging for Dom0. + * - debug-ioport Trap accesses to 0xe9 (HVM debug console). */ static int __init parse_dom0_param(const char *s) { @@ -236,6 +240,10 @@ static int __init parse_dom0_param(const char *s) #ifdef CONFIG_SHADOW_PAGING else if ( (val = parse_boolean("shadow", s, ss)) >= 0 ) opt_dom0_shadow = val; +#endif +#ifdef CONFIG_HVM + else if ( (val = parse_boolean("debug-ioport", s, ss)) >= 0 ) + opt_dom0_debug_ioport = val; #endif else rc = -EINVAL; @@ -433,6 +441,12 @@ int __init dom0_setup_permissions(struct domain *d) rc |= ioports_deny_access(d, pmtmr_ioport, pmtmr_ioport + 3); /* PCI configuration space (NB. 0xcf8 has special treatment). */ rc |= ioports_deny_access(d, 0xcfc, 0xcff); +#ifdef CONFIG_HVM + if ( is_hvm_domain(d) && opt_dom0_debug_ioport ) + /* HVM debug console IO port. */ + rc |= ioports_deny_access(d, XEN_HVM_DEBUGCONS_IOPORT, + XEN_HVM_DEBUGCONS_IOPORT); +#endif /* Command-line I/O ranges. */ process_dom0_ioports_disable(d); -- 2.19.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |