2002-02-02 01:38:08

by Alessandro Suardi

[permalink] [raw]
Subject: modular floppy broken in 2.5.3

Trying to modprobe it yields

[root@dolphin root]# modprobe floppy
/lib/modules/2.5.3/kernel/drivers/block/floppy.o: init_module: Device or resource busy
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
/lib/modules/2.5.3/kernel/drivers/block/floppy.o: insmod /lib/modules/2.5.3/kernel/drivers/block/floppy.o failed
/lib/modules/2.5.3/kernel/drivers/block/floppy.o: insmod floppy failed

and dmesg says

inserting floppy driver for 2.5.3
Floppy drive(s): fd0 is 1.44M
floppy0: Floppy io-port 0x03f0 in use

I haven't been using floppy.o for some times so I can't tell
when this broke. I'll give recent 2.5.x kernels a spin and
report (if nobody provided other suggestions).

Thanks,

--alessandro

"this machine will, will not communicate
these thoughts and the strain I am under
be a world child, form a circle before we all go under"
(Radiohead, "Street Spirit [fade out]")


2002-02-03 20:47:51

by Alessandro Suardi

[permalink] [raw]
Subject: Re: modular floppy broken in 2.5.3

Alessandro Suardi wrote:
>
> Trying to modprobe it yields
>
> [root@dolphin root]# modprobe floppy
> /lib/modules/2.5.3/kernel/drivers/block/floppy.o: init_module: Device or resource busy
> Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
> /lib/modules/2.5.3/kernel/drivers/block/floppy.o: insmod /lib/modules/2.5.3/kernel/drivers/block/floppy.o failed
> /lib/modules/2.5.3/kernel/drivers/block/floppy.o: insmod floppy failed
>
> and dmesg says
>
> inserting floppy driver for 2.5.3
> Floppy drive(s): fd0 is 1.44M
> floppy0: Floppy io-port 0x03f0 in use
>

A simple but nice hint by Pierre Rousselet suggested the I/O port
is in use - I plain assumed it broke because I have been loading
modular floppy for the last 36 months or so without specifying
any parameters...

It turns out this is due to the new PnPBIOS kernel config option:

[asuardi@dolphin asuardi]$ grep PnPBIOS /proc/ioports
03f0-03f1 : PnPBIOS PNP0c01
0600-067f : PnPBIOS PNP0c01
0680-06ff : PnPBIOS PNP0c01
0800-083f : PnPBIOS PNP0c01
0840-084f : PnPBIOS PNP0c01
0880-088f : PnPBIOS PNP0c01
f400-f4fe : PnPBIOS PNP0c01

But since modular floppy was working before without setting any
ioport parameter I'm not entirely sure this is a "feature".


Thanks,

--alessandro

"this machine will, will not communicate
these thoughts and the strain I am under
be a world child, form a circle before we all go under"
(Radiohead, "Street Spirit [fade out]")

2002-02-03 21:10:08

by Alan

[permalink] [raw]
Subject: Re: modular floppy broken in 2.5.3

> It turns out this is due to the new PnPBIOS kernel config option:
>
> [asuardi@dolphin asuardi]$ grep PnPBIOS /proc/ioports
> 03f0-03f1 : PnPBIOS PNP0c01
> 0600-067f : PnPBIOS PNP0c01
> 0680-06ff : PnPBIOS PNP0c01
> 0800-083f : PnPBIOS PNP0c01
> 0840-084f : PnPBIOS PNP0c01
> 0880-088f : PnPBIOS PNP0c01
> f400-f4fe : PnPBIOS PNP0c01
>
> But since modular floppy was working before without setting any
> ioport parameter I'm not entirely sure this is a "feature".

Its a mix of fp and pnpbios things that need untangling. PnPBIOS should
register the resource as not in use, floppy should allocate the right
things not blindly reserve the wrong sized chunks

2002-02-04 17:30:02

by Gunther Mayer

[permalink] [raw]
Subject: Re: modular floppy broken in 2.5.3

Alan Cox wrote:

> > It turns out this is due to the new PnPBIOS kernel config option:
> >
> > [asuardi@dolphin asuardi]$ grep PnPBIOS /proc/ioports
> > 03f0-03f1 : PnPBIOS PNP0c01
> > 0600-067f : PnPBIOS PNP0c01
> > 0680-06ff : PnPBIOS PNP0c01
> > 0800-083f : PnPBIOS PNP0c01
> > 0840-084f : PnPBIOS PNP0c01
> > 0880-088f : PnPBIOS PNP0c01
> > f400-f4fe : PnPBIOS PNP0c01
> >
> > But since modular floppy was working before without setting any
> > ioport parameter I'm not entirely sure this is a "feature".
>
> Its a mix of fp and pnpbios things that need untangling. PnPBIOS should
> register the resource as not in use, floppy should allocate the right

PNPNIOS is right to reserve PNP0C01 as "used". Else there will be hangs
when drivers poke in io space (e.g. laptops tend to have special
hardware which doesn't like to be touched).

PNPBIOS should not reserve 3f0/3f1 as a _workaround_ for this BIOS bug.

The BIOS probably wants to tell you there is a superio chip at 0x3f0
(try http://home.t-online.de/home/gunther.mayer/lssuperio-0.63.tar.gz).



2002-02-04 19:27:02

by Thomas Hood

[permalink] [raw]
Subject: Re: modular floppy broken in 2.5.3

Gunther Mayer wrote:
> PNPNIOS is right to reserve PNP0C01 as
> "used". Else there will be hangs when
> drivers poke in io space (e.g. laptops
> tend to have special hardware which
> doesn't like to be touched).
> [...]
> The BIOS probably wants to tell you there
> is a superio chip at 0x3f0

The floppy controller commonly uses io ports
0x3f2-0x3f5 and 0x3f7. 0x3f0-0x3f1 were used
by the floppy controller on the PC AT (only).
The latter two ports are now frequently used
for superio chips or other motherboard
devices, as the BIOS will report. PnPBIOS
is acting properly in reserving the ports.

Since the floppy driver does not use ioports
0x3f0-0x3f1 it should not reserve them.

The issue was previously discussed in this
thread:
http://marc.theaimsgroup.com/?l=linux-kernel&m=100516032204531&w=2
http://marc.theaimsgroup.com/?l=linux-kernel&m=100495936122982&w=2
and the conclusion, I believe, was that the
floppy driver should be patched so as not to
reserve 0x3f0 and 0x3f1. Someone even
submitted a patch.

> PNPBIOS should not reserve 3f0/3f1
> as a _workaround_ for this BIOS bug.

The correct solution is to modify the floppy
driver.

Until that happens, use the "pnpbios=no-res"
option, which prevents pnpbios from reserving
any ioports.

--
Thomas Hood

--

_______________________________________________
Sign-up for your own FREE Personalized E-mail at Mail.com
http://www.mail.com/?sr=signup

Win a ski trip!
http://www.nowcode.com/register.asp?affiliate=1net2phone3a


2002-02-04 23:58:29

by Thomas Hood

[permalink] [raw]
Subject: Re: modular floppy broken in 2.5.3

Alan Cox wrote:
> ... PnPBIOS should register the resource as not in use ..

I believe that this is what it currently does.


2002-02-05 10:12:42

by Alessandro Suardi

[permalink] [raw]
Subject: Re: modular floppy broken in 2.5.3

Gunther Mayer wrote:
>
> Alan Cox wrote:
>
> > > It turns out this is due to the new PnPBIOS kernel config option:
> > >
> > > [asuardi@dolphin asuardi]$ grep PnPBIOS /proc/ioports
> > > 03f0-03f1 : PnPBIOS PNP0c01
> > > 0600-067f : PnPBIOS PNP0c01
> > > 0680-06ff : PnPBIOS PNP0c01
> > > 0800-083f : PnPBIOS PNP0c01
> > > 0840-084f : PnPBIOS PNP0c01
> > > 0880-088f : PnPBIOS PNP0c01
> > > f400-f4fe : PnPBIOS PNP0c01
> > >
> > > But since modular floppy was working before without setting any
> > > ioport parameter I'm not entirely sure this is a "feature".
> >
> > Its a mix of fp and pnpbios things that need untangling. PnPBIOS should
> > register the resource as not in use, floppy should allocate the right
>
> PNPNIOS is right to reserve PNP0C01 as "used". Else there will be hangs
> when drivers poke in io space (e.g. laptops tend to have special
> hardware which doesn't like to be touched).
>
> PNPBIOS should not reserve 3f0/3f1 as a _workaround_ for this BIOS bug.
>
> The BIOS probably wants to tell you there is a superio chip at 0x3f0
> (try http://home.t-online.de/home/gunther.mayer/lssuperio-0.63.tar.gz).

And here it goes...


lssuperio V0.63 (EXPERIMENTAL)

Winbond Super-IO detection, now testing ports 3F0,370,250,4E,2E ...
SMSC Super-IO detection, now testing Ports 2F0, 370, 2E, 4E ...
SMSC chip at EFER=0x3f0 key=0x55 id=09 rev=08
oldid=0x00 oldrev=0x00
LDN 0( FDC): io=0x3f0, irq= 6, dma= 1
LDN 1(reserved): Disabled.
LDN 2(reserved): Disabled.
LDN 3( LPT): io=0x378, irq= 7, dma=No
LDN 4( UART_A): io=0x3f8, irq= 4, dma=No
LDN 5( UART_B): io=0x3e8, io2=0x290, irq= 4, dma= 3
LDN 6(reserved): io=0x0, irq= 8, dma=No
LDN 7( KBC): io=0x0, irq= 1, irq2=12, dma=No
LDN 8(reserved): Disabled.
LDN 9(Gameport): Disabled.
LDN a( PME): Disabled.
LDN b( MPU-401): Disabled.
LPT mode=ECP FIFO thresh.=7
SMSC chip type 37n958
National Semiconductor Super-IO detection,now testing port 2E,4E,15C,26E,398 ...ITE Super-IO detection testing ports 2E,4E,279,370/371 ...
ALI Super-IO detection testing ports 370,398,3F0 ...
Intel Super-IO detection testing ports 26E, 398 ...

--alessandro

"this machine will, will not communicate
these thoughts and the strain I am under
be a world child, form a circle before we all go under"
(Radiohead, "Street Spirit [fade out]")

2002-02-07 01:31:05

by Thomas Hood

[permalink] [raw]
Subject: Re: modular floppy broken in 2.5.3

The latest version of the PnP BIOS driver, available at:
http://panopticon.csustan.edu/thood/pnpbios.html
refrains from reserving ioports 0x3f0 and 0x3f1. This
is a temporary fix for the floppy problem. I hope
someone will fix the floppy driver soon so that this
change can be reverted.

Note that at earlier version of the driver was included
in 2.4.18-pre7-ac2 and an even earlier version was
included in 2.5.3. If you are using either of these
kernels and you don't want to update the pnpbios driver
then boot with "pnpbios=no-res".

--
Thomas