hw/ppc/spapr.c: Make sure the host supports the selected MMU mode
Starting with Linux kernel v5.12 we dropped support[1] in KVM for
hosts that can't have their threads running in different MMU modes
(POWER9 < DD2.2). In these hosts, KVM will no longer report the
KVM_CAP_PPC_MMU_HASH_V3 capability[2] when the host is running Radix.
For guests that support both MMU modes, the negotiation during CAS
will make sure it selects the correct one.
For guests that only support Hash, such as P8 compat mode guests, the
following error is currently thrown:
$ ~/qemu-system-ppc64 -machine pseries,accel=kvm,max-cpu-compat=power8 ...
error: kvm run failed Invalid argument
NIP
0000000000000100 LR
0000000000000000 CTR
0000000000000000 XER
0000000000000000 CPU#0
MSR
8000000000001000 HID0
0000000000000000 HF
8000000000000000 iidx 3 didx 3
TB
00000000 00000000 DECR 0
GPR00
0000000000000000 0000000000000000 0000000000000000 000000007ff00000
GPR04
0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR08
0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR12
0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR16
0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR20
0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR24
0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR28
0000000000000000 0000000000000000 0000000000000000 0000000000000000
CR
00000000 [ - - - - - - - - ] RES
ffffffffffffffff
SRR0
0000000000000000 SRR1
0000000000000000 PVR
00000000004e1201 VRSAVE
0000000000000000
SPRG0
0000000000000000 SPRG1
0000000000000000 SPRG2
0000000000000000 SPRG3
0000000000000000
SPRG4
0000000000000000 SPRG5
0000000000000000 SPRG6
0000000000000000 SPRG7
0000000000000000
HSRR0
0000000000000000 HSRR1
0000000000000000
CFAR
0000000000000000
LPCR
000000000004f01f
PTCR
0000000000000000 DAR
0000000000000000 DSISR
0000000000000000
This patch adds a verification during the writing of the platform
support vector so that we error out as soon as we determine this guest
only supports Hash and the host doesn't.
~/qemu-system-ppc64 -machine pseries,accel=kvm,max-cpu-compat=power8 ...
qemu-system-ppc64: Guest requested unavailable MMU mode (hash).
1- https://git.kernel.org/torvalds/p/
b1b1697ae0cc8
2- https://git.kernel.org/torvalds/p/
a722076e94702
Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com>
Message-Id: <
20210505001130.
3999968-3-farosas@linux.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>