mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
rombios/ata: wait for BSY to clear after write
After rombios transfers the data for a write, it checks the status and fails if BSY is set. qemu-trad doesn't set BSY for PIO writes, but QEMU upstream does, and this causes rombios to fail writes because they are marked as BSY. Instead, wait for BSY to clear after a write. INT 13 writes are probably rarely used these days, but they are used by GRUB 2 to write to its environment file which happens by default on Ubuntu. Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
592e834522
commit
4c09689153
1 file changed
+1
-1
@@ -3226,7 +3226,7 @@ ASM_END
|
||||
current++;
|
||||
write_word(ebda_seg, &EbdaData->ata.trsfsectors,current);
|
||||
count--;
|
||||
status = inb(iobase1 + ATA_CB_STAT);
|
||||
status = await_ide(NOT_BSY, iobase1, IDE_TIMEOUT);
|
||||
if (count == 0) {
|
||||
if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) )
|
||||
!= ATA_CB_STAT_RDY ) {
|
||||
|
||||