lkml.org 
[lkml]   [2020]   [Nov]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH] Documentation: x86: fix thread_info's position
From: David Laight
> Sent: 10 November 2020 23:03

Thank you for your review!

> Nope, most stacks 'grow down'.
> So the first item pushed is at address 8k (for 8k stacks).

Yep, most stacks 'grow down'. But the zero offset of a stack is also
at address 8k(for 8k stack).

> The bit about the kernel 4.9 changes doesn't read well at all.
> I think the commas are just wrong.

I’m sorry for that, because my English is not very well.

> You could say something like:
> Prior to kernel 4.9 the thread_info structure was at the bottom of the kernel stack. kernel 4.9 moved it into the task_struct.

Gotcha!


On Tue, Nov 10, 2020 at 11:03 PM David Laight <David.Laight@aculab.com> wrote:
>
> From: Yang Mingzhe
> > Sent: 10 November 2020 14:21
> >
> > The bottom of the stack is where the first item was added to the stack,
> > usually at the zero offset. Actually, the thread_info structure at the
> > end of the stack.
>
> Nope, most stacks 'grow down'.
> So the first item pushed is at address 8k (for 8k stacks).
>
> > Please see attached picture:
> > https://github.com/Mutated1994/kernel-beginner/blob/master/kernel-stack.md
> >
> > See commits c65eacb ("sched/core: Allow putting thread_info into
> > task_struct"), 15f4eae ("x86: Move thread_info into task_struct")
> > and 883d50f ("scripts/gdb: fix get_thread_info").
> >
> > Signed-off-by: Yang Mingzhe <cainiao666999@gmail.com>
> > ---
> > Documentation/x86/kernel-stacks.rst | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/x86/kernel-stacks.rst b/Documentation/x86/kernel-stacks.rst
> > index 6b0bcf0..b88b9e12 100644
> > --- a/Documentation/x86/kernel-stacks.rst
> > +++ b/Documentation/x86/kernel-stacks.rst
> > @@ -15,7 +15,9 @@ Like all other architectures, x86_64 has a kernel stack for every
> > active thread. These thread stacks are THREAD_SIZE (2*PAGE_SIZE) big.
> > These stacks contain useful data as long as a thread is alive or a
> > zombie. While the thread is in user space the kernel stack is empty
> > -except for the thread_info structure at the bottom.
> > +except for the thread_info structure at the end (since kernel 4.9, the
> > +thread_info has been moved into task_struct, no longer locates at the
> > +end of kernel stack).
>
> So 'bottom' - meaning address 0 is probably right.
> Not sure what happens on the few architectures where pushing values
> onto the stack does increase the stack pointer.
>
> The bit about the kernel 4.9 changes doesn't read well at all.
> I think the commas are just wrong.
> You could say something like:
>
> Prior to kernel 4.9 the thread_info structure was at the bottom
> of the kernel stack. kernel 4.9 moved it into the task_struct.
>
> David
>
> -
> Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
> Registration No: 1397386 (Wales)
>

\
 
 \ /
  Last update: 2020-11-11 01:15    [W:0.060 / U:0.224 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site