From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MVTG8-00012z-77 for qemu-devel@nongnu.org; Mon, 27 Jul 2009 12:41:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MVTG3-000109-I4 for qemu-devel@nongnu.org; Mon, 27 Jul 2009 12:41:07 -0400 Received: from [199.232.76.173] (port=33706 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MVTG3-000103-Dr for qemu-devel@nongnu.org; Mon, 27 Jul 2009 12:41:03 -0400 Received: from mx2.redhat.com ([66.187.237.31]:34878) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MVTG2-0002Ih-TB for qemu-devel@nongnu.org; Mon, 27 Jul 2009 12:41:03 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n6RGf1Jf006222 for ; Mon, 27 Jul 2009 12:41:01 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n6RGf0Up020182 for ; Mon, 27 Jul 2009 12:41:00 -0400 Received: from [10.35.0.60] (dhcp-0-60.tlv.redhat.com [10.35.0.60]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n6RGexSv012179 for ; Mon, 27 Jul 2009 12:40:59 -0400 Message-ID: <4A6DD8F0.5060606@redhat.com> Date: Mon, 27 Jul 2009 19:42:24 +0300 From: Naphtali Sprei MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH] call ide_reset when resetting the piix List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org In some cases reboot sequence fails to detect the ide device in the rombios sequence for ata_detect, since ioport writes are ignored when the ide device status indicates busy or data request in progres. The ide if must be reset when system reset. Signed-off-by: Naphtali Sprei --- hw/ide.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) diff --git a/hw/ide.c b/hw/ide.c index f3787f2..4bf0987 100644 --- a/hw/ide.c +++ b/hw/ide.c @@ -3352,6 +3352,8 @@ static void piix3_reset(void *opaque) for (i = 0; i < 2; i++) ide_dma_cancel(&d->bmdma[i]); + for (i = 0; i < 4; i++) + ide_reset(&d->ide_if[i]); pci_conf[0x04] = 0x00; pci_conf[0x05] = 0x00; @@ -3383,9 +3385,6 @@ void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, pci_config_set_class(pci_conf, PCI_CLASS_STORAGE_IDE); pci_conf[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_NORMAL; // header_type - qemu_register_reset(piix3_reset, 0, d); - piix3_reset(d); - pci_register_bar((PCIDevice *)d, 4, 0x10, PCI_ADDRESS_SPACE_IO, bmdma_map); @@ -3398,6 +3397,9 @@ void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, if (hd_table[i]) hd_table[i]->private = &d->dev; + qemu_register_reset(piix3_reset, 0, d); + piix3_reset(d); + register_savevm("ide", 0, 2, pci_ide_save, pci_ide_load, d); } @@ -3423,9 +3425,6 @@ void pci_piix4_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, pci_config_set_class(pci_conf, PCI_CLASS_STORAGE_IDE); pci_conf[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_NORMAL; // header_type - qemu_register_reset(piix3_reset, 0, d); - piix3_reset(d); - pci_register_bar((PCIDevice *)d, 4, 0x10, PCI_ADDRESS_SPACE_IO, bmdma_map); @@ -3434,6 +3433,9 @@ void pci_piix4_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, ide_init_ioport(&d->ide_if[0], 0x1f0, 0x3f6); ide_init_ioport(&d->ide_if[2], 0x170, 0x376); + qemu_register_reset(piix3_reset, 0, d); + piix3_reset(d); + register_savevm("ide", 0, 2, pci_ide_save, pci_ide_load, d); } -- 1.5.5.6