From nobody Sat Feb 7 06:36:01 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 29BC4324B3A for ; Tue, 13 Jan 2026 08:01:25 +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=1768291306; cv=none; b=Uubj1N4WVKLaKNPje9XcMUmLZH9Xc2zh+cic7h9SMmdMCVqMXqv7465ZWf0LtuRGBRPU72jXz+lneG0btWCoMSHo4k70OP5vmSR4bh/j7CATes910Qc79oDwTamwbGOj4nmPXIqwGEKAF5VqLqM3SYFp93ILLclqemxlTBQX05c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768291306; c=relaxed/simple; bh=XK8gpOPgN9rwsWFcr91jX5z+ISqBvoVw62l63nwUkhI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hqxW1xhCsAJPRYjM+os7QCH6u4F5wdIMjh1rgM2bEHdomfmX3eTX2bYObX66bA7LkKwZar70rU4TltKQmbxJGa7S8l3g3cdBRNBLrSKBMlwkkCEok5gc3qd0xN5ERitEe2K4dq7oWaGGhUUwXV5l/+GU3uMhQVP4oPb6dkgY3Fw= 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=a/Io43aU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UYVLgVdG; 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="a/Io43aU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UYVLgVdG" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1thnQ2752099 for ; Tue, 13 Jan 2026 08:01:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=QAjCo0V1My5 AY/MhuD/dD54xGY8gMH823+BlsIXPwOY=; b=a/Io43aUbWDAjLUSqa2jHZsqcMf Yvt40pKtbp8u1GosQzXugCwsrX5A26EVssjLwP2KGALx6GR/b5pOKZvE5KnUNnIc 9imc4YUMpFluhGDvivbEC/dFr04fy/H89ls2PHSATaXDZIudYBneAsvPnwzZrP/3 2nDtJdfWsz6bmlM+u1L9E5mXCXWXd4UkcTml7eWBPfwM6nUmfDa+aeWgPtHMgHJn KB7UQ/+8T18ejx+GMO4oTgJPQYrGErMIYU6fDeWCQRz4K1PXS/UtBYb2oNTMyvH9 3bxTCJaI7ZaAEQGT5vLCgu2Gq5HLJ2oguqak8ZM7RxA0SyhsX23Dw+ZMh1Q== 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 4bnctjrwxb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 13 Jan 2026 08:01:19 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2a13be531b2so75322695ad.2 for ; Tue, 13 Jan 2026 00:01:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768291277; x=1768896077; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QAjCo0V1My5AY/MhuD/dD54xGY8gMH823+BlsIXPwOY=; b=UYVLgVdG5DhUvyr98Ni5/NV7YqBJFtuyusLjcady8NxtT+jEtwd4aqoSPk4abSZR9s ebJef1x+8F2VGMTdGGS7UW4txxwolG/Dm6XskfbYwW4D0qLWdy8GNByH2awDkO9Ui294 9Rb1R599Ujz549A46H6sEcA29Dy/0zehoqk38CMqU+kQsdY8HY14ZKZoDXwZ1VX5bk/f bBiLzhYE2oVsb0VsHj8J71AkHf9hp6TSi/9jG+BMJu1YJVsGTEOjDeWZXa9rt9xyZdiW jC+o1jR8DmV8fQTN0sDK8e1YNUN5IWEggWCO9SRvbRX5aQUWi5ZqnnzQqSKxMAqhyCYf 4W6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768291277; x=1768896077; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QAjCo0V1My5AY/MhuD/dD54xGY8gMH823+BlsIXPwOY=; b=VKQIUpHCfY7t62F0CyLSAyxIhy+WfN/Hw34VtGp2LhZECLTJf3ypcVYalJvRKxXD8t ga++9fGo78Oj5wUj4Job6bEGLBBiijc0Zd2t5K8V+9zBoLKIWOZ+/SKqShQ/K92GPY08 MInr8hnJ2bHGiFsf2+R+S9R8Umn+4q+IiuXWloAvut0WssPLKiosRcR4+yethKZKXF3y wtnN+lVDJ4vgC+OHG+VyVKw9UnUmCPiMbx+qs7DjpawrBL+FK7hRctw2Ps0tGljPk1ky 9isx7LEVruuwNbQVmJytwjFBXBllzBF3ATJS+8XTDCu1JVVswj47+yChZtid+/4fdbPs UYqA== X-Forwarded-Encrypted: i=1; AJvYcCWvkIQJXRbnkxQuVQHy7bUHtGzlmRZ+YqW5HHNevhQuPGgh3Nywznnc3P3CUMxE0IwtzfzzDdaDZyCcQpg=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4eQDlCDaNRfDe2Q7HVvsFQtVFYS9K/JS/QgT2x04AZRqSddZ4 sWsSGa3Js1ClJ/dkiPAWuM6rKm3/OCYoD6ltykKxcXxqoeDLtwrUke35BdQpigy8paLGk7C87Aq +ycNmJRvy7y/i5+cXYq4ve73NrIJ5P/48cab5e4u0HsGWpknSrOt42J15eIot9MdjL4Q= X-Gm-Gg: AY/fxX4Q6Lz8N0q+7hcdFXBzfdPEofi/pa0I/+eC8iDB41VEm/NXL0M+auUkzHdIMwP mnagTI97mFyZ/ZvoPoevJ2xe17o3E9+RBnk7eczSpK+E43ccktJVSNAk8j6RekkzQC+dUJMAQC6 p6OVkMe0E9JgOCSYDmffQA73joCe1lCPV3cZYpB6nss4QPqRHXNxCjutae7KJnLkgmbvPOKkyfo to2ZyLI8RksZsWUiWXxkULYxo8zt/8mLPNN33Nmc47fch11KVZKKk4VpKB+CFQETlaxPvH7Rk9s MSHnvv72yMY78utPn+6W/mSj9x81FKivfNuVbAleuJYzQDeQJwBcTrxsubz/vQS7q3mM3yrXGoa LlFbY/QTD6v1ywDIqV2IvNkyf9XPQFsuOAhGVUYIF X-Received: by 2002:a17:902:c406:b0:2a0:9923:6954 with SMTP id d9443c01a7336-2a3ee48fbf3mr175858955ad.27.1768291276922; Tue, 13 Jan 2026 00:01:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IHDpZkrucyrRCmXeXMPckJQy7yAmhXICk1uU3T0FskJTRg50++uCHNweWpQjhc6hAOTflTUaA== X-Received: by 2002:a17:902:c406:b0:2a0:9923:6954 with SMTP id d9443c01a7336-2a3ee48fbf3mr175858595ad.27.1768291276426; Tue, 13 Jan 2026 00:01:16 -0800 (PST) Received: from hu-rdwivedi-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3c48c15sm191132725ad.27.2026.01.13.00.01.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 00:01:16 -0800 (PST) From: Ram Kumar Dwivedi To: mani@kernel.org, alim.akhtar@samsung.com, avri.altman@wdc.com, bvanassche@acm.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, ram.dwivedi@oss.qualcomm.com Cc: linux-arm-msm@vger.kernel.org, linux-scsi@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH V5 3/4] scsi: ufs: core Enforce minimum pm level for sysfs configuration Date: Tue, 13 Jan 2026 13:30:45 +0530 Message-Id: <20260113080046.284089-4-ram.dwivedi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260113080046.284089-1-ram.dwivedi@oss.qualcomm.com> References: <20260113080046.284089-1-ram.dwivedi@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA2NiBTYWx0ZWRfX82bN3jZ92vnJ yMlFN8WP1f8ErfMpEJeNJtcatrt6CWWD3gqmo5tjbhhFRULpME9p7B5CFJjeAfOQaLVhACaeaEo fJV6A6SgQwklYvGi6Q0Wjv68S7rv2BkT9fwe3M/Bh/R/MWMgEdybpVuhXnxowgtjkU73X9c2Aee Sh1Q7+/fXRNeRJgksDxfbj1I0uuOeuutjPPBeMTikm7Xh3oOoxVU5fOoAzqO2Ofy1ZkS6ytG7J1 fLQD4aHrSFg0AGtz5se/BD1Fe5dWuI+ksQz0mO5tQLNcovCNNf7X+daYyZEffD6oi8PmtvYYxkc g26Xml0kOcvzynbR0WSjAPqseDkpbDcVvK/45RaeGaemI9ntBJgAm+XWFz7W5rXunINLkUK4GrV h0/tgVDUjnJmSI/0+VmW/lpdsCf4CZAbVXDMrFFdVkRpSnV/IQQuWr5LZ0y78ULUS814d3DN0yH jUTSCRuJXY+tl4gMe4w== X-Authority-Analysis: v=2.4 cv=Ls2fC3dc c=1 sm=1 tr=0 ts=6965fbcf cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=chdQYeBgf-UdQiD2u_cA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: tP2VVLv0f2KWsAPrjdKwXoCRC2Mt3roM X-Proofpoint-GUID: tP2VVLv0f2KWsAPrjdKwXoCRC2Mt3roM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 clxscore=1015 suspectscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601130066 Content-Type: text/plain; charset="utf-8" Some UFS platforms only support a limited subset of power levels. Currently, the sysfs interface allows users to set any pm level without validating the minimum supported value. If an unsupported level is selected, suspend may fail. Introduce an pm_lvl_min field in the ufs_hba structure and use it to clamp the pm level requested via sysfs so that only supported levels are accepted. Platforms that require a minimum pm level can set this field during probe. Signed-off-by: Ram Kumar Dwivedi Reviewed-by: Bart Van Assche Reviewed-by: Manivannan Sadhasivam --- drivers/ufs/core/ufs-sysfs.c | 2 +- include/ufs/ufshcd.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/ufs/core/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c index b33f8656edb5..02e5468ad49d 100644 --- a/drivers/ufs/core/ufs-sysfs.c +++ b/drivers/ufs/core/ufs-sysfs.c @@ -141,7 +141,7 @@ static inline ssize_t ufs_sysfs_pm_lvl_store(struct dev= ice *dev, if (kstrtoul(buf, 0, &value)) return -EINVAL; =20 - if (value >=3D UFS_PM_LVL_MAX) + if (value >=3D UFS_PM_LVL_MAX || value < hba->pm_lvl_min) return -EINVAL; =20 if (ufs_pm_lvl_states[value].dev_state =3D=3D UFS_DEEPSLEEP_PWR_MODE && diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h index 19154228780b..a64c19563b03 100644 --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h @@ -834,6 +834,7 @@ enum ufshcd_mcq_opr { * @uic_link_state: active state of the link to the UFS device. * @rpm_lvl: desired UFS power management level during runtime PM. * @spm_lvl: desired UFS power management level during system PM. + * @pm_lvl_min: minimum supported power management level. * @pm_op_in_progress: whether or not a PM operation is in progress. * @ahit: value of Auto-Hibernate Idle Timer register. * @outstanding_tasks: Bits representing outstanding task requests @@ -972,6 +973,7 @@ struct ufs_hba { enum ufs_pm_level rpm_lvl; /* Desired UFS power management level during system PM */ enum ufs_pm_level spm_lvl; + enum ufs_pm_level pm_lvl_min; int pm_op_in_progress; =20 /* Auto-Hibernate Idle Timer register value */ --=20 2.34.1