Messages in this thread | | | From | Andreas Schwab <> | Subject | Re: [v2 PATCH] RISC-V: Optimize tlb flush path. | Date | Tue, 20 Aug 2019 10:51:07 +0200 |
| |
On Aug 20 2019, Atish Patra <Atish.Patra@wdc.com> wrote:
> + > + cpuid = get_cpu(); > + if (!cmask) { > + riscv_cpuid_to_hartid_mask(cpu_online_mask, &hmask); > + goto issue_sfence; > + } > + > + > + if (cpumask_test_cpu(cpuid, cmask) && cpumask_weight(cmask) == > 1) { > + /* Save trap cost by issuing a local tlb flush here */ > + if ((start == 0 && size == -1) || (size > PAGE_SIZE)) > + local_flush_tlb_all(); > + else if (size == PAGE_SIZE) > + local_flush_tlb_page(start); > + goto done; > + } > + > riscv_cpuid_to_hartid_mask(cmask, &hmask); > + > +issue_sfence: > sbi_remote_sfence_vma(hmask.bits, start, size); > +done: > + put_cpu(); > } > > This is much simpler than what I had done in v2. I will address the if > condition around size as well.
I still think that this function should be moved out of the header.
Andreas.
-- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."
| |