一個 PCI 可用多個不同的方法被從系統中去除. 所有的 card-bus 設備在一個不同的物 理因素上是真正的 PCI 設備, 並且內核 PCI 核心不區分它們. 允許在機器運行時加減 PCI 設備的系統正變得更加普遍, 並且 Linux 支持它們. 還有一個偽 PCI 熱插拔驅動允 許開發者來測試看是否他們的 PCI 驅動正確處理系統運行中的設備去除. 這個模塊稱為 fakephp 並且使內核認為 PCI 設備已消失, 但是它不允許用戶物理上從系統中去除一個 PCI 設備, 這個系統沒有合適的硬件來這樣做. 見這個驅動的文檔來獲取更多關於如何使 用它測試你的 PCI 驅動的信息.
PCI 核心發揮了不少於它增加設備的努力到去除它. 當一個 PCI 設備要被去除, pci_remove_bus_device 函數被調用. 這個函數做一些 PCI-特定 的清理和日常工作, 並 且接着使用一個指向 struct pci_dev 的 struct device 成員的指針調用 device_unregister 函數.
在 device_unregister 函數中, 驅動核心只從綁定到這個設備(如果有)的驅動解除連接 sysfs 文件, 從它的內部設備列表中去除這個設備, 並且使用指向包含在 struct device 結構中的 struct kobject 的指針調用 kobject_del. 這個函數用一個 hotplug 調用到 用戶空間來聲明 kobject 現在被從系統中去除, 並且接着它刪除所有的和 kobject 關聯 的 sysfs 文件以及這個 kobject 起初已創建的 sysfs 目錄自身.
kobject_del 函數也去除設備自身的 kobject 引用. 如果那個引用是最后一個( 意味着 沒有用戶空間文件為這個 sysfs 的設備入口而打開 ), 接着是 PCI 設備自身的 release 函數, pci_release_dev, 被調用. 這個函數只釋放 struct pci_dev 占用的內存.
此后, 所有的和這個設備關聯的 sysfs 入口被去除, 並且和這個設備關聯的內存被釋放. PCI 設備現在完全從系統中被去除.