2019-08-22 09:22:08

by Atish Patra

[permalink] [raw]
Subject: [PATCH v4 3/3] RISC-V: Issue a tlb page flush if possible

If tlbflush request is for page only, there is no need to do a
complete local tlb shootdown.

Just do a local tlb flush for the given address.

Signed-off-by: Atish Patra <[email protected]>
---
arch/riscv/mm/tlbflush.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c
index 8172fbf46123..b1c04751bcf1 100644
--- a/arch/riscv/mm/tlbflush.c
+++ b/arch/riscv/mm/tlbflush.c
@@ -27,7 +27,10 @@ static void __sbi_tlb_flush_range(struct cpumask *cmask, unsigned long start,

if (cpumask_any_but(cmask, cpuid) >= nr_cpu_ids) {
/* local cpu is the only cpu present in cpumask */
- local_flush_tlb_all();
+ if (size <= PAGE_SIZE)
+ local_flush_tlb_page(start);
+ else
+ local_flush_tlb_all();
} else {
riscv_cpuid_to_hartid_mask(cmask, &hmask);
sbi_remote_sfence_vma(cpumask_bits(&hmask), start, size);
--
2.21.0


2019-08-22 10:27:42

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH v4 3/3] RISC-V: Issue a tlb page flush if possible

On Thu, Aug 22, 2019 at 12:51:51AM -0700, Atish Patra wrote:
> If tlbflush request is for page only, there is no need to do a
> complete local tlb shootdown.
>
> Just do a local tlb flush for the given address.

Looks good, although I suspect in many cases even doing multiple
single-page sfence.vma calls might be cheaper than the global one.

But I think that is worth a Ń•eparate discussion, preferably with actual
numbers.

Reviewed-by: Christoph Hellwig <[email protected]>

2019-08-23 07:20:25

by Atish Patra

[permalink] [raw]
Subject: Re: [PATCH v4 3/3] RISC-V: Issue a tlb page flush if possible

On Thu, 2019-08-22 at 10:11 +0200, Christoph Hellwig wrote:
> On Thu, Aug 22, 2019 at 12:51:51AM -0700, Atish Patra wrote:
> > If tlbflush request is for page only, there is no need to do a
> > complete local tlb shootdown.
> >
> > Just do a local tlb flush for the given address.
>
> Looks good, although I suspect in many cases even doing multiple
> single-page sfence.vma calls might be cheaper than the global one.
>
> But I think that is worth a Ń•eparate discussion, preferably with
> actual
> numbers.
>

Yup. Finding a good threashold is always tricky without real
benchmarks.

> Reviewed-by: Christoph Hellwig <[email protected]>

Thanks for the review.

--
Regards,
Atish