[PATCH v2] KVM: arm64: Move data barrier to end of split walk

Colton Lewis coltonlewis at google.com
Thu Aug 8 12:58:38 PDT 2024


Oliver Upton <oliver.upton at linux.dev> writes:

> Hi Colton,

> On Thu, Aug 08, 2024 at 05:42:43PM +0000, Colton Lewis wrote:
>> This DSB guarantees page table updates have been made visible to the
>> hardware table walker. Moving the DSB from stage2_split_walker() to
>> after the walk is finished in kvm_pgtable_stage2_split() results in a
>> roughly 70% reduction in Clear Dirty Log Time in
>> dirty_log_perf_test (modified to use eager page splitting) when using
>> huge pages. This gain holds steady through a range of vcpus
>> used (tested 1-64) and memory used (tested 1-64GB).

> Would you have time to put together a patch for the dirty_log_perf_test
> changes you've made? This would be quite valuable for testing future
> improvements to eager page splitting.

I can do that.

>> This is safe to do because nothing else is using the page tables while
>> they are still being mapped and this is how other page table walkers
>> already function. None of them have a data barrier in the walker
>> itself because relative ordering of table PTEs to table contents comes
>> from the release semantics of stage2_make_pte().

>> Signed-off-by: Colton Lewis <coltonlewis at google.com>

> The diff itself looks good to me, so:

> Acked-by: Oliver Upton <oliver.upton at linux.dev>

> --
> Thanks,
> Oliver



More information about the linux-arm-kernel mailing list