linux/arch/arm
Linus Torvalds 9ba27414f2 fork-v5.9
-----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCXyge/QAKCRCRxhvAZXjc
 oildAQCCWpnTeXm6hrIE3VZ36X5npFtbaEthdBVAUJM7mo0FYwEA8+Wbnubg6jCw
 mztkXCnTfU7tApUdhKtQzcpEws45/Qk=
 =REE/
 -----END PGP SIGNATURE-----

Merge tag 'fork-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux

Pull fork cleanups from Christian Brauner:
 "This is cleanup series from when we reworked a chunk of the process
  creation paths in the kernel and switched to struct
  {kernel_}clone_args.

  High-level this does two main things:

   - Remove the double export of both do_fork() and _do_fork() where
     do_fork() used the incosistent legacy clone calling convention.

     Now we only export _do_fork() which is based on struct
     kernel_clone_args.

   - Remove the copy_thread_tls()/copy_thread() split making the
     architecture specific HAVE_COYP_THREAD_TLS config option obsolete.

  This switches all remaining architectures to select
  HAVE_COPY_THREAD_TLS and thus to the copy_thread_tls() calling
  convention. The current split makes the process creation codepaths
  more convoluted than they need to be. Each architecture has their own
  copy_thread() function unless it selects HAVE_COPY_THREAD_TLS then it
  has a copy_thread_tls() function.

  The split is not needed anymore nowadays, all architectures support
  CLONE_SETTLS but quite a few of them never bothered to select
  HAVE_COPY_THREAD_TLS and instead simply continued to use copy_thread()
  and use the old calling convention. Removing this split cleans up the
  process creation codepaths and paves the way for implementing clone3()
  on such architectures since it requires the copy_thread_tls() calling
  convention.

  After having made each architectures support copy_thread_tls() this
  series simply renames that function back to copy_thread(). It also
  switches all architectures that call do_fork() directly over to
  _do_fork() and the struct kernel_clone_args calling convention. This
  is a corollary of switching the architectures that did not yet support
  it over to copy_thread_tls() since do_fork() is conditional on not
  supporting copy_thread_tls() (Mostly because it lacks a separate
  argument for tls which is trivial to fix but there's no need for this
  function to exist.).

  The do_fork() removal is in itself already useful as it allows to to
  remove the export of both do_fork() and _do_fork() we currently have
  in favor of only _do_fork(). This has already been discussed back when
  we added clone3(). The legacy clone() calling convention is - as is
  probably well-known - somewhat odd:

    #
    # ABI hall of shame
    #
    config CLONE_BACKWARDS
    config CLONE_BACKWARDS2
    config CLONE_BACKWARDS3

  that is aggravated by the fact that some architectures such as sparc
  follow the CLONE_BACKWARDSx calling convention but don't really select
  the corresponding config option since they call do_fork() directly.

  So do_fork() enforces a somewhat arbitrary calling convention in the
  first place that doesn't really help the individual architectures that
  deviate from it. They can thus simply be switched to _do_fork()
  enforcing a single calling convention. (I really hope that any new
  architectures will __not__ try to implement their own calling
  conventions...)

  Most architectures already have made a similar switch (m68k comes to
  mind).

  Overall this removes more code than it adds even with a good portion
  of added comments. It simplifies a chunk of arch specific assembly
  either by moving the code into C or by simply rewriting the assembly.

  Architectures that have been touched in non-trivial ways have all been
  actually boot and stress tested: sparc and ia64 have been tested with
  Debian 9 images. They are the two architectures which have been
  touched the most. All non-trivial changes to architectures have seen
  acks from the relevant maintainers. nios2 with a custom built
  buildroot image. h8300 I couldn't get something bootable to test on
  but the changes have been fairly automatic and I'm sure we'll hear
  people yell if I broke something there.

  All other architectures that have been touched in trivial ways have
  been compile tested for each single patch of the series via git rebase
  -x "make ..." v5.8-rc2. arm{64} and x86{_64} have been boot tested
  even though they have just been trivially touched (removal of the
  HAVE_COPY_THREAD_TLS macro from their Kconfig) because well they are
  basically "core architectures" and since it is trivial to get your
  hands on a useable image"

* tag 'fork-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
  arch: rename copy_thread_tls() back to copy_thread()
  arch: remove HAVE_COPY_THREAD_TLS
  unicore: switch to copy_thread_tls()
  sh: switch to copy_thread_tls()
  nds32: switch to copy_thread_tls()
  microblaze: switch to copy_thread_tls()
  hexagon: switch to copy_thread_tls()
  c6x: switch to copy_thread_tls()
  alpha: switch to copy_thread_tls()
  fork: remove do_fork()
  h8300: select HAVE_COPY_THREAD_TLS, switch to kernel_clone_args
  nios2: enable HAVE_COPY_THREAD_TLS, switch to kernel_clone_args
  ia64: enable HAVE_COPY_THREAD_TLS, switch to kernel_clone_args
  sparc: unconditionally enable HAVE_COPY_THREAD_TLS
  sparc: share process creation helpers between sparc and sparc64
  sparc64: enable HAVE_COPY_THREAD_TLS
  fork: fold legacy_clone_args_valid() into _do_fork()
2020-08-04 14:47:45 -07:00
..
boot ARM: new SoC support for v5.9 2020-08-03 19:38:30 -07:00
common
configs AT91 defconfig for 5.9 2020-07-27 14:35:28 +02:00
crypto crypto: Replace HTTP links with HTTPS ones 2020-07-23 17:34:20 +10:00
include The main changes in this cycle were: 2020-08-03 14:58:38 -07:00
kernel fork-v5.9 2020-08-04 14:47:45 -07:00
lib mmap locking API: use coccinelle to convert mmap_sem rwsem call sites 2020-06-09 09:39:14 -07:00
mach-actions ARM: actions: Drop unneeded select of COMMON_CLK 2020-05-15 23:27:37 +02:00
mach-alpine ARM: alpine: Drop unneeded select of HAVE_SMP 2020-05-15 23:27:37 +02:00
mach-artpec
mach-asm9260 ARM: asm9260: Drop unneeded select of GENERIC_CLOCKEVENTS 2020-05-15 23:27:37 +02:00
mach-aspeed ARM: aspeed: Drop unneeded select of HAVE_SMP 2020-05-15 23:27:37 +02:00
mach-at91 ARM: at91: Replace HTTP links with HTTPS ones 2020-07-18 00:59:26 +02:00
mach-axxia
mach-bcm ARM: bcm: Select ARM_TIMER_SP804 for ARCH_BCM_NSP 2020-06-14 15:09:49 -07:00
mach-berlin ARM: berlin: Drop unneeded select of HAVE_SMP 2020-05-15 23:27:37 +02:00
mach-clps711x ARM: clps711x: Drop unneeded select of multi-platform selected options 2020-05-15 23:27:37 +02:00
mach-cns3xxx ARM: cns3xxx: replace setup_irq() by request_irq() 2020-03-27 14:11:47 +01:00
mach-davinci ARM: davinci: dm646x-evm: Simplify error handling in 'evm_sw_setup()' 2020-07-22 00:34:21 +05:30
mach-digicolor
mach-dove
mach-ebsa110 mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
mach-efm32
mach-ep93xx ARM: ep93xx: Replace setup_irq() by request_irq() 2020-03-27 14:11:42 +01:00
mach-exynos ARM: SoC driver updates for v5.9 2020-08-03 19:30:59 -07:00
mach-footbridge treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
mach-gemini
mach-highbank
mach-hisi
mach-imx Merge remote-tracking branch 'spi/for-5.9' into spi-next 2020-07-29 14:52:00 +01:00
mach-integrator mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
mach-iop32x mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
mach-ixp4xx mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
mach-keystone mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
mach-lpc18xx
mach-lpc32xx
mach-mediatek ARM: mediatek: Replace <linux/clk-provider.h> by <linux/of_clk.h> 2020-05-15 22:55:06 +02:00
mach-meson
mach-milbeaut
mach-mmp This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
mach-moxart
mach-mstar ARM: mstar: Add machine for MStar/Sigmastar Armv7 SoCs 2020-07-28 11:13:49 +02:00
mach-mv78xx0
mach-mvebu ARM: mvebu: Drop unneeded select of HAVE_SMP 2020-05-15 23:27:38 +02:00
mach-mxs
mach-nomadik
mach-npcm
mach-nspire
mach-omap1 ARM: OMAP: Replace HTTP links with HTTPS ones 2020-07-13 11:37:54 -07:00
mach-omap2 ARM: SoC driver updates for v5.9 2020-08-03 19:30:59 -07:00
mach-orion5x
mach-oxnas ARM: oxnas: make ox820_boot_secondary static 2020-05-12 10:29:33 +02:00
mach-picoxcell
mach-prima2 ARM: prima2: Drop unneeded select of HAVE_SMP 2020-05-15 23:27:38 +02:00
mach-pxa ARM: pxa: remove Compulab pxa2xx boards 2020-05-26 00:10:57 +02:00
mach-qcom ARM: qcom: Add support for IPQ40xx 2020-03-31 21:03:27 +02:00
mach-rda
mach-realtek ARM: Prepare Realtek RTD1195 2020-04-12 23:13:38 +02:00
mach-realview VExpress modularization 2020-05-15 23:04:40 +02:00
mach-rockchip ARM: rockchip: fix spelling mistake "to" -> "too" 2020-04-13 09:40:45 +02:00
mach-rpc ARM: rpc: Change blacklist to quirklist in ecode.c file 2020-07-17 16:08:48 +02:00
mach-s3c24xx ARM: s3c24xx: Replace HTTP links with HTTPS ones 2020-07-20 16:42:28 +02:00
mach-s3c64xx ARM: s3c64xx: convert to use i2c_new_client_device() 2020-04-13 12:28:23 +02:00
mach-s5pv210
mach-sa1100 treewide: Remove uninitialized_var() usage 2020-07-16 12:35:15 -07:00
mach-shmobile ARM: shmobile: r8a7742: Basic SoC support 2020-04-28 10:13:58 +02:00
mach-socfpga ARM: socfpga: PM: add missing put_device() call in socfpga_setup_ocram_self_refresh() 2020-07-28 13:57:36 -05:00
mach-spear ARM: spear: replace setup_irq() by request_irq() 2020-03-27 14:11:45 +01:00
mach-sti Revert "ARM: sti: Implement dummy L2 cache's write_sec" 2020-06-28 14:46:54 +02:00
mach-stm32
mach-sunxi
mach-tango
mach-tegra mm: introduce include/linux/pgtable.h 2020-06-09 09:39:13 -07:00
mach-u300
mach-uniphier
mach-ux500
mach-versatile VExpress modularization 2020-05-15 23:04:40 +02:00
mach-vexpress Revert "ARM: vexpress: Don't select VEXPRESS_CONFIG" 2020-05-28 12:30:33 +02:00
mach-vt8500 ARM: Remove redundant CLKDEV_LOOKUP selects 2020-05-05 12:33:57 -07:00
mach-zx
mach-zynq mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
mm Remove uninitialized_var() macro for v5.9-rc1 2020-08-04 13:49:43 -07:00
net bpf, arm: Optimize ALU ARSH K using asr immediate instruction 2020-05-04 17:04:42 +02:00
nwfpe
oprofile
plat-omap ARM: OMAP: Replace HTTP links with HTTPS ones 2020-07-13 11:37:54 -07:00
plat-orion ARM: orion/gpio: Make use of for_each_requested_gpio() 2020-07-18 22:49:23 +02:00
plat-pxa
plat-samsung ARM: samsung: Use devm_platform_ioremap_resource() to simplify code 2020-04-21 11:35:00 +02:00
plat-versatile ARM: versatile: Remove dead sched_clock code 2020-04-16 13:02:17 +02:00
probes
tools vfs: add faccessat2 syscall 2020-05-14 16:44:25 +02:00
vdso ARM: vdso: Don't use gcc plugins for building vgettimeofday.c 2020-06-24 07:48:27 -07:00
vfp
xen arm/xen: remove the unused macro GRANT_TABLE_PHYSADDR 2020-06-29 16:16:06 -07:00
Kconfig fork-v5.9 2020-08-04 14:47:45 -07:00
Kconfig-nommu
Kconfig.debug treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile ARM: mstar: Add machine for MStar/Sigmastar Armv7 SoCs 2020-07-28 11:13:49 +02:00