Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp1313508iog; Thu, 30 Jun 2022 23:28:43 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uCw2PlOlmsPc8Y2VA92eF8y69E6+cPfA/Hql/8hwBjLjnrxr391ohQjgMFAa7q9Cu4A8Jr X-Received: by 2002:a17:902:f78b:b0:168:faff:d6a5 with SMTP id q11-20020a170902f78b00b00168faffd6a5mr18112042pln.76.1656656923312; Thu, 30 Jun 2022 23:28:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656656923; cv=none; d=google.com; s=arc-20160816; b=XqBD4XIWMqluHX5Z7gnYA4Nix6AbkfQ8OMCh2xMHEw0vSNT40D7OVFvoasXofdztlm rSc5k7l3ykVhr8Za6z61tl2ydF7R8QH71H+P8UuoVfMcmi8soB99z358xLvZ1m9hH53F +dHg/qvGbkGbyle9qTqFWUSRigmH6xzxczXAwpG8UecGu1cNO4l0utnQK6XkMIMZr0mt JuQN/vuU4OuDHgkXBUCvXmpsu/qqd9cmAJXgBcFVCqWD1K0a2Hot/SwL4c16OKgQMKv7 HwDmgslV4txRIE7tXnkULYTDoZM2xYCmFsAXUbudQ4R8MnltjvxUENDDI99MIyr/1EnI 296A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=CAyjJ1ru0sye+ctukypAFBsgkm72AEwKhprF1k3iz3Q=; b=T5zbBeulO5QIvLFLcF1deogsKJkRAgJIJCIWUHSrKqtrS+A9RyywATjtSPzE8u7bPN AcWnr6VEw71BrQSHNRqzo2Jb3sH3y2K4LjVf7N/V7N9/LlyF9Wn7H/OUMf1/0T1nXXOX GKG76C42Q2f+fh7IdiswvyMXYonqeNh2BDjF6fEHVrjirKisIlxVJoXSLzMHfksHdp45 /6Syq0nwGn/rwKY+LbLSESQeCqHjn+wL7K4XA8Faqwr2RtYkROT9lhLUwv+8nV7WhfiT j9uf0T4uIogIL/7fCqxAF1q6Ue5ukI20nIHYoyzQYtKCQ05CuoFTy6g9bkTyCUdUpY06 tNjQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c2-20020a170902f30200b0016a0e4d84b2si25018827ple.570.2022.06.30.23.28.29; Thu, 30 Jun 2022 23:28:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233635AbiGAGGi (ORCPT + 99 others); Fri, 1 Jul 2022 02:06:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230500AbiGAGGg (ORCPT ); Fri, 1 Jul 2022 02:06:36 -0400 Received: from pegase2.c-s.fr (pegase2.c-s.fr [93.17.235.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A35C337A13 for ; Thu, 30 Jun 2022 23:06:33 -0700 (PDT) Received: from localhost (mailhub3.si.c-s.fr [172.26.127.67]) by localhost (Postfix) with ESMTP id 4LZ4TM6kXdz9tHC; Fri, 1 Jul 2022 08:06:31 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase2.c-s.fr ([172.26.127.65]) by localhost (pegase2.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ga5QVl0WHR5D; Fri, 1 Jul 2022 08:06:31 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase2.c-s.fr (Postfix) with ESMTP id 4LZ4TM61LDz9tH3; Fri, 1 Jul 2022 08:06:31 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id BF99D8B798; Fri, 1 Jul 2022 08:06:31 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 1YYAc5wZu1tO; Fri, 1 Jul 2022 08:06:31 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (unknown [172.25.230.108]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 9EE368B767; Fri, 1 Jul 2022 08:06:31 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (localhost [127.0.0.1]) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.16.1) with ESMTPS id 26166PYH3730571 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 1 Jul 2022 08:06:25 +0200 Received: (from chleroy@localhost) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.17.1/Submit) id 26166OLk3730568; Fri, 1 Jul 2022 08:06:24 +0200 X-Authentication-Warning: PO20335.IDSI0.si.c-s.fr: chleroy set sender to christophe.leroy@csgroup.eu using -f From: Christophe Leroy To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: Christophe Leroy , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Erhard Furtner Subject: [PATCH] powerpc/32s: Fix boot failure with KASAN + SMP + JUMP_LABEL_FEATURE_CHECK_DEBUG Date: Fri, 1 Jul 2022 08:06:15 +0200 Message-Id: <2ee707512b8b212b079b877f4ceb525a1606a3fb.1656655567.git.christophe.leroy@csgroup.eu> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1656655574; l=1860; s=20211009; h=from:subject:message-id; bh=n0vJXLO8U3JSz0xBTXCGMNhqXK9IYneG7gE0yKtcUFM=; b=UF7Mez85iyfD5bwvzrYIfp+uP5nLBuYObQvaOhKAz2zsPzXPzPZAP3IQcCcroJ4HHH6Hdd3ODnTF JysqebtVDjb5iZVefcIy0GqqFEMbOx8SgpeD7dCCPOZDCA6xPhlj X-Developer-Key: i=christophe.leroy@csgroup.eu; a=ed25519; pk=HIzTzUj91asvincQGOFx6+ZF5AoUuP9GdOtQChs7Mm0= Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since commit 4291d085b0b0 ("powerpc/32s: Make pte_update() non atomic on 603 core"), pte_update() has been using mmu_has_feature(MMU_FTR_HPTE_TABLE) to avoid a useless atomic operation on 603 cores. When kasan_early_init() sets up the early zero shadow, it uses __set_pte_at(). On book3s/32, __set_pte_at() calls pte_update() when CONFIG_SMP is selected in order to ensure the preservation of _PAGE_HASHPTE in case of concurrent update of the PTE. But that's too early for mmu_has_feature(), so when CONFIG_JUMP_LABEL_FEATURE_CHECK_DEBUG is selected, mmu_has_feature() calls printk(). That's too early to call printk() because KASAN early zero shadow page is not set up yet. It leads to a deadlock. However, when kasan_early_init() is called, there is only one CPU running and no risk of concurrent PTE update. So __set_pte_at() can be called with the 'percpu' flag. With that flag set, the PTE is written directly instead of being written via pte_update(). Reported-by: Erhard Furtner Fixes: 4291d085b0b0 ("powerpc/32s: Make pte_update() non atomic on 603 core") Signed-off-by: Christophe Leroy --- arch/powerpc/mm/kasan/init_32.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/mm/kasan/init_32.c b/arch/powerpc/mm/kasan/init_32.c index f3e4d069e0ba..a70828a6d935 100644 --- a/arch/powerpc/mm/kasan/init_32.c +++ b/arch/powerpc/mm/kasan/init_32.c @@ -25,7 +25,7 @@ static void __init kasan_populate_pte(pte_t *ptep, pgprot_t prot) int i; for (i = 0; i < PTRS_PER_PTE; i++, ptep++) - __set_pte_at(&init_mm, va, ptep, pfn_pte(PHYS_PFN(pa), prot), 0); + __set_pte_at(&init_mm, va, ptep, pfn_pte(PHYS_PFN(pa), prot), 1); } int __init kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_end) -- 2.36.1