Hi Christophe, On Thu, Sep 20, 2018 at 01:23:55AM +0000, Christophe Leroy wrote: > On 09/20/2018 01:19 PM, Christophe LEROY wrote: > > Le 20/09/2018 à 15:13, Michael Ellerman a écrit : > > > Joe Perches <joe@xxxxxxxxxxx> writes: > > > > On Tue, 2018-09-18 at 09:33 +0000, Christophe Leroy wrote: > > > > > On the below patch, checkpatch reports > > > > > > > > > > WARNING: struct kgdb_arch should normally be const > > > > > #127: FILE: arch/powerpc/kernel/kgdb.c:480: > > > > > +struct kgdb_arch arch_kgdb_ops; > > > > > > > > > > But when I add 'const', I get compilation failure > > > > > > > > So don't add const. > > > > > > > > checkpatch is stupid. You are not. > > > > > > > > _Always_ take checkpatch bleats with very > > > > large grains of salt. > > > > > > > > Perhaps send a patch to remove kgbd_arch > > > > from scripts/const_structs.checkpatch as > > > > it seems not ever to be const. > > > > > > I think it could/should be const though, it just requires updating all > > > arches. > > > > > > > Yes I was thinking about doing it, but first thing is to change the way > > MIPS initialises it: > > > > struct kgdb_arch arch_kgdb_ops; > > > > int kgdb_arch_init(void) > > { > > union mips_instruction insn = { > > .r_format = { > > .opcode = spec_op, > > .func = break_op, > > } > > }; > > memcpy(arch_kgdb_ops.gdb_bpt_instr, insn.byte, BREAK_INSTR_SIZE); > > > > > > Can this be done staticaly ? Something like this ought to do the trick: diff --git a/arch/mips/kernel/kgdb.c b/arch/mips/kernel/kgdb.c index eb6c0d582626..31eff1bec577 100644 --- a/arch/mips/kernel/kgdb.c +++ b/arch/mips/kernel/kgdb.c @@ -394,18 +394,16 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code, return -1; } -struct kgdb_arch arch_kgdb_ops; +struct kgdb_arch arch_kgdb_ops = { +#ifdef CONFIG_CPU_BIG_ENDIAN + .gdb_bpt_instr = { spec_op << 2, 0x00, 0x00, break_op }, +#else + .gdb_bpt_instr = { break_op, 0x00, 0x00, spec_op << 2 }, +#endif +}; int kgdb_arch_init(void) { - union mips_instruction insn = { - .r_format = { - .opcode = spec_op, - .func = break_op, - } - }; - memcpy(arch_kgdb_ops.gdb_bpt_instr, insn.byte, BREAK_INSTR_SIZE); - register_die_notifier(&kgdb_notifier); return 0; Thanks, Paul