On 2018-09-12 22:08, Tony Krowiak wrote: > From: Tony Krowiak <akrow...@linux.ibm.com> > > Introduces the base object model for virtualizing AP devices. > > Signed-off-by: Tony Krowiak <akrow...@linux.ibm.com> > --- [...] > diff --git a/hw/s390x/ap-bridge.c b/hw/s390x/ap-bridge.c > new file mode 100644 > index 0000000..4f10425 > --- /dev/null > +++ b/hw/s390x/ap-bridge.c [...] > +void s390_init_ap(void) > +{ > + DeviceState *dev; > + > + /* Create bridge device */ > + dev = qdev_create(NULL, TYPE_AP_BRIDGE); > + object_property_add_child(qdev_get_machine(), TYPE_AP_BRIDGE, > + OBJECT(dev), NULL); > + qdev_init_nofail(dev); > + > + /* Create bus on bridge device */ > + qbus_create(TYPE_VFIO_AP_BUS, dev, TYPE_VFIO_AP_BUS); > + } [...] > +type_init(ap_device_register) > diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c > index f0f7fdc..3c100c2 100644 > --- a/hw/s390x/s390-virtio-ccw.c > +++ b/hw/s390x/s390-virtio-ccw.c > @@ -32,6 +32,7 @@ > #include "ipl.h" > #include "hw/s390x/s390-virtio-ccw.h" > #include "hw/s390x/css-bridge.h" > +#include "hw/s390x/ap-bridge.h" > #include "migration/register.h" > #include "cpu_models.h" > #include "hw/nmi.h" > @@ -263,6 +264,9 @@ static void ccw_init(MachineState *machine) > /* init the SIGP facility */ > s390_init_sigp(); > > + /* create AP bridge and bus(es) */ > + s390_init_ap(); > +
Not sure since there is no explicit migration state involved here, but I think you cannot simply create the ap-bridge device always unconditionally, can you? Did you check whether you can ping-pong migrate an guest that runs on an older version of QEMU to a QEMU that contains this patch and back? If it does not work, it might be necessary to restrict this ap-bridge device for new machine types only, I think. Thomas