Browse Source

igb: Support ports mapped in 64-bit PCI space

This patch resolves an issue with 64-bit PCI addresses being truncated
because the return values of pci_resource_start() and pci_resource_end()
were being cast to unsigned long.

Signed-off-by: Aaron Sierra <asierra@xes-inc.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Aaron Sierra 11 years ago
parent
commit
89dbefb213
1 changed files with 3 additions and 7 deletions
  1. 3 7
      drivers/net/ethernet/intel/igb/igb_main.c

+ 3 - 7
drivers/net/ethernet/intel/igb/igb_main.c

@@ -2022,7 +2022,6 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	s32 ret_val;
 	s32 ret_val;
 	static int global_quad_port_a; /* global quad port a indication */
 	static int global_quad_port_a; /* global quad port a indication */
 	const struct e1000_info *ei = igb_info_tbl[ent->driver_data];
 	const struct e1000_info *ei = igb_info_tbl[ent->driver_data];
-	unsigned long mmio_start, mmio_len;
 	int err, pci_using_dac;
 	int err, pci_using_dac;
 	u8 part_str[E1000_PBANUM_LENGTH];
 	u8 part_str[E1000_PBANUM_LENGTH];
 
 
@@ -2079,11 +2078,8 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	hw->back = adapter;
 	hw->back = adapter;
 	adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
 	adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
 
 
-	mmio_start = pci_resource_start(pdev, 0);
-	mmio_len = pci_resource_len(pdev, 0);
-
 	err = -EIO;
 	err = -EIO;
-	hw->hw_addr = ioremap(mmio_start, mmio_len);
+	hw->hw_addr = pci_iomap(pdev, 0, 0);
 	if (!hw->hw_addr)
 	if (!hw->hw_addr)
 		goto err_ioremap;
 		goto err_ioremap;
 
 
@@ -2093,8 +2089,8 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 
 	strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
 	strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
 
 
-	netdev->mem_start = mmio_start;
-	netdev->mem_end = mmio_start + mmio_len;
+	netdev->mem_start = pci_resource_start(pdev, 0);
+	netdev->mem_end = pci_resource_end(pdev, 0);
 
 
 	/* PCI config space info */
 	/* PCI config space info */
 	hw->vendor_id = pdev->vendor;
 	hw->vendor_id = pdev->vendor;