Ongoing U320 AIC7902 Seagate ST318453LW issues, SCB timed out
Don Bowman
don at sandvine.com
Wed Aug 6 08:29:50 PDT 2003
> From: Justin T. Gibbs [mailto:gibbs at scsiguy.com]
> Sent: August 6, 2003 10:59
> To: Don Bowman; 'freebsd-scsi at freebsd.org'; 'aic7xxx at freebsd.org'
> Subject: RE: Ongoing U320 AIC7902 Seagate ST318453LW issues, SCB timed
> out
>
>
> > I'm continuing to test without the throttle. I'm @ a loss for why
> > it tracks some systems and not others.
> >
> > There doesn't seem to be a reliable way to drop the number of
> > tags since the system may not always come up. I don't think
> > there's an option in the kernel to do so.
>
> Just add a call to camcontrol early in the rc process, prior to
> fsck starting up. camcontrol is on the root filesystem. You can
> also modify the ahd driver to tell cam that it can only handle 32
> commands per-target.
I offer this patch to make a loader tunable out of the maximum
tags supported.
$ cvs diff -u3 aic79xx_osm.c
Index: aic79xx_osm.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/aic7xxx/aic79xx_osm.c,v
retrieving revision 1.3.2.3.1000.3
diff -u -3 -r1.3.2.3.1000.3 aic79xx_osm.c
--- aic79xx_osm.c 28 Jul 2003 00:26:42 -0000 1.3.2.3.1000.3
+++ aic79xx_osm.c 6 Aug 2003 15:28:44 -0000
@@ -119,10 +119,17 @@
struct cam_path *path;
long s;
int count;
+ int max_tags = 256; /* Controller can really handle 512 transactions
+ per device, but CAM is still using a byte
+ to hold the max tag depth field
+ */
count = 0;
sim = NULL;
+ sprintf(ahd_info, "hw.ahd%d.max_tags",
device_get_unit(ahd->dev_softc));
+ TUNABLE_INT_FETCH(ahd_info, &max_tags);
+
ahd_controller_info(ahd, ahd_info);
printf("%s\n", ahd_info);
ahd_lock(ahd, &s);
@@ -139,7 +146,7 @@
*/
sim = cam_sim_alloc(ahd_action, ahd_poll, "ahd", ahd,
device_get_unit(ahd->dev_softc),
- 1, /*XXX*/256, devq);
+ 1, max_tags, devq);
if (sim == NULL) {
cam_simq_free(devq);
goto fail;
More information about the freebsd-scsi
mailing list