Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp1398039pxb; Thu, 14 Apr 2022 05:26:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwSchRrOjneqJPn2gqy/F4k1SpDMcu4s3bT5bgUu64t151rBHkUe/1KBT6aa/S+9ZFRMiFi X-Received: by 2002:a17:90a:3c84:b0:1ca:56c8:5793 with SMTP id g4-20020a17090a3c8400b001ca56c85793mr3451162pjc.226.1649939214964; Thu, 14 Apr 2022 05:26:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649939214; cv=none; d=google.com; s=arc-20160816; b=zkqmhhYRP+rtYlEVjx/BawUP2S1ntaSo7F82uPnU1gTxnapaQvKvVwAAqvwn3mt0nd 23rUIau7lF15+w0KHCvYK9r1LYl1+5+8De5IiV2GNGKESOHZ7gidCMdKlfYokDtCrJAx 9NnJ4sfwpEgK1NA8r/Y5e7WJI5iX9gMb6hCIJvsRkjwr4PsWbKNx5vWgdfv9bPKR+pck wSAwotKbIoj0dc4CxycU0h2pDkDebkm5O2T5V986wbwXXX747aiGkKJDP6O9OmG/4Ht8 +mRxKLMEhCTQgvzyJ3aybhoYiJf0eYci+16mg6WGpu4GE9FvHmixFFgOYuzShSOssGeV Scaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=kZNwXGYmwrv+oJJsQg1/z1tSxu35CFeyghiK4U9ahL8=; b=wfrMd9qNeIpLxTyAC8nKw5krcwZ1FiDQdd30npKl3864kwYrX19HphkHl+mnuBFct3 KAwwmui6hXSiUWya5v5HNBXUuyAyYdLW/epLnQnXHzZW44GnBHhVcLR+EUMyBHIrTjSx okcxKFs+adNz/ZZmToLCnfY3y15oca3lfqQM0sZMvxzw3coL+B/QHDS2AVWdHJXLeh3J J44th0/xHzkQQS8dOQ75+hfy3CJ+WdQ+FEkKnybt6ruzD0cfUs8KF/Kg3VqR045uI0oo 6E/F/h9s3i9WiemAD1v0ENzyG+3KvNw6KdgOJtycK4HtKhPIQx2eIEoS6YmdqOV+76RQ I3cQ== 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; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e5-20020a17090301c500b00153bb806739si13898920plh.478.2022.04.14.05.26.43; Thu, 14 Apr 2022 05:26:54 -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; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241974AbiDNJ5A (ORCPT + 99 others); Thu, 14 Apr 2022 05:57:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233679AbiDNJ45 (ORCPT ); Thu, 14 Apr 2022 05:56:57 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88F86CEA; Thu, 14 Apr 2022 02:54:30 -0700 (PDT) Received: from dggpemm500020.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4KfF9Z22C9zFpvV; Thu, 14 Apr 2022 17:52:02 +0800 (CST) Received: from dggpemm500014.china.huawei.com (7.185.36.153) by dggpemm500020.china.huawei.com (7.185.36.49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 14 Apr 2022 17:54:28 +0800 Received: from localhost.localdomain (10.175.112.125) by dggpemm500014.china.huawei.com (7.185.36.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 14 Apr 2022 17:54:26 +0800 From: Wupeng Ma To: , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v2 0/9] introduce mirrored memory support for arm64 Date: Thu, 14 Apr 2022 18:13:05 +0800 Message-ID: <20220414101314.1250667-1-mawupeng1@huawei.com> X-Mailer: git-send-email 2.18.0.huawei.25 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.175.112.125] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To dggpemm500014.china.huawei.com (7.185.36.153) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,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 From: Ma Wupeng Commit b05b9f5f9dcf ("x86, mirror: x86 enabling - find mirrored memory ranges") introduced mirrored memory support for x86. This support rely on UEFI to report mirrored memory address ranges. See UEFI 2.5 spec pages 157-158: http://www.uefi.org/sites/default/files/resources/UEFI%202_5.pdf Memory mirroring is a technique used to separate memory into two separate channels, usually on a memory device, like a server. In memory mirroring, one channel is copied to another to create redundancy. This method makes input/output (I/O) registers and memory appear with more than one address range because the same physical byte is accessible at more than one address. Using memory mirroring, higher memory reliability and a higher level of memory consolidation are possible. Arm64 can support this too. So mirrored memory support is added to support arm64. Efi_fake_mem is used for testing mirrored features and will not be used in production environment. This test features can fake memory's attribute values. The reason why efi_fake_mem support is put first is that memory's attribute is reported by BIOS which is hard to simulate. With this support, any arm64 machines with efi support can easily test mirrored features. The main purpose of this patchset is to introduce mirrored support for arm64 and we have already fixed the problems we had which is shown in patch #5 to patch #7 and try to bring total isolation in patch #8 which will disable mirror feature if kernelcore is not specified. In order to test this support in arm64: - patch this patchset - add efi_fake_mem=8G@0:0x10000 in kernel parameter to simulate mirrored memroy between phy addr 0-8G. - add kernelcore=mirror in kernel parameter - start you kernel Patch #1-#2 introduce efi_fake_mem support for arm64. Patch #3-#4 introduce mirrored memory support form arm64. Patch #5-#7 fix some bugs for arm64 if memory reliable is enabled. Patch #8 disable mirror feature if kernelPHYS_PFNcore is not specified. Patch #9 remove some redundant code in ia64 efi_init. Changelog since v1: - update changelog in cover letter - use PHYS_PFN in patch #7 Ma Wupeng (9): efi: Make efi_print_memmap() public arm64: efi: Add fake memory support efi: Make efi_find_mirror() public arm64/mirror: arm64 enabling - find mirrored memory ranges mm: Ratelimited mirrored memory related warning messages mm: Demote warning message in vmemmap_verify() to debug level mm: Calc the right pfn if page size is not 4K efi: Disable mirror feature if kernelcore is not specified ia64/efi: Code simplification in efi_init .../admin-guide/kernel-parameters.txt | 4 +- arch/arm64/kernel/setup.c | 3 ++ arch/ia64/kernel/efi.c | 37 +----------------- arch/x86/include/asm/efi.h | 5 --- arch/x86/platform/efi/efi.c | 39 ------------------- drivers/firmware/efi/Kconfig | 2 +- drivers/firmware/efi/efi.c | 26 +++++++++++++ drivers/firmware/efi/memmap.c | 16 ++++++++ include/linux/efi.h | 4 ++ include/linux/mm.h | 2 + mm/memblock.c | 4 +- mm/page_alloc.c | 4 +- mm/sparse-vmemmap.c | 2 +- 13 files changed, 60 insertions(+), 88 deletions(-) -- 2.18.0.huawei.25