|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen: introduce XENFEAT_direct_mapped and XENFEAT_not_direct_mapped
On Fri, 26 Feb 2021, Jan Beulich wrote:
> On 25.02.2021 21:51, Stefano Stabellini wrote:
> > On Thu, 25 Feb 2021, Jan Beulich wrote:
> >> On 25.02.2021 02:22, Stefano Stabellini wrote:
> >>> --- a/xen/include/public/features.h
> >>> +++ b/xen/include/public/features.h
> >>> @@ -114,6 +114,13 @@
> >>> */
> >>> #define XENFEAT_linux_rsdp_unrestricted 15
> >>>
> >>> +/*
> >>> + * A direct-mapped (or 1:1 mapped) domain is a domain for which its
> >>> + * local pages have gfn == mfn.
> >>> + */
> >>> +#define XENFEAT_not_direct_mapped 16
> >>> +#define XENFEAT_direct_mapped 17
> >>
> >> Why two new values? Absence of XENFEAT_direct_mapped requires
> >> implying not-direct-mapped by the consumer anyway, doesn't it?
> >
> > That's because if we add both flags we can avoid all unpleasant guessing
> > games in the guest kernel.
> >
> > If one flag or the other flag is set, we can make an informed decision.
> >
> > But if neither flag is set, it means we are running on an older Xen,
> > and we fall back on the current checks.
>
> Oh, okay - if there's guesswork to avoid, then I see the point.
> Maybe mention in the description?
Yes, I can do that.
> >> Further, quoting xen/mm.h: "For a non-translated guest which
> >> is aware of Xen, gfn == mfn." This to me implies that PV would
> >> need to get XENFEAT_direct_mapped set; not sure whether this
> >> simply means x86'es is_domain_direct_mapped() is wrong, but if
> >> it is, uses elsewhere in the code would likely need changing.
> >
> > That's a good point, I didn't think about x86 PV. I think the two flags
> > are needed for autotranslated guests. I don't know for sure what is best
> > for non-autotranslated guests.
> >
> > Maybe we could say that XENFEAT_not_direct_mapped and
> > XENFEAT_direct_mapped only apply to XENFEAT_auto_translated_physmap
> > guests. And it would match the implementation of
> > is_domain_direct_mapped().
>
> I'm having trouble understanding this last sentence, and hence I'm
> not sure I understand the rest in the way you may mean it. Neither
> x86'es nor Arm's is_domain_direct_mapped() has any check towards a
> guest being translated (obviously such a check would be redundant
> on Arm).
I meant that we are not explicitely checking for auto_translated in
neither version of is_domain_direct_mapped(), but it is sort of implied.
> > For non XENFEAT_auto_translated_physmap guests we could either do:
> >
> > - neither flag is set
> > - set XENFEAT_direct_mapped (without changing the implementation of
> > is_domain_direct_mapped)
> >
> > What do you think? I am happy either way.
>
> I'm happy either way as well; suitably described perhaps setting
> XENFEAT_direct_mapped when !paging_mode_translate() would be
> slightly more "natural". But a spelled out and enforced
> dependency upon XENFEAT_auto_translated_physmap would too be fine
> with me.
OK. I'll go with:
if ( is_domain_direct_mapped(d) || !paging_mode_translate(d) )
fi.submap |= (1U << XENFEAT_direct_mapped);
else
fi.submap |= (1U << XENFEAT_not_direct_mapped);
With an appropriate explanation.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |