From patchwork Fri Sep 17 17:17:30 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Zapolskiy X-Patchwork-Id: 65095 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-bw0-f56.google.com (mail-bw0-f56.google.com [209.85.214.56]) by ozlabs.org (Postfix) with ESMTP id 8336EB70A3 for ; Sat, 18 Sep 2010 03:18:36 +1000 (EST) Received: by bwz5 with SMTP id 5sf988023bwz.11 for ; Fri, 17 Sep 2010 10:18:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=domainkey-signature:received:mime-version:x-beenthere:received :received:received:received:received-spf:received:received:received :sender:from:to:cc:subject:date:message-id:x-mailer :x-original-sender:x-original-authentication-results:reply-to :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe:content-type; bh=IR/n7ef62n+lL+yelFK+4QyyeaT8GIGkpOxMypNHS/U=; b=pHtvQMxs9LSI9b6ZLYLz9t6uJEPUzLp9Us6Mrqb80QdyGRm0kATEJbZnsn9I7QxiXE jCuLbwNhZdx74XKKMIY2vW/Q78Q5Se6Z6JdeDs3wqsS12jswbsn4fRTf9qO0sQlnolqV aP4vP3KgcoNzx3kQ37Bewy7MyVVueaqN93g/Q= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlegroups.com; s=beta; h=mime-version:x-beenthere:received-spf:sender:from:to:cc:subject :date:message-id:x-mailer:x-original-sender :x-original-authentication-results:reply-to:precedence:mailing-list :list-id:list-post:list-help:list-archive:list-subscribe :list-unsubscribe:content-type; b=VISC829kSsSSBphW6J050aONly6feJ52TAUCiTheTZSnDMV4s2J8lHnxD7R9YhqkkS gTVMz6IwewXWwoLJ5kfDPPFCi01Au+UYQHqo92l9KVAqdrNgEWXin3jhUsgQTh/AvPw9 +rxPytDz1FDwd0/PXDy21zPOuUkkGioC2qRPw= Received: by 10.223.54.79 with SMTP id p15mr133340fag.12.1284743913786; Fri, 17 Sep 2010 10:18:33 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: rtc-linux@googlegroups.com Received: by 10.204.48.209 with SMTP id s17ls1745638bkf.2.p; Fri, 17 Sep 2010 10:18:32 -0700 (PDT) Received: by 10.204.127.65 with SMTP id f1mr326352bks.5.1284743912281; Fri, 17 Sep 2010 10:18:32 -0700 (PDT) Received: by 10.204.127.65 with SMTP id f1mr326351bks.5.1284743912256; Fri, 17 Sep 2010 10:18:32 -0700 (PDT) Received: from mail-bw0-f49.google.com (mail-bw0-f49.google.com [209.85.214.49]) by gmr-mx.google.com with ESMTP id n18si2485669bkw.6.2010.09.17.10.18.31; Fri, 17 Sep 2010 10:18:31 -0700 (PDT) Received-SPF: pass (google.com: domain of vzapolskiy@gmail.com designates 209.85.214.49 as permitted sender) client-ip=209.85.214.49; Received: by bwz19 with SMTP id 19so3428380bwz.8 for ; Fri, 17 Sep 2010 10:18:31 -0700 (PDT) Received: by 10.204.102.197 with SMTP id h5mr4237749bko.24.1284743911085; Fri, 17 Sep 2010 10:18:31 -0700 (PDT) Received: from localhost.localdomain (a88-114-217-213.elisa-laajakaista.fi [88.114.217.213]) by mx.google.com with ESMTPS id g12sm3825652bkb.14.2010.09.17.10.18.29 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 17 Sep 2010 10:18:30 -0700 (PDT) Sender: rtc-linux@googlegroups.com From: Vladimir Zapolskiy To: rtc-linux@googlegroups.com Cc: Andrew Morton , Vladimir Zapolskiy , Alessandro Zummo Subject: [rtc-linux] [PATCH] rtc: s3c: balance state changes of wakeup flag Date: Fri, 17 Sep 2010 20:17:30 +0300 Message-Id: <1284743850-10165-1-git-send-email-vzapolskiy@gmail.com> X-Mailer: git-send-email 1.7.1 X-Original-Sender: animist@gmail.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of vzapolskiy@gmail.com designates 209.85.214.49 as permitted sender) smtp.mail=vzapolskiy@gmail.com; dkim=pass (test mode) header.i=@gmail.com Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: List-Post: , List-Help: , List-Archive: List-Subscribe: , List-Unsubscribe: , This change resolves a problem about unbalanced calls of enable_irq_wakeup() and disable_irq_wakeup() for alarm interrupt. Signed-off-by: Vladimir Zapolskiy Cc: Alessandro Zummo --- Bug reproduction: root@eb600:~# echo 0 > /sys/class/rtc/rtc0/wakealarm ------------[ cut here ]------------ WARNING: at kernel/irq/manage.c:361 set_irq_wake+0x7c/0xe4() Unbalanced IRQ 46 wake disable Modules linked in: [] (unwind_backtrace+0x0/0xd8) from [] (warn_slowpath_common+0x44/0x5c) [] (warn_slowpath_common+0x44/0x5c) from [] (warn_slowpath_fmt+0x24/0x30) [] (warn_slowpath_fmt+0x24/0x30) from [] (set_irq_wake+0x7c/0xe4) [] (set_irq_wake+0x7c/0xe4) from [] (s3c_rtc_setalarm+0xa8/0xb8) [] (s3c_rtc_setalarm+0xa8/0xb8) from [] (rtc_set_alarm+0x60/0x74) [] (rtc_set_alarm+0x60/0x74) from [] (rtc_sysfs_set_wakealarm+0xc8/0xd8) [] (rtc_sysfs_set_wakealarm+0xc8/0xd8) from [] (dev_attr_store+0x20/0x24) [] (dev_attr_store+0x20/0x24) from [] (sysfs_write_file+0x104/0x13c) [] (sysfs_write_file+0x104/0x13c) from [] (vfs_write+0xb0/0x158) [] (vfs_write+0xb0/0x158) from [] (sys_write+0x3c/0x68) [] (sys_write+0x3c/0x68) from [] (ret_fast_syscall+0x0/0x28) ---[ end trace 22e3278a6288adfa ]--- drivers/rtc/rtc-s3c.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c index a0d3ec8..f57a87f 100644 --- a/drivers/rtc/rtc-s3c.c +++ b/drivers/rtc/rtc-s3c.c @@ -310,11 +310,6 @@ static int s3c_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm) s3c_rtc_setaie(alrm->enabled); - if (alrm->enabled) - enable_irq_wake(s3c_rtc_alarmno); - else - disable_irq_wake(s3c_rtc_alarmno); - return 0; } @@ -587,6 +582,10 @@ static int s3c_rtc_suspend(struct platform_device *pdev, pm_message_t state) ticnt_en_save &= S3C64XX_RTCCON_TICEN; } s3c_rtc_enable(pdev, 0); + + if (device_may_wakeup(&pdev->dev)) + enable_irq_wake(s3c_rtc_alarmno); + return 0; } @@ -600,6 +599,10 @@ static int s3c_rtc_resume(struct platform_device *pdev) tmp = readb(s3c_rtc_base + S3C2410_RTCCON); writeb(tmp | ticnt_en_save, s3c_rtc_base + S3C2410_RTCCON); } + + if (device_may_wakeup(&pdev->dev)) + disable_irq_wake(s3c_rtc_alarmno); + return 0; } #else