#define ENDIAN KBUFFER_ENDIAN_BIG
#endif
+extern char* choices_disable;
+
static int get_debugfs_dir(char *tracing_dir, size_t len)
{
FILE *fp;
return 0;
}
+static int is_disabled_event(char *group, char *event) {
+ char ras_event_name[MAX_PATH + 1];
+
+ snprintf(ras_event_name, sizeof(ras_event_name), "%s:%s",
+ group, event);
+
+ if (choices_disable != NULL && strlen(choices_disable) != 0 && strstr(choices_disable, ras_event_name)) {
+ return 1;
+ }
+ return 0;
+}
+
/*
* Tracing enable/disable code
*/
{
int fd, rc;
char fname[MAX_PATH + 1];
+ enable = is_disabled_event(group, event) ? 0 : 1;
snprintf(fname, sizeof(fname), "%s%s:%s\n",
enable ? "" : "!",
ras->filters[id] = filter;
+ if (is_disabled_event(group, event)) {
+ log(ALL, LOG_INFO, "Disabled %s:%s tracing from config\n",
+ group, event);
+ return -EINVAL;
+ }
+
/* Enable RAS events */
rc = __toggle_ras_mc_event(ras, group, event, 1);
free(page);
ras_mc_event_handler, NULL, MC_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"ras", "mc_event");
ras_aer_event_handler, NULL, AER_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"ras", "aer_event");
#endif
ras_non_standard_event_handler, NULL, NON_STANDARD_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"ras", "non_standard_event");
#endif
ras_arm_event_handler, NULL, ARM_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"ras", "arm_event");
#endif
/* tell kernel we are listening, so don't printk to console */
(void)open("/sys/kernel/debug/ras/daemon_active", 0);
num_events++;
- } else
+ } else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"ras", "extlog_mem_event");
#endif
ras_devlink_event_handler, filter_str, DEVLINK_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"devlink", "devlink_health_report");
#endif
NULL, DISKERROR_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"block", "block_rq_error");
#else
NULL, DISKERROR_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"block", "block_rq_complete");
}
ras_memory_failure_event_handler, NULL, MF_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"ras", "memory_failure_event");
#endif
ras_cxl_poison_event_handler, NULL, CXL_POISON_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"cxl", "cxl_poison");
ras_cxl_aer_ue_event_handler, NULL, CXL_AER_UE_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"cxl", "cxl_aer_uncorrectable_error");
ras_cxl_aer_ce_event_handler, NULL, CXL_AER_CE_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"cxl", "cxl_aer_correctable_error");
ras_cxl_overflow_event_handler, NULL, CXL_OVERFLOW_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"cxl", "cxl_overflow");
ras_cxl_generic_event_handler, NULL, CXL_GENERIC_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"cxl", "cxl_generic_event");
ras_cxl_general_media_event_handler, NULL, CXL_GENERAL_MEDIA_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"cxl", "cxl_general_media");
ras_cxl_dram_event_handler, NULL, CXL_DRAM_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"cxl", "cxl_dram");
ras_cxl_memory_module_event_handler, NULL, CXL_MEMORY_MODULE_EVENT);
if (!rc)
num_events++;
- else
+ else if (rc != -EINVAL)
log(ALL, LOG_ERR, "Can't get traces from %s:%s\n",
"cxl", "memory_module");
#endif