From patchwork Wed Feb 17 21:49:16 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Levitsky X-Patchwork-Id: 45680 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 5DCDAB7CFA for ; Thu, 18 Feb 2010 08:52:09 +1100 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NhrmR-0005Y2-Ix; Wed, 17 Feb 2010 21:49:59 +0000 Received: from mail-fx0-f209.google.com ([209.85.220.209]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NhrmF-0005RK-KE for linux-mtd@lists.infradead.org; Wed, 17 Feb 2010 21:49:56 +0000 Received: by fxm1 with SMTP id 1so8377503fxm.4 for ; Wed, 17 Feb 2010 13:49:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references; bh=Nv39NR+JcPjUXNcipvC57TI73Wm+6QhDN52PPzAy5jQ=; b=Kf/Tx6Ot3n0Z/QtTcxuuwwL/cGnvAW+dhw75kwaQ28GcFy6kgi/zZi1j923qkFCVhH UICE9mAVciqA7qTcxLeSnsVJJuECfIzsQIUgeNTcLaSwHvRiD4eC3qyuw3rG5p7ci/ku 14SoMsK3PRtoZJjdpsq49iFjvGzkJ5c7OI0m4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=D8Ha7FBk+4zt36gpXzOnH6SFU9dttytNJYWJnofOQ3tk02GxE8FYig5i7ipEe5cAHt HqHSp+27Kav4aXvpapn/TOCcB7q593dGXBA3XXyAGOvAXVlVlX5EE0LGEuU2DV7jj4ws vi/HRD9a4FcoN8fdei5FjQDbxZjqrr+zXOZq0= Received: by 10.86.6.31 with SMTP id 31mr15464191fgf.5.1266443386584; Wed, 17 Feb 2010 13:49:46 -0800 (PST) Received: from localhost.localdomain ([77.126.218.27]) by mx.google.com with ESMTPS id d4sm3096749fga.8.2010.02.17.13.49.44 (version=SSLv3 cipher=RC4-MD5); Wed, 17 Feb 2010 13:49:45 -0800 (PST) From: Maxim Levitsky To: David Woodhouse Subject: [PATCH 06/14] MTD: nand: make suspend work if device is accessed by kernel threads. Date: Wed, 17 Feb 2010 23:49:16 +0200 Message-Id: <1266443364-4538-7-git-send-email-maximlevitsky@gmail.com> X-Mailer: git-send-email 1.6.3.3 In-Reply-To: <1266443364-4538-1-git-send-email-maximlevitsky@gmail.com> References: <1266443364-4538-1-git-send-email-maximlevitsky@gmail.com> X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20100217_164947_769238_FAF8A5D6 X-CRM114-Status: GOOD ( 12.49 ) X-Spam-Score: 0.0 (/) X-Spam-Report: SpamAssassin version 3.2.5 on bombadil.infradead.org summary: Content analysis details: (0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- _SUMMARY_ Cc: Maxim Levitsky , Alex Dubov , Artem Bityutskiy , joern , Vitaly Wool , linux-kernel , "stanley.miao" , linux-mtd , Thomas Gleixner X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Since all userspace threads are frozen at the time the nand_suspend is called, they aren't inside any nand function. We don't call try_to_freeze in nand ether. Thus the only user that can be inside the nand functions is an non freezeable kernel thread. Thus we can safely wait for it to finish. Signed-off-by: Maxim Levitsky --- drivers/mtd/nand/nand_base.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 8f2958f..279b960 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -744,9 +744,6 @@ nand_get_device(struct nand_chip *chip, struct mtd_info *mtd, int new_state) chip->state = FL_PM_SUSPENDED; spin_unlock(lock); return 0; - } else { - spin_unlock(lock); - return -EAGAIN; } } set_current_state(TASK_UNINTERRUPTIBLE);