Commit c45ca54ff98c29551fadf9e8f64eb43d54cdcb0c

Authored by aliguori
1 parent 5df23f53

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 <theburner1@yahoo.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6252 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 2 additions and 1 deletions
hw/ide.c
... ... @@ -2467,7 +2467,8 @@ static uint32_t ide_ioport_read(void *opaque, uint32_t addr1)
2467 2467 ret = 0xff;
2468 2468 break;
2469 2469 case 1:
2470   - if (!ide_if[0].bs && !ide_if[1].bs)
  2470 + if ((!ide_if[0].bs && !ide_if[1].bs) ||
  2471 + (s != ide_if && !s->bs))
2471 2472 ret = 0;
2472 2473 else if (!hob)
2473 2474 ret = s->error;
... ...