Re: [RFC PATCH v3 4/7] powerpc: regain entire stack space

From: Christophe LEROY
Date: Wed Oct 03 2018 - 02:47:49 EST




Le 03/10/2018 Ã 08:30, Nicholas Piggin a ÃcritÂ:
On Wed, 3 Oct 2018 07:52:59 +0200
Christophe LEROY <christophe.leroy@xxxxxx> wrote:

Le 03/10/2018 Ã 07:34, Nicholas Piggin a ÃcritÂ:
On Mon, 1 Oct 2018 12:30:25 +0000 (UTC)
Christophe Leroy <christophe.leroy@xxxxxx> wrote:
thread_info is not anymore in the stack, so the entire stack
can now be used.

Nice.

In the meantime, all pointers to the stacks are not anymore
pointers to thread_info so this patch changes them to void*

Wasn't this previously effectively already the case with patch
3/7? You had thread_info sized space left there, but it was not
used or initialized right? Does it make sense to move this part
of it to the previous patch?

Not really.

In 3/7 I changed the prototypes of two functions that really used the
pointer as a task pointer only.

I meant 2/7 here sorry.


Here it change things that before 4/7 were really used as both stack
pointers and thread_info pointers.

And here I meant 3/7


What uses it as a thread_info pointer? It seems more like a stack
with some amount of unused space in it but that's all.

Before 3/7, we have

void do_softirq_own_stack(void)
{
struct thread_info *curtp, *irqtp;

curtp = current_thread_info();
irqtp = softirq_ctx[smp_processor_id()];
irqtp->task = curtp->task;
irqtp->flags = 0;
call_do_softirq(irqtp);
irqtp->task = NULL;

/* Set any flag that may have been set on the
* alternate stack
*/
if (irqtp->flags)
set_bits(irqtp->flags, &curtp->flags);
}

After 3/7, we have

void do_softirq_own_stack(void)
{
struct thread_info *irqtp;

irqtp = softirq_ctx[smp_processor_id()];
call_do_softirq(irqtp);
}


So now only we can change irqtp to void* can't we ?


That said I don't care to nitpick too much where things go exactly
if you like it better here that's fine.

No worry, I may have missed something, your comments are always welcome.

Thanks
Christophe


Thanks,
Nick