diff options
author | Jason Xing <[email protected]> | 2019-08-24 17:54:53 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2019-08-24 19:48:42 -0700 |
commit | 7b2b55da1db10a5525460633ae4b6fb0be060c41 (patch) | |
tree | 877d7e5496c0adc49a978df982522aaeb5e08f51 /tools/perf/util/trace-event-scripting.c | |
parent | bb65f89b7d3d305c14951f49860711fbcae70692 (diff) |
psi: get poll_work to run when calling poll syscall next time
Only when calling the poll syscall the first time can user receive
POLLPRI correctly. After that, user always fails to acquire the event
signal.
Reproduce case:
1. Get the monitor code in Documentation/accounting/psi.txt
2. Run it, and wait for the event triggered.
3. Kill and restart the process.
The question is why we can end up with poll_scheduled = 1 but the work
not running (which would reset it to 0). And the answer is because the
scheduling side sees group->poll_kworker under RCU protection and then
schedules it, but here we cancel the work and destroy the worker. The
cancel needs to pair with resetting the poll_scheduled flag.
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Jason Xing <[email protected]>
Signed-off-by: Joseph Qi <[email protected]>
Reviewed-by: Caspar Zhang <[email protected]>
Reviewed-by: Suren Baghdasaryan <[email protected]>
Acked-by: Johannes Weiner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'tools/perf/util/trace-event-scripting.c')
0 files changed, 0 insertions, 0 deletions