|
@@ -2853,6 +2853,11 @@ static void ena_release_bars(struct ena_com_dev *ena_dev, struct pci_dev *pdev)
|
|
{
|
|
{
|
|
int release_bars;
|
|
int release_bars;
|
|
|
|
|
|
|
|
+ if (ena_dev->mem_bar)
|
|
|
|
+ devm_iounmap(&pdev->dev, ena_dev->mem_bar);
|
|
|
|
+
|
|
|
|
+ devm_iounmap(&pdev->dev, ena_dev->reg_bar);
|
|
|
|
+
|
|
release_bars = pci_select_bars(pdev, IORESOURCE_MEM) & ENA_BAR_MASK;
|
|
release_bars = pci_select_bars(pdev, IORESOURCE_MEM) & ENA_BAR_MASK;
|
|
pci_release_selected_regions(pdev, release_bars);
|
|
pci_release_selected_regions(pdev, release_bars);
|
|
}
|
|
}
|
|
@@ -2940,8 +2945,9 @@ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
goto err_free_ena_dev;
|
|
goto err_free_ena_dev;
|
|
}
|
|
}
|
|
|
|
|
|
- ena_dev->reg_bar = ioremap(pci_resource_start(pdev, ENA_REG_BAR),
|
|
|
|
- pci_resource_len(pdev, ENA_REG_BAR));
|
|
|
|
|
|
+ ena_dev->reg_bar = devm_ioremap(&pdev->dev,
|
|
|
|
+ pci_resource_start(pdev, ENA_REG_BAR),
|
|
|
|
+ pci_resource_len(pdev, ENA_REG_BAR));
|
|
if (!ena_dev->reg_bar) {
|
|
if (!ena_dev->reg_bar) {
|
|
dev_err(&pdev->dev, "failed to remap regs bar\n");
|
|
dev_err(&pdev->dev, "failed to remap regs bar\n");
|
|
rc = -EFAULT;
|
|
rc = -EFAULT;
|
|
@@ -2961,8 +2967,9 @@ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
ena_set_push_mode(pdev, ena_dev, &get_feat_ctx);
|
|
ena_set_push_mode(pdev, ena_dev, &get_feat_ctx);
|
|
|
|
|
|
if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) {
|
|
if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) {
|
|
- ena_dev->mem_bar = ioremap_wc(pci_resource_start(pdev, ENA_MEM_BAR),
|
|
|
|
- pci_resource_len(pdev, ENA_MEM_BAR));
|
|
|
|
|
|
+ ena_dev->mem_bar = devm_ioremap_wc(&pdev->dev,
|
|
|
|
+ pci_resource_start(pdev, ENA_MEM_BAR),
|
|
|
|
+ pci_resource_len(pdev, ENA_MEM_BAR));
|
|
if (!ena_dev->mem_bar) {
|
|
if (!ena_dev->mem_bar) {
|
|
rc = -EFAULT;
|
|
rc = -EFAULT;
|
|
goto err_device_destroy;
|
|
goto err_device_destroy;
|