6.4.y: Rebase prjc against 6.4.8 rtmutex changes
Fixes https://github.com/Frogging-Family/linux-tkg/issues/785
This commit is contained in:
@@ -559,23 +559,26 @@ diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
|
|||||||
index 728f434de2bb..0e1082a4e878 100644
|
index 728f434de2bb..0e1082a4e878 100644
|
||||||
--- a/kernel/locking/rtmutex.c
|
--- a/kernel/locking/rtmutex.c
|
||||||
+++ b/kernel/locking/rtmutex.c
|
+++ b/kernel/locking/rtmutex.c
|
||||||
@@ -337,21 +337,25 @@ static __always_inline void
|
@@ -343,7 +343,7 @@ waiter_update_prio(struct rt_mutex_waite
|
||||||
waiter_update_prio(struct rt_mutex_waiter *waiter, struct task_struct *task)
|
lockdep_assert(RB_EMPTY_NODE(&waiter->tree.entry));
|
||||||
{
|
|
||||||
waiter->prio = __waiter_prio(task);
|
waiter->tree.prio = __waiter_prio(task);
|
||||||
- waiter->deadline = task->dl.deadline;
|
- waiter->tree.deadline = task->dl.deadline;
|
||||||
+ waiter->deadline = __tsk_deadline(task);
|
+ waiter->tree.deadline = __tsk_deadline(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Only use with rt_mutex_waiter_{less,equal}()
|
@@ -364,16 +364,20 @@ waiter_clone_prio(struct rt_mutex_waiter
|
||||||
|
* Only use with rt_waiter_node_{less,equal}()
|
||||||
*/
|
*/
|
||||||
|
#define task_to_waiter_node(p) \
|
||||||
|
- &(struct rt_waiter_node){ .prio = __waiter_prio(p), .deadline = (p)->dl.deadline }
|
||||||
|
+ &(struct rt_waiter_node){ .prio = __waiter_prio(p), .deadline = __tsk_deadline(p) }
|
||||||
#define task_to_waiter(p) \
|
#define task_to_waiter(p) \
|
||||||
- &(struct rt_mutex_waiter){ .prio = __waiter_prio(p), .deadline = (p)->dl.deadline }
|
&(struct rt_mutex_waiter){ .tree = *task_to_waiter_node(p) }
|
||||||
+ &(struct rt_mutex_waiter){ .prio = __waiter_prio(p), .deadline = __tsk_deadline(p) }
|
|
||||||
|
|
||||||
static __always_inline int rt_mutex_waiter_less(struct rt_mutex_waiter *left,
|
static __always_inline int rt_waiter_node_less(struct rt_waiter_node *left,
|
||||||
struct rt_mutex_waiter *right)
|
struct rt_waiter_node *right)
|
||||||
{
|
{
|
||||||
+#ifdef CONFIG_SCHED_PDS
|
+#ifdef CONFIG_SCHED_PDS
|
||||||
+ return (left->deadline < right->deadline);
|
+ return (left->deadline < right->deadline);
|
||||||
@@ -587,7 +590,7 @@ index 728f434de2bb..0e1082a4e878 100644
|
|||||||
/*
|
/*
|
||||||
* If both waiters have dl_prio(), we check the deadlines of the
|
* If both waiters have dl_prio(), we check the deadlines of the
|
||||||
* associated tasks.
|
* associated tasks.
|
||||||
@@ -360,16 +364,22 @@ static __always_inline int rt_mutex_waiter_less(struct rt_mutex_waiter *left,
|
@@ -382,16 +386,22 @@ static __always_inline int rt_waiter_nod
|
||||||
*/
|
*/
|
||||||
if (dl_prio(left->prio))
|
if (dl_prio(left->prio))
|
||||||
return dl_time_before(left->deadline, right->deadline);
|
return dl_time_before(left->deadline, right->deadline);
|
||||||
@@ -597,8 +600,8 @@ index 728f434de2bb..0e1082a4e878 100644
|
|||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static __always_inline int rt_mutex_waiter_equal(struct rt_mutex_waiter *left,
|
static __always_inline int rt_waiter_node_equal(struct rt_waiter_node *left,
|
||||||
struct rt_mutex_waiter *right)
|
struct rt_waiter_node *right)
|
||||||
{
|
{
|
||||||
+#ifdef CONFIG_SCHED_PDS
|
+#ifdef CONFIG_SCHED_PDS
|
||||||
+ return (left->deadline == right->deadline);
|
+ return (left->deadline == right->deadline);
|
||||||
@@ -610,7 +613,7 @@ index 728f434de2bb..0e1082a4e878 100644
|
|||||||
/*
|
/*
|
||||||
* If both waiters have dl_prio(), we check the deadlines of the
|
* If both waiters have dl_prio(), we check the deadlines of the
|
||||||
* associated tasks.
|
* associated tasks.
|
||||||
@@ -378,8 +388,10 @@ static __always_inline int rt_mutex_waiter_equal(struct rt_mutex_waiter *left,
|
@@ -400,8 +410,10 @@ static __always_inline int rt_waiter_nod
|
||||||
*/
|
*/
|
||||||
if (dl_prio(left->prio))
|
if (dl_prio(left->prio))
|
||||||
return left->deadline == right->deadline;
|
return left->deadline == right->deadline;
|
||||||
|
Reference in New Issue
Block a user