On 17/06/2016 14:15, Cédric Le Goater wrote: > From: Paolo Bonzini <pbonz...@redhat.com> > > This allows specifying the property via -drive if=none and creating > the flash device with -device. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
You need to add your Signed-off-by line too. You should have used "git am -s" for that, but in this case just replace to my mail with the signoff and the maintainer will collect it. Thanks for picking up the patch. :) Paolo > --- > hw/arm/xilinx_zynq.c | 8 +++++++- > hw/arm/xlnx-ep108.c | 9 ++++++++- > hw/block/m25p80.c | 10 ++-------- > hw/microblaze/petalogix_ml605_mmu.c | 9 ++++++++- > 4 files changed, 25 insertions(+), 11 deletions(-) > > diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c > index aefebcfa6d8f..b0cabe2e4a67 100644 > --- a/hw/arm/xilinx_zynq.c > +++ b/hw/arm/xilinx_zynq.c > @@ -138,7 +138,13 @@ static inline void zynq_init_spi_flashes(uint32_t > base_addr, qemu_irq irq, > spi = (SSIBus *)qdev_get_child_bus(dev, bus_name); > > for (j = 0; j < num_ss; ++j) { > - flash_dev = ssi_create_slave(spi, "n25q128"); > + DriveInfo *dinfo = drive_get_next(IF_MTD); > + flash_dev = ssi_create_slave_no_init(spi, "n25q128"); > + if (dinfo) { > + qdev_prop_set_drive(flash_dev, "drive", > + blk_by_legacy_dinfo(dinfo), > &error_fatal); > + } > + qdev_init_nofail(flash_dev); > > cs_line = qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); > sysbus_connect_irq(busdev, i * num_ss + j + 1, cs_line); > diff --git a/hw/arm/xlnx-ep108.c b/hw/arm/xlnx-ep108.c > index 34b464171266..4ec590a25db5 100644 > --- a/hw/arm/xlnx-ep108.c > +++ b/hw/arm/xlnx-ep108.c > @@ -88,12 +88,19 @@ static void xlnx_ep108_init(MachineState *machine) > SSIBus *spi_bus; > DeviceState *flash_dev; > qemu_irq cs_line; > + DriveInfo *dinfo = drive_get_next(IF_MTD); > gchar *bus_name = g_strdup_printf("spi%d", i); > > spi_bus = (SSIBus *)qdev_get_child_bus(DEVICE(&s->soc), bus_name); > g_free(bus_name); > > - flash_dev = ssi_create_slave(spi_bus, "sst25wf080"); > + flash_dev = ssi_create_slave_no_init(spi_bus, "sst25wf080"); > + if (dinfo) { > + qdev_prop_set_drive(flash_dev, "drive", > blk_by_legacy_dinfo(dinfo), > + &error_fatal); > + } > + qdev_init_nofail(flash_dev); > + > cs_line = qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); > > sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.spi[i]), 1, cs_line); > diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c > index e6f6e23fb71d..7d1c34a1a2d1 100644 > --- a/hw/block/m25p80.c > +++ b/hw/block/m25p80.c > @@ -881,7 +881,6 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t > tx) > > static void m25p80_realize(SSISlave *ss, Error **errp) > { > - DriveInfo *dinfo; > Flash *s = M25P80(ss); > M25P80Class *mc = M25P80_GET_CLASS(s); > > @@ -890,14 +889,8 @@ static void m25p80_realize(SSISlave *ss, Error **errp) > s->size = s->pi->sector_size * s->pi->n_sectors; > s->dirty_page = -1; > > - /* FIXME use a qdev drive property instead of drive_get_next() */ > - dinfo = drive_get_next(IF_MTD); > - > - if (dinfo) { > + if (s->blk) { > DB_PRINT_L(0, "Binding to IF_MTD drive\n"); > - s->blk = blk_by_legacy_dinfo(dinfo); > - blk_attach_dev_nofail(s->blk, s); > - > s->storage = blk_blockalign(s->blk, s->size); > > if (blk_pread(s->blk, 0, s->storage, s->size) != s->size) { > @@ -925,6 +918,7 @@ static void m25p80_pre_save(void *opaque) > > static Property m25p80_properties[] = { > DEFINE_PROP_UINT32("nonvolatile-cfg", Flash, nonvolatile_cfg, 0x8FFF), > + DEFINE_PROP_DRIVE("drive", Flash, blk), > DEFINE_PROP_END_OF_LIST(), > }; > > diff --git a/hw/microblaze/petalogix_ml605_mmu.c > b/hw/microblaze/petalogix_ml605_mmu.c > index 07527b677b37..4968bdbb2821 100644 > --- a/hw/microblaze/petalogix_ml605_mmu.c > +++ b/hw/microblaze/petalogix_ml605_mmu.c > @@ -191,9 +191,16 @@ petalogix_ml605_init(MachineState *machine) > spi = (SSIBus *)qdev_get_child_bus(dev, "spi"); > > for (i = 0; i < NUM_SPI_FLASHES; i++) { > + DriveInfo *dinfo = drive_get_next(IF_MTD); > qemu_irq cs_line; > > - dev = ssi_create_slave(spi, "n25q128"); > + dev = ssi_create_slave_no_init(spi, "n25q128"); > + if (dinfo) { > + qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo), > + &error_fatal); > + } > + qdev_init_nofail(dev); > + > cs_line = qdev_get_gpio_in_named(dev, SSI_GPIO_CS, 0); > sysbus_connect_irq(busdev, i+1, cs_line); > } >