Messages in this thread | | | Date | Mon, 16 Jun 2014 10:23:34 +0200 | From | Andreas Larsson <> | Subject | Re: [PATCH 00/21] add and use devm_irq_of_parse_and_map() |
| |
On 2014-06-12 21:02, Nikita Yushchenko wrote: >>> Currently many device tree aware drivers use irq_of_parse_and_map() to >>> get >>> IRQ number and then devm_request_irq() to set up IRQ handler. >>> >>> This causes a problem for exit path and for error paths: undo action for >>> irq_of_parse_and_map() is irq_dispose_mapping() that must not be called >>> while IRQ handler is defined, but devres moves free_irq() out of driver >>> so driver does not have safe place to call irq_dispose_mapping(). >>> >>> So many drivers do not call irq_dispose_mapping() at all, others call it >>> while IRQ handler is defined (which is incorrect and causes error >>> messages >>> in logs), even others refuse to use devres for managing IRQ handlers. >>> >>> This patchset adds devres version of irq_of_parse_and_map(), and updates >>> in-tree users of both devres and irq_of_parse_and_map() to use >>> devm_irq_of_parse_and_map() instead. >> >> >> SPARC does not use OF_IRQ and has a different implementation of >> irq_of_parse_and_map than the one in drivers/of/irq.c. All code >> converted from irq_of_parse_and_map to devm_irq_of_parse_and_map in this >> patch set will be unlinkable for SPARC. This includes SPI in general and >> many drivers that are used for SPARC (of which several are currently >> only used on SPARC platforms). > > Can this be fixed by adding a copy of devm_irq_of_parse_and_map() to > arch/sparc/kernel/of_device_common.c ?
Not a copy of the version in irq.c no. On SPARC, IRQ_DOMAIN is not selected in general.
However, there is no technical problem that I can see with having a SPARC version of devm_irq_of_parse_and_map that just calls irq_of_parse_and_map as there are no mappings that needs to be disposed of. (The empty dummy for irq_dispose_mapping is used if any irq_dispose_mapping calls are made from drivers).
Best regards, Andreas Larsson
| |