]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mptsas : PAE Kernel more than 4 GB kernel panic
authorKashyap, Desai <kashyap.desai@lsi.com>
Wed, 2 Sep 2009 06:14:57 +0000 (11:44 +0530)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 5 Oct 2009 16:33:07 +0000 (09:33 -0700)
commit c55b89fba9872ebcd5ac15cdfdad29ffb89329f0 upstream.

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>
Cc: Jan Beulich <JBeulich@novell.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/message/fusion/mptbase.c

index 5d0ba4f5924ca5bf34547dabcab8cda8cbf2ff4a..9ad7bb4e721f3dd37a7b0da6b32c7e94da6c5b83 100644 (file)
@@ -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);
 }