Thiago Jung Bauermann [off-list ref] writes:
Ram Pai [off-list ref] writes:
...
quoted
+
+ /* We got one, store it and use it from here on out */
+ if (need_to_set_mm_pkey)
+ mm->context.execute_only_pkey = execute_only_pkey;
+ return execute_only_pkey;
+}
If you follow the code flow in __execute_only_pkey, the AMR and UAMOR
are read 3 times in total, and AMR is written twice. IAMR is read and
written twice. Since they are SPRs and access to them is slow (or isn't
it?),
SPRs read/writes are slow, but they're not *that* slow in comparison to
a system call (which I think is where this code is being called?).
So we should try to avoid too many SPR read/writes, but at the same time
we can accept more than the minimum if it makes the code much easier to
follow.
cheers