On Sat, 09/13 17:00, Markus Armbruster wrote: > The patch is big, but all it really does is replacing > > dinfo->bdrv > > by > > blk_bs(blk_legacy_dinfo(dinfo))
s/blk_legacy_dinfo/blk_by_legacy_dinfo/ Otherwise looks good, Reviewed-by: Fam Zheng <f...@redhat.com> > > The replacement is repetitive, but the conversion of device models to > BlockBackend is imminent, and will shorten it to just > blk_legacy_dinfo(dinfo). > > Line wrapping muddies the waters a bit. I also omit tests whether > dinfo->bdrv is null, because it never is. > > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- > blockdev.c | 3 +-- > hw/arm/collie.c | 9 +++++---- > hw/arm/gumstix.c | 5 +++-- > hw/arm/mainstone.c | 8 ++++---- > hw/arm/musicpal.c | 11 ++++++----- > hw/arm/nseries.c | 6 ++++-- > hw/arm/omap1.c | 4 +++- > hw/arm/omap2.c | 4 +++- > hw/arm/omap_sx1.c | 9 +++++---- > hw/arm/pxa2xx.c | 7 +++++-- > hw/arm/spitz.c | 4 +++- > hw/arm/versatilepb.c | 4 +++- > hw/arm/vexpress.c | 4 +++- > hw/arm/xilinx_zynq.c | 4 +++- > hw/arm/z2.c | 7 ++++--- > hw/block/fdc.c | 16 +++++++++++----- > hw/block/m25p80.c | 5 +++-- > hw/block/xen_disk.c | 2 +- > hw/cris/axis_dev88.c | 3 ++- > hw/display/tc6393xb.c | 4 +++- > hw/i386/pc_sysfw.c | 3 ++- > hw/ide/piix.c | 6 ++++-- > hw/ide/qdev.c | 4 +++- > hw/isa/pc87312.c | 7 +++++-- > hw/lm32/lm32_boards.c | 13 +++++++------ > hw/lm32/milkymist.c | 7 ++++--- > hw/microblaze/petalogix_ml605_mmu.c | 5 +++-- > hw/microblaze/petalogix_s3adsp1800_mmu.c | 5 +++-- > hw/mips/mips_malta.c | 4 +++- > hw/mips/mips_r4k.c | 5 +++-- > hw/pci/pci-hotplug-old.c | 9 ++++++--- > hw/ppc/ppc405_boards.c | 25 ++++++++++++++++--------- > hw/ppc/spapr.c | 4 +++- > hw/ppc/virtex_ml507.c | 5 +++-- > hw/scsi/scsi-bus.c | 5 +++-- > hw/sd/milkymist-memcard.c | 7 +++++-- > hw/sd/pl181.c | 3 ++- > hw/sd/sdhci.c | 3 ++- > hw/sd/ssi-sd.c | 3 ++- > hw/sh4/r2d.c | 5 +++-- > hw/usb/dev-storage.c | 4 +++- > hw/xtensa/xtfpga.c | 4 +++- > include/sysemu/blockdev.h | 1 - > 43 files changed, 163 insertions(+), 93 deletions(-) > > diff --git a/blockdev.c b/blockdev.c > index 85f574b..49496b6 100644 > --- a/blockdev.c > +++ b/blockdev.c > @@ -472,7 +472,6 @@ static BlockBackend *blockdev_init(const char *file, > QDict *bs_opts, > > dinfo = g_malloc0(sizeof(*dinfo)); > dinfo->id = g_strdup(qemu_opts_id(opts)); > - dinfo->bdrv = bs; > blk_set_legacy_dinfo(blk, dinfo); > > if (!file || !*file) { > @@ -502,7 +501,7 @@ static BlockBackend *blockdev_init(const char *file, > QDict *bs_opts, > > QINCREF(bs_opts); > ret = bdrv_open(&bs, file, NULL, bs_opts, bdrv_flags, drv, &error); > - assert(bs == dinfo->bdrv); > + assert(bs == blk_bs(blk)); > > if (ret < 0) { > error_setg(errp, "could not open disk image %s: %s", > diff --git a/hw/arm/collie.c b/hw/arm/collie.c > index ed7851f..0247290 100644 > --- a/hw/arm/collie.c > +++ b/hw/arm/collie.c > @@ -15,6 +15,7 @@ > #include "strongarm.h" > #include "hw/arm/arm.h" > #include "hw/block/flash.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > > @@ -41,13 +42,13 @@ static void collie_init(MachineState *machine) > > dinfo = drive_get(IF_PFLASH, 0, 0); > pflash_cfi01_register(SA_CS0, NULL, "collie.fl1", 0x02000000, > - dinfo ? dinfo->bdrv : NULL, (64 * 1024), > - 512, 4, 0x00, 0x00, 0x00, 0x00, 0); > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + (64 * 1024), 512, 4, 0x00, 0x00, 0x00, 0x00, 0); > > dinfo = drive_get(IF_PFLASH, 0, 1); > pflash_cfi01_register(SA_CS1, NULL, "collie.fl2", 0x02000000, > - dinfo ? dinfo->bdrv : NULL, (64 * 1024), > - 512, 4, 0x00, 0x00, 0x00, 0x00, 0); > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + (64 * 1024), 512, 4, 0x00, 0x00, 0x00, 0x00, 0); > > sysbus_create_simple("scoop", 0x40800000, NULL); > > diff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c > index 3f8465e..49f9339 100644 > --- a/hw/arm/gumstix.c > +++ b/hw/arm/gumstix.c > @@ -40,6 +40,7 @@ > #include "hw/block/flash.h" > #include "hw/devices.h" > #include "hw/boards.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > #include "sysemu/qtest.h" > @@ -71,7 +72,7 @@ static void connex_init(MachineState *machine) > be = 0; > #endif > if (!pflash_cfi01_register(0x00000000, NULL, "connext.rom", connex_rom, > - dinfo ? dinfo->bdrv : NULL, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : > NULL, > sector_len, connex_rom / sector_len, > 2, 0, 0, 0, 0, be)) { > fprintf(stderr, "qemu: Error registering flash memory.\n"); > @@ -109,7 +110,7 @@ static void verdex_init(MachineState *machine) > be = 0; > #endif > if (!pflash_cfi01_register(0x00000000, NULL, "verdex.rom", verdex_rom, > - dinfo ? dinfo->bdrv : NULL, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : > NULL, > sector_len, verdex_rom / sector_len, > 2, 0, 0, 0, 0, be)) { > fprintf(stderr, "qemu: Error registering flash memory.\n"); > diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c > index 44f1873..fb17d85 100644 > --- a/hw/arm/mainstone.c > +++ b/hw/arm/mainstone.c > @@ -18,7 +18,7 @@ > #include "hw/devices.h" > #include "hw/boards.h" > #include "hw/block/flash.h" > -#include "sysemu/blockdev.h" > +#include "sysemu/block-backend.h" > #include "hw/sysbus.h" > #include "exec/address-spaces.h" > #include "sysemu/qtest.h" > @@ -148,9 +148,9 @@ static void mainstone_common_init(MemoryRegion > *address_space_mem, > if (!pflash_cfi01_register(mainstone_flash_base[i], NULL, > i ? "mainstone.flash1" : > "mainstone.flash0", > MAINSTONE_FLASH, > - dinfo->bdrv, sector_len, > - MAINSTONE_FLASH / sector_len, 4, 0, 0, 0, > 0, > - be)) { > + blk_bs(blk_by_legacy_dinfo(dinfo)), > + sector_len, MAINSTONE_FLASH / sector_len, > + 4, 0, 0, 0, 0, be)) { > fprintf(stderr, "qemu: Error registering flash memory.\n"); > exit(1); > } > diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c > index 6a134f2..6a41d9c 100644 > --- a/hw/arm/musicpal.c > +++ b/hw/arm/musicpal.c > @@ -22,6 +22,7 @@ > #include "hw/block/flash.h" > #include "ui/console.h" > #include "hw/i2c/i2c.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > #include "ui/pixel_ops.h" > @@ -1630,7 +1631,9 @@ static void musicpal_init(MachineState *machine) > /* Register flash */ > dinfo = drive_get(IF_PFLASH, 0, 0); > if (dinfo) { > - flash_size = bdrv_getlength(dinfo->bdrv); > + BlockDriverState *bs = blk_bs(blk_by_legacy_dinfo(dinfo)); > + > + flash_size = bdrv_getlength(bs); > if (flash_size != 8*1024*1024 && flash_size != 16*1024*1024 && > flash_size != 32*1024*1024) { > fprintf(stderr, "Invalid flash image size\n"); > @@ -1645,16 +1648,14 @@ static void musicpal_init(MachineState *machine) > #ifdef TARGET_WORDS_BIGENDIAN > pflash_cfi02_register(0x100000000ULL-MP_FLASH_SIZE_MAX, NULL, > "musicpal.flash", flash_size, > - dinfo->bdrv, 0x10000, > - (flash_size + 0xffff) >> 16, > + bs, 0x10000, (flash_size + 0xffff) >> 16, > MP_FLASH_SIZE_MAX / flash_size, > 2, 0x00BF, 0x236D, 0x0000, 0x0000, > 0x5555, 0x2AAA, 1); > #else > pflash_cfi02_register(0x100000000ULL-MP_FLASH_SIZE_MAX, NULL, > "musicpal.flash", flash_size, > - dinfo->bdrv, 0x10000, > - (flash_size + 0xffff) >> 16, > + bs, 0x10000, (flash_size + 0xffff) >> 16, > MP_FLASH_SIZE_MAX / flash_size, > 2, 0x00BF, 0x236D, 0x0000, 0x0000, > 0x5555, 0x2AAA, 0); > diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c > index 4f092d6..2536078 100644 > --- a/hw/arm/nseries.c > +++ b/hw/arm/nseries.c > @@ -31,6 +31,7 @@ > #include "hw/hw.h" > #include "hw/bt.h" > #include "hw/loader.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/sysbus.h" > #include "exec/address-spaces.h" > @@ -172,8 +173,9 @@ static void n8x0_nand_setup(struct n800_s *s) > qdev_prop_set_uint16(s->nand, "version_id", 0); > qdev_prop_set_int32(s->nand, "shift", 1); > dinfo = drive_get(IF_MTD, 0, 0); > - if (dinfo && dinfo->bdrv) { > - qdev_prop_set_drive_nofail(s->nand, "drive", dinfo->bdrv); > + if (dinfo) { > + qdev_prop_set_drive_nofail(s->nand, "drive", > + blk_bs(blk_by_legacy_dinfo(dinfo))); > } > qdev_init_nofail(s->nand); > sysbus_connect_irq(SYS_BUS_DEVICE(s->nand), 0, > diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c > index e7cc5d7..e38e07f 100644 > --- a/hw/arm/omap1.c > +++ b/hw/arm/omap1.c > @@ -21,6 +21,7 @@ > #include "hw/arm/omap.h" > #include "sysemu/sysemu.h" > #include "hw/arm/soc_dma.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "qemu/range.h" > #include "hw/sysbus.h" > @@ -3976,7 +3977,8 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion > *system_memory, > fprintf(stderr, "qemu: missing SecureDigital device\n"); > exit(1); > } > - s->mmc = omap_mmc_init(0xfffb7800, system_memory, dinfo->bdrv, > + s->mmc = omap_mmc_init(0xfffb7800, system_memory, > + blk_bs(blk_by_legacy_dinfo(dinfo)), > qdev_get_gpio_in(s->ih[1], OMAP_INT_OQN), > &s->drq[OMAP_DMA_MMC_TX], > omap_findclk(s, "mmc_ck")); > diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c > index dc53a7a..e47dd63 100644 > --- a/hw/arm/omap2.c > +++ b/hw/arm/omap2.c > @@ -18,6 +18,7 @@ > * with this program; if not, see <http://www.gnu.org/licenses/>. > */ > > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/hw.h" > #include "hw/arm/arm.h" > @@ -2459,7 +2460,8 @@ struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion > *sysmem, > fprintf(stderr, "qemu: missing SecureDigital device\n"); > exit(1); > } > - s->mmc = omap2_mmc_init(omap_l4tao(s->l4, 9), dinfo->bdrv, > + s->mmc = omap2_mmc_init(omap_l4tao(s->l4, 9), > + blk_bs(blk_by_legacy_dinfo(dinfo)), > qdev_get_gpio_in(s->ih[0], OMAP_INT_24XX_MMC_IRQ), > &s->drq[OMAP24XX_DMA_MMC1_TX], > omap_findclk(s, "mmc_fclk"), omap_findclk(s, > "mmc_iclk")); > diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c > index b4f6da6..f475afc 100644 > --- a/hw/arm/omap_sx1.c > +++ b/hw/arm/omap_sx1.c > @@ -31,6 +31,7 @@ > #include "hw/boards.h" > #include "hw/arm/arm.h" > #include "hw/block/flash.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "sysemu/qtest.h" > #include "exec/address-spaces.h" > @@ -153,8 +154,8 @@ static void sx1_init(MachineState *machine, const int > version) > if ((dinfo = drive_get(IF_PFLASH, 0, fl_idx)) != NULL) { > if (!pflash_cfi01_register(OMAP_CS0_BASE, NULL, > "omap_sx1.flash0-1", flash_size, > - dinfo->bdrv, sector_size, > - flash_size / sector_size, > + blk_bs(blk_by_legacy_dinfo(dinfo)), > + sector_size, flash_size / sector_size, > 4, 0, 0, 0, 0, be)) { > fprintf(stderr, "qemu: Error registering flash memory %d.\n", > fl_idx); > @@ -176,8 +177,8 @@ static void sx1_init(MachineState *machine, const int > version) > > if (!pflash_cfi01_register(OMAP_CS1_BASE, NULL, > "omap_sx1.flash1-1", flash1_size, > - dinfo->bdrv, sector_size, > - flash1_size / sector_size, > + blk_bs(blk_by_legacy_dinfo(dinfo)), > + sector_size, flash1_size / sector_size, > 4, 0, 0, 0, 0, be)) { > fprintf(stderr, "qemu: Error registering flash memory %d.\n", > fl_idx); > diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c > index 557e0f1..7ec0da8 100644 > --- a/hw/arm/pxa2xx.c > +++ b/hw/arm/pxa2xx.c > @@ -14,6 +14,7 @@ > #include "hw/i2c/i2c.h" > #include "hw/ssi.h" > #include "sysemu/char.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > > static struct { > @@ -2083,7 +2084,8 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space, > fprintf(stderr, "qemu: missing SecureDigital device\n"); > exit(1); > } > - s->mmc = pxa2xx_mmci_init(address_space, 0x41100000, dinfo->bdrv, > + s->mmc = pxa2xx_mmci_init(address_space, 0x41100000, > + blk_bs(blk_by_legacy_dinfo(dinfo)), > qdev_get_gpio_in(s->pic, PXA2XX_PIC_MMC), > qdev_get_gpio_in(s->dma, PXA2XX_RX_RQ_MMCI), > qdev_get_gpio_in(s->dma, PXA2XX_TX_RQ_MMCI)); > @@ -2214,7 +2216,8 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, > unsigned int sdram_size) > fprintf(stderr, "qemu: missing SecureDigital device\n"); > exit(1); > } > - s->mmc = pxa2xx_mmci_init(address_space, 0x41100000, dinfo->bdrv, > + s->mmc = pxa2xx_mmci_init(address_space, 0x41100000, > + blk_bs(blk_by_legacy_dinfo(dinfo)), > qdev_get_gpio_in(s->pic, PXA2XX_PIC_MMC), > qdev_get_gpio_in(s->dma, PXA2XX_RX_RQ_MMCI), > qdev_get_gpio_in(s->dma, PXA2XX_TX_RQ_MMCI)); > diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c > index 03cc6ce..5d684a2 100644 > --- a/hw/arm/spitz.c > +++ b/hw/arm/spitz.c > @@ -25,6 +25,7 @@ > #include "block/block.h" > #include "audio/audio.h" > #include "hw/boards.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/sysbus.h" > #include "exec/address-spaces.h" > @@ -170,7 +171,8 @@ static int sl_nand_init(SysBusDevice *dev) > > s->ctl = 0; > nand = drive_get(IF_MTD, 0, 0); > - s->nand = nand_init(nand ? nand->bdrv : NULL, s->manf_id, s->chip_id); > + s->nand = nand_init(nand ? blk_bs(blk_by_legacy_dinfo(nand)) : NULL, > + s->manf_id, s->chip_id); > > memory_region_init_io(&s->iomem, OBJECT(s), &sl_ops, s, "sl", 0x40); > sysbus_init_mmio(dev, &s->iomem); > diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c > index dea5fc7..c88be6b 100644 > --- a/hw/arm/versatilepb.c > +++ b/hw/arm/versatilepb.c > @@ -15,6 +15,7 @@ > #include "hw/pci/pci.h" > #include "hw/i2c/i2c.h" > #include "hw/boards.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > #include "hw/block/flash.h" > @@ -337,7 +338,8 @@ static void versatile_init(MachineState *machine, int > board_id) > > dinfo = drive_get(IF_PFLASH, 0, 0); > if (!pflash_cfi01_register(VERSATILE_FLASH_ADDR, NULL, "versatile.flash", > - VERSATILE_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL, > + VERSATILE_FLASH_SIZE, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > VERSATILE_FLASH_SECT_SIZE, > VERSATILE_FLASH_SIZE / VERSATILE_FLASH_SECT_SIZE, > 4, 0x0089, 0x0018, 0x0000, 0x0, 0)) { > diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c > index a88732c..a492c22 100644 > --- a/hw/arm/vexpress.c > +++ b/hw/arm/vexpress.c > @@ -30,6 +30,7 @@ > #include "hw/boards.h" > #include "hw/loader.h" > #include "exec/address-spaces.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/block/flash.h" > #include "sysemu/device_tree.h" > @@ -488,7 +489,8 @@ static pflash_t *ve_pflash_cfi01_register(hwaddr base, > const char *name, > { > DeviceState *dev = qdev_create(NULL, "cfi.pflash01"); > > - if (di && qdev_prop_set_drive(dev, "drive", di->bdrv)) { > + if (di && qdev_prop_set_drive(dev, "drive", > + blk_bs(blk_by_legacy_dinfo(di)))) { > abort(); > } > > diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c > index ba5aa82..78e6934 100644 > --- a/hw/arm/xilinx_zynq.c > +++ b/hw/arm/xilinx_zynq.c > @@ -22,6 +22,7 @@ > #include "sysemu/sysemu.h" > #include "hw/boards.h" > #include "hw/block/flash.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/loader.h" > #include "hw/ssi.h" > @@ -162,7 +163,8 @@ static void zynq_init(MachineState *machine) > > /* AMD */ > pflash_cfi02_register(0xe2000000, NULL, "zynq.pflash", FLASH_SIZE, > - dinfo ? dinfo->bdrv : NULL, FLASH_SECTOR_SIZE, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + FLASH_SECTOR_SIZE, > FLASH_SIZE/FLASH_SECTOR_SIZE, 1, > 1, 0x0066, 0x0022, 0x0000, 0x0000, 0x0555, 0x2aa, > 0); > diff --git a/hw/arm/z2.c b/hw/arm/z2.c > index 36b3b50..9b38a2b 100644 > --- a/hw/arm/z2.c > +++ b/hw/arm/z2.c > @@ -20,6 +20,7 @@ > #include "hw/boards.h" > #include "sysemu/sysemu.h" > #include "hw/block/flash.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "ui/console.h" > #include "audio/audio.h" > @@ -336,9 +337,9 @@ static void z2_init(MachineState *machine) > > if (!pflash_cfi01_register(Z2_FLASH_BASE, > NULL, "z2.flash0", Z2_FLASH_SIZE, > - dinfo ? dinfo->bdrv : NULL, sector_len, > - Z2_FLASH_SIZE / sector_len, 4, 0, 0, 0, 0, > - be)) { > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : > NULL, > + sector_len, Z2_FLASH_SIZE / sector_len, > + 4, 0, 0, 0, 0, be)) { > fprintf(stderr, "qemu: Error registering flash memory.\n"); > exit(1); > } > diff --git a/hw/block/fdc.c b/hw/block/fdc.c > index 490d127..19f215f 100644 > --- a/hw/block/fdc.c > +++ b/hw/block/fdc.c > @@ -33,6 +33,7 @@ > #include "qemu/timer.h" > #include "hw/isa/isa.h" > #include "hw/sysbus.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "sysemu/sysemu.h" > #include "qemu/log.h" > @@ -2033,10 +2034,12 @@ ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo > **fds) > dev = DEVICE(isadev); > > if (fds[0]) { > - qdev_prop_set_drive_nofail(dev, "driveA", fds[0]->bdrv); > + qdev_prop_set_drive_nofail(dev, "driveA", > + blk_bs(blk_by_legacy_dinfo(fds[0]))); > } > if (fds[1]) { > - qdev_prop_set_drive_nofail(dev, "driveB", fds[1]->bdrv); > + qdev_prop_set_drive_nofail(dev, "driveB", > + blk_bs(blk_by_legacy_dinfo(fds[1]))); > } > qdev_init_nofail(dev); > > @@ -2056,10 +2059,12 @@ void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, > fdctrl = &sys->state; > fdctrl->dma_chann = dma_chann; /* FIXME */ > if (fds[0]) { > - qdev_prop_set_drive_nofail(dev, "driveA", fds[0]->bdrv); > + qdev_prop_set_drive_nofail(dev, "driveA", > + blk_bs(blk_by_legacy_dinfo(fds[0]))); > } > if (fds[1]) { > - qdev_prop_set_drive_nofail(dev, "driveB", fds[1]->bdrv); > + qdev_prop_set_drive_nofail(dev, "driveB", > + blk_bs(blk_by_legacy_dinfo(fds[1]))); > } > qdev_init_nofail(dev); > sbd = SYS_BUS_DEVICE(dev); > @@ -2075,7 +2080,8 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base, > > dev = qdev_create(NULL, "SUNW,fdtwo"); > if (fds[0]) { > - qdev_prop_set_drive_nofail(dev, "drive", fds[0]->bdrv); > + qdev_prop_set_drive_nofail(dev, "drive", > + blk_bs(blk_by_legacy_dinfo(fds[0]))); > } > qdev_init_nofail(dev); > sys = SYSBUS_FDC(dev); > diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c > index 5893773..78280a8 100644 > --- a/hw/block/m25p80.c > +++ b/hw/block/m25p80.c > @@ -22,6 +22,7 @@ > */ > > #include "hw/hw.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/ssi.h" > > @@ -624,9 +625,9 @@ static int m25p80_init(SSISlave *ss) > > dinfo = drive_get_next(IF_MTD); > > - if (dinfo && dinfo->bdrv) { > + if (dinfo) { > DB_PRINT_L(0, "Binding to IF_MTD drive\n"); > - s->bdrv = dinfo->bdrv; > + s->bdrv = blk_bs(blk_by_legacy_dinfo(dinfo)); > > /* FIXME: Move to late init */ > if (bdrv_read(s->bdrv, 0, s->storage, DIV_ROUND_UP(s->size, > diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c > index 6d474b9..b571bbe 100644 > --- a/hw/block/xen_disk.c > +++ b/hw/block/xen_disk.c > @@ -877,7 +877,7 @@ static int blk_connect(struct XenDevice *xendev) > } else { > /* setup via qemu cmdline -> already setup for us */ > xen_be_printf(&blkdev->xendev, 2, "get configured bdrv (cmdline > setup)\n"); > - blkdev->bs = blkdev->dinfo->bdrv; > + blkdev->bs = blk_bs(blk_by_legacy_dinfo(blkdev->dinfo)); > if (bdrv_is_read_only(blkdev->bs) && !readonly) { > xen_be_printf(&blkdev->xendev, 0, "Unexpected read-only drive"); > blkdev->bs = NULL; > diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c > index 1849338..280722d 100644 > --- a/hw/cris/axis_dev88.c > +++ b/hw/cris/axis_dev88.c > @@ -30,6 +30,7 @@ > #include "hw/loader.h" > #include "elf.h" > #include "boot.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > #include "sysemu/qtest.h" > @@ -282,7 +283,7 @@ void axisdev88_init(MachineState *machine) > > /* Attach a NAND flash to CS1. */ > nand = drive_get(IF_MTD, 0, 0); > - nand_state.nand = nand_init(nand ? nand->bdrv : NULL, > + nand_state.nand = nand_init(nand ? blk_bs(blk_by_legacy_dinfo(nand)) : > NULL, > NAND_MFR_STMICRO, 0x39); > memory_region_init_io(&nand_state.iomem, NULL, &nand_ops, &nand_state, > "nand", 0x05000000); > diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c > index f4011d2..62d6663 100644 > --- a/hw/display/tc6393xb.c > +++ b/hw/display/tc6393xb.c > @@ -15,6 +15,7 @@ > #include "hw/block/flash.h" > #include "ui/console.h" > #include "ui/pixel_ops.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > > #define IRQ_TC6393_NAND 0 > @@ -576,7 +577,8 @@ TC6393xbState *tc6393xb_init(MemoryRegion *sysmem, > uint32_t base, qemu_irq irq) > s->sub_irqs = qemu_allocate_irqs(tc6393xb_sub_irq, s, TC6393XB_NR_IRQS); > > nand = drive_get(IF_MTD, 0, 0); > - s->flash = nand_init(nand ? nand->bdrv : NULL, NAND_MFR_TOSHIBA, 0x76); > + s->flash = nand_init(nand ? blk_bs(blk_by_legacy_dinfo(nand)) : NULL, > + NAND_MFR_TOSHIBA, 0x76); > > memory_region_init_io(&s->iomem, NULL, &tc6393xb_ops, s, "tc6393xb", > 0x10000); > memory_region_add_subregion(sysmem, base, &s->iomem); > diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c > index 75a7ebb..6cd264a 100644 > --- a/hw/i386/pc_sysfw.c > +++ b/hw/i386/pc_sysfw.c > @@ -23,6 +23,7 @@ > * THE SOFTWARE. > */ > > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "qemu/error-report.h" > #include "hw/sysbus.h" > @@ -118,7 +119,7 @@ static void pc_system_flash_init(MemoryRegion *rom_memory) > (unit < FLASH_MAP_UNIT_MAX && > (pflash_drv = drive_get(IF_PFLASH, 0, unit)) != NULL); > ++unit) { > - bdrv = pflash_drv->bdrv; > + bdrv = blk_bs(blk_by_legacy_dinfo(pflash_drv)); > size = bdrv_getlength(bdrv); > if (size < 0) { > fatal_errmsg = g_strdup_printf("failed to get backing file > size"); > diff --git a/hw/ide/piix.c b/hw/ide/piix.c > index 49e78a7..c6c256f 100644 > --- a/hw/ide/piix.c > +++ b/hw/ide/piix.c > @@ -27,6 +27,7 @@ > #include <hw/i386/pc.h> > #include <hw/pci/pci.h> > #include <hw/isa/isa.h> > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "sysemu/sysemu.h" > #include "sysemu/dma.h" > @@ -178,9 +179,10 @@ int pci_piix3_xen_ide_unplug(DeviceState *dev) > for (; i < 3; i++) { > di = drive_get_by_index(IF_IDE, i); > if (di != NULL && !di->media_cd) { > - DeviceState *ds = bdrv_get_attached_dev(di->bdrv); > + BlockDriverState *bs = blk_bs(blk_by_legacy_dinfo(di)); > + DeviceState *ds = bdrv_get_attached_dev(bs); > if (ds) { > - bdrv_detach_dev(di->bdrv, ds); > + bdrv_detach_dev(bs, ds); > } > pci_ide->bus[di->bus].ifs[di->unit].bs = NULL; > drive_del(di); > diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c > index efab95b..75e8eb3 100644 > --- a/hw/ide/qdev.c > +++ b/hw/ide/qdev.c > @@ -20,6 +20,7 @@ > #include "sysemu/dma.h" > #include "qemu/error-report.h" > #include <hw/ide/internal.h> > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/block/block.h" > #include "sysemu/sysemu.h" > @@ -116,7 +117,8 @@ IDEDevice *ide_create_drive(IDEBus *bus, int unit, > DriveInfo *drive) > > dev = qdev_create(&bus->qbus, drive->media_cd ? "ide-cd" : "ide-hd"); > qdev_prop_set_uint32(dev, "unit", unit); > - qdev_prop_set_drive_nofail(dev, "drive", drive->bdrv); > + qdev_prop_set_drive_nofail(dev, "drive", > + blk_bs(blk_by_legacy_dinfo(drive))); > qdev_init_nofail(dev); > return DO_UPCAST(IDEDevice, qdev, dev); > } > diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c > index 9327c53..b691a0c 100644 > --- a/hw/isa/pc87312.c > +++ b/hw/isa/pc87312.c > @@ -25,6 +25,7 @@ > > #include "hw/isa/pc87312.h" > #include "qemu/error-report.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "sysemu/sysemu.h" > #include "sysemu/char.h" > @@ -320,11 +321,13 @@ static void pc87312_realize(DeviceState *dev, Error > **errp) > qdev_prop_set_uint32(d, "irq", 6); > drive = drive_get(IF_FLOPPY, 0, 0); > if (drive != NULL) { > - qdev_prop_set_drive_nofail(d, "driveA", drive->bdrv); > + qdev_prop_set_drive_nofail(d, "driveA", > + blk_bs(blk_by_legacy_dinfo(drive))); > } > drive = drive_get(IF_FLOPPY, 0, 1); > if (drive != NULL) { > - qdev_prop_set_drive_nofail(d, "driveB", drive->bdrv); > + qdev_prop_set_drive_nofail(d, "driveB", > + blk_bs(blk_by_legacy_dinfo(drive))); > } > qdev_init_nofail(d); > s->fdc.dev = isa; > diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c > index 0e01340..17c5610 100644 > --- a/hw/lm32/lm32_boards.c > +++ b/hw/lm32/lm32_boards.c > @@ -23,6 +23,7 @@ > #include "hw/devices.h" > #include "hw/boards.h" > #include "hw/loader.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "elf.h" > #include "lm32_hwsetup.h" > @@ -118,9 +119,9 @@ static void lm32_evr_init(MachineState *machine) > dinfo = drive_get(IF_PFLASH, 0, 0); > /* Spansion S29NS128P */ > pflash_cfi02_register(flash_base, NULL, "lm32_evr.flash", flash_size, > - dinfo ? dinfo->bdrv : NULL, flash_sector_size, > - flash_size / flash_sector_size, 1, 2, > - 0x01, 0x7e, 0x43, 0x00, 0x555, 0x2aa, 1); > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + flash_sector_size, flash_size / flash_sector_size, > + 1, 2, 0x01, 0x7e, 0x43, 0x00, 0x555, 0x2aa, 1); > > /* create irq lines */ > cpu_irq = qemu_allocate_irqs(cpu_irq_handler, cpu, 1); > @@ -220,9 +221,9 @@ static void lm32_uclinux_init(MachineState *machine) > dinfo = drive_get(IF_PFLASH, 0, 0); > /* Spansion S29NS128P */ > pflash_cfi02_register(flash_base, NULL, "lm32_uclinux.flash", flash_size, > - dinfo ? dinfo->bdrv : NULL, flash_sector_size, > - flash_size / flash_sector_size, 1, 2, > - 0x01, 0x7e, 0x43, 0x00, 0x555, 0x2aa, 1); > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + flash_sector_size, flash_size / flash_sector_size, > + 1, 2, 0x01, 0x7e, 0x43, 0x00, 0x555, 0x2aa, 1); > > /* create irq lines */ > cpu_irq = qemu_allocate_irqs(cpu_irq_handler, env, 1); > diff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c > index 81c3933..904b9c0 100644 > --- a/hw/lm32/milkymist.c > +++ b/hw/lm32/milkymist.c > @@ -26,6 +26,7 @@ > #include "hw/boards.h" > #include "hw/loader.h" > #include "elf.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "milkymist-hw.h" > #include "lm32.h" > @@ -125,9 +126,9 @@ milkymist_init(MachineState *machine) > dinfo = drive_get(IF_PFLASH, 0, 0); > /* Numonyx JS28F256J3F105 */ > pflash_cfi01_register(flash_base, NULL, "milkymist.flash", flash_size, > - dinfo ? dinfo->bdrv : NULL, flash_sector_size, > - flash_size / flash_sector_size, 2, > - 0x00, 0x89, 0x00, 0x1d, 1); > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + flash_sector_size, flash_size / flash_sector_size, > + 2, 0x00, 0x89, 0x00, 0x1d, 1); > > /* create irq lines */ > cpu_irq = qemu_allocate_irqs(cpu_irq_handler, cpu, 1); > diff --git a/hw/microblaze/petalogix_ml605_mmu.c > b/hw/microblaze/petalogix_ml605_mmu.c > index 6843abf..2974791 100644 > --- a/hw/microblaze/petalogix_ml605_mmu.c > +++ b/hw/microblaze/petalogix_ml605_mmu.c > @@ -32,6 +32,7 @@ > #include "sysemu/sysemu.h" > #include "hw/devices.h" > #include "hw/boards.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/char/serial.h" > #include "exec/address-spaces.h" > @@ -112,8 +113,8 @@ petalogix_ml605_init(MachineState *machine) > * 10th paremeter 0 means little-endian */ > pflash_cfi01_register(FLASH_BASEADDR, > NULL, "petalogix_ml605.flash", FLASH_SIZE, > - dinfo ? dinfo->bdrv : NULL, (64 * 1024), > - FLASH_SIZE >> 16, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + (64 * 1024), FLASH_SIZE >> 16, > 2, 0x89, 0x18, 0x0000, 0x0, 0); > > > diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c > b/hw/microblaze/petalogix_s3adsp1800_mmu.c > index 49dc6d1..a69301f 100644 > --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c > +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c > @@ -30,6 +30,7 @@ > #include "sysemu/sysemu.h" > #include "hw/devices.h" > #include "hw/boards.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > > @@ -92,8 +93,8 @@ petalogix_s3adsp1800_init(MachineState *machine) > dinfo = drive_get(IF_PFLASH, 0, 0); > pflash_cfi01_register(FLASH_BASEADDR, > NULL, "petalogix_s3adsp1800.flash", FLASH_SIZE, > - dinfo ? dinfo->bdrv : NULL, (64 * 1024), > - FLASH_SIZE >> 16, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + (64 * 1024), FLASH_SIZE >> 16, > 1, 0x89, 0x18, 0x0000, 0x0, 1); > > dev = qdev_create(NULL, "xlnx.xps-intc"); > diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c > index cfb60af..9f84ad6 100644 > --- a/hw/mips/mips_malta.c > +++ b/hw/mips/mips_malta.c > @@ -44,6 +44,7 @@ > #include "elf.h" > #include "hw/timer/mc146818rtc.h" > #include "hw/timer/i8254.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > #include "hw/sysbus.h" /* SysBusDevice */ > @@ -1035,7 +1036,8 @@ void mips_malta_init(MachineState *machine) > } > #endif > fl = pflash_cfi01_register(FLASH_ADDRESS, NULL, "mips_malta.bios", > - BIOS_SIZE, dinfo ? dinfo->bdrv : NULL, > + BIOS_SIZE, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : > NULL, > 65536, fl_sectors, > 4, 0x0000, 0x0000, 0x0000, 0x0000, be); > bios = pflash_cfi01_get_memory(fl); > diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c > index 7120293..6fd69b9 100644 > --- a/hw/mips/mips_r4k.c > +++ b/hw/mips/mips_r4k.c > @@ -24,6 +24,7 @@ > #include "elf.h" > #include "hw/timer/mc146818rtc.h" > #include "hw/timer/i8254.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > #include "sysemu/qtest.h" > @@ -240,8 +241,8 @@ void mips_r4k_init(MachineState *machine) > } else if ((dinfo = drive_get(IF_PFLASH, 0, 0)) != NULL) { > uint32_t mips_rom = 0x00400000; > if (!pflash_cfi01_register(0x1fc00000, NULL, "mips_r4k.bios", > mips_rom, > - dinfo->bdrv, sector_len, > - mips_rom / sector_len, > + blk_bs(blk_by_legacy_dinfo(dinfo)), > + sector_len, mips_rom / sector_len, > 4, 0, 0, 0, 0, be)) { > fprintf(stderr, "qemu: Error registering flash memory.\n"); > } > diff --git a/hw/pci/pci-hotplug-old.c b/hw/pci/pci-hotplug-old.c > index cf2caeb..e4d51de 100644 > --- a/hw/pci/pci-hotplug-old.c > +++ b/hw/pci/pci-hotplug-old.c > @@ -33,6 +33,7 @@ > #include "hw/scsi/scsi.h" > #include "hw/virtio/virtio-blk.h" > #include "qemu/config-file.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "qapi/error.h" > > @@ -126,8 +127,9 @@ static int scsi_hot_add(Monitor *mon, DeviceState > *adapter, > */ > dinfo->unit = qemu_opt_get_number(dinfo->opts, "unit", -1); > dinfo->bus = scsibus->busnr; > - scsidev = scsi_bus_legacy_add_drive(scsibus, dinfo->bdrv, dinfo->unit, > - false, -1, NULL, NULL); > + scsidev = scsi_bus_legacy_add_drive(scsibus, > + blk_bs(blk_by_legacy_dinfo(dinfo)), > + dinfo->unit, false, -1, NULL, NULL); > if (!scsidev) { > return -1; > } > @@ -247,7 +249,8 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon, > return NULL; > } > dev = pci_create(bus, devfn, "virtio-blk-pci"); > - if (qdev_prop_set_drive(&dev->qdev, "drive", dinfo->bdrv) < 0) { > + if (qdev_prop_set_drive(&dev->qdev, "drive", > + blk_bs(blk_by_legacy_dinfo(dinfo))) < 0) { > object_unparent(OBJECT(dev)); > dev = NULL; > break; > diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c > index 11d3379..7ff5ee5 100644 > --- a/hw/ppc/ppc405_boards.c > +++ b/hw/ppc/ppc405_boards.c > @@ -33,6 +33,7 @@ > #include "qemu/log.h" > #include "qemu/error-report.h" > #include "hw/loader.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > > @@ -225,17 +226,19 @@ static void ref405ep_init(MachineState *machine) > #ifdef USE_FLASH_BIOS > dinfo = drive_get(IF_PFLASH, 0, fl_idx); > if (dinfo) { > - bios_size = bdrv_getlength(dinfo->bdrv); > + BlockDriverState *bs = blk_bs(blk_by_legacy_dinfo(dinfo)); > + > + bios_size = bdrv_getlength(bs); > fl_sectors = (bios_size + 65535) >> 16; > #ifdef DEBUG_BOARD_INIT > printf("Register parallel flash %d size %lx" > " at addr %lx '%s' %d\n", > fl_idx, bios_size, -bios_size, > - bdrv_get_device_name(dinfo->bdrv), fl_sectors); > + bdrv_get_device_name(bs), fl_sectors); > #endif > pflash_cfi02_register((uint32_t)(-bios_size), > NULL, "ef405ep.bios", bios_size, > - dinfo->bdrv, 65536, fl_sectors, 1, > + bs, 65536, fl_sectors, 1, > 2, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, > 0x2AA, > 1); > fl_idx++; > @@ -547,7 +550,9 @@ static void taihu_405ep_init(MachineState *machine) > #if defined(USE_FLASH_BIOS) > dinfo = drive_get(IF_PFLASH, 0, fl_idx); > if (dinfo) { > - bios_size = bdrv_getlength(dinfo->bdrv); > + BlockDriverState *bs = blk_bs(blk_by_legacy_dinfo(dinfo)); > + > + bios_size = bdrv_getlength(bs); > /* XXX: should check that size is 2MB */ > // bios_size = 2 * 1024 * 1024; > fl_sectors = (bios_size + 65535) >> 16; > @@ -555,11 +560,11 @@ static void taihu_405ep_init(MachineState *machine) > printf("Register parallel flash %d size %lx" > " at addr %lx '%s' %d\n", > fl_idx, bios_size, -bios_size, > - bdrv_get_device_name(dinfo->bdrv), fl_sectors); > + bdrv_get_device_name(bs), fl_sectors); > #endif > pflash_cfi02_register((uint32_t)(-bios_size), > NULL, "taihu_405ep.bios", bios_size, > - dinfo->bdrv, 65536, fl_sectors, 1, > + bs, 65536, fl_sectors, 1, > 4, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, > 0x2AA, > 1); > fl_idx++; > @@ -593,7 +598,9 @@ static void taihu_405ep_init(MachineState *machine) > /* Register Linux flash */ > dinfo = drive_get(IF_PFLASH, 0, fl_idx); > if (dinfo) { > - bios_size = bdrv_getlength(dinfo->bdrv); > + BlockDriverState *bs = blk_bs(blk_by_legacy_dinfo(dinfo)); > + > + bios_size = bdrv_getlength(bs); > /* XXX: should check that size is 32MB */ > bios_size = 32 * 1024 * 1024; > fl_sectors = (bios_size + 65535) >> 16; > @@ -601,10 +608,10 @@ static void taihu_405ep_init(MachineState *machine) > printf("Register parallel flash %d size %lx" > " at addr " TARGET_FMT_lx " '%s'\n", > fl_idx, bios_size, (target_ulong)0xfc000000, > - bdrv_get_device_name(dinfo->bdrv)); > + bdrv_get_device_name(bs)); > #endif > pflash_cfi02_register(0xfc000000, NULL, "taihu_405ep.flash", > bios_size, > - dinfo->bdrv, 65536, fl_sectors, 1, > + bs, 65536, fl_sectors, 1, > 4, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, > 0x2AA, > 1); > fl_idx++; > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 2ab4460..a577812 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -29,6 +29,7 @@ > #include "hw/fw-path-provider.h" > #include "elf.h" > #include "net/net.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "sysemu/cpus.h" > #include "sysemu/kvm.h" > @@ -925,7 +926,8 @@ static void spapr_create_nvram(sPAPREnvironment *spapr) > DriveInfo *dinfo = drive_get(IF_PFLASH, 0, 0); > > if (dinfo) { > - qdev_prop_set_drive_nofail(dev, "drive", dinfo->bdrv); > + qdev_prop_set_drive_nofail(dev, "drive", > + blk_bs(blk_by_legacy_dinfo(dinfo))); > } > > qdev_init_nofail(dev); > diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c > index 0de5148..a0ce447 100644 > --- a/hw/ppc/virtex_ml507.c > +++ b/hw/ppc/virtex_ml507.c > @@ -39,6 +39,7 @@ > #include "hw/ppc/ppc4xx.h" > #include "ppc405.h" > > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "qapi/qmp/qerror.h" > > @@ -227,8 +228,8 @@ static void virtex_init(MachineState *machine) > > dinfo = drive_get(IF_PFLASH, 0, 0); > pflash_cfi01_register(PFLASH_BASEADDR, NULL, "virtex.flash", FLASH_SIZE, > - dinfo ? dinfo->bdrv : NULL, (64 * 1024), > - FLASH_SIZE >> 16, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + (64 * 1024), FLASH_SIZE >> 16, > 1, 0x89, 0x18, 0x0000, 0x0, 1); > > cpu_irq = (qemu_irq *) &env->irq_inputs[PPC40x_INPUT_INT]; > diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c > index 954c607..f5156ae 100644 > --- a/hw/scsi/scsi-bus.c > +++ b/hw/scsi/scsi-bus.c > @@ -3,6 +3,7 @@ > #include "hw/scsi/scsi.h" > #include "block/scsi.h" > #include "hw/qdev.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "trace.h" > #include "sysemu/dma.h" > @@ -267,8 +268,8 @@ void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, Error > **errp) > continue; > } > qemu_opts_loc_restore(dinfo->opts); > - scsi_bus_legacy_add_drive(bus, dinfo->bdrv, unit, false, -1, NULL, > - &err); > + scsi_bus_legacy_add_drive(bus, blk_bs(blk_by_legacy_dinfo(dinfo)), > + unit, false, -1, NULL, &err); > if (err != NULL) { > error_report("%s", error_get_pretty(err)); > error_propagate(errp, err); > diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c > index 2a40f92..501aa3a 100644 > --- a/hw/sd/milkymist-memcard.c > +++ b/hw/sd/milkymist-memcard.c > @@ -26,6 +26,7 @@ > #include "sysemu/sysemu.h" > #include "trace.h" > #include "qemu/error-report.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/sd.h" > > @@ -252,14 +253,16 @@ static int milkymist_memcard_init(SysBusDevice *dev) > { > MilkymistMemcardState *s = MILKYMIST_MEMCARD(dev); > DriveInfo *dinfo; > + BlockDriverState *bs; > > dinfo = drive_get_next(IF_SD); > - s->card = sd_init(dinfo ? dinfo->bdrv : NULL, false); > + bs = dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL; > + s->card = sd_init(bs, false); > if (s->card == NULL) { > return -1; > } > > - s->enabled = dinfo ? bdrv_is_inserted(dinfo->bdrv) : 0; > + s->enabled = bs && bdrv_is_inserted(bs); > > memory_region_init_io(&s->regs_region, OBJECT(s), &memcard_mmio_ops, s, > "milkymist-memcard", R_MAX * 4); > diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c > index 462558b..0501d40 100644 > --- a/hw/sd/pl181.c > +++ b/hw/sd/pl181.c > @@ -7,6 +7,7 @@ > * This code is licensed under the GPL. > */ > > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/sysbus.h" > #include "hw/sd.h" > @@ -490,7 +491,7 @@ static int pl181_init(SysBusDevice *sbd) > sysbus_init_irq(sbd, &s->irq[1]); > qdev_init_gpio_out(dev, s->cardstatus, 2); > dinfo = drive_get_next(IF_SD); > - s->card = sd_init(dinfo ? dinfo->bdrv : NULL, false); > + s->card = sd_init(dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > false); > if (s->card == NULL) { > return -1; > } > diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c > index f9fe700..0b7d754 100644 > --- a/hw/sd/sdhci.c > +++ b/hw/sd/sdhci.c > @@ -23,6 +23,7 @@ > */ > > #include "hw/hw.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "sysemu/dma.h" > #include "qemu/timer.h" > @@ -1165,7 +1166,7 @@ static void sdhci_initfn(Object *obj) > DriveInfo *di; > > di = drive_get_next(IF_SD); > - s->card = sd_init(di ? di->bdrv : NULL, false); > + s->card = sd_init(di ? blk_bs(blk_by_legacy_dinfo(di)) : NULL, false); > if (s->card == NULL) { > exit(1); > } > diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c > index b012e57..6ae99e4 100644 > --- a/hw/sd/ssi-sd.c > +++ b/hw/sd/ssi-sd.c > @@ -10,6 +10,7 @@ > * GNU GPL, version 2 or (at your option) any later version. > */ > > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "hw/ssi.h" > #include "hw/sd.h" > @@ -255,7 +256,7 @@ static int ssi_sd_init(SSISlave *d) > > s->mode = SSI_SD_CMD; > dinfo = drive_get_next(IF_SD); > - s->sd = sd_init(dinfo ? dinfo->bdrv : NULL, true); > + s->sd = sd_init(dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, true); > if (s->sd == NULL) { > return -1; > } > diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c > index 95c0246..d652619 100644 > --- a/hw/sh4/r2d.c > +++ b/hw/sh4/r2d.c > @@ -36,6 +36,7 @@ > #include "hw/loader.h" > #include "hw/usb.h" > #include "hw/block/flash.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "exec/address-spaces.h" > > @@ -290,8 +291,8 @@ static void r2d_init(MachineState *machine) > /* onboard flash memory */ > dinfo = drive_get(IF_PFLASH, 0, 0); > pflash_cfi02_register(0x0, NULL, "r2d.flash", FLASH_SIZE, > - dinfo ? dinfo->bdrv : NULL, (16 * 1024), > - FLASH_SIZE >> 16, > + dinfo ? blk_bs(blk_by_legacy_dinfo(dinfo)) : NULL, > + (16 * 1024), FLASH_SIZE >> 16, > 1, 4, 0x0000, 0x0000, 0x0000, 0x0000, > 0x555, 0x2aa, 0); > > diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c > index eb75f6a..0d6e7c6 100644 > --- a/hw/usb/dev-storage.c > +++ b/hw/usb/dev-storage.c > @@ -16,6 +16,7 @@ > #include "ui/console.h" > #include "monitor/monitor.h" > #include "sysemu/sysemu.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > > //#define DEBUG_MSD > @@ -704,7 +705,8 @@ static USBDevice *usb_msd_init(USBBus *bus, const char > *filename) > if (!dev) { > return NULL; > } > - if (qdev_prop_set_drive(&dev->qdev, "drive", dinfo->bdrv) < 0) { > + if (qdev_prop_set_drive(&dev->qdev, "drive", > + blk_bs(blk_by_legacy_dinfo(dinfo))) < 0) { > object_unparent(OBJECT(dev)); > return NULL; > } > diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c > index a2dff5a..7c4719e 100644 > --- a/hw/xtensa/xtfpga.c > +++ b/hw/xtensa/xtfpga.c > @@ -35,6 +35,7 @@ > #include "net/net.h" > #include "hw/sysbus.h" > #include "hw/block/flash.h" > +#include "sysemu/block-backend.h" > #include "sysemu/blockdev.h" > #include "sysemu/char.h" > #include "sysemu/device_tree.h" > @@ -229,7 +230,8 @@ static void lx_init(const LxBoardDesc *board, > MachineState *machine) > if (dinfo) { > flash = pflash_cfi01_register(board->flash_base, > NULL, "lx60.io.flash", board->flash_size, > - dinfo->bdrv, board->flash_sector_size, > + blk_bs(blk_by_legacy_dinfo(dinfo)), > + board->flash_sector_size, > board->flash_size / board->flash_sector_size, > 4, 0x0000, 0x0000, 0x0000, 0x0000, be); > if (flash == NULL) { > diff --git a/include/sysemu/blockdev.h b/include/sysemu/blockdev.h > index 2ed297b..75f6ac6 100644 > --- a/include/sysemu/blockdev.h > +++ b/include/sysemu/blockdev.h > @@ -30,7 +30,6 @@ typedef enum { > } BlockInterfaceType; > > struct DriveInfo { > - BlockDriverState *bdrv; > char *id; > const char *devaddr; > BlockInterfaceType type; > -- > 1.9.3 > >