From patchwork Thu Feb 2 09:28:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mukesh Ojha X-Patchwork-Id: 51822 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2388:b0:96:219d:e725 with SMTP id i8csp189676dyf; Thu, 2 Feb 2023 01:36:43 -0800 (PST) X-Google-Smtp-Source: AK7set+on1nTfcqKj+0trTYLkEQuJ8MmfoNLrHlCMU/f4yeDXtuuBKKJq6D+Jk+zdG42mWnjKFYT X-Received: by 2002:a17:907:1607:b0:878:46ed:6a29 with SMTP id hb7-20020a170907160700b0087846ed6a29mr8042341ejc.3.1675330603540; Thu, 02 Feb 2023 01:36:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675330603; cv=none; d=google.com; s=arc-20160816; b=KEHwu/IkfNFC7GZZl9caop4Ow4gdULcm+6KZBs1MKnstmCtNP+sOBcEQ3e1DZ2W85+ hxonM7QcsK1g6nq6nb4LiGxvjad40fsUU/2qcNORa2Eo2niTxVd0CgJJxH6MjglbiG1+ Eq7n8fvd+3M3qGKPnK1Y64GAZTuH0JFlZyvsW+2An6g0oU/5IxazcMDJNgsz7jxNOXNf tnNbp+29ZTI3Zc8Ul5eMhRFEv6U0lY3n07V6y3I+3PQo4X0hII74pJkiK9/3Mmvbkf+0 qbkiQDUP8EybPue3ObL9dl2uulRbc03gq4dn5FxSbDhc1n6SC7NJBTH4VJvNyGsGmYKA mAiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=La3wj2SGvz7TU9s+j9pQj9x3EPVU8m3Fuv9USC0qvtA=; b=nZX89jisrTlkEDyaBggl6JOT6A/JYP9RQh1OXC6gfKkcmC6ZhBcSPERj/vNHe55p2Z fpN65j5FBgvAvJ0O3GAdDBRihH7Zx39WnFJFDT7dbXduR2bHG1rBFTCv8IKJzVhmKIlJ DymF4zuj//ZHwYqWFV3xX8xh7cL9ODUTLtDdPvqhU5rW7ikPE+aBVuoorMBLW2hiO+6w 18NDTXFroL6e6dUdIBnfnncej98NtObugJgQB7c7D+/Un7JticsdLHY0lPG+trhE11Rg 8HPRDnNSnu4VdkWxpvt21567qhwMuJBPIj8aGOrCMTE9vKYzabAV35OHJt1V43LMKwcZ oJeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=h1kAJDfN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id uj39-20020a170907c9a700b00880f2099b12si15821833ejc.226.2023.02.02.01.36.09; Thu, 02 Feb 2023 01:36:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=h1kAJDfN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231996AbjBBJ2d (ORCPT + 99 others); Thu, 2 Feb 2023 04:28:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231478AbjBBJ21 (ORCPT ); Thu, 2 Feb 2023 04:28:27 -0500 Received: from alexa-out-sd-02.qualcomm.com (alexa-out-sd-02.qualcomm.com [199.106.114.39]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91A2816309; Thu, 2 Feb 2023 01:28:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1675330102; x=1706866102; h=from:to:cc:subject:date:message-id:mime-version; bh=La3wj2SGvz7TU9s+j9pQj9x3EPVU8m3Fuv9USC0qvtA=; b=h1kAJDfNhz0qd6EBkWwKviGFF3z33EIQwfmpG8Oq2fAubzyBYQdKfkk3 KnfTYNvVmOufWe/goEV138FFsaRFWCSqQKGHt2CvL3mNrbbE8y/YGFCTl 8tKATc0q8zW+rzi0gj9CXk+heVtRdRw63i/hGgpWEqQNKnUYVyKrwMbwu Y=; Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by alexa-out-sd-02.qualcomm.com with ESMTP; 02 Feb 2023 01:28:17 -0800 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.45.79.139]) by ironmsg04-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 01:28:17 -0800 Received: from hu-mojha-hyd.qualcomm.com (10.80.80.8) by nasanex01c.na.qualcomm.com (10.45.79.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Thu, 2 Feb 2023 01:28:14 -0800 From: Mukesh Ojha To: , , , CC: , , , , , , Mukesh Ojha Subject: [PATCH v5 1/2] dt-bindings: ramoops: Add support to get the region dynamically Date: Thu, 2 Feb 2023 14:58:00 +0530 Message-ID: <1675330081-15029-1-git-send-email-quic_mojha@quicinc.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nasanex01c.na.qualcomm.com (10.45.79.139) X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756711462935244696?= X-GMAIL-MSGID: =?utf-8?q?1756711462935244696?= The reserved memory region for ramoops is assumed to be at a fixed and known location when read from the devicetree. This is not desirable in an environment where it is preferred the region to be dynamically allocated at runtime, as opposed to being fixed at compile time. So, update the ramoops binding by using some reserve memory property to allocate the ramoops region dynamically. Signed-off-by: Mukesh Ojha --- Changes in v5: - Updated the commit description. - Removed example from yaml file. Changes in v4: - Addressed comment made by Krzysztof on ramoops node name. Changes in v3: - Fixed yaml error and updated commit text as per comment. Change in v2: - Added this patch as per changes going to be done in patch 3/3 .../devicetree/bindings/reserved-memory/ramoops.yaml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/reserved-memory/ramoops.yaml b/Documentation/devicetree/bindings/reserved-memory/ramoops.yaml index 0391871..51b6003 100644 --- a/Documentation/devicetree/bindings/reserved-memory/ramoops.yaml +++ b/Documentation/devicetree/bindings/reserved-memory/ramoops.yaml @@ -10,7 +10,8 @@ description: | ramoops provides persistent RAM storage for oops and panics, so they can be recovered after a reboot. This is a child-node of "/reserved-memory", and is named "ramoops" after the backend, rather than "pstore" which is the - subsystem. + subsystem. This region can be reserved both statically or dynamically by + using appropriate property in device tree. Parts of this storage may be set aside for other persistent log buffers, such as kernel log messages, or for optional ECC error-correction data. The total @@ -112,7 +113,13 @@ unevaluatedProperties: false required: - compatible - - reg + +oneOf: + - required: + - reg + + - required: + - size anyOf: - required: [record-size] From patchwork Thu Feb 2 09:28:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mukesh Ojha X-Patchwork-Id: 51823 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2388:b0:96:219d:e725 with SMTP id i8csp190467dyf; Thu, 2 Feb 2023 01:38:18 -0800 (PST) X-Google-Smtp-Source: AK7set/+B78jhmGG9sJ9U+ESG0lX0Xgtlinnz/Xz1damxd0NKhOKz0v2EYP/TK8FIj+E2QM3cX09 X-Received: by 2002:a05:6a20:2a1b:b0:bc:71f2:c998 with SMTP id e27-20020a056a202a1b00b000bc71f2c998mr5805293pzh.22.1675330698372; Thu, 02 Feb 2023 01:38:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675330698; cv=none; d=google.com; s=arc-20160816; b=XtIEPH8D4Cgudqy+JksYfFdheTL6iCgVX1+DuQqs6W66TGn7KmAr2b8wcd1WWCP9y2 yQs/LAtF1HDfhu03qvSEyUtCWBaPkebDlKDLwY5Xexj35jZJnA3SnFxKtmsyXv3sGoO9 EsCVq+DH4fc93pgUgwWaxtO3xHjzZMD1TFOPtw51ftjN9VmLKPbr4rB54cO/eGotC0g6 1EnR7MAYDldCkL4Wb4h5+YCdKPv3hL1Lep6C7P+N8wl3d7grrDQBrceQ0/55cBAGgIq0 UQx6xKC85muKuz0Nl0YRrp1gtDRnd43qZFqKUp1BZb7zEBzoF39D3u+uDZWFEiJp5h86 HJoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=692QkUexZGZvIEUb7tQIQQBrEtzcRSxg5x8dtHwFV8U=; b=JII6EuJlztoHRIDJdQZ4W868bNwTlzCsIuDtSlRtEwJPX8jva6tjCdkd4mhdqUsy61 ZcbyTFr5fmCxTJlSnqjTKlFhwZM1EcEsYXu1zH2jg4mrAqYysxjImFp82t96vd/Tqhum XGEwXeHBcnjojTsp54fnDO3ni+8PwnEQnqIXyV74o4PXWf9Lhg3da3LSfTUHaQkH86JE ZzIG2E9+UhGvZwT+ZxJurwqertjWk64SNqDJwdYUaXc/ccLujmWU2cgUhqSG1kcl/bpn UcGem27Ro7tbICG2bLon1Nj+bFlxwPEpxlzBwJRAAqRrt1KuNLjKrD0sUENRalkvySri Xr6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ATs7zkzZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u2-20020a63b542000000b004efa8b36244si4672427pgo.509.2023.02.02.01.38.06; Thu, 02 Feb 2023 01:38:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ATs7zkzZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232075AbjBBJ2t (ORCPT + 99 others); Thu, 2 Feb 2023 04:28:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232079AbjBBJ2o (ORCPT ); Thu, 2 Feb 2023 04:28:44 -0500 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1AA44193EA; Thu, 2 Feb 2023 01:28:38 -0800 (PST) Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3129Kgsc027552; Thu, 2 Feb 2023 09:28:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=qcppdkim1; bh=692QkUexZGZvIEUb7tQIQQBrEtzcRSxg5x8dtHwFV8U=; b=ATs7zkzZI6RsQ431f7R+Tzdwd02dvI8HSN5Wf2z+/AX4y/sZkw/D058f8IoAied1TGSY bRMyOtpQqs2CJ9c7jb1Rj7PGCtFGyJ7y6oRTlIysZoqSLSIGMkqo71etg7l3NlnCqBBx xGDuN6FDis/f4SChbsky/y3sbXyb7GAb3MaTD4L/ifjrxe5OQ6bhOaEvEjqB5u3W2qRl WtCqywam3EUjyMiWd065/bwpq0ZJ9wvl4Fcl8pLX3fv+zZKQEFUMu3mrWZLGiqH8d9z7 QS84HQo+S3J7pyxyywEY8Uwd0mWioQbO0W/SGSFTokBPG3gGffCtR7P7DZkBG+EzSj4f SA== Received: from nasanppmta02.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3nfqsya893-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 02 Feb 2023 09:28:23 +0000 Received: from nasanex01c.na.qualcomm.com (nasanex01c.na.qualcomm.com [10.45.79.139]) by NASANPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 3129SM0B016872 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 2 Feb 2023 09:28:22 GMT Received: from hu-mojha-hyd.qualcomm.com (10.80.80.8) by nasanex01c.na.qualcomm.com (10.45.79.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Thu, 2 Feb 2023 01:28:19 -0800 From: Mukesh Ojha To: , , , CC: , , , , , , Mukesh Ojha Subject: [PATCH v5 2/2] pstore/ram: Rework logic for detecting ramoops Date: Thu, 2 Feb 2023 14:58:01 +0530 Message-ID: <1675330081-15029-2-git-send-email-quic_mojha@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1675330081-15029-1-git-send-email-quic_mojha@quicinc.com> References: <1675330081-15029-1-git-send-email-quic_mojha@quicinc.com> MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nasanex01c.na.qualcomm.com (10.45.79.139) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: J7huIy0eGjmvFccVTbkQIdjyd6WyoqHP X-Proofpoint-ORIG-GUID: J7huIy0eGjmvFccVTbkQIdjyd6WyoqHP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-01_15,2023-01-31_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 bulkscore=0 phishscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 mlxscore=0 mlxlogscore=999 priorityscore=1501 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302020087 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756711562507104909?= X-GMAIL-MSGID: =?utf-8?q?1756711562507104909?= The reserved memory region for ramoops is assumed to be at a fixed and known location when read from the devicetree. This is not desirable in an environment where it is preferred the region to be dynamically allocated at runtime, as opposed to being fixed at compile time. Also, some of the platforms might be still expecting dedicated memory region for ramoops node where the region is known beforehand and platform_get_resource() is used in that case. So, add logic to detect the start and size of the ramoops memory region by looking up reserved memory region with of_reserved_mem_lookup() api when platform_get_resource() fails also update the ramoops documentation, Signed-off-by: Mukesh Ojha --- Changes in v5: - Removed the CC list from the commit text. Changes in v4: - Updated the minor change in documentation. Changes in v3: - Merged 2/3 and 3/3 into one. https://lore.kernel.org/lkml/1673611126-13803-2-git-send-email-quic_mojha@quicinc.com/ https://lore.kernel.org/lkml/1673611126-13803-3-git-send-email-quic_mojha@quicinc.com/ Changes in v2: - Addressed the comments made by kees and Guilherme in v1. Documentation/admin-guide/ramoops.rst | 25 ++++++++++++++++++++++--- fs/pstore/ram.c | 18 +++++++++++++----- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/Documentation/admin-guide/ramoops.rst b/Documentation/admin-guide/ramoops.rst index e9f8514..3586d15 100644 --- a/Documentation/admin-guide/ramoops.rst +++ b/Documentation/admin-guide/ramoops.rst @@ -16,8 +16,9 @@ survive after a restart. Ramoops concepts ---------------- -Ramoops uses a predefined memory area to store the dump. The start and size -and type of the memory area are set using three variables: +Ramoops uses both predefined and dynamically memory area to store the dump. +The start and size and type of the memory area are set using three +variables: * ``mem_address`` for the start * ``mem_size`` for the size. The memory size will be rounded down to a @@ -70,7 +71,8 @@ Setting the ramoops parameters can be done in several different manners: B. Use Device Tree bindings, as described in ``Documentation/devicetree/bindings/reserved-memory/ramoops.yaml``. - For example:: + + Example of statically reserved ramoops region:: reserved-memory { #address-cells = <2>; @@ -85,6 +87,23 @@ Setting the ramoops parameters can be done in several different manners: }; }; + Example of dynamically reserved ramoops region:: + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + ramoops_region: ramoops { + compatible = "ramoops"; + alloc-ranges = <0x00000000 0xffffffff>; + size = <0 0x100000>; + record-size = <0x4000>; + console-size = <0x4000>; + }; + }; + + C. Use a platform device and set the platform data. The parameters can then be set through that platform data. An example of doing that is: diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index ade66db..17c9f46 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "internal.h" #include "ram_internal.h" @@ -643,6 +644,7 @@ static int ramoops_parse_dt(struct platform_device *pdev, { struct device_node *of_node = pdev->dev.of_node; struct device_node *parent_node; + struct reserved_mem *rmem; struct resource *res; u32 value; int ret; @@ -651,13 +653,19 @@ static int ramoops_parse_dt(struct platform_device *pdev, res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { - dev_err(&pdev->dev, - "failed to locate DT /reserved-memory resource\n"); - return -EINVAL; + rmem = of_reserved_mem_lookup(of_node); + if (!rmem) { + dev_err(&pdev->dev, + "failed to locate DT /reserved-memory resource\n"); + return -EINVAL; + } + pdata->mem_size = rmem->size; + pdata->mem_address = rmem->base; + } else { + pdata->mem_size = resource_size(res); + pdata->mem_address = res->start; } - pdata->mem_size = resource_size(res); - pdata->mem_address = res->start; /* * Setting "unbuffered" is deprecated and will be ignored if * "mem_type" is also specified.