Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 09 Sep 2003 22:55:41 +0200
From:      Idar Tollefsen <idart@performancedesign.no>
To:        thomas@freebsd.org
Cc:        freebsd-alpha@freebsd.org
Subject:   Re: atapicam causes fatal kernel trap
Message-ID:  <3F5E3E4C.5721F53C@performancedesign.no>
References:  <3F568ED4.5095458F@performancedesign.no> <16215.32222.610240.127909@grasshopper.cs.duke.edu> <3F579927.1020601@performancedesign.no> <16215.39766.415180.759716@grasshopper.cs.duke.edu> <3F5A20ED.C5DE017E@performancedesign.no> <16220.34865.620913.836921@grasshopper.cs.duke.edu> <3F5CE880.E08ABB6D@performancedesign.no> <16220.61276.946194.736750@grasshopper.cs.duke.edu> <20030908212517.GA59827@melusine.cuivre.fr.eu.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F5E3E4C.5721F53C>