diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index f6174c8a8c8ad23332da3bb34ddb8e869b65f89a..f78841df7a460b2d8cb7d3878ffd89db0345a866 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -255,6 +255,7 @@ struct pmu { struct module *module; struct device *dev; const struct attribute_group **attr_groups; + const struct attribute_group **attr_update; const char *name; int type; diff --git a/kernel/events/core.c b/kernel/events/core.c index d7aa8971b27889ffcf171b7c9d4a72410c3a4748..5d60d0f1c940f5148d66f6583b45232e99582e36 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -9691,6 +9691,12 @@ static int pmu_dev_alloc(struct pmu *pmu) if (ret) goto del_dev; + if (pmu->attr_update) + ret = sysfs_update_groups(&pmu->dev->kobj, pmu->attr_update); + + if (ret) + goto del_dev; + out: return ret;