From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 09FADC05027 for ; Mon, 6 Feb 2023 05:05:19 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 1E5F48577F; Mon, 6 Feb 2023 06:05:17 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="G1KuCoBU"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 9A74185A2D; Mon, 6 Feb 2023 06:05:15 +0100 (CET) Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id DF2ED85772 for ; Mon, 6 Feb 2023 06:05:10 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=jh80.chung@samsung.com Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout2.samsung.com (KnoxPortal) with ESMTP id 20230206050508epoutp02e1bef6bc0feb37dc5dea9d2f58ce1e70~BI87vB6mX2134621346epoutp025 for ; Mon, 6 Feb 2023 05:05:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.samsung.com 20230206050508epoutp02e1bef6bc0feb37dc5dea9d2f58ce1e70~BI87vB6mX2134621346epoutp025 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1675659908; bh=2ow/IuRE4icUcymGM9d4xq4Nu/kmFT3Ggjmn8hhnWQk=; h=From:To:Cc:In-Reply-To:Subject:Date:References:From; b=G1KuCoBUpapI2MYfDwas3H6AWd2Ffn+Tc86DCKGqxQBjltIZmUuTuqIJXlPuKjmTH 8NUjC//ynrvlL2Fw4S1JJIgCTXk8VjjgEqpl/cgn7T1Stzv0ix2dVYjTt0GBSMRTVB uSIXDaIoUetwCRTGbTQbouvPYKA9f4wSxoBqE3L0= Received: from epsnrtp1.localdomain (unknown [182.195.42.162]) by epcas1p4.samsung.com (KnoxPortal) with ESMTP id 20230206050507epcas1p422e02e57ef0231741345fd3834fc0384~BI87ehgyz0534705347epcas1p4V; Mon, 6 Feb 2023 05:05:07 +0000 (GMT) Received: from epsmges1p1.samsung.com (unknown [182.195.38.237]) by epsnrtp1.localdomain (Postfix) with ESMTP id 4P9Dhy5h8sz4x9Q1; Mon, 6 Feb 2023 05:05:06 +0000 (GMT) Received: from epcas1p2.samsung.com ( [182.195.41.46]) by epsmges1p1.samsung.com (Symantec Messaging Gateway) with SMTP id AD.74.55531.18A80E36; Mon, 6 Feb 2023 14:05:05 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas1p3.samsung.com (KnoxPortal) with ESMTPA id 20230206050505epcas1p3fa005fc1df0f70d1385fc508b026b431~BI85l_u0N2128321283epcas1p3u; Mon, 6 Feb 2023 05:05:05 +0000 (GMT) Received: from epsmgms1p2.samsung.com (unknown [182.195.42.42]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20230206050505epsmtrp122332955d3f5bc5095cabbf545d7a61d~BI85lViLt1446414464epsmtrp1g; Mon, 6 Feb 2023 05:05:05 +0000 (GMT) X-AuditID: b6c32a35-d9fff7000000d8eb-70-63e08a81313a Received: from epsmtip1.samsung.com ( [182.195.34.30]) by epsmgms1p2.samsung.com (Symantec Messaging Gateway) with SMTP id 9F.B9.17995.18A80E36; Mon, 6 Feb 2023 14:05:05 +0900 (KST) Received: from jh80chung01 (unknown [10.113.111.84]) by epsmtip1.samsung.com (KnoxPortal) with ESMTPA id 20230206050505epsmtip137d59483551f7f0b19323645da8855ca~BI85aKD-f2913129131epsmtip1D; Mon, 6 Feb 2023 05:05:05 +0000 (GMT) From: "Jaehoon Chung" To: "'Loic Poulain'" , , Cc: In-Reply-To: <20230126092419.534514-2-loic.poulain@linaro.org> Subject: RE: [PATCH v2 2/3] mmc: erase: Use TRIM erase when available Date: Mon, 6 Feb 2023 14:05:05 +0900 Message-ID: <006701d939e8$93980630$bac81290$@samsung.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQNZ9M8D2p33qchsmUm9Zn37MaiP6gJUkl5rAY8hsg6roMjBIA== Content-Language: ko X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpjk+LIzCtJLcpLzFFi42LZdlhTT7ex60GyQes6G4vfmzYzWvxY9YXV 4tuWbYwWb/d2sjuweMxuuMjicefaHjaPs3d2MHpsfLeDKYAlKtsmIzUxJbVIITUvOT8lMy/d Vsk7ON453tTMwFDX0NLCXEkhLzE31VbJxSdA1y0zB2inkkJZYk4pUCggsbhYSd/Opii/tCRV ISO/uMRWKbUgJafAtECvODG3uDQvXS8vtcTK0MDAyBSoMCE74+lKg4JNChUXu3uZGhibJLsY OTkkBEwkTpw6ztLFyMUhJLCDUWLLxZ+sEM4nRonXc08xQjifGSU2H3nLCNPSse03VGIXo0TD 0x6olpeMEg/OnWMFqWIT0JP4v2ghM4gtIhAhsf7kdRYQm1lASqLp5C6wSZwCdhKz/x8AiwsL uEr0dG1mB7FZBFQkWh6tAovzClhKHDjUzgZhC0qcnPkEao68xPa3c5ghLlKQ+Pl0GSvELieJ r59usEPUiEjM7mxjBjlOQuAru8TvI4ehXnCReNH0jB3CFpZ4dXwLlC0l8bK/jR2ioZlRYumS g6wQTg+jxL+G62wQVcYS+5dOZupi5ABaoSmxfpc+RFhRYufvuYwQm/kk3n0FBQsHUJxXoqNN CKJEReLS65dMMLvuPvnPOoFRaRaS32Yh+W0Wkh9mISxbwMiyilEstaA4Nz212LDAEB7dyfm5 mxjBCVLLdAfjxLcf9A4xMnEwHmKU4GBWEuFdfvpOshBvSmJlVWpRfnxRaU5q8SFGU2BoT2SW Ek3OB6bovJJ4QxNLAxMzI2MTC0MzQyVxXnHbk8lCAumJJanZqakFqUUwfUwcnFINTLV/li+s lDpreNN3mtnh2PqjERq3JbVjNvrmFXo0mP/6qMAhy73ij7YUx7PC0pCJPVvqnqam3JHZMffE QWuH61vDl5w11RH7Hb37/sa6m+v09r9ttT171dtmZcRFk8tVaz/f9eh8rLPphZ37/JDHjvNP W1dGNh8xcpqzNO9Jhn/qDrOLt12yFzaEXTHU5Sj37ij8+Sq4lc0ovjK7taXX+cqWMyKH46r+ 3jEX1NZd+5H9+zermmzxGo4pEnP26HivfP52pseElIrDKzvqOjNFricWZRkEhYnunu//6XCb 72/xtdOun9zTdHNSBsO315/SIzZ4T/WyEOZXNT07PfW6AW8E+0cJz/A1q5YLCLLdU2Ipzkg0 1GIuKk4EAPaxvpIZBAAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHLMWRmVeSWpSXmKPExsWy7bCSnG5j14Nkg0MH1C1+b9rMaPFj1RdW i29btjFavN3bye7A4jG74SKLx51re9g8zt7Zweix8d0OpgCWKC6blNSczLLUIn27BK6MpysN CjYpVFzs7mVqYGyS7GLk5JAQMJHo2PabsYuRi0NIYAejxJ0z3WwQCSmJz0+nAtkcQLawxOHD xSBhIYHnjBKP9uWA2GwCehL/Fy1kBrFFBKIk/hyfyQJiMwO1Np3cBTXzIKPE1KOnwRKcAnYS s/8fALOFBVwlero2s4PYLAIqEi2PVoHFeQUsJQ4cameDsAUlTs58AjVUT2L9+jmMELa8xPa3 c5gh7lSQ+Pl0GSvEEU4SXz/dYIeoEZGY3dnGPIFReBaSUbOQjJqFZNQsJC0LGFlWMUqmFhTn pucWGxYY5aWW6xUn5haX5qXrJefnbmIER4mW1g7GPas+6B1iZOJgPMQowcGsJMK7/PSdZCHe lMTKqtSi/Pii0pzU4kOM0hwsSuK8F7pOxgsJpCeWpGanphakFsFkmTg4pRqYnA08a/o0vTua Dd65L3qbeJtt+ksB9936VQ/SbGVtjn822szeeNJVTSBObkq8gPrWYw+7JoU8MrKcw53/4fdW tehJSy5q+E061xO6OUzYzZFf5vbSntvry2edK3jabmT3YcEuC+ngLZbK+h6FnklCAktfVpU8 LDh2mfUqX8Kzoy2Ppq/dc+PdR23NtJxLy1niPtjqsd5w//r8DEOt0qUdXWLbPGesM1Hg3FSq sV5ihv+3TZ6lHhnyYW3ns9s7WNkrmD7zxR/4/vr0HvbGFZKHJ2bo7JFNOSulvXrKwX7flOPu +UnBkQ9/5gWHz5kVOUHg8teLU9a8tXmkut12v3Dj1bl/mQ8EH40z2tgidSlNiaU4I9FQi7mo OBEAC9NAiAEDAAA= X-CMS-MailID: 20230206050505epcas1p3fa005fc1df0f70d1385fc508b026b431 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-Sendblock-Type: SVC_REQ_APPROVE CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20230126092432epcas1p1d2769d648de1f55fc772d40ad87901cc References: <20230126092419.534514-1-loic.poulain@linaro.org> <20230126092419.534514-2-loic.poulain@linaro.org> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean Hi, > -----Original Message----- > From: Loic Poulain > Sent: Thursday, January 26, 2023 6:24 PM > To: sjg@chromium.org; peng.fan@nxp.com; jh80.chung@samsung.com > Cc: u-boot@lists.denx.de; Loic Poulain > Subject: [PATCH v2 2/3] mmc: erase: Use TRIM erase when available > > The default erase command applies on erase group unit, and > simply round down to erase group size. When the start block > is not aligned to erase group size (e.g. erasing partition) > it causes unwanted erasing of the previous blocks, part of > the same erase group (e.g. owned by other logical partition, > or by the partition table itself). > > To prevent this issue, a simple solution is to use TRIM as > argument of the Erase command, which is usually supported > with eMMC > 4.0, and allow to apply erase operation to write > blocks instead of erase group > > Signed-off-by: Loic Poulain > --- > v2: Add mmc unit test change to the series > > drivers/mmc/mmc_write.c | 34 +++++++++++++++++++++++----------- > 1 file changed, 23 insertions(+), 11 deletions(-) > > diff --git a/drivers/mmc/mmc_write.c b/drivers/mmc/mmc_write.c > index 5b7aeeb012..a6f93380dd 100644 > --- a/drivers/mmc/mmc_write.c > +++ b/drivers/mmc/mmc_write.c > @@ -15,7 +15,7 @@ > #include > #include "mmc_private.h" > > -static ulong mmc_erase_t(struct mmc *mmc, ulong start, lbaint_t blkcnt) > +static ulong mmc_erase_t(struct mmc *mmc, ulong start, lbaint_t blkcnt, u32 args) > { > struct mmc_cmd cmd; > ulong end; > @@ -52,7 +52,7 @@ static ulong mmc_erase_t(struct mmc *mmc, ulong start, lbaint_t blkcnt) > goto err_out; > > cmd.cmdidx = MMC_CMD_ERASE; > - cmd.cmdarg = MMC_ERASE_ARG; > + cmd.cmdarg = args ? args : MMC_ERASE_ARG; It there any case to pass by other value? Best Regards, Jaehoon Chung > cmd.resp_type = MMC_RSP_R1b; > > err = mmc_send_cmd(mmc, &cmd, NULL); > @@ -77,7 +77,7 @@ ulong mmc_berase(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt) > #endif > int dev_num = block_dev->devnum; > int err = 0; > - u32 start_rem, blkcnt_rem; > + u32 start_rem, blkcnt_rem, erase_args = 0; > struct mmc *mmc = find_mmc_device(dev_num); > lbaint_t blk = 0, blk_r = 0; > int timeout_ms = 1000; > @@ -97,13 +97,25 @@ ulong mmc_berase(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt) > */ > err = div_u64_rem(start, mmc->erase_grp_size, &start_rem); > err = div_u64_rem(blkcnt, mmc->erase_grp_size, &blkcnt_rem); > - if (start_rem || blkcnt_rem) > - printf("\n\nCaution! Your devices Erase group is 0x%x\n" > - "The erase range would be change to " > - "0x" LBAF "~0x" LBAF "\n\n", > - mmc->erase_grp_size, start & ~(mmc->erase_grp_size - 1), > - ((start + blkcnt + mmc->erase_grp_size - 1) > - & ~(mmc->erase_grp_size - 1)) - 1); > + if (start_rem || blkcnt_rem) { > + if (mmc->can_trim) { > + /* Trim function applies the erase operation to write > + * blocks instead of erase groups. > + */ > + erase_args = MMC_TRIM_ARG; > + } else { > + /* The card ignores all LSB's below the erase group > + * size, rounding down the addess to a erase group > + * boundary. > + */ > + printf("\n\nCaution! Your devices Erase group is 0x%x\n" > + "The erase range would be change to " > + "0x" LBAF "~0x" LBAF "\n\n", > + mmc->erase_grp_size, start & ~(mmc->erase_grp_size - 1), > + ((start + blkcnt + mmc->erase_grp_size - 1) > + & ~(mmc->erase_grp_size - 1)) - 1); > + } > + } > > while (blk < blkcnt) { > if (IS_SD(mmc) && mmc->ssr.au) { > @@ -113,7 +125,7 @@ ulong mmc_berase(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt) > blk_r = ((blkcnt - blk) > mmc->erase_grp_size) ? > mmc->erase_grp_size : (blkcnt - blk); > } > - err = mmc_erase_t(mmc, start + blk, blk_r); > + err = mmc_erase_t(mmc, start + blk, blk_r, erase_args); > if (err) > break; > > -- > 2.34.1