From 8e851c7fe567fd58914c692a340bb79e3d59e909 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 29 Apr 2013 11:15:54 -0700 Subject: [PATCH] 3.8-stable patches added patches: arm-7692-1-iop3xx-move-iop3xx_peripheral_virt_base.patch arm-7699-1-sched_clock-add-more-notrace-to-prevent-recursion.patch --- ...3xx-move-iop3xx_peripheral_virt_base.patch | 72 +++++++++++++++++++ ...dd-more-notrace-to-prevent-recursion.patch | 46 ++++++++++++ queue-3.8/series | 2 + 3 files changed, 120 insertions(+) create mode 100644 queue-3.8/arm-7692-1-iop3xx-move-iop3xx_peripheral_virt_base.patch create mode 100644 queue-3.8/arm-7699-1-sched_clock-add-more-notrace-to-prevent-recursion.patch diff --git a/queue-3.8/arm-7692-1-iop3xx-move-iop3xx_peripheral_virt_base.patch b/queue-3.8/arm-7692-1-iop3xx-move-iop3xx_peripheral_virt_base.patch new file mode 100644 index 00000000000..631686daad5 --- /dev/null +++ b/queue-3.8/arm-7692-1-iop3xx-move-iop3xx_peripheral_virt_base.patch @@ -0,0 +1,72 @@ +From f5d6a1441a5045824f36ff7c6b6bbae0373472a6 Mon Sep 17 00:00:00 2001 +From: Aaro Koskinen +Date: Wed, 3 Apr 2013 22:28:41 +0100 +Subject: ARM: 7692/1: iop3xx: move IOP3XX_PERIPHERAL_VIRT_BASE + +From: Aaro Koskinen + +commit f5d6a1441a5045824f36ff7c6b6bbae0373472a6 upstream. + +Currently IOP3XX_PERIPHERAL_VIRT_BASE conflicts with PCI_IO_VIRT_BASE: + + address size + PCI_IO_VIRT_BASE 0xfee00000 0x200000 + IOP3XX_PERIPHERAL_VIRT_BASE 0xfeffe000 0x2000 + +Fix by moving IOP3XX_PERIPHERAL_VIRT_BASE below PCI_IO_VIRT_BASE. + +The patch fixes the following kernel panic with 3.9-rc1 on iop3xx boards: + +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Linux version 3.9.0-rc1-iop32x (aaro@blackmetal) (gcc version 4.7.2 (GCC) ) #20 PREEMPT Tue Mar 5 16:44:36 EET 2013 +[ 0.000000] bootconsole [earlycon0] enabled +[ 0.000000] ------------[ cut here ]------------ +[ 0.000000] kernel BUG at mm/vmalloc.c:1145! +[ 0.000000] Internal error: Oops - BUG: 0 [#1] PREEMPT ARM +[ 0.000000] Modules linked in: +[ 0.000000] CPU: 0 Not tainted (3.9.0-rc1-iop32x #20) +[ 0.000000] PC is at vm_area_add_early+0x4c/0x88 +[ 0.000000] LR is at add_static_vm_early+0x14/0x68 +[ 0.000000] pc : [] lr : [] psr: 800000d3 +[ 0.000000] sp : c03ffee4 ip : dfffdf88 fp : c03ffef4 +[ 0.000000] r10: 00000002 r9 : 000000cf r8 : 00000653 +[ 0.000000] r7 : c040eca8 r6 : c03e2408 r5 : dfffdf60 r4 : 00200000 +[ 0.000000] r3 : dfffdfd8 r2 : feffe000 r1 : ff000000 r0 : dfffdf60 +[ 0.000000] Flags: Nzcv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel +[ 0.000000] Control: 0000397f Table: a0004000 DAC: 00000017 +[ 0.000000] Process swapper (pid: 0, stack limit = 0xc03fe1b8) +[ 0.000000] Stack: (0xc03ffee4 to 0xc0400000) +[ 0.000000] fee0: 00200000 c03fff0c c03ffef8 c03e1c40 c03e7468 00200000 fee00000 +[ 0.000000] ff00: c03fff2c c03fff10 c03e23e4 c03e1c38 feffe000 c0408ee4 ff000000 c0408f04 +[ 0.000000] ff20: c03fff3c c03fff30 c03e2434 c03e23b4 c03fff84 c03fff40 c03e2c94 c03e2414 +[ 0.000000] ff40: c03f8878 c03f6410 ffff0000 000bffff 00001000 00000008 c03fff84 c03f6410 +[ 0.000000] ff60: c04227e8 c03fffd4 a0008000 c03f8878 69052e30 c02f96eb c03fffbc c03fff88 +[ 0.000000] ff80: c03e044c c03e268c 00000000 0000397f c0385130 00000001 ffffffff c03f8874 +[ 0.000000] ffa0: dfffffff a0004000 69052e30 a03f61a0 c03ffff4 c03fffc0 c03dd5cc c03e0184 +[ 0.000000] ffc0: 00000000 00000000 00000000 00000000 00000000 c03f8878 0000397d c040601c +[ 0.000000] ffe0: c03f8874 c0408674 00000000 c03ffff8 a0008040 c03dd558 00000000 00000000 +[ 0.000000] Backtrace: +[ 0.000000] [] (vm_area_add_early+0x0/0x88) from [] (add_static_vm_early+0x14/0x68) + +Tested-by: Mikael Pettersson +Signed-off-by: Aaro Koskinen +Signed-off-by: Russell King +Signed-off-by: Jonghwan Choi +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/include/asm/hardware/iop3xx.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm/include/asm/hardware/iop3xx.h ++++ b/arch/arm/include/asm/hardware/iop3xx.h +@@ -37,7 +37,7 @@ extern int iop3xx_get_init_atu(void); + * IOP3XX processor registers + */ + #define IOP3XX_PERIPHERAL_PHYS_BASE 0xffffe000 +-#define IOP3XX_PERIPHERAL_VIRT_BASE 0xfeffe000 ++#define IOP3XX_PERIPHERAL_VIRT_BASE 0xfedfe000 + #define IOP3XX_PERIPHERAL_SIZE 0x00002000 + #define IOP3XX_PERIPHERAL_UPPER_PA (IOP3XX_PERIPHERAL_PHYS_BASE +\ + IOP3XX_PERIPHERAL_SIZE - 1) diff --git a/queue-3.8/arm-7699-1-sched_clock-add-more-notrace-to-prevent-recursion.patch b/queue-3.8/arm-7699-1-sched_clock-add-more-notrace-to-prevent-recursion.patch new file mode 100644 index 00000000000..e282093dc20 --- /dev/null +++ b/queue-3.8/arm-7699-1-sched_clock-add-more-notrace-to-prevent-recursion.patch @@ -0,0 +1,46 @@ +From cea15092f098b7018e89f64a5a14bb71955965d5 Mon Sep 17 00:00:00 2001 +From: Stephen Boyd +Date: Thu, 18 Apr 2013 17:33:40 +0100 +Subject: ARM: 7699/1: sched_clock: Add more notrace to prevent recursion + +From: Stephen Boyd + +commit cea15092f098b7018e89f64a5a14bb71955965d5 upstream. + +cyc_to_sched_clock() is called by sched_clock() and cyc_to_ns() +is called by cyc_to_sched_clock(). I suspect that some compilers +inline both of these functions into sched_clock() and so we've +been getting away without having a notrace marking. It seems that +my compiler isn't inlining cyc_to_sched_clock() though, so I'm +hitting a recursion bug when I enable the function graph tracer, +causing my system to crash. Marking these functions notrace fixes +it. Technically cyc_to_ns() doesn't need the notrace because it's +already marked inline, but let's just add it so that if we ever +remove inline from that function it doesn't blow up. + +Signed-off-by: Stephen Boyd +Signed-off-by: Russell King +Signed-off-by: Jonghwan Choi +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/kernel/sched_clock.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/arm/kernel/sched_clock.c ++++ b/arch/arm/kernel/sched_clock.c +@@ -45,12 +45,12 @@ static u32 notrace jiffy_sched_clock_rea + + static u32 __read_mostly (*read_sched_clock)(void) = jiffy_sched_clock_read; + +-static inline u64 cyc_to_ns(u64 cyc, u32 mult, u32 shift) ++static inline u64 notrace cyc_to_ns(u64 cyc, u32 mult, u32 shift) + { + return (cyc * mult) >> shift; + } + +-static unsigned long long cyc_to_sched_clock(u32 cyc, u32 mask) ++static unsigned long long notrace cyc_to_sched_clock(u32 cyc, u32 mask) + { + u64 epoch_ns; + u32 epoch_cyc; diff --git a/queue-3.8/series b/queue-3.8/series index 6afe9dcbfed..f30b6837721 100644 --- a/queue-3.8/series +++ b/queue-3.8/series @@ -38,3 +38,5 @@ net-rate-limit-warn-bad-offload-splats.patch net-fix-incorrect-credentials-passing.patch net-drop-dst-before-queueing-fragments.patch tracing-fix-selftest-function-recursion-accounting.patch +arm-7699-1-sched_clock-add-more-notrace-to-prevent-recursion.patch +arm-7692-1-iop3xx-move-iop3xx_peripheral_virt_base.patch -- 2.47.3