Fixup irqpoll patch to really not impact machines without ASM108x bridges (rhbz 800520)
WITH FEELING THIS TIME
This commit is contained in:
		
							parent
							
								
									6875c9a8ca
								
							
						
					
					
						commit
						6df15dd064
					
				| @ -62,7 +62,7 @@ Summary: The Linux kernel | |||||||
| # For non-released -rc kernels, this will be appended after the rcX and | # For non-released -rc kernels, this will be appended after the rcX and | ||||||
| # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" | # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" | ||||||
| # | # | ||||||
| %global baserelease 5 | %global baserelease 6 | ||||||
| %global fedora_build %{baserelease} | %global fedora_build %{baserelease} | ||||||
| 
 | 
 | ||||||
| # base_sublevel is the kernel version we're starting with and patching | # base_sublevel is the kernel version we're starting with and patching | ||||||
| @ -2350,6 +2350,9 @@ fi | |||||||
| #                 ||----w | | #                 ||----w | | ||||||
| #                 ||     || | #                 ||     || | ||||||
| %changelog | %changelog | ||||||
|  | * Fri Mar 16 2012 Josh Boyer <jwboyer@redhat.com> | ||||||
|  | - Fix irqpoll patch to really only apply for ASM108x machines (rhbz 800520) | ||||||
|  | 
 | ||||||
| * Thu Mar 15 2012 Justin M. Forbes <jforbes@redhat.com> | * Thu Mar 15 2012 Justin M. Forbes <jforbes@redhat.com> | ||||||
| - CVE-2012-1179 fix pmd_bad() triggering in code paths holding mmap_sem read mode (rhbz 803809) | - CVE-2012-1179 fix pmd_bad() triggering in code paths holding mmap_sem read mode (rhbz 803809) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -174,17 +174,34 @@ Josh Boyer <jwboyer@redhat.com> | |||||||
|   *  functioning device sharing an IRQ with the failing one) |   *  functioning device sharing an IRQ with the failing one) | ||||||
|   */ |   */ | ||||||
|  static void |  static void | ||||||
| @@ -302,19 +332,24 @@ void note_interrupt(unsigned int irq, st
 | @@ -269,6 +299,8 @@ try_misrouted_irq(unsigned int irq, stru
 | ||||||
|  |  void note_interrupt(unsigned int irq, struct irq_desc *desc, | ||||||
|  |  		    irqreturn_t action_ret) | ||||||
|  |  { | ||||||
|  | +	int unhandled_thresh = 999000;
 | ||||||
|  | +
 | ||||||
|  |  	if (desc->istate & IRQS_POLL_INPROGRESS) | ||||||
|  |  		return; | ||||||
|  |   | ||||||
|  | @@ -302,19 +334,31 @@ void note_interrupt(unsigned int irq, st
 | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	desc->irq_count++; |  	desc->irq_count++; | ||||||
| -	if (likely(desc->irq_count < 100000))
 | -	if (likely(desc->irq_count < 100000))
 | ||||||
|  | -		return;
 | ||||||
|  | +	if (!irq_poll_and_retry)
 | ||||||
|  | +		if (likely(desc->irq_count < 100000))
 | ||||||
|  | +			return;
 | ||||||
|  | +	else
 | ||||||
| +		if (likely(desc->irq_count < 10))
 | +		if (likely(desc->irq_count < 10))
 | ||||||
|  		return; | +			return;
 | ||||||
|   |   | ||||||
|  	desc->irq_count = 0; |  	desc->irq_count = 0; | ||||||
| -	if (unlikely(desc->irqs_unhandled > 99900)) {
 | -	if (unlikely(desc->irqs_unhandled > 99900)) {
 | ||||||
| +	if (unlikely(desc->irqs_unhandled >= 9)) {
 | +	if (irq_poll_and_retry)
 | ||||||
|  | +		unhandled_thresh = 9;
 | ||||||
|  | +
 | ||||||
|  | +	if (unlikely(desc->irqs_unhandled >= unhandled_thresh)) {
 | ||||||
|  		/* |  		/* | ||||||
| -		 * The interrupt is stuck
 | -		 * The interrupt is stuck
 | ||||||
| +		 * The interrupt might be stuck
 | +		 * The interrupt might be stuck
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user