From nobody Tue Jun 16 20:39:47 2026 Received: from SHSQR01.spreadtrum.com (mx1.unisoc.com [222.66.158.135]) (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 81A3E1E4AF for ; Wed, 29 Apr 2026 06:20:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=222.66.158.135 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777443617; cv=none; b=U40itrLN3Yh9CKxQHI/CimycZIhECImxd5JsU0eV9Smn5kJBr7Z0yDqA5K3UAFbrDMfHt3cbM5P9Dt5Onh52HKxQ3MeLSRKpUWFAq6px7lsPZDrAurpSjLa2hStaX4f7HqaPOV/HaMvC0uV5GMsH7NqRY5mVZYC3hzUZGkC2qb8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777443617; c=relaxed/simple; bh=eoMZCGS3jYIs8WZyCzJ/22FYbq12F/RwnXibqoimZTM=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=kGv6RKKCkGGWckZP1tOx4l4nMBowcLdeW82SXgVmJBMSBzB/WlA2rgTZBsioyae7yQNbSt/X5v8ir4TMKx745uI+h0+tjVtqQ9xT0A5nimaZORO0qCMzDWzBsDmiNlr3UNwoxEysvw7HAYJoKrmrfeoEtDCbnHuACvhPlW+eLbE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=unisoc.com; spf=pass smtp.mailfrom=unisoc.com; dkim=pass (2048-bit key) header.d=unisoc.com header.i=@unisoc.com header.b=LqAOy7qw; arc=none smtp.client-ip=222.66.158.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=unisoc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=unisoc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=unisoc.com header.i=@unisoc.com header.b="LqAOy7qw" Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTP id 63T6I3Cb046564; Wed, 29 Apr 2026 14:18:03 +0800 (+08) (envelope-from zhaoyang.huang@unisoc.com) Received: from SHDLP.spreadtrum.com (BJMBX01.spreadtrum.com [10.0.64.7]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4g56V36rCxz2L0psS; Wed, 29 Apr 2026 14:15:07 +0800 (CST) Received: from bj03382pcu03.spreadtrum.com (10.0.73.40) by BJMBX01.spreadtrum.com (10.0.64.7) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Wed, 29 Apr 2026 14:18:00 +0800 From: "zhaoyang.huang" To: Catalin Marinas , Will Deacon , Ard Biesheuvel , , , Zhaoyang Huang , Subject: [PATCH] arch: arm64: fix KERNEL_SEGMENT_COUNT error Date: Wed, 29 Apr 2026 14:17:52 +0800 Message-ID: <20260429061752.2880923-1-zhaoyang.huang@unisoc.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SHCAS03.spreadtrum.com (10.0.1.207) To BJMBX01.spreadtrum.com (10.0.64.7) X-MAIL: SHSQR01.spreadtrum.com 63T6I3Cb046564 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unisoc.com; s=default; t=1777443491; bh=sfkGLFkqEIBKOafl9GJMSprJeAoAdbx46V2yRo3AbZs=; h=From:To:Subject:Date; b=LqAOy7qwexZuYBqyJkYmEvZAjGhroq6bo7dV7EAdQPUR4Q17uLbDpVHd0DXYWX5Z5 wC/LeY1SDy2mlXEd21hKGc9OZ0LgAMamvQU+/UnfXupSg25hpT8r89tP0OggBVE+TR Hski1bxMMayhT4GyCXj2TJujSO2zRYRRPJeOYUL0RqJxSbGEYwMP1mEhobVUvz9ydH ptICjA5J4TizrmH020JRL4wqTD4WUGKU4C9MXkdJhh5L+E5pIMnw9n4Ai6aS7nDSgy xvIpElh7fhmamIBRiCwfLGaNMq65s7RnDY8Q4GLxteJg02Dw/clvhESRnsjd6W5Xgf QkLN1YIUtZNcw== Content-Type: text/plain; charset="utf-8" From: Zhaoyang Huang During debug of a kernel panic, we find that the pte_t of the final part of [data, end] segment got overflow to the next page of init_pg_end[1] which is the gap page before early_init_stack[2]. This should be introduced by the KERNEL_SEGMENT_COUNT's value is 5 which should be 6 as map_segment are called 6 times for the segments of (text, stext, rodata, inittext, initdata, data+bss) [1] crash_arm64_v9.0.1> vtop ffffffed00601000 VIRTUAL PHYSICAL ffffffed00601000 83401000 PAGE DIRECTORY: ffffffecffd62000 PGD: ffffffecffd62da0 =3D> 10000000833fb003 PMD: ffffff80033fb018 =3D> 10000000833fe003 PTE: ffffff80033fe008 =3D> 68000083401f03 PAGE: 83401000 PTE PHYSICAL FLAGS 68000083401f03 83401000 (VALID|SHARED|AF|NG|PXN|UXN) PAGE PHYSICAL MAPPING INDEX CNT FLAGS fffffffec00d0040 83401000 0 0 1 4000 reserved [2] ffffffed002c8000 (r) __pi__data ffffffed0054e000 (d) __pi___bss_start ffffffed005f5000 (b) __pi_init_pg_dir ffffffed005fe000 (b) __pi_init_pg_end ffffffed005ff000 (B) early_init_stack ffffffed00608000 (b) __pi__end Signed-off-by: Zhaoyang Huang --- arch/arm64/include/asm/kernel-pgtable.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/include/asm/kernel-pgtable.h b/arch/arm64/include/a= sm/kernel-pgtable.h index 74a4f738c5f5..14dd1c52552a 100644 --- a/arch/arm64/include/asm/kernel-pgtable.h +++ b/arch/arm64/include/asm/kernel-pgtable.h @@ -64,8 +64,8 @@ #define INIT_IDMAP_FDT_PAGES (EARLY_PAGES(INIT_IDMAP_PGTABLE_LEVELS, 0UL, = UL(MAX_FDT_SIZE), 1) - 1) #define INIT_IDMAP_FDT_SIZE ((INIT_IDMAP_FDT_PAGES + EARLY_IDMAP_EXTRA_FDT= _PAGES) * PAGE_SIZE) =20 -/* The number of segments in the kernel image (text, rodata, inittext, ini= tdata, data+bss) */ -#define KERNEL_SEGMENT_COUNT 5 +/* The number of segments in the kernel image (text, stext, rodata, initte= xt, initdata, data+bss) */ +#define KERNEL_SEGMENT_COUNT 6 =20 #if SWAPPER_BLOCK_SIZE > SEGMENT_ALIGN #define EARLY_SEGMENT_EXTRA_PAGES (KERNEL_SEGMENT_COUNT + 1) --=20 2.25.1