lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <978b4da7c7949e70a515fd04279e12a39e575f1b.camel@surriel.com>
Date: Mon, 06 Jan 2025 12:35:17 -0500
From: Rik van Riel <riel@...riel.com>
To: Dave Hansen <dave.hansen@...el.com>, x86@...nel.org
Cc: linux-kernel@...r.kernel.org, kernel-team@...a.com, 
	dave.hansen@...ux.intel.com, luto@...nel.org, peterz@...radead.org, 
	tglx@...utronix.de, mingo@...hat.com, bp@...en8.de, hpa@...or.com, 
	akpm@...ux-foundation.org, nadav.amit@...il.com,
 zhengqi.arch@...edance.com, 	linux-mm@...ck.org
Subject: Re: [PATCH 07/12] x86/tlb: use INVLPGB in flush_tlb_all

On Mon, 2025-01-06 at 09:29 -0800, Dave Hansen wrote:
> On 12/30/24 09:53, Rik van Riel wrote:
> > --- a/arch/x86/mm/tlb.c
> > +++ b/arch/x86/mm/tlb.c
> > @@ -1074,6 +1074,12 @@ static void do_flush_tlb_all(void *info)
> >  void flush_tlb_all(void)
> >  {
> >  	count_vm_tlb_event(NR_TLB_REMOTE_FLUSH);
> > +	if (cpu_feature_enabled(X86_FEATURE_INVLPGB)) {
> > +		guard(preempt)();
> > +		invlpgb_flush_all();
> > +		tlbsync();
> > +		return;
> > +	}
> 
> After seeing a few of these, I'd really prefer that the preempt and
> tlbsync() logic be hidden in the invlpgb_*() helper, or *a* helper at
> least.
> 
> This would be a lot easier on the eyes if it were something like:
> 
> 	flushed = invlpgb_flush_all();
> 	if (flushed)
> 		return;

One issue here is that some of the invlpgb helpers
are supposed to be asynchronous, because we can
have multiple of those flushes pending simultaneously,
and then wait for them to complete with a tlbsync.

How would we avoid the confusion between the two
types (async vs sync) invlpgb helpers?

I'm all for cleaning this up, but I have not
thought of a good idea yet...

-- 
All Rights Reversed.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ