Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp1055912pxm; Wed, 23 Feb 2022 17:00:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJxNKHk+eOuXfMBnCPn/kAQ68QTjN5DnxgtfStKrO1vd/phnHMGa/w/FWOz4b1+3NkI/yMIJ X-Received: by 2002:a17:902:ce8a:b0:14f:fd0e:e4a4 with SMTP id f10-20020a170902ce8a00b0014ffd0ee4a4mr281093plg.47.1645664448127; Wed, 23 Feb 2022 17:00:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645664448; cv=none; d=google.com; s=arc-20160816; b=yUS7xG1Sxit6cRoD9spFvn/PXXA9ZCYLYeui/4qsJhbdsXy7ClROo4wyyv1cSAOQ8P xPw/i96MmCL5xhP5XGfvdtaYlLQaUwlOPKhhRIvPmYGGG6df3/EKi2KgzTXGZsBOJeJa 8dt7BCPrpu0xaQCUF8QfpNFgcx5qMZBPR4vMg3ZC28g9TfnbVYfnMMcHx/ZJzTCrCkGe QzEaWz1YV6woxRY90kDLPxdXF9uoojSeGAHtRfWSbbtt1pQ/MWOLZOfa+2s/gJRhpViF eX5ql7KGYJGdwEa6sR1ySEKjWaQQSecamliuyKoIfLTS3SZwszTfr48K9FcqLk/v02jw PM8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:cc:from:subject:references:mime-version :message-id:in-reply-to:date:dkim-signature; bh=beGtXg45IQ4dKCY/A8ewT2jAssjG8oCd/wil2F8VoF8=; b=mhRb9OWA7STgb+E04JPomO27tykXMxUjdOdKTfoqAE9CEr+HGA7cSX2Ofc9e8wsvu1 XKpb2wCrbtKu60X6pBQqGN7OWJ1YylErD4Zg73e0PY0T13SrL1+I/E2v3sAH9sHrXlCT yeWN9FZo+fKjWDhQt3dnx6/fnLubKNPAH7sTMreOlS+gt5rPLa9XM+/lHaTbUPnVdu0v toX4G/cZBvR7Poar3e0VvWlyOsXW7lpnwoVoxP3LufeLsgCtz8yPABtvwm+CgK2E4qNy 3WWfoW8xTD2KN3XGSeKei3c3giSAn6MBryagfdO0SlP+eb4siiZu3ByfNXFz1wiI6BD3 ZlBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Qmw8f9ng; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id s21si1054216plq.341.2022.02.23.17.00.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 17:00:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Qmw8f9ng; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 24459CD5D2; Wed, 23 Feb 2022 16:51:54 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234491AbiBVRDQ (ORCPT + 99 others); Tue, 22 Feb 2022 12:03:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32928 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232240AbiBVRDP (ORCPT ); Tue, 22 Feb 2022 12:03:15 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04E4650E0D for ; Tue, 22 Feb 2022 09:02:50 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id k10-20020a056902070a00b0062469b00335so9019428ybt.14 for ; Tue, 22 Feb 2022 09:02:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:cc; bh=beGtXg45IQ4dKCY/A8ewT2jAssjG8oCd/wil2F8VoF8=; b=Qmw8f9ngENw67mW7ZY926jso9fM6FSWsadBt2xuNCmEM/wL9yNNx+++6QAzW5Geysa X0CVpzvJkNzo1xClPSFGBfQoQ9e82eUu5kgF0cfza/NxsGQMydRbfBIhqKkBzLs5aCzK VBY/ce5OQiMkErnhinkSoy35Z7xGC9tfoOBy0pVxgyAmPZog1qhtESjBaWlKEIEeimgX bKnw6hLvfmjhuk5Ps7Kiuf9lL11CkBXEiVCRXEz1k0Pj8iOLK68P3f2mF/3G5iD/5IP2 26qsHRaykVbWjx15kawdg3HR402vdDmc9IFBtIz1CQ/1k/qSnS4QDbrQcuG21X7huvEk B9pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:cc; bh=beGtXg45IQ4dKCY/A8ewT2jAssjG8oCd/wil2F8VoF8=; b=RFVbxtaBYfZoXwGCu/XOp2pHpM3T74HwS4lqmwC4talSVmUxJRCibMIwfnDN04DD+8 R0TgiASd3W3/irVB3/7Plngd/edvlalaZSKxn5O6YKC9XVNIiZygmQuOY40Wl7sSq4u7 zIWADkH5tyWE0Rkp1lhoL/CPKgOgTjsW4cjzUd6wTK0umC4ttzceWF9pBx5RthiWfka7 ye6cOX7I5dQTpDnnrT9kEc25iVVFpLxxrbjh44OEIm0u+1NnqBIzV6W16WNliBoNNC2b oQYQVd4R92fEOt9u9yw0FzjmALejxXLWtIU996qdmtjxIRWlbdqFbyadmYigARtyxVyF /O7w== X-Gm-Message-State: AOAM532XY2Nt5ybdPGK8bH2eR5V+++tzeFiUtJn1OYT1ZKkIpATp28b1 CdVitTrBh+lGVIJtDkF5VggFO9kxLQM2ibz00Q== X-Received: from kaleshsingh.mtv.corp.google.com ([2620:15c:211:200:5db7:1235:b3dd:cfcb]) (user=kaleshsingh job=sendgmr) by 2002:a25:d60c:0:b0:610:dc8d:b3bd with SMTP id n12-20020a25d60c000000b00610dc8db3bdmr24399063ybg.561.1645549369167; Tue, 22 Feb 2022 09:02:49 -0800 (PST) Date: Tue, 22 Feb 2022 08:51:10 -0800 In-Reply-To: <20220222165212.2005066-1-kaleshsingh@google.com> Message-Id: <20220222165212.2005066-10-kaleshsingh@google.com> Mime-Version: 1.0 References: <20220222165212.2005066-1-kaleshsingh@google.com> X-Mailer: git-send-email 2.35.1.473.g83b2b277ed-goog Subject: [PATCH v2 9/9] KVM: arm64: Symbolize the nVHE HYP backtrace From: Kalesh Singh Cc: will@kernel.org, maz@kernel.org, qperret@google.com, tabba@google.com, surenb@google.com, kernel-team@android.com, Kalesh Singh , Catalin Marinas , James Morse , Alexandru Elisei , Suzuki K Poulose , Ard Biesheuvel , Mark Rutland , Pasha Tatashin , Joey Gouly , Peter Collingbourne , Andrew Walbran , Andrew Scull , Paolo Bonzini , Andrew Jones , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvmarm@lists.cs.columbia.edu Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Reintroduce the __kvm_nvhe_ symbols in kallsyms, ignoring the local symbols in this namespace. The local symbols are not informative and can cause aliasing issues when symbolizing the addresses. With the necessary symbols now in kallsyms we can symbolize nVHE stacktrace addresses using the %pB print format specifier. Some sample call traces: ------- [ 167.018598][ T407] kvm [407]: nVHE hyp panic at: [] __kvm_nvhe_overflow_stack+0x10/0x34! [ 167.020841][ T407] kvm [407]: nVHE HYP call trace: [ 167.021371][ T407] kvm [407]: [] __kvm_nvhe_hyp_panic_bad_stack+0xc/0x10 [ 167.021972][ T407] kvm [407]: [] __kvm_nvhe___kvm_hyp_host_vector+0x248/0x794 [ 167.022572][ T407] kvm [407]: [] __kvm_nvhe_overflow_stack+0x20/0x34 [ 167.023135][ T407] kvm [407]: [] __kvm_nvhe_overflow_stack+0x20/0x34 [ 167.023699][ T407] kvm [407]: [] __kvm_nvhe_overflow_stack+0x20/0x34 [ 167.024261][ T407] kvm [407]: [] __kvm_nvhe_overflow_stack+0x20/0x34 . . . ------- [ 166.161699][ T409] kvm [409]: Invalid host exception to nVHE hyp! [ 166.163789][ T409] kvm [409]: nVHE HYP call trace: [ 166.164709][ T409] kvm [409]: [] __kvm_nvhe_handle___kvm_vcpu_run+0x198/0x21c [ 166.165352][ T409] kvm [409]: [] __kvm_nvhe_handle_trap+0xa4/0x124 [ 166.165911][ T409] kvm [409]: [] __kvm_nvhe___host_exit+0x60/0x64 [ 166.166657][ T409] Kernel panic - not syncing: HYP panic: . . . ------- Signed-off-by: Kalesh Singh --- Changes in v2: - Fix printk warnings - %p expects (void *) arch/arm64/kvm/handle_exit.c | 13 +++++-------- arch/arm64/kvm/stacktrace.c | 2 +- scripts/kallsyms.c | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c index b038c32a3236..1b953005d301 100644 --- a/arch/arm64/kvm/handle_exit.c +++ b/arch/arm64/kvm/handle_exit.c @@ -296,13 +296,8 @@ void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr, u64 elr_in_kimg = __phys_to_kimg(elr_phys); u64 hyp_offset = elr_in_kimg - kaslr_offset() - elr_virt; u64 mode = spsr & PSR_MODE_MASK; + u64 panic_addr = elr_virt + hyp_offset; - /* - * The nVHE hyp symbols are not included by kallsyms to avoid issues - * with aliasing. That means that the symbols cannot be printed with the - * "%pS" format specifier, so fall back to the vmlinux address if - * there's no better option. - */ if (mode != PSR_MODE_EL2t && mode != PSR_MODE_EL2h) { kvm_err("Invalid host exception to nVHE hyp!\n"); } else if (ESR_ELx_EC(esr) == ESR_ELx_EC_BRK64 && @@ -322,9 +317,11 @@ void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr, if (file) kvm_err("nVHE hyp BUG at: %s:%u!\n", file, line); else - kvm_err("nVHE hyp BUG at: %016llx!\n", elr_virt + hyp_offset); + kvm_err("nVHE hyp BUG at: [<%016llx>] %pB!\n", panic_addr, + (void *)panic_addr); } else { - kvm_err("nVHE hyp panic at: %016llx!\n", elr_virt + hyp_offset); + kvm_err("nVHE hyp panic at: [<%016llx>] %pB!\n", panic_addr, + (void *)panic_addr); } hyp_dump_backtrace(hyp_offset); diff --git a/arch/arm64/kvm/stacktrace.c b/arch/arm64/kvm/stacktrace.c index cdd672bf0ea8..896c225a4a89 100644 --- a/arch/arm64/kvm/stacktrace.c +++ b/arch/arm64/kvm/stacktrace.c @@ -261,7 +261,7 @@ static void hyp_dump_backtrace_entry(unsigned long hyp_pc, unsigned long hyp_off hyp_pc &= va_mask; /* Mask tags */ hyp_pc += hyp_offset; - kvm_err("[<%016lx>]\n", hyp_pc); + kvm_err("[<%016lx>] %pB\n", hyp_pc, (void *)hyp_pc); } void hyp_dump_backtrace(unsigned long hyp_offset) diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 54ad86d13784..19aba43d9da4 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -111,7 +111,7 @@ static bool is_ignored_symbol(const char *name, char type) ".LASANPC", /* s390 kasan local symbols */ "__crc_", /* modversions */ "__efistub_", /* arm64 EFI stub namespace */ - "__kvm_nvhe_", /* arm64 non-VHE KVM namespace */ + "__kvm_nvhe_$", /* arm64 local symbols in non-VHE KVM namespace */ "__AArch64ADRPThunk_", /* arm64 lld */ "__ARMV5PILongThunk_", /* arm lld */ "__ARMV7PILongThunk_", -- 2.35.1.473.g83b2b277ed-goog