I didn't see my patch show up on the list so I'm resending it.
On Wed, Oct 17, 2007 at 01:53:48AM +0200, Rafael J. Wysocki wrote:
> On Wednesday, 17 October 2007 01:31, Mark Gross wrote:
> > On Tue, Oct 16, 2007 at 10:28:13PM +0200, Rafael J. Wysocki wrote:
> > > On Tuesday, 16 October 2007 21:58, Mark Gross wrote:
> > > > On Mon, Oct 15, 2007 at 10:40:02PM +0200, Rafael J. Wysocki wrote:
> > > > > On Monday, 15 October 2007 18:09, Mark Gross wrote:
> > > > > > On Fri, Oct 12, 2007 at 11:32:40PM +0200, Rafael J. Wysocki wrote:
> > > > > > > On Friday, 12 October 2007 06:31, Andrew Morton wrote:
> > > > > > > >
> > > > > > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.23/2.6.23-mm1/
> > > > > > > >
> > > > > > > > - I've been largely avoiding applying anything since rc8-mm2 in
> > > > > > > > an attempt
> > > > > > > > to stabilise things for the 2.6.23 merge.
> > > > > > > >
> > > > > > > > But that didn't stop all the subsystem maintainers from going
> > > > > > > > nuts, with
> > > > > > > > the usual accuracy. We're up to a 37MB diff now, but it
> > > > > > > > seems to be working
> > > > > > > > a bit better.
> > > > > > >
> > > > > > > I get many traces similar to the one below from it (w/ hotfixes):
> > > > > > >
> > > > > > > WARNING: at
> > > > > > > /home/rafael/src/mm/linux-2.6.23-mm1/arch/x86_64/kernel/smp.c:397
> > > > > > > smp_call_function_mask()
> > > > > >
> > > > > > This is from : WARN_ON(irqs_disabled()) in the
> > > > > > cmp_call_function_mask
> > > > > > processor_idle.c is registering a acpi_processor_latency_notify
> > > > > >
> > > > > > my code changed the notifier call from blocking_notifier_call_chain
> > > > > > to
> > > > > > srcu_notifier_call_chain, because dynamic creation of notifier
> > > > > > chains at
> > > > > > runtime where easier with the srcu_notifier_call_chain than the
> > > > > > blocking_notifier_call_chain.
> > > > > >
> > > > > > As dynamic creation of PM_QOS parameters are no longer needed I can
> > > > > > change the notifiers back to match what was in lanency.c
> > > > > >
> > > > > > However; looking at the call tree differences between
> > > > > > blockin_notifier_call_chain and srcu_notifier_call_chain I cannot
> > > > > > see a
> > > > > > difference in irq enabling / disabling. I'm not confident this will
> > > > > > address this yet.
> > > > >
> > > > > Well, you can send me a patch to check. :-)
The following is a patch to update the pm_qos code in the mm1 tree. It
removes the PM_QOS_CPUIDLE parameter (replacing it with
PM_CPU_DMA_LATENCY), It changes the notifications from srcu to blocking
in hopes of fixing the WARNS reported by xxx, and it changes the
initialization to me largely static to avoid initialization race with
cpu-idle.
I think we will have to re-visit the static vrs dynamic initialization
and this init race in a while to support pm_qos parameters per power
domain (i.e. per cpu-socket) based on platform information (ACPI) but
for now lets see if this fixes the warning's reported.
Thanks,
Signed-off-by: mark gross <[EMAIL PROTECTED]>
Binary files linux-2.6.23-mm1/arch/x86_64/ia32/vsyscall-syscall.so.dbg and
linux-2.6.23-mm1-pmqos/arch/x86_64/ia32/vsyscall-syscall.so.dbg differ
Binary files linux-2.6.23-mm1/arch/x86_64/ia32/vsyscall-sysenter.so.dbg and
linux-2.6.23-mm1-pmqos/arch/x86_64/ia32/vsyscall-sysenter.so.dbg differ
Binary files linux-2.6.23-mm1/arch/x86_64/vdso/vdso.so.dbg and
linux-2.6.23-mm1-pmqos/arch/x86_64/vdso/vdso.so.dbg differ
diff -urN -X linux-2.6.23-mm1/Documentation/dontdiff
linux-2.6.23-mm1/drivers/cpuidle/cpuidle.c
linux-2.6.23-mm1-pmqos/drivers/cpuidle/cpuidle.c
--- linux-2.6.23-mm1/drivers/cpuidle/cpuidle.c 2007-10-16 15:03:30.0
-0700
+++ linux-2.6.23-mm1-pmqos/drivers/cpuidle/cpuidle.c2007-10-17
09:26:21.0 -0700
@@ -268,7 +268,7 @@
static inline void latency_notifier_init(struct notifier_block *n)
{
-pm_qos_add_notifier(PM_QOS_CPUIDLE, n);
+pm_qos_add_notifier(PM_QOS_CPU_DMA_LATENCY, n);
}
#else /* CONFIG_SMP */
diff -urN -X linux-2.6.23-mm1/Documentation/dontdiff
linux-2.6.23-mm1/drivers/cpuidle/governors/ladder.c
linux-2.6.23-mm1-pmqos/drivers/cpuidle/governors/ladder.c
--- linux-2.6.23-mm1/drivers/cpuidle/governors/ladder.c 2007-10-16
15:03:30.0 -0700
+++ linux-2.6.23-mm1-pmqos/drivers/cpuidle/governors/ladder.c 2007-10-17
09:26:21.0 -0700
@@ -82,7 +82,7 @@
if (last_idx < dev->state_count - 1 &&
last_residency > last_state->threshold.promotion_time &&
dev->states[last_idx + 1].exit_latency <=
- pm_qos_requirement(PM_QOS_CPUIDLE)) {
+ pm_qos_requirement(PM_QOS_CPU_DMA_LATENCY)) {
last_state->stats.promotion_count++;
last_state->stats.demotion_count = 0;
if (last_state->stats.promotion_count >=
last_state->threshold.promotion_count) {
diff -urN -X