habanalabs: use single threaded WQ for event handling
authorDani Liberman <dliberman@habana.ai>
Thu, 27 Oct 2022 17:38:26 +0000 (20:38 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Wed, 23 Nov 2022 14:13:46 +0000 (16:13 +0200)
Creating event queue workqueue using alloc_workqueue made it run in
multi threaded mode, which caused parallel dumping of events as well as
parallel events notifying to user, causing logs with multiple
events to be out of order.

Fixed by creating event queue workqueue as single threaded work queue.

Signed-off-by: Dani Liberman <dliberman@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/misc/habanalabs/common/device.c

index d1a6095895584ae0e895f1dc9b553c9493014d75..65bb40f81901eac9019de76ad7a3d2292dfedd9e 100644 (file)
@@ -787,7 +787,7 @@ static int device_early_init(struct hl_device *hdev)
                }
        }
 
-       hdev->eq_wq = alloc_workqueue("hl-events", WQ_UNBOUND, 0);
+       hdev->eq_wq = create_singlethread_workqueue("hl-events");
        if (hdev->eq_wq == NULL) {
                dev_err(hdev->dev, "Failed to allocate EQ workqueue\n");
                rc = -ENOMEM;