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) > [...]
next prev parent reply other threads:[~2021-08-16 1:10 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 ` 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 \ --subject='Re: [PATCH v6 4/9] media: mtk-mdp: don'\''t pm_run_time_get/put for master comp in clock_on' \ /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
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).