Message ID | 20201201005203.15210-1-jniethe5@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 1baa1f70ef77c4447628992ad50ab83213e2eb6c |
Headers | show |
Series | [v2] powerpc: Allow relative pointers in bug table entries | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (78c312324391ee996944e1196123b0060888e189) |
snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
snowpatch_ozlabs/checkpatch | warning | total: 2 errors, 0 warnings, 0 checks, 53 lines checked |
snowpatch_ozlabs/needsstable | success | Patch has no Fixes tags |
Le 01/12/2020 à 01:52, Jordan Niethe a écrit : > This enables GENERIC_BUG_RELATIVE_POINTERS on Power so that 32-bit > offsets are stored in the bug entries rather than 64-bit pointers. > While this doesn't save space for 32-bit machines, use it anyway so > there is only one code path. > > Signed-off-by: Jordan Niethe <jniethe5@gmail.com> Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> Tested-by: Christophe Leroy <christophe.leroy@csgroup.eu> # on PPC32 > --- > v2: Remove non-relative pointers code > --- > arch/powerpc/Kconfig | 4 ++++ > arch/powerpc/include/asm/bug.h | 8 ++++---- > arch/powerpc/xmon/xmon.c | 4 ++-- > 3 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index e9f13fe08492..294108e0e5c6 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -311,6 +311,10 @@ config GENERIC_BUG > default y > depends on BUG > > +config GENERIC_BUG_RELATIVE_POINTERS > + def_bool y > + depends on GENERIC_BUG > + > config SYS_SUPPORTS_APM_EMULATION > default y if PMAC_APM_EMU > bool > diff --git a/arch/powerpc/include/asm/bug.h b/arch/powerpc/include/asm/bug.h > index 338f36cd9934..ba0500872cce 100644 > --- a/arch/powerpc/include/asm/bug.h > +++ b/arch/powerpc/include/asm/bug.h > @@ -12,7 +12,7 @@ > #ifdef CONFIG_DEBUG_BUGVERBOSE > .macro EMIT_BUG_ENTRY addr,file,line,flags > .section __bug_table,"aw" > -5001: PPC_LONG \addr, 5002f > +5001: .4byte \addr - 5001b, 5002f - 5001b > .short \line, \flags > .org 5001b+BUG_ENTRY_SIZE > .previous > @@ -23,7 +23,7 @@ > #else > .macro EMIT_BUG_ENTRY addr,file,line,flags > .section __bug_table,"aw" > -5001: PPC_LONG \addr > +5001: .4byte \addr - 5001b > .short \flags > .org 5001b+BUG_ENTRY_SIZE > .previous > @@ -36,14 +36,14 @@ > #ifdef CONFIG_DEBUG_BUGVERBOSE > #define _EMIT_BUG_ENTRY \ > ".section __bug_table,\"aw\"\n" \ > - "2:\t" PPC_LONG "1b, %0\n" \ > + "2:\t.4byte 1b - 2b, %0 - 2b\n" \ > "\t.short %1, %2\n" \ > ".org 2b+%3\n" \ > ".previous\n" > #else > #define _EMIT_BUG_ENTRY \ > ".section __bug_table,\"aw\"\n" \ > - "2:\t" PPC_LONG "1b\n" \ > + "2:\t.4byte 1b - 2b\n" \ > "\t.short %2\n" \ > ".org 2b+%3\n" \ > ".previous\n" > diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c > index 55c43a6c9111..9704c81aff7d 100644 > --- a/arch/powerpc/xmon/xmon.c > +++ b/arch/powerpc/xmon/xmon.c > @@ -1745,9 +1745,9 @@ static void print_bug_trap(struct pt_regs *regs) > > #ifdef CONFIG_DEBUG_BUGVERBOSE > printf("kernel BUG at %s:%u!\n", > - bug->file, bug->line); > + (char *)bug + bug->file_disp, bug->line); > #else > - printf("kernel BUG at %px!\n", (void *)bug->bug_addr); > + printf("kernel BUG at %px!\n", (void *)bug + bug->bug_addr_disp); > #endif > #endif /* CONFIG_BUG */ > } >
On Tue, 1 Dec 2020 11:52:03 +1100, Jordan Niethe wrote: > This enables GENERIC_BUG_RELATIVE_POINTERS on Power so that 32-bit > offsets are stored in the bug entries rather than 64-bit pointers. > While this doesn't save space for 32-bit machines, use it anyway so > there is only one code path. Applied to powerpc/next. [1/1] powerpc: Allow relative pointers in bug table entries https://git.kernel.org/powerpc/c/1baa1f70ef77c4447628992ad50ab83213e2eb6c cheers
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index e9f13fe08492..294108e0e5c6 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -311,6 +311,10 @@ config GENERIC_BUG default y depends on BUG +config GENERIC_BUG_RELATIVE_POINTERS + def_bool y + depends on GENERIC_BUG + config SYS_SUPPORTS_APM_EMULATION default y if PMAC_APM_EMU bool diff --git a/arch/powerpc/include/asm/bug.h b/arch/powerpc/include/asm/bug.h index 338f36cd9934..ba0500872cce 100644 --- a/arch/powerpc/include/asm/bug.h +++ b/arch/powerpc/include/asm/bug.h @@ -12,7 +12,7 @@ #ifdef CONFIG_DEBUG_BUGVERBOSE .macro EMIT_BUG_ENTRY addr,file,line,flags .section __bug_table,"aw" -5001: PPC_LONG \addr, 5002f +5001: .4byte \addr - 5001b, 5002f - 5001b .short \line, \flags .org 5001b+BUG_ENTRY_SIZE .previous @@ -23,7 +23,7 @@ #else .macro EMIT_BUG_ENTRY addr,file,line,flags .section __bug_table,"aw" -5001: PPC_LONG \addr +5001: .4byte \addr - 5001b .short \flags .org 5001b+BUG_ENTRY_SIZE .previous @@ -36,14 +36,14 @@ #ifdef CONFIG_DEBUG_BUGVERBOSE #define _EMIT_BUG_ENTRY \ ".section __bug_table,\"aw\"\n" \ - "2:\t" PPC_LONG "1b, %0\n" \ + "2:\t.4byte 1b - 2b, %0 - 2b\n" \ "\t.short %1, %2\n" \ ".org 2b+%3\n" \ ".previous\n" #else #define _EMIT_BUG_ENTRY \ ".section __bug_table,\"aw\"\n" \ - "2:\t" PPC_LONG "1b\n" \ + "2:\t.4byte 1b - 2b\n" \ "\t.short %2\n" \ ".org 2b+%3\n" \ ".previous\n" diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 55c43a6c9111..9704c81aff7d 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -1745,9 +1745,9 @@ static void print_bug_trap(struct pt_regs *regs) #ifdef CONFIG_DEBUG_BUGVERBOSE printf("kernel BUG at %s:%u!\n", - bug->file, bug->line); + (char *)bug + bug->file_disp, bug->line); #else - printf("kernel BUG at %px!\n", (void *)bug->bug_addr); + printf("kernel BUG at %px!\n", (void *)bug + bug->bug_addr_disp); #endif #endif /* CONFIG_BUG */ }
This enables GENERIC_BUG_RELATIVE_POINTERS on Power so that 32-bit offsets are stored in the bug entries rather than 64-bit pointers. While this doesn't save space for 32-bit machines, use it anyway so there is only one code path. Signed-off-by: Jordan Niethe <jniethe5@gmail.com> --- v2: Remove non-relative pointers code --- arch/powerpc/Kconfig | 4 ++++ arch/powerpc/include/asm/bug.h | 8 ++++---- arch/powerpc/xmon/xmon.c | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-)