[PATCH] static initialization with blocking notifiers. was :wqRe: 2.6.23-mm1

2007-10-17 Thread Mark Gross
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 

[PATCH] static initialization with blocking notifiers. was :wqRe: 2.6.23-mm1

2007-10-17 Thread Mark Gross
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 linux-2.6.23-mm1/Documentation/dontdiff 
linux-2.6.23-mm1/drivers/cpuidle/governors/menu.c 
linux-2.6.23-mm1-pmqos/drivers/cpuidle/governors/menu.c
--- linux-2.6.23-mm1/drivers/cpuidle/governors/menu.c   2007-10-16 
15:03:30.0 -0700
+++ linux-2.6.23-mm1-pmqos/drivers/cpuidle/governors/menu.c 2007-10-17