[kvm-unit-tests patch v3 5/8] x86/pmu: Relax precise count check for emulated instructions tests

Dapeng Mi posted 8 patches 5 months, 1 week ago
[kvm-unit-tests patch v3 5/8] x86/pmu: Relax precise count check for emulated instructions tests
Posted by Dapeng Mi 5 months, 1 week ago
Relax precise count check for emulated instructions tests on these
platforms with HW overcount issues.

Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
---
 x86/pmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/x86/pmu.c b/x86/pmu.c
index c54c0988..6bf6eee3 100644
--- a/x86/pmu.c
+++ b/x86/pmu.c
@@ -790,7 +790,7 @@ static void check_emulated_instr(void)
 
 	// Check that the end count - start count is at least the expected
 	// number of instructions and branches.
-	if (this_cpu_has_perf_global_ctrl()) {
+	if (this_cpu_has_perf_global_ctrl() && !intel_inst_overcount_flags) {
 		report(instr_cnt.count - instr_start == KVM_FEP_INSNS,
 		       "instruction count");
 		report(brnch_cnt.count - brnch_start == KVM_FEP_BRANCHES,
-- 
2.34.1
Re: [kvm-unit-tests patch v3 5/8] x86/pmu: Relax precise count check for emulated instructions tests
Posted by Sean Christopherson 2 months, 2 weeks ago
On Wed, Sep 03, 2025, Dapeng Mi wrote:
> Relax precise count check for emulated instructions tests on these
> platforms with HW overcount issues.
> 
> Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
> ---
>  x86/pmu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/x86/pmu.c b/x86/pmu.c
> index c54c0988..6bf6eee3 100644
> --- a/x86/pmu.c
> +++ b/x86/pmu.c
> @@ -790,7 +790,7 @@ static void check_emulated_instr(void)
>  
>  	// Check that the end count - start count is at least the expected
>  	// number of instructions and branches.
> -	if (this_cpu_has_perf_global_ctrl()) {
> +	if (this_cpu_has_perf_global_ctrl() && !intel_inst_overcount_flags) {

This skips precise checking if _either_ errata is present.  IIUC, we can still do
a precise check for branches retired on Clearwater Forest, but not for instructions
retired.

>  		report(instr_cnt.count - instr_start == KVM_FEP_INSNS,
>  		       "instruction count");
>  		report(brnch_cnt.count - brnch_start == KVM_FEP_BRANCHES,
> -- 
> 2.34.1
>
Re: [kvm-unit-tests patch v3 5/8] x86/pmu: Relax precise count check for emulated instructions tests
Posted by Mi, Dapeng 2 months, 2 weeks ago
On 11/21/2025 6:29 AM, Sean Christopherson wrote:
> On Wed, Sep 03, 2025, Dapeng Mi wrote:
>> Relax precise count check for emulated instructions tests on these
>> platforms with HW overcount issues.
>>
>> Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
>> ---
>>  x86/pmu.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/x86/pmu.c b/x86/pmu.c
>> index c54c0988..6bf6eee3 100644
>> --- a/x86/pmu.c
>> +++ b/x86/pmu.c
>> @@ -790,7 +790,7 @@ static void check_emulated_instr(void)
>>  
>>  	// Check that the end count - start count is at least the expected
>>  	// number of instructions and branches.
>> -	if (this_cpu_has_perf_global_ctrl()) {
>> +	if (this_cpu_has_perf_global_ctrl() && !intel_inst_overcount_flags) {
> This skips precise checking if _either_ errata is present.  IIUC, we can still do
> a precise check for branches retired on Clearwater Forest, but not for instructions
> retired.

Yes, this is correct. 


>
>>  		report(instr_cnt.count - instr_start == KVM_FEP_INSNS,
>>  		       "instruction count");
>>  		report(brnch_cnt.count - brnch_start == KVM_FEP_BRANCHES,
>> -- 
>> 2.34.1
>>