[PATCH 07/10] pseries: do not require CONFIG_USB

Paolo Bonzini posted 10 patches 9 months ago
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, Richard Henderson <richard.henderson@linaro.org>, Helge Deller <deller@gmx.de>, "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <anisinha@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang <jiaxun.yang@flygoat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, BALATON Zoltan <balaton@eik.bme.hu>, Nicholas Piggin <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, "Cédric Le Goater" <clg@kaod.org>, David Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora <harshpb@linux.ibm.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Gerd Hoffmann <kraxel@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>
[PATCH 07/10] pseries: do not require CONFIG_USB
Posted by Paolo Bonzini 9 months ago
With --without-default-devices it is possible to build a binary that
does not include any USB host controller and therefore that does not
include the code guarded by CONFIG_USB.  While the simpler creation
functions such as usb_create_simple can be inlined, this is not true
of usb_bus_find().  Remove it, replacing it with a search of the single
USB bus on the machine.

Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/ppc/spapr.c | 7 +++----
 hw/ppc/Kconfig | 1 +
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 0d72d286d80..44d339982da 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3024,10 +3024,9 @@ static void spapr_machine_init(MachineState *machine)
         }
 
         if (has_vga) {
-            USBBus *usb_bus = usb_bus_find(-1);
-
-            usb_create_simple(usb_bus, "usb-kbd");
-            usb_create_simple(usb_bus, "usb-mouse");
+            Object *usb_bus = object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort);
+            usb_create_simple(USB_BUS(usb_bus), "usb-kbd");
+            usb_create_simple(USB_BUS(usb_bus), "usb-mouse");
         }
     }
 
diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig
index 9841c2c9690..d497fa2b825 100644
--- a/hw/ppc/Kconfig
+++ b/hw/ppc/Kconfig
@@ -1,5 +1,6 @@
 config PSERIES
     bool
+    imply USB_OHCI_PCI
     imply PCI_DEVICES
     imply TEST_DEVICES
     imply VIRTIO_VGA
-- 
2.43.0


Re: [PATCH 07/10] pseries: do not require CONFIG_USB
Posted by Philippe Mathieu-Daudé 9 months ago
On 23/2/24 13:44, Paolo Bonzini wrote:
> With --without-default-devices it is possible to build a binary that
> does not include any USB host controller and therefore that does not
> include the code guarded by CONFIG_USB.  While the simpler creation
> functions such as usb_create_simple can be inlined, this is not true
> of usb_bus_find().  Remove it, replacing it with a search of the single
> USB bus on the machine.
> 
> Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   hw/ppc/spapr.c | 7 +++----
>   hw/ppc/Kconfig | 1 +
>   2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 0d72d286d80..44d339982da 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3024,10 +3024,9 @@ static void spapr_machine_init(MachineState *machine)
>           }
>   
>           if (has_vga) {

Pre-existing, don't we want defaults_enabled() instead of has_vga here?

> -            USBBus *usb_bus = usb_bus_find(-1);
> -
> -            usb_create_simple(usb_bus, "usb-kbd");
> -            usb_create_simple(usb_bus, "usb-mouse");
> +            Object *usb_bus = object_resolve_type_unambiguous(TYPE_USB_BUS, &error_abort);
> +            usb_create_simple(USB_BUS(usb_bus), "usb-kbd");
> +            usb_create_simple(USB_BUS(usb_bus), "usb-mouse");
>           }
>       }
>   
> diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig
> index 9841c2c9690..d497fa2b825 100644
> --- a/hw/ppc/Kconfig
> +++ b/hw/ppc/Kconfig
> @@ -1,5 +1,6 @@
>   config PSERIES
>       bool
> +    imply USB_OHCI_PCI
>       imply PCI_DEVICES
>       imply TEST_DEVICES
>       imply VIRTIO_VGA

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>


Re: [PATCH 07/10] pseries: do not require CONFIG_USB
Posted by Paolo Bonzini 9 months ago
On Fri, Feb 23, 2024 at 6:33 PM Philippe Mathieu-Daudé
<philmd@linaro.org> wrote:
>
> On 23/2/24 13:44, Paolo Bonzini wrote:
> > With --without-default-devices it is possible to build a binary that
> > does not include any USB host controller and therefore that does not
> > include the code guarded by CONFIG_USB.  While the simpler creation
> > functions such as usb_create_simple can be inlined, this is not true
> > of usb_bus_find().  Remove it, replacing it with a search of the single
> > USB bus on the machine.
> >
> > Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> > ---
> >   hw/ppc/spapr.c | 7 +++----
> >   hw/ppc/Kconfig | 1 +
> >   2 files changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index 0d72d286d80..44d339982da 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -3024,10 +3024,9 @@ static void spapr_machine_init(MachineState *machine)
> >           }
> >
> >           if (has_vga) {
>
> Pre-existing, don't we want defaults_enabled() instead of has_vga here?

Yeah, but I am not sure it can be changed since pseries machine types
are versioned.

Paolo