)]}'
{
  "commit": "c3bca491e5fee897a7d6e399334dfb84527adc94",
  "tree": "527cda51d5255fc5869b81de70e831fa9f1b3ba8",
  "parents": [
    "e5acdfd338b7e60b9390a32fc03374c1daae218c"
  ],
  "author": {
    "name": "Michael Gur",
    "email": "michaelgur@nvidia.com",
    "time": "Tue Jul 07 11:37:50 2026 +0300"
  },
  "committer": {
    "name": "Nicolas Morey",
    "email": "nmorey@suse.com",
    "time": "Wed Aug 12 08:45:07 2026 +0200"
  },
  "message": "mlx5: Fix clock update EBUSY error flow\n\n[ Upstream commit 0819419e791dd9cf9e145353fd97a09c43632f9f ]\n\nmlx5dv_get_clock_info() reads clock data published by the kernel, and is\ninherently racy with kernel clock updates. This race cannot be\neliminated; EBUSY will always be possible at some rate when wallclock\ntimestamping is used with extended CQ polling.\n\nAdd documentation for the EBUSY errno so callers know the expected\nbehavior: EBUSY indicates a CQE is available but the wallclock read\nfailed. Callers are expected to retry polling the CQ. Providers must not\nconsume the CQE on EBUSY and must leave the CQ in a valid state for the\nnext poll attempt.\n\nPrior to this fix, the error was returned after the CQE was parsed, the\nconsumer index incremented, and WQ/SRQ modified. This left the CQ in an\ninconsistent state: the CQE was silently lost and the CQ doorbell was\nnever updated, making recovery impossible regardless of retries.\n\nFix by moving the clock update before CQE parsing. At that point only\nthe consumer index has been advanced, so on failure it can be safely\nreverted and EBUSY returned with the CQ intact.\n\nSince EBUSY was previously undocumented and the error path was broken,\nno existing user could have relied on this behavior. This fix is\ntherefore not a behavior change in practice.\n\nFixes: 4745c8079a86 (\"mlx5: Implement read_completion_wallclock_ns\")\nSigned-off-by: Michael Gur \u003cmichaelgur@nvidia.com\u003e\nSigned-off-by: Yishai Hadas \u003cyishaih@nvidia.com\u003e\nSigned-off-by: Nicolas Morey \u003cnmorey@suse.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3949793be38b2c4a46febf469a99fc656b68b5a9",
      "old_mode": 33188,
      "old_path": "libibverbs/man/ibv_create_cq_ex.3",
      "new_id": "f0ea47bf661b6d88944b7498e853e6f19d7ec15d",
      "new_mode": 33188,
      "new_path": "libibverbs/man/ibv_create_cq_ex.3"
    },
    {
      "type": "modify",
      "old_id": "5b37f4249d758b07f319bdc246cb7e4efb5ddc8a",
      "old_mode": 33188,
      "old_path": "providers/mlx5/cq.c",
      "new_id": "40856213d1b6fc26cd71ff10ec7f0ad2439f7fff",
      "new_mode": 33188,
      "new_path": "providers/mlx5/cq.c"
    }
  ]
}
