OSDN Git Service

spapr: don't initialize PATB entry if max-cpu-compat < power9
authorLaurent Vivier <lvivier@redhat.com>
Thu, 14 Dec 2017 18:09:48 +0000 (19:09 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 14 Dec 2017 22:50:29 +0000 (09:50 +1100)
commit1481fe5fcfeb7fcf3c1ebb9d8c0432e3e0188ccf
tree1f8b37d891ec6ec4c7fccd6f7950b654def16517
parent4f441474c61f317de7927edfdb1d042b0b6f3882
spapr: don't initialize PATB entry if max-cpu-compat < power9

if KVM is enabled and KVM capabilities MMU radix is available,
the partition table entry (patb_entry) for the radix mode is
initialized by default in ppc_spapr_reset().

It's a problem if we want to migrate the guest to a POWER8 host
while the kernel is not started to set the value to the one
expected for a POWER8 CPU.

The "-machine max-cpu-compat=power8" should allow to migrate
a POWER9 KVM host to a POWER8 KVM host, but because patb_entry
is set, the destination QEMU tries to enable radix mode on the
POWER8 host. This fails and cancels the migration:

    Process table config unsupported by the host
    error while loading state for instance 0x0 of device 'spapr'
    load of migration failed: Invalid argument

This patch doesn't set the PATB entry if the user provides
a CPU compatibility mode that doesn't support radix mode.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/spapr.c