aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Uchino <buchino@cisco.com>2013-09-09 16:31:47 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-09-11 17:49:40 -0400
commit87aa619c17976ac799b30110e830cf86d2e2e99a (patch)
treea2315866e6326c700c51920f393f6f23ae84517f
parent1adee040114461787c031a792a9392a8b4866fc3 (diff)
[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>
-rw-r--r--drivers/scsi/fnic/fnic_main.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/scsi/fnic/fnic_main.c b/drivers/scsi/fnic/fnic_main.c
index b619dabaec31..835a9cdbac8b 100644
--- a/drivers/scsi/fnic/fnic_main.c
+++ b/drivers/scsi/fnic/fnic_main.c
@@ -581,10 +581,10 @@ static int fnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
581 pci_set_master(pdev); 581 pci_set_master(pdev);
582 582
583 /* Query PCI controller on system for DMA addressing 583 /* Query PCI controller on system for DMA addressing
584 * limitation for the device. Try 40-bit first, and 584 * limitation for the device. Try 64-bit first, and
585 * fail to 32-bit. 585 * fail to 32-bit.
586 */ 586 */
587 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(40)); 587 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
588 if (err) { 588 if (err) {
589 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); 589 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
590 if (err) { 590 if (err) {
@@ -601,10 +601,10 @@ static int fnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
601 goto err_out_release_regions; 601 goto err_out_release_regions;
602 } 602 }
603 } else { 603 } else {
604 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(40)); 604 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
605 if (err) { 605 if (err) {
606 shost_printk(KERN_ERR, fnic->lport->host, 606 shost_printk(KERN_ERR, fnic->lport->host,
607 "Unable to obtain 40-bit DMA " 607 "Unable to obtain 64-bit DMA "
608 "for consistent allocations, aborting.\n"); 608 "for consistent allocations, aborting.\n");
609 goto err_out_release_regions; 609 goto err_out_release_regions;
610 } 610 }