Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752172AbbEDDNf (ORCPT ); Sun, 3 May 2015 23:13:35 -0400 Received: from mga02.intel.com ([134.134.136.20]:16028 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751417AbbEDDNY (ORCPT ); Sun, 3 May 2015 23:13:24 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,363,1427785200"; d="scan'208";a="720096685" From: Jiang Liu To: Thomas Gleixner , Bjorn Helgaas , Benjamin Herrenschmidt , Ingo Molnar , "H. Peter Anvin" , "Rafael J. Wysocki" , Randy Dunlap , Yinghai Lu , Borislav Petkov Cc: Jiang Liu , Konrad Rzeszutek Wilk , Tony Luck , x86@kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org Subject: [RFC v1 00/11] Split struct irq_data into common part and per-chip part Date: Mon, 4 May 2015 11:15:28 +0800 Message-Id: <1430709339-29083-1-git-send-email-jiang.liu@linux.intel.com> X-Mailer: git-send-email 1.7.10.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4737 Lines: 98 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 plus these two patches at: https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg879700.html And it passes Fengguang's zeroday test suite. Thanks! Gerry Jiang Liu (11): genirq: Introduce struct irq_common_data to host shared irq data genirq: Move field 'node' from struct irq_data into struct irq_common_data genirq: Use CONFIG_NUMA instead of CONFIG_SMP to guard irq_common_data.node 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() net/mlx4: Cache irq_desc->affinity instead of irq_desc genirq: Move field 'affinity' from struct irq_data into struct irq_common_data 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() 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/msi.c | 2 +- drivers/sh/intc/chip.c | 6 +- drivers/sh/intc/virq.c | 4 +- drivers/xen/events/events_base.c | 4 +- include/linux/irq.h | 109 +++++++++++++++++--------- include/linux/irqdesc.h | 11 +-- kernel/irq/chip.c | 4 +- kernel/irq/internals.h | 15 ++-- kernel/irq/irqdesc.c | 27 +++---- kernel/irq/irqdomain.c | 5 +- kernel/irq/manage.c | 14 ++-- kernel/irq/proc.c | 4 +- 52 files changed, 250 insertions(+), 198 deletions(-) -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/