Hi Francesco, On 3/5/25 3:41 AM, Francesco Lavra wrote: > On 2025-03-02 at 22:00, Dongli Zhang wrote: >> +static bool is_same_vendor(CPUX86State *env) >> +{ >> + static uint32_t host_cpuid_vendor1; >> + static uint32_t host_cpuid_vendor2; >> + static uint32_t host_cpuid_vendor3; > > What's the purpose of making these variables static? My fault. I used to make them globally shared during the development in case any other users may need them in the future, but finally decided to move them into the function as local variables. I just erroneously copied 'static' with the variable. Thank you very much for identifying the issue. Dongli Zhang > >> + host_cpuid(0x0, 0, NULL, &host_cpuid_vendor1, >> &host_cpuid_vendor3, >> + &host_cpuid_vendor2); >> + >> + return env->cpuid_vendor1 == host_cpuid_vendor1 && >> + env->cpuid_vendor2 == host_cpuid_vendor2 && >> + env->cpuid_vendor3 == host_cpuid_vendor3; >> +} >> + >> +static void kvm_init_pmu_info(CPUState *cs) >> +{ >> + X86CPU *cpu = X86_CPU(cs); >> + CPUX86State *env = &cpu->env; >> + >> + /* >> + * The PMU virtualization is disabled by kvm.enable_pmu=N. >> + */ >> + if (kvm_pmu_disabled) { >> + return; >> + } >> + >> + /* >> + * It is not supported to virtualize AMD PMU registers on Intel >> + * processors, nor to virtualize Intel PMU registers on AMD >> processors. >> + */ >> + if (!is_same_vendor(env)) { >> + return; >> + } >> + >> + /* >> + * If KVM_CAP_PMU_CAPABILITY is not supported, there is no way >> to >> + * disable the AMD pmu virtualization. > > s/pmu/PMU/