2008-02-22 15:17:36

by Glauber Costa

[permalink] [raw]
Subject: [PATCH] make c_idle.work have a static address.

Currently, c_idle is declared in the stack, and thus, have no static address.

Peter Zijlstra points out this simple solution, in which c_idle.work
is initializated separatedly. Note that the INIT_WORK macro has a static
declaration of a key inside.

Signed-off-by: Glauber Costa <[email protected]>
CC: Peter Zijlstra <[email protected]>
---
arch/x86/kernel/smpboot_64.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c
index d53bd6f..0880f2c 100644
--- a/arch/x86/kernel/smpboot_64.c
+++ b/arch/x86/kernel/smpboot_64.c
@@ -554,10 +554,10 @@ static int __cpuinit do_boot_cpu(int cpu
int timeout;
unsigned long start_rip;
struct create_idle c_idle = {
- .work = __WORK_INITIALIZER(c_idle.work, do_fork_idle),
.cpu = cpu,
.done = COMPLETION_INITIALIZER_ONSTACK(c_idle.done),
};
+ INIT_WORK(&c_idle.work, do_fork_idle);

/* allocate memory for gdts of secondary cpus. Hotplug is considered */
if (!cpu_gdt_descr[cpu].address &&
--
1.4.2


2008-02-23 10:27:49

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] make c_idle.work have a static address.


* Glauber Costa <[email protected]> wrote:

> Currently, c_idle is declared in the stack, and thus, have no static
> address.
>
> Peter Zijlstra points out this simple solution, in which c_idle.work
> is initializated separatedly. Note that the INIT_WORK macro has a
> static declaration of a key inside.

thanks, applied.

Ingo