b44_free_rings(bp);
 
        spin_unlock_irq(&bp->lock);
+       pci_disable_device(pdev);
        return 0;
 }
 
        struct b44 *bp = netdev_priv(dev);
 
        pci_restore_state(pdev);
+       pci_enable_device(pdev);
+       pci_set_master(pdev);
 
        if (!netif_running(dev))
                return 0;
 
 
        netif_device_detach(dev);
        pci_save_state(pdev);
+       pci_disable_device(pdev);
        pci_set_power_state(pdev, pci_choose_state(pdev, state));
 
        return 0;
 
        pci_set_power_state(pdev, 0);
        pci_restore_state(pdev);
+       pci_enable_device(pdev);
+       pci_set_master(pdev);
        NS8390_init(dev, 1);
        netif_device_attach(dev);
 
 
                pci_save_state(dev);
                pci_read_config_dword(dev, 16*4, &socket->saved_state[0]);
                pci_read_config_dword(dev, 17*4, &socket->saved_state[1]);
+               pci_disable_device(dev);
 
                /*
                 * Some laptops (IBM T22) do not like us putting the Cardbus
                pci_restore_state(dev);
                pci_write_config_dword(dev, 16*4, socket->saved_state[0]);
                pci_write_config_dword(dev, 17*4, socket->saved_state[1]);
+               pci_enable_device(dev);
+               pci_set_master(dev);
 
                if (socket->type && socket->type->restore_state)
                        socket->type->restore_state(socket);