hw/9pfs/Makefile.objs uses CONFIG_VIRTIO_9P to guard the definition for
FileOperations structs, while fsdev/Makefile.objs uses CONFIG_VIRTIO
to guard the use.  Mismatch causes linking to fail when CONFIG_VIRTIO
is set but CONFIG_VIRTIO_9P is not.
Fix it and use if/else to clarify that the two lines are for opposite
conditions.
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Fixes: b5dfdb082fc350f3e68dfa61dc988d97cad28cfe
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 fsdev/Makefile.objs | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/fsdev/Makefile.objs b/fsdev/Makefile.objs
index fb38017c0b..24bbb3e75c 100644
--- a/fsdev/Makefile.objs
+++ b/fsdev/Makefile.objs
@@ -1,7 +1,10 @@
 # Lots of the fsdev/9pcode is pulled in by vl.c via qemu_fsdev_add.
 # only pull in the actual 9p backend if we also enabled virtio or xen.
-common-obj-$(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO),$(CONFIG_XEN))) = qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o
-common-obj-$(call lnot,$(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO),$(CONFIG_XEN)))) = qemu-fsdev-dummy.o
+ifeq ($(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO_9P),$(CONFIG_XEN))),y)
+common-obj-y = qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o
+else
+common-obj-y = qemu-fsdev-dummy.o
+endif
 common-obj-y += qemu-fsdev-opts.o qemu-fsdev-throttle.o
 
 # Toplevel always builds this; targets without virtio will put it in
-- 
2.17.1
                
            On 2 July 2018 at 17:31, Paolo Bonzini <pbonzini@redhat.com> wrote: > hw/9pfs/Makefile.objs uses CONFIG_VIRTIO_9P to guard the definition for > FileOperations structs, while fsdev/Makefile.objs uses CONFIG_VIRTIO > to guard the use. Mismatch causes linking to fail when CONFIG_VIRTIO > is set but CONFIG_VIRTIO_9P is not. > > Fix it and use if/else to clarify that the two lines are for opposite > conditions. > > Reported-by: Peter Maydell <peter.maydell@linaro.org> > Fixes: b5dfdb082fc350f3e68dfa61dc988d97cad28cfe > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > fsdev/Makefile.objs | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) Reviewed-by: Peter Maydell <peter.maydell@linaro.org> I've also just noticed that hw/Makefile.objs guards the use of the hw/9pfs directory with devices-dirs-$(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO),$(CONFIG_XEN))) += 9pfs/ so after b5dfdb082fc we're now somewhat redundantly guarding the object files with both this check and with the new one inside hw/9pfs/Makefile.objs. Maybe we should make the hw/Makefile.objs guard use CONFIG_VIRTIO_9P where it currently has CONFIG_VIRTIO and then drop the ifeq in hw/9pfs/Makefile.objs ? thanks -- PMM
On 02/07/2018 18:56, Peter Maydell wrote: > On 2 July 2018 at 17:31, Paolo Bonzini <pbonzini@redhat.com> wrote: >> hw/9pfs/Makefile.objs uses CONFIG_VIRTIO_9P to guard the definition for >> FileOperations structs, while fsdev/Makefile.objs uses CONFIG_VIRTIO >> to guard the use. Mismatch causes linking to fail when CONFIG_VIRTIO >> is set but CONFIG_VIRTIO_9P is not. >> >> Fix it and use if/else to clarify that the two lines are for opposite >> conditions. >> >> Reported-by: Peter Maydell <peter.maydell@linaro.org> >> Fixes: b5dfdb082fc350f3e68dfa61dc988d97cad28cfe >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> --- >> fsdev/Makefile.objs | 7 +++++-- >> 1 file changed, 5 insertions(+), 2 deletions(-) > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > > I've also just noticed that hw/Makefile.objs guards the use > of the hw/9pfs directory with > devices-dirs-$(call land,$(CONFIG_VIRTFS),$(call > lor,$(CONFIG_VIRTIO),$(CONFIG_XEN))) += 9pfs/ > > so after b5dfdb082fc we're now somewhat redundantly guarding > the object files with both this check and with the new one > inside hw/9pfs/Makefile.objs. Maybe we should make the > hw/Makefile.objs guard use CONFIG_VIRTIO_9P where it > currently has CONFIG_VIRTIO and then drop the ifeq in > hw/9pfs/Makefile.objs ? Yes, that makes sense. Paolo
On Mon, 2 Jul 2018 18:31:25 +0200 Paolo Bonzini <pbonzini@redhat.com> wrote: > hw/9pfs/Makefile.objs uses CONFIG_VIRTIO_9P to guard the definition for > FileOperations structs, while fsdev/Makefile.objs uses CONFIG_VIRTIO > to guard the use. Mismatch causes linking to fail when CONFIG_VIRTIO > is set but CONFIG_VIRTIO_9P is not. > > Fix it and use if/else to clarify that the two lines are for opposite > conditions. > > Reported-by: Peter Maydell <peter.maydell@linaro.org> > Fixes: b5dfdb082fc350f3e68dfa61dc988d97cad28cfe > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- Acked-by: Greg Kurz <groug@kaod.org> Tested-by: Greg Kurz <groug@kaod.org> Peter, I see this patch is needed for the latest RISC-V pull req. Will you apply it to master directly or should it go through my tree and I send you a pull req ASAP ? > fsdev/Makefile.objs | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/fsdev/Makefile.objs b/fsdev/Makefile.objs > index fb38017c0b..24bbb3e75c 100644 > --- a/fsdev/Makefile.objs > +++ b/fsdev/Makefile.objs > @@ -1,7 +1,10 @@ > # Lots of the fsdev/9pcode is pulled in by vl.c via qemu_fsdev_add. > # only pull in the actual 9p backend if we also enabled virtio or xen. > -common-obj-$(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO),$(CONFIG_XEN))) = qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o > -common-obj-$(call lnot,$(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO),$(CONFIG_XEN)))) = qemu-fsdev-dummy.o > +ifeq ($(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO_9P),$(CONFIG_XEN))),y) > +common-obj-y = qemu-fsdev.o 9p-marshal.o 9p-iov-marshal.o > +else > +common-obj-y = qemu-fsdev-dummy.o > +endif > common-obj-y += qemu-fsdev-opts.o qemu-fsdev-throttle.o > > # Toplevel always builds this; targets without virtio will put it in
On 3 July 2018 at 09:00, Greg Kurz <groug@kaod.org> wrote: > On Mon, 2 Jul 2018 18:31:25 +0200 > Paolo Bonzini <pbonzini@redhat.com> wrote: > >> hw/9pfs/Makefile.objs uses CONFIG_VIRTIO_9P to guard the definition for >> FileOperations structs, while fsdev/Makefile.objs uses CONFIG_VIRTIO >> to guard the use. Mismatch causes linking to fail when CONFIG_VIRTIO >> is set but CONFIG_VIRTIO_9P is not. >> >> Fix it and use if/else to clarify that the two lines are for opposite >> conditions. >> >> Reported-by: Peter Maydell <peter.maydell@linaro.org> >> Fixes: b5dfdb082fc350f3e68dfa61dc988d97cad28cfe >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> --- > > Acked-by: Greg Kurz <groug@kaod.org> > Tested-by: Greg Kurz <groug@kaod.org> > > Peter, > > I see this patch is needed for the latest RISC-V pull req. It isn't, because that pullreq only fails because of what looks to me like a rebase mismerge that made it change how the riscv default-configs enable virtio. The riscv pullreq should be fixed. This is just a cleanup, really. thanks -- PMM
On Tue, 3 Jul 2018 09:46:01 +0100 Peter Maydell <peter.maydell@linaro.org> wrote: > On 3 July 2018 at 09:00, Greg Kurz <groug@kaod.org> wrote: > > On Mon, 2 Jul 2018 18:31:25 +0200 > > Paolo Bonzini <pbonzini@redhat.com> wrote: > > > >> hw/9pfs/Makefile.objs uses CONFIG_VIRTIO_9P to guard the definition for > >> FileOperations structs, while fsdev/Makefile.objs uses CONFIG_VIRTIO > >> to guard the use. Mismatch causes linking to fail when CONFIG_VIRTIO > >> is set but CONFIG_VIRTIO_9P is not. > >> > >> Fix it and use if/else to clarify that the two lines are for opposite > >> conditions. > >> > >> Reported-by: Peter Maydell <peter.maydell@linaro.org> > >> Fixes: b5dfdb082fc350f3e68dfa61dc988d97cad28cfe > >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > >> --- > > > > Acked-by: Greg Kurz <groug@kaod.org> > > Tested-by: Greg Kurz <groug@kaod.org> > > > > Peter, > > > > I see this patch is needed for the latest RISC-V pull req. > > It isn't, because that pullreq only fails because of what > looks to me like a rebase mismerge that made it change how > the riscv default-configs enable virtio. The riscv pullreq > should be fixed. This is just a cleanup, really. > Ok, thanks for the clarification. I've applied this to 9p-next. > thanks > -- PMM
© 2016 - 2025 Red Hat, Inc.