From nobody Thu Apr 9 16:26:21 2026 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 02B02358369 for ; Sat, 7 Mar 2026 11:42:24 +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=1772883746; cv=none; b=Xv9b74yTXADZm4OSM2zQ3Pv8GKryUFe0fGCEhmsHXi2wz1QZofE0RLvtCNw4pZZtxapJ2CwR0GibbkBiNlVofKxB+l116WYjczM5Z7i2XCQPAtpT0n9oBNuioPTRMRmDGX5SP3V89jcAYq4bOy0yp1e1wgrhHJG5Saes0OJOe4E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772883746; c=relaxed/simple; bh=McPnRZC5WUBs06Eu6S+05ajVf/2AASOXcpXG+shgcL8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OERZzNbUR0yjsokjDPWxZyzZJoq1JZobHLsuql50JL6ef7q2jqOZbw3tzXuIBP+6AtXSEyjd371R1aPGEWhLcnVw/0ekYuxdhO5L4oFhAQ06ub5eimY40t4PE2RO55PmojtZk1M8DQaZQyVToSR6MsGbFsGi5joFIhWMfMh0rk4= 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=D5xH9dh7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZFars3X6; 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="D5xH9dh7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZFars3X6" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6274lkDO1249812 for ; Sat, 7 Mar 2026 11:42:24 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= DyQ60u+QKjNmq9e6aqhBdHEkIcuie4R8oY+qWU1KytI=; b=D5xH9dh762LhVitI i83guZKqD15/hYO5iRREcmno9jDXEswiErwKSxmn+Ozzp9tu0YGwNhMwN/HgNS+R cNHsenMNULEOgzUurieZ1+EDPTLs1pvTTHwKV4i/diV3sdQ3H8qjyTEorsf+Cul9 cYydzxd1Bkzz8KNd1htSVEpBTp3y8xArLNTTRaDHSk8ybNHLjL0eu7UrajEFIi8v 0VPTZ8g5kTEtbXPU1T4HvDfihDLUtzkjJaHVguwAOQOI9ATEgLx/p4BAH2Yyc0cv PzPmlm+oYXFABJuPyWs6Ebh6gkd6XttAItuPkowZNstWTzXJo1wrdJHu4NcMZ/+X t0gaHA== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4crda98j17-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 07 Mar 2026 11:42:24 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2ae42659a39so423607165ad.1 for ; Sat, 07 Mar 2026 03:42:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772883744; x=1773488544; 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=DyQ60u+QKjNmq9e6aqhBdHEkIcuie4R8oY+qWU1KytI=; b=ZFars3X6Xbc6EOJ4ABFTbmsYV4aCjltaJwTtW/MG9LIpvLysLjCV/TLRTTs/wXW2wa FbMtthgBaKZtcztp9/vXdIfZpw/F54fG6jlGxvNGJ6Gu5eXHFNaq5xenhDFnilkvXGQD t7F99dYcb20OYUXM2jckf3qxh1jyIDG1u1nX5KwvdTn3D6SQ6wuOFDby0F+MgLig/rCZ VdMO4CopyUVJAWp5xZNE/MGykWPbJdeZ86AF+qZMmoY0zlANgD5MRxgGquL9nSm/51cC Zt46OktZIWFAw9YT9eXFPgqI+pdih8wJDYoQb69Tp76sASbWpNnsW4gwpjjgqwj4zVMu ltdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772883744; x=1773488544; 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=DyQ60u+QKjNmq9e6aqhBdHEkIcuie4R8oY+qWU1KytI=; b=RVcJfkN4mnu+qf+cQYFwqVZ/ZePGlbQ1HKSpUMIKGw33YFADqaQjw7xJZnMD1/+wrC p0PL50rcsjWts1XUjTwz7/Deh0b+rlDRFxILleaLj8SGB9kULgVRq50gb2xaTbh2hif2 6g1Qd8gGUGinXUV0UpwvP4zza8I4Lc9Mhi7FFasI6wxv2gj9wGvc/lujQZP+Ge0i2dK2 yAHZmsAWzuudgPdTRz/UOa3s9WeC7e3QKjzBp6uq+T6IOy8ut5m1n2sDZtOZSBrfHjRY WlLaBjPL90jKScagvlt3d3Xia2n1KbkSJAd32uQ5CpNs5c7izY/thDPtDvoO1FFM04Kx UYOQ== X-Forwarded-Encrypted: i=1; AJvYcCVr4SAn7tLdklE3koczHrVrzJ3gQ3JwbfuK20+4e2WuzLNjFPcQ4b2b7nDjb43ilzKislpNQicOuvBME7A=@vger.kernel.org X-Gm-Message-State: AOJu0YzJhC6nhoYxZlWbiuq/v43sl67bgvTkGmzB8X5zQ87A+hkCb4G1 XruM9TnMekOiTRKpkfjk8Rssxon5F7h2t6OYeCqv1JJqCcx+zDbyG2IQ5ePhbWQsA791iRJ7x72 lSGcvOMBBWOxk0PCMrG5Dffo2KWhf6BO0KqanuKXdKYlzj50kcVIENGiOPP62DakT5Ic= X-Gm-Gg: ATEYQzxeekRDv6M+eQG9YdVuOYNOSXEljz0UmfTypwI/jQkNN4lcnO5EzeRimoa68Q4 d+6WW8xYmFhI9lJXsUFUK1ylBVKWAf6kuZP5dsIRGG5dp69kpZMYfFsAYhPRLk3OywPL9cIQ5jD Au8slVK2Uw8oAqoPloZfRWsvKYY96nndiYZF97tmMOh24GE9HHgOeVMeo3d1s9zrs4ynqI8y+mq yYkOV65MraYFiV0OCyARvqDWgEmbhkhEmpbJM6Qi2IkCvynqOxyZ+QiaQezzmgfWjSe2WBBdI8v pkpmC+xPgzTBNnpS8GRoraZ5TM0siW9LWMVQwBCNi9FVUehywVGfClpuKjehQVBQWRs9hyZkCU8 GXp1aEgkOJQpTsW+WdRZIJykD2a+8HuONLZW5cGQGg6lkr31FlHU= X-Received: by 2002:a17:903:1968:b0:2ae:8062:8362 with SMTP id d9443c01a7336-2ae82266d9fmr51669105ad.0.1772883743682; Sat, 07 Mar 2026 03:42:23 -0800 (PST) X-Received: by 2002:a17:903:1968:b0:2ae:8062:8362 with SMTP id d9443c01a7336-2ae82266d9fmr51668875ad.0.1772883743238; Sat, 07 Mar 2026 03:42:23 -0800 (PST) Received: from hu-batta-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae83f8c713sm47996145ad.66.2026.03.07.03.42.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Mar 2026 03:42:22 -0800 (PST) From: Kishore Batta Date: Sat, 07 Mar 2026 17:11:27 +0530 Subject: [PATCH v2 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: <20260307-sahara_protocol_new_v2-v2-6-29dc748b5e9c@oss.qualcomm.com> References: <20260307-sahara_protocol_new_v2-v2-0-29dc748b5e9c@oss.qualcomm.com> In-Reply-To: <20260307-sahara_protocol_new_v2-v2-0-29dc748b5e9c@oss.qualcomm.com> To: Jonathan Corbet , Shuah Khan , Jeff Hugo , Carl Vanderlip , Oded Gabbay , Manivannan Sadhasivam 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=1772883713; l=3692; i=kishore.batta@oss.qualcomm.com; s=20260206; h=from:subject:message-id; bh=McPnRZC5WUBs06Eu6S+05ajVf/2AASOXcpXG+shgcL8=; b=/todAhtMbh8tFvxjx2w9XFXvnGlfpGJTYVN+29dh4Z3dq17sjAF3Pro6/6WgjiZnJeVmxJVQ6 LqwCNEkdXMcCqIkt4DUmOEwvVVCLoyVZAnqiZwj2udbkqLxXIQnmFXz X-Developer-Key: i=kishore.batta@oss.qualcomm.com; a=ed25519; pk=vJo8RvTf+HZpRLK2oOIljmbn9l3zFkibCGh+blaqZCw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA3MDEwOSBTYWx0ZWRfX93Sc+GhMmVIo gwrLBHtXlXuCqUKmz4G8yO2UlQjbD02yUXVrcjEDvvXck6Xbrx9j31Jir9q4JKLeEMywzy5YcYM IzglT/2c+hVd25qEsb9QKeylzKE8CwT2IVm/t9txNRC2a1HfJoFD3xjzXOSRGq4RpNbCmsZ/+5c Xzni0hDWnMdFwLkeCpBi4eOC92q6Js8YSGlNsuPtC4qh0NTXAk2Mgz57TKK3E+zrBDPx0dfe4Ib PuCIQXy5wR68kvWiHJ9DPUKpChvxkG/yT2YPNalEq8ecq5DENlPY5nmEDdVb3JDmB8RZZuAQAWy GgH0Rx8rHvTjyzHK9rtgCwFn5/XuwD/ZBDs2H9g96toxW3nK7+aCbrBhUduVCeS09AWhqBAz7Sp aqpHCQt2000G1PPGEGn4Ytf/sAn3Xcaewcf4n4Yq1Y8Q8v7GxnTZIE3PGG+GIOlmcVElNdmGynS 5fx0UB7SeG6854uiFhA== X-Proofpoint-ORIG-GUID: dDYr9ZSLL16S5VrqSkIJIw7G61i-a9ax X-Authority-Analysis: v=2.4 cv=QZtrf8bv c=1 sm=1 tr=0 ts=69ac0f20 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=ygoVp7MZ-9MK0Bp9ExEA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-GUID: dDYr9ZSLL16S5VrqSkIJIw7G61i-a9ax 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-07_04,2026-03-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1011 bulkscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 phishscore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603070109 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 | 56 ++++++++++++++++++++++++++++++++-----= ---- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/drivers/bus/mhi/sahara/sahara.c b/drivers/bus/mhi/sahara/sahar= a.c index 73ae722122a35b77760a4816bc60e6607aa53455..19fb9cb78fbecee047ba2767404= 3c0940e749195 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; @@ -319,6 +321,7 @@ static const struct sahara_variant *sahara_select_varia= nt(struct mhi_device *mhi =20 static int sahara_find_image(struct sahara_context *context, u32 image_id) { + char *fw_path; int ret; =20 if (image_id =3D=3D context->active_image_id) @@ -335,18 +338,47 @@ static int sahara_find_image(struct sahara_context *c= ontext, u32 image_id) return -EINVAL; } =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 firmware_request_nowarn(&context->firmware, - context->image_table[image_id], - &context->mhi_dev->dev); - 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 firmware_request_nowarn(&context->firmware, + fw_path, + &context->mhi_dev->dev); + kfree(fw_path); + + if (ret) { + ret =3D firmware_request_nowarn(&context->firmware, + context->image_table[image_id], + &context->mhi_dev->dev); + 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 firmware_request_nowarn(&context->firmware, + context->image_table[image_id], + &context->mhi_dev->dev); + 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