From nobody Tue Dec 2 01:05:35 2025 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 AAD98285C99 for ; Sun, 30 Nov 2025 18:21:33 +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=1764526895; cv=none; b=czAaDrngzOosbQvjNz4cBmwYnJ9fnvWVlWsklxarUS2LNSR5nIvpUkvGsZHE1Eq6uS+2pcyiVoaiYMSQVrrqN4QdgVfzXnpaOiZdsANLCOExjTxVUN2jLtELsiaxzFwK7CBlADx4JshM1g7eolN7f0JrtulwIXAgjtIXLSjZ32E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764526895; c=relaxed/simple; bh=usgZ50lsKAOs/daHoCBRLBx0aO1Pg/3aRrkQMCznHx8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dp2myUWM0/LR3KvLoERxsBLGUFqXd4qDwXR1nedx6ryPZm6vy/jH76RAq8cZ0xnyaQaP7AaLM5RCVpKwjC4Q5axbtlWj1B4gKg39mHzkToZ9kE0q27DdvqYJuq6OdVd0RuU5hHpu3e3kS9LugnRxNlkZDc4r1gNJWyP2lVn3LPw= 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=E9Dysfuf; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=R1OjTCIU; 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="E9Dysfuf"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="R1OjTCIU" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AUFpHDZ1892449 for ; Sun, 30 Nov 2025 18:21:33 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= zbSn4WvxMEi5fN3EkuAFKvYhh+IG+Q93MMbD1rInegA=; b=E9Dysfuf+TXjfmeT XlkZF19It1mpqJU5gUuXbv+TgNhQUAWrKQ6ZzPyybrYPU3LLzbrMdgQso8vZDh8t PqN9VqKO0DGivFCWo7XMNHBlKb9Vl5a1Y4dyrRP3HNEqaFnh3biltwMuh2pL/GFs 3lZd2yO+7V+49nKNlVGnSb9tP2aWqqBrpsF5LIOVfNgRz/x/WvyrWmp94q3xA7bN 6y1suCLlIbctmL8+BTi8bkLRLn/dpkeI6uY4GJlqxduy7gGZ/2UclH0nKnsJK3iB 0cGuWZW+I0Pr0SlLB6oV2+n5Nk/Cr5raM+D6DG90OdBufV6Pdacs91+ZXBxvLNrg I9YgqA== 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 4aqskf2h10-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 30 Nov 2025 18:21:32 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-29806c42760so119700645ad.2 for ; Sun, 30 Nov 2025 10:21:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1764526892; x=1765131692; 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=zbSn4WvxMEi5fN3EkuAFKvYhh+IG+Q93MMbD1rInegA=; b=R1OjTCIUZW2n+tSzMFzKD+yzhYwwyZTjOfTX4v+qNVq4PmlAWQC3kJ5Z48q2MI6bhU YJoxsw22gR3YaN0wWO6O3wbnCp30o4DkJjWFLJZxdGNG7A06CCm+4qK6Er6MuxER8hro Z2qHWqnkFaiRjJKSV6NnPl8DG+MnU7wQiAQthNohjoLagm0maiHfBfxiGUol3BCFCgGh EktONKEM3Jn+5EnjFFyZJb0izsbNm/8dZPd3SDxHcnCFkrzysyomXVy7TOs04ZLVgjCp Zaw4nvNrrtH4cgf+BXo5S38liZHdtMuF2isbiI0J+yUNcpayWCLb798TqZD8F4X08Jsk esGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764526892; x=1765131692; 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=zbSn4WvxMEi5fN3EkuAFKvYhh+IG+Q93MMbD1rInegA=; b=VaFaNLFZFg6CAg28IwH3D+xGq4EZS9puYlDUsbfPZEj9u8aoaK4Uaw4ZR0alLCqq5n nytvhd9lj33T9NAojDEMsdqeB5cq6C8Q43/J7KG416s+wRuNXe+bgFaGcOgld/NcODkW JaWcBFrWfatx2JFzR3pWMIt9Iqmsr91SdmAvrcbVY7hb/3U5ILyViFagZfSVsTbs6vna vHqx1ZGY3dYOikFiMJBdsfs+SASPps62KFjvjysk8CGz+mOdubI7tSha1dcxZ8OEdN56 9eRLTmFEmlvhZJlR34iE5BNeSUbiN48t4AcsENFHErR04CR/maIlCYuuX2eAipGmkksZ 8GSQ== X-Gm-Message-State: AOJu0YxdAEE4jdV4WoACGZcWkE8LOqBzrViNFhsMd6+MhLVtnpNU/CS9 SGNgFR5GSzl4pJd04oYummBXNkgT1lYP9iMjs88nMlzlZev08fdqAhsTs3d2Xf/G+UZgg9GZoYs RQ93rt4VXrEj5/XW6PGaPucHMS0DLTjwPUyFB7WR8z2rbc4qF1LLD7r9A9OdzKxgBQPc= X-Gm-Gg: ASbGncuT4J94aCexBzc6cFkw+oT63m128X0gRgQufvX/6o1uIu9jj8xWI5Rq/Z3rRFe 9HlYRFpTl7XMAyLIRQfbVQELky1Z0kg03x4cv07XezMPi6jcBkZFfF6oi31XHxT44YZ2gV8/Cne dznLS5Lfj73cimCAs1rLgwzrILCrs66g3LIDH0sfWlryeVonygjazUlCC+cZs/GR0aTqMxqiq7e 9nD854MZk110Pn/9XiSATFwxyiBA3+wE3QW6zmNMXuShfzwWzvYk/ynLGbfmmdcZtjl+7Kuy/jM PXBibUUNE/5OJtmfOs2yegz60LZMp5XQoQ2TyPknraQlsCRrrSktdZeRSWwBxJQLx4+Z++Eww3Q qmwgqaCZoKWb+18S0wBiG00I7zeu7+33H1ZEl0F35S4uKjg== X-Received: by 2002:a17:902:e882:b0:298:344:1229 with SMTP id d9443c01a7336-29bab1da652mr261181195ad.55.1764526891639; Sun, 30 Nov 2025 10:21:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IFP+RmJw+aup4mPhjKFzb+zfYoq8ozIQAK1imr0RTv1Os4D/YXP04NwYec2eM1Ac94wW7bo0A== X-Received: by 2002:a17:902:e882:b0:298:344:1229 with SMTP id d9443c01a7336-29bab1da652mr261180975ad.55.1764526891254; Sun, 30 Nov 2025 10:21:31 -0800 (PST) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29bceb27691sm100911385ad.64.2025.11.30.10.21.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Nov 2025 10:21:31 -0800 (PST) From: Shivendra Pratap Date: Sun, 30 Nov 2025 23:51:23 +0530 Subject: [PATCH v20 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: <20251130-next-15nov_expose_sysfs-v20-1-18c80f8248dd@oss.qualcomm.com> References: <20251130-next-15nov_expose_sysfs-v20-0-18c80f8248dd@oss.qualcomm.com> In-Reply-To: <20251130-next-15nov_expose_sysfs-v20-0-18c80f8248dd@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 , Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1764526885; l=2280; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=usgZ50lsKAOs/daHoCBRLBx0aO1Pg/3aRrkQMCznHx8=; b=Q1xhijBVgDmDYaUV0LIScQ/DSz4W9ZS1DLIgSeXO630+u+GgJgoNgZvwdvix8h4H/hD4epZmA LKMFNhjH+stAwrbbZjgl2veh1eABz9M7T2KvuBqmryV+PqlsG+agSOy X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Authority-Analysis: v=2.4 cv=X7Nf6WTe c=1 sm=1 tr=0 ts=692c8b2c cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=QX4gbG5DAAAA:8 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=LKyF0dicRlewKW4vAhwA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 a=AbAUZ8qAyYyZVLSsDulk:22 X-Proofpoint-GUID: lXHK7e7IUdm8IaMJnOxNynejjS31nKGE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTMwMDE1OCBTYWx0ZWRfX1Nrpd2IaCuRB xfdYl5DT1tX5nIzMUhSdJhPHX92UG83RfPCNijCcQcqlibFKRL3Q1X+giI3+Kl+zfZ4nn5Hc7ki fYZM/wFiH+SIdqfC+YatFy+jkjG1tfQlbOL6hH1j84+v7/EzHo4uHG/p1cbqtQxacd/Egx0ECs2 jVe2GIO+7cGpl9Dnxin99mkjD1+p5qVnHE0aLD8cjfk1vOM7GeT4l8N2G4L+m4ZB5SaaiCPRCBQ /l93iJZG8p+MFTAquoAQtERuTKD1sLB8RmZyvSJt/DsSqUYOJqOIXpuPlpHOkWwA3CrkcdDSMWT 3dnb8yb/ioFo3E4K5nOCr5GUYdY6Z3uUWKsF2WRZKAjliST0zabTyinNUGzFEFKoVS0BmUssqoA ry55sRsXNfxzooZqUc+EAZDCEom5UA== X-Proofpoint-ORIG-GUID: lXHK7e7IUdm8IaMJnOxNynejjS31nKGE 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-11-28_08,2025-11-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511300158 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: Sebastian Reichel Signed-off-by: Shivendra Pratap Reviewed-by: Bartosz Golaszewski --- .../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..a50f9433942b8cab4cb3d699e9c= 0955299ec48f0 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-reboot-mode-reboot_modes @@ -0,0 +1,36 @@ +What: /sys/class/reboot-mode//reboot_modes +Date: November 2025 +KernelVersion: 6.18.0-rc5 +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 Tue Dec 2 01:05:35 2025 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 B0DBC2C158D for ; Sun, 30 Nov 2025 18:21:36 +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=1764526899; cv=none; b=icSPw9ryEqpDusG74aZim+XDjl36jSoxvFSR0sXyamJUeY9HzCU1Igtx52k0LAmnrfExr4tHL9jGzJ4W1PrObepLwBzYF8dOvRADz3f1TY1rC5f12CrlEI1YSjjQNqvSxzwQbHy8CyJLSJ3R2YFNMVyOv7X1G/HS8arAbxdyN5o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764526899; c=relaxed/simple; bh=GjHr08OI8SMYl4NydKrelbyGCFRyP6KQP0VnxDcuQW8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I7oaGUNerxbBXzA0PDFLKBCWH0ADY5lRXa0MC7VLzVTVoKFJ3ZMT1f6XzRhnsb+gL74occKKmvSsHRbmfA5y2NFk9xA4gcO8BOl5M/NIgvNwONMBV1nmgOTf5UsE6CfrHN/BXAiUCDG+OquTJbcx+yaItL+OpP8nFg7wOCApiIw= 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=lbR+JrrF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gccRMDBs; 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="lbR+JrrF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gccRMDBs" 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 5AUIDp0Q2450135 for ; Sun, 30 Nov 2025 18:21:35 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= ZF4ZAclZV2cEPBSJQt65Ys2E158j2iEit5MIaKN8fmA=; b=lbR+JrrFJ2C2+dG7 WQvTKorbLUsmZF01ipykQEboy8x4ta3KiSLZFJGnVUHmO7xadzCcec52i0kG40Do 8wHs/0d04GDCVvwSjR41Ydn8DNn88wGdxpDEmUavXoSSPuCBF9YQlunb0UeC3xpk kmF3RNetHqJAtpw9ykhADclUjtIbyjErBBUnWHB9PJnYxygLyqJkc+nWM5Ci5/7G xE5ZPm4fbW9tQH4nqcwvJH0/WfIaa8RD0eQgjZbadirAx4VCGz4nZkJFubPbGceV Imn0GdTxmQe/iLLObfkYFh15oTmbza0mz9BCH5OI2VdEU1f/2PGdtYlyElal7B9n xl2gHA== 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 4aqs78tj20-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 30 Nov 2025 18:21:35 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-29557f43d56so35596715ad.3 for ; Sun, 30 Nov 2025 10:21:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1764526894; x=1765131694; 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=ZF4ZAclZV2cEPBSJQt65Ys2E158j2iEit5MIaKN8fmA=; b=gccRMDBsq+oGUl04IrDQMR3Y8nFRN1kkMvaHWF3dBqhQ57ho8YQ9QsI3uv/BRM4IGs IuWvxP0Sv61SuKfhin0/ULoUAPmbtNyriQfwP3e5MjWg+A8xoE1RnSNmnUsR+RZPUceW OfazlrOxV8KJkXWJqwXu8Qs4C7Y+saEw7hv7W8ZEH+o5P2YXE98txMg+aw4v0CZFPITZ t+gnM0OKqVLu1s2Hl12CUF8e/fqCJMmqvlmcWJJnQ7Kn1vhGMWATf+mmPR9MkDPd3bIJ hJD8LMoPBvgJz7uD6moJn6VBupNuwtKeR1ICEC11rrLatZ4St7vJTw1KZEwLPS2fzMtO qOTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764526894; x=1765131694; 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=ZF4ZAclZV2cEPBSJQt65Ys2E158j2iEit5MIaKN8fmA=; b=SfSQ6YJlgQzcaOUEtzBz6y7uIXuY8oqBDkBoHQ5jBJF6NhtAJpBHV1l3Jyxz16LR/n xeeQGB3qNm8YCyLdgtnLU9H3L5Wd8/NzuXz33WGnNHJU9uGCn+Z74b2RhvF02Xj0HfAS N+zLYMgLbhBxTCLITddL0pnq78n4XvBNvQoVeBUhLzbGZvdFdO56HRBIolGVBuT3f0IK QS9NBqN9KMgRJg/SmlgUr3wIFqrHk/Of30CMy0G/qDkK/DVg4+nTNbjBgnvdImLTDH8v jwDoKkwQKfzF/wkdDngE5AbAyJvKBR7UN0BCFIa13/JHHdu/2Wz5qa5eQRVw5YLaViww +PxA== X-Gm-Message-State: AOJu0YxNYqtYEv1U4n4ZmfKZoEf0YUSAkVvNsjViAmHF6T7YKqH6BJP9 XW39utc/rmHEpTVr1BOgHAW8Qljjl709pJWH8vysVsghEP/iZONZ+4s3lhepPwLut42a6MRLJw/ WcWcGNLRDiRh9gu9LmK7H3YvJKJBwBzmrMHQ6+0/uMJRE0GUzcn3fp5pnQbJO2J+DI30= X-Gm-Gg: ASbGncubqEza2b6fVc8EzWNoNNWFzMEQEmHFSISImrZHMl+0U8dYNOdT+HlYVSap6H9 yI8VsXQEciNnFRq+y1ksZYv0xfwB3AMSJfx73i0HDVve61UlcYFuQCafT649pDe3Wb3RQXJHufr 3FnHf3z9psaMg8JjZab7Txr/wvFynpbRGgyy/jT6NmZWzBUY9JUnji09T0JVHvsjjHlpP/B36XM TXNJxcsGQEJ2vT7YA//kvD/eTbvGJ8Q27vKARqXvGMXyk678hdB2myRTfIPcoPjKyk6zW5F1Rtv lMIKXXURI3FO/FZMopDCxT/VEzzTMPCtGk5pUWBFdq00R46/TC9dPSX35z08yI3sBxj9LEgh3kH fHr45QdEMmhPBgOiR5OmNUbeRwwaR/GLLzr3Wz/QtHdBgPQ== X-Received: by 2002:a17:903:2302:b0:295:5d0b:e119 with SMTP id d9443c01a7336-29baafb3c4amr249119485ad.26.1764526894471; Sun, 30 Nov 2025 10:21:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IGSxjT8vEa4CkjtBA3yxMMRy3T6tN07pxv0m/44ola8jHlqpFYU7nsBHcjtQ6mtEUZVvhJkUQ== X-Received: by 2002:a17:903:2302:b0:295:5d0b:e119 with SMTP id d9443c01a7336-29baafb3c4amr249119305ad.26.1764526894016; Sun, 30 Nov 2025 10:21:34 -0800 (PST) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29bceb27691sm100911385ad.64.2025.11.30.10.21.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Nov 2025 10:21:33 -0800 (PST) From: Shivendra Pratap Date: Sun, 30 Nov 2025 23:51:24 +0530 Subject: [PATCH v20 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: <20251130-next-15nov_expose_sysfs-v20-2-18c80f8248dd@oss.qualcomm.com> References: <20251130-next-15nov_expose_sysfs-v20-0-18c80f8248dd@oss.qualcomm.com> In-Reply-To: <20251130-next-15nov_expose_sysfs-v20-0-18c80f8248dd@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=1764526885; l=5715; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=GjHr08OI8SMYl4NydKrelbyGCFRyP6KQP0VnxDcuQW8=; b=e2/pBNsmYq7oq3yNoHjl3YOTJeCc6SO5NdfK/nIrddZ+G37TD5M7WbEB9DvCB7JBuRMmPbVq8 R9W3Z0KRwT7BpWV9s16Jx2wTGhXaxCgfQPTB3MgeUdyDpGSDuq6SInN X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-ORIG-GUID: zyS3O66PM_tmslVuhiumZPtNdPI_JCAU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTMwMDE1OCBTYWx0ZWRfX8gK/9ROf/eWH dJioQz114jCcb5nBYWdm5V7loeIksSyD6Z7FI688hUDCWmlZB/M2jonjAZ2xlRpC6tnkmvNmg/L nMAadbQYgGZa9cF4qI2oWEVrwqzNOcYImH/EkCuPNFOrdzj3kRmSDTvuR35HPp8DrnwcEBHue77 8XKPzlIfDVqm4jvP18DzAJ7HHp535QTqDmlkiTEan1EdKJPJKRO6LC7Bvzu9OdUfYbTVR3nGBDd +1yGYgzcFRSVcvhAZCbosb9Zl/e/bx16FrmMZZQRzBSYc9drxFNF58VNgt4w9/DykNFf8OTRziD pRTBswrj6nUjNITJjLWYKiknLeW5um4u/Ih1v77GIBuUblZPiyLBntwas9wSGpwM09z2LykvxSW vAQRleajzk3zkvJRTMZbxgzYEyNIog== X-Authority-Analysis: v=2.4 cv=FdQ6BZ+6 c=1 sm=1 tr=0 ts=692c8b2f cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=s8YR1HE3AAAA:8 a=239sejjMsMoxT4pUUhgA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 a=jGH_LyMDp9YhSvY-UuyI:22 X-Proofpoint-GUID: zyS3O66PM_tmslVuhiumZPtNdPI_JCAU 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-11-28_08,2025-11-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 spamscore=0 phishscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511300158 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 | 76 +++++++++++++++++++++++++++++++++++= ++-- include/linux/reboot-mode.h | 6 ++++ 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/drivers/power/reset/reboot-mode.c b/drivers/power/reset/reboot= -mode.c index fba53f638da04655e756b5f8b7d2d666d1379535..ae03f2d96a84477f1e9f281bf31= 10911d7044a70 100644 --- a/drivers/power/reset/reboot-mode.c +++ b/drivers/power/reset/reboot-mode.c @@ -3,6 +3,8 @@ * Copyright (c) 2016, Fuzhou Rockchip Electronics Co., Ltd */ =20 +#define pr_fmt(fmt) "reboot-mode: " fmt + #include #include #include @@ -19,6 +21,56 @@ 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 container_of(dev, struct reboot_mode_driver, reboot_mode_devic= e); + 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 void reboot_mode_device_release(struct device *dev) +{ + /* place holder to avoid warning on device_unregister. nothing to free= */ +} + +static void reboot_mode_register_device(struct reboot_mode_driver *reboot) +{ + int ret; + + reboot->reboot_mode_device.class =3D &reboot_mode_class; + reboot->reboot_mode_device.release =3D reboot_mode_device_release; + dev_set_name(&reboot->reboot_mode_device, reboot->driver_name); + /* Check return value to avoid compiler warning */ + ret =3D device_register(&reboot->reboot_mode_device); + if (ret) + pr_debug("device_register failed for %s : %d\n", reboot->driver_name, re= t); +} + static unsigned int get_reboot_mode_magic(struct reboot_mode_driver *reboo= t, const char *cmd) { @@ -76,6 +128,7 @@ int reboot_mode_register(struct reboot_mode_driver *rebo= ot) size_t len =3D strlen(PREFIX); int ret; =20 + mutex_init(&reboot->reboot_mode_mutex); INIT_LIST_HEAD(&reboot->head); =20 for_each_property_of_node(np, prop) { @@ -112,6 +165,7 @@ int reboot_mode_register(struct reboot_mode_driver *reb= oot) =20 reboot->reboot_notifier.notifier_call =3D reboot_mode_notify; register_reboot_notifier(&reboot->reboot_notifier); + reboot_mode_register_device(reboot); =20 return 0; =20 @@ -132,9 +186,13 @@ int reboot_mode_unregister(struct reboot_mode_driver *= reboot) struct mode_info *info; =20 unregister_reboot_notifier(&reboot->reboot_notifier); + if (device_is_registered(&reboot->reboot_mode_device)) + device_unregister(&reboot->reboot_mode_device); =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); + } =20 return 0; } @@ -162,6 +220,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 +258,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..76900c1b78003559a7b7812bad3= 4206bb3ba5f75 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