Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp2005920imm; Tue, 10 Jul 2018 11:27:46 -0700 (PDT) X-Google-Smtp-Source: AAOMgpf2VYTnQWkn2oOULcnjRDUCyPe4Znwexv/kLuoDynQ4sDpXH86p/U0dq8w3eS0Uhxb3HGPT X-Received: by 2002:a62:c218:: with SMTP id l24-v6mr26976256pfg.185.1531247266124; Tue, 10 Jul 2018 11:27:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531247266; cv=none; d=google.com; s=arc-20160816; b=TRlLCCoGTb3DmGYDzyLhEU/5bHcxLziLMFAu1a7hPmrexIegIZ3Rtj0TWbb5jPzg2F bkVSGi2fM97r/yQ0HHN38kK2onXAqf+wv8/4COjh5nKb2Cxms/HOBEz+1V9tkBcPB2wG 5iEaPA2QXHDQ/haXFDGRNQ3M1gkhkFsFbMHm8U1erO9AIWAyW7D5NsEUe73dL807NRbN X+wYeuLI3rHjncoVcglLtgbO5ve05vBGZEsl1kPzn7bG8qWPtjLsWDPru5DLWWmuqmNu FpbEndjgO4vv9XNu7uXYyBniHOiN1vePmGr6zlDxr25ISjkIm8xT9imNxIFCqST4EZnC lw1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=niy400zl6MK1fgQJXtvCQko+jT8IXLDGGdrZDaw2C3g=; b=E8/+7pzfzoLmtKUUodBnmjXnFutxs6lULlOp6wMjAi5daRXYcv1FLYyQydtN38TkjW e0L4qAqb1ILUJgxeE5h9Jotk/jhKS5IFCK4ZerSjWqqjJLWMOs/jT9Hx38GMq2f3Htmu vL0n845ARfa07YwyYelvywIhliwZriXdBVbQDh33Gc30nTv/wQnm+kUKYlYywOODDCEA 0TGULvur+M82dUhEqJqonuAVI9adKI4ZVzH/zBNORtfQKkti3PJeu8ZNkbNFQtDGFTWG zEIeO0SOHEkjEBjPue1Cd/d7bUkJIuliM/DJMrUAkzRGBmKt0JQBC2gK6lUii1uah8I+ LEgg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z13-v6si16791225pgk.127.2018.07.10.11.27.30; Tue, 10 Jul 2018 11:27:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732804AbeGJS0e (ORCPT + 99 others); Tue, 10 Jul 2018 14:26:34 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:43766 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732406AbeGJS0d (ORCPT ); Tue, 10 Jul 2018 14:26:33 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id C393CE83; Tue, 10 Jul 2018 18:26:22 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tokunori Ikegami , Joakim Tjernlund , Chris Packham , Brian Norris , David Woodhouse , Boris Brezillon , Marek Vasut , Richard Weinberger , Cyrille Pitchen , linux-mtd@lists.infradead.org, Boris Brezillon Subject: [PATCH 3.18 22/23] mtd: cfi_cmdset_0002: Change erase functions to check chip good only Date: Tue, 10 Jul 2018 20:24:55 +0200 Message-Id: <20180710182309.822119900@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180710182308.877332304@linuxfoundation.org> References: <20180710182308.877332304@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Tokunori Ikegami commit 79ca484b613041ca223f74b34608bb6f5221724b upstream. Currently the functions use to check both chip ready and good. But the chip ready is not enough to check the operation status. So change this to check the chip good instead of this. About the retry functions to make sure the error handling remain it. Signed-off-by: Tokunori Ikegami Reviewed-by: Joakim Tjernlund Cc: Chris Packham Cc: Brian Norris Cc: David Woodhouse Cc: Boris Brezillon Cc: Marek Vasut Cc: Richard Weinberger Cc: Cyrille Pitchen Cc: linux-mtd@lists.infradead.org Cc: stable@vger.kernel.org Signed-off-by: Boris Brezillon Signed-off-by: Greg Kroah-Hartman --- drivers/mtd/chips/cfi_cmdset_0002.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) --- a/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c @@ -2294,12 +2294,13 @@ static int __xipram do_erase_chip(struct chip->erase_suspended = 0; } - if (chip_ready(map, adr)) + if (chip_good(map, adr, map_word_ff(map))) break; if (time_after(jiffies, timeo)) { printk(KERN_WARNING "MTD %s(): software timeout\n", __func__ ); + ret = -EIO; break; } @@ -2307,15 +2308,15 @@ static int __xipram do_erase_chip(struct UDELAY(map, chip, adr, 1000000/HZ); } /* Did we succeed? */ - if (!chip_good(map, adr, map_word_ff(map))) { + if (ret) { /* reset on all failures. */ map_write( map, CMD(0xF0), chip->start ); /* FIXME - should have reset delay before continuing */ - if (++retry_cnt <= MAX_RETRIES) + if (++retry_cnt <= MAX_RETRIES) { + ret = 0; goto retry; - - ret = -EIO; + } } chip->state = FL_READY; @@ -2389,7 +2390,7 @@ static int __xipram do_erase_oneblock(st chip->erase_suspended = 0; } - if (chip_ready(map, adr)) { + if (chip_good(map, adr, map_word_ff(map))) { xip_enable(map, chip, adr); break; } @@ -2398,6 +2399,7 @@ static int __xipram do_erase_oneblock(st xip_enable(map, chip, adr); printk(KERN_WARNING "MTD %s(): software timeout\n", __func__ ); + ret = -EIO; break; } @@ -2405,15 +2407,15 @@ static int __xipram do_erase_oneblock(st UDELAY(map, chip, adr, 1000000/HZ); } /* Did we succeed? */ - if (!chip_good(map, adr, map_word_ff(map))) { + if (ret) { /* reset on all failures. */ map_write( map, CMD(0xF0), chip->start ); /* FIXME - should have reset delay before continuing */ - if (++retry_cnt <= MAX_RETRIES) + if (++retry_cnt <= MAX_RETRIES) { + ret = 0; goto retry; - - ret = -EIO; + } } chip->state = FL_READY;