提交 62288f10 编写于 作者: A adam radford 提交者:

[SCSI] 3ware 9000 driver >4GB memory fix

The attached patch fixes a bug in the 3ware 9000 series driver:

- Fix use_sg == 0 mapping on systems with 4GB or higher.

  This fixes REPORT_LUNS (0xa0) failing with 3ware 9000 controllers on systems
  with lots of ram, mentioned in bugzilla # 6009:

      http://bugzilla.kernel.org/show_bug.cgi?id=6009Signed-off-by: NAdam Radford <linuxraid@amcc.com>
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 40cdc840
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
Add support for embedded firmware error strings. Add support for embedded firmware error strings.
2.26.02.003 - Correctly handle single sgl's with use_sg=1. 2.26.02.003 - Correctly handle single sgl's with use_sg=1.
2.26.02.004 - Add support for 9550SX controllers. 2.26.02.004 - Add support for 9550SX controllers.
2.26.02.005 - Fix use_sg == 0 mapping on systems with 4GB or higher.
*/ */
#include <linux/module.h> #include <linux/module.h>
...@@ -84,7 +85,7 @@ ...@@ -84,7 +85,7 @@
#include "3w-9xxx.h" #include "3w-9xxx.h"
/* Globals */ /* Globals */
#define TW_DRIVER_VERSION "2.26.02.004" #define TW_DRIVER_VERSION "2.26.02.005"
static TW_Device_Extension *twa_device_extension_list[TW_MAX_SLOT]; static TW_Device_Extension *twa_device_extension_list[TW_MAX_SLOT];
static unsigned int twa_device_extension_count; static unsigned int twa_device_extension_count;
static int twa_major = -1; static int twa_major = -1;
...@@ -1408,7 +1409,7 @@ static dma_addr_t twa_map_scsi_single_data(TW_Device_Extension *tw_dev, int requ ...@@ -1408,7 +1409,7 @@ static dma_addr_t twa_map_scsi_single_data(TW_Device_Extension *tw_dev, int requ
dma_addr_t mapping; dma_addr_t mapping;
struct scsi_cmnd *cmd = tw_dev->srb[request_id]; struct scsi_cmnd *cmd = tw_dev->srb[request_id];
struct pci_dev *pdev = tw_dev->tw_pci_dev; struct pci_dev *pdev = tw_dev->tw_pci_dev;
int retval = 0; dma_addr_t retval = 0;
if (cmd->request_bufflen == 0) { if (cmd->request_bufflen == 0) {
retval = 0; retval = 0;
...@@ -1798,7 +1799,7 @@ static int twa_scsiop_execute_scsi(TW_Device_Extension *tw_dev, int request_id, ...@@ -1798,7 +1799,7 @@ static int twa_scsiop_execute_scsi(TW_Device_Extension *tw_dev, int request_id,
int i, sg_count; int i, sg_count;
struct scsi_cmnd *srb = NULL; struct scsi_cmnd *srb = NULL;
struct scatterlist *sglist = NULL; struct scatterlist *sglist = NULL;
u32 buffaddr = 0x0; dma_addr_t buffaddr = 0x0;
int retval = 1; int retval = 1;
if (tw_dev->srb[request_id]) { if (tw_dev->srb[request_id]) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册