Re: [PATCH v4 0/8] RISC-V: Apply Zicboz to clear_page

Conor Dooley
2023-02-09T17:46:01Z

[-- Attachment #1: Type: text/plain, Size: 3031 bytes --]

Hey Drew,

On Thu, Feb 09, 2023 at 04:26:20PM +0100, Andrew Jones wrote:
> When the Zicboz extension is available we can more rapidly zero naturally
> aligned Zicboz block sized chunks of memory. As pages are always page
> aligned and are larger than any Zicboz block size will be, then
> clear_page() appears to be a good candidate for the extension. While cycle
> count and energy consumption should also be considered, we can be pretty
> certain that implementing clear_page() with the Zicboz extension is a win
> by comparing the new dynamic instruction count with its current count[1].
> Doing so we see that the new count is just over a quarter of the old count
> (see patch4's commit message for more details).
>
> For those of you who reviewed v1[2], you may be looking for the memset()
> patches. As pointed out in v1, and a couple follow-up emails, it's not
> clear that patching memset() is a win yet. When I get a chance to test
> on real hardware with a comprehensive benchmark collection then I can
> post the memset() patches separately (assuming the benchmarks show it's
> worthwhile).
>
> Based on riscv-linux/for-next plus the dependencies listed below.
>
> Dependencies:
> https://lore.kernel.org/all/20230108163356.3063839-1-conor@kernel.org/
> https://lore.kernel.org/all/20230105192610.1940841-1-heiko@sntech.de/

I've had a short (due to FOSDEM) & busy week since we discussed the
automagic dependency collection. I'll try to get to it in the next few
days.

> The patches are also available here
> https://github.com/jones-drew/linux/commits/riscv/zicboz-v4
>
> To test over QEMU this branch may be used to enable Zicboz
> https://gitlab.com/jones-drew/qemu/-/commits/riscv/zicboz
>
> To test running a KVM guest with Zicboz this kvmtool branch may be used
> https://github.com/jones-drew/kvmtool/commits/riscv/zicboz
>
> Thanks,
> drew
>
> [1] I ported the functions under test to userspace and linked them with
> a test program. Then, I ran them under gdb with a script[3] which
> counted instructions by single stepping.
> [2] https://lore.kernel.org/all/20221027130247.31634-1-ajones@ventanamicro.com/
> [3] https://gist.github.com/jones-drew/487791c956ceca8c18adc2847eec9c60
>
> v4:
> - Rebased on latest for-next which allowed dropping one dependency
> - Added "RISC-V: alternatives: Support patching multiple insns in assembly"
> since I needed to use more than one instruction in an ALTERNATIVE call
> from assembly. I can post this patch separately as a fix if desired.
> - Improved the dt-binding patch commit message [Conor]
> - Picked up some tags from Conor and Rob (I kept Conor's a-b on the
> clear_page patch, even though there are several changes to it, because
> I interpreted the a-b as "OK by me to implement a Zicboz clear_page")

Yea, it was a "I am far from qualified to review your implementation,
but I am okay with it existing and the remainder of the patch".

Cheers,
Conor.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]