From patchwork Fri Nov 16 22:55:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 151388 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp992445ljp; Fri, 16 Nov 2018 14:56:09 -0800 (PST) X-Google-Smtp-Source: AJdET5dxuLMZsRW/Qe2uc0uYddWpFDdUHG0xDUmZjqZ2NqfJCCezE4yJbT/0EHVmpzBNvIspDLdt X-Received: by 2002:a62:5343:: with SMTP id h64-v6mr12992362pfb.226.1542408969120; Fri, 16 Nov 2018 14:56:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542408969; cv=none; d=google.com; s=arc-20160816; b=AVGzAUL28hl3wizvx1I5hsSCnQ7ISZZjEUyHH5EfDNUS1O+TBLsfLmFWLZqRCJukEJ hJ73/FVKu54KUeeTpXE9idBC6UPFz26UGNLHO/bW8n3tdLgyRqYTttKOce5O+aJQPtGx roe2gu4iVbeU0MGR/FslVg5Ol6SemZwEQUpI1dv/byDjjjejve048vzz0dHJby36xTaS rLQ1dnhbXrlDWr6tukMsZ5yOE5WtEgL7Ats6I+Dn7AYut3ph10L+XG5cq8iBfc7pkE0U +G7k7XetVvq/NSnOG/pmFXQD0o794BoVjWkWXVSMSi6nr5gLh0me2UHCh4szzyRzssEk o8cA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=qFEbGSsIYfHgYaqx1cZd79iG//2Lb+5FZ3ijMyDgX2M=; b=nLLwaTnkEZ2lcdH1tdNUlqSbzPX+valY96gGmapjKF5hjcJ9hxOgq/dHU7rKNzTO67 tTRWCa5mAFeYGNDrV3krcbJ3MenrUEnq6W8dt2yfuHn7uRbnk6sld/805V+MUOVb6zMu /CF2QfWb+02qzF/dyruTYZFQ18d8ER71hBbtr2MKIKVz9TNdfX4CK0KOIS4/NENzUqZO p0tR1EqsUImS1LLY+6vD7B8aHUzpnEhDvYRnCn6hZDJKw0kQmbIzARYhqmNgbFDzK6tP q9+QNvjU7qSaH4Pvz+RPXpi9N8Zc16C6AU6d4KiJp12/K7r2TYtjDU4R+0lv8N87iqoT 5BJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=hp+JFqDl; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id f9si5754172pgc.85.2018.11.16.14.56.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Nov 2018 14:56:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=hp+JFqDl; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 3C4DC21191734; Fri, 16 Nov 2018 14:56:07 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::543; helo=mail-pg1-x543.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D7A2D21A07A82 for ; Fri, 16 Nov 2018 14:56:05 -0800 (PST) Received: by mail-pg1-x543.google.com with SMTP id t13so2552408pgr.11 for ; Fri, 16 Nov 2018 14:56:05 -0800 (PST) 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=bWYrzs/H/xXXy3l94YVlE/28vHlvkFDHRz5MAuYyoVY=; b=hp+JFqDlehATgoUYepr1fyXtoErD2t5Pu9aUoX7zpoJMy8FDTnZYqqnXPZN1fjcTi7 it81qwxhTGqjFGl2WNOIhiQyXJUmWbMt7q3FmAcTtH2nuyuha8NEgeEhOvBnCCzJBJtK CtsFypc9M5SGqYNcbFg03fkrk8WkfSA+ZeuyM= 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=bWYrzs/H/xXXy3l94YVlE/28vHlvkFDHRz5MAuYyoVY=; b=ZMJHGendrMXqZBCuP6RY41TKtqZltq3kTM3j6XSBuFH6qmt4ysIK1JKMhAklmAIO8c wHEUAeHrqUTkl/2lgt89bf59CsAD0aXBLsWcMRwGu0735apJ/lXSfikNgJdCV3nq9YQn AALL3qhLBEKiqv4PLQg2XsTEt06tDJR6mTlLM9xGTdbFstRKOsRCzo2ZQnPS4CrOVN+Q MVDXsW7us96ZhbzJPJ4Z2pW3JlgpL+VJ9d50wAJj1w2itsVDJr4LmVVkCfv+zQsAyUKW WzuuLOcvHc2JWLUiJdOb3KLD07y+VtZYCuVDli8s3RrfTWU4cobNT4CT6lFDK5OUQCSt lAuw== X-Gm-Message-State: AGRZ1gKSRgxIKi9g/4XFrZMwOpgcRMAMG8c+3F/z0WeI5PStRtHdEKAP qfv5Fd712S7irqeMGKF4dt/yCVtqerGLCA== X-Received: by 2002:a63:de4c:: with SMTP id y12mr11617940pgi.198.1542408965179; Fri, 16 Nov 2018 14:56:05 -0800 (PST) Received: from mba13.psav.com ([64.114.255.114]) by smtp.gmail.com with ESMTPSA id r6sm41670483pgk.91.2018.11.16.14.56.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Nov 2018 14:56:04 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Fri, 16 Nov 2018 14:55:57 -0800 Message-Id: <20181116225558.27720-2-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181116225558.27720-1-ard.biesheuvel@linaro.org> References: <20181116225558.27720-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH 1/2] ArmPlatformPkg: clear frame pointer in startup code X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lersek@redhat.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" When setting up the stack in the startup code and jumping into C code for the first time, ensure that the frame pointer register is cleared so that backtraces terminate correctly. Otherwise, output like the below is shown when encountering an exception on a DEBUG build: Synchronous Exception at 0x0000000078A14780 PC 0x000078A14780 (0x000078A00000+0x00014780) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A10634 (0x000078A00000+0x00010634) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A11CF0 (0x000078A00000+0x00011CF0) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A11DD0 (0x000078A00000+0x00011DD0) [ 0] ArmVeNorFlashDxe.dll PC 0x00007BC9D87C (0x00007BC98000+0x0000587C) [ 1] PartitionDxe.dll PC 0x00007BC99B3C (0x00007BC98000+0x00001B3C) [ 1] PartitionDxe.dll PC 0x00007F362F50 (0x00007F359000+0x00009F50) [ 2] DxeCore.dll PC 0x00007BD63BB0 (0x00007BD5B000+0x00008BB0) [ 3] BdsDxe.dll PC 0x00007BD6EE00 (0x00007BD5B000+0x00013E00) [ 3] BdsDxe.dll PC 0x00007BD67C70 (0x00007BD5B000+0x0000CC70) [ 3] BdsDxe.dll PC 0x00007F3724F0 (0x00007F359000+0x000194F0) [ 4] DxeCore.dll PC 0x00004008FC30 PC 0x000040090130 PC 0x5800F6025800F5E1 Recursive exception occurred while dumping the CPU state which is rather unhelpful, given that this prevent the remaining debug output from being printed (register dump, stack dump, fault related system registers etc) Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- ArmPlatformPkg/PrePeiCore/AArch64/PrePeiCoreEntryPoint.S | 3 +++ ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S | 3 +++ 2 files changed, 6 insertions(+) -- 2.17.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/PrePeiCore/AArch64/PrePeiCoreEntryPoint.S b/ArmPlatformPkg/PrePeiCore/AArch64/PrePeiCoreEntryPoint.S index 0950fd0c0cdb..dc52e1138199 100644 --- a/ArmPlatformPkg/PrePeiCore/AArch64/PrePeiCoreEntryPoint.S +++ b/ArmPlatformPkg/PrePeiCore/AArch64/PrePeiCoreEntryPoint.S @@ -76,6 +76,9 @@ _PrepareArguments: // Ensure we're jumping to FV version of the code (not boot remapped alias) ldr x3, =ASM_PFX(CEntryPoint) + // Set the frame pointer to 0x0 so any backtraces terminate here + mov x29, xzr + // Jump to PrePeiCore C code // x0 = mp_id // x1 = pei_core_address diff --git a/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S b/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S index a81709d5d12d..8db022dcf05e 100644 --- a/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S +++ b/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S @@ -109,6 +109,9 @@ _PrepareArguments: // Ensure we're jumping to FV version of the code (not boot remapped alias) ldr x4, =ASM_PFX(CEntryPoint) + // Set the frame pointer to 0x0 so any backtraces terminate here + mov x29, xzr + // Jump to PrePiCore C code // x0 = MpId // x1 = UefiMemoryBase From patchwork Fri Nov 16 22:55:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 151389 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp992483ljp; Fri, 16 Nov 2018 14:56:11 -0800 (PST) X-Google-Smtp-Source: AJdET5fgh/8BHK2d+EPkhgvRJBE3gfzb3LZRJ1DJRDwHrOAOwpf2pfoPln07lv8BZdruSvBkknio X-Received: by 2002:aa7:8254:: with SMTP id e20-v6mr13246201pfn.164.1542408971746; Fri, 16 Nov 2018 14:56:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542408971; cv=none; d=google.com; s=arc-20160816; b=hdLa87UdlVyGV5pwRVlozQpkTO6P/LgHj5J904g8nwGiDbWt5KHg3gs5eC3/Zjmcox e6XvT2QVBcLh93UynXsBBPBmukEJI+5jxE0CKFgaN/VVO/5GF5vD3WspaYp98r+oliJe hHblbHWTIjY+m79hhdVCEAhdLU4z4KtT4+c4mcRoDiqvzG9kJi07s+YMVQMuua0HMOO5 GIHT4XNovDICSa7H/rWlYpC5tgu8pbyLBkAjhNXO/x/K7A7Js1b8HPtogDPyp7x6QJmP socTGjCm6zG4sNZl1VR6+gxbHZgziodhE3hYkYpQWa4GwFGh/GJQyqJmTYzRrcbBkFTA xQyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=dyNWmMejO/wjdxUlL3zwRz9IMhh04U90WrHv5AKxFuY=; b=RMN9esuJ/++ts4+LD4f0DrA9v12SOqgWna5TZI7FoTeShvFWX7EPWxE/X8qJBjIqDl XrxD3iqA0USNhXphYi5VvLeanvgAdm5DpMR/w+Re5bkpMc7DPV/aFOmRlUN5uRxopXuQ fpxaBuaS0L6TjsiwFn3OM8H4sPVq+kpWpc12lTZmn4kPIVYJnCAPA4TLx4EG+FPisepP eqH/fhrnT3eg0kmW34CruSYcsiRrmXjs1kpdXnGW9TrRKLJgbdDAcZBMZotydlvRhbLD Ty8A2qG1dJFB5T6I4gL8sAz9RSlH7NyB2WxSkQ27bznGDd8wCJKVkqCGpE3WNNMXlSuv Ou5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=C14g9E4N; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id m12-v6si22749687pfi.286.2018.11.16.14.56.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Nov 2018 14:56:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=C14g9E4N; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 744EC2119175D; Fri, 16 Nov 2018 14:56:08 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::543; helo=mail-pg1-x543.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E56082119173B for ; Fri, 16 Nov 2018 14:56:06 -0800 (PST) Received: by mail-pg1-x543.google.com with SMTP id v28so707396pgk.10 for ; Fri, 16 Nov 2018 14:56:06 -0800 (PST) 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=zJT5TTpHNqpk1frJTVhczwwfwv06AyYLP6q1lJXOKMA=; b=C14g9E4Nzr9k9Qqccdtxoh2aQId0KPiiwyrbxGIpDUZd5Yl8mU2ptXcGO3hKt84dPc 1Ofn6Mbk6GtCynNpWaPrVFRbPlrFaILuSE924bVs/1FghRSs44BXgL9fhmtR4G7ZcLVw JYPGanJ6KU2zmUvJ5k+eEZY9Xs5NXW4EhaX+s= 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=zJT5TTpHNqpk1frJTVhczwwfwv06AyYLP6q1lJXOKMA=; b=VpMC5mFxnjJk627or6NHcruCH7Y68oCOkfV6yBFIe0B87yqxcdqXpehTA7Ulu3T94I 2bPbqax8rKUq3o227IMhqQy1DBWX8In8HoV0n5uiA/EuZ0XPPb7EwkT8HwI3A5VDnbQR g7O0HMdK5+a+IoRrZPRiU0tog3aKvoeFh1EhQRgPgUJm8IVrsZwXL3DUe23Gi/uzXthU ixb3uii6ARLavAcPSCOew03qSads5mgu3LumzcDCOaLY7FC0mgEzGRYskHwvbeeS3R1Q 6Nf4NoTW4rGw7dEvCH7B5i7k91vyQDfGRz0/s1d8aph0VyWuqc3xsVoErhrJRjZmP0Yu VCiA== X-Gm-Message-State: AGRZ1gKFvlkFZYnAxQ5skynP3i17lVyaB1s3OxStHjv6HkfJ0ag4G42d OFHoUFCXd6JeAZtOzxw8IoQjCeM82AfT8w== X-Received: by 2002:a62:81c1:: with SMTP id t184mr6060789pfd.246.1542408966352; Fri, 16 Nov 2018 14:56:06 -0800 (PST) Received: from mba13.psav.com ([64.114.255.114]) by smtp.gmail.com with ESMTPSA id r6sm41670483pgk.91.2018.11.16.14.56.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Nov 2018 14:56:05 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Fri, 16 Nov 2018 14:55:58 -0800 Message-Id: <20181116225558.27720-3-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181116225558.27720-1-ard.biesheuvel@linaro.org> References: <20181116225558.27720-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH 2/2] ArmVirtPkg/PrePi: clear frame pointer in startup code X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lersek@redhat.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" When setting up the stack in the startup code and jumping into C code for the first time, ensure that the frame pointer register is cleared so that backtraces terminate correctly. Otherwise, output like the below is shown when encountering an exception on a DEBUG build: Synchronous Exception at 0x0000000078A14780 PC 0x000078A14780 (0x000078A00000+0x00014780) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A10634 (0x000078A00000+0x00010634) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A11CF0 (0x000078A00000+0x00011CF0) [ 0] ArmVeNorFlashDxe.dll PC 0x000078A11DD0 (0x000078A00000+0x00011DD0) [ 0] ArmVeNorFlashDxe.dll PC 0x00007BC9D87C (0x00007BC98000+0x0000587C) [ 1] PartitionDxe.dll PC 0x00007BC99B3C (0x00007BC98000+0x00001B3C) [ 1] PartitionDxe.dll PC 0x00007F362F50 (0x00007F359000+0x00009F50) [ 2] DxeCore.dll PC 0x00007BD63BB0 (0x00007BD5B000+0x00008BB0) [ 3] BdsDxe.dll PC 0x00007BD6EE00 (0x00007BD5B000+0x00013E00) [ 3] BdsDxe.dll PC 0x00007BD67C70 (0x00007BD5B000+0x0000CC70) [ 3] BdsDxe.dll PC 0x00007F3724F0 (0x00007F359000+0x000194F0) [ 4] DxeCore.dll PC 0x00004008FC30 PC 0x000040090130 PC 0x5800F6025800F5E1 Recursive exception occurred while dumping the CPU state which is rather unhelpful, given that this prevent the remaining debug output from being printed (register dump, stack dump, fault related system registers etc) Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S | 3 +++ 1 file changed, 3 insertions(+) -- 2.17.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S b/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S index 891cf1fcab40..86b9fbee6e67 100644 --- a/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S +++ b/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S @@ -121,6 +121,9 @@ _GetStackBase: mov x1, x21 mov x2, x22 + // Set the frame pointer to 0x0 so any backtraces terminate here + mov x29, xzr + // Jump to PrePiCore C code // x0 = MpId // x1 = UefiMemoryBase