BUG_ON(irqs_disabled()) in cpufreq.c

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

 



Hi,

I hope this is the right spot to ask this.

Is there any way to change the cpu frequency using the cpufreq driver
from within an hrtimer callback function? I encounter a kernel panic
at cpufreq.c line 255 (260 in 3.9.5)

void __cpufreq_notify_transition(struct cpufreq_policy *policy,
253                 struct cpufreq_freqs *freqs, unsigned int state)
254 {
255         BUG_ON(irqs_disabled());


I'm assuming this is due to the cpufreq_notify_transition needs
interrupts to notify? Is there a way around this? It appears that
acpi-cpufreq.c is calling the notifier both before and after the
transition (CPUFREQ_PRECHANGE and CPUFREQ_POSTCHANGE).

Are there any frequency change functions that can operate without interrupts?

The background is this:

For the past few days I have been trying to get to the bottom of a
problem involving a nonSMP governor I have written. The goal of this
governor is to change the frequency on a predefined schedule (in the
ms scale). The basic breakdown is this:

1. The external scheduler computes schedules and then passes them to
the governor (with much code appropriated from the userspace governor)
via an exported function.
2. The governor sets the frequency, then sets a timer to call the next
frequency change when it goes off

In order to do this, I was using hrtimers. These timer's callback
functions run with interrupts disabled.

Michael Giardino
<giardino@xxxxxxxxxxxxxx>
<michael.giardino@xxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe cpufreq" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Devel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Forum]     [Linux SCSI]

  Powered by Linux