From nobody Thu Apr 9 10:36:20 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 BB2B83E5EFE for ; Tue, 10 Mar 2026 07:22:38 +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=1773127360; cv=none; b=dHk6cvWPHVtFXftz9Vgq+3Hk6v8krb7a1ayW2p9SbXn0DJiz3ddnkJYRiND0it9v3EP2UzH9HaUYrrFvsfxaSZUHbQDLtFlULlbhkabZ5eINi/VaKrZkE0byr8LUBls0s7TbbMRjKnmnn1CWNV87H/o7lLySNB4q6Ja+zo+bXmU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773127360; c=relaxed/simple; bh=Ap7TaXFPFmY7vxQioEQxXOj5gqr4VqCldx5s0gGK/Jw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BJHH2Y6u3l9TVfTgwWzyFNIw0qCogiMZ1K9l560A/xU4hh9Wh3gSGf07GAwJ3m4yQIOSe8+7iZT+PhV/hNIhSwDSYvX1utjuIeH9AMvXQVzHVfkNjxDC1dyEb81yE2U/0HRHsaVe1r39qVg9z+05xQbpKtlkmXUUmKfzMnY1Yuk= 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=hiqGaWm4; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=c7I5nZ8l; 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="hiqGaWm4"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="c7I5nZ8l" 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 62A2ES9e2363765 for ; Tue, 10 Mar 2026 07:22:38 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=hiqGaWm4wM/zo3m5 4B8q15B09kHMejvtUdfuy/Z/8rTnEEbOVRPm3wXG8sFkfoyywcMrkcDXsrCCYUTd srUqqhQr2B/OrjxtmsRaIFuKM489ITCnlsx9ekFFTAxcdmfvf3Pio+B/iSDZXk+K CK94vRV/HLxIB/4wWU207FlyqJ+q9q3g0B3yiNWXpWOrBQTTcu7u7kOpx9sAPK2p bdzR6/EuD16zZ0pP14CsrnVnoROMYZD7/DUPVS+C+nQjpYZzf48GLLuOj5UVCQE1 TgVfISsfx6H7nSUPH1W+Qx0gp6/iAvgDRMQgSxHtKzTtJ/PwbRIC3SfbAXVi/ytT DnTTdg== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ct032b22t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 10 Mar 2026 07:22:37 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2ae42659a39so555989295ad.1 for ; Tue, 10 Mar 2026 00:22:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773127357; x=1773732157; 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=c7I5nZ8loE9i6ZQgMMxiSyhPh9Z7oBlJ4Rwc3okly7d03biW6g0r3U9QaNZO2z4r5h y6UhU9D78EOmFKPt9Le6KC6WiigmBKsltZDcfxP2b5byl0N35cIvgto60R206qR2znvi CCIX7LTqyig3wf76n0LpT3lnM809SjQRg2dD02o/cjnttXOrE1cLia5Je2J5z86XB8/y m9jIncjyZ4+wS1AeFRJt7wYKMuDjMiZLdf1vi2Jdtjurl+laXTcaFIqA9Oseja8pLvDV Z7cRDycBqMRXAMYZPed4cdIQWQ0M5GVzCjNnW0uf0Cfi/rywCXsHkGgru3Wi0o3Bb2oA HzYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773127357; x=1773732157; 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=ZAjAEQjJOesyZzivNCbFQhFBN4mXheNELJQvWscMVrScrHWQUEt7sJefme4AuF6dqg o4ZT2fv5e/E6R8WKm5PDkwL14PmDnUxO8mIj7v0TPSU9sXCmN2FjL5HbGwrB19j5LEk1 nNDEhmb0AMRYdqK3TmxRJ/vz80hxbZVEhGR/giPWlRKMwyHg2wRS6YVxc42DBWf3lbiA EowTgXF/9ljWxYjpsLrtHQQtINIQSOiL//Toi6VqHCN6wVIh9oRLbsRYzcbHEQSGP5ee 4gYu10R3OqhIb1cORKKC9ws7X2k71MsAbFpYQhHq/RCHMU3Xq6mWpW80CZduCWQ/kHzG o/cw== X-Forwarded-Encrypted: i=1; AJvYcCVAnXyVQTKygkoXhHu8dW3K0HW0UPGjxILsUvubZb2M0A2yNSHLwBSb9/qNi9ABL7aXrcV3/3ci4P5ELLw=@vger.kernel.org X-Gm-Message-State: AOJu0YygUkALluCumCPwD6zqDoOK08eXMYkbgyzoU+8kLCeCfadkSNd6 8/thGJ/pR1HhBRizr2jTC06f4ZkGE8zPqaqG3LNiFFPgWY1oehVLCkveNx4JRbND2rG/S0ZCAfC fX0ap0SrL+PXABMZW/bIgyiV3KMe0W7YLRf+59Z11gfx7azp43KPoq+b2aPOCXOSL/24= X-Gm-Gg: ATEYQzwWmn77EyOJOJ7YeFvr733N/Z96zk7RQZv1pwIH/XPmjvr/dhixtwRi3GZhjPH 3hPt6kQm0Db0aayx83vv7zdXkB8xeZwAaASIN+bwLyPFbASRjO6whraRoiwwq8aKNpGHkZHSFRJ 7YtAf7oAH6E1x/HcoSHzfREYTG4wVeA2g6sIvkQ/tq4XwTMXwZwhRHvGFbuq7UhdI0JABIm7EHQ r7B0PctIpBX+TlMEvJ/uBYP8XTTRCdJComv/+tZBKhIFobR35jNpWnc52/QUw4kTtG1j1mN77EC dEJ8aUqb94huwUsAmsTT+f7n/PmAqD0EkhKEDiTeTsHMDkXSUZ+MgIeL8JLRhS1HCcHZfDj+HYW iI6kiX2XYqp5k+4KYnkIF1ByQrL3FpjC0SFVzq+tpKVzmuy8MyZI= X-Received: by 2002:a17:903:3510:b0:2ae:57e2:9b32 with SMTP id d9443c01a7336-2ae823679c9mr142880675ad.8.1773127357229; Tue, 10 Mar 2026 00:22:37 -0700 (PDT) X-Received: by 2002:a17:903:3510:b0:2ae:57e2:9b32 with SMTP id d9443c01a7336-2ae823679c9mr142880315ad.8.1773127356698; Tue, 10 Mar 2026 00:22:36 -0700 (PDT) Received: from hu-batta-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae840b2e9dsm185200325ad.85.2026.03.10.00.22.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 00:22:36 -0700 (PDT) From: Kishore Batta Date: Tue, 10 Mar 2026 12:52:03 +0530 Subject: [PATCH v3 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: <20260310-sahara_protocol_new_v2-v3-6-994ea4b0d5ad@oss.qualcomm.com> References: <20260310-sahara_protocol_new_v2-v3-0-994ea4b0d5ad@oss.qualcomm.com> In-Reply-To: <20260310-sahara_protocol_new_v2-v3-0-994ea4b0d5ad@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=1773127328; l=3154; i=kishore.batta@oss.qualcomm.com; s=20260206; h=from:subject:message-id; bh=Ap7TaXFPFmY7vxQioEQxXOj5gqr4VqCldx5s0gGK/Jw=; b=jGY5fnLsLQTR3pxOzCMF05KRfsJnnBISbNlEOkTYIaDuFNBt328cRi62kblnpXDbp/jYHl6h3 Qjm9GgWdCf6DGz76s0BGNvrnj7HqC45wHyAkcYNbIM5RGCOe+hQ0tPX X-Developer-Key: i=kishore.batta@oss.qualcomm.com; a=ed25519; pk=vJo8RvTf+HZpRLK2oOIljmbn9l3zFkibCGh+blaqZCw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDA2MSBTYWx0ZWRfX5WFJmS74S/NA jysmuqikzI3Kv3I6i95/S0u46kUWqiO3Yz3Y9cffge+6iheShMwIc7jJX4JkRIpS98ierHzGQ+c A9fNG7pEzag1id8/z3A+nMUGaDmN2cbUjzx3UtYIMc/pcUNcfeMiLNQigE/vR5X/+FdK4nhD1zx FhowTJUZvOx1IIMN46JZZiZLMLjcL4likpS2SzO/GHryvgTYbuvLAfiv/lRq4ZrquXyFpVlHZbY Y7RK05/aL8WoVt70B5VOrFUJEDUSiQZ1OxsHCREzKo9i9ZDLR0AjwuBJWgAsQDuEySrImmZ+DYM 2s695gV8QJm+ZG6bqrykSDwxUIkUH/sFXQqg/10ZXFyjRXNOogL+hDkye13qEnUe0QdMXuGDkoG LhYyWqpZC4MfKqGNbtpBD2ICnsvs7F3fb4BrC65HT16NY4bZIwXNCPUv7gbxhrvRuLi2AjP7OZy Iz4KhIdL+XC/Lhl7BtQ== X-Proofpoint-ORIG-GUID: v-YbuzArL8DV4tbb-oQ5oQJtFrwtIrxM X-Proofpoint-GUID: v-YbuzArL8DV4tbb-oQ5oQJtFrwtIrxM X-Authority-Analysis: v=2.4 cv=WtEm8Nfv c=1 sm=1 tr=0 ts=69afc6bd cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=ygoVp7MZ-9MK0Bp9ExEA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R: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-10_01,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 spamscore=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 phishscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100061 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