|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 2/4] iommu: make iommu_inclusive_mapping a suboption of dom0-iommu
On Wed, Aug 08, 2018 at 06:32:00AM -0600, Jan Beulich wrote:
> >>> On 08.08.18 at 12:07, <roger.pau@xxxxxxxxxx> wrote:
> > Introduce a new dom0-iommu=inclusive generic option that supersedes
> > iommu_inclusive_mapping. The previous behaviour is preserved and the
> > option should only be enabled by default on Intel hardware.
>
> Why "should" instead of "is"?
>
> > @@ -1221,6 +1221,18 @@ PV Dom0:
> > Note that all the above options are mutually exclusive. Specifying more
> > than
> > one on the `dom0-iommu` command line will result in undefined behavior.
> >
> > +The following options control whether non-RAM regions are added to the Dom0
> > +iommu tables. Note that they can be prefixed with `no-` to effect the
> > inverse
> > +meaning:
>
> I'm not particularly happy about the mentioning of "no-" here: Why is
> this better than the also permitted "=0" etc suffixes? Keep it generic,
> just like other options do.
Oh, I've just copied this text from the iommu option. Should I change
this to:
"The following boolean options control whether non-RAM regions are
added to the Dom0 iommu tables:"
> > +* `inclusive`: sets up DMA remapping for all the non-RAM memory 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.
>
> No word at all about the interaction with none/strict/relaxed? I think,
> as mentioned for patch 1, "none" renders this option meaningless as
> well. But for "relaxed" it's pretty unclear, because from E820 alone
> you can't judge whether e.g. a reserved region is RAM or MMIO. (As
> an implication, the mentioning of RAM in patch 1's doc for "relaxed"
> then looks symmetrically wrong, just like I've already asked to replace
> "memory" by "RAM" for "strict".)
Hm, I'm not sure I follow. 'relaxed' refers to how the regions marked
as RAM in the memory map (E820_RAM) will be mapped to the guest.
The inclusive option OTOH refers to if/how non-RAM regions in the
memory map will be mapped to the guest. It doesn't matter if a
reserved region (E820_RESERVED) is actually backed by RAM or MMIO, it
will be mapped to the guest because it's a reserved region on the
memory map.
> > --- a/xen/drivers/passthrough/arm/iommu.c
> > +++ b/xen/drivers/passthrough/arm/iommu.c
> > @@ -73,3 +73,7 @@ int arch_iommu_populate_page_table(struct domain *d)
> > /* The IOMMU shares the p2m with the CPU */
> > return -ENOSYS;
> > }
> > +
> > +void __hwdom_init arch_iommu_hwdom_init(struct domain *d)
> > +{
> > +}
>
> The option being in common code, I think you also need to set it for
> ARM, so it won't remain at its default of -1.
>
> > @@ -144,16 +145,23 @@ static int __init parse_dom0_iommu_param(const char
> > *s)
> > int rc = 0;
> >
> > do {
> > + bool val = !!strncmp(s, "no-", 3);
>
> Oh, you do a literal comparison against "no-". Please don't, that's what
> we have parse_boolean() for.
Thanks, I will fix it. I've mostly cloned what the iommu option
currently does.
> > @@ -202,6 +210,13 @@ void __hwdom_init iommu_hwdom_init(struct domain *d)
> > if ( !iommu_enabled )
> > return;
> >
> > + if ( iommu_dom0_inclusive == true && !is_pv_domain(d) )
>
> Why the "== true"? It shouldn't have its initializer value of -1 anymore
> at this point.
It can have a value of -1, AFAICT the default values are set by
hd->platform_ops->hwdom_init which is called later in this function.
Thanks, Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |