* FAILED: patch "[PATCH] epoll: Add synchronous wakeup support for ep_poll_callback" failed to apply to 5.4-stable tree
@ 2024-12-23 12:44 gregkh
2024-12-26 8:35 ` [PATCH 5.4.y] epoll: Add synchronous wakeup support for ep_poll_callback Wenshan Lan
2024-12-26 11:14 ` [PATCH 5.4.y v2] " Wenshan Lan
0 siblings, 2 replies; 6+ messages in thread
From: gregkh @ 2024-12-23 12:44 UTC (permalink / raw)
To: xuewen.yan, bgeffon, brauner, jing.xia, lizeb; +Cc: stable
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.4.y
git checkout FETCH_HEAD
git cherry-pick -x 900bbaae67e980945dec74d36f8afe0de7556d5a
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable@vger.kernel.org>' --in-reply-to '2024122326-viscous-dreaded-d15d@gregkh' --subject-prefix 'PATCH 5.4.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 900bbaae67e980945dec74d36f8afe0de7556d5a Mon Sep 17 00:00:00 2001
From: Xuewen Yan <xuewen.yan@unisoc.com>
Date: Fri, 26 Apr 2024 16:05:48 +0800
Subject: [PATCH] epoll: Add synchronous wakeup support for ep_poll_callback
Now, the epoll only use wake_up() interface to wake up task.
However, sometimes, there are epoll users which want to use
the synchronous wakeup flag to hint the scheduler, such as
Android binder driver.
So add a wake_up_sync() define, and use the wake_up_sync()
when the sync is true in ep_poll_callback().
Co-developed-by: Jing Xia <jing.xia@unisoc.com>
Signed-off-by: Jing Xia <jing.xia@unisoc.com>
Signed-off-by: Xuewen Yan <xuewen.yan@unisoc.com>
Link: https://lore.kernel.org/r/20240426080548.8203-1-xuewen.yan@unisoc.com
Tested-by: Brian Geffon <bgeffon@google.com>
Reviewed-by: Brian Geffon <bgeffon@google.com>
Reported-by: Benoit Lize <lizeb@google.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index 90fbab6b6f03..1a06e462b6ef 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -1373,7 +1373,10 @@ static int ep_poll_callback(wait_queue_entry_t *wait, unsigned mode, int sync, v
break;
}
}
- wake_up(&ep->wq);
+ if (sync)
+ wake_up_sync(&ep->wq);
+ else
+ wake_up(&ep->wq);
}
if (waitqueue_active(&ep->poll_wait))
pwake++;
diff --git a/include/linux/wait.h b/include/linux/wait.h
index 8aa3372f21a0..2b322a9b88a2 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -221,6 +221,7 @@ void __wake_up_pollfree(struct wait_queue_head *wq_head);
#define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
#define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL, 1)
#define wake_up_all_locked(x) __wake_up_locked((x), TASK_NORMAL, 0)
+#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL)
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
#define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5.4.y] epoll: Add synchronous wakeup support for ep_poll_callback
2024-12-23 12:44 FAILED: patch "[PATCH] epoll: Add synchronous wakeup support for ep_poll_callback" failed to apply to 5.4-stable tree gregkh
@ 2024-12-26 8:35 ` Wenshan Lan
2024-12-26 10:45 ` Lan, Wenshan
2024-12-26 16:44 ` Sasha Levin
2024-12-26 11:14 ` [PATCH 5.4.y v2] " Wenshan Lan
1 sibling, 2 replies; 6+ messages in thread
From: Wenshan Lan @ 2024-12-26 8:35 UTC (permalink / raw)
To: stable; +Cc: jetlan9
From: Xuewen Yan <xuewen.yan@unisoc.com>
Now, the epoll only use wake_up() interface to wake up task.
However, sometimes, there are epoll users which want to use
the synchronous wakeup flag to hint the scheduler, such as
Android binder driver.
So add a wake_up_sync() define, and use the wake_up_sync()
when the sync is true in ep_poll_callback().
Co-developed-by: Jing Xia <jing.xia@unisoc.com>
Signed-off-by: Jing Xia <jing.xia@unisoc.com>
Signed-off-by: Xuewen Yan <xuewen.yan@unisoc.com>
Link: https://lore.kernel.org/r/20240426080548.8203-1-xuewen.yan@unisoc.com
Tested-by: Brian Geffon <bgeffon@google.com>
Reviewed-by: Brian Geffon <bgeffon@google.com>
Reported-by: Benoit Lize <lizeb@google.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
(cherry picked from commit 900bbaae67e980945dec74d36f8afe0de7556d5a)
[ Redefine wake_up_sync(x) as __wake_up_sync(x, TASK_NORMAL, 1) to
make it work on 5.4.y ]
Signed-off-by: Wenshan Lan <jetlan9@163.com>
---
fs/eventpoll.c | 5 ++++-
include/linux/wait.h | 1 +
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index 8c0e94183186..569bfff280e4 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -1273,7 +1273,10 @@ static int ep_poll_callback(wait_queue_entry_t *wait, unsigned mode, int sync, v
break;
}
}
- wake_up(&ep->wq);
+ if (sync)
+ wake_up_sync(&ep->wq);
+ else
+ wake_up(&ep->wq);
}
if (waitqueue_active(&ep->poll_wait))
pwake++;
diff --git a/include/linux/wait.h b/include/linux/wait.h
index 03bff85e365f..5b65f720261a 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -213,6 +213,7 @@ void __wake_up_pollfree(struct wait_queue_head *wq_head);
#define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
#define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL, 1)
#define wake_up_all_locked(x) __wake_up_locked((x), TASK_NORMAL, 0)
+#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL, 1)
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
#define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 5.4.y] epoll: Add synchronous wakeup support for ep_poll_callback
2024-12-26 8:35 ` [PATCH 5.4.y] epoll: Add synchronous wakeup support for ep_poll_callback Wenshan Lan
@ 2024-12-26 10:45 ` Lan, Wenshan
2024-12-26 16:44 ` Sasha Levin
1 sibling, 0 replies; 6+ messages in thread
From: Lan, Wenshan @ 2024-12-26 10:45 UTC (permalink / raw)
To: stable
On 12/26/2024 4:35 PM, Wenshan Lan wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> From: Xuewen Yan <xuewen.yan@unisoc.com>
>
> Now, the epoll only use wake_up() interface to wake up task.
> However, sometimes, there are epoll users which want to use
> the synchronous wakeup flag to hint the scheduler, such as
> Android binder driver.
> So add a wake_up_sync() define, and use the wake_up_sync()
> when the sync is true in ep_poll_callback().
>
> Co-developed-by: Jing Xia <jing.xia@unisoc.com>
> Signed-off-by: Jing Xia <jing.xia@unisoc.com>
> Signed-off-by: Xuewen Yan <xuewen.yan@unisoc.com>
> Link: https://lore.kernel.org/r/20240426080548.8203-1-xuewen.yan@unisoc.com
> Tested-by: Brian Geffon <bgeffon@google.com>
> Reviewed-by: Brian Geffon <bgeffon@google.com>
> Reported-by: Benoit Lize <lizeb@google.com>
> Signed-off-by: Christian Brauner <brauner@kernel.org>
> (cherry picked from commit 900bbaae67e980945dec74d36f8afe0de7556d5a)
> [ Redefine wake_up_sync(x) as __wake_up_sync(x, TASK_NORMAL, 1) to
> make it work on 5.4.y ]
> Signed-off-by: Wenshan Lan <jetlan9@163.com>
> ---
> fs/eventpoll.c | 5 ++++-
> include/linux/wait.h | 1 +
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/fs/eventpoll.c b/fs/eventpoll.c
> index 8c0e94183186..569bfff280e4 100644
> --- a/fs/eventpoll.c
> +++ b/fs/eventpoll.c
> @@ -1273,7 +1273,10 @@ static int ep_poll_callback(wait_queue_entry_t *wait, unsigned mode, int sync, v
> break;
> }
> }
> - wake_up(&ep->wq);
> + if (sync)
> + wake_up_sync(&ep->wq);
> + else
> + wake_up(&ep->wq);
> }
> if (waitqueue_active(&ep->poll_wait))
> pwake++;
> diff --git a/include/linux/wait.h b/include/linux/wait.h
> index 03bff85e365f..5b65f720261a 100644
> --- a/include/linux/wait.h
> +++ b/include/linux/wait.h
> @@ -213,6 +213,7 @@ void __wake_up_pollfree(struct wait_queue_head *wq_head);
> #define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
> #define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL, 1)
> #define wake_up_all_locked(x) __wake_up_locked((x), TASK_NORMAL, 0)
> +#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL, 1)
>
> #define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
> #define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
> --
> 2.43.0
Please ignore this patch for I forgot to CC the related persons. Thanks.
B.R.
Wenshan
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 5.4.y] epoll: Add synchronous wakeup support for ep_poll_callback
2024-12-26 8:35 ` [PATCH 5.4.y] epoll: Add synchronous wakeup support for ep_poll_callback Wenshan Lan
2024-12-26 10:45 ` Lan, Wenshan
@ 2024-12-26 16:44 ` Sasha Levin
1 sibling, 0 replies; 6+ messages in thread
From: Sasha Levin @ 2024-12-26 16:44 UTC (permalink / raw)
To: stable; +Cc: Wenshan Lan, Sasha Levin
[ Sasha's backport helper bot ]
Hi,
Found matching upstream commit: 900bbaae67e980945dec74d36f8afe0de7556d5a
WARNING: Author mismatch between patch and found commit:
Backport author: Wenshan Lan <jetlan9@163.com>
Commit author: Xuewen Yan <xuewen.yan@unisoc.com>
Status in newer kernel trees:
6.12.y | Not found
6.6.y | Not found
6.1.y | Not found
5.15.y | Not found
5.10.y | Not found
5.4.y | Not found
Note: The patch differs from the upstream commit:
---
1: 900bbaae67e9 ! 1: 90c173fa699e epoll: Add synchronous wakeup support for ep_poll_callback
@@ Commit message
Reviewed-by: Brian Geffon <bgeffon@google.com>
Reported-by: Benoit Lize <lizeb@google.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
+ (cherry picked from commit 900bbaae67e980945dec74d36f8afe0de7556d5a)
+ [ Redefine wake_up_sync(x) as __wake_up_sync(x, TASK_NORMAL, 1) to
+ make it work on 5.4.y ]
+ Signed-off-by: Wenshan Lan <jetlan9@163.com>
## fs/eventpoll.c ##
@@ fs/eventpoll.c: static int ep_poll_callback(wait_queue_entry_t *wait, unsigned mode, int sync, v
@@ include/linux/wait.h: void __wake_up_pollfree(struct wait_queue_head *wq_head);
#define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
#define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL, 1)
#define wake_up_all_locked(x) __wake_up_locked((x), TASK_NORMAL, 0)
-+#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL)
++#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL, 1)
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
#define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.4.y | Success | Success |
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 5.4.y v2] epoll: Add synchronous wakeup support for ep_poll_callback
2024-12-23 12:44 FAILED: patch "[PATCH] epoll: Add synchronous wakeup support for ep_poll_callback" failed to apply to 5.4-stable tree gregkh
2024-12-26 8:35 ` [PATCH 5.4.y] epoll: Add synchronous wakeup support for ep_poll_callback Wenshan Lan
@ 2024-12-26 11:14 ` Wenshan Lan
2024-12-26 16:44 ` Sasha Levin
1 sibling, 1 reply; 6+ messages in thread
From: Wenshan Lan @ 2024-12-26 11:14 UTC (permalink / raw)
To: stable, xuewen.yan, jing.xia
From: Xuewen Yan <xuewen.yan@unisoc.com>
Now, the epoll only use wake_up() interface to wake up task.
However, sometimes, there are epoll users which want to use
the synchronous wakeup flag to hint the scheduler, such as
Android binder driver.
So add a wake_up_sync() define, and use the wake_up_sync()
when the sync is true in ep_poll_callback().
Co-developed-by: Jing Xia <jing.xia@unisoc.com>
Signed-off-by: Jing Xia <jing.xia@unisoc.com>
Signed-off-by: Xuewen Yan <xuewen.yan@unisoc.com>
Link: https://lore.kernel.org/r/20240426080548.8203-1-xuewen.yan@unisoc.com
Tested-by: Brian Geffon <bgeffon@google.com>
Reviewed-by: Brian Geffon <bgeffon@google.com>
Reported-by: Benoit Lize <lizeb@google.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
(cherry picked from commit 900bbaae67e980945dec74d36f8afe0de7556d5a)
[ Redefine wake_up_sync(x) as __wake_up_sync(x, TASK_NORMAL, 1) to
make it work on 5.4.y ]
Signed-off-by: Wenshan Lan <jetlan9@163.com>
---
v2: CC the related persons
fs/eventpoll.c | 5 ++++-
include/linux/wait.h | 1 +
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index 8c0e94183186..569bfff280e4 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -1273,7 +1273,10 @@ static int ep_poll_callback(wait_queue_entry_t *wait, unsigned mode, int sync, v
break;
}
}
- wake_up(&ep->wq);
+ if (sync)
+ wake_up_sync(&ep->wq);
+ else
+ wake_up(&ep->wq);
}
if (waitqueue_active(&ep->poll_wait))
pwake++;
diff --git a/include/linux/wait.h b/include/linux/wait.h
index 03bff85e365f..5b65f720261a 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -213,6 +213,7 @@ void __wake_up_pollfree(struct wait_queue_head *wq_head);
#define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
#define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL, 1)
#define wake_up_all_locked(x) __wake_up_locked((x), TASK_NORMAL, 0)
+#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL, 1)
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
#define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 5.4.y v2] epoll: Add synchronous wakeup support for ep_poll_callback
2024-12-26 11:14 ` [PATCH 5.4.y v2] " Wenshan Lan
@ 2024-12-26 16:44 ` Sasha Levin
0 siblings, 0 replies; 6+ messages in thread
From: Sasha Levin @ 2024-12-26 16:44 UTC (permalink / raw)
To: stable; +Cc: Wenshan Lan, Sasha Levin
[ Sasha's backport helper bot ]
Hi,
Found matching upstream commit: 900bbaae67e980945dec74d36f8afe0de7556d5a
WARNING: Author mismatch between patch and found commit:
Backport author: Wenshan Lan <jetlan9@163.com>
Commit author: Xuewen Yan <xuewen.yan@unisoc.com>
Status in newer kernel trees:
6.12.y | Not found
6.6.y | Not found
6.1.y | Not found
5.15.y | Not found
5.10.y | Not found
5.4.y | Not found
Note: The patch differs from the upstream commit:
---
1: 900bbaae67e9 ! 1: b90bb7104c43 epoll: Add synchronous wakeup support for ep_poll_callback
@@ Commit message
Reviewed-by: Brian Geffon <bgeffon@google.com>
Reported-by: Benoit Lize <lizeb@google.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
+ (cherry picked from commit 900bbaae67e980945dec74d36f8afe0de7556d5a)
+ [ Redefine wake_up_sync(x) as __wake_up_sync(x, TASK_NORMAL, 1) to
+ make it work on 5.4.y ]
+ Signed-off-by: Wenshan Lan <jetlan9@163.com>
## fs/eventpoll.c ##
@@ fs/eventpoll.c: static int ep_poll_callback(wait_queue_entry_t *wait, unsigned mode, int sync, v
@@ include/linux/wait.h: void __wake_up_pollfree(struct wait_queue_head *wq_head);
#define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
#define wake_up_locked(x) __wake_up_locked((x), TASK_NORMAL, 1)
#define wake_up_all_locked(x) __wake_up_locked((x), TASK_NORMAL, 0)
-+#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL)
++#define wake_up_sync(x) __wake_up_sync(x, TASK_NORMAL, 1)
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
#define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.4.y | Success | Success |
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-12-26 16:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-23 12:44 FAILED: patch "[PATCH] epoll: Add synchronous wakeup support for ep_poll_callback" failed to apply to 5.4-stable tree gregkh
2024-12-26 8:35 ` [PATCH 5.4.y] epoll: Add synchronous wakeup support for ep_poll_callback Wenshan Lan
2024-12-26 10:45 ` Lan, Wenshan
2024-12-26 16:44 ` Sasha Levin
2024-12-26 11:14 ` [PATCH 5.4.y v2] " Wenshan Lan
2024-12-26 16:44 ` Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox