irq: simplify for_each_irq_desc() usage
Impact: cleanup all for_each_irq_desc() usage point have !desc check. then its check can move into for_each_irq_desc() macro. Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Acked-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
					parent
					
						
							
								26ddd8d5ca
							
						
					
				
			
			
				commit
				
					
						18eefedfe8
					
				
			
		
					 6 changed files with 6 additions and 38 deletions
				
			
		| 
						 | 
					@ -1345,8 +1345,6 @@ void __setup_vector_irq(int cpu)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Mark the inuse vectors */
 | 
						/* Mark the inuse vectors */
 | 
				
			||||||
	for_each_irq_desc(irq, desc) {
 | 
						for_each_irq_desc(irq, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		cfg = desc->chip_data;
 | 
							cfg = desc->chip_data;
 | 
				
			||||||
		if (!cpu_isset(cpu, cfg->domain))
 | 
							if (!cpu_isset(cpu, cfg->domain))
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
| 
						 | 
					@ -1730,8 +1728,6 @@ __apicdebuginit(void) print_IO_APIC(void)
 | 
				
			||||||
	for_each_irq_desc(irq, desc) {
 | 
						for_each_irq_desc(irq, desc) {
 | 
				
			||||||
		struct irq_pin_list *entry;
 | 
							struct irq_pin_list *entry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		cfg = desc->chip_data;
 | 
							cfg = desc->chip_data;
 | 
				
			||||||
		entry = cfg->irq_2_pin;
 | 
							entry = cfg->irq_2_pin;
 | 
				
			||||||
		if (!entry)
 | 
							if (!entry)
 | 
				
			||||||
| 
						 | 
					@ -2378,9 +2374,6 @@ static void ir_irq_migration(struct work_struct *work)
 | 
				
			||||||
	struct irq_desc *desc;
 | 
						struct irq_desc *desc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for_each_irq_desc(irq, desc) {
 | 
						for_each_irq_desc(irq, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (desc->status & IRQ_MOVE_PENDING) {
 | 
							if (desc->status & IRQ_MOVE_PENDING) {
 | 
				
			||||||
			unsigned long flags;
 | 
								unsigned long flags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2671,9 +2664,6 @@ static inline void init_IO_APIC_traps(void)
 | 
				
			||||||
	 * 0x80, because int 0x80 is hm, kind of importantish. ;)
 | 
						 * 0x80, because int 0x80 is hm, kind of importantish. ;)
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	for_each_irq_desc(irq, desc) {
 | 
						for_each_irq_desc(irq, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		cfg = desc->chip_data;
 | 
							cfg = desc->chip_data;
 | 
				
			||||||
		if (IO_APIC_IRQ(irq) && cfg && !cfg->vector) {
 | 
							if (IO_APIC_IRQ(irq) && cfg && !cfg->vector) {
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -142,9 +142,6 @@ static void init_evtchn_cpu_bindings(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* By default all event channels notify CPU#0. */
 | 
						/* By default all event channels notify CPU#0. */
 | 
				
			||||||
	for_each_irq_desc(i, desc) {
 | 
						for_each_irq_desc(i, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		desc->affinity = cpumask_of_cpu(0);
 | 
							desc->affinity = cpumask_of_cpu(0);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,10 +22,14 @@ extern struct irq_desc *irq_to_desc(unsigned int irq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# define for_each_irq_desc(irq, desc)					\
 | 
					# define for_each_irq_desc(irq, desc)					\
 | 
				
			||||||
	for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs;		\
 | 
						for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs;		\
 | 
				
			||||||
	     irq++, desc = irq_to_desc(irq))
 | 
						     irq++, desc = irq_to_desc(irq))				\
 | 
				
			||||||
 | 
							if (desc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# define for_each_irq_desc_reverse(irq, desc)				\
 | 
					# define for_each_irq_desc_reverse(irq, desc)				\
 | 
				
			||||||
	for (irq = nr_irqs - 1, desc = irq_to_desc(irq); irq >= 0;	\
 | 
						for (irq = nr_irqs - 1, desc = irq_to_desc(irq); irq >= 0;	\
 | 
				
			||||||
	     irq--, desc = irq_to_desc(irq))
 | 
						     irq--, desc = irq_to_desc(irq))				\
 | 
				
			||||||
 | 
							if (desc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* CONFIG_GENERIC_HARDIRQS */
 | 
					#endif /* CONFIG_GENERIC_HARDIRQS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,9 +40,6 @@ unsigned long probe_irq_on(void)
 | 
				
			||||||
	 * flush such a longstanding irq before considering it as spurious.
 | 
						 * flush such a longstanding irq before considering it as spurious.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	for_each_irq_desc_reverse(i, desc) {
 | 
						for_each_irq_desc_reverse(i, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		spin_lock_irq(&desc->lock);
 | 
							spin_lock_irq(&desc->lock);
 | 
				
			||||||
		if (!desc->action && !(desc->status & IRQ_NOPROBE)) {
 | 
							if (!desc->action && !(desc->status & IRQ_NOPROBE)) {
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
| 
						 | 
					@ -71,9 +68,6 @@ unsigned long probe_irq_on(void)
 | 
				
			||||||
	 * happened in the previous stage, it may have masked itself)
 | 
						 * happened in the previous stage, it may have masked itself)
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	for_each_irq_desc_reverse(i, desc) {
 | 
						for_each_irq_desc_reverse(i, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		spin_lock_irq(&desc->lock);
 | 
							spin_lock_irq(&desc->lock);
 | 
				
			||||||
		if (!desc->action && !(desc->status & IRQ_NOPROBE)) {
 | 
							if (!desc->action && !(desc->status & IRQ_NOPROBE)) {
 | 
				
			||||||
			desc->status |= IRQ_AUTODETECT | IRQ_WAITING;
 | 
								desc->status |= IRQ_AUTODETECT | IRQ_WAITING;
 | 
				
			||||||
| 
						 | 
					@ -92,9 +86,6 @@ unsigned long probe_irq_on(void)
 | 
				
			||||||
	 * Now filter out any obviously spurious interrupts
 | 
						 * Now filter out any obviously spurious interrupts
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	for_each_irq_desc(i, desc) {
 | 
						for_each_irq_desc(i, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		spin_lock_irq(&desc->lock);
 | 
							spin_lock_irq(&desc->lock);
 | 
				
			||||||
		status = desc->status;
 | 
							status = desc->status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -133,9 +124,6 @@ unsigned int probe_irq_mask(unsigned long val)
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for_each_irq_desc(i, desc) {
 | 
						for_each_irq_desc(i, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		spin_lock_irq(&desc->lock);
 | 
							spin_lock_irq(&desc->lock);
 | 
				
			||||||
		status = desc->status;
 | 
							status = desc->status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -178,9 +166,6 @@ int probe_irq_off(unsigned long val)
 | 
				
			||||||
	unsigned int status;
 | 
						unsigned int status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for_each_irq_desc(i, desc) {
 | 
						for_each_irq_desc(i, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		spin_lock_irq(&desc->lock);
 | 
							spin_lock_irq(&desc->lock);
 | 
				
			||||||
		status = desc->status;
 | 
							status = desc->status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -437,9 +437,6 @@ void early_init_irq_lock_class(void)
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for_each_irq_desc(i, desc) {
 | 
						for_each_irq_desc(i, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		lockdep_set_class(&desc->lock, &irq_desc_lock_class);
 | 
							lockdep_set_class(&desc->lock, &irq_desc_lock_class);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,9 +91,6 @@ static int misrouted_irq(int irq)
 | 
				
			||||||
	int i, ok = 0;
 | 
						int i, ok = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for_each_irq_desc(i, desc) {
 | 
						for_each_irq_desc(i, desc) {
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (!i)
 | 
							if (!i)
 | 
				
			||||||
			 continue;
 | 
								 continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,8 +112,6 @@ static void poll_spurious_irqs(unsigned long dummy)
 | 
				
			||||||
	for_each_irq_desc(i, desc) {
 | 
						for_each_irq_desc(i, desc) {
 | 
				
			||||||
		unsigned int status;
 | 
							unsigned int status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!desc)
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		if (!i)
 | 
							if (!i)
 | 
				
			||||||
			 continue;
 | 
								 continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue