[Qemu-devel] [PATCH v1] target/arm/arm-powerctl: mask the cpuid with affinity bits when get cpu
Currently, the cpuid passed from the device tree may still contain non-affinity fields, which will cause arm_set_cpu_on failure. Therefore, we mask the cpuid with affinity fields here to improve qemu compatibility. Signed-off-by: Yang Chuanlong --- target/arm/arm-powerctl.c | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c index f77a950db6..ef9fec0b4d 100644 --- a/target/arm/arm-powerctl.c +++ b/target/arm/arm-powerctl.c @@ -31,7 +31,13 @@ CPUState *arm_get_cpu_by_id(uint64_t id) { CPUState *cpu; -DPRINTF("cpu %" PRId64 "\n", id); +#ifdef TARGET_AARCH64 +id &= ARM64_AFFINITY_MASK; +#else +id &= ARM32_AFFINITY_MASK; +#endif + +DPRINTF("cpu %" PRId64 " after mask affinity\n", id); CPU_FOREACH(cpu) { ARMCPU *armcpu = ARM_CPU(cpu); -- 2.21.0
[Qemu-devel] [PATCH v1] target/arm/arm-powerctl: mask the cpuid with affinity bits when get cpu
Currently, the cpuid passed from the device tree may still contain non-affinity fields, which will cause arm_set_cpu_on failure. Therefore, we mask the cpuid with affinity fields here to improve qemu compatibility. Signed-off-by: Yang Chuanlong --- target/arm/arm-powerctl.c | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c index f77a950db6..ef9fec0b4d 100644 --- a/target/arm/arm-powerctl.c +++ b/target/arm/arm-powerctl.c @@ -31,7 +31,13 @@ CPUState *arm_get_cpu_by_id(uint64_t id) { CPUState *cpu; -DPRINTF("cpu %" PRId64 "\n", id); +#ifdef TARGET_AARCH64 +id &= ARM64_AFFINITY_MASK; +#else +id &= ARM32_AFFINITY_MASK; +#endif + +DPRINTF("cpu %" PRId64 " after mask affinity\n", id); CPU_FOREACH(cpu) { ARMCPU *armcpu = ARM_CPU(cpu); -- 2.21.0