On Fri, Jun 03, 2022 at 12:42:05PM -0700, Andrew Morton wrote: > On Fri, 3 Jun 2022 19:48:57 +0100 Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > > On Fri, Jun 03, 2022 at 11:47:12AM -0700, Andrew Morton wrote: > > > On Fri, 3 Jun 2022 19:44:49 +0100 Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > > > > > > On Fri, Jun 03, 2022 at 11:32:30AM -0700, Andrew Morton wrote: > > > > > ------------------------------------------------------ > > > > > From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > > > > Subject: include/linux/xarray.h: replace kernel.h with the necessary inclusions > > > > > Date: Fri, 3 Jun 2022 20:11:53 +0300 > > > > > > > > > > When kernel.h is used in the headers it adds a lot into dependency hell, > > > > > especially when there are circular dependencies are involved. > > > > > > > > > > Replace kernel.h inclusion with the list of what is really being used. > > > > > > > > > > Link: https://lkml.kernel.org/r/20220603171153.48928-1-andriy.shevchenko@xxxxxxxxxxxxxxx > > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > > > > Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> > > > > > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > > > > > > > > NAK, breaks the test suite. > > > > > > The test suite compiled OK for me? > > > > I don't see a limits.h in tools/ ? > > It works, but I'm not sure why. > > cc -H says: > > .... ./linux/xarray.h > ..... ./generated/map-shift.h > ..... ./linux/../../../../include/linux/xarray.h > ...... ../../include/linux/bitmap.h > ....... ../../include/linux/find.h > ...... ./linux/bug.h > ....... ../../include/asm/bug.h > ...... ./linux/kconfig.h > ....... ./linux/../../../../include/linux/kconfig.h > ........ ./generated/autoconf.h > .... ./linux/local_lock.h > . ../../../lib/xarray.c > .. ../../include/linux/export.h > .. ../../include/linux/slab.h > .. ./linux/xarray.h > > xarray.h has > > #include <linux/bitmap.h> > #include <linux/bug.h> > #include <linux/compiler.h> > #include <linux/err.h> > #include <linux/gfp.h> > #include <linux/kconfig.h> > #include <linux/limits.h> > #include <linux/lockdep.h> > #include <linux/math.h> > #include <linux/rcupdate.h> > #include <linux/spinlock.h> > #include <linux/types.h> > > Perhaps some magic happened with cpp's recognition of include guards? I had some time to look at this now. It's picking up /usr/include/linux/limits.h on my machine which is provided by linux-libc-dev. That's a rather different set of constants from the ones the kernel provides internally, which might cause problems later. But I'm not in a mood to go poking around the different locations that different environments provide things in, so I think this patch is OK.