All of lore.kernel.org
 help / color / mirror / Atom feed
* 4.4 BCM5301X ARM regression "External imprecise Data abort"
@ 2016-04-04  6:13 Rafał Miłecki
  2016-04-04 21:08 ` Scott Branden
       [not found] ` <CAC3K-4pHw1YQbcD2pp3eaJp0o5OSO+Ft0B_0o1y6uRCJGxGhaw@mail.gmail.com>
  0 siblings, 2 replies; 13+ messages in thread
From: Rafał Miłecki @ 2016-04-04  6:13 UTC (permalink / raw)
  To: linux-arm-kernel

Hi guys,

I got regression reports from Netgear R8000 (BCM4709A0) users and did
some testing & regression tracking with Aditya.

It happens that Linux 4.4 doesn't boot due to the following commits:
bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel startup")
9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault handler")

In kernel 4.3 we got that abort workaround which was resulting in:
[    5.007128] Freeing unused kernel memory: 212K (c0435000 - c046a000)
[    5.694632] init: Console is alive
[    5.698169] init: - watchdog -
[    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406 ignored.
As you can see, this abort was happening soon after freeing unused
memory and ignoring it *once* did the trick. It was never appearing
again.

With 4.4 similar (or the same?) abort happens earlier (during PCI host
driver init) and doesn't get ignored:
[    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.483451] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x085fffff]
[    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
[    2.605744] pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
[    2.612657] pcie_iproc_bcma bcma0:8: link: UP
[    2.617241] PCI: bus0: Fast back to back transfers disabled
[    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
00-00]), reconfiguring
[    2.631297] PCI: bus1: Fast back to back transfers disabled
[    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
00-00]), reconfiguring
[    2.645035] Unhandled fault: imprecise external abort (0x1406) at 0x00000000
(see 4.4.txt for the backtrace)

At first I was hoping that we simply need to re-add the removed
workaround. I tried it but it appeared that one abort is immediately
followed by another:
[    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
00-00]), reconfiguring
[    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406 ignored.
[    2.951966] Unhandled fault: imprecise external abort (0x1406) at 0x00000000

So it seems that commits bbeb920 and 9254970 broke something in PCI
host initialization (or maybe just exposed another bug?). Instead of
getting an abort once and late we are getting now many of them and a
bit earlier.

Reverting all three commits from the top of 4.4.6 gives me back a
working & booting kernel.

Do you have any idea how to fix this regression (and hopefully
original problem as well)?

-- 
Rafa?
-------------- next part --------------
[    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.483451] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x085fffff]
[    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
[    2.605744] pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
[    2.612657] pcie_iproc_bcma bcma0:8: link: UP
[    2.617241] PCI: bus0: Fast back to back transfers disabled
[    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.631297] PCI: bus1: Fast back to back transfers disabled
[    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.645035] Unhandled fault: imprecise external abort (0x1406) at 0x00000000
[    2.652103] pgd = c0004000
[    2.654809] [00000000] *pgd=00000000
[    2.658400] Internal error: : 1406 [#1] SMP ARM
[    2.662939] Modules linked in:
[    2.666008] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.0 #1
[    2.671852] Hardware name: BCM5301X
[    2.675344] task: c782e000 ti: c7822000 task.ti: c7822000
[    2.680770] PC is at pci_generic_config_read32+0x48/0x74
[    2.686100] LR is at arm_heavy_mb+0x20/0x40
[    2.690291] pc : [<c01ad750>]    lr : [<c001b2ac>]    psr: a0000093
[    2.690291] sp : c7823980  ip : c7823948  fp : c782399c
[    2.701795] r10: 00000000  r9 : 00000000  r8 : c01ad708
[    2.707026] r7 : c7823a0c  r6 : 00000004  r5 : c78239ac  r4 : 00000000
[    2.713563] r3 : c88c4000  r2 : c88c41f8  r1 : 00120000  r0 : c88c41fc
[    2.720100] Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
[    2.727342] Control: 10c5387d  Table: 0000404a  DAC: 00000051
[    2.733104] Process swapper/0 (pid: 1, stack limit = 0xc7822190)
[    2.739126] Stack: (0xc7823980 to 0xc7824000)
[    2.743492] 3980: c7adda00 00000000 60000013 c7823a0c c78239d4 c78239a0 c01ad5fc c01ad714
[    2.751691] 39a0: c78239ac c01da160 c78239cc 00000000 c7adda00 c7823a0c c7adda00 00000000
[    2.759890] 39c0: 0000ea60 c7add800 c7823a04 c78239d8 c01af0d0 c01ad5a4 00000000 00000000
[    2.768088] 39e0: c7adda00 c7adda00 00000000 00000000 00000000 c7add800 c7823a2c c7823a08
[    2.776288] 3a00: c01b03b0 c01af0b0 c7823a24 c7823a18 c7adda00 c7adda00 00000001 00000000
[    2.784488] 3a20: c7823a4c c7823a30 c01b048c c01b037c c7adda00 00000008 00000001 00000002
[    2.792686] 3a40: c7823a74 c7823a50 c01b122c c01b0434 c7a11c00 c7adda00 00000001 00000002
[    2.800885] 3a60: 00000000 c7add800 c7823ad4 c7823a78 c01b1034 c01b1210 c00531ec c00558a8
[    2.809084] 3a80: c7a11c00 c7823a9c c7823ad4 00000000 00000000 00000000 00000000 00000001
[    2.817283] 3aa0: 00000001 00ff0201 c7823ad4 c7add800 c7a11c00 00000001 00000001 c7add814
[    2.825482] 3ac0: c7add400 00000000 c7823afc c7823ad8 c01b128c c01b0d24 c7a11800 c7add800
[    2.833682] 3ae0: 00000000 00000001 00000000 c7add400 c7823b5c c7823b00 c01b1034 c01b1210
[    2.841881] 3b00: c00531ec c00558a8 c7a11800 c7823b24 c7823b5c 00000000 00000000 00000000
[    2.850080] 3b20: 00000000 00000001 00010001 00ff0100 c7823b5c c7add400 c7a11800 00000001
[    2.858279] 3b40: 00000000 c7add414 c04416ac 00000000 c7823b84 c7823b60 c01b128c c01b0d24
[    2.866478] 3b60: c7a3f550 c7add400 00000000 00000330 00000000 c04416ac c7823bec c7823b88
[    2.874678] 3b80: c01c0b2c c01b1210 c7823bf4 c7abda10 00000000 c04416ac c7823bbc c7823bf4
[    2.882878] 3ba0: c0024e20 90120190 c7823bf4 c7823bfc c7823bdc c7823bc0 01060400 c0024e10
[    2.891075] 3bc0: c7a3f550 c7a3f550 c7823bf4 c7abda00 c7abda10 00000000 c04416ac 00000000
[    2.899275] 3be0: c7823c34 c7823bf0 c01c0d28 c01c05b0 c7abda10 c7823bf4 c7823bf4 40000000
[    2.907474] 3c00: 47ffffff c03b9da1 00000200 c7823c18 c0104d78 c0104c90 c7abda10 c047be58
[    2.915674] 3c20: 00000000 c047be54 c7823c44 c7823c38 c0231cb4 c01c0c9c c7823c6c c7823c48
[    2.923873] 3c40: c01dddf4 c0231c98 c04416ac c7823cb8 c7abda10 c7abda44 00000000 c04363c8
[    2.932071] 3c60: c7823c8c c7823c70 c01de0bc c01ddd00 00000000 c7823cb8 c01de030 c7abda44
[    2.940271] 3c80: c7823cb4 c7823c90 c01dc6c4 c01de03c c7889870 c788c2b8 00000000 c7abda10
[    2.948470] 3ca0: c0448434 00000001 c7823cdc c7823cb8 c01ddc5c c01dc644 c7abda10 00000001
[    2.956669] 3cc0: c7abda10 c0448434 c7abda10 c7883c10 c7823cec c7823ce0 c01de1f4 c01ddbe8
[    2.964868] 3ce0: c7823d0c c7823cf0 c01dd380 c01de1ec c7abda10 c7abda18 00000000 c7883c10
[    2.973068] 3d00: c7823d54 c7823d10 c01db70c c01dd35c c001b9a8 c017d1ac 00000000 c78a26f0
[    2.981267] 3d20: c78a2830 dc8ba600 c7abda10 c7abda10 c7abda10 c78a2810 0000052d 0000082c
[    2.989467] 3d40: c04485d0 00000000 c7823d6c c7823d58 c01db97c c01db468 c7abda00 c7abda10
[    2.997666] 3d60: c7823d8c c7823d70 c0231f14 c01db96c c78a2810 c7abda00 c78a2830 0000052d
[    3.005864] 3d80: c7823db4 c7823d90 c0232654 c0231f00 c78a2810 c6de9bd4 c7883c00 c047be54
[    3.014063] 3da0: 00000000 c04485d0 c7823dd4 c7823db8 c02375c8 c0232320 c7883c10 c04485d0
[    3.022263] 3dc0: 00000000 c047be54 c7823dec c7823dd8 c01df56c c0237564 c7883c10 c047be58
[    3.030462] 3de0: c7823e14 c7823df0 c01dddf4 c01df538 c7883c10 c7883c44 c04485d0 c04423e8
[    3.038662] 3e00: c04363c8 00000000 c7823e34 c7823e18 c01ddfc8 c01ddd00 00000000 c04485d0
[    3.046861] 3e20: c01ddf58 c04423e8 c7823e5c c7823e38 c01dc5f0 c01ddf64 c7810a5c c7891134
[    3.055059] 3e40: c7810a70 c04485d0 00000000 c7902980 c7823e6c c7823e60 c01dd990 c01dc588
[    3.063258] 3e60: c7823e94 c7823e70 c01dd59c c01dd97c c03c818d c7823e80 c04485d0 c0415bb8
[    3.071458] 3e80: c04399c8 c04399c8 c7823eac c7823e98 c01de654 c01dd4d4 c7903940 c0415bb8
[    3.079657] 3ea0: c7823ebc c7823eb0 c01df518 c01de5bc c7823ecc c7823ec0 c0415cd8 c01df4ec
[    3.087857] 3ec0: c7823edc c7823ed0 c0415bd4 c0415ccc c7823f5c c7823ee0 c001393c c0415bc4
[    3.096055] 3ee0: c00fab44 c00fa808 00000000 c043bfbc c7823f14 c7823f00 c0038a28 c00389bc
[    3.104254] 3f00: c7ffc755 00000000 c7823f5c c7823f18 c0038c8c c03fe5ec 00000006 00000006
[    3.112454] 3f20: 00000035 c03fc020 c03fc444 00000000 00000000 dc8ba600 00000006 00000035
[    3.120653] 3f40: c0425834 c042eb24 c044d958 c044d950 c7823f94 c7823f60 c03fee80 c001379c
[    3.128852] 3f60: 00000006 00000006 00000000 c03fe5e0 00000000 c000e2e8 00000000 00000000
[    3.137051] 3f80: 00000000 00000000 c7823fac c7823f98 c000e2f8 c03fed68 00000000 c000e2e8
[    3.145249] 3fa0: 00000000 c7823fb0 c00097b8 c000e2f4 00000000 00000000 00000000 00000000
[    3.153449] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    3.161648] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 c7823ff4 00000000
[    3.169841] Backtrace: 
[    3.172309] [<c01ad708>] (pci_generic_config_read32) from [<c01ad5fc>] (pci_bus_read_config_dword+0x64/0x8c)
[    3.182159]  r7:c7823a0c r6:60000013 r5:00000000 r4:c7adda00
[    3.187871] [<c01ad598>] (pci_bus_read_config_dword) from [<c01af0d0>] (pci_bus_read_dev_vendor_id+0x2c/0xe8)
[    3.197809]  r9:c7add800 r8:0000ea60 r7:00000000 r6:c7adda00 r5:c7823a0c r4:c7adda00
[    3.205615] [<c01af0a4>] (pci_bus_read_dev_vendor_id) from [<c01b03b0>] (pci_scan_single_device+0x40/0xb8)
[    3.215285]  r9:c7add800 r8:00000000 r7:00000000 r6:00000000 r5:c7adda00 r4:c7adda00
[    3.223090] [<c01b0370>] (pci_scan_single_device) from [<c01b048c>] (pci_scan_slot+0x64/0xe4)
[    3.231632]  r7:00000000 r6:00000001 r5:c7adda00 r4:c7adda00
[    3.237339] [<c01b0428>] (pci_scan_slot) from [<c01b122c>] (pci_scan_child_bus+0x28/0xa8)
[    3.245532]  r7:00000002 r6:00000001 r5:00000008 r4:c7adda00
[    3.251239] [<c01b1204>] (pci_scan_child_bus) from [<c01b1034>] (pci_scan_bridge+0x31c/0x4ec)
[    3.259781]  r9:c7add800 r8:00000000 r7:00000002 r6:00000001 r5:c7adda00 r4:c7a11c00
[    3.267584] [<c01b0d18>] (pci_scan_bridge) from [<c01b128c>] (pci_scan_child_bus+0x88/0xa8)
[    3.275952]  r10:00000000 r9:c7add400 r8:c7add814 r7:00000001 r6:00000001 r5:c7a11c00
[    3.283838]  r4:c7add800
[    3.286385] [<c01b1204>] (pci_scan_child_bus) from [<c01b1034>] (pci_scan_bridge+0x31c/0x4ec)
[    3.294927]  r9:c7add400 r8:00000000 r7:00000001 r6:00000000 r5:c7add800 r4:c7a11800
[    3.302732] [<c01b0d18>] (pci_scan_bridge) from [<c01b128c>] (pci_scan_child_bus+0x88/0xa8)
[    3.311100]  r10:00000000 r9:c04416ac r8:c7add414 r7:00000000 r6:00000001 r5:c7a11800
[    3.318984]  r4:c7add400
[    3.321540] [<c01b1204>] (pci_scan_child_bus) from [<c01c0b2c>] (iproc_pcie_setup+0x588/0x690)
[    3.330170]  r9:c04416ac r8:00000000 r7:00000330 r6:00000000 r5:c7add400 r4:c7a3f550
[    3.337977] [<c01c05a4>] (iproc_pcie_setup) from [<c01c0d28>] (iproc_pcie_bcma_probe+0x98/0xd0)
[    3.346690]  r10:00000000 r9:c04416ac r8:00000000 r7:c7abda10 r6:c7abda00 r5:c7823bf4
[    3.354576]  r4:c7a3f550
[    3.357133] [<c01c0c90>] (iproc_pcie_bcma_probe) from [<c0231cb4>] (bcma_device_probe+0x28/0x34)
[    3.365935]  r7:c047be54 r6:00000000 r5:c047be58 r4:c7abda10
[    3.371648] [<c0231c8c>] (bcma_device_probe) from [<c01dddf4>] (driver_probe_device+0x100/0x264)
[    3.380460] [<c01ddcf4>] (driver_probe_device) from [<c01de0bc>] (__device_attach_driver+0x8c/0x98)
[    3.389523]  r9:c04363c8 r8:00000000 r7:c7abda44 r6:c7abda10 r5:c7823cb8 r4:c04416ac
[    3.397328] [<c01de030>] (__device_attach_driver) from [<c01dc6c4>] (bus_for_each_drv+0x8c/0x9c)
[    3.406130]  r7:c7abda44 r6:c01de030 r5:c7823cb8 r4:00000000
[    3.411839] [<c01dc638>] (bus_for_each_drv) from [<c01ddc5c>] (__device_attach+0x80/0xd4)
[    3.420030]  r6:00000001 r5:c0448434 r4:c7abda10
[    3.424684] [<c01ddbdc>] (__device_attach) from [<c01de1f4>] (device_initial_probe+0x14/0x18)
[    3.433225]  r7:c7883c10 r6:c7abda10 r5:c0448434 r4:c7abda10
[    3.438934] [<c01de1e0>] (device_initial_probe) from [<c01dd380>] (bus_probe_device+0x30/0x88)
[    3.447567] [<c01dd350>] (bus_probe_device) from [<c01db70c>] (device_add+0x2b0/0x504)
[    3.455498]  r7:c7883c10 r6:00000000 r5:c7abda18 r4:c7abda10
[    3.461205] [<c01db45c>] (device_add) from [<c01db97c>] (device_register+0x1c/0x20)
[    3.468877]  r10:00000000 r9:c04485d0 r8:0000082c r7:0000052d r6:c78a2810 r5:c7abda10
[    3.476762]  r4:c7abda10
[    3.479311] [<c01db960>] (device_register) from [<c0231f14>] (bcma_register_core+0x20/0x54)
[    3.487678]  r5:c7abda10 r4:c7abda00
[    3.491280] [<c0231ef4>] (bcma_register_core) from [<c0232654>] (bcma_bus_register+0x340/0x360)
[    3.499994]  r7:0000052d r6:c78a2830 r5:c7abda00 r4:c78a2810
[    3.505705] [<c0232314>] (bcma_bus_register) from [<c02375c8>] (bcma_host_soc_probe+0x70/0x94)
[    3.514329]  r9:c04485d0 r8:00000000 r7:c047be54 r6:c7883c00 r5:c6de9bd4 r4:c78a2810
[    3.522137] [<c0237558>] (bcma_host_soc_probe) from [<c01df56c>] (platform_drv_probe+0x40/0x74)
[    3.530849]  r7:c047be54 r6:00000000 r5:c04485d0 r4:c7883c10
[    3.536558] [<c01df52c>] (platform_drv_probe) from [<c01dddf4>] (driver_probe_device+0x100/0x264)
[    3.545446]  r5:c047be58 r4:c7883c10
[    3.549048] [<c01ddcf4>] (driver_probe_device) from [<c01ddfc8>] (__driver_attach+0x70/0x94)
[    3.557500]  r9:00000000 r8:c04363c8 r7:c04423e8 r6:c04485d0 r5:c7883c44 r4:c7883c10
[    3.565306] [<c01ddf58>] (__driver_attach) from [<c01dc5f0>] (bus_for_each_dev+0x74/0x98)
[    3.573499]  r7:c04423e8 r6:c01ddf58 r5:c04485d0 r4:00000000
[    3.579207] [<c01dc57c>] (bus_for_each_dev) from [<c01dd990>] (driver_attach+0x20/0x28)
[    3.587225]  r6:c7902980 r5:00000000 r4:c04485d0
[    3.591880] [<c01dd970>] (driver_attach) from [<c01dd59c>] (bus_add_driver+0xd4/0x1f0)
[    3.599818] [<c01dd4c8>] (bus_add_driver) from [<c01de654>] (driver_register+0xa4/0xe8)
[    3.607836]  r7:c04399c8 r6:c04399c8 r5:c0415bb8 r4:c04485d0
[    3.613545] [<c01de5b0>] (driver_register) from [<c01df518>] (__platform_driver_register+0x38/0x4c)
[    3.622607]  r5:c0415bb8 r4:c7903940
[    3.626212] [<c01df4e0>] (__platform_driver_register) from [<c0415cd8>] (bcma_host_soc_register_driver+0x18/0x20)
[    3.636505] [<c0415cc0>] (bcma_host_soc_register_driver) from [<c0415bd4>] (bcma_modinit+0x1c/0x50)
[    3.645580] [<c0415bb8>] (bcma_modinit) from [<c001393c>] (do_one_initcall+0x1ac/0x1ec)
[    3.653615] [<c0013790>] (do_one_initcall) from [<c03fee80>] (kernel_init_freeable+0x124/0x1f8)
[    3.662331]  r9:c044d950 r8:c044d958 r7:c042eb24 r6:c0425834 r5:00000035 r4:00000006
[    3.670145] [<c03fed5c>] (kernel_init_freeable) from [<c000e2f8>] (kernel_init+0x10/0x104)
[    3.678426]  r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c000e2e8 r4:00000000
[    3.686232] [<c000e2e8>] (kernel_init) from [<c00097b8>] (ret_from_fork+0x14/0x3c)
[    3.693814]  r5:c000e2e8 r4:00000000
[    3.697414] Code: e5853000 e89da8f0 e5901000 f57ff04f (e3560002) 
[    3.703537] ---[ end trace 207d6bff1aec485f ]---
[    3.708194] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    3.708194] 
[    3.717354] CPU1: stopping
[    3.720071] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.4.0 #1
[    3.727133] Hardware name: BCM5301X
[    3.730624] Backtrace: 
[    3.733094] [<c0017050>] (dump_backtrace) from [<c001724c>] (show_stack+0x18/0x1c)
[    3.740677]  r7:c7857f60 r6:00000000 r5:60000193 r4:00000000
[    3.746392] [<c0017234>] (show_stack) from [<c017b928>] (dump_stack+0x84/0xa4)
[    3.753635] [<c017b8a4>] (dump_stack) from [<c0018a34>] (handle_IPI+0xf4/0x19c)
[    3.760956]  r5:00000001 r4:c044daa8
[    3.764558] [<c0018940>] (handle_IPI) from [<c0009488>] (gic_handle_irq+0x7c/0x98)
[    3.772142]  r7:c0440e6c r6:c7857f60 r5:c0436708 r4:c8802100
[    3.777848] [<c000940c>] (gic_handle_irq) from [<c000a074>] (__irq_svc+0x54/0x70)
[    3.785347] Exception stack(0xc7857f60 to 0xc7857fa8)
[    3.790409] 7f60: 00000000 00000b80 c6dda254 c000ae20 c042f224 c0436498 10c0387d c044dab0
[    3.798608] 7f80: 0000406a 413fc090 00000000 c7857fbc c7857fc0 c7857fb0 c001453c c0014540
[    3.806803] 7fa0: 60000013 ffffffff
[    3.810291]  r9:413fc090 r8:0000406a r7:c7857f94 r6:ffffffff r5:60000013 r4:c0014540
[    3.818101] [<c001450c>] (arch_cpu_idle) from [<c004f944>] (default_idle_call+0x30/0x34)
[    3.826218] [<c004f914>] (default_idle_call) from [<c004fa78>] (cpu_startup_entry+0x130/0x194)
[    3.834852] [<c004f948>] (cpu_startup_entry) from [<c0018740>] (secondary_start_kernel+0x10c/0x128)
[    3.843921] [<c0018634>] (secondary_start_kernel) from [<0000954c>] (0x954c)
[    3.850982]  r5:00000051 r4:0783c06a
[    3.854580] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
-------------- next part --------------
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.4.6 (zajec at linux-samsung.lan) (gcc version 5.3.0 (OpenWrt GCC 5.3.0 r48934) ) #3 SMP Fri Apr 1 21:16:56 UTC 2016
[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: Netgear R8000 (BCM4709)
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] PERCPU: Embedded 11 pages/cpu @c6dcf000 s12928 r8192 d23936 u45056
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65280
[    0.000000] Kernel command line: console=ttyS0,115200 earlyprintk
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 254852K/262144K available (3154K kernel code, 101K rwdata, 1180K rodata, 216K init, 280K bss, 7292K reserved, 0K cma-reserved, 131072K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc8800000 - 0xff800000   ( 880 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0443e54   (4336 kB)
[    0.000000]       .init : 0xc0444000 - 0xc047a000   ( 216 kB)
[    0.000000]       .data : 0xc047a000 - 0xc04934ac   ( 102 kB)
[    0.000000]        .bss : 0xc04934ac - 0xc04d966c   ( 281 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] L2C: DT/platform modifies aux control register: 0x0a130000 -> 0x0a530000
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 1 lines
[    0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[    0.000000] L2C-310 cache controller enabled, 16 ways, 256 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x7e530001
[    0.000011] sched_clock: 64 bits at 500MHz, resolution 2ns, wraps every 4398046511103ns
[    0.008129] clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0xe6a171a037, max_idle_ns: 881590485102 ns
[    0.019397] Calibrating delay loop... 1987.37 BogoMIPS (lpj=9936896)
[    0.082228] pid_max: default: 32768 minimum: 301
[    0.087001] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.093727] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.101260] CPU: Testing write buffer coherency: ok
[    0.106440] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.112278] Setting up static identity map for 0x82a0 - 0x82d4
[    0.179378] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.179442] Brought up 2 CPUs
[    0.188261] SMP: Total of 2 processors activated (3981.31 BogoMIPS).
[    0.194730] CPU: All CPU(s) started in SVC mode.
[    0.200936] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.210968] pinctrl core: initialized pinctrl subsystem
[    0.216630] NET: Registered protocol family 16
[    0.221774] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.261181] clocksource: Switched to clocksource arm_global_timer
[    0.268207] NET: Registered protocol family 2
[    0.273132] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.280273] TCP bind hash table entries: 1024 (order: 1, 8192 bytes)
[    0.286742] TCP: Hash tables configured (established 1024 bind 1024)
[    0.293268] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.299227] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.305795] NET: Registered protocol family 1
[    0.311088] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.321658] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.327611] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.338806] bounce: pool size: 64 pages
[    0.342777] io scheduler noop registered
[    0.346799] io scheduler deadline registered (default)
[    0.352424] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.359486] console [ttyS0] disabled
[    0.363188] 18000300.serial: ttyS0 at MMIO 0x18000300 (irq = 18, base_baud = 7812500) is a 16550
[    0.372116] console [ttyS0] enabled
[    0.372116] console [ttyS0] enabled
[    0.379191] bootconsole [earlycon0] disabled
[    0.379191] bootconsole [earlycon0] disabled
[    0.388922] nand: Could not find valid ONFI parameter page; aborting
[    0.395380] nand: device found, Manufacturer ID: 0x01, Chip ID: 0xf1
[    0.401777] nand: AMD/Spansion NAND 128MiB 3,3V 8-bit
[    0.406847] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    0.414473] iproc_nand 18028000.nand: detected 128MiB total, 128KiB blocks, 2KiB pages, 16B OOB, 8-bit, BCH-8
[    0.424433] Scanning device for bad blocks
[    1.054143] random: nonblocking pool is initialized
[    1.634046] mtd_read error while parsing (offset: 0x7580000): -74
[    1.640538] mtd_read error while parsing (offset: 0x75A0000): -74
[    1.647011] mtd_read error while parsing (offset: 0x75C0000): -74
[    1.653498] mtd_read error while parsing (offset: 0x75E0000): -74
[    1.659980] mtd_read error while parsing (offset: 0x7600000): -74
[    1.666456] mtd_read error while parsing (offset: 0x7620000): -74
[    1.672940] mtd_read error while parsing (offset: 0x7640000): -74
[    1.679417] mtd_read error while parsing (offset: 0x7660000): -74
[    1.685892] mtd_read error while parsing (offset: 0x7680000): -74
[    1.692376] mtd_read error while parsing (offset: 0x76A0000): -74
[    1.698853] mtd_read error while parsing (offset: 0x76C0000): -74
[    1.705338] mtd_read error while parsing (offset: 0x76E0000): -74
[    1.711825] mtd_read error while parsing (offset: 0x7700000): -74
[    1.718296] mtd_read error while parsing (offset: 0x7720000): -74
[    1.724782] mtd_read error while parsing (offset: 0x7740000): -74
[    1.731265] mtd_read error while parsing (offset: 0x7760000): -74
[    1.737742] mtd_read error while parsing (offset: 0x7780000): -74
[    1.744228] mtd_read error while parsing (offset: 0x77A0000): -74
[    1.750709] mtd_read error while parsing (offset: 0x77C0000): -74
[    1.757187] mtd_read error while parsing (offset: 0x77E0000): -74
[    1.763671] mtd_read error while parsing (offset: 0x7800000): -74
[    1.770154] mtd_read error while parsing (offset: 0x7820000): -74
[    1.776631] mtd_read error while parsing (offset: 0x7840000): -74
[    1.783115] mtd_read error while parsing (offset: 0x7860000): -74
[    1.789599] mtd_read error while parsing (offset: 0x7880000): -74
[    1.796076] mtd_read error while parsing (offset: 0x78A0000): -74
[    1.802562] mtd_read error while parsing (offset: 0x78C0000): -74
[    1.809036] mtd_read error while parsing (offset: 0x78E0000): -74
[    1.815526] mtd_read error while parsing (offset: 0x7900000): -74
[    1.822015] mtd_read error while parsing (offset: 0x7920000): -74
[    1.828490] mtd_read error while parsing (offset: 0x7940000): -74
[    1.834974] mtd_read error while parsing (offset: 0x7960000): -74
[    1.841460] mtd_read error while parsing (offset: 0x7980000): -74
[    1.847935] mtd_read error while parsing (offset: 0x79A0000): -74
[    1.854419] mtd_read error while parsing (offset: 0x79C0000): -74
[    1.860902] mtd_read error while parsing (offset: 0x79E0000): -74
[    1.867378] mtd_read error while parsing (offset: 0x7A00000): -74
[    1.873865] mtd_read error while parsing (offset: 0x7A20000): -74
[    1.880347] mtd_read error while parsing (offset: 0x7A40000): -74
[    1.886824] mtd_read error while parsing (offset: 0x7A60000): -74
[    1.893309] mtd_read error while parsing (offset: 0x7A80000): -74
[    1.899791] mtd_read error while parsing (offset: 0x7AA0000): -74
[    1.906267] mtd_read error while parsing (offset: 0x7AC0000): -74
[    1.912753] mtd_read error while parsing (offset: 0x7AE0000): -74
[    1.919231] mtd_read error while parsing (offset: 0x7B00000): -74
[    1.925714] mtd_read error while parsing (offset: 0x7B20000): -74
[    1.932198] mtd_read error while parsing (offset: 0x7B40000): -74
[    1.938673] mtd_read error while parsing (offset: 0x7B60000): -74
[    1.945162] mtd_read error while parsing (offset: 0x7B80000): -74
[    1.951643] mtd_read error while parsing (offset: 0x7BA0000): -74
[    1.958118] mtd_read error while parsing (offset: 0x7BC0000): -74
[    1.964603] mtd_read error while parsing (offset: 0x7BE0000): -74
[    1.971087] mtd_read error while parsing (offset: 0x7C00000): -74
[    1.977564] mtd_read error while parsing (offset: 0x7C20000): -74
[    1.984048] mtd_read error while parsing (offset: 0x7C40000): -74
[    1.990532] mtd_read error while parsing (offset: 0x7C60000): -74
[    1.997008] mtd_read error while parsing (offset: 0x7C80000): -74
[    2.003494] mtd_read error while parsing (offset: 0x7CA0000): -74
[    2.009976] mtd_read error while parsing (offset: 0x7CC0000): -74
[    2.016453] mtd_read error while parsing (offset: 0x7CE0000): -74
[    2.022940] mtd_read error while parsing (offset: 0x7D00000): -74
[    2.029414] mtd_read error while parsing (offset: 0x7D20000): -74
[    2.035890] mtd_read error while parsing (offset: 0x7D40000): -74
[    2.042374] mtd_read error while parsing (offset: 0x7D60000): -74
[    2.048848] mtd_read error while parsing (offset: 0x7D80000): -74
[    2.055333] mtd_read error while parsing (offset: 0x7DA0000): -74
[    2.061838] mtd_read error while parsing (offset: 0x7DC0000): -74
[    2.068323] mtd_read error while parsing (offset: 0x7DE0000): -74
[    2.074813] mtd_read error while parsing (offset: 0x7E00000): -74
[    2.081298] mtd_read error while parsing (offset: 0x7E20000): -74
[    2.087773] mtd_read error while parsing (offset: 0x7E40000): -74
[    2.094260] mtd_read error while parsing (offset: 0x7E60000): -74
[    2.100741] mtd_read error while parsing (offset: 0x7E80000): -74
[    2.107218] mtd_read error while parsing (offset: 0x7EA0000): -74
[    2.113704] mtd_read error while parsing (offset: 0x7EC0000): -74
[    2.120186] mtd_read error while parsing (offset: 0x7EE0000): -74
[    2.126665] mtd_read error while parsing (offset: 0x7F00000): -74
[    2.133147] mtd_read error while parsing (offset: 0x7F20000): -74
[    2.139625] mtd_read error while parsing (offset: 0x7F40000): -74
[    2.146099] mtd_read error while parsing (offset: 0x7F60000): -74
[    2.152585] mtd_read error while parsing (offset: 0x7F80000): -74
[    2.159059] mtd_read error while parsing (offset: 0x7FA0000): -74
[    2.166209] mtd_read error while parsing (offset: 0x7FE0000): -74
[    2.173320] 17 bcm47xxpart partitions found on MTD device brcmnand.0
[    2.179691] Creating 17 MTD partitions on "brcmnand.0":
[    2.184928] 0x000000000000-0x000000080000 : "boot"
[    2.190501] 0x000000080000-0x000000200000 : "nvram"
[    2.196046] 0x000000200000-0x000002600000 : "firmware"
[    2.202246] 0x00000020001c-0x000000600000 : "linux"
[    2.207829] 0x000000600000-0x000002600000 : "ubi"
[    2.213290] 0x000002600000-0x000002680000 : "board_data"
[    2.219286] 0x000002680000-0x0000026a0000 : "POT"
[    2.224721] 0x0000026a0000-0x000002780000 : "POT"
[    2.230178] 0x000002780000-0x0000027a0000 : "POT"
[    2.235564] 0x0000027a0000-0x000002e00000 : "POT"
[    2.241093] 0x000002e00000-0x000002e80000 : "ML"
[    2.246384] 0x000002e80000-0x000002f00000 : "ML"
[    2.251743] 0x000002f00000-0x000002f80000 : "ML"
[    2.257036] 0x000002f80000-0x000003000000 : "ML"
[    2.262425] 0x000003000000-0x000003080000 : "ML"
[    2.267740] 0x000003080000-0x000003100000 : "ML"
[    2.273108] 0x000003100000-0x000008000000 : "ML"
[    2.279048] libphy: Fixed MDIO Bus: probed
[    2.283255] bgmac: Broadcom 47xx GBit MAC driver loaded
[    2.288648] bcma: bus0: Found chip with id 53010, rev 0x00 and package 0x00
[    2.295703] bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x2A, class 0x0)
[    2.304344] bcma: bus0: Core 1 found: Chipcommon B (manuf 0x4BF, id 0x50B, rev 0x01, class 0x0)
[    2.313153] bcma: bus0: Core 2 found: DMA (manuf 0x4BF, id 0x502, rev 0x01, class 0x0)
[    2.321181] bcma: bus0: Core 3 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x05, class 0x0)
[    2.329636] bcma: bus0: Core 4 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x05, class 0x0)
[    2.338075] bcma: bus0: Core 5 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x05, class 0x0)
[    2.346533] bcma: bus0: Core 6 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x05, class 0x0)
[    2.354957] bcma: bus0: Core 7 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0)
[    2.363563] bcma: bus0: Core 8 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0)
[    2.372175] bcma: bus0: Core 9 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0)
[    2.380806] bcma: bus0: Core 10 found: ARM Cortex A9 core (ihost) (manuf 0x4BF, id 0x510, rev 0x01, class 0x0)
[    2.390898] bcma: bus0: Core 11 found: USB 2.0 (manuf 0x4BF, id 0x504, rev 0x01, class 0x0)
[    2.399332] bcma: bus0: Core 12 found: USB 3.0 (manuf 0x4BF, id 0x505, rev 0x01, class 0x0)
[    2.407797] bcma: bus0: Core 13 found: SDIO3 (manuf 0x4BF, id 0x503, rev 0x01, class 0x0)
[    2.416075] bcma: bus0: Core 14 found: I2S (manuf 0x4BF, id 0x834, rev 0x03, class 0x0)
[    2.424178] bcma: bus0: Core 15 found: ARM Cortex A9 JTAG (manuf 0x4BF, id 0x506, rev 0x01, class 0x0)
[    2.433586] bcma: bus0: Core 16 found: Denali DDR2/DDR3 memory controller (manuf 0x4BF, id 0x507, rev 0x01, class 0x0)
[    2.444385] bcma: bus0: Core 17 found: ROM (manuf 0x4BF, id 0x508, rev 0x01, class 0x0)
[    2.452486] bcma: bus0: Core 18 found: NAND flash controller (manuf 0x4BF, id 0x509, rev 0x01, class 0x0)
[    2.462172] bcma: bus0: Core 19 found: SPI flash controller (manuf 0x4BF, id 0x50A, rev 0x01, class 0x0)
[    2.471702] bcma: bus0: Flash type not supported
[    2.477323] bcm53xxspiflash spi32766.0: unrecognized JEDEC id bytes: ff, ff, ff
[    2.484714] bcm53xxspiflash: probe of spi32766.0 failed with error -2
[    2.524325] bgmac bcma0:3: Invalid MAC addr: 00:00:00:00:00:00
[    2.530214] bgmac bcma0:3: Using random MAC: 3e:01:a7:0f:e8:2f
[    2.536096] bgmac bcma0:3: Found PHY addr: 30 (NOREGS)
[    2.542074] bgmac bcma0:3: Support for Roboswitch not implemented
[    2.549690] b53_common: found switch: BCM53012, rev 5
[    2.555365] bgmac bcma0:4: Invalid MAC addr: 00:00:00:00:00:00
[    2.561260] bgmac bcma0:4: Using random MAC: 92:78:1c:7e:7d:42
[    2.567140] bgmac bcma0:4: Found PHY addr: 30 (NOREGS)
[    2.573128] bgmac bcma0:4: Support for Roboswitch not implemented
[    2.580183] bgmac bcma0:5: Found PHY addr: 30 (NOREGS)
[    2.586147] bgmac bcma0:5: Support for Roboswitch not implemented
[    2.593138] bgmac: Unsupported core_unit 3
[    2.597261] bgmac: probe of bcma0:6 failed with error -524
[    2.709449] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
[    2.715744] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
[    2.722659] pcie_iproc_bcma bcma0:7: link: UP
[    2.727253] PCI: bus0: Fast back to back transfers disabled
[    2.732862] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.741315] PCI: bus1: Fast back to back transfers disabled
[    2.746958] pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x085fffff]
[    2.753793] pci 0000:01:00.0: BAR 2: assigned [mem 0x08000000-0x083fffff 64bit]
[    2.761142] pci 0000:01:00.0: BAR 0: assigned [mem 0x08400000-0x08407fff 64bit]
[    2.768477] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.773466] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x085fffff]
[    2.889438] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
[    2.895733] pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
[    2.902646] pcie_iproc_bcma bcma0:8: link: UP
[    2.907227] PCI: bus0: Fast back to back transfers disabled
[    2.912834] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.921276] PCI: bus1: Fast back to back transfers disabled
[    2.926866] pci 0001:01:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.935051] pci 0001:02:00.0: unknown header type 12, ignoring device
[    2.942154] pci 0001:02:03.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    2.949595] pci 0001:02:03.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    2.957014] pci 0001:02:03.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    2.964449] pci 0001:02:03.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    2.971879] pci 0001:02:03.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    2.979304] pci 0001:02:03.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    2.986904] pci 0001:02:04.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    2.994343] pci 0001:02:04.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.001779] pci 0001:02:04.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.009203] pci 0001:02:04.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.016636] pci 0001:02:04.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.024073] pci 0001:02:04.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.031667] pci 0001:02:05.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.039094] pci 0001:02:05.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.046532] pci 0001:02:05.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.053967] pci 0001:02:05.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.061408] pci 0001:02:05.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.068834] pci 0001:02:05.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.076448] pci 0001:02:06.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.083891] pci 0001:02:06.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.091326] pci 0001:02:06.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.098750] pci 0001:02:06.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.106185] pci 0001:02:06.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.113615] pci 0001:02:06.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.121218] pci 0001:02:07.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.128641] pci 0001:02:07.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.136080] pci 0001:02:07.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.143514] pci 0001:02:07.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.150949] pci 0001:02:07.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.158372] pci 0001:02:07.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.165985] pci 0001:02:08.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.173428] pci 0001:02:08.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.180853] pci 0001:02:08.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.188271] pci 0001:02:08.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.195704] pci 0001:02:08.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.203136] pci 0001:02:08.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.210738] pci 0001:02:09.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.218160] pci 0001:02:09.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.225599] pci 0001:02:09.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.233026] pci 0001:02:09.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.240458] pci 0001:02:09.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.247884] pci 0001:02:09.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.255505] pci 0001:02:0a.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.262943] pci 0001:02:0a.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.270374] pci 0001:02:0a.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.277800] pci 0001:02:0a.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.285237] pci 0001:02:0a.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.292666] pci 0001:02:0a.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.300267] pci 0001:02:0b.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.307690] pci 0001:02:0b.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.315129] pci 0001:02:0b.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.322563] pci 0001:02:0b.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.329995] pci 0001:02:0b.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.337413] pci 0001:02:0b.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.345024] pci 0001:02:0c.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.352462] pci 0001:02:0c.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.359895] pci 0001:02:0c.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.367320] pci 0001:02:0c.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.374754] pci 0001:02:0c.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.382186] pci 0001:02:0c.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.389794] pci 0001:02:0d.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.397219] pci 0001:02:0d.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.404657] pci 0001:02:0d.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.412090] pci 0001:02:0d.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.419517] pci 0001:02:0d.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.426943] pci 0001:02:0d.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.434541] pci 0001:02:0e.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.441980] pci 0001:02:0e.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.449406] pci 0001:02:0e.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.456832] pci 0001:02:0e.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.464265] pci 0001:02:0e.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.471698] pci 0001:02:0e.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.479302] pci 0001:02:0f.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.486739] pci 0001:02:0f.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.494173] pci 0001:02:0f.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.501605] pci 0001:02:0f.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.509029] pci 0001:02:0f.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.516462] pci 0001:02:0f.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.524069] pci 0001:02:10.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.531509] pci 0001:02:10.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.538929] pci 0001:02:10.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.546370] pci 0001:02:10.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.553804] pci 0001:02:10.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.561235] pci 0001:02:10.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.568835] pci 0001:02:11.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.576279] pci 0001:02:11.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.583713] pci 0001:02:11.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.591145] pci 0001:02:11.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.598568] pci 0001:02:11.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.606000] pci 0001:02:11.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.613602] pci 0001:02:12.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.621040] pci 0001:02:12.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.628466] pci 0001:02:12.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.635900] pci 0001:02:12.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.643332] pci 0001:02:12.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.650764] pci 0001:02:12.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.658363] pci 0001:02:13.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.665805] pci 0001:02:13.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.673243] pci 0001:02:13.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.680671] pci 0001:02:13.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.688088] pci 0001:02:13.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.695522] pci 0001:02:13.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.703128] pci 0001:02:14.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.710567] pci 0001:02:14.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.717988] pci 0001:02:14.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.725422] pci 0001:02:14.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.732852] pci 0001:02:14.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.740285] pci 0001:02:14.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.747883] pci 0001:02:15.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.755327] pci 0001:02:15.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.762761] pci 0001:02:15.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.770191] pci 0001:02:15.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.777610] pci 0001:02:15.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.785041] pci 0001:02:15.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.792650] pci 0001:02:16.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.800091] pci 0001:02:16.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.807517] pci 0001:02:16.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.814953] pci 0001:02:16.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.822382] pci 0001:02:16.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.829814] pci 0001:02:16.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.837419] pci 0001:02:17.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.844857] pci 0001:02:17.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.852291] pci 0001:02:17.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.859721] pci 0001:02:17.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.867148] pci 0001:02:17.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.874580] pci 0001:02:17.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.882189] pci 0001:02:18.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.889627] pci 0001:02:18.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.897046] pci 0001:02:18.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.904482] pci 0001:02:18.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.911912] pci 0001:02:18.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.919343] pci 0001:02:18.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.926936] pci 0001:02:19.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.934379] pci 0001:02:19.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.941814] pci 0001:02:19.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.949235] pci 0001:02:19.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    3.956668] pci 0001:02:19.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    3.964100] pci 0001:02:19.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    3.971717] pci 0001:02:1a.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    3.979142] pci 0001:02:1a.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    3.986582] pci 0001:02:1a.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    3.994017] pci 0001:02:1a.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    4.001450] pci 0001:02:1a.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    4.008874] pci 0001:02:1a.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    4.016481] pci 0001:02:1b.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    4.023924] pci 0001:02:1b.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    4.031358] pci 0001:02:1b.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    4.038781] pci 0001:02:1b.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    4.046216] pci 0001:02:1b.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    4.053647] pci 0001:02:1b.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    4.061273] pci 0001:02:1c.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    4.068698] pci 0001:02:1c.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    4.076138] pci 0001:02:1c.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    4.083573] pci 0001:02:1c.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    4.091003] pci 0001:02:1c.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    4.098421] pci 0001:02:1c.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    4.106037] pci 0001:02:1d.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    4.113478] pci 0001:02:1d.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    4.120912] pci 0001:02:1d.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    4.128337] pci 0001:02:1d.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    4.135770] pci 0001:02:1d.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    4.143202] pci 0001:02:1d.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    4.150820] pci 0001:02:1e.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    4.158244] pci 0001:02:1e.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    4.165684] pci 0001:02:1e.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    4.173120] pci 0001:02:1e.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    4.180550] pci 0001:02:1e.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    4.187968] pci 0001:02:1e.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    4.195592] pci 0001:02:1f.0: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
[    4.203034] pci 0001:02:1f.0: [Firmware Bug]: reg 0x14: invalid BAR (can't size)
[    4.210467] pci 0001:02:1f.0: [Firmware Bug]: reg 0x18: invalid BAR (can't size)
[    4.217893] pci 0001:02:1f.0: [Firmware Bug]: reg 0x1c: invalid BAR (can't size)
[    4.225325] pci 0001:02:1f.0: [Firmware Bug]: reg 0x20: invalid BAR (can't size)
[    4.232758] pci 0001:02:1f.0: [Firmware Bug]: reg 0x24: invalid BAR (can't size)
[    4.240541] PCI: bus2: Fast back to back transfers disabled
[    4.246133] pci 0001:02:01.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    4.254178] pci 0001:02:02.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    4.262764] PCI: bus3: Fast back to back transfers disabled
[    4.268888] PCI: bus4: Fast back to back transfers disabled
[    4.274895] pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x40ffffff]
[    4.281720] pci 0001:00:00.0: BAR 9: assigned [mem 0x41000000-0x411fffff 64bit pref]
[    4.289564] pci 0001:01:00.0: BAR 8: assigned [mem 0x40000000-0x40dfffff]
[    4.296370] pci 0001:01:00.0: BAR 9: assigned [mem 0x41000000-0x411fffff 64bit pref]
[    4.304145] pci 0001:01:00.0: BAR 0: assigned [mem 0x40e00000-0x40e03fff]
[    4.310959] pci 0001:01:00.0: BAR 7: no space for [io  size 0x1000]
[    4.317241] pci 0001:01:00.0: BAR 7: failed to assign [io  size 0x1000]
[    4.323889] pci 0001:01:00.0: BAR 7: no space for [io  size 0x1000]
[    4.330182] pci 0001:01:00.0: BAR 7: failed to assign [io  size 0x1000]
[    4.336890] pci 0001:02:01.0: BAR 8: assigned [mem 0x40000000-0x407fffff]
[    4.343704] pci 0001:02:02.0: BAR 8: assigned [mem 0x40800000-0x40dfffff]
[    4.350516] pci 0001:02:01.0: BAR 9: assigned [mem 0x41000000-0x411fffff 64bit pref]
[    4.358281] pci 0001:02:01.0: BAR 7: no space for [io  size 0x1000]
[    4.364572] pci 0001:02:01.0: BAR 7: failed to assign [io  size 0x1000]
[    4.371216] pci 0001:02:01.0: BAR 7: no space for [io  size 0x1000]
[    4.377499] pci 0001:02:01.0: BAR 7: failed to assign [io  size 0x1000]
[    4.384144] pci 0001:03:00.0: BAR 2: assigned [mem 0x40000000-0x403fffff 64bit]
[    4.391494] pci 0001:03:00.0: BAR 0: assigned [mem 0x40400000-0x40407fff 64bit]
[    4.398838] pci 0001:02:01.0: PCI bridge to [bus 03]
[    4.403824] pci 0001:02:01.0:   bridge window [mem 0x40000000-0x407fffff]
[    4.410634] pci 0001:02:01.0:   bridge window [mem 0x41000000-0x411fffff 64bit pref]
[    4.418407] pci 0001:04:00.0: BAR 2: assigned [mem 0x40800000-0x40bfffff 64bit]
[    4.425761] pci 0001:04:00.0: BAR 0: assigned [mem 0x40c00000-0x40c07fff 64bit]
[    4.433113] pci 0001:02:02.0: PCI bridge to [bus 04]
[    4.438092] pci 0001:02:02.0:   bridge window [mem 0x40800000-0x40dfffff]
[    4.444920] pci 0001:01:00.0: PCI bridge to [bus 02-04]
[    4.450174] pci 0001:01:00.0:   bridge window [mem 0x40000000-0x40dfffff]
[    4.456977] pci 0001:01:00.0:   bridge window [mem 0x41000000-0x411fffff 64bit pref]
[    4.464752] pci 0001:00:00.0: PCI bridge to [bus 01-04]
[    4.469995] pci 0001:00:00.0:   bridge window [mem 0x40000000-0x40ffffff]
[    4.476803] pci 0001:00:00.0:   bridge window [mem 0x41000000-0x411fffff 64bit pref]
[    4.589461] pcie_iproc_bcma bcma0:9: PCI host bridge to bus 0002:00
[    4.595756] pci_bus 0002:00: root bus resource [mem 0x48000000-0x4fffffff]
[    4.602664] pcie_iproc_bcma bcma0:9: PHY or data link is INACTIVE!
[    4.608858] pcie_iproc_bcma bcma0:9: no PCIe EP device detected
[    4.614867] pcie_iproc_bcma bcma0:9: PCIe controller setup failed
[    4.621987] bcm47xx-wdt bcm47xx-wdt.0: BCM47xx Watchdog Timer enabled (30 seconds, Software Timer)
[    4.631008] bcma: bus0: Bus registered
[    4.635741] NET: Registered protocol family 10
[    4.641193] NET: Registered protocol family 17
[    4.645687] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[    4.658364] 8021q: 802.1Q VLAN Support v1.8
[    4.662644] Registering SWP/SWPB emulation handler
[    4.669580] UBI: auto-attach mtd4
[    4.672740] ubi0: attaching mtd4
[    4.770231] ubi0: scanning is finished
[    4.799366] ubi0: volume 1 ("rootfs_data") re-sized from 9 to 207 LEBs
[    4.806359] ubi0: attached mtd4 (name "ubi", size 32 MiB)
[    4.811803] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    4.818694] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    4.825511] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    4.832497] ubi0: good PEBs: 256, bad PEBs: 0, corrupted PEBs: 0
[    4.838513] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
[    4.845763] ubi0: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 1099897776
[    4.854927] ubi0: available PEBs: 0, total reserved PEBs: 256, PEBs reserved for bad PEB handling: 20
[    4.864202] ubi0: background thread "ubi_bgt0d" started, PID 406
[    4.871189] block ubiblock0_0: created from ubi0:0(rootfs)
[    4.876716] ubiblock: device ubiblock0_0 (rootfs) set to be root filesystem
[    4.898368] VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
[    4.905830] Freeing unused kernel memory: 216K (c0444000 - c047a000)
[    5.198026] External imprecise Data abort at addr=0xb6ff22c1, fsr=0x1406 ignored.
[    5.362814] init: Console is alive
[    5.366399] init: - watchdog -

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-04  6:13 4.4 BCM5301X ARM regression "External imprecise Data abort" Rafał Miłecki
@ 2016-04-04 21:08 ` Scott Branden
  2016-04-04 21:23   ` Hauke Mehrtens
       [not found] ` <CAC3K-4pHw1YQbcD2pp3eaJp0o5OSO+Ft0B_0o1y6uRCJGxGhaw@mail.gmail.com>
  1 sibling, 1 reply; 13+ messages in thread
From: Scott Branden @ 2016-04-04 21:08 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Rafal,

I do not work on BCM5301x SoCs but perhaps Jon Mason can comment.
A few comments inline as well.

On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
> Hi guys,
>
> I got regression reports from Netgear R8000 (BCM4709A0) users and did
> some testing & regression tracking with Aditya.
>
> It happens that Linux 4.4 doesn't boot due to the following commits:
> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel startup")
> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault handler")
>
> In kernel 4.3 we got that abort workaround which was resulting in:
> [    5.007128] Freeing unused kernel memory: 212K (c0435000 - c046a000)
> [    5.694632] init: Console is alive
> [    5.698169] init: - watchdog -
> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406 ignored.
> As you can see, this abort was happening soon after freeing unused
> memory and ignoring it *once* did the trick. It was never appearing
> again.
>
> With 4.4 similar (or the same?) abort happens earlier (during PCI host
> driver init) and doesn't get ignored:
> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    2.483451] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x085fffff]
> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
> [    2.605744] pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
> [    2.617241] PCI: bus0: Fast back to back transfers disabled
> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
> 00-00]), reconfiguring
> [    2.631297] PCI: bus1: Fast back to back transfers disabled
> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
> 00-00]), reconfiguring
> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at 0x00000000
> (see 4.4.txt for the backtrace)
>
> At first I was hoping that we simply need to re-add the removed
> workaround. I tried it but it appeared that one abort is immediately
> followed by another:
> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
> 00-00]), reconfiguring
> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406 ignored.
> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at 0x00000000
>
> So it seems that commits bbeb920 and 9254970 broke something in PCI
> host initialization (or maybe just exposed another bug?). Instead of
> getting an abort once and late we are getting now many of them and a
> bit earlier.
We do not observe such issues in Cygnus and other SoCs that use this 
PCIe driver (we do not use bcma either - I do not know if that is related).
>
> Reverting all three commits from the top of 4.4.6 gives me back a
> working & booting kernel.
>
> Do you have any idea how to fix this regression (and hopefully
> original problem as well)?
I think the proper fix is to correct the issues in the bootloader.  It 
was my understanding from Jon Mason that this is the root of the 
original problem.
>

Regards,
Scott

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-04 21:08 ` Scott Branden
@ 2016-04-04 21:23   ` Hauke Mehrtens
  2016-04-08  6:45     ` Rafał Miłecki
  0 siblings, 1 reply; 13+ messages in thread
From: Hauke Mehrtens @ 2016-04-04 21:23 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Rafal,

On 04/04/2016 11:08 PM, Scott Branden wrote:
> Hi Rafal,
> 
> I do not work on BCM5301x SoCs but perhaps Jon Mason can comment.
> A few comments inline as well.
> 
> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>> Hi guys,
>>
>> I got regression reports from Netgear R8000 (BCM4709A0) users and did
>> some testing & regression tracking with Aditya.
>>
>> It happens that Linux 4.4 doesn't boot due to the following commits:
>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>> startup")
>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>> handler")
>>
>> In kernel 4.3 we got that abort workaround which was resulting in:
>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 - c046a000)
>> [    5.694632] init: Console is alive
>> [    5.698169] init: - watchdog -
>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
>> ignored.
>> As you can see, this abort was happening soon after freeing unused
>> memory and ignoring it *once* did the trick. It was never appearing
>> again.

I assume it only can throw one of these and if it is deactivated it will
ignore the next one or overwrite it. So it could be that more than one
is thrown here.

>> With 4.4 similar (or the same?) abort happens earlier (during PCI host
>> driver init) and doesn't get ignored:
>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>> 0x08000000-0x085fffff]
>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>> 0x40000000-0x47ffffff]
>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
>> 00-00]), reconfiguring
>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
>> 00-00]), reconfiguring
>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
>> 0x00000000
>> (see 4.4.txt for the backtrace)
>>
>> At first I was hoping that we simply need to re-add the removed
>> workaround. I tried it but it appeared that one abort is immediately
>> followed by another:
>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
>> 00-00]), reconfiguring
>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
>> ignored.
>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
>> 0x00000000
>>
>> So it seems that commits bbeb920 and 9254970 broke something in PCI
>> host initialization (or maybe just exposed another bug?). Instead of
>> getting an abort once and late we are getting now many of them and a
>> bit earlier.

These commits mad the kernel earlier "listen" to such errors, so that
they will be shown at the time they occur and not sometime later.

> We do not observe such issues in Cygnus and other SoCs that use this
> PCIe driver (we do not use bcma either - I do not know if that is related).
>>
>> Reverting all three commits from the top of 4.4.6 gives me back a
>> working & booting kernel.
>>
>> Do you have any idea how to fix this regression (and hopefully
>> original problem as well)?
> I think the proper fix is to correct the issues in the bootloader.  It
> was my understanding from Jon Mason that this is the root of the
> original problem.
>>

I think this is a new problem.

In the Broadcom SDK was a comment saying that probably the bootloader is
broken and that causes this fault which was worked around in the
mainline kernel with the fault handler in the brcm code.

When I added the code Arnd asked me if this SoC has a PCIe controller
because he saw such a problem on an other SoC with a PCIe controller.
https://www.spinics.net/lists/arm-kernel/msg298112.html

As this is now happening in the PCIe code I assume that this has
something to do with PCIe. ;-)

Have you tried to deactivate PCIe support in Device tree and see what
happens? Have you tried to load the PCIe controller as a module later on
so if that makes a difference?

Hauke

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
       [not found] ` <CAC3K-4pHw1YQbcD2pp3eaJp0o5OSO+Ft0B_0o1y6uRCJGxGhaw@mail.gmail.com>
@ 2016-04-07 18:48   ` Rafał Miłecki
  0 siblings, 0 replies; 13+ messages in thread
From: Rafał Miłecki @ 2016-04-07 18:48 UTC (permalink / raw)
  To: linux-arm-kernel

On 4 April 2016 at 23:10, Jon Mason <jon.mason@broadcom.com> wrote:
> On Mon, Apr 4, 2016 at 2:13 AM, Rafa? Mi?ecki <zajec5@gmail.com> wrote:
>> I got regression reports from Netgear R8000 (BCM4709A0) users and did
>> some testing & regression tracking with Aditya.
>>
>> It happens that Linux 4.4 doesn't boot due to the following commits:
>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>> startup")
>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault handler")
>>
>> In kernel 4.3 we got that abort workaround which was resulting in:
>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 - c046a000)
>> [    5.694632] init: Console is alive
>> [    5.698169] init: - watchdog -
>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
>> ignored.
>> As you can see, this abort was happening soon after freeing unused
>> memory and ignoring it *once* did the trick. It was never appearing
>> again.
>>
>> With 4.4 similar (or the same?) abort happens earlier (during PCI host
>> driver init) and doesn't get ignored:
>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>> 0x08000000-0x085fffff]
>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>> 0x40000000-0x47ffffff]
>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
>> 00-00]), reconfiguring
>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
>> 00-00]), reconfiguring
>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
>> 0x00000000
>> (see 4.4.txt for the backtrace)
>>
>> At first I was hoping that we simply need to re-add the removed
>> workaround. I tried it but it appeared that one abort is immediately
>> followed by another:
>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
>> 00-00]), reconfiguring
>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
>> ignored.
>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
>> 0x00000000
>>
>> So it seems that commits bbeb920 and 9254970 broke something in PCI
>> host initialization (or maybe just exposed another bug?). Instead of
>> getting an abort once and late we are getting now many of them and a
>> bit earlier.
>
> Do you know if the device causing it is a PCI multifunction device?

I don't know. What gets discovered on the first controller are two
devices: 14e4:d612 (kind of bridge I believe) and 14e4:4365 (wireless
with BCM4366).


> Can you try regressing the PCI host driver and isolate that?

What do you mean by regressing PCI host driver?

-- 
Rafa?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-04 21:23   ` Hauke Mehrtens
@ 2016-04-08  6:45     ` Rafał Miłecki
  2016-04-08  8:43       ` Lucas Stach
  0 siblings, 1 reply; 13+ messages in thread
From: Rafał Miłecki @ 2016-04-08  6:45 UTC (permalink / raw)
  To: linux-arm-kernel

On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
> On 04/04/2016 11:08 PM, Scott Branden wrote:
>> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>>> I got regression reports from Netgear R8000 (BCM4709A0) users and did
>>> some testing & regression tracking with Aditya.
>>>
>>> It happens that Linux 4.4 doesn't boot due to the following commits:
>>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>>> startup")
>>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>>> handler")
>>>
>>> In kernel 4.3 we got that abort workaround which was resulting in:
>>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 - c046a000)
>>> [    5.694632] init: Console is alive
>>> [    5.698169] init: - watchdog -
>>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
>>> ignored.
>>> As you can see, this abort was happening soon after freeing unused
>>> memory and ignoring it *once* did the trick. It was never appearing
>>> again.
>
> I assume it only can throw one of these and if it is deactivated it will
> ignore the next one or overwrite it. So it could be that more than one
> is thrown here.
>
>>> With 4.4 similar (or the same?) abort happens earlier (during PCI host
>>> driver init) and doesn't get ignored:
>>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>>> 0x08000000-0x085fffff]
>>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>>> 0x40000000-0x47ffffff]
>>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
>>> 00-00]), reconfiguring
>>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
>>> 00-00]), reconfiguring
>>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
>>> 0x00000000
>>> (see 4.4.txt for the backtrace)
>>>
>>> At first I was hoping that we simply need to re-add the removed
>>> workaround. I tried it but it appeared that one abort is immediately
>>> followed by another:
>>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
>>> 00-00]), reconfiguring
>>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
>>> ignored.
>>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
>>> 0x00000000
>>>
>>> So it seems that commits bbeb920 and 9254970 broke something in PCI
>>> host initialization (or maybe just exposed another bug?). Instead of
>>> getting an abort once and late we are getting now many of them and a
>>> bit earlier.
>
> These commits mad the kernel earlier "listen" to such errors, so that
> they will be shown at the time they occur and not sometime later.

So AFAIU with kernel 4.3:
1) Aborts were masked (silent) until "Freeing unused kernel memory"
2) There was one (silent) abort caused by a bootloader
3) There were likely multiple aborts (silent) during early PCI init
4) After unmasking we got only a single abort reported and we were ignoring it

With kernel 4.4:
1) All aborts are reported immediately
2) Abort caused by a bootloader gets ignored by ARM code:
"Hit pending asynchronous external abort (FSR=0x00001c06) during first unmask"
thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
3) There are still multiple aborts during PCI init (reported immediately now)
4) To work as before (in 4.3) we should ignore all aborts, not only the 1st one

Of course proposed solution is an ugly workaround, we should have no
aborts reported in the first place.


>> We do not observe such issues in Cygnus and other SoCs that use this
>> PCIe driver (we do not use bcma either - I do not know if that is related).
>>>
>>> Reverting all three commits from the top of 4.4.6 gives me back a
>>> working & booting kernel.
>>>
>>> Do you have any idea how to fix this regression (and hopefully
>>> original problem as well)?
>> I think the proper fix is to correct the issues in the bootloader.  It
>> was my understanding from Jon Mason that this is the root of the
>> original problem.
>>>
>
> I think this is a new problem.
>
> In the Broadcom SDK was a comment saying that probably the bootloader is
> broken and that causes this fault which was worked around in the
> mainline kernel with the fault handler in the brcm code.

There is some issue with bootloader indeed, but with kernel 4.4 we
seem to have it handled by ARM arch code. There is now this nice
workaround I see when booting 4.4:
[    0.000000] Hit pending asynchronous external abort
(FSR=0x00001c06) during first unmask, this is most likely caused by a
firmware/bootloader bug.

It seems we were lucky so far (in 4.3 and older) thanks for all aborts
being squashed into a single one. We meant to ignore bootloader caused
abort but we were also ignoring many more aborts triggered by iproc.


> When I added the code Arnd asked me if this SoC has a PCIe controller
> because he saw such a problem on an other SoC with a PCIe controller.
> https://www.spinics.net/lists/arm-kernel/msg298112.html
>
> As this is now happening in the PCIe code I assume that this has
> something to do with PCIe. ;-)
>
> Have you tried to deactivate PCIe support in Device tree and see what
> happens? Have you tried to load the PCIe controller as a module later on
> so if that makes a difference?

So this definitely looks like something PCIe related. I modified
OpenWrt config to build iproc as module and load it late.

As said earlier I got this early on-unmask abort handled nicely by ARM
arch code:
[    0.000000] Hit pending asynchronous external abort
(FSR=0x00001c06) during first unmask, this is most likely caused by a
firmware/bootloader bug.

Then many modules load nicely, I'm seeing:
[    2.959868] Freeing unused kernel memory: 212K (c0443000 - c0478000)
without any abort at this point.

And it goes cleanly farther until loading pcie-iproc-bcma.ko. At some
point PCIe initialization starts triggering aborts:
[   10.547032] pci 0001:01:00.0: bridge configuration invalid ([bus
00-00]), reconfiguring
[   10.555199] External imprecise Data abort at addr=0x1c6e00f,
fsr=0x1406 ignored.
[   10.562635] Unhandled fault: imprecise external abort (0x1406) at 0x01c6e00f
(backtrace here, see 4.4-iproc-module.txt)

With kernel 4.3 the same place of PCIe init looked like this:
[    2.926866] pci 0001:01:00.0: bridge configuration invalid ([bus
00-00]), reconfiguring
[    2.935051] pci 0001:02:00.0: unknown header type 12, ignoring device
[    2.942154] pci 0001:02:03.0: [Firmware Bug]: reg 0x10: invalid BAR
(can't size)
[    2.949595] pci 0001:02:03.0: [Firmware Bug]: reg 0x14: invalid BAR
(can't size)
[    2.957014] pci 0001:02:03.0: [Firmware Bug]: reg 0x18: invalid BAR
(can't size)
(...)


Arnd: did you find any solution for that aborts triggered during PCIe init?

-- 
Rafa?
-------------- next part --------------
CFE for Foxconn Router R8000 version: v1.0.8
Build Date: Fri May 30 15:03:06 CST 2014 
Init Arena
Init Devs.
Boot up from NAND flash...
Bootcode Boot partition size = 524288(0x80000)
DDR Clock: 800 MHz
Info: DDR frequency set from clkfreq=1000,*800*
et2: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 7.14.43.2 (r474543)
CPU type 0x0: 1000MHz
Tot mem: 262144 KBytes

Device eth0:  hwaddr E8-FC-AF-FD-EE-2E, ipaddr 192.168.1.1, mask 255.255.255.0
        gateway not set, nameserver not set
Checking crc...Loader:raw Filesys:raw Dev:nflash0.os File: Options:(null)
Loading: .. 1513840 bytes read
Entry at 0x00008000
Closing network.
Starting program at 0x00008000
Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.4.6 (zajec at linux-samsung.lan) (gcc version 5.3.0 (OpenWrt GCC 5.3.0 r48934) ) #9 SMP Thu Apr 7 21:02:01 UTC 2016
[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: Netgear R8000 (BCM4709)
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] Hit pending asynchronous external abort (FSR=0x00001c06) during first unmask, this is most likely caused by a firmware/bootloader bug.
[    0.000000] PERCPU: Embedded 11 pages/cpu @c6dcf000 s12928 r8192 d23936 u45056
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65280
[    0.000000] Kernel command line: console=ttyS0,115200 earlyprintk
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 254856K/262144K available (3150K kernel code, 101K rwdata, 1180K rodata, 212K init, 280K bss, 7288K reserved, 0K cma-reserved, 131072K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc8800000 - 0xff800000   ( 880 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0442e54   (4332 kB)
[    0.000000]       .init : 0xc0443000 - 0xc0478000   ( 212 kB)
[    0.000000]       .data : 0xc0478000 - 0xc049142c   ( 102 kB)
[    0.000000]        .bss : 0xc049142c - 0xc04d75ec   ( 281 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] L2C: DT/platform modifies aux control register: 0x0a130000 -> 0x0a530000
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 1 lines
[    0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[    0.000000] L2C-310 cache controller enabled, 16 ways, 256 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x7e530001
[    0.000011] sched_clock: 64 bits at 500MHz, resolution 2ns, wraps every 4398046511103ns
[    0.008132] clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0xe6a171a037, max_idle_ns: 881590485102 ns
[    0.019400] Calibrating delay loop... 1987.37 BogoMIPS (lpj=9936896)
[    0.082231] pid_max: default: 32768 minimum: 301
[    0.087003] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.093731] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.101266] CPU: Testing write buffer coherency: ok
[    0.106451] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.112288] Setting up static identity map for 0x82a0 - 0x82d4
[    0.179380] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.179446] Brought up 2 CPUs
[    0.188264] SMP: Total of 2 processors activated (3981.31 BogoMIPS).
[    0.194726] CPU: WARNING: CPU(s) started in wrong/inconsistent modes (primary CPU mode 0x13)
[    0.203273] CPU: This may indicate a broken bootloader or firmware.
[    0.211132] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.221160] pinctrl core: initialized pinctrl subsystem
[    0.226827] NET: Registered protocol family 16
[    0.231960] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.271185] clocksource: Switched to clocksource arm_global_timer
[    0.278220] NET: Registered protocol family 2
[    0.283143] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.290287] TCP bind hash table entries: 1024 (order: 1, 8192 bytes)
[    0.296754] TCP: Hash tables configured (established 1024 bind 1024)
[    0.303282] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.309231] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.315792] NET: Registered protocol family 1
[    0.321086] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.331696] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.337641] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.348827] bounce: pool size: 64 pages
[    0.352801] io scheduler noop registered
[    0.356820] io scheduler deadline registered (default)
[    0.362405] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.369450] console [ttyS0] disabled
[    0.373155] 18000300.serial: ttyS0 at MMIO 0x18000300 (irq = 18, base_baud = 7812500) is a 16550
[    0.382083] console [ttyS0] enabled
[    0.382083] console [ttyS0] enabled
[    0.389159] bootconsole [earlycon0] disabled
[    0.389159] bootconsole [earlycon0] disabled
[    0.398924] nand: Could not find valid ONFI parameter page; aborting
[    0.405389] nand: device found, Manufacturer ID: 0x01, Chip ID: 0xf1
[    0.411781] nand: AMD/Spansion NAND 128MiB 3,3V 8-bit
[    0.416850] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    0.424476] iproc_nand 18028000.nand: detected 128MiB total, 128KiB blocks, 2KiB pages, 16B OOB, 8-bit, BCH-8
[    0.434435] Scanning device for bad blocks
[    1.065063] random: nonblocking pool is initialized
[    1.664239] mtd_read error while parsing (offset: 0x7580000): -74
[    1.670727] mtd_read error while parsing (offset: 0x75A0000): -74
[    1.677200] mtd_read error while parsing (offset: 0x75C0000): -74
[    1.683685] mtd_read error while parsing (offset: 0x75E0000): -74
[    1.690169] mtd_read error while parsing (offset: 0x7600000): -74
[    1.696644] mtd_read error while parsing (offset: 0x7620000): -74
[    1.703131] mtd_read error while parsing (offset: 0x7640000): -74
[    1.709614] mtd_read error while parsing (offset: 0x7660000): -74
[    1.716089] mtd_read error while parsing (offset: 0x7680000): -74
[    1.722574] mtd_read error while parsing (offset: 0x76A0000): -74
[    1.729050] mtd_read error while parsing (offset: 0x76C0000): -74
[    1.735534] mtd_read error while parsing (offset: 0x76E0000): -74
[    1.742020] mtd_read error while parsing (offset: 0x7700000): -74
[    1.748495] mtd_read error while parsing (offset: 0x7720000): -74
[    1.754980] mtd_read error while parsing (offset: 0x7740000): -74
[    1.761464] mtd_read error while parsing (offset: 0x7760000): -74
[    1.767938] mtd_read error while parsing (offset: 0x7780000): -74
[    1.774424] mtd_read error while parsing (offset: 0x77A0000): -74
[    1.780907] mtd_read error while parsing (offset: 0x77C0000): -74
[    1.787383] mtd_read error while parsing (offset: 0x77E0000): -74
[    1.793875] mtd_read error while parsing (offset: 0x7800000): -74
[    1.800361] mtd_read error while parsing (offset: 0x7820000): -74
[    1.806836] mtd_read error while parsing (offset: 0x7840000): -74
[    1.813323] mtd_read error while parsing (offset: 0x7860000): -74
[    1.819805] mtd_read error while parsing (offset: 0x7880000): -74
[    1.826281] mtd_read error while parsing (offset: 0x78A0000): -74
[    1.832767] mtd_read error while parsing (offset: 0x78C0000): -74
[    1.839241] mtd_read error while parsing (offset: 0x78E0000): -74
[    1.845728] mtd_read error while parsing (offset: 0x7900000): -74
[    1.852212] mtd_read error while parsing (offset: 0x7920000): -74
[    1.858686] mtd_read error while parsing (offset: 0x7940000): -74
[    1.865173] mtd_read error while parsing (offset: 0x7960000): -74
[    1.871656] mtd_read error while parsing (offset: 0x7980000): -74
[    1.878131] mtd_read error while parsing (offset: 0x79A0000): -74
[    1.884616] mtd_read error while parsing (offset: 0x79C0000): -74
[    1.891100] mtd_read error while parsing (offset: 0x79E0000): -74
[    1.897579] mtd_read error while parsing (offset: 0x7A00000): -74
[    1.904062] mtd_read error while parsing (offset: 0x7A20000): -74
[    1.910545] mtd_read error while parsing (offset: 0x7A40000): -74
[    1.917021] mtd_read error while parsing (offset: 0x7A60000): -74
[    1.923509] mtd_read error while parsing (offset: 0x7A80000): -74
[    1.929989] mtd_read error while parsing (offset: 0x7AA0000): -74
[    1.936465] mtd_read error while parsing (offset: 0x7AC0000): -74
[    1.942952] mtd_read error while parsing (offset: 0x7AE0000): -74
[    1.949434] mtd_read error while parsing (offset: 0x7B00000): -74
[    1.955910] mtd_read error while parsing (offset: 0x7B20000): -74
[    1.962396] mtd_read error while parsing (offset: 0x7B40000): -74
[    1.968870] mtd_read error while parsing (offset: 0x7B60000): -74
[    1.975356] mtd_read error while parsing (offset: 0x7B80000): -74
[    1.981841] mtd_read error while parsing (offset: 0x7BA0000): -74
[    1.988314] mtd_read error while parsing (offset: 0x7BC0000): -74
[    1.994802] mtd_read error while parsing (offset: 0x7BE0000): -74
[    2.001286] mtd_read error while parsing (offset: 0x7C00000): -74
[    2.007760] mtd_read error while parsing (offset: 0x7C20000): -74
[    2.014246] mtd_read error while parsing (offset: 0x7C40000): -74
[    2.020728] mtd_read error while parsing (offset: 0x7C60000): -74
[    2.027204] mtd_read error while parsing (offset: 0x7C80000): -74
[    2.033690] mtd_read error while parsing (offset: 0x7CA0000): -74
[    2.040173] mtd_read error while parsing (offset: 0x7CC0000): -74
[    2.046649] mtd_read error while parsing (offset: 0x7CE0000): -74
[    2.053138] mtd_read error while parsing (offset: 0x7D00000): -74
[    2.059670] mtd_read error while parsing (offset: 0x7D20000): -74
[    2.066150] mtd_read error while parsing (offset: 0x7D40000): -74
[    2.072640] mtd_read error while parsing (offset: 0x7D60000): -74
[    2.079116] mtd_read error while parsing (offset: 0x7D80000): -74
[    2.085603] mtd_read error while parsing (offset: 0x7DA0000): -74
[    2.092085] mtd_read error while parsing (offset: 0x7DC0000): -74
[    2.098559] mtd_read error while parsing (offset: 0x7DE0000): -74
[    2.105049] mtd_read error while parsing (offset: 0x7E00000): -74
[    2.111540] mtd_read error while parsing (offset: 0x7E20000): -74
[    2.118013] mtd_read error while parsing (offset: 0x7E40000): -74
[    2.124500] mtd_read error while parsing (offset: 0x7E60000): -74
[    2.130983] mtd_read error while parsing (offset: 0x7E80000): -74
[    2.137458] mtd_read error while parsing (offset: 0x7EA0000): -74
[    2.143944] mtd_read error while parsing (offset: 0x7EC0000): -74
[    2.150427] mtd_read error while parsing (offset: 0x7EE0000): -74
[    2.156903] mtd_read error while parsing (offset: 0x7F00000): -74
[    2.163389] mtd_read error while parsing (offset: 0x7F20000): -74
[    2.169872] mtd_read error while parsing (offset: 0x7F40000): -74
[    2.176347] mtd_read error while parsing (offset: 0x7F60000): -74
[    2.182835] mtd_read error while parsing (offset: 0x7F80000): -74
[    2.189308] mtd_read error while parsing (offset: 0x7FA0000): -74
[    2.196464] mtd_read error while parsing (offset: 0x7FE0000): -74
[    2.203578] 17 bcm47xxpart partitions found on MTD device brcmnand.0
[    2.209951] Creating 17 MTD partitions on "brcmnand.0":
[    2.215195] 0x000000000000-0x000000080000 : "boot"
[    2.220727] 0x000000080000-0x000000200000 : "nvram"
[    2.226227] 0x000000200000-0x000002600000 : "firmware"
[    2.232436] 0x00000020001c-0x000000600000 : "linux"
[    2.238005] 0x000000600000-0x000002600000 : "ubi"
[    2.243480] 0x000002600000-0x000002680000 : "board_data"
[    2.249500] 0x000002680000-0x0000026a0000 : "POT"
[    2.254929] 0x0000026a0000-0x000002780000 : "POT"
[    2.260380] 0x000002780000-0x0000027a0000 : "POT"
[    2.265783] 0x0000027a0000-0x000002e00000 : "POT"
[    2.271276] 0x000002e00000-0x000002e80000 : "ML"
[    2.276610] 0x000002e80000-0x000002f00000 : "ML"
[    2.281948] 0x000002f00000-0x000002f80000 : "ML"
[    2.287255] 0x000002f80000-0x000003000000 : "ML"
[    2.292664] 0x000003000000-0x000003080000 : "ML"
[    2.297986] 0x000003080000-0x000003100000 : "ML"
[    2.303374] 0x000003100000-0x000008000000 : "ML"
[    2.309317] libphy: Fixed MDIO Bus: probed
[    2.313534] bgmac: Broadcom 47xx GBit MAC driver loaded
[    2.318932] bcma: bus0: Found chip with id 53010, rev 0x00 and package 0x00
[    2.325997] bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x2A, class 0x0)
[    2.334647] bcma: bus0: Core 1 found: Chipcommon B (manuf 0x4BF, id 0x50B, rev 0x01, class 0x0)
[    2.343458] bcma: bus0: Core 2 found: DMA (manuf 0x4BF, id 0x502, rev 0x01, class 0x0)
[    2.351483] bcma: bus0: Core 3 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x05, class 0x0)
[    2.359929] bcma: bus0: Core 4 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x05, class 0x0)
[    2.368385] bcma: bus0: Core 5 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x05, class 0x0)
[    2.376845] bcma: bus0: Core 6 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x05, class 0x0)
[    2.385268] bcma: bus0: Core 7 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0)
[    2.393875] bcma: bus0: Core 8 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0)
[    2.402493] bcma: bus0: Core 9 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0)
[    2.411136] bcma: bus0: Core 10 found: ARM Cortex A9 core (ihost) (manuf 0x4BF, id 0x510, rev 0x01, class 0x0)
[    2.421236] bcma: bus0: Core 11 found: USB 2.0 (manuf 0x4BF, id 0x504, rev 0x01, class 0x0)
[    2.429678] bcma: bus0: Core 12 found: USB 3.0 (manuf 0x4BF, id 0x505, rev 0x01, class 0x0)
[    2.438129] bcma: bus0: Core 13 found: SDIO3 (manuf 0x4BF, id 0x503, rev 0x01, class 0x0)
[    2.446417] bcma: bus0: Core 14 found: I2S (manuf 0x4BF, id 0x834, rev 0x03, class 0x0)
[    2.454532] bcma: bus0: Core 15 found: ARM Cortex A9 JTAG (manuf 0x4BF, id 0x506, rev 0x01, class 0x0)
[    2.463947] bcma: bus0: Core 16 found: Denali DDR2/DDR3 memory controller (manuf 0x4BF, id 0x507, rev 0x01, class 0x0)
[    2.474754] bcma: bus0: Core 17 found: ROM (manuf 0x4BF, id 0x508, rev 0x01, class 0x0)
[    2.482873] bcma: bus0: Core 18 found: NAND flash controller (manuf 0x4BF, id 0x509, rev 0x01, class 0x0)
[    2.492557] bcma: bus0: Core 19 found: SPI flash controller (manuf 0x4BF, id 0x50A, rev 0x01, class 0x0)
[    2.502079] bcma: bus0: Flash type not supported
[    2.507684] bcm53xxspiflash spi32766.0: unrecognized JEDEC id bytes: ff, ff, ff
[    2.515076] bcm53xxspiflash: probe of spi32766.0 failed with error -2
[    2.554534] bgmac bcma0:3: Invalid MAC addr: 00:00:00:00:00:00
[    2.560427] bgmac bcma0:3: Using random MAC: 56:5f:15:35:98:84
[    2.566307] bgmac bcma0:3: Found PHY addr: 30 (NOREGS)
[    2.572276] bgmac bcma0:3: Support for Roboswitch not implemented
[    2.579882] b53_common: found switch: BCM53012, rev 5
[    2.585569] bgmac bcma0:4: Invalid MAC addr: 00:00:00:00:00:00
[    2.591479] bgmac bcma0:4: Using random MAC: 2e:a0:27:b8:34:fa
[    2.597366] bgmac bcma0:4: Found PHY addr: 30 (NOREGS)
[    2.603350] bgmac bcma0:4: Support for Roboswitch not implemented
[    2.610391] bgmac bcma0:5: Found PHY addr: 30 (NOREGS)
[    2.616347] bgmac bcma0:5: Support for Roboswitch not implemented
[    2.623328] bgmac: Unsupported core_unit 3
[    2.627447] bgmac: probe of bcma0:6 failed with error -524
[    2.634133] bcm47xx-wdt bcm47xx-wdt.0: BCM47xx Watchdog Timer enabled (30 seconds, Software Timer)
[    2.643157] bcma: bus0: Bus registered
[    2.647823] NET: Registered protocol family 10
[    2.653299] NET: Registered protocol family 17
[    2.657796] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[    2.670482] 8021q: 802.1Q VLAN Support v1.8
[    2.674744] Registering SWP/SWPB emulation handler
[    2.681161] UBI: auto-attach mtd4
[    2.684314] ubi0: attaching mtd4
[    2.858227] ubi0: scanning is finished
[    2.870655] ubi0: attached mtd4 (name "ubi", size 32 MiB)
[    2.876078] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    2.882996] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    2.889810] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    2.896791] ubi0: good PEBs: 256, bad PEBs: 0, corrupted PEBs: 0
[    2.902814] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
[    2.910055] ubi0: max/mean erase counter: 3/1, WL threshold: 4096, image sequence number: 928618645
[    2.919117] ubi0: available PEBs: 0, total reserved PEBs: 256, PEBs reserved for bad PEB handling: 20
[    2.928395] ubi0: background thread "ubi_bgt0d" started, PID 359
[    2.935386] block ubiblock0_0: created from ubi0:0(rootfs)
[    2.940918] ubiblock: device ubiblock0_0 (rootfs) set to be root filesystem
[    2.952471] VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
[    2.959868] Freeing unused kernel memory: 212K (c0443000 - c0478000)
[    3.355081] init: Console is alive
[    3.358619] init: - watchdog -
[    3.737253] usbcore: registered new interface driver usbfs
[    3.742874] usbcore: registered new interface driver hub
[    3.748280] usbcore: registered new device driver usb
[    3.759522] init: - preinit -
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[    5.579380] eth0: Link is Up - 1Gbps/Full - flow control off
[    7.046438] UBIFS (ubi0:1): default file-system created
[    7.052537] UBIFS (ubi0:1): background thread "ubifs_bgt0_1" started, PID 442
[    7.124608] UBIFS (ubi0:1): UBIFS: mounted UBI device 0, volume 1, name "rootfs_data"
[    7.132487] UBIFS (ubi0:1): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[    7.142431] UBIFS (ubi0:1): FS size: 25014272 bytes (23 MiB, 197 LEBs), journal size 1269760 bytes (1 MiB, 10 LEBs)
[    7.152897] UBIFS (ubi0:1): reserved for root: 1181485 bytes (1153 KiB)
[    7.159534] UBIFS (ubi0:1): media format: w4/r0 (latest is w4/r0), UUID 1B97EDBB-591B-4F6A-A9C1-7BEF2BCD134D, small LPT model
[    7.172716] mount_root: overlay filesystem has not been fully initialized yet
[    7.180316] mount_root: switching to jffs2 overlay
[    7.200924] procd: - early -
[    7.203870] procd: - watchdog -
[    7.849698] procd: - ubus -
[    7.910713] procd: - init -
Please press Enter to activate this console.
[   10.218496] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   10.329492] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
[   10.335796] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
[   10.342728] pcie_iproc_bcma bcma0:7: link: UP
[   10.347346] PCI: bus0: Fast back to back transfers disabled
[   10.352966] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[   10.361482] PCI: bus1: Fast back to back transfers disabled
[   10.367126] pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x085fffff]
[   10.373960] pci 0000:01:00.0: BAR 2: assigned [mem 0x08000000-0x083fffff 64bit]
[   10.381308] pci 0000:01:00.0: BAR 0: assigned [mem 0x08400000-0x08407fff 64bit]
[   10.388640] pci 0000:00:00.0: PCI bridge to [bus 01]
[   10.393630] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x085fffff]
[   10.509470] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
[   10.515767] pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
[   10.522683] pcie_iproc_bcma bcma0:8: link: UP
[   10.527301] PCI: bus0: Fast back to back transfers disabled
[   10.532915] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[   10.541435] PCI: bus1: Fast back to back transfers disabled
[   10.547032] pci 0001:01:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[   10.555199] External imprecise Data abort at addr=0x1c6e00f, fsr=0x1406 ignored.
[   10.562635] Unhandled fault: imprecise external abort (0x1406) at 0x01c6e00f
[   10.569699] pgd = c71e4000
[   10.572405] [01c6e00f] *pgd=0732b831, *pte=06d1f75f, *ppte=06d1fc7f
[   10.578711] Internal error: : 1406 [#1] SMP ARM
[   10.583249] Modules linked in: pcie_iproc_bcma(+) pcie_iproc ip6t_REJECT nf_reject_ipv6 nf_log_ipv6 nf_log_common ip6table_raw ip6table_mangle ip6table_filter ip6_tables x_tables leds_gpio gpio_button_hotplug usbcore nls_base usb_common
[   10.604388] CPU: 0 PID: 648 Comm: kmodloader Not tainted 4.4.6 #9
[   10.610493] Hardware name: BCM5301X
[   10.613985] task: c7a5a400 ti: c7346000 task.ti: c7346000
[   10.619404] PC is at pci_generic_config_read32+0x48/0x74
[   10.624733] LR is at arm_heavy_mb+0x20/0x40
[   10.628923] pc : [<c01ad4d8>]    lr : [<c001b2ac>]    psr: a0000093
[   10.628923] sp : c7347a00  ip : c73479c8  fp : c7347a1c
[   10.640427] r10: 0000000e  r9 : 00000000  r8 : c7347a72
[   10.645659] r7 : 60000013  r6 : 00000001  r5 : c7347a2c  r4 : 0000000e
[   10.652195] r3 : c88c4000  r2 : c88c41f8  r1 : 00120000  r0 : c88c41fc
[   10.658733] Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
[   10.665974] Control: 10c5387d  Table: 071e404a  DAC: 00000051
[   10.671728] Process kmodloader (pid: 648, stack limit = 0xc7346190)
[   10.678011] Stack: (0xc7347a00 to 0xc7348000)
[   10.682377] 7a00: c01ad490 c04bebec c716f600 60000013 c7347a5c c7347a20 c01ad26c c01ad49c
[   10.690576] 7a20: c7347a2c ffffffff 00000051 00000000 c7347a74 c70f5000 c716f600 00000000
[   10.698775] 7a40: 00000000 00000000 c716fe00 00000000 c7347aa4 c7347a60 c01afad8 c01ad21c
[   10.706974] 7a60: c01d9750 c017d4c8 c7347a8c c7347a78 c01ae8e0 c01d9740 c70f5000 c716f600
[   10.715173] 7a80: c7347aa4 c70f5000 c716f600 00000000 00000000 00000000 c7347acc c7347aa8
[   10.723373] 7aa0: c01b0174 c01afabc c7347ac4 00120000 c716f600 c716f600 00000001 00000000
[   10.731570] 7ac0: c7347aec c7347ad0 c01b0210 c01b0100 c716f600 00000008 00000001 00000002
[   10.739770] 7ae0: c7347b14 c7347af0 c01b0fb0 c01b01b8 c70f5800 c716f600 00000001 00000002
[   10.747969] 7b00: 00000000 c716fe00 c7347b74 c7347b18 c01b0db8 c01b0f94 c0053284 c0055958
[   10.756168] 7b20: c70f5800 c7347b3c c7347b74 00000000 00000000 00000000 00000000 00000001
[   10.764368] 7b40: 00000001 00ff0201 c7347b74 c716fe00 c70f5800 00000001 00000001 c716fe14
[   10.772568] 7b60: c716f800 00000000 c7347b9c c7347b78 c01b1010 c01b0aa8 c70f6000 c716fe00
[   10.780766] 7b80: 00000000 00000001 00000000 c716f800 c7347bfc c7347ba0 c01b0db8 c01b0f94
[   10.788965] 7ba0: c0053284 c0055958 c70f6000 c7347bc4 c7347bfc 00000000 00000000 00000000
[   10.797164] 7bc0: 00000000 00000001 00010001 00ff0100 c7347bfc c716f800 c70f6000 00000001
[   10.805363] 7be0: 00000000 c716f814 bf0641d0 c0075878 c7347c24 c7347c00 c01b1010 c01b0aa8
[   10.813563] 7c00: c7209a90 c716f800 00000000 00000330 00000004 bf0641d0 c7347c8c c7347c28
[   10.821762] 7c20: bf0606ac c01b0f94 c7347c94 c7a35e10 00000004 bf0641d0 c7347c5c c7347c94
[   10.829961] 7c40: c0024e78 901201f0 c7347c94 c7347c9c c7347c7c c7347c60 01060400 c0024e68
[   10.838161] 7c60: c7209a90 c7209a90 c7347c94 c7a35e00 c7a35e10 00000004 bf0641d0 c0075878
[   10.846360] 7c80: c7347cd4 c7347c90 bf0640f4 bf060130 c7a35e10 c7347c94 c7347c94 40000000
[   10.854559] 7ca0: 47ffffff bf064154 00000200 c7347cb8 c0104c60 c0104b78 c7a35e10 c04bf95c
[   10.862758] 7cc0: 00000000 c04bf958 c7347ce4 c7347cd8 c0230240 bf064068 c7347d0c c7347ce8
[   10.870957] 7ce0: c01dd3d4 c0230224 c7a35e10 c7a35e44 bf0641d0 c048bf34 c047a3c8 00000000
[   10.879156] 7d00: c7347d2c c7347d10 c01dd5a8 c01dd2e0 00000000 bf0641d0 c01dd538 c048bf34
[   10.887356] 7d20: c7347d54 c7347d30 c01dbbd0 c01dd544 c788975c c7adf834 c7889770 bf0641d0
[   10.895555] 7d40: 00000000 c725ba00 c7347d64 c7347d58 c01dcf70 c01dbb68 c7347d8c c7347d68
[   10.903754] 7d60: c01dcb7c c01dcf5c bf064181 c7347d78 bf0641d0 bf066000 c047d9c8 c047d9c8
[   10.911952] 7d80: c7347da4 c7347d90 c01ddc34 c01dcab4 c73d6700 bf066000 c7347db4 c7347da8
[   10.920152] 7da0: c02304fc c01ddb9c c7347dc4 c7347db8 bf066018 c02304e0 c7347e44 c7347dc8
[   10.928351] 7dc0: c001393c bf06600c c047ccc4 c6df8000 c7ff1420 40000000 00000000 00000000
[   10.936550] 7de0: 00000015 c0075878 c7347e1c c7347df8 c00875c8 c00871d4 00000000 c73d6640
[   10.944749] 7e00: c8b3a000 00000001 00000000 00000001 c73d6640 c8b3a000 00000001 dc8ba606
[   10.952948] 7e20: bf064240 c716ea00 c73d6640 c716eb80 00000000 00000015 c7347e6c c7347e48
[   10.961147] 7e40: c0076c04 c001379c c7347e6c c7347e58 c00a99ac c7347f34 c716ea00 bf064240
[   10.969347] 7e60: c7347f2c c7347e70 c0078270 c0076bb0 bf06424c 00007fff bf064240 c0075d28
[   10.977546] 7e80: 00012377 bf0643a0 c8b3abb8 c03d97d4 0000001c c8b3a3c8 0000001c bf064288
[   10.985745] 7ea0: c73d6640 024002c2 00000000 00000000 00000000 00000000 00000000 00000000
[   10.993945] 7ec0: 65696370 7270695f 0000636f 00000000 00000000 00000000 00000000 00000000
[   11.002143] 7ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 dc8ba606
[   11.010344] 7f00: c0078734 00000c08 01c6bc18 00000000 c8b3ac08 00012377 c7346000 00000051
[   11.018542] 7f20: c7347fa4 c7347f30 c00787f0 c0076dd8 c7455cb8 c8b3a000 00000c08 c8b3a8c0
[   11.026741] 7f40: c8b3a46f c8b3a6e4 000003c0 00000420 00000000 00000000 00000000 00000308
[   11.034939] 7f60: 00000013 00000014 0000000e 00000000 00000008 00000000 c00b64a4 00000000
[   11.043139] 7f80: 00000000 00000005 00000080 c00098c4 c7346000 00000000 00000000 c7347fa8
[   11.051338] 7fa0: c0009700 c00786e0 00000000 00000000 01c6b010 00000c08 00012377 0000fe00
[   11.059537] 7fc0: 00000000 00000000 00000005 00000080 00000c08 00000000 00000001 00000000
[   11.067738] 7fe0: bee00d34 bee00d18 00011abc b6f5537c 60000010 01c6b010 ffffffff ffffffff
[   11.075929] Backtrace: 
[   11.078396] [<c01ad490>] (pci_generic_config_read32) from [<c01ad26c>] (pci_bus_read_config_byte+0x5c/0x84)
[   11.088160]  r7:60000013 r6:c716f600 r5:c04bebec r4:c01ad490
[   11.093867] [<c01ad210>] (pci_bus_read_config_byte) from [<c01afad8>] (pci_setup_device+0x28/0x3f4)
[   11.102930]  r10:00000000 r9:c716fe00 r8:00000000 r7:00000000 r6:00000000 r5:c716f600
[   11.110816]  r4:c70f5000
[   11.113363] [<c01afab0>] (pci_setup_device) from [<c01b0174>] (pci_scan_single_device+0x80/0xb8)
[   11.122166]  r8:00000000 r7:00000000 r6:00000000 r5:c716f600 r4:c70f5000
[   11.128925] [<c01b00f4>] (pci_scan_single_device) from [<c01b0210>] (pci_scan_slot+0x64/0xe4)
[   11.137468]  r7:00000000 r6:00000001 r5:c716f600 r4:c716f600
[   11.143174] [<c01b01ac>] (pci_scan_slot) from [<c01b0fb0>] (pci_scan_child_bus+0x28/0xa8)
[   11.151368]  r7:00000002 r6:00000001 r5:00000008 r4:c716f600
[   11.157074] [<c01b0f88>] (pci_scan_child_bus) from [<c01b0db8>] (pci_scan_bridge+0x31c/0x4ec)
[   11.165616]  r9:c716fe00 r8:00000000 r7:00000002 r6:00000001 r5:c716f600 r4:c70f5800
[   11.173420] [<c01b0a9c>] (pci_scan_bridge) from [<c01b1010>] (pci_scan_child_bus+0x88/0xa8)
[   11.181789]  r10:00000000 r9:c716f800 r8:c716fe14 r7:00000001 r6:00000001 r5:c70f5800
[   11.189674]  r4:c716fe00
[   11.192221] [<c01b0f88>] (pci_scan_child_bus) from [<c01b0db8>] (pci_scan_bridge+0x31c/0x4ec)
[   11.200763]  r9:c716f800 r8:00000000 r7:00000001 r6:00000000 r5:c716fe00 r4:c70f6000
[   11.208566] [<c01b0a9c>] (pci_scan_bridge) from [<c01b1010>] (pci_scan_child_bus+0x88/0xa8)
[   11.216935]  r10:c0075878 r9:bf0641d0 r8:c716f814 r7:00000000 r6:00000001 r5:c70f6000
[   11.224821]  r4:c716f800
[   11.227371] [<c01b0f88>] (pci_scan_child_bus) from [<bf0606ac>] (iproc_pcie_setup+0x588/0x690 [pcie_iproc])
[   11.237129]  r9:bf0641d0 r8:00000004 r7:00000330 r6:00000000 r5:c716f800 r4:c7209a90
[   11.244937] [<bf060124>] (iproc_pcie_setup [pcie_iproc]) from [<bf0640f4>] (iproc_pcie_bcma_probe+0x98/0xd0 [pcie_iproc_bcma])
[   11.256347]  r10:c0075878 r9:bf0641d0 r8:00000004 r7:c7a35e10 r6:c7a35e00 r5:c7347c94
[   11.264233]  r4:c7209a90
[   11.266791] [<bf06405c>] (iproc_pcie_bcma_probe [pcie_iproc_bcma]) from [<c0230240>] (bcma_device_probe+0x28/0x34)
[   11.277158]  r7:c04bf958 r6:00000000 r5:c04bf95c r4:c7a35e10
[   11.282873] [<c0230218>] (bcma_device_probe) from [<c01dd3d4>] (driver_probe_device+0x100/0x264)
[   11.291683] [<c01dd2d4>] (driver_probe_device) from [<c01dd5a8>] (__driver_attach+0x70/0x94)
[   11.300136]  r9:00000000 r8:c047a3c8 r7:c048bf34 r6:bf0641d0 r5:c7a35e44 r4:c7a35e10
[   11.307942] [<c01dd538>] (__driver_attach) from [<c01dbbd0>] (bus_for_each_dev+0x74/0x98)
[   11.316134]  r7:c048bf34 r6:c01dd538 r5:bf0641d0 r4:00000000
[   11.321842] [<c01dbb5c>] (bus_for_each_dev) from [<c01dcf70>] (driver_attach+0x20/0x28)
[   11.329861]  r6:c725ba00 r5:00000000 r4:bf0641d0
[   11.334515] [<c01dcf50>] (driver_attach) from [<c01dcb7c>] (bus_add_driver+0xd4/0x1f0)
[   11.342453] [<c01dcaa8>] (bus_add_driver) from [<c01ddc34>] (driver_register+0xa4/0xe8)
[   11.350472]  r7:c047d9c8 r6:c047d9c8 r5:bf066000 r4:bf0641d0
[   11.356180] [<c01ddb90>] (driver_register) from [<c02304fc>] (__bcma_driver_register+0x28/0x30)
[   11.364894]  r5:bf066000 r4:c73d6700
[   11.368498] [<c02304d4>] (__bcma_driver_register) from [<bf066018>] (init_module+0x18/0x24 [pcie_iproc_bcma])
[   11.378448] [<bf066000>] (init_module [pcie_iproc_bcma]) from [<c001393c>] (do_one_initcall+0x1ac/0x1ec)
[   11.387951] [<c0013790>] (do_one_initcall) from [<c0076c04>] (do_init_module+0x60/0x1a4)
[   11.396055]  r9:00000015 r8:00000000 r7:c716eb80 r6:c73d6640 r5:c716ea00 r4:bf064240
[   11.403858] [<c0076ba4>] (do_init_module) from [<c0078270>] (load_module+0x14a4/0x1908)
[   11.411879]  r6:bf064240 r5:c716ea00 r4:c7347f34
[   11.416531] [<c0076dcc>] (load_module) from [<c00787f0>] (SyS_init_module+0x11c/0x13c)
[   11.424465]  r10:00000051 r9:c7346000 r8:00012377 r7:c8b3ac08 r6:00000000 r5:01c6bc18
[   11.432350]  r4:00000c08
[   11.434900] [<c00786d4>] (SyS_init_module) from [<c0009700>] (ret_fast_syscall+0x0/0x3c)
[   11.443003]  r10:00000000 r9:c7346000 r8:c00098c4 r7:00000080 r6:00000005 r5:00000000
[   11.450890]  r4:00000000
[   11.453437] Code: e5853000 e89da8f0 e5901000 f57ff04f (e3560002) 
[   11.459545] ---[ end trace 904ac2ae157d3f83 ]---
[   20.973607] device eth0.1 entered promiscuous mode
[   20.978422] device eth0 entered promiscuous mode
[   20.992239] br-lan: port 1(eth0.1) entered forwarding state
[   20.997869] br-lan: port 1(eth0.1) entered forwarding state
[   21.479404] eth0: Link is Up - 1Gbps/Full - flow control off
[   22.989360] br-lan: port 1(eth0.1) entered forwarding state

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-08  6:45     ` Rafał Miłecki
@ 2016-04-08  8:43       ` Lucas Stach
  2016-04-08 22:02         ` Ray Jui
  0 siblings, 1 reply; 13+ messages in thread
From: Lucas Stach @ 2016-04-08  8:43 UTC (permalink / raw)
  To: linux-arm-kernel

Am Freitag, den 08.04.2016, 08:45 +0200 schrieb Rafa? Mi?ecki:
> On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
> > On 04/04/2016 11:08 PM, Scott Branden wrote:
> >> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
> >>> I got regression reports from Netgear R8000 (BCM4709A0) users and did
> >>> some testing & regression tracking with Aditya.
> >>>
> >>> It happens that Linux 4.4 doesn't boot due to the following commits:
> >>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
> >>> startup")
> >>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
> >>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
> >>> handler")
> >>>
> >>> In kernel 4.3 we got that abort workaround which was resulting in:
> >>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 - c046a000)
> >>> [    5.694632] init: Console is alive
> >>> [    5.698169] init: - watchdog -
> >>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
> >>> ignored.
> >>> As you can see, this abort was happening soon after freeing unused
> >>> memory and ignoring it *once* did the trick. It was never appearing
> >>> again.
> >
> > I assume it only can throw one of these and if it is deactivated it will
> > ignore the next one or overwrite it. So it could be that more than one
> > is thrown here.
> >
> >>> With 4.4 similar (or the same?) abort happens earlier (during PCI host
> >>> driver init) and doesn't get ignored:
> >>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
> >>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
> >>> 0x08000000-0x085fffff]
> >>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
> >>> [    2.605744] pci_bus 0001:00: root bus resource [mem
> >>> 0x40000000-0x47ffffff]
> >>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
> >>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
> >>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
> >>> 00-00]), reconfiguring
> >>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
> >>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
> >>> 00-00]), reconfiguring
> >>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
> >>> 0x00000000
> >>> (see 4.4.txt for the backtrace)
> >>>
> >>> At first I was hoping that we simply need to re-add the removed
> >>> workaround. I tried it but it appeared that one abort is immediately
> >>> followed by another:
> >>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
> >>> 00-00]), reconfiguring
> >>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
> >>> ignored.
> >>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
> >>> 0x00000000
> >>>
> >>> So it seems that commits bbeb920 and 9254970 broke something in PCI
> >>> host initialization (or maybe just exposed another bug?). Instead of
> >>> getting an abort once and late we are getting now many of them and a
> >>> bit earlier.
> >
> > These commits mad the kernel earlier "listen" to such errors, so that
> > they will be shown at the time they occur and not sometime later.
> 
> So AFAIU with kernel 4.3:
> 1) Aborts were masked (silent) until "Freeing unused kernel memory"
> 2) There was one (silent) abort caused by a bootloader
> 3) There were likely multiple aborts (silent) during early PCI init
> 4) After unmasking we got only a single abort reported and we were ignoring it
> 
> With kernel 4.4:
> 1) All aborts are reported immediately
> 2) Abort caused by a bootloader gets ignored by ARM code:
> "Hit pending asynchronous external abort (FSR=0x00001c06) during first unmask"
> thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
> 3) There are still multiple aborts during PCI init (reported immediately now)
> 4) To work as before (in 4.3) we should ignore all aborts, not only the 1st one
> 
> Of course proposed solution is an ugly workaround, we should have no
> aborts reported in the first place.
> 
A master abort on the PCI bus during probe of the PCI config space
(device enumeration) is expected. Most host bridges ignore those errors
and just return 0 for the read transaction.

Some bridges forward the error onto the AXI/AMBA bus and thus cause
imprecise external aborts on the ARM core. If your host bridge doesn't
have a way to disable error forwarding during PCI bus probe you need to
install an abort handler. Most implementations based on the designware
PCIe core do this already.

Regards,
Lucas

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-08  8:43       ` Lucas Stach
@ 2016-04-08 22:02         ` Ray Jui
  2016-04-08 22:05           ` Rafał Miłecki
  0 siblings, 1 reply; 13+ messages in thread
From: Ray Jui @ 2016-04-08 22:02 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Lucas,

On 4/8/2016 1:43 AM, Lucas Stach wrote:
> Am Freitag, den 08.04.2016, 08:45 +0200 schrieb Rafa? Mi?ecki:
>> On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
>>> On 04/04/2016 11:08 PM, Scott Branden wrote:
>>>> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>>>>> I got regression reports from Netgear R8000 (BCM4709A0) users and did
>>>>> some testing & regression tracking with Aditya.
>>>>>
>>>>> It happens that Linux 4.4 doesn't boot due to the following commits:
>>>>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>>>>> startup")
>>>>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>>>>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>>>>> handler")
>>>>>
>>>>> In kernel 4.3 we got that abort workaround which was resulting in:
>>>>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 - c046a000)
>>>>> [    5.694632] init: Console is alive
>>>>> [    5.698169] init: - watchdog -
>>>>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>> ignored.
>>>>> As you can see, this abort was happening soon after freeing unused
>>>>> memory and ignoring it *once* did the trick. It was never appearing
>>>>> again.
>>>
>>> I assume it only can throw one of these and if it is deactivated it will
>>> ignore the next one or overwrite it. So it could be that more than one
>>> is thrown here.
>>>
>>>>> With 4.4 similar (or the same?) abort happens earlier (during PCI host
>>>>> driver init) and doesn't get ignored:
>>>>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>>>>> 0x08000000-0x085fffff]
>>>>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>>>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>>>>> 0x40000000-0x47ffffff]
>>>>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>>>>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>>>>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
>>>>> 00-00]), reconfiguring
>>>>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>>>>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>> 00-00]), reconfiguring
>>>>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
>>>>> 0x00000000
>>>>> (see 4.4.txt for the backtrace)
>>>>>
>>>>> At first I was hoping that we simply need to re-add the removed
>>>>> workaround. I tried it but it appeared that one abort is immediately
>>>>> followed by another:
>>>>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>> 00-00]), reconfiguring
>>>>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>> ignored.
>>>>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
>>>>> 0x00000000
>>>>>
>>>>> So it seems that commits bbeb920 and 9254970 broke something in PCI
>>>>> host initialization (or maybe just exposed another bug?). Instead of
>>>>> getting an abort once and late we are getting now many of them and a
>>>>> bit earlier.
>>>
>>> These commits mad the kernel earlier "listen" to such errors, so that
>>> they will be shown at the time they occur and not sometime later.
>>
>> So AFAIU with kernel 4.3:
>> 1) Aborts were masked (silent) until "Freeing unused kernel memory"
>> 2) There was one (silent) abort caused by a bootloader
>> 3) There were likely multiple aborts (silent) during early PCI init
>> 4) After unmasking we got only a single abort reported and we were ignoring it
>>
>> With kernel 4.4:
>> 1) All aborts are reported immediately
>> 2) Abort caused by a bootloader gets ignored by ARM code:
>> "Hit pending asynchronous external abort (FSR=0x00001c06) during first unmask"
>> thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>> 3) There are still multiple aborts during PCI init (reported immediately now)
>> 4) To work as before (in 4.3) we should ignore all aborts, not only the 1st one
>>
>> Of course proposed solution is an ugly workaround, we should have no
>> aborts reported in the first place.
>>
> A master abort on the PCI bus during probe of the PCI config space
> (device enumeration) is expected. Most host bridges ignore those errors
> and just return 0 for the read transaction.
>
> Some bridges forward the error onto the AXI/AMBA bus and thus cause
> imprecise external aborts on the ARM core.

Yes, I suspect this is the case for these imprecise external abort 
triggered by the iProc PCIe.

> If your host bridge doesn't
> have a way to disable error forwarding during PCI bus probe you need to
> install an abort handler. Most implementations based on the designware
> PCIe core do this already.

Is this as simple as registering an abort handler to the hook in the 
iProc PCIe driver, and based on the fsr (0x1406 in our case), simply 
ignore the abort by returning zero from the abort handler?

Thanks,

Ray

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-08 22:02         ` Ray Jui
@ 2016-04-08 22:05           ` Rafał Miłecki
  2016-04-08 22:08             ` Ray Jui
  0 siblings, 1 reply; 13+ messages in thread
From: Rafał Miłecki @ 2016-04-08 22:05 UTC (permalink / raw)
  To: linux-arm-kernel

On 9 April 2016 at 00:02, Ray Jui <ray.jui@broadcom.com> wrote:
> On 4/8/2016 1:43 AM, Lucas Stach wrote:
>>
>> Am Freitag, den 08.04.2016, 08:45 +0200 schrieb Rafa? Mi?ecki:
>>>
>>> On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
>>>>
>>>> On 04/04/2016 11:08 PM, Scott Branden wrote:
>>>>>
>>>>> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>>>>>>
>>>>>> I got regression reports from Netgear R8000 (BCM4709A0) users and did
>>>>>> some testing & regression tracking with Aditya.
>>>>>>
>>>>>> It happens that Linux 4.4 doesn't boot due to the following commits:
>>>>>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>>>>>> startup")
>>>>>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>>>>>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>>>>>> handler")
>>>>>>
>>>>>> In kernel 4.3 we got that abort workaround which was resulting in:
>>>>>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 -
>>>>>> c046a000)
>>>>>> [    5.694632] init: Console is alive
>>>>>> [    5.698169] init: - watchdog -
>>>>>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>>> ignored.
>>>>>> As you can see, this abort was happening soon after freeing unused
>>>>>> memory and ignoring it *once* did the trick. It was never appearing
>>>>>> again.
>>>>
>>>>
>>>> I assume it only can throw one of these and if it is deactivated it will
>>>> ignore the next one or overwrite it. So it could be that more than one
>>>> is thrown here.
>>>>
>>>>>> With 4.4 similar (or the same?) abort happens earlier (during PCI host
>>>>>> driver init) and doesn't get ignored:
>>>>>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>>>>>> 0x08000000-0x085fffff]
>>>>>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>>>>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>>>>>> 0x40000000-0x47ffffff]
>>>>>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>>>>>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>>>>>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
>>>>>> 00-00]), reconfiguring
>>>>>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>>>>>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>>> 00-00]), reconfiguring
>>>>>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
>>>>>> 0x00000000
>>>>>> (see 4.4.txt for the backtrace)
>>>>>>
>>>>>> At first I was hoping that we simply need to re-add the removed
>>>>>> workaround. I tried it but it appeared that one abort is immediately
>>>>>> followed by another:
>>>>>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>>> 00-00]), reconfiguring
>>>>>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>>> ignored.
>>>>>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
>>>>>> 0x00000000
>>>>>>
>>>>>> So it seems that commits bbeb920 and 9254970 broke something in PCI
>>>>>> host initialization (or maybe just exposed another bug?). Instead of
>>>>>> getting an abort once and late we are getting now many of them and a
>>>>>> bit earlier.
>>>>
>>>>
>>>> These commits mad the kernel earlier "listen" to such errors, so that
>>>> they will be shown at the time they occur and not sometime later.
>>>
>>>
>>> So AFAIU with kernel 4.3:
>>> 1) Aborts were masked (silent) until "Freeing unused kernel memory"
>>> 2) There was one (silent) abort caused by a bootloader
>>> 3) There were likely multiple aborts (silent) during early PCI init
>>> 4) After unmasking we got only a single abort reported and we were
>>> ignoring it
>>>
>>> With kernel 4.4:
>>> 1) All aborts are reported immediately
>>> 2) Abort caused by a bootloader gets ignored by ARM code:
>>> "Hit pending asynchronous external abort (FSR=0x00001c06) during first
>>> unmask"
>>> thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on
>>> unmask")
>>> 3) There are still multiple aborts during PCI init (reported immediately
>>> now)
>>> 4) To work as before (in 4.3) we should ignore all aborts, not only the
>>> 1st one
>>>
>>> Of course proposed solution is an ugly workaround, we should have no
>>> aborts reported in the first place.
>>>
>> A master abort on the PCI bus during probe of the PCI config space
>> (device enumeration) is expected. Most host bridges ignore those errors
>> and just return 0 for the read transaction.
>>
>> Some bridges forward the error onto the AXI/AMBA bus and thus cause
>> imprecise external aborts on the ARM core.
>
>
> Yes, I suspect this is the case for these imprecise external abort triggered
> by the iProc PCIe.
>
>> If your host bridge doesn't
>> have a way to disable error forwarding during PCI bus probe you need to
>> install an abort handler. Most implementations based on the designware
>> PCIe core do this already.
>
>
> Is this as simple as registering an abort handler to the hook in the iProc
> PCIe driver, and based on the fsr (0x1406 in our case), simply ignore the
> abort by returning zero from the abort handler?

This is what I did in OpenWrt an hour ago and it seems to be working:
http://git.openwrt.org/?p=openwrt.git;a=commitdiff;h=f823c5da71f0dd859facc5ece575a48c28279d35

-- 
Rafa?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-08 22:05           ` Rafał Miłecki
@ 2016-04-08 22:08             ` Ray Jui
  2016-04-08 22:11               ` Rafał Miłecki
  0 siblings, 1 reply; 13+ messages in thread
From: Ray Jui @ 2016-04-08 22:08 UTC (permalink / raw)
  To: linux-arm-kernel



On 4/8/2016 3:05 PM, Rafa? Mi?ecki wrote:
> On 9 April 2016 at 00:02, Ray Jui <ray.jui@broadcom.com> wrote:
>> On 4/8/2016 1:43 AM, Lucas Stach wrote:
>>>
>>> Am Freitag, den 08.04.2016, 08:45 +0200 schrieb Rafa? Mi?ecki:
>>>>
>>>> On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
>>>>>
>>>>> On 04/04/2016 11:08 PM, Scott Branden wrote:
>>>>>>
>>>>>> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>>>>>>>
>>>>>>> I got regression reports from Netgear R8000 (BCM4709A0) users and did
>>>>>>> some testing & regression tracking with Aditya.
>>>>>>>
>>>>>>> It happens that Linux 4.4 doesn't boot due to the following commits:
>>>>>>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>>>>>>> startup")
>>>>>>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>>>>>>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>>>>>>> handler")
>>>>>>>
>>>>>>> In kernel 4.3 we got that abort workaround which was resulting in:
>>>>>>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 -
>>>>>>> c046a000)
>>>>>>> [    5.694632] init: Console is alive
>>>>>>> [    5.698169] init: - watchdog -
>>>>>>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>>>> ignored.
>>>>>>> As you can see, this abort was happening soon after freeing unused
>>>>>>> memory and ignoring it *once* did the trick. It was never appearing
>>>>>>> again.
>>>>>
>>>>>
>>>>> I assume it only can throw one of these and if it is deactivated it will
>>>>> ignore the next one or overwrite it. So it could be that more than one
>>>>> is thrown here.
>>>>>
>>>>>>> With 4.4 similar (or the same?) abort happens earlier (during PCI host
>>>>>>> driver init) and doesn't get ignored:
>>>>>>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>>>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>>>>>>> 0x08000000-0x085fffff]
>>>>>>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>>>>>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>>>>>>> 0x40000000-0x47ffffff]
>>>>>>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>>>>>>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>>>>>>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
>>>>>>> 00-00]), reconfiguring
>>>>>>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>>>>>>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>>>> 00-00]), reconfiguring
>>>>>>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
>>>>>>> 0x00000000
>>>>>>> (see 4.4.txt for the backtrace)
>>>>>>>
>>>>>>> At first I was hoping that we simply need to re-add the removed
>>>>>>> workaround. I tried it but it appeared that one abort is immediately
>>>>>>> followed by another:
>>>>>>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>>>> 00-00]), reconfiguring
>>>>>>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>>>> ignored.
>>>>>>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
>>>>>>> 0x00000000
>>>>>>>
>>>>>>> So it seems that commits bbeb920 and 9254970 broke something in PCI
>>>>>>> host initialization (or maybe just exposed another bug?). Instead of
>>>>>>> getting an abort once and late we are getting now many of them and a
>>>>>>> bit earlier.
>>>>>
>>>>>
>>>>> These commits mad the kernel earlier "listen" to such errors, so that
>>>>> they will be shown at the time they occur and not sometime later.
>>>>
>>>>
>>>> So AFAIU with kernel 4.3:
>>>> 1) Aborts were masked (silent) until "Freeing unused kernel memory"
>>>> 2) There was one (silent) abort caused by a bootloader
>>>> 3) There were likely multiple aborts (silent) during early PCI init
>>>> 4) After unmasking we got only a single abort reported and we were
>>>> ignoring it
>>>>
>>>> With kernel 4.4:
>>>> 1) All aborts are reported immediately
>>>> 2) Abort caused by a bootloader gets ignored by ARM code:
>>>> "Hit pending asynchronous external abort (FSR=0x00001c06) during first
>>>> unmask"
>>>> thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on
>>>> unmask")
>>>> 3) There are still multiple aborts during PCI init (reported immediately
>>>> now)
>>>> 4) To work as before (in 4.3) we should ignore all aborts, not only the
>>>> 1st one
>>>>
>>>> Of course proposed solution is an ugly workaround, we should have no
>>>> aborts reported in the first place.
>>>>
>>> A master abort on the PCI bus during probe of the PCI config space
>>> (device enumeration) is expected. Most host bridges ignore those errors
>>> and just return 0 for the read transaction.
>>>
>>> Some bridges forward the error onto the AXI/AMBA bus and thus cause
>>> imprecise external aborts on the ARM core.
>>
>>
>> Yes, I suspect this is the case for these imprecise external abort triggered
>> by the iProc PCIe.
>>
>>> If your host bridge doesn't
>>> have a way to disable error forwarding during PCI bus probe you need to
>>> install an abort handler. Most implementations based on the designware
>>> PCIe core do this already.
>>
>>
>> Is this as simple as registering an abort handler to the hook in the iProc
>> PCIe driver, and based on the fsr (0x1406 in our case), simply ignore the
>> abort by returning zero from the abort handler?
>
> This is what I did in OpenWrt an hour ago and it seems to be working:
> http://git.openwrt.org/?p=openwrt.git;a=commitdiff;h=f823c5da71f0dd859facc5ece575a48c28279d35
>

It looks good to me except that I think you should register the hook in 
"iproc_pcie_setup" so both the BCMA and platform based iProc PCIe 
drivers can use it.

Thanks,

Ray

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-08 22:08             ` Ray Jui
@ 2016-04-08 22:11               ` Rafał Miłecki
  2016-04-08 22:41                 ` Ray Jui
  0 siblings, 1 reply; 13+ messages in thread
From: Rafał Miłecki @ 2016-04-08 22:11 UTC (permalink / raw)
  To: linux-arm-kernel

On 9 April 2016 at 00:08, Ray Jui <ray.jui@broadcom.com> wrote:
> On 4/8/2016 3:05 PM, Rafa? Mi?ecki wrote:
>>
>> On 9 April 2016 at 00:02, Ray Jui <ray.jui@broadcom.com> wrote:
>>>
>>> On 4/8/2016 1:43 AM, Lucas Stach wrote:
>>>>
>>>>
>>>> Am Freitag, den 08.04.2016, 08:45 +0200 schrieb Rafa? Mi?ecki:
>>>>>
>>>>>
>>>>> On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
>>>>>>
>>>>>>
>>>>>> On 04/04/2016 11:08 PM, Scott Branden wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> I got regression reports from Netgear R8000 (BCM4709A0) users and
>>>>>>>> did
>>>>>>>> some testing & regression tracking with Aditya.
>>>>>>>>
>>>>>>>> It happens that Linux 4.4 doesn't boot due to the following commits:
>>>>>>>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>>>>>>>> startup")
>>>>>>>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>>>>>>>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>>>>>>>> handler")
>>>>>>>>
>>>>>>>> In kernel 4.3 we got that abort workaround which was resulting in:
>>>>>>>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 -
>>>>>>>> c046a000)
>>>>>>>> [    5.694632] init: Console is alive
>>>>>>>> [    5.698169] init: - watchdog -
>>>>>>>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>>>>> ignored.
>>>>>>>> As you can see, this abort was happening soon after freeing unused
>>>>>>>> memory and ignoring it *once* did the trick. It was never appearing
>>>>>>>> again.
>>>>>>
>>>>>>
>>>>>>
>>>>>> I assume it only can throw one of these and if it is deactivated it
>>>>>> will
>>>>>> ignore the next one or overwrite it. So it could be that more than one
>>>>>> is thrown here.
>>>>>>
>>>>>>>> With 4.4 similar (or the same?) abort happens earlier (during PCI
>>>>>>>> host
>>>>>>>> driver init) and doesn't get ignored:
>>>>>>>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>>>>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>>>>>>>> 0x08000000-0x085fffff]
>>>>>>>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus
>>>>>>>> 0001:00
>>>>>>>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>>>>>>>> 0x40000000-0x47ffffff]
>>>>>>>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>>>>>>>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>>>>>>>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
>>>>>>>> 00-00]), reconfiguring
>>>>>>>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>>>>>>>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>>>>> 00-00]), reconfiguring
>>>>>>>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
>>>>>>>> 0x00000000
>>>>>>>> (see 4.4.txt for the backtrace)
>>>>>>>>
>>>>>>>> At first I was hoping that we simply need to re-add the removed
>>>>>>>> workaround. I tried it but it appeared that one abort is immediately
>>>>>>>> followed by another:
>>>>>>>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>>>>> 00-00]), reconfiguring
>>>>>>>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>>>>> ignored.
>>>>>>>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
>>>>>>>> 0x00000000
>>>>>>>>
>>>>>>>> So it seems that commits bbeb920 and 9254970 broke something in PCI
>>>>>>>> host initialization (or maybe just exposed another bug?). Instead of
>>>>>>>> getting an abort once and late we are getting now many of them and a
>>>>>>>> bit earlier.
>>>>>>
>>>>>>
>>>>>>
>>>>>> These commits mad the kernel earlier "listen" to such errors, so that
>>>>>> they will be shown at the time they occur and not sometime later.
>>>>>
>>>>>
>>>>>
>>>>> So AFAIU with kernel 4.3:
>>>>> 1) Aborts were masked (silent) until "Freeing unused kernel memory"
>>>>> 2) There was one (silent) abort caused by a bootloader
>>>>> 3) There were likely multiple aborts (silent) during early PCI init
>>>>> 4) After unmasking we got only a single abort reported and we were
>>>>> ignoring it
>>>>>
>>>>> With kernel 4.4:
>>>>> 1) All aborts are reported immediately
>>>>> 2) Abort caused by a bootloader gets ignored by ARM code:
>>>>> "Hit pending asynchronous external abort (FSR=0x00001c06) during first
>>>>> unmask"
>>>>> thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on
>>>>> unmask")
>>>>> 3) There are still multiple aborts during PCI init (reported
>>>>> immediately
>>>>> now)
>>>>> 4) To work as before (in 4.3) we should ignore all aborts, not only the
>>>>> 1st one
>>>>>
>>>>> Of course proposed solution is an ugly workaround, we should have no
>>>>> aborts reported in the first place.
>>>>>
>>>> A master abort on the PCI bus during probe of the PCI config space
>>>> (device enumeration) is expected. Most host bridges ignore those errors
>>>> and just return 0 for the read transaction.
>>>>
>>>> Some bridges forward the error onto the AXI/AMBA bus and thus cause
>>>> imprecise external aborts on the ARM core.
>>>
>>>
>>>
>>> Yes, I suspect this is the case for these imprecise external abort
>>> triggered
>>> by the iProc PCIe.
>>>
>>>> If your host bridge doesn't
>>>> have a way to disable error forwarding during PCI bus probe you need to
>>>> install an abort handler. Most implementations based on the designware
>>>> PCIe core do this already.
>>>
>>>
>>>
>>> Is this as simple as registering an abort handler to the hook in the
>>> iProc
>>> PCIe driver, and based on the fsr (0x1406 in our case), simply ignore the
>>> abort by returning zero from the abort handler?
>>
>>
>> This is what I did in OpenWrt an hour ago and it seems to be working:
>>
>> http://git.openwrt.org/?p=openwrt.git;a=commitdiff;h=f823c5da71f0dd859facc5ece575a48c28279d35
>>
>
> It looks good to me except that I think you should register the hook in
> "iproc_pcie_setup" so both the BCMA and platform based iProc PCIe drivers
> can use it.

Should I add some new field to struct iproc_pcie, like "bool
hook_abort_handler"?

-- 
Rafa?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-08 22:11               ` Rafał Miłecki
@ 2016-04-08 22:41                 ` Ray Jui
  2016-04-08 22:53                   ` Rafał Miłecki
  0 siblings, 1 reply; 13+ messages in thread
From: Ray Jui @ 2016-04-08 22:41 UTC (permalink / raw)
  To: linux-arm-kernel



On 4/8/2016 3:11 PM, Rafa? Mi?ecki wrote:
> On 9 April 2016 at 00:08, Ray Jui <ray.jui@broadcom.com> wrote:
>> On 4/8/2016 3:05 PM, Rafa? Mi?ecki wrote:
>>>
>>> On 9 April 2016 at 00:02, Ray Jui <ray.jui@broadcom.com> wrote:
>>>>
>>>> On 4/8/2016 1:43 AM, Lucas Stach wrote:
>>>>>
>>>>>
>>>>> Am Freitag, den 08.04.2016, 08:45 +0200 schrieb Rafa? Mi?ecki:
>>>>>>
>>>>>>
>>>>>> On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 04/04/2016 11:08 PM, Scott Branden wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I got regression reports from Netgear R8000 (BCM4709A0) users and
>>>>>>>>> did
>>>>>>>>> some testing & regression tracking with Aditya.
>>>>>>>>>
>>>>>>>>> It happens that Linux 4.4 doesn't boot due to the following commits:
>>>>>>>>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>>>>>>>>> startup")
>>>>>>>>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>>>>>>>>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>>>>>>>>> handler")
>>>>>>>>>
>>>>>>>>> In kernel 4.3 we got that abort workaround which was resulting in:
>>>>>>>>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 -
>>>>>>>>> c046a000)
>>>>>>>>> [    5.694632] init: Console is alive
>>>>>>>>> [    5.698169] init: - watchdog -
>>>>>>>>> [    5.701470] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>>>>>> ignored.
>>>>>>>>> As you can see, this abort was happening soon after freeing unused
>>>>>>>>> memory and ignoring it *once* did the trick. It was never appearing
>>>>>>>>> again.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> I assume it only can throw one of these and if it is deactivated it
>>>>>>> will
>>>>>>> ignore the next one or overwrite it. So it could be that more than one
>>>>>>> is thrown here.
>>>>>>>
>>>>>>>>> With 4.4 similar (or the same?) abort happens earlier (during PCI
>>>>>>>>> host
>>>>>>>>> driver init) and doesn't get ignored:
>>>>>>>>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>>>>>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>>>>>>>>> 0x08000000-0x085fffff]
>>>>>>>>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus
>>>>>>>>> 0001:00
>>>>>>>>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>>>>>>>>> 0x40000000-0x47ffffff]
>>>>>>>>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>>>>>>>>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>>>>>>>>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid ([bus
>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>>>>>>>>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>> [    2.645035] Unhandled fault: imprecise external abort (0x1406) at
>>>>>>>>> 0x00000000
>>>>>>>>> (see 4.4.txt for the backtrace)
>>>>>>>>>
>>>>>>>>> At first I was hoping that we simply need to re-add the removed
>>>>>>>>> workaround. I tried it but it appeared that one abort is immediately
>>>>>>>>> followed by another:
>>>>>>>>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid ([bus
>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>> [    2.945053] External imprecise Data abort at addr=0x0, fsr=0x1406
>>>>>>>>> ignored.
>>>>>>>>> [    2.951966] Unhandled fault: imprecise external abort (0x1406) at
>>>>>>>>> 0x00000000
>>>>>>>>>
>>>>>>>>> So it seems that commits bbeb920 and 9254970 broke something in PCI
>>>>>>>>> host initialization (or maybe just exposed another bug?). Instead of
>>>>>>>>> getting an abort once and late we are getting now many of them and a
>>>>>>>>> bit earlier.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> These commits mad the kernel earlier "listen" to such errors, so that
>>>>>>> they will be shown at the time they occur and not sometime later.
>>>>>>
>>>>>>
>>>>>>
>>>>>> So AFAIU with kernel 4.3:
>>>>>> 1) Aborts were masked (silent) until "Freeing unused kernel memory"
>>>>>> 2) There was one (silent) abort caused by a bootloader
>>>>>> 3) There were likely multiple aborts (silent) during early PCI init
>>>>>> 4) After unmasking we got only a single abort reported and we were
>>>>>> ignoring it
>>>>>>
>>>>>> With kernel 4.4:
>>>>>> 1) All aborts are reported immediately
>>>>>> 2) Abort caused by a bootloader gets ignored by ARM code:
>>>>>> "Hit pending asynchronous external abort (FSR=0x00001c06) during first
>>>>>> unmask"
>>>>>> thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on
>>>>>> unmask")
>>>>>> 3) There are still multiple aborts during PCI init (reported
>>>>>> immediately
>>>>>> now)
>>>>>> 4) To work as before (in 4.3) we should ignore all aborts, not only the
>>>>>> 1st one
>>>>>>
>>>>>> Of course proposed solution is an ugly workaround, we should have no
>>>>>> aborts reported in the first place.
>>>>>>
>>>>> A master abort on the PCI bus during probe of the PCI config space
>>>>> (device enumeration) is expected. Most host bridges ignore those errors
>>>>> and just return 0 for the read transaction.
>>>>>
>>>>> Some bridges forward the error onto the AXI/AMBA bus and thus cause
>>>>> imprecise external aborts on the ARM core.
>>>>
>>>>
>>>>
>>>> Yes, I suspect this is the case for these imprecise external abort
>>>> triggered
>>>> by the iProc PCIe.
>>>>
>>>>> If your host bridge doesn't
>>>>> have a way to disable error forwarding during PCI bus probe you need to
>>>>> install an abort handler. Most implementations based on the designware
>>>>> PCIe core do this already.
>>>>
>>>>
>>>>
>>>> Is this as simple as registering an abort handler to the hook in the
>>>> iProc
>>>> PCIe driver, and based on the fsr (0x1406 in our case), simply ignore the
>>>> abort by returning zero from the abort handler?
>>>
>>>
>>> This is what I did in OpenWrt an hour ago and it seems to be working:
>>>
>>> http://git.openwrt.org/?p=openwrt.git;a=commitdiff;h=f823c5da71f0dd859facc5ece575a48c28279d35
>>>
>>
>> It looks good to me except that I think you should register the hook in
>> "iproc_pcie_setup" so both the BCMA and platform based iProc PCIe drivers
>> can use it.
>
> Should I add some new field to struct iproc_pcie, like "bool
> hook_abort_handler"?
>

You want to enable/disable them based on platforms? I don't see a need 
at this point...

Thanks,

Ray

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-08 22:41                 ` Ray Jui
@ 2016-04-08 22:53                   ` Rafał Miłecki
  2016-04-09  0:00                     ` Ray Jui
  0 siblings, 1 reply; 13+ messages in thread
From: Rafał Miłecki @ 2016-04-08 22:53 UTC (permalink / raw)
  To: linux-arm-kernel

On 9 April 2016 at 00:41, Ray Jui <ray.jui@broadcom.com> wrote:
> On 4/8/2016 3:11 PM, Rafa? Mi?ecki wrote:
>>
>> On 9 April 2016 at 00:08, Ray Jui <ray.jui@broadcom.com> wrote:
>>>
>>> On 4/8/2016 3:05 PM, Rafa? Mi?ecki wrote:
>>>>
>>>>
>>>> On 9 April 2016 at 00:02, Ray Jui <ray.jui@broadcom.com> wrote:
>>>>>
>>>>>
>>>>> On 4/8/2016 1:43 AM, Lucas Stach wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Am Freitag, den 08.04.2016, 08:45 +0200 schrieb Rafa? Mi?ecki:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 04/04/2016 11:08 PM, Scott Branden wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I got regression reports from Netgear R8000 (BCM4709A0) users and
>>>>>>>>>> did
>>>>>>>>>> some testing & regression tracking with Aditya.
>>>>>>>>>>
>>>>>>>>>> It happens that Linux 4.4 doesn't boot due to the following
>>>>>>>>>> commits:
>>>>>>>>>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>>>>>>>>>> startup")
>>>>>>>>>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>>>>>>>>>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>>>>>>>>>> handler")
>>>>>>>>>>
>>>>>>>>>> In kernel 4.3 we got that abort workaround which was resulting in:
>>>>>>>>>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 -
>>>>>>>>>> c046a000)
>>>>>>>>>> [    5.694632] init: Console is alive
>>>>>>>>>> [    5.698169] init: - watchdog -
>>>>>>>>>> [    5.701470] External imprecise Data abort at addr=0x0,
>>>>>>>>>> fsr=0x1406
>>>>>>>>>> ignored.
>>>>>>>>>> As you can see, this abort was happening soon after freeing unused
>>>>>>>>>> memory and ignoring it *once* did the trick. It was never
>>>>>>>>>> appearing
>>>>>>>>>> again.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I assume it only can throw one of these and if it is deactivated it
>>>>>>>> will
>>>>>>>> ignore the next one or overwrite it. So it could be that more than
>>>>>>>> one
>>>>>>>> is thrown here.
>>>>>>>>
>>>>>>>>>> With 4.4 similar (or the same?) abort happens earlier (during PCI
>>>>>>>>>> host
>>>>>>>>>> driver init) and doesn't get ignored:
>>>>>>>>>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>>>>>>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>>>>>>>>>> 0x08000000-0x085fffff]
>>>>>>>>>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus
>>>>>>>>>> 0001:00
>>>>>>>>>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>>>>>>>>>> 0x40000000-0x47ffffff]
>>>>>>>>>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>>>>>>>>>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>>>>>>>>>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid
>>>>>>>>>> ([bus
>>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>>>>>>>>>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid
>>>>>>>>>> ([bus
>>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>>> [    2.645035] Unhandled fault: imprecise external abort (0x1406)
>>>>>>>>>> at
>>>>>>>>>> 0x00000000
>>>>>>>>>> (see 4.4.txt for the backtrace)
>>>>>>>>>>
>>>>>>>>>> At first I was hoping that we simply need to re-add the removed
>>>>>>>>>> workaround. I tried it but it appeared that one abort is
>>>>>>>>>> immediately
>>>>>>>>>> followed by another:
>>>>>>>>>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid
>>>>>>>>>> ([bus
>>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>>> [    2.945053] External imprecise Data abort at addr=0x0,
>>>>>>>>>> fsr=0x1406
>>>>>>>>>> ignored.
>>>>>>>>>> [    2.951966] Unhandled fault: imprecise external abort (0x1406)
>>>>>>>>>> at
>>>>>>>>>> 0x00000000
>>>>>>>>>>
>>>>>>>>>> So it seems that commits bbeb920 and 9254970 broke something in
>>>>>>>>>> PCI
>>>>>>>>>> host initialization (or maybe just exposed another bug?). Instead
>>>>>>>>>> of
>>>>>>>>>> getting an abort once and late we are getting now many of them and
>>>>>>>>>> a
>>>>>>>>>> bit earlier.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> These commits mad the kernel earlier "listen" to such errors, so
>>>>>>>> that
>>>>>>>> they will be shown at the time they occur and not sometime later.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> So AFAIU with kernel 4.3:
>>>>>>> 1) Aborts were masked (silent) until "Freeing unused kernel memory"
>>>>>>> 2) There was one (silent) abort caused by a bootloader
>>>>>>> 3) There were likely multiple aborts (silent) during early PCI init
>>>>>>> 4) After unmasking we got only a single abort reported and we were
>>>>>>> ignoring it
>>>>>>>
>>>>>>> With kernel 4.4:
>>>>>>> 1) All aborts are reported immediately
>>>>>>> 2) Abort caused by a bootloader gets ignored by ARM code:
>>>>>>> "Hit pending asynchronous external abort (FSR=0x00001c06) during
>>>>>>> first
>>>>>>> unmask"
>>>>>>> thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on
>>>>>>> unmask")
>>>>>>> 3) There are still multiple aborts during PCI init (reported
>>>>>>> immediately
>>>>>>> now)
>>>>>>> 4) To work as before (in 4.3) we should ignore all aborts, not only
>>>>>>> the
>>>>>>> 1st one
>>>>>>>
>>>>>>> Of course proposed solution is an ugly workaround, we should have no
>>>>>>> aborts reported in the first place.
>>>>>>>
>>>>>> A master abort on the PCI bus during probe of the PCI config space
>>>>>> (device enumeration) is expected. Most host bridges ignore those
>>>>>> errors
>>>>>> and just return 0 for the read transaction.
>>>>>>
>>>>>> Some bridges forward the error onto the AXI/AMBA bus and thus cause
>>>>>> imprecise external aborts on the ARM core.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Yes, I suspect this is the case for these imprecise external abort
>>>>> triggered
>>>>> by the iProc PCIe.
>>>>>
>>>>>> If your host bridge doesn't
>>>>>> have a way to disable error forwarding during PCI bus probe you need
>>>>>> to
>>>>>> install an abort handler. Most implementations based on the designware
>>>>>> PCIe core do this already.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Is this as simple as registering an abort handler to the hook in the
>>>>> iProc
>>>>> PCIe driver, and based on the fsr (0x1406 in our case), simply ignore
>>>>> the
>>>>> abort by returning zero from the abort handler?
>>>>
>>>>
>>>>
>>>> This is what I did in OpenWrt an hour ago and it seems to be working:
>>>>
>>>>
>>>> http://git.openwrt.org/?p=openwrt.git;a=commitdiff;h=f823c5da71f0dd859facc5ece575a48c28279d35
>>>>
>>>
>>> It looks good to me except that I think you should register the hook in
>>> "iproc_pcie_setup" so both the BCMA and platform based iProc PCIe drivers
>>> can use it.
>>
>>
>> Should I add some new field to struct iproc_pcie, like "bool
>> hook_abort_handler"?
>>
>
> You want to enable/disable them based on platforms? I don't see a need at
> this point...

I was assuming we don't want this handler hooked on Northstart+, where
the issue doesn't occur. If you think it's not worth it, we can hook
it on all platforms.

-- 
Rafa?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* 4.4 BCM5301X ARM regression "External imprecise Data abort"
  2016-04-08 22:53                   ` Rafał Miłecki
@ 2016-04-09  0:00                     ` Ray Jui
  0 siblings, 0 replies; 13+ messages in thread
From: Ray Jui @ 2016-04-09  0:00 UTC (permalink / raw)
  To: linux-arm-kernel



On 4/8/2016 3:53 PM, Rafa? Mi?ecki wrote:
> On 9 April 2016 at 00:41, Ray Jui <ray.jui@broadcom.com> wrote:
>> On 4/8/2016 3:11 PM, Rafa? Mi?ecki wrote:
>>>
>>> On 9 April 2016 at 00:08, Ray Jui <ray.jui@broadcom.com> wrote:
>>>>
>>>> On 4/8/2016 3:05 PM, Rafa? Mi?ecki wrote:
>>>>>
>>>>>
>>>>> On 9 April 2016 at 00:02, Ray Jui <ray.jui@broadcom.com> wrote:
>>>>>>
>>>>>>
>>>>>> On 4/8/2016 1:43 AM, Lucas Stach wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Am Freitag, den 08.04.2016, 08:45 +0200 schrieb Rafa? Mi?ecki:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 4 April 2016 at 23:23, Hauke Mehrtens <hauke@hauke-m.de> wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 04/04/2016 11:08 PM, Scott Branden wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 16-04-03 11:13 PM, Rafa? Mi?ecki wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I got regression reports from Netgear R8000 (BCM4709A0) users and
>>>>>>>>>>> did
>>>>>>>>>>> some testing & regression tracking with Aditya.
>>>>>>>>>>>
>>>>>>>>>>> It happens that Linux 4.4 doesn't boot due to the following
>>>>>>>>>>> commits:
>>>>>>>>>>> bbeb920 ("ARM: 8422/1: enable imprecise aborts during early kernel
>>>>>>>>>>> startup")
>>>>>>>>>>> 9254970 ("ARM: 8447/1: catch pending imprecise abort on unmask")
>>>>>>>>>>> 937b123 ("ARM: BCM5301X: remove workaround imprecise abort fault
>>>>>>>>>>> handler")
>>>>>>>>>>>
>>>>>>>>>>> In kernel 4.3 we got that abort workaround which was resulting in:
>>>>>>>>>>> [    5.007128] Freeing unused kernel memory: 212K (c0435000 -
>>>>>>>>>>> c046a000)
>>>>>>>>>>> [    5.694632] init: Console is alive
>>>>>>>>>>> [    5.698169] init: - watchdog -
>>>>>>>>>>> [    5.701470] External imprecise Data abort at addr=0x0,
>>>>>>>>>>> fsr=0x1406
>>>>>>>>>>> ignored.
>>>>>>>>>>> As you can see, this abort was happening soon after freeing unused
>>>>>>>>>>> memory and ignoring it *once* did the trick. It was never
>>>>>>>>>>> appearing
>>>>>>>>>>> again.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I assume it only can throw one of these and if it is deactivated it
>>>>>>>>> will
>>>>>>>>> ignore the next one or overwrite it. So it could be that more than
>>>>>>>>> one
>>>>>>>>> is thrown here.
>>>>>>>>>
>>>>>>>>>>> With 4.4 similar (or the same?) abort happens earlier (during PCI
>>>>>>>>>>> host
>>>>>>>>>>> driver init) and doesn't get ignored:
>>>>>>>>>>> [    2.478461] pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>>>>>>>> [    2.483451] pci 0000:00:00.0:   bridge window [mem
>>>>>>>>>>> 0x08000000-0x085fffff]
>>>>>>>>>>> [    2.599449] pcie_iproc_bcma bcma0:8: PCI host bridge to bus
>>>>>>>>>>> 0001:00
>>>>>>>>>>> [    2.605744] pci_bus 0001:00: root bus resource [mem
>>>>>>>>>>> 0x40000000-0x47ffffff]
>>>>>>>>>>> [    2.612657] pcie_iproc_bcma bcma0:8: link: UP
>>>>>>>>>>> [    2.617241] PCI: bus0: Fast back to back transfers disabled
>>>>>>>>>>> [    2.622845] pci 0001:00:00.0: bridge configuration invalid
>>>>>>>>>>> ([bus
>>>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>>>> [    2.631297] PCI: bus1: Fast back to back transfers disabled
>>>>>>>>>>> [    2.636887] pci 0001:01:00.0: bridge configuration invalid
>>>>>>>>>>> ([bus
>>>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>>>> [    2.645035] Unhandled fault: imprecise external abort (0x1406)
>>>>>>>>>>> at
>>>>>>>>>>> 0x00000000
>>>>>>>>>>> (see 4.4.txt for the backtrace)
>>>>>>>>>>>
>>>>>>>>>>> At first I was hoping that we simply need to re-add the removed
>>>>>>>>>>> workaround. I tried it but it appeared that one abort is
>>>>>>>>>>> immediately
>>>>>>>>>>> followed by another:
>>>>>>>>>>> [    2.936895] pci 0001:01:00.0: bridge configuration invalid
>>>>>>>>>>> ([bus
>>>>>>>>>>> 00-00]), reconfiguring
>>>>>>>>>>> [    2.945053] External imprecise Data abort at addr=0x0,
>>>>>>>>>>> fsr=0x1406
>>>>>>>>>>> ignored.
>>>>>>>>>>> [    2.951966] Unhandled fault: imprecise external abort (0x1406)
>>>>>>>>>>> at
>>>>>>>>>>> 0x00000000
>>>>>>>>>>>
>>>>>>>>>>> So it seems that commits bbeb920 and 9254970 broke something in
>>>>>>>>>>> PCI
>>>>>>>>>>> host initialization (or maybe just exposed another bug?). Instead
>>>>>>>>>>> of
>>>>>>>>>>> getting an abort once and late we are getting now many of them and
>>>>>>>>>>> a
>>>>>>>>>>> bit earlier.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> These commits mad the kernel earlier "listen" to such errors, so
>>>>>>>>> that
>>>>>>>>> they will be shown at the time they occur and not sometime later.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> So AFAIU with kernel 4.3:
>>>>>>>> 1) Aborts were masked (silent) until "Freeing unused kernel memory"
>>>>>>>> 2) There was one (silent) abort caused by a bootloader
>>>>>>>> 3) There were likely multiple aborts (silent) during early PCI init
>>>>>>>> 4) After unmasking we got only a single abort reported and we were
>>>>>>>> ignoring it
>>>>>>>>
>>>>>>>> With kernel 4.4:
>>>>>>>> 1) All aborts are reported immediately
>>>>>>>> 2) Abort caused by a bootloader gets ignored by ARM code:
>>>>>>>> "Hit pending asynchronous external abort (FSR=0x00001c06) during
>>>>>>>> first
>>>>>>>> unmask"
>>>>>>>> thanks to 9254970 ("ARM: 8447/1: catch pending imprecise abort on
>>>>>>>> unmask")
>>>>>>>> 3) There are still multiple aborts during PCI init (reported
>>>>>>>> immediately
>>>>>>>> now)
>>>>>>>> 4) To work as before (in 4.3) we should ignore all aborts, not only
>>>>>>>> the
>>>>>>>> 1st one
>>>>>>>>
>>>>>>>> Of course proposed solution is an ugly workaround, we should have no
>>>>>>>> aborts reported in the first place.
>>>>>>>>
>>>>>>> A master abort on the PCI bus during probe of the PCI config space
>>>>>>> (device enumeration) is expected. Most host bridges ignore those
>>>>>>> errors
>>>>>>> and just return 0 for the read transaction.
>>>>>>>
>>>>>>> Some bridges forward the error onto the AXI/AMBA bus and thus cause
>>>>>>> imprecise external aborts on the ARM core.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Yes, I suspect this is the case for these imprecise external abort
>>>>>> triggered
>>>>>> by the iProc PCIe.
>>>>>>
>>>>>>> If your host bridge doesn't
>>>>>>> have a way to disable error forwarding during PCI bus probe you need
>>>>>>> to
>>>>>>> install an abort handler. Most implementations based on the designware
>>>>>>> PCIe core do this already.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Is this as simple as registering an abort handler to the hook in the
>>>>>> iProc
>>>>>> PCIe driver, and based on the fsr (0x1406 in our case), simply ignore
>>>>>> the
>>>>>> abort by returning zero from the abort handler?
>>>>>
>>>>>
>>>>>
>>>>> This is what I did in OpenWrt an hour ago and it seems to be working:
>>>>>
>>>>>
>>>>> http://git.openwrt.org/?p=openwrt.git;a=commitdiff;h=f823c5da71f0dd859facc5ece575a48c28279d35
>>>>>
>>>>
>>>> It looks good to me except that I think you should register the hook in
>>>> "iproc_pcie_setup" so both the BCMA and platform based iProc PCIe drivers
>>>> can use it.
>>>
>>>
>>> Should I add some new field to struct iproc_pcie, like "bool
>>> hook_abort_handler"?
>>>
>>
>> You want to enable/disable them based on platforms? I don't see a need at
>> this point...
>
> I was assuming we don't want this handler hooked on Northstart+, where
> the issue doesn't occur. If you think it's not worth it, we can hook
> it on all platforms.
>

I see. In this case, we might need a device tree based configuration 
that allows us to enable/disable the abort handler for different 
platforms (for all iProc platform bus based clients, including Cygnus, 
NSP, NS2, and etc.). It sounds like even for all these iProc SoCs that 
do not use BCMA, some need this abort hook and some don't.

Do you have any bandwidth to work on that? If not, you can leave the 
hook always installed in the "iproc_pcie_setup" routine for now, and 
later on when I have time I'll work out something for it.

Thanks,

Ray

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-04-09  0:00 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-04  6:13 4.4 BCM5301X ARM regression "External imprecise Data abort" Rafał Miłecki
2016-04-04 21:08 ` Scott Branden
2016-04-04 21:23   ` Hauke Mehrtens
2016-04-08  6:45     ` Rafał Miłecki
2016-04-08  8:43       ` Lucas Stach
2016-04-08 22:02         ` Ray Jui
2016-04-08 22:05           ` Rafał Miłecki
2016-04-08 22:08             ` Ray Jui
2016-04-08 22:11               ` Rafał Miłecki
2016-04-08 22:41                 ` Ray Jui
2016-04-08 22:53                   ` Rafał Miłecki
2016-04-09  0:00                     ` Ray Jui
     [not found] ` <CAC3K-4pHw1YQbcD2pp3eaJp0o5OSO+Ft0B_0o1y6uRCJGxGhaw@mail.gmail.com>
2016-04-07 18:48   ` Rafał Miłecki

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.