From: Greg Kroah-Hartman Date: Wed, 28 Jul 2010 22:10:46 +0000 (-0700) Subject: .33 patches X-Git-Tag: v2.6.27.49~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cf2d1b24cf9a331f72ec613d8a204f763622b5b5;p=thirdparty%2Fkernel%2Fstable-queue.git .33 patches --- diff --git a/queue-2.6.33/ahci-ata_generic-let-ata_generic-handle-new-mbp-w-mcp89.patch b/queue-2.6.33/ahci-ata_generic-let-ata_generic-handle-new-mbp-w-mcp89.patch new file mode 100644 index 00000000000..dcf051aa611 --- /dev/null +++ b/queue-2.6.33/ahci-ata_generic-let-ata_generic-handle-new-mbp-w-mcp89.patch @@ -0,0 +1,83 @@ +From c6353b4520788e34098bbf61c73fb9618ca7fdd6 Mon Sep 17 00:00:00 2001 +From: Tejun Heo +Date: Thu, 17 Jun 2010 11:42:22 +0200 +Subject: ahci,ata_generic: let ata_generic handle new MBP w/ MCP89 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Tejun Heo + +commit c6353b4520788e34098bbf61c73fb9618ca7fdd6 upstream. + +For yet unknown reason, MCP89 on MBP 7,1 doesn't work w/ ahci under +linux but the controller doesn't require explicit mode setting and +works fine with ata_generic. Make ahci ignore the controller on MBP +7,1 and let ata_generic take it for now. + +Reported in bko#15923. + + https://bugzilla.kernel.org/show_bug.cgi?id=15923 + +NVIDIA is investigating why ahci mode doesn't work. + +Signed-off-by: Tejun Heo +Cc: Peer Chen +Reported-by: Anders Østhus +Reported-by: Andreas Graf +Reported-by: Benoit Gschwind +Reported-by: Damien Cassou +Reported-by: tixetsal@juno.com +Signed-off-by: Jeff Garzik +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ata/ahci.c | 10 ++++++++++ + drivers/ata/ata_generic.c | 6 ++++++ + include/linux/pci_ids.h | 1 + + 3 files changed, 17 insertions(+) + +--- a/drivers/ata/ahci.c ++++ b/drivers/ata/ahci.c +@@ -3037,6 +3037,16 @@ static int ahci_init_one(struct pci_dev + if (pdev->vendor == PCI_VENDOR_ID_MARVELL && !marvell_enable) + return -ENODEV; + ++ /* ++ * For some reason, MCP89 on MacBook 7,1 doesn't work with ++ * ahci, use ata_generic instead. ++ */ ++ if (pdev->vendor == PCI_VENDOR_ID_NVIDIA && ++ pdev->device == PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA && ++ pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE && ++ pdev->subsystem_device == 0xcb89) ++ return -ENODEV; ++ + /* Promise's PDC42819 is a SAS/SATA controller that has an AHCI mode. + * At the moment, we can only use the AHCI mode. Let the users know + * that for SAS drives they're out of luck. +--- a/drivers/ata/ata_generic.c ++++ b/drivers/ata/ata_generic.c +@@ -168,6 +168,12 @@ static struct pci_device_id ata_generic[ + { PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C561), }, + { PCI_DEVICE(PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C558), }, + { PCI_DEVICE(PCI_VENDOR_ID_CENATEK,PCI_DEVICE_ID_CENATEK_IDE), }, ++ /* ++ * For some reason, MCP89 on MacBook 7,1 doesn't work with ++ * ahci, use ata_generic instead. ++ */ ++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA, ++ PCI_VENDOR_ID_APPLE, 0xcb89, }, + #if !defined(CONFIG_PATA_TOSHIBA) && !defined(CONFIG_PATA_TOSHIBA_MODULE) + { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1), }, + { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2), }, +--- a/include/linux/pci_ids.h ++++ b/include/linux/pci_ids.h +@@ -1262,6 +1262,7 @@ + #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759 + #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8 + #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2 ++#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA 0x0D85 + + #define PCI_VENDOR_ID_IMS 0x10e0 + #define PCI_DEVICE_ID_IMS_TT128 0x9128 diff --git a/queue-2.6.33/arm-6201-1-realview-do-not-use-outer_sync-on-arm11mpcore-boards-with-l220.patch b/queue-2.6.33/arm-6201-1-realview-do-not-use-outer_sync-on-arm11mpcore-boards-with-l220.patch new file mode 100644 index 00000000000..b28e821baab --- /dev/null +++ b/queue-2.6.33/arm-6201-1-realview-do-not-use-outer_sync-on-arm11mpcore-boards-with-l220.patch @@ -0,0 +1,54 @@ +From 2503a5ecd86c002506001eba432c524ea009fe7f Mon Sep 17 00:00:00 2001 +From: Catalin Marinas +Date: Thu, 1 Jul 2010 13:21:47 +0100 +Subject: ARM: 6201/1: RealView: Do not use outer_sync() on ARM11MPCore boards with L220 + +From: Catalin Marinas + +commit 2503a5ecd86c002506001eba432c524ea009fe7f upstream. + +RealView boards with certain revisions of the L220 cache controller (ARM11* +processors only) may have issues (hardware deadlock) with the recent changes to +the mb() barrier implementation (DSB followed by an L2 cache sync). The patch +redefines the RealView ARM11MPCore mandatory barriers without the outer_sync() +call. + +Tested-by: Linus Walleij +Signed-off-by: Catalin Marinas +Signed-off-by: Russell King +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-realview/Kconfig | 2 ++ + arch/arm/mach-realview/include/mach/barriers.h | 8 ++++++++ + 2 files changed, 10 insertions(+) + +--- a/arch/arm/mach-realview/Kconfig ++++ b/arch/arm/mach-realview/Kconfig +@@ -18,6 +18,7 @@ config REALVIEW_EB_ARM11MP + bool "Support ARM11MPCore tile" + depends on MACH_REALVIEW_EB + select CPU_V6 ++ select ARCH_HAS_BARRIERS if SMP + help + Enable support for the ARM11MPCore tile on the Realview platform. + +@@ -35,6 +36,7 @@ config MACH_REALVIEW_PB11MP + select CPU_V6 + select ARM_GIC + select HAVE_PATA_PLATFORM ++ select ARCH_HAS_BARRIERS if SMP + help + Include support for the ARM(R) RealView MPCore Platform Baseboard. + PB11MPCore is a platform with an on-board ARM11MPCore and has +--- /dev/null ++++ b/arch/arm/mach-realview/include/mach/barriers.h +@@ -0,0 +1,8 @@ ++/* ++ * Barriers redefined for RealView ARM11MPCore platforms with L220 cache ++ * controller to work around hardware errata causing the outer_sync() ++ * operation to deadlock the system. ++ */ ++#define mb() dsb() ++#define rmb() dmb() ++#define wmb() mb() diff --git a/queue-2.6.33/arm-6226-1-fix-kprobe-bug-in-ldr-instruction-emulation.patch b/queue-2.6.33/arm-6226-1-fix-kprobe-bug-in-ldr-instruction-emulation.patch new file mode 100644 index 00000000000..7a3bf882712 --- /dev/null +++ b/queue-2.6.33/arm-6226-1-fix-kprobe-bug-in-ldr-instruction-emulation.patch @@ -0,0 +1,39 @@ +From 0ebe25f90cd99bb1bcf622ec8a841421d48380d6 Mon Sep 17 00:00:00 2001 +From: Nicolas Pitre +Date: Wed, 14 Jul 2010 05:21:22 +0100 +Subject: ARM: 6226/1: fix kprobe bug in ldr instruction emulation + +From: Nicolas Pitre + +commit 0ebe25f90cd99bb1bcf622ec8a841421d48380d6 upstream. + +From: Bin Yang + +Signed-off-by: Bin Yang +Signed-off-by: Nicolas Pitre +Signed-off-by: Russell King +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/kernel/kprobes-decode.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/arch/arm/kernel/kprobes-decode.c ++++ b/arch/arm/kernel/kprobes-decode.c +@@ -583,13 +583,14 @@ static void __kprobes emulate_ldr(struct + { + insn_llret_3arg_fn_t *i_fn = (insn_llret_3arg_fn_t *)&p->ainsn.insn[0]; + kprobe_opcode_t insn = p->opcode; ++ long ppc = (long)p->addr + 8; + union reg_pair fnr; + int rd = (insn >> 12) & 0xf; + int rn = (insn >> 16) & 0xf; + int rm = insn & 0xf; + long rdv; +- long rnv = regs->uregs[rn]; +- long rmv = regs->uregs[rm]; /* rm/rmv may be invalid, don't care. */ ++ long rnv = (rn == 15) ? ppc : regs->uregs[rn]; ++ long rmv = (rm == 15) ? ppc : regs->uregs[rm]; + long cpsr = regs->ARM_cpsr; + + fnr.dr = insnslot_llret_3arg_rflags(rnv, 0, rmv, cpsr, i_fn); diff --git a/queue-2.6.33/asoc-remove-duplicate-aux-definition-from-wm8776.patch b/queue-2.6.33/asoc-remove-duplicate-aux-definition-from-wm8776.patch new file mode 100644 index 00000000000..b9a3b90996c --- /dev/null +++ b/queue-2.6.33/asoc-remove-duplicate-aux-definition-from-wm8776.patch @@ -0,0 +1,27 @@ +From 3c0709396df0869786f83e4b2d2d687c70ee886d Mon Sep 17 00:00:00 2001 +From: Mark Brown +Date: Sat, 17 Jul 2010 14:20:17 +0100 +Subject: ASoC: Remove duplicate AUX definition from WM8776 + +From: Mark Brown + +commit 3c0709396df0869786f83e4b2d2d687c70ee886d upstream. + +Signed-off-by: Mark Brown +Acked-by: Liam Girdwood +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/wm8776.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/sound/soc/codecs/wm8776.c ++++ b/sound/soc/codecs/wm8776.c +@@ -93,7 +93,6 @@ SOC_DAPM_SINGLE("Bypass Switch", WM8776_ + + static const struct snd_soc_dapm_widget wm8776_dapm_widgets[] = { + SND_SOC_DAPM_INPUT("AUX"), +-SND_SOC_DAPM_INPUT("AUX"), + + SND_SOC_DAPM_INPUT("AIN1"), + SND_SOC_DAPM_INPUT("AIN2"), diff --git a/queue-2.6.33/edac-mpc85xx-fix-mpc85xx-dependency.patch b/queue-2.6.33/edac-mpc85xx-fix-mpc85xx-dependency.patch new file mode 100644 index 00000000000..4735cad5fb2 --- /dev/null +++ b/queue-2.6.33/edac-mpc85xx-fix-mpc85xx-dependency.patch @@ -0,0 +1,39 @@ +From 1cd8521e7d77def75fdb1cb35ecd135385e4be4f Mon Sep 17 00:00:00 2001 +From: Anton Vorontsov +Date: Tue, 20 Jul 2010 13:24:27 -0700 +Subject: edac: mpc85xx: fix MPC85xx dependency + +From: Anton Vorontsov + +commit 1cd8521e7d77def75fdb1cb35ecd135385e4be4f upstream. + +Since commit 5753c082f66eca5be81f6bda85c1718c5eea6ada ("powerpc/85xx: +Kconfig cleanup"), there is no MPC85xx Kconfig symbol anymore, so the +driver became non-selectable. + +This patch fixes the issue by switching to PPC_85xx symbol. + +Signed-off-by: Anton Vorontsov +Cc: Doug Thompson +Cc: Peter Tyser +Cc: Dave Jiang +Cc: Kumar Gala +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/edac/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/edac/Kconfig ++++ b/drivers/edac/Kconfig +@@ -196,7 +196,7 @@ config EDAC_I5100 + + config EDAC_MPC85XX + tristate "Freescale MPC83xx / MPC85xx" +- depends on EDAC_MM_EDAC && FSL_SOC && (PPC_83xx || MPC85xx) ++ depends on EDAC_MM_EDAC && FSL_SOC && (PPC_83xx || PPC_85xx) + help + Support for error detection and correction on the Freescale + MPC8349, MPC8560, MPC8540, MPC8548 diff --git a/queue-2.6.33/ethtool-fix-potential-kernel-buffer-overflow-in-ethtool_grxclsrlall.patch b/queue-2.6.33/ethtool-fix-potential-kernel-buffer-overflow-in-ethtool_grxclsrlall.patch new file mode 100644 index 00000000000..78ed71971e3 --- /dev/null +++ b/queue-2.6.33/ethtool-fix-potential-kernel-buffer-overflow-in-ethtool_grxclsrlall.patch @@ -0,0 +1,36 @@ +From db048b69037e7fa6a7d9e95a1271a50dc08ae233 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Mon, 28 Jun 2010 08:44:07 +0000 +Subject: ethtool: Fix potential kernel buffer overflow in ETHTOOL_GRXCLSRLALL + +From: Ben Hutchings + +commit db048b69037e7fa6a7d9e95a1271a50dc08ae233 upstream. + +On a 32-bit machine, info.rule_cnt >= 0x40000000 leads to integer +overflow and the buffer may be smaller than needed. Since +ETHTOOL_GRXCLSRLALL is unprivileged, this can presumably be used for at +least denial of service. + +Signed-off-by: Ben Hutchings +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + net/core/ethtool.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/net/core/ethtool.c ++++ b/net/core/ethtool.c +@@ -237,8 +237,9 @@ static int ethtool_get_rxnfc(struct net_ + + if (info.cmd == ETHTOOL_GRXCLSRLALL) { + if (info.rule_cnt > 0) { +- rule_buf = kmalloc(info.rule_cnt * sizeof(u32), +- GFP_USER); ++ if (info.rule_cnt <= KMALLOC_MAX_SIZE / sizeof(u32)) ++ rule_buf = kmalloc(info.rule_cnt * sizeof(u32), ++ GFP_USER); + if (!rule_buf) + return -ENOMEM; + } diff --git a/queue-2.6.33/input-i8042-add-gigabyte-spring-peak-to-dmi_noloop_table.patch b/queue-2.6.33/input-i8042-add-gigabyte-spring-peak-to-dmi_noloop_table.patch new file mode 100644 index 00000000000..1082f347a2e --- /dev/null +++ b/queue-2.6.33/input-i8042-add-gigabyte-spring-peak-to-dmi_noloop_table.patch @@ -0,0 +1,39 @@ +From 3e1bbc8d5018a05c0793c8a32b777a1396eb4414 Mon Sep 17 00:00:00 2001 +From: Kamal Mostafa +Date: Mon, 19 Jul 2010 11:00:52 -0700 +Subject: Input: i8042 - add Gigabyte Spring Peak to dmi_noloop_table + +From: Kamal Mostafa + +commit 3e1bbc8d5018a05c0793c8a32b777a1396eb4414 upstream. + +Gigabyte "Spring Peak" notebook indicates wrong chassis-type, tripping up +i8042 and breaking the touchpad. Add this model to i8042_dmi_noloop_table[] +to resolve. + +BugLink: https://bugs.launchpad.net/bugs/580664 + +Signed-off-by: Kamal Mostafa +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/serio/i8042-x86ia64io.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/input/serio/i8042-x86ia64io.h ++++ b/drivers/input/serio/i8042-x86ia64io.h +@@ -166,6 +166,13 @@ static const struct dmi_system_id __init + }, + }, + { ++ /* Gigabyte Spring Peak - defines wrong chassis type */ ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Spring Peak"), ++ }, ++ }, ++ { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv9700"), diff --git a/queue-2.6.33/input-twl40300-keypad-fix-handling-of-all-ground-rows.patch b/queue-2.6.33/input-twl40300-keypad-fix-handling-of-all-ground-rows.patch new file mode 100644 index 00000000000..bac15793d11 --- /dev/null +++ b/queue-2.6.33/input-twl40300-keypad-fix-handling-of-all-ground-rows.patch @@ -0,0 +1,151 @@ +From 3fea60261e73dbf4a51130d40cafcc8465b0f2c3 Mon Sep 17 00:00:00 2001 +From: Dmitry Torokhov +Date: Tue, 20 Jul 2010 20:25:35 -0700 +Subject: Input: twl40300-keypad - fix handling of "all ground" rows + +From: Dmitry Torokhov + +commit 3fea60261e73dbf4a51130d40cafcc8465b0f2c3 upstream. + +The Nokia RX51 board code (arch/arm/mach-omap2/board-rx51-peripherals.c) +defines a key map for the matrix keypad keyboard. The hardware seems to +use all of the 8 rows and 8 columns of the keypad, although not all +possible locations are used. + +The TWL4030 supports keypads with at most 8 rows and 8 columns. Most keys +are defined with a row and column number between 0 and 7, except + + KEY(0xff, 2, KEY_F9), + KEY(0xff, 4, KEY_F10), + KEY(0xff, 5, KEY_F11), + +which represent keycodes that should be emitted when entire row is +connected to the ground. since the driver handles this case as if we +had an extra column in the key matrix. Unfortunately we do not allocate +enough space and end up owerwriting some random memory. + +Reported-and-tested-by: Laurent Pinchart +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-omap2/board-rx51-peripherals.c | 17 ++++++++++++++--- + drivers/input/keyboard/twl4030_keypad.c | 17 +++++++++++------ + 2 files changed, 25 insertions(+), 9 deletions(-) + +--- a/arch/arm/mach-omap2/board-rx51-peripherals.c ++++ b/arch/arm/mach-omap2/board-rx51-peripherals.c +@@ -147,6 +147,10 @@ static void __init rx51_add_gpio_keys(vo + #endif /* CONFIG_KEYBOARD_GPIO || CONFIG_KEYBOARD_GPIO_MODULE */ + + static int board_keymap[] = { ++ /* ++ * Note that KEY(x, 8, KEY_XXX) entries represent "entrire row ++ * connected to the ground" matrix state. ++ */ + KEY(0, 0, KEY_Q), + KEY(0, 1, KEY_O), + KEY(0, 2, KEY_P), +@@ -154,6 +158,7 @@ static int board_keymap[] = { + KEY(0, 4, KEY_BACKSPACE), + KEY(0, 6, KEY_A), + KEY(0, 7, KEY_S), ++ + KEY(1, 0, KEY_W), + KEY(1, 1, KEY_D), + KEY(1, 2, KEY_F), +@@ -162,6 +167,7 @@ static int board_keymap[] = { + KEY(1, 5, KEY_J), + KEY(1, 6, KEY_K), + KEY(1, 7, KEY_L), ++ + KEY(2, 0, KEY_E), + KEY(2, 1, KEY_DOT), + KEY(2, 2, KEY_UP), +@@ -169,6 +175,8 @@ static int board_keymap[] = { + KEY(2, 5, KEY_Z), + KEY(2, 6, KEY_X), + KEY(2, 7, KEY_C), ++ KEY(2, 8, KEY_F9), ++ + KEY(3, 0, KEY_R), + KEY(3, 1, KEY_V), + KEY(3, 2, KEY_B), +@@ -177,20 +185,23 @@ static int board_keymap[] = { + KEY(3, 5, KEY_SPACE), + KEY(3, 6, KEY_SPACE), + KEY(3, 7, KEY_LEFT), ++ + KEY(4, 0, KEY_T), + KEY(4, 1, KEY_DOWN), + KEY(4, 2, KEY_RIGHT), + KEY(4, 4, KEY_LEFTCTRL), + KEY(4, 5, KEY_RIGHTALT), + KEY(4, 6, KEY_LEFTSHIFT), ++ KEY(4, 8, KEY_10), ++ + KEY(5, 0, KEY_Y), ++ KEY(5, 8, KEY_11), ++ + KEY(6, 0, KEY_U), ++ + KEY(7, 0, KEY_I), + KEY(7, 1, KEY_F7), + KEY(7, 2, KEY_F8), +- KEY(0xff, 2, KEY_F9), +- KEY(0xff, 4, KEY_F10), +- KEY(0xff, 5, KEY_F11), + }; + + static struct matrix_keymap_data board_map_data = { +--- a/drivers/input/keyboard/twl4030_keypad.c ++++ b/drivers/input/keyboard/twl4030_keypad.c +@@ -50,8 +50,12 @@ + */ + #define TWL4030_MAX_ROWS 8 /* TWL4030 hard limit */ + #define TWL4030_MAX_COLS 8 +-#define TWL4030_ROW_SHIFT 3 +-#define TWL4030_KEYMAP_SIZE (TWL4030_MAX_ROWS * TWL4030_MAX_COLS) ++/* ++ * Note that we add space for an extra column so that we can handle ++ * row lines connected to the gnd (see twl4030_col_xlate()). ++ */ ++#define TWL4030_ROW_SHIFT 4 ++#define TWL4030_KEYMAP_SIZE (TWL4030_MAX_ROWS << TWL4030_ROW_SHIFT) + + struct twl4030_keypad { + unsigned short keymap[TWL4030_KEYMAP_SIZE]; +@@ -181,7 +185,7 @@ static int twl4030_read_kp_matrix_state( + return ret; + } + +-static int twl4030_is_in_ghost_state(struct twl4030_keypad *kp, u16 *key_state) ++static bool twl4030_is_in_ghost_state(struct twl4030_keypad *kp, u16 *key_state) + { + int i; + u16 check = 0; +@@ -190,12 +194,12 @@ static int twl4030_is_in_ghost_state(str + u16 col = key_state[i]; + + if ((col & check) && hweight16(col) > 1) +- return 1; ++ return true; + + check |= col; + } + +- return 0; ++ return false; + } + + static void twl4030_kp_scan(struct twl4030_keypad *kp, bool release_all) +@@ -224,7 +228,8 @@ static void twl4030_kp_scan(struct twl40 + if (!changed) + continue; + +- for (col = 0; col < kp->n_cols; col++) { ++ /* Extra column handles "all gnd" rows */ ++ for (col = 0; col < kp->n_cols + 1; col++) { + int code; + + if (!(changed & (1 << col))) diff --git a/queue-2.6.33/ipoib-fix-world-writable-child-interface-control-sysfs-attributes.patch b/queue-2.6.33/ipoib-fix-world-writable-child-interface-control-sysfs-attributes.patch new file mode 100644 index 00000000000..210217c720b --- /dev/null +++ b/queue-2.6.33/ipoib-fix-world-writable-child-interface-control-sysfs-attributes.patch @@ -0,0 +1,42 @@ +From 7a52b34b07122ff5f45258d47f260f8a525518f0 Mon Sep 17 00:00:00 2001 +From: Or Gerlitz +Date: Sun, 6 Jun 2010 04:59:16 +0000 +Subject: IPoIB: Fix world-writable child interface control sysfs attributes + +From: Or Gerlitz + +commit 7a52b34b07122ff5f45258d47f260f8a525518f0 upstream. + +Sumeet Lahorani reported that the IPoIB +child entries are world-writable; however we don't want ordinary users +to be able to create and destroy child interfaces, so fix them to be +writable only by root. + +Signed-off-by: Or Gerlitz +Signed-off-by: Roland Dreier +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c ++++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c +@@ -1163,7 +1163,7 @@ static ssize_t create_child(struct devic + + return ret ? ret : count; + } +-static DEVICE_ATTR(create_child, S_IWUGO, NULL, create_child); ++static DEVICE_ATTR(create_child, S_IWUSR, NULL, create_child); + + static ssize_t delete_child(struct device *dev, + struct device_attribute *attr, +@@ -1183,7 +1183,7 @@ static ssize_t delete_child(struct devic + return ret ? ret : count; + + } +-static DEVICE_ATTR(delete_child, S_IWUGO, NULL, delete_child); ++static DEVICE_ATTR(delete_child, S_IWUSR, NULL, delete_child); + + int ipoib_add_pkey_attr(struct net_device *dev) + { diff --git a/queue-2.6.33/powerpc-cpm-reintroduce-global-spi_pram-struct-fixes-build-issue.patch b/queue-2.6.33/powerpc-cpm-reintroduce-global-spi_pram-struct-fixes-build-issue.patch new file mode 100644 index 00000000000..3b576cadb32 --- /dev/null +++ b/queue-2.6.33/powerpc-cpm-reintroduce-global-spi_pram-struct-fixes-build-issue.patch @@ -0,0 +1,130 @@ +From 56825c88ff438f4dbb51a44591cc29e707fe783a Mon Sep 17 00:00:00 2001 +From: Anton Vorontsov +Date: Thu, 8 Jul 2010 21:16:10 +0400 +Subject: powerpc/cpm: Reintroduce global spi_pram struct (fixes build issue) + +From: Anton Vorontsov + +commit 56825c88ff438f4dbb51a44591cc29e707fe783a upstream. + +spi_t was removed in commit 644b2a680ccc51a9ec4d6beb12e9d47d2dee98e2 +("powerpc/cpm: Remove SPI defines and spi structs"), the commit assumed +that spi_t isn't used anywhere outside of the spi_mpc8xxx driver. But +it appears that the struct is needed for micropatch code. So, let's +reintroduce the struct. + +Fixes the following build issue: + + CC arch/powerpc/sysdev/micropatch.o + micropatch.c: In function 'cpm_load_patch': + micropatch.c:629: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token + micropatch.c:629: error: 'spp' undeclared (first use in this function) + micropatch.c:629: error: (Each undeclared identifier is reported only once + micropatch.c:629: error: for each function it appears in.) + +Reported-by: LEROY Christophe +Reported-by: Tony Breeds +Signed-off-by: Anton Vorontsov +Signed-off-by: Kumar Gala +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/include/asm/cpm.h | 24 ++++++++++++++++++++++++ + arch/powerpc/sysdev/micropatch.c | 7 ++++--- + drivers/spi/spi_mpc8xxx.c | 22 ---------------------- + 3 files changed, 28 insertions(+), 25 deletions(-) + +--- a/arch/powerpc/include/asm/cpm.h ++++ b/arch/powerpc/include/asm/cpm.h +@@ -7,6 +7,30 @@ + #include + + /* ++ * SPI Parameter RAM common to QE and CPM. ++ */ ++struct spi_pram { ++ __be16 rbase; /* Rx Buffer descriptor base address */ ++ __be16 tbase; /* Tx Buffer descriptor base address */ ++ u8 rfcr; /* Rx function code */ ++ u8 tfcr; /* Tx function code */ ++ __be16 mrblr; /* Max receive buffer length */ ++ __be32 rstate; /* Internal */ ++ __be32 rdp; /* Internal */ ++ __be16 rbptr; /* Internal */ ++ __be16 rbc; /* Internal */ ++ __be32 rxtmp; /* Internal */ ++ __be32 tstate; /* Internal */ ++ __be32 tdp; /* Internal */ ++ __be16 tbptr; /* Internal */ ++ __be16 tbc; /* Internal */ ++ __be32 txtmp; /* Internal */ ++ __be32 res; /* Tx temp. */ ++ __be16 rpbase; /* Relocation pointer (CPM1 only) */ ++ __be16 res1; /* Reserved */ ++}; ++ ++/* + * USB Controller pram common to QE and CPM. + */ + struct usb_ctlr { +--- a/arch/powerpc/sysdev/micropatch.c ++++ b/arch/powerpc/sysdev/micropatch.c +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include + + /* +@@ -626,7 +627,7 @@ cpm_load_patch(cpm8xx_t *cp) + volatile uint *dp; /* Dual-ported RAM. */ + volatile cpm8xx_t *commproc; + volatile iic_t *iip; +- volatile spi_t *spp; ++ volatile struct spi_pram *spp; + volatile smc_uart_t *smp; + int i; + +@@ -668,8 +669,8 @@ cpm_load_patch(cpm8xx_t *cp) + /* Put SPI above the IIC, also 32-byte aligned. + */ + i = (RPBASE + sizeof(iic_t) + 31) & ~31; +- spp = (spi_t *)&commproc->cp_dparam[PROFF_SPI]; +- spp->spi_rpbase = i; ++ spp = (struct spi_pram *)&commproc->cp_dparam[PROFF_SPI]; ++ spp->rpbase = i; + + # if defined(CONFIG_I2C_SPI_UCODE_PATCH) + commproc->cp_cpmcr1 = 0x802a; +--- a/drivers/spi/spi_mpc8xxx.c ++++ b/drivers/spi/spi_mpc8xxx.c +@@ -65,28 +65,6 @@ struct mpc8xxx_spi_reg { + __be32 receive; + }; + +-/* SPI Parameter RAM */ +-struct spi_pram { +- __be16 rbase; /* Rx Buffer descriptor base address */ +- __be16 tbase; /* Tx Buffer descriptor base address */ +- u8 rfcr; /* Rx function code */ +- u8 tfcr; /* Tx function code */ +- __be16 mrblr; /* Max receive buffer length */ +- __be32 rstate; /* Internal */ +- __be32 rdp; /* Internal */ +- __be16 rbptr; /* Internal */ +- __be16 rbc; /* Internal */ +- __be32 rxtmp; /* Internal */ +- __be32 tstate; /* Internal */ +- __be32 tdp; /* Internal */ +- __be16 tbptr; /* Internal */ +- __be16 tbc; /* Internal */ +- __be32 txtmp; /* Internal */ +- __be32 res; /* Tx temp. */ +- __be16 rpbase; /* Relocation pointer (CPM1 only) */ +- __be16 res1; /* Reserved */ +-}; +- + /* SPI Controller mode register definitions */ + #define SPMODE_LOOP (1 << 30) + #define SPMODE_CI_INACTIVEHIGH (1 << 29) diff --git a/queue-2.6.33/powerpc-cpm1-fix-build-with-various-config_-_ucode_patch-combinations.patch b/queue-2.6.33/powerpc-cpm1-fix-build-with-various-config_-_ucode_patch-combinations.patch new file mode 100644 index 00000000000..659009aa9fa --- /dev/null +++ b/queue-2.6.33/powerpc-cpm1-fix-build-with-various-config_-_ucode_patch-combinations.patch @@ -0,0 +1,54 @@ +From 2069a6ae19a34d96cc9cb284eb645b165138e03f Mon Sep 17 00:00:00 2001 +From: Anton Vorontsov +Date: Thu, 8 Jul 2010 21:16:14 +0400 +Subject: powerpc/cpm1: Fix build with various CONFIG_*_UCODE_PATCH combinations + +From: Anton Vorontsov + +commit 2069a6ae19a34d96cc9cb284eb645b165138e03f upstream. + +Warnings are treated as errors for arch/powerpc code, so build fails +with CONFIG_I2C_SPI_UCODE_PATCH=y: + + CC arch/powerpc/sysdev/micropatch.o + cc1: warnings being treated as errors + arch/powerpc/sysdev/micropatch.c: In function 'cpm_load_patch': + arch/powerpc/sysdev/micropatch.c:630: warning: unused variable 'smp' + make[1]: *** [arch/powerpc/sysdev/micropatch.o] Error 1 + +And with CONFIG_USB_SOF_UCODE_PATCH=y: + + CC arch/powerpc/sysdev/micropatch.o + cc1: warnings being treated as errors + arch/powerpc/sysdev/micropatch.c: In function 'cpm_load_patch': + arch/powerpc/sysdev/micropatch.c:629: warning: unused variable 'spp' + arch/powerpc/sysdev/micropatch.c:628: warning: unused variable 'iip' + make[1]: *** [arch/powerpc/sysdev/micropatch.o] Error 1 + +This patch fixes these issues by introducing proper #ifdefs. + +Signed-off-by: Anton Vorontsov +Signed-off-by: Kumar Gala +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/sysdev/micropatch.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/arch/powerpc/sysdev/micropatch.c ++++ b/arch/powerpc/sysdev/micropatch.c +@@ -626,9 +626,14 @@ cpm_load_patch(cpm8xx_t *cp) + { + volatile uint *dp; /* Dual-ported RAM. */ + volatile cpm8xx_t *commproc; ++#if defined(CONFIG_I2C_SPI_UCODE_PATCH) || \ ++ defined(CONFIG_I2C_SPI_SMC1_UCODE_PATCH) + volatile iic_t *iip; + volatile struct spi_pram *spp; ++#ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH + volatile smc_uart_t *smp; ++#endif ++#endif + int i; + + commproc = cp; diff --git a/queue-2.6.33/powerpc-fix-logic-error-in-fixup_irqs.patch b/queue-2.6.33/powerpc-fix-logic-error-in-fixup_irqs.patch new file mode 100644 index 00000000000..f02598fa219 --- /dev/null +++ b/queue-2.6.33/powerpc-fix-logic-error-in-fixup_irqs.patch @@ -0,0 +1,39 @@ +From 3cd8519248e9e17d982c6fab0f1a89bca6feb49a Mon Sep 17 00:00:00 2001 +From: Johannes Berg +Date: Wed, 16 Jun 2010 00:09:35 +0000 +Subject: powerpc: Fix logic error in fixup_irqs + +From: Johannes Berg + +commit 3cd8519248e9e17d982c6fab0f1a89bca6feb49a upstream. + +When SPARSE_IRQ is set, irq_to_desc() can +return NULL. While the code here has a +check for NULL, it's not really correct. +Fix it by separating the check for it. + +This fixes CPU hot unplug for me. + +Reported-by: Alastair Bridgewater +Signed-off-by: Johannes Berg +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/kernel/irq.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/arch/powerpc/kernel/irq.c ++++ b/arch/powerpc/kernel/irq.c +@@ -247,7 +247,10 @@ void fixup_irqs(cpumask_t map) + cpumask_t mask; + + desc = irq_to_desc(irq); +- if (desc && desc->status & IRQ_PER_CPU) ++ if (!desc) ++ continue; ++ ++ if (desc->status & IRQ_PER_CPU) + continue; + + cpumask_and(&mask, desc->affinity, &map); diff --git a/queue-2.6.33/rtc-fix-ds1388-time-corruption.patch b/queue-2.6.33/rtc-fix-ds1388-time-corruption.patch new file mode 100644 index 00000000000..e60cd129146 --- /dev/null +++ b/queue-2.6.33/rtc-fix-ds1388-time-corruption.patch @@ -0,0 +1,48 @@ +From 96fc3a45ea073136566f3c2676cad52f8b39a7df Mon Sep 17 00:00:00 2001 +From: Joakim Tjernlund +Date: Tue, 29 Jun 2010 15:05:34 -0700 +Subject: rtc: fix ds1388 time corruption + +From: Joakim Tjernlund + +commit 96fc3a45ea073136566f3c2676cad52f8b39a7df upstream. + +The ds1307 driver misreads the ds1388 registers when checking for 12 or 24 +hour mode. Instead of checking the hour register it reads the minute +register. Therefore the driver thinks minutes >= 40 has the 12HR bit set +and resets the minute register by zeroing the high bits. This results in +minutes are reset to 0-9, jumping back in time 40 or 50 minutes. The time +jump is also written back to the RTC. + +Signed-off-by: Joakim Tjernlund +Cc: Wan ZongShun +Cc: Alessandro Zummo +Cc: Paul Gortmaker +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/rtc/rtc-ds1307.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/rtc/rtc-ds1307.c ++++ b/drivers/rtc/rtc-ds1307.c +@@ -775,7 +775,7 @@ static int __devinit ds1307_probe(struct + + read_rtc: + /* read RTC registers */ +- tmp = ds1307->read_block_data(ds1307->client, 0, 8, buf); ++ tmp = ds1307->read_block_data(ds1307->client, ds1307->offset, 8, buf); + if (tmp != 8) { + pr_debug("read error %d\n", tmp); + err = -EIO; +@@ -860,7 +860,7 @@ read_rtc: + if (ds1307->regs[DS1307_REG_HOUR] & DS1307_BIT_PM) + tmp += 12; + i2c_smbus_write_byte_data(client, +- DS1307_REG_HOUR, ++ ds1307->offset + DS1307_REG_HOUR, + bin2bcd(tmp)); + } + diff --git a/queue-2.6.33/sdhci-s3c-add-missing-remove-function.patch b/queue-2.6.33/sdhci-s3c-add-missing-remove-function.patch new file mode 100644 index 00000000000..81221ffcbf6 --- /dev/null +++ b/queue-2.6.33/sdhci-s3c-add-missing-remove-function.patch @@ -0,0 +1,52 @@ +From 9d51a6b2487724e8713cd2794cf09ffeee5f6932 Mon Sep 17 00:00:00 2001 +From: Marek Szyprowski +Date: Tue, 20 Jul 2010 13:24:33 -0700 +Subject: sdhci-s3c: add missing remove function + +From: Marek Szyprowski + +commit 9d51a6b2487724e8713cd2794cf09ffeee5f6932 upstream. + +System will crash sooner or later once the memory with the code of the +s3c-sdhci.ko module is reused for something else. I really have no idea +how the lack of remove function went unnoticed into the mainline code. + +Signed-off-by: Marek Szyprowski +Signed-off-by: Kyungmin Park +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mmc/host/sdhci-s3c.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +--- a/drivers/mmc/host/sdhci-s3c.c ++++ b/drivers/mmc/host/sdhci-s3c.c +@@ -372,6 +372,26 @@ static int __devinit sdhci_s3c_probe(str + + static int __devexit sdhci_s3c_remove(struct platform_device *pdev) + { ++ struct sdhci_host *host = platform_get_drvdata(pdev); ++ struct sdhci_s3c *sc = sdhci_priv(host); ++ int ptr; ++ ++ sdhci_remove_host(host, 1); ++ ++ for (ptr = 0; ptr < 3; ptr++) { ++ clk_disable(sc->clk_bus[ptr]); ++ clk_put(sc->clk_bus[ptr]); ++ } ++ clk_disable(sc->clk_io); ++ clk_put(sc->clk_io); ++ ++ iounmap(host->ioaddr); ++ release_resource(sc->ioarea); ++ kfree(sc->ioarea); ++ ++ sdhci_free_host(host); ++ platform_set_drvdata(pdev, NULL); ++ + return 0; + } + diff --git a/queue-2.6.33/series b/queue-2.6.33/series index 152f1d4054e..9556862bca1 100644 --- a/queue-2.6.33/series +++ b/queue-2.6.33/series @@ -76,3 +76,19 @@ sched-fix-over-scheduling-bug.patch genirq-deal-with-desc-set_type-changing-desc-chip.patch cfq-don-t-allow-queue-merges-for-queues-that-have-no-process-references.patch serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch +rtc-fix-ds1388-time-corruption.patch +ahci-ata_generic-let-ata_generic-handle-new-mbp-w-mcp89.patch +ethtool-fix-potential-kernel-buffer-overflow-in-ethtool_grxclsrlall.patch +powerpc-fix-logic-error-in-fixup_irqs.patch +powerpc-cpm-reintroduce-global-spi_pram-struct-fixes-build-issue.patch +powerpc-cpm1-fix-build-with-various-config_-_ucode_patch-combinations.patch +sdhci-s3c-add-missing-remove-function.patch +edac-mpc85xx-fix-mpc85xx-dependency.patch +asoc-remove-duplicate-aux-definition-from-wm8776.patch +x86-fix-x2apic-preenabled-system-with-kexec.patch +ipoib-fix-world-writable-child-interface-control-sysfs-attributes.patch +input-i8042-add-gigabyte-spring-peak-to-dmi_noloop_table.patch +input-twl40300-keypad-fix-handling-of-all-ground-rows.patch +arm-6201-1-realview-do-not-use-outer_sync-on-arm11mpcore-boards-with-l220.patch +arm-6226-1-fix-kprobe-bug-in-ldr-instruction-emulation.patch +x86-do-not-try-to-disable-hpet-if-it-hasn-t-been-initialized-before.patch diff --git a/queue-2.6.33/x86-do-not-try-to-disable-hpet-if-it-hasn-t-been-initialized-before.patch b/queue-2.6.33/x86-do-not-try-to-disable-hpet-if-it-hasn-t-been-initialized-before.patch new file mode 100644 index 00000000000..9ed2da2b5f2 --- /dev/null +++ b/queue-2.6.33/x86-do-not-try-to-disable-hpet-if-it-hasn-t-been-initialized-before.patch @@ -0,0 +1,37 @@ +From ff4878089e1eaeac79d57878ad4ea32910fb4037 Mon Sep 17 00:00:00 2001 +From: Stefano Stabellini +Date: Wed, 21 Jul 2010 18:32:37 +0100 +Subject: x86: Do not try to disable hpet if it hasn't been initialized before + +From: Stefano Stabellini + +commit ff4878089e1eaeac79d57878ad4ea32910fb4037 upstream. + +hpet_disable is called unconditionally on machine reboot if hpet support +is compiled in the kernel. +hpet_disable only checks if the machine is hpet capable but doesn't make +sure that hpet has been initialized. + +[ tglx: Made it a one liner and removed the redundant hpet_address check ] + +Signed-off-by: Stefano Stabellini +Acked-by: Venkatesh Pallipadi +LKML-Reference: +Signed-off-by: Thomas Gleixner +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/hpet.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/hpet.c ++++ b/arch/x86/kernel/hpet.c +@@ -958,7 +958,7 @@ fs_initcall(hpet_late_init); + + void hpet_disable(void) + { +- if (is_hpet_capable()) { ++ if (is_hpet_capable() && hpet_virt_address) { + unsigned int cfg = hpet_readl(HPET_CFG); + + if (hpet_legacy_int_enabled) { diff --git a/queue-2.6.33/x86-fix-x2apic-preenabled-system-with-kexec.patch b/queue-2.6.33/x86-fix-x2apic-preenabled-system-with-kexec.patch new file mode 100644 index 00000000000..f65f24248c5 --- /dev/null +++ b/queue-2.6.33/x86-fix-x2apic-preenabled-system-with-kexec.patch @@ -0,0 +1,53 @@ +From fd19dce7ac07973f700b0f13fb7f94b951414a4c Mon Sep 17 00:00:00 2001 +From: Yinghai Lu +Date: Thu, 15 Jul 2010 00:00:59 -0700 +Subject: x86: Fix x2apic preenabled system with kexec + +From: Yinghai Lu + +commit fd19dce7ac07973f700b0f13fb7f94b951414a4c upstream. + +Found one x2apic system kexec loop test failed +when CONFIG_NMI_WATCHDOG=y (old) or CONFIG_LOCKUP_DETECTOR=y (current tip) + +first kernel can kexec second kernel, but second kernel can not kexec third one. + +it can be duplicated on another system with BIOS preenabled x2apic. +First kernel can not kexec second kernel. + +It turns out, when kernel boot with pre-enabled x2apic, it will not execute +disable_local_APIC on shutdown path. + +when init_apic_mappings() is called in setup_arch, it will skip setting of +apic_phys when x2apic_mode is set. ( x2apic_mode is much early check_x2apic()) +Then later, disable_local_APIC() will bail out early because !apic_phys. + +So check !x2apic_mode in x2apic_mode in disable_local_APIC with !apic_phys. + +another solution could be updating init_apic_mappings() to set apic_phys even +for preenabled x2apic system. Actually even for x2apic system, that lapic +address is mapped already in early stage. + +BTW: is there any x2apic preenabled system with apicid of boot cpu > 255? + +Signed-off-by: Yinghai Lu +LKML-Reference: <4C3EB22B.3000701@kernel.org> +Acked-by: Suresh Siddha +Signed-off-by: H. Peter Anvin +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/apic/apic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/apic/apic.c ++++ b/arch/x86/kernel/apic/apic.c +@@ -920,7 +920,7 @@ void disable_local_APIC(void) + unsigned int value; + + /* APIC hasn't been mapped yet */ +- if (!apic_phys) ++ if (!x2apic_mode && !apic_phys) + return; + + clear_local_APIC();