lkml.org 
[lkml]   [2004]   [Mar]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subjectidle Athlon with IOAPIC is 10C warmer since 2.6.3-bk1
Date
Hi,

a few days ago I noticed that my Athlon 3000+ was relatively hot (49C)
although it was completely idle. At that time I was running 2.6.3-mm3 with
ACPI and IOAPIC-support enabled.

As I tried 2.6.3, the idle temperature was at normal 39C. So I did do some
binary search with the -bk patches and found the patch that causes the high
idle temperature. It is ChangeSet@1.1626 aka 8259-timer-ack-fix.patch.

A patch to revert that ChangeSet for 2.6.4-rc1-mm2 is attached.

Best regards
Thomas Schlichter

P.S.: The high idle temperature only shows if the IOAPIC is used.
P.P.S: I already sent this mail last saturday, but as it seems to have never
reached LKML I send it again. I'm sorry if you got it twice!
--- linux-2.6.4-rc1-mm2/arch/i386/kernel/io_apic.c.orig 2004-03-03 14:56:10.000000000 +0100
+++ linux-2.6.4-rc1-mm2/arch/i386/kernel/io_apic.c 2004-03-03 17:35:03.000000000 +0100
@@ -2157,10 +2157,6 @@ static inline void check_timer(void)
{
int pin1, pin2;
int vector;
- unsigned int ver;
-
- ver = apic_read(APIC_LVR);
- ver = GET_APIC_VERSION(ver);

/*
* get/set the timer IRQ vector:
@@ -2174,17 +2170,11 @@ static inline void check_timer(void)
* mode for the 8259A whenever interrupts are routed
* through I/O APICs. Also IRQ0 has to be enabled in
* the 8259A which implies the virtual wire has to be
- * disabled in the local APIC. Finally timer interrupts
- * need to be acknowledged manually in the 8259A for
- * do_slow_timeoffset() and for the i82489DX when using
- * the NMI watchdog.
+ * disabled in the local APIC.
*/
apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
init_8259A(1);
- if (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver))
- timer_ack = 1;
- else
- timer_ack = !cpu_has_tsc;
+ timer_ack = 1;
enable_8259A_irq(0);

pin1 = find_isa_irq_pin(0, mp_INT);
@@ -2202,8 +2192,7 @@ static inline void check_timer(void)
disable_8259A_irq(0);
setup_nmi();
enable_8259A_irq(0);
- if (check_nmi_watchdog() < 0);
- timer_ack = !cpu_has_tsc;
+ check_nmi_watchdog();
}
return;
}
@@ -2226,8 +2215,7 @@ static inline void check_timer(void)
add_pin_to_irq(0, 0, pin2);
if (nmi_watchdog == NMI_IO_APIC) {
setup_nmi();
- if (check_nmi_watchdog() < 0);
- timer_ack = !cpu_has_tsc;
+ check_nmi_watchdog();
}
return;
}
\
 
 \ /
  Last update: 2005-03-22 14:01    [W:0.080 / U:0.276 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site