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