From: "Roger Lu (陸瑞傑)" <Roger.Lu@mediatek.com>
To: "eballetbo@gmail.com" <eballetbo@gmail.com>,
"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
"khilman@kernel.org" <khilman@kernel.org>,
"sboyd@kernel.org" <sboyd@kernel.org>,
"drinkcat@google.com" <drinkcat@google.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
Project_Global_Chrome_Upstream_Group
<Project_Global_Chrome_Upstream_Group@mediatek.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"Jia-wei Chang (張佳偉)" <Jia-wei.Chang@mediatek.com>,
"Fan Chen (陳凡)" <fan.chen@mediatek.com>
Subject: Re: [PATCH v4 05/14] soc: mediatek: mtk-svs: use svs clk control APIs
Date: Mon, 6 Feb 2023 02:01:34 +0000 [thread overview]
Message-ID: <615b406692504bb68bd781030023c0fa7b2bd11e.camel@mediatek.com> (raw)
In-Reply-To: <68d19d2b-0613-f1b4-08ff-9d86f5021f9f@gmail.com>
Hi Matthias Sir,
On Thu, 2023-02-02 at 11:29 +0100, Matthias Brugger wrote:
> 你好,
I got shock and thought someone used your name to reply. However,
your email account helps me clear my mind. Haha.. Nice and warm to see mandarin
on patchwork. It's so fresh and exciting :-).
>
> On 01/02/2023 13:28, Roger Lu (陸瑞傑) wrote:
> > Hi Matthias Sir,
> >
> > On Tue, 2023-01-31 at 14:19 +0100, Matthias Brugger wrote:
> > >
> > > On 11/01/2023 08:45, Roger Lu wrote:
> > > > In MediaTek HW design, svs and thermal both use the same clk source.
> > > > It means that svs clk reference count from CCF includes thermal control
> > > > counts. That makes svs driver confuse whether it disabled svs's main clk
> > > > or not from CCF's perspective and lead to turn off their shared clk
> > > > unexpectedly. Therefore, we add svs clk control APIs to make sure svs's
> > > > main clk is controlled well by svs driver itself.
> > > >
> > > > Here is a NG example. Rely on CCF's reference count and cause problem.
> > > >
> > > > thermal probe (clk ref = 1)
> > > > -> svs probe (clk ref = 2)
> > > > -> svs suspend (clk ref = 1)
> > > > -> thermal suspend (clk ref = 0)
> > > > -> thermal resume (clk ref = 1)
> > > > -> svs resume (encounter error, clk ref = 1)
> > > > -> svs suspend (clk ref = 0)
> > > > -> thermal suspend (Fail here, thermal HW control w/o clk)
> > > >
> > > > Fixes: a825d72f74a3 ("soc: mediatek: fix missing clk_disable_unprepare()
> > > > on
> > > > err in svs_resume()")
> > > > Signed-off-by: Roger Lu <roger.lu@mediatek.com>
> > >
> > > That looks wrong. Although I don't out of my mind, there should be a way
> > > to
> > > tell
> > > the clock framework that this clock is shared between several devices.
> > >
> > > I wonder if using clk_enable and clk_disable in svs_resume/suspend
> > > wouldn't
> > > be
> > > enough.
> >
> > Oh yes, Common Clock Framework (CCF) knows the clock shared between several
> > devices and maintains clock "on/off" by reference count.
> >
>
> The thing is if you use clk_prepare_enable then the clock framework check's
> if
> the clock is already prepared, which could happen like you described in the
> svs_resume (encount error) case in the commit message. The question is, can't
> we
> just use clk_enable and clk_disable in resume/suspend and only prepare the
> clock
> in the probe function?
We'll think if this can fix the problem. Thanks for the advice very much.
>
> > We concern how to stop running svs_suspend() when svs clk is already
> > disabled by
> > svs_resume(). Take an example as below, if we refers to __clk_is_enabled()
> > result for knowing svs clk status, it will return "true" all the time
> > because
> > thermal clk is still on. This causes the problem mentioned in commit
> > message.
> >
>
> I would expect that the kernel takes care that we can't enter a resume path
> for
> a device before the suspend path has finished. Honestly I don't really
> understand the problem here. It seems something different then what you
> described in the commit message.
>
> Please help me understand better.
I see. This patch title needs to be changed to "avoid turning off svs clk twice
unexpectedly" for pointing out the problem precisely. We saw a loophole that svs
clk might be turned off in svs_resume() first and in svs_suspend() again without
enabling svs clk during these the process. Therefore, we try to fix it by this
patch. Below is our thinking process to explain how we got here.
1. (abandoned) We add __clk_is_enabled() check in svs_suspend() to prevent svs
clk from being turned off twice when svs_resume() turned off svs clk in the
error-handling process. Nonetheless, we met the NG case in the commit message.
2. (current patch) We add svs clk control hint to understand if we need to run
svs_suspend() or not if svs_resume() turned off svs clk before.
>
> 谢谢,再见
:-)
Sincerely,
Roger Lu
next prev parent reply other threads:[~2023-02-06 2:02 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-11 7:45 [PATCH v4 0/14] Enahance SVS's robustness Roger Lu
2023-01-11 7:45 ` [PATCH v4 01/14] soc: mediatek: mtk-svs: restore default voltages when svs_init02() fail Roger Lu
2023-01-31 13:22 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 02/14] soc: mediatek: mtk-svs: reset svs when svs_resume() fail Roger Lu
2023-01-31 13:22 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 03/14] soc: mediatek: mtk-svs: enable the IRQ later Roger Lu
2023-01-31 12:59 ` Matthias Brugger
2023-02-01 13:43 ` Roger Lu (陸瑞傑)
2023-02-01 13:47 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 04/14] soc: mediatek: mtk-svs: Use pm_runtime_resume_and_get() in svs_init01() Roger Lu
2023-01-31 13:23 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 05/14] soc: mediatek: mtk-svs: use svs clk control APIs Roger Lu
2023-01-31 13:19 ` Matthias Brugger
2023-02-01 12:28 ` Roger Lu (陸瑞傑)
2023-02-02 10:29 ` Matthias Brugger
2023-02-06 2:01 ` Roger Lu (陸瑞傑) [this message]
2023-02-06 12:09 ` Matthias Brugger
2023-02-11 11:34 ` Roger Lu (陸瑞傑)
2023-01-11 7:45 ` [PATCH v4 06/14] soc: mediatek: mtk-svs: add thermal voltage compensation if needed Roger Lu
2023-01-11 7:45 ` [PATCH v4 07/14] soc: mediatek: mtk-svs: keep svs alive if CONFIG_DEBUG_FS not supported Roger Lu
2023-01-31 13:24 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 08/14] soc: mediatek: mtk-svs: clean up platform probing Roger Lu
2023-01-31 13:24 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 09/14] soc: mediatek: mtk-svs: improve readability of platform_probe Roger Lu
2023-01-31 13:24 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 10/14] soc: mediatek: mtk-svs: move svs_platform_probe into probe Roger Lu
2023-01-31 13:25 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 11/14] soc: mediatek: mtk-svs: delete superfluous platform data entries Roger Lu
2023-01-31 13:30 ` Matthias Brugger
2023-01-11 7:45 ` [PATCH v4 12/14] soc: mediatek: mtk-svs: use svs get efuse common function Roger Lu
2023-01-31 13:37 ` Matthias Brugger
2023-02-01 8:15 ` Roger Lu (陸瑞傑)
2023-01-11 7:45 ` [PATCH v4 13/14] soc: mediatek: mtk-svs: use common function to disable restore voltages Roger Lu
2023-01-31 13:40 ` Matthias Brugger
2023-02-01 8:13 ` Roger Lu (陸瑞傑)
2023-01-11 7:45 ` [PATCH v4 14/14] soc: mtk-svs: mt8183: refactor o_slope calculation Roger Lu
2023-01-31 13:41 ` Matthias Brugger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=615b406692504bb68bd781030023c0fa7b2bd11e.camel@mediatek.com \
--to=roger.lu@mediatek.com \
--cc=Jia-wei.Chang@mediatek.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=devicetree@vger.kernel.org \
--cc=drinkcat@google.com \
--cc=eballetbo@gmail.com \
--cc=fan.chen@mediatek.com \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=sboyd@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox