These don't hurt on !VMM architectures but I was still surprised to see
them on e.g. sparc64:

        # arch -s ; btrace -l | grep vmm
        sparc64
        tracepoint:vmm:guest_enter
        tracepoint:vmm:guest_exit

Like some network drivers, we could use __amd64__ to limit those to
amd64 and save a few bits in all other kernels.

Is this approach feasible or should we just ignore such one-offs?

One can specify and "use" those tracepoints without errors in btrace(8),
but they won't ever hit on !amd64, of course.

Tested on amd64 and sparc64.

Index: dev/dt//dt_prov_static.c
===================================================================
RCS file: /cvs/src/sys/dev/dt/dt_prov_static.c,v
retrieving revision 1.11
diff -u -p -r1.11 dt_prov_static.c
--- dev/dt//dt_prov_static.c    24 Nov 2021 09:47:49 -0000      1.11
+++ dev/dt//dt_prov_static.c    17 Jan 2022 12:47:38 -0000
@@ -69,11 +69,13 @@ DT_STATIC_PROBE3(vfs, bufcache_rel, "lon
 DT_STATIC_PROBE3(vfs, bufcache_take, "long", "int", "int64_t");
 DT_STATIC_PROBE4(vfs, cleaner, "long", "int", "long", "long");
 
+#ifdef __amd64__
 /*
  * VMM
  */
 DT_STATIC_PROBE2(vmm, guest_enter, "void *", "void *");
 DT_STATIC_PROBE3(vmm, guest_exit, "void *", "void *", "uint64_t");
+#endif /* __amd64__ */
 
 /*
  * SMR
@@ -113,9 +115,11 @@ struct dt_probe *dtps_static[] = {
        &_DT_STATIC_P(vfs, bufcache_rel),
        &_DT_STATIC_P(vfs, bufcache_take),
        &_DT_STATIC_P(vfs, cleaner),
+#ifdef __amd64__
        /* VMM */
        &_DT_STATIC_P(vmm, guest_enter),
        &_DT_STATIC_P(vmm, guest_exit),
+#endif /* __amd64__ */
        /* SMR */
        &_DT_STATIC_P(smr, call),
        &_DT_STATIC_P(smr, called),

Reply via email to