On Mon, Aug 03, 2015 at 03:13:40PM +0200, Uwe Kleine-König wrote: > Hello, > > On Mon, Aug 03, 2015 at 02:55:40PM +0200, Andrew Lunn wrote: > > v5 was accepted and then reverted, because it broke imx6. Lucas Stach > > debugged what was going wrong and provided a patch. Thanks Lucas. This > > has been squashed into v6. > This fixed-for-i.MX6 patch was included for 4.2-rc5 as commit > 8fff755e9f8d0f70a595e79f248695ce6aef5cc3. Unfortunately it breaks > i.MX27 like so: > > Unhandled fault: external abort on non-linefetch (0x808) at 0xf442b014 > pgd = c0004000 > [f442b014] *pgd=10000452(bad) > Internal error: : 808 [#1] PREEMPT ARM > Modules linked in: > CPU: 0 PID: 5 Comm: kworker/0:0H Not tainted 4.2.0-rc5 #19 > Hardware name: Freescale i.MX27 (Device Tree Support) > Workqueue: rpciod xs_tcp_setup_socket > task: c788eb80 ti: c7896000 task.ti: c7896000 > PC is at fec_enet_start_xmit+0x39c/0xe04 > LR is at fec_enet_start_xmit+0x2e8/0xe04 > pc : [<c038ea88>] lr : [<c038e9d4>] psr: 80000013 > sp : c7897ad8 ip : 00000018 fp : c71637a0 > r10: c7b4f800 r9 : c781f000 r8 : 00000000 > r7 : 00000001 r6 : c88e5018 r5 : c7b4f800 r4 : c88e5018 > r3 : f442b014 r2 : 00000000 r1 : 00000000 r0 : a7164800 > Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel > Control: 0005317f Table: a0004000 DAC: 00000017 > Process kworker/0:0H (pid: 5, stack limit = 0xc7896190) > Stack: (0xc7897ad8 to 0xc7898000) > 7ac0: 00000001 > 00000000 > 7ae0: c7b4fcc0 c7001fcf 0000cc00 c781e000 00000003 00001800 c7007b37 > 00000000 > 7b00: c7a91880 008976fc 000001a0 c88e5010 00000000 0000002a a7164800 > 000072d8 > 7b20: 00007210 00b43ef2 00000004 00007eac 00000002 00000200 00004000 > c70eed00 > 7b40: c71637a0 c71637a0 0000002a c0766a2c 00000000 c7b4f800 c0766a34 > c04a59a0 > 7b60: 00000000 00000001 00000000 00000001 00000000 00000000 c7a91880 > c7897bbc > 7b80: c07c1374 00000000 c71637a0 00000000 00000000 c70eed00 c71637a0 > c7a91880 > 7ba0: c7b4f800 00000000 00000000 00000001 00000000 c04c0004 c71637a0 > 00000010 > 7bc0: c71637a0 c70eed00 c7b4f800 00000000 c7a91880 c04a5f60 c70eed68 > 00000001 > 7be0: c70ee322 00000000 00000004 fffffff4 c71637a0 c71637a0 c7b4f800 > 0417a8c0 > 7c00: f218a8c0 00000003 c7994300 c7296600 c07b66e0 c04faee0 f218a8c0 > 00000003 > 7c20: c7994300 c7296600 c07b66e0 c04fb534 f218a8c0 00000000 c7b4bc48 > c70ee200 > 7c40: c7b4f800 0417a8c0 f218a8c0 c04fbc90 f218a8c0 00000000 c7b4bc48 > 00000000 > 7c60: c7b4f944 c7292e88 000000a4 c70ee218 c7b4f944 c71638c0 c7163860 > c04931a0 > 7c80: 00000000 c7163860 c70ee200 c7292e88 c70ee218 c7b4f944 00000010 > c04ad914 > 7ca0: 000002c0 c70ee200 00000001 c04b06ac c7292e88 c70ee200 00000000 > c70ee200 > 7cc0: c7b4f944 c04b082c 00000000 c7b4f800 c70fa900 c7b4f800 c70fa900 > c7292e88 > 7ce0: c70ee200 c7b4f944 00000010 c04cfa34 00000000 0417a8c0 c07954b4 > c7292e88 > 7d00: c729f9e0 00000001 00000000 c7b4f800 c70fa900 c7296600 c07b66e0 > c04d1d5c > 7d20: 00000000 c7ee5bf0 c7891388 00000020 c7292e88 c729f9e0 00000000 > c729fbbc > 7d40: c7292e88 c729f9e0 00000000 c729fbbc 00a40000 c04cfddc 8d5d04da > 00000000 > 7d60: 8d4fdf3b c7292de0 8d5d04da c729f9e0 c7292e88 00000000 00000000 > 000005b4 > 7d80: c729fd60 00000020 c07b66e0 c04e7e64 05b4000b 00000004 00000000 > ffff8c9e > 7da0: 00000000 00000000 00000000 c729f9e0 c7292de0 c729fdb0 c729fd60 > c7897de4 > 7dc0: 00000000 c07707e0 c07b66e0 c04e9b10 00000001 c7897de4 00000000 > c049d4c0 > 7de0: 9c33a999 00000904 fe103136 c729f9e0 0417a8c0 00000002 c70fa900 > c729fbbc > 7e00: c729fb78 c70fa900 00006f00 c04ec638 c7801280 c729100c 00000000 > 00000000 > 7e20: 000000d0 00020000 00000000 00000000 00000000 6f00e494 f218a8c0 > 0417a8c0 > 7e40: 00000000 00000000 00000000 00000000 00000000 00000000 c04e9200 > c729f9e0 > 7e60: 00000800 00000010 c729100c c74052a0 c74052a0 c07c0b7c c076d664 > c0501888 > 7e80: cccccccd 00000000 c729f9e0 c04dabf0 00000000 c0491a78 c07b66e0 > 00000002 > 7ea0: c059a4d8 c74052a0 00000800 00000010 c729100c c74052a0 00000000 > c07c0b7c > 7ec0: c076d664 c0501948 00000800 c729f9e0 c7291304 c05246d0 c7291000 > c0526734 > 7ee0: 00000004 00000001 0000003c 00000003 00000001 0002bf20 c7291304 > c7804ca0 > 7f00: 00000000 c7ee7c00 c076d664 c002e578 c076d664 c005c310 c077025c > c7804ca0 > 7f20: c076d664 c7804cb8 c7896000 c076d674 00000008 c07c0895 c076d664 > c002e8f8 > 7f40: c7896000 c076d7c4 c7804ca0 c781ddc0 00000000 c7804ca0 c002e8bc > 00000000 > 7f60: 00000000 00000000 00000000 c0033af0 0000ffff 00000000 0000ffff > c7804ca0 > 7f80: 00000000 c7897f84 c7897f84 00000000 c7897f90 c7897f90 c7897fac > c781ddc0 > 7fa0: c0033a30 00000000 00000000 c000a340 00000000 00000000 00000000 > 00000000 > 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > 00000000 > 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 0000ffff > 00aeffff > [<c038ea88>] (fec_enet_start_xmit) from [<c04a59a0>] > (dev_hard_start_xmit+0x244/0x490) > [<c04a59a0>] (dev_hard_start_xmit) from [<c04c0004>] > (sch_direct_xmit+0xe0/0x24c) > [<c04c0004>] (sch_direct_xmit) from [<c04a5f60>] > (__dev_queue_xmit+0x258/0x70c) > [<c04a5f60>] (__dev_queue_xmit) from [<c04faee0>] (arp_xmit+0x7c/0x8c) > [<c04faee0>] (arp_xmit) from [<c04fbc90>] (arp_solicit+0xc8/0x1a4) > [<c04fbc90>] (arp_solicit) from [<c04ad914>] (neigh_probe+0x64/0xa0) > [<c04ad914>] (neigh_probe) from [<c04b06ac>] > (__neigh_event_send+0x278/0x2e4) > [<c04b06ac>] (__neigh_event_send) from [<c04b082c>] > (neigh_resolve_output+0x114/0x19c) > [<c04b082c>] (neigh_resolve_output) from [<c04cfa34>] > (ip_finish_output2+0x128/0x3a4) > [<c04cfa34>] (ip_finish_output2) from [<c04d1d5c>] > (ip_output+0xf0/0x108) > [<c04d1d5c>] (ip_output) from [<c04cfddc>] (ip_queue_xmit+0x12c/0x370) > [<c04cfddc>] (ip_queue_xmit) from [<c04e7e64>] > (tcp_transmit_skb+0x470/0x9c0) > [<c04e7e64>] (tcp_transmit_skb) from [<c04e9b10>] > (tcp_connect+0x5c4/0x6f8) > [<c04e9b10>] (tcp_connect) from [<c04ec638>] > (tcp_v4_connect+0x27c/0x408) > [<c04ec638>] (tcp_v4_connect) from [<c0501888>] > (__inet_stream_connect+0x264/0x2f0) > [<c0501888>] (__inet_stream_connect) from [<c0501948>] > (inet_stream_connect+0x34/0x48) > [<c0501948>] (inet_stream_connect) from [<c0526734>] > (xs_tcp_setup_socket+0x60/0x444) > [<c0526734>] (xs_tcp_setup_socket) from [<c002e578>] > (process_one_work+0x144/0x488) > [<c002e578>] (process_one_work) from [<c002e8f8>] > (worker_thread+0x3c/0x520) > [<c002e8f8>] (worker_thread) from [<c0033af0>] (kthread+0xc0/0xdc) > [<c0033af0>] (kthread) from [<c000a340>] (ret_from_fork+0x14/0x34) > Code: 03a02f7b 13a02014 e0833002 e3a02000 (e5832000) > ---[ end trace 9bc5f5f5fa9af0cb ]--- > Kernel panic - not syncing: Fatal exception in interrupt > > The problem is that on i.MX27 there are two clocks involved that both > must be on to send a packet, while on i.MX6 it's only a single one > (abstracted by having ipg-clock = ahb-clock). With the suggested patch > only a single one is asserted to be on. This is enough for i.MX6 but > it's not for i.MX27 (and from looking at the device trees also i.MX25, > i.MX28, and i.MX35 are affected).
Hi Uwe I don't think it is as simple as this. If you are sending a packet, fec_enet_open() must of been called. This does a pm_runtime_get_sync() to ensure the ipg-clock is ticking, and fec_enet_clk_enable() to enable all other clocks. Can you debug this further to find out which clock is off, and where it gets turned off? > As I think it would be bold to fix this commit once more for 4.2, I > suggest to revert 8fff755e9f8d0f70a595e79f248695ce6aef5cc3. > (To be honest I wonder why v5 of this commit was even taken for -rc3.) > > The straight forward fix for the MDIO issue that was intended to be > addressed by 8fff755e9f8d is to add clk_prepare_enable and matching > _unprepare_disable calls to the mdio callbacks, right? You mean v1 of the patch? https://patchwork.ozlabs.org/patch/483668/ Or at least something similar. That idea got NACK because it is thought to consume too much power. Andrew -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html