linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Patch v3 00/36] Split struct irq_data into common part and per-chip part
@ 2015-06-01  8:05 Jiang Liu
  2015-06-01  8:05 ` [Patch v3 01/36] genirq: Enhance irq_data_to_desc() to support hierarchy irqdomain Jiang Liu
                   ` (35 more replies)
  0 siblings, 36 replies; 71+ messages in thread
From: Jiang Liu @ 2015-06-01  8:05 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Randy Dunlap, Yinghai Lu,
	Borislav Petkov
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi

Hi all,
	Now the irq core supports hierarchy irq and stacked irqchips,
so there may be multiple irq_datas associated with the same irq. But
some fields in struct irq_data are per-irq instance and duplicating
those fields into multiple irq_data may cause troubles.
	So this patch introduces a new data structure 'struct
irq_common_data' to host per-irq instance data fields, and struct
irq_data will only host per-chip data fields after the conversion.

It's based on tip/x86/apic.

And it passes Fengguang's zeroday test suite.

V2->V3:
1) Add patch 1-2 to fix a regression revealed by this patch set.
   It caused me about ten days to shoot down this bug, and it also
   proves that this patch set is the right thing to do.
2) Split changes into per-arch slices
3) Kill the last direct reference to data->common->handler_data
   from file drivers/sh/intc/virq.c.

V1->V2:
1) Patch "net/mlx4: Cache irq_desc->affinity instead of irq_desc" is
   still kept to avoid build failure. It may be dropped if Amir Vadai
   changed related code.
2) Reorganize patches according to Thomas's suggestion.
3) Rename irq_data_get_msi() as irq_data_get_msi_desc().

Thanks!
Gerry

Jiang Liu (36):
  genirq: Enhance irq_data_to_desc() to support hierarchy irqdomain
  genirq: Fix crash caused by irq_move_irq() when hierarch irqdomain is
    enabled
  genirq: Introduce struct irq_common_data to host shared irq data
  genirq: Introduce helper function irq_data_get_node()
  x86, irq: Use accessor irq_data_get_node() to hide struct irq_data
    detail
  sh, irq: Use accessor irq_data_get_node() to hide struct irq_data
    detail
  genirq: Move field 'node' from struct irq_data into struct
    irq_common_data
  sparc, irq: Use helper irq_data_get_irq_handler_data() to hide
    irq_desc details
  x86, irq: Use helper irq_data_get_irq_handler_data() to hide irq_desc
    details
  x86, irq: Use helper irq_data_get_irq_handler_data() to hide irq_desc
    details
  sh, irq: Use helper irq_data_get_irq_handler_data() to hide irq_desc
    details
  genirq: Move field 'handler_data' from struct irq_data into struct
    irq_common_data
  mn10300: Fix incorrect use of data->affinity
  genirq: Introduce helper function irq_data_get_affinity_mask()
  alpha, irq: Use access helper irq_data_get_affinity_mask()
  ARM, irq: Use access helper irq_data_get_affinity_mask()
  ARM64, irq: Use access helper irq_data_get_affinity_mask()
  blackfin, irq: Use access helper irq_data_get_affinity_mask()
  IA64, irq: Use access helper irq_data_get_affinity_mask()
  metag, irq: Use access helper irq_data_get_affinity_mask()
  mips, irq: Use access helper irq_data_get_affinity_mask()
  mn10300, irq: Use access helper irq_data_get_affinity_mask()
  parisc, irq: Use access helper irq_data_get_affinity_mask()
  powerpc, irq: Use access helper irq_data_get_affinity_mask()
  sh, irq: Use access helper irq_data_get_affinity_mask()
  sparc, irq: Use access helper irq_data_get_affinity_mask()
  x86, irq: Use access helper irq_data_get_affinity_mask()
  xtensa, irq: Use access helper irq_data_get_affinity_mask()
  irqchip, irq: Use access helper irq_data_get_affinity_mask()
  net/mlx4: Cache irq_desc->affinity instead of irq_desc
  genirq: Move field 'affinity' from struct irq_data into struct
    irq_common_data
  genirq: Rename irq_data_get_msi() as irq_data_get_msi_desc()
  genirq: Use helper function to access irq_data->msi_desc
  genirq: Move field 'msi_desc' from struct irq_data into struct
    irq_common_data
  genirq: Pass irq_data to helper function
    __irq_set_chip_handler_name_locked()
  genirq: Optimize irq_data_to_desc() to avoid irq_to_desc() lookup

 arch/alpha/kernel/irq.c                      |    2 +-
 arch/arm/kernel/irq.c                        |    4 +-
 arch/arm64/kernel/irq.c                      |    4 +-
 arch/blackfin/mach-common/ints-priority.c    |    3 +-
 arch/ia64/kernel/iosapic.c                   |    8 +-
 arch/ia64/kernel/irq.c                       |    6 +-
 arch/ia64/kernel/msi_ia64.c                  |    6 +-
 arch/ia64/sn/kernel/msi_sn.c                 |    4 +-
 arch/metag/kernel/irq.c                      |   10 ++-
 arch/mips/alchemy/common/irq.c               |    4 +-
 arch/mips/bcm63xx/irq.c                      |    2 +-
 arch/mips/cavium-octeon/octeon-irq.c         |   14 ++--
 arch/mips/pmcs-msp71xx/msp_irq_cic.c         |    3 +-
 arch/mn10300/kernel/cevt-mn10300.c           |    2 +-
 arch/mn10300/kernel/irq.c                    |   13 +--
 arch/parisc/kernel/irq.c                     |   12 +--
 arch/powerpc/kernel/irq.c                    |    2 +-
 arch/powerpc/sysdev/xics/ics-opal.c          |    4 +-
 arch/powerpc/sysdev/xics/ics-rtas.c          |    4 +-
 arch/sh/kernel/irq.c                         |    9 ++-
 arch/sparc/kernel/irq_64.c                   |   27 ++++---
 arch/sparc/kernel/leon_kernel.c              |    6 +-
 arch/sparc/kernel/sun4d_irq.c                |    4 +-
 arch/sparc/kernel/sun4m_irq.c                |    6 +-
 arch/tile/kernel/pci_gx.c                    |    2 +-
 arch/x86/kernel/apic/io_apic.c               |    2 +-
 arch/x86/kernel/apic/msi.c                   |    2 +-
 arch/x86/kernel/apic/vector.c                |   13 ++-
 arch/x86/kernel/hpet.c                       |    4 +-
 arch/x86/kernel/irq.c                        |    5 +-
 arch/x86/platform/uv/uv_irq.c                |    2 +-
 arch/xtensa/kernel/irq.c                     |   10 ++-
 drivers/gpio/gpio-davinci.c                  |    2 +-
 drivers/gpio/gpio-zynq.c                     |    9 +--
 drivers/irqchip/irq-metag-ext.c              |    5 +-
 drivers/irqchip/irq-mips-gic.c               |   13 ++-
 drivers/net/ethernet/mellanox/mlx4/en_cq.c   |    6 +-
 drivers/net/ethernet/mellanox/mlx4/en_rx.c   |    5 +-
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h |    2 +-
 drivers/parisc/iosapic.c                     |    2 +-
 drivers/pci/host/pcie-designware.c           |    2 +-
 drivers/pci/msi.c                            |    4 +-
 drivers/sh/intc/chip.c                       |    6 +-
 drivers/sh/intc/virq.c                       |   12 +--
 drivers/xen/events/events_base.c             |    4 +-
 include/linux/irq.h                          |  112 +++++++++++++++++---------
 include/linux/irqdesc.h                      |   23 ++++--
 kernel/irq/chip.c                            |    4 +-
 kernel/irq/internals.h                       |   17 ++--
 kernel/irq/irqdesc.c                         |   27 +++----
 kernel/irq/irqdomain.c                       |    5 +-
 kernel/irq/manage.c                          |   14 ++--
 kernel/irq/migration.c                       |    9 ++-
 kernel/irq/proc.c                            |    4 +-
 54 files changed, 277 insertions(+), 209 deletions(-)

-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 71+ messages in thread

end of thread, other threads:[~2015-09-16 21:13 UTC | newest]

Thread overview: 71+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-01  8:05 [Patch v3 00/36] Split struct irq_data into common part and per-chip part Jiang Liu
2015-06-01  8:05 ` [Patch v3 01/36] genirq: Enhance irq_data_to_desc() to support hierarchy irqdomain Jiang Liu
2015-06-16  8:16   ` [tip:x86/apic] " tip-bot for Jiang Liu
2015-06-20 17:18   ` [tip:irq/core] " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 02/36] genirq: Fix crash caused by irq_move_irq() when hierarch irqdomain is enabled Jiang Liu
2015-06-16  7:31   ` [tip:x86/apic] genirq: Prevent crash in irq_move_irq() tip-bot for Jiang Liu
2015-06-16  7:47     ` Jiang Liu
2015-06-16  8:12       ` Thomas Gleixner
2015-06-16  8:25         ` Jiang Liu
2015-06-16  8:16   ` tip-bot for Jiang Liu
2015-06-20 17:19   ` [tip:irq/core] " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 03/36] genirq: Introduce struct irq_common_data to host shared irq data Jiang Liu
2015-06-20 17:19   ` [tip:irq/core] " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 04/36] genirq: Introduce helper function irq_data_get_node() Jiang Liu
2015-06-20 17:19   ` [tip:irq/core] " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 05/36] x86, irq: Use accessor irq_data_get_node() to hide struct irq_data detail Jiang Liu
2015-06-01  8:05 ` [Patch v3 06/36] sh, " Jiang Liu
2015-06-01  8:05 ` [Patch v3 07/36] genirq: Move field 'node' from struct irq_data into struct irq_common_data Jiang Liu
2015-09-16 20:56   ` [tip:irq/urgent] genirq: Move field 'node' from irq_data into irq_common_data tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 08/36] sparc, irq: Use helper irq_data_get_irq_handler_data() to hide irq_desc details Jiang Liu
2015-07-31 21:53   ` [tip:irq/core] sparc/irq: Use helper irq_data_get_irq_handler_data() tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 09/36] x86, irq: Use helper irq_data_get_irq_handler_data() to hide irq_desc details Jiang Liu
2015-06-01  8:05 ` [Patch v3 10/36] " Jiang Liu
2015-06-01  8:05 ` [Patch v3 11/36] sh, " Jiang Liu
2015-06-01 11:38   ` Sergei Shtylyov
2015-06-01 13:53     ` Jiang Liu
2015-06-01  8:05 ` [Patch v3 12/36] genirq: Move field 'handler_data' from struct irq_data into struct irq_common_data Jiang Liu
2015-09-16 20:56   ` [tip:irq/urgent] genirq: Move field 'handler_data' from irq_data into irq_common_data tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 13/36] mn10300: Fix incorrect use of data->affinity Jiang Liu
2015-06-26 19:49   ` [tip:irq/urgent] mn10300: Fix incorrect use of irq_data->affinity tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 14/36] genirq: Introduce helper function irq_data_get_affinity_mask() Jiang Liu
2015-06-20 17:19   ` [tip:irq/core] " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 15/36] alpha, irq: Use access helper irq_data_get_affinity_mask() Jiang Liu
2015-06-01  8:05 ` [Patch v3 16/36] ARM, " Jiang Liu
2015-06-01  8:05 ` [Patch v3 17/36] ARM64, " Jiang Liu
2015-06-02  6:25   ` Hanjun Guo
2015-06-01  8:05 ` [Patch v3 18/36] blackfin, " Jiang Liu
2015-06-01  8:05 ` [Patch v3 19/36] IA64, " Jiang Liu
2015-06-01  8:05 ` [Patch v3 20/36] metag, " Jiang Liu
2015-06-01  8:05 ` [Patch v3 21/36] mips, " Jiang Liu
2015-06-05  8:46   ` Ralf Baechle
2015-06-01  8:05 ` [Patch v3 22/36] mn10300, " Jiang Liu
2015-07-31 21:53   ` [tip:irq/core] mn10300/irq: " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 23/36] parisc, irq: " Jiang Liu
2015-07-31 21:53   ` [tip:irq/core] parisc/irq: " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 24/36] powerpc, irq: " Jiang Liu
2015-09-15 15:47   ` [tip:irq/urgent] " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 25/36] sh, " Jiang Liu
2015-06-01  8:05 ` [Patch v3 26/36] sparc, " Jiang Liu
2015-07-31 21:54   ` [tip:irq/core] sparc/irq: " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 27/36] x86, irq: " Jiang Liu
2015-06-02 19:19   ` Thomas Gleixner
2015-06-03  1:53     ` Jiang Liu
2015-06-03  3:46     ` Jiang Liu
2015-06-01  8:05 ` [Patch v3 28/36] xtensa, " Jiang Liu
2015-06-01  8:05 ` [Patch v3 29/36] irqchip, " Jiang Liu
2015-07-11 21:38   ` [tip:irq/core] irqchip/mips-gic: " tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 30/36] net/mlx4: Cache irq_desc->affinity instead of irq_desc Jiang Liu
2015-06-01  8:05 ` [Patch v3 31/36] genirq: Move field 'affinity' from struct irq_data into struct irq_common_data Jiang Liu
2015-06-03  3:47   ` Jiang Liu
2015-09-16 20:56     ` [tip:irq/urgent] genirq: Move field 'affinity' from irq_data into irq_common_data tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 32/36] genirq: Rename irq_data_get_msi() as irq_data_get_msi_desc() Jiang Liu
2015-06-01  8:05 ` [Patch v3 33/36] genirq: Use helper function to access irq_data->msi_desc Jiang Liu
2015-06-02  3:45   ` [v3,33/36] " Michael Ellerman
2015-06-02  5:46     ` Jiang Liu
2015-06-03 16:53     ` Thomas Gleixner
2015-06-01  8:05 ` [Patch v3 34/36] genirq: Move field 'msi_desc' from struct irq_data into struct irq_common_data Jiang Liu
2015-09-16 20:57   ` [tip:irq/urgent] genirq: Move field 'msi_desc' from irq_data into irq_common_data tip-bot for Jiang Liu
2015-06-01  8:05 ` [Patch v3 35/36] genirq: Pass irq_data to helper function __irq_set_chip_handler_name_locked() Jiang Liu
2015-06-05  8:48   ` Ralf Baechle
2015-06-01  8:05 ` [Patch v3 36/36] genirq: Optimize irq_data_to_desc() to avoid irq_to_desc() lookup Jiang Liu

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).