From c45ca54ff98c29551fadf9e8f64eb43d54cdcb0c Mon Sep 17 00:00:00 2001 From: aliguori Date: Thu, 8 Jan 2009 21:03:07 +0000 Subject: [PATCH] IDE: Return zero when reading error register with slave selected (Justin Chevrier) During hardware detection Openserver issues commands to slaves on both primary and secondary ports. We already return a zero for the status register in this situation but after reading the status register the Openserver installer proceeds to check the value of the error register. Currently we return the existing value in the register. This confuses the installer and it tries to access the slave units later on. When the command that gets issued later gets ignored the installer freezes. The patch below returns zero when reading the error register if a slave unit is selected. Openserver can now successfully be installed using the emulated IDE hard drive. Return zero when reading error register with slave selected Signed-off-by: Justin Chevrier Signed-off-by: Anthony Liguori git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6252 c046a42c-6fe2-441c-8c8c-71466251a162 --- hw/ide.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/ide.c b/hw/ide.c index 7a897c082b..7dd41f7aae 100644 --- a/hw/ide.c +++ b/hw/ide.c @@ -2467,7 +2467,8 @@ static uint32_t ide_ioport_read(void *opaque, uint32_t addr1) ret = 0xff; break; case 1: - if (!ide_if[0].bs && !ide_if[1].bs) + if ((!ide_if[0].bs && !ide_if[1].bs) || + (s != ide_if && !s->bs)) ret = 0; else if (!hob) ret = s->error;