All of lore.kernel.org
 help / color / mirror / Atom feed
* RE: [PATCH] ips driver for 2.4.23-pre4
@ 2004-01-08 20:18 Hammer, Jack
  2004-01-08 21:16 ` James Bottomley
  0 siblings, 1 reply; 13+ messages in thread
From: Hammer, Jack @ 2004-01-08 20:18 UTC (permalink / raw)
  To: Christoph Hellwig, Xose Vazquez Perez; +Cc: linux-scsi, Tosatti


Adaptec ( Jack Hammer and Dave Jeffery ) maintains the ips driver.  We
submitted this driver.  If there are any questions or concerns, please let
us know ASAP.

The 6.11.07 ips driver passed a very strict ( and formal ) 4 month
IBM/Adaptec test cycle that included stress tests on every platform and
adapter that it supports before the patch was released.

The reason this compiler warning exists is that these are the only hardware
platforms that support this adapter.  Use of this adapter is any other box
can cause serious problems and is not supported by anyone.  Removal of this
warning has no effect on the executable code and would not improve the
driver in my opinion.  If I was including a module in my system that is not
going to work, I'd like to know about it.



-----Original Message-----
From: linux-scsi-owner@vger.kernel.org
[mailto:linux-scsi-owner@vger.kernel.org] On Behalf Of Christoph Hellwig
Sent: Thursday, January 08, 2004 12:16 PM
To: Xose Vazquez Perez
Cc: linux-scsi; Tosatti
Subject: Re: [PATCH] ips driver for 2.4.23-pre4

On Wed, Jan 07, 2004 at 08:17:00PM +0100, Xose Vazquez Perez wrote:
> -#if !defined(__i386__) && !defined(__ia64__) -#error "This driver has 
> only been tested on the x86/ia64 platforms"
> +#if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__) 
> +#error "This driver has only been tested on the x86/ia64/x86_64
platforms"
>  #endif

This warning schould be removed completly.  Lots of PCI drivers have been
tested only on a few plattforms.

Else the patch is okay, but where's the maintainer?

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the
body of a message to majordomo@vger.kernel.org More majordomo info at
http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH] ips driver for 2.4.23-pre4
  2004-01-08 20:18 [PATCH] ips driver for 2.4.23-pre4 Hammer, Jack
@ 2004-01-08 21:16 ` James Bottomley
  2004-01-09 12:35   ` Marcelo Tosatti
  0 siblings, 1 reply; 13+ messages in thread
From: James Bottomley @ 2004-01-08 21:16 UTC (permalink / raw)
  To: Hammer, Jack; +Cc: Christoph Hellwig, Xose Vazquez Perez, linux-scsi, Tosatti

On Thu, 2004-01-08 at 15:18, Hammer, Jack wrote:
> The reason this compiler warning exists is that these are the only hardware
> platforms that support this adapter.  Use of this adapter is any other box
> can cause serious problems and is not supported by anyone.  Removal of this
> warning has no effect on the executable code and would not improve the
> driver in my opinion.  If I was including a module in my system that is not
> going to work, I'd like to know about it.
[...]
> > -#if !defined(__i386__) && !defined(__ia64__) -#error "This driver has 
> > only been tested on the x86/ia64 platforms"
> > +#if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__) 
> > +#error "This driver has only been tested on the x86/ia64/x86_64
> platforms"
> >  #endif

This is actually an #error though, not a #warning...could we at least
downgrade it to #warning (like has already been done for ips) so I don't
get spurious compile failure reports from people doing make allyes
configurations on non-x86 boxes?

Thanks,

James



^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH] ips driver for 2.4.23-pre4
  2004-01-08 21:16 ` James Bottomley
@ 2004-01-09 12:35   ` Marcelo Tosatti
  0 siblings, 0 replies; 13+ messages in thread
From: Marcelo Tosatti @ 2004-01-09 12:35 UTC (permalink / raw)
  To: James Bottomley
  Cc: Hammer, Jack, Christoph Hellwig, Xose Vazquez Perez, linux-scsi, Tosatti



On Thu, 8 Jan 2004, James Bottomley wrote:

> On Thu, 2004-01-08 at 15:18, Hammer, Jack wrote:
> > The reason this compiler warning exists is that these are the only hardware
> > platforms that support this adapter.  Use of this adapter is any other box
> > can cause serious problems and is not supported by anyone.  Removal of this
> > warning has no effect on the executable code and would not improve the
> > driver in my opinion.  If I was including a module in my system that is not
> > going to work, I'd like to know about it.
> [...]
> > > -#if !defined(__i386__) && !defined(__ia64__) -#error "This driver has
> > > only been tested on the x86/ia64 platforms"
> > > +#if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__)
> > > +#error "This driver has only been tested on the x86/ia64/x86_64
> > platforms"
> > >  #endif
>
> This is actually an #error though, not a #warning...could we at least
> downgrade it to #warning (like has already been done for ips) so I don't
> get spurious compile failure reports from people doing make allyes
> configurations on non-x86 boxes?

Jack?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH] ips driver for 2.4.23-pre4
@ 2004-01-09 12:35 Hammer, Jack
  0 siblings, 0 replies; 13+ messages in thread
From: Hammer, Jack @ 2004-01-09 12:35 UTC (permalink / raw)
  To: James Bottomley
  Cc: Christoph Hellwig, Xose Vazquez Perez, linux-scsi, Tosatti

James,

OK by me ...  I have no problem at all with that. 

Jack


-----Original Message-----
From: James Bottomley [mailto:James.Bottomley@SteelEye.com] 
Sent: Thursday, January 08, 2004 4:16 PM
To: Hammer, Jack
Cc: Christoph Hellwig; Xose Vazquez Perez; linux-scsi; Tosatti
Subject: RE: [PATCH] ips driver for 2.4.23-pre4

On Thu, 2004-01-08 at 15:18, Hammer, Jack wrote:
> The reason this compiler warning exists is that these are the only 
> hardware platforms that support this adapter.  Use of this adapter is 
> any other box can cause serious problems and is not supported by 
> anyone.  Removal of this warning has no effect on the executable code 
> and would not improve the driver in my opinion.  If I was including a 
> module in my system that is not going to work, I'd like to know about it.
[...]
> > -#if !defined(__i386__) && !defined(__ia64__) -#error "This driver 
> > has only been tested on the x86/ia64 platforms"
> > +#if !defined(__i386__) && !defined(__ia64__) && 
> > +!defined(__x86_64__) #error "This driver has only been tested on 
> > +the x86/ia64/x86_64
> platforms"
> >  #endif

This is actually an #error though, not a #warning...could we at least
downgrade it to #warning (like has already been done for ips) so I don't get
spurious compile failure reports from people doing make allyes
configurations on non-x86 boxes?

Thanks,

James



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] ips driver for 2.4.23-pre4
  2004-01-08 19:30           ` Xose Vazquez Perez
@ 2004-01-08 19:36             ` Arjan van de Ven
  0 siblings, 0 replies; 13+ messages in thread
From: Arjan van de Ven @ 2004-01-08 19:36 UTC (permalink / raw)
  To: Xose Vazquez Perez; +Cc: Christoph Hellwig, linux-scsi, Tosatti

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

On Thu, Jan 08, 2004 at 08:30:23PM +0100, Xose Vazquez Perez wrote:
> Arjan van de Ven wrote:
> 
> > who (at least in the RH case) often say "get it in upstream kernel
> > first".
> 
> that is a recent policy for _Fedora_. Or tell me why RHEL kernel
> patches are so big 

no it is not recent policy. RHEL has basically the same policy for drivers.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] ips driver for 2.4.23-pre4
  2004-01-08 19:06         ` Arjan van de Ven
@ 2004-01-08 19:30           ` Xose Vazquez Perez
  2004-01-08 19:36             ` Arjan van de Ven
  0 siblings, 1 reply; 13+ messages in thread
From: Xose Vazquez Perez @ 2004-01-08 19:30 UTC (permalink / raw)
  To: arjanv; +Cc: Christoph Hellwig, linux-scsi, Tosatti

Arjan van de Ven wrote:

> who (at least in the RH case) often say "get it in upstream kernel
> first".

that is a recent policy for _Fedora_. Or tell me why RHEL kernel
patches are so big ;-)


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] ips driver for 2.4.23-pre4
  2004-01-08 18:49       ` Xose Vazquez Perez
@ 2004-01-08 19:06         ` Arjan van de Ven
  2004-01-08 19:30           ` Xose Vazquez Perez
  0 siblings, 1 reply; 13+ messages in thread
From: Arjan van de Ven @ 2004-01-08 19:06 UTC (permalink / raw)
  To: Xose Vazquez Perez; +Cc: Christoph Hellwig, linux-scsi, Tosatti

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


> But they have the bad habit to do updates and patches only for
> the kernels of the distributions or hang it on his web

who (at least in the RH case) often say "get it in upstream kernel
first".


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] ips driver for 2.4.23-pre4
  2004-01-08 18:21     ` Christoph Hellwig
@ 2004-01-08 18:49       ` Xose Vazquez Perez
  2004-01-08 19:06         ` Arjan van de Ven
  0 siblings, 1 reply; 13+ messages in thread
From: Xose Vazquez Perez @ 2004-01-08 18:49 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: linux-scsi, Tosatti

Christoph Hellwig wrote:

> Please tell them to go through linux-scsi, again.

*Already done* , two times at least for every vendor.

I sent to *all* SCSI drivers maintainers a msg to submit the
updates to linux-scsi ml instead only to put it on the web.

But they have the bad habit to do updates and patches only for
the kernels of the distributions or hang it on his web


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] ips driver for 2.4.23-pre4
  2004-01-08 18:18   ` Xose Vazquez Perez
@ 2004-01-08 18:21     ` Christoph Hellwig
  2004-01-08 18:49       ` Xose Vazquez Perez
  0 siblings, 1 reply; 13+ messages in thread
From: Christoph Hellwig @ 2004-01-08 18:21 UTC (permalink / raw)
  To: Xose Vazquez Perez; +Cc: Christoph Hellwig, linux-scsi, Tosatti

On Thu, Jan 08, 2004 at 07:18:54PM +0100, Xose Vazquez Perez wrote:
> the maintainer sent this patch _directly_ to Marcelo, again.

Please tell them to go through linux-scsi, again.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] ips driver for 2.4.23-pre4
  2004-01-08 17:15 ` Christoph Hellwig
@ 2004-01-08 18:18   ` Xose Vazquez Perez
  2004-01-08 18:21     ` Christoph Hellwig
  0 siblings, 1 reply; 13+ messages in thread
From: Xose Vazquez Perez @ 2004-01-08 18:18 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: linux-scsi, Tosatti

Christoph Hellwig wrote:

> On Wed, Jan 07, 2004 at 08:17:00PM +0100, Xose Vazquez Perez wrote:
> 
>>-#if !defined(__i386__) && !defined(__ia64__)
>>-#error "This driver has only been tested on the x86/ia64 platforms"
>>+#if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__)
>>+#error "This driver has only been tested on the x86/ia64/x86_64 platforms"
>> #endif
> 
> 
> This warning schould be removed completly.  Lots of PCI drivers have
> been tested only on a few plattforms.
> 
> Else the patch is okay, but where's the maintainer?

the maintainer sent this patch _directly_ to Marcelo, again.

Ask to them:
Jack Hammer <Jack_Hammer@adaptec.com> David Jeffery <David_Jeffery@adaptec.com>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] ips driver for 2.4.23-pre4
  2004-01-07 19:17 Xose Vazquez Perez
  2004-01-07 20:47 ` Xose Vazquez Perez
@ 2004-01-08 17:15 ` Christoph Hellwig
  2004-01-08 18:18   ` Xose Vazquez Perez
  1 sibling, 1 reply; 13+ messages in thread
From: Christoph Hellwig @ 2004-01-08 17:15 UTC (permalink / raw)
  To: Xose Vazquez Perez; +Cc: linux-scsi, Tosatti

On Wed, Jan 07, 2004 at 08:17:00PM +0100, Xose Vazquez Perez wrote:
> -#if !defined(__i386__) && !defined(__ia64__)
> -#error "This driver has only been tested on the x86/ia64 platforms"
> +#if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__)
> +#error "This driver has only been tested on the x86/ia64/x86_64 platforms"
>  #endif

This warning schould be removed completly.  Lots of PCI drivers have
been tested only on a few plattforms.

Else the patch is okay, but where's the maintainer?


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] ips driver for 2.4.23-pre4
  2004-01-07 19:17 Xose Vazquez Perez
@ 2004-01-07 20:47 ` Xose Vazquez Perez
  2004-01-08 17:15 ` Christoph Hellwig
  1 sibling, 0 replies; 13+ messages in thread
From: Xose Vazquez Perez @ 2004-01-07 20:47 UTC (permalink / raw)
  To: linux-scsi; +Cc: Tosatti

Xose Vazquez Perez wrote:

> latest driver update for 2.4 kernel:
> - Get VersionInfo buffer off the stack !
> - Make Logical Drive Info structure safe for DMA
> - Support for x86_64

I am sorry, last e-mail said 2.4.23-pre4 in the subject line.
But the ips and gdth patches were against 2.4.25-pre4 kernel.
                                               ^


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH] ips driver for 2.4.23-pre4
@ 2004-01-07 19:17 Xose Vazquez Perez
  2004-01-07 20:47 ` Xose Vazquez Perez
  2004-01-08 17:15 ` Christoph Hellwig
  0 siblings, 2 replies; 13+ messages in thread
From: Xose Vazquez Perez @ 2004-01-07 19:17 UTC (permalink / raw)
  To: linux-scsi, Tosatti

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

hi,

latest driver update for 2.4 kernel:
- Get VersionInfo buffer off the stack !
- Make Logical Drive Info structure safe for DMA
- Support for x86_64

-thanks-


[-- Attachment #2: ips.patch --]
[-- Type: text/plain, Size: 25165 bytes --]

diff -Nuar o/drivers/scsi/ips.c n/drivers/scsi/ips.c
--- o/drivers/scsi/ips.c	2004-01-07 20:12:06.000000000 +0100
+++ n/drivers/scsi/ips.c	2003-11-21 17:06:02.000000000 +0100
@@ -131,6 +131,8 @@
 /* 5.30.00  - use __devexit_p()                                              */
 /* 6.00.00  - Add 6x Adapters and Battery Flash                              */
 /* 6.10.00  - Remove 1G Addressing Limitations                               */
+/* 6.11.xx  - Get VersionInfo buffer off the stack !              DDTS 60401 */
+/* 6.11.xx  - Make Logical Drive Info structure safe for DMA      DDTS 60639 */
 /*****************************************************************************/
 
 /*
@@ -196,11 +198,11 @@
 /*
  * DRIVER_VER
  */
-#define IPS_VERSION_HIGH        "6.10"
-#define IPS_VERSION_LOW         ".24 "
+#define IPS_VERSION_HIGH        "6.11"
+#define IPS_VERSION_LOW         ".07 "
 
-#if !defined(__i386__) && !defined(__ia64__)
-#error "This driver has only been tested on the x86/ia64 platforms"
+#if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__)
+#error "This driver has only been tested on the x86/ia64/x86_64 platforms"
 #endif
 
 #if LINUX_VERSION_CODE <= LinuxVersionCode(2,5,0)
@@ -245,6 +247,7 @@
 static int ips_ioctlsize = IPS_IOCTL_SIZE;	/* Size of the ioctl buffer        */
 static int ips_cd_boot;		/* Booting from Manager CD         */
 static char *ips_FlashData = NULL;	/* CD Boot - Flash Data Buffer      */
+static dma_addr_t ips_flashbusaddr;
 static long ips_FlashDataInUse;	/* CD Boot - Flash Data In Use Flag */
 static uint32_t MaxLiteCmds = 32;	/* Max Active Cmds for a Lite Adapter */
 static Scsi_Host_Template ips_driver_template = IPS;
@@ -468,8 +471,7 @@
 static int ips_host_info(ips_ha_t *, char *, off_t, int);
 static void copy_mem_info(IPS_INFOSTR *, char *, int);
 static int copy_info(IPS_INFOSTR *, char *, ...);
-static int ips_get_version_info(ips_ha_t * ha, IPS_VERSION_DATA * Buffer,
-				int intr);
+static int ips_get_version_info(ips_ha_t * ha, dma_addr_t, int intr);
 static void ips_version_check(ips_ha_t * ha, int intr);
 static int ips_abort_init(ips_ha_t * ha, int index);
 static int ips_init_phase2(int index);
@@ -559,17 +561,6 @@
 		ips_setup(ips);
 #endif
 
-	/* If Booting from the Manager CD, Allocate a large Flash        */
-	/* Buffer ( so we won't need to allocate one for each adapter ). */
-	if (ips_cd_boot) {
-		ips_FlashData = (char *) __get_free_pages(IPS_INIT_GFP, 7);
-		if (ips_FlashData == NULL) {
-			/* The validity of this pointer is checked in ips_make_passthru() before it is used */
-			printk(KERN_WARNING
-			       "ERROR: Can't Allocate Large Buffer for Flashing\n");
-		}
-	}
-
 	SHT->proc_info = ips_proc_info;
 	SHT->proc_name = "ips";
 
@@ -1578,21 +1569,20 @@
 ips_alloc_passthru_buffer(ips_ha_t * ha, int length)
 {
 	void *bigger_buf;
-	int count;
-	int order;
+	dma_addr_t dma_busaddr;
 
-	if (ha->ioctl_data && length <= (PAGE_SIZE << ha->ioctl_order))
+	if (ha->ioctl_data && length <= ha->ioctl_len)
 		return 0;
 	/* there is no buffer or it's not big enough, allocate a new one */
-	for (count = PAGE_SIZE, order = 0;
-	     count < length; order++, count <<= 1) ;
-	bigger_buf = (void *) __get_free_pages(IPS_ATOMIC_GFP, order);
+	bigger_buf = pci_alloc_consistent(ha->pcidev, length, &dma_busaddr);
 	if (bigger_buf) {
 		/* free the old memory */
-		free_pages((unsigned long) ha->ioctl_data, ha->ioctl_order);
+		pci_free_consistent(ha->pcidev, ha->ioctl_len, ha->ioctl_data,
+				    ha->ioctl_busaddr);
 		/* use the new memory */
 		ha->ioctl_data = (char *) bigger_buf;
-		ha->ioctl_order = order;
+		ha->ioctl_len = length;
+		ha->ioctl_busaddr = dma_busaddr;
 	} else {
 		return -1;
 	}
@@ -1708,7 +1698,7 @@
 static int
 ips_flash_copperhead(ips_ha_t * ha, ips_passthru_t * pt, ips_scb_t * scb)
 {
-	int datasize, count;
+	int datasize;
 
 	/* Trombone is the only copperhead that can do packet flash, but only
 	 * for firmware. No one said it had to make sence. */
@@ -1728,24 +1718,28 @@
 		pt->BasicStatus = 0;
 		return ips_flash_bios(ha, pt, scb);
 	} else if (pt->CoppCP.cmd.flashfw.packet_num == 0) {
-		if (ips_FlashData && !test_and_set_bit(0, &ips_FlashDataInUse)) {
+		if (ips_FlashData && !test_and_set_bit(0, &ips_FlashDataInUse)){
 			ha->flash_data = ips_FlashData;
-			ha->flash_order = 7;
+			ha->flash_busaddr = ips_flashbusaddr;
+			ha->flash_len = PAGE_SIZE << 7;
 			ha->flash_datasize = 0;
 		} else if (!ha->flash_data) {
 			datasize = pt->CoppCP.cmd.flashfw.total_packets *
 			    pt->CoppCP.cmd.flashfw.count;
-			for (count = PAGE_SIZE, ha->flash_order = 0;
-			     count < datasize; ha->flash_order++, count <<= 1) ;
-			ha->flash_data =
-			    (char *) __get_free_pages(IPS_ATOMIC_GFP,
-						      ha->flash_order);
+			ha->flash_data = pci_alloc_consistent(ha->pcidev,
+					                      datasize,
+							      &ha->flash_busaddr);
+			if (!ha->flash_data){
+				printk(KERN_WARNING "Unable to allocate a flash buffer\n");
+				return IPS_FAILURE;
+			}
 			ha->flash_datasize = 0;
+			ha->flash_len = datasize;
 		} else
 			return IPS_FAILURE;
 	} else {
 		if (pt->CoppCP.cmd.flashfw.count + ha->flash_datasize >
-		    (PAGE_SIZE << ha->flash_order)) {
+		    ha->flash_len) {
 			ips_free_flash_copperhead(ha);
 			printk(KERN_WARNING "failed size sanity check\n");
 			return IPS_FAILURE;
@@ -1928,7 +1922,8 @@
 	if (ha->flash_data == ips_FlashData)
 		test_and_clear_bit(0, &ips_FlashDataInUse);
 	else if (ha->flash_data)
-		free_pages((unsigned long) ha->flash_data, ha->flash_order);
+		pci_free_consistent(ha->pcidev, ha->flash_len, ha->flash_data,
+				    ha->flash_busaddr);
 	ha->flash_data = NULL;
 }
 
@@ -1981,12 +1976,7 @@
 
 	if (pt->CmdBSize) {
 		scb->data_len = pt->CmdBSize;
-		scb->data_busaddr = pci_map_single(ha->pcidev,
-						   ha->ioctl_data +
-						   sizeof (ips_passthru_t),
-						   pt->CmdBSize,
-						   IPS_DMA_DIR(scb));
-		scb->flags |= IPS_SCB_MAP_SINGLE;
+		scb->data_busaddr = ha->ioctl_busaddr + sizeof (ips_passthru_t);
 	} else {
 		scb->data_busaddr = 0L;
 	}
@@ -2410,9 +2400,7 @@
 	} else {
 		/* Morpheus Family - Send Command to the card */
 
-		buffer = kmalloc(0x1000, IPS_ATOMIC_GFP);
-		if (!buffer)
-			return;
+		buffer = ha->ioctl_data;
 
 		memset(buffer, 0, 0x1000);
 
@@ -2431,11 +2419,7 @@
 		scb->cmd.flashfw.total_packets = 1;
 		scb->cmd.flashfw.packet_num = 0;
 		scb->data_len = 0x1000;
-		scb->data_busaddr =
-		    pci_map_single(ha->pcidev, buffer, scb->data_len,
-				   IPS_DMA_DIR(scb));
-		scb->cmd.flashfw.buffer_addr = scb->data_busaddr;
-		scb->flags |= IPS_SCB_MAP_SINGLE;
+		scb->cmd.flashfw.buffer_addr = ha->ioctl_busaddr;
 
 		/* issue the command */
 		if (
@@ -2443,7 +2427,6 @@
 		     IPS_FAILURE) || (ret == IPS_SUCCESS_IMM)
 		    || ((scb->basic_status & IPS_GSC_STATUS_MASK) > 1)) {
 			/* Error occurred */
-			kfree(buffer);
 
 			return;
 		}
@@ -2453,11 +2436,8 @@
 			minor = buffer[0x1fe + 0xC0];	/* Offset 0x1fe after the header (0xc0) */
 			subminor = buffer[0x1fd + 0xC0];	/* Offset 0x1fd after the header (0xc0) */
 		} else {
-			kfree(buffer);
 			return;
 		}
-
-		kfree(buffer);
 	}
 
 	ha->bios_version[0] = hexDigits[(major & 0xF0) >> 4];
@@ -2806,6 +2786,11 @@
 		scb->dcdb.cmd_attribute =
 		    ips_command_direction[scb->scsi_cmd->cmnd[0]];
 
+        /* Allow a WRITE BUFFER Command to Have no Data */
+        /* This is Used by Tape Flash Utilites          */
+        if ((scb->scsi_cmd->cmnd[0] == WRITE_BUFFER) && (scb->data_len == 0)) 
+            scb->dcdb.cmd_attribute = 0;                  
+
 		if (!(scb->dcdb.cmd_attribute & 0x3))
 			scb->dcdb.transfer_length = 0;
 
@@ -3786,23 +3771,14 @@
 					scb->scsi_cmd->result = DID_OK << 16;
 				}
 			} else {
-				scb->cmd.logical_info.op_code =
-				    IPS_CMD_GET_LD_INFO;
-				scb->cmd.logical_info.command_id =
-				    IPS_COMMAND_ID(ha, scb);
+				scb->cmd.logical_info.op_code = IPS_CMD_GET_LD_INFO;
+				scb->cmd.logical_info.command_id = IPS_COMMAND_ID(ha, scb);
 				scb->cmd.logical_info.reserved = 0;
 				scb->cmd.logical_info.reserved2 = 0;
-				scb->data_len =
-				    sizeof (ha->adapt->logical_drive_info);
-				scb->data_busaddr =
-				    pci_map_single(ha->pcidev,
-						   &ha->adapt->
-						   logical_drive_info,
-						   scb->data_len,
-						   IPS_DMA_DIR(scb));
-				scb->flags |= IPS_SCB_MAP_SINGLE;
-				scb->cmd.logical_info.buffer_addr =
-				    scb->data_busaddr;
+				scb->data_len = sizeof (IPS_LD_INFO);
+				scb->data_busaddr = ha->logical_drive_info_dma_addr;
+				scb->flags = 0;
+				scb->cmd.logical_info.buffer_addr = scb->data_busaddr;
 				ret = IPS_SUCCESS;
 			}
 
@@ -3930,28 +3906,19 @@
 			scb->cmd.basic_io.segment_4G = 0;
 			scb->cmd.basic_io.enhanced_sg = 0;
 			scb->data_len = sizeof (*ha->enq);
-			scb->data_busaddr = pci_map_single(ha->pcidev, ha->enq,
-							   scb->data_len,
-							   IPS_DMA_DIR(scb));
-			scb->cmd.basic_io.sg_addr = scb->data_busaddr;
-			scb->flags |= IPS_SCB_MAP_SINGLE;
+			scb->cmd.basic_io.sg_addr = ha->enq_busaddr;
 			ret = IPS_SUCCESS;
 			break;
 
 		case READ_CAPACITY:
 			scb->cmd.logical_info.op_code = IPS_CMD_GET_LD_INFO;
-			scb->cmd.logical_info.command_id =
-			    IPS_COMMAND_ID(ha, scb);
+			scb->cmd.logical_info.command_id = IPS_COMMAND_ID(ha, scb);
 			scb->cmd.logical_info.reserved = 0;
 			scb->cmd.logical_info.reserved2 = 0;
 			scb->cmd.logical_info.reserved3 = 0;
-			scb->data_len = sizeof (ha->adapt->logical_drive_info);
-			scb->data_busaddr = pci_map_single(ha->pcidev,
-							   &ha->adapt->
-							   logical_drive_info,
-							   scb->data_len,
-							   IPS_DMA_DIR(scb));
-			scb->flags |= IPS_SCB_MAP_SINGLE;
+			scb->data_len = sizeof (IPS_LD_INFO);
+            scb->data_busaddr = ha->logical_drive_info_dma_addr;
+			scb->flags = 0;
 			scb->cmd.logical_info.buffer_addr = scb->data_busaddr;
 			ret = IPS_SUCCESS;
 			break;
@@ -4275,19 +4242,17 @@
 		return (0);
 
 	if ((scb->basic_status & IPS_GSC_STATUS_MASK) > 1) {
-		memset(&ha->adapt->logical_drive_info, 0,
-		       sizeof (ha->adapt->logical_drive_info));
-
-		return (0);
+		memset(ha->logical_drive_info, 0, sizeof (IPS_LD_INFO));
+        return (0);
 	}
 
-	if (ha->adapt->logical_drive_info.drive_info[scb->target_id].state !=
+	if (ha->logical_drive_info->drive_info[scb->target_id].state !=
 	    IPS_LD_OFFLINE
-	    && ha->adapt->logical_drive_info.drive_info[scb->target_id].state !=
+	    && ha->logical_drive_info->drive_info[scb->target_id].state !=
 	    IPS_LD_FREE
-	    && ha->adapt->logical_drive_info.drive_info[scb->target_id].state !=
+	    && ha->logical_drive_info->drive_info[scb->target_id].state !=
 	    IPS_LD_CRS
-	    && ha->adapt->logical_drive_info.drive_info[scb->target_id].state !=
+	    && ha->logical_drive_info->drive_info[scb->target_id].state !=
 	    IPS_LD_SYS) return (1);
 	else
 		return (0);
@@ -4349,7 +4314,7 @@
 
 	cap.lba =
 	    cpu_to_be32(le32_to_cpu
-			(ha->adapt->logical_drive_info.
+			(ha->logical_drive_info->
 			 drive_info[scb->target_id].sector_count) - 1);
 	cap.len = cpu_to_be32((uint32_t) IPS_BLKSIZE);
 
@@ -4488,7 +4453,8 @@
 
 	if (ha) {
 		if (ha->enq) {
-			kfree(ha->enq);
+			pci_free_consistent(ha->pcidev, sizeof(IPS_ENQ),
+					    ha->enq, ha->enq_busaddr);
 			ha->enq = NULL;
 		}
 
@@ -4503,6 +4469,14 @@
 					    sizeof (IPS_IO_CMD), ha->adapt,
 					    ha->adapt->hw_status_start);
 			ha->adapt = NULL;
+		}  	
+        	
+        if (ha->logical_drive_info) {
+			pci_free_consistent(ha->pcidev,
+					    sizeof (IPS_LD_INFO),
+                        ha->logical_drive_info,
+					    ha->logical_drive_info_dma_addr);
+			ha->logical_drive_info = NULL;
 		}
 
 		if (ha->nvram) {
@@ -4516,11 +4490,11 @@
 		}
 
 		if (ha->ioctl_data) {
-			free_pages((unsigned long) ha->ioctl_data,
-				   ha->ioctl_order);
+			pci_free_consistent(ha->pcidev, ha->ioctl_len,
+					    ha->ioctl_data, ha->ioctl_busaddr);
 			ha->ioctl_data = NULL;
 			ha->ioctl_datasize = 0;
-			ha->ioctl_order = 0;
+			ha->ioctl_len = 0;
 		}
 		ips_deallocatescbs(ha, ha->max_cmds);
 
@@ -4694,6 +4668,7 @@
 	}
 
 	ha->scb_freelist = scb->q_next;
+    scb->flags = 0;
 	scb->q_next = NULL;
 
 	ips_init_scb(ha, scb);
@@ -5861,10 +5836,7 @@
 	scb->cmd.basic_io.sector_count = 0;
 	scb->cmd.basic_io.log_drv = 0;
 	scb->data_len = sizeof (*ha->enq);
-	scb->data_busaddr = pci_map_single(ha->pcidev, ha->enq, scb->data_len,
-					   IPS_DMA_DIR(scb));
-	scb->cmd.basic_io.sg_addr = scb->data_busaddr;
-	scb->flags |= IPS_SCB_MAP_SINGLE;
+	scb->cmd.basic_io.sg_addr = ha->enq_busaddr;
 
 	/* send command */
 	if (
@@ -5907,10 +5879,7 @@
 	scb->cmd.basic_io.sector_count = 0;
 	scb->cmd.basic_io.log_drv = 0;
 	scb->data_len = sizeof (*ha->subsys);
-	scb->data_busaddr = pci_map_single(ha->pcidev, ha->subsys,
-					   scb->data_len, IPS_DMA_DIR(scb));
-	scb->cmd.basic_io.sg_addr = scb->data_busaddr;
-	scb->flags |= IPS_SCB_MAP_SINGLE;
+	scb->cmd.basic_io.sg_addr = ha->ioctl_busaddr;
 
 	/* send command */
 	if (
@@ -5919,6 +5888,7 @@
 	    || ((scb->basic_status & IPS_GSC_STATUS_MASK) > 1))
 		return (0);
 
+	memcpy(ha->subsys, ha->ioctl_data, sizeof(*ha->subsys));
 	return (1);
 }
 
@@ -5954,10 +5924,7 @@
 	scb->cmd.basic_io.op_code = IPS_CMD_READ_CONF;
 	scb->cmd.basic_io.command_id = IPS_COMMAND_ID(ha, scb);
 	scb->data_len = sizeof (*ha->conf);
-	scb->data_busaddr = pci_map_single(ha->pcidev, ha->conf,
-					   scb->data_len, IPS_DMA_DIR(scb));
-	scb->cmd.basic_io.sg_addr = scb->data_busaddr;
-	scb->flags |= IPS_SCB_MAP_SINGLE;
+	scb->cmd.basic_io.sg_addr = ha->ioctl_busaddr;
 
 	/* send command */
 	if (
@@ -5977,7 +5944,8 @@
 
 		return (0);
 	}
-
+	
+	memcpy(ha->conf, ha->ioctl_data, sizeof(*ha->conf));
 	return (1);
 }
 
@@ -6012,11 +5980,10 @@
 	scb->cmd.nvram.reserved = 0;
 	scb->cmd.nvram.reserved2 = 0;
 	scb->data_len = sizeof (*ha->nvram);
-	scb->data_busaddr = pci_map_single(ha->pcidev, ha->nvram,
-					   scb->data_len, IPS_DMA_DIR(scb));
-	scb->cmd.nvram.buffer_addr = scb->data_busaddr;
-	scb->flags |= IPS_SCB_MAP_SINGLE;
-
+	scb->cmd.nvram.buffer_addr = ha->ioctl_busaddr;
+	if (write)
+		memcpy(ha->ioctl_data, ha->nvram, sizeof(*ha->nvram));
+	
 	/* issue the command */
 	if (
 	    ((ret = ips_send_wait(ha, scb, ips_cmd_timeout, intr)) ==
@@ -6027,7 +5994,8 @@
 
 		return (0);
 	}
-
+	if (!write)
+		memcpy(ha->nvram, ha->ioctl_data, sizeof(*ha->nvram));
 	return (1);
 }
 
@@ -6155,7 +6123,7 @@
 	scb->cmd.ffdc.op_code = IPS_CMD_FFDC;
 	scb->cmd.ffdc.command_id = IPS_COMMAND_ID(ha, scb);
 	scb->cmd.ffdc.reset_count = 0;
-	scb->cmd.ffdc.reset_type = 0x80;
+	scb->cmd.ffdc.reset_type = 0;
 
 	/* convert time to what the card wants */
 	ips_fix_ffdc_time(ha, scb, ha->last_ffdc);
@@ -6750,16 +6718,18 @@
 static void
 ips_version_check(ips_ha_t * ha, int intr)
 {
-	IPS_VERSION_DATA VersionInfo;
+	IPS_VERSION_DATA *VersionInfo;
 	uint8_t FirmwareVersion[IPS_COMPAT_ID_LENGTH + 1];
 	uint8_t BiosVersion[IPS_COMPAT_ID_LENGTH + 1];
 	int MatchError;
-	int rc;
+	int  rc;
 	char BiosString[10];
 	char FirmwareString[10];
 
 	METHOD_TRACE("ips_version_check", 1);
 
+    VersionInfo = ( IPS_VERSION_DATA * ) ha->ioctl_data;
+
 	memset(FirmwareVersion, 0, IPS_COMPAT_ID_LENGTH + 1);
 	memset(BiosVersion, 0, IPS_COMPAT_ID_LENGTH + 1);
 
@@ -6769,10 +6739,11 @@
 
 	rc = IPS_FAILURE;
 	if (ha->subsys->param[4] & IPS_GET_VERSION_SUPPORT) {	/* If Versioning is Supported */
+        memset( VersionInfo, 0, sizeof (IPS_VERSION_DATA));
 		/* Get the Version Info with a Get Version Command */
-		rc = ips_get_version_info(ha, &VersionInfo, intr);
+		rc = ips_get_version_info(ha, ha->ioctl_busaddr, intr);
 		if (rc == IPS_SUCCESS)
-			memcpy(FirmwareVersion, VersionInfo.compatibilityId,
+			memcpy(FirmwareVersion, VersionInfo->compatibilityId,
 			       IPS_COMPAT_ID_LENGTH);
 	}
 
@@ -6835,14 +6806,13 @@
 /*     0 if Successful, else non-zero                                        */
 /*---------------------------------------------------------------------------*/
 static int
-ips_get_version_info(ips_ha_t * ha, IPS_VERSION_DATA * Buffer, int intr)
+ips_get_version_info(ips_ha_t * ha, dma_addr_t Buffer, int intr)
 {
 	ips_scb_t *scb;
 	int rc;
 
 	METHOD_TRACE("ips_get_version_info", 1);
 
-	memset(Buffer, 0, sizeof (IPS_VERSION_DATA));
 	scb = &ha->scbs[ha->max_cmds - 1];
 
 	ips_init_scb(ha, scb);
@@ -6854,11 +6824,10 @@
 	scb->cmd.version_info.reserved = 0;
 	scb->cmd.version_info.count = sizeof (IPS_VERSION_DATA);
 	scb->cmd.version_info.reserved2 = 0;
-	scb->data_len = sizeof (*Buffer);
-	scb->data_busaddr = pci_map_single(ha->pcidev, Buffer,
-					   scb->data_len, IPS_DMA_DIR(scb));
-	scb->cmd.version_info.buffer_addr = scb->data_busaddr;
-	scb->flags |= IPS_SCB_MAP_SINGLE;
+	scb->data_len = sizeof (IPS_VERSION_DATA);
+    scb->data_busaddr = Buffer;
+	scb->cmd.version_info.buffer_addr = Buffer;
+	scb->flags = 0;
 
 	/* issue command */
 	rc = ips_send_wait(ha, scb, ips_cmd_timeout, intr);
@@ -7176,7 +7145,6 @@
 	uint16_t subdevice_id;
 	int j;
 	int index;
-	uint32_t count;
 	dma_addr_t dma_address;
 	char *ioremap_ptr;
 	char *mem_ptr;
@@ -7292,17 +7260,21 @@
 	 * are guaranteed to be < 4G.
 	 */
 	if (IPS_ENABLE_DMA64 && IPS_HAS_ENH_SGLIST(ha) &&
-	    !pci_set_dma_mask(ha->pcidev, (u64) 0xffffffffffffffff)) {
+	    !pci_set_dma_mask(ha->pcidev, 0xffffffffffffffffULL)) {
 		(ha)->flags |= IPS_HA_ENH_SG;
 	} else {
-		if (pci_set_dma_mask(ha->pcidev, (u64) 0xffffffff) != 0) {
+		if (pci_set_dma_mask(ha->pcidev, 0xffffffffULL) != 0) {
 			printk(KERN_WARNING "Unable to set DMA Mask\n");
 			return ips_abort_init(ha, index);
 		}
 	}
-
-	ha->enq = kmalloc(sizeof (IPS_ENQ), IPS_INIT_GFP);
-
+	if(ips_cd_boot && !ips_FlashData){
+		ips_FlashData = pci_alloc_consistent(pci_dev, PAGE_SIZE << 7,
+						     &ips_flashbusaddr);
+	}
+	
+	ha->enq = pci_alloc_consistent(pci_dev, sizeof (IPS_ENQ),
+				       &ha->enq_busaddr);
 	if (!ha->enq) {
 		printk(KERN_WARNING
 		       "Unable to allocate host inquiry structure\n");
@@ -7318,15 +7290,24 @@
 	}
 	ha->adapt->hw_status_start = dma_address;
 	ha->dummy = (void *) (ha->adapt + 1);
-
-	ha->conf = kmalloc(sizeof (IPS_CONF), IPS_INIT_GFP);
+    
+	ha->logical_drive_info = pci_alloc_consistent(pci_dev, sizeof (IPS_LD_INFO),
+                                                  &dma_address);
+	if (!ha->logical_drive_info) {
+		printk(KERN_WARNING
+		       "Unable to allocate host logical drive info structure\n");
+		return ips_abort_init(ha, index);
+	}
+	ha->logical_drive_info_dma_addr = dma_address;
+    
+	ha->conf = kmalloc(sizeof (IPS_CONF), GFP_KERNEL);
 
 	if (!ha->conf) {
 		printk(KERN_WARNING "Unable to allocate host conf structure\n");
 		return ips_abort_init(ha, index);
 	}
 
-	ha->nvram = kmalloc(sizeof (IPS_NVRAM_P5), IPS_INIT_GFP);
+	ha->nvram = kmalloc(sizeof (IPS_NVRAM_P5), GFP_KERNEL);
 
 	if (!ha->nvram) {
 		printk(KERN_WARNING
@@ -7334,7 +7315,7 @@
 		return ips_abort_init(ha, index);
 	}
 
-	ha->subsys = kmalloc(sizeof (IPS_SUBSYS), IPS_INIT_GFP);
+	ha->subsys = kmalloc(sizeof (IPS_SUBSYS), GFP_KERNEL);
 
 	if (!ha->subsys) {
 		printk(KERN_WARNING
@@ -7342,18 +7323,18 @@
 		return ips_abort_init(ha, index);
 	}
 
-	for (count = PAGE_SIZE, ha->ioctl_order = 0;
-	     count < ips_ioctlsize; ha->ioctl_order++, count <<= 1) ;
-
-	ha->ioctl_data =
-	    (char *) __get_free_pages(IPS_INIT_GFP, ha->ioctl_order);
-	ha->ioctl_datasize = count;
+	/* the ioctl buffer is now used during adapter initialization, so its
+	 * successful allocation is now required */
+	if (ips_ioctlsize < PAGE_SIZE)
+		ips_ioctlsize = PAGE_SIZE;
+	
+	ha->ioctl_data = pci_alloc_consistent(pci_dev, ips_ioctlsize,
+					      &ha->ioctl_busaddr);
+	ha->ioctl_len = ips_ioctlsize;
 
 	if (!ha->ioctl_data) {
 		printk(KERN_WARNING "Unable to allocate IOCTL data\n");
-		ha->ioctl_data = NULL;
-		ha->ioctl_order = 0;
-		ha->ioctl_datasize = 0;
+		return ips_abort_init(ha, index);
 	}
 
 	/*
diff -Nuar o/drivers/scsi/ips.h n/drivers/scsi/ips.h
--- o/drivers/scsi/ips.h	2004-01-07 20:12:06.000000000 +0100
+++ n/drivers/scsi/ips.h	2003-11-21 17:06:02.000000000 +0100
@@ -111,22 +111,13 @@
       #define min(x,y) ((x) < (y) ? x : y)
    #endif
 
+   #define pci_dma_hi32(a)         ((a >> 16) >> 16)
    #define pci_dma_lo32(a)         (a & 0xffffffff)
 
    #if (BITS_PER_LONG > 32) || (defined CONFIG_HIGHMEM64G && defined IPS_HIGHIO)
       #define IPS_ENABLE_DMA64        (1)
-      #define pci_dma_hi32(a)         (a >> 32)
    #else
       #define IPS_ENABLE_DMA64        (0)
-      #define pci_dma_hi32(a)         (0)
-   #endif
-
-   #if defined(__ia64__)
-      #define IPS_ATOMIC_GFP	(GFP_DMA | GFP_ATOMIC)
-      #define IPS_INIT_GFP	GFP_DMA
-   #else
-      #define IPS_ATOMIC_GFP    GFP_ATOMIC
-      #define IPS_INIT_GFP	GFP_KERNEL
    #endif
 
    /*
@@ -734,7 +725,6 @@
    volatile PIPS_STATUS p_status_tail;
    volatile uint32_t    hw_status_start;
    volatile uint32_t    hw_status_tail;
-   IPS_LD_INFO          logical_drive_info;
 } IPS_ADAPTER, *PIPS_ADAPTER;
 
 typedef struct {
@@ -1092,6 +1082,8 @@
    ips_scb_queue_t    scb_activelist;     /* Active SCB list            */
    IPS_IO_CMD        *dummy;              /* dummy command              */
    IPS_ADAPTER       *adapt;              /* Adapter status area        */
+   IPS_LD_INFO       *logical_drive_info; /* Logical Drive Info         */
+   dma_addr_t         logical_drive_info_dma_addr; /* Logical Drive Info DMA Address */
    IPS_ENQ           *enq;                /* Adapter Enquiry data       */
    IPS_CONF          *conf;               /* Adapter config data        */
    IPS_NVRAM_P5      *nvram;              /* NVRAM page 5 data          */
@@ -1109,7 +1101,8 @@
    uint16_t           device_id;          /* PCI device ID              */
    uint8_t            slot_num;           /* PCI Slot Number            */
    uint16_t           subdevice_id;       /* Subsystem device ID        */
-   uint8_t            ioctl_order;        /* Number of pages in ioctl   */
+   int                ioctl_len;          /* size of ioctl buffer       */
+   dma_addr_t         ioctl_busaddr;      /* dma address of ioctl buffer*/
    uint8_t            bios_version[8];    /* BIOS Revision              */
    uint32_t           mem_addr;           /* Memory mapped address      */
    uint32_t           io_len;             /* Size of IO Address         */
@@ -1119,8 +1112,10 @@
    ips_hw_func_t      func;               /* hw function pointers       */
    struct pci_dev    *pcidev;             /* PCI device handle          */
    char              *flash_data;         /* Save Area for flash data   */
-   u8                 flash_order;        /* Save Area for flash size order */
+   int                flash_len;          /* length of flash buffer     */
    u32                flash_datasize;     /* Save Area for flash data size */
+   dma_addr_t         flash_busaddr;      /* dma address of flash buffer*/
+   dma_addr_t         enq_busaddr;        /* dma address of enq struct  */
    uint8_t            requires_esl;       /* Requires an EraseStripeLock */
 } ips_ha_t;
 
@@ -1136,8 +1131,8 @@
    uint8_t           bus;
    uint8_t           lun;
    uint8_t           cdb[12];
-   uint32_t          scb_busaddr;
-   uint32_t          data_busaddr;
+   uint32_t          scb_busaddr;      
+   uint32_t          old_data_busaddr;         // Obsolete field left in to not break utilities
    uint32_t          timeout;
    uint8_t           basic_status;
    uint8_t           extended_status;
@@ -1153,6 +1148,7 @@
    ips_scb_callback  callback;
    uint32_t          sg_busaddr;
    int               sg_count;
+   dma_addr_t        data_busaddr;
 } ips_scb_t;
 
 typedef struct ips_scb_pt {
@@ -1208,13 +1204,13 @@
 
 #define IPS_VER_MAJOR 6
 #define IPS_VER_MAJOR_STRING "6"
-#define IPS_VER_MINOR 10
-#define IPS_VER_MINOR_STRING "10"
-#define IPS_VER_BUILD 24
-#define IPS_VER_BUILD_STRING "24"
-#define IPS_VER_STRING "6.10.24"
-#define IPS_RELEASE_ID 0x00010000
-#define IPS_BUILD_IDENT 1250
+#define IPS_VER_MINOR 11
+#define IPS_VER_MINOR_STRING "11"
+#define IPS_VER_BUILD 07
+#define IPS_VER_BUILD_STRING "07"
+#define IPS_VER_STRING "6.11.07"
+#define IPS_RELEASE_ID 0x00010001
+#define IPS_BUILD_IDENT 2224
 #define IPS_LEGALCOPYRIGHT_STRING "(C) Copyright IBM Corp. 1994, 2003. All Rights Reserved."
 #define IPS_ADAPTECCOPYRIGHT_STRING "(c) Copyright Adaptec, Inc. 2002 to present. All Rights Reserved."
 #define IPS_NT_LEGALCOPYRIGHT_STRING "(C) Copyright IBM Corp. 1994, 2003."
@@ -1224,11 +1220,11 @@
 #define IPS_VER_SERVERAID2 "2.88.13"
 #define IPS_VER_NAVAJO "2.88.13"
 #define IPS_VER_SERVERAID3 "6.10.24"
-#define IPS_VER_SERVERAID4H "6.10.24"
-#define IPS_VER_SERVERAID4MLx "6.10.24"
-#define IPS_VER_SARASOTA "6.10.24"
-#define IPS_VER_MARCO "6.10.24"
-#define IPS_VER_SEBRING "6.10.24"
+#define IPS_VER_SERVERAID4H "6.11.07"
+#define IPS_VER_SERVERAID4MLx "6.11.07"
+#define IPS_VER_SARASOTA "6.11.07"
+#define IPS_VER_MARCO "6.11.07"
+#define IPS_VER_SEBRING "6.11.07"
 
 /* Compatability IDs for various adapters */
 #define IPS_COMPAT_UNKNOWN ""

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2004-01-09 12:43 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-01-08 20:18 [PATCH] ips driver for 2.4.23-pre4 Hammer, Jack
2004-01-08 21:16 ` James Bottomley
2004-01-09 12:35   ` Marcelo Tosatti
  -- strict thread matches above, loose matches on Subject: below --
2004-01-09 12:35 Hammer, Jack
2004-01-07 19:17 Xose Vazquez Perez
2004-01-07 20:47 ` Xose Vazquez Perez
2004-01-08 17:15 ` Christoph Hellwig
2004-01-08 18:18   ` Xose Vazquez Perez
2004-01-08 18:21     ` Christoph Hellwig
2004-01-08 18:49       ` Xose Vazquez Perez
2004-01-08 19:06         ` Arjan van de Ven
2004-01-08 19:30           ` Xose Vazquez Perez
2004-01-08 19:36             ` Arjan van de Ven

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.