atapicam causes fatal kernel trap
Idar Tollefsen
idart at performancedesign.no
Tue Sep 9 16:01:40 PDT 2003
Thomas Quinot wrote:
> Uh oh. Looks like a possible culprit indeed! Idar, please test the
> following patch:
>
> Index: atapi-cam.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/dev/ata/atapi-cam.c,v
> retrieving revision 1.10.2.5
> diff -u -r1.10.2.5 atapi-cam.c
> --- atapi-cam.c 24 Aug 2003 03:26:38 -0000 1.10.2.5
> +++ atapi-cam.c 8 Sep 2003 21:12:06 -0000
> @@ -252,7 +252,11 @@
> strncpy(cpi->dev_name, cam_sim_name(sim), sizeof cpi->dev_name);
> cpi->unit_number = cam_sim_unit(sim);
> cpi->bus_id = cam_sim_bus(sim);
> + printf ("softc->ata_ch = %p\n", softc->ata_ch);
> + printf ("softc->ata_ch->device = %p\n", softc->ata_ch->device);
> + printf ("ccb_h->target_id = %d\n", ccb_h->target_id);
> if (softc->ata_ch && ccb_h->target_id >= 0) {
> + if (ccb_h->target_id < 2) {
> switch (softc->ata_ch->device[ccb_h->target_id].mode) {
> case ATA_PIO1:
> cpi->base_transfer_speed = 5200;
> @@ -282,6 +286,7 @@
> break;
> default: cpi->base_transfer_speed = 3300;
> }
> + } else cpi->base_transfer_speed = 3300;
> }
> ccb->ccb_h.status = CAM_REQ_CMP;
> xpt_done(ccb);
Indeed, that did the trick!
Here's the output:
[snip]
IPsec: Initialized Security Association Processing.
ata1-slave: ATAPI identify retries exceeded
ad0: 9787MB <QUANTUM FIREBALL EX10.2A> [19885/16/63] at ata0-master
WDMA2
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = 1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = 1
acd0: CDROM <PCA123CD> at ata1-master PIO3
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 1
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = 1
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = -1
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = 1
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 1
softc->ata_ch = 0xfffffe0000735200
softc->ata_ch->device = 0xfffffe0000735258
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 0
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 0
Mounting root from ufs:/dev/ad0a
cd0 at ata1 bus 0 target 0 lun 0
cd0: <PHILIPS PCA123CD 17P> Removable CD-ROM SCSI-0 device
softc->ata_ch = 0xfffffe0000735000
softc->ata_ch->device = 0xfffffe0000735058
ccb_h->target_id = 0
cd0: 11.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present
savecore: no core dump
[snip]
I'm currently listening to Letfield's Afro Left (from the excellent
album Leftism) trough /dev/cd0a (with the help of XMMS). I was also able
to sucessfully mount the device using an ordinary ISO CD.
Thank you!
- IT
More information about the freebsd-alpha
mailing list