From nobody Tue Jun 16 18:01:53 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8A40736B048 for ; Thu, 30 Apr 2026 05:39:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777527556; cv=none; b=qIYISYg7wOUwWYKmLU9CATrd6T8z7xJc6SwpHH1gZQchSCfdgb/V7V5z3QUUaz+AVMNalZVR1x5uzchSjXNSDr3tXT5WYiCyJDpsfSR6Mn5eO3hVnrOsNY8nfMxHJjxfwiO/PvjkZr0uxhI7gEird7lDlqsg0k1fbBpKJMMlsFQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777527556; c=relaxed/simple; bh=0bDVVElDdvtEASTlGqfKLB6MoSbVkPd+QhrYWN30FUs=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=UUvVYvNlkAiNt6gi7QupnDFQO1ZFHlrQvJGvrbyAgaNB0CsIt8ErvSZ9Lyw+JFcKWLJUc2U2MLvxcZzyJN456Csv9KoWNzd0l3hAEgFx9Id4MyQ76XQI7XRXEZbYBA7p3T8yCxOad5SqUKmpNKESyffrYuq7fPqDqN2qtVZaMkA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=SRdqVSHc; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="SRdqVSHc" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3594B1A9A; Wed, 29 Apr 2026 22:39:07 -0700 (PDT) Received: from ergosum.cambridge.arm.com (ergosum.cambridge.arm.com [10.1.196.45]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 786513F7B4; Wed, 29 Apr 2026 22:39:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1777527552; bh=0bDVVElDdvtEASTlGqfKLB6MoSbVkPd+QhrYWN30FUs=; h=From:To:Cc:Subject:Date:From; b=SRdqVSHc4t46OQaHLg5HaRP57PpGqi6+1RpTZ/+OQGtVLltLy/8g1cxER/T81IGsM K94t2UCG8JsjKcOf/jqDwQRItStYgtXE8rTh9iwdmd7aiR5IEhv2USNX9d9tSJkFXB kIPmTZCnjMNs5cSQv7kqqB/SHrdisD51OZQQdsPI= From: Anshuman Khandual To: linux-arm-kernel@lists.infradead.org Cc: Anshuman Khandual , Catalin Marinas , Will Deacon , Ryan Roberts , David Hildenbrand , linux-kernel@vger.kernel.org Subject: [PATCH] arm64/mm: Replace BUG_ON() with VM_WARN_ON_ONCE() Date: Thu, 30 Apr 2026 06:38:59 +0100 Message-Id: <20260430053859.890613-1-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.30.2 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 Content-Type: text/plain; charset="utf-8" Avoid BUG_ON() while checking for inconsistent page table state conditions and instead replace them with VM_WARN_ON_ONCE(). Cc: Catalin Marinas Cc: Will Deacon Cc: Ryan Roberts Cc: David Hildenbrand Cc: linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Acked-by: David Hildenbrand (Arm) Suggested-by: David Hildenbrand (Arm) Signed-off-by: Anshuman Khandual --- This patch applies on v7.1-rc1 Took the liberty in including David's tag from an internal discussion. Earlier context during D128 RFC review. https://lore.kernel.org/all/d61a8e11-5b8c-4cea-a7f4-a890f65d62f4@kernel.org/ arch/arm64/include/asm/pgtable.h | 4 ++-- arch/arm64/mm/mmu.c | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgta= ble.h index 4dfa42b7d053..c9e4e00a9af2 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -1007,7 +1007,7 @@ static inline pud_t *p4d_pgtable(p4d_t p4d) =20 static inline phys_addr_t pud_offset_phys(p4d_t *p4dp, unsigned long addr) { - BUG_ON(!pgtable_l4_enabled()); + VM_WARN_ON_ONCE(!pgtable_l4_enabled()); =20 return p4d_page_paddr(READ_ONCE(*p4dp)) + pud_index(addr) * sizeof(pud_t); } @@ -1130,7 +1130,7 @@ static inline p4d_t *pgd_to_folded_p4d(pgd_t *pgdp, u= nsigned long addr) =20 static inline phys_addr_t p4d_offset_phys(pgd_t *pgdp, unsigned long addr) { - BUG_ON(!pgtable_l5_enabled()); + VM_WARN_ON_ONCE(!pgtable_l5_enabled()); =20 return pgd_page_paddr(READ_ONCE(*pgdp)) + p4d_index(addr) * sizeof(p4d_t); } diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index dd85e093ffdb..4c8959153ac4 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -273,8 +273,8 @@ static int init_pmd(pmd_t *pmdp, unsigned long addr, un= signed long end, if (ret) return ret; =20 - BUG_ON(pmd_val(old_pmd) !=3D 0 && - pmd_val(old_pmd) !=3D READ_ONCE(pmd_val(*pmdp))); + VM_WARN_ON_ONCE(pmd_val(old_pmd) !=3D 0 && + pmd_val(old_pmd) !=3D READ_ONCE(pmd_val(*pmdp))); } phys +=3D next - addr; } while (pmdp++, addr =3D next, addr !=3D end); @@ -394,8 +394,8 @@ static int alloc_init_pud(p4d_t *p4dp, unsigned long ad= dr, unsigned long end, if (ret) goto out; =20 - BUG_ON(pud_val(old_pud) !=3D 0 && - pud_val(old_pud) !=3D READ_ONCE(pud_val(*pudp))); + VM_WARN_ON_ONCE(pud_val(old_pud) !=3D 0 && + pud_val(old_pud) !=3D READ_ONCE(pud_val(*pudp))); } phys +=3D next - addr; } while (pudp++, addr =3D next, addr !=3D end); @@ -445,8 +445,8 @@ static int alloc_init_p4d(pgd_t *pgdp, unsigned long ad= dr, unsigned long end, if (ret) goto out; =20 - BUG_ON(p4d_val(old_p4d) !=3D 0 && - p4d_val(old_p4d) !=3D READ_ONCE(p4d_val(*p4dp))); + VM_WARN_ON_ONCE(p4d_val(old_p4d) !=3D 0 && + p4d_val(old_p4d) !=3D READ_ONCE(p4d_val(*p4dp))); =20 phys +=3D next - addr; } while (p4dp++, addr =3D next, addr !=3D end); --=20 2.30.2