From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9CD25352F8D for ; Wed, 28 Jan 2026 13:39:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769607580; cv=none; b=Wd0QClSNyIyQGvH3x3i9aD9S7w/EmPotp++NJhFFhjgOs2KBmPYGCCN0XGMJehByCAa9+rc/6hPrbw/3iZLV2SIU73eSuZONwHazykgUS5sjqyXx2/k+I0GVxne07AWjB0uYq6K+/7oYggbvP98YWl1aHrmjkY1Wvg44a0niWFk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769607580; c=relaxed/simple; bh=Yuhgk/g+6xGbvKXzWEAPzhlJQV277cXRA5wZQdup1vs=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=lsp1AWHiRMOSWmwsoFy48IE/KymmLub9L5foLYKdJTm7Kj+MWkptjvtDQoTSq4aakYSkSXOr9ul6Wv1XfpmRxwngqsi5l6gLaBJQjT8cvrEuRhOMrGbexXTZ6Ey4xYXdgtT5Lz97ro7KOmoHylaInxeX4Tpf2nzhwFm1Oyy0OOk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=AqvPLrUX; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=L3I1S4Or; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="AqvPLrUX"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="L3I1S4Or" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60S92XjQ4008468 for ; Wed, 28 Jan 2026 13:39:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= O0osrPFbOmiLuUfjxs6qOPLzwDxoVeeFwe/w5K5EmiY=; b=AqvPLrUXHLL3QCAK DyR2H42rHtAQGvGHUchvEeAneNPKtcrsyejkuFdT4Iw9QiIi6MgefzzHMtdHkmnd ln+bXy/ngfBwiwR4K055lRzgVep+6clClhNIgVkgUP5o9L1gOJ3ov/hOl04laSAO wj4s4x9Ttpsz37VOBpabOgOtzF4vsCv0EYXdvK4J2Tf7Ym91CGIEnBvXG1jlIlvr T6PJs9CzL99BlgRX4hGnKnf6G0lTkFPOYfmDJznldaKeDNyS6JVDF7N5JH3vGgHO cyUmaTgxLX8ro1k7KwrD7k5lgW/x8RFY9Bp9LbmusE579YAbF2wfgVg4U6/PG59p fFY2lg== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4by1jx3pp1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 28 Jan 2026 13:39:36 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-8946586903dso23285526d6.3 for ; Wed, 28 Jan 2026 05:39:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1769607576; x=1770212376; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=O0osrPFbOmiLuUfjxs6qOPLzwDxoVeeFwe/w5K5EmiY=; b=L3I1S4OrhBecmARehVfdrpqV/mtd/XKso8r0Nltsnu30FHjlsIOcFxs0n6AZCR3ITs EZoEAMx2vVN74Hbz+arfwN7LXCqUGcMCdvx/JfKcY85Ua5OAxX87fP9sYOqH7whnf8NC mVuKp5mOD4LLHnH4l3e2jNy0hsgLgF3MHbU+tPokCi4TcROJ1fg7xKQkUMg6jhQLfGVP HCwfdbmiOQNJAES4wAwJCF3Cg1Fj5pVC8z0yh4JXXW8FYSVFDLQ+1ddzP95sB6QJpdLD 67hstoW8TXmcoQnuPWOfGXCy8wJ5zWpPWZ2twtaNLTu1qthjBAbgRlYdWn28Ou6XRCw8 wzJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769607576; x=1770212376; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=O0osrPFbOmiLuUfjxs6qOPLzwDxoVeeFwe/w5K5EmiY=; b=pTx0tbXta6H26oFCy5xE8iLFhoxK8T7JzVa5fx+a9+5oPnMqCw67ixkHbPaFJx4fX+ FsgKaIY/76AlJisZ5kkAYl3WlpykI6GbEsBkM+9nDSldsWn5xlrFmMng9HrS6UJpjonG a4P8R0eErZrW268GXvM7JvsYgKYZhexg7Aq4pPEki/i7XZF+V6ELn3mcgi1S0AAAfgcu 5jS++a3rZFPs+0cHTF0plMGP5hGLaGJqQLy2fy60SSYmo8oEM9oOXv6fyC/N0lOXTCLm /SUUQCVszZLcVnRiPvIWye+Va3YJwQrXp0juyW7nYbC0FXEvnPWF+C1T/hu0ZBs3tbUl BaCw== X-Forwarded-Encrypted: i=1; AJvYcCX4B+ogRXqo8pKA457Cw104bix0iAQEV2hOoqtLL9pkAHZ55tRQ855MiooVD329l9+Kk3/0Fj2QlbUx9lI=@vger.kernel.org X-Gm-Message-State: AOJu0Ywe2jGRhrjrHgbf3I8PMKqgktmQrJCOrwt0A/FaS8VSYUkFzpZI kqb8D1Si4P2vHu0wYVJtDO5pLnV1eAC5Tg/No52BdxDcnVC66ECXSXvFNRZed49S/9ppYao8Bxl G/o4Lx38o/r634bmgo7DFLzU/yfNWc3zIkdFeBz4lE91fxCgIHNhrRgYkx5NcTTjPCIA= X-Gm-Gg: AZuq6aJF5aHH7tqbC1O07Lk9az8WPepMAioWjci3wn+OhWRWG8GOekDj5Gx7oMA9lr3 zGIDDIDZNT4CajCP5uKpFmoZp0ZnC/7/shKKkH32Q9Ygg4HSquqp1hIICliizDmICvdoVYd1zGC ybZJDTaARysPwxAtxO0bZ85/tCmYjtbRyLcoEVGWHkeKx2DdH8p99QGTbU0ciFi/dCbI2gBUxnA 2CHufexOEkGYPGR5YGUc5aP72sWJAm8aYjxS9NjlBwuTqedoJwLUAPPo8yG4E0VNys2/GiBQsgr Bbt+FH19d3g9JspwbhrWnwxHiMjqtjQUF/f1uui2LMZUYIVi7IZ19ta8+5ix8NDz8jGW4p/PIu6 V6nKvcX5TfEAkV3zvI26caXv6hAFkUdaKFdjKM8JYS8/5sHWYCXoNcMhqcRyXoTWwzTY= X-Received: by 2002:a05:6214:3304:b0:894:8fc0:13cf with SMTP id 6a1803df08f44-894dcd227e1mr3737396d6.5.1769607575842; Wed, 28 Jan 2026 05:39:35 -0800 (PST) X-Received: by 2002:a05:6214:3304:b0:894:8fc0:13cf with SMTP id 6a1803df08f44-894dcd227e1mr3737086d6.5.1769607575450; Wed, 28 Jan 2026 05:39:35 -0800 (PST) Received: from [192.168.119.254] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-658b469e45fsm1500146a12.24.2026.01.28.05.39.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 28 Jan 2026 05:39:34 -0800 (PST) Message-ID: <2d28b5d0-c5f4-4085-b2d0-18128b021416@oss.qualcomm.com> Date: Wed, 28 Jan 2026 14:39:32 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 1/2] firmware: qcom: scm: Add SCM storage interface support To: Junhao Xie , Bjorn Andersson , Konrad Dybcio , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, Xilin Wu References: <20260126-scm-storage-v2-v2-0-fa045c7e7699@radxa.com> <20260126-scm-storage-v2-v2-1-fa045c7e7699@radxa.com> Content-Language: en-US From: Konrad Dybcio In-Reply-To: <20260126-scm-storage-v2-v2-1-fa045c7e7699@radxa.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Proofpoint-ORIG-GUID: uKEBEN7Q4wBxElZRaHPzKqFwALdp3kNV X-Authority-Analysis: v=2.4 cv=duPWylg4 c=1 sm=1 tr=0 ts=697a1198 cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=FpWmc02/iXfjRdCD7H54yg==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=ksxQWNrZAAAA:8 a=vnTlnYwSaAcbgi9v49MA:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 a=l7WU34MJF0Z5EO9KEJC3:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTI4MDExMSBTYWx0ZWRfX5AHK24TO84Go L1ngUpK/qhSoaI2GpuXuMAXFp03/mVI/SUFFZmvuLOQhJ4q6db5vTSqptN/+SwsSNhHljoKa4bi 5g7mB+00rnHBQlbdcvIJExhPLgj1E12MhIG48NVamre5I49fMqNOQDtVPakun9nmjK4ujW9EJAS jn9+3sZOFIEuQgXSHk7DENFMWIo3WYIFOtr76+9g1mz1UBiDih4ztgP5AIihPkdMOWIMRcE13zx gnzqzq6uLx1kmzd9vFuI4cmF1jDiZ1vTBOx6Y0dufJUxjm5LWrAtnf3lDYMoH5mxxMzyPVJgMzD ip+Ph/gzdYIAGQCSNxqQYWJTf/VFFCEwctqPWbU27QvGyv5lLP2nF9FPU9n86y+jJb1jQYDA6zK tL4eygg0uppYjeAqjtvbwPAblz0BHQLWOmtFgwTQ5B3uIFpl7ky+m4zZo5KCPsWCZcYwhfTOFfK wxHj/TNy7JIE/ul99wQ== X-Proofpoint-GUID: uKEBEN7Q4wBxElZRaHPzKqFwALdp3kNV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-01-28_02,2026-01-28_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 bulkscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2601280111 On 1/26/26 12:44 PM, Junhao Xie wrote: > Add infrastructure to support accessing TrustZone-protected storage > devices through SCM (Secure Channel Manager) calls. Some Qualcomm > platforms protect their firmware storage (typically SPI NOR flash) > via TrustZone, making it inaccessible from the non-secure world. > > Signed-off-by: Junhao Xie > Tested-by: Xilin Wu > --- [...] > +int qcom_scm_storage_send_cmd(enum qcom_scm_storage_type storage_type, > + enum qcom_scm_storage_cmd_id cmd_id, > + u64 lba, void *data, size_t size) Please add kerneldoc, as this is an exported function > +{ > + struct qcom_scm_storage_payload *payload __free(qcom_tzmem) = NULL; > + struct qcom_scm_res scm_res = {}; > + struct qcom_scm_desc desc = {}; > + phys_addr_t payload_addr; > + size_t buf_size; > + int ret; > + > + buf_size = sizeof(*payload); > + if (data) > + buf_size += size; > + > + payload = qcom_tzmem_alloc(__scm->mempool, buf_size, GFP_KERNEL); > + if (!payload) > + return -ENOMEM; > + > + memset(payload, 0, buf_size); You're overwriting the data part a line below, let's just zero out the cmd+details (sizeof(*payload)) part > + if (data) (please add a \n above - normally foo = xyz; if (abc) ... implies the condition takes into account the previous line) [...] > + if (!__qcom_scm_is_call_available(__scm->dev, QCOM_SCM_SVC_STORAGE, > + QCOM_SCM_STORAGE_CMD)) > + return; > + > + ret = qcom_scm_storage_send_cmd(QCOM_SCM_STORAGE_SPINOR, > + QCOM_SCM_STORAGE_GET_INFO, > + 0, &info, sizeof(info)); I'm curious what happens if the call is available but SPINOR is not populated onboard.. I thiiiink it should return STORAGE_RESULT_INVALID_PARAMETER but I'm not a 100% sure. Guess we'll see down the road. > + if (ret < 0) { > + dev_warn(scm->dev, "scm storage get info failed: %d\n", ret); > + return; > + } > + > + total_blocks = le64_to_cpu(info.total_blocks); > + block_size = le32_to_cpu(info.block_size); > + > + dev_dbg(scm->dev, "scm storage size %llu bytes\n", > + total_blocks * block_size); > + > + storage_dev = platform_device_alloc("qcom_scm_storage", -1); -1 is PLATFORM_DEVID_NONE Let's use PLATFORM_DEVID_AUTO to allow potentially multiple instances of this driver being spawned down the road Konrad