kernel/locking/rwsem-xadd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
From: Zhaoyang Huang <zhaoyang.huang@unisoc.com>
With regard to rtlinux, releasing the lock to RT waiter could be helpful to
increase its responding time even if cfs writer listed at the head of the
wait_list.
Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com>
---
kernel/locking/rwsem-xadd.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/kernel/locking/rwsem-xadd.c b/kernel/locking/rwsem-xadd.c
index e795908..1b3f836 100644
--- a/kernel/locking/rwsem-xadd.c
+++ b/kernel/locking/rwsem-xadd.c
@@ -138,6 +138,18 @@ static void __rwsem_mark_wake(struct rw_semaphore *sem,
waiter = list_first_entry(&sem->wait_list, struct rwsem_waiter, list);
if (waiter->type == RWSEM_WAITING_FOR_WRITE) {
+ if ((waiter->task->policy != SCHED_NORMAL)
+ &&(waiter->task->policy != SCHED_BATCH))
+ ;
+ else {
+ list_for_each_entry(tmp, sem->wait_list.next, list) {
+ if ((tmp->task->policy != SCHED_NORMAL)
+ &&(tmp->task->policy != SCHED_BATCH)) {
+ wake_q_add(wake_q, tmp->task);
+ return;
+ }
+ }
+ }
if (wake_type == RWSEM_WAKE_ANY) {
/*
* Mark writer at the front of the queue for wakeup.
--
1.9.1
On 2022-05-11 16:21:21 [+0800], zhaoyang.huang wrote: > From: Zhaoyang Huang <zhaoyang.huang@unisoc.com> > > With regard to rtlinux, releasing the lock to RT waiter could be helpful to > increase its responding time even if cfs writer listed at the head of the > wait_list. This does not apply to current kernel (v5.18-rc6). If you need want to apply some thing to an older kernel, I suggest a backport and reasoning why this backport is needed. So first you need address the issue, that you are facing, in the current development kernel. Also it would be good to know if "rtlinux" is PREEMPT_RT or something else. The latter uses a different mechanism. > Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com> Sebastian
© 2016 - 2026 Red Hat, Inc.