From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
To: akpm@linux-foundation.org, peterz@infradead.org, will@kernel.org,
mpe@ellerman.id.au
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-arch@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v4 3/9] asm-generic/tlb: Avoid potential double flush
Date: Thu, 16 Jan 2020 12:19:59 +0530 [thread overview]
Message-ID: <c12bb139-9eda-74a9-b4de-b147a88ed1b0@linux.ibm.com> (raw)
In-Reply-To: <20200116064531.483522-4-aneesh.kumar@linux.ibm.com>
On 1/16/20 12:15 PM, Aneesh Kumar K.V wrote:
> From: Peter Zijlstra <peterz@infradead.org>
>
> Aneesh reported that:
>
> tlb_flush_mmu()
> tlb_flush_mmu_tlbonly()
> tlb_flush() <-- #1
> tlb_flush_mmu_free()
> tlb_table_flush()
> tlb_table_invalidate()
> tlb_flush_mmu_tlbonly()
> tlb_flush() <-- #2
>
> does two TLBIs when tlb->fullmm, because __tlb_reset_range() will not
> clear tlb->end in that case.
>
> Observe that any caller to __tlb_adjust_range() also sets at least one
> of the tlb->freed_tables || tlb->cleared_p* bits, and those are
> unconditionally cleared by __tlb_reset_range().
>
> Change the condition for actually issuing TLBI to having one of those
> bits set, as opposed to having tlb->end != 0.
>
We should possibly get this to stable too along with the first two
patches. I am not quiet sure if this will qualify for a stable backport.
Hence avoided adding Cc:stable@kernel.org
> Reported-by: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
> ---
> include/asm-generic/tlb.h | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
> index 9e22ac369d1d..b36b3bef5661 100644
> --- a/include/asm-generic/tlb.h
> +++ b/include/asm-generic/tlb.h
> @@ -402,7 +402,12 @@ tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
>
> static inline void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb)
> {
> - if (!tlb->end)
> + /*
> + * Anything calling __tlb_adjust_range() also sets at least one of
> + * these bits.
> + */
> + if (!(tlb->freed_tables || tlb->cleared_ptes || tlb->cleared_pmds ||
> + tlb->cleared_puds || tlb->cleared_p4ds))
> return;
>
> tlb_flush(tlb);
>
next prev parent reply other threads:[~2020-01-16 6:50 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-16 6:45 [PATCH v4 0/9] Fixup page directory freeing Aneesh Kumar K.V
2020-01-16 6:45 ` [PATCH v4 1/9] powerpc/mmu_gather: Enable RCU_TABLE_FREE even for !SMP case Aneesh Kumar K.V
2020-01-18 11:01 ` Michael Ellerman
2020-01-16 6:45 ` [PATCH v4 2/9] mm/mmu_gather: Invalidate TLB correctly on batch allocation failure and flush Aneesh Kumar K.V
2020-01-18 11:04 ` Michael Ellerman
2020-01-16 6:45 ` [PATCH v4 3/9] asm-generic/tlb: Avoid potential double flush Aneesh Kumar K.V
2020-01-16 6:49 ` Aneesh Kumar K.V [this message]
2020-01-17 1:46 ` Andrew Morton
2020-01-16 6:45 ` [PATCH v4 4/9] asm-gemeric/tlb: Remove stray function declarations Aneesh Kumar K.V
2020-01-16 6:45 ` [PATCH v4 5/9] asm-generic/tlb: Add missing CONFIG symbol Aneesh Kumar K.V
2020-01-16 6:45 ` [PATCH v4 6/9] asm-generic/tlb: Rename HAVE_RCU_TABLE_FREE Aneesh Kumar K.V
2020-01-18 5:56 ` Aneesh Kumar K.V
2020-01-16 6:45 ` [PATCH v4 7/9] asm-generic/tlb: Rename HAVE_MMU_GATHER_PAGE_SIZE Aneesh Kumar K.V
2020-01-16 6:45 ` [PATCH v4 8/9] asm-generic/tlb: Rename HAVE_MMU_GATHER_NO_GATHER Aneesh Kumar K.V
2020-01-16 6:45 ` [PATCH v4 9/9] asm-generic/tlb: Provide MMU_GATHER_TABLE_FREE Aneesh Kumar K.V
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c12bb139-9eda-74a9-b4de-b147a88ed1b0@linux.ibm.com \
--to=aneesh.kumar@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=peterz@infradead.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox