perf pmus: Add placeholder core PMU
If loading a core PMU fails, legacy hardware/cache events may segv due to there being no PMU. Create a placeholder empty PMU for this case. This was discussed in: https://lore.kernel.org/lkml/20230614151625.2077-1-yangjihong1@huawei.com/ Reported-by: Yang Jihong <yangjihong1@huawei.com> Tested-by: Yang Jihong <yangjihong1@huawei.com> Signed-off-by: Ian Rogers <irogers@google.com> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: James Clark <james.clark@arm.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Suzuki Poulouse <suzuki.poulose@arm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Rob Herring <robh@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Ingo Molnar <mingo@redhat.com> Link: https://lore.kernel.org/r/20230627182834.117565-1-irogers@google.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
@ -153,7 +153,12 @@ static void pmu_read_sysfs(bool core_only)
|
||||
|
||||
closedir(dir);
|
||||
if (core_only) {
|
||||
read_sysfs_core_pmus = true;
|
||||
if (!list_empty(&core_pmus))
|
||||
read_sysfs_core_pmus = true;
|
||||
else {
|
||||
if (perf_pmu__create_placeholder_core_pmu(&core_pmus))
|
||||
read_sysfs_core_pmus = true;
|
||||
}
|
||||
} else {
|
||||
read_sysfs_core_pmus = true;
|
||||
read_sysfs_all_pmus = true;
|
||||
|
Reference in New Issue
Block a user