From mboxrd@z Thu Jan 1 00:00:00 1970 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 8E0A22673A3 for ; Tue, 8 Apr 2025 08:50: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=1744102240; cv=none; b=YxMt7XwW8Gka8ttDQ4T2cJFYabVbIV5rJrgfVh6u2ZUt/iK+OoXNQW/mzgcoVN6zLtHiW/87LP9oevoYfxjpeNjeU0xkmhw0OXhZR3ISWFEkpOv23mg/OKO206llVHEjHGNUrzyOzxyWcuG//IBP/uHAnK5Bl/kH5RSEP8e5gJM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744102240; c=relaxed/simple; bh=2gPWJwQ9nkl6gP7/v0hkdihLo0d1p/EeJz3iO3462RA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Go77qgpnHpWm8wfssFzyJiRhfMguim51drHIR+2cGokTNaBy+QXR4O+uHdExq+dO0lNb6oy8+rj9pGQK7xQxlR8PEnXlNCPWHpUWHqyXTmH+x2H1zf1kQ4BaEygqJJvQjKdZf1KiMo/IN8evSueGdCV0avRS8K2/rKZLmlCFHZ0= 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=pFtMc5Cj; 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="pFtMc5Cj" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5382GMT2020154 for ; Tue, 8 Apr 2025 08:50:37 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= /zNMINPbbkWSgbjS3GT3zoPIt8rKYvAoMRG44wNvnhE=; b=pFtMc5CjxnZPXT1X FyciRSK4XKvmZ4zUKNaCQ1ckFE8OzEFjvBank8DUN2He/keoqQyyGPtokI1yWU/2 YwWc84i0Qhh3eYftR6aaZEbK7vnAvsW5rWUC0LXYf3ExwtUXVZ+7Fe1apxpbCQvF vXBBtcgGGvHkoR4NektmuDGsHLaNQmJEzvHMA3RtmsNNulkfEViAxuVwPrkGcoXt bEZtuAPGE0jik3h0dzw8IR1yNz/fUCMFWJ4+gqXWQpO4phaaCnWY9Mc7SXrmdug7 EO9PsItHzU22I/vecHAXrATsZV8bxhddSdk1Od4LmGXTGRIxnD50wDpdXfGd4jRl dGf9mA== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 45twd2q407-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 08 Apr 2025 08:50:37 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2ff82dd6de0so4055891a91.0 for ; Tue, 08 Apr 2025 01:50:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744102220; x=1744707020; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/zNMINPbbkWSgbjS3GT3zoPIt8rKYvAoMRG44wNvnhE=; b=TsG9XOo2x7O6TkPk/fAafD6R9Ff/eEPbWy3QLUgimLah27fg0aDWgfwhMJOFIAhGPK I1BWHIZyrSxPyUIyjrKUQlR3qHUzPwpRCKX07bdi//Wmdwi3IxjsDi27DgQlRoIxSap2 lJ8ZBToBX5mZEwlMPEP6gNKR4PwsicDLOvD2qJIvYBdbw5twZSOXQ4RgczytvtL8ElKu D0RlUAe4tSUFSdzuGnL01iXc2QcuILVSEpmYxG3fd4GawN6EMz+jFcwyrn3WmFQepHee UeBk8EiCnJ1kPeNJaGayc3EcZNOOoyU13+k45dWE48uUKeILc/HSehu9ILS0WCrS0+AH HLng== X-Forwarded-Encrypted: i=1; AJvYcCXy/B/PpQvkwJHMAyGw3vmRAPtMwTbGj4gOAl/MmZIfGkXOi8MSiqQ2m6grcJBUjkeX/62/fhQfmlIvdVc=@vger.kernel.org X-Gm-Message-State: AOJu0YylZPLUgg6N1h/8u51j8L5u20nRiBhXAwJ/9o2GecN4UUh+lEfL Nxogt3fP1U6x6MAqwsO2D29n36kmJSpuHXfml5ZUzr+3HuWyQPqw4Vp4+97MBeem+BSnnHLKtbT 70yDIYseitiPykpp1Uia9zK5oFfNEquAmdEwb6VNyq6C/nnpACM5y38W7xvC5F70XASB/gw0= X-Gm-Gg: ASbGncs6Ae7l1itm7+zwK/dB3Rg+kS+C5jXhIOQMbIbN5Jwt4LOK8IVxfAHH1m4QNFb Cqy4vRCRKE5/iGtg4gvBL8kUKTTWQLYyP96aXl+p4EqDGHYeC6mXupXCJxtO/GiwVk9V2z9jkyt TyS4BNzw4lv05f9R6nLs6DDLMHLgzEUWQRXE6Rd8W0AYj0sRPbKcP+h2Agy5PWTFaGLjiA4UfyI dEC0Oqq+J/c8P9AfeuGDP4Uvx6BS7dqGlWnnuiflrOtHadvqy8GuwbzR83P+3ZVhFlUtSNFmFoY GPNKW6dvYEwmeN9HkKioZ0dnvwjtAxGxilXtDIFoQ5r116KFN4Qwa+/oXDMOd8mYvRH/2+AAMRg ivn+VIIX3kaZMzjWSgbEB56UjQ+Q0G0TaOAwhO7GleQoHtJm7fiw= X-Received: by 2002:a17:90b:2809:b0:2ff:7031:e380 with SMTP id 98e67ed59e1d1-306a4865159mr23874323a91.10.1744102220433; Tue, 08 Apr 2025 01:50:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGEzlsUBlxlFv2r3IZhFuiNr9c+0kg5FQh1gTuWqSU0AZ+aCFkkyQ3LnD7iwnP1Llub+ztplA== X-Received: by 2002:a17:90b:2809:b0:2ff:7031:e380 with SMTP id 98e67ed59e1d1-306a4865159mr23874298a91.10.1744102220116; Tue, 08 Apr 2025 01:50:20 -0700 (PDT) Received: from hu-kathirav-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3057cb5a823sm10480846a91.34.2025.04.08.01.50.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 01:50:19 -0700 (PDT) From: Kathiravan Thirumoorthy Date: Tue, 08 Apr 2025 14:19:55 +0530 Subject: [PATCH RFC 5/6] watchdog: qcom-wdt: add support to read the restart reason from IMEM 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: 7bit Message-Id: <20250408-wdt_reset_reason-v1-5-e6ec30c2c926@oss.qualcomm.com> References: <20250408-wdt_reset_reason-v1-0-e6ec30c2c926@oss.qualcomm.com> In-Reply-To: <20250408-wdt_reset_reason-v1-0-e6ec30c2c926@oss.qualcomm.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Wim Van Sebroeck , Guenter Roeck Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-watchdog@vger.kernel.org, Kathiravan Thirumoorthy X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744102197; l=2693; i=kathiravan.thirumoorthy@oss.qualcomm.com; s=20230906; h=from:subject:message-id; bh=2gPWJwQ9nkl6gP7/v0hkdihLo0d1p/EeJz3iO3462RA=; b=txQ48fik5cOdcfeFlw6D25CynH5OMrke1E4zv1RwFiiWeAuIUtYFzYqv6n2nvRjdEPPwB6Wds uix2zbEC6HcBC0GRe+MJUsR1wAcCLuvpLv8NSBVWfEvQy4OilbdE9h0 X-Developer-Key: i=kathiravan.thirumoorthy@oss.qualcomm.com; a=ed25519; pk=xWsR7pL6ch+vdZ9MoFGEaP61JUaRf0XaZYWztbQsIiM= X-Proofpoint-ORIG-GUID: 15_8RtVsHHP5AV-RMeANiCqrhrD_yIRi X-Proofpoint-GUID: 15_8RtVsHHP5AV-RMeANiCqrhrD_yIRi X-Authority-Analysis: v=2.4 cv=NaLm13D4 c=1 sm=1 tr=0 ts=67f4e35d cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=XR8D0OoHHMoA:10 a=EUspDBNiAAAA:8 a=wRHcB2d8lc4RNk_KFh8A:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-08_03,2025-04-07_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 impostorscore=0 priorityscore=1501 adultscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 mlxlogscore=999 clxscore=1015 phishscore=0 spamscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504080063 When the system boots up after a watchdog reset, the EXPIRED_STATUS bit in the WDT_STS register is cleared. To identify if the system was restarted due to WDT expiry, bootloaders update the information in the IMEM region. Update the driver to read the restart reason from IMEM and populate the bootstatus accordingly. For backward compatibility, keep the EXPIRED_STATUS bit check. Add a new function qcom_wdt_get_restart_reason() to read the restart reason from IMEM. Signed-off-by: Kathiravan Thirumoorthy --- drivers/watchdog/qcom-wdt.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/drivers/watchdog/qcom-wdt.c b/drivers/watchdog/qcom-wdt.c index 006f9c61aa64fd2b4ee9db493aeb54c8fafac818..54d6eaa132ab9f63e1312a69ad51b7a14f78fe2d 100644 --- a/drivers/watchdog/qcom-wdt.c +++ b/drivers/watchdog/qcom-wdt.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -22,6 +23,8 @@ enum wdt_reg { #define QCOM_WDT_ENABLE BIT(0) +#define NON_SECURE_WDT_RESET 0x5 + static const u32 reg_offset_data_apcs_tmr[] = { [WDT_RST] = 0x38, [WDT_EN] = 0x40, @@ -187,6 +190,39 @@ static const struct qcom_wdt_match_data match_data_kpss = { .max_tick_count = 0xFFFFFU, }; +static int qcom_wdt_get_restart_reason(struct qcom_wdt *wdt) +{ + struct device_node *np; + struct resource imem; + void __iomem *base; + int ret; + + np = of_find_compatible_node(NULL, NULL, "qcom,restart-reason-info"); + if (!np) + return -ENOENT; + + ret = of_address_to_resource(np, 0, &imem); + of_node_put(np); + if (ret < 0) { + dev_err(wdt->wdd.parent, "can't translate OF node address\n"); + return ret; + } + + base = ioremap(imem.start, resource_size(&imem)); + if (!base) { + dev_err(wdt->wdd.parent, "failed to map restart reason info region\n"); + return -ENOMEM; + } + + memcpy_fromio(&ret, base, sizeof(ret)); + iounmap(base); + + if (ret == NON_SECURE_WDT_RESET) + wdt->wdd.bootstatus = WDIOF_CARDRESET; + + return 0; +} + static int qcom_wdt_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -267,7 +303,9 @@ static int qcom_wdt_probe(struct platform_device *pdev) wdt->wdd.parent = dev; wdt->layout = data->offset; - if (readl(wdt_addr(wdt, WDT_STS)) & 1) + ret = qcom_wdt_get_restart_reason(wdt); + if (ret == -ENOENT && + readl(wdt_addr(wdt, WDT_STS)) & 1) wdt->wdd.bootstatus = WDIOF_CARDRESET; /* -- 2.34.1