lkml.org 
[lkml]   [2007]   [Mar]   [22]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: 2.6.21-rc[123] regression with NOAPIC
FromThomas Gleixner <>
DateThu, 22 Mar 2007 16:16:41 +0100
On Thu, 2007-03-22 at 15:16 +0100, Adrian Bunk wrote:
> > > Does it work if you do _not_ revert the commits, and instead replace in
> > > drivers/acpi/processor_idle.c the
> > >   #ifdef ARCH_APICTIMER_STOPS_ON_C3
> > > with an
> > >   #if 0
> > > ?
> > 
> > Then NOAPIC probably works again, but booting w/o NOAPIC fails.
> 
> But we'll know that it's this code that has a problen with noapic
> in the CONFIG_GENERIC_CLOCKEVENTS=n case.

Nope. This code does not have a problem. It causes a problem elsewhere:

It calls switch_ipi_to_APIC_timer() or switch_APIC_timer_to_ipi(), which
sets/clears a bit in the broadcast mask and enables / disables the local
APIC timer.

I don't see right now, why this causes the box to lock up hard, but
maybe the debug printk's below give us some hint.

	tglx

diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index 723417d..29376e2 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -886,6 +886,8 @@ void disable_APIC_timer(void)
 	if (using_apic_timer) {
 		unsigned long v;
 
+		printk("Disabling local APIC timer %d\n", apic_runs_main_timer);
+
 		v = apic_read(APIC_LVTT);
 		/*
 		 * When an illegal vector value (0-15) is written to an LVT
@@ -910,6 +912,7 @@ void enable_APIC_timer(void)
 	    !cpu_isset(cpu, timer_interrupt_broadcast_ipi_mask)) {
 		unsigned long v;
 
+		printk("Enabling local APIC timer: %d\n", apic_runs_main_timer);
 		v = apic_read(APIC_LVTT);
 		apic_write(APIC_LVTT, v & ~APIC_LVT_MASKED);
 	}
@@ -934,6 +937,7 @@ void smp_send_timer_broadcast_ipi(void)
 
 	cpus_and(mask, cpu_online_map, timer_interrupt_broadcast_ipi_mask);
 	if (!cpus_empty(mask)) {
+		printk("Send IPI\n");
 		send_IPI_mask(mask, LOCAL_TIMER_VECTOR);
 	}
 }

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-03-22 16:13    [from the cache]
©2003-2008