diff options
author | Rachita Kothiyal <rachita@in.ibm.com> | 2006-06-23 05:02:56 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-23 10:42:44 -0400 |
commit | 1ad5544098a69d7dc1fa508cbb17e13a7a952fd8 (patch) | |
tree | 60eb468a15572cbecd167286b5a91d22e8bd1710 | |
parent | 5fa21d821f6972e70942f2c555ec29dde962bdb2 (diff) |
[PATCH] Fix cdrom being confused on using kdump
I have seen the cdrom drive appearing confused on using kdump on certain
x86_64 systems. During the booting up of the second kernel, the following
message would keep flooding the console, and the booting would not proceed
any further.
hda: cdrom_pc_intr: The drive appears confused (ireason = 0x01)
In this patch, whenever we are hitting a confused state in the interrupt
handler with the DRQ set, we end the request and return ide_stopped. Using
this I dont see the status error.
Signed-off-by: Rachita Kothiyal <rachita@in.ibm.com>
Acked-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/ide/ide-cd.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index b4a41d6d0714..abb83d95df57 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c | |||
@@ -1451,9 +1451,12 @@ static ide_startstop_t cdrom_pc_intr (ide_drive_t *drive) | |||
1451 | } else { | 1451 | } else { |
1452 | confused: | 1452 | confused: |
1453 | printk (KERN_ERR "%s: cdrom_pc_intr: The drive " | 1453 | printk (KERN_ERR "%s: cdrom_pc_intr: The drive " |
1454 | "appears confused (ireason = 0x%02x)\n", | 1454 | "appears confused (ireason = 0x%02x). " |
1455 | "Trying to recover by ending request.\n", | ||
1455 | drive->name, ireason); | 1456 | drive->name, ireason); |
1456 | rq->flags |= REQ_FAILED; | 1457 | rq->flags |= REQ_FAILED; |
1458 | cdrom_end_request(drive, 0); | ||
1459 | return ide_stopped; | ||
1457 | } | 1460 | } |
1458 | 1461 | ||
1459 | /* Now we wait for another interrupt. */ | 1462 | /* Now we wait for another interrupt. */ |