qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH] Floppy: Remove Sense Interrupt Hack


From: Justin Chevrier
Subject: [Qemu-devel] [PATCH] Floppy: Remove Sense Interrupt Hack
Date: Thu, 18 Dec 2008 13:14:03 -0800 (PST)

Hey guys,

I'm tracking down the next issue(s) with the Openserver installation. The 
current issue is that during installation when the installer tries to link the 
BLTD (eg. SCSI drivers) drivers into the kernel it is unable to access the 
floppy drive. After reviewing the debug logs it turns out that the installer 
dosen't like the value being returned by Sense Interrupt. The cause of this is 
a hack in the Sense Interrupt code that always returns an OR'd value based on 
FD_SR0_SEEK instead of the actual Status0 regsiter. The hack identifies that 
the floppy code is broken with regard to Status0 and Read/Writes. Outside of 
setting particular values in case of CRC errors/etc I can't identify from 
datasheets what we should be doing. I've tracked down what I believe is the 
original mailing list post regarding this hack and it seems to be related to 
Windows 2000 and higher OS's recognizing the floppy drive. I applied the patch 
below and verified that
 detection/read/writes/formatting still work in Windows XP SP2.

Original post:
http://lists.gnu.org/archive/html/qemu-devel/2004-10/msg00076.html

SVN change:
http://svn.savannah.gnu.org/viewvc?view=rev&root=qemu&revision=1118

Having said the above does anyone know what the comment in the hack is 
referencing? Is it still needed? If so what needs to be done to eliminate it?

If it's no longer needed I propose the patch below.

Justin

Changelog:

Remove Sense Interrupt hack

Signed-off-by: Justin Chevrier <address@hidden>

--- hw/fdc.c    (revision 6082)
+++ hw/fdc.c    (working copy)
@@ -1601,16 +1601,9 @@
 {
     fdrive_t *cur_drv = get_cur_drv(fdctrl);

-#if 0
     fdctrl->fifo[0] =
         fdctrl->status0 | (cur_drv->head << 2) | GET_CUR_DRV(fdctrl);
-#else
-    /* XXX: status0 handling is broken for read/write
-       commands, so we do this hack. It should be suppressed
-       ASAP */
-    fdctrl->fifo[0] =
-        FD_SR0_SEEK | (cur_drv->head << 2) | GET_CUR_DRV(fdctrl);
-#endif
+
     fdctrl->fifo[1] = cur_drv->track;
     fdctrl_set_fifo(fdctrl, 2, 0);
     fdctrl_reset_irq(fdctrl);


      




reply via email to

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