On Tue, Jul 13, 2021 at 12:37:46PM +0200, Greg Kroah-Hartman wrote: > On Tue, Jul 13, 2021 at 11:45:41AM +0300, Andy Shevchenko wrote: > > kernel.h is being used as a dump for all kinds of stuff for a long time. > > Here is the attempt cleaning it up by splitting out container_of() and > > typeof_memeber() macros. > > That feels messy, why? Because the headers in the kernel are messy. > Reading one .h file for these common > macros/defines is fine, why are container_of and typeof somehow > deserving of their own .h files? It's explained here. There are tons of drivers that includes kernel.h for only a few or even solely for container_of() macro. > What speedups are you seeing by > splitting this up? C preprocessing. > > At the same time convert users in the header and other folders to use it. > > Though for time being include new header back to kernel.h to avoid twisted > > indirected includes for existing users. > > > > Note, there are _a lot_ of headers and modules that include kernel.h solely > > for one of these macros and this allows to unburden compiler for the twisted > > inclusion paths and to make new code cleaner in the future. > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > --- > > include/kunit/test.h | 14 ++++++++++++-- > > include/linux/container_of.h | 37 ++++++++++++++++++++++++++++++++++++ > > include/linux/kernel.h | 31 +----------------------------- > > include/linux/kobject.h | 14 +++++++------- > > Why are all of these changes needed to kobject.h for this one change? > This diff: > > > --- a/include/linux/kobject.h > > +++ b/include/linux/kobject.h > > @@ -15,18 +15,18 @@ > > #ifndef _KOBJECT_H_ > > #define _KOBJECT_H_ > > > > -#include <linux/types.h> > > -#include <linux/list.h> > > -#include <linux/sysfs.h> > > +#include <linux/atomic.h> > > #include <linux/compiler.h> > > -#include <linux/spinlock.h> > > +#include <linux/container_of.h> > > +#include <linux/list.h> > > #include <linux/kref.h> > > #include <linux/kobject_ns.h> > > -#include <linux/kernel.h> > > #include <linux/wait.h> > > -#include <linux/atomic.h> > > -#include <linux/workqueue.h> > > +#include <linux/spinlock.h> > > +#include <linux/sysfs.h> > > +#include <linux/types.h> > > #include <linux/uidgid.h> > > +#include <linux/workqueue.h> > > Is a lot more changes than the "split the macros out" deserves. > > Please make this a separate change, remember to only do one thing at a > time (this patch is at least 2 changes...) > > so NAK, this change isn't ok as-is. Fair enough. I will remove these conversions from the patch in v2. Thanks for review! -- With Best Regards, Andy Shevchenko