diff mbox series

[1/4] m68k: add the virtio devices aliases

Message ID 20210318223907.1344870-2-laurent@vivier.eu (mailing list archive)
State New, archived
Headers show
Series iotests: fix failures with non-PCI machines | expand

Commit Message

Laurent Vivier March 18, 2021, 10:39 p.m. UTC
Similarly to 5f629d943cb0 ("s390x: fix s390 virtio aliases"),
define the virtio aliases.

This allows to start machines with virtio devices without
knowledge of the implementation type.

For instance, we can use "-device virtio-scsi" on
m68k, s390x or PC, and the device will be
"virtio-scsi-device", "virtio-scsi-ccw" or "virtio-scsi-pci".

This already exists for s390x and -ccw interfaces, adds them
for m68k and MMIO (-device) interfaces.

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 softmmu/qdev-monitor.c | 46 +++++++++++++++++++++++++++---------------
 1 file changed, 30 insertions(+), 16 deletions(-)

Comments

Philippe Mathieu-Daudé March 18, 2021, 10:51 p.m. UTC | #1
On 3/18/21 11:39 PM, Laurent Vivier wrote:
> Similarly to 5f629d943cb0 ("s390x: fix s390 virtio aliases"),
> define the virtio aliases.
> 
> This allows to start machines with virtio devices without
> knowledge of the implementation type.
> 
> For instance, we can use "-device virtio-scsi" on
> m68k, s390x or PC, and the device will be

+"respectively"

> "virtio-scsi-device", "virtio-scsi-ccw" or "virtio-scsi-pci".
> 
> This already exists for s390x and -ccw interfaces, adds them

"add"?

> for m68k and MMIO (-device) interfaces.
> 
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
>  softmmu/qdev-monitor.c | 46 +++++++++++++++++++++++++++---------------
>  1 file changed, 30 insertions(+), 16 deletions(-)
> 
> diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c
> index 8dc656becca9..262d38b8c01e 100644
> --- a/softmmu/qdev-monitor.c
> +++ b/softmmu/qdev-monitor.c
> @@ -42,6 +42,8 @@
>  #include "hw/qdev-properties.h"
>  #include "hw/clock.h"
>  
> +#define QEMU_ARCH_NO_PCI (QEMU_ARCH_S390X | QEMU_ARCH_M68K)
> +
>  /*
>   * Aliases were a bad idea from the start.  Let's keep them
>   * from spreading further.
> @@ -60,34 +62,46 @@ static const QDevAlias qdev_alias_table[] = {
>      { "ES1370", "es1370" }, /* -soundhw name */
>      { "ich9-ahci", "ahci" },
>      { "lsi53c895a", "lsi" },
> +    { "virtio-9p-device", "virtio-9p", QEMU_ARCH_M68K },
>      { "virtio-9p-ccw", "virtio-9p", QEMU_ARCH_S390X },
> -    { "virtio-9p-pci", "virtio-9p", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-9p-pci", "virtio-9p", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },

TIL QEMU_ARCH_NO_PCI :)

> +    { "virtio-balloon-device", "virtio-balloon", QEMU_ARCH_M68K },
>      { "virtio-balloon-ccw", "virtio-balloon", QEMU_ARCH_S390X },
> -    { "virtio-balloon-pci", "virtio-balloon",
> -            QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-balloon-pci", "virtio-balloon", QEMU_ARCH_ALL &
> +                                             ~QEMU_ARCH_NO_PCI },
> +    { "virtio-blk-device", "virtio-blk", QEMU_ARCH_M68K },
>      { "virtio-blk-ccw", "virtio-blk", QEMU_ARCH_S390X },
> -    { "virtio-blk-pci", "virtio-blk", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-blk-pci", "virtio-blk", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
>      { "virtio-gpu-ccw", "virtio-gpu", QEMU_ARCH_S390X },
> -    { "virtio-gpu-pci", "virtio-gpu", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-gpu-device", "virtio-gpu", QEMU_ARCH_M68K },
> +    { "virtio-gpu-pci", "virtio-gpu", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
> +    { "virtio-input-host-device", "virtio-input-host", QEMU_ARCH_M68K },
>      { "virtio-input-host-ccw", "virtio-input-host", QEMU_ARCH_S390X },
> -    { "virtio-input-host-pci", "virtio-input-host",
> -            QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> -    { "virtio-iommu-pci", "virtio-iommu", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-input-host-pci", "virtio-input-host", QEMU_ARCH_ALL &
> +                                                   ~QEMU_ARCH_NO_PCI },
> +    { "virtio-iommu-pci", "virtio-iommu", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
> +    { "virtio-keyboard-device", "virtio-keyboard", QEMU_ARCH_M68K },
>      { "virtio-keyboard-ccw", "virtio-keyboard", QEMU_ARCH_S390X },
> -    { "virtio-keyboard-pci", "virtio-keyboard",
> -            QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-keyboard-pci", "virtio-keyboard", QEMU_ARCH_ALL &
> +                                               ~QEMU_ARCH_NO_PCI },
> +    { "virtio-mouse-device", "virtio-mouse", QEMU_ARCH_M68K },
>      { "virtio-mouse-ccw", "virtio-mouse", QEMU_ARCH_S390X },
> -    { "virtio-mouse-pci", "virtio-mouse", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-mouse-pci", "virtio-mouse", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
> +    { "virtio-net-device", "virtio-net", QEMU_ARCH_M68K },
>      { "virtio-net-ccw", "virtio-net", QEMU_ARCH_S390X },
> -    { "virtio-net-pci", "virtio-net", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-net-pci", "virtio-net", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
> +    { "virtio-rng-device", "virtio-rng", QEMU_ARCH_M68K },
>      { "virtio-rng-ccw", "virtio-rng", QEMU_ARCH_S390X },
> -    { "virtio-rng-pci", "virtio-rng", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-rng-pci", "virtio-rng", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
> +    { "virtio-scsi-device", "virtio-scsi", QEMU_ARCH_M68K },
>      { "virtio-scsi-ccw", "virtio-scsi", QEMU_ARCH_S390X },
> -    { "virtio-scsi-pci", "virtio-scsi", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-scsi-pci", "virtio-scsi", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
> +    { "virtio-serial-device", "virtio-serial", QEMU_ARCH_M68K },
>      { "virtio-serial-ccw", "virtio-serial", QEMU_ARCH_S390X },
> -    { "virtio-serial-pci", "virtio-serial", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-serial-pci", "virtio-serial", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI},
> +    { "virtio-tablet-device", "virtio-tablet", QEMU_ARCH_M68K },
>      { "virtio-tablet-ccw", "virtio-tablet", QEMU_ARCH_S390X },
> -    { "virtio-tablet-pci", "virtio-tablet", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> +    { "virtio-tablet-pci", "virtio-tablet", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
>      { }
>  };

This could be easier to split this patch in 2:
1/ QEMU_ARCH_S390X -> QEMU_ARCH_NO_PCI
2/ complete QEMU_ARCH_M68K aliases

Regardless:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Thomas Huth March 19, 2021, 6:47 a.m. UTC | #2
On 18/03/2021 23.39, Laurent Vivier wrote:
> Similarly to 5f629d943cb0 ("s390x: fix s390 virtio aliases"),
> define the virtio aliases.
> 
> This allows to start machines with virtio devices without
> knowledge of the implementation type.
> 
> For instance, we can use "-device virtio-scsi" on
> m68k, s390x or PC, and the device will be
> "virtio-scsi-device", "virtio-scsi-ccw" or "virtio-scsi-pci".
> 
> This already exists for s390x and -ccw interfaces, adds them
> for m68k and MMIO (-device) interfaces.
> 
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
>   softmmu/qdev-monitor.c | 46 +++++++++++++++++++++++++++---------------
>   1 file changed, 30 insertions(+), 16 deletions(-)

With the typo mentioned by Philippe fixed:
Reviewed-by: Thomas Huth <thuth@redhat.com>
Cornelia Huck March 19, 2021, 11:36 a.m. UTC | #3
On Thu, 18 Mar 2021 23:39:04 +0100
Laurent Vivier <laurent@vivier.eu> wrote:

> Similarly to 5f629d943cb0 ("s390x: fix s390 virtio aliases"),
> define the virtio aliases.
> 
> This allows to start machines with virtio devices without
> knowledge of the implementation type.
> 
> For instance, we can use "-device virtio-scsi" on
> m68k, s390x or PC, and the device will be
> "virtio-scsi-device", "virtio-scsi-ccw" or "virtio-scsi-pci".
> 
> This already exists for s390x and -ccw interfaces, adds them
> for m68k and MMIO (-device) interfaces.
> 
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
>  softmmu/qdev-monitor.c | 46 +++++++++++++++++++++++++++---------------
>  1 file changed, 30 insertions(+), 16 deletions(-)
> 
> diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c
> index 8dc656becca9..262d38b8c01e 100644
> --- a/softmmu/qdev-monitor.c
> +++ b/softmmu/qdev-monitor.c
> @@ -42,6 +42,8 @@
>  #include "hw/qdev-properties.h"
>  #include "hw/clock.h"
>  
> +#define QEMU_ARCH_NO_PCI (QEMU_ARCH_S390X | QEMU_ARCH_M68K)

The name of the #define is a tad misleading (we do have virtio-pci
devices on s390x, unlike in 2012, we just don't want the aliases to
point to them.) Maybe QEMU_ARCH_NONPCI_DEFAULT?

> +
>  /*
>   * Aliases were a bad idea from the start.  Let's keep them
>   * from spreading further.

Otherwise, LGTM.
Laurent Vivier March 19, 2021, 12:07 p.m. UTC | #4
Le 19/03/2021 à 12:36, Cornelia Huck a écrit :
> On Thu, 18 Mar 2021 23:39:04 +0100
> Laurent Vivier <laurent@vivier.eu> wrote:
> 
>> Similarly to 5f629d943cb0 ("s390x: fix s390 virtio aliases"),
>> define the virtio aliases.
>>
>> This allows to start machines with virtio devices without
>> knowledge of the implementation type.
>>
>> For instance, we can use "-device virtio-scsi" on
>> m68k, s390x or PC, and the device will be
>> "virtio-scsi-device", "virtio-scsi-ccw" or "virtio-scsi-pci".
>>
>> This already exists for s390x and -ccw interfaces, adds them
>> for m68k and MMIO (-device) interfaces.
>>
>> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
>> ---
>>  softmmu/qdev-monitor.c | 46 +++++++++++++++++++++++++++---------------
>>  1 file changed, 30 insertions(+), 16 deletions(-)
>>
>> diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c
>> index 8dc656becca9..262d38b8c01e 100644
>> --- a/softmmu/qdev-monitor.c
>> +++ b/softmmu/qdev-monitor.c
>> @@ -42,6 +42,8 @@
>>  #include "hw/qdev-properties.h"
>>  #include "hw/clock.h"
>>  
>> +#define QEMU_ARCH_NO_PCI (QEMU_ARCH_S390X | QEMU_ARCH_M68K)
> 
> The name of the #define is a tad misleading (we do have virtio-pci
> devices on s390x, unlike in 2012, we just don't want the aliases to
> point to them.) Maybe QEMU_ARCH_NONPCI_DEFAULT?

I have changed this patch to define QEMU_ARCH_VIRTIO_PCI with the list of archs with virtio-pci
devices, and QEMU_ARCH_VIRTIO_CCW and then QEMU_ARCH_VIRTIO_MMIO

> 
>> +
>>  /*
>>   * Aliases were a bad idea from the start.  Let's keep them
>>   * from spreading further.
> 
> Otherwise, LGTM.
> 

Thanks,
Laurent
diff mbox series

Patch

diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c
index 8dc656becca9..262d38b8c01e 100644
--- a/softmmu/qdev-monitor.c
+++ b/softmmu/qdev-monitor.c
@@ -42,6 +42,8 @@ 
 #include "hw/qdev-properties.h"
 #include "hw/clock.h"
 
+#define QEMU_ARCH_NO_PCI (QEMU_ARCH_S390X | QEMU_ARCH_M68K)
+
 /*
  * Aliases were a bad idea from the start.  Let's keep them
  * from spreading further.
@@ -60,34 +62,46 @@  static const QDevAlias qdev_alias_table[] = {
     { "ES1370", "es1370" }, /* -soundhw name */
     { "ich9-ahci", "ahci" },
     { "lsi53c895a", "lsi" },
+    { "virtio-9p-device", "virtio-9p", QEMU_ARCH_M68K },
     { "virtio-9p-ccw", "virtio-9p", QEMU_ARCH_S390X },
-    { "virtio-9p-pci", "virtio-9p", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-9p-pci", "virtio-9p", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
+    { "virtio-balloon-device", "virtio-balloon", QEMU_ARCH_M68K },
     { "virtio-balloon-ccw", "virtio-balloon", QEMU_ARCH_S390X },
-    { "virtio-balloon-pci", "virtio-balloon",
-            QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-balloon-pci", "virtio-balloon", QEMU_ARCH_ALL &
+                                             ~QEMU_ARCH_NO_PCI },
+    { "virtio-blk-device", "virtio-blk", QEMU_ARCH_M68K },
     { "virtio-blk-ccw", "virtio-blk", QEMU_ARCH_S390X },
-    { "virtio-blk-pci", "virtio-blk", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-blk-pci", "virtio-blk", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
     { "virtio-gpu-ccw", "virtio-gpu", QEMU_ARCH_S390X },
-    { "virtio-gpu-pci", "virtio-gpu", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-gpu-device", "virtio-gpu", QEMU_ARCH_M68K },
+    { "virtio-gpu-pci", "virtio-gpu", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
+    { "virtio-input-host-device", "virtio-input-host", QEMU_ARCH_M68K },
     { "virtio-input-host-ccw", "virtio-input-host", QEMU_ARCH_S390X },
-    { "virtio-input-host-pci", "virtio-input-host",
-            QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
-    { "virtio-iommu-pci", "virtio-iommu", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-input-host-pci", "virtio-input-host", QEMU_ARCH_ALL &
+                                                   ~QEMU_ARCH_NO_PCI },
+    { "virtio-iommu-pci", "virtio-iommu", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
+    { "virtio-keyboard-device", "virtio-keyboard", QEMU_ARCH_M68K },
     { "virtio-keyboard-ccw", "virtio-keyboard", QEMU_ARCH_S390X },
-    { "virtio-keyboard-pci", "virtio-keyboard",
-            QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-keyboard-pci", "virtio-keyboard", QEMU_ARCH_ALL &
+                                               ~QEMU_ARCH_NO_PCI },
+    { "virtio-mouse-device", "virtio-mouse", QEMU_ARCH_M68K },
     { "virtio-mouse-ccw", "virtio-mouse", QEMU_ARCH_S390X },
-    { "virtio-mouse-pci", "virtio-mouse", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-mouse-pci", "virtio-mouse", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
+    { "virtio-net-device", "virtio-net", QEMU_ARCH_M68K },
     { "virtio-net-ccw", "virtio-net", QEMU_ARCH_S390X },
-    { "virtio-net-pci", "virtio-net", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-net-pci", "virtio-net", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
+    { "virtio-rng-device", "virtio-rng", QEMU_ARCH_M68K },
     { "virtio-rng-ccw", "virtio-rng", QEMU_ARCH_S390X },
-    { "virtio-rng-pci", "virtio-rng", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-rng-pci", "virtio-rng", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
+    { "virtio-scsi-device", "virtio-scsi", QEMU_ARCH_M68K },
     { "virtio-scsi-ccw", "virtio-scsi", QEMU_ARCH_S390X },
-    { "virtio-scsi-pci", "virtio-scsi", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-scsi-pci", "virtio-scsi", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
+    { "virtio-serial-device", "virtio-serial", QEMU_ARCH_M68K },
     { "virtio-serial-ccw", "virtio-serial", QEMU_ARCH_S390X },
-    { "virtio-serial-pci", "virtio-serial", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-serial-pci", "virtio-serial", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI},
+    { "virtio-tablet-device", "virtio-tablet", QEMU_ARCH_M68K },
     { "virtio-tablet-ccw", "virtio-tablet", QEMU_ARCH_S390X },
-    { "virtio-tablet-pci", "virtio-tablet", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+    { "virtio-tablet-pci", "virtio-tablet", QEMU_ARCH_ALL & ~QEMU_ARCH_NO_PCI },
     { }
 };