Hi All: This is a rework on the IRQ hardening for virtio which is done previously by the following commits are reverted: 9e35276a5344 ("virtio_pci: harden MSI-X interrupts") 080cd7c3ac87 ("virtio-pci: harden INTX interrupts") The reason is that it depends on the IRQF_NO_AUTOEN which may conflict with the assumption of the affinity managed IRQ that is used by some virtio drivers. And what's more, it is only done for virtio-pci but not other transports. In this rework, I try to implement a general virtio solution which borrows the idea of the INTX hardening by introducing a boolean for virtqueue callback enabling and toggle it in virtio_device_ready() and virtio_reset_device(). Then vring_interrupt() can simply check and return early if the driver is not ready. To unbreak legacy setups that may generate IRQ before DRIVER_OK, a module parameter is introduced to disable the hardening by default. The features can then be turned on the setups that the hardening is needed (e.g the confidential computing and other cases). Please review. Thanks Jason Wang (2): virtio: use virtio_reset_device() when possible virtio: harden vring IRQ Stefano Garzarella (1): virtio: use virtio_device_ready() in virtio_device_restore() drivers/virtio/virtio.c | 28 ++++++++++++++++++++++++---- drivers/virtio/virtio_ring.c | 9 ++++++++- include/linux/virtio.h | 4 ++++ include/linux/virtio_config.h | 25 +++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 5 deletions(-) -- 2.25.1 _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization