diff mbox series

arch/powerpc: Remove unnecessary endian conversion code in XICS

Message ID 20230630055628.17790-1-gautam@linux.ibm.com (mailing list archive)
State Changes Requested
Headers show
Series arch/powerpc: Remove unnecessary endian conversion code in XICS | expand

Checks

Context Check Description
snowpatch_ozlabs/github-powerpc_ppctests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_selftests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_sparse success Successfully ran 4 jobs.
snowpatch_ozlabs/github-powerpc_clang success Successfully ran 6 jobs.
snowpatch_ozlabs/github-powerpc_kernel_qemu success Successfully ran 24 jobs.

Commit Message

Gautam Menghani June 30, 2023, 5:56 a.m. UTC
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 <gautam@linux.ibm.com>
---
 arch/powerpc/sysdev/xics/ics-opal.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Michael Ellerman July 3, 2023, 6:41 a.m. UTC | #1
Gautam Menghani <gautam@linux.ibm.com> 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 <gautam@linux.ibm.com>
> ---
>  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
Jordan Niethe July 6, 2023, 7:50 a.m. UTC | #2
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 <gautam@linux.ibm.com>

'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 <jniethe5@gmail.com>


> ---
>   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) {
>
Gautam Menghani July 11, 2023, 9:33 a.m. UTC | #3
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 <gautam@linux.ibm.com>
> 
> '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 <jniethe5@gmail.com>

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) {
> >
Gautam Menghani July 26, 2023, 8:07 a.m. UTC | #4
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 <gautam@linux.ibm.com>
> 
> '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 <jniethe5@gmail.com>
> 

Hello Michael,

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

Thanks,
Gautam
Gautam Menghani July 26, 2023, 9:12 a.m. UTC | #5
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 <gautam@linux.ibm.com>
> 
> '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 <jniethe5@gmail.com>
> 

Hello Michael, 

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

Thanks,
Gautam
Michael Ellerman July 29, 2023, 10:54 a.m. UTC | #6
Gautam Menghani <Gautam.Menghani@linux.ibm.com> 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 <gautam@linux.ibm.com>
>> 
>> '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 <jniethe5@gmail.com>
>> 
>
> 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
Gautam Menghani July 31, 2023, noon UTC | #7
On Sat, Jul 29, 2023 at 08:54:26PM +1000, Michael Ellerman wrote:
> Gautam Menghani <Gautam.Menghani@linux.ibm.com> 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 <gautam@linux.ibm.com>
> >> 
> >> '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 <jniethe5@gmail.com>
> >> 
> >
> > 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/20230731115543.36991-1-gautam@linux.ibm.com/T/#u

Thanks,
Gautam
diff mbox series

Patch

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) {