aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-cd.c
diff options
context:
space:
mode:
authorRachita Kothiyal <rachita@in.ibm.com>2006-06-23 05:02:56 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-23 10:42:44 -0400
commit1ad5544098a69d7dc1fa508cbb17e13a7a952fd8 (patch)
tree60eb468a15572cbecd167286b5a91d22e8bd1710 /drivers/ide/ide-cd.c
parent5fa21d821f6972e70942f2c555ec29dde962bdb2 (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>
Diffstat (limited to 'drivers/ide/ide-cd.c')
-rw-r--r--drivers/ide/ide-cd.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index b4a41d6d071..abb83d95df5 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 {
1452confused: 1452confused:
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. */