From: Dave Olien <dmo@osdl.org>

The following patch adds a call to blk_queue_bounce_limit to the DAC960
driver.  Otherwise, it uses bounce buffering more than it needs to.



 25-akpm/drivers/block/DAC960.c |    3 +++
 25-akpm/drivers/block/DAC960.h |    6 +-----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff -puN drivers/block/DAC960.c~dac960-bounce-avoidance drivers/block/DAC960.c
--- 25/drivers/block/DAC960.c~dac960-bounce-avoidance	Thu Apr 17 15:05:04 2003
+++ 25-akpm/drivers/block/DAC960.c	Thu Apr 17 15:05:04 2003
@@ -1069,6 +1069,7 @@ static boolean DAC960_V1_EnableMemoryMai
   
   if (pci_set_dma_mask(Controller->PCIDevice, DAC690_V1_PciDmaMask))
 	return DAC960_Failure(Controller, "DMA mask out of range");
+  Controller->BounceBufferLimit = DAC690_V1_PciDmaMask;
 
   if ((hw_type == DAC960_PD_Controller) || (hw_type == DAC960_P_Controller)) {
     CommandMailboxesSize =  0;
@@ -1271,6 +1272,7 @@ static boolean DAC960_V2_EnableMemoryMai
 
   if (pci_set_dma_mask(Controller->PCIDevice, DAC690_V2_PciDmaMask))
 	return DAC960_Failure(Controller, "DMA mask out of range");
+  Controller->BounceBufferLimit = DAC690_V2_PciDmaMask;
 
   /* This is a temporary dma mapping, used only in the scope of this function */
   CommandMailbox =
@@ -2386,6 +2388,7 @@ static boolean DAC960_RegisterBlockDevic
   */
   RequestQueue = &Controller->RequestQueue;
   blk_init_queue(RequestQueue, DAC960_RequestFunction, &Controller->queue_lock);
+  blk_queue_bounce_limit(RequestQueue, Controller->BounceBufferLimit);
   RequestQueue->queuedata = Controller;
   blk_queue_max_hw_segments(RequestQueue,
 			    Controller->DriverScatterGatherLimit);
diff -puN drivers/block/DAC960.h~dac960-bounce-avoidance drivers/block/DAC960.h
--- 25/drivers/block/DAC960.h~dac960-bounce-avoidance	Thu Apr 17 15:05:04 2003
+++ 25-akpm/drivers/block/DAC960.h	Thu Apr 17 15:05:04 2003
@@ -62,11 +62,6 @@
 
 /*
   Define the pci dma mask supported by DAC960 V1 and V2 Firmware Controlers
-
-  For now set the V2 mask to only 32 bits.  The controller IS capable
-  of doing 64 bit dma.  But I have yet to find out whether this needs to
-  be explicitely enabled in the controller, or of the controller adapts
-  automatically.
  */
 
 #define DAC690_V1_PciDmaMask	0xffffffff
@@ -2370,6 +2365,7 @@ typedef struct DAC960_Controller
   unsigned short ControllerScatterGatherLimit;
   unsigned short DriverScatterGatherLimit;
   unsigned int ControllerUsageCount;
+  u64		BounceBufferLimit;
   unsigned int CombinedStatusBufferLength;
   unsigned int InitialStatusLength;
   unsigned int CurrentStatusLength;

_