On 10.01.2023 18:18, Andrew Cooper wrote: > @@ -2471,6 +2477,9 @@ static uint64_t cf_check vmx_get_reg(struct vcpu *v, > unsigned int reg) > } > return val; > > + case MSR_PKRS: > + return (v == curr) ? rdpkrs() : msrs->pkrs;
Nothing here or ... > @@ -2514,6 +2525,12 @@ static void cf_check vmx_set_reg(struct vcpu *v, > unsigned int reg, uint64_t val) > domain_crash(d); > } > return; > + > + case MSR_PKRS: > + msrs->pkrs = val; > + if ( v == curr ) > + wrpkrs(val); > + return; ... here is VMX or (if we were to support it, just as a abstract consideration) HVM specific. Which makes me wonder why this needs handling in [gs]et_reg() in the first place. I guess I'm still not fully in sync with your longer term plans here ... The other thing I'd like to understand (and having an answer to this would have been better before re-applying my R-b to this re-based logic) is towards the lack of feature checks here. hvm_get_reg() can be called from other than guest_rdmsr(), for an example see arch_get_info_guest(). Jan