Subject: Re: linux-next: build failure after merge of the icc tree

From: Georgi Djakov <[email-masked]>
Date: Thu, 18 Aug 2022 10:44:20 +0300

Hi Uwe,

On 18.08.22 9:49, Uwe Kleine-König wrote:
> Hello,
> 
> On Thu, Aug 18, 2022 at 08:00:51AM +0300, Georgi Djakov wrote:
>> On 18.08.22 4:53, Stephen Rothwell wrote:
>>> Hi all,
>>>
>>> After merging the icc tree, today's linux-next build (x86_64 allmodconfig)
>>> failed like this:
>>>
>>> drivers/interconnect/imx/imx8mp.c: In function 'imx8mp_icc_remove':
>>> drivers/interconnect/imx/imx8mp.c:245:16: error: void value not ignored as it ought to be
>>>     245 |         return imx_icc_unregister(pdev);
>>>         |                ^~~~~~~~~~~~~~~~~~~~~~~~
>>> drivers/interconnect/imx/imx8mp.c:246:1: error: control reaches end of non-void function [-Werror=return-type]
>>>     246 | }
>>>         | ^
>>>
>>> Caused by commit
>>>
>>>     d761e0e9c8f2 ("interconnect: imx: Make imx_icc_unregister() return void")
>>>
>>> I have used the icc tree from next-20220817 for today.
> 
> I tried to understand what went wrong here. The problem is that the
> patch "interconnect: imx: Make imx_icc_unregister() return void" was
> developed on top of v5.19-rc1, which doesn't contain
> drivers/interconnect/imx/imx8mp.c. This was only introduced in
> 
> 	c14ec5c93dc8 ("interconnect: imx: Add platform driver for imx8mp")
> 
> for v6.0-rc1.

Yes, exactly.

> 
>> Thanks Stephen! Fixed.
> 
> The history in the icc tree now looks as follows:
> 
> $ git lgg linus/master..FETCH_HEAD
> *   8c9b6a59edb7 Merge branch 'icc-ignore-return-val' into icc-next
> |\
> | * f62e3f595c5f interconnect: imx: Make imx_icc_unregister() return void
> * |   c86cfdbaf8e3 Merge branch 'icc-ignore-return-val' into icc-next
> |\ \
> | * | d761e0e9c8f2 interconnect: imx: Make imx_icc_unregister() return void
> | |/
> | * 680f8666baf6 interconnect: Make icc_provider_del() return void
> | * fa80a2994d35 interconnect: sm8450: Ignore return value of icc_provider_del() in .remove()
> | * f221bd781f25 interconnect: osm-l3: Ignore return value of icc_provider_del() in .remove()
> | * 919d4e1a207e interconnect: msm8974: Ignore return value of icc_provider_del() in .remove()
> | * 4681086c9bec interconnect: icc-rpmh: Ignore return value of icc_provider_del() in .remove()
> | * 8ef2ca20754d interconnect: icc-rpm: Ignore return value of icc_provider_del() in .remove()
> | * 7ec26b8dcc5c interconnect: imx: Ignore return value of icc_provider_del() in .remove()
> |/
> o 568035b01cfb (tag: v6.0-rc1) Linux 6.0-rc1
> 
> So the commit that doesn't build is still included and might annoy
> bisection. Also in my eyes it's kind of ugly to have two commits with
> identical commit log and nearly identical content in the same tree.
> 
> I don't know your preferences about not rewriting your tree once it was
> exposed to the public, but if you are willing to rewrite your tree to
> improve, the possibilities (in order of my preference) are:
> 
>   - Drop the broken commit and only include the fixed
>     icc-ignore-return-val branch.

Yes, that was actually my intention, but looks like i merged the fixed branch on top (without
un-merging the previous one). Sorry about that. It should be fine now.

Thanks!
Georgi

> 
>   - On top of the broken branch add a commit that only fixes the problem
>     but doesn't duplicate most of d761e0e9c8f2, yielding something like:
> 
> 	*   bcdefghijlkm Merge branch 'icc-ignore-return-val' into icc-next
> 	|\
> 	| * abcdefghijkl interconnect: imx: Fix imx8mp build
> 	| * d761e0e9c8f2 interconnect: imx: Make imx_icc_unregister() return void
> 	| * 680f8666baf6 interconnect: Make icc_provider_del() return void
> 	| * fa80a2994d35 interconnect: sm8450: Ignore return value of icc_provider_del() in .remove()
> 	| * f221bd781f25 interconnect: osm-l3: Ignore return value of icc_provider_del() in .remove()
> 	| * 919d4e1a207e interconnect: msm8974: Ignore return value of icc_provider_del() in .remove()
> 	| * 4681086c9bec interconnect: icc-rpmh: Ignore return value of icc_provider_del() in .remove()
> 	| * 8ef2ca20754d interconnect: icc-rpm: Ignore return value of icc_provider_del() in .remove()
> 	| * 7ec26b8dcc5c interconnect: imx: Ignore return value of icc_provider_del() in .remove()
> 	|/
> 	o 568035b01cfb (tag: v6.0-rc1) Linux 6.0-rc1
> 
>     or
> 
> 	* abcdefghijkm interconnect: imx: Fix imx8mp build
> 	*   c86cfdbaf8e3 Merge branch 'icc-ignore-return-val' into icc-next
> 	|\
> 	| * d761e0e9c8f2 interconnect: imx: Make imx_icc_unregister() return void
> 	| * 680f8666baf6 interconnect: Make icc_provider_del() return void
> 	| * fa80a2994d35 interconnect: sm8450: Ignore return value of icc_provider_del() in .remove()
> 	| * f221bd781f25 interconnect: osm-l3: Ignore return value of icc_provider_del() in .remove()
> 	| * 919d4e1a207e interconnect: msm8974: Ignore return value of icc_provider_del() in .remove()
> 	| * 4681086c9bec interconnect: icc-rpmh: Ignore return value of icc_provider_del() in .remove()
> 	| * 8ef2ca20754d interconnect: icc-rpm: Ignore return value of icc_provider_del() in .remove()
> 	| * 7ec26b8dcc5c interconnect: imx: Ignore return value of icc_provider_del() in .remove()
> 	|/
> 	o 568035b01cfb (tag: v6.0-rc1) Linux 6.0-rc1
> 
>   - At least point out in the fixed variant, what and why it was
>     necessary to redo the commit.
> 
> Thanks
> Uwe
>