On Tue, 6 Sep 2016, Tomasz Nowicki wrote:
> -static int __init its_pci_msi_init(void)
> +static int __init its_pci_msi_init_one(struct fwnode_handle *handle,
> +                                    const char *name)
>  {
> -     struct device_node *np;
>       struct irq_domain *parent;
>  
> +     parent = irq_find_matching_fwnode(handle, DOMAIN_BUS_NEXUS);
> +     if (!parent || !msi_get_domain_info(parent)) {
> +             pr_err("%s: Unable to locate ITS domain\n", name);
> +             return -ENXIO;
> +     }
> +
> +     if (!pci_msi_create_irq_domain(handle, &its_pci_msi_domain_info,
> +                                    parent)) {
> +             pr_err("%s: Unable to create PCI domain\n", name);
> +             return -ENOMEM;

So you have error codes here.

> +     }
> +
> +     return 0;
> +}
> +
> +static int __init its_pci_of_msi_init(void)
> +{
> +     struct device_node *np;
> +
>       for (np = of_find_matching_node(NULL, its_device_id); np;
>            np = of_find_matching_node(np, its_device_id)) {
>               if (!of_property_read_bool(np, "msi-controller"))
>                       continue;
>  
> -             parent = irq_find_matching_host(np, DOMAIN_BUS_NEXUS);
> -             if (!parent || !msi_get_domain_info(parent)) {
> -                     pr_err("%s: unable to locate ITS domain\n",
> -                            np->full_name);
> +             if (its_pci_msi_init_one(of_node_to_fwnode(np), np->full_name))
>                       continue;
> -             }
> -
> -             if (!pci_msi_create_irq_domain(of_node_to_fwnode(np),
> -                                            &its_pci_msi_domain_info,
> -                                            parent)) {
> -                     pr_err("%s: unable to create PCI domain\n",
> -                            np->full_name);
> -                     continue;
> -             }
>  
>               pr_info("PCI/MSI: %s domain created\n", np->full_name);
>       }
>  
>       return 0;

And no matter what you return success

>  }
> +
> +static int __init its_pci_msi_init(void)
> +{
> +     its_pci_of_msi_init();

Which you subsequently ignore here. What's the point?

Thanks,

        tglx

Reply via email to