qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3 4/9] ide: Drop redundant IDEState member bs


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v3 4/9] ide: Drop redundant IDEState member bs
Date: Thu, 06 Feb 2014 08:02:00 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux)

Stefano Stabellini <address@hidden> writes:

> On Wed, 5 Feb 2014, Markus Armbruster wrote:
>> [Note cc: Stefano]
>> 
>> Kevin Wolf <address@hidden> writes:
>> 
>> > Am 30.01.2014 um 13:16 hat Markus Armbruster geschrieben:
>> >> It's a copy of dev->conf.bs.  The copy was needed for non-qdevified
>> >> controllers, which lacked dev.
>> >> 
>> >> Note how pci_piix3_xen_ide_unplug() cleared the copy.  We'll get back
>> >> to that in the next few commits.
>> >> 
>> >> Signed-off-by: Markus Armbruster <address@hidden>
>> >
>> > So this pci_piix3_xen_ide_unplug() is what happens here:
>> >
>> >> --- a/hw/ide/piix.c
>> >> +++ b/hw/ide/piix.c
>> >> @@ -169,12 +169,9 @@ static int pci_piix_ide_initfn(PCIDevice *dev)
>> >>  
>> >>  static int pci_piix3_xen_ide_unplug(DeviceState *dev)
>> >>  {
>> >> -    PCIIDEState *pci_ide;
>> >>      DriveInfo *di;
>> >>      int i = 0;
>> >>  
>> >> -    pci_ide = PCI_IDE(dev);
>> >> -
>> >>      for (; i < 3; i++) {
>> >>          di = drive_get_by_index(IF_IDE, i);
>> >>          if (di != NULL && !di->media_cd) {
>> >> @@ -183,7 +180,6 @@ static int pci_piix3_xen_ide_unplug(DeviceState *dev)
>> >>                  bdrv_detach_dev(di->bdrv, ds);
>> >>              }
>> >>              bdrv_close(di->bdrv);
>> >> -            pci_ide->bus[di->bus].ifs[di->unit].bs = NULL;
>> >>              drive_put_ref(di);
>> >>          }
>> >>      }
>> >
>> > Probably I'm just missing the obvious, but it seems to me that the
>> > copy was cleared here, while the original was left around. This was
>> > no problem because the original was unused anyway after device
>> > initialisation.
>> >
>> > Now that the copy doesn't exist any more, we can't clear it, obviously,
>> > but why don't we have to clear the original? Won't we still run the
>> > "device is attached" code branches even though the device is really
>> > unplugged?
>> 
>> It's been a while since I wrote this.  Almost 14 months, in fact.
>> 
>> No other IDE controller implements DeviceClass method unplug().  I can't
>> remember why the normal code to detach the backend (release_drive())
>> doesn't do here.  Stefano, can you help?
>
> Too long to be able to remember the exact details :-/
> However if you point me to a branch I can give it a try and tell you if
> the unplug still works as it used to.

Series trivially rebased to current master available at
git://repo.or.cz/qemu/armbru.git branch kill-non-qdev-ide



reply via email to

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