19.03.2021 16:47, Greg Kroah-Hartman пишет: > On Fri, Mar 19, 2021 at 04:45:21PM +0300, Dmitry Osipenko wrote: >> 19.03.2021 16:42, Greg Kroah-Hartman пишет: >>> On Fri, Mar 19, 2021 at 04:39:41PM +0300, Dmitry Osipenko wrote: >>>> 19.03.2021 15:44, Dmitry Osipenko пишет: >>>> ... >>>>>> #include <linux/debugfs.h> >>>>>> +#include <linux/kobject.h> >>>>>> + >>>>>> +struct cma_stat { >>>>>> + spinlock_t lock; >>>>>> + /* the number of CMA page successful allocations */ >>>>>> + unsigned long nr_pages_succeeded; >>>>>> + /* the number of CMA page allocation failures */ >>>>>> + unsigned long nr_pages_failed; >>>>>> + struct kobject kobj; >>>>>> +}; >>>>>> >>>>>> struct cma { >>>>>> unsigned long base_pfn; >>>>>> @@ -16,6 +26,9 @@ struct cma { >>>>>> struct debugfs_u32_array dfs_bitmap; >>>>>> #endif >>>>>> char name[CMA_MAX_NAME]; >>>>>> +#ifdef CONFIG_CMA_SYSFS >>>>>> + struct cma_stat *stat; >>>>>> +#endif >>>> >>>> What is the point of allocating stat dynamically? >>> >>> Because static kobjects make me cry. >>> >> >> I meant that it's already a part of struct cma, it looks like the stat >> could be embedded into struct cma and then kobj could be initialized >> separately. > > But that structure is statically allocated, so it can not be. This has > been discussed in the past threads for when this was reviewed if you are > curious :) Indeed, I missed that cma_areas[] is static, thank you.