From nobody Mon Apr 6 16:31:56 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 592F732ED54 for ; Thu, 19 Mar 2026 06:32:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773901936; cv=none; b=XBRDakbCWuqPbIY5trL927km+5Mynvcreg7cuL1C0FiYaenp6BZsvPqI+S6lMSt0GKCOsWTNDMGJ4r039nqZfR2Alp7BZ0yMP4PbmOivwiCSkn5Gn0DIF890MNbe6/XngutIvT44xvm/ZdvPHnopjWl02iiB/OBgItqirkgIEl0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773901936; c=relaxed/simple; bh=Ap7TaXFPFmY7vxQioEQxXOj5gqr4VqCldx5s0gGK/Jw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oQoWBFtGnV719cuapl5V/AHCa7xzc8MJj7F+QeGqrzdDL9ePXaQxDk8YGeM0V+pcErpwFKu4vEjZNcRk//jx7sano0aM4QXrds/lHQVMxtduk/iaw8W3CotWouoS7N2D4109yz+Np4UG4Ne76boFTQ2FJiyDmIpWmMZhvO0E6Ww= 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=d92Vgpa8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Od/2QhmS; arc=none smtp.client-ip=205.220.180.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="d92Vgpa8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Od/2QhmS" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62J5Xkhd3172495 for ; Thu, 19 Mar 2026 06:32:14 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= AWRwk+1b+0EakwPo+UxNIgaxtaiGjN34TJYH+DHiZ08=; b=d92Vgpa8NFRAuX3N +nVgU9lUwaxEKaSZTk8Ip21p7jgIRnlFt2pj+YV/dKyykHtdo44AtPfZlX56lW9U 5lqSlEvCYqHloW2Ap+4rvIyGCCm4+zPBWNAFrIyXgCj4MjGZWQ3jLz7Oe8fe/hjw EOrAsa1/+1KdJMcPREs7jpW1vHobAUthvsLKwEXYFmpUQ4KIimafgaAIrf1YBace lNtth1WqAR20221Qv+DLLHhXVepNYmI+4Bj6cLOkGvzubuLWem/ITj4o0L8nEQmb WsvY4/cf1rNx7Uwr7i4AkUoR+knYHPM4/HiXyRTFjle8QrzyMnTyB6VHL3YcqSrU 8AHjQw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d00f9j1us-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 19 Mar 2026 06:32:14 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2b061bf1a2dso5159965ad.1 for ; Wed, 18 Mar 2026 23:32:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773901933; x=1774506733; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=AWRwk+1b+0EakwPo+UxNIgaxtaiGjN34TJYH+DHiZ08=; b=Od/2QhmSkwe1x9bzDKAtJGAWo4w3hZtB7/PgPlTxW8sIvH9CUTveuJnWT5g2PDVXj3 ReK2aqvreUNEpb0Krw2rR3tbGyWke350lXRQUh6N9gT2mmJ0c8uzyzmY/xgxb5haFAUL oBHbKE333hB/cnhlOUV8pDiyPfZBDDv93MSkoTPnLI/V3z5ySBPfZzkc5vcryWdSH4RM 3aiqeQj2IYa0SBf5DUHy9ytEgk0W0H7d+jAYfOtY/UJwSKek2vUqP4XC+aqll136IYE2 XpH+fCjE2xQYRhXCeFxgmentl2bAQa87kltLB+rtjC+rIan92BeExLK/31JMwOlqOEMf wViQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773901933; x=1774506733; h=cc:to:in-reply-to:references: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=AWRwk+1b+0EakwPo+UxNIgaxtaiGjN34TJYH+DHiZ08=; b=JRKNYrU7qTaDp0j/5PpybRe5IUL/ChhJ6KZRcmtzGtmf7qzD1WEL50UJoh83B5Iyjb nXDFxH2g4/cpHzVovELaIoOn4+jIThtXg/6PXLiEexp02zWgz8O7qpcp73KbOTbAwkRR TkqqryC1LaFNofIcr46CCPmU6rip3eMo/9iAdLOEaozsvFvIqNv+c2laXeWHmhRBw4+y hY+q1Kzw4nJLohHQCsnW4pLAFD33ERHc1Fm0wYM1DVfp1F+IDT87tsmmVm9WeOyPaPIO 0M8Nm04tOHh5Yyf6deHMeEaMiuAKHWpQXbKst6wBEyLQigzNXKzQY1hEST1NtxJU7jUp lSjQ== X-Forwarded-Encrypted: i=1; AJvYcCX9JnGIM7k6melJkpsupVSvR+vLGnlhdk3QvyeGsC2Mdq9pUmR9rGbObP6xZA+0CoarUabHTYZxDSXsjWQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwLW2cm+FOkHV/Q6q+jSXq2ihZmc/7Zm0THm1a8AHStAF1g6OS9 XIVMv/LxPplC/U3DslChLY+h1qKvz5sYWA5btTZxeg65vF3xV+Ap6d+BfpOxIbmS2mTIvPlnJ7o G6iy0MVZ0oaOaNR9CQOmAQLKvWQ5wye960S3f/jxH9V5xhllT52TC1ivvdmHNBcs5vYM= X-Gm-Gg: ATEYQzxMJC8FkSJwqv5V2sa6Xyrq2irlcko56VnX+2/sBxOLJuBxjw4ROQaAEm+Ux1L F9LKiez8uB2T8eBdthyxBnDYrkr0mI7k3tEw7UlzgulCcf4+ocIHtzedJ9SggznGv4UzAjUcpEA 3Ro4THWc5iMZV6cfTgx2wjlFTWau940WtbUGeyFjBPviD2KOa1HXVaJhcGGUuyUkFYW5AqgsWYc oUBaZ8LbtwD22GZRsB7TcBbC/tk1SbQgycsXd8kDMtsJirS3PCvngbdZYpBHvtjRMV5urmSyMf5 /wCIElJ5L74PXKtnusTl4N42FUpFmuqpVL3sxNdVuv/9/Y2VZNZu1LCRuLK/f83HbhyL5gj/CIa N1+rba5Dfa1i4WM6soM8Qd2nOj1nr8hRhiR3KYpf5R0mI4PZOcXA= X-Received: by 2002:a17:903:1a67:b0:2b0:48ca:a641 with SMTP id d9443c01a7336-2b06e3c3abdmr57658525ad.25.1773901933445; Wed, 18 Mar 2026 23:32:13 -0700 (PDT) X-Received: by 2002:a17:903:1a67:b0:2b0:48ca:a641 with SMTP id d9443c01a7336-2b06e3c3abdmr57658205ad.25.1773901932969; Wed, 18 Mar 2026 23:32:12 -0700 (PDT) Received: from hu-batta-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b06e603937sm48572485ad.57.2026.03.18.23.32.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 23:32:12 -0700 (PDT) From: Kishore Batta Date: Thu, 19 Mar 2026 12:01:46 +0530 Subject: [PATCH v4 6/9] bus: mhi: Load DDR training data using per-device serial number 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: <20260319-sahara_protocol_new_v2-v4-6-47ad79308762@oss.qualcomm.com> References: <20260319-sahara_protocol_new_v2-v4-0-47ad79308762@oss.qualcomm.com> In-Reply-To: <20260319-sahara_protocol_new_v2-v4-0-47ad79308762@oss.qualcomm.com> To: Jonathan Corbet , Shuah Khan , Jeff Hugo , Carl Vanderlip , Oded Gabbay , Manivannan Sadhasivam , andersson@kernel.org Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, mhi@lists.linux.dev, Kishore Batta X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773901902; l=3154; i=kishore.batta@oss.qualcomm.com; s=20260206; h=from:subject:message-id; bh=Ap7TaXFPFmY7vxQioEQxXOj5gqr4VqCldx5s0gGK/Jw=; b=P/EiG/Ox8r4P5G4oR1MFzhur+NXMa2Gi7t1dDjAqXLD1FDiqn++C0jyKd+T01VGQHN0sFZPMr aMqQNJJLI4PDL60h+ifxRx6Hyyb0ReTpHexQOU9CjbMdJbAk1/mz+bD X-Developer-Key: i=kishore.batta@oss.qualcomm.com; a=ed25519; pk=vJo8RvTf+HZpRLK2oOIljmbn9l3zFkibCGh+blaqZCw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE5MDA0OSBTYWx0ZWRfX/GdFckFBM9ap BMdzq3ll853b33V7FhclORL9REdgcfFlaZ5++jlDY1bLiAK+LPPFopLqn4p+/NAzSb9wbagpf0x eD1L9fH7CFddk+qGW30KNpb1o3gvms68jR1zQAzSQ3ec/xz7Nrprc+z8cL8DFXlPZtF9tggMpf/ CKqEQh6FfXIwrjmITI2JP7HbyWzjuV/s9hSuQwOvx7LKdPX+tq0gL2uFg4pFovz1YZqmR/b5bzp wF1YMmEN0t5XSkrwTxNiHZz/RIYNJaDbK+SRpg4dgT6o37oLpEbX+S8KLL062ywyxI6ZG7uhYd4 gm2Czx5NBIXnzbFFkrW+99oPXUEM4+EZNXOgzXPaYmzRB+jzhXi1sRGo8epZyX2giKj2RkMqvAk FUueOpzTGM/NyUCCqYupc0FtMTsJL+NbBbcFj8rY7yed5AWkBQu2cEV6BXYSrqtbUAp7i2xz+QI T+6TKRAyDkQvRc++UEQ== X-Proofpoint-GUID: EC31skB24w4nRMgT-qKtw4yo59grDFX6 X-Proofpoint-ORIG-GUID: EC31skB24w4nRMgT-qKtw4yo59grDFX6 X-Authority-Analysis: v=2.4 cv=MJttWcZl c=1 sm=1 tr=0 ts=69bb986e cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=ygoVp7MZ-9MK0Bp9ExEA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-19_01,2026-03-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603190049 Devices may provide device-specific DDR training data that can be reused across boot to avoid retraining and reduce boot time. The Sahara driver currently always falls back to the default DDR training image, even when per-device training data is available. Extend the firmware loading logic to first attempt loading a per-device DDR training image using the device serial number. If the serial-specific image is not present, fallback to the existing default image, preserving current behavior. This change enables DDR training data reuse when available while keeping the existing training flow unchanged for devices without saved data. Signed-off-by: Kishore Batta --- drivers/bus/mhi/sahara/sahara.c | 47 ++++++++++++++++++++++++++++++++-----= ---- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/drivers/bus/mhi/sahara/sahara.c b/drivers/bus/mhi/sahara/sahar= a.c index 4ea14c57774f51a778289d7409372a6ab21fea60..0a0f578aaa47ab2c4ca0765666b= 392fb9936ddd5 100644 --- a/drivers/bus/mhi/sahara/sahara.c +++ b/drivers/bus/mhi/sahara/sahara.c @@ -61,6 +61,8 @@ #define SAHARA_MEM_DEBUG64_LENGTH 0x18 #define SAHARA_MEM_READ64_LENGTH 0x18 =20 +#define SAHARA_DDR_TRAINING_IMG_ID 34 + struct sahara_packet { __le32 cmd; __le32 length; @@ -365,16 +367,41 @@ static int sahara_find_image(struct sahara_context *c= ontext, u32 image_id) return 0; } =20 - /* - * This image might be optional. The device may continue without it. - * Only the device knows. Suppress error messages that could suggest an - * a problem when we were actually able to continue. - */ - ret =3D sahara_request_fw(context, context->image_table[image_id]); - if (ret) { - dev_dbg(&context->mhi_dev->dev, "request for image id %d / file %s faile= d %d\n", - image_id, context->image_table[image_id], ret); - return ret; + /* DDR training special case: Try per-serial number file first */ + if (image_id =3D=3D SAHARA_DDR_TRAINING_IMG_ID && context->fw_folder) { + u32 serial_num =3D context->mhi_dev->mhi_cntrl->serial_number; + + fw_path =3D kasprintf(GFP_KERNEL, + "qcom/%s/mdmddr_0x%x.mbn", + context->fw_folder, serial_num); + if (!fw_path) + return -ENOMEM; + + ret =3D sahara_request_fw(context, fw_path); + kfree(fw_path); + + if (ret) { + ret =3D sahara_request_fw(context, context->image_table[image_id]); + if (ret) { + dev_dbg(&context->mhi_dev->dev, + "request for image id %d / file %s failed %d\n", + image_id, context->image_table[image_id], ret); + } + return ret; + } + } else { + /* + * This image might be optional. The device may continue without it. + * Only the device knows. Suppress error messages that could suggest an + * a problem when we were actually able to continue. + */ + ret =3D sahara_request_fw(context, context->image_table[image_id]); + if (ret) { + dev_dbg(&context->mhi_dev->dev, + "request for image id %d / file %s failed %d\n", + image_id, context->image_table[image_id], ret); + return ret; + } } =20 context->active_image_id =3D image_id; --=20 2.34.1