On 22.01.19 14:13, Cornelia Huck wrote: > On Tue, 22 Jan 2019 11:06:46 +0100 > David Hildenbrand <[email protected]> wrote: > >> On 22.01.19 10:50, Thomas Huth wrote: >>> On 2019-01-22 10:41, David Hildenbrand wrote: >>>> We decided to always create the PCI host bridge, even if 'zpci' is not >>>> enabled (due to migration compatibility). >>> >>> Couldn't we disable the host bridge for newer machine types, and just >>> create it on the old ones for migration compatibility? > > I very dimly remember some problems with that approach. > >> >> I think we can with a compat property. However I somewhat dislike that >> the error/warning will then be "no bus" vs. "zpci CPU feature not >> enabled". Somebody who has no idea about that will think he somehow has >> to create a PCI bus on the QEMU comandline. > > Agreed, "zpci cpu feature not enabled" gives a much better clue. > >> >> ... however >> >>> >>>> This however right now allows >>>> to add zPCI/PCI devices to a VM although the guest will never actually see >>>> them, confusing people that are using a simple CPU model that has no >>>> 'zpci' enabled - "Why isn't this working" (David Hildenbrand) >>>> >>>> Let's check for 'zpci' and at least print a warning that this will not >>>> work as expected. We could also bail out, however that might break >>>> existing QEMU commandlines. >>>> >>>> Signed-off-by: David Hildenbrand <[email protected]> >>>> --- >>>> hw/s390x/s390-pci-bus.c | 5 +++++ >>>> 1 file changed, 5 insertions(+) >>>> >>>> diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c >>>> index b86a8bdcd4..e7d4f49611 100644 >>>> --- a/hw/s390x/s390-pci-bus.c >>>> +++ b/hw/s390x/s390-pci-bus.c >>>> @@ -863,6 +863,11 @@ static void s390_pcihost_pre_plug(HotplugHandler >>>> *hotplug_dev, DeviceState *dev, >>>> { >>>> S390pciState *s = S390_PCI_HOST_BRIDGE(hotplug_dev); >>>> >>>> + if (!s390_has_feat(S390_FEAT_ZPCI)) { >>>> + warn_report("Adding PCI or zPCI devices without the 'zpci' CPU >>>> feature." >>>> + " The guest will not be able to see/use these >>>> devices."); >>>> + } >>> >>> I think it would be better to bail out. The hotplug clearly can not work >>> in this case, and the warn report might go unnoticed, so blocking the >>> hotplug process is likely better to get the attention of the user. >> >> ... we could also create the bus but bail out here in case the compat >> property strikes (a.k.a. new QEMO machine type). > > Now you confused me... why should failing be based on a compat property? >
Otherwise, a QEMU comandline that used to work (which could be created by libvirt) would now fail. Are we ok with that? -- Thanks, David / dhildenb
