qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 16/24] ide: introduce ide_register_restart_cb


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 16/24] ide: introduce ide_register_restart_cb
Date: Wed, 30 Oct 2013 14:19:02 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9

Il 30/10/2013 14:13, Kevin Wolf ha scritto:
> Am 28.10.2013 um 17:43 hat Paolo Bonzini geschrieben:
>> Signed-off-by: Paolo Bonzini <address@hidden>
>> ---
>>  hw/ide/cmd646.c   | 3 +--
>>  hw/ide/core.c     | 5 +++++
>>  hw/ide/internal.h | 1 +
>>  hw/ide/piix.c     | 3 +--
>>  hw/ide/via.c      | 3 +--
>>  5 files changed, 9 insertions(+), 6 deletions(-)
>>
>> diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c
>> index 0500a7a..4753543 100644
>> --- a/hw/ide/cmd646.c
>> +++ b/hw/ide/cmd646.c
>> @@ -294,8 +294,7 @@ static int pci_cmd646_ide_initfn(PCIDevice *dev)
>>  
>>          bmdma_init(&d->bus[i], &d->bmdma[i], d);
>>          d->bmdma[i].bus = &d->bus[i];
>> -        qemu_add_vm_change_state_handler(d->bus[i].dma->ops->restart_cb,
>> -                                         &d->bmdma[i].dma);
>> +        ide_register_restart_cb(&d->bus[i]);
>>      }
>>  
>>      vmstate_register(DEVICE(dev), 0, &vmstate_ide_pci, d);
>> diff --git a/hw/ide/core.c b/hw/ide/core.c
>> index 1e3108c..93cfd46 100644
>> --- a/hw/ide/core.c
>> +++ b/hw/ide/core.c
>> @@ -2193,6 +2193,11 @@ static const IDEDMAOps ide_dma_nop_ops = {
>>      .restart_cb     = ide_nop_restart,
>>  };
>>  
>> +void ide_register_restart_cb(IDEBus *bus)
>> +{
>> +    qemu_add_vm_change_state_handler(bus->dma->ops->restart_cb, bus->dma);
>> +}
>> +
>>  static IDEDMA ide_dma_nop = {
>>      .ops = &ide_dma_nop_ops,
>>      .aiocb = NULL,
>> diff --git a/hw/ide/internal.h b/hw/ide/internal.h
>> index 96969d9..678b33c 100644
>> --- a/hw/ide/internal.h
>> +++ b/hw/ide/internal.h
>> @@ -548,6 +548,7 @@ void ide_init2(IDEBus *bus, qemu_irq irq);
>>  void ide_init2_with_non_qdev_drives(IDEBus *bus, DriveInfo *hd0,
>>                                      DriveInfo *hd1, qemu_irq irq);
>>  void ide_init_ioport(IDEBus *bus, ISADevice *isa, int iobase, int iobase2);
>> +void ide_register_restart_cb(IDEBus *bus);
>>  
>>  void ide_exec_cmd(IDEBus *bus, uint32_t val);
>>  void ide_dma_cb(void *opaque, int ret);
>> diff --git a/hw/ide/piix.c b/hw/ide/piix.c
>> index ab36749..d7f5118 100644
>> --- a/hw/ide/piix.c
>> +++ b/hw/ide/piix.c
>> @@ -143,8 +143,7 @@ static void pci_piix_init_ports(PCIIDEState *d) {
>>  
>>          bmdma_init(&d->bus[i], &d->bmdma[i], d);
>>          d->bmdma[i].bus = &d->bus[i];
>> -        qemu_add_vm_change_state_handler(d->bus[i].dma->ops->restart_cb,
>> -                                         &d->bmdma[i].dma);
>> +        ide_register_restart_cb(&d->bus[i]);
>>      }
>>  }
>>  
>> diff --git a/hw/ide/via.c b/hw/ide/via.c
>> index 99468c7..ae52164 100644
>> --- a/hw/ide/via.c
>> +++ b/hw/ide/via.c
>> @@ -166,8 +166,7 @@ static void vt82c686b_init_ports(PCIIDEState *d) {
>>  
>>          bmdma_init(&d->bus[i], &d->bmdma[i], d);
>>          d->bmdma[i].bus = &d->bus[i];
>> -        qemu_add_vm_change_state_handler(d->bus[i].dma->ops->restart_cb,
>> -                                         &d->bmdma[i].dma);
>> +        ide_register_restart_cb(&d->bus[i]);
>>      }
>>  }
> 
> Can't we instead register a callback somewhere in core.c?

Yeah, once more we need to abstract the legacy I/O ports better for that.

Paolo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]