All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] virtio net: spurious interrupt related fixes
@ 2021-05-26  8:24 ` Michael S. Tsirkin
  0 siblings, 0 replies; 49+ messages in thread
From: Michael S. Tsirkin @ 2021-05-26  8:24 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jakub Kicinski, Wei Wang, David Miller, netdev, Willem de Bruijn,
	virtualization


With the implementation of napi-tx in virtio driver, we clean tx
descriptors from rx napi handler, for the purpose of reducing tx
complete interrupts. But this introduces a race where tx complete
interrupt has been raised, but the handler finds there is no work to do
because we have done the work in the previous rx interrupt handler.
A similar issue exists with polling from start_xmit, it is however
less common because of the delayed cb optimization of the split ring -
but will likely affect the packed ring once that is more common.

In particular, this was reported to lead to the following warning msg:
[ 3588.010778] irq 38: nobody cared (try booting with the
"irqpoll" option)
[ 3588.017938] CPU: 4 PID: 0 Comm: swapper/4 Not tainted
5.3.0-19-generic #20~18.04.2-Ubuntu
[ 3588.017940] Call Trace:
[ 3588.017942]  <IRQ>
[ 3588.017951]  dump_stack+0x63/0x85
[ 3588.017953]  __report_bad_irq+0x35/0xc0
[ 3588.017955]  note_interrupt+0x24b/0x2a0
[ 3588.017956]  handle_irq_event_percpu+0x54/0x80
[ 3588.017957]  handle_irq_event+0x3b/0x60
[ 3588.017958]  handle_edge_irq+0x83/0x1a0
[ 3588.017961]  handle_irq+0x20/0x30
[ 3588.017964]  do_IRQ+0x50/0xe0
[ 3588.017966]  common_interrupt+0xf/0xf
[ 3588.017966]  </IRQ>
[ 3588.017989] handlers:
[ 3588.020374] [<000000001b9f1da8>] vring_interrupt
[ 3588.025099] Disabling IRQ #38

This patchset attempts to fix this by cleaning up a bunch of races
related to the handling of sq callbacks (aka tx interrupts).
Somewhat tested but I couldn't reproduce the original issues
reported, sending out for help with testing.

Wei, does this address the spurious interrupt issue you are
observing? Could you confirm please?

Thanks!

changes from v2:
	Fixed a race condition in start_xmit: enable_cb_delayed was
	done as an optimization (to push out event index for
	split ring) so we did not have to care about it
	returning false (recheck). Now that we actually disable the cb
	we have to do test the return value and do the actual recheck.


Michael S. Tsirkin (4):
  virtio_net: move tx vq operation under tx queue lock
  virtio_net: move txq wakeups under tx q lock
  virtio: fix up virtio_disable_cb
  virtio_net: disable cb aggressively

 drivers/net/virtio_net.c     | 49 ++++++++++++++++++++++++++++--------
 drivers/virtio/virtio_ring.c | 26 ++++++++++++++++++-
 2 files changed, 64 insertions(+), 11 deletions(-)

-- 
MST


^ permalink raw reply	[flat|nested] 49+ messages in thread

end of thread, other threads:[~2023-03-31  3:39 UTC | newest]

Thread overview: 49+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-26  8:24 [PATCH v3 0/4] virtio net: spurious interrupt related fixes Michael S. Tsirkin
2021-05-26  8:24 ` Michael S. Tsirkin
2021-05-26  8:24 ` [PATCH v3 1/4] virtio_net: move tx vq operation under tx queue lock Michael S. Tsirkin
2021-05-26  8:24   ` Michael S. Tsirkin
2021-05-27  3:41   ` Jason Wang
2021-05-27  3:41     ` Jason Wang
2021-05-28 22:25     ` Willem de Bruijn
2021-05-28 22:25       ` Willem de Bruijn
2021-06-09 22:03       ` Michael S. Tsirkin
2021-06-09 22:03         ` Michael S. Tsirkin
2021-05-26  8:24 ` [PATCH v3 2/4] virtio_net: move txq wakeups under tx q lock Michael S. Tsirkin
2021-05-26  8:24   ` Michael S. Tsirkin
2021-05-27  3:48   ` Jason Wang
2021-05-27  3:48     ` Jason Wang
2021-05-26  8:24 ` [PATCH v3 3/4] virtio: fix up virtio_disable_cb Michael S. Tsirkin
2021-05-26  8:24   ` Michael S. Tsirkin
2021-05-27  4:01   ` Jason Wang
2021-05-27  4:01     ` Jason Wang
2023-03-30  6:07   ` Xuan Zhuo
2023-03-30  6:07     ` Xuan Zhuo
2023-03-30  6:44     ` Michael S. Tsirkin
2023-03-30  6:44       ` Michael S. Tsirkin
2023-03-30  6:54       ` Xuan Zhuo
2023-03-30  6:54         ` Xuan Zhuo
2023-03-30 14:04         ` Michael S. Tsirkin
2023-03-30 14:04           ` Michael S. Tsirkin
2023-03-31  3:38           ` Xuan Zhuo
2023-03-31  3:38             ` Xuan Zhuo
2021-05-26  8:24 ` [PATCH v3 4/4] virtio_net: disable cb aggressively Michael S. Tsirkin
2021-05-26  8:24   ` Michael S. Tsirkin
2021-05-26 15:15   ` Eric Dumazet
2021-05-26 15:15     ` Eric Dumazet
2021-05-26 21:22     ` Willem de Bruijn
2021-05-26 21:22       ` Willem de Bruijn
2021-05-26 19:39   ` Jakub Kicinski
2021-05-27  4:09   ` Jason Wang
2021-05-27  4:09     ` Jason Wang
2023-01-16 13:41   ` Laurent Vivier
2023-01-16 13:41     ` Laurent Vivier
2023-01-17  3:48     ` Jason Wang
2023-01-17  3:48       ` Jason Wang
2021-05-26 15:34 ` [PATCH v3 0/4] virtio net: spurious interrupt related fixes Willem de Bruijn
2021-05-26 15:34   ` Willem de Bruijn
2021-06-01  2:53   ` Willem de Bruijn
2021-06-01  2:53     ` Willem de Bruijn
2021-06-09 21:36     ` Willem de Bruijn
2021-06-09 21:36       ` Willem de Bruijn
2021-06-09 22:59       ` Willem de Bruijn
2021-06-09 22:59         ` Willem de Bruijn

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.