cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

coresight-cfg-sample.c (1884B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright(C) 2020 Linaro Limited. All rights reserved.
      4 * Author: Mike Leach <mike.leach@linaro.org>
      5 */
      6
      7#include "coresight-config.h"
      8#include "coresight-syscfg.h"
      9
     10/* create an alternate autofdo configuration */
     11
     12/* we will provide 4 sets of preset parameter values */
     13#define AFDO2_NR_PRESETS	4
     14/* the total number of parameters in used features - strobing has 2 */
     15#define AFDO2_NR_PARAM_SUM	2
     16
     17static const char *afdo2_ref_names[] = {
     18	"strobing",
     19};
     20
     21/*
     22 * set of presets leaves strobing window constant while varying period to allow
     23 * experimentation with mark / space ratios for various workloads
     24 */
     25static u64 afdo2_presets[AFDO2_NR_PRESETS][AFDO2_NR_PARAM_SUM] = {
     26	{ 1000, 100 },
     27	{ 1000, 1000 },
     28	{ 1000, 5000 },
     29	{ 1000, 10000 },
     30};
     31
     32struct cscfg_config_desc afdo2 = {
     33	.name = "autofdo2",
     34	.description = "Setup ETMs with strobing for autofdo\n"
     35	"Supplied presets allow experimentation with mark-space ratio for various loads\n",
     36	.nr_feat_refs = ARRAY_SIZE(afdo2_ref_names),
     37	.feat_ref_names = afdo2_ref_names,
     38	.nr_presets = AFDO2_NR_PRESETS,
     39	.nr_total_params = AFDO2_NR_PARAM_SUM,
     40	.presets = &afdo2_presets[0][0],
     41};
     42
     43static struct cscfg_feature_desc *sample_feats[] = {
     44	NULL
     45};
     46
     47static struct cscfg_config_desc *sample_cfgs[] = {
     48	&afdo2,
     49	NULL
     50};
     51
     52static struct cscfg_load_owner_info mod_owner = {
     53	.type = CSCFG_OWNER_MODULE,
     54	.owner_handle = THIS_MODULE,
     55};
     56
     57/* module init and exit - just load and unload configs */
     58static int __init cscfg_sample_init(void)
     59{
     60	return cscfg_load_config_sets(sample_cfgs, sample_feats, &mod_owner);
     61}
     62
     63static void __exit cscfg_sample_exit(void)
     64{
     65	cscfg_unload_config_sets(&mod_owner);
     66}
     67
     68module_init(cscfg_sample_init);
     69module_exit(cscfg_sample_exit);
     70
     71MODULE_LICENSE("GPL v2");
     72MODULE_AUTHOR("Mike Leach <mike.leach@linaro.org>");
     73MODULE_DESCRIPTION("CoreSight Syscfg Example");