2023-06-30 06:29:19

by Gautam Menghani

[permalink] [raw]
Subject: [PATCH] arch/powerpc: Remove unnecessary endian conversion code in XICS

Remove an unnecessary piece of code that does an endianness conversion but
does not use the result. The following warning was reported by Clang's
static analyzer:

arch/powerpc/sysdev/xics/ics-opal.c:114:2: warning: Value stored to
'server' is never read [deadcode.DeadStores]
server = be16_to_cpu(oserver);

As the result of endianness conversion is never used, delete the line
and fix the warning.

Signed-off-by: Gautam Menghani <[email protected]>
---
arch/powerpc/sysdev/xics/ics-opal.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/arch/powerpc/sysdev/xics/ics-opal.c b/arch/powerpc/sysdev/xics/ics-opal.c
index 6cfbb4fac7fb..5fe73dabab79 100644
--- a/arch/powerpc/sysdev/xics/ics-opal.c
+++ b/arch/powerpc/sysdev/xics/ics-opal.c
@@ -111,7 +111,6 @@ static int ics_opal_set_affinity(struct irq_data *d,
__func__, d->irq, hw_irq, rc);
return -1;
}
- server = be16_to_cpu(oserver);

wanted_server = xics_get_irq_server(d->irq, cpumask, 1);
if (wanted_server < 0) {
--
2.39.3



2023-07-03 06:45:38

by Michael Ellerman

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc: Remove unnecessary endian conversion code in XICS

Gautam Menghani <[email protected]> writes:
> Remove an unnecessary piece of code that does an endianness conversion but
> does not use the result. The following warning was reported by Clang's
> static analyzer:
>
> arch/powerpc/sysdev/xics/ics-opal.c:114:2: warning: Value stored to
> 'server' is never read [deadcode.DeadStores]
> server = be16_to_cpu(oserver);
>
> As the result of endianness conversion is never used, delete the line
> and fix the warning.
>
> Signed-off-by: Gautam Menghani <[email protected]>
> ---
> arch/powerpc/sysdev/xics/ics-opal.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/arch/powerpc/sysdev/xics/ics-opal.c b/arch/powerpc/sysdev/xics/ics-opal.c
> index 6cfbb4fac7fb..5fe73dabab79 100644
> --- a/arch/powerpc/sysdev/xics/ics-opal.c
> +++ b/arch/powerpc/sysdev/xics/ics-opal.c
> @@ -111,7 +111,6 @@ static int ics_opal_set_affinity(struct irq_data *d,
> __func__, d->irq, hw_irq, rc);
> return -1;
> }
> - server = be16_to_cpu(oserver);
>
> wanted_server = xics_get_irq_server(d->irq, cpumask, 1);
> if (wanted_server < 0) {

My first question with a patch like this is always going to be "how did
the code end up like this?"

Has the code changed and this assignment became unused? If so the commit
that did that should be identified.

If the code has always been like this that's also useful to know. Or
something else happened for it to end up this way :)

The second question will be "is there actually a bug here?". ie. should
server actually be used, and the bug is not that it's a dead assignment
but rather that server is not where it should be.

cheers

2023-07-06 08:13:54

by Jordan Niethe

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc: Remove unnecessary endian conversion code in XICS



On 30/6/23 3:56 pm, Gautam Menghani wrote:
> Remove an unnecessary piece of code that does an endianness conversion but
> does not use the result. The following warning was reported by Clang's
> static analyzer:
>
> arch/powerpc/sysdev/xics/ics-opal.c:114:2: warning: Value stored to
> 'server' is never read [deadcode.DeadStores]
> server = be16_to_cpu(oserver);
>
> As the result of endianness conversion is never used, delete the line
> and fix the warning.
>
> Signed-off-by: Gautam Menghani <[email protected]>

'server' was used as a parameter to opal_get_xive() in commit
5c7c1e9444d8 ("powerpc/powernv: Add OPAL ICS backend") when it was
introduced. 'server' was also used in an error message for the call to
opal_get_xive().

'server' was always later set by a call to ics_opal_mangle_server()
before being used.

Commit bf8e0f891a32 ("powerpc/powernv: Fix endian issues in OPAL ICS
backend") used a new variable 'oserver' as the parameter to
opal_get_xive() instead of 'server' for endian correctness. It also
removed 'server' from the error message for the call to opal_get_xive().

It was commit bf8e0f891a32 that added the unnecessary conversion and
never used the result.

Reviewed-by: Jordan Niethe <[email protected]>


> ---
> arch/powerpc/sysdev/xics/ics-opal.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/arch/powerpc/sysdev/xics/ics-opal.c b/arch/powerpc/sysdev/xics/ics-opal.c
> index 6cfbb4fac7fb..5fe73dabab79 100644
> --- a/arch/powerpc/sysdev/xics/ics-opal.c
> +++ b/arch/powerpc/sysdev/xics/ics-opal.c
> @@ -111,7 +111,6 @@ static int ics_opal_set_affinity(struct irq_data *d,
> __func__, d->irq, hw_irq, rc);
> return -1;
> }
> - server = be16_to_cpu(oserver);
>
> wanted_server = xics_get_irq_server(d->irq, cpumask, 1);
> if (wanted_server < 0) {
>

2023-07-11 09:44:04

by Gautam Menghani

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc: Remove unnecessary endian conversion code in XICS

On Thu, Jul 06, 2023 at 05:50:57PM +1000, Jordan Niethe wrote:
>
>
> On 30/6/23 3:56 pm, Gautam Menghani wrote:
> > Remove an unnecessary piece of code that does an endianness conversion but
> > does not use the result. The following warning was reported by Clang's
> > static analyzer:
> >
> > arch/powerpc/sysdev/xics/ics-opal.c:114:2: warning: Value stored to
> > 'server' is never read [deadcode.DeadStores]
> > server = be16_to_cpu(oserver);
> >
> > As the result of endianness conversion is never used, delete the line
> > and fix the warning.
> >
> > Signed-off-by: Gautam Menghani <[email protected]>
>
> 'server' was used as a parameter to opal_get_xive() in commit 5c7c1e9444d8
> ("powerpc/powernv: Add OPAL ICS backend") when it was introduced. 'server'
> was also used in an error message for the call to opal_get_xive().
>
> 'server' was always later set by a call to ics_opal_mangle_server() before
> being used.
>
> Commit bf8e0f891a32 ("powerpc/powernv: Fix endian issues in OPAL ICS
> backend") used a new variable 'oserver' as the parameter to opal_get_xive()
> instead of 'server' for endian correctness. It also removed 'server' from
> the error message for the call to opal_get_xive().
>
> It was commit bf8e0f891a32 that added the unnecessary conversion and never
> used the result.
>
> Reviewed-by: Jordan Niethe <[email protected]>

Yes, thanks for the info Jordan. Just to add to this,
ics_opal_mangle_server() needs input in LE and the 'wanted_server' is
already LE as xics_get_irq_server() is returning result in LE. So the
line

`server = be16_to_cpu(oserver);'

is indeed not required.

Thanks,
Gautam

>
>
> > ---
> > arch/powerpc/sysdev/xics/ics-opal.c | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > diff --git a/arch/powerpc/sysdev/xics/ics-opal.c b/arch/powerpc/sysdev/xics/ics-opal.c
> > index 6cfbb4fac7fb..5fe73dabab79 100644
> > --- a/arch/powerpc/sysdev/xics/ics-opal.c
> > +++ b/arch/powerpc/sysdev/xics/ics-opal.c
> > @@ -111,7 +111,6 @@ static int ics_opal_set_affinity(struct irq_data *d,
> > __func__, d->irq, hw_irq, rc);
> > return -1;
> > }
> > - server = be16_to_cpu(oserver);
> > wanted_server = xics_get_irq_server(d->irq, cpumask, 1);
> > if (wanted_server < 0) {
> >

2023-07-26 08:49:21

by Gautam Menghani

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc: Remove unnecessary endian conversion code in XICS

On Thu, Jul 06, 2023 at 05:50:57PM +1000, Jordan Niethe wrote:
>
>
> On 30/6/23 3:56 pm, Gautam Menghani wrote:
> > Remove an unnecessary piece of code that does an endianness conversion but
> > does not use the result. The following warning was reported by Clang's
> > static analyzer:
> >
> > arch/powerpc/sysdev/xics/ics-opal.c:114:2: warning: Value stored to
> > 'server' is never read [deadcode.DeadStores]
> > server = be16_to_cpu(oserver);
> >
> > As the result of endianness conversion is never used, delete the line
> > and fix the warning.
> >
> > Signed-off-by: Gautam Menghani <[email protected]>
>
> 'server' was used as a parameter to opal_get_xive() in commit 5c7c1e9444d8
> ("powerpc/powernv: Add OPAL ICS backend") when it was introduced. 'server'
> was also used in an error message for the call to opal_get_xive().
>
> 'server' was always later set by a call to ics_opal_mangle_server() before
> being used.
>
> Commit bf8e0f891a32 ("powerpc/powernv: Fix endian issues in OPAL ICS
> backend") used a new variable 'oserver' as the parameter to opal_get_xive()
> instead of 'server' for endian correctness. It also removed 'server' from
> the error message for the call to opal_get_xive().
>
> It was commit bf8e0f891a32 that added the unnecessary conversion and never
> used the result.
>
> Reviewed-by: Jordan Niethe <[email protected]>
>

Hello Michael,

Do you have any more questions on this patch or is it good to go?

Thanks,
Gautam

2023-07-26 09:43:11

by Gautam Menghani

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc: Remove unnecessary endian conversion code in XICS

On Thu, Jul 06, 2023 at 05:50:57PM +1000, Jordan Niethe wrote:
>
>
> On 30/6/23 3:56 pm, Gautam Menghani wrote:
> > Remove an unnecessary piece of code that does an endianness conversion but
> > does not use the result. The following warning was reported by Clang's
> > static analyzer:
> >
> > arch/powerpc/sysdev/xics/ics-opal.c:114:2: warning: Value stored to
> > 'server' is never read [deadcode.DeadStores]
> > server = be16_to_cpu(oserver);
> >
> > As the result of endianness conversion is never used, delete the line
> > and fix the warning.
> >
> > Signed-off-by: Gautam Menghani <[email protected]>
>
> 'server' was used as a parameter to opal_get_xive() in commit 5c7c1e9444d8
> ("powerpc/powernv: Add OPAL ICS backend") when it was introduced. 'server'
> was also used in an error message for the call to opal_get_xive().
>
> 'server' was always later set by a call to ics_opal_mangle_server() before
> being used.
>
> Commit bf8e0f891a32 ("powerpc/powernv: Fix endian issues in OPAL ICS
> backend") used a new variable 'oserver' as the parameter to opal_get_xive()
> instead of 'server' for endian correctness. It also removed 'server' from
> the error message for the call to opal_get_xive().
>
> It was commit bf8e0f891a32 that added the unnecessary conversion and never
> used the result.
>
> Reviewed-by: Jordan Niethe <[email protected]>
>

Hello Michael,

Do you have any more questions on this patch or is it good to go?

Thanks,
Gautam

2023-07-29 11:30:31

by Michael Ellerman

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc: Remove unnecessary endian conversion code in XICS

Gautam Menghani <[email protected]> writes:
> On Thu, Jul 06, 2023 at 05:50:57PM +1000, Jordan Niethe wrote:
>> On 30/6/23 3:56 pm, Gautam Menghani wrote:
>> > Remove an unnecessary piece of code that does an endianness conversion but
>> > does not use the result. The following warning was reported by Clang's
>> > static analyzer:
>> >
>> > arch/powerpc/sysdev/xics/ics-opal.c:114:2: warning: Value stored to
>> > 'server' is never read [deadcode.DeadStores]
>> > server = be16_to_cpu(oserver);
>> >
>> > As the result of endianness conversion is never used, delete the line
>> > and fix the warning.
>> >
>> > Signed-off-by: Gautam Menghani <[email protected]>
>>
>> 'server' was used as a parameter to opal_get_xive() in commit 5c7c1e9444d8
>> ("powerpc/powernv: Add OPAL ICS backend") when it was introduced. 'server'
>> was also used in an error message for the call to opal_get_xive().
>>
>> 'server' was always later set by a call to ics_opal_mangle_server() before
>> being used.
>>
>> Commit bf8e0f891a32 ("powerpc/powernv: Fix endian issues in OPAL ICS
>> backend") used a new variable 'oserver' as the parameter to opal_get_xive()
>> instead of 'server' for endian correctness. It also removed 'server' from
>> the error message for the call to opal_get_xive().
>>
>> It was commit bf8e0f891a32 that added the unnecessary conversion and never
>> used the result.
>>
>> Reviewed-by: Jordan Niethe <[email protected]>
>>
>
> Hello Michael,
>
> Do you have any more questions on this patch or is it good to go?

I was expecting you'd send a v2 with the changelog updated to include
all the extra detail Jordan added. I think it should also be tagged as
Fixes: bf8e0f891a32.

cheers

2023-07-31 13:45:14

by Gautam Menghani

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc: Remove unnecessary endian conversion code in XICS

On Sat, Jul 29, 2023 at 08:54:26PM +1000, Michael Ellerman wrote:
> Gautam Menghani <[email protected]> writes:
> > On Thu, Jul 06, 2023 at 05:50:57PM +1000, Jordan Niethe wrote:
> >> On 30/6/23 3:56 pm, Gautam Menghani wrote:
> >> > Remove an unnecessary piece of code that does an endianness conversion but
> >> > does not use the result. The following warning was reported by Clang's
> >> > static analyzer:
> >> >
> >> > arch/powerpc/sysdev/xics/ics-opal.c:114:2: warning: Value stored to
> >> > 'server' is never read [deadcode.DeadStores]
> >> > server = be16_to_cpu(oserver);
> >> >
> >> > As the result of endianness conversion is never used, delete the line
> >> > and fix the warning.
> >> >
> >> > Signed-off-by: Gautam Menghani <[email protected]>
> >>
> >> 'server' was used as a parameter to opal_get_xive() in commit 5c7c1e9444d8
> >> ("powerpc/powernv: Add OPAL ICS backend") when it was introduced. 'server'
> >> was also used in an error message for the call to opal_get_xive().
> >>
> >> 'server' was always later set by a call to ics_opal_mangle_server() before
> >> being used.
> >>
> >> Commit bf8e0f891a32 ("powerpc/powernv: Fix endian issues in OPAL ICS
> >> backend") used a new variable 'oserver' as the parameter to opal_get_xive()
> >> instead of 'server' for endian correctness. It also removed 'server' from
> >> the error message for the call to opal_get_xive().
> >>
> >> It was commit bf8e0f891a32 that added the unnecessary conversion and never
> >> used the result.
> >>
> >> Reviewed-by: Jordan Niethe <[email protected]>
> >>
> >
> > Hello Michael,
> >
> > Do you have any more questions on this patch or is it good to go?
>
> I was expecting you'd send a v2 with the changelog updated to include
> all the extra detail Jordan added. I think it should also be tagged as
> Fixes: bf8e0f891a32.
>
> cheers

Thanks for the response. I've sent a v2 here -
lore.kernel.org/linuxppc-dev/[email protected]/T/#u

Thanks,
Gautam