From patchwork Mon Jul 23 01:57:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AKASHI Takahiro X-Patchwork-Id: 10539507 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 247A113BB for ; Mon, 23 Jul 2018 01:59:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0DD3428492 for ; Mon, 23 Jul 2018 01:59:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0BC2B2849D; Mon, 23 Jul 2018 01:59:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 8C8FF2848B for ; Mon, 23 Jul 2018 01:59:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=8ly6aqL7oT5Ay1AZBA7kNV0kvfmlbtsqXaJnl8iBxVs=; b=q2zw9QKTvFdQdVuhMUzIzcjuUA JWfXW5fveU02/sl05O35R1Hr7SO2k0j+oa6DMNWAlvxjPY5EUNotADNKI1QZzHiD+SgnAnXyZl+EY CT05whLqELPoXak9WkLd8PN58oS7pCZe0H/tvmARvcKTUurCDErPEiwTHe/s/5cLBGzYWA/q650VA bsBP8hou9wGA+IZBzckvkUPwFdALPS/HyGBWdKq1j1pU7hf6EJQxWG9IFcIHK8hPyewkvllRK46q5 kA8DaFwt5NOxpDZLKjswA2LdDCV/NwRN9z4rCctc9QcsJp/YUs4dcB3vwnF7+mleSpA4ztkmKmpP5 FiWFWafQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ8H-0001WG-CQ; Mon, 23 Jul 2018 01:59:29 +0000 Received: from mail-pl0-x242.google.com ([2607:f8b0:400e:c01::242]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ8B-00018R-BJ for linux-arm-kernel@lists.infradead.org; Mon, 23 Jul 2018 01:59:26 +0000 Received: by mail-pl0-x242.google.com with SMTP id 94-v6so7540170ple.12 for ; Sun, 22 Jul 2018 18:59:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=VxevqCZhbKQ45BiJjQYFdciJrVc/rEp2DL/VeorXBAY=; b=gnuUno+OgQw9cCj7YXXmKBGdCpWCmY1R3+e52F2/cMxWD/ODZpv21K+jL+KbwNYIJ2 9s1Y8HIOctFjO17sUm3QXi7ZPLl/P3LKxeZErMVV6PRZyKRVEiPwzCk1lPUz0WejJJEU EFbWwLLpoLysdhjMvkClHiWG7B/9WtNjk6YTU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=VxevqCZhbKQ45BiJjQYFdciJrVc/rEp2DL/VeorXBAY=; b=Xm6PnhpQEb99z5Rt8HDb4AQ0gf8RRPlSfZsunBPTLAAYC5nxJsv5gb6fyS+bvAhFti UzfEtqnTWmsqAjwsU8Zekd2DT2O0ogRoM+5cK24XOM7vJRt/N7kBMfZYca+wTUn1iy0J GSvrKWZHOXWt1j4i+Y1NXDKcmzBf9/BNa4lRk2zj5p6PFKw99U8ousEwflEX8v8FORwD lao7NRERwWKyh/kMMw1oMJd+BMp1dPGAc9KDZQCfm2sVeH/L9b97t91c0NPzyUz1t2iq NXjhBY49iyz5iXGnSPtpf1UmBh+yKiRjI9mwqnfFqgWbcge2O2PfA4s4xMXxnxucLqSl GqNQ== X-Gm-Message-State: AOUpUlGPCaHgh0+zUJVw9zjQmfbcrhdg1b5wLaphrhMfjGMcb1oD8K8d RgQZoRPgRKp0KZph7wMIE+HGiQ== X-Google-Smtp-Source: AAOMgpcuwqefyGHc5fFVOmJlZjG5COrX0ofFxjg9KekhfT9Q0Xzkev7CVic4pZjlaKNBaKPwDPNY4A== X-Received: by 2002:a17:902:8645:: with SMTP id y5-v6mr10978442plt.334.1532311152593; Sun, 22 Jul 2018 18:59:12 -0700 (PDT) Received: from linaro.org ([121.95.100.191]) by smtp.googlemail.com with ESMTPSA id 85-v6sm20185621pgd.81.2018.07.22.18.59.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Jul 2018 18:59:12 -0700 (PDT) From: AKASHI Takahiro To: catalin.marinas@arm.com, will.deacon@arm.com, rjw@rjwysocki.net, lenb@kernel.org, ard.biesheuvel@linaro.org Subject: [PATCH v4 1/5] arm64: export memblock_reserve()d regions via /proc/iomem Date: Mon, 23 Jul 2018 10:57:28 +0900 Message-Id: <20180723015732.24252-2-takahiro.akashi@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180723015732.24252-1-takahiro.akashi@linaro.org> References: <20180723015732.24252-1-takahiro.akashi@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180722_185924_062408_D87285A2 X-CRM114-Status: GOOD ( 15.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, lorenzo.pieralisi@arm.com, graeme.gregory@linaro.org, al.stone@linaro.org, bhsharma@redhat.com, tbaicar@codeaurora.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, james.morse@arm.com, hanjun.guo@linaro.org, sudeep.holla@arm.com, dyoung@redhat.com, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: James Morse There has been some confusion around what is necessary to prevent kexec overwriting important memory regions. memblock: reserve, or nomap? Only memblock nomap regions are reported via /proc/iomem, kexec's user-space doesn't know about memblock_reserve()d regions. Until commit f56ab9a5b73ca ("efi/arm: Don't mark ACPI reclaim memory as MEMBLOCK_NOMAP") the ACPI tables were nomap, now they are reserved and thus possible for kexec to overwrite with the new kernel or initrd. But this was always broken, as the UEFI memory map is also reserved and not marked as nomap. Exporting both nomap and reserved memblock types is a nuisance as they live in different memblock structures which we can't walk at the same time. Take a second walk over memblock.reserved and add new 'reserved' subnodes for the memblock_reserved() regions that aren't already described by the existing code. (e.g. Kernel Code) We use reserve_region_with_split() to find the gaps in existing named regions. This handles the gap between 'kernel code' and 'kernel data' which is memblock_reserve()d, but already partially described by request_standard_resources(). e.g.: | 80000000-dfffffff : System RAM | 80080000-80ffffff : Kernel code | 81000000-8158ffff : reserved | 81590000-8237efff : Kernel data | a0000000-dfffffff : Crash kernel | e00f0000-f949ffff : System RAM reserve_region_with_split needs kzalloc() which isn't available when request_standard_resources() is called, use an initcall. Reported-by: Bhupesh Sharma Reported-by: Tyler Baicar Suggested-by: Akashi Takahiro Signed-off-by: James Morse Fixes: d28f6df1305a ("arm64/kexec: Add core kexec support") Reviewed-by: Ard Biesheuvel CC: Mark Rutland --- arch/arm64/kernel/setup.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 30ad2f085d1f..5b4fac434c84 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -241,6 +241,44 @@ static void __init request_standard_resources(void) } } +static int __init reserve_memblock_reserved_regions(void) +{ + phys_addr_t start, end, roundup_end = 0; + struct resource *mem, *res; + u64 i; + + for_each_reserved_mem_region(i, &start, &end) { + if (end <= roundup_end) + continue; /* done already */ + + start = __pfn_to_phys(PFN_DOWN(start)); + end = __pfn_to_phys(PFN_UP(end)) - 1; + roundup_end = end; + + res = kzalloc(sizeof(*res), GFP_ATOMIC); + if (WARN_ON(!res)) + return -ENOMEM; + res->start = start; + res->end = end; + res->name = "reserved"; + res->flags = IORESOURCE_MEM; + + mem = request_resource_conflict(&iomem_resource, res); + /* + * We expected memblock_reserve() regions to conflict with + * memory created by request_standard_resources(). + */ + if (WARN_ON_ONCE(!mem)) + continue; + kfree(res); + + reserve_region_with_split(mem, start, end, "reserved"); + } + + return 0; +} +arch_initcall(reserve_memblock_reserved_regions); + u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; void __init setup_arch(char **cmdline_p) From patchwork Mon Jul 23 01:57:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AKASHI Takahiro X-Patchwork-Id: 10539513 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id ABDE717FD for ; Mon, 23 Jul 2018 02:11:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8C3A9285F0 for ; Mon, 23 Jul 2018 02:11:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 80A74285B5; Mon, 23 Jul 2018 02:11:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1D5B6285EC for ; Mon, 23 Jul 2018 02:11:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=DvPQbA87EBakvPk3e8c9LZbLQDVPJF18lccK/yVW00I=; b=GZFlWp+5Tns+hIJIubAxBTz3+b WXnm1j1+j/8La+/ZtAUEM89q23a4Slf7a/h1EVGjXL10UVCQKzdomnJajftikxgqOOQbM2jDszk6S nykIxSXAmT79yCyT8ErfquioxAUsxQmGljxdaNt3Cv/qIiRxqmwcsftT1V/7VvaMI6uUhRAGFrAiM TFDJQh7tNqNxo4D+YZeLh68sB7xkiqVhEVuBtdY9Wt+PW9z8fmC3tnHkLQV3dSYYNI0SWrBTbXj7n jsmF5+gVfx791EZs3WhWLvBXMCdBJ92P8y9i7B6wpUDhOnTpSQqnhT6dHeYTZ0IyhpKfX2AKv9Hiy gq+9GEAw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQJj-0007h5-LL; Mon, 23 Jul 2018 02:11:19 +0000 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ8K-0001Jh-IR for linux-arm-kernel@lists.infradead.org; Mon, 23 Jul 2018 01:59:39 +0000 Received: by mail-pg1-x542.google.com with SMTP id p23-v6so11054405pgv.13 for ; Sun, 22 Jul 2018 18:59:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=A1OqVoZAh5Xl0rWEI6oRjLgOW69kgPoUkzG/O/9JyGg=; b=NGMho5oNU0sE4qV10nbpz5y3r5YofIIe50EThWfDdQjHJMZlrMEFY90K7dYQWqHXxV Qh0nh3+tX2xghAHqx/FB44jlwZT5daZ96QijBVA5BP8D4aeAnGZ8H2IoXtwqMxzxxU8J 9XAeiQwgbJd3sGg5UKoYvGUKRUyuc6QE5BVKk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=A1OqVoZAh5Xl0rWEI6oRjLgOW69kgPoUkzG/O/9JyGg=; b=Nt8TGfINnHEbo4c5QK4+mLJ2ec8gGl2Bu3FUqhAythRVhae1JQC6VB4GKYdODhFEiY +gFej2TT9EJQaiskUrB9/Qp8KrhsIwhMILhPYt/KmpUTpOfpwhLG2xqyqBlUrtJiPaPa P3NmylBY4/9py0RnfRM766WKxKZG+l84/0OuyowD5DhcvzdhCNeUUUnOs118Cd+UkCGb 9YLvn7ieWhNrwbbVyy+Ek89+vmr5TZ/nteaF5TyaW3Y53bnDYN26eeITtBz/4kcaMtHJ TdHX7MANBfK0JQjWnEt7wnJOOKmnnVw2ojaHw57/Kmz86SD5+Pi5Ps+9otdpLF2Rooal ILrw== X-Gm-Message-State: AOUpUlEvzjNw4/utYzdhpkq7LaDR2E+mqZo/TEg1p/OCWnoxHYfspBgM Lnu2qBhs65XTqR0CRMjcDxahPQ== X-Google-Smtp-Source: AAOMgpevYWf5hsR2/cmWNRtclg9mDSVcbsTeXgzYkZzdnaXpWdaF5cCy0S8ephRxEz93H+eK6jbbuQ== X-Received: by 2002:a63:af14:: with SMTP id w20-v6mr10746599pge.47.1532311162129; Sun, 22 Jul 2018 18:59:22 -0700 (PDT) Received: from linaro.org ([121.95.100.191]) by smtp.googlemail.com with ESMTPSA id m26-v6sm10000028pfi.102.2018.07.22.18.59.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Jul 2018 18:59:21 -0700 (PDT) From: AKASHI Takahiro To: catalin.marinas@arm.com, will.deacon@arm.com, rjw@rjwysocki.net, lenb@kernel.org, ard.biesheuvel@linaro.org Subject: [PATCH v4 2/5] drivers: acpi: add dependency of EFI for arm64 Date: Mon, 23 Jul 2018 10:57:29 +0900 Message-Id: <20180723015732.24252-3-takahiro.akashi@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180723015732.24252-1-takahiro.akashi@linaro.org> References: <20180723015732.24252-1-takahiro.akashi@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180722_185933_171034_87B9735F X-CRM114-Status: GOOD ( 12.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, lorenzo.pieralisi@arm.com, graeme.gregory@linaro.org, al.stone@linaro.org, bhsharma@redhat.com, tbaicar@codeaurora.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, AKASHI Takahiro , james.morse@arm.com, hanjun.guo@linaro.org, sudeep.holla@arm.com, dyoung@redhat.com, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP As Ard suggested, CONFIG_ACPI && !CONFIG_EFI doesn't make sense on arm64, while CONFIG_ACPI and CONFIG_CPU_BIG_ENDIAN doesn't make sense either. As CONFIG_EFI already has a dependency of !CONFIG_CPU_BIG_ENDIAN, it is good enough to add a dependency of CONFIG_EFI to avoid any useless combination of configuration. This bug, reported by Will, will be revealed when my patch series, "arm64: kexec,kdump: fix boot failures on acpi-only system," is applied and the kernel is built under allmodconfig. Signed-off-by: AKASHI Takahiro Suggested-by: Ard Biesheuvel --- drivers/acpi/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index b533eeb6139d..15ab1daaa808 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -6,7 +6,7 @@ menuconfig ACPI bool "ACPI (Advanced Configuration and Power Interface) Support" depends on !IA64_HP_SIM - depends on IA64 || X86 || ARM64 + depends on IA64 || X86 || (ARM64 && EFI) depends on PCI select PNP default y if (IA64 || X86) From patchwork Mon Jul 23 01:57:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AKASHI Takahiro X-Patchwork-Id: 10539509 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9FB9513BB for ; Mon, 23 Jul 2018 02:00:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 893C72848D for ; Mon, 23 Jul 2018 02:00:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 86E9C28517; Mon, 23 Jul 2018 02:00:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 2CD642848D for ; Mon, 23 Jul 2018 02:00:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=zL5P2I1Eg3ypXhGL7qfub6Z4ZNcOpVHCRMGHUiQeRyM=; b=BSKKB85DGscrD5OB9/air6cllM UIvzy4ge8XZlNDJJufhtDR5Z4gNWqyhzkq8kEzPoIlXoxQmbyvVEQl7dKil9j7bmChu7bMUWmJaYs 0UW533L3QaEERPFtEC9+IzEJFuluD6/QPk3+M9ntSG8gzl8HtcAix7m0iDowBZNpc8FJFdE7DCP4x 5CM0jaMHbV3c22Olm41CBuM8DkB4duGD3cjgQvjK/AWVLDJO1gZwxno+B4d2/kUfjY4+o9dziyWlB xdXcLa+u0e5JSItdC2iBpd3zjtwjT2E9Lysfk5faAQTeRh6v1Sj8dN1ysRpzO2s4n1DVIKsh4p5Mo P6bq0/9w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ8w-0002Id-0n; Mon, 23 Jul 2018 02:00:10 +0000 Received: from merlin.infradead.org ([2001:8b0:10b:1231::1]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ8m-00021i-Ao for linux-arm-kernel@bombadil.infradead.org; Mon, 23 Jul 2018 02:00:00 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=merlin.20170209; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=erM0Z9H4UEy3rQv1/bN5wC7X6sLU17kati65NrFno1I=; b=zgCJlxTxrWVAlNas0pNJFWYys FlLl3ZSCzYCNvOY/FYVtP4riNkihm4pPDlQfc+srfuTLZhtxTuy2KpKkD0CML1W2EpHob6p8/ZDAC 6PZdLEVdYv8sgiEQwmxQbtuz1OI2W8D9ddYEW+8rO418fX+6609kg5/HZYl58LiYQVKjZiDDHrbwD ik3FxNMGcnLPE1Rea/E4tWL5KZOlD5j3hpvArHsDp+A+35QyfmIDC3gC157swjaoOjZ3fD+iTrAE/ 2agoG2aKjGT0KUkicjszx6ITt9Axx3lqm5Lz78z0EVakiQ+XPddtCAheBl+x/uejnbJPfWXPSDKOY hh5/CmCnA==; Received: from mail-pl0-x241.google.com ([2607:f8b0:400e:c01::241]) by merlin.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ8i-0002ls-1D for linux-arm-kernel@lists.infradead.org; Mon, 23 Jul 2018 01:59:58 +0000 Received: by mail-pl0-x241.google.com with SMTP id 6-v6so7550309plb.0 for ; Sun, 22 Jul 2018 18:59:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=erM0Z9H4UEy3rQv1/bN5wC7X6sLU17kati65NrFno1I=; b=TBTOJQLkajO3HY6BXZarrvI5rygueAf02u7zvXLiL8oTEfyaCJiEWTAKkFQD5siKva mwaNxKr1ko7O/hpoL0Yf46+dJ/Gmq4FUsvC+B1nuuSBCRmjKi15MRKmf61rtoDX8JMnh nAAee1TLGfgJeNxcajORbEOx9nj83BlAi5ICU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=erM0Z9H4UEy3rQv1/bN5wC7X6sLU17kati65NrFno1I=; b=MH5lgDJNlMSGNpwSsK8APNGYn3I97qbGPfEYtztFqb+t4k8ucSMn3QX3WViNQiNyNh NwXQsE48aNHunv2pAGwLd2u6FGaXbY5wmp2LGm56D2YuLV7cR7LRvSUBgftuiCicFZL9 0luTRmFsOA8LEFvTr73hVjjFIbI4DSqD0BPk7qHQfGzsV37hYE5eNQadp0QxQnJcPv1G o1lyRegN6ftezIo2CfzOp+72I4wbKeQhjRmGsfSV454qT3xc0ouZrqwr2cEQu9AznGNe sqjfULxdDVnd8edVldsTxgkq4xCV940TEakgSyoITmMua/3A3+ivApu7Fxcqps5jOueq ovPg== X-Gm-Message-State: AOUpUlEieRaLpeMZJ7WTsCG5rTQupeQtC3ZTuHn3qIAqrVdmQGGguCIh nVvrOGUOjNjAD6aObJ49NQ+RLA== X-Google-Smtp-Source: AAOMgpcSpIUIcUkR3QCXsLSSr+NEIoUVNT6LpOgFCnbyOdGoKRDptWin1nb676nh1J6ZGLVtbaziSA== X-Received: by 2002:a17:902:583:: with SMTP id f3-v6mr11083324plf.115.1532311176843; Sun, 22 Jul 2018 18:59:36 -0700 (PDT) Received: from linaro.org ([121.95.100.191]) by smtp.googlemail.com with ESMTPSA id h190-v6sm15115682pge.85.2018.07.22.18.59.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Jul 2018 18:59:36 -0700 (PDT) From: AKASHI Takahiro To: catalin.marinas@arm.com, will.deacon@arm.com, rjw@rjwysocki.net, lenb@kernel.org, ard.biesheuvel@linaro.org Subject: [PATCH v4 3/5] efi/arm: preserve early mapping of UEFI memory map longer for BGRT Date: Mon, 23 Jul 2018 10:57:30 +0900 Message-Id: <20180723015732.24252-4-takahiro.akashi@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180723015732.24252-1-takahiro.akashi@linaro.org> References: <20180723015732.24252-1-takahiro.akashi@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180722_215956_109095_E5A9E9CB X-CRM114-Status: GOOD ( 16.74 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, lorenzo.pieralisi@arm.com, graeme.gregory@linaro.org, al.stone@linaro.org, bhsharma@redhat.com, tbaicar@codeaurora.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, james.morse@arm.com, hanjun.guo@linaro.org, sudeep.holla@arm.com, dyoung@redhat.com, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: Ard Biesheuvel The BGRT code validates the contents of the table against the UEFI memory map, and so it expects it to be mapped when the code runs. On ARM, this is currently not the case, since we tear down the early mapping after efi_init() completes, and only create the permanent mapping in arm_enable_runtime_services(), which executes as an early initcall, but still leaves a window where the UEFI memory map is not mapped. So move the call to efi_memmap_unmap() from efi_init() to arm_enable_runtime_services(). Signed-off-by: Ard Biesheuvel --- drivers/firmware/efi/arm-init.c | 1 - drivers/firmware/efi/arm-runtime.c | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/efi/arm-init.c b/drivers/firmware/efi/arm-init.c index b5214c143fee..388a929baf95 100644 --- a/drivers/firmware/efi/arm-init.c +++ b/drivers/firmware/efi/arm-init.c @@ -259,7 +259,6 @@ void __init efi_init(void) reserve_regions(); efi_esrt_init(); - efi_memmap_unmap(); memblock_reserve(params.mmap & PAGE_MASK, PAGE_ALIGN(params.mmap_size + diff --git a/drivers/firmware/efi/arm-runtime.c b/drivers/firmware/efi/arm-runtime.c index 5889cbea60b8..59a8c0ec94d5 100644 --- a/drivers/firmware/efi/arm-runtime.c +++ b/drivers/firmware/efi/arm-runtime.c @@ -115,6 +115,8 @@ static int __init arm_enable_runtime_services(void) return 0; } + efi_memmap_unmap(); + if (efi_runtime_disabled()) { pr_info("EFI runtime services will be disabled.\n"); return 0; From patchwork Mon Jul 23 01:57:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AKASHI Takahiro X-Patchwork-Id: 10539511 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A083990E3 for ; Mon, 23 Jul 2018 02:00:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8A922284B9 for ; Mon, 23 Jul 2018 02:00:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8852B284EE; Mon, 23 Jul 2018 02:00:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 2E19F28500 for ; Mon, 23 Jul 2018 02:00:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=E+mwGhmQrss0QWNl7fNLUEwVd+32wWIEGmagoExG3/A=; b=IH4BDQb0UN1MoLJvgqUtn9py8o aacKZI4zU8n0wlymAC6ooYatP8rTXyGz/impbZbHhOacZD4T5Ije0FbYCqZ6v4k9cUh0LThSTElO1 SRCQijYQt8+jHdXlLYxKBi2QbOzei/p8FF2o4sm12D4/Uj+UISNoiQoJsU55u0owIlMAUkD43L4CI LcKkBUHEkm0KmBbwGWroulVqF+4jHd71t2nepUkCA3WGPOdy2xnOyG/1ZBIzQhJQSC4qlW8dzlN7z b9VZQQm+vDVUeE5oEO3jylZ4YuoghmTDoHrjWbbr4BByE3d7kf5Kl0+doQCqCqstKiMAbp8GGUrlk xtmVe7Sw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ9I-0002x3-Dq; Mon, 23 Jul 2018 02:00:32 +0000 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ8h-0001sT-IG for linux-arm-kernel@lists.infradead.org; Mon, 23 Jul 2018 02:00:09 +0000 Received: by mail-pg1-x542.google.com with SMTP id f1-v6so11050058pgq.12 for ; Sun, 22 Jul 2018 18:59:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=GtIoJieKMHTN394dMOednMEC4qx4H0+B96ztFdyM5HA=; b=AoWFjrqTENdZ9sLR9tvk1DXtMK9FYxuVEAVx/sMtK6DtxQQP0xrnHfemjwcM4cMMNk GCBLIkc+Vmd6T8VbZxCOrxbZpA3z0bYgz+SzuGUilDfWEtTsBCyvrj1zo1j4cBD/2JtH XwlZXgHsekdRhkURfYmzIZ3JQpB832BHynTqw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=GtIoJieKMHTN394dMOednMEC4qx4H0+B96ztFdyM5HA=; b=DtHg70Hb5Toc9Ftlg8aMqKrLsnGmJs9OjwyLMzp5lJi37MKd8nERsxpga4SVfvT6gV ZbSjP1w8EE9/J+U0qK+3CcIc6UjeepPBUgxo642LOviH/f10Y+nBkR2PF9Q1JuRN5g4s XHx9uZnFU2rMezZNHHy397nz2RMnGCqJMyL2/c470KPO6ojAvAbnB4daTEGnJZB4uiKK fmCjMBPV06QoZjnqDgbPVVJwv9ZO1Phc3B04DhSRu5xCv0+iYC4D/0cZLa8jch2ZeRCZ uaxkJmBWz2WxW7/lIKA/k+8/LNtzDPT8H1uD1/49NnGKS9mgvkgDvl25t4ZJeTb/VF/M 0i0g== X-Gm-Message-State: AOUpUlG1OWsPoG5VtLXxQgTNFwAmQYaN5RnxwZ8ajLlGhItE53KOHVvC Lbchau12BWfudpGDXuW6ml/azw== X-Google-Smtp-Source: AAOMgpfn7SiEA5UlKYRa4N3WBHYhBXi7Jeb1Cz5AYzBjJQraGUylWAveqkruQzCpcyPtp3v0wHEeng== X-Received: by 2002:a62:b40c:: with SMTP id h12-v6mr11414833pfn.18.1532311185039; Sun, 22 Jul 2018 18:59:45 -0700 (PDT) Received: from linaro.org ([121.95.100.191]) by smtp.googlemail.com with ESMTPSA id a134-v6sm8384082pfa.158.2018.07.22.18.59.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Jul 2018 18:59:44 -0700 (PDT) From: AKASHI Takahiro To: catalin.marinas@arm.com, will.deacon@arm.com, rjw@rjwysocki.net, lenb@kernel.org, ard.biesheuvel@linaro.org Subject: [PATCH v4 4/5] efi/arm: map UEFI memory map even w/o runtime services enabled Date: Mon, 23 Jul 2018 10:57:31 +0900 Message-Id: <20180723015732.24252-5-takahiro.akashi@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180723015732.24252-1-takahiro.akashi@linaro.org> References: <20180723015732.24252-1-takahiro.akashi@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180722_185955_900242_038E9205 X-CRM114-Status: GOOD ( 13.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, lorenzo.pieralisi@arm.com, graeme.gregory@linaro.org, al.stone@linaro.org, bhsharma@redhat.com, tbaicar@codeaurora.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, AKASHI Takahiro , james.morse@arm.com, hanjun.guo@linaro.org, sudeep.holla@arm.com, dyoung@redhat.com, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Under the current implementation, UEFI memory map will be mapped and made available in virtual mappings only if runtime services are enabled. But in a later patch, we want to use UEFI memory map in acpi_os_ioremap() to create mappings of ACPI tables using memory attributes described in UEFI memory map. See the following commit: arm64: acpi: fix alignment fault in accessing ACPI tables So, as a first step, arm_enter_runtime_services() is modified, alongside Ard's patch[1], so that UEFI memory map will not be freed even if efi=noruntime. [1] https://marc.info/?l=linux-efi&m=152930773507524&w=2 Signed-off-by: AKASHI Takahiro Reviewed-by: Ard Biesheuvel --- drivers/firmware/efi/arm-runtime.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/firmware/efi/arm-runtime.c b/drivers/firmware/efi/arm-runtime.c index 59a8c0ec94d5..a00934d263c5 100644 --- a/drivers/firmware/efi/arm-runtime.c +++ b/drivers/firmware/efi/arm-runtime.c @@ -117,6 +117,13 @@ static int __init arm_enable_runtime_services(void) efi_memmap_unmap(); + mapsize = efi.memmap.desc_size * efi.memmap.nr_map; + + if (efi_memmap_init_late(efi.memmap.phys_map, mapsize)) { + pr_err("Failed to remap EFI memory map\n"); + return 0; + } + if (efi_runtime_disabled()) { pr_info("EFI runtime services will be disabled.\n"); return 0; @@ -129,13 +136,6 @@ static int __init arm_enable_runtime_services(void) pr_info("Remapping and enabling EFI services.\n"); - mapsize = efi.memmap.desc_size * efi.memmap.nr_map; - - if (efi_memmap_init_late(efi.memmap.phys_map, mapsize)) { - pr_err("Failed to remap EFI memory map\n"); - return -ENOMEM; - } - if (!efi_virtmap_init()) { pr_err("UEFI virtual mapping missing or invalid -- runtime services will not be available\n"); return -ENOMEM; From patchwork Mon Jul 23 01:57:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AKASHI Takahiro X-Patchwork-Id: 10539515 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6296A157A for ; Mon, 23 Jul 2018 02:18:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4C428285AD for ; Mon, 23 Jul 2018 02:18:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3FFD8285B0; Mon, 23 Jul 2018 02:18:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A983B285AD for ; Mon, 23 Jul 2018 02:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=xAKVrBSiQV0Sy4YnoA5mrxYmzlL2kfBF9SVkJPOpTx4=; b=NGc0fr1CgQxPv9PNPreNnceqaK dxxQRPptphFKnX8GFioeXShvZBbqzUj2ZrYyqzra/IBpPnxKAdnHZi83KkzokJbLQS3QMbRjyXpdp 6E4ogN1XmI3bTDgMZNptnXlxXIyGYOYg2re2T0fUg/1FUXBov1unifa/l1KHIe3Viz5++aZ65PzpG KwRL17fdqErCGTTqNVhck7HsBDo1+R10aGqWo3YvnKooC10yDeS79ghfxrU2Cj6b7aK9GElR8zlB5 Qj7W6uIhwZHl/lfwSGFZTOI8TCE0CjwGSucM1bkNVR7Q36R7a152DyDJDV40FXWTCmytdbH8JlCc9 iNJ9I7/g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQQT-0003IF-WF; Mon, 23 Jul 2018 02:18:18 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQQS-0003C9-6s for linux-arm-kernel@bombadil.infradead.org; Mon, 23 Jul 2018 02:18:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=aiI32IJC87n1yrLeU9zsbi8Z298a1EB8XLfokLEiOx0=; b=HN+Ap9xIkvJ7WaomZ276cTYqw dmyNk7hiDxTW0Kv1ixkiucewycHAr4T/yKVLXpIC+/9GN84Yw+VSoVfGIeW4mQxG46gL4J0gZakPK UDaeC/L/HwGV511DpuPHVGq4ofOawxxgh9+zan8UyBJuWfOF3lo04C8s/nl4nPS3PDqojTDrcU2J4 2J6kTN77cPsmGwYvIGrtZlfHg6KViZL98P3p7t640xEDAQUIllN66JdFeAJmivYqkddWXFbYWZAst worWnpZYDz3V23t77bsHadLVZ31ZBG/Ctob9PCbqX4R0zA9c54NoewmnamQkHg8xZtqJbXWtVPhQH GkaOgBdKA==; Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]) by casper.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fhQ8s-0000tL-ET for linux-arm-kernel@lists.infradead.org; Mon, 23 Jul 2018 02:00:08 +0000 Received: by mail-pg1-x543.google.com with SMTP id y4-v6so11051933pgp.9 for ; Sun, 22 Jul 2018 18:59:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=aiI32IJC87n1yrLeU9zsbi8Z298a1EB8XLfokLEiOx0=; b=LCQUREp94LJj/UbwQ1WlvKHuiSLfHdIhXSELJpx7EaJq4upi0yxteLLk1mc7kzaU3x OLoD9kzQuzd4FtjdgjWKRwpHM3XgUzE7JeHmskIkS9XID4FzDKDaG5PEcjB8ApEO39o0 upnfD+C4KiXUeE8Kk1uKBraH1mqikV89HcYLM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=aiI32IJC87n1yrLeU9zsbi8Z298a1EB8XLfokLEiOx0=; b=EJC5BJnRMxPG/tc4BPaZsu8UAULnHTqMOln8GxYPN9uvy7MFEMA2H4uLY0mlaV84Fk UGWBRhg2l5yu8XcMuJg3i/nOQlJ+hEbsbeRjJKlyCpFM4Db/sMLbPUi39FpOSit3tc/c fi6smaoEq7fVFsi/IJibdirtRsr3vRy55HDZNyrLp0Qt+lF1m5u7i4o2WmqF5HBWmcaT EnKHFiIVVk0MToSo1qeBajnDq137JC8y93g5hQbbbyEj99M1bx/xISbCY651oh4dCwEZ bCnfaNN6Vn6nhOet/RxdCSBDXeGdes4u1B+K0umQ34REKw0fOT5E6ANXg7Iu07O/azw+ saMQ== X-Gm-Message-State: AOUpUlGMdOJOncZqKk8mbdYpbX9jaQOIptRG4DHLgAHD/AecHBSfbwCY 0TIq6AVLI2YbAgqsRKtlyokv5g== X-Google-Smtp-Source: AAOMgpdUGKlezbDWTkcETamQQD5eFuOO+Q9VKBpBzVvcR2cCz/mdf9mvmYcGsNf/cp0/It2ctkykeA== X-Received: by 2002:a63:f414:: with SMTP id g20-v6mr10308718pgi.407.1532311193979; Sun, 22 Jul 2018 18:59:53 -0700 (PDT) Received: from linaro.org ([121.95.100.191]) by smtp.googlemail.com with ESMTPSA id a11-v6sm13539222pfl.66.2018.07.22.18.59.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Jul 2018 18:59:53 -0700 (PDT) From: AKASHI Takahiro To: catalin.marinas@arm.com, will.deacon@arm.com, rjw@rjwysocki.net, lenb@kernel.org, ard.biesheuvel@linaro.org Subject: [PATCH v4 5/5] arm64: acpi: fix alignment fault in accessing ACPI Date: Mon, 23 Jul 2018 10:57:32 +0900 Message-Id: <20180723015732.24252-6-takahiro.akashi@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180723015732.24252-1-takahiro.akashi@linaro.org> References: <20180723015732.24252-1-takahiro.akashi@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180723_030006_531243_3C36FC70 X-CRM114-Status: GOOD ( 21.36 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, lorenzo.pieralisi@arm.com, graeme.gregory@linaro.org, al.stone@linaro.org, bhsharma@redhat.com, tbaicar@codeaurora.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, AKASHI Takahiro , james.morse@arm.com, hanjun.guo@linaro.org, sudeep.holla@arm.com, dyoung@redhat.com, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP This is a fix against the issue that crash dump kernel may hang up during booting, which can happen on any ACPI-based system with "ACPI Reclaim Memory." (kernel messages after panic kicked off kdump) (snip...) Bye! (snip...) ACPI: Core revision 20170728 pud=000000002e7d0003, *pmd=000000002e7c0003, *pte=00e8000039710707 Internal error: Oops: 96000021 [#1] SMP Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.14.0-rc6 #1 task: ffff000008d05180 task.stack: ffff000008cc0000 PC is at acpi_ns_lookup+0x25c/0x3c0 LR is at acpi_ds_load1_begin_op+0xa4/0x294 (snip...) Process swapper/0 (pid: 0, stack limit = 0xffff000008cc0000) Call trace: (snip...) [] acpi_ns_lookup+0x25c/0x3c0 [] acpi_ds_load1_begin_op+0xa4/0x294 [] acpi_ps_build_named_op+0xc4/0x198 [] acpi_ps_create_op+0x14c/0x270 [] acpi_ps_parse_loop+0x188/0x5c8 [] acpi_ps_parse_aml+0xb0/0x2b8 [] acpi_ns_one_complete_parse+0x144/0x184 [] acpi_ns_parse_table+0x48/0x68 [] acpi_ns_load_table+0x4c/0xdc [] acpi_tb_load_namespace+0xe4/0x264 [] acpi_load_tables+0x48/0xc0 [] acpi_early_init+0x9c/0xd0 [] start_kernel+0x3b4/0x43c Code: b9008fb9 2a000318 36380054 32190318 (b94002c0) ---[ end trace c46ed37f9651c58e ]--- Kernel panic - not syncing: Fatal exception Rebooting in 10 seconds.. (diagnosis) * This fault is a data abort, alignment fault (ESR=0x96000021) during reading out ACPI table. * Initial ACPI tables are normally stored in system ram and marked as "ACPI Reclaim memory" by the firmware. * After the commit f56ab9a5b73c ("efi/arm: Don't mark ACPI reclaim memory as MEMBLOCK_NOMAP"), those regions are differently handled as they are "memblock-reserved", without NOMAP bit. * So they are now excluded from device tree's "usable-memory-range" which kexec-tools determines based on a current view of /proc/iomem. * When crash dump kernel boots up, it tries to accesses ACPI tables by mapping them with ioremap(), not ioremap_cache(), in acpi_os_ioremap() since they are no longer part of mapped system ram. * Given that ACPI accessor/helper functions are compiled in without unaligned access support (ACPI_MISALIGNMENT_NOT_SUPPORTED), any unaligned access to ACPI tables can cause a fatal panic. With this patch, acpi_os_ioremap() always honors memory attribute information provided by the firmware (EFI) and retaining cacheability allows the kernel safe access to ACPI tables. Signed-off-by: AKASHI Takahiro Reviewed-by: James Morse Reviewed-by: Ard Biesheuvel Reported-by and Tested-by: Bhupesh Sharma --- arch/arm64/include/asm/acpi.h | 23 ++++++++++++++++------- arch/arm64/kernel/acpi.c | 11 +++-------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h index 0db62a4cbce2..68bc18cb2b85 100644 --- a/arch/arm64/include/asm/acpi.h +++ b/arch/arm64/include/asm/acpi.h @@ -12,10 +12,12 @@ #ifndef _ASM_ACPI_H #define _ASM_ACPI_H +#include #include #include #include +#include #include #include @@ -29,18 +31,22 @@ /* Basic configuration for ACPI */ #ifdef CONFIG_ACPI +pgprot_t __acpi_get_mem_attribute(phys_addr_t addr); + /* ACPI table mapping after acpi_permanent_mmap is set */ static inline void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size) { + /* For normal memory we already have a cacheable mapping. */ + if (memblock_is_map_memory(phys)) + return (void __iomem *)__phys_to_virt(phys); + /* - * EFI's reserve_regions() call adds memory with the WB attribute - * to memblock via early_init_dt_add_memory_arch(). + * We should still honor the memory's attribute here because + * crash dump kernel possibly excludes some ACPI (reclaim) + * regions from memblock list. */ - if (!memblock_is_memory(phys)) - return ioremap(phys, size); - - return ioremap_cache(phys, size); + return __ioremap(phys, size, __acpi_get_mem_attribute(phys)); } #define acpi_os_ioremap acpi_os_ioremap @@ -129,7 +135,10 @@ static inline const char *acpi_get_enable_method(int cpu) * for compatibility. */ #define acpi_disable_cmcff 1 -pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr); +static inline pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr) +{ + return __acpi_get_mem_attribute(addr); +} #endif /* CONFIG_ACPI_APEI */ #ifdef CONFIG_ACPI_NUMA diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c index 7b09487ff8fb..ed46dc188b22 100644 --- a/arch/arm64/kernel/acpi.c +++ b/arch/arm64/kernel/acpi.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -29,13 +30,9 @@ #include #include +#include #include -#ifdef CONFIG_ACPI_APEI -# include -# include -#endif - int acpi_noirq = 1; /* skip ACPI IRQ initialization */ int acpi_disabled = 1; EXPORT_SYMBOL(acpi_disabled); @@ -239,8 +236,7 @@ void __init acpi_boot_table_init(void) } } -#ifdef CONFIG_ACPI_APEI -pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr) +pgprot_t __acpi_get_mem_attribute(phys_addr_t addr) { /* * According to "Table 8 Map: EFI memory types to AArch64 memory @@ -261,4 +257,3 @@ pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr) return __pgprot(PROT_NORMAL_NC); return __pgprot(PROT_DEVICE_nGnRnE); } -#endif