# HG changeset patch # User Yu Zhao # Date 1236909216 14400 # Node ID 8de852cacf43ac03f7f4819589bc22f62a8d1b3c # Parent 8bac898877bc9fb52befd566bbb8f04c190006f4 Backport: PCI: fix 64-vbit prefetchable memory resource BARs commit e354597cce8d219d135d65e585dc4f30323486b9 Author: Peter Chubb Date: Mon Oct 13 11:49:04 2008 +1100 PCI: fix 64-vbit prefetchable memory resource BARs Since patch 6ac665c63dcac8fcec534a1d224ecbb8b867ad59 my infiniband controller hasn't worked. This is because it has 64-bit prefetchable memory, which was mistakenly being taken to be 32-bit memory. The resource flags in this case are PCI_BASE_ADDRESS_MEM_TYPE_64 | PCI_BASE_ADDRESS_MEM_PREFETCH. This patch checks only for the PCI_BASE_ADDRESS_MEM_TYPE_64 bit; thus whether the region is prefetchable or not is ignored. This fixes my Infiniband. Reviewed-by: Matthew Wilcox Signed-off-by: Peter Chubb Signed-off-by: Jesse Barnes Signed-off-by: Yu Zhao diff -r 8bac898877bc -r 8de852cacf43 drivers/pci/probe.c --- a/drivers/pci/probe.c Thu Mar 12 21:52:53 2009 -0400 +++ b/drivers/pci/probe.c Thu Mar 12 21:53:36 2009 -0400 @@ -157,7 +157,7 @@ res->flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK; - if (res->flags == PCI_BASE_ADDRESS_MEM_TYPE_64) + if (res->flags & PCI_BASE_ADDRESS_MEM_TYPE_64) return pci_bar_mem64; return pci_bar_mem32; }