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

Keith Packard
2021-09-07T22:17:14Z

[-- Attachment #1: Type: text/plain, Size: 1446 bytes --]

Ard Biesheuvel <ardb@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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]