All of lore.kernel.org
 help / color / mirror / Atom feed
* RE: ANNOUNCE: megaraid driver version 2.10.1
@ 2004-01-13 21:39 Mukker, Atul
  2004-01-14  9:22 ` 'hch@infradead.org'
  0 siblings, 1 reply; 7+ messages in thread
From: Mukker, Atul @ 2004-01-13 21:39 UTC (permalink / raw)
  To: 'hch@infradead.org', 'James Bottomley'
  Cc: 'linux-kernel@vger.kernel.org',
	linux-scsi, 'torvalds@osdl.org',
	'marcelo.tosatti@cyclades.com',
	Matt_Domsch

> > The megaraid driver version 2.10.1 is released and can be 
> downloaded from
> > ftp://ftp.lsil.com/pub/linux-megaraid/drivers/version-2.10.1/
> > 
> > Following other components are also available at this location:
> > i.	Patches for Red Hat and SuSE stock kernels
> 
> Can't find patches for mainline anywhere.  Also it's usually a good
> idea to send the _patches_ to lkml for review.
I have inlined the patch for driver against kernel 2.4.24 version driver. It
is also available at
ftp://ftp.lsil.com/pub/linux-megaraid/drivers/version-2.10.1/megaraid-linux-
2.4.24-megaraid-2.10.1.patch

Marcelo:
Please update your tree with the latest megaraid 2.10.1 using this patch

> 
> I've diffed the driver against the 2.4 megaraid2 driver and it looks
> mostly sane, the 2.6 version OTOH copletly backs out the changes that
> went into the driver from outside LSI.  Please try to port the changes
> you made to the driver in 2.6.1.
> 
The changes in 2.6.1 are rather extensive, so it would be sometime before
kernel 2.6.1 version of megaraid is sync'ed against megaraid-2.10.1. Also,
we would like to backport the PCI hotplug changes to 2.4.x kernel megaraid
as well.

diff -Naur megaraid-linux-2.4.24/changelog.megaraid2
megaraid-2.10.1/changelog.megaraid2
--- megaraid-linux-2.4.24/changelog.megaraid2	2004-01-13
17:22:25.000000000 -0500
+++ megaraid-2.10.1/changelog.megaraid2	2004-01-13 17:22:57.000000000 -0500
@@ -1,3 +1,31 @@
+### Version 2.10.1
+Wed Dec  3 15:34:42 EST 2003 - Atul Mukker <atulm@lsil.com>
+1.	pci_dma_sync_sg(), 2nd argument is pointer to scatter-gather list.
All
+	previous drivers have a pointer which is incremented beyond the end
of
+	the scatter-gather list
+2.	Remove 'ipdev', pci device pointer, to allocate memory for internal
+	commands. pci_alloc_consistent() guaranteed to allocate memory below
+	4GB, which is a requirement for these commands -
+		Tom Coughlan <coughlan@redhat.com>
+3.	Added support for LSI SATA PCI-X controllers
+4.	Advanced Server 3.0 version of the driver is the reference driver
now.
+	For all other kernels, we create patches.
+5.	Removed superfluous white spaces.
+6.	Corrected some comments
+
+### Version 2.10.0
+Tue Nov  4 14:33:43 EST 2003 - Atul Mukker <atulm@lsil.com>
+1.	Added vendor ids and device ids for PCI-Express controllers,
+	PERC4E/Si, PERC4E/Di, PERC4E/DC, PERC4E/SC
+2.	Backport some minor changes from 2.6 kernel version of the driver.
+
+### Version 2.00.9a
+Fri Oct  3 18:04:29 EDT 2003 - Atul Mukker <atulm@lsil.com>
+1.	Minor changes which are brough in when sync'ing with kernel
2.9-test6.
+2.	Use sizeof(mbox_t) in synchronous routines instead of hard-coded
value
+	of 16 bytes.
+3.	De-couple adapter->host->pci_dev. Replace with adapter->pdev
+
 ### Version 2.00.9
 Thu Sep  4 17:49:42 EDT 2003 - Atul Mukker <atulm@lsil.com>
 i.	For extended passthru commands, 64-bit scatter-gather list and
64-bit
diff -Naur megaraid-linux-2.4.24/megaraid2.c megaraid-2.10.1/megaraid2.c
--- megaraid-linux-2.4.24/megaraid2.c	2004-01-13 15:57:56.000000000 -0500
+++ megaraid-2.10.1/megaraid2.c	2004-01-13 17:17:52.000000000 -0500
@@ -14,7 +14,7 @@
  *	  - speed-ups (list handling fixes, issued_list, optimizations.)
  *	  - lots of cleanups.
  *
- * Version : v2.00.9 (Sep 04, 2003) - Atul Mukker <Atul.Mukker@lsil.com>
+ * Version : v2.10.1 (Dec 03, 2003) - Atul Mukker <Atul.Mukker@lsil.com>
  *
  * Description: Linux device driver for LSI Logic MegaRAID controller
  *
@@ -102,7 +102,7 @@
 static struct mcontroller mcontroller[MAX_CONTROLLERS];
 
 /* The current driver version */
-static u32 driver_ver = 0x02000000;
+static u32 driver_ver = 0x02100000;
 
 /* major number used by the device for character interface */
 static int major;
@@ -142,6 +142,7 @@
  * products. All of them share the same vendor id, device id, and subsystem
  * vendor id but different subsystem ids. As of now, driver does not use
the
  * subsystem id.
+ * PERC4E device ids are for the PCI-Express controllers
  */
 static int
 megaraid_detect(Scsi_Host_Template *host_template)
@@ -150,13 +151,16 @@
 	u16	dev_sw_table[] = {	/* Table of all supported
 					   vendor/device ids */
 
-		PCI_VENDOR_ID_DELL,		PCI_DEVICE_ID_DISCOVERY, 
-		PCI_VENDOR_ID_DELL,		PCI_DEVICE_ID_PERC4_DI, 
-		PCI_VENDOR_ID_LSI_LOGIC,
PCI_DEVICE_ID_PERC4_QC_VERDE, 
-		PCI_VENDOR_ID_AMI,		PCI_DEVICE_ID_AMI_MEGARAID, 
-		PCI_VENDOR_ID_AMI,		PCI_DEVICE_ID_AMI_MEGARAID2,

-		PCI_VENDOR_ID_AMI,		PCI_DEVICE_ID_AMI_MEGARAID3,

-		PCI_VENDOR_ID_INTEL,		PCI_DEVICE_ID_AMI_MEGARAID3,

+		PCI_VENDOR_ID_LSI_LOGIC,	PCI_DEVICE_ID_LSI_SATA_PCIX,
+		PCI_VENDOR_ID_LSI_LOGIC,	PCI_DEVICE_ID_PERC4E_DC_SC,
+		PCI_VENDOR_ID_DELL,		PCI_DEVICE_ID_PERC4E_SI_DI,
+		PCI_VENDOR_ID_DELL,		PCI_DEVICE_ID_DISCOVERY,
+		PCI_VENDOR_ID_DELL,		PCI_DEVICE_ID_PERC4_DI,
+		PCI_VENDOR_ID_LSI_LOGIC,
PCI_DEVICE_ID_PERC4_QC_VERDE,
+		PCI_VENDOR_ID_AMI,		PCI_DEVICE_ID_AMI_MEGARAID,
+		PCI_VENDOR_ID_AMI,		PCI_DEVICE_ID_AMI_MEGARAID2,
+		PCI_VENDOR_ID_AMI,		PCI_DEVICE_ID_AMI_MEGARAID3,
+		PCI_VENDOR_ID_INTEL,		PCI_DEVICE_ID_AMI_MEGARAID3,
 		PCI_VENDOR_ID_LSI_LOGIC,	PCI_DEVICE_ID_AMI_MEGARAID3
};
 
 
@@ -246,7 +250,6 @@
 	u8	did_ioremap_f = 0;
 	u8	did_req_region_f = 0;
 	u8	did_scsi_reg_f = 0;
-	u8	got_ipdev_f = 0;
 	u8	alloc_int_buf_f = 0;
 	u8	alloc_scb_f = 0;
 	u8	got_irq_f = 0;
@@ -261,7 +264,6 @@
 		did_ioremap_f = 0;
 		did_req_region_f = 0;
 		did_scsi_reg_f = 0;
-		got_ipdev_f = 0;
 		alloc_int_buf_f = 0;
 		alloc_scb_f = 0;
 		got_irq_f = 0;
@@ -277,9 +279,15 @@
 		 * valid and 64 bit is implicit
 		 */
 		if( (pci_vendor == PCI_VENDOR_ID_DELL &&
-			pci_device == PCI_DEVICE_ID_PERC4_DI) ||
+				pci_device == PCI_DEVICE_ID_PERC4_DI) ||
 			(pci_vendor == PCI_VENDOR_ID_LSI_LOGIC &&
-			pci_device == PCI_DEVICE_ID_PERC4_QC_VERDE) ) {
+				pci_device == PCI_DEVICE_ID_PERC4_QC_VERDE)
||
+			(pci_vendor == PCI_VENDOR_ID_LSI_LOGIC &&
+				pci_device == PCI_DEVICE_ID_PERC4E_DC_SC) ||
+			(pci_vendor == PCI_VENDOR_ID_DELL &&
+				pci_device == PCI_DEVICE_ID_PERC4E_SI_DI) ||
+			(pci_vendor == PCI_VENDOR_ID_LSI_LOGIC &&
+				pci_device == PCI_DEVICE_ID_LSI_SATA_PCIX))
{
 
 			flag |= BOARD_64BIT;
 		}
@@ -367,21 +375,6 @@
 		adapter = (adapter_t *)host->hostdata;
 		memset(adapter, 0, sizeof(adapter_t));
 
-		/*
-		 * Allocate a pci device structure for allocations done
-		 * internally - all of which would be in memory <4GB
-		 */
-		adapter->ipdev = kmalloc(sizeof(struct pci_dev),
GFP_KERNEL);
-
-		if( adapter->ipdev == NULL ) goto fail_attach;
-
-		got_ipdev_f = 1;
-
-		memcpy(adapter->ipdev, pdev, sizeof(struct pci_dev));
-
-		if( pci_set_dma_mask(adapter->ipdev, 0xffffffff) != 0 )
-			goto fail_attach;
-
 		printk(KERN_NOTICE
 			"scsi%d:Found MegaRAID controller at 0x%lx,
IRQ:%d\n",
 			host->host_no, mega_baseport, irq);
@@ -395,10 +388,24 @@
 		adapter->flag = flag;
 		spin_lock_init(&adapter->lock);
 
-		// replace adapter->lock with io_request_lock for kernels
w/o
-		// per host lock and delete the line which tries to
initialize
-		// the lock in host structure.
+#ifdef SCSI_HAS_HOST_LOCK
+#  if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,9)
+		/* This is the Red Hat AS2.1 kernel */
+		adapter->host_lock = &adapter->lock;
+		host->lock = adapter->host_lock;
+#  elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
+		/* This is the later Red Hat 2.4 kernels */
+		adapter->host_lock = &adapter->lock;
+		host->host_lock = adapter->host_lock;
+#  else
+		/* This is the 2.6 and later kernel series */
+		adapter->host_lock = &adapter->lock;
+		scsi_set_host_lock(&adapter->lock);
+#  endif
+#else
+		/* And this is the remainder of the 2.4 kernel series */
 		adapter->host_lock = &io_request_lock;
+#endif
 
 		host->cmd_per_lun = max_cmd_per_lun;
 		host->max_sectors = max_sectors_per_io;
@@ -613,14 +620,14 @@
 
 		/* Set the Mode of addressing to 64 bit if we can */
 		if((adapter->flag & BOARD_64BIT)&&(sizeof(dma_addr_t) == 8))
{
-			pci_set_dma_mask(pdev, 0xffffffffffffffff);
+			pci_set_dma_mask(pdev, 0xffffffffffffffffULL);
 			adapter->has_64bit_addr = 1;
 		}
 		else  {
 			pci_set_dma_mask(pdev, 0xffffffff);
 			adapter->has_64bit_addr = 0;
 		}
-		
+
 		init_MUTEX(&adapter->int_mtx);
 		init_waitqueue_head(&adapter->int_waitq);
 
@@ -669,8 +676,6 @@
 					adapter->buf_dma_handle);
 		}
 
-		if( got_ipdev_f ) kfree(adapter->ipdev);
-
 		if( did_scsi_reg_f ) scsi_unregister(host);
 
 		if( did_ioremap_f ) {
@@ -701,7 +706,7 @@
 			sizeof(mbox64_t), &adapter->una_mbox64_dma);
 
 	if( !adapter->una_mbox64 ) return -1;
-		
+
 	adapter->mbox = &adapter->una_mbox64->mbox;
 
 	adapter->mbox = (mbox_t *)((((unsigned long) adapter->mbox) + 15) &
@@ -754,7 +759,7 @@
 {
 	dma_addr_t	prod_info_dma_handle;
 	mega_inquiry3	*inquiry3;
-	u8	raw_mbox[16];
+	u8	raw_mbox[sizeof(mbox_t)];
 	mbox_t	*mbox;
 	int	retval;
 
@@ -763,7 +768,7 @@
 	mbox = (mbox_t *)raw_mbox;
 
 	memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
-	memset(mbox, 0, 16);
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 
 	/*
 	 * Try to issue Inquiry3 command
@@ -1695,21 +1700,22 @@
 	u8	status;
 	int	i;
 
-	raw_mbox[0x1] = 0xFE;	/* Set cmdid */
-	raw_mbox[0xF] = 1;	/* Set busy */
-
 	/* Wait until mailbox is free */
 	if(mega_busywait_mbox (adapter))
 		goto bug_blocked_mailbox;
 
 	/* Copy mailbox data into host structure */
-	memcpy((char *) mbox, raw_mbox, 16);
+	memcpy((char *)mbox, raw_mbox, 16);
+	mbox->cmdid = 0xFE;
+	mbox->busy = 1;
 
 	switch (raw_mbox[0]) {
+	case MEGA_MBOXCMD_EXTPTHRU:
+		if( !adapter->has_64bit_addr ) break;
+		// else fall through
 	case MEGA_MBOXCMD_LREAD64:
 	case MEGA_MBOXCMD_LWRITE64:
 	case MEGA_MBOXCMD_PASSTHRU64:
-	case MEGA_MBOXCMD_EXTPTHRU:
 		mbox64->xfer_segment_lo = mbox->xferaddr;
 		mbox64->xfer_segment_hi = 0;
 		mbox->xferaddr = 0xFFFFFFFF;
@@ -1989,6 +1995,7 @@
 	Scsi_Cmnd	*cmd = NULL;
 	mega_passthru	*pthru = NULL;
 	mbox_t	*mbox = NULL;
+	int	islogical;
 	u8	c;
 	scb_t	*scb;
 	int	cmdid;
@@ -2072,9 +2079,10 @@
 #if MEGA_HAVE_STATS
 			{
 
-			int	islogical =
adapter->logdrv_chan[cmd->channel];
 			int	logdrv = mbox->logdrv;
 
+			islogical = adapter->logdrv_chan[cmd->channel];
+
 			/*
 			 * Maintain an error counter for the logical drive.
 			 * Some application like SNMP agent need such
@@ -2110,23 +2118,21 @@
 		 * hard disk and not logical, request should return failure!
-
 		 * PJ
 		 */
-		if(cmd->cmnd[0] == INQUIRY) {
-			int islogical = adapter->logdrv_chan[cmd->channel];
+		islogical = adapter->logdrv_chan[cmd->channel];
+		if (cmd->cmnd[0] == INQUIRY && !islogical) {
 
-			if(!islogical) {
-				if( cmd->use_sg ) {
-					sgl = (struct scatterlist *)
-						cmd->request_buffer;
-					c = *(u8 *)sgl[0].address;
-				}
-				else {
-					c = *(u8 *)cmd->request_buffer;
-				}
+			if( cmd->use_sg ) {
+				sgl = (struct scatterlist *)
+					cmd->request_buffer;
+				c = *(u8 *)sgl[0].address;
+			}
+			else {
+				c = *(u8 *)cmd->request_buffer;
+			}
 
-				if(IS_RAID_CH(adapter, cmd->channel) &&
-						((c & 0x1F ) == TYPE_DISK))
{
-					status = 0xF0;
-				}
+			if(IS_RAID_CH(adapter, cmd->channel) &&
+					((c & 0x1F ) == TYPE_DISK)) {
+				status = 0xF0;
 			}
 		}
 
@@ -2243,12 +2249,11 @@
 		break;
 
 	case MEGA_BULK_DATA:
-		pci_unmap_page(adapter->host->pci_dev, scb->dma_h_bulkdata,
+		pci_unmap_page(adapter->dev, scb->dma_h_bulkdata,
 			scb->cmd->request_bufflen, scb->dma_direction);
 
 		if( scb->dma_direction == PCI_DMA_FROMDEVICE ) {
-			pci_dma_sync_single(adapter->host->pci_dev,
-					scb->dma_h_bulkdata,
+			pci_dma_sync_single(adapter->dev,
scb->dma_h_bulkdata,
 					scb->cmd->request_bufflen,
 					PCI_DMA_FROMDEVICE);
 		}
@@ -2256,12 +2261,11 @@
 		break;
 
 	case MEGA_SGLIST:
-		pci_unmap_sg(adapter->host->pci_dev,
scb->cmd->request_buffer,
+		pci_unmap_sg(adapter->dev, scb->cmd->request_buffer,
 			scb->cmd->use_sg, scb->dma_direction);
 
 		if( scb->dma_direction == PCI_DMA_FROMDEVICE ) {
-			pci_dma_sync_sg(adapter->host->pci_dev,
-					scb->cmd->request_buffer,
+			pci_dma_sync_sg(adapter->dev,
scb->cmd->request_buffer,
 					scb->cmd->use_sg,
PCI_DMA_FROMDEVICE);
 		}
 
@@ -2332,8 +2336,7 @@
 
 		offset = ((unsigned long)cmd->request_buffer & ~PAGE_MASK);
 
-		scb->dma_h_bulkdata = pci_map_page(adapter->host->pci_dev,
-						  page, offset,
+		scb->dma_h_bulkdata = pci_map_page(adapter->dev, page,
offset,
 						  cmd->request_bufflen,
 						  scb->dma_direction);
 		scb->dma_type = MEGA_BULK_DATA;
@@ -2355,7 +2358,7 @@
 		}
 
 		if( scb->dma_direction == PCI_DMA_TODEVICE ) {
-			pci_dma_sync_single(adapter->host->pci_dev,
+			pci_dma_sync_single(adapter->dev,
 					scb->dma_h_bulkdata,
 					cmd->request_bufflen,
 					PCI_DMA_TODEVICE);
@@ -2371,8 +2374,7 @@
 	 *
 	 * The number of sg elements returned must not exceed our limit
 	 */
-	sgcnt = pci_map_sg(adapter->host->pci_dev, sgl, cmd->use_sg,
-			scb->dma_direction);
+	sgcnt = pci_map_sg(adapter->dev, sgl, cmd->use_sg,
scb->dma_direction);
 
 	scb->dma_type = MEGA_SGLIST;
 
@@ -2400,8 +2402,8 @@
 	*len = (u32)cmd->request_bufflen;
 
 	if( scb->dma_direction == PCI_DMA_TODEVICE ) {
-		pci_dma_sync_sg(adapter->host->pci_dev, cmd->request_buffer,
cmd->use_sg,
-				PCI_DMA_TODEVICE);
+		pci_dma_sync_sg(adapter->dev, cmd->request_buffer,
+				cmd->use_sg, PCI_DMA_TODEVICE);
 	}
 
 	/* Return count of SG requests */
@@ -2458,7 +2460,7 @@
 {
 	adapter_t	*adapter;
 	mbox_t	*mbox;
-	u_char	raw_mbox[16];
+	u_char	raw_mbox[sizeof(mbox_t)];
 #ifdef CONFIG_PROC_FS
 	char	buf[12] = { 0 };
 #endif
@@ -2469,7 +2471,7 @@
 	printk(KERN_NOTICE "megaraid: being unloaded...");
 
 	/* Flush adapter cache */
-	memset(mbox, 0, 16);
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 	raw_mbox[0] = FLUSH_ADAPTER;
 
 	irq_disable(adapter);
@@ -2479,7 +2481,7 @@
 	issue_scb_block(adapter, raw_mbox);
 
 	/* Flush disks cache */
-	memset(mbox, 0, 16);
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 	raw_mbox[0] = FLUSH_SYSTEM;
 
 	/* Issue a blocking (interrupts disabled) command to the card */
@@ -2540,8 +2542,6 @@
 	pci_free_consistent(adapter->dev, sizeof(mbox64_t),
 			(void *)adapter->una_mbox64,
adapter->una_mbox64_dma);
 
-	kfree(adapter->ipdev);
-
 	hba_count--;
 
 	if( hba_count == 0 ) {
@@ -2723,7 +2723,7 @@
 		 */
 		if( !(iter % 1000) ) {
 			printk(
-			"megarid: Waiting for %d commands to flush:
iter:%ld\n",
+			"megaraid: Waiting for %d commands to flush:
iter:%ld\n",
 				atomic_read(&adapter->pend_cmds), iter);
 		}
 
@@ -2742,7 +2742,7 @@
 
 	if( rval == SUCCESS ) {
 		printk(KERN_INFO
-			"megaraid: abort sequence successfully
complete.\n");
+			"megaraid: abort sequence successfully
completed.\n");
 	}
 
 	return rval;
@@ -2803,7 +2803,7 @@
 		 */
 		if( !(iter % 1000) ) {
 			printk(
-			"megarid: Waiting for %d commands to flush:
iter:%ld\n",
+			"megaraid: Waiting for %d commands to flush:
iter:%ld\n",
 				atomic_read(&adapter->pend_cmds), iter);
 		}
 
@@ -2822,7 +2822,7 @@
 
 	if( rval == SUCCESS ) {
 		printk(KERN_INFO
-			"megaraid: reset sequence successfully
complete.\n");
+			"megaraid: reset sequence successfully
completed.\n");
 	}
 
 	return rval;
@@ -2953,7 +2953,7 @@
 	len += sprintf(page+len, "Base = %08lx, Irq = %d, ", adapter->base,
 			adapter->host->irq);
 
-	len += sprintf(page+len, "Logical Drives = %d, Channels = %d\n",
+	len += sprintf(page+len, "Initial Logical Drives = %d, Channels =
%d\n",
 			adapter->numldrv, adapter->product_info.nchannels);
 
 	len += sprintf(page+len, "Version =%s:%s, DRAM = %dMb\n",
@@ -3109,7 +3109,7 @@
 	struct pci_dev	*pdev;
 	int	len = 0;
 
-	pdev = adapter->ipdev;
+	pdev = adapter->dev;
 
 	if( (inquiry = mega_allocate_inquiry(&dma_handle, pdev)) == NULL ) {
 		*eof = 1;
@@ -3171,7 +3171,7 @@
 	char	str[256];
 	int	len = 0;
 
-	pdev = adapter->ipdev;
+	pdev = adapter->dev;
 
 	if( (inquiry = mega_allocate_inquiry(&dma_handle, pdev)) == NULL ) {
 		*eof = 1;
@@ -3209,22 +3209,22 @@
 
 	if(battery_status & MEGA_BATT_MODULE_MISSING)
 		strcat(str, " Module Missing");
-	
+
 	if(battery_status & MEGA_BATT_LOW_VOLTAGE)
 		strcat(str, " Low Voltage");
-	
+
 	if(battery_status & MEGA_BATT_TEMP_HIGH)
 		strcat(str, " Temperature High");
-	
+
 	if(battery_status & MEGA_BATT_PACK_MISSING)
 		strcat(str, " Pack Missing");
-	
+
 	if(battery_status & MEGA_BATT_CHARGE_INPROG)
 		strcat(str, " Charge In-progress");
-	
+
 	if(battery_status & MEGA_BATT_CHARGE_FAIL)
 		strcat(str, " Charge Fail");
-	
+
 	if(battery_status & MEGA_BATT_CYCLES_EXCEEDED)
 		strcat(str, " Cycles Exceeded");
 
@@ -3354,7 +3354,7 @@
 	char	str[80];
 	int	i;
 
-	pdev = adapter->ipdev;
+	pdev = adapter->dev;
 
 	if( (inquiry = mega_allocate_inquiry(&dma_handle, pdev)) == NULL ) {
 		return len;
@@ -3403,32 +3403,27 @@
 		switch( state & 0x0F ) {
 
 		case PDRV_ONLINE:
-			sprintf(str,
-			"Channel:%2d Id:%2d State: Online",
+			sprintf(str, "Channel:%2d Id:%2d State: Online",
 				channel, tgt);
 			break;
 
 		case PDRV_FAILED:
-			sprintf(str,
-			"Channel:%2d Id:%2d State: Failed",
+			sprintf(str, "Channel:%2d Id:%2d State: Failed",
 				channel, tgt);
 			break;
 
 		case PDRV_RBLD:
-			sprintf(str,
-			"Channel:%2d Id:%2d State: Rebuild",
+			sprintf(str, "Channel:%2d Id:%2d State: Rebuild",
 				channel, tgt);
 			break;
 
 		case PDRV_HOTSPARE:
-			sprintf(str,
-			"Channel:%2d Id:%2d State: Hot spare",
+			sprintf(str, "Channel:%2d Id:%2d State: Hot spare",
 				channel, tgt);
 			break;
 
 		default:
-			sprintf(str,
-			"Channel:%2d Id:%2d State: Un-configured",
+			sprintf(str, "Channel:%2d Id:%2d State:
Un-configured",
 				channel, tgt);
 			break;
 
@@ -3543,7 +3538,7 @@
  * @eof - set if no more data needs to be returned
  * @data - pointer to our soft state
  *
- * Display real time information about the logical drives 0 through 9.
+ * Display real time information about the logical drives 10 through 19.
  */
 static int
 proc_rdrv_20(char *page, char **start, off_t offset, int count, int *eof,
@@ -3566,7 +3561,7 @@
  * @eof - set if no more data needs to be returned
  * @data - pointer to our soft state
  *
- * Display real time information about the logical drives 0 through 9.
+ * Display real time information about the logical drives 20 through 29.
  */
 static int
 proc_rdrv_30(char *page, char **start, off_t offset, int count, int *eof,
@@ -3589,7 +3584,7 @@
  * @eof - set if no more data needs to be returned
  * @data - pointer to our soft state
  *
- * Display real time information about the logical drives 0 through 9.
+ * Display real time information about the logical drives 30 through 39.
  */
 static int
 proc_rdrv_40(char *page, char **start, off_t offset, int count, int *eof,
@@ -3614,7 +3609,7 @@
  * /proc/scsi/scsi interface
  */
 static int
-proc_rdrv(adapter_t *adapter, char *page, int start, int end )
+proc_rdrv(adapter_t *adapter, char *page, int start, int end)
 {
 	dma_addr_t	dma_handle;
 	logdrv_param	*lparam;
@@ -3630,7 +3625,7 @@
 	int	i;
 	u8	span8_flag = 1;
 
-	pdev = adapter->ipdev;
+	pdev = adapter->dev;
 
 	if( (inquiry = mega_allocate_inquiry(&dma_handle, pdev)) == NULL ) {
 		return len;
@@ -3650,7 +3645,7 @@
 	memset(&mc, 0, sizeof(megacmd_t));
 
 	if( adapter->flag & BOARD_40LD ) {
-		
+
 		array_sz = sizeof(disk_array_40ld);
 
 		rdrv_state = ((mega_inquiry3 *)inquiry)->ldrv_state;
@@ -3747,7 +3742,7 @@
 			else {
 				lparam = (logdrv_param*)
&((diskarray_span4_t*)
 						(disk_array))->log_drv[i];
-			}	
+			}
 		}
 
 		/*
@@ -3792,7 +3787,7 @@
 			len += sprintf(page+len,
 					", initialization in progress");
 		}
-		
+
 		len += sprintf(page+len, "\n");
 
 		len += sprintf(page+len, "Span depth:%3d, ",
@@ -3966,7 +3961,7 @@
 
 	if (blksize_size[ma])
 		block = blksize_size[ma][mi];
-		
+
 	if (!(bh = bread(MKDEV(ma,mi), 0, block)))
 		return -1;
 
@@ -4026,7 +4021,7 @@
 {
 	adapter_t *adapter;
 	struct Scsi_Host *host;
-	u8 raw_mbox[16];
+	u8 raw_mbox[sizeof(mbox_t)];
 	mbox_t *mbox;
 	int i;
 
@@ -4042,7 +4037,7 @@
 		mbox = (mbox_t *)raw_mbox;
 
 		/* Flush adapter cache */
-		memset(mbox, 0, 16);
+		memset(raw_mbox, 0, sizeof(raw_mbox));
 		raw_mbox[0] = FLUSH_ADAPTER;
 
 		irq_disable(adapter);
@@ -4055,7 +4050,7 @@
 		issue_scb_block(adapter, raw_mbox);
 
 		/* Flush disks cache */
-		memset(mbox, 0, 16);
+		memset(raw_mbox, 0, sizeof(raw_mbox));
 		raw_mbox[0] = FLUSH_SYSTEM;
 
 		issue_scb_block(adapter, raw_mbox);
@@ -4374,7 +4369,7 @@
 		 * For all internal commands, the buffer must be allocated
in
 		 * <4GB address range
 		 */
-		pdev = adapter->ipdev;
+		pdev = adapter->dev;
 
 		/* Is it a passthru command or a DCMD */
 		if( uioc.uioc_rmbox[0] == MEGA_MBOXCMD_PASSTHRU ) {
@@ -4786,13 +4781,13 @@
 static int
 mega_is_bios_enabled(adapter_t *adapter)
 {
-	unsigned char	raw_mbox[16];
+	unsigned char	raw_mbox[sizeof(mbox_t)];
 	mbox_t	*mbox;
 	int	ret;
 
 	mbox = (mbox_t *)raw_mbox;
 
-	memset(mbox, 0, 16);
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 
 	memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
 
@@ -4819,13 +4814,13 @@
 static void
 mega_enum_raid_scsi(adapter_t *adapter)
 {
-	unsigned char raw_mbox[16];
+	unsigned char raw_mbox[sizeof(mbox_t)];
 	mbox_t *mbox;
 	int i;
 
 	mbox = (mbox_t *)raw_mbox;
 
-	memset(mbox, 0, 16);
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 
 	/*
 	 * issue command to find out what channels are raid/scsi
@@ -4848,7 +4843,7 @@
 
 	}
 
-	for( i = 0; i < adapter->product_info.nchannels; i++ ) { 
+	for( i = 0; i < adapter->product_info.nchannels; i++ ) {
 		if( (adapter->mega_ch_class >> i) & 0x01 ) {
 			printk(KERN_INFO "megaraid: channel[%d] is raid.\n",
 					i);
@@ -4874,7 +4869,7 @@
 mega_get_boot_drv(adapter_t *adapter)
 {
 	struct private_bios_data	*prv_bios_data;
-	unsigned char	raw_mbox[16];
+	unsigned char	raw_mbox[sizeof(mbox_t)];
 	mbox_t	*mbox;
 	u16	cksum = 0;
 	u8	*cksum_p;
@@ -4883,7 +4878,7 @@
 
 	mbox = (mbox_t *)raw_mbox;
 
-	memset(mbox, 0, sizeof(raw_mbox));
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 
 	raw_mbox[0] = BIOS_PVT_DATA;
 	raw_mbox[2] = GET_BIOS_PVT_DATA;
@@ -4940,13 +4935,13 @@
 static int
 mega_support_random_del(adapter_t *adapter)
 {
-	unsigned char raw_mbox[16];
+	unsigned char raw_mbox[sizeof(mbox_t)];
 	mbox_t *mbox;
 	int rval;
 
 	mbox = (mbox_t *)raw_mbox;
 
-	memset(mbox, 0, 16);
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 
 	/*
 	 * issue command
@@ -4969,13 +4964,13 @@
 static int
 mega_support_ext_cdb(adapter_t *adapter)
 {
-	unsigned char raw_mbox[16];
+	unsigned char raw_mbox[sizeof(mbox_t)];
 	mbox_t *mbox;
 	int rval;
 
 	mbox = (mbox_t *)raw_mbox;
 
-	memset(mbox, 0, 16);
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 	/*
 	 * issue command to find out if controller supports extended CDBs.
 	 */
@@ -5053,7 +5048,9 @@
 mega_do_del_logdrv(adapter_t *adapter, int logdrv)
 {
 	int	rval;
-	u8	raw_mbox[16];
+	u8	raw_mbox[sizeof(mbox_t)];
+
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 
 	raw_mbox[0] = FC_DEL_LOGDRV;
 	raw_mbox[2] = OP_DEL_LOGDRV;
@@ -5088,12 +5085,12 @@
 static void
 mega_get_max_sgl(adapter_t *adapter)
 {
-	unsigned char	raw_mbox[16];
+	unsigned char	raw_mbox[sizeof(mbox_t)];
 	mbox_t	*mbox;
 
 	mbox = (mbox_t *)raw_mbox;
 
-	memset(mbox, 0, sizeof(raw_mbox));
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 
 	memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
 
@@ -5111,7 +5108,7 @@
 	}
 	else {
 		adapter->sglen = *((char *)adapter->mega_buffer);
-		
+
 		/*
 		 * Make sure this is not more than the resources we are
 		 * planning to allocate
@@ -5133,12 +5130,12 @@
 static int
 mega_support_cluster(adapter_t *adapter)
 {
-	unsigned char	raw_mbox[16];
+	unsigned char	raw_mbox[sizeof(mbox_t)];
 	mbox_t	*mbox;
 
 	mbox = (mbox_t *)raw_mbox;
 
-	memset(mbox, 0, sizeof(raw_mbox));
+	memset(raw_mbox, 0, sizeof(raw_mbox));
 
 	memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE);
 
@@ -5183,7 +5180,7 @@
 	int		ldrv_num;
 
 	tgt = cmd->target;
-	
+
 	if ( tgt > adapter->this_id )
 		tgt--;	/* we do not get inquires for initiator id */
 
@@ -5485,7 +5482,7 @@
 	 * For all internal commands, the buffer must be allocated in <4GB
 	 * address range
 	 */
-	pdev = adapter->ipdev;
+	pdev = adapter->dev;
 
 	pthru = pci_alloc_consistent(pdev, sizeof(mega_passthru),
 			&pthru_dma_handle);
diff -Naur megaraid-linux-2.4.24/megaraid2.h megaraid-2.10.1/megaraid2.h
--- megaraid-linux-2.4.24/megaraid2.h	2004-01-13 15:57:56.000000000 -0500
+++ megaraid-2.10.1/megaraid2.h	2004-01-13 17:26:38.000000000 -0500
@@ -6,7 +6,7 @@
 
 
 #define MEGARAID_VERSION	\
-	"v2.00.9 (Release Date: Thu Sep  4 17:49:42 EDT 2003)\n"
+	"v2.10.1 (Release Date: Wed Dec  3 15:34:42 EST 2003)\n"
 
 /*
  * Driver features - change the values to enable or disable features in the
@@ -77,6 +77,9 @@
 #define PCI_DEVICE_ID_DISCOVERY		0x000E
 #define PCI_DEVICE_ID_PERC4_DI		0x000F
 #define PCI_DEVICE_ID_PERC4_QC_VERDE	0x0407
+#define PCI_DEVICE_ID_PERC4E_SI_DI	0x0013
+#define PCI_DEVICE_ID_PERC4E_DC_SC	0x0408
+#define PCI_DEVICE_ID_LSI_SATA_PCIX	0x0409
 
 /* Sub-System Vendor IDs */
 #define	AMI_SUBSYS_VID			0x101E
@@ -520,10 +523,10 @@
 
 typedef struct  {
 	unsigned char	channel;
-	unsigned char	target; 
+	unsigned char	target;
 }__attribute__ ((packed)) device_t;
 
-typedef struct { 
+typedef struct {
 	unsigned long	start_blk;
 	unsigned long	total_blks;
 	device_t	device[ MAX_STRIPES ];
@@ -537,38 +540,38 @@
 	unsigned long	size;
 }__attribute__ ((packed)) phydrv_t;
 
-typedef struct { 
+typedef struct {
 	unsigned char	span_depth;
 	unsigned char	raid;
-	unsigned char	read_ahead;	/* 0=No rdahead,1=RDAHEAD,2=adaptive
*/ 
+	unsigned char	read_ahead;	/* 0=No rdahead,1=RDAHEAD,2=adaptive
*/
 	unsigned char	stripe_sz;
 	unsigned char	status;
-	unsigned char	write_policy;	/* 0=wrthru,1=wrbak */ 
-	unsigned char	direct_io;   	/* 1=directio,0=cached */ 
+	unsigned char	write_policy;	/* 0=wrthru,1=wrbak */
+	unsigned char	direct_io;   	/* 1=directio,0=cached */
 	unsigned char	no_stripes;
 	span_t		span[ SPAN4_DEPTH ];
 }__attribute__ ((packed)) ld_span4_t;
 
-typedef struct { 
+typedef struct {
 	unsigned char	span_depth;
 	unsigned char	raid;
-	unsigned char	read_ahead;	/* 0=No rdahead,1=RDAHEAD,2=adaptive
*/ 
+	unsigned char	read_ahead;	/* 0=No rdahead,1=RDAHEAD,2=adaptive
*/
 	unsigned char	stripe_sz;
 	unsigned char	status;
-	unsigned char	write_policy;	/* 0=wrthru,1=wrbak */ 
-	unsigned char	direct_io;   	/* 1=directio,0=cached */ 
+	unsigned char	write_policy;	/* 0=wrthru,1=wrbak */
+	unsigned char	direct_io;   	/* 1=directio,0=cached */
 	unsigned char	no_stripes;
 	span_t		span[ SPAN8_DEPTH ];
 }__attribute__ ((packed)) ld_span8_t;
 
-typedef struct { 
+typedef struct {
 	unsigned char	no_log_drives;
 	unsigned char	pad[3];
 	ld_span4_t	log_drv[ MAX_LOGICAL_DRIVES_8LD ];
 	phydrv_t	phys_drv[ MAX_PHYDRVS ];
 }__attribute__ ((packed)) diskarray_span4_t;
 
-typedef struct { 
+typedef struct {
 	unsigned char	no_log_drives;
 	unsigned char	pad[3];
 	ld_span8_t	log_drv[ MAX_LOGICAL_DRIVES_8LD ];
@@ -894,9 +897,7 @@
 	volatile mbox64_t	*mbox64;/* ptr to 64-bit mailbox */
 	volatile mbox_t		*mbox;	/* ptr to standard mailbox */
 	dma_addr_t		mbox_dma;
-
-	struct pci_dev	*dev;
-	struct pci_dev	*ipdev;		/* for internal allocation */
+	struct pci_dev		*dev;
 
 	struct list_head	free_list;
 	struct list_head	pending_list;


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

* Re: ANNOUNCE: megaraid driver version 2.10.1
  2004-01-13 21:39 ANNOUNCE: megaraid driver version 2.10.1 Mukker, Atul
@ 2004-01-14  9:22 ` 'hch@infradead.org'
  0 siblings, 0 replies; 7+ messages in thread
From: 'hch@infradead.org' @ 2004-01-14  9:22 UTC (permalink / raw)
  To: Mukker, Atul
  Cc: 'hch@infradead.org', 'James Bottomley',
	'linux-kernel@vger.kernel.org',
	linux-scsi, 'marcelo.tosatti@cyclades.com',
	Matt_Domsch

On Tue, Jan 13, 2004 at 04:39:12PM -0500, Mukker, Atul wrote:
> The changes in 2.6.1 are rather extensive, so it would be sometime before
> kernel 2.6.1 version of megaraid is sync'ed against megaraid-2.10.1. Also,
> we would like to backport the PCI hotplug changes to 2.4.x kernel megaraid
> as well.

The problem with backporting is that the 2.4 scsi layer is not hot-plug aware,
so while you can make the driver detect a newly inserted or removed HBA there's
no way to tell the SCSI midlayer.

> +#ifdef SCSI_HAS_HOST_LOCK
> +#  if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,9)
> +		/* This is the Red Hat AS2.1 kernel */
> +		adapter->host_lock = &adapter->lock;
> +		host->lock = adapter->host_lock;
> +#  elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
> +		/* This is the later Red Hat 2.4 kernels */
> +		adapter->host_lock = &adapter->lock;
> +		host->host_lock = adapter->host_lock;
> +#  else
> +		/* This is the 2.6 and later kernel series */
> +		adapter->host_lock = &adapter->lock;
> +		scsi_set_host_lock(&adapter->lock);
> +#  endif
> +#else
> +		/* And this is the remainder of the 2.4 kernel series */
>  		adapter->host_lock = &io_request_lock;
> +#endif

This is horribly ugly, but not your faul.  Any chance you could hide
it into some macro ala megaraid_set_host_lock(adapter, host).

Also note that in 2.6 scsi_set_host_lock should and could easily be avoided,
just let your adapter->host_lock point to host->host_lock.

>  		if((adapter->flag & BOARD_64BIT)&&(sizeof(dma_addr_t) == 8))
> {
> -			pci_set_dma_mask(pdev, 0xffffffffffffffff);
> +			pci_set_dma_mask(pdev, 0xffffffffffffffffULL);

This needs error return checking.  Again this no regression from the previous
version, could you please fix it in the next update?


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

* Re: ANNOUNCE: megaraid driver version 2.10.1
  2004-01-30 15:03 Mukker, Atul
@ 2004-01-30 15:40 ` Jeff Garzik
  0 siblings, 0 replies; 7+ messages in thread
From: Jeff Garzik @ 2004-01-30 15:40 UTC (permalink / raw)
  To: Mukker, Atul
  Cc: 'hch@infradead.org', 'James Bottomley',
	'marcelo.tosatti@cyclades.com',
	Matt_Domsch, 'linux-kernel@vger.kernel.org',
	linux-scsi

On Fri, Jan 30, 2004 at 10:03:00AM -0500, Mukker, Atul wrote:
> Hello Christoph,
> 
> I am in process of testing the next version of the megaraid driver. I faced
> an issue while doing the insmod-rmmod sequence. Your patch for PCI hotplug
> does "pci_disable_device" when the driver is unloaded.
> 
> The insmod-rmmod-insmod fails the first time unless you do an explicit
> pci_set_master at driver load time, since pci_enable_device does not seem to
> enable bus mastering, which is disabled by pci_disable_device.

If your driver does DMA, but does not call pci_set_master(), that is a bug.

	Jeff




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

* RE: ANNOUNCE: megaraid driver version 2.10.1
@ 2004-01-30 15:03 Mukker, Atul
  2004-01-30 15:40 ` Jeff Garzik
  0 siblings, 1 reply; 7+ messages in thread
From: Mukker, Atul @ 2004-01-30 15:03 UTC (permalink / raw)
  To: 'hch@infradead.org'
  Cc: 'James Bottomley', 'marcelo.tosatti@cyclades.com',
	Matt_Domsch, 'linux-kernel@vger.kernel.org',
	linux-scsi

Hello Christoph,

I am in process of testing the next version of the megaraid driver. I faced
an issue while doing the insmod-rmmod sequence. Your patch for PCI hotplug
does "pci_disable_device" when the driver is unloaded.

The insmod-rmmod-insmod fails the first time unless you do an explicit
pci_set_master at driver load time, since pci_enable_device does not seem to
enable bus mastering, which is disabled by pci_disable_device.

Even with pci_set_master, insmod stalls the CPU after about 2-3 hours of
insmod-rmmod sequence. So I took out the pci_disable_device altogether to
find out it takes only longer, about 9 hours, but CPU stalls at the exact
location again with a NMI watchdog. It happens when the driver issues the
first command to the FW, which is never received by it and driver gets stuck
in a forever cpu_relax loop waiting for the command to complete

After an hour or two I get "Unable to proc_mkdir in
scsi.c/build_proc_dir_entries", but that's another story.

The kernel is a genre of 2.4.21

Any ideas....

Thanks
-Atul Mukker
LSI Logic

> -----Original Message-----
> From: 'hch@infradead.org' [mailto:hch@infradead.org]
> Sent: Wednesday, January 14, 2004 4:22 AM
> To: Mukker, Atul
> Cc: 'hch@infradead.org'; 'James Bottomley';
> 'linux-kernel@vger.kernel.org'; linux-scsi@vger.kernel.org;
> 'marcelo.tosatti@cyclades.com'; Matt_Domsch@dell.com
> Subject: Re: ANNOUNCE: megaraid driver version 2.10.1
> 
> 
> On Tue, Jan 13, 2004 at 04:39:12PM -0500, Mukker, Atul wrote:
> > The changes in 2.6.1 are rather extensive, so it would be 
> sometime before
> > kernel 2.6.1 version of megaraid is sync'ed against 
> megaraid-2.10.1. Also,
> > we would like to backport the PCI hotplug changes to 2.4.x 
> kernel megaraid
> > as well.
> 
> The problem with backporting is that the 2.4 scsi layer is 
> not hot-plug aware,
> so while you can make the driver detect a newly inserted or 
> removed HBA there's
> no way to tell the SCSI midlayer.
> 
> > +#ifdef SCSI_HAS_HOST_LOCK
> > +#  if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,9)
> > +		/* This is the Red Hat AS2.1 kernel */
> > +		adapter->host_lock = &adapter->lock;
> > +		host->lock = adapter->host_lock;
> > +#  elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
> > +		/* This is the later Red Hat 2.4 kernels */
> > +		adapter->host_lock = &adapter->lock;
> > +		host->host_lock = adapter->host_lock;
> > +#  else
> > +		/* This is the 2.6 and later kernel series */
> > +		adapter->host_lock = &adapter->lock;
> > +		scsi_set_host_lock(&adapter->lock);
> > +#  endif
> > +#else
> > +		/* And this is the remainder of the 2.4 kernel series */
> >  		adapter->host_lock = &io_request_lock;
> > +#endif
> 
> This is horribly ugly, but not your faul.  Any chance you could hide
> it into some macro ala megaraid_set_host_lock(adapter, host).
> 
> Also note that in 2.6 scsi_set_host_lock should and could 
> easily be avoided,
> just let your adapter->host_lock point to host->host_lock.
> 
> >  		if((adapter->flag & 
> BOARD_64BIT)&&(sizeof(dma_addr_t) == 8))
> > {
> > -			pci_set_dma_mask(pdev, 0xffffffffffffffff);
> > +			pci_set_dma_mask(pdev, 0xffffffffffffffffULL);
> 
> This needs error return checking.  Again this no regression 
> from the previous
> version, could you please fix it in the next update?
> 

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

* Re: ANNOUNCE: megaraid driver version 2.10.1
  2004-01-09 23:54 Mukker, Atul
@ 2004-01-11 14:06 ` 'hch@infradead.org'
  0 siblings, 0 replies; 7+ messages in thread
From: 'hch@infradead.org' @ 2004-01-11 14:06 UTC (permalink / raw)
  To: Mukker, Atul
  Cc: 'linux-kernel@vger.kernel.org',
	linux-scsi, 'torvalds@osdl.org',
	'marcelo.tosatti@cyclades.com',
	Matt_Domsch

On Fri, Jan 09, 2004 at 06:54:09PM -0500, Mukker, Atul wrote:
> All,
> 
> The megaraid driver version 2.10.1 is released and can be downloaded from
> ftp://ftp.lsil.com/pub/linux-megaraid/drivers/version-2.10.1/
> 
> Following other components are also available at this location:
> i.	Patches for Red Hat and SuSE stock kernels

Can't find patches for mainline anywhere.  Also it's usually a good
idea to send the _patches_ to lkml for review.

I've diffed the driver against the 2.4 megaraid2 driver and it looks
mostly sane, the 2.6 version OTOH copletly backs out the changes that
went into the driver from outside LSI.  Please try to port the changes
you made to the driver in 2.6.1.


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

* Re: ANNOUNCE: megaraid driver version 2.10.1
@ 2004-01-10 13:52 Xose Vazquez Perez
  0 siblings, 0 replies; 7+ messages in thread
From: Xose Vazquez Perez @ 2004-01-10 13:52 UTC (permalink / raw)
  To: Atul Mukker, linux-scsi

Atul Mukker wrote:	

> The megaraid driver version 2.10.1 is released and can be downloaded from
> ftp://ftp.lsil.com/pub/linux-megaraid/drivers/version-2.10.1/

I just saw that your base kernel for the driver is Red Hat Enterprise Linux
2.4.21-4.EL.

would you mind send 2.4 and 2.6 patches to this list ?

-thank you-


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

* ANNOUNCE: megaraid driver version 2.10.1
@ 2004-01-09 23:54 Mukker, Atul
  2004-01-11 14:06 ` 'hch@infradead.org'
  0 siblings, 1 reply; 7+ messages in thread
From: Mukker, Atul @ 2004-01-09 23:54 UTC (permalink / raw)
  To: 'linux-kernel@vger.kernel.org', linux-scsi
  Cc: 'hch@infradead.org', 'torvalds@osdl.org',
	'marcelo.tosatti@cyclades.com',
	Matt_Domsch

All,

The megaraid driver version 2.10.1 is released and can be downloaded from
ftp://ftp.lsil.com/pub/linux-megaraid/drivers/version-2.10.1/

Following other components are also available at this location:
i.	Patches for Red Hat and SuSE stock kernels
ii.	Driver update disks for Red Hat and SuSE
iii.	RPM packages to update drivers

Thanks
-Atul Mukker
LSI Logic

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

end of thread, other threads:[~2004-01-30 15:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-01-13 21:39 ANNOUNCE: megaraid driver version 2.10.1 Mukker, Atul
2004-01-14  9:22 ` 'hch@infradead.org'
  -- strict thread matches above, loose matches on Subject: below --
2004-01-30 15:03 Mukker, Atul
2004-01-30 15:40 ` Jeff Garzik
2004-01-10 13:52 Xose Vazquez Perez
2004-01-09 23:54 Mukker, Atul
2004-01-11 14:06 ` 'hch@infradead.org'

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.