From nobody Mon Feb 9 11:34:03 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 42932325498 for ; Mon, 22 Dec 2025 03:33:42 +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=1766374423; cv=none; b=uIec8Kv5H7zaNb7vrXuygShpJaD4eSdEOsPSL9o0JF4we68vCpwgn7nvhf2T8aRjhZyaVQ40lg1UHYoP0JyFI8vuIiiciMh3KPcUtYsMlJnI7Vl74wWOl0D6etFf9L0zZSKKfmW0n9Pc5WvAWbHV5v8eaYO4Ln3KPVu9PImefdA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766374423; c=relaxed/simple; bh=VbqIQMroIlq6JMMANB+DTWjTL1f1TuzU3o0hZWDdc+U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QSYvjkOrj5i0iNCf98lEROjnQUXnUtLv8rtehYAf+TMmXe3hEBCALrAn0r+79OLoNk/FdnyOF2nrv61iajxfLCU5Z5zIhfGKBnlaDUpXl2MkX64JyBx48Z/dkW/3wSj4yDIr5N++AtbniTcMhMa4gJTtM8TiNPPC+TQzqhNiRt0= 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=F/fpNBIY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CEk2oKdM; 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="F/fpNBIY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CEk2oKdM" 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 5BLMr9jb3799195 for ; Mon, 22 Dec 2025 03:33:41 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= maLQn0/g6TQ0tBQyQOJF0vW4h969wzxQrbt5sqlv9hw=; b=F/fpNBIYl6HNaJLg aNAmKjLIzQqgdtCe3eeJAYz2AUnDPs/cF9+vWUBowBC63lOG93CnaqONVQoV6KGn bmtYxSVrtzLpHwlgrXycM8v0xOq/27tzzqXXdbXu2L02xIdb2d2MPtDXt3DmNjhP ZlxoGNBDgTyabaHDHFvPZprjP+lxRF4x1JNSRCv82O9DX0tiZ20Y3HugodcAVVI5 BkI0auNXYCW1O4Rysab3NPR/Gf0wPaArpxWFP5QazGH9NTdkNqSXznWHbEDFtjGp YchcZW2cni7TaPtY3q8yVHCkkewYlWIBMA5QCuqnMUM7UiPaiuyIe45tZmATL5jY LXubFA== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b5mry3faw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 22 Dec 2025 03:33:41 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-7c240728e2aso7680388b3a.3 for ; Sun, 21 Dec 2025 19:33:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766374420; x=1766979220; 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=maLQn0/g6TQ0tBQyQOJF0vW4h969wzxQrbt5sqlv9hw=; b=CEk2oKdMZJJ6ILrO8pmmHWWfvkZs2+M6Z5PEUcmNtlVG7PiHolBk6vwBocCBAwKQNt 60UFSjPzqWs8N6ksOy2eDJFUV+gdW+aaO/Swsjs1NOJqem0+tToIIoHnD8sUEIyvh3y6 zcK00gpfjuvikc8AIeHQnM1WtylpU2mjxzv3xWxblF7C626eGFnsmI94YjG04A/KIeFC j2g1kM2t/qhx+yUF19eToXpdlffDMgtzvVYSLK9ohIBnunkvWiGLNlswYx2f3L/oTRRI GnV+Bq4AdFnPv1gI5T3q7mwof9doRcYBXvqpMkhh0VFHg+fli2aJaC42MIFuvxu5XsE8 Unjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766374420; x=1766979220; 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=maLQn0/g6TQ0tBQyQOJF0vW4h969wzxQrbt5sqlv9hw=; b=JKKhvmlrnuuy1zmeTEgxehpSUuBGa2/YSVyIJy7qPar+ln6O0++XPCwRQhE8NUInMh mr3BdJtf7BTSMNpEQ71Ffl7Ef/kBqXBIoQzWPSwcTfgc1N+vcurCqimHrJjDssjcrVrr fQkdriaNAickJM2MjrVRtOm4F4skRZ9yTfc6COSyAEKSwEUlExx9akbkgSUpNzT9xivZ HgwpGDEyS71tdYpgey23dhlmz726y3zZbUY4ysV+vPO9PxSZnO/ADJJS6grmHkwzvke8 t0I+oRNGymW6xAJa6tB8sZpweGmF6v/cGjvHWlBbVZuSnLq+ePieAGqFZYm8nQdFYw31 5erQ== X-Gm-Message-State: AOJu0YzGOVNfrW8DkZj9RAF9MMGOZxJd7GG3uHOFi35lWQcT0ZYBFMC9 U9fB7uWF3GgOvMwcCUfP5QKMfsQRNetJRnPweNQYn4O+t3hl3K3/2CVb+lCzlVGJdar9kiFLx/v sdrECJGqSMsscwRRPZ5mGhTF+KtEK2A1qryfxgyh4PdIN/CgJuQD+WWFdFIQzj+s7cUA= X-Gm-Gg: AY/fxX5XCGhdoTBz2pz8lK7kIe3rngN26Apf9Kz/CMPNP+8EKmaJx+Vk2ZonoCCL/e/ X1xp5MYQpov2i98SKRPujNMeHzlt0Md8vm7eOueUneQ0WS9qRl3BVsanoqCQoO0Y2dw5pb59Osi k/BCbORindyJjnaGWK/QdT6Y7Q7kY0JpfiDVgztO8b4kdjEtdDw/4P3b85i5L7rnIfva+iVc9Ue 1TqM35EsBLzwYXaNJJ0tmjUHGAD1IvRfTsIMJMEpsrv0tE8IbmHMOOncLfqX4nxA6x0XhWjplH8 lr+jF7meplTMqdIXH3yvl6ZBBSPn/0pgdZmhTwSvGcOXEqBLRqMX1W07vr9rzjhvuTEsYJYjotv HUNK2Yn7nrAL4Ucj8KBpJXsMJJ9Ufl6dxGB/edqY67xLMqw== X-Received: by 2002:a05:6a00:278e:b0:7f6:fd3b:caa6 with SMTP id d2e1a72fcca58-7ff648e960dmr8020678b3a.19.1766374420093; Sun, 21 Dec 2025 19:33:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IG3QmlHGy4R/5KCHdv5JakzwKHqFIBpAMkQx1RSf2GWhEA8H3a8GxhflUP36jW16Vr8xOKCiw== X-Received: by 2002:a05:6a00:278e:b0:7f6:fd3b:caa6 with SMTP id d2e1a72fcca58-7ff648e960dmr8020662b3a.19.1766374419570; Sun, 21 Dec 2025 19:33:39 -0800 (PST) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7e48f30bsm8633837b3a.48.2025.12.21.19.33.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Dec 2025 19:33:39 -0800 (PST) From: Shivendra Pratap Date: Mon, 22 Dec 2025 09:03:22 +0530 Subject: [PATCH v21 1/2] Documentation: ABI: Add sysfs-class-reboot-mode-reboot_modes 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: <20251222-next-15nov_expose_sysfs-v21-1-244614135fd8@oss.qualcomm.com> References: <20251222-next-15nov_expose_sysfs-v21-0-244614135fd8@oss.qualcomm.com> In-Reply-To: <20251222-next-15nov_expose_sysfs-v21-0-244614135fd8@oss.qualcomm.com> To: Sebastian Reichel , Bartosz Golaszewski , Bjorn Andersson Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, Bartosz Golaszewski , Shivendra Pratap , Bartosz Golaszewski , Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1766374413; l=2330; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=VbqIQMroIlq6JMMANB+DTWjTL1f1TuzU3o0hZWDdc+U=; b=C9EPPyOVk0N+CORGqGEGXbEzd2hhvAhcAHUiniYT0EhnRLbDR1Ty1ZmeOPaGp61VTSeeZwt7y rb1ux/CI/J7CGfOc8h+Ir3w8G1xlThmYj1Rt4uvSPw60ikotJ7J4tJW X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Authority-Analysis: v=2.4 cv=cbbfb3DM c=1 sm=1 tr=0 ts=6948bc15 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=QX4gbG5DAAAA:8 a=EUspDBNiAAAA:8 a=LKyF0dicRlewKW4vAhwA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 a=AbAUZ8qAyYyZVLSsDulk:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDAyOSBTYWx0ZWRfX2JuEJ5JJ7z+L jtc56XZnYR8KIHheB2yzmATzam/O6EMqd7lnwdxdtyJZcJHFWlo818Px5yG+oZ1Z5m4ZyD+GAel zsIy/pe/oDvmqlA6WiepYl3qkzfrjGzvnyX485T4ecFhhdf2Q0E12DGyguofe8pk4K95Z/9+wVP L29GMEcJ6tXPgco25UjjQ78BIYzlVB3Mj7reVn7RQCGtLNCYqWPKxZ6AbHQbJPDRMfyVSeUWGZY FaYk40N4n99mr83MkHZ4IPdcIhnbU/QMhlJCTbyaXICjjk3howsuy9RllxDjbXzG5agp/Xk29uQ XwQHH1fnHueVaTVHkWAUixFBBHvYWCIKmkFDR1AIw7iECmQitIPdezP45tvS7mQDzYLY3UOTVOP haZYqI1iKvJjy0ijWxqkiliETsp8nmVFScWNX0XcxC2eZIXA6uzeBbhJ7ZF0dW9uP0zUyjEIY38 XMQu4WjUorcIz/iQEcQ== X-Proofpoint-GUID: Sr9clmEUZEnXYzUaYpNEtEMvUsDfHPvH X-Proofpoint-ORIG-GUID: Sr9clmEUZEnXYzUaYpNEtEMvUsDfHPvH 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=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 phishscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512220029 Add ABI documentation for /sys/class/reboot-mode/*/reboot_modes, a read-only sysfs attribute exposing the list of supported reboot-mode arguments. This file is created by reboot-mode framework and provides a user-readable interface to query available reboot-mode arguments. Reviewed-by: Bartosz Golaszewski Reviewed-by: Sebastian Reichel Signed-off-by: Shivendra Pratap --- .../testing/sysfs-class-reboot-mode-reboot_modes | 36 ++++++++++++++++++= ++++ 1 file changed, 36 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-class-reboot-mode-reboot_modes= b/Documentation/ABI/testing/sysfs-class-reboot-mode-reboot_modes new file mode 100644 index 0000000000000000000000000000000000000000..dc27cb4e698eebc99e72821225e= 8bf3bbe7cc7e6 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-reboot-mode-reboot_modes @@ -0,0 +1,36 @@ +What: /sys/class/reboot-mode//reboot_modes +Date: December 2025 +KernelVersion: 6.19-rc1 +Contact: linux-pm@vger.kernel.org + Description: + This interface exposes the reboot-mode arguments + registered with the reboot-mode framework. It is + a read-only interface and provides a space + separated list of reboot-mode arguments supported + on the current platform. + Example: + recovery fastboot bootloader + + The exact sysfs path may vary depending on the + name of the driver that registers the arguments. + Example: + /sys/class/reboot-mode/nvmem-reboot-mode/reboot_modes + /sys/class/reboot-mode/syscon-reboot-mode/reboot_modes + /sys/class/reboot-mode/qcom-pon/reboot_modes + + The supported arguments can be used by userspace to + invoke device reset using the standard reboot() system + call interface, with the "argument" as string to "*arg" + parameter along with LINUX_REBOOT_CMD_RESTART2. + + A driver can expose the supported arguments by + registering them with the reboot-mode framework + using the property names that follow the + mode- format. + Example: + mode-bootloader, mode-recovery. + + This attribute is useful for scripts or initramfs + logic that need to programmatically determine + which reboot-mode arguments are valid before + triggering a reboot. --=20 2.34.1 From nobody Mon Feb 9 11:34:03 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 2254A32548A for ; Mon, 22 Dec 2025 03:33:44 +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=1766374427; cv=none; b=HxaU7VMok6tvfeA/P+wU/WRoAFC9sd7L2T9fyiRGFJgr/iEIIb+P3eySSLdty7edVSLDxDQNLMUgxSYgahBZsivIMZkvHD7RUzUV8Bz1ZN5qr/oaFwdTw2NvewXqI6b5w2I/Kg/92fXgls5oQJmfNZYZgCkAHsQZe8jenMDgsRg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766374427; c=relaxed/simple; bh=pcTB26BjM0rgTg/rlf4hOonrUJ2aLbG6b6bsNAnmxco=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g8WPmplROBn0HTHmb3qEmBTzmBr4XzHPrbd2Zn5Qro/1OAQu+p3CZEHjXJt3jWNLN4oPqrzjySWz9JHZE0GwR2SGagcpDj1qun59wvz8T68aMytOM6pQF3InRa4oOgX+J32SttWCj5HcpwbLiNiEfMHkuob8EjX0K8eTT498974= 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=ig2gXhCo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=f3xQ8//9; 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="ig2gXhCo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="f3xQ8//9" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BLMQ1ag4057050 for ; Mon, 22 Dec 2025 03:33:44 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= 1p9CxVLMaIHOlUHd9JiMY/BtnRL92iMP9Sy0KYtGHdg=; b=ig2gXhCoMxXIUJyJ KTrgKK94kmZaQVHrmyTFXs1f89JCKk8aqYMWJjq4xDHXyVTbt+xChTZm+gpFETn4 jyFICobKR30+M5c7M+F9dhDiPZ9q9FRqHAL3vp5Lt3nm9WkfD3A3LHJNuJYAdjVy sPjPTLFu98azChBX8SV/c/XS9jM5lHT2IuuvkCI095n+5ylbbnSSZpX7AAKWi8q7 3GLZoCEx4bcs3q56u6zGikCkNpHjNTQ1i5BRdjq2QQRclITmLZaG+m7B/MPJbuPE vqhg7jSkiTX+Nrd/1FVgtQbutk1RaM4DCzx9fpBzKriGF35MESoNezvz+OsHnOcU zCh8HQ== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b5mux3f05-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 22 Dec 2025 03:33:43 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-7f21951c317so2877417b3a.2 for ; Sun, 21 Dec 2025 19:33:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766374423; x=1766979223; 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=1p9CxVLMaIHOlUHd9JiMY/BtnRL92iMP9Sy0KYtGHdg=; b=f3xQ8//90SezhEqjuu2s360BhE58UWnQZFFvRzKZfw1jcqgErixjjZkP+Bn+Rfmjl4 6Kg25Zbuuks+G+PFvwkHfu7H50PUDorXqPM+cdOU/7D+UKPHPhjyTkRhSs6YqR+/GOE8 BmYWtv1tkQ5661vSEbLrBIY81r/UaRPZHbOMaDCYFgrUP8dxG7DP2m0zj1Uwa/q5ZTXp vWuKhChTYE8rA8HTlVGFM+8qDz0wORINBexp2+P5yxnBTRPrGLdO7VmC6lhbRQFqiYV2 Ki9BbGdHrgTvi4+zkEfsJ+MOAYI+wW6DqtTGMFZjxOl//EyEVCnlvUw0GaL0oI39SL5g A0ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766374423; x=1766979223; 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=1p9CxVLMaIHOlUHd9JiMY/BtnRL92iMP9Sy0KYtGHdg=; b=U9IWz0lihr8z8aC28deXBpo9GTazYA9GP4nDgxqEeCxi2mTocChIO9QZV+9stAtZao w2gtnn5SyrOGC+rMW0Abrjnod7eGfx33DiQhqH/TRhY11q4ZhIb7+4KXfy0vjgEW8NCm GmMtdPXvNjny/nZ8YwMAFTpI3Ex6GVxQYPe5TqEby5YaQlf+qgzZrRMi9fkUHDSgYUaF +iKg8tB3SiMBVg5RBqgAlZMRpm4enqdDGQaXXFAbEJPjOkEft6Bpfstt15oqaBlYgx5O xooyTUyvCPgS+kO1za8p7X4REztlgrzvOj2qsYaPPW03zPWReAdHe4TjVj8gVfnzUMmQ bwXA== X-Gm-Message-State: AOJu0YyEJAhcDN6FslW2Okisn5MuMhsJNlv3OeKoCXjlMOgORpK+288T 6D4n7BYfkjY1Pf+K/MsWeyGxET6Y8Ma2FNRfdmex1GXWQQqUeQC6aybTjNrZDk9xw9TUMwGaYFg A24bFQ40+f48pllOv4Cpi5+mAjYefzWn6woSjbRTpwubSL9m5ObR+0F0VwoZpFX3jjVE= X-Gm-Gg: AY/fxX7MIcgvzCVtHaY1cETbcolKFtnmtYF9CDsVeI6jU7Ff6DRtXGS46ZiSbl92VZT cXPC+OzsocAYfw7zwBRMoz/ymlyxqu3Aj4iWtXSVOTQNqRs7ifr9hTswjcnlcPDrGnzxJpGvczy jjtcSzlBkFnae8kEij8UNMOCachgEmd9lYr6yuj8uGWTZ4XJ5irAAXcwGLF7N8XDGZwiIJVerF4 Fx4aFuzmsL5c9ofjQJ6Qd4igd+KDMAu9cFN8g3kgKv6Vu8wEqHkDxHO5fAPxYTY15MH6Xj+NfwA fUUBWX4cRScjduCkz9agJBb3stIpM3M2s4ORqnL/4YDUoWxVXjHjMjzcLqLVZvFdUpQz+zGVTRk ciXpQ2sO9cj8pl2YBRMPpvGRthtSDPZ4MpNds4kitln87kg== X-Received: by 2002:a05:6a00:e11:b0:7ac:9d93:3efa with SMTP id d2e1a72fcca58-7ff6420d8b0mr8174492b3a.7.1766374422925; Sun, 21 Dec 2025 19:33:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IEkdPKKN3e/I+ctbjjSdQlAcyU5+N72pFYLUi8N3ALlJSQEhn0x1h7LUw3IYPEc+jDJpKSrBA== X-Received: by 2002:a05:6a00:e11:b0:7ac:9d93:3efa with SMTP id d2e1a72fcca58-7ff6420d8b0mr8174474b3a.7.1766374422376; Sun, 21 Dec 2025 19:33:42 -0800 (PST) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7e48f30bsm8633837b3a.48.2025.12.21.19.33.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Dec 2025 19:33:42 -0800 (PST) From: Shivendra Pratap Date: Mon, 22 Dec 2025 09:03:23 +0530 Subject: [PATCH v21 2/2] power: reset: reboot-mode: Expose sysfs for registered reboot_modes 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: <20251222-next-15nov_expose_sysfs-v21-2-244614135fd8@oss.qualcomm.com> References: <20251222-next-15nov_expose_sysfs-v21-0-244614135fd8@oss.qualcomm.com> In-Reply-To: <20251222-next-15nov_expose_sysfs-v21-0-244614135fd8@oss.qualcomm.com> To: Sebastian Reichel , Bartosz Golaszewski , Bjorn Andersson Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, Bartosz Golaszewski , Shivendra Pratap X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1766374413; l=5490; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=pcTB26BjM0rgTg/rlf4hOonrUJ2aLbG6b6bsNAnmxco=; b=7wRCltWmycbntB7GGPJA6W/+/Q9mdQFAOn4w0kRJ0Rc7EsVG95srR6IrawaVe050b5eSRHoQl uWiXuKTuvUGCetUNG7JM9+FGEFRlCAkEkJV+nmSDZ9vNUOPOEueUgBZ X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-ORIG-GUID: 1K9Z-C4IUzh2VA0ezWjyOA2082KyOXDk X-Authority-Analysis: v=2.4 cv=EvnfbCcA c=1 sm=1 tr=0 ts=6948bc17 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=s8YR1HE3AAAA:8 a=0ofMVug2fDiiE6i26csA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 a=jGH_LyMDp9YhSvY-UuyI:22 X-Proofpoint-GUID: 1K9Z-C4IUzh2VA0ezWjyOA2082KyOXDk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDAyOSBTYWx0ZWRfX8Kh4tFTw2H9O k7JOEQ6NaGIHoY+fomxANz15yL26Tn819r12/5ukFO13Lhb9uC2YBilj5TGsn/Lc3WE6vlRdCn8 p+qUOgrIppTA1dxkXXy58iHeObJs483C2lPT8+rEPFo6z/FYhZ4CU3LxPlGfac/FLMg/kMXX5CF Zwq/GFxrF4cULrLajS9ZyrR1on9GWRFM7qwc1vdWu/E2t8kKvz10EXco2DrSr4iI+SFZeTruizK 0+Ag+idXKXW39pnqp0/2VaMPifuVpPQEoLoUchVtI/S8/Ug6C+Y9cvHzTCJpumkIzahTgxtfc1k O9Qs0AakVJdD52Ae8fiYFED2UXicYzsuGSNwmJ5veqhiAyzN+V5KtqFHnotEy7VcOdwzgyb57Wt glKHbfShb+twRHCaSJ5hhyC/5V7jauW4dbJxbcZvE6iPyFj9LT8MII3KaqWLcebsxCTP/g3jVua lwiQN/HqxXlfVnJphvw== 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=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 phishscore=0 adultscore=0 clxscore=1015 priorityscore=1501 spamscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512220029 Currently, there is no standardized mechanism for userspace to discover which reboot-modes are supported on a given platform. This limitation forces tools and scripts to rely on hardcoded assumptions about the supported reboot-modes. Create a class 'reboot-mode' and a device under it to expose a sysfs interface to show the available reboot mode arguments to userspace. Use the driver_name field of the struct reboot_mode_driver to create the device. For device-based drivers, configure the device driver name as driver_name. This results in the creation of: /sys/class/reboot-mode//reboot_modes This read-only sysfs file will exposes the list of supported reboot modes arguments provided by the driver, enabling userspace to query the list of arguments. Signed-off-by: Shivendra Pratap --- drivers/power/reset/reboot-mode.c | 75 +++++++++++++++++++++++++++++++++++= ---- include/linux/reboot-mode.h | 6 ++++ 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/drivers/power/reset/reboot-mode.c b/drivers/power/reset/reboot= -mode.c index fba53f638da04655e756b5f8b7d2d666d1379535..28d1fe09d685a7422027fafc9d6= a3db97a6aca18 100644 --- a/drivers/power/reset/reboot-mode.c +++ b/drivers/power/reset/reboot-mode.c @@ -19,6 +19,39 @@ struct mode_info { struct list_head list; }; =20 +static ssize_t reboot_modes_show(struct device *dev, struct device_attribu= te *attr, char *buf) +{ + struct reboot_mode_driver *reboot; + struct mode_info *info; + ssize_t size =3D 0; + + reboot =3D dev_get_drvdata(dev); + if (!reboot) + return -ENODATA; + + scoped_guard(mutex, &reboot->reboot_mode_mutex) { + list_for_each_entry(info, &reboot->head, list) + size +=3D sysfs_emit_at(buf, size, "%s ", info->mode); + } + + if (!size) + return -ENODATA; + + return size + sysfs_emit_at(buf, size - 1, "\n"); +} +static DEVICE_ATTR_RO(reboot_modes); + +static struct attribute *reboot_mode_attrs[] =3D { + &dev_attr_reboot_modes.attr, + NULL, +}; +ATTRIBUTE_GROUPS(reboot_mode); + +static const struct class reboot_mode_class =3D { + .name =3D "reboot-mode", + .dev_groups =3D reboot_mode_groups, +}; + static unsigned int get_reboot_mode_magic(struct reboot_mode_driver *reboo= t, const char *cmd) { @@ -76,6 +109,15 @@ int reboot_mode_register(struct reboot_mode_driver *reb= oot) size_t len =3D strlen(PREFIX); int ret; =20 + reboot->reboot_mode_device =3D device_create(&reboot_mode_class, NULL, 0, + (void *)reboot, reboot->driver_name); + if (IS_ERR(reboot->reboot_mode_device)) { + ret =3D PTR_ERR(reboot->reboot_mode_device); + reboot->reboot_mode_device =3D NULL; + return ret; + } + + mutex_init(&reboot->reboot_mode_mutex); INIT_LIST_HEAD(&reboot->head); =20 for_each_property_of_node(np, prop) { @@ -107,7 +149,9 @@ int reboot_mode_register(struct reboot_mode_driver *reb= oot) goto error; } =20 - list_add_tail(&info->list, &reboot->head); + scoped_guard(mutex, &reboot->reboot_mode_mutex) { + list_add_tail(&info->list, &reboot->head); + } } =20 reboot->reboot_notifier.notifier_call =3D reboot_mode_notify; @@ -116,9 +160,7 @@ int reboot_mode_register(struct reboot_mode_driver *reb= oot) return 0; =20 error: - list_for_each_entry(info, &reboot->head, list) - kfree_const(info->mode); - + reboot_mode_unregister(reboot); return ret; } EXPORT_SYMBOL_GPL(reboot_mode_register); @@ -131,10 +173,17 @@ int reboot_mode_unregister(struct reboot_mode_driver = *reboot) { struct mode_info *info; =20 + if (!reboot->reboot_mode_device) + return -ENODEV; + unregister_reboot_notifier(&reboot->reboot_notifier); =20 - list_for_each_entry(info, &reboot->head, list) - kfree_const(info->mode); + scoped_guard(mutex, &reboot->reboot_mode_mutex) { + list_for_each_entry(info, &reboot->head, list) + kfree_const(info->mode); + } + device_unregister(reboot->reboot_mode_device); + reboot->reboot_mode_device =3D NULL; =20 return 0; } @@ -162,6 +211,7 @@ int devm_reboot_mode_register(struct device *dev, if (!dr) return -ENOMEM; =20 + reboot->driver_name =3D reboot->dev->driver->name; rc =3D reboot_mode_register(reboot); if (rc) { devres_free(dr); @@ -199,6 +249,19 @@ void devm_reboot_mode_unregister(struct device *dev, } EXPORT_SYMBOL_GPL(devm_reboot_mode_unregister); =20 +static int __init reboot_mode_init(void) +{ + return class_register(&reboot_mode_class); +} + +static void __exit reboot_mode_exit(void) +{ + class_unregister(&reboot_mode_class); +} + +subsys_initcall(reboot_mode_init); +module_exit(reboot_mode_exit); + MODULE_AUTHOR("Andy Yan "); MODULE_DESCRIPTION("System reboot mode core library"); MODULE_LICENSE("GPL v2"); diff --git a/include/linux/reboot-mode.h b/include/linux/reboot-mode.h index 4a2abb38d1d612ec0fdf05eb18c98b210f631b7f..d7141a1a609b62bd3185642ecc1= 478fdd3555037 100644 --- a/include/linux/reboot-mode.h +++ b/include/linux/reboot-mode.h @@ -2,9 +2,15 @@ #ifndef __REBOOT_MODE_H__ #define __REBOOT_MODE_H__ =20 +#include + struct reboot_mode_driver { struct device *dev; struct list_head head; + const char *driver_name; + struct device *reboot_mode_device; + /* protects reboot_mode list */ + struct mutex reboot_mode_mutex; int (*write)(struct reboot_mode_driver *reboot, unsigned int magic); struct notifier_block reboot_notifier; }; --=20 2.34.1