drivers/bus/mhi/host/boot.c | 15 +++++++++++---- drivers/bus/mhi/host/init.c | 13 ++++++++++--- drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++---- include/linux/mhi.h | 7 +++++++ 4 files changed, 33 insertions(+), 11 deletions(-)
Fix dma_direct_alloc() failure at resume time during bhie_table
allocation. There is a crash report where at resume time, the memory
from the dma doesn't get allocated and MHI fails to re-initialize.
There may be fragmentation of some kind which fails the allocation
call.
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.
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.
Here are the crash logs:
[ 3029.338587] mhi mhi0: Requested to power ON
[ 3029.338621] mhi mhi0: Power on setup success
[ 3029.668654] kworker/u33:8: page allocation failure: order:7, mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0
[ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted 6.11.11-valve10-1-neptune-611-gb69e902b4338 #1ed779c892334112fb968aaa3facf9686b5ff0bd7
[ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024
[ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi]
[ 3029.668717] Call Trace:
[ 3029.668722] <TASK>
[ 3029.668728] dump_stack_lvl+0x4e/0x70
[ 3029.668738] warn_alloc+0x164/0x190
[ 3029.668747] ? srso_return_thunk+0x5/0x5f
[ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360
[ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70
[ 3029.668774] __alloc_pages_noprof+0x321/0x350
[ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290
[ 3029.668790] dma_direct_alloc+0x70/0x270
[ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
[ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
[ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
[ 3029.668844] ? srso_return_thunk+0x5/0x5f
[ 3029.668853] process_one_work+0x17e/0x330
[ 3029.668861] worker_thread+0x2ce/0x3f0
[ 3029.668868] ? __pfx_worker_thread+0x10/0x10
[ 3029.668873] kthread+0xd2/0x100
[ 3029.668879] ? __pfx_kthread+0x10/0x10
[ 3029.668885] ret_from_fork+0x34/0x50
[ 3029.668892] ? __pfx_kthread+0x10/0x10
[ 3029.668898] ret_from_fork_asm+0x1a/0x30
[ 3029.668910] </TASK>
Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
Changes sice v1:
- Don't free bhie tables during suspend/hibernation only
- Handle fbc_image changed size correctly
- Remove fbc_image getting set to NULL in *free_bhie_table()
---
drivers/bus/mhi/host/boot.c | 15 +++++++++++----
drivers/bus/mhi/host/init.c | 13 ++++++++++---
drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++----
include/linux/mhi.h | 7 +++++++
4 files changed, 33 insertions(+), 11 deletions(-)
diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c
index 9dcc7184817d5..0df26100c8f9c 100644
--- a/drivers/bus/mhi/host/boot.c
+++ b/drivers/bus/mhi/host/boot.c
@@ -487,10 +487,17 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
* device transitioning into MHI READY state
*/
if (mhi_cntrl->fbc_download) {
- ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz);
- if (ret) {
- release_firmware(firmware);
- goto error_fw_load;
+ if (mhi_cntrl->fbc_image && fw_sz != mhi_cntrl->prev_fw_sz) {
+ mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image);
+ mhi_cntrl->fbc_image = NULL;
+ }
+ if (!mhi_cntrl->fbc_image) {
+ ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz);
+ if (ret) {
+ release_firmware(firmware);
+ goto error_fw_load;
+ }
+ mhi_cntrl->prev_fw_sz = fw_sz;
}
/* Load the firmware into BHIE vec table */
diff --git a/drivers/bus/mhi/host/init.c b/drivers/bus/mhi/host/init.c
index a9b1f8beee7bc..09b946b86ac46 100644
--- a/drivers/bus/mhi/host/init.c
+++ b/drivers/bus/mhi/host/init.c
@@ -1173,8 +1173,9 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl)
/*
* Allocate RDDM table for debugging purpose if specified
*/
- mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
- mhi_cntrl->rddm_size);
+ if (!mhi_cntrl->rddm_image)
+ mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
+ mhi_cntrl->rddm_size);
if (mhi_cntrl->rddm_image) {
ret = mhi_rddm_prepare(mhi_cntrl,
mhi_cntrl->rddm_image);
@@ -1212,12 +1213,18 @@ void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl)
mhi_cntrl->rddm_image = NULL;
}
+ mhi_partial_unprepare_after_power_down(mhi_cntrl);
+}
+EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
+
+void mhi_partial_unprepare_after_power_down(struct mhi_controller *mhi_cntrl)
+{
mhi_cntrl->bhi = NULL;
mhi_cntrl->bhie = NULL;
mhi_deinit_dev_ctxt(mhi_cntrl);
}
-EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
+EXPORT_SYMBOL_GPL(mhi_partial_unprepare_after_power_down);
static void mhi_release_device(struct device *dev)
{
diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/wireless/ath/ath11k/mhi.c
index acd76e9392d31..f77cec79b5b80 100644
--- a/drivers/net/wireless/ath/ath11k/mhi.c
+++ b/drivers/net/wireless/ath/ath11k/mhi.c
@@ -460,12 +460,13 @@ void ath11k_mhi_stop(struct ath11k_pci *ab_pci, bool is_suspend)
* workaround, otherwise ath11k_core_resume() will timeout
* during resume.
*/
- if (is_suspend)
+ if (is_suspend) {
mhi_power_down_keep_dev(ab_pci->mhi_ctrl, true);
- else
+ mhi_partial_unprepare_after_power_down(ab_pci->mhi_ctrl);
+ } else {
mhi_power_down(ab_pci->mhi_ctrl, true);
-
- mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
+ mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
+ }
}
int ath11k_mhi_suspend(struct ath11k_pci *ab_pci)
diff --git a/include/linux/mhi.h b/include/linux/mhi.h
index 059dc94d20bb6..65a47c712b3a0 100644
--- a/include/linux/mhi.h
+++ b/include/linux/mhi.h
@@ -382,6 +382,7 @@ struct mhi_controller {
const char *fw_image;
const u8 *fw_data;
size_t fw_sz;
+ size_t prev_fw_sz;
const char *edl_image;
size_t rddm_size;
size_t sbl_size;
@@ -662,6 +663,12 @@ void mhi_power_down_keep_dev(struct mhi_controller *mhi_cntrl, bool graceful);
*/
void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl);
+/**
+ * mhi_partial_unprepare_after_power_down - Free any allocated memory after power down partially
+ * @mhi_cntrl: MHI controller
+ */
+void mhi_partial_unprepare_after_power_down(struct mhi_controller *mhi_cntrl);
+
/**
* mhi_pm_suspend - Move MHI into a suspended state
* @mhi_cntrl: MHI controller
--
2.43.0
On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: > Fix dma_direct_alloc() failure at resume time during bhie_table > allocation. There is a crash report where at resume time, the memory > from the dma doesn't get allocated and MHI fails to re-initialize. > There may be fragmentation of some kind which fails the allocation > call. > If dma_direct_alloc() fails, then it is a platform limitation/issue. We cannot workaround that in the device drivers. What is the guarantee that other drivers will also continue to work? Will you go ahead and patch all of them which release memory during suspend? Please investigate why the allocation fails. Even this is not a device issue, so we cannot add quirks :/ > 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. > > 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. > > Here are the crash logs: > > [ 3029.338587] mhi mhi0: Requested to power ON > [ 3029.338621] mhi mhi0: Power on setup success > [ 3029.668654] kworker/u33:8: page allocation failure: order:7, mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0 > [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted 6.11.11-valve10-1-neptune-611-gb69e902b4338 #1ed779c892334112fb968aaa3facf9686b5ff0bd7 > [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024 Did you intend to leak this information? If not, please remove it from stacktrace. - Mani -- மணிவண்ணன் சதாசிவம்
On 4/25/25 12:04 PM, Manivannan Sadhasivam wrote: > On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: >> Fix dma_direct_alloc() failure at resume time during bhie_table >> allocation. There is a crash report where at resume time, the memory >> from the dma doesn't get allocated and MHI fails to re-initialize. >> There may be fragmentation of some kind which fails the allocation >> call. >> > > If dma_direct_alloc() fails, then it is a platform limitation/issue. We cannot > workaround that in the device drivers. What is the guarantee that other drivers > will also continue to work? Will you go ahead and patch all of them which > release memory during suspend? > > Please investigate why the allocation fails. Even this is not a device issue, so > we cannot add quirks :/ This isn't a platform specific quirk. We are only hitting it because there is high memory pressure during suspend/resume. This dma allocation failure can happen with memory pressure on any device. The purpose of this patch is just to make driver more robust to memory pressure during resume. I'm not sure about MHI. But other drivers already have such patches as dma_direct_alloc() is susceptible to failures when memory pressure is high. This patch was motivated from ath12k [1] and ath11k [2]. [1] https://lore.kernel.org/all/20240419034034.2842-1-quic_bqiang@quicinc.com/ [2] https://lore.kernel.org/all/20220506141448.10340-1-quic_akolli@quicinc.com/ What do you think can be the way forward for this patch? > >> 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. >> >> 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. >> >> Here are the crash logs: >> >> [ 3029.338587] mhi mhi0: Requested to power ON >> [ 3029.338621] mhi mhi0: Power on setup success >> [ 3029.668654] kworker/u33:8: page allocation failure: order:7, mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0 >> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted 6.11.11-valve10-1-neptune-611-gb69e902b4338 #1ed779c892334112fb968aaa3facf9686b5ff0bd7 >> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024 > > Did you intend to leak this information? If not, please remove it from > stacktrace. The device isn't private. Its fine. > > - Mani > -- Regards, Usama
On Fri, Apr 25, 2025 at 12:14:39PM +0500, Muhammad Usama Anjum wrote: > On 4/25/25 12:04 PM, Manivannan Sadhasivam wrote: > > On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: > >> Fix dma_direct_alloc() failure at resume time during bhie_table > >> allocation. There is a crash report where at resume time, the memory > >> from the dma doesn't get allocated and MHI fails to re-initialize. > >> There may be fragmentation of some kind which fails the allocation > >> call. > >> > > > > If dma_direct_alloc() fails, then it is a platform limitation/issue. We cannot > > workaround that in the device drivers. What is the guarantee that other drivers > > will also continue to work? Will you go ahead and patch all of them which > > release memory during suspend? > > > > Please investigate why the allocation fails. Even this is not a device issue, so > > we cannot add quirks :/ > This isn't a platform specific quirk. We are only hitting it because > there is high memory pressure during suspend/resume. This dma allocation > failure can happen with memory pressure on any device. > Yes. > The purpose of this patch is just to make driver more robust to memory > pressure during resume. > > I'm not sure about MHI. But other drivers already have such patches as > dma_direct_alloc() is susceptible to failures when memory pressure is > high. This patch was motivated from ath12k [1] and ath11k [2]. > Even if we patch the MHI driver, the issue is going to trip some other driver. How does the DMA memory goes low during resume? So some other driver is consuming more than it did during probe()? > [1] > https://lore.kernel.org/all/20240419034034.2842-1-quic_bqiang@quicinc.com/ > [2] > https://lore.kernel.org/all/20220506141448.10340-1-quic_akolli@quicinc.com/ > > What do you think can be the way forward for this patch? > Let's try first to analyze why the memory pressure happens during suspend. As I can see, even if we fix the MHI driver, you are likely to hit this issue somewhere else. - Mani > > [...] > > Did you intend to leak this information? If not, please remove it from > > stacktrace. > The device isn't private. Its fine. > Okay. - Mani -- மணிவண்ணன் சதாசிவம்
On 4/25/25 12:32 PM, Manivannan Sadhasivam wrote: > On Fri, Apr 25, 2025 at 12:14:39PM +0500, Muhammad Usama Anjum wrote: >> On 4/25/25 12:04 PM, Manivannan Sadhasivam wrote: >>> On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: >>>> Fix dma_direct_alloc() failure at resume time during bhie_table >>>> allocation. There is a crash report where at resume time, the memory >>>> from the dma doesn't get allocated and MHI fails to re-initialize. >>>> There may be fragmentation of some kind which fails the allocation >>>> call. >>>> >>> >>> If dma_direct_alloc() fails, then it is a platform limitation/issue. We cannot >>> workaround that in the device drivers. What is the guarantee that other drivers >>> will also continue to work? Will you go ahead and patch all of them which >>> release memory during suspend? >>> >>> Please investigate why the allocation fails. Even this is not a device issue, so >>> we cannot add quirks :/ >> This isn't a platform specific quirk. We are only hitting it because >> there is high memory pressure during suspend/resume. This dma allocation >> failure can happen with memory pressure on any device. >> > > Yes. Thanks for understanding. > >> The purpose of this patch is just to make driver more robust to memory >> pressure during resume. >> >> I'm not sure about MHI. But other drivers already have such patches as >> dma_direct_alloc() is susceptible to failures when memory pressure is >> high. This patch was motivated from ath12k [1] and ath11k [2]. >> > > Even if we patch the MHI driver, the issue is going to trip some other driver. > How does the DMA memory goes low during resume? So some other driver is > consuming more than it did during probe()? Think it like this. The first probe happens just after boot. Most of the RAM was empty. Then let's say user launches applications which not only consume entire RAM but also the Swap. The DMA memory area is the first ~4GB on x86_64 (if I'm not mistaken). Now at resume time when we want to allocate memory from dma, it may not be available entirely or because of fragmentation we cannot allocate that much contiguous memory. In our testing and real world cases, right now only wifi driver is misbehaving. Wifi is also very important. So we are hoping to make wifi driver robust. > >> [1] >> https://lore.kernel.org/all/20240419034034.2842-1-quic_bqiang@quicinc.com/ >> [2] >> https://lore.kernel.org/all/20220506141448.10340-1-quic_akolli@quicinc.com/ >> >> What do you think can be the way forward for this patch? >> > > Let's try first to analyze why the memory pressure happens during suspend. As I > can see, even if we fix the MHI driver, you are likely to hit this issue > somewhere else.> > - Mani > >>> > > [...] > >>> Did you intend to leak this information? If not, please remove it from >>> stacktrace. >> The device isn't private. Its fine. >> > > Okay. > > - Mani > -- Regards, Usama
On Fri, Apr 25, 2025 at 12:42:38PM +0500, Muhammad Usama Anjum wrote: > On 4/25/25 12:32 PM, Manivannan Sadhasivam wrote: > > On Fri, Apr 25, 2025 at 12:14:39PM +0500, Muhammad Usama Anjum wrote: > >> On 4/25/25 12:04 PM, Manivannan Sadhasivam wrote: > >>> On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: > >>>> Fix dma_direct_alloc() failure at resume time during bhie_table > >>>> allocation. There is a crash report where at resume time, the memory > >>>> from the dma doesn't get allocated and MHI fails to re-initialize. > >>>> There may be fragmentation of some kind which fails the allocation > >>>> call. > >>>> > >>> > >>> If dma_direct_alloc() fails, then it is a platform limitation/issue. We cannot > >>> workaround that in the device drivers. What is the guarantee that other drivers > >>> will also continue to work? Will you go ahead and patch all of them which > >>> release memory during suspend? > >>> > >>> Please investigate why the allocation fails. Even this is not a device issue, so > >>> we cannot add quirks :/ > >> This isn't a platform specific quirk. We are only hitting it because > >> there is high memory pressure during suspend/resume. This dma allocation > >> failure can happen with memory pressure on any device. > >> > > > > Yes. > Thanks for understanding. > > > > >> The purpose of this patch is just to make driver more robust to memory > >> pressure during resume. > >> > >> I'm not sure about MHI. But other drivers already have such patches as > >> dma_direct_alloc() is susceptible to failures when memory pressure is > >> high. This patch was motivated from ath12k [1] and ath11k [2]. > >> > > > > Even if we patch the MHI driver, the issue is going to trip some other driver. > > How does the DMA memory goes low during resume? So some other driver is > > consuming more than it did during probe()? > Think it like this. The first probe happens just after boot. Most of the > RAM was empty. Then let's say user launches applications which not only > consume entire RAM but also the Swap. The DMA memory area is the first > ~4GB on x86_64 (if I'm not mistaken). Now at resume time when we want to > allocate memory from dma, it may not be available entirely or because of > fragmentation we cannot allocate that much contiguous memory. > Looks like you have a workload that consumes the limited DMA coherent memory. Most likely the GPU applications I think. > In our testing and real world cases, right now only wifi driver is > misbehaving. Wifi is also very important. So we are hoping to make wifi > driver robust. > Sounds fair. If you want to move forward, please modify the exisiting mhi_power_down_keep_dev() to include this partial unprepare as well: mhi_power_down_unprepare_keep_dev() Since both APIs are anyway going to be used together, I don't see a need to introduce yet another API. - Mani > > > >> [1] > >> https://lore.kernel.org/all/20240419034034.2842-1-quic_bqiang@quicinc.com/ > >> [2] > >> https://lore.kernel.org/all/20220506141448.10340-1-quic_akolli@quicinc.com/ > >> > >> What do you think can be the way forward for this patch? > >> > > > > Let's try first to analyze why the memory pressure happens during suspend. As I > > can see, even if we fix the MHI driver, you are likely to hit this issue > > somewhere else.> > > - Mani > > > >>> > > > > [...] > > > >>> Did you intend to leak this information? If not, please remove it from > >>> stacktrace. > >> The device isn't private. Its fine. > >> > > > > Okay. > > > > - Mani > > > > > -- > Regards, > Usama -- மணிவண்ணன் சதாசிவம்
On 4/25/25 1:59 PM, Manivannan Sadhasivam wrote: > On Fri, Apr 25, 2025 at 12:42:38PM +0500, Muhammad Usama Anjum wrote: >> On 4/25/25 12:32 PM, Manivannan Sadhasivam wrote: >>> On Fri, Apr 25, 2025 at 12:14:39PM +0500, Muhammad Usama Anjum wrote: >>>> On 4/25/25 12:04 PM, Manivannan Sadhasivam wrote: >>>>> On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: >>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table >>>>>> allocation. There is a crash report where at resume time, the memory >>>>>> from the dma doesn't get allocated and MHI fails to re-initialize. >>>>>> There may be fragmentation of some kind which fails the allocation >>>>>> call. >>>>>> >>>>> >>>>> If dma_direct_alloc() fails, then it is a platform limitation/issue. We cannot >>>>> workaround that in the device drivers. What is the guarantee that other drivers >>>>> will also continue to work? Will you go ahead and patch all of them which >>>>> release memory during suspend? >>>>> >>>>> Please investigate why the allocation fails. Even this is not a device issue, so >>>>> we cannot add quirks :/ >>>> This isn't a platform specific quirk. We are only hitting it because >>>> there is high memory pressure during suspend/resume. This dma allocation >>>> failure can happen with memory pressure on any device. >>>> >>> >>> Yes. >> Thanks for understanding. >> >>> >>>> The purpose of this patch is just to make driver more robust to memory >>>> pressure during resume. >>>> >>>> I'm not sure about MHI. But other drivers already have such patches as >>>> dma_direct_alloc() is susceptible to failures when memory pressure is >>>> high. This patch was motivated from ath12k [1] and ath11k [2]. >>>> >>> >>> Even if we patch the MHI driver, the issue is going to trip some other driver. >>> How does the DMA memory goes low during resume? So some other driver is >>> consuming more than it did during probe()? >> Think it like this. The first probe happens just after boot. Most of the >> RAM was empty. Then let's say user launches applications which not only >> consume entire RAM but also the Swap. The DMA memory area is the first >> ~4GB on x86_64 (if I'm not mistaken). Now at resume time when we want to >> allocate memory from dma, it may not be available entirely or because of >> fragmentation we cannot allocate that much contiguous memory. >> > > Looks like you have a workload that consumes the limited DMA coherent memory. > Most likely the GPU applications I think. > >> In our testing and real world cases, right now only wifi driver is >> misbehaving. Wifi is also very important. So we are hoping to make wifi >> driver robust. >> > > Sounds fair. If you want to move forward, please modify the exisiting > mhi_power_down_keep_dev() to include this partial unprepare as well: > > mhi_power_down_unprepare_keep_dev() > > Since both APIs are anyway going to be used together, I don't see a need to > introduce yet another API. I've looked at usages of mhi_power_down_keep_dev(). Its getting used by ath12k and ath11k both. We would have to look at ath12k as well before we can change mhi_power_down_keep_dev(). Unfortunately, I don't have device using ath12k at hand. Should we keep this new API or what should we do? > > - Mani > >>> >>>> [1] >>>> https://lore.kernel.org/all/20240419034034.2842-1-quic_bqiang@quicinc.com/ >>>> [2] >>>> https://lore.kernel.org/all/20220506141448.10340-1-quic_akolli@quicinc.com/ >>>> >>>> What do you think can be the way forward for this patch? >>>> >>> >>> Let's try first to analyze why the memory pressure happens during suspend. As I >>> can see, even if we fix the MHI driver, you are likely to hit this issue >>> somewhere else.> >>> - Mani >>> >>>>> >>> >>> [...] >>> >>>>> Did you intend to leak this information? If not, please remove it from >>>>> stacktrace. >>>> The device isn't private. Its fine. >>>> >>> >>> Okay. >>> >>> - Mani >>> >> >> >> -- >> Regards, >> Usama > -- Regards, Usama
On Fri, Apr 25, 2025 at 04:41:43PM +0500, Muhammad Usama Anjum wrote: > On 4/25/25 1:59 PM, Manivannan Sadhasivam wrote: > > On Fri, Apr 25, 2025 at 12:42:38PM +0500, Muhammad Usama Anjum wrote: > >> On 4/25/25 12:32 PM, Manivannan Sadhasivam wrote: > >>> On Fri, Apr 25, 2025 at 12:14:39PM +0500, Muhammad Usama Anjum wrote: > >>>> On 4/25/25 12:04 PM, Manivannan Sadhasivam wrote: > >>>>> On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: > >>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table > >>>>>> allocation. There is a crash report where at resume time, the memory > >>>>>> from the dma doesn't get allocated and MHI fails to re-initialize. > >>>>>> There may be fragmentation of some kind which fails the allocation > >>>>>> call. > >>>>>> > >>>>> > >>>>> If dma_direct_alloc() fails, then it is a platform limitation/issue. We cannot > >>>>> workaround that in the device drivers. What is the guarantee that other drivers > >>>>> will also continue to work? Will you go ahead and patch all of them which > >>>>> release memory during suspend? > >>>>> > >>>>> Please investigate why the allocation fails. Even this is not a device issue, so > >>>>> we cannot add quirks :/ > >>>> This isn't a platform specific quirk. We are only hitting it because > >>>> there is high memory pressure during suspend/resume. This dma allocation > >>>> failure can happen with memory pressure on any device. > >>>> > >>> > >>> Yes. > >> Thanks for understanding. > >> > >>> > >>>> The purpose of this patch is just to make driver more robust to memory > >>>> pressure during resume. > >>>> > >>>> I'm not sure about MHI. But other drivers already have such patches as > >>>> dma_direct_alloc() is susceptible to failures when memory pressure is > >>>> high. This patch was motivated from ath12k [1] and ath11k [2]. > >>>> > >>> > >>> Even if we patch the MHI driver, the issue is going to trip some other driver. > >>> How does the DMA memory goes low during resume? So some other driver is > >>> consuming more than it did during probe()? > >> Think it like this. The first probe happens just after boot. Most of the > >> RAM was empty. Then let's say user launches applications which not only > >> consume entire RAM but also the Swap. The DMA memory area is the first > >> ~4GB on x86_64 (if I'm not mistaken). Now at resume time when we want to > >> allocate memory from dma, it may not be available entirely or because of > >> fragmentation we cannot allocate that much contiguous memory. > >> > > > > Looks like you have a workload that consumes the limited DMA coherent memory. > > Most likely the GPU applications I think. > > > >> In our testing and real world cases, right now only wifi driver is > >> misbehaving. Wifi is also very important. So we are hoping to make wifi > >> driver robust. > >> > > > > Sounds fair. If you want to move forward, please modify the exisiting > > mhi_power_down_keep_dev() to include this partial unprepare as well: > > > > mhi_power_down_unprepare_keep_dev() > > > > Since both APIs are anyway going to be used together, I don't see a need to > > introduce yet another API. > I've looked at usages of mhi_power_down_keep_dev(). Its getting used by > ath12k and ath11k both. We would have to look at ath12k as well before > we can change mhi_power_down_keep_dev(). Unfortunately, I don't have > device using ath12k at hand. > ath12k conversion looks trivial. So please go ahead with this new API conversion for that driver as well. - Mani -- மணிவண்ணன் சதாசிவம்
On 4/10/2025 8:56 AM, Muhammad Usama Anjum wrote:
> Fix dma_direct_alloc() failure at resume time during bhie_table
> allocation. There is a crash report where at resume time, the memory
> from the dma doesn't get allocated and MHI fails to re-initialize.
> There may be fragmentation of some kind which fails the allocation
> call.
>
> 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.
>
> 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.
>
> Here are the crash logs:
>
> [ 3029.338587] mhi mhi0: Requested to power ON
> [ 3029.338621] mhi mhi0: Power on setup success
> [ 3029.668654] kworker/u33:8: page allocation failure: order:7, mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0
> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted 6.11.11-valve10-1-neptune-611-gb69e902b4338 #1ed779c892334112fb968aaa3facf9686b5ff0bd7
> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024
> [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi]
> [ 3029.668717] Call Trace:
> [ 3029.668722] <TASK>
> [ 3029.668728] dump_stack_lvl+0x4e/0x70
> [ 3029.668738] warn_alloc+0x164/0x190
> [ 3029.668747] ? srso_return_thunk+0x5/0x5f
> [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360
> [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70
> [ 3029.668774] __alloc_pages_noprof+0x321/0x350
> [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290
> [ 3029.668790] dma_direct_alloc+0x70/0x270
> [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
> [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
> [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
> [ 3029.668844] ? srso_return_thunk+0x5/0x5f
> [ 3029.668853] process_one_work+0x17e/0x330
> [ 3029.668861] worker_thread+0x2ce/0x3f0
> [ 3029.668868] ? __pfx_worker_thread+0x10/0x10
> [ 3029.668873] kthread+0xd2/0x100
> [ 3029.668879] ? __pfx_kthread+0x10/0x10
> [ 3029.668885] ret_from_fork+0x34/0x50
> [ 3029.668892] ? __pfx_kthread+0x10/0x10
> [ 3029.668898] ret_from_fork_asm+0x1a/0x30
> [ 3029.668910] </TASK>
>
> Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
>
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> Changes sice v1:
> - Don't free bhie tables during suspend/hibernation only
> - Handle fbc_image changed size correctly
> - Remove fbc_image getting set to NULL in *free_bhie_table()
> ---
> drivers/bus/mhi/host/boot.c | 15 +++++++++++----
> drivers/bus/mhi/host/init.c | 13 ++++++++++---
> drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++----
> include/linux/mhi.h | 7 +++++++
> 4 files changed, 33 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c
> index 9dcc7184817d5..0df26100c8f9c 100644
> --- a/drivers/bus/mhi/host/boot.c
> +++ b/drivers/bus/mhi/host/boot.c
> @@ -487,10 +487,17 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
> * device transitioning into MHI READY state
> */
> if (mhi_cntrl->fbc_download) {
> - ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz);
> - if (ret) {
> - release_firmware(firmware);
> - goto error_fw_load;
> + if (mhi_cntrl->fbc_image && fw_sz != mhi_cntrl->prev_fw_sz) {
> + mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image);
> + mhi_cntrl->fbc_image = NULL;
> + }
> + if (!mhi_cntrl->fbc_image) {
> + ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz);
> + if (ret) {
> + release_firmware(firmware);
> + goto error_fw_load;
> + }
> + mhi_cntrl->prev_fw_sz = fw_sz;
This seems confusing. Why do we care about the previous fw size when we
care about the allocated bhie table size? Also, if the fw size is
smaller than the allocated table size it looks like we'll do a
free/alloc, when it seems like we could jsut use the memory we already have.
> }
>
> /* Load the firmware into BHIE vec table */
> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
> index 059dc94d20bb6..65a47c712b3a0 100644
> --- a/include/linux/mhi.h
> +++ b/include/linux/mhi.h
> @@ -382,6 +382,7 @@ struct mhi_controller {
> const char *fw_image;
> const u8 *fw_data;
> size_t fw_sz;
> + size_t prev_fw_sz;
No documentation?
> const char *edl_image;
> size_t rddm_size;
> size_t sbl_size;
> @@ -662,6 +663,12 @@ void mhi_power_down_keep_dev(struct mhi_controller *mhi_cntrl, bool graceful);
> */
> void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl);
>
> +/**
> + * mhi_partial_unprepare_after_power_down - Free any allocated memory after power down partially
This looks like it exceeds 80 char.
Also what is a "power down partially"?
Hi Jeff,
Thank you for reviewing.
On 4/11/25 9:10 PM, Jeff Hugo wrote:
> On 4/10/2025 8:56 AM, Muhammad Usama Anjum wrote:
>> Fix dma_direct_alloc() failure at resume time during bhie_table
>> allocation. There is a crash report where at resume time, the memory
>> from the dma doesn't get allocated and MHI fails to re-initialize.
>> There may be fragmentation of some kind which fails the allocation
>> call.
>>
>> 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.
>>
>> 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.
>>
>> Here are the crash logs:
>>
>> [ 3029.338587] mhi mhi0: Requested to power ON
>> [ 3029.338621] mhi mhi0: Power on setup success
>> [ 3029.668654] kworker/u33:8: page allocation failure: order:7,
>> mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0
>> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted
>> 6.11.11-valve10-1-neptune-611-gb69e902b4338
>> #1ed779c892334112fb968aaa3facf9686b5ff0bd7
>> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112
>> 08/01/2024
>> [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi]
>> [ 3029.668717] Call Trace:
>> [ 3029.668722] <TASK>
>> [ 3029.668728] dump_stack_lvl+0x4e/0x70
>> [ 3029.668738] warn_alloc+0x164/0x190
>> [ 3029.668747] ? srso_return_thunk+0x5/0x5f
>> [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360
>> [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70
>> [ 3029.668774] __alloc_pages_noprof+0x321/0x350
>> [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290
>> [ 3029.668790] dma_direct_alloc+0x70/0x270
>> [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi
>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>> [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi
>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>> [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi
>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>> [ 3029.668844] ? srso_return_thunk+0x5/0x5f
>> [ 3029.668853] process_one_work+0x17e/0x330
>> [ 3029.668861] worker_thread+0x2ce/0x3f0
>> [ 3029.668868] ? __pfx_worker_thread+0x10/0x10
>> [ 3029.668873] kthread+0xd2/0x100
>> [ 3029.668879] ? __pfx_kthread+0x10/0x10
>> [ 3029.668885] ret_from_fork+0x34/0x50
>> [ 3029.668892] ? __pfx_kthread+0x10/0x10
>> [ 3029.668898] ret_from_fork_asm+0x1a/0x30
>> [ 3029.668910] </TASK>
>>
>> Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-
>> QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
>>
>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
>> ---
>> Changes sice v1:
>> - Don't free bhie tables during suspend/hibernation only
>> - Handle fbc_image changed size correctly
>> - Remove fbc_image getting set to NULL in *free_bhie_table()
>> ---
>> drivers/bus/mhi/host/boot.c | 15 +++++++++++----
>> drivers/bus/mhi/host/init.c | 13 ++++++++++---
>> drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++----
>> include/linux/mhi.h | 7 +++++++
>> 4 files changed, 33 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c
>> index 9dcc7184817d5..0df26100c8f9c 100644
>> --- a/drivers/bus/mhi/host/boot.c
>> +++ b/drivers/bus/mhi/host/boot.c
>> @@ -487,10 +487,17 @@ void mhi_fw_load_handler(struct mhi_controller
>> *mhi_cntrl)
>> * device transitioning into MHI READY state
>> */
>> if (mhi_cntrl->fbc_download) {
>> - ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image,
>> fw_sz);
>> - if (ret) {
>> - release_firmware(firmware);
>> - goto error_fw_load;
>> + if (mhi_cntrl->fbc_image && fw_sz != mhi_cntrl->prev_fw_sz) {
>> + mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image);
>> + mhi_cntrl->fbc_image = NULL;
>> + }
>> + if (!mhi_cntrl->fbc_image) {
>> + ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl-
>> >fbc_image, fw_sz);
>> + if (ret) {
>> + release_firmware(firmware);
>> + goto error_fw_load;
>> + }
>> + mhi_cntrl->prev_fw_sz = fw_sz;
>
> This seems confusing. Why do we care about the previous fw size when we
> care about the allocated bhie table size?
The table size depends on seg_size and alloc_size. The seg_size remains
same. While alloc_size would change if firmware size changes. So I'm
checking just firmware size here.
> Also, if the fw size is
> smaller than the allocated table size it looks like we'll do a free/
> alloc, when it seems like we could jsut use the memory we already have.
This can be done. I'll do it if we can find out if the firmware can
change at resume time or not.
>
>> }
>> /* Load the firmware into BHIE vec table */
>> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
>> index 059dc94d20bb6..65a47c712b3a0 100644
>> --- a/include/linux/mhi.h
>> +++ b/include/linux/mhi.h
>> @@ -382,6 +382,7 @@ struct mhi_controller {
>> const char *fw_image;
>> const u8 *fw_data;
>> size_t fw_sz;
>> + size_t prev_fw_sz;
>
> No documentation?
Sorry, I'll add:
* @prev_fw_sz: Previous firmware image data size, used when
fbc_download is true
>
>> const char *edl_image;
>> size_t rddm_size;
>> size_t sbl_size;
>> @@ -662,6 +663,12 @@ void mhi_power_down_keep_dev(struct
>> mhi_controller *mhi_cntrl, bool graceful);
>> */
>> void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl);
>> +/**
>> + * mhi_partial_unprepare_after_power_down - Free any allocated memory
>> after power down partially
>
> This looks like it exceeds 80 char.
> Also what is a "power down partially"?
Fixing it:
* mhi_partial_unprepare_after_power_down - Free any allocated memory after
* power down other than fbc_image
* and rddm_image
>
>
--
Regards,
Usama
On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote:
> Fix dma_direct_alloc() failure at resume time during bhie_table
> allocation. There is a crash report where at resume time, the memory
> from the dma doesn't get allocated and MHI fails to re-initialize.
> There may be fragmentation of some kind which fails the allocation
> call.
>
> 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.
>
> 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
If firmware image will change between suspend and resume ?
> allocate new memory for it.
>
> Here are the crash logs:
>
> [ 3029.338587] mhi mhi0: Requested to power ON
> [ 3029.338621] mhi mhi0: Power on setup success
> [ 3029.668654] kworker/u33:8: page allocation failure: order:7, mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0
> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted 6.11.11-valve10-1-neptune-611-gb69e902b4338 #1ed779c892334112fb968aaa3facf9686b5ff0bd7
> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024
> [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi]
> [ 3029.668717] Call Trace:
> [ 3029.668722] <TASK>
> [ 3029.668728] dump_stack_lvl+0x4e/0x70
> [ 3029.668738] warn_alloc+0x164/0x190
> [ 3029.668747] ? srso_return_thunk+0x5/0x5f
> [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360
> [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70
> [ 3029.668774] __alloc_pages_noprof+0x321/0x350
> [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290
> [ 3029.668790] dma_direct_alloc+0x70/0x270
> [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
> [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
> [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
> [ 3029.668844] ? srso_return_thunk+0x5/0x5f
> [ 3029.668853] process_one_work+0x17e/0x330
> [ 3029.668861] worker_thread+0x2ce/0x3f0
> [ 3029.668868] ? __pfx_worker_thread+0x10/0x10
> [ 3029.668873] kthread+0xd2/0x100
> [ 3029.668879] ? __pfx_kthread+0x10/0x10
> [ 3029.668885] ret_from_fork+0x34/0x50
> [ 3029.668892] ? __pfx_kthread+0x10/0x10
> [ 3029.668898] ret_from_fork_asm+0x1a/0x30
> [ 3029.668910] </TASK>
>
> Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
>
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> Changes sice v1:
> - Don't free bhie tables during suspend/hibernation only
> - Handle fbc_image changed size correctly
> - Remove fbc_image getting set to NULL in *free_bhie_table()
> ---
> drivers/bus/mhi/host/boot.c | 15 +++++++++++----
> drivers/bus/mhi/host/init.c | 13 ++++++++++---
> drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++----
> include/linux/mhi.h | 7 +++++++
> 4 files changed, 33 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c
> index 9dcc7184817d5..0df26100c8f9c 100644
> --- a/drivers/bus/mhi/host/boot.c
> +++ b/drivers/bus/mhi/host/boot.c
> @@ -487,10 +487,17 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
> * device transitioning into MHI READY state
> */
> if (mhi_cntrl->fbc_download) {
> - ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz);
> - if (ret) {
> - release_firmware(firmware);
> - goto error_fw_load;
> + if (mhi_cntrl->fbc_image && fw_sz != mhi_cntrl->prev_fw_sz) {
> + mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image);
> + mhi_cntrl->fbc_image = NULL;
> + }
> + if (!mhi_cntrl->fbc_image) {
> + ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz);
> + if (ret) {
> + release_firmware(firmware);
> + goto error_fw_load;
> + }
> + mhi_cntrl->prev_fw_sz = fw_sz;
> }
>
> /* Load the firmware into BHIE vec table */
> diff --git a/drivers/bus/mhi/host/init.c b/drivers/bus/mhi/host/init.c
> index a9b1f8beee7bc..09b946b86ac46 100644
> --- a/drivers/bus/mhi/host/init.c
> +++ b/drivers/bus/mhi/host/init.c
> @@ -1173,8 +1173,9 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl)
> /*
> * Allocate RDDM table for debugging purpose if specified
> */
> - mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
> - mhi_cntrl->rddm_size);
> + if (!mhi_cntrl->rddm_image)
> + mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
> + mhi_cntrl->rddm_size);
> if (mhi_cntrl->rddm_image) {
> ret = mhi_rddm_prepare(mhi_cntrl,
> mhi_cntrl->rddm_image);
> @@ -1212,12 +1213,18 @@ void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl)
> mhi_cntrl->rddm_image = NULL;
> }
>
> + mhi_partial_unprepare_after_power_down(mhi_cntrl);
> +}
> +EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
> +
> +void mhi_partial_unprepare_after_power_down(struct mhi_controller *mhi_cntrl)
> +{
> mhi_cntrl->bhi = NULL;
> mhi_cntrl->bhie = NULL;
>
> mhi_deinit_dev_ctxt(mhi_cntrl);
> }
> -EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
> +EXPORT_SYMBOL_GPL(mhi_partial_unprepare_after_power_down);
>
Instead of adding new API you can free memory from the unregister
controller also.
- Krishna Chaitanya.
> static void mhi_release_device(struct device *dev)
> {
> diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/wireless/ath/ath11k/mhi.c
> index acd76e9392d31..f77cec79b5b80 100644
> --- a/drivers/net/wireless/ath/ath11k/mhi.c
> +++ b/drivers/net/wireless/ath/ath11k/mhi.c
> @@ -460,12 +460,13 @@ void ath11k_mhi_stop(struct ath11k_pci *ab_pci, bool is_suspend)
> * workaround, otherwise ath11k_core_resume() will timeout
> * during resume.
> */
> - if (is_suspend)
> + if (is_suspend) {
> mhi_power_down_keep_dev(ab_pci->mhi_ctrl, true);
> - else
> + mhi_partial_unprepare_after_power_down(ab_pci->mhi_ctrl);
> + } else {
> mhi_power_down(ab_pci->mhi_ctrl, true);
> -
> - mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
> + mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
> + }
> }
>
> int ath11k_mhi_suspend(struct ath11k_pci *ab_pci)
> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
> index 059dc94d20bb6..65a47c712b3a0 100644
> --- a/include/linux/mhi.h
> +++ b/include/linux/mhi.h
> @@ -382,6 +382,7 @@ struct mhi_controller {
> const char *fw_image;
> const u8 *fw_data;
> size_t fw_sz;
> + size_t prev_fw_sz;
> const char *edl_image;
> size_t rddm_size;
> size_t sbl_size;
> @@ -662,6 +663,12 @@ void mhi_power_down_keep_dev(struct mhi_controller *mhi_cntrl, bool graceful);
> */
> void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl);
>
> +/**
> + * mhi_partial_unprepare_after_power_down - Free any allocated memory after power down partially
> + * @mhi_cntrl: MHI controller
> + */
> +void mhi_partial_unprepare_after_power_down(struct mhi_controller *mhi_cntrl);
> +
> /**
> * mhi_pm_suspend - Move MHI into a suspended state
> * @mhi_cntrl: MHI controller
On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote:
>
>
> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote:
>> Fix dma_direct_alloc() failure at resume time during bhie_table
>> allocation. There is a crash report where at resume time, the memory
>> from the dma doesn't get allocated and MHI fails to re-initialize.
>> There may be fragmentation of some kind which fails the allocation
>> call.
>>
>> 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.
>>
>> 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
> If firmware image will change between suspend and resume ?
Yes, correct.
>> allocate new memory for it.
>>
>> Here are the crash logs:
>>
>> [ 3029.338587] mhi mhi0: Requested to power ON
>> [ 3029.338621] mhi mhi0: Power on setup success
>> [ 3029.668654] kworker/u33:8: page allocation failure: order:7,
>> mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0
>> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted
>> 6.11.11-valve10-1-neptune-611-gb69e902b4338
>> #1ed779c892334112fb968aaa3facf9686b5ff0bd7
>> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112
>> 08/01/2024
>> [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi]
>> [ 3029.668717] Call Trace:
>> [ 3029.668722] <TASK>
>> [ 3029.668728] dump_stack_lvl+0x4e/0x70
>> [ 3029.668738] warn_alloc+0x164/0x190
>> [ 3029.668747] ? srso_return_thunk+0x5/0x5f
>> [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360
>> [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70
>> [ 3029.668774] __alloc_pages_noprof+0x321/0x350
>> [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290
>> [ 3029.668790] dma_direct_alloc+0x70/0x270
>> [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi
>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>> [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi
>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>> [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi
>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>> [ 3029.668844] ? srso_return_thunk+0x5/0x5f
>> [ 3029.668853] process_one_work+0x17e/0x330
>> [ 3029.668861] worker_thread+0x2ce/0x3f0
>> [ 3029.668868] ? __pfx_worker_thread+0x10/0x10
>> [ 3029.668873] kthread+0xd2/0x100
>> [ 3029.668879] ? __pfx_kthread+0x10/0x10
>> [ 3029.668885] ret_from_fork+0x34/0x50
>> [ 3029.668892] ? __pfx_kthread+0x10/0x10
>> [ 3029.668898] ret_from_fork_asm+0x1a/0x30
>> [ 3029.668910] </TASK>
>>
>> Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-
>> QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
>>
>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
>> ---
>> Changes sice v1:
>> - Don't free bhie tables during suspend/hibernation only
>> - Handle fbc_image changed size correctly
>> - Remove fbc_image getting set to NULL in *free_bhie_table()
>> ---
>> drivers/bus/mhi/host/boot.c | 15 +++++++++++----
>> drivers/bus/mhi/host/init.c | 13 ++++++++++---
>> drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++----
>> include/linux/mhi.h | 7 +++++++
>> 4 files changed, 33 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c
>> index 9dcc7184817d5..0df26100c8f9c 100644
>> --- a/drivers/bus/mhi/host/boot.c
>> +++ b/drivers/bus/mhi/host/boot.c
>> @@ -487,10 +487,17 @@ void mhi_fw_load_handler(struct mhi_controller
>> *mhi_cntrl)
>> * device transitioning into MHI READY state
>> */
>> if (mhi_cntrl->fbc_download) {
>> - ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image,
>> fw_sz);
>> - if (ret) {
>> - release_firmware(firmware);
>> - goto error_fw_load;
>> + if (mhi_cntrl->fbc_image && fw_sz != mhi_cntrl->prev_fw_sz) {
>> + mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image);
>> + mhi_cntrl->fbc_image = NULL;
>> + }
>> + if (!mhi_cntrl->fbc_image) {
>> + ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl-
>> >fbc_image, fw_sz);
>> + if (ret) {
>> + release_firmware(firmware);
>> + goto error_fw_load;
>> + }
>> + mhi_cntrl->prev_fw_sz = fw_sz;
>> }
>> /* Load the firmware into BHIE vec table */
>> diff --git a/drivers/bus/mhi/host/init.c b/drivers/bus/mhi/host/init.c
>> index a9b1f8beee7bc..09b946b86ac46 100644
>> --- a/drivers/bus/mhi/host/init.c
>> +++ b/drivers/bus/mhi/host/init.c
>> @@ -1173,8 +1173,9 @@ int mhi_prepare_for_power_up(struct
>> mhi_controller *mhi_cntrl)
>> /*
>> * Allocate RDDM table for debugging purpose if specified
>> */
>> - mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
>> - mhi_cntrl->rddm_size);
>> + if (!mhi_cntrl->rddm_image)
>> + mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
>> + mhi_cntrl->rddm_size);
>> if (mhi_cntrl->rddm_image) {
>> ret = mhi_rddm_prepare(mhi_cntrl,
>> mhi_cntrl->rddm_image);
>> @@ -1212,12 +1213,18 @@ void mhi_unprepare_after_power_down(struct
>> mhi_controller *mhi_cntrl)
>> mhi_cntrl->rddm_image = NULL;
>> }
>> + mhi_partial_unprepare_after_power_down(mhi_cntrl);
>> +}
>> +EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
>> +
>> +void mhi_partial_unprepare_after_power_down(struct mhi_controller
>> *mhi_cntrl)
>> +{
>> mhi_cntrl->bhi = NULL;
>> mhi_cntrl->bhie = NULL;
>> mhi_deinit_dev_ctxt(mhi_cntrl);
>> }
>> -EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
>> +EXPORT_SYMBOL_GPL(mhi_partial_unprepare_after_power_down);
>>
> Instead of adding new API you can free memory from the unregister
> controller also.
>
> - Krishna Chaitanya.
>> static void mhi_release_device(struct device *dev)
>> {
>> diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/
>> wireless/ath/ath11k/mhi.c
>> index acd76e9392d31..f77cec79b5b80 100644
>> --- a/drivers/net/wireless/ath/ath11k/mhi.c
>> +++ b/drivers/net/wireless/ath/ath11k/mhi.c
>> @@ -460,12 +460,13 @@ void ath11k_mhi_stop(struct ath11k_pci *ab_pci,
>> bool is_suspend)
>> * workaround, otherwise ath11k_core_resume() will timeout
>> * during resume.
>> */
>> - if (is_suspend)
>> + if (is_suspend) {
>> mhi_power_down_keep_dev(ab_pci->mhi_ctrl, true);
>> - else
>> + mhi_partial_unprepare_after_power_down(ab_pci->mhi_ctrl);
>> + } else {
>> mhi_power_down(ab_pci->mhi_ctrl, true);
>> -
>> - mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
>> + mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
>> + }
>> }
>> int ath11k_mhi_suspend(struct ath11k_pci *ab_pci)
>> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
>> index 059dc94d20bb6..65a47c712b3a0 100644
>> --- a/include/linux/mhi.h
>> +++ b/include/linux/mhi.h
>> @@ -382,6 +382,7 @@ struct mhi_controller {
>> const char *fw_image;
>> const u8 *fw_data;
>> size_t fw_sz;
>> + size_t prev_fw_sz;
>> const char *edl_image;
>> size_t rddm_size;
>> size_t sbl_size;
>> @@ -662,6 +663,12 @@ void mhi_power_down_keep_dev(struct
>> mhi_controller *mhi_cntrl, bool graceful);
>> */
>> void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl);
>> +/**
>> + * mhi_partial_unprepare_after_power_down - Free any allocated memory
>> after power down partially
>> + * @mhi_cntrl: MHI controller
>> + */
>> +void mhi_partial_unprepare_after_power_down(struct mhi_controller
>> *mhi_cntrl);
>> +
>> /**
>> * mhi_pm_suspend - Move MHI into a suspended state
>> * @mhi_cntrl: MHI controller
--
Regards,
Usama
On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote:
> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote:
>>
>>
>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote:
>>> Fix dma_direct_alloc() failure at resume time during bhie_table
>>> allocation. There is a crash report where at resume time, the memory
>>> from the dma doesn't get allocated and MHI fails to re-initialize.
>>> There may be fragmentation of some kind which fails the allocation
>>> call.
>>>
>>> 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.
>>>
>>> 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
>> If firmware image will change between suspend and resume ?
> Yes, correct.
>
why the firmware image size will change between suspend & resume?
who will update the firmware image after bootup?
It is not expected behaviour.
- Krishna chaitanya.
>>> allocate new memory for it.
>>>
>>> Here are the crash logs:
>>>
>>> [ 3029.338587] mhi mhi0: Requested to power ON
>>> [ 3029.338621] mhi mhi0: Power on setup success
>>> [ 3029.668654] kworker/u33:8: page allocation failure: order:7,
>>> mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0
>>> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted
>>> 6.11.11-valve10-1-neptune-611-gb69e902b4338
>>> #1ed779c892334112fb968aaa3facf9686b5ff0bd7
>>> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112
>>> 08/01/2024
>>> [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi]
>>> [ 3029.668717] Call Trace:
>>> [ 3029.668722] <TASK>
>>> [ 3029.668728] dump_stack_lvl+0x4e/0x70
>>> [ 3029.668738] warn_alloc+0x164/0x190
>>> [ 3029.668747] ? srso_return_thunk+0x5/0x5f
>>> [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360
>>> [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70
>>> [ 3029.668774] __alloc_pages_noprof+0x321/0x350
>>> [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290
>>> [ 3029.668790] dma_direct_alloc+0x70/0x270
>>> [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi
>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>> [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi
>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>> [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi
>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>> [ 3029.668844] ? srso_return_thunk+0x5/0x5f
>>> [ 3029.668853] process_one_work+0x17e/0x330
>>> [ 3029.668861] worker_thread+0x2ce/0x3f0
>>> [ 3029.668868] ? __pfx_worker_thread+0x10/0x10
>>> [ 3029.668873] kthread+0xd2/0x100
>>> [ 3029.668879] ? __pfx_kthread+0x10/0x10
>>> [ 3029.668885] ret_from_fork+0x34/0x50
>>> [ 3029.668892] ? __pfx_kthread+0x10/0x10
>>> [ 3029.668898] ret_from_fork_asm+0x1a/0x30
>>> [ 3029.668910] </TASK>
>>>
>>> Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-
>>> QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
>>>
>>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
>>> ---
>>> Changes sice v1:
>>> - Don't free bhie tables during suspend/hibernation only
>>> - Handle fbc_image changed size correctly
>>> - Remove fbc_image getting set to NULL in *free_bhie_table()
>>> ---
>>> drivers/bus/mhi/host/boot.c | 15 +++++++++++----
>>> drivers/bus/mhi/host/init.c | 13 ++++++++++---
>>> drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++----
>>> include/linux/mhi.h | 7 +++++++
>>> 4 files changed, 33 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c
>>> index 9dcc7184817d5..0df26100c8f9c 100644
>>> --- a/drivers/bus/mhi/host/boot.c
>>> +++ b/drivers/bus/mhi/host/boot.c
>>> @@ -487,10 +487,17 @@ void mhi_fw_load_handler(struct mhi_controller
>>> *mhi_cntrl)
>>> * device transitioning into MHI READY state
>>> */
>>> if (mhi_cntrl->fbc_download) {
>>> - ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image,
>>> fw_sz);
>>> - if (ret) {
>>> - release_firmware(firmware);
>>> - goto error_fw_load;
>>> + if (mhi_cntrl->fbc_image && fw_sz != mhi_cntrl->prev_fw_sz) {
>>> + mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image);
>>> + mhi_cntrl->fbc_image = NULL;
>>> + }
>>> + if (!mhi_cntrl->fbc_image) {
>>> + ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl-
>>>> fbc_image, fw_sz);
>>> + if (ret) {
>>> + release_firmware(firmware);
>>> + goto error_fw_load;
>>> + }
>>> + mhi_cntrl->prev_fw_sz = fw_sz;
>>> }
>>> /* Load the firmware into BHIE vec table */
>>> diff --git a/drivers/bus/mhi/host/init.c b/drivers/bus/mhi/host/init.c
>>> index a9b1f8beee7bc..09b946b86ac46 100644
>>> --- a/drivers/bus/mhi/host/init.c
>>> +++ b/drivers/bus/mhi/host/init.c
>>> @@ -1173,8 +1173,9 @@ int mhi_prepare_for_power_up(struct
>>> mhi_controller *mhi_cntrl)
>>> /*
>>> * Allocate RDDM table for debugging purpose if specified
>>> */
>>> - mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
>>> - mhi_cntrl->rddm_size);
>>> + if (!mhi_cntrl->rddm_image)
>>> + mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
>>> + mhi_cntrl->rddm_size);
>>> if (mhi_cntrl->rddm_image) {
>>> ret = mhi_rddm_prepare(mhi_cntrl,
>>> mhi_cntrl->rddm_image);
>>> @@ -1212,12 +1213,18 @@ void mhi_unprepare_after_power_down(struct
>>> mhi_controller *mhi_cntrl)
>>> mhi_cntrl->rddm_image = NULL;
>>> }
>>> + mhi_partial_unprepare_after_power_down(mhi_cntrl);
>>> +}
>>> +EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
>>> +
>>> +void mhi_partial_unprepare_after_power_down(struct mhi_controller
>>> *mhi_cntrl)
>>> +{
>>> mhi_cntrl->bhi = NULL;
>>> mhi_cntrl->bhie = NULL;
>>> mhi_deinit_dev_ctxt(mhi_cntrl);
>>> }
>>> -EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
>>> +EXPORT_SYMBOL_GPL(mhi_partial_unprepare_after_power_down);
>>>
>> Instead of adding new API you can free memory from the unregister
>> controller also.
>>
>> - Krishna Chaitanya.
>>> static void mhi_release_device(struct device *dev)
>>> {
>>> diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/
>>> wireless/ath/ath11k/mhi.c
>>> index acd76e9392d31..f77cec79b5b80 100644
>>> --- a/drivers/net/wireless/ath/ath11k/mhi.c
>>> +++ b/drivers/net/wireless/ath/ath11k/mhi.c
>>> @@ -460,12 +460,13 @@ void ath11k_mhi_stop(struct ath11k_pci *ab_pci,
>>> bool is_suspend)
>>> * workaround, otherwise ath11k_core_resume() will timeout
>>> * during resume.
>>> */
>>> - if (is_suspend)
>>> + if (is_suspend) {
>>> mhi_power_down_keep_dev(ab_pci->mhi_ctrl, true);
>>> - else
>>> + mhi_partial_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>> + } else {
>>> mhi_power_down(ab_pci->mhi_ctrl, true);
>>> -
>>> - mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>> + mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>> + }
>>> }
>>> int ath11k_mhi_suspend(struct ath11k_pci *ab_pci)
>>> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
>>> index 059dc94d20bb6..65a47c712b3a0 100644
>>> --- a/include/linux/mhi.h
>>> +++ b/include/linux/mhi.h
>>> @@ -382,6 +382,7 @@ struct mhi_controller {
>>> const char *fw_image;
>>> const u8 *fw_data;
>>> size_t fw_sz;
>>> + size_t prev_fw_sz;
>>> const char *edl_image;
>>> size_t rddm_size;
>>> size_t sbl_size;
>>> @@ -662,6 +663,12 @@ void mhi_power_down_keep_dev(struct
>>> mhi_controller *mhi_cntrl, bool graceful);
>>> */
>>> void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl);
>>> +/**
>>> + * mhi_partial_unprepare_after_power_down - Free any allocated memory
>>> after power down partially
>>> + * @mhi_cntrl: MHI controller
>>> + */
>>> +void mhi_partial_unprepare_after_power_down(struct mhi_controller
>>> *mhi_cntrl);
>>> +
>>> /**
>>> * mhi_pm_suspend - Move MHI into a suspended state
>>> * @mhi_cntrl: MHI controller
>
>
On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote:
>
>
> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote:
>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote:
>>>
>>>
>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote:
>>>> Fix dma_direct_alloc() failure at resume time during bhie_table
>>>> allocation. There is a crash report where at resume time, the memory
>>>> from the dma doesn't get allocated and MHI fails to re-initialize.
>>>> There may be fragmentation of some kind which fails the allocation
>>>> call.
>>>>
>>>> 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.
>>>>
>>>> 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
>>> If firmware image will change between suspend and resume ?
>> Yes, correct.
>>
> why the firmware image size will change between suspend & resume?
> who will update the firmware image after bootup?
> It is not expected behaviour.
I was trying to research if the firmware can change or not. I've not
found any documentation on it.
If the firmare is updated in filesystem before suspend/hibernate, would
the new firwmare be loaded the next time kernel resumes as the older
firmware is no where to be found?
What do you think about this?
>
> - Krishna chaitanya.
>>>> allocate new memory for it.
>>>>
>>>> Here are the crash logs:
>>>>
>>>> [ 3029.338587] mhi mhi0: Requested to power ON
>>>> [ 3029.338621] mhi mhi0: Power on setup success
>>>> [ 3029.668654] kworker/u33:8: page allocation failure: order:7,
>>>> mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0
>>>> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted
>>>> 6.11.11-valve10-1-neptune-611-gb69e902b4338
>>>> #1ed779c892334112fb968aaa3facf9686b5ff0bd7
>>>> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112
>>>> 08/01/2024
>>>> [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi]
>>>> [ 3029.668717] Call Trace:
>>>> [ 3029.668722] <TASK>
>>>> [ 3029.668728] dump_stack_lvl+0x4e/0x70
>>>> [ 3029.668738] warn_alloc+0x164/0x190
>>>> [ 3029.668747] ? srso_return_thunk+0x5/0x5f
>>>> [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360
>>>> [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70
>>>> [ 3029.668774] __alloc_pages_noprof+0x321/0x350
>>>> [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290
>>>> [ 3029.668790] dma_direct_alloc+0x70/0x270
>>>> [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi
>>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>>> [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi
>>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>>> [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi
>>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>>> [ 3029.668844] ? srso_return_thunk+0x5/0x5f
>>>> [ 3029.668853] process_one_work+0x17e/0x330
>>>> [ 3029.668861] worker_thread+0x2ce/0x3f0
>>>> [ 3029.668868] ? __pfx_worker_thread+0x10/0x10
>>>> [ 3029.668873] kthread+0xd2/0x100
>>>> [ 3029.668879] ? __pfx_kthread+0x10/0x10
>>>> [ 3029.668885] ret_from_fork+0x34/0x50
>>>> [ 3029.668892] ? __pfx_kthread+0x10/0x10
>>>> [ 3029.668898] ret_from_fork_asm+0x1a/0x30
>>>> [ 3029.668910] </TASK>
>>>>
>>>> Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-
>>>> QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
>>>>
>>>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
>>>> ---
>>>> Changes sice v1:
>>>> - Don't free bhie tables during suspend/hibernation only
>>>> - Handle fbc_image changed size correctly
>>>> - Remove fbc_image getting set to NULL in *free_bhie_table()
>>>> ---
>>>> drivers/bus/mhi/host/boot.c | 15 +++++++++++----
>>>> drivers/bus/mhi/host/init.c | 13 ++++++++++---
>>>> drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++----
>>>> include/linux/mhi.h | 7 +++++++
>>>> 4 files changed, 33 insertions(+), 11 deletions(-)
>>>>
>>>> diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c
>>>> index 9dcc7184817d5..0df26100c8f9c 100644
>>>> --- a/drivers/bus/mhi/host/boot.c
>>>> +++ b/drivers/bus/mhi/host/boot.c
>>>> @@ -487,10 +487,17 @@ void mhi_fw_load_handler(struct mhi_controller
>>>> *mhi_cntrl)
>>>> * device transitioning into MHI READY state
>>>> */
>>>> if (mhi_cntrl->fbc_download) {
>>>> - ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image,
>>>> fw_sz);
>>>> - if (ret) {
>>>> - release_firmware(firmware);
>>>> - goto error_fw_load;
>>>> + if (mhi_cntrl->fbc_image && fw_sz != mhi_cntrl->prev_fw_sz) {
>>>> + mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image);
>>>> + mhi_cntrl->fbc_image = NULL;
>>>> + }
>>>> + if (!mhi_cntrl->fbc_image) {
>>>> + ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl-
>>>>> fbc_image, fw_sz);
>>>> + if (ret) {
>>>> + release_firmware(firmware);
>>>> + goto error_fw_load;
>>>> + }
>>>> + mhi_cntrl->prev_fw_sz = fw_sz;
>>>> }
>>>> /* Load the firmware into BHIE vec table */
>>>> diff --git a/drivers/bus/mhi/host/init.c b/drivers/bus/mhi/host/init.c
>>>> index a9b1f8beee7bc..09b946b86ac46 100644
>>>> --- a/drivers/bus/mhi/host/init.c
>>>> +++ b/drivers/bus/mhi/host/init.c
>>>> @@ -1173,8 +1173,9 @@ int mhi_prepare_for_power_up(struct
>>>> mhi_controller *mhi_cntrl)
>>>> /*
>>>> * Allocate RDDM table for debugging purpose if specified
>>>> */
>>>> - mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
>>>> - mhi_cntrl->rddm_size);
>>>> + if (!mhi_cntrl->rddm_image)
>>>> + mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
>>>> + mhi_cntrl->rddm_size);
>>>> if (mhi_cntrl->rddm_image) {
>>>> ret = mhi_rddm_prepare(mhi_cntrl,
>>>> mhi_cntrl->rddm_image);
>>>> @@ -1212,12 +1213,18 @@ void mhi_unprepare_after_power_down(struct
>>>> mhi_controller *mhi_cntrl)
>>>> mhi_cntrl->rddm_image = NULL;
>>>> }
>>>> + mhi_partial_unprepare_after_power_down(mhi_cntrl);
>>>> +}
>>>> +EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
>>>> +
>>>> +void mhi_partial_unprepare_after_power_down(struct mhi_controller
>>>> *mhi_cntrl)
>>>> +{
>>>> mhi_cntrl->bhi = NULL;
>>>> mhi_cntrl->bhie = NULL;
>>>> mhi_deinit_dev_ctxt(mhi_cntrl);
>>>> }
>>>> -EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
>>>> +EXPORT_SYMBOL_GPL(mhi_partial_unprepare_after_power_down);
>>>>
>>> Instead of adding new API you can free memory from the unregister
>>> controller also.
>>>
>>> - Krishna Chaitanya.
>>>> static void mhi_release_device(struct device *dev)
>>>> {
>>>> diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/
>>>> wireless/ath/ath11k/mhi.c
>>>> index acd76e9392d31..f77cec79b5b80 100644
>>>> --- a/drivers/net/wireless/ath/ath11k/mhi.c
>>>> +++ b/drivers/net/wireless/ath/ath11k/mhi.c
>>>> @@ -460,12 +460,13 @@ void ath11k_mhi_stop(struct ath11k_pci *ab_pci,
>>>> bool is_suspend)
>>>> * workaround, otherwise ath11k_core_resume() will timeout
>>>> * during resume.
>>>> */
>>>> - if (is_suspend)
>>>> + if (is_suspend) {
>>>> mhi_power_down_keep_dev(ab_pci->mhi_ctrl, true);
>>>> - else
>>>> + mhi_partial_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>>> + } else {
>>>> mhi_power_down(ab_pci->mhi_ctrl, true);
>>>> -
>>>> - mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>>> + mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>>> + }
>>>> }
>>>> int ath11k_mhi_suspend(struct ath11k_pci *ab_pci)
>>>> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
>>>> index 059dc94d20bb6..65a47c712b3a0 100644
>>>> --- a/include/linux/mhi.h
>>>> +++ b/include/linux/mhi.h
>>>> @@ -382,6 +382,7 @@ struct mhi_controller {
>>>> const char *fw_image;
>>>> const u8 *fw_data;
>>>> size_t fw_sz;
>>>> + size_t prev_fw_sz;
>>>> const char *edl_image;
>>>> size_t rddm_size;
>>>> size_t sbl_size;
>>>> @@ -662,6 +663,12 @@ void mhi_power_down_keep_dev(struct
>>>> mhi_controller *mhi_cntrl, bool graceful);
>>>> */
>>>> void mhi_unprepare_after_power_down(struct mhi_controller
>>>> *mhi_cntrl);
>>>> +/**
>>>> + * mhi_partial_unprepare_after_power_down - Free any allocated memory
>>>> after power down partially
>>>> + * @mhi_cntrl: MHI controller
>>>> + */
>>>> +void mhi_partial_unprepare_after_power_down(struct mhi_controller
>>>> *mhi_cntrl);
>>>> +
>>>> /**
>>>> * mhi_pm_suspend - Move MHI into a suspended state
>>>> * @mhi_cntrl: MHI controller
>>
>>
--
Regards,
Usama
On 4/12/2025 12:02 AM, Muhammad Usama Anjum wrote:
> On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote:
>>
>>
>> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote:
>>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote:
>>>>
>>>>
>>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote:
>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table
>>>>> allocation. There is a crash report where at resume time, the memory
>>>>> from the dma doesn't get allocated and MHI fails to re-initialize.
>>>>> There may be fragmentation of some kind which fails the allocation
>>>>> call.
>>>>>
>>>>> 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.
>>>>>
>>>>> 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
>>>> If firmware image will change between suspend and resume ?
>>> Yes, correct.
>>>
>> why the firmware image size will change between suspend & resume?
>> who will update the firmware image after bootup?
>> It is not expected behaviour.
> I was trying to research if the firmware can change or not. I've not
> found any documentation on it.
>
> If the firmare is updated in filesystem before suspend/hibernate, would
> the new firwmare be loaded the next time kernel resumes as the older
> firmware is no where to be found?
>
> What do you think about this?
>
I don't think firmware can be updated before suspend/hibernate. I don't
see any reason why it can be updated. If you think it can be updated
please quote relevant doc.
- Krishna Chaitanya.
>>
>> - Krishna chaitanya.
>>>>> allocate new memory for it.
>>>>>
>>>>> Here are the crash logs:
>>>>>
>>>>> [ 3029.338587] mhi mhi0: Requested to power ON
>>>>> [ 3029.338621] mhi mhi0: Power on setup success
>>>>> [ 3029.668654] kworker/u33:8: page allocation failure: order:7,
>>>>> mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0
>>>>> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted
>>>>> 6.11.11-valve10-1-neptune-611-gb69e902b4338
>>>>> #1ed779c892334112fb968aaa3facf9686b5ff0bd7
>>>>> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112
>>>>> 08/01/2024
>>>>> [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi]
>>>>> [ 3029.668717] Call Trace:
>>>>> [ 3029.668722] <TASK>
>>>>> [ 3029.668728] dump_stack_lvl+0x4e/0x70
>>>>> [ 3029.668738] warn_alloc+0x164/0x190
>>>>> [ 3029.668747] ? srso_return_thunk+0x5/0x5f
>>>>> [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360
>>>>> [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70
>>>>> [ 3029.668774] __alloc_pages_noprof+0x321/0x350
>>>>> [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290
>>>>> [ 3029.668790] dma_direct_alloc+0x70/0x270
>>>>> [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi
>>>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>>>> [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi
>>>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>>>> [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi
>>>>> faa917c5aa23a5f5b12d6a2c597067e16d2fedc0]
>>>>> [ 3029.668844] ? srso_return_thunk+0x5/0x5f
>>>>> [ 3029.668853] process_one_work+0x17e/0x330
>>>>> [ 3029.668861] worker_thread+0x2ce/0x3f0
>>>>> [ 3029.668868] ? __pfx_worker_thread+0x10/0x10
>>>>> [ 3029.668873] kthread+0xd2/0x100
>>>>> [ 3029.668879] ? __pfx_kthread+0x10/0x10
>>>>> [ 3029.668885] ret_from_fork+0x34/0x50
>>>>> [ 3029.668892] ? __pfx_kthread+0x10/0x10
>>>>> [ 3029.668898] ret_from_fork_asm+0x1a/0x30
>>>>> [ 3029.668910] </TASK>
>>>>>
>>>>> Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-
>>>>> QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
>>>>>
>>>>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
>>>>> ---
>>>>> Changes sice v1:
>>>>> - Don't free bhie tables during suspend/hibernation only
>>>>> - Handle fbc_image changed size correctly
>>>>> - Remove fbc_image getting set to NULL in *free_bhie_table()
>>>>> ---
>>>>> drivers/bus/mhi/host/boot.c | 15 +++++++++++----
>>>>> drivers/bus/mhi/host/init.c | 13 ++++++++++---
>>>>> drivers/net/wireless/ath/ath11k/mhi.c | 9 +++++----
>>>>> include/linux/mhi.h | 7 +++++++
>>>>> 4 files changed, 33 insertions(+), 11 deletions(-)
>>>>>
>>>>> diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c
>>>>> index 9dcc7184817d5..0df26100c8f9c 100644
>>>>> --- a/drivers/bus/mhi/host/boot.c
>>>>> +++ b/drivers/bus/mhi/host/boot.c
>>>>> @@ -487,10 +487,17 @@ void mhi_fw_load_handler(struct mhi_controller
>>>>> *mhi_cntrl)
>>>>> * device transitioning into MHI READY state
>>>>> */
>>>>> if (mhi_cntrl->fbc_download) {
>>>>> - ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image,
>>>>> fw_sz);
>>>>> - if (ret) {
>>>>> - release_firmware(firmware);
>>>>> - goto error_fw_load;
>>>>> + if (mhi_cntrl->fbc_image && fw_sz != mhi_cntrl->prev_fw_sz) {
>>>>> + mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image);
>>>>> + mhi_cntrl->fbc_image = NULL;
>>>>> + }
>>>>> + if (!mhi_cntrl->fbc_image) {
>>>>> + ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl-
>>>>>> fbc_image, fw_sz);
>>>>> + if (ret) {
>>>>> + release_firmware(firmware);
>>>>> + goto error_fw_load;
>>>>> + }
>>>>> + mhi_cntrl->prev_fw_sz = fw_sz;
>>>>> }
>>>>> /* Load the firmware into BHIE vec table */
>>>>> diff --git a/drivers/bus/mhi/host/init.c b/drivers/bus/mhi/host/init.c
>>>>> index a9b1f8beee7bc..09b946b86ac46 100644
>>>>> --- a/drivers/bus/mhi/host/init.c
>>>>> +++ b/drivers/bus/mhi/host/init.c
>>>>> @@ -1173,8 +1173,9 @@ int mhi_prepare_for_power_up(struct
>>>>> mhi_controller *mhi_cntrl)
>>>>> /*
>>>>> * Allocate RDDM table for debugging purpose if specified
>>>>> */
>>>>> - mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
>>>>> - mhi_cntrl->rddm_size);
>>>>> + if (!mhi_cntrl->rddm_image)
>>>>> + mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
>>>>> + mhi_cntrl->rddm_size);
>>>>> if (mhi_cntrl->rddm_image) {
>>>>> ret = mhi_rddm_prepare(mhi_cntrl,
>>>>> mhi_cntrl->rddm_image);
>>>>> @@ -1212,12 +1213,18 @@ void mhi_unprepare_after_power_down(struct
>>>>> mhi_controller *mhi_cntrl)
>>>>> mhi_cntrl->rddm_image = NULL;
>>>>> }
>>>>> + mhi_partial_unprepare_after_power_down(mhi_cntrl);
>>>>> +}
>>>>> +EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
>>>>> +
>>>>> +void mhi_partial_unprepare_after_power_down(struct mhi_controller
>>>>> *mhi_cntrl)
>>>>> +{
>>>>> mhi_cntrl->bhi = NULL;
>>>>> mhi_cntrl->bhie = NULL;
>>>>> mhi_deinit_dev_ctxt(mhi_cntrl);
>>>>> }
>>>>> -EXPORT_SYMBOL_GPL(mhi_unprepare_after_power_down);
>>>>> +EXPORT_SYMBOL_GPL(mhi_partial_unprepare_after_power_down);
>>>>>
>>>> Instead of adding new API you can free memory from the unregister
>>>> controller also.
>>>>
>>>> - Krishna Chaitanya.
>>>>> static void mhi_release_device(struct device *dev)
>>>>> {
>>>>> diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/
>>>>> wireless/ath/ath11k/mhi.c
>>>>> index acd76e9392d31..f77cec79b5b80 100644
>>>>> --- a/drivers/net/wireless/ath/ath11k/mhi.c
>>>>> +++ b/drivers/net/wireless/ath/ath11k/mhi.c
>>>>> @@ -460,12 +460,13 @@ void ath11k_mhi_stop(struct ath11k_pci *ab_pci,
>>>>> bool is_suspend)
>>>>> * workaround, otherwise ath11k_core_resume() will timeout
>>>>> * during resume.
>>>>> */
>>>>> - if (is_suspend)
>>>>> + if (is_suspend) {
>>>>> mhi_power_down_keep_dev(ab_pci->mhi_ctrl, true);
>>>>> - else
>>>>> + mhi_partial_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>>>> + } else {
>>>>> mhi_power_down(ab_pci->mhi_ctrl, true);
>>>>> -
>>>>> - mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>>>> + mhi_unprepare_after_power_down(ab_pci->mhi_ctrl);
>>>>> + }
>>>>> }
>>>>> int ath11k_mhi_suspend(struct ath11k_pci *ab_pci)
>>>>> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
>>>>> index 059dc94d20bb6..65a47c712b3a0 100644
>>>>> --- a/include/linux/mhi.h
>>>>> +++ b/include/linux/mhi.h
>>>>> @@ -382,6 +382,7 @@ struct mhi_controller {
>>>>> const char *fw_image;
>>>>> const u8 *fw_data;
>>>>> size_t fw_sz;
>>>>> + size_t prev_fw_sz;
>>>>> const char *edl_image;
>>>>> size_t rddm_size;
>>>>> size_t sbl_size;
>>>>> @@ -662,6 +663,12 @@ void mhi_power_down_keep_dev(struct
>>>>> mhi_controller *mhi_cntrl, bool graceful);
>>>>> */
>>>>> void mhi_unprepare_after_power_down(struct mhi_controller
>>>>> *mhi_cntrl);
>>>>> +/**
>>>>> + * mhi_partial_unprepare_after_power_down - Free any allocated memory
>>>>> after power down partially
>>>>> + * @mhi_cntrl: MHI controller
>>>>> + */
>>>>> +void mhi_partial_unprepare_after_power_down(struct mhi_controller
>>>>> *mhi_cntrl);
>>>>> +
>>>>> /**
>>>>> * mhi_pm_suspend - Move MHI into a suspended state
>>>>> * @mhi_cntrl: MHI controller
>>>
>>>
>
>
On 4/12/25 6:22 AM, Krishna Chaitanya Chundru wrote: > > On 4/12/2025 12:02 AM, Muhammad Usama Anjum wrote: >> On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote: >>> >>> >>> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote: >>>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote: >>>>> >>>>> >>>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote: >>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table >>>>>> allocation. There is a crash report where at resume time, the memory >>>>>> from the dma doesn't get allocated and MHI fails to re-initialize. >>>>>> There may be fragmentation of some kind which fails the allocation >>>>>> call. >>>>>> >>>>>> 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. >>>>>> >>>>>> 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 >>>>> If firmware image will change between suspend and resume ? >>>> Yes, correct. >>>> >>> why the firmware image size will change between suspend & resume? >>> who will update the firmware image after bootup? >>> It is not expected behaviour. >> I was trying to research if the firmware can change or not. I've not >> found any documentation on it. >> >> If the firmare is updated in filesystem before suspend/hibernate, would >> the new firwmare be loaded the next time kernel resumes as the older >> firmware is no where to be found? >> >> What do you think about this? >> > I don't think firmware can be updated before suspend/hibernate. I don't > see any reason why it can be updated. If you think it can be updated > please quote relevant doc. I've not found any documentation on it. Let's wait for others to review and it it cannot be updated, I'll remove this part. -- Regards, Usama
On 4/14/2025 1:32 AM, Muhammad Usama Anjum wrote: > On 4/12/25 6:22 AM, Krishna Chaitanya Chundru wrote: >> >> On 4/12/2025 12:02 AM, Muhammad Usama Anjum wrote: >>> On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote: >>>> >>>> >>>> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote: >>>>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote: >>>>>> >>>>>> >>>>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote: >>>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table >>>>>>> allocation. There is a crash report where at resume time, the memory >>>>>>> from the dma doesn't get allocated and MHI fails to re-initialize. >>>>>>> There may be fragmentation of some kind which fails the allocation >>>>>>> call. >>>>>>> >>>>>>> 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. >>>>>>> >>>>>>> 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 >>>>>> If firmware image will change between suspend and resume ? >>>>> Yes, correct. >>>>> >>>> why the firmware image size will change between suspend & resume? >>>> who will update the firmware image after bootup? >>>> It is not expected behaviour. >>> I was trying to research if the firmware can change or not. I've not >>> found any documentation on it. >>> >>> If the firmare is updated in filesystem before suspend/hibernate, would >>> the new firwmare be loaded the next time kernel resumes as the older >>> firmware is no where to be found? >>> >>> What do you think about this? >>> >> I don't think firmware can be updated before suspend/hibernate. I don't >> see any reason why it can be updated. If you think it can be updated >> please quote relevant doc. > I've not found any documentation on it. Let's wait for others to review > and it it cannot be updated, I'll remove this part. > Wouldn't this be trivial to test? Boot the device, go modify the firmware on the filesystem, then go through a suspend cycle. -Jeff
On 4/14/25 7:14 PM, Jeff Hugo wrote:
> On 4/14/2025 1:32 AM, Muhammad Usama Anjum wrote:
>> On 4/12/25 6:22 AM, Krishna Chaitanya Chundru wrote:
>>>
>>> On 4/12/2025 12:02 AM, Muhammad Usama Anjum wrote:
>>>> On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote:
>>>>>
>>>>>
>>>>> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote:
>>>>>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote:
>>>>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table
>>>>>>>> allocation. There is a crash report where at resume time, the
>>>>>>>> memory
>>>>>>>> from the dma doesn't get allocated and MHI fails to re-initialize.
>>>>>>>> There may be fragmentation of some kind which fails the allocation
>>>>>>>> call.
>>>>>>>>
>>>>>>>> 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.
>>>>>>>>
>>>>>>>> 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
>>>>>>> If firmware image will change between suspend and resume ?
>>>>>> Yes, correct.
>>>>>>
>>>>> why the firmware image size will change between suspend & resume?
>>>>> who will update the firmware image after bootup?
>>>>> It is not expected behaviour.
>>>> I was trying to research if the firmware can change or not. I've not
>>>> found any documentation on it.
>>>>
>>>> If the firmare is updated in filesystem before suspend/hibernate, would
>>>> the new firwmare be loaded the next time kernel resumes as the older
>>>> firmware is no where to be found?
>>>>
>>>> What do you think about this?
>>>>
>>> I don't think firmware can be updated before suspend/hibernate. I don't
>>> see any reason why it can be updated. If you think it can be updated
>>> please quote relevant doc.
>> I've not found any documentation on it. Let's wait for others to review
>> and it it cannot be updated, I'll remove this part.
>>
>
> Wouldn't this be trivial to test? Boot the device, go modify the
> firmware on the filesystem, then go through a suspend cycle.
I just tested this. I've used an old firmware from last year vs the
latest one.
Firmware A: old firmware size: 5349376
Firmware B: new firmware size: 5165056
A here has bigger size.
1. I loaded A at boot and then replaced the firmwares in filesystem with
B before syspend. At resume time, B was loaded fine by freeing the
bigger memory area and allocating the smaller one.
2. I loaded B and then replaced A in its place before suspend. At resume
time, memory was freed and larger memory was allocated. But driver
wasn't able to initialize correctly:
[ 184.051902] ath11k_pci 0000:03:00.0: timeout while waiting for
restart complete
[ 184.051916] ath11k_pci 0000:03:00.0: failed to resume core: -110
[ 184.051923] ath11k_pci 0000:03:00.0: PM: dpm_run_callback():
pci_pm_resume returns -110
[ 184.051945] ath11k_pci 0000:03:00.0: PM: failed to resume async:
error -110
[ 187.251911] ath11k_pci 0000:03:00.0: wmi command 16387 timeout
[ 187.251924] ath11k_pci 0000:03:00.0: failed to send
WMI_PDEV_SET_PARAM cmd
[ 187.251933] ath11k_pci 0000:03:00.0: failed to enable dynamic bw: -11
So should we generalize above that changing firmware at
suspend/hibernation time isn't supported. If firmware package is
updated, does user restarts every time?
Attaching the dirty logs for reference. There are a lot of debug logs in it.
--
Regards,
Usama[ 0.000000] Linux version 6.14.0-rc4-bhie0 (usama@fw) (gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #4 SMP PREEMPT_DYNAMIC Tue Apr 15 21:00:46 PKT 2025
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.14.0-rc4-bhie0 console=tty1 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0 rd.systemd.gpt_auto=no log_buf_len=4M amd_iommu=off amdgpu.lockup_timeout=5000,10000,10000,5000 amdgpu.gttsize=8128 amdgpu.sched_hw_submission=4 audit=0 fsck.mode=auto fsck.repair=preen loglevel=3 splash quiet plymouth.ignore-serial-consoles fbcon=vc:4-6 steamos.efi=PARTUUID=886aefa6-96a5-4693-bc09-02b9ad5a288e
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009efff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009f000-0x00000000000bffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000009afffff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000009b00000-0x0000000009dfffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000009e00000-0x0000000009efffff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000009f00000-0x0000000009f20fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x0000000009f21000-0x000000006b367fff] usable
[ 0.000000] BIOS-e820: [mem 0x000000006b368000-0x000000006c567fff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000006c568000-0x000000006c56efff] usable
[ 0.000000] BIOS-e820: [mem 0x000000006c56f000-0x000000006c56ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000006c570000-0x000000007877efff] usable
[ 0.000000] BIOS-e820: [mem 0x000000007877f000-0x000000007af7efff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000007af7f000-0x000000007cf7efff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x000000007cf7f000-0x000000007cffefff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x000000007cfff000-0x000000007cffffff] usable
[ 0.000000] BIOS-e820: [mem 0x000000007d000000-0x000000007dffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000007f000000-0x000000007fffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000a0000000-0x00000000a00fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec01fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec10000-0x00000000fec10fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec20000-0x00000000fec20fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000fed81fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fedc0000-0x00000000feddffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000043f37ffff] usable
[ 0.000000] BIOS-e820: [mem 0x000000043f380000-0x000000047fffffff] reserved
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] APIC: Static calls initialized
[ 0.000000] e820: update [mem 0x69c85018-0x69c90057] usable ==> usable
[ 0.000000] extended physical RAM map:
[ 0.000000] reserve setup_data: [mem 0x0000000000000000-0x000000000009efff] usable
[ 0.000000] reserve setup_data: [mem 0x000000000009f000-0x00000000000bffff] reserved
[ 0.000000] reserve setup_data: [mem 0x0000000000100000-0x0000000009afffff] usable
[ 0.000000] reserve setup_data: [mem 0x0000000009b00000-0x0000000009dfffff] reserved
[ 0.000000] reserve setup_data: [mem 0x0000000009e00000-0x0000000009efffff] usable
[ 0.000000] reserve setup_data: [mem 0x0000000009f00000-0x0000000009f20fff] ACPI NVS
[ 0.000000] reserve setup_data: [mem 0x0000000009f21000-0x0000000069c85017] usable
[ 0.000000] reserve setup_data: [mem 0x0000000069c85018-0x0000000069c90057] usable
[ 0.000000] reserve setup_data: [mem 0x0000000069c90058-0x000000006b367fff] usable
[ 0.000000] reserve setup_data: [mem 0x000000006b368000-0x000000006c567fff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000006c568000-0x000000006c56efff] usable
[ 0.000000] reserve setup_data: [mem 0x000000006c56f000-0x000000006c56ffff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000006c570000-0x000000007877efff] usable
[ 0.000000] reserve setup_data: [mem 0x000000007877f000-0x000000007af7efff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000007af7f000-0x000000007cf7efff] ACPI NVS
[ 0.000000] reserve setup_data: [mem 0x000000007cf7f000-0x000000007cffefff] ACPI data
[ 0.000000] reserve setup_data: [mem 0x000000007cfff000-0x000000007cffffff] usable
[ 0.000000] reserve setup_data: [mem 0x000000007d000000-0x000000007dffffff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000007f000000-0x000000007fffffff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000a0000000-0x00000000a00fffff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fec00000-0x00000000fec01fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fec10000-0x00000000fec10fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fec20000-0x00000000fec20fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fed80000-0x00000000fed81fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fedc0000-0x00000000feddffff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[ 0.000000] reserve setup_data: [mem 0x0000000100000000-0x000000043f37ffff] usable
[ 0.000000] reserve setup_data: [mem 0x000000043f380000-0x000000047fffffff] reserved
[ 0.000000] efi: EFI v2.7 by Valve
[ 0.000000] efi: ACPI=0x7cffe000 ACPI 2.0=0x7cffe014 TPMFinalLog=0x7cefe000 SMBIOS=0x796fd000 SMBIOS 3.0=0x796fb000 MEMATTR=0x74680018 ESRT=0x74077d18 INITRD=0x6c57e098 RNG=0x7cfbc018 TPMEventLog=0x7cfba018
[ 0.000000] random: crng init done
[ 0.000000] efi: Remove mem66: MMIO range=[0xa0000000-0xa00fffff] (1MB) from e820 map
[ 0.000000] e820: remove [mem 0xa0000000-0xa00fffff] reserved
[ 0.000000] efi: Remove mem67: MMIO range=[0xf8000000-0xfbffffff] (64MB) from e820 map
[ 0.000000] e820: remove [mem 0xf8000000-0xfbffffff] reserved
[ 0.000000] efi: Not removing mem68: MMIO range=[0xfec00000-0xfec01fff] (8KB) from e820 map
[ 0.000000] efi: Not removing mem69: MMIO range=[0xfec10000-0xfec10fff] (4KB) from e820 map
[ 0.000000] efi: Not removing mem70: MMIO range=[0xfec20000-0xfec20fff] (4KB) from e820 map
[ 0.000000] efi: Not removing mem71: MMIO range=[0xfed80000-0xfed81fff] (8KB) from e820 map
[ 0.000000] efi: Not removing mem72: MMIO range=[0xfedc0000-0xfeddffff] (128KB) from e820 map
[ 0.000000] efi: Not removing mem73: MMIO range=[0xfee00000-0xfee00fff] (4KB) from e820 map
[ 0.000000] efi: Remove mem74: MMIO range=[0xff000000-0xffffffff] (16MB) from e820 map
[ 0.000000] e820: remove [mem 0xff000000-0xffffffff] reserved
[ 0.000000] SMBIOS 3.3.0 present.
[ 0.000000] DMI: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024
[ 0.000000] DMI: Memory slots populated: 4/4
[ 0.000000] tsc: Fast TSC calibration using PIT
[ 0.000000] tsc: Detected 2800.024 MHz processor
[ 0.000010] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000012] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000020] last_pfn = 0x43f380 max_arch_pfn = 0x400000000
[ 0.000027] MTRR map: 7 entries (3 fixed + 4 variable; max 20), built from 9 variable MTRRs
[ 0.000029] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WP UC- WT
[ 0.000271] last_pfn = 0x7d000 max_arch_pfn = 0x400000000
[ 0.004112] esrt: Reserving ESRT space from 0x0000000074077d18 to 0x0000000074077da0.
[ 0.004118] e820: update [mem 0x74077000-0x74077fff] usable ==> reserved
[ 0.004136] Using GB pages for direct mapping
[ 0.008028] printk: log buffer data + meta data: 4194304 + 14680064 = 18874368 bytes
[ 0.008030] printk: early log buf free: 123696(94%)
[ 0.008031] Secure boot disabled
[ 0.008031] RAMDISK: [mem 0x66e74000-0x67e3bfff]
[ 0.008041] ACPI: Early table checksum verification disabled
[ 0.008046] ACPI: RSDP 0x000000007CFFE014 000024 (v02 AMDYDE)
[ 0.008050] ACPI: XSDT 0x000000007CFCB188 000104 (v01 AMDYDE EDK2 00000002 01000013)
[ 0.008056] ACPI: FACP 0x000000007CFEF000 00010C (v05 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008060] ACPI: DSDT 0x000000007CFE0000 008706 (v01 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008063] ACPI: FACS 0x000000007CEF7000 000040
[ 0.008065] ACPI: UEFI 0x000000007CF7E000 000236 (v01 AMDYDE EDK2 00000001 ACPI 00040000)
[ 0.008067] ACPI: SSDT 0x000000007CFF5000 007237 (v02 AMD EDK2 00000002 ACPI 00040000)
[ 0.008069] ACPI: SSDT 0x000000007CFF4000 00046D (v01 AMDyde EDK2 00001000 ACPI 00040000)
[ 0.008071] ACPI: TPM2 0x000000007CFF3000 00004C (v04 AMD EDK2 00000002 ACPI 00040000)
[ 0.008074] ACPI: ASF! 0x000000007CFF1000 0000A5 (v32 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008076] ACPI: BOOT 0x000000007CFF0000 000028 (v01 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008078] ACPI: HPET 0x000000007CFEE000 000038 (v01 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008080] ACPI: APIC 0x000000007CFED000 000138 (v03 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008082] ACPI: MCFG 0x000000007CFEC000 00003C (v01 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008084] ACPI: SLIC 0x000000007CFEB000 000176 (v01 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008086] ACPI: WDAT 0x000000007CFEA000 00017C (v01 AMDYDE EDK2 00000002 ACPI 00040000)
[ 0.008089] ACPI: WDRT 0x000000007CFE9000 000047 (v01 AMD EDK2 00000002 ACPI 00040000)
[ 0.008091] ACPI: SSDT 0x000000007CFDF000 000099 (v01 AMDyde EDK2 00000002 ACPI 00040000)
[ 0.008093] ACPI: VFCT 0x000000007CFD3000 00B084 (v01 AMDYDE EDK2 00000001 ACPI 00040000)
[ 0.008095] ACPI: SSDT 0x000000007CFD2000 0000F8 (v01 AMD EDK2 00001000 ACPI 00040000)
[ 0.008097] ACPI: SSDT 0x000000007CFCF000 0029BC (v02 AMD EDK2 00000001 ACPI 00040000)
[ 0.008099] ACPI: CRAT 0x000000007CFCE000 0007E8 (v01 AMD EDK2 00000001 ACPI 00040000)
[ 0.008101] ACPI: CDIT 0x000000007CFCD000 000029 (v01 AMD EDK2 00000001 ACPI 00040000)
[ 0.008104] ACPI: SSDT 0x000000007CFCC000 000503 (v01 AMD EDK2 00000001 ACPI 00040000)
[ 0.008106] ACPI: SSDT 0x000000007CFC9000 001436 (v01 AMD EDK2 00000001 ACPI 00040000)
[ 0.008108] ACPI: SSDT 0x000000007CFC7000 0014AD (v01 AMD EDK2 00000001 ACPI 00040000)
[ 0.008110] ACPI: SSDT 0x000000007CFC1000 0051CF (v01 AMD EDK2 00000001 ACPI 00040000)
[ 0.008112] ACPI: FPDT 0x000000007CFFD000 000044 (v01 AMD EDK2 00000002 ACPI 00040000)
[ 0.008114] ACPI: WSMT 0x000000007CFBF000 000028 (v01 AMDYDE EDK2 00000001 ACPI 00040000)
[ 0.008116] ACPI: SSDT 0x000000007CFBE000 00008D (v01 AMD EDK2 00000001 ACPI 00040000)
[ 0.008119] ACPI: SSDT 0x000000007CFBD000 000AE8 (v01 AMD EDK2 00000001 ACPI 00040000)
[ 0.008121] ACPI: BGRT 0x000000007CFC0000 000038 (v01 AMDYDE EDK2 00000001 ACPI 00040000)
[ 0.008122] ACPI: Reserving FACP table memory at [mem 0x7cfef000-0x7cfef10b]
[ 0.008124] ACPI: Reserving DSDT table memory at [mem 0x7cfe0000-0x7cfe8705]
[ 0.008125] ACPI: Reserving FACS table memory at [mem 0x7cef7000-0x7cef703f]
[ 0.008125] ACPI: Reserving UEFI table memory at [mem 0x7cf7e000-0x7cf7e235]
[ 0.008126] ACPI: Reserving SSDT table memory at [mem 0x7cff5000-0x7cffc236]
[ 0.008126] ACPI: Reserving SSDT table memory at [mem 0x7cff4000-0x7cff446c]
[ 0.008127] ACPI: Reserving TPM2 table memory at [mem 0x7cff3000-0x7cff304b]
[ 0.008128] ACPI: Reserving ASF! table memory at [mem 0x7cff1000-0x7cff10a4]
[ 0.008128] ACPI: Reserving BOOT table memory at [mem 0x7cff0000-0x7cff0027]
[ 0.008129] ACPI: Reserving HPET table memory at [mem 0x7cfee000-0x7cfee037]
[ 0.008129] ACPI: Reserving APIC table memory at [mem 0x7cfed000-0x7cfed137]
[ 0.008130] ACPI: Reserving MCFG table memory at [mem 0x7cfec000-0x7cfec03b]
[ 0.008131] ACPI: Reserving SLIC table memory at [mem 0x7cfeb000-0x7cfeb175]
[ 0.008131] ACPI: Reserving WDAT table memory at [mem 0x7cfea000-0x7cfea17b]
[ 0.008132] ACPI: Reserving WDRT table memory at [mem 0x7cfe9000-0x7cfe9046]
[ 0.008133] ACPI: Reserving SSDT table memory at [mem 0x7cfdf000-0x7cfdf098]
[ 0.008133] ACPI: Reserving VFCT table memory at [mem 0x7cfd3000-0x7cfde083]
[ 0.008134] ACPI: Reserving SSDT table memory at [mem 0x7cfd2000-0x7cfd20f7]
[ 0.008135] ACPI: Reserving SSDT table memory at [mem 0x7cfcf000-0x7cfd19bb]
[ 0.008135] ACPI: Reserving CRAT table memory at [mem 0x7cfce000-0x7cfce7e7]
[ 0.008136] ACPI: Reserving CDIT table memory at [mem 0x7cfcd000-0x7cfcd028]
[ 0.008136] ACPI: Reserving SSDT table memory at [mem 0x7cfcc000-0x7cfcc502]
[ 0.008137] ACPI: Reserving SSDT table memory at [mem 0x7cfc9000-0x7cfca435]
[ 0.008138] ACPI: Reserving SSDT table memory at [mem 0x7cfc7000-0x7cfc84ac]
[ 0.008138] ACPI: Reserving SSDT table memory at [mem 0x7cfc1000-0x7cfc61ce]
[ 0.008139] ACPI: Reserving FPDT table memory at [mem 0x7cffd000-0x7cffd043]
[ 0.008140] ACPI: Reserving WSMT table memory at [mem 0x7cfbf000-0x7cfbf027]
[ 0.008140] ACPI: Reserving SSDT table memory at [mem 0x7cfbe000-0x7cfbe08c]
[ 0.008141] ACPI: Reserving SSDT table memory at [mem 0x7cfbd000-0x7cfbdae7]
[ 0.008141] ACPI: Reserving BGRT table memory at [mem 0x7cfc0000-0x7cfc0037]
[ 0.008206] No NUMA configuration found
[ 0.008207] Faking a node at [mem 0x0000000000000000-0x000000043f37ffff]
[ 0.008211] NODE_DATA(0) allocated [mem 0x43e17bec0-0x43e17ffff]
[ 0.008242] Zone ranges:
[ 0.008243] DMA [mem 0x0000000000001000-0x0000000000ffffff]
[ 0.008244] DMA32 [mem 0x0000000001000000-0x00000000ffffffff]
[ 0.008246] Normal [mem 0x0000000100000000-0x000000043f37ffff]
[ 0.008247] Device empty
[ 0.008247] Movable zone start for each node
[ 0.008248] Early memory node ranges
[ 0.008248] node 0: [mem 0x0000000000001000-0x000000000009efff]
[ 0.008249] node 0: [mem 0x0000000000100000-0x0000000009afffff]
[ 0.008250] node 0: [mem 0x0000000009e00000-0x0000000009efffff]
[ 0.008251] node 0: [mem 0x0000000009f21000-0x000000006b367fff]
[ 0.008252] node 0: [mem 0x000000006c568000-0x000000006c56efff]
[ 0.008252] node 0: [mem 0x000000006c570000-0x000000007877efff]
[ 0.008253] node 0: [mem 0x000000007cfff000-0x000000007cffffff]
[ 0.008254] node 0: [mem 0x0000000100000000-0x000000043f37ffff]
[ 0.008255] Initmem setup node 0 [mem 0x0000000000001000-0x000000043f37ffff]
[ 0.008262] On node 0, zone DMA: 1 pages in unavailable ranges
[ 0.008289] On node 0, zone DMA: 97 pages in unavailable ranges
[ 0.008519] On node 0, zone DMA32: 768 pages in unavailable ranges
[ 0.011017] On node 0, zone DMA32: 33 pages in unavailable ranges
[ 0.011063] On node 0, zone DMA32: 4608 pages in unavailable ranges
[ 0.011381] On node 0, zone DMA32: 1 pages in unavailable ranges
[ 0.011555] On node 0, zone DMA32: 18560 pages in unavailable ranges
[ 0.033092] On node 0, zone Normal: 12288 pages in unavailable ranges
[ 0.033125] On node 0, zone Normal: 3200 pages in unavailable ranges
[ 0.033337] ACPI: PM-Timer IO Port: 0x408
[ 0.033343] CPU topo: Ignoring hot-pluggable APIC ID 0 in present package.
[ 0.033346] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[ 0.033347] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[ 0.033348] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
[ 0.033348] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
[ 0.033349] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1])
[ 0.033350] ACPI: LAPIC_NMI (acpi_id[0x05] high edge lint[0x1])
[ 0.033350] ACPI: LAPIC_NMI (acpi_id[0x06] high edge lint[0x1])
[ 0.033351] ACPI: LAPIC_NMI (acpi_id[0x07] high edge lint[0x1])
[ 0.033351] ACPI: LAPIC_NMI (acpi_id[0x08] high edge lint[0x1])
[ 0.033352] ACPI: LAPIC_NMI (acpi_id[0x09] high edge lint[0x1])
[ 0.033352] ACPI: LAPIC_NMI (acpi_id[0x0a] high edge lint[0x1])
[ 0.033353] ACPI: LAPIC_NMI (acpi_id[0x0b] high edge lint[0x1])
[ 0.033353] ACPI: LAPIC_NMI (acpi_id[0x0c] high edge lint[0x1])
[ 0.033354] ACPI: LAPIC_NMI (acpi_id[0x0d] high edge lint[0x1])
[ 0.033354] ACPI: LAPIC_NMI (acpi_id[0x0e] high edge lint[0x1])
[ 0.033355] ACPI: LAPIC_NMI (acpi_id[0x0f] high edge lint[0x1])
[ 0.033370] IOAPIC[0]: apic_id 33, version 33, address 0xfec00000, GSI 0-23
[ 0.033376] IOAPIC[1]: apic_id 34, version 33, address 0xfec01000, GSI 24-55
[ 0.033378] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.033379] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
[ 0.033383] ACPI: Using ACPI (MADT) for SMP configuration information
[ 0.033384] ACPI: HPET id: 0x10228210 base: 0xfed00000
[ 0.033392] e820: update [mem 0x7279c000-0x72a3ffff] usable ==> reserved
[ 0.033409] CPU topo: Max. logical packages: 1
[ 0.033410] CPU topo: Max. logical dies: 1
[ 0.033411] CPU topo: Max. dies per package: 1
[ 0.033415] CPU topo: Max. threads per core: 2
[ 0.033415] CPU topo: Num. cores per package: 4
[ 0.033416] CPU topo: Num. threads per package: 8
[ 0.033416] CPU topo: Allowing 8 present CPUs plus 0 hotplug CPUs
[ 0.033417] CPU topo: Rejected CPUs 8
[ 0.033443] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[ 0.033445] PM: hibernation: Registered nosave memory: [mem 0x0009f000-0x000bffff]
[ 0.033446] PM: hibernation: Registered nosave memory: [mem 0x000c0000-0x000fffff]
[ 0.033447] PM: hibernation: Registered nosave memory: [mem 0x09b00000-0x09dfffff]
[ 0.033449] PM: hibernation: Registered nosave memory: [mem 0x09f00000-0x09f20fff]
[ 0.033451] PM: hibernation: Registered nosave memory: [mem 0x69c85000-0x69c85fff]
[ 0.033452] PM: hibernation: Registered nosave memory: [mem 0x69c90000-0x69c90fff]
[ 0.033454] PM: hibernation: Registered nosave memory: [mem 0x6b368000-0x6c567fff]
[ 0.033456] PM: hibernation: Registered nosave memory: [mem 0x6c56f000-0x6c56ffff]
[ 0.033457] PM: hibernation: Registered nosave memory: [mem 0x7279c000-0x72a3ffff]
[ 0.033459] PM: hibernation: Registered nosave memory: [mem 0x74077000-0x74077fff]
[ 0.033460] PM: hibernation: Registered nosave memory: [mem 0x7877f000-0x7af7efff]
[ 0.033461] PM: hibernation: Registered nosave memory: [mem 0x7af7f000-0x7cf7efff]
[ 0.033461] PM: hibernation: Registered nosave memory: [mem 0x7cf7f000-0x7cffefff]
[ 0.033463] PM: hibernation: Registered nosave memory: [mem 0x7d000000-0x7dffffff]
[ 0.033463] PM: hibernation: Registered nosave memory: [mem 0x7e000000-0x7effffff]
[ 0.033464] PM: hibernation: Registered nosave memory: [mem 0x7f000000-0x7fffffff]
[ 0.033465] PM: hibernation: Registered nosave memory: [mem 0x80000000-0xfebfffff]
[ 0.033465] PM: hibernation: Registered nosave memory: [mem 0xfec00000-0xfec01fff]
[ 0.033466] PM: hibernation: Registered nosave memory: [mem 0xfec02000-0xfec0ffff]
[ 0.033466] PM: hibernation: Registered nosave memory: [mem 0xfec10000-0xfec10fff]
[ 0.033467] PM: hibernation: Registered nosave memory: [mem 0xfec11000-0xfec1ffff]
[ 0.033467] PM: hibernation: Registered nosave memory: [mem 0xfec20000-0xfec20fff]
[ 0.033468] PM: hibernation: Registered nosave memory: [mem 0xfec21000-0xfed7ffff]
[ 0.033468] PM: hibernation: Registered nosave memory: [mem 0xfed80000-0xfed81fff]
[ 0.033469] PM: hibernation: Registered nosave memory: [mem 0xfed82000-0xfedbffff]
[ 0.033469] PM: hibernation: Registered nosave memory: [mem 0xfedc0000-0xfeddffff]
[ 0.033470] PM: hibernation: Registered nosave memory: [mem 0xfede0000-0xfedfffff]
[ 0.033470] PM: hibernation: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
[ 0.033471] PM: hibernation: Registered nosave memory: [mem 0xfee01000-0xffffffff]
[ 0.033472] [mem 0x80000000-0xfebfffff] available for PCI devices
[ 0.033475] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370452778343963 ns
[ 0.038551] setup_percpu: NR_CPUS:320 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1
[ 0.038826] percpu: Embedded 64 pages/cpu s225280 r8192 d28672 u262144
[ 0.038832] pcpu-alloc: s225280 r8192 d28672 u262144 alloc=1*2097152
[ 0.038835] pcpu-alloc: [0] 0 1 2 3 4 5 6 7
[ 0.038852] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.14.0-rc4-bhie0 console=tty1 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0 rd.systemd.gpt_auto=no log_buf_len=4M amd_iommu=off amdgpu.lockup_timeout=5000,10000,10000,5000 amdgpu.gttsize=8128 amdgpu.sched_hw_submission=4 audit=0 fsck.mode=auto fsck.repair=preen loglevel=3 splash quiet plymouth.ignore-serial-consoles fbcon=vc:4-6 steamos.efi=PARTUUID=886aefa6-96a5-4693-bc09-02b9ad5a288e
[ 0.039023] audit: disabled (until reboot)
[ 0.039121] Unknown kernel command line parameters "splash BOOT_IMAGE=/boot/vmlinuz-6.14.0-rc4-bhie0", will be passed to user space.
[ 0.040732] Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[ 0.041526] Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
[ 0.041590] Fallback order for Node 0: 0
[ 0.041595] Built 1 zonelists, mobility grouping on. Total pages: 3892604
[ 0.041596] Policy zone: Normal
[ 0.041823] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[ 0.041830] software IO TLB: area num 8.
[ 0.087757] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[ 0.087802] ftrace: allocating 49755 entries in 195 pages
[ 0.102545] ftrace: allocated 195 pages with 4 groups
[ 0.102630] Dynamic Preempt: full
[ 0.102674] rcu: Preemptible hierarchical RCU implementation.
[ 0.102675] rcu: RCU restricting CPUs from NR_CPUS=320 to nr_cpu_ids=8.
[ 0.102675] rcu: RCU priority boosting: priority 1 delay 500 ms.
[ 0.102676] Trampoline variant of Tasks RCU enabled.
[ 0.102677] Rude variant of Tasks RCU enabled.
[ 0.102677] Tracing variant of Tasks RCU enabled.
[ 0.102678] rcu: RCU calculated value of scheduler-enlistment delay is 30 jiffies.
[ 0.102678] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[ 0.102686] RCU Tasks: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[ 0.102688] RCU Tasks Rude: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[ 0.102690] RCU Tasks Trace: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
[ 0.105662] NR_IRQS: 20736, nr_irqs: 1032, preallocated irqs: 16
[ 0.105851] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.105977] kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
[ 0.106007] Console: colour dummy device 80x25
[ 0.106010] printk: legacy console [tty1] enabled
[ 0.106059] ACPI: Core revision 20240827
[ 0.106248] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484873504 ns
[ 0.106268] APIC: Switch to symmetric I/O mode setup
[ 0.107096] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.122939] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x285c578d5be, max_idle_ns: 440795233402 ns
[ 0.122944] Calibrating delay loop (skipped), value calculated using timer frequency.. 5602.38 BogoMIPS (lpj=9333413)
[ 0.122963] Zenbleed: please update your microcode for the most optimal fix
[ 0.122967] x86/cpu: User Mode Instruction Prevention (UMIP) activated
[ 0.123017] LVT offset 1 assigned for vector 0xf9
[ 0.123118] LVT offset 2 assigned for vector 0xf4
[ 0.123138] Last level iTLB entries: 4KB 1024, 2MB 1024, 4MB 512
[ 0.123139] Last level dTLB entries: 4KB 2048, 2MB 2048, 4MB 1024, 1GB 0
[ 0.123142] process: using mwait in idle threads
[ 0.123145] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[ 0.123148] Spectre V2 : Mitigation: Retpolines
[ 0.123149] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
[ 0.123150] Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT
[ 0.123151] Spectre V2 : Enabling Speculation Barrier for firmware calls
[ 0.123151] RETBleed: Mitigation: untrained return thunk
[ 0.123154] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[ 0.123155] Spectre V2 : Selecting STIBP always-on mode to complement retbleed mitigation
[ 0.123155] Spectre V2 : User space: Mitigation: STIBP always-on protection
[ 0.123157] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
[ 0.123159] Speculative Return Stack Overflow: Mitigation: Safe RET
[ 0.123165] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 0.123166] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.123166] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.123168] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.123169] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' format.
[ 0.147968] Freeing SMP alternatives memory: 40K
[ 0.147977] pid_max: default: 32768 minimum: 301
[ 0.152982] LSM: initializing lsm=capability,landlock,lockdown,yama,bpf
[ 0.153070] landlock: Up and running.
[ 0.153074] Yama: becoming mindful.
[ 0.153341] LSM support for eBPF active
[ 0.153389] Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[ 0.153411] Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[ 0.261742] smpboot: CPU0: AMD Custom APU 0932 (family: 0x17, model: 0x91, stepping: 0x0)
[ 0.262056] Performance Events: Fam17h+ core perfctr, AMD PMU driver.
[ 0.262065] ... version: 0
[ 0.262067] ... bit width: 48
[ 0.262068] ... generic registers: 6
[ 0.262070] ... value mask: 0000ffffffffffff
[ 0.262071] ... max period: 00007fffffffffff
[ 0.262073] ... fixed-purpose events: 0
[ 0.262074] ... event mask: 000000000000003f
[ 0.262186] signal: max sigframe size: 1776
[ 0.262229] rcu: Hierarchical SRCU implementation.
[ 0.262231] rcu: Max phase no-delay instances is 1000.
[ 0.262312] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[ 0.265999] MCE: In-kernel MCE decoding enabled.
[ 0.266066] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[ 0.266180] smp: Bringing up secondary CPUs ...
[ 0.266333] smpboot: x86: Booting SMP configuration:
[ 0.266334] .... node #0, CPUs: #2 #4 #6 #1 #3 #5 #7
[ 0.276443] Spectre V2 : Update user space SMT mitigation: STIBP always-on
[ 0.282994] smp: Brought up 1 node, 8 CPUs
[ 0.282994] smpboot: Total of 8 processors activated (44818.06 BogoMIPS)
[ 0.284279] Memory: 15133932K/15570416K available (16672K kernel code, 2201K rwdata, 13684K rodata, 3348K init, 3652K bss, 426280K reserved, 0K cma-reserved)
[ 0.285047] devtmpfs: initialized
[ 0.285047] x86/mm: Memory block size: 128MB
[ 0.287562] ACPI: PM: Registering ACPI NVS region [mem 0x09f00000-0x09f20fff] (135168 bytes)
[ 0.287562] ACPI: PM: Registering ACPI NVS region [mem 0x7af7f000-0x7cf7efff] (33554432 bytes)
[ 0.289958] DMA-API: preallocated 65536 debug entries
[ 0.289967] DMA-API: debugging enabled by kernel config
[ 0.289970] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370867519511994 ns
[ 0.289999] futex hash table entries: 2048 (order: 5, 131072 bytes, linear)
[ 0.290244] pinctrl core: initialized pinctrl subsystem
[ 0.290382] PM: RTC time: 17:27:48, date: 2025-04-17
[ 0.291091] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.291766] DMA: preallocated 2048 KiB GFP_KERNEL pool for atomic allocations
[ 0.292053] DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[ 0.292333] DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[ 0.292546] thermal_sys: Registered thermal governor 'fair_share'
[ 0.292548] thermal_sys: Registered thermal governor 'bang_bang'
[ 0.292550] thermal_sys: Registered thermal governor 'step_wise'
[ 0.292552] thermal_sys: Registered thermal governor 'user_space'
[ 0.292553] thermal_sys: Registered thermal governor 'power_allocator'
[ 0.292574] cpuidle: using governor ladder
[ 0.292574] cpuidle: using governor menu
[ 0.293063] Simple Boot Flag at 0x44 set to 0x1
[ 0.293136] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.293258] PCI: ECAM [mem 0xf8000000-0xfbffffff] (base 0xf8000000) for domain 0000 [bus 00-3f]
[ 0.293280] PCI: Using configuration type 1 for base access
[ 0.293587] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[ 0.293587] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[ 0.293587] HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
[ 0.293587] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.293587] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[ 0.293587] ACPI: Added _OSI(Module Device)
[ 0.293587] ACPI: Added _OSI(Processor Device)
[ 0.293587] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.293587] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.325452] ACPI: 12 ACPI AML tables successfully acquired and loaded
[ 0.330766] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[ 0.334597] ACPI: EC: EC started
[ 0.334599] ACPI: EC: interrupt blocked
[ 0.338931] ACPI: EC: EC_CMD/EC_SC=0x66, EC_DATA=0x62
[ 0.338935] ACPI: \_SB_.PCI0.LPC0.EC0_: Boot DSDT EC used to handle transactions
[ 0.338938] ACPI: Interpreter enabled
[ 0.338960] ACPI: PM: (supports S0 S3 S4 S5)
[ 0.338963] ACPI: Using IOAPIC for interrupt routing
[ 0.340792] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.340794] PCI: Ignoring E820 reservations for host bridge windows
[ 0.341582] ACPI: Enabled 5 GPEs in block 00 to 1F
[ 0.357307] ACPI: \_SB_.PRWL: New power resource
[ 0.358602] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.358617] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
[ 0.358784] acpi PNP0A08:00: _OSC: platform does not support [SHPCHotplug LTR DPC]
[ 0.359089] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME AER PCIeCapability]
[ 0.359102] acpi PNP0A08:00: [Firmware Info]: ECAM [mem 0xf8000000-0xfbffffff] for domain 0000 [bus 00-3f] only partially covers this bridge
[ 0.359650] PCI host bridge to bus 0000:00
[ 0.359655] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
[ 0.359659] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
[ 0.359663] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[ 0.359666] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000cffff window]
[ 0.359669] pci_bus 0000:00: root bus resource [mem 0x000d0000-0x000effff window]
[ 0.359671] pci_bus 0000:00: root bus resource [mem 0x80000000-0xf7ffffff window]
[ 0.359674] pci_bus 0000:00: root bus resource [mem 0xfc000000-0xfeafffff window]
[ 0.359676] pci_bus 0000:00: root bus resource [mem 0xfed45000-0xfed814ff window]
[ 0.359678] pci_bus 0000:00: root bus resource [mem 0xfed81900-0xfed81fff window]
[ 0.359681] pci_bus 0000:00: root bus resource [mem 0xfedc0000-0xfedc0fff window]
[ 0.359683] pci_bus 0000:00: root bus resource [mem 0xfedc6000-0xfedc6fff window]
[ 0.359685] pci_bus 0000:00: root bus resource [mem 0x4a0200000-0xf8ffffffff window]
[ 0.359688] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 0.359703] pci 0000:00:00.0: [1022:1645] type 00 class 0x060000 conventional PCI endpoint
[ 0.359808] pci 0000:00:01.0: [1022:1632] type 00 class 0x060000 conventional PCI endpoint
[ 0.359888] pci 0000:00:01.2: [1022:1647] type 01 class 0x060400 PCIe Root Port
[ 0.359905] pci 0000:00:01.2: PCI bridge to [bus 01]
[ 0.359912] pci 0000:00:01.2: bridge window [mem 0x80700000-0x807fffff]
[ 0.359971] pci 0000:00:01.2: PME# supported from D0 D3hot D3cold
[ 0.360130] pci 0000:00:01.3: [1022:1647] type 01 class 0x060400 PCIe Root Port
[ 0.360147] pci 0000:00:01.3: PCI bridge to [bus 02]
[ 0.360153] pci 0000:00:01.3: bridge window [mem 0x80600000-0x806fffff]
[ 0.360210] pci 0000:00:01.3: PME# supported from D0 D3hot D3cold
[ 0.360363] pci 0000:00:01.4: [1022:1647] type 01 class 0x060400 PCIe Root Port
[ 0.360380] pci 0000:00:01.4: PCI bridge to [bus 03]
[ 0.360386] pci 0000:00:01.4: bridge window [mem 0x80000000-0x801fffff]
[ 0.360443] pci 0000:00:01.4: PME# supported from D0 D3hot D3cold
[ 0.360602] pci 0000:00:08.0: [1022:1632] type 00 class 0x060000 conventional PCI endpoint
[ 0.360686] pci 0000:00:08.1: [1022:1648] type 01 class 0x060400 PCIe Root Port
[ 0.360703] pci 0000:00:08.1: PCI bridge to [bus 04]
[ 0.360708] pci 0000:00:08.1: bridge window [io 0x1000-0x1fff]
[ 0.360711] pci 0000:00:08.1: bridge window [mem 0x80200000-0x805fffff]
[ 0.360719] pci 0000:00:08.1: bridge window [mem 0xf8e0000000-0xf8f01fffff 64bit pref]
[ 0.360727] pci 0000:00:08.1: enabling Extended Tags
[ 0.360771] pci 0000:00:08.1: PME# supported from D0 D3hot D3cold
[ 0.360931] pci 0000:00:08.2: [1022:1648] type 01 class 0x060400 PCIe Root Port
[ 0.360949] pci 0000:00:08.2: PCI bridge to [bus 05]
[ 0.360966] pci 0000:00:08.2: enabling Extended Tags
[ 0.361009] pci 0000:00:08.2: PME# supported from D0 D3hot D3cold
[ 0.361132] pci 0000:00:08.3: [1022:1648] type 01 class 0x060400 PCIe Root Port
[ 0.361149] pci 0000:00:08.3: PCI bridge to [bus 06]
[ 0.361166] pci 0000:00:08.3: enabling Extended Tags
[ 0.361209] pci 0000:00:08.3: PME# supported from D0 D3hot D3cold
[ 0.361363] pci 0000:00:14.0: [1022:790b] type 00 class 0x0c0500 conventional PCI endpoint
[ 0.361506] pci 0000:00:14.3: [1022:790e] type 00 class 0x060100 conventional PCI endpoint
[ 0.361666] pci 0000:00:18.0: [1022:1660] type 00 class 0x060000 conventional PCI endpoint
[ 0.361717] pci 0000:00:18.1: [1022:1661] type 00 class 0x060000 conventional PCI endpoint
[ 0.361770] pci 0000:00:18.2: [1022:1662] type 00 class 0x060000 conventional PCI endpoint
[ 0.361819] pci 0000:00:18.3: [1022:1663] type 00 class 0x060000 conventional PCI endpoint
[ 0.361869] pci 0000:00:18.4: [1022:1664] type 00 class 0x060000 conventional PCI endpoint
[ 0.361918] pci 0000:00:18.5: [1022:1665] type 00 class 0x060000 conventional PCI endpoint
[ 0.361967] pci 0000:00:18.6: [1022:1666] type 00 class 0x060000 conventional PCI endpoint
[ 0.362017] pci 0000:00:18.7: [1022:1667] type 00 class 0x060000 conventional PCI endpoint
[ 0.362153] pci 0000:01:00.0: [2646:5016] type 00 class 0x010802 PCIe Endpoint
[ 0.362206] pci 0000:01:00.0: BAR 0 [mem 0x80700000-0x80703fff 64bit]
[ 0.362424] pci 0000:01:00.0: 31.504 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x4 link at 0000:00:01.2 (capable of 63.012 Gb/s with 16.0 GT/s PCIe x4 link)
[ 0.362605] pci 0000:00:01.2: PCI bridge to [bus 01]
[ 0.362749] pci 0000:02:00.0: [1217:8621] type 00 class 0x080501 PCIe Endpoint
[ 0.362801] pci 0000:02:00.0: BAR 0 [mem 0x80601000-0x80601fff]
[ 0.362805] pci 0000:02:00.0: BAR 1 [mem 0x80600000-0x806007ff]
[ 0.362913] pci 0000:02:00.0: PME# supported from D3hot D3cold
[ 0.369674] pci 0000:00:01.3: PCI bridge to [bus 02]
[ 0.369816] pci 0000:03:00.0: [17cb:1103] type 00 class 0x028000 PCIe Endpoint
[ 0.369870] pci 0000:03:00.0: BAR 0 [mem 0x80000000-0x801fffff 64bit]
[ 0.369978] pci 0000:03:00.0: PME# supported from D0 D3hot D3cold
[ 0.370319] pci 0000:00:01.4: PCI bridge to [bus 03]
[ 0.370605] pci 0000:04:00.0: [1002:1435] type 00 class 0x030000 PCIe Legacy Endpoint
[ 0.370655] pci 0000:04:00.0: BAR 0 [mem 0xf8e0000000-0xf8efffffff 64bit pref]
[ 0.370664] pci 0000:04:00.0: BAR 2 [mem 0xf8f0000000-0xf8f01fffff 64bit pref]
[ 0.370671] pci 0000:04:00.0: BAR 4 [io 0x1000-0x10ff]
[ 0.370678] pci 0000:04:00.0: BAR 5 [mem 0x80500000-0x8057ffff]
[ 0.370692] pci 0000:04:00.0: enabling Extended Tags
[ 0.370775] pci 0000:04:00.0: PME# supported from D1 D2 D3hot D3cold
[ 0.370958] pci 0000:04:00.1: [1002:1640] type 00 class 0x040300 PCIe Legacy Endpoint
[ 0.370993] pci 0000:04:00.1: BAR 0 [mem 0x805c0000-0x805c3fff]
[ 0.371007] pci 0000:04:00.1: enabling Extended Tags
[ 0.371054] pci 0000:04:00.1: PME# supported from D1 D2 D3hot D3cold
[ 0.371168] pci 0000:04:00.2: [1022:1649] type 00 class 0x108000 PCIe Endpoint
[ 0.371205] pci 0000:04:00.2: BAR 2 [mem 0x80400000-0x804fffff]
[ 0.371210] pci 0000:04:00.2: BAR 5 [mem 0x805c4000-0x805c5fff]
[ 0.371219] pci 0000:04:00.2: enabling Extended Tags
[ 0.371378] pci 0000:04:00.3: [1022:162c] type 00 class 0x0c0330 PCIe Endpoint
[ 0.371415] pci 0000:04:00.3: BAR 0 [mem 0x80200000-0x802fffff 64bit]
[ 0.371427] pci 0000:04:00.3: enabling Extended Tags
[ 0.371478] pci 0000:04:00.3: PME# supported from D0 D3hot D3cold
[ 0.371596] pci 0000:04:00.4: [1022:163b] type 00 class 0x0c0330 PCIe Endpoint
[ 0.371634] pci 0000:04:00.4: BAR 0 [mem 0x80300000-0x803fffff 64bit]
[ 0.371648] pci 0000:04:00.4: enabling Extended Tags
[ 0.371701] pci 0000:04:00.4: PME# supported from D0 D3hot D3cold
[ 0.371827] pci 0000:04:00.5: [1022:15e2] type 00 class 0x048000 PCIe Endpoint
[ 0.371862] pci 0000:04:00.5: BAR 0 [mem 0x80580000-0x805bffff]
[ 0.371875] pci 0000:04:00.5: enabling Extended Tags
[ 0.371922] pci 0000:04:00.5: PME# supported from D0 D3hot D3cold
[ 0.372079] pci 0000:00:08.1: PCI bridge to [bus 04]
[ 0.372152] pci 0000:05:00.0: [1022:145a] type 00 class 0x130000 PCIe Endpoint
[ 0.372197] pci 0000:05:00.0: enabling Extended Tags
[ 0.372408] pci 0000:00:08.2: PCI bridge to [bus 05]
[ 0.372478] pci 0000:06:00.0: [1022:145a] type 00 class 0x130000 PCIe Endpoint
[ 0.372523] pci 0000:06:00.0: enabling Extended Tags
[ 0.372730] pci 0000:00:08.3: PCI bridge to [bus 06]
[ 0.373629] ACPI: PCI: Interrupt link LNKA configured for IRQ 0
[ 0.373632] ACPI: PCI: Interrupt link LNKA disabled
[ 0.373766] ACPI: PCI: Interrupt link LNKB configured for IRQ 0
[ 0.373768] ACPI: PCI: Interrupt link LNKB disabled
[ 0.373872] ACPI: PCI: Interrupt link LNKC configured for IRQ 0
[ 0.373874] ACPI: PCI: Interrupt link LNKC disabled
[ 0.374001] ACPI: PCI: Interrupt link LNKD configured for IRQ 0
[ 0.374003] ACPI: PCI: Interrupt link LNKD disabled
[ 0.374121] ACPI: PCI: Interrupt link LNKE configured for IRQ 0
[ 0.374123] ACPI: PCI: Interrupt link LNKE disabled
[ 0.374217] ACPI: PCI: Interrupt link LNKF configured for IRQ 0
[ 0.374219] ACPI: PCI: Interrupt link LNKF disabled
[ 0.374314] ACPI: PCI: Interrupt link LNKG configured for IRQ 0
[ 0.374316] ACPI: PCI: Interrupt link LNKG disabled
[ 0.374411] ACPI: PCI: Interrupt link LNKH configured for IRQ 0
[ 0.374412] ACPI: PCI: Interrupt link LNKH disabled
[ 0.377869] ACPI: EC: interrupt unblocked
[ 0.377872] ACPI: EC: event unblocked
[ 0.377877] ACPI: EC: EC_CMD/EC_SC=0x66, EC_DATA=0x62
[ 0.377879] ACPI: EC: GPE=0xa
[ 0.377882] ACPI: \_SB_.PCI0.LPC0.EC0_: Boot DSDT EC initialization complete
[ 0.377884] ACPI: \_SB_.PCI0.LPC0.EC0_: EC: Used to handle transactions and events
[ 0.377947] iommu: Default domain type: Translated
[ 0.377949] iommu: DMA domain TLB invalidation policy: lazy mode
[ 0.378178] SCSI subsystem initialized
[ 0.378189] libata version 3.00 loaded.
[ 0.378189] ACPI: bus type USB registered
[ 0.378189] usbcore: registered new interface driver usbfs
[ 0.378189] usbcore: registered new interface driver hub
[ 0.378189] usbcore: registered new device driver usb
[ 0.398435] EDAC MC: Ver: 3.0.0
[ 0.398526] efivars: Registered efivars operations
[ 0.398526] NetLabel: Initializing
[ 0.398526] NetLabel: domain hash size = 128
[ 0.398526] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 0.398526] NetLabel: unlabeled traffic allowed by default
[ 0.398526] mctp: management component transport protocol core
[ 0.398526] NET: Registered PF_MCTP protocol family
[ 0.398526] PCI: Using ACPI for IRQ routing
[ 0.401447] PCI: pci_cache_line_size set to 64 bytes
[ 0.401506] resource: Expanded resource Reserved due to conflict with PCI Bus 0000:00
[ 0.401509] e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff]
[ 0.401512] e820: reserve RAM buffer [mem 0x09b00000-0x0bffffff]
[ 0.401514] e820: reserve RAM buffer [mem 0x09f00000-0x0bffffff]
[ 0.401516] e820: reserve RAM buffer [mem 0x69c85018-0x6bffffff]
[ 0.401518] e820: reserve RAM buffer [mem 0x6b368000-0x6bffffff]
[ 0.401519] e820: reserve RAM buffer [mem 0x6c56f000-0x6fffffff]
[ 0.401521] e820: reserve RAM buffer [mem 0x7279c000-0x73ffffff]
[ 0.401523] e820: reserve RAM buffer [mem 0x74077000-0x77ffffff]
[ 0.401525] e820: reserve RAM buffer [mem 0x7877f000-0x7bffffff]
[ 0.401527] e820: reserve RAM buffer [mem 0x7d000000-0x7fffffff]
[ 0.401529] e820: reserve RAM buffer [mem 0x43f380000-0x43fffffff]
[ 0.401600] pci 0000:04:00.0: vgaarb: setting as boot VGA device
[ 0.401600] pci 0000:04:00.0: vgaarb: bridge control possible
[ 0.401600] pci 0000:04:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[ 0.401600] vgaarb: loaded
[ 0.401600] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[ 0.401600] hpet0: 3 comparators, 32-bit 14.318180 MHz counter
[ 0.404029] clocksource: Switched to clocksource tsc-early
[ 0.405254] VFS: Disk quotas dquot_6.6.0
[ 0.405268] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.405300] pnp: PnP ACPI init
[ 0.405300] system 00:00: [mem 0xfec00000-0xfec01fff] could not be reserved
[ 0.405300] system 00:00: [mem 0xfee00000-0xfee00fff] has been reserved
[ 0.405300] system 00:00: [mem 0xa0000000-0xa00fffff] has been reserved
[ 0.405300] system 00:03: [io 0x0400-0x04cf] has been reserved
[ 0.405300] system 00:03: [io 0x04d0-0x04d1] has been reserved
[ 0.405300] system 00:03: [io 0x04d6] has been reserved
[ 0.405300] system 00:03: [io 0x0c00-0x0c01] has been reserved
[ 0.405300] system 00:03: [io 0x0c14] has been reserved
[ 0.405300] system 00:03: [io 0x0c50-0x0c52] has been reserved
[ 0.405300] system 00:03: [io 0x0c6c] has been reserved
[ 0.405300] system 00:03: [io 0x0c6f] has been reserved
[ 0.405300] system 00:03: [io 0x0cd0-0x0cdb] has been reserved
[ 0.405300] system 00:04: [mem 0x000e0000-0x000fffff] could not be reserved
[ 0.405300] system 00:04: [mem 0xff000000-0xffffffff] has been reserved
[ 0.405404] system 00:05: [mem 0xf8000000-0xfbffffff] has been reserved
[ 0.406984] pnp: PnP ACPI: found 6 devices
[ 0.413315] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[ 0.413486] NET: Registered PF_INET protocol family
[ 0.413815] IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[ 0.432464] tcp_listen_portaddr_hash hash table entries: 8192 (order: 5, 131072 bytes, linear)
[ 0.432503] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.432577] TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[ 0.432857] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
[ 0.432965] TCP: Hash tables configured (established 131072 bind 65536)
[ 0.433089] MPTCP token hash table entries: 16384 (order: 6, 393216 bytes, linear)
[ 0.433164] UDP hash table entries: 8192 (order: 7, 524288 bytes, linear)
[ 0.433243] UDP-Lite hash table entries: 8192 (order: 7, 524288 bytes, linear)
[ 0.433338] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.433348] NET: Registered PF_XDP protocol family
[ 0.433367] pci 0000:00:01.2: PCI bridge to [bus 01]
[ 0.433375] pci 0000:00:01.2: bridge window [mem 0x80700000-0x807fffff]
[ 0.433382] pci 0000:00:01.3: PCI bridge to [bus 02]
[ 0.433386] pci 0000:00:01.3: bridge window [mem 0x80600000-0x806fffff]
[ 0.433393] pci 0000:00:01.4: PCI bridge to [bus 03]
[ 0.433397] pci 0000:00:01.4: bridge window [mem 0x80000000-0x801fffff]
[ 0.433406] pci 0000:00:08.1: PCI bridge to [bus 04]
[ 0.433414] pci 0000:00:08.1: bridge window [io 0x1000-0x1fff]
[ 0.433419] pci 0000:00:08.1: bridge window [mem 0x80200000-0x805fffff]
[ 0.433423] pci 0000:00:08.1: bridge window [mem 0xf8e0000000-0xf8f01fffff 64bit pref]
[ 0.433428] pci 0000:00:08.2: PCI bridge to [bus 05]
[ 0.433437] pci 0000:00:08.3: PCI bridge to [bus 06]
[ 0.433447] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window]
[ 0.433450] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window]
[ 0.433453] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[ 0.433456] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000cffff window]
[ 0.433459] pci_bus 0000:00: resource 8 [mem 0x000d0000-0x000effff window]
[ 0.433461] pci_bus 0000:00: resource 9 [mem 0x80000000-0xf7ffffff window]
[ 0.433464] pci_bus 0000:00: resource 10 [mem 0xfc000000-0xfeafffff window]
[ 0.433467] pci_bus 0000:00: resource 11 [mem 0xfed45000-0xfed814ff window]
[ 0.433470] pci_bus 0000:00: resource 12 [mem 0xfed81900-0xfed81fff window]
[ 0.433472] pci_bus 0000:00: resource 13 [mem 0xfedc0000-0xfedc0fff window]
[ 0.433475] pci_bus 0000:00: resource 14 [mem 0xfedc6000-0xfedc6fff window]
[ 0.433478] pci_bus 0000:00: resource 15 [mem 0x4a0200000-0xf8ffffffff window]
[ 0.433480] pci_bus 0000:01: resource 1 [mem 0x80700000-0x807fffff]
[ 0.433483] pci_bus 0000:02: resource 1 [mem 0x80600000-0x806fffff]
[ 0.433486] pci_bus 0000:03: resource 1 [mem 0x80000000-0x801fffff]
[ 0.433489] pci_bus 0000:04: resource 0 [io 0x1000-0x1fff]
[ 0.433491] pci_bus 0000:04: resource 1 [mem 0x80200000-0x805fffff]
[ 0.433494] pci_bus 0000:04: resource 2 [mem 0xf8e0000000-0xf8f01fffff 64bit pref]
[ 0.433683] pci 0000:04:00.1: D0 power state depends on 0000:04:00.0
[ 0.499775] pci 0000:04:00.3: quirk_usb_early_handoff+0x0/0x7d0 took 64533 usecs
[ 0.518016] pci 0000:04:00.4: quirk_usb_early_handoff+0x0/0x7d0 took 17798 usecs
[ 0.518029] PCI: CLS 64 bytes, default 64
[ 0.518048] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 0.518050] software IO TLB: mapped [mem 0x000000006ddef000-0x0000000071def000] (64MB)
[ 0.518109] Trying to unpack rootfs image as initramfs...
[ 0.518352] LVT offset 0 assigned for vector 0x400
[ 0.521811] perf: AMD IBS detected (0x000003ff)
[ 0.539031] Initialise system trusted keyrings
[ 0.539047] Key type blacklist registered
[ 0.539130] workingset: timestamp_bits=41 max_order=22 bucket_order=0
[ 0.539143] zbud: loaded
[ 0.539295] fuse: init (API version 7.42)
[ 0.539423] integrity: Platform Keyring initialized
[ 0.539427] integrity: Machine keyring initialized
[ 0.554416] Key type asymmetric registered
[ 0.554422] Asymmetric key parser 'x509' registered
[ 0.554458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[ 0.554529] io scheduler mq-deadline registered
[ 0.554531] io scheduler kyber registered
[ 0.554547] io scheduler bfq registered
[ 0.559099] ledtrig-cpu: registered to indicate activity on CPUs
[ 0.559217] pcieport 0000:00:01.2: PME: Signaling with IRQ 25
[ 0.559293] pcieport 0000:00:01.2: AER: enabled with IRQ 25
[ 0.559347] pcieport 0000:00:01.2: DPC: enabled with IRQ 25
[ 0.559349] pcieport 0000:00:01.2: DPC: error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 6, DL_ActiveErr+
[ 0.559485] pcieport 0000:00:01.3: PME: Signaling with IRQ 26
[ 0.559543] pcieport 0000:00:01.3: AER: enabled with IRQ 26
[ 0.559596] pcieport 0000:00:01.3: DPC: enabled with IRQ 26
[ 0.559598] pcieport 0000:00:01.3: DPC: error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 6, DL_ActiveErr+
[ 0.559725] pcieport 0000:00:01.4: PME: Signaling with IRQ 27
[ 0.559778] pcieport 0000:00:01.4: AER: enabled with IRQ 27
[ 0.559823] pcieport 0000:00:01.4: DPC: enabled with IRQ 27
[ 0.559825] pcieport 0000:00:01.4: DPC: error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 6, DL_ActiveErr+
[ 0.559953] pcieport 0000:00:08.1: PME: Signaling with IRQ 28
[ 0.560185] pcieport 0000:00:08.2: PME: Signaling with IRQ 29
[ 0.560366] pcieport 0000:00:08.3: PME: Signaling with IRQ 30
[ 0.560481] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 0.561865] ACPI: AC: AC Adapter [ACAD] (on-line)
[ 0.561924] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
[ 0.561948] ACPI: button: Power Button [PWRB]
[ 0.561994] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1
[ 0.562016] ACPI: button: Lid Switch [LID]
[ 0.562063] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[ 0.563292] ACPI: button: Power Button [PWRF]
[ 0.563906] Monitor-Mwait will be used to enter C-1 state
[ 0.565231] Estimated ratio of average max frequency by base frequency (times 1024): 1152
[ 0.565802] thermal LNXTHERM:00: registered as thermal_zone0
[ 0.565806] ACPI: thermal: Thermal Zone [TZ01] (54 C)
[ 0.566081] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[ 0.567067] ACPI: battery: Slot [BAT1] (battery present)
[ 0.568589] Non-volatile memory driver v1.3
[ 0.568594] Linux agpgart interface v0.103
[ 0.568652] ACPI: bus type drm_connector registered
[ 0.570049] xhci_hcd 0000:04:00.3: xHCI Host Controller
[ 0.570057] xhci_hcd 0000:04:00.3: new USB bus registered, assigned bus number 1
[ 0.570168] xhci_hcd 0000:04:00.3: hcc params 0x0110ffe5 hci version 0x110 quirks 0x0000000000000010
[ 0.570396] xhci_hcd 0000:04:00.3: xHCI Host Controller
[ 0.570401] xhci_hcd 0000:04:00.3: new USB bus registered, assigned bus number 2
[ 0.570404] xhci_hcd 0000:04:00.3: Host supports USB 3.1 Enhanced SuperSpeed
[ 0.570461] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.14
[ 0.570464] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.570467] usb usb1: Product: xHCI Host Controller
[ 0.570469] usb usb1: Manufacturer: Linux 6.14.0-rc4-bhie0 xhci-hcd
[ 0.570471] usb usb1: SerialNumber: 0000:04:00.3
[ 0.570601] hub 1-0:1.0: USB hub found
[ 0.570614] hub 1-0:1.0: 1 port detected
[ 0.570762] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[ 0.570791] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.14
[ 0.570794] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.570796] usb usb2: Product: xHCI Host Controller
[ 0.570798] usb usb2: Manufacturer: Linux 6.14.0-rc4-bhie0 xhci-hcd
[ 0.570800] usb usb2: SerialNumber: 0000:04:00.3
[ 0.570911] hub 2-0:1.0: USB hub found
[ 0.570923] hub 2-0:1.0: 1 port detected
[ 0.571128] xhci_hcd 0000:04:00.4: xHCI Host Controller
[ 0.571133] xhci_hcd 0000:04:00.4: new USB bus registered, assigned bus number 3
[ 0.571230] xhci_hcd 0000:04:00.4: USB3 root hub has no ports
[ 0.571234] xhci_hcd 0000:04:00.4: hcc params 0x0128ffe5 hci version 0x110 quirks 0x0000000000000010
[ 0.571452] xhci_hcd 0000:04:00.4: xHCI Host Controller
[ 0.571456] xhci_hcd 0000:04:00.4: new USB bus registered, assigned bus number 4
[ 0.571459] xhci_hcd 0000:04:00.4: Host supports USB 3.0 SuperSpeed
[ 0.571500] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.14
[ 0.571503] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.571505] usb usb3: Product: xHCI Host Controller
[ 0.571507] usb usb3: Manufacturer: Linux 6.14.0-rc4-bhie0 xhci-hcd
[ 0.571509] usb usb3: SerialNumber: 0000:04:00.4
[ 0.571669] hub 3-0:1.0: USB hub found
[ 0.571685] hub 3-0:1.0: 6 ports detected
[ 0.572136] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[ 0.572165] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.14
[ 0.572167] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.572170] usb usb4: Product: xHCI Host Controller
[ 0.572172] usb usb4: Manufacturer: Linux 6.14.0-rc4-bhie0 xhci-hcd
[ 0.572174] usb usb4: SerialNumber: 0000:04:00.4
[ 0.572313] hub 4-0:1.0: USB hub found
[ 0.572323] hub 4-0:1.0: config failed, hub doesn't have any ports! (err -19)
[ 0.572391] usbcore: registered new interface driver usbserial_generic
[ 0.572397] usbserial: USB Serial support registered for generic
[ 0.572575] rtc_cmos 00:01: RTC can wake from S4
[ 0.572843] rtc_cmos 00:01: registered as rtc0
[ 0.572875] rtc_cmos 00:01: setting system clock to 2025-04-17T17:27:49 UTC (1744910869)
[ 0.572913] rtc_cmos 00:01: alarms up to one month, 114 bytes nvram
[ 0.573699] efifb: probing for efifb
[ 0.573709] efifb: BGRT rotation bits set, not showing boot graphics
[ 0.573710] efifb: framebuffer at 0xf8e0000000, using 4160k, total 4160k
[ 0.573712] efifb: mode is 800x1280x32, linelength=3328, pages=1
[ 0.573715] efifb: scrolling: redraw
[ 0.573716] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[ 0.573764] fbcon: Deferring console take-over
[ 0.573766] fb0: EFI VGA frame buffer device
[ 0.573812] hid: raw HID events driver (C) Jiri Kosina
[ 0.573890] drop_monitor: Initializing network drop monitor service
[ 0.574028] NET: Registered PF_INET6 protocol family
[ 0.618668] Freeing initrd memory: 16160K
[ 0.625112] Segment Routing with IPv6
[ 0.625120] RPL Segment Routing with IPv6
[ 0.625153] In-situ OAM (IOAM) with IPv6
[ 0.625223] NET: Registered PF_PACKET protocol family
[ 0.626526] microcode: Current revision: 0x08901003
[ 0.626830] resctrl: L3 allocation detected
[ 0.626833] resctrl: MB allocation detected
[ 0.626835] resctrl: L3 monitoring detected
[ 0.626862] IPI shorthand broadcast: enabled
[ 0.629580] sched_clock: Marking stable (626427743, 393659)->(630187828, -3366426)
[ 0.629822] registered taskstats version 1
[ 0.630443] Loading compiled-in X.509 certificates
[ 0.637231] Loaded X.509 cert 'Build time autogenerated kernel key: 722f0dc99e1533a4681a030e6ef4498f4fb1010c'
[ 0.641558] zswap: loaded using pool zstd/zsmalloc
[ 0.641694] Demotion targets for Node 0: null
[ 0.641880] Key type .fscrypt registered
[ 0.641883] Key type fscrypt-provisioning registered
[ 0.642727] PM: Magic number: 5:993:491
[ 0.647815] RAS: Correctable Errors collector initialized.
[ 0.665393] clk: Disabling unused clocks
[ 0.665401] PM: genpd: Disabling unused power domains
[ 0.667204] Freeing unused decrypted memory: 2044K
[ 0.667749] Freeing unused kernel image (initmem) memory: 3348K
[ 0.667772] Write protecting the kernel read-only data: 32768k
[ 0.668496] Freeing unused kernel image (text/rodata gap) memory: 1756K
[ 0.668673] Freeing unused kernel image (rodata/data gap) memory: 652K
[ 0.733784] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[ 0.733791] rodata_test: all tests were successful
[ 0.733803] Run /init as init process
[ 0.733805] with arguments:
[ 0.733807] /init
[ 0.733809] splash
[ 0.733811] with environment:
[ 0.733812] HOME=/
[ 0.733814] TERM=linux
[ 0.733815] BOOT_IMAGE=/boot/vmlinuz-6.14.0-rc4-bhie0
[ 0.754363] fbcon: Taking over console
[ 0.754416] Console: switching consoles 4-6 to frame buffer device
[ 0.811742] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[ 0.818407] usb 3-3: new full-speed USB device number 2 using xhci_hcd
[ 0.894122] i8042: PNP: PS/2 Controller [PNP0303:KBC0] at 0x60,0x64 irq 1
[ 0.894129] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
[ 0.897753] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.916373] sdhci: Secure Digital Host Controller Interface driver
[ 0.916379] sdhci: Copyright(c) Pierre Ossman
[ 0.916779] nvme nvme0: pci function 0000:01:00.0
[ 0.946577] usb 1-1: New USB device found, idVendor=2109, idProduct=2817, bcdDevice= 7.24
[ 0.946590] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 0.946595] usb 1-1: Product: USB2.0 Hub
[ 0.946600] usb 1-1: Manufacturer: VIA Labs, Inc.
[ 0.946604] usb 1-1: SerialNumber: 000000000
[ 0.974548] usb 3-3: New USB device found, idVendor=28de, idProduct=1205, bcdDevice= 2.00
[ 0.974561] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 0.974566] usb 3-3: Product: Steam Deck Controller
[ 0.974571] usb 3-3: Manufacturer: Valve Software
[ 0.974576] usb 3-3: SerialNumber: MFCB43701A8A
[ 0.979713] nvme nvme0: allocated 64 MiB host memory buffer (16 segments).
[ 0.986905] hub 1-1:1.0: USB hub found
[ 0.987310] hub 1-1:1.0: 5 ports detected
[ 1.013358] nvme nvme0: 8/0/0 default/read/poll queues
[ 1.016513] nvme0n1: p1 p2 p3 p4 p5 p6 p7 p8
[ 1.023263] sdhci-pci 0000:02:00.0: SDHCI controller found [1217:8621] (rev 1)
[ 1.034579] raid6: skipped pq benchmark and selected avx2x4
[ 1.034583] raid6: using avx2x2 recovery algorithm
[ 1.052308] mmc0: SDHCI controller on PCI [0000:02:00.0] using ADMA
[ 1.056812] xor: automatically using best checksumming function avx
[ 1.082271] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[ 1.178739] Btrfs loaded, zoned=yes, fsverity=yes
[ 1.188836] usbcore: registered new interface driver usbhid
[ 1.188847] usbhid: USB HID core driver
[ 1.201740] usb 2-1: New USB device found, idVendor=2109, idProduct=0817, bcdDevice= 7.24
[ 1.201748] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1.201751] usb 2-1: Product: USB3.0 Hub
[ 1.201754] usb 2-1: Manufacturer: VIA Labs, Inc.
[ 1.201757] usb 2-1: SerialNumber: 000000000
[ 1.226811] hub 2-1:1.0: USB hub found
[ 1.227102] hub 2-1:1.0: 4 ports detected
[ 1.467074] tsc: Refined TSC clocksource calibration: 2799.998 MHz
[ 1.467083] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x285c3ee517e, max_idle_ns: 440795257231 ns
[ 1.467145] clocksource: Switched to clocksource tsc
[ 1.582991] BTRFS: device label rootfs devid 1 transid 1397 /dev/nvme0n1p5 (259:5) scanned by mount (361)
[ 1.583362] BTRFS info (device nvme0n1p5): first mount of filesystem 85554fab-77fa-4f7b-b49e-d978fff9151b
[ 1.590546] BTRFS info (device nvme0n1p5): using crc32c (crc32c-x86_64) checksum algorithm
[ 1.590558] BTRFS info (device nvme0n1p5): using free-space-tree
[ 1.663779] usb 1-1.5: new high-speed USB device number 3 using xhci_hcd
[ 1.713206] EXT4-fs (nvme0n1p7): mounted filesystem 368a91d7-d21f-46e7-af44-8b19e8b80834 r/w with ordered data mode. Quota mode: none.
[ 1.736917] overlayfs: "xino" feature enabled using 2 upper inode bits.
[ 1.747050] usb 1-1.5: New USB device found, idVendor=28de, idProduct=2001, bcdDevice= 0.01
[ 1.747096] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1.747102] usb 1-1.5: Product: USB Billboard Device
[ 1.747107] usb 1-1.5: Manufacturer: VIA Labs, Inc.
[ 1.747112] usb 1-1.5: SerialNumber: 0000000000000001
[ 1.846173] systemd[1]: systemd 257.2-1.1-arch running in system mode (+PAM +AUDIT -SELINUX -APPARMOR -IMA +IPE +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF +XKBCOMMON +UTMP -SYSVINIT +LIBARCHIVE)
[ 1.846182] systemd[1]: Detected architecture x86-64.
[ 1.847150] systemd[1]: Hostname set to <steamdeck>.
[ 1.879447] usb 2-1.4: new SuperSpeed USB device number 3 using xhci_hcd
[ 2.066789] systemd[1]: bpf-restrict-fs: LSM BPF program attached
[ 2.150149] usb 2-1.4: New USB device found, idVendor=0b95, idProduct=1790, bcdDevice= 2.00
[ 2.150157] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.150160] usb 2-1.4: Product: AX88179A
[ 2.150162] usb 2-1.4: Manufacturer: ASIX
[ 2.150164] usb 2-1.4: SerialNumber: 00000000000003
[ 2.215836] zram: Added device: zram0
[ 2.323801] systemd[1]: Queued start job for default target Graphical Interface.
[ 2.379368] systemd[1]: Created slice Slice /system/dirmngr.
[ 2.379843] systemd[1]: Created slice Slice /system/getty.
[ 2.380217] systemd[1]: Created slice Slice /system/gpg-agent.
[ 2.380616] systemd[1]: Created slice Slice /system/gpg-agent-browser.
[ 2.380991] systemd[1]: Created slice Slice /system/gpg-agent-extra.
[ 2.381359] systemd[1]: Created slice Slice /system/gpg-agent-ssh.
[ 2.381733] systemd[1]: Created slice Slice /system/keyboxd.
[ 2.382117] systemd[1]: Created slice Slice /system/modprobe.
[ 2.382485] systemd[1]: Created slice Slice /system/systemd-fsck.
[ 2.382867] systemd[1]: Created slice Slice /system/systemd-growfs.
[ 2.383231] systemd[1]: Created slice Slice /system/systemd-zram-setup.
[ 2.383494] systemd[1]: Created slice User and Session Slice.
[ 2.383565] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 2.383610] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 2.383877] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 2.383899] systemd[1]: Expecting device /dev/disk/by-partsets/self/efi...
[ 2.383908] systemd[1]: Expecting device /dev/disk/by-partsets/shared/esp...
[ 2.383916] systemd[1]: Expecting device /dev/disk/by-partsets/shared/home...
[ 2.383923] systemd[1]: Expecting device /dev/tpmrm0...
[ 2.383929] systemd[1]: Expecting device /dev/zram0...
[ 2.383940] systemd[1]: Reached target Local Encrypted Volumes.
[ 2.383955] systemd[1]: Reached target Login Prompts.
[ 2.383969] systemd[1]: Reached target Local Integrity Protected Volumes.
[ 2.383994] systemd[1]: Reached target Path Units.
[ 2.384005] systemd[1]: Reached target Remote File Systems.
[ 2.384022] systemd[1]: Reached target Slice Units.
[ 2.384054] systemd[1]: Reached target Local Verity Protected Volumes.
[ 2.384144] systemd[1]: Listening on Device-mapper event daemon FIFOs.
[ 2.386471] systemd[1]: Listening on Process Core Dump Socket.
[ 2.387028] systemd[1]: Listening on Credential Encryption/Decryption.
[ 2.387149] systemd[1]: Listening on Journal Socket (/dev/log).
[ 2.387237] systemd[1]: Listening on Journal Sockets.
[ 2.387319] systemd[1]: Listening on udev Control Socket.
[ 2.387366] systemd[1]: Listening on udev Kernel Socket.
[ 2.387424] systemd[1]: Listening on User Database Manager Socket.
[ 2.389999] systemd[1]: Mounting Huge Pages File System...
[ 2.391256] systemd[1]: Mounting POSIX Message Queue File System...
[ 2.392431] systemd[1]: Mounting Kernel Debug File System...
[ 2.393529] systemd[1]: Mounting Kernel Trace File System...
[ 2.395520] systemd[1]: Starting Create List of Static Device Nodes...
[ 2.397267] systemd[1]: Starting Load Kernel Module configfs...
[ 2.398989] systemd[1]: Starting Load Kernel Module dm_mod...
[ 2.400669] systemd[1]: Starting Load Kernel Module drm...
[ 2.402378] systemd[1]: Starting Load Kernel Module fuse...
[ 2.404050] systemd[1]: Starting Load Kernel Module loop...
[ 2.404259] systemd[1]: File System Check on Root Device was skipped because of an unmet condition check (ConditionPathIsReadWrite=!/).
[ 2.404327] systemd[1]: Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
[ 2.406442] systemd[1]: Starting Journal Service...
[ 2.408567] systemd[1]: Starting Load Kernel Modules...
[ 2.409809] systemd[1]: Starting Remount Root and Kernel File Systems...
[ 2.411095] systemd[1]: Starting Load udev Rules from Credentials...
[ 2.412356] systemd[1]: Starting Coldplug All udev Devices...
[ 2.415810] systemd[1]: Mounted Huge Pages File System.
[ 2.415964] systemd[1]: Mounted POSIX Message Queue File System.
[ 2.416078] systemd[1]: Mounted Kernel Debug File System.
[ 2.416183] systemd[1]: Mounted Kernel Trace File System.
[ 2.416525] systemd[1]: Finished Create List of Static Device Nodes.
[ 2.420429] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[ 2.420868] loop: module loaded
[ 2.420928] device-mapper: uevent: version 1.0.3
[ 2.421290] device-mapper: ioctl: 4.49.0-ioctl (2025-01-17) initialised: dm-devel@lists.linux.dev
[ 2.422458] systemd[1]: Finished Load Kernel Module configfs.
[ 2.423009] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
[ 2.423271] systemd[1]: Finished Load Kernel Module dm_mod.
[ 2.423623] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 2.423869] systemd[1]: Finished Load Kernel Module drm.
[ 2.424204] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[ 2.424422] systemd[1]: Finished Load Kernel Module fuse.
[ 2.424716] systemd[1]: modprobe@loop.service: Deactivated successfully.
[ 2.424938] systemd[1]: Finished Load Kernel Module loop.
[ 2.425366] systemd[1]: Finished Load udev Rules from Credentials.
[ 2.457454] systemd[1]: Mounting FUSE Control File System...
[ 2.458941] systemd[1]: Mounting Kernel Configuration File System...
[ 2.460011] systemd[1]: Starting Create Static Device Nodes in /dev gracefully...
[ 2.460907] systemd-journald[503]: Collecting audit messages is disabled.
[ 2.464297] i2c_dev: i2c /dev entries driver
[ 2.465368] systemd[1]: Finished Remount Root and Kernel File Systems.
[ 2.466193] systemd[1]: Mounted FUSE Control File System.
[ 2.466751] systemd[1]: Rebuild Hardware Database was skipped because of an unmet condition check (ConditionNeedsUpdate=/etc).
[ 2.467933] systemd[1]: Starting Load/Save OS Random Seed...
[ 2.468696] systemd[1]: Mounted Kernel Configuration File System.
[ 2.474456] systemd[1]: Starting User Database Manager...
[ 2.482577] systemd[1]: Finished Load/Save OS Random Seed.
[ 2.495550] Asymmetric key parser 'pkcs8' registered
[ 2.496918] systemd[1]: Finished Load Kernel Modules.
[ 2.498287] systemd[1]: Starting Apply Kernel Variables...
[ 2.502704] systemd[1]: Started User Database Manager.
[ 2.508988] systemd[1]: Finished Apply Kernel Variables.
[ 2.514274] systemd[1]: Started Journal Service.
[ 2.672759] zram_generator::setup[573]: Warning: algorithm "zstd" not recognised; consult /sys/block/zram0/comp_algorithm for a list of available ones
[ 2.683228] zram0: detected capacity change from 0 to 15167488
[ 2.725356] AMDI0020:00: ttyS4 at MMIO 0xfedc9000 (irq = 3, base_baud = 3000000) is a 16550A
[ 2.733989] i2c_designware AMDI0010:00: i2c_dw_handle_tx_abort: lost arbitration
[ 2.734122] i2c_designware AMDI0010:00: i2c_dw_handle_tx_abort: lost arbitration
[ 2.734256] i2c_designware AMDI0010:00: i2c_dw_handle_tx_abort: lost arbitration
[ 2.734384] i2c_designware AMDI0010:00: i2c_dw_handle_tx_abort: lost arbitration
[ 2.740587] AMDI0020:04: ttyS5 at MMIO 0xfedd1000 (irq = 15, base_baud = 3000000) is a 16550A
[ 2.743818] serial serial0: tty port ttyS5 registered
[ 2.765407] ACPI: video: Video Device [VGA1] (multi-head: yes rom: no post: no)
[ 2.767526] ccp 0000:04:00.2: enabling device (0000 -> 0002)
[ 2.768151] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0d/LNXVIDEO:01/input/input3
[ 2.769939] ccp 0000:04:00.2: tee enabled
[ 2.770222] ccp 0000:04:00.2: psp enabled
[ 2.912369] piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0
[ 2.912584] piix4_smbus 0000:00:14.0: Using register 0x02 for SMBus port selection
[ 2.918625] piix4_smbus 0000:00:14.0: Auxiliary SMBus Host Controller at 0xb20
[ 2.919308] i2c i2c-6: Successfully instantiated SPD at 0x50
[ 2.920584] i2c i2c-6: Successfully instantiated SPD at 0x51
[ 2.921396] i2c i2c-6: Successfully instantiated SPD at 0x52
[ 2.922976] Adding 7583740k swap on /dev/zram0. Priority:100 extents:1 across:7583740k SSDsc
[ 2.924677] i2c i2c-6: Successfully instantiated SPD at 0x53
[ 2.949010] input: PC Speaker as /devices/platform/pcspkr/input/input4
[ 2.955322] cdc_acm 3-3:1.3: ttyACM0: USB ACM device
[ 2.955415] usbcore: registered new interface driver cdc_acm
[ 2.955418] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 2.956808] input: Valve Software Steam Deck Controller as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.0/0003:28DE:1205.0001/input/input5
[ 2.957027] RAPL PMU: API unit is 2^-32 Joules, 2 fixed counters, 163840 ms ovfl timer
[ 2.957031] RAPL PMU: hw unit of domain package 2^-16 Joules
[ 2.957034] RAPL PMU: hw unit of domain core 2^-16 Joules
[ 2.958810] sp5100_tco: SP5100/SB800 TCO WatchDog Timer Driver
[ 2.959040] sp5100-tco sp5100-tco: Using 0xfed80b00 for watchdog MMIO address
[ 2.959331] sp5100-tco sp5100-tco: initialized. heartbeat=60 sec (nowayout=0)
[ 2.972821] cryptd: max_cpu_qlen set to 1000
[ 2.974433] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input6
[ 3.007247] hid-generic 0003:28DE:1205.0001: input,hidraw0: USB HID v1.11 Keyboard [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input0
[ 3.007424] input: Valve Software Steam Deck Controller as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.1/0003:28DE:1205.0002/input/input7
[ 3.050674] AES CTR mode by8 optimization enabled
[ 3.050777] usbcore: registered new interface driver cdc_ether
[ 3.053321] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 3.057054] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 3.057299] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
[ 3.065958] tpm_crb MSFT0101:00: Disabling hwrng
[ 3.065980] tpm tpm0: tpm_read_log_acpi: Failed to map ACPI memory
[ 3.078579] Bluetooth: Core ver 2.22
[ 3.080233] snd_hda_intel 0000:04:00.1: enabling device (0000 -> 0002)
[ 3.080378] snd_hda_intel 0000:04:00.1: Handle vga_switcheroo audio client
[ 3.091794] max98388 i2c-ADS8388:00: MAX98388 revisionID: 0x41
[ 3.095721] max98388 i2c-ADS8388:01: MAX98388 revisionID: 0x41
[ 3.097460] NET: Registered PF_BLUETOOTH protocol family
[ 3.097465] Bluetooth: HCI device and connection manager initialized
[ 3.097473] Bluetooth: HCI socket layer initialized
[ 3.097477] Bluetooth: L2CAP socket layer initialized
[ 3.097488] Bluetooth: SCO socket layer initialized
[ 3.097650] hid-generic 0003:28DE:1205.0002: input,hidraw1: USB HID v1.11 Mouse [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input1
[ 3.099191] hid-generic 0003:28DE:1205.0003: hiddev96,hidraw2: USB HID v1.11 Device [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input2
[ 3.100411] input: FTS3528:00 2808:1015 Touchscreen as /devices/platform/AMDI0010:01/i2c-1/i2c-FTS3528:00/0018:2808:1015.0004/input/input12
[ 3.100434] input: HD-Audio Generic HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:08.1/0000:04:00.1/sound/card0/input8
[ 3.102519] input: HD-Audio Generic HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:08.1/0000:04:00.1/sound/card0/input9
[ 3.102988] input: HD-Audio Generic HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:08.1/0000:04:00.1/sound/card0/input10
[ 3.104804] input: HD-Audio Generic HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:08.1/0000:04:00.1/sound/card0/input11
[ 3.104969] input: FTS3528:00 2808:1015 as /devices/platform/AMDI0010:01/i2c-1/i2c-FTS3528:00/0018:2808:1015.0004/input/input14
[ 3.106765] hid-generic 0018:2808:1015.0004: input,hidraw3: I2C HID v1.00 Device [FTS3528:00 2808:1015] on i2c-FTS3528:00
[ 3.242089] cdc_ncm 2-1.4:2.0: MAC-Address: 10:82:86:17:bb:af
[ 3.242098] cdc_ncm 2-1.4:2.0: setting rx_max = 16384
[ 3.253776] cdc_ncm 2-1.4:2.0: setting tx_max = 16384
[ 3.273495] cdc_ncm 2-1.4:2.0 eth0: register 'cdc_ncm' at usb-0000:04:00.3-1.4, CDC NCM (NO ZLP), 10:82:86:17:bb:af
[ 3.273705] usbcore: registered new interface driver cdc_ncm
[ 3.280512] kvm_amd: TSC scaling supported
[ 3.280519] kvm_amd: Nested Virtualization enabled
[ 3.280521] kvm_amd: Nested Paging enabled
[ 3.280524] kvm_amd: LBR virtualization supported
[ 3.280527] kvm_amd: SEV enabled (ASIDs 1 - 14)
[ 3.280530] kvm_amd: SEV-ES disabled (ASIDs 0 - 0)
[ 3.280539] kvm_amd: Virtual VMLOAD VMSAVE supported
[ 3.280541] kvm_amd: Virtual GIF supported
[ 3.284646] Bluetooth: HCI UART driver ver 2.3
[ 3.284652] Bluetooth: HCI UART protocol H4 registered
[ 3.284655] Bluetooth: HCI UART protocol BCSP registered
[ 3.284693] Bluetooth: HCI UART protocol LL registered
[ 3.284696] Bluetooth: HCI UART protocol ATH3K registered
[ 3.284714] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 3.284776] Bluetooth: HCI UART protocol Intel registered
[ 3.284877] Bluetooth: HCI UART protocol Broadcom registered
[ 3.284896] Bluetooth: HCI UART protocol QCA registered
[ 3.284899] Bluetooth: HCI UART protocol AG6XX registered
[ 3.284914] Bluetooth: HCI UART protocol Marvell registered
[ 3.285846] dw-apb-uart AMDI0020:04: failed to request DMA
[ 3.290288] Bluetooth: hci0: setting up qca2066
[ 3.293740] Bluetooth: hci0: Frame reassembly failed (-84)
[ 3.299188] usbcore: registered new interface driver cdc_wdm
[ 3.303800] usbcore: registered new interface driver cdc_mbim
[ 3.308262] ath11k_pci 0000:03:00.0: BAR 0 [mem 0x80000000-0x801fffff 64bit]: assigned
[ 3.308282] ath11k_pci 0000:03:00.0: enabling device (0000 -> 0002)
[ 3.308387] ath11k_pci 0000:03:00.0: MSI vectors: 1
[ 3.308394] ath11k_pci 0000:03:00.0: qca2066 hw2.1
[ 3.308941] cdc_ncm 2-1.4:2.0 enp4s0f3u1u4c2: renamed from eth0
[ 3.309183] [debug] qmi_handle_init:
[ 3.318668] NET: Registered PF_QIPCRTR protocol family
[ 3.318811] snd_sof_amd_vangogh 0000:04:00.5: enabling device (0000 -> 0002)
[ 3.319519] [debug] qmi_data_ready RUN QMI WORK
[ 3.319529] [debug] qmi_data_ready_work +++++++++++++
[ 3.319663] snd_sof_amd_vangogh 0000:04:00.5: Firmware paths/files for ipc type 0:
[ 3.319667] snd_sof_amd_vangogh 0000:04:00.5: Topology file: amd/sof-tplg/sof-vangogh-nau8821-max.tplg
[ 3.324497] input: Valve Software Steam Deck Controller as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.0/0003:28DE:1205.0001/input/input15
[ 3.328420] snd_sof_amd_vangogh 0000:04:00.5: Firmware info: version 2:5:0-b10e1
[ 3.328429] snd_sof_amd_vangogh 0000:04:00.5: Firmware: ABI 3:26:0 Kernel ABI 3:23:1
[ 3.360673] input: FTS3528:00 2808:1015 as /devices/platform/AMDI0010:01/i2c-1/i2c-FTS3528:00/0018:2808:1015.0004/input/input16
[ 3.407335] hid-steam 0003:28DE:1205.0001: input,hidraw0: USB HID v1.11 Keyboard [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input0
[ 3.407519] input: FTS3528:00 2808:1015 UNKNOWN as /devices/platform/AMDI0010:01/i2c-1/i2c-FTS3528:00/0018:2808:1015.0004/input/input18
[ 3.430747] hid-multitouch 0018:2808:1015.0004: input,hidraw1: I2C HID v1.00 Device [FTS3528:00 2808:1015] on i2c-FTS3528:00
[ 3.430939] input: Valve Software Steam Deck Controller as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.1/0003:28DE:1205.0002/input/input19
[ 3.431088] hid-steam 0003:28DE:1205.0002: input,hidraw3: USB HID v1.11 Mouse [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input1
[ 3.431495] hid-steam 0003:28DE:1205.0003: hiddev96: USB HID v1.11 Device [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input2
[ 3.448197] mousedev: PS/2 mouse device common for all mice
[ 3.467295] EXT4-fs (nvme0n1p8): Using encoding defined by superblock: utf8-12.1.0 with flags 0x0
[ 3.475554] mhi mhi0: Requested to power ON
[ 3.475577] mhi mhi0: Power on setup success
[ 3.491511] hid-steam 0003:28DE:1205.0003: Steam Controller 'FYZZ4380009C' connected
[ 3.497098] EXT4-fs (nvme0n1p8): mounted filesystem 1bb334e6-3c14-46b3-9bae-d50053587d50 r/w with ordered data mode. Quota mode: none.
[ 3.497659] input: Steam Deck as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.2/0003:28DE:1205.0003/input/input20
[ 3.497770] input: Steam Deck Motion Sensors as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.2/0003:28DE:1205.0003/input/input21
[ 3.498004] hid-steam 0003:28DE:1205.0005: hidraw2: USB HID v1.11 Device [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input2
[ 3.510935] EXT4-fs (nvme0n1p8): resizing filesystem from 247265617 to 247265617 blocks
[ 3.511008] Adding 20971516k swap on /home/swapfile. Priority:-2 extents:859 across:195011112k SS
[ 3.541736] mhi_fw_load_handler firmware ath11k/QCA206X/hw2.1/amss.bin
[ 3.570893] i2c_designware AMDI0010:00: i2c_dw_handle_tx_abort: lost arbitration
[ 3.573793] mhi mhi0: Wait for device to enter SBL or Mission mode
[ 3.624340] Bluetooth: hci0: QCA Product ID :0x00000013
[ 3.624349] Bluetooth: hci0: QCA SOC Version :0x400c0210
[ 3.624353] Bluetooth: hci0: QCA ROM Version :0x00000201
[ 3.624357] Bluetooth: hci0: QCA Patch Version:0x000038e6
[ 3.624362] Bluetooth: hci0: QCA controller version 0x02100201
[ 3.624368] Bluetooth: hci0: QCA Downloading qca/hpbtfw21.tlv
[ 4.364113] Bluetooth: hci0: QCA Downloading qca/hpnv21.309
[ 4.533359] Bluetooth: hci0: QCA setup on UART is completed
[ 4.533452] Bluetooth: hci0: HFP non-HCI data transport is supported
[ 4.591705] systemd-journald[503]: Received client request to flush runtime journal.
[ 6.053122] amd_atl: AMD Address Translation Library initialized
[ 6.053274] intel_rapl_common: Found RAPL domain package
[ 6.053280] intel_rapl_common: Found RAPL domain core
[ 6.053846] snd_sof_amd_vangogh 0000:04:00.5: Topology: ABI 3:26:0 Kernel ABI 3:23:1
[ 6.054194] sof_mach nau8821-max: ASoC: Parent card not yet available, widget card binding deferred
[ 6.054479] snd_sof_amd_vangogh 0000:04:00.5: ACP_HS config ACP1 channel 2 rate 48000 tdm_mode 0
[ 6.054495] snd_sof_amd_vangogh 0000:04:00.5: ACP_BT config ACP2 channel 2 rate 48000 tdm_mode 0
[ 6.054503] snd_sof_amd_vangogh 0000:04:00.5: ACP_BT config ACP2 channel 2 rate 48000 tdm_mode 0
[ 6.054510] snd_sof_amd_vangogh 0000:04:00.5: ACP_SP config ACP0 channel 2 rate 48000 tdm_mode 0
[ 6.054516] snd_sof_amd_vangogh 0000:04:00.5: ACP_HS config ACP1 channel 2 rate 48000 tdm_mode 0
[ 6.054523] snd_sof_amd_vangogh 0000:04:00.5: ACP_SP config ACP0 channel 2 rate 48000 tdm_mode 0
[ 6.067031] [drm] amdgpu kernel modesetting enabled.
[ 6.071095] [debug] qmi_data_ready RUN QMI WORK
[ 6.071107] [debug] qmi_data_ready_work +++++++++++++
[ 6.071112] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 6.071117] [debug] ath11k_qmi_driver_event_work -----------------
[ 6.072350] [debug] qmi_data_ready RUN QMI WORK
[ 6.072373] [debug] qmi_data_ready_work +++++++++++++
[ 6.072380] [debug] qmi_handle_message
[ 6.073633] [debug] qmi_data_ready RUN QMI WORK
[ 6.073649] [debug] qmi_data_ready_work +++++++++++++
[ 6.073654] [debug] qmi_handle_message
[ 6.073659] [debug] qmi_data_ready RUN QMI WORK
[ 6.073665] [debug] qmi_data_ready_work +++++++++++++
[ 6.073670] [debug] qmi_handle_message
[ 6.073672] [debug] qmi_invoke_handler
[ 6.073675] [debug] invoking handler 53
[ 6.073677]
[debug] ath11k_qmi_msg_mem_request_cb
[ 6.073680] [debug] ath11k_qmi_msg_mem_request_cb alloc
[ 6.073681] [debug] ath11k_qmi_alloc_target_mem_chunk 2 target_mem_delayed: 0
[ 6.073684] [debug] ath11k_qmi_alloc_target_mem_chunk 0
[ 6.073685] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.073689] [debug] ath11k_qmi_alloc_target_mem_chunk 6799360 **dma_alloc_coherent** 1 0
[ 6.073692] [debug] ath11k_qmi_alloc_target_mem_chunk free and return
[ 6.073694] [debug] ath11k_qmi_free_target_mem_chunk 2
[ 6.073695] [debug] ath11k_qmi_free_target_mem_chunk 0
[ 6.073697] [debug] ath11k_qmi_free_target_mem_chunk 0 skip 0
[ 6.073698] [debug] ath11k_qmi_free_target_mem_chunk 1
[ 6.073700] [debug] ath11k_qmi_free_target_mem_chunk 0 skip 0
[ 6.073702] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 6.073706] [debug] ath11k_qmi_driver_event_work -----------------
[ 6.073708] [debug] ath11k_qmi_driver_event_work: ATH11K_QMI_EVENT_REQUEST_MEM
[ 6.073710] [debug] ath11k_qmi_respond_fw_mem_request
[ 6.073712] [debug] ath11k_qmi_respond_fw_mem_request: delayed = true
[ 6.074956] [debug] qmi_data_ready RUN QMI WORK
[ 6.074966] [debug] qmi_data_ready_work +++++++++++++
[ 6.074969] [debug] qmi_handle_message
[ 6.074971] [debug] qmi_data_ready RUN QMI WORK
[ 6.074977] [debug] ath11k_qmi_respond_fw_mem_request: expected error response
[ 6.074980] [debug] qmi_handle_message
[ 6.074982] [debug] qmi_invoke_handler
[ 6.074987] [debug] invoking handler 53
[ 6.074988]
[debug] ath11k_qmi_msg_mem_request_cb
[ 6.074990] [debug] ath11k_qmi_msg_mem_request_cb alloc
[ 6.074992] [debug] ath11k_qmi_alloc_target_mem_chunk 22 target_mem_delayed: 1
[ 6.074994] [debug] ath11k_qmi_alloc_target_mem_chunk 0
[ 6.074995] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075089] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 e6e00000
[ 6.075091] [debug] ath11k_qmi_alloc_target_mem_chunk 1
[ 6.075093] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075176] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 e6e80000
[ 6.075178] [debug] ath11k_qmi_alloc_target_mem_chunk 2
[ 6.075180] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075260] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 e6f00000
[ 6.075263] [debug] ath11k_qmi_alloc_target_mem_chunk 3
[ 6.075264] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075347] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 e6f80000
[ 6.075349] [debug] ath11k_qmi_alloc_target_mem_chunk 4
[ 6.075351] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075437] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 81400000
[ 6.075439] [debug] ath11k_qmi_alloc_target_mem_chunk 5
[ 6.075440] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075531] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 81480000
[ 6.075534] [debug] ath11k_qmi_alloc_target_mem_chunk 6
[ 6.075535] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075628] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 81500000
[ 6.075631] [debug] ath11k_qmi_alloc_target_mem_chunk 7
[ 6.075632] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075724] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 81580000
[ 6.075726] [debug] ath11k_qmi_alloc_target_mem_chunk 8
[ 6.075727] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075821] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 81600000
[ 6.075823] [debug] ath11k_qmi_alloc_target_mem_chunk 9
[ 6.075825] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.075920] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 81680000
[ 6.075922] [debug] ath11k_qmi_alloc_target_mem_chunk 10
[ 6.075923] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076005] [debug] ath11k_qmi_alloc_target_mem_chunk 360448 **dma_alloc_coherent** 1 81700000
[ 6.076007] [debug] ath11k_qmi_alloc_target_mem_chunk 11
[ 6.076009] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076034] [debug] ath11k_qmi_alloc_target_mem_chunk 131072 **dma_alloc_coherent** 1 e6dc0000
[ 6.076036] [debug] ath11k_qmi_alloc_target_mem_chunk 12
[ 6.076037] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076126] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 4 81780000
[ 6.076128] [debug] ath11k_qmi_alloc_target_mem_chunk 13
[ 6.076129] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076219] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 4 81800000
[ 6.076222] [debug] ath11k_qmi_alloc_target_mem_chunk 14
[ 6.076223] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076317] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 4 81880000
[ 6.076320] [debug] ath11k_qmi_alloc_target_mem_chunk 15
[ 6.076321] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076413] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 4 81900000
[ 6.076415] [debug] ath11k_qmi_alloc_target_mem_chunk 16
[ 6.076417] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076506] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 4 81980000
[ 6.076508] [debug] ath11k_qmi_alloc_target_mem_chunk 17
[ 6.076510] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076601] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 4 81a00000
[ 6.076603] [debug] ath11k_qmi_alloc_target_mem_chunk 18
[ 6.076604] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076694] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 4 81a80000
[ 6.076696] [debug] ath11k_qmi_alloc_target_mem_chunk 19
[ 6.076698] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076792] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 4 81b00000
[ 6.076795] [debug] ath11k_qmi_alloc_target_mem_chunk 20
[ 6.076796] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076840] [debug] ath11k_qmi_alloc_target_mem_chunk 180224 **dma_alloc_coherent** 4 81b80000
[ 6.076842] [debug] ath11k_qmi_alloc_target_mem_chunk 21
[ 6.076844] [debug] ath11k_qmi_alloc_target_mem_chunk: vaddr is null
[ 6.076942] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 **dma_alloc_coherent** 1 81c00000
[ 6.076945] [debug] ath11k_qmi_alloc_target_mem_chunk return
[ 6.076947] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 6.076965] [debug] ath11k_qmi_driver_event_work -----------------
[ 6.076967] [debug] ath11k_qmi_driver_event_work: ATH11K_QMI_EVENT_REQUEST_MEM
[ 6.076969] [debug] ath11k_qmi_respond_fw_mem_request
[ 6.076973] [debug] ath11k_qmi_respond_fw_mem_request: delayed = false mem_seg_count: 22
[ 6.076984] [debug] qmi_data_ready_work +++++++++++++
[ 6.078944] amdgpu: Virtual CRAT table created for CPU
[ 6.078963] amdgpu: Topology: Add CPU node
[ 6.079138] amdgpu 0000:04:00.0: enabling device (0006 -> 0007)
[ 6.079200] [drm] initializing kernel modesetting (IP DISCOVERY 0x1002:0x1435 0x1002:0x0123 0xAE).
[ 6.080323] [drm] register mmio base: 0x80500000
[ 6.080326] [drm] register mmio size: 524288
[ 6.080715] [debug] qmi_data_ready RUN QMI WORK
[ 6.080735] [debug] qmi_data_ready RUN QMI WORK
[ 6.080736] [debug] qmi_data_ready_work +++++++++++++
[ 6.080748] [debug] qmi_handle_message
[ 6.080760] [debug] qmi_handle_message
[ 6.080764] [debug] qmi_invoke_handler
[ 6.080768] [debug] invoking handler 55
[ 6.080773] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 6.080783] [debug] qmi_data_ready_work +++++++++++++
[ 6.080782] [debug] ath11k_qmi_driver_event_work -----------------
[ 6.082784] max98388 i2c-ADS8388:00: Reset completed (retry:0)
[ 6.086065] amdgpu 0000:04:00.0: amdgpu: detected ip block number 0 <nv_common>
[ 6.086069] amdgpu 0000:04:00.0: amdgpu: detected ip block number 1 <gmc_v10_0>
[ 6.086071] amdgpu 0000:04:00.0: amdgpu: detected ip block number 2 <navi10_ih>
[ 6.086074] amdgpu 0000:04:00.0: amdgpu: detected ip block number 3 <psp>
[ 6.086076] amdgpu 0000:04:00.0: amdgpu: detected ip block number 4 <smu>
[ 6.086079] amdgpu 0000:04:00.0: amdgpu: detected ip block number 5 <dm>
[ 6.086082] amdgpu 0000:04:00.0: amdgpu: detected ip block number 6 <gfx_v10_0>
[ 6.086084] amdgpu 0000:04:00.0: amdgpu: detected ip block number 7 <sdma_v5_2>
[ 6.086087] amdgpu 0000:04:00.0: amdgpu: detected ip block number 8 <vcn_v3_0>
[ 6.086089] amdgpu 0000:04:00.0: amdgpu: detected ip block number 9 <jpeg_v3_0>
[ 6.086109] amdgpu 0000:04:00.0: amdgpu: Fetched VBIOS from VFCT
[ 6.086112] amdgpu: ATOM BIOS: 113-AMDSphJupiter-002
[ 6.090701] [debug] qmi_data_ready RUN QMI WORK
[ 6.090742] [debug] qmi_data_ready_work +++++++++++++
[ 6.090754] [debug] qmi_handle_message
[ 6.090782] ath11k_pci 0000:03:00.0: chip_id 0x2 chip_family 0xb board_id 0x309 soc_id 0x400c0210
[ 6.090789] ath11k_pci 0000:03:00.0: fw_version 0x110e7fff fw_build_timestamp 2024-05-28 15:10 fw_build_id WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
[ 6.094741] [debug] qmi_data_ready RUN QMI WORK
[ 6.094753] [debug] qmi_data_ready_work +++++++++++++
[ 6.094761] [debug] qmi_handle_message
[ 6.095597] max98388 i2c-ADS8388:01: Reset completed (retry:0)
[ 6.096122] [debug] qmi_data_ready RUN QMI WORK
[ 6.096132] [debug] qmi_data_ready_work +++++++++++++
[ 6.096145] [debug] qmi_handle_message
[ 6.096945] acp-headset-codec: codec dai name = nau8821-hifi
[ 6.097363] [debug] qmi_data_ready RUN QMI WORK
[ 6.097373] [debug] qmi_data_ready_work +++++++++++++
[ 6.097380] [debug] qmi_handle_message
[ 6.097670] Console: switching consoles 4-6 to dummy device
[ 6.097708] amdgpu 0000:04:00.0: vgaarb: deactivate vga console
[ 6.097712] amdgpu 0000:04:00.0: amdgpu: Trusted Memory Zone (TMZ) feature disabled as experimental (default)
[ 6.097753] [drm] vm size is 262144 GB, 4 levels, block size is 9-bit, fragment size is 9-bit
[ 6.097761] amdgpu 0000:04:00.0: amdgpu: VRAM: 1024M 0x000000F400000000 - 0x000000F43FFFFFFF (1024M used)
[ 6.097765] amdgpu 0000:04:00.0: amdgpu: GART: 1024M 0x0000000000000000 - 0x000000003FFFFFFF
[ 6.097773] [drm] Detected VRAM RAM=1024M, BAR=1024M
[ 6.097775] [drm] RAM width 128bits LPDDR5
[ 6.097939] [drm] amdgpu: 1024M of VRAM memory ready
[ 6.097943] [drm] amdgpu: 8128M of GTT memory ready.
[ 6.097983] [drm] GART: num cpu pages 262144, num gpu pages 262144
[ 6.098659] [drm] PCIE GART of 1024M enabled (table at 0x000000F43FC00000).
[ 6.098723] [debug] qmi_data_ready RUN QMI WORK
[ 6.098731] [debug] qmi_data_ready_work +++++++++++++
[ 6.098738] [debug] qmi_handle_message
[ 6.099228] input: sof-nau8821-max Headset Jack as /devices/pci0000:00/0000:00:08.1/0000:04:00.5/nau8821-max/sound/card1/input22
[ 6.099725] [drm] Loading DMUB firmware via PSP: version=0x0300000A
[ 6.100643] [drm] use_doorbell being set to: [true]
[ 6.100696] [drm] Found VCN firmware Version ENC: 1.27 DEC: 2 VEP: 0 Revision: 0
[ 6.104774] [debug] qmi_data_ready RUN QMI WORK
[ 6.104789] [debug] qmi_data_ready_work +++++++++++++
[ 6.104797] [debug] qmi_handle_message
[ 6.106204] [debug] qmi_data_ready RUN QMI WORK
[ 6.106216] [debug] qmi_data_ready_work +++++++++++++
[ 6.106222] [debug] qmi_handle_message
[ 6.107605] [debug] qmi_data_ready RUN QMI WORK
[ 6.107621] [debug] qmi_data_ready_work +++++++++++++
[ 6.107635] [debug] qmi_handle_message
[ 6.108851] [debug] qmi_data_ready RUN QMI WORK
[ 6.108868] [debug] qmi_data_ready_work +++++++++++++
[ 6.108875] [debug] qmi_handle_message
[ 6.110223] [debug] qmi_data_ready RUN QMI WORK
[ 6.110230] [debug] qmi_data_ready_work +++++++++++++
[ 6.110236] [debug] qmi_handle_message
[ 6.111581] [debug] qmi_data_ready RUN QMI WORK
[ 6.111594] [debug] qmi_data_ready_work +++++++++++++
[ 6.111600] [debug] qmi_handle_message
[ 6.112943] [debug] qmi_data_ready RUN QMI WORK
[ 6.112953] [debug] qmi_data_ready_work +++++++++++++
[ 6.112957] [debug] qmi_handle_message
[ 6.114284] [debug] qmi_data_ready RUN QMI WORK
[ 6.114292] [debug] qmi_data_ready_work +++++++++++++
[ 6.114302] [debug] qmi_handle_message
[ 6.115515] [debug] qmi_data_ready RUN QMI WORK
[ 6.115529] [debug] qmi_data_ready_work +++++++++++++
[ 6.115533] [debug] qmi_handle_message
[ 6.124610] amdgpu 0000:04:00.0: amdgpu: reserve 0xa00000 from 0xf43e000000 for PSP TMR
[ 6.124672] [debug] qmi_data_ready RUN QMI WORK
[ 6.124684] [debug] qmi_data_ready_work +++++++++++++
[ 6.124690] [debug] qmi_handle_message
[ 6.127379] [debug] qmi_data_ready RUN QMI WORK
[ 6.127393] [debug] qmi_data_ready_work +++++++++++++
[ 6.127395] [debug] qmi_data_ready RUN QMI WORK
[ 6.127400] [debug] qmi_handle_message
[ 6.127406] [debug] qmi_handle_message
[ 6.127408] [debug] qmi_invoke_handler
[ 6.127411] [debug] invoking handler 56
[ 6.127413] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 6.127418] [debug] qmi_data_ready_work +++++++++++++
[ 6.128667] [debug] qmi_data_ready RUN QMI WORK
[ 6.128681] [debug] qmi_data_ready_work +++++++++++++
[ 6.128693] [debug] qmi_handle_message
[ 6.129884] [debug] qmi_data_ready RUN QMI WORK
[ 6.129889] [debug] qmi_data_ready_work +++++++++++++
[ 6.129892] [debug] qmi_handle_message
[ 6.161787] [debug] qmi_data_ready RUN QMI WORK
[ 6.163050] [debug] qmi_data_ready_work +++++++++++++
[ 6.163063] [debug] qmi_handle_message
[ 6.168384] ath11k_pci 0000:03:00.0: leaving PCI ASPM disabled to avoid MHI M2 problems
[ 6.168691] SteamOS System Info: SteamOS
[ 6.225164] amdgpu 0000:04:00.0: amdgpu: SMU is initialized successfully!
[ 6.225175] [drm] Seamless boot condition check passed
[ 6.226288] [drm] Display Core v3.2.316 initialized on DCN 3.0.1
[ 6.226296] [drm] DP-HDMI FRL PCON supported
[ 6.226985] [drm] DMUB hardware initialized: version=0x0300000A
[ 6.233498] snd_hda_intel 0000:04:00.1: bound 0000:04:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
[ 6.235659] SteamOS System Info: Partition:
[ 6.235669] B
[ 6.235683] SteamOS System Info: Serial Numbers:
[ 6.246102] SteamOS System Info: board_serial: MEDV43701BD9
[ 6.252726] SteamOS System Info: product_serial: FYZZ4380009C
[ 6.260483] ramoops: using module parameters
[ 6.260859] SteamOS System Info: Battery:
[ 6.270258] pstore: Using crash dump compression: deflate
[ 6.270288] pstore: Registered ramoops as persistent store backend
[ 6.270292] ramoops: using 0x500000@0x7e000000, ecc: 0
[ 6.279857] SteamOS System Info: model_name: VDL-M
[ 6.288631] SteamOS System Info: status: Full
[ 6.289740] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 6.289748] Bluetooth: BNEP filters: protocol multicast
[ 6.289755] Bluetooth: BNEP socket layer initialized
[ 6.291096] Bluetooth: MGMT ver 1.23
[ 6.295891] SteamOS System Info: capacity: 98
[ 6.295931] SteamOS System Info: Boot Config:
[ 6.305058] NET: Registered PF_ALG protocol family
[ 6.320905] SteamOS System Info: A boot-attempts 0
[ 6.327451] SteamOS System Info: A boot-count 142
[ 6.333133] SteamOS System Info: A boot-requested-at 20250318160618
[ 6.342481] SteamOS System Info: A boot-time 20250319112542
[ 6.350729] SteamOS System Info: A comment [2025-03-19 16:25:42 +0500] bootconf mode: boot-ok
[ 6.360313] SteamOS System Info: A image-invalid 0
[ 6.366320] SteamOS System Info: B boot-attempts 1
[ 6.375342] SteamOS System Info: B boot-count 150
[ 6.387517] SteamOS System Info: B boot-requested-at 20250320103945
[ 6.397800] SteamOS System Info: B boot-time 20250417165900
[ 6.405726] SteamOS System Info: B comment [2025-04-17 21:59:00 +0500] bootconf mode: boot-ok
[ 6.414527] SteamOS System Info: B image-invalid 0
[ 6.442130] [debug] ath11k_qmi_driver_event_work -----------------
[ 6.449585] [drm] kiq ring mec 2 pipe 1 q 0
[ 6.462319] kfd kfd: amdgpu: Allocated 3969056 bytes on gart
[ 6.462361] kfd kfd: amdgpu: Total number of KFD nodes to be created: 1
[ 6.462639] amdgpu: Virtual CRAT table created for GPU
[ 6.462751] amdgpu: Topology: Add dGPU node [0x1435:0x1002]
[ 6.462756] kfd kfd: amdgpu: added device 1002:1435
[ 6.462778] amdgpu 0000:04:00.0: amdgpu: SE 1, SH per SE 1, CU per SH 8, active_cu_number 8
[ 6.462785] amdgpu 0000:04:00.0: amdgpu: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
[ 6.462789] amdgpu 0000:04:00.0: amdgpu: ring gfx_0.1.0 uses VM inv eng 1 on hub 0
[ 6.462792] amdgpu 0000:04:00.0: amdgpu: ring comp_1.0.0 uses VM inv eng 4 on hub 0
[ 6.462795] amdgpu 0000:04:00.0: amdgpu: ring comp_1.1.0 uses VM inv eng 5 on hub 0
[ 6.462798] amdgpu 0000:04:00.0: amdgpu: ring comp_1.2.0 uses VM inv eng 6 on hub 0
[ 6.462801] amdgpu 0000:04:00.0: amdgpu: ring comp_1.3.0 uses VM inv eng 7 on hub 0
[ 6.462804] amdgpu 0000:04:00.0: amdgpu: ring comp_1.0.1 uses VM inv eng 8 on hub 0
[ 6.462807] amdgpu 0000:04:00.0: amdgpu: ring comp_1.1.1 uses VM inv eng 9 on hub 0
[ 6.462811] amdgpu 0000:04:00.0: amdgpu: ring comp_1.2.1 uses VM inv eng 10 on hub 0
[ 6.462814] amdgpu 0000:04:00.0: amdgpu: ring comp_1.3.1 uses VM inv eng 11 on hub 0
[ 6.462818] amdgpu 0000:04:00.0: amdgpu: ring kiq_0.2.1.0 uses VM inv eng 12 on hub 0
[ 6.462821] amdgpu 0000:04:00.0: amdgpu: ring sdma0 uses VM inv eng 13 on hub 0
[ 6.462824] amdgpu 0000:04:00.0: amdgpu: ring vcn_dec_0 uses VM inv eng 0 on hub 8
[ 6.462827] amdgpu 0000:04:00.0: amdgpu: ring vcn_enc_0.0 uses VM inv eng 1 on hub 8
[ 6.462830] amdgpu 0000:04:00.0: amdgpu: ring vcn_enc_0.1 uses VM inv eng 4 on hub 8
[ 6.462832] amdgpu 0000:04:00.0: amdgpu: ring jpeg_dec uses VM inv eng 5 on hub 8
[ 6.466347] amdgpu 0000:04:00.0: amdgpu: Runtime PM not available
[ 6.469359] [drm] Initialized amdgpu 3.61.0 for 0000:04:00.0 on minor 0
[ 6.476657] fbcon: amdgpudrmfb (fb0) is primary device
[ 6.476791] Console: switching consoles 4-6 to colour frame buffer device 160x50
[ 6.476801] amdgpu 0000:04:00.0: [drm] fb0: amdgpudrmfb frame buffer device
[ 6.732638] input: Steam Deck as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.2/0003:28DE:1205.0003/input/input23
[ 6.732979] input: Steam Deck Motion Sensors as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.2/0003:28DE:1205.0003/input/input24
[ 7.754589] wlan0: authenticate with b8:8e:82:94:3d:9c (local address=98:a1:4a:32:45:b6)
[ 7.754599] wlan0: send auth to b8:8e:82:94:3d:9c (try 1/3)
[ 7.760475] wlan0: authenticated
[ 7.763780] wlan0: associate with b8:8e:82:94:3d:9c (try 1/3)
[ 7.766158] wlan0: RX AssocResp from b8:8e:82:94:3d:9c (capab=0x1531 status=0 aid=32)
[ 7.783434] wlan0: associated
[ 9.070755] Bluetooth: RFCOMM TTY layer initialized
[ 9.070773] Bluetooth: RFCOMM socket layer initialized
[ 9.070778] Bluetooth: RFCOMM ver 1.11
[ 12.784817] wlan0: deauthenticating from b8:8e:82:94:3d:9c by local choice (Reason: 15=4WAY_HANDSHAKE_TIMEOUT)
[ 13.004577] wlan0: authenticate with b8:8e:82:94:3d:98 (local address=98:a1:4a:32:45:b6)
[ 13.004588] wlan0: send auth to b8:8e:82:94:3d:98 (try 1/3)
[ 13.008419] wlan0: authenticated
[ 13.010439] wlan0: associate with b8:8e:82:94:3d:98 (try 1/3)
[ 13.015237] wlan0: RX AssocResp from b8:8e:82:94:3d:98 (capab=0x1431 status=0 aid=26)
[ 13.029736] wlan0: associated
[ 13.801189] warning: `iwconfig' uses wireless extensions which will stop working for Wi-Fi 7 hardware; use nl80211
[ 18.146359] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input25
[ 18.187421] nvme nvme0: using unchecked data buffer
[ 18.190780] block nvme0n1: No UUID available providing old NGUID
[ 20.672650] [drm] pre_validate_dsc:1601 MST_DSC dsc precompute is not needed
[ 20.674552] [drm] Failed to add display topology, DTM TA is not initialized.
[ 161.061753] wlan0: deauthenticating from b8:8e:82:94:3d:98 by local choice (Reason: 3=DEAUTH_LEAVING)
[ 161.184078] ------------[ cut here ]------------
[ 161.184086] DMA-API: ath11k_pci 0000:03:00.0: device driver failed to check map error[device address=0x0000000066d6d000] [size=639 bytes] [mapped as single]
[ 161.184098] WARNING: CPU: 0 PID: 0 at kernel/dma/debug.c:1036 check_unmap+0x5bd/0x960
[ 161.184111] Modules linked in: tls uinput snd_seq_dummy snd_hrtimer rfcomm snd_seq snd_seq_device michael_mic nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct ccm algif_aead crypto_null nft_chain_nat des3_ede_x86_64 cbc des_generic ip6table_nat libdes ip6table_mangle ip6table_raw ip6table_security iptable_nat nf_nat md4 nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_raw iptable_security nf_tables ip6table_filter ip6_tables iptable_filter uhid cmac algif_hash algif_skcipher af_alg bnep ramoops reed_solomon qrtr_mhi joydev intel_rapl_msr amd_atl snd_acp_sof_mach mousedev intel_rapl_common snd_sof_probes snd_acp_mach snd_soc_dmic snd_sof_amd_acp63 snd_soc_acpi_amd_match snd_sof_amd_vangogh qrtr snd_sof_amd_acp ath11k_pci amdgpu cdc_mbim snd_amd_sdw_acpi cdc_wdm soundwire_amd ath11k hci_uart soundwire_generic_allocation kvm_amd btqca snd_sof_pci qmi_helpers snd_sof_xtensa_dsp btrtl kvm snd_sof btintel amdxcp hid_multitouch hid_steam
[ 161.184313] polyval_clmulni i2c_algo_bit mac80211 snd_sof_utils polyval_generic drm_ttm_helper btbcm ghash_clmulni_intel soundwire_bus ttm snd_hda_codec_hdmi snd_soc_max98388 snd_soc_nau8821 sha512_ssse3 snd_soc_sdca libarc4 drm_exec gpu_sched sha1_ssse3 cdc_ncm snd_hda_intel aesni_intel snd_intel_dspcfg drm_suballoc_helper snd_soc_core cdc_ether crypto_simd snd_intel_sdw_acpi drm_panel_backlight_quirks bluetooth cfg80211 drm_buddy cryptd snd_hda_codec usbnet atkbd snd_compress drm_display_helper sp5100_tco libps2 ac97_bus snd_pci_acp5x rapl mii hid_generic snd_hda_core wdat_wdt pcspkr cdc_acm vivaldi_fmap cec tpm_crb snd_pcm_dmaengine rfkill snd_hwdep i2c_piix4 snd_acp_config tpm_tis snd_pcm video ccp mhi snd_soc_acpi snd_timer i2c_smbus ltrf216a wmi tpm_tis_core i2c_hid_acpi snd 8250_dw industrialio soundcore i2c_hid mac_hid pkcs8_key_parser hid_playstation led_class_multicolor hid_nintendo ff_memless i2c_dev crypto_user loop dm_mod nfnetlink zram tpm libaescfb ecdh_generic ip_tables x_tables overlay ext4 crc16
[ 161.184474] mbcache jbd2 crc32c_generic vfat fat usbhid btrfs blake2b_generic xor raid6_pq sdhci_pci sdhci_uhs2 serio_raw nvme sdhci cqhci sha256_ssse3 nvme_core i8042 mmc_core serio nvme_auth spi_amd
[ 161.184516] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.14.0-rc4-bhie0 #4 b5d036a5afc80412dd050564c831509879126fa5
[ 161.184521] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024
[ 161.184524] RIP: 0010:check_unmap+0x5bd/0x960
[ 161.184529] Code: 75 03 48 8b 1f 4c 89 0c 24 e8 bf 76 81 00 4c 8b 0c 24 48 89 c6 4d 89 f8 4c 89 f1 48 89 da 48 c7 c7 90 6e a2 89 e8 d3 b2 f1 ff <0f> 0b 48 c7 c7 30 c0 ac 89 e8 25 66 fc ff 8b 75 44 48 8d 7d 48 31
[ 161.184533] RSP: 0018:ffffac26c0003bb0 EFLAGS: 00010086
[ 161.184537] RAX: 0000000000000000 RBX: ffff8d9381a67850 RCX: 0000000000000027
[ 161.184540] RDX: ffff8d96aee20b48 RSI: 0000000000000001 RDI: ffff8d96aee20b40
[ 161.184543] RBP: ffff8d9381054480 R08: 0000000000000000 R09: 0000000000000003
[ 161.184546] R10: ffffac26c0003a38 R11: ffff8d96bef7ffe8 R12: 0000000000000212
[ 161.184548] R13: ffffffff8acffe70 R14: 0000000066d6d000 R15: 000000000000027f
[ 161.184551] FS: 0000000000000000(0000) GS:ffff8d96aee00000(0000) knlGS:0000000000000000
[ 161.184555] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 161.184558] CR2: 00000000c0edf474 CR3: 000000016961e000 CR4: 0000000000350ef0
[ 161.184560] Call Trace:
[ 161.184563] <IRQ>
[ 161.184569] ? __warn+0x89/0x130
[ 161.184575] ? check_unmap+0x5bd/0x960
[ 161.184580] ? report_bug+0x164/0x190
[ 161.184585] ? console_unlock+0x73/0x130
[ 161.184592] ? handle_bug+0x53/0x90
[ 161.184597] ? exc_invalid_op+0x17/0x70
[ 161.184602] ? asm_exc_invalid_op+0x1a/0x20
[ 161.184613] ? check_unmap+0x5bd/0x960
[ 161.184618] ? srso_return_thunk+0x5/0x5f
[ 161.184623] ? asm_common_interrupt+0x26/0x40
[ 161.184630] debug_dma_unmap_page+0x8a/0xa0
[ 161.184638] ? srso_return_thunk+0x5/0x5f
[ 161.184642] ? ath11k_hal_srng_access_end+0x46/0xc0 [ath11k 942184d0bfb41beb5217c05939c9939261983ac0]
[ 161.184671] ? srso_return_thunk+0x5/0x5f
[ 161.184675] ? ath11k_dp_process_rx_err+0x757/0x15c0 [ath11k 942184d0bfb41beb5217c05939c9939261983ac0]
[ 161.184705] ? ath11k_dp_process_reo_status+0x19c/0x2a0 [ath11k 942184d0bfb41beb5217c05939c9939261983ac0]
[ 161.184730] ? srso_return_thunk+0x5/0x5f
[ 161.184735] dma_free_pages+0x41/0xe0
[ 161.184742] ath11k_dp_reo_cmd_free+0x65/0xa0 [ath11k 942184d0bfb41beb5217c05939c9939261983ac0]
[ 161.184769] ath11k_dp_process_reo_status+0x194/0x2a0 [ath11k 942184d0bfb41beb5217c05939c9939261983ac0]
[ 161.184801] ath11k_dp_service_srng+0x2fd/0x310 [ath11k 942184d0bfb41beb5217c05939c9939261983ac0]
[ 161.184831] ath11k_pcic_ext_grp_napi_poll+0x25/0x80 [ath11k 942184d0bfb41beb5217c05939c9939261983ac0]
[ 161.184859] __napi_poll+0x2b/0x1b0
[ 161.184867] net_rx_action+0x337/0x400
[ 161.184872] ? mtree_load+0x266/0x2a0
[ 161.184885] handle_softirqs+0xdf/0x2d0
[ 161.184893] __irq_exit_rcu+0xc5/0xf0
[ 161.184898] common_interrupt+0x85/0xa0
[ 161.184904] </IRQ>
[ 161.184906] <TASK>
[ 161.184909] asm_common_interrupt+0x26/0x40
[ 161.184914] RIP: 0010:cpuidle_enter_state+0xc6/0x410
[ 161.184919] Code: 00 e8 be 71 30 ff e8 89 f1 ff ff 8b 53 04 49 89 c5 0f 1f 44 00 00 31 ff e8 07 ff 2e ff 45 84 ff 0f 85 3a 02 00 00 fb 45 85 f6 <0f> 88 81 01 00 00 49 63 d6 48 8d 04 52 48 8d 04 82 49 8d 0c c4 48
[ 161.184922] RSP: 0018:ffffffff8a203e30 EFLAGS: 00000206
[ 161.184926] RAX: ffff8d96aee00000 RBX: ffff8d9380e2e400 RCX: 000000000000001f
[ 161.184929] RDX: 0000000000000000 RSI: 000000002db6dd91 RDI: 0000000000000000
[ 161.184932] RBP: 0000000000000003 R08: 0000000000000002 R09: 000000000000000f
[ 161.184934] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff8a363320
[ 161.184937] R13: 00000025874e3e30 R14: 0000000000000003 R15: 0000000000000000
[ 161.184948] cpuidle_enter+0x2d/0x40
[ 161.184955] do_idle+0x1a1/0x200
[ 161.184963] cpu_startup_entry+0x29/0x30
[ 161.184968] rest_init+0xc6/0xd0
[ 161.184973] start_kernel+0x757/0xad0
[ 161.184983] x86_64_start_reservations+0x18/0x30
[ 161.184990] x86_64_start_kernel+0xd1/0xe0
[ 161.184995] common_startup_64+0x13e/0x141
[ 161.185006] </TASK>
[ 161.185008] ---[ end trace 0000000000000000 ]---
[ 161.185011] DMA-API: Mapped at:
[ 161.185013] debug_dma_map_page+0x60/0x110
[ 161.185017] dma_alloc_pages+0x51/0x150
[ 161.185021] ath11k_peer_rx_tid_setup+0xf3/0x3a0 [ath11k]
[ 161.185047] ath11k_dp_peer_setup+0x70/0x160 [ath11k]
[ 161.185072] ath11k_mac_op_sta_state+0x1f0/0xb60 [ath11k]
[ 161.387297] PM: suspend entry (deep)
[ 161.399502] Filesystems sync: 0.012 seconds
[ 161.423158] Freezing user space processes
[ 161.424614] Freezing user space processes completed (elapsed 0.001 seconds)
[ 161.424619] OOM killer disabled.
[ 161.424621] Freezing remaining freezable tasks
[ 161.425800] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
[ 161.425830] printk: Suspending console(s) (use no_console_suspend to debug)
[ 162.086118] ACPI: EC: interrupt blocked
[ 162.122756] ACPI: PM: Preparing to enter system sleep state S3
[ 162.123676] ACPI: EC: event blocked
[ 162.123679] ACPI: EC: EC stopped
[ 162.123680] ACPI: PM: Saving platform NVS memory
[ 162.124314] Disabling non-boot CPUs ...
[ 162.126528] smpboot: CPU 7 is now offline
[ 162.129473] smpboot: CPU 6 is now offline
[ 162.132452] smpboot: CPU 5 is now offline
[ 162.135175] smpboot: CPU 4 is now offline
[ 162.137994] smpboot: CPU 3 is now offline
[ 162.140940] smpboot: CPU 2 is now offline
[ 162.144285] smpboot: CPU 1 is now offline
[ 162.145437] Spectre V2 : Update user space SMT mitigation: STIBP off
[ 162.145831] ACPI: PM: Low-level resume complete
[ 162.145859] ACPI: EC: EC started
[ 162.145861] ACPI: PM: Restoring platform NVS memory
[ 162.146265] LVT offset 0 assigned for vector 0x400
[ 162.147037] Enabling non-boot CPUs ...
[ 162.147384] smpboot: Booting Node 0 Processor 1 APIC 0x1
[ 162.150814] Spectre V2 : Update user space SMT mitigation: STIBP always-on
[ 162.150849] CPU1 is up
[ 162.151329] smpboot: Booting Node 0 Processor 2 APIC 0x2
[ 162.155041] CPU2 is up
[ 162.155418] smpboot: Booting Node 0 Processor 3 APIC 0x3
[ 162.159183] CPU3 is up
[ 162.159591] smpboot: Booting Node 0 Processor 4 APIC 0x4
[ 162.163385] CPU4 is up
[ 162.163751] smpboot: Booting Node 0 Processor 5 APIC 0x5
[ 162.167647] CPU5 is up
[ 162.168015] smpboot: Booting Node 0 Processor 6 APIC 0x6
[ 162.171901] CPU6 is up
[ 162.172318] smpboot: Booting Node 0 Processor 7 APIC 0x7
[ 162.176272] CPU7 is up
[ 162.178201] ACPI: PM: Waking up from system sleep state S3
[ 162.179827] ACPI: EC: interrupt unblocked
[ 162.341856] mhi mhi0: Requested to power ON
[ 162.341880] mhi mhi0: Power on setup success
[ 162.657766] mhi_fw_load_handler firmware ath11k/QCA206X/hw2.1/amss.bin
[ 162.657778] mhi_fw_load_handler Firmware changed, new: 5165056 prev: 5349376
[ 162.688620] mhi mhi0: Wait for device to enter SBL or Mission mode
[ 163.317243] ACPI: EC: event unblocked
[ 163.318208] [drm] PCIE GART of 1024M enabled (table at 0x000000F43FC00000).
[ 163.318249] amdgpu 0000:04:00.0: amdgpu: PSP is resuming...
[ 163.328548] max98388 i2c-ADS8388:01: Reset completed (retry:0)
[ 163.328685] [debug] qmi_data_ready RUN QMI WORK
[ 163.328695] [debug] qmi_data_ready_work +++++++++++++
[ 163.328702] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 163.328709] [debug] ath11k_qmi_driver_event_work -----------------
[ 163.328782] max98388 i2c-ADS8388:00: Reset completed (retry:0)
[ 163.329941] [debug] qmi_data_ready RUN QMI WORK
[ 163.329964] [debug] qmi_data_ready_work +++++++++++++
[ 163.329976] [debug] qmi_handle_message
[ 163.331247] [debug] qmi_data_ready RUN QMI WORK
[ 163.331258] [debug] qmi_data_ready RUN QMI WORK
[ 163.331275] [debug] qmi_data_ready_work +++++++++++++
[ 163.331282] [debug] qmi_handle_message
[ 163.331288] [debug] qmi_handle_message
[ 163.331290] [debug] qmi_invoke_handler
[ 163.331295] [debug] invoking handler 53
[ 163.331297]
[debug] ath11k_qmi_msg_mem_request_cb
[ 163.331299] [debug] ath11k_qmi_msg_mem_request_cb alloc
[ 163.331302] [debug] ath11k_qmi_alloc_target_mem_chunk 2 target_mem_delayed: 0
[ 163.331305] [debug] ath11k_qmi_alloc_target_mem_chunk 0
[ 163.331307] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable e6e00000
[ 163.331309] [debug] ath11k_qmi_alloc_target_mem_chunk size didn't match. delay
[ 163.331311] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 163.331317] [debug] ath11k_qmi_driver_event_work -----------------
[ 163.331319] [debug] ath11k_qmi_driver_event_work: ATH11K_QMI_EVENT_REQUEST_MEM
[ 163.331321] [debug] ath11k_qmi_respond_fw_mem_request
[ 163.331325] [debug] ath11k_qmi_respond_fw_mem_request: delayed = true
[ 163.332576] [debug] qmi_data_ready RUN QMI WORK
[ 163.332596] [debug] qmi_data_ready RUN QMI WORK
[ 163.332606] [debug] qmi_data_ready_work +++++++++++++
[ 163.332613] [debug] qmi_handle_message
[ 163.332631] [debug] ath11k_qmi_respond_fw_mem_request: expected error response
[ 163.332632] [debug] qmi_handle_message
[ 163.332634] [debug] qmi_invoke_handler
[ 163.332642] [debug] invoking handler 53
[ 163.332645]
[debug] ath11k_qmi_msg_mem_request_cb
[ 163.332648] [debug] ath11k_qmi_msg_mem_request_cb alloc
[ 163.332650] [debug] ath11k_qmi_alloc_target_mem_chunk 22 target_mem_delayed: 1
[ 163.332653] [debug] ath11k_qmi_alloc_target_mem_chunk 0
[ 163.332655] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable e6e00000
[ 163.332657] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 e6e00000
[ 163.332661] [debug] ath11k_qmi_alloc_target_mem_chunk 1
[ 163.332663] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable e6e80000
[ 163.332665] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 e6e80000
[ 163.332668] [debug] ath11k_qmi_alloc_target_mem_chunk 2
[ 163.332670] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable e6f00000
[ 163.332672] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 e6f00000
[ 163.332675] [debug] ath11k_qmi_alloc_target_mem_chunk 3
[ 163.332677] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable e6f80000
[ 163.332679] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 e6f80000
[ 163.332681] [debug] ath11k_qmi_alloc_target_mem_chunk 4
[ 163.332683] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81400000
[ 163.332685] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 81400000
[ 163.332688] [debug] ath11k_qmi_alloc_target_mem_chunk 5
[ 163.332690] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81480000
[ 163.332692] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 81480000
[ 163.332695] [debug] ath11k_qmi_alloc_target_mem_chunk 6
[ 163.332697] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81500000
[ 163.332699] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 81500000
[ 163.332702] [debug] ath11k_qmi_alloc_target_mem_chunk 7
[ 163.332704] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81580000
[ 163.332706] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 81580000
[ 163.332709] [debug] ath11k_qmi_alloc_target_mem_chunk 8
[ 163.332711] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81600000
[ 163.332713] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 81600000
[ 163.332716] [debug] ath11k_qmi_alloc_target_mem_chunk 9
[ 163.332717] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81680000
[ 163.332719] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 81680000
[ 163.332722] [debug] ath11k_qmi_alloc_target_mem_chunk 10
[ 163.332724] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81700000
[ 163.332726] [debug] ath11k_qmi_alloc_target_mem_chunk 360448 reuse 1 1 360448 81700000
[ 163.332729] [debug] ath11k_qmi_alloc_target_mem_chunk 11
[ 163.332731] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable e6dc0000
[ 163.332733] [debug] ath11k_qmi_alloc_target_mem_chunk 131072 reuse 1 1 131072 e6dc0000
[ 163.332736] [debug] ath11k_qmi_alloc_target_mem_chunk 12
[ 163.332738] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81780000
[ 163.332740] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 4 4 524288 81780000
[ 163.332743] [debug] ath11k_qmi_alloc_target_mem_chunk 13
[ 163.332745] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81800000
[ 163.332747] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 4 4 524288 81800000
[ 163.332749] [debug] ath11k_qmi_alloc_target_mem_chunk 14
[ 163.332751] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81880000
[ 163.332753] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 4 4 524288 81880000
[ 163.332756] [debug] ath11k_qmi_alloc_target_mem_chunk 15
[ 163.332758] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81900000
[ 163.332760] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 4 4 524288 81900000
[ 163.332763] [debug] ath11k_qmi_alloc_target_mem_chunk 16
[ 163.332765] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81980000
[ 163.332767] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 4 4 524288 81980000
[ 163.332770] [debug] ath11k_qmi_alloc_target_mem_chunk 17
[ 163.332772] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81a00000
[ 163.332774] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 4 4 524288 81a00000
[ 163.332776] [debug] ath11k_qmi_alloc_target_mem_chunk 18
[ 163.332778] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81a80000
[ 163.332780] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 4 4 524288 81a80000
[ 163.332783] [debug] ath11k_qmi_alloc_target_mem_chunk 19
[ 163.332785] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81b00000
[ 163.332787] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 4 4 524288 81b00000
[ 163.332790] [debug] ath11k_qmi_alloc_target_mem_chunk 20
[ 163.332792] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81b80000
[ 163.332794] [debug] ath11k_qmi_alloc_target_mem_chunk 180224 reuse 4 4 180224 81b80000
[ 163.332797] [debug] ath11k_qmi_alloc_target_mem_chunk 21
[ 163.332799] [debug] ath11k_qmi_alloc_target_mem_chunk: reusable or not reuseable 81c00000
[ 163.332801] [debug] ath11k_qmi_alloc_target_mem_chunk 524288 reuse 1 1 524288 81c00000
[ 163.332804] [debug] ath11k_qmi_alloc_target_mem_chunk return
[ 163.332806] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 163.332812] [debug] ath11k_qmi_driver_event_work -----------------
[ 163.332814] [debug] ath11k_qmi_driver_event_work: ATH11K_QMI_EVENT_REQUEST_MEM
[ 163.332816] [debug] ath11k_qmi_respond_fw_mem_request
[ 163.332819] [debug] ath11k_qmi_respond_fw_mem_request: delayed = false mem_seg_count: 22
[ 163.336813] [debug] qmi_data_ready RUN QMI WORK
[ 163.336827] [debug] qmi_data_ready RUN QMI WORK
[ 163.336833] [debug] qmi_data_ready_work +++++++++++++
[ 163.336844] [debug] qmi_handle_message
[ 163.336852] [debug] qmi_handle_message
[ 163.336855] [debug] qmi_invoke_handler
[ 163.336858] [debug] invoking handler 55
[ 163.336862] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 163.340739] amdgpu 0000:04:00.0: amdgpu: reserve 0xa00000 from 0xf43e000000 for PSP TMR
[ 163.346828] [debug] qmi_data_ready RUN QMI WORK
[ 163.346865] [debug] qmi_data_ready_work +++++++++++++
[ 163.346876] [debug] qmi_handle_message
[ 163.346910] ath11k_pci 0000:03:00.0: chip_id 0x2 chip_family 0xb board_id 0x309 soc_id 0x400c0210
[ 163.346920] ath11k_pci 0000:03:00.0: fw_version 0x11058f56 fw_build_timestamp 2023-10-11 08:46 fw_build_id CI_WLAN.HSP.1.1-03926.9.1-QCAHSPSWPL_V2_SILICONZ_CE-15
[ 163.385475] nvme nvme0: 8/0/0 default/read/poll queues
[ 163.435660] amdgpu 0000:04:00.0: amdgpu: SMU is resuming...
[ 163.436182] amdgpu 0000:04:00.0: amdgpu: dpm has been disabled
[ 163.439395] amdgpu 0000:04:00.0: amdgpu: SMU is resumed successfully!
[ 163.439670] [drm] kiq ring mec 2 pipe 1 q 0
[ 163.444846] [drm] DMUB hardware initialized: version=0x0300000A
[ 163.574012] usb 3-3: reset full-speed USB device number 2 using xhci_hcd
[ 163.885501] [drm] Failed to add display topology, DTM TA is not initialized.
[ 163.903535] amdgpu 0000:04:00.0: amdgpu: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
[ 163.903542] amdgpu 0000:04:00.0: amdgpu: ring gfx_0.1.0 uses VM inv eng 1 on hub 0
[ 163.903546] amdgpu 0000:04:00.0: amdgpu: ring comp_1.0.0 uses VM inv eng 4 on hub 0
[ 163.903549] amdgpu 0000:04:00.0: amdgpu: ring comp_1.1.0 uses VM inv eng 5 on hub 0
[ 163.903553] amdgpu 0000:04:00.0: amdgpu: ring comp_1.2.0 uses VM inv eng 6 on hub 0
[ 163.903556] amdgpu 0000:04:00.0: amdgpu: ring comp_1.3.0 uses VM inv eng 7 on hub 0
[ 163.903559] amdgpu 0000:04:00.0: amdgpu: ring comp_1.0.1 uses VM inv eng 8 on hub 0
[ 163.903562] amdgpu 0000:04:00.0: amdgpu: ring comp_1.1.1 uses VM inv eng 9 on hub 0
[ 163.903565] amdgpu 0000:04:00.0: amdgpu: ring comp_1.2.1 uses VM inv eng 10 on hub 0
[ 163.903569] amdgpu 0000:04:00.0: amdgpu: ring comp_1.3.1 uses VM inv eng 11 on hub 0
[ 163.903572] amdgpu 0000:04:00.0: amdgpu: ring kiq_0.2.1.0 uses VM inv eng 12 on hub 0
[ 163.903576] amdgpu 0000:04:00.0: amdgpu: ring sdma0 uses VM inv eng 13 on hub 0
[ 163.903579] amdgpu 0000:04:00.0: amdgpu: ring vcn_dec_0 uses VM inv eng 0 on hub 8
[ 163.903582] amdgpu 0000:04:00.0: amdgpu: ring vcn_enc_0.0 uses VM inv eng 1 on hub 8
[ 163.903586] amdgpu 0000:04:00.0: amdgpu: ring vcn_enc_0.1 uses VM inv eng 4 on hub 8
[ 163.903589] amdgpu 0000:04:00.0: amdgpu: ring jpeg_dec uses VM inv eng 5 on hub 8
[ 184.051902] ath11k_pci 0000:03:00.0: timeout while waiting for restart complete
[ 184.051916] ath11k_pci 0000:03:00.0: failed to resume core: -110
[ 184.051923] ath11k_pci 0000:03:00.0: PM: dpm_run_callback(): pci_pm_resume returns -110
[ 184.051945] ath11k_pci 0000:03:00.0: PM: failed to resume async: error -110
[ 187.251911] ath11k_pci 0000:03:00.0: wmi command 16387 timeout
[ 187.251924] ath11k_pci 0000:03:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 187.251933] ath11k_pci 0000:03:00.0: failed to enable dynamic bw: -11
[ 187.251938] ------------[ cut here ]------------
[ 187.251940] Hardware became unavailable upon resume. This could be a software issue prior to suspend or a hardware issue.
[ 187.251998] WARNING: CPU: 0 PID: 2979 at net/mac80211/util.c:1828 ieee80211_reconfig+0xaa/0x1760 [mac80211]
[ 187.252102] Modules linked in: tls uinput snd_seq_dummy snd_hrtimer rfcomm snd_seq snd_seq_device michael_mic nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct ccm algif_aead crypto_null nft_chain_nat des3_ede_x86_64 cbc des_generic ip6table_nat libdes ip6table_mangle ip6table_raw ip6table_security iptable_nat nf_nat md4 nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_raw iptable_security nf_tables ip6table_filter ip6_tables iptable_filter uhid cmac algif_hash algif_skcipher af_alg bnep ramoops reed_solomon qrtr_mhi joydev intel_rapl_msr amd_atl snd_acp_sof_mach mousedev intel_rapl_common snd_sof_probes snd_acp_mach snd_soc_dmic snd_sof_amd_acp63 snd_soc_acpi_amd_match snd_sof_amd_vangogh qrtr snd_sof_amd_acp ath11k_pci amdgpu cdc_mbim snd_amd_sdw_acpi cdc_wdm soundwire_amd ath11k hci_uart soundwire_generic_allocation kvm_amd btqca snd_sof_pci qmi_helpers snd_sof_xtensa_dsp btrtl kvm snd_sof btintel amdxcp hid_multitouch hid_steam
[ 187.252241] polyval_clmulni i2c_algo_bit mac80211 snd_sof_utils polyval_generic drm_ttm_helper btbcm ghash_clmulni_intel soundwire_bus ttm snd_hda_codec_hdmi snd_soc_max98388 snd_soc_nau8821 sha512_ssse3 snd_soc_sdca libarc4 drm_exec gpu_sched sha1_ssse3 cdc_ncm snd_hda_intel aesni_intel snd_intel_dspcfg drm_suballoc_helper snd_soc_core cdc_ether crypto_simd snd_intel_sdw_acpi drm_panel_backlight_quirks bluetooth cfg80211 drm_buddy cryptd snd_hda_codec usbnet atkbd snd_compress drm_display_helper sp5100_tco libps2 ac97_bus snd_pci_acp5x rapl mii hid_generic snd_hda_core wdat_wdt pcspkr cdc_acm vivaldi_fmap cec tpm_crb snd_pcm_dmaengine rfkill snd_hwdep i2c_piix4 snd_acp_config tpm_tis snd_pcm video ccp mhi snd_soc_acpi snd_timer i2c_smbus ltrf216a wmi tpm_tis_core i2c_hid_acpi snd 8250_dw industrialio soundcore i2c_hid mac_hid pkcs8_key_parser hid_playstation led_class_multicolor hid_nintendo ff_memless i2c_dev crypto_user loop dm_mod nfnetlink zram tpm libaescfb ecdh_generic ip_tables x_tables overlay ext4 crc16
[ 187.252411] mbcache jbd2 crc32c_generic vfat fat usbhid btrfs blake2b_generic xor raid6_pq sdhci_pci sdhci_uhs2 serio_raw nvme sdhci cqhci sha256_ssse3 nvme_core i8042 mmc_core serio nvme_auth spi_amd
[ 187.252458] CPU: 0 UID: 0 PID: 2979 Comm: kworker/u32:42 Tainted: G W 6.14.0-rc4-bhie0 #4 b5d036a5afc80412dd050564c831509879126fa5
[ 187.252465] Tainted: [W]=WARN
[ 187.252467] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024
[ 187.252471] Workqueue: async async_run_entry_fn
[ 187.252482] RIP: 0010:ieee80211_reconfig+0xaa/0x1760 [mac80211]
[ 187.252564] Code: 24 e8 8a 7c fb ff 4c 8b 0c 24 85 c0 41 89 c0 0f 84 88 03 00 00 48 c7 c7 c0 4b 23 c1 4c 89 4c 24 08 44 89 04 24 e8 e6 0e 37 c7 <0f> 0b 44 8b 04 24 4c 8b 4c 24 08 eb 47 84 c0 0f 85 7b 01 00 00 c6
[ 187.252567] RSP: 0018:ffffac26cdf37cb0 EFLAGS: 00010286
[ 187.252572] RAX: 0000000000000000 RBX: ffff8d93a2c70538 RCX: 0000000000000027
[ 187.252575] RDX: ffff8d96aee20b48 RSI: 0000000000000001 RDI: ffff8d96aee20b40
[ 187.252577] RBP: ffff8d93a2c703c0 R08: 0000000000000000 R09: 0000000000000003
[ 187.252580] R10: ffffac26cdf37a78 R11: ffff8d96bef7ffe8 R12: 0000000000000001
[ 187.252582] R13: 0000000000000000 R14: ffffffff89b04e70 R15: 0000000000000000
[ 187.252585] FS: 0000000000000000(0000) GS:ffff8d96aee00000(0000) knlGS:0000000000000000
[ 187.252588] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 187.252591] CR2: 000056373d8050c8 CR3: 000000016961e000 CR4: 0000000000350ef0
[ 187.252594] Call Trace:
[ 187.252600] <TASK>
[ 187.252606] ? __warn+0x89/0x130
[ 187.252613] ? ieee80211_reconfig+0xaa/0x1760 [mac80211 db964ab5e36ecb11a5d7693faf270276469472c2]
[ 187.252697] ? report_bug+0x164/0x190
[ 187.252704] ? console_unlock+0xc8/0x130
[ 187.252712] ? handle_bug+0x53/0x90
[ 187.252718] ? exc_invalid_op+0x17/0x70
[ 187.252723] ? asm_exc_invalid_op+0x1a/0x20
[ 187.252735] ? ieee80211_reconfig+0xaa/0x1760 [mac80211 db964ab5e36ecb11a5d7693faf270276469472c2]
[ 187.252816] ? srso_return_thunk+0x5/0x5f
[ 187.252823] ? srso_return_thunk+0x5/0x5f
[ 187.252827] ? srso_return_thunk+0x5/0x5f
[ 187.252831] ? schedule_timeout+0xf0/0x100
[ 187.252840] ? srso_return_thunk+0x5/0x5f
[ 187.252844] ? __wait_for_common+0x179/0x1c0
[ 187.252848] ? __pfx_schedule_timeout+0x10/0x10
[ 187.252857] wiphy_resume+0x85/0x1b0 [cfg80211 77a879f9031ecd270f18a2847ce437dd0a935e75]
[ 187.252932] ? __pfx_wiphy_resume+0x10/0x10 [cfg80211 77a879f9031ecd270f18a2847ce437dd0a935e75]
[ 187.252996] dpm_run_callback+0x8b/0x1e0
[ 187.253006] device_resume+0xb0/0x2b0
[ 187.253012] async_resume+0x1d/0x30
[ 187.253017] async_run_entry_fn+0x34/0x160
[ 187.253023] process_one_work+0x183/0x3a0
[ 187.253033] worker_thread+0x2e1/0x420
[ 187.253041] ? __pfx_worker_thread+0x10/0x10
[ 187.253047] kthread+0xf3/0x270
[ 187.253053] ? srso_return_thunk+0x5/0x5f
[ 187.253058] ? finish_task_switch.isra.0+0x99/0x2d0
[ 187.253065] ? __pfx_kthread+0x10/0x10
[ 187.253071] ret_from_fork+0x34/0x50
[ 187.253079] ? __pfx_kthread+0x10/0x10
[ 187.253083] ret_from_fork_asm+0x1a/0x30
[ 187.253096] </TASK>
[ 187.253098] ---[ end trace 0000000000000000 ]---
[ 187.253220] ------------[ cut here ]------------
[ 187.253223] WARNING: CPU: 0 PID: 2979 at net/mac80211/driver-ops.c:41 drv_stop+0xfd/0x110 [mac80211]
[ 187.253299] Modules linked in: tls uinput snd_seq_dummy snd_hrtimer rfcomm snd_seq snd_seq_device michael_mic nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct ccm algif_aead crypto_null nft_chain_nat des3_ede_x86_64 cbc des_generic ip6table_nat libdes ip6table_mangle ip6table_raw ip6table_security iptable_nat nf_nat md4 nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_raw iptable_security nf_tables ip6table_filter ip6_tables iptable_filter uhid cmac algif_hash algif_skcipher af_alg bnep ramoops reed_solomon qrtr_mhi joydev intel_rapl_msr amd_atl snd_acp_sof_mach mousedev intel_rapl_common snd_sof_probes snd_acp_mach snd_soc_dmic snd_sof_amd_acp63 snd_soc_acpi_amd_match snd_sof_amd_vangogh qrtr snd_sof_amd_acp ath11k_pci amdgpu cdc_mbim snd_amd_sdw_acpi cdc_wdm soundwire_amd ath11k hci_uart soundwire_generic_allocation kvm_amd btqca snd_sof_pci qmi_helpers snd_sof_xtensa_dsp btrtl kvm snd_sof btintel amdxcp hid_multitouch hid_steam
[ 187.253428] polyval_clmulni i2c_algo_bit mac80211 snd_sof_utils polyval_generic drm_ttm_helper btbcm ghash_clmulni_intel soundwire_bus ttm snd_hda_codec_hdmi snd_soc_max98388 snd_soc_nau8821 sha512_ssse3 snd_soc_sdca libarc4 drm_exec gpu_sched sha1_ssse3 cdc_ncm snd_hda_intel aesni_intel snd_intel_dspcfg drm_suballoc_helper snd_soc_core cdc_ether crypto_simd snd_intel_sdw_acpi drm_panel_backlight_quirks bluetooth cfg80211 drm_buddy cryptd snd_hda_codec usbnet atkbd snd_compress drm_display_helper sp5100_tco libps2 ac97_bus snd_pci_acp5x rapl mii hid_generic snd_hda_core wdat_wdt pcspkr cdc_acm vivaldi_fmap cec tpm_crb snd_pcm_dmaengine rfkill snd_hwdep i2c_piix4 snd_acp_config tpm_tis snd_pcm video ccp mhi snd_soc_acpi snd_timer i2c_smbus ltrf216a wmi tpm_tis_core i2c_hid_acpi snd 8250_dw industrialio soundcore i2c_hid mac_hid pkcs8_key_parser hid_playstation led_class_multicolor hid_nintendo ff_memless i2c_dev crypto_user loop dm_mod nfnetlink zram tpm libaescfb ecdh_generic ip_tables x_tables overlay ext4 crc16
[ 187.253564] mbcache jbd2 crc32c_generic vfat fat usbhid btrfs blake2b_generic xor raid6_pq sdhci_pci sdhci_uhs2 serio_raw nvme sdhci cqhci sha256_ssse3 nvme_core i8042 mmc_core serio nvme_auth spi_amd
[ 187.253599] CPU: 0 UID: 0 PID: 2979 Comm: kworker/u32:42 Tainted: G W 6.14.0-rc4-bhie0 #4 b5d036a5afc80412dd050564c831509879126fa5
[ 187.253605] Tainted: [W]=WARN
[ 187.253607] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024
[ 187.253609] Workqueue: async async_run_entry_fn
[ 187.253614] RIP: 0010:drv_stop+0xfd/0x110 [mac80211]
[ 187.253684] Code: 48 85 c0 74 0e 48 8b 78 08 89 ea 48 89 de e8 fa 3c 05 00 65 ff 0d bb 4a f4 3e 0f 85 38 ff ff ff e8 98 9e 31 c7 e9 2e ff ff ff <0f> 0b 5b 5d e9 7a eb 14 c8 66 2e 0f 1f 84 00 00 00 00 00 90 90 90
[ 187.253688] RSP: 0018:ffffac26cdf37c88 EFLAGS: 00010246
[ 187.253691] RAX: 0000000000000000 RBX: ffff8d93a2c70900 RCX: 0000000000000000
[ 187.253694] RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff8d93a2c70900
[ 187.253696] RBP: 0000000000000000 R08: ffffffff8a2c8030 R09: 0000000000000000
[ 187.253699] R10: ffff8d93b261b928 R11: 0000000000000246 R12: ffff8d93a2c70900
[ 187.253701] R13: ffffac26cdf37cd0 R14: 0000000000000000 R15: ffffac26cdf37cd0
[ 187.253704] FS: 0000000000000000(0000) GS:ffff8d96aee00000(0000) knlGS:0000000000000000
[ 187.253707] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 187.253710] CR2: 000056373d8050c8 CR3: 000000016961e000 CR4: 0000000000350ef0
[ 187.253712] Call Trace:
[ 187.253715] <TASK>
[ 187.253718] ? __warn+0x89/0x130
[ 187.253722] ? drv_stop+0xfd/0x110 [mac80211 db964ab5e36ecb11a5d7693faf270276469472c2]
[ 187.253795] ? report_bug+0x164/0x190
[ 187.253801] ? handle_bug+0x53/0x90
[ 187.253806] ? exc_invalid_op+0x17/0x70
[ 187.253811] ? asm_exc_invalid_op+0x1a/0x20
[ 187.253822] ? drv_stop+0xfd/0x110 [mac80211 db964ab5e36ecb11a5d7693faf270276469472c2]
[ 187.253893] ? ieee80211_stop_device+0x71/0x80 [mac80211 db964ab5e36ecb11a5d7693faf270276469472c2]
[ 187.253973] ieee80211_do_stop+0x6e2/0x940 [mac80211 db964ab5e36ecb11a5d7693faf270276469472c2]
[ 187.254053] ? srso_return_thunk+0x5/0x5f
[ 187.254058] ? try_to_wake_up+0x320/0x770
[ 187.254070] cfg80211_stop_p2p_device+0x56/0x150 [cfg80211 77a879f9031ecd270f18a2847ce437dd0a935e75]
[ 187.254136] cfg80211_shutdown_all_interfaces+0xae/0xf0 [cfg80211 77a879f9031ecd270f18a2847ce437dd0a935e75]
[ 187.254201] wiphy_resume+0xc1/0x1b0 [cfg80211 77a879f9031ecd270f18a2847ce437dd0a935e75]
[ 187.254265] ? __pfx_wiphy_resume+0x10/0x10 [cfg80211 77a879f9031ecd270f18a2847ce437dd0a935e75]
[ 187.254329] dpm_run_callback+0x8b/0x1e0
[ 187.254335] device_resume+0xb0/0x2b0
[ 187.254341] async_resume+0x1d/0x30
[ 187.254346] async_run_entry_fn+0x34/0x160
[ 187.254351] process_one_work+0x183/0x3a0
[ 187.254359] worker_thread+0x2e1/0x420
[ 187.254367] ? __pfx_worker_thread+0x10/0x10
[ 187.254372] kthread+0xf3/0x270
[ 187.254377] ? srso_return_thunk+0x5/0x5f
[ 187.254381] ? finish_task_switch.isra.0+0x99/0x2d0
[ 187.254388] ? __pfx_kthread+0x10/0x10
[ 187.254393] ret_from_fork+0x34/0x50
[ 187.254398] ? __pfx_kthread+0x10/0x10
[ 187.254403] ret_from_fork_asm+0x1a/0x30
[ 187.254415] </TASK>
[ 187.254416] ---[ end trace 0000000000000000 ]---
[ 187.254425] ieee80211 phy0: PM: dpm_run_callback(): wiphy_resume [cfg80211] returns -11
[ 187.254495] ieee80211 phy0: PM: failed to resume async: error -11
[ 187.257231] OOM killer enabled.
[ 187.257234] Restarting tasks ... done.
[ 187.258584] random: crng reseeded on system resumption
[ 187.259692] PM: suspend exit
[ 187.259778] [debug] qmi_data_ready RUN QMI WORK
[ 187.259808] [debug] qmi_data_ready_work +++++++++++++
[ 187.259821] [debug] qmi_handle_message
[ 187.261439] [debug] qmi_data_ready RUN QMI WORK
[ 187.261496] [debug] qmi_data_ready_work +++++++++++++
[ 187.261521] [debug] qmi_handle_message
[ 187.262759] [debug] qmi_data_ready RUN QMI WORK
[ 187.262847] [debug] qmi_data_ready_work +++++++++++++
[ 187.262859] [debug] qmi_handle_message
[ 187.264343] [debug] qmi_data_ready RUN QMI WORK
[ 187.264367] [debug] qmi_data_ready_work +++++++++++++
[ 187.264380] [debug] qmi_handle_message
[ 187.269249] [debug] qmi_data_ready RUN QMI WORK
[ 187.269819] [debug] qmi_data_ready_work +++++++++++++
[ 187.269837] [debug] qmi_handle_message
[ 187.271418] [debug] qmi_data_ready RUN QMI WORK
[ 187.271492] [debug] qmi_data_ready_work +++++++++++++
[ 187.271501] [debug] qmi_handle_message
[ 187.273205] [debug] qmi_data_ready RUN QMI WORK
[ 187.274073] [debug] qmi_data_ready_work +++++++++++++
[ 187.274114] [debug] qmi_handle_message
[ 187.275345] [debug] qmi_data_ready RUN QMI WORK
[ 187.275739] [debug] qmi_data_ready_work +++++++++++++
[ 187.275753] [debug] qmi_handle_message
[ 187.277262] [debug] qmi_data_ready RUN QMI WORK
[ 187.277333] [debug] qmi_data_ready_work +++++++++++++
[ 187.277341] [debug] qmi_handle_message
[ 187.278801] [debug] qmi_data_ready RUN QMI WORK
[ 187.278845] [debug] qmi_data_ready_work +++++++++++++
[ 187.278853] [debug] qmi_handle_message
[ 187.283598] [debug] qmi_data_ready RUN QMI WORK
[ 187.283951] [debug] qmi_data_ready_work +++++++++++++
[ 187.283961] [debug] qmi_handle_message
[ 187.285424] [debug] qmi_data_ready RUN QMI WORK
[ 187.285461] [debug] qmi_data_ready_work +++++++++++++
[ 187.285476] [debug] qmi_handle_message
[ 187.286693] [debug] qmi_data_ready RUN QMI WORK
[ 187.287735] [debug] qmi_data_ready_work +++++++++++++
[ 187.287752] [debug] qmi_handle_message
[ 187.297199] [debug] qmi_data_ready RUN QMI WORK
[ 187.297794] [debug] qmi_data_ready_work +++++++++++++
[ 187.297805] [debug] qmi_handle_message
[ 187.299093] [debug] qmi_data_ready RUN QMI WORK
[ 187.299131] [debug] qmi_data_ready RUN QMI WORK
[ 187.299156] [debug] qmi_data_ready_work +++++++++++++
[ 187.299164] [debug] qmi_handle_message
[ 187.299179] [debug] qmi_handle_message
[ 187.299182] [debug] qmi_invoke_handler
[ 187.299186] [debug] invoking handler 56
[ 187.299190] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 187.299191] [debug] ath11k_qmi_driver_event_work -----------------
[ 187.299206] [debug] ath11k_qmi_driver_event_work -----------------
[ 187.310114] [debug] qmi_data_ready RUN QMI WORK
[ 187.310160] [debug] qmi_data_ready_work +++++++++++++
[ 187.310182] [debug] qmi_handle_message
[ 187.311390] [debug] qmi_data_ready RUN QMI WORK
[ 187.311431] [debug] qmi_data_ready_work +++++++++++++
[ 187.311444] [debug] qmi_handle_message
[ 187.343209] [debug] qmi_data_ready RUN QMI WORK
[ 187.343263] [debug] qmi_data_ready_work +++++++++++++
[ 187.343279] [debug] qmi_handle_message
[ 187.346630] ath11k_pci 0000:03:00.0: leaving PCI ASPM disabled to avoid MHI M2 problems
[ 190.451901] ath11k_pci 0000:03:00.0: wmi command 16387 timeout
[ 190.451915] ath11k_pci 0000:03:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 190.451925] ath11k_pci 0000:03:00.0: failed to enable PMF QOS: (-11
[ 192.371737] ath11k_pci 0000:03:00.0: failed to receive wmi unified ready event: -110
[ 192.373504] ath11k_pci 0000:03:00.0: failed to start core: -110
[ 192.376114] [debug] qmi_data_ready RUN QMI WORK
[ 192.376182] [debug] qmi_data_ready_work +++++++++++++
[ 192.376202] [debug] qmi_handle_message
[ 192.376227] [debug] qmi_data_ready RUN QMI WORK
[ 192.376244] [debug] qmi_data_ready_work +++++++++++++
[ 192.376254] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 192.376263] [debug] ath11k_qmi_driver_event_post: RUN event_work
[ 192.376267] ath11k_pci 0000:03:00.0: failed to reconfigure driver on crash recovery
[ 192.376271] [debug] ath11k_qmi_driver_event_work -----------------
[ 254.621848] input: Steam Deck as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.2/0003:28DE:1205.0003/input/input26
[ 254.622108] input: Steam Deck Motion Sensors as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.2/0003:28DE:1205.0003/input/input27
[ 255.008791] [drm] Failed to add display topology, DTM TA is not initialized.
[ 255.565503] [drm] Failed to add display topology, DTM TA is not initialized.
[ 257.818555] [drm] Failed to add display topology, DTM TA is not initialized.
[ 266.117157] input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input28
On 4/18/2025 2:10 AM, Muhammad Usama Anjum wrote: > On 4/14/25 7:14 PM, Jeff Hugo wrote: >> On 4/14/2025 1:32 AM, Muhammad Usama Anjum wrote: >>> On 4/12/25 6:22 AM, Krishna Chaitanya Chundru wrote: >>>> >>>> On 4/12/2025 12:02 AM, Muhammad Usama Anjum wrote: >>>>> On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote: >>>>>> >>>>>> >>>>>> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote: >>>>>>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote: >>>>>>>> >>>>>>>> >>>>>>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote: >>>>>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table >>>>>>>>> allocation. There is a crash report where at resume time, the >>>>>>>>> memory >>>>>>>>> from the dma doesn't get allocated and MHI fails to re-initialize. >>>>>>>>> There may be fragmentation of some kind which fails the allocation >>>>>>>>> call. >>>>>>>>> >>>>>>>>> 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. >>>>>>>>> >>>>>>>>> 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 >>>>>>>> If firmware image will change between suspend and resume ? >>>>>>> Yes, correct. >>>>>>> >>>>>> why the firmware image size will change between suspend & resume? >>>>>> who will update the firmware image after bootup? >>>>>> It is not expected behaviour. >>>>> I was trying to research if the firmware can change or not. I've not >>>>> found any documentation on it. >>>>> >>>>> If the firmare is updated in filesystem before suspend/hibernate, would >>>>> the new firwmare be loaded the next time kernel resumes as the older >>>>> firmware is no where to be found? >>>>> >>>>> What do you think about this? >>>>> >>>> I don't think firmware can be updated before suspend/hibernate. I don't >>>> see any reason why it can be updated. If you think it can be updated >>>> please quote relevant doc. >>> I've not found any documentation on it. Let's wait for others to review >>> and it it cannot be updated, I'll remove this part. >>> >> >> Wouldn't this be trivial to test? Boot the device, go modify the >> firmware on the filesystem, then go through a suspend cycle. > I just tested this. I've used an old firmware from last year vs the > latest one. > > Firmware A: old firmware size: 5349376 > Firmware B: new firmware size: 5165056 > > A here has bigger size. > > 1. I loaded A at boot and then replaced the firmwares in filesystem with > B before syspend. At resume time, B was loaded fine by freeing the > bigger memory area and allocating the smaller one. > > 2. I loaded B and then replaced A in its place before suspend. At resume > time, memory was freed and larger memory was allocated. But driver > wasn't able to initialize correctly: > > [ 184.051902] ath11k_pci 0000:03:00.0: timeout while waiting for > restart complete > [ 184.051916] ath11k_pci 0000:03:00.0: failed to resume core: -110 > [ 184.051923] ath11k_pci 0000:03:00.0: PM: dpm_run_callback(): > pci_pm_resume returns -110 > [ 184.051945] ath11k_pci 0000:03:00.0: PM: failed to resume async: > error -110 > [ 187.251911] ath11k_pci 0000:03:00.0: wmi command 16387 timeout > [ 187.251924] ath11k_pci 0000:03:00.0: failed to send > WMI_PDEV_SET_PARAM cmd > [ 187.251933] ath11k_pci 0000:03:00.0: failed to enable dynamic bw: -11 > > So should we generalize above that changing firmware at > suspend/hibernation time isn't supported. If firmware package is > updated, does user restarts every time? You may want to review how other devices handle this. I can think of these threads as potential reference https://lore.kernel.org/all/CAPM=9twyvq3EWkwUeoTdMMj76u_sRPmUDHWrzbzEZFQ8eL++BQ@mail.gmail.com/ https://lore.kernel.org/all/20250207012531.621369-1-airlied@gmail.com/ -Jeff
On 4/18/25 7:08 PM, Jeff Hugo wrote: > On 4/18/2025 2:10 AM, Muhammad Usama Anjum wrote: >> On 4/14/25 7:14 PM, Jeff Hugo wrote: >>> On 4/14/2025 1:32 AM, Muhammad Usama Anjum wrote: >>>> On 4/12/25 6:22 AM, Krishna Chaitanya Chundru wrote: >>>>> >>>>> On 4/12/2025 12:02 AM, Muhammad Usama Anjum wrote: >>>>>> On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote: >>>>>>> >>>>>>> >>>>>>> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote: >>>>>>>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote: >>>>>>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table >>>>>>>>>> allocation. There is a crash report where at resume time, the >>>>>>>>>> memory >>>>>>>>>> from the dma doesn't get allocated and MHI fails to re- >>>>>>>>>> initialize. >>>>>>>>>> There may be fragmentation of some kind which fails the >>>>>>>>>> allocation >>>>>>>>>> call. >>>>>>>>>> >>>>>>>>>> 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. >>>>>>>>>> >>>>>>>>>> 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 >>>>>>>>> If firmware image will change between suspend and resume ? >>>>>>>> Yes, correct. >>>>>>>> >>>>>>> why the firmware image size will change between suspend & resume? >>>>>>> who will update the firmware image after bootup? >>>>>>> It is not expected behaviour. >>>>>> I was trying to research if the firmware can change or not. I've not >>>>>> found any documentation on it. >>>>>> >>>>>> If the firmare is updated in filesystem before suspend/hibernate, >>>>>> would >>>>>> the new firwmare be loaded the next time kernel resumes as the older >>>>>> firmware is no where to be found? >>>>>> >>>>>> What do you think about this? >>>>>> >>>>> I don't think firmware can be updated before suspend/hibernate. I >>>>> don't >>>>> see any reason why it can be updated. If you think it can be updated >>>>> please quote relevant doc. >>>> I've not found any documentation on it. Let's wait for others to review >>>> and it it cannot be updated, I'll remove this part. >>>> >>> >>> Wouldn't this be trivial to test? Boot the device, go modify the >>> firmware on the filesystem, then go through a suspend cycle. >> I just tested this. I've used an old firmware from last year vs the >> latest one. >> >> Firmware A: old firmware size: 5349376 >> Firmware B: new firmware size: 5165056 >> >> A here has bigger size. >> >> 1. I loaded A at boot and then replaced the firmwares in filesystem with >> B before syspend. At resume time, B was loaded fine by freeing the >> bigger memory area and allocating the smaller one. >> >> 2. I loaded B and then replaced A in its place before suspend. At resume >> time, memory was freed and larger memory was allocated. But driver >> wasn't able to initialize correctly: >> >> [ 184.051902] ath11k_pci 0000:03:00.0: timeout while waiting for >> restart complete >> [ 184.051916] ath11k_pci 0000:03:00.0: failed to resume core: -110 >> [ 184.051923] ath11k_pci 0000:03:00.0: PM: dpm_run_callback(): >> pci_pm_resume returns -110 >> [ 184.051945] ath11k_pci 0000:03:00.0: PM: failed to resume async: >> error -110 >> [ 187.251911] ath11k_pci 0000:03:00.0: wmi command 16387 timeout >> [ 187.251924] ath11k_pci 0000:03:00.0: failed to send >> WMI_PDEV_SET_PARAM cmd >> [ 187.251933] ath11k_pci 0000:03:00.0: failed to enable dynamic bw: -11 >> >> So should we generalize above that changing firmware at >> suspend/hibernation time isn't supported. If firmware package is >> updated, does user restarts every time? > > You may want to review how other devices handle this. I can think of > these threads as potential reference > > https://lore.kernel.org/all/ > CAPM=9twyvq3EWkwUeoTdMMj76u_sRPmUDHWrzbzEZFQ8eL++BQ@mail.gmail.com/ > https://lore.kernel.org/all/20250207012531.621369-1-airlied@gmail.com/ They are talking about firmware cache which is not being used in the wireless drivers. In my kernel config, firwmare cache is enabeld. But everytime kernel needs to read the firwamre, it reads from the filesystem. What can be the way forward for this patch? Assuming my previous experiment with changed firmwares across suspend/resume failed, I should remove reuse logic and send again? -- Regards, Usama
On 4/22/2025 1:23 AM, Muhammad Usama Anjum wrote: > On 4/18/25 7:08 PM, Jeff Hugo wrote: >> On 4/18/2025 2:10 AM, Muhammad Usama Anjum wrote: >>> On 4/14/25 7:14 PM, Jeff Hugo wrote: >>>> On 4/14/2025 1:32 AM, Muhammad Usama Anjum wrote: >>>>> On 4/12/25 6:22 AM, Krishna Chaitanya Chundru wrote: >>>>>> >>>>>> On 4/12/2025 12:02 AM, Muhammad Usama Anjum wrote: >>>>>>> On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote: >>>>>>>> >>>>>>>> >>>>>>>> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote: >>>>>>>>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote: >>>>>>>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table >>>>>>>>>>> allocation. There is a crash report where at resume time, the >>>>>>>>>>> memory >>>>>>>>>>> from the dma doesn't get allocated and MHI fails to re- >>>>>>>>>>> initialize. >>>>>>>>>>> There may be fragmentation of some kind which fails the >>>>>>>>>>> allocation >>>>>>>>>>> call. >>>>>>>>>>> >>>>>>>>>>> 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. >>>>>>>>>>> >>>>>>>>>>> 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 >>>>>>>>>> If firmware image will change between suspend and resume ? >>>>>>>>> Yes, correct. >>>>>>>>> >>>>>>>> why the firmware image size will change between suspend & resume? >>>>>>>> who will update the firmware image after bootup? >>>>>>>> It is not expected behaviour. >>>>>>> I was trying to research if the firmware can change or not. I've not >>>>>>> found any documentation on it. >>>>>>> >>>>>>> If the firmare is updated in filesystem before suspend/hibernate, >>>>>>> would >>>>>>> the new firwmare be loaded the next time kernel resumes as the older >>>>>>> firmware is no where to be found? >>>>>>> >>>>>>> What do you think about this? >>>>>>> >>>>>> I don't think firmware can be updated before suspend/hibernate. I >>>>>> don't >>>>>> see any reason why it can be updated. If you think it can be updated >>>>>> please quote relevant doc. >>>>> I've not found any documentation on it. Let's wait for others to review >>>>> and it it cannot be updated, I'll remove this part. >>>>> >>>> >>>> Wouldn't this be trivial to test? Boot the device, go modify the >>>> firmware on the filesystem, then go through a suspend cycle. >>> I just tested this. I've used an old firmware from last year vs the >>> latest one. >>> >>> Firmware A: old firmware size: 5349376 >>> Firmware B: new firmware size: 5165056 >>> >>> A here has bigger size. >>> >>> 1. I loaded A at boot and then replaced the firmwares in filesystem with >>> B before syspend. At resume time, B was loaded fine by freeing the >>> bigger memory area and allocating the smaller one. >>> >>> 2. I loaded B and then replaced A in its place before suspend. At resume >>> time, memory was freed and larger memory was allocated. But driver >>> wasn't able to initialize correctly: >>> >>> [ 184.051902] ath11k_pci 0000:03:00.0: timeout while waiting for >>> restart complete >>> [ 184.051916] ath11k_pci 0000:03:00.0: failed to resume core: -110 >>> [ 184.051923] ath11k_pci 0000:03:00.0: PM: dpm_run_callback(): >>> pci_pm_resume returns -110 >>> [ 184.051945] ath11k_pci 0000:03:00.0: PM: failed to resume async: >>> error -110 >>> [ 187.251911] ath11k_pci 0000:03:00.0: wmi command 16387 timeout >>> [ 187.251924] ath11k_pci 0000:03:00.0: failed to send >>> WMI_PDEV_SET_PARAM cmd >>> [ 187.251933] ath11k_pci 0000:03:00.0: failed to enable dynamic bw: -11 >>> >>> So should we generalize above that changing firmware at >>> suspend/hibernation time isn't supported. If firmware package is >>> updated, does user restarts every time? >> >> You may want to review how other devices handle this. I can think of >> these threads as potential reference >> >> https://lore.kernel.org/all/ >> CAPM=9twyvq3EWkwUeoTdMMj76u_sRPmUDHWrzbzEZFQ8eL++BQ@mail.gmail.com/ >> https://lore.kernel.org/all/20250207012531.621369-1-airlied@gmail.com/ > They are talking about firmware cache which is not being used in the > wireless drivers. In my kernel config, firwmare cache is enabeld. But > everytime kernel needs to read the firwamre, it reads from the filesystem. > > What can be the way forward for this patch? Assuming my previous > experiment with changed firmwares across suspend/resume failed, I should > remove reuse logic and send again? Perhaps you need to refactor the wireless drivers? I'm not convinced your patch is valid. If FW needs to be reloaded due to suspend/resume, it seems like the proper thing is to load the same FW that was loaded at device boot. Per your testing, loading changed FW can cause a failure. Even if it doesn't fail, will the changed firmware cause a "breakage" from the user perspective by modifying the device behavior? This does not seem to be a problem that is relevant to all MHI devices, so whatever the end solution ends up being, I think that it should not be blanket applied to all of MHI. -Jeff
On 4/22/25 7:22 PM, Jeff Hugo wrote: > On 4/22/2025 1:23 AM, Muhammad Usama Anjum wrote: >> On 4/18/25 7:08 PM, Jeff Hugo wrote: >>> On 4/18/2025 2:10 AM, Muhammad Usama Anjum wrote: >>>> On 4/14/25 7:14 PM, Jeff Hugo wrote: >>>>> On 4/14/2025 1:32 AM, Muhammad Usama Anjum wrote: >>>>>> On 4/12/25 6:22 AM, Krishna Chaitanya Chundru wrote: >>>>>>> >>>>>>> On 4/12/2025 12:02 AM, Muhammad Usama Anjum wrote: >>>>>>>> On 4/11/25 1:39 PM, Krishna Chaitanya Chundru wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> On 4/11/2025 12:32 PM, Muhammad Usama Anjum wrote: >>>>>>>>>> On 4/11/25 8:37 AM, Krishna Chaitanya Chundru wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 4/10/2025 8:26 PM, Muhammad Usama Anjum wrote: >>>>>>>>>>>> Fix dma_direct_alloc() failure at resume time during bhie_table >>>>>>>>>>>> allocation. There is a crash report where at resume time, the >>>>>>>>>>>> memory >>>>>>>>>>>> from the dma doesn't get allocated and MHI fails to re- >>>>>>>>>>>> initialize. >>>>>>>>>>>> There may be fragmentation of some kind which fails the >>>>>>>>>>>> allocation >>>>>>>>>>>> call. >>>>>>>>>>>> >>>>>>>>>>>> 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. >>>>>>>>>>>> >>>>>>>>>>>> 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 >>>>>>>>>>> If firmware image will change between suspend and resume ? >>>>>>>>>> Yes, correct. >>>>>>>>>> >>>>>>>>> why the firmware image size will change between suspend & resume? >>>>>>>>> who will update the firmware image after bootup? >>>>>>>>> It is not expected behaviour. >>>>>>>> I was trying to research if the firmware can change or not. I've >>>>>>>> not >>>>>>>> found any documentation on it. >>>>>>>> >>>>>>>> If the firmare is updated in filesystem before suspend/hibernate, >>>>>>>> would >>>>>>>> the new firwmare be loaded the next time kernel resumes as the >>>>>>>> older >>>>>>>> firmware is no where to be found? >>>>>>>> >>>>>>>> What do you think about this? >>>>>>>> >>>>>>> I don't think firmware can be updated before suspend/hibernate. I >>>>>>> don't >>>>>>> see any reason why it can be updated. If you think it can be updated >>>>>>> please quote relevant doc. >>>>>> I've not found any documentation on it. Let's wait for others to >>>>>> review >>>>>> and it it cannot be updated, I'll remove this part. >>>>>> >>>>> >>>>> Wouldn't this be trivial to test? Boot the device, go modify the >>>>> firmware on the filesystem, then go through a suspend cycle. >>>> I just tested this. I've used an old firmware from last year vs the >>>> latest one. >>>> >>>> Firmware A: old firmware size: 5349376 >>>> Firmware B: new firmware size: 5165056 >>>> >>>> A here has bigger size. >>>> >>>> 1. I loaded A at boot and then replaced the firmwares in filesystem >>>> with >>>> B before syspend. At resume time, B was loaded fine by freeing the >>>> bigger memory area and allocating the smaller one. >>>> >>>> 2. I loaded B and then replaced A in its place before suspend. At >>>> resume >>>> time, memory was freed and larger memory was allocated. But driver >>>> wasn't able to initialize correctly: >>>> >>>> [ 184.051902] ath11k_pci 0000:03:00.0: timeout while waiting for >>>> restart complete >>>> [ 184.051916] ath11k_pci 0000:03:00.0: failed to resume core: -110 >>>> [ 184.051923] ath11k_pci 0000:03:00.0: PM: dpm_run_callback(): >>>> pci_pm_resume returns -110 >>>> [ 184.051945] ath11k_pci 0000:03:00.0: PM: failed to resume async: >>>> error -110 >>>> [ 187.251911] ath11k_pci 0000:03:00.0: wmi command 16387 timeout >>>> [ 187.251924] ath11k_pci 0000:03:00.0: failed to send >>>> WMI_PDEV_SET_PARAM cmd >>>> [ 187.251933] ath11k_pci 0000:03:00.0: failed to enable dynamic bw: >>>> -11 >>>> >>>> So should we generalize above that changing firmware at >>>> suspend/hibernation time isn't supported. If firmware package is >>>> updated, does user restarts every time? >>> >>> You may want to review how other devices handle this. I can think of >>> these threads as potential reference >>> >>> https://lore.kernel.org/all/ >>> CAPM=9twyvq3EWkwUeoTdMMj76u_sRPmUDHWrzbzEZFQ8eL++BQ@mail.gmail.com/ >>> https://lore.kernel.org/all/20250207012531.621369-1-airlied@gmail.com/ >> They are talking about firmware cache which is not being used in the >> wireless drivers. In my kernel config, firwmare cache is enabeld. But >> everytime kernel needs to read the firwamre, it reads from the >> filesystem. >> >> What can be the way forward for this patch? Assuming my previous >> experiment with changed firmwares across suspend/resume failed, I should >> remove reuse logic and send again? > Not a good approach to justify, but changing of firmware during suspend/resume doesn't seem to be supported. Maybe let's leave it as it is and evaluate the current patch in just memory reuse perspective. If the new memory requested is same as previous, we'll reuse otherwise free and allocate new memory. > Perhaps you need to refactor the wireless drivers? Firmware cache would resolve the changing of firmware. But let's keep is separate from this current patch. I'm not sure how easy or hard would it be to enable firmware cache. If firwamre cache would be present, the current patch would become more simpler. But without it, the current patch doesn't look that bad. > > I'm not convinced your patch is valid. If FW needs to be reloaded due > to suspend/resume, it seems like the proper thing is to load the same FW > that was loaded at device boot. Per your testing, loading changed FW > can cause a failure. Even if it doesn't fail, will the changed firmware > cause a "breakage" from the user perspective by modifying the device > behavior? Ideally, changing of firmware shouldn't cause any issues if driver handles it correctly. But it seems it not implemented/tested. So its unsupported. > > This does not seem to be a problem that is relevant to all MHI devices, > so whatever the end solution ends up being, I think that it should not > be blanket applied to all of MHI. The drivers already have blankets. This patch was motivated from the ath12k [1] and ath11k [2]. These driver don't free the memory while going into suspend and reuse the same memory after resuming. My current patch has the same essence as these. [1] https://lore.kernel.org/all/20240419034034.2842-1-quic_bqiang@quicinc.com/ [2] https://lore.kernel.org/all/20220506141448.10340-1-quic_akolli@quicinc.com/ -- Regards, Usama
On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: > Fix dma_direct_alloc() failure at resume time during bhie_table > allocation. There is a crash report where at resume time, the memory > from the dma doesn't get allocated and MHI fails to re-initialize. > There may be fragmentation of some kind which fails the allocation > call. > > 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. > > 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. > > Here are the crash logs: > > [ 3029.338587] mhi mhi0: Requested to power ON > [ 3029.338621] mhi mhi0: Power on setup success > [ 3029.668654] kworker/u33:8: page allocation failure: order:7, mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0 > [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted 6.11.11-valve10-1-neptune-611-gb69e902b4338 #1ed779c892334112fb968aaa3facf9686b5ff0bd7 > [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024 > [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi] > [ 3029.668717] Call Trace: > [ 3029.668722] <TASK> > [ 3029.668728] dump_stack_lvl+0x4e/0x70 > [ 3029.668738] warn_alloc+0x164/0x190 > [ 3029.668747] ? srso_return_thunk+0x5/0x5f > [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360 > [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70 > [ 3029.668774] __alloc_pages_noprof+0x321/0x350 > [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290 > [ 3029.668790] dma_direct_alloc+0x70/0x270 > [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0] > [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0] > [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0] > [ 3029.668844] ? srso_return_thunk+0x5/0x5f > [ 3029.668853] process_one_work+0x17e/0x330 > [ 3029.668861] worker_thread+0x2ce/0x3f0 > [ 3029.668868] ? __pfx_worker_thread+0x10/0x10 > [ 3029.668873] kthread+0xd2/0x100 > [ 3029.668879] ? __pfx_kthread+0x10/0x10 > [ 3029.668885] ret_from_fork+0x34/0x50 > [ 3029.668892] ? __pfx_kthread+0x10/0x10 > [ 3029.668898] ret_from_fork_asm+0x1a/0x30 > [ 3029.668910] </TASK> > > Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6 > > Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> > --- > Changes sice v1: > - Don't free bhie tables during suspend/hibernation only > - Handle fbc_image changed size correctly > - Remove fbc_image getting set to NULL in *free_bhie_table() What commit id does this fix? thanks, greg k-h
On 4/10/25 10:00 PM, Greg Kroah-Hartman wrote: > On Thu, Apr 10, 2025 at 07:56:54PM +0500, Muhammad Usama Anjum wrote: >> Fix dma_direct_alloc() failure at resume time during bhie_table >> allocation. There is a crash report where at resume time, the memory >> from the dma doesn't get allocated and MHI fails to re-initialize. >> There may be fragmentation of some kind which fails the allocation >> call. >> >> 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. >> >> 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. >> >> Here are the crash logs: >> >> [ 3029.338587] mhi mhi0: Requested to power ON >> [ 3029.338621] mhi mhi0: Power on setup success >> [ 3029.668654] kworker/u33:8: page allocation failure: order:7, mode:0xc04(GFP_NOIO|GFP_DMA32), nodemask=(null),cpuset=/,mems_allowed=0 >> [ 3029.668682] CPU: 4 UID: 0 PID: 2744 Comm: kworker/u33:8 Not tainted 6.11.11-valve10-1-neptune-611-gb69e902b4338 #1ed779c892334112fb968aaa3facf9686b5ff0bd7 >> [ 3029.668690] Hardware name: Valve Galileo/Galileo, BIOS F7G0112 08/01/2024 >> [ 3029.668694] Workqueue: mhi_hiprio_wq mhi_pm_st_worker [mhi] >> [ 3029.668717] Call Trace: >> [ 3029.668722] <TASK> >> [ 3029.668728] dump_stack_lvl+0x4e/0x70 >> [ 3029.668738] warn_alloc+0x164/0x190 >> [ 3029.668747] ? srso_return_thunk+0x5/0x5f >> [ 3029.668754] ? __alloc_pages_direct_compact+0xaf/0x360 >> [ 3029.668761] __alloc_pages_slowpath.constprop.0+0xc75/0xd70 >> [ 3029.668774] __alloc_pages_noprof+0x321/0x350 >> [ 3029.668782] __dma_direct_alloc_pages.isra.0+0x14a/0x290 >> [ 3029.668790] dma_direct_alloc+0x70/0x270 >> [ 3029.668796] mhi_alloc_bhie_table+0xe8/0x190 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0] >> [ 3029.668814] mhi_fw_load_handler+0x1bc/0x310 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0] >> [ 3029.668830] mhi_pm_st_worker+0x5c8/0xaa0 [mhi faa917c5aa23a5f5b12d6a2c597067e16d2fedc0] >> [ 3029.668844] ? srso_return_thunk+0x5/0x5f >> [ 3029.668853] process_one_work+0x17e/0x330 >> [ 3029.668861] worker_thread+0x2ce/0x3f0 >> [ 3029.668868] ? __pfx_worker_thread+0x10/0x10 >> [ 3029.668873] kthread+0xd2/0x100 >> [ 3029.668879] ? __pfx_kthread+0x10/0x10 >> [ 3029.668885] ret_from_fork+0x34/0x50 >> [ 3029.668892] ? __pfx_kthread+0x10/0x10 >> [ 3029.668898] ret_from_fork_asm+0x1a/0x30 >> [ 3029.668910] </TASK> >> >> Tested-on: QCNFA765 WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6 >> >> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> >> --- >> Changes sice v1: >> - Don't free bhie tables during suspend/hibernation only >> - Handle fbc_image changed size correctly >> - Remove fbc_image getting set to NULL in *free_bhie_table() > > What commit id does this fix? I think, these errors are happening because of the fragmentation. So this patch is doing an improvement. Its hard to call it a fix for something already added. The following patch had added fbc_image allocation: cd457afb1667 bus: mhi: core: Add support for downloading firmware over BHIe The following commit had added rddm allocation: 3215d8e0691b bus: mhi: core: Set BHI/BHIe offsets on power up preparation Even if I want to add a fixes-by tag, it would be difficult to decide which commit to chose. Maybe we divide the patch into 2 in these scenarios or just select the earlier commit in Fixes tag. Please suggest what is best way? > > thanks, > > greg k-h > -- Regards, Usama
© 2016 - 2026 Red Hat, Inc.