mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] kernel: async: Fixed the wrong waitting condition of wait_event
       [not found] <async>
@ 2015-01-05  3:35 ` Chunyan Zhang
  2015-01-08  0:37   ` Andrew Morton
  2015-01-08  0:39   ` Andrew Morton
  0 siblings, 2 replies; 4+ messages in thread
From: Chunyan Zhang @ 2015-01-05  3:35 UTC (permalink / raw)
  To: akpm, ionut.m.alexa, mark.yang, wei.qiao, geng.ren
  Cc: orson.zhai, zhizhou.zhang, ke.wang, zhang.lyra, linux-kernel

From: Yonghui Yang <mark.yang@spreadtrum.com>

This patch changes the waitting condition of wait_event in the
function 'async_synchronize_cookie_domain'.

This function waits until all asynchronous function calls for the certain
domain have been done.

But, the function 'lowest_in_progress' returns the lowest *pending*
entry's cookie.

So we should make sure that the return value of lowest_in_progress(domain)
must be larger than @cookie.

Verified-by: Wei Qiao <wei.qiao@spreadtrum.com>
Signed-off-by: Yonghui Yang <mark.yang@spreadtrum.com>
Signed-off-by: Geng Ren <geng.ren@spreadtrum.com>
Signed-off-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
---
 kernel/async.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/async.c b/kernel/async.c
index 4c3773c..894ae80 100644
--- a/kernel/async.c
+++ b/kernel/async.c
@@ -267,7 +267,7 @@ EXPORT_SYMBOL_GPL(async_unregister_domain);
  */
 void async_synchronize_full_domain(struct async_domain *domain)
 {
-	async_synchronize_cookie_domain(ASYNC_COOKIE_MAX, domain);
+	async_synchronize_cookie_domain(ASYNC_COOKIE_MAX-1, domain);
 }
 EXPORT_SYMBOL_GPL(async_synchronize_full_domain);
 
@@ -289,7 +289,7 @@ void async_synchronize_cookie_domain(async_cookie_t cookie, struct async_domain
 		starttime = ktime_get();
 	}
 
-	wait_event(async_done, lowest_in_progress(domain) >= cookie);
+	wait_event(async_done, lowest_in_progress(domain) > cookie);
 
 	if (initcall_debug && system_state == SYSTEM_BOOTING) {
 		endtime = ktime_get();
-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] kernel: async: Fixed the wrong waitting condition of wait_event
  2015-01-05  3:35 ` [PATCH] kernel: async: Fixed the wrong waitting condition of wait_event Chunyan Zhang
@ 2015-01-08  0:37   ` Andrew Morton
  2015-01-08  0:39   ` Andrew Morton
  1 sibling, 0 replies; 4+ messages in thread
From: Andrew Morton @ 2015-01-08  0:37 UTC (permalink / raw)
  To: Chunyan Zhang
  Cc: ionut.m.alexa, mark.yang, wei.qiao, geng.ren, orson.zhai,
	zhizhou.zhang, ke.wang, zhang.lyra, linux-kernel

On Mon, 5 Jan 2015 11:35:35 +0800 Chunyan Zhang <chunyan.zhang@spreadtrum.com> wrote:

> This patch changes the waitting condition of wait_event in the
> function 'async_synchronize_cookie_domain'.
> 
> This function waits until all asynchronous function calls for the certain
> domain have been done.
> 
> But, the function 'lowest_in_progress' returns the lowest *pending*
> entry's cookie.
> 
> So we should make sure that the return value of lowest_in_progress(domain)
> must be larger than @cookie.

I'm having runtime problems with this.  Twice the kernel silently hangs
late in initcalls and the third time I got a great stream of oopses.

I'll drop it.  Hopefully you'll be able to work through the bug with
Arjan and Tajun.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] kernel: async: Fixed the wrong waitting condition of wait_event
  2015-01-05  3:35 ` [PATCH] kernel: async: Fixed the wrong waitting condition of wait_event Chunyan Zhang
  2015-01-08  0:37   ` Andrew Morton
@ 2015-01-08  0:39   ` Andrew Morton
  2015-01-08  6:20     ` Chunyan Zhang (张春艳)
  1 sibling, 1 reply; 4+ messages in thread
From: Andrew Morton @ 2015-01-08  0:39 UTC (permalink / raw)
  To: Chunyan Zhang
  Cc: ionut.m.alexa, mark.yang, wei.qiao, geng.ren, orson.zhai,
	zhizhou.zhang, ke.wang, zhang.lyra, linux-kernel,
	Arjan van de Ven, Tejun Heo

(resend with cc's, sorry)

On Mon, 5 Jan 2015 11:35:35 +0800 Chunyan Zhang <chunyan.zhang@spreadtrum.com> wrote:

> This patch changes the waitting condition of wait_event in the
> function 'async_synchronize_cookie_domain'.
> 
> This function waits until all asynchronous function calls for the certain
> domain have been done.
> 
> But, the function 'lowest_in_progress' returns the lowest *pending*
> entry's cookie.
> 
> So we should make sure that the return value of lowest_in_progress(domain)
> must be larger than @cookie.

I'm having runtime problems with this.  Twice the kernel silently hangs
late in initcalls and the third time I got a great stream of oopses.

I'll drop it.  Hopefully you'll be able to work through the bug with
Arjan and Tejun.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH] kernel: async: Fixed the wrong waitting condition of wait_event
  2015-01-08  0:39   ` Andrew Morton
@ 2015-01-08  6:20     ` Chunyan Zhang (张春艳)
  0 siblings, 0 replies; 4+ messages in thread
From: Chunyan Zhang (张春艳) @ 2015-01-08  6:20 UTC (permalink / raw)
  To: Andrew Morton
  Cc: ionut.m.alexa, Mark Yang (杨永辉),
	Wei Qiao (乔伟), Geng Ren (任赓),
	Orson Zhai (翟京),
	Zhizhou Zhang (张治洲),
	Ke Wang (王科),
	zhang.lyra, linux-kernel, Arjan van de Ven, Tejun Heo

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="gb2312", Size: 1021 bytes --]

Hi, Andrew

Could you give us the test log including the runtime problems you've got?

Thank you so much.


Best regards
Chunyan

On Mon, 5 Jan 2015 11:35:35 +0800 Chunyan Zhang <chunyan.zhang@spreadtrum.com> wrote:

> This patch changes the waitting condition of wait_event in the
> function 'async_synchronize_cookie_domain'.
>
> This function waits until all asynchronous function calls for the certain
> domain have been done.
>
> But, the function 'lowest_in_progress' returns the lowest *pending*
> entry's cookie.
>
> So we should make sure that the return value of lowest_in_progress(domain)
> must be larger than @cookie.

I'm having runtime problems with this.  Twice the kernel silently hangs
late in initcalls and the third time I got a great stream of oopses.

I'll drop it.  Hopefully you'll be able to work through the bug with
Arjan and Tejun.

ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-01-08  6:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <async>
2015-01-05  3:35 ` [PATCH] kernel: async: Fixed the wrong waitting condition of wait_event Chunyan Zhang
2015-01-08  0:37   ` Andrew Morton
2015-01-08  0:39   ` Andrew Morton
2015-01-08  6:20     ` Chunyan Zhang (张春艳)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®