forked from mirrors/linux
		
	genirq: Remove IRQF_DISABLED from core code
Remove all code which is related to IRQF_DISABLED from the core kernel code. IRQF_DISABLED still exists as a flag, but becomes a NOOP and will be removed after a grace period. That way we can easily revert to the previous behaviour by just restoring the core code. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Miller <davem@davemloft.net> Cc: Greg Kroah-Hartman <gregkh@suse.de> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Linus Torvalds <torvalds@osdl.org> LKML-Reference: <20100326000405.991244690@linutronix.de>
This commit is contained in:
		
							parent
							
								
									e58aa3d2d0
								
							
						
					
					
						commit
						6932bf37be
					
				
					 3 changed files with 9 additions and 31 deletions
				
			
		|  | @ -589,3 +589,10 @@ Why:	Useful in 2003, implementation is a hack. | |||
| 	Generally invoked by accident today. | ||||
| 	Seen as doing more harm than good. | ||||
| Who:	Len Brown <len.brown@intel.com> | ||||
| 
 | ||||
| ---------------------------- | ||||
| 
 | ||||
| What:	IRQF_DISABLED | ||||
| When:	2.6.36 | ||||
| Why:	The flag is a NOOP as we run interrupt handlers with interrupts disabled | ||||
| Who:	Thomas Gleixner <tglx@linutronix.de> | ||||
|  |  | |||
|  | @ -39,7 +39,8 @@ | |||
|  * These flags used only by the kernel as part of the | ||||
|  * irq handling routines. | ||||
|  * | ||||
|  * IRQF_DISABLED - keep irqs disabled when calling the action handler | ||||
|  * IRQF_DISABLED - keep irqs disabled when calling the action handler. | ||||
|  *                 DEPRECATED. This flag is a NOOP and scheduled to be removed | ||||
|  * IRQF_SAMPLE_RANDOM - irq is used to feed the random generator | ||||
|  * IRQF_SHARED - allow sharing the irq among several devices | ||||
|  * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur | ||||
|  |  | |||
|  | @ -757,16 +757,6 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) | |||
| 		if (new->flags & IRQF_ONESHOT) | ||||
| 			desc->status |= IRQ_ONESHOT; | ||||
| 
 | ||||
| 		/*
 | ||||
| 		 * Force MSI interrupts to run with interrupts | ||||
| 		 * disabled. The multi vector cards can cause stack | ||||
| 		 * overflows due to nested interrupts when enough of | ||||
| 		 * them are directed to a core and fire at the same | ||||
| 		 * time. | ||||
| 		 */ | ||||
| 		if (desc->msi_desc) | ||||
| 			new->flags |= IRQF_DISABLED; | ||||
| 
 | ||||
| 		if (!(desc->status & IRQ_NOAUTOEN)) { | ||||
| 			desc->depth = 0; | ||||
| 			desc->status &= ~IRQ_DISABLED; | ||||
|  | @ -1027,7 +1017,6 @@ EXPORT_SYMBOL(free_irq); | |||
|  *	Flags: | ||||
|  * | ||||
|  *	IRQF_SHARED		Interrupt is shared | ||||
|  *	IRQF_DISABLED	Disable local interrupts while processing | ||||
|  *	IRQF_SAMPLE_RANDOM	The interrupt can be used for entropy | ||||
|  *	IRQF_TRIGGER_*		Specify active edge(s) or level | ||||
|  * | ||||
|  | @ -1040,25 +1029,6 @@ int request_threaded_irq(unsigned int irq, irq_handler_t handler, | |||
| 	struct irq_desc *desc; | ||||
| 	int retval; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * handle_IRQ_event() always ignores IRQF_DISABLED except for | ||||
| 	 * the _first_ irqaction (sigh).  That can cause oopsing, but | ||||
| 	 * the behavior is classified as "will not fix" so we need to | ||||
| 	 * start nudging drivers away from using that idiom. | ||||
| 	 */ | ||||
| 	if ((irqflags & (IRQF_SHARED|IRQF_DISABLED)) == | ||||
| 					(IRQF_SHARED|IRQF_DISABLED)) { | ||||
| 		pr_warning( | ||||
| 		  "IRQ %d/%s: IRQF_DISABLED is not guaranteed on shared IRQs\n", | ||||
| 			irq, devname); | ||||
| 	} | ||||
| 
 | ||||
| #ifdef CONFIG_LOCKDEP | ||||
| 	/*
 | ||||
| 	 * Lockdep wants atomic interrupt handlers: | ||||
| 	 */ | ||||
| 	irqflags |= IRQF_DISABLED; | ||||
| #endif | ||||
| 	/*
 | ||||
| 	 * Sanity-check: shared interrupts must pass in a real dev-ID, | ||||
| 	 * otherwise we'll have trouble later trying to figure out | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Thomas Gleixner
						Thomas Gleixner