On Tue, Apr 04, 2023 at 06:41:34PM +0000, Oliver Upton wrote: > On Mon, Apr 03, 2023 at 10:26:01AM -0700, Raghavendra Rao Ananta wrote: > > On Wed, Mar 29, 2023 at 6:19 PM Oliver Upton <oliver.upton@xxxxxxxxx> wrote: > > > > + start = round_down(start, stride); \ > > > > + end = round_up(end, stride); \ > > > > + pages = (end - start) >> PAGE_SHIFT; \ > > > > + \ > > > > + if ((!system_supports_tlb_range() && \ > > > > + (end - start) >= (MAX_TLBI_OPS * stride)) || \ > > > > > > Doesn't checking for TLBIRANGE above eliminate the need to test against > > > MAX_TLBI_OPS? > > > > > Derived from __flush_tlb_range(), I think the condition is used to > > just flush everything if the range is too large to iterate and flush > > when the system doesn't support TLBIRANGE. Probably to prevent > > soft-lockups? > > Right, but you test above for system_supports_tlb_range(), meaning that > you'd unconditionally call __kvm_tlb_flush_vmid() below. Gah, I misread the parenthesis and managed to miss your statement in the changelog about !TLBIRANGE systems. Apologies. -- Thanks, Oliver