On Thu, May 11, 2017 at 08:28:37PM -0700, Andy Lutomirski wrote: > [resending due to some kind of kernel.org glitch -- sorry if anyone > gets duplicates] > > On Thu, May 11, 2017 at 5:32 PM, Huang, Kai <kai.huang@xxxxxxxxxxxxxxx> wrote: > > My current patch is based on this assumption. For KVM guest, naturally, we > > will write the cached value to real MSRs when vcpu is scheduled in. For > > host, SGX driver should write its own value to MSRs when it performs EINIT > > for LE. > > This seems unnecessarily slow (perhaps *extremely* slow) to me. I > would propose a totally different solution: > > Have a percpu variable that stores the current SGXLEPUBKEYHASH along > with whatever lock is needed (probably just a mutex). Users of EINIT > will take the mutex, compare the percpu variable to the desired value, > and, if it's different, do WRMSR and update the percpu variable. This is exactly what I've been suggesting internally: trap EINIT and check the value and write conditionally. I think this would be the best starting point. /Jarkko