From patchwork Tue Aug 1 08:32:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Li, Xin3" X-Patchwork-Id: 129149 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp2567930vqg; Tue, 1 Aug 2023 03:18:00 -0700 (PDT) X-Google-Smtp-Source: APBJJlFEnQilJ8x8UAx/KY0iBSAOUcUIzsITXzA2EBir7/lP5jBrrLy76zFrbGSPrPV4SZXB0f+e X-Received: by 2002:a17:902:d503:b0:1b1:99c9:8ce1 with SMTP id b3-20020a170902d50300b001b199c98ce1mr12658135plg.51.1690885080132; Tue, 01 Aug 2023 03:18:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690885080; cv=none; d=google.com; s=arc-20160816; b=aQD1Yo0BKnwMxe+C5wsbcOaXwtEP7Ti5bv2r6NTMLMcGj3JEyzkD3wCpR/0tn0J48m gUuVBEftBl9oq0M6QbcGz9ClO3j478mzwBvD3xSpHuQppdnzxoap8tLC9WtXJ1u+aQsl npMIcvM7VWXcqLoyc750fXPfuvlpkkkHDWsMjROFN1DnuCJ/rDweGpYq29fzwSVbekib o2RRxr9Zfd5eO/uX/S2HcocHCg9ovoI02UrGF3UJlqSjQtjU12KyN/a4nYckgFtKVjSf H6Q1qbRkiOIUZQN2xDgu/NpgIi7cJgcqHuk48coicds9aEl+RjY3YfXC4vZGBjMa5IA/ 3p0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ZsjIdq1kWDKrgecxQHOlEuM9iuyneekOEV721upnnEg=; fh=nYO9ukkM7JnAAJZcChGC8UWBlCLXeJxIDT82cxoIaf0=; b=xYnZTURHaXlKhzhelN5FBoTMM0bEKlqCGkSec5uYB70p4/yt0z3Qk+3ESvZ0qRwZk7 ZaJCdK6hlU/zW5mlzB5vAC+3ygRDqlYmK+tVfozxCvcTPkwg0MaOW349v0CPOEF0VA75 3ClJLVt9ZJpEFZZ1L6yCrlyWX9ZUqJiVfKpK3ooIKKCmPBqGDJSkqg0vJH/72+3RaxhS YCxLH2Xa0UJ6bYiNc7OwyHSbOMdqwG3a8ES4oC4SM59j1fj8EsYNXBQiL9rgBjQV9Av+ JCQs5DmECG+U4JjtWRkeWNpXSiLD4b7QnDs8w3U3SFizZWRk15qmoGW/sBi6SbTOKIkx 7XHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=idvqPorg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l9-20020a170902f68900b001b69de1eae1si5464224plg.620.2023.08.01.03.17.47; Tue, 01 Aug 2023 03:18:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=idvqPorg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229995AbjHAJFa (ORCPT + 99 others); Tue, 1 Aug 2023 05:05:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232032AbjHAJFB (ORCPT ); Tue, 1 Aug 2023 05:05:01 -0400 Received: from mgamail.intel.com (unknown [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FD562D73; Tue, 1 Aug 2023 02:03:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690880610; x=1722416610; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1h9fTPNcW28O8bu/nclSFH4GxPR5CW0Rl9/PbASKNuY=; b=idvqPorgX8GY9j44SW+loRLPYmAOtLB5T4KiDnwZtq2W4fEPS4CqiQtO 8hTn1p3GTcO+HcI6KkhOeUPnYsvuZyzm9rv3k7LCONcSL+VqwTaqeuser Kw0MkcXavpmTPATqHTzgCXxLlgHAbnRq8wgImS1aCNqrJOnS3ChcH+DLd 6DRGDTE8vr0b/EpcBcSWNN4HzsSw6wvYwXwsX99Abyl2Su6WIOY0OlD+5 9qhKOS5aGqPyGAiUwfEHI+Nimmh2bSqb5NfZ6fiZ4KbGUzRS/QRtGs40A J6QKQ53ELfNs19t9a5zsnJzHsvycg6Ykd2XDtvDJWqAq4267aDdgR6bFo w==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="433082611" X-IronPort-AV: E=Sophos;i="6.01,246,1684825200"; d="scan'208";a="433082611" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Aug 2023 02:02:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="975217056" X-IronPort-AV: E=Sophos;i="6.01,246,1684825200"; d="scan'208";a="975217056" Received: from unknown (HELO fred..) ([172.25.112.68]) by fmsmga006.fm.intel.com with ESMTP; 01 Aug 2023 02:02:06 -0700 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: Jonathan Corbet , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H . Peter Anvin" , Andy Lutomirski , Oleg Nesterov , Tony Luck , "K . Y . Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Paolo Bonzini , Wanpeng Li , Vitaly Kuznetsov , Sean Christopherson , Peter Zijlstra , Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko , Josh Poimboeuf , "Paul E . McKenney" , Catalin Marinas , Randy Dunlap , Steven Rostedt , Kim Phillips , Xin Li , Hyeonggon Yoo <42.hyeyoo@gmail.com>, "Liam R . Howlett" , Sebastian Reichel , "Kirill A . Shutemov" , Suren Baghdasaryan , Pawan Gupta , Babu Moger , Jim Mattson , Sandipan Das , Lai Jiangshan , Hans de Goede , Reinette Chatre , Daniel Sneddon , Breno Leitao , Nikunj A Dadhania , Brian Gerst , Sami Tolvanen , Alexander Potapenko , Andrew Morton , Arnd Bergmann , "Eric W . Biederman" , Kees Cook , Masami Hiramatsu , Masahiro Yamada , Ze Gao , Fei Li , Conghui , Ashok Raj , "Jason A . Donenfeld" , Mark Rutland , Jacob Pan , Jiapeng Chong , Jane Malalane , David Woodhouse , Boris Ostrovsky , Arnaldo Carvalho de Melo , Yantengsi , Christophe Leroy , Sathvika Vasireddy Subject: [PATCH RESEND v9 17/36] x86/fred: Define a common function type fred_handler Date: Tue, 1 Aug 2023 01:32:59 -0700 Message-Id: <20230801083318.8363-18-xin3.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230801083318.8363-1-xin3.li@intel.com> References: <20230801083318.8363-1-xin3.li@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773021513886635892 X-GMAIL-MSGID: 1773021513886635892 FRED event delivery establishes a full supervisor context by saving the essential information about an event to a FRED stack frame, e.g., the faulting linear address of a #PF is saved as event data of a FRED stack frame. Thus a struct pt_regs has all the needed data to handle an event and it's the only input argument of a FRED event handler. Define fred_handler, a common function type used in the FRED event dispatch framework, which makes it easier to find the entry points (via grep), allows the prototype to change if necessary without requiring changing changes everywhere, and makes sure that all the entry points have the proper decorations (currently noinstr, but could change in the future.) Signed-off-by: Xin Li --- arch/x86/include/asm/fred.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/x86/include/asm/fred.h b/arch/x86/include/asm/fred.h index d76e681a806f..b45c1bea5b7f 100644 --- a/arch/x86/include/asm/fred.h +++ b/arch/x86/include/asm/fred.h @@ -68,6 +68,19 @@ #define FRED_SSX_64_BIT_MODE_BIT 57 #define FRED_SSX_64_BIT_MODE _BITUL(FRED_SSX_64_BIT_MODE_BIT) +/* + * FRED event delivery establishes a full supervisor context by + * saving the essential information about an event to a FRED + * stack frame, e.g., the faulting linear address of a #PF is + * saved as event data of a FRED #PF stack frame. Thus a struct + * pt_regs has all the needed data to handle an event and it's + * the only input argument of a FRED event handler. + * + * FRED handlers need to be placed in the noinstr text section. + */ +#define DECLARE_FRED_HANDLER(f) void f (struct pt_regs *regs) +#define DEFINE_FRED_HANDLER(f) noinstr DECLARE_FRED_HANDLER(f) + #ifdef CONFIG_X86_FRED #ifndef __ASSEMBLY__ @@ -97,6 +110,8 @@ static __always_inline unsigned long fred_event_data(struct pt_regs *regs) return fred_info(regs)->edata; } +typedef DECLARE_FRED_HANDLER((*fred_handler)); + #endif /* __ASSEMBLY__ */ #endif /* CONFIG_X86_FRED */