[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 for-4.7 4/5] x86/svm: Don't unconditionally use a new ASID in svm_invlpg_intercept()
On 05/09/2016 02:27 PM, Andrew Cooper wrote: > paging_invlpg() already returns a boolean indicating whether an invalidation > is necessary or not. A return value of 0 indicates that the specified virtual > address wasn't shadowed (or has already been flushed), cannot currently be > cached in the TLB. > > This is a performance optimisation. > > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> > --- > CC: Jan Beulich <JBeulich@xxxxxxxx> > CC: Tim Deegan <tim@xxxxxxx> > CC: Wei Liu <wei.liu2@xxxxxxxxxx> > CC: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> > CC: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx> > > While being a performance optimisation, the main purpose of splitting this > patch out is to separate the functional change. The following patch performs > some function shuffling, and this patch makes the following one more obviously > correct. > > v2: > * Newly split out > --- > xen/arch/x86/hvm/svm/svm.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c > index 7634c3f..081a5d8 100644 > --- a/xen/arch/x86/hvm/svm/svm.c > +++ b/xen/arch/x86/hvm/svm/svm.c > @@ -2224,8 +2224,8 @@ static void svm_invlpg_intercept(unsigned long vaddr) > { > struct vcpu *curr = current; > HVMTRACE_LONG_2D(INVLPG, 0, TRC_PAR_LONG(vaddr)); > - paging_invlpg(curr, vaddr); > - svm_asid_g_invlpg(curr, vaddr); > + if ( paging_invlpg(curr, vaddr) ) > + svm_asid_g_invlpg(curr, vaddr); > } > > static struct hvm_function_table __initdata svm_function_table = { _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |