| summaryrefslogtreecommitdiff |
| author | Hannes Reinecke <hare@suse.de> | 2009-08-21 10:28:25 (GMT) |
|---|---|---|
| committer | Hannes Reinecke <hare@suse.de> | 2009-08-21 10:28:25 (GMT) |
| commit | 1b8ca42d4ee7316f91029fec3b4d3e3b998e96d3 (patch) (side-by-side diff) | |
| tree | b561ee2ee662727d1d08e67634112db5bdcce39f | |
| parent | 9bae7f7510d27186ffc73c344597041bc08ae2df (diff) | |
- patches.drivers/mptsas-106xE-32bit-fix: LSI Logic SAS1068Erpm-2.6.16.60-0.53
doesn't work with PAE enabled (bnc#531004).
| -rw-r--r-- | kernel-source.changes | 6 | ||||
| -rw-r--r-- | patches.drivers/mptsas-106xE-32bit-fix | 52 | ||||
| -rw-r--r-- | series.conf | 1 |
3 files changed, 59 insertions, 0 deletions
diff --git a/kernel-source.changes b/kernel-source.changes index 17595fd..d2c1265 100644 --- a/kernel-source.changes +++ b/kernel-source.changes @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Fri Aug 21 12:28:19 CEST 2009 - hare@suse.de + +- patches.drivers/mptsas-106xE-32bit-fix: LSI Logic SAS1068E + doesn't work with PAE enabled (bnc#531004). + +------------------------------------------------------------------- Fri Aug 21 03:13:00 CEST 2009 - rgoldwyn@suse.de - patches.fixes/ocfs2-dlm-wait-on-lockres-instead-of-err-during-cancel: diff --git a/patches.drivers/mptsas-106xE-32bit-fix b/patches.drivers/mptsas-106xE-32bit-fix new file mode 100644 index 0000000..313be89 --- a/dev/null +++ b/patches.drivers/mptsas-106xE-32bit-fix @@ -0,0 +1,52 @@ +From: Kahyap Desai <kashyap.desai@lsi.com> +Subject: LSI Logic SAS1068E doesn't work with PAE enabled +References: bnc#531004 + +On 32bit systems with more than 4GB of memory the mptsas driver fails +to boot with some weird errors (runaway loop modprobe etc). + +The driver is using the upper_32_bit() macro instead of lengthy code +to get upper 32. However, "Unsigned long" and "dma_addr_t" both has +different size for PAE kernel, causing memory addressing errors. + +This patch corrects this problem. + +Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> +Signed-off-by: Hannes Reinecke <hare@suse.de> + +diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c +index e768569..e9c33f7 100644 +--- a/drivers/message/fusion/mptbase.c ++++ b/drivers/message/fusion/mptbase.c +@@ -1043,9 +1043,9 @@ mpt_add_sge_64bit(void *pAddr, u32 flagslength, dma_addr_t dma_addr) + { + SGESimple64_t *pSge = (SGESimple64_t *) pAddr; + pSge->Address.Low = cpu_to_le32 +- (lower_32_bits((unsigned long)(dma_addr))); ++ (lower_32_bits(dma_addr)); + pSge->Address.High = cpu_to_le32 +- (upper_32_bits((unsigned long)dma_addr)); ++ (upper_32_bits(dma_addr)); + pSge->FlagsLength = cpu_to_le32 + ((flagslength | MPT_SGE_FLAGS_64_BIT_ADDRESSING)); + } +@@ -1067,8 +1067,8 @@ mpt_add_sge_64bit_1078(void *pAddr, u32 flagslength, dma_addr_t dma_addr) + u32 tmp; + + pSge->Address.Low = cpu_to_le32 +- (lower_32_bits((unsigned long)(dma_addr))); +- tmp = (u32)(upper_32_bits((unsigned long)dma_addr)); ++ (lower_32_bits(dma_addr)); ++ tmp = (u32)(upper_32_bits(dma_addr)); + + /* + * 1078 errata workaround for the 36GB limitation +@@ -1130,7 +1130,7 @@ mpt_add_chain_64bit(void *pAddr, u8 next, u16 length, dma_addr_t dma_addr) + pChain->NextChainOffset = next; + + pChain->Address.Low = cpu_to_le32(tmp); +- tmp = (u32)(upper_32_bits((unsigned long)dma_addr)); ++ tmp = (u32)(upper_32_bits(dma_addr)); + pChain->Address.High = cpu_to_le32(tmp); + } + diff --git a/series.conf b/series.conf index 08ec97d..dd50866 100644 --- a/series.conf +++ b/series.conf @@ -1876,6 +1876,7 @@ patches.drivers/aacraid-sap-fixes patches.fixes/scsi-prep_fn-dead-queue-fix patches.drivers/ipr-pci-eeh-permanent-failure + patches.drivers/mptsas-106xE-32bit-fix patches.drivers/scsi-unblock-target-after-calling-terminate-callback patches.drivers/scsi-add-transport-host-byte-errors |