From nobody Tue Feb 10 14:49:35 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79EB925C6EE for ; Mon, 9 Feb 2026 15:17:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770650265; cv=none; b=gpum4MOalwv2nLPhD9LUF4GQy3PCbXWUnKa85/YRp/Se+T28g8CDavAJJoXQh5BUcsdujzwZzkmhPtFiUrxrGe3kOMXQ9ue0ZinRcKDCkELQncHC4CSE9dMupVRUFBfUQ1ZQ0zh+0x2ACpspFlIcOsW5MxH83Wgq21Frn4zNmH4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770650265; c=relaxed/simple; bh=QwqwIAqr7xCkCr48dcuh5oHcGIGiBHbnt8H8Y164264=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=iezO1m9ZhnK0mEvfEgu9D9b62q3Zsq2WDr1Rasf+CCRnQDg28RN6GBq+gXcReG4JCcm03Uu1X6p6b7eohEWyGIom9KU1yXp+Yblo4qUeALscJCwebiyzpigVzmJqeMuuImBy/Erig8pleovirUqtg/elbRq6rkjpv/cwzNDNsPw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=flipper.net; spf=pass smtp.mailfrom=flipper.net; dkim=pass (2048-bit key) header.d=flipper.net header.i=@flipper.net header.b=zpPkq9x7; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=flipper.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flipper.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=flipper.net header.i=@flipper.net header.b="zpPkq9x7" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-47ee0291921so29665905e9.3 for ; Mon, 09 Feb 2026 07:17:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=flipper.net; s=google; t=1770650264; x=1771255064; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=FpIn1Ne0BBcoXFXd70KYLdqOHiEwYJ4NHcQ5bZXN32I=; b=zpPkq9x7yZhLChr2zjYKtdvhRXKHSEw/7tZHLGrn1xPhMTUJzbV5M2Y4PG8YFgOR/t NdkqsG3wt9KpLhzndAqCf1N2F5bv1gK9qBtrp22ZoAvAJAQxDgqBq799eMwLxvDXOrpZ d54R9b2OkWxAVGFfWdwAdu4c3L+uOZ7RfMHuAeHnFzvTGKCw/JaHx1oe0EKa6UxcilzF OoAbv8iw3XJyRuqWESaYNv9KTvYAvvHnTA++J8BwC6Q9ijZ33RhkFUbc9qCH8f68cfmN 3Mq0rKsqYqNLniZK//8KtKRfcuqR9YXUkk/D/3bZ9pVdDkr4hdFrx1CF1ThwPxTKS5CT jBLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770650264; x=1771255064; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=FpIn1Ne0BBcoXFXd70KYLdqOHiEwYJ4NHcQ5bZXN32I=; b=tn2PeyfzrF3unTJkTO7X9uJYl3B2iEJTR5iXAw/TBNDQf2QytYs8NUUbVyDUX5HmYW mis/oglTSsiU404r83uU31YTPVxJ7iRWCCSfkHhsDhF0mvglhWeICtzL5IblkEMAMJnM gHYZWN7E9gdj4Y4K0WHsPo0mnJEcSKnXp6TGWzQD5JDfGfR9nfwmy2C/hjz8IRgKyaLk T2zcWkDPc/XWaTWLTRrrzzX8VdKJjKoGW6DfJ8ikTXwZCH97wylwkIZCfznP6pw0YHiv FawPb+vN8Uy8MmsXToBOOY+jVyFg2vgrhECsl2+kBYJpDzRArNBWXJLifOZlUQwHyBCd Ftzw== X-Forwarded-Encrypted: i=1; AJvYcCUb0PaHlPqWQLs3QVYvaCz0tp94ikgCEH4a2ptoRRo3h3vx3dF2QUj09X+mAnun24NnCSYaf1nk/Oi2oqY=@vger.kernel.org X-Gm-Message-State: AOJu0Yzz/EV45B7v4JNFOn5yCQSoAlrkuBDrMNo4+uc9tOPMb/Eiqdce GUZAjR9JmdC6LKuxddqJPh8BachxKLYkTz6pFMwR5rNcO7wUPJPoSkEONK66sy7VgRo= X-Gm-Gg: AZuq6aIof9oGircXB1zantGIpnAEGyiSYBUmzcH/KaZlZHov10WoiJwr5zSrmK+xMz8 s4BjM2FKWZHEaQ0sWcTjvdVPIx6+WQMMdzqxOMJSqM5DaiANi32az9MwizmzlCo+PIDalO56R5L k6kkwQkXOVDzSy/Hzk0nE1pgtGUxtYlmqI1zobTRfpgHyXOgY4gXALFDSVRVA2+0nNXyQzAcyLY iHnv9hspLIPeLvjxwxvABlhSTnnjiW2ISRHdnD1X9LzlIKPyHdwQEYy/AbKxngsxg5YrM5dvnjQ RyDKYXQ6153vgDVL4INSWKaq8CGdET4RPuwfBiS2qLYjeKTD4WDmmOxNuN4zyI0RfEaK9JAjlrb oaff+Qou8K+pk0R4/3U3SKBcZFTtLrlTDJXa0AHN/ndiWj83Vj5Cn4Sfgty2LgF8BdGPI47YS0o Rw2J0Ck9U/wEgsZREIYFi7Ii01Tq50yZzDi6RJcSUVq3VgFY1EtMbqHwhK0nxDDng= X-Received: by 2002:a05:600c:528b:b0:482:f12f:f35e with SMTP id 5b1f17b1804b1-483201e3759mr172093735e9.12.1770650263666; Mon, 09 Feb 2026 07:17:43 -0800 (PST) Received: from alchark-surface.localdomain (bba-94-59-44-101.alshamil.net.ae. [94.59.44.101]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d8342dsm295925485e9.12.2026.02.09.07.17.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Feb 2026 07:17:43 -0800 (PST) From: Alexey Charkov Date: Mon, 09 Feb 2026 19:17:34 +0400 Subject: [PATCH v3] scsi: ufs: core: Fix RPMB region size detection for UFS 2.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260209-ufs-rpmb-v3-1-b1804e71bd38@flipper.net> X-B4-Tracking: v=1; b=H4sIAI36iWkC/22MQQ6CMBBFr2JmbU1noGBdeQ/joshUmig0LTYaw t0tbDTG5fv5700QOTiOcNhMEDi56IY+Q7HdwKUz/ZWFazMDSaokkhYPG0Xw90a0qPem0tqUsoV 894Gte66p0zlz5+I4hNdaTrisfyIJBYpKoypK09RU2KO9Oe857HoeYckk+qgk1ZdKWVWMqiZmR c2POs/zG+DYVEfdAAAA X-Change-ID: 20260129-ufs-rpmb-d198a699a40d To: Alim Akhtar , Avri Altman , Bart Van Assche , "James E.J. Bottomley" , "Martin K. Petersen" , Bean Huo , Can Guo Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Alexey Charkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3002; i=alchark@flipper.net; h=from:subject:message-id; bh=QwqwIAqr7xCkCr48dcuh5oHcGIGiBHbnt8H8Y164264=; b=owGbwMvMwCW2adGNfoHIK0sZT6slMWR2/pr6/pfwnP3+wm5zDx44fmeiVMLTUyynZ3/WOcrgd OjdPMXzTzsmsjCIcTFYiimyzP22xHaqEd+sXR4eX2HmsDKBDJEWaWAAAhYGvtzEvFIjHSM9U21D PUNDHWMdIwYuTgGY6mlMjAybTvnZSNbYJ1ku7DrZkDnRQED1kc0GK5WJu/kzL7g6n/zAyHAjKez kZlmji8tNoi0CvxxWS5y2T5FP+vRXsdOVYiVVp9gB X-Developer-Key: i=alchark@flipper.net; a=openpgp; fpr=9DF6A43D95320E9ABA4848F5B2A2D88F1059D4A5 Older UFS spec devices (2.2 and earlier) do not expose per-region RPMB sizes, as only one RPMB region is supported. In such cases, the size of the single RPMB region can be deduced from the Logical Block Count and Logical Block Size fields in the RPMB Unit Descriptor. Add a fallback mechanism to calculate the RPMB region size from these fields if the device implements an older spec, so that the RPMB driver can work with such devices - otherwise it silently skips the whole RPMB. Section 14.1.4.6 (RPMB Unit Descriptor) Link: https://www.jedec.org/system/files/docs/JESD220C-2_2.pdf Cc: stable@vger.kernel.org Fixes: b06b8c421485 ("scsi: ufs: core: Add OP-TEE based RPMB driver for UFS= devices") Reviewed-by: Bean Huo Signed-off-by: Alexey Charkov --- Changes in v3: - Fix comment style, add note about respective fields being always zero (th= anks Bart) - Link to v2: https://lore.kernel.org/r/20260205-ufs-rpmb-v2-1-5e1572ee52bf= @flipper.net Changes in v2: - Comment on the expected size of the RPMB partition on UFS 2.2 (thanks Bea= n) - Use a standard define for size instead of a magic number (thanks Bean) - Link to v1: https://lore.kernel.org/r/20260129-ufs-rpmb-v1-1-691534ab723f= @flipper.net --- drivers/ufs/core/ufshcd.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 847b55789bb8..0d7b31620ea4 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -5249,6 +5250,25 @@ static void ufshcd_lu_init(struct ufs_hba *hba, stru= ct scsi_device *sdev) hba->dev_info.rpmb_region_size[1] =3D desc_buf[RPMB_UNIT_DESC_PARAM_REGI= ON1_SIZE]; hba->dev_info.rpmb_region_size[2] =3D desc_buf[RPMB_UNIT_DESC_PARAM_REGI= ON2_SIZE]; hba->dev_info.rpmb_region_size[3] =3D desc_buf[RPMB_UNIT_DESC_PARAM_REGI= ON3_SIZE]; + + if (hba->dev_info.wspecversion <=3D 0x0220) { + /* + * These older spec chips have only one RPMB region, + * sized between 128 kB minimum and 16 MB maximum. + * No per region size fields are provided (respective + * REGIONX_SIZE fields always contain zeros), so get + * it from the logical block count and size fields for + * compatibility + * + * (See JESD220C-2_2 Section 14.1.4.6 + * RPMB Unit Descriptor,* offset 13h, 4 bytes) + */ + hba->dev_info.rpmb_region_size[0] =3D + (get_unaligned_be64(desc_buf + + RPMB_UNIT_DESC_PARAM_LOGICAL_BLK_COUNT) + << desc_buf[RPMB_UNIT_DESC_PARAM_LOGICAL_BLK_SIZE]) + / SZ_128K; + } } =20 =20 --- base-commit: 9845cf73f7db6094c0d8419d6adb848028f4a921 change-id: 20260129-ufs-rpmb-d198a699a40d Best regards, --=20 Alexey Charkov