Hi Borislav, > From: Borislav Petkov [mailto:bp@xxxxxxxxx] > On Tue, Mar 01, 2016 at 10:50:37AM +0900, Hidehiro Kawai wrote: > > Export panic_cpu and nmi_panic_self_stop symbols for modules which > > use nmi_panic() macro. > > > > Signed-off-by: Hidehiro Kawai <hidehiro.kawai.ez@xxxxxxxxxxx> > > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > > Cc: Borislav Petkov <bp@xxxxxxx> > > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > > Cc: Michal Hocko <mhocko@xxxxxxxx> > > Cc: HATAYAMA Daisuke <d.hatayama@xxxxxxxxxxxxxx> > > Cc: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > > Cc: Tejun Heo <tj@xxxxxxxxxx> > > --- > > kernel/panic.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/kernel/panic.c b/kernel/panic.c > > index d96469d..f4e8035 100644 > > --- a/kernel/panic.c > > +++ b/kernel/panic.c > > @@ -69,8 +69,10 @@ void __weak nmi_panic_self_stop(struct pt_regs *regs) > > { > > panic_smp_self_stop(); > > } > > +EXPORT_SYMBOL(nmi_panic_self_stop); > > > > atomic_t panic_cpu = ATOMIC_INIT(PANIC_CPU_INVALID); > > +EXPORT_SYMBOL(panic_cpu); > > Can we make nmi_panic() at least a proper function and export that > instead of exporting all those implementation details...? The reason I implemented nmi_panic() as a macro is to pass variable arguments directly to panic(). Fortunately, since all invocations of nmi_panic() just pass a fixed string, I can change it to a normal function like: int nmi_panic(struct pt_regs *regs, const char *msg) { ... panic("%s", msg); If people don't mind if that, I'll change it. Regards, -- Hidehiro Kawai Hitachi, Ltd. Research & Development Group ��.n��������+%������w��{.n�����{���rh���ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f