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?
> + 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/