On Wed, 3 Oct 2018 08:45:25 +0200
Christophe LEROY <christophe.leroy@xxxxxx> wrote:
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 ?
In patch 3 we can, right? That's what I mean by moving from
thread_info * to void * in patch 3 rather than 4.
But if you prefer not to, it's fine. Maybe it keeps patch 3
a little smaller.
Thanks,
Nick