Floppy: Remove Sense Interrupt Hack
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);
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_SEEKinstead 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.htmlSVN change:
http://svn.savannah.gnu.org/viewvc?view=rev&root=qemu&revision=1118Having 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
Signed-off-by Justin Chevrier <[email protected]>
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 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 PMQuoted 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_SEEKinstead 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 thatQuoted 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
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
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 PMQuoted 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_SEEKinstead 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 thatQuoted 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 ChevrierQuoted 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