Re: ath9k legacy vs MSI interrupt issue on imx8mm soc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 20, 2023 at 1:46 PM Tim Harvey <tharvey@xxxxxxxxxxxxx> wrote:
>
> (+linux-pci, Fabio, Richard)
>
> Daniel,
>
> I may have two different issues going on here:
> 1) issues with ath9k MSI interrupts
> 2) issues with ath9k legacy interrupts on IMX8MM

Lucas,

I've found an old thread [1] where you state that Designware PCIe core
(not just IMX6) has an issue where as soon as any MSI interrupt is
enabled the core does not forward legacy IRQs anymore so if any card
in your system needs legacy interrupts you must disable MSI
completely.

I assume this is still the understanding and also applies then to
IMX8MM/IMX8MP? This would explain why I'm unable to get legacy
interrupts working without pci=nomsi as the PME driver requests an MSI
interrupt.

Do you know any reason why I can get legacy IRQ's to work with
pci=nomsi on IMX6Q/DL with and without a bridge but on IMX8MM I can
only get it to work without a bridge?

Best Regards,

Tim
[1] https://patchwork.kernel.org/project/linux-pci/patch/20181120165626.26424-2-stefan@xxxxxxxx/#22345435

>
> To rule out the PCIe switch being an issue for me I moved to an
> imx8mm-venice-gw71xx-0x which has an IMX8MM and no PCIe switch.
>
> I've found that with MSI enabled globally, but ath9k not using MSI I
> fail to get any interrupts from the radio with nothing abnormal from
> dmesg:
> # uname -r
> 6.2.0-09243-ge911eb7b8ec1
> # cat /proc/cmdline
>
> # lspci -n
> 00:00.0 0604: 16c3:abcd (rev 01)
> 01:00.0 0280: 168c:0036 (rev 01)
> # dmesg | grep pci
> [    1.524560] imx6q-pcie 33800000.pcie: host bridge
> /soc@0/pcie@33800000 ranges:
> [    1.531870] imx6q-pcie 33800000.pcie:       IO
> 0x001ff80000..0x001ff8ffff -> 0x0000000000
> [    1.544109] imx6q-pcie 33800000.pcie:      MEM
> 0x0018000000..0x001fefffff -> 0x0018000000
> [    1.767610] imx6q-pcie 33800000.pcie: iATU: unroll T, 4 ob, 4 ib,
> align 64K, limit 4G
> [    1.875571] imx6q-pcie 33800000.pcie: PCIe Gen.1 x1 link up
> [    1.881241] imx6q-pcie 33800000.pcie: PCIe Gen.1 x1 link up
> [    1.886843] imx6q-pcie 33800000.pcie: Link up, Gen1
> [    1.891746] imx6q-pcie 33800000.pcie: PCIe Gen.1 x1 link up
> [    1.897674] imx6q-pcie 33800000.pcie: PCI host bridge to bus 0000:00
> [    1.904078] pci_bus 0000:00: root bus resource [bus 00-ff]
> [    1.909585] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
> [    1.915784] pci_bus 0000:00: root bus resource [mem 0x18000000-0x1fefffff]
> [    1.922706] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400
> [    1.928746] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
> [    1.935043] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
> [    1.941820] pci 0000:00:00.0: supports D1
> [    1.945849] pci 0000:00:00.0: PME# supported from D0 D1 D3hot D3cold
> [    1.954254] pci 0000:01:00.0: [168c:0036] type 00 class 0x028000
> [    1.960394] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0007ffff 64bit]
> [    1.967342] pci 0000:01:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
> [    1.974389] pci 0000:01:00.0: supports D1 D2
> [    1.978681] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
> [    1.995483] pci 0000:00:00.0: BAR 0: assigned [mem 0x18000000-0x180fffff]
> [    2.002334] pci 0000:00:00.0: BAR 14: assigned [mem 0x18100000-0x181fffff]
> [    2.009240] pci 0000:00:00.0: BAR 15: assigned [mem
> 0x18200000-0x182fffff pref]
> [    2.016576] pci 0000:00:00.0: BAR 6: assigned [mem
> 0x18300000-0x1830ffff pref]
> [    2.023833] pci 0000:01:00.0: BAR 0: assigned [mem
> 0x18100000-0x1817ffff 64bit]
> [    2.031214] pci 0000:01:00.0: BAR 6: assigned [mem
> 0x18200000-0x1820ffff pref]
> [    2.038462] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
> [    2.043711] pci 0000:00:00.0:   bridge window [mem 0x18100000-0x181fffff]
> [    2.050518] pci 0000:00:00.0:   bridge window [mem
> 0x18200000-0x182fffff pref]
> [    2.058205] pcieport 0000:00:00.0: PME: Signaling with IRQ 205
> # dmesg | grep ath
> [    2.064379] ath9k 0000:01:00.0: enabling device (0000 -> 0002)
> [    2.070445] ath: phy0: WB335 2-ANT card detected
> [    2.075092] ath: phy0: Set BT/WLAN RX diversity capability
> [    2.088891] ath: phy0: Enable LNA combining
> [    2.094278] ath: EEPROM regdomain: 0x6a
> [    2.094285] ath: EEPROM indicates we should expect a direct regpair map
> [    2.094293] ath: Country alpha2 being used: 00
> [    2.094297] ath: Regpair used: 0x6a
> [   14.228284] ath9k 0000:01:00.0 wlp1s0: renamed from wlan0
> # wpa_supplicant -i wlp1s0 -c wpa_supplicant.conf
> Successfully initialized wpa_supplicant
> <snip authentication details>
> # grep ath /proc/interrupts
> 204:          0          0          0          0     GICv3 157 Level     ath9k
> # cat /proc/interrupts
>            CPU0       CPU1       CPU2       CPU3
>  11:       2196       1753       1883       3509     GICv3  30 Level
>   arch_timer
>  14:          0          0          0          0     GICv3  79 Level
>   timer@306a0000
>  15:          0          0          0          0     GICv3  23 Level     arm-pmu
>  16:          0          0          0          0     GICv3 135 Level
>   302c0000.dma-controller
>  17:          0          0          0          0     GICv3  66 Level
>   302b0000.dma-controller
>  18:          0          0          0          0     GICv3  34 Level
>   30bd0000.dma-controller
>  19:          0          0          0          0     GICv3  58 Level
>   30860000.serial
>  20:          0          0          0          0     GICv3  60 Level
>   30880000.serial
>  21:        503          0          0          0     GICv3  59 Level
>   30890000.serial
>  22:          0          0          0          0     GICv3 110 Level
>   30280000.watchdog
>  23:        418          0          0          0     GICv3  56 Level     mmc2
>  41:          0          0          0          0  gpio-mxc  15 Edge      pps.-1
>  66:          0          0          0          0  gpio-mxc   6 Level
>   gateworks-gsc
> 194:        750          0          0          0     GICv3  67 Level
>   30a20000.i2c
> 195:          0          0          0          0  gateworks-gsc   4
> Edge      0-0023
> 196:         25          0          0          0     GICv3  68 Level
>   30a30000.i2c
> 197:          0          0          0          0     GICv3  69 Level
>   30a40000.i2c
> 198:          0          0          0          0     GICv3  64 Level
>   30830000.spi
> 199:          0          0          0          0     GICv3 150 Level
>   30be0000.ethernet
> 200:          0          0          0          0     GICv3 151 Level
>   30be0000.ethernet
> 201:          0          0          0          0     GICv3 152 Level
>   30be0000.ethernet
> 202:          0          0          0          0     GICv3 153 Level
>   30be0000.ethernet
> 204:          0          0          0          0     GICv3 157 Level     ath9k
> 205:          0          0          0          0   PCI-MSI   0 Edge
>   PCIe PME
> 206:          0          0          0          0     GICv3  72 Level
>   32e40000.usb
> 207:         18          0          0          0     GICv3  73 Level
>   32e50000.usb
> 208:          0          0          0          0  gateworks-gsc   0
> Edge      user_pb1x
> 209:          0          0          0          0  gateworks-gsc   1
> Edge      key_erased
> 210:          0          0          0          0  gateworks-gsc   2
> Edge      eeprom_wp
> 211:          0          0          0          0  gateworks-gsc   5
> Edge      tamper
> 212:          0          0          0          0  gateworks-gsc   7
> Edge      switch_hold
> 213:          0          0          0          0 0-0023   2 Edge      user_pb
> IPI0:       620        751        665        109       Rescheduling interrupts
> IPI1:       361       1387       1285        509       Function call interrupts
> IPI2:         0          0          0          0       CPU stop interrupts
> IPI3:         0          0          0          0       CPU stop (for
> crash dump) interrupts
> IPI4:         0          0          0          0       Timer broadcast
> interrupts
> IPI5:         5          9         10          2       IRQ work interrupts
> IPI6:         0          0          0          0       CPU wake-up interrupts
> Err:          0
> ^^^ no interrupts from ath9k radio
> ^^^ is MSI enabled for the controller but ath9k electing to use legacy
> INT's a valid configuration?
>
> With MSI disabled globally via pci=nomsi ath9k gets interrupts and works fine:
> # cat /proc/cmdline
> pci=nomsi
> # dmesg | grep ath
> [    2.052527] ath9k 0000:01:00.0: enabling device (0000 -> 0002)
> [    2.058556] ath: phy0: WB335 2-ANT card detected
> [    2.063199] ath: phy0: Set BT/WLAN RX diversity capability
> [    2.077381] ath: phy0: Enable LNA combining
> [    2.082799] ath: EEPROM regdomain: 0x6a
> [    2.082805] ath: EEPROM indicates we should expect a direct regpair map
> [    2.082813] ath: Country alpha2 being used: 00
> [    2.082818] ath: Regpair used: 0x6a
> [   11.620093] ath9k 0000:01:00.0 wlp1s0: renamed from wlan0
> # wpa_supplicant -i wlp1s0 -c wpa_supplicant.conf
> Successfully initialized wpa_supplicant
> <snip authentication details>
> #
> # grep ath /proc/interrupts
> 203:        379          0          0          0     GICv3 157 Level
>   PCIe PME, ath9k
> # cat /proc/interrupts
>            CPU0       CPU1       CPU2       CPU3
>  11:       1622       2152       3288       2005     GICv3  30 Level
>   arch_timer
>  14:          0          0          0          0     GICv3  79 Level
>   timer@306a0000
>  15:          0          0          0          0     GICv3  23 Level     arm-pmu
>  16:          0          0          0          0     GICv3 135 Level
>   302c0000.dma-controller
>  17:          0          0          0          0     GICv3  66 Level
>   302b0000.dma-controller
>  18:          0          0          0          0     GICv3  34 Level
>   30bd0000.dma-controller
>  19:          0          0          0          0     GICv3  58 Level
>   30860000.serial
>  20:          0          0          0          0     GICv3  60 Level
>   30880000.serial
>  21:        597          0          0          0     GICv3  59 Level
>   30890000.serial
>  22:          0          0          0          0     GICv3 110 Level
>   30280000.watchdog
>  23:        414          0          0          0     GICv3  56 Level     mmc2
>  41:          0          0          0          0  gpio-mxc  15 Edge      pps.-1
>  66:          0          0          0          0  gpio-mxc   6 Level
>   gateworks-gsc
> 194:        978          0          0          0     GICv3  67 Level
>   30a20000.i2c
> 195:          0          0          0          0  gateworks-gsc   4
> Edge      0-0023
> 196:         25          0          0          0     GICv3  68 Level
>   30a30000.i2c
> 197:          0          0          0          0     GICv3  69 Level
>   30a40000.i2c
> 198:          0          0          0          0     GICv3  64 Level
>   30830000.spi
> 199:          0          0          0          0     GICv3 150 Level
>   30be0000.ethernet
> 200:          0          0          0          0     GICv3 151 Level
>   30be0000.ethernet
> 201:          0          0          0          0     GICv3 152 Level
>   30be0000.ethernet
> 202:          0          0          0          0     GICv3 153 Level
>   30be0000.ethernet
> 203:        379          0          0          0     GICv3 157 Level
>   PCIe PME, ath9k
> 204:          0          0          0          0     GICv3  72 Level
>   32e40000.usb
> 205:         18          0          0          0     GICv3  73 Level
>   32e50000.usb
> 206:          0          0          0          0  gateworks-gsc   0
> Edge      user_pb1x
> 207:          0          0          0          0  gateworks-gsc   1
> Edge      key_erased
> 208:          0          0          0          0  gateworks-gsc   2
> Edge      eeprom_wp
> 209:          0          0          0          0  gateworks-gsc   5
> Edge      tamper
> 210:          0          0          0          0  gateworks-gsc   7
> Edge      switch_hold
> 211:          0          0          0          0 0-0023   2 Edge      user_pb
> IPI0:       501        506         73        759       Rescheduling interrupts
> IPI1:       878        846        718       1169       Function call interrupts
> IPI2:         0          0          0          0       CPU stop interrupts
> IPI3:         0          0          0          0       CPU stop (for
> crash dump) interrupts
> IPI4:         0          0          0          0       Timer broadcast
> interrupts
> IPI5:         5          4          9         20       IRQ work interrupts
> IPI6:         0          0          0          0       CPU wake-up interrupts
> Err:          0
> ^^^ legacy interrupts working as long as I disable MSI globally for IMX8MM
>
> And with MSI enabled globally as well as ath9k (ath9k.use_msi=1) ath9k
> fails to get interrupts and shows the interrupt error I ran into
> previously:
> # cat /proc/cmdline
> ath9k.use_msi=1
> # dmesg | grep ath
> [    0.000000] Kernel command line: ath9k.use_msi=1
> [    2.056381] ath9k 0000:01:00.0: enabling device (0000 -> 0002)
> [    2.062571] ath9k 0000:01:00.0: Using MSI
> [    2.066651] ath: phy0: WB335 2-ANT card detected
> [    2.071288] ath: phy0: Set BT/WLAN RX diversity capability
> [    2.085083] ath: phy0: Enable LNA combining
> [    2.090470] ath: EEPROM regdomain: 0x6a
> [    2.090476] ath: EEPROM indicates we should expect a direct regpair map
> [    2.090484] ath: Country alpha2 being used: 00
> [    2.090489] ath: Regpair used: 0x6a
> [   13.999159] ath9k 0000:01:00.0 wlp1s0: renamed from wlan0
> # wpa_supplicant -i wlp1s0 -c wpa_supplicant.conf
> Successfully initialized wpa_supplicant
> [   66.790178] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0x6A0C9C8
> [   66.798000] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0x6A0C9C8
> [   66.811551] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0x6A0C9C8
> [   66.937204] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0x6A0C9C8
> [   66.950679] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0x6A0C9C8
> [   67.020994] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.092917] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.164905] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.236957] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.308928] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.380902] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.452954] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.524881] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.596917] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.668907] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.740908] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> [   67.860948] ath: phy0: __ath9k_hw_enable_interrupts: _msi_reg = 0xEA0C9C8
> ...
> <snip authentication details>
> # grep ath /proc/interrupts
> 206:          0          0          0          0   PCI-MSI 524288 Edge
>      ath9k
> # cat /proc/interrupts
>            CPU0       CPU1       CPU2       CPU3
>  11:       1421       3067       1999       2767     GICv3  30 Level
>   arch_timer
>  14:          0          0          0          0     GICv3  79 Level
>   timer@306a0000
>  15:          0          0          0          0     GICv3  23 Level     arm-pmu
>  16:          0          0          0          0     GICv3 135 Level
>   302c0000.dma-controller
>  17:          0          0          0          0     GICv3  66 Level
>   302b0000.dma-controller
>  18:          0          0          0          0     GICv3  34 Level
>   30bd0000.dma-controller
>  19:          0          0          0          0     GICv3  58 Level
>   30860000.serial
>  20:          0          0          0          0     GICv3  60 Level
>   30880000.serial
>  21:        289          0          0          0     GICv3  59 Level
>   30890000.serial
>  22:          0          0          0          0     GICv3 110 Level
>   30280000.watchdog
>  23:        390          0          0          0     GICv3  56 Level     mmc2
>  41:          0          0          0          0  gpio-mxc  15 Edge      pps.-1
>  66:          0          0          0          0  gpio-mxc   6 Level
>   gateworks-gsc
> 194:       1054          0          0          0     GICv3  67 Level
>   30a20000.i2c
> 195:          0          0          0          0  gateworks-gsc   4
> Edge      0-0023
> 196:         25          0          0          0     GICv3  68 Level
>   30a30000.i2c
> 197:          0          0          0          0     GICv3  69 Level
>   30a40000.i2c
> 198:          0          0          0          0     GICv3  64 Level
>   30830000.spi
> 199:          0          0          0          0     GICv3 150 Level
>   30be0000.ethernet
> 200:          0          0          0          0     GICv3 151 Level
>   30be0000.ethernet
> 201:          0          0          0          0     GICv3 152 Level
>   30be0000.ethernet
> 202:          0          0          0          0     GICv3 153 Level
>   30be0000.ethernet
> 205:       6891          0          0          0   PCI-MSI   0 Edge
>   PCIe PME
> 206:          0          0          0          0   PCI-MSI 524288 Edge
>      ath9k
> 207:          0          0          0          0     GICv3  72 Level
>   32e40000.usb
> 208:         18          0          0          0     GICv3  73 Level
>   32e50000.usb
> 209:          0          0          0          0  gateworks-gsc   0
> Edge      user_pb1x
> 210:          0          0          0          0  gateworks-gsc   1
> Edge      key_erased
> 211:          0          0          0          0  gateworks-gsc   2
> Edge      eeprom_wp
> 212:          0          0          0          0  gateworks-gsc   5
> Edge      tamper
> 213:          0          0          0          0  gateworks-gsc   7
> Edge      switch_hold
> 214:          0          0          0          0 0-0023   2 Edge      user_pb
> IPI0:       646         64        692        808       Rescheduling interrupts
> IPI1:      1211        893        503       1097       Function call interrupts
> IPI2:         0          0          0          0       CPU stop interrupts
> IPI3:         0          0          0          0       CPU stop (for
> crash dump) interrupts
> IPI4:         0          0          0          0       Timer broadcast
> interrupts
> IPI5:         9         13         12          8       IRQ work interrupts
> IPI6:         0          0          0          0       CPU wake-up interrupts
> Err:          0
> ^^^ It looks to me like when using MSI above the interrupts are going
> to the PME driver MSI 0 and the ath9k MSI interrupt shows as 524288
> which aligns to 4 but seems strange that its so large.
>
> Does this jive with what you encountered?
>
> Note that ath10k which require MSI interrupts are working fine on this
> platform and the MSI interrupt is also 524288:
> 205:          0          0          0          0   PCI-MSI   0 Edge
>   PCIe PME
> 206:        632          0          0          0   PCI-MSI 524288 Edge
>      ath10k_pci
>
> Note that ath11k which requires MSI interrupts is also working fine on
> this board:
> 205:          0          0          0          0   PCI-MSI   0 Edge
>   PCIe PME
> 206:          4          0          0          0   PCI-MSI 524288 Edge      bhi
> 207:          4          0          0          0   PCI-MSI 524289 Edge      mhi
> 208:         39          0          0          0   PCI-MSI 524290 Edge      mhi
> 209:          3          0          0          0   PCI-MSI 524291 Edge      ce0
> 210:         26          0          0          1   PCI-MSI 524292 Edge      ce1
> 211:        267          0          0          1   PCI-MSI 524293 Edge      ce2
> 212:         88          0          0          0   PCI-MSI 524294 Edge      ce3
> 213:          0          0          0          1   PCI-MSI 524295 Edge      ce5
> 214:          2          0          0          0   PCI-MSI 524296 Edge
>      DP_EXT_IRQ
> 215:          0          0          0          0   PCI-MSI 524297 Edge
>      DP_EXT_IRQ
> 216:          0          0          0          0   PCI-MSI 524298 Edge
>      DP_EXT_IRQ
> 217:         15          0          0          0   PCI-MSI 524299 Edge
>      DP_EXT_IRQ
> 218:          0          0          0          0   PCI-MSI 524300 Edge
>      DP_EXT_IRQ
> 219:          2          0          0          0   PCI-MSI 524301 Edge
>      DP_EXT_IRQ
> 220:          0          0          0          0   PCI-MSI 524302 Edge
>      DP_EXT_IRQ
> 221:          0          0          0          0   PCI-MSI 524303 Edge
>      DP_EXT_IRQ
>
> Now, if I move back to an imx8mm-venice-gw73xx-0x which has an IMX8MM
> and a PCI bridge I can't even get the legacy IRQ configuration to work
> (no interrupts):
> # cat /proc/cmdline
> pci=nomsi
> # lspci
> 00:00.0 PCI bridge: Synopsys, Inc. DWC_usb3 / PCIe bridge (rev 01)
> 01:00.0 PCI bridge: Pericom Semiconductor Device b404 (rev 01)
> 02:01.0 PCI bridge: Pericom Semiconductor Device b404 (rev 01)
> 02:02.0 PCI bridge: Pericom Semiconductor Device b404 (rev 01)
> 02:03.0 PCI bridge: Pericom Semiconductor Device b404 (rev 01)
> 04:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless
> Network Adapter (rev 01)
> 05:00.0 Ethernet controller: Microchip Technology / SMSC Device 7430 (rev 11)
> # dmesg | grep ath
> [    2.475134] ath9k 0000:04:00.0: enabling device (0000 -> 0002)
> [    2.481157] ath: phy0: WB335 2-ANT card detected
> [    2.485797] ath: phy0: Set BT/WLAN RX diversity capability
> [    2.499443] ath: phy0: Enable LNA combining
> [    2.504837] ath: EEPROM regdomain: 0x6a
> [    2.504845] ath: EEPROM indicates we should expect a direct regpair map
> [    2.504853] ath: Country alpha2 being used: 00
> [    2.504858] ath: Regpair used: 0x6a
> [   10.237297] ath9k 0000:04:00.0 wlp4s0: renamed from wlan0
> # wpa_supplicant -i wlp4s0 -c wpa_supplicant.conf
> <snip failed auth>
> # grep -i pci /proc/interrupts
> 204:          0          0          0          0     GICv3 157 Level
>   PCIe PME, ath9k
> # cat /proc/interrupts
>            CPU0       CPU1       CPU2       CPU3
>  11:       1550       3047       2199       4301     GICv3  30 Level
>   arch_timer
>  14:          0          0          0          0     GICv3  79 Level
>   timer@306a0000
>  15:          0          0          0          0     GICv3  23 Level     arm-pmu
>  16:          0          0          0          0     GICv3 135 Level
>   302c0000.dma-controller
>  17:          0          0          0          0     GICv3  66 Level
>   302b0000.dma-controller
>  18:        332          0          0          0     GICv3  34 Level
>   30bd0000.dma-controller
>  19:          0          0          0          0     GICv3  58 Level
>   30860000.serial
>  20:        773          0          0          0     GICv3  59 Level
>   30890000.serial
>  21:          0          0          0          0     GICv3  61 Level
>   30a60000.serial
>  22:          0          0          0          0     GICv3 110 Level
>   30280000.watchdog
>  23:        433          0          0          0     GICv3  56 Level     mmc2
>  41:          0          0          0          0  gpio-mxc  15 Edge      pps.-1
>  66:          0          0          0          0  gpio-mxc   6 Level
>   gateworks-gsc
>  72:          0          0          0          0  gpio-mxc  12 Edge
>   30b50000.mmc cd
> 170:          4          0          0          0  gpio-mxc   8 Edge
>   30880000.serial
> 194:       1282          0          0          0     GICv3  67 Level
>   30a20000.i2c
> 195:          0          0          0          0  gateworks-gsc   4
> Edge      0-0023
> 196:         25          0          0          0     GICv3  68 Level
>   30a30000.i2c
> 197:          0          0          0          0     GICv3  69 Level
>   30a40000.i2c
> 198:          0          0          0          0     GICv3  60 Level
>   30880000.serial
> 199:          0          0          0          0     GICv3  64 Level
>   30830000.spi
> 200:          0          0          0          0     GICv3 150 Level
>   30be0000.ethernet
> 201:          0          0          0          0     GICv3 151 Level
>   30be0000.ethernet
> 202:          0          0          0          0     GICv3 152 Level
>   30be0000.ethernet
> 203:          0          0          0          0     GICv3 153 Level
>   30be0000.ethernet
> 204:          0          0          0          0     GICv3 157 Level
>   PCIe PME, ath9k
> 205:          0          0          0          0     GICv3  72 Level
>   32e40000.usb
> 206:        105          0          0          0     GICv3  73 Level
>   32e50000.usb
> 207:       6244          0          0          0     GICv3  54 Level     mmc0
> 208:          0          0          0          0     GICv3  55 Level     mmc1
> 209:          0          0          0          0  gateworks-gsc   0
> Edge      user_pb1x
> 210:          0          0          0          0  gateworks-gsc   1
> Edge      key_erased
> 211:          0          0          0          0  gateworks-gsc   2
> Edge      eeprom_wp
> 212:          0          0          0          0  gateworks-gsc   5
> Edge      tamper
> 213:          0          0          0          0  gateworks-gsc   7
> Edge      switch_hold
> 214:          0          0          0          0 0-0023   2 Edge      user_pb
> IPI0:       367        486        444        286       Rescheduling interrupts
> IPI1:       972       1283       1202       1630       Function call interrupts
> IPI2:         0          0          0          0       CPU stop interrupts
> IPI3:         0          0          0          0       CPU stop (for
> crash dump) interrupts
> IPI4:         0          0          0          0       Timer broadcast
> interrupts
> IPI5:         5          6          7         36       IRQ work interrupts
> IPI6:         0          0          0          0       CPU wake-up interrupts
> Err:          0
> ^^^ why no interrupts on this board when disabling MSI globally and
> using ath9k legacy interrupts.... something to do with the bridge?
>
> Best Regards,
>
> Tim
>
>
>
> On Mon, Mar 20, 2023 at 4:29 AM Daniel Drake <drake@xxxxxxxxxxxxx> wrote:
> >
> > On Sat, Mar 18, 2023 at 8:17 AM Tim Harvey <tharvey@xxxxxxxxxxxxx> wrote:
> > > It seems that Daniel may have been running into something similar back
> > > when commit 7368160f0ab0 ("ath9k: add MSI support") was merged
> > > [1][2][3]
> > >
> > > Does anyone have any advice here about what can be going on?
> >
> > The issue we found earlier was that ath9k MSI is broken unless the MSI
> > IRQ number coincidentally is aligned to 4.
> >
> > Worked around with:
> > https://github.com/endlessm/linux/commit/0a2d86a2b9da8f936d873addf0a97e341177fe8a
> > https://github.com/endlessm/linux/commit/970d2b4b59465cd926e5213e0feb633f6b623447
> >
> > IIRC the PCI patch wasn't accepted upstream at the time and I never
> > got any response from Atheros/Qualcomm about this device
> > hardware/firmware bug.
> >
> > Daniel




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux