On Thu, Feb 8, 2018 at 11:54 PM, Michael Ellerman <mpe@xxxxxxxxxxxxxx> wrote: > Alexey Kardashevskiy <aik@xxxxxxxxx> writes: > >> Commit 59f47eff03a0 ("powerpc/pci: Use of_irq_parse_and_map_pci() helper") >> replaced of_irq_parse_pci() + irq_create_of_mapping() with >> of_irq_parse_and_map_pci() but this change lost virq returned by >> irq_create_of_mapping() so virq remained zero causing INTx >> misconfiguration. >> >> This fixes pci_read_irq_line() not to loose a virq returned by >> of_irq_parse_and_map_pci(). >> >> Fixes: 59f47eff03a0 "powerpc/pci: Use of_irq_parse_and_map_pci() helper" >> Signed-off-by: Alexey Kardashevskiy <aik@xxxxxxxxx> >> --- >> Changes: >> v2: >> * changed the condition from <=0 to !=0 as by design >> of_irq_parse_and_map_pci() can only return 0 for an error and virq>0. > > It returns int, so you should store the result in an int, and check the > result for <= 0. > > Otherwise if it starts returning a negative error value this code will > break. That won't happen until we're confident all callers expect NO_IRQ is only 0 and don't treat negative as NO_IRQ. I expect that to be never, but maybe of_irq_parse_and_map_pci calls can be audited more easily than of_irq_parse_and_map. We ended up with of_irq_get() because we need to return error codes. Rob