2.5.40 - DMA-mapping && misc
PATCH 1/1 2.5.40 - DMA-mapping && misc
drivers/scsi/53c7,8xx.c +12 -10
@@ -62,8 +62,6 @@* the fourth byte from 50 to 25. */ -#error Please convert me to Documentation/DMA-mapping.txt -#include <linux/config.h> #ifdef CONFIG_SCSI_NCR53C7xx_sync
@@ -3788,7 +3786,9 @@for (i =0 ; cmd->use_sg ? (i < cmd->use_sg) : !i; cmd_datain +=4 , cmd_dataout +=4 , ++i) {u32 buf = cmd->use_sg ? -virt_to_bus (((struct scatterlist *)cmd->buffer)[i].address) : +virt_to_bus ( +page_address (((struct scatterlist *)cmd->buffer)[i].page) + + ((struct scatterlist *)cmd->buffer)[i].offset ) :virt_to_bus (cmd->request_buffer);u32 count = cmd->use_sg ? ((struct scatterlist *)cmd->buffer)[i].length :
@@ -5735,7 +5735,7 @@ (struct NCR53c7x0_cmd *) cmd->host_scribble;int offset =0 , buffers;struct scatterlist *segment; -char *ptr; +char *ptr, *seg_addr;int found =0 ;/*
@@ -5753,18 +5753,20 @@ ptr =bus_to_virt (le32_to_cpu (insn[3 ]));if ((buffers = cmd->use_sg)) { -for (offset =0 , - segment = (struct scatterlist *) cmd->buffer; - buffers && !((found = ((ptr >= segment->address) && - (ptr < (segment->address + segment->length))))); + segment = (struct scatterlist *) cmd->buffer; + seg_addr =page_address (segment->page) + segment->offset; + +for (offset =0 ; + buffers && !((found = ((ptr >= seg_addr) && + (ptr < (seg_addr + segment->length))))); --buffers, offset += segment->length, ++segment)#if 0 printk ("scsi%d: comparing 0x%p to 0x%p\n" , - cmd->host->host_no, saved, segment->address); + cmd->host->host_no, saved, seg_addr);#else ;#endif - offset += ptr - segment->address; + offset += ptr - seg_addr; }else { found =1 ; offset = ptr - (char *) (cmd->request_buffer);
drivers/scsi/NCR53c406a.c +2 -2
@@ -896,7 +896,7 @@ sgcount = current_SC->use_sg; sglist = current_SC->request_buffer;while ( sgcount-- ) { -NCR53c406a_pio_write (sglist->address, sglist->length); +NCR53c406a_pio_write (sglist->address,page_address (sglist->page) + sglist->offset); sglist++; } }
@@ -925,7 +925,7 @@ sgcount = current_SC->use_sg; sglist = current_SC->request_buffer;while ( sgcount-- ) { -NCR53c406a_pio_read (sglist->address, sglist->length); +NCR53c406a_pio_read (sglist->address,page_address (sglist->page) + sglist->offset); sglist++; } }
drivers/scsi/dpt_i2o.c +1 -3
@@ -28,8 +28,6 @@#define ADDR32 (0) -#error Please convert me to Documentation/DMA-mapping.txt -#include <linux/version.h> #include <linux/module.h>
@@ -2138,7 +2136,7 @@for (i =0 ; i < cmd->use_sg; i++) { *mptr++ = direction|0x10000000 |sg->length; len+=sg->length; - *mptr++ =virt_to_bus (sg->address); + *mptr++ =virt_to_bus (page_address (sg->page) + sg->offset); sg++; }/* Make this an end of list */
drivers/scsi/eata_dma.c +1 -3
@@ -63,8 +63,6 @@/* Look in eata_dma.h for configuration and revision information */ -#error Please convert me to Documentation/DMA-mapping.txt -#include <linux/module.h> #include <linux/kernel.h> #include <linux/sched.h>
@@ -574,7 +572,7 @@ ccb->cp_datalen =htonl (cmd->use_sg *sizeof (struct eata_sg_list )); sl=(struct scatterlist *)cmd->request_buffer;for (i =0 ; i < cmd->use_sg; i++, sl++){ - ccb->sg_list[i].data =htonl (virt_to_bus (sl->address)); + ccb->sg_list[i].data =htonl (virt_to_bus (page_address (sl->page) + sl->offset)); ccb->sg_list[i].len =htonl ((u32 ) sl->length); } }else {
drivers/scsi/eata_pio.c +2 -2
@@ -99,7 +99,7 @@else { SCp->buffer++; - SCp->ptr=SCp->buffer->address; + SCp->ptr=page_address (SCp->buffer->page) + SCp->buffer->offset; SCp->this_residual=SCp->buffer->length; } }
@@ -372,7 +372,7 @@ }else { cmd->SCp.buffer = cmd->request_buffer; cmd->SCp.buffers_residual = cmd->use_sg; - cmd->SCp.ptr = cmd->SCp.buffer->address; + cmd->SCp.ptr =page_address (cmd->SCp.buffer->page) + cmd->SCp.buffer->offset; cmd->SCp.this_residual = cmd->SCp.buffer->length; } cmd->SCp.Status = (cmd->SCp.this_residual !=0 );/* TRUE as long as bytes
drivers/scsi/fdomain.c +3 -3
@@ -1565,7 +1565,7 @@if (current_SC->SCp.buffers_residual) { --current_SC->SCp.buffers_residual; ++current_SC->SCp.buffer; - current_SC->SCp.ptr = current_SC->SCp.buffer->address; + current_SC->SCp.ptr =page_address (current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset; current_SC->SCp.this_residual = current_SC->SCp.buffer->length; }else break ;
@@ -1598,7 +1598,7 @@ && current_SC->SCp.buffers_residual) { --current_SC->SCp.buffers_residual; ++current_SC->SCp.buffer; - current_SC->SCp.ptr = current_SC->SCp.buffer->address; + current_SC->SCp.ptr =page_address (current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset; current_SC->SCp.this_residual = current_SC->SCp.buffer->length; } }
@@ -1684,7 +1684,7 @@if (current_SC->use_sg) { current_SC->SCp.buffer = (struct scatterlist *)current_SC->request_buffer; - current_SC->SCp.ptr = current_SC->SCp.buffer->address; + current_SC->SCp.ptr =page_address (current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset; current_SC->SCp.this_residual = current_SC->SCp.buffer->length; current_SC->SCp.buffers_residual = current_SC->use_sg -1 ; }else {
drivers/scsi/in2000.c +3 -3
@@ -355,7 +355,7 @@if (cmd->use_sg) { cmd->SCp.buffer = (struct scatterlist *)cmd->buffer; cmd->SCp.buffers_residual = cmd->use_sg -1 ; - cmd->SCp.ptr = (char *)cmd->SCp.buffer->address; + cmd->SCp.ptr =page_address (cmd->SCp.buffer->page) + cmd->SCp.buffer->offset; cmd->SCp.this_residual = cmd->SCp.buffer->length; }else {
@@ -762,8 +762,8 @@ ++cmd->SCp.buffer; --cmd->SCp.buffers_residual; cmd->SCp.this_residual = cmd->SCp.buffer->length; - cmd->SCp.ptr = cmd->SCp.buffer->address; - } + cmd->SCp.ptr =page_address (cmd->SCp.buffer->page) + cmd->SCp.buffer->offset; + }/* Set up hardware registers */
drivers/scsi/ini9100u.c +2 -4
@@ -108,8 +108,6 @@#define CVT_LINUX_VERSION (V ,P ,S ) (V * 65536 + P * 256 + S) -#error Please convert me to Documentation/DMA-mapping.txt -#ifndef LINUX_VERSION_CODE #include <linux/version.h> #endif
@@ -491,7 +489,7 @@if (SCpnt->use_sg) { pSrbSG = (struct scatterlist *) SCpnt->request_buffer;if (SCpnt->use_sg ==1 ) {/* If only one entry in the list *//* treat it as regular I/O */ - pSCB->SCB_BufPtr = (U32 )VIRT_TO_BUS (pSrbSG->address); + pSCB->SCB_BufPtr = (U32 )VIRT_TO_BUS (page_address (pSrbSG->page)+pSrbSG->offset); TotalLen = pSrbSG->length; pSCB->SCB_SGLen =0 ; }else {/* Assign SG physical address */
@@ -500,7 +498,7 @@for (i =0 , TotalLen =0 , pSG = &pSCB->SCB_SGList[0 ];/* 1.01g */ i < SCpnt->use_sg; i++, pSG++, pSrbSG++) { - pSG->SG_Ptr = (U32 )VIRT_TO_BUS (pSrbSG->address); + pSG->SG_Ptr = (U32 )VIRT_TO_BUS (page_address (pSrbSG->page)+pSrbSG->offset); TotalLen += pSG->SG_Len = pSrbSG->length; } pSCB->SCB_SGLen = i;
drivers/scsi/pci2000.c +6 -4
@@ -505,8 +505,9 @@if ( SCpnt->use_sg ) { - SCpnt->SCp.have_data_in =pci_map_single (padapter->pdev, ((struct scatterlist *)SCpnt->request_buffer)->address, - SCpnt->request_bufflen,scsi_to_pci_dma_dir (SCpnt->sc_data_direction)); + SCpnt->SCp.have_data_in =pci_map_single (padapter->pdev, +page_address (((struct scatterlist *)SCpnt->request_buffer)->page) + ((struct scatterlist *)SCpnt->request_buffer)->offset, + SCpnt->request_bufflen,scsi_to_pci_dma_dir (SCpnt->sc_data_direction)); }else {
@@ -528,8 +529,9 @@case SCSIOP_READ_CAPACITY :// read capacity CDB if ( SCpnt->use_sg ) { - SCpnt->SCp.have_data_in =pci_map_single (padapter->pdev, ((struct scatterlist *)(SCpnt->request_buffer))->address, -8 ,PCI_DMA_FROMDEVICE ); + SCpnt->SCp.have_data_in =pci_map_single (padapter->pdev, +page_address (((struct scatterlist *)SCpnt->request_buffer)->page) + ((struct scatterlist *)SCpnt->request_buffer)->offset, +8 ,PCI_DMA_FROMDEVICE ); }else SCpnt->SCp.have_data_in =pci_map_single (padapter->pdev, SCpnt->request_buffer,8 ,PCI_DMA_FROMDEVICE );
drivers/scsi/pci2220i.c +6 -4
@@ -34,8 +34,6 @@* ****************************************************************************/ -#error Convert me to understand page+offset based scatterlists -//#define DEBUG 1 #include <linux/module.h>
@@ -464,7 +462,9 @@ {if ( padapter->nextSg < padapter->SCpnt->use_sg ) { - padapter->currentSgBuffer = ((struct scatterlist *)padapter->SCpnt->request_buffer)[padapter->nextSg].address; + padapter->currentSgBuffer = +page_address (((struct scatterlist *)padapter->SCpnt->request_buffer)[padapter->nextSg].page) + + ((struct scatterlist *)padapter->SCpnt->request_buffer)[padapter->nextSg].offset; padapter->currentSgCount = ((struct scatterlist *)padapter->SCpnt->request_buffer)[padapter->nextSg].length; padapter->nextSg++; }
@@ -2050,7 +2050,9 @@if ( SCpnt->use_sg ) { - padapter->currentSgBuffer = ((struct scatterlist *)SCpnt->request_buffer)[0 ].address; + padapter->currentSgBuffer = +page_address (((struct scatterlist *)SCpnt->request_buffer)[0 ].page) + + ((struct scatterlist *)SCpnt->request_buffer)[0 ].offset; padapter->currentSgCount = ((struct scatterlist *)SCpnt->request_buffer)[0 ].length; }else
drivers/scsi/scsiiom.c +0 -2
@@ -6,8 +6,6 @@***********************************************************************/ /* $Id: scsiiom.c,v 2.55.2.17 2000/12/20 00:39:37 garloff Exp $ */ -#error Please convert me to Documentation/DMA-mapping.txt -static void __inline__dc390_freetag (PDCB pDCB,PSRB pSRB) {
drivers/scsi/seagate.c +3 -3
@@ -1069,7 +1069,7 @@ buffer = (struct scatterlist *) SCint->buffer; len = buffer->length; - data = (unsigned char *) buffer->address; + data = (unsigned char *) (page_address (buffer->page) + buffer->offset); }else { DPRINTK (DEBUG_SG, "scsi%d : scatter gather not requested.\n",
@@ -1336,7 +1336,7 @@ ++buffer; len = buffer->length; data = - (unsigned char *) buffer->address; + (unsigned char *) (page_address (buffer->page) + buffer->offset);DPRINTK (DEBUG_SG ,"scsi%d : next scatter-gather buffer len = %d address = %08x\n" , hostno, len, data);
@@ -1520,7 +1520,7 @@ ++buffer; len = buffer->length; data = - (unsigned char *) buffer->address; + (unsigned char *) (page_address (buffer->page) + buffer->offset);DPRINTK (DEBUG_SG ,"scsi%d : next scatter-gather buffer len = %d address = %08x\n" , hostno, len, data);
drivers/scsi/sym53c416.c +2 -2
@@ -449,7 +449,7 @@ sglist = current_command->request_buffer;while (sgcount--) { - tot_trans +=sym53c416_write (base, sglist->address, sglist->length); + tot_trans +=sym53c416_write (base,page_address (sglist->page) + sglist->offset, sglist->length); sglist++; } }
@@ -475,7 +475,7 @@ sglist = current_command->request_buffer;while (sgcount--) { - tot_trans +=sym53c416_read (base, sglist->address, sglist->length); + tot_trans +=sym53c416_read (base,page_address (sglist->page) + sglist->offset, sglist->length); sglist++; } }
drivers/scsi/wd7000.c +3 -4
@@ -621,14 +621,13 @@ (void )get_options (str,ARRAY_SIZE (ints), ints);if (wd7000_card_num >=NUM_CONFIGS ) { - printk(KERN_ERR __FUNCTION__ -": Too many \"wd7000=\" configurations in " +printk (KERN_ERR ": Too many \"wd7000=\" configurations in " "command line!\n" );return 0 ; }if ((ints[0 ] <3 ) || (ints[0 ] >5 )) { - printk(KERN_ERR __FUNCTION__ ": Error in command line! " +printk (KERN_ERR ": Error in command line! " "Usage: wd7000=<IRQ>,<DMA>,IO>[,<BUS_ON>" "[,<BUS_OFF>]]\n" ); }else {
@@ -1743,7 +1742,7 @@ ip[2 ] = info[2 ];if (info[0 ] ==255 ) - printk(KERN_INFO __FUNCTION__ ": current partition table is " +printk (KERN_INFO ": current partition table is " "using extended translation.\n" ); } }
--
http://www.techlinux.com.br/~carlos/tmp/2.5.40-DMA-mapping_misc.diff
Signature · 6 lines
_________________________ Carlos E Gorges ([email protected]) Tech informática LTDA Brazil _________________________