lkml.org 
[lkml]   [2005]   [May]   [26]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: Hotplug CPU printk issue
    FromShaohua Li <>
    DateThu, 26 May 2005 13:43:31 +0800
    On Wed, 2005-05-25 at 20:48 -0700, Andrew Morton wrote:
    > >  > --- a/kernel/printk.c   2005-04-12 10:12:19.000000000 +0800 
    > >  > +++ b/kernel/printk.c   2005-04-13 17:22:40.912897328 +0800 
    > >  > @@ -624,8 +624,7 @@ asmlinkage int vprintk(const char *fmt,  
    > >  >                         log_level_unknown = 1; 
    > >  >         } 
    > >  > 
    > >  > -       if (!cpu_online(smp_processor_id()) && 
    > >  > -           system_state != SYSTEM_RUNNING) { 
    > >  > +       if (!cpu_online(smp_processor_id())) { 
    > >  >                 /* 
    > >  >                  * Some console drivers may assume that per-cpu resources have 
    > >  >                  * been allocated.  So don't allow them to be called by this
    > >  Andrew,
    > >  Could above patch be put into mm tree?
    > 
    > Well not in that form.  I'd appreciate being sent patches which are
    > applyable rather than mangled messes, please.
    > 
    > > It fixes the oops of CPU hotplug
    > >  with radeon fb enabled.
    > >  The reason is the per-cpu data (radeon fb calls kmalloc) isn't
    > >  initialized when CPU hotplug is processing. system_state is
    > >  SYSTEM_RUNNING for cpu hotplug.
    > 
    > That system_state test was explicitly added by davidm a year ago:
    > 
    > "- Allow printk on down cpus once system is running."
    > 
    > Please confirm that we in fact do not want to allow downed CPUs to
    > print things, then send a patch.
    Yep. In the cpu hotplug case, per-cpu data possibly isn't initialized
    even the system state is 'running'. As the comments say in the original
    code, some console drivers assume per-cpu resources have been allocated.
    radeon fb is one such driver, which uses kmalloc. After a CPU is down,
    the per-cpu data of slab is freed, so the system crashed when printing
    some info.
    
    Thanks,
    Shaohua
    
    ---
     linux-2.6.11-rc5-mm1-root/kernel/printk.c |    3 +--
     1 files changed, 1 insertion(+), 2 deletions(-)
    diff -puN kernel/printk.c~printk kernel/printk.c
    --- linux-2.6.11-rc5-mm1/kernel/printk.c~printk	2005-05-26 13:11:47.333540352 +0800
    +++ linux-2.6.11-rc5-mm1-root/kernel/printk.c	2005-05-26 13:11:47.336539896 +0800
    @@ -588,8 +588,7 @@ asmlinkage int vprintk(const char *fmt, 
     			log_level_unknown = 1;
     	}
     
    -	if (!cpu_online(smp_processor_id()) &&
    -	    system_state != SYSTEM_RUNNING) {
    +	if (!cpu_online(smp_processor_id())) {
     		/*
     		 * Some console drivers may assume that per-cpu resources have
     		 * been allocated.  So don't allow them to be called by this
    _
    
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at  http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at  http://www.tux.org/lkml/
    
    
    \
     
     \ /
      Last update: 2005-05-26 07:41    [from the cache]
    ©2003-2008