Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4000835pxf; Tue, 6 Apr 2021 05:49:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxblT2b8ks82H61FQQNwgSiCWU9yLoxktA9HyQwp9u4yx91JAGFKUpsELwC3djNiuvpkghF X-Received: by 2002:a17:906:52d1:: with SMTP id w17mr19006757ejn.71.1617713378039; Tue, 06 Apr 2021 05:49:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617713378; cv=none; d=google.com; s=arc-20160816; b=DcfBgN/5qeT+kYFJrUozJ1oD72Ia88ofgUM0EHzIm/x/r2Uh+Vs1se3M1n8t7+7K+E AvDDh+BrH2x9YcovbbYrifn3lpmh89VBuuSsWFNrnvEXqi09uG2hCT/AN5JRjoj050aB BLEmnzC5Krx/vG/DdGsFX69rEOWnGI8ALY6ZYKZur3/D+frmbs4YGnzq8c4qXQ47Q/kn safL74uy3HzGSJbRFZn6ZZVC+ZQu0QGHt26yMwuI9Z7mneHW2fGhYQ8SObmFelhGAz1R ZG4tZCIAlOugnMZ9L63OQJyDcgdoVKlDOalmtbncxDyyYn1aaN0DDZV3Q4T53TO0TJJo 1Mzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=LL1WY9YAGyOYk5yLtE7+17OZEaxuBRKXpF8qHjv05aM=; b=K10wwUkEIvVMOO0n0i5pFnw3ktxjGez3wothXab/PZflAfdE8kwRGs8GzhvXDQFIew 6bPyz2U2IwtZnzTmglp8O+RUy1NBvUGsHbLyT/V9HTOHEsq1y/zKzdByZnUEbtPpcChQ p6ve4N6+maSgnHfrZESRiR+RvoRsSjhSYDJerC1fZ6g7OBEo2MmqRjkxDmO0zbNMMr8k VJBKWJ6JNILbIzjMEKQ1cV5byLU5LN4lYQVav+MInKLggmwQY2WIk0AH0+RiQCNt6+Pw dw36xUUjovXabCm3UEWsiQlnbLdRk6Up8eWt+elaTzBzZc4p/A+9Ig+cfy8hK9/VQycR VDmw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kioxia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i25si15492082eje.58.2021.04.06.05.49.14; Tue, 06 Apr 2021 05:49:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kioxia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242301AbhDFCRT (ORCPT + 99 others); Mon, 5 Apr 2021 22:17:19 -0400 Received: from mo-csw-fb1115.securemx.jp ([210.130.202.174]:38840 "EHLO mo-csw-fb.securemx.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238828AbhDFCRS (ORCPT ); Mon, 5 Apr 2021 22:17:18 -0400 Received: by mo-csw-fb.securemx.jp (mx-mo-csw-fb1115) id 1361lpr0002650; Tue, 6 Apr 2021 10:47:52 +0900 Received: by mo-csw.securemx.jp (mx-mo-csw1114) id 1361lUwb008479; Tue, 6 Apr 2021 10:47:30 +0900 X-Iguazu-Qid: 2wGrBJasm3hdJ6uKHL X-Iguazu-QSIG: v=2; s=0; t=1617673650; q=2wGrBJasm3hdJ6uKHL; m=GP88N+NcFEyBcPCzzwJsFRf8/vyZgOZVf7KUXtPOf0U= Received: from imx12-a.toshiba.co.jp (imx12-a.toshiba.co.jp [61.202.160.135]) by relay.securemx.jp (mx-mr1113) id 1361lSqw038187 (version=TLSv1.2 cipher=AES128-GCM-SHA256 bits=128 verify=NOT); Tue, 6 Apr 2021 10:47:29 +0900 Received: from enc02.toshiba.co.jp (enc02.toshiba.co.jp [61.202.160.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by imx12-a.toshiba.co.jp (Postfix) with ESMTPS id CFF6B1000AC; Tue, 6 Apr 2021 10:47:28 +0900 (JST) Received: from hop101.toshiba.co.jp ([133.199.85.107]) by enc02.toshiba.co.jp with ESMTP id 1361lS6q013306; Tue, 6 Apr 2021 10:47:28 +0900 From: Yoshio Furuyama To: miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/2] Fix the issue for clearing status process Date: Tue, 6 Apr 2021 10:47:26 +0900 X-TSB-HOP: ON Message-Id: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the unlikely event of bad block, it should update its block status to BBT, In this case, there are 2 kind of issue for handling a) Mark bad block status to BBT: It was fixed by Patric's patch b) Clear status to BBT: I posted patch for this issue Patch: Issue of handing BBT (Bad Block Table) for some particular blocks (Ex:10, 11) Updating status is, first clear status, second set bad block status. Patrick's patch is only fixed the issue for setting status process, so this patch fix the clearing status process. Signed-off-by: Yoshio Furuyama --- drivers/mtd/nand/bbt.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/nand/bbt.c b/drivers/mtd/nand/bbt.c index 64af6898131d..0780896eaafe 100644 --- a/drivers/mtd/nand/bbt.c +++ b/drivers/mtd/nand/bbt.c @@ -112,11 +112,13 @@ int nanddev_bbt_set_block_status(struct nand_device *nand, unsigned int entry, ((entry * bits_per_block) / BITS_PER_LONG); unsigned int offs = (entry * bits_per_block) % BITS_PER_LONG; unsigned long val = status & GENMASK(bits_per_block - 1, 0); + unsigned long shift = ((bits_per_block + offs <= BITS_PER_LONG) ? + (offs + bits_per_block - 1) : (BITS_PER_LONG - 1)); if (entry >= nanddev_neraseblocks(nand)) return -ERANGE; - pos[0] &= ~GENMASK(offs + bits_per_block - 1, offs); + pos[0] &= ~GENMASK(shift, offs); pos[0] |= val << offs; if (bits_per_block + offs > BITS_PER_LONG) { -- 2.25.1