Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1320619
| From | Brian Starkey <brian.starkey@arm.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] genirq: fix trigger flags check for shared irqs |
| Date | 2016-01-28 13:30 +0100 |
| Message-ID | <qVTS2-3iP-5@gated-at.bofh.it> (permalink) |
| References | (1 earlier) <qViIN-1ad-5@gated-at.bofh.it> <qVRGy-1R3-3@gated-at.bofh.it> <qVS9A-24O-19@gated-at.bofh.it> <qVSMi-2B1-17@gated-at.bofh.it> <qVTp1-2RX-17@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Thu, Jan 28, 2016 at 12:49:37PM +0100, Thomas Gleixner wrote: >On Thu, 28 Jan 2016, Brian Starkey wrote: >> I've got a few devices on the same interrupt line. One driver does > >Just for the record: When will hardware folks finally understand that shared >interrupt lines are a nightmare? > In general, agreed. In this case though I think they get some grace - my devices are all in an FPGA which only has one interrupt line to the SoC. >> something along these lines: >> >> res = platform_get_resource(dev, IORESOURCE_IRQ, 0); >> flags = (res->flags & IRQF_TRIGGER_MASK) | IRQF_SHARED; >> request_irq(res->start, handler, flags, "name", dev); >> >> This seems pretty reasonable. The problem is since 4a43d686fe33: >> of/irq: Pass trigger type in IRQ resource flags[1] >> the trigger type information from device-tree is in res->flags. >> >> So when the other drivers don't pass in any flags, they fail the check >> in __setup_irq(). >> >> Changing the former driver to remove the flags doesn't seem right, and >> adding flags to the latter would imply adding flags to _every_ driver, >> which is an awful lot to change - and I'm not sure it would be possible >> and/or effective in all cases. > >So that commit does: > > r->flags = IORESOURCE_IRQ | irqd_get_trigger_type(irq_get_irq_data(irq)); > >which reads the current setting of the interrupt line. > >Now we pass exactly that to request_irq(). So first irq_of_parse_and_map() >configures the interrupt type when mapping it and then hands in the same type >information when requesting the irq. Right, there's some redundancy here. > >I have no idea what the purpose of this is and the changelog of that commit is >completely useless, sigh! > >I've cc'ed the author and the device tree folks. Perhaps are they able to >explain what this commit tries to 'fix'. This 'fix' is what makes me hit the problem - but even without it I think the problem still exists. It seems like in principle two drivers ought to be able to do request_irq(irq, handler, IRQF_SHARED | IRQF_TRIGGER_HIGH, ...); and request_irq(irq, handler, IRQF_SHARED, ...); without the latter call failing. Or do you disagree? -Brian > >Thanks, > > tglx >
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: [PATCH] genirq: fix trigger flags check for shared irqs Brian Starkey <brian.starkey@arm.com> - 2016-01-28 11:10 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Thomas Gleixner <tglx@linutronix.de> - 2016-01-28 11:40 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Brian Starkey <brian.starkey@arm.com> - 2016-01-28 12:20 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Thomas Gleixner <tglx@linutronix.de> - 2016-01-28 13:00 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Brian Starkey <brian.starkey@arm.com> - 2016-01-28 13:30 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Thomas Gleixner <tglx@linutronix.de> - 2016-01-28 14:40 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Brian Starkey <brian.starkey@arm.com> - 2016-02-08 12:10 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Rob Herring <robh+dt@kernel.org> - 2016-01-28 17:00 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Thomas Gleixner <tglx@linutronix.de> - 2016-01-28 21:10 +0100
Re: [PATCH] genirq: fix trigger flags check for shared irqs Tomasz Figa <tomasz.figa@gmail.com> - 2016-01-29 05:20 +0100
csiph-web