Yesterday
Clear BUSMASTEREN together with INTxDIS
Mon, Nov 2
Fri, Oct 30
Wed, Oct 14
Makes sense: ppt_teardown_msix_intr() -> bus_teardown_intr() -> pci_mask_msix() writes the vector control dword in the table BAR, so with decode off that is a UR. One suggestion: the old ordering also stopped DMA before the interrupt teardown (the device could still be bus-mastering while its guest mappings go away), and the new one leaves BUSMASTEREN on until afterwards. Clearing BUSMASTEREN together with INTxDIS first, and only deferring PORTEN/MEMEN until after the MSI-X teardown, keeps both properties. (MSI teardown doesn't touch BARs; only MSI-X does.) We carry the same ordering in keelOS's ppt (stable/15) and will pick this up.
Sun, Oct 11
handle PCI_QUIRK_MSI_INTX_BUG
Sep 28 2026
Hmmm, so in theory device_detach() might power off the child. I guess that's ok. I have some WIP that will "fix" this more properly by having device_probe_and_attach() invoke a pre-probe bus_if.m method that for PCI restores the saved state that would handle this transparently, but this is ok for now.
Sep 8 2026
Sep 7 2026
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.
