Alex Bennée <alex.ben...@linaro.org> writes: > Before this change booting a -cpu max,sve=off would trigger and > assert: > > qemu-system-aarch64: ../../target/arm/helper.c:6647: sve_vqm1_for_el_sm: > Assertion `sm' failed. > > when the guest attempts to write to SMCR which shouldn't even exist if > SVE has been turned off. > > Signed-off-by: Alex Bennée <alex.ben...@linaro.org> > Cc: Ilias Apalodimas <ilias.apalodi...@linaro.org> > --- > target/arm/cpu64.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c > index 0e021960fb..a38d43421a 100644 > --- a/target/arm/cpu64.c > +++ b/target/arm/cpu64.c > @@ -409,6 +409,13 @@ static void cpu_arm_set_sve(Object *obj, bool value, > Error **errp) > t = cpu->isar.id_aa64pfr0; > t = FIELD_DP64(t, ID_AA64PFR0, SVE, value); > cpu->isar.id_aa64pfr0 = t; > + > + /* FEAT_SME requires SVE, so disable it if no SVE */ > + if (!value) { > + t = cpu->isar.id_aa64pfr1; > + t = FIELD_DP64(t, ID_AA64PFR1, SME, 0); > + cpu->isar.id_aa64pfr1 = t; > + }
What about -cpu max,sve=off,sme=on ?