On Fri, Oct 4, 2019 at 2:30 PM Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > > On Thu, Oct 03, 2019 at 05:05:28PM +0200, Rafael J. Wysocki wrote: > > On Thursday, October 3, 2019 4:08:28 PM CEST Ville Syrjala wrote: > > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > > > > > Since 4.20-rc1 my PIC machines no longer reboot/shutdown. > > > I bisected this down to commit 45975c7d21a1 ("rcu: Define RCU-sched > > > API in terms of RCU for Tree RCU PREEMPT builds"). > > > > > > I traced the hang into > > > -> cpufreq_suspend() > > > -> cpufreq_stop_governor() > > > -> cpufreq_dbs_governor_stop() > > > -> gov_clear_update_util() > > > -> synchronize_sched() > > > -> synchronize_rcu() > > > > > > Only PREEMPT=y is affected for obvious reasons. The problem > > > is limited to PIC machines since they mask off interrupts > > > in i8259A_shutdown() (syscore_ops.shutdown() registered > > > from device_initcall()). > > > > Let me treat this as a fresh bug report. :-) > > > > > I reported this long ago but no better fix has surfaced, > > > > So I don't recall seeing the original report or if I did, I had not understood > > the problem then. > > > > > hence sending out my initial workaround which I've been > > > carrying around ever since. I just move cpufreq_core_init() > > > to late_initcall() so the syscore_ops get registered in the > > > oppsite order and thus the .shutdown() hooks get executed > > > in the opposite order as well. Not 100% convinced this is > > > safe (especially moving the cpufreq_global_kobject creation > > > to late_initcall()) but I've not had any problems with it > > > at least. > > > > The problem is a bug in cpufreq that shouldn't point its syscore shutdown > > callback pointer to cpufreq_suspend(), because the syscore stage is generally > > too lat to call that function and I'm not sure why this has not been causing > > any other issues to trigger (or maybe it did, but they were not reported). > > > > Does the patch below work for you? > > It does. Thanks. > > Feel free to slap on > Tested-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > if you want to go with that. I will, thank you!