The Intel Icelake uArch supports measuring up to 12 counters,
comprised of 4 fixed and 8 general counters.
Type: improvement
Signed-off-by: Ray Kinsella <mdr@ashroe.eu>
Change-Id: I68369ea55a0c95d6a4a280a464e69502bbf5474f
switch (n_counters)
{
default:
switch (n_counters)
{
default:
+ case 12:
+ counters[11] = perfmon_mmap_read_pmc1 (mmap_pages[11]);
+ case 11:
+ counters[10] = perfmon_mmap_read_pmc1 (mmap_pages[10]);
+ case 10:
+ counters[9] = perfmon_mmap_read_pmc1 (mmap_pages[9]);
+ case 9:
+ counters[8] = perfmon_mmap_read_pmc1 (mmap_pages[8]);
+ case 8:
+ counters[7] = perfmon_mmap_read_pmc1 (mmap_pages[7]);
case 7:
counters[6] = perfmon_mmap_read_pmc1 (mmap_pages[6]);
case 6:
case 7:
counters[6] = perfmon_mmap_read_pmc1 (mmap_pages[6]);
case 6:
switch (n_counters)
{
default:
switch (n_counters)
{
default:
+ case 12:
+ counters[11] = _rdpmc (pmc_index[11]);
+ case 11:
+ counters[10] = _rdpmc (pmc_index[10]);
+ case 10:
+ counters[9] = _rdpmc (pmc_index[9]);
+ case 9:
+ counters[8] = _rdpmc (pmc_index[8]);
+ case 8:
+ counters[7] = _rdpmc (pmc_index[7]);
case 7:
counters[6] = _rdpmc (pmc_index[6]);
case 6:
case 7:
counters[6] = _rdpmc (pmc_index[6]);
case 6:
switch (n_events)
{
default:
switch (n_events)
{
default:
+ case 12:
+ pmc_index[11] = perfmon_metric_index (rt->bundle, 11);
+ case 11:
+ pmc_index[10] = perfmon_metric_index (rt->bundle, 10);
+ case 10:
+ pmc_index[9] = perfmon_metric_index (rt->bundle, 9);
+ case 9:
+ pmc_index[8] = perfmon_metric_index (rt->bundle, 8);
+ case 8:
+ pmc_index[7] = perfmon_metric_index (rt->bundle, 7);
case 7:
pmc_index[6] = perfmon_metric_index (rt->bundle, 6);
case 6:
case 7:
pmc_index[6] = perfmon_metric_index (rt->bundle, 6);
case 6:
#include <vppinfra/cpu.h>
#include <vlib/vlib.h>
#include <vppinfra/cpu.h>
#include <vlib/vlib.h>
-#define PERF_MAX_EVENTS 8 /* 4 fixed and 8 programmable on ICX */
+#define PERF_MAX_EVENTS 12 /* 4 fixed and 8 programable on ICX */