Ard Biesheuvel writes: > That is still a bit tricky, given that you now have to swap out the > per-CPU offset when you migrate a task, and the generic code is not > really set up for that. Yeah, I decided to just leverage as much generic code as possible and re-purposed the TPIDRPRW register for 'current', leaving the per_cpu_offset data in memory. That makes the patch series pretty compact, with a bunch of restructuring changes followed by fairly short functional changes. > I had a stab at this myself today (long boring day with no Internet connection). > > https://android-kvm.googlesource.com/linux/+log/refs/heads/ardb/arm32-ti-in-task > > It resembles your code in some places - I suppose we went on the same > journey in a sense :-) We'll fix up the credits before this gets > resubmitted. This does look great, and preserves the optimization of keeping the per_cpu_offset value in a register. With the series I posted, getting the per_cpu_offset value requires fetching the cpu value from task_struct and then using that to index the per_cpu_offset arrray. I don't have a good feeling of how important this optimization is? We could stick the per_cpu_offset value into thread_info to avoid one fetch? > Fixing the per-task stack protector plugin on top of these changes > should be trivial but I need a coffee first. I haven't even looked at that step yet :-) -- -keith