From ce45b161566e2ece499426cbd937086b4b780a0d Mon Sep 17 00:00:00 2001 From: Ray Kinsella Date: Wed, 6 Oct 2021 15:15:41 +0000 Subject: perfmon: check bundle is supported Add a check bundle is supported before futher activation. Enable different bundles with same name, supported on different platforms. Type: improvement Signed-off-by: Ray Kinsella Change-Id: I73e8bbd1e07c05ebccd9146d48a234eb598a2388 --- src/plugins/perfmon/perfmon.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/plugins') diff --git a/src/plugins/perfmon/perfmon.c b/src/plugins/perfmon/perfmon.c index 8abce94910f..4a220c7a233 100644 --- a/src/plugins/perfmon/perfmon.c +++ b/src/plugins/perfmon/perfmon.c @@ -288,6 +288,21 @@ perfmon_stop (vlib_main_t *vm) return 0; } +static_always_inline u8 +is_bundle_supported (perfmon_bundle_t *b) +{ + perfmon_cpu_supports_t *supports = b->cpu_supports; + + if (!b->cpu_supports) + return 1; + + for (int i = 0; i < b->n_cpu_supports; ++i) + if (supports[i].cpu_supports ()) + return 1; + + return 0; +} + static clib_error_t * perfmon_init (vlib_main_t *vm) { @@ -320,6 +335,14 @@ perfmon_init (vlib_main_t *vm) { clib_error_t *err; uword *p; + + if (!is_bundle_supported (b)) + { + log_warn ("skipping bundle '%s' - not supported", b->name); + b = b->next; + continue; + } + if (hash_get_mem (pm->bundle_by_name, b->name) != 0) clib_panic ("duplicate bundle name '%s'", b->name); -- cgit 1.2.3-korg