virtio-pci: implement No_Soft_Reset bit
authorJiqian Chen <Jiqian.Chen@amd.com>
Thu, 6 Jun 2024 10:22:05 +0000 (18:22 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 1 Jul 2024 21:16:05 +0000 (17:16 -0400)
commit5d98e18823af6d5230fca8098a7ee966aaedeb29
treea658408abfc2f3110a63ac39e1ef70479c71d7db
parente6c9c9e7f46a9ecaf1d90a68595915d65cd9d72d
virtio-pci: implement No_Soft_Reset bit

In current code, when guest does S3, virtio-gpu are reset due to the
bit No_Soft_Reset is not set. After resetting, the display resources
of virtio-gpu are destroyed, then the display can't come back and only
show blank after resuming.

Implement No_Soft_Reset bit of PCI_PM_CTRL register, then guest can check
this bit, if this bit is set, the devices resetting will not be done, and
then the display can work after resuming.

No_Soft_Reset bit is implemented for all virtio devices, and was tested
only on virtio-gpu device. Set it false by default for safety.

Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
Message-Id: <20240606102205.114671-3-Jiqian.Chen@amd.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/core/machine.c
hw/virtio/virtio-pci.c
include/hw/virtio/virtio-pci.h