From 14fd2f20f811c4cf72abc6988efef62568dfade2 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Wed, 28 Apr 2010 13:55:11 +0000 Subject: panic on unrecovered NMI, thanks rtz2 SVN-Revision: 21232 --- .../001-rdc321x_mfd_southbridge.patch | 28 +++++-------- .../rdc/patches-2.6.32/002-rdc321x_gpio.patch | 22 ++++------ .../003-rdc321x_watchdog_southbridge.patch | 20 ++++----- .../patches-2.6.32/004-rdc321x_defs_remove.patch | 6 --- .../patches-2.6.32/012-export_erase_write.patch | 16 +++----- .../linux/rdc/patches-2.6.32/100-rdc_boards.patch | 48 ++++++++-------------- .../patches-2.6.32/110-rdc321x_watchdog_fix.patch | 16 ++++---- .../120-panic_on_unrecovered_nmi.patch | 11 +++++ 8 files changed, 67 insertions(+), 100 deletions(-) create mode 100644 target/linux/rdc/patches-2.6.32/120-panic_on_unrecovered_nmi.patch (limited to 'target/linux/rdc/patches-2.6.32') 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); + } -- cgit v1.2.3