• Philip J Kelleher's avatar
    rsxx: Disallow discards from being unmapped. · e35f38bf
    Philip J Kelleher authored
    This patch fixes a bug in which discards were always
    calling pci_unmap_page. Discards should never call the
    pci_unmap_page function call because they are never mapped.
    
    This caused a race condition on PowerPC systems when issuing
    discards, writes, and reads all at the same time. The
    pci_map_page function would eventually map logical address
    0 for a read or write. Discards are always assigned a DMA
    address of 0 because they are never mapped. So if
    pci_map_page mapped address 0 for a DMA and a discard was
    "unmapped" then the address would be freed and would cause
    an EEH event to occur when Hardware accesses the address.
    
    This was injected/uncovered in commit:
    b347f9cf0bc8d42ee95ba1d3837fd93045ab336b
    
    The pci_dma_mapping_error function declares -1 a DMA_ERROR
    not 0 like initially thought So before we would never unmap
    discards because they were considered NULL.
    
    This patch should fall on top of commit id:
    fc1967bb08a6184ed44ef990e1dd4389901b809c
    
    Also, the driver version is being up dated.
    Signed-off-by: default avatarPhilip J Kelleher <pjk1939@linux.vnet.ibm.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    e35f38bf
dma.c 26.5 KB