Re: [BUG] printk/nbcon can use RCU illegally prior to CPU online

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 18 Jul 2024 10:41:25 -0500
Andrew Halaney <ahalaney@xxxxxxxxxx> wrote:

> Hi,
> 
> Recently I was made aware of an issue when running 6.10.0-rc6-rt11+
> (with a !PREEMPT_RT config, although I'm not sure it matters here).
> 
> Its easy to reproduce, just printk on a CPU that's coming online (I got
> pointed to a real splat, but this suffices to reproduce).

I'm more interested in the real splat. Where was the printk() that
triggered it?

> For example:
> 
>     diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
>     index 0c35207320cb..eb75a7cffe31 100644
>     --- a/arch/x86/kernel/smpboot.c
>     +++ b/arch/x86/kernel/smpboot.c
>     @@ -274,6 +274,10 @@ static void notrace start_secondary(void *unused)
>             cpuhp_ap_sync_alive();
> 
>             cpu_init();
>     +
>     +       /* Let's printk() and see if RCU whines */
>     +       printk(KERN_ERR "RCU, what do you think?!\n");
>     +

prink() is normally OK to use on boot up before SMP starts. That's
because it has nothing to race against. But this is the secondary CPU,
where we are entering SMP. RCU has to be active to use pretty much
anything (printk, tracing, etc).

This is why I'm interested in knowing what the real splat was. It could
be that it is used in an incorrect location.

But if you are just debugging, then you should be safely able to ignore
this.

-- Steve


>             fpu__init_cpu();
>             rcutree_report_cpu_starting(raw_smp_processor_id());
>             x86_cpuinit.early_percpu_clock_init();
> 




[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux