# git rev-parse -q --verify 4da9af0014b51c8b015ed8c622440ef28912efe6^{commit} # git fetch -q -n -f git://fs.ozlabs.ibm.com/kernel/linus master # git rev-parse -q --verify 4da9af0014b51c8b015ed8c622440ef28912efe6^{commit} 4da9af0014b51c8b015ed8c622440ef28912efe6 # git checkout -q -f -B kisskb 4da9af0014b51c8b015ed8c622440ef28912efe6 # git clean -qxdf # < git log -1 # commit 4da9af0014b51c8b015ed8c622440ef28912efe6 # Merge: 612e7a4c1645 01361b665a26 # Author: Linus Torvalds # Date: Wed Oct 14 14:39:20 2020 -0700 # # Merge tag 'threads-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux # # Pull pidfd updates from Christian Brauner: # "This introduces a new extension to the pidfd_open() syscall. Users can # now raise the new PIDFD_NONBLOCK flag to support non-blocking pidfd # file descriptors. This has been requested for uses in async process # management libraries such as async-pidfd in Rust. # # Ever since the introduction of pidfds and more advanced async io # various programming languages such as Rust have grown support for # async event libraries. These libraries are created to help build # epoll-based event loops around file descriptors. A common pattern is # to automatically make all file descriptors they manage to O_NONBLOCK. # # For such libraries the EAGAIN error code is treated specially. When a # function is called that returns EAGAIN the function isn't called again # until the event loop indicates the the file descriptor is ready. # Supporting EAGAIN when waiting on pidfds makes such libraries just # work with little effort. # # This introduces a new flag PIDFD_NONBLOCK that is equivalent to # O_NONBLOCK. This follows the same patterns we have for other (anon # inode) file descriptors such as EFD_NONBLOCK, IN_NONBLOCK, # SFD_NONBLOCK, TFD_NONBLOCK and the same for close-on-exec flags. # # Passing a non-blocking pidfd to waitid() currently has no effect, i.e. # is not supported. There are users which would like to use waitid() on # pidfds that are O_NONBLOCK and mix it with pidfds that are blocking # and both pass them to waitid(). # # The expected behavior is to have waitid() return -EAGAIN for # non-blocking pidfds and to block for blocking pidfds without needing # to perform any additional checks for flags set on the pidfd before # passing it to waitid(). Non-blocking pidfds will return EAGAIN from # waitid() when no child process is ready yet. Returning -EAGAIN for # non-blocking pidfds makes it easier for event loops that handle EAGAIN # specially. # # It also makes the API more consistent and uniform. In essence, # waitid() is treated like a read on a non-blocking pidfd or a recvmsg() # on a non-blocking socket. # # With the addition of support for non-blocking pidfds we support the # same functionality that sockets do. For sockets() recvmsg() supports # MSG_DONTWAIT for pidfds waitid() supports WNOHANG. Both flags are # per-call options. In contrast non-blocking pidfds and non-blocking # sockets are a setting on an open file description affecting all # threads in the calling process as well as other processes that hold # file descriptors referring to the same open file description. Both # behaviors, per call and per open file description, have genuine # use-cases. # # The interaction with the WNOHANG flag is documented as follows: # # - If a non-blocking pidfd is passed and WNOHANG is not raised we # simply raise the WNOHANG flag internally. When do_wait() returns # indicating that there are eligible child processes but none have # exited yet we set EAGAIN. If no child process exists we continue # returning ECHILD. # # - If a non-blocking pidfd is passed and WNOHANG is raised waitid() # will continue returning 0, i.e. it will not set EAGAIN. This ensure # backwards compatibility with applications passing WNOHANG # explicitly with pidfds" # # * tag 'threads-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux: # tests: remove O_NONBLOCK before waiting for WSTOPPED # tests: add waitid() tests for non-blocking pidfds # tests: port pidfd_wait to kselftest harness # pidfd: support PIDFD_NONBLOCK in pidfd_open() # exit: support non-blocking pidfds # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 4da9af0014b51c8b015ed8c622440ef28912efe6 # < make -s -j 10 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- randconfig KCONFIG_SEED=0xD8BA67A2 # Added to kconfig CONFIG_STANDALONE=y # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_CPU_BIG_ENDIAN=y # Added to kconfig CONFIG_PPC64=y # Added to kconfig CONFIG_PPC_DISABLE_WERROR=y # Added to kconfig CONFIG_SECTION_MISMATCH_WARN_ONLY=y # Added to kconfig CONFIG_PREVENT_FIRMWARE_BUILD=y # Added to kconfig CONFIG_CC_STACKPROTECTOR_STRONG=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig CONFIG_LD_HEAD_STUB_CATCH=y # Added to kconfig CONFIG_TRIM_UNUSED_KSYMS=n # Added to kconfig CONFIG_UBSAN=n # < make -s -j 10 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 10 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig .config:5061:warning: override: reassigning to symbol STANDALONE .config:5065:warning: override: reassigning to symbol PPC64 .config:5066:warning: override: reassigning to symbol PPC_DISABLE_WERROR WARNING: unmet direct dependencies detected for HOTPLUG_PCI_POWERNV Depends on [n]: PCI [=y] && HOTPLUG_PCI [=n] && PPC_POWERNV [=y] && EEH [=y] Selected by [y]: - OCXL [=y] && PPC_POWERNV [=y] && PCI [=y] && EEH [=y] # make -s -j 10 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- WARNING: unmet direct dependencies detected for HOTPLUG_PCI_POWERNV Depends on [n]: PCI [=y] && HOTPLUG_PCI [=n] && PPC_POWERNV [=y] && EEH [=y] Selected by [y]: - OCXL [=y] && PPC_POWERNV [=y] && PCI [=y] && EEH [=y] WARNING: unmet direct dependencies detected for HOTPLUG_PCI_POWERNV Depends on [n]: PCI [=y] && HOTPLUG_PCI [=n] && PPC_POWERNV [=y] && EEH [=y] Selected by [y]: - OCXL [=y] && PPC_POWERNV [=y] && PCI [=y] && EEH [=y] WARNING: unmet direct dependencies detected for HOTPLUG_PCI_POWERNV Depends on [n]: PCI [=y] && HOTPLUG_PCI [=n] && PPC_POWERNV [=y] && EEH [=y] Selected by [y]: - OCXL [=y] && PPC_POWERNV [=y] && PCI [=y] && EEH [=y] /kisskb/src/arch/powerpc/kernel/eeh.c:1639:12: warning: 'proc_eeh_show' defined but not used [-Wunused-function] static int proc_eeh_show(struct seq_file *m, void *v) ^ /kisskb/src/net/smc/smc_llc.c: In function 'smc_llc_add_link_local': /kisskb/src/net/smc/smc_llc.c:1212:9: warning: missing braces around initializer [-Wmissing-braces] struct smc_llc_msg_add_link add_llc = {0}; ^ /kisskb/src/net/smc/smc_llc.c:1212:9: warning: (near initialization for 'add_llc.hd') [-Wmissing-braces] /kisskb/src/net/smc/smc_llc.c: In function 'smc_llc_srv_delete_link_local': /kisskb/src/net/smc/smc_llc.c:1245:9: warning: missing braces around initializer [-Wmissing-braces] struct smc_llc_msg_del_link del_llc = {0}; ^ /kisskb/src/net/smc/smc_llc.c:1245:9: warning: (near initialization for 'del_llc.hd') [-Wmissing-braces] /kisskb/src/net/smc/smc_llc.c: In function 'smc_llc_send_link_delete_all': /kisskb/src/net/smc/smc_llc.c:1317:9: warning: missing braces around initializer [-Wmissing-braces] struct smc_llc_msg_del_link delllc = {0}; ^ /kisskb/src/net/smc/smc_llc.c:1317:9: warning: (near initialization for 'delllc.hd') [-Wmissing-braces] /kisskb/src/drivers/cpufreq/powernv-cpufreq.c: In function 'powernv_cpufreq_reboot_notifier': /kisskb/src/drivers/cpufreq/powernv-cpufreq.c:897:1: warning: the frame size of 1184 bytes is larger than 1024 bytes [-Wframe-larger-than=] } ^ Completed OK # rm -rf /kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc4.9 # Build took: 0:08:42.738780