• A
    cciss: change Cmd_sg_list.sg_chain_dma type to dma_addr_t · 32a87c01
    Alex Chiang 提交于
    A recent commit broke the ia64 build:
    
    	Author: Don Brace <brace@beardog.cce.hp.com>
    	Date:   Thu Nov 12 12:50:01 2009 -0600
    
    	cciss: Add enhanced scatter-gather support.
    
    because of this hunk:
    
    	--- a/drivers/block/cciss.h
    	+++ b/drivers/block/cciss.h
    	+struct Cmd_sg_list {
    	+       SGDescriptor_struct     *sgchain;
    	+       dma64_addr_t            sg_chain_dma;
    	+       int                     chain_block_size;
    	+};
    
    The issue is that dma64_addr_t isn't #define'd on ia64.
    
    The way that we're using Cmd_sg_list.sg_chain_dma is to hold an
    address returned from pci_map_single().
    
    	+               temp64.val = pci_map_single(h->pdev,
    	+                                 h->cmd_sg_list[c->cmdindex]->sgchain,
    	+                                 len, dir);
    	+
    	+               h->cmd_sg_list[c->cmdindex]->sg_chain_dma = temp64.val;
    
    pci_map_single() returns a dma_addr_t too.
    
    This code will still work even on a 32-bit x86 build, where
    dma_addr_t is defined to be a u32 because it will simply be
    promoted to the __u64 that temp64.val is defined as.
    
    Thus, declaring Cmd_sg_list.sg_chain_dma as dma_addr_t is safe.
    
    Cc: Don Brace <brace@beardog.cce.hp.com>
    Cc: Stephen M. Cameron <scameron@beardog.cce.hp.com>
    Signed-off-by: NAlex Chiang <achiang@hp.com>
    Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
    32a87c01
cciss.h 7.7 KB