diff mbox

x86/vpmu: Remove unnecessary call to do_interrupt()

Message ID 1508887820-23533-1-git-send-email-boris.ostrovsky@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Boris Ostrovsky Oct. 24, 2017, 11:30 p.m. UTC
This call was left during PVHv1 removal (commit 33e5c32559e1 ("x86:
remove PVHv1 code")):

-        if ( is_pvh_vcpu(sampling) &&
-             !(vpmu_mode & XENPMU_MODE_ALL) &&
+        if ( !(vpmu_mode & XENPMU_MODE_ALL) &&
              !vpmu->arch_vpmu_ops->do_interrupt(regs) )
             return;

As result of this extra call VPMU no longer works for PV guests on Intel
because we effectively lose value of MSR_CORE_PERF_GLOBAL_STATUS.

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
---
This should also go into 4.9

 xen/arch/x86/cpu/vpmu.c | 4 ----
 1 file changed, 4 deletions(-)

Comments

Andrew Cooper Oct. 25, 2017, 10:30 a.m. UTC | #1
On 25/10/17 00:30, Boris Ostrovsky wrote:
> This call was left during PVHv1 removal (commit 33e5c32559e1 ("x86:
> remove PVHv1 code")):
>
> -        if ( is_pvh_vcpu(sampling) &&
> -             !(vpmu_mode & XENPMU_MODE_ALL) &&
> +        if ( !(vpmu_mode & XENPMU_MODE_ALL) &&
>               !vpmu->arch_vpmu_ops->do_interrupt(regs) )
>              return;
>
> As result of this extra call VPMU no longer works for PV guests on Intel
> because we effectively lose value of MSR_CORE_PERF_GLOBAL_STATUS.
>
> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

> ---
> This should also go into 4.9

Agreed, and therefore makes it a 4.10 candidate at this point.

~Andrew

>
>  xen/arch/x86/cpu/vpmu.c | 4 ----
>  1 file changed, 4 deletions(-)
>
> diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c
> index fd2fcac..7baf461 100644
> --- a/xen/arch/x86/cpu/vpmu.c
> +++ b/xen/arch/x86/cpu/vpmu.c
> @@ -227,10 +227,6 @@ void vpmu_do_interrupt(struct cpu_user_regs *regs)
>          if ( !vpmu->xenpmu_data )
>              return;
>  
> -        if ( !(vpmu_mode & XENPMU_MODE_ALL) &&
> -             !vpmu->arch_vpmu_ops->do_interrupt(regs) )
> -            return;
> -
>          if ( vpmu_is_set(vpmu, VPMU_CACHED) )
>              return;
>
Julien Grall Oct. 27, 2017, 1:30 p.m. UTC | #2
On 25/10/17 11:30, Andrew Cooper wrote:
> On 25/10/17 00:30, Boris Ostrovsky wrote:
>> This call was left during PVHv1 removal (commit 33e5c32559e1 ("x86:
>> remove PVHv1 code")):
>>
>> -        if ( is_pvh_vcpu(sampling) &&
>> -             !(vpmu_mode & XENPMU_MODE_ALL) &&
>> +        if ( !(vpmu_mode & XENPMU_MODE_ALL) &&
>>                !vpmu->arch_vpmu_ops->do_interrupt(regs) )
>>               return;
>>
>> As result of this extra call VPMU no longer works for PV guests on Intel
>> because we effectively lose value of MSR_CORE_PERF_GLOBAL_STATUS.
>>
>> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
> 
> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
>> ---
>> This should also go into 4.9
> 
> Agreed, and therefore makes it a 4.10 candidate at this point.

Release-acked-by: Julien Grall <julien.grall@linaro.org>

Cheers,

> 
> ~Andrew
> 
>>
>>   xen/arch/x86/cpu/vpmu.c | 4 ----
>>   1 file changed, 4 deletions(-)
>>
>> diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c
>> index fd2fcac..7baf461 100644
>> --- a/xen/arch/x86/cpu/vpmu.c
>> +++ b/xen/arch/x86/cpu/vpmu.c
>> @@ -227,10 +227,6 @@ void vpmu_do_interrupt(struct cpu_user_regs *regs)
>>           if ( !vpmu->xenpmu_data )
>>               return;
>>   
>> -        if ( !(vpmu_mode & XENPMU_MODE_ALL) &&
>> -             !vpmu->arch_vpmu_ops->do_interrupt(regs) )
>> -            return;
>> -
>>           if ( vpmu_is_set(vpmu, VPMU_CACHED) )
>>               return;
>>   
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> https://lists.xen.org/xen-devel
>
diff mbox

Patch

diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c
index fd2fcac..7baf461 100644
--- a/xen/arch/x86/cpu/vpmu.c
+++ b/xen/arch/x86/cpu/vpmu.c
@@ -227,10 +227,6 @@  void vpmu_do_interrupt(struct cpu_user_regs *regs)
         if ( !vpmu->xenpmu_data )
             return;
 
-        if ( !(vpmu_mode & XENPMU_MODE_ALL) &&
-             !vpmu->arch_vpmu_ops->do_interrupt(regs) )
-            return;
-
         if ( vpmu_is_set(vpmu, VPMU_CACHED) )
             return;