[withdrawn] genirq-do-not-disable-irq_wakeup-marked-irqs-on-suspend.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     genirq: do not disable IRQ_WAKEUP marked irqs on suspend
has been removed from the -mm tree.  Its filename was
     genirq-do-not-disable-irq_wakeup-marked-irqs-on-suspend.patch

This patch was dropped because it was withdrawn

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: genirq: do not disable IRQ_WAKEUP marked irqs on suspend
From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

commit 0a0c5168df (PM: Introduce functions for suspending and resuming
device interrupts) iterates through all interrupts and disables them on
the hardware level.  Some architectures have functionality implemented to
mark an interrupt source as wakeup source for suspend, but the new power
management code disables them unconditionally which breaks the resume on
interrupt functionality.

The wakeup interrupts are marked in the status with the IRQ_WAKEUP bit. 
Skip the disablement for those interrupts which have the IRQ_WAKEUP bit
set.

rmk didst say:

  This sounds like a regression fix to me - if IRQs are disabled on the
  controllers, it means we have systems which can only ever be suspended. 
  The only way to wake them back up would be to hard-reset them.

  IOW, the regression turns suspend into a hang.

rmk didst further say:

  ARM systems can only be woken up by unmasked interrupts.  If the
  current kernel masks all interrupts, suspending ARM systems is a _one_
  way ticket to a full reboot.

With all interrupts masked, there is NO WAY to wake up ARM interrupts.

  So I'm afraid my comment here without any further suggestion that the
  problem has been fixed in some other way is that this patch _is_
  required _if_ the kernel is still masking all interrupts on suspend.

  Now, given that ARM systems were able to be resumed up until the
  offending commit was added to the kernel, it _is_ a regression, and I
  think under Linus' rules, a fix is not a fix if it causes regressions
  for some people.  So IMHO it needs to be backed out and another approach
  taken, _if_ the problem is still present.

  Unfortunately, I've no time to verify if the problem is present at the
  moment.  I'm sure someone else in the ARM community can do the necessary
  testing though.  Eg, anyone with a PXA platform will do.

Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: "Rafael J. Wysocki" <rjw@xxxxxxx>
Acked-by: Russell King <rmk@xxxxxxxxxxxxxxxx>
Cc: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx>
Cc: <stable@xxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 kernel/irq/pm.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff -puN kernel/irq/pm.c~genirq-do-not-disable-irq_wakeup-marked-irqs-on-suspend kernel/irq/pm.c
--- a/kernel/irq/pm.c~genirq-do-not-disable-irq_wakeup-marked-irqs-on-suspend
+++ a/kernel/irq/pm.c
@@ -29,7 +29,8 @@ void suspend_device_irqs(void)
 		unsigned long flags;
 
 		spin_lock_irqsave(&desc->lock, flags);
-		__disable_irq(desc, irq, true);
+		if (!(desc->status & IRQ_WAKEUP))
+			__disable_irq(desc, irq, true);
 		spin_unlock_irqrestore(&desc->lock, flags);
 	}
 
_

Patches currently in -mm which might be from tglx@xxxxxxxxxxxxx are

origin.patch
linux-next.patch
arch-x86-kernel-cpu-amdc-fix-x86_64-allnoconfig-build.patch
kernel-core-add-smp_call_function_any.patch
arch-x86-kernel-cpu-cpufreq-acpi-cpufreqc-avoid-cross-cpu-interrupts-by-using-smp_call_function_any.patch
timer-stats-fix-del_timer_sync-and-try_to_del_timer_sync.patch
mtd-nand-add-page-parameter-to-all-read_page-read_page_raw-apis.patch
mtd-nand-add-new-ecc-mode-ecc_hw_oob_first.patch
mtd-nand-davinci-add-4-bit-ecc-support-for-large-page-nand-chips.patch
mtd-nand-davinci-add-4-bit-ecc-support-for-large-page-nand-chips-update.patch
genirq-do-not-disable-irq_wakeup-marked-irqs-on-suspend.patch
time-add-function-to-convert-between-calendar-time-and-broken-down-time-for-universal-use.patch
fatfs-use-common-time_to_tm-in-fat_time_unix2fat.patch
linux-futexh-place-kernel-types-behind-__kernel__.patch
include-linux-unaligned-lbe_byteshifth-fix-usage-for-compressed-kernels.patch
lzo-add-support-for-lzo-compressed-kernels.patch
lzo-arm-add-support-for-lzo-compressed-kernels.patch
lzo-x86-add-support-for-lzo-compressed-kernels.patch
lzo-add-lzo-compression-support-for-initramfs-and-old-style-initrd.patch

--
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux