From: Greg Kroah-Hartman Date: Sun, 8 Dec 2013 20:08:53 +0000 (-0800) Subject: 3.10-stable patches X-Git-Tag: v3.4.74~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e13dbc794e29abdc99a25b24345649f9f19000f4;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: net-smc91-fix-crash-regression-on-the-versatile.patch --- diff --git a/queue-3.10/net-smc91-fix-crash-regression-on-the-versatile.patch b/queue-3.10/net-smc91-fix-crash-regression-on-the-versatile.patch new file mode 100644 index 00000000000..78c8d7bccdf --- /dev/null +++ b/queue-3.10/net-smc91-fix-crash-regression-on-the-versatile.patch @@ -0,0 +1,139 @@ +From a0c20fb02592d372e744d1d739cda3e1b3defaae Mon Sep 17 00:00:00 2001 +From: Linus Walleij +Date: Thu, 28 Nov 2013 14:33:52 +0100 +Subject: net: smc91: fix crash regression on the versatile + +From: Linus Walleij + +commit a0c20fb02592d372e744d1d739cda3e1b3defaae upstream. + +After commit e9e4ea74f06635f2ffc1dffe5ef40c854faa0a90 +"net: smc91x: dont't use SMC_outw for fixing up halfword-aligned data" +The Versatile SMSC LAN91C111 is crashing like this: + +------------[ cut here ]------------ +kernel BUG at /home/linus/linux/drivers/net/ethernet/smsc/smc91x.c:599! +Internal error: Oops - BUG: 0 [#1] ARM +Modules linked in: +CPU: 0 PID: 43 Comm: udhcpc Not tainted 3.13.0-rc1+ #24 +task: c6ccfaa0 ti: c6cd0000 task.ti: c6cd0000 +PC is at smc_hardware_send_pkt+0x198/0x22c +LR is at smc_hardware_send_pkt+0x24/0x22c +pc : [] lr : [] psr: 20000013 +sp : c6cd1d08 ip : 00000001 fp : 00000000 +r10: c02adb08 r9 : 00000000 r8 : c6ced802 +r7 : c786fba0 r6 : 00000146 r5 : c8800000 r4 : c78d6000 +r3 : 0000000f r2 : 00000146 r1 : 00000000 r0 : 00000031 +Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user +Control: 0005317f Table: 06cf4000 DAC: 00000015 +Process udhcpc (pid: 43, stack limit = 0xc6cd01c0) +Stack: (0xc6cd1d08 to 0xc6cd2000) +1d00: 00000010 c8800000 c78d6000 c786fba0 c78d6000 c01be868 +1d20: c01be7a4 00004000 00000000 c786fba0 c6c12b80 c0208554 000004d0 c780fc60 +1d40: 00000220 c01fb734 00000000 00000000 00000000 c6c9a440 c6c12b80 c78d6000 +1d60: c786fba0 c6c9a440 00000000 c021d1d8 00000000 00000000 c6c12b80 c78d6000 +1d80: c786fba0 00000001 c6c9a440 c02087f8 c6c9a4a0 00080008 00000000 00000000 +1da0: c78d6000 c786fba0 c78d6000 00000138 00000000 00000000 00000000 00000000 +1dc0: 00000000 c027ba74 00000138 00000138 00000001 00000010 c6cedc00 00000000 +1de0: 00000008 c7404400 c6cd1eec c6cd1f14 c067a73c c065c0b8 00000000 c067a740 +1e00: 01ffffff 002040d0 00000000 00000000 00000000 00000000 00000000 ffffffff +1e20: 43004400 00110022 c6cdef20 c027ae8c c6ccfaa0 be82d65c 00000014 be82d3cc +1e40: 00000000 00000000 00000000 c01f2870 00000000 00000000 00000000 c6cd1e88 +1e60: c6ccfaa0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +1e80: 00000000 00000000 00000031 c7802310 c7802300 00000138 c7404400 c0771da0 +1ea0: 00000000 c6cd1eec c7800340 00000138 be82d65c 00000014 be82d3cc c6cd1f08 +1ec0: 00000014 00000000 c7404400 c7404400 00000138 c01f4628 c78d6000 00000000 +1ee0: 00000000 be82d3cc 00000138 c6cd1f08 00000014 c6cd1ee4 00000001 00000000 +1f00: 00000000 00000000 00080011 00000002 06000000 ffffffff 0000ffff 00000002 +1f20: 06000000 ffffffff 0000ffff c00928c8 c065c520 c6cd1f58 00000003 c009299c +1f40: 00000003 c065c520 c7404400 00000000 c7404400 c01f2218 c78106b0 c7441cb0 +1f60: 00000000 00000006 c06799fc 00000000 00000000 00000006 00000000 c01f3ee0 +1f80: 00000000 00000000 be82d678 be82d65c 00000014 00000001 00000122 c00139c8 +1fa0: c6cd0000 c0013840 be82d65c 00000014 00000006 be82d3cc 00000138 00000000 +1fc0: be82d65c 00000014 00000001 00000122 00000000 00000000 00018cb1 00000000 +1fe0: 00003801 be82d3a8 0003a0c7 b6e9af08 60000010 00000006 00000000 00000000 +[] (smc_hardware_send_pkt+0x198/0x22c) from [] (smc_hard_start_xmit+0xc4/0x1e8) +[] (smc_hard_start_xmit+0xc4/0x1e8) from [] (dev_hard_start_xmit+0x460/0x4cc) +[] (dev_hard_start_xmit+0x460/0x4cc) from [] (sch_direct_xmit+0x94/0x18c) +[] (sch_direct_xmit+0x94/0x18c) from [] (dev_queue_xmit+0x238/0x42c) +[] (dev_queue_xmit+0x238/0x42c) from [] (packet_sendmsg+0xbe8/0xd28) +[] (packet_sendmsg+0xbe8/0xd28) from [] (sock_sendmsg+0x84/0xa8) +[] (sock_sendmsg+0x84/0xa8) from [] (SyS_sendto+0xb8/0xdc) +[] (SyS_sendto+0xb8/0xdc) from [] (ret_fast_syscall+0x0/0x2c) +Code: e3130002 1a000001 e3130001 0affffcd (e7f001f2) +---[ end trace 81104fe70e8da7fe ]--- +Kernel panic - not syncing: Fatal exception in interrupt + +This is because the macro operations in smc91x.h defined +for Versatile are missing SMC_outsw() as used in this +commit. + +The Versatile needs and uses the same accessors as the other +platforms in the first if(...) clause, just switch it to using +that and we have one problem less to worry about. + +This includes a hunk of a patch from Will Deacon fixin +the other 32bit platforms as well: Innokom, Ramses, PXA, +PCM027. + +Checkpatch complains about spacing, but I have opted to +follow the style of this .h-file. + +Cc: Russell King +Cc: Nicolas Pitre +Cc: Eric Miao +Cc: Jonathan Cameron +Signed-off-by: Will Deacon +Signed-off-by: Linus Walleij +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/ethernet/smsc/smc91x.h | 22 ++++------------------ + 1 file changed, 4 insertions(+), 18 deletions(-) + +--- a/drivers/net/ethernet/smsc/smc91x.h ++++ b/drivers/net/ethernet/smsc/smc91x.h +@@ -46,7 +46,8 @@ + defined(CONFIG_MACH_LITTLETON) ||\ + defined(CONFIG_MACH_ZYLONITE2) ||\ + defined(CONFIG_ARCH_VIPER) ||\ +- defined(CONFIG_MACH_STARGATE2) ++ defined(CONFIG_MACH_STARGATE2) ||\ ++ defined(CONFIG_ARCH_VERSATILE) + + #include + +@@ -154,6 +155,8 @@ static inline void SMC_outw(u16 val, voi + #define SMC_outl(v, a, r) writel(v, (a) + (r)) + #define SMC_insl(a, r, p, l) readsl((a) + (r), p, l) + #define SMC_outsl(a, r, p, l) writesl((a) + (r), p, l) ++#define SMC_insw(a, r, p, l) readsw((a) + (r), p, l) ++#define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) + #define SMC_IRQ_FLAGS (-1) /* from resource */ + + /* We actually can't write halfwords properly if not word aligned */ +@@ -206,23 +209,6 @@ SMC_outw(u16 val, void __iomem *ioaddr, + #define RPC_LSA_DEFAULT RPC_LED_TX_RX + #define RPC_LSB_DEFAULT RPC_LED_100_10 + +-#elif defined(CONFIG_ARCH_VERSATILE) +- +-#define SMC_CAN_USE_8BIT 1 +-#define SMC_CAN_USE_16BIT 1 +-#define SMC_CAN_USE_32BIT 1 +-#define SMC_NOWAIT 1 +- +-#define SMC_inb(a, r) readb((a) + (r)) +-#define SMC_inw(a, r) readw((a) + (r)) +-#define SMC_inl(a, r) readl((a) + (r)) +-#define SMC_outb(v, a, r) writeb(v, (a) + (r)) +-#define SMC_outw(v, a, r) writew(v, (a) + (r)) +-#define SMC_outl(v, a, r) writel(v, (a) + (r)) +-#define SMC_insl(a, r, p, l) readsl((a) + (r), p, l) +-#define SMC_outsl(a, r, p, l) writesl((a) + (r), p, l) +-#define SMC_IRQ_FLAGS (-1) /* from resource */ +- + #elif defined(CONFIG_MN10300) + + /* diff --git a/queue-3.10/series b/queue-3.10/series index 5a3ab406e2f..f9a555961cd 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -23,3 +23,4 @@ scsi-enclosure-fix-warn_on-in-dual-path-device-removing.patch scsi-libsas-fix-usage-of-ata_tf_to_fis.patch scsi-hpsa-do-not-discard-scsi-status-on-aborted-commands.patch scsi-hpsa-return-0-from-driver-probe-function-on-success-not-1.patch +net-smc91-fix-crash-regression-on-the-versatile.patch