On Sun, 13 Feb 2022 at 03:58, Akihiko Odaki <akihiko.odaki@xxxxxxxxx> wrote: > > Support the latest PSCI on TCG and HVF. A 64-bit function called from > AArch32 now returns NOT_SUPPORTED, which is necessary to adhere to SMC > Calling Convention 1.0. It is still not compliant with SMCCC 1.3 since > they do not implement mandatory functions. > /* PSCI v0.2 return values used by TCG emulation of PSCI */ > > /* No Trusted OS migration to worry about when offlining CPUs */ > #define QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED 2 > > -/* We implement version 0.2 only */ > -#define QEMU_PSCI_0_2_RET_VERSION_0_2 2 > +#define QEMU_PSCI_VERSION_0_1 0x00001 > +#define QEMU_PSCI_VERSION_0_2 0x00002 > +#define QEMU_PSCI_VERSION_1_1 0x10001 Just noticed that there's a minor issue with this change -- it deletes the definition of QEMU_PSCI_0_2_RET_VERSION_0_2, but it is still used below: > > MISMATCH_CHECK(QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED, PSCI_0_2_TOS_MP); > MISMATCH_CHECK(QEMU_PSCI_0_2_RET_VERSION_0_2, here ^^ which means that this breaks compilation on Arm hosts. I'll squash in the fix: --- a/target/arm/kvm-consts.h +++ b/target/arm/kvm-consts.h @@ -98,8 +98,11 @@ MISMATCH_CHECK(QEMU_PSCI_1_0_FN_PSCI_FEATURES, PSCI_1_0_FN_PSCI_FEATURES); #define QEMU_PSCI_VERSION_1_1 0x10001 MISMATCH_CHECK(QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED, PSCI_0_2_TOS_MP); -MISMATCH_CHECK(QEMU_PSCI_0_2_RET_VERSION_0_2, +/* We don't bother to check every possible version value */ +MISMATCH_CHECK(QEMU_PSCI_VERSION_0_2, (PSCI_VERSION_MAJOR(0) | PSCI_VERSION_MINOR(2))); +MISMATCH_CHECK(QEMU_PSCI_VERSION_1_1, + (PSCI_VERSION_MAJOR(1) | PSCI_VERSION_MINOR(1))); /* PSCI return values (inclusive of all PSCI versions) */ #define QEMU_PSCI_RET_SUCCESS 0 thanks -- PMM