diff mbox series

scsi: Remove automatic creation of SCSI controllers with -drive if=scsi

Message ID 1519123357-13225-1-git-send-email-thuth@redhat.com
State New
Headers show
Series scsi: Remove automatic creation of SCSI controllers with -drive if=scsi | expand

Commit Message

Thomas Huth Feb. 20, 2018, 10:42 a.m. UTC
Automatic creation of SCSI controllers for "-drive if=scsi" for x86
machines was quite a bad idea (see description of commit f778a82f0c179
for details). This is marked as deprecated since QEMU v2.9.0, and as
far as I know, nobody complained that this is still urgently required
anymore. Time to remove this now.

Suggested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 hw/i386/pc.c           | 17 -----------------
 hw/i386/pc_piix.c      |  4 ----
 hw/i386/pc_q35.c       |  3 ---
 hw/scsi/lsi53c895a.c   |  2 +-
 hw/scsi/scsi-bus.c     | 49 +------------------------------------------------
 hw/scsi/spapr_vscsi.c  |  3 +--
 include/hw/scsi/scsi.h |  2 +-
 qemu-doc.texi          |  5 -----
 vl.c                   |  9 ---------
 9 files changed, 4 insertions(+), 90 deletions(-)

Comments

Paolo Bonzini Feb. 20, 2018, 11:11 a.m. UTC | #1
On 20/02/2018 11:42, Thomas Huth wrote:
> Automatic creation of SCSI controllers for "-drive if=scsi" for x86
> machines was quite a bad idea (see description of commit f778a82f0c179
> for details). This is marked as deprecated since QEMU v2.9.0, and as
> far as I know, nobody complained that this is still urgently required
> anymore. Time to remove this now.
> 
> Suggested-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Thomas Huth <thuth@redhat.com>

Queued, thanks.  _Your_ queue must be getting shorter instead!

Paolo

> ---
>  hw/i386/pc.c           | 17 -----------------
>  hw/i386/pc_piix.c      |  4 ----
>  hw/i386/pc_q35.c       |  3 ---
>  hw/scsi/lsi53c895a.c   |  2 +-
>  hw/scsi/scsi-bus.c     | 49 +------------------------------------------------
>  hw/scsi/spapr_vscsi.c  |  3 +--
>  include/hw/scsi/scsi.h |  2 +-
>  qemu-doc.texi          |  5 -----
>  vl.c                   |  9 ---------
>  9 files changed, 4 insertions(+), 90 deletions(-)
> 
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 55e69d6..2f7746c 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1636,23 +1636,6 @@ void pc_nic_init(ISABus *isa_bus, PCIBus *pci_bus)
>      rom_reset_order_override();
>  }
>  
> -void pc_pci_device_init(PCIBus *pci_bus)
> -{
> -    int max_bus;
> -    int bus;
> -
> -    /* Note: if=scsi is deprecated with PC machine types */
> -    max_bus = drive_get_max_bus(IF_SCSI);
> -    for (bus = 0; bus <= max_bus; bus++) {
> -        pci_create_simple(pci_bus, -1, "lsi53c895a");
> -        /*
> -         * By not creating frontends here, we make
> -         * scsi_legacy_handle_cmdline() create them, and warn that
> -         * this usage is deprecated.
> -         */
> -    }
> -}
> -
>  void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name)
>  {
>      DeviceState *dev;
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 456dc9e..8658bcb 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -295,10 +295,6 @@ static void pc_init1(MachineState *machine,
>                                   PC_MACHINE_ACPI_DEVICE_PROP, &error_abort);
>      }
>  
> -    if (pcmc->pci_enabled) {
> -        pc_pci_device_init(pci_bus);
> -    }
> -
>      if (pcms->acpi_nvdimm_state.is_enabled) {
>          nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io,
>                                 pcms->fw_cfg, OBJECT(pcms));
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index aba7541..0c0bc48 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -273,9 +273,6 @@ static void pc_q35_init(MachineState *machine)
>      /* the rest devices to which pci devfn is automatically assigned */
>      pc_vga_init(isa_bus, host_bus);
>      pc_nic_init(isa_bus, host_bus);
> -    if (pcmc->pci_enabled) {
> -        pc_pci_device_init(host_bus);
> -    }
>  
>      if (pcms->acpi_nvdimm_state.is_enabled) {
>          nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io,
> diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
> index 191505d..f3d4c4d 100644
> --- a/hw/scsi/lsi53c895a.c
> +++ b/hw/scsi/lsi53c895a.c
> @@ -2277,5 +2277,5 @@ void lsi53c895a_create(PCIBus *bus)
>  {
>      LSIState *s = LSI53C895A(pci_create_simple(bus, -1, "lsi53c895a"));
>  
> -    scsi_bus_legacy_handle_cmdline(&s->bus, false);
> +    scsi_bus_legacy_handle_cmdline(&s->bus);
>  }
> diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
> index b7bafbe..1eaeffc 100644
> --- a/hw/scsi/scsi-bus.c
> +++ b/hw/scsi/scsi-bus.c
> @@ -271,7 +271,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk,
>      return SCSI_DEVICE(dev);
>  }
>  
> -void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated)
> +void scsi_bus_legacy_handle_cmdline(SCSIBus *bus)
>  {
>      Location loc;
>      DriveInfo *dinfo;
> @@ -284,59 +284,12 @@ void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated)
>              continue;
>          }
>          qemu_opts_loc_restore(dinfo->opts);
> -        if (deprecated) {
> -            /* Handling -drive not claimed by machine initialization */
> -            if (blk_get_attached_dev(blk_by_legacy_dinfo(dinfo))) {
> -                continue;       /* claimed */
> -            }
> -            if (!dinfo->is_default) {
> -                warn_report("bus=%d,unit=%d is deprecated with this"
> -                            " machine type",
> -                            bus->busnr, unit);
> -            }
> -        }
>          scsi_bus_legacy_add_drive(bus, blk_by_legacy_dinfo(dinfo),
>                                    unit, false, -1, false, NULL, &error_fatal);
>      }
>      loc_pop(&loc);
>  }
>  
> -static bool is_scsi_hba_with_legacy_magic(Object *obj)
> -{
> -    static const char *magic[] = {
> -        "am53c974", "dc390", "esp", "lsi53c810", "lsi53c895a",
> -        "megasas", "megasas-gen2", "mptsas1068", "spapr-vscsi",
> -        "virtio-scsi-device",
> -        NULL
> -    };
> -    const char *typename = object_get_typename(obj);
> -    int i;
> -
> -    for (i = 0; magic[i]; i++)
> -        if (!strcmp(typename, magic[i])) {
> -            return true;
> -    }
> -
> -    return false;
> -}
> -
> -static int scsi_legacy_handle_cmdline_cb(Object *obj, void *opaque)
> -{
> -    SCSIBus *bus = (SCSIBus *)object_dynamic_cast(obj, TYPE_SCSI_BUS);
> -
> -    if (bus && is_scsi_hba_with_legacy_magic(OBJECT(bus->qbus.parent))) {
> -        scsi_bus_legacy_handle_cmdline(bus, true);
> -    }
> -
> -    return 0;
> -}
> -
> -void scsi_legacy_handle_cmdline(void)
> -{
> -    object_child_foreach_recursive(object_get_root(),
> -                                   scsi_legacy_handle_cmdline_cb, NULL);
> -}
> -
>  static int32_t scsi_invalid_field(SCSIRequest *req, uint8_t *buf)
>  {
>      scsi_req_build_sense(req, SENSE_CODE(INVALID_FIELD));
> diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
> index 360db53..a9e49c7 100644
> --- a/hw/scsi/spapr_vscsi.c
> +++ b/hw/scsi/spapr_vscsi.c
> @@ -1215,8 +1215,7 @@ void spapr_vscsi_create(VIOsPAPRBus *bus)
>      dev = qdev_create(&bus->bus, "spapr-vscsi");
>  
>      qdev_init_nofail(dev);
> -    scsi_bus_legacy_handle_cmdline(&VIO_SPAPR_VSCSI_DEVICE(dev)->bus,
> -                                   false);
> +    scsi_bus_legacy_handle_cmdline(&VIO_SPAPR_VSCSI_DEVICE(dev)->bus);
>  }
>  
>  static int spapr_vscsi_devnode(VIOsPAPRDevice *dev, void *fdt, int node_off)
> diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h
> index 802a647..7ecadda 100644
> --- a/include/hw/scsi/scsi.h
> +++ b/include/hw/scsi/scsi.h
> @@ -153,7 +153,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk,
>                                        int unit, bool removable, int bootindex,
>                                        bool share_rw,
>                                        const char *serial, Error **errp);
> -void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated);
> +void scsi_bus_legacy_handle_cmdline(SCSIBus *bus);
>  void scsi_legacy_handle_cmdline(void);
>  
>  SCSIRequest *scsi_req_alloc(const SCSIReqOps *reqops, SCSIDevice *d,
> diff --git a/qemu-doc.texi b/qemu-doc.texi
> index 56388b5..2f19980 100644
> --- a/qemu-doc.texi
> +++ b/qemu-doc.texi
> @@ -2687,11 +2687,6 @@ The ``-net vlan=NN'' argument is partially replaced with the
>  new ``-netdev'' argument. The remaining use cases will no
>  longer be directly supported in QEMU.
>  
> -@subsection -drive if=scsi (since 2.9.0)
> -
> -The ``-drive if=scsi'' argument is replaced by the the
> -``-device BUS-TYPE'' argument combined with ``-drive if=none''.
> -
>  @subsection -drive cyls=...,heads=...,secs=...,trans=... (since 2.10.0)
>  
>  The drive geometry arguments are replaced by the the geometry arguments
> diff --git a/vl.c b/vl.c
> index 81724f5..0feaca7 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -4638,15 +4638,6 @@ int main(int argc, char **argv, char **envp)
>  
>      rom_reset_order_override();
>  
> -    /*
> -     * Create frontends for -drive if=scsi leftovers.
> -     * Normally, frontends for -drive get created by machine
> -     * initialization for onboard SCSI HBAs.  However, we create a few
> -     * more ever since SCSI qdevification, but this is pretty much an
> -     * implementation accident, and deprecated.
> -     */
> -    scsi_legacy_handle_cmdline();
> -
>      /* Did we create any drives that we failed to create a device for? */
>      drive_check_orphaned();
>  
>
no-reply@patchew.org Feb. 24, 2018, 1:40 a.m. UTC | #2
Hi,

This series failed build test on s390x host. Please find the details below.

N/A. Internal error while reading log file



---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
diff mbox series

Patch

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 55e69d6..2f7746c 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1636,23 +1636,6 @@  void pc_nic_init(ISABus *isa_bus, PCIBus *pci_bus)
     rom_reset_order_override();
 }
 
-void pc_pci_device_init(PCIBus *pci_bus)
-{
-    int max_bus;
-    int bus;
-
-    /* Note: if=scsi is deprecated with PC machine types */
-    max_bus = drive_get_max_bus(IF_SCSI);
-    for (bus = 0; bus <= max_bus; bus++) {
-        pci_create_simple(pci_bus, -1, "lsi53c895a");
-        /*
-         * By not creating frontends here, we make
-         * scsi_legacy_handle_cmdline() create them, and warn that
-         * this usage is deprecated.
-         */
-    }
-}
-
 void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name)
 {
     DeviceState *dev;
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 456dc9e..8658bcb 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -295,10 +295,6 @@  static void pc_init1(MachineState *machine,
                                  PC_MACHINE_ACPI_DEVICE_PROP, &error_abort);
     }
 
-    if (pcmc->pci_enabled) {
-        pc_pci_device_init(pci_bus);
-    }
-
     if (pcms->acpi_nvdimm_state.is_enabled) {
         nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io,
                                pcms->fw_cfg, OBJECT(pcms));
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index aba7541..0c0bc48 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -273,9 +273,6 @@  static void pc_q35_init(MachineState *machine)
     /* the rest devices to which pci devfn is automatically assigned */
     pc_vga_init(isa_bus, host_bus);
     pc_nic_init(isa_bus, host_bus);
-    if (pcmc->pci_enabled) {
-        pc_pci_device_init(host_bus);
-    }
 
     if (pcms->acpi_nvdimm_state.is_enabled) {
         nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io,
diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 191505d..f3d4c4d 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -2277,5 +2277,5 @@  void lsi53c895a_create(PCIBus *bus)
 {
     LSIState *s = LSI53C895A(pci_create_simple(bus, -1, "lsi53c895a"));
 
-    scsi_bus_legacy_handle_cmdline(&s->bus, false);
+    scsi_bus_legacy_handle_cmdline(&s->bus);
 }
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index b7bafbe..1eaeffc 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -271,7 +271,7 @@  SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk,
     return SCSI_DEVICE(dev);
 }
 
-void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated)
+void scsi_bus_legacy_handle_cmdline(SCSIBus *bus)
 {
     Location loc;
     DriveInfo *dinfo;
@@ -284,59 +284,12 @@  void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated)
             continue;
         }
         qemu_opts_loc_restore(dinfo->opts);
-        if (deprecated) {
-            /* Handling -drive not claimed by machine initialization */
-            if (blk_get_attached_dev(blk_by_legacy_dinfo(dinfo))) {
-                continue;       /* claimed */
-            }
-            if (!dinfo->is_default) {
-                warn_report("bus=%d,unit=%d is deprecated with this"
-                            " machine type",
-                            bus->busnr, unit);
-            }
-        }
         scsi_bus_legacy_add_drive(bus, blk_by_legacy_dinfo(dinfo),
                                   unit, false, -1, false, NULL, &error_fatal);
     }
     loc_pop(&loc);
 }
 
-static bool is_scsi_hba_with_legacy_magic(Object *obj)
-{
-    static const char *magic[] = {
-        "am53c974", "dc390", "esp", "lsi53c810", "lsi53c895a",
-        "megasas", "megasas-gen2", "mptsas1068", "spapr-vscsi",
-        "virtio-scsi-device",
-        NULL
-    };
-    const char *typename = object_get_typename(obj);
-    int i;
-
-    for (i = 0; magic[i]; i++)
-        if (!strcmp(typename, magic[i])) {
-            return true;
-    }
-
-    return false;
-}
-
-static int scsi_legacy_handle_cmdline_cb(Object *obj, void *opaque)
-{
-    SCSIBus *bus = (SCSIBus *)object_dynamic_cast(obj, TYPE_SCSI_BUS);
-
-    if (bus && is_scsi_hba_with_legacy_magic(OBJECT(bus->qbus.parent))) {
-        scsi_bus_legacy_handle_cmdline(bus, true);
-    }
-
-    return 0;
-}
-
-void scsi_legacy_handle_cmdline(void)
-{
-    object_child_foreach_recursive(object_get_root(),
-                                   scsi_legacy_handle_cmdline_cb, NULL);
-}
-
 static int32_t scsi_invalid_field(SCSIRequest *req, uint8_t *buf)
 {
     scsi_req_build_sense(req, SENSE_CODE(INVALID_FIELD));
diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
index 360db53..a9e49c7 100644
--- a/hw/scsi/spapr_vscsi.c
+++ b/hw/scsi/spapr_vscsi.c
@@ -1215,8 +1215,7 @@  void spapr_vscsi_create(VIOsPAPRBus *bus)
     dev = qdev_create(&bus->bus, "spapr-vscsi");
 
     qdev_init_nofail(dev);
-    scsi_bus_legacy_handle_cmdline(&VIO_SPAPR_VSCSI_DEVICE(dev)->bus,
-                                   false);
+    scsi_bus_legacy_handle_cmdline(&VIO_SPAPR_VSCSI_DEVICE(dev)->bus);
 }
 
 static int spapr_vscsi_devnode(VIOsPAPRDevice *dev, void *fdt, int node_off)
diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h
index 802a647..7ecadda 100644
--- a/include/hw/scsi/scsi.h
+++ b/include/hw/scsi/scsi.h
@@ -153,7 +153,7 @@  SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk,
                                       int unit, bool removable, int bootindex,
                                       bool share_rw,
                                       const char *serial, Error **errp);
-void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated);
+void scsi_bus_legacy_handle_cmdline(SCSIBus *bus);
 void scsi_legacy_handle_cmdline(void);
 
 SCSIRequest *scsi_req_alloc(const SCSIReqOps *reqops, SCSIDevice *d,
diff --git a/qemu-doc.texi b/qemu-doc.texi
index 56388b5..2f19980 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -2687,11 +2687,6 @@  The ``-net vlan=NN'' argument is partially replaced with the
 new ``-netdev'' argument. The remaining use cases will no
 longer be directly supported in QEMU.
 
-@subsection -drive if=scsi (since 2.9.0)
-
-The ``-drive if=scsi'' argument is replaced by the the
-``-device BUS-TYPE'' argument combined with ``-drive if=none''.
-
 @subsection -drive cyls=...,heads=...,secs=...,trans=... (since 2.10.0)
 
 The drive geometry arguments are replaced by the the geometry arguments
diff --git a/vl.c b/vl.c
index 81724f5..0feaca7 100644
--- a/vl.c
+++ b/vl.c
@@ -4638,15 +4638,6 @@  int main(int argc, char **argv, char **envp)
 
     rom_reset_order_override();
 
-    /*
-     * Create frontends for -drive if=scsi leftovers.
-     * Normally, frontends for -drive get created by machine
-     * initialization for onboard SCSI HBAs.  However, we create a few
-     * more ever since SCSI qdevification, but this is pretty much an
-     * implementation accident, and deprecated.
-     */
-    scsi_legacy_handle_cmdline();
-
     /* Did we create any drives that we failed to create a device for? */
     drive_check_orphaned();