lkml.org 
[lkml]   [2012]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v5 2/2] x86 mce: use new printk recursion disabling interface
    From
    Date
    On Tue, 2012-06-05 at 17:15 +0200, Borislav Petkov wrote:
    > On Tue, Jun 05, 2012 at 05:55:22PM +0800, ShuoX Liu wrote:
    > > From: ShuoX Liu <shuox.liu@intel.com>
    > >
    > > On x86 machines, some times MCE happens just when kernel calls printk
    > > to output some log info to serial console, while usually MCE module in
    > > kernel is used to print out some hardware error information, such like
    > > bad cache or bad memory bank. That causes printk recursion and printk
    > > would omit MCE printk output.
    > >
    > > We hit it when running MTBF testing on Android ATOM mobiles.
    > >
    > > Here in mce_panic, we choose to disable printk recursion to make sure
    > > MCE logs printed out.
    > >
    > > Signed-off-by: Yanmin Zhang <yanmin_zhang@linux.intel.com>
    > > Signed-off-by: ShuoX Liu <shuox.liu@intel.com>
    > > ---
    > > arch/x86/kernel/cpu/mcheck/mce.c | 2 ++
    > > 1 files changed, 2 insertions(+), 0 deletions(-)
    > >
    > > diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
    > > index 2afcbd2..906e838 100644
    > > --- a/arch/x86/kernel/cpu/mcheck/mce.c
    > > +++ b/arch/x86/kernel/cpu/mcheck/mce.c
    > > @@ -306,6 +306,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
    > > {
    > > int i, apei_err = 0;
    > >
    > > + printk_recursion_check_disable();
    > > if (!fake_panic) {
    > > /*
    > > * Make sure only one CPU runs in machine check panic
    > > @@ -360,6 +361,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
    > > panic(msg);
    > > } else
    > > pr_emerg(HW_ERR "Fake kernel panic: %s\n", msg);
    > > + printk_recursion_check_enable();
    >
    > Ok, let me ask this again: why not disable the printk recursion check in
    > the function that actually _prints_ the MCE, i.e. print_mce() instead of
    > here in mce_panic() which does a whole bunch of other stuff and it can
    > also return without printing any MCE to dmesg?
    Sorry for forgetting the return checking.

    > Are you interested in seeing the printk's from mce_panic? Why?
    How about moving the disabling checking in print_mce? It seems not clean if we disable
    the printk recursion checking just around every printk statement.




    \
     
     \ /
      Last update: 2012-06-06 03:01    [W:3.683 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site