Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp580765pxf; Wed, 24 Mar 2021 10:49:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXVUPcJgdvkorXcK++j1GiEvvXgv+ysTqVU0h5sKuHHjVeGMcClRazbrNRgfnzHJhcVyWA X-Received: by 2002:a05:6402:68e:: with SMTP id f14mr4687260edy.169.1616608146785; Wed, 24 Mar 2021 10:49:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616608146; cv=none; d=google.com; s=arc-20160816; b=BtFD+Rzdro+5VlmKckSOR+/DaZdwYWOjIpinLGEuXT2IMg/440y79dhyT4pVr+AdJw rHrGwR7rOHF7X5pU0pCendGg4vc19AB3DNLR0Lv5KI7j5bIuHYmTADvaJt+4lMrJcvYp v1lj6N+jhgUYFV9qPWRIsfYgbTiDLFQby1soeR8jcLc/QBp2SmwZDEpwuz0P8UEsP6Qt CNoVSfxZazoY4IY4fcaTdwBEK+KgwhVRPzuyWL/deqXRICHHAPoi51MTK70D4B91rxn3 m7wCrjE2ipi5yj3apD+EW/uEwWWGcM2Bo8+0NvZzC4r0KAxPtmEGALBPRcAcMTCTcvB+ R1Nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=TwICohQDmNlHACww9Px62AaQdCz/JWNO8WU4gTx6NmU=; b=DIHG41MlpiTtnRr/bgzuCyVA4XjYO+b93iaK/TsQgyp9TYvFtDG4mRQdoT6+P9NTmP 54d8GJz4+cGrF/jm23+4mAg0zyhpyvlkQ/h0gMhcgeuzIJLAe/slyPzKexaX9FlZEFJg +LVQl56MO4MkNlHm6z0qTjGwEQD1K0hJMJdRhOrDx4Ra2KxlSpixY+JiXqXbalRyfbB1 lQRl6T+BJS/IaFHdlY629/town3230s3/p/eAVJiC5fQdkDZl5jsWsS3fU7U3U80yTyx rXxtmFDL273vtxmNwblaRgOehWz0r+Xa1sLE+5IIhf9S6r8/05jbA6UYdPIygwujdKGt it0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amacapital-net.20150623.gappssmtp.com header.s=20150623 header.b=krUJcfrB; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cx5si2243329edb.555.2021.03.24.10.48.36; Wed, 24 Mar 2021 10:49:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@amacapital-net.20150623.gappssmtp.com header.s=20150623 header.b=krUJcfrB; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237252AbhCXRsE (ORCPT + 99 others); Wed, 24 Mar 2021 13:48:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36866 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237187AbhCXRrn (ORCPT ); Wed, 24 Mar 2021 13:47:43 -0400 Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DCDAC0613DE for ; Wed, 24 Mar 2021 10:47:43 -0700 (PDT) Received: by mail-ej1-x631.google.com with SMTP id u21so16337492ejo.13 for ; Wed, 24 Mar 2021 10:47:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amacapital-net.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=TwICohQDmNlHACww9Px62AaQdCz/JWNO8WU4gTx6NmU=; b=krUJcfrBhdcGEBsn5aqX/MR8lqOeTw5agdZMqXxibmOZu7vtwTzVoBlXaLSGDKh/bu ds243PYymxqBBkeFxsmYXk7cIKVn1SUKgv/VvHtFuD/c6ibiJwBpsb3rO7BwUCQtbx6z 4NiLV73RydSj9jih+GZ9W8VMYy2IDB4BszZ6OD7LOJInVxlGWFfJpqsEwNsvhwSxoQZc Wezay2YHFqHuIgUih+AUR7DL/MCY+ZiY+RUfNyhBaAyOyFiXrbWPVroXCc5HLGcmg+sz mVTDsvVUX3RQI3rccYZ95nAxt8Ib58utJBiVHnfqvX/NE1Dl66f0D80DUs7lpaUyhCcU fMZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=TwICohQDmNlHACww9Px62AaQdCz/JWNO8WU4gTx6NmU=; b=q/AlyHeiVQ5aiVmWqxmAfNaUwx8t5hzSmBYE1kE8rq3yY/AQsCP2Nbm637ICoB1VVO pAVrsbYc7vKHM1y1oFMuKS1sOVmqmzz0BTxdW7C3XUM+FYYuexqu3V9+aN66wFrCpqka iQP/V2UxM/EZs1L6zeD44Otelw4QCUFWur+IAgg9qBVKzHy8+DsSaTkO6VywZWCfudwg dniMMHqKmI8NTnaUuujKte12zRVuyPoBt1LxMgTQbiEb0h1pj1qOmF8XKstyR8M99e93 XsV1C0ludH1iUm66wSPzJaMF1QgQ73KPDhkyjW1O8/Iox+XG+0Vqv2XNZYl3d7Fhovis 1P/Q== X-Gm-Message-State: AOAM5306ywsW3CWDeD1FwxZzx+4woR6u8PfTpA+ic4AdmHTve/Y1F2ep YaFmLqOIhJwf3kA5sJRCJIYIQCGsuxsaoDfdErwqTw== X-Received: by 2002:a17:906:7e12:: with SMTP id e18mr5209337ejr.316.1616608061647; Wed, 24 Mar 2021 10:47:41 -0700 (PDT) MIME-Version: 1.0 References: <20210324170436.31843-1-brijesh.singh@amd.com> <20210324170436.31843-7-brijesh.singh@amd.com> In-Reply-To: <20210324170436.31843-7-brijesh.singh@amd.com> From: Andy Lutomirski Date: Wed, 24 Mar 2021 10:47:30 -0700 Message-ID: Subject: Re: [RFC Part2 PATCH 06/30] x86/fault: dump the RMP entry on #PF To: Brijesh Singh Cc: LKML , X86 ML , kvm list , Linux Crypto Mailing List , Andi Kleen , Herbert Xu , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Joerg Roedel , "H. Peter Anvin" , Tony Luck , Dave Hansen , "Peter Zijlstra (Intel)" , Paolo Bonzini , Tom Lendacky , David Rientjes , Sean Christopherson Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org On Wed, Mar 24, 2021 at 10:04 AM Brijesh Singh wrote: > > If hardware detects an RMP violation, it will raise a page-fault exception > with the RMP bit set. To help the debug, dump the RMP entry of the faulting > address. > > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: Borislav Petkov > Cc: Joerg Roedel > Cc: "H. Peter Anvin" > Cc: Tony Luck > Cc: Dave Hansen > Cc: "Peter Zijlstra (Intel)" > Cc: Paolo Bonzini > Cc: Tom Lendacky > Cc: David Rientjes > Cc: Sean Christopherson > Cc: x86@kernel.org > Cc: kvm@vger.kernel.org > Signed-off-by: Brijesh Singh > --- > arch/x86/mm/fault.c | 75 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 75 insertions(+) > > diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c > index f39b551f89a6..7605e06a6dd9 100644 > --- a/arch/x86/mm/fault.c > +++ b/arch/x86/mm/fault.c > @@ -31,6 +31,7 @@ > #include /* VMALLOC_START, ... */ > #include /* kvm_handle_async_pf */ > #include /* fixup_vdso_exception() */ > +#include /* lookup_rmpentry ... */ > > #define CREATE_TRACE_POINTS > #include > @@ -147,6 +148,76 @@ is_prefetch(struct pt_regs *regs, unsigned long error_code, unsigned long addr) > DEFINE_SPINLOCK(pgd_lock); > LIST_HEAD(pgd_list); > > +static void dump_rmpentry(struct page *page, rmpentry_t *e) > +{ > + unsigned long paddr = page_to_pfn(page) << PAGE_SHIFT; > + > + pr_alert("RMPEntry paddr 0x%lx [assigned=%d immutable=%d pagesize=%d gpa=0x%lx asid=%d " > + "vmsa=%d validated=%d]\n", paddr, rmpentry_assigned(e), rmpentry_immutable(e), > + rmpentry_pagesize(e), rmpentry_gpa(e), rmpentry_asid(e), rmpentry_vmsa(e), > + rmpentry_validated(e)); > + pr_alert("RMPEntry paddr 0x%lx %016llx %016llx\n", paddr, e->high, e->low); > +} > + > +static void show_rmpentry(unsigned long address) > +{ > + struct page *page = virt_to_page(address); This is an error path, and I don't think you have any particular guarantee that virt_to_page(address) is valid. Please add appropriate validation or use one of the slow lookup helpers.