From: Olaf Hering Date: Fri, 1 Sep 2006 04:27:41 +0000 (-0700) Subject: [PATCH] exit early in floppy_init when no floppy exists X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=ef16b5194f3233a11851180cd82eafb76542047d;p=linux-beck.git [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 Acked-by: Benjamin Herrenschmidt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 5109fa37c662..ad1d7065a1b2 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -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);