All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Compile __do_IRQ() when really needed
@ 2006-12-01 14:58 Franck Bui-Huu
  2006-12-01 15:12 ` Atsushi Nemoto
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Franck Bui-Huu @ 2006-12-01 14:58 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: Atsushi Nemoto, linux-mips

From: Franck Bui-Huu <fbuihuu@gmail.com>

__do_IRQ() is needed only by irq handlers that can't use
default handler defined in kernel/irq/chip.c.

For others platforms there's no need to compile this function
since it won't be used. For those platforms this patch defines
GENERIC_HARDIRQS_NO__DO_IRQ symbol which is used exactly for
this purpose.

Futhermore for platforms which do not use __do_IRQ(), end()
method which is part of the 'irq_chip' structure is not used.
This patch simply removes this method in this case.

Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
---

 Eyeballs from people impacted by this patch are greatly
 appreciated. Thanks.

 arch/mips/Kconfig                                  |   16 +++++++++++
 arch/mips/dec/ioasic-irq.c                         |   15 ----------
 arch/mips/dec/kn02-irq.c                           |    7 -----
 arch/mips/emma2rh/common/irq_emma2rh.c             |    7 -----
 arch/mips/emma2rh/markeins/irq_markeins.c          |    7 -----
 arch/mips/jazz/irq.c                               |    7 -----
 arch/mips/kernel/irq-mv6434x.c                     |   10 -------
 arch/mips/kernel/irq-rm7000.c                      |    7 -----
 arch/mips/kernel/irq-rm9000.c                      |    8 -----
 arch/mips/kernel/irq_cpu.c                         |    7 -----
 arch/mips/lasat/interrupt.c                        |    7 -----
 arch/mips/momentum/ocelot_c/cpci-irq.c             |   10 -------
 arch/mips/momentum/ocelot_c/uart-irq.c             |   10 -------
 arch/mips/philips/pnx8550/common/int.c             |    8 -----
 arch/mips/sgi-ip22/ip22-int.c                      |   28 --------------------
 arch/mips/sgi-ip27/ip27-irq.c                      |    8 -----
 arch/mips/sgi-ip27/ip27-timer.c                    |    5 ---
 arch/mips/tx4927/common/tx4927_irq.c               |   22 ---------------
 .../tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c |   19 -------------
 arch/mips/tx4938/common/irq.c                      |   20 --------------
 arch/mips/tx4938/toshiba_rbtx4938/irq.c            |   10 -------
 arch/mips/vr41xx/common/icu.c                      |   14 ----------
 22 files changed, 16 insertions(+), 236 deletions(-)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 5ff94e5..249660a 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -171,6 +171,7 @@ config MACH_DECSTATION
 	select SYS_SUPPORTS_128HZ
 	select SYS_SUPPORTS_256HZ
 	select SYS_SUPPORTS_1024HZ
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	  This enables support for DEC's MIPS based workstations.  For details
 	  see the Linux/MIPS FAQ on <http://www.linux-mips.org/> and the
@@ -216,6 +217,7 @@ config MACH_JAZZ
 	select SYS_SUPPORTS_32BIT_KERNEL
 	select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
 	select SYS_SUPPORTS_100HZ
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	 This a family of machines based on the MIPS R4030 chipset which was
 	 used by several vendors to build RISC/os and Windows NT workstations.
@@ -233,6 +235,7 @@ config LASAT
 	select SYS_SUPPORTS_32BIT_KERNEL
 	select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
 	select SYS_SUPPORTS_LITTLE_ENDIAN
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 
 config MIPS_ATLAS
 	bool "MIPS Atlas board"
@@ -256,6 +259,7 @@ config MIPS_ATLAS
 	select SYS_SUPPORTS_BIG_ENDIAN
 	select SYS_SUPPORTS_LITTLE_ENDIAN
 	select SYS_SUPPORTS_MULTITHREADING if EXPERIMENTAL
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	  This enables support for the MIPS Technologies Atlas evaluation
 	  board.
@@ -410,6 +414,7 @@ config MOMENCO_OCELOT_C
 	select SYS_SUPPORTS_32BIT_KERNEL
 	select SYS_SUPPORTS_64BIT_KERNEL
 	select SYS_SUPPORTS_BIG_ENDIAN
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	  The Ocelot is a MIPS-based Single Board Computer (SBC) made by
 	  Momentum Computer <http://www.momenco.com/>.
@@ -468,6 +473,7 @@ config DDB5477
 config MACH_VR41XX
 	bool "NEC VR41XX-based machines"
 	select SYS_HAS_CPU_VR41XX
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 
 config PMC_YOSEMITE
 	bool "PMC-Sierra Yosemite eval board"
@@ -519,6 +525,7 @@ config MARKEINS
 	select SYS_SUPPORTS_BIG_ENDIAN
 	select SYS_SUPPORTS_LITTLE_ENDIAN
 	select SYS_HAS_CPU_R5000
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	  This enables support for the R5432-based NEC Mark-eins
 	  boards with R5500 CPU.
@@ -539,6 +546,7 @@ config SGI_IP22
 	select SYS_SUPPORTS_32BIT_KERNEL
 	select SYS_SUPPORTS_64BIT_KERNEL
 	select SYS_SUPPORTS_BIG_ENDIAN
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	  This are the SGI Indy, Challenge S and Indigo2, as well as certain
 	  OEM variants like the Tandem CMN B006S. To compile a Linux kernel
@@ -558,6 +566,7 @@ config SGI_IP27
 	select SYS_SUPPORTS_BIG_ENDIAN
 	select SYS_SUPPORTS_NUMA
 	select SYS_SUPPORTS_SMP
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	  This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
 	  workstations.  To compile a Linux kernel that runs on these, say Y
@@ -739,6 +748,7 @@ config TOSHIBA_RBTX4927
 	select SYS_SUPPORTS_64BIT_KERNEL
 	select SYS_SUPPORTS_BIG_ENDIAN
 	select TOSHIBA_BOARDS
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	  This Toshiba board is based on the TX4927 processor. Say Y here to
 	  support this machine type
@@ -758,6 +768,7 @@ config TOSHIBA_RBTX4938
 	select SYS_SUPPORTS_LITTLE_ENDIAN
 	select SYS_SUPPORTS_BIG_ENDIAN
 	select TOSHIBA_BOARDS
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 	help
 	  This Toshiba board is based on the TX4938 processor. Say Y here to
 	  support this machine type
@@ -824,6 +835,10 @@ config SCHED_NO_NO_OMIT_FRAME_POINTER
 	bool
 	default y
 
+config GENERIC_HARDIRQS_NO__DO_IRQ
+	bool
+	default n
+
 #
 # Select some configuration options automatically based on user selections.
 #
@@ -985,6 +1000,7 @@ config SOC_PNX8550
 	select HW_HAS_PCI
 	select SYS_HAS_CPU_MIPS32_R1
 	select SYS_SUPPORTS_32BIT_KERNEL
+	select GENERIC_HARDIRQS_NO__DO_IRQ
 
 config SWAP_IO_SPACE
 	bool
diff --git a/arch/mips/dec/ioasic-irq.c b/arch/mips/dec/ioasic-irq.c
index 269b22b..c5248a1 100644
--- a/arch/mips/dec/ioasic-irq.c
+++ b/arch/mips/dec/ioasic-irq.c
@@ -55,19 +55,12 @@ static inline void ack_ioasic_irq(unsign
 	fast_iob();
 }
 
-static inline void end_ioasic_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		unmask_ioasic_irq(irq);
-}
-
 static struct irq_chip ioasic_irq_type = {
 	.typename = "IO-ASIC",
 	.ack = ack_ioasic_irq,
 	.mask = mask_ioasic_irq,
 	.mask_ack = ack_ioasic_irq,
 	.unmask = unmask_ioasic_irq,
-	.end = end_ioasic_irq,
 };
 
 
@@ -77,20 +70,12 @@ static struct irq_chip ioasic_irq_type =
 
 #define ack_ioasic_dma_irq ack_ioasic_irq
 
-static inline void end_ioasic_dma_irq(unsigned int irq)
-{
-	clear_ioasic_irq(irq);
-	fast_iob();
-	end_ioasic_irq(irq);
-}
-
 static struct irq_chip ioasic_dma_irq_type = {
 	.typename = "IO-ASIC-DMA",
 	.ack = ack_ioasic_dma_irq,
 	.mask = mask_ioasic_dma_irq,
 	.mask_ack = ack_ioasic_dma_irq,
 	.unmask = unmask_ioasic_dma_irq,
-	.end = end_ioasic_dma_irq,
 };
 
 
diff --git a/arch/mips/dec/kn02-irq.c b/arch/mips/dec/kn02-irq.c
index 5a9be4c..916e46b 100644
--- a/arch/mips/dec/kn02-irq.c
+++ b/arch/mips/dec/kn02-irq.c
@@ -57,19 +57,12 @@ static void ack_kn02_irq(unsigned int ir
 	iob();
 }
 
-static void end_kn02_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		unmask_kn02_irq(irq);
-}
-
 static struct irq_chip kn02_irq_type = {
 	.typename = "KN02-CSR",
 	.ack = ack_kn02_irq,
 	.mask = mask_kn02_irq,
 	.mask_ack = ack_kn02_irq,
 	.unmask = unmask_kn02_irq,
-	.end = end_kn02_irq,
 };
 
 
diff --git a/arch/mips/emma2rh/common/irq_emma2rh.c b/arch/mips/emma2rh/common/irq_emma2rh.c
index 59b9829..8d880f0 100644
--- a/arch/mips/emma2rh/common/irq_emma2rh.c
+++ b/arch/mips/emma2rh/common/irq_emma2rh.c
@@ -56,19 +56,12 @@ static void emma2rh_irq_disable(unsigned
 	ll_emma2rh_irq_disable(irq - emma2rh_irq_base);
 }
 
-static void emma2rh_irq_end(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		ll_emma2rh_irq_enable(irq - emma2rh_irq_base);
-}
-
 struct irq_chip emma2rh_irq_controller = {
 	.typename = "emma2rh_irq",
 	.ack = emma2rh_irq_disable,
 	.mask = emma2rh_irq_disable,
 	.mask_ack = emma2rh_irq_disable,
 	.unmask = emma2rh_irq_enable,
-	.end = emma2rh_irq_end,
 };
 
 void emma2rh_irq_init(u32 irq_base)
diff --git a/arch/mips/emma2rh/markeins/irq_markeins.c b/arch/mips/emma2rh/markeins/irq_markeins.c
index 3ac4e40..2116d9b 100644
--- a/arch/mips/emma2rh/markeins/irq_markeins.c
+++ b/arch/mips/emma2rh/markeins/irq_markeins.c
@@ -48,19 +48,12 @@ static void emma2rh_sw_irq_disable(unsig
 	ll_emma2rh_sw_irq_disable(irq - emma2rh_sw_irq_base);
 }
 
-static void emma2rh_sw_irq_end(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		ll_emma2rh_sw_irq_enable(irq - emma2rh_sw_irq_base);
-}
-
 struct irq_chip emma2rh_sw_irq_controller = {
 	.typename = "emma2rh_sw_irq",
 	.ack = emma2rh_sw_irq_disable,
 	.mask = emma2rh_sw_irq_disable,
 	.mask_ack = emma2rh_sw_irq_disable,
 	.unmask = emma2rh_sw_irq_enable,
-	.end = emma2rh_sw_irq_end,
 };
 
 void emma2rh_sw_irq_init(u32 irq_base)
diff --git a/arch/mips/jazz/irq.c b/arch/mips/jazz/irq.c
index 5c4f50c..f8d417b 100644
--- a/arch/mips/jazz/irq.c
+++ b/arch/mips/jazz/irq.c
@@ -39,19 +39,12 @@ void disable_r4030_irq(unsigned int irq)
 	spin_unlock_irqrestore(&r4030_lock, flags);
 }
 
-static void end_r4030_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_r4030_irq(irq);
-}
-
 static struct irq_chip r4030_irq_type = {
 	.typename = "R4030",
 	.ack = disable_r4030_irq,
 	.mask = disable_r4030_irq,
 	.mask_ack = disable_r4030_irq,
 	.unmask = enable_r4030_irq,
-	.end = end_r4030_irq,
 };
 
 void __init init_r4030_ints(void)
diff --git a/arch/mips/kernel/irq-mv6434x.c b/arch/mips/kernel/irq-mv6434x.c
index 6cfb31c..efbd219 100644
--- a/arch/mips/kernel/irq-mv6434x.c
+++ b/arch/mips/kernel/irq-mv6434x.c
@@ -67,15 +67,6 @@ static inline void unmask_mv64340_irq(un
 }
 
 /*
- * End IRQ processing
- */
-static void end_mv64340_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		unmask_mv64340_irq(irq);
-}
-
-/*
  * Interrupt handler for interrupts coming from the Marvell chip.
  * It could be built in ethernet ports etc...
  */
@@ -106,7 +97,6 @@ struct irq_chip mv64340_irq_type = {
 	.mask = mask_mv64340_irq,
 	.mask_ack = mask_mv64340_irq,
 	.unmask = unmask_mv64340_irq,
-	.end = end_mv64340_irq,
 };
 
 void __init mv64340_irq_init(unsigned int base)
diff --git a/arch/mips/kernel/irq-rm7000.c b/arch/mips/kernel/irq-rm7000.c
index ddcc2a5..123324b 100644
--- a/arch/mips/kernel/irq-rm7000.c
+++ b/arch/mips/kernel/irq-rm7000.c
@@ -29,19 +29,12 @@ static inline void mask_rm7k_irq(unsigne
 	clear_c0_intcontrol(0x100 << (irq - irq_base));
 }
 
-static void rm7k_cpu_irq_end(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		unmask_rm7k_irq(irq);
-}
-
 static struct irq_chip rm7k_irq_controller = {
 	.typename = "RM7000",
 	.ack = mask_rm7k_irq,
 	.mask = mask_rm7k_irq,
 	.mask_ack = mask_rm7k_irq,
 	.unmask = unmask_rm7k_irq,
-	.end = rm7k_cpu_irq_end,
 };
 
 void __init rm7k_cpu_irq_init(int base)
diff --git a/arch/mips/kernel/irq-rm9000.c b/arch/mips/kernel/irq-rm9000.c
index ba6440c..0e6f4c5 100644
--- a/arch/mips/kernel/irq-rm9000.c
+++ b/arch/mips/kernel/irq-rm9000.c
@@ -80,19 +80,12 @@ static void rm9k_perfcounter_irq_shutdow
 	on_each_cpu(local_rm9k_perfcounter_irq_shutdown, (void *) irq, 0, 1);
 }
 
-static void rm9k_cpu_irq_end(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		unmask_rm9k_irq(irq);
-}
-
 static struct irq_chip rm9k_irq_controller = {
 	.typename = "RM9000",
 	.ack = mask_rm9k_irq,
 	.mask = mask_rm9k_irq,
 	.mask_ack = mask_rm9k_irq,
 	.unmask = unmask_rm9k_irq,
-	.end = rm9k_cpu_irq_end,
 };
 
 static struct irq_chip rm9k_perfcounter_irq = {
@@ -103,7 +96,6 @@ static struct irq_chip rm9k_perfcounter_
 	.mask = mask_rm9k_irq,
 	.mask_ack = mask_rm9k_irq,
 	.unmask = unmask_rm9k_irq,
-	.end = rm9k_cpu_irq_end,
 };
 
 unsigned int rm9000_perfcount_irq;
diff --git a/arch/mips/kernel/irq_cpu.c b/arch/mips/kernel/irq_cpu.c
index be5ac23..7634a66 100644
--- a/arch/mips/kernel/irq_cpu.c
+++ b/arch/mips/kernel/irq_cpu.c
@@ -50,12 +50,6 @@ static inline void mask_mips_irq(unsigne
 	irq_disable_hazard();
 }
 
-static void mips_cpu_irq_end(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		unmask_mips_irq(irq);
-}
-
 static struct irq_chip mips_cpu_irq_controller = {
 	.typename	= "MIPS",
 	.ack		= mask_mips_irq,
@@ -63,7 +57,6 @@ static struct irq_chip mips_cpu_irq_cont
 	.mask_ack	= mask_mips_irq,
 	.unmask		= unmask_mips_irq,
 	.eoi		= unmask_mips_irq,
-	.end		= mips_cpu_irq_end,
 };
 
 /*
diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c
index 4a84a7b..2affa5f 100644
--- a/arch/mips/lasat/interrupt.c
+++ b/arch/mips/lasat/interrupt.c
@@ -44,19 +44,12 @@ void enable_lasat_irq(unsigned int irq_n
 	*lasat_int_mask |= (1 << irq_nr) << lasat_int_mask_shift;
 }
 
-static void end_lasat_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_lasat_irq(irq);
-}
-
 static struct irq_chip lasat_irq_type = {
 	.typename = "Lasat",
 	.ack = disable_lasat_irq,
 	.mask = disable_lasat_irq,
 	.mask_ack = disable_lasat_irq,
 	.unmask = enable_lasat_irq,
-	.end = end_lasat_irq,
 };
 
 static inline int ls1bit32(unsigned int x)
diff --git a/arch/mips/momentum/ocelot_c/cpci-irq.c b/arch/mips/momentum/ocelot_c/cpci-irq.c
index e5a4a0a..bb11fef 100644
--- a/arch/mips/momentum/ocelot_c/cpci-irq.c
+++ b/arch/mips/momentum/ocelot_c/cpci-irq.c
@@ -66,15 +66,6 @@ static inline void unmask_cpci_irq(unsig
 }
 
 /*
- * End IRQ processing
- */
-static void end_cpci_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		unmask_cpci_irq(irq);
-}
-
-/*
  * Interrupt handler for interrupts coming from the FPGA chip.
  * It could be built in ethernet ports etc...
  */
@@ -98,7 +89,6 @@ struct irq_chip cpci_irq_type = {
 	.mask = mask_cpci_irq,
 	.mask_ack = mask_cpci_irq,
 	.unmask = unmask_cpci_irq,
-	.end = end_cpci_irq,
 };
 
 void cpci_irq_init(void)
diff --git a/arch/mips/momentum/ocelot_c/uart-irq.c b/arch/mips/momentum/ocelot_c/uart-irq.c
index 0029f00..a7a80c0 100644
--- a/arch/mips/momentum/ocelot_c/uart-irq.c
+++ b/arch/mips/momentum/ocelot_c/uart-irq.c
@@ -60,15 +60,6 @@ static inline void unmask_uart_irq(unsig
 }
 
 /*
- * End IRQ processing
- */
-static void end_uart_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		unmask_uart_irq(irq);
-}
-
-/*
  * Interrupt handler for interrupts coming from the FPGA chip.
  */
 void ll_uart_irq(void)
@@ -91,7 +82,6 @@ struct irq_chip uart_irq_type = {
 	.mask = mask_uart_irq,
 	.mask_ack = mask_uart_irq,
 	.unmask = unmask_uart_irq,
-	.end = end_uart_irq,
 };
 
 void uart_irq_init(void)
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c
index 0dc2393..2c36c10 100644
--- a/arch/mips/philips/pnx8550/common/int.c
+++ b/arch/mips/philips/pnx8550/common/int.c
@@ -158,20 +158,12 @@ int pnx8550_set_gic_priority(int irq, in
 	return prev_priority;
 }
 
-static void end_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) {
-		unmask_irq(irq);
-	}
-}
-
 static struct irq_chip level_irq_type = {
 	.typename =	"PNX Level IRQ",
 	.ack =		mask_irq,
 	.mask =		mask_irq,
 	.mask_ack =	mask_irq,
 	.unmask =	unmask_irq,
-	.end =		end_irq,
 };
 
 static struct irqaction gic_action = {
diff --git a/arch/mips/sgi-ip22/ip22-int.c b/arch/mips/sgi-ip22/ip22-int.c
index c7b1380..c44f8be 100644
--- a/arch/mips/sgi-ip22/ip22-int.c
+++ b/arch/mips/sgi-ip22/ip22-int.c
@@ -51,19 +51,12 @@ static void disable_local0_irq(unsigned
 	sgint->imask0 &= ~(1 << (irq - SGINT_LOCAL0));
 }
 
-static void end_local0_irq (unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_local0_irq(irq);
-}
-
 static struct irq_chip ip22_local0_irq_type = {
 	.typename	= "IP22 local 0",
 	.ack		= disable_local0_irq,
 	.mask		= disable_local0_irq,
 	.mask_ack	= disable_local0_irq,
 	.unmask		= enable_local0_irq,
-	.end		= end_local0_irq,
 };
 
 static void enable_local1_irq(unsigned int irq)
@@ -79,19 +72,12 @@ void disable_local1_irq(unsigned int irq
 	sgint->imask1 &= ~(1 << (irq - SGINT_LOCAL1));
 }
 
-static void end_local1_irq (unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_local1_irq(irq);
-}
-
 static struct irq_chip ip22_local1_irq_type = {
 	.typename	= "IP22 local 1",
 	.ack		= disable_local1_irq,
 	.mask		= disable_local1_irq,
 	.mask_ack	= disable_local1_irq,
 	.unmask		= enable_local1_irq,
-	.end		= end_local1_irq,
 };
 
 static void enable_local2_irq(unsigned int irq)
@@ -107,19 +93,12 @@ void disable_local2_irq(unsigned int irq
 		sgint->imask0 &= ~(1 << (SGI_MAP_0_IRQ - SGINT_LOCAL0));
 }
 
-static void end_local2_irq (unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_local2_irq(irq);
-}
-
 static struct irq_chip ip22_local2_irq_type = {
 	.typename	= "IP22 local 2",
 	.ack		= disable_local2_irq,
 	.mask		= disable_local2_irq,
 	.mask_ack	= disable_local2_irq,
 	.unmask		= enable_local2_irq,
-	.end		= end_local2_irq,
 };
 
 static void enable_local3_irq(unsigned int irq)
@@ -135,19 +114,12 @@ void disable_local3_irq(unsigned int irq
 		sgint->imask1 &= ~(1 << (SGI_MAP_1_IRQ - SGINT_LOCAL1));
 }
 
-static void end_local3_irq (unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_local3_irq(irq);
-}
-
 static struct irq_chip ip22_local3_irq_type = {
 	.typename	= "IP22 local 3",
 	.ack		= disable_local3_irq,
 	.mask		= disable_local3_irq,
 	.mask_ack	= disable_local3_irq,
 	.unmask		= enable_local3_irq,
-	.end		= end_local3_irq,
 };
 
 static void indy_local0_irqdispatch(void)
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c
index 5f8835b..319f880 100644
--- a/arch/mips/sgi-ip27/ip27-irq.c
+++ b/arch/mips/sgi-ip27/ip27-irq.c
@@ -332,13 +332,6 @@ static inline void disable_bridge_irq(un
 	intr_disconnect_level(cpu, swlevel);
 }
 
-static void end_bridge_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)) &&
-	    irq_desc[irq].action)
-		enable_bridge_irq(irq);
-}
-
 static struct irq_chip bridge_irq_type = {
 	.typename	= "bridge",
 	.startup	= startup_bridge_irq,
@@ -347,7 +340,6 @@ static struct irq_chip bridge_irq_type =
 	.mask		= disable_bridge_irq,
 	.mask_ack	= disable_bridge_irq,
 	.unmask		= enable_bridge_irq,
-	.end		= end_bridge_irq,
 };
 
 void __devinit register_bridge_irq(unsigned int irq)
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index 7d36172..c20e989 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -180,10 +180,6 @@ static void disable_rt_irq(unsigned int
 {
 }
 
-static void end_rt_irq(unsigned int irq)
-{
-}
-
 static struct irq_chip rt_irq_type = {
 	.typename	= "SN HUB RT timer",
 	.ack		= disable_rt_irq,
@@ -191,7 +187,6 @@ static struct irq_chip rt_irq_type = {
 	.mask_ack	= disable_rt_irq,
 	.unmask		= enable_rt_irq,
 	.eoi		= enable_rt_irq,
-	.end		= end_rt_irq,
 };
 
 static struct irqaction rt_irqaction = {
diff --git a/arch/mips/tx4927/common/tx4927_irq.c b/arch/mips/tx4927/common/tx4927_irq.c
index 21873de..bd64c16 100644
--- a/arch/mips/tx4927/common/tx4927_irq.c
+++ b/arch/mips/tx4927/common/tx4927_irq.c
@@ -114,11 +114,9 @@ static const u32 tx4927_irq_debug_flag =
 
 static void tx4927_irq_cp0_enable(unsigned int irq);
 static void tx4927_irq_cp0_disable(unsigned int irq);
-static void tx4927_irq_cp0_end(unsigned int irq);
 
 static void tx4927_irq_pic_enable(unsigned int irq);
 static void tx4927_irq_pic_disable(unsigned int irq);
-static void tx4927_irq_pic_end(unsigned int irq);
 
 /*
  * Kernel structs for all pic's
@@ -131,7 +129,6 @@ static struct irq_chip tx4927_irq_cp0_ty
 	.mask		= tx4927_irq_cp0_disable,
 	.mask_ack	= tx4927_irq_cp0_disable,
 	.unmask		= tx4927_irq_cp0_enable,
-	.end		= tx4927_irq_cp0_end,
 };
 
 #define TX4927_PIC_NAME "TX4927-PIC"
@@ -141,7 +138,6 @@ static struct irq_chip tx4927_irq_pic_ty
 	.mask		= tx4927_irq_pic_disable,
 	.mask_ack	= tx4927_irq_pic_disable,
 	.unmask		= tx4927_irq_pic_enable,
-	.end		= tx4927_irq_pic_end,
 };
 
 #define TX4927_PIC_ACTION(s) { no_action, 0, CPU_MASK_NONE, s, NULL, NULL }
@@ -214,15 +210,6 @@ static void tx4927_irq_cp0_disable(unsig
 	tx4927_irq_cp0_modify(CCP0_STATUS, tx4927_irq_cp0_mask(irq), 0);
 }
 
-static void tx4927_irq_cp0_end(unsigned int irq)
-{
-	TX4927_IRQ_DPRINTK(TX4927_IRQ_CP0_ENDIRQ, "irq=%d \n", irq);
-
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		tx4927_irq_cp0_enable(irq);
-	}
-}
-
 /*
  * Functions for pic
  */
@@ -376,15 +363,6 @@ static void tx4927_irq_pic_disable(unsig
 			      tx4927_irq_pic_mask(irq), 0);
 }
 
-static void tx4927_irq_pic_end(unsigned int irq)
-{
-	TX4927_IRQ_DPRINTK(TX4927_IRQ_PIC_ENDIRQ, "irq=%d\n", irq);
-
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		tx4927_irq_pic_enable(irq);
-	}
-}
-
 /*
  * Main init functions
  */
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
index 34cdb2a..ce4ef10 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
@@ -223,7 +223,6 @@ extern void mask_and_ack_8259A(unsigned
 
 static void toshiba_rbtx4927_irq_ioc_enable(unsigned int irq);
 static void toshiba_rbtx4927_irq_ioc_disable(unsigned int irq);
-static void toshiba_rbtx4927_irq_ioc_end(unsigned int irq);
 
 #ifdef CONFIG_TOSHIBA_FPCIB0
 static void toshiba_rbtx4927_irq_isa_enable(unsigned int irq);
@@ -239,7 +238,6 @@ static struct irq_chip toshiba_rbtx4927_
 	.mask = toshiba_rbtx4927_irq_ioc_disable,
 	.mask_ack = toshiba_rbtx4927_irq_ioc_disable,
 	.unmask = toshiba_rbtx4927_irq_ioc_enable,
-	.end = toshiba_rbtx4927_irq_ioc_end,
 };
 #define TOSHIBA_RBTX4927_IOC_INTR_ENAB 0xbc002000
 #define TOSHIBA_RBTX4927_IOC_INTR_STAT 0xbc002006
@@ -388,23 +386,6 @@ static void toshiba_rbtx4927_irq_ioc_dis
 	TOSHIBA_RBTX4927_WR08(TOSHIBA_RBTX4927_IOC_INTR_ENAB, v);
 }
 
-static void toshiba_rbtx4927_irq_ioc_end(unsigned int irq)
-{
-	TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_IOC_ENDIRQ,
-				     "irq=%d\n", irq);
-
-	if (irq < TOSHIBA_RBTX4927_IRQ_IOC_BEG
-	    || irq > TOSHIBA_RBTX4927_IRQ_IOC_END) {
-		TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_EROR,
-					     "bad irq=%d\n", irq);
-		panic("\n");
-	}
-
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		toshiba_rbtx4927_irq_ioc_enable(irq);
-	}
-}
-
 
 /**********************************************************************************/
 /* Functions for isa                                                              */
diff --git a/arch/mips/tx4938/common/irq.c b/arch/mips/tx4938/common/irq.c
index 42e1276..a347b42 100644
--- a/arch/mips/tx4938/common/irq.c
+++ b/arch/mips/tx4938/common/irq.c
@@ -39,11 +39,9 @@
 
 static void tx4938_irq_cp0_enable(unsigned int irq);
 static void tx4938_irq_cp0_disable(unsigned int irq);
-static void tx4938_irq_cp0_end(unsigned int irq);
 
 static void tx4938_irq_pic_enable(unsigned int irq);
 static void tx4938_irq_pic_disable(unsigned int irq);
-static void tx4938_irq_pic_end(unsigned int irq);
 
 /**********************************************************************************/
 /* Kernel structs for all pic's                                                   */
@@ -56,7 +54,6 @@ static struct irq_chip tx4938_irq_cp0_ty
 	.mask = tx4938_irq_cp0_disable,
 	.mask_ack = tx4938_irq_cp0_disable,
 	.unmask = tx4938_irq_cp0_enable,
-	.end = tx4938_irq_cp0_end,
 };
 
 #define TX4938_PIC_NAME "TX4938-PIC"
@@ -66,7 +63,6 @@ static struct irq_chip tx4938_irq_pic_ty
 	.mask = tx4938_irq_pic_disable,
 	.mask_ack = tx4938_irq_pic_disable,
 	.unmask = tx4938_irq_pic_enable,
-	.end = tx4938_irq_pic_end,
 };
 
 static struct irqaction tx4938_irq_pic_action = {
@@ -104,14 +100,6 @@ tx4938_irq_cp0_disable(unsigned int irq)
 	clear_c0_status(tx4938_irq_cp0_mask(irq));
 }
 
-static void
-tx4938_irq_cp0_end(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		tx4938_irq_cp0_enable(irq);
-	}
-}
-
 /**********************************************************************************/
 /* Functions for pic                                                              */
 /**********************************************************************************/
@@ -269,14 +257,6 @@ tx4938_irq_pic_disable(unsigned int irq)
 			      tx4938_irq_pic_mask(irq), 0);
 }
 
-static void
-tx4938_irq_pic_end(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		tx4938_irq_pic_enable(irq);
-	}
-}
-
 /**********************************************************************************/
 /* Main init functions                                                            */
 /**********************************************************************************/
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/irq.c b/arch/mips/tx4938/toshiba_rbtx4938/irq.c
index 8c87a35..b6f363d 100644
--- a/arch/mips/tx4938/toshiba_rbtx4938/irq.c
+++ b/arch/mips/tx4938/toshiba_rbtx4938/irq.c
@@ -89,7 +89,6 @@ IRQ  Device
 
 static void toshiba_rbtx4938_irq_ioc_enable(unsigned int irq);
 static void toshiba_rbtx4938_irq_ioc_disable(unsigned int irq);
-static void toshiba_rbtx4938_irq_ioc_end(unsigned int irq);
 
 #define TOSHIBA_RBTX4938_IOC_NAME "RBTX4938-IOC"
 static struct irq_chip toshiba_rbtx4938_irq_ioc_type = {
@@ -98,7 +97,6 @@ static struct irq_chip toshiba_rbtx4938_
 	.mask = toshiba_rbtx4938_irq_ioc_disable,
 	.mask_ack = toshiba_rbtx4938_irq_ioc_disable,
 	.unmask = toshiba_rbtx4938_irq_ioc_enable,
-	.end = toshiba_rbtx4938_irq_ioc_end,
 };
 
 #define TOSHIBA_RBTX4938_IOC_INTR_ENAB 0xb7f02000
@@ -167,14 +165,6 @@ toshiba_rbtx4938_irq_ioc_disable(unsigne
 	TX4938_RD08(TOSHIBA_RBTX4938_IOC_INTR_ENAB);
 }
 
-static void
-toshiba_rbtx4938_irq_ioc_end(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		toshiba_rbtx4938_irq_ioc_enable(irq);
-	}
-}
-
 extern void __init txx9_spi_irqinit(int irc_irq);
 
 void __init arch_init_irq(void)
diff --git a/arch/mips/vr41xx/common/icu.c b/arch/mips/vr41xx/common/icu.c
index 54b92a7..c075261 100644
--- a/arch/mips/vr41xx/common/icu.c
+++ b/arch/mips/vr41xx/common/icu.c
@@ -427,19 +427,12 @@ static void enable_sysint1_irq(unsigned
 	icu1_set(MSYSINT1REG, 1 << SYSINT1_IRQ_TO_PIN(irq));
 }
 
-static void end_sysint1_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		icu1_set(MSYSINT1REG, 1 << SYSINT1_IRQ_TO_PIN(irq));
-}
-
 static struct irq_chip sysint1_irq_type = {
 	.typename	= "SYSINT1",
 	.ack		= disable_sysint1_irq,
 	.mask		= disable_sysint1_irq,
 	.mask_ack	= disable_sysint1_irq,
 	.unmask		= enable_sysint1_irq,
-	.end		= end_sysint1_irq,
 };
 
 static void disable_sysint2_irq(unsigned int irq)
@@ -452,19 +445,12 @@ static void enable_sysint2_irq(unsigned
 	icu2_set(MSYSINT2REG, 1 << SYSINT2_IRQ_TO_PIN(irq));
 }
 
-static void end_sysint2_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		icu2_set(MSYSINT2REG, 1 << SYSINT2_IRQ_TO_PIN(irq));
-}
-
 static struct irq_chip sysint2_irq_type = {
 	.typename	= "SYSINT2",
 	.ack		= disable_sysint2_irq,
 	.mask		= disable_sysint2_irq,
 	.mask_ack	= disable_sysint2_irq,
 	.unmask		= enable_sysint2_irq,
-	.end		= end_sysint2_irq,
 };
 
 static inline int set_sysint1_assign(unsigned int irq, unsigned char assign)
-- 
1.4.4.1

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 14:58 [PATCH] Compile __do_IRQ() when really needed Franck Bui-Huu
@ 2006-12-01 15:12 ` Atsushi Nemoto
  2006-12-01 15:18   ` Franck Bui-Huu
  2006-12-01 15:14 ` Maciej W. Rozycki
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 13+ messages in thread
From: Atsushi Nemoto @ 2006-12-01 15:12 UTC (permalink / raw)
  To: vagabon.xyz; +Cc: ralf, linux-mips

On Fri, 01 Dec 2006 15:58:07 +0100, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> __do_IRQ() is needed only by irq handlers that can't use
> default handler defined in kernel/irq/chip.c.
> 
> For others platforms there's no need to compile this function
> since it won't be used. For those platforms this patch defines
> GENERIC_HARDIRQS_NO__DO_IRQ symbol which is used exactly for
> this purpose.
> 
> Futhermore for platforms which do not use __do_IRQ(), end()
> method which is part of the 'irq_chip' structure is not used.
> This patch simply removes this method in this case.

As I wrote in separate mail, I think I had fault on
ioasic_dma_irq_type.  So please drop some part from your patch.


> @@ -171,6 +171,7 @@ config MACH_DECSTATION
>  	select SYS_SUPPORTS_128HZ
>  	select SYS_SUPPORTS_256HZ
>  	select SYS_SUPPORTS_1024HZ
> +	select GENERIC_HARDIRQS_NO__DO_IRQ
>  	help
>  	  This enables support for DEC's MIPS based workstations.  For details
>  	  see the Linux/MIPS FAQ on <http://www.linux-mips.org/> and the

and

> @@ -77,20 +70,12 @@ static struct irq_chip ioasic_irq_type =
>  
>  #define ack_ioasic_dma_irq ack_ioasic_irq
>  
> -static inline void end_ioasic_dma_irq(unsigned int irq)
> -{
> -	clear_ioasic_irq(irq);
> -	fast_iob();
> -	end_ioasic_irq(irq);
> -}
> -
>  static struct irq_chip ioasic_dma_irq_type = {
>  	.typename = "IO-ASIC-DMA",
>  	.ack = ack_ioasic_dma_irq,
>  	.mask = mask_ioasic_dma_irq,
>  	.mask_ack = ack_ioasic_dma_irq,
>  	.unmask = unmask_ioasic_dma_irq,
> -	.end = end_ioasic_dma_irq,
>  };
>  
>  

Sorry for confusion...
---
Atsushi Nemoto

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 14:58 [PATCH] Compile __do_IRQ() when really needed Franck Bui-Huu
  2006-12-01 15:12 ` Atsushi Nemoto
@ 2006-12-01 15:14 ` Maciej W. Rozycki
  2006-12-01 15:29 ` Yoichi Yuasa
  2006-12-01 15:45 ` Atsushi Nemoto
  3 siblings, 0 replies; 13+ messages in thread
From: Maciej W. Rozycki @ 2006-12-01 15:14 UTC (permalink / raw)
  To: Franck Bui-Huu; +Cc: Ralf Baechle, Atsushi Nemoto, linux-mips

On Fri, 1 Dec 2006, Franck Bui-Huu wrote:

> diff --git a/arch/mips/dec/ioasic-irq.c b/arch/mips/dec/ioasic-irq.c
> index 269b22b..c5248a1 100644
> --- a/arch/mips/dec/ioasic-irq.c
> +++ b/arch/mips/dec/ioasic-irq.c
> @@ -55,19 +55,12 @@ static inline void ack_ioasic_irq(unsign
>  	fast_iob();
>  }
>  
> -static inline void end_ioasic_irq(unsigned int irq)
> -{
> -	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
> -		unmask_ioasic_irq(irq);
> -}
> -
>  static struct irq_chip ioasic_irq_type = {
>  	.typename = "IO-ASIC",
>  	.ack = ack_ioasic_irq,
>  	.mask = mask_ioasic_irq,
>  	.mask_ack = ack_ioasic_irq,
>  	.unmask = unmask_ioasic_irq,
> -	.end = end_ioasic_irq,
>  };
>  
>  
> @@ -77,20 +70,12 @@ static struct irq_chip ioasic_irq_type =
>  
>  #define ack_ioasic_dma_irq ack_ioasic_irq
>  
> -static inline void end_ioasic_dma_irq(unsigned int irq)
> -{
> -	clear_ioasic_irq(irq);
> -	fast_iob();
> -	end_ioasic_irq(irq);
> -}
> -
>  static struct irq_chip ioasic_dma_irq_type = {
>  	.typename = "IO-ASIC-DMA",
>  	.ack = ack_ioasic_dma_irq,
>  	.mask = mask_ioasic_dma_irq,
>  	.mask_ack = ack_ioasic_dma_irq,
>  	.unmask = unmask_ioasic_dma_irq,
> -	.end = end_ioasic_dma_irq,
>  };
>  
>  

 You have removed a call to clear_ioasic_irq() -- I/O ASIC DMA engines 
will cease to work as a result.

  Maciej

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 15:12 ` Atsushi Nemoto
@ 2006-12-01 15:18   ` Franck Bui-Huu
  0 siblings, 0 replies; 13+ messages in thread
From: Franck Bui-Huu @ 2006-12-01 15:18 UTC (permalink / raw)
  To: Atsushi Nemoto; +Cc: ralf, linux-mips

On 12/1/06, Atsushi Nemoto <anemo@mba.ocn.ne.jp> wrote:
> On Fri, 01 Dec 2006 15:58:07 +0100, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> > __do_IRQ() is needed only by irq handlers that can't use
> > default handler defined in kernel/irq/chip.c.
> >
> > For others platforms there's no need to compile this function
> > since it won't be used. For those platforms this patch defines
> > GENERIC_HARDIRQS_NO__DO_IRQ symbol which is used exactly for
> > this purpose.
> >
> > Futhermore for platforms which do not use __do_IRQ(), end()
> > method which is part of the 'irq_chip' structure is not used.
> > This patch simply removes this method in this case.
>
> As I wrote in separate mail, I think I had fault on
> ioasic_dma_irq_type.  So please drop some part from your patch.
>

Yes, I just noticed your latest patch which makes this one obsolete
and wrong. I'm going to drop DEC's part.

thanks
-- 
               Franck

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 14:58 [PATCH] Compile __do_IRQ() when really needed Franck Bui-Huu
  2006-12-01 15:12 ` Atsushi Nemoto
  2006-12-01 15:14 ` Maciej W. Rozycki
@ 2006-12-01 15:29 ` Yoichi Yuasa
  2006-12-01 15:47   ` Franck Bui-Huu
  2006-12-01 15:45 ` Atsushi Nemoto
  3 siblings, 1 reply; 13+ messages in thread
From: Yoichi Yuasa @ 2006-12-01 15:29 UTC (permalink / raw)
  To: Franck; +Cc: yoichi_yuasa, ralf, anemo, linux-mips

Hi,

On Fri, 01 Dec 2006 15:58:07 +0100
Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:

>  config MACH_VR41XX
>  	bool "NEC VR41XX-based machines"
>  	select SYS_HAS_CPU_VR41XX
> +	select GENERIC_HARDIRQS_NO__DO_IRQ

NEC CMBVR4133 has i8259.
The other vr41xx boards have no problem.

Thanks,

Yoichi

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 14:58 [PATCH] Compile __do_IRQ() when really needed Franck Bui-Huu
                   ` (2 preceding siblings ...)
  2006-12-01 15:29 ` Yoichi Yuasa
@ 2006-12-01 15:45 ` Atsushi Nemoto
  2006-12-01 15:59   ` Sergei Shtylyov
  2006-12-01 16:47   ` Franck Bui-Huu
  3 siblings, 2 replies; 13+ messages in thread
From: Atsushi Nemoto @ 2006-12-01 15:45 UTC (permalink / raw)
  To: vagabon.xyz; +Cc: ralf, linux-mips

On Fri, 01 Dec 2006 15:58:07 +0100, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> @@ -216,6 +217,7 @@ config MACH_JAZZ
>  	select SYS_SUPPORTS_32BIT_KERNEL
>  	select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
>  	select SYS_SUPPORTS_100HZ
> +	select GENERIC_HARDIRQS_NO__DO_IRQ
>  	help
>  	 This a family of machines based on the MIPS R4030 chipset which was
>  	 used by several vendors to build RISC/os and Windows NT workstations.

JAZZ uses i8259 which is not converted to irq flow handler yet.

> @@ -468,6 +473,7 @@ config DDB5477
>  config MACH_VR41XX
>  	bool "NEC VR41XX-based machines"
>  	select SYS_HAS_CPU_VR41XX
> +	select GENERIC_HARDIRQS_NO__DO_IRQ
>  
>  config PMC_YOSEMITE
>  	bool "PMC-Sierra Yosemite eval board"

Same here.

> @@ -519,6 +525,7 @@ config MARKEINS
>  	select SYS_SUPPORTS_BIG_ENDIAN
>  	select SYS_SUPPORTS_LITTLE_ENDIAN
>  	select SYS_HAS_CPU_R5000
> +	select GENERIC_HARDIRQS_NO__DO_IRQ
>  	help
>  	  This enables support for the R5432-based NEC Mark-eins
>  	  boards with R5500 CPU.

For now emma2rh_gpio_irq_controller still needs __do_IRQ().

> @@ -539,6 +546,7 @@ config SGI_IP22
>  	select SYS_SUPPORTS_32BIT_KERNEL
>  	select SYS_SUPPORTS_64BIT_KERNEL
>  	select SYS_SUPPORTS_BIG_ENDIAN
> +	select GENERIC_HARDIRQS_NO__DO_IRQ
>  	help
>  	  This are the SGI Indy, Challenge S and Indigo2, as well as certain
>  	  OEM variants like the Tandem CMN B006S. To compile a Linux kernel

For now ip22_eisa1_irq_type and ip22_eisa2_irq_type need __do_IRQ().

> @@ -739,6 +748,7 @@ config TOSHIBA_RBTX4927
>  	select SYS_SUPPORTS_64BIT_KERNEL
>  	select SYS_SUPPORTS_BIG_ENDIAN
>  	select TOSHIBA_BOARDS
> +	select GENERIC_HARDIRQS_NO__DO_IRQ
>  	help
>  	  This Toshiba board is based on the TX4927 processor. Say Y here to
>  	  support this machine type

For now toshiba_rbtx4927_irq_isa_type still needs __do_IRQ().

> @@ -758,6 +768,7 @@ config TOSHIBA_RBTX4938
>  	select SYS_SUPPORTS_LITTLE_ENDIAN
>  	select SYS_SUPPORTS_BIG_ENDIAN
>  	select TOSHIBA_BOARDS
> +	select GENERIC_HARDIRQS_NO__DO_IRQ
>  	help
>  	  This Toshiba board is based on the TX4938 processor. Say Y here to
>  	  support this machine type

RBTX4938(rbhma4500) uses i8259 which is not converted to irq flow
handler yet.

> @@ -214,15 +210,6 @@ static void tx4927_irq_cp0_disable(unsig
>  	tx4927_irq_cp0_modify(CCP0_STATUS, tx4927_irq_cp0_mask(irq), 0);
>  }
>  
> -static void tx4927_irq_cp0_end(unsigned int irq)
> -{
> -	TX4927_IRQ_DPRINTK(TX4927_IRQ_CP0_ENDIRQ, "irq=%d \n", irq);
> -
> -	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
> -		tx4927_irq_cp0_enable(irq);
> -	}
> -}
> -
>  /*
>   * Functions for pic
>   */
> @@ -376,15 +363,6 @@ static void tx4927_irq_pic_disable(unsig
>  			      tx4927_irq_pic_mask(irq), 0);
>  }
>  
> -static void tx4927_irq_pic_end(unsigned int irq)
> -{
> -	TX4927_IRQ_DPRINTK(TX4927_IRQ_PIC_ENDIRQ, "irq=%d\n", irq);
> -
> -	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
> -		tx4927_irq_pic_enable(irq);
> -	}
> -}
> -
>  /*
>   * Main init functions
>   */

You can remove those lines too:

#define TX4927_IRQ_CP0_ENDIRQ   ( 1 << 16 )
#define TX4927_IRQ_PIC_ENDIRQ   ( 1 << 26 )

> diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
> index 34cdb2a..ce4ef10 100644
> --- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
> +++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
> @@ -388,23 +386,6 @@ static void toshiba_rbtx4927_irq_ioc_dis
>  	TOSHIBA_RBTX4927_WR08(TOSHIBA_RBTX4927_IOC_INTR_ENAB, v);
>  }
>  
> -static void toshiba_rbtx4927_irq_ioc_end(unsigned int irq)
> -{
> -	TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_IOC_ENDIRQ,
> -				     "irq=%d\n", irq);
> -
> -	if (irq < TOSHIBA_RBTX4927_IRQ_IOC_BEG
> -	    || irq > TOSHIBA_RBTX4927_IRQ_IOC_END) {
> -		TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_EROR,
> -					     "bad irq=%d\n", irq);
> -		panic("\n");
> -	}
> -
> -	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
> -		toshiba_rbtx4927_irq_ioc_enable(irq);
> -	}
> -}
> -
>  
>  /**********************************************************************************/
>  /* Functions for isa                                                              */

You can remove this line too:

#define TOSHIBA_RBTX4927_IRQ_IOC_ENDIRQ    ( 1 << 16 )

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 15:29 ` Yoichi Yuasa
@ 2006-12-01 15:47   ` Franck Bui-Huu
  0 siblings, 0 replies; 13+ messages in thread
From: Franck Bui-Huu @ 2006-12-01 15:47 UTC (permalink / raw)
  To: Yoichi Yuasa; +Cc: ralf, anemo, linux-mips

Hi,

On 12/1/06, Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> wrote:
> Hi,
>
> On Fri, 01 Dec 2006 15:58:07 +0100
> Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
>
> >  config MACH_VR41XX
> >       bool "NEC VR41XX-based machines"
> >       select SYS_HAS_CPU_VR41XX
> > +     select GENERIC_HARDIRQS_NO__DO_IRQ
>
> NEC CMBVR4133 has i8259.
> The other vr41xx boards have no problem.
>

Thanks for testing.
-- 
               Franck

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 15:45 ` Atsushi Nemoto
@ 2006-12-01 15:59   ` Sergei Shtylyov
  2006-12-01 16:47   ` Franck Bui-Huu
  1 sibling, 0 replies; 13+ messages in thread
From: Sergei Shtylyov @ 2006-12-01 15:59 UTC (permalink / raw)
  To: Atsushi Nemoto; +Cc: vagabon.xyz, ralf, linux-mips

Hello.

Atsushi Nemoto wrote:

>>@@ -758,6 +768,7 @@ config TOSHIBA_RBTX4938
>> 	select SYS_SUPPORTS_LITTLE_ENDIAN
>> 	select SYS_SUPPORTS_BIG_ENDIAN
>> 	select TOSHIBA_BOARDS
>>+	select GENERIC_HARDIRQS_NO__DO_IRQ
>> 	help
>> 	  This Toshiba board is based on the TX4938 processor. Say Y here to
>> 	  support this machine type

> RBTX4938(rbhma4500) uses i8259 which is not converted to irq flow
> handler yet.

    I'm afraid there's some mistake in Kconfig -- RBTX4938 doesn't have 8259 
compatible controller. And the backplane that has it isn't supported by the 
current code anyway.

WBR, Sergei

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 15:45 ` Atsushi Nemoto
  2006-12-01 15:59   ` Sergei Shtylyov
@ 2006-12-01 16:47   ` Franck Bui-Huu
  2006-12-01 16:54     ` Sergei Shtylyov
  2006-12-01 17:05     ` Atsushi Nemoto
  1 sibling, 2 replies; 13+ messages in thread
From: Franck Bui-Huu @ 2006-12-01 16:47 UTC (permalink / raw)
  To: Atsushi Nemoto; +Cc: ralf, linux-mips

On 12/1/06, Atsushi Nemoto <anemo@mba.ocn.ne.jp> wrote:
> On Fri, 01 Dec 2006 15:58:07 +0100, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> > @@ -216,6 +217,7 @@ config MACH_JAZZ
> >       select SYS_SUPPORTS_32BIT_KERNEL
> >       select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
> >       select SYS_SUPPORTS_100HZ
> > +     select GENERIC_HARDIRQS_NO__DO_IRQ
> >       help
> >        This a family of machines based on the MIPS R4030 chipset which was
> >        used by several vendors to build RISC/os and Windows NT workstations.
>
> JAZZ uses i8259 which is not converted to irq flow handler yet.
>

stupid me, I completely forgot this point ! I'm going to take a cool
shower before updating that...

> > @@ -468,6 +473,7 @@ config DDB5477
> >  config MACH_VR41XX
> >       bool "NEC VR41XX-based machines"
> >       select SYS_HAS_CPU_VR41XX
> > +     select GENERIC_HARDIRQS_NO__DO_IRQ
> >
> >  config PMC_YOSEMITE
> >       bool "PMC-Sierra Yosemite eval board"
>
> Same here.
>

are you sure ? I don't see any traces of i8259 selection.
Moreover, Yoichi's vr41xx boards seem to have no problem

I agree with all the rest.

Thanks
-- 
               Franck

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 16:47   ` Franck Bui-Huu
@ 2006-12-01 16:54     ` Sergei Shtylyov
  2006-12-01 17:11       ` Franck Bui-Huu
  2006-12-01 17:05     ` Atsushi Nemoto
  1 sibling, 1 reply; 13+ messages in thread
From: Sergei Shtylyov @ 2006-12-01 16:54 UTC (permalink / raw)
  To: Franck Bui-Huu; +Cc: Atsushi Nemoto, ralf, linux-mips

Hello.

Franck Bui-Huu wrote:

>> > @@ -468,6 +473,7 @@ config DDB5477
>> >  config MACH_VR41XX
>> >       bool "NEC VR41XX-based machines"
>> >       select SYS_HAS_CPU_VR41XX
>> > +     select GENERIC_HARDIRQS_NO__DO_IRQ
>> >
>> >  config PMC_YOSEMITE
>> >       bool "PMC-Sierra Yosemite eval board"

>> Same here.

> are you sure ? I don't see any traces of i8259 selection.
> Moreover, Yoichi's vr41xx boards seem to have no problem

   CMB-Vr4133 has the Rockhopper backplane with 8259 integrated into ALi chip 
-- and it is supported via CONFIG_ROCKHOPPER.

> I agree with all the rest.

> Thanks

WBR, Sergei

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 16:47   ` Franck Bui-Huu
  2006-12-01 16:54     ` Sergei Shtylyov
@ 2006-12-01 17:05     ` Atsushi Nemoto
  2006-12-01 17:12       ` Franck Bui-Huu
  1 sibling, 1 reply; 13+ messages in thread
From: Atsushi Nemoto @ 2006-12-01 17:05 UTC (permalink / raw)
  To: vagabon.xyz; +Cc: ralf, linux-mips

On Fri, 1 Dec 2006 17:47:29 +0100, "Franck Bui-Huu" <vagabon.xyz@gmail.com> wrote:
> > > @@ -468,6 +473,7 @@ config DDB5477
> > >  config MACH_VR41XX
> > >       bool "NEC VR41XX-based machines"
> > >       select SYS_HAS_CPU_VR41XX
> > > +     select GENERIC_HARDIRQS_NO__DO_IRQ
> > >
> > >  config PMC_YOSEMITE
> > >       bool "PMC-Sierra Yosemite eval board"
> >
> > Same here.
> >
> 
> are you sure ? I don't see any traces of i8259 selection.
> Moreover, Yoichi's vr41xx boards seem to have no problem

Oh I was wrong.  I had misread VR41XX as DDB5477...

---
Atsushi Nemoto

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 16:54     ` Sergei Shtylyov
@ 2006-12-01 17:11       ` Franck Bui-Huu
  0 siblings, 0 replies; 13+ messages in thread
From: Franck Bui-Huu @ 2006-12-01 17:11 UTC (permalink / raw)
  To: Sergei Shtylyov; +Cc: Atsushi Nemoto, ralf, linux-mips

On 12/1/06, Sergei Shtylyov <sshtylyov@ru.mvista.com> wrote:
>    CMB-Vr4133 has the Rockhopper backplane with 8259 integrated into ALi chip
> -- and it is supported via CONFIG_ROCKHOPPER.
>

thanks, I can see it now.
-- 
               Franck

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

* Re: [PATCH] Compile __do_IRQ() when really needed
  2006-12-01 17:05     ` Atsushi Nemoto
@ 2006-12-01 17:12       ` Franck Bui-Huu
  0 siblings, 0 replies; 13+ messages in thread
From: Franck Bui-Huu @ 2006-12-01 17:12 UTC (permalink / raw)
  To: Atsushi Nemoto; +Cc: ralf, linux-mips

On 12/1/06, Atsushi Nemoto <anemo@mba.ocn.ne.jp> wrote:
> On Fri, 1 Dec 2006 17:47:29 +0100, "Franck Bui-Huu" <vagabon.xyz@gmail.com> wrote:
> > > > @@ -468,6 +473,7 @@ config DDB5477
> > > >  config MACH_VR41XX
> > > >       bool "NEC VR41XX-based machines"
> > > >       select SYS_HAS_CPU_VR41XX
> > > > +     select GENERIC_HARDIRQS_NO__DO_IRQ
> > > >
> > > >  config PMC_YOSEMITE
> > > >       bool "PMC-Sierra Yosemite eval board"
> > >
> > > Same here.
> > >
> >
> > are you sure ? I don't see any traces of i8259 selection.
> > Moreover, Yoichi's vr41xx boards seem to have no problem
>
> Oh I was wrong.  I had misread VR41XX as DDB5477...
>

No you were not ;) take a look to Sergei reply.

-- 
               Franck

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

end of thread, other threads:[~2006-12-01 17:12 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-01 14:58 [PATCH] Compile __do_IRQ() when really needed Franck Bui-Huu
2006-12-01 15:12 ` Atsushi Nemoto
2006-12-01 15:18   ` Franck Bui-Huu
2006-12-01 15:14 ` Maciej W. Rozycki
2006-12-01 15:29 ` Yoichi Yuasa
2006-12-01 15:47   ` Franck Bui-Huu
2006-12-01 15:45 ` Atsushi Nemoto
2006-12-01 15:59   ` Sergei Shtylyov
2006-12-01 16:47   ` Franck Bui-Huu
2006-12-01 16:54     ` Sergei Shtylyov
2006-12-01 17:11       ` Franck Bui-Huu
2006-12-01 17:05     ` Atsushi Nemoto
2006-12-01 17:12       ` Franck Bui-Huu

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.