--- /dev/null
+Index: linux-2.6.21/drivers/char/apm-emulation.c
+===================================================================
+--- linux-2.6.21.orig/drivers/char/apm-emulation.c     2008-02-21 00:32:41.000000000 +0000
++++ linux-2.6.21/drivers/char/apm-emulation.c  2008-02-21 00:33:43.000000000 +0000
+@@ -206,10 +206,18 @@
+       return ret;
+ }
+ 
++static in_suspend;
++
+ static void apm_suspend(void)
+ {
+       struct apm_user *as;
+-      int err = pm_suspend(PM_SUSPEND_MEM);
++      int err;
++
++      in_suspend = 1;
++
++      err = pm_suspend(PM_SUSPEND_MEM);
++
++      in_suspend = 0;
+ 
+       /*
+        * Anyone on the APM queues will think we're still suspended.
+@@ -663,6 +671,9 @@
+ {
+       unsigned long flags;
+ 
++      if (in_suspend)
++              return;
++
+       spin_lock_irqsave(&kapmd_queue_lock, flags);
+       queue_add_event(&kapmd_queue, event);
+       spin_unlock_irqrestore(&kapmd_queue_lock, flags);
 
 #PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}-moko11+svnr${SRCREV}"
 
 PV = "${KERNEL_RELEASE}-moko11+svnr${SRCREV}"
-PR = "r14"
+PR = "r15"
 
 KERNEL_IMAGETYPE = "uImage"
 UBOOT_ENTRYPOINT = "30008000"
            file://fix-gta01-flowcontrol2-2.6.22.5.patch;patch=1 \
            file://gta-vibro-pwm-suspend.patch;patch=1 \
            file://tweak_power_button.patch;patch=1 \
+          file://break_suspend_cycle.patch;patch=1 \
            http://www.rpsys.net/openzaurus/patches/archive/input_power-r9.patch;patch=1 \
            file://defconfig-${KERNEL_RELEASE}"