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

From: Greg Kurz <[email-masked]>
Date: Tue, 9 Mar 2021 10:13:39 +0100

On Mon, 8 Mar 2021 19:11:11 +0100
Cédric Le Goater <[email-masked]> wrote:

> On 3/8/21 7:07 PM, Greg Kurz wrote:
> > On Wed, 3 Mar 2021 18:48:53 +0100
> > Cédric Le Goater <[email-masked]> 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 <[email-masked]>
> >> ---
> > 
> > Shouldn't this have the following tags ?
> > 
> > Reported-by: kernel test robot <[email-masked]>
> > Reported-by: Dan Carpenter <[email-masked]>
> > 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 <[email-masked]>
> > 
> >>  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, &target, &prio, &lirq);
> >>  	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;
> >>  }
> > 
>