* Cornelia Huck (coh...@redhat.com) wrote: > On Wed, 27 Sep 2017 15:28:38 +0100 > "Dr. David Alan Gilbert" <dgilb...@redhat.com> wrote: > > > * David Hildenbrand (da...@redhat.com) wrote: > > > On 27.09.2017 12:59, Christian Borntraeger wrote: > > > > > > > > > > > > On 09/27/2017 12:56 PM, Cornelia Huck wrote: > > > >> On Wed, 27 Sep 2017 18:25:00 +0800 > > > >> Yi Min Zhao <zyi...@linux.vnet.ibm.com> wrote: > > > >> > > > >>> 在 2017/9/27 下午5:47, Cornelia Huck 写道: > > > >>>> On Tue, 26 Sep 2017 20:40:25 +0200 > > > >>>> David Hildenbrand <da...@redhat.com> wrote: > > > >> > > > >>>>> I'd really really really (did I mention really?) favor something > > > >>>>> like a > > > >>>>> dummy device, because we could easily handle the !CONFIG_PCI case > > > >>>>> then. > > > >>>>> > > > >>>>> All these compat options and conditions will kill us someday... > > > >>>>> we're > > > >>>>> already patching around that whole stuff way too much. > > > >>>>> > > > >>>>> If we ever unconditionally created a device, we should keep doing > > > >>>>> so. > > > >>>> Yes, that whole thing is horrible, especially interaction with compat > > > >>>> machines. > > > >>>> > > > >>>> Do you have an idea on how to create such a dummy device (without > > > >>>> having to effectively copy a lot of configured-out code)? > > > >>>> > > > >>>> > > > >>> How about in s390_pcihost_hot_plug() we check s390_has_feat(zpci)? > > > >>> If no zpci feature, we avoid plugging any pci device. > > > >>> Then we could always create phb. > > > >>> I think pcibus's vmstate is only data to migrate. > > > >> > > > >> That's still problematic if CONFIG_PCI is off. I currently don't have a > > > >> better idea than either disallowing compat machines on builds without > > > >> pci, or using a dummy device... > > > > > > > > For this particular case your initial patch might be less problematic > > > > than > > > > a dummy device, because the code that does the migration is NOT > > > > contained > > > > in s390 specific code but in common PCI code instead. We would need to > > > > keep > > > > the dummy device always in a way that it will work with the common PCI > > > > code. > > > > > > > > > > Interesting, so how is migration then handled for e.g. x86 or other > > > architectures that can work without CONFIG_PCI? I assume their migration > > > should also break? > > > > It's tied to machine-type; the x86 i440fx and q35 machine types have > > PCI; you can't disable PCI while still having those machine types. > > (I don't know if you can disable PCI at all on x86) > > Ugh, that sounds like we need two machine types on s390x as well > (s390x-ccw-virtio and s390x-ccw-virtio-nopci or so), built > conditionally. That whole zpci detanglement is looking worse and > worse :(
Well fundamentally the migration expects to migrate something into the same shaped hole on the destination; if you've got a lump of PCI config on the source there's got to be somewhere for it to fit on the destination. Now, if PCI is actually pretty rare; then you might be able to make the host-pci bridge a normal device and not include it in any machine type; that way those who want PCI can just instantiate the host-pci bridge, and those who don't want it just stick with the base machine type. Dave -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK