All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Justin T. Gibbs" <gibbs@scsiguy.com>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: linux-scsi@vger.kernel.org
Subject: Re: Aic7xxx and Aic79xx driver updates.
Date: Tue, 07 Jan 2003 20:46:35 -0700	[thread overview]
Message-ID: <679640000.1041997595@aslan.btc.adaptec.com> (raw)
In-Reply-To: <175810000.1041300864@aslan.btc.adaptec.com>

[-- Attachment #1: Type: text/plain, Size: 407 bytes --]

I've uploaded a new "bk send" file relative to the 2.5.X repository.
I've also attached the output from "Documentation/.../bksend".  The
"bk send" version can be found here:

http://people.FreeBSD.org/~gibbs/linux/SRC/aic79xx-linux-2.5-bksend.gz

This should correct the false positives some have seen with the 
mmapped I/O test on some of the older controllers that the aic7xxx
driver supports.

--
Justin

[-- Attachment #2: bksend.out --]
[-- Type: application/octet-stream, Size: 39794 bytes --]

You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.

===================================================================


ChangeSet@1.893.1.4, 2003-01-07 19:58:41-07:00, gibbs@overdrive.btc.adaptec.com
  aic7xxx and aic79xx driver updates:
  
  	o Correct memory mapped I/O test for legacy controllers
  	  that do not have the "auto-access-pause" feature.
  	o Prevent NMIs from triggering should the MMAP I/O test fail.
  	o Fix aic7770 (EISA/VLB) controller regression.
  	o Kill a few compiler warnings.

ChangeSet@1.893.1.3, 2003-01-07 19:40:37-07:00, gibbs@overdrive.btc.adaptec.com
  aic7xxx and aic79xx drivers Correct several DV issues:
  
   o Do not fallback to a wide speed if the device does not support
     wide transfers.
  
   o Don't bother allocating target instances for wide IDs on narrow
     controllers.
  
   o Add a few additional diagnostics to aid in tracking down DV bugs.

ChangeSet@1.893.1.2, 2003-01-07 19:32:07-07:00, gibbs@overdrive.btc.adaptec.com
  aic7xxx/aicasm:
     Remove the numerical_value portion of the grammer which is no
     longer referenced.  This eliminates a yacc warning.

ChangeSet@1.897, 2003-01-07 18:31:40-08:00, anton@samba.org
  [PATCH] small module patch
  
  Add a missing inline, shows up when modules are turned off.

ChangeSet@1.893.1.1, 2003-01-07 19:29:46-07:00, gibbs@overdrive.btc.adaptec.com
  Update the aic7xxx Makefile so that the register information tables
  are not rebuilt on every build.
  
  Use better Kbuild rule style for building firmware.
  
  Submitted by: Sam Ravnborg <sam@ravnborg.org>

ChangeSet@1.896, 2003-01-07 16:41:22-08:00, greg@kroah.com
  PCI hotplug: clean up the try_module_get() logic a bit.

ChangeSet@1.895, 2003-01-07 16:29:23-08:00, greg@kroah.com
  PCI: properly unregister a PCI device if it is removed.
  
  This is only used by pci hotplug and cardbus systems.

ChangeSet@1.894, 2003-01-07 16:24:14-08:00, greg@kroah.com
  IBM PCI Hotplug: fix compile time error due to find_bus() function name.


 Makefile                    |   49 ++++++++++++++---------------
 aic79xx_core.c              |   16 +++++----
 aic79xx_osm.c               |   25 +++++++++++++-
 aic79xx_osm.h               |   13 ++++---
 aic79xx_osm_pci.c           |    5 ++
 aic79xx_pci.c               |   25 ++++++++++----
 aic7xxx.h                   |    3 -
 aic7xxx.reg                 |    4 +-
 aic7xxx.seq                 |    4 +-
 aic7xxx_core.c              |   74 ++++++++------------------------------------
 aic7xxx_osm.c               |   29 ++++++++++++++---
 aic7xxx_osm.h               |   15 ++++----
 aic7xxx_osm_pci.c           |    6 +--
 aic7xxx_pci.c               |   34 +++++++++++++-------
 aic7xxx_reg.h_shipped       |    5 +-
 aic7xxx_reg_print.c_shipped |    4 +-
 aic7xxx_seq.h_shipped       |    4 +-
 aicasm/aicasm_gram.y        |   15 +-------
 18 files changed, 173 insertions(+), 157 deletions(-)


diff -Nru a/drivers/scsi/aic7xxx/Makefile b/drivers/scsi/aic7xxx/Makefile
--- a/drivers/scsi/aic7xxx/Makefile	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/Makefile	Tue Jan  7 20:41:22 2003
@@ -1,7 +1,7 @@
 #
 # Makefile for the Linux aic7xxx SCSI driver.
 #
-# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Makefile#3 $
+# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Makefile#5 $
 #
 
 # Let kbuild descend into aicasm when cleaning
@@ -44,40 +44,39 @@
 
 $(obj)/aic7xxx_core.o: $(obj)/aic7xxx_seq.h
 $(obj)/aic79xx_core.o: $(obj)/aic79xx_seq.h
+$(obj)/aic79xx_reg_print.c: $(src)/aic79xx_reg_print.c_shipped
+$(obj)/aic7xxx_reg_print.c: $(src)/aic7xxx_reg_print.c_shipped
 
 $(addprefix $(obj)/,$(aic7xxx-y)): $(obj)/aic7xxx_reg.h
 $(addprefix $(obj)/,$(aic79xx-y)): $(obj)/aic79xx_reg.h
 
+aic7xxx-gen-$(CONFIG_AIC7XXX_BUILD_FIRMWARE)	:= $(obj)/aic7xxx_seq.h \
+						   $(obj)/aic7xxx_reg.h
+aic7xxx-gen-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT)	+= $(obj)/aic7xxx_reg_print.c
+
+aicasm-7xxx-opts-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) := \
+	-p $(obj)/aic7xxx_reg_print.c -i aic7xxx_osm.h
+
 ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y)
-aic7xxx_gen = $(obj)/aic7xxx_seq.h $(obj)/aic7xxx_reg.h
-ifeq ($(CONFIG_AIC7XXX_REG_PRETTY_PRINT),y)
-aic7xxx_gen += $(obj)/aic7xxx_reg_print.c
-aic7xxx_asm_cmd = $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic7xxx_reg.h \
-		 -p $(obj)/aic7xxx_reg_print.c -i aic7xxx_osm.h	   \
-		 -o $(obj)/aic7xxx_seq.h $(src)/aic7xxx.seq
-else
-aic7xxx_asm_cmd = $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic7xxx_reg.h \
-		 -o $(obj)/aic7xxx_seq.h $(src)/aic7xxx.seq
+$(aic7xxx-gen-y): $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm
+	$(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic7xxx_reg.h \
+			      $(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \
+			      $(src)/aic7xxx.seq
 endif
 
-$(aic7xxx_gen): $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm
-	$(aic7xxx_asm_cmd)
-endif
+aic79xx-gen-$(CONFIG_AIC79XX_BUILD_FIRMWARE)	:= $(obj)/aic79xx_seq.h \
+						   $(obj)/aic79xx_reg.h
+aic79xx-gen-$(CONFIG_AIC79XX_REG_PRETTY_PRINT)	+= $(obj)/aic79xx_reg_print.c
+
+aicasm-79xx-opts-$(CONFIG_AIC79XX_REG_PRETTY_PRINT) := \
+	-p $(obj)/aic79xx_reg_print.c -i aic79xx_osm.h
 
 ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y)
-aic79xx_gen = $(obj)/aic79xx_seq.h $(obj)/aic79xx_reg.h
-ifeq ($(CONFIG_AIC79XX_REG_PRETTY_PRINT),y)
-aic79xx_gen += $(obj)/aic79xx_reg_print.c
-aic79xx_asm_cmd = $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic79xx_reg.h \
-		 -p $(obj)/aic79xx_reg_print.c -i aic79xx_osm.h	   \
-		 -o $(obj)/aic79xx_seq.h $(src)/aic79xx.seq
-else
-aic79xx_asm_cmd = $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic79xx_reg.h \
-		 -o $(obj)/aic79xx_seq.h $(src)/aic79xx.seq
+$(aic79xx-gen-y): $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm
+	$(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic79xx_reg.h \
+			      $(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \
+			      $(src)/aic79xx.seq
 endif
-$(aic79xx_gen): $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm
-	$(aic79xx_asm_cmd)
-endif 
 
 $(obj)/aicasm/aicasm: $(src)/aicasm/*.[chyl]
 	$(MAKE) -C $(src)/aicasm
diff -Nru a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c
--- a/drivers/scsi/aic7xxx/aic79xx_core.c	Tue Jan  7 20:41:21 2003
+++ b/drivers/scsi/aic7xxx/aic79xx_core.c	Tue Jan  7 20:41:21 2003
@@ -37,7 +37,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#148 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#150 $
  *
  * $FreeBSD$
  */
@@ -2321,13 +2321,13 @@
 
 	/* Skip all PACED only entries if IU is not available */
 	if ((*ppr_options & MSG_EXT_PPR_IU_REQ) == 0
-	 && maxsync < AHD_SYNCRATE_DT)
-		maxsync = AHD_SYNCRATE_DT;
+	 && *period < AHD_SYNCRATE_DT)
+		*period = AHD_SYNCRATE_DT;
 
 	/* Skip all DT only entries if DT is not available */
 	if ((*ppr_options & MSG_EXT_PPR_DT_REQ) == 0
-	 && maxsync < AHD_SYNCRATE_ULTRA2)
-		maxsync = AHD_SYNCRATE_ULTRA2;
+	 && *period < AHD_SYNCRATE_ULTRA2)
+		*period = AHD_SYNCRATE_ULTRA2;
 }
 
 /*
@@ -5680,7 +5680,8 @@
 			       /*lowaddr*/BUS_SPACE_MAXADDR,
 			       /*highaddr*/BUS_SPACE_MAXADDR,
 			       /*filter*/NULL, /*filterarg*/NULL,
-			       /*maxsize*/MAXBSIZE, /*nsegments*/AHD_NSEG,
+			       /*maxsize*/(AHD_NSEG - 1) * PAGE_SIZE,
+			       /*nsegments*/AHD_NSEG,
 			       /*maxsegsz*/AHD_MAXTRANSFER_SIZE,
 			       /*flags*/BUS_DMA_ALLOCNOW,
 			       &ahd->buffer_dmat) != 0) {
@@ -7856,7 +7857,8 @@
 #ifdef AHD_DEBUG
 	if ((ahd_debug & AHD_SHOW_MISC) != 0) {
 		ahd_print_path(ahd, scb);
-		printf("Handled Residual of %d bytes\n", resid);
+		printf("Handled %sResidual of %d bytes\n",
+		       (scb->flags & SCB_SENSE) ? "Sense " : "", resid);
 	}
 #endif
 }
diff -Nru a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c
--- a/drivers/scsi/aic7xxx/aic79xx_osm.c	Tue Jan  7 20:41:21 2003
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.c	Tue Jan  7 20:41:21 2003
@@ -1,7 +1,7 @@
 /*
  * Adaptec AIC79xx device driver for Linux.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#103 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#104 $
  *
  * --------------------------------------------------------------------------
  * Copyright (c) 1994-2000 Justin T. Gibbs.
@@ -2058,7 +2058,7 @@
 	 * negotiation will occur for the first command, and DV
 	 * will comence should that first command be successful.
 	 */
-	for (target = 0; target < AHD_NUM_TARGETS; target++)
+	for (target = 0; target < host->max_id; target++)
 		ahd_linux_alloc_target(ahd, 0, target);
 	ahd_intr_enable(ahd, TRUE);
 	ahd_linux_start_dv(ahd);
@@ -2883,6 +2883,23 @@
 				break;
 			}
 
+#ifdef AHD_DEBUG
+			if (ahd_debug & AHD_SHOW_DV) {
+				int i;
+
+				ahd_print_devinfo(ahd, devinfo);
+				printf("Inquiry buffer mismatch:");
+				for (i = 0; i < AHD_LINUX_DV_INQ_LEN; i++) {
+					if ((i & 0xF) == 0)
+						printf("\n        ");
+					printf("0x%x:0x0%x ",
+					       ((uint8_t *)targ->inq_data)[i], 
+					       targ->dv_buffer[i]);
+				}
+				printf("\n");
+			}
+#endif
+
 			if (ahd_linux_dv_fallback(ahd, devinfo) != 0) {
 				AHD_SET_DV_STATE(ahd, targ, AHD_DV_STATE_EXIT);
 				break;
@@ -3525,6 +3542,8 @@
 		targ->dv_next_narrow_period = MAX(period, AHD_SYNCRATE_ULTRA2);
 	if (targ->dv_next_wide_period == 0)
 		targ->dv_next_wide_period = period;
+	if (targ->dv_max_width == 0)
+		targ->dv_max_width = width;
 	if (targ->dv_max_ppr_options == 0)
 		targ->dv_max_ppr_options = ppr_options;
 	if (targ->dv_last_ppr_options == 0)
@@ -3619,7 +3638,7 @@
 				period++;
 			}
 		} else if ((ahd->features & AHD_WIDE) != 0
-			&& tinfo->user.width != 0
+			&& targ->dv_max_width != 0
 			&& wide_speed >= fallback_speed
 			&& (targ->dv_next_wide_period <= AHD_ASYNC_XFER_PERIOD
 			 || period >= AHD_ASYNC_XFER_PERIOD)) {
diff -Nru a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h
--- a/drivers/scsi/aic7xxx/aic79xx_osm.h	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.h	Tue Jan  7 20:41:22 2003
@@ -36,7 +36,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#99 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#102 $
  *
  */
 #ifndef _AIC79XX_LINUX_H_
@@ -288,7 +288,7 @@
 #include <linux/smp.h>
 #endif
 
-#define AIC79XX_DRIVER_VERSION "1.3.0.ALPHA6"
+#define AIC79XX_DRIVER_VERSION "1.3.0.BETA2"
 
 /**************************** Front End Queues ********************************/
 /*
@@ -458,10 +458,11 @@
 	/*
 	 * The next "fallback" period to use for narrow/wide transfers.
 	 */
-	u_int			  dv_next_narrow_period;
-	u_int			  dv_next_wide_period;
-	u_int			  dv_max_ppr_options;
-	u_int			  dv_last_ppr_options;
+	uint8_t			  dv_next_narrow_period;
+	uint8_t			  dv_next_wide_period;
+	uint8_t			  dv_max_width;
+	uint8_t			  dv_max_ppr_options;
+	uint8_t			  dv_last_ppr_options;
 	u_int			  dv_echo_size;
 	ahd_dv_state		  dv_state;
 	u_int			  dv_state_retry;
diff -Nru a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c
--- a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c	Tue Jan  7 20:41:22 2003
@@ -36,7 +36,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm_pci.c#19 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm_pci.c#20 $
  */
 
 #include "aic79xx_osm.h"
@@ -170,6 +170,9 @@
 			ahd->platform_data->hw_dma_mask =
 			    (bus_addr_t)(0x7FFFFFFFFFULL & (bus_addr_t)~0);
 		}
+	} else {
+		ahd_pci_set_dma_mask(pdev, 0xFFFFFFFF);
+		ahd->platform_data->hw_dma_mask = 0xFFFFFFFF;
 	}
 #endif
 	ahd->dev_softc = pci;
diff -Nru a/drivers/scsi/aic7xxx/aic79xx_pci.c b/drivers/scsi/aic7xxx/aic79xx_pci.c
--- a/drivers/scsi/aic7xxx/aic79xx_pci.c	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic79xx_pci.c	Tue Jan  7 20:41:22 2003
@@ -38,7 +38,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#60 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#61 $
  *
  * $FreeBSD$
  */
@@ -379,15 +379,20 @@
 ahd_pci_test_register_access(struct ahd_softc *ahd)
 {
 	ahd_mode_state	saved_modes;
+	uint32_t	cmd;
 	int		error;
-	uint8_t		seqctl;
+	uint8_t		hcntrl;
 
 	saved_modes = ahd_save_modes(ahd);
 	error = EIO;
 
-	/* Enable PCI error interrupt status */
-	seqctl = ahd_inb(ahd, SEQCTL0);
-	ahd_outb(ahd, SEQCTL0, seqctl & ~FAILDIS);
+	/*
+	 * Enable PCI error interrupt status, but suppress NMIs
+	 * generated by SERR raised due to target aborts.
+	 */
+	cmd = ahd_pci_read_config(ahd->dev_softc, PCIR_COMMAND, /*bytes*/2);
+	ahd_pci_write_config(ahd->dev_softc, PCIR_COMMAND,
+			     cmd & ~PCIM_CMD_SERRESPEN, /*bytes*/2);
 
 	/*
 	 * First a simple test to see if any
@@ -397,7 +402,8 @@
 	 * be zero so it is a good register to
 	 * use for this test.
 	 */
-	if (ahd_inb(ahd, HCNTRL) == 0xFF)
+	hcntrl = ahd_inb(ahd, HCNTRL);
+	if (hcntrl == 0xFF)
 		goto fail;
 
 	/*
@@ -407,6 +413,10 @@
 	 * either, so look for data corruption and/or flaged
 	 * PCI errors.
 	 */
+	ahd_outb(ahd, HCNTRL, hcntrl|PAUSE);
+	while (ahd_is_paused(ahd) == 0)
+		;
+	ahd_outb(ahd, SEQCTL0, PERRORDIS);
 	ahd_outl(ahd, SRAM_BASE, 0x5aa555aa);
 	if (ahd_inl(ahd, SRAM_BASE) != 0x5aa555aa)
 		goto fail;
@@ -440,7 +450,8 @@
 	}
 
 	ahd_restore_modes(ahd, saved_modes);
-	ahd_outb(ahd, SEQCTL0, seqctl);
+	ahd_outb(ahd, SEQCTL0, PERRORDIS|FAILDIS);
+	ahd_pci_write_config(ahd->dev_softc, PCIR_COMMAND, cmd, /*bytes*/2);
 	return (error);
 }
 
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx.h b/drivers/scsi/aic7xxx/aic7xxx.h
--- a/drivers/scsi/aic7xxx/aic7xxx.h	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx.h	Tue Jan  7 20:41:22 2003
@@ -37,7 +37,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.h#66 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.h#67 $
  *
  * $FreeBSD$
  */
@@ -1053,7 +1053,6 @@
 	u_int			  pci_cachesize;
 
 	u_int			  stack_size;
-	uint16_t		 *saved_stack;
 
 	/* Per-Unit descriptive information */
 	const char		 *description;
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx.reg b/drivers/scsi/aic7xxx/aic7xxx.reg
--- a/drivers/scsi/aic7xxx/aic7xxx.reg	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx.reg	Tue Jan  7 20:41:22 2003
@@ -39,7 +39,7 @@
  *
  * $FreeBSD$
  */
-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#36 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#37 $"
 
 /*
  * This file is processed by the aic7xxx_asm utility for use in assembling
@@ -672,6 +672,8 @@
 	address			0x06f
 	access_mode RO
 }
+
+const	STACK_SIZE	4
 
 /*
  * Board Control (p. 3-43)
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx.seq b/drivers/scsi/aic7xxx/aic7xxx.seq
--- a/drivers/scsi/aic7xxx/aic7xxx.seq	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx.seq	Tue Jan  7 20:41:22 2003
@@ -40,7 +40,7 @@
  * $FreeBSD$
  */
 
-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#52 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#53 $"
 PATCH_ARG_LIST = "struct ahc_softc *ahc"
 PREFIX = "ahc_"
 
@@ -70,7 +70,7 @@
 	 * Turn off the selection hardware.  We need to reset the
 	 * selection request in order to perform a new selection.
 	 */
-	and	SCSISEQ, TEMODE|ENSELI|ENRSELI|ENAUTOATNP, SCSISEQ;
+	and	SCSISEQ, TEMODE|ENSELI|ENRSELI|ENAUTOATNP;
 	and	SIMODE1, ~ENBUSFREE;
 poll_for_work:
 	call	clear_target_state;
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx_core.c b/drivers/scsi/aic7xxx/aic7xxx_core.c
--- a/drivers/scsi/aic7xxx/aic7xxx_core.c	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx_core.c	Tue Jan  7 20:41:22 2003
@@ -37,7 +37,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#105 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#108 $
  *
  * $FreeBSD$
  */
@@ -230,7 +230,6 @@
 					u_int start_instr, u_int *skip_addr);
 static void		ahc_download_instr(struct ahc_softc *ahc,
 					   u_int instrptr, uint8_t *dconsts);
-static int		ahc_probe_stack_size(struct ahc_softc *ahc);
 #ifdef AHC_TARGET_MODE
 static void		ahc_queue_lstate_event(struct ahc_softc *ahc,
 					       struct ahc_tmode_lstate *lstate,
@@ -1166,6 +1165,13 @@
 			       ahc_name(ahc), scbptr, scb_index);
 			ahc_dump_card_state(ahc);
 		} else {
+#ifdef AHC_DEBUG
+			if ((ahc_debug & AHC_SHOW_SELTO) != 0) {
+				ahc_print_path(ahc, scb);
+				printf("Saw Selection Timeout for SCB 0x%x\n",
+				       scb_index);
+			}
+#endif
 			/*
 			 * Force a renegotiation with this target just in
 			 * case the cable was pulled and will later be
@@ -1178,13 +1184,6 @@
 			ahc_force_renegotiation(ahc);
 			ahc_set_transaction_status(scb, CAM_SEL_TIMEOUT);
 			ahc_freeze_devq(ahc, scb);
-#ifdef AHC_DEBUG
-			if ((ahc_debug & AHC_SHOW_SELTO) != 0) {
-				ahc_print_path(ahc, scb);
-				printf("Saw Selection Timeout for SCB 0x%x\n",
-				       scb_index);
-			}
-#endif
 		}
 		ahc_outb(ahc, CLRINT, CLRSCSIINT);
 		ahc_restart(ahc);
@@ -4005,8 +4004,6 @@
 		free(ahc->name, M_DEVBUF);
 	if (ahc->seep_config != NULL)
 		free(ahc->seep_config, M_DEVBUF);
-	if (ahc->saved_stack != NULL)
-		free(ahc->saved_stack, M_DEVBUF);
 #ifndef __FreeBSD__
 	free(ahc, M_DEVBUF);
 #endif
@@ -4542,12 +4539,6 @@
 	size_t	 driver_data_size;
 	uint32_t physaddr;
 
-	ahc->stack_size = ahc_probe_stack_size(ahc);
-	ahc->saved_stack = malloc(ahc->stack_size * sizeof(uint16_t),
-				  M_DEVBUF, M_NOWAIT);
-	if (ahc->saved_stack == NULL)
-		return (ENOMEM);
-
 #ifdef AHC_DEBUG_SEQUENCER
 	ahc->flags |= AHC_SEQUENCER_DEBUG;
 #endif
@@ -4602,7 +4593,8 @@
 			       /*lowaddr*/BUS_SPACE_MAXADDR,
 			       /*highaddr*/BUS_SPACE_MAXADDR,
 			       /*filter*/NULL, /*filterarg*/NULL,
-			       /*maxsize*/MAXBSIZE, /*nsegments*/AHC_NSEG,
+			       /*maxsize*/(AHC_NSEG - 1) * PAGE_SIZE,
+			       /*nsegments*/AHC_NSEG,
 			       /*maxsegsz*/AHC_MAXTRANSFER_SIZE,
 			       /*flags*/BUS_DMA_ALLOCNOW,
 			       &ahc->buffer_dmat) != 0) {
@@ -6275,7 +6267,8 @@
 #ifdef AHC_DEBUG
 	if ((ahc_debug & AHC_SHOW_MISC) != 0) {
 		ahc_print_path(ahc, scb);
-		printf("Handled Residual of %d bytes\n", resid);
+		printf("Handled %sResidual of %d bytes\n",
+		       (scb->flags & SCB_SENSE) ? "Sense " : "", resid);
 	}
 #endif
 }
@@ -6655,41 +6648,6 @@
 	}
 }
 
-static int
-ahc_probe_stack_size(struct ahc_softc *ahc)
-{
-	int last_probe;
-
-	last_probe = 0;
-	while (1) {
-		int i;
-
-		/*
-		 * We avoid using 0 as a pattern to avoid
-		 * confusion if the stack implementation
-		 * "back-fills" with zeros when "poping'
-		 * entries.
-		 */
-		for (i = 1; i <= last_probe+1; i++) {
-		       ahc_outb(ahc, STACK, i & 0xFF);
-		       ahc_outb(ahc, STACK, (i >> 8) & 0xFF);
-		}
-
-		/* Verify */
-		for (i = last_probe+1; i > 0; i--) {
-			u_int stack_entry;
-
-			stack_entry = ahc_inb(ahc, STACK)
-				    |(ahc_inb(ahc, STACK) << 8);
-			if (stack_entry != i)
-				goto sized;
-		}
-		last_probe++;
-	}
-sized:
-	return (last_probe);
-}
-
 int
 ahc_print_register(ahc_reg_parse_entry_t *table, u_int num_entries,
 		   const char *name, u_int address, u_int value,
@@ -6768,6 +6726,7 @@
 	cur_col = 0;
 	if ((ahc->features & AHC_DT) != 0)
 		ahc_scsisigi_print(ahc_inb(ahc, SCSISIGI), &cur_col, 50);
+	ahc_error_print(ahc_inb(ahc, ERROR), &cur_col, 50);
 	ahc_scsiphase_print(ahc_inb(ahc, SCSIPHASE), &cur_col, 50);
 	ahc_scsibusl_print(ahc_inb(ahc, SCSIBUSL), &cur_col, 50);
 	ahc_lastphase_print(ahc_inb(ahc, LASTPHASE), &cur_col, 50);
@@ -6787,11 +6746,8 @@
 	if (cur_col != 0)
 		printf("\n");
 	printf("STACK:");
-	for (i = 0; i < ahc->stack_size; i++) {
-		ahc->saved_stack[i] =
-		    ahc_inb(ahc, STACK)|(ahc_inb(ahc, STACK) << 8);
-	       printf(" 0x%x", ahc->saved_stack[i]);
-	}
+	for (i = 0; i < STACK_SIZE; i++)
+	       printf(" 0x%x", ahc_inb(ahc, STACK)|(ahc_inb(ahc, STACK) << 8));
 	printf("\nSCB count = %d\n", ahc->scb_data->numscbs);
 	printf("Kernel NEXTQSCB = %d\n", ahc->next_queued_scb->hscb->tag);
 	printf("Card NEXTQSCB = %d\n", ahc_inb(ahc, NEXT_QUEUED_SCB));
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c	Tue Jan  7 20:41:21 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c	Tue Jan  7 20:41:21 2003
@@ -1,7 +1,7 @@
 /*
  * Adaptec AIC7xxx device driver for Linux.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#166 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#169 $
  *
  * Copyright (c) 1994 John Aycock
  *   The University of Calgary Department of Computer Science.
@@ -576,6 +576,7 @@
 static void ahc_linux_setup_tag_info(char *p, char *end, char *s);
 static void ahc_linux_setup_tag_info_global(char *p);
 static void ahc_linux_setup_dv(char *p, char *end, char *s);
+static int  aic7xxx_setup(char *s);
 static int  ahc_linux_next_unit(void);
 static void ahc_runq_tasklet(unsigned long data);
 static int  ahc_linux_halt(struct notifier_block *nb, u_long event, void *buf);
@@ -1297,6 +1298,7 @@
 	 */
 	.max_sectors		= 8192,
 #endif
+#if defined CONFIG_HIGHIO || LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,18)
 /* Assume RedHat Distribution with its different HIGHIO conventions. */
 	.can_dma_32		= 1,
@@ -1304,6 +1306,7 @@
 #else
 	.highmem_io		= 1,
 #endif
+#endif
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
 	.name			= "aic7xxx",
 	.slave_alloc		= ahc_linux_slave_alloc,
@@ -1764,7 +1767,7 @@
  * to a parameter with a ':' between the parameter and the value.
  * ie. aic7xxx=stpwlev:1,extended
  */
-int
+static int
 aic7xxx_setup(char *s)
 {
 	int	i, n;
@@ -1888,7 +1891,7 @@
 	 * negotiation will occur for the first command, and DV
 	 * will comence should that first command be successful.
 	 */
-	for (target = 0; target < AHC_NUM_TARGETS; target++) {
+	for (target = 0; target < host->max_id*host->max_channel+1; target++) {
 		u_int channel;
 
 		channel = 0;
@@ -2732,6 +2735,22 @@
 				AHC_SET_DV_STATE(ahc, targ, AHC_DV_STATE_EXIT);
 				break;
 			}
+#ifdef AHC_DEBUG
+			if (ahc_debug & AHC_SHOW_DV) {
+				int i;
+
+				ahc_print_devinfo(ahc, devinfo);
+				printf("Inquiry buffer mismatch:");
+				for (i = 0; i < AHC_LINUX_DV_INQ_LEN; i++) {
+					if ((i & 0xF) == 0)
+						printf("\n        ");
+					printf("0x%x:0x0%x ",
+					       ((uint8_t *)targ->inq_data)[i], 
+					       targ->dv_buffer[i]);
+				}
+				printf("\n");
+			}
+#endif
 
 			if (ahc_linux_fallback(ahc, devinfo) != 0) {
 				AHC_SET_DV_STATE(ahc, targ, AHC_DV_STATE_EXIT);
@@ -3365,6 +3384,8 @@
 		targ->dv_next_narrow_period = MAX(period, AHC_SYNCRATE_ULTRA2);
 	if (targ->dv_next_wide_period == 0)
 		targ->dv_next_wide_period = period;
+	if (targ->dv_max_width == 0)
+		targ->dv_max_width = width;
 	if (targ->dv_max_ppr_options == 0)
 		targ->dv_max_ppr_options = ppr_options;
 	if (targ->dv_last_ppr_options == 0)
@@ -3459,7 +3480,7 @@
 				period++;
 			}
 		} else if ((ahc->features & AHC_WIDE) != 0
-			&& tinfo->user.width != 0
+			&& targ->dv_max_width != 0
 			&& wide_speed >= fallback_speed
 			&& (targ->dv_next_wide_period <= AHC_ASYNC_XFER_PERIOD
 			 || period >= AHC_ASYNC_XFER_PERIOD)) {
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx_osm.h b/drivers/scsi/aic7xxx/aic7xxx_osm.h
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.h	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.h	Tue Jan  7 20:41:22 2003
@@ -53,7 +53,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#114 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#118 $
  *
  */
 #ifndef _AIC7XXX_LINUX_H_
@@ -72,7 +72,6 @@
 #endif
 #include <linux/module.h>
 #include <asm/byteorder.h>
-#include <asm/io.h>
 
 #ifndef KERNEL_VERSION
 #define KERNEL_VERSION(x,y,z) (((x)<<16)+((y)<<8)+(z))
@@ -302,7 +301,7 @@
 #include <linux/smp.h>
 #endif
 
-#define AIC7XXX_DRIVER_VERSION "6.2.25"
+#define AIC7XXX_DRIVER_VERSION "6.2.26"
 
 /**************************** Front End Queues ********************************/
 /*
@@ -472,10 +471,11 @@
 	/*
 	 * The next "fallback" period to use for narrow/wide transfers.
 	 */
-	u_int			  dv_next_narrow_period;
-	u_int			  dv_next_wide_period;
-	u_int			  dv_max_ppr_options;
-	u_int			  dv_last_ppr_options;
+	uint8_t			  dv_next_narrow_period;
+	uint8_t			  dv_next_wide_period;
+	uint8_t			  dv_max_width;
+	uint8_t			  dv_max_ppr_options;
+	uint8_t			  dv_last_ppr_options;
 	u_int			  dv_echo_size;
 	ahc_dv_state		  dv_state;
 	u_int			  dv_state_retry;
@@ -864,6 +864,7 @@
 #define PCIM_CMD_BUSMASTEREN	0x0004
 #define PCIM_CMD_MWRICEN	0x0010
 #define PCIM_CMD_PERRESPEN	0x0040
+#define	PCIM_CMD_SERRESPEN	0x0100
 #define PCIR_STATUS		0x06
 #define PCIR_REVID		0x08
 #define PCIR_PROGIF		0x09
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c b/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c
--- a/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c	Tue Jan  7 20:41:22 2003
@@ -36,7 +36,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c#42 $
+ * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm_pci.c#43 $
  */
 
 #include "aic7xxx_osm.h"
@@ -167,8 +167,8 @@
 		ahc->platform_data->hw_dma_mask =
 		    (bus_addr_t)(0x7FFFFFFFFFULL & (bus_addr_t)~0);
 	} else {
-		ahc_pci_set_dma_mask(pdev, 0xffffffffULL);
-		ahc->platform_data->hw_dma_mask = 0xffffffffULL;
+		ahc_pci_set_dma_mask(pdev, 0xFFFFFFFF);
+		ahc->platform_data->hw_dma_mask = 0xFFFFFFFF;
 	}
 #endif
 	ahc->dev_softc = pci;
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx_pci.c b/drivers/scsi/aic7xxx/aic7xxx_pci.c
--- a/drivers/scsi/aic7xxx/aic7xxx_pci.c	Tue Jan  7 20:41:21 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx_pci.c	Tue Jan  7 20:41:21 2003
@@ -39,7 +39,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_pci.c#54 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_pci.c#55 $
  *
  * $FreeBSD$
  */
@@ -1202,15 +1202,20 @@
 int
 ahc_pci_test_register_access(struct ahc_softc *ahc)
 {
-	int	error;
-	u_int	status1;
-	uint8_t	seqctl;
+	int	 error;
+	u_int	 status1;
+	uint32_t cmd;
+	uint8_t	 hcntrl;
 
 	error = EIO;
 
-	/* Enable PCI error interrupt status */
-	seqctl = ahc_inb(ahc, SEQCTL);
-	ahc_outb(ahc, SEQCTL, seqctl & ~FAILDIS);
+	/*
+	 * Enable PCI error interrupt status, but suppress NMIs
+	 * generated by SERR raised due to target aborts.
+	 */
+	cmd = ahc_pci_read_config(ahc->dev_softc, PCIR_COMMAND, /*bytes*/2);
+	ahc_pci_write_config(ahc->dev_softc, PCIR_COMMAND,
+			     cmd & ~PCIM_CMD_SERRESPEN, /*bytes*/2);
 
 	/*
 	 * First a simple test to see if any
@@ -1220,7 +1225,8 @@
 	 * be zero so it is a good register to
 	 * use for this test.
 	 */
-	if (ahc_inb(ahc, HCNTRL) == 0xFF)
+	hcntrl = ahc_inb(ahc, HCNTRL);
+	if (hcntrl == 0xFF)
 		goto fail;
 
 	/*
@@ -1230,8 +1236,13 @@
 	 * either, so look for data corruption and/or flagged
 	 * PCI errors.
 	 */
-	ahc_outl(ahc, SRAM_BASE, 0x5aa555aa);
-	if (ahc_inl(ahc, SRAM_BASE) != 0x5aa555aa)
+	ahc_outb(ahc, HCNTRL, hcntrl|PAUSE);
+	while (ahc_is_paused(ahc) == 0)
+		;
+	ahc_outb(ahc, SEQCTL, PERRORDIS);
+	ahc_outb(ahc, SCBPTR, 0);
+	ahc_outl(ahc, SCB_BASE, 0x5aa555aa);
+	if (ahc_inl(ahc, SCB_BASE) != 0x5aa555aa)
 		goto fail;
 
 	status1 = ahc_pci_read_config(ahc->dev_softc,
@@ -1248,7 +1259,8 @@
 	ahc_pci_write_config(ahc->dev_softc, PCIR_STATUS + 1,
 			     status1, /*bytes*/1);
 	ahc_outb(ahc, CLRINT, CLRPARERR);
-	ahc_outb(ahc, SEQCTL, seqctl);
+	ahc_outb(ahc, SEQCTL, PERRORDIS|FAILDIS);
+	ahc_pci_write_config(ahc->dev_softc, PCIR_COMMAND, cmd, /*bytes*/2);
 	return (error);
 }
 
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped b/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
--- a/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped	Tue Jan  7 20:41:22 2003
@@ -2,8 +2,8 @@
  * DO NOT EDIT - This file is automatically generated
  *		 from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#52 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#36 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#53 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#37 $
  */
 typedef int (ahc_reg_print_t)(u_int, u_int *, u_int);
 typedef struct ahc_reg_parse_entry {
@@ -1779,6 +1779,7 @@
 #define	MAX_OFFSET	0xff
 #define	BUS_16_BIT	0x01
 #define	SCB_UPLOAD_SIZE	0x20
+#define	STACK_SIZE	0x04
 
 
 /* Downloaded Constant Definitions */
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped b/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
--- a/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped	Tue Jan  7 20:41:22 2003
@@ -2,8 +2,8 @@
  * DO NOT EDIT - This file is automatically generated
  *		 from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#52 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#36 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#53 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#37 $
  */
 
 #include "aic7xxx_osm.h"
diff -Nru a/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped b/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped
--- a/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped	Tue Jan  7 20:41:22 2003
+++ b/drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped	Tue Jan  7 20:41:22 2003
@@ -2,8 +2,8 @@
  * DO NOT EDIT - This file is automatically generated
  *		 from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#52 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#36 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#53 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#37 $
  */
 static uint8_t seqprog[] = {
 	0xb2, 0x00, 0x00, 0x08,
diff -Nru a/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y b/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y
--- a/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y	Tue Jan  7 20:41:21 2003
+++ b/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y	Tue Jan  7 20:41:22 2003
@@ -38,7 +38,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aicasm/aicasm_gram.y#28 $
+ * $Id: //depot/aic7xxx/aic7xxx/aicasm/aicasm_gram.y#29 $
  *
  * $FreeBSD$
  */
@@ -209,7 +209,7 @@
 
 %type <value> export ret f1_opcode f2_opcode jmp_jc_jnc_call jz_jnz je_jne
 
-%type <value> numerical_value mode_value mode_list macro_arglist
+%type <value> mode_value mode_list macro_arglist
 
 %left '|'
 %left '&'
@@ -781,17 +781,6 @@
 		}
 		$$ = $1 + 1;
 		add_macro_arg($3, $1);
-	}
-;
-
-numerical_value:
-	T_NUMBER
-	{
-		$$ = $1;
-	}
-|	'-' T_NUMBER
-	{
-		$$ = -$2;
 	}
 ;
 

===================================================================


This BitKeeper patch contains the following changesets:
1.893..1.893.1.4
## Wrapped with gzip_uu ##


begin 664 bkpatch12837
M'XL(`.*=&SX``^Q<^U<;.9;^V?XKM)#.0H)M2?5V.IDFV$E\`H0VI">SFST^
M]9!Q+7:5IZH<8->]?_O>*Y5?8,#/9#)GZ`Z%77KKTW<?NM(N^9R*I%JX##TO
M+>Z2#W&:50OQ-Y$$2?A-E+W,+[N!V\^$7_;C'J1HQC&DJ`S2I-*)>Z(B<U:\
MJTHWC`8W)5XVBI#JS,W\#H%BTFJ!E;7Q-]EM7U0+S?K[S\>'S6+Q]6MRU'&C
M2W$N,O+Z=3&+DV]N-TA_<[-.-X[*6>)&:4]D+E8^'"<=<DHY_&<P2Z.&.60F
MU:VASP+&7)V)@'+=-O5):7T170["1XO3**,6UZAEL"$U-8L6:X25;4<C5*M0
M5J$684:5VE7#*L%O2LGCI9.7E)1H\2W9;)>.BCXY$<FE(-Y5M5*Y$DDDNF7O
MR@NSM!R)K!*XWT2ODO;=Q)=SX9,PRF(RMXU5-8/YN\JHI95$].,TA(^A2/,J
MU.P60R++_^U>O?,&DVO0DZ%N&-0L?B2F!8^35?.?37!2+"WY4RRNA`3;L``)
MV.H<"6569E-H<*K<J>IFB5J(!KD,?GMPX9"7;%MP^-P/W$R0K".(&_K6S<T-
M.7&O1#OL"I+&\+V;R9>)N`S33"0`B':<]-PLC".2N5Y7I%"*FP@2Q1FD\@9A
M-R/P3D!G;@E^#,J0`JM*`7<BPT(^RN]),L!:LEOX#86JQ&%T2=IATKN&,O.,
MYP.O%T*^@'BW57+N]DC3_19Y<7))?DW=WF])_JD,_]Y(L#"ZYIQ3EQ;?D#ZR
MSORQEO.4I)743\-*/G*5T<A-QM^FG)E#C7/;&+JZ9KB:K3M.VPY88#XUZT_7
M@6"#&KBCTR'3;9L7BT^5>0^L*K^)8&5T"JQ\!JP:KU+KAX-U-`;P=-->%;Z!
MGZ;H05LD2*-!3R3PKMN"B@>"].-$XC1NR]>7B=N#!.2Z$X(P"5.`K"H"6G<)
MWR>B+1(1^2(H$W+1@02B&_;""!9(2EQRZ_H^`5A&`-&R@IGQ0V"FNI\_6MBK
M\NT]R)G4MH:.,'1+>+K;MKG/=&,UR#U47PX?C5,V-$R'6:O!#_)+KH31G,!/
MFX&?3JO:PO`SMPP_XD:!_-N!O_,!(T=QD@@_(RGRGMLEM3\`8.E`I%7%820F
MM5AR9-OM=CW7OX(&`JBNPP`HL"^`W$*%TD!\"WUXQ"*5Z=-!'W&LD"J3RYX`
M5-/R5-G1OV?$BZ&`A$`%L0\,#4R:N2#M,R#M-',!V*GD65E(HY8B34=NDL37
MJG`_CK(D[G9G2CX,H+.D+:Z)&P0A+B?H71"ZEQ$H>Z&?RFZ$T/H(V^5?8:U!
M?!WA"'B#RQ17"DRR\Z-6"CY;<=HK=^XM$=W4*"R4P&.&;KJP0CS+$BLOD=F*
M<FSK\,?0H-3DT/J52W9FN^!PG0%9Z_J0VR8WAY;+;"9LVW-,;AB";ZBBZ2XP
M73>L=;O@QR#2_=D^@+ZLV1RFP3)LYK;;;5OS34_?5$73?3"QQG7Z,)K@J2[8
MNJG;0\YLS1DRPZ<6I4[;L,V`!MZ&*II%DF8[FT#2O5G0N&'I0]-FT'Z`D4X]
MMTW76`S.0UV@&C/MU9?RJ.73RI6E\:&G^8$M3.HRU_>8YJXW^/,!Q`R3T]5D
M'.0'&2=Y<"+C]!D99]A5G2VL8NG?7\B1@;051A*M$(^%7@]4,%#V>VZ_#W*L
M4?E$(%DF94U77+K^[;1HP:Q$&1:!DH@=-]??=MQ!%I=`S1)I6NJ[@U3L@.1Q
MLX$R!:#&LP3D:Y21TY,&R+($AB)+PDM0WE#LI)UX`%8%EG1R<G@VU1`W[.8%
MO`MO9+<LBY*]>N/\L/+'\=O]J?:AI9-`_2#H\BP?PVXW%X$PJ/T0$^5JH))N
MNKZNB:FDV^.3^>BJ@$9/S;%.J3TT0*C90RO@+E`J,YFF,ZZO:'3<J28'M6%K
M0!FZS=C/*)JA]<;0X$"I/ZUHEA/`=,U>8P+F#+X&$GEH.C;`R#/;0=N@CO$D
M)RU0R72KN:[KZVATJ?C[G)8;NJ8-':;[T'@KH'Y@F'JP'FQD1:VT$R*WW84/
MC#S=A$K1ZOOA'+6"VP8=>B"*-1H8GN>T?6&M;L/=KVRZ*TQSK$VH%G>[DJL7
M.M/8T-$"ESH@_)AKBL#:8%TS"X(:5%\#6E,=F&8D6^=#1[=\[C&/MRTAO/8:
MRWFFHAE&TBQ]+4@YLUT8S0$?@E#@SK`=4*'Q0`M@&JC/UX"3,[\+.FH7?"U2
MQ<$!4=/J@UC/RO[TZANO#\9A?9B@Q0C'%QIS/#<0`<J*K50[/4.@RCGV>N(:
M2.6>N#8YHT/+IYK&=.91A[;;IK,>Z^;53,^-`0.W]MS\,"-(K1`3_EYC?<,4
MSQ,=W(3U;1J.(W3/`N/'L_WUAE]5]!"*0!/7^4]G!TD,48N;5&Z_+6"%X\;<
M]_(:;*PB6",@V'6J&T.34K!7T6@S[[DDZ:+FFD-*UE:LM9$%YG:"5CN,@E9Z
M&_D)6&E[^S/;-ZZ?#=PN9!B]E_8=&E_2[NJY-V%OT!N_W4'O>"\.PG8H`LCE
MW4I#*E4%HE,\FY3DN2E8?7%$SLZ:).ZCBW#D/ZQ''70[@DV5AL%@QG&(?D-H
M<.AC$;GK<Y0,]QW;TGQ,192*F3TG^#+"#U"6F[G3OM"/1'EX/I%2<BW_!]/J
M;!&,KF"QU71*6+$A?Y,7Y%DCJ))*)1#].+N[BD:5E?U=!GKTLV*-:UPGO-B`
MIP'/`GG^G+SH@Q$;!^17<OBAUCK_V^E1\_"BWJI=[!<+A='+UW=?OI*%.:HP
MC3Y1V.?CB^8A?Z1`E0`*-4Q;P_[))Q1:*!#U4WD!6$G#_Q$O*GN8]?2\_IZ4
M"-N'03@[?%]OG3?^HWXPDP%F\+('1GOZHC+*<5"L6;;A8`WRB35(J=O>V_D`
MR.P"H'Y)FR/4Q&WR"V[^`0:_1CM8>E[X7NI[I3?MKGN9DN?D_.AMZ[P.Y>^3
MOY"=<PF='5(E.SL'"EK[KYYF+2ERUB:M)7QLFZI(<1;4P,$L,6`=(&<QMCII
M<4Y*VE98ZQTL8ESO811FH=HL27TW.@`2Z=[FFQ7P`O>EU?Y%[/TWL!RZCI`4
M<.M"$A'D(>(F3#.R%Y9%664?])%:&C5BW=W?D#_P9U/`LE=^HA'Q>8,4MT6R
MCJQ@O$6#FQJ=42N0/;-DX*,[2M+G($6W52BW0`!L^/6U(!'N`$WO\D`^N>,"
MK7'S]N0EEF?;A5LM,!13'*D:$^)R"*._#\+D%J-B@)5]28;(>=*=N@SE2<2L
MQ'B2\![A.QGE47FZ\EU8#9(&J<FPS/Q9P-[NY3/^FM!7H]G_E71@.$IO8+):
M83#Z^N7+?<AJVP9A5G$W;`>B+<FL5G_[^3T2$(B0/92+@?`&ET`/DND^?/IK
MJ_;'/OE?3%$`QB'AJ^)7^0'32A)JX18<B!S,?4#R#\`=F&C$4HU\.KQ!&Z0/
MZ85I#Q6YZDZ>3O8E5-T(<QX^;IQ^_@*UMQJGO[>.ZZ?P!CJ1-T4V%W(\)_3F
MW3X0$*'[ZL6XSJ_1""RC6L:OZ,TO-U5Z0W^Y(9(?)_R[MS>`)'8K(R_V<>!*
M;P!)+92=^_\9_M<!F4FL$@3?6JI;D""OZ,_B;$/R!OQ9W!4@P]LP@@W0H"TD
M<NS'N!R<,K6N1AV:]THM/1`[F@FD`XC(GU`#"+,Y.?X-"EN,RCL;H?(%O7N;
MJDA2.:>,@2T-C*YBB!A=G<I-4C*VPN1(63,S`U28K]HQ5Z:2+-,.@.=JO#\.
MBB4T!)/;,HH+F$SM,2Y+99U5J$R3JH?\O2:9=8#,I$ZG`X?IP(^F3HQB(5]S
M<F7!^$3B)FLIZF\IS>O5_#0H*!Y,,1[E^:_Z_:25J]_W$W3=-)M-L2&PWM\E
MGJ-W&'95TQ?6.TB);P6L;P>]OHPJ13LB&O0\(&X`("MK95I^6[\XY`J&Z$__
M"6'(I4QUE$B5CUV0B6$DR&'CR'*^@.AI-OZH-UOP[[SQZ93L3/5\9R$Z5?Z^
M35#J$F[B3=:5*\DZ,X<4_M0E6(W5L:J3$ML.L7:OW=MTI"&#O2454>A(*^BY
ML-S3*XE5Z>I>$JMJ.'XH7E43=CDR9X-9G&C%PI]$=$&A1FU(:F+0U51DX^[N
M]4$1.T#E*/^1&@BD++WI=]T,'012JRF]Z5R/,Z'^-<ZP@/&W&7@OX7W?5$6,
M`ZP=R@T^-"BW52"GMCJNF;TMCU4M3#%JF)S7FTVI&,A]?HGNJ4UXT#1C2<X@
M"W%JP^@2\L8#T+3O1!F,0C7SS?^.]!ZHXEPH-VY#OJGH@YG`@^EX`]6.'2CN
MW3AL83;K@33XSH_>DL3M22M5N`'Z)E+T@_D=^74:1KZ`?-@`@"4&._=<%?_@
M@C4)B,:XO!0J:(-9*RU%&<4`R=\V/IW+G-!`L".O,>P`:P2%VL6<HH\I0Q45
MV(X'42`I0&ZV+$,!*R]_78H6^7M!EU>^SD$U@G4.8A5U>E1,-`Z:B=\+4.57
MCB;UF&@M'1_&O2O?V\`.0#J46,5"Y46Q`'77(XFALZ,&$:!4850ZC'0RZ*/:
MZ68#F"MOH$(G,99#AHO(C)<B$NBT1&^2@F#BANB^#`9B2G=UO3A!I12R5(K8
M4""2$2DE,.LMF,]V>+DGZ0=XJ97&[<P_P`8U6T>?3DX.3VL'I/)"NJQ>5#AR
MU2C_=1)F8J$"QEXT;,!S\G_P\J1U=`)6+#2\?GY6/[U31TVGN5=2>@+5&.9-
M#R-/V;,?CDXOFL?8(K341FD44>YC7@?T6-G:>)#-Y#D@*O7P[/#S>1U+N.[@
M.0%I98=I2ZZ@`#]-[-=7=XLZK_]^='%,H:O0B4_-6N-<-ER7*,`'?SK'\-UA
MXUCE7&%8<3CO#-RC@N%F(U[!)??-)H=.\)3-L@$U4\H.!U70QB`14U_;C.3:
MOSR"__@>014DNJA$N/F1+L&;B4O0M*0NR!W4+G>!FI3M$I"C3Z?O&N];'QKO
M/S0^D>&0*#=:;L3`JJ[5R9O7Y&.]>5H_'GV]QP^,`R"@!M.HB04J-U6-V<H^
MRI_+NQQ!/VUP2X,^FQ.GX]%=IZ,_Y70\>L+IZ-]S.OJ;<SH>_3,['1N:9J[O
M<M1-Y7)4SR=<CML*Z7[`9V(L88=NC9BO7:#&0/A=-V<Y5+%"OX1&Z21*+AOT
M]_9!>_Y]$(H,CTN-8F6+4X>FY*9POF<-Q`R:-ZBQ*E`XNP9J]:&%D>@2U;<$
M[5\P!43IWHD6*$:=DU$G6NZ(#<F",DKDIV-!!UG0L&PH30TSJK;DSCC#,"7D
M18J*$[-,:93GSTD>R75:SG7:XESW8O(AGXV7;);_%E&6-F!)KQ`:N9;2=-=+
MQ+F%_G?=R14G<_75N36UZ13L6#PZAE/[^?B87'=$I`0G+A67:-P+,S0^I?XD
MS449YKGDLOB1'J.9)NR"??`,08_V#6">R<@!*4,7=!?YFW(7/1`LN#;D5XY[
MW$ZU4XXEC'LT'W`L+;P4MN;<;XJ1;3]U?/PCD;&:R\!]SD"L`GR,ZVF8\&L1
M3TD>J[EK(+H7S0`-W=50:7X0IN.#_(#)[1YE7PU[,W4P#DBCAJ.#+:PS@RN5
MR"&45QBO:*"MTRI;DG0W[YI7)IFXZ7=#'Y@59@A441'YMWBSP;4`]IW"#RI+
MD`._2?JS+`'VX>4`3<`>C`%Q\0!Z[@*5NA'D@@GKJ$-8W^(P&',XEJ9P/CG8
MGB+D\2*&CX0;H/<LA/?1X*^E\.S.0E5=XI+[_O`"D3*=3^RCRG<Q#J2AXSIY
MM@<F_?[8<3@UC%7R;"]-_+GOQDMT*OO-(]D?6N$;`;#&0")A;*^:!00PI_?N
M_%@J_HIO9]L>K^)(W<A'$`$:K]1U'+WQQ1_C*SE&5*KNYLBWZ?&BB9\'8H;4
MJ#FQBOFK$BR@TK.]W*^`>Z-?OGQIO?W<.*ZUWC6:)W\];-;W"]77Y`ZFY$D@
M\C6WC\%PO8^Y<N?Q2IKU]ZVS9OWBXF_P:)Q>[!=>WJMF"I[%KUB<F_9*LLBX
MGZ4+E$F@Z=#*4O^1DDDI'-L4:OOZ*\@LG3@@M#C183E-]^-V_^XB0G%U]RLH
M?JK&R8T1Q<*\;TFIH?(#D.:.I!IIY2*0S9D=AUO(&#\R1:.,=UM=K)D&;BB8
M%C&+(QS=FRSG240X3R#"F4'$@Y4\A0CG040X<Q$QM\RYB'#F(V(2T%`#+=O!
M`-TQ'ISY>'#NX\'9&!Z<Q_'@/(@'YPD\.",\V!3P\*2N/SG-L.43&^OI\?</
M,6C<'C+&3'6["EOC%(.Q+3/V.Q\34.?XES$*OMLQ@1MU3(!:*J2,&C(W/A\.
MPC]:.@C_:!2$;W+I:6K(YW<,PM_:Y0P2XM8:<0^,E(SM!#Y,W5/53V)/M$"?
M]Z]`L0^$C&%`M4ON,*5@#V#P#^31P<(0?=PGNG^/P@$>\,&2T-4#F?HQ3!U8
M`?+LC0R)<+N00IH/&(*I[B-"%U$BQOFR<;77&#X!.0?]5&3C^^`LB^9>VS-$
M!HD'ZIW<B9V^%([(38]!K]_RW23`ON$9I#SOR:CCJ>@*7UT=%_8$%C:UTD?G
ME<"N4@,PN9!+WC%'8$+`$@*`X2*69]#^H=>PK8[Z*!\L,VUB/;AC-'_+Z+Q^
M?/%I7^X\C#9L)MM%:!^JO2)8?G?VB<[=:W(^'NJ+?*B1*#%Z!;=M\A4\7L-0
M1@MH5MS<V6*I,68S:#A&%B!#U'1#-T!QJIFF"6+30#W*DOLFV#(9BZ':)WND
M8@Z@B1(N^P?DN3](8"*Z!\2@Z+TV+8<368B#-N"]#:SSB\.CCY+-U+95<=3>
M44]E9X!99FJ3N?:'>W.^)+_^2NS]!7;\5>#XEN]46(L'Q['B8P<=-PU-F9WK
M,.#V''0_*_]]).JVBB789K5XX!6(IK,K-\YK#$8?LBT4R+(.M)>YKZ6HKFN-
M!GA+:QA=N?*NUL5*1]&N44MS`->Z;=MJ#X:O<9S-)"7S'_X,A+HJ;ME=RY7`
M)O'2D+_7W+?L[#*&7I::A>IJ38<'GH0`E?*?_23$/<C.7ODG(<O7VC?\KB<A
MS#(O<S-7VM3%CVHS4>H1[3Q&"Z,N\U@ZHN+M2-IW_<D=P:D\9PY_]?+H3,!_
M/T9#0*BX34"[!+N\?.DG!+O4[#0J?93J,7W2XLN<DQ9J9'>*#=LT)\D+]R,Z
M"_0&8/3$X;:;Z5#U[W#-S7H+9&Z4.E3)U5$A>XW-1-SCV<[YBW^%J6\V3%U=
M:[3,6E\]3%W&<\G?"VI1>7"!(848`WR@@QB>%D9"@_0H*!Y#6=*2'U60.7LU
MB68G,II]+&O(.'X=,,]4<4S[X1'L_IP(=G^)"'9_7JCU(P4L'\'..%<&,SYG
M8]BGC+G'8]BA$$V3`2)<TW',,6\>3^XO$,SNSP2S^W>"V:>+4J'IL['L=Y/\
M?W-7UYL@#$6?]5<0EKWY`'1%R.82=3Z8;-,(>UMB&)*,3''QX\T?O]Y;.F#H
MH#1NOE`-A-IZTH]S3\\=#J;^K*,9N5O+[UOS0=\;@4R%!@&E["+:Q)O[XT'.
M!63/0DLIU[-":57^O*)P7O;?;"*<+W@@J4Q7$JY-RDJ8HFM3?MHRJ9VF='`O
M<%EW0@/#K:8D13!9'URX_&5L=IW<8==6QAG!6NJF&J(%AT<5B$IX4JI!M.1)
MF8<H<0S7587HG\NTT$A3!J*%/KAPB/X&P5)FA88(;)@1HC$0C]<G5%S4.-C$
M(M81-A)2B=3VN68X-,\3<U1-&U+.&8*B<\B"41/&I1X\_YG,4I57EHM1"A/7
MS+RXAC1;VAWVQ3VXP$5IO^#')1RN6@7A9CUG*TWX!EY>;`]<33ZB(J`R3U?5
M&^KY7*M1ZZ*:W+!J$^+0$QO6VN3Z632)@H/D/#:$A0N*;V[0+<-=L]8K[KL$
M[]'3=*F14H=0$%CCO;:Q"?G)O'HF1Q&*&KYJ&[.JX4M4DS^V;W?)*4+D_ZU3
M/%0$)O%.A&K6^TT8P6`8KSZ7,5>TOD5I`IOM#I(FL2$4XBD)Q&200]C$BT64
M8+`XT?0@6>A(3P!%+HXNHCNM#%9!P=,$J_RX,6F`5;$,T-FXAV_!:XLUI^4-
MO3';<W4T?_0T>1@=0`;Q.&;%+"W[+_ZD[S]/;[,LA^%[%'YL]ZL>6QY:1I=&
*[2]EW9025G$`````
`
end

       reply	other threads:[~2003-01-08  3:46 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200212210334.gBL3Yi111607@localhost.localdomain>
     [not found] ` <175810000.1041300864@aslan.btc.adaptec.com>
2003-01-08  3:46   ` Justin T. Gibbs [this message]
2003-01-08  3:49     ` Aic7xxx and Aic79xx driver updates Justin T. Gibbs
2003-05-01 22:28 Aic7xxx and Aic79xx Driver Updates Justin T. Gibbs
2003-05-02  0:17 ` Willy Tarreau
2003-05-02  4:25   ` Justin T. Gibbs
2003-05-02  5:56     ` Willy Tarreau
2003-05-02 14:30 ` James Bottomley
2003-05-02 17:51   ` Justin T. Gibbs
2003-05-02 18:07     ` James Bottomley
2003-05-02 18:19       ` Linus Torvalds
2003-05-03 23:03         ` Justin T. Gibbs
2003-05-03 23:01       ` Justin T. Gibbs
2003-05-07  3:22     ` Lukasz Trabinski
2003-05-07  8:31       ` Justin T. Gibbs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=679640000.1041997595@aslan.btc.adaptec.com \
    --to=gibbs@scsiguy.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.