Skip to contentSkip to conversation

Floppy: Remove Sense Interrupt Hack

PATCH In review Justin Chevrier 2 participants 4 messages Dec 18, 2008 – Dec 20, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Floppy: Remove Sense Interrupt Hack

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

fdc.c (working copy) renamed from fdc.c (revision 6082) +1 -8
@@ -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);
#1 lore raw
Quoted 15 lines · Justin Chevrier

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.

Quoted 7 lines

Justin

Changelog:

Remove Sense Interrupt hack

It may be a hack, but if we remove it, Sparc64 refuses to boot and prints endlessly:
SENSEI c0 00
SENSEI c0 00
SENSEI c0 00
SENSEI c0 00

#2 lore raw
Quoted 52 lines · Blue Swirl

From: Blue Swirl <[email protected]>
Subject: Re: [Qemu-devel] [PATCH] Floppy: Remove Sense Interrupt Hack
To: [email protected], [email protected]
Date: Friday, December 19, 2008, 2:43 PM

Quoted 3 lines · Justin Chevrier

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

Quoted 1 line

detection/read/writes/formatting still work in

Windows XP SP2.

Quoted 3 lines

Original post:

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

Quoted 3 lines

SVN change:

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

Quoted 2 lines

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?

Quoted 2 lines

If it's no longer needed I propose the patch

below.

Quoted 8 lines

Justin

Changelog:

Remove Sense Interrupt hack

Signed-off-by Justin Chevrier

<[email protected]>

Quoted 7 lines

It may be a hack, but if we remove it, Sparc64 refuses to boot and
prints endlessly:
SENSEI c0 00
SENSEI c0 00
SENSEI c0 00
SENSEI c0 00

Okay, thanks for the feedback!

I'll start looking into what SPARC64 expects here.

Justin

#3 lore raw
Quoted 67 lines · Justin Chevrier
Quoted 53 lines · Blue Swirl

From: Blue Swirl <[email protected]>
Subject: Re: [Qemu-devel] [PATCH] Floppy: Remove Sense Interrupt Hack
To: [email protected], [email protected]
Date: Friday, December 19, 2008, 2:43 PM

Quoted 3 lines · Justin Chevrier

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

Quoted 1 line

detection/read/writes/formatting still work in

Windows XP SP2.

Quoted 3 lines

Original post:

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

Quoted 3 lines

SVN change:

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

Quoted 2 lines

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?

Quoted 2 lines

If it's no longer needed I propose the patch

below.

Quoted 8 lines

Justin

Changelog:

Remove Sense Interrupt hack

Signed-off-by Justin Chevrier

<[email protected]>

Quoted 7 lines

It may be a hack, but if we remove it, Sparc64 refuses to boot and
prints endlessly:
SENSEI c0 00
SENSEI c0 00
SENSEI c0 00
SENSEI c0 00

Quoted 3 lines

Okay, thanks for the feedback!

I'll start looking into what SPARC64 expects here.

The message is printed here:
http://tracker.coreboot.org/trac/openbios/browser/openbios-devel/drivers/floppy.c#L359