Messages in this thread | | | From | Rusty Russell <> | Subject | Re: [patch 05/14] percpu: Use a Kconfig variable to configure arch specific percpu setup | Date | Thu, 29 Nov 2007 10:17:52 +1100 |
| |
On Thursday 29 November 2007 05:51:29 Christoph Lameter wrote: > On Wed, 28 Nov 2007, Rusty Russell wrote: > > On Wednesday 28 November 2007 05:14:47 Christoph Lameter wrote: > > > On Tue, 27 Nov 2007, Rusty Russell wrote: > > > > Have you considered moving x86-64's setup_per_cpu_areas into generic > > > > code? It's a bit messier because some archs might not have set up > > > > NUMA stuff yet, but it's logically generic... > > > > > > Yes that will happen later. This is just the early cleanup work. I > > > plan to generally bring the two x86 arches in line. The pda will be > > > folded into the per cpu area and after that its easy to do. > > > > Unfortunately, we tried to get rid of the x86-64 pda (like i386) but you > > lose the ability to use the stack protection config option. That's > > because it assumes that gs:0x68 (or something) is the stack canary; we > > need a YA gcc change to make this gs:__builtin_stack_canary_off (where > > gcc can emit __builtin_stack_canary_off as a weak absolute symbol, so we > > can override it for the kernel. > > This works if you rebase the per cpu area at zero. gs:0x68 is still the > stack canary. > > The i386 method does not work because the segment register does not > directly point to the pda.
But the PDA itself is silly (Jeremy ported it to i386 and I balked). We have a generic one: it's called the per-cpu data. Having a completely separate per-cpu structure for x86-64 is a mistake.
Setting up gs as the per-cpu offset has lovely properties and avoids YA arch-specific concept; see the i386 code. Introducing a generic read_percpu()/write_percpu() would even make it optimal.
Cheers, Rusty. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |