On Mon, Apr 22, 2024 at 5:26 PM Peter Maydell <peter.mayd...@linaro.org> wrote: > > On Mon, 22 Apr 2024 at 11:46, Peter Maydell <peter.mayd...@linaro.org> wrote: > > > > On Sun, 21 Apr 2024 at 06:40, Richard Henderson > > <richard.hender...@linaro.org> wrote: > > > > --- a/target/arm/cpu.c > > > > +++ b/target/arm/cpu.c > > > > @@ -1314,8 +1314,18 @@ static void arm_cpu_dump_state(CPUState *cs, > > > > FILE *f, int flags) > > > > } > > > > } > > > > > > > > -uint64_t arm_build_mp_affinity(int idx, uint8_t clustersz) > > > > +uint64_t arm_build_mp_affinity(ARMCPU *cpu, int idx, uint8_t clustersz) > > > > { > > > > + if (cpu->has_smt) { > > > > + /* > > > > + * Right now, the ARM CPUs with SMT supported by QEMU only have > > > > + * one thread per core. So Aff0 is always 0. > > > > + */ > > > > > > Well, this isn't true. > > > > > > -smp > > > [[cpus=]n][,maxcpus=maxcpus][,drawers=drawers][,books=books][,sockets=sockets] > > > > > > [,dies=dies][,clusters=clusters][,cores=cores][,threads=threads] > > > > > > I would expect all of Aff[0-3] to be settable with the proper topology > > > parameters. > > > > As I understand it the MPIDR value is more or less independent > > of the topology information as presented to the guest OS. > > The options to the -smp command set the firmware topology > > information, which doesn't/shouldn't affect the reported > > MPIDR values, and in particular shouldn't change whether > > the CPU selected has the MT bit set or not. > > > > For Arm's CPUs they fall into two categories: > > * older ones don't set MT in their MPIDR, and the Aff0 > > field is effectively the CPU number > > * newer ones do set MT in their MPIDR, but don't have > > SMT, so their Aff0 is always 0 and their Aff1 > > is the CPU number > > > > Of all the CPUs we model, none of them are the > > architecturally-permitted "MT is set, CPU implements > > actual SMT, Aff0 indicates the thread in the CPU" type. > > Looking at the TRM, Neoverse-E1 is "MT is set, actual SMT, > Aff0 is the thread" (Aff0 can be 0 or 1). We just don't > model that CPU type yet. But we should probably make > sure we don't block ourselves into a corner where that > would be awkward -- I'll have a think about this and > look at what x86 does with the topology info. >
Thanks. Let me know what should be done as part of this patch to properly fix the issue if you get a chance to look at it. Regards, Dorjoy