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