Re: [PATCH 1/3] wifi: ath11k: Set IRQ affinity hint after requesting all shared IRQs

Jeff Johnson
2024-08-23T18:10:07Z

On 8/23/2024 8:55 AM, Manivannan Sadhasivam wrote:
> If a shared IRQ is used by the driver due to platform limitation, then the
> IRQ affinity hint is set right after the allocation of IRQ vectors in
> ath11k_pci_alloc_msi(). This does no harm unless one of the functions
> requesting the IRQ fails and attempt to free the IRQ. This results in the
> below warning:
>
> [ 29.804276] ath11k_pci 0000:01:00.0: failed to power up mhi: -110
> [ 29.810564] ath11k_pci 0000:01:00.0: failed to start mhi: -110
> [ 29.816566] ath11k_pci 0000:01:00.0: failed to power up :-110
> [ 29.847202] ath11k_pci 0000:01:00.0: failed to create soc core: -110
> [ 29.853735] ath11k_pci 0000:01:00.0: failed to init core: -110
> [ 29.859745] ------------[ cut here ]------------
> [ 29.864486] WARNING: CPU: 7 PID: 349 at kernel/irq/manage.c:1929 free_irq+0x278/0x29c
> [ 29.872529] Modules linked in: snd_soc_hdmi_codec ath11k_pci(+) venus_dec venus_enc ath11k videobuf2_dma_contig videobuf2_memops nb7vpq904m lontium_lt9611uxc mcp251xfd mac80211 can_dev libarc4 hci_uart
> btqca btbcm ax88179_178a usbnet option leds_qcom_lpg usb_wwan led_class_multicolor usbserial crct10dif_ce qcom_pmic_tcpm tcpm venus_core aux_hpd_bridge qcom_spmi_adc_tm5 v4l2_mem2mem qcom_pon qcom_spmi_a
> dc5 videobuf2_v4l2 bluetooth videobuf2_common msm qcom_spmi_temp_alarm rtc_pm8xxx qcom_vadc_common ocmem snd_soc_sm8250 gpu_sched snd_soc_qcom_sdw videodev drm_exec phy_qcom_qmp_combo drm_display_helper s
> nd_soc_qcom_common qcom_stats mc i2c_qcom_geni llcc_qcom spi_geni_qcom drm_dp_aux_bus aux_bridge icc_bwmon typec qcom_rng coresight_stm coresight_tmc coresight_replicator stm_core coresight_funnel soundwi
> re_qcom qrtr pci_pwrctl_pwrseq qcrypto pci_pwrctl_core soundwire_bus snd_soc_lpass_va_macro pinctrl_sm8250_lpass_lpi snd_soc_lpass_wsa_macro authenc lpass_gfm_sm8250 coresight slimbus pinctrl_lpass_lpi
> [ 29.872610] snd_soc_lpass_macro_common qcom_q6v5_pas libdes qcom_pil_info qcom_q6v5 qcom_sysmon qcom_common pwrseq_qcom_wcn qcom_glink_smem mdt_loader pwrseq_core icc_osm_l3 qmi_helpers qcom_wdt socin
> fo display_connector drm_kms_helper cfg80211 rfkill fuse drm backlight ip_tables x_tables ipv6
> [ 29.990067] CPU: 7 UID: 0 PID: 349 Comm: (udev-worker) Not tainted 6.11-rc4 #50
> [ 29.997564] Hardware name: Qualcomm Technologies, Inc. Robotics RB5 (DT)
> [ 30.004446] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> [ 30.011591] pc : free_irq+0x278/0x29c
> [ 30.015355] lr : free_irq+0xb4/0x29c
> [ 30.019030] sp : ffff800081f236e0
> [ 30.022441] x29: ffff800081f236e0 x28: ffff64630d260000 x27: ffffd8d89a8c3458
> [ 30.029764] x26: ffff64630d26ac00 x25: 00000000000000d6 x24: ffff6463029c58dc
> [ 30.037086] x23: ffff6463029c5990 x22: ffff64630d261c58 x21: 0000000000000000
> [ 30.044408] x20: ffff646301431c00 x19: ffff6463029c5800 x18: 0000000000000010
> [ 30.051730] x17: 0000000000010108 x16: ffffd8d8f1d8b840 x15: 0763072007740769
> [ 30.059051] x14: 000000000000030d x13: ffff646306b35ae8 x12: ffffd8d8f3852b80
> [ 30.066374] x11: ffff646306b356c0 x10: 0000000000000000 x9 : 00000000000000d6
> [ 30.073696] x8 : 000000000000000f x7 : 1fffec8c605626a1 x6 : ffffd8d8f2e602b8
> [ 30.081017] x5 : 0000000000000030 x4 : ffff646302b13580 x3 : ffff646301431c98
> [ 30.088339] x2 : 0000000000200880 x1 : ffff646301431c00 x0 : ffffd8d8f2b2c1b8
> [ 30.095662] Call trace:

refer to:
https://www.kernel.org/doc/html/latest/process/submitting-patches.html#backtraces-in-commit-messages

per that guidance can we remove the "distracting information like timestamps, module lists, register and stack dumps"

removing the module list will fix the checkpatch issue:
WARNING:TYPO_SPELLING: 'fo' may be misspelled - perhaps 'of'?

> [ 30.098183] free_irq+0x278/0x29c
> [ 30.101595] ath11k_pcic_free_irq+0x70/0x10c [ath11k]
> [ 30.106800] ath11k_pci_probe+0x800/0x820 [ath11k_pci]
> [ 30.112081] local_pci_probe+0x40/0xbc
> [ 30.115934] pci_device_probe+0x1d4/0x1e8
> [ 30.120049] really_probe+0xbc/0x268
> [ 30.123727] __driver_probe_device+0x78/0x12c
> [ 30.128204] driver_probe_device+0x40/0x11c
> [ 30.132505] __driver_attach+0x74/0x124
> [ 30.136445] bus_for_each_dev+0x78/0xe0
> [ 30.140383] driver_attach+0x24/0x30
> [ 30.144059] bus_add_driver+0xe4/0x208
> [ 30.147910] driver_register+0x60/0x128
> [ 30.151849] __pci_register_driver+0x44/0x50
> [ 30.156238] ath11k_pci_init+0x2c/0x6c [ath11k_pci]
> [ 30.161242] do_one_initcall+0x70/0x1b8
> [ 30.165182] do_init_module+0x5c/0x1f0
> [ 30.169034] load_module+0x19f0/0x1abc
> [ 30.172884] init_module_from_file+0x88/0xc8
> [ 30.177273] __arm64_sys_finit_module+0x1c4/0x2b0
> [ 30.182102] invoke_syscall+0x44/0x100
> [ 30.185953] el0_svc_common.constprop.0+0xc0/0xe0
> [ 30.190783] do_el0_svc+0x1c/0x28
> [ 30.194196] el0_svc+0x34/0xdc
> [ 30.197335] el0t_64_sync_handler+0xc0/0xc4
> [ 30.201635] el0t_64_sync+0x190/0x194
> [ 30.205399] ---[ end trace 0000000000000000 ]---
> [ 30.432731] ath11k_pci 0000:01:00.0: probe with driver ath11k_pci failed with error -110
>
> The warning is due to not clearing the affinity hint before freeing the
> IRQ.
>
> So to fix this, let's set the IRQ affinity hint after requesting all the
> shared IRQ. This will make sure that the affinity hint gets cleared in the
> error path before freeing the IRQ.
>
> Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-05266-QCAHSTSWPLZ_V2_TO_X86-1
>
> Cc: Baochen Qiang <quic_bqiang@quicinc.com>
> Fixes: e94b07493da3 ("ath11k: Set IRQ affinity to CPU0 in case of one MSI vector")
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

Actual patch LGTM but I want Baochen to give a Reviewed-by before I ack