After commit:8969a5ede0f9e17da4b943712429aef2c9bcd82b
"generic-ipi: remove kmalloc()", wait = 0 can be guaranteed.
And all callsites of generic_exec_single() do an unconditional
csd_lock() now.
So csd_flags is unnecessary now. Remote it.
Signed-off-by: Xie XiuQi <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: https://patchwork.kernel.org/patch/2834744/
---
kernel/smp.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/kernel/smp.c b/kernel/smp.c
index fe9f773..7332697 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -186,25 +186,13 @@ void generic_smp_call_function_single_interrupt(void)
while (!list_empty(&list)) {
struct call_single_data *csd;
- unsigned int csd_flags;
csd = list_entry(list.next, struct call_single_data, list);
list_del(&csd->list);
- /*
- * 'csd' can be invalid after this call if flags == 0
- * (when called through generic_exec_single()),
- * so save them away before making the call:
- */
- csd_flags = csd->flags;
-
csd->func(csd->info);
- /*
- * Unlocked CSDs are valid through generic_exec_single():
- */
- if (csd_flags & CSD_FLAG_LOCK)
- csd_unlock(csd);
+ csd_unlock(csd);
}
}
--
1.8.2.1
On Tue, Jul 30, 2013 at 11:06:09AM +0800, Xie XiuQi wrote:
> After commit:8969a5ede0f9e17da4b943712429aef2c9bcd82b
> "generic-ipi: remove kmalloc()", wait = 0 can be guaranteed.
>
> And all callsites of generic_exec_single() do an unconditional
> csd_lock() now.
>
> So csd_flags is unnecessary now. Remote it.
>
> Signed-off-by: Xie XiuQi <[email protected]>
> Cc: Peter Zijlstra <[email protected]>
> Link: https://patchwork.kernel.org/patch/2834744/
Thanks!
Commit-ID: 46591962cb5bfd2bfb0baf42497119c816503598
Gitweb: http://git.kernel.org/tip/46591962cb5bfd2bfb0baf42497119c816503598
Author: Xie XiuQi <[email protected]>
AuthorDate: Tue, 30 Jul 2013 11:06:09 +0800
Committer: Ingo Molnar <[email protected]>
CommitDate: Tue, 30 Jul 2013 22:19:05 +0200
generic-ipi: Kill unnecessary variable - csd_flags
After commit 8969a5ede0f9e17da4b943712429aef2c9bcd82b
("generic-ipi: remove kmalloc()"), wait = 0 can be guaranteed,
and all callsites of generic_exec_single() do an unconditional
csd_lock() now.
So csd_flags is unnecessary now. Remove it.
Signed-off-by: Xie XiuQi <[email protected]>
Signed-off-by: Peter Zijlstra <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Nick Piggin <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: "Paul E. McKenney" <[email protected]>
Cc: Rusty Russell <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
kernel/smp.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/kernel/smp.c b/kernel/smp.c
index fe9f773..7332697 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -186,25 +186,13 @@ void generic_smp_call_function_single_interrupt(void)
while (!list_empty(&list)) {
struct call_single_data *csd;
- unsigned int csd_flags;
csd = list_entry(list.next, struct call_single_data, list);
list_del(&csd->list);
- /*
- * 'csd' can be invalid after this call if flags == 0
- * (when called through generic_exec_single()),
- * so save them away before making the call:
- */
- csd_flags = csd->flags;
-
csd->func(csd->info);
- /*
- * Unlocked CSDs are valid through generic_exec_single():
- */
- if (csd_flags & CSD_FLAG_LOCK)
- csd_unlock(csd);
+ csd_unlock(csd);
}
}