Thread (13 messages) 13 messages, 1 author, 5d ago
COOLING5d

[PATCH RFC 05/12] rvtrace: encoder: Add pre-ratified support

From: Eric Lin <hidden>
Date: 2026-06-30 09:47:27
Also in: linux-riscv, lkml
Subsystem: hardware tracing facilities, the rest · Maintainers: Alexander Shishkin, Linus Torvalds

Add pre-ratified version support to the encoder driver and a
pre-ratified match rule in rvtrace_match_id(). This allows
pre-ratified trace hardware to leverage the rvtrace driver
framework.

Co-developed-by: Nick Hu <redacted>
Signed-off-by: Nick Hu <redacted>
Co-developed-by: Vincent Chen <redacted>
Signed-off-by: Vincent Chen <redacted>
Signed-off-by: Eric Lin <redacted>
---
 drivers/hwtracing/rvtrace/rvtrace-core.c    | 24 ++++++++++++++++--------
 drivers/hwtracing/rvtrace/rvtrace-encoder.c |  2 ++
 2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/drivers/hwtracing/rvtrace/rvtrace-core.c b/drivers/hwtracing/rvtrace/rvtrace-core.c
index 12ffc6917c70..153cf3ebffff 100644
--- a/drivers/hwtracing/rvtrace/rvtrace-core.c
+++ b/drivers/hwtracing/rvtrace/rvtrace-core.c
@@ -70,7 +70,7 @@ const struct rvtrace_component_id *rvtrace_match_id(struct rvtrace_component *co
 	u32 comp_maj, comp_min, id_maj, id_min;
 	const struct rvtrace_component_id *id;
 
-	for (id = ids; id->version && id->type; id++) {
+	for (id = ids; id->type; id++) {
 		if (comp->id.type != id->type)
 			return NULL;
 
@@ -81,13 +81,21 @@ const struct rvtrace_component_id *rvtrace_match_id(struct rvtrace_component *co
 		if (comp_maj > id_maj)
 			continue;
 
-		/* Refer to Ch. 5 'Versioning of components of the Trace Control spec. */
-		if (comp_maj < id_maj)
-			dev_warn(&comp->dev, "Older component with major version %d\n", comp_maj);
-		if (comp_min == 15)
-			dev_warn(&comp->dev, "Experimental component\n");
-		else if (comp_min > id_min)
-			dev_warn(&comp->dev, "Newer component with minor version %d\n", comp_min);
+		if (comp_maj == 0) {
+			if (id_maj > 0)
+				continue;
+		} else {
+			/* Refer to Ch. 5 'Versioning of components of the Trace Control spec. */
+			if (comp_maj < id_maj)
+				dev_warn(&comp->dev, "Older component with major version %d\n",
+					 comp_maj);
+			if (comp_min == 15)
+				dev_warn(&comp->dev, "Experimental component\n");
+			else if (comp_min > id_min)
+				dev_warn(&comp->dev, "Newer component with minor version %d\n",
+					 comp_min);
+		}
+
 
 		return id;
 	}
diff --git a/drivers/hwtracing/rvtrace/rvtrace-encoder.c b/drivers/hwtracing/rvtrace/rvtrace-encoder.c
index f0a4ac46b6a9..f3be47e448cf 100644
--- a/drivers/hwtracing/rvtrace/rvtrace-encoder.c
+++ b/drivers/hwtracing/rvtrace/rvtrace-encoder.c
@@ -98,6 +98,8 @@ static void rvtrace_encoder_remove(struct rvtrace_component *comp)
 static struct rvtrace_component_id rvtrace_encoder_ids[] = {
 	{ .type = RVTRACE_COMPONENT_TYPE_ENCODER,
 	  .version = rvtrace_component_mkversion(1, 0), },
+	{ .type = RVTRACE_COMPONENT_TYPE_ENCODER,
+	  .version = rvtrace_component_mkversion(0, 0), },
 	{},
 };
 
-- 
2.34.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help