Hi Jeremy, all, Sorry this took so long, spent last week in Japan at OSDL conf then netconf. After several false starts, I ended up with a very simple implementation, which clashes significantly with your work since then 8(. I've pushed the patches anyway, but it's going to be significant work for me to re-merge them, so I wanted your feedback first. The first patch simply changes the GDTs to be a straight per-cpu variable. I notice that you did a similar thing with your patches, but this is simpler and avoids wasting space in the UP case. It's a bit tricky since we've never referred to per-cpu vars from asm before, but since we're only referring to the pre-setup versions, it's ok. The second patch changes gs to be the per-cpu offset, and by implication, avoids using it altogether on UP. This avoids a special "pda" structure, instead allowing all per-cpu variables to be accessed this way. It avoids __thread, which I gave up after creating a horribly complicated patch which still didn't quite work, and was no more efficient if we want the kernel to run under Xen anyway. I really think this is the way to go, and I'll start work on merging now. Cheers! Rusty. -- Help! Save Australia from the worst of the DMCA: http://linux.org.au/law