public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
* 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

* [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

* 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

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