18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/// Since commit 1c6c69525b40 ("genirq: Reject bogus threaded irq requests")
38c2ecf20Sopenharmony_ci/// threaded IRQs without a primary handler need to be requested with
48c2ecf20Sopenharmony_ci/// IRQF_ONESHOT, otherwise the request will fail.
58c2ecf20Sopenharmony_ci///
68c2ecf20Sopenharmony_ci/// So pass the IRQF_ONESHOT flag in this case.
78c2ecf20Sopenharmony_ci///
88c2ecf20Sopenharmony_ci//
98c2ecf20Sopenharmony_ci// Confidence: Moderate
108c2ecf20Sopenharmony_ci// Comments:
118c2ecf20Sopenharmony_ci// Options: --no-includes
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_civirtual patch
148c2ecf20Sopenharmony_civirtual context
158c2ecf20Sopenharmony_civirtual org
168c2ecf20Sopenharmony_civirtual report
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci@r1@
198c2ecf20Sopenharmony_ciexpression dev, irq, thread_fn;
208c2ecf20Sopenharmony_ciposition p;
218c2ecf20Sopenharmony_ci@@
228c2ecf20Sopenharmony_ci(
238c2ecf20Sopenharmony_cirequest_threaded_irq@p(irq, NULL, thread_fn,
248c2ecf20Sopenharmony_ci(
258c2ecf20Sopenharmony_ciIRQF_ONESHOT | ...
268c2ecf20Sopenharmony_ci|
278c2ecf20Sopenharmony_ciIRQF_ONESHOT
288c2ecf20Sopenharmony_ci)
298c2ecf20Sopenharmony_ci, ...)
308c2ecf20Sopenharmony_ci|
318c2ecf20Sopenharmony_cidevm_request_threaded_irq@p(dev, irq, NULL, thread_fn,
328c2ecf20Sopenharmony_ci(
338c2ecf20Sopenharmony_ciIRQF_ONESHOT | ...
348c2ecf20Sopenharmony_ci|
358c2ecf20Sopenharmony_ciIRQF_ONESHOT
368c2ecf20Sopenharmony_ci)
378c2ecf20Sopenharmony_ci, ...)
388c2ecf20Sopenharmony_ci)
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci@r2@
418c2ecf20Sopenharmony_ciexpression dev, irq, thread_fn, flags, e;
428c2ecf20Sopenharmony_ciposition p != r1.p;
438c2ecf20Sopenharmony_ci@@
448c2ecf20Sopenharmony_ci(
458c2ecf20Sopenharmony_ciflags = IRQF_ONESHOT | ...
468c2ecf20Sopenharmony_ci|
478c2ecf20Sopenharmony_ciflags |= IRQF_ONESHOT | ...
488c2ecf20Sopenharmony_ci)
498c2ecf20Sopenharmony_ci... when != flags = e
508c2ecf20Sopenharmony_ci(
518c2ecf20Sopenharmony_cirequest_threaded_irq@p(irq, NULL, thread_fn, flags, ...);
528c2ecf20Sopenharmony_ci|
538c2ecf20Sopenharmony_cidevm_request_threaded_irq@p(dev, irq, NULL, thread_fn, flags, ...);
548c2ecf20Sopenharmony_ci)
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci@depends on patch@
578c2ecf20Sopenharmony_ciexpression dev, irq, thread_fn, flags;
588c2ecf20Sopenharmony_ciposition p != {r1.p,r2.p};
598c2ecf20Sopenharmony_ci@@
608c2ecf20Sopenharmony_ci(
618c2ecf20Sopenharmony_cirequest_threaded_irq@p(irq, NULL, thread_fn,
628c2ecf20Sopenharmony_ci(
638c2ecf20Sopenharmony_ci-0
648c2ecf20Sopenharmony_ci+IRQF_ONESHOT
658c2ecf20Sopenharmony_ci|
668c2ecf20Sopenharmony_ci-flags
678c2ecf20Sopenharmony_ci+flags | IRQF_ONESHOT
688c2ecf20Sopenharmony_ci)
698c2ecf20Sopenharmony_ci, ...)
708c2ecf20Sopenharmony_ci|
718c2ecf20Sopenharmony_cidevm_request_threaded_irq@p(dev, irq, NULL, thread_fn,
728c2ecf20Sopenharmony_ci(
738c2ecf20Sopenharmony_ci-0
748c2ecf20Sopenharmony_ci+IRQF_ONESHOT
758c2ecf20Sopenharmony_ci|
768c2ecf20Sopenharmony_ci-flags
778c2ecf20Sopenharmony_ci+flags | IRQF_ONESHOT
788c2ecf20Sopenharmony_ci)
798c2ecf20Sopenharmony_ci, ...)
808c2ecf20Sopenharmony_ci)
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci@depends on context@
838c2ecf20Sopenharmony_ciexpression dev, irq;
848c2ecf20Sopenharmony_ciposition p != {r1.p,r2.p};
858c2ecf20Sopenharmony_ci@@
868c2ecf20Sopenharmony_ci(
878c2ecf20Sopenharmony_ci*request_threaded_irq@p(irq, NULL, ...)
888c2ecf20Sopenharmony_ci|
898c2ecf20Sopenharmony_ci*devm_request_threaded_irq@p(dev, irq, NULL, ...)
908c2ecf20Sopenharmony_ci)
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci@match depends on report || org@
948c2ecf20Sopenharmony_ciexpression dev, irq;
958c2ecf20Sopenharmony_ciposition p != {r1.p,r2.p};
968c2ecf20Sopenharmony_ci@@
978c2ecf20Sopenharmony_ci(
988c2ecf20Sopenharmony_cirequest_threaded_irq@p(irq, NULL, ...)
998c2ecf20Sopenharmony_ci|
1008c2ecf20Sopenharmony_cidevm_request_threaded_irq@p(dev, irq, NULL, ...)
1018c2ecf20Sopenharmony_ci)
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ci@script:python depends on org@
1048c2ecf20Sopenharmony_cip << match.p;
1058c2ecf20Sopenharmony_ci@@
1068c2ecf20Sopenharmony_cimsg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
1078c2ecf20Sopenharmony_cicoccilib.org.print_todo(p[0],msg)
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci@script:python depends on report@
1108c2ecf20Sopenharmony_cip << match.p;
1118c2ecf20Sopenharmony_ci@@
1128c2ecf20Sopenharmony_cimsg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
1138c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0],msg)
114