All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Decouple build from userspace headers
@ 2021-07-13 19:47 Alexey Dobriyan
  2021-07-14  4:54 ` Masahiro Yamada
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Alexey Dobriyan @ 2021-07-13 19:47 UTC (permalink / raw)
  To: akpm; +Cc: linux-kbuild, linux-kernel, linux-arch, arnd

In theory, userspace headers can be under incompatible license.

Linux by virtue of being OS kernel is fully independent piece of code
and should not require anything from userspace.

For this:

* ship minimal <stdarg.h>
	2 types, 4 macros

* delete "-isystem"
	This is what enables leakage.

* fixup compilation where necessary.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

 Makefile                                                               |    2 +-
 arch/um/include/shared/irq_user.h                                      |    1 -
 arch/um/os-Linux/signal.c                                              |    2 +-
 crypto/aegis128-neon-inner.c                                           |    2 --
 drivers/net/wwan/iosm/iosm_ipc_imem.h                                  |    1 -
 drivers/pinctrl/aspeed/pinmux-aspeed.h                                 |    1 -
 drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h |    2 --
 include/stdarg.h                                                       |    9 +++++++++
 sound/aoa/codecs/onyx.h                                                |    1 -
 sound/aoa/codecs/tas.c                                                 |    1 -
 10 files changed, 11 insertions(+), 11 deletions(-)

--- a/Makefile
+++ b/Makefile
@@ -978,7 +978,7 @@ KBUILD_CFLAGS += -falign-functions=64
 endif
 
 # arch Makefile may override CC so keep this after arch Makefile is included
-NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
+NOSTDINC_FLAGS += -nostdinc
 
 # warn about C99 declaration after statement
 KBUILD_CFLAGS += -Wdeclaration-after-statement
--- a/arch/um/include/shared/irq_user.h
+++ b/arch/um/include/shared/irq_user.h
@@ -7,7 +7,6 @@
 #define __IRQ_USER_H__
 
 #include <sysdep/ptrace.h>
-#include <stdbool.h>
 
 enum um_irq_type {
 	IRQ_READ,
--- a/arch/um/os-Linux/signal.c
+++ b/arch/um/os-Linux/signal.c
@@ -67,7 +67,7 @@ int signals_enabled;
 #ifdef UML_CONFIG_UML_TIME_TRAVEL_SUPPORT
 static int signals_blocked;
 #else
-#define signals_blocked false
+#define signals_blocked 0
 #endif
 static unsigned int signals_pending;
 static unsigned int signals_active = 0;
--- a/crypto/aegis128-neon-inner.c
+++ b/crypto/aegis128-neon-inner.c
@@ -15,8 +15,6 @@
 
 #define AEGIS_BLOCK_SIZE	16
 
-#include <stddef.h>
-
 extern int aegis128_have_aes_insn;
 
 void *memcpy(void *dest, const void *src, size_t n);
--- a/drivers/net/wwan/iosm/iosm_ipc_imem.h
+++ b/drivers/net/wwan/iosm/iosm_ipc_imem.h
@@ -7,7 +7,6 @@
 #define IOSM_IPC_IMEM_H
 
 #include <linux/skbuff.h>
-#include <stdbool.h>
 
 #include "iosm_ipc_mmio.h"
 #include "iosm_ipc_pcie.h"
--- a/drivers/pinctrl/aspeed/pinmux-aspeed.h
+++ b/drivers/pinctrl/aspeed/pinmux-aspeed.h
@@ -5,7 +5,6 @@
 #define ASPEED_PINMUX_H
 
 #include <linux/regmap.h>
-#include <stdbool.h>
 
 /*
  * The ASPEED SoCs provide typically more than 200 pins for GPIO and other
--- a/drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h
+++ b/drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h
@@ -16,8 +16,6 @@
 #ifndef __ISP_LOCAL_H_INCLUDED__
 #define __ISP_LOCAL_H_INCLUDED__
 
-#include <stdbool.h>
-
 #include "isp_global.h"
 
 #include <isp2400_support.h>
new file mode 100644
--- /dev/null
+++ b/include/stdarg.h
@@ -0,0 +1,9 @@
+#ifndef _LINUX_STDARG_H
+#define _LINUX_STDARG_H
+typedef __builtin_va_list __gnuc_va_list;
+typedef __builtin_va_list va_list;
+#define va_start(v, l)	__builtin_va_start(v, l)
+#define va_end(v)	__builtin_va_end(v)
+#define va_arg(v, T)	__builtin_va_arg(v, T)
+#define va_copy(d, s)	__builtin_va_copy(d, s)
+#endif
--- a/sound/aoa/codecs/onyx.h
+++ b/sound/aoa/codecs/onyx.h
@@ -6,7 +6,6 @@
  */
 #ifndef __SND_AOA_CODEC_ONYX_H
 #define __SND_AOA_CODEC_ONYX_H
-#include <stddef.h>
 #include <linux/i2c.h>
 #include <asm/pmac_low_i2c.h>
 #include <asm/prom.h>
--- a/sound/aoa/codecs/tas.c
+++ b/sound/aoa/codecs/tas.c
@@ -58,7 +58,6 @@
  *    and up to the hardware designer to not wire
  *    them up in some weird unusable way.
  */
-#include <stddef.h>
 #include <linux/i2c.h>
 #include <asm/pmac_low_i2c.h>
 #include <asm/prom.h>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] Decouple build from userspace headers
  2021-07-13 19:47 [PATCH] Decouple build from userspace headers Alexey Dobriyan
@ 2021-07-14  4:54 ` Masahiro Yamada
  2021-07-14  8:42   ` Alexey Dobriyan
  2021-07-14 14:22 ` Christoph Hellwig
  2021-07-14 17:45 ` [PATCH v2] " Alexey Dobriyan
  2 siblings, 1 reply; 16+ messages in thread
From: Masahiro Yamada @ 2021-07-14  4:54 UTC (permalink / raw)
  To: Alexey Dobriyan
  Cc: Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	clang-built-linux

On Wed, Jul 14, 2021 at 4:47 AM Alexey Dobriyan <adobriyan@gmail.com> wrote:
>
> In theory, userspace headers can be under incompatible license.
>
> Linux by virtue of being OS kernel is fully independent piece of code
> and should not require anything from userspace.

As far as I know,
<stdarg.h> was the only exception,
which was borrowed from the compiler.


I like this as long as:
  - license is clear (please add SPDX tag to the new header)
  - it works for both gcc and clang (I guess the answer is yes)


I think removing <stdbool.h> and <stddef.h> are non-controversial.
Mayby, you can split it into 1/2.




>
> For this:
>
> * ship minimal <stdarg.h>
>         2 types, 4 macros
>
> * delete "-isystem"
>         This is what enables leakage.
>
> * fixup compilation where necessary.
>
> Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
> ---
>
>  Makefile                                                               |    2 +-
>  arch/um/include/shared/irq_user.h                                      |    1 -
>  arch/um/os-Linux/signal.c                                              |    2 +-
>  crypto/aegis128-neon-inner.c                                           |    2 --
>  drivers/net/wwan/iosm/iosm_ipc_imem.h                                  |    1 -
>  drivers/pinctrl/aspeed/pinmux-aspeed.h                                 |    1 -
>  drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h |    2 --
>  include/stdarg.h                                                       |    9 +++++++++
>  sound/aoa/codecs/onyx.h                                                |    1 -
>  sound/aoa/codecs/tas.c                                                 |    1 -
>  10 files changed, 11 insertions(+), 11 deletions(-)
>

> new file mode 100644
> --- /dev/null
> +++ b/include/stdarg.h
> @@ -0,0 +1,9 @@


This is a new file, so please add the SPDX tag.
What project did you copy the code from?

  If gcc, is it GPL v3 (but not compatible for GPL v2) ?
  If clang, is it
   SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

Or, can we license this small portion of code
as GPL v2?



> +#ifndef _LINUX_STDARG_H
> +#define _LINUX_STDARG_H
> +typedef __builtin_va_list __gnuc_va_list;

Where is __gnuc_va_list needed?




BTW, once this is accepted, I'd like to
change all <stdarg.h>  to <linux/stdarg.h>.





-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] Decouple build from userspace headers
  2021-07-14  4:54 ` Masahiro Yamada
@ 2021-07-14  8:42   ` Alexey Dobriyan
  0 siblings, 0 replies; 16+ messages in thread
From: Alexey Dobriyan @ 2021-07-14  8:42 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	clang-built-linux

On Wed, Jul 14, 2021 at 01:54:59PM +0900, Masahiro Yamada wrote:
> On Wed, Jul 14, 2021 at 4:47 AM Alexey Dobriyan <adobriyan@gmail.com> wrote:
> >
> > In theory, userspace headers can be under incompatible license.
> >
> > Linux by virtue of being OS kernel is fully independent piece of code
> > and should not require anything from userspace.
> 
> As far as I know,
> <stdarg.h> was the only exception,
> which was borrowed from the compiler.
> 
> 
> I like this as long as:
>   - license is clear (please add SPDX tag to the new header)
>   - it works for both gcc and clang (I guess the answer is yes)

It should. clang version is essentially the same
(with less prehistoric macrology).

> I think removing <stdbool.h> and <stddef.h> are non-controversial.
> Mayby, you can split it into 1/2.
> 
> 
> 
> 
> >
> > For this:
> >
> > * ship minimal <stdarg.h>
> >         2 types, 4 macros
> >
> > * delete "-isystem"
> >         This is what enables leakage.
> >
> > * fixup compilation where necessary.
> >
> > Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
> > ---
> >
> >  Makefile                                                               |    2 +-
> >  arch/um/include/shared/irq_user.h                                      |    1 -
> >  arch/um/os-Linux/signal.c                                              |    2 +-
> >  crypto/aegis128-neon-inner.c                                           |    2 --
> >  drivers/net/wwan/iosm/iosm_ipc_imem.h                                  |    1 -
> >  drivers/pinctrl/aspeed/pinmux-aspeed.h                                 |    1 -
> >  drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h |    2 --
> >  include/stdarg.h                                                       |    9 +++++++++
> >  sound/aoa/codecs/onyx.h                                                |    1 -
> >  sound/aoa/codecs/tas.c                                                 |    1 -
> >  10 files changed, 11 insertions(+), 11 deletions(-)
> >
> 
> > new file mode 100644
> > --- /dev/null
> > +++ b/include/stdarg.h
> > @@ -0,0 +1,9 @@
> 
> 
> This is a new file, so please add the SPDX tag.
> What project did you copy the code from?
> 
>   If gcc, is it GPL v3 (but not compatible for GPL v2) ?

It is GPL 2, brought to you by Debian! I'll add a link.

	http://archive.debian.org/debian/pool/main/g/gcc-4.2/

>   If clang, is it
>    SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
> 
> Or, can we license this small portion of code
> as GPL v2?
> 
> 
> 
> > +#ifndef _LINUX_STDARG_H
> > +#define _LINUX_STDARG_H
> > +typedef __builtin_va_list __gnuc_va_list;
> 
> Where is __gnuc_va_list needed?
> 
> BTW, once this is accepted, I'd like to
> change all <stdarg.h>  to <linux/stdarg.h>.

Yes. I've just realised <stdarg.h> is the wrong place:

  gcc -Wp,-MMD,scripts/selinux/genheaders/.genheaders.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89     -I/home/ad/linux/linux-1/include/uapi -I/home/ad/linux/linux-1/include -I/home/ad/linux/linux-1/security/selinux/include  -I ./scripts/selinux/genheaders   -o scripts/selinux/genheaders/genheaders /home/ad/linux/linux-1/scripts/selinux/genheaders/genheaders.c
In file included from /home/ad/linux/linux-1/scripts/selinux/genheaders/genheaders.c:6:
/usr/include/stdio.h:52:9: error: unknown type name ‘__gnuc_va_list’
   52 | typedef __gnuc_va_list va_list;

Or maybe <stdarg.h> is the right place by passing all those include
directories to userspace helpers is the wrong thing to do.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] Decouple build from userspace headers
  2021-07-13 19:47 [PATCH] Decouple build from userspace headers Alexey Dobriyan
  2021-07-14  4:54 ` Masahiro Yamada
@ 2021-07-14 14:22 ` Christoph Hellwig
  2021-07-14 15:54   ` Alexey Dobriyan
  2021-07-14 17:45 ` [PATCH v2] " Alexey Dobriyan
  2 siblings, 1 reply; 16+ messages in thread
From: Christoph Hellwig @ 2021-07-14 14:22 UTC (permalink / raw)
  To: Alexey Dobriyan; +Cc: akpm, linux-kbuild, linux-kernel, linux-arch, arnd

> -#define signals_blocked false
> +#define signals_blocked 0

Why can't we get at the kernel definition of false here?

> new file mode 100644
> --- /dev/null
> +++ b/include/stdarg.h
> @@ -0,0 +1,9 @@
> +#ifndef _LINUX_STDARG_H
> +#define _LINUX_STDARG_H
> +typedef __builtin_va_list __gnuc_va_list;
> +typedef __builtin_va_list va_list;
> +#define va_start(v, l)	__builtin_va_start(v, l)
> +#define va_end(v)	__builtin_va_end(v)
> +#define va_arg(v, T)	__builtin_va_arg(v, T)
> +#define va_copy(d, s)	__builtin_va_copy(d, s)
> +#endif

Empty lines before and after the include guards would be nice.

What do we need the __gnuc_va_list typedef for?

Otherwise this looks great.  As a follow on maybe move the new header
to <linux/stdarg.h> to make clear to everyone that we are using our
own version.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] Decouple build from userspace headers
  2021-07-14 14:22 ` Christoph Hellwig
@ 2021-07-14 15:54   ` Alexey Dobriyan
  2021-07-14 15:56     ` Christoph Hellwig
  0 siblings, 1 reply; 16+ messages in thread
From: Alexey Dobriyan @ 2021-07-14 15:54 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: akpm, linux-kbuild, linux-kernel, linux-arch, arnd

On Wed, Jul 14, 2021 at 03:22:08PM +0100, Christoph Hellwig wrote:
> > -#define signals_blocked false
> > +#define signals_blocked 0
> 
> Why can't we get at the kernel definition of false here?

Variable and other code surrounding this wants "int".
I don't really want to expand into bool conversion.

> > new file mode 100644
> > --- /dev/null
> > +++ b/include/stdarg.h
> > @@ -0,0 +1,9 @@
> > +#ifndef _LINUX_STDARG_H
> > +#define _LINUX_STDARG_H
> > +typedef __builtin_va_list __gnuc_va_list;
> > +typedef __builtin_va_list va_list;
> > +#define va_start(v, l)	__builtin_va_start(v, l)
> > +#define va_end(v)	__builtin_va_end(v)
> > +#define va_arg(v, T)	__builtin_va_arg(v, T)
> > +#define va_copy(d, s)	__builtin_va_copy(d, s)
> > +#endif
> 
> Empty lines before and after the include guards would be nice.
> 
> What do we need the __gnuc_va_list typedef for?

That's because without __gnuc_va_list something didn't compile.
I'm preparing second version with <linux/stdarg.h> where __gnuc_va_list is
unnecessary indeed.

> Otherwise this looks great.  As a follow on maybe move the new header
> to <linux/stdarg.h> to make clear to everyone that we are using our
> own version.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] Decouple build from userspace headers
  2021-07-14 15:54   ` Alexey Dobriyan
@ 2021-07-14 15:56     ` Christoph Hellwig
  2021-07-14 17:16       ` Alexey Dobriyan
  0 siblings, 1 reply; 16+ messages in thread
From: Christoph Hellwig @ 2021-07-14 15:56 UTC (permalink / raw)
  To: Alexey Dobriyan
  Cc: Christoph Hellwig, akpm, linux-kbuild, linux-kernel, linux-arch, arnd

On Wed, Jul 14, 2021 at 06:54:08PM +0300, Alexey Dobriyan wrote:
> On Wed, Jul 14, 2021 at 03:22:08PM +0100, Christoph Hellwig wrote:
> > > -#define signals_blocked false
> > > +#define signals_blocked 0
> > 
> > Why can't we get at the kernel definition of false here?
> 
> Variable and other code surrounding this wants "int".
> I don't really want to expand into bool conversion.

Maybe split this into a separate prep patch then.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] Decouple build from userspace headers
  2021-07-14 15:56     ` Christoph Hellwig
@ 2021-07-14 17:16       ` Alexey Dobriyan
  0 siblings, 0 replies; 16+ messages in thread
From: Alexey Dobriyan @ 2021-07-14 17:16 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: akpm, linux-kbuild, linux-kernel, linux-arch, arnd

On Wed, Jul 14, 2021 at 04:56:46PM +0100, Christoph Hellwig wrote:
> On Wed, Jul 14, 2021 at 06:54:08PM +0300, Alexey Dobriyan wrote:
> > On Wed, Jul 14, 2021 at 03:22:08PM +0100, Christoph Hellwig wrote:
> > > > -#define signals_blocked false
> > > > +#define signals_blocked 0
> > > 
> > > Why can't we get at the kernel definition of false here?
> > 
> > Variable and other code surrounding this wants "int".
> > I don't really want to expand into bool conversion.
> 
> Maybe split this into a separate prep patch then.

And get accused of KPI padding? :-)

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v2] Decouple build from userspace headers
  2021-07-13 19:47 [PATCH] Decouple build from userspace headers Alexey Dobriyan
  2021-07-14  4:54 ` Masahiro Yamada
  2021-07-14 14:22 ` Christoph Hellwig
@ 2021-07-14 17:45 ` Alexey Dobriyan
  2021-07-15 21:15   ` [PATCH -mm] fixup "Decouple build from userspace headers" Alexey Dobriyan
  2021-07-16  9:03   ` [PATCH v2] Decouple build from userspace headers Anders Roxell
  2 siblings, 2 replies; 16+ messages in thread
From: Alexey Dobriyan @ 2021-07-14 17:45 UTC (permalink / raw)
  To: akpm; +Cc: linux-kbuild, linux-kernel, linux-arch, arnd, masahiroy, hch

First, userspace headers can be under incompatible license.

Second, kernel doesn't require userspace to operate and should not
require anything from userspace to be built other than compiler.
We would use -ffreestanding too if not builtin function shenanigans.

To decouple:

* ship minimal stdarg.h as <linux/stdarg.h>,
	1 type, 4 macros

GPL 2 version of <stdarg.h> can be extracted from
http://archive.debian.org/debian/pool/main/g/gcc-4.2/gcc-4.2_4.2.4.orig.tar.gz

* delete "-isystem" from command line arguments,
	this is what enables header leakage

* fixup/delete include directives where necessary.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

 Makefile                                                                 |    2 -
 arch/arm/kernel/process.c                                                |    2 -
 arch/arm/mach-bcm/bcm_kona_smc.c                                         |    2 -
 arch/arm64/kernel/process.c                                              |    3 --
 arch/openrisc/kernel/process.c                                           |    2 -
 arch/parisc/kernel/firmware.c                                            |    2 -
 arch/parisc/kernel/process.c                                             |    3 --
 arch/powerpc/kernel/prom.c                                               |    1 
 arch/powerpc/kernel/prom_init.c                                          |    2 -
 arch/powerpc/kernel/rtas.c                                               |    2 -
 arch/powerpc/kernel/udbg.c                                               |    2 -
 arch/s390/boot/pgm_check_info.c                                          |    2 -
 arch/sparc/kernel/process_32.c                                           |    3 --
 arch/sparc/kernel/process_64.c                                           |    3 --
 arch/um/include/shared/irq_user.h                                        |    1 
 arch/um/include/shared/os.h                                              |    1 
 arch/um/os-Linux/signal.c                                                |    2 -
 arch/um/os-Linux/util.c                                                  |    1 
 arch/x86/boot/boot.h                                                     |    2 -
 crypto/aegis128-neon-inner.c                                             |    2 -
 drivers/block/xen-blkback/xenbus.c                                       |    1 
 drivers/firmware/efi/libstub/efi-stub-helper.c                           |    2 -
 drivers/firmware/efi/libstub/vsprintf.c                                  |    2 -
 drivers/gpu/drm/amd/display/dc/dc_helper.c                               |    2 -
 drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h                          |    1 
 drivers/gpu/drm/drm_print.c                                              |    2 -
 drivers/gpu/drm/msm/disp/msm_disp_snapshot.h                             |    1 
 drivers/isdn/capi/capiutil.c                                             |    2 -
 drivers/macintosh/macio-adb.c                                            |    1 
 drivers/macintosh/via-cuda.c                                             |    2 -
 drivers/macintosh/via-macii.c                                            |    2 -
 drivers/macintosh/via-pmu.c                                              |    2 -
 drivers/net/wireless/intersil/orinoco/hermes.c                           |    1 
 drivers/net/wwan/iosm/iosm_ipc_imem.h                                    |    1 
 drivers/pinctrl/aspeed/pinmux-aspeed.h                                   |    1 
 drivers/scsi/elx/efct/efct_driver.h                                      |    1 
 drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h   |    2 -
 drivers/staging/media/atomisp/pci/hive_isp_css_include/print_support.h   |    2 -
 drivers/staging/media/atomisp/pci/ia_css_env.h                           |    2 -
 drivers/staging/media/atomisp/pci/runtime/debug/interface/ia_css_debug.h |    2 -
 drivers/staging/media/atomisp/pci/sh_css_internal.h                      |    2 -
 drivers/xen/xen-scsiback.c                                               |    2 -
 fs/befs/debug.c                                                          |    2 -
 fs/reiserfs/prints.c                                                     |    2 -
 fs/ufs/super.c                                                           |    2 -
 include/acpi/platform/acgcc.h                                            |    2 -
 include/linux/filter.h                                                   |    2 -
 include/linux/kernel.h                                                   |    2 -
 include/linux/mISDNif.h                                                  |    1 
 include/linux/printk.h                                                   |    2 -
 include/linux/stdarg.h                                                   |   11 ++++++++++
 include/linux/string.h                                                   |    2 -
 kernel/debug/kdb/kdb_support.c                                           |    1 
 lib/debug_info.c                                                         |    3 --
 lib/kasprintf.c                                                          |    2 -
 lib/kunit/string-stream.h                                                |    2 -
 lib/vsprintf.c                                                           |    2 -
 mm/kfence/report.c                                                       |    2 -
 net/batman-adv/log.c                                                     |    2 -
 sound/aoa/codecs/onyx.h                                                  |    1 
 sound/aoa/codecs/tas.c                                                   |    1 
 sound/core/info.c                                                        |    1 
 62 files changed, 44 insertions(+), 77 deletions(-)

--- a/Makefile
+++ b/Makefile
@@ -978,7 +978,7 @@ KBUILD_CFLAGS += -falign-functions=64
 endif
 
 # arch Makefile may override CC so keep this after arch Makefile is included
-NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
+NOSTDINC_FLAGS += -nostdinc
 
 # warn about C99 declaration after statement
 KBUILD_CFLAGS += -Wdeclaration-after-statement
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -5,8 +5,6 @@
  *  Copyright (C) 1996-2000 Russell King - Converted to ARM.
  *  Original Copyright (C) 1995  Linus Torvalds
  */
-#include <stdarg.h>
-
 #include <linux/export.h>
 #include <linux/sched.h>
 #include <linux/sched/debug.h>
--- a/arch/arm/mach-bcm/bcm_kona_smc.c
+++ b/arch/arm/mach-bcm/bcm_kona_smc.c
@@ -10,8 +10,6 @@
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  */
-
-#include <stdarg.h>
 #include <linux/smp.h>
 #include <linux/io.h>
 #include <linux/ioport.h>
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -6,9 +6,6 @@
  * Copyright (C) 1996-2000 Russell King - Converted to ARM.
  * Copyright (C) 2012 ARM Ltd.
  */
-
-#include <stdarg.h>
-
 #include <linux/compat.h>
 #include <linux/efi.h>
 #include <linux/elf.h>
--- a/arch/openrisc/kernel/process.c
+++ b/arch/openrisc/kernel/process.c
@@ -14,8 +14,6 @@
  */
 
 #define __KERNEL_SYSCALLS__
-#include <stdarg.h>
-
 #include <linux/errno.h>
 #include <linux/sched.h>
 #include <linux/sched/debug.h>
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -51,7 +51,7 @@
  *					prumpf	991016	
  */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 #include <linux/delay.h>
 #include <linux/init.h>
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -17,9 +17,6 @@
  *    Copyright (C) 2001-2014 Helge Deller <deller@gmx.de>
  *    Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org>
  */
-
-#include <stdarg.h>
-
 #include <linux/elf.h>
 #include <linux/errno.h>
 #include <linux/kernel.h>
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -11,7 +11,6 @@
 
 #undef DEBUG
 
-#include <stdarg.h>
 #include <linux/kernel.h>
 #include <linux/string.h>
 #include <linux/init.h>
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -14,7 +14,7 @@
 /* we cannot use FORTIFY as it brings in new symbols */
 #define __NO_FORTIFY
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/kernel.h>
 #include <linux/string.h>
 #include <linux/init.h>
--- a/arch/powerpc/kernel/rtas.c
+++ b/arch/powerpc/kernel/rtas.c
@@ -7,7 +7,7 @@
  * Copyright (C) 2001 IBM.
  */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/spinlock.h>
--- a/arch/powerpc/kernel/udbg.c
+++ b/arch/powerpc/kernel/udbg.c
@@ -5,7 +5,7 @@
  * c 2001 PPC 64 Team, IBM Corp
  */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/types.h>
 #include <linux/sched.h>
 #include <linux/console.h>
--- a/arch/s390/boot/pgm_check_info.c
+++ b/arch/s390/boot/pgm_check_info.c
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 #include <linux/kernel.h>
+#include <linux/stdarg.h>
 #include <linux/string.h>
 #include <linux/ctype.h>
 #include <asm/stacktrace.h>
@@ -8,7 +9,6 @@
 #include <asm/setup.h>
 #include <asm/sclp.h>
 #include <asm/uv.h>
-#include <stdarg.h>
 #include "boot.h"
 
 const char hex_asc[] = "0123456789abcdef";
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -8,9 +8,6 @@
 /*
  * This file handles the architecture-dependent parts of process handling..
  */
-
-#include <stdarg.h>
-
 #include <linux/elfcore.h>
 #include <linux/errno.h>
 #include <linux/module.h>
--- a/arch/sparc/kernel/process_64.c
+++ b/arch/sparc/kernel/process_64.c
@@ -9,9 +9,6 @@
 /*
  * This file handles the architecture-dependent parts of process handling..
  */
-
-#include <stdarg.h>
-
 #include <linux/errno.h>
 #include <linux/export.h>
 #include <linux/sched.h>
--- a/arch/um/include/shared/irq_user.h
+++ b/arch/um/include/shared/irq_user.h
@@ -7,7 +7,6 @@
 #define __IRQ_USER_H__
 
 #include <sysdep/ptrace.h>
-#include <stdbool.h>
 
 enum um_irq_type {
 	IRQ_READ,
--- a/arch/um/include/shared/os.h
+++ b/arch/um/include/shared/os.h
@@ -8,7 +8,6 @@
 #ifndef __OS_H__
 #define __OS_H__
 
-#include <stdarg.h>
 #include <irq_user.h>
 #include <longjmp.h>
 #include <mm_id.h>
--- a/arch/um/os-Linux/signal.c
+++ b/arch/um/os-Linux/signal.c
@@ -67,7 +67,7 @@ int signals_enabled;
 #ifdef UML_CONFIG_UML_TIME_TRAVEL_SUPPORT
 static int signals_blocked;
 #else
-#define signals_blocked false
+#define signals_blocked 0
 #endif
 static unsigned int signals_pending;
 static unsigned int signals_active = 0;
--- a/arch/um/os-Linux/util.c
+++ b/arch/um/os-Linux/util.c
@@ -3,6 +3,7 @@
  * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
  */
 
+#include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
--- a/arch/x86/boot/boot.h
+++ b/arch/x86/boot/boot.h
@@ -18,7 +18,7 @@
 
 #ifndef __ASSEMBLY__
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/types.h>
 #include <linux/edd.h>
 #include <asm/setup.h>
--- a/crypto/aegis128-neon-inner.c
+++ b/crypto/aegis128-neon-inner.c
@@ -15,8 +15,6 @@
 
 #define AEGIS_BLOCK_SIZE	16
 
-#include <stddef.h>
-
 extern int aegis128_have_aes_insn;
 
 void *memcpy(void *dest, const void *src, size_t n);
--- a/drivers/block/xen-blkback/xenbus.c
+++ b/drivers/block/xen-blkback/xenbus.c
@@ -8,7 +8,6 @@
 
 #define pr_fmt(fmt) "xen-blkback: " fmt
 
-#include <stdarg.h>
 #include <linux/module.h>
 #include <linux/kthread.h>
 #include <xen/events.h>
--- a/drivers/firmware/efi/libstub/efi-stub-helper.c
+++ b/drivers/firmware/efi/libstub/efi-stub-helper.c
@@ -7,7 +7,7 @@
  * Copyright 2011 Intel Corporation; author Matt Fleming
  */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 #include <linux/ctype.h>
 #include <linux/efi.h>
--- a/drivers/firmware/efi/libstub/vsprintf.c
+++ b/drivers/firmware/efi/libstub/vsprintf.c
@@ -10,7 +10,7 @@
  * Oh, it's a waste of space, but oh-so-yummy for debugging.
  */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 #include <linux/compiler.h>
 #include <linux/ctype.h>
--- a/drivers/gpu/drm/amd/display/dc/dc_helper.c
+++ b/drivers/gpu/drm/amd/display/dc/dc_helper.c
@@ -28,9 +28,9 @@
  */
 
 #include <linux/delay.h>
+#include <linux/stdarg.h>
 
 #include "dm_services.h"
-#include <stdarg.h>
 
 #include "dc.h"
 #include "dc_dmub_srv.h"
--- a/drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h
+++ b/drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h
@@ -39,7 +39,6 @@
 #include <linux/types.h>
 #include <linux/string.h>
 #include <linux/delay.h>
-#include <stdarg.h>
 
 #include "atomfirmware.h"
 
--- a/drivers/gpu/drm/drm_print.c
+++ b/drivers/gpu/drm/drm_print.c
@@ -25,7 +25,7 @@
 
 #define DEBUG /* for pr_debug() */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 #include <linux/io.h>
 #include <linux/moduleparam.h>
--- a/drivers/gpu/drm/msm/disp/msm_disp_snapshot.h
+++ b/drivers/gpu/drm/msm/disp/msm_disp_snapshot.h
@@ -25,7 +25,6 @@
 #include <linux/pm_runtime.h>
 #include <linux/kthread.h>
 #include <linux/devcoredump.h>
-#include <stdarg.h>
 #include "msm_kms.h"
 
 #define MSM_DISP_SNAPSHOT_MAX_BLKS		10
--- a/drivers/isdn/capi/capiutil.c
+++ b/drivers/isdn/capi/capiutil.c
@@ -379,7 +379,7 @@ static char *pnames[] =
 	/*2f */ "Useruserdata"
 };
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 /*-------------------------------------------------------*/
 static _cdebbuf *bufprint(_cdebbuf *cdb, char *fmt, ...)
--- a/drivers/macintosh/macio-adb.c
+++ b/drivers/macintosh/macio-adb.c
@@ -2,7 +2,6 @@
 /*
  * Driver for the ADB controller in the Mac I/O (Hydra) chip.
  */
-#include <stdarg.h>
 #include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/kernel.h>
--- a/drivers/macintosh/via-cuda.c
+++ b/drivers/macintosh/via-cuda.c
@@ -9,7 +9,7 @@
  *
  * Copyright (C) 1996 Paul Mackerras.
  */
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/kernel.h>
--- a/drivers/macintosh/via-macii.c
+++ b/drivers/macintosh/via-macii.c
@@ -23,8 +23,6 @@
  * Apple's "ADB Analyzer" bus sniffer is invaluable:
  *   ftp://ftp.apple.com/developer/Tool_Chest/Devices_-_Hardware/Apple_Desktop_Bus/
  */
-
-#include <stdarg.h>
 #include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/kernel.h>
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -18,7 +18,7 @@
  *    a sleep or a freq. switch
  *
  */
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/mutex.h>
 #include <linux/types.h>
 #include <linux/errno.h>
--- a/drivers/net/wireless/intersil/orinoco/hermes.c
+++ b/drivers/net/wireless/intersil/orinoco/hermes.c
@@ -79,7 +79,6 @@
 
 #undef HERMES_DEBUG
 #ifdef HERMES_DEBUG
-#include <stdarg.h>
 
 #define DEBUG(lvl, stuff...) if ((lvl) <= HERMES_DEBUG) DMSG(stuff)
 
--- a/drivers/net/wwan/iosm/iosm_ipc_imem.h
+++ b/drivers/net/wwan/iosm/iosm_ipc_imem.h
@@ -7,7 +7,6 @@
 #define IOSM_IPC_IMEM_H
 
 #include <linux/skbuff.h>
-#include <stdbool.h>
 
 #include "iosm_ipc_mmio.h"
 #include "iosm_ipc_pcie.h"
--- a/drivers/pinctrl/aspeed/pinmux-aspeed.h
+++ b/drivers/pinctrl/aspeed/pinmux-aspeed.h
@@ -5,7 +5,6 @@
 #define ASPEED_PINMUX_H
 
 #include <linux/regmap.h>
-#include <stdbool.h>
 
 /*
  * The ASPEED SoCs provide typically more than 200 pins for GPIO and other
--- a/drivers/scsi/elx/efct/efct_driver.h
+++ b/drivers/scsi/elx/efct/efct_driver.h
@@ -10,7 +10,6 @@
 /***************************************************************************
  * OS specific includes
  */
-#include <stdarg.h>
 #include <linux/module.h>
 #include <linux/debugfs.h>
 #include <linux/firmware.h>
--- a/drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h
+++ b/drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h
@@ -16,8 +16,6 @@
 #ifndef __ISP_LOCAL_H_INCLUDED__
 #define __ISP_LOCAL_H_INCLUDED__
 
-#include <stdbool.h>
-
 #include "isp_global.h"
 
 #include <isp2400_support.h>
--- a/drivers/staging/media/atomisp/pci/hive_isp_css_include/print_support.h
+++ b/drivers/staging/media/atomisp/pci/hive_isp_css_include/print_support.h
@@ -16,7 +16,7 @@
 #ifndef __PRINT_SUPPORT_H_INCLUDED__
 #define __PRINT_SUPPORT_H_INCLUDED__
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 extern int (*sh_css_printf)(const char *fmt, va_list args);
 /* depends on host supplied print function in ia_css_init() */
--- a/drivers/staging/media/atomisp/pci/ia_css_env.h
+++ b/drivers/staging/media/atomisp/pci/ia_css_env.h
@@ -17,7 +17,7 @@
 #define __IA_CSS_ENV_H
 
 #include <type_support.h>
-#include <stdarg.h> /* va_list */
+#include <linux/stdarg.h> /* va_list */
 #include "ia_css_types.h"
 #include "ia_css_acc_types.h"
 
--- a/drivers/staging/media/atomisp/pci/runtime/debug/interface/ia_css_debug.h
+++ b/drivers/staging/media/atomisp/pci/runtime/debug/interface/ia_css_debug.h
@@ -19,7 +19,7 @@
 /*! \file */
 
 #include <type_support.h>
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include "ia_css_types.h"
 #include "ia_css_binary.h"
 #include "ia_css_frame_public.h"
--- a/drivers/staging/media/atomisp/pci/sh_css_internal.h
+++ b/drivers/staging/media/atomisp/pci/sh_css_internal.h
@@ -20,7 +20,7 @@
 #include <math_support.h>
 #include <type_support.h>
 #include <platform_support.h>
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 #if !defined(ISP2401)
 #include "input_formatter.h"
--- a/drivers/xen/xen-scsiback.c
+++ b/drivers/xen/xen-scsiback.c
@@ -33,8 +33,6 @@
 
 #define pr_fmt(fmt) "xen-pvscsi: " fmt
 
-#include <stdarg.h>
-
 #include <linux/module.h>
 #include <linux/utsname.h>
 #include <linux/interrupt.h>
--- a/fs/befs/debug.c
+++ b/fs/befs/debug.c
@@ -14,7 +14,7 @@
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 #ifdef __KERNEL__
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/string.h>
 #include <linux/spinlock.h>
 #include <linux/kernel.h>
--- a/fs/reiserfs/prints.c
+++ b/fs/reiserfs/prints.c
@@ -8,7 +8,7 @@
 #include <linux/string.h>
 #include <linux/buffer_head.h>
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 static char error_buf[1024];
 static char fmt_buf[1024];
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -70,7 +70,7 @@
 #include <linux/module.h>
 #include <linux/bitops.h>
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 #include <linux/uaccess.h>
 
--- a/include/acpi/platform/acgcc.h
+++ b/include/acpi/platform/acgcc.h
@@ -22,7 +22,7 @@ typedef __builtin_va_list va_list;
 #define va_arg(v, l)            __builtin_va_arg(v, l)
 #define va_copy(d, s)           __builtin_va_copy(d, s)
 #else
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #endif
 #endif
 
--- a/include/linux/filter.h
+++ b/include/linux/filter.h
@@ -5,8 +5,6 @@
 #ifndef __LINUX_FILTER_H__
 #define __LINUX_FILTER_H__
 
-#include <stdarg.h>
-
 #include <linux/atomic.h>
 #include <linux/refcount.h>
 #include <linux/compat.h>
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -2,7 +2,7 @@
 #ifndef _LINUX_KERNEL_H
 #define _LINUX_KERNEL_H
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/align.h>
 #include <linux/limits.h>
 #include <linux/linkage.h>
--- a/include/linux/mISDNif.h
+++ b/include/linux/mISDNif.h
@@ -18,7 +18,6 @@
 #ifndef mISDNIF_H
 #define mISDNIF_H
 
-#include <stdarg.h>
 #include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/socket.h>
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -2,7 +2,7 @@
 #ifndef __KERNEL_PRINTK__
 #define __KERNEL_PRINTK__
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/init.h>
 #include <linux/kern_levels.h>
 #include <linux/linkage.h>
new file mode 100644
--- /dev/null
+++ b/include/linux/stdarg.h
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+#ifndef _LINUX_STDARG_H
+#define _LINUX_STDARG_H
+
+typedef __builtin_va_list va_list;
+#define va_start(v, l)	__builtin_va_start(v, l)
+#define va_end(v)	__builtin_va_end(v)
+#define va_arg(v, T)	__builtin_va_arg(v, T)
+#define va_copy(d, s)	__builtin_va_copy(d, s)
+
+#endif
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -6,7 +6,7 @@
 #include <linux/types.h>	/* for size_t */
 #include <linux/stddef.h>	/* for NULL */
 #include <linux/errno.h>	/* for E2BIG */
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <uapi/linux/string.h>
 
 extern char *strndup_user(const char __user *, long);
--- a/kernel/debug/kdb/kdb_support.c
+++ b/kernel/debug/kdb/kdb_support.c
@@ -10,7 +10,6 @@
  * 03/02/13    added new 2.5 kallsyms <xavier.bru@bull.net>
  */
 
-#include <stdarg.h>
 #include <linux/types.h>
 #include <linux/sched.h>
 #include <linux/mm.h>
--- a/lib/debug_info.c
+++ b/lib/debug_info.c
@@ -5,8 +5,6 @@
  * CONFIG_DEBUG_INFO_REDUCED. Please do not add actual code. However,
  * adding appropriate #includes is fine.
  */
-#include <stdarg.h>
-
 #include <linux/cred.h>
 #include <linux/crypto.h>
 #include <linux/dcache.h>
@@ -22,6 +20,7 @@
 #include <linux/net.h>
 #include <linux/sched.h>
 #include <linux/slab.h>
+#include <linux/stdarg.h>
 #include <linux/types.h>
 #include <net/addrconf.h>
 #include <net/sock.h>
--- a/lib/kasprintf.c
+++ b/lib/kasprintf.c
@@ -5,7 +5,7 @@
  *  Copyright (C) 1991, 1992  Linus Torvalds
  */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/export.h>
 #include <linux/slab.h>
 #include <linux/types.h>
--- a/lib/kunit/string-stream.h
+++ b/lib/kunit/string-stream.h
@@ -11,7 +11,7 @@
 
 #include <linux/spinlock.h>
 #include <linux/types.h>
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 struct string_stream_fragment {
 	struct kunit *test;
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -17,7 +17,7 @@
  * - scnprintf and vscnprintf
  */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 #include <linux/build_bug.h>
 #include <linux/clk.h>
 #include <linux/clk-provider.h>
--- a/mm/kfence/report.c
+++ b/mm/kfence/report.c
@@ -5,7 +5,7 @@
  * Copyright (C) 2020, Google LLC.
  */
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 #include <linux/kernel.h>
 #include <linux/lockdep.h>
--- a/net/batman-adv/log.c
+++ b/net/batman-adv/log.c
@@ -7,7 +7,7 @@
 #include "log.h"
 #include "main.h"
 
-#include <stdarg.h>
+#include <linux/stdarg.h>
 
 #include "trace.h"
 
--- a/sound/aoa/codecs/onyx.h
+++ b/sound/aoa/codecs/onyx.h
@@ -6,7 +6,6 @@
  */
 #ifndef __SND_AOA_CODEC_ONYX_H
 #define __SND_AOA_CODEC_ONYX_H
-#include <stddef.h>
 #include <linux/i2c.h>
 #include <asm/pmac_low_i2c.h>
 #include <asm/prom.h>
--- a/sound/aoa/codecs/tas.c
+++ b/sound/aoa/codecs/tas.c
@@ -58,7 +58,6 @@
  *    and up to the hardware designer to not wire
  *    them up in some weird unusable way.
  */
-#include <stddef.h>
 #include <linux/i2c.h>
 #include <asm/pmac_low_i2c.h>
 #include <asm/prom.h>
--- a/sound/core/info.c
+++ b/sound/core/info.c
@@ -16,7 +16,6 @@
 #include <linux/utsname.h>
 #include <linux/proc_fs.h>
 #include <linux/mutex.h>
-#include <stdarg.h>
 
 int snd_info_check_reserved_words(const char *str)
 {

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH -mm] fixup "Decouple build from userspace headers"
  2021-07-14 17:45 ` [PATCH v2] " Alexey Dobriyan
@ 2021-07-15 21:15   ` Alexey Dobriyan
  2021-07-18 12:36     ` Masahiro Yamada
  2021-07-16  9:03   ` [PATCH v2] Decouple build from userspace headers Anders Roxell
  1 sibling, 1 reply; 16+ messages in thread
From: Alexey Dobriyan @ 2021-07-15 21:15 UTC (permalink / raw)
  To: akpm; +Cc: linux-kbuild, linux-kernel, linux-arch, arnd, masahiroy, hch

Allow to find SIMD headers where necessary.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

	fold into decouple-build-from-userspace-headers.patch

 arch/arm64/lib/Makefile   |    2 +-
 arch/powerpc/lib/Makefile |    2 +-
 lib/raid6/Makefile        |    4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

--- a/arch/arm64/lib/Makefile
+++ b/arch/arm64/lib/Makefile
@@ -8,7 +8,7 @@ lib-y		:= clear_user.o delay.o copy_from_user.o		\
 ifeq ($(CONFIG_KERNEL_MODE_NEON), y)
 obj-$(CONFIG_XOR_BLOCKS)	+= xor-neon.o
 CFLAGS_REMOVE_xor-neon.o	+= -mgeneral-regs-only
-CFLAGS_xor-neon.o		+= -ffreestanding
+CFLAGS_xor-neon.o		+= -ffreestanding -isystem $(shell $(CC) -print-file-name=include)
 endif
 
 lib-$(CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE) += uaccess_flushcache.o
--- a/arch/powerpc/lib/Makefile
+++ b/arch/powerpc/lib/Makefile
@@ -64,6 +64,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o
 obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o
 
 obj-$(CONFIG_ALTIVEC)	+= xor_vmx.o xor_vmx_glue.o
-CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec)
+CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec) -isystem $(shell $(CC) -print-file-name=include)
 
 obj-$(CONFIG_PPC64) += $(obj64-y)
--- a/lib/raid6/Makefile
+++ b/lib/raid6/Makefile
@@ -13,7 +13,7 @@ raid6_pq-$(CONFIG_S390) += s390vx8.o recov_s390xc.o
 hostprogs	+= mktables
 
 ifeq ($(CONFIG_ALTIVEC),y)
-altivec_flags := -maltivec $(call cc-option,-mabi=altivec)
+altivec_flags := -maltivec $(call cc-option,-mabi=altivec) -isystem $(shell $(CC) -print-file-name=include)
 
 ifdef CONFIG_CC_IS_CLANG
 # clang ppc port does not yet support -maltivec when -msoft-float is
@@ -33,7 +33,7 @@ endif
 # The GCC option -ffreestanding is required in order to compile code containing
 # ARM/NEON intrinsics in a non C99-compliant environment (such as the kernel)
 ifeq ($(CONFIG_KERNEL_MODE_NEON),y)
-NEON_FLAGS := -ffreestanding
+NEON_FLAGS := -ffreestanding -isystem $(shell $(CC) -print-file-name=include)
 ifeq ($(ARCH),arm)
 NEON_FLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
 endif

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2] Decouple build from userspace headers
  2021-07-14 17:45 ` [PATCH v2] " Alexey Dobriyan
  2021-07-15 21:15   ` [PATCH -mm] fixup "Decouple build from userspace headers" Alexey Dobriyan
@ 2021-07-16  9:03   ` Anders Roxell
  2021-07-16 10:10     ` Alexey Dobriyan
  1 sibling, 1 reply; 16+ messages in thread
From: Anders Roxell @ 2021-07-16  9:03 UTC (permalink / raw)
  To: Alexey Dobriyan
  Cc: Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	Masahiro Yamada, hch, Linux-Next Mailing List, Stephen Rothwell

On Wed, 14 Jul 2021 at 19:45, Alexey Dobriyan <adobriyan@gmail.com> wrote:
>
> First, userspace headers can be under incompatible license.
>
> Second, kernel doesn't require userspace to operate and should not
> require anything from userspace to be built other than compiler.
> We would use -ffreestanding too if not builtin function shenanigans.
>
> To decouple:
>
> * ship minimal stdarg.h as <linux/stdarg.h>,
>         1 type, 4 macros
>
> GPL 2 version of <stdarg.h> can be extracted from
> http://archive.debian.org/debian/pool/main/g/gcc-4.2/gcc-4.2_4.2.4.orig.tar.gz
>
> * delete "-isystem" from command line arguments,
>         this is what enables header leakage
>
> * fixup/delete include directives where necessary.
>
> Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>

This patch was included into todays next tag next-20210716 and when I
build an arm64 allmodconfig
kernel I see the following error:

# to reproduce this build locally: tuxmake --target-arch=arm64
--kconfig=allmodconfig --toolchain=gcc-11 --wrapper=none
--environment=KBUILD_BUILD_TIMESTAMP=@1626414793
--environment=KBUILD_BUILD_USER=tuxmake
--environment=KBUILD_BUILD_HOST=tuxmake --runtime=podman
--image=docker.io/tuxmake/arm64_gcc-11
KCONFIG_ALLCONFIG=arch/arm64/configs/defconfig config default kernel
modules
make --silent --keep-going --jobs=32
O=/home/anders/.cache/tuxmake/builds/current
KCONFIG_ALLCONFIG=arch/arm64/configs/defconfig ARCH=arm64
CROSS_COMPILE=aarch64-linux-gnu- allmodconfig
make --silent --keep-going --jobs=32
O=/home/anders/.cache/tuxmake/builds/current
KCONFIG_ALLCONFIG=arch/arm64/configs/defconfig ARCH=arm64
CROSS_COMPILE=aarch64-linux-gnu-
In file included from
/home/anders/src/kernel/testing/crypto/aegis128-neon-inner.c:7:
/home/anders/src/kernel/testing/arch/arm64/include/asm/neon-intrinsics.h:33:10:
fatal error: arm_neon.h: No such file or directory
   33 | #include <arm_neon.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[2]: *** [/home/anders/src/kernel/testing/scripts/Makefile.build:272:
crypto/aegis128-neon-inner.o] Error 1
make[2]: Target '__build' not remade because of errors.
make[1]: *** [/home/anders/src/kernel/testing/Makefile:1990: crypto] Error 2
make[1]: Target '__all' not remade because of errors.
make: *** [Makefile:227: __sub-make] Error 2
make: Target '__all' not remade because of errors.


If I revert this patch I can build it.

Cheers,
Anders

> ---
>
>  Makefile                                                                 |    2 -
>  arch/arm/kernel/process.c                                                |    2 -
>  arch/arm/mach-bcm/bcm_kona_smc.c                                         |    2 -
>  arch/arm64/kernel/process.c                                              |    3 --
>  arch/openrisc/kernel/process.c                                           |    2 -
>  arch/parisc/kernel/firmware.c                                            |    2 -
>  arch/parisc/kernel/process.c                                             |    3 --
>  arch/powerpc/kernel/prom.c                                               |    1
>  arch/powerpc/kernel/prom_init.c                                          |    2 -
>  arch/powerpc/kernel/rtas.c                                               |    2 -
>  arch/powerpc/kernel/udbg.c                                               |    2 -
>  arch/s390/boot/pgm_check_info.c                                          |    2 -
>  arch/sparc/kernel/process_32.c                                           |    3 --
>  arch/sparc/kernel/process_64.c                                           |    3 --
>  arch/um/include/shared/irq_user.h                                        |    1
>  arch/um/include/shared/os.h                                              |    1
>  arch/um/os-Linux/signal.c                                                |    2 -
>  arch/um/os-Linux/util.c                                                  |    1
>  arch/x86/boot/boot.h                                                     |    2 -
>  crypto/aegis128-neon-inner.c                                             |    2 -
>  drivers/block/xen-blkback/xenbus.c                                       |    1
>  drivers/firmware/efi/libstub/efi-stub-helper.c                           |    2 -
>  drivers/firmware/efi/libstub/vsprintf.c                                  |    2 -
>  drivers/gpu/drm/amd/display/dc/dc_helper.c                               |    2 -
>  drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h                          |    1
>  drivers/gpu/drm/drm_print.c                                              |    2 -
>  drivers/gpu/drm/msm/disp/msm_disp_snapshot.h                             |    1
>  drivers/isdn/capi/capiutil.c                                             |    2 -
>  drivers/macintosh/macio-adb.c                                            |    1
>  drivers/macintosh/via-cuda.c                                             |    2 -
>  drivers/macintosh/via-macii.c                                            |    2 -
>  drivers/macintosh/via-pmu.c                                              |    2 -
>  drivers/net/wireless/intersil/orinoco/hermes.c                           |    1
>  drivers/net/wwan/iosm/iosm_ipc_imem.h                                    |    1
>  drivers/pinctrl/aspeed/pinmux-aspeed.h                                   |    1
>  drivers/scsi/elx/efct/efct_driver.h                                      |    1
>  drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h   |    2 -
>  drivers/staging/media/atomisp/pci/hive_isp_css_include/print_support.h   |    2 -
>  drivers/staging/media/atomisp/pci/ia_css_env.h                           |    2 -
>  drivers/staging/media/atomisp/pci/runtime/debug/interface/ia_css_debug.h |    2 -
>  drivers/staging/media/atomisp/pci/sh_css_internal.h                      |    2 -
>  drivers/xen/xen-scsiback.c                                               |    2 -
>  fs/befs/debug.c                                                          |    2 -
>  fs/reiserfs/prints.c                                                     |    2 -
>  fs/ufs/super.c                                                           |    2 -
>  include/acpi/platform/acgcc.h                                            |    2 -
>  include/linux/filter.h                                                   |    2 -
>  include/linux/kernel.h                                                   |    2 -
>  include/linux/mISDNif.h                                                  |    1
>  include/linux/printk.h                                                   |    2 -
>  include/linux/stdarg.h                                                   |   11 ++++++++++
>  include/linux/string.h                                                   |    2 -
>  kernel/debug/kdb/kdb_support.c                                           |    1
>  lib/debug_info.c                                                         |    3 --
>  lib/kasprintf.c                                                          |    2 -
>  lib/kunit/string-stream.h                                                |    2 -
>  lib/vsprintf.c                                                           |    2 -
>  mm/kfence/report.c                                                       |    2 -
>  net/batman-adv/log.c                                                     |    2 -
>  sound/aoa/codecs/onyx.h                                                  |    1
>  sound/aoa/codecs/tas.c                                                   |    1
>  sound/core/info.c                                                        |    1
>  62 files changed, 44 insertions(+), 77 deletions(-)
>
> --- a/Makefile
> +++ b/Makefile
> @@ -978,7 +978,7 @@ KBUILD_CFLAGS += -falign-functions=64
>  endif
>
>  # arch Makefile may override CC so keep this after arch Makefile is included
> -NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
> +NOSTDINC_FLAGS += -nostdinc
>
>  # warn about C99 declaration after statement
>  KBUILD_CFLAGS += -Wdeclaration-after-statement
> --- a/arch/arm/kernel/process.c
> +++ b/arch/arm/kernel/process.c
> @@ -5,8 +5,6 @@
>   *  Copyright (C) 1996-2000 Russell King - Converted to ARM.
>   *  Original Copyright (C) 1995  Linus Torvalds
>   */
> -#include <stdarg.h>
> -
>  #include <linux/export.h>
>  #include <linux/sched.h>
>  #include <linux/sched/debug.h>
> --- a/arch/arm/mach-bcm/bcm_kona_smc.c
> +++ b/arch/arm/mach-bcm/bcm_kona_smc.c
> @@ -10,8 +10,6 @@
>   * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>   * GNU General Public License for more details.
>   */
> -
> -#include <stdarg.h>
>  #include <linux/smp.h>
>  #include <linux/io.h>
>  #include <linux/ioport.h>
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -6,9 +6,6 @@
>   * Copyright (C) 1996-2000 Russell King - Converted to ARM.
>   * Copyright (C) 2012 ARM Ltd.
>   */
> -
> -#include <stdarg.h>
> -
>  #include <linux/compat.h>
>  #include <linux/efi.h>
>  #include <linux/elf.h>
> --- a/arch/openrisc/kernel/process.c
> +++ b/arch/openrisc/kernel/process.c
> @@ -14,8 +14,6 @@
>   */
>
>  #define __KERNEL_SYSCALLS__
> -#include <stdarg.h>
> -
>  #include <linux/errno.h>
>  #include <linux/sched.h>
>  #include <linux/sched/debug.h>
> --- a/arch/parisc/kernel/firmware.c
> +++ b/arch/parisc/kernel/firmware.c
> @@ -51,7 +51,7 @@
>   *                                     prumpf  991016
>   */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  #include <linux/delay.h>
>  #include <linux/init.h>
> --- a/arch/parisc/kernel/process.c
> +++ b/arch/parisc/kernel/process.c
> @@ -17,9 +17,6 @@
>   *    Copyright (C) 2001-2014 Helge Deller <deller@gmx.de>
>   *    Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org>
>   */
> -
> -#include <stdarg.h>
> -
>  #include <linux/elf.h>
>  #include <linux/errno.h>
>  #include <linux/kernel.h>
> --- a/arch/powerpc/kernel/prom.c
> +++ b/arch/powerpc/kernel/prom.c
> @@ -11,7 +11,6 @@
>
>  #undef DEBUG
>
> -#include <stdarg.h>
>  #include <linux/kernel.h>
>  #include <linux/string.h>
>  #include <linux/init.h>
> --- a/arch/powerpc/kernel/prom_init.c
> +++ b/arch/powerpc/kernel/prom_init.c
> @@ -14,7 +14,7 @@
>  /* we cannot use FORTIFY as it brings in new symbols */
>  #define __NO_FORTIFY
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/kernel.h>
>  #include <linux/string.h>
>  #include <linux/init.h>
> --- a/arch/powerpc/kernel/rtas.c
> +++ b/arch/powerpc/kernel/rtas.c
> @@ -7,7 +7,7 @@
>   * Copyright (C) 2001 IBM.
>   */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/kernel.h>
>  #include <linux/types.h>
>  #include <linux/spinlock.h>
> --- a/arch/powerpc/kernel/udbg.c
> +++ b/arch/powerpc/kernel/udbg.c
> @@ -5,7 +5,7 @@
>   * c 2001 PPC 64 Team, IBM Corp
>   */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/types.h>
>  #include <linux/sched.h>
>  #include <linux/console.h>
> --- a/arch/s390/boot/pgm_check_info.c
> +++ b/arch/s390/boot/pgm_check_info.c
> @@ -1,5 +1,6 @@
>  // SPDX-License-Identifier: GPL-2.0
>  #include <linux/kernel.h>
> +#include <linux/stdarg.h>
>  #include <linux/string.h>
>  #include <linux/ctype.h>
>  #include <asm/stacktrace.h>
> @@ -8,7 +9,6 @@
>  #include <asm/setup.h>
>  #include <asm/sclp.h>
>  #include <asm/uv.h>
> -#include <stdarg.h>
>  #include "boot.h"
>
>  const char hex_asc[] = "0123456789abcdef";
> --- a/arch/sparc/kernel/process_32.c
> +++ b/arch/sparc/kernel/process_32.c
> @@ -8,9 +8,6 @@
>  /*
>   * This file handles the architecture-dependent parts of process handling..
>   */
> -
> -#include <stdarg.h>
> -
>  #include <linux/elfcore.h>
>  #include <linux/errno.h>
>  #include <linux/module.h>
> --- a/arch/sparc/kernel/process_64.c
> +++ b/arch/sparc/kernel/process_64.c
> @@ -9,9 +9,6 @@
>  /*
>   * This file handles the architecture-dependent parts of process handling..
>   */
> -
> -#include <stdarg.h>
> -
>  #include <linux/errno.h>
>  #include <linux/export.h>
>  #include <linux/sched.h>
> --- a/arch/um/include/shared/irq_user.h
> +++ b/arch/um/include/shared/irq_user.h
> @@ -7,7 +7,6 @@
>  #define __IRQ_USER_H__
>
>  #include <sysdep/ptrace.h>
> -#include <stdbool.h>
>
>  enum um_irq_type {
>         IRQ_READ,
> --- a/arch/um/include/shared/os.h
> +++ b/arch/um/include/shared/os.h
> @@ -8,7 +8,6 @@
>  #ifndef __OS_H__
>  #define __OS_H__
>
> -#include <stdarg.h>
>  #include <irq_user.h>
>  #include <longjmp.h>
>  #include <mm_id.h>
> --- a/arch/um/os-Linux/signal.c
> +++ b/arch/um/os-Linux/signal.c
> @@ -67,7 +67,7 @@ int signals_enabled;
>  #ifdef UML_CONFIG_UML_TIME_TRAVEL_SUPPORT
>  static int signals_blocked;
>  #else
> -#define signals_blocked false
> +#define signals_blocked 0
>  #endif
>  static unsigned int signals_pending;
>  static unsigned int signals_active = 0;
> --- a/arch/um/os-Linux/util.c
> +++ b/arch/um/os-Linux/util.c
> @@ -3,6 +3,7 @@
>   * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
>   */
>
> +#include <stdarg.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <unistd.h>
> --- a/arch/x86/boot/boot.h
> +++ b/arch/x86/boot/boot.h
> @@ -18,7 +18,7 @@
>
>  #ifndef __ASSEMBLY__
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/types.h>
>  #include <linux/edd.h>
>  #include <asm/setup.h>
> --- a/crypto/aegis128-neon-inner.c
> +++ b/crypto/aegis128-neon-inner.c
> @@ -15,8 +15,6 @@
>
>  #define AEGIS_BLOCK_SIZE       16
>
> -#include <stddef.h>
> -
>  extern int aegis128_have_aes_insn;
>
>  void *memcpy(void *dest, const void *src, size_t n);
> --- a/drivers/block/xen-blkback/xenbus.c
> +++ b/drivers/block/xen-blkback/xenbus.c
> @@ -8,7 +8,6 @@
>
>  #define pr_fmt(fmt) "xen-blkback: " fmt
>
> -#include <stdarg.h>
>  #include <linux/module.h>
>  #include <linux/kthread.h>
>  #include <xen/events.h>
> --- a/drivers/firmware/efi/libstub/efi-stub-helper.c
> +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c
> @@ -7,7 +7,7 @@
>   * Copyright 2011 Intel Corporation; author Matt Fleming
>   */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  #include <linux/ctype.h>
>  #include <linux/efi.h>
> --- a/drivers/firmware/efi/libstub/vsprintf.c
> +++ b/drivers/firmware/efi/libstub/vsprintf.c
> @@ -10,7 +10,7 @@
>   * Oh, it's a waste of space, but oh-so-yummy for debugging.
>   */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  #include <linux/compiler.h>
>  #include <linux/ctype.h>
> --- a/drivers/gpu/drm/amd/display/dc/dc_helper.c
> +++ b/drivers/gpu/drm/amd/display/dc/dc_helper.c
> @@ -28,9 +28,9 @@
>   */
>
>  #include <linux/delay.h>
> +#include <linux/stdarg.h>
>
>  #include "dm_services.h"
> -#include <stdarg.h>
>
>  #include "dc.h"
>  #include "dc_dmub_srv.h"
> --- a/drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h
> +++ b/drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h
> @@ -39,7 +39,6 @@
>  #include <linux/types.h>
>  #include <linux/string.h>
>  #include <linux/delay.h>
> -#include <stdarg.h>
>
>  #include "atomfirmware.h"
>
> --- a/drivers/gpu/drm/drm_print.c
> +++ b/drivers/gpu/drm/drm_print.c
> @@ -25,7 +25,7 @@
>
>  #define DEBUG /* for pr_debug() */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  #include <linux/io.h>
>  #include <linux/moduleparam.h>
> --- a/drivers/gpu/drm/msm/disp/msm_disp_snapshot.h
> +++ b/drivers/gpu/drm/msm/disp/msm_disp_snapshot.h
> @@ -25,7 +25,6 @@
>  #include <linux/pm_runtime.h>
>  #include <linux/kthread.h>
>  #include <linux/devcoredump.h>
> -#include <stdarg.h>
>  #include "msm_kms.h"
>
>  #define MSM_DISP_SNAPSHOT_MAX_BLKS             10
> --- a/drivers/isdn/capi/capiutil.c
> +++ b/drivers/isdn/capi/capiutil.c
> @@ -379,7 +379,7 @@ static char *pnames[] =
>         /*2f */ "Useruserdata"
>  };
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  /*-------------------------------------------------------*/
>  static _cdebbuf *bufprint(_cdebbuf *cdb, char *fmt, ...)
> --- a/drivers/macintosh/macio-adb.c
> +++ b/drivers/macintosh/macio-adb.c
> @@ -2,7 +2,6 @@
>  /*
>   * Driver for the ADB controller in the Mac I/O (Hydra) chip.
>   */
> -#include <stdarg.h>
>  #include <linux/types.h>
>  #include <linux/errno.h>
>  #include <linux/kernel.h>
> --- a/drivers/macintosh/via-cuda.c
> +++ b/drivers/macintosh/via-cuda.c
> @@ -9,7 +9,7 @@
>   *
>   * Copyright (C) 1996 Paul Mackerras.
>   */
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/types.h>
>  #include <linux/errno.h>
>  #include <linux/kernel.h>
> --- a/drivers/macintosh/via-macii.c
> +++ b/drivers/macintosh/via-macii.c
> @@ -23,8 +23,6 @@
>   * Apple's "ADB Analyzer" bus sniffer is invaluable:
>   *   ftp://ftp.apple.com/developer/Tool_Chest/Devices_-_Hardware/Apple_Desktop_Bus/
>   */
> -
> -#include <stdarg.h>
>  #include <linux/types.h>
>  #include <linux/errno.h>
>  #include <linux/kernel.h>
> --- a/drivers/macintosh/via-pmu.c
> +++ b/drivers/macintosh/via-pmu.c
> @@ -18,7 +18,7 @@
>   *    a sleep or a freq. switch
>   *
>   */
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/mutex.h>
>  #include <linux/types.h>
>  #include <linux/errno.h>
> --- a/drivers/net/wireless/intersil/orinoco/hermes.c
> +++ b/drivers/net/wireless/intersil/orinoco/hermes.c
> @@ -79,7 +79,6 @@
>
>  #undef HERMES_DEBUG
>  #ifdef HERMES_DEBUG
> -#include <stdarg.h>
>
>  #define DEBUG(lvl, stuff...) if ((lvl) <= HERMES_DEBUG) DMSG(stuff)
>
> --- a/drivers/net/wwan/iosm/iosm_ipc_imem.h
> +++ b/drivers/net/wwan/iosm/iosm_ipc_imem.h
> @@ -7,7 +7,6 @@
>  #define IOSM_IPC_IMEM_H
>
>  #include <linux/skbuff.h>
> -#include <stdbool.h>
>
>  #include "iosm_ipc_mmio.h"
>  #include "iosm_ipc_pcie.h"
> --- a/drivers/pinctrl/aspeed/pinmux-aspeed.h
> +++ b/drivers/pinctrl/aspeed/pinmux-aspeed.h
> @@ -5,7 +5,6 @@
>  #define ASPEED_PINMUX_H
>
>  #include <linux/regmap.h>
> -#include <stdbool.h>
>
>  /*
>   * The ASPEED SoCs provide typically more than 200 pins for GPIO and other
> --- a/drivers/scsi/elx/efct/efct_driver.h
> +++ b/drivers/scsi/elx/efct/efct_driver.h
> @@ -10,7 +10,6 @@
>  /***************************************************************************
>   * OS specific includes
>   */
> -#include <stdarg.h>
>  #include <linux/module.h>
>  #include <linux/debugfs.h>
>  #include <linux/firmware.h>
> --- a/drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h
> +++ b/drivers/staging/media/atomisp/pci/hive_isp_css_common/host/isp_local.h
> @@ -16,8 +16,6 @@
>  #ifndef __ISP_LOCAL_H_INCLUDED__
>  #define __ISP_LOCAL_H_INCLUDED__
>
> -#include <stdbool.h>
> -
>  #include "isp_global.h"
>
>  #include <isp2400_support.h>
> --- a/drivers/staging/media/atomisp/pci/hive_isp_css_include/print_support.h
> +++ b/drivers/staging/media/atomisp/pci/hive_isp_css_include/print_support.h
> @@ -16,7 +16,7 @@
>  #ifndef __PRINT_SUPPORT_H_INCLUDED__
>  #define __PRINT_SUPPORT_H_INCLUDED__
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  extern int (*sh_css_printf)(const char *fmt, va_list args);
>  /* depends on host supplied print function in ia_css_init() */
> --- a/drivers/staging/media/atomisp/pci/ia_css_env.h
> +++ b/drivers/staging/media/atomisp/pci/ia_css_env.h
> @@ -17,7 +17,7 @@
>  #define __IA_CSS_ENV_H
>
>  #include <type_support.h>
> -#include <stdarg.h> /* va_list */
> +#include <linux/stdarg.h> /* va_list */
>  #include "ia_css_types.h"
>  #include "ia_css_acc_types.h"
>
> --- a/drivers/staging/media/atomisp/pci/runtime/debug/interface/ia_css_debug.h
> +++ b/drivers/staging/media/atomisp/pci/runtime/debug/interface/ia_css_debug.h
> @@ -19,7 +19,7 @@
>  /*! \file */
>
>  #include <type_support.h>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include "ia_css_types.h"
>  #include "ia_css_binary.h"
>  #include "ia_css_frame_public.h"
> --- a/drivers/staging/media/atomisp/pci/sh_css_internal.h
> +++ b/drivers/staging/media/atomisp/pci/sh_css_internal.h
> @@ -20,7 +20,7 @@
>  #include <math_support.h>
>  #include <type_support.h>
>  #include <platform_support.h>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  #if !defined(ISP2401)
>  #include "input_formatter.h"
> --- a/drivers/xen/xen-scsiback.c
> +++ b/drivers/xen/xen-scsiback.c
> @@ -33,8 +33,6 @@
>
>  #define pr_fmt(fmt) "xen-pvscsi: " fmt
>
> -#include <stdarg.h>
> -
>  #include <linux/module.h>
>  #include <linux/utsname.h>
>  #include <linux/interrupt.h>
> --- a/fs/befs/debug.c
> +++ b/fs/befs/debug.c
> @@ -14,7 +14,7 @@
>  #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
>  #ifdef __KERNEL__
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/string.h>
>  #include <linux/spinlock.h>
>  #include <linux/kernel.h>
> --- a/fs/reiserfs/prints.c
> +++ b/fs/reiserfs/prints.c
> @@ -8,7 +8,7 @@
>  #include <linux/string.h>
>  #include <linux/buffer_head.h>
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  static char error_buf[1024];
>  static char fmt_buf[1024];
> --- a/fs/ufs/super.c
> +++ b/fs/ufs/super.c
> @@ -70,7 +70,7 @@
>  #include <linux/module.h>
>  #include <linux/bitops.h>
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  #include <linux/uaccess.h>
>
> --- a/include/acpi/platform/acgcc.h
> +++ b/include/acpi/platform/acgcc.h
> @@ -22,7 +22,7 @@ typedef __builtin_va_list va_list;
>  #define va_arg(v, l)            __builtin_va_arg(v, l)
>  #define va_copy(d, s)           __builtin_va_copy(d, s)
>  #else
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #endif
>  #endif
>
> --- a/include/linux/filter.h
> +++ b/include/linux/filter.h
> @@ -5,8 +5,6 @@
>  #ifndef __LINUX_FILTER_H__
>  #define __LINUX_FILTER_H__
>
> -#include <stdarg.h>
> -
>  #include <linux/atomic.h>
>  #include <linux/refcount.h>
>  #include <linux/compat.h>
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -2,7 +2,7 @@
>  #ifndef _LINUX_KERNEL_H
>  #define _LINUX_KERNEL_H
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/align.h>
>  #include <linux/limits.h>
>  #include <linux/linkage.h>
> --- a/include/linux/mISDNif.h
> +++ b/include/linux/mISDNif.h
> @@ -18,7 +18,6 @@
>  #ifndef mISDNIF_H
>  #define mISDNIF_H
>
> -#include <stdarg.h>
>  #include <linux/types.h>
>  #include <linux/errno.h>
>  #include <linux/socket.h>
> --- a/include/linux/printk.h
> +++ b/include/linux/printk.h
> @@ -2,7 +2,7 @@
>  #ifndef __KERNEL_PRINTK__
>  #define __KERNEL_PRINTK__
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/init.h>
>  #include <linux/kern_levels.h>
>  #include <linux/linkage.h>
> new file mode 100644
> --- /dev/null
> +++ b/include/linux/stdarg.h
> @@ -0,0 +1,11 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +#ifndef _LINUX_STDARG_H
> +#define _LINUX_STDARG_H
> +
> +typedef __builtin_va_list va_list;
> +#define va_start(v, l) __builtin_va_start(v, l)
> +#define va_end(v)      __builtin_va_end(v)
> +#define va_arg(v, T)   __builtin_va_arg(v, T)
> +#define va_copy(d, s)  __builtin_va_copy(d, s)
> +
> +#endif
> --- a/include/linux/string.h
> +++ b/include/linux/string.h
> @@ -6,7 +6,7 @@
>  #include <linux/types.h>       /* for size_t */
>  #include <linux/stddef.h>      /* for NULL */
>  #include <linux/errno.h>       /* for E2BIG */
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <uapi/linux/string.h>
>
>  extern char *strndup_user(const char __user *, long);
> --- a/kernel/debug/kdb/kdb_support.c
> +++ b/kernel/debug/kdb/kdb_support.c
> @@ -10,7 +10,6 @@
>   * 03/02/13    added new 2.5 kallsyms <xavier.bru@bull.net>
>   */
>
> -#include <stdarg.h>
>  #include <linux/types.h>
>  #include <linux/sched.h>
>  #include <linux/mm.h>
> --- a/lib/debug_info.c
> +++ b/lib/debug_info.c
> @@ -5,8 +5,6 @@
>   * CONFIG_DEBUG_INFO_REDUCED. Please do not add actual code. However,
>   * adding appropriate #includes is fine.
>   */
> -#include <stdarg.h>
> -
>  #include <linux/cred.h>
>  #include <linux/crypto.h>
>  #include <linux/dcache.h>
> @@ -22,6 +20,7 @@
>  #include <linux/net.h>
>  #include <linux/sched.h>
>  #include <linux/slab.h>
> +#include <linux/stdarg.h>
>  #include <linux/types.h>
>  #include <net/addrconf.h>
>  #include <net/sock.h>
> --- a/lib/kasprintf.c
> +++ b/lib/kasprintf.c
> @@ -5,7 +5,7 @@
>   *  Copyright (C) 1991, 1992  Linus Torvalds
>   */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/export.h>
>  #include <linux/slab.h>
>  #include <linux/types.h>
> --- a/lib/kunit/string-stream.h
> +++ b/lib/kunit/string-stream.h
> @@ -11,7 +11,7 @@
>
>  #include <linux/spinlock.h>
>  #include <linux/types.h>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  struct string_stream_fragment {
>         struct kunit *test;
> --- a/lib/vsprintf.c
> +++ b/lib/vsprintf.c
> @@ -17,7 +17,7 @@
>   * - scnprintf and vscnprintf
>   */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>  #include <linux/build_bug.h>
>  #include <linux/clk.h>
>  #include <linux/clk-provider.h>
> --- a/mm/kfence/report.c
> +++ b/mm/kfence/report.c
> @@ -5,7 +5,7 @@
>   * Copyright (C) 2020, Google LLC.
>   */
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  #include <linux/kernel.h>
>  #include <linux/lockdep.h>
> --- a/net/batman-adv/log.c
> +++ b/net/batman-adv/log.c
> @@ -7,7 +7,7 @@
>  #include "log.h"
>  #include "main.h"
>
> -#include <stdarg.h>
> +#include <linux/stdarg.h>
>
>  #include "trace.h"
>
> --- a/sound/aoa/codecs/onyx.h
> +++ b/sound/aoa/codecs/onyx.h
> @@ -6,7 +6,6 @@
>   */
>  #ifndef __SND_AOA_CODEC_ONYX_H
>  #define __SND_AOA_CODEC_ONYX_H
> -#include <stddef.h>
>  #include <linux/i2c.h>
>  #include <asm/pmac_low_i2c.h>
>  #include <asm/prom.h>
> --- a/sound/aoa/codecs/tas.c
> +++ b/sound/aoa/codecs/tas.c
> @@ -58,7 +58,6 @@
>   *    and up to the hardware designer to not wire
>   *    them up in some weird unusable way.
>   */
> -#include <stddef.h>
>  #include <linux/i2c.h>
>  #include <asm/pmac_low_i2c.h>
>  #include <asm/prom.h>
> --- a/sound/core/info.c
> +++ b/sound/core/info.c
> @@ -16,7 +16,6 @@
>  #include <linux/utsname.h>
>  #include <linux/proc_fs.h>
>  #include <linux/mutex.h>
> -#include <stdarg.h>
>
>  int snd_info_check_reserved_words(const char *str)
>  {

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2] Decouple build from userspace headers
  2021-07-16  9:03   ` [PATCH v2] Decouple build from userspace headers Anders Roxell
@ 2021-07-16 10:10     ` Alexey Dobriyan
  2021-07-16 13:04       ` Anders Roxell
  2021-07-18 13:11       ` Masahiro Yamada
  0 siblings, 2 replies; 16+ messages in thread
From: Alexey Dobriyan @ 2021-07-16 10:10 UTC (permalink / raw)
  To: Anders Roxell
  Cc: Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	Masahiro Yamada, hch, Linux-Next Mailing List, Stephen Rothwell

On Fri, Jul 16, 2021 at 11:03:41AM +0200, Anders Roxell wrote:
> On Wed, 14 Jul 2021 at 19:45, Alexey Dobriyan <adobriyan@gmail.com> wrote:
> >

> In file included from
> /home/anders/src/kernel/testing/crypto/aegis128-neon-inner.c:7:
> /home/anders/src/kernel/testing/arch/arm64/include/asm/neon-intrinsics.h:33:10:
> fatal error: arm_neon.h: No such file or directory
>    33 | #include <arm_neon.h>
>       |          ^~~~~~~~~~~~

> If I revert this patch I can build it.

Please, see followup fixes or grab new -mm.
https://lore.kernel.org/lkml/YO8ioz4sHwcUAkdt@localhost.localdomain/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2] Decouple build from userspace headers
  2021-07-16 10:10     ` Alexey Dobriyan
@ 2021-07-16 13:04       ` Anders Roxell
  2021-07-18 13:11       ` Masahiro Yamada
  1 sibling, 0 replies; 16+ messages in thread
From: Anders Roxell @ 2021-07-16 13:04 UTC (permalink / raw)
  To: Alexey Dobriyan
  Cc: Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	Masahiro Yamada, hch, Linux-Next Mailing List, Stephen Rothwell

On Fri, 16 Jul 2021 at 12:10, Alexey Dobriyan <adobriyan@gmail.com> wrote:
>
> On Fri, Jul 16, 2021 at 11:03:41AM +0200, Anders Roxell wrote:
> > On Wed, 14 Jul 2021 at 19:45, Alexey Dobriyan <adobriyan@gmail.com> wrote:
> > >
>
> > In file included from
> > /home/anders/src/kernel/testing/crypto/aegis128-neon-inner.c:7:
> > /home/anders/src/kernel/testing/arch/arm64/include/asm/neon-intrinsics.h:33:10:
> > fatal error: arm_neon.h: No such file or directory
> >    33 | #include <arm_neon.h>
> >       |          ^~~~~~~~~~~~
>
> > If I revert this patch I can build it.
>
> Please, see followup fixes or grab new -mm.
> https://lore.kernel.org/lkml/YO8ioz4sHwcUAkdt@localhost.localdomain/

I tried to apply that patch but I got the same build error.

Cheers,
Anders

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -mm] fixup "Decouple build from userspace headers"
  2021-07-15 21:15   ` [PATCH -mm] fixup "Decouple build from userspace headers" Alexey Dobriyan
@ 2021-07-18 12:36     ` Masahiro Yamada
  2021-07-18 13:05       ` Masahiro Yamada
  0 siblings, 1 reply; 16+ messages in thread
From: Masahiro Yamada @ 2021-07-18 12:36 UTC (permalink / raw)
  To: Alexey Dobriyan
  Cc: Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	Christoph Hellwig

On Fri, Jul 16, 2021 at 6:15 AM Alexey Dobriyan <adobriyan@gmail.com> wrote:
>
> Allow to find SIMD headers where necessary.
>
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
> ---
>
>         fold into decouple-build-from-userspace-headers.patch
>
>  arch/arm64/lib/Makefile   |    2 +-
>  arch/powerpc/lib/Makefile |    2 +-
>  lib/raid6/Makefile        |    4 ++--
>  3 files changed, 4 insertions(+), 4 deletions(-)


OK. Perhaps, we can import <arm_neon.h> and  <altivec.h>
into the kernel tree as we did for <stdarg.h>,
then remove "-isystem $(shell $(CC) -print-file-name=include)"
entirely, but I did not look into it.


If we can avoid the arm_neon.h mess,
we can clean up arch/arm/include/uapi/asm/types.h as well.
It is a possible future work.

Anyway, could you add some comments?
(see blew)



> --- a/arch/arm64/lib/Makefile
> +++ b/arch/arm64/lib/Makefile
> @@ -8,7 +8,7 @@ lib-y           := clear_user.o delay.o copy_from_user.o                \
>  ifeq ($(CONFIG_KERNEL_MODE_NEON), y)
>  obj-$(CONFIG_XOR_BLOCKS)       += xor-neon.o
>  CFLAGS_REMOVE_xor-neon.o       += -mgeneral-regs-only
> -CFLAGS_xor-neon.o              += -ffreestanding

Can you add comment, # for <arm_neon.h>

> +CFLAGS_xor-neon.o              += -ffreestanding -isystem $(shell $(CC) -print-file-name=include)
>  endif
>
>  lib-$(CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE) += uaccess_flushcache.o
> --- a/arch/powerpc/lib/Makefile
> +++ b/arch/powerpc/lib/Makefile
> @@ -64,6 +64,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o
>  obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o
>
>  obj-$(CONFIG_ALTIVEC)  += xor_vmx.o xor_vmx_glue.o
> -CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec)

Can you add comment, # for <altivec.h>

> +CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec) -isystem $(shell $(CC) -print-file-name=include)
>
>  obj-$(CONFIG_PPC64) += $(obj64-y)
> --- a/lib/raid6/Makefile
> +++ b/lib/raid6/Makefile
> @@ -13,7 +13,7 @@ raid6_pq-$(CONFIG_S390) += s390vx8.o recov_s390xc.o
>  hostprogs      += mktables
>
>  ifeq ($(CONFIG_ALTIVEC),y)
> -altivec_flags := -maltivec $(call cc-option,-mabi=altivec)

Can you add comment, # for <altivec.h>

> +altivec_flags := -maltivec $(call cc-option,-mabi=altivec) -isystem $(shell $(CC) -print-file-name=include)
>
>  ifdef CONFIG_CC_IS_CLANG
>  # clang ppc port does not yet support -maltivec when -msoft-float is
> @@ -33,7 +33,7 @@ endif
>  # The GCC option -ffreestanding is required in order to compile code containing
>  # ARM/NEON intrinsics in a non C99-compliant environment (such as the kernel)
>  ifeq ($(CONFIG_KERNEL_MODE_NEON),y)
> -NEON_FLAGS := -ffreestanding

Can you add comment, # for <arm_neon.h>

> +NEON_FLAGS := -ffreestanding -isystem $(shell $(CC) -print-file-name=include)
>  ifeq ($(ARCH),arm)
>  NEON_FLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
>  endif



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH -mm] fixup "Decouple build from userspace headers"
  2021-07-18 12:36     ` Masahiro Yamada
@ 2021-07-18 13:05       ` Masahiro Yamada
  0 siblings, 0 replies; 16+ messages in thread
From: Masahiro Yamada @ 2021-07-18 13:05 UTC (permalink / raw)
  To: Alexey Dobriyan
  Cc: Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	Christoph Hellwig

On Sun, Jul 18, 2021 at 9:36 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Fri, Jul 16, 2021 at 6:15 AM Alexey Dobriyan <adobriyan@gmail.com> wrote:
> >
> > Allow to find SIMD headers where necessary.
> >
> > Reported-by: kernel test robot <lkp@intel.com>
> > Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
> > ---
> >
> >         fold into decouple-build-from-userspace-headers.patch
> >
> >  arch/arm64/lib/Makefile   |    2 +-
> >  arch/powerpc/lib/Makefile |    2 +-
> >  lib/raid6/Makefile        |    4 ++--


I did not compile-test it yet, but
I see more <arm_neon.h> inclusion.



crypto/aegis128-neon-inner.c:



#ifdef CONFIG_ARM64
#include <asm/neon-intrinsics.h>

#define AES_ROUND       "aese %0.16b, %1.16b \n\t aesmc %0.16b, %0.16b"
#else
#include <arm_neon.h>

#define AES_ROUND       "aese.8 %q0, %q1 \n\t aesmc.8 %q0, %q0"
#endif




Can you test crypto/aegis128-neon-inner.c
with CONFIG_ARM64=n  (i.e. CONFIG_ARM=y) ?

















> >  3 files changed, 4 insertions(+), 4 deletions(-)
>
>
> OK. Perhaps, we can import <arm_neon.h> and  <altivec.h>
> into the kernel tree as we did for <stdarg.h>,
> then remove "-isystem $(shell $(CC) -print-file-name=include)"
> entirely, but I did not look into it.
>
>
> If we can avoid the arm_neon.h mess,
> we can clean up arch/arm/include/uapi/asm/types.h as well.
> It is a possible future work.
>
> Anyway, could you add some comments?
> (see blew)
>
>
>
> > --- a/arch/arm64/lib/Makefile
> > +++ b/arch/arm64/lib/Makefile
> > @@ -8,7 +8,7 @@ lib-y           := clear_user.o delay.o copy_from_user.o                \
> >  ifeq ($(CONFIG_KERNEL_MODE_NEON), y)
> >  obj-$(CONFIG_XOR_BLOCKS)       += xor-neon.o
> >  CFLAGS_REMOVE_xor-neon.o       += -mgeneral-regs-only
> > -CFLAGS_xor-neon.o              += -ffreestanding
>
> Can you add comment, # for <arm_neon.h>
>
> > +CFLAGS_xor-neon.o              += -ffreestanding -isystem $(shell $(CC) -print-file-name=include)
> >  endif
> >
> >  lib-$(CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE) += uaccess_flushcache.o
> > --- a/arch/powerpc/lib/Makefile
> > +++ b/arch/powerpc/lib/Makefile
> > @@ -64,6 +64,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o
> >  obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o
> >
> >  obj-$(CONFIG_ALTIVEC)  += xor_vmx.o xor_vmx_glue.o
> > -CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec)
>
> Can you add comment, # for <altivec.h>
>
> > +CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec) -isystem $(shell $(CC) -print-file-name=include)
> >
> >  obj-$(CONFIG_PPC64) += $(obj64-y)
> > --- a/lib/raid6/Makefile
> > +++ b/lib/raid6/Makefile
> > @@ -13,7 +13,7 @@ raid6_pq-$(CONFIG_S390) += s390vx8.o recov_s390xc.o
> >  hostprogs      += mktables
> >
> >  ifeq ($(CONFIG_ALTIVEC),y)
> > -altivec_flags := -maltivec $(call cc-option,-mabi=altivec)
>
> Can you add comment, # for <altivec.h>
>
> > +altivec_flags := -maltivec $(call cc-option,-mabi=altivec) -isystem $(shell $(CC) -print-file-name=include)
> >
> >  ifdef CONFIG_CC_IS_CLANG
> >  # clang ppc port does not yet support -maltivec when -msoft-float is
> > @@ -33,7 +33,7 @@ endif
> >  # The GCC option -ffreestanding is required in order to compile code containing
> >  # ARM/NEON intrinsics in a non C99-compliant environment (such as the kernel)
> >  ifeq ($(CONFIG_KERNEL_MODE_NEON),y)
> > -NEON_FLAGS := -ffreestanding
>
> Can you add comment, # for <arm_neon.h>
>
> > +NEON_FLAGS := -ffreestanding -isystem $(shell $(CC) -print-file-name=include)
> >  ifeq ($(ARCH),arm)
> >  NEON_FLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
> >  endif
>
>
>
> --
> Best Regards
> Masahiro Yamada



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2] Decouple build from userspace headers
  2021-07-16 10:10     ` Alexey Dobriyan
  2021-07-16 13:04       ` Anders Roxell
@ 2021-07-18 13:11       ` Masahiro Yamada
  2021-07-20 16:13         ` Anders Roxell
  1 sibling, 1 reply; 16+ messages in thread
From: Masahiro Yamada @ 2021-07-18 13:11 UTC (permalink / raw)
  To: Alexey Dobriyan
  Cc: Anders Roxell, Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	Christoph Hellwig, Linux-Next Mailing List, Stephen Rothwell

On Fri, Jul 16, 2021 at 7:10 PM Alexey Dobriyan <adobriyan@gmail.com> wrote:
>
> On Fri, Jul 16, 2021 at 11:03:41AM +0200, Anders Roxell wrote:
> > On Wed, 14 Jul 2021 at 19:45, Alexey Dobriyan <adobriyan@gmail.com> wrote:
> > >
>
> > In file included from
> > /home/anders/src/kernel/testing/crypto/aegis128-neon-inner.c:7:
> > /home/anders/src/kernel/testing/arch/arm64/include/asm/neon-intrinsics.h:33:10:
> > fatal error: arm_neon.h: No such file or directory
> >    33 | #include <arm_neon.h>
> >       |          ^~~~~~~~~~~~
>
> > If I revert this patch I can build it.
>
> Please, see followup fixes or grab new -mm.
> https://lore.kernel.org/lkml/YO8ioz4sHwcUAkdt@localhost.localdomain/


With the follow-up fix,
this patch is doing many things in a single patch.

Can you split it into a series of smaller patches?


1/4: changes for arch/um/include/shared/irq_user.h
     and arch/um/os-Linux/signal.c


2/4:  remove wrong <stdbool.h> or <stddef.h> inclusions
      (or maybe you need to replace them with <linux/types.h>
      to keep the affected headers self-contained)


3/4: add include/linux/stdarg.h,
     then <stdarg.h> with <linux/stdarg.h>


4/4: move -isystem $(shell $(CC) -print-file-name=include)
     to some sub-Makefiles from the top Makefile.





(please note 4/4 will introduce a breakage in linux-next
if somebody adds a new <stdarg.h> inclusion in this
development cycle.
I hope that will not happen, though)




--
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v2] Decouple build from userspace headers
  2021-07-18 13:11       ` Masahiro Yamada
@ 2021-07-20 16:13         ` Anders Roxell
  0 siblings, 0 replies; 16+ messages in thread
From: Anders Roxell @ 2021-07-20 16:13 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Alexey Dobriyan, Andrew Morton, Linux Kbuild mailing list,
	Linux Kernel Mailing List, linux-arch, Arnd Bergmann,
	Christoph Hellwig, Linux-Next Mailing List, Stephen Rothwell

On Sun, 18 Jul 2021 at 15:12, Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Fri, Jul 16, 2021 at 7:10 PM Alexey Dobriyan <adobriyan@gmail.com> wrote:
> >
> > On Fri, Jul 16, 2021 at 11:03:41AM +0200, Anders Roxell wrote:
> > > On Wed, 14 Jul 2021 at 19:45, Alexey Dobriyan <adobriyan@gmail.com> wrote:
> > > >
> >
> > > In file included from
> > > /home/anders/src/kernel/testing/crypto/aegis128-neon-inner.c:7:
> > > /home/anders/src/kernel/testing/arch/arm64/include/asm/neon-intrinsics.h:33:10:
> > > fatal error: arm_neon.h: No such file or directory
> > >    33 | #include <arm_neon.h>
> > >       |          ^~~~~~~~~~~~
> >
> > > If I revert this patch I can build it.
> >
> > Please, see followup fixes or grab new -mm.
> > https://lore.kernel.org/lkml/YO8ioz4sHwcUAkdt@localhost.localdomain/
>
>
> With the follow-up fix,
> this patch is doing many things in a single patch.
>
> Can you split it into a series of smaller patches?
>
>
> 1/4: changes for arch/um/include/shared/irq_user.h
>      and arch/um/os-Linux/signal.c
>
>
> 2/4:  remove wrong <stdbool.h> or <stddef.h> inclusions
>       (or maybe you need to replace them with <linux/types.h>
>       to keep the affected headers self-contained)
>
>
> 3/4: add include/linux/stdarg.h,
>      then <stdarg.h> with <linux/stdarg.h>
>
>
> 4/4: move -isystem $(shell $(CC) -print-file-name=include)
>      to some sub-Makefiles from the top Makefile.
>
>
>
>
>
> (please note 4/4 will introduce a breakage in linux-next
> if somebody adds a new <stdarg.h> inclusion in this
> development cycle.
> I hope that will not happen, though)
>

Would it be possible to drop this patch for now from next since it
breaks build daily?

Cheers,
Anders

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-07-20 16:18 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-13 19:47 [PATCH] Decouple build from userspace headers Alexey Dobriyan
2021-07-14  4:54 ` Masahiro Yamada
2021-07-14  8:42   ` Alexey Dobriyan
2021-07-14 14:22 ` Christoph Hellwig
2021-07-14 15:54   ` Alexey Dobriyan
2021-07-14 15:56     ` Christoph Hellwig
2021-07-14 17:16       ` Alexey Dobriyan
2021-07-14 17:45 ` [PATCH v2] " Alexey Dobriyan
2021-07-15 21:15   ` [PATCH -mm] fixup "Decouple build from userspace headers" Alexey Dobriyan
2021-07-18 12:36     ` Masahiro Yamada
2021-07-18 13:05       ` Masahiro Yamada
2021-07-16  9:03   ` [PATCH v2] Decouple build from userspace headers Anders Roxell
2021-07-16 10:10     ` Alexey Dobriyan
2021-07-16 13:04       ` Anders Roxell
2021-07-18 13:11       ` Masahiro Yamada
2021-07-20 16:13         ` Anders Roxell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.