On 9/19/18 7:20 PM, Mark Cave-Ayland wrote: > As part of commits a64aa5785d "hw: Deprecate -drive if=scsi with non-onboard > HBAs" and b891538e81 "hw/ppc/prep: Fix implicit creation of "-drive if=scsi" > devices" the lsi53c895a_create() and lsi53c810_create() functions were added > to wrap pci_create_simple() and scsi_bus_legacy_handle_cmdline(). > > Unfortunately this prevents us from changing qdev properties on the device > and/or changing the PCI configuration. By switching over to using the new > lsi53c8xx_handle_legacy_cmdline() function then the caller can now configure > and realize the LSI SCSI device exactly as required. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > Reviewed-by: Thomas Huth <th...@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > hw/arm/realview.c | 3 ++- > hw/arm/versatilepb.c | 3 ++- > hw/hppa/machine.c | 4 +++- > hw/ppc/prep.c | 4 +++- > 4 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/hw/arm/realview.c b/hw/arm/realview.c > index ab8c14fde3..242f5a87b6 100644 > --- a/hw/arm/realview.c > +++ b/hw/arm/realview.c > @@ -257,7 +257,8 @@ static void realview_init(MachineState *machine, > } > n = drive_get_max_bus(IF_SCSI); > while (n >= 0) { > - lsi53c895a_create(pci_bus); > + dev = DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a")); > + lsi53c8xx_handle_legacy_cmdline(dev); > n--; > } > } > diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c > index 8b74857059..22b09a1e61 100644 > --- a/hw/arm/versatilepb.c > +++ b/hw/arm/versatilepb.c > @@ -278,7 +278,8 @@ static void versatile_init(MachineState *machine, int > board_id) > } > n = drive_get_max_bus(IF_SCSI); > while (n >= 0) { > - lsi53c895a_create(pci_bus); > + dev = DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a")); > + lsi53c8xx_handle_legacy_cmdline(dev); > n--; > } > > diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c > index cf7c61c6cc..0fb8fb877e 100644 > --- a/hw/hppa/machine.c > +++ b/hw/hppa/machine.c > @@ -59,6 +59,7 @@ static void machine_hppa_init(MachineState *machine) > const char *kernel_filename = machine->kernel_filename; > const char *kernel_cmdline = machine->kernel_cmdline; > const char *initrd_filename = machine->initrd_filename; > + DeviceState *dev; > PCIBus *pci_bus; > ISABus *isa_bus; > qemu_irq rtc_irq, serial_irq; > @@ -115,7 +116,8 @@ static void machine_hppa_init(MachineState *machine) > } > > /* SCSI disk setup. */ > - lsi53c895a_create(pci_bus); > + dev = DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a")); > + lsi53c8xx_handle_legacy_cmdline(dev); > > /* Network setup. e1000 is good enough, failing Tulip support. */ > for (i = 0; i < nb_nics; i++) { > diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c > index 4bb831c3e6..7e2c70b92a 100644 > --- a/hw/ppc/prep.c > +++ b/hw/ppc/prep.c > @@ -700,7 +700,9 @@ static void ibm_40p_init(MachineState *machine) > qdev_prop_set_uint32(dev, "equipment", 0xc0); > qdev_init_nofail(dev); > > - lsi53c810_create(pci_bus, PCI_DEVFN(1, 0)); > + dev = DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(1, 0), > + "lsi53c810")); > + lsi53c8xx_handle_legacy_cmdline(dev); > > /* XXX: s3-trio at PCI_DEVFN(2, 0) */ > pci_vga_init(pci_bus); >