|
@@ -2294,9 +2294,11 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
|
|
|
|
|
|
err = -EIO;
|
|
|
- hw->hw_addr = pci_iomap(pdev, 0, 0);
|
|
|
- if (!hw->hw_addr)
|
|
|
+ adapter->io_addr = pci_iomap(pdev, 0, 0);
|
|
|
+ if (!adapter->io_addr)
|
|
|
goto err_ioremap;
|
|
|
+ /* hw->hw_addr can be altered, we'll use adapter->io_addr for unmap */
|
|
|
+ hw->hw_addr = adapter->io_addr;
|
|
|
|
|
|
netdev->netdev_ops = &igb_netdev_ops;
|
|
|
igb_set_ethtool_ops(netdev);
|
|
@@ -2656,7 +2658,7 @@ err_sw_init:
|
|
|
#ifdef CONFIG_PCI_IOV
|
|
|
igb_disable_sriov(pdev);
|
|
|
#endif
|
|
|
- pci_iounmap(pdev, hw->hw_addr);
|
|
|
+ pci_iounmap(pdev, adapter->io_addr);
|
|
|
err_ioremap:
|
|
|
free_netdev(netdev);
|
|
|
err_alloc_etherdev:
|
|
@@ -2823,7 +2825,7 @@ static void igb_remove(struct pci_dev *pdev)
|
|
|
|
|
|
igb_clear_interrupt_scheme(adapter);
|
|
|
|
|
|
- pci_iounmap(pdev, hw->hw_addr);
|
|
|
+ pci_iounmap(pdev, adapter->io_addr);
|
|
|
if (hw->flash_address)
|
|
|
iounmap(hw->flash_address);
|
|
|
pci_release_selected_regions(pdev,
|