# git gc Expanding reachable commits in commit graph: 21335 Expanding reachable commits in commit graph: 45059 Expanding reachable commits in commit graph: 67217 Expanding reachable commits in commit graph: 89675 Expanding reachable commits in commit graph: 113145 Expanding reachable commits in commit graph: 135123 Expanding reachable commits in commit graph: 161001 Expanding reachable commits in commit graph: 185030 Expanding reachable commits in commit graph: 209560 Expanding reachable commits in commit graph: 233180 Expanding reachable commits in commit graph: 255225 Expanding reachable commits in commit graph: 282831 Expanding reachable commits in commit graph: 306645 Expanding reachable commits in commit graph: 331378 Expanding reachable commits in commit graph: 356274 Expanding reachable commits in commit graph: 380549 Expanding reachable commits in commit graph: 408062 Expanding reachable commits in commit graph: 434485 Expanding reachable commits in commit graph: 460348 Expanding reachable commits in commit graph: 484823 Expanding reachable commits in commit graph: 512577 Expanding reachable commits in commit graph: 535365 Expanding reachable commits in commit graph: 560744 Expanding reachable commits in commit graph: 586249 Expanding reachable commits in commit graph: 609503 Expanding reachable commits in commit graph: 636002 Expanding reachable commits in commit graph: 657357 Expanding reachable commits in commit graph: 684346 Expanding reachable commits in commit graph: 711649 Expanding reachable commits in commit graph: 736023 Expanding reachable commits in commit graph: 764729 Expanding reachable commits in commit graph: 788163 Expanding reachable commits in commit graph: 815511 Expanding reachable commits in commit graph: 841699 Expanding reachable commits in commit graph: 865943 Expanding reachable commits in commit graph: 895836 Expanding reachable commits in commit graph: 924453 Expanding reachable commits in commit graph: 950831 Expanding reachable commits in commit graph: 976347 Expanding reachable commits in commit graph: 1003012 Expanding reachable commits in commit graph: 1027676 Expanding reachable commits in commit graph: 1053363 Expanding reachable commits in commit graph: 1077050 Expanding reachable commits in commit graph: 1103144 Expanding reachable commits in commit graph: 1137446 Expanding reachable commits in commit graph: 1166659 Expanding reachable commits in commit graph: 1197126 Expanding reachable commits in commit graph: 1226269 Expanding reachable commits in commit graph: 1249817, done. Finding extra edges in commit graph: 43% (548928/1249817) Finding extra edges in commit graph: 44% (549920/1249817) Finding extra edges in commit graph: 45% (562418/1249817) Finding extra edges in commit graph: 46% (574916/1249817) Finding extra edges in commit graph: 47% (587414/1249817) Finding extra edges in commit graph: 48% (599913/1249817) Finding extra edges in commit graph: 49% (612411/1249817) Finding extra edges in commit graph: 50% (624909/1249817) Finding extra edges in commit graph: 51% (637407/1249817) Finding extra edges in commit graph: 52% (649905/1249817) Finding extra edges in commit graph: 53% (662404/1249817) Finding extra edges in commit graph: 54% (674902/1249817) Finding extra edges in commit graph: 55% (687400/1249817) Finding extra edges in commit graph: 56% (699898/1249817) Finding extra edges in commit graph: 57% (712396/1249817) Finding extra edges in commit graph: 58% (724894/1249817) Finding extra edges in commit graph: 59% (737393/1249817) Finding extra edges in commit graph: 60% (749891/1249817) Finding extra edges in commit graph: 61% (762389/1249817) Finding extra edges in commit graph: 62% (774887/1249817) Finding extra edges in commit graph: 63% (787385/1249817) Finding extra edges in commit graph: 64% (799883/1249817) Finding extra edges in commit graph: 65% (812382/1249817) Finding extra edges in commit graph: 66% (824880/1249817) Finding extra edges in commit graph: 67% (837378/1249817) Finding extra edges in commit graph: 68% (849876/1249817) Finding extra edges in commit graph: 69% (862374/1249817) Finding extra edges in commit graph: 70% (874872/1249817) Finding extra edges in commit graph: 71% (887371/1249817) Finding extra edges in commit graph: 72% (899869/1249817) Finding extra edges in commit graph: 73% (912367/1249817) Finding extra edges in commit graph: 74% (924865/1249817) Finding extra edges in commit graph: 75% (937363/1249817) Finding extra edges in commit graph: 76% (949861/1249817) Finding extra edges in commit graph: 77% (962360/1249817) Finding extra edges in commit graph: 78% (974858/1249817) Finding extra edges in commit graph: 79% (987356/1249817) Finding extra edges in commit graph: 80% (999854/1249817) Finding extra edges in commit graph: 81% (1012352/1249817) Finding extra edges in commit graph: 82% (1024850/1249817) Finding extra edges in commit graph: 83% (1037349/1249817) Finding extra edges in commit graph: 84% (1049847/1249817) Finding extra edges in commit graph: 85% (1062345/1249817) Finding extra edges in commit graph: 86% (1074843/1249817) Finding extra edges in commit graph: 87% (1087341/1249817) Finding extra edges in commit graph: 88% (1099839/1249817) Finding extra edges in commit graph: 89% (1112338/1249817) Finding extra edges in commit graph: 90% (1124836/1249817) Finding extra edges in commit graph: 91% (1137334/1249817) Finding extra edges in commit graph: 92% (1149832/1249817) Finding extra edges in commit graph: 93% (1162330/1249817) Finding extra edges in commit graph: 94% (1174828/1249817) Finding extra edges in commit graph: 95% (1187327/1249817) Finding extra edges in commit graph: 96% (1199825/1249817) Finding extra edges in commit graph: 97% (1212323/1249817) Finding extra edges in commit graph: 98% (1224821/1249817) Finding extra edges in commit graph: 99% (1237319/1249817) Finding extra edges in commit graph: 100% (1249817/1249817) Finding extra edges in commit graph: 100% (1249817/1249817), done. Writing out commit graph in 4 passes: 50% (2521968/4999268) Writing out commit graph in 4 passes: 51% (2549627/4999268) Writing out commit graph in 4 passes: 52% (2599620/4999268) Writing out commit graph in 4 passes: 53% (2649613/4999268) Writing out commit graph in 4 passes: 54% (2699605/4999268) Writing out commit graph in 4 passes: 54% (2723685/4999268) Writing out commit graph in 4 passes: 55% (2749598/4999268) Writing out commit graph in 4 passes: 56% (2799591/4999268) Writing out commit graph in 4 passes: 57% (2849583/4999268) Writing out commit graph in 4 passes: 57% (2887068/4999268) Writing out commit graph in 4 passes: 58% (2899576/4999268) Writing out commit graph in 4 passes: 59% (2949569/4999268) Writing out commit graph in 4 passes: 60% (2999561/4999268) Writing out commit graph in 4 passes: 61% (3049554/4999268) Writing out commit graph in 4 passes: 61% (3074304/4999268) Writing out commit graph in 4 passes: 62% (3099547/4999268) Writing out commit graph in 4 passes: 63% (3149539/4999268) Writing out commit graph in 4 passes: 64% (3199532/4999268) Writing out commit graph in 4 passes: 65% (3249525/4999268) Writing out commit graph in 4 passes: 65% (3287628/4999268) Writing out commit graph in 4 passes: 66% (3299517/4999268) Writing out commit graph in 4 passes: 67% (3349510/4999268) Writing out commit graph in 4 passes: 68% (3399503/4999268) Writing out commit graph in 4 passes: 69% (3449495/4999268) Writing out commit graph in 4 passes: 69% (3484808/4999268) Writing out commit graph in 4 passes: 70% (3499488/4999268) Writing out commit graph in 4 passes: 71% (3549481/4999268) Writing out commit graph in 4 passes: 72% (3599473/4999268) Writing out commit graph in 4 passes: 73% (3649466/4999268) Writing out commit graph in 4 passes: 73% (3672906/4999268) Writing out commit graph in 4 passes: 74% (3699459/4999268) Writing out commit graph in 4 passes: 75% (3749451/4999268) Writing out commit graph in 4 passes: 76% (3799444/4999268) Writing out commit graph in 4 passes: 77% (3849437/4999268) Writing out commit graph in 4 passes: 78% (3899430/4999268) Writing out commit graph in 4 passes: 79% (3949422/4999268) Writing out commit graph in 4 passes: 80% (3999415/4999268) Writing out commit graph in 4 passes: 81% (4049408/4999268) Writing out commit graph in 4 passes: 82% (4099400/4999268) Writing out commit graph in 4 passes: 83% (4149393/4999268) Writing out commit graph in 4 passes: 84% (4199386/4999268) Writing out commit graph in 4 passes: 85% (4249378/4999268) Writing out commit graph in 4 passes: 86% (4299371/4999268) Writing out commit graph in 4 passes: 87% (4349364/4999268) Writing out commit graph in 4 passes: 88% (4399356/4999268) Writing out commit graph in 4 passes: 89% (4449349/4999268) Writing out commit graph in 4 passes: 90% (4499342/4999268) Writing out commit graph in 4 passes: 91% (4549334/4999268) Writing out commit graph in 4 passes: 92% (4599327/4999268) Writing out commit graph in 4 passes: 93% (4649320/4999268) Writing out commit graph in 4 passes: 94% (4699312/4999268) Writing out commit graph in 4 passes: 95% (4749305/4999268) Writing out commit graph in 4 passes: 96% (4799298/4999268) Writing out commit graph in 4 passes: 97% (4849290/4999268) Writing out commit graph in 4 passes: 98% (4899283/4999268) Writing out commit graph in 4 passes: 99% (4949276/4999268) Writing out commit graph in 4 passes: 100% (4999268/4999268) Writing out commit graph in 4 passes: 100% (4999268/4999268), done. # git rev-parse -q --verify 4356e9f841f7fbb945521cef3577ba394c65f3fc^{commit} # git fetch -q -n -f git://fs.ozlabs.ibm.com/kernel/linus master # git rev-parse -q --verify 4356e9f841f7fbb945521cef3577ba394c65f3fc^{commit} 4356e9f841f7fbb945521cef3577ba394c65f3fc # git checkout -q -f -B kisskb 4356e9f841f7fbb945521cef3577ba394c65f3fc # git clean -qxdf # < git log -1 # commit 4356e9f841f7fbb945521cef3577ba394c65f3fc # Author: Linus Torvalds # Date: Fri Feb 9 12:39:31 2024 -0800 # # work around gcc bugs with 'asm goto' with outputs # # We've had issues with gcc and 'asm goto' before, and we created a # 'asm_volatile_goto()' macro for that in the past: see commits # 3f0116c3238a ("compiler/gcc4: Add quirk for 'asm goto' miscompilation # bug") and a9f180345f53 ("compiler/gcc4: Make quirk for # asm_volatile_goto() unconditional"). # # Then, much later, we ended up removing the workaround in commit # 43c249ea0b1e ("compiler-gcc.h: remove ancient workaround for gcc PR # 58670") because we no longer supported building the kernel with the # affected gcc versions, but we left the macro uses around. # # Now, Sean Christopherson reports a new version of a very similar # problem, which is fixed by re-applying that ancient workaround. But the # problem in question is limited to only the 'asm goto with outputs' # cases, so instead of re-introducing the old workaround as-is, let's # rename and limit the workaround to just that much less common case. # # It looks like there are at least two separate issues that all hit in # this area: # # (a) some versions of gcc don't mark the asm goto as 'volatile' when it # has outputs: # # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98619 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110420 # # which is easy to work around by just adding the 'volatile' by hand. # # (b) Internal compiler errors: # # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110422 # # which are worked around by adding the extra empty 'asm' as a # barrier, as in the original workaround. # # but the problem Sean sees may be a third thing since it involves bad # code generation (not an ICE) even with the manually added 'volatile'. # # but the same old workaround works for this case, even if this feels a # bit like voodoo programming and may only be hiding the issue. # # Reported-and-tested-by: Sean Christopherson # Link: https://lore.kernel.org/all/20240208220604.140859-1-seanjc@google.com/ # Cc: Nick Desaulniers # Cc: Uros Bizjak # Cc: Jakub Jelinek # Cc: Andrew Pinski # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sparc64-linux/bin/sparc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sparc64-linux/bin/sparc64-linux-ld --version # < git log --format=%s --max-count=1 4356e9f841f7fbb945521cef3577ba394c65f3fc # make -s -j 160 ARCH=sparc O=/kisskb/build/linus_defconfig_sparc64-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sparc64-linux/bin/sparc64-linux- defconfig # < make -s -j 160 ARCH=sparc O=/kisskb/build/linus_defconfig_sparc64-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sparc64-linux/bin/sparc64-linux- help # make -s -j 160 ARCH=sparc O=/kisskb/build/linus_defconfig_sparc64-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sparc64-linux/bin/sparc64-linux- olddefconfig # make -s -j 160 ARCH=sparc O=/kisskb/build/linus_defconfig_sparc64-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sparc64-linux/bin/sparc64-linux- :1519:2: warning: #warning syscall clone3 not implemented [-Wcpp] /kisskb/src/arch/sparc/lib/cmpdi2.c:6:11: warning: no previous prototype for '__cmpdi2' [-Wmissing-prototypes] 6 | word_type __cmpdi2(long long a, long long b) | ^~~~~~~~ /kisskb/src/arch/sparc/lib/ucmpdi2.c:5:11: warning: no previous prototype for '__ucmpdi2' [-Wmissing-prototypes] 5 | word_type __ucmpdi2(unsigned long long a, unsigned long long b) | ^~~~~~~~~ /kisskb/src/kernel/dma.c:70:5: warning: no previous prototype for 'request_dma' [-Wmissing-prototypes] 70 | int request_dma(unsigned int dmanr, const char * device_id) | ^~~~~~~~~~~ /kisskb/src/kernel/dma.c:88:6: warning: no previous prototype for 'free_dma' [-Wmissing-prototypes] 88 | void free_dma(unsigned int dmanr) | ^~~~~~~~ Completed OK # rm -rf /kisskb/build/linus_defconfig_sparc64-gcc12 # Build took: 0:16:48.340895