On 7/30/2021 1:45 AM, Paolo Bonzini wrote:
On 29/07/21 19:25, Sean Christopherson wrote:
- unsigned int cr4_pke:1;
+ unsigned int cr4_pkr:1;
Smushing these together will not work, as this code (from below)
- ext.cr4_pke = !!kvm_read_cr4_bits(vcpu, X86_CR4_PKE);
+ ext.cr4_pkr = !!kvm_read_cr4_bits(vcpu, X86_CR4_PKE) ||
+ !!kvm_read_cr4_bits(vcpu, X86_CR4_PKS);
will generate the same mmu_role for CR4.PKE=0,PKS=1 and
CR4.PKE=1,PKS=1 (and
other combinations). I.e. KVM will fail to reconfigure the MMU and
thus skip
update_pkr_bitmask() if the guest toggles PKE or PKS while the other
PK* bit is set.
I'm also not sure why there would be issues in just using cr4_pks.
Will split out the pke and pks.
Thanks
Chenyi
Paolo