Message ID | 160871104474.106117.16441172468969132477.stgit@bahia.lan |
---|---|
State | New |
Headers | show |
Series | ppc: Fix build with --without-default-devices | expand |
On 23/12/20 09:10, Greg Kurz wrote: > Linking of the qemu-system-ppc64 fails on a POWER9 host when > --without-default-devices is passed to configure: > > $ ./configure --without-default-devices \ > --target-list=ppc64-softmmu && make > > ... > > libqemu-ppc64-softmmu.fa.p/hw_ppc_e500.c.o: In function `ppce500_init_mpic_kvm': > /home/greg/Work/qemu/qemu-ppc/build/../hw/ppc/e500.c:777: undefined reference to `kvm_openpic_connect_vcpu' > libqemu-ppc64-softmmu.fa.p/hw_ppc_spapr_irq.c.o: In function `spapr_irq_check': > /home/greg/Work/qemu/qemu-ppc/build/../hw/ppc/spapr_irq.c:189: undefined reference to `xics_kvm_has_broken_disconnect' > libqemu-ppc64-softmmu.fa.p/hw_intc_spapr_xive.c.o: In function `spapr_xive_post_load': > /home/greg/Work/qemu/qemu-ppc/build/../hw/intc/spapr_xive.c:530: undefined reference to `kvmppc_xive_post_load' > > ... and tons of other symbols belonging to the KVM backend of the > openpic, XICS and XIVE interrupt controllers. > > It turns out that OPENPIC_KVM, XICS_KVM and XIVE_KVM are marked > to depend on KVM but this has no effect when minikconf runs in > allnoconfig mode. The correct way to express that some configuration > A requires some other configuration B to be true is "A select B". > > Have OPENPIC, XICS and XIVE to select their KVM counterpart if KVM > is set. While here, fix POWERNV to select XIVE and XICS, just like > PSERIES, and drop the now useless XIVE related config clauses from > hw/ppc/Kconfig. > > This went unnoticed so far because CI doesn't test the build with > --without-default-devices and KVM enabled on a POWER host. > > Signed-off-by: Greg Kurz <groug@kaod.org> It is also possible to remove the *_KVM symbols and just use when: ['CONFIG_KVM', 'CONFIG_OPENPIC'] when: ['CONFIG_XICS', 'CONFIG_OPENPIC'] when: ['CONFIG_XIVE', 'CONFIG_OPENPIC'] in the meson.build files. Which one is preferrable depends on personal taste, and I do not myself lean in one direction or the other---I mention it just in case _you_ find that one preferrable. Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Thanks! Paolo > --- > hw/intc/Kconfig | 18 +++++++++++++----- > hw/ppc/Kconfig | 17 ++--------------- > 2 files changed, 15 insertions(+), 20 deletions(-) > > diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig > index 468d548ca771..0a5c080c4f5c 100644 > --- a/hw/intc/Kconfig > +++ b/hw/intc/Kconfig > @@ -19,6 +19,7 @@ config ARM_GIC > config OPENPIC > bool > select MSI_NONBROKEN > + select OPENPIC_KVM if KVM > > config APIC > bool > @@ -32,21 +33,28 @@ config ARM_GIC_KVM > > config OPENPIC_KVM > bool > - default y > - depends on OPENPIC && KVM > > config XICS > bool > - depends on POWERNV || PSERIES > + select XICS_KVM if KVM > > config XICS_SPAPR > bool > select XICS > > +config XIVE > + bool > + select XIVE_KVM if KVM > + > +config XIVE_SPAPR > + bool > + select XIVE > + > config XICS_KVM > bool > - default y > - depends on XICS && KVM > + > +config XIVE_KVM > + bool > > config ALLWINNER_A10_PIC > bool > diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig > index 982d55f5875c..037d9332e994 100644 > --- a/hw/ppc/Kconfig > +++ b/hw/ppc/Kconfig > @@ -31,6 +31,8 @@ config POWERNV > select FDT_PPC > select PCI_EXPRESS > select MSI_NONBROKEN > + select XIVE > + select XICS > > config PPC405 > bool > @@ -129,21 +131,6 @@ config VIRTEX > select XILINX_ETHLITE > select FDT_PPC > > -config XIVE > - bool > - depends on POWERNV || PSERIES > - > -config XIVE_SPAPR > - bool > - default y > - depends on PSERIES > - select XIVE > - > -config XIVE_KVM > - bool > - default y > - depends on XIVE_SPAPR && KVM > - > # Only used by 64-bit targets > config FW_CFG_PPC > bool > >
On Wed, 23 Dec 2020 09:55:58 +0100 Paolo Bonzini <pbonzini@redhat.com> wrote: > On 23/12/20 09:10, Greg Kurz wrote: > > Linking of the qemu-system-ppc64 fails on a POWER9 host when > > --without-default-devices is passed to configure: > > > > $ ./configure --without-default-devices \ > > --target-list=ppc64-softmmu && make > > > > ... > > > > libqemu-ppc64-softmmu.fa.p/hw_ppc_e500.c.o: In function `ppce500_init_mpic_kvm': > > /home/greg/Work/qemu/qemu-ppc/build/../hw/ppc/e500.c:777: undefined reference to `kvm_openpic_connect_vcpu' > > libqemu-ppc64-softmmu.fa.p/hw_ppc_spapr_irq.c.o: In function `spapr_irq_check': > > /home/greg/Work/qemu/qemu-ppc/build/../hw/ppc/spapr_irq.c:189: undefined reference to `xics_kvm_has_broken_disconnect' > > libqemu-ppc64-softmmu.fa.p/hw_intc_spapr_xive.c.o: In function `spapr_xive_post_load': > > /home/greg/Work/qemu/qemu-ppc/build/../hw/intc/spapr_xive.c:530: undefined reference to `kvmppc_xive_post_load' > > > > ... and tons of other symbols belonging to the KVM backend of the > > openpic, XICS and XIVE interrupt controllers. > > > > It turns out that OPENPIC_KVM, XICS_KVM and XIVE_KVM are marked > > to depend on KVM but this has no effect when minikconf runs in > > allnoconfig mode. The correct way to express that some configuration > > A requires some other configuration B to be true is "A select B". > > > > Have OPENPIC, XICS and XIVE to select their KVM counterpart if KVM > > is set. While here, fix POWERNV to select XIVE and XICS, just like > > PSERIES, and drop the now useless XIVE related config clauses from > > hw/ppc/Kconfig. > > > > This went unnoticed so far because CI doesn't test the build with > > --without-default-devices and KVM enabled on a POWER host. > > > > Signed-off-by: Greg Kurz <groug@kaod.org> > > It is also possible to remove the *_KVM symbols and just use > > when: ['CONFIG_KVM', 'CONFIG_OPENPIC'] > when: ['CONFIG_XICS', 'CONFIG_OPENPIC'] > when: ['CONFIG_XIVE', 'CONFIG_OPENPIC'] > Good idea. I'll go for that. And it seems more fixing is need around --without-default-devices so I'll need to repost anyway, Thanks for the suggestion ! > in the meson.build files. Which one is preferrable depends on personal > taste, and I do not myself lean in one direction or the other---I > mention it just in case _you_ find that one preferrable. > > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> > > Thanks! > > Paolo > > > --- > > hw/intc/Kconfig | 18 +++++++++++++----- > > hw/ppc/Kconfig | 17 ++--------------- > > 2 files changed, 15 insertions(+), 20 deletions(-) > > > > diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig > > index 468d548ca771..0a5c080c4f5c 100644 > > --- a/hw/intc/Kconfig > > +++ b/hw/intc/Kconfig > > @@ -19,6 +19,7 @@ config ARM_GIC > > config OPENPIC > > bool > > select MSI_NONBROKEN > > + select OPENPIC_KVM if KVM > > > > config APIC > > bool > > @@ -32,21 +33,28 @@ config ARM_GIC_KVM > > > > config OPENPIC_KVM > > bool > > - default y > > - depends on OPENPIC && KVM > > > > config XICS > > bool > > - depends on POWERNV || PSERIES > > + select XICS_KVM if KVM > > > > config XICS_SPAPR > > bool > > select XICS > > > > +config XIVE > > + bool > > + select XIVE_KVM if KVM > > + > > +config XIVE_SPAPR > > + bool > > + select XIVE > > + > > config XICS_KVM > > bool > > - default y > > - depends on XICS && KVM > > + > > +config XIVE_KVM > > + bool > > > > config ALLWINNER_A10_PIC > > bool > > diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig > > index 982d55f5875c..037d9332e994 100644 > > --- a/hw/ppc/Kconfig > > +++ b/hw/ppc/Kconfig > > @@ -31,6 +31,8 @@ config POWERNV > > select FDT_PPC > > select PCI_EXPRESS > > select MSI_NONBROKEN > > + select XIVE > > + select XICS > > > > config PPC405 > > bool > > @@ -129,21 +131,6 @@ config VIRTEX > > select XILINX_ETHLITE > > select FDT_PPC > > > > -config XIVE > > - bool > > - depends on POWERNV || PSERIES > > - > > -config XIVE_SPAPR > > - bool > > - default y > > - depends on PSERIES > > - select XIVE > > - > > -config XIVE_KVM > > - bool > > - default y > > - depends on XIVE_SPAPR && KVM > > - > > # Only used by 64-bit targets > > config FW_CFG_PPC > > bool > > > > >
diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig index 468d548ca771..0a5c080c4f5c 100644 --- a/hw/intc/Kconfig +++ b/hw/intc/Kconfig @@ -19,6 +19,7 @@ config ARM_GIC config OPENPIC bool select MSI_NONBROKEN + select OPENPIC_KVM if KVM config APIC bool @@ -32,21 +33,28 @@ config ARM_GIC_KVM config OPENPIC_KVM bool - default y - depends on OPENPIC && KVM config XICS bool - depends on POWERNV || PSERIES + select XICS_KVM if KVM config XICS_SPAPR bool select XICS +config XIVE + bool + select XIVE_KVM if KVM + +config XIVE_SPAPR + bool + select XIVE + config XICS_KVM bool - default y - depends on XICS && KVM + +config XIVE_KVM + bool config ALLWINNER_A10_PIC bool diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index 982d55f5875c..037d9332e994 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -31,6 +31,8 @@ config POWERNV select FDT_PPC select PCI_EXPRESS select MSI_NONBROKEN + select XIVE + select XICS config PPC405 bool @@ -129,21 +131,6 @@ config VIRTEX select XILINX_ETHLITE select FDT_PPC -config XIVE - bool - depends on POWERNV || PSERIES - -config XIVE_SPAPR - bool - default y - depends on PSERIES - select XIVE - -config XIVE_KVM - bool - default y - depends on XIVE_SPAPR && KVM - # Only used by 64-bit targets config FW_CFG_PPC bool
Linking of the qemu-system-ppc64 fails on a POWER9 host when --without-default-devices is passed to configure: $ ./configure --without-default-devices \ --target-list=ppc64-softmmu && make ... libqemu-ppc64-softmmu.fa.p/hw_ppc_e500.c.o: In function `ppce500_init_mpic_kvm': /home/greg/Work/qemu/qemu-ppc/build/../hw/ppc/e500.c:777: undefined reference to `kvm_openpic_connect_vcpu' libqemu-ppc64-softmmu.fa.p/hw_ppc_spapr_irq.c.o: In function `spapr_irq_check': /home/greg/Work/qemu/qemu-ppc/build/../hw/ppc/spapr_irq.c:189: undefined reference to `xics_kvm_has_broken_disconnect' libqemu-ppc64-softmmu.fa.p/hw_intc_spapr_xive.c.o: In function `spapr_xive_post_load': /home/greg/Work/qemu/qemu-ppc/build/../hw/intc/spapr_xive.c:530: undefined reference to `kvmppc_xive_post_load' ... and tons of other symbols belonging to the KVM backend of the openpic, XICS and XIVE interrupt controllers. It turns out that OPENPIC_KVM, XICS_KVM and XIVE_KVM are marked to depend on KVM but this has no effect when minikconf runs in allnoconfig mode. The correct way to express that some configuration A requires some other configuration B to be true is "A select B". Have OPENPIC, XICS and XIVE to select their KVM counterpart if KVM is set. While here, fix POWERNV to select XIVE and XICS, just like PSERIES, and drop the now useless XIVE related config clauses from hw/ppc/Kconfig. This went unnoticed so far because CI doesn't test the build with --without-default-devices and KVM enabled on a POWER host. Signed-off-by: Greg Kurz <groug@kaod.org> --- hw/intc/Kconfig | 18 +++++++++++++----- hw/ppc/Kconfig | 17 ++--------------- 2 files changed, 15 insertions(+), 20 deletions(-)