Hi all I've been buggering the list with this ridiculous problem for quite some time now:-) I understand, it is too risky to apply an untested patch to mainline, but could we either 1) get it into -mm or 2) try to find some beta-testers by applying something like the below: Thanks Guennadi --- Guennadi Liakhovetski Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@xxxxxx> Index: linux-2_6/drivers/scsi/dc395x.c =================================================================== RCS file: /usr/src/cvs/linux-2_6/drivers/scsi/dc395x.c,v retrieving revision 1.1.1.8 diff -u -p -r1.1.1.8 dc395x.c --- linux-2_6/drivers/scsi/dc395x.c 2 Sep 2005 19:16:29 -0000 1.1.1.8 +++ linux-2_6/drivers/scsi/dc395x.c 5 Sep 2005 20:38:23 -0000 @@ -976,6 +976,17 @@ static void send_srb(struct AdapterCtlBl } } +static inline void *__page_address(struct page *page) +{ + static int feedback_requested; + + if (!feedback_requested) { + feedback_requested = 1; + printk(KERN_WARNING "%s: Please, contact <linux-scsi@xxxxxxxxxxxxxxx> " + "to help improve support for your system.\n", __FILE__); + } + return page_address(page); +} /* Prepare SRB for being sent to Device DCB w/ command *cmd */ static void build_srb(struct scsi_cmnd *cmd, struct DeviceCtlBlk *dcb, @@ -1021,7 +1032,7 @@ static void build_srb(struct scsi_cmnd * reqlen, cmd->request_buffer, cmd->use_sg, srb->sg_count); - srb->virt_addr = page_address(sl->page); + srb->virt_addr = __page_address(sl->page); for (i = 0; i < srb->sg_count; i++) { u32 busaddr = (u32)sg_dma_address(&sl[i]); u32 seglen = (u32)sl[i].length; @@ -2018,7 +2029,7 @@ static void sg_update_list(struct ScsiRe unsigned long mask = ~((unsigned long)sg->length - 1) & PAGE_MASK; if ((sg_dma_address(sg) & mask) == (psge->address & mask)) { - srb->virt_addr = (page_address(sg->page) + srb->virt_addr = (__page_address(sg->page) + psge->address - (psge->address & PAGE_MASK)); return; @@ -3322,7 +3333,7 @@ static void srb_done(struct AdapterCtlBl if (cmd->use_sg) { struct scatterlist* sg = (struct scatterlist *)cmd->request_buffer; - ptr = (struct ScsiInqData *)(page_address(sg->page) + sg->offset); + ptr = (struct ScsiInqData *)(__page_address(sg->page) + sg->offset); } else { ptr = (struct ScsiInqData *)(cmd->request_buffer); } Index: linux-2_6/drivers/scsi/tmscsim.c =================================================================== RCS file: /usr/src/cvs/linux-2_6/drivers/scsi/tmscsim.c,v retrieving revision 1.1.1.9 diff -u -p -r1.1.1.9 tmscsim.c --- linux-2_6/drivers/scsi/tmscsim.c 2 Sep 2005 19:16:29 -0000 1.1.1.9 +++ linux-2_6/drivers/scsi/tmscsim.c 5 Sep 2005 20:38:31 -0000 @@ -989,6 +989,14 @@ din_1: if( residual ) { bval = DC390_read8 (ScsiFifo); /* get one residual byte */ + static int feedback_requested; + + if (!feedback_requested) { + feedback_requested = 1; + printk(KERN_WARNING "%s: Please, contact <linux-scsi@xxxxxxxxxxxxxxx> " + "to help improve support for your system.\n", __FILE__); + } + ptr = (u8 *) bus_to_virt( pSRB->SGBusAddr ); *ptr = bval; pSRB->SGBusAddr++; xferCnt++; - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html