Re: BUG in asm/pci.h:58 in 2.3.47-pre6

From: Jakub Jelinek (jakub@redhat.com)
Date: Tue Feb 22 2000 - 10:21:56 EST


On Tue, Feb 22, 2000 at 01:21:05PM +0000, Chris Underhill wrote:
>
> >Have either of you tried 2.3.47 final? This "kernel BUG" case
> >should be fixed.
>
> I've just tried 2.3.47 final (haven't used previous 2.3.* kernels since
> 2.3.30 which didn't boot here) and am getting the same error. System boots
> fine off a scsi disk, but subsequent loading of sr.o triggers it.
>
> >If there are still problems, please send more details.
>
> OK - Upon starting grip with an audio cd - loads sr.o and then:
>
> Detected scsi CD-ROM sr0 at scsi0, channel 0, id 2, lun 0
> Uniform CD-ROM driver Revision: 3.06
> VFS: Disk change detected on device sr(11,0)
> kernel BUG at /usr/src/linux/include/asm/pci.h:58!
...
>
> >>EIP: c01a18f6 <aic7xxx_buildscb+2ae/334>
> Trace: c020d8c7 <RCSid+21e7/d9e5>
> Trace: c020d980 <RCSid+22a0/d9e5>
> Trace: c01a1a48 <aic7xxx_queue+cc/15c>
> Trace: c0180800 <scsi_dispatch_cmd+a4/150>
> Trace: c0180866 <scsi_dispatch_cmd+10a/150>
> Trace: c018543c <scsi_old_done+0/590>
> Trace: c0186b7c <scsi_request_fn+2d4/2f0>
> Trace: c01860b8 <scsi_insert_special_req+50/5c>
> Trace: c6887207 <cdrom_ioctl+7cf/eac>
> Trace: c013c31c <padzero+1c/20>
> Trace: c0110fe2 <schedule+2ba/448>
> Trace: c0107dc0 <__down_failed+8/c>
> Trace: c688b318 <cdrom_fops+0/14>

Does the following patch fix it?

--- linux/drivers/scsi/sr_ioctl.c.jj Fri Feb 18 22:28:01 2000
+++ linux/drivers/scsi/sr_ioctl.c Tue Feb 22 16:09:08 2000
@@ -149,7 +149,7 @@ static int test_unit_ready(int minor)
         sr_cmd[0] = GPCMD_TEST_UNIT_READY;
         sr_cmd[1] = ((scsi_CDs[minor].device->lun) << 5);
         sr_cmd[2] = sr_cmd[3] = sr_cmd[4] = sr_cmd[5] = 0;
- return sr_do_ioctl(minor, sr_cmd, NULL, 255, 1, SCSI_DATA_NONE);
+ return sr_do_ioctl(minor, sr_cmd, NULL, 0 /* 255 */, 1, SCSI_DATA_NONE);
 }
 
 int sr_tray_move(struct cdrom_device_info *cdi, int pos)
@@ -161,7 +161,7 @@ int sr_tray_move(struct cdrom_device_inf
         sr_cmd[2] = sr_cmd[3] = sr_cmd[5] = 0;
         sr_cmd[4] = (pos == 0) ? 0x03 /* close */ : 0x02 /* eject */ ;
 
- return sr_do_ioctl(MINOR(cdi->dev), sr_cmd, NULL, 255, 0, SCSI_DATA_NONE);
+ return sr_do_ioctl(MINOR(cdi->dev), sr_cmd, NULL, 0 /* 255 */, 0, SCSI_DATA_NONE);
 }
 
 int sr_lock_door(struct cdrom_device_info *cdi, int lock)

Alternatively, if it does not work (but it should), leave on these two lines
255 normally and change SCSI_DATA_NONE to SCSI_DATA_READ.

Cheers,
    Jakub
___________________________________________________________________
Jakub Jelinek | jakub@redhat.com | http://sunsite.mff.cuni.cz/~jj
Linux version 2.3.47 on a sparc64 machine (1343.49 BogoMips)
___________________________________________________________________

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Feb 23 2000 - 21:00:30 EST