# git rev-parse -q --verify bf9aa14fc523d2763fc9a10672a709224e8fcaf4^{commit} bf9aa14fc523d2763fc9a10672a709224e8fcaf4 already have revision, skipping fetch # git checkout -q -f -B kisskb bf9aa14fc523d2763fc9a10672a709224e8fcaf4 # git clean -qxdf # < git log -1 # commit bf9aa14fc523d2763fc9a10672a709224e8fcaf4 # Merge: 035238752319 cdc905d16b07 # Author: Linus Torvalds # Date: Tue Nov 19 16:35:06 2024 -0800 # # Merge tag 'timers-core-2024-11-18' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip # # Pull timer updates from Thomas Gleixner: # "A rather large update for timekeeping and timers: # # - The final step to get rid of auto-rearming posix-timers # # posix-timers are currently auto-rearmed by the kernel when the # signal of the timer is ignored so that the timer signal can be # delivered once the corresponding signal is unignored. # # This requires to throttle the timer to prevent a DoS by small # intervals and keeps the system pointlessly out of low power states # for no value. This is a long standing non-trivial problem due to # the lock order of posix-timer lock and the sighand lock along with # life time issues as the timer and the sigqueue have different life # time rules. # # Cure this by: # # - Embedding the sigqueue into the timer struct to have the same # life time rules. Aside of that this also avoids the lookup of # the timer in the signal delivery and rearm path as it's just a # always valid container_of() now. # # - Queuing ignored timer signals onto a seperate ignored list. # # - Moving queued timer signals onto the ignored list when the # signal is switched to SIG_IGN before it could be delivered. # # - Walking the ignored list when SIG_IGN is lifted and requeue the # signals to the actual signal lists. This allows the signal # delivery code to rearm the timer. # # This also required to consolidate the signal delivery rules so they # are consistent across all situations. With that all self test # scenarios finally succeed. # # - Core infrastructure for VFS multigrain timestamping # # This is required to allow the kernel to use coarse grained time # stamps by default and switch to fine grained time stamps when inode # attributes are actively observed via getattr(). # # These changes have been provided to the VFS tree as well, so that # the VFS specific infrastructure could be built on top. # # - Cleanup and consolidation of the sleep() infrastructure # # - Move all sleep and timeout functions into one file # # - Rework udelay() and ndelay() into proper documented inline # functions and replace the hardcoded magic numbers by proper # defines. # # - Rework the fsleep() implementation to take the reality of the # timer wheel granularity on different HZ values into account. # Right now the boundaries are hard coded time ranges which fail # to provide the requested accuracy on different HZ settings. # # - Update documentation for all sleep/timeout related functions # and fix up stale documentation links all over the place # # - Fixup a few usage sites # # - Rework of timekeeping and adjtimex(2) to prepare for multiple PTP # clocks # # A system can have multiple PTP clocks which are participating in # seperate and independent PTP clock domains. So far the kernel only # considers the PTP clock which is based on CLOCK TAI relevant as # that's the clock which drives the timekeeping adjustments via the # various user space daemons through adjtimex(2). # # The non TAI based clock domains are accessible via the file # descriptor based posix clocks, but their usability is very limited. # They can't be accessed fast as they always go all the way out to # the hardware and they cannot be utilized in the kernel itself. # # As Time Sensitive Networking (TSN) gains traction it is required to # provide fast user and kernel space access to these clocks. # # The approach taken is to utilize the timekeeping and adjtimex(2) # infrastructure to provide this access in a similar way how the # kernel provides access to clock MONOTONIC, REALTIME etc. # # Instead of creating a duplicated infrastructure this rework # converts timekeeping and adjtimex(2) into generic functionality # which operates on pointers to data structures instead of using # static variables. # # This allows to provide time accessors and adjtimex(2) functionality # for the independent PTP clocks in a subsequent step. # # - Consolidate hrtimer initialization # # hrtimers are set up by initializing the data structure and then # seperately setting the callback function for historical reasons. # # That's an extra unnecessary step and makes Rust support less # straight forward than it should be. # # Provide a new set of hrtimer_setup*() functions and convert the # core code and a few usage sites of the less frequently used # interfaces over. # # The bulk of the htimer_init() to hrtimer_setup() conversion is # already prepared and scheduled for the next merge window. # # - Drivers: # # - Ensure that the global timekeeping clocksource is utilizing the # cluster 0 timer on MIPS multi-cluster systems. # # Otherwise CPUs on different clusters use their cluster specific # clocksource which is not guaranteed to be synchronized with # other clusters. # # - Mostly boring cleanups, fixes, improvements and code movement" # # * tag 'timers-core-2024-11-18' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (140 commits) # posix-timers: Fix spurious warning on double enqueue versus do_exit() # clocksource/drivers/arm_arch_timer: Use of_property_present() for non-boolean properties # clocksource/drivers/gpx: Remove redundant casts # clocksource/drivers/timer-ti-dm: Fix child node refcount handling # dt-bindings: timer: actions,owl-timer: convert to YAML # clocksource/drivers/ralink: Add Ralink System Tick Counter driver # clocksource/drivers/mips-gic-timer: Always use cluster 0 counter as clocksource # clocksource/drivers/timer-ti-dm: Don't fail probe if int not found # clocksource/drivers:sp804: Make user selectable # clocksource/drivers/dw_apb: Remove unused dw_apb_clockevent functions # hrtimers: Delete hrtimer_init_on_stack() # alarmtimer: Switch to use hrtimer_setup() and hrtimer_setup_on_stack() # io_uring: Switch to use hrtimer_setup_on_stack() # sched/idle: Switch to use hrtimer_setup_on_stack() # hrtimers: Delete hrtimer_init_sleeper_on_stack() # wait: Switch to use hrtimer_setup_sleeper_on_stack() # timers: Switch to use hrtimer_setup_sleeper_on_stack() # net: pktgen: Switch to use hrtimer_setup_sleeper_on_stack() # futex: Switch to use hrtimer_setup_sleeper_on_stack() # fs/aio: Switch to use hrtimer_setup_sleeper_on_stack() # ... # < /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sh4-linux/bin/sh4-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sh4-linux/bin/sh4-linux-ld --version # < git log --format=%s --max-count=1 bf9aa14fc523d2763fc9a10672a709224e8fcaf4 # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sh4-linux/bin/sh4-linux- allyesconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # < make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sh4-linux/bin/sh4-linux- help # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sh4-linux/bin/sh4-linux- olddefconfig # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sh4-linux/bin/sh4-linux- Generating include/generated/machtypes.h :1519:2: warning: #warning syscall clone3 not implemented [-Wcpp] /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S: Assembler messages: /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:85: Warning: overflow in branch to __restore_all; converted into longer instruction sequence /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:357: Warning: overflow in branch to syscall_exit_work; converted into longer instruction sequence /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:360: Warning: overflow in branch to syscall_exit_work; converted into longer instruction sequence /kisskb/src/kernel/fork.c: In function '__do_sys_clone3': /kisskb/src/kernel/fork.c:3078:2: error: #warning clone3() entry point is missing, please fix [-Werror=cpp] 3078 | #warning clone3() entry point is missing, please fix | ^~~~~~~ cc1: all warnings being treated as errors make[4]: *** [/kisskb/src/scripts/Makefile.build:229: kernel/fork.o] Error 1 make[4]: *** Waiting for unfinished jobs.... make[3]: *** [/kisskb/src/scripts/Makefile.build:478: kernel] Error 2 make[3]: *** Waiting for unfinished jobs.... {standard input}: Assembler messages: {standard input}: Warning: end of file not at end of a line; newline inserted {standard input}:1111: Error: unknown pseudo-op: `.l18' {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive {standard input}:1070: Error: displacement to undefined symbol .L142 overflows 8-bit field {standard input}:1075: Error: displacement to undefined symbol .L161 overflows 8-bit field {standard input}:1059: Error: pcrel too far {standard input}:1060: Error: pcrel too far {standard input}:1061: Error: pcrel too far sh4-linux-gcc: internal compiler error: Segmentation fault signal terminated program cc1 Please submit a full bug report, with preprocessed source (by using -freport-bug). See for instructions. make[6]: *** [/kisskb/src/scripts/Makefile.build:229: drivers/net/pcs/pcs-xpcs.o] Error 4 make[5]: *** [/kisskb/src/scripts/Makefile.build:478: drivers/net/pcs] Error 2 make[5]: *** Waiting for unfinished jobs.... {standard input}: Assembler messages: {standard input}: Warning: end of file not at end of a line; newline inserted {standard input}: Error: .size expression for mp2975_driver_exit does not evaluate to a constant sh4-linux-gcc: internal compiler error: Segmentation fault signal terminated program cc1 Please submit a full bug report, with preprocessed source (by using -freport-bug). See for instructions. make[6]: *** [/kisskb/src/scripts/Makefile.build:229: drivers/hwmon/pmbus/mp2975.o] Error 4 make[6]: *** Waiting for unfinished jobs.... make[5]: *** [/kisskb/src/scripts/Makefile.build:478: drivers/hwmon/pmbus] Error 2 make[5]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:478: drivers/hwmon] Error 2 make[4]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:478: drivers/net] Error 2 make[3]: *** [/kisskb/src/scripts/Makefile.build:478: drivers] Error 2 make[2]: *** [/kisskb/src/Makefile:1936: .] Error 2 make[1]: *** [/kisskb/src/Makefile:224: __sub-make] Error 2 make: *** [Makefile:224: __sub-make] Error 2 Command 'make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sh4-linux/bin/sh4-linux- ' returned non-zero exit status 2. # rm -rf /kisskb/build/linus_allyesconfig_sh4-gcc13 # Build took: 0:04:42.825265