All of lore.kernel.org
 help / color / mirror / Atom feed
* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-08 12:56 ` Rafał Miłecki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-08 12:56 UTC (permalink / raw)
  To: Bjorn Helgaas, Ray Jui, Scott Branden, Jon Mason, Oza Oza,
	JD Zheng, Andy Gospodarek
  Cc: linux-pci, bcm-kernel-feedback-list, linux-arm-kernel

SGksCgpJIGp1c3QgdHJpZWQgdXBncmFkaW5nIEJDTTUzMDFYIGZyb20gNC40IHRvIDQuOSBhbmQg
bm90aWNlZCBJIGRvbid0IHNlZSBjYXJkCmNvbm5lY3RlZCB0byB0aGUgMm5kIGNvbnRyb2xsZXIu
CgpbICAgIDIuNTkzNTM0XSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6NzogUENJIGhvc3QgYnJpZGdl
IHRvIGJ1cyAwMDAwOjAwClsgICAgMi41OTk3ODZdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMg
cmVzb3VyY2UgW21lbSAweDA4MDAwMDAwLTB4MGZmZmZmZmZdClsgICAgMi42MDY2NjNdIHBjaWVf
aXByb2NfYmNtYSBiY21hMDo3OiBsaW5rOiBVUApbICAgIDIuNjExMzE2XSBQQ0k6IGJ1czA6IEZh
c3QgYmFjayB0byBiYWNrIHRyYW5zZmVycyBkaXNhYmxlZApbICAgIDIuNjE2ODk5XSBwY2kgMDAw
MDowMDowMC4wOiBicmlkZ2UgY29uZmlndXJhdGlvbiBpbnZhbGlkIChbYnVzIDAwLTAwXSksIHJl
Y29uZmlndXJpbmcKWyAgICAyLjYyNTM5NV0gUENJOiBidXMxOiBGYXN0IGJhY2sgdG8gYmFjayB0
cmFuc2ZlcnMgZGlzYWJsZWQKWyAgICAyLjYzMTAxMV0gcGNpIDAwMDA6MDA6MDAuMDogQkFSIDg6
IGFzc2lnbmVkIFttZW0gMHgwODAwMDAwMC0weDA4MGZmZmZmXQpbICAgIDIuNjM3Nzk1XSBwY2kg
MDAwMDowMTowMC4wOiBCQVIgMDogYXNzaWduZWQgW21lbSAweDA4MDAwMDAwLTB4MDgwMDdmZmYg
NjRiaXRdClsgICAgMi42NDUwOTFdIHBjaSAwMDAwOjAwOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1
cyAwMV0KWyAgICAyLjY1MDA0Ml0gcGNpIDAwMDA6MDA6MDAuMDogICBicmlkZ2Ugd2luZG93IFtt
ZW0gMHgwODAwMDAwMC0weDA4MGZmZmZmXQoKWyAgICAyLjY1NzE5OV0gcGNpZV9pcHJvY19iY21h
IGJjbWEwOjg6IHJlc291cmNlIGNvbGxpc2lvbjogW21lbSAweDQwMDAwMDAwLTB4NDdmZmZmZmZd
IGNvbmZsaWN0cyB3aXRoIFBDSWUgTUVNIHNwYWNlIFttZW0gMHg0MDAwMDAwMC0weDQ3ZmZmZmZm
XQpbICAgIDIuNjY5OTQ2XSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6ODogUENJZSBjb250cm9sbGVy
IHNldHVwIGZhaWxlZApbICAgIDIuNjc2MDMyXSBwY2llX2lwcm9jX2JjbWE6IHByb2JlIG9mIGJj
bWEwOjggZmFpbGVkIHdpdGggZXJyb3IgLTE2CgoKVGhpcyB1c2VkIHRvIHdvcmsgd2l0aCBvbGRl
ciBrZXJuZWxzIGJlY2F1c2UgdGhlcmUgd2Fzbid0IGFueSBjb2xsaXNpb24gY2hlY2s6CgpbICAg
IDIuNTg3MTE3XSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6NzogUENJIGhvc3QgYnJpZGdlIHRvIGJ1
cyAwMDAwOjAwClsgICAgMi41OTMzNzhdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3Vy
Y2UgW21lbSAweDA4MDAwMDAwLTB4MGZmZmZmZmZdClsgICAgMi42MDAyNTZdIHBjaWVfaXByb2Nf
YmNtYSBiY21hMDo3OiBsaW5rOiBVUApbICAgIDIuNjA0ODg4XSBQQ0k6IGJ1czA6IEZhc3QgYmFj
ayB0byBiYWNrIHRyYW5zZmVycyBkaXNhYmxlZApbICAgIDIuNjEwNDc0XSBwY2kgMDAwMDowMDow
MC4wOiBicmlkZ2UgY29uZmlndXJhdGlvbiBpbnZhbGlkIChbYnVzIDAwLTAwXSksIHJlY29uZmln
dXJpbmcKWyAgICAyLjYxODk3M10gUENJOiBidXMxOiBGYXN0IGJhY2sgdG8gYmFjayB0cmFuc2Zl
cnMgZGlzYWJsZWQKWyAgICAyLjYyNDU5MV0gcGNpIDAwMDA6MDA6MDAuMDogQkFSIDg6IGFzc2ln
bmVkIFttZW0gMHgwODAwMDAwMC0weDA4MGZmZmZmXQpbICAgIDIuNjMxMzgyXSBwY2kgMDAwMDow
MTowMC4wOiBCQVIgMDogYXNzaWduZWQgW21lbSAweDA4MDAwMDAwLTB4MDgwMDdmZmYgNjRiaXRd
ClsgICAgMi42Mzg2ODZdIHBjaSAwMDAwOjAwOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMV0K
WyAgICAyLjY0MzYzM10gcGNpIDAwMDA6MDA6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgw
ODAwMDAwMC0weDA4MGZmZmZmXQoKWyAgICAyLjc3NzExOF0gcGNpZV9pcHJvY19iY21hIGJjbWEw
Ojg6IFBDSSBob3N0IGJyaWRnZSB0byBidXMgMDAwMTowMApbICAgIDIuNzgzMzY3XSBwY2lfYnVz
IDAwMDE6MDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHg0MDAwMDAwMC0weDQ3ZmZmZmZmXQpb
ICAgIDIuNzkwMjQ1XSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6ODogbGluazogVVAKWyAgICAyLjc5
NDg2Ml0gUENJOiBidXMwOiBGYXN0IGJhY2sgdG8gYmFjayB0cmFuc2ZlcnMgZGlzYWJsZWQKWyAg
ICAyLjgwMDQ1Ml0gcGNpIDAwMDE6MDA6MDAuMDogYnJpZGdlIGNvbmZpZ3VyYXRpb24gaW52YWxp
ZCAoW2J1cyAwMC0wMF0pLCByZWNvbmZpZ3VyaW5nClsgICAgMi44MDg5NDZdIFBDSTogYnVzMTog
RmFzdCBiYWNrIHRvIGJhY2sgdHJhbnNmZXJzIGRpc2FibGVkClsgICAgMi44MTQ1NThdIHBjaSAw
MDAxOjAwOjAwLjA6IEJBUiA4OiBhc3NpZ25lZCBbbWVtIDB4NDAwMDAwMDAtMHg0MDBmZmZmZl0K
WyAgICAyLjgyMTM1Ml0gcGNpIDAwMDE6MDE6MDAuMDogQkFSIDA6IGFzc2lnbmVkIFttZW0gMHg0
MDAwMDAwMC0weDQwMDA3ZmZmIDY0Yml0XQpbICAgIDIuODI4NjUwXSBwY2kgMDAwMTowMDowMC4w
OiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdClsgICAgMi44MzM2MDBdIHBjaSAwMDAxOjAwOjAwLjA6
ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4NDAwMDAwMDAtMHg0MDBmZmZmZl0KCgpJIGd1ZXNzIHRo
ZSBjaGVjayBpcyBPSyBhZnRlciBhbGwgYW5kIHRoZSByZWFsIHByb2JsZW0gaXMgaXByb2MgZHJp
dmVyIGFzc2lnbmluZwp0aGUgc2FtZSByZXNvdXJjZS4KCkJyb2FkY29tIHRlYW06IGNvdWxkIHlv
dSB0YWtlIGEgbG9vayBhdCB0aGlzLCBwbGVhc2U/CgotLSAKUmFmYcWCCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp
bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz
LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-08 12:56 ` Rafał Miłecki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-08 12:56 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
connected to the 2nd controller.

[    2.593534] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
[    2.599786] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
[    2.606663] pcie_iproc_bcma bcma0:7: link: UP
[    2.611316] PCI: bus0: Fast back to back transfers disabled
[    2.616899] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.625395] PCI: bus1: Fast back to back transfers disabled
[    2.631011] pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
[    2.637795] pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
[    2.645091] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.650042] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]

[    2.657199] pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
[    2.669946] pcie_iproc_bcma bcma0:8: PCIe controller setup failed
[    2.676032] pcie_iproc_bcma: probe of bcma0:8 failed with error -16


This used to work with older kernels because there wasn't any collision check:

[    2.587117] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
[    2.593378] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
[    2.600256] pcie_iproc_bcma bcma0:7: link: UP
[    2.604888] PCI: bus0: Fast back to back transfers disabled
[    2.610474] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.618973] PCI: bus1: Fast back to back transfers disabled
[    2.624591] pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
[    2.631382] pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
[    2.638686] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.643633] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]

[    2.777118] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
[    2.783367] pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
[    2.790245] pcie_iproc_bcma bcma0:8: link: UP
[    2.794862] PCI: bus0: Fast back to back transfers disabled
[    2.800452] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.808946] PCI: bus1: Fast back to back transfers disabled
[    2.814558] pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
[    2.821352] pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
[    2.828650] pci 0001:00:00.0: PCI bridge to [bus 01]
[    2.833600] pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]


I guess the check is OK after all and the real problem is iproc driver assigning
the same resource.

Broadcom team: could you take a look at this, please?

-- 
Rafa?

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-08 12:56 ` Rafał Miłecki
  (?)
@ 2017-03-08 17:22 ` Ray Jui
  2017-03-08 23:28     ` Rafał Miłecki
  -1 siblings, 1 reply; 18+ messages in thread
From: Ray Jui @ 2017-03-08 17:22 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Rafal,

On 3/8/2017 4:56 AM, Rafa? Mi?ecki wrote:
> Hi,
> 
> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see
> card
> connected to the 2nd controller.
> 
> [    2.593534] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> [    2.599786] pci_bus 0000:00: root bus resource [mem
> 0x08000000-0x0fffffff]
> [    2.606663] pcie_iproc_bcma bcma0:7: link: UP
> [    2.611316] PCI: bus0: Fast back to back transfers disabled
> [    2.616899] pci 0000:00:00.0: bridge configuration invalid ([bus
> 00-00]), reconfiguring
> [    2.625395] PCI: bus1: Fast back to back transfers disabled
> [    2.631011] pci 0000:00:00.0: BAR 8: assigned [mem
> 0x08000000-0x080fffff]
> [    2.637795] pci 0000:01:00.0: BAR 0: assigned [mem
> 0x08000000-0x08007fff 64bit]
> [    2.645091] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    2.650042] pci 0000:00:00.0:   bridge window [mem
> 0x08000000-0x080fffff]
> 
> [    2.657199] pcie_iproc_bcma bcma0:8: resource collision: [mem
> 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem
> 0x40000000-0x47ffffff]
> [    2.669946] pcie_iproc_bcma bcma0:8: PCIe controller setup failed
> [    2.676032] pcie_iproc_bcma: probe of bcma0:8 failed with error -16
> 

Would you be able to add some debugging trace to see when the resource
was allocated the first time, and when the resource was allocated the
second time and therefore results in the conflict?

In addition, I'm puzzled why this resource conflict issue for BCMA is
not seen with the first controller with outbound memory in the range of
0x08000000 - 0x0fffffff? Maybe that provides a valuable data point here.

Thanks,

Ray

> 
> This used to work with older kernels because there wasn't any collision
> check:
> 
> [    2.587117] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> [    2.593378] pci_bus 0000:00: root bus resource [mem
> 0x08000000-0x0fffffff]
> [    2.600256] pcie_iproc_bcma bcma0:7: link: UP
> [    2.604888] PCI: bus0: Fast back to back transfers disabled
> [    2.610474] pci 0000:00:00.0: bridge configuration invalid ([bus
> 00-00]), reconfiguring
> [    2.618973] PCI: bus1: Fast back to back transfers disabled
> [    2.624591] pci 0000:00:00.0: BAR 8: assigned [mem
> 0x08000000-0x080fffff]
> [    2.631382] pci 0000:01:00.0: BAR 0: assigned [mem
> 0x08000000-0x08007fff 64bit]
> [    2.638686] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    2.643633] pci 0000:00:00.0:   bridge window [mem
> 0x08000000-0x080fffff]
> 
> [    2.777118] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
> [    2.783367] pci_bus 0001:00: root bus resource [mem
> 0x40000000-0x47ffffff]
> [    2.790245] pcie_iproc_bcma bcma0:8: link: UP
> [    2.794862] PCI: bus0: Fast back to back transfers disabled
> [    2.800452] pci 0001:00:00.0: bridge configuration invalid ([bus
> 00-00]), reconfiguring
> [    2.808946] PCI: bus1: Fast back to back transfers disabled
> [    2.814558] pci 0001:00:00.0: BAR 8: assigned [mem
> 0x40000000-0x400fffff]
> [    2.821352] pci 0001:01:00.0: BAR 0: assigned [mem
> 0x40000000-0x40007fff 64bit]
> [    2.828650] pci 0001:00:00.0: PCI bridge to [bus 01]
> [    2.833600] pci 0001:00:00.0:   bridge window [mem
> 0x40000000-0x400fffff]
> 
> 
> I guess the check is OK after all and the real problem is iproc driver
> assigning
> the same resource.
> 
> Broadcom team: could you take a look at this, please?
> 

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

* Re: pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-08 17:22 ` Ray Jui
@ 2017-03-08 23:28     ` Rafał Miłecki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-08 23:28 UTC (permalink / raw)
  To: Ray Jui, Bjorn Helgaas, Ray Jui, Scott Branden, Jon Mason,
	Oza Oza, JD Zheng, Andy Gospodarek
  Cc: linux-pci, bcm-kernel-feedback-list, linux-arm-kernel

T24gMDMvMDgvMjAxNyAwNjoyMiBQTSwgUmF5IEp1aSB3cm90ZToKPiBPbiAzLzgvMjAxNyA0OjU2
IEFNLCBSYWZhxYIgTWnFgmVja2kgd3JvdGU6Cj4+IEkganVzdCB0cmllZCB1cGdyYWRpbmcgQkNN
NTMwMVggZnJvbSA0LjQgdG8gNC45IGFuZCBub3RpY2VkIEkgZG9uJ3Qgc2VlCj4+IGNhcmQKPj4g
Y29ubmVjdGVkIHRvIHRoZSAybmQgY29udHJvbGxlci4KPj4KPj4gWyAgICAyLjU5MzUzNF0gcGNp
ZV9pcHJvY19iY21hIGJjbWEwOjc6IFBDSSBob3N0IGJyaWRnZSB0byBidXMgMDAwMDowMAo+PiBb
ICAgIDIuNTk5Nzg2XSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0KPj4g
MHgwODAwMDAwMC0weDBmZmZmZmZmXQo+PiBbICAgIDIuNjA2NjYzXSBwY2llX2lwcm9jX2JjbWEg
YmNtYTA6NzogbGluazogVVAKPj4gWyAgICAyLjYxMTMxNl0gUENJOiBidXMwOiBGYXN0IGJhY2sg
dG8gYmFjayB0cmFuc2ZlcnMgZGlzYWJsZWQKPj4gWyAgICAyLjYxNjg5OV0gcGNpIDAwMDA6MDA6
MDAuMDogYnJpZGdlIGNvbmZpZ3VyYXRpb24gaW52YWxpZCAoW2J1cwo+PiAwMC0wMF0pLCByZWNv
bmZpZ3VyaW5nCj4+IFsgICAgMi42MjUzOTVdIFBDSTogYnVzMTogRmFzdCBiYWNrIHRvIGJhY2sg
dHJhbnNmZXJzIGRpc2FibGVkCj4+IFsgICAgMi42MzEwMTFdIHBjaSAwMDAwOjAwOjAwLjA6IEJB
UiA4OiBhc3NpZ25lZCBbbWVtCj4+IDB4MDgwMDAwMDAtMHgwODBmZmZmZl0KPj4gWyAgICAyLjYz
Nzc5NV0gcGNpIDAwMDA6MDE6MDAuMDogQkFSIDA6IGFzc2lnbmVkIFttZW0KPj4gMHgwODAwMDAw
MC0weDA4MDA3ZmZmIDY0Yml0XQo+PiBbICAgIDIuNjQ1MDkxXSBwY2kgMDAwMDowMDowMC4wOiBQ
Q0kgYnJpZGdlIHRvIFtidXMgMDFdCj4+IFsgICAgMi42NTAwNDJdIHBjaSAwMDAwOjAwOjAwLjA6
ICAgYnJpZGdlIHdpbmRvdyBbbWVtCj4+IDB4MDgwMDAwMDAtMHgwODBmZmZmZl0KPj4KPj4gWyAg
ICAyLjY1NzE5OV0gcGNpZV9pcHJvY19iY21hIGJjbWEwOjg6IHJlc291cmNlIGNvbGxpc2lvbjog
W21lbQo+PiAweDQwMDAwMDAwLTB4NDdmZmZmZmZdIGNvbmZsaWN0cyB3aXRoIFBDSWUgTUVNIHNw
YWNlIFttZW0KPj4gMHg0MDAwMDAwMC0weDQ3ZmZmZmZmXQo+PiBbICAgIDIuNjY5OTQ2XSBwY2ll
X2lwcm9jX2JjbWEgYmNtYTA6ODogUENJZSBjb250cm9sbGVyIHNldHVwIGZhaWxlZAo+PiBbICAg
IDIuNjc2MDMyXSBwY2llX2lwcm9jX2JjbWE6IHByb2JlIG9mIGJjbWEwOjggZmFpbGVkIHdpdGgg
ZXJyb3IgLTE2Cj4+Cj4KPiBXb3VsZCB5b3UgYmUgYWJsZSB0byBhZGQgc29tZSBkZWJ1Z2dpbmcg
dHJhY2UgdG8gc2VlIHdoZW4gdGhlIHJlc291cmNlCj4gd2FzIGFsbG9jYXRlZCB0aGUgZmlyc3Qg
dGltZSwgYW5kIHdoZW4gdGhlIHJlc291cmNlIHdhcyBhbGxvY2F0ZWQgdGhlCj4gc2Vjb25kIHRp
bWUgYW5kIHRoZXJlZm9yZSByZXN1bHRzIGluIHRoZSBjb25mbGljdD8KPgo+IEluIGFkZGl0aW9u
LCBJJ20gcHV6emxlZCB3aHkgdGhpcyByZXNvdXJjZSBjb25mbGljdCBpc3N1ZSBmb3IgQkNNQSBp
cwo+IG5vdCBzZWVuIHdpdGggdGhlIGZpcnN0IGNvbnRyb2xsZXIgd2l0aCBvdXRib3VuZCBtZW1v
cnkgaW4gdGhlIHJhbmdlIG9mCj4gMHgwODAwMDAwMCAtIDB4MGZmZmZmZmY/IE1heWJlIHRoYXQg
cHJvdmlkZXMgYSB2YWx1YWJsZSBkYXRhIHBvaW50IGhlcmUuCgpUaGlzIGlzIGNsZWFybHkgYSBj
b25mbGljdCBiZXR3ZWVuIGlwcm9jIG9uIDFzdCBjb250cm9sbGVyIGFuZCBpcHJvYyBvbiAybmQg
Y29udHJvbGxlci4KCkkgYWRkZWQgZm9sbG93aW5nIGNvZGUgdG8gdGhlIHBjaWUtaXByb2MtYmNt
YS5jOgppZiAoYmRldi0+Y29yZV91bml0ID09IDApIHsKCWRldl9pbmZvKGRldiwgIlslc10gYWJv
cnRpbmdcbiIsIF9fZnVuY19fKTsKCXJldHVybiAtRU5PVFNVUFA7Cn0KCkFuZCBpdCByZXN1bHRl
ZCBpbiAybmQgY29udHJvbGxlciAoYmNtYTA6OCkgd29ya2luZyBhZ2FpbjoKWyAgICAyLjQ3MjU2
Ml0gcGNpZV9pcHJvY19iY21hIGJjbWEwOjc6IFtpcHJvY19wY2llX2JjbWFfcHJvYmVdIGFib3J0
aW5nClsgICAgMi40NzkwMjddIHBjaWVfaXByb2NfYmNtYTogcHJvYmUgb2YgYmNtYTA6NyBmYWls
ZWQgd2l0aCBlcnJvciAtNTI0ClsgICAgMi42MDc0MjVdIHBjaWVfaXByb2NfYmNtYSBiY21hMDo4
OiBQQ0kgaG9zdCBicmlkZ2UgdG8gYnVzIDAwMDA6MDAKWyAgICAyLjYxMzY3OF0gcGNpX2J1cyAw
MDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4NDAwMDAwMDAtMHg0N2ZmZmZmZl0KWyAg
ICAyLjYyMDU1N10gcGNpZV9pcHJvY19iY21hIGJjbWEwOjg6IGxpbms6IFVQClsgICAgMi42MjUy
MDZdIFBDSTogYnVzMDogRmFzdCBiYWNrIHRvIGJhY2sgdHJhbnNmZXJzIGRpc2FibGVkClsgICAg
Mi42MzA3ODldIHBjaSAwMDAwOjAwOjAwLjA6IGJyaWRnZSBjb25maWd1cmF0aW9uIGludmFsaWQg
KFtidXMgMDAtMDBdKSwgcmVjb25maWd1cmluZwpbICAgIDIuNjM5MjYwXSBQQ0k6IGJ1czE6IEZh
c3QgYmFjayB0byBiYWNrIHRyYW5zZmVycyBkaXNhYmxlZApbICAgIDIuNjQ0ODcxXSBwY2kgMDAw
MDowMDowMC4wOiBCQVIgODogYXNzaWduZWQgW21lbSAweDQwMDAwMDAwLTB4NDAwZmZmZmZdClsg
ICAgMi42NTE2NjVdIHBjaSAwMDAwOjAxOjAwLjA6IEJBUiAwOiBhc3NpZ25lZCBbbWVtIDB4NDAw
MDAwMDAtMHg0MDAwN2ZmZiA2NGJpdF0KWyAgICAyLjY1ODk2Ml0gcGNpIDAwMDA6MDA6MDAuMDog
UENJIGJyaWRnZSB0byBbYnVzIDAxXQpbICAgIDIuNjYzOTExXSBwY2kgMDAwMDowMDowMC4wOiAg
IGJyaWRnZSB3aW5kb3cgW21lbSAweDQwMDAwMDAwLTB4NDAwZmZmZmZdCgpJJ20gbm90IGV4YWN0
bHkgc3VyZSB3aGVyZSB0aGlzIGNvbmZsaWN0IGlzIGNvbWluZyBmcm9tLiBGb3IgZGVidWdnaW5n
IHB1cnBvc2VzIEkgYWRkZWQ6CmRldl9pbmZvKGRldiwgIlslc10gcmVzX21lbTolcFJcbiIsIF9f
ZnVuY19fLCAmcmVzX21lbSk7CgpXaGljaCByZXN1bHRlZCBpbjoKWyAgICAyLjQ3NDU1OF0gcGNp
ZV9pcHJvY19iY21hIGJjbWEwOjc6IFtpcHJvY19wY2llX2JjbWFfcHJvYmVdIHJlc19tZW06W21l
bSAweDA4MDAwMDAwLTB4MGZmZmZmZmZdClsgICAgMi41OTcyNDZdIHBjaWVfaXByb2NfYmNtYSBi
Y21hMDo3OiBQQ0kgaG9zdCBicmlkZ2UgdG8gYnVzIDAwMDA6MDAKWyAgICAyLjYwMzUwMF0gcGNp
X2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4MDgwMDAwMDAtMHgwZmZmZmZm
Zl0KWyAgICAyLjYxMDM4Ml0gcGNpZV9pcHJvY19iY21hIGJjbWEwOjc6IGxpbms6IFVQClsgICAg
Mi42MTUwMzJdIFBDSTogYnVzMDogRmFzdCBiYWNrIHRvIGJhY2sgdHJhbnNmZXJzIGRpc2FibGVk
ClsgICAgMi42MjA2MTldIHBjaSAwMDAwOjAwOjAwLjA6IGJyaWRnZSBjb25maWd1cmF0aW9uIGlu
dmFsaWQgKFtidXMgMDAtMDBdKSwgcmVjb25maWd1cmluZwpbICAgIDIuNjI5MTMxXSBQQ0k6IGJ1
czE6IEZhc3QgYmFjayB0byBiYWNrIHRyYW5zZmVycyBkaXNhYmxlZApbICAgIDIuNjM0NzQ1XSBw
Y2kgMDAwMDowMDowMC4wOiBCQVIgODogYXNzaWduZWQgW21lbSAweDA4MDAwMDAwLTB4MDgwZmZm
ZmZdClsgICAgMi42NDE1MzddIHBjaSAwMDAwOjAxOjAwLjA6IEJBUiAwOiBhc3NpZ25lZCBbbWVt
IDB4MDgwMDAwMDAtMHgwODAwN2ZmZiA2NGJpdF0KWyAgICAyLjY0ODgzNV0gcGNpIDAwMDA6MDA6
MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDAxXQpbICAgIDIuNjUzNzgzXSBwY2kgMDAwMDowMDow
MC4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDA4MDAwMDAwLTB4MDgwZmZmZmZdClsgICAgMi42
NjA5NDddIHBjaWVfaXByb2NfYmNtYSBiY21hMDo4OiBbaXByb2NfcGNpZV9iY21hX3Byb2JlXSBy
ZXNfbWVtOlttZW0gMHg0MDAwMDAwMC0weDQ3ZmZmZmZmXQpbICAgIDIuNjY5NzMyXSBwY2llX2lw
cm9jX2JjbWEgYmNtYTA6ODogcmVzb3VyY2UgY29sbGlzaW9uOiBbbWVtIDB4NDAwMDAwMDAtMHg0
N2ZmZmZmZl0gY29uZmxpY3RzIHdpdGggUENJZSBNRU0gc3BhY2UgW21lbSAweDQwMDAwMDAwLTB4
NDdmZmZmZmZdClsgICAgMi42ODI0NzBdIHBjaWVfaXByb2NfYmNtYSBiY21hMDo4OiBQQ0llIGNv
bnRyb2xsZXIgc2V0dXAgZmFpbGVkClsgICAgMi42ODg1NTldIHBjaWVfaXByb2NfYmNtYTogcHJv
YmUgb2YgYmNtYTA6OCBmYWlsZWQgd2l0aCBlcnJvciAtMTYKClRoZXJlIHNob3VsZG4ndCBiZSBh
bnkgY29uZmxpY3QgYmV0d2VlbiAweDA4MDAwMDAwLTB4MGZmZmZmZmYgYW5kIDB4NDAwMDAwMDAt
MHg0N2ZmZmZmZiwgcmlnaHQ/CgpGb3IgYmNtYSB3ZSBkbyB0aGlzOgpyZXNfbWVtLnN0YXJ0ID0g
YmRldi0+YWRkcl9zWzBdOwpyZXNfbWVtLmVuZCA9IGJkZXYtPmFkZHJfc1swXSArIFNaXzEyOE0g
LSAxOwoKSW4gY2FzZSBvZiBCQ000NzA4IHRoZXJlIGFyZSBmb2xsb3dpbmcgYWRkcmVzc2VzOgpb
ICAgIDIuMjg1NDMwXSBiY21hOiBidXMwOiBDb3JlIDcgZm91bmQ6IFBDSWUgR2VuIDIgKG1hbnVm
IDB4NEJGLCBpZCAweDUwMSwgcmV2IDB4MDEsIGNsYXNzIDB4MCkJYWRkcjoweDE4MDEyMDAwIHdy
YXA6MHgxODEwMTAwMCBhZGRyX3NbMF06MHgwODAwMDAwMCBhZGRyX3NbMV06MHgwMDAwMDAwMApb
ICAgIDIuMzAwMzg0XSBiY21hOiBidXMwOiBDb3JlIDggZm91bmQ6IFBDSWUgR2VuIDIgKG1hbnVm
IDB4NEJGLCBpZCAweDUwMSwgcmV2IDB4MDEsIGNsYXNzIDB4MCkJYWRkcjoweDE4MDEzMDAwIHdy
YXA6MHgxODEwMjAwMCBhZGRyX3NbMF06MHg0MDAwMDAwMCBhZGRyX3NbMV06MHgwMDAwMDAwMAp3
aGljaCBtYXRjaGVzIHdoYXQgd2Ugc2VlIGluIHRoZSBib290IGxvZy4KCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu
ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu
aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-08 23:28     ` Rafał Miłecki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-08 23:28 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/08/2017 06:22 PM, Ray Jui wrote:
> On 3/8/2017 4:56 AM, Rafa? Mi?ecki wrote:
>> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see
>> card
>> connected to the 2nd controller.
>>
>> [    2.593534] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>> [    2.599786] pci_bus 0000:00: root bus resource [mem
>> 0x08000000-0x0fffffff]
>> [    2.606663] pcie_iproc_bcma bcma0:7: link: UP
>> [    2.611316] PCI: bus0: Fast back to back transfers disabled
>> [    2.616899] pci 0000:00:00.0: bridge configuration invalid ([bus
>> 00-00]), reconfiguring
>> [    2.625395] PCI: bus1: Fast back to back transfers disabled
>> [    2.631011] pci 0000:00:00.0: BAR 8: assigned [mem
>> 0x08000000-0x080fffff]
>> [    2.637795] pci 0000:01:00.0: BAR 0: assigned [mem
>> 0x08000000-0x08007fff 64bit]
>> [    2.645091] pci 0000:00:00.0: PCI bridge to [bus 01]
>> [    2.650042] pci 0000:00:00.0:   bridge window [mem
>> 0x08000000-0x080fffff]
>>
>> [    2.657199] pcie_iproc_bcma bcma0:8: resource collision: [mem
>> 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem
>> 0x40000000-0x47ffffff]
>> [    2.669946] pcie_iproc_bcma bcma0:8: PCIe controller setup failed
>> [    2.676032] pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>>
>
> Would you be able to add some debugging trace to see when the resource
> was allocated the first time, and when the resource was allocated the
> second time and therefore results in the conflict?
>
> In addition, I'm puzzled why this resource conflict issue for BCMA is
> not seen with the first controller with outbound memory in the range of
> 0x08000000 - 0x0fffffff? Maybe that provides a valuable data point here.

This is clearly a conflict between iproc on 1st controller and iproc on 2nd controller.

I added following code to the pcie-iproc-bcma.c:
if (bdev->core_unit == 0) {
	dev_info(dev, "[%s] aborting\n", __func__);
	return -ENOTSUPP;
}

And it resulted in 2nd controller (bcma0:8) working again:
[    2.472562] pcie_iproc_bcma bcma0:7: [iproc_pcie_bcma_probe] aborting
[    2.479027] pcie_iproc_bcma: probe of bcma0:7 failed with error -524
[    2.607425] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0000:00
[    2.613678] pci_bus 0000:00: root bus resource [mem 0x40000000-0x47ffffff]
[    2.620557] pcie_iproc_bcma bcma0:8: link: UP
[    2.625206] PCI: bus0: Fast back to back transfers disabled
[    2.630789] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.639260] PCI: bus1: Fast back to back transfers disabled
[    2.644871] pci 0000:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
[    2.651665] pci 0000:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
[    2.658962] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.663911] pci 0000:00:00.0:   bridge window [mem 0x40000000-0x400fffff]

I'm not exactly sure where this conflict is coming from. For debugging purposes I added:
dev_info(dev, "[%s] res_mem:%pR\n", __func__, &res_mem);

Which resulted in:
[    2.474558] pcie_iproc_bcma bcma0:7: [iproc_pcie_bcma_probe] res_mem:[mem 0x08000000-0x0fffffff]
[    2.597246] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
[    2.603500] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
[    2.610382] pcie_iproc_bcma bcma0:7: link: UP
[    2.615032] PCI: bus0: Fast back to back transfers disabled
[    2.620619] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.629131] PCI: bus1: Fast back to back transfers disabled
[    2.634745] pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
[    2.641537] pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
[    2.648835] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.653783] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
[    2.660947] pcie_iproc_bcma bcma0:8: [iproc_pcie_bcma_probe] res_mem:[mem 0x40000000-0x47ffffff]
[    2.669732] pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
[    2.682470] pcie_iproc_bcma bcma0:8: PCIe controller setup failed
[    2.688559] pcie_iproc_bcma: probe of bcma0:8 failed with error -16

There shouldn't be any conflict between 0x08000000-0x0fffffff and 0x40000000-0x47ffffff, right?

For bcma we do this:
res_mem.start = bdev->addr_s[0];
res_mem.end = bdev->addr_s[0] + SZ_128M - 1;

In case of BCM4708 there are following addresses:
[    2.285430] bcma: bus0: Core 7 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0)	addr:0x18012000 wrap:0x18101000 addr_s[0]:0x08000000 addr_s[1]:0x00000000
[    2.300384] bcma: bus0: Core 8 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0)	addr:0x18013000 wrap:0x18102000 addr_s[0]:0x40000000 addr_s[1]:0x00000000
which matches what we see in the boot log.

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-08 23:28     ` Rafał Miłecki
  (?)
@ 2017-03-09  0:31     ` Ray Jui
  -1 siblings, 0 replies; 18+ messages in thread
From: Ray Jui @ 2017-03-09  0:31 UTC (permalink / raw)
  To: linux-arm-kernel



On 3/8/2017 3:28 PM, Rafa? Mi?ecki wrote:
> On 03/08/2017 06:22 PM, Ray Jui wrote:
>> On 3/8/2017 4:56 AM, Rafa? Mi?ecki wrote:
>>> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see
>>> card
>>> connected to the 2nd controller.
>>>
>>> [    2.593534] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>> [    2.599786] pci_bus 0000:00: root bus resource [mem
>>> 0x08000000-0x0fffffff]
>>> [    2.606663] pcie_iproc_bcma bcma0:7: link: UP
>>> [    2.611316] PCI: bus0: Fast back to back transfers disabled
>>> [    2.616899] pci 0000:00:00.0: bridge configuration invalid ([bus
>>> 00-00]), reconfiguring
>>> [    2.625395] PCI: bus1: Fast back to back transfers disabled
>>> [    2.631011] pci 0000:00:00.0: BAR 8: assigned [mem
>>> 0x08000000-0x080fffff]
>>> [    2.637795] pci 0000:01:00.0: BAR 0: assigned [mem
>>> 0x08000000-0x08007fff 64bit]
>>> [    2.645091] pci 0000:00:00.0: PCI bridge to [bus 01]
>>> [    2.650042] pci 0000:00:00.0:   bridge window [mem
>>> 0x08000000-0x080fffff]
>>>
>>> [    2.657199] pcie_iproc_bcma bcma0:8: resource collision: [mem
>>> 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem
>>> 0x40000000-0x47ffffff]
>>> [    2.669946] pcie_iproc_bcma bcma0:8: PCIe controller setup failed
>>> [    2.676032] pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>>>
>>
>> Would you be able to add some debugging trace to see when the resource
>> was allocated the first time, and when the resource was allocated the
>> second time and therefore results in the conflict?
>>
>> In addition, I'm puzzled why this resource conflict issue for BCMA is
>> not seen with the first controller with outbound memory in the range of
>> 0x08000000 - 0x0fffffff? Maybe that provides a valuable data point here.
> 
> This is clearly a conflict between iproc on 1st controller and iproc on
> 2nd controller.
> 
> I added following code to the pcie-iproc-bcma.c:
> if (bdev->core_unit == 0) {
>     dev_info(dev, "[%s] aborting\n", __func__);
>     return -ENOTSUPP;
> }
> 
> And it resulted in 2nd controller (bcma0:8) working again:

This is what puzzled me. The first controller is using the following
outbound window: 0x8000000 - 0x0fffffff

The 2nd controller is using:
0x40000000 - 0x400fffff

They should not conflict with each other.

> [    2.472562] pcie_iproc_bcma bcma0:7: [iproc_pcie_bcma_probe] aborting
> [    2.479027] pcie_iproc_bcma: probe of bcma0:7 failed with error -524
> [    2.607425] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0000:00
> [    2.613678] pci_bus 0000:00: root bus resource [mem
> 0x40000000-0x47ffffff]
> [    2.620557] pcie_iproc_bcma bcma0:8: link: UP
> [    2.625206] PCI: bus0: Fast back to back transfers disabled
> [    2.630789] pci 0000:00:00.0: bridge configuration invalid ([bus
> 00-00]), reconfiguring
> [    2.639260] PCI: bus1: Fast back to back transfers disabled
> [    2.644871] pci 0000:00:00.0: BAR 8: assigned [mem
> 0x40000000-0x400fffff]
> [    2.651665] pci 0000:01:00.0: BAR 0: assigned [mem
> 0x40000000-0x40007fff 64bit]
> [    2.658962] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    2.663911] pci 0000:00:00.0:   bridge window [mem
> 0x40000000-0x400fffff]
> 
> I'm not exactly sure where this conflict is coming from. For debugging
> purposes I added:
> dev_info(dev, "[%s] res_mem:%pR\n", __func__, &res_mem);
> 
> Which resulted in:
> [    2.474558] pcie_iproc_bcma bcma0:7: [iproc_pcie_bcma_probe]
> res_mem:[mem 0x08000000-0x0fffffff]
> [    2.597246] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> [    2.603500] pci_bus 0000:00: root bus resource [mem
> 0x08000000-0x0fffffff]
> [    2.610382] pcie_iproc_bcma bcma0:7: link: UP
> [    2.615032] PCI: bus0: Fast back to back transfers disabled
> [    2.620619] pci 0000:00:00.0: bridge configuration invalid ([bus
> 00-00]), reconfiguring
> [    2.629131] PCI: bus1: Fast back to back transfers disabled
> [    2.634745] pci 0000:00:00.0: BAR 8: assigned [mem
> 0x08000000-0x080fffff]
> [    2.641537] pci 0000:01:00.0: BAR 0: assigned [mem
> 0x08000000-0x08007fff 64bit]
> [    2.648835] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    2.653783] pci 0000:00:00.0:   bridge window [mem
> 0x08000000-0x080fffff]
> [    2.660947] pcie_iproc_bcma bcma0:8: [iproc_pcie_bcma_probe]
> res_mem:[mem 0x40000000-0x47ffffff]
> [    2.669732] pcie_iproc_bcma bcma0:8: resource collision: [mem
> 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem
> 0x40000000-0x47ffffff]

Someone must have reserved 0x40000000-0x47ffffff silently somewhere, as
this is what the kernel complains about.

Btw, this code is from devm_request_resource in kernel/resource.c

> [    2.682470] pcie_iproc_bcma bcma0:8: PCIe controller setup failed
> [    2.688559] pcie_iproc_bcma: probe of bcma0:8 failed with error -16
> 
> There shouldn't be any conflict between 0x08000000-0x0fffffff and
> 0x40000000-0x47ffffff, right?

Correct. You need to figure out when 0x40000000-0x47ffffff was reserved
previously.

> 
> For bcma we do this:
> res_mem.start = bdev->addr_s[0];
> res_mem.end = bdev->addr_s[0] + SZ_128M - 1;
> 
> In case of BCM4708 there are following addresses:
> [    2.285430] bcma: bus0: Core 7 found: PCIe Gen 2 (manuf 0x4BF, id
> 0x501, rev 0x01, class 0x0)    addr:0x18012000 wrap:0x18101000
> addr_s[0]:0x08000000 addr_s[1]:0x00000000
> [    2.300384] bcma: bus0: Core 8 found: PCIe Gen 2 (manuf 0x4BF, id
> 0x501, rev 0x01, class 0x0)    addr:0x18013000 wrap:0x18102000
> addr_s[0]:0x40000000 addr_s[1]:0x00000000
> which matches what we see in the boot log.

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

* Re: pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-08 12:56 ` Rafał Miłecki
@ 2017-03-09  7:39   ` Rafał Miłecki
  -1 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-09  7:39 UTC (permalink / raw)
  To: Bjorn Helgaas, Ray Jui, Scott Branden, Jon Mason, Oza Oza,
	JD Zheng, Andy Gospodarek
  Cc: linux-pci, bcm-kernel-feedback-list, linux-arm-kernel, Felix Fietkau

T24gMDMvMDgvMjAxNyAwMTo1NiBQTSwgUmFmYcWCIE1pxYJlY2tpIHdyb3RlOgo+IEkganVzdCB0
cmllZCB1cGdyYWRpbmcgQkNNNTMwMVggZnJvbSA0LjQgdG8gNC45IGFuZCBub3RpY2VkIEkgZG9u
J3Qgc2VlIGNhcmQKPiBjb25uZWN0ZWQgdG8gdGhlIDJuZCBjb250cm9sbGVyLgo+Cj4gWyAgICAy
LjU5MzUzNF0gcGNpZV9pcHJvY19iY21hIGJjbWEwOjc6IFBDSSBob3N0IGJyaWRnZSB0byBidXMg
MDAwMDowMAo+IFsgICAgMi41OTk3ODZdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3Vy
Y2UgW21lbSAweDA4MDAwMDAwLTB4MGZmZmZmZmZdCj4gWyAgICAyLjYwNjY2M10gcGNpZV9pcHJv
Y19iY21hIGJjbWEwOjc6IGxpbms6IFVQCj4gWyAgICAyLjYxMTMxNl0gUENJOiBidXMwOiBGYXN0
IGJhY2sgdG8gYmFjayB0cmFuc2ZlcnMgZGlzYWJsZWQKPiBbICAgIDIuNjE2ODk5XSBwY2kgMDAw
MDowMDowMC4wOiBicmlkZ2UgY29uZmlndXJhdGlvbiBpbnZhbGlkIChbYnVzIDAwLTAwXSksIHJl
Y29uZmlndXJpbmcKPiBbICAgIDIuNjI1Mzk1XSBQQ0k6IGJ1czE6IEZhc3QgYmFjayB0byBiYWNr
IHRyYW5zZmVycyBkaXNhYmxlZAo+IFsgICAgMi42MzEwMTFdIHBjaSAwMDAwOjAwOjAwLjA6IEJB
UiA4OiBhc3NpZ25lZCBbbWVtIDB4MDgwMDAwMDAtMHgwODBmZmZmZl0KPiBbICAgIDIuNjM3Nzk1
XSBwY2kgMDAwMDowMTowMC4wOiBCQVIgMDogYXNzaWduZWQgW21lbSAweDA4MDAwMDAwLTB4MDgw
MDdmZmYgNjRiaXRdCj4gWyAgICAyLjY0NTA5MV0gcGNpIDAwMDA6MDA6MDAuMDogUENJIGJyaWRn
ZSB0byBbYnVzIDAxXQo+IFsgICAgMi42NTAwNDJdIHBjaSAwMDAwOjAwOjAwLjA6ICAgYnJpZGdl
IHdpbmRvdyBbbWVtIDB4MDgwMDAwMDAtMHgwODBmZmZmZl0KPgo+IFsgICAgMi42NTcxOTldIHBj
aWVfaXByb2NfYmNtYSBiY21hMDo4OiByZXNvdXJjZSBjb2xsaXNpb246IFttZW0gMHg0MDAwMDAw
MC0weDQ3ZmZmZmZmXSBjb25mbGljdHMgd2l0aCBQQ0llIE1FTSBzcGFjZSBbbWVtIDB4NDAwMDAw
MDAtMHg0N2ZmZmZmZl0KPiBbICAgIDIuNjY5OTQ2XSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6ODog
UENJZSBjb250cm9sbGVyIHNldHVwIGZhaWxlZAo+IFsgICAgMi42NzYwMzJdIHBjaWVfaXByb2Nf
YmNtYTogcHJvYmUgb2YgYmNtYTA6OCBmYWlsZWQgd2l0aCBlcnJvciAtMTYKPgo+Cj4gVGhpcyB1
c2VkIHRvIHdvcmsgd2l0aCBvbGRlciBrZXJuZWxzIGJlY2F1c2UgdGhlcmUgd2Fzbid0IGFueSBj
b2xsaXNpb24gY2hlY2s6Cj4KPiBbICAgIDIuNTg3MTE3XSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6
NzogUENJIGhvc3QgYnJpZGdlIHRvIGJ1cyAwMDAwOjAwCj4gWyAgICAyLjU5MzM3OF0gcGNpX2J1
cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4MDgwMDAwMDAtMHgwZmZmZmZmZl0K
PiBbICAgIDIuNjAwMjU2XSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6NzogbGluazogVVAKPiBbICAg
IDIuNjA0ODg4XSBQQ0k6IGJ1czA6IEZhc3QgYmFjayB0byBiYWNrIHRyYW5zZmVycyBkaXNhYmxl
ZAo+IFsgICAgMi42MTA0NzRdIHBjaSAwMDAwOjAwOjAwLjA6IGJyaWRnZSBjb25maWd1cmF0aW9u
IGludmFsaWQgKFtidXMgMDAtMDBdKSwgcmVjb25maWd1cmluZwo+IFsgICAgMi42MTg5NzNdIFBD
STogYnVzMTogRmFzdCBiYWNrIHRvIGJhY2sgdHJhbnNmZXJzIGRpc2FibGVkCj4gWyAgICAyLjYy
NDU5MV0gcGNpIDAwMDA6MDA6MDAuMDogQkFSIDg6IGFzc2lnbmVkIFttZW0gMHgwODAwMDAwMC0w
eDA4MGZmZmZmXQo+IFsgICAgMi42MzEzODJdIHBjaSAwMDAwOjAxOjAwLjA6IEJBUiAwOiBhc3Np
Z25lZCBbbWVtIDB4MDgwMDAwMDAtMHgwODAwN2ZmZiA2NGJpdF0KPiBbICAgIDIuNjM4Njg2XSBw
Y2kgMDAwMDowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdCj4gWyAgICAyLjY0MzYzM10g
cGNpIDAwMDA6MDA6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgwODAwMDAwMC0weDA4MGZm
ZmZmXQo+Cj4gWyAgICAyLjc3NzExOF0gcGNpZV9pcHJvY19iY21hIGJjbWEwOjg6IFBDSSBob3N0
IGJyaWRnZSB0byBidXMgMDAwMTowMAo+IFsgICAgMi43ODMzNjddIHBjaV9idXMgMDAwMTowMDog
cm9vdCBidXMgcmVzb3VyY2UgW21lbSAweDQwMDAwMDAwLTB4NDdmZmZmZmZdCj4gWyAgICAyLjc5
MDI0NV0gcGNpZV9pcHJvY19iY21hIGJjbWEwOjg6IGxpbms6IFVQCj4gWyAgICAyLjc5NDg2Ml0g
UENJOiBidXMwOiBGYXN0IGJhY2sgdG8gYmFjayB0cmFuc2ZlcnMgZGlzYWJsZWQKPiBbICAgIDIu
ODAwNDUyXSBwY2kgMDAwMTowMDowMC4wOiBicmlkZ2UgY29uZmlndXJhdGlvbiBpbnZhbGlkIChb
YnVzIDAwLTAwXSksIHJlY29uZmlndXJpbmcKPiBbICAgIDIuODA4OTQ2XSBQQ0k6IGJ1czE6IEZh
c3QgYmFjayB0byBiYWNrIHRyYW5zZmVycyBkaXNhYmxlZAo+IFsgICAgMi44MTQ1NThdIHBjaSAw
MDAxOjAwOjAwLjA6IEJBUiA4OiBhc3NpZ25lZCBbbWVtIDB4NDAwMDAwMDAtMHg0MDBmZmZmZl0K
PiBbICAgIDIuODIxMzUyXSBwY2kgMDAwMTowMTowMC4wOiBCQVIgMDogYXNzaWduZWQgW21lbSAw
eDQwMDAwMDAwLTB4NDAwMDdmZmYgNjRiaXRdCj4gWyAgICAyLjgyODY1MF0gcGNpIDAwMDE6MDA6
MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDAxXQo+IFsgICAgMi44MzM2MDBdIHBjaSAwMDAxOjAw
OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4NDAwMDAwMDAtMHg0MDBmZmZmZl0KPgo+Cj4g
SSBndWVzcyB0aGUgY2hlY2sgaXMgT0sgYWZ0ZXIgYWxsIGFuZCB0aGUgcmVhbCBwcm9ibGVtIGlz
IGlwcm9jIGRyaXZlciBhc3NpZ25pbmcKPiB0aGUgc2FtZSByZXNvdXJjZS4KPgo+IEJyb2FkY29t
IHRlYW06IGNvdWxkIHlvdSB0YWtlIGEgbG9vayBhdCB0aGlzLCBwbGVhc2U/CgpJIGZvdW5kIGEg
cmVhc29uIG9mIHRoaXMgY29uZmxpY3QgKGFuZCBwcm9iYWJseSByYW5kb20gY3Jhc2hlcyBJIHN0
YXJ0ZWQKc2VlaW5nIHdpdGggNC45KS4gSSBiZWxpZXZlIHdlIGhhdmUgYSBtZW1vcnkgY29ycnVw
dGlvbi4KClNvIHRoYXQgY29tbWl0IGMzMjQ1YTU2NjQwMCAoIlBDSTogaXByb2M6IFJlcXVlc3Qg
aG9zdCBicmlkZ2Ugd2luZG93CnJlc291cmNlcyIpIGFkZHMgY2FsbCB0byB0aGUgZGV2bV9yZXF1
ZXN0X3BjaV9idXNfcmVzb3VyY2VzIHBhc3NpbmcgInJlcyIKcG9pbnRlci4gVGhlIHByb2JsZW0g
aXMgInJlcyIgcG9pbnRzIHRvIHRoZSAqbG9jYWwqIHZhcmlhYmxlIG9mCmlwcm9jX3BjaWVfYmNt
YV9wcm9iZSBmdW5jdGlvbi4KQXMgc29vbiBhcyB0aGUgaXByb2NfcGNpZV9iY21hX3Byb2JlIGV4
aXRzIHRoYXQgcmVzb3VyY2UgdmFyaWFibGUgaXMgbm90CmFjY2Vzc2libGUgYW55bW9yZSwgeWV0
IGl0J3MgdXNlZCBhcyBhIGNoaWxkIGZvciAmaW9tZW1fcmVzb3VyY2UuIFRoaW5ncyBnbwpldmVu
IHdvcnNlIG9uIGFub3RoZXIgaXByb2NfcGNpZV9iY21hX3Byb2JlIGNhbGwuIEl0cyBsb2NhbCB2
YXJpYWJsZSByZXNfbWVtCmdldHMgdGhlIHNhbWUgbWVtb3J5IGFkZHJlc3MgYXMgdGhlIG9uZSBh
bHJlYWR5IHVzZWQgZm9yICZpb21lbV9yZXNvdXJjZS4gV2UKbW9kaWZ5IGxvY2FsIHZhcmlhYmxl
IG1vZGlmeWluZyBhbHJlYWR5LWFkZGVkIHJlc291cmNlIGF0IHRoZSBzYW1lIHRpbWUhCgpTbyB0
aGlzIGlzIHdoZXJlIHRoaXMgd2hvbGUgY29uZmxpY3RzIGNvbWVzIGZyb20uIFdoYXQgaXMgc3Rv
cmVkIGFzIHJlc291cmNlCmZvciBbbWVtIDB4MDgwMDAwMDAtMHgwZmZmZmZmZl0gcmFuZ2UgZ2V0
cyBtb2RpZmllZCBhcyAibG9jYWwiIHZhcmlhYmxlIHRvIHRoZQpbbWVtIDB4NDAwMDAwMDAtMHg0
N2ZmZmZmZl0gYW5kIHRoZW4gd2UgdHJ5IHRvIHJlLXJlcXVlc3QgdGhlIHNhbWUgcmVzb3VyY2Uu
CgpJJ20gcGFzdGluZyBsb2cgJiBwYXRjaCB0aGF0IGFsbG93ZWQgbWUgdG8gZGVidWcgJiBub3Rp
Y2UgdGhpcyBwcm9ibGVtIHNvIHlvdQpjYW4gY29uZmlybSBteSBvYnNlcnZhdGlvbnMuCgpbICAg
IDIuNjE1MDU1XSByZXNvdXJjZTogW19fcmVxdWVzdF9yZXNvdXJjZV0gcm9vdDpbbWVtIDB4MDAw
MDAwMDAtMHhmZmZmZmZmZl0KWyAgICAyLjYyMTk5NV0gcmVzb3VyY2U6IFtfX3JlcXVlc3RfcmVz
b3VyY2VdICBuZXc6Yzc4MzliZTAgbmV3OlttZW0gMHgwODAwMDAwMC0weDBmZmZmZmZmXQpbICAg
IDIuNjMwMDYwXSByZXNvdXJjZTogW19fcmVxdWVzdF9yZXNvdXJjZV0gIHRtcDpjN2ZmZWUwMCB0
bXA6W21lbSAweDAwMDAwMDAwLTB4MDdmZmZmZmZdClsgICAgMi42MzgxMjJdIHJlc291cmNlOiBb
X19yZXF1ZXN0X3Jlc291cmNlXSAgdG1wOmM3YWRmMTgwIHRtcDpbbWVtIDB4MTgwMDAzMDAtMHgx
ODAwMDNmZl0KWyAgICAyLjc2NDk0MV0gcGNpZV9pcHJvY19iY21hIGJjbWEwOjc6IFBDSSBob3N0
IGJyaWRnZSB0byBidXMgMDAwMDowMApbICAgIDIuNzcxMTk0XSBwY2lfYnVzIDAwMDA6MDA6IHJv
b3QgYnVzIHJlc291cmNlIFttZW0gMHgwODAwMDAwMC0weDBmZmZmZmZmXQpbICAgIDIuNzc4MDY2
XSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6NzogbGluazogVVAKWyAgICAyLjc4MjY5M10gUENJOiBi
dXMwOiBGYXN0IGJhY2sgdG8gYmFjayB0cmFuc2ZlcnMgZGlzYWJsZWQKWyAgICAyLjc4ODI2N10g
cGNpIDAwMDA6MDA6MDAuMDogYnJpZGdlIGNvbmZpZ3VyYXRpb24gaW52YWxpZCAoW2J1cyAwMC0w
MF0pLCByZWNvbmZpZ3VyaW5nClsgICAgMi43OTY3NjddIFBDSTogYnVzMTogRmFzdCBiYWNrIHRv
IGJhY2sgdHJhbnNmZXJzIGRpc2FibGVkClsgICAgMi44MDIzNzVdIHJlc291cmNlOiBbX19yZXF1
ZXN0X3Jlc291cmNlXSByb290OlttZW0gMHgwODAwMDAwMC0weDBmZmZmZmZmXQpbICAgIDIuODA5
MzI0XSByZXNvdXJjZTogW19fcmVxdWVzdF9yZXNvdXJjZV0gIG5ldzpjN2IwOGU2NCBuZXc6W21l
bSBzaXplIDB4MDAxMDAwMDBdClsgICAgMi44MTY4NjVdIHJlc291cmNlOiBbX19yZXF1ZXN0X3Jl
c291cmNlXSAgdG1wOiAgKG51bGwpIHRtcDogIChudWxsKQpbICAgIDIuODIzMjgyXSBwY2kgMDAw
MDowMDowMC4wOiBCQVIgODogYXNzaWduZWQgW21lbSAweDA4MDAwMDAwLTB4MDgwZmZmZmZdClsg
ICAgMi44MzAwNDldIHJlc291cmNlOiBbX19yZXF1ZXN0X3Jlc291cmNlXSByb290OlttZW0gMHgw
ODAwMDAwMC0weDA4MGZmZmZmXQpbICAgIDIuODM2OTg2XSByZXNvdXJjZTogW19fcmVxdWVzdF9y
ZXNvdXJjZV0gIG5ldzpjN2IwOTE2NCBuZXc6W21lbSBzaXplIDB4MDAwMDgwMDAgNjRiaXRdClsg
ICAgMi44NDUwNDddIHJlc291cmNlOiBbX19yZXF1ZXN0X3Jlc291cmNlXSAgdG1wOiAgKG51bGwp
IHRtcDogIChudWxsKQpbICAgIDIuODUxNDY0XSBwY2kgMDAwMDowMTowMC4wOiBCQVIgMDogYXNz
aWduZWQgW21lbSAweDA4MDAwMDAwLTB4MDgwMDdmZmYgNjRiaXRdClsgICAgMi44NTg3NThdIHBj
aSAwMDAwOjAwOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMV0KWyAgICAyLjg2MzcwMF0gcGNp
IDAwMDA6MDA6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgwODAwMDAwMC0weDA4MGZmZmZm
XQoKWyAgICAyLjg3MDgzNF0gcmVzb3VyY2U6IFtfX3JlcXVlc3RfcmVzb3VyY2VdIHJvb3Q6W21l
bSAweDAwMDAwMDAwLTB4ZmZmZmZmZmZdClsgICAgMi44Nzc3OTFdIHJlc291cmNlOiBbX19yZXF1
ZXN0X3Jlc291cmNlXSAgbmV3OmM3ODM5YmUwIG5ldzpbbWVtIDB4NDAwMDAwMDAtMHg0N2ZmZmZm
Zl0KWyAgICAyLjg4NTg1NV0gcmVzb3VyY2U6IFtfX3JlcXVlc3RfcmVzb3VyY2VdICB0bXA6Yzdm
ZmVlMDAgdG1wOlttZW0gMHgwMDAwMDAwMC0weDA3ZmZmZmZmXQpbICAgIDIuODkzOTExXSByZXNv
dXJjZTogW19fcmVxdWVzdF9yZXNvdXJjZV0gIHRtcDpjNzgzOWJlMCB0bXA6W21lbSAweDQwMDAw
MDAwLTB4NDdmZmZmZmZdClsgICAgMi45MDE5NzFdIHJlc291cmNlOiBbX19yZXF1ZXN0X3Jlc291
cmNlXSBGb3VuZCBjb2xsaXNpb24gd2l0aCB0bXAKWyAgICAyLjkwODIyNV0gcGNpZV9pcHJvY19i
Y21hIGJjbWEwOjg6IHJlc291cmNlIGNvbGxpc2lvbjogW21lbSAweDQwMDAwMDAwLTB4NDdmZmZm
ZmZdIGNvbmZsaWN0cyB3aXRoIFBDSWUgTUVNIHNwYWNlIFttZW0gMHg0MDAwMDAwMC0weDQ3ZmZm
ZmZmXQpbICAgIDIuOTIwOTUyXSBwY2llX2lwcm9jX2JjbWEgYmNtYTA6ODogUENJZSBjb250cm9s
bGVyIHNldHVwIGZhaWxlZApbICAgIDIuOTI3MDM3XSBwY2llX2lwcm9jX2JjbWE6IHByb2JlIG9m
IGJjbWEwOjggZmFpbGVkIHdpdGggZXJyb3IgLTE2CgpBcyB5b3UgY2FuIHNlZSwgZm9yIHRoZSBm
aXJzdCBjb250cm9sbGVyIGZvbGxvd2luZyByZXNvdXJjZSBoYXMgYmVlbiByZXF1ZXN0ZWQ6CmM3
ODM5YmUwIFttZW0gMHgwODAwMDAwMC0weDBmZmZmZmZmXQoKVGhlbiB3aGVuIHdlIHRyeSB0byBw
cm9iZSBzZWNvbmQgY29udHJvbGxlciB0aGVyZSBhcmUgZm9sbG93aW5nIHJlc291cmNlcwphbHJl
YWR5IGluIHVzZToKYzdmZmVlMDAgW21lbSAweDAwMDAwMDAwLTB4MDdmZmZmZmZdCmM3ODM5YmUw
IFttZW0gMHg0MDAwMDAwMC0weDQ3ZmZmZmZmXQphbmQgd2UgdHJ5IHRvIHJlcXVlc3Q6CmM3ODM5
YmUwIFttZW0gMHg0MDAwMDAwMC0weDQ3ZmZmZmZmXQoKCmRpZmYgLS1naXQgYS9rZXJuZWwvcmVz
b3VyY2UuYyBiL2tlcm5lbC9yZXNvdXJjZS5jCmluZGV4IDliNWYwNDQuLmZhYjk0MDUgMTAwNjQ0
Ci0tLSBhL2tlcm5lbC9yZXNvdXJjZS5jCisrKyBiL2tlcm5lbC9yZXNvdXJjZS5jCkBAIC0yMjAs
NiArMjIwLDggQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVzdF9yZXNvdXJjZShz
dHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXIKICAJcmVzb3VyY2Vfc2l6ZV90IGVu
ZCA9IG5ldy0+ZW5kOwogIAlzdHJ1Y3QgcmVzb3VyY2UgKnRtcCwgKipwOwoKKwlpZiAobmV3LT5m
bGFncyAmIElPUkVTT1VSQ0VfTUVNKSBwcl9pbmZvKCJbJXNdIHJvb3Q6JXBSXG4iLCBfX2Z1bmNf
Xywgcm9vdCk7CisJaWYgKG5ldy0+ZmxhZ3MgJiBJT1JFU09VUkNFX01FTSkgcHJfaW5mbygiWyVz
XSAgbmV3OiVwIG5ldzolcFJcbiIsIF9fZnVuY19fLCBuZXcsIG5ldyk7CiAgCWlmIChlbmQgPCBz
dGFydCkKICAJCXJldHVybiByb290OwogIAlpZiAoc3RhcnQgPCByb290LT5zdGFydCkKQEAgLTIy
OSw2ICsyMzEsNyBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNlICogX19yZXF1ZXN0X3Jlc291cmNl
KHN0cnVjdCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJlc291cgogIAlwID0gJnJvb3QtPmNoaWxk
OwogIAlmb3IgKDs7KSB7CiAgCQl0bXAgPSAqcDsKKwkJaWYgKG5ldy0+ZmxhZ3MgJiBJT1JFU09V
UkNFX01FTSkgcHJfaW5mbygiWyVzXSAgdG1wOiVwIHRtcDolcFJcbiIsIF9fZnVuY19fLCB0bXAs
IHRtcCk7CiAgCQlpZiAoIXRtcCB8fCB0bXAtPnN0YXJ0ID4gZW5kKSB7CiAgCQkJbmV3LT5zaWJs
aW5nID0gdG1wOwogIAkJCSpwID0gbmV3OwpAQCAtMjM4LDYgKzI0MSw3IEBAIHN0YXRpYyBzdHJ1
Y3QgcmVzb3VyY2UgKiBfX3JlcXVlc3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBz
dHJ1Y3QgcmVzb3VyCiAgCQlwID0gJnRtcC0+c2libGluZzsKICAJCWlmICh0bXAtPmVuZCA8IHN0
YXJ0KQogIAkJCWNvbnRpbnVlOworCQlpZiAobmV3LT5mbGFncyAmIElPUkVTT1VSQ0VfTUVNKSBw
cl9pbmZvKCJbJXNdIEZvdW5kIGNvbGxpc2lvbiB3aXRoIHRtcFxuIiwgX19mdW5jX18pOwogIAkJ
cmV0dXJuIHRtcDsKICAJfQogIH0KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu
ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu
L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-09  7:39   ` Rafał Miłecki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-09  7:39 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/08/2017 01:56 PM, Rafa? Mi?ecki wrote:
> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
> connected to the 2nd controller.
>
> [    2.593534] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> [    2.599786] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
> [    2.606663] pcie_iproc_bcma bcma0:7: link: UP
> [    2.611316] PCI: bus0: Fast back to back transfers disabled
> [    2.616899] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> [    2.625395] PCI: bus1: Fast back to back transfers disabled
> [    2.631011] pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
> [    2.637795] pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
> [    2.645091] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    2.650042] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>
> [    2.657199] pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
> [    2.669946] pcie_iproc_bcma bcma0:8: PCIe controller setup failed
> [    2.676032] pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>
>
> This used to work with older kernels because there wasn't any collision check:
>
> [    2.587117] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> [    2.593378] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
> [    2.600256] pcie_iproc_bcma bcma0:7: link: UP
> [    2.604888] PCI: bus0: Fast back to back transfers disabled
> [    2.610474] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> [    2.618973] PCI: bus1: Fast back to back transfers disabled
> [    2.624591] pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
> [    2.631382] pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
> [    2.638686] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    2.643633] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>
> [    2.777118] pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
> [    2.783367] pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
> [    2.790245] pcie_iproc_bcma bcma0:8: link: UP
> [    2.794862] PCI: bus0: Fast back to back transfers disabled
> [    2.800452] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> [    2.808946] PCI: bus1: Fast back to back transfers disabled
> [    2.814558] pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
> [    2.821352] pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
> [    2.828650] pci 0001:00:00.0: PCI bridge to [bus 01]
> [    2.833600] pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
>
>
> I guess the check is OK after all and the real problem is iproc driver assigning
> the same resource.
>
> Broadcom team: could you take a look at this, please?

I found a reason of this conflict (and probably random crashes I started
seeing with 4.9). I believe we have a memory corruption.

So that commit c3245a566400 ("PCI: iproc: Request host bridge window
resources") adds call to the devm_request_pci_bus_resources passing "res"
pointer. The problem is "res" points to the *local* variable of
iproc_pcie_bcma_probe function.
As soon as the iproc_pcie_bcma_probe exits that resource variable is not
accessible anymore, yet it's used as a child for &iomem_resource. Things go
even worse on another iproc_pcie_bcma_probe call. Its local variable res_mem
gets the same memory address as the one already used for &iomem_resource. We
modify local variable modifying already-added resource at the same time!

So this is where this whole conflicts comes from. What is stored as resource
for [mem 0x08000000-0x0fffffff] range gets modified as "local" variable to the
[mem 0x40000000-0x47ffffff] and then we try to re-request the same resource.

I'm pasting log & patch that allowed me to debug & notice this problem so you
can confirm my observations.

[    2.615055] resource: [__request_resource] root:[mem 0x00000000-0xffffffff]
[    2.621995] resource: [__request_resource]  new:c7839be0 new:[mem 0x08000000-0x0fffffff]
[    2.630060] resource: [__request_resource]  tmp:c7ffee00 tmp:[mem 0x00000000-0x07ffffff]
[    2.638122] resource: [__request_resource]  tmp:c7adf180 tmp:[mem 0x18000300-0x180003ff]
[    2.764941] pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
[    2.771194] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
[    2.778066] pcie_iproc_bcma bcma0:7: link: UP
[    2.782693] PCI: bus0: Fast back to back transfers disabled
[    2.788267] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    2.796767] PCI: bus1: Fast back to back transfers disabled
[    2.802375] resource: [__request_resource] root:[mem 0x08000000-0x0fffffff]
[    2.809324] resource: [__request_resource]  new:c7b08e64 new:[mem size 0x00100000]
[    2.816865] resource: [__request_resource]  tmp:  (null) tmp:  (null)
[    2.823282] pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
[    2.830049] resource: [__request_resource] root:[mem 0x08000000-0x080fffff]
[    2.836986] resource: [__request_resource]  new:c7b09164 new:[mem size 0x00008000 64bit]
[    2.845047] resource: [__request_resource]  tmp:  (null) tmp:  (null)
[    2.851464] pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
[    2.858758] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.863700] pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]

[    2.870834] resource: [__request_resource] root:[mem 0x00000000-0xffffffff]
[    2.877791] resource: [__request_resource]  new:c7839be0 new:[mem 0x40000000-0x47ffffff]
[    2.885855] resource: [__request_resource]  tmp:c7ffee00 tmp:[mem 0x00000000-0x07ffffff]
[    2.893911] resource: [__request_resource]  tmp:c7839be0 tmp:[mem 0x40000000-0x47ffffff]
[    2.901971] resource: [__request_resource] Found collision with tmp
[    2.908225] pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
[    2.920952] pcie_iproc_bcma bcma0:8: PCIe controller setup failed
[    2.927037] pcie_iproc_bcma: probe of bcma0:8 failed with error -16

As you can see, for the first controller following resource has been requested:
c7839be0 [mem 0x08000000-0x0fffffff]

Then when we try to probe second controller there are following resources
already in use:
c7ffee00 [mem 0x00000000-0x07ffffff]
c7839be0 [mem 0x40000000-0x47ffffff]
and we try to request:
c7839be0 [mem 0x40000000-0x47ffffff]


diff --git a/kernel/resource.c b/kernel/resource.c
index 9b5f044..fab9405 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -220,6 +220,8 @@ static struct resource * __request_resource(struct resource *root, struct resour
  	resource_size_t end = new->end;
  	struct resource *tmp, **p;

+	if (new->flags & IORESOURCE_MEM) pr_info("[%s] root:%pR\n", __func__, root);
+	if (new->flags & IORESOURCE_MEM) pr_info("[%s]  new:%p new:%pR\n", __func__, new, new);
  	if (end < start)
  		return root;
  	if (start < root->start)
@@ -229,6 +231,7 @@ static struct resource * __request_resource(struct resource *root, struct resour
  	p = &root->child;
  	for (;;) {
  		tmp = *p;
+		if (new->flags & IORESOURCE_MEM) pr_info("[%s]  tmp:%p tmp:%pR\n", __func__, tmp, tmp);
  		if (!tmp || tmp->start > end) {
  			new->sibling = tmp;
  			*p = new;
@@ -238,6 +241,7 @@ static struct resource * __request_resource(struct resource *root, struct resour
  		p = &tmp->sibling;
  		if (tmp->end < start)
  			continue;
+		if (new->flags & IORESOURCE_MEM) pr_info("[%s] Found collision with tmp\n", __func__);
  		return tmp;
  	}
  }

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

* Re: pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-09  7:39   ` Rafał Miłecki
@ 2017-03-09 18:22     ` Bjorn Helgaas
  -1 siblings, 0 replies; 18+ messages in thread
From: Bjorn Helgaas @ 2017-03-09 18:22 UTC (permalink / raw)
  To: Rafał Miłecki
  Cc: Bjorn Helgaas, Ray Jui, Scott Branden, Jon Mason, Oza Oza,
	JD Zheng, Andy Gospodarek, linux-pci, bcm-kernel-feedback-list,
	linux-arm-kernel, Felix Fietkau

On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafał Miłecki wrote:
> On 03/08/2017 01:56 PM, Rafał Miłecki wrote:
> >I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
> >connected to the 2nd controller.
> >
> > pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> > pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
> > pcie_iproc_bcma bcma0:7: link: UP
> > PCI: bus0: Fast back to back transfers disabled
> > pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> > PCI: bus1: Fast back to back transfers disabled
> > pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
> > pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
> > pci 0000:00:00.0: PCI bridge to [bus 01]
> > pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
> >
> > pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
> > pcie_iproc_bcma bcma0:8: PCIe controller setup failed
> > pcie_iproc_bcma: probe of bcma0:8 failed with error -16
> >
> >
> >This used to work with older kernels because there wasn't any collision check:
> >
> > pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> > pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
> > pcie_iproc_bcma bcma0:7: link: UP
> > PCI: bus0: Fast back to back transfers disabled
> > pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> > PCI: bus1: Fast back to back transfers disabled
> > pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
> > pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
> > pci 0000:00:00.0: PCI bridge to [bus 01]
> > pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
> >
> > pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
> > pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
> > pcie_iproc_bcma bcma0:8: link: UP
> > PCI: bus0: Fast back to back transfers disabled
> > pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> > PCI: bus1: Fast back to back transfers disabled
> > pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
> > pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
> > pci 0001:00:00.0: PCI bridge to [bus 01]
> > pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
> >
> >
> >I guess the check is OK after all and the real problem is iproc driver assigning
> >the same resource.
> >
> >Broadcom team: could you take a look at this, please?
> 
> I found a reason of this conflict (and probably random crashes I started
> seeing with 4.9). I believe we have a memory corruption.

Yep, we're using a resource structure on the stack when we shouldn't.  Can
you try the patch below?

diff --git a/drivers/pci/host/pcie-iproc-bcma.c b/drivers/pci/host/pcie-iproc-bcma.c
index bd4c9ec25edc..8cebbbff1e72 100644
--- a/drivers/pci/host/pcie-iproc-bcma.c
+++ b/drivers/pci/host/pcie-iproc-bcma.c
@@ -44,8 +44,7 @@ static int iproc_pcie_bcma_probe(struct bcma_device *bdev)
 {
 	struct device *dev = &bdev->dev;
 	struct iproc_pcie *pcie;
-	LIST_HEAD(res);
-	struct resource res_mem;
+	LIST_HEAD(resources);
 	int ret;
 
 	pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
@@ -63,22 +62,23 @@ static int iproc_pcie_bcma_probe(struct bcma_device *bdev)
 
 	pcie->base_addr = bdev->addr;
 
-	res_mem.start = bdev->addr_s[0];
-	res_mem.end = bdev->addr_s[0] + SZ_128M - 1;
-	res_mem.name = "PCIe MEM space";
-	res_mem.flags = IORESOURCE_MEM;
-	pci_add_resource(&res, &res_mem);
+	pcie->mem.start = bdev->addr_s[0];
+	pcie->mem.end = bdev->addr_s[0] + SZ_128M - 1;
+	pcie->mem.name = "PCIe MEM space";
+	pcie->mem.flags = IORESOURCE_MEM;
+	pci_add_resource(&resources, &pcie->mem);
 
 	pcie->map_irq = iproc_pcie_bcma_map_irq;
 
-	ret = iproc_pcie_setup(pcie, &res);
+	ret = iproc_pcie_setup(pcie, &resources);
 	if (ret)
 		dev_err(dev, "PCIe controller setup failed\n");
-
-	pci_free_resource_list(&res);
+		pci_free_resource_list(&resources);
+		return ret;
+	}
 
 	bcma_set_drvdata(bdev, pcie);
-	return ret;
+	return 0;
 }
 
 static void iproc_pcie_bcma_remove(struct bcma_device *bdev)
diff --git a/drivers/pci/host/pcie-iproc-platform.c b/drivers/pci/host/pcie-iproc-platform.c
index f4909bb0b2ad..5f6361f27c69 100644
--- a/drivers/pci/host/pcie-iproc-platform.c
+++ b/drivers/pci/host/pcie-iproc-platform.c
@@ -51,7 +51,7 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev)
 	struct device_node *np = dev->of_node;
 	struct resource reg;
 	resource_size_t iobase = 0;
-	LIST_HEAD(res);
+	LIST_HEAD(resources);
 	int ret;
 
 	pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
@@ -96,10 +96,10 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev)
 		pcie->phy = NULL;
 	}
 
-	ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &res, &iobase);
+	ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &resources,
+					       &iobase);
 	if (ret) {
-		dev_err(dev,
-			"unable to get PCI host bridge resources\n");
+		dev_err(dev, "unable to get PCI host bridge resources\n");
 		return ret;
 	}
 
@@ -112,14 +112,15 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev)
 		pcie->map_irq = of_irq_parse_and_map_pci;
 	}
 
-	ret = iproc_pcie_setup(pcie, &res);
+	ret = iproc_pcie_setup(pcie, &resources);
 	if (ret)
 		dev_err(dev, "PCIe controller setup failed\n");
-
-	pci_free_resource_list(&res);
+		pci_free_resource_list(&resources);
+		return ret;
+	}
 
 	platform_set_drvdata(pdev, pcie);
-	return ret;
+	return 0;
 }
 
 static int iproc_pcie_pltfm_remove(struct platform_device *pdev)
diff --git a/drivers/pci/host/pcie-iproc.h b/drivers/pci/host/pcie-iproc.h
index 04fed8e907f1..0bbe2ea44f3e 100644
--- a/drivers/pci/host/pcie-iproc.h
+++ b/drivers/pci/host/pcie-iproc.h
@@ -90,6 +90,7 @@ struct iproc_pcie {
 #ifdef CONFIG_ARM
 	struct pci_sys_data sysdata;
 #endif
+	struct resource mem;
 	struct pci_bus *root_bus;
 	struct phy *phy;
 	int (*map_irq)(const struct pci_dev *, u8, u8);

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-09 18:22     ` Bjorn Helgaas
  0 siblings, 0 replies; 18+ messages in thread
From: Bjorn Helgaas @ 2017-03-09 18:22 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafa? Mi?ecki wrote:
> On 03/08/2017 01:56 PM, Rafa? Mi?ecki wrote:
> >I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
> >connected to the 2nd controller.
> >
> > pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> > pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
> > pcie_iproc_bcma bcma0:7: link: UP
> > PCI: bus0: Fast back to back transfers disabled
> > pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> > PCI: bus1: Fast back to back transfers disabled
> > pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
> > pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
> > pci 0000:00:00.0: PCI bridge to [bus 01]
> > pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
> >
> > pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
> > pcie_iproc_bcma bcma0:8: PCIe controller setup failed
> > pcie_iproc_bcma: probe of bcma0:8 failed with error -16
> >
> >
> >This used to work with older kernels because there wasn't any collision check:
> >
> > pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> > pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
> > pcie_iproc_bcma bcma0:7: link: UP
> > PCI: bus0: Fast back to back transfers disabled
> > pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> > PCI: bus1: Fast back to back transfers disabled
> > pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
> > pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
> > pci 0000:00:00.0: PCI bridge to [bus 01]
> > pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
> >
> > pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
> > pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
> > pcie_iproc_bcma bcma0:8: link: UP
> > PCI: bus0: Fast back to back transfers disabled
> > pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> > PCI: bus1: Fast back to back transfers disabled
> > pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
> > pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
> > pci 0001:00:00.0: PCI bridge to [bus 01]
> > pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
> >
> >
> >I guess the check is OK after all and the real problem is iproc driver assigning
> >the same resource.
> >
> >Broadcom team: could you take a look at this, please?
> 
> I found a reason of this conflict (and probably random crashes I started
> seeing with 4.9). I believe we have a memory corruption.

Yep, we're using a resource structure on the stack when we shouldn't.  Can
you try the patch below?

diff --git a/drivers/pci/host/pcie-iproc-bcma.c b/drivers/pci/host/pcie-iproc-bcma.c
index bd4c9ec25edc..8cebbbff1e72 100644
--- a/drivers/pci/host/pcie-iproc-bcma.c
+++ b/drivers/pci/host/pcie-iproc-bcma.c
@@ -44,8 +44,7 @@ static int iproc_pcie_bcma_probe(struct bcma_device *bdev)
 {
 	struct device *dev = &bdev->dev;
 	struct iproc_pcie *pcie;
-	LIST_HEAD(res);
-	struct resource res_mem;
+	LIST_HEAD(resources);
 	int ret;
 
 	pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
@@ -63,22 +62,23 @@ static int iproc_pcie_bcma_probe(struct bcma_device *bdev)
 
 	pcie->base_addr = bdev->addr;
 
-	res_mem.start = bdev->addr_s[0];
-	res_mem.end = bdev->addr_s[0] + SZ_128M - 1;
-	res_mem.name = "PCIe MEM space";
-	res_mem.flags = IORESOURCE_MEM;
-	pci_add_resource(&res, &res_mem);
+	pcie->mem.start = bdev->addr_s[0];
+	pcie->mem.end = bdev->addr_s[0] + SZ_128M - 1;
+	pcie->mem.name = "PCIe MEM space";
+	pcie->mem.flags = IORESOURCE_MEM;
+	pci_add_resource(&resources, &pcie->mem);
 
 	pcie->map_irq = iproc_pcie_bcma_map_irq;
 
-	ret = iproc_pcie_setup(pcie, &res);
+	ret = iproc_pcie_setup(pcie, &resources);
 	if (ret)
 		dev_err(dev, "PCIe controller setup failed\n");
-
-	pci_free_resource_list(&res);
+		pci_free_resource_list(&resources);
+		return ret;
+	}
 
 	bcma_set_drvdata(bdev, pcie);
-	return ret;
+	return 0;
 }
 
 static void iproc_pcie_bcma_remove(struct bcma_device *bdev)
diff --git a/drivers/pci/host/pcie-iproc-platform.c b/drivers/pci/host/pcie-iproc-platform.c
index f4909bb0b2ad..5f6361f27c69 100644
--- a/drivers/pci/host/pcie-iproc-platform.c
+++ b/drivers/pci/host/pcie-iproc-platform.c
@@ -51,7 +51,7 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev)
 	struct device_node *np = dev->of_node;
 	struct resource reg;
 	resource_size_t iobase = 0;
-	LIST_HEAD(res);
+	LIST_HEAD(resources);
 	int ret;
 
 	pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
@@ -96,10 +96,10 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev)
 		pcie->phy = NULL;
 	}
 
-	ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &res, &iobase);
+	ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &resources,
+					       &iobase);
 	if (ret) {
-		dev_err(dev,
-			"unable to get PCI host bridge resources\n");
+		dev_err(dev, "unable to get PCI host bridge resources\n");
 		return ret;
 	}
 
@@ -112,14 +112,15 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev)
 		pcie->map_irq = of_irq_parse_and_map_pci;
 	}
 
-	ret = iproc_pcie_setup(pcie, &res);
+	ret = iproc_pcie_setup(pcie, &resources);
 	if (ret)
 		dev_err(dev, "PCIe controller setup failed\n");
-
-	pci_free_resource_list(&res);
+		pci_free_resource_list(&resources);
+		return ret;
+	}
 
 	platform_set_drvdata(pdev, pcie);
-	return ret;
+	return 0;
 }
 
 static int iproc_pcie_pltfm_remove(struct platform_device *pdev)
diff --git a/drivers/pci/host/pcie-iproc.h b/drivers/pci/host/pcie-iproc.h
index 04fed8e907f1..0bbe2ea44f3e 100644
--- a/drivers/pci/host/pcie-iproc.h
+++ b/drivers/pci/host/pcie-iproc.h
@@ -90,6 +90,7 @@ struct iproc_pcie {
 #ifdef CONFIG_ARM
 	struct pci_sys_data sysdata;
 #endif
+	struct resource mem;
 	struct pci_bus *root_bus;
 	struct phy *phy;
 	int (*map_irq)(const struct pci_dev *, u8, u8);

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

* Re: pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-09 18:22     ` Bjorn Helgaas
@ 2017-03-10 16:02       ` Rafał Miłecki
  -1 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-10 16:02 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Bjorn Helgaas, Ray Jui, Scott Branden, Jon Mason, Oza Oza,
	JD Zheng, Andy Gospodarek, linux-pci, bcm-kernel-feedback-list,
	linux-arm-kernel, Felix Fietkau

On 03/09/2017 07:22 PM, Bjorn Helgaas wrote:
> On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafał Miłecki wrote:
>> On 03/08/2017 01:56 PM, Rafał Miłecki wrote:
>>> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
>>> connected to the 2nd controller.
>>>
>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>> pcie_iproc_bcma bcma0:7: link: UP
>>> PCI: bus0: Fast back to back transfers disabled
>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>> PCI: bus1: Fast back to back transfers disabled
>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>
>>> pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
>>> pcie_iproc_bcma bcma0:8: PCIe controller setup failed
>>> pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>>>
>>>
>>> This used to work with older kernels because there wasn't any collision check:
>>>
>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>> pcie_iproc_bcma bcma0:7: link: UP
>>> PCI: bus0: Fast back to back transfers disabled
>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>> PCI: bus1: Fast back to back transfers disabled
>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>
>>> pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>> pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
>>> pcie_iproc_bcma bcma0:8: link: UP
>>> PCI: bus0: Fast back to back transfers disabled
>>> pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>> PCI: bus1: Fast back to back transfers disabled
>>> pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
>>> pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
>>> pci 0001:00:00.0: PCI bridge to [bus 01]
>>> pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
>>>
>>>
>>> I guess the check is OK after all and the real problem is iproc driver assigning
>>> the same resource.
>>>
>>> Broadcom team: could you take a look at this, please?
>>
>> I found a reason of this conflict (and probably random crashes I started
>> seeing with 4.9). I believe we have a memory corruption.
>
> Yep, we're using a resource structure on the stack when we shouldn't.  Can
> you try the patch below?

Works great! Will you push it with
Cc: stable@vger.kernel.org # v4.8+
please?

Thanks for looking at this!

Also see below...


> (...)
>  	if (ret)
>  		dev_err(dev, "PCIe controller setup failed\n");
> -
> -	pci_free_resource_list(&res);
> +		pci_free_resource_list(&resources);
> +		return ret;
> +	}

Works great, except it doesn't compile (braces) ;)

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-10 16:02       ` Rafał Miłecki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-10 16:02 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/09/2017 07:22 PM, Bjorn Helgaas wrote:
> On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafa? Mi?ecki wrote:
>> On 03/08/2017 01:56 PM, Rafa? Mi?ecki wrote:
>>> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
>>> connected to the 2nd controller.
>>>
>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>> pcie_iproc_bcma bcma0:7: link: UP
>>> PCI: bus0: Fast back to back transfers disabled
>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>> PCI: bus1: Fast back to back transfers disabled
>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>
>>> pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
>>> pcie_iproc_bcma bcma0:8: PCIe controller setup failed
>>> pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>>>
>>>
>>> This used to work with older kernels because there wasn't any collision check:
>>>
>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>> pcie_iproc_bcma bcma0:7: link: UP
>>> PCI: bus0: Fast back to back transfers disabled
>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>> PCI: bus1: Fast back to back transfers disabled
>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>
>>> pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>> pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
>>> pcie_iproc_bcma bcma0:8: link: UP
>>> PCI: bus0: Fast back to back transfers disabled
>>> pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>> PCI: bus1: Fast back to back transfers disabled
>>> pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
>>> pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
>>> pci 0001:00:00.0: PCI bridge to [bus 01]
>>> pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
>>>
>>>
>>> I guess the check is OK after all and the real problem is iproc driver assigning
>>> the same resource.
>>>
>>> Broadcom team: could you take a look at this, please?
>>
>> I found a reason of this conflict (and probably random crashes I started
>> seeing with 4.9). I believe we have a memory corruption.
>
> Yep, we're using a resource structure on the stack when we shouldn't.  Can
> you try the patch below?

Works great! Will you push it with
Cc: stable at vger.kernel.org # v4.8+
please?

Thanks for looking at this!

Also see below...


> (...)
>  	if (ret)
>  		dev_err(dev, "PCIe controller setup failed\n");
> -
> -	pci_free_resource_list(&res);
> +		pci_free_resource_list(&resources);
> +		return ret;
> +	}

Works great, except it doesn't compile (braces) ;)

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

* Re: pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-10 16:02       ` Rafał Miłecki
@ 2017-03-10 17:21         ` Ray Jui
  -1 siblings, 0 replies; 18+ messages in thread
From: Ray Jui @ 2017-03-10 17:21 UTC (permalink / raw)
  To: Rafał Miłecki, Bjorn Helgaas
  Cc: Bjorn Helgaas, Ray Jui, Scott Branden, Jon Mason, Oza Oza,
	JD Zheng, Andy Gospodarek, linux-pci, bcm-kernel-feedback-list,
	linux-arm-kernel, Felix Fietkau

Hi Bjorn,

Thanks for helping take care of this.

Ray

On 3/10/2017 8:02 AM, Rafał Miłecki wrote:
> On 03/09/2017 07:22 PM, Bjorn Helgaas wrote:
>> On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafał Miłecki wrote:
>>> On 03/08/2017 01:56 PM, Rafał Miłecki wrote:
>>>> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't
>>>> see card
>>>> connected to the 2nd controller.
>>>>
>>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>>> pcie_iproc_bcma bcma0:7: link: UP
>>>> PCI: bus0: Fast back to back transfers disabled
>>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]),
>>>> reconfiguring
>>>> PCI: bus1: Fast back to back transfers disabled
>>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>>
>>>> pcie_iproc_bcma bcma0:8: resource collision: [mem
>>>> 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem
>>>> 0x40000000-0x47ffffff]
>>>> pcie_iproc_bcma bcma0:8: PCIe controller setup failed
>>>> pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>>>>
>>>>
>>>> This used to work with older kernels because there wasn't any
>>>> collision check:
>>>>
>>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>>> pcie_iproc_bcma bcma0:7: link: UP
>>>> PCI: bus0: Fast back to back transfers disabled
>>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]),
>>>> reconfiguring
>>>> PCI: bus1: Fast back to back transfers disabled
>>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>>
>>>> pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>>> pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
>>>> pcie_iproc_bcma bcma0:8: link: UP
>>>> PCI: bus0: Fast back to back transfers disabled
>>>> pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]),
>>>> reconfiguring
>>>> PCI: bus1: Fast back to back transfers disabled
>>>> pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
>>>> pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
>>>> pci 0001:00:00.0: PCI bridge to [bus 01]
>>>> pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
>>>>
>>>>
>>>> I guess the check is OK after all and the real problem is iproc
>>>> driver assigning
>>>> the same resource.
>>>>
>>>> Broadcom team: could you take a look at this, please?
>>>
>>> I found a reason of this conflict (and probably random crashes I started
>>> seeing with 4.9). I believe we have a memory corruption.
>>
>> Yep, we're using a resource structure on the stack when we shouldn't. 
>> Can
>> you try the patch below?
> 
> Works great! Will you push it with
> Cc: stable@vger.kernel.org # v4.8+
> please?
> 
> Thanks for looking at this!
> 
> Also see below...
> 
> 
>> (...)
>>      if (ret)
>>          dev_err(dev, "PCIe controller setup failed\n");
>> -
>> -    pci_free_resource_list(&res);
>> +        pci_free_resource_list(&resources);
>> +        return ret;
>> +    }
> 
> Works great, except it doesn't compile (braces) ;)

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-10 17:21         ` Ray Jui
  0 siblings, 0 replies; 18+ messages in thread
From: Ray Jui @ 2017-03-10 17:21 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Bjorn,

Thanks for helping take care of this.

Ray

On 3/10/2017 8:02 AM, Rafa? Mi?ecki wrote:
> On 03/09/2017 07:22 PM, Bjorn Helgaas wrote:
>> On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafa? Mi?ecki wrote:
>>> On 03/08/2017 01:56 PM, Rafa? Mi?ecki wrote:
>>>> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't
>>>> see card
>>>> connected to the 2nd controller.
>>>>
>>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>>> pcie_iproc_bcma bcma0:7: link: UP
>>>> PCI: bus0: Fast back to back transfers disabled
>>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]),
>>>> reconfiguring
>>>> PCI: bus1: Fast back to back transfers disabled
>>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>>
>>>> pcie_iproc_bcma bcma0:8: resource collision: [mem
>>>> 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem
>>>> 0x40000000-0x47ffffff]
>>>> pcie_iproc_bcma bcma0:8: PCIe controller setup failed
>>>> pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>>>>
>>>>
>>>> This used to work with older kernels because there wasn't any
>>>> collision check:
>>>>
>>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>>> pcie_iproc_bcma bcma0:7: link: UP
>>>> PCI: bus0: Fast back to back transfers disabled
>>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]),
>>>> reconfiguring
>>>> PCI: bus1: Fast back to back transfers disabled
>>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>>
>>>> pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>>> pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
>>>> pcie_iproc_bcma bcma0:8: link: UP
>>>> PCI: bus0: Fast back to back transfers disabled
>>>> pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]),
>>>> reconfiguring
>>>> PCI: bus1: Fast back to back transfers disabled
>>>> pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
>>>> pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
>>>> pci 0001:00:00.0: PCI bridge to [bus 01]
>>>> pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
>>>>
>>>>
>>>> I guess the check is OK after all and the real problem is iproc
>>>> driver assigning
>>>> the same resource.
>>>>
>>>> Broadcom team: could you take a look at this, please?
>>>
>>> I found a reason of this conflict (and probably random crashes I started
>>> seeing with 4.9). I believe we have a memory corruption.
>>
>> Yep, we're using a resource structure on the stack when we shouldn't. 
>> Can
>> you try the patch below?
> 
> Works great! Will you push it with
> Cc: stable at vger.kernel.org # v4.8+
> please?
> 
> Thanks for looking at this!
> 
> Also see below...
> 
> 
>> (...)
>>      if (ret)
>>          dev_err(dev, "PCIe controller setup failed\n");
>> -
>> -    pci_free_resource_list(&res);
>> +        pci_free_resource_list(&resources);
>> +        return ret;
>> +    }
> 
> Works great, except it doesn't compile (braces) ;)

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

* Re: pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-10 16:02       ` Rafał Miłecki
@ 2017-03-10 17:47         ` Bjorn Helgaas
  -1 siblings, 0 replies; 18+ messages in thread
From: Bjorn Helgaas @ 2017-03-10 17:47 UTC (permalink / raw)
  To: Rafał Miłecki
  Cc: JD Zheng, Scott Branden, Jon Mason, Ray Jui, Oza Oza, linux-pci,
	Bjorn Helgaas, bcm-kernel-feedback-list, Andy Gospodarek,
	linux-arm-kernel, Felix Fietkau

T24gRnJpLCBNYXIgMTAsIDIwMTcgYXQgMDU6MDI6NDhQTSArMDEwMCwgUmFmYcWCIE1pxYJlY2tp
IHdyb3RlOgo+IE9uIDAzLzA5LzIwMTcgMDc6MjIgUE0sIEJqb3JuIEhlbGdhYXMgd3JvdGU6Cj4g
Pk9uIFRodSwgTWFyIDA5LCAyMDE3IGF0IDA4OjM5OjA3QU0gKzAxMDAsIFJhZmHFgiBNacWCZWNr
aSB3cm90ZToKPiA+Pk9uIDAzLzA4LzIwMTcgMDE6NTYgUE0sIFJhZmHFgiBNacWCZWNraSB3cm90
ZToKPiA+Pj5JIGp1c3QgdHJpZWQgdXBncmFkaW5nIEJDTTUzMDFYIGZyb20gNC40IHRvIDQuOSBh
bmQgbm90aWNlZCBJIGRvbid0IHNlZSBjYXJkCj4gPj4+Y29ubmVjdGVkIHRvIHRoZSAybmQgY29u
dHJvbGxlci4KPiA+Pj4KPiA+Pj5wY2llX2lwcm9jX2JjbWEgYmNtYTA6NzogUENJIGhvc3QgYnJp
ZGdlIHRvIGJ1cyAwMDAwOjAwCj4gPj4+cGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJj
ZSBbbWVtIDB4MDgwMDAwMDAtMHgwZmZmZmZmZl0KPiA+Pj5wY2llX2lwcm9jX2JjbWEgYmNtYTA6
NzogbGluazogVVAKPiA+Pj5QQ0k6IGJ1czA6IEZhc3QgYmFjayB0byBiYWNrIHRyYW5zZmVycyBk
aXNhYmxlZAo+ID4+PnBjaSAwMDAwOjAwOjAwLjA6IGJyaWRnZSBjb25maWd1cmF0aW9uIGludmFs
aWQgKFtidXMgMDAtMDBdKSwgcmVjb25maWd1cmluZwo+ID4+PlBDSTogYnVzMTogRmFzdCBiYWNr
IHRvIGJhY2sgdHJhbnNmZXJzIGRpc2FibGVkCj4gPj4+cGNpIDAwMDA6MDA6MDAuMDogQkFSIDg6
IGFzc2lnbmVkIFttZW0gMHgwODAwMDAwMC0weDA4MGZmZmZmXQo+ID4+PnBjaSAwMDAwOjAxOjAw
LjA6IEJBUiAwOiBhc3NpZ25lZCBbbWVtIDB4MDgwMDAwMDAtMHgwODAwN2ZmZiA2NGJpdF0KPiA+
Pj5wY2kgMDAwMDowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdCj4gPj4+cGNpIDAwMDA6
MDA6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgwODAwMDAwMC0weDA4MGZmZmZmXQo+ID4+
Pgo+ID4+PnBjaWVfaXByb2NfYmNtYSBiY21hMDo4OiByZXNvdXJjZSBjb2xsaXNpb246IFttZW0g
MHg0MDAwMDAwMC0weDQ3ZmZmZmZmXSBjb25mbGljdHMgd2l0aCBQQ0llIE1FTSBzcGFjZSBbbWVt
IDB4NDAwMDAwMDAtMHg0N2ZmZmZmZl0KPiA+Pj5wY2llX2lwcm9jX2JjbWEgYmNtYTA6ODogUENJ
ZSBjb250cm9sbGVyIHNldHVwIGZhaWxlZAo+ID4+PnBjaWVfaXByb2NfYmNtYTogcHJvYmUgb2Yg
YmNtYTA6OCBmYWlsZWQgd2l0aCBlcnJvciAtMTYKPiA+Pj4KPiA+Pj4KPiA+Pj5UaGlzIHVzZWQg
dG8gd29yayB3aXRoIG9sZGVyIGtlcm5lbHMgYmVjYXVzZSB0aGVyZSB3YXNuJ3QgYW55IGNvbGxp
c2lvbiBjaGVjazoKPiA+Pj4KPiA+Pj5wY2llX2lwcm9jX2JjbWEgYmNtYTA6NzogUENJIGhvc3Qg
YnJpZGdlIHRvIGJ1cyAwMDAwOjAwCj4gPj4+cGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNv
dXJjZSBbbWVtIDB4MDgwMDAwMDAtMHgwZmZmZmZmZl0KPiA+Pj5wY2llX2lwcm9jX2JjbWEgYmNt
YTA6NzogbGluazogVVAKPiA+Pj5QQ0k6IGJ1czA6IEZhc3QgYmFjayB0byBiYWNrIHRyYW5zZmVy
cyBkaXNhYmxlZAo+ID4+PnBjaSAwMDAwOjAwOjAwLjA6IGJyaWRnZSBjb25maWd1cmF0aW9uIGlu
dmFsaWQgKFtidXMgMDAtMDBdKSwgcmVjb25maWd1cmluZwo+ID4+PlBDSTogYnVzMTogRmFzdCBi
YWNrIHRvIGJhY2sgdHJhbnNmZXJzIGRpc2FibGVkCj4gPj4+cGNpIDAwMDA6MDA6MDAuMDogQkFS
IDg6IGFzc2lnbmVkIFttZW0gMHgwODAwMDAwMC0weDA4MGZmZmZmXQo+ID4+PnBjaSAwMDAwOjAx
OjAwLjA6IEJBUiAwOiBhc3NpZ25lZCBbbWVtIDB4MDgwMDAwMDAtMHgwODAwN2ZmZiA2NGJpdF0K
PiA+Pj5wY2kgMDAwMDowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdCj4gPj4+cGNpIDAw
MDA6MDA6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgwODAwMDAwMC0weDA4MGZmZmZmXQo+
ID4+Pgo+ID4+PnBjaWVfaXByb2NfYmNtYSBiY21hMDo4OiBQQ0kgaG9zdCBicmlkZ2UgdG8gYnVz
IDAwMDE6MDAKPiA+Pj5wY2lfYnVzIDAwMDE6MDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHg0
MDAwMDAwMC0weDQ3ZmZmZmZmXQo+ID4+PnBjaWVfaXByb2NfYmNtYSBiY21hMDo4OiBsaW5rOiBV
UAo+ID4+PlBDSTogYnVzMDogRmFzdCBiYWNrIHRvIGJhY2sgdHJhbnNmZXJzIGRpc2FibGVkCj4g
Pj4+cGNpIDAwMDE6MDA6MDAuMDogYnJpZGdlIGNvbmZpZ3VyYXRpb24gaW52YWxpZCAoW2J1cyAw
MC0wMF0pLCByZWNvbmZpZ3VyaW5nCj4gPj4+UENJOiBidXMxOiBGYXN0IGJhY2sgdG8gYmFjayB0
cmFuc2ZlcnMgZGlzYWJsZWQKPiA+Pj5wY2kgMDAwMTowMDowMC4wOiBCQVIgODogYXNzaWduZWQg
W21lbSAweDQwMDAwMDAwLTB4NDAwZmZmZmZdCj4gPj4+cGNpIDAwMDE6MDE6MDAuMDogQkFSIDA6
IGFzc2lnbmVkIFttZW0gMHg0MDAwMDAwMC0weDQwMDA3ZmZmIDY0Yml0XQo+ID4+PnBjaSAwMDAx
OjAwOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMV0KPiA+Pj5wY2kgMDAwMTowMDowMC4wOiAg
IGJyaWRnZSB3aW5kb3cgW21lbSAweDQwMDAwMDAwLTB4NDAwZmZmZmZdCj4gPj4+Cj4gPj4+Cj4g
Pj4+SSBndWVzcyB0aGUgY2hlY2sgaXMgT0sgYWZ0ZXIgYWxsIGFuZCB0aGUgcmVhbCBwcm9ibGVt
IGlzIGlwcm9jIGRyaXZlciBhc3NpZ25pbmcKPiA+Pj50aGUgc2FtZSByZXNvdXJjZS4KPiA+Pj4K
PiA+Pj5Ccm9hZGNvbSB0ZWFtOiBjb3VsZCB5b3UgdGFrZSBhIGxvb2sgYXQgdGhpcywgcGxlYXNl
Pwo+ID4+Cj4gPj5JIGZvdW5kIGEgcmVhc29uIG9mIHRoaXMgY29uZmxpY3QgKGFuZCBwcm9iYWJs
eSByYW5kb20gY3Jhc2hlcyBJIHN0YXJ0ZWQKPiA+PnNlZWluZyB3aXRoIDQuOSkuIEkgYmVsaWV2
ZSB3ZSBoYXZlIGEgbWVtb3J5IGNvcnJ1cHRpb24uCj4gPgo+ID5ZZXAsIHdlJ3JlIHVzaW5nIGEg
cmVzb3VyY2Ugc3RydWN0dXJlIG9uIHRoZSBzdGFjayB3aGVuIHdlIHNob3VsZG4ndC4gIENhbgo+
ID55b3UgdHJ5IHRoZSBwYXRjaCBiZWxvdz8KPiAKPiBXb3JrcyBncmVhdCEgV2lsbCB5b3UgcHVz
aCBpdCB3aXRoCj4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcgIyB2NC44Kwo+IHBsZWFzZT8K
ClRoYW5rcyBmb3IgdGVzdGluZyB0aGlzLiAgSSBhcHBsaWVkIHRoZSBwYXRjaCAod2l0aCB0aGUg
YnJhY2VzIGZpeCkgdG8KZm9yLWxpbnVzIGZvciB2NC4xMS4KCj4gPiguLi4pCj4gPiAJaWYgKHJl
dCkKPiA+IAkJZGV2X2VycihkZXYsICJQQ0llIGNvbnRyb2xsZXIgc2V0dXAgZmFpbGVkXG4iKTsK
PiA+LQo+ID4tCXBjaV9mcmVlX3Jlc291cmNlX2xpc3QoJnJlcyk7Cj4gPisJCXBjaV9mcmVlX3Jl
c291cmNlX2xpc3QoJnJlc291cmNlcyk7Cj4gPisJCXJldHVybiByZXQ7Cj4gPisJfQo+IAo+IFdv
cmtzIGdyZWF0LCBleGNlcHQgaXQgZG9lc24ndCBjb21waWxlIChicmFjZXMpIDspCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs
IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov
L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-10 17:47         ` Bjorn Helgaas
  0 siblings, 0 replies; 18+ messages in thread
From: Bjorn Helgaas @ 2017-03-10 17:47 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Mar 10, 2017 at 05:02:48PM +0100, Rafa? Mi?ecki wrote:
> On 03/09/2017 07:22 PM, Bjorn Helgaas wrote:
> >On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafa? Mi?ecki wrote:
> >>On 03/08/2017 01:56 PM, Rafa? Mi?ecki wrote:
> >>>I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
> >>>connected to the 2nd controller.
> >>>
> >>>pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> >>>pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
> >>>pcie_iproc_bcma bcma0:7: link: UP
> >>>PCI: bus0: Fast back to back transfers disabled
> >>>pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> >>>PCI: bus1: Fast back to back transfers disabled
> >>>pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
> >>>pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
> >>>pci 0000:00:00.0: PCI bridge to [bus 01]
> >>>pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
> >>>
> >>>pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
> >>>pcie_iproc_bcma bcma0:8: PCIe controller setup failed
> >>>pcie_iproc_bcma: probe of bcma0:8 failed with error -16
> >>>
> >>>
> >>>This used to work with older kernels because there wasn't any collision check:
> >>>
> >>>pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
> >>>pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
> >>>pcie_iproc_bcma bcma0:7: link: UP
> >>>PCI: bus0: Fast back to back transfers disabled
> >>>pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> >>>PCI: bus1: Fast back to back transfers disabled
> >>>pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
> >>>pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
> >>>pci 0000:00:00.0: PCI bridge to [bus 01]
> >>>pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
> >>>
> >>>pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
> >>>pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
> >>>pcie_iproc_bcma bcma0:8: link: UP
> >>>PCI: bus0: Fast back to back transfers disabled
> >>>pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> >>>PCI: bus1: Fast back to back transfers disabled
> >>>pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
> >>>pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
> >>>pci 0001:00:00.0: PCI bridge to [bus 01]
> >>>pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
> >>>
> >>>
> >>>I guess the check is OK after all and the real problem is iproc driver assigning
> >>>the same resource.
> >>>
> >>>Broadcom team: could you take a look at this, please?
> >>
> >>I found a reason of this conflict (and probably random crashes I started
> >>seeing with 4.9). I believe we have a memory corruption.
> >
> >Yep, we're using a resource structure on the stack when we shouldn't.  Can
> >you try the patch below?
> 
> Works great! Will you push it with
> Cc: stable at vger.kernel.org # v4.8+
> please?

Thanks for testing this.  I applied the patch (with the braces fix) to
for-linus for v4.11.

> >(...)
> > 	if (ret)
> > 		dev_err(dev, "PCIe controller setup failed\n");
> >-
> >-	pci_free_resource_list(&res);
> >+		pci_free_resource_list(&resources);
> >+		return ret;
> >+	}
> 
> Works great, except it doesn't compile (braces) ;)

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

* Re: pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
  2017-03-10 17:47         ` Bjorn Helgaas
@ 2017-03-10 21:11           ` Rafał Miłecki
  -1 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-10 21:11 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Bjorn Helgaas, Ray Jui, Scott Branden, Jon Mason, Oza Oza,
	JD Zheng, Andy Gospodarek, linux-pci, bcm-kernel-feedback-list,
	linux-arm-kernel, Felix Fietkau

On 03/10/2017 06:47 PM, Bjorn Helgaas wrote:
> On Fri, Mar 10, 2017 at 05:02:48PM +0100, Rafał Miłecki wrote:
>> On 03/09/2017 07:22 PM, Bjorn Helgaas wrote:
>>> On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafał Miłecki wrote:
>>>> On 03/08/2017 01:56 PM, Rafał Miłecki wrote:
>>>>> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
>>>>> connected to the 2nd controller.
>>>>>
>>>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>>>> pcie_iproc_bcma bcma0:7: link: UP
>>>>> PCI: bus0: Fast back to back transfers disabled
>>>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>>>> PCI: bus1: Fast back to back transfers disabled
>>>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>>>
>>>>> pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
>>>>> pcie_iproc_bcma bcma0:8: PCIe controller setup failed
>>>>> pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>>>>>
>>>>>
>>>>> This used to work with older kernels because there wasn't any collision check:
>>>>>
>>>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>>>> pcie_iproc_bcma bcma0:7: link: UP
>>>>> PCI: bus0: Fast back to back transfers disabled
>>>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>>>> PCI: bus1: Fast back to back transfers disabled
>>>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>>>
>>>>> pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>>>> pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
>>>>> pcie_iproc_bcma bcma0:8: link: UP
>>>>> PCI: bus0: Fast back to back transfers disabled
>>>>> pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>>>> PCI: bus1: Fast back to back transfers disabled
>>>>> pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
>>>>> pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
>>>>> pci 0001:00:00.0: PCI bridge to [bus 01]
>>>>> pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
>>>>>
>>>>>
>>>>> I guess the check is OK after all and the real problem is iproc driver assigning
>>>>> the same resource.
>>>>>
>>>>> Broadcom team: could you take a look at this, please?
>>>>
>>>> I found a reason of this conflict (and probably random crashes I started
>>>> seeing with 4.9). I believe we have a memory corruption.
>>>
>>> Yep, we're using a resource structure on the stack when we shouldn't.  Can
>>> you try the patch below?
>>
>> Works great! Will you push it with
>> Cc: stable@vger.kernel.org # v4.8+
>> please?
>
> Thanks for testing this.  I applied the patch (with the braces fix) to
> for-linus for v4.11.

Thanks!

Btw. this is how it looks now (all good it seems):

root@LEDE:/# cat /proc/iomem
00000000-07ffffff : System RAM
   00008000-0043cfff : Kernel code
   00476000-004d95df : Kernel data
08000000-0fffffff : PCIe MEM space
   08000000-085fffff : PCI Bus 0000:01
     08000000-083fffff : 0000:01:00.0
     08400000-08407fff : 0000:01:00.0
18000300-180003ff : serial
18003000-18003fff : ccb-mii
1800c000-1800cfff : dmu
18021000-18021fff : /axi@18000000/usb2@21000/ehci@21000
18022000-18022fff : /axi@18000000/usb2@21000/ohci@22000
18023000-18023fff : /axi@18000000/usb3@23000/xhci@23000
18028000-180285ff : nand
18028f00-18028f1f : iproc-ext
18105000-18105fff : dmp
1811a408-1811aa07 : iproc-idm
40000000-47ffffff : PCIe MEM space
   40000000-405fffff : PCI Bus 0001:01
     40000000-403fffff : 0001:01:00.0
     40400000-40407fff : 0001:01:00.0
88000000-8fffffff : System RAM

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

* pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources")
@ 2017-03-10 21:11           ` Rafał Miłecki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafał Miłecki @ 2017-03-10 21:11 UTC (permalink / raw)
  To: linux-arm-kernel

On 03/10/2017 06:47 PM, Bjorn Helgaas wrote:
> On Fri, Mar 10, 2017 at 05:02:48PM +0100, Rafa? Mi?ecki wrote:
>> On 03/09/2017 07:22 PM, Bjorn Helgaas wrote:
>>> On Thu, Mar 09, 2017 at 08:39:07AM +0100, Rafa? Mi?ecki wrote:
>>>> On 03/08/2017 01:56 PM, Rafa? Mi?ecki wrote:
>>>>> I just tried upgrading BCM5301X from 4.4 to 4.9 and noticed I don't see card
>>>>> connected to the 2nd controller.
>>>>>
>>>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>>>> pcie_iproc_bcma bcma0:7: link: UP
>>>>> PCI: bus0: Fast back to back transfers disabled
>>>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>>>> PCI: bus1: Fast back to back transfers disabled
>>>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>>>
>>>>> pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
>>>>> pcie_iproc_bcma bcma0:8: PCIe controller setup failed
>>>>> pcie_iproc_bcma: probe of bcma0:8 failed with error -16
>>>>>
>>>>>
>>>>> This used to work with older kernels because there wasn't any collision check:
>>>>>
>>>>> pcie_iproc_bcma bcma0:7: PCI host bridge to bus 0000:00
>>>>> pci_bus 0000:00: root bus resource [mem 0x08000000-0x0fffffff]
>>>>> pcie_iproc_bcma bcma0:7: link: UP
>>>>> PCI: bus0: Fast back to back transfers disabled
>>>>> pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>>>> PCI: bus1: Fast back to back transfers disabled
>>>>> pci 0000:00:00.0: BAR 8: assigned [mem 0x08000000-0x080fffff]
>>>>> pci 0000:01:00.0: BAR 0: assigned [mem 0x08000000-0x08007fff 64bit]
>>>>> pci 0000:00:00.0: PCI bridge to [bus 01]
>>>>> pci 0000:00:00.0:   bridge window [mem 0x08000000-0x080fffff]
>>>>>
>>>>> pcie_iproc_bcma bcma0:8: PCI host bridge to bus 0001:00
>>>>> pci_bus 0001:00: root bus resource [mem 0x40000000-0x47ffffff]
>>>>> pcie_iproc_bcma bcma0:8: link: UP
>>>>> PCI: bus0: Fast back to back transfers disabled
>>>>> pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
>>>>> PCI: bus1: Fast back to back transfers disabled
>>>>> pci 0001:00:00.0: BAR 8: assigned [mem 0x40000000-0x400fffff]
>>>>> pci 0001:01:00.0: BAR 0: assigned [mem 0x40000000-0x40007fff 64bit]
>>>>> pci 0001:00:00.0: PCI bridge to [bus 01]
>>>>> pci 0001:00:00.0:   bridge window [mem 0x40000000-0x400fffff]
>>>>>
>>>>>
>>>>> I guess the check is OK after all and the real problem is iproc driver assigning
>>>>> the same resource.
>>>>>
>>>>> Broadcom team: could you take a look at this, please?
>>>>
>>>> I found a reason of this conflict (and probably random crashes I started
>>>> seeing with 4.9). I believe we have a memory corruption.
>>>
>>> Yep, we're using a resource structure on the stack when we shouldn't.  Can
>>> you try the patch below?
>>
>> Works great! Will you push it with
>> Cc: stable at vger.kernel.org # v4.8+
>> please?
>
> Thanks for testing this.  I applied the patch (with the braces fix) to
> for-linus for v4.11.

Thanks!

Btw. this is how it looks now (all good it seems):

root at LEDE:/# cat /proc/iomem
00000000-07ffffff : System RAM
   00008000-0043cfff : Kernel code
   00476000-004d95df : Kernel data
08000000-0fffffff : PCIe MEM space
   08000000-085fffff : PCI Bus 0000:01
     08000000-083fffff : 0000:01:00.0
     08400000-08407fff : 0000:01:00.0
18000300-180003ff : serial
18003000-18003fff : ccb-mii
1800c000-1800cfff : dmu
18021000-18021fff : /axi at 18000000/usb2 at 21000/ehci at 21000
18022000-18022fff : /axi at 18000000/usb2 at 21000/ohci at 22000
18023000-18023fff : /axi at 18000000/usb3 at 23000/xhci at 23000
18028000-180285ff : nand
18028f00-18028f1f : iproc-ext
18105000-18105fff : dmp
1811a408-1811aa07 : iproc-idm
40000000-47ffffff : PCIe MEM space
   40000000-405fffff : PCI Bus 0001:01
     40000000-403fffff : 0001:01:00.0
     40400000-40407fff : 0001:01:00.0
88000000-8fffffff : System RAM

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

end of thread, other threads:[~2017-03-10 21:11 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-08 12:56 pcie-iproc: broken 2nd (& 3rd?) controller support by c3245a566400 ("PCI: iproc: Request host bridge window resources") Rafał Miłecki
2017-03-08 12:56 ` Rafał Miłecki
2017-03-08 17:22 ` Ray Jui
2017-03-08 23:28   ` Rafał Miłecki
2017-03-08 23:28     ` Rafał Miłecki
2017-03-09  0:31     ` Ray Jui
2017-03-09  7:39 ` Rafał Miłecki
2017-03-09  7:39   ` Rafał Miłecki
2017-03-09 18:22   ` Bjorn Helgaas
2017-03-09 18:22     ` Bjorn Helgaas
2017-03-10 16:02     ` Rafał Miłecki
2017-03-10 16:02       ` Rafał Miłecki
2017-03-10 17:21       ` Ray Jui
2017-03-10 17:21         ` Ray Jui
2017-03-10 17:47       ` Bjorn Helgaas
2017-03-10 17:47         ` Bjorn Helgaas
2017-03-10 21:11         ` Rafał Miłecki
2017-03-10 21:11           ` 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.