* [PATCH] ppc: Fix build with --without-default-devices
@ 2020-12-23 8:10 Greg Kurz
2020-12-23 8:55 ` Paolo Bonzini
0 siblings, 1 reply; 3+ messages in thread
From: Greg Kurz @ 2020-12-23 8:10 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, qemu-ppc, Cédric Le Goater, David Gibson
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(-)
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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] ppc: Fix build with --without-default-devices
2020-12-23 8:10 [PATCH] ppc: Fix build with --without-default-devices Greg Kurz
@ 2020-12-23 8:55 ` Paolo Bonzini
2020-12-23 11:54 ` Greg Kurz
0 siblings, 1 reply; 3+ messages in thread
From: Paolo Bonzini @ 2020-12-23 8:55 UTC (permalink / raw)
To: Greg Kurz, qemu-devel; +Cc: qemu-ppc, Cédric Le Goater, David Gibson
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
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] ppc: Fix build with --without-default-devices
2020-12-23 8:55 ` Paolo Bonzini
@ 2020-12-23 11:54 ` Greg Kurz
0 siblings, 0 replies; 3+ messages in thread
From: Greg Kurz @ 2020-12-23 11:54 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: Cédric Le Goater, qemu-ppc, qemu-devel, David Gibson
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
> >
> >
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-12-23 11:55 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-23 8:10 [PATCH] ppc: Fix build with --without-default-devices Greg Kurz
2020-12-23 8:55 ` Paolo Bonzini
2020-12-23 11:54 ` Greg Kurz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.