From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07451190664; Sun, 1 Mar 2026 02:04:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772330683; cv=none; b=niOECS5lzIzm4o4mA4w/4Y8orO5cIjPfCC2nSsP9apuSQ11fESotRxkucmbxql7D1KA9sb6GHMMNtdELxf/zBKkDtJJXPyJZ6inVvC6VnOoY7MhxctwoCHCTJkrdhZIuenBgGYTw8d1iu/y5Mv82J9vqyC6YJ0sFTMncnV0OBLk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772330683; c=relaxed/simple; bh=KY8zbWFaUbTfy1IbZIYr0rBhVQnVZ6/4ab7tkam5GRU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=jj+wt8wR1BqJmuZ9KUNy+1MbxAjBeQLmlsRrrBJfxSkaRaE3hrbUKK8fmRPA2Z6/dQU3jFoEnZaakmRpIKLj3tCg5Ie9bkKcXC2bUB7MQvmCRocbURozhLNbuuxH+ag0npSfhKe59B00z1Y6U54Uw9aZPT27iX6U2k/VXjcy8Nk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MnS9gHex; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MnS9gHex" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1E035C19421; Sun, 1 Mar 2026 02:04:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772330682; bh=KY8zbWFaUbTfy1IbZIYr0rBhVQnVZ6/4ab7tkam5GRU=; h=From:To:Cc:Subject:Date:From; b=MnS9gHex/XVk1hRqsYd5tiw6wJVFcYX+sWvTSSu2hkgYjZUYa03Fk3h5fmD929uH1 dEsaxAJcTeY4yNpg9mPdBYjw6g/NMU0c/vAdmYJHmrV8iQzPVNAdZ5RByhwD2A8Hsu 1IqVAQdFfokivcR7/gIorDyQWCpnlVQmFKxhj9HVxwx8ljCzT4oRQgCJH1dCCJ6tAZ CfjmcyXhhrRahbL5J0fKgWT8Gc4uRnCYO5et6+wHag+RmoAGwVuP+7NTcOCpoL4cgI YJPcf0dOCw/zN7NLcSaJ3nv4UZ7vP8thAVuCAjnQYrGASkNAlhyFZ5FuDJaeLbz3uf X3yLP3x8GmRVg== From: Sasha Levin To: stable@vger.kernel.org, yangtiezhu@loongson.cn Cc: Huacai Chen , loongarch@lists.linux.dev, linux-rt-devel@lists.linux.dev Subject: FAILED: Patch "LoongArch: Handle percpu handler address for ORC unwinder" failed to apply to 5.10-stable tree Date: Sat, 28 Feb 2026 21:04:40 -0500 Message-ID: <20260301020441.1733170-1-sashal@kernel.org> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Hint: ignore X-stable: review Content-Transfer-Encoding: 8bit The patch below does not apply to the 5.10-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to . Thanks, Sasha ------------------ original commit in Linus's tree ------------------ >From 055c7e75190e0be43037bd663a3f6aced194416e Mon Sep 17 00:00:00 2001 From: Tiezhu Yang Date: Tue, 10 Feb 2026 19:31:13 +0800 Subject: [PATCH] LoongArch: Handle percpu handler address for ORC unwinder After commit 4cd641a79e69 ("LoongArch: Remove unnecessary checks for ORC unwinder"), the system can not boot normally under some configs (such as enable KASAN), there are many error messages "cannot find unwind pc". The kernel boots normally with the defconfig, so no problem found out at the first time. Here is one way to reproduce: cd linux make mrproper defconfig -j"$(nproc)" scripts/config -e KASAN make olddefconfig all -j"$(nproc)" sudo make modules_install sudo make install sudo reboot The address that can not unwind is not a valid kernel address which is between "pcpu_handlers[cpu]" and "pcpu_handlers[cpu] + vec_sz" due to the code of eentry was copied to the new area of pcpu_handlers[cpu] in setup_tlb_handler(), handle this special case to get the valid address to unwind normally. Cc: stable@vger.kernel.org Signed-off-by: Tiezhu Yang Signed-off-by: Huacai Chen --- arch/loongarch/include/asm/setup.h | 3 +++ arch/loongarch/kernel/unwind_orc.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/arch/loongarch/include/asm/setup.h b/arch/loongarch/include/asm/setup.h index 3c2fb16b11b64..f81375e5e89c0 100644 --- a/arch/loongarch/include/asm/setup.h +++ b/arch/loongarch/include/asm/setup.h @@ -7,6 +7,7 @@ #define _LOONGARCH_SETUP_H #include +#include #include #include @@ -14,6 +15,8 @@ extern unsigned long eentry; extern unsigned long tlbrentry; +extern unsigned long pcpu_handlers[NR_CPUS]; +extern long exception_handlers[VECSIZE * 128 / sizeof(long)]; extern char init_command_line[COMMAND_LINE_SIZE]; extern void tlb_init(int cpu); extern void cpu_cache_init(void); diff --git a/arch/loongarch/kernel/unwind_orc.c b/arch/loongarch/kernel/unwind_orc.c index d6b3688a1ce97..11ba3e4ac9eee 100644 --- a/arch/loongarch/kernel/unwind_orc.c +++ b/arch/loongarch/kernel/unwind_orc.c @@ -352,6 +352,22 @@ static inline unsigned long bt_address(unsigned long ra) { extern unsigned long eentry; +#if defined(CONFIG_NUMA) && !defined(CONFIG_PREEMPT_RT) + int cpu; + int vec_sz = sizeof(exception_handlers); + + for_each_possible_cpu(cpu) { + if (!pcpu_handlers[cpu]) + continue; + + if (ra >= pcpu_handlers[cpu] && + ra < pcpu_handlers[cpu] + vec_sz) { + ra = ra + eentry - pcpu_handlers[cpu]; + break; + } + } +#endif + if (ra >= eentry && ra < eentry + EXCCODE_INT_END * VECSIZE) { unsigned long func; unsigned long type = (ra - eentry) / VECSIZE; -- 2.51.0