2008-10-09 08:57:00

by Pavel Machek

[permalink] [raw]
Subject: Re: Why is arch/x86/kernel/acpi/sleep.c:temp_stack 10k?


> We've got:
>
> #if defined(CONFIG_SMP) && defined(CONFIG_64BIT)
> static char temp_stack[10240];
> #endif
>
> and:
>
> #ifdef CONFIG_SMP
> stack_start.sp = temp_stack + 4096;
> #endif
>
> ..which suggests we use at most 4k of the stack?

I guess someone (probably me) was "playing it safe" -- not exactly
remembering if stack grows down or up. I guess it should be safe to
change it... will do that.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


2008-10-09 16:59:12

by Matt Mackall

[permalink] [raw]
Subject: [PATCH] x86: trim ACPI sleep stack buffer

On Thu, 2008-10-09 at 10:56 +0200, Pavel Machek wrote:
> > We've got:
> >
> > #if defined(CONFIG_SMP) && defined(CONFIG_64BIT)
> > static char temp_stack[10240];
> > #endif
> >
> > and:
> >
> > #ifdef CONFIG_SMP
> > stack_start.sp = temp_stack + 4096;
> > #endif
> >
> > ..which suggests we use at most 4k of the stack?
>
> I guess someone (probably me) was "playing it safe" -- not exactly
> remembering if stack grows down or up. I guess it should be safe to
> change it... will do that.
> Pavel

I've already got a patch, I was just wondering if there was some obscure
architectural reason for it that I wasn't aware of.


x86: trim ACPI sleep stack buffer

x86_64 SMP suspend to RAM uses a 10k temporary stack for saving the
kernel state, but only 4k of it is used. Shrink it to 4k.

Signed-off-by: Matt Mackall <[email protected]>

diff -r 73d55a1b6c10 arch/x86/kernel/acpi/sleep.c
--- a/arch/x86/kernel/acpi/sleep.c Wed Oct 08 14:48:45 2008 -0500
+++ b/arch/x86/kernel/acpi/sleep.c Thu Oct 09 11:51:54 2008 -0500
@@ -21,7 +21,7 @@
static unsigned long acpi_realmode;

#if defined(CONFIG_SMP) && defined(CONFIG_64BIT)
-static char temp_stack[10240];
+static char temp_stack[4096];
#endif

/**

--
Mathematics is the supreme nostalgia of our time.

2008-10-09 17:19:45

by Len Brown

[permalink] [raw]
Subject: Re: [PATCH] x86: trim ACPI sleep stack buffer

applied to acpi-test.

thanks Matt,
-Len

On Thu, 9 Oct 2008, Matt Mackall wrote:

> On Thu, 2008-10-09 at 10:56 +0200, Pavel Machek wrote:
> > > We've got:
> > >
> > > #if defined(CONFIG_SMP) && defined(CONFIG_64BIT)
> > > static char temp_stack[10240];
> > > #endif
> > >
> > > and:
> > >
> > > #ifdef CONFIG_SMP
> > > stack_start.sp = temp_stack + 4096;
> > > #endif
> > >
> > > ..which suggests we use at most 4k of the stack?
> >
> > I guess someone (probably me) was "playing it safe" -- not exactly
> > remembering if stack grows down or up. I guess it should be safe to
> > change it... will do that.
> > Pavel
>
> I've already got a patch, I was just wondering if there was some obscure
> architectural reason for it that I wasn't aware of.
>
>
> x86: trim ACPI sleep stack buffer
>
> x86_64 SMP suspend to RAM uses a 10k temporary stack for saving the
> kernel state, but only 4k of it is used. Shrink it to 4k.
>
> Signed-off-by: Matt Mackall <[email protected]>
>
> diff -r 73d55a1b6c10 arch/x86/kernel/acpi/sleep.c
> --- a/arch/x86/kernel/acpi/sleep.c Wed Oct 08 14:48:45 2008 -0500
> +++ b/arch/x86/kernel/acpi/sleep.c Thu Oct 09 11:51:54 2008 -0500
> @@ -21,7 +21,7 @@
> static unsigned long acpi_realmode;
>
> #if defined(CONFIG_SMP) && defined(CONFIG_64BIT)
> -static char temp_stack[10240];
> +static char temp_stack[4096];
> #endif
>
> /**
>
> --
> Mathematics is the supreme nostalgia of our time.
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

2008-10-09 17:24:40

by Moore, Robert

[permalink] [raw]
Subject: RE: [PATCH] x86: trim ACPI sleep stack buffer

Sounds like you need a

#define DEFAULT_STACK_SIZE 4096

Somewhere.


>-----Original Message-----
>From: [email protected] [mailto:linux-acpi-
>[email protected]] On Behalf Of Len Brown
>Sent: Thursday, October 09, 2008 10:20 AM
>To: Matt Mackall
>Cc: Pavel Machek; Ingo Molnar; Linux Kernel Mailing List; linux-
>[email protected]
>Subject: Re: [PATCH] x86: trim ACPI sleep stack buffer
>
>applied to acpi-test.
>
>thanks Matt,
>-Len
>
>On Thu, 9 Oct 2008, Matt Mackall wrote:
>
>> On Thu, 2008-10-09 at 10:56 +0200, Pavel Machek wrote:
>> > > We've got:
>> > >
>> > > #if defined(CONFIG_SMP) && defined(CONFIG_64BIT)
>> > > static char temp_stack[10240];
>> > > #endif
>> > >
>> > > and:
>> > >
>> > > #ifdef CONFIG_SMP
>> > > stack_start.sp = temp_stack + 4096;
>> > > #endif
>> > >
>> > > ..which suggests we use at most 4k of the stack?
>> >
>> > I guess someone (probably me) was "playing it safe" -- not exactly
>> > remembering if stack grows down or up. I guess it should be safe to
>> > change it... will do that.
>> >
>Pavel
>>
>> I've already got a patch, I was just wondering if there was some obscure
>> architectural reason for it that I wasn't aware of.
>>
>>
>> x86: trim ACPI sleep stack buffer
>>
>> x86_64 SMP suspend to RAM uses a 10k temporary stack for saving the
>> kernel state, but only 4k of it is used. Shrink it to 4k.
>>
>> Signed-off-by: Matt Mackall <[email protected]>
>>
>> diff -r 73d55a1b6c10 arch/x86/kernel/acpi/sleep.c
>> --- a/arch/x86/kernel/acpi/sleep.c Wed Oct 08 14:48:45 2008 -0500
>> +++ b/arch/x86/kernel/acpi/sleep.c Thu Oct 09 11:51:54 2008 -0500
>> @@ -21,7 +21,7 @@
>> static unsigned long acpi_realmode;
>>
>> #if defined(CONFIG_SMP) && defined(CONFIG_64BIT)
>> -static char temp_stack[10240];
>> +static char temp_stack[4096];
>> #endif
>>
>> /**
>>
>> --
>> Mathematics is the supreme nostalgia of our time.
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>
>--
>To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
>the body of a message to [email protected]
>More majordomo info at http://vger.kernel.org/majordomo-info.html

2008-10-09 17:44:30

by Matt Mackall

[permalink] [raw]
Subject: RE: [PATCH] x86: trim ACPI sleep stack buffer

On Thu, 2008-10-09 at 10:23 -0700, Moore, Robert wrote:
> Sounds like you need a
>
> #define DEFAULT_STACK_SIZE 4096
>
> Somewhere.

Or maybe something like this:


x86: remove magic number from ACPI sleep stack buffer

Signed-off-by: Matt Mackall <[email protected]>

diff -r 375a00b8bf10 arch/x86/kernel/acpi/sleep.c
--- a/arch/x86/kernel/acpi/sleep.c Thu Oct 09 12:38:55 2008 -0500
+++ b/arch/x86/kernel/acpi/sleep.c Thu Oct 09 12:40:10 2008 -0500
@@ -97,7 +97,7 @@
#else /* CONFIG_64BIT */
header->trampoline_segment = setup_trampoline() >> 4;
#ifdef CONFIG_SMP
- stack_start.sp = temp_stack + 4096;
+ stack_start.sp = temp_stack + sizeof(temp_stack);
#endif
initial_code = (unsigned long)wakeup_long64;
saved_magic = 0x123456789abcdef0;


--
Mathematics is the supreme nostalgia of our time.

2008-10-09 18:06:37

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH] x86: trim ACPI sleep stack buffer

On Thu 2008-10-09 12:41:50, Matt Mackall wrote:
> On Thu, 2008-10-09 at 10:23 -0700, Moore, Robert wrote:
> > Sounds like you need a
> >
> > #define DEFAULT_STACK_SIZE 4096
> >
> > Somewhere.
>
> Or maybe something like this:
>
>
> x86: remove magic number from ACPI sleep stack buffer
>
> Signed-off-by: Matt Mackall <[email protected]>

Acked-by: Pavel Machek <[email protected]>

> diff -r 375a00b8bf10 arch/x86/kernel/acpi/sleep.c
> --- a/arch/x86/kernel/acpi/sleep.c Thu Oct 09 12:38:55 2008 -0500
> +++ b/arch/x86/kernel/acpi/sleep.c Thu Oct 09 12:40:10 2008 -0500
> @@ -97,7 +97,7 @@
> #else /* CONFIG_64BIT */
> header->trampoline_segment = setup_trampoline() >> 4;
> #ifdef CONFIG_SMP
> - stack_start.sp = temp_stack + 4096;
> + stack_start.sp = temp_stack + sizeof(temp_stack);
> #endif
> initial_code = (unsigned long)wakeup_long64;
> saved_magic = 0x123456789abcdef0;
>
>

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

2008-10-09 19:36:05

by Len Brown

[permalink] [raw]
Subject: Re: [PATCH] x86: trim ACPI sleep stack buffer

applied (before the stack change patch:-) to acpi-test

thanks,
-Len

On Thu, 9 Oct 2008, Pavel Machek wrote:

> On Thu 2008-10-09 12:41:50, Matt Mackall wrote:
> > On Thu, 2008-10-09 at 10:23 -0700, Moore, Robert wrote:
> > > Sounds like you need a
> > >
> > > #define DEFAULT_STACK_SIZE 4096
> > >
> > > Somewhere.
> >
> > Or maybe something like this:
> >
> >
> > x86: remove magic number from ACPI sleep stack buffer
> >
> > Signed-off-by: Matt Mackall <[email protected]>
>
> Acked-by: Pavel Machek <[email protected]>
>
> > diff -r 375a00b8bf10 arch/x86/kernel/acpi/sleep.c
> > --- a/arch/x86/kernel/acpi/sleep.c Thu Oct 09 12:38:55 2008 -0500
> > +++ b/arch/x86/kernel/acpi/sleep.c Thu Oct 09 12:40:10 2008 -0500
> > @@ -97,7 +97,7 @@
> > #else /* CONFIG_64BIT */
> > header->trampoline_segment = setup_trampoline() >> 4;
> > #ifdef CONFIG_SMP
> > - stack_start.sp = temp_stack + 4096;
> > + stack_start.sp = temp_stack + sizeof(temp_stack);
> > #endif
> > initial_code = (unsigned long)wakeup_long64;
> > saved_magic = 0x123456789abcdef0;
> >
> >
>
> --
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
>

2008-10-09 21:21:20

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] x86: trim ACPI sleep stack buffer

On Thursday, 9 of October 2008, Len Brown wrote:
> applied (before the stack change patch:-) to acpi-test

FWIW, I had a look at it, looks good.

Thanks,
Rafael


> On Thu, 9 Oct 2008, Pavel Machek wrote:
>
> > On Thu 2008-10-09 12:41:50, Matt Mackall wrote:
> > > On Thu, 2008-10-09 at 10:23 -0700, Moore, Robert wrote:
> > > > Sounds like you need a
> > > >
> > > > #define DEFAULT_STACK_SIZE 4096
> > > >
> > > > Somewhere.
> > >
> > > Or maybe something like this:
> > >
> > >
> > > x86: remove magic number from ACPI sleep stack buffer
> > >
> > > Signed-off-by: Matt Mackall <[email protected]>
> >
> > Acked-by: Pavel Machek <[email protected]>
> >
> > > diff -r 375a00b8bf10 arch/x86/kernel/acpi/sleep.c
> > > --- a/arch/x86/kernel/acpi/sleep.c Thu Oct 09 12:38:55 2008 -0500
> > > +++ b/arch/x86/kernel/acpi/sleep.c Thu Oct 09 12:40:10 2008 -0500
> > > @@ -97,7 +97,7 @@
> > > #else /* CONFIG_64BIT */
> > > header->trampoline_segment = setup_trampoline() >> 4;
> > > #ifdef CONFIG_SMP
> > > - stack_start.sp = temp_stack + 4096;
> > > + stack_start.sp = temp_stack + sizeof(temp_stack);
> > > #endif
> > > initial_code = (unsigned long)wakeup_long64;
> > > saved_magic = 0x123456789abcdef0;
> > >
> > >
> >
> > --
> > (english) http://www.livejournal.com/~pavelmachek
> > (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
> >
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>