On Wed, 23 Dec 2020 09:55:58 +0100 Paolo Bonzini <pbonz...@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 <gr...@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 <pbonz...@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 > > > > >