* PROBLEM: floppy motor spins when floppy module not installed @ 2003-12-12 13:57 Dale Mellor 2003-12-12 14:18 ` Måns Rullgård 2003-12-12 14:59 ` Richard B. Johnson 0 siblings, 2 replies; 20+ messages in thread From: Dale Mellor @ 2003-12-12 13:57 UTC (permalink / raw) To: linux-kernel 1. Floppy motor spins when floppy module not installed. 2. From the moment of bootup, the floppy drive motor spins when the kernel is compiled to use the floppy driver as a module and this is not installed (the motor stops as soon as the module is installed). 3. Keywords: floppy, module, kernel, boot. 4. Kernel version 2.6.0-test11 5. 6. 7. 7.1 Gnu C 3.2.1 Gnu make 3.80 util-linux 2.11y mount 2.11y module-init-tools 0.9.8 e2fsprogs 1.28 reiserfsprogs 3.x.1b pcmcia-cs 3.2.5 PPP 2.4.2b3 nfs-utils 1.0.6 Linux C Library 2.3.2 Dynamic linker (ldd) 2.3.2 Procps 2.0.7 Net-tools 1.60 Kbd command Sh-utils 5.0 Modules Loaded ymfpci ac97_codec soundcore pcnet_cs 8390 crc32 ipv6 pegasus 7.2 processor : 0 vendor_id : GenuineTMx86 cpu family : 6 model : 4 model name : Transmeta(tm) Crusoe(tm) Processor TM5600 stepping : 3 cpu MHz : 595.732 cache size : 512 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr cx8 cmov mmx longrun bogomips : 1085.44 7.3 ymfpci 49280 0 - Live 0xc78ed000 ac97_codec 18080 1 ymfpci, Live 0xc78d2000 soundcore 8064 1 ymfpci, Live 0xc78bc000 pcnet_cs 16484 1 - Live 0xc78d8000 8390 9824 1 pcnet_cs, Live 0xc78ce000 crc32 4096 1 8390, Live 0xc78bf000 ipv6 238400 20 - Live 0xc790f000 pegasus 21024 0 - Live 0xc78c3000 7.4 0000-001f : dma1 0020-0021 : pic1 0040-005f : timer 0060-006f : keyboard 0080-008f : dma page reg 00a0-00a1 : pic2 00c0-00df : dma2 00f0-00ff : fpu 01f0-01f7 : ide0 02f8-02ff : pcnet_cs 0300-031f : pcnet_cs 03c0-03df : vga+ 03f6-03f6 : ide0 0cf8-0cff : PCI conf1 1000-100f : 0000:00:07.1 1000-1007 : ide0 1008-100f : ide1 1010-1013 : 0000:00:09.0 1020-103f : 0000:00:07.2 1020-103f : uhci_hcd 1040-105f : 0000:00:07.3 1080-10bf : 0000:00:09.0 10c0-10c7 : Sony Programable I/O Device 1400-14ff : 0000:00:0d.0 4000-40ff : PCI CardBus #01 4400-44ff : PCI CardBus #01 8000-803f : 0000:00:07.3 00000000-0009b7ff : System RAM 0009b800-0009ffff : reserved 000a0000-000bffff : Video RAM area 000c0000-000c7fff : Video ROM 000f0000-000fffff : System ROM 00100000-06feffff : System RAM 00100000-002b4d37 : Kernel code 002b4d38-0035ff9f : Kernel data 06ff0000-06fff7ff : ACPI Tables 06fff800-06ffffff : ACPI Non-volatile Storage 10000000-10000fff : 0000:00:0c.0 10000000-10000fff : yenta_socket 10400000-107fffff : PCI CardBus #01 10800000-10bfffff : PCI CardBus #01 a0000000-a0000fff : card services fc000000-fc0fffff : 0000:00:00.0 fc100000-fc103fff : 0000:00:08.0 fc104000-fc1047ff : 0000:00:08.0 fc104800-fc1049ff : 0000:00:0b.0 fc105000-fc105fff : 0000:00:0d.0 fc108000-fc10ffff : 0000:00:09.0 fc108000-fc10ffff : ymfpci fd000000-fdffffff : 0000:00:0d.0 fff80000-ffffffff : reserved 7.5 7.6 7.7 X. Workaround: either install the module and then uninstall it; or kill the penguin ;-) (sorry, couldn't resist...) ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 13:57 PROBLEM: floppy motor spins when floppy module not installed Dale Mellor @ 2003-12-12 14:18 ` Måns Rullgård 2003-12-12 15:04 ` Richard B. Johnson 2003-12-13 13:18 ` Helge Hafting 2003-12-12 14:59 ` Richard B. Johnson 1 sibling, 2 replies; 20+ messages in thread From: Måns Rullgård @ 2003-12-12 14:18 UTC (permalink / raw) To: linux-kernel Dale Mellor <dale@dmellor.dabsol.co.uk> writes: > 1. Floppy motor spins when floppy module not installed. It's a known problem. Some broken BIOSes don't turn off the motor after probing for a disk. One solution is to change the boot priority in the BIOS settings so the hard disk is tried before floppy. If you ever need to boot from a floppy, you can change it back. -- Måns Rullgård mru@kth.se ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 14:18 ` Måns Rullgård @ 2003-12-12 15:04 ` Richard B. Johnson 2003-12-12 15:11 ` Måns Rullgård 2003-12-12 19:28 ` John Bradford 2003-12-13 13:18 ` Helge Hafting 1 sibling, 2 replies; 20+ messages in thread From: Richard B. Johnson @ 2003-12-12 15:04 UTC (permalink / raw) To: Måns Rullgård; +Cc: linux-kernel On Fri, 12 Dec 2003, [iso-8859-1] Måns Rullgård wrote: > Dale Mellor <dale@dmellor.dabsol.co.uk> writes: > > > 1. Floppy motor spins when floppy module not installed. > > It's a known problem. Some broken BIOSes don't turn off the motor > after probing for a disk. One solution is to change the boot priority > in the BIOS settings so the hard disk is tried before floppy. If you > ever need to boot from a floppy, you can change it back. > > -- > Måns Rullgård > mru@kth.se It is not a broken BIOS! The BIOS timer that ticks 18.206 times per second has an ISR that, in addition to keeping time, turns OFF the FDC motor after two seconds of inactivity. This ISR is taken away by Linux. Therefore Linux must turn off that motor! It is a Linux bug, not a BIOS bug. Linux took control away from the BIOS during boot. Cheers, Dick Johnson Penguin : Linux version 2.4.22 on an i686 machine (797.90 BogoMips). Note 96.31% of all statistics are fiction. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 15:04 ` Richard B. Johnson @ 2003-12-12 15:11 ` Måns Rullgård 2003-12-12 15:20 ` Richard B. Johnson 2003-12-12 16:00 ` Matthew Kirkwood 2003-12-12 19:28 ` John Bradford 1 sibling, 2 replies; 20+ messages in thread From: Måns Rullgård @ 2003-12-12 15:11 UTC (permalink / raw) To: linux-kernel "Richard B. Johnson" <root@chaos.analogic.com> writes: > On Fri, 12 Dec 2003, [iso-8859-1] Måns Rullgård wrote: > >> Dale Mellor <dale@dmellor.dabsol.co.uk> writes: >> >> > 1. Floppy motor spins when floppy module not installed. >> >> It's a known problem. Some broken BIOSes don't turn off the motor >> after probing for a disk. One solution is to change the boot priority >> in the BIOS settings so the hard disk is tried before floppy. If you >> ever need to boot from a floppy, you can change it back. > > It is not a broken BIOS! The BIOS timer that ticks 18.206 times > per second has an ISR that, in addition to keeping time, turns > OFF the FDC motor after two seconds of inactivity. This ISR is taken > away by Linux. Therefore Linux must turn off that motor! It is a > Linux bug, not a BIOS bug. Linux took control away from the BIOS > during boot. OK, but why doesn't it affect all machines? -- Måns Rullgård mru@kth.se ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 15:11 ` Måns Rullgård @ 2003-12-12 15:20 ` Richard B. Johnson 2003-12-12 15:33 ` Måns Rullgård 2003-12-12 16:00 ` Matthew Kirkwood 1 sibling, 1 reply; 20+ messages in thread From: Richard B. Johnson @ 2003-12-12 15:20 UTC (permalink / raw) To: Måns Rullgård; +Cc: linux-kernel On Fri, 12 Dec 2003, [iso-8859-1] Måns Rullgård wrote: > "Richard B. Johnson" <root@chaos.analogic.com> writes: > > > On Fri, 12 Dec 2003, [iso-8859-1] Måns Rullgård wrote: > > > >> Dale Mellor <dale@dmellor.dabsol.co.uk> writes: > >> > >> > 1. Floppy motor spins when floppy module not installed. > >> > >> It's a known problem. Some broken BIOSes don't turn off the motor > >> after probing for a disk. One solution is to change the boot priority > >> in the BIOS settings so the hard disk is tried before floppy. If you > >> ever need to boot from a floppy, you can change it back. > > > > It is not a broken BIOS! The BIOS timer that ticks 18.206 times > > per second has an ISR that, in addition to keeping time, turns > > OFF the FDC motor after two seconds of inactivity. This ISR is taken > > away by Linux. Therefore Linux must turn off that motor! It is a > > Linux bug, not a BIOS bug. Linux took control away from the BIOS > > during boot. > > OK, but why doesn't it affect all machines? > If you leave the FDC software in the kernel, the FDC software sets up everything and turns off the motor. If you have the FDC as a module, you have nothing in there to turn off the motor until you install the module. Cheers, Dick Johnson Penguin : Linux version 2.4.22 on an i686 machine (797.90 BogoMips). Note 96.31% of all statistics are fiction. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 15:20 ` Richard B. Johnson @ 2003-12-12 15:33 ` Måns Rullgård 2003-12-12 16:05 ` Petr Vandrovec 0 siblings, 1 reply; 20+ messages in thread From: Måns Rullgård @ 2003-12-12 15:33 UTC (permalink / raw) To: linux-kernel "Richard B. Johnson" <root@chaos.analogic.com> writes: > On Fri, 12 Dec 2003, [iso-8859-1] Måns Rullgård wrote: > >> "Richard B. Johnson" <root@chaos.analogic.com> writes: >> >> > It is not a broken BIOS! The BIOS timer that ticks 18.206 times >> > per second has an ISR that, in addition to keeping time, turns >> > OFF the FDC motor after two seconds of inactivity. IMHO a ridiculous design, as is most of the PC. >> > This ISR is taken away by Linux. Therefore Linux must turn off >> > that motor! It is a Linux bug, not a BIOS bug. Linux took control >> > away from the BIOS during boot. >> >> OK, but why doesn't it affect all machines? >> > If you leave the FDC software in the kernel, the FDC software > sets up everything and turns off the motor. If you have the > FDC as a module, you have nothing in there to turn off the > motor until you install the module. I'm running 2.6.0-test11 on a machine with modular floppy driver, without any spinning motors. I think it boots from floppy before HD, but I'm not certain (can't check right now). -- Måns Rullgård mru@kth.se ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 15:33 ` Måns Rullgård @ 2003-12-12 16:05 ` Petr Vandrovec 2003-12-12 16:27 ` Måns Rullgård 0 siblings, 1 reply; 20+ messages in thread From: Petr Vandrovec @ 2003-12-12 16:05 UTC (permalink / raw) To: M?ns Rullg?rd; +Cc: linux-kernel On Fri, Dec 12, 2003 at 04:33:57PM +0100, M?ns Rullg?rd wrote: > "Richard B. Johnson" <root@chaos.analogic.com> writes: > > > On Fri, 12 Dec 2003, [iso-8859-1] M?ns Rullg?rd wrote: > > > >> "Richard B. Johnson" <root@chaos.analogic.com> writes: > >> > >> > It is not a broken BIOS! The BIOS timer that ticks 18.206 times > >> > per second has an ISR that, in addition to keeping time, turns > >> > OFF the FDC motor after two seconds of inactivity. > > IMHO a ridiculous design, as is most of the PC. > > >> > This ISR is taken away by Linux. Therefore Linux must turn off > >> > that motor! It is a Linux bug, not a BIOS bug. Linux took control > >> > away from the BIOS during boot. > >> > >> OK, but why doesn't it affect all machines? > >> > > If you leave the FDC software in the kernel, the FDC software > > sets up everything and turns off the motor. If you have the > > FDC as a module, you have nothing in there to turn off the > > motor until you install the module. > > I'm running 2.6.0-test11 on a machine with modular floppy driver, > without any spinning motors. I think it boots from floppy before HD, > but I'm not certain (can't check right now). Maybe because you run patched LILO which works around this 2.6.x brokeness. Debian's #221967 says that 'reset disk subsystem' should stop floppy motor. I'd like to see this black on white... Fortunately Andreas Roland accepted patch instead of reassigning bug to 2.6.x kernel package where it belongs - if kernel does not pass timer IRQ to the BIOS, it is kernel's responsibility to do tasks which BIOS scheduled for future... lilo (1:22.5.8-6) unstable; urgency=low * Now LILO can disable FDC on (weird?) BIOS using 2.6 kernel. (closes: #221967) Petr Vandrovec ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 16:05 ` Petr Vandrovec @ 2003-12-12 16:27 ` Måns Rullgård 2003-12-12 16:41 ` Petr Vandrovec 0 siblings, 1 reply; 20+ messages in thread From: Måns Rullgård @ 2003-12-12 16:27 UTC (permalink / raw) To: linux-kernel Petr Vandrovec <vandrove@vc.cvut.cz> writes: > On Fri, Dec 12, 2003 at 04:33:57PM +0100, M?ns Rullg?rd wrote: >> >> I'm running 2.6.0-test11 on a machine with modular floppy driver, >> without any spinning motors. I think it boots from floppy before HD, >> but I'm not certain (can't check right now). > > Maybe because you run patched LILO which works around this 2.6.x GRUB, actually. Does it mess with the floppy drive? -- Måns Rullgård mru@kth.se ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 16:27 ` Måns Rullgård @ 2003-12-12 16:41 ` Petr Vandrovec 0 siblings, 0 replies; 20+ messages in thread From: Petr Vandrovec @ 2003-12-12 16:41 UTC (permalink / raw) To: M?ns Rullg?rd; +Cc: linux-kernel On Fri, Dec 12, 2003 at 05:27:45PM +0100, M?ns Rullg?rd wrote: > Petr Vandrovec <vandrove@vc.cvut.cz> writes: > > > On Fri, Dec 12, 2003 at 04:33:57PM +0100, M?ns Rullg?rd wrote: > >> > >> I'm running 2.6.0-test11 on a machine with modular floppy driver, > >> without any spinning motors. I think it boots from floppy before HD, > >> but I'm not certain (can't check right now). > > > > Maybe because you run patched LILO which works around this 2.6.x > > GRUB, actually. Does it mess with the floppy drive? AFAIK yes: NEWS: New in 0.5 - 1998-08-20, Erich Boleyn: * GRUB now shuts off the floppy before transferring control to any other programs/modules/loaders. (chain-loading doesn't matter here, just loading 32-bit modules/kernels) stage2/asm.S: /* * stop_floppy() * * Stops the floppy drive from spinning, so that other software is * jumped to with a known state. */ ENTRY(stop_floppy) movw $0x3F2, %dx xorb %al, %al outb %al, %dx ret Petr Vandrovec ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 15:11 ` Måns Rullgård 2003-12-12 15:20 ` Richard B. Johnson @ 2003-12-12 16:00 ` Matthew Kirkwood 1 sibling, 0 replies; 20+ messages in thread From: Matthew Kirkwood @ 2003-12-12 16:00 UTC (permalink / raw) To: Måns Rullgård; +Cc: linux-kernel On Fri, 12 Dec 2003, Måns Rullgård wrote: > > It is not a broken BIOS! The BIOS timer that ticks 18.206 times per > > second has an ISR that, in addition to keeping time, turns OFF the FDC > > motor after two seconds of inactivity. This ISR is taken away by > > Linux. Therefore Linux must turn off that motor! It is a Linux bug, > > not a BIOS bug. Linux took control away from the BIOS during boot. > > OK, but why doesn't it affect all machines? Most likely, other machines take longer than two seconds from probing the floppy to booting the kernel. Matthew. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 15:04 ` Richard B. Johnson 2003-12-12 15:11 ` Måns Rullgård @ 2003-12-12 19:28 ` John Bradford 2003-12-12 19:47 ` Richard B. Johnson 1 sibling, 1 reply; 20+ messages in thread From: John Bradford @ 2003-12-12 19:28 UTC (permalink / raw) To: Richard B. Johnson, Måns Rullgård; +Cc: linux-kernel Quote from "Richard B. Johnson" <root@chaos.analogic.com>: > On Fri, 12 Dec 2003, [iso-8859-1] M=E5ns Rullg=E5rd wrote: > > > Dale Mellor <dale@dmellor.dabsol.co.uk> writes: > > > > > 1. Floppy motor spins when floppy module not installed. > > > > It's a known problem. Some broken BIOSes don't turn off the motor > > after probing for a disk. One solution is to change the boot priorit= > y > > in the BIOS settings so the hard disk is tried before floppy. If you > > ever need to boot from a floppy, you can change it back. > > > > -- > > M=E5ns Rullg=E5rd > > mru@kth.se > > It is not a broken BIOS! The BIOS timer that ticks 18.206 times > per second has an ISR that, in addition to keeping time, turns > OFF the FDC motor after two seconds of inactivity. This ISR is taken > away by Linux. Therefore Linux must turn off that motor! It is a > Linux bug, not a BIOS bug. Linux took control away from the BIOS > during boot. We discussed almost exactly the same problem at length on LKML just two months ago: http://marc.theaimsgroup.com/?l=linux-kernel&m=106545766213063&w=2 John. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 19:28 ` John Bradford @ 2003-12-12 19:47 ` Richard B. Johnson 2003-12-13 6:18 ` Joshua Schmidlkofer 2003-12-13 10:40 ` John Bradford 0 siblings, 2 replies; 20+ messages in thread From: Richard B. Johnson @ 2003-12-12 19:47 UTC (permalink / raw) To: John Bradford; +Cc: Måns Rullgård, linux-kernel On Fri, 12 Dec 2003, John Bradford wrote: > Quote from "Richard B. Johnson" <root@chaos.analogic.com>: > > On Fri, 12 Dec 2003, [iso-8859-1] M=E5ns Rullg=E5rd wrote: > > > > > Dale Mellor <dale@dmellor.dabsol.co.uk> writes: > > > > > > > 1. Floppy motor spins when floppy module not installed. > > > > > > It's a known problem. Some broken BIOSes don't turn off the motor > > > after probing for a disk. One solution is to change the boot priorit= > > y > > > in the BIOS settings so the hard disk is tried before floppy. If you > > > ever need to boot from a floppy, you can change it back. > > > > > > -- > > > M=E5ns Rullg=E5rd > > > mru@kth.se > > > > It is not a broken BIOS! The BIOS timer that ticks 18.206 times > > per second has an ISR that, in addition to keeping time, turns > > OFF the FDC motor after two seconds of inactivity. This ISR is taken > > away by Linux. Therefore Linux must turn off that motor! It is a > > Linux bug, not a BIOS bug. Linux took control away from the BIOS > > during boot. > > We discussed almost exactly the same problem at length on LKML just > two months ago: > > http://marc.theaimsgroup.com/?l=linux-kernel&m=106545766213063&w=2 > > John. Yes, and I recall we agreed to disagree where the FDC stop must be put, but we both agreed that it must be stopped. I still contend that since the Linux startup code takes control away from the BIOS, it's that codes responsibility to turn OFF things that the BIOS might have left ON. Funny thing. It's so trivial, anybody/everybody could turn the floppy motor off, but all the fingers point to somebody else's code. It's a bug in Linux, not in a boot-loader. That bug was covered up until the FDC code got modularized. Once we were able to compile a kernel without the FDC, the bug was exposed. So, I suggest that we just fix the bug and be done with it. It's not a performance problem, the write to the port occurs exactly once during the nest 999 days of up-time. It's just an attempt to make a mountain out of a mole-hill. Cheers, Dick Johnson Penguin : Linux version 2.4.22 on an i686 machine (797.90 BogoMips). Note 96.31% of all statistics are fiction. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 19:47 ` Richard B. Johnson @ 2003-12-13 6:18 ` Joshua Schmidlkofer 2003-12-15 14:37 ` Richard B. Johnson 2003-12-13 10:40 ` John Bradford 1 sibling, 1 reply; 20+ messages in thread From: Joshua Schmidlkofer @ 2003-12-13 6:18 UTC (permalink / raw) To: root; +Cc: John Bradford, Måns Rullgård, Linux Kernel Mailing List > Yes, and I recall we agreed to disagree where the FDC stop must > be put, but we both agreed that it must be stopped. I still contend > that since the Linux startup code takes control away from the BIOS, > it's that codes responsibility to turn OFF things that the BIOS > might have left ON. > > Funny thing. It's so trivial, anybody/everybody could turn the > floppy motor off, but all the fingers point to somebody else's > code. > > It's a bug in Linux, not in a boot-loader. That bug was covered up > until the FDC code got modularized. Once we were able to compile > a kernel without the FDC, the bug was exposed. So, I suggest that > we just fix the bug and be done with it. It's not a performance > problem, the write to the port occurs exactly once during the nest > 999 days of up-time. It's just an attempt to make a mountain out > of a mole-hill. We have had (do have?) several cases of optional "this workaround", or "that workaround" as per-hardware config options. If this is that objectionable for genral consumption then someone ought to submit a patch to do the dirty deed but put it in as a configurable workaround (CONFIG_TURNFLOPPYOFF=Y/N), and leave it at that. [For maximum perversity, it could also be a MODULE.] This does not affect everyone right? I have never tried booting w/o the floppy module, so I really don't know about my system. js ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-13 6:18 ` Joshua Schmidlkofer @ 2003-12-15 14:37 ` Richard B. Johnson 0 siblings, 0 replies; 20+ messages in thread From: Richard B. Johnson @ 2003-12-15 14:37 UTC (permalink / raw) To: Joshua Schmidlkofer Cc: John Bradford, Måns Rullgård, Linux Kernel Mailing List On Fri, 12 Dec 2003, Joshua Schmidlkofer wrote: > > Yes, and I recall we agreed to disagree where the FDC stop must > > be put, but we both agreed that it must be stopped. I still contend > > that since the Linux startup code takes control away from the BIOS, > > it's that codes responsibility to turn OFF things that the BIOS > > might have left ON. > > > > Funny thing. It's so trivial, anybody/everybody could turn the > > floppy motor off, but all the fingers point to somebody else's > > code. > > > > It's a bug in Linux, not in a boot-loader. That bug was covered up > > until the FDC code got modularized. Once we were able to compile > > a kernel without the FDC, the bug was exposed. So, I suggest that > > we just fix the bug and be done with it. It's not a performance > > problem, the write to the port occurs exactly once during the nest > > 999 days of up-time. It's just an attempt to make a mountain out > > of a mole-hill. > > > We have had (do have?) several cases of optional "this workaround", or > "that workaround" as per-hardware config options. If this is that > objectionable for genral consumption then someone ought to submit a > patch to do the dirty deed but put it in as a configurable workaround > (CONFIG_TURNFLOPPYOFF=Y/N), and leave it at that. [For maximum > perversity, it could also be a MODULE.] This does not affect everyone > right? I have never tried booting w/o the floppy module, so I really > don't know about my system. > Well It's NOT a workaround. In the IBM/Intel/PC platform, the floppy motor is turned OFF in a simple timer-queue that runs off the PIT Channel 0. If some operating system decides to tear down that queue, it MUST perform the function(s) that the queue was performing or else it's a BUG, plain and simple. This long-time BUG was hidden as long as the floppy-disk code remained in the kernel. Now, since the floppy disk code is no longer permanently coded into the kernel, the BUG is exposed. Failure to fix this known BUG, in spite of the patches sent, is an obvious example of child-like misbehavior. Again, the patch is provided: --- linux-2.4.22/arch/i386/boot/setup.S.orig Tue Oct 7 09:24:33 2003 +++ linux-2.4.22/arch/i386/boot/setup.S Fri Dec 12 09:52:32 2003 @@ -777,6 +777,10 @@ movb $0xFB, %al # mask all irq's but irq2 which outb %al, $0x21 # is cascaded + movw $0x3f2, %dx + xorb %al, %al # Turn OFF FDC motor + outb %al, %dx + # Well, that certainly wasn't fun :-(. Hopefully it works, and we don't # need no steenking BIOS anyway (except for the initial loading :-). # The BIOS-routine wants lots of unnecessary data, and it's less Cheers, Dick Johnson Penguin : Linux version 2.4.22 on an i686 machine (797.90 BogoMips). Note 96.31% of all statistics are fiction. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 19:47 ` Richard B. Johnson 2003-12-13 6:18 ` Joshua Schmidlkofer @ 2003-12-13 10:40 ` John Bradford 2003-12-15 14:50 ` Richard B. Johnson 1 sibling, 1 reply; 20+ messages in thread From: John Bradford @ 2003-12-13 10:40 UTC (permalink / raw) To: Richard B. Johnson; +Cc: Måns Rullgård, linux-kernel Quote from "Richard B. Johnson" <root@chaos.analogic.com>: > Yes, and I recall we agreed to disagree where the FDC stop must > be put, but we both agreed that it must be stopped. I still contend > that since the Linux startup code takes control away from the BIOS, > it's that codes responsibility to turn OFF things that the BIOS > might have left ON. Well, on a practical level, yes, I agree with you, it is the easiest way to solve the problem. On a technical level, I still think that the BIOS configuration is broken if it leaves the floppy motor on, on a system running a kernel without the floppy code compiled in. John. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-13 10:40 ` John Bradford @ 2003-12-15 14:50 ` Richard B. Johnson 2003-12-15 20:24 ` John Bradford 0 siblings, 1 reply; 20+ messages in thread From: Richard B. Johnson @ 2003-12-15 14:50 UTC (permalink / raw) To: John Bradford; +Cc: Måns Rullgård, linux-kernel On Sat, 13 Dec 2003, John Bradford wrote: > Quote from "Richard B. Johnson" <root@chaos.analogic.com>: > > > Yes, and I recall we agreed to disagree where the FDC stop must > > be put, but we both agreed that it must be stopped. I still contend > > that since the Linux startup code takes control away from the BIOS, > > it's that codes responsibility to turn OFF things that the BIOS > > might have left ON. > > Well, on a practical level, yes, I agree with you, it is the easiest > way to solve the problem. > > On a technical level, I still think that the BIOS configuration is > broken if it leaves the floppy motor on, on a system running a kernel > without the floppy code compiled in. > > John. > Hmmm. The BIOS doesn't know that you have a kernel without any floppy code. The BIOS also doesn't know that its timer queue is going to be destroyed by the data (code) that it's properly reading from some disk. All it knows is that every time the floppy is accessed, the motor must be turn ON before access and must be turned OFF two seconds after the last access. Since it doesn't know when the last access will be (it doesn't know the future), it resets a timer-variable upon every access. The timer- queue bumps the variable and if it gets to zero, turns OFF the FDC motor. The BIOS code is properly doing its job. When control is taken away from the BIOS, the code that took control must tie up any loose-ends that the BIOS wasn't able to finish. It's not the job of the boot-loader because it didn't alter the BIOS in any way. It used the BIOS to put the kernel in it's correct place. Then it gives control to the kernel code. It's that kernel code that takes control away from the BIOS. It's the responsibility of that kernel code to handle the consequences of doing that. Cheers, Dick Johnson Penguin : Linux version 2.4.22 on an i686 machine (797.90 BogoMips). Note 96.31% of all statistics are fiction. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-15 14:50 ` Richard B. Johnson @ 2003-12-15 20:24 ` John Bradford 0 siblings, 0 replies; 20+ messages in thread From: John Bradford @ 2003-12-15 20:24 UTC (permalink / raw) To: Richard B. Johnson; +Cc: Måns Rullgård, linux-kernel > > > Yes, and I recall we agreed to disagree where the FDC stop must > > > be put, but we both agreed that it must be stopped. I still contend > > > that since the Linux startup code takes control away from the BIOS, > > > it's that codes responsibility to turn OFF things that the BIOS > > > might have left ON. > > > > Well, on a practical level, yes, I agree with you, it is the easiest > > way to solve the problem. > > > > On a technical level, I still think that the BIOS configuration is > > broken if it leaves the floppy motor on, on a system running a kernel > > without the floppy code compiled in. > > Hmmm. The BIOS doesn't know that you have a kernel without any > floppy code. No, but the user does, and if the machine in question boots fast enough that interrupts are disabled less than two seconds after the last BIOS floppy access, they should currently avoid configuring the BIOS in such a way that it accesses floppy drive if there is not going to be any code to turn it off, which currently means having floppy support compiled in, (or as a module). > The BIOS also doesn't know that its timer queue > is going to be destroyed by the data (code) that it's properly > reading from some disk. All it knows is that every time the > floppy is accessed, the motor must be turn ON before access > and must be turned OFF two seconds after the last access. Since > it doesn't know when the last access will be (it doesn't know the > future), it resets a timer-variable upon every access. The timer- > queue bumps the variable and if it gets to zero, turns OFF the > FDC motor. > > The BIOS code is properly doing its job. When control is > taken away from the BIOS, the code that took control The code that took control is the bootloader, which may never load a Linux kernel. Imagine a theoretical future bootloader which disabled interrupts, thereby stopping the two second floppy motor timeout, and offered things such as a serial console, monitor, or other diagnostic features. > must > tie up any loose-ends that the BIOS wasn't able to finish. Possibly, but I still consider the BIOS configuration broken if there are infact any loose-ends to tie up. > It's not the job of the boot-loader because it didn't alter > the BIOS in any way. It used the BIOS to put the kernel in > it's correct place. Then it gives control to the kernel > code. It's that kernel code that takes control away from > the BIOS. It's the responsibility of that kernel code > to handle the consequences of doing that. At the end of the day, though, I agree that it's the best way to fix it, but we shouldn't convince ourselves that it's particularly elegant. John. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 14:18 ` Måns Rullgård 2003-12-12 15:04 ` Richard B. Johnson @ 2003-12-13 13:18 ` Helge Hafting 2003-12-13 16:42 ` Joshua Schmidlkofer 1 sibling, 1 reply; 20+ messages in thread From: Helge Hafting @ 2003-12-13 13:18 UTC (permalink / raw) To: Måns Rullgård; +Cc: linux-kernel On Fri, Dec 12, 2003 at 03:18:03PM +0100, Måns Rullgård wrote: > Dale Mellor <dale@dmellor.dabsol.co.uk> writes: > > > 1. Floppy motor spins when floppy module not installed. > > It's a known problem. Some broken BIOSes don't turn off the motor > after probing for a disk. One solution is to change the boot priority > in the BIOS settings so the hard disk is tried before floppy. If you > ever need to boot from a floppy, you can change it back. > The kernel stops the spinning floppy _if_ you gives it a driver for the floppy hardware. This is not a problem at all, considering that linux comes with such a driver. Compile it in, or arranger for the module to be loaded at boot time. You may of course arrange to unload it a little later if you want to save the memory. Helge Hafting ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-13 13:18 ` Helge Hafting @ 2003-12-13 16:42 ` Joshua Schmidlkofer 0 siblings, 0 replies; 20+ messages in thread From: Joshua Schmidlkofer @ 2003-12-13 16:42 UTC (permalink / raw) To: Helge Hafting; +Cc: Måns Rullgård, Linux Kernel Mailing List On Sat, 2003-12-13 at 05:18, Helge Hafting wrote: > On Fri, Dec 12, 2003 at 03:18:03PM +0100, Måns Rullgård wrote: > > Dale Mellor <dale@dmellor.dabsol.co.uk> writes: > > > > > 1. Floppy motor spins when floppy module not installed. > > > > It's a known problem. Some broken BIOSes don't turn off the motor > > after probing for a disk. One solution is to change the boot priority > > in the BIOS settings so the hard disk is tried before floppy. If you > > ever need to boot from a floppy, you can change it back. > > > The kernel stops the spinning floppy _if_ you gives it a driver > for the floppy hardware. > > This is not a problem at all, considering that linux comes > with such a driver. > > Compile it in, or arranger for the module to be loaded at > boot time. You may of course arrange to unload it a little > later if you want to save the memory. This seems like the correct solution to me. -- VB programmers ask why no one takes them seriously, it's somewhat akin to a McDonalds manager asking employees why they don't take their 'career' seriously. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: PROBLEM: floppy motor spins when floppy module not installed 2003-12-12 13:57 PROBLEM: floppy motor spins when floppy module not installed Dale Mellor 2003-12-12 14:18 ` Måns Rullgård @ 2003-12-12 14:59 ` Richard B. Johnson 1 sibling, 0 replies; 20+ messages in thread From: Richard B. Johnson @ 2003-12-12 14:59 UTC (permalink / raw) To: Dale Mellor; +Cc: linux-kernel On Fri, 12 Dec 2003, Dale Mellor wrote: > 1. Floppy motor spins when floppy module not installed. > > 2. From the moment of bootup, the floppy drive motor spins when the kernel is > compiled to use the floppy driver as a module and this is not installed (the > motor stops as soon as the module is installed). > > 3. Keywords: floppy, module, kernel, boot. > Kernel version 2.6.0-test11 [SNIPPED...] This was reported a long time ago and there were some patches around to fix it. I guess it didn't get into the "main-line", perhaps because people don't think it's important. Your temporary fix is to disable the "floppy-seek" on boot and to change the boot-sequence so the floppy is not accessed on boot (change the BIOS to boot C: before A:). That will "fix" the problem for the moment. The correct fix, that nobody wanted to do, is to reset the motor control bit in the FDC motor control register upon startup. This was previously shown and patches exist. There were doom-sayers that claimed that the earth may stop turning (or something like that) if this was done which is probably why it didn't get fixed. If you are bold and want to try again, somewhere convenient in ../linux-nn.nn/arch/i386/boot/setup.S write a zero byte out port 0x3f2. This port is used only for the FDC motor so it won't hurt if the controller's not even there. Something like: --- setup.S.orig Tue Oct 7 09:24:33 2003 +++ setup.S Fri Dec 12 09:52:32 2003 @@ -777,6 +777,10 @@ movb $0xFB, %al # mask all irq's but irq2 which outb %al, $0x21 # is cascaded + movw $0x3f2, %dx + xorb %al, %al # Turn OFF FDC motor + outb %al, %dx + # Well, that certainly wasn't fun :-(. Hopefully it works, and we don't # need no steenking BIOS anyway (except for the initial loading :-). # The BIOS-routine wants lots of unnecessary data, and it's less Cheers, Dick Johnson Penguin : Linux version 2.4.22 on an i686 machine (797.90 BogoMips). Note 96.31% of all statistics are fiction. ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2003-12-15 20:19 UTC | newest] Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-12-12 13:57 PROBLEM: floppy motor spins when floppy module not installed Dale Mellor 2003-12-12 14:18 ` Måns Rullgård 2003-12-12 15:04 ` Richard B. Johnson 2003-12-12 15:11 ` Måns Rullgård 2003-12-12 15:20 ` Richard B. Johnson 2003-12-12 15:33 ` Måns Rullgård 2003-12-12 16:05 ` Petr Vandrovec 2003-12-12 16:27 ` Måns Rullgård 2003-12-12 16:41 ` Petr Vandrovec 2003-12-12 16:00 ` Matthew Kirkwood 2003-12-12 19:28 ` John Bradford 2003-12-12 19:47 ` Richard B. Johnson 2003-12-13 6:18 ` Joshua Schmidlkofer 2003-12-15 14:37 ` Richard B. Johnson 2003-12-13 10:40 ` John Bradford 2003-12-15 14:50 ` Richard B. Johnson 2003-12-15 20:24 ` John Bradford 2003-12-13 13:18 ` Helge Hafting 2003-12-13 16:42 ` Joshua Schmidlkofer 2003-12-12 14:59 ` Richard B. Johnson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).