diff options
-rw-r--r-- | drivers/block/floppy.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index cce7df367b79..1347ba8b8377 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c | |||
@@ -191,6 +191,7 @@ static int print_unex = 1; | |||
191 | #include <linux/mutex.h> | 191 | #include <linux/mutex.h> |
192 | #include <linux/io.h> | 192 | #include <linux/io.h> |
193 | #include <linux/uaccess.h> | 193 | #include <linux/uaccess.h> |
194 | #include <linux/async.h> | ||
194 | 195 | ||
195 | /* | 196 | /* |
196 | * PS/2 floppies have much slower step rates than regular floppies. | 197 | * PS/2 floppies have much slower step rates than regular floppies. |
@@ -4122,7 +4123,7 @@ static struct kobject *floppy_find(dev_t dev, int *part, void *data) | |||
4122 | return get_disk(disks[drive]); | 4123 | return get_disk(disks[drive]); |
4123 | } | 4124 | } |
4124 | 4125 | ||
4125 | static int __init floppy_init(void) | 4126 | static int __init do_floppy_init(void) |
4126 | { | 4127 | { |
4127 | int i, unit, drive; | 4128 | int i, unit, drive; |
4128 | int err, dr; | 4129 | int err, dr; |
@@ -4337,6 +4338,24 @@ out_put_disk: | |||
4337 | return err; | 4338 | return err; |
4338 | } | 4339 | } |
4339 | 4340 | ||
4341 | #ifndef MODULE | ||
4342 | static __init void floppy_async_init(void *data, async_cookie_t cookie) | ||
4343 | { | ||
4344 | do_floppy_init(); | ||
4345 | } | ||
4346 | #endif | ||
4347 | |||
4348 | static int __init floppy_init(void) | ||
4349 | { | ||
4350 | #ifdef MODULE | ||
4351 | return do_floppy_init(); | ||
4352 | #else | ||
4353 | /* Don't hold up the bootup by the floppy initialization */ | ||
4354 | async_schedule(floppy_async_init, NULL); | ||
4355 | return 0; | ||
4356 | #endif | ||
4357 | } | ||
4358 | |||
4340 | static const struct io_region { | 4359 | static const struct io_region { |
4341 | int offset; | 4360 | int offset; |
4342 | int size; | 4361 | int size; |