Re: [PATCH v10] Add device-specific reset for Qualcomm devices
Jose Ignacio Tornos Martinez <[email protected]> Thu, 25 Jun 2026 12:35:14 +0200
| Newsgroups | dev.linux.lists.mhi,org.infradead.lists.ath11k,org.infradead.lists.ath12k,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
Hello Baochen and Mani, > QUALCOMM_WIFI_PCIE_SOC_GLOBAL_RESET is beyond the first 4K bar area hence requires MHI > wakeup before accessing, see [1]. the wakeup callback for WCN6855 is > ath11k_pci_bus_wake_up() which calls mhi_device_get_sync(). Not sure how this can be done > here. Maybe Mani can provide some hints? I've analyzed the driver code and see that ath11k_pci_power_down() calls ath11k_pci_force_wake() before sw_reset(). I can add the same force_wake sequence to the WiFi quirk before accessing the reset register: /* Force wake before accessing registers beyond 4K boundary */ iowrite32(1, bar + QUALCOMM_WIFI_PCIE_SOC_WAKE_PCIE_LOCAL_REG); // 0x3004 ioread32(bar + QUALCOMM_WIFI_PCIE_SOC_WAKE_PCIE_LOCAL_REG); // Flush msleep(5); With this addition, both WCN6855 (ath11k) and WCN7850 (ath12k) show successful reset and shutdown cycles in VFIO scenarios, same stability as without it. Do you consider this addition necessary, or is the current v10 implementation sufficient given that testing shows direct register access works without wakeup in VFIO scenarios (where no driver is loaded)? If you recommend including it, I can send v11 with the force_wake sequence added. Thanks Best regards Jose Ignacio