Messages in this thread | | | Subject | Re: [RFC GIT PULL] softirq: Consolidation and stack overrun fix | From | Benjamin Herrenschmidt <> | Date | Sun, 22 Sep 2013 14:39:14 +1000 |
| |
On Sat, 2013-09-21 at 19:01 -0700, H. Peter Anvin wrote: > On 09/21/2013 02:45 PM, Benjamin Herrenschmidt wrote: > > > > I really don't like the "larger" irq stack ... probably because I can't > > make it work easily :-) See my previous comment about how we get to > > thread_info on ppc. > > > > For the record, I intend to remove thread_info from the stack on x86 and > instead merge it with task_struct as a single structure pointed to with > a percpu variable.
Last I looked, our per-cpu codegen was pretty poor... but then we have this "PACA" (somewhat arch specific per-cpu blob that is separate from the rest of per-cpu because of a mix of historical reasons and the fact that it has to be allocated in a specific part of memory at boot time) which we point to directly via a GPR, so we could point to it via PACA.
How do you do your per-cpu on x86 ? On powerpc we struggle because we try to dedicate a register (r13) to this PACA (the per-cpu offset hangs off it), but we constantly run into issues where gcc copies r13 to another register and then indexes off that, even accross preempt_enable/disable sections, or worst such as saving/restoring from the stack. We can't seem to get the compiler to treat it appropriately as volatile.
Ben.
| |