[PATCH 2/3] ARM: Move thread_info into task_struct (v7 only)

Keith Packard keithp at keithp.com
Tue Sep 7 15:17:09 PDT 2021


Ard Biesheuvel <ardb at kernel.org> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20210907/fc8248be/attachment-0001.sig>


More information about the linux-arm-kernel mailing list