All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Julia Lawall <julia.lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Randy Dunlap <rdunlap@infradead.org>,
	Yinghai Lu <yinghai@kernel.org>, Borislav Petkov <bp@alien8.de>,
	Jason Cooper <jason@lakedaemon.net>,
	Kevin Cernekee <cernekee@gmail.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Tony Luck <tony.luck@intel.com>,
	x86@kernel.org, LKML <linux-kernel@vger.kernel.org>,
	linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
Date: Wed, 24 Jun 2015 23:10:42 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.11.1506242137070.4037@nanos> (raw)
In-Reply-To: <alpine.DEB.2.02.1506132240500.2020@localhost6.localdomain6>

On Sat, 13 Jun 2015, Julia Lawall wrote:
> On Sat, 13 Jun 2015, Thomas Gleixner wrote:
> 
> > On Sat, 13 Jun 2015, Julia Lawall wrote:
> > 
> > > The following are the cases that require some manual attention, either 
> > > because the handler is a local variable or because it is some other kind 
> > > of expression.
> > 
> > yep, found it in the logs already and found a missing search expression:
> > 
> > |
> > gpiochip_set_chained_irqchip@p(e1,e2,e3,\(lih\|ih\|eh\))
> > 
> > This is really impressive work!!!!
> 
> Thanks :)
> 
> I'll add the above pattern, but I guess you already have the results for 
> that case.

Yes.

I did some more experiments and analyzed all functions which have the
signature

[static] void f(T irq, struct irq_desc *desc)

where T is either 'unsigned int' or 'u32'

That throws up a handful of false positives, but those are functions
which are called from a real handler function, so we want to look at
those anyway.

Now where my cocci foo ends is when I try to match both types in the
same rule, i.e. 

@ fun exists @
identifier hf,irq,desc;
typedef u32;
@@

(
void hf(unsigned irq, struct irq_desc *desc) { ... }
|
void hf(u32 irq, struct irq_desc *desc) { ... }
)

results in:
Fatal error: exception Failure("minus: parse error: 
 = File "../cocci/find-pot-handler.cocci", line 7, column 5,  charpos = 63
    around = 'hf', whole content = void hf(unsigned irq, struct irq_desc *desc) { ... }
")

I tried a couple of other variants, but finally gave up and ran a
cocci script first which does s/u32/unsigned/ on those functions, but
of course because I'm lazy I wanted to do everything in one go. :)

Aside of that the ruleset you gave me works nicely except for that
part:

// no uses of the first parameter before the assignment
@@
identifier fun.hf,irq;
expression e;
type T;
fresh identifier firq = "__" ## irq;
position r.p,p1 != {s.p1,s1.p1};
@@

hf(T@p
- irq
+ firq
  ,...) {
  ... when != irq
      when strict
? irq@p1 = e
  ... when any
}

That lacks a:

+ unsigned int irq;

and therefor missed to add the local variable 'unsigned int irq' in
case the parameter is only used for local storage.

That was simple enough to fix even for me :)

Thanks,

	tglx


  reply	other threads:[~2015-06-24 21:12 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-20  9:59 [RFC v1 00/25] Optimize irq flow handler Jiang Liu
2015-05-20  9:59 ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 01/25] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-05-20 19:35   ` Russell King - ARM Linux
2015-05-20 19:35     ` Russell King - ARM Linux
2015-05-20  9:59 ` [RFC v1 02/25] avr32, " Jiang Liu
2015-05-20 10:15   ` Hans-Christian Egtvedt
2015-05-20  9:59 ` [RFC v1 03/25] MIPS, " Jiang Liu
2015-05-20  9:59 ` [RFC v1 04/25] powerpc, " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-06-02  9:58   ` [RFC, v1, " Michael Ellerman
2015-05-20  9:59 ` [RFC v1 05/25] gpio: " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-06-01 12:45   ` Linus Walleij
2015-06-01 12:45     ` Linus Walleij
2015-06-01 12:45     ` Linus Walleij
2015-06-01 13:48     ` Jiang Liu
2015-06-01 13:48       ` Jiang Liu
2015-06-01 13:48       ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 06/25] pinctrl: " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-06-01 12:46   ` Linus Walleij
2015-06-01 12:46     ` Linus Walleij
2015-05-20  9:59 ` [RFC v1 07/25] irqchip: " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 08/25] mfd: " Jiang Liu
2015-05-20 10:44   ` Lee Jones
2015-05-20 10:44     ` Lee Jones
2015-05-20  9:59 ` [RFC v1 09/25] ipu: " Jiang Liu
2015-05-20  9:59 ` [RFC v1 10/25] sh: intc: " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-05-20 15:12   ` Thomas Gleixner
2015-05-20 15:12     ` Thomas Gleixner
2015-05-20 15:24     ` Jiang Liu
2015-05-20 15:24       ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 11/25] keystone, irq: Use irq_data_get_xxx() to avoid redundant lookup of irq_data Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 12/25] spmi: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Jiang Liu
2015-05-20 10:00 ` [RFC v1 13/25] genirq: Kill the parameter 'irq' of kstat_incr_irqs_this_cpu() Jiang Liu
2015-05-20 15:23   ` Thomas Gleixner
2015-05-20 10:00 ` [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t Jiang Liu
2015-05-20 15:25   ` Thomas Gleixner
2015-05-20 15:28     ` Jiang Liu
2015-05-20 18:35       ` Thomas Gleixner
2015-05-20 20:00         ` Julia Lawall
2015-05-20 20:12           ` Thomas Gleixner
2015-05-20 20:15             ` Julia Lawall
2015-05-20 20:22               ` Thomas Gleixner
2015-06-12 20:29                 ` Julia Lawall
2015-06-12 20:35                   ` Thomas Gleixner
2015-06-12 22:16                     ` Julia Lawall
2015-06-13  8:27         ` Julia Lawall
2015-06-13  9:00         ` Julia Lawall
2015-06-13  9:32           ` Thomas Gleixner
2015-06-13 14:04             ` Julia Lawall
2015-06-13 14:53               ` Julia Lawall
2015-06-13 16:49                 ` Jiang Liu
2015-06-13 20:15                   ` Julia Lawall
2015-06-13 20:32                     ` Thomas Gleixner
2015-06-13 20:42                       ` Julia Lawall
2015-06-24 21:10                         ` Thomas Gleixner [this message]
2015-06-24 21:44                           ` Julia Lawall
2015-06-13 21:42                       ` Julia Lawall
2015-05-20 18:36       ` Thomas Gleixner
2015-05-20 10:00 ` [RFC v1 15/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 15:28   ` Thomas Gleixner
2015-05-20 15:28     ` Thomas Gleixner
2015-05-20 15:28     ` Thomas Gleixner
2015-05-20 15:32     ` Jiang Liu
2015-05-20 15:32       ` Jiang Liu
2015-05-20 15:32       ` Jiang Liu
2015-05-20 15:48       ` Thomas Gleixner
2015-05-20 15:48         ` Thomas Gleixner
2015-05-20 15:48         ` Thomas Gleixner
2015-05-20 15:38   ` Hans Ulli Kroll
2015-05-20 15:38     ` Hans Ulli Kroll
2015-05-20 15:38     ` Hans Ulli Kroll
2015-05-20 18:54   ` Robert Jarzmik
2015-05-20 18:54     ` Robert Jarzmik
2015-05-20 18:54     ` Robert Jarzmik
2015-05-20 10:00 ` [RFC v1 16/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 17/25] " Jiang Liu
2015-05-20 10:00 ` [RFC v1 18/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 19/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 20/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:16   ` Hans-Christian Egtvedt
2015-05-20 10:16     ` Hans-Christian Egtvedt
2015-05-20 10:16     ` Hans-Christian Egtvedt
2015-05-20 10:00 ` [RFC v1 21/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 22/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 23/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 24/25] " Jiang Liu
2015-05-20 10:43   ` Lee Jones
2015-05-20 10:43     ` Lee Jones
2015-05-20 10:00 ` [RFC v1 25/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 15:40   ` Thomas Gleixner
2015-05-20 15:40     ` Thomas Gleixner
2015-05-20 15:49     ` Jiang Liu
2015-05-20 15:49       ` Jiang Liu
2015-05-20 18:43       ` Thomas Gleixner
2015-05-20 18:43         ` Thomas Gleixner
2015-05-20 10:16 ` [RFC v1 00/25] Optimize irq flow handler Ingo Molnar
2015-05-20 10:16   ` Ingo Molnar
2015-05-20 10:23   ` Jiang Liu
2015-05-20 10:23     ` Jiang Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.11.1506242137070.4037@nanos \
    --to=tglx@linutronix.de \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=bp@alien8.de \
    --cc=cernekee@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jason@lakedaemon.net \
    --cc=jiang.liu@linux.intel.com \
    --cc=julia.lawall@lip6.fr \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mingo@redhat.com \
    --cc=rdunlap@infradead.org \
    --cc=rjw@rjwysocki.net \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.