On 2/21/19 3:50 AM, Sebastian Andrzej Siewior wrote:
> @@ -111,6 +111,12 @@ static inline void __write_pkru(u32 pkru)
>  {
>       u32 ecx = 0, edx = 0;
>  
> +     /*
> +      * WRPKRU is relatively expensive compared to RDPKRU.
> +      * Avoid WRPKRU when it would not change the value.
> +      */
> +     if (pkru == __read_pkru())
> +             return;
>       /*
>        * "wrpkru" instruction.  Loads contents in EAX to PKRU,
>        * requires that ecx = edx = 0.

Could we do this in write_pkru() instead?  I tried to keep the __
versions of read and write as simple and symmetric as possible.

Reply via email to