)]}'
{
  "commit": "cac2c363c41c12ec9ea1caefdf90f99607a531aa",
  "tree": "81b1021c873444654896a7b850fe2e3cb5150f61",
  "parents": [
    "7470a7a63dc162f07c26dbf960e41ee1e248d80e",
    "a0c159647e6627496a85e57ca81f8cd6c685564b"
  ],
  "author": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Sat Jan 10 11:13:03 2026 -0800"
  },
  "committer": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Sat Jan 10 11:13:03 2026 -0800"
  },
  "message": "Merge branch \u0027virtio-net-fix-the-deadlock-when-disabling-rx-napi\u0027\n\nBui Quang Minh says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nvirtio-net: fix the deadlock when disabling rx NAPI\n\nCalling napi_disable() on an already disabled napi can cause the\ndeadlock. In commit 4bc12818b363 (\"virtio-net: disable delayed refill\nwhen pausing rx\"), to avoid the deadlock, when pausing the RX in\nvirtnet_rx_pause[_all](), we disable and cancel the delayed refill work.\nHowever, in the virtnet_rx_resume_all(), we enable the delayed refill\nwork too early before enabling all the receive queue napis.\n\nThe deadlock can be reproduced by running\nselftests/drivers/net/hw/xsk_reconfig.py with multiqueue virtio-net\ndevice and inserting a cond_resched() inside the for loop in\nvirtnet_rx_resume_all() to increase the success rate. Because the worker\nprocessing the delayed refilled work runs on the same CPU as\nvirtnet_rx_resume_all(), a reschedule is needed to cause the deadlock.\nIn real scenario, the contention on netdev_lock can cause the\nreschedule.\n\nDue to the complexity of delayed refill worker, in this series, we remove\nit. When we fail to refill the receive buffer, we will retry in the next\nNAPI poll instead.\n\n- Patch 1: removes delayed refill worker schedule and retry refill\n  in next NAPI\n- Patch 2, 3: removes and clean up unused delayed refill worker code\n\nFor testing, I\u0027ve run the following tests with no issue so far\n- selftests/drivers/net/hw/xsk_reconfig.py which sets up the XDP zerocopy\n   without providing any descriptors to the fill ring. As a result,\n   try_fill_recv will always fail.\n- Send TCP packets from host to guest while guest is nearly OOM and some\n  try_fill_recv calls fail.\n\nv2: https://lore.kernel.org/20260102152023.10773-1-minhquangbui99@gmail.com\nv1: https://lore.kernel.org/20251223152533.24364-1-minhquangbui99@gmail.com\n\nLink to the previous approach and discussion:\nhttps://lore.kernel.org/20251212152741.11656-1-minhquangbui99@gmail.com\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nLink: https://patch.msgid.link/20260106150438.7425-1-minhquangbui99@gmail.com\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\n",
  "tree_diff": []
}
