From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH 4/4] VMX/vPMU: reduce core2_vpmu_initialise() verbosity Date: Tue, 12 Aug 2014 10:29:56 +0100 Message-ID: <53E9DE94.5080100@citrix.com> References: <53E9F5A0020000780002B70C@mail.emea.novell.com> <53E9F822020000780002B744@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0810641950863548864==" Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1XH8P4-0000XI-DG for xen-devel@lists.xenproject.org; Tue, 12 Aug 2014 09:30:02 +0000 In-Reply-To: <53E9F822020000780002B744@mail.emea.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich , xen-devel Cc: Kevin Tian , Eddie Dong , Jun Nakajima List-Id: xen-devel@lists.xenproject.org --===============0810641950863548864== Content-Type: multipart/alternative; boundary="------------000502080601040204040606" --------------000502080601040204040606 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit On 12/08/14 10:18, Jan Beulich wrote: > No need to print these messages for each vCPU, even more, no need to > print them for each domain - they all depend on CPU features that are > either there or not. > > Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper > > --- a/xen/arch/x86/hvm/vmx/vpmu_core2.c > +++ b/xen/arch/x86/hvm/vmx/vpmu_core2.c > @@ -764,19 +764,19 @@ static int core2_vpmu_initialise(struct > { > struct vpmu_struct *vpmu = vcpu_vpmu(v); > u64 msr_content; > - struct cpuinfo_x86 *c = ¤t_cpu_data; > + static bool_t ds_warned; > > if ( !(vpmu_flags & VPMU_BOOT_BTS) ) > goto func_out; > /* Check the 'Debug Store' feature in the CPUID.EAX[1]:EDX[21] */ > - if ( cpu_has(c, X86_FEATURE_DS) ) > + while ( boot_cpu_has(X86_FEATURE_DS) ) > { > - if ( !cpu_has(c, X86_FEATURE_DTES64) ) > + if ( !boot_cpu_has(X86_FEATURE_DTES64) ) > { > - printk(XENLOG_G_WARNING "CPU doesn't support 64-bit DS Area" > - " - Debug Store disabled for %pv\n", > - v); > - goto func_out; > + if ( !ds_warned ) > + printk(XENLOG_G_WARNING "CPU doesn't support 64-bit DS Area" > + " - Debug Store disabled for guests\n"); > + break; > } > vpmu_set(vpmu, VPMU_CPU_HAS_DS); > rdmsrl(MSR_IA32_MISC_ENABLE, msr_content); > @@ -784,14 +784,16 @@ static int core2_vpmu_initialise(struct > { > /* If BTS_UNAVAIL is set reset the DS feature. */ > vpmu_reset(vpmu, VPMU_CPU_HAS_DS); > - printk(XENLOG_G_WARNING "CPU has set BTS_UNAVAIL" > - " - Debug Store disabled for %pv\n", > - v); > + if ( !ds_warned ) > + printk(XENLOG_G_WARNING "CPU has set BTS_UNAVAIL" > + " - Debug Store disabled for guests\n"); > + break; > } > - else > + > + vpmu_set(vpmu, VPMU_CPU_HAS_BTS); > + if ( !ds_warned ) > { > - vpmu_set(vpmu, VPMU_CPU_HAS_BTS); > - if ( !cpu_has(c, X86_FEATURE_DSCPL) ) > + if ( !boot_cpu_has(X86_FEATURE_DSCPL) ) > printk(XENLOG_G_INFO > "vpmu: CPU doesn't support CPL-Qualified BTS\n"); > printk("******************************************************\n"); > @@ -803,8 +805,10 @@ static int core2_vpmu_initialise(struct > printk("** It is NOT recommended for production use! **\n"); > printk("******************************************************\n"); > } > + break; > } > -func_out: > + ds_warned = 1; > + func_out: > check_pmc_quirk(); > return 0; > } > > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel --------------000502080601040204040606 Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit
On 12/08/14 10:18, Jan Beulich wrote:
No need to print these messages for each vCPU, even more, no need to
print them for each domain - they all depend on CPU features that are
either there or not.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

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


--- a/xen/arch/x86/hvm/vmx/vpmu_core2.c
+++ b/xen/arch/x86/hvm/vmx/vpmu_core2.c
@@ -764,19 +764,19 @@ static int core2_vpmu_initialise(struct 
 {
     struct vpmu_struct *vpmu = vcpu_vpmu(v);
     u64 msr_content;
-    struct cpuinfo_x86 *c = &current_cpu_data;
+    static bool_t ds_warned;
 
     if ( !(vpmu_flags & VPMU_BOOT_BTS) )
         goto func_out;
     /* Check the 'Debug Store' feature in the CPUID.EAX[1]:EDX[21] */
-    if ( cpu_has(c, X86_FEATURE_DS) )
+    while ( boot_cpu_has(X86_FEATURE_DS) )
     {
-        if ( !cpu_has(c, X86_FEATURE_DTES64) )
+        if ( !boot_cpu_has(X86_FEATURE_DTES64) )
         {
-            printk(XENLOG_G_WARNING "CPU doesn't support 64-bit DS Area"
-                   " - Debug Store disabled for %pv\n",
-                   v);
-            goto func_out;
+            if ( !ds_warned )
+                printk(XENLOG_G_WARNING "CPU doesn't support 64-bit DS Area"
+                       " - Debug Store disabled for guests\n");
+            break;
         }
         vpmu_set(vpmu, VPMU_CPU_HAS_DS);
         rdmsrl(MSR_IA32_MISC_ENABLE, msr_content);
@@ -784,14 +784,16 @@ static int core2_vpmu_initialise(struct 
         {
             /* If BTS_UNAVAIL is set reset the DS feature. */
             vpmu_reset(vpmu, VPMU_CPU_HAS_DS);
-            printk(XENLOG_G_WARNING "CPU has set BTS_UNAVAIL"
-                   " - Debug Store disabled for %pv\n",
-                   v);
+            if ( !ds_warned )
+                printk(XENLOG_G_WARNING "CPU has set BTS_UNAVAIL"
+                       " - Debug Store disabled for guests\n");
+            break;
         }
-        else
+
+        vpmu_set(vpmu, VPMU_CPU_HAS_BTS);
+        if ( !ds_warned )
         {
-            vpmu_set(vpmu, VPMU_CPU_HAS_BTS);
-            if ( !cpu_has(c, X86_FEATURE_DSCPL) )
+            if ( !boot_cpu_has(X86_FEATURE_DSCPL) )
                 printk(XENLOG_G_INFO
                        "vpmu: CPU doesn't support CPL-Qualified BTS\n");
             printk("******************************************************\n");
@@ -803,8 +805,10 @@ static int core2_vpmu_initialise(struct 
             printk("** It is NOT recommended for production use!        **\n");
             printk("******************************************************\n");
         }
+        break;
     }
-func_out:
+    ds_warned = 1;
+ func_out:
     check_pmc_quirk();
     return 0;
 }





_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

--------------000502080601040204040606-- --===============0810641950863548864== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --===============0810641950863548864==--