diff options
| author | Kashyap, Desai <kashyap.desai@lsi.com> | 2009-09-02 11:44:57 +0530 | 
|---|---|---|
| committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-12 09:35:27 -0500 | 
| commit | c55b89fba9872ebcd5ac15cdfdad29ffb89329f0 (patch) | |
| tree | 1cef34d442b468ee483c4c0f6072980b5852e209 /drivers/message/fusion/mptbase.c | |
| parent | f44fd18198eb26b62ba86b17016e9441ce95fc71 (diff) | |
| download | olio-linux-3.10-c55b89fba9872ebcd5ac15cdfdad29ffb89329f0.tar.xz olio-linux-3.10-c55b89fba9872ebcd5ac15cdfdad29ffb89329f0.zip  | |
[SCSI] mptsas : PAE Kernel more than 4 GB kernel panic
This patch is solving problem for PAE kernel DMA operation.
On PAE system dma_addr and unsigned long will have different
values.
Now dma_addr is not type casted using unsigned long.
Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/message/fusion/mptbase.c')
| -rw-r--r-- | drivers/message/fusion/mptbase.c | 10 | 
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c index 8ab7b37ed70..76fa2ee0b57 100644 --- a/drivers/message/fusion/mptbase.c +++ b/drivers/message/fusion/mptbase.c @@ -1015,9 +1015,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));  } @@ -1038,8 +1038,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 @@ -1101,7 +1101,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);  }  |