Hi,
2013/3/28 Viresh Kumar <viresh.ku...@linaro.org> > > Hi Zhoujie, > > On 28 March 2013 18:42, zhoujie wu <zhouji...@gmail.com> wrote: > > I found a kernel panic case caused by interactive governor when we > > enabled both hotplug governor and linked cpufreq features. > > > > Below is the background and root cause, > > We are using the latest interactive governor on dual ca9 smp system, > > and linked cpufreq feature(cpumask_setall(policy->cpus) for each cpus) > > is enabled for them. Based on it, cpufreq governor could consider the > > both cpu's workload and make decision for the smp cores. And we also > > have a hotplug governor to monitor the system workload to make > > decision when will cpu1 could be hotplugged. > > 1. The default cpufreq governor during boot up is userspace. > > > > 2. After system is boot up, hotplug governor found system has no > > workload and cpu1 was hotplugged. Hotplug notifier will set cpu0’s > > policy->cpus only for cpu0. > > > > 3. After that, Cpufreq governor switched to Interactive, and its > > CPUFREQ_GOV_START will only init the cpu0’s info struct, such as > > pcpu->policy and governor_enabled etc. > > > > 4. A boost event comes, such as touching the screen, it will lead to > > CPU1 is plugged in at first, that means cpu0’s policy->cpus is linked > > to cpu0&cpu1 again, but it will not call interactive governor’s > > CPUFREQ_GOV_START to initialize cpu1’s info struct. > > What kernel version are you using? I have pushed tonnes of patches in > 3.9 which must fix this issue for you. Just try with that. It should be > present > in latest linaro release too. I have synced the governor_interactive.c from the latest linaro code branch integration-android-vexpress that release at Feb.2013. The latest commit is cpufreq: interactive: fix race on governor start/stop Is it aligned with your version? Could you please help to tell me which patch is used to fix this issue? > > > 5. After that cpu0’s frequency changed, and it will notify interactive > > governor, in the notifier function(cpufreq_interactive_notifier) it > > will call update_load and access CPU1’s pcpu->policy->cur, but it is > > never initialized and lead to kernel panic. > > Same. > > > But there is no such issue in b.L system as all cpu has no link > > b.L? big LITTLE, right? The same issue should be present in > big LITTLE systems too with hot [un]plugging.. It might not > be using a governor to offline/online cpu at runtime though. You are correct. In the system that enabled linked cpufreq+hotplug will show the same issue. > > Current big LITTLE system have two clusters (A7 and A15) and > ->init() is called for first cpu of both clusters and they set policy->cpus > correctly. > > > relationship. Looks like interactive governor doesn’t consider much > > for SMP. > > b.L. is also SMP :) > > > I made a draft patch to solve the panic as below, but still could > > solve the issue interactive is enabled after cpu1 is hotplugged. > > Could you please take a look how to solve the interactive governor > > issue for SMP? > > Probably not required. Thanks. _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev