mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	powerpc/mpc62xx_pic: Fix get_irq handling of NO_IRQ
If none of irq category bits were set mpc52xx_get_irq() would pass NO_IRQ_IGNORE (-1) to irq_linear_revmap, which does an unsigned compare and declares the interrupt above the linear map range. It then punts to irq_find_mapping, which performs a linear search of all irqs, which will likely miss and only then return NO_IRQ. If no status bit is set, then we should return NO_IRQ directly. The interrupt should not be suppressed from spurious counting, in fact that is the definition of supurious. Signed-off-by: Milton Miller <miltonm@bga.com> Acked-by: Grant Likely <grant.likely@secretlab.ca> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
		
							parent
							
								
									c42385cd45
								
							
						
					
					
						commit
						67347eba15
					
				
					 1 changed files with 3 additions and 1 deletions
				
			
		|  | @ -486,7 +486,7 @@ void __init mpc52xx_init_irq(void) | ||||||
| unsigned int mpc52xx_get_irq(void) | unsigned int mpc52xx_get_irq(void) | ||||||
| { | { | ||||||
| 	u32 status; | 	u32 status; | ||||||
| 	int irq = NO_IRQ_IGNORE; | 	int irq; | ||||||
| 
 | 
 | ||||||
| 	status = in_be32(&intr->enc_status); | 	status = in_be32(&intr->enc_status); | ||||||
| 	if (status & 0x00000400) {	/* critical */ | 	if (status & 0x00000400) {	/* critical */ | ||||||
|  | @ -509,6 +509,8 @@ unsigned int mpc52xx_get_irq(void) | ||||||
| 		} else { | 		} else { | ||||||
| 			irq |= (MPC52xx_IRQ_L1_PERP << MPC52xx_IRQ_L1_OFFSET); | 			irq |= (MPC52xx_IRQ_L1_PERP << MPC52xx_IRQ_L1_OFFSET); | ||||||
| 		} | 		} | ||||||
|  | 	} else { | ||||||
|  | 		return NO_IRQ; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return irq_linear_revmap(mpc52xx_irqhost, irq); | 	return irq_linear_revmap(mpc52xx_irqhost, irq); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Milton Miller
						Milton Miller