On Mon, May 23, 2022 at 04:39:56PM +0300, Dmitry Baryshkov wrote: > On 23/05/2022 10:53, Johan Hovold wrote: > > On Fri, May 20, 2022 at 09:31:10PM +0300, Dmitry Baryshkov wrote: > >> +static int dw_pcie_parse_split_msi_irq(struct pcie_port *pp) > >> +{ > >> + struct dw_pcie *pci = to_dw_pcie_from_pp(pp); > >> + struct device *dev = pci->dev; > >> + struct platform_device *pdev = to_platform_device(dev); > >> + int irq; > >> + u32 ctrl; > >> + > >> + irq = platform_get_irq_byname_optional(pdev, split_msi_names[0]); > >> + if (irq == -ENXIO) > >> + return -ENXIO; > > > > You still need to check for other errors and -EPROBE_DEFER here. > > I think even the if (irq < 0) return irq; will work here. No need to print errors unless -EPROBEDEFER as you do below? > >> + > >> + pp->msi_irq[0] = irq; > >> + > >> + /* Parse as many IRQs as described in the DTS. */ > > > > s/DTS/devicetree/ > > > >> + for (ctrl = 1; ctrl < MAX_MSI_CTRLS; ctrl++) { > >> + irq = platform_get_irq_byname_optional(pdev, split_msi_names[ctrl]); > >> + if (irq == -ENXIO) > >> + break; > >> + if (irq < 0) > >> + return dev_err_probe(dev, irq, > >> + "Failed to parse MSI IRQ '%s'\n", > >> + split_msi_names[ctrl]); > >> + > >> + pp->msi_irq[ctrl] = irq; > >> + } > >> + > >> + pp->num_vectors = ctrl * MAX_MSI_IRQS_PER_CTRL; > >> + > >> + return 0; > >> +} Johan