Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Nov 2003 19:39:48 +0000
From:      ian j hart <ianjhart@ntlworld.com>
To:        freebsd-scsi@freebsd.org
Subject:   Complete SCB invalid
Message-ID:  <200311251939.48048.ianjhart@ntlworld.com>

next in thread | raw e-mail | index | archive | help
gamma> sed -n 500,514p aic79xx.c
        scbid = ahd_inw(ahd, COMPLETE_SCB_HEAD);
        while (!SCBID_IS_NULL(scbid)) {

                ahd_set_scbptr(ahd, scbid);
                next_scbid = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE);
                scb = ahd_lookup_scb(ahd, scbid);
                if (scb == NULL) {
                        printf("%s: Warning - Complete SCB %d invalid\n",
                               ahd_name(ahd), scbid);
                        continue;
                }

                ahd_complete_scb(ahd, scb);
                scbid = next_scbid;
        }

gamma> sed -n 713,725p aic79xx_inline.h
static __inline struct scb *
ahd_lookup_scb(struct ahd_softc *ahd, u_int tag)
{
        struct scb* scb;

        if (tag >= AHD_SCB_MAX)
                return (NULL);
        scb = ahd->scb_data.scbindex[tag];
        if (scb != NULL)
                ahd_sync_scb(ahd, scb,
                             BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
        return (scb);
}

If scbid >= AHD_SCB_MAX but doesn't match SCBID_IS_NULL
this appears to loop forever.

Is it safe to panic instead? (At least while I'm testing)

Of course I could be smoking crack.

-- 
ian j hart

http://ars.userfriendly.org/cartoons/?id=20031016



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311251939.48048.ianjhart>