# git rev-parse -q --verify ee40d543e97d23d3392d8fb1ec9972eb4e9c7611^{commit} ee40d543e97d23d3392d8fb1ec9972eb4e9c7611 already have revision, skipping fetch # git checkout -q -f -B kisskb ee40d543e97d23d3392d8fb1ec9972eb4e9c7611 # git clean -qxdf # < git log -1 # commit ee40d543e97d23d3392d8fb1ec9972eb4e9c7611 # Author: Hugh Dickins # Date: Sat Sep 2 08:29:30 2023 -0700 # # mm/pagewalk: fix bootstopping regression from extra pte_unmap() # # Mikhail reports early-6.6-based Fedora Rawhide not booting: "rcu_preempt # detected expedited stalls", minutes wait, and then hung_task splat while # kworker trying to synchronize_rcu_expedited(). Nothing logged to disk. # # He bisected to my 6.6 a349d72fd9ef ("mm/pgtable: add rcu_read_lock() and # rcu_read_unlock()s"): but the one to blame is my 6.5 commit to fix the # espfix "bad pmd" warnings when booting x86_64 with CONFIG_EFI_PGT_DUMP=y. # # Gaah, that added an "addr >= TASK_SIZE" check to avoid pte_offset_map(), # but failed to add the equivalent check when choosing to pte_unmap(). # # It's not a problem on 6.5 (for different reasons, it's harmless on both # 64-bit and 32-bit), but becomes a bootstopper on 6.6 with the unbalanced # rcu_read_unlock() - RCU has a WARN_ON_ONCE for that, but it would have # scrolled off Mikhail's console too quickly. # # Reported-by: Mikhail Gavrilov # Closes: https://lore.kernel.org/linux-mm/CABXGCsNi8Tiv5zUPNXr6UJw6qV1VdaBEfGqEAMkkXE3QPvZuAQ@mail.gmail.com/ # Fixes: 8b1cb4a2e819 ("mm/pagewalk: fix EFI_PGT_DUMP of espfix area") # Fixes: a349d72fd9ef ("mm/pgtable: add rcu_read_lock() and rcu_read_unlock()s") # Signed-off-by: Hugh Dickins # Tested-by: Mikhail Gavrilov # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-12.2.0-nolibc/mips-linux/bin/mips-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-12.2.0-nolibc/mips-linux/bin/mips-linux-ld --version # < git log --format=%s --max-count=1 ee40d543e97d23d3392d8fb1ec9972eb4e9c7611 # make -s -j 160 ARCH=mips O=/kisskb/build/linus_micro32r2el_defconfig_mips-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/mips-linux/bin/mips-linux- micro32r2el_defconfig Using /kisskb/src/arch/mips/configs/generic_defconfig as base Merging /kisskb/src/arch/mips/configs/generic/micro32r2.config Merging /kisskb/src/arch/mips/configs/generic/el.config Merging /kisskb/src/arch/mips/configs/generic/board-boston.config Merging /kisskb/src/arch/mips/configs/generic/board-marduk.config Merging /kisskb/src/arch/mips/configs/generic/board-ni169445.config Merging /kisskb/src/arch/mips/configs/generic/board-ocelot.config Merging /kisskb/src/arch/mips/configs/generic/board-ranchu.config Merging /kisskb/src/arch/mips/configs/generic/board-sead-3.config Merging /kisskb/src/arch/mips/configs/generic/board-virt.config Merging /kisskb/src/arch/mips/configs/generic/board-xilfpga.config # < make -s -j 160 ARCH=mips O=/kisskb/build/linus_micro32r2el_defconfig_mips-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/mips-linux/bin/mips-linux- help # make -s -j 160 ARCH=mips O=/kisskb/build/linus_micro32r2el_defconfig_mips-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/mips-linux/bin/mips-linux- olddefconfig # make -s -j 160 ARCH=mips O=/kisskb/build/linus_micro32r2el_defconfig_mips-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/mips-linux/bin/mips-linux- {standard input}: Assembler messages: {standard input}:5025: Error: branch to a symbol in another ISA mode make[5]: *** [/kisskb/src/scripts/Makefile.build:243: arch/mips/kernel/smp-cps.o] Error 1 make[5]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:480: arch/mips/kernel] Error 2 make[3]: *** [/kisskb/src/scripts/Makefile.build:480: arch/mips] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kisskb/src/Makefile:2029: .] Error 2 make[1]: *** [/kisskb/src/Makefile:234: __sub-make] Error 2 make: *** [Makefile:234: __sub-make] Error 2 Command 'make -s -j 160 ARCH=mips O=/kisskb/build/linus_micro32r2el_defconfig_mips-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/mips-linux/bin/mips-linux- ' returned non-zero exit status 2. # rm -rf /kisskb/build/linus_micro32r2el_defconfig_mips-gcc12 # Build took: 0:01:30.737579