[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen master] x86: Use printk_once() instead of opencoding it



commit a6120e3fc8fd90f3ed638c6f7a573bfb534af154
Author:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Wed May 10 20:21:12 2023 +0100
Commit:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Tue Jun 20 17:20:01 2023 +0100

    x86: Use printk_once() instead of opencoding it
    
    Technically our helper post-dates all of these examples, but it's good 
cleanup
    nevertheless.  None of these examples should be using fully locked
    test_and_set_bool() in the first place.
    
    No functional change.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>
---
 xen/arch/x86/cpu/amd.c     | 27 +++++++++------------------
 xen/arch/x86/hvm/vmx/vmx.c | 18 ++++++------------
 xen/arch/x86/srat.c        |  8 ++------
 xen/arch/x86/time.c        | 19 ++++---------------
 4 files changed, 21 insertions(+), 51 deletions(-)

diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c
index 0d3143031b..0eaef82e51 100644
--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -493,7 +493,6 @@ void amd_check_disable_c1e(unsigned int port, u8 value)
 static void check_syscfg_dram_mod_en(void)
 {
        uint64_t syscfg;
-       static bool_t printed = 0;
 
        if (!((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) &&
                (boot_cpu_data.x86 >= 0x0f)))
@@ -503,9 +502,7 @@ static void check_syscfg_dram_mod_en(void)
        if (!(syscfg & SYSCFG_MTRR_FIX_DRAM_MOD_EN))
                return;
 
-       if (!test_and_set_bool(printed))
-               printk(KERN_ERR "MTRR: SYSCFG[MtrrFixDramModEn] not "
-                       "cleared by BIOS, clearing this bit\n");
+        printk_once(KERN_ERR "MTRR: SYSCFG[MtrrFixDramModEn] found set; 
clearing\n");
 
        syscfg &= ~SYSCFG_MTRR_FIX_DRAM_MOD_EN;
        wrmsrl(MSR_K8_SYSCFG, syscfg);
@@ -1107,25 +1104,19 @@ static void cf_check init_amd(struct cpuinfo_x86 *c)
 
                rdmsrl(MSR_AMD64_LS_CFG, value);
                if (!(value & (1 << 15))) {
-                       static bool_t warned;
-
-                       if (c == &boot_cpu_data || opt_cpu_info ||
-                           !test_and_set_bool(warned))
-                               printk(KERN_WARNING
-                                      "CPU%u: Applying workaround for erratum 
793\n",
-                                      smp_processor_id());
+                       if (c == &boot_cpu_data || opt_cpu_info)
+                               printk_once(XENLOG_WARNING
+                                           "CPU%u: Applying workaround for 
erratum 793\n",
+                                           smp_processor_id());
                        wrmsrl(MSR_AMD64_LS_CFG, value | (1 << 15));
                }
        } else if (c->x86 == 0x12) {
                rdmsrl(MSR_AMD64_DE_CFG, value);
                if (!(value & (1U << 31))) {
-                       static bool warned;
-
-                       if (c == &boot_cpu_data || opt_cpu_info ||
-                           !test_and_set_bool(warned))
-                               printk(KERN_WARNING
-                                      "CPU%u: Applying workaround for erratum 
665\n",
-                                      smp_processor_id());
+                       if (c == &boot_cpu_data || opt_cpu_info)
+                               printk_once(XENLOG_WARNING
+                                           "CPU%u: Applying workaround for 
erratum 665\n",
+                                           smp_processor_id());
                        wrmsrl(MSR_AMD64_DE_CFG, value | (1U << 31));
                }
        }
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 40767b94c3..c686e6990c 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -1207,16 +1207,11 @@ static void cf_check vmx_get_segment_register(
      */
     if ( unlikely(!vmx_vmcs_try_enter(v)) )
     {
-        static bool_t warned;
+        printk_once(XENLOG_WARNING "Segment register inaccessible for %pv\n"
+                    "(If you see this outside of debugging activity,"
+                    " please report to xen-devel@xxxxxxxxxxxxxxxxxxxx)\n",
+                    v);
 
-        if ( !warned )
-        {
-            warned = 1;
-            printk(XENLOG_WARNING "Segment register inaccessible for %pv\n"
-                   "(If you see this outside of debugging activity,"
-                   " please report to xen-devel@xxxxxxxxxxxxxxxxxxxx)\n",
-                   v);
-        }
         memset(reg, 0, sizeof(*reg));
         return;
     }
@@ -2325,10 +2320,9 @@ static bool cf_check vmx_test_pir(const struct vcpu *v, 
uint8_t vec)
 static void cf_check vmx_handle_eoi(uint8_t vector, int isr)
 {
     uint8_t old_svi = set_svi(isr);
-    static bool warned;
 
-    if ( vector != old_svi && !test_and_set_bool(warned) )
-        printk(XENLOG_WARNING "EOI for %02x but SVI=%02x\n", vector, old_svi);
+    if ( vector != old_svi )
+        printk_once(XENLOG_WARNING "EOI for %02x but SVI=%02x\n", vector, 
old_svi);
 }
 
 static void cf_check vmx_enable_msr_interception(struct domain *d, uint32_t 
msr)
diff --git a/xen/arch/x86/srat.c b/xen/arch/x86/srat.c
index 56749ddca5..3f70338e6e 100644
--- a/xen/arch/x86/srat.c
+++ b/xen/arch/x86/srat.c
@@ -55,7 +55,6 @@ nodeid_t setup_node(unsigned pxm)
 {
        nodeid_t node;
        unsigned idx;
-       static bool warned;
        static unsigned nodes_found;
 
        BUILD_BUG_ON(MAX_NUMNODES >= NUMA_NO_NODE);
@@ -75,11 +74,8 @@ nodeid_t setup_node(unsigned pxm)
                if (pxm2node[idx].node == NUMA_NO_NODE)
                        goto finish;
 
-       if (!warned) {
-               printk(KERN_WARNING "SRAT: Too many proximity domains (%#x)\n",
-                      pxm);
-               warned = true;
-       }
+       printk_once(XENLOG_WARNING "SRAT: Too many proximity domains (%#x)\n",
+                   pxm);
 
        return NUMA_NO_NODE;
 
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index bc75e1ae7d..f5e30d4e02 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -876,13 +876,8 @@ static void cf_check plt_overflow(void *unused)
         plt_stamp64 += plt_mask + 1;
     }
     if ( i != 0 )
-    {
-        static bool warned_once;
-
-        if ( !test_and_set_bool(warned_once) )
-            printk("Platform timer appears to have unexpectedly wrapped "
-                   "%u%s times.\n", i, (i == 10) ? " or more" : "");
-    }
+        printk_once("Platform timer appears to have unexpectedly wrapped "
+                    "%u%s times.\n", i, (i == 10) ? " or more" : "");
 
     spin_unlock_irq(&platform_timer_lock);
 
@@ -2156,14 +2151,8 @@ void init_percpu_time(void)
         }
         else if ( adj != tsc_adjust[socket] )
         {
-            static bool __read_mostly warned;
-
-            if ( !warned )
-            {
-                warned = true;
-                printk(XENLOG_WARNING
-                       "Differing TSC ADJUST values within socket(s) - fixing 
all\n");
-            }
+            printk_once(XENLOG_WARNING
+                        "Differing TSC ADJUST values within socket(s) - fixing 
all\n");
             wrmsrl(MSR_IA32_TSC_ADJUST, tsc_adjust[socket]);
         }
     }
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.