[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 1/2] xen/dom0: Improve documentation for dom0= and dom0-iommu=



>>> On 21.12.18 at 13:44, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 21/12/2018 12:08, Jan Beulich wrote:
>>>>> On 21.12.18 at 00:40, <andrew.cooper3@xxxxxxxxxx> wrote:
>>> --- 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
>> Why the new tag, when everything else uses (x86) next to the
>> option name?
> 
> See the commit message of c/s a3a99df44e5405d2092ec59087681765fa4cdee7
> 
> The problem is with the generated HTML anchors when trying to cross
> reference the options.

That commit message doesn't talk about anchors, so I can only
guess about the connection. But I think I can see your point.
From a purely textual perspective I have to admit I'd prefer
the original model (without the new tag), but if cross refs don't
work I agree it's better to switch.

>>>  ### 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.
>> I don't thinks this is PV-specific, just its default is.
> 
> From arch_iommu_hwdom_init():
> 
>     /* 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) )
>     {
>         printk(XENLOG_WARNING
>                "IOMMU inclusive mappings are only supported on PV Dom0\n");
>         iommu_hwdom_inclusive = 0;
>     }
> 
> 
> Attempting to use this option with a PVH dom0 will cause Xen to force it
> off.

Oh, I see - one of the bad effects of disconnects in source code
(the 3rd if() would better be else-if() for the 1st).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.