diff --git a/android-qemu2-glue/main.cpp b/android-qemu2-glue/main.cpp
index 96f8374..8dc27b5 100755
--- a/android-qemu2-glue/main.cpp
+++ b/android-qemu2-glue/main.cpp
@@ -712,6 +712,12 @@
     args[n++] = "-cpu";
     args[n++] = kTarget.qemuCpu;
 
+    // Set env var to "on" for Intel PMU if the feature is enabled.
+    // cpu.c will then read that.
+    if (android::featurecontrol::isEnabled(android::featurecontrol::IntelPerformanceMonitoringUnit)) {
+        setenv("ANDROID_EMU_FEATURE_IntelPerformanceMonitoringUnit", "on", 1);
+    }
+
 #if defined(TARGET_X86_64) || defined(TARGET_I386)
     char* accel_status = NULL;
     CpuAccelMode accel_mode = ACCEL_AUTO;
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 14f2dbd..ea6aefa 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -3293,6 +3293,31 @@
     g_strfreev(names);
 }
 
+static void android_emulator_set_pmu_feature(X86CPU *cpu)
+{
+    char* intel_pmu_enabled =
+        getenv("ANDROID_EMU_FEATURE_IntelPerformanceMonitoringUnit");
+    if (kvm_enabled() &&
+        intel_pmu_enabled &&
+        !strcmp("on", intel_pmu_enabled)) {
+
+        CPUX86State *env = &cpu->env;
+        KVMState *s = kvm_state;
+
+        /* Use the host/KVM CPUID level in order to enable additional features
+         * supported by the host CPU, such as PMU. Cf. host_x86_cpu_initfn().
+         */
+        env->cpuid_level = kvm_arch_get_supported_cpuid(s, 0x0, 0, R_EAX);
+        env->cpuid_xlevel = kvm_arch_get_supported_cpuid(s, 0x80000000, 0,
+                                                         R_EAX);
+        env->cpuid_xlevel2 = kvm_arch_get_supported_cpuid(s, 0xC0000000, 0,
+                                                          R_EAX);
+
+        /* Enable PMU (this has no effect if env->cpuid_level < 0xA) */
+        object_property_set_bool(OBJECT(cpu), true, "pmu", &error_abort);
+    }
+}
+
 static void x86_cpu_initfn(Object *obj)
 {
     CPUState *cs = CPU(obj);
@@ -3339,6 +3364,8 @@
     }
 
     x86_cpu_load_def(cpu, xcc->cpu_def, &error_abort);
+
+    android_emulator_set_pmu_feature(cpu);
 }
 
 static int64_t x86_cpu_get_arch_id(CPUState *cs)
