mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
lpfc: fix hang on SGI ia64 platform
commit 8e68597d08 upstream.
In testing 2.6.31 on one of our ia64 platforms I've encountered a hang
due to the driver using hardware ATEs which are a limited resource.
This is because the driver does not set the dma consistent mask to
64 bits.
Signed-off-by: Michael Reed <mdr@sgi.com>
Acked-by: James Smart <James.Smart@Emulex.Com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4b2bc96c3a
commit
253f41bf6e
@@ -4384,9 +4384,13 @@ lpfc_sli_pci_mem_setup(struct lpfc_hba *phba)
|
||||
pdev = phba->pcidev;
|
||||
|
||||
/* Set the device DMA mask size */
|
||||
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) != 0)
|
||||
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0)
|
||||
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) != 0
|
||||
|| pci_set_consistent_dma_mask(pdev,DMA_BIT_MASK(64)) != 0) {
|
||||
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0
|
||||
|| pci_set_consistent_dma_mask(pdev,DMA_BIT_MASK(32)) != 0) {
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the bus address of Bar0 and Bar2 and the number of bytes
|
||||
* required by each mapping.
|
||||
@@ -5940,9 +5944,13 @@ lpfc_sli4_pci_mem_setup(struct lpfc_hba *phba)
|
||||
pdev = phba->pcidev;
|
||||
|
||||
/* Set the device DMA mask size */
|
||||
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) != 0)
|
||||
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0)
|
||||
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) != 0
|
||||
|| pci_set_consistent_dma_mask(pdev,DMA_BIT_MASK(64)) != 0) {
|
||||
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0
|
||||
|| pci_set_consistent_dma_mask(pdev,DMA_BIT_MASK(32)) != 0) {
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the bus address of SLI4 device Bar0, Bar1, and Bar2 and the
|
||||
* number of bytes required by each mapping. They are actually
|
||||
|
||||
Reference in New Issue
Block a user