# git rev-parse -q --verify 7b4ea9456dd3f73238408126ab00f1d906963d81^{commit} 7b4ea9456dd3f73238408126ab00f1d906963d81 already have revision, skipping fetch # git checkout -q -f -B kisskb 7b4ea9456dd3f73238408126ab00f1d906963d81 # git clean -qxdf # < git log -1 # commit 7b4ea9456dd3f73238408126ab00f1d906963d81 # Author: Linus Torvalds # Date: Thu Aug 6 12:02:58 2020 -0700 # # Revert "x86/mm/64: Do not sync vmalloc/ioremap mappings" # # This reverts commit 8bb9bf242d1fee925636353807c511d54fde8986. # # It seems the vmalloc page tables aren't always preallocated in all # situations, because Jason Donenfeld reports an oops with this commit: # # BUG: unable to handle page fault for address: ffffe8ffffd00608 # #PF: supervisor read access in kernel mode # #PF: error_code(0x0000) - not-present page # PGD 0 P4D 0 # Oops: 0000 [#1] PREEMPT SMP # CPU: 2 PID: 22 Comm: kworker/2:0 Not tainted 5.8.0+ #154 # RIP: process_one_work+0x2c/0x2d0 # Code: 41 56 41 55 41 54 55 48 89 f5 53 48 89 fb 48 83 ec 08 48 8b 06 4c 8b 67 40 49 89 c6 45 30 f6 a8 04 b8 00 00 00 00 4c 0f 44 f0 <49> 8b 46 08 44 8b a8 00 01 05 # Call Trace: # worker_thread+0x4b/0x3b0 # ? rescuer_thread+0x360/0x360 # kthread+0x116/0x140 # ? __kthread_create_worker+0x110/0x110 # ret_from_fork+0x1f/0x30 # CR2: ffffe8ffffd00608 # # and that page fault address is right in that vmalloc space, and we # clearly don't have a PGD/P4D entry for it. # # Looking at the "Code:" line, the actual fault seems to come from the # 'pwq->wq' dereference at the top of the process_one_work() function: # # struct pool_workqueue *pwq = get_work_pwq(work); # struct worker_pool *pool = worker->pool; # bool cpu_intensive = pwq->wq->flags & WQ_CPU_INTENSIVE; # # so 'struct pool_workqueue *pwq' is the allocation that hasn't been # synchronized across CPUs. # # Just revert for now, while Joerg figures out the cause. # # Reported-and-bisected-by: Jason A. Donenfeld # Acked-by: Ingo Molnar # Acked-by: Joerg Roedel # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 7b4ea9456dd3f73238408126ab00f1d906963d81 # < make -s -j 24 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- randconfig KCONFIG_SEED=0xE2E53208 # 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 24 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 24 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig .config:4632:warning: override: reassigning to symbol PPC64 .config:4635:warning: override: reassigning to symbol PREVENT_FIRMWARE_BUILD WARNING: unmet direct dependencies detected for HOTPLUG_PCI_POWERNV Depends on [n]: PCI [=y] && HOTPLUG_PCI [=n] && PPC_POWERNV [=y] && EEH [=y] Selected by [m]: - OCXL [=m] && PPC_POWERNV [=y] && PCI [=y] && EEH [=y] # make -s -j 24 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-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 [m]: - OCXL [=m] && 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 [m]: - OCXL [=m] && 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 [m]: - OCXL [=m] && PPC_POWERNV [=y] && PCI [=y] && EEH [=y] /kisskb/src/arch/powerpc/platforms/powernv/pci-ioda.c:1888:13: warning: 'pnv_ioda_setup_bus_dma' defined but not used [-Wunused-function] 1888 | static void pnv_ioda_setup_bus_dma(struct pnv_ioda_pe *pe, struct pci_bus *bus) | ^~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/arch/powerpc/kernel/eeh.c:1707:12: warning: 'proc_eeh_show' defined but not used [-Wunused-function] 1707 | static int proc_eeh_show(struct seq_file *m, void *v) | ^~~~~~~~~~~~~ /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 1280 bytes is larger than 1024 bytes [-Wframe-larger-than=] 897 | } | ^ /kisskb/src/drivers/md/dm-writecache.c: In function 'persistent_memory_claim': /kisskb/src/drivers/md/dm-writecache.c:315:1: warning: no return statement in function returning non-void [-Wreturn-type] 315 | } | ^ Completed OK # rm -rf /kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 # Build took: 0:05:29.279807