Fixup irqpoll patch to really not impact machines without ASM108x bridges (rhbz 800520)
WITH FEELING THIS TIME
This commit is contained in:
parent
2a92931ecc
commit
e8229fb9d2
|
@ -42,7 +42,7 @@ Summary: The Linux kernel
|
|||
# When changing real_sublevel below, reset this by hand to 1
|
||||
# (or to 0 and then use rpmdev-bumpspec).
|
||||
#
|
||||
%global baserelease 3
|
||||
%global baserelease 4
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# real_sublevel is the 3.x kernel version we're starting with
|
||||
|
@ -1340,7 +1340,7 @@ ApplyPatch sony-laptop-Enable-keyboard-backlight-by-default.patch
|
|||
#Disable threading in hibernate compression
|
||||
ApplyPatch disable-threading-in-compression-for-hibernate.patch
|
||||
|
||||
# ApplyPatch unhandled-irqs-switch-to-polling.patch
|
||||
ApplyPatch unhandled-irqs-switch-to-polling.patch
|
||||
|
||||
ApplyPatch weird-root-dentry-name-debug.patch
|
||||
|
||||
|
@ -1996,6 +1996,9 @@ fi
|
|||
# and build.
|
||||
|
||||
%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> - 2.6.42.10-3
|
||||
- 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)
|
||||
*/
|
||||
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++;
|
||||
- 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;
|
||||
- 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 might be stuck
|
||||
|
|
Loading…
Reference in New Issue