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
On Thu, May 11, 2017 at 5:32 PM, Huang, Kai <kai.huang(a)linux.intel.com> 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.