Commit 49540a1f authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/jnsnow/tags/ide-pull-request' into staging



# gpg: Signature made Thu 29 Sep 2016 21:13:46 BST
# gpg:                using RSA key 0x7DEF8106AAFC390E
# gpg: Good signature from "John Snow (John Huston) <jsnow@redhat.com>"
# Primary key fingerprint: FAEB 9711 A12C F475 812F  18F2 88A9 064D 1835 61EB
#      Subkey fingerprint: F9B7 ABDB BCAC DF95 BE76  CBD0 7DEF 8106 AAFC 390E

* remotes/jnsnow/tags/ide-pull-request:
  ide: Fix memory leak in ide_register_restart_cb()
  MAINTAINERS: Add some more headers to the IDE section
  ahci: clear aiocb in ncq_cb
  ide: fix DMA register transitions

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents cc9a366d ca44141d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -772,6 +772,7 @@ M: John Snow <jsnow@redhat.com>
L: qemu-block@nongnu.org
S: Supported
F: include/hw/ide.h
F: include/hw/ide/
F: hw/ide/
F: hw/block/block.c
F: hw/block/cdrom.c
+1 −0
Original line number Diff line number Diff line
@@ -948,6 +948,7 @@ static void ncq_cb(void *opaque, int ret)
    NCQTransferState *ncq_tfs = (NCQTransferState *)opaque;
    IDEState *ide_state = &ncq_tfs->drive->port.ifs[0];

    ncq_tfs->aiocb = NULL;
    if (ret == -ECANCELED) {
        return;
    }
+2 −2
Original line number Diff line number Diff line
@@ -908,7 +908,7 @@ eot:

static void ide_sector_start_dma(IDEState *s, enum ide_dma_cmd dma_cmd)
{
    s->status = READY_STAT | SEEK_STAT | DRQ_STAT | BUSY_STAT;
    s->status = READY_STAT | SEEK_STAT | DRQ_STAT;
    s->io_buffer_size = 0;
    s->dma_cmd = dma_cmd;

@@ -2582,7 +2582,7 @@ static void ide_restart_cb(void *opaque, int running, RunState state)
void ide_register_restart_cb(IDEBus *bus)
{
    if (bus->dma->ops->restart_dma) {
        qemu_add_vm_change_state_handler(ide_restart_cb, bus);
        bus->vmstate = qemu_add_vm_change_state_handler(ide_restart_cb, bus);
    }
}

+11 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
/* --------------------------------- */

static char *idebus_get_fw_dev_path(DeviceState *dev);
static void idebus_unrealize(DeviceState *qdev, Error **errp);

static Property ide_props[] = {
    DEFINE_PROP_UINT32("unit", IDEDevice, unit, -1),
@@ -44,6 +45,15 @@ static void ide_bus_class_init(ObjectClass *klass, void *data)
    k->get_fw_dev_path = idebus_get_fw_dev_path;
}

static void idebus_unrealize(DeviceState *qdev, Error **errp)
{
    IDEBus *bus = DO_UPCAST(IDEBus, qbus, qdev->parent_bus);

    if (bus->vmstate) {
        qemu_del_vm_change_state_handler(bus->vmstate);
    }
}

static const TypeInfo ide_bus_info = {
    .name = TYPE_IDE_BUS,
    .parent = TYPE_BUS,
@@ -355,6 +365,7 @@ static void ide_device_class_init(ObjectClass *klass, void *data)
    k->init = ide_qdev_init;
    set_bit(DEVICE_CATEGORY_STORAGE, k->categories);
    k->bus_type = TYPE_IDE_BUS;
    k->unrealize = idebus_unrealize;
    k->props = ide_props;
}

+1 −0
Original line number Diff line number Diff line
@@ -482,6 +482,7 @@ struct IDEBus {
    uint32_t retry_nsector;
    PortioList portio_list;
    PortioList portio2_list;
    VMChangeStateEntry *vmstate;
};

#define TYPE_IDE_DEVICE "ide-device"