From: tip-bot for Jiang Liu <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: benh@kernel.crashing.org, linux-kernel@vger.kernel.org,
bhelgaas@google.com, yinghai@kernel.org, konrad.wilk@oracle.com,
jiang.liu@linux.intel.com, joro@8bytes.org, tglx@linutronix.de,
hpa@zytor.com, rjw@rjwysocki.net, mingo@kernel.org,
rdunlap@infradead.org, gregkh@linuxfoundation.org, bp@alien8.de,
tony.luck@intel.com, prarit@redhat.com
Subject: [tip:x86/apic] x86, irq: Refine hw_irq.h to prepare for irqdomain support
Date: Wed, 5 Nov 2014 08:35:48 -0800 [thread overview]
Message-ID: <tip-ead3fb62ae4ac8df90312edfd8c4907da8a4481c@git.kernel.org> (raw)
In-Reply-To: <1414397531-28254-6-git-send-email-jiang.liu@linux.intel.com>
Commit-ID: ead3fb62ae4ac8df90312edfd8c4907da8a4481c
Gitweb: http://git.kernel.org/tip/ead3fb62ae4ac8df90312edfd8c4907da8a4481c
Author: Jiang Liu <jiang.liu@linux.intel.com>
AuthorDate: Mon, 27 Oct 2014 16:11:56 +0800
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Wed, 5 Nov 2014 11:04:46 +0100
x86, irq: Refine hw_irq.h to prepare for irqdomain support
Refine hw_irq.h to prepare for irqdomain support by:
1) guarding common APIC related interfaces with CONFIG_X86_LOCAL_APIC
2) guarding interrupt remapping related interfaces with CONFIG_IRQ_REMAP
3) guarding IOAPIC related interfaces with CONFIG_X86_IO_APIC
No functional changes.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Prarit Bhargava <prarit@redhat.com>
Link: http://lkml.kernel.org/r/1414397531-28254-6-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/include/asm/hw_irq.h | 94 +++++++++++++++++++++++--------------------
1 file changed, 51 insertions(+), 43 deletions(-)
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
index 66e59e6..9e2d08b 100644
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -94,30 +94,7 @@ extern void trace_call_function_single_interrupt(void);
#define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi
#endif /* CONFIG_TRACING */
-/* IOAPIC */
-#define IO_APIC_IRQ(x) (((x) >= NR_IRQS_LEGACY) || ((1<<(x)) & io_apic_irqs))
-extern unsigned long io_apic_irqs;
-
-extern void setup_IO_APIC(void);
-extern void disable_IO_APIC(void);
-
-struct io_apic_irq_attr {
- int ioapic;
- int ioapic_pin;
- int trigger;
- int polarity;
-};
-
-static inline void set_io_apic_irq_attr(struct io_apic_irq_attr *irq_attr,
- int ioapic, int ioapic_pin,
- int trigger, int polarity)
-{
- irq_attr->ioapic = ioapic;
- irq_attr->ioapic_pin = ioapic_pin;
- irq_attr->trigger = trigger;
- irq_attr->polarity = polarity;
-}
-
+#ifdef CONFIG_IRQ_REMAP
/* Intel specific interrupt remapping information */
struct irq_2_iommu {
struct intel_iommu *iommu;
@@ -131,14 +108,10 @@ struct irq_2_irte {
u16 devid; /* Device ID for IRTE table */
u16 index; /* Index into IRTE table*/
};
+#endif /* CONFIG_IRQ_REMAP */
-/*
- * This is performance-critical, we want to do it O(1)
- *
- * Most irqs are mapped 1:1 with pins.
- */
+#ifdef CONFIG_X86_LOCAL_APIC
struct irq_cfg {
- struct list_head irq_2_pin;
cpumask_var_t domain;
cpumask_var_t old_domain;
u8 vector;
@@ -150,8 +123,16 @@ struct irq_cfg {
struct irq_2_irte irq_2_irte;
};
#endif
+ union {
+#ifdef CONFIG_X86_IO_APIC
+ struct {
+ struct list_head irq_2_pin;
+ };
+#endif
+ };
};
+extern void setup_vector_irq(int cpu);
extern int assign_irq_vector(int, struct irq_cfg *, const struct cpumask *);
#ifdef CONFIG_SMP
extern void send_cleanup_vector(struct irq_cfg *);
@@ -162,10 +143,48 @@ static inline void send_cleanup_vector(struct irq_cfg *c) { }
struct irq_data;
int __ioapic_set_affinity(struct irq_data *, const struct cpumask *,
unsigned int *dest_id);
-extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin);
-extern void setup_ioapic_dest(void);
+#endif /* CONFIG_X86_LOCAL_APIC */
+
+#ifdef CONFIG_X86_IO_APIC
+extern void lock_vector_lock(void);
+extern void unlock_vector_lock(void);
+extern void __setup_vector_irq(int cpu);
+#else
+static inline void lock_vector_lock(void) {}
+static inline void unlock_vector_lock(void) {}
+static inline void __setup_vector_irq(int cpu) {}
+#endif
+
+/* IOAPIC */
+#ifdef CONFIG_X86_IO_APIC
+struct io_apic_irq_attr {
+ int ioapic;
+ int ioapic_pin;
+ int trigger;
+ int polarity;
+};
+
+static inline void set_io_apic_irq_attr(struct io_apic_irq_attr *irq_attr,
+ int ioapic, int ioapic_pin,
+ int trigger, int polarity)
+{
+ irq_attr->ioapic = ioapic;
+ irq_attr->ioapic_pin = ioapic_pin;
+ irq_attr->trigger = trigger;
+ irq_attr->polarity = polarity;
+}
+extern void setup_IO_APIC(void);
extern void enable_IO_APIC(void);
+extern void disable_IO_APIC(void);
+extern void setup_ioapic_dest(void);
+extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin);
+
+extern unsigned long io_apic_irqs;
+#define IO_APIC_IRQ(x) (((x) >= NR_IRQS_LEGACY) || ((1 << (x)) & io_apic_irqs))
+#else /* CONFIG_X86_IO_APIC */
+#define IO_APIC_IRQ(x) 0
+#endif /* CONFIG_X86_IO_APIC */
/* Statistics */
extern atomic_t irq_err_count;
@@ -200,17 +219,6 @@ extern void (*__initconst interrupt[FIRST_SYSTEM_VECTOR
typedef int vector_irq_t[NR_VECTORS];
DECLARE_PER_CPU(vector_irq_t, vector_irq);
-extern void setup_vector_irq(int cpu);
-
-#ifdef CONFIG_X86_IO_APIC
-extern void lock_vector_lock(void);
-extern void unlock_vector_lock(void);
-extern void __setup_vector_irq(int cpu);
-#else
-static inline void lock_vector_lock(void) {}
-static inline void unlock_vector_lock(void) {}
-static inline void __setup_vector_irq(int cpu) {}
-#endif
#endif /* !ASSEMBLY_ */
next prev parent reply other threads:[~2014-11-05 16:37 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-27 8:11 [Patch Part1 v3 00/20] Prepare for enabling hierarchy irqdomain on x86 Jiang Liu
2014-10-27 8:11 ` [Patch Part1 v3 01/20] ACPI, irq, x86: Get rid of special handling of GSI for ACPI SCI Jiang Liu
2014-11-05 16:34 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:12 ` tip-bot for Jiang Liu
2014-12-19 14:05 ` [tip:x86/apic] x86, irq, acpi: " tip-bot for Jiang Liu
2014-10-27 8:11 ` [Patch Part1 v3 02/20] x86, irq, ACPI: Fix building warning of unused code Jiang Liu
2014-11-05 16:34 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:13 ` tip-bot for Jiang Liu
2014-12-19 14:01 ` tip-bot for Jiang Liu
2014-10-27 8:11 ` [Patch Part1 v3 03/20] x86, irq: Kill fourth parameter of IO_APIC_get_PCI_irq_vector() Jiang Liu
2014-11-05 16:35 ` [tip:x86/apic] x86, irq: Kill useless parameter 'irq_attr' " tip-bot for Jiang Liu
2014-11-05 17:13 ` tip-bot for Jiang Liu
2014-12-19 14:06 ` tip-bot for Jiang Liu
2014-10-27 8:11 ` [Patch Part1 v3 04/20] x86, irq: Convert irq_2_pin list to generic list Jiang Liu
2014-11-05 16:35 ` [tip:x86/apic] " tip-bot for Yinghai Lu
2014-11-05 17:13 ` tip-bot for Yinghai Lu
2014-12-19 14:06 ` tip-bot for Yinghai Lu
2014-10-27 8:11 ` [Patch Part1 v3 05/20] x86, irq: Refine hw_irq.h to prepare for irqdomain support Jiang Liu
2014-11-05 16:35 ` tip-bot for Jiang Liu [this message]
2014-11-05 17:13 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-12-19 14:06 ` tip-bot for Jiang Liu
2014-10-27 8:11 ` [Patch Part1 v3 06/20] x86, irq: Rename local APIC related functions in io_apic.c as apic_xxx() Jiang Liu
2014-11-05 16:36 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:14 ` tip-bot for Jiang Liu
2014-12-19 14:07 ` tip-bot for Jiang Liu
2014-10-27 8:11 ` [Patch Part1 v3 07/20] x86, irq: Protect __clear_irq_vector() with vector_lock Jiang Liu
2014-11-05 16:36 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:14 ` tip-bot for Jiang Liu
2014-12-19 14:07 ` tip-bot for Jiang Liu
2014-10-27 8:11 ` [Patch Part1 v3 08/20] x86, irq: Introduce helpers to access struct irq_cfg Jiang Liu
2014-11-05 16:36 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:14 ` tip-bot for Jiang Liu
2014-12-19 14:07 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 09/20] x86, irq: Move local APIC related code from io_apic.c into vector.c Jiang Liu
2014-11-05 16:37 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:14 ` tip-bot for Jiang Liu
2014-12-19 14:08 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 10/20] x86, irq: Replace printk(KERN_LVL) with pr_lvl() utilities Jiang Liu
2014-11-05 16:37 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 16:47 ` Joe Perches
2014-11-05 17:15 ` tip-bot for Jiang Liu
2014-12-19 14:08 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 11/20] x86, irq: Move PCI MSI related code from io_apic.c into msi.c Jiang Liu
2014-11-05 16:38 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:15 ` tip-bot for Jiang Liu
2014-12-19 14:08 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 12/20] x86, irq: Move HT IRQ related code from io_apic.c into htirq.c Jiang Liu
2014-11-05 16:38 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:16 ` tip-bot for Jiang Liu
2014-12-19 14:09 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 13/20] x86, irq: Move IOAPIC related declarations from hw_irq.h into io_apic.h Jiang Liu
2014-11-05 16:38 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:16 ` tip-bot for Jiang Liu
2014-12-19 14:09 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 14/20] x86, irq: Move IRQ initialization routines from io_apic.c into vector.c Jiang Liu
2014-11-05 16:38 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:16 ` tip-bot for Jiang Liu
2014-12-19 14:09 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 15/20] x86, irq: Make MSI and HT_IRQ indepenent of X86_IO_APIC Jiang Liu
2014-11-05 16:39 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:16 ` tip-bot for Jiang Liu
2014-12-19 14:10 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 16/20] x86, irq: Use helpers to access irq_cfg data structure associated with IRQ Jiang Liu
2014-11-05 16:39 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:17 ` tip-bot for Jiang Liu
2014-12-19 14:10 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 17/20] x86: irq_remapping: " Jiang Liu
2014-11-05 16:39 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:17 ` tip-bot for Jiang Liu
2014-12-19 14:10 ` tip-bot for Jiang Liu
[not found] ` <1414397531-28254-1-git-send-email-jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-10-27 8:12 ` [Patch Part1 v3 18/20] iommu/vt-d: " Jiang Liu
2014-10-27 8:12 ` Jiang Liu
2014-11-05 16:39 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:17 ` tip-bot for Jiang Liu
2014-12-19 14:11 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 19/20] iommu/amd: " Jiang Liu
2014-10-27 8:12 ` Jiang Liu
2014-11-05 16:40 ` [tip:x86/apic] " tip-bot for Jiang Liu
2014-11-05 17:17 ` tip-bot for Jiang Liu
2014-12-19 14:11 ` tip-bot for Jiang Liu
2014-10-27 8:12 ` [Patch Part1 v3 20/20] x86, irq: Fix link error of undefined reference to send_cleanup_vector Jiang Liu
2014-11-05 16:34 ` [tip:x86/apic] x86, irq: Provide empty send_cleanup_vector() stub for UP builds tip-bot for Jiang Liu
2014-11-05 17:12 ` tip-bot for Jiang Liu
2014-12-19 14:00 ` tip-bot for 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=tip-ead3fb62ae4ac8df90312edfd8c4907da8a4481c@git.kernel.org \
--to=tipbot@zytor.com \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=jiang.liu@linux.intel.com \
--cc=joro@8bytes.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=prarit@redhat.com \
--cc=rdunlap@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--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.