Revision 90228ee3

b/hw/ide/cmd646.c
70 70

  
71 71
static PCIIDEState *pci_from_bm(BMDMAState *bm)
72 72
{
73
    if (bm->unit == 0) {
74
        return container_of(bm, PCIIDEState, bmdma[0]);
75
    } else {
76
        return container_of(bm, PCIIDEState, bmdma[1]);
77
    }
73
    return bm->pci_dev;
78 74
}
79 75

  
80 76
static uint32_t bmdma_readb(void *opaque, uint32_t addr)
......
145 141
        BMDMAState *bm = &d->bmdma[i];
146 142
        d->bus[i].bmdma = bm;
147 143
        bm->bus = d->bus+i;
144
        bm->pci_dev = d;
148 145
        qemu_add_vm_change_state_handler(ide_dma_restart_cb, bm);
149 146

  
150 147
        register_ioport_write(addr, 1, 1, bmdma_cmd_writeb, bm);
b/hw/ide/internal.h
474 474
    uint8_t status;
475 475
    uint32_t addr;
476 476

  
477
    struct PCIIDEState *pci_dev;
477 478
    IDEBus *bus;
478 479
    /* current transfer state */
479 480
    uint32_t cur_addr;
b/hw/ide/piix.c
78 78
        BMDMAState *bm = &d->bmdma[i];
79 79
        d->bus[i].bmdma = bm;
80 80
        bm->bus = d->bus+i;
81
        bm->pci_dev = d;
81 82
        qemu_add_vm_change_state_handler(ide_dma_restart_cb, bm);
82 83

  
83 84
        register_ioport_write(addr, 1, 1, bmdma_cmd_writeb, bm);

Also available in: Unified diff