Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/armbru/tags/pull-block-2017-02-…
Browse files Browse the repository at this point in the history
…21' into staging

Changes to -drive without if= and with if=scsi

# gpg: Signature made Tue 21 Feb 2017 12:22:35 GMT
# gpg:                using RSA key 0x3870B400EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* remotes/armbru/tags/pull-block-2017-02-21:
  hw/i386: Deprecate -drive if=scsi with PC machine types
  hw: Deprecate -drive if=scsi with non-onboard HBAs
  hw/scsi: Concentrate -drive if=scsi auto-create in one place
  hw: Drop superfluous special checks for orphaned -drive
  blockdev: Make orphaned -drive fatal
  blockdev: Improve message for orphaned -drive
  hw/arm/highbank: Default -drive to if=ide instead of if=scsi
  hw: Default -drive to if=none instead of scsi when scsi cannot work
  hw: Default -drive to if=none instead of ide when ide cannot work
  hw/arm/cubieboard hw/arm/xlnx-ep108: Fix units_per_default_bus
  hw: Default -drive to if=ide explicitly where it works

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
pm215 committed Feb 21, 2017
2 parents a0775e2 + f778a82 commit a1cf5fa
Show file tree
Hide file tree
Showing 37 changed files with 137 additions and 97 deletions.
23 changes: 13 additions & 10 deletions blockdev.c
Expand Up @@ -227,27 +227,30 @@ DriveInfo *drive_get(BlockInterfaceType type, int bus, int unit)
return NULL;
}

bool drive_check_orphaned(void)
void drive_check_orphaned(void)
{
BlockBackend *blk;
DriveInfo *dinfo;
bool rs = false;
Location loc;
bool orphans = false;

for (blk = blk_next(NULL); blk; blk = blk_next(blk)) {
dinfo = blk_legacy_dinfo(blk);
/* If dinfo->bdrv->dev is NULL, it has no device attached. */
/* Unless this is a default drive, this may be an oversight. */
if (!blk_get_attached_dev(blk) && !dinfo->is_default &&
dinfo->type != IF_NONE) {
fprintf(stderr, "Warning: Orphaned drive without device: "
"id=%s,file=%s,if=%s,bus=%d,unit=%d\n",
blk_name(blk), blk_bs(blk) ? blk_bs(blk)->filename : "",
if_name[dinfo->type], dinfo->bus, dinfo->unit);
rs = true;
loc_push_none(&loc);
qemu_opts_loc_restore(dinfo->opts);
error_report("machine type does not support"
" if=%s,bus=%d,unit=%d",
if_name[dinfo->type], dinfo->bus, dinfo->unit);
loc_pop(&loc);
orphans = true;
}
}

return rs;
if (orphans) {
exit(1);
}
}

DriveInfo *drive_get_by_index(BlockInterfaceType type, int index)
Expand Down
1 change: 1 addition & 0 deletions hw/alpha/dp264.c
Expand Up @@ -177,6 +177,7 @@ static void clipper_machine_init(MachineClass *mc)
{
mc->desc = "Alpha DP264/CLIPPER";
mc->init = clipper_init;
mc->block_default_type = IF_IDE;
mc->max_cpus = 4;
mc->is_default = 1;
}
Expand Down
4 changes: 4 additions & 0 deletions hw/arm/cubieboard.c
Expand Up @@ -71,6 +71,8 @@ static void cubieboard_init(MachineState *machine)
memory_region_add_subregion(get_system_memory(), AW_A10_SDRAM_BASE,
&s->sdram);

/* TODO create and connect IDE devices for ide_drive_get() */

cubieboard_binfo.ram_size = machine->ram_size;
cubieboard_binfo.kernel_filename = machine->kernel_filename;
cubieboard_binfo.kernel_cmdline = machine->kernel_cmdline;
Expand All @@ -82,6 +84,8 @@ static void cubieboard_machine_init(MachineClass *mc)
{
mc->desc = "cubietech cubieboard";
mc->init = cubieboard_init;
mc->block_default_type = IF_IDE;
mc->units_per_default_bus = 1;
}

DEFINE_MACHINE("cubieboard", cubieboard_machine_init)
8 changes: 6 additions & 2 deletions hw/arm/highbank.c
Expand Up @@ -363,6 +363,8 @@ static void calxeda_init(MachineState *machine, enum cxmachines machine_id)
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 2, pic[82]);
}

/* TODO create and connect IDE devices for ide_drive_get() */

highbank_binfo.ram_size = ram_size;
highbank_binfo.kernel_filename = kernel_filename;
highbank_binfo.kernel_cmdline = kernel_cmdline;
Expand Down Expand Up @@ -405,7 +407,8 @@ static void highbank_class_init(ObjectClass *oc, void *data)

mc->desc = "Calxeda Highbank (ECX-1000)";
mc->init = highbank_init;
mc->block_default_type = IF_SCSI;
mc->block_default_type = IF_IDE;
mc->units_per_default_bus = 1;
mc->max_cpus = 4;
}

Expand All @@ -421,7 +424,8 @@ static void midway_class_init(ObjectClass *oc, void *data)

mc->desc = "Calxeda Midway (ECX-2000)";
mc->init = midway_init;
mc->block_default_type = IF_SCSI;
mc->block_default_type = IF_IDE;
mc->units_per_default_bus = 1;
mc->max_cpus = 4;
}

Expand Down
3 changes: 1 addition & 2 deletions hw/arm/realview.c
Expand Up @@ -259,7 +259,7 @@ static void realview_init(MachineState *machine,
}
n = drive_get_max_bus(IF_SCSI);
while (n >= 0) {
pci_create_simple(pci_bus, -1, "lsi53c895a");
lsi53c895a_create(pci_bus);
n--;
}
}
Expand Down Expand Up @@ -443,7 +443,6 @@ static void realview_pbx_a9_class_init(ObjectClass *oc, void *data)

mc->desc = "ARM RealView Platform Baseboard Explore for Cortex-A9";
mc->init = realview_pbx_a9_init;
mc->block_default_type = IF_SCSI;
mc->max_cpus = 4;
}

Expand Down
3 changes: 3 additions & 0 deletions hw/arm/spitz.c
Expand Up @@ -998,6 +998,7 @@ static void spitzpda_class_init(ObjectClass *oc, void *data)

mc->desc = "Sharp SL-C3000 (Spitz) PDA (PXA270)";
mc->init = spitz_init;
mc->block_default_type = IF_IDE;
}

static const TypeInfo spitzpda_type = {
Expand All @@ -1012,6 +1013,7 @@ static void borzoipda_class_init(ObjectClass *oc, void *data)

mc->desc = "Sharp SL-C3100 (Borzoi) PDA (PXA270)";
mc->init = borzoi_init;
mc->block_default_type = IF_IDE;
}

static const TypeInfo borzoipda_type = {
Expand All @@ -1026,6 +1028,7 @@ static void terrierpda_class_init(ObjectClass *oc, void *data)

mc->desc = "Sharp SL-C3200 (Terrier) PDA (PXA270)";
mc->init = terrier_init;
mc->block_default_type = IF_IDE;
}

static const TypeInfo terrierpda_type = {
Expand Down
1 change: 1 addition & 0 deletions hw/arm/tosa.c
Expand Up @@ -263,6 +263,7 @@ static void tosapda_machine_init(MachineClass *mc)
{
mc->desc = "Sharp SL-6000 (Tosa) PDA (PXA255)";
mc->init = tosa_init;
mc->block_default_type = IF_IDE;
}

DEFINE_MACHINE("tosa", tosapda_machine_init)
Expand Down
2 changes: 1 addition & 1 deletion hw/arm/versatilepb.c
Expand Up @@ -290,7 +290,7 @@ static void versatile_init(MachineState *machine, int board_id)
}
n = drive_get_max_bus(IF_SCSI);
while (n >= 0) {
pci_create_simple(pci_bus, -1, "lsi53c895a");
lsi53c895a_create(pci_bus);
n--;
}

Expand Down
1 change: 0 additions & 1 deletion hw/arm/vexpress.c
Expand Up @@ -752,7 +752,6 @@ static void vexpress_class_init(ObjectClass *oc, void *data)

mc->desc = "ARM Versatile Express";
mc->init = vexpress_common_init;
mc->block_default_type = IF_SCSI;
mc->max_cpus = 4;
}

Expand Down
1 change: 0 additions & 1 deletion hw/arm/xilinx_zynq.c
Expand Up @@ -323,7 +323,6 @@ static void zynq_machine_init(MachineClass *mc)
{
mc->desc = "Xilinx Zynq Platform Baseboard for Cortex-A9";
mc->init = zynq_init;
mc->block_default_type = IF_SCSI;
mc->max_cpus = 1;
mc->no_sdcard = 1;
}
Expand Down
6 changes: 6 additions & 0 deletions hw/arm/xlnx-ep108.c
Expand Up @@ -106,6 +106,8 @@ static void xlnx_ep108_init(MachineState *machine)
sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.spi[i]), 1, cs_line);
}

/* TODO create and connect IDE devices for ide_drive_get() */

xlnx_ep108_binfo.ram_size = ram_size;
xlnx_ep108_binfo.kernel_filename = machine->kernel_filename;
xlnx_ep108_binfo.kernel_cmdline = machine->kernel_cmdline;
Expand All @@ -118,6 +120,8 @@ static void xlnx_ep108_machine_init(MachineClass *mc)
{
mc->desc = "Xilinx ZynqMP EP108 board";
mc->init = xlnx_ep108_init;
mc->block_default_type = IF_IDE;
mc->units_per_default_bus = 1;
}

DEFINE_MACHINE("xlnx-ep108", xlnx_ep108_machine_init)
Expand All @@ -126,6 +130,8 @@ static void xlnx_zcu102_machine_init(MachineClass *mc)
{
mc->desc = "Xilinx ZynqMP ZCU102 board";
mc->init = xlnx_ep108_init;
mc->block_default_type = IF_IDE;
mc->units_per_default_bus = 1;
}

DEFINE_MACHINE("xlnx-zcu102", xlnx_zcu102_machine_init)
7 changes: 7 additions & 0 deletions hw/i386/pc.c
Expand Up @@ -1650,9 +1650,15 @@ 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.
*/
}
}

Expand Down Expand Up @@ -2339,6 +2345,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
mc->query_hotpluggable_cpus = pc_query_hotpluggable_cpus;
mc->default_boot_order = "cad";
mc->hot_add_cpu = pc_hot_add_cpu;
mc->block_default_type = IF_IDE;
mc->max_cpus = 255;
mc->reset = pc_machine_reset;
hc->pre_plug = pc_machine_device_pre_plug_cb;
Expand Down
17 changes: 0 additions & 17 deletions hw/ide/core.c
Expand Up @@ -2840,23 +2840,6 @@ const VMStateDescription vmstate_ide_bus = {
void ide_drive_get(DriveInfo **hd, int n)
{
int i;
int highest_bus = drive_get_max_bus(IF_IDE) + 1;
int max_devs = drive_get_max_devs(IF_IDE);
int n_buses = max_devs ? (n / max_devs) : n;

/*
* Note: The number of actual buses available is not known.
* We compute this based on the size of the DriveInfo* array, n.
* If it is less than max_devs * <num_real_buses>,
* We will stop looking for drives prematurely instead of overfilling
* the array.
*/

if (highest_bus > n_buses) {
error_report("Too many IDE buses defined (%d > %d)",
highest_bus, n_buses);
exit(1);
}

for (i = 0; i < n; i++) {
hd[i] = drive_get_by_index(IF_IDE, i);
Expand Down
1 change: 1 addition & 0 deletions hw/mips/mips_fulong2e.c
Expand Up @@ -387,6 +387,7 @@ static void mips_fulong2e_machine_init(MachineClass *mc)
{
mc->desc = "Fulong 2e mini pc";
mc->init = mips_fulong2e_init;
mc->block_default_type = IF_IDE;
}

DEFINE_MACHINE("fulong2e", mips_fulong2e_machine_init)
4 changes: 0 additions & 4 deletions hw/mips/mips_jazz.c
Expand Up @@ -291,10 +291,6 @@ static void mips_jazz_init(MachineState *machine,
qdev_get_gpio_in(rc4030, 5), &esp_reset, &dma_enable);

/* Floppy */
if (drive_get_max_bus(IF_FLOPPY) >= MAX_FD) {
fprintf(stderr, "qemu: too many floppy drives\n");
exit(1);
}
for (n = 0; n < MAX_FD; n++) {
fds[n] = drive_get(IF_FLOPPY, 0, n);
}
Expand Down
1 change: 1 addition & 0 deletions hw/mips/mips_malta.c
Expand Up @@ -1264,6 +1264,7 @@ static void mips_malta_machine_init(MachineClass *mc)
{
mc->desc = "MIPS Malta Core LV";
mc->init = mips_malta_init;
mc->block_default_type = IF_IDE;
mc->max_cpus = 16;
mc->is_default = 1;
}
Expand Down
1 change: 1 addition & 0 deletions hw/mips/mips_r4k.c
Expand Up @@ -306,6 +306,7 @@ static void mips_machine_init(MachineClass *mc)
{
mc->desc = "mips r4k platform";
mc->init = mips_r4k_init;
mc->block_default_type = IF_IDE;
}

DEFINE_MACHINE("mips", mips_machine_init)
1 change: 1 addition & 0 deletions hw/ppc/mac_newworld.c
Expand Up @@ -518,6 +518,7 @@ static void core99_machine_class_init(ObjectClass *oc, void *data)

mc->desc = "Mac99 based PowerMAC";
mc->init = ppc_core99_init;
mc->block_default_type = IF_IDE;
mc->max_cpus = MAX_CPUS;
mc->default_boot_order = "cd";
mc->kvm_type = core99_kvm_type;
Expand Down
1 change: 1 addition & 0 deletions hw/ppc/mac_oldworld.c
Expand Up @@ -368,6 +368,7 @@ static void heathrow_machine_init(MachineClass *mc)
{
mc->desc = "Heathrow based PowerMAC";
mc->init = ppc_heathrow_init;
mc->block_default_type = IF_IDE;
mc->max_cpus = MAX_CPUS;
#ifndef TARGET_PPC64
mc->is_default = 1;
Expand Down
1 change: 1 addition & 0 deletions hw/ppc/prep.c
Expand Up @@ -684,6 +684,7 @@ static void prep_machine_init(MachineClass *mc)
{
mc->desc = "PowerPC PREP platform";
mc->init = ppc_prep_init;
mc->block_default_type = IF_IDE;
mc->max_cpus = MAX_CPUS;
mc->default_boot_order = "cad";
}
Expand Down
3 changes: 0 additions & 3 deletions hw/scsi/esp-pci.c
Expand Up @@ -367,9 +367,6 @@ static void esp_pci_scsi_realize(PCIDevice *dev, Error **errp)
s->irq = pci_allocate_irq(dev);

scsi_bus_new(&s->bus, sizeof(s->bus), d, &esp_pci_scsi_info, NULL);
if (!d->hotplugged) {
scsi_bus_legacy_handle_cmdline(&s->bus, errp);
}
}

static void esp_pci_scsi_uninit(PCIDevice *d)
Expand Down
6 changes: 0 additions & 6 deletions hw/scsi/esp.c
Expand Up @@ -690,7 +690,6 @@ static void sysbus_esp_realize(DeviceState *dev, Error **errp)
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
SysBusESPState *sysbus = ESP(dev);
ESPState *s = &sysbus->esp;
Error *err = NULL;

sysbus_init_irq(sbd, &s->irq);
assert(sysbus->it_shift != -1);
Expand All @@ -703,11 +702,6 @@ static void sysbus_esp_realize(DeviceState *dev, Error **errp)
qdev_init_gpio_in(dev, sysbus_esp_gpio_demux, 2);

scsi_bus_new(&s->bus, sizeof(s->bus), dev, &esp_scsi_info, NULL);
scsi_bus_legacy_handle_cmdline(&s->bus, &err);
if (err != NULL) {
error_propagate(errp, err);
return;
}
}

static void sysbus_esp_hard_reset(DeviceState *dev)
Expand Down
10 changes: 7 additions & 3 deletions hw/scsi/lsi53c895a.c
Expand Up @@ -2216,9 +2216,6 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
QTAILQ_INIT(&s->queue);

scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
if (!d->hotplugged) {
scsi_bus_legacy_handle_cmdline(&s->bus, errp);
}
}

static void lsi_scsi_unrealize(DeviceState *dev, Error **errp)
Expand Down Expand Up @@ -2271,3 +2268,10 @@ static void lsi53c895a_register_types(void)
}

type_init(lsi53c895a_register_types)

void lsi53c895a_create(PCIBus *bus)
{
LSIState *s = LSI53C895A(pci_create_simple(bus, -1, "lsi53c895a"));

scsi_bus_legacy_handle_cmdline(&s->bus, false);
}
4 changes: 0 additions & 4 deletions hw/scsi/megasas.c
Expand Up @@ -2325,7 +2325,6 @@ static const struct SCSIBusInfo megasas_scsi_info = {

static void megasas_scsi_realize(PCIDevice *dev, Error **errp)
{
DeviceState *d = DEVICE(dev);
MegasasState *s = MEGASAS(dev);
MegasasBaseClass *b = MEGASAS_DEVICE_GET_CLASS(s);
uint8_t *pci_conf;
Expand Down Expand Up @@ -2426,9 +2425,6 @@ static void megasas_scsi_realize(PCIDevice *dev, Error **errp)

scsi_bus_new(&s->bus, sizeof(s->bus), DEVICE(dev),
&megasas_scsi_info, NULL);
if (!d->hotplugged) {
scsi_bus_legacy_handle_cmdline(&s->bus, errp);
}
}

static Property megasas_properties_gen1[] = {
Expand Down
4 changes: 0 additions & 4 deletions hw/scsi/mptsas.c
Expand Up @@ -1271,7 +1271,6 @@ static const struct SCSIBusInfo mptsas_scsi_info = {

static void mptsas_scsi_realize(PCIDevice *dev, Error **errp)
{
DeviceState *d = DEVICE(dev);
MPTSASState *s = MPT_SAS(dev);
Error *err = NULL;
int ret;
Expand Down Expand Up @@ -1326,9 +1325,6 @@ static void mptsas_scsi_realize(PCIDevice *dev, Error **errp)
QTAILQ_INIT(&s->pending);

scsi_bus_new(&s->bus, sizeof(s->bus), &dev->qdev, &mptsas_scsi_info, NULL);
if (!d->hotplugged) {
scsi_bus_legacy_handle_cmdline(&s->bus, errp);
}
}

static void mptsas_scsi_uninit(PCIDevice *dev)
Expand Down

0 comments on commit a1cf5fa

Please sign in to comment.