Hi Kumar, Today's linux-next merge of the galak tree got a conflict in arch/powerpc/sysdev/fsl_msi.c between commit 61c7a080a5a061c976988fd4b844dfb468dda255 ("of: Always use 'struct device.of_node' to get device node pointer") from Linus' tree and commits 061ca4adfb2e3c986a182fd30f7e939a1ff8d29d ("powerpc/fsl_msi: enable msi sharing through AMP OSes") and 480599933a69a8a8dc1390c2164e49e20a1593b9 ("powerpc/fsl_msi: add removal path and probe failing path") from the galak tree. I fixed it up (see below) and can carry the fix for a while. -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc arch/powerpc/sysdev/fsl_msi.c index a7be144,f7ca9e6..0000000 --- a/arch/powerpc/sysdev/fsl_msi.c +++ b/arch/powerpc/sysdev/fsl_msi.c @@@ -245,11 -293,11 +293,11 @@@ static int __devinit fsl_of_msi_probe(s msi = kzalloc(sizeof(struct fsl_msi), GFP_KERNEL); if (!msi) { dev_err(&dev->dev, "No memory for MSI structure\n"); - err = -ENOMEM; - goto error_out; + return -ENOMEM; } + dev->dev.platform_data = msi; - msi->irqhost = irq_alloc_host(dev->node, IRQ_HOST_MAP_LINEAR, + msi->irqhost = irq_alloc_host(dev->dev.of_node, IRQ_HOST_MAP_LINEAR, NR_MSI_IRQS, &fsl_msi_host_ops, 0); if (msi->irqhost == NULL) { @@@ -298,14 -346,28 +346,28 @@@ err = -EINVAL; goto error_out; } + offset = 0; - p = of_get_property(dev->node, "msi-available-ranges", &len); ++ p = of_get_property(dev->dev.of_node, "msi-available-ranges", &len); + if (p) + offset = *p / IRQS_PER_MSI_REG; count /= sizeof(u32); - for (i = 0; i < count / 2; i++) { - if (i > NR_MSI_REG) - break; + for (i = 0; i < min(count / 2, NR_MSI_REG); i++) { - virt_msir = irq_of_parse_and_map(dev->node, i); + virt_msir = irq_of_parse_and_map(dev->dev.of_node, i); if (virt_msir != NO_IRQ) { - set_irq_data(virt_msir, (void *)i); + cascade_data = kzalloc( + sizeof(struct fsl_msi_cascade_data), + GFP_KERNEL); + if (!cascade_data) { + dev_err(&dev->dev, + "No memory for MSI cascade data\n"); + err = -ENOMEM; + goto error_out; + } + msi->msi_virqs[i] = virt_msir; + cascade_data->index = i + offset; + cascade_data->msi_data = msi; + set_irq_data(virt_msir, (void *)cascade_data); set_irq_chained_handler(virt_msir, fsl_msi_cascade); } } @@@ -345,12 -413,10 +413,13 @@@ static const struct of_device_id fsl_of }; static struct of_platform_driver fsl_of_msi_driver = { - .name = "fsl-msi", - .match_table = fsl_of_msi_ids, + .driver = { + .name = "fsl-msi", + .owner = THIS_MODULE, + .of_match_table = fsl_of_msi_ids, + }, .probe = fsl_of_msi_probe, + .remove = fsl_of_msi_remove, }; static __init int fsl_of_msi_init(void) http://www.canb.auug.org.au/~sfr/ -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html