On Fri, Feb 22, 2013 at 10:59:11AM -0600, Nathan Whitehorn wrote:
> On 02/22/13 06:08, Claude Buisson wrote:
> > On 02/22/2013 09:21, Konstantin Belousov wrote:
> >
> > <skipped>
> >
> >> You need to provide the dmesg from r246713 and r246712 to compare.
> >> The note that r246711 snapshot exhibited this same problem makes
> >> me sceptical.
> >
> > Here are the verbose dmesg from r246712 and r246713;
> >
> > For the sceptical:
> >
> > root@fidel# cd /usr/src
> > root@fidel# grep "\$FreeBSD\:" sys/conf/files
> > # $FreeBSD: head/sys/conf/files 246586 2013-02-09 06:39:28Z delphij $
> > root@fidel# grep "\$FreeBSD\:" sys/ia64/ia64/dump_machdep.c
> > __FBSDID("$FreeBSD: head/sys/ia64/ia64/dump_machdep.c 246712 2013-02-12
> > 16:51:43Z marcel $");
> >
> > for r246712
> >
> > root@fidel# cd /usr/src
> > root@fidel# grep "\$FreeBSD\:" sys/conf/files
> > # $FreeBSD: head/sys/conf/files 246713 2013-02-12 16:57:20Z kib $
> > root@fidel# grep "\$FreeBSD\:" sys/ia64/include/proc.h
> >  * $FreeBSD: head/sys/ia64/include/proc.h 226112 2011-10-07 16:09:44Z 
> > kib $
> >
> > for r246713
> >
> > The source is from svn0.us-east.freebsd.org
> >
> > And obj/ has been rm'ed before each buildkernel
> >
> > My own conclusion is that the rev number in:
> >
> > FreeBSD-10.0-HEAD-r246711-JPSNAP-i386-i386-memstick.img
> >
> > is bogus, and this can be easily checked by grepping for 
> > kern/subr_bus_dma.c in
> > the BUILD.log as this file has been ADDED by r246713
> >
> > CBu (working on this since Tuesday)
> 
> For whatever it is worth, I have experienced the identical problem on an 
> amd64 system.

I see.
Could please, one of you try the following, which just a revert of
the r246713 for dev/ata ? I believe/hope that this should fix the
issue. Apply in the sys/dev/ata directory.

Index: ata-dma.c
===================================================================
--- ata-dma.c   (revision 246713)
+++ ata-dma.c   (revision 246712)
@@ -304,17 +304,10 @@ ata_dmaload(struct ata_request *request, void *add
     else
        dspa.dmatab = request->dma->sg;
 
-#ifdef ATA_CAM
-    if (request->ccb)
-        error = bus_dmamap_load_ccb(request->dma->data_tag,
-                               request->dma->data_map, request->ccb,
-                               ch->dma.setprd, &dspa, BUS_DMA_NOWAIT);
-    else
-#endif
-        error = bus_dmamap_load(request->dma->data_tag, request->dma->data_map,
-                               request->data, request->bytecount,
-                               ch->dma.setprd, &dspa, BUS_DMA_NOWAIT);
-    if (error || (error = dspa.error)) {
+    if ((error = bus_dmamap_load(request->dma->data_tag, 
request->dma->data_map,
+                                request->data, request->bytecount,
+                                ch->dma.setprd, &dspa, BUS_DMA_NOWAIT)) ||
+                                (error = dspa.error)) {
        device_printf(request->parent, "FAILURE - load data\n");
        goto error;
     }
Index: atapi-cam.c
===================================================================
--- atapi-cam.c (revision 246713)
+++ atapi-cam.c (revision 246712)
@@ -514,6 +514,12 @@ atapi_action(struct cam_sim *sim, union ccb *ccb)
                ("CAM CCB too long for ATAPI"));
            goto action_invalid;
        }
+       if ((ccb_h->flags & CAM_SCATTER_VALID)) {
+           /* scatter-gather not supported */
+           xpt_print_path(ccb_h->path);
+           printf("ATAPI/CAM does not support scatter-gather yet!\n");
+           goto action_invalid;
+       }
 
        switch (ccb_h->flags & CAM_DIR_MASK) {
        case CAM_DIR_IN:

Attachment: pgp0_FopJnv8h.pgp
Description: PGP signature

Reply via email to