accel/kvm/kvm-all.c | 6 ++-- default-configs/s390x-softmmu.mak | 2 +- hw/pci/pci-stub.c | 13 +++++++ hw/pci/pci.c | 2 ++ hw/s390x/Makefile.objs | 3 +- hw/s390x/s390-pci-bus.c | 4 +-- hw/s390x/s390-pci-bus.h | 4 +-- hw/s390x/s390-pci-stub.c | 74 +++++++++++++++++++++++++++++++++++++++ hw/s390x/s390-virtio-ccw.c | 12 ++++--- hw/s390x/sclp.c | 19 +++++++--- include/hw/pci/pci.h | 2 ++ target/s390x/ioinst.c | 16 +++++++++ target/s390x/kvm.c | 64 +++++++++++++++++++++++++-------- 13 files changed, 189 insertions(+), 32 deletions(-) create mode 100644 hw/s390x/s390-pci-stub.c
Next version, not so many changes from v3. As you might have guessed, the goals are still the same: - Being able to disable PCI support in a build completely. - Properly fencing off PCI if the relevant facility bit is not provided. Changes v3->v4: - introduce pci_available boolean - use pci_available to fence off setting the zcpi facility bit - collected tags Branch is still git://github.com/cohuck/qemu no-zpci-cpumodel Cornelia Huck (9): kvm: remove hard dependency on pci s390x/pci: add stubs s390x: chsc nt2 events are pci-only s390x/pci: do not advertise pci on non-pci builds s390x/ccw: create s390 phb conditionally s390x/sclp: properly guard pci-specific functions s390x/pci: fence off instructions for non-pci s390x/kvm: msi route fixup for non-pci s390x: refine pci dependencies accel/kvm/kvm-all.c | 6 ++-- default-configs/s390x-softmmu.mak | 2 +- hw/pci/pci-stub.c | 13 +++++++ hw/pci/pci.c | 2 ++ hw/s390x/Makefile.objs | 3 +- hw/s390x/s390-pci-bus.c | 4 +-- hw/s390x/s390-pci-bus.h | 4 +-- hw/s390x/s390-pci-stub.c | 74 +++++++++++++++++++++++++++++++++++++++ hw/s390x/s390-virtio-ccw.c | 12 ++++--- hw/s390x/sclp.c | 19 +++++++--- include/hw/pci/pci.h | 2 ++ target/s390x/ioinst.c | 16 +++++++++ target/s390x/kvm.c | 64 +++++++++++++++++++++++++-------- 13 files changed, 189 insertions(+), 32 deletions(-) create mode 100644 hw/s390x/s390-pci-stub.c -- 2.13.3
On Fri, 4 Aug 2017 13:29:37 +0200 Cornelia Huck <cohuck@redhat.com> wrote: > Next version, not so many changes from v3. > > As you might have guessed, the goals are still the same: > - Being able to disable PCI support in a build completely. > - Properly fencing off PCI if the relevant facility bit is not provided. > > Changes v3->v4: > - introduce pci_available boolean > - use pci_available to fence off setting the zcpi facility bit > - collected tags > > Branch is still git://github.com/cohuck/qemu no-zpci-cpumodel make check on a build with pci disabled revealed an interesting inconsistency: We create a virtio-9p-ccw device, but the base virtio-9p-device is in code that is not built for !pci. If I remove the pci dependency for hw/9pfs/ and fsdev/, things look fine (at least on s390x). We probably need a different dependency, though. virtio-9p maintainers, any suggestions?
On Fri, 4 Aug 2017 16:59:34 +0200 Cornelia Huck <cohuck@redhat.com> wrote: > On Fri, 4 Aug 2017 13:29:37 +0200 > Cornelia Huck <cohuck@redhat.com> wrote: > > > Next version, not so many changes from v3. > > > > As you might have guessed, the goals are still the same: > > - Being able to disable PCI support in a build completely. > > - Properly fencing off PCI if the relevant facility bit is not provided. > > > > Changes v3->v4: > > - introduce pci_available boolean > > - use pci_available to fence off setting the zcpi facility bit > > - collected tags > > > > Branch is still git://github.com/cohuck/qemu no-zpci-cpumodel > > make check on a build with pci disabled revealed an interesting > inconsistency: We create a virtio-9p-ccw device, but the base > virtio-9p-device is in code that is not built for !pci. > > If I remove the pci dependency for hw/9pfs/ and fsdev/, things look > fine (at least on s390x). We probably need a different dependency, > though. > > virtio-9p maintainers, any suggestions? I have the patch below, which is ugly, but seems to work for me. Better ideas welcome :) From 0ba6427e7ac7cef38b487d28c9dce653d8cb9a71 Mon Sep 17 00:00:00 2001 From: Cornelia Huck <cohuck@redhat.com> Date: Tue, 8 Aug 2017 11:03:38 +0200 Subject: [PATCH] 9pfs: fix dependencies Nothing in fsdev/ or hw/9pfs/ depends on pci; it should rather depend on CONFIG_VIRTFS and on the presence of an appropriate virtio transport device. Let's introduce CONFIG_VIRTIO_CCW to cover s390x and check for CONFIG_VIRTFS && (CONFIG_VIRTIO_PCI || CONFIG_VIRTIO_CCW). Signed-off-by: Cornelia Huck <cohuck@redhat.com> --- default-configs/s390x-softmmu.mak | 1 + fsdev/Makefile.objs | 9 +++------ hw/Makefile.objs | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/default-configs/s390x-softmmu.mak b/default-configs/s390x-softmmu.mak index 6ab2bc65ac..7f15ab68b1 100644 --- a/default-configs/s390x-softmmu.mak +++ b/default-configs/s390x-softmmu.mak @@ -8,3 +8,4 @@ CONFIG_S390_FLIC=y CONFIG_S390_FLIC_KVM=$(CONFIG_KVM) CONFIG_VFIO_CCW=$(CONFIG_LINUX) CONFIG_WDT_DIAG288=y +CONFIG_VIRTIO_CCW=y diff --git a/fsdev/Makefile.objs b/fsdev/Makefile.objs index 659df6e187..10d8caa291 100644 --- a/fsdev/Makefile.objs +++ b/fsdev/Makefile.objs @@ -1,10 +1,7 @@ -ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) # Lots of the fsdev/9pcode is pulled in by vl.c via qemu_fsdev_add. -# only pull in the actual virtio-9p device if we also enabled virtio. -common-obj-y = qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o -else -common-obj-y = qemu-fsdev-dummy.o -endif +# only pull in the actual virtio-9p device if we also enabled a virtio backend. +common-obj-$(call land, $(CONFIG_VIRTFS),$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)))= qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o +common-obj-$(call lnot, $(call land, $(CONFIG_VIRTFS),$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)))) = qemu-fsdev-dummy.o common-obj-y += qemu-fsdev-opts.o qemu-fsdev-throttle.o # Toplevel always builds this; targets without virtio will put it in diff --git a/hw/Makefile.objs b/hw/Makefile.objs index a2c61f6b09..10942fe0b4 100644 --- a/hw/Makefile.objs +++ b/hw/Makefile.objs @@ -1,4 +1,4 @@ -devices-dirs-$(call land, $(CONFIG_VIRTIO),$(call land,$(CONFIG_VIRTFS),$(CONFIG_PCI))) += 9pfs/ +devices-dirs-$(call land, $(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW))) += 9pfs/ devices-dirs-$(CONFIG_SOFTMMU) += acpi/ devices-dirs-$(CONFIG_SOFTMMU) += adc/ devices-dirs-$(CONFIG_SOFTMMU) += audio/ -- 2.13.4
On 08.08.2017 11:15, Cornelia Huck wrote: > On Fri, 4 Aug 2017 16:59:34 +0200 > Cornelia Huck <cohuck@redhat.com> wrote: > >> On Fri, 4 Aug 2017 13:29:37 +0200 >> Cornelia Huck <cohuck@redhat.com> wrote: >> >>> Next version, not so many changes from v3. >>> >>> As you might have guessed, the goals are still the same: >>> - Being able to disable PCI support in a build completely. >>> - Properly fencing off PCI if the relevant facility bit is not provided. >>> >>> Changes v3->v4: >>> - introduce pci_available boolean >>> - use pci_available to fence off setting the zcpi facility bit >>> - collected tags >>> >>> Branch is still git://github.com/cohuck/qemu no-zpci-cpumodel >> >> make check on a build with pci disabled revealed an interesting >> inconsistency: We create a virtio-9p-ccw device, but the base >> virtio-9p-device is in code that is not built for !pci. >> >> If I remove the pci dependency for hw/9pfs/ and fsdev/, things look >> fine (at least on s390x). We probably need a different dependency, >> though. >> >> virtio-9p maintainers, any suggestions? > > I have the patch below, which is ugly, but seems to work for me. Better > ideas welcome :) I haven't tried whether it works, but you could maybe change the define of CONFIG_VIRTFS instead: diff --git a/configure b/configure index dd73cce..64d21f6 100755 --- a/configure +++ b/configure @@ -5771,7 +5771,7 @@ if test "$libattr" = "yes" ; then echo "CONFIG_LIBATTR=y" >> $config_host_mak fi if test "$virtfs" = "yes" ; then - echo "CONFIG_VIRTFS=y" >> $config_host_mak + echo 'CONFIG_VIRTFS=$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)' >> $config_host_mak fi if test "$vhost_scsi" = "yes" ; then echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak ... I think that should simplify the other statements quite a bit since you then only have to test CONFIG_VIRTFS in the other locations? Thomas > From 0ba6427e7ac7cef38b487d28c9dce653d8cb9a71 Mon Sep 17 00:00:00 2001 > From: Cornelia Huck <cohuck@redhat.com> > Date: Tue, 8 Aug 2017 11:03:38 +0200 > Subject: [PATCH] 9pfs: fix dependencies > > Nothing in fsdev/ or hw/9pfs/ depends on pci; it should rather depend > on CONFIG_VIRTFS and on the presence of an appropriate virtio transport > device. > > Let's introduce CONFIG_VIRTIO_CCW to cover s390x and check for > CONFIG_VIRTFS && (CONFIG_VIRTIO_PCI || CONFIG_VIRTIO_CCW). > > Signed-off-by: Cornelia Huck <cohuck@redhat.com> > --- > default-configs/s390x-softmmu.mak | 1 + > fsdev/Makefile.objs | 9 +++------ > hw/Makefile.objs | 2 +- > 3 files changed, 5 insertions(+), 7 deletions(-) > > diff --git a/default-configs/s390x-softmmu.mak b/default-configs/s390x-softmmu.mak > index 6ab2bc65ac..7f15ab68b1 100644 > --- a/default-configs/s390x-softmmu.mak > +++ b/default-configs/s390x-softmmu.mak > @@ -8,3 +8,4 @@ CONFIG_S390_FLIC=y > CONFIG_S390_FLIC_KVM=$(CONFIG_KVM) > CONFIG_VFIO_CCW=$(CONFIG_LINUX) > CONFIG_WDT_DIAG288=y > +CONFIG_VIRTIO_CCW=y > diff --git a/fsdev/Makefile.objs b/fsdev/Makefile.objs > index 659df6e187..10d8caa291 100644 > --- a/fsdev/Makefile.objs > +++ b/fsdev/Makefile.objs > @@ -1,10 +1,7 @@ > -ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) > # Lots of the fsdev/9pcode is pulled in by vl.c via qemu_fsdev_add. > -# only pull in the actual virtio-9p device if we also enabled virtio. > -common-obj-y = qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o > -else > -common-obj-y = qemu-fsdev-dummy.o > -endif > +# only pull in the actual virtio-9p device if we also enabled a virtio backend. > +common-obj-$(call land, $(CONFIG_VIRTFS),$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)))= qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o > +common-obj-$(call lnot, $(call land, $(CONFIG_VIRTFS),$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)))) = qemu-fsdev-dummy.o > common-obj-y += qemu-fsdev-opts.o qemu-fsdev-throttle.o > > # Toplevel always builds this; targets without virtio will put it in > diff --git a/hw/Makefile.objs b/hw/Makefile.objs > index a2c61f6b09..10942fe0b4 100644 > --- a/hw/Makefile.objs > +++ b/hw/Makefile.objs > @@ -1,4 +1,4 @@ > -devices-dirs-$(call land, $(CONFIG_VIRTIO),$(call land,$(CONFIG_VIRTFS),$(CONFIG_PCI))) += 9pfs/ > +devices-dirs-$(call land, $(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW))) += 9pfs/ > devices-dirs-$(CONFIG_SOFTMMU) += acpi/ > devices-dirs-$(CONFIG_SOFTMMU) += adc/ > devices-dirs-$(CONFIG_SOFTMMU) += audio/ >
On Tue, 8 Aug 2017 11:29:50 +0200 Thomas Huth <thuth@redhat.com> wrote: > On 08.08.2017 11:15, Cornelia Huck wrote: > > On Fri, 4 Aug 2017 16:59:34 +0200 > > Cornelia Huck <cohuck@redhat.com> wrote: > > > >> On Fri, 4 Aug 2017 13:29:37 +0200 > >> Cornelia Huck <cohuck@redhat.com> wrote: > >> > >>> Next version, not so many changes from v3. > >>> > >>> As you might have guessed, the goals are still the same: > >>> - Being able to disable PCI support in a build completely. > >>> - Properly fencing off PCI if the relevant facility bit is not provided. > >>> > >>> Changes v3->v4: > >>> - introduce pci_available boolean > >>> - use pci_available to fence off setting the zcpi facility bit > >>> - collected tags > >>> > >>> Branch is still git://github.com/cohuck/qemu no-zpci-cpumodel > >> > >> make check on a build with pci disabled revealed an interesting > >> inconsistency: We create a virtio-9p-ccw device, but the base > >> virtio-9p-device is in code that is not built for !pci. > >> > >> If I remove the pci dependency for hw/9pfs/ and fsdev/, things look > >> fine (at least on s390x). We probably need a different dependency, > >> though. > >> > >> virtio-9p maintainers, any suggestions? > > > > I have the patch below, which is ugly, but seems to work for me. Better > > ideas welcome :) > > I haven't tried whether it works, but you could maybe change the define > of CONFIG_VIRTFS instead: > > diff --git a/configure b/configure > index dd73cce..64d21f6 100755 > --- a/configure > +++ b/configure > @@ -5771,7 +5771,7 @@ if test "$libattr" = "yes" ; then > echo "CONFIG_LIBATTR=y" >> $config_host_mak > fi > if test "$virtfs" = "yes" ; then > - echo "CONFIG_VIRTFS=y" >> $config_host_mak > + echo 'CONFIG_VIRTFS=$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)' >> $config_host_mak > fi > if test "$vhost_scsi" = "yes" ; then > echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak > > ... I think that should simplify the other statements quite a bit since > you then only have to test CONFIG_VIRTFS in the other locations? > > Thomas Would be a simplification if it worked, yes; not sure whether we should change the semantic of --enable-virtfs to error out if we don't have either virtio-pci or virtio-ccw? > > > > From 0ba6427e7ac7cef38b487d28c9dce653d8cb9a71 Mon Sep 17 00:00:00 2001 > > From: Cornelia Huck <cohuck@redhat.com> > > Date: Tue, 8 Aug 2017 11:03:38 +0200 > > Subject: [PATCH] 9pfs: fix dependencies > > > > Nothing in fsdev/ or hw/9pfs/ depends on pci; it should rather depend > > on CONFIG_VIRTFS and on the presence of an appropriate virtio transport > > device. > > > > Let's introduce CONFIG_VIRTIO_CCW to cover s390x and check for > > CONFIG_VIRTFS && (CONFIG_VIRTIO_PCI || CONFIG_VIRTIO_CCW). > > > > Signed-off-by: Cornelia Huck <cohuck@redhat.com> > > --- > > default-configs/s390x-softmmu.mak | 1 + > > fsdev/Makefile.objs | 9 +++------ > > hw/Makefile.objs | 2 +- > > 3 files changed, 5 insertions(+), 7 deletions(-) > > > > diff --git a/default-configs/s390x-softmmu.mak b/default-configs/s390x-softmmu.mak > > index 6ab2bc65ac..7f15ab68b1 100644 > > --- a/default-configs/s390x-softmmu.mak > > +++ b/default-configs/s390x-softmmu.mak > > @@ -8,3 +8,4 @@ CONFIG_S390_FLIC=y > > CONFIG_S390_FLIC_KVM=$(CONFIG_KVM) > > CONFIG_VFIO_CCW=$(CONFIG_LINUX) > > CONFIG_WDT_DIAG288=y > > +CONFIG_VIRTIO_CCW=y > > diff --git a/fsdev/Makefile.objs b/fsdev/Makefile.objs > > index 659df6e187..10d8caa291 100644 > > --- a/fsdev/Makefile.objs > > +++ b/fsdev/Makefile.objs > > @@ -1,10 +1,7 @@ > > -ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) > > # Lots of the fsdev/9pcode is pulled in by vl.c via qemu_fsdev_add. > > -# only pull in the actual virtio-9p device if we also enabled virtio. > > -common-obj-y = qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o > > -else > > -common-obj-y = qemu-fsdev-dummy.o > > -endif > > +# only pull in the actual virtio-9p device if we also enabled a virtio backend. > > +common-obj-$(call land, $(CONFIG_VIRTFS),$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)))= qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o > > +common-obj-$(call lnot, $(call land, $(CONFIG_VIRTFS),$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)))) = qemu-fsdev-dummy.o > > common-obj-y += qemu-fsdev-opts.o qemu-fsdev-throttle.o > > > > # Toplevel always builds this; targets without virtio will put it in > > diff --git a/hw/Makefile.objs b/hw/Makefile.objs > > index a2c61f6b09..10942fe0b4 100644 > > --- a/hw/Makefile.objs > > +++ b/hw/Makefile.objs > > @@ -1,4 +1,4 @@ > > -devices-dirs-$(call land, $(CONFIG_VIRTIO),$(call land,$(CONFIG_VIRTFS),$(CONFIG_PCI))) += 9pfs/ > > +devices-dirs-$(call land, $(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW))) += 9pfs/ > > devices-dirs-$(CONFIG_SOFTMMU) += acpi/ > > devices-dirs-$(CONFIG_SOFTMMU) += adc/ > > devices-dirs-$(CONFIG_SOFTMMU) += audio/ > > >
On 08.08.2017 11:46, Cornelia Huck wrote: > On Tue, 8 Aug 2017 11:29:50 +0200 > Thomas Huth <thuth@redhat.com> wrote: > >> On 08.08.2017 11:15, Cornelia Huck wrote: >>> On Fri, 4 Aug 2017 16:59:34 +0200 >>> Cornelia Huck <cohuck@redhat.com> wrote: >>> >>>> On Fri, 4 Aug 2017 13:29:37 +0200 >>>> Cornelia Huck <cohuck@redhat.com> wrote: >>>> >>>>> Next version, not so many changes from v3. >>>>> >>>>> As you might have guessed, the goals are still the same: >>>>> - Being able to disable PCI support in a build completely. >>>>> - Properly fencing off PCI if the relevant facility bit is not provided. >>>>> >>>>> Changes v3->v4: >>>>> - introduce pci_available boolean >>>>> - use pci_available to fence off setting the zcpi facility bit >>>>> - collected tags >>>>> >>>>> Branch is still git://github.com/cohuck/qemu no-zpci-cpumodel >>>> >>>> make check on a build with pci disabled revealed an interesting >>>> inconsistency: We create a virtio-9p-ccw device, but the base >>>> virtio-9p-device is in code that is not built for !pci. >>>> >>>> If I remove the pci dependency for hw/9pfs/ and fsdev/, things look >>>> fine (at least on s390x). We probably need a different dependency, >>>> though. >>>> >>>> virtio-9p maintainers, any suggestions? >>> >>> I have the patch below, which is ugly, but seems to work for me. Better >>> ideas welcome :) >> >> I haven't tried whether it works, but you could maybe change the define >> of CONFIG_VIRTFS instead: >> >> diff --git a/configure b/configure >> index dd73cce..64d21f6 100755 >> --- a/configure >> +++ b/configure >> @@ -5771,7 +5771,7 @@ if test "$libattr" = "yes" ; then >> echo "CONFIG_LIBATTR=y" >> $config_host_mak >> fi >> if test "$virtfs" = "yes" ; then >> - echo "CONFIG_VIRTFS=y" >> $config_host_mak >> + echo 'CONFIG_VIRTFS=$(call lor, $(CONFIG_VIRTIO_PCI),$(CONFIG_VIRTIO_CCW)' >> $config_host_mak >> fi >> if test "$vhost_scsi" = "yes" ; then >> echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak >> >> ... I think that should simplify the other statements quite a bit since >> you then only have to test CONFIG_VIRTFS in the other locations? >> >> Thomas > > Would be a simplification if it worked, yes; not sure whether we should > change the semantic of --enable-virtfs to error out if we don't have > either virtio-pci or virtio-ccw? I don't think that this would work: configure is run once for all targets, but the CONFIG_PCI and CONFIG_CCW settings are only valid for individual targets, so you can not use the value of these config variables during "configure" yet. Thomas
© 2016 - 2024 Red Hat, Inc.