• Baochen Qiang's avatar
    wifi: ath11k: fix boot failure with one MSI vector · 39564b47
    Baochen Qiang authored
    Commit 5b32b6dd ("ath11k: Remove core PCI references from
    PCI common code") breaks with one MSI vector because it moves
    affinity setting after IRQ request, see below log:
    
    [ 1417.278835] ath11k_pci 0000:02:00.0: failed to receive control response completion, polling..
    [ 1418.302829] ath11k_pci 0000:02:00.0: Service connect timeout
    [ 1418.302833] ath11k_pci 0000:02:00.0: failed to connect to HTT: -110
    [ 1418.303669] ath11k_pci 0000:02:00.0: failed to start core: -110
    
    The detail is, if do affinity request after IRQ activated,
    which is done in request_irq(), kernel caches that request and
    returns success directly. Later when a subsequent MHI interrupt is
    fired, kernel will do the real affinity setting work, as a result,
    changs the MSI vector. However at that time host has configured
    old vector to hardware, so host never receives CE or DP interrupts.
    
    Fix it by setting affinity before registering MHI controller
    where host is, for the first time, doing IRQ request.
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
    Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.23
    Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-01160-QCAMSLSWPLZ-1
    
    Fixes: 5b32b6dd ("ath11k: Remove core PCI references from PCI common code")
    Signed-off-by: default avatarBaochen Qiang <quic_bqiang@quicinc.com>
    Acked-by: default avatarJeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230907015606.16297-1-quic_bqiang@quicinc.com
    39564b47
pci.c 26.5 KB