Re: [PATCH net-next v2] dsa:mv88e6xxx: dispose irq mapping for chip->irq
From: Volodymyr Bendiuga <hidden>
Date: 2016-12-07 16:40:12
Also in:
linux-devicetree
Yes, most of the users of of_irq_get() do not use irq_dispose_mapping(). But some of them do (some irq chips), and I believe the correct way of doing this is to dispose irq mapping, as the description for this function says that it unmaps the irq, which is mapped by of_irq_parse_and_map(). Not disposing irq might not make any affect on most drivers, but some, that get EPROBE_DEFER error do need to dispose. This is what I get when I run the code. of_irq_put() could be implemented, and it would be a wrapper for irq_dispose_mapping() as I can see it. Should I do it this way? On 2016-12-07 15:11, Andrew Lunn wrote:
On Wed, Dec 07, 2016 at 11:35:07AM +0100, Volodymyr Bendiuga wrote:quoted
Signed-off-by: Volodymyr Bendiuga <redacted>You need some text in the Change log. Say why this change is needed, etc. Looking through other users of of_irq_get(), i don't see any disposing of the mapping. It is not obvious you need to do this. The name does not give any hint. Maybe we should add an of_irq_put() which would clean up the mapping? Andrewquoted
--- drivers/net/dsa/mv88e6xxx/chip.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 173ea97..0c3271d 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c@@ -4483,7 +4483,7 @@ static int mv88e6xxx_probe(struct mdio_device *mdiodev) mutex_unlock(&chip->reg_lock); if (err) - goto out; + goto out_dispose; if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_G2_INT)) { err = mv88e6xxx_g2_irq_setup(chip);@@ -4513,6 +4513,9 @@ static int mv88e6xxx_probe(struct mdio_device *mdiodev) mv88e6xxx_g1_irq_free(chip); mutex_unlock(&chip->reg_lock); } + +out_dispose: + irq_dispose_mapping(chip->irq); out: return err; }@@ -4530,6 +4533,7 @@ static void mv88e6xxx_remove(struct mdio_device *mdiodev) if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_G2_INT)) mv88e6xxx_g2_irq_free(chip); mv88e6xxx_g1_irq_free(chip); + irq_dispose_mapping(chip->irq); } }-- 2.7.4
-- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html