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(); >