qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

MP tables do not report multiple CPUs in Qemu 6.2.0 on x86 when given -s


From: Godmar Back
Subject: MP tables do not report multiple CPUs in Qemu 6.2.0 on x86 when given -smp cpus=n flag
Date: Wed, 19 Jan 2022 09:26:41 -0500

Hi,

after upgrading to 6.2.0, I observed that code such as MIT's xv6 (see
[1]) is no longer able to detect multiple CPUs.  Their code works in
6.1.1, however.

I built 6.1.1 from source and 6.2.0 from source and I have also tested
with CentOS stream's 6.1.1 qemu-kvm and was able to pinpoint this
change to these 2 versions of qemu. I am using qemu-system-i386
specifically.

I tried to go through the ChangeLog to see if the `-smp` option was
deprecated or changed.  I found this note [2] about invalid topologies
having been removed in 5.2. Here's what I found after long
experimentation:

The legacy MP tables appear to work only if you specify the longform
`-smp cpus=4,cores=1,threads=1,sockets=4` in 6.2.0.  If you specify
`-smp 4` or `-smp cpus=4` it will not work in 6.2.0 (it worked in
6.1.1). I am guessing that perhaps the MP tables add entries for each
socket, but that perhaps the behavior of the shortcuts `-smp n` and
`-smp cpus=n` was changed to influence the number of cores rather than
sockets.

In other words, `-smp cpus=n` now means `-smp
cpus=n,cores=n,threads=1,sockets=1` whereas in 6.1.1 and before it
meant `-smp cpus=n,cores=1,threads=1,sockets=n`. I note that
specifying `-smp cpus=4,cores=4,threads=1,sockets=1` in 6.1.1 also
does not create 4 entries in the legacy MP tables.

Can someone confirm/deny this?  If so, it's a breaking change that
perhaps could be mentioned in the Changelog to save others the time
when they upgrade. Affected educational OS include MIT's xv6 and
Stanford's pintos OS.

Thanks for all the work you do on qemu!

 - Godmar

[1] 
https://github.com/mit-pdos/xv6-public/blob/eeb7b415dbcb12cc362d0783e41c3d1f44066b17/mp.c
[2] 
https://qemu-project.gitlab.io/qemu/about/removed-features.html#smp-invalid-topologies-removed-in-5-2

(I'm typing this email in gmail using the plaintext setting, hopefully
it'll preserve line breaks.)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]