[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20231009100557.18224-1-sumitg@nvidia.com>
Date: Mon, 9 Oct 2023 15:35:55 +0530
From: Sumit Gupta <sumitg@...dia.com>
To: <treding@...dia.com>, <jonathanh@...dia.com>,
<krzysztof.kozlowski@...aro.org>, <linux-tegra@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
CC: <bbasu@...dia.com>, <sumitg@...dia.com>
Subject: [Patch v2 0/2] Fix hang due to CPU BW request as BPMP suspended
This patch set fixes hang during system resume which started coming
after adding Memory Interconnect and OPP support to the Tegra194 CPUFREQ
in below change:
f41e1442ac5b ("cpufreq: tegra194: add OPP support and set bandwidth").
Tegra194 CPUFREQ driver uses 'CPUFREQ_NEED_INITIAL_FREQ_CHECK' flag
which causes a CPU frequency set request from the 'cpuhp_cpufreq_online'
hotplug notifier during resume. The CPU frequency set call also triggers
a DRAM bandwidth set request but the BPMP driver hasn't resumed yet
which results in hang during resume.
Fix this by resetting the BPMP IPC channels inside tegra_bpmp_transfer*()
API if the bandwidth request came from CPU clusters and the BPMP driver
is still suspended.
---
v[1] -> v2:
- add suspend hook instead of reset hook based approach.
- add suspended instead of needs_reset flag in 'struct tegra_bpmp'.
- add flags field to 'struct tegra_bpmp_message'.
- set TEGRA_BPMP_MESSAGE_RESET flag from MC driver for CPU BW request.
- use suspended and flags to reset BPMP IPC early on resume.
Sumit Gupta (1):
firmware: tegra: add suspend hook and reset BPMP IPC early on resume
Thierry Reding (1):
memory: tegra: set BPMP msg flags to reset IPC channels
drivers/firmware/tegra/bpmp.c | 30 ++++++++++++++++++++++++++++++
drivers/memory/tegra/tegra234.c | 4 ++++
include/soc/tegra/bpmp.h | 6 ++++++
3 files changed, 40 insertions(+)
[1] https://lore.kernel.org/linux-tegra/20230830115829.23977-1-sumitg@nvidia.com/
--
2.17.1
Powered by blists - more mailing lists