[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/2] xen/dom0: Improve documentation for dom0= and dom0-iommu=
Update to the latest metadata style, and expand each of the clauses with more information, including applicable CONFIG_* options. Drop the redundant comment beside parse_dom0_param(), to avoid it getting out of sync with the main documentation. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Julien Grall <julien.grall@xxxxxxx> Please double check for correctness. The text matches my understanding/reading of the code, but some of it is rather subtle going. It occurs to me that: * The choice of dom0 boot mode should in part be derived from the available CONFIG_* options, and ELF notes advertised in the dom0 kernel. * AMD probably needs to gain an `ivmd=` to mirror `rmrr=` on the Intel side, because we know there are other errors in the IVRS table. * Neither of map-{inclusive,reserved} should be active by default, even on Intel hardware, and we should (wherever possible) have quirks like we have for all other firmware screwups. Requiring the user to diagnose/work around firmware problems like this is quite rude. But this is all future work to do. --- docs/misc/xen-command-line.markdown | 103 ++++++++++++++++++++++-------------- xen/arch/x86/dom0_build.c | 6 --- 2 files changed, 62 insertions(+), 47 deletions(-) diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index 44ee51a..94ee703 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -636,55 +636,76 @@ trace feature is only enabled in debugging builds of Xen. Specify the bit width of the DMA heap. -### dom0 (x86) -> `= List of [ pvh | shadow ]` +### dom0 +> `= List of [ pvh=<bool>, shadow=<bool> ]` -> Sub-options: - -> `pvh` +> Applicability: x86 -> Default: `false` +Controls for how dom0 is constructed on x86 systems. -Flag that makes a dom0 boot in PVHv2 mode. +* The `pvh` boolean controls whether dom0 is constructed as a PV or a PVH + guest. For backwards compatibility, the default is PV. In addition, the + following requirements must be met. -> `shadow` + * 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. -> Default: `false` +* The `shadow` boolean is only applicable when dom0 is constructed as a PVH + guest, and controls whether dom0 uses hardware assisted paging, or shadow + paging. The default is HAP when available, and shadow otherwise. -Flag that makes a dom0 use shadow paging. Only works when "pvh" is -enabled. + This option is unavailable when `CONFIG_SHADOW_PAGING` is compiled out. A + PVH dom0 cannot be used if `CONFIG_SHADOW_PAGING` is compiled out, and the + hardware is not HAP-capable. ### dom0-iommu -> `= List of [ passthrough | strict | map-inclusive ]` - -This list of booleans controls the iommu usage by Dom0: - -* `passthrough`: disables DMA remapping for Dom0. Default is `false`. Note that - this option is hard coded to `false` for a PVH Dom0 and any attempt to - overwrite it from the command line is ignored. - -* `strict`: sets up DMA remapping only for the RAM Dom0 actually got assigned. - Default is `false` which means Dom0 will get mappings for all the host - RAM except regions in use by Xen. Note that this option is hard coded to - `true` for a PVH Dom0 and any attempt to overwrite it from the command line - is ignored. - -* `map-inclusive`: sets up DMA remapping for all the non-RAM regions below 4GB - except for unusable ranges. Use this to work around firmware issues providing - incorrect RMRR/IVMD entries. Rather than only mapping RAM pages for IOMMU - accesses for Dom0, with this option all pages up to 4GB, not marked as - unusable in the E820 table, will get a mapping established. Note that this - option is only applicable to a PV Dom0 and is enabled by default on Intel - hardware. - -* `map-reserved`: sets up DMA remapping for all the reserved regions in the - memory map for Dom0. Use this to work around firmware issues providing - incorrect RMRR/IVMD entries. Rather than only mapping RAM pages for IOMMU - accesses for Dom0, all memory regions marked as reserved in the memory map - that don't overlap with any MMIO region from emulated devices will be - identity mapped. This option maps a subset of the memory that would be - mapped when using the `map-inclusive` option. This option is available to all - Dom0 modes and is enabled by default on Intel hardware. +> `= List of [ passthrough=<bool>, strict=<bool>, map-inclusive=<bool>, +> map-reserved=<bool> ]` + +Controls for the dom0 IOMMU setup. + +* The `passthrough` boolean is applicable to x86 PV dom0's only and defaults + to false. It controls whether the IOMMU is fully disabled for devices + belonging to dom0 (`passthrough=1`), or whether the IOMMU is set up with + an identity transform for dom0 (`passthrough=0`) to prevent dom0 from + DMA'ing outside of its permitted areas. + + This option is hardwired to false for x86 PVH dom0's (where a non-identity + transform is required for dom0 to function), and is ignored for ARM. + +* The `strict` boolean is applicable to x86 PV dom0's only and defaults to + false. It controls whether dom0 can have IOMMU mappings for all domain + RAM in the system, or only for its allocated RAM (and grant mappings etc.) + + This option is hardwired to true for x86 PVH dom0's (as RAM belonging to + other domains in the system don't live in a compatible address space), and + is ignored for ARM. + +* The `map-inclusive` boolean is applicable to x86 PV dom0's, and sets up DMA + remapping for all non-RAM regions below 4GB except for unusable ranges. + + Typically, some devices in a system use bits of RAM for communication, and + these areas should be listed via RMRR or IVMD entries in the APCI tables, + so Xen can ensure that they are identity-mapped in the IOMMU. However, + some firmware makes mistakes writing its APCI tables, and this option is a + coarse-grain workaround for those errors. + + 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 Intel systems, disabled by + default on other x86 systems, and invalid on ARM systems. + +* The `map-reserved` functionality is very similar to `map-inclusive`, but 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. + + This option is enabled by default on x86 Intel systems, disabled by + default on other x86 systems, and invalid on ARM systems. ### dom0\_ioports\_disable (x86) > `= List of <hex>-<hex>` diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c index 54737da..85d4ff2 100644 --- a/xen/arch/x86/dom0_build.c +++ b/xen/arch/x86/dom0_build.c @@ -282,12 +282,6 @@ bool __initdata opt_dom0_shadow; #endif bool __initdata dom0_pvh; -/* - * List of parameters that affect Dom0 creation: - * - * - pvh Create a PVHv2 Dom0. - * - shadow Use shadow paging for Dom0. - */ static int __init parse_dom0_param(const char *s) { const char *ss; -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |