void __iomem *base;
        int ret;
 
-       ret = pci_enable_device(pdev);
+       ret = pcim_enable_device(pdev);
        if (ret < 0)
                return ret;
 
-       base = pci_iomap(pdev, 0, 0);
+       base = pcim_iomap(pdev, 0, 0);
        if (!base)
                return -ENOMEM;
 
-       pi = kmalloc(sizeof(*pi), GFP_ATOMIC);
+       pi = devm_kmalloc(&pdev->dev, sizeof(*pi), GFP_ATOMIC);
        if (!pi)
                return -ENOMEM;
 
        struct pvpanic_instance *pi = dev_get_drvdata(&pdev->dev);
 
        pvpanic_remove(pi);
-       iounmap(pi->base);
-       kfree(pi);
-       pci_disable_device(pdev);
 }
 
 static struct pci_driver pvpanic_pci_driver = {