#12682: WRT350nv1 BCM47XX Data bus error kernel oops on bootup
--------------------------+---------------------------------------
  Reporter:  Bill Farrow  |      Owner:  hauke
      Type:  defect       |     Status:  assigned
  Priority:  normal       |  Milestone:  Barrier Breaker 14.07
 Component:  kernel       |    Version:  Trunk
Resolution:               |   Keywords:  WRT350nv1 BCM47XX ssb pci
--------------------------+---------------------------------------

Comment (by rmilecki):

 Hi, I would like to bring back some focus to this bug.

 I own a [https://wikidevi.com/wiki/Linksys_WRT300N_v1.0 WRT300N v1.0]
 which is a very similar device. It's based on BCM4704 instead of BCM4705
 but also has CardBus BCM4321. I'm also getting `Data bus error` during the
 first MMIO read: `idhi = scan_read32(bus, 0, SSB_IDHIGH);`

 I believe the key to understand this bug is analyze of PCI resources.
 Following log comes from my WRT300N v1.0 using kernel 3.18.10:
 {{{
 [    0.980000] pci 0000:00:00.0: BAR 1: assigned [mem
 0x40000000-0x47ffffff pref]
 [    0.990000] pci 0000:00:01.0: BAR 0: assigned [mem
 0x48000000-0x48003fff]
 [    1.010000] pci 0000:00:00.0: BAR 0: assigned [mem
 0x48004000-0x48005fff]
 }}}

 Assigning resources is done by setting PCI config registers
 `PCI_BASE_ADDRESS_[0-5]`. So I decided to:
 1. Print info about every write to config register
 2. Dump resources configuration after every update

 {{{
 [ssb_pciecore_dump][bus:0 dev:0 func:0 off:0x10] 0x00000000
 [ssb_pciecore_dump][bus:0 dev:0 func:0 off:0x14] 0x00000008
 [ssb_pciecore_dump][bus:0 dev:1 func:0 off:0x10] 0x00000000

 pci 0000:00:00.0: BAR 1: assigned [mem 0x40000000-0x47ffffff pref]
 [ssb_extpci_write_config] bus:0 dev:0 func:0 off:0x14 addr:0x0c010014
 val:0x40000008
 [ssb_pciecore_dump][bus:0 dev:0 func:0 off:0x10] 0x00000000
 [ssb_pciecore_dump][bus:0 dev:0 func:0 off:0x14] 0x40000008
 [ssb_pciecore_dump][bus:0 dev:1 func:0 off:0x10] 0x00000000

 pci 0000:00:01.0: BAR 0: assigned [mem 0x48000000-0x48003fff]
 [ssb_extpci_write_config] bus:0 dev:1 func:0 off:0x10 addr:0x0c020010
 val:0x48000000
 [ssb_pciecore_dump][bus:0 dev:0 func:0 off:0x10] 0x48000000
 [ssb_pciecore_dump][bus:0 dev:0 func:0 off:0x14] 0x40000008
 [ssb_pciecore_dump][bus:0 dev:1 func:0 off:0x10] 0x48000000

 pci 0000:00:00.0: BAR 0: assigned [mem 0x48004000-0x48005fff]
 [ssb_extpci_write_config] bus:0 dev:0 func:0 off:0x10 addr:0x0c010010
 val:0x48004000
 [ssb_pciecore_dump][bus:0 dev:0 func:0 off:0x10] 0x48004000
 [ssb_pciecore_dump][bus:0 dev:0 func:0 off:0x14] 0x40000008
 [ssb_pciecore_dump][bus:0 dev:1 func:0 off:0x10] 0x48004000
 }}}
 You should notice from above log, that assigning '''different''' resources
 for `0000:00:00.0` and `0000:00:01.0` doesn't work. In my case it results
 in `0000:00:01.0` (device with SSB bus, chipset 0x4321) having wrong
 resource assigned.

 Unfortunately I'm not sure how to solve this. I guess we should somehow
 tell kernel to don't assign any resources to the `0000:00:00.0` (bridge)
 device.

 Some slightly-related commit:
 
[http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a6c84622b7fa3ea5417a9d1d0ce0bc3e7fbe3be1
 ssb: fix cardbus slot in hostmode].

--
Ticket URL: <https://dev.openwrt.org/ticket/12682#comment:11>
OpenWrt <http://openwrt.org>
Opensource Wireless Router Technology
_______________________________________________
openwrt-tickets mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-tickets

Reply via email to