Re: [PATCH v14 00/39] arm64/sme: Initial support for the Scalable Matrix Extension

Mark Brown
2022-05-03T23:52:30Z

[-- Attachment #1.1: Type: text/plain, Size: 1685 bytes --]

On Tue, May 03, 2022 at 06:23:40PM -0400, Qian Cai wrote:
> On Tue, Apr 19, 2022 at 12:22:08PM +0100, Mark Brown wrote:
> > This series provides initial support for the ARMv9 Scalable Matrix
> > Extension (SME). SME takes the approach used for vectors in SVE and
> > extends this to provide architectural support for matrix operations. A
> > more detailed overview can be found in [1].
>
> Set CONFIG_ARM64_SME=n fixed a warning while running libhugetlbfs tests.
>
> /*
> * There are several places where we assume that the order value is sane
> * so bail out early if the request is out of bound.
> */
> if (unlikely(order >= MAX_ORDER)) {
> WARN_ON_ONCE(!(gfp & __GFP_NOWARN));
> return NULL;
> }

Ugh, right. These variable sized register sets really don't map
entirely cleanly onto the ptrace interface but now you point it
out what the code has there is going to give a rather larger
number than is sensible. Not fully checked but does the below
fix things?

Thanks for your testing with this stuff, it's been really
helpful.

diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index 47d8a7472171..08c1cb43cf33 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -1447,8 +1447,8 @@ static const struct user_regset aarch64_regsets[] = {
},
[REGSET_ZA] = { /* SME ZA */
.core_note_type = NT_ARM_ZA,
- .n = DIV_ROUND_UP(ZA_PT_ZA_SIZE(SVE_VQ_MAX), SVE_VQ_BYTES),
- .size = SVE_VQ_BYTES,
+ .n = 1,
+ .size = ZA_PT_SIZE(SVE_VQ_MAX),
.align = SVE_VQ_BYTES,
.regset_get = za_get,
.set = za_set,

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

[-- Attachment #2: Type: text/plain, Size: 151 bytes --]