From nobody Fri Dec 19 08:06:21 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1701775324; cv=none; d=zohomail.com; s=zohoarc; b=A5KuN5wRefZ4wHxUYLlu4gnAINgUOBuZy4cOdGHnQh74MBb9j4wAL/HDcEXFnM4blDPUfk1AU2rtC2qHtAvLgjCDHBQkvEvcKebPSJ5Iqi+J2kO+sq9UXk1Zb55m/DVMazeMqV+KxGm92GrmYMBJbejje2zk9MbLSgt9x8pQHCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1701775324; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rRSLmRR0nuRB2OQ+ZAJAP9IUoh7kx5+1x++a0urBmsg=; b=gXrmdo7aPYmqVG7CXiKmUFUPMjQZJ9G6Sq7h7FhK/oyB2kDSCuxVsE7vbfswfF8Wa3qG4UFW9MG6CbUi10JB8wa/vfw/j7Qae3YyB6geM5McDMa1ZCTqgD1K5gpd5ZoRo+aofsWSHSjR6Xcc3Q4MGK2ad4thY9gAIbKGzKbJ320= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 170177532408246.76666181474013; Tue, 5 Dec 2023 03:22:04 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.647568.1010921 (Exim 4.92) (envelope-from ) id 1rATUf-0006fz-Kb; Tue, 05 Dec 2023 11:21:37 +0000 Received: by outflank-mailman (output) from mailman id 647568.1010921; Tue, 05 Dec 2023 11:21:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rATUf-0006do-8j; Tue, 05 Dec 2023 11:21:37 +0000 Received: by outflank-mailman (input) for mailman id 647568; Tue, 05 Dec 2023 11:21:35 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rATUd-0005GD-2c for xen-devel@lists.xenproject.org; Tue, 05 Dec 2023 11:21:35 +0000 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 7254f875-9360-11ee-98e5-6d05b1d4d9a1; Tue, 05 Dec 2023 12:21:34 +0100 (CET) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2023 03:21:24 -0800 Received: from unknown (HELO fred..) ([172.25.112.68]) by fmsmga006.fm.intel.com with ESMTP; 05 Dec 2023 03:21:22 -0800 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 7254f875-9360-11ee-98e5-6d05b1d4d9a1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701775295; x=1733311295; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0MXczFK3xOQViMofjzuL8bjmZe4faEq58HCGtZP2g9c=; b=L/XFE+VJ8BD89duxqUzniC6bhdtnpdLq/KHj1Cgj/PWCpSQX/i1RTRWj HsuqXEMslKruTmUMRNMZj2TGIBzXwctH9BDQ0buEwXlRCwU4agmLFokOA pTe8iOr2ofPiJ8my7Edd1dQNQFW8P630miVUbhT7cM3vqqiOFDPrHt15V I14r0cRvDuhTu5IChQ91CYuIvaZWw2preKLkVPaz9hBAdm5rDkE8dYAQ4 DFtwxC2OdliaWFBT0ihLI+Tr35C29ErSJA0AMY3JJTqFvxrYbfY+JJ193 4PYEfkgnPSiSqnhaf3dWdCXQH6+qKqamkDPEWvU1xq9Lzg+YhGBSfkzO4 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10914"; a="942565" X-IronPort-AV: E=Sophos;i="6.04,252,1695711600"; d="scan'208";a="942565" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10914"; a="1018192972" X-IronPort-AV: E=Sophos;i="6.04,252,1695711600"; d="scan'208";a="1018192972" From: Xin Li To: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org, linux-hyperv@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, luto@kernel.org, pbonzini@redhat.com, seanjc@google.com, peterz@infradead.org, jgross@suse.com, ravi.v.shankar@intel.com, mhiramat@kernel.org, andrew.cooper3@citrix.com, jiangshanlai@gmail.com, nik.borisov@suse.com, shan.kang@intel.com Subject: [PATCH v13 21/35] x86/fred: Make exc_page_fault() work for FRED Date: Tue, 5 Dec 2023 02:50:10 -0800 Message-ID: <20231205105030.8698-22-xin3.li@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231205105030.8698-1-xin3.li@intel.com> References: <20231205105030.8698-1-xin3.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1701775324751100002 Content-Type: text/plain; charset="utf-8" From: "H. Peter Anvin (Intel)" On a FRED system, the faulting address (CR2) is passed on the stack, to avoid the problem of transient state. Thus the page fault address is read from the FRED stack frame instead of CR2 when FRED is enabled. Signed-off-by: H. Peter Anvin (Intel) Tested-by: Shan Kang Signed-off-by: Xin Li --- Change since v12: * No "we" in a commit message, use passive voice (Borislav Petkov). --- arch/x86/mm/fault.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index ab778eac1952..7675bc067153 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -34,6 +34,7 @@ #include /* kvm_handle_async_pf */ #include /* fixup_vdso_exception() */ #include +#include =20 #define CREATE_TRACE_POINTS #include @@ -1516,8 +1517,10 @@ handle_page_fault(struct pt_regs *regs, unsigned lon= g error_code, =20 DEFINE_IDTENTRY_RAW_ERRORCODE(exc_page_fault) { - unsigned long address =3D read_cr2(); irqentry_state_t state; + unsigned long address; + + address =3D cpu_feature_enabled(X86_FEATURE_FRED) ? fred_event_data(regs)= : read_cr2(); =20 prefetchw(¤t->mm->mmap_lock); =20 --=20 2.43.0