On 06/12/2018 02:05 PM, Eduardo Habkost wrote:
On Tue, Jun 12, 2018 at 06:38:08PM +0000, Moger, Babu wrote:
[...]
I'm starting to think that enabling TOPOEXT automatically is
adding too much complexity and compatibility problems, and it's
better to leave this task to management software.
The main problem here is:
This works today with QEMU 2.12 + Linux <= 4.15:
$ $QEMU -machine pc -cpu EPYC,enforce -smp
8,sockets=2,cores=2,threads=2"
and must keep working with QEMU 3.0 and Linux <= 4.15.
In addition to that, the results for:
$ $QEMU -machine pc-q35-3.0 -cpu EPYC,enforce [...]
must be deterministic and expose exactly the same CPUID data even
if host hardware or software changes, as long as the QEMU
command-line is the same.
Do you see a way to fulfill those two constraints while making
"-machine pc-q35-3.0 -cpu EPYC" enable TOPOEXT automatically?
Now(setting feature before x86_cpu_expand_features), enabling
TOPOEXT appears to work fine.
What about the above constraints? Are you really fulfilling
them?
This one is tricky:
] This works today with QEMU 2.12 + Linux <= 4.15:
] $ $QEMU -machine pc -cpu EPYC,enforce -smp 8,sockets=2,cores=2,threads=2"
] and must keep working with QEMU 3.0 and Linux <= 4.15.
This works fine on kernel <= 4.15 with some warnings(-smp
8,sockets=2,cores=2,threads=2 -cpu EPYC).
qemu-system-x86_64: warning: host doesn't support requested feature:
CPUID.80000001H:EDX.rdtscp [bit 27]
qemu-system-x86_64: warning: host doesn't support requested feature:
CPUID.80000001H:ECX.topoext [bit 22]
qemu-system-x86_64: This family of AMD CPU doesn't support
hyperthreading(2). Please configure -smp options properly or try
enabling topoext feature.
continues..
If we enable TOPOEXT unconditionally, the command-line won't work
with Linux <= 4.15.
If we enable TOPOEXT only if the kernel returns TOPOEXT on
GET_SUPPORTED_CPUID, we break the second constraint:
] The results for:
] $ $QEMU -machine pc-q35-3.0 -cpu EPYC,enforce [...]
] must be deterministic and expose exactly the same CPUID data even
] if host hardware or software changes, as long as the QEMU
] command-line is the same.
This fails on kernel <= 4.15 with following messages((-smp
8,sockets=2,cores=2,threads=2 -cpu EPYC,enforce).
qemu-system-x86_64: warning: host doesn't support requested feature:
CPUID.80000001H:EDX.rdtscp [bit 27]
qemu-system-x86_64: warning: host doesn't support requested feature:
CPUID.80000001H:ECX.topoext [bit 22]
qemu-system-x86_64: Host doesn't support requested features
exits..
What do you think our options are here?