[SCSI] fnic: On system with >1.1TB RAM, VIC fails multipath after boot up

Issue was seen when SCSI buffer address is more than 40 bits in system
with more than 1.1TB RAM. When SCSI buffer is passed to VIC, it is failing
to map to correct buffer address, as DMA mask is set to 40 bits in driver
initialization. Corrected DMA_MASK from 40-bits to 64-bits to avoid masking
41-64 bits addresses.

Signed-off-by: Brian Uchino <buchino@cisco.com>
Signed-off-by: Hiral Patel <hiralpat@cisco.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>

authored by Brian Uchino and committed by James Bottomley 87aa619c 1adee040

+4 -4
+4 -4
drivers/scsi/fnic/fnic_main.c
··· 581 pci_set_master(pdev); 582 583 /* Query PCI controller on system for DMA addressing 584 - * limitation for the device. Try 40-bit first, and 585 * fail to 32-bit. 586 */ 587 - err = pci_set_dma_mask(pdev, DMA_BIT_MASK(40)); 588 if (err) { 589 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); 590 if (err) { ··· 601 goto err_out_release_regions; 602 } 603 } else { 604 - err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(40)); 605 if (err) { 606 shost_printk(KERN_ERR, fnic->lport->host, 607 - "Unable to obtain 40-bit DMA " 608 "for consistent allocations, aborting.\n"); 609 goto err_out_release_regions; 610 }
··· 581 pci_set_master(pdev); 582 583 /* Query PCI controller on system for DMA addressing 584 + * limitation for the device. Try 64-bit first, and 585 * fail to 32-bit. 586 */ 587 + err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); 588 if (err) { 589 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); 590 if (err) { ··· 601 goto err_out_release_regions; 602 } 603 } else { 604 + err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); 605 if (err) { 606 shost_printk(KERN_ERR, fnic->lport->host, 607 + "Unable to obtain 64-bit DMA " 608 "for consistent allocations, aborting.\n"); 609 goto err_out_release_regions; 610 }