* [PATCH v2 0/2] coresight: Add remote etm support
@ 2024-08-07 7:10 Mao Jinlong
2024-08-07 7:10 ` [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm Mao Jinlong
2024-08-07 7:10 ` [PATCH v2 2/2] coresight: Add remote etm support Mao Jinlong
0 siblings, 2 replies; 9+ messages in thread
From: Mao Jinlong @ 2024-08-07 7:10 UTC (permalink / raw)
To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin,
Andy Gross, Bjorn Andersson, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Mao Jinlong, linux-kernel, coresight, linux-arm-kernel,
linux-arm-msm, devicetree
The system on chip (SoC) consists of main APSS(Applications processor
subsytem) and additional processors like modem, lpass. There is
coresight-etm driver for etm trace of APSS. Coresight remote etm driver
is for enabling and disabling the etm trace of remote processors.
It uses QMI interface to communicate with remote processors' software
and uses coresight framework to configure the connection from remote
etm source to TMC sinks.
Example to capture the remote etm trace:
Enable source:
echo 1 > /sys/bus/coresight/devices/tmc_etf0/enable_sink
echo 1 > /sys/bus/coresight/devices/remote_etm0/enable_source
Capture the trace:
cat /dev/tmc_etf0 > /data/remote_etm.bin
Disable source:
echo 0 > /sys/bus/coresight/devices/remote_etm0/enable_source
Changes since V1:
1. Remove unused content
2. Use CORESIGHT_DEV_SUBTYPE_SOURCE_OTHERS as remote etm source type.
3. Use enabled instead of enable in driver data.
4. Validate instance id value where it's read from the DT.
Mao Jinlong (2):
dt-bindings: arm: Add qcom,inst-id for remote etm
coresight: Add remote etm support
.../arm/qcom,coresight-remote-etm.yaml | 10 +
drivers/hwtracing/coresight/Kconfig | 13 +
drivers/hwtracing/coresight/Makefile | 1 +
drivers/hwtracing/coresight/coresight-qmi.h | 89 +++++
.../coresight/coresight-remote-etm.c | 308 ++++++++++++++++++
5 files changed, 421 insertions(+)
create mode 100644 drivers/hwtracing/coresight/coresight-qmi.h
create mode 100644 drivers/hwtracing/coresight/coresight-remote-etm.c
--
2.41.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm
2024-08-07 7:10 [PATCH v2 0/2] coresight: Add remote etm support Mao Jinlong
@ 2024-08-07 7:10 ` Mao Jinlong
2024-08-08 10:25 ` Suzuki K Poulose
2024-08-13 17:41 ` Rob Herring
2024-08-07 7:10 ` [PATCH v2 2/2] coresight: Add remote etm support Mao Jinlong
1 sibling, 2 replies; 9+ messages in thread
From: Mao Jinlong @ 2024-08-07 7:10 UTC (permalink / raw)
To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin,
Andy Gross, Bjorn Andersson, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Mao Jinlong, linux-kernel, coresight, linux-arm-kernel,
linux-arm-msm, devicetree
qcom,inst-id is the instance id used by qmi API to communicate with
remote processor.
Signed-off-by: Mao Jinlong <quic_jinlmao@quicinc.com>
---
.../bindings/arm/qcom,coresight-remote-etm.yaml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml b/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
index 4fd5752978cd..a65121505c68 100644
--- a/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
@@ -20,6 +20,13 @@ properties:
compatible:
const: qcom,coresight-remote-etm
+ qcom,inst-id:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ This id is used by qmi API to communicate with remote processor for
+ enabling and disabling remote etm. Each processor has its unique instance
+ id.
+
out-ports:
$ref: /schemas/graph.yaml#/properties/ports
additionalProperties: false
@@ -31,6 +38,7 @@ properties:
required:
- compatible
+ - qcom,inst-id
- out-ports
additionalProperties: false
@@ -40,6 +48,8 @@ examples:
etm {
compatible = "qcom,coresight-remote-etm";
+ qcom,inst-id = <5>;
+
out-ports {
port {
modem_etm0_out_funnel_modem: endpoint {
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/2] coresight: Add remote etm support
2024-08-07 7:10 [PATCH v2 0/2] coresight: Add remote etm support Mao Jinlong
2024-08-07 7:10 ` [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm Mao Jinlong
@ 2024-08-07 7:10 ` Mao Jinlong
2024-08-07 21:27 ` kernel test robot
` (2 more replies)
1 sibling, 3 replies; 9+ messages in thread
From: Mao Jinlong @ 2024-08-07 7:10 UTC (permalink / raw)
To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin,
Andy Gross, Bjorn Andersson, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Mao Jinlong, linux-kernel, coresight, linux-arm-kernel,
linux-arm-msm, devicetree
The system on chip (SoC) consists of main APSS(Applications
processor subsytem) and additional processors like modem, lpass.
Coresight remote etm(Embedded Trace Macrocell) driver is for
enabling and disabling the etm trace of remote processors. It
uses QMI interface to communicate with remote processors' software
and uses coresight framework to configure the connection from
remote etm source to TMC sinks.
Signed-off-by: Mao Jinlong <quic_jinlmao@quicinc.com>
---
drivers/hwtracing/coresight/Kconfig | 13 +
drivers/hwtracing/coresight/Makefile | 1 +
drivers/hwtracing/coresight/coresight-qmi.h | 89 +++++
.../coresight/coresight-remote-etm.c | 308 ++++++++++++++++++
4 files changed, 411 insertions(+)
create mode 100644 drivers/hwtracing/coresight/coresight-qmi.h
create mode 100644 drivers/hwtracing/coresight/coresight-remote-etm.c
diff --git a/drivers/hwtracing/coresight/Kconfig b/drivers/hwtracing/coresight/Kconfig
index 06f0a7594169..27a1c61613c7 100644
--- a/drivers/hwtracing/coresight/Kconfig
+++ b/drivers/hwtracing/coresight/Kconfig
@@ -247,4 +247,17 @@ config CORESIGHT_DUMMY
To compile this driver as a module, choose M here: the module will be
called coresight-dummy.
+
+config CORESIGHT_REMOTE_ETM
+ tristate "Remote processor ETM trace support"
+ select QCOM_QMI_HELPERS
+ help
+ Enables support for ETM trace collection on remote processor using
+ CoreSight framework. Enabling this will allow turning on ETM
+ tracing on remote processor via sysfs by configuring the required
+ CoreSight components.
+
+ To compile this driver as a module, choose M here: the module will be
+ called coresight-remote-etm.
+
endif
diff --git a/drivers/hwtracing/coresight/Makefile b/drivers/hwtracing/coresight/Makefile
index 4ba478211b31..e0781d729eb3 100644
--- a/drivers/hwtracing/coresight/Makefile
+++ b/drivers/hwtracing/coresight/Makefile
@@ -51,3 +51,4 @@ coresight-cti-y := coresight-cti-core.o coresight-cti-platform.o \
coresight-cti-sysfs.o
obj-$(CONFIG_ULTRASOC_SMB) += ultrasoc-smb.o
obj-$(CONFIG_CORESIGHT_DUMMY) += coresight-dummy.o
+obj-$(CONFIG_CORESIGHT_REMOTE_ETM) += coresight-remote-etm.o
diff --git a/drivers/hwtracing/coresight/coresight-qmi.h b/drivers/hwtracing/coresight/coresight-qmi.h
new file mode 100644
index 000000000000..76ce9b7fdf0a
--- /dev/null
+++ b/drivers/hwtracing/coresight/coresight-qmi.h
@@ -0,0 +1,89 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _CORESIGHT_QMI_H
+#define _CORESIGHT_QMI_H
+
+#include <linux/soc/qcom/qmi.h>
+
+#define CORESIGHT_QMI_SVC_ID (0x33)
+#define CORESIGHT_QMI_VERSION (1)
+
+#define CORESIGHT_QMI_GET_ETM_REQ_V01 (0x002B)
+#define CORESIGHT_QMI_GET_ETM_RESP_V01 (0x002B)
+#define CORESIGHT_QMI_SET_ETM_REQ_V01 (0x002C)
+#define CORESIGHT_QMI_SET_ETM_RESP_V01 (0x002C)
+
+#define CORESIGHT_QMI_GET_ETM_REQ_MAX_LEN (0)
+#define CORESIGHT_QMI_GET_ETM_RESP_MAX_LEN (14)
+#define CORESIGHT_QMI_SET_ETM_REQ_MAX_LEN (7)
+#define CORESIGHT_QMI_SET_ETM_RESP_MAX_LEN (7)
+
+#define TIMEOUT_MS (10000)
+
+enum coresight_etm_state_enum_type_v01 {
+ /* To force a 32 bit signed enum. Do not change or use */
+ CORESIGHT_ETM_STATE_ENUM_TYPE_MIN_ENUM_VAL_V01 = INT_MIN,
+ CORESIGHT_ETM_STATE_DISABLED_V01 = 0,
+ CORESIGHT_ETM_STATE_ENABLED_V01 = 1,
+ CORESIGHT_ETM_STATE_ENUM_TYPE_MAX_ENUM_VAL_01 = INT_MAX,
+};
+
+struct coresight_set_etm_req_msg_v01 {
+ /* Mandatory */
+ /* ETM output state */
+ enum coresight_etm_state_enum_type_v01 state;
+};
+
+struct coresight_set_etm_resp_msg_v01 {
+ /* Mandatory */
+ struct qmi_response_type_v01 resp;
+};
+
+static struct qmi_elem_info coresight_set_etm_req_msg_v01_ei[] = {
+ {
+ .data_type = QMI_UNSIGNED_4_BYTE,
+ .elem_len = 1,
+ .elem_size = sizeof(enum coresight_etm_state_enum_type_v01),
+ .array_type = NO_ARRAY,
+ .tlv_type = 0x01,
+ .offset = offsetof(struct coresight_set_etm_req_msg_v01,
+ state),
+ .ei_array = NULL,
+ },
+ {
+ .data_type = QMI_EOTI,
+ .elem_len = 0,
+ .elem_size = 0,
+ .array_type = NO_ARRAY,
+ .tlv_type = 0,
+ .offset = 0,
+ .ei_array = NULL,
+ },
+};
+
+static struct qmi_elem_info coresight_set_etm_resp_msg_v01_ei[] = {
+ {
+ .data_type = QMI_STRUCT,
+ .elem_len = 1,
+ .elem_size = sizeof(struct qmi_response_type_v01),
+ .array_type = NO_ARRAY,
+ .tlv_type = 0x02,
+ .offset = offsetof(struct coresight_set_etm_resp_msg_v01,
+ resp),
+ .ei_array = qmi_response_type_v01_ei,
+ },
+ {
+ .data_type = QMI_EOTI,
+ .elem_len = 0,
+ .elem_size = 0,
+ .array_type = NO_ARRAY,
+ .tlv_type = 0,
+ .offset = 0,
+ .ei_array = NULL,
+ },
+};
+
+#endif
diff --git a/drivers/hwtracing/coresight/coresight-remote-etm.c b/drivers/hwtracing/coresight/coresight-remote-etm.c
new file mode 100644
index 000000000000..7d01e17b9210
--- /dev/null
+++ b/drivers/hwtracing/coresight/coresight-remote-etm.c
@@ -0,0 +1,308 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/types.h>
+#include <linux/device.h>
+#include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
+#include <linux/io.h>
+#include <linux/err.h>
+#include <linux/sysfs.h>
+#include <linux/mutex.h>
+#include <linux/of.h>
+#include <linux/coresight.h>
+#include "coresight-qmi.h"
+#include "coresight-priv.h"
+
+DEFINE_CORESIGHT_DEVLIST(remote_etm_devs, "remote-etm");
+
+#define MAX_INSTANCE_ID 0xFF
+
+struct remote_etm_drvdata {
+ struct device *dev;
+ struct coresight_device *csdev;
+ struct mutex mutex;
+ struct qmi_handle handle;
+ u32 inst_id;
+ bool enabled;
+ bool service_connected;
+ struct sockaddr_qrtr s_addr;
+};
+
+static int service_remote_etm_new_server(struct qmi_handle *qmi,
+ struct qmi_service *svc)
+{
+ struct remote_etm_drvdata *drvdata = container_of(qmi,
+ struct remote_etm_drvdata, handle);
+
+ drvdata->s_addr.sq_family = AF_QIPCRTR;
+ drvdata->s_addr.sq_node = svc->node;
+ drvdata->s_addr.sq_port = svc->port;
+ drvdata->service_connected = true;
+ dev_info(drvdata->dev,
+ "Connection established between QMI handle and %d service\n",
+ drvdata->inst_id);
+
+ return 0;
+}
+
+static void service_remote_etm_del_server(struct qmi_handle *qmi,
+ struct qmi_service *svc)
+{
+ struct remote_etm_drvdata *drvdata = container_of(qmi,
+ struct remote_etm_drvdata, handle);
+ drvdata->service_connected = false;
+ dev_info(drvdata->dev,
+ "Connection disconnected between QMI handle and %d service\n",
+ drvdata->inst_id);
+}
+
+static struct qmi_ops server_ops = {
+ .new_server = service_remote_etm_new_server,
+ .del_server = service_remote_etm_del_server,
+};
+
+static int remote_etm_enable(struct coresight_device *csdev,
+ struct perf_event *event, u32 mode)
+{
+ struct remote_etm_drvdata *drvdata =
+ dev_get_drvdata(csdev->dev.parent);
+ struct coresight_set_etm_req_msg_v01 req;
+ struct coresight_set_etm_resp_msg_v01 resp = { { 0, 0 } };
+ struct qmi_txn txn;
+ int ret;
+
+ mutex_lock(&drvdata->mutex);
+
+ if (!drvdata->service_connected) {
+ dev_err(drvdata->dev, "QMI service not connected!\n");
+ ret = -EINVAL;
+ goto err;
+ }
+ /*
+ * The QMI handle may be NULL in the following scenarios:
+ * 1. QMI service is not present
+ * 2. QMI service is present but attempt to enable remote ETM is earlier
+ * than service is ready to handle request
+ * 3. Connection between QMI client and QMI service failed
+ *
+ * Enable CoreSight without processing further QMI commands which
+ * provides the option to enable remote ETM by other means.
+ */
+ req.state = CORESIGHT_ETM_STATE_ENABLED_V01;
+
+ ret = qmi_txn_init(&drvdata->handle, &txn,
+ coresight_set_etm_resp_msg_v01_ei,
+ &resp);
+
+ if (ret < 0) {
+ dev_err(drvdata->dev, "QMI tx init failed , ret:%d\n",
+ ret);
+ goto err;
+ }
+
+ ret = qmi_send_request(&drvdata->handle, &drvdata->s_addr,
+ &txn, CORESIGHT_QMI_SET_ETM_REQ_V01,
+ CORESIGHT_QMI_SET_ETM_REQ_MAX_LEN,
+ coresight_set_etm_req_msg_v01_ei,
+ &req);
+ if (ret < 0) {
+ dev_err(drvdata->dev, "QMI send ACK failed, ret:%d\n",
+ ret);
+ qmi_txn_cancel(&txn);
+ goto err;
+ }
+
+ ret = qmi_txn_wait(&txn, msecs_to_jiffies(TIMEOUT_MS));
+ if (ret < 0) {
+ dev_err(drvdata->dev, "QMI qmi txn wait failed, ret:%d\n",
+ ret);
+ goto err;
+ }
+
+ /* Check the response */
+ if (resp.resp.result != QMI_RESULT_SUCCESS_V01)
+ dev_err(drvdata->dev, "QMI request failed 0x%x\n",
+ resp.resp.error);
+
+ drvdata->enabled = true;
+ mutex_unlock(&drvdata->mutex);
+
+ dev_dbg(drvdata->dev, "Remote ETM tracing enabled for instance %d\n",
+ drvdata->inst_id);
+ return 0;
+err:
+ mutex_unlock(&drvdata->mutex);
+ return ret;
+}
+
+static void remote_etm_disable(struct coresight_device *csdev,
+ struct perf_event *event)
+{
+ struct remote_etm_drvdata *drvdata =
+ dev_get_drvdata(csdev->dev.parent);
+ struct coresight_set_etm_req_msg_v01 req;
+ struct coresight_set_etm_resp_msg_v01 resp = { { 0, 0 } };
+ struct qmi_txn txn;
+ int ret;
+
+ mutex_lock(&drvdata->mutex);
+ if (!drvdata->service_connected) {
+ dev_err(drvdata->dev, "QMI service not connected!\n");
+ goto err;
+ }
+
+ req.state = CORESIGHT_ETM_STATE_DISABLED_V01;
+
+ ret = qmi_txn_init(&drvdata->handle, &txn,
+ coresight_set_etm_resp_msg_v01_ei,
+ &resp);
+
+ if (ret < 0) {
+ dev_err(drvdata->dev, "QMI tx init failed , ret:%d\n",
+ ret);
+ goto err;
+ }
+
+ ret = qmi_send_request(&drvdata->handle, &drvdata->s_addr,
+ &txn, CORESIGHT_QMI_SET_ETM_REQ_V01,
+ CORESIGHT_QMI_SET_ETM_REQ_MAX_LEN,
+ coresight_set_etm_req_msg_v01_ei,
+ &req);
+ if (ret < 0) {
+ dev_err(drvdata->dev, "QMI send req failed, ret:%d\n",
+ ret);
+ qmi_txn_cancel(&txn);
+ goto err;
+ }
+
+ ret = qmi_txn_wait(&txn, msecs_to_jiffies(TIMEOUT_MS));
+ if (ret < 0) {
+ dev_err(drvdata->dev, "QMI qmi txn wait failed, ret:%d\n",
+ ret);
+ goto err;
+ }
+
+ /* Check the response */
+ if (resp.resp.result != QMI_RESULT_SUCCESS_V01) {
+ dev_err(drvdata->dev, "QMI request failed 0x%x\n",
+ resp.resp.error);
+ goto err;
+ }
+
+ drvdata->enabled = false;
+ dev_info(drvdata->dev, "Remote ETM tracing disabled for instance %d\n",
+ drvdata->inst_id);
+err:
+ mutex_unlock(&drvdata->mutex);
+}
+
+static const struct coresight_ops_source remote_etm_source_ops = {
+ .enable = remote_etm_enable,
+ .disable = remote_etm_disable,
+};
+
+static const struct coresight_ops remote_cs_ops = {
+ .source_ops = &remote_etm_source_ops,
+};
+
+static int remote_etm_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct coresight_platform_data *pdata;
+ struct remote_etm_drvdata *drvdata;
+ struct coresight_desc desc = {0 };
+ int ret;
+
+ desc.name = coresight_alloc_device_name(&remote_etm_devs, dev);
+ if (!desc.name)
+ return -ENOMEM;
+ pdata = coresight_get_platform_data(dev);
+ if (IS_ERR(pdata))
+ return PTR_ERR(pdata);
+ pdev->dev.platform_data = pdata;
+
+ pm_runtime_enable(dev);
+ drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL);
+ if (!drvdata)
+ return -ENOMEM;
+
+ drvdata->dev = &pdev->dev;
+ platform_set_drvdata(pdev, drvdata);
+
+ ret = of_property_read_u32(pdev->dev.of_node, "qcom,inst-id",
+ &drvdata->inst_id);
+ if (ret)
+ return ret;
+
+ if (drvdata->inst_id >= MAX_INSTANCE_ID) {
+ dev_err(dev, "inst_id is invalid.\n");
+ return -EINVAL;
+ }
+
+ mutex_init(&drvdata->mutex);
+
+ ret = qmi_handle_init(&drvdata->handle,
+ CORESIGHT_QMI_SET_ETM_REQ_MAX_LEN,
+ &server_ops, NULL);
+ if (ret < 0) {
+ dev_err_probe(dev, ret, "Remote ETM client init failed.\n");
+ return ret;
+ }
+
+ qmi_add_lookup(&drvdata->handle,
+ CORESIGHT_QMI_SVC_ID,
+ CORESIGHT_QMI_VERSION,
+ drvdata->inst_id);
+
+ desc.type = CORESIGHT_DEV_TYPE_SOURCE;
+ desc.subtype.source_subtype = CORESIGHT_DEV_SUBTYPE_SOURCE_OTHERS;
+ desc.ops = &remote_cs_ops;
+ desc.pdata = pdev->dev.platform_data;
+ desc.dev = &pdev->dev;
+ drvdata->csdev = coresight_register(&desc);
+ if (IS_ERR(drvdata->csdev)) {
+ ret = PTR_ERR(drvdata->csdev);
+ goto err;
+ }
+
+ return 0;
+err:
+ qmi_handle_release(&drvdata->handle);
+ return ret;
+}
+
+static int remote_etm_remove(struct platform_device *pdev)
+{
+ struct remote_etm_drvdata *drvdata = platform_get_drvdata(pdev);
+ struct device *dev = &pdev->dev;
+
+ pm_runtime_disable(dev);
+ qmi_handle_release(&drvdata->handle);
+ coresight_unregister(drvdata->csdev);
+ return 0;
+}
+
+static const struct of_device_id remote_etm_match[] = {
+ {.compatible = "qcom,coresight-remote-etm"},
+ {}
+};
+
+static struct platform_driver remote_etm_driver = {
+ .probe = remote_etm_probe,
+ .remove = remote_etm_remove,
+ .driver = {
+ .name = "coresight-remote-etm",
+ .of_match_table = remote_etm_match,
+ },
+};
+
+module_platform_driver(remote_etm_driver);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("CoreSight Remote ETM driver");
--
2.41.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] coresight: Add remote etm support
2024-08-07 7:10 ` [PATCH v2 2/2] coresight: Add remote etm support Mao Jinlong
@ 2024-08-07 21:27 ` kernel test robot
2024-08-07 23:00 ` kernel test robot
2024-08-08 2:03 ` kernel test robot
2 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-08-07 21:27 UTC (permalink / raw)
To: Mao Jinlong, Suzuki K Poulose, Mike Leach, James Clark,
Alexander Shishkin, Andy Gross, Bjorn Andersson, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: Paul Gazzillo, Necip Fazil Yildiran, oe-kbuild-all, Mao Jinlong,
linux-kernel, coresight, linux-arm-kernel, linux-arm-msm,
devicetree
Hi Mao,
kernel test robot noticed the following build warnings:
[auto build test WARNING on robh/for-next]
[also build test WARNING on linus/master v6.11-rc2 next-20240807]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Mao-Jinlong/dt-bindings-arm-Add-qcom-inst-id-for-remote-etm/20240807-151315
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/20240807071054.12742-3-quic_jinlmao%40quicinc.com
patch subject: [PATCH v2 2/2] coresight: Add remote etm support
config: arm-kismet-CONFIG_QCOM_QMI_HELPERS-CONFIG_CORESIGHT_REMOTE_ETM-0-0 (https://download.01.org/0day-ci/archive/20240808/202408080511.RIKNKoHh-lkp@intel.com/config)
reproduce: (https://download.01.org/0day-ci/archive/20240808/202408080511.RIKNKoHh-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408080511.RIKNKoHh-lkp@intel.com/
kismet warnings: (new ones prefixed by >>)
>> kismet: WARNING: unmet direct dependencies detected for QCOM_QMI_HELPERS when selected by CORESIGHT_REMOTE_ETM
WARNING: unmet direct dependencies detected for QCOM_QMI_HELPERS
Depends on [n]: NET [=n]
Selected by [y]:
- CORESIGHT_REMOTE_ETM [=y] && CORESIGHT [=y]
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] coresight: Add remote etm support
2024-08-07 7:10 ` [PATCH v2 2/2] coresight: Add remote etm support Mao Jinlong
2024-08-07 21:27 ` kernel test robot
@ 2024-08-07 23:00 ` kernel test robot
2024-08-08 2:03 ` kernel test robot
2 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-08-07 23:00 UTC (permalink / raw)
To: Mao Jinlong, Suzuki K Poulose, Mike Leach, James Clark,
Alexander Shishkin, Andy Gross, Bjorn Andersson, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: oe-kbuild-all, Mao Jinlong, linux-kernel, coresight,
linux-arm-kernel, linux-arm-msm, devicetree
Hi Mao,
kernel test robot noticed the following build errors:
[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.11-rc2 next-20240807]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Mao-Jinlong/dt-bindings-arm-Add-qcom-inst-id-for-remote-etm/20240807-151315
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/20240807071054.12742-3-quic_jinlmao%40quicinc.com
patch subject: [PATCH v2 2/2] coresight: Add remote etm support
config: arm-allmodconfig (https://download.01.org/0day-ci/archive/20240808/202408080637.ZZJbuvB3-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240808/202408080637.ZZJbuvB3-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408080637.ZZJbuvB3-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/hwtracing/coresight/coresight-remote-etm.c:298:27: error: initialization of 'void (*)(struct platform_device *)' from incompatible pointer type 'int (*)(struct platform_device *)' [-Wincompatible-pointer-types]
298 | .remove = remote_etm_remove,
| ^~~~~~~~~~~~~~~~~
drivers/hwtracing/coresight/coresight-remote-etm.c:298:27: note: (near initialization for 'remote_etm_driver.<anonymous>.remove')
vim +298 drivers/hwtracing/coresight/coresight-remote-etm.c
295
296 static struct platform_driver remote_etm_driver = {
297 .probe = remote_etm_probe,
> 298 .remove = remote_etm_remove,
299 .driver = {
300 .name = "coresight-remote-etm",
301 .of_match_table = remote_etm_match,
302 },
303 };
304
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/2] coresight: Add remote etm support
2024-08-07 7:10 ` [PATCH v2 2/2] coresight: Add remote etm support Mao Jinlong
2024-08-07 21:27 ` kernel test robot
2024-08-07 23:00 ` kernel test robot
@ 2024-08-08 2:03 ` kernel test robot
2 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-08-08 2:03 UTC (permalink / raw)
To: Mao Jinlong, Suzuki K Poulose, Mike Leach, James Clark,
Alexander Shishkin, Andy Gross, Bjorn Andersson, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: llvm, oe-kbuild-all, Mao Jinlong, linux-kernel, coresight,
linux-arm-kernel, linux-arm-msm, devicetree
Hi Mao,
kernel test robot noticed the following build errors:
[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.11-rc2 next-20240807]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Mao-Jinlong/dt-bindings-arm-Add-qcom-inst-id-for-remote-etm/20240807-151315
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/20240807071054.12742-3-quic_jinlmao%40quicinc.com
patch subject: [PATCH v2 2/2] coresight: Add remote etm support
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20240808/202408080922.hFC9XFAq-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 423aec6573df4424f90555468128e17073ddc69e)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240808/202408080922.hFC9XFAq-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408080922.hFC9XFAq-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/hwtracing/coresight/coresight-remote-etm.c:18:
In file included from include/linux/coresight.h:9:
In file included from include/linux/amba/bus.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:21:
In file included from include/linux/mm.h:2228:
include/linux/vmstat.h:500:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
500 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
501 | item];
| ~~~~
include/linux/vmstat.h:507:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
507 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
508 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:519:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
519 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
520 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:528:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
528 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
529 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/hwtracing/coresight/coresight-remote-etm.c:298:20: error: incompatible function pointer types initializing 'void (*)(struct platform_device *)' with an expression of type 'int (struct platform_device *)' [-Wincompatible-function-pointer-types]
298 | .remove = remote_etm_remove,
| ^~~~~~~~~~~~~~~~~
5 warnings and 1 error generated.
vim +298 drivers/hwtracing/coresight/coresight-remote-etm.c
295
296 static struct platform_driver remote_etm_driver = {
297 .probe = remote_etm_probe,
> 298 .remove = remote_etm_remove,
299 .driver = {
300 .name = "coresight-remote-etm",
301 .of_match_table = remote_etm_match,
302 },
303 };
304
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm
2024-08-07 7:10 ` [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm Mao Jinlong
@ 2024-08-08 10:25 ` Suzuki K Poulose
2024-08-13 7:30 ` Jinlong Mao
2024-08-13 17:41 ` Rob Herring
1 sibling, 1 reply; 9+ messages in thread
From: Suzuki K Poulose @ 2024-08-08 10:25 UTC (permalink / raw)
To: Mao Jinlong, Mike Leach, James Clark, Alexander Shishkin,
Andy Gross, Bjorn Andersson, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-kernel, coresight, linux-arm-kernel, linux-arm-msm,
devicetree
On 07/08/2024 08:10, Mao Jinlong wrote:
> qcom,inst-id is the instance id used by qmi API to communicate with
> remote processor.
>
> Signed-off-by: Mao Jinlong <quic_jinlmao@quicinc.com>
> ---
> .../bindings/arm/qcom,coresight-remote-etm.yaml | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml b/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
> index 4fd5752978cd..a65121505c68 100644
> --- a/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
> +++ b/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
> @@ -20,6 +20,13 @@ properties:
> compatible:
> const: qcom,coresight-remote-etm
That is a generic name, without any clue of the QMI transport. Are there
other ways in which an ETM could be connected ? Given how this QMI
inst-id is added, I wonder if this is an after thought ? Why was the dt
pushed without a proper driver for it ?
Suzuki
>
> + qcom,inst-id:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + This id is used by qmi API to communicate with remote processor for
> + enabling and disabling remote etm. Each processor has its unique instance
> + id.
> +
> out-ports:
> $ref: /schemas/graph.yaml#/properties/ports
> additionalProperties: false
> @@ -31,6 +38,7 @@ properties:
>
> required:
> - compatible
> + - qcom,inst-id
> - out-ports
>
> additionalProperties: false
> @@ -40,6 +48,8 @@ examples:
> etm {
> compatible = "qcom,coresight-remote-etm";
>
> + qcom,inst-id = <5>;
> +
> out-ports {
> port {
> modem_etm0_out_funnel_modem: endpoint {
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm
2024-08-08 10:25 ` Suzuki K Poulose
@ 2024-08-13 7:30 ` Jinlong Mao
0 siblings, 0 replies; 9+ messages in thread
From: Jinlong Mao @ 2024-08-13 7:30 UTC (permalink / raw)
To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin,
Andy Gross, Bjorn Andersson, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-kernel, coresight, linux-arm-kernel, linux-arm-msm,
devicetree
On 2024/8/8 18:25, Suzuki K Poulose wrote:
> On 07/08/2024 08:10, Mao Jinlong wrote:
>> qcom,inst-id is the instance id used by qmi API to communicate with
>> remote processor.
>>
>> Signed-off-by: Mao Jinlong <quic_jinlmao@quicinc.com>
>> ---
>> .../bindings/arm/qcom,coresight-remote-etm.yaml | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git
>> a/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
>> b/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
>> index 4fd5752978cd..a65121505c68 100644
>> ---
>> a/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
>> +++
>> b/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
>> @@ -20,6 +20,13 @@ properties:
>> compatible:
>> const: qcom,coresight-remote-etm
>
> That is a generic name, without any clue of the QMI transport. Are there
> other ways in which an ETM could be connected ? Given how this QMI
> inst-id is added, I wonder if this is an after thought ? Why was the dt
> pushed without a proper driver for it ?
>
>
> Suzuki
Hi Suzuki,
This driver is to enable/disable ETM of remote processors by QMI
service. QMI connection is the only way to communicate between kernel
driver and remote QMI service. Instance id is required. The id is unique
for each remote processor.
The dt is pushed to solve the device tree warning in Qualcomm's devicetree.
https://lore.kernel.org/linux-arm-msm/20231210072633.4243-1-quic_jinlmao@quicinc.com/
https://lore.kernel.org/linux-arm-msm/20231210072633.4243-2-quic_jinlmao@quicinc.com/
Thanks
Jinlong Mao
>
>
>> + qcom,inst-id:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description:
>> + This id is used by qmi API to communicate with remote processor
>> for
>> + enabling and disabling remote etm. Each processor has its
>> unique instance
>> + id.
>> +
>> out-ports:
>> $ref: /schemas/graph.yaml#/properties/ports
>> additionalProperties: false
>> @@ -31,6 +38,7 @@ properties:
>> required:
>> - compatible
>> + - qcom,inst-id
>> - out-ports
>> additionalProperties: false
>> @@ -40,6 +48,8 @@ examples:
>> etm {
>> compatible = "qcom,coresight-remote-etm";
>> + qcom,inst-id = <5>;
>> +
>> out-ports {
>> port {
>> modem_etm0_out_funnel_modem: endpoint {
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm
2024-08-07 7:10 ` [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm Mao Jinlong
2024-08-08 10:25 ` Suzuki K Poulose
@ 2024-08-13 17:41 ` Rob Herring
1 sibling, 0 replies; 9+ messages in thread
From: Rob Herring @ 2024-08-13 17:41 UTC (permalink / raw)
To: Mao Jinlong
Cc: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin,
Andy Gross, Bjorn Andersson, Krzysztof Kozlowski, Conor Dooley,
linux-kernel, coresight, linux-arm-kernel, linux-arm-msm,
devicetree
On Wed, Aug 07, 2024 at 12:10:50AM -0700, Mao Jinlong wrote:
> qcom,inst-id is the instance id used by qmi API to communicate with
> remote processor.
>
> Signed-off-by: Mao Jinlong <quic_jinlmao@quicinc.com>
> ---
> .../bindings/arm/qcom,coresight-remote-etm.yaml | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml b/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
> index 4fd5752978cd..a65121505c68 100644
> --- a/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
> +++ b/Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.yaml
> @@ -20,6 +20,13 @@ properties:
> compatible:
> const: qcom,coresight-remote-etm
>
> + qcom,inst-id:
qcom,qmi-id perhaps?
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + This id is used by qmi API to communicate with remote processor for
> + enabling and disabling remote etm. Each processor has its unique instance
> + id.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-08-13 17:41 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-07 7:10 [PATCH v2 0/2] coresight: Add remote etm support Mao Jinlong
2024-08-07 7:10 ` [PATCH v2 1/2] dt-bindings: arm: Add qcom,inst-id for remote etm Mao Jinlong
2024-08-08 10:25 ` Suzuki K Poulose
2024-08-13 7:30 ` Jinlong Mao
2024-08-13 17:41 ` Rob Herring
2024-08-07 7:10 ` [PATCH v2 2/2] coresight: Add remote etm support Mao Jinlong
2024-08-07 21:27 ` kernel test robot
2024-08-07 23:00 ` kernel test robot
2024-08-08 2:03 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).