From patchwork Sun Jun 25 14:09:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Song Shuai X-Patchwork-Id: 11265 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp6939678vqr; Sun, 25 Jun 2023 07:18:39 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ76P5VQlCryssuILuAuH11l79CHlYaEhs3MYJPzuFQ2Cv98vwgSs+DRZFQCDY47jsgOlZDw X-Received: by 2002:a05:6a00:2292:b0:668:731b:517e with SMTP id f18-20020a056a00229200b00668731b517emr27908312pfe.24.1687702718684; Sun, 25 Jun 2023 07:18:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687702718; cv=none; d=google.com; s=arc-20160816; b=rAQ0wnPRd4xEKtn23DsO06Lq7asdpKjlXJTRpMtlGoSWLQT7XP+B1lzGc0l28ZOamp RpDdEi6IHK9R62bdrVwlbcqSG2tneRnKOhM9W6Q1lLE/I5HTjjpM6j3mTgix48ltSLkR /VrTLMvwruDLl24D+rqtuE5TD0d70XlB8YM04WN3fvI91DjeUfF+I/WEIEbB+sirFdMR USceu3dt2D3gGT5vsCbgO1JdOlDkAIRV8KkSeqoQVzPLimO8V7JyggGRijXbznq/Hw/5 yhmJGxoc/kb9xArtlQ6X6LFu0gwHgaVa1cJCnl6mU+o3XvlwZSxfZqUTDR5FMaB/SoUH L4KQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from; bh=q73F6O9GjFTZstgX+qdiFpjrqlnWgeMHw3tDiVOG7Nw=; fh=2/EbjHRE7EKafzAkxWdKfWLNh6seQ7/0UQ7OzUYTgxI=; b=pFcQkfkNTb8bNo9nNS8uWgTvl5Fw57wijIAVCbYJ2c8KC8UzEM4FPGecZ5+HCSycey FP/nKmzbi7ghJN0ql3Yh5Uh2A63qkkgxZr65KbYu+QhEGnQiIvEicY+HL0OrL6aCJoHV h6nX/4sFA5BrAZoU+fVKmGdusPW82q0am/F7EcgqLo7aKP1Zt3GNb7Q1VKlDM78tVFak KSRTALs5ikEZE8g8CBKRzFnlwEplQ8BbTxXp+RUSOIZ1dfl3BErvcxKucEJMH1JZFwBd Ua8zDlLIj7GAR+OT+kdGb2G2/CmmtrxxHA5a/2ICfJ1Z0nqTpoDuh/QKyINkVXJYAxlV rX4Q== 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o15-20020a056a0015cf00b00677eac1cd9dsi119669pfu.329.2023.06.25.07.18.26; Sun, 25 Jun 2023 07:18:38 -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 S229939AbjFYOKx (ORCPT + 99 others); Sun, 25 Jun 2023 10:10:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229634AbjFYOKw (ORCPT ); Sun, 25 Jun 2023 10:10:52 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A68861B1 for ; Sun, 25 Jun 2023 07:10:50 -0700 (PDT) X-QQ-mid: bizesmtp73t1687702201tfi94mxf Received: from localhost.localdomain ( [112.2.230.41]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 25 Jun 2023 22:09:56 +0800 (CST) X-QQ-SSF: 01200000000000B0B000000A0000000 X-QQ-FEAT: 7QbCsSX/jDajboDIHjqXf60bGtIy5uaeLeazsMLa+7tUdkr3UGx10netYGscB urao5noZ9e0frsU9G1KBZ9rFA+mY4cvgSB865YOu0EOCQ8l9rF2XEOdiTTkNnEFQbed40my 8eFOG2ZNIilDyadp3uJXT0MYK7YxgbWYDN5wzN9QVebgwF3leCB/t4axu/g/O4NXHOBTnRd iriLXHVh1GlKHeBdaPzczRTETLTg0QYdVRfn/arFPO8w0OF2aJSUwKWfms3kSlC3tJB5LKz 4BoRRKhVkbH4zwvEQUU6h4053IIjk9G1cFJ9kIWgHo2ndiphh4Towdx++by0wIwTFIyYuZl pCAysmh43140F197LcSw+J3ajAS3wD44tSP3Yg9VWU1+pV6Ggk= X-QQ-GoodBg: 0 X-BIZMAIL-ID: 8927406621294641602 From: Song Shuai To: paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, robh+dt@kernel.org, frowand.list@gmail.com, ajones@ventanamicro.com, alexghiti@rivosinc.com, mpe@ellerman.id.au, arnd@arndb.de, songshuaishuai@tinylab.org, rppt@kernel.org, samuel@sholland.org, panqinglin2020@iscas.ac.cn, conor.dooley@microchip.com, anup@brainfault.org, xianting.tian@linux.alibaba.com, anshuman.khandual@arm.com, heiko@sntech.de Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH V1 0/3] Revert huge-paged linear mapping and its related fixups Date: Sun, 25 Jun 2023 22:09:28 +0800 Message-Id: <20230625140931.1266216-1-songshuaishuai@tinylab.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-3 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1769684566103959178?= X-GMAIL-MSGID: =?utf-8?q?1769684566103959178?= We have encountered these two issues about huge-paged linear mapping since v6.4-rc1: 1. Bug report: kernel paniced when system hibernates[1] OpenSbi [v0.8,v1.3) set the PMP regions as !no-map, and the commit 3335068f8721 ("riscv: Use PUD/P4D/PGD pages for the linear mapping") mapped them in linear mapping. The hibernation process attempted to save/restore these mapped regions resulting in access fault. This issue was temporarily fixed by commit ed309ce52218 ("RISC-V: mark hibernation as nonportable"). But as Alex's RFC and Rob's response stats in another thread [2] , "Hibernation is only one case. Speculative accesses could also occur." So this fixing commit seems not the perfect answer to this issue. 2. Bug report: kernel paniced while booting (with UEFI )[3] During the booting with UEFI, UEFI Memory Mapping overwrote the memblock. The phys_ram_base was set as the end address of mmoderes0 (like 0x80040000 for 256 KiB mmoderes0@80000000), which resulted the VA based on 2M-aligned PA was not 2M-aligned using va_pa_offset (PAGE_OFFSET - phys_ram_base) to translate. The best_map_size() from commit 3335068f8721 didn't check the virtual alignment before choosing a map size. and then a "VA hole" was created where page faults always occurred. This issue was fixed by commit 49a0a3731596 ("riscv: Check the virtual alignment before choosing a map size"), But this fixing commit has a side-effect ("the possible third one" as Alex said in this thread). There are numerous PTE allocations slowing down the boot time and consuming some system memory when UEFI booting (Note that it's not involved when booting directly with OpenSbi, where phys_ram_base is the 2M-aligned base of DRAM). In my test, compared with/out reverting both commit 49a0a3731596 and commit 3335068f8721, I must wait ~20s for the linear mapping creation and mem_init_print_info() reported ~8M extra reserved memory. To eliminate this side-effect, We should find a way to align VA and PA on a 2MB boundary. The simplest way is reverting the commit 3335068f8721 ("riscv: Use PUD/P4D/PGD pages for the linear mapping"). Using PUD/P4D/PGD pages for the linear mapping to improve the performance is marginal from a recent talk [4] from Mike Rapoport. OpenSbi had marked all the PMP-protected regions as "no-map" [5] to practice this talk. For all those reasons, let's revert these related commits: - commit 3335068f8721 ("riscv: Use PUD/P4D/PGD pages for the linear mapping") - commit 49a0a3731596 ("riscv: Check the virtual alignment before choosing a map size") - commit ed309ce52218 ("RISC-V: mark hibernation as nonportable") [1]: https://lore.kernel.org/linux-riscv/CAAYs2=gQvkhTeioMmqRDVGjdtNF_vhB+vm_1dHJxPNi75YDQ_Q@mail.gmail.com/ [2]: https://lore.kernel.org/linux-kernel/20230530080425.18612-1-alexghiti@rivosinc.com/ [3]: https://lore.kernel.org/linux-riscv/tencent_7C3B580B47C1B17C16488EC1@qq.com/ [4]: https://lwn.net/Articles/931406/ [5]: https://github.com/riscv-software-src/opensbi/commit/8153b2622b08802cc542f30a1fcba407a5667ab9 Song Shuai (3): Revert "RISC-V: mark hibernation as nonportable" Revert "riscv: Check the virtual alignment before choosing a map size" Revert "riscv: Use PUD/P4D/PGD pages for the linear mapping" arch/riscv/Kconfig | 5 +--- arch/riscv/include/asm/page.h | 16 ------------- arch/riscv/mm/init.c | 43 +++++++---------------------------- arch/riscv/mm/physaddr.c | 16 ------------- drivers/of/fdt.c | 11 ++++----- 5 files changed, 14 insertions(+), 77 deletions(-)