Re: [PATCH v6] bus: mhi: host: don't free bhie tables during suspend/hibernation

From: Jeff Hugo
Date: Fri May 16 2025 - 15:09:09 EST


On 5/16/2025 12:49 PM, Muhammad Usama Anjum wrote:
Fix dma_direct_alloc() failure at resume time during bhie_table
allocation because of memory pressure. There is a report where at
resume time, the memory from the dma doesn't get allocated and MHI
fails to re-initialize.

To fix it, don't free the memory at power down during suspend /
hibernation. Instead, use the same allocated memory again after every
resume / hibernation. This patch has been tested with resume and
hibernation both.

Optimize the rddm and fbc bhie allocations. The rddm is of constant
size for a given hardware. While the fbc_image size depends on the
firmware. If the firmware changes, we'll free and allocate new memory
for it. This patch is motivated from the ath12k [1] and ath11k [2]
patches. They don't free the memory and reuse the same memory if new
size is same. The firmware caching hasn't been implemented for the
drivers other than in the nouveau. (The changing of firmware isn't
tested/supported for wireless drivers. But let's follow the example
patches here.)

[1] https://lore.kernel.org/all/20240419034034.2842-1-quic_bqiang@xxxxxxxxxxx/
[2] https://lore.kernel.org/all/20220506141448.10340-1-quic_akolli@xxxxxxxxxxx/

Tested-on: WCN6855 WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
Tested-on: WCN7850 hw2.0 WLAN.HMT.1.1.c5-00284-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3

Acked-by: Jeff Johnson <jeff.johnson@xxxxxxxxxxxxxxxx>
Tested-by: Baochen Qiang <quic_bqiang@xxxxxxxxxxx>
Signed-off-by: Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx>

I think we are in a good spot now.

Reviewed-by: Jeff Hugo <jeff.hugo@xxxxxxxxxxxxxxxx>