Re: [PATCH 2/8] x86/mm/cpa: Move flush_tlb_all()

From: Peter Zijlstra
Date: Sat Sep 22 2018 - 06:38:00 EST


On Fri, Sep 21, 2018 at 02:34:32PM -0700, Dave Hansen wrote:
> On 09/19/2018 01:50 AM, Peter Zijlstra wrote:
> > @@ -1528,28 +1538,8 @@ static int __change_page_attr(struct cpa
> > * We have to split the large page:
> > */
> > err = split_large_page(cpa, kpte, address);
> > - if (!err) {
> ...
> > - flush_tlb_all();
> > + if (!err)
> > goto repeat;
> > - }
>
> I _think_ this is the only use of split_large_page()'s error code. We
> can just make it return void now, right?

Then how does it decide to goto repeat or error out?

> BTW, I also really like doing the "final" TLB flush as close as possible
> to the actual PTE manipulation. Makes it much less likely that we break it.

Yes.