All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Jiang Liu <jiang.liu@linux.intel.com>
Cc: 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>,
	"David S. Miller" <davem@davemloft.net>,
	x86@kernel.org, Linus Walleij <linus.walleij@linaro.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	Simon Horman <horms@verge.net.au>,
	Magnus Damm <magnus.damm@gmail.com>,
	bob picco <bpicco@meloft.net>,
	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>,
	linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
	linux-acpi@vger.kernel.org, sparclinux@vger.kernel.orgl
Subject: Re: [Patch v2 06/14] genirq: Move field 'handler_data' from struct irq_data into struct irq_common_d
Date: Wed, 20 May 2015 14:48:39 +0000	[thread overview]
Message-ID: <alpine.DEB.2.11.1505201628400.4225@nanos> (raw)
In-Reply-To: <1432114845-24304-7-git-send-email-jiang.liu@linux.intel.com>

On Wed, 20 May 2015, Jiang Liu wrote:

> Handler data (handler_data) is per-irq instead of per irqchip, so move
> it into struct irq_common_data.

For review and debugging sake, please do the same split as you did
with node. Convert first and then move. 5 patches this time:

Sparc: 
>  arch/sparc/kernel/irq_64.c    |   15 +++++++++------
>  arch/sparc/kernel/sun4d_irq.c |    4 ++--
>  arch/sparc/kernel/sun4m_irq.c |    6 ++++--

x86:
>  arch/x86/kernel/apic/msi.c    |    2 +-
>  arch/x86/kernel/hpet.c        |    4 ++--

gpio:
>  drivers/gpio/gpio-davinci.c   |    2 +-

sh:
>  drivers/sh/intc/virq.c        |    4 ++--

Move:
>  include/linux/irq.h           |    8 ++++----
>  include/linux/irqdesc.h       |    2 +-
>  kernel/irq/chip.c             |    2 +-
>  kernel/irq/irqdesc.c          |    3 ++-

> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index c5e05c82d67c..477d5b8616ab 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -396,7 +396,7 @@ static int gpio_irq_type_unbanked(struct irq_data *data, unsigned trigger)
>  	struct davinci_gpio_regs __iomem *g;
>  	u32 mask;
>  
> -	d = (struct davinci_gpio_controller *)data->handler_data;
> +	d = (struct davinci_gpio_controller *)irq_data_get_irq_handler_data(data);

This type cast is silly, handler_data is (void *)

>  	g = (struct davinci_gpio_regs __iomem *)d->regs;
>  	mask = __gpio_mask(data->irq - d->gpio_irq);
>  
> diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
> index f30ac9354ff2..3dbc21696924 100644
> --- a/drivers/sh/intc/virq.c
> +++ b/drivers/sh/intc/virq.c
> @@ -87,8 +87,8 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
>  	struct irq_data *data = irq_get_irq_data(irq);
>  
>  	/* scan for duplicates */
> -	last = (struct intc_virq_list **)&data->handler_data;
> -	for_each_virq(entry, data->handler_data) {
> +	last = (struct intc_virq_list **)&data->common->handler_data;

That does not make sense. You convert the one below, but not that one
to the accessor function.

handler_data is a pointer to a struct intc_virq_list. So 

	struct intc_virq_list **last, *entry, *head; 

	head = irq_data_get_irq_handler_data(data);
	last = &head;
	
	for_each_virq(entry, head) {
		....
	}

Would be clean code and lets you convert all usage sites of
data->handler_data before actually doing the move to common data.

Thanks,

	tglx

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: Jiang Liu <jiang.liu@linux.intel.com>
Cc: 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>,
	"David S. Miller" <davem@davemloft.net>,
	x86@kernel.org, Linus Walleij <linus.walleij@linaro.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	Simon Horman <horms@verge.net.au>,
	Magnus Damm <magnus.damm@gmail.com>,
	bob picco <bpicco@meloft.net>,
	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>,
	linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
	linux-acpi@vger.kernel.org, sparclinux@vger.kernel.orgl
Subject: Re: [Patch v2 06/14] genirq: Move field 'handler_data' from struct irq_data into struct irq_common_data
Date: Wed, 20 May 2015 16:48:39 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.11.1505201628400.4225@nanos> (raw)
In-Reply-To: <1432114845-24304-7-git-send-email-jiang.liu@linux.intel.com>

On Wed, 20 May 2015, Jiang Liu wrote:

> Handler data (handler_data) is per-irq instead of per irqchip, so move
> it into struct irq_common_data.

For review and debugging sake, please do the same split as you did
with node. Convert first and then move. 5 patches this time:

Sparc: 
>  arch/sparc/kernel/irq_64.c    |   15 +++++++++------
>  arch/sparc/kernel/sun4d_irq.c |    4 ++--
>  arch/sparc/kernel/sun4m_irq.c |    6 ++++--

x86:
>  arch/x86/kernel/apic/msi.c    |    2 +-
>  arch/x86/kernel/hpet.c        |    4 ++--

gpio:
>  drivers/gpio/gpio-davinci.c   |    2 +-

sh:
>  drivers/sh/intc/virq.c        |    4 ++--

Move:
>  include/linux/irq.h           |    8 ++++----
>  include/linux/irqdesc.h       |    2 +-
>  kernel/irq/chip.c             |    2 +-
>  kernel/irq/irqdesc.c          |    3 ++-

> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index c5e05c82d67c..477d5b8616ab 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -396,7 +396,7 @@ static int gpio_irq_type_unbanked(struct irq_data *data, unsigned trigger)
>  	struct davinci_gpio_regs __iomem *g;
>  	u32 mask;
>  
> -	d = (struct davinci_gpio_controller *)data->handler_data;
> +	d = (struct davinci_gpio_controller *)irq_data_get_irq_handler_data(data);

This type cast is silly, handler_data is (void *)

>  	g = (struct davinci_gpio_regs __iomem *)d->regs;
>  	mask = __gpio_mask(data->irq - d->gpio_irq);
>  
> diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
> index f30ac9354ff2..3dbc21696924 100644
> --- a/drivers/sh/intc/virq.c
> +++ b/drivers/sh/intc/virq.c
> @@ -87,8 +87,8 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
>  	struct irq_data *data = irq_get_irq_data(irq);
>  
>  	/* scan for duplicates */
> -	last = (struct intc_virq_list **)&data->handler_data;
> -	for_each_virq(entry, data->handler_data) {
> +	last = (struct intc_virq_list **)&data->common->handler_data;

That does not make sense. You convert the one below, but not that one
to the accessor function.

handler_data is a pointer to a struct intc_virq_list. So 

	struct intc_virq_list **last, *entry, *head; 

	head = irq_data_get_irq_handler_data(data);
	last = &head;
	
	for_each_virq(entry, head) {
		....
	}

Would be clean code and lets you convert all usage sites of
data->handler_data before actually doing the move to common data.

Thanks,

	tglx

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: Jiang Liu <jiang.liu@linux.intel.com>
Cc: 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>,
	"David S. Miller" <davem@davemloft.net>,
	x86@kernel.org, Linus Walleij <linus.walleij@linaro.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	Simon Horman <horms@verge.net.au>,
	Magnus Damm <magnus.damm@gmail.com>,
	bob picco <bpicco@meloft.net>,
	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>,
	linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
	linux-acpi@vger.kernel.org, sparclinux@vger.kernel.org,
	linux-gpio@vger.kernel.org, linux-sh@vger.kernel.org
Subject: Re: [Patch v2 06/14] genirq: Move field 'handler_data' from struct irq_data into struct irq_common_data
Date: Wed, 20 May 2015 16:48:39 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.11.1505201628400.4225@nanos> (raw)
In-Reply-To: <1432114845-24304-7-git-send-email-jiang.liu@linux.intel.com>

On Wed, 20 May 2015, Jiang Liu wrote:

> Handler data (handler_data) is per-irq instead of per irqchip, so move
> it into struct irq_common_data.

For review and debugging sake, please do the same split as you did
with node. Convert first and then move. 5 patches this time:

Sparc: 
>  arch/sparc/kernel/irq_64.c    |   15 +++++++++------
>  arch/sparc/kernel/sun4d_irq.c |    4 ++--
>  arch/sparc/kernel/sun4m_irq.c |    6 ++++--

x86:
>  arch/x86/kernel/apic/msi.c    |    2 +-
>  arch/x86/kernel/hpet.c        |    4 ++--

gpio:
>  drivers/gpio/gpio-davinci.c   |    2 +-

sh:
>  drivers/sh/intc/virq.c        |    4 ++--

Move:
>  include/linux/irq.h           |    8 ++++----
>  include/linux/irqdesc.h       |    2 +-
>  kernel/irq/chip.c             |    2 +-
>  kernel/irq/irqdesc.c          |    3 ++-

> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index c5e05c82d67c..477d5b8616ab 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -396,7 +396,7 @@ static int gpio_irq_type_unbanked(struct irq_data *data, unsigned trigger)
>  	struct davinci_gpio_regs __iomem *g;
>  	u32 mask;
>  
> -	d = (struct davinci_gpio_controller *)data->handler_data;
> +	d = (struct davinci_gpio_controller *)irq_data_get_irq_handler_data(data);

This type cast is silly, handler_data is (void *)

>  	g = (struct davinci_gpio_regs __iomem *)d->regs;
>  	mask = __gpio_mask(data->irq - d->gpio_irq);
>  
> diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
> index f30ac9354ff2..3dbc21696924 100644
> --- a/drivers/sh/intc/virq.c
> +++ b/drivers/sh/intc/virq.c
> @@ -87,8 +87,8 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
>  	struct irq_data *data = irq_get_irq_data(irq);
>  
>  	/* scan for duplicates */
> -	last = (struct intc_virq_list **)&data->handler_data;
> -	for_each_virq(entry, data->handler_data) {
> +	last = (struct intc_virq_list **)&data->common->handler_data;

That does not make sense. You convert the one below, but not that one
to the accessor function.

handler_data is a pointer to a struct intc_virq_list. So 

	struct intc_virq_list **last, *entry, *head; 

	head = irq_data_get_irq_handler_data(data);
	last = &head;
	
	for_each_virq(entry, head) {
		....
	}

Would be clean code and lets you convert all usage sites of
data->handler_data before actually doing the move to common data.

Thanks,

	tglx

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

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-20  9:40 [Patch v2 00/14] Split struct irq_data into common part and per-chip part Jiang Liu
2015-05-20  9:40 ` [Patch v2 01/14] genirq: Introduce struct irq_common_data to host shared irq data Jiang Liu
2015-05-20  9:40 ` [Patch v2 02/14] genirq: Introduce helper function irq_data_get_node() Jiang Liu
2015-05-20  9:40 ` [Patch v2 03/14] x86, irq: Use accessor irq_data_get_node() to hide struct irq_data detail Jiang Liu
2015-05-20  9:40 ` [Patch v2 04/14] sh, " Jiang Liu
2015-05-20  9:40   ` Jiang Liu
2015-05-20  9:40 ` [Patch v2 05/14] genirq: Move field 'node' from struct irq_data into struct irq_common_data Jiang Liu
2015-05-20  9:40 ` [Patch v2 06/14] genirq: Move field 'handler_data' " Jiang Liu
2015-05-20  9:40   ` Jiang Liu
2015-05-20 14:48   ` Thomas Gleixner [this message]
2015-05-20 14:48     ` Thomas Gleixner
2015-05-20 14:48     ` Thomas Gleixner
2015-05-20  9:40 ` [Patch v2 07/14] mn10300: Fix incorrect use of data->affinity Jiang Liu
2015-05-20  9:40 ` [Patch v2 08/14] genirq: Introduce helper function irq_data_get_affinity_mask() Jiang Liu
2015-05-20  9:40   ` Jiang Liu
2015-05-20  9:40   ` Jiang Liu
2015-05-20  9:40   ` Jiang Liu
2015-05-20 14:50   ` Thomas Gleixner
2015-05-20 14:50   ` Thomas Gleixner
2015-05-20 14:50     ` Thomas Gleixner
2015-05-20 14:50     ` Thomas Gleixner
2015-05-20 14:50     ` Thomas Gleixner
2015-05-20 19:34   ` Russell King - ARM Linux
2015-05-20 19:34     ` Russell King - ARM Linux
2015-05-20 19:34     ` Russell King - ARM Linux
2015-05-20 19:34     ` Russell King - ARM Linux
2015-05-20 19:34   ` Russell King - ARM Linux
2015-05-20  9:40 ` Jiang Liu
2015-05-20  9:40 ` [Patch v2 09/14] net/mlx4: Cache irq_desc->affinity instead of irq_desc Jiang Liu
2015-05-20  9:40 ` [Patch v2 10/14] genirq: Move field 'affinity' from struct irq_data into struct irq_common_data Jiang Liu
2015-05-20  9:40 ` [Patch v2 11/14] genirq: Rename irq_data_get_msi() as irq_data_get_msi_desc() Jiang Liu
2015-05-20 13:08   ` Bjorn Helgaas
2015-05-20  9:40 ` [Patch v2 12/14] genirq: Use helper function to access irq_data->msi_desc Jiang Liu
2015-05-20  9:40   ` Jiang Liu
2015-05-20  9:40   ` Jiang Liu
2015-05-20  9:40 ` [Patch v2 13/14] genirq: Move field 'msi_desc' from struct irq_data into struct irq_common_data Jiang Liu
2015-05-20  9:40 ` [Patch v2 14/14] genirq: Pass irq_data to helper function __irq_set_chip_handler_name_locked() Jiang Liu
2015-05-20  9:40   ` Jiang Liu
2015-05-20  9:40   ` 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.1505201628400.4225@nanos \
    --to=tglx@linutronix.de \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=bp@alien8.de \
    --cc=bpicco@meloft.net \
    --cc=cernekee@gmail.com \
    --cc=davem@davemloft.net \
    --cc=gnurou@gmail.com \
    --cc=horms@verge.net.au \
    --cc=hpa@zytor.com \
    --cc=jason@lakedaemon.net \
    --cc=jiang.liu@linux.intel.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=marc.zyngier@arm.com \
    --cc=mingo@redhat.com \
    --cc=rdunlap@infradead.org \
    --cc=rjw@rjwysocki.net \
    --cc=sparclinux@vger.kernel.orgl \
    --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.