[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 2/2] x86/pv: Flush TLB in response to paging structure changes
On 27.10.2020 15:10, Andrew Cooper wrote: > With MMU_UPDATE, a PV guest can make changes to higher level pagetables. This > is safe from Xen's point of view (as the update only affects guest mappings), > and the guest is required to flush (if necessary) after making updates. > > However, Xen's use of linear pagetables (UPDATE_VA_MAPPING, GNTTABOP_map, > writeable pagetables, etc.) is an implementation detail outside of the > API/ABI. > > Changes in the paging structure require invalidations in the linear pagetable > range for subsequent accesses into the linear pagetables to access non-stale > mappings. Xen must provide suitable flushing to prevent intermixed guest > actions from accidentally accessing/modifying the wrong pagetable. > > For all L2 and higher modifications, flush the TLB. PV guests cannot create > L2 or higher entries with the Global bit set, so no mappings established in > the linear range can be global. Perhaps "..., so no guest controlled mappings ..."? > @@ -4177,19 +4184,61 @@ long do_mmu_update( > if ( va ) > unmap_domain_page(va); > > - if ( sync_guest ) > + /* > + * Perform required TLB maintenance. > + * > + * This logic currently depend on flush_linear_pt being a superset of the > + * flush_root_pt_* conditions. > + * > + * pt_owner may not be current->domain. This may occur during > + * construction of 32bit PV guests, or debugging of PV guests. The > + * behaviour cannot be correct with domain unpaused. We therefore expect > + * pt_owner->dirty_cpumask to be empty, but it is a waste of effort to > + * explicitly check for an exclude this corner case. Nit: s/ an / and / Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |