> On Sep 19, 2018, at 1:00 PM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > On 19/09/2018 18:57, Sebastian Andrzej Siewior wrote: >> On 2018-09-19 07:55:51 [+0200], Paolo Bonzini wrote: >>> A kthread can do use_mm/unuse_mm. >> >> indeed. The FPU struct for the kernel thread isn't valid / does not >> contain the expected PKRU value. So loading the pkru value from the >> struct FPU does not work as expected. We could set it to 0 for a kernel >> thread so we don't end up with a random value. >> If we want to get this usecase working then we would have to move pkru >> value from FPU to mm_struct and consider it in use_mm(). Do we want >> this? > > As a start, I think keeping it in the FPU struct but loading it > unconditionally will work. kthreads will not obey PKU but it will be > better already. > > I honestly don't know if PKRU should be per-mm, I don't know mm very > well despite my brilliant observation above. :) > One of the rumored use cases for PKRU is to allow different threads in the same process to have different memory permissions, while still sharing the same page tables. Making it per-mm would break that :)