i3c: master: handle IBIs in order they came
authorZbigniew Lukwinski <zbigniew.lukwinski@linux.intel.com>
Sun, 15 Oct 2023 22:23:34 +0000 (00:23 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Fri, 3 Nov 2023 23:44:32 +0000 (00:44 +0100)
commit9fd00df05e81a2e1080ce6e9abc35533dca99d74
tree5f67bd33063ebde441686d222941b4267d0c0c29
parentb53e9758a31c683fc8615df930262192ed5f034b
i3c: master: handle IBIs in order they came

IBI shall be handled in order they appear on the bus. Otherwise could hit
case when order of handling them in device driver will be different. It may
lead to invalid assembling fragmented packets or events order broken.

Added separate workqueue with option WQ_MEM_RECLAIM for each device driver.
This ensures IBI handling order and improves IBI handling performance: IBI
handlers for device B are not blocked by IBI handlers for device A.

Original solution (single workqueue in main driver) was able to handle also
general IBI (not related to specific device) like HJ or MR. So leaving this
for such purposes.

Signed-off-by: Zbigniew Lukwinski <zbigniew.lukwinski@linux.intel.com>
Link: https://lore.kernel.org/r/20231015222334.1652401-2-zbigniew.lukwinski@linux.intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master.c
include/linux/i3c/master.h