linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Julia Lawall <julia.lawall@lip6.fr>
To: Thomas Gleixner <tglx@linutronix.de>
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,
	Julia Lawall <julia.lawall@lip6.fr>
Subject: Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
Date: Wed, 20 May 2015 22:00:32 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.10.1505202155420.2642@hadrien> (raw)
In-Reply-To: <alpine.DEB.2.11.1505201750280.4225@nanos>



On Wed, 20 May 2015, Thomas Gleixner wrote:

> B1;2802;0cOn Wed, 20 May 2015, Jiang Liu wrote:
> > On 2015/5/20 23:25, Thomas Gleixner wrote:
> > > On Wed, 20 May 2015, Jiang Liu wrote:
> > >> --- a/include/linux/irqdesc.h
> > >> +++ b/include/linux/irqdesc.h
> > >> @@ -99,6 +99,11 @@ static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
> > >>  	return container_of(data->common, struct irq_desc, irq_common_data);
> > >>  }
> > >>
> > >> +static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
> > >> +{
> > >> +	return desc->irq_data.irq;
> > >> +}
> > >> +
> > >
> > > Does not apply either.
> > Hi Thomas,
> > 	Will check the base again.
> > 	Please do not apply patch after [14/25]. There are here to
> > ask for comments, there are still building issues with patch after
> > [14/25]. Just help to comment whether it's on the right direction.
> > If so, I will send another version for formal review.
>
> I think you are doing that conversion wrong. You should first change
> all handlers which use the irq argument to:
>
>     handler(unsigned __irq, *desc)
>
> and add the local variable
>
>     unsigned irq;
>
> or
>
>     unsigned irq = irq_desc_get_irq(desc);
>
> for those.
>
> So that results in a pretty small series of patches.
>
> Once that is done, you can remove the irq argument in one go treewide.
>
> And you should do that with scripting aid. Coccinelle is the proper
> tool for this. If you have problems with cocci, you can politely ask
> Julia (Cc'ed) for help. She's the master of coccinelle :)
>
> The purpose of the script is to:
>
>     1) Identify all handlers
>
>        This can be done by analyzing the arguments of
>
>        	    __irq_set_handler()
> 	    irq_set_handler()
> 	    irq_set_chained_handler()
> 	    irq_alloc_generic_chip()
> 	    irq_alloc_domain_generic_chips()
> 	    irq_set_chip_and_handler_name()
> 	    irq_set_chip_and_handler()
> 	    __irq_set_handler_locked()
> 	    __irq_set_chip_handler_name_locked()
> 	    __irq_set_preflow_handler()
>
> 	If the argument is a function local to the file step 2 can
> 	take place.
>
> 	If it's a extern function, then the script should at least
> 	print out the function names. Those are in most of the cases
> 	the generic flow handler functions.

Looks reasonable.

>     2) Check the handlers whether they use the irq argument
>
>        For those which do:
>
>           Check whether they just use the argument instead of a local
>        	  variable, i.e. the first usage is an assignment. In that
>        	  case rename the argument to __irq and add a local variable
>
> 	      unsigned int irq;
>
> 	  If they use the irq argument for some computation or as
>        	  argument to another function, then you need to rename the
>        	  argument as well and add:
>
>        	      unsigned int irq = irq_get_desc_irq(desc);

Scripting this may be a little complex, because the variable can be used
in one way in one execution path (eg if branch) and another way (or not at
all) in another.  Let me know if help is needed.

julia

> So this results in a series of patches which can be merged right
> away. If that lot has hit Linus tree and right after -rc1, we run the
> script again and find and fix stuff which got added throughout the
> merge window. That might result in 0 to n patches.
>
> The last step is another script which does:
>
>     1) Identify all handlers
>
>     2) Remove the irq argument
>
> We can send that right after -rc1 so no new users can trickle in.
>
> It's really important to do that with scripts. It seems you try to do
> it via compile testing. But that will fail as you CANNOT execute all
> possible config combinations.
>
> Thanks,
>
> 	tglx
>
>

  reply	other threads:[~2015-05-20 20:00 UTC|newest]

Thread overview: 69+ 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 ` [RFC v1 01/25] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Jiang Liu
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 ` [RFC v1 05/25] gpio: " Jiang Liu
2015-06-01 12:45   ` Linus Walleij
2015-06-01 13:48     ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 06/25] pinctrl: " Jiang Liu
2015-05-20  9:59 ` [RFC v1 07/25] irqchip: " Jiang Liu
2015-05-20  9:59 ` [RFC v1 08/25] mfd: " Jiang Liu
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 15:12   ` Thomas Gleixner
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 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 [this message]
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
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 15:28   ` Thomas Gleixner
2015-05-20 15:32     ` Jiang Liu
2015-05-20 15:48       ` Thomas Gleixner
2015-05-20 15:38   ` Hans Ulli Kroll
2015-05-20 18:54   ` Robert Jarzmik
2015-05-20 10:00 ` [RFC v1 16/25] " 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 ` [RFC v1 19/25] " Jiang Liu
2015-05-20 10:00 ` [RFC v1 20/25] " Jiang Liu
2015-05-20 10:16   ` Hans-Christian Egtvedt
2015-05-20 10:00 ` [RFC v1 21/25] " Jiang Liu
2015-05-20 10:00 ` [RFC v1 22/25] " Jiang Liu
2015-05-20 10:00 ` [RFC v1 23/25] " Jiang Liu
2015-05-20 10:00 ` [RFC v1 24/25] " Jiang Liu
2015-05-20 10:43   ` Lee Jones
2015-05-20 10:00 ` [RFC v1 25/25] " Jiang Liu
2015-05-20 15:40   ` Thomas Gleixner
2015-05-20 15:49     ` Jiang Liu
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: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.10.1505202155420.2642@hadrien \
    --to=julia.lawall@lip6.fr \
    --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=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=tglx@linutronix.de \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).