Skip to contentSkip to conversation

genirq: Remove the last __do_IRQ() leftovers

PATCH In review Thomas Gleixner 3 participants 11 messages Feb 3, 2011 – Feb 9, 2011

Subsystems (6)
lore
Share & tools
lore
#0 lore raw

cover genirq: Remove the last __do_IRQ() leftovers

There are still a few irq chips which implement the .end function, which is not relevant anymore since __do_IRQ() is gone. This series removes the leftovers.

I'd like to push this through the irq tree if there are no objections from the affected maintainers.

Thanks,

tglx

 arch/frv/kernel/irq-mb93093.c                |    1 -
 arch/frv/kernel/irq.c                        |    6 ------
 arch/ia64/hp/sim/hpsim_irq.c                 |    1 -
 arch/ia64/kernel/iosapic.c                   |    2 --
 arch/ia64/kernel/irq_lsapic.c                |    1 -
 arch/ia64/sn/kernel/irq.c                    |   23 -----------------------
 arch/microblaze/kernel/intc.c                |   13 -------------
 arch/mips/dec/ioasic-irq.c                   |    8 --------
 arch/mips/kernel/irq-msc01.c                 |   11 -----------
 arch/mips/pnx833x/common/interrupts.c        |   11 -----------
 arch/mips/sgi-ip32/ip32-irq.c                |   22 ----------------------
 arch/mips/sibyte/bcm1480/irq.c               |   12 ------------
 arch/mips/sibyte/sb1250/irq.c                |   12 ------------
 arch/mips/sni/a20r.c                         |    9 ---------
 arch/mips/sni/pcimt.c                        |    7 -------
 arch/mips/sni/pcit.c                         |    7 -------
 arch/mips/sni/rm200.c                        |    7 -------
 arch/mn10300/kernel/mn10300-serial.c         |    5 -----
 arch/powerpc/platforms/82xx/pq2ads-pci-pic.c |    1 -
 arch/powerpc/sysdev/tsi108_pci.c             |   13 -------------
 arch/um/kernel/irq.c                         |    2 --
 include/linux/irq.h                          |    2 --
 kernel/irq/chip.c                            |    3 ---
 kernel/irq/dummychip.c                       |    9 ---------
 kernel/irq/internals.h                       |   10 ----------
 kernel/irq/spurious.c                        |    6 ------
 26 files changed, 204 deletions(-)
#1 lore raw

PATCH 1/8 frv: Remove stale irq_chip.end

irq_chip.end got obsolete with the removal of __do_IRQ().

irq-mb93093.c even lacks an implementation, but nobody noticed that it's broken since commit 88d6e1 in 2006.

---
 arch/frv/kernel/irq-mb93093.c |    1 -
 arch/frv/kernel/irq.c         |    6 ------
 2 files changed, 7 deletions(-)
arch/frv/kernel/irq-mb93093.c +0 -1
Index: linux-2.6-tip/arch/frv/kernel/irq-mb93093.c
===================================================================
@@ -73,7 +73,6 @@ static struct irq_chip frv_fpga_pic = {
 	.mask		= frv_fpga_mask,
 	.mask_ack	= frv_fpga_mask_ack,
 	.unmask		= frv_fpga_unmask,
-	.end		= frv_fpga_end,
 };
 
 /*
arch/frv/kernel/irq.c +0 -6
Index: linux-2.6-tip/arch/frv/kernel/irq.c
===================================================================
@@ -118,18 +118,12 @@ static void frv_cpupic_unmask(unsigned i
 	__clr_MASK(irqlevel);
 }
 
-static void frv_cpupic_end(unsigned int irqlevel)
-{
-	__clr_MASK(irqlevel);
-}
-
 static struct irq_chip frv_cpu_pic = {
 	.name		= "cpu",
 	.ack		= frv_cpupic_ack,
 	.mask		= frv_cpupic_mask,
 	.mask_ack	= frv_cpupic_mask_ack,
 	.unmask		= frv_cpupic_unmask,
-	.end		= frv_cpupic_end,
 };
 
 /*
#2 lore raw

PATCH 2/8 ia64: Remove stale irq_chip.end

In reply to Thomas Gleixner

irq_chip.end got obsolete with the removal of __do_IRQ().

---
 arch/ia64/hp/sim/hpsim_irq.c  |    1 -
 arch/ia64/kernel/iosapic.c    |    2 --
 arch/ia64/kernel/irq_lsapic.c |    1 -
 arch/ia64/sn/kernel/irq.c     |   23 -----------------------
 4 files changed, 27 deletions(-)
arch/ia64/hp/sim/hpsim_irq.c +0 -1
Index: linux-2.6-tip/arch/ia64/hp/sim/hpsim_irq.c
===================================================================
@@ -34,7 +34,6 @@ static struct irq_chip irq_type_hp_sim =
 	.enable =	hpsim_irq_noop,
 	.disable =	hpsim_irq_noop,
 	.ack =		hpsim_irq_noop,
-	.end =		hpsim_irq_noop,
 	.set_affinity =	hpsim_set_affinity_noop,
 };
 
arch/ia64/kernel/iosapic.c +0 -2
Index: linux-2.6-tip/arch/ia64/kernel/iosapic.c
===================================================================
@@ -460,7 +460,6 @@ iosapic_ack_edge_irq (unsigned int irq)
 
 #define iosapic_enable_edge_irq		unmask_irq
 #define iosapic_disable_edge_irq	nop
-#define iosapic_end_edge_irq		nop
 
 static struct irq_chip irq_type_iosapic_edge = {
 	.name =		"IO-SAPIC-edge",
@@ -469,7 +468,6 @@ static struct irq_chip irq_type_iosapic_
 	.enable =	iosapic_enable_edge_irq,
 	.disable =	iosapic_disable_edge_irq,
 	.ack =		iosapic_ack_edge_irq,
-	.end =		iosapic_end_edge_irq,
 	.mask =		mask_irq,
 	.unmask =	unmask_irq,
 	.set_affinity =	iosapic_set_affinity
arch/ia64/kernel/irq_lsapic.c +0 -1
Index: linux-2.6-tip/arch/ia64/kernel/irq_lsapic.c
===================================================================
@@ -40,6 +40,5 @@ struct irq_chip irq_type_ia64_lsapic = {
 	.enable =	lsapic_noop,
 	.disable =	lsapic_noop,
 	.ack =		lsapic_noop,
-	.end =		lsapic_noop,
 	.retrigger =	lsapic_retrigger,
 };
arch/ia64/sn/kernel/irq.c +0 -23
Index: linux-2.6-tip/arch/ia64/sn/kernel/irq.c
===================================================================
@@ -114,28 +114,6 @@ static void sn_ack_irq(unsigned int irq)
 	move_native_irq(irq);
 }
 
-static void sn_end_irq(unsigned int irq)
-{
-	int ivec;
-	u64 event_occurred;
-
-	ivec = irq & 0xff;
-	if (ivec == SGI_UART_VECTOR) {
-		event_occurred = HUB_L((u64*)LOCAL_MMR_ADDR (SH_EVENT_OCCURRED));
-		/* If the UART bit is set here, we may have received an
-		 * interrupt from the UART that the driver missed.  To
-		 * make sure, we IPI ourselves to force us to look again.
-		 */
-		if (event_occurred & SH_EVENT_OCCURRED_UART_INT_MASK) {
-			platform_send_ipi(smp_processor_id(), SGI_UART_VECTOR,
-					  IA64_IPI_DM_INT, 0);
-		}
-	}
-	__clear_bit(ivec, (volatile void *)pda->sn_in_service_ivecs);
-	if (sn_force_interrupt_flag)
-		force_interrupt(irq);
-}
-
 static void sn_irq_info_free(struct rcu_head *head);
 
 struct sn_irq_info *sn_retarget_vector(struct sn_irq_info *sn_irq_info,
@@ -275,7 +253,6 @@ struct irq_chip irq_type_sn = {
 	.enable		= sn_enable_irq,
 	.disable	= sn_disable_irq,
 	.ack		= sn_ack_irq,
-	.end		= sn_end_irq,
 	.mask		= sn_mask_irq,
 	.unmask		= sn_unmask_irq,
 	.set_affinity	= sn_set_affinity_irq
#3 lore raw

PATCH 3/8 microblaze: Remove stale irq_chip.end

In reply to Thomas Gleixner

irq_chip.end got obsolete with the removal of __do_IRQ().

---
 arch/microblaze/kernel/intc.c |   13 -------------
 1 file changed, 13 deletions(-)
arch/microblaze/kernel/intc.c +0 -13
Index: linux-2.6-tip/arch/microblaze/kernel/intc.c
===================================================================
@@ -74,25 +74,12 @@ static void intc_mask_ack(unsigned int i
 	out_be32(INTC_BASE + IAR, mask);
 }
 
-static void intc_end(unsigned int irq)
-{
-	unsigned long mask = 1 << irq;
-	pr_debug("end: %d\n", irq);
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		out_be32(INTC_BASE + SIE, mask);
-		/* ack level sensitive intr */
-		if (irq_desc[irq].status & IRQ_LEVEL)
-			out_be32(INTC_BASE + IAR, mask);
-	}
-}
-
 static struct irq_chip intc_dev = {
 	.name = "Xilinx INTC",
 	.unmask = intc_enable_or_unmask,
 	.mask = intc_disable_or_mask,
 	.ack = intc_ack,
 	.mask_ack = intc_mask_ack,
-	.end = intc_end,
 };
 
 unsigned int get_irq(struct pt_regs *regs)
maintainer Tested-by on v1 3/8
#4 lore raw

Re: [patch 3/8] microblaze: Remove stale irq_chip.end

irq_chip.end got obsolete with the removal of __do_IRQ().

---
 arch/microblaze/kernel/intc.c |   13 -------------
 1 file changed, 13 deletions(-)

M

Signature · 4 lines
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian
#5 lore raw

PATCH 4/8 mips: Remove stale irq_chip.end

In reply to Thomas Gleixner

irq_chip.end got obsolete with the removal of __do_IRQ().

---
 arch/mips/dec/ioasic-irq.c            |    8 --------
 arch/mips/kernel/irq-msc01.c          |   11 -----------
 arch/mips/pnx833x/common/interrupts.c |   11 -----------
 arch/mips/sgi-ip32/ip32-irq.c         |   22 ----------------------
 arch/mips/sibyte/bcm1480/irq.c        |   12 ------------
 arch/mips/sibyte/sb1250/irq.c         |   12 ------------
 arch/mips/sni/a20r.c                  |    9 ---------
 arch/mips/sni/pcimt.c                 |    7 -------
 arch/mips/sni/pcit.c                  |    7 -------
 arch/mips/sni/rm200.c                 |    7 -------
 10 files changed, 106 deletions(-)
arch/mips/dec/ioasic-irq.c +0 -8
Index: linux-2.6-tip/arch/mips/dec/ioasic-irq.c
===================================================================
@@ -74,20 +74,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 = {
 	.name = "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,
 };
 
 
arch/mips/kernel/irq-msc01.c +0 -11
Index: linux-2.6-tip/arch/mips/kernel/irq-msc01.c
===================================================================
@@ -75,15 +75,6 @@ static void edge_mask_and_ack_msc_irq(un
 }
 
 /*
- * End IRQ processing
- */
-static void end_msc_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		unmask_msc_irq(irq);
-}
-
-/*
  * Interrupt handler for interrupts coming from SOC-it.
  */
 void ll_msc_irq(void)
@@ -112,7 +103,6 @@ static struct irq_chip msc_levelirq_type
 	.mask_ack = level_mask_and_ack_msc_irq,
 	.unmask = unmask_msc_irq,
 	.eoi = unmask_msc_irq,
-	.end = end_msc_irq,
 };
 
 static struct irq_chip msc_edgeirq_type = {
@@ -122,7 +112,6 @@ static struct irq_chip msc_edgeirq_type 
 	.mask_ack = edge_mask_and_ack_msc_irq,
 	.unmask = unmask_msc_irq,
 	.eoi = unmask_msc_irq,
-	.end = end_msc_irq,
 };
 
 
arch/mips/pnx833x/common/interrupts.c +0 -11
Index: linux-2.6-tip/arch/mips/pnx833x/common/interrupts.c
===================================================================
@@ -254,15 +254,6 @@ static void pnx833x_ack_gpio_irq(unsigne
 {
 }
 
-static void pnx833x_end_gpio_irq(unsigned int irq)
-{
-	int pin = irq - PNX833X_GPIO_IRQ_BASE;
-	unsigned long flags;
-	raw_spin_lock_irqsave(&pnx833x_gpio_pnx833x_irq_lock, flags);
-	pnx833x_gpio_clear_irq(pin);
-	raw_spin_unlock_irqrestore(&pnx833x_gpio_pnx833x_irq_lock, flags);
-}
-
 static int pnx833x_set_type_gpio_irq(unsigned int irq, unsigned int flow_type)
 {
 	int pin = irq - PNX833X_GPIO_IRQ_BASE;
@@ -301,7 +292,6 @@ static struct irq_chip pnx833x_pic_irq_t
 	.enable = pnx833x_enable_pic_irq,
 	.disable = pnx833x_disable_pic_irq,
 	.ack = pnx833x_ack_pic_irq,
-	.end = pnx833x_end_pic_irq
 };
 
 static struct irq_chip pnx833x_gpio_irq_type = {
@@ -311,7 +301,6 @@ static struct irq_chip pnx833x_gpio_irq_
 	.enable = pnx833x_enable_gpio_irq,
 	.disable = pnx833x_disable_gpio_irq,
 	.ack = pnx833x_ack_gpio_irq,
-	.end = pnx833x_end_gpio_irq,
 	.set_type = pnx833x_set_type_gpio_irq
 };
 
arch/mips/sgi-ip32/ip32-irq.c +0 -22
Index: linux-2.6-tip/arch/mips/sgi-ip32/ip32-irq.c
===================================================================
@@ -222,19 +222,12 @@ static void disable_macepci_irq(unsigned
 	flush_mace_bus();
 }
 
-static void end_macepci_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_macepci_irq(irq);
-}
-
 static struct irq_chip ip32_macepci_interrupt = {
 	.name = "IP32 MACE PCI",
 	.ack = disable_macepci_irq,
 	.mask = disable_macepci_irq,
 	.mask_ack = disable_macepci_irq,
 	.unmask = enable_macepci_irq,
-	.end = end_macepci_irq,
 };
 
 /* This is used for MACE ISA interrupts.  That means bits 4-6 in the
@@ -330,19 +323,12 @@ static void mask_and_ack_maceisa_irq(uns
 	disable_maceisa_irq(irq);
 }
 
-static void end_maceisa_irq(unsigned irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-		enable_maceisa_irq(irq);
-}
-
 static struct irq_chip ip32_maceisa_level_interrupt = {
 	.name		= "IP32 MACE ISA",
 	.ack		= disable_maceisa_irq,
 	.mask		= disable_maceisa_irq,
 	.mask_ack	= disable_maceisa_irq,
 	.unmask		= enable_maceisa_irq,
-	.end		= end_maceisa_irq,
 };
 
 static struct irq_chip ip32_maceisa_edge_interrupt = {
@@ -351,7 +337,6 @@ static struct irq_chip ip32_maceisa_edge
 	.mask		= disable_maceisa_irq,
 	.mask_ack	= mask_and_ack_maceisa_irq,
 	.unmask		= enable_maceisa_irq,
-	.end		= end_maceisa_irq,
 };
 
 /* This is used for regular non-ISA, non-PCI MACE interrupts.  That means
@@ -375,19 +360,12 @@ static void disable_mace_irq(unsigned in
 	flush_crime_bus();
 }
 
-static void end_mace_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_mace_irq(irq);
-}
-
 static struct irq_chip ip32_mace_interrupt = {
 	.name = "IP32 MACE",
 	.ack = disable_mace_irq,
 	.mask = disable_mace_irq,
 	.mask_ack = disable_mace_irq,
 	.unmask = enable_mace_irq,
-	.end = end_mace_irq,
 };
 
 static void ip32_unknown_interrupt(void)
arch/mips/sibyte/bcm1480/irq.c +0 -12
Index: linux-2.6-tip/arch/mips/sibyte/bcm1480/irq.c
===================================================================
@@ -44,8 +44,6 @@
  * for interrupt lines
  */
 
-
-static void end_bcm1480_irq(unsigned int irq);
 static void enable_bcm1480_irq(unsigned int irq);
 static void disable_bcm1480_irq(unsigned int irq);
 static void ack_bcm1480_irq(unsigned int irq);
@@ -63,7 +61,6 @@ static struct irq_chip bcm1480_irq_type 
 	.mask = disable_bcm1480_irq,
 	.mask_ack = ack_bcm1480_irq,
 	.unmask = enable_bcm1480_irq,
-	.end = end_bcm1480_irq,
 #ifdef CONFIG_SMP
 	.set_affinity = bcm1480_set_affinity
 #endif
@@ -217,15 +214,6 @@ static void ack_bcm1480_irq(unsigned int
 	bcm1480_mask_irq(bcm1480_irq_owner[irq], irq);
 }
 
-
-static void end_bcm1480_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		bcm1480_unmask_irq(bcm1480_irq_owner[irq], irq);
-	}
-}
-
-
 void __init init_bcm1480_irqs(void)
 {
 	int i;
arch/mips/sibyte/sb1250/irq.c +0 -12
Index: linux-2.6-tip/arch/mips/sibyte/sb1250/irq.c
===================================================================
@@ -43,8 +43,6 @@
  * for interrupt lines
  */
 
-
-static void end_sb1250_irq(unsigned int irq);
 static void enable_sb1250_irq(unsigned int irq);
 static void disable_sb1250_irq(unsigned int irq);
 static void ack_sb1250_irq(unsigned int irq);
@@ -62,7 +60,6 @@ static struct irq_chip sb1250_irq_type =
 	.mask = disable_sb1250_irq,
 	.mask_ack = ack_sb1250_irq,
 	.unmask = enable_sb1250_irq,
-	.end = end_sb1250_irq,
 #ifdef CONFIG_SMP
 	.set_affinity = sb1250_set_affinity
 #endif
@@ -199,15 +196,6 @@ static void ack_sb1250_irq(unsigned int 
 	sb1250_mask_irq(sb1250_irq_owner[irq], irq);
 }
 
-
-static void end_sb1250_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		sb1250_unmask_irq(sb1250_irq_owner[irq], irq);
-	}
-}
-
-
 void __init init_sb1250_irqs(void)
 {
 	int i;
arch/mips/sni/a20r.c +0 -9
Index: linux-2.6-tip/arch/mips/sni/a20r.c
===================================================================
@@ -180,21 +180,12 @@ static inline void mask_a20r_irq(unsigne
 	irq_disable_hazard();
 }
 
-static void end_a20r_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
-		a20r_ack_hwint();
-		unmask_a20r_irq(irq);
-	}
-}
-
 static struct irq_chip a20r_irq_type = {
 	.name		= "A20R",
 	.ack		= mask_a20r_irq,
 	.mask		= mask_a20r_irq,
 	.mask_ack	= mask_a20r_irq,
 	.unmask		= unmask_a20r_irq,
-	.end		= end_a20r_irq,
 };
 
 /*
arch/mips/sni/pcimt.c +0 -7
Index: linux-2.6-tip/arch/mips/sni/pcimt.c
===================================================================
@@ -208,19 +208,12 @@ void disable_pcimt_irq(unsigned int irq)
 	*(volatile u8 *) PCIMT_IRQSEL &= mask;
 }
 
-static void end_pcimt_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_pcimt_irq(irq);
-}
-
 static struct irq_chip pcimt_irq_type = {
 	.name = "PCIMT",
 	.ack = disable_pcimt_irq,
 	.mask = disable_pcimt_irq,
 	.mask_ack = disable_pcimt_irq,
 	.unmask = enable_pcimt_irq,
-	.end = end_pcimt_irq,
 };
 
 /*
arch/mips/sni/pcit.c +0 -7
Index: linux-2.6-tip/arch/mips/sni/pcit.c
===================================================================
@@ -170,19 +170,12 @@ void disable_pcit_irq(unsigned int irq)
 	*(volatile u32 *)SNI_PCIT_INT_REG &= ~mask;
 }
 
-void end_pcit_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_pcit_irq(irq);
-}
-
 static struct irq_chip pcit_irq_type = {
 	.name = "PCIT",
 	.ack = disable_pcit_irq,
 	.mask = disable_pcit_irq,
 	.mask_ack = disable_pcit_irq,
 	.unmask = enable_pcit_irq,
-	.end = end_pcit_irq,
 };
 
 static void pcit_hwint1(void)
arch/mips/sni/rm200.c +0 -7
Index: linux-2.6-tip/arch/mips/sni/rm200.c
===================================================================
@@ -443,19 +443,12 @@ void disable_rm200_irq(unsigned int irq)
 	*(volatile u8 *)SNI_RM200_INT_ENA_REG |= mask;
 }
 
-void end_rm200_irq(unsigned int irq)
-{
-	if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-		enable_rm200_irq(irq);
-}
-
 static struct irq_chip rm200_irq_type = {
 	.name = "RM200",
 	.ack = disable_rm200_irq,
 	.mask = disable_rm200_irq,
 	.mask_ack = disable_rm200_irq,
 	.unmask = enable_rm200_irq,
-	.end = end_rm200_irq,
 };
 
 static void sni_rm200_hwint(void)
#6 lore raw

PATCH 5/8 mn10300: Remove stale irq_chip.end

In reply to Thomas Gleixner

irq_chip.end got obsolete with the remnoval of __do_IRQ().

---
 arch/mn10300/kernel/mn10300-serial.c |    5 -----
 1 file changed, 5 deletions(-)
arch/mn10300/kernel/mn10300-serial.c +0 -5
Index: linux-2.6-tip/arch/mn10300/kernel/mn10300-serial.c
===================================================================
@@ -384,17 +384,12 @@ static void mn10300_serial_mask_ack(unsi
 	arch_local_irq_restore(flags);
 }
 
-static void mn10300_serial_nop(unsigned int irq)
-{
-}
-
 static struct irq_chip mn10300_serial_pic = {
 	.name		= "mnserial",
 	.ack		= mn10300_serial_mask_ack,
 	.mask		= mn10300_serial_mask_ack,
 	.mask_ack	= mn10300_serial_mask_ack,
 	.unmask		= mn10300_serial_nop,
-	.end		= mn10300_serial_nop,
 };
 
 
#7 lore raw

Re: [patch 5/8] mn10300: Remove stale irq_chip.end

arch/mn10300/kernel/mn10300-serial.c static void mn10300_serial_mask_ack(unsi · line 393

Quoted 12 lines · Thomas Gleixner
arch/mn10300/kernel/mn10300-serial.c +0 -5
-static void mn10300_serial_nop(unsigned int irq)
-{
-}
-
 static struct irq_chip mn10300_serial_pic = {
 	.name		= "mnserial",
 	.ack		= mn10300_serial_mask_ack,
 	.mask		= mn10300_serial_mask_ack,
 	.mask_ack	= mn10300_serial_mask_ack,
 	.unmask		= mn10300_serial_nop,
-	.end		= mn10300_serial_nop,
 };

This doesn't compile. .unmask still refers to that function.

David

#8 lore raw

PATCH 6/8 powerpc: Remove stale irq_chip.end

In reply to Thomas Gleixner

irq_chip.end got obsolete with the removal of __do_IRQ()

Cc Benjamin Herrenschmidt <[email protected]>
---
 arch/powerpc/platforms/82xx/pq2ads-pci-pic.c |    1 -
 arch/powerpc/sysdev/tsi108_pci.c             |   13 -------------
 2 files changed, 14 deletions(-)
arch/powerpc/platforms/82xx/pq2ads-pci-pic.c +0 -1
Index: linux-2.6-tip/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
===================================================================
@@ -71,7 +71,6 @@ static void pq2ads_pci_unmask_irq(unsign
 
 static struct irq_chip pq2ads_pci_ic = {
 	.name = "PQ2 ADS PCI",
-	.end = pq2ads_pci_unmask_irq,
 	.mask = pq2ads_pci_mask_irq,
 	.mask_ack = pq2ads_pci_mask_irq,
 	.ack = pq2ads_pci_mask_irq,
arch/powerpc/sysdev/tsi108_pci.c +0 -13
Index: linux-2.6-tip/arch/powerpc/sysdev/tsi108_pci.c
===================================================================
@@ -358,18 +358,6 @@ static void tsi108_pci_irq_ack(u_int irq
 	tsi108_pci_int_mask(irq);
 }
 
-static void tsi108_pci_irq_end(u_int irq)
-{
-	tsi108_pci_int_unmask(irq);
-
-	/* Enable interrupts from PCI block */
-	tsi108_write_reg(TSI108_PCI_OFFSET + TSI108_PCI_IRP_ENABLE,
-			 tsi108_read_reg(TSI108_PCI_OFFSET +
-					 TSI108_PCI_IRP_ENABLE) |
-			 TSI108_PCI_IRP_ENABLE_P_INT);
-	mb();
-}
-
 /*
  * Interrupt controller descriptor for cascaded PCI interrupt controller.
  */
@@ -378,7 +366,6 @@ static struct irq_chip tsi108_pci_irq = 
 	.name = "tsi108_PCI_int",
 	.mask = tsi108_pci_irq_disable,
 	.ack = tsi108_pci_irq_ack,
-	.end = tsi108_pci_irq_end,
 	.unmask = tsi108_pci_irq_enable,
 };
 
#9 lore raw

PATCH 7/8 um: Remove stale irq_chip.end

In reply to Thomas Gleixner

irq_chip.end got obsolete with the remnoval of __do_IRQ().

---
 arch/um/kernel/irq.c |    2 --
 1 file changed, 2 deletions(-)
arch/um/kernel/irq.c +0 -2
Index: linux-2.6-tip/arch/um/kernel/irq.c
===================================================================
@@ -374,7 +374,6 @@ static struct irq_chip normal_irq_type =
 	.disable = dummy,
 	.enable = dummy,
 	.ack = dummy,
-	.end = dummy
 };
 
 static struct irq_chip SIGVTALRM_irq_type = {
@@ -384,7 +383,6 @@ static struct irq_chip SIGVTALRM_irq_typ
 	.disable = dummy,
 	.enable = dummy,
 	.ack = dummy,
-	.end = dummy
 };
 
 void __init init_IRQ(void)
#10 lore raw

PATCH 8/8 genirq-remove-stale-irq-end.patch

In reply to Thomas Gleixner
---
 include/linux/irq.h    |    2 --
 kernel/irq/chip.c      |    3 ---
 kernel/irq/dummychip.c |    9 ---------
 kernel/irq/internals.h |   10 ----------
 kernel/irq/spurious.c  |    6 ------
 5 files changed, 30 deletions(-)
include/linux/irq.h +0 -2
Index: linux-2.6-tip/include/linux/irq.h
===================================================================
@@ -126,7 +126,6 @@ struct irq_data {
  * @mask_ack:		deprecated, replaced by irq_mask_ack
  * @unmask:		deprecated, replaced by irq_unmask
  * @eoi:		deprecated, replaced by irq_eoi
- * @end:		deprecated, will go away with __do_IRQ()
  * @set_affinity:	deprecated, replaced by irq_set_affinity
  * @retrigger:		deprecated, replaced by irq_retrigger
  * @set_type:		deprecated, replaced by irq_set_type
@@ -166,7 +165,6 @@ struct irq_chip {
 	void		(*unmask)(unsigned int irq);
 	void		(*eoi)(unsigned int irq);
 
-	void		(*end)(unsigned int irq);
 	int		(*set_affinity)(unsigned int irq,
 					const struct cpumask *dest);
 	int		(*retrigger)(unsigned int irq);
kernel/irq/chip.c +0 -3
Index: linux-2.6-tip/kernel/irq/chip.c
===================================================================
@@ -348,9 +348,6 @@ void irq_chip_set_defaults(struct irq_ch
 			chip->irq_disable : default_shutdown;
 
 #ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
-	if (!chip->end)
-		chip->end = dummy_irq_chip.end;
-
 	/*
 	 * Now fix up the remaining compat handlers
 	 */
kernel/irq/dummychip.c +0 -9
Index: linux-2.6-tip/kernel/irq/dummychip.c
===================================================================
@@ -31,13 +31,6 @@ static unsigned int noop_ret(struct irq_
 	return 0;
 }
 
-#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
-static void compat_noop(unsigned int irq) { }
-#define END_INIT .end = compat_noop
-#else
-#define END_INIT
-#endif
-
 /*
  * Generic no controller implementation
  */
@@ -48,7 +41,6 @@ struct irq_chip no_irq_chip = {
 	.irq_enable	= noop,
 	.irq_disable	= noop,
 	.irq_ack	= ack_bad,
-	END_INIT
 };
 
 /*
@@ -64,5 +56,4 @@ struct irq_chip dummy_irq_chip = {
 	.irq_ack	= noop,
 	.irq_mask	= noop,
 	.irq_unmask	= noop,
-	END_INIT
 };
kernel/irq/internals.h +0 -10
Index: linux-2.6-tip/kernel/irq/internals.h
===================================================================
@@ -41,16 +41,6 @@ extern int irq_select_affinity_usr(unsig
 
 extern void irq_set_thread_affinity(struct irq_desc *desc);
 
-#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
-static inline void irq_end(unsigned int irq, struct irq_desc *desc)
-{
-	if (desc->irq_data.chip && desc->irq_data.chip->end)
-		desc->irq_data.chip->end(irq);
-}
-#else
-static inline void irq_end(unsigned int irq, struct irq_desc *desc) { }
-#endif
-
 /* Inline functions for support of irq chips on slow busses */
 static inline void chip_bus_lock(struct irq_desc *desc)
 {
kernel/irq/spurious.c +0 -6
Index: linux-2.6-tip/kernel/irq/spurious.c
===================================================================
@@ -76,12 +76,6 @@ static int try_one_irq(int irq, struct i
 		desc->status &= ~IRQ_PENDING;
 	}
 	desc->status &= ~IRQ_INPROGRESS;
-	/*
-	 * If we did actual work for the real IRQ line we must let the
-	 * IRQ controller clean up too
-	 */
-	if (work)
-		irq_end(irq, desc);
 	raw_spin_unlock(&desc->lock);
 
 	return ok;