# git gc Expanding reachable commits in commit graph: 55067 Expanding reachable commits in commit graph: 113940 Expanding reachable commits in commit graph: 173610 Expanding reachable commits in commit graph: 234816 Expanding reachable commits in commit graph: 295535 Expanding reachable commits in commit graph: 358316 Expanding reachable commits in commit graph: 421630 Expanding reachable commits in commit graph: 485096 Expanding reachable commits in commit graph: 545996 Expanding reachable commits in commit graph: 610844 Expanding reachable commits in commit graph: 675663 Expanding reachable commits in commit graph: 740439 Expanding reachable commits in commit graph: 805522 Expanding reachable commits in commit graph: 870933 Expanding reachable commits in commit graph: 936272 Expanding reachable commits in commit graph: 1001255 Expanding reachable commits in commit graph: 1059604 Expanding reachable commits in commit graph: 1126178 Expanding reachable commits in commit graph: 1196178 Expanding reachable commits in commit graph: 1244211, done. Writing out commit graph in 4 passes: 56% (2798152/4976844) Writing out commit graph in 4 passes: 57% (2836802/4976844) Writing out commit graph in 4 passes: 58% (2886570/4976844) Writing out commit graph in 4 passes: 59% (2936338/4976844) Writing out commit graph in 4 passes: 60% (2986107/4976844) Writing out commit graph in 4 passes: 61% (3035875/4976844) Writing out commit graph in 4 passes: 62% (3085644/4976844) Writing out commit graph in 4 passes: 63% (3135412/4976844) Writing out commit graph in 4 passes: 63% (3182610/4976844) Writing out commit graph in 4 passes: 64% (3185181/4976844) Writing out commit graph in 4 passes: 65% (3234949/4976844) Writing out commit graph in 4 passes: 66% (3284718/4976844) Writing out commit graph in 4 passes: 66% (3325878/4976844) Writing out commit graph in 4 passes: 67% (3334486/4976844) Writing out commit graph in 4 passes: 68% (3384254/4976844) Writing out commit graph in 4 passes: 69% (3434023/4976844) Writing out commit graph in 4 passes: 70% (3483791/4976844) Writing out commit graph in 4 passes: 70% (3499883/4976844) Writing out commit graph in 4 passes: 71% (3533560/4976844) Writing out commit graph in 4 passes: 72% (3583328/4976844) Writing out commit graph in 4 passes: 73% (3633097/4976844) Writing out commit graph in 4 passes: 73% (3665997/4976844) Writing out commit graph in 4 passes: 74% (3682865/4976844) Writing out commit graph in 4 passes: 75% (3732633/4976844) Writing out commit graph in 4 passes: 76% (3782402/4976844) Writing out commit graph in 4 passes: 77% (3832170/4976844) Writing out commit graph in 4 passes: 78% (3881939/4976844) Writing out commit graph in 4 passes: 79% (3931707/4976844) Writing out commit graph in 4 passes: 80% (3981476/4976844) Writing out commit graph in 4 passes: 81% (4031244/4976844) Writing out commit graph in 4 passes: 82% (4081013/4976844) Writing out commit graph in 4 passes: 83% (4130781/4976844) Writing out commit graph in 4 passes: 84% (4180549/4976844) Writing out commit graph in 4 passes: 85% (4230318/4976844) Writing out commit graph in 4 passes: 86% (4280086/4976844) Writing out commit graph in 4 passes: 87% (4329855/4976844) Writing out commit graph in 4 passes: 88% (4379623/4976844) Writing out commit graph in 4 passes: 89% (4429392/4976844) Writing out commit graph in 4 passes: 90% (4479160/4976844) Writing out commit graph in 4 passes: 91% (4528929/4976844) Writing out commit graph in 4 passes: 92% (4578697/4976844) Writing out commit graph in 4 passes: 93% (4628465/4976844) Writing out commit graph in 4 passes: 94% (4678234/4976844) Writing out commit graph in 4 passes: 95% (4728002/4976844) Writing out commit graph in 4 passes: 96% (4777771/4976844) Writing out commit graph in 4 passes: 97% (4827539/4976844) Writing out commit graph in 4 passes: 98% (4877308/4976844) Writing out commit graph in 4 passes: 99% (4927076/4976844) Writing out commit graph in 4 passes: 100% (4976844/4976844) Writing out commit graph in 4 passes: 100% (4976844/4976844), done. # git rev-parse -q --verify 55cb5f43689d7a9ea5bf35ef050f12334f197347^{commit} # git fetch -q -n -f git://fs.ozlabs.ibm.com/kernel/linus master # git rev-parse -q --verify 55cb5f43689d7a9ea5bf35ef050f12334f197347^{commit} 55cb5f43689d7a9ea5bf35ef050f12334f197347 # git checkout -q -f -B kisskb 55cb5f43689d7a9ea5bf35ef050f12334f197347 # git clean -qxdf # < git log -1 # commit 55cb5f43689d7a9ea5bf35ef050f12334f197347 # Merge: 9c749e61a110 b803d7c664d5 # Author: Linus Torvalds # Date: Tue Dec 19 12:25:43 2023 -0800 # # Merge tag 'trace-v6.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace # # Pull tracing fix from Steven Rostedt: # "While working on the ring buffer, I found one more bug with the # timestamp code, and the fix for this removed the need for the final # 64-bit cmpxchg! # # The ring buffer events hold a "delta" from the previous event. If it # is determined that the delta can not be calculated, it falls back to # adding an absolute timestamp value. The way to know if the delta can # be used is via two stored timestamps in the per-cpu buffer meta data: # # before_stamp and write_stamp # # The before_stamp is written by every event before it tries to allocate # its space on the ring buffer. The write_stamp is written after it # allocates its space and knows that nothing came in after it read the # previous before_stamp and write_stamp and the two matched. # # A previous fix dd9394257078 ("ring-buffer: Do not try to put back # write_stamp") removed putting back the write_stamp to match the # before_stamp so that the next event could use the delta, but races # were found where the two would match, but not be for of the previous # event. # # It was determined to allow the event reservation to not have a valid # write_stamp when it is finished, and this fixed a lot of races. # # The last use of the 64-bit timestamp cmpxchg depended on the # write_stamp being valid after an interruption. But this is no longer # the case, as if an event is interrupted by a softirq that writes an # event, and that event gets interrupted by a hardirq or NMI and that # writes an event, then the softirq could finish its reservation without # a valid write_stamp. # # In the slow path of the event reservation, a delta can still be used # if the write_stamp is valid. Instead of using a cmpxchg against the # write stamp, the before_stamp needs to be read again to validate the # write_stamp. The cmpxchg is not needed. # # This updates the slowpath to validate the write_stamp by comparing it # to the before_stamp and removes all rb_time_cmpxchg() as there are no # more users of that function. # # The removal of the 32-bit updates of rb_time_t will be done in the # next merge window" # # * tag 'trace-v6.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: # ring-buffer: Fix slowpath of interrupted event # < /opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux-ld --version # < git log --format=%s --max-count=1 55cb5f43689d7a9ea5bf35ef050f12334f197347 # make -s -j 160 ARCH=x86 O=/kisskb/build/linus_allmodconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- allmodconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_SAMPLES=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig # < make -s -j 160 ARCH=x86 O=/kisskb/build/linus_allmodconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- help # make -s -j 160 ARCH=x86 O=/kisskb/build/linus_allmodconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- olddefconfig # make -s -j 160 ARCH=x86 O=/kisskb/build/linus_allmodconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- Completed OK # rm -rf /kisskb/build/linus_allmodconfig_x86_64-gcc8 # Build took: 0:29:07.914199