xen/arch/x86/cpu/amd.c | 22 ++++++++-------------- xen/arch/x86/hvm/vmx/vmx.c | 18 ++++++------------ xen/arch/x86/srat.c | 8 ++------ xen/arch/x86/time.c | 19 ++++--------------- 4 files changed, 20 insertions(+), 47 deletions(-)
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@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Jun Nakajima <jun.nakajima@intel.com>
CC: Kevin Tian <kevin.tian@intel.com>
---
xen/arch/x86/cpu/amd.c | 22 ++++++++--------------
xen/arch/x86/hvm/vmx/vmx.c | 18 ++++++------------
xen/arch/x86/srat.c | 8 ++------
xen/arch/x86/time.c | 19 ++++---------------
4 files changed, 20 insertions(+), 47 deletions(-)
diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c
index caafe4474021..630adead2fc1 100644
--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -1061,25 +1061,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 096c69251d58..0f392fc0d4fe 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -1183,16 +1183,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@lists.xenproject.org)\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@lists.xenproject.org)\n",
- v);
- }
memset(reg, 0, sizeof(*reg));
return;
}
@@ -2301,10 +2296,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 56749ddca526..3f70338e6e23 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 bc75e1ae7d42..f5e30d4e0236 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]);
}
}
base-commit: 31c65549746179e16cf3f82b694b4b1e0b7545ca
--
2.30.2
On 10.05.2023 21:33, Andrew Cooper wrote: > 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@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
© 2016 - 2024 Red Hat, Inc.