Re: [PATCH][RFC] PCI: Add "pci=blacklist_dev=" parameter to blacklist specific devices

From: Matthew Wilcox
Date: Fri Jan 24 2020 - 14:27:49 EST


On Fri, Jan 24, 2020 at 10:42:48PM +0800, Chen Yu wrote:
> It was found that on some platforms the bogus pci device might bring
> troubles to the system. For example, on a MacBookPro the system could
> not be power off or suspended due to internal pci resource confliction
> between bogus pci device and [io 0x1804]. Another case is that, once
> resumed from hibernation on a VM, the pci config space of a pci device
> is corrupt.
>
> To narrow down and benefit future debugging for such kind of issues,
> introduce the command line blacklist_dev=<vendor:device_id>> to blacklist
> such pci devices thus they will not be scanned thus not visible after
> bootup. For example,
>
> pci.blacklist_dev=8086:293e
>
> forbid the audio device to be exposed to the OS.

This feels really unsafe to me. Just because Linux ignores the device
doesn't mean the device will ignore I/O requests. I think we should
call this pci.disable_dev and clear the device's I/O Space Enable,
Memory Space Enable and Bus Master Enable bits (in the Command register,
config space offset 4).