* [PATCH 1/2] xen/lib: Introduce printk_once() and replace some opencoded examples
@ 2019-05-17 18:58 ` Andrew Cooper
0 siblings, 0 replies; 10+ messages in thread
From: Andrew Cooper @ 2019-05-17 18:58 UTC (permalink / raw)
To: Xen-devel
Cc: Stefano Stabellini, Wei Liu, Andrew Cooper, Julien Grall,
Jan Beulich, Roger Pau Monné
Reflow the ZynqMP message for grepability, and fix the omission of a newline.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien.grall@arm.com>
---
xen/arch/arm/cpuerrata.c | 18 ++----------------
xen/arch/arm/platforms/xilinx-zynqmp.c | 9 ++-------
xen/include/xen/lib.h | 11 +++++++++++
3 files changed, 15 insertions(+), 23 deletions(-)
diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
index 4431b24..8904939 100644
--- a/xen/arch/arm/cpuerrata.c
+++ b/xen/arch/arm/cpuerrata.c
@@ -336,18 +336,11 @@ static bool has_ssbd_mitigation(const struct arm_cpu_capabilities *entry)
switch ( ssbd_state )
{
case ARM_SSBD_FORCE_DISABLE:
- {
- static bool once = true;
-
- if ( once )
- printk("%s disabled from command-line\n", entry->desc);
- once = false;
+ printk_once("%s disabled from command-line\n", entry->desc);
arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 0, NULL);
required = false;
-
break;
- }
case ARM_SSBD_RUNTIME:
if ( required )
@@ -359,18 +352,11 @@ static bool has_ssbd_mitigation(const struct arm_cpu_capabilities *entry)
break;
case ARM_SSBD_FORCE_ENABLE:
- {
- static bool once = true;
-
- if ( once )
- printk("%s forced from command-line\n", entry->desc);
- once = false;
+ printk_once("%s forced from command-line\n", entry->desc);
arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 1, NULL);
required = true;
-
break;
- }
default:
ASSERT_UNREACHABLE();
diff --git a/xen/arch/arm/platforms/xilinx-zynqmp.c b/xen/arch/arm/platforms/xilinx-zynqmp.c
index 08e3e11..3060d79 100644
--- a/xen/arch/arm/platforms/xilinx-zynqmp.c
+++ b/xen/arch/arm/platforms/xilinx-zynqmp.c
@@ -35,14 +35,9 @@ static bool zynqmp_smc(struct cpu_user_regs *regs)
*/
if ( !cpus_have_const_cap(ARM_SMCCC_1_1) )
{
- static bool once = true;
+ printk_once(XENLOG_WARNING
+ "ZynqMP firmware Error: no SMCCC 1.1 support. Disabling firmware calls\n");
- if ( once )
- {
- printk(XENLOG_WARNING "ZynqMP firmware Error: no SMCCC 1.1 "
- "support. Disabling firmware calls.");
- once = false;
- }
return false;
}
return zynqmp_eemi(regs);
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 91ed56c..ce231c5 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -105,6 +105,17 @@ debugtrace_printk(const char *fmt, ...) {}
#define _p(_x) ((void *)(unsigned long)(_x))
extern void printk(const char *format, ...)
__attribute__ ((format (printf, 1, 2)));
+
+#define printk_once(fmt, args...) \
+({ \
+ static bool __read_mostly once_; \
+ if ( unlikely(!once_) ) \
+ { \
+ once_ = true; \
+ printk(fmt, ## args); \
+ } \
+})
+
extern void guest_printk(const struct domain *d, const char *format, ...)
__attribute__ ((format (printf, 2, 3)));
extern void noreturn panic(const char *format, ...)
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Xen-devel] [PATCH 1/2] xen/lib: Introduce printk_once() and replace some opencoded examples
@ 2019-05-17 18:58 ` Andrew Cooper
0 siblings, 0 replies; 10+ messages in thread
From: Andrew Cooper @ 2019-05-17 18:58 UTC (permalink / raw)
To: Xen-devel
Cc: Stefano Stabellini, Wei Liu, Andrew Cooper, Julien Grall,
Jan Beulich, Roger Pau Monné
Reflow the ZynqMP message for grepability, and fix the omission of a newline.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien.grall@arm.com>
---
xen/arch/arm/cpuerrata.c | 18 ++----------------
xen/arch/arm/platforms/xilinx-zynqmp.c | 9 ++-------
xen/include/xen/lib.h | 11 +++++++++++
3 files changed, 15 insertions(+), 23 deletions(-)
diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
index 4431b24..8904939 100644
--- a/xen/arch/arm/cpuerrata.c
+++ b/xen/arch/arm/cpuerrata.c
@@ -336,18 +336,11 @@ static bool has_ssbd_mitigation(const struct arm_cpu_capabilities *entry)
switch ( ssbd_state )
{
case ARM_SSBD_FORCE_DISABLE:
- {
- static bool once = true;
-
- if ( once )
- printk("%s disabled from command-line\n", entry->desc);
- once = false;
+ printk_once("%s disabled from command-line\n", entry->desc);
arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 0, NULL);
required = false;
-
break;
- }
case ARM_SSBD_RUNTIME:
if ( required )
@@ -359,18 +352,11 @@ static bool has_ssbd_mitigation(const struct arm_cpu_capabilities *entry)
break;
case ARM_SSBD_FORCE_ENABLE:
- {
- static bool once = true;
-
- if ( once )
- printk("%s forced from command-line\n", entry->desc);
- once = false;
+ printk_once("%s forced from command-line\n", entry->desc);
arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 1, NULL);
required = true;
-
break;
- }
default:
ASSERT_UNREACHABLE();
diff --git a/xen/arch/arm/platforms/xilinx-zynqmp.c b/xen/arch/arm/platforms/xilinx-zynqmp.c
index 08e3e11..3060d79 100644
--- a/xen/arch/arm/platforms/xilinx-zynqmp.c
+++ b/xen/arch/arm/platforms/xilinx-zynqmp.c
@@ -35,14 +35,9 @@ static bool zynqmp_smc(struct cpu_user_regs *regs)
*/
if ( !cpus_have_const_cap(ARM_SMCCC_1_1) )
{
- static bool once = true;
+ printk_once(XENLOG_WARNING
+ "ZynqMP firmware Error: no SMCCC 1.1 support. Disabling firmware calls\n");
- if ( once )
- {
- printk(XENLOG_WARNING "ZynqMP firmware Error: no SMCCC 1.1 "
- "support. Disabling firmware calls.");
- once = false;
- }
return false;
}
return zynqmp_eemi(regs);
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 91ed56c..ce231c5 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -105,6 +105,17 @@ debugtrace_printk(const char *fmt, ...) {}
#define _p(_x) ((void *)(unsigned long)(_x))
extern void printk(const char *format, ...)
__attribute__ ((format (printf, 1, 2)));
+
+#define printk_once(fmt, args...) \
+({ \
+ static bool __read_mostly once_; \
+ if ( unlikely(!once_) ) \
+ { \
+ once_ = true; \
+ printk(fmt, ## args); \
+ } \
+})
+
extern void guest_printk(const struct domain *d, const char *format, ...)
__attribute__ ((format (printf, 2, 3)));
extern void noreturn panic(const char *format, ...)
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] x86/mpparse: Don't print "limit reached" for every subsequent processor
@ 2019-05-17 18:58 ` Andrew Cooper
0 siblings, 0 replies; 10+ messages in thread
From: Andrew Cooper @ 2019-05-17 18:58 UTC (permalink / raw)
To: Xen-devel; +Cc: Andrew Cooper, Wei Liu, Jan Beulich, Roger Pau Monné
When you boot Xen with the default 256 NR_CPUS, on a box with rather more
processors, the resulting spew is unnecesserily verbose. Instead, print the
message once, e.g:
(XEN) ACPI: X2APIC (apic_id[0x115] uid[0x115] enabled)
(XEN) WARNING: NR_CPUS limit of 256 reached - ignoring further processors
(XEN) ACPI: X2APIC (apic_id[0x119] uid[0x119] enabled)
(XEN) ACPI: X2APIC (apic_id[0x11d] uid[0x11d] enabled)
(XEN) ACPI: X2APIC (apic_id[0x121] uid[0x121] enabled)
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
xen/arch/x86/mpparse.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
index 16c93a9..f057d91 100644
--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -157,15 +157,16 @@ static int MP_processor_info_x(struct mpc_config_processor *m,
set_apicid(apicid, &phys_cpu_present_map);
if (num_processors >= nr_cpu_ids) {
- printk(KERN_WARNING "WARNING: NR_CPUS limit of %u reached."
- " Processor ignored.\n", nr_cpu_ids);
+ printk_once(XENLOG_WARNING
+ "WARNING: NR_CPUS limit of %u reached - ignoring further processors\n",
+ nr_cpu_ids);
return -ENOSPC;
}
if (num_processors >= 8 && hotplug
&& genapic.name == apic_default.name) {
- printk(KERN_WARNING "WARNING: CPUs limit of 8 reached."
- " Processor ignored.\n");
+ printk_once(XENLOG_WARNING
+ "WARNING: CPUs limit of 8 reached - ignoring futher processors\n");
return -ENOSPC;
}
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Xen-devel] [PATCH 2/2] x86/mpparse: Don't print "limit reached" for every subsequent processor
@ 2019-05-17 18:58 ` Andrew Cooper
0 siblings, 0 replies; 10+ messages in thread
From: Andrew Cooper @ 2019-05-17 18:58 UTC (permalink / raw)
To: Xen-devel; +Cc: Andrew Cooper, Wei Liu, Jan Beulich, Roger Pau Monné
When you boot Xen with the default 256 NR_CPUS, on a box with rather more
processors, the resulting spew is unnecesserily verbose. Instead, print the
message once, e.g:
(XEN) ACPI: X2APIC (apic_id[0x115] uid[0x115] enabled)
(XEN) WARNING: NR_CPUS limit of 256 reached - ignoring further processors
(XEN) ACPI: X2APIC (apic_id[0x119] uid[0x119] enabled)
(XEN) ACPI: X2APIC (apic_id[0x11d] uid[0x11d] enabled)
(XEN) ACPI: X2APIC (apic_id[0x121] uid[0x121] enabled)
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
xen/arch/x86/mpparse.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
index 16c93a9..f057d91 100644
--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -157,15 +157,16 @@ static int MP_processor_info_x(struct mpc_config_processor *m,
set_apicid(apicid, &phys_cpu_present_map);
if (num_processors >= nr_cpu_ids) {
- printk(KERN_WARNING "WARNING: NR_CPUS limit of %u reached."
- " Processor ignored.\n", nr_cpu_ids);
+ printk_once(XENLOG_WARNING
+ "WARNING: NR_CPUS limit of %u reached - ignoring further processors\n",
+ nr_cpu_ids);
return -ENOSPC;
}
if (num_processors >= 8 && hotplug
&& genapic.name == apic_default.name) {
- printk(KERN_WARNING "WARNING: CPUs limit of 8 reached."
- " Processor ignored.\n");
+ printk_once(XENLOG_WARNING
+ "WARNING: CPUs limit of 8 reached - ignoring futher processors\n");
return -ENOSPC;
}
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] xen/lib: Introduce printk_once() and replace some opencoded examples
@ 2019-05-20 8:24 ` Jan Beulich
0 siblings, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2019-05-20 8:24 UTC (permalink / raw)
To: Andrew Cooper
Cc: xen-devel, Julien Grall, Stefano Stabellini, Wei Liu, Roger Pau Monne
>>> On 17.05.19 at 20:58, <andrew.cooper3@citrix.com> wrote:
> Reflow the ZynqMP message for grepability, and fix the omission of a newline.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
with two remarks:
> --- a/xen/include/xen/lib.h
> +++ b/xen/include/xen/lib.h
> @@ -105,6 +105,17 @@ debugtrace_printk(const char *fmt, ...) {}
> #define _p(_x) ((void *)(unsigned long)(_x))
> extern void printk(const char *format, ...)
> __attribute__ ((format (printf, 1, 2)));
> +
> +#define printk_once(fmt, args...) \
> +({ \
> + static bool __read_mostly once_; \
> + if ( unlikely(!once_) ) \
> + { \
> + once_ = true; \
> + printk(fmt, ## args); \
> + } \
> +})
Just like Linux we accept this having a small race window, i.e.
it not truly being "once" in unlikely cases. I think it would be
worthwhile to make this intention explicit in the commit
message.
Unlike Linux'es the macro doesn't have a "return value". Is
this intentional? I view this as particularly useful for the
WARN_ONCE() sort-of counterpart, but I have to admit I can't
immediately see a good use here, so I'm largely curious.
(The 2 uses I could find in x86-specific code in Linux look
to me like they'd better be WARN_ONCE().)
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xen-devel] [PATCH 1/2] xen/lib: Introduce printk_once() and replace some opencoded examples
@ 2019-05-20 8:24 ` Jan Beulich
0 siblings, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2019-05-20 8:24 UTC (permalink / raw)
To: Andrew Cooper
Cc: xen-devel, Julien Grall, Stefano Stabellini, Wei Liu, Roger Pau Monne
>>> On 17.05.19 at 20:58, <andrew.cooper3@citrix.com> wrote:
> Reflow the ZynqMP message for grepability, and fix the omission of a newline.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
with two remarks:
> --- a/xen/include/xen/lib.h
> +++ b/xen/include/xen/lib.h
> @@ -105,6 +105,17 @@ debugtrace_printk(const char *fmt, ...) {}
> #define _p(_x) ((void *)(unsigned long)(_x))
> extern void printk(const char *format, ...)
> __attribute__ ((format (printf, 1, 2)));
> +
> +#define printk_once(fmt, args...) \
> +({ \
> + static bool __read_mostly once_; \
> + if ( unlikely(!once_) ) \
> + { \
> + once_ = true; \
> + printk(fmt, ## args); \
> + } \
> +})
Just like Linux we accept this having a small race window, i.e.
it not truly being "once" in unlikely cases. I think it would be
worthwhile to make this intention explicit in the commit
message.
Unlike Linux'es the macro doesn't have a "return value". Is
this intentional? I view this as particularly useful for the
WARN_ONCE() sort-of counterpart, but I have to admit I can't
immediately see a good use here, so I'm largely curious.
(The 2 uses I could find in x86-specific code in Linux look
to me like they'd better be WARN_ONCE().)
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] x86/mpparse: Don't print "limit reached" for every subsequent processor
@ 2019-05-20 8:26 ` Jan Beulich
0 siblings, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2019-05-20 8:26 UTC (permalink / raw)
To: Andrew Cooper; +Cc: xen-devel, Wei Liu, Roger Pau Monne
>>> On 17.05.19 at 20:58, <andrew.cooper3@citrix.com> wrote:
> When you boot Xen with the default 256 NR_CPUS, on a box with rather more
> processors, the resulting spew is unnecesserily verbose. Instead, print the
> message once, e.g:
>
> (XEN) ACPI: X2APIC (apic_id[0x115] uid[0x115] enabled)
> (XEN) WARNING: NR_CPUS limit of 256 reached - ignoring further processors
> (XEN) ACPI: X2APIC (apic_id[0x119] uid[0x119] enabled)
> (XEN) ACPI: X2APIC (apic_id[0x11d] uid[0x11d] enabled)
> (XEN) ACPI: X2APIC (apic_id[0x121] uid[0x121] enabled)
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xen-devel] [PATCH 2/2] x86/mpparse: Don't print "limit reached" for every subsequent processor
@ 2019-05-20 8:26 ` Jan Beulich
0 siblings, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2019-05-20 8:26 UTC (permalink / raw)
To: Andrew Cooper; +Cc: xen-devel, Wei Liu, Roger Pau Monne
>>> On 17.05.19 at 20:58, <andrew.cooper3@citrix.com> wrote:
> When you boot Xen with the default 256 NR_CPUS, on a box with rather more
> processors, the resulting spew is unnecesserily verbose. Instead, print the
> message once, e.g:
>
> (XEN) ACPI: X2APIC (apic_id[0x115] uid[0x115] enabled)
> (XEN) WARNING: NR_CPUS limit of 256 reached - ignoring further processors
> (XEN) ACPI: X2APIC (apic_id[0x119] uid[0x119] enabled)
> (XEN) ACPI: X2APIC (apic_id[0x11d] uid[0x11d] enabled)
> (XEN) ACPI: X2APIC (apic_id[0x121] uid[0x121] enabled)
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] xen/lib: Introduce printk_once() and replace some opencoded examples
@ 2019-05-31 17:20 ` Julien Grall
0 siblings, 0 replies; 10+ messages in thread
From: Julien Grall @ 2019-05-31 17:20 UTC (permalink / raw)
To: Andrew Cooper, Xen-devel
Cc: Stefano Stabellini, Wei Liu, Jan Beulich, Roger Pau Monné
Hi Andrew,
On 17/05/2019 19:58, Andrew Cooper wrote:
> Reflow the ZynqMP message for grepability, and fix the omission of a newline.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Regardless Jan's comment:
Reviewed-by: Julien Grall <julien.grall@arm.com>
I will let Jan/You to commit the patch.
Cheers,
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Wei Liu <wei.liu2@citrix.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien.grall@arm.com>
> ---
> xen/arch/arm/cpuerrata.c | 18 ++----------------
> xen/arch/arm/platforms/xilinx-zynqmp.c | 9 ++-------
> xen/include/xen/lib.h | 11 +++++++++++
> 3 files changed, 15 insertions(+), 23 deletions(-)
>
> diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
> index 4431b24..8904939 100644
> --- a/xen/arch/arm/cpuerrata.c
> +++ b/xen/arch/arm/cpuerrata.c
> @@ -336,18 +336,11 @@ static bool has_ssbd_mitigation(const struct arm_cpu_capabilities *entry)
> switch ( ssbd_state )
> {
> case ARM_SSBD_FORCE_DISABLE:
> - {
> - static bool once = true;
> -
> - if ( once )
> - printk("%s disabled from command-line\n", entry->desc);
> - once = false;
> + printk_once("%s disabled from command-line\n", entry->desc);
>
> arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 0, NULL);
> required = false;
> -
> break;
> - }
>
> case ARM_SSBD_RUNTIME:
> if ( required )
> @@ -359,18 +352,11 @@ static bool has_ssbd_mitigation(const struct arm_cpu_capabilities *entry)
> break;
>
> case ARM_SSBD_FORCE_ENABLE:
> - {
> - static bool once = true;
> -
> - if ( once )
> - printk("%s forced from command-line\n", entry->desc);
> - once = false;
> + printk_once("%s forced from command-line\n", entry->desc);
>
> arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 1, NULL);
> required = true;
> -
> break;
> - }
>
> default:
> ASSERT_UNREACHABLE();
> diff --git a/xen/arch/arm/platforms/xilinx-zynqmp.c b/xen/arch/arm/platforms/xilinx-zynqmp.c
> index 08e3e11..3060d79 100644
> --- a/xen/arch/arm/platforms/xilinx-zynqmp.c
> +++ b/xen/arch/arm/platforms/xilinx-zynqmp.c
> @@ -35,14 +35,9 @@ static bool zynqmp_smc(struct cpu_user_regs *regs)
> */
> if ( !cpus_have_const_cap(ARM_SMCCC_1_1) )
> {
> - static bool once = true;
> + printk_once(XENLOG_WARNING
> + "ZynqMP firmware Error: no SMCCC 1.1 support. Disabling firmware calls\n");
>
> - if ( once )
> - {
> - printk(XENLOG_WARNING "ZynqMP firmware Error: no SMCCC 1.1 "
> - "support. Disabling firmware calls.");
> - once = false;
> - }
> return false;
> }
> return zynqmp_eemi(regs);
> diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
> index 91ed56c..ce231c5 100644
> --- a/xen/include/xen/lib.h
> +++ b/xen/include/xen/lib.h
> @@ -105,6 +105,17 @@ debugtrace_printk(const char *fmt, ...) {}
> #define _p(_x) ((void *)(unsigned long)(_x))
> extern void printk(const char *format, ...)
> __attribute__ ((format (printf, 1, 2)));
> +
> +#define printk_once(fmt, args...) \
> +({ \
> + static bool __read_mostly once_; \
> + if ( unlikely(!once_) ) \
> + { \
> + once_ = true; \
> + printk(fmt, ## args); \
> + } \
> +})
> +
> extern void guest_printk(const struct domain *d, const char *format, ...)
> __attribute__ ((format (printf, 2, 3)));
> extern void noreturn panic(const char *format, ...)
>
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Xen-devel] [PATCH 1/2] xen/lib: Introduce printk_once() and replace some opencoded examples
@ 2019-05-31 17:20 ` Julien Grall
0 siblings, 0 replies; 10+ messages in thread
From: Julien Grall @ 2019-05-31 17:20 UTC (permalink / raw)
To: Andrew Cooper, Xen-devel
Cc: Stefano Stabellini, Wei Liu, Jan Beulich, Roger Pau Monné
Hi Andrew,
On 17/05/2019 19:58, Andrew Cooper wrote:
> Reflow the ZynqMP message for grepability, and fix the omission of a newline.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Regardless Jan's comment:
Reviewed-by: Julien Grall <julien.grall@arm.com>
I will let Jan/You to commit the patch.
Cheers,
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Wei Liu <wei.liu2@citrix.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien.grall@arm.com>
> ---
> xen/arch/arm/cpuerrata.c | 18 ++----------------
> xen/arch/arm/platforms/xilinx-zynqmp.c | 9 ++-------
> xen/include/xen/lib.h | 11 +++++++++++
> 3 files changed, 15 insertions(+), 23 deletions(-)
>
> diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
> index 4431b24..8904939 100644
> --- a/xen/arch/arm/cpuerrata.c
> +++ b/xen/arch/arm/cpuerrata.c
> @@ -336,18 +336,11 @@ static bool has_ssbd_mitigation(const struct arm_cpu_capabilities *entry)
> switch ( ssbd_state )
> {
> case ARM_SSBD_FORCE_DISABLE:
> - {
> - static bool once = true;
> -
> - if ( once )
> - printk("%s disabled from command-line\n", entry->desc);
> - once = false;
> + printk_once("%s disabled from command-line\n", entry->desc);
>
> arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 0, NULL);
> required = false;
> -
> break;
> - }
>
> case ARM_SSBD_RUNTIME:
> if ( required )
> @@ -359,18 +352,11 @@ static bool has_ssbd_mitigation(const struct arm_cpu_capabilities *entry)
> break;
>
> case ARM_SSBD_FORCE_ENABLE:
> - {
> - static bool once = true;
> -
> - if ( once )
> - printk("%s forced from command-line\n", entry->desc);
> - once = false;
> + printk_once("%s forced from command-line\n", entry->desc);
>
> arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 1, NULL);
> required = true;
> -
> break;
> - }
>
> default:
> ASSERT_UNREACHABLE();
> diff --git a/xen/arch/arm/platforms/xilinx-zynqmp.c b/xen/arch/arm/platforms/xilinx-zynqmp.c
> index 08e3e11..3060d79 100644
> --- a/xen/arch/arm/platforms/xilinx-zynqmp.c
> +++ b/xen/arch/arm/platforms/xilinx-zynqmp.c
> @@ -35,14 +35,9 @@ static bool zynqmp_smc(struct cpu_user_regs *regs)
> */
> if ( !cpus_have_const_cap(ARM_SMCCC_1_1) )
> {
> - static bool once = true;
> + printk_once(XENLOG_WARNING
> + "ZynqMP firmware Error: no SMCCC 1.1 support. Disabling firmware calls\n");
>
> - if ( once )
> - {
> - printk(XENLOG_WARNING "ZynqMP firmware Error: no SMCCC 1.1 "
> - "support. Disabling firmware calls.");
> - once = false;
> - }
> return false;
> }
> return zynqmp_eemi(regs);
> diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
> index 91ed56c..ce231c5 100644
> --- a/xen/include/xen/lib.h
> +++ b/xen/include/xen/lib.h
> @@ -105,6 +105,17 @@ debugtrace_printk(const char *fmt, ...) {}
> #define _p(_x) ((void *)(unsigned long)(_x))
> extern void printk(const char *format, ...)
> __attribute__ ((format (printf, 1, 2)));
> +
> +#define printk_once(fmt, args...) \
> +({ \
> + static bool __read_mostly once_; \
> + if ( unlikely(!once_) ) \
> + { \
> + once_ = true; \
> + printk(fmt, ## args); \
> + } \
> +})
> +
> extern void guest_printk(const struct domain *d, const char *format, ...)
> __attribute__ ((format (printf, 2, 3)));
> extern void noreturn panic(const char *format, ...)
>
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2019-05-31 17:20 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-17 18:58 [PATCH 1/2] xen/lib: Introduce printk_once() and replace some opencoded examples Andrew Cooper
2019-05-17 18:58 ` [Xen-devel] " Andrew Cooper
2019-05-17 18:58 ` [PATCH 2/2] x86/mpparse: Don't print "limit reached" for every subsequent processor Andrew Cooper
2019-05-17 18:58 ` [Xen-devel] " Andrew Cooper
2019-05-20 8:26 ` Jan Beulich
2019-05-20 8:26 ` [Xen-devel] " Jan Beulich
2019-05-20 8:24 ` [PATCH 1/2] xen/lib: Introduce printk_once() and replace some opencoded examples Jan Beulich
2019-05-20 8:24 ` [Xen-devel] " Jan Beulich
2019-05-31 17:20 ` Julien Grall
2019-05-31 17:20 ` [Xen-devel] " Julien Grall
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.