* [PATCH v2 2/3] powerpc: Show PAGE_SIZE in __die() output
2019-01-10 11:57 [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die() Michael Ellerman
@ 2019-01-10 11:57 ` Michael Ellerman
2019-01-10 13:40 ` Christophe Leroy
2019-01-10 11:57 ` [PATCH v2 3/3] powerpc/64s: Add MMU type to " Michael Ellerman
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Michael Ellerman @ 2019-01-10 11:57 UTC (permalink / raw)
To: linuxppc-dev
The page size the kernel is built with is useful info when debugging a
crash, so add it to the output in __die().
Result looks like eg:
kernel BUG at drivers/misc/lkdtm/bugs.c:63!
Oops: Exception in kernel mode, sig: 5 [#1]
LE PAGE_SIZE=64K SMP NR_CPUS=2048 NUMA pSeries
Modules linked in: vmx_crypto kvm binfmt_misc ip_tables
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
arch/powerpc/kernel/traps.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
v2: Adapt to single printk.
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index 164fc92895be..a872c64618ad 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -257,8 +257,9 @@ static int __die(const char *str, struct pt_regs *regs, long err)
{
printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
- printk("%s %s%s%s%s%s %s\n",
+ printk("%s PAGE_SIZE=%luK%s%s%s%s%s %s\n",
IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN) ? "LE" : "BE",
+ PAGE_SIZE / 1024,
IS_ENABLED(CONFIG_PREEMPT) ? " PREEMPT" : "",
IS_ENABLED(CONFIG_SMP) ? " SMP" : "",
IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS=" __stringify(NR_CPUS)) : "",
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/3] powerpc: Show PAGE_SIZE in __die() output
2019-01-10 11:57 ` [PATCH v2 2/3] powerpc: Show PAGE_SIZE in __die() output Michael Ellerman
@ 2019-01-10 13:40 ` Christophe Leroy
0 siblings, 0 replies; 8+ messages in thread
From: Christophe Leroy @ 2019-01-10 13:40 UTC (permalink / raw)
To: Michael Ellerman, linuxppc-dev
Le 10/01/2019 à 12:57, Michael Ellerman a écrit :
> The page size the kernel is built with is useful info when debugging a
> crash, so add it to the output in __die().
>
> Result looks like eg:
>
> kernel BUG at drivers/misc/lkdtm/bugs.c:63!
> Oops: Exception in kernel mode, sig: 5 [#1]
> LE PAGE_SIZE=64K SMP NR_CPUS=2048 NUMA pSeries
> Modules linked in: vmx_crypto kvm binfmt_misc ip_tables
>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr>
> ---
> arch/powerpc/kernel/traps.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> v2: Adapt to single printk.
>
> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
> index 164fc92895be..a872c64618ad 100644
> --- a/arch/powerpc/kernel/traps.c
> +++ b/arch/powerpc/kernel/traps.c
> @@ -257,8 +257,9 @@ static int __die(const char *str, struct pt_regs *regs, long err)
> {
> printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
>
> - printk("%s %s%s%s%s%s %s\n",
> + printk("%s PAGE_SIZE=%luK%s%s%s%s%s %s\n",
> IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN) ? "LE" : "BE",
> + PAGE_SIZE / 1024,
> IS_ENABLED(CONFIG_PREEMPT) ? " PREEMPT" : "",
> IS_ENABLED(CONFIG_SMP) ? " SMP" : "",
> IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS=" __stringify(NR_CPUS)) : "",
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/3] powerpc/64s: Add MMU type to __die() output
2019-01-10 11:57 [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die() Michael Ellerman
2019-01-10 11:57 ` [PATCH v2 2/3] powerpc: Show PAGE_SIZE in __die() output Michael Ellerman
@ 2019-01-10 11:57 ` Michael Ellerman
2019-01-10 13:41 ` Christophe Leroy
2019-01-10 13:40 ` [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die() Christophe Leroy
2019-01-24 3:40 ` [v2,1/3] " Michael Ellerman
3 siblings, 1 reply; 8+ messages in thread
From: Michael Ellerman @ 2019-01-10 11:57 UTC (permalink / raw)
To: linuxppc-dev
On Power9 machines (64-bit Book3S), we can be running with either the
Hash table or Radix tree MMU enabled. So add some text to the __die()
output to tell us which is enabled, for the case where all you have is
the oops output and no other information.
Example output:
kernel BUG at drivers/misc/lkdtm/bugs.c:63!
Oops: Exception in kernel mode, sig: 5 [#1]
LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
Modules linked in: kvm vmx_crypto binfmt_misc ip_tables x_tables
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
arch/powerpc/kernel/traps.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
v2: New.
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index a872c64618ad..5e917a84f949 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -257,9 +257,11 @@ static int __die(const char *str, struct pt_regs *regs, long err)
{
printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
- printk("%s PAGE_SIZE=%luK%s%s%s%s%s %s\n",
+ printk("%s PAGE_SIZE=%luK%s%s%s%s%s%s%s %s\n",
IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN) ? "LE" : "BE",
PAGE_SIZE / 1024,
+ early_radix_enabled() ? " MMU=Radix" : "",
+ early_mmu_has_feature(MMU_FTR_HPTE_TABLE) ? " MMU=Hash" : "",
IS_ENABLED(CONFIG_PREEMPT) ? " PREEMPT" : "",
IS_ENABLED(CONFIG_SMP) ? " SMP" : "",
IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS=" __stringify(NR_CPUS)) : "",
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 3/3] powerpc/64s: Add MMU type to __die() output
2019-01-10 11:57 ` [PATCH v2 3/3] powerpc/64s: Add MMU type to " Michael Ellerman
@ 2019-01-10 13:41 ` Christophe Leroy
0 siblings, 0 replies; 8+ messages in thread
From: Christophe Leroy @ 2019-01-10 13:41 UTC (permalink / raw)
To: Michael Ellerman, linuxppc-dev
Le 10/01/2019 à 12:57, Michael Ellerman a écrit :
> On Power9 machines (64-bit Book3S), we can be running with either the
> Hash table or Radix tree MMU enabled. So add some text to the __die()
> output to tell us which is enabled, for the case where all you have is
> the oops output and no other information.
>
> Example output:
>
> kernel BUG at drivers/misc/lkdtm/bugs.c:63!
> Oops: Exception in kernel mode, sig: 5 [#1]
> LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
> Modules linked in: kvm vmx_crypto binfmt_misc ip_tables x_tables
>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr>
> ---
> arch/powerpc/kernel/traps.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> v2: New.
>
> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
> index a872c64618ad..5e917a84f949 100644
> --- a/arch/powerpc/kernel/traps.c
> +++ b/arch/powerpc/kernel/traps.c
> @@ -257,9 +257,11 @@ static int __die(const char *str, struct pt_regs *regs, long err)
> {
> printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
>
> - printk("%s PAGE_SIZE=%luK%s%s%s%s%s %s\n",
> + printk("%s PAGE_SIZE=%luK%s%s%s%s%s%s%s %s\n",
> IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN) ? "LE" : "BE",
> PAGE_SIZE / 1024,
> + early_radix_enabled() ? " MMU=Radix" : "",
> + early_mmu_has_feature(MMU_FTR_HPTE_TABLE) ? " MMU=Hash" : "",
> IS_ENABLED(CONFIG_PREEMPT) ? " PREEMPT" : "",
> IS_ENABLED(CONFIG_SMP) ? " SMP" : "",
> IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS=" __stringify(NR_CPUS)) : "",
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die()
2019-01-10 11:57 [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die() Michael Ellerman
2019-01-10 11:57 ` [PATCH v2 2/3] powerpc: Show PAGE_SIZE in __die() output Michael Ellerman
2019-01-10 11:57 ` [PATCH v2 3/3] powerpc/64s: Add MMU type to " Michael Ellerman
@ 2019-01-10 13:40 ` Christophe Leroy
2019-01-11 10:30 ` Michael Ellerman
2019-01-24 3:40 ` [v2,1/3] " Michael Ellerman
3 siblings, 1 reply; 8+ messages in thread
From: Christophe Leroy @ 2019-01-10 13:40 UTC (permalink / raw)
To: Michael Ellerman, linuxppc-dev
Le 10/01/2019 à 12:57, Michael Ellerman a écrit :
> Using pr_cont() risks having our output interleaved with other output
> from other CPUs. Instead print everything in a single printk() call.
>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr>
> ---
> arch/powerpc/kernel/traps.c | 26 ++++++++------------------
> 1 file changed, 8 insertions(+), 18 deletions(-)
>
> v2: Use a single printk with (mostly) compile time checks rather than
> constructing the string with seq_buf.
>
> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
> index 64936b60d521..164fc92895be 100644
> --- a/arch/powerpc/kernel/traps.c
> +++ b/arch/powerpc/kernel/traps.c
> @@ -257,24 +257,14 @@ static int __die(const char *str, struct pt_regs *regs, long err)
> {
> printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
Maybe this printk() should also be merge with the following to further
limit risks of interleaving ?
Christophe
>
> - if (IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN))
> - printk("LE ");
> - else
> - printk("BE ");
> -
> - if (IS_ENABLED(CONFIG_PREEMPT))
> - pr_cont("PREEMPT ");
> -
> - if (IS_ENABLED(CONFIG_SMP))
> - pr_cont("SMP NR_CPUS=%d ", NR_CPUS);
> -
> - if (debug_pagealloc_enabled())
> - pr_cont("DEBUG_PAGEALLOC ");
> -
> - if (IS_ENABLED(CONFIG_NUMA))
> - pr_cont("NUMA ");
> -
> - pr_cont("%s\n", ppc_md.name ? ppc_md.name : "");
> + printk("%s %s%s%s%s%s %s\n",
> + IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN) ? "LE" : "BE",
> + IS_ENABLED(CONFIG_PREEMPT) ? " PREEMPT" : "",
> + IS_ENABLED(CONFIG_SMP) ? " SMP" : "",
> + IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS=" __stringify(NR_CPUS)) : "",
> + debug_pagealloc_enabled() ? " DEBUG_PAGEALLOC" : "",
> + IS_ENABLED(CONFIG_NUMA) ? " NUMA" : "",
> + ppc_md.name ? ppc_md.name : "");
>
> if (notify_die(DIE_OOPS, str, regs, err, 255, SIGSEGV) == NOTIFY_STOP)
> return 1;
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die()
2019-01-10 13:40 ` [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die() Christophe Leroy
@ 2019-01-11 10:30 ` Michael Ellerman
0 siblings, 0 replies; 8+ messages in thread
From: Michael Ellerman @ 2019-01-11 10:30 UTC (permalink / raw)
To: Christophe Leroy, linuxppc-dev
Christophe Leroy <christophe.leroy@c-s.fr> writes:
> Le 10/01/2019 à 12:57, Michael Ellerman a écrit :
>> Using pr_cont() risks having our output interleaved with other output
>> from other CPUs. Instead print everything in a single printk() call.
>>
>> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
>
> Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr>
>
>> ---
>> arch/powerpc/kernel/traps.c | 26 ++++++++------------------
>> 1 file changed, 8 insertions(+), 18 deletions(-)
>>
>> v2: Use a single printk with (mostly) compile time checks rather than
>> constructing the string with seq_buf.
>>
>> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
>> index 64936b60d521..164fc92895be 100644
>> --- a/arch/powerpc/kernel/traps.c
>> +++ b/arch/powerpc/kernel/traps.c
>> @@ -257,24 +257,14 @@ static int __die(const char *str, struct pt_regs *regs, long err)
>> {
>> printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
>
> Maybe this printk() should also be merge with the following to further
> limit risks of interleaving ?
Possibly yeah.
Though I was comparing it to other arches and I think we could improve
the info on that line. So I'll leave it for now.
cheers
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [v2,1/3] powerpc: Stop using pr_cont() in __die()
2019-01-10 11:57 [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die() Michael Ellerman
` (2 preceding siblings ...)
2019-01-10 13:40 ` [PATCH v2 1/3] powerpc: Stop using pr_cont() in __die() Christophe Leroy
@ 2019-01-24 3:40 ` Michael Ellerman
3 siblings, 0 replies; 8+ messages in thread
From: Michael Ellerman @ 2019-01-24 3:40 UTC (permalink / raw)
To: Michael Ellerman, linuxppc-dev
On Thu, 2019-01-10 at 11:57:35 UTC, Michael Ellerman wrote:
> Using pr_cont() risks having our output interleaved with other output
> from other CPUs. Instead print everything in a single printk() call.
>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
> Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr>
Series applied to powerpc next.
https://git.kernel.org/powerpc/c/782274434d6f2e8aa8c573cb24fef94a
cheers
^ permalink raw reply [flat|nested] 8+ messages in thread