Re: [PATCH v2 4/8] powerpc/xive: Simplify xive_core_debug_show()

2021-03-09 Thread Cédric Le Goater
On 3/9/21 10:42 AM, Greg Kurz wrote:
> On Tue, 9 Mar 2021 10:13:39 +0100
> Greg Kurz  wrote:
> 
>> On Mon, 8 Mar 2021 19:11:11 +0100
>> Cédric Le Goater  wrote:
>>
>>> On 3/8/21 7:07 PM, Greg Kurz wrote:
 On Wed, 3 Mar 2021 18:48:53 +0100
 Cédric Le Goater  wrote:

> Now that the IPI interrupt has its own domain, the checks on the HW
> interrupt number XIVE_IPI_HW_IRQ and on the chip can be replaced by a
> check on the domain.
>
> Signed-off-by: Cédric Le Goater 
> ---

 Shouldn't this have the following tags ?

 Reported-by: kernel test robot 
 Reported-by: Dan Carpenter 
 Fixes: 930914b7d528 ("powerpc/xive: Add a debugfs file to dump internal 
 XIVE state")
>>>
>>> The next patch has because it removes the useless check on irq_data.
>>>  
>>
>> Ok I get it. This report isn't about an actual crash. Just a false
>> positive because of the not needed check in the caller.
>>
> 
> Hrm... I meant because of the check in xive_debug_show_irq(). On the
> contrary, the check removed by this patch in xive_core_debug_show()
> was rather an explicit hint that xive_debug_show_irq() couldn't be
> called with d being NULL.

yes. irq_desc_get_irq_data() does not return a NULL value and 
xive_debug_show_irq() is only called from the for_each_irq_desc()
loop. 


C.


> 
>>> C.
>>>

 Anyway,

 Reviewed-by: Greg Kurz 

>  arch/powerpc/sysdev/xive/common.c | 18 --
>  1 file changed, 4 insertions(+), 14 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/xive/common.c 
> b/arch/powerpc/sysdev/xive/common.c
> index 678680531d26..7581cb12bb53 100644
> --- a/arch/powerpc/sysdev/xive/common.c
> +++ b/arch/powerpc/sysdev/xive/common.c
> @@ -1579,17 +1579,14 @@ static void xive_debug_show_cpu(struct seq_file 
> *m, int cpu)
>   seq_puts(m, "\n");
>  }
>  
> -static void xive_debug_show_irq(struct seq_file *m, u32 hw_irq, struct 
> irq_data *d)
> +static void xive_debug_show_irq(struct seq_file *m, struct irq_data *d)
>  {
> - struct irq_chip *chip = irq_data_get_irq_chip(d);
> + unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
>   int rc;
>   u32 target;
>   u8 prio;
>   u32 lirq;
>  
> - if (!is_xive_irq(chip))
> - return;
> -
>   rc = xive_ops->get_irq_config(hw_irq, , , );
>   if (rc) {
>   seq_printf(m, "IRQ 0x%08x : no config rc=%d\n", hw_irq, rc);
> @@ -1627,16 +1624,9 @@ static int xive_core_debug_show(struct seq_file 
> *m, void *private)
>  
>   for_each_irq_desc(i, desc) {
>   struct irq_data *d = irq_desc_get_irq_data(desc);
> - unsigned int hw_irq;
> -
> - if (!d)
> - continue;
> -
> - hw_irq = (unsigned int)irqd_to_hwirq(d);
>  
> - /* IPIs are special (HW number 0) */
> - if (hw_irq != XIVE_IPI_HW_IRQ)
> - xive_debug_show_irq(m, hw_irq, d);
> + if (d->domain == xive_irq_domain)
> + xive_debug_show_irq(m, d);
>   }
>   return 0;
>  }

>>>
>>
> 



Re: [PATCH v2 4/8] powerpc/xive: Simplify xive_core_debug_show()

2021-03-09 Thread Greg Kurz
On Tue, 9 Mar 2021 10:13:39 +0100
Greg Kurz  wrote:

> On Mon, 8 Mar 2021 19:11:11 +0100
> Cédric Le Goater  wrote:
> 
> > On 3/8/21 7:07 PM, Greg Kurz wrote:
> > > On Wed, 3 Mar 2021 18:48:53 +0100
> > > Cédric Le Goater  wrote:
> > > 
> > >> Now that the IPI interrupt has its own domain, the checks on the HW
> > >> interrupt number XIVE_IPI_HW_IRQ and on the chip can be replaced by a
> > >> check on the domain.
> > >>
> > >> Signed-off-by: Cédric Le Goater 
> > >> ---
> > > 
> > > Shouldn't this have the following tags ?
> > > 
> > > Reported-by: kernel test robot 
> > > Reported-by: Dan Carpenter 
> > > Fixes: 930914b7d528 ("powerpc/xive: Add a debugfs file to dump internal 
> > > XIVE state")
> > 
> > The next patch has because it removes the useless check on irq_data.
> >  
> 
> Ok I get it. This report isn't about an actual crash. Just a false
> positive because of the not needed check in the caller.
> 

Hrm... I meant because of the check in xive_debug_show_irq(). On the
contrary, the check removed by this patch in xive_core_debug_show()
was rather an explicit hint that xive_debug_show_irq() couldn't be
called with d being NULL.

> > C.
> > 
> > > 
> > > Anyway,
> > > 
> > > Reviewed-by: Greg Kurz 
> > > 
> > >>  arch/powerpc/sysdev/xive/common.c | 18 --
> > >>  1 file changed, 4 insertions(+), 14 deletions(-)
> > >>
> > >> diff --git a/arch/powerpc/sysdev/xive/common.c 
> > >> b/arch/powerpc/sysdev/xive/common.c
> > >> index 678680531d26..7581cb12bb53 100644
> > >> --- a/arch/powerpc/sysdev/xive/common.c
> > >> +++ b/arch/powerpc/sysdev/xive/common.c
> > >> @@ -1579,17 +1579,14 @@ static void xive_debug_show_cpu(struct seq_file 
> > >> *m, int cpu)
> > >>  seq_puts(m, "\n");
> > >>  }
> > >>  
> > >> -static void xive_debug_show_irq(struct seq_file *m, u32 hw_irq, struct 
> > >> irq_data *d)
> > >> +static void xive_debug_show_irq(struct seq_file *m, struct irq_data *d)
> > >>  {
> > >> -struct irq_chip *chip = irq_data_get_irq_chip(d);
> > >> +unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
> > >>  int rc;
> > >>  u32 target;
> > >>  u8 prio;
> > >>  u32 lirq;
> > >>  
> > >> -if (!is_xive_irq(chip))
> > >> -return;
> > >> -
> > >>  rc = xive_ops->get_irq_config(hw_irq, , , );
> > >>  if (rc) {
> > >>  seq_printf(m, "IRQ 0x%08x : no config rc=%d\n", hw_irq, 
> > >> rc);
> > >> @@ -1627,16 +1624,9 @@ static int xive_core_debug_show(struct seq_file 
> > >> *m, void *private)
> > >>  
> > >>  for_each_irq_desc(i, desc) {
> > >>  struct irq_data *d = irq_desc_get_irq_data(desc);
> > >> -unsigned int hw_irq;
> > >> -
> > >> -if (!d)
> > >> -continue;
> > >> -
> > >> -hw_irq = (unsigned int)irqd_to_hwirq(d);
> > >>  
> > >> -/* IPIs are special (HW number 0) */
> > >> -if (hw_irq != XIVE_IPI_HW_IRQ)
> > >> -xive_debug_show_irq(m, hw_irq, d);
> > >> +if (d->domain == xive_irq_domain)
> > >> +xive_debug_show_irq(m, d);
> > >>  }
> > >>  return 0;
> > >>  }
> > > 
> > 
> 



Re: [PATCH v2 4/8] powerpc/xive: Simplify xive_core_debug_show()

2021-03-09 Thread Greg Kurz
On Mon, 8 Mar 2021 19:11:11 +0100
Cédric Le Goater  wrote:

> On 3/8/21 7:07 PM, Greg Kurz wrote:
> > On Wed, 3 Mar 2021 18:48:53 +0100
> > Cédric Le Goater  wrote:
> > 
> >> Now that the IPI interrupt has its own domain, the checks on the HW
> >> interrupt number XIVE_IPI_HW_IRQ and on the chip can be replaced by a
> >> check on the domain.
> >>
> >> Signed-off-by: Cédric Le Goater 
> >> ---
> > 
> > Shouldn't this have the following tags ?
> > 
> > Reported-by: kernel test robot 
> > Reported-by: Dan Carpenter 
> > Fixes: 930914b7d528 ("powerpc/xive: Add a debugfs file to dump internal 
> > XIVE state")
> 
> The next patch has because it removes the useless check on irq_data.
>  

Ok I get it. This report isn't about an actual crash. Just a false
positive because of the not needed check in the caller.

> C.
> 
> > 
> > Anyway,
> > 
> > Reviewed-by: Greg Kurz 
> > 
> >>  arch/powerpc/sysdev/xive/common.c | 18 --
> >>  1 file changed, 4 insertions(+), 14 deletions(-)
> >>
> >> diff --git a/arch/powerpc/sysdev/xive/common.c 
> >> b/arch/powerpc/sysdev/xive/common.c
> >> index 678680531d26..7581cb12bb53 100644
> >> --- a/arch/powerpc/sysdev/xive/common.c
> >> +++ b/arch/powerpc/sysdev/xive/common.c
> >> @@ -1579,17 +1579,14 @@ static void xive_debug_show_cpu(struct seq_file 
> >> *m, int cpu)
> >>seq_puts(m, "\n");
> >>  }
> >>  
> >> -static void xive_debug_show_irq(struct seq_file *m, u32 hw_irq, struct 
> >> irq_data *d)
> >> +static void xive_debug_show_irq(struct seq_file *m, struct irq_data *d)
> >>  {
> >> -  struct irq_chip *chip = irq_data_get_irq_chip(d);
> >> +  unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
> >>int rc;
> >>u32 target;
> >>u8 prio;
> >>u32 lirq;
> >>  
> >> -  if (!is_xive_irq(chip))
> >> -  return;
> >> -
> >>rc = xive_ops->get_irq_config(hw_irq, , , );
> >>if (rc) {
> >>seq_printf(m, "IRQ 0x%08x : no config rc=%d\n", hw_irq, rc);
> >> @@ -1627,16 +1624,9 @@ static int xive_core_debug_show(struct seq_file *m, 
> >> void *private)
> >>  
> >>for_each_irq_desc(i, desc) {
> >>struct irq_data *d = irq_desc_get_irq_data(desc);
> >> -  unsigned int hw_irq;
> >> -
> >> -  if (!d)
> >> -  continue;
> >> -
> >> -  hw_irq = (unsigned int)irqd_to_hwirq(d);
> >>  
> >> -  /* IPIs are special (HW number 0) */
> >> -  if (hw_irq != XIVE_IPI_HW_IRQ)
> >> -  xive_debug_show_irq(m, hw_irq, d);
> >> +  if (d->domain == xive_irq_domain)
> >> +  xive_debug_show_irq(m, d);
> >>}
> >>return 0;
> >>  }
> > 
> 



Re: [PATCH v2 4/8] powerpc/xive: Simplify xive_core_debug_show()

2021-03-08 Thread Cédric Le Goater
On 3/8/21 7:07 PM, Greg Kurz wrote:
> On Wed, 3 Mar 2021 18:48:53 +0100
> Cédric Le Goater  wrote:
> 
>> Now that the IPI interrupt has its own domain, the checks on the HW
>> interrupt number XIVE_IPI_HW_IRQ and on the chip can be replaced by a
>> check on the domain.
>>
>> Signed-off-by: Cédric Le Goater 
>> ---
> 
> Shouldn't this have the following tags ?
> 
> Reported-by: kernel test robot 
> Reported-by: Dan Carpenter 
> Fixes: 930914b7d528 ("powerpc/xive: Add a debugfs file to dump internal XIVE 
> state")

The next patch has because it removes the useless check on irq_data.
 
C.

> 
> Anyway,
> 
> Reviewed-by: Greg Kurz 
> 
>>  arch/powerpc/sysdev/xive/common.c | 18 --
>>  1 file changed, 4 insertions(+), 14 deletions(-)
>>
>> diff --git a/arch/powerpc/sysdev/xive/common.c 
>> b/arch/powerpc/sysdev/xive/common.c
>> index 678680531d26..7581cb12bb53 100644
>> --- a/arch/powerpc/sysdev/xive/common.c
>> +++ b/arch/powerpc/sysdev/xive/common.c
>> @@ -1579,17 +1579,14 @@ static void xive_debug_show_cpu(struct seq_file *m, 
>> int cpu)
>>  seq_puts(m, "\n");
>>  }
>>  
>> -static void xive_debug_show_irq(struct seq_file *m, u32 hw_irq, struct 
>> irq_data *d)
>> +static void xive_debug_show_irq(struct seq_file *m, struct irq_data *d)
>>  {
>> -struct irq_chip *chip = irq_data_get_irq_chip(d);
>> +unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
>>  int rc;
>>  u32 target;
>>  u8 prio;
>>  u32 lirq;
>>  
>> -if (!is_xive_irq(chip))
>> -return;
>> -
>>  rc = xive_ops->get_irq_config(hw_irq, , , );
>>  if (rc) {
>>  seq_printf(m, "IRQ 0x%08x : no config rc=%d\n", hw_irq, rc);
>> @@ -1627,16 +1624,9 @@ static int xive_core_debug_show(struct seq_file *m, 
>> void *private)
>>  
>>  for_each_irq_desc(i, desc) {
>>  struct irq_data *d = irq_desc_get_irq_data(desc);
>> -unsigned int hw_irq;
>> -
>> -if (!d)
>> -continue;
>> -
>> -hw_irq = (unsigned int)irqd_to_hwirq(d);
>>  
>> -/* IPIs are special (HW number 0) */
>> -if (hw_irq != XIVE_IPI_HW_IRQ)
>> -xive_debug_show_irq(m, hw_irq, d);
>> +if (d->domain == xive_irq_domain)
>> +xive_debug_show_irq(m, d);
>>  }
>>  return 0;
>>  }
> 



Re: [PATCH v2 4/8] powerpc/xive: Simplify xive_core_debug_show()

2021-03-08 Thread Greg Kurz
On Wed, 3 Mar 2021 18:48:53 +0100
Cédric Le Goater  wrote:

> Now that the IPI interrupt has its own domain, the checks on the HW
> interrupt number XIVE_IPI_HW_IRQ and on the chip can be replaced by a
> check on the domain.
> 
> Signed-off-by: Cédric Le Goater 
> ---

Shouldn't this have the following tags ?

Reported-by: kernel test robot 
Reported-by: Dan Carpenter 
Fixes: 930914b7d528 ("powerpc/xive: Add a debugfs file to dump internal XIVE 
state")


Anyway,

Reviewed-by: Greg Kurz 

>  arch/powerpc/sysdev/xive/common.c | 18 --
>  1 file changed, 4 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/powerpc/sysdev/xive/common.c 
> b/arch/powerpc/sysdev/xive/common.c
> index 678680531d26..7581cb12bb53 100644
> --- a/arch/powerpc/sysdev/xive/common.c
> +++ b/arch/powerpc/sysdev/xive/common.c
> @@ -1579,17 +1579,14 @@ static void xive_debug_show_cpu(struct seq_file *m, 
> int cpu)
>   seq_puts(m, "\n");
>  }
>  
> -static void xive_debug_show_irq(struct seq_file *m, u32 hw_irq, struct 
> irq_data *d)
> +static void xive_debug_show_irq(struct seq_file *m, struct irq_data *d)
>  {
> - struct irq_chip *chip = irq_data_get_irq_chip(d);
> + unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
>   int rc;
>   u32 target;
>   u8 prio;
>   u32 lirq;
>  
> - if (!is_xive_irq(chip))
> - return;
> -
>   rc = xive_ops->get_irq_config(hw_irq, , , );
>   if (rc) {
>   seq_printf(m, "IRQ 0x%08x : no config rc=%d\n", hw_irq, rc);
> @@ -1627,16 +1624,9 @@ static int xive_core_debug_show(struct seq_file *m, 
> void *private)
>  
>   for_each_irq_desc(i, desc) {
>   struct irq_data *d = irq_desc_get_irq_data(desc);
> - unsigned int hw_irq;
> -
> - if (!d)
> - continue;
> -
> - hw_irq = (unsigned int)irqd_to_hwirq(d);
>  
> - /* IPIs are special (HW number 0) */
> - if (hw_irq != XIVE_IPI_HW_IRQ)
> - xive_debug_show_irq(m, hw_irq, d);
> + if (d->domain == xive_irq_domain)
> + xive_debug_show_irq(m, d);
>   }
>   return 0;
>  }



[PATCH v2 4/8] powerpc/xive: Simplify xive_core_debug_show()

2021-03-03 Thread Cédric Le Goater
Now that the IPI interrupt has its own domain, the checks on the HW
interrupt number XIVE_IPI_HW_IRQ and on the chip can be replaced by a
check on the domain.

Signed-off-by: Cédric Le Goater 
---
 arch/powerpc/sysdev/xive/common.c | 18 --
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/arch/powerpc/sysdev/xive/common.c 
b/arch/powerpc/sysdev/xive/common.c
index 678680531d26..7581cb12bb53 100644
--- a/arch/powerpc/sysdev/xive/common.c
+++ b/arch/powerpc/sysdev/xive/common.c
@@ -1579,17 +1579,14 @@ static void xive_debug_show_cpu(struct seq_file *m, int 
cpu)
seq_puts(m, "\n");
 }
 
-static void xive_debug_show_irq(struct seq_file *m, u32 hw_irq, struct 
irq_data *d)
+static void xive_debug_show_irq(struct seq_file *m, struct irq_data *d)
 {
-   struct irq_chip *chip = irq_data_get_irq_chip(d);
+   unsigned int hw_irq = (unsigned int)irqd_to_hwirq(d);
int rc;
u32 target;
u8 prio;
u32 lirq;
 
-   if (!is_xive_irq(chip))
-   return;
-
rc = xive_ops->get_irq_config(hw_irq, , , );
if (rc) {
seq_printf(m, "IRQ 0x%08x : no config rc=%d\n", hw_irq, rc);
@@ -1627,16 +1624,9 @@ static int xive_core_debug_show(struct seq_file *m, void 
*private)
 
for_each_irq_desc(i, desc) {
struct irq_data *d = irq_desc_get_irq_data(desc);
-   unsigned int hw_irq;
-
-   if (!d)
-   continue;
-
-   hw_irq = (unsigned int)irqd_to_hwirq(d);
 
-   /* IPIs are special (HW number 0) */
-   if (hw_irq != XIVE_IPI_HW_IRQ)
-   xive_debug_show_irq(m, hw_irq, d);
+   if (d->domain == xive_irq_domain)
+   xive_debug_show_irq(m, d);
}
return 0;
 }
-- 
2.26.2