On 05/15/2017 03:16 PM, Greg Kurz wrote: > On Mon, 15 May 2017 14:22:32 +0200 > Cédric Le Goater <c...@kaod.org> wrote: > >> On 05/15/2017 01:40 PM, Greg Kurz wrote: >>> Commit 5bc8d26de20c ("spapr: allocate the ICPState object from under >>> sPAPRCPUCore") moved ICP objects from the machine to CPU cores. This >>> is an improvement since we no longer allocate ICP objects that will >>> never be used. But it has the side-effect of breaking migration of >>> older machine types from older QEMU versions. >>> >>> This patch introduces a compat flag in the sPAPR machine class so >>> that all pseries machine up to 2.9 go on with the previous behavior >>> of pre-allocating ICP objects. >> >> I think this is a quite elegant way to a handle the migration >> regression. Thanks for taking care of it. >> >> Have you tried to simply reparent the ICPs objects to OBJECT(spapr) >> instead of the OBJECT(cpu) ? >> > > Do you mean to reparent unconditionally to OBJECT(spapr) for all > machine versions ?
only in the case of smc->must_pre_allocate_icps > I'm not sure this would be beneficial, but I might be missing > something... I think that we would not need to allocate the legacy_icps array. Parenting the icp object to the spapr machine should be enough. I might be wrong. my expertise on the migration stream is very basic. C.