From mboxrd@z Thu Jan 1 00:00:00 1970 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 B84B9276020 for ; Wed, 28 May 2025 09:21:48 +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=1748424110; cv=none; b=rbLF6nhvaUxaszB7nUeloACYitQ67UybmOZnVzLQruk2lulY9wWph26XTstSL+4oaUz5sFaGzCPd0O8B0jT5Ztfi6zOgaze1HTeJuIGYCzvQIlhHSiZSPaTLgLS4IYvEmiy/NCYhYdnWlrswZFbeOxLrdEFFHEte3UbylRf/ex4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748424110; c=relaxed/simple; bh=T0qYIbqFmqXVvM8maSPUINWxr6ffxALcDRq37QKDpUE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=estbxSU2MUGpJHuDn8ngO0tZGOUJlG99kE2eZ/PJPQJJtSjJy/A2GXUR4NOOPD6xEhRULvHC7lrP0MxmGQu9wQLkj8ngbIDcEzZF+q6OmP8Vn47uK43XdgkhEXQ5+aZ/9n4BdvvWPdwb+CKFrT9uRhNhQOdUN/C1SdgVaq2y+jE= 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=ppHM1wiz; 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="ppHM1wiz" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54S93rt2023955 for ; Wed, 28 May 2025 09:21:47 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= B3e5gD1TIG3daxgo7uyZ1bho3H0+oAlBxtTqaML4VOk=; b=ppHM1wiz35/e14BJ rg3mpo6uNPruYpkZuXVhQaJBJnCYjDujdXVcdwnkVNTlrxIZhV+khD4nW2C0GC+U XNcZq3a4Yp5sa6YMDHBMZ5sYRiDWwTaHNlNn80TerMqxJV6VOE11X27cjJmUa+tu puBCLJ55CesNIHXt51wDVD7ptmfYefM4U8Un3RUrWwKEGDIxbCBz0udzIlNEuRyt VtQn//uo0hn+88IVnuzwrGa158NNxY1LPiymPGvV6T2fkFt0YVogblK0ezeHkqIv GYpE4kqooAve0ufqdsUpKtphzGi56kYZyogZG40qhZ9Pb2KLD4WxUGthNK6GbH95 v6L/Gg== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46u5ek1n9k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Wed, 28 May 2025 09:21:47 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-742aa6581caso3276509b3a.3 for ; Wed, 28 May 2025 02:21:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748424106; x=1749028906; 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=B3e5gD1TIG3daxgo7uyZ1bho3H0+oAlBxtTqaML4VOk=; b=pIeyD8fmHdXq9r3IAG6Jz4bGv7Ou14rtPjhz0MFXOLgZ8VyYKkyu0zV/ABU3MO+v7N PtMqQLsrgKyXXFmu8m6bxPsudsgzQ+e1/uphOiJtEspuQHzRBRNu2lWMqSsgV6jlZEeu YBiEH982Q4zYyN5CurxA5wdy7q2vqcSSPCAkghBk0pex31P2kJxdrpAW3M7OWJ+sALfR NX1dzBMKVK1sxL+YLUgPlfMBKllNYNezCGaNuSN/XiE1Y6s558G6gPx2KLbRLflIH6XB S9RVfQpYqpKSFz0jGnadPxkAB6x+2ET70BMOae7S8Wj1gRGqUhqJM4maLgOvx49MdR9c wL7Q== X-Forwarded-Encrypted: i=1; AJvYcCW9oLYhe4W3Rp6p4NSHAgOAJ0v9jhMSCrXeWKReQYjMeJl2dyAg4e4PeU0vtumBxSrgxzNJP/K6v25/@vger.kernel.org X-Gm-Message-State: AOJu0YyoUiLM2g/sBktNUXvQSH79cAZ9GOoKvcKCQDD8lpOpU+wuEOXZ lgXpwp4vQ9BgNBE4iuN3IEY6laxuOp6gkM4qfchfY/lvvizG3p2CAyTgDUxy84VsYZWL5gkSaTj QhIFzYnHHQ3/M/pdqJnf+sirZhxH14bn1TFfOpcexvlwbHFQtrY9C9eE7Afj9nXUMJUbQ/mhm X-Gm-Gg: ASbGnctw6TG/HB2wUb3fl3kdsDUJRi3i8/V9F3RrhAPvHr6RBA/lXwhaEQJkEoPUlUA qKTkYMkDn0z3VA/3qPXwx/jVM69xcMMFcVkyT8Nv0G5Qnlxs87+Ocf/Enyj5wW9hLRHP+cjdEEc GxBmplYpXssVMTX6dEoB3NNmYFZmm9blweXuTvyecEAqHN/pN16tMiRNVHULiKKSEUnpxWC/KwE OeIT0H42kuf0sIG2DbEJ9YLFSoGDrw5XByy1MhvAv1oS4KPwXirCfdboK9h7xJwmuZfZgbGc/ky sNWfzb1TzTv5FhlrEu/Y7c5vcQ== X-Received: by 2002:a05:6a00:6f1b:b0:746:2706:a7fc with SMTP id d2e1a72fcca58-7462706a9a7mr8987452b3a.12.1748424105957; Wed, 28 May 2025 02:21:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHEXmimPDwaXlupcBQXflbX55k4GLlXfzZNdxsktITY1gbSKn/j9w2AKmwk2GPM1FYEG7Z2Mg== X-Received: by 2002:a05:6a00:6f1b:b0:746:2706:a7fc with SMTP id d2e1a72fcca58-7462706a9a7mr8987413b3a.12.1748424105590; Wed, 28 May 2025 02:21:45 -0700 (PDT) Received: from [10.213.103.17] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-746e343c2c6sm833456b3a.134.2025.05.28.02.21.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 May 2025 02:21:45 -0700 (PDT) From: Maulik Shah Date: Wed, 28 May 2025 14:51:32 +0530 Subject: [PATCH v4 2/3] soc: qcom: qcom_stats: Add QMP support for syncing ddr stats Precedence: bulk X-Mailing-List: devicetree@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: <20250528-ddr_stats_-v4-2-b4b7dae072dc@oss.qualcomm.com> References: <20250528-ddr_stats_-v4-0-b4b7dae072dc@oss.qualcomm.com> In-Reply-To: <20250528-ddr_stats_-v4-0-b4b7dae072dc@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Marijn Suijten , Doug Anderson , Maulik Shah X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1748424095; l=2841; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=T0qYIbqFmqXVvM8maSPUINWxr6ffxALcDRq37QKDpUE=; b=wVOZUEvKvoGhedr3yzrqmQMTShbymVV7iWXl2rRbQJHFFPz/HBRxb11xzEHex1TYPINp7IN3M v/DY+hZM1ukCSok/O7Tjx+XdERUg2Ap7re/x4rspVYkVCCnQffJH+Oh X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Authority-Analysis: v=2.4 cv=GIgIEvNK c=1 sm=1 tr=0 ts=6836d5ab cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=EUspDBNiAAAA:8 a=BT90xxDHZu-g9S-RVkkA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: Ao-Baa6RFxa0_etqk_L6bnOfasjzEAaB X-Proofpoint-GUID: Ao-Baa6RFxa0_etqk_L6bnOfasjzEAaB X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTI4MDA3OSBTYWx0ZWRfX3g4orWChEeQw 3MIBM4q1TheDVC4DO74Q1db7hqCUNwXG5UxQwpUoqPsRU5UPbCPxamWcoajAENSEtdjKA403jVz Jt6ta/jmM6TDkisjWde5cfwMK8K53r2gigrXHz7SgEbXIaQ8i7/ciozBH/UMDPjkJ96ISOWB0oe W9qBAyMGMajtsFUvF4RLHVw6OJTeJuehT2fuShG5JMR+LFrBLpkqloVrQ4og54OVSjOIQOPaY9X CdEMToYjjPE4ZKNHhTCZYKMMd7BgoGdpwFPAvihZ9f0OrD4NNKl4fNsXys0DzA9S/tUBArBULzD wVaxoN7zEzz6af6pvvpbCpOxTqr+UEBkL93E2Sw1Z18xHc/+VYgJIvYEOC06l1JCKb3ez8lXOFA q4i9/76wmQDM6JAh46/mnVw+K6hjtmKQdpgBbkparXPQPFryvUjPjAxDAjpQzVSPK0GnMnCO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-28_04,2025-05-27_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 priorityscore=1501 mlxscore=0 phishscore=0 spamscore=0 suspectscore=0 mlxlogscore=999 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505160000 definitions=main-2505280079 Recent SoCs (SM8450 onwards) require QMP command to be sent before reading ddr stats. The duration field of ddr stats will get populated only if QMP command is sent. Add support to send ddr stats freqsync QMP command. Signed-off-by: Maulik Shah --- drivers/soc/qcom/qcom_stats.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/soc/qcom/qcom_stats.c b/drivers/soc/qcom/qcom_stats.c index 33fd2a1574464768bd07289e743fbb79ba415e84..0545c8cbefb8f18758d4eb51638e4ecb94e05422 100644 --- a/drivers/soc/qcom/qcom_stats.c +++ b/drivers/soc/qcom/qcom_stats.c @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -37,6 +38,8 @@ #define DDR_STATS_TYPE(data) FIELD_GET(GENMASK(15, 8), data) #define DDR_STATS_FREQ(data) FIELD_GET(GENMASK(31, 16), data) +static struct qmp *qcom_stats_qmp; + struct subsystem_data { const char *name; u32 smem_item; @@ -188,12 +191,28 @@ static int qcom_ddr_stats_show(struct seq_file *s, void *d) struct ddr_stats_entry data[DDR_STATS_MAX_NUM_MODES]; void __iomem *reg = (void __iomem *)s->private; u32 entry_count; - int i; + int i, ret; entry_count = readl_relaxed(reg + DDR_STATS_NUM_MODES_ADDR); if (entry_count > DDR_STATS_MAX_NUM_MODES) return -EINVAL; + if (qcom_stats_qmp) { + /* + * Recent SoCs (SM8450 onwards) do not have duration field + * populated from boot up onwards for both DDR LPM Stats + * and DDR Frequency Stats. + * + * Send QMP message to Always on processor which will + * populate duration field into MSG RAM area. + * + * Sent every time to read latest data. + */ + ret = qmp_send(qcom_stats_qmp, "{class: ddr, action: freqsync}"); + if (ret) + return ret; + } + reg += DDR_STATS_ENTRY_START_ADDR; memcpy_fromio(data, reg, sizeof(struct ddr_stats_entry) * entry_count); @@ -304,6 +323,19 @@ static int qcom_stats_probe(struct platform_device *pdev) for (i = 0; i < config->num_records; i++) d[i].appended_stats_avail = config->appended_stats_avail; + /* + * QMP is used for DDR stats syncing to MSG RAM for recent SoCs (SM8450 onwards). + * The prior SoCs do not need QMP handle as the required stats are already present + * in MSG RAM, provided the DDR_STATS_MAGIC_KEY matches. + */ + qcom_stats_qmp = qmp_get(&pdev->dev); + if (IS_ERR(qcom_stats_qmp)) { + if (PTR_ERR(qcom_stats_qmp) == -EPROBE_DEFER) + return -EPROBE_DEFER; + + /* We assume any other error means it's not defined/needed */ + qcom_stats_qmp = NULL; + } root = debugfs_create_dir("qcom_stats", NULL); -- 2.34.1