[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/5] x86/PV: fold redundant calls to adjust_guest_l<N>e()
On 11.01.2021 11:36, Roger Pau Monné wrote: > On Tue, Nov 03, 2020 at 11:56:44AM +0100, Jan Beulich wrote: >> At least from an abstract perspective it is quite odd for us to compare >> adjusted old and unadjusted new page table entries when determining >> whether the fast path can be used. This is largely benign because >> FASTPATH_FLAG_WHITELIST covers most of the flags which the adjustments >> may set, and the flags getting set don't affect the outcome of >> get_page_from_l<N>e(). There's one exception: 32-bit L3 entries get >> _PAGE_RW set, but get_page_from_l3e() doesn't allow linear page tables >> to be created at this level for such guests. Apart from this _PAGE_RW >> is unused by get_page_from_l<N>e() (for N > 1), and hence forcing the >> bit on early has no functional effect. >> >> The main reason for the change, however, is that adjust_guest_l<N>e() >> aren't exactly cheap - both in terms of pure code size and because each >> one has at least one evaluate_nospec() by way of containing >> is_pv_32bit_domain() conditionals. >> >> Call the functions once ahead of the fast path checks, instead of twice >> after. > > I guess part of the reasoning for doing it that way is because you can > avoid the adjust_guest_l1e in the slow path if get_page_from_l1e > fails? Possibly, but this is specifically the not generally interesting code path (in particular not one where I'd consider performance relevant). > In any case, adjust_guest_l1e was only called once from either the > fast or the slow paths. > >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > > Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Thanks. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |