* Re: 2.6.6-rc2-mm2 + Adaptec I2O
[not found] ` <20040426230455.53406d74.akpm@osdl.org>
@ 2004-04-27 6:21 ` Clemens Schwaighofer
2004-04-27 6:25 ` Andrew Morton
0 siblings, 1 reply; 4+ messages in thread
From: Clemens Schwaighofer @ 2004-04-27 6:21 UTC (permalink / raw)
To: Andrew Morton, linux-scsi; +Cc: dlang, linux-kernel, go
[-- Attachment #1: Type: text/plain, Size: 1086 bytes --]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Andrew Morton wrote:
| Clemens Schwaighofer <cs@tequila.co.jp> wrote:
|
|> on this URL [http://www.smartcgi.com/?action=docs,kernel26-adaptec] you
|> can find a patch that I could successfully path again 2.6.5 (vanilla)
|> and compile successfully.
|
|
| hm. Against 2.6.0. Go, would you have time to send that patch in to the
| scsi team at linux-scsi@vger.kernel.org?
yes,
remark:
~ Originally this patch has been released by Go Taniguchi at
http://pkgcvs.turbolinux.co.jp/~go/patch-2.6/dpt_i2o.patch
patch attached
- --
Clemens Schwaighofer - IT Engineer & System Administration
==========================================================
TEQUILA\Japan, 6-17-2 Ginza Chuo-ku, Tokyo 104-8167, JAPAN
Tel: +81-(0)3-3545-7703 Fax: +81-(0)3-3545-7343
http://www.tequila.co.jp
==========================================================
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFAjfvsjBz/yQjBxz8RAklUAJ4htR1TnQkc6+2ElfOPOMhY7rkhLwCgzdyo
JCuDLEXngGMCHHFjBFtYCMU=
=WBd+
-----END PGP SIGNATURE-----
[-- Attachment #2: dpt_i2o.patch --]
[-- Type: text/x-patch, Size: 13991 bytes --]
diff -urN linux-2.6.0/drivers/scsi.orig/Kconfig linux-2.6.0/drivers/scsi/Kconfig
--- linux-2.6.0/drivers/scsi.orig/Kconfig 2003-12-18 11:59:36.000000000 +0900
+++ linux-2.6.0/drivers/scsi/Kconfig 2003-12-20 13:53:46.000000000 +0900
@@ -344,7 +344,7 @@
# All the I2O code and drivers do not seem to be 64bit safe.
config SCSI_DPT_I2O
tristate "Adaptec I2O RAID support "
- depends on !64BIT && SCSI && BROKEN
+ depends on !64BIT && SCSI
help
This driver supports all of Adaptec's I2O based RAID controllers as
well as the DPT SmartRaid V cards. This is an Adaptec maintained
diff -urN linux-2.6.0/drivers/scsi.orig/dpt_i2o.c linux-2.6.0/drivers/scsi/dpt_i2o.c
--- linux-2.6.0/drivers/scsi.orig/dpt_i2o.c 2003-12-18 11:59:20.000000000 +0900
+++ linux-2.6.0/drivers/scsi/dpt_i2o.c 2003-12-20 14:51:40.000000000 +0900
@@ -20,17 +20,21 @@
* (at your option) any later version. *
* *
***************************************************************************/
+/***************************************************************************
+ * Sat Dec 20 2003 Go Taniguchi <go@turbolinux.co.jp>
+ - Support 2.6 kernel and DMA-mapping
+ - ioctl fix for raid tools
+ - use schedule_timeout in long long loop
+ **************************************************************************/
-//#define DEBUG 1
-//#define UARTDELAY 1
+/*#define DEBUG 1 */
+/*#define UARTDELAY 1 */
-// On the real kernel ADDR32 should always be zero for 2.4. GFP_HIGH allocates
-// high pages. Keep the macro around because of the broken unmerged ia64 tree
+/* On the real kernel ADDR32 should always be zero for 2.4. GFP_HIGH allocates
+ high pages. Keep the macro around because of the broken unmerged ia64 tree */
#define ADDR32 (0)
-#error Please convert me to Documentation/DMA-mapping.txt
-
#include <linux/version.h>
#include <linux/module.h>
@@ -53,6 +57,7 @@
#include <linux/kernel.h> /* for printk */
#include <linux/sched.h>
#include <linux/reboot.h>
+#include <linux/spinlock.h>
#include <linux/smp_lock.h>
#include <linux/timer.h>
@@ -86,7 +91,7 @@
#elif defined(__alpha__)
PROC_ALPHA ,
#else
- (-1),(-1)
+ (-1),(-1),
#endif
FT_HBADRVR, 0, OEM_DPT, OS_LINUX, CAP_OVERLAP, DEV_ALL,
ADF_ALL_SC5, 0, 0, DPT_VERSION, DPT_REVISION, DPT_SUBREVISION,
@@ -227,7 +232,7 @@
/* Active IOPs now in OPERATIONAL state */
PDEBUG("HBA's in OPERATIONAL state\n");
- printk(KERN_INFO"dpti: If you have a lot of devices this could take a few minutes.\n");
+ printk("dpti: If you have a lot of devices this could take a few minutes.\n");
for (pHba = hba_chain; pHba; pHba = pHba->next) {
printk(KERN_INFO"%s: Reading the hardware resource table.\n", pHba->name);
if (adpt_i2o_lct_get(pHba) < 0){
@@ -270,6 +275,7 @@
adpt_hba* pHba = (adpt_hba*) host->hostdata[0];
// adpt_i2o_quiesce_hba(pHba);
adpt_i2o_delete_hba(pHba);
+ scsi_unregister(host);
return 0;
}
@@ -340,6 +346,8 @@
if (rcode != 0) {
sprintf(pHba->detail, "Adaptec I2O RAID");
printk(KERN_INFO "%s: Inquiry Error (%d)\n",pHba->name,rcode);
+ if (rcode != -ETIME && rcode != -EINTR)
+ kfree(buf);
} else {
memset(pHba->detail, 0, sizeof(pHba->detail));
memcpy(&(pHba->detail), "Vendor: Adaptec ", 16);
@@ -348,8 +356,8 @@
memcpy(&(pHba->detail[40]), " FW: ", 4);
memcpy(&(pHba->detail[44]), (u8*) &buf[32], 4);
pHba->detail[48] = '\0'; /* precautionary */
+ kfree(buf);
}
- kfree(buf);
adpt_i2o_status_get(pHba);
return ;
}
@@ -479,7 +487,7 @@
heads = 255;
sectors = 63;
}
- cylinders = capacity / (heads * sectors);
+ cylinders = sector_div(capacity, heads * sectors);
// Special case if CDROM
if(sdev->type == 5) { // CDROM
@@ -872,6 +880,9 @@
return -EINVAL;
}
pci_set_master(pDev);
+ if (pci_set_dma_mask(pDev, 0xffffffffffffffffULL) &&
+ pci_set_dma_mask(pDev, 0xffffffffULL))
+ return -EINVAL;
base_addr0_phys = pci_resource_start(pDev,0);
hba_map0_area_size = pci_resource_len(pDev,0);
@@ -964,6 +975,7 @@
// Initializing the spinlocks
spin_lock_init(&pHba->state_lock);
+ spin_lock_init(&adpt_post_wait_lock);
if(raptorFlag == 0){
printk(KERN_INFO"Adaptec I2O RAID controller %d at %lx size=%x irq=%d\n",
@@ -1065,7 +1077,7 @@
{
int i;
- printk(KERN_INFO"Loading Adaptec I2O RAID: Version " DPT_I2O_VERSION "\n");
+ printk("Loading Adaptec I2O RAID: Version " DPT_I2O_VERSION "\n");
for (i = 0; i < DPTI_MAX_HBA; i++) {
hbas[i] = NULL;
}
@@ -1153,12 +1165,22 @@
timeout *= HZ;
if((status = adpt_i2o_post_this(pHba, msg, len)) == 0){
set_current_state(TASK_INTERRUPTIBLE);
- spin_unlock_irq(pHba->host->host_lock);
+ if(pHba->host)
+ spin_unlock_irq(pHba->host->host_lock);
if (!timeout)
schedule();
- else
+ else{
+ timeout = schedule_timeout(timeout);
+ if (timeout == 0) {
+ // I/O issued, but cannot get result in
+ // specified time. Freeing resorces is
+ // dangerous.
+ status = -ETIME;
+ }
schedule_timeout(timeout*HZ);
- spin_lock_irq(pHba->host->host_lock);
+ }
+ if(pHba->host)
+ spin_lock_irq(pHba->host->host_lock);
}
spin_lock_irq(&adpt_wq_i2o_post.lock);
__remove_wait_queue(&adpt_wq_i2o_post, &wait);
@@ -1210,6 +1232,8 @@
printk(KERN_WARNING"dpti%d: Timeout waiting for message frame!\n", pHba->unit);
return -ETIMEDOUT;
}
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
} while(m == EMPTY_QUEUE);
msg = (u32*) (pHba->msg_addr_virt + m);
@@ -1284,6 +1308,8 @@
printk(KERN_WARNING"Timeout waiting for message!\n");
return -ETIMEDOUT;
}
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
} while (m == EMPTY_QUEUE);
status = (u8*)kmalloc(4, GFP_KERNEL|ADDR32);
@@ -1315,6 +1341,8 @@
return -ETIMEDOUT;
}
rmb();
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
}
if(*status == 0x01 /*I2O_EXEC_IOP_RESET_IN_PROGRESS*/) {
@@ -1331,6 +1359,8 @@
printk(KERN_ERR "%s:Timeout waiting for IOP Reset.\n",pHba->name);
return -ETIMEDOUT;
}
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
} while (m == EMPTY_QUEUE);
// Flush the offset
adpt_send_nop(pHba, m);
@@ -1696,15 +1726,20 @@
}
do {
- spin_lock_irqsave(pHba->host->host_lock, flags);
+ if(pHba->host)
+ spin_lock_irqsave(pHba->host->host_lock, flags);
// This state stops any new commands from enterring the
// controller while processing the ioctl
// pHba->state |= DPTI_STATE_IOCTL;
// We can't set this now - The scsi subsystem sets host_blocked and
// the queue empties and stops. We need a way to restart the queue
rcode = adpt_i2o_post_wait(pHba, msg, size, FOREVER);
+ if (rcode != 0)
+ printk("adpt_i2o_passthru: post wait failed %d %p\n",
+ rcode, reply);
// pHba->state &= ~DPTI_STATE_IOCTL;
- spin_unlock_irqrestore(pHba->host->host_lock, flags);
+ if(pHba->host)
+ spin_unlock_irqrestore(pHba->host->host_lock, flags);
} while(rcode == -ETIMEDOUT);
if(rcode){
@@ -1765,10 +1800,12 @@
cleanup:
- kfree (reply);
+ if (rcode != -ETIME && rcode != -EINTR)
+ kfree (reply);
while(sg_index) {
if(sg_list[--sg_index]) {
- kfree((void*)(sg_list[sg_index]));
+ if (rcode != -ETIME && rcode != -EINTR)
+ kfree((void*)(sg_list[sg_index]));
}
}
return rcode;
@@ -1876,7 +1913,7 @@
int minor;
int error = 0;
adpt_hba* pHba;
- ulong flags;
+ ulong flags = 0;
minor = iminor(inode);
if (minor >= DPTI_MAX_HBA){
@@ -1942,9 +1979,11 @@
break;
}
case I2ORESETCMD:
- spin_lock_irqsave(pHba->host->host_lock, flags);
+ if(pHba->host)
+ spin_lock_irqsave(pHba->host->host_lock, flags);
adpt_hba_reset(pHba);
- spin_unlock_irqrestore(pHba->host->host_lock, flags);
+ if(pHba->host)
+ spin_unlock_irqrestore(pHba->host->host_lock, flags);
break;
case I2ORESCANCMD:
adpt_rescan(pHba);
@@ -1957,7 +1996,7 @@
}
-static void adpt_isr(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t adpt_isr(int irq, void *dev_id, struct pt_regs *regs)
{
Scsi_Cmnd* cmd;
adpt_hba* pHba = dev_id;
@@ -1966,12 +2005,15 @@
u32 status=0;
u32 context;
ulong flags = 0;
+ int handled = 0;
- if (pHba == NULL ){
+ if (pHba == NULL){
printk(KERN_WARNING"adpt_isr: NULL dev_id\n");
- return;
+ return IRQ_NONE;
}
- spin_lock_irqsave(pHba->host->host_lock, flags);
+ if(pHba->host)
+ spin_lock_irqsave(pHba->host->host_lock, flags);
+
while( readl(pHba->irq_mask) & I2O_INTERRUPT_PENDING_B) {
m = readl(pHba->reply_port);
if(m == EMPTY_QUEUE){
@@ -2036,7 +2078,10 @@
wmb();
rmb();
}
-out: spin_unlock_irqrestore(pHba->host->host_lock, flags);
+ handled = 1;
+out: if(pHba->host)
+ spin_unlock_irqrestore(pHba->host->host_lock, flags);
+ return IRQ_RETVAL(handled);
}
static s32 adpt_scsi_to_i2o(adpt_hba* pHba, Scsi_Cmnd* cmd, struct adpt_device* d)
@@ -2111,15 +2156,19 @@
/* Now fill in the SGList and command */
if(cmd->use_sg) {
struct scatterlist *sg = (struct scatterlist *)cmd->request_buffer;
+ int sg_count = pci_map_sg(pHba->pDev, sg, cmd->use_sg,
+ scsi_to_pci_dma_dir(cmd->sc_data_direction));
+
+
len = 0;
- for(i = 0 ; i < cmd->use_sg; i++) {
- *mptr++ = direction|0x10000000|sg->length;
- len+=sg->length;
- *mptr++ = virt_to_bus(sg->address);
+ for(i = 0 ; i < sg_count; i++) {
+ *mptr++ = direction|0x10000000|sg_dma_len(sg);
+ len+=sg_dma_len(sg);
+ *mptr++ = sg_dma_address(sg);
sg++;
}
/* Make this an end of list */
- mptr[-2] = direction|0xD0000000|(sg-1)->length;
+ mptr[-2] = direction|0xD0000000|sg_dma_len(sg-1);
reqlen = mptr - msg;
*lenptr = len;
@@ -2133,7 +2182,10 @@
reqlen = 12;
} else {
*mptr++ = 0xD0000000|direction|cmd->request_bufflen;
- *mptr++ = virt_to_bus(cmd->request_buffer);
+ *mptr++ = pci_map_single(pHba->pDev,
+ cmd->request_buffer,
+ cmd->request_bufflen,
+ scsi_to_pci_dma_dir(cmd->sc_data_direction));
}
}
@@ -2306,15 +2358,17 @@
static s32 adpt_rescan(adpt_hba* pHba)
{
s32 rcode;
- ulong flags;
+ ulong flags = 0;
- spin_lock_irqsave(pHba->host->host_lock, flags);
+ if(pHba->host)
+ spin_lock_irqsave(pHba->host->host_lock, flags);
if ((rcode=adpt_i2o_lct_get(pHba)) < 0)
goto out;
if ((rcode=adpt_i2o_reparse_lct(pHba)) < 0)
goto out;
rcode = 0;
-out: spin_unlock_irqrestore(pHba->host->host_lock, flags);
+out: if(pHba->host)
+ spin_unlock_irqrestore(pHba->host->host_lock, flags);
return rcode;
}
@@ -2596,6 +2650,8 @@
printk(KERN_ERR "%s: Timeout waiting for message frame!\n",pHba->name);
return 2;
}
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
}
msg = (u32*)(pHba->msg_addr_virt + m);
writel( THREE_WORD_MSG_SIZE | SGL_OFFSET_0,&msg[0]);
@@ -2629,6 +2685,8 @@
printk(KERN_WARNING"%s: Timeout waiting for message frame\n",pHba->name);
return -ETIMEDOUT;
}
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
} while(m == EMPTY_QUEUE);
msg=(u32 *)(pHba->msg_addr_virt+m);
@@ -2664,9 +2722,10 @@
rmb();
if(time_after(jiffies,timeout)){
printk(KERN_WARNING"%s: Timeout Initializing\n",pHba->name);
- kfree((void*)status);
return -ETIMEDOUT;
}
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
} while (1);
// If the command was successful, fill the fifo with our reply
@@ -2744,6 +2803,8 @@
pHba->name);
return -ETIMEDOUT;
}
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
} while(m==EMPTY_QUEUE);
@@ -2770,6 +2831,8 @@
return -ETIMEDOUT;
}
rmb();
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(1);
}
// Set up our number of outbound and inbound messages
@@ -3095,17 +3158,33 @@
int group, int field, void *buf, int buflen)
{
u16 opblk[] = { 1, 0, I2O_PARAMS_FIELD_GET, group, 1, field };
- u8 resblk[8+buflen]; /* 8 bytes for header */
+ u8 *resblk;
+
int size;
+ /* 8 bytes for header */
+ resblk = kmalloc(sizeof(u8) * (8+buflen), GFP_KERNEL|ADDR32);
+ if (resblk == NULL) {
+ printk(KERN_CRIT "%s: query scalar failed; Out of memory.\n", pHba->name);
+ return -ENOMEM;
+ }
+
if (field == -1) /* whole group */
opblk[4] = -1;
size = adpt_i2o_issue_params(I2O_CMD_UTIL_PARAMS_GET, pHba, tid,
- opblk, sizeof(opblk), resblk, sizeof(resblk));
+ opblk, sizeof(opblk), resblk, sizeof(u8)*(8+buflen));
+ if (size == -ETIME) {
+ printk(KERN_WARNING "%s: issue params failed; Timed out.\n", pHba->name);
+ return -ETIME;
+ } else if (size == -EINTR) {
+ printk(KERN_WARNING "%s: issue params failed; Interrupted.\n", pHba->name);
+ return -EINTR;
+ }
memcpy(buf, resblk+8, buflen); /* cut off header */
+ kfree(resblk);
if (size < 0)
return size;
@@ -3139,6 +3218,7 @@
msg[8] = virt_to_bus(resblk);
if ((wait_status = adpt_i2o_post_wait(pHba, msg, sizeof(msg), 20))) {
+ printk("adpt_i2o_issue_params: post_wait failed (%p)\n", resblk);
return wait_status; /* -DetailedStatus */
}
diff -urN linux-2.6.0/drivers/scsi.orig/dpti.h linux-2.6.0/drivers/scsi/dpti.h
--- linux-2.6.0/drivers/scsi.orig/dpti.h 2003-12-18 11:57:58.000000000 +0900
+++ linux-2.6.0/drivers/scsi/dpti.h 2003-12-22 14:49:23.882610752 +0900
@@ -65,7 +65,7 @@
#include "dpt/dpti_i2o.h"
#include "dpt/dpti_ioctl.h"
-#define DPT_I2O_VERSION "2.4 Build 5"
+#define DPT_I2O_VERSION "2.4 Build 5go"
#define DPT_VERSION 2
#define DPT_REVISION '4'
#define DPT_SUBREVISION '5'
@@ -272,7 +272,7 @@
static void adpt_i2o_sys_shutdown(void);
static int adpt_init(void);
static int adpt_i2o_build_sys_table(void);
-static void adpt_isr(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t adpt_isr(int irq, void *dev_id, struct pt_regs *regs);
#ifdef REBOOT_NOTIFIER
static int adpt_reboot_event(struct notifier_block *n, ulong code, void *p);
#endif
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: 2.6.6-rc2-mm2 + Adaptec I2O
2004-04-27 6:21 ` 2.6.6-rc2-mm2 + Adaptec I2O Clemens Schwaighofer
@ 2004-04-27 6:25 ` Andrew Morton
2004-04-27 11:53 ` Go Taniguchi
0 siblings, 1 reply; 4+ messages in thread
From: Andrew Morton @ 2004-04-27 6:25 UTC (permalink / raw)
To: Clemens Schwaighofer; +Cc: linux-scsi, dlang, linux-kernel, go
Clemens Schwaighofer <cs@tequila.co.jp> wrote:
>
> Andrew Morton wrote:
> | Clemens Schwaighofer <cs@tequila.co.jp> wrote:
> |
> |> on this URL [http://www.smartcgi.com/?action=docs,kernel26-adaptec] you
> |> can find a patch that I could successfully path again 2.6.5 (vanilla)
> |> and compile successfully.
> |
> |
> | hm. Against 2.6.0. Go, would you have time to send that patch in to the
> | scsi team at linux-scsi@vger.kernel.org?
>
> yes,
>
> remark:
>
> ~ Originally this patch has been released by Go Taniguchi at
> http://pkgcvs.turbolinux.co.jp/~go/patch-2.6/dpt_i2o.patch
>
> patch attached
Sorry, my question was directed to Go Taniguchi <go@turbolinux.co.jp> - Go
should submit the patch.
Thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: 2.6.6-rc2-mm2 + Adaptec I2O
2004-04-27 6:25 ` Andrew Morton
@ 2004-04-27 11:53 ` Go Taniguchi
0 siblings, 0 replies; 4+ messages in thread
From: Go Taniguchi @ 2004-04-27 11:53 UTC (permalink / raw)
To: Andrew Morton, linux-scsi; +Cc: Clemens Schwaighofer, dlang, linux-kernel
Hi,
Andrew Morton wrote:
> Clemens Schwaighofer <cs@tequila.co.jp> wrote:
>
>>Andrew Morton wrote:
>> | Clemens Schwaighofer <cs@tequila.co.jp> wrote:
>> |
>> |> on this URL [http://www.smartcgi.com/?action=docs,kernel26-adaptec] you
>> |> can find a patch that I could successfully path again 2.6.5 (vanilla)
>> |> and compile successfully.
>> |
>> |
>> | hm. Against 2.6.0. Go, would you have time to send that patch in to the
>> | scsi team at linux-scsi@vger.kernel.org?
>>
>> yes,
>>
>> remark:
>>
>> ~ Originally this patch has been released by Go Taniguchi at
>> http://pkgcvs.turbolinux.co.jp/~go/patch-2.6/dpt_i2o.patch
>>
>> patch attached
>
>
> Sorry, my question was directed to Go Taniguchi <go@turbolinux.co.jp> - Go
> should submit the patch.
Yea, I sent an mail to LKML in the end of last year regarding this issue.
http://marc.theaimsgroup.com/?l=linux-kernel&m=107275564119915&w=2
However, I think that Adaptec probably just re-make a new version of dpt_i2o.
My patch may differ from the Adaptec policy.
I thought that it may be good for someone need the driver before Adaptec
completed the driver. What's why I uploaded my patch onto web.
The number of the access is over 1000 now after I counted it.
Please merge to Andrew's tree if Adaptec does not mind.
This is my patch same as send from Clemens.
http://pkgcvs.turbolinux.co.jp/~go/patch-2.6/dpt_i2o.patch
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: 2.6.6-rc2-mm2 + Adaptec I2O
@ 2004-04-28 17:13 Markus Lidel
0 siblings, 0 replies; 4+ messages in thread
From: Markus Lidel @ 2004-04-28 17:13 UTC (permalink / raw)
To: SCSI Mailing List
Hello,
i don't know if you already know, but there is a own I2O subsystem,
which is working in 2.6 on 32-bit and 64-bit systems. At the moment, i
still try to get the patches into the main 2.6 kernel, but it would help
me very much, if you could give it a try. All patches you need, could be
downloaded from http://i2o.shadowconnect.com/.
Please note, that because the I2O subsystem does not depend on SCSI,
your devices will be called /dev/i2o/hda, /dev/i2o/hdb, ...
A short description and FAQ section is also on the site.
And if you still have problems, i would be glad, if you could contact
me. I'll try my best to help you. Even it works, there is still one
point (expect getting the patches into the kernel) on the ToDo list:
- Add Adaptec's specific 64-bit SG support
A complete list of things to be done (not kernel related) is on the site
too.
If you have further suggestions/comments please feel free to contact me.
Thank you very much, for giving it a try.
Best regards,
Markus Lidel
------------------------------------------
Markus Lidel (Senior IT Consultant)
Shadow Connect GmbH
Carl-Reisch-Weg 12
D-86381 Krumbach
Germany
Phone: +49 82 82/99 51-0
Fax: +49 82 82/99 51-11
E-Mail: Markus.Lidel@shadowconnect.com
URL: http://www.shadowconnect.com
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-04-28 17:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <408DE95F.5010201@tequila.co.jp>
[not found] ` <20040426221814.490a0cfd.akpm@osdl.org>
[not found] ` <Pine.LNX.4.58.0404262223260.17702@dlang.diginsite.com>
[not found] ` <408DF117.4060309@tequila.co.jp>
[not found] ` <20040426230455.53406d74.akpm@osdl.org>
2004-04-27 6:21 ` 2.6.6-rc2-mm2 + Adaptec I2O Clemens Schwaighofer
2004-04-27 6:25 ` Andrew Morton
2004-04-27 11:53 ` Go Taniguchi
2004-04-28 17:13 Markus Lidel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox