Sep 25 2024
Sep 4 2024
Nov 11 2021
Sep 15 2021
LGTM + tested with ACPI and DT on MacchiatoBin.
Sep 10 2021
- Rename quirk to PCIE_ECAM_DESIGNWARE_QUIRK
- Add socionext,synquacer-pcie-ecam and snps,dw-pcie-ecam compats
Sep 9 2021
Aug 27 2021
Aug 26 2021
Yep that's another good observation... any more bugs you can think of with my original code? :)
Thinking about it again, pcib_expand_window() should receive not the requested start/end values, but MIN()/MAX() respectively from them and the current window base/limit. Otherwise in case of multiple resources pcib_expand_window() panic on attempt to shrink the window on another side of where it growth. Unfortunately I don't have hardware configuration with more than one second level bridge connected to the one closest to the root to illustrate that.
Still an accept with the context added :)
Given pcib_grow_window also rounds requests it seems sensible to be consistent and do so here too. Not writing the updated window is indeed a silly oversight and explains why clear_pcib wasn't working for me on my board, stopping enumeration early. But best wait for John to check there isn't something I'm overlooking here.
Feb 15 2020
No longer working on this. Someone else can take it up.
Jan 23 2020
Jun 10 2019
Aug 18 2018
Aug 2 2018
Mar 15 2018
Dec 5 2017
Errr, my cleanup is runtime, not ddb time, sorry for the confusion. I've not grabbed this code.
I've cleaned up this code somewhat, but not completely. I need to reconnect it to an interrupt and then test it in machines that generate these errors...
Jun 30 2017
Feb 11 2017
Some more comments based on first trying to use this code, and then trying to rework it.
While the code is decently written, there's a number of fundamental assumptions it makes that aren't reflective of the AER in the PCIe spec that require changes.
I've not looked at all at the userland test suite, so have no opinion on that.
Feb 6 2017
After talking with John, these two reports are self-consistent. The bridge see one kind of thing going on (timeout) while the card sees something else (bad header so ignored).
For example:
pciconf -bBlaec pcib5
pcib5@pci0:0:2:2: class=0x060400 card=0x083315d9 chip=0x6f068086 rev=0x01 hdr=0x01
bus range = 4-4 window[1c] = type I/O Port, range 16, addr 0xf000-0xfff, disabled window[20] = type Memory, range 32, addr 0xfb500000-0xfb5fffff, enabled window[24] = type Prefetchable Memory, range 64, addr 0xfff00000-0xfffff, disabled cap 0d[40] = PCI Bridge card=0x083315d9 cap 05[60] = MSI supports 2 messages, vector masks cap 10[90] = PCI-Express 2 root port max data 256(256) ARI disabled link x4(x4) speed 2.5(8.0) slot 0 power limit 25000 mW surprise cap 01[e0] = powerspec 3 supports D0 D3 current D0 ecap 000b[100] = Vendor 1 ID 2 ecap 000d[110] = ACS 1 ecap 0001[148] = AER 1 0 fatal 1 non-fatal 2 corrected ecap 000b[1d0] = Vendor 1 ID 3 ecap 0019[250] = PCIe Sec 1 lane errors 0 ecap 000b[280] = Vendor 1 ID 5 ecap 000b[300] = Vendor 1 ID 8 PCI-e errors = Correctable Error Detected Non-Fatal Error Detected Non-fatal = Completion Timeout Corrected = Replay Timer Timeout Advisory Non-Fatal Error
For the commit, I'd suggest doing the injection tool (both userland and kernel) separate from the kernel changes to pcib.