On 23/05/2022 18:32, Johan Hovold wrote:
On Mon, May 23, 2022 at 06:17:19PM +0300, Dmitry Baryshkov wrote:
On 23/05/2022 17:02, Johan Hovold wrote:
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?
There is no separate print for the dw_pcie_parse_split_msi_irq() errors.
I don't understand what you're referring to here.
My question is: Why would you not be printing error messages for msi0 as
you are for msi1..msi7 in the loop below.
Yeah, this seems like a correct idea. Thank you!
+
+ 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
--
With best wishes
Dmitry