On 09.07.2024 08:07, Sergiy Kibrik wrote: > @@ -363,7 +364,7 @@ static int cf_check amd_vpmu_do_wrmsr(unsigned int msr, > uint64_t msr_content) > return 0; > vpmu_set(vpmu, VPMU_RUNNING); > > - if ( is_hvm_vcpu(v) && is_msr_bitmap_on(vpmu) ) > + if ( is_svm_vcpu(v) && is_msr_bitmap_on(vpmu) ) > amd_vpmu_set_msr_bitmap(v); > }
Up from here there's another is_hvm_vcpu(). I think you want to change all of them, for consistency. > @@ -269,7 +271,7 @@ static inline void __core2_vpmu_save(struct vcpu *v) > if ( !is_hvm_vcpu(v) ) > rdmsrl(MSR_CORE_PERF_GLOBAL_STATUS, core2_vpmu_cxt->global_status); > /* Save MSR to private context to make it fork-friendly */ > - else if ( mem_sharing_enabled(v->domain) ) > + else if ( is_vmx_vcpu(v) && mem_sharing_enabled(v->domain) ) > vmx_read_guest_msr(v, MSR_CORE_PERF_GLOBAL_CTRL, > &core2_vpmu_cxt->global_ctrl); > } Why don't you change the is_hvm_vcpu() that even is visible in context? Then this hunk would also actually follow what the description says. > @@ -333,7 +335,7 @@ static inline void __core2_vpmu_load(struct vcpu *v) > wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, core2_vpmu_cxt->global_ctrl); > } > /* Restore MSR from context when used with a fork */ > - else if ( mem_sharing_is_fork(v->domain) ) > + else if ( is_vmx_vcpu(v) && mem_sharing_is_fork(v->domain) ) > vmx_write_guest_msr(v, MSR_CORE_PERF_GLOBAL_CTRL, > core2_vpmu_cxt->global_ctrl); > } Same here, and up from here there are again two more places to change (plus at least one more further down). Jan