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))
 | 
				
			||||||
+	if (likely(desc->irq_count < 10))
 | 
					-		return;
 | 
				
			||||||
 		return;
 | 
					+	if (!irq_poll_and_retry)
 | 
				
			||||||
 | 
					+		if (likely(desc->irq_count < 100000))
 | 
				
			||||||
 | 
					+			return;
 | 
				
			||||||
 | 
					+	else
 | 
				
			||||||
 | 
					+		if (likely(desc->irq_count < 10))
 | 
				
			||||||
 | 
					+			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