Re: gdb support for SME-without-SVE ?

Thiago Jung Bauermann via Gdb
2026-01-30T18:41:00Z

Peter Maydell <peter.maydell@linaro.org> writes:

> On Fri, 30 Jan 2026 at 18:18, Thiago Jung Bauermann
> <thiago.bauermann@linaro.org> wrote:
>> Peter Maydell <peter.maydell@linaro.org> writes:
>> > With my updated QEMU
>> > (which you can find in the new "sme-no-sve-2" in my gitlab repo)
>> > that can now run the tests without making the kernel fall over.
>> > It reports:
>> >
>> > # of expected passes 241
>> > # of unexpected failures 37
>> >
>> > Is that the same as you see on the fast model, or does this
>> > indicate that I still have more QEMU bugs to track down?
>> > (Peeking into gdb.log, these failures seem to be run-on
>> > failures from the program under test getting a SIGILL
>> > in initialize_zt_state(), so my guess is QEMU is still not
>> > quite right.)
>>
>> Indeed, there seems to be something off with QEMU.
>> On FVP, all the tests pass:
>>
>> === gdb Summary ===
>>
>> # of expected passes 278
>
> Just to check, does your FVP have the SME2p1 feature ?
> (Should show up as "sme2p1" in the feature list in /proc/cpuinfo
> in the guest.)

It doesn't. Here's my FVP's feature list:

Features : fp asimd evtstrm crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop asimddp asimdfhm dit uscat ilrcpc flagm sb paca pacg gcs dcpodp flagm2 frint i8mm bf16 dgh rng bti ecv afp sme smei16i64 smef64f64 smei8i32 smef16f32 smeb16f32 smef32f32 wfxt ebf16 cssc mops hbc poe lsfe

> The SIGILL is happening on the attempt to set ZT0:
>
> /* Initialize ZT0. */
> /* ldr zt0, x0 */
> __asm __volatile (".word 0xe11f8000");
>
> because QEMU thinks that EL0 doesn't have access to ZT0.
> If your FVP isn't emulating SME2p1 then the test code will
> return early before getting to that part of the function.

I'm running shrinkwrap using the --overlay option with the following
file:

run:
params:
-C cluster0.has_sve : 1
-C cluster1.has_sve : 1
-C cluster0.sve.has_sme2 : 0
-C cluster1.sve.has_sme2 : 0
-C cluster0.sve.has_sme : 1
-C cluster1.sve.has_sme : 1
-C cluster0.sve.has_sve2 : 1
-C cluster1.sve.has_sve2 : 1
-C cluster0.sve.sme_only : 1
-C cluster1.sve.sme_only : 1

The FVP setup was built with:

$ shrinkwrap build --overlay=arch/v9.5.yaml ns-edk2.yaml

if it makes a difference. I'll see if I can try to turn SME2p1 on.

--
Thiago