From patchwork Mon Jul 10 12:42:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johan Jonker X-Patchwork-Id: 117899 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp5007187vqx; Mon, 10 Jul 2023 06:03:01 -0700 (PDT) X-Google-Smtp-Source: APBJJlGCE1cXB6p1i6gdMODEiEjXi5bES4OhobhPiwYGl9GJMKdZgmkEidw+L9xQseF6SGyFqoTz X-Received: by 2002:a17:907:162c:b0:988:d841:7f90 with SMTP id hb44-20020a170907162c00b00988d8417f90mr19274609ejc.27.1688994181216; Mon, 10 Jul 2023 06:03:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688994181; cv=none; d=google.com; s=arc-20160816; b=iRQTzr87Gha6jOvUHlDkYGkIQr9ARbD8yAF14KjvNLAyvKYRZjpPs3UWDt5vev/2PW U3PvlTD50r7JhB5PP0sUZjUiAMV/vqatjDkmx60B1UaPW8C0YojRYnxhgvdMyc/UEH3Y No5G2JALfiaICQjq0TLCaWMormCREuFR0QJiACo9TIvgf2+9vMJf1nTGLbTLx7k/or/i IepjrFsbZYbnXZJ9INQ7+ggbobF7yK02tbJinaLuj9+0TpmGP7ySFYrUK0XsL8/Q4+5c Dp/zUStsZ0JXLe8TCi+hFe9doBSaVl4m7Tpq2fZGRlx+SUNtfgVyrmbDlLbnjAeEu7XY M2yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :content-language:references:cc:to:subject:from:user-agent :mime-version:date:message-id:dkim-signature; bh=pBd1Lu1Lca2z3up8dzZ0bUwRcOK91MQPeC1b10XMPe4=; fh=SGkBZeB3NaClSkou2vxE/8d1xcNtorwAl/pw+s8G3+Q=; b=XEaEYAxbV867SyntEMNlS4MoXdVj0ZrIhXY8aOnBSiJwtWgsOrR5YHiudw9LlsX+HQ Fn2NzmCSB2MzfkFyVtV17Nbl7ydH2YyzNeUibEHPpFD1T8tMzLJuhMcVY7c+3UUakd9I UQ/O39QbJEahwq5Z7dYruTM8w7gvDRWv3xZyJ98xgHzs8J3aeLZ8KxEs8VuSV8zFXC2o cBdJvJjF5MF9EyqilM0mnROPwXjx1Q5OzaVt5n0VdttFf50/ZsC3sCOTV/y+UhVsewqy ldx6DQVDrFwfCBB7AmtprxhL+zGlRxGI/Fo13/yOb24oQP4e7u+NjhsrReMrMMqKMPJ2 GeXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=jMayj+6F; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lf24-20020a170906ae5800b00991bdc48797si8750091ejb.95.2023.07.10.06.02.37; Mon, 10 Jul 2023 06:03:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=jMayj+6F; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231152AbjGJMmV (ORCPT + 99 others); Mon, 10 Jul 2023 08:42:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231917AbjGJMmU (ORCPT ); Mon, 10 Jul 2023 08:42:20 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C4A0F1 for ; Mon, 10 Jul 2023 05:42:16 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3159d5e409dso440933f8f.0 for ; Mon, 10 Jul 2023 05:42:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688992935; x=1691584935; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=pBd1Lu1Lca2z3up8dzZ0bUwRcOK91MQPeC1b10XMPe4=; b=jMayj+6FlyzWisJa44u1vRVzWTqzkkr+hAgEqmGIvhditBR6u9AfV21PT8niYQk2WU 9UL48NjJw19HLqdX83VpGrvCYR8rcxLqauGy0ioZpWd9BVq7GV99DrfYCGBVjLoEj5X7 v+l1Z3m0B4PK/tTI80IYslI/+sWfb1hyVraBfwnwtBErzZyh1+WYjxSwIKKFLj8oHR2R e6+tmLxj6YBn1G0B24s1RiNZEn3XrG0AMpAgxxOhBZKW6hJo0YHsW5SMwiP1ZKXcLNC7 ZLjqoI3KjmYJOBdQxlevWgF8QzeU37YSmnoch4wmSbV7jmuFK+atJdJ6ziy8HJtC1SiT KNbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688992935; x=1691584935; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:subject:from:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pBd1Lu1Lca2z3up8dzZ0bUwRcOK91MQPeC1b10XMPe4=; b=R/gn2Hn1kBzkZaJCeLl01/SggHM3YExyzoLDt60FHppQA1GRNQobbPUubusW6apHQj FWRQyF8/rQdaEM2u3W3AViGiwRGMy5qX087ZgycHTxUld9/Uj2eX9Hhc6b2mwajwmVcJ +MRjtnK128rKsPEkMs+LajyZ3iZfDvQqheQwK7aygdGfUJsgt2yWmn5MDri9cvVluWit fUMTEaEizXWgK6RkuUjqErWWl5NlTG7X8BOW1lfSOr5JAx7vq6aoIAKE7/GL6eTLlhgB BASY1zd/3y2cRNHPUUdPjrdq6jWhXP0+WsiGWffHEyUyX8ZjfSIxNRAzyCgUIH3hnCHI GogQ== X-Gm-Message-State: ABy/qLYdYvoZsZLo+1r3+Gh+18TPWrlAbHmMCLxoVyJLCg/uO6k4sWvy kLBBxONHN7gGQFQoiX5nEUgJD0NctiM= X-Received: by 2002:a5d:6e11:0:b0:315:a155:5294 with SMTP id h17-20020a5d6e11000000b00315a1555294mr851620wrz.34.1688992934466; Mon, 10 Jul 2023 05:42:14 -0700 (PDT) Received: from [192.168.2.1] (81-204-249-205.fixed.kpn.net. [81.204.249.205]) by smtp.gmail.com with ESMTPSA id u12-20020adfdd4c000000b0030ab5ebefa8sm11582335wrm.46.2023.07.10.05.42.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Jul 2023 05:42:14 -0700 (PDT) Message-ID: <876e58f3-e3c2-6295-9137-312e686026bb@gmail.com> Date: Mon, 10 Jul 2023 14:42:13 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 From: Johan Jonker Subject: [PATCH v4 1/3] mtd: rawnand: rockchip: fix oobfree offset and description To: miquel.raynal@bootlin.com Cc: richard@nod.at, vigneshr@ti.com, heiko@sntech.de, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, yifeng.zhao@rock-chips.com References: <08f694df-4c1d-f059-43fd-f1aee678062c@gmail.com> Content-Language: en-US In-Reply-To: <08f694df-4c1d-f059-43fd-f1aee678062c@gmail.com> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771038762602624866 X-GMAIL-MSGID: 1771038762602624866 Rockchip boot blocks are written per 4 x 512 byte sectors per page. Each page with boot blocks must have a page address (PA) pointer in OOB to the next page. The currently advertised free OOB area starts at offset 6, like if 4 PA bytes were located right after the BBM. This is wrong as the PA bytes are located right before the ECC bytes. Fix the layout by allowing access to all bytes between the BBM and the PA bytes instead of reserving 4 bytes right after the BBM. This change breaks existing jffs2 users. Fixes: 058e0e847d54 ("mtd: rawnand: rockchip: NFC driver for RK3308, RK2928 and others") Signed-off-by: Johan Jonker --- Changed V4: Reduce subject size Add 'Fixes:' tag Reword Changed V3: Change prefixes Reword State break existing users. --- Example: Wrong free OOB offset starts at OOB6: oob_region->offset = NFC_SYS_DATA_SIZE + 2; = 4 + 2 = 6 oob_region->length = rknand->metadata_size - NFC_SYS_DATA_SIZE - 2; = 32 - 4 - 2 = 26 Together with this length above it overlaps a reserved space for the boot blocks Page Address(PA) chip->oob_poi buffer layout for 8 steps: BBM0 BBM1 OOB2 OOB3 | OOB4 OOB5 OOB6 OOB7 OOB8 OOB9 OOB10 OOB11 | OOB12 OOB13 OOB15 OOB15 OOB16 OOB17 OOB18 OOB19 | OOB20 OOB21 OOB22 OOB23 OOB24 OOB25 OOB26 OOB27 | PA0 PA1 PA2 PA3 ECC0 ECC1 ECC2 ECC3 | ... ... ... ... Fix by new offset at OOB2: oob_region->offset = 2; The full range of free OOB with 8 steps runs from OOB2 till/including OOB27. --- drivers/mtd/nand/raw/rockchip-nand-controller.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) -- 2.30.2 diff --git a/drivers/mtd/nand/raw/rockchip-nand-controller.c b/drivers/mtd/nand/raw/rockchip-nand-controller.c index 2312e27362cb..37fc07ba57aa 100644 --- a/drivers/mtd/nand/raw/rockchip-nand-controller.c +++ b/drivers/mtd/nand/raw/rockchip-nand-controller.c @@ -562,9 +562,10 @@ static int rk_nfc_write_page_raw(struct nand_chip *chip, const u8 *buf, * BBM OOB1 OOB2 OOB3 |......| PA0 PA1 PA2 PA3 * * The rk_nfc_ooblayout_free() function already has reserved - * these 4 bytes with: + * these 4 bytes together with 2 bytes for BBM + * by reducing it's length: * - * oob_region->offset = NFC_SYS_DATA_SIZE + 2; + * oob_region->length = rknand->metadata_size - NFC_SYS_DATA_SIZE - 2; */ if (!i) memcpy(rk_nfc_oob_ptr(chip, i), @@ -933,12 +934,8 @@ static int rk_nfc_ooblayout_free(struct mtd_info *mtd, int section, if (section) return -ERANGE; - /* - * The beginning of the OOB area stores the reserved data for the NFC, - * the size of the reserved data is NFC_SYS_DATA_SIZE bytes. - */ oob_region->length = rknand->metadata_size - NFC_SYS_DATA_SIZE - 2; - oob_region->offset = NFC_SYS_DATA_SIZE + 2; + oob_region->offset = 2; return 0; } From patchwork Mon Jul 10 12:42:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johan Jonker X-Patchwork-Id: 117898 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp5007151vqx; Mon, 10 Jul 2023 06:02:59 -0700 (PDT) X-Google-Smtp-Source: APBJJlFB5PhpuXiBSDIgLsu4PYIOOVhapPByqq8CD7NAe0D6LlR13p+enfiXx5KZAiF5dNuP4sDU X-Received: by 2002:a2e:a311:0:b0:2b6:fa42:1b1d with SMTP id l17-20020a2ea311000000b002b6fa421b1dmr10296014lje.29.1688994178996; Mon, 10 Jul 2023 06:02:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688994178; cv=none; d=google.com; s=arc-20160816; b=n29V23N86Jt1b/GBrIjhhf7cgSHA3jVNznaekVwImDRD0fness0/8xYzULD1M1xG/d VZYLrPX6M1smhQnD+lFUrDDOlMGDFeOogEck/C6tBN+NpD0H86xfyeZJvHt+jQohkFOj kYPiG3ZZ51iTvIUsr8CPUhZsLLAnb6dDTHiJA3DXvnvzCehb8gIbdYZnl/Ka5kEDPiYk sjk1vamEWnjTcSpPmCUPnGgk00AAskcoXSGB4wdPn/eWDnQq+DJh+Fg5m6/MMOYOdqDC AcDB4Fk49wGRNW5JUKo9ORdQ9ySVssPwGyH4b+8pxJrq/ROgNoAMzwfxSik4TfU+Lx8U hv8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :content-language:references:cc:to:subject:from:user-agent :mime-version:date:message-id:dkim-signature; bh=3KmubX1E3kf+Z0JsXX9s3WNORY3qIwuBuczZRTUW+jU=; fh=SGkBZeB3NaClSkou2vxE/8d1xcNtorwAl/pw+s8G3+Q=; b=JGOQeobAOChD33RV0KVnq9Fgiuao414fbf4wChKaLEaOh+dKrBNvMFFHKilmAwBv+x tnoOSZmebcxMHCgjctlkGQzf26EDVn0SB+zYtXR3n3zn20w9Bkgie9rD1SX4M2q1pb19 EmNgNAtZd/2IZox8x8kWG/nGph6/rs359bFlJL5M4HeH9SQYPNBQ+VXUM5ZA3Jds1Nsg MyuE8/7AJZwGuBTXGqE6Oy8smPBx7mP7x9NfC3UhS+GpcHsnDGjarmGjoWgv7Gvy3li+ yL03wDKFytDvKPSuf5S33lmX5eLhlsNc/3DuZSD4n0Gy4vSkcS+/7NjzAiXoRR+0eMog eubw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=Krqub1hT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a20-20020a17090640d400b009937e7c4e50si7794199ejk.546.2023.07.10.06.02.34; Mon, 10 Jul 2023 06:02:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=Krqub1hT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232049AbjGJMme (ORCPT + 99 others); Mon, 10 Jul 2023 08:42:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231209AbjGJMmd (ORCPT ); Mon, 10 Jul 2023 08:42:33 -0400 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23133103 for ; Mon, 10 Jul 2023 05:42:31 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-3fbf1b82dc7so45787115e9.2 for ; Mon, 10 Jul 2023 05:42:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688992949; x=1691584949; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=3KmubX1E3kf+Z0JsXX9s3WNORY3qIwuBuczZRTUW+jU=; b=Krqub1hTt/iuxj040EXCNQNckp5a2XtiXqy8i8jBHwBJdllpNl/QucK4fUyPnzkiEX /j5sq9USFWZ5/jKLmr5SgQKd4IX4Rx5YKBRXkP1Fdsjz7EkXfwlFUkWu9tsva1kGD4Yj /unYxx/sHPEpuEDpq92Rre39bFtZi42a0yvqtvxDBziLwaERfWfRGCdflBDJfBPcQGZF P85SsueKUO99aOundaP4712ebz9BaegWIkxhiwWR5TIAUZZU/LpbWAW6jKKVWgHC1FHP M+lsIjGNaqkrvh0b0BkNyawH36MkpUYcmbSovMMQwY0WOfZZaCwRY+dm9HyrdkUnOv13 P8rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688992949; x=1691584949; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:subject:from:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3KmubX1E3kf+Z0JsXX9s3WNORY3qIwuBuczZRTUW+jU=; b=CwQjXjJdA1dGEkoh32YfYXC6ogeYSbe8SDB5kVLGPRl4QCrMXkjWIhFBN0SwnzGISn 95fOXvmCM+nQtujlI9+pZLy/eTlP7tSkLfFbQ00Ze70CmE7oYZqXH9kU9QdNlMYv/xxH QIRAwD4YzlNhWFES1ZQUQQnjSurUP50yqRIr5pi5oTXa+hkOXax39UXlb55psOG0enza NpfxFCLNt6YpBmH1Im48RV/sUNgyCKbOlBlbR5dH1Dl74oL8dq38TWQn800cKSaNgArD QV+qXwrQ5wxHsfKwi4AsmAfP4ehrzphtmimhv629d9B96pr5qSooTulpnCvOamoeucVA X1zg== X-Gm-Message-State: ABy/qLZ4MPrTvz0jt9e0ZmZPl8n4ml8NBBcy47SAWo+E05aAqjNiET+W 3GHG1vaIzoz4Gw5r4rK73G0= X-Received: by 2002:a05:600c:228d:b0:3f9:82f:bad1 with SMTP id 13-20020a05600c228d00b003f9082fbad1mr11514405wmf.40.1688992949326; Mon, 10 Jul 2023 05:42:29 -0700 (PDT) Received: from [192.168.2.1] (81-204-249-205.fixed.kpn.net. [81.204.249.205]) by smtp.gmail.com with ESMTPSA id c26-20020a05600c0ada00b003fbcdba1a52sm10293044wmr.3.2023.07.10.05.42.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Jul 2023 05:42:29 -0700 (PDT) Message-ID: <04ed6472-13e4-d139-2ed0-ce2b1aa9e90c@gmail.com> Date: Mon, 10 Jul 2023 14:42:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 From: Johan Jonker Subject: [PATCH v4 2/3] mtd: rawnand: rockchip: copy hwecc PA data to oob_poi buffer To: miquel.raynal@bootlin.com Cc: richard@nod.at, vigneshr@ti.com, heiko@sntech.de, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, yifeng.zhao@rock-chips.com References: <08f694df-4c1d-f059-43fd-f1aee678062c@gmail.com> Content-Language: en-US In-Reply-To: <08f694df-4c1d-f059-43fd-f1aee678062c@gmail.com> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771038760247273438 X-GMAIL-MSGID: 1771038760247273438 Rockchip boot blocks are written per 4 x 512 byte sectors per page. Each page with boot blocks must have a page address (PA) pointer in OOB to the next page. Pages are written in a pattern depending on the NAND chip ID. This logic used to build a page pattern table is not fully disclosed and is not easy to fit in the MTD framework. The formula in rk_nfc_write_page_hwecc() function is not correct. read/write_page_hwecc and read/write_page_raw are not aligned. Make hwecc and raw behavior identical. Generate boot block page address and pattern for hwecc in user space and copy PA data to/from the already reserved last 4 bytes before ECC in the chip->oob_poi data layout. This patch breaks all existing jffs2 users that have free OOB overlap with the reserved space for PA data. Fixes: 058e0e847d54 ("mtd: rawnand: rockchip: NFC driver for RK3308, RK2928 and others") Signed-off-by: Johan Jonker --- Changed V4: Reduce subject size Add 'Fixes:' tag Fix abbreviation Reword Changed V3: Change prefixes Reword --- .../mtd/nand/raw/rockchip-nand-controller.c | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) -- 2.30.2 diff --git a/drivers/mtd/nand/raw/rockchip-nand-controller.c b/drivers/mtd/nand/raw/rockchip-nand-controller.c index 37fc07ba57aa..5a04680342c3 100644 --- a/drivers/mtd/nand/raw/rockchip-nand-controller.c +++ b/drivers/mtd/nand/raw/rockchip-nand-controller.c @@ -598,7 +598,7 @@ static int rk_nfc_write_page_hwecc(struct nand_chip *chip, const u8 *buf, int pages_per_blk = mtd->erasesize / mtd->writesize; int ret = 0, i, boot_rom_mode = 0; dma_addr_t dma_data, dma_oob; - u32 reg; + u32 tmp; u8 *oob; nand_prog_page_begin_op(chip, page, 0, NULL, 0); @@ -625,6 +625,13 @@ static int rk_nfc_write_page_hwecc(struct nand_chip *chip, const u8 *buf, * * 0xFF 0xFF 0xFF 0xFF | BBM OOB1 OOB2 OOB3 | ... * + * The code here just swaps the first 4 bytes with the last + * 4 bytes without losing any data. + * + * The chip->oob_poi data layout: + * + * BBM OOB1 OOB2 OOB3 |......| PA0 PA1 PA2 PA3 + * * Configure the ECC algorithm supported by the boot ROM. */ if ((page < (pages_per_blk * rknand->boot_blks)) && @@ -635,21 +642,17 @@ static int rk_nfc_write_page_hwecc(struct nand_chip *chip, const u8 *buf, } for (i = 0; i < ecc->steps; i++) { - if (!i) { - reg = 0xFFFFFFFF; - } else { + if (!i) + oob = chip->oob_poi + (ecc->steps - 1) * NFC_SYS_DATA_SIZE; + else oob = chip->oob_poi + (i - 1) * NFC_SYS_DATA_SIZE; - reg = oob[0] | oob[1] << 8 | oob[2] << 16 | - oob[3] << 24; - } - if (!i && boot_rom_mode) - reg = (page & (pages_per_blk - 1)) * 4; + tmp = oob[0] | oob[1] << 8 | oob[2] << 16 | oob[3] << 24; if (nfc->cfg->type == NFC_V9) - nfc->oob_buf[i] = reg; + nfc->oob_buf[i] = tmp; else - nfc->oob_buf[i * (oob_step / 4)] = reg; + nfc->oob_buf[i * (oob_step / 4)] = tmp; } dma_data = dma_map_single(nfc->dev, (void *)nfc->page_buf, @@ -812,12 +815,17 @@ static int rk_nfc_read_page_hwecc(struct nand_chip *chip, u8 *buf, int oob_on, goto timeout_err; } - for (i = 1; i < ecc->steps; i++) { - oob = chip->oob_poi + (i - 1) * NFC_SYS_DATA_SIZE; + for (i = 0; i < ecc->steps; i++) { + if (!i) + oob = chip->oob_poi + (ecc->steps - 1) * NFC_SYS_DATA_SIZE; + else + oob = chip->oob_poi + (i - 1) * NFC_SYS_DATA_SIZE; + if (nfc->cfg->type == NFC_V9) tmp = nfc->oob_buf[i]; else tmp = nfc->oob_buf[i * (oob_step / 4)]; + *oob++ = (u8)tmp; *oob++ = (u8)(tmp >> 8); *oob++ = (u8)(tmp >> 16); From patchwork Mon Jul 10 12:42:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johan Jonker X-Patchwork-Id: 117897 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp5006885vqx; Mon, 10 Jul 2023 06:02:41 -0700 (PDT) X-Google-Smtp-Source: APBJJlECYwf/iyd2Lw1euySgYX1IT9fXFVRpJPVhVs+yC2wKrYvnuuzS0f6Ba9lQRuzQ02Dz2j6n X-Received: by 2002:a17:906:104e:b0:993:d6e8:2389 with SMTP id j14-20020a170906104e00b00993d6e82389mr10038215ejj.26.1688994160741; Mon, 10 Jul 2023 06:02:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688994160; cv=none; d=google.com; s=arc-20160816; b=Mn7BHg3gZnJVDbfdeqqtiNr7cCrPJLdK485vKZi3ibdw9Awv6rUfWmz60E1s79gCRZ FQHCdFijApzjDrJcJHWUByAh0DgUC4tadxUUhX8/s9ARqeLDEhzifb2eGrwjILoV92kA HISJYDGlEsoHzsMKoi4G7ilgQFWtUbPGJufZdiSwkvpwWegANZ+IxGx3y3QgnxE/jWaE /rl0+WGjVnhWQUZzWfTioePEQDrGz09rJJVIjx5BPORI3L8URE6Y9fT0ATPm08rF3owx kMGf4Jg4CnltsJKD/K63YOZGAAXapc6AeasASmK8SG2Ve5aN2c+htOLW5uEGtMxy0Ihj +BwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :content-language:references:cc:to:subject:from:user-agent :mime-version:date:message-id:dkim-signature; bh=TdvM16o5h23jwD1okqOHQiuKkM8L7IpEOiBotY2IGmY=; fh=SGkBZeB3NaClSkou2vxE/8d1xcNtorwAl/pw+s8G3+Q=; b=Hx7xFqfskpOZdlwCVCy6yamNaBc29CnIHZBaXP9prHrOEWQniothotD5TsIl72tTuV uilTIC0vNsw5ClHtTYE5qebz5LYmtISL1qNFdekMqqNLhBxo7Fb5A//8iIy/AlFE7Fq2 OiZWuNJkvL3b8WJkcy21rNGAmHw8WouWPk6iVAHZp7XHfAju91TSNkfmYJ8s3wAI/K1R c10wwyk0JTuutrchoOshEcNpoONBiAVPVzTfKory4As39h2FIwGl6L1NV7hCl3m3mfYh eM1smJaSWhCYUtCernW0KdKqbD/oro9wbZrMexWfh1QHOdRHIa2zStAetNcT+O8U0pV2 5N1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=b376hUBV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u12-20020a170906408c00b0099307123b55si10037690ejj.76.2023.07.10.06.02.15; Mon, 10 Jul 2023 06:02:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=b376hUBV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231765AbjGJMms (ORCPT + 99 others); Mon, 10 Jul 2023 08:42:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42128 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232072AbjGJMmr (ORCPT ); Mon, 10 Jul 2023 08:42:47 -0400 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 12F00103 for ; Mon, 10 Jul 2023 05:42:44 -0700 (PDT) Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-3fbc244d384so45481375e9.0 for ; Mon, 10 Jul 2023 05:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688992962; x=1691584962; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=TdvM16o5h23jwD1okqOHQiuKkM8L7IpEOiBotY2IGmY=; b=b376hUBVwU5cG0vV849R90AbgHClWR5m0B0ip65d7lLM9lEjoEwc5JayOE5aBw1QWX b5bc3XGTXrLab8Vol+LypXiM7YozU6vCehy1UgWdXKnRUbzAxcuf3jD3mHKCLihQnTbt 2ECT/v7hdYss29tOsNN/+7uQmX9S/toJpC2ipJ0kEYWK7rOYfnP51klWTWVEWZM3inYG wvCQZoqU3Ac9v7ROA07LO0/1ACRT258GaaUcxrTdGiCAzpPRx8VNORi88g7HuqMlN/CI SbKQahle6Va+QU6n+8MeOKUcO5358RHYMp+fKK3/50Zmoow6bjq6YzhwNI9BeTM73JQp 4ESg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688992962; x=1691584962; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:subject:from:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=TdvM16o5h23jwD1okqOHQiuKkM8L7IpEOiBotY2IGmY=; b=X9B4844hF2F4nM3gPmIOiB3HE0xJX3SUEvuF10irkwe0t2VU+Sb2QNQTnwW07C0l0Y r0/NfjBTEnTvn1f8z5golJSoatRxX6ev5X8KDPfYzOi0oCCx8mGU95CA3cRpHPe0sEIT WfLCLNDNkhhWBKnJVEd0rv3W64Z8AdJ0HnGepwacrpStBPIMJGopHWSdUvR9QgjK1LV/ LHk8ZJtbsmGnHWpGMxNPavijp84N91sqPXCVd5kVJrYROuObJkCoOHe8/xsTI8sd8BSt T6XSAvCtnDsWChC+IiiWtqiRRrRQMAu4BpLhX8s3NSrtFKxs66jQaMMwn7pwb06o/cEI h8Qw== X-Gm-Message-State: ABy/qLb67baUs0rucGPT5sIwlA7J0vyfv/tIFFvCoEUWAP8OFv1fa5Cp uzcrKxMuuVNITRQYKaiRtcw= X-Received: by 2002:a1c:ed14:0:b0:3fb:4149:b816 with SMTP id l20-20020a1ced14000000b003fb4149b816mr10732743wmh.8.1688992962064; Mon, 10 Jul 2023 05:42:42 -0700 (PDT) Received: from [192.168.2.1] (81-204-249-205.fixed.kpn.net. [81.204.249.205]) by smtp.gmail.com with ESMTPSA id e32-20020a5d5960000000b0031432f1528csm11637235wri.45.2023.07.10.05.42.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Jul 2023 05:42:41 -0700 (PDT) Message-ID: <0d6d0c57-c1e3-6761-9ecd-48176b4b6d4c@gmail.com> Date: Mon, 10 Jul 2023 14:42:40 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 From: Johan Jonker Subject: [PATCH v4 3/3] mtd: rawnand: rockchip: add skipbbt option To: miquel.raynal@bootlin.com Cc: richard@nod.at, vigneshr@ti.com, heiko@sntech.de, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, yifeng.zhao@rock-chips.com References: <08f694df-4c1d-f059-43fd-f1aee678062c@gmail.com> Content-Language: en-US In-Reply-To: <08f694df-4c1d-f059-43fd-f1aee678062c@gmail.com> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771038741210964693 X-GMAIL-MSGID: 1771038741210964693 On Rockchip SoCs the first boot stages are written on NAND with help of manufacturer software that uses a different format then the MTD framework. Skip the automatic BBT scan with the NAND_SKIP_BBTSCAN option so that the original content is unchanged during the driver probe. The NAND_NO_BBM_QUIRK option allows us to erase bad blocks with the nand_erase_nand() function and the flash_erase command. With these options the user has the "freedom of choice" by neutral access mode to read and write in whatever format is needed. Signed-off-by: Johan Jonker --- Changed V4: Reduce subject size Changes V3: Change prefixes Changed V2: reword --- I'm aware that the maintainer finds it "awful", but it's absolute necessary to: 1: read/write boot blocks in user space without touching original content 2: format a NAND for MTD either with built in or external driver module So we keep it include in this serie. --- drivers/mtd/nand/raw/rockchip-nand-controller.c | 7 +++++++ 1 file changed, 7 insertions(+) -- 2.30.2 diff --git a/drivers/mtd/nand/raw/rockchip-nand-controller.c b/drivers/mtd/nand/raw/rockchip-nand-controller.c index 5a04680342c3..fcda4c760ffa 100644 --- a/drivers/mtd/nand/raw/rockchip-nand-controller.c +++ b/drivers/mtd/nand/raw/rockchip-nand-controller.c @@ -188,6 +188,10 @@ struct rk_nfc { unsigned long assigned_cs; }; +static int skipbbt; +module_param(skipbbt, int, 0644); +MODULE_PARM_DESC(skipbbt, "Skip BBT scan if data on the NAND chip is not in MTD format."); + static inline struct rk_nfc_nand_chip *rk_nfc_to_rknand(struct nand_chip *chip) { return container_of(chip, struct rk_nfc_nand_chip, chip); @@ -1153,6 +1157,9 @@ static int rk_nfc_nand_chip_init(struct device *dev, struct rk_nfc *nfc, nand_set_controller_data(chip, nfc); + if (skipbbt) + chip->options |= NAND_SKIP_BBTSCAN | NAND_NO_BBM_QUIRK; + chip->options |= NAND_USES_DMA | NAND_NO_SUBPAGE_WRITE; chip->bbt_options = NAND_BBT_USE_FLASH | NAND_BBT_NO_OOB;