Patches contributed by Eötvös Lorand University


commit 87c8a64475f0597b7fd9c36d2f867ae8ef4a9eca
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Jun 2 13:19:08 2008 +0200

    printk: export console_drivers
    
    this symbol is needed by drivers/video/xen-fbfront.ko.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/kernel/printk.c b/kernel/printk.c
index 475fc22a2857..70cfa5ac75ce 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -75,6 +75,8 @@ EXPORT_SYMBOL(oops_in_progress);
 static DECLARE_MUTEX(console_sem);
 static DECLARE_MUTEX(secondary_console_sem);
 struct console *console_drivers;
+EXPORT_SYMBOL_GPL(console_drivers);
+
 /*
  * This is used for debugging the mess that is the VT code by
  * keeping track if we have the console semaphore held. It's

commit 1462a200057df08be12f3719e1f37adbd2c6e4d0
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Jun 16 08:40:04 2008 +0200

    Revert "prohibit rcutorture from being compiled into the kernel"
    
    This reverts commit 9aaffc898ff4a3df18c5fc4b9e0fa47e779ad726.
    
    That commit was a very bad idea. RCU_TORTURE found many boot timing
    bugs and other sorts of bugs in the past, so excluding it from
    boot images is very silly.
    
    The option already depends on DEBUG_KERNEL and is disabled by default.
    Even when it runs, the test threads are reniced. If it annoys people
    we could add a runtime sysctl.

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index d2099f41aa1e..f51ba2fa2662 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -531,13 +531,14 @@ config BOOT_PRINTK_DELAY
 config RCU_TORTURE_TEST
 	tristate "torture tests for RCU"
 	depends on DEBUG_KERNEL
-	depends on m
 	default n
 	help
 	  This option provides a kernel module that runs torture tests
 	  on the RCU infrastructure.  The kernel module may be built
 	  after the fact on the running kernel to be tested, if desired.
 
+	  Say Y here if you want RCU torture tests to start automatically
+	  at boot time (you probably don't).
 	  Say M if you want the RCU torture tests to build as a module.
 	  Say N if you are unsure.
 

commit 0b6a39f7ebcb1c82587ce35b401c513eed41ac5c
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Jun 9 13:29:43 2008 +0200

    Revert "x86: fix ioapic bug again"
    
    This reverts commit 6e908947b4995bc0e551a8257c586d5c3e428201.
    
    Németh Márton reported:
    
    | there is a problem in 2.6.26-rc3 which was not there in case of
    | 2.6.25: the CPU wakes up ~90,000 times per sec instead of ~60 per sec.
    |
    | I also "git bisected" the problem, the result is:
    |
    | 6e908947b4995bc0e551a8257c586d5c3e428201 is first bad commit
    | commit 6e908947b4995bc0e551a8257c586d5c3e428201
    | Author: Ingo Molnar <mingo@elte.hu>
    | Date:   Fri Mar 21 14:32:36 2008 +0100
    |
    |     x86: fix ioapic bug again
    
    the original problem is fixed by Maciej W. Rozycki in the tip/x86/apic
    branch (confirmed by Márton), but those changes are too intrusive for
    v2.6.26 so we'll go for the less intrusive (repeated) revert now.
    
    Reported-and-bisected-by: Németh Márton <nm127@freemail.hu>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c
index a40d54fc1fdd..4dc8600d9d20 100644
--- a/arch/x86/kernel/io_apic_32.c
+++ b/arch/x86/kernel/io_apic_32.c
@@ -2130,14 +2130,10 @@ static inline void __init check_timer(void)
 {
 	int apic1, pin1, apic2, pin2;
 	int vector;
-	unsigned int ver;
 	unsigned long flags;
 
 	local_irq_save(flags);
 
-	ver = apic_read(APIC_LVR);
-	ver = GET_APIC_VERSION(ver);
-
 	/*
 	 * get/set the timer IRQ vector:
 	 */
@@ -2150,15 +2146,11 @@ static inline void __init 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
-	 * timer_interrupt() 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);
-	timer_ack = !cpu_has_tsc;
-	timer_ack |= (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver));
+	timer_ack = 1;
 	if (timer_over_8254 > 0)
 		enable_8259A_irq(0);
 
diff --git a/arch/x86/kernel/nmi_32.c b/arch/x86/kernel/nmi_32.c
index 11b14bbaa61e..84160f74eeb0 100644
--- a/arch/x86/kernel/nmi_32.c
+++ b/arch/x86/kernel/nmi_32.c
@@ -26,7 +26,6 @@
 
 #include <asm/smp.h>
 #include <asm/nmi.h>
-#include <asm/timer.h>
 
 #include "mach_traps.h"
 
@@ -82,7 +81,7 @@ int __init check_nmi_watchdog(void)
 
 	prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL);
 	if (!prev_nmi_count)
-		goto error;
+		return -1;
 
 	printk(KERN_INFO "Testing NMI watchdog ... ");
 
@@ -119,7 +118,7 @@ int __init check_nmi_watchdog(void)
 	if (!atomic_read(&nmi_active)) {
 		kfree(prev_nmi_count);
 		atomic_set(&nmi_active, -1);
-		goto error;
+		return -1;
 	}
 	printk("OK.\n");
 
@@ -130,10 +129,6 @@ int __init check_nmi_watchdog(void)
 
 	kfree(prev_nmi_count);
 	return 0;
-error:
-	timer_ack = !cpu_has_tsc;
-
-	return -1;
 }
 
 static int __init setup_nmi_watchdog(char *str)

commit 3703f39965a197ebd91743fc38d0f640606b8da3
Author: Ingo Molnar <mingo@elte.hu>
Date:   Wed Jun 4 18:13:37 2008 +0200

    geode: fix modular build
    
    -tip testing found this build bug:
    
     MODPOST 331 modules
     ERROR: "geode_mfgpt_toggle_event" [drivers/watchdog/geodewdt.ko] undefined!
     ERROR: "geode_mfgpt_alloc_timer" [drivers/watchdog/geodewdt.ko] undefined!
     make[1]: *** [__modpost] Error 1
     make: *** [modules] Error 2
    
    with this config:
    
      http://redhat.com/~mingo/misc/config-Wed_Jun__4_18_01_59_CEST_2008.bad
    
    export those symbols.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/kernel/mfgpt_32.c b/arch/x86/kernel/mfgpt_32.c
index 3cad17fe026b..07c0f828f488 100644
--- a/arch/x86/kernel/mfgpt_32.c
+++ b/arch/x86/kernel/mfgpt_32.c
@@ -155,6 +155,7 @@ int geode_mfgpt_toggle_event(int timer, int cmp, int event, int enable)
 	wrmsr(msr, value, dummy);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(geode_mfgpt_toggle_event);
 
 int geode_mfgpt_set_irq(int timer, int cmp, int irq, int enable)
 {
@@ -222,6 +223,7 @@ int geode_mfgpt_alloc_timer(int timer, int domain)
 	/* No timers available - too bad */
 	return -1;
 }
+EXPORT_SYMBOL_GPL(geode_mfgpt_alloc_timer);
 
 
 #ifdef CONFIG_GEODE_MFGPT_TIMER

commit bb6dfb32f90094fea647e1f27d994a8b6ddd2766
Merge: 4f384f8bcdb5 5e70b7f3c244
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jun 12 11:27:22 2008 +0200

    Merge branch 'linus' into x86/gart

diff --cc arch/x86/kernel/pci-gart_64.c
index 1f99b62ff616,aa8ec928caa8..3710097f02eb
--- a/arch/x86/kernel/pci-gart_64.c
+++ b/arch/x86/kernel/pci-gart_64.c
@@@ -592,9 -615,26 +615,15 @@@ static __init int init_k8_gatt(struct a
  	agp_gatt_table = gatt;
  
  	for (i = 0; i < num_k8_northbridges; i++) {
 -		u32 gatt_reg;
 -		u32 ctl;
 -
  		dev = k8_northbridges[i];
 -		gatt_reg = __pa(gatt) >> 12;
 -		gatt_reg <<= 4;
 -		pci_write_config_dword(dev, 0x98, gatt_reg);
 -		pci_read_config_dword(dev, 0x90, &ctl);
 -
 -		ctl |= 1;
 -		ctl &= ~((1<<4) | (1<<5));
 -
 -		pci_write_config_dword(dev, 0x90, ctl);
 +		enable_gart_translation(dev, __pa(gatt));
  	}
+ 
+ 	error = sysdev_class_register(&gart_sysdev_class);
+ 	if (!error)
+ 		error = sysdev_register(&device_gart);
+ 	if (error)
+ 		panic("Could not register gart_sysdev -- would corrupt data on next suspend");
  	flush_gart();
  
  	printk(KERN_INFO "PCI-DMA: aperture base @ %x size %u KB\n",

commit 6460a261b5893e769a314c246faec31bbc4aad9c
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Jun 2 21:21:03 2008 +0200

    USB: fix build bug in USB_ISIGHTFW
    
    USB: fix build bug in USB_ISIGHTFW
    
    -tip tree testing found this build bug:
    
      drivers/built-in.o: In function `isight_firmware_load':
      isight_firmware.c:(.text+0x1ade08): undefined reference to `request_firmware'
      isight_firmware.c:(.text+0x1adf9c): undefined reference to `release_firmware'
    
    select FW_LOADER in USB_ISIGHTFW.
    
    
    From: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

diff --git a/drivers/usb/misc/Kconfig b/drivers/usb/misc/Kconfig
index eb6c06979f3b..001789c9a11a 100644
--- a/drivers/usb/misc/Kconfig
+++ b/drivers/usb/misc/Kconfig
@@ -272,6 +272,7 @@ config USB_TEST
 config USB_ISIGHTFW
 	tristate "iSight firmware loading support"
 	depends on USB
+	select FW_LOADER
 	help
 	  This driver loads firmware for USB Apple iSight cameras, allowing
 	  them to be driven by the USB video class driver available at

commit 040ec23d07f95285e9777a85cda29cb339a3065b
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Jun 9 01:45:29 2008 -0700

    sched: sched_clock() lockdep fix
    
    Sitsofe Wheeler bisected the following commit to cause a lockdep to
    warn about itself and turn itself off:
    
    > commit c6531cce6e6e4b99bcda46b6268d6f2d9e30aea4
    > Author: Ingo Molnar <mingo@elte.hu>
    > Date:   Mon May 12 21:21:14 2008 +0200
    >
    >     sched: do not trace sched_clock
    
    do not use raw irq flags in cpu_clock() as it causes lockdep to lose
    track of the true state of the IRQ flag.
    
    Reported-and-bisected-by: Sitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

diff --git a/kernel/sched.c b/kernel/sched.c
index 6590a828138f..b8c9fe676221 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -889,7 +889,7 @@ unsigned long long notrace cpu_clock(int cpu)
 	unsigned long long prev_cpu_time, time, delta_time;
 	unsigned long flags;
 
-	raw_local_irq_save(flags);
+	local_irq_save(flags);
 	prev_cpu_time = per_cpu(prev_cpu_time, cpu);
 	time = __cpu_clock(cpu) + per_cpu(time_offset, cpu);
 	delta_time = time-prev_cpu_time;
@@ -898,7 +898,7 @@ unsigned long long notrace cpu_clock(int cpu)
 		time = __sync_cpu_clock(time, cpu);
 		per_cpu(prev_cpu_time, cpu) = time;
 	}
-	raw_local_irq_restore(flags);
+	local_irq_restore(flags);
 
 	return time;
 }

commit af1cf204ba2fd8135933a2e4df523fb1112dc0e2
Author: Ingo Molnar <mingo@elte.hu>
Date:   Sun May 25 21:16:06 2008 +0200

    x86, mpparse: build fix
    
    fix:
    
      LD      .tmp_vmlinux1
      arch/x86/kernel/built-in.o: In function `setup_arch':
      : undefined reference to `early_reserve_e820_mpc_new'
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/include/asm-x86/mpspec.h b/include/asm-x86/mpspec.h
index 6e9c9588b1fc..b8ba37496e2d 100644
--- a/include/asm-x86/mpspec.h
+++ b/include/asm-x86/mpspec.h
@@ -46,7 +46,11 @@ extern unsigned long mp_lapic_addr;
 
 extern void find_smp_config(void);
 extern void get_smp_config(void);
+#ifdef CONFIG_X86_MPPARSE
 extern void early_reserve_e820_mpc_new(void);
+#else
+static inline void early_reserve_e820_mpc_new(void) { }
+#endif
 
 void __cpuinit generic_processor_info(int apicid, int version);
 #ifdef CONFIG_ACPI

commit 4e78c91abe1a40b905611100a593be62784ba355
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Jun 9 11:59:30 2008 +0200

    Revert "x86, numaq: add pci_acpi_scan_root() stub"
    
    This reverts commit f3294690979634ee10398bb0beadfe1d4edb881d.
    
    That bug will be fixed in a better way via:
    
      x86: make generic arch support NUMAQ

diff --git a/arch/x86/kernel/numaq_32.c b/arch/x86/kernel/numaq_32.c
index 992f53cb79b6..e65281b1634b 100644
--- a/arch/x86/kernel/numaq_32.c
+++ b/arch/x86/kernel/numaq_32.c
@@ -87,14 +87,3 @@ static int __init numaq_tsc_disable(void)
 	return 0;
 }
 arch_initcall(numaq_tsc_disable);
-
-#ifdef CONFIG_ACPI
-/*
- * Dummy implementation:
- */
-struct pci_bus * __devinit
-pci_acpi_scan_root(struct acpi_device *device, int domain, int busnum)
-{
-	return NULL;
-}
-#endif

commit 1420a4faee7086b6811b4a1f0672e32b5a6df80e
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Jun 9 15:47:38 2008 -0700

    irda: net/irda build fix: mcs7780
    
    -tip testing found the following build error:
    
      drivers/built-in.o: In function `mcs_receive_irq':
      mcs7780.c:(.text+0x4e429): undefined reference to `crc32_le'
      drivers/built-in.o: In function `mcs_hard_xmit':
      mcs7780.c:(.text+0x4e9af): undefined reference to `crc32_le'
    
    with:
    
      http://redhat.com/~mingo/misc/config-Sun_Jun__8_22_56_14_CEST_2008.bad
    
    the reason is a missing enablement of the CRC32 library in the Kconfig.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

diff --git a/drivers/net/irda/Kconfig b/drivers/net/irda/Kconfig
index ce816ba9c40d..e6317557a531 100644
--- a/drivers/net/irda/Kconfig
+++ b/drivers/net/irda/Kconfig
@@ -329,6 +329,7 @@ config PXA_FICP
 config MCS_FIR
 	tristate "MosChip MCS7780 IrDA-USB dongle"
 	depends on IRDA && USB && EXPERIMENTAL
+	select CRC32
 	help
 	  Say Y or M here if you want to build support for the MosChip
 	  MCS7780 IrDA-USB bridge device driver.