mirror of https://gitee.com/openkylin/linux.git
of/irq: Mark interrupt controllers as populated before initialisation
That way the init callback may clear the flag again, in case of drivers
split between early irq chip and a normal platform driver.
Fixes: 15cc2ed6dc
("of/irq: Mark initialised interrupt controllers as populated")
Suggested-by: Rob Herring <robh@kernel.org>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
parent
89c67752ae
commit
e55aeb6ba4
|
@ -544,12 +544,15 @@ void __init of_irq_init(const struct of_device_id *matches)
|
|||
|
||||
list_del(&desc->list);
|
||||
|
||||
of_node_set_flag(desc->dev, OF_POPULATED);
|
||||
|
||||
pr_debug("of_irq_init: init %s (%p), parent %p\n",
|
||||
desc->dev->full_name,
|
||||
desc->dev, desc->interrupt_parent);
|
||||
ret = desc->irq_init_cb(desc->dev,
|
||||
desc->interrupt_parent);
|
||||
if (ret) {
|
||||
of_node_clear_flag(desc->dev, OF_POPULATED);
|
||||
kfree(desc);
|
||||
continue;
|
||||
}
|
||||
|
@ -559,8 +562,6 @@ void __init of_irq_init(const struct of_device_id *matches)
|
|||
* its children can get processed in a subsequent pass.
|
||||
*/
|
||||
list_add_tail(&desc->list, &intc_parent_list);
|
||||
|
||||
of_node_set_flag(desc->dev, OF_POPULATED);
|
||||
}
|
||||
|
||||
/* Get the next pending parent that might have children */
|
||||
|
|
Loading…
Reference in New Issue