[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0f05c020-47e4-444d-90ab-9eb8414f4ef8@csgroup.eu>
Date: Sat, 8 Feb 2025 18:55:54 +0100
From: Christophe Leroy <christophe.leroy@...roup.eu>
To: Shrikanth Hegde <sshegde@...ux.ibm.com>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>
Cc: linux-kernel@...r.kernel.org, linux-rt-devel@...ts.linux.dev,
Ben Segall <bsegall@...gle.com>, Catalin Marinas <catalin.marinas@....com>,
Dietmar Eggemann <dietmar.eggemann@....com>, Ingo Molnar <mingo@...hat.com>,
Juri Lelli <juri.lelli@...hat.com>, Mel Gorman <mgorman@...e.de>,
Peter Zijlstra <peterz@...radead.org>, Steven Rostedt <rostedt@...dmis.org>,
Thomas Gleixner <tglx@...utronix.de>,
Valentin Schneider <vschneid@...hat.com>,
Vincent Guittot <vincent.guittot@...aro.org>, Will Deacon <will@...nel.org>,
Madhavan Srinivasan <maddy@...ux.ibm.com>,
Michael Ellerman <mpe@...erman.id.au>, Nicholas Piggin <npiggin@...il.com>,
Naveen N Rao <naveen@...nel.org>, linuxppc-dev@...ts.ozlabs.org
Subject: Re: [PATCH v3 5/9] powerpc: Use preempt_model_str().
Le 08/02/2025 à 14:42, Shrikanth Hegde a écrit :
>
>
> On 2/8/25 18:25, Christophe Leroy wrote:
>>
>>
>> Le 08/02/2025 à 08:35, Shrikanth Hegde a écrit :
>>>
>>>
>>> On 2/4/25 13:52, Sebastian Andrzej Siewior wrote:
>>>> Use preempt_model_str() instead of manually conducting the preemption
>>>> model. Use pr_emerg() instead of printk() to pass a loglevel.
>>>
>>> even on powerpc, i see __die ends up calling show_regs_print_info().
>>> Why print it twice?
>>
>> I don't understand what you mean, what is printed twice ?
>>
>> I can't see show_regs_print_info() printing the preemption model, am I
>> missing something ?
>>
>
> Patch 2/9 add preemption string in dump_stack_print_info.
>
> __die -> show_regs() _> show_regs_print_info() ->
> dump_stack_print_info() -> init_utsname()->version, preempt_model_str(),
> BUILD_ID_VAL);
>
> Wont we end up in this path?
Indeed I missed that. You are right, we now get the information twice:
[ 440.068216] BUG: Unable to handle kernel data access on write at
0xc09036fc
[ 440.075051] Faulting instruction address: 0xc045ddf8
[ 440.080032] Oops: Kernel access of bad area, sig: 11 [#1]
[ 440.085438] BE PAGE_SIZE=16K PREEMPT CMPC885
[ 440.089872] SAF3000 DIE NOTIFICATION
[ 440.093391] CPU: 0 UID: 0 PID: 472 Comm: sh Not tainted
6.13.0-s3k-dev-01384-g54680e2fbfb0 #1379 PREEMPT
[ 440.102977] Hardware name: MIAE 8xx 0x500000 CMPC885
[ 440.107951] NIP: c045ddf8 LR: c045dde8 CTR: 00000000
[ 440.113015] REGS: c9bf3d60 TRAP: 0300 Not tainted
(6.13.0-s3k-dev-01384-g54680e2fbfb0)
[ 440.121215] MSR: 00009032 <EE,ME,IR,DR,RI> CR: 35009393 XER: 80003100
[ 440.128198] DAR: c09036fc DSISR: 82000000
[ 440.128198] GPR00: c045c59c c9bf3e20 c27e7700 0000002e c108575c
00000001 c1085850 00009032
[ 440.128198] GPR08: 00000027 0198b861 00000001 3ffff000 55009393
100d815e 7fcf5e20 100d0000
[ 440.128198] GPR16: 100d0000 00000000 113e447c 113e4480 00000000
00000001 00000000 00000000
[ 440.128198] GPR24: 113e4464 00000000 c1828000 c9bf3ef8 c1136eac
c9bf3ef8 c2888000 c0900000
[ 440.168081] NIP [c045ddf8] lkdtm_WRITE_RO+0x34/0x50
[ 440.172969] LR [c045dde8] lkdtm_WRITE_RO+0x24/0x50
[ 440.177771] Call Trace:
Christophe
>
>> Christophe
>>
>>>
>>>>
>>>> Cc: Madhavan Srinivasan <maddy@...ux.ibm.com>
>>>> Cc: Michael Ellerman <mpe@...erman.id.au>
>>>> Cc: Nicholas Piggin <npiggin@...il.com>
>>>> Cc: Christophe Leroy <christophe.leroy@...roup.eu>
>>>> Cc: Naveen N Rao <naveen@...nel.org>
>>>> Cc: linuxppc-dev@...ts.ozlabs.org
>>>> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@...utronix.de>
>>>> ---
>>>> v2…v3:
>>>> - Use printk() instead of pr_emerg() to remain consistent with the
>>>> other invocations in terms of printing context.
>>>>
>>>> arch/powerpc/kernel/traps.c | 4 ++--
>>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
>>>> index edf5cabe5dfdb..d6d77d92b3358 100644
>>>> --- a/arch/powerpc/kernel/traps.c
>>>> +++ b/arch/powerpc/kernel/traps.c
>>>> @@ -263,10 +263,10 @@ 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 %s\n",
>>>> + printk("%s PAGE_SIZE=%luK%s %s %s%s%s%s %s\n",
>>>> IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN) ? "LE" : "BE",
>>>> PAGE_SIZE / 1024, get_mmu_str(),
>>>> - IS_ENABLED(CONFIG_PREEMPT) ? " PREEMPT" : "",
>>>> + preempt_model_str(),
>>>> IS_ENABLED(CONFIG_SMP) ? " SMP" : "",
>>>> IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS="
>>>> __stringify(NR_CPUS)) : "",
>>>> debug_pagealloc_enabled() ? " DEBUG_PAGEALLOC" : "",
>>>
>>
>
Powered by blists - more mailing lists