From 14fd2f20f811c4cf72abc6988efef62568dfade2 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Wed, 28 Apr 2010 13:55:11 +0000 Subject: [PATCH] panic on unrecovered NMI, thanks rtz2 SVN-Revision: 21232 --- .../001-rdc321x_mfd_southbridge.patch | 28 ++++------ .../rdc/patches-2.6.30/002-rdc321x_gpio.patch | 22 +++----- .../003-rdc321x_watchdog_southbridge.patch | 20 +++---- .../004-rdc321x_defs_remove.patch | 6 -- .../patches-2.6.30/011-use_host_lzma.patch | 6 +- .../012-export_erase_write.patch | 16 ++---- .../rdc/patches-2.6.30/100-rdc_boards.patch | 56 +++++++------------ .../110-rdc321x_watchdog_fix.patch | 16 +++--- .../120-panic_on_unrecovered_nmi.patch | 13 +++++ .../001-rdc321x_mfd_southbridge.patch | 28 ++++------ .../rdc/patches-2.6.32/002-rdc321x_gpio.patch | 22 +++----- .../003-rdc321x_watchdog_southbridge.patch | 20 +++---- .../004-rdc321x_defs_remove.patch | 6 -- .../012-export_erase_write.patch | 16 ++---- .../rdc/patches-2.6.32/100-rdc_boards.patch | 48 ++++++---------- .../110-rdc321x_watchdog_fix.patch | 16 +++--- .../120-panic_on_unrecovered_nmi.patch | 11 ++++ 17 files changed, 142 insertions(+), 208 deletions(-) create mode 100644 target/linux/rdc/patches-2.6.30/120-panic_on_unrecovered_nmi.patch create mode 100644 target/linux/rdc/patches-2.6.32/120-panic_on_unrecovered_nmi.patch diff --git a/target/linux/rdc/patches-2.6.30/001-rdc321x_mfd_southbridge.patch b/target/linux/rdc/patches-2.6.30/001-rdc321x_mfd_southbridge.patch index a5c6736506..12dca0b997 100644 --- a/target/linux/rdc/patches-2.6.30/001-rdc321x_mfd_southbridge.patch +++ b/target/linux/rdc/patches-2.6.30/001-rdc321x_mfd_southbridge.patch @@ -11,11 +11,9 @@ Changes from v2: - removed pci_dev accessors - use DEFINE_PCI_DEVICE_TABLE -Index: linux-2.6.30.10/drivers/mfd/Kconfig -=================================================================== ---- linux-2.6.30.10.orig/drivers/mfd/Kconfig 2010-04-28 10:48:54.000000000 +0200 -+++ linux-2.6.30.10/drivers/mfd/Kconfig 2010-04-28 10:49:44.000000000 +0200 -@@ -241,6 +241,15 @@ +--- a/drivers/mfd/Kconfig ++++ b/drivers/mfd/Kconfig +@@ -241,6 +241,15 @@ config PCF50633_GPIO Say yes here if you want to include support GPIO for pins on the PCF50633 chip. @@ -31,11 +29,9 @@ Index: linux-2.6.30.10/drivers/mfd/Kconfig endmenu menu "Multimedia Capabilities Port drivers" -Index: linux-2.6.30.10/drivers/mfd/Makefile -=================================================================== ---- linux-2.6.30.10.orig/drivers/mfd/Makefile 2010-04-28 10:48:54.000000000 +0200 -+++ linux-2.6.30.10/drivers/mfd/Makefile 2010-04-28 10:49:02.000000000 +0200 -@@ -40,4 +40,6 @@ +--- a/drivers/mfd/Makefile ++++ b/drivers/mfd/Makefile +@@ -40,4 +40,6 @@ obj-$(CONFIG_PMIC_DA903X) += da903x.o obj-$(CONFIG_MFD_PCF50633) += pcf50633-core.o obj-$(CONFIG_PCF50633_ADC) += pcf50633-adc.o @@ -44,10 +40,8 @@ Index: linux-2.6.30.10/drivers/mfd/Makefile +obj-$(CONFIG_PCF50633_GPIO) += pcf50633-gpio.o + +obj-$(CONFIG_MFD_RDC321X) += rdc321x-southbridge.o -Index: linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c 2010-04-28 10:49:02.000000000 +0200 +--- /dev/null ++++ b/drivers/mfd/rdc321x-southbridge.c @@ -0,0 +1,123 @@ +/* + * RDC321x MFD southbrige driver @@ -172,10 +166,8 @@ Index: linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c +MODULE_AUTHOR("Florian Fainelli "); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("RDC R-321x MFD southbridge driver"); -Index: linux-2.6.30.10/include/linux/mfd/rdc321x.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/include/linux/mfd/rdc321x.h 2010-04-28 10:49:02.000000000 +0200 +--- /dev/null ++++ b/include/linux/mfd/rdc321x.h @@ -0,0 +1,26 @@ +#ifndef __RDC321X_MFD_H +#define __RDC321X_MFD_H diff --git a/target/linux/rdc/patches-2.6.30/002-rdc321x_gpio.patch b/target/linux/rdc/patches-2.6.30/002-rdc321x_gpio.patch index f2b96b32c2..a9e6348f7c 100644 --- a/target/linux/rdc/patches-2.6.30/002-rdc321x_gpio.patch +++ b/target/linux/rdc/patches-2.6.30/002-rdc321x_gpio.patch @@ -8,11 +8,9 @@ Changes from v2: - use the pci_dev pointer passed as platform data - replaced rdc321x_pci_{read,write} -Index: linux-2.6.30.10/drivers/gpio/Kconfig -=================================================================== ---- linux-2.6.30.10.orig/drivers/gpio/Kconfig 2009-12-04 07:00:07.000000000 +0100 -+++ linux-2.6.30.10/drivers/gpio/Kconfig 2010-04-28 10:16:52.000000000 +0200 -@@ -161,6 +161,14 @@ +--- a/drivers/gpio/Kconfig ++++ b/drivers/gpio/Kconfig +@@ -161,6 +161,14 @@ config GPIO_BT8XX If unsure, say N. @@ -27,19 +25,15 @@ Index: linux-2.6.30.10/drivers/gpio/Kconfig comment "SPI GPIO expanders:" config GPIO_MAX7301 -Index: linux-2.6.30.10/drivers/gpio/Makefile -=================================================================== ---- linux-2.6.30.10.orig/drivers/gpio/Makefile 2009-12-04 07:00:07.000000000 +0100 -+++ linux-2.6.30.10/drivers/gpio/Makefile 2010-04-28 10:17:13.000000000 +0200 -@@ -12,3 +12,4 @@ +--- a/drivers/gpio/Makefile ++++ b/drivers/gpio/Makefile +@@ -12,3 +12,4 @@ obj-$(CONFIG_GPIO_PCF857X) += pcf857x.o obj-$(CONFIG_GPIO_TWL4030) += twl4030-gpio.o obj-$(CONFIG_GPIO_XILINX) += xilinx_gpio.o obj-$(CONFIG_GPIO_BT8XX) += bt8xxgpio.o +obj-$(CONFIG_GPIO_RDC321X) += rdc321x-gpio.o -Index: linux-2.6.30.10/drivers/gpio/rdc321x-gpio.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/drivers/gpio/rdc321x-gpio.c 2010-04-28 10:16:52.000000000 +0200 +--- /dev/null ++++ b/drivers/gpio/rdc321x-gpio.c @@ -0,0 +1,245 @@ +/* + * RDC321x GPIO driver diff --git a/target/linux/rdc/patches-2.6.30/003-rdc321x_watchdog_southbridge.patch b/target/linux/rdc/patches-2.6.30/003-rdc321x_watchdog_southbridge.patch index 103199996b..2671fb17cd 100644 --- a/target/linux/rdc/patches-2.6.30/003-rdc321x_watchdog_southbridge.patch +++ b/target/linux/rdc/patches-2.6.30/003-rdc321x_watchdog_southbridge.patch @@ -10,10 +10,8 @@ Changes from v2: - replaced rdc321x_pci_{read,write} - use the pci_dev pointer passed as platform_data -Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c -=================================================================== ---- linux-2.6.30.10.orig/drivers/watchdog/rdc321x_wdt.c 2009-12-04 07:00:07.000000000 +0100 -+++ linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c 2010-04-28 10:17:46.000000000 +0200 +--- a/drivers/watchdog/rdc321x_wdt.c ++++ b/drivers/watchdog/rdc321x_wdt.c @@ -1,7 +1,7 @@ /* * RDC321x watchdog driver @@ -33,7 +31,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c #define RDC_WDT_MASK 0x80000000 /* Mask */ #define RDC_WDT_EN 0x00800000 /* Enable bit */ -@@ -63,6 +62,8 @@ +@@ -63,6 +62,8 @@ static struct { int default_ticks; unsigned long inuse; spinlock_t lock; @@ -42,7 +40,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c } rdc321x_wdt_device; /* generic helper functions */ -@@ -70,14 +71,18 @@ +@@ -70,14 +71,18 @@ static struct { static void rdc321x_wdt_trigger(unsigned long unused) { unsigned long flags; @@ -63,7 +61,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags); /* requeue?? */ -@@ -105,10 +110,13 @@ +@@ -105,10 +110,13 @@ static void rdc321x_wdt_start(void) /* Clear the timer */ spin_lock_irqsave(&rdc321x_wdt_device.lock, flags); @@ -79,7 +77,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags); mod_timer(&rdc321x_wdt_device.timer, -@@ -148,7 +156,7 @@ +@@ -148,7 +156,7 @@ static long rdc321x_wdt_ioctl(struct fil unsigned long arg) { void __user *argp = (void __user *)arg; @@ -88,7 +86,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c static struct watchdog_info ident = { .options = WDIOF_CARDRESET, .identity = "RDC321x WDT", -@@ -162,9 +170,10 @@ +@@ -162,9 +170,10 @@ static long rdc321x_wdt_ioctl(struct fil case WDIOC_GETSTATUS: /* Read the value from the DATA register */ spin_lock_irqsave(&rdc321x_wdt_device.lock, flags); @@ -101,7 +99,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c return -EFAULT; break; case WDIOC_GETSUPPORT: -@@ -219,17 +228,35 @@ +@@ -219,17 +228,35 @@ static struct miscdevice rdc321x_wdt_mis static int __devinit rdc321x_wdt_probe(struct platform_device *pdev) { int err; @@ -139,7 +137,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c init_completion(&rdc321x_wdt_device.stop); rdc321x_wdt_device.queue = 0; -@@ -240,7 +267,7 @@ +@@ -240,7 +267,7 @@ static int __devinit rdc321x_wdt_probe(s rdc321x_wdt_device.default_ticks = ticks; diff --git a/target/linux/rdc/patches-2.6.30/004-rdc321x_defs_remove.patch b/target/linux/rdc/patches-2.6.30/004-rdc321x_defs_remove.patch index 3bafb401fe..75abbbdd28 100644 --- a/target/linux/rdc/patches-2.6.30/004-rdc321x_defs_remove.patch +++ b/target/linux/rdc/patches-2.6.30/004-rdc321x_defs_remove.patch @@ -3,9 +3,6 @@ the southbridge. Signed-off-by: Florian Fainelli --- -diff --git a/arch/x86/include/asm/rdc321x_defs.h b/arch/x86/include/asm/rdc321x_defs.h -deleted file mode 100644 -index c8e9c8b..0000000 --- a/arch/x86/include/asm/rdc321x_defs.h +++ /dev/null @@ -1,12 +0,0 @@ @@ -21,6 +18,3 @@ index c8e9c8b..0000000 -#define RDC321X_GPIO_DATA_REG2 0x88 - -#define RDC321X_MAX_GPIO 58 - - - diff --git a/target/linux/rdc/patches-2.6.30/011-use_host_lzma.patch b/target/linux/rdc/patches-2.6.30/011-use_host_lzma.patch index 5def7393fa..0cb47349ad 100644 --- a/target/linux/rdc/patches-2.6.30/011-use_host_lzma.patch +++ b/target/linux/rdc/patches-2.6.30/011-use_host_lzma.patch @@ -1,6 +1,6 @@ ---- a/scripts/Makefile.lib 2009-11-06 08:55:20.000000000 +0100 -+++ b/scripts/Makefile.lib 2009-11-06 09:08:45.000000000 +0100 -@@ -204,4 +204,4 @@ +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -204,4 +204,4 @@ cmd_bzip2 = (bzip2 -9 < $< && $(size_app # --------------------------------------------------------------------------- quiet_cmd_lzma = LZMA $@ diff --git a/target/linux/rdc/patches-2.6.30/012-export_erase_write.patch b/target/linux/rdc/patches-2.6.30/012-export_erase_write.patch index 2d6feba241..b96e786035 100644 --- a/target/linux/rdc/patches-2.6.30/012-export_erase_write.patch +++ b/target/linux/rdc/patches-2.6.30/012-export_erase_write.patch @@ -1,8 +1,6 @@ -Index: linux-2.6.30.10/drivers/mtd/mtdblock.c -=================================================================== ---- linux-2.6.30.10.orig/drivers/mtd/mtdblock.c 2010-03-19 00:17:37.000000000 +0100 -+++ linux-2.6.30.10/drivers/mtd/mtdblock.c 2010-03-19 00:17:54.000000000 +0100 -@@ -45,7 +45,7 @@ +--- a/drivers/mtd/mtdblock.c ++++ b/drivers/mtd/mtdblock.c +@@ -45,7 +45,7 @@ static void erase_callback(struct erase_ wake_up(wait_q); } @@ -11,11 +9,9 @@ Index: linux-2.6.30.10/drivers/mtd/mtdblock.c int len, const char *buf) { struct erase_info erase; -Index: linux-2.6.30.10/include/linux/mtd/mtd.h -=================================================================== ---- linux-2.6.30.10.orig/include/linux/mtd/mtd.h 2010-03-19 00:17:42.000000000 +0100 -+++ linux-2.6.30.10/include/linux/mtd/mtd.h 2010-03-19 00:21:22.000000000 +0100 -@@ -319,6 +319,10 @@ +--- a/include/linux/mtd/mtd.h ++++ b/include/linux/mtd/mtd.h +@@ -319,6 +319,10 @@ int default_mtd_writev(struct mtd_info * int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs, unsigned long count, loff_t from, size_t *retlen); diff --git a/target/linux/rdc/patches-2.6.30/100-rdc_boards.patch b/target/linux/rdc/patches-2.6.30/100-rdc_boards.patch index f3eb663c4a..9fdfd9494f 100644 --- a/target/linux/rdc/patches-2.6.30/100-rdc_boards.patch +++ b/target/linux/rdc/patches-2.6.30/100-rdc_boards.patch @@ -1,8 +1,6 @@ -Index: linux-2.6.30.10/arch/x86/Makefile -=================================================================== ---- linux-2.6.30.10.orig/arch/x86/Makefile 2009-12-04 07:00:07.000000000 +0100 -+++ linux-2.6.30.10/arch/x86/Makefile 2010-04-28 10:17:54.000000000 +0200 -@@ -124,6 +124,9 @@ +--- a/arch/x86/Makefile ++++ b/arch/x86/Makefile +@@ -124,6 +124,9 @@ core-y += $(fcore-y) # Xen paravirtualization support core-$(CONFIG_XEN) += arch/x86/xen/ @@ -12,20 +10,16 @@ Index: linux-2.6.30.10/arch/x86/Makefile # lguest paravirtualization support core-$(CONFIG_LGUEST_GUEST) += arch/x86/lguest/ -Index: linux-2.6.30.10/arch/x86/mach-rdc321x/Makefile -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/arch/x86/mach-rdc321x/Makefile 2010-04-28 10:20:33.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/Makefile @@ -0,0 +1,5 @@ +# +# Makefile for the RDC321x specific parts of the kernel +# +obj-$(CONFIG_X86_RDC321X) := platform.o reboot.o boards/sitecom.o boards/ar525w.o boards/bifferboard.o boards/r8610.o + -Index: linux-2.6.30.10/arch/x86/mach-rdc321x/platform.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/arch/x86/mach-rdc321x/platform.c 2010-04-28 10:22:23.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/platform.c @@ -0,0 +1,115 @@ +/* + * Generic RDC321x platform devices @@ -142,10 +136,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/platform.c + return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs)); +} +late_initcall(rdc_board_setup); -Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/ar525w.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/arch/x86/mach-rdc321x/boards/ar525w.c 2010-04-28 10:23:52.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/boards/ar525w.c @@ -0,0 +1,243 @@ +/* + * ar525w RDC321x platform devices @@ -390,10 +382,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/ar525w.c +} + +arch_initcall(ar525w_setup); -Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/bifferboard.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/arch/x86/mach-rdc321x/boards/bifferboard.c 2010-04-28 10:24:47.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/boards/bifferboard.c @@ -0,0 +1,81 @@ +/* + * Bifferboard RDC321x platform devices @@ -476,10 +466,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/bifferboard.c + return register_mtd_parser(&bifferboard_parser); +} +arch_initcall(bifferboard_setup); -Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/r8610.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/arch/x86/mach-rdc321x/boards/r8610.c 2010-04-28 10:25:46.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/boards/r8610.c @@ -0,0 +1,65 @@ +/* + * R8610 RDC321x platform devices @@ -546,10 +534,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/r8610.c +} + +arch_initcall(r8610_setup); -Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/sitecom.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/arch/x86/mach-rdc321x/boards/sitecom.c 2010-04-28 10:26:21.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/boards/sitecom.c @@ -0,0 +1,111 @@ +/* + * Sitecom RDC321x platform devices @@ -662,10 +648,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/boards/sitecom.c +} + +arch_initcall(sitecom_setup); -Index: linux-2.6.30.10/arch/x86/mach-rdc321x/reboot.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/arch/x86/mach-rdc321x/reboot.c 2010-04-28 10:26:53.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/reboot.c @@ -0,0 +1,44 @@ +/* + * This program is free software; you can redistribute it and/or @@ -711,10 +695,8 @@ Index: linux-2.6.30.10/arch/x86/mach-rdc321x/reboot.c +} + +arch_initcall(rdc_setup_reset); -Index: linux-2.6.30.10/arch/x86/include/asm/rdc_boards.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.10/arch/x86/include/asm/rdc_boards.h 2010-04-28 10:42:56.000000000 +0200 +--- /dev/null ++++ b/arch/x86/include/asm/rdc_boards.h @@ -0,0 +1,36 @@ +/* + * RDC321x boards diff --git a/target/linux/rdc/patches-2.6.30/110-rdc321x_watchdog_fix.patch b/target/linux/rdc/patches-2.6.30/110-rdc321x_watchdog_fix.patch index 3b1d8aa348..03ef7496e4 100644 --- a/target/linux/rdc/patches-2.6.30/110-rdc321x_watchdog_fix.patch +++ b/target/linux/rdc/patches-2.6.30/110-rdc321x_watchdog_fix.patch @@ -1,7 +1,5 @@ -Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c -=================================================================== ---- linux-2.6.30.10.orig/drivers/watchdog/rdc321x_wdt.c 2010-04-28 11:11:44.000000000 +0200 -+++ linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c 2010-04-28 11:20:51.000000000 +0200 +--- a/drivers/watchdog/rdc321x_wdt.c ++++ b/drivers/watchdog/rdc321x_wdt.c @@ -36,111 +36,99 @@ #include #include @@ -164,7 +162,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c return -EBUSY; return nonseekable_open(inode, file); -@@ -148,7 +136,16 @@ +@@ -148,7 +136,16 @@ static int rdc321x_wdt_open(struct inode static int rdc321x_wdt_release(struct inode *inode, struct file *file) { @@ -182,7 +180,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c return 0; } -@@ -156,30 +153,29 @@ +@@ -156,30 +153,29 @@ static long rdc321x_wdt_ioctl(struct fil unsigned long arg) { void __user *argp = (void __user *)arg; @@ -227,7 +225,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c case WDIOC_SETOPTIONS: if (copy_from_user(&value, argp, sizeof(int))) return -EFAULT; -@@ -194,17 +190,34 @@ +@@ -194,17 +190,34 @@ static long rdc321x_wdt_ioctl(struct fil } break; default: @@ -263,7 +261,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c rdc321x_wdt_reset(); return count; -@@ -246,27 +259,18 @@ +@@ -246,27 +259,18 @@ static int __devinit rdc321x_wdt_probe(s rdc321x_wdt_device.sb_pdev = pdata->sb_pdev; rdc321x_wdt_device.base_reg = r->start; @@ -297,7 +295,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c dev_info(&pdev->dev, "watchdog init success\n"); return 0; -@@ -274,10 +278,11 @@ +@@ -274,10 +278,11 @@ static int __devinit rdc321x_wdt_probe(s static int rdc321x_wdt_remove(struct platform_device *pdev) { diff --git a/target/linux/rdc/patches-2.6.30/120-panic_on_unrecovered_nmi.patch b/target/linux/rdc/patches-2.6.30/120-panic_on_unrecovered_nmi.patch new file mode 100644 index 0000000000..5ebe21555b --- /dev/null +++ b/target/linux/rdc/patches-2.6.30/120-panic_on_unrecovered_nmi.patch @@ -0,0 +1,13 @@ +Index: linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c +=================================================================== +--- linux-2.6.30.10.orig/drivers/mfd/rdc321x-southbridge.c 2010-04-28 13:05:17.000000000 +0200 ++++ linux-2.6.30.10/drivers/mfd/rdc321x-southbridge.c 2010-04-28 13:05:27.000000000 +0200 +@@ -84,6 +84,8 @@ + rdc321x_gpio_pdata.sb_pdev = pdev; + rdc321x_wdt_pdata.sb_pdev = pdev; + ++ panic_on_unrecovered_nmi = 1; ++ + return mfd_add_devices(&pdev->dev, -1, + rdc321x_sb_cells, ARRAY_SIZE(rdc321x_sb_cells), NULL, 0); + } diff --git a/target/linux/rdc/patches-2.6.32/001-rdc321x_mfd_southbridge.patch b/target/linux/rdc/patches-2.6.32/001-rdc321x_mfd_southbridge.patch index 75b0d1b135..036e7318a2 100644 --- a/target/linux/rdc/patches-2.6.32/001-rdc321x_mfd_southbridge.patch +++ b/target/linux/rdc/patches-2.6.32/001-rdc321x_mfd_southbridge.patch @@ -11,11 +11,9 @@ Changes from v2: - removed pci_dev accessors - use DEFINE_PCI_DEVICE_TABLE -Index: linux-2.6.32.10/drivers/mfd/Kconfig -=================================================================== ---- linux-2.6.32.10.orig/drivers/mfd/Kconfig 2010-03-15 16:52:04.000000000 +0100 -+++ linux-2.6.32.10/drivers/mfd/Kconfig 2010-04-28 11:38:27.000000000 +0200 -@@ -305,6 +305,15 @@ +--- a/drivers/mfd/Kconfig ++++ b/drivers/mfd/Kconfig +@@ -305,6 +305,15 @@ config EZX_PCAP This enables the PCAP ASIC present on EZX Phones. This is needed for MMC, TouchScreen, Sound, USB, etc.. @@ -31,20 +29,16 @@ Index: linux-2.6.32.10/drivers/mfd/Kconfig endmenu menu "Multimedia Capabilities Port drivers" -Index: linux-2.6.32.10/drivers/mfd/Makefile -=================================================================== ---- linux-2.6.32.10.orig/drivers/mfd/Makefile 2010-03-15 16:52:04.000000000 +0100 -+++ linux-2.6.32.10/drivers/mfd/Makefile 2010-04-28 11:38:53.000000000 +0200 -@@ -50,3 +50,5 @@ +--- a/drivers/mfd/Makefile ++++ b/drivers/mfd/Makefile +@@ -50,3 +50,5 @@ obj-$(CONFIG_PCF50633_ADC) += pcf50633-a obj-$(CONFIG_PCF50633_GPIO) += pcf50633-gpio.o obj-$(CONFIG_AB3100_CORE) += ab3100-core.o obj-$(CONFIG_AB3100_OTP) += ab3100-otp.o + +obj-$(CONFIG_MFD_RDC321X) += rdc321x-southbridge.o -Index: linux-2.6.32.10/drivers/mfd/rdc321x-southbridge.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/drivers/mfd/rdc321x-southbridge.c 2010-04-28 11:38:27.000000000 +0200 +--- /dev/null ++++ b/drivers/mfd/rdc321x-southbridge.c @@ -0,0 +1,123 @@ +/* + * RDC321x MFD southbrige driver @@ -169,10 +163,8 @@ Index: linux-2.6.32.10/drivers/mfd/rdc321x-southbridge.c +MODULE_AUTHOR("Florian Fainelli "); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("RDC R-321x MFD southbridge driver"); -Index: linux-2.6.32.10/include/linux/mfd/rdc321x.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/include/linux/mfd/rdc321x.h 2010-04-28 11:38:27.000000000 +0200 +--- /dev/null ++++ b/include/linux/mfd/rdc321x.h @@ -0,0 +1,26 @@ +#ifndef __RDC321X_MFD_H +#define __RDC321X_MFD_H diff --git a/target/linux/rdc/patches-2.6.32/002-rdc321x_gpio.patch b/target/linux/rdc/patches-2.6.32/002-rdc321x_gpio.patch index e83d27ef81..e1aa46e8a4 100644 --- a/target/linux/rdc/patches-2.6.32/002-rdc321x_gpio.patch +++ b/target/linux/rdc/patches-2.6.32/002-rdc321x_gpio.patch @@ -8,11 +8,9 @@ Changes from v2: - use the pci_dev pointer passed as platform data - replaced rdc321x_pci_{read,write} -Index: linux-2.6.32.10/drivers/gpio/Kconfig -=================================================================== ---- linux-2.6.32.10.orig/drivers/gpio/Kconfig 2010-03-15 16:52:04.000000000 +0100 -+++ linux-2.6.32.10/drivers/gpio/Kconfig 2010-04-28 11:39:02.000000000 +0200 -@@ -196,6 +196,14 @@ +--- a/drivers/gpio/Kconfig ++++ b/drivers/gpio/Kconfig +@@ -196,6 +196,14 @@ config GPIO_LANGWELL help Say Y here to support Intel Moorestown platform GPIO. @@ -27,19 +25,15 @@ Index: linux-2.6.32.10/drivers/gpio/Kconfig comment "SPI GPIO expanders:" config GPIO_MAX7301 -Index: linux-2.6.32.10/drivers/gpio/Makefile -=================================================================== ---- linux-2.6.32.10.orig/drivers/gpio/Makefile 2010-03-15 16:52:04.000000000 +0100 -+++ linux-2.6.32.10/drivers/gpio/Makefile 2010-04-28 11:39:17.000000000 +0200 -@@ -19,3 +19,4 @@ +--- a/drivers/gpio/Makefile ++++ b/drivers/gpio/Makefile +@@ -19,3 +19,4 @@ obj-$(CONFIG_GPIO_XILINX) += xilinx_gpio obj-$(CONFIG_GPIO_BT8XX) += bt8xxgpio.o obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o obj-$(CONFIG_GPIO_WM831X) += wm831x-gpio.o +obj-$(CONFIG_GPIO_RDC321X) += rdc321x-gpio.o -Index: linux-2.6.32.10/drivers/gpio/rdc321x-gpio.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/drivers/gpio/rdc321x-gpio.c 2010-04-28 11:39:02.000000000 +0200 +--- /dev/null ++++ b/drivers/gpio/rdc321x-gpio.c @@ -0,0 +1,245 @@ +/* + * RDC321x GPIO driver diff --git a/target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch b/target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch index 103199996b..2671fb17cd 100644 --- a/target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch +++ b/target/linux/rdc/patches-2.6.32/003-rdc321x_watchdog_southbridge.patch @@ -10,10 +10,8 @@ Changes from v2: - replaced rdc321x_pci_{read,write} - use the pci_dev pointer passed as platform_data -Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c -=================================================================== ---- linux-2.6.30.10.orig/drivers/watchdog/rdc321x_wdt.c 2009-12-04 07:00:07.000000000 +0100 -+++ linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c 2010-04-28 10:17:46.000000000 +0200 +--- a/drivers/watchdog/rdc321x_wdt.c ++++ b/drivers/watchdog/rdc321x_wdt.c @@ -1,7 +1,7 @@ /* * RDC321x watchdog driver @@ -33,7 +31,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c #define RDC_WDT_MASK 0x80000000 /* Mask */ #define RDC_WDT_EN 0x00800000 /* Enable bit */ -@@ -63,6 +62,8 @@ +@@ -63,6 +62,8 @@ static struct { int default_ticks; unsigned long inuse; spinlock_t lock; @@ -42,7 +40,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c } rdc321x_wdt_device; /* generic helper functions */ -@@ -70,14 +71,18 @@ +@@ -70,14 +71,18 @@ static struct { static void rdc321x_wdt_trigger(unsigned long unused) { unsigned long flags; @@ -63,7 +61,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags); /* requeue?? */ -@@ -105,10 +110,13 @@ +@@ -105,10 +110,13 @@ static void rdc321x_wdt_start(void) /* Clear the timer */ spin_lock_irqsave(&rdc321x_wdt_device.lock, flags); @@ -79,7 +77,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c spin_unlock_irqrestore(&rdc321x_wdt_device.lock, flags); mod_timer(&rdc321x_wdt_device.timer, -@@ -148,7 +156,7 @@ +@@ -148,7 +156,7 @@ static long rdc321x_wdt_ioctl(struct fil unsigned long arg) { void __user *argp = (void __user *)arg; @@ -88,7 +86,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c static struct watchdog_info ident = { .options = WDIOF_CARDRESET, .identity = "RDC321x WDT", -@@ -162,9 +170,10 @@ +@@ -162,9 +170,10 @@ static long rdc321x_wdt_ioctl(struct fil case WDIOC_GETSTATUS: /* Read the value from the DATA register */ spin_lock_irqsave(&rdc321x_wdt_device.lock, flags); @@ -101,7 +99,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c return -EFAULT; break; case WDIOC_GETSUPPORT: -@@ -219,17 +228,35 @@ +@@ -219,17 +228,35 @@ static struct miscdevice rdc321x_wdt_mis static int __devinit rdc321x_wdt_probe(struct platform_device *pdev) { int err; @@ -139,7 +137,7 @@ Index: linux-2.6.30.10/drivers/watchdog/rdc321x_wdt.c init_completion(&rdc321x_wdt_device.stop); rdc321x_wdt_device.queue = 0; -@@ -240,7 +267,7 @@ +@@ -240,7 +267,7 @@ static int __devinit rdc321x_wdt_probe(s rdc321x_wdt_device.default_ticks = ticks; diff --git a/target/linux/rdc/patches-2.6.32/004-rdc321x_defs_remove.patch b/target/linux/rdc/patches-2.6.32/004-rdc321x_defs_remove.patch index 3bafb401fe..75abbbdd28 100644 --- a/target/linux/rdc/patches-2.6.32/004-rdc321x_defs_remove.patch +++ b/target/linux/rdc/patches-2.6.32/004-rdc321x_defs_remove.patch @@ -3,9 +3,6 @@ the southbridge. Signed-off-by: Florian Fainelli --- -diff --git a/arch/x86/include/asm/rdc321x_defs.h b/arch/x86/include/asm/rdc321x_defs.h -deleted file mode 100644 -index c8e9c8b..0000000 --- a/arch/x86/include/asm/rdc321x_defs.h +++ /dev/null @@ -1,12 +0,0 @@ @@ -21,6 +18,3 @@ index c8e9c8b..0000000 -#define RDC321X_GPIO_DATA_REG2 0x88 - -#define RDC321X_MAX_GPIO 58 - - - diff --git a/target/linux/rdc/patches-2.6.32/012-export_erase_write.patch b/target/linux/rdc/patches-2.6.32/012-export_erase_write.patch index 2d6feba241..5143a7c393 100644 --- a/target/linux/rdc/patches-2.6.32/012-export_erase_write.patch +++ b/target/linux/rdc/patches-2.6.32/012-export_erase_write.patch @@ -1,8 +1,6 @@ -Index: linux-2.6.30.10/drivers/mtd/mtdblock.c -=================================================================== ---- linux-2.6.30.10.orig/drivers/mtd/mtdblock.c 2010-03-19 00:17:37.000000000 +0100 -+++ linux-2.6.30.10/drivers/mtd/mtdblock.c 2010-03-19 00:17:54.000000000 +0100 -@@ -45,7 +45,7 @@ +--- a/drivers/mtd/mtdblock.c ++++ b/drivers/mtd/mtdblock.c +@@ -47,7 +47,7 @@ static void erase_callback(struct erase_ wake_up(wait_q); } @@ -11,11 +9,9 @@ Index: linux-2.6.30.10/drivers/mtd/mtdblock.c int len, const char *buf) { struct erase_info erase; -Index: linux-2.6.30.10/include/linux/mtd/mtd.h -=================================================================== ---- linux-2.6.30.10.orig/include/linux/mtd/mtd.h 2010-03-19 00:17:42.000000000 +0100 -+++ linux-2.6.30.10/include/linux/mtd/mtd.h 2010-03-19 00:21:22.000000000 +0100 -@@ -319,6 +319,10 @@ +--- a/include/linux/mtd/mtd.h ++++ b/include/linux/mtd/mtd.h +@@ -319,6 +319,10 @@ int default_mtd_writev(struct mtd_info * int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs, unsigned long count, loff_t from, size_t *retlen); diff --git a/target/linux/rdc/patches-2.6.32/100-rdc_boards.patch b/target/linux/rdc/patches-2.6.32/100-rdc_boards.patch index e88e6ee853..0b8446c824 100644 --- a/target/linux/rdc/patches-2.6.32/100-rdc_boards.patch +++ b/target/linux/rdc/patches-2.6.32/100-rdc_boards.patch @@ -1,17 +1,13 @@ -Index: linux-2.6.32.10/arch/x86/mach-rdc321x/Makefile -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/arch/x86/mach-rdc321x/Makefile 2010-04-28 11:39:32.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/Makefile @@ -0,0 +1,5 @@ +# +# Makefile for the RDC321x specific parts of the kernel +# +obj-$(CONFIG_X86_RDC321X) := platform.o reboot.o boards/sitecom.o boards/ar525w.o boards/bifferboard.o boards/r8610.o + -Index: linux-2.6.32.10/arch/x86/mach-rdc321x/platform.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/arch/x86/mach-rdc321x/platform.c 2010-04-28 11:39:32.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/platform.c @@ -0,0 +1,115 @@ +/* + * Generic RDC321x platform devices @@ -128,10 +124,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/platform.c + return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs)); +} +late_initcall(rdc_board_setup); -Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/ar525w.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/arch/x86/mach-rdc321x/boards/ar525w.c 2010-04-28 11:39:32.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/boards/ar525w.c @@ -0,0 +1,243 @@ +/* + * ar525w RDC321x platform devices @@ -376,10 +370,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/ar525w.c +} + +arch_initcall(ar525w_setup); -Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/bifferboard.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/arch/x86/mach-rdc321x/boards/bifferboard.c 2010-04-28 11:39:32.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/boards/bifferboard.c @@ -0,0 +1,81 @@ +/* + * Bifferboard RDC321x platform devices @@ -462,10 +454,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/bifferboard.c + return register_mtd_parser(&bifferboard_parser); +} +arch_initcall(bifferboard_setup); -Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/r8610.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/arch/x86/mach-rdc321x/boards/r8610.c 2010-04-28 11:39:32.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/boards/r8610.c @@ -0,0 +1,65 @@ +/* + * R8610 RDC321x platform devices @@ -532,10 +522,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/r8610.c +} + +arch_initcall(r8610_setup); -Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/sitecom.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/arch/x86/mach-rdc321x/boards/sitecom.c 2010-04-28 11:39:32.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/boards/sitecom.c @@ -0,0 +1,111 @@ +/* + * Sitecom RDC321x platform devices @@ -648,10 +636,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/boards/sitecom.c +} + +arch_initcall(sitecom_setup); -Index: linux-2.6.32.10/arch/x86/mach-rdc321x/reboot.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/arch/x86/mach-rdc321x/reboot.c 2010-04-28 11:39:32.000000000 +0200 +--- /dev/null ++++ b/arch/x86/mach-rdc321x/reboot.c @@ -0,0 +1,44 @@ +/* + * This program is free software; you can redistribute it and/or @@ -697,10 +683,8 @@ Index: linux-2.6.32.10/arch/x86/mach-rdc321x/reboot.c +} + +arch_initcall(rdc_setup_reset); -Index: linux-2.6.32.10/arch/x86/include/asm/rdc_boards.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.32.10/arch/x86/include/asm/rdc_boards.h 2010-04-28 11:39:32.000000000 +0200 +--- /dev/null ++++ b/arch/x86/include/asm/rdc_boards.h @@ -0,0 +1,36 @@ +/* + * RDC321x boards diff --git a/target/linux/rdc/patches-2.6.32/110-rdc321x_watchdog_fix.patch b/target/linux/rdc/patches-2.6.32/110-rdc321x_watchdog_fix.patch index ce4fd1fd90..7d59ab312c 100644 --- a/target/linux/rdc/patches-2.6.32/110-rdc321x_watchdog_fix.patch +++ b/target/linux/rdc/patches-2.6.32/110-rdc321x_watchdog_fix.patch @@ -1,7 +1,5 @@ -Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c -=================================================================== ---- linux-2.6.32.10.orig/drivers/watchdog/rdc321x_wdt.c 2010-04-28 11:39:28.000000000 +0200 -+++ linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c 2010-04-28 11:40:11.000000000 +0200 +--- a/drivers/watchdog/rdc321x_wdt.c ++++ b/drivers/watchdog/rdc321x_wdt.c @@ -36,111 +36,99 @@ #include #include @@ -164,7 +162,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c return -EBUSY; return nonseekable_open(inode, file); -@@ -148,7 +136,16 @@ +@@ -148,7 +136,16 @@ static int rdc321x_wdt_open(struct inode static int rdc321x_wdt_release(struct inode *inode, struct file *file) { @@ -182,7 +180,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c return 0; } -@@ -156,30 +153,29 @@ +@@ -156,30 +153,29 @@ static long rdc321x_wdt_ioctl(struct fil unsigned long arg) { void __user *argp = (void __user *)arg; @@ -227,7 +225,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c case WDIOC_SETOPTIONS: if (copy_from_user(&value, argp, sizeof(int))) return -EFAULT; -@@ -194,17 +190,34 @@ +@@ -194,17 +190,34 @@ static long rdc321x_wdt_ioctl(struct fil } break; default: @@ -263,7 +261,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c rdc321x_wdt_reset(); return count; -@@ -246,27 +259,18 @@ +@@ -246,27 +259,18 @@ static int __devinit rdc321x_wdt_probe(s rdc321x_wdt_device.sb_pdev = pdata->sb_pdev; rdc321x_wdt_device.base_reg = r->start; @@ -297,7 +295,7 @@ Index: linux-2.6.32.10/drivers/watchdog/rdc321x_wdt.c dev_info(&pdev->dev, "watchdog init success\n"); return 0; -@@ -274,10 +278,11 @@ +@@ -274,10 +278,11 @@ static int __devinit rdc321x_wdt_probe(s static int __devexit rdc321x_wdt_remove(struct platform_device *pdev) { diff --git a/target/linux/rdc/patches-2.6.32/120-panic_on_unrecovered_nmi.patch b/target/linux/rdc/patches-2.6.32/120-panic_on_unrecovered_nmi.patch new file mode 100644 index 0000000000..c4064aaecb --- /dev/null +++ b/target/linux/rdc/patches-2.6.32/120-panic_on_unrecovered_nmi.patch @@ -0,0 +1,11 @@ +--- a/drivers/mfd/rdc321x-southbridge.c ++++ b/drivers/mfd/rdc321x-southbridge.c +@@ -84,6 +84,8 @@ static int __devinit rdc321x_sb_probe(st + rdc321x_gpio_pdata.sb_pdev = pdev; + rdc321x_wdt_pdata.sb_pdev = pdev; + ++ panic_on_unrecovered_nmi = 1; ++ + return mfd_add_devices(&pdev->dev, -1, + rdc321x_sb_cells, ARRAY_SIZE(rdc321x_sb_cells), NULL, 0); + }