[RFC PATCH 0/3] target/arm: Allow SME-only TCG CPUs

Peter Maydell posted 3 patches 1 week, 3 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260127154813.591744-1-peter.maydell@linaro.org
Maintainers: Peter Maydell <peter.maydell@linaro.org>
There is a newer version of this series
target/arm/cpu.c    | 10 ----------
target/arm/helper.c | 23 +++++++++++++++--------
2 files changed, 15 insertions(+), 18 deletions(-)
[RFC PATCH 0/3] target/arm: Allow SME-only TCG CPUs
Posted by Peter Maydell 1 week, 3 days ago
These patches add support to TCG for a CPU with SME but not SVE.  We
originally prevented users from doing that in the run-up to a
release, in commit f7767ca30179 ("target/arm: Disable SME if SVE is
disabled") by forcing SME to off if SVE wasn't implemented.  This was
a simple way to avoid users hitting an assertion failure.

I tracked down exactly why we were getting that assertion failure,
and fixed another "assumes SME implies SME" issue I spotted in the
code while I was auditing the various callers of
sve_vqm1_sve_for_el().  This lets us remove the hack we originally
put in.

This is an RFC because:
 * I tested that we can boot a kernel and it detects SME, but
   don't have an SME guest workload to hand that does much
   with registers, vector length, etc.
 * having "-cpu max,sve=off" now give you this oddball
   "SME only" config is perhaps surprising to users. We could
   perhaps flag this up in cpu-features.rst somewhere.
 * as noted in the other thread that adds hvf support for
   SME-only CPUs, it turns out that gdb will crash if you
   connect it to our debug stub in this config.

But I think the first two patches are worth getting reviewed
and into the tree even if we haven't figured out yet if we
want to hold off until we have an idea what to do about gdb.

Peter Maydell (3):
  target/arm: Make smcr_write() handle SME-without-SVE
  target/arm: Handle SME-without-SVE on change of EL
  target/arm: Permit configurations with SME but not SVE

 target/arm/cpu.c    | 10 ----------
 target/arm/helper.c | 23 +++++++++++++++--------
 2 files changed, 15 insertions(+), 18 deletions(-)

-- 
2.43.0