linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2019-05-01 22:46 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2019-05-01 22:46 UTC (permalink / raw)
  To: Masahiro Yamada, Linus Torvalds
  Cc: Linux Next Mailing List, Linux Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 1285 bytes --]

Hi all,

Today's linux-next merge of the kbuild tree got a conflict in:

  Makefile

between commit:

  6f303d60534c ("gcc-9: silence 'address-of-packed-member' warning")

from Linus' tree and commit:

  c21e4135d629 ("kbuild: re-enable int-in-bool-context warning")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc Makefile
index 633d1196bf00,8b3b62f18c9a..000000000000
--- a/Makefile
+++ b/Makefile
@@@ -677,8 -691,6 +691,7 @@@ KBUILD_CFLAGS	+= $(call cc-option,-fno-
  KBUILD_CFLAGS	+= $(call cc-disable-warning,frame-address,)
  KBUILD_CFLAGS	+= $(call cc-disable-warning, format-truncation)
  KBUILD_CFLAGS	+= $(call cc-disable-warning, format-overflow)
- KBUILD_CFLAGS	+= $(call cc-disable-warning, int-in-bool-context)
 +KBUILD_CFLAGS	+= $(call cc-disable-warning, address-of-packed-member)
  
  ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
  KBUILD_CFLAGS	+= -Os

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2022-10-06 18:16 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2022-10-06 18:16 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Adam Bratschi-Kaye, Alex Gaynor, Boris-Chengbiao Zhou, Daniel Xu,
	Finn Behrens, Gary Guo, Julian Merkle, Linux Kernel Mailing List,
	Linux Next Mailing List, Michael Ellerman, Miguel Ojeda,
	Sven Van Asbroeck, Wedson Almeida Filho, Wei Liu, Wu XiangCheng,
	Yuki Okushi

[-- Attachment #1: Type: text/plain, Size: 1562 bytes --]

Hi all,

Today's linux-next merge of the kbuild tree got a conflict in:

  Documentation/process/changes.rst

between commit:

  d07479b211b7 ("docs: add Rust documentation")

from Linus' tree and commit:

  0715fdb03e2c ("docs: bump minimal GNU Make version to 3.82")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc Documentation/process/changes.rst
index 9a90197989dd,26a7fd875cfa..000000000000
--- a/Documentation/process/changes.rst
+++ b/Documentation/process/changes.rst
@@@ -31,9 -31,7 +31,9 @@@ you probably needn't concern yourself w
  ====================== ===============  ========================================
  GNU C                  5.1              gcc --version
  Clang/LLVM (optional)  11.0.0           clang --version
 +Rust (optional)        1.62.0           rustc --version
 +bindgen (optional)     0.56.0           bindgen --version
- GNU make               3.81             make --version
+ GNU make               3.82             make --version
  bash                   4.2              bash --version
  binutils               2.23             ld -v
  flex                   2.5.35           flex --version

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2022-05-27  0:08 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2022-05-27  0:08 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Josh Poimboeuf, Linux Kernel Mailing List,
	Linux Next Mailing List, Peter Zijlstra (Intel)

[-- Attachment #1: Type: text/plain, Size: 3285 bytes --]

Hi all,

Today's linux-next merge of the kbuild tree got a conflict in:

  scripts/Makefile.build

between commit:

  753da4179d08 ("objtool: Remove --lto and --vmlinux in favor of --link")

from Linus' tree and commits:

  3eec672cbc9b ("kbuild: do not create *.prelink.o for Clang LTO or IBT")
  7414d89fd7cd ("kbuild: make *.mod rule robust against too long argument error")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc scripts/Makefile.build
index 06400504150b,1754adba7010..000000000000
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@@ -226,23 -226,18 +230,19 @@@ objtool_args =								
  cmd_objtool = $(if $(objtool-enabled), ; $(objtool) $(objtool_args) $@)
  cmd_gen_objtooldep = $(if $(objtool-enabled), { echo ; echo '$@: $$(wildcard $(objtool))' ; } >> $(dot-target).cmd)
  
 -endif # CONFIG_STACK_VALIDATION
 +endif # CONFIG_OBJTOOL
  
- ifneq ($(CONFIG_LTO_CLANG)$(CONFIG_X86_KERNEL_IBT),)
- 
- # Skip objtool for LLVM bitcode
- $(obj)/%.o: objtool-enabled :=
- 
- else
  
  # 'OBJECT_FILES_NON_STANDARD := y': skip objtool checking for a directory
  # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file
  # 'OBJECT_FILES_NON_STANDARD_foo.o := 'n': override directory skip for a file
  
- $(obj)/%.o: objtool-enabled = $(if $(filter-out y%, \
- 	$(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n),y)
+ is-standard-object = $(if $(filter-out y%, $(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n),y)
  
- endif
+ delay-objtool := $(or $(CONFIG_LTO_CLANG),$(CONFIG_X86_KERNEL_IBT))
+ 
+ $(obj)/%.o: objtool-enabled = $(if $(is-standard-object),$(if $(delay-objtool),$(is-single-obj-m),y))
++$(obj)/%.o: linked-object := y
  
  ifdef CONFIG_TRIM_UNUSED_KSYMS
  cmd_gen_ksymdeps = \
@@@ -421,18 -408,18 +413,19 @@@ $(obj)/modules.order: $(obj-m) FORC
  $(obj)/lib.a: $(lib-y) FORCE
  	$(call if_changed,ar)
  
- ifneq ($(CONFIG_LTO_CLANG)$(CONFIG_X86_KERNEL_IBT),)
- quiet_cmd_link_multi-m = AR [M]  $@
- cmd_link_multi-m =						\
- 	rm -f $@; 						\
- 	$(AR) cDPrsT $@ @$(patsubst %.o,%.mod,$@)
- else
- quiet_cmd_link_multi-m = LD [M]  $@
-       cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ @$(patsubst %.o,%.mod,$@)
- endif
+ quiet_cmd_ld_multi_m = LD [M]  $@
+       cmd_ld_multi_m = $(LD) $(ld_flags) -r -o $@ @$(patsubst %.o,%.mod,$@) $(cmd_objtool)
+ 
+ define rule_ld_multi_m
+ 	$(call cmd_and_savecmd,ld_multi_m)
+ 	$(call cmd,gen_objtooldep)
+ endef
  
+ $(multi-obj-m): objtool-enabled := $(delay-objtool)
+ $(multi-obj-m): part-of-module := y
++$(multi-obj-m): linked-object := y
  $(multi-obj-m): %.o: %.mod FORCE
- 	$(call if_changed,link_multi-m)
+ 	$(call if_changed_rule,ld_multi_m)
  $(call multi_depend, $(multi-obj-m), .o, -objs -y -m)
  
  targets := $(filter-out $(PHONY), $(targets))

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2022-04-03 22:09 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2022-04-03 22:09 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: Linux Kernel Mailing List, Linux Next Mailing List

[-- Attachment #1: Type: text/plain, Size: 1674 bytes --]

Hi all,

Today's linux-next merge of the kbuild tree got a conflict in:

  scripts/kconfig/confdata.c

between commit:

  b6ad541697ea ("kconfig: remove stale comment about removed kconfig_print_symbol()")

from Linus' tree and commit:

  55de8686df7e ("kconfig: change .config format to use =n instead of "is not set"")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

I think that maybe the kbuild tree needs to be fixed up to match what
has actually been merged by Linus.
-- 
Cheers,
Stephen Rothwell

diff --cc scripts/kconfig/confdata.c
index c4340c90e172,0c711a1bdc96..000000000000
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@@ -658,9 -658,14 +658,7 @@@ static char *escape_string_value(const 
  	return out;
  }
  
- enum output_n { OUTPUT_N, OUTPUT_N_AS_UNSET, OUTPUT_N_NONE };
- 
- static void __print_symbol(FILE *fp, struct symbol *sym, enum output_n output_n,
 -/*
 - * Kconfig configuration printer
 - *
 - * This printer is used when generating the resulting configuration after
 - * kconfig invocation and `defconfig' files. Unset symbol might be omitted by
 - * passing a non-NULL argument to the printer.
 - */
+ static void __print_symbol(FILE *fp, struct symbol *sym, bool output_n,
  			   bool escape_string)
  {
  	const char *val;

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2021-04-26 23:02 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2021-04-26 23:02 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Linus Torvalds, Linux Kernel Mailing List, Linux Next Mailing List

[-- Attachment #1: Type: text/plain, Size: 1021 bytes --]

Hi all,

Today's linux-next merge of the kbuild tree got a conflict in:

  certs/.gitignore

between commit:

  81f202315856 ("certs: add 'x509_revocation_list' to gitignore")

from Linus' tree and commit:

  8573271e6946 (".gitignore: prefix local generated files with a slash")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc certs/.gitignore
index 6cbd1f1a5837,5759643f638b..000000000000
--- a/certs/.gitignore
+++ b/certs/.gitignore
@@@ -1,3 -1,2 +1,3 @@@
  # SPDX-License-Identifier: GPL-2.0-only
- x509_certificate_list
- x509_revocation_list
+ /x509_certificate_list
++/x509_revocation_list

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2021-02-22 22:24 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2021-02-22 22:24 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Alexander Lobakin, Linux Kernel Mailing List,
	Linux Next Mailing List, Thomas Bogendoerfer

[-- Attachment #1: Type: text/plain, Size: 2598 bytes --]

Hi all,

Today's linux-next merge of the kbuild tree got a conflict in:

  arch/mips/kernel/syscalls/Makefile

between commit:

  ccb21774863a ("MIPS: UAPI: unexport unistd_nr_{n32,n64,o32}.h")

from Linus' tree and commit:

  865fa29f7dd1 ("arch: syscalls: add missing FORCE and fix 'targets' to make if_changed work")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc arch/mips/kernel/syscalls/Makefile
index a1ce8b7dbcfa,ed22b711ccb7..000000000000
--- a/arch/mips/kernel/syscalls/Makefile
+++ b/arch/mips/kernel/syscalls/Makefile
@@@ -44,17 -44,17 +44,17 @@@ $(uapi)/unistd_o32.h: $(syscallo32) $(s
  
  sysnr_pfx_unistd_nr_n32 := N32
  sysnr_offset_unistd_nr_n32 := 6000
- $(kapi)/unistd_nr_n32.h: $(syscalln32) $(sysnr)
 -$(uapi)/unistd_nr_n32.h: $(syscalln32) $(sysnr) FORCE
++$(kapi)/unistd_nr_n32.h: $(syscalln32) $(sysnr) FORCE
  	$(call if_changed,sysnr)
  
  sysnr_pfx_unistd_nr_n64 := 64
  sysnr_offset_unistd_nr_n64 := 5000
- $(kapi)/unistd_nr_n64.h: $(syscalln64) $(sysnr)
 -$(uapi)/unistd_nr_n64.h: $(syscalln64) $(sysnr) FORCE
++$(kapi)/unistd_nr_n64.h: $(syscalln64) $(sysnr) FORCE
  	$(call if_changed,sysnr)
  
  sysnr_pfx_unistd_nr_o32 := O32
  sysnr_offset_unistd_nr_o32 := 4000
- $(kapi)/unistd_nr_o32.h: $(syscallo32) $(sysnr)
 -$(uapi)/unistd_nr_o32.h: $(syscallo32) $(sysnr) FORCE
++$(kapi)/unistd_nr_o32.h: $(syscallo32) $(sysnr) FORCE
  	$(call if_changed,sysnr)
  
  systbl_abi_syscall_table_32_o32 := 32_o32
@@@ -83,14 -86,12 +83,15 @@@ uapisyshdr-y		+= unistd_n32.h			
  kapisyshdr-y		+= syscall_table_32_o32.h	\
  			   syscall_table_64_n32.h	\
  			   syscall_table_64_n64.h	\
 -			   syscall_table_64_o32.h
 +			   syscall_table_64_o32.h	\
 +			   unistd_nr_n32.h		\
 +			   unistd_nr_n64.h		\
 +			   unistd_nr_o32.h
  
- targets	+= $(uapisyshdr-y) $(kapisyshdr-y)
+ uapisyshdr-y	:= $(addprefix $(uapi)/, $(uapisyshdr-y))
+ kapisyshdr-y	:= $(addprefix $(kapi)/, $(kapisyshdr-y))
+ targets		+= $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
  
  PHONY += all
- all: $(addprefix $(uapi)/,$(uapisyshdr-y))
- all: $(addprefix $(kapi)/,$(kapisyshdr-y))
+ all: $(uapisyshdr-y) $(kapisyshdr-y)
  	@:

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2020-06-04 22:59 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2020-06-04 22:59 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Linux Next Mailing List, Linux Kernel Mailing List,
	Thomas Bogendoerfer, Denis Efremov

[-- Attachment #1: Type: text/plain, Size: 731 bytes --]

Hi all,

Today's linux-next merge of the kbuild tree got a conflict in:

  arch/mips/lasat/image/Makefile

between commit:

  10760dde9be3 ("MIPS: Remove support for LASAT")

from Linus' tree and commit:

  1312a1e434c1 ("kbuild: add variables for compression tools")

from the kbuild tree.

I fixed it up (I just removed the file) and can carry the fix as
necessary. This is now fixed as far as linux-next is concerned, but any
non trivial conflicts should be mentioned to your upstream maintainer
when your tree is submitted for merging.  You may also want to consider
cooperating with the maintainer of the conflicting tree to minimise any
particularly complex conflicts.

-- 
Cheers,
Stephen Rothwell

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2017-05-02 22:14 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2017-05-02 22:14 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Linux-Next Mailing List, Linux Kernel Mailing List,
	Hans-Christian Noren Egtvedt, Håvard Skinnemoen,
	Nicolas Ferre, Nicolas Dichtel

Hi Masahiro,

Today's linux-next merge of the kbuild tree got a conflict in:

  arch/avr32/include/uapi/asm/Kbuild

between commit:

  26202873bb51 ("avr32: remove support for AVR32 architecture")

from Linus' tree and commit:

  65017bab8a9e ("uapi: export all headers under uapi directories")

from the kbuild tree.

I fixed it up (I removed the file) and can carry the fix as necessary.
This is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2016-09-13  7:48         ` Arnd Bergmann
@ 2016-09-13  9:12           ` Nicholas Piggin
  0 siblings, 0 replies; 23+ messages in thread
From: Nicholas Piggin @ 2016-09-13  9:12 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linuxppc-dev, Stephen Rothwell, Michal Marek, linux-arch,
	Kees Cook, linux-kernel, linux-next, Al Viro

On Tue, 13 Sep 2016 09:48:03 +0200
Arnd Bergmann <arnd@arndb.de> wrote:

> On Tuesday, September 13, 2016 2:02:57 PM CEST Stephen Rothwell wrote:
> > [For the new cc's, we are discussing the "thin archives" and "link dead
> > code/data elimination" patches in the kbuild tree.]
> > 
> > On Tue, 13 Sep 2016 09:39:45 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:  
> > >
> > > On Mon, 12 Sep 2016 11:03:08 +0200 Michal Marek <mmarek@suse.cz> wrote:  
> > > >
> > > > On 2016-09-12 04:53, Nicholas Piggin wrote:    
> > > > > Question, what is the best way to merge dependent patches? Considering
> > > > > they will need a good amount of architecture testing, I think they will
> > > > > have to go via arch trees. But it also does not make sense to merge these
> > > > > kbuild changes upstream first, without having tested them.      
> > > > 
> > > > I think it makes sense to merge the kbuild changes via kbuild.git, even
> > > > if they are unused and untested. Any follow-up fixes required to enable
> > > > the first architecture can go through the respective architecture tree.
> > > > Does that sound OK?    
> > > 
> > > And if you guarantee not to rebase the kbuild tree (or at least the
> > > subset containing these patches), then each of the architecture trees
> > > can just merge your tree (or a tag?) and then implement any necessary
> > > arch dependent changes.  I fixes are necessary, they can also be merged
> > > into the architecture trees.  
> > 
> > Except, of course, the kbuild tree still has the asm EXPORT_SYMBOL
> > patches that produce warnings on PowerPC  (And I am still reverting
> > the PowerPC specific one of those patches).  
> 
> Is that really powerpc specific? I have the same problem on ARM
> and I don't see how any architecture would not have it.
> 
> I prototyped the patch below, which fixes it for me, but I have
> not dared submit that workaround because it's butt ugly.

No it's not powerpc specific, it's just that powerpc build dies
if there are unresolved relocations.

Interesting approach. I have something different that may rival
yours for ugliness, but maybe keeps the muck a bit more contained.
I was just about to submit it, but now I'll wait to see if there is
a preference between the approaches:

(Note this patch alone does not resolve all export symbols, each
arch next needs to add C prototypes for their .S exports)

 scripts/Makefile.build | 71 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 65 insertions(+), 6 deletions(-)

diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 11602e5..1e89908 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -158,7 +158,8 @@ cmd_cpp_i_c       = $(CPP) $(c_flags) -o $@ $<
 $(obj)/%.i: $(src)/%.c FORCE
 	$(call if_changed_dep,cpp_i_c)
 
-cmd_gensymtypes =                                                           \
+# These mirror gensymtypes_S and co below, keep them in synch.
+cmd_gensymtypes_c =                                                         \
     $(CPP) -D__GENKSYMS__ $(c_flags) $< |                                   \
     $(GENKSYMS) $(if $(1), -T $(2))                                         \
      $(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX))             \
@@ -168,7 +169,7 @@ cmd_gensymtypes =                                                           \
 quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
 cmd_cc_symtypes_c =                                                         \
     set -e;                                                                 \
-    $(call cmd_gensymtypes,true,$@) >/dev/null;                             \
+    $(call cmd_gensymtypes_c,true,$@) >/dev/null;                           \
     test -s $@ || rm -f $@
 
 $(obj)/%.symtypes : $(src)/%.c FORCE
@@ -197,9 +198,10 @@ else
 #   the actual value of the checksum generated by genksyms
 
 cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
-cmd_modversions =								\
+
+cmd_modversions_c =								\
 	if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then		\
-		$(call cmd_gensymtypes,$(KBUILD_SYMTYPES),$(@:.o=.symtypes))	\
+		$(call cmd_gensymtypes_c,$(KBUILD_SYMTYPES),$(@:.o=.symtypes))	\
 		    > $(@D)/.tmp_$(@F:.o=.ver);					\
 										\
 		$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) 			\
@@ -267,13 +269,14 @@ endif # CONFIG_STACK_VALIDATION
 define rule_cc_o_c
 	$(call echo-cmd,checksrc) $(cmd_checksrc)			  \
 	$(call cmd_and_fixdep,cc_o_c)					  \
-	$(cmd_modversions)						  \
+	$(cmd_modversions_c)						  \
 	$(cmd_objtool)						          \
 	$(call echo-cmd,record_mcount) $(cmd_record_mcount)
 endef
 
 define rule_as_o_S
 	$(call cmd_and_fixdep,as_o_S)					  \
+	$(cmd_modversions_S)						  \
 	$(cmd_objtool)
 endef
 
@@ -313,6 +316,32 @@ modkern_aflags := $(KBUILD_AFLAGS_KERNEL) $(AFLAGS_KERNEL)
 $(real-objs-m)      : modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
 $(real-objs-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
 
+# .S file exports must have their C prototypes defined in asm/asm-prototypes.h
+# or a file that it includes, in order to get versioned symbols. We build a
+# dummy C file that includes asm-prototypes and the EXPORT_SYMBOL lines from
+# the .S file (with trailing ';'), and run genksyms on that, to extract vers.
+#
+# These mirror gensymtypes_c and co above, keep them in synch.
+cmd_gensymtypes_S =                                                         \
+    (echo "\#include <linux/kernel.h>" ;                                    \
+     echo "\#include <asm/asm-prototypes.h>" ;                              \
+     grep EXPORT_SYMBOL $< | sed 's/$$/;/' ) |                              \
+    $(CPP) -D__GENKSYMS__ $(c_flags) -xc - |                                \
+    $(GENKSYMS) $(if $(1), -T $(2))                                         \
+     $(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX))             \
+     $(if $(KBUILD_PRESERVE),-p)                                            \
+     -r $(firstword $(wildcard $(2:.symtypes=.symref) /dev/null))
+
+quiet_cmd_cc_symtypes_S = SYM $(quiet_modtag) $@
+cmd_cc_symtypes_S =                                                         \
+    set -e;                                                                 \
+    $(call cmd_gensymtypes_S,true,$@) >/dev/null;                           \
+    test -s $@ || rm -f $@
+
+$(obj)/%.symtypes : $(src)/%.S FORCE
+	$(call cmd,cc_symtypes_S)
+
+
 quiet_cmd_cpp_s_S = CPP $(quiet_modtag) $@
 cmd_cpp_s_S       = $(CPP) $(a_flags) -o $@ $<
 
@@ -320,7 +349,37 @@ $(obj)/%.s: $(src)/%.S FORCE
 	$(call if_changed_dep,cpp_s_S)
 
 quiet_cmd_as_o_S = AS $(quiet_modtag)  $@
-cmd_as_o_S       = $(CC) $(a_flags) -c -o $@ $<
+
+ifndef CONFIG_MODVERSIONS
+cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
+
+else
+
+ASM_PROTOTYPES := $(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/asm-prototypes.h)
+
+ifeq ($(ASM_PROTOTYPES),)
+cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
+
+else
+
+# versioning matches the C process described above, with difference that
+# we parse asm-prototypes.h C header to get function definitions.
+
+cmd_as_o_S = $(CC) $(a_flags) -c -o $(@D)/.tmp_$(@F) $<
+
+cmd_modversions_S =								\
+	if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then		\
+		$(call cmd_gensymtypes_S,$(KBUILD_SYMTYPES),$(@:.o=.symtypes))	\
+		    > $(@D)/.tmp_$(@F:.o=.ver);					\
+										\
+		$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) 			\
+			-T $(@D)/.tmp_$(@F:.o=.ver);				\
+		rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver);		\
+	else									\
+		mv -f $(@D)/.tmp_$(@F) $@;					\
+	fi;
+endif
+endif
 
 $(obj)/%.o: $(src)/%.S $(objtool_obj) FORCE
 	$(call if_changed_rule,as_o_S)
-- 
2.9.3

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2016-09-13  4:02       ` Stephen Rothwell
  2016-09-13  4:09         ` Nicholas Piggin
@ 2016-09-13  7:48         ` Arnd Bergmann
  2016-09-13  9:12           ` Nicholas Piggin
  1 sibling, 1 reply; 23+ messages in thread
From: Arnd Bergmann @ 2016-09-13  7:48 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Stephen Rothwell, Michal Marek, linux-arch, Kees Cook,
	linux-kernel, Nicholas Piggin, linux-next, Al Viro

On Tuesday, September 13, 2016 2:02:57 PM CEST Stephen Rothwell wrote:
> [For the new cc's, we are discussing the "thin archives" and "link dead
> code/data elimination" patches in the kbuild tree.]
> 
> On Tue, 13 Sep 2016 09:39:45 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> >
> > On Mon, 12 Sep 2016 11:03:08 +0200 Michal Marek <mmarek@suse.cz> wrote:
> > >
> > > On 2016-09-12 04:53, Nicholas Piggin wrote:  
> > > > Question, what is the best way to merge dependent patches? Considering
> > > > they will need a good amount of architecture testing, I think they will
> > > > have to go via arch trees. But it also does not make sense to merge these
> > > > kbuild changes upstream first, without having tested them.    
> > > 
> > > I think it makes sense to merge the kbuild changes via kbuild.git, even
> > > if they are unused and untested. Any follow-up fixes required to enable
> > > the first architecture can go through the respective architecture tree.
> > > Does that sound OK?  
> > 
> > And if you guarantee not to rebase the kbuild tree (or at least the
> > subset containing these patches), then each of the architecture trees
> > can just merge your tree (or a tag?) and then implement any necessary
> > arch dependent changes.  I fixes are necessary, they can also be merged
> > into the architecture trees.
> 
> Except, of course, the kbuild tree still has the asm EXPORT_SYMBOL
> patches that produce warnings on PowerPC  (And I am still reverting
> the PowerPC specific one of those patches).

Is that really powerpc specific? I have the same problem on ARM
and I don't see how any architecture would not have it.

I prototyped the patch below, which fixes it for me, but I have
not dared submit that workaround because it's butt ugly.

	Arnd

 arch/arm/include/asm/io.h             |  7 ++++---
 arch/arm/kernel/entry-ftrace.S        | 12 +++++++++---
 arch/arm/kernel/head.S                | 12 ++++++++++--
 arch/arm/kernel/smccc-call.S          |  6 +++++-
 arch/arm/lib/ashldi3.S                |  7 ++++++-
 arch/arm/lib/ashrdi3.S                |  6 +++++-
 arch/arm/lib/bitops.h                 | 19 +++++++++++++++----
 arch/arm/lib/bswapsdi2.S              |  5 +++++
 arch/arm/lib/changebit.S              |  6 ++----
 arch/arm/lib/clear_user.S             | 10 +++++++---
 arch/arm/lib/clearbit.S               |  6 ++----
 arch/arm/lib/copy_from_user.S         |  7 +++++--
 arch/arm/lib/copy_page.S              |  5 +++++
 arch/arm/lib/copy_to_user.S           | 11 +++++++----
 arch/arm/lib/csumipv6.S               |  5 +++++
 arch/arm/lib/csumpartial.S            |  4 ++++
 arch/arm/lib/csumpartialcopy.S        |  7 ++++++-
 arch/arm/lib/csumpartialcopygeneric.S |  1 -
 arch/arm/lib/csumpartialcopyuser.S    |  7 ++++++-
 arch/arm/lib/div64.S                  |  7 ++++++-
 arch/arm/lib/findbit.S                | 23 ++++++++++++++---------
 arch/arm/lib/getuser.S                | 23 +++++++++++++++--------
 arch/arm/lib/io-readsb.S              |  4 ++++
 arch/arm/lib/io-readsl.S              |  4 ++++
 arch/arm/lib/io-readsw-armv3.S        |  4 ++++
 arch/arm/lib/io-readsw-armv4.S        |  5 +++++
 arch/arm/lib/io-writesb.S             |  5 +++++
 arch/arm/lib/io-writesl.S             |  5 +++++
 arch/arm/lib/io-writesw-armv3.S       |  5 +++++
 arch/arm/lib/io-writesw-armv4.S       |  4 ++++
 arch/arm/lib/lib1funcs.S              | 33 ++++++++++++++++++++++-----------
 arch/arm/lib/lshrdi3.S                |  7 ++++++-
 arch/arm/lib/memchr.S                 |  4 ++++
 arch/arm/lib/memcpy.S                 |  5 +++++
 arch/arm/lib/memmove.S                |  7 ++++++-
 arch/arm/lib/memset.S                 |  7 +++++++
 arch/arm/lib/memzero.S                |  6 ++++++
 arch/arm/lib/muldi3.S                 |  7 ++++++-
 arch/arm/lib/putuser.S                | 13 +++++++++----
 arch/arm/lib/setbit.S                 |  6 ++----
 arch/arm/lib/strchr.S                 |  4 ++++
 arch/arm/lib/strrchr.S                |  4 ++++
 arch/arm/lib/testchangebit.S          |  6 ++----
 arch/arm/lib/testclearbit.S           |  6 ++----
 arch/arm/lib/testsetbit.S             |  6 ++----
 arch/arm/lib/ucmpdi2.S                | 12 +++++++++---
 arch/arm/mach-imx/ssi-fiq.S           |  6 +++++-
 scripts/Makefile.build                | 15 ++++++++-------
 48 files changed, 288 insertions(+), 98 deletions(-)

diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 51458d8273ad..95ca0beda6a9 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -317,10 +317,13 @@ extern void _memset_io(volatile void __iomem *, int, size_t);
 #define writesl(p,d,l)		__raw_writesl(p,d,l)
 
 #ifndef __ARMBE__
+
+extern void mmioset(void *, unsigned int, size_t);
+extern void mmiocpy(void *, const void *, size_t);
+
 static inline void memset_io(volatile void __iomem *dst, unsigned c,
 	size_t count)
 {
-	extern void mmioset(void *, unsigned int, size_t);
 	mmioset((void __force *)dst, c, count);
 }
 #define memset_io(dst,c,count) memset_io(dst,c,count)
@@ -328,7 +331,6 @@ static inline void memset_io(volatile void __iomem *dst, unsigned c,
 static inline void memcpy_fromio(void *to, const volatile void __iomem *from,
 	size_t count)
 {
-	extern void mmiocpy(void *, const void *, size_t);
 	mmiocpy(to, (const void __force *)from, count);
 }
 #define memcpy_fromio(to,from,count) memcpy_fromio(to,from,count)
@@ -336,7 +338,6 @@ static inline void memcpy_fromio(void *to, const volatile void __iomem *from,
 static inline void memcpy_toio(volatile void __iomem *to, const void *from,
 	size_t count)
 {
-	extern void mmiocpy(void *, const void *, size_t);
 	mmiocpy((void __force *)to, from, count);
 }
 #define memcpy_toio(to,from,count) memcpy_toio(to,from,count)
diff --git a/arch/arm/kernel/entry-ftrace.S b/arch/arm/kernel/entry-ftrace.S
index b629d3f11c3d..b92def6a655a 100644
--- a/arch/arm/kernel/entry-ftrace.S
+++ b/arch/arm/kernel/entry-ftrace.S
@@ -3,7 +3,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-
+#ifdef __GENKSYMS__
+#include <asm/ftrace.h>
+#else
 #include <asm/assembler.h>
 #include <asm/ftrace.h>
 #include <asm/unwind.h>
@@ -154,7 +156,6 @@ ENTRY(mcount)
 	__mcount _old
 #endif
 ENDPROC(mcount)
-EXPORT_SYMBOL(mcount)
 
 #ifdef CONFIG_DYNAMIC_FTRACE
 ENTRY(ftrace_caller_old)
@@ -207,7 +208,6 @@ UNWIND(.fnstart)
 #endif
 UNWIND(.fnend)
 ENDPROC(__gnu_mcount_nc)
-EXPORT_SYMBOL(__gnu_mcount_nc)
 
 #ifdef CONFIG_DYNAMIC_FTRACE
 ENTRY(ftrace_caller)
@@ -244,3 +244,9 @@ ENTRY(ftrace_stub)
 .Lftrace_stub:
 	ret	lr
 ENDPROC(ftrace_stub)
+#endif
+
+#ifdef CONFIG_OLD_MCOUNT
+EXPORT_SYMBOL(mcount)
+#endif
+EXPORT_SYMBOL(__gnu_mcount_nc)
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index f41cee4c5746..75d3661eef33 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -11,6 +11,9 @@
  *
  *  Kernel startup code for all 32-bit CPUs
  */
+#ifdef __GENKSYMS__
+#include <asm/memory.h>
+#else
 #include <linux/linkage.h>
 #include <linux/init.h>
 
@@ -728,8 +731,13 @@ __pv_phys_pfn_offset:
 __pv_offset:
 	.quad	0
 	.size	__pv_offset, . -__pv_offset
-EXPORT_SYMBOL(__pv_phys_pfn_offset)
-EXPORT_SYMBOL(__pv_offset)
 #endif
 
 #include "head-common.S"
+
+#endif
+
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
+EXPORT_SYMBOL(__pv_phys_pfn_offset);
+EXPORT_SYMBOL(__pv_offset);
+#endif
diff --git a/arch/arm/kernel/smccc-call.S b/arch/arm/kernel/smccc-call.S
index 37669e7e13af..5aec876d8d2c 100644
--- a/arch/arm/kernel/smccc-call.S
+++ b/arch/arm/kernel/smccc-call.S
@@ -11,6 +11,9 @@
  * GNU General Public License for more details.
  *
  */
+#ifdef __GENKSYMS__
+#include <linux/arm-smccc.h>
+#else
 #include <linux/linkage.h>
 
 #include <asm/opcodes-sec.h>
@@ -52,7 +55,6 @@ UNWIND(	.fnend)
 ENTRY(arm_smccc_smc)
 	SMCCC SMCCC_SMC
 ENDPROC(arm_smccc_smc)
-EXPORT_SYMBOL(arm_smccc_smc)
 
 /*
  * void smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
@@ -62,4 +64,6 @@ EXPORT_SYMBOL(arm_smccc_smc)
 ENTRY(arm_smccc_hvc)
 	SMCCC SMCCC_HVC
 ENDPROC(arm_smccc_hvc)
+#endif
+EXPORT_SYMBOL(arm_smccc_smc)
 EXPORT_SYMBOL(arm_smccc_hvc)
diff --git a/arch/arm/lib/ashldi3.S b/arch/arm/lib/ashldi3.S
index a7e7de89bd75..c8d403d55ad3 100644
--- a/arch/arm/lib/ashldi3.S
+++ b/arch/arm/lib/ashldi3.S
@@ -25,7 +25,10 @@ along with this program; see the file COPYING.  If not, write to
 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
 
-
+#ifdef __GENKSYMS__
+extern void __ashldi3(void);
+extern void __aeabi_llsl(void);
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -53,5 +56,7 @@ ENTRY(__aeabi_llsl)
 
 ENDPROC(__ashldi3)
 ENDPROC(__aeabi_llsl)
+#endif
+
 EXPORT_SYMBOL(__ashldi3)
 EXPORT_SYMBOL(__aeabi_llsl)
diff --git a/arch/arm/lib/ashrdi3.S b/arch/arm/lib/ashrdi3.S
index 490336e42518..99d4c06295ea 100644
--- a/arch/arm/lib/ashrdi3.S
+++ b/arch/arm/lib/ashrdi3.S
@@ -25,7 +25,10 @@ along with this program; see the file COPYING.  If not, write to
 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
 
-
+#ifdef __GENKSYMS__
+extern void __ashrdi3(void);
+extern void __aeabi_lasr(void);
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -53,5 +56,6 @@ ENTRY(__aeabi_lasr)
 
 ENDPROC(__ashrdi3)
 ENDPROC(__aeabi_lasr)
+#endif
 EXPORT_SYMBOL(__ashrdi3)
 EXPORT_SYMBOL(__aeabi_lasr)
diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h
index df06638b327c..ef60b7504525 100644
--- a/arch/arm/lib/bitops.h
+++ b/arch/arm/lib/bitops.h
@@ -1,9 +1,22 @@
+#ifdef __GENKSYMS__
+#include <linux/bitops.h>
+#define BITOP(name, instr)
+#define TESTOP(name, instr, store)
+#else
+#include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
 #include <asm/export.h>
 
+#define BITOP(name, instr)		\
+	bitop name, instr
+
+#define TESTOP(name, instr, store)	\
+	testop name, instr, store
+
 #if __LINUX_ARM_ARCH__ >= 6
 	.macro	bitop, name, instr
+	.text
 ENTRY(	\name		)
 UNWIND(	.fnstart	)
 	ands	ip, r1, #3
@@ -26,10 +39,10 @@ UNWIND(	.fnstart	)
 	bx	lr
 UNWIND(	.fnend		)
 ENDPROC(\name		)
-EXPORT_SYMBOL(\name	)
 	.endm
 
 	.macro	testop, name, instr, store
+	.text
 ENTRY(	\name		)
 UNWIND(	.fnstart	)
 	ands	ip, r1, #3
@@ -57,7 +70,6 @@ UNWIND(	.fnstart	)
 2:	bx	lr
 UNWIND(	.fnend		)
 ENDPROC(\name		)
-EXPORT_SYMBOL(\name	)
 	.endm
 #else
 	.macro	bitop, name, instr
@@ -77,7 +89,6 @@ UNWIND(	.fnstart	)
 	ret	lr
 UNWIND(	.fnend		)
 ENDPROC(\name		)
-EXPORT_SYMBOL(\name	)
 	.endm
 
 /**
@@ -106,6 +117,6 @@ UNWIND(	.fnstart	)
 	ret	lr
 UNWIND(	.fnend		)
 ENDPROC(\name		)
-EXPORT_SYMBOL(\name	)
 	.endm
 #endif
+#endif
diff --git a/arch/arm/lib/bswapsdi2.S b/arch/arm/lib/bswapsdi2.S
index f05f78247304..202dac6e74f9 100644
--- a/arch/arm/lib/bswapsdi2.S
+++ b/arch/arm/lib/bswapsdi2.S
@@ -1,3 +1,7 @@
+#ifdef __GENKSYMS__
+extern void __bswapsi2(void);
+extern void __bswapdi2(void);
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -36,5 +40,6 @@ ENTRY(__bswapdi2)
 	ret lr
 ENDPROC(__bswapdi2)
 #endif
+#endif
 EXPORT_SYMBOL(__bswapsi2)
 EXPORT_SYMBOL(__bswapdi2)
diff --git a/arch/arm/lib/changebit.S b/arch/arm/lib/changebit.S
index f4027862172f..f57c91530bd7 100644
--- a/arch/arm/lib/changebit.S
+++ b/arch/arm/lib/changebit.S
@@ -7,9 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <linux/linkage.h>
-#include <asm/assembler.h>
 #include "bitops.h"
-                .text
 
-bitop	_change_bit, eor
+BITOP(_change_bit, eor)
+EXPORT_SYMBOL(_change_bit)
diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S
index b566154f5cf4..b7686501b226 100644
--- a/arch/arm/lib/clear_user.S
+++ b/arch/arm/lib/clear_user.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/uaccess.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
@@ -51,12 +54,13 @@ USER(		strnebt	r2, [r0])
 UNWIND(.fnend)
 ENDPROC(arm_clear_user)
 ENDPROC(__clear_user_std)
-#ifndef CONFIG_UACCESS_WITH_MEMCPY
-EXPORT_SYMBOL(arm_clear_user)
-#endif
 
 		.pushsection .text.fixup,"ax"
 		.align	0
 9001:		ldmfd	sp!, {r0, pc}
 		.popsection
+#endif
 
+#ifndef CONFIG_UACCESS_WITH_MEMCPY
+EXPORT_SYMBOL(arm_clear_user)
+#endif
diff --git a/arch/arm/lib/clearbit.S b/arch/arm/lib/clearbit.S
index f6b75fb64d30..54a03957d3f9 100644
--- a/arch/arm/lib/clearbit.S
+++ b/arch/arm/lib/clearbit.S
@@ -7,9 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <linux/linkage.h>
-#include <asm/assembler.h>
 #include "bitops.h"
-                .text
 
-bitop	_clear_bit, bic
+BITOP(_clear_bit, bic)
+EXPORT_SYMBOL(_clear_bit)
diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S
index f549c57ea435..eef10215c1c5 100644
--- a/arch/arm/lib/copy_from_user.S
+++ b/arch/arm/lib/copy_from_user.S
@@ -9,7 +9,9 @@
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
  */
-
+#ifdef __GENKSYMS__
+#include <asm/uaccess.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
@@ -95,7 +97,6 @@ ENTRY(arm_copy_from_user)
 #include "copy_template.S"
 
 ENDPROC(arm_copy_from_user)
-EXPORT_SYMBOL(arm_copy_from_user)
 
 	.pushsection .fixup,"ax"
 	.align 0
@@ -108,4 +109,6 @@ EXPORT_SYMBOL(arm_copy_from_user)
 	ldr	r0, [sp], #4
 	copy_abort_end
 	.popsection
+#endif
 
+EXPORT_SYMBOL(arm_copy_from_user)
diff --git a/arch/arm/lib/copy_page.S b/arch/arm/lib/copy_page.S
index d97851d4af7a..33ea22bed977 100644
--- a/arch/arm/lib/copy_page.S
+++ b/arch/arm/lib/copy_page.S
@@ -9,6 +9,9 @@
  *
  *  ASM optimised string functions
  */
+#ifdef __GENKSYMS__
+#include <asm/uaccess.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/asm-offsets.h>
@@ -46,4 +49,6 @@ ENTRY(copy_page)
 	PLD(	beq	2b			)
 		ldmfd	sp!, {r4, pc}			@	3
 ENDPROC(copy_page)
+#endif
+
 EXPORT_SYMBOL(copy_page)
diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S
index 592c179112d1..e13fbac33846 100644
--- a/arch/arm/lib/copy_to_user.S
+++ b/arch/arm/lib/copy_to_user.S
@@ -9,7 +9,9 @@
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
  */
-
+#ifdef __GENKSYMS__
+#include <asm/uaccess.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
@@ -100,9 +102,6 @@ WEAK(arm_copy_to_user)
 
 ENDPROC(arm_copy_to_user)
 ENDPROC(__copy_to_user_std)
-#ifndef CONFIG_UACCESS_WITH_MEMCPY
-EXPORT_SYMBOL(arm_copy_to_user)
-#endif
 
 	.pushsection .text.fixup,"ax"
 	.align 0
@@ -112,4 +111,8 @@ EXPORT_SYMBOL(arm_copy_to_user)
 	rsb	r0, r0, r2
 	copy_abort_end
 	.popsection
+#endif
 
+#ifndef CONFIG_UACCESS_WITH_MEMCPY
+EXPORT_SYMBOL(arm_copy_to_user)
+#endif
diff --git a/arch/arm/lib/csumipv6.S b/arch/arm/lib/csumipv6.S
index 68603b5ee537..08fb49a4671a 100644
--- a/arch/arm/lib/csumipv6.S
+++ b/arch/arm/lib/csumipv6.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/checksum.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -31,4 +34,6 @@ ENTRY(__csum_ipv6_magic)
 		adcs	r0, r0, #0
 		ldmfd	sp!, {pc}
 ENDPROC(__csum_ipv6_magic)
+#endif
+
 EXPORT_SYMBOL(__csum_ipv6_magic)
diff --git a/arch/arm/lib/csumpartial.S b/arch/arm/lib/csumpartial.S
index 830b20e81c37..524295a89c6c 100644
--- a/arch/arm/lib/csumpartial.S
+++ b/arch/arm/lib/csumpartial.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/checksum.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -141,4 +144,5 @@ ENTRY(csum_partial)
 		bne	4b
 		b	.Lless4
 ENDPROC(csum_partial)
+#endif
 EXPORT_SYMBOL(csum_partial)
diff --git a/arch/arm/lib/csumpartialcopy.S b/arch/arm/lib/csumpartialcopy.S
index 9c3383fed129..2b0d77edce39 100644
--- a/arch/arm/lib/csumpartialcopy.S
+++ b/arch/arm/lib/csumpartialcopy.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/checksum.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 
@@ -49,6 +52,8 @@
 
 #define FN_ENTRY	ENTRY(csum_partial_copy_nocheck)
 #define FN_EXIT		ENDPROC(csum_partial_copy_nocheck)
-#define FN_EXPORT	EXPORT_SYMBOL(csum_partial_copy_nocheck)
 
 #include "csumpartialcopygeneric.S"
+#endif
+
+EXPORT_SYMBOL(csum_partial_copy_nocheck)
diff --git a/arch/arm/lib/csumpartialcopygeneric.S b/arch/arm/lib/csumpartialcopygeneric.S
index 8b94d20e51d1..06825566c0f7 100644
--- a/arch/arm/lib/csumpartialcopygeneric.S
+++ b/arch/arm/lib/csumpartialcopygeneric.S
@@ -332,4 +332,3 @@ FN_ENTRY
 		mov	r5, r4, get_byte_1
 		b	.Lexit
 FN_EXIT
-FN_EXPORT
diff --git a/arch/arm/lib/csumpartialcopyuser.S b/arch/arm/lib/csumpartialcopyuser.S
index 5d495edf3d83..45fb846a18c1 100644
--- a/arch/arm/lib/csumpartialcopyuser.S
+++ b/arch/arm/lib/csumpartialcopyuser.S
@@ -10,6 +10,9 @@
  * 27/03/03 Ian Molton Clean up CONFIG_CPU
  *
  */
+#ifdef __GENKSYMS__
+#include <asm/checksum.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/errno.h>
@@ -73,7 +76,6 @@
 
 #define FN_ENTRY	ENTRY(csum_partial_copy_from_user)
 #define FN_EXIT		ENDPROC(csum_partial_copy_from_user)
-#define FN_EXPORT	EXPORT_SYMBOL(csum_partial_copy_from_user)
 
 #include "csumpartialcopygeneric.S"
 
@@ -96,3 +98,6 @@
 		bne	9002b
 		load_regs
 		.popsection
+#endif
+
+EXPORT_SYMBOL(csum_partial_copy_from_user)
diff --git a/arch/arm/lib/div64.S b/arch/arm/lib/div64.S
index 0c9e1c18fc9e..b0b05f8bfdb7 100644
--- a/arch/arm/lib/div64.S
+++ b/arch/arm/lib/div64.S
@@ -11,7 +11,10 @@
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
  */
-
+#ifdef __GENKSYMS__
+#include <asm/div64.h>
+extern void __do_div64(void);
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
@@ -211,4 +214,6 @@ Ldiv0_64:
 
 UNWIND(.fnend)
 ENDPROC(__do_div64)
+#endif
+
 EXPORT_SYMBOL(__do_div64)
diff --git a/arch/arm/lib/findbit.S b/arch/arm/lib/findbit.S
index 26302b8cd38f..1a238aeec6c3 100644
--- a/arch/arm/lib/findbit.S
+++ b/arch/arm/lib/findbit.S
@@ -13,6 +13,9 @@
  *   also call with zero size.
  * Reworked by rmk.
  */
+#ifdef __GENKSYMS__
+#include <linux/bitops.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -38,7 +41,6 @@ ENTRY(_find_first_zero_bit_le)
 3:		mov	r0, r1			@ no free bits
 		ret	lr
 ENDPROC(_find_first_zero_bit_le)
-EXPORT_SYMBOL(_find_first_zero_bit_le)
 
 /*
  * Purpose  : Find next 'zero' bit
@@ -59,7 +61,6 @@ ENTRY(_find_next_zero_bit_le)
 		add	r2, r2, #1		@ align bit pointer
 		b	2b			@ loop for next bit
 ENDPROC(_find_next_zero_bit_le)
-EXPORT_SYMBOL(_find_next_zero_bit_le)
 
 /*
  * Purpose  : Find a 'one' bit
@@ -81,7 +82,6 @@ ENTRY(_find_first_bit_le)
 3:		mov	r0, r1			@ no free bits
 		ret	lr
 ENDPROC(_find_first_bit_le)
-EXPORT_SYMBOL(_find_first_bit_le)
 
 /*
  * Purpose  : Find next 'one' bit
@@ -101,7 +101,6 @@ ENTRY(_find_next_bit_le)
 		add	r2, r2, #1		@ align bit pointer
 		b	2b			@ loop for next bit
 ENDPROC(_find_next_bit_le)
-EXPORT_SYMBOL(_find_next_bit_le)
 
 #ifdef __ARMEB__
 
@@ -121,7 +120,6 @@ ENTRY(_find_first_zero_bit_be)
 3:		mov	r0, r1			@ no free bits
 		ret	lr
 ENDPROC(_find_first_zero_bit_be)
-EXPORT_SYMBOL(_find_first_zero_bit_be)
 
 ENTRY(_find_next_zero_bit_be)
 		teq	r1, #0
@@ -139,7 +137,6 @@ ENTRY(_find_next_zero_bit_be)
 		add	r2, r2, #1		@ align bit pointer
 		b	2b			@ loop for next bit
 ENDPROC(_find_next_zero_bit_be)
-EXPORT_SYMBOL(_find_next_zero_bit_be)
 
 ENTRY(_find_first_bit_be)
 		teq	r1, #0
@@ -157,7 +154,6 @@ ENTRY(_find_first_bit_be)
 3:		mov	r0, r1			@ no free bits
 		ret	lr
 ENDPROC(_find_first_bit_be)
-EXPORT_SYMBOL(_find_first_bit_be)
 
 ENTRY(_find_next_bit_be)
 		teq	r1, #0
@@ -174,7 +170,6 @@ ENTRY(_find_next_bit_be)
 		add	r2, r2, #1		@ align bit pointer
 		b	2b			@ loop for next bit
 ENDPROC(_find_next_bit_be)
-EXPORT_SYMBOL(_find_next_bit_be)
 
 #endif
 
@@ -202,4 +197,14 @@ EXPORT_SYMBOL(_find_next_bit_be)
 		cmp	r1, r0			@ Clamp to maxbit
 		movlo	r0, r1
 		ret	lr
-
+#endif
+EXPORT_SYMBOL(_find_first_zero_bit_le)
+EXPORT_SYMBOL(_find_next_zero_bit_le)
+EXPORT_SYMBOL(_find_first_bit_le)
+EXPORT_SYMBOL(_find_next_bit_le)
+#ifdef __ARMEB__
+EXPORT_SYMBOL(_find_first_zero_bit_be)
+EXPORT_SYMBOL(_find_next_zero_bit_be)
+EXPORT_SYMBOL(_find_first_bit_be)
+EXPORT_SYMBOL(_find_next_bit_be)
+#endif
diff --git a/arch/arm/lib/getuser.S b/arch/arm/lib/getuser.S
index 9d09a38e73af..c8454e1fee32 100644
--- a/arch/arm/lib/getuser.S
+++ b/arch/arm/lib/getuser.S
@@ -27,6 +27,9 @@
  * Note that ADDR_LIMIT is either 0 or 0xc0000000.
  * Note also that it is intended that __get_user_bad is not global.
  */
+#ifdef __GENKSYMS__
+#include <asm/uaccess.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/errno.h>
@@ -39,7 +42,6 @@ ENTRY(__get_user_1)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__get_user_1)
-EXPORT_SYMBOL(__get_user_1)
 
 ENTRY(__get_user_2)
 	check_uaccess r0, 2, r1, r2, __get_user_bad
@@ -60,7 +62,6 @@ rb	.req	r0
 	mov	r0, #0
 	ret	lr
 ENDPROC(__get_user_2)
-EXPORT_SYMBOL(__get_user_2)
 
 ENTRY(__get_user_4)
 	check_uaccess r0, 4, r1, r2, __get_user_bad
@@ -68,7 +69,6 @@ ENTRY(__get_user_4)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__get_user_4)
-EXPORT_SYMBOL(__get_user_4)
 
 ENTRY(__get_user_8)
 	check_uaccess r0, 8, r1, r2, __get_user_bad
@@ -82,7 +82,6 @@ ENTRY(__get_user_8)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__get_user_8)
-EXPORT_SYMBOL(__get_user_8)
 
 #ifdef __ARMEB__
 ENTRY(__get_user_32t_8)
@@ -96,7 +95,6 @@ ENTRY(__get_user_32t_8)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__get_user_32t_8)
-EXPORT_SYMBOL(__get_user_32t_8)
 
 ENTRY(__get_user_64t_1)
 	check_uaccess r0, 1, r1, r2, __get_user_bad8
@@ -104,7 +102,6 @@ ENTRY(__get_user_64t_1)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__get_user_64t_1)
-EXPORT_SYMBOL(__get_user_64t_1)
 
 ENTRY(__get_user_64t_2)
 	check_uaccess r0, 2, r1, r2, __get_user_bad8
@@ -121,7 +118,6 @@ rb	.req	r0
 	mov	r0, #0
 	ret	lr
 ENDPROC(__get_user_64t_2)
-EXPORT_SYMBOL(__get_user_64t_2)
 
 ENTRY(__get_user_64t_4)
 	check_uaccess r0, 4, r1, r2, __get_user_bad8
@@ -129,7 +125,6 @@ ENTRY(__get_user_64t_4)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__get_user_64t_4)
-EXPORT_SYMBOL(__get_user_64t_4)
 #endif
 
 __get_user_bad8:
@@ -156,3 +151,15 @@ ENDPROC(__get_user_bad8)
 	.long	11b, __get_user_bad8
 #endif
 .popsection
+#endif
+
+EXPORT_SYMBOL(__get_user_1)
+EXPORT_SYMBOL(__get_user_2)
+EXPORT_SYMBOL(__get_user_4)
+EXPORT_SYMBOL(__get_user_8)
+#ifdef __ARMEB__
+EXPORT_SYMBOL(__get_user_32t_8)
+EXPORT_SYMBOL(__get_user_64t_1)
+EXPORT_SYMBOL(__get_user_64t_2)
+EXPORT_SYMBOL(__get_user_64t_4)
+#endif
diff --git a/arch/arm/lib/io-readsb.S b/arch/arm/lib/io-readsb.S
index 3dff7a3a2aef..59f6efcd552d 100644
--- a/arch/arm/lib/io-readsb.S
+++ b/arch/arm/lib/io-readsb.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -122,4 +125,5 @@ ENTRY(__raw_readsb)
 
 		ldmfd	sp!, {r4 - r6, pc}
 ENDPROC(__raw_readsb)
+#endif
 EXPORT_SYMBOL(__raw_readsb)
diff --git a/arch/arm/lib/io-readsl.S b/arch/arm/lib/io-readsl.S
index bfd39682325b..741fa59ffbef 100644
--- a/arch/arm/lib/io-readsl.S
+++ b/arch/arm/lib/io-readsl.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -78,4 +81,5 @@ ENTRY(__raw_readsl)
 		strb	r3, [r1, #0]
 		ret	lr
 ENDPROC(__raw_readsl)
+#endif
 EXPORT_SYMBOL(__raw_readsl)
diff --git a/arch/arm/lib/io-readsw-armv3.S b/arch/arm/lib/io-readsw-armv3.S
index b3af3db6caac..ea7aab82899c 100644
--- a/arch/arm/lib/io-readsw-armv3.S
+++ b/arch/arm/lib/io-readsw-armv3.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -103,5 +106,6 @@ ENTRY(__raw_readsw)
 		strneb	r3, [r1]
 
 		ldmfd	sp!, {r4, r5, r6, pc}
+#endif
 
 EXPORT_SYMBOL(__raw_readsw)
diff --git a/arch/arm/lib/io-readsw-armv4.S b/arch/arm/lib/io-readsw-armv4.S
index 3c7a7a40b33e..bebfe63777c5 100644
--- a/arch/arm/lib/io-readsw-armv4.S
+++ b/arch/arm/lib/io-readsw-armv4.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -130,4 +133,6 @@ ENTRY(__raw_readsw)
 		strneb	ip, [r1]
 		ldmfd	sp!, {r4, pc}
 ENDPROC(__raw_readsw)
+#endif
+
 EXPORT_SYMBOL(__raw_readsw)
diff --git a/arch/arm/lib/io-writesb.S b/arch/arm/lib/io-writesb.S
index fa3633594415..28c27bd6a01b 100644
--- a/arch/arm/lib/io-writesb.S
+++ b/arch/arm/lib/io-writesb.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -93,4 +96,6 @@ ENTRY(__raw_writesb)
 
 		ldmfd	sp!, {r4, r5, pc}
 ENDPROC(__raw_writesb)
+#endif
+
 EXPORT_SYMBOL(__raw_writesb)
diff --git a/arch/arm/lib/io-writesl.S b/arch/arm/lib/io-writesl.S
index 98ed6aec0b47..51c087c8f2a4 100644
--- a/arch/arm/lib/io-writesl.S
+++ b/arch/arm/lib/io-writesl.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -66,4 +69,6 @@ ENTRY(__raw_writesl)
 		bne	6b
 		ret	lr
 ENDPROC(__raw_writesl)
+#endif
+
 EXPORT_SYMBOL(__raw_writesl)
diff --git a/arch/arm/lib/io-writesw-armv3.S b/arch/arm/lib/io-writesw-armv3.S
index 577184c082bb..691529d3d780 100644
--- a/arch/arm/lib/io-writesw-armv3.S
+++ b/arch/arm/lib/io-writesw-armv3.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -125,4 +128,6 @@ ENTRY(__raw_writesw)
 		strne	ip, [r0]
 
 		ldmfd	sp!, {r4, r5, r6, pc}
+#endif
+
 EXPORT_SYMBOL(__raw_writesw)
diff --git a/arch/arm/lib/io-writesw-armv4.S b/arch/arm/lib/io-writesw-armv4.S
index e335f489d1fc..606900a24824 100644
--- a/arch/arm/lib/io-writesw-armv4.S
+++ b/arch/arm/lib/io-writesw-armv4.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -99,4 +102,5 @@ ENTRY(__raw_writesw)
 		strneh	ip, [r0]
 		ret	lr
 ENDPROC(__raw_writesw)
+#endif
 EXPORT_SYMBOL(__raw_writesw)
diff --git a/arch/arm/lib/lib1funcs.S b/arch/arm/lib/lib1funcs.S
index f541bc013bff..f93e6784e693 100644
--- a/arch/arm/lib/lib1funcs.S
+++ b/arch/arm/lib/lib1funcs.S
@@ -31,8 +31,16 @@ You should have received a copy of the GNU General Public License
 along with this program; see the file COPYING.  If not, write to
 the Free Software Foundation, 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
-
-
+#ifdef __GENKSYMS__
+extern void __udivsi3(void);
+extern void __aeabi_uidiv(void);
+extern void __umodsi3(void);
+extern void __divsi3(void);
+extern void __aeabi_idiv(void);
+extern void __modsi3(void);
+extern void __aeabi_uidivmod(void);
+extern void __aeabi_idivmod(void);
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
@@ -239,8 +247,6 @@ UNWIND(.fnstart)
 UNWIND(.fnend)
 ENDPROC(__udivsi3)
 ENDPROC(__aeabi_uidiv)
-EXPORT_SYMBOL(__udivsi3)
-EXPORT_SYMBOL(__aeabi_uidiv)
 
 ENTRY(__umodsi3)
 UNWIND(.fnstart)
@@ -259,7 +265,6 @@ UNWIND(.fnstart)
 
 UNWIND(.fnend)
 ENDPROC(__umodsi3)
-EXPORT_SYMBOL(__umodsi3)
 
 #ifdef CONFIG_ARM_PATCH_IDIV
 	.align 3
@@ -307,8 +312,6 @@ UNWIND(.fnstart)
 UNWIND(.fnend)
 ENDPROC(__divsi3)
 ENDPROC(__aeabi_idiv)
-EXPORT_SYMBOL(__divsi3)
-EXPORT_SYMBOL(__aeabi_idiv)
 
 ENTRY(__modsi3)
 UNWIND(.fnstart)
@@ -333,7 +336,6 @@ UNWIND(.fnstart)
 
 UNWIND(.fnend)
 ENDPROC(__modsi3)
-EXPORT_SYMBOL(__modsi3)
 
 #ifdef CONFIG_AEABI
 
@@ -350,7 +352,6 @@ UNWIND(.save {r0, r1, ip, lr}	)
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_uidivmod)
-EXPORT_SYMBOL(__aeabi_uidivmod)
 
 ENTRY(__aeabi_idivmod)
 UNWIND(.fnstart)
@@ -364,8 +365,6 @@ UNWIND(.save {r0, r1, ip, lr}	)
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_idivmod)
-EXPORT_SYMBOL(__aeabi_idivmod)
-
 #endif
 
 Ldiv0:
@@ -378,3 +377,15 @@ UNWIND(.save {lr})
 	ldr	pc, [sp], #8
 UNWIND(.fnend)
 ENDPROC(Ldiv0)
+#endif
+
+#ifdef CONFIG_AEABI
+EXPORT_SYMBOL(__udivsi3)
+EXPORT_SYMBOL(__aeabi_uidiv)
+EXPORT_SYMBOL(__umodsi3)
+EXPORT_SYMBOL(__divsi3)
+EXPORT_SYMBOL(__aeabi_idiv)
+EXPORT_SYMBOL(__modsi3)
+EXPORT_SYMBOL(__aeabi_uidivmod)
+EXPORT_SYMBOL(__aeabi_idivmod)
+#endif
diff --git a/arch/arm/lib/lshrdi3.S b/arch/arm/lib/lshrdi3.S
index e40833981417..7d33fcf5f066 100644
--- a/arch/arm/lib/lshrdi3.S
+++ b/arch/arm/lib/lshrdi3.S
@@ -25,7 +25,10 @@ along with this program; see the file COPYING.  If not, write to
 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
 
-
+#ifdef __GENKSYMS__
+extern void __lshrdi3(void);
+extern void __aeabi_llsr(void);
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -53,5 +56,7 @@ ENTRY(__aeabi_llsr)
 
 ENDPROC(__lshrdi3)
 ENDPROC(__aeabi_llsr)
+#endif
+
 EXPORT_SYMBOL(__lshrdi3)
 EXPORT_SYMBOL(__aeabi_llsr)
diff --git a/arch/arm/lib/memchr.S b/arch/arm/lib/memchr.S
index 44182bf686a5..9c4458ee1b56 100644
--- a/arch/arm/lib/memchr.S
+++ b/arch/arm/lib/memchr.S
@@ -9,6 +9,9 @@
  *
  *  ASM optimised string functions
  */
+#ifdef __GENKSYMS__
+#include <linux/string.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -25,4 +28,5 @@ ENTRY(memchr)
 2:	movne	r0, #0
 	ret	lr
 ENDPROC(memchr)
+#endif
 EXPORT_SYMBOL(memchr)
diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S
index 1be5b6ddf37c..0f883fa80c82 100644
--- a/arch/arm/lib/memcpy.S
+++ b/arch/arm/lib/memcpy.S
@@ -9,6 +9,10 @@
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <linux/string.h>
+#include <asm/io.h>
+#else
 
 #include <linux/linkage.h>
 #include <asm/assembler.h>
@@ -69,5 +73,6 @@ ENTRY(memcpy)
 
 ENDPROC(memcpy)
 ENDPROC(mmiocpy)
+#endif
 EXPORT_SYMBOL(memcpy)
 EXPORT_SYMBOL(mmiocpy)
diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S
index 71dcc5400d02..c396ce2eea6d 100644
--- a/arch/arm/lib/memmove.S
+++ b/arch/arm/lib/memmove.S
@@ -9,7 +9,10 @@
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
  */
-
+#ifdef __GENKSYMS__
+#include <asm/io.h>
+#include <linux/string.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
@@ -226,4 +229,6 @@ ENTRY(memmove)
 18:		backward_copy_shift	push=24	pull=8
 
 ENDPROC(memmove)
+#endif
+
 EXPORT_SYMBOL(memmove)
diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S
index 7b72044cba62..ab45aec73b15 100644
--- a/arch/arm/lib/memset.S
+++ b/arch/arm/lib/memset.S
@@ -9,6 +9,11 @@
  *
  *  ASM optimised string functions
  */
+#ifdef __GENKSYMS__
+#include <linux/string.h>
+#include <linux/io.h>
+#else
+
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
@@ -136,5 +141,7 @@ UNWIND( .fnstart            )
 UNWIND( .fnend   )
 ENDPROC(memset)
 ENDPROC(mmioset)
+#endif
+
 EXPORT_SYMBOL(memset)
 EXPORT_SYMBOL(mmioset)
diff --git a/arch/arm/lib/memzero.S b/arch/arm/lib/memzero.S
index 6dec26ed5bcc..b9803fae82a7 100644
--- a/arch/arm/lib/memzero.S
+++ b/arch/arm/lib/memzero.S
@@ -7,6 +7,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#ifdef __GENKSYMS__
+#include <linux/string.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/unwind.h>
@@ -136,4 +139,7 @@ UNWIND(	.fnstart			)
 	ret	lr			@ 1
 UNWIND(	.fnend				)
 ENDPROC(__memzero)
+#endif
+
 EXPORT_SYMBOL(__memzero)
+
diff --git a/arch/arm/lib/muldi3.S b/arch/arm/lib/muldi3.S
index b8f12388ccac..a677a402f6ca 100644
--- a/arch/arm/lib/muldi3.S
+++ b/arch/arm/lib/muldi3.S
@@ -9,7 +9,10 @@
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
  */
-
+#ifdef __GENKSYMS__
+extern void __muldi3(void);
+extern void __aeabi_lmul(void);
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -47,5 +50,7 @@ ENTRY(__aeabi_lmul)
 
 ENDPROC(__muldi3)
 ENDPROC(__aeabi_lmul)
+#endif
+
 EXPORT_SYMBOL(__muldi3)
 EXPORT_SYMBOL(__aeabi_lmul)
diff --git a/arch/arm/lib/putuser.S b/arch/arm/lib/putuser.S
index 11de126e2ed6..07afefc98748 100644
--- a/arch/arm/lib/putuser.S
+++ b/arch/arm/lib/putuser.S
@@ -27,6 +27,9 @@
  * Note that ADDR_LIMIT is either 0 or 0xc0000000
  * Note also that it is intended that __put_user_bad is not global.
  */
+#ifdef __GENKSYMS__
+#include <linux/uaccess.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/errno.h>
@@ -39,7 +42,6 @@ ENTRY(__put_user_1)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__put_user_1)
-EXPORT_SYMBOL(__put_user_1)
 
 ENTRY(__put_user_2)
 	check_uaccess r0, 2, r1, ip, __put_user_bad
@@ -64,7 +66,6 @@ ENTRY(__put_user_2)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__put_user_2)
-EXPORT_SYMBOL(__put_user_2)
 
 ENTRY(__put_user_4)
 	check_uaccess r0, 4, r1, ip, __put_user_bad
@@ -72,7 +73,6 @@ ENTRY(__put_user_4)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__put_user_4)
-EXPORT_SYMBOL(__put_user_4)
 
 ENTRY(__put_user_8)
 	check_uaccess r0, 8, r1, ip, __put_user_bad
@@ -86,7 +86,6 @@ ENTRY(__put_user_8)
 	mov	r0, #0
 	ret	lr
 ENDPROC(__put_user_8)
-EXPORT_SYMBOL(__put_user_8)
 
 __put_user_bad:
 	mov	r0, #-EFAULT
@@ -101,3 +100,9 @@ ENDPROC(__put_user_bad)
 	.long	5b, __put_user_bad
 	.long	6b, __put_user_bad
 .popsection
+#endif
+
+EXPORT_SYMBOL(__put_user_1)
+EXPORT_SYMBOL(__put_user_2)
+EXPORT_SYMBOL(__put_user_4)
+EXPORT_SYMBOL(__put_user_8)
diff --git a/arch/arm/lib/setbit.S b/arch/arm/lib/setbit.S
index 618fedae4b37..0a3dd9d36929 100644
--- a/arch/arm/lib/setbit.S
+++ b/arch/arm/lib/setbit.S
@@ -7,9 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <linux/linkage.h>
-#include <asm/assembler.h>
 #include "bitops.h"
-		.text
 
-bitop	_set_bit, orr
+BITOP(_set_bit, orr)
+EXPORT_SYMBOL(_set_bit)
diff --git a/arch/arm/lib/strchr.S b/arch/arm/lib/strchr.S
index 7301f6e6046c..14aae6132e98 100644
--- a/arch/arm/lib/strchr.S
+++ b/arch/arm/lib/strchr.S
@@ -9,6 +9,9 @@
  *
  *  ASM optimised string functions
  */
+#ifdef __GENKSYMS__
+#include <linux/string.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -26,4 +29,5 @@ ENTRY(strchr)
 		subeq	r0, r0, #1
 		ret	lr
 ENDPROC(strchr)
+#endif
 EXPORT_SYMBOL(strchr)
diff --git a/arch/arm/lib/strrchr.S b/arch/arm/lib/strrchr.S
index aaf9fd98b754..5e640e61605f 100644
--- a/arch/arm/lib/strrchr.S
+++ b/arch/arm/lib/strrchr.S
@@ -9,6 +9,9 @@
  *
  *  ASM optimised string functions
  */
+#ifdef __GENKSYMS__
+#include <linux/string.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -25,4 +28,5 @@ ENTRY(strrchr)
 		mov	r0, r3
 		ret	lr
 ENDPROC(strrchr)
+#endif
 EXPORT_SYMBOL(strrchr)
diff --git a/arch/arm/lib/testchangebit.S b/arch/arm/lib/testchangebit.S
index 4becdc3a59cb..c3d9df7c83e2 100644
--- a/arch/arm/lib/testchangebit.S
+++ b/arch/arm/lib/testchangebit.S
@@ -7,9 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <linux/linkage.h>
-#include <asm/assembler.h>
 #include "bitops.h"
-                .text
 
-testop	_test_and_change_bit, eor, str
+TESTOP(_test_and_change_bit, eor, str)
+EXPORT_SYMBOL(_test_and_change_bit)
diff --git a/arch/arm/lib/testclearbit.S b/arch/arm/lib/testclearbit.S
index 918841dcce7a..afe81e3f8688 100644
--- a/arch/arm/lib/testclearbit.S
+++ b/arch/arm/lib/testclearbit.S
@@ -7,9 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <linux/linkage.h>
-#include <asm/assembler.h>
 #include "bitops.h"
-                .text
 
-testop	_test_and_clear_bit, bicne, strne
+TESTOP(_test_and_clear_bit, bicne, strne)
+EXPORT_SYMBOL(_test_and_clear_bit)
diff --git a/arch/arm/lib/testsetbit.S b/arch/arm/lib/testsetbit.S
index 8d1b2fe9e487..d9f6115a3208 100644
--- a/arch/arm/lib/testsetbit.S
+++ b/arch/arm/lib/testsetbit.S
@@ -7,9 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#include <linux/linkage.h>
-#include <asm/assembler.h>
 #include "bitops.h"
-                .text
 
-testop	_test_and_set_bit, orreq, streq
+TESTOP(_test_and_set_bit, orreq, streq)
+EXPORT_SYMBOL(_test_and_set_bit)
diff --git a/arch/arm/lib/ucmpdi2.S b/arch/arm/lib/ucmpdi2.S
index 127a91af46f3..e70cd62005c8 100644
--- a/arch/arm/lib/ucmpdi2.S
+++ b/arch/arm/lib/ucmpdi2.S
@@ -9,7 +9,10 @@
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
  */
-
+#ifdef __GENKSYMS__
+extern void __ucmpdi2(void);
+extern void __aeabi_ulcmp(void);
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -36,7 +39,6 @@ ENTRY(__ucmpdi2)
 	ret	lr
 
 ENDPROC(__ucmpdi2)
-EXPORT_SYMBOL(__ucmpdi2)
 
 #ifdef CONFIG_AEABI
 
@@ -50,7 +52,11 @@ ENTRY(__aeabi_ulcmp)
 	ret	lr
 
 ENDPROC(__aeabi_ulcmp)
-EXPORT_SYMBOL(__aeabi_ulcmp)
 
 #endif
+#endif
 
+EXPORT_SYMBOL(__ucmpdi2)
+#ifdef CONFIG_AEABI
+EXPORT_SYMBOL(__aeabi_ulcmp)
+#endif
diff --git a/arch/arm/mach-imx/ssi-fiq.S b/arch/arm/mach-imx/ssi-fiq.S
index fd7917f1c204..db9611e17068 100644
--- a/arch/arm/mach-imx/ssi-fiq.S
+++ b/arch/arm/mach-imx/ssi-fiq.S
@@ -5,7 +5,9 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-
+#ifdef __GENKSYMS__
+#include <linux/platform_data/asoc-imx-ssi.h>
+#else
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 #include <asm/export.h>
@@ -145,6 +147,8 @@ imx_ssi_fiq_tx_buffer:
 		.word 0x0
 .L_imx_ssi_fiq_end:
 imx_ssi_fiq_end:
+#endif
+
 EXPORT_SYMBOL(imx_ssi_fiq_tx_buffer)
 EXPORT_SYMBOL(imx_ssi_fiq_rx_buffer)
 EXPORT_SYMBOL(imx_ssi_fiq_start)
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 81e0d70e7dd4..3eb30b551c26 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -160,7 +160,7 @@ $(obj)/%.i: $(src)/%.c FORCE
 	$(call if_changed_dep,cpp_i_c)
 
 cmd_gensymtypes =                                                           \
-    $(CPP) -D__GENKSYMS__ $(c_flags) $< |                                   \
+    $(CPP) -D'EXPORT_SYMBOL(x)=EXPORT_SYMBOL(x);' -D__GENKSYMS__ $(c_flags) $< | \
     $(GENKSYMS) $(if $(1), -T $(2))                                         \
      $(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX))             \
      $(if $(KBUILD_PRESERVE),-p)                                            \
@@ -180,9 +180,11 @@ $(obj)/%.symtypes : $(src)/%.c FORCE
 # (See cmd_cc_o_c + relevant part of rule_cc_o_c)
 
 quiet_cmd_cc_o_c = CC $(quiet_modtag)  $@
+quiet_cmd_as_o_S = AS $(quiet_modtag)  $@
 
 ifndef CONFIG_MODVERSIONS
 cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
+cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
 
 else
 # When module versioning is enabled the following steps are executed:
@@ -198,6 +200,7 @@ else
 #   the actual value of the checksum generated by genksyms
 
 cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
+cmd_as_o_S = $(CC) $(a_flags) -c -o $(@D)/.tmp_$(@F) $<
 cmd_modversions =								\
 	if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then		\
 		$(call cmd_gensymtypes,$(KBUILD_SYMTYPES),$(@:.o=.symtypes))	\
@@ -275,6 +278,7 @@ endef
 
 define rule_as_o_S
 	$(call cmd_and_fixdep,as_o_S)					  \
+	$(cmd_modversions)						  \
 	$(cmd_objtool)
 endef
 
@@ -311,6 +315,9 @@ $(obj)/%.lst: $(src)/%.c FORCE
 
 modkern_aflags := $(KBUILD_AFLAGS_KERNEL) $(AFLAGS_KERNEL)
 
+$(obj)/%.o: $(src)/%.S $(objtool_obj) FORCE
+	$(call if_changed_rule,as_o_S)
+
 $(real-objs-m)      : modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
 $(real-objs-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
 
@@ -320,12 +327,6 @@ cmd_cpp_s_S       = $(CPP) $(a_flags) -o $@ $<
 $(obj)/%.s: $(src)/%.S FORCE
 	$(call if_changed_dep,cpp_s_S)
 
-quiet_cmd_as_o_S = AS $(quiet_modtag)  $@
-cmd_as_o_S       = $(CC) $(a_flags) -c -o $@ $<
-
-$(obj)/%.o: $(src)/%.S $(objtool_obj) FORCE
-	$(call if_changed_rule,as_o_S)
-
 targets += $(real-objs-y) $(real-objs-m) $(lib-y)
 targets += $(extra-y) $(MAKECMDGOALS) $(always)
 

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2016-09-13  4:02       ` Stephen Rothwell
@ 2016-09-13  4:09         ` Nicholas Piggin
  2016-09-13  7:48         ` Arnd Bergmann
  1 sibling, 0 replies; 23+ messages in thread
From: Nicholas Piggin @ 2016-09-13  4:09 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Michal Marek, linux-next, linux-kernel, Kees Cook, linux-arch,
	Al Viro, Michael Ellerman, Benjamin Herrenschmidt, PowerPC

On Tue, 13 Sep 2016 14:02:57 +1000
Stephen Rothwell <sfr@canb.auug.org.au> wrote:

> Hi Michal,
> 
> [For the new cc's, we are discussing the "thin archives" and "link dead
> code/data elimination" patches in the kbuild tree.]
> 
> On Tue, 13 Sep 2016 09:39:45 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> >
> > On Mon, 12 Sep 2016 11:03:08 +0200 Michal Marek <mmarek@suse.cz> wrote:  
> > >
> > > On 2016-09-12 04:53, Nicholas Piggin wrote:    
> > > > Question, what is the best way to merge dependent patches? Considering
> > > > they will need a good amount of architecture testing, I think they will
> > > > have to go via arch trees. But it also does not make sense to merge these
> > > > kbuild changes upstream first, without having tested them.      
> > > 
> > > I think it makes sense to merge the kbuild changes via kbuild.git, even
> > > if they are unused and untested. Any follow-up fixes required to enable
> > > the first architecture can go through the respective architecture tree.
> > > Does that sound OK?    
> > 
> > And if you guarantee not to rebase the kbuild tree (or at least the
> > subset containing these patches), then each of the architecture trees
> > can just merge your tree (or a tag?) and then implement any necessary
> > arch dependent changes.  I fixes are necessary, they can also be merged
> > into the architecture trees.  
> 
> Except, of course, the kbuild tree still has the asm EXPORT_SYMBOL
> patches that produce warnings on PowerPC :-( (And I am still reverting
> the PowerPC specific one of those patches).
> 

I'm working on a better patch to fix that (and to whitelist powerpc's
relocation checks to it does not get blamed for such breakage)
Although no guarantees about that yet.

However some of the enablement and subsequent patches I would like to
merge are quite architecture specific, and I would prefer them to go
via arch trees.

So I would like to see a kbuild branch with these 3 in it, if arch
maintainers (or specifically powerpc) would be willing to pull it in
their -next branches.

Thanks,
Nick

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2016-09-12 23:39     ` Stephen Rothwell
@ 2016-09-13  4:02       ` Stephen Rothwell
  2016-09-13  4:09         ` Nicholas Piggin
  2016-09-13  7:48         ` Arnd Bergmann
  0 siblings, 2 replies; 23+ messages in thread
From: Stephen Rothwell @ 2016-09-13  4:02 UTC (permalink / raw)
  To: Michal Marek
  Cc: Nicholas Piggin, linux-next, linux-kernel, Kees Cook, linux-arch,
	Al Viro, Michael Ellerman, Benjamin Herrenschmidt, PowerPC

Hi Michal,

[For the new cc's, we are discussing the "thin archives" and "link dead
code/data elimination" patches in the kbuild tree.]

On Tue, 13 Sep 2016 09:39:45 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> On Mon, 12 Sep 2016 11:03:08 +0200 Michal Marek <mmarek@suse.cz> wrote:
> >
> > On 2016-09-12 04:53, Nicholas Piggin wrote:  
> > > Question, what is the best way to merge dependent patches? Considering
> > > they will need a good amount of architecture testing, I think they will
> > > have to go via arch trees. But it also does not make sense to merge these
> > > kbuild changes upstream first, without having tested them.    
> > 
> > I think it makes sense to merge the kbuild changes via kbuild.git, even
> > if they are unused and untested. Any follow-up fixes required to enable
> > the first architecture can go through the respective architecture tree.
> > Does that sound OK?  
> 
> And if you guarantee not to rebase the kbuild tree (or at least the
> subset containing these patches), then each of the architecture trees
> can just merge your tree (or a tag?) and then implement any necessary
> arch dependent changes.  I fixes are necessary, they can also be merged
> into the architecture trees.

Except, of course, the kbuild tree still has the asm EXPORT_SYMBOL
patches that produce warnings on PowerPC :-( (And I am still reverting
the PowerPC specific one of those patches).

-- 
Cheers,
Stephen Rothwell

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2016-09-12  9:03   ` Michal Marek
@ 2016-09-12 23:39     ` Stephen Rothwell
  2016-09-13  4:02       ` Stephen Rothwell
  0 siblings, 1 reply; 23+ messages in thread
From: Stephen Rothwell @ 2016-09-12 23:39 UTC (permalink / raw)
  To: Michal Marek
  Cc: Nicholas Piggin, linux-next, linux-kernel, Kees Cook, linux-arch

Hi Michal,

On Mon, 12 Sep 2016 11:03:08 +0200 Michal Marek <mmarek@suse.cz> wrote:
>
> On 2016-09-12 04:53, Nicholas Piggin wrote:
> > Question, what is the best way to merge dependent patches? Considering
> > they will need a good amount of architecture testing, I think they will
> > have to go via arch trees. But it also does not make sense to merge these
> > kbuild changes upstream first, without having tested them.  
> 
> I think it makes sense to merge the kbuild changes via kbuild.git, even
> if they are unused and untested. Any follow-up fixes required to enable
> the first architecture can go through the respective architecture tree.
> Does that sound OK?

And if you guarantee not to rebase the kbuild tree (or at least the
subset containing these patches), then each of the architecture trees
can just merge your tree (or a tag?) and then implement any necessary
arch dependent changes.  I fixes are necessary, they can also be merged
into the architecture trees.

-- 
Cheers,
Stephen Rothwell

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2016-09-12  2:53 ` Nicholas Piggin
@ 2016-09-12  9:03   ` Michal Marek
  2016-09-12 23:39     ` Stephen Rothwell
  0 siblings, 1 reply; 23+ messages in thread
From: Michal Marek @ 2016-09-12  9:03 UTC (permalink / raw)
  To: Nicholas Piggin
  Cc: Stephen Rothwell, linux-next, linux-kernel, Kees Cook, linux-arch

On 2016-09-12 04:53, Nicholas Piggin wrote:
> Question, what is the best way to merge dependent patches? Considering
> they will need a good amount of architecture testing, I think they will
> have to go via arch trees. But it also does not make sense to merge these
> kbuild changes upstream first, without having tested them.

I think it makes sense to merge the kbuild changes via kbuild.git, even
if they are unused and untested. Any follow-up fixes required to enable
the first architecture can go through the respective architecture tree.
Does that sound OK?

Michal

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2016-09-12  1:32 Stephen Rothwell
@ 2016-09-12  2:53 ` Nicholas Piggin
  2016-09-12  9:03   ` Michal Marek
  0 siblings, 1 reply; 23+ messages in thread
From: Nicholas Piggin @ 2016-09-12  2:53 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Michal Marek, linux-next, linux-kernel, Kees Cook, linux-arch

On Mon, 12 Sep 2016 11:32:24 +1000
Stephen Rothwell <sfr@canb.auug.org.au> wrote:

> Hi Michal,
> 
> Today's linux-next merge of the kbuild tree got a conflict in:
> 
>   arch/Kconfig
> 
> between commit:
> 
>   0f60a8efe400 ("mm: Implement stack frame object validation")
> 
> from Linus' tree and commits:
> 
>   a5967db9af51 ("kbuild: allow architectures to use thin archives instead of ld -r")
>   b67067f1176d ("kbuild: allow archs to select link dead code/data elimination")
> 
> from the kbuild tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 

Thanks Stephen, this should be a trivial conflict. Also you wrote one
of the patches :)

Question, what is the best way to merge dependent patches? Considering
they will need a good amount of architecture testing, I think they will
have to go via arch trees. But it also does not make sense to merge these
kbuild changes upstream first, without having tested them.

Thanks,
Nick

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2016-09-12  1:32 Stephen Rothwell
  2016-09-12  2:53 ` Nicholas Piggin
  0 siblings, 1 reply; 23+ messages in thread
From: Stephen Rothwell @ 2016-09-12  1:32 UTC (permalink / raw)
  To: Michal Marek; +Cc: linux-next, linux-kernel, Kees Cook, Nicholas Piggin

Hi Michal,

Today's linux-next merge of the kbuild tree got a conflict in:

  arch/Kconfig

between commit:

  0f60a8efe400 ("mm: Implement stack frame object validation")

from Linus' tree and commits:

  a5967db9af51 ("kbuild: allow architectures to use thin archives instead of ld -r")
  b67067f1176d ("kbuild: allow archs to select link dead code/data elimination")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc arch/Kconfig
index fd6e9712af81,3f948c422d9d..000000000000
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@@ -450,15 -461,25 +450,34 @@@ config CC_STACKPROTECTOR_STRON
  
  endchoice
  
 +config HAVE_ARCH_WITHIN_STACK_FRAMES
 +	bool
 +	help
 +	  An architecture should select this if it can walk the kernel stack
 +	  frames to determine if an object is part of either the arguments
 +	  or local variables (i.e. that it excludes saved return addresses,
 +	  and similar) by implementing an inline arch_within_stack_frames(),
 +	  which is used by CONFIG_HARDENED_USERCOPY.
 +
+ config THIN_ARCHIVES
+ 	bool
+ 	help
+ 	  Select this if the architecture wants to use thin archives
+ 	  instead of ld -r to create the built-in.o files.
+ 
+ config LD_DEAD_CODE_DATA_ELIMINATION
+ 	bool
+ 	help
+ 	  Select this if the architecture wants to do dead code and
+ 	  data elimination with the linker by compiling with
+ 	  -ffunction-sections -fdata-sections and linking with
+ 	  --gc-sections.
+ 
+ 	  This requires that the arch annotates or otherwise protects
+ 	  its external entry points from being discarded. Linker scripts
+ 	  must also merge .text.*, .data.*, and .bss.* correctly into
+ 	  output sections.
+ 
  config HAVE_CONTEXT_TRACKING
  	bool
  	help

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2016-07-28  1:50 Stephen Rothwell
  0 siblings, 0 replies; 23+ messages in thread
From: Stephen Rothwell @ 2016-07-28  1:50 UTC (permalink / raw)
  To: Michal Marek, Linus Torvalds; +Cc: linux-next, linux-kernel, Emese Revfy

Hi Michal,

Today's linux-next merge of the kbuild tree got a conflict in:

  Makefile

between commits:

  6e8d666e9253 ("Disable "maybe-uninitialized" warning globally")

from Linus' tree and commits:

  543c37cb1650 ("Add sancov plugin")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc Makefile
index d384848478b9,edd7af68411f..000000000000
--- a/Makefile
+++ b/Makefile
@@@ -370,8 -370,8 +370,8 @@@ LDFLAGS_MODULE  
  CFLAGS_KERNEL	=
  AFLAGS_KERNEL	=
  LDFLAGS_vmlinux =
 -CFLAGS_GCOV	= -fprofile-arcs -ftest-coverage -fno-tree-loop-im -Wno-maybe-uninitialized
 +CFLAGS_GCOV	= -fprofile-arcs -ftest-coverage -fno-tree-loop-im
- CFLAGS_KCOV	= -fsanitize-coverage=trace-pc
+ CFLAGS_KCOV	:= $(call cc-option,-fsanitize-coverage=trace-pc,)
  
  
  # Use USERINCLUDE when you must reference the UAPI directories only.

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2015-07-02 19:53       ` Michal Marek
@ 2015-07-03 11:56         ` Geert Uytterhoeven
  0 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2015-07-03 11:56 UTC (permalink / raw)
  To: Michal Marek
  Cc: Stephen Rothwell, Linux-Next, linux-kernel, Luis R. Rodriguez,
	David Vrabel, Geert Uytterhoeven

On Thu, Jul 2, 2015 at 9:53 PM, Michal Marek <mmarek@suse.cz> wrote:
> Dne 2.7.2015 v 11:18 Geert Uytterhoeven napsal(a):
>> On Thu, Jul 2, 2015 at 9:17 AM, Michal Marek <mmarek@suse.cz> wrote:
>>> Dne 2.7.2015 v 08:47 Geert Uytterhoeven napsal(a):
>>>> On Thu, Jul 2, 2015 at 2:30 AM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>>>>> diff --cc scripts/kconfig/Makefile
>>>>> index f52abae0ec5f,930de225d52e..000000000000
>>>>> --- a/scripts/kconfig/Makefile
>>>>> +++ b/scripts/kconfig/Makefile
>>>>> @@@ -142,9 -139,9 +143,10 @@@ help
>>>>>         @echo  '  alldefconfig    - New config with all symbols set to default'
>>>>>         @echo  '  randconfig      - New config with random answer to all options'
>>>>>         @echo  '  listnewconfig   - List new options'
>>>>> -       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their default value'
>>>>> +       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their'
>>>>> +       @echo  '                    default value'
>>>>>  -      @echo  '  kvmconfig       - Enable additional options for guest kernel support'
>>>>>  +      @echo  '  kvmconfig       - Enable additional options for kvm guest kernel support'
>>>>>  +      @echo  '  xenconfig       - Enable additional options for xen dom0 and guest kernel support'
>>>>
>>>> Doh, a new long line to be wrapped.
>>>>
>>>> Michal: Shall I send a fix-up patch, or a new one against Linus' tree?
>>>
>>> Please send one against Linus' tree, because I do not have the xenconfig
>>> patch in the kbuild tree.
>>
>> Done.
>
> Sorry, I misunderstood you. Please send a fix-up (i.e. just fixing the
> new long line) patch based on Linus's tree.

Done.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2015-07-02  9:18     ` Geert Uytterhoeven
@ 2015-07-02 19:53       ` Michal Marek
  2015-07-03 11:56         ` Geert Uytterhoeven
  0 siblings, 1 reply; 23+ messages in thread
From: Michal Marek @ 2015-07-02 19:53 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Stephen Rothwell, Linux-Next, linux-kernel, Luis R. Rodriguez,
	David Vrabel, Geert Uytterhoeven

Dne 2.7.2015 v 11:18 Geert Uytterhoeven napsal(a):
> On Thu, Jul 2, 2015 at 9:17 AM, Michal Marek <mmarek@suse.cz> wrote:
>> Dne 2.7.2015 v 08:47 Geert Uytterhoeven napsal(a):
>>> On Thu, Jul 2, 2015 at 2:30 AM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>>>> diff --cc scripts/kconfig/Makefile
>>>> index f52abae0ec5f,930de225d52e..000000000000
>>>> --- a/scripts/kconfig/Makefile
>>>> +++ b/scripts/kconfig/Makefile
>>>> @@@ -142,9 -139,9 +143,10 @@@ help
>>>>         @echo  '  alldefconfig    - New config with all symbols set to default'
>>>>         @echo  '  randconfig      - New config with random answer to all options'
>>>>         @echo  '  listnewconfig   - List new options'
>>>> -       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their default value'
>>>> +       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their'
>>>> +       @echo  '                    default value'
>>>>  -      @echo  '  kvmconfig       - Enable additional options for guest kernel support'
>>>>  +      @echo  '  kvmconfig       - Enable additional options for kvm guest kernel support'
>>>>  +      @echo  '  xenconfig       - Enable additional options for xen dom0 and guest kernel support'
>>>
>>> Doh, a new long line to be wrapped.
>>>
>>> Michal: Shall I send a fix-up patch, or a new one against Linus' tree?
>>
>> Please send one against Linus' tree, because I do not have the xenconfig
>> patch in the kbuild tree.
> 
> Done.

Sorry, I misunderstood you. Please send a fix-up (i.e. just fixing the
new long line) patch based on Linus's tree.

Michal

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2015-07-02  7:17   ` Michal Marek
@ 2015-07-02  9:18     ` Geert Uytterhoeven
  2015-07-02 19:53       ` Michal Marek
  0 siblings, 1 reply; 23+ messages in thread
From: Geert Uytterhoeven @ 2015-07-02  9:18 UTC (permalink / raw)
  To: Michal Marek
  Cc: Stephen Rothwell, Linux-Next, linux-kernel, Luis R. Rodriguez,
	David Vrabel, Geert Uytterhoeven

On Thu, Jul 2, 2015 at 9:17 AM, Michal Marek <mmarek@suse.cz> wrote:
> Dne 2.7.2015 v 08:47 Geert Uytterhoeven napsal(a):
>> On Thu, Jul 2, 2015 at 2:30 AM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>>> Today's linux-next merge of the kbuild tree got a conflict in:
>>>
>>>   scripts/kconfig/Makefile
>>>
>>> between commits:
>>>
>>>   9bcd776d299e ("kconfig: clarify kvmconfig is for kvm")
>>>   6c6685055a28 ("kconfig: add xenconfig defconfig helper")
>>>
>>> from Linus' tree and commit:
>>>
>>>   fa75a727c019 ("kconfig: Wrap long "make help" text lines")
>>>
>>> from the kbuild tree.
>>>
>>> I fixed it up (see below) and can carry the fix as necessary (no action
>>> is required).
>>>
>>> --
>>> Cheers,
>>> Stephen Rothwell                    sfr@canb.auug.org.au
>>>
>>> diff --cc scripts/kconfig/Makefile
>>> index f52abae0ec5f,930de225d52e..000000000000
>>> --- a/scripts/kconfig/Makefile
>>> +++ b/scripts/kconfig/Makefile
>>> @@@ -142,9 -139,9 +143,10 @@@ help
>>>         @echo  '  alldefconfig    - New config with all symbols set to default'
>>>         @echo  '  randconfig      - New config with random answer to all options'
>>>         @echo  '  listnewconfig   - List new options'
>>> -       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their default value'
>>> +       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their'
>>> +       @echo  '                    default value'
>>>  -      @echo  '  kvmconfig       - Enable additional options for guest kernel support'
>>>  +      @echo  '  kvmconfig       - Enable additional options for kvm guest kernel support'
>>>  +      @echo  '  xenconfig       - Enable additional options for xen dom0 and guest kernel support'
>>
>> Doh, a new long line to be wrapped.
>>
>> Michal: Shall I send a fix-up patch, or a new one against Linus' tree?
>
> Please send one against Linus' tree, because I do not have the xenconfig
> patch in the kbuild tree.

Done.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2015-07-02  6:47 ` Geert Uytterhoeven
@ 2015-07-02  7:17   ` Michal Marek
  2015-07-02  9:18     ` Geert Uytterhoeven
  0 siblings, 1 reply; 23+ messages in thread
From: Michal Marek @ 2015-07-02  7:17 UTC (permalink / raw)
  To: Geert Uytterhoeven, Stephen Rothwell
  Cc: Linux-Next, linux-kernel, Luis R. Rodriguez, David Vrabel,
	Geert Uytterhoeven

Dne 2.7.2015 v 08:47 Geert Uytterhoeven napsal(a):
> On Thu, Jul 2, 2015 at 2:30 AM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>> Today's linux-next merge of the kbuild tree got a conflict in:
>>
>>   scripts/kconfig/Makefile
>>
>> between commits:
>>
>>   9bcd776d299e ("kconfig: clarify kvmconfig is for kvm")
>>   6c6685055a28 ("kconfig: add xenconfig defconfig helper")
>>
>> from Linus' tree and commit:
>>
>>   fa75a727c019 ("kconfig: Wrap long "make help" text lines")
>>
>> from the kbuild tree.
>>
>> I fixed it up (see below) and can carry the fix as necessary (no action
>> is required).
>>
>> --
>> Cheers,
>> Stephen Rothwell                    sfr@canb.auug.org.au
>>
>> diff --cc scripts/kconfig/Makefile
>> index f52abae0ec5f,930de225d52e..000000000000
>> --- a/scripts/kconfig/Makefile
>> +++ b/scripts/kconfig/Makefile
>> @@@ -142,9 -139,9 +143,10 @@@ help
>>         @echo  '  alldefconfig    - New config with all symbols set to default'
>>         @echo  '  randconfig      - New config with random answer to all options'
>>         @echo  '  listnewconfig   - List new options'
>> -       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their default value'
>> +       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their'
>> +       @echo  '                    default value'
>>  -      @echo  '  kvmconfig       - Enable additional options for guest kernel support'
>>  +      @echo  '  kvmconfig       - Enable additional options for kvm guest kernel support'
>>  +      @echo  '  xenconfig       - Enable additional options for xen dom0 and guest kernel support'
> 
> Doh, a new long line to be wrapped.
> 
> Michal: Shall I send a fix-up patch, or a new one against Linus' tree?

Please send one against Linus' tree, because I do not have the xenconfig
patch in the kbuild tree.

Michal

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

* Re: linux-next: manual merge of the kbuild tree with Linus' tree
  2015-07-02  0:30 Stephen Rothwell
@ 2015-07-02  6:47 ` Geert Uytterhoeven
  2015-07-02  7:17   ` Michal Marek
  0 siblings, 1 reply; 23+ messages in thread
From: Geert Uytterhoeven @ 2015-07-02  6:47 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Michal Marek, Linux-Next, linux-kernel, Luis R. Rodriguez,
	David Vrabel, Geert Uytterhoeven

On Thu, Jul 2, 2015 at 2:30 AM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> Today's linux-next merge of the kbuild tree got a conflict in:
>
>   scripts/kconfig/Makefile
>
> between commits:
>
>   9bcd776d299e ("kconfig: clarify kvmconfig is for kvm")
>   6c6685055a28 ("kconfig: add xenconfig defconfig helper")
>
> from Linus' tree and commit:
>
>   fa75a727c019 ("kconfig: Wrap long "make help" text lines")
>
> from the kbuild tree.
>
> I fixed it up (see below) and can carry the fix as necessary (no action
> is required).
>
> --
> Cheers,
> Stephen Rothwell                    sfr@canb.auug.org.au
>
> diff --cc scripts/kconfig/Makefile
> index f52abae0ec5f,930de225d52e..000000000000
> --- a/scripts/kconfig/Makefile
> +++ b/scripts/kconfig/Makefile
> @@@ -142,9 -139,9 +143,10 @@@ help
>         @echo  '  alldefconfig    - New config with all symbols set to default'
>         @echo  '  randconfig      - New config with random answer to all options'
>         @echo  '  listnewconfig   - List new options'
> -       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their default value'
> +       @echo  '  olddefconfig    - Same as silentoldconfig but sets new symbols to their'
> +       @echo  '                    default value'
>  -      @echo  '  kvmconfig       - Enable additional options for guest kernel support'
>  +      @echo  '  kvmconfig       - Enable additional options for kvm guest kernel support'
>  +      @echo  '  xenconfig       - Enable additional options for xen dom0 and guest kernel support'

Doh, a new long line to be wrapped.

Michal: Shall I send a fix-up patch, or a new one against Linus' tree?

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* linux-next: manual merge of the kbuild tree with Linus' tree
@ 2015-07-02  0:30 Stephen Rothwell
  2015-07-02  6:47 ` Geert Uytterhoeven
  0 siblings, 1 reply; 23+ messages in thread
From: Stephen Rothwell @ 2015-07-02  0:30 UTC (permalink / raw)
  To: Michal Marek
  Cc: linux-next, linux-kernel, Luis R. Rodriguez, David Vrabel,
	Geert Uytterhoeven

[-- Attachment #1: Type: text/plain, Size: 1505 bytes --]

Hi Michal,

Today's linux-next merge of the kbuild tree got a conflict in:

  scripts/kconfig/Makefile

between commits:

  9bcd776d299e ("kconfig: clarify kvmconfig is for kvm")
  6c6685055a28 ("kconfig: add xenconfig defconfig helper")

from Linus' tree and commit:

  fa75a727c019 ("kconfig: Wrap long "make help" text lines")

from the kbuild tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc scripts/kconfig/Makefile
index f52abae0ec5f,930de225d52e..000000000000
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@@ -142,9 -139,9 +143,10 @@@ help
  	@echo  '  alldefconfig    - New config with all symbols set to default'
  	@echo  '  randconfig	  - New config with random answer to all options'
  	@echo  '  listnewconfig   - List new options'
- 	@echo  '  olddefconfig	  - Same as silentoldconfig but sets new symbols to their default value'
+ 	@echo  '  olddefconfig	  - Same as silentoldconfig but sets new symbols to their'
+ 	@echo  '                    default value'
 -	@echo  '  kvmconfig	  - Enable additional options for guest kernel support'
 +	@echo  '  kvmconfig	  - Enable additional options for kvm guest kernel support'
 +	@echo  '  xenconfig       - Enable additional options for xen dom0 and guest kernel support'
  	@echo  '  tinyconfig	  - Configure the tiniest possible kernel'
  
  # lxdialog stuff

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

end of thread, other threads:[~2022-10-06 22:25 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-01 22:46 linux-next: manual merge of the kbuild tree with Linus' tree Stephen Rothwell
  -- strict thread matches above, loose matches on Subject: below --
2022-10-06 18:16 Stephen Rothwell
2022-05-27  0:08 Stephen Rothwell
2022-04-03 22:09 Stephen Rothwell
2021-04-26 23:02 Stephen Rothwell
2021-02-22 22:24 Stephen Rothwell
2020-06-04 22:59 Stephen Rothwell
2017-05-02 22:14 Stephen Rothwell
2016-09-12  1:32 Stephen Rothwell
2016-09-12  2:53 ` Nicholas Piggin
2016-09-12  9:03   ` Michal Marek
2016-09-12 23:39     ` Stephen Rothwell
2016-09-13  4:02       ` Stephen Rothwell
2016-09-13  4:09         ` Nicholas Piggin
2016-09-13  7:48         ` Arnd Bergmann
2016-09-13  9:12           ` Nicholas Piggin
2016-07-28  1:50 Stephen Rothwell
2015-07-02  0:30 Stephen Rothwell
2015-07-02  6:47 ` Geert Uytterhoeven
2015-07-02  7:17   ` Michal Marek
2015-07-02  9:18     ` Geert Uytterhoeven
2015-07-02 19:53       ` Michal Marek
2015-07-03 11:56         ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).