diff options
author | Fathi Boudra <fathi.boudra@linaro.org> | 2013-08-05 10:19:49 +0300 |
---|---|---|
committer | Fathi Boudra <fathi.boudra@linaro.org> | 2013-08-05 10:19:49 +0300 |
commit | 86342dcc9b73eac8310b9dc5fd1356bbfa5b9c8e (patch) | |
tree | c9987b94bab825a920990236234da4747d565f37 /hw/ide/qdev.c | |
parent | 050a840ead5e51a1a9f3bffe89cc89077b2f35ed (diff) |
Imported Upstream version 1.5.0-2013.06+git74+20130802+ef1b0aeupstream
Diffstat (limited to 'hw/ide/qdev.c')
-rw-r--r-- | hw/ide/qdev.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c index c436b38..6a272b0 100644 --- a/hw/ide/qdev.c +++ b/hw/ide/qdev.c @@ -21,7 +21,7 @@ #include "qemu/error-report.h" #include <hw/ide/internal.h> #include "sysemu/blockdev.h" -#include "hw/block-common.h" +#include "hw/block/block.h" #include "sysemu/sysemu.h" /* --------------------------------- */ @@ -47,10 +47,11 @@ static const TypeInfo ide_bus_info = { .class_init = ide_bus_class_init, }; -void ide_bus_new(IDEBus *idebus, DeviceState *dev, int bus_id) +void ide_bus_new(IDEBus *idebus, DeviceState *dev, int bus_id, int max_units) { qbus_create_inplace(&idebus->qbus, TYPE_IDE_BUS, dev, NULL); idebus->bus_id = bus_id; + idebus->max_units = max_units; } static char *idebus_get_fw_dev_path(DeviceState *dev) @@ -76,6 +77,13 @@ static int ide_qdev_init(DeviceState *qdev) if (dev->unit == -1) { dev->unit = bus->master ? 1 : 0; } + + if (dev->unit >= bus->max_units) { + error_report("Can't create IDE unit %d, bus supports only %d units", + dev->unit, bus->max_units); + goto err; + } + switch (dev->unit) { case 0: if (bus->master) { @@ -143,7 +151,10 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind) IDEBus *bus = DO_UPCAST(IDEBus, qbus, dev->qdev.parent_bus); IDEState *s = bus->ifs + dev->unit; - if (dev->conf.discard_granularity && dev->conf.discard_granularity != 512) { + if (dev->conf.discard_granularity == -1) { + dev->conf.discard_granularity = 512; + } else if (dev->conf.discard_granularity && + dev->conf.discard_granularity != 512) { error_report("discard_granularity must be 512 for ide"); return -1; } |