All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>, Peter Anvin <hpa@zytor.com>,
	Tony Luck <tony.luck@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Chris Metcalf <cmetcalf@tilera.com>
Subject: [patch 21/32] tile: Use SPARSE_IRQ
Date: Wed, 07 May 2014 15:44:16 -0000	[thread overview]
Message-ID: <20140507154338.423715783@linutronix.de> (raw)
In-Reply-To: 20140507153622.703412101@linutronix.de

[-- Attachment #1: tile-use-sparse-irq.patch --]
[-- Type: text/plain, Size: 3330 bytes --]

Get rid of the private allocator and switch over to sparse IRQs.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Chris Metcalf <cmetcalf@tilera.com>
---
 arch/tile/Kconfig           |    2 +
 arch/tile/include/asm/irq.h |    9 +++----
 arch/tile/kernel/irq.c      |   52 ++------------------------------------------
 3 files changed, 9 insertions(+), 54 deletions(-)

Index: tip/arch/tile/Kconfig
===================================================================
--- tip.orig/arch/tile/Kconfig
+++ tip/arch/tile/Kconfig
@@ -125,6 +125,8 @@ config HVC_TILE
 
 config TILEGX
 	bool "Building for TILE-Gx (64-bit) processor"
+	select SPARSE_IRQ
+	select GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
 	select HAVE_FUNCTION_TRACER
 	select HAVE_FUNCTION_TRACE_MCOUNT_TEST
 	select HAVE_FUNCTION_GRAPH_TRACER
Index: tip/arch/tile/include/asm/irq.h
===================================================================
--- tip.orig/arch/tile/include/asm/irq.h
+++ tip/arch/tile/include/asm/irq.h
@@ -18,10 +18,12 @@
 #include <linux/hardirq.h>
 
 /* The hypervisor interface provides 32 IRQs. */
-#define NR_IRQS 32
+#define NR_IRQS			32
 
 /* IRQ numbers used for linux IPIs. */
-#define IRQ_RESCHEDULE 0
+#define IRQ_RESCHEDULE	0
+/* Interrupts for dynamic allocation start at 1. Let the core allocate irq0 */
+#define NR_IRQS_LEGACY	1
 
 #define irq_canonicalize(irq)   (irq)
 
@@ -76,7 +78,4 @@ void tile_irq_activate(unsigned int irq,
 
 void setup_irq_regs(void);
 
-unsigned int irq_alloc_hwirq(int node);
-void irq_free_hwirq(unsigned int irq);
-
 #endif /* _ASM_TILE_IRQ_H */
Index: tip/arch/tile/kernel/irq.c
===================================================================
--- tip.orig/arch/tile/kernel/irq.c
+++ tip/arch/tile/kernel/irq.c
@@ -54,13 +54,6 @@ static DEFINE_PER_CPU(unsigned long, irq
  */
 static DEFINE_PER_CPU(int, irq_depth);
 
-/* State for allocating IRQs on Gx. */
-#if CHIP_HAS_IPI()
-static unsigned long available_irqs = ((1UL << NR_IRQS) - 1) &
-				      (~(1UL << IRQ_RESCHEDULE));
-static DEFINE_SPINLOCK(available_irqs_lock);
-#endif
-
 #if CHIP_HAS_IPI()
 /* Use SPRs to manipulate device interrupts. */
 #define mask_irqs(irq_mask) __insn_mtspr(SPR_IPI_MASK_SET_K, irq_mask)
@@ -278,50 +271,11 @@ int arch_show_interrupts(struct seq_file
 	return 0;
 }
 
-/*
- * Generic, controller-independent functions:
- */
-
 #if CHIP_HAS_IPI()
-int create_irq(void)
-{
-	unsigned long flags;
-	int result;
-
-	spin_lock_irqsave(&available_irqs_lock, flags);
-	if (available_irqs == 0)
-		result = -ENOMEM;
-	else {
-		result = __ffs(available_irqs);
-		available_irqs &= ~(1UL << result);
-		dynamic_irq_init(result);
-	}
-	spin_unlock_irqrestore(&available_irqs_lock, flags);
-
-	return result;
-}
-EXPORT_SYMBOL(create_irq);
-
-void destroy_irq(unsigned int irq)
-{
-	unsigned long flags;
-
-	spin_lock_irqsave(&available_irqs_lock, flags);
-	available_irqs |= (1UL << irq);
-	dynamic_irq_cleanup(irq);
-	spin_unlock_irqrestore(&available_irqs_lock, flags);
-}
-EXPORT_SYMBOL(destroy_irq);
-
-unsigned int irq_alloc_hwirq(int node)
-{
-	int ret = create_irq();
-	return ret < 0 ? 0 : ret;
-}
-
-void irq_free_hwirq(unsigned int irq)
+int arch_setup_hwirq(unsigned int irq, int node)
 {
-	destroy_irq();
+	return irq >= NR_IRQS ? -EINVAL : 0;
 }
 
+void arch_teardown_hwirq(unsigned int irq) { }
 #endif



  parent reply	other threads:[~2014-05-07 15:48 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-07 15:44 [patch 00/32] genirq: Another round of tree wide cleanups Thomas Gleixner
2014-05-07 15:44 ` [patch 01/32] arm: iop13xx: Use sparse irqs for MSI Thomas Gleixner
2014-05-16 13:31   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 02/32] mips: Kill pointless destroy_irq() Thomas Gleixner
2014-05-16 13:31   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 03/32] genirq: Provide generic hwirq allocation facility Thomas Gleixner
2014-05-07 20:37   ` Chris Metcalf
2014-05-07 23:15     ` Thomas Gleixner
2014-05-08 10:22       ` Thomas Gleixner
2014-05-13 16:59         ` Thomas Gleixner
2014-05-13 17:48           ` Luck, Tony
2014-05-14 17:57       ` Chris Metcalf
2014-05-14 23:57         ` Thomas Gleixner
2014-05-08 12:07   ` Grant Likely
2014-05-08 13:12     ` Thomas Gleixner
2014-05-14 17:44   ` Chris Metcalf
2014-05-14 23:47     ` Thomas Gleixner
2014-05-16 13:31   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 04/32] x86: Implement arch_setup/teardown_hwirq() Thomas Gleixner
2014-05-16 13:31   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 05/32] x86: irq_remapping: Use irq_alloc/free_hwirq() Thomas Gleixner
2014-05-14  9:32   ` Joerg Roedel
2014-05-16 13:32   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 06/32] x86: hpet: " Thomas Gleixner
2014-05-16 13:32   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 07/32] x86: uv: " Thomas Gleixner
2014-05-16 13:32   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 08/32] x86: htirq: Use irq_alloc/free_irq() Thomas Gleixner
2014-05-07 16:03   ` Bjorn Helgaas
2014-05-07 16:30     ` Thomas Gleixner
2014-05-16 13:32   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 09/32] x86: ioapic: Use irq_alloc/free_hwirq() Thomas Gleixner
2014-05-16 13:33   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 10/32] x86: Get rid of get_nr_irqs_gsi() Thomas Gleixner
2014-05-16 13:33   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 11/32] iommu: dmar: Fix return value check of create_irq() Thomas Gleixner
2014-05-16 13:33   ` [tip:irq/core] iommu: smar: Fix return value check of create_irq( ) tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 13/32] ia64: Remove unused check_irq_used() Thomas Gleixner
2014-05-16 13:33   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 12/32] iommu: dmar: Provide arch specific irq allocation Thomas Gleixner
2014-05-16 13:33   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 14/32] x86: Remove create/dstroy_irq() Thomas Gleixner
2014-05-16 13:34   ` [tip:irq/core] x86: Remove create/destroy_irq() tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 16/32] tile: usb: Use irq_alloc/free_hwirq Thomas Gleixner
2014-05-16 13:34   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 15/32] tile: Implement irq_alloc/free_hwirq() for migration Thomas Gleixner
2014-05-14 17:48   ` Chris Metcalf
     [not found]   ` <5373AC00.7090507@tilera.com>
2014-05-14 23:50     ` Thomas Gleixner
2014-05-16 13:34   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 17/32] tile: net: Use irq_alloc/free_hwirq Thomas Gleixner
2014-05-16 13:34   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 19/32] tile: hvc: " Thomas Gleixner
2014-05-16 13:35   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 18/32] tile: serial: " Thomas Gleixner
2014-05-16 13:34   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 20/32] tile: pci: Use irq_alloc/free_hwirq() Thomas Gleixner
2014-05-16 13:35   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` Thomas Gleixner [this message]
2014-05-16 13:35   ` [tip:irq/core] tile: Use SPARSE_IRQ tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 22/32] genirq: Make create/destroy_irq() ia64 private Thomas Gleixner
2014-05-16 13:35   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 24/32] sh: intc: Remove pointless irq_reserve_irqs() invocation Thomas Gleixner
2014-05-11  0:53   ` Simon Horman
2014-05-16 13:36   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 23/32] x86, irq: Remove pointless irq_reserve_irqs() call Thomas Gleixner
2014-05-16 13:36   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 26/32] s390: Remove pointless arch_show_interrupts() Thomas Gleixner
2014-05-16 13:36   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 25/32] s390: pci: Check return value of alloc_irq_desc() proper Thomas Gleixner
2014-05-16 13:36   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 27/32] s390: Avoid call to irq_reserve_irqs() Thomas Gleixner
2014-05-16 13:36   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 28/32] genirq: Replace reserve_irqs in core code Thomas Gleixner
2014-05-16 13:37   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 29/32] genirq: Remove irq_reserve_irq[s] Thomas Gleixner
2014-05-08 12:14   ` Grant Likely
2014-05-08 12:54     ` Thomas Gleixner
2014-05-16 13:37   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 30/32] genirq: Replace dynamic_irq_init/cleanup Thomas Gleixner
2014-05-16 13:37   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 31/32] ia64: Use irq_init_desc Thomas Gleixner
2014-05-07 20:06   ` Luck, Tony
2014-05-16 13:37   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-07 15:44 ` [patch 32/32] genirq: Remove dynamic_irq mess Thomas Gleixner
2014-05-16 13:37   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2014-05-08 12:17 ` [patch 00/32] genirq: Another round of tree wide cleanups Grant Likely

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=20140507154338.423715783@linutronix.de \
    --to=tglx@linutronix.de \
    --cc=cmetcalf@tilera.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=tony.luck@intel.com \
    /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.