[PATCH] exit early in floppy_init when no floppy exists
modprobe -v floppy on a Apple G5 writes incorrect stuff to dmesg: Floppy drive(s): fd0 is 2.88M The reason is that the legacy io check happens very late, when part of the floppy stuff is already initialized. check_legacy_ioport() returns either -ENODEV right away, or it walks the device-tree looking for a floppy node. Signed-off-by: Olaf Hering <olaf@aepfle.de> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
a9aa141cfc
commit
ef16b5194f
|
@ -4177,6 +4177,11 @@ static int __init floppy_init(void)
|
|||
int i, unit, drive;
|
||||
int err, dr;
|
||||
|
||||
#if defined(CONFIG_PPC_MERGE)
|
||||
if (check_legacy_ioport(FDC1))
|
||||
return -ENODEV;
|
||||
#endif
|
||||
|
||||
raw_cmd = NULL;
|
||||
|
||||
for (dr = 0; dr < N_DRIVE; dr++) {
|
||||
|
@ -4234,13 +4239,6 @@ static int __init floppy_init(void)
|
|||
}
|
||||
|
||||
use_virtual_dma = can_use_virtual_dma & 1;
|
||||
#if defined(CONFIG_PPC_MERGE)
|
||||
if (check_legacy_ioport(FDC1)) {
|
||||
del_timer(&fd_timeout);
|
||||
err = -ENODEV;
|
||||
goto out_unreg_region;
|
||||
}
|
||||
#endif
|
||||
fdc_state[0].address = FDC1;
|
||||
if (fdc_state[0].address == -1) {
|
||||
del_timer(&fd_timeout);
|
||||
|
|
Loading…
Reference in New Issue