Eric Auger
2022-Nov-07 20:34 UTC
[RFC] vhost: Clear the pending messages on vhost_init_device_iotlb()
When the vhost iotlb is used along with a guest virtual iommu and the guest gets rebooted, some MISS messages may have been recorded just before the reboot and spuriously executed by the virtual iommu after the reboot. Despite the device iotlb gets re-initialized, the messages are not cleared. Fix that by calling vhost_clear_msg() at the end of vhost_init_device_iotlb(). Signed-off-by: Eric Auger <eric.auger at redhat.com> --- drivers/vhost/vhost.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 40097826cff0..422a1fdee0ca 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -1751,6 +1751,7 @@ int vhost_init_device_iotlb(struct vhost_dev *d, bool enabled) } vhost_iotlb_free(oiotlb); + vhost_clear_msg(d); return 0; } -- 2.37.3
Michael S. Tsirkin
2022-Nov-07 20:42 UTC
[RFC] vhost: Clear the pending messages on vhost_init_device_iotlb()
On Mon, Nov 07, 2022 at 09:34:31PM +0100, Eric Auger wrote:> When the vhost iotlb is used along with a guest virtual iommu > and the guest gets rebooted, some MISS messages may have been > recorded just before the reboot and spuriously executed by > the virtual iommu after the reboot. Despite the device iotlb gets > re-initialized, the messages are not cleared. Fix that by calling > vhost_clear_msg() at the end of vhost_init_device_iotlb(). > > Signed-off-by: Eric Auger <eric.auger at redhat.com> > --- > drivers/vhost/vhost.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > index 40097826cff0..422a1fdee0ca 100644 > --- a/drivers/vhost/vhost.c > +++ b/drivers/vhost/vhost.c > @@ -1751,6 +1751,7 @@ int vhost_init_device_iotlb(struct vhost_dev *d, bool enabled) > } > > vhost_iotlb_free(oiotlb); > + vhost_clear_msg(d); > > return 0; > }Hmm. Can't messages meanwhile get processes and affect the new iotlb?> -- > 2.37.3