vfio/pci: Virtualize PME related registers bits and initialize to zero
authorAbhishek Sahu <abhsahu@nvidia.com>
Wed, 18 May 2022 11:16:11 +0000 (16:46 +0530)
committerAlex Williamson <alex.williamson@redhat.com>
Wed, 18 May 2022 16:00:48 +0000 (10:00 -0600)
commit54918c28740109e4ef4feca22d38e5fe41712b1a
treed7cd7e293d2570380f2fcb5a582e5ba011129044
parentf4162eb1e2fc9b423dfb8f3a7b2b55a337efcc60
vfio/pci: Virtualize PME related registers bits and initialize to zero

If any PME event will be generated by PCI, then it will be mostly
handled in the host by the root port PME code. For example, in the case
of PCIe, the PME event will be sent to the root port and then the PME
interrupt will be generated. This will be handled in
drivers/pci/pcie/pme.c at the host side. Inside this, the
pci_check_pme_status() will be called where PME_Status and PME_En bits
will be cleared. So, the guest OS which is using vfio-pci device will
not come to know about this PME event.

To handle these PME events inside guests, we need some framework so
that if any PME events will happen, then it needs to be forwarded to
virtual machine monitor. We can virtualize PME related registers bits
and initialize these bits to zero so vfio-pci device user will assume
that it is not capable of asserting the PME# signal from any power state.

Signed-off-by: Abhishek Sahu <abhsahu@nvidia.com>
Link: https://lore.kernel.org/r/20220518111612.16985-4-abhsahu@nvidia.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/vfio_pci_config.c