From: houlong wei <houlong.wei@mediatek.com>
To: Eizan Miyamoto <eizan@chromium.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "wenst@chromium.org" <wenst@chromium.org>,
"Yong Wu (吴勇)" <Yong.Wu@mediatek.com>,
"enric.balletbo@collabora.com" <enric.balletbo@collabora.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"chunkuang.hu@kernel.org" <chunkuang.hu@kernel.org>,
"Andrew-CT Chen (陳智迪)" <Andrew-CT.Chen@mediatek.com>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"Mauro Carvalho Chehab" <mchehab@kernel.org>,
"Minghsiu Tsai (蔡明修)" <Minghsiu.Tsai@mediatek.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
houlong.wei@mediatek.com
Subject: Re: [PATCH v6 4/9] media: mtk-mdp: don't pm_run_time_get/put for master comp in clock_on
Date: Mon, 16 Aug 2021 09:10:33 +0800 [thread overview]
Message-ID: <bef757c4a081bfb87aa3b429970e628641bf95a5.camel@mediatek.com> (raw)
In-Reply-To: <20210802220943.v6.4.Ifd87681955689a08cce4c65e72ee5e8c6d09af95@changeid>
On Mon, 2021-08-02 at 20:12 +0800, Eizan Miyamoto wrote:
> The original intent of commit 86698b9505bbc ("media: mtk-mdp: convert
> mtk_mdp_dev.comp array to list") was to create a list to track all
> the
> MDP components that needed to have their clocks enabled/disabled when
> calling mtk_mdp_comp_clock_on/off. However, there was a bug inside
> mtk_mdp_register_component where the args to a call to list_add were
> swapped. The result is that only one component was added to
> mtk_mdp_dev.comp_list because comp_list was instead being
> repeatedly added to the single element lists headed by each
> mtk_mdp_comp.
>
> The order of the args to list_add in mtk_mdp_register_component was
> fixed in https://patchwork.kernel.org/patch/11742895/ (Fix Null
> pointer
> dereference when calling list_add).
>
> Then, as a result of https://patchwork.kernel.org/patch/11530769/
> (mtk-mdp: use pm_runtime in MDP component driver) if all the
> components
> are added to the component list, the mdp "master" / rdma0 component
> ends up having pm_runtime_get_sync() called on it twice recursively:
>
> rpm_resume+0x694/0x8f8
> __pm_runtime_resume+0x7c/0xa0 ***NOTE***
> mtk_mdp_comp_clock_on+0x48/0x104 [mtk_mdp]
> mtk_mdp_pm_resume+0x2c/0x44 [mtk_mdp]
> pm_generic_runtime_resume+0x34/0x48
> __genpd_runtime_resume+0x6c/0x80
> genpd_runtime_resume+0x104/0x1ac
> __rpm_callback+0x120/0x238
> rpm_callback+0x34/0x8c
> rpm_resume+0x7a0/0x8f8
> __pm_runtime_resume+0x7c/0xa0 ***NOTE***
> mtk_mdp_m2m_start_streaming+0x2c/0x3c [mtk_mdp]
>
> (The calls to pm_runtime_get_sync are inlined and correspond to the
> calls to __pm_runtime_resume). It is not correct to have
> pm_runtime_get_sync called recursively and the second call will block
> indefinitely.
>
> As a result of all that, this change factors
> mtk_mdp_comp_clock_on/off
> into mtk_mdp_comp_power_on/off and moves the calls to
> pm_runtime_get/put into the power_on/off functions.
>
> This change then special-cases the master/rdma0 MDP component and
> does
> these things:
> - the master/rdma0 component is not added to mtk_mdp_dev.comp_list
> - the master/rdma0 component has its clocks (*but not power*) toggled
> by mtk_mpd_comp_clock_on/off inside mtk_mdp_clock_on/off.
> - the other components have their clocks *and* power toggled with
> mtk_mdp_comp_power_on/off.
>
> This change introduces the assumption that mtk_mdp_pm_resume will
> always be called though a callback from pm_runtime_get_sync made on
> the
> master / rdma0 component.
>
> Signed-off-by: Eizan Miyamoto <eizan@chromium.org>
> ---
>
Reviewed-by: Houlong Wei <houlong.wei@mediatek.com>
> (no changes since v1)
>
[...]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-08-16 1:12 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-02 12:12 [PATCH v6 0/9] Refactor MTK MDP driver into core/components Eizan Miyamoto
2021-08-02 12:12 ` [PATCH v6 1/9] mtk-mdp: propagate errors from clock_on Eizan Miyamoto
2021-08-03 10:26 ` Enric Balletbo Serra
2021-08-05 6:06 ` Dafna Hirschfeld
2021-08-09 3:23 ` Eizan Miyamoto
2021-08-09 7:42 ` Dafna Hirschfeld
2021-08-16 0:46 ` houlong wei
2021-08-02 12:12 ` [PATCH v6 2/9] mtk-mdp: add driver to probe mdp components Eizan Miyamoto
2021-08-03 10:26 ` Enric Balletbo Serra
2021-08-05 6:40 ` Dafna Hirschfeld
2021-08-09 3:23 ` Eizan Miyamoto
2021-08-09 7:53 ` Dafna Hirschfeld
2021-08-11 11:15 ` Eizan Miyamoto
2021-08-16 1:05 ` houlong wei
2021-08-02 12:12 ` [PATCH v6 3/9] mtk-mdp: use pm_runtime in MDP component driver Eizan Miyamoto
2021-08-03 10:26 ` Enric Balletbo Serra
2021-08-16 1:07 ` houlong wei
2021-08-02 12:12 ` [PATCH v6 4/9] media: mtk-mdp: don't pm_run_time_get/put for master comp in clock_on Eizan Miyamoto
2021-08-03 10:27 ` Enric Balletbo Serra
2021-08-16 1:10 ` houlong wei [this message]
2021-08-02 12:12 ` [PATCH v6 5/9] mtk-mdp: make mdp driver to be loadable by platform_device_register*() Eizan Miyamoto
2021-08-03 10:27 ` Enric Balletbo Serra
2021-08-16 1:15 ` houlong wei
2021-08-16 3:37 ` houlong wei
2021-08-02 12:12 ` [PATCH v6 6/9] soc: mediatek: mmsys: instantiate mdp virtual device from mmsys Eizan Miyamoto
2021-08-03 10:27 ` Enric Balletbo Serra
2021-08-16 1:18 ` houlong wei
2021-08-02 12:12 ` [PATCH v6 7/9] media: mtk-mdp: use mdp-rdma0 alias to point to MDP master Eizan Miyamoto
2021-08-03 10:27 ` Enric Balletbo Serra
2021-08-03 11:46 ` Eizan Miyamoto
2021-08-16 3:00 ` houlong wei
2021-08-16 4:52 ` houlong wei
2021-08-18 7:50 ` Eizan Miyamoto
2021-08-18 15:42 ` houlong wei
2021-08-18 7:43 ` Eizan Miyamoto
2021-08-18 15:34 ` houlong wei
2021-08-02 12:12 ` [PATCH v6 8/9] dts: mtk-mdp: remove mediatek, vpu property from primary MDP device Eizan Miyamoto
2021-08-03 10:27 ` [PATCH v6 8/9] dts: mtk-mdp: remove mediatek,vpu " Enric Balletbo Serra
2021-08-02 12:12 ` [PATCH v6 9/9] dt-bindings: mediatek: remove vpu requirement from mtk-mdp Eizan Miyamoto
2021-08-03 10:27 ` Enric Balletbo Serra
2021-08-06 21:47 ` Rob Herring
2021-08-03 10:29 ` [PATCH v6 0/9] Refactor MTK MDP driver into core/components Enric Balletbo Serra
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=bef757c4a081bfb87aa3b429970e628641bf95a5.camel@mediatek.com \
--to=houlong.wei@mediatek.com \
--cc=Andrew-CT.Chen@mediatek.com \
--cc=Minghsiu.Tsai@mediatek.com \
--cc=Yong.Wu@mediatek.com \
--cc=chunkuang.hu@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=eizan@chromium.org \
--cc=enric.balletbo@collabora.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=mchehab@kernel.org \
--cc=wenst@chromium.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;
as well as URLs for NNTP newsgroup(s).