On Thu, Mar 28, 2024 at 3:16 AM Christian Loehle
[off-list ref] wrote:
On 27/03/2024 16:03, Allen Pais wrote:
quoted
The only generic interface to execute asynchronously in the BH context is
tasklet; however, it's marked deprecated and has some design flaws. To
replace tasklets, BH workqueue support was recently added. A BH workqueue
behaves similarly to regular workqueues except that the queued work items
are executed in the BH context.
This patch converts drivers/infiniband/* from tasklet to BH workqueue.
s/infiniband/mmc
Will fix it in v2.
quoted
Based on the work done by Tejun Heo [off-list ref]
Branch: https://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-6.10
Signed-off-by: Allen Pais <redacted>
---
drivers/mmc/host/atmel-mci.c | 35 ++++-----
drivers/mmc/host/au1xmmc.c | 37 ++++-----
drivers/mmc/host/cb710-mmc.c | 15 ++--
drivers/mmc/host/cb710-mmc.h | 3 +-
drivers/mmc/host/dw_mmc.c | 25 ++++---
drivers/mmc/host/dw_mmc.h | 9 ++-
For dw_mmc:
Performance numbers look good FWIW.
for i in $(seq 0 5); do echo performance > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor; done
for i in $(seq 0 4); do fio --name=test --rw=randread --bs=4k --runtime=30 --time_based --filename=/dev/mmcblk1 --minimal --numjobs=6 --iodepth=32 --group_reporting | awk -F ";" '{print $8}'; sleep 30; done
Baseline:
1758
1773
1619
1835
1639
to:
1743
1643
1860
1638
1872
(I'd call that equivalent).
This is on a RK3399.
I would prefer most of the naming to change from "work" to "workqueue" in the driver
code.
Apart from that:
Reviewed-by: Christian Loehle <christian.loehle@arm.com>
Tested-by: Christian Loehle <christian.loehle@arm.com>
Thank you very much for testing and the review. Will have your
concerns addressed in v2.
- Allen