[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] Floppy: Remove Sense Interrupt Hack
From: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] [PATCH] Floppy: Remove Sense Interrupt Hack |
Date: |
Tue, 23 Dec 2008 20:13:23 +0200 |
On 12/23/08, Justin Chevrier <address@hidden> wrote:
> --- On Sat, 12/20/08, Blue Swirl <address@hidden> wrote:
>
> > From: Blue Swirl <address@hidden>
> > Subject: Re: [Qemu-devel] [PATCH] Floppy: Remove Sense Interrupt Hack
> > To: address@hidden
>
> > Cc: address@hidden
> > Date: Saturday, December 20, 2008, 5:54 AM
>
> > On 12/19/08, Justin Chevrier <address@hidden>
> > wrote:
> > >
> > >
> > >
> > > --- On Fri, 12/19/08, Blue Swirl
> > <address@hidden> wrote:
> > >
> > > > From: Blue Swirl <address@hidden>
> > > > Subject: Re: [Qemu-devel] [PATCH] Floppy: Remove
> > Sense Interrupt Hack
> > > > To: address@hidden, address@hidden
> > > > Date: Friday, December 19, 2008, 2:43 PM
> > >
> > > > On 12/18/08, Justin Chevrier
> > <address@hidden>
> > > > wrote:
> > > > > 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>
> > > >
> > > > 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.
> >
> > The message is printed here:
> >
> http://tracker.coreboot.org/trac/openbios/browser/openbios-devel/drivers/floppy.c#L359
>
>
> Thanks again!
>
> Does the patch below work for you?
>
> In this version we return 0xc0 (polling) for the first interrupt status
> after reset (Openserver appears to require this). After returning 0xc0 we set
> the Status0 register to 0x20 (seek complete). This should work as the spec
> says Sense Interrupt should be called up to 4 times to retrieve the queued
> status values. Tested successfully in both Windows 98 and XP SP2.
Yes, now it also works on Sparc64:
floppy_motor_off
SENSEI c0 00
SENSEI 20 00
status = 80, reply_buffer= 20 0
>
> It also appears that the code referenced in the link loops infinitely due to
> a missing: "max_sensei--;" which is present in the Linux Kernel's equivalent
> code.
Thanks, I'll try that.
Re: [Qemu-devel] [PATCH] Floppy: Remove Sense Interrupt Hack, Justin Chevrier, 2008/12/23