From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930139; cv=none; d=zohomail.com; s=zohoarc; b=cCsiH4f3m1PSrloV/5j/y8Dk/QHeQoIFHIOIncccuI1liSnFx1g679KsPS84U66XNqbvQHLDyPvr5j0cQjHKf0T5bAOLSnFKZRFJrb5Grz36eE91Se12NbhcI7OMB7nbc7dLhDy6Tt09GYWwWVDEMdQcl0XwsvSxBN0TW1+imUc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930139; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pazDyvIMkB86CodXLRPI9JjFUz4czW7c+Y8zMCGMoY8=; b=jskkkDI9yZltz7nxcbZyxTBP8nu8a1Pt6oI/kq9cD3yfkquElZRa7C82Pls+b2K0H/dtW3yCjyt65OqSi1V/IyHHnfbVgRbGV76WOF+tDoewH4I/kQa1dW2RNfiP2ks5KI+J4HoCJeRPwIYjz7Z/xE9pQwty/uNAXLAF+jYmUUw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637930139243613.7812556392909; Fri, 26 Nov 2021 04:35:39 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232670.403477 (Exim 4.92) (envelope-from ) id 1mqaRV-0002KU-LO; Fri, 26 Nov 2021 12:35:05 +0000 Received: by outflank-mailman (output) from mailman id 232670.403477; Fri, 26 Nov 2021 12:35:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRV-0002J2-Bu; Fri, 26 Nov 2021 12:35:05 +0000 Received: by outflank-mailman (input) for mailman id 232670; Fri, 26 Nov 2021 12:35:03 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRT-0001V1-Bj for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:35:03 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 46703287-4eb5-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 13:35:02 +0100 (CET) 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: 46703287-4eb5-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930102; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZQYtvEE7popO91dkZaKOY9KOwwyjuGb56VfMJICY5lw=; b=VNbcx+E8q9K2fLfplyO7Mr3j4LE1+Q/Zdcam7DGcAIVZPIX9USjYztIo sN2Gd8Rd3Bsp45gWxfJT6AjqrRg1rTVP+9vbRm/8EICC/AiISQtoqD2cl jsbeYFURmDQEgX5Pb1z4j/JaGXEeEDA41/jQnMgWD2D9fvaZqUKEZw076 U=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: p/3ImIYAQw3Osavz7EyZ3PLUHL28sqDHszVEaLWodjgPmfMPk+AR0rrRlAMxeDhXcDREAZ2xYw A8fYJnV2D4AoetVlQWkUIvgjTwR5kJwYftzjeEl2FKW3YWXiZLMKrnhR6afxESEJqgQZ3u/yQ0 KNWScBdmgMJ8Jg4Nb/xW+Cd012cIk2RQXFO9ewccP9F0mKCjZ4NlhX3dHBzdmEIzayH7uceWkh TCF/nWBl3CIcj7Io1TwRUruXcwANIJiiQIDd3RAI5C6sLyWZL5Ktxtjp0d0cHuAwzk4pikWYSD 3VnIzqhbf2f8vLpwSP243xhM X-SBRS: 5.1 X-MesageID: 58192114 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:Msgwna7qd/bCFvxQr0OlDQxRtPXAchMFZxGqfqrLsTDasY5as4F+v mtJUDvVa/rcNjbxfdF3PYW18xxQsZOBm4NhSwZkrCBhHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw2LBVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z+ fdM8rDpZS4QHoLyvL49EAEAIyxfFPgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTa+PP ZNANVKDajz6aT9TAgZLBqllp82BmVzRbWwB9HGs8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u10bTDwweNdef4SGY6X/qjejK9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc+tyEqoWsS2k84r73SLDJiscFg5MSfVz4afaWgcW/ lOOmtroAxlmv7uUVW+R+9+okN+iBcQGBTRcPHFZFGPp9/Gm+dhu1UyXEr6PBYbs1oWtcQwc1 Qxmu8TXa187qccQn5u28lnc695HjsiYF1Vljuk7s4/M0++YWGJHT9D3gbQ4xawZRGp8crVnl CNf8yR5xLpTZaxhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGggfxg5bJtbKGO3P BS7VeZtCHl7ZyDCgUhfOd/ZNijX5fK4SYSNug78MrKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWPnOKrNVNdA9SdhDWx/ne8qRqSwJKGSI+cElJNhMb6elJl1VNk/sHm+HW0 Gu6X0MEmlPziWeecVeBa2x5aaOpVpF69CppMSspNFeu+n4ifYfws/tPK8ppJeEqpL550Pp5b /gZYMHcUP5BfSvKpmYGZp7noY08KBny3VCSPzCoaSQUdoJ7Q1Cb4cftewbirXFcDie+ucYkj aen0wfXHcgKSwh4VZ6EY/Oz1VKh+3ManbsqDUfPJ9BSfmTq8ZRrdHOt3qNmfZlUJEyalDWA1 guQDRMJnsX3otc4oIvTmKSJj4a1CO8iTEBUKHbWsOStPi7A82v9nYIZCLSUfSrQXX/f8bm5Y bkH1On1NfAKkQoYs4d4FLo3n6sy68G2+u1fxwVgWn7Kc06qGvVrJXzfhZtDsahEx7l4vwqqW x3QpokGaOvRYM61QkQMIAcFb/iY0aBGkzbf2v05PUHm6XIl57GAS0hTY0GBhSE1wGGZ62/5L TPNYPIr1jE= IronPort-HdrOrdr: A9a23:60Fb2aG+eXBUxhYqpLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079 YZT0EUMrzN5DZB4voSmDPIceod/A== X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="58192114" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 01/65] x86: Introduce support for CET-IBT Date: Fri, 26 Nov 2021 12:33:42 +0000 Message-ID: <20211126123446.32324-2-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930139812100001 CET Indirect Branch Tracking is a hardware feature designed to provide forward-edge control flow integrity, protecting against jump/call oriented programming. IBT requires the placement of ENDBR{32,64} instructions at the target of ev= ery indirect call/jmp, and every entrypoint. However, the default -fcf-protection=3Dbranch places an ENDBR on every func= tion which far more than necessary, and reduces the quantity of protection afforded. Therefore, we use manual placement using the cf_check attribute. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- Config.mk | 1 - tools/firmware/Makefile | 2 ++ xen/arch/x86/Kconfig | 17 +++++++++++++++++ xen/arch/x86/arch.mk | 6 ++++++ xen/arch/x86/x86_emulate/x86_emulate.h | 5 +++++ xen/include/asm-x86/asm-defns.h | 6 ++++++ xen/include/asm-x86/cpufeature.h | 1 + xen/include/asm-x86/cpufeatures.h | 1 + xen/include/xen/compiler.h | 6 ++++++ 9 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Config.mk b/Config.mk index 6587c7d626c9..508261a7dcf4 100644 --- a/Config.mk +++ b/Config.mk @@ -199,7 +199,6 @@ APPEND_CFLAGS +=3D $(foreach i, $(APPEND_INCLUDES), -I$= (i)) =20 EMBEDDED_EXTRA_CFLAGS :=3D -nopie -fno-stack-protector -fno-stack-protecto= r-all EMBEDDED_EXTRA_CFLAGS +=3D -fno-exceptions -fno-asynchronous-unwind-tables -EMBEDDED_EXTRA_CFLAGS +=3D -fcf-protection=3Dnone =20 XEN_EXTFILES_URL ?=3D http://xenbits.xen.org/xen-extfiles # All the files at that location were downloaded from elsewhere on diff --git a/tools/firmware/Makefile b/tools/firmware/Makefile index 1f2711779400..b2fd73248604 100644 --- a/tools/firmware/Makefile +++ b/tools/firmware/Makefile @@ -6,6 +6,8 @@ TARGET :=3D hvmloader/hvmloader INST_DIR :=3D $(DESTDIR)$(XENFIRMWAREDIR) DEBG_DIR :=3D $(DESTDIR)$(DEBUG_DIR)$(XENFIRMWAREDIR) =20 +EMBEDDED_EXTRA_CFLAGS +=3D -fcf-protection=3Dnone + SUBDIRS-y :=3D SUBDIRS-$(CONFIG_OVMF) +=3D ovmf-dir SUBDIRS-$(CONFIG_SEABIOS) +=3D seabios-dir diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig index b4abfca46f6a..8b7ad0145b29 100644 --- a/xen/arch/x86/Kconfig +++ b/xen/arch/x86/Kconfig @@ -39,6 +39,11 @@ config HAS_AS_CET_SS # binutils >=3D 2.29 or LLVM >=3D 6 def_bool $(as-instr,wrssq %rax$(comma)0;setssbsy) =20 +config HAS_CC_CET_IBT + # GCC >=3D 9 and binutils >=3D 2.29 + # Retpoline check to work around https://gcc.gnu.org/bugzilla/show_bug.cg= i?id=3D93654 + def_bool $(cc-option,-fcf-protection=3Dbranch -mmanual-endbr -mindirect-b= ranch=3Dthunk-extern) && $(as-instr,endbr64) + menu "Architecture Features" =20 source "arch/Kconfig" @@ -124,6 +129,18 @@ config XEN_SHSTK When CET-SS is active, 32bit PV guests cannot be used. Backwards compatiblity can be provided via the PV Shim mechanism. =20 +config XEN_IBT + bool "Supervisor Indirect Branch Tracking" + depends on HAS_CC_CET_IBT + default y + help + Control-flow Enforcement Technology (CET) is a set of features in + hardware designed to combat Return-oriented Programming (ROP, also + call/jump COP/JOP) attacks. Indirect Branch Tracking is one CET + feature designed to provide function pointer protection. + + This option arranges for Xen to use CET-IBT for its own protection. + config SHADOW_PAGING bool "Shadow Paging" default !PV_SHIM_EXCLUSIVE diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk index ce0c1a0e7fb2..1c8381f7c9d8 100644 --- a/xen/arch/x86/arch.mk +++ b/xen/arch/x86/arch.mk @@ -46,6 +46,12 @@ CFLAGS-$(CONFIG_INDIRECT_THUNK) +=3D -mindirect-branch= =3Dthunk-extern CFLAGS-$(CONFIG_INDIRECT_THUNK) +=3D -mindirect-branch-register CFLAGS-$(CONFIG_INDIRECT_THUNK) +=3D -fno-jump-tables =20 +ifdef CONFIG_HAS_CC_CET_IBT +CFLAGS +=3D -fcf-protection=3Dbranch -mmanual-endbr +else +$(call cc-option-add,CFLAGS,CC,-fcf-protection=3Dnone) +endif + # If supported by the compiler, reduce stack alignment to 8 bytes. But all= ow # this to be overridden elsewhere. $(call cc-option-add,CFLAGS-stack-boundary,CC,-mpreferred-stack-boundary= =3D3) diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emul= ate/x86_emulate.h index d8fb3a990933..4a483a464804 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.h +++ b/xen/arch/x86/x86_emulate/x86_emulate.h @@ -35,6 +35,11 @@ # error Unknown compilation width #endif =20 +#ifndef cf_check +/* Cope with userspace build not knowing about CET-IBT */ +#define cf_check +#endif + struct x86_emulate_ctxt; =20 /* diff --git a/xen/include/asm-x86/asm-defns.h b/xen/include/asm-x86/asm-defn= s.h index 505f39ad5f76..8bd9007731d5 100644 --- a/xen/include/asm-x86/asm-defns.h +++ b/xen/include/asm-x86/asm-defns.h @@ -57,6 +57,12 @@ INDIRECT_BRANCH jmp \arg .endm =20 +#ifdef CONFIG_XEN_IBT +# define ENDBR64 endbr64 +#else +# define ENDBR64 +#endif + .macro guest_access_mask_ptr ptr:req, scratch1:req, scratch2:req #if defined(CONFIG_SPECULATIVE_HARDEN_GUEST_ACCESS) /* diff --git a/xen/include/asm-x86/cpufeature.h b/xen/include/asm-x86/cpufeat= ure.h index 4754940e23f3..d9e1cd87f0fb 100644 --- a/xen/include/asm-x86/cpufeature.h +++ b/xen/include/asm-x86/cpufeature.h @@ -151,6 +151,7 @@ #define cpu_has_nscb boot_cpu_has(X86_FEATURE_NSCB) #define cpu_has_xen_lbr boot_cpu_has(X86_FEATURE_XEN_LBR) #define cpu_has_xen_shstk boot_cpu_has(X86_FEATURE_XEN_SHSTK) +#define cpu_has_xen_ibt boot_cpu_has(X86_FEATURE_XEN_IBT) =20 #define cpu_has_msr_tsc_aux (cpu_has_rdtscp || cpu_has_rdpid) =20 diff --git a/xen/include/asm-x86/cpufeatures.h b/xen/include/asm-x86/cpufea= tures.h index b10154fc44bb..7413febd7ad8 100644 --- a/xen/include/asm-x86/cpufeatures.h +++ b/xen/include/asm-x86/cpufeatures.h @@ -39,6 +39,7 @@ XEN_CPUFEATURE(SC_VERW_PV, X86_SYNTH(23)) /* VERW = used by Xen for PV */ XEN_CPUFEATURE(SC_VERW_HVM, X86_SYNTH(24)) /* VERW used by Xen for H= VM */ XEN_CPUFEATURE(SC_VERW_IDLE, X86_SYNTH(25)) /* VERW used by Xen for i= dle */ XEN_CPUFEATURE(XEN_SHSTK, X86_SYNTH(26)) /* Xen uses CET Shadow St= acks */ +XEN_CPUFEATURE(XEN_IBT, X86_SYNTH(27)) /* Xen uses CET Indirect = Branch Tracking */ =20 /* Bug words follow the synthetic words. */ #define X86_NR_BUG 1 diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h index 696c7eb89e4c..575036f44b3b 100644 --- a/xen/include/xen/compiler.h +++ b/xen/include/xen/compiler.h @@ -37,6 +37,12 @@ # define nocall #endif =20 +#ifdef CONFIG_HAS_CC_CET_IBT +# define cf_check __attribute__((__cf_check__)) +#else +# define cf_check +#endif + #if (!defined(__clang__) && (__GNUC__ =3D=3D 4) && (__GNUC_MINOR__ < 5)) #define unreachable() do {} while (1) #else --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930139; cv=none; d=zohomail.com; s=zohoarc; b=h6uM0WX76iNdMUmUyv8aFtSQjCAmmKt3IgS6ONEui7GvezWkUGPWtwwyw3nR4JRG1CI2DbAc8bzppQPtxs7LmcLs6GC09MbxTqJB5iW9Fj/bIplASbmx+3ONhzSBUwmAf3uhAfUBXJmU6AXZmAgEEGCT7HeK1c6NFmMaZ+SAX6o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930139; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XJup/0r2iisN25YkEZgRU6CXcBh6g+kBpr0J1jy78n4=; b=nYvH02uTyZ6XtWvO8Vz3cJ0HFmYlJtZ6yrMlca5O8xj3mAzOb0zxeKVi62O8h98f8Q5tmsnc62UBn5Fuffrjk2Hw+Bfct+/tX+1XTjszXdwCeN8SSFffUS2MxNVbS7P4Oluq7GrO6ZiL6smFsDQaB2pWF8Nw5l2GO9wlqK87L5Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637930139740211.4537737118327; Fri, 26 Nov 2021 04:35:39 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232664.403427 (Exim 4.92) (envelope-from ) id 1mqaRQ-0001FI-2M; Fri, 26 Nov 2021 12:35:00 +0000 Received: by outflank-mailman (output) from mailman id 232664.403427; Fri, 26 Nov 2021 12:35:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRP-0001FB-Vd; Fri, 26 Nov 2021 12:34:59 +0000 Received: by outflank-mailman (input) for mailman id 232664; Fri, 26 Nov 2021 12:34:59 +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 1mqaRP-0001F5-Ai for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:34:59 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 42b961ab-4eb5-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 13:34:57 +0100 (CET) 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: 42b961ab-4eb5-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930097; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=P6+wFk0+JaJVj/ZX7SdMdgmqS7z6GuiHKgY74wOhyk8=; b=XXabGXOm/xDtqv/4PkD/jojExkGwr2V6komB1QEWA43hO3mZYnsr4xBl ELrxTZDiWfN0enjfdJaNnAtg3pD6F7c5gcgzvHDqQSNRRU+zfqYenqTIA UGAmvBjrmFAes1/RZYmgMFe8FcUbJNwCkS/yWndfytvJ1Qw4xzC7yCd4X 8=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: y72rfEu8k5kqf4e9U1JsSGxFKJTjzAjzP9VUDZbs6zDPPf3XebNHNsy5uvs12GZBBGlLSQ37XB Hyt3Czjj6blcFWDJYSfGIZIbHCI9Wu3ENCoEFW7wYcREIEmQ8gMqkYNZlKp/NnHz7uXRick/TI Qa+tAZl8858dyclEqqlsjnVdnuPj2svpQ4DVDtfZla7GXiHi1a4Tt41wG7U5HbGt2gQtDdqZxH HKu2h/s3OlviqiPPqGZ4V6Tc46d5mS+rMnkG/Gpeu2Q9GGt6VuZK0ZkWP5NBr6B6s2Kxu1Vd/N RzyGEDaTYamQRDx4DOZsZoX8 X-SBRS: 5.1 X-MesageID: 58192115 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:pLZZZK8UEkcpIvaO8MPIDrUDv3mTJUtcMsCJ2f8bNWPcYEJGY0x3y WIdD2+OafjeMDf8LtknYIS28koDuZWAyddnTgRlrC08E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGmeIdA970Ug6wrdj3NYx6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhS6 cx1k6aLdTsII/Pg36dMSgd6KTlhaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguwKKsXxMZxZkXZn1TzDVt4tQIzZQrWM7thdtNs1rp0eRKeEP pNEAdZpRE79SjNDJm4KM8wZrO6jrV/CVQdFtk3A8MLb5ECMlVcsgdABKuH9eNOQQt5Otl2Fv W+A9GP8ajkKOdraxTeb/3aEgu7UgTi9SI8UDKe/9PNhnBuU3GN7NfENfQLl+7/j0Bf4Ao8Bb RxPksYzkUQs3G+KV+HbZSaEnF+Z4DJbGItJDc8A8B7Yn8I4/D2lLmQDSzdAbvkvu8k3WSEm2 ze1oj/5OdB8mObLECzAr994uRv3YHFIdjFaOUfoWCNcu4G7yLzfmC4jWTqK/ESdqtTuUQ/9z DmRxMTVr+VC1JVbv0lXEL2uvt5NmnQrZlJqjuk0djj8hu+cWGJDT9fzgbQ8xawdRLt1tnHb4 BA5dzG2tYji962lmi2XW/kqF7q0/fuDOzC0qQcxRMZxqWnyqiL9Ids4DNRCyKFBaZ1sldjBO hK7hO+szMULYCvCgVFfP+pd9PjGPYC/TI+4B5g4n/JFY4RrdR/vwc2dTRX44owZq2B1yftXE c7CKa6EVC9GYYw6nGveb7pMitcDm3FhrV4/sLimlnxLJ5LFPyXLIVrEWXPTBt0EAFSs/F+Ir o0BbpTSkH2ykoTWO0HqzGLaFnhSRVBTOHw8g5Y/mjerLlU0FWc/JeXWxL99KYVpk74MzrXD/ 22nW18ew1363CWVJQKPY3FlSbXuQZcg8i5rYX1yZQ6liyo5fIKizKYDbJ9rL7Mpw/NukKxvR P4fdsTeXvkWEmbb+y4QZIXWpZB5cEj5nhqHOieoOWBtf5NpSwHT1MXjew/jqHsHAiat7JNsq Ly8zALLB5EEQl06XsrRbfuuyXK3vGQcx70uDxeZfIELdRy1ooZwKiH3gvsmGO02KE3OlmmAy gKbIRYEvu2R8YU7x8bE2PKfpICzHuogQkcDRzvH7ay7PDXx93a4xdMSS/6BeD3QWT+m+KimY ukJnfjwPOdewQRPuot4Vb1q0bg/953koLoDllZoG3DCblKKDLJ8IybZgZkT5/MVnrIJ6xGrX k+v+8VBPeTbMczoJ1cdOQ45Y7nRzvoTgDTTsaw4LUiSCPWbJ1ZbvZG+5yWxtRE= IronPort-HdrOrdr: A9a23:zMmCHq7nBwrQhNdmUgPXwMrXdLJyesId70hD6qhwISY6TiX4rb HWoB1173/JYVoqNE3I3OrwXZVoIkmsk6Kdg7NhXotKNTOO0ADDQb2Kr7GSpwEIcxeOkdK1vp 0AT0ERMrLN5CBB/KTH3DU= X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="58192115" From: Andrew Cooper To: Xen-devel CC: Juergen Gross Subject: [PATCH 02/65] x86/pv-shim: don't modify hypercall table Date: Fri, 26 Nov 2021 12:33:43 +0000 Message-ID: <20211126123446.32324-3-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930141785100005 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Juergen Gross When running as pv-shim the hypercall is modified today in order to replace the functions for __HYPERVISOR_event_channel_op and __HYPERVISOR_grant_table_op hypercalls. Change this to call the related functions from the normal handlers instead when running as shim. The performance implications are not really relevant, as a normal production hypervisor will not be configured to support shim mode, so the related calls will be dropped due to optimization of the compiler. Note that for the CONFIG_PV_SHIM_EXCLUSIVE case there is a dummy wrapper do_grant_table_op() needed, as in this case grant_table.c isn't being built. Signed-off-by: Juergen Gross Acked-by: Dario Faggioli Acked-by: Jan Beulich --- xen/arch/x86/pv/hypercall.c | 2 +- xen/arch/x86/pv/shim.c | 54 ++++++++++++++++------------= ---- xen/arch/x86/x86_64/platform_hypercall.c | 2 +- xen/common/compat/multicall.c | 3 +- xen/common/event_channel.c | 9 ++++++ xen/common/grant_table.c | 9 ++++++ xen/include/asm-x86/hypercall.h | 4 ++- xen/include/asm-x86/pv/shim.h | 3 ++ 8 files changed, 54 insertions(+), 32 deletions(-) diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c index 3579ba905c1c..4744d9f78f01 100644 --- a/xen/arch/x86/pv/hypercall.c +++ b/xen/arch/x86/pv/hypercall.c @@ -64,7 +64,7 @@ const pv_hypercall_table_t pv_hypercall_table[] =3D { COMPAT_CALL(xen_version), HYPERCALL(console_io), COMPAT_CALL(physdev_op_compat), -#ifdef CONFIG_GRANT_TABLE +#if defined(CONFIG_GRANT_TABLE) || defined(CONFIG_PV_SHIM) COMPAT_CALL(grant_table_op), #endif HYPERCALL(vm_assist), diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c index d9704121a739..7e891fe2f7a4 100644 --- a/xen/arch/x86/pv/shim.c +++ b/xen/arch/x86/pv/shim.c @@ -56,11 +56,6 @@ static DEFINE_SPINLOCK(balloon_lock); =20 static struct platform_bad_page __initdata reserved_pages[2]; =20 -static long pv_shim_event_channel_op(int cmd, XEN_GUEST_HANDLE_PARAM(void)= arg); -static long pv_shim_grant_table_op(unsigned int cmd, - XEN_GUEST_HANDLE_PARAM(void) uop, - unsigned int count); - /* * By default give the shim 1MB of free memory slack. Some users may wish = to * tune this constants for better memory utilization. This can be achieved @@ -203,7 +198,6 @@ void __init pv_shim_setup_dom(struct domain *d, l4_pgen= try_t *l4start, start_info_t *si) { bool compat =3D is_pv_32bit_domain(d); - pv_hypercall_table_t *rw_pv_hypercall_table; uint64_t param =3D 0; long rc; =20 @@ -249,23 +243,6 @@ void __init pv_shim_setup_dom(struct domain *d, l4_pge= ntry_t *l4start, consoled_set_ring_addr(page); } =20 - /* - * Locate pv_hypercall_table[] (usually .rodata) in the directmap (whi= ch - * is writeable) and insert some shim-specific hypercall handlers. - */ - rw_pv_hypercall_table =3D __va(__pa(pv_hypercall_table)); - rw_pv_hypercall_table[__HYPERVISOR_event_channel_op].native =3D - (hypercall_fn_t *)pv_shim_event_channel_op; - rw_pv_hypercall_table[__HYPERVISOR_grant_table_op].native =3D - (hypercall_fn_t *)pv_shim_grant_table_op; - -#ifdef CONFIG_PV32 - rw_pv_hypercall_table[__HYPERVISOR_event_channel_op].compat =3D - (hypercall_fn_t *)pv_shim_event_channel_op; - rw_pv_hypercall_table[__HYPERVISOR_grant_table_op].compat =3D - (hypercall_fn_t *)pv_shim_grant_table_op; -#endif - guest =3D d; =20 /* @@ -435,7 +412,7 @@ int pv_shim_shutdown(uint8_t reason) return 0; } =20 -static long pv_shim_event_channel_op(int cmd, XEN_GUEST_HANDLE_PARAM(void)= arg) +long pv_shim_event_channel_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { struct domain *d =3D current->domain; struct evtchn_close close; @@ -683,9 +660,9 @@ void pv_shim_inject_evtchn(unsigned int port) # define compat_handle_okay guest_handle_okay #endif =20 -static long pv_shim_grant_table_op(unsigned int cmd, - XEN_GUEST_HANDLE_PARAM(void) uop, - unsigned int count) +long pv_shim_grant_table_op(unsigned int cmd, + XEN_GUEST_HANDLE_PARAM(void) uop, + unsigned int count) { struct domain *d =3D current->domain; long rc =3D 0; @@ -845,6 +822,29 @@ static long pv_shim_grant_table_op(unsigned int cmd, return rc; } =20 +#ifndef CONFIG_GRANT_TABLE +/* Thin wrapper(s) needed. */ +long do_grant_table_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, + unsigned int count) +{ + if ( !pv_shim ) + return -ENOSYS; + + return pv_shim_grant_table_op(cmd, uop, count); +} + +#ifdef CONFIG_PV32 +int compat_grant_table_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) u= op, + unsigned int count) +{ + if ( !pv_shim ) + return -ENOSYS; + + return pv_shim_grant_table_op(cmd, uop, count); +} +#endif +#endif + long pv_shim_cpu_up(void *data) { struct vcpu *v =3D data; diff --git a/xen/arch/x86/x86_64/platform_hypercall.c b/xen/arch/x86/x86_64= /platform_hypercall.c index fbba893a47cb..966fd27b5f22 100644 --- a/xen/arch/x86/x86_64/platform_hypercall.c +++ b/xen/arch/x86/x86_64/platform_hypercall.c @@ -6,8 +6,8 @@ EMIT_FILE; =20 #include #include +#include =20 -DEFINE_XEN_GUEST_HANDLE(compat_platform_op_t); #define xen_platform_op compat_platform_op #define xen_platform_op_t compat_platform_op_t #define do_platform_op(x) compat_platform_op(_##x) diff --git a/xen/common/compat/multicall.c b/xen/common/compat/multicall.c index a0e9918f4805..b17739d21829 100644 --- a/xen/common/compat/multicall.c +++ b/xen/common/compat/multicall.c @@ -5,7 +5,7 @@ EMIT_FILE; =20 #include -#include +#include #include =20 #define COMPAT @@ -19,7 +19,6 @@ static inline void xlat_multicall_entry(struct mc_state *= mcs) mcs->compat_call.args[i] =3D mcs->call.args[i]; } =20 -DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t); #define multicall_entry compat_multicall_entry #define multicall_entry_t multicall_entry_compat_t #define do_multicall_call compat_multicall_call diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index da88ad141a69..b38f49e0a616 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -31,6 +31,10 @@ #include #include =20 +#ifdef CONFIG_PV_SHIM +#include +#endif + #define ERROR_EXIT(_errno) \ do { \ gdprintk(XENLOG_WARNING, \ @@ -1189,6 +1193,11 @@ long do_event_channel_op(int cmd, XEN_GUEST_HANDLE_P= ARAM(void) arg) { int rc; =20 +#ifdef CONFIG_PV_SHIM + if ( pv_shim ) + return pv_shim_event_channel_op(cmd, arg); +#endif + switch ( cmd ) { case EVTCHNOP_alloc_unbound: { diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 012a74455ba6..7dfbee2f370f 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -44,6 +44,10 @@ #include #include =20 +#ifdef CONFIG_PV_SHIM +#include +#endif + /* Per-domain grant information. */ struct grant_table { /* @@ -3543,6 +3547,11 @@ do_grant_table_op( long rc; unsigned int opaque_in =3D cmd & GNTTABOP_ARG_MASK, opaque_out =3D 0; =20 +#ifdef CONFIG_PV_SHIM + if ( pv_shim ) + return pv_shim_grant_table_op(cmd, uop, count); +#endif + if ( (int)count < 0 ) return -EINVAL; =20 diff --git a/xen/include/asm-x86/hypercall.h b/xen/include/asm-x86/hypercal= l.h index 0ae3b8b043b2..45fa987a638f 100644 --- a/xen/include/asm-x86/hypercall.h +++ b/xen/include/asm-x86/hypercall.h @@ -161,8 +161,10 @@ extern int compat_mmuext_op( XEN_GUEST_HANDLE_PARAM(uint) pdone, unsigned int foreigndom); =20 +typedef struct compat_platform_op compat_platform_op_t; +DEFINE_XEN_GUEST_HANDLE(compat_platform_op_t); extern int compat_platform_op( - XEN_GUEST_HANDLE_PARAM(void) u_xenpf_op); + XEN_GUEST_HANDLE_PARAM(compat_platform_op_t) u_xenpf_op); =20 extern long compat_callback_op( int cmd, XEN_GUEST_HANDLE(void) arg); diff --git a/xen/include/asm-x86/pv/shim.h b/xen/include/asm-x86/pv/shim.h index 8a91f4f9dfbf..6415f8068e5c 100644 --- a/xen/include/asm-x86/pv/shim.h +++ b/xen/include/asm-x86/pv/shim.h @@ -19,6 +19,7 @@ #ifndef __X86_PV_SHIM_H__ #define __X86_PV_SHIM_H__ =20 +#include #include =20 #if defined(CONFIG_PV_SHIM_EXCLUSIVE) @@ -45,6 +46,8 @@ domid_t get_initial_domain_id(void); uint64_t pv_shim_mem(uint64_t avail); void pv_shim_fixup_e820(struct e820map *e820); const struct platform_bad_page *pv_shim_reserved_pages(unsigned int *size); +typeof(do_event_channel_op) pv_shim_event_channel_op; +typeof(do_grant_table_op) pv_shim_grant_table_op; =20 #else =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930140; cv=none; d=zohomail.com; s=zohoarc; b=Y8iKJ/DHNB2guH06dKksn+5K7Vn7T/aIZcQLTcV8bEpvffQ6T8cvX3JwDYX1Bd0pF7LLqv/rAkUg3pBBF4VA7EhDjFLmZB9b70lTQi2HPtDmxEeyqKm4Pwdsc4OuTW66oxlZU7TtV6bI9RkkR57V267RS9aaWHcbv+DE01YJgfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930140; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/C5P3LLPmuz5UYq+2voMDg4eHTLRaMRDiIKCtFd9G9o=; b=b2dC7gPawRuDQLvU7lplBvwgb7mVHt0ZtXjc8ojGQGzRs0x2xBkx3oiXrMk9EH2rwctLRB9iFPb5FRNXcVdvnfTzuH40lxbTnoSZYKV+jWvtbYQM0vzBCLRKnypzT3qB7W4foNBPaD9Tv6GC/NQOh09m3ylT0zreaNt+KkYE5eU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637930140388213.04845463508423; Fri, 26 Nov 2021 04:35:40 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232672.403500 (Exim 4.92) (envelope-from ) id 1mqaRX-0002uB-Sj; Fri, 26 Nov 2021 12:35:07 +0000 Received: by outflank-mailman (output) from mailman id 232672.403500; Fri, 26 Nov 2021 12:35:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRX-0002rN-I3; Fri, 26 Nov 2021 12:35:07 +0000 Received: by outflank-mailman (input) for mailman id 232672; Fri, 26 Nov 2021 12:35:05 +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 1mqaRV-0001F5-38 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:35:05 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 461f8c71-4eb5-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 13:35:01 +0100 (CET) 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: 461f8c71-4eb5-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930101; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=zzYsAAZqVX0Gd/xLEcar4h/Ts5nqFa6lcinkTdOV1C4=; b=WDbbS1q2h98nr0vkGjDjOSZ/GcQOGx+OzYs1pyFBRVXltgJ2yPlZq9dr 3XfLc+XsrzbkUlzL4S2eUYuD9MO/3HBEtwancEYm3YUti6XXX0FMd8nQo keUD1DdURvExTwQijxIV44uEvJG/1H/fydbhE4bCjiacNnburicHf9xY0 w=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: uUTgDUvTFsbas4FeXJn8l7EQOQJdiwBaOnuS3drF7RqJPozkQHXMLLRiPvkb9JHlaxxUPzXfiP BarZgDZ3HCicMTaJ3jivFNp+LLcsq3GYsrxKrZDRRQDK5yad2IiczJMfzCWZaAAJSc+LfDrZHl xN1XgBILJtyhkpVUuuSlIg3SmXYljylqxBIXCgKq/vsgenkLDdBuQZMxBg2Gi2lk8mzPjLgQj2 anOI3UgJ4fnLeLrJ4w8croEmEb0L9O7t/97nkWgxy59dBM8Y48WcLhtJvlYhD8rjcOi8iwRQ5s OUEK+NJtfZvZJts859Is3CvD X-SBRS: 5.1 X-MesageID: 58192118 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:SeVySK5CFGjN2zpEsA9SPwxRtAfAchMFZxGqfqrLsTDasY5as4F+v mccUWzSOq6IYGXyKtAlaNvgpB8Fv5bdztBlTARrqCFgHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw2LBVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z+ fdM8rDpZS4QHoLyvL49EAEAIyxfFPgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTa+PP ZNAOVKDajzEOhRICBAcK64Rle6NnkbRf2QEh2Ka8P9fD2/7k1UqjemF3MDuUt6FX8JOhW6Du 3nLuW/+B3kyJNGZjDaI7H+oruvOhj/gHpIfEqWi8fxni0HVwXYcYCD6TnPi/6P/0BTnHYsCd QpEoULCsJTe6mSabNi6c0SUiUekkSA4AfoTC7UK5SCkn/+8DxmiOkAISTtIadoDvcAwRCA32 lLho+4FFQCDo5XOFyvDq+78QSeafHFMcDRcPXNsoR4tuoG7+OkOYgTzosGP+UJfpvn8AnnOz j+Dt0DSbJ1D3JdQh81XEb0q6g9AR6QlrCZpuW07vUr/t2uVgbJJgaTzsjA3Ct4ace6koqGp5 iRspiRnxLlm4WuxvCKMWv4RO7qi+uyINjbR6XY2QcJ+p2rwpC//I9wLiN2bGKuPGp1fEdMOS BWO0T69GbcJZCf6BUOJS97Z5zsWIVjISo2+C6G8gitmaZltbg6XlByClmbLt10BZHMEyPllU b/CKJ7EJS9DVcxPkWrnL89AgORD7n1vmgvuqWXTkk3PPUy2PyXOF9/o8TKmM4gE0U9ziFmPr osEaZLVk043vS+XSnC/zLP/5GsidRATba0aYeQMHgJaCgY5SmwnFdHLxrYtJ95sk6hPz7+a9 XChQE5IjlH4gCSfewmNb3libpLpXIp+8i1nbXB9Yw7w1ihxe5ur4Ycea4AzIest+tt8wKMmV PICYciBXKhCE2yV5zQHYJDhh4V+bxD31xmWNi+obWFnLZ5tTgDE4PH+eQ7r+HVcBya7r5Jm8 bahyhnaUdwIQAE7VJTab/emzlWQu3kBmb0tAxuUc4cLIEi1qdpkMS38iPMzMvogExSby2vIz RuSDDcZufLJ/90//u7WiP3WtIyuCeZ/QBZXRjGJ8basOCDG1WO/2oscAv2QdDXQWW6oqqWvY eJZk6P1PPEdxQsYtoN9F/BgzL4k5suprLhfl1w2EHLOZlWtK7VhPnjZgpUf6vwTnudU6VmsR 0aC2thGIrHYasrqHWkYKBchcuneh+ofnSPf7KhtLUj3jMOtEGFrjamG08GwtRFg IronPort-HdrOrdr: A9a23:CtGZ2anPmULhRQ6GZcv8I3y1lgjpDfIu3DAbv31ZSRFFG/Fxl6 iV8sjztCWE8Qr5N0tBpTntAsW9qDbnhPtICOoqTNGftWvdyQiVxehZhOOIqVDd8m/Fh4pgPM 9bAs9D4bbLbGSS4/yU3ODBKadD/OW6 X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="58192118" From: Andrew Cooper To: Xen-devel CC: Juergen Gross Subject: [PATCH 03/65] xen/x86: don't use hypercall table for calling compat hypercalls Date: Fri, 26 Nov 2021 12:33:44 +0000 Message-ID: <20211126123446.32324-4-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930141858100006 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Juergen Gross Today the *_op_compat hypercalls call the modern handler functions by using the entries from the hypercall table. This is resulting in a not needed indirect function call which can be avoided by using the correct handler function directly. This is basically a revert of commit 1252e282311734 ("86/pv: Export pv_hypercall_table[] rather than working around it in several ways"), which reasoning no longer applies, as shim no longer modifies the hypercall table. The hypercall table can now be made static as there is no external reference to it any longer. Commit 834cb8761051f7 ("x86/PV32: fix physdev_op_compat handling") can be reverted, too, as using the direct call of the correct handler is already handled fine without that patch. Signed-off-by: Juergen Gross Reviewed-by: Jan Beulich Acked-by: Dario Faggioli Acked-by: Jan Beulich --- xen/arch/x86/compat.c | 14 ++++---------- xen/arch/x86/pv/hypercall.c | 9 ++++++++- xen/arch/x86/x86_64/compat.c | 1 - xen/include/asm-x86/hypercall.h | 8 -------- 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/xen/arch/x86/compat.c b/xen/arch/x86/compat.c index 58b202f701d5..939b449dec29 100644 --- a/xen/arch/x86/compat.c +++ b/xen/arch/x86/compat.c @@ -17,14 +17,12 @@ typedef long ret_t; /* Legacy hypercall (as of 0x00030202). */ ret_t do_physdev_op_compat(XEN_GUEST_HANDLE_PARAM(physdev_op_t) uop) { - typeof(do_physdev_op) *fn =3D - (void *)pv_hypercall_table[__HYPERVISOR_physdev_op].native; struct physdev_op op; =20 if ( unlikely(copy_from_guest(&op, uop, 1) !=3D 0) ) return -EFAULT; =20 - return fn(op.cmd, guest_handle_from_ptr(&uop.p->u, void)); + return do_physdev_op(op.cmd, guest_handle_from_ptr(&uop.p->u, void)); } =20 #ifndef COMPAT @@ -32,14 +30,11 @@ ret_t do_physdev_op_compat(XEN_GUEST_HANDLE_PARAM(physd= ev_op_t) uop) /* Legacy hypercall (as of 0x00030101). */ long do_sched_op_compat(int cmd, unsigned long arg) { - typeof(do_sched_op) *fn =3D - (void *)pv_hypercall_table[__HYPERVISOR_sched_op].native; - switch ( cmd ) { case SCHEDOP_yield: case SCHEDOP_block: - return fn(cmd, guest_handle_from_ptr(NULL, void)); + return do_sched_op(cmd, guest_handle_from_ptr(NULL, void)); =20 case SCHEDOP_shutdown: TRACE_3D(TRC_SCHED_SHUTDOWN, @@ -57,8 +52,6 @@ long do_sched_op_compat(int cmd, unsigned long arg) /* Legacy hypercall (as of 0x00030202). */ long do_event_channel_op_compat(XEN_GUEST_HANDLE_PARAM(evtchn_op_t) uop) { - typeof(do_event_channel_op) *fn =3D - (void *)pv_hypercall_table[__HYPERVISOR_event_channel_op].native; struct evtchn_op op; =20 if ( unlikely(copy_from_guest(&op, uop, 1) !=3D 0) ) @@ -76,7 +69,8 @@ long do_event_channel_op_compat(XEN_GUEST_HANDLE_PARAM(ev= tchn_op_t) uop) case EVTCHNOP_bind_ipi: case EVTCHNOP_bind_vcpu: case EVTCHNOP_unmask: - return fn(op.cmd, guest_handle_from_ptr(&uop.p->u, void)); + return do_event_channel_op(op.cmd, + guest_handle_from_ptr(&uop.p->u, void)); =20 default: return -ENOSYS; diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c index 4744d9f78f01..e2709ff6e9d4 100644 --- a/xen/arch/x86/pv/hypercall.c +++ b/xen/arch/x86/pv/hypercall.c @@ -27,6 +27,13 @@ #include #include =20 +typedef struct { + hypercall_fn_t *native; +#ifdef CONFIG_PV32 + hypercall_fn_t *compat; +#endif +} pv_hypercall_table_t; + #ifdef CONFIG_PV32 #define HYPERCALL(x) \ [ __HYPERVISOR_ ## x ] =3D { (hypercall_fn_t *) do_ ## x, \ @@ -42,7 +49,7 @@ =20 #define do_arch_1 paging_domctl_continuation =20 -const pv_hypercall_table_t pv_hypercall_table[] =3D { +static const pv_hypercall_table_t pv_hypercall_table[] =3D { COMPAT_CALL(set_trap_table), HYPERCALL(mmu_update), COMPAT_CALL(set_gdt), diff --git a/xen/arch/x86/x86_64/compat.c b/xen/arch/x86/x86_64/compat.c index fcbc1cc0d780..0e4c71f2aa17 100644 --- a/xen/arch/x86/x86_64/compat.c +++ b/xen/arch/x86/x86_64/compat.c @@ -12,7 +12,6 @@ EMIT_FILE; #define physdev_op_t physdev_op_compat_t #define do_physdev_op compat_physdev_op #define do_physdev_op_compat(x) compat_physdev_op_compat(_##x) -#define native compat =20 #define COMPAT #define _XEN_GUEST_HANDLE(t) XEN_GUEST_HANDLE(t) diff --git a/xen/include/asm-x86/hypercall.h b/xen/include/asm-x86/hypercal= l.h index 45fa987a638f..9caca272eff7 100644 --- a/xen/include/asm-x86/hypercall.h +++ b/xen/include/asm-x86/hypercall.h @@ -16,13 +16,6 @@ typedef unsigned long hypercall_fn_t( unsigned long, unsigned long, unsigned long); =20 typedef struct { - hypercall_fn_t *native; -#ifdef CONFIG_PV32 - hypercall_fn_t *compat; -#endif -} pv_hypercall_table_t; - -typedef struct { uint8_t native; #ifdef CONFIG_COMPAT uint8_t compat; @@ -32,7 +25,6 @@ typedef struct { extern const hypercall_args_t hypercall_args_table[NR_hypercalls]; =20 #ifdef CONFIG_PV -extern const pv_hypercall_table_t pv_hypercall_table[]; void pv_hypercall(struct cpu_user_regs *regs); #endif =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930148; cv=none; d=zohomail.com; s=zohoarc; b=AsJ/PTXmwriEqlQ5bu3tfH2fD3v7QrM/iACWYsWa08GQOG6+AXe1YKkommVHm6+GjhFUzP6NnQBf6CSWcx37Ia0JoShuY1MnmjnKhMbvXaRXBUHEituI3uHJc/GAicrM4dfGsTPPImC8MQIRFltaawdCNtami4tawADjiYNnyso= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930148; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=x8ykb1USQEbDo0VouVKzKDWmX9U6AFd+cmp+LKrCfw0=; b=eDU3uC+h8uvhB5eyQNdId9bCFLR8/xcZruZTFHNkLhwdWTG6SDVP9xIusdaPBSVPs6ILKwjnDZ2cfjWx7xH2a/8pULuqrgGLK/mojpSRlYQdyvSDvHOIi3rypytK5R7v5P6rOKXW6/u5cOhAsKHHEVKnvN0a5SuQqCneECHJeYc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637930148917620.757599285571; Fri, 26 Nov 2021 04:35:48 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232673.403508 (Exim 4.92) (envelope-from ) id 1mqaRY-00034n-PN; Fri, 26 Nov 2021 12:35:08 +0000 Received: by outflank-mailman (output) from mailman id 232673.403508; Fri, 26 Nov 2021 12:35:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRY-00032A-88; Fri, 26 Nov 2021 12:35:08 +0000 Received: by outflank-mailman (input) for mailman id 232673; Fri, 26 Nov 2021 12:35:06 +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 1mqaRW-0001F5-3V for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:35:06 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 46381aa7-4eb5-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 13:35:03 +0100 (CET) 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: 46381aa7-4eb5-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930103; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7+RyUS5PFnw5b8XLf8Ch6d+LKPyMu+o0FKqw1pwQ7wE=; b=LGr+iwpvx8HiHqdvaRH9MgrrQX3r8ztFCWQS57q0KAAi19XF6p1uR1cd H82zs0IHnVZPyOlyDyAmWcHOSRUR2Akh+//TGUFDC/u5YjcaprlQzDPeI +jJWhvfxWPEmJ/6sRw1gezVNNiwP2uopgY76385ap5DF/2OO6E0ru6gvb c=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 4RKIx4urBw79HNhNkkeoK6mOwMyF7CxQIkT+OVEx1k4BomNfY1S3y49nxRgeNaI+jyfl9OJwT4 RifcSzaqRTtajSkgNuzYvVxX9oKyyk4H7We1E03+ZqUl/JKZ7z+/RQxD57aoR0HqParNvayP+p WuxFeIXEZzCql4xMN/ERf+pmtso9RQzq/46+Gca6jedlnJTLTTjSPR/X7boIxq3sqjMZVhfVz8 vI9SnC6j12IBHiM8ZFvK1TEk8DEnn20PraZKjAyxzlRvzGOvOlwua3iU5hSVLBUDNSnQqs40TF 0/THgraNw5ILoRDuSxbvKFQZ X-SBRS: 5.1 X-MesageID: 58192119 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:f5O0jari1LLia9snTBDOPfofJJpeBmKcYhIvgKrLsJaIsI4StFCzt garIBmEbKqPN2Omet93atzip04PsMfWm4dqTgtrpSg9FX5E85uZCYyVIHmrMnLJJKUvbq7GA +byyDXkBJppJpMJjk71atANlZT4vE2xbuKU5NTsY0idfic5Dnd+4f5fs7Rh2Ncx2ILnW1rlV e7a+KUzBnf0g1aYDUpMg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZdhMUdrJ8DO+iL 9sv+Znilo/vE7XBPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XnRfTAKtao2zhojx/9 DlCnaGdEzULO4rUpNsADwl8TXl9H50X/aCSdBBTseTLp6HHW37lwvEoB0AqJ4wIvO1wBAmi9 9RBdmpLNErawbvrnvTrEYGAhex6RCXvFKoZtmtt0nfyCvE+TIqYa67L+cVZzHE7gcUm8fP2O ppAOGA2NUWojxtnF34NEZQfjPWRhFrZajBWlGzNpIdp2j2GpOB2+Oe0a4eEEjCQfu1Xg0KZq 2Tu72n/RBYAO7S36xCI73atje/nhj7gVcQZE7jQ3vxlmlqI3UQIFQYbE1C8pJGRmkO4Ht5SN UEQ0i4vtrQpslymSMHnWB+1q2LCuQQTM/JLCPEz4gyJzqvS4i6aC3ICQzoHb8Yp3OcpQRQ62 1nPmMnmbQGDq5XMFyjbrO3N62rvZ25FdgfueBPoUyM4zoPRgoQUli7wU4pzNPDtjf/FSDTvl mXiQDcFu50fissC1qOe9F/Bgi6xqpWhcjPZ9jk7TUr+sFonOdfNi5iArAGCsK0edNrxokyp5 SBcw6CjAPYy4YZhfcBnaMEEB/mX6vmMK1UwanY/TsB6p1xBF5NOFL28AQ2Sxm81ba7omhezO Sc/XD+9ArcIZxNGioctPuqM5zwCl/SIKDgcfqm8giBySpZwbhSb2ypleFSd2Wvg+GB1z/pga cnGLpfwUypBYUiC8NZQb7xGuVPM7npjrV4/uLihl0j3uVZgTCL9pUg53KumMblisfLsTPT9+ NdDLcqaoyizo8WlChQ7BbU7dAhQRVBiXMieg5UOKoarf1o3cEl8WqS56e5wJORYc1F9y76gE oeVARQDljISRBTvdG23V5yUQO+1AMsk8ytkZXdE0JTB8yFLXLtDJZw3L/MfFYTLPsQ6pRKtZ /VaKciGHNpVTTHLp2YUYZXn9dQwfxW3nwOeeSGiZWFnLZJnQgXI/P7ifxfuq3ZSXnbm65Nmr u3yzB7fTLoCWx9mUJTcZsWwwg7jpnMagu9zARfFe4EBZEX2/YF2ACXtlftrcdoUIBDOy2LCh QabCBsVv8fXpIox/IWbjKyItd7xQeB/AlBbDy/Q6rPvbXvW+W+qwIlhVueUfG+CCDOoqfv6P egMlqPyKvwKmlpOorFQKbczwPJs/cbrqp9b0h9gQCfBYWO0B+4yOXKBx8RO6PFAn+cLpQusV 0uT0dBGIrHVatj9GVscKQd5POSO0fYYxmvb4fgveRio4SZ2+PyMUFlIPgnKgytYdeMnPIQgy OYnmcgX9w3g1UZ6bofY1nhZpzaWM3gNc6Q7rZVLUobkhz0ixkxGfZGBWDT954uCaokUP0QnS tNOaHEuW1iIKpL+TkcO IronPort-HdrOrdr: A9a23:6s2/MqhbbAJN7UCR5LBnNuo553BQXuIji2hC6mlwRA09TySZ// rBoB19726MtN9xYgBHpTnuAsm9qB/nmaKdpLNhWItKPzOW31dATrsSjrcKqgeIc0aVm9K1l5 0QF5SWYOeAdWSS5vya3ODXKbkdKaG8gcKVuds= X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="58192119" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Juergen Gross Subject: [PATCH 04/65] x86/hypercall: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:33:45 +0000 Message-ID: <20211126123446.32324-5-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930150466100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 CC: Juergen Gross Likely going to be replaced with Juergen's series doing full devirtualisati= on of the hypercall handling, but absent a version which passes CI, this is the minimum change to disentangle the two series. --- xen/arch/x86/compat.c | 7 ++-- xen/arch/x86/cpu/mcheck/mce.c | 2 +- xen/arch/x86/cpu/vpmu.c | 3 +- xen/arch/x86/hvm/dm.c | 5 ++- xen/arch/x86/hvm/hvm.c | 2 +- xen/arch/x86/hvm/hypercall.c | 5 +-- xen/arch/x86/mm.c | 23 ++++++------- xen/arch/x86/mm/paging.c | 3 +- xen/arch/x86/physdev.c | 2 +- xen/arch/x86/platform_hypercall.c | 3 +- xen/arch/x86/pv/callback.c | 25 +++++++------- xen/arch/x86/pv/descriptor-tables.c | 14 ++++---- xen/arch/x86/pv/iret.c | 4 +-- xen/arch/x86/pv/misc-hypercalls.c | 10 +++--- xen/arch/x86/pv/shim.c | 8 ++--- xen/arch/x86/x86_64/compat/mm.c | 7 ++-- xen/common/argo.c | 4 +-- xen/common/compat/domain.c | 3 +- xen/common/compat/grant_table.c | 5 ++- xen/common/compat/kernel.c | 2 +- xen/common/compat/memory.c | 3 +- xen/common/dm.c | 6 ++-- xen/common/domain.c | 5 +-- xen/common/domctl.c | 2 +- xen/common/event_channel.c | 2 +- xen/common/grant_table.c | 2 +- xen/common/hypfs.c | 6 ++-- xen/common/kernel.c | 2 +- xen/common/kexec.c | 4 +-- xen/common/memory.c | 2 +- xen/common/multicall.c | 2 +- xen/common/sched/compat.c | 2 +- xen/common/sched/core.c | 4 +-- xen/common/sysctl.c | 2 +- xen/common/xenoprof.c | 2 +- xen/drivers/char/console.c | 4 +-- xen/include/asm-x86/hypercall.h | 69 +++++++++++++++++++--------------= ---- xen/include/asm-x86/paging.h | 2 +- xen/include/xen/hypercall.h | 69 +++++++++++++++++++--------------= ---- xen/xsm/xsm_core.c | 4 +-- 40 files changed, 169 insertions(+), 162 deletions(-) diff --git a/xen/arch/x86/compat.c b/xen/arch/x86/compat.c index 939b449dec29..28281a262a3c 100644 --- a/xen/arch/x86/compat.c +++ b/xen/arch/x86/compat.c @@ -15,7 +15,7 @@ typedef long ret_t; #endif =20 /* Legacy hypercall (as of 0x00030202). */ -ret_t do_physdev_op_compat(XEN_GUEST_HANDLE_PARAM(physdev_op_t) uop) +ret_t cf_check do_physdev_op_compat(XEN_GUEST_HANDLE_PARAM(physdev_op_t) u= op) { struct physdev_op op; =20 @@ -28,7 +28,7 @@ ret_t do_physdev_op_compat(XEN_GUEST_HANDLE_PARAM(physdev= _op_t) uop) #ifndef COMPAT =20 /* Legacy hypercall (as of 0x00030101). */ -long do_sched_op_compat(int cmd, unsigned long arg) +long cf_check do_sched_op_compat(int cmd, unsigned long arg) { switch ( cmd ) { @@ -50,7 +50,8 @@ long do_sched_op_compat(int cmd, unsigned long arg) } =20 /* Legacy hypercall (as of 0x00030202). */ -long do_event_channel_op_compat(XEN_GUEST_HANDLE_PARAM(evtchn_op_t) uop) +long cf_check do_event_channel_op_compat( + XEN_GUEST_HANDLE_PARAM(evtchn_op_t) uop) { struct evtchn_op op; =20 diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index 7f433343bca3..eae08caa07cd 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -1351,7 +1351,7 @@ CHECK_mcinfo_recovery; # endif /* CONFIG_COMPAT */ =20 /* Machine Check Architecture Hypercall */ -long do_mca(XEN_GUEST_HANDLE_PARAM(xen_mc_t) u_xen_mc) +long cf_check do_mca(XEN_GUEST_HANDLE_PARAM(xen_mc_t) u_xen_mc) { long ret =3D 0; struct xen_mc curop, *op =3D &curop; diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c index 16e91a3694fe..4ada29670469 100644 --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -695,7 +695,8 @@ void vpmu_dump(struct vcpu *v) vpmu->arch_vpmu_ops->arch_vpmu_dump(v); } =20 -long do_xenpmu_op(unsigned int op, XEN_GUEST_HANDLE_PARAM(xen_pmu_params_t= ) arg) +long cf_check do_xenpmu_op( + unsigned int op, XEN_GUEST_HANDLE_PARAM(xen_pmu_params_t) arg) { int ret; struct vcpu *curr; diff --git a/xen/arch/x86/hvm/dm.c b/xen/arch/x86/hvm/dm.c index b60b9f3364a8..d80975efcf45 100644 --- a/xen/arch/x86/hvm/dm.c +++ b/xen/arch/x86/hvm/dm.c @@ -654,9 +654,8 @@ CHECK_dm_op_relocate_memory; CHECK_dm_op_pin_memory_cacheattr; CHECK_dm_op_nr_vcpus; =20 -int compat_dm_op(domid_t domid, - unsigned int nr_bufs, - XEN_GUEST_HANDLE_PARAM(void) bufs) +int cf_check compat_dm_op( + domid_t domid, unsigned int nr_bufs, XEN_GUEST_HANDLE_PARAM(void) bufs) { struct dmop_args args; unsigned int i; diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 31e9474db093..00edf899fa79 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -4997,7 +4997,7 @@ static int hvmop_get_mem_type( return rc; } =20 -long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg) +long cf_check do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg) { long rc =3D 0; =20 diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c index 63bed52e402d..38f58ab60d6c 100644 --- a/xen/arch/x86/hvm/hypercall.c +++ b/xen/arch/x86/hvm/hypercall.c @@ -31,7 +31,8 @@ #include #include =20 -static long hvm_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) = arg) +static long cf_check hvm_memory_op( + unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { long rc; =20 @@ -51,7 +52,7 @@ static long hvm_memory_op(unsigned long cmd, XEN_GUEST_HA= NDLE_PARAM(void) arg) } =20 #ifdef CONFIG_GRANT_TABLE -static long hvm_grant_table_op( +static long cf_check hvm_grant_table_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, unsigned int count) { switch ( cmd ) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 4d799032dc82..25f44a161c65 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3353,7 +3353,7 @@ static int vcpumask_to_pcpumask( } } =20 -long do_mmuext_op( +long cf_check do_mmuext_op( XEN_GUEST_HANDLE_PARAM(mmuext_op_t) uops, unsigned int count, XEN_GUEST_HANDLE_PARAM(uint) pdone, @@ -3892,7 +3892,7 @@ long do_mmuext_op( return rc; } =20 -long do_mmu_update( +long cf_check do_mmu_update( XEN_GUEST_HANDLE_PARAM(mmu_update_t) ureqs, unsigned int count, XEN_GUEST_HANDLE_PARAM(uint) pdone, @@ -4477,8 +4477,8 @@ static int __do_update_va_mapping( return rc; } =20 -long do_update_va_mapping(unsigned long va, u64 val64, - unsigned long flags) +long cf_check do_update_va_mapping( + unsigned long va, u64 val64, unsigned long flags) { int rc =3D __do_update_va_mapping(va, val64, flags, current->domain); =20 @@ -4489,9 +4489,8 @@ long do_update_va_mapping(unsigned long va, u64 val64, return rc; } =20 -long do_update_va_mapping_otherdomain(unsigned long va, u64 val64, - unsigned long flags, - domid_t domid) +long cf_check do_update_va_mapping_otherdomain( + unsigned long va, u64 val64, unsigned long flags, domid_t domid) { struct domain *pg_owner; int rc; @@ -4513,8 +4512,8 @@ long do_update_va_mapping_otherdomain(unsigned long v= a, u64 val64, #endif /* CONFIG_PV */ =20 #ifdef CONFIG_PV32 -int compat_update_va_mapping(unsigned int va, uint32_t lo, uint32_t hi, - unsigned int flags) +int cf_check compat_update_va_mapping( + unsigned int va, uint32_t lo, uint32_t hi, unsigned int flags) { int rc =3D __do_update_va_mapping(va, ((uint64_t)hi << 32) | lo, flags, current->domain); @@ -4526,9 +4525,9 @@ int compat_update_va_mapping(unsigned int va, uint32_= t lo, uint32_t hi, return rc; } =20 -int compat_update_va_mapping_otherdomain(unsigned int va, - uint32_t lo, uint32_t hi, - unsigned int flags, domid_t domid) +int cf_check compat_update_va_mapping_otherdomain( + unsigned int va, uint32_t lo, uint32_t hi, unsigned int flags, + domid_t domid) { struct domain *pg_owner; int rc; diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c index dd6b2bdf6fd6..b2bec893c479 100644 --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -756,7 +756,8 @@ int paging_domctl(struct domain *d, struct xen_domctl_s= hadow_op *sc, return shadow_domctl(d, sc, u_domctl); } =20 -long paging_domctl_continuation(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_dom= ctl) +long cf_check paging_domctl_continuation( + XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) { struct xen_domctl op; struct domain *d; diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c index ea38be8b797a..2ddcf44f33a4 100644 --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -174,7 +174,7 @@ int physdev_unmap_pirq(domid_t domid, int pirq) } #endif /* COMPAT */ =20 -ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) +ret_t cf_check do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { int irq; ret_t ret; diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hype= rcall.c index 284c2dfb9efe..f5457565a560 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -210,7 +210,8 @@ void resource_access(void *info) } #endif =20 -ret_t do_platform_op(XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op) +ret_t cf_check do_platform_op( + XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op) { ret_t ret; struct xen_platform_op curop, *op =3D &curop; diff --git a/xen/arch/x86/pv/callback.c b/xen/arch/x86/pv/callback.c index 42a6aa0831b7..55148c7f9e50 100644 --- a/xen/arch/x86/pv/callback.c +++ b/xen/arch/x86/pv/callback.c @@ -140,7 +140,7 @@ static long unregister_guest_callback(struct callback_u= nregister *unreg) return ret; } =20 -long do_callback_op(int cmd, XEN_GUEST_HANDLE_PARAM(const_void) arg) +long cf_check do_callback_op(int cmd, XEN_GUEST_HANDLE_PARAM(const_void) a= rg) { long ret; =20 @@ -178,9 +178,9 @@ long do_callback_op(int cmd, XEN_GUEST_HANDLE_PARAM(con= st_void) arg) return ret; } =20 -long do_set_callbacks(unsigned long event_address, - unsigned long failsafe_address, - unsigned long syscall_address) +long cf_check do_set_callbacks( + unsigned long event_address, unsigned long failsafe_address, + unsigned long syscall_address) { struct callback_register event =3D { .type =3D CALLBACKTYPE_event, @@ -283,7 +283,7 @@ static long compat_unregister_guest_callback( return ret; } =20 -long compat_callback_op(int cmd, XEN_GUEST_HANDLE(void) arg) +long cf_check compat_callback_op(int cmd, XEN_GUEST_HANDLE(void) arg) { long ret; =20 @@ -321,10 +321,9 @@ long compat_callback_op(int cmd, XEN_GUEST_HANDLE(void= ) arg) return ret; } =20 -long compat_set_callbacks(unsigned long event_selector, - unsigned long event_address, - unsigned long failsafe_selector, - unsigned long failsafe_address) +long cf_check compat_set_callbacks( + unsigned long event_selector, unsigned long event_address, + unsigned long failsafe_selector, unsigned long failsafe_address) { struct compat_callback_register event =3D { .type =3D CALLBACKTYPE_event, @@ -349,7 +348,7 @@ long compat_set_callbacks(unsigned long event_selector, =20 #endif /* CONFIG_PV32 */ =20 -long do_set_trap_table(XEN_GUEST_HANDLE_PARAM(const_trap_info_t) traps) +long cf_check do_set_trap_table(XEN_GUEST_HANDLE_PARAM(const_trap_info_t) = traps) { struct trap_info cur; struct vcpu *curr =3D current; @@ -395,7 +394,7 @@ long do_set_trap_table(XEN_GUEST_HANDLE_PARAM(const_tra= p_info_t) traps) } =20 #ifdef CONFIG_PV32 -int compat_set_trap_table(XEN_GUEST_HANDLE(trap_info_compat_t) traps) +int cf_check compat_set_trap_table(XEN_GUEST_HANDLE(trap_info_compat_t) tr= aps) { struct vcpu *curr =3D current; struct compat_trap_info cur; @@ -438,7 +437,7 @@ int compat_set_trap_table(XEN_GUEST_HANDLE(trap_info_co= mpat_t) traps) } #endif =20 -long do_nmi_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) +long cf_check do_nmi_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { struct xennmi_callback cb; long rc =3D 0; @@ -464,7 +463,7 @@ long do_nmi_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM= (void) arg) } =20 #ifdef CONFIG_PV32 -int compat_nmi_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) +int cf_check compat_nmi_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) = arg) { struct compat_nmi_callback cb; int rc =3D 0; diff --git a/xen/arch/x86/pv/descriptor-tables.c b/xen/arch/x86/pv/descript= or-tables.c index 5e847044009b..653a61d0b518 100644 --- a/xen/arch/x86/pv/descriptor-tables.c +++ b/xen/arch/x86/pv/descriptor-tables.c @@ -124,8 +124,8 @@ int pv_set_gdt(struct vcpu *v, const unsigned long fram= es[], return -EINVAL; } =20 -long do_set_gdt(XEN_GUEST_HANDLE_PARAM(xen_ulong_t) frame_list, - unsigned int entries) +long cf_check do_set_gdt( + XEN_GUEST_HANDLE_PARAM(xen_ulong_t) frame_list, unsigned int entries) { unsigned int nr_frames =3D DIV_ROUND_UP(entries, 512); unsigned long frames[16]; @@ -151,8 +151,8 @@ long do_set_gdt(XEN_GUEST_HANDLE_PARAM(xen_ulong_t) fra= me_list, =20 #ifdef CONFIG_PV32 =20 -int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_list, - unsigned int entries) +int cf_check compat_set_gdt( + XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries) { struct vcpu *curr =3D current; unsigned int i, nr_frames =3D DIV_ROUND_UP(entries, 512); @@ -187,8 +187,8 @@ int compat_set_gdt(XEN_GUEST_HANDLE_PARAM(uint) frame_l= ist, return ret; } =20 -int compat_update_descriptor(uint32_t pa_lo, uint32_t pa_hi, - uint32_t desc_lo, uint32_t desc_hi) +int cf_check compat_update_descriptor( + uint32_t pa_lo, uint32_t pa_hi, uint32_t desc_lo, uint32_t desc_hi) { seg_desc_t d; =20 @@ -299,7 +299,7 @@ int validate_segdesc_page(struct page_info *page) return i =3D=3D 512 ? 0 : -EINVAL; } =20 -long do_update_descriptor(uint64_t gaddr, seg_desc_t d) +long cf_check do_update_descriptor(uint64_t gaddr, seg_desc_t d) { struct domain *currd =3D current->domain; gfn_t gfn =3D gaddr_to_gfn(gaddr); diff --git a/xen/arch/x86/pv/iret.c b/xen/arch/x86/pv/iret.c index 29a2f7cc452b..dd2965d8f08d 100644 --- a/xen/arch/x86/pv/iret.c +++ b/xen/arch/x86/pv/iret.c @@ -48,7 +48,7 @@ static void async_exception_cleanup(struct vcpu *curr) curr->arch.async_exception_state(trap).old_mask; } =20 -unsigned long do_iret(void) +unsigned long cf_check do_iret(void) { struct cpu_user_regs *regs =3D guest_cpu_user_regs(); struct iret_context iret_saved; @@ -105,7 +105,7 @@ unsigned long do_iret(void) } =20 #ifdef CONFIG_PV32 -unsigned int compat_iret(void) +unsigned int cf_check compat_iret(void) { struct cpu_user_regs *regs =3D guest_cpu_user_regs(); struct vcpu *v =3D current; diff --git a/xen/arch/x86/pv/misc-hypercalls.c b/xen/arch/x86/pv/misc-hyper= calls.c index 5dade2472687..5649aaab4436 100644 --- a/xen/arch/x86/pv/misc-hypercalls.c +++ b/xen/arch/x86/pv/misc-hypercalls.c @@ -23,12 +23,12 @@ =20 #include =20 -long do_set_debugreg(int reg, unsigned long value) +long cf_check do_set_debugreg(int reg, unsigned long value) { return set_debugreg(current, reg, value); } =20 -unsigned long do_get_debugreg(int reg) +unsigned long cf_check do_get_debugreg(int reg) { unsigned long val; int res =3D x86emul_read_dr(reg, &val, NULL); @@ -36,7 +36,7 @@ unsigned long do_get_debugreg(int reg) return res =3D=3D X86EMUL_OKAY ? val : -ENODEV; } =20 -long do_fpu_taskswitch(int set) +long cf_check do_fpu_taskswitch(int set) { struct vcpu *v =3D current; =20 @@ -171,7 +171,7 @@ long set_debugreg(struct vcpu *v, unsigned int reg, uns= igned long value) return 0; } =20 -long do_stack_switch(unsigned long ss, unsigned long esp) +long cf_check do_stack_switch(unsigned long ss, unsigned long esp) { fixup_guest_stack_selector(current->domain, ss); current->arch.pv.kernel_ss =3D ss; @@ -180,7 +180,7 @@ long do_stack_switch(unsigned long ss, unsigned long es= p) return 0; } =20 -long do_set_segment_base(unsigned int which, unsigned long base) +long cf_check do_set_segment_base(unsigned int which, unsigned long base) { struct vcpu *v =3D current; long ret =3D 0; diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c index 7e891fe2f7a4..4c710ad8913f 100644 --- a/xen/arch/x86/pv/shim.c +++ b/xen/arch/x86/pv/shim.c @@ -824,8 +824,8 @@ long pv_shim_grant_table_op(unsigned int cmd, =20 #ifndef CONFIG_GRANT_TABLE /* Thin wrapper(s) needed. */ -long do_grant_table_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, - unsigned int count) +long cf_check do_grant_table_op( + unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, unsigned int count) { if ( !pv_shim ) return -ENOSYS; @@ -834,8 +834,8 @@ long do_grant_table_op(unsigned int cmd, XEN_GUEST_HAND= LE_PARAM(void) uop, } =20 #ifdef CONFIG_PV32 -int compat_grant_table_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) u= op, - unsigned int count) +int cf_check compat_grant_table_op( + unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, unsigned int count) { if ( !pv_shim ) return -ENOSYS; diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/m= m.c index 215e96aba032..b3da8fafbb0c 100644 --- a/xen/arch/x86/x86_64/compat/mm.c +++ b/xen/arch/x86/x86_64/compat/mm.c @@ -176,10 +176,9 @@ int compat_arch_memory_op(unsigned long cmd, XEN_GUEST= _HANDLE_PARAM(void) arg) #ifdef CONFIG_PV DEFINE_XEN_GUEST_HANDLE(mmuext_op_compat_t); =20 -int compat_mmuext_op(XEN_GUEST_HANDLE_PARAM(void) arg, - unsigned int count, - XEN_GUEST_HANDLE_PARAM(uint) pdone, - unsigned int foreigndom) +int cf_check compat_mmuext_op( + XEN_GUEST_HANDLE_PARAM(void) arg, unsigned int count, + XEN_GUEST_HANDLE_PARAM(uint) pdone, unsigned int foreigndom) { unsigned int i, preempt_mask; int rc =3D 0; diff --git a/xen/common/argo.c b/xen/common/argo.c index eaea7ba8885a..1448faf65731 100644 --- a/xen/common/argo.c +++ b/xen/common/argo.c @@ -2069,7 +2069,7 @@ sendv(struct domain *src_d, xen_argo_addr_t *src_addr, return ( ret < 0 ) ? ret : len; } =20 -long +long cf_check do_argo_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg1, XEN_GUEST_HANDLE_PARAM(void) arg2, unsigned long raw_arg3, unsigned long raw_arg4) @@ -2207,7 +2207,7 @@ do_argo_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(v= oid) arg1, } =20 #ifdef CONFIG_COMPAT -long +long cf_check compat_argo_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg1, XEN_GUEST_HANDLE_PARAM(void) arg2, unsigned long arg3, unsigned long arg4) diff --git a/xen/common/compat/domain.c b/xen/common/compat/domain.c index 98b8c15cea7f..afae27eeba02 100644 --- a/xen/common/compat/domain.c +++ b/xen/common/compat/domain.c @@ -38,7 +38,8 @@ CHECK_vcpu_hvm_context; =20 #endif =20 -int compat_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(vo= id) arg) +int cf_check compat_vcpu_op( + int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg) { struct domain *d =3D current->domain; struct vcpu *v; diff --git a/xen/common/compat/grant_table.c b/xen/common/compat/grant_tabl= e.c index ff1d678f01c7..c6199e89188d 100644 --- a/xen/common/compat/grant_table.c +++ b/xen/common/compat/grant_table.c @@ -55,9 +55,8 @@ CHECK_gnttab_swap_grant_ref; CHECK_gnttab_cache_flush; #undef xen_gnttab_cache_flush =20 -int compat_grant_table_op(unsigned int cmd, - XEN_GUEST_HANDLE_PARAM(void) cmp_uop, - unsigned int count) +int cf_check compat_grant_table_op( + unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) cmp_uop, unsigned int c= ount) { int rc =3D 0; unsigned int i, cmd_op; diff --git a/xen/common/compat/kernel.c b/xen/common/compat/kernel.c index 804b919bdc72..8e8c413bf1d0 100644 --- a/xen/common/compat/kernel.c +++ b/xen/common/compat/kernel.c @@ -37,7 +37,7 @@ CHECK_TYPE(capabilities_info); =20 CHECK_TYPE(domain_handle); =20 -#define DO(fn) int compat_##fn +#define DO(fn) int cf_check compat_##fn #define COMPAT =20 #include "../kernel.c" diff --git a/xen/common/compat/memory.c b/xen/common/compat/memory.c index c43fa97cf15f..ec8ba54bb66e 100644 --- a/xen/common/compat/memory.c +++ b/xen/common/compat/memory.c @@ -53,7 +53,8 @@ static int get_reserved_device_memory(xen_pfn_t start, xe= n_ulong_t nr, } #endif =20 -int compat_memory_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) compat) +int cf_check compat_memory_op( + unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) compat) { struct vcpu *curr =3D current; struct domain *currd =3D curr->domain; diff --git a/xen/common/dm.c b/xen/common/dm.c index 2d1d98ca583e..fcb3a1aa0557 100644 --- a/xen/common/dm.c +++ b/xen/common/dm.c @@ -19,9 +19,9 @@ #include #include =20 -long do_dm_op(domid_t domid, - unsigned int nr_bufs, - XEN_GUEST_HANDLE_PARAM(xen_dm_op_buf_t) bufs) +long cf_check do_dm_op( + domid_t domid, unsigned int nr_bufs, + XEN_GUEST_HANDLE_PARAM(xen_dm_op_buf_t) bufs) { struct dmop_args args; int rc; diff --git a/xen/common/domain.c b/xen/common/domain.c index a53dd114d5ba..03debb2ea161 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1612,7 +1612,8 @@ int default_initialise_vcpu(struct vcpu *v, XEN_GUEST= _HANDLE_PARAM(void) arg) return rc; } =20 -long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void)= arg) +long cf_check do_vcpu_op( + int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg) { struct domain *d =3D current->domain; struct vcpu *v; @@ -1799,7 +1800,7 @@ long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUE= ST_HANDLE_PARAM(void) arg) } =20 #ifdef arch_vm_assist_valid_mask -long do_vm_assist(unsigned int cmd, unsigned int type) +long cf_check do_vm_assist(unsigned int cmd, unsigned int type) { struct domain *currd =3D current->domain; const unsigned long valid =3D arch_vm_assist_valid_mask(currd); diff --git a/xen/common/domctl.c b/xen/common/domctl.c index 271862ae587f..b50b5ec0f477 100644 --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -274,7 +274,7 @@ static struct vnuma_info *vnuma_init(const struct xen_d= omctl_vnuma *uinfo, return ERR_PTR(ret); } =20 -long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) +long cf_check do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) { long ret =3D 0; bool_t copyback =3D 0; diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index b38f49e0a616..a4e78282e059 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -1189,7 +1189,7 @@ static int evtchn_set_priority(const struct evtchn_se= t_priority *set_priority) return ret; } =20 -long do_event_channel_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) +long cf_check do_event_channel_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) ar= g) { int rc; =20 diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 7dfbee2f370f..c92dc1d6fd78 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -3540,7 +3540,7 @@ gnttab_cache_flush(XEN_GUEST_HANDLE_PARAM(gnttab_cach= e_flush_t) uop, return 0; } =20 -long +long cf_check do_grant_table_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, unsigned int count) { diff --git a/xen/common/hypfs.c b/xen/common/hypfs.c index e71f7df47958..1526bcc52810 100644 --- a/xen/common/hypfs.c +++ b/xen/common/hypfs.c @@ -671,9 +671,9 @@ static int hypfs_write(struct hypfs_entry *entry, return entry->funcs->write(l, uaddr, ulen); } =20 -long do_hypfs_op(unsigned int cmd, - XEN_GUEST_HANDLE_PARAM(const_char) arg1, unsigned long ar= g2, - XEN_GUEST_HANDLE_PARAM(void) arg3, unsigned long arg4) +long cf_check do_hypfs_op( + unsigned int cmd, XEN_GUEST_HANDLE_PARAM(const_char) arg1, + unsigned long arg2, XEN_GUEST_HANDLE_PARAM(void) arg3, unsigned long a= rg4) { int ret; struct hypfs_entry *entry; diff --git a/xen/common/kernel.c b/xen/common/kernel.c index e119e5401f9d..752c2e0dae44 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -451,7 +451,7 @@ static int __init param_init(void) __initcall(param_init); #endif =20 -# define DO(fn) long do_##fn +# define DO(fn) long cf_check do_##fn =20 #endif =20 diff --git a/xen/common/kexec.c b/xen/common/kexec.c index c63db618a707..8471590aeea2 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -1265,13 +1265,13 @@ static int do_kexec_op_internal(unsigned long op, return ret; } =20 -long do_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg) +long cf_check do_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) u= arg) { return do_kexec_op_internal(op, uarg, 0); } =20 #ifdef CONFIG_COMPAT -int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg) +int cf_check compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void= ) uarg) { return do_kexec_op_internal(op, uarg, 1); } diff --git a/xen/common/memory.c b/xen/common/memory.c index 30d255da3533..5a0462f97013 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -1349,7 +1349,7 @@ static int acquire_resource( return rc; } =20 -long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg) +long cf_check do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void)= arg) { struct domain *d, *curr_d =3D current->domain; long rc; diff --git a/xen/common/multicall.c b/xen/common/multicall.c index 5a199ebf8f85..589b54f49d6a 100644 --- a/xen/common/multicall.c +++ b/xen/common/multicall.c @@ -32,7 +32,7 @@ static void trace_multicall_call(multicall_entry_t *call) __trace_multicall_call(call); } =20 -ret_t +ret_t cf_check do_multicall( XEN_GUEST_HANDLE_PARAM(multicall_entry_t) call_list, uint32_t nr_calls) { diff --git a/xen/common/sched/compat.c b/xen/common/sched/compat.c index 040b4caca2c4..66ba0fe88f2e 100644 --- a/xen/common/sched/compat.c +++ b/xen/common/sched/compat.c @@ -39,7 +39,7 @@ static int compat_poll(struct compat_sched_poll *compat) =20 #include "core.c" =20 -int compat_set_timer_op(u32 lo, s32 hi) +int cf_check compat_set_timer_op(u32 lo, s32 hi) { return do_set_timer_op(((s64)hi << 32) | lo); } diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 8f4b1ca10d1c..0f527024ba2e 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -1862,7 +1862,7 @@ typedef long ret_t; =20 #endif /* !COMPAT */ =20 -ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) +ret_t cf_check do_sched_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { ret_t ret =3D 0; =20 @@ -1999,7 +1999,7 @@ ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE_PARAM(voi= d) arg) #ifndef COMPAT =20 /* Per-vcpu oneshot-timer hypercall. */ -long do_set_timer_op(s_time_t timeout) +long cf_check do_set_timer_op(s_time_t timeout) { struct vcpu *v =3D current; s_time_t offset =3D timeout - NOW(); diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c index 1ad3c29351db..fc4a0b31d6f0 100644 --- a/xen/common/sysctl.c +++ b/xen/common/sysctl.c @@ -29,7 +29,7 @@ #include #include =20 -long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl) +long cf_check do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl) { long ret =3D 0; int copyback =3D -1; diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c index 1926a92fe481..af617f1d0b83 100644 --- a/xen/common/xenoprof.c +++ b/xen/common/xenoprof.c @@ -721,7 +721,7 @@ static int xenoprof_op_get_buffer(XEN_GUEST_HANDLE_PARA= M(void) arg) || (op =3D=3D XENOPROF_disable_virq) \ || (op =3D=3D XENOPROF_get_buffer)) =20 -ret_t do_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg) +ret_t cf_check do_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg) { int ret =3D 0; =20 diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 7d0a603d0311..a043e9521afd 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -675,8 +675,8 @@ static long guest_console_write(XEN_GUEST_HANDLE_PARAM(= char) buffer, return 0; } =20 -long do_console_io(unsigned int cmd, unsigned int count, - XEN_GUEST_HANDLE_PARAM(char) buffer) +long cf_check do_console_io( + unsigned int cmd, unsigned int count, XEN_GUEST_HANDLE_PARAM(char) buf= fer) { long rc; unsigned int idx, len; diff --git a/xen/include/asm-x86/hypercall.h b/xen/include/asm-x86/hypercal= l.h index 9caca272eff7..5356869a5d0c 100644 --- a/xen/include/asm-x86/hypercall.h +++ b/xen/include/asm-x86/hypercall.h @@ -38,97 +38,97 @@ void pv_ring3_init_hypercall_page(void *ptr); */ #define MMU_UPDATE_PREEMPTED (~(~0U>>1)) =20 -extern long +extern long cf_check do_event_channel_op_compat( XEN_GUEST_HANDLE_PARAM(evtchn_op_t) uop); =20 /* Legacy hypercall (as of 0x00030202). */ -extern long do_physdev_op_compat( +extern long cf_check do_physdev_op_compat( XEN_GUEST_HANDLE(physdev_op_t) uop); =20 /* Legacy hypercall (as of 0x00030101). */ -extern long do_sched_op_compat( +extern long cf_check do_sched_op_compat( int cmd, unsigned long arg); =20 -extern long +extern long cf_check do_set_trap_table( XEN_GUEST_HANDLE_PARAM(const_trap_info_t) traps); =20 -extern long +extern long cf_check do_mmu_update( XEN_GUEST_HANDLE_PARAM(mmu_update_t) ureqs, unsigned int count, XEN_GUEST_HANDLE_PARAM(uint) pdone, unsigned int foreigndom); =20 -extern long +extern long cf_check do_set_gdt( XEN_GUEST_HANDLE_PARAM(xen_ulong_t) frame_list, unsigned int entries); =20 -extern long +extern long cf_check do_stack_switch( unsigned long ss, unsigned long esp); =20 -extern long +extern long cf_check do_fpu_taskswitch( int set); =20 -extern long +extern long cf_check do_set_debugreg( int reg, unsigned long value); =20 -extern unsigned long +extern unsigned long cf_check do_get_debugreg( int reg); =20 -extern long +extern long cf_check do_update_descriptor( uint64_t gaddr, seg_desc_t desc); =20 -extern long +extern long cf_check do_mca(XEN_GUEST_HANDLE_PARAM(xen_mc_t) u_xen_mc); =20 -extern long +extern long cf_check do_update_va_mapping( unsigned long va, u64 val64, unsigned long flags); =20 -extern long +extern long cf_check do_physdev_op( int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_update_va_mapping_otherdomain( unsigned long va, u64 val64, unsigned long flags, domid_t domid); =20 -extern long +extern long cf_check do_mmuext_op( XEN_GUEST_HANDLE_PARAM(mmuext_op_t) uops, unsigned int count, XEN_GUEST_HANDLE_PARAM(uint) pdone, unsigned int foreigndom); =20 -extern long do_callback_op( +extern long cf_check do_callback_op( int cmd, XEN_GUEST_HANDLE_PARAM(const_void) arg); =20 -extern unsigned long +extern unsigned long cf_check do_iret( void); =20 -extern long +extern long cf_check do_set_callbacks( unsigned long event_address, unsigned long failsafe_address, unsigned long syscall_address); =20 -extern long +extern long cf_check do_set_segment_base( unsigned int which, unsigned long base); @@ -138,7 +138,7 @@ do_set_segment_base( #include #include =20 -extern int +extern int cf_check compat_physdev_op( int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); @@ -147,7 +147,7 @@ extern int arch_compat_vcpu_op( int cmd, struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern int compat_mmuext_op( +extern int cf_check compat_mmuext_op( XEN_GUEST_HANDLE_PARAM(void) arg, unsigned int count, XEN_GUEST_HANDLE_PARAM(uint) pdone, @@ -155,37 +155,40 @@ extern int compat_mmuext_op( =20 typedef struct compat_platform_op compat_platform_op_t; DEFINE_XEN_GUEST_HANDLE(compat_platform_op_t); -extern int compat_platform_op( +extern int cf_check compat_platform_op( XEN_GUEST_HANDLE_PARAM(compat_platform_op_t) u_xenpf_op); =20 -extern long compat_callback_op( +extern long cf_check compat_callback_op( int cmd, XEN_GUEST_HANDLE(void) arg); =20 -extern int compat_update_va_mapping( +extern int cf_check compat_update_va_mapping( unsigned int va, u32 lo, u32 hi, unsigned int flags); =20 -extern int compat_update_va_mapping_otherdomain( +extern int cf_check compat_update_va_mapping_otherdomain( unsigned int va, u32 lo, u32 hi, unsigned int flags, domid_t domid); =20 DEFINE_XEN_GUEST_HANDLE(trap_info_compat_t); -extern int compat_set_trap_table(XEN_GUEST_HANDLE(trap_info_compat_t) trap= s); +extern int cf_check compat_set_trap_table( + XEN_GUEST_HANDLE(trap_info_compat_t) traps); =20 -extern int compat_set_gdt( +extern int cf_check compat_set_gdt( XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries); =20 -extern int compat_update_descriptor( +extern int cf_check compat_update_descriptor( u32 pa_lo, u32 pa_hi, u32 desc_lo, u32 desc_hi); =20 -extern unsigned int compat_iret(void); +extern unsigned int cf_check compat_iret(void); =20 -extern int compat_nmi_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) ar= g); +extern int cf_check compat_nmi_op( + unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long compat_set_callbacks( +extern long cf_check compat_set_callbacks( unsigned long event_selector, unsigned long event_address, unsigned long failsafe_selector, unsigned long failsafe_address); =20 DEFINE_XEN_GUEST_HANDLE(physdev_op_compat_t); -extern int compat_physdev_op_compat(XEN_GUEST_HANDLE(physdev_op_compat_t) = uop); +extern int cf_check compat_physdev_op_compat( + XEN_GUEST_HANDLE(physdev_op_compat_t) uop); =20 #endif /* CONFIG_COMPAT */ =20 diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h index 308f1115dde9..1d5b51620839 100644 --- a/xen/include/asm-x86/paging.h +++ b/xen/include/asm-x86/paging.h @@ -235,7 +235,7 @@ int paging_domctl(struct domain *d, struct xen_domctl_s= hadow_op *sc, bool_t resuming); =20 /* Helper hypercall for dealing with continuations. */ -long paging_domctl_continuation(XEN_GUEST_HANDLE_PARAM(xen_domctl_t)); +long cf_check paging_domctl_continuation(XEN_GUEST_HANDLE_PARAM(xen_domctl= _t)); =20 /* Call when destroying a vcpu/domain */ void paging_vcpu_teardown(struct vcpu *v); diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h index 07b10ec2303b..4dfd64cf716c 100644 --- a/xen/include/xen/hypercall.h +++ b/xen/include/xen/hypercall.h @@ -18,12 +18,12 @@ #include #include =20 -extern long +extern long cf_check do_sched_op( int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_domctl( XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl); =20 @@ -32,7 +32,7 @@ arch_do_domctl( struct xen_domctl *domctl, struct domain *d, XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl); =20 -extern long +extern long cf_check do_sysctl( XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl); =20 @@ -41,7 +41,7 @@ arch_do_sysctl( struct xen_sysctl *sysctl, XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl); =20 -extern long +extern long cf_check do_platform_op( XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op); =20 @@ -62,47 +62,47 @@ pci_physdev_op( #define MEMOP_EXTENT_SHIFT 6 /* cmd[:6] =3D=3D start_extent */ #define MEMOP_CMD_MASK ((1 << MEMOP_EXTENT_SHIFT) - 1) =20 -extern long +extern long cf_check do_memory_op( unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_multicall( XEN_GUEST_HANDLE_PARAM(multicall_entry_t) call_list, unsigned int nr_calls); =20 -extern long +extern long cf_check do_set_timer_op( s_time_t timeout); =20 -extern long +extern long cf_check do_event_channel_op( int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_xen_version( int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_console_io( unsigned int cmd, unsigned int count, XEN_GUEST_HANDLE_PARAM(char) buffer); =20 -extern long +extern long cf_check do_grant_table_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, unsigned int count); =20 -extern long +extern long cf_check do_vm_assist( unsigned int cmd, unsigned int type); =20 -extern long +extern long cf_check do_vcpu_op( int cmd, unsigned int vcpuid, @@ -114,27 +114,27 @@ arch_do_vcpu_op(int cmd, struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_nmi_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_hvm_op( unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_kexec_op( unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg); =20 -extern long +extern long cf_check do_xsm_op( XEN_GUEST_HANDLE_PARAM(void) u_xsm_op); =20 #ifdef CONFIG_ARGO -extern long do_argo_op( +extern long cf_check do_argo_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg1, XEN_GUEST_HANDLE_PARAM(void) arg2, @@ -142,20 +142,20 @@ extern long do_argo_op( unsigned long arg4); #endif =20 -extern long +extern long cf_check do_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern long +extern long cf_check do_xenpmu_op(unsigned int op, XEN_GUEST_HANDLE_PARAM(xen_pmu_params_t) arg= ); =20 -extern long +extern long cf_check do_dm_op( domid_t domid, unsigned int nr_bufs, XEN_GUEST_HANDLE_PARAM(xen_dm_op_buf_t) bufs); =20 #ifdef CONFIG_HYPFS -extern long +extern long cf_check do_hypfs_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(const_char) arg1, @@ -166,53 +166,54 @@ do_hypfs_op( =20 #ifdef CONFIG_COMPAT =20 -extern int +extern int cf_check compat_memory_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern int +extern int cf_check compat_grant_table_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, unsigned int count); =20 -extern int +extern int cf_check compat_vcpu_op( int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern int +extern int cf_check compat_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern int +extern int cf_check compat_xen_version( int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern int +extern int cf_check compat_sched_op( int cmd, XEN_GUEST_HANDLE_PARAM(void) arg); =20 -extern int +extern int cf_check compat_set_timer_op( u32 lo, s32 hi); =20 -extern int compat_xsm_op( +extern int cf_check compat_xsm_op( XEN_GUEST_HANDLE_PARAM(void) op); =20 -extern int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) = uarg); +extern int cf_check compat_kexec_op( + unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg); =20 DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t); -extern int compat_multicall( +extern int cf_check compat_multicall( XEN_GUEST_HANDLE_PARAM(multicall_entry_compat_t) call_list, uint32_t nr_calls); =20 #ifdef CONFIG_ARGO -extern long compat_argo_op( +extern long cf_check compat_argo_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg1, XEN_GUEST_HANDLE_PARAM(void) arg2, @@ -220,7 +221,7 @@ extern long compat_argo_op( unsigned long arg4); #endif =20 -extern int +extern int cf_check compat_dm_op( domid_t domid, unsigned int nr_bufs, diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c index 21fffbcb41d3..74d0ef89c12d 100644 --- a/xen/xsm/xsm_core.c +++ b/xen/xsm/xsm_core.c @@ -219,13 +219,13 @@ bool __init has_xsm_magic(paddr_t start) =20 #endif =20 -long do_xsm_op(XEN_GUEST_HANDLE_PARAM(void) op) +long cf_check do_xsm_op(XEN_GUEST_HANDLE_PARAM(void) op) { return xsm_do_xsm_op(op); } =20 #ifdef CONFIG_COMPAT -int compat_xsm_op(XEN_GUEST_HANDLE_PARAM(void) op) +int cf_check compat_xsm_op(XEN_GUEST_HANDLE_PARAM(void) op) { return xsm_do_compat_op(op); } --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930147; cv=none; d=zohomail.com; s=zohoarc; b=nz/48fCR3hFckdo39IhgYVgA4w+H5Xd73rOOBoYTigX21CRcN64utArNG1Fh8NuWbGKifhgfd8ud1mojZdMktCxvS8nInydUmVq4rZe7RchH1zsmKEuwrtRP3673DeNRZXIRy1K7eRMHs+0oma9o1SAWFh+LWIhBlY/QEEe13LQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930147; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kLINWcZQFEsFwWCc9EMqSKU5DecMC7UMBrMgI7ZNX/s=; b=CozBxSD4LTnMXATs8nEKiTHOOwsX1WL7M1j1/S/wwcVvAkjRIJndL0B5t3Fb9UuZk4dkMkTxlrQgPxGJ3YkbfMxDI1JT5y8IB3u02LJIcrvYasu5YOYcxahVxNm7AYdFHf36XA8FmG505FC/Cfdms+ksYy2tLBMZ2JoXgR4J710= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637930147364871.8911113094457; Fri, 26 Nov 2021 04:35:47 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232671.403489 (Exim 4.92) (envelope-from ) id 1mqaRW-0002gC-Sh; Fri, 26 Nov 2021 12:35:06 +0000 Received: by outflank-mailman (output) from mailman id 232671.403489; Fri, 26 Nov 2021 12:35:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRW-0002cX-Hj; Fri, 26 Nov 2021 12:35:06 +0000 Received: by outflank-mailman (input) for mailman id 232671; Fri, 26 Nov 2021 12:35:04 +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 1mqaRU-0001F5-3e for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:35:04 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 45cd3548-4eb5-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 13:35:01 +0100 (CET) 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: 45cd3548-4eb5-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930101; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MRvQuR5PkwmyOOXBQLS3qS6dnN5OluVhP58XPt+R230=; b=SGVlUNARuo/dPMWI+G9v1KX3BkGcyQPSefAo4bhCBVPD9aNKaW7cpjs0 hrkEPHGjc3wluJMGCjx136PltSPPw+keAIASF3hBnrprM3jyKujjXvgDS 17Z1iDKEa7x1u7VEUxzXIKK7nIXkPG9W9s+MdHvoPEOCGYdYwvUP3X2pg I=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: VE3q6VryEGH8aQ8yMt4cbipRP0cNMImm9YPQVoWboiN6RzYrcabAz8nM4AX0kXj6PC6F/e1ngE tf2RVP8cMz+YNyIdHp6gufUHoAHbPs227+piE6fq28Au4rY/pd38PQXuhILKC9Zj2GIArNHMDi ZZA6fidqeQXlJwqRwJdIxhQa+rM+bjpOoaEQ0SObXna8VvnzitVyjNhh9as8EEiNl5PxPmQclB S43toWCZkODFyfsChP1EI6iEVoPqV5AETv9VvNGkHcfniIInKl2l8DtvSb8sFHYNyWotqaLACi KeYhHkOf8SHeGdCMx4w4VH2F X-SBRS: 5.1 X-MesageID: 58633367 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:ELX1nKh0W3VTQh66nrIfkZlvX161lRcKZh0ujC45NGQN5FlHY01je htvW2qGPfiOYzCgeIh0bt7ko0pUsMLTy4BhTwBopClnHyIb9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0F0/NtTo5w7Rg29cy34Dga++wk YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx /1NqLixTiF3fZTswvs0cicGCg9AfpRvreqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr KJCbmpXN1ba2rzwkOnTpupE36zPKOHCOo8Ft24m5jbeFfs8GrjIQrnQ5M8e1zA17ixLNauOO ZFCMmQwBPjGSzJxIU4wF8skp+6TjyPmVAxGl32Ku7VitgA/yyQuieOwYbI5YOeiWsF9jkue4 GXc8AzRAAweNdGZ4SqI9DSrnOCntTjgRIsYGbm89/hrqF6e3GoeDFsRT1TTiem0jAuyVsxSL 2QQ+zEytu4i+UqzVN7/Uhak5nmesXY0efBdDuk74wGl0bfP7kCSAW1sc9JaQIV47olsH2Vsj wLX2YOybdByjFGLYXKA0raTi23xAAhPMkYjW3EdYzVG2vC29enfkSnzZtpkFae0iPj8Fjfx3 y2GoUACulkDsSIY//7lpA6a2lpAsrCMF1dovVuPAgpJ+ysgPNb9D7FE/2Q3+hqpwGyxalCa9 EYJlMGFhAzlJcHczXfdKAnh8VzA2hpkDNE+qQIwd3XC3270k5JGQWy2yGolTKuOGpxZEQIFm GeJ5WtsCGZ7ZRNGl5NfbYOrENgNxqP9D9njXf28RoMQOcchKlLYrX0wORX4M4XRfK4EyvpX1 XCzK5vEMJrnIf4/kGreqxk1jdfHORzSNUuMHMumnnxLIJKVZWKPSKdtDbd9RrtR0U9wmy2Mq 4w3H5LTk313CbSiCgGKod97BQ1bdhATWMGpw/G7g8bee2KK7kl6UKSPqV7gEqQ495loehDgo ivgBxQGkQWn3hUq62yiMxheVV8mZr4nxVpTAMDmFQzAN6ELbdn94aEBWYEweLV7puVvweQtF 6sOetmaA+QJQTPComxPYZ74pY1kVRKqmQPRYHb1PGlhJ8ZtF17T59vpXgrz7y1SXCC5gtQz/ u+73QTBTJtdGwk7VJTKaOiixk+atGQGnL4gRFPBJ9ReIR2+8IVjJyHroOUwJsUAdUfKyjeAj l7EChYEv+jd5YQy9YCR16yDqo6oFcp4H1ZbQDaHverna3GC8zP6k4FaUeuOcTTMb0/O+f2vN bdP0vXxEPwbh1IW4YByJKlmkPAl7Nz1qr4Ekgk9RCfXb06mA69LK2Wd2ZUdrbVEw7JUtFfkW k+L/dUGa7yFNNm8TQwULQshKO+CyesVin/Z6vFseBf24yp+/bymV0ROPkbT1HwBfeUtaI51k /08vMM26hCkjkt4O9mLuSlY6mCQIyFSSK4grJwbXNfmhwdDJouuunAA5vsaOK2yVug= IronPort-HdrOrdr: A9a23:oD45rKiXL1nAAjSnXh+wneUJyXBQXuAji2hC6mlwRA09TySZ// rOoB19726NtN9xYgBYpTnuAtjifZqxz/FICMwqTNOftWrdyQ2VxeNZnOnfKlTbckWUnIMw6U 4jSdkYNDSZNykAsS+Q2mmF+rgbruVviJrY4Nvj8w== X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="58633367" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 05/65] xen: Annotate fnptr targets from custom_param() Date: Fri, 26 Nov 2021 12:33:46 +0000 Message-ID: <20211126123446.32324-6-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930148101100001 The "watchdog_timeout" and "cpu_type" handlers were missing __init. The "numa", "acpi", "irq_vector_map" and "flask" handlers can skip forward declarations by altering the custom_param() position. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/acpi/cpu_idle.c | 2 +- xen/arch/x86/acpi/power.c | 2 +- xen/arch/x86/apic.c | 4 ++-- xen/arch/x86/cpu/mcheck/mce.c | 2 +- xen/arch/x86/cpu/microcode/core.c | 2 +- xen/arch/x86/cpu/vpmu.c | 2 +- xen/arch/x86/cpuid.c | 2 +- xen/arch/x86/dom0_build.c | 8 ++++---- xen/arch/x86/genapic/probe.c | 2 +- xen/arch/x86/hpet.c | 2 +- xen/arch/x86/hvm/viridian/viridian.c | 2 +- xen/arch/x86/hvm/vmx/vmcs.c | 8 ++++---- xen/arch/x86/io_apic.c | 2 +- xen/arch/x86/irq.c | 6 ++---- xen/arch/x86/mm.c | 2 +- xen/arch/x86/nmi.c | 4 ++-- xen/arch/x86/numa.c | 6 ++---- xen/arch/x86/oprofile/nmi_int.c | 2 +- xen/arch/x86/psr.c | 2 +- xen/arch/x86/pv/domain.c | 8 ++++---- xen/arch/x86/pv/shim.c | 2 +- xen/arch/x86/setup.c | 11 +++++------ xen/arch/x86/shutdown.c | 2 +- xen/arch/x86/spec_ctrl.c | 6 +++--- xen/arch/x86/time.c | 2 +- xen/arch/x86/tsx.c | 2 +- xen/arch/x86/x86_64/mmconfig-shared.c | 2 +- xen/common/argo.c | 2 +- xen/common/core_parking.c | 2 +- xen/common/debugtrace.c | 2 +- xen/common/domain.c | 2 +- xen/common/efi/boot.c | 2 +- xen/common/grant_table.c | 14 +++++++------- xen/common/kexec.c | 6 +++--- xen/common/memory.c | 2 +- xen/common/page_alloc.c | 2 +- xen/common/sched/cpupool.c | 2 +- xen/common/sched/credit2.c | 2 +- xen/drivers/acpi/tables.c | 2 +- xen/drivers/char/console.c | 18 +++++++++--------- xen/drivers/cpufreq/cpufreq.c | 2 +- xen/drivers/passthrough/amd/iommu_acpi.c | 6 +++--- xen/drivers/passthrough/iommu.c | 4 ++-- xen/drivers/passthrough/pci.c | 4 ++-- xen/drivers/passthrough/vtd/dmar.c | 2 +- xen/drivers/passthrough/vtd/quirks.c | 2 +- xen/drivers/video/vesa.c | 2 +- xen/xsm/flask/flask_op.c | 5 ++--- xen/xsm/xsm_core.c | 2 +- 49 files changed, 89 insertions(+), 95 deletions(-) diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index d788c8bffc84..5d73eb5917af 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -106,7 +106,7 @@ void (*__read_mostly pm_idle_save)(void); unsigned int max_cstate __read_mostly =3D UINT_MAX; unsigned int max_csubstate __read_mostly =3D UINT_MAX; =20 -static int __init parse_cstate(const char *s) +static int __init cf_check parse_cstate(const char *s) { max_cstate =3D simple_strtoul(s, &s, 0); if ( *s =3D=3D ',' ) diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c index 31a56f02d083..0f2c87c096c7 100644 --- a/xen/arch/x86/acpi/power.c +++ b/xen/arch/x86/acpi/power.c @@ -35,7 +35,7 @@ =20 uint32_t system_reset_counter =3D 1; =20 -static int __init parse_acpi_sleep(const char *s) +static int __init cf_check parse_acpi_sleep(const char *s) { const char *ss; unsigned int flag =3D 0; diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c index 55c103aaffbb..dd6cf1529f1e 100644 --- a/xen/arch/x86/apic.c +++ b/xen/arch/x86/apic.c @@ -775,7 +775,7 @@ int lapic_resume(void) * Original code written by Keir Fraser. */ =20 -static int __init lapic_disable(const char *str) +static int __init cf_check lapic_disable(const char *str) { enable_local_apic =3D -1; setup_clear_cpu_cap(X86_FEATURE_APIC); @@ -784,7 +784,7 @@ static int __init lapic_disable(const char *str) custom_param("nolapic", lapic_disable); boolean_param("lapic", enable_local_apic); =20 -static int __init apic_set_verbosity(const char *str) +static int __init cf_check apic_set_verbosity(const char *str) { if (strcmp("debug", str) =3D=3D 0) apic_verbosity =3D APIC_DEBUG; diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index eae08caa07cd..ea86d84481b2 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -63,7 +63,7 @@ struct mca_banks *mca_allbanks; #endif =20 int mce_verbosity; -static int __init mce_set_verbosity(const char *str) +static int __init cf_check mce_set_verbosity(const char *str) { if ( strcmp("verbose", str) =3D=3D 0 ) mce_verbosity =3D MCE_VERBOSE; diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode= /core.c index ac3ceb567c41..95d35ca0f3f7 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -111,7 +111,7 @@ void __init microcode_set_module(unsigned int idx) * optional. If the EFI has forced which of the multiboot payloads is to be * used, only nmi=3D is parsed. */ -static int __init parse_ucode(const char *s) +static int __init cf_check parse_ucode(const char *s) { const char *ss; int val, rc =3D 0; diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c index 4ada29670469..9875143cac0e 100644 --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -55,7 +55,7 @@ static unsigned vpmu_count; =20 static DEFINE_PER_CPU(struct vcpu *, last_vcpu); =20 -static int __init parse_vpmu_params(const char *s) +static int __init cf_check parse_vpmu_params(const char *s) { const char *ss; int rc =3D 0, val; diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c index 151944f65702..f33c6ed76872 100644 --- a/xen/arch/x86/cpuid.c +++ b/xen/arch/x86/cpuid.c @@ -26,7 +26,7 @@ static const uint32_t __initconst hvm_hap_def_featuremask= [] =3D INIT_HVM_HAP_DEF_FEATURES; static const uint32_t deep_features[] =3D INIT_DEEP_FEATURES; =20 -static int __init parse_xen_cpuid(const char *s) +static int __init cf_check parse_xen_cpuid(const char *s) { const char *ss; int val, rc =3D 0; diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c index 5a7441ed5b79..7c2ad03ac647 100644 --- a/xen/arch/x86/dom0_build.c +++ b/xen/arch/x86/dom0_build.c @@ -114,7 +114,7 @@ static int __init parse_amt(const char *s, const char *= *ps, struct memsize *sz) return 0; } =20 -static int __init parse_dom0_mem(const char *s) +static int __init cf_check parse_dom0_mem(const char *s) { int ret; =20 @@ -143,7 +143,7 @@ custom_param("dom0_mem", parse_dom0_mem); static unsigned int __initdata opt_dom0_max_vcpus_min =3D 1; static unsigned int __initdata opt_dom0_max_vcpus_max =3D UINT_MAX; =20 -static int __init parse_dom0_max_vcpus(const char *s) +static int __init cf_check parse_dom0_max_vcpus(const char *s) { if ( *s =3D=3D '-' ) /* -M */ opt_dom0_max_vcpus_max =3D simple_strtoul(s + 1, &s, 0); @@ -167,7 +167,7 @@ static __initdata unsigned int dom0_pxms[MAX_NUMNODES] = =3D { [0 ... MAX_NUMNODES - 1] =3D ~0 }; bool __initdata dom0_affinity_relaxed; =20 -static int __init parse_dom0_nodes(const char *s) +static int __init cf_check parse_dom0_nodes(const char *s) { const char *ss; int rc =3D 0; @@ -265,7 +265,7 @@ bool __initdata opt_dom0_pvh =3D !IS_ENABLED(CONFIG_PV); bool __initdata opt_dom0_verbose =3D IS_ENABLED(CONFIG_VERBOSE_DEBUG); bool __initdata opt_dom0_msr_relaxed; =20 -static int __init parse_dom0_param(const char *s) +static int __init cf_check parse_dom0_param(const char *s) { const char *ss; int rc =3D 0; diff --git a/xen/arch/x86/genapic/probe.c b/xen/arch/x86/genapic/probe.c index 66bc5ce072dc..ad57912f506b 100644 --- a/xen/arch/x86/genapic/probe.c +++ b/xen/arch/x86/genapic/probe.c @@ -43,7 +43,7 @@ void __init generic_bigsmp_probe(void) } } =20 -static int __init genapic_apic_force(const char *str) +static int __init cf_check genapic_apic_force(const char *str) { int i, rc =3D -EINVAL; =20 diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c index afe104dc93c2..7b009a930498 100644 --- a/xen/arch/x86/hpet.c +++ b/xen/arch/x86/hpet.c @@ -65,7 +65,7 @@ u8 __initdata hpet_flags; static bool __initdata force_hpet_broadcast; boolean_param("hpetbroadcast", force_hpet_broadcast); =20 -static int __init parse_hpet_param(const char *s) +static int __init cf_check parse_hpet_param(const char *s) { const char *ss; int val, rc =3D 0; diff --git a/xen/arch/x86/hvm/viridian/viridian.c b/xen/arch/x86/hvm/viridi= an/viridian.c index 9e1363207f80..ad32b09725d5 100644 --- a/xen/arch/x86/hvm/viridian/viridian.c +++ b/xen/arch/x86/hvm/viridian/viridian.c @@ -1207,7 +1207,7 @@ static int viridian_load_vcpu_ctxt(struct domain *d, HVM_REGISTER_SAVE_RESTORE(VIRIDIAN_VCPU, viridian_save_vcpu_ctxt, viridian_load_vcpu_ctxt, 1, HVMSR_PER_VCPU); =20 -static int __init parse_viridian_version(const char *arg) +static int __init cf_check parse_viridian_version(const char *arg) { const char *t; unsigned int n[3]; diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index f9f9bc18cdbc..3d1ca248ffde 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -71,7 +71,7 @@ static bool __read_mostly opt_ept_pml =3D true; static s8 __read_mostly opt_ept_ad =3D -1; int8_t __read_mostly opt_ept_exec_sp =3D -1; =20 -static int __init parse_ept_param(const char *s) +static int __init cf_check parse_ept_param(const char *s) { const char *ss; int val, rc =3D 0; @@ -107,16 +107,16 @@ static void update_ept_param(void) opt_ept_exec_sp); } =20 -static void __init init_ept_param(struct param_hypfs *par) +static void __init cf_check init_ept_param(struct param_hypfs *par) { update_ept_param(); custom_runtime_set_var(par, opt_ept_setting); } =20 -static int parse_ept_param_runtime(const char *s); +static int cf_check parse_ept_param_runtime(const char *s); custom_runtime_only_param("ept", parse_ept_param_runtime, init_ept_param); =20 -static int parse_ept_param_runtime(const char *s) +static int cf_check parse_ept_param_runtime(const char *s) { struct domain *d; int val; diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 1c49a0fe1478..4135a9c06052 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -1601,7 +1601,7 @@ static unsigned int startup_level_ioapic_irq(struct i= rq_desc *desc) return 0; /* don't check for pending */ } =20 -static int __init setup_ioapic_ack(const char *s) +static int __init cf_check setup_ioapic_ack(const char *s) { if ( !strcmp(s, "old") ) { diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 67cbf6b979dc..84b174d0f51f 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -28,8 +28,6 @@ #include #include =20 -static int parse_irq_vector_map_param(const char *s); - /* opt_noirqbalance: If true, software IRQ balancing/affinity is disabled.= */ bool __read_mostly opt_noirqbalance; boolean_param("noirqbalance", opt_noirqbalance); @@ -40,7 +38,6 @@ integer_param("nr_irqs", nr_irqs); =20 /* This default may be changed by the AMD IOMMU code */ int __read_mostly opt_irq_vector_map =3D OPT_IRQ_VECTOR_MAP_DEFAULT; -custom_param("irq_vector_map", parse_irq_vector_map_param); =20 /* Max number of guests IRQ could be shared with */ static unsigned char __read_mostly irq_max_guests; @@ -66,7 +63,7 @@ static struct timer irq_ratelimit_timer; static unsigned int __read_mostly irq_ratelimit_threshold =3D 10000; integer_param("irq_ratelimit", irq_ratelimit_threshold); =20 -static int __init parse_irq_vector_map_param(const char *s) +static int __init cf_check parse_irq_vector_map_param(const char *s) { const char *ss; int rc =3D 0; @@ -90,6 +87,7 @@ static int __init parse_irq_vector_map_param(const char *= s) =20 return rc; } +custom_param("irq_vector_map", parse_irq_vector_map_param); =20 /* Must be called when irq disabled */ void lock_vector_lock(void) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 25f44a161c65..35d000921795 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -189,7 +189,7 @@ static uint32_t base_disallow_mask; =20 static s8 __read_mostly opt_mmio_relax; =20 -static int __init parse_mmio_relax(const char *s) +static int __init cf_check parse_mmio_relax(const char *s) { if ( !*s ) opt_mmio_relax =3D 1; diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index ab94a96c4d03..1a225d499295 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -48,7 +48,7 @@ bool __initdata opt_watchdog; /* watchdog_force: If true, process unknown NMIs when running the watchdog= . */ bool watchdog_force; =20 -static int __init parse_watchdog(const char *s) +static int __init cf_check parse_watchdog(const char *s) { if ( !*s ) { @@ -78,7 +78,7 @@ custom_param("watchdog", parse_watchdog); /* opt_watchdog_timeout: Number of seconds to wait before panic. */ static unsigned int opt_watchdog_timeout =3D 5; =20 -static int parse_watchdog_timeout(const char *s) +static int __init cf_check parse_watchdog_timeout(const char *s) { const char *q; =20 diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c index ce79ee44cefe..6be5a0c93322 100644 --- a/xen/arch/x86/numa.c +++ b/xen/arch/x86/numa.c @@ -19,9 +19,6 @@ #include #include =20 -static int numa_setup(const char *s); -custom_param("numa", numa_setup); - #ifndef Dprintk #define Dprintk(x...) #endif @@ -294,7 +291,7 @@ void numa_set_node(int cpu, nodeid_t node) } =20 /* [numa=3Doff] */ -static __init int numa_setup(const char *opt) +static int __init cf_check numa_setup(const char *opt) { if ( !strncmp(opt,"off",3) ) numa_off =3D true; @@ -321,6 +318,7 @@ static __init int numa_setup(const char *opt) =20 return 0; }=20 +custom_param("numa", numa_setup); =20 /* * Setup early cpu_to_node. diff --git a/xen/arch/x86/oprofile/nmi_int.c b/xen/arch/x86/oprofile/nmi_in= t.c index a13bd82915ac..7842d95b95ea 100644 --- a/xen/arch/x86/oprofile/nmi_int.c +++ b/xen/arch/x86/oprofile/nmi_int.c @@ -340,7 +340,7 @@ static int __init p4_init(char ** cpu_type) =20 static int force_arch_perfmon; =20 -static int force_cpu_type(const char *str) +static int __init cf_check force_cpu_type(const char *str) { if (!strcmp(str, "arch_perfmon")) { force_arch_perfmon =3D 1; diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index d805b85dc60b..56916344cb1d 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -573,7 +573,7 @@ static bool __init parse_psr_bool(const char *s, const = char *delim, return false; } =20 -static int __init parse_psr_param(const char *s) +static int __init cf_check parse_psr_param(const char *s) { const char *ss, *val_delim; const char *q; diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c index 6ad533183bcd..125c4561a7ea 100644 --- a/xen/arch/x86/pv/domain.c +++ b/xen/arch/x86/pv/domain.c @@ -20,7 +20,7 @@ int8_t __read_mostly opt_pv32 =3D -1; #endif =20 -static __init int parse_pv(const char *s) +static int __init cf_check parse_pv(const char *s) { const char *ss; int val, rc =3D 0; @@ -63,16 +63,16 @@ static const char opt_pcid_2_string[][7] =3D { [PCID_NOXPTI] =3D "noxpti", }; =20 -static void __init opt_pcid_init(struct param_hypfs *par) +static void __init cf_check opt_pcid_init(struct param_hypfs *par) { custom_runtime_set_var(par, opt_pcid_2_string[opt_pcid]); } #endif =20 -static int parse_pcid(const char *s); +static int cf_check parse_pcid(const char *s); custom_runtime_param("pcid", parse_pcid, opt_pcid_init); =20 -static int parse_pcid(const char *s) +static int cf_check parse_pcid(const char *s) { int rc =3D 0; =20 diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c index 4c710ad8913f..ae4d8913faa1 100644 --- a/xen/arch/x86/pv/shim.c +++ b/xen/arch/x86/pv/shim.c @@ -73,7 +73,7 @@ static uint64_t __initdata shim_nrpages; static uint64_t __initdata shim_min_nrpages; static uint64_t __initdata shim_max_nrpages; =20 -static int __init parse_shim_mem(const char *s) +static int __init cf_check parse_shim_mem(const char *s) { do { if ( !strncmp(s, "min:", 4) ) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index da47cdea14a1..f35f3cb899ab 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -81,8 +81,6 @@ unsigned long __read_mostly cr4_pv32_mask; /* "acpi=3Dht": Limit ACPI just to boot-time to enable HT. */ /* "acpi=3Dnoirq": Disables ACPI interrupt routing. */ /* "acpi=3Dverbose": Enables more verbose ACPI boot time logging. */ -static int parse_acpi_param(const char *s); -custom_param("acpi", parse_acpi_param); =20 /* **** Linux config option: propagated to domain0. */ /* noapic: Disable IOAPIC setup. */ @@ -104,7 +102,7 @@ static bool __initdata opt_xen_shstk =3D true; #define opt_xen_shstk false #endif =20 -static int __init parse_cet(const char *s) +static int __init cf_check parse_cet(const char *s) { const char *ss; int val, rc =3D 0; @@ -155,7 +153,7 @@ static s8 __initdata opt_smep =3D -1; */ static struct domain *__initdata dom0; =20 -static int __init parse_smep_param(const char *s) +static int __init cf_check parse_smep_param(const char *s) { if ( !*s ) { @@ -186,7 +184,7 @@ custom_param("smep", parse_smep_param); #define SMAP_HVM_ONLY (-2) static s8 __initdata opt_smap =3D -1; =20 -static int __init parse_smap_param(const char *s) +static int __init cf_check parse_smap_param(const char *s) { if ( !*s ) { @@ -217,7 +215,7 @@ bool __read_mostly acpi_disabled; bool __initdata acpi_force; static char __initdata acpi_param[10] =3D ""; =20 -static int __init parse_acpi_param(const char *s) +static int __init cf_check parse_acpi_param(const char *s) { /* Interpret the parameter for use within Xen. */ if ( !parse_bool(s, NULL) ) @@ -253,6 +251,7 @@ static int __init parse_acpi_param(const char *s) =20 return 0; } +custom_param("acpi", parse_acpi_param); =20 static const module_t *__initdata initial_images; static unsigned int __initdata nr_initial_images; diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c index acef03314372..a01354d93319 100644 --- a/xen/arch/x86/shutdown.c +++ b/xen/arch/x86/shutdown.c @@ -56,7 +56,7 @@ static int reboot_mode; */ static enum reboot_type reboot_type =3D BOOT_INVALID; =20 -static int __init set_reboot_type(const char *str) +static int __init cf_check set_reboot_type(const char *str) { int rc =3D 0; =20 diff --git a/xen/arch/x86/spec_ctrl.c b/xen/arch/x86/spec_ctrl.c index a5569c7f2b3f..ac0f776b53cc 100644 --- a/xen/arch/x86/spec_ctrl.c +++ b/xen/arch/x86/spec_ctrl.c @@ -68,7 +68,7 @@ static bool __initdata cpu_has_bug_mds; /* Any other M{LP= ,SB,FB}DS combination. static int8_t __initdata opt_srb_lock =3D -1; uint64_t __read_mostly default_xen_mcu_opt_ctrl; =20 -static int __init parse_spec_ctrl(const char *s) +static int __init cf_check parse_spec_ctrl(const char *s) { const char *ss; int val, rc =3D 0; @@ -218,7 +218,7 @@ static __init void xpti_init_default(uint64_t caps) } } =20 -static __init int parse_xpti(const char *s) +static int __init cf_check parse_xpti(const char *s) { const char *ss; int val, rc =3D 0; @@ -264,7 +264,7 @@ custom_param("xpti", parse_xpti); int8_t __read_mostly opt_pv_l1tf_hwdom =3D -1; int8_t __read_mostly opt_pv_l1tf_domu =3D -1; =20 -static __init int parse_pv_l1tf(const char *s) +static int __init cf_check parse_pv_l1tf(const char *s) { const char *ss; int val, rc =3D 0; diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index a290aba3e8c4..4b12f494604d 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -2351,7 +2351,7 @@ int hwdom_pit_access(struct ioreq *ioreq) * tsc=3Dskewed: Assume TSCs are individually reliable, but skewed across = CPUs. * tsc=3Dstable:socket: Assume TSCs are reliable across sockets. */ -static int __init tsc_parse(const char *s) +static int __init cf_check tsc_parse(const char *s) { if ( !strcmp(s, "unstable") ) { diff --git a/xen/arch/x86/tsx.c b/xen/arch/x86/tsx.c index 88adf08c4973..265ab0231188 100644 --- a/xen/arch/x86/tsx.c +++ b/xen/arch/x86/tsx.c @@ -19,7 +19,7 @@ int8_t __read_mostly opt_tsx =3D -1; int8_t __read_mostly cpu_has_tsx_ctrl =3D -1; bool __read_mostly rtm_disabled; =20 -static int __init parse_tsx(const char *s) +static int __init cf_check parse_tsx(const char *s) { int rc =3D 0, val =3D parse_bool(s, NULL); =20 diff --git a/xen/arch/x86/x86_64/mmconfig-shared.c b/xen/arch/x86/x86_64/mm= config-shared.c index 7c3ed64b4c6c..2fa7f3f0bc4b 100644 --- a/xen/arch/x86/x86_64/mmconfig-shared.c +++ b/xen/arch/x86/x86_64/mmconfig-shared.c @@ -29,7 +29,7 @@ =20 unsigned int pci_probe =3D PCI_PROBE_CONF1 | PCI_PROBE_MMCONF; =20 -static int __init parse_mmcfg(const char *s) +static int __init cf_check parse_mmcfg(const char *s) { const char *ss; int rc =3D 0; diff --git a/xen/common/argo.c b/xen/common/argo.c index 1448faf65731..297f6d11f04d 100644 --- a/xen/common/argo.c +++ b/xen/common/argo.c @@ -78,7 +78,7 @@ DEFINE_COMPAT_HANDLE(compat_argo_iov_t); static bool __read_mostly opt_argo; static bool __read_mostly opt_argo_mac_permissive; =20 -static int __init parse_argo(const char *s) +static int __init cf_check parse_argo(const char *s) { const char *ss; int val, rc =3D 0; diff --git a/xen/common/core_parking.c b/xen/common/core_parking.c index 411106c675c9..aa432ed2f57b 100644 --- a/xen/common/core_parking.c +++ b/xen/common/core_parking.c @@ -40,7 +40,7 @@ static enum core_parking_controller { PERFORMANCE_FIRST } core_parking_controller __initdata =3D POWER_FIRST; =20 -static int __init setup_core_parking_option(const char *str) +static int __init cf_check setup_core_parking_option(const char *str) { if ( !strcmp(str, "power") ) core_parking_controller =3D POWER_FIRST; diff --git a/xen/common/debugtrace.c b/xen/common/debugtrace.c index f3794b945376..29b11239f5a5 100644 --- a/xen/common/debugtrace.c +++ b/xen/common/debugtrace.c @@ -38,7 +38,7 @@ static bool debugtrace_buf_empty =3D true; static bool debugtrace_used; static DEFINE_SPINLOCK(debugtrace_lock); =20 -static int __init debugtrace_parse_param(const char *s) +static int __init cf_check debugtrace_parse_param(const char *s) { unsigned long bytes; =20 diff --git a/xen/common/domain.c b/xen/common/domain.c index 03debb2ea161..2698dbda1398 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -354,7 +354,7 @@ static int late_hwdom_init(struct domain *d) static unsigned int __read_mostly extra_hwdom_irqs; static unsigned int __read_mostly extra_domU_irqs =3D 32; =20 -static int __init parse_extra_guest_irqs(const char *s) +static int __init cf_check parse_extra_guest_irqs(const char *s) { if ( isdigit(*s) ) extra_domU_irqs =3D simple_strtoul(s, &s, 0); diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index 8fd5e2d0780a..56f44f86c2c4 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -1424,7 +1424,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *S= ystemTable) =20 static bool __initdata efi_map_uc; =20 -static int __init parse_efi_param(const char *s) +static int __init cf_check parse_efi_param(const char *s) { const char *ss; int rc =3D 0, val; diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index c92dc1d6fd78..d477f334659b 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -117,12 +117,12 @@ static void update_gnttab_par(unsigned int val, struc= t param_hypfs *par, custom_runtime_set_var_sz(par, parval, GRANT_CUSTOM_VAL_SZ); } =20 -static void __init gnttab_max_frames_init(struct param_hypfs *par) +static void __init cf_check gnttab_max_frames_init(struct param_hypfs *par) { update_gnttab_par(opt_max_grant_frames, par, opt_max_grant_frames_val); } =20 -static void __init max_maptrack_frames_init(struct param_hypfs *par) +static void __init cf_check max_maptrack_frames_init(struct param_hypfs *p= ar) { update_gnttab_par(opt_max_maptrack_frames, par, opt_max_maptrack_frames_val); @@ -156,23 +156,23 @@ static int parse_gnttab_limit(const char *arg, unsign= ed int *valp, return 0; } =20 -static int parse_gnttab_max_frames(const char *arg); +static int cf_check parse_gnttab_max_frames(const char *arg); custom_runtime_param("gnttab_max_frames", parse_gnttab_max_frames, gnttab_max_frames_init); =20 -static int parse_gnttab_max_frames(const char *arg) +static int cf_check parse_gnttab_max_frames(const char *arg) { return parse_gnttab_limit(arg, &opt_max_grant_frames, param_2_parfs(parse_gnttab_max_frames), opt_max_grant_frames_val); } =20 -static int parse_gnttab_max_maptrack_frames(const char *arg); +static int cf_check parse_gnttab_max_maptrack_frames(const char *arg); custom_runtime_param("gnttab_max_maptrack_frames", parse_gnttab_max_maptrack_frames, max_maptrack_frames_init); =20 -static int parse_gnttab_max_maptrack_frames(const char *arg) +static int cf_check parse_gnttab_max_maptrack_frames(const char *arg) { return parse_gnttab_limit(arg, &opt_max_maptrack_frames, param_2_parfs(parse_gnttab_max_maptrack_fram= es), @@ -186,7 +186,7 @@ static int parse_gnttab_max_maptrack_frames(const char = *arg) unsigned int __read_mostly opt_gnttab_max_version =3D GNTTAB_MAX_VERSION; static bool __read_mostly opt_transitive_grants =3D true; =20 -static int __init parse_gnttab(const char *s) +static int __init cf_check parse_gnttab(const char *s) { const char *ss, *e; int val, rc =3D 0; diff --git a/xen/common/kexec.c b/xen/common/kexec.c index 8471590aeea2..6286c0bbf08b 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -104,7 +104,7 @@ static void *crash_heap_current =3D NULL, *crash_heap_e= nd =3D NULL; * < and below are synonyomous, the latter being useful for grub2 systems * which would otherwise require escaping of the < option */ -static int __init parse_crashkernel(const char *str) +static int __init cf_check parse_crashkernel(const char *str) { const char *cur; int rc =3D 0; @@ -201,7 +201,7 @@ custom_param("crashkernel", parse_crashkernel); * - all will allocate additional structures such as domain and vcpu struc= ts * low so the crash kernel can perform an extended analysis of state. */ -static int __init parse_low_crashinfo(const char *str) +static int __init cf_check parse_low_crashinfo(const char *str) { =20 if ( !strlen(str) ) @@ -230,7 +230,7 @@ custom_param("low_crashinfo", parse_low_crashinfo); * * will be rounded down to the nearest power of two. Defaults to 6= 4G */ -static int __init parse_crashinfo_maxaddr(const char *str) +static int __init cf_check parse_crashinfo_maxaddr(const char *str) { u64 addr; const char *q; diff --git a/xen/common/memory.c b/xen/common/memory.c index 5a0462f97013..fbd2ebb3ba75 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -62,7 +62,7 @@ static unsigned int __read_mostly hwdom_max_order =3D CON= FIG_HWDOM_MAX_ORDER; static unsigned int __read_mostly ptdom_max_order =3D CONFIG_PTDOM_MAX_ORD= ER; #endif =20 -static int __init parse_max_order(const char *s) +static int __init cf_check parse_max_order(const char *s) { if ( *s !=3D ',' ) domu_max_order =3D simple_strtoul(s, &s, 0); diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index d0baaa2ecd20..615ae7fe12fc 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -179,7 +179,7 @@ enum bootscrub_mode { * https://bugs.llvm.org/show_bug.cgi?id=3D39707 */ static enum bootscrub_mode __read_mostly opt_bootscrub =3D BOOTSCRUB_IDLE; -static int __init parse_bootscrub_param(const char *s) +static int __init cf_check parse_bootscrub_param(const char *s) { /* Interpret 'bootscrub' alone in its positive boolean form */ if ( *s =3D=3D '\0' ) diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c index 8c6e6eb9ccd5..f0dd626054a6 100644 --- a/xen/common/sched/cpupool.c +++ b/xen/common/sched/cpupool.c @@ -93,7 +93,7 @@ static int sched_gran_get(const char *str, enum sched_gra= n *mode) return -EINVAL; } =20 -static int __init sched_select_granularity(const char *str) +static int __init cf_check sched_select_granularity(const char *str) { return sched_gran_get(str, &opt_sched_granularity); } diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c index 6396b38e044c..a5f073cda51e 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -456,7 +456,7 @@ static const char *const opt_runqueue_str[] =3D { }; static int __read_mostly opt_runqueue =3D OPT_RUNQUEUE_SOCKET; =20 -static int __init parse_credit2_runqueue(const char *s) +static int __init cf_check parse_credit2_runqueue(const char *s) { unsigned int i; =20 diff --git a/xen/drivers/acpi/tables.c b/xen/drivers/acpi/tables.c index f39cd5eaac89..96ff96b84c66 100644 --- a/xen/drivers/acpi/tables.c +++ b/xen/drivers/acpi/tables.c @@ -472,7 +472,7 @@ int __init acpi_table_init(void) return 0; } =20 -static int __init acpi_parse_apic_instance(const char *str) +static int __init cf_check acpi_parse_apic_instance(const char *str) { const char *q; =20 diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index a043e9521afd..4694be83db45 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -88,7 +88,7 @@ static const char con_timestamp_mode_2_string[][7] =3D { [TSM_RAW] =3D "raw", }; =20 -static void con_timestamp_mode_upd(struct param_hypfs *par) +static void cf_check con_timestamp_mode_upd(struct param_hypfs *par) { const char *val =3D con_timestamp_mode_2_string[opt_con_timestamp_mode= ]; =20 @@ -98,7 +98,7 @@ static void con_timestamp_mode_upd(struct param_hypfs *pa= r) #define con_timestamp_mode_upd(par) #endif =20 -static int parse_console_timestamps(const char *s); +static int cf_check parse_console_timestamps(const char *s); custom_runtime_param("console_timestamps", parse_console_timestamps, con_timestamp_mode_upd); =20 @@ -160,8 +160,8 @@ static int __read_mostly xenlog_guest_upper_thresh =3D static int __read_mostly xenlog_guest_lower_thresh =3D XENLOG_GUEST_LOWER_THRESHOLD; =20 -static int parse_loglvl(const char *s); -static int parse_guest_loglvl(const char *s); +static int cf_check parse_loglvl(const char *s); +static int cf_check parse_guest_loglvl(const char *s); =20 #ifdef CONFIG_HYPFS #define LOGLVL_VAL_SZ 16 @@ -176,13 +176,13 @@ static void xenlog_update_val(int lower, int upper, c= har *val) snprintf(val, LOGLVL_VAL_SZ, "%s/%s", lvl2opt[lower], lvl2opt[upper]); } =20 -static void __init xenlog_init(struct param_hypfs *par) +static void __init cf_check xenlog_init(struct param_hypfs *par) { xenlog_update_val(xenlog_lower_thresh, xenlog_upper_thresh, xenlog_val= ); custom_runtime_set_var(par, xenlog_val); } =20 -static void __init xenlog_guest_init(struct param_hypfs *par) +static void __init cf_check xenlog_guest_init(struct param_hypfs *par) { xenlog_update_val(xenlog_guest_lower_thresh, xenlog_guest_upper_thresh, xenlog_guest_val); @@ -240,7 +240,7 @@ static int _parse_loglvl(const char *s, int *lower, int= *upper, char *val) return *s ? -EINVAL : 0; } =20 -static int parse_loglvl(const char *s) +static int cf_check parse_loglvl(const char *s) { int ret; =20 @@ -251,7 +251,7 @@ static int parse_loglvl(const char *s) return ret; } =20 -static int parse_guest_loglvl(const char *s) +static int cf_check parse_guest_loglvl(const char *s) { int ret; =20 @@ -793,7 +793,7 @@ static int printk_prefix_check(char *p, char **pp) ((loglvl < upper_thresh) && printk_ratelimit())); }=20 =20 -static int parse_console_timestamps(const char *s) +static int cf_check parse_console_timestamps(const char *s) { switch ( parse_bool(s, NULL) ) { diff --git a/xen/drivers/cpufreq/cpufreq.c b/xen/drivers/cpufreq/cpufreq.c index 419aae83eea6..36b079296235 100644 --- a/xen/drivers/cpufreq/cpufreq.c +++ b/xen/drivers/cpufreq/cpufreq.c @@ -65,7 +65,7 @@ enum cpufreq_controller cpufreq_controller =3D FREQCTL_xe= n; =20 static int __init cpufreq_cmdline_parse(const char *s); =20 -static int __init setup_cpufreq_option(const char *str) +static int __init cf_check setup_cpufreq_option(const char *str) { const char *arg =3D strpbrk(str, ",:"); int choice; diff --git a/xen/drivers/passthrough/amd/iommu_acpi.c b/xen/drivers/passthr= ough/amd/iommu_acpi.c index b07fa4c40124..5ea227732821 100644 --- a/xen/drivers/passthrough/amd/iommu_acpi.c +++ b/xen/drivers/passthrough/amd/iommu_acpi.c @@ -704,7 +704,7 @@ static u16 __init parse_ivhd_device_extended_range( return dev_length; } =20 -static int __init parse_ivrs_ioapic(const char *str) +static int __init cf_check parse_ivrs_ioapic(const char *str) { const char *s =3D str; unsigned long id; @@ -742,7 +742,7 @@ static int __init parse_ivrs_ioapic(const char *str) } custom_param("ivrs_ioapic[", parse_ivrs_ioapic); =20 -static int __init parse_ivrs_hpet(const char *str) +static int __init cf_check parse_ivrs_hpet(const char *str) { const char *s =3D str; unsigned long id; @@ -1369,7 +1369,7 @@ int __init amd_iommu_get_supported_ivhd_type(void) * Format: * ivmd=3D[-][=3D[-'][,[-'][,...]]][;<= start>...] */ -static int __init parse_ivmd_param(const char *s) +static int __init cf_check parse_ivmd_param(const char *s) { do { unsigned long start, end; diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iomm= u.c index 6334370109fc..4eea296c8c7c 100644 --- a/xen/drivers/passthrough/iommu.c +++ b/xen/drivers/passthrough/iommu.c @@ -64,7 +64,7 @@ bool_t __read_mostly amd_iommu_perdev_intremap =3D 1; =20 DEFINE_PER_CPU(bool_t, iommu_dont_flush_iotlb); =20 -static int __init parse_iommu_param(const char *s) +static int __init cf_check parse_iommu_param(const char *s) { const char *ss; int val, rc =3D 0; @@ -135,7 +135,7 @@ static int __init parse_iommu_param(const char *s) } custom_param("iommu", parse_iommu_param); =20 -static int __init parse_dom0_iommu_param(const char *s) +static int __init cf_check parse_dom0_iommu_param(const char *s) { const char *ss; int rc =3D 0; diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 0d8ab2e716b8..e3105f90b7fe 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -146,7 +146,7 @@ static struct phantom_dev { } phantom_devs[8]; static unsigned int nr_phantom_devs; =20 -static int __init parse_phantom_dev(const char *str) +static int __init cf_check parse_phantom_dev(const char *str) { const char *s; unsigned int seg, bus, slot; @@ -182,7 +182,7 @@ custom_param("pci-phantom", parse_phantom_dev); static u16 __read_mostly command_mask; static u16 __read_mostly bridge_ctl_mask; =20 -static int __init parse_pci_param(const char *s) +static int __init cf_check parse_pci_param(const char *s) { const char *ss; int rc =3D 0; diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/v= td/dmar.c index 33a12b2ae976..b152f3da916b 100644 --- a/xen/drivers/passthrough/vtd/dmar.c +++ b/xen/drivers/passthrough/vtd/dmar.c @@ -1084,7 +1084,7 @@ int intel_iommu_get_reserved_device_memory(iommu_grdm= _t *func, void *ctxt) * If a segment is specified for other than the first device, and it does = not * match the one specified for the first one, an error will be reported. */ -static int __init parse_rmrr_param(const char *str) +static int __init cf_check parse_rmrr_param(const char *str) { const char *s =3D str, *cur, *stmp; unsigned int seg, bus, dev, func, dev_count; diff --git a/xen/drivers/passthrough/vtd/quirks.c b/xen/drivers/passthrough= /vtd/quirks.c index 52b47dd89325..0590ddeea7c4 100644 --- a/xen/drivers/passthrough/vtd/quirks.c +++ b/xen/drivers/passthrough/vtd/quirks.c @@ -308,7 +308,7 @@ void vtd_ops_postamble_quirk(struct vtd_iommu *iommu) } } =20 -static int __init parse_snb_timeout(const char *s) +static int __init cf_check parse_snb_timeout(const char *s) { int t; const char *q =3D NULL; diff --git a/xen/drivers/video/vesa.c b/xen/drivers/video/vesa.c index 2c1bbd927806..cb0e443be4dd 100644 --- a/xen/drivers/video/vesa.c +++ b/xen/drivers/video/vesa.c @@ -30,7 +30,7 @@ static unsigned int vram_remap; integer_param("vesa-map", vram_remap); =20 static int font_height; -static int __init parse_font_height(const char *s) +static int __init cf_check parse_font_height(const char *s) { if ( simple_strtoul(s, &s, 10) =3D=3D 8 && (*s++ =3D=3D 'x') ) font_height =3D simple_strtoul(s, &s, 10); diff --git a/xen/xsm/flask/flask_op.c b/xen/xsm/flask/flask_op.c index bb3bebc30e01..2d7ca3abaecd 100644 --- a/xen/xsm/flask/flask_op.c +++ b/xen/xsm/flask/flask_op.c @@ -28,8 +28,6 @@ #define _copy_from_guest copy_from_guest =20 enum flask_bootparam_t __read_mostly flask_bootparam =3D FLASK_BOOTPARAM_E= NFORCING; -static int parse_flask_param(const char *s); -custom_param("flask", parse_flask_param); =20 bool __read_mostly flask_enforcing =3D true; =20 @@ -60,7 +58,7 @@ static int flask_security_make_bools(void); =20 extern int ss_initialized; =20 -static int __init parse_flask_param(const char *s) +static int __init cf_check parse_flask_param(const char *s) { if ( !strcmp(s, "enforcing") ) flask_bootparam =3D FLASK_BOOTPARAM_ENFORCING; @@ -75,6 +73,7 @@ static int __init parse_flask_param(const char *s) =20 return (flask_bootparam =3D=3D FLASK_BOOTPARAM_INVALID) ? -EINVAL : 0; } +custom_param("flask", parse_flask_param); =20 static int domain_has_security(struct domain *d, u32 perms) { diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c index 74d0ef89c12d..302c08f7265e 100644 --- a/xen/xsm/xsm_core.c +++ b/xen/xsm/xsm_core.c @@ -55,7 +55,7 @@ static enum xsm_bootparam __initdata xsm_bootparam =3D XSM_BOOTPARAM_DUMMY; #endif =20 -static int __init parse_xsm_param(const char *s) +static int __init cf_check parse_xsm_param(const char *s) { int rc =3D 0; =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930142; cv=none; d=zohomail.com; s=zohoarc; b=dySbMtYzwXKnTO6kXTCQtbtT88ufi6isO/ovZ4zx3YmwgJ3sx1DAucwvlm3F/vbSWRdS6Pf+3Pf76ViKAqYFTNFd4YdMoT9IiKp1FbXnO9vBHsxdgpGtpN4z4tXm4QKZUQ4MsBrQJuj4MIYn8AoVBb17k1DOw7wNhE6BM2NIoNc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930142; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EKoXVGbRzP4e6+IPlyX5CtAe2VjQ8Hzo//7yyNzcScs=; b=A3A6EP2qarKAhNjXf2NJGZwfGhGPOIhVufJvcn8/Zh2hQuToLBmSCd3YKEek4gZXqw6fNo+rIGRsipPLmWVKCxuZ4H9CQps7J6lipnvBfpSykkfh9BKWMmHq5tecA9lJ19BMZ+z8KlB0U3SYTXUQIBO0VuuPCw7dV6tFBD77NeY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163793014230942.6699655439229; Fri, 26 Nov 2021 04:35:42 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232667.403459 (Exim 4.92) (envelope-from ) id 1mqaRU-00021M-5H; Fri, 26 Nov 2021 12:35:04 +0000 Received: by outflank-mailman (output) from mailman id 232667.403459; Fri, 26 Nov 2021 12:35:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRU-00020Q-1f; Fri, 26 Nov 2021 12:35:04 +0000 Received: by outflank-mailman (input) for mailman id 232667; Fri, 26 Nov 2021 12:35:02 +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 1mqaRS-0001F5-2d for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:35:02 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 448cc30e-4eb5-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 13:34:59 +0100 (CET) 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: 448cc30e-4eb5-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930099; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=F+vb4CK4+xYSviJ9bvv2J8tBZsl9csJinBYt0YnRvAQ=; b=ateChJ+i707v3trmHP65gr9yZ6lE8NUsToHxXxrNSi/0nqx/eNZ243mG LOGCHxMXGv+qFRXZbhW9jEGCZ7MbnMcw/C1dJ88M+bHIYkg56A7as9w5y 43XhFfxPskycyXRa9GbKO8msmp28qhNzySzVT8Js3tzUZDk4/RPnb6F03 A=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 8+gyD3VNzoRLnssr8bIpSdJRT7P8jxR22k++NGdUmF0yc5GPJBO6V8HpkF0yZvZqSsQr+AFXdu 4IEUBQ++lOaov/g4d59ua4Psf79cbGRNK3ux+owhplnR6X7AU+/7KuTkThYP272uVSCqz1zpvQ Yv3UcX4OMdpgrm0BDzEFfqQTKh37YO6lXD2rCAptZ6srTXciTGrPmcQ0LMCjUQlQXbpN+vljwD tF2PRgPQnSu1PS5ovMsZv+1i1bZYetmKVdqqCE6BDKHV4X0eM16kdFjl6FgsD/beK1F70IY2V6 BsHqAw9ZnnB3e0Dk3grLhkbS X-SBRS: 5.1 X-MesageID: 58192116 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:usPoeq7ZBazFQ4PlIaw0nwxRtM3AchMFZxGqfqrLsTDasY5as4F+v msXXGiEM6qKNjShfdF/YIy/8x4AsJ7VyoVmSlY6/C8yHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw2LBVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z6 /RUjbqKcjsVH7CStKNeAgBGMRtmIvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTa+PP ZNAN1KDajyYQxdCYgkbFKg4p+6CuCihbmYHuHas8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u12bkBhAXMvSPxDzD9Wij7sfUhj/yUo8WELy+99ZpjUeVy2hVDwcZPXOrrP/8hkOgVtZ3L 00P5jFovaU07FasTNT2Q1u/unHsljw2VsdUEuY6wBqQ0aeS6AGcblXoVRYYNoZg7pVvA2V3i BnZxLsFGACDrpW2aGul0I2vkQ+TJHY5aixTfDEmdxMatoyLTJ4IsjrDSdNqEaiQh9LzGC3tz z3ikBXSl4n/nuZQifzloAmvbyaE48GQE1Vrvlm/sneNt1shPOaYi5qUBU83BBqqBKKQVRG/s XcNgKByB8heXMjWxERhrAjgdYxFBspp0hWA3jaD/LF7rlxBHkJPm6gLu1mSw28zb645lcfBO hO7hO+ozMY70IGWRaF2eZmtLM8h0LLtE9/oPtiNMIERMsYsK17bon01DaJ144wLuBN3+U3YE c3GGftA8F5AUfg3pNZIb7t1PUAXKtAWmjqIGMGTI+WP2ruCfn+FIYrpw3PVBt3VGJis+V2Pm /4GbpPi40wGDIXWP3mGmaZOfAtiBSVqWvjLRzl/K7frzvxOQzp6VZc8ANoJJuRYokiivruSo yzmBBYHkAGXaL+uAVziV02PoYjHBf5XxU/X9wR3Vbpx83R8M4up8okFcJ47Iesu+OB5lKYmR PgZYcSQRP9IT22fqTgaaJD8qq1kdQiq2l3Sb3b0PmBncs4yXRHN9//lYhDrqHsEAB2ouJZsu LanzA7aH8YOHlwwEMbMZfuz5FqtpnxByvlqVk7FL4ALKkXh+YRnMQLrifozL51eIBnP3GLCh Q2XHQ0Zta/GpIpsqIvFgqWNroGIFepiHxUFQzmHvOjubSSDpzit245NVuqMbAvxbmKs9fXwf /hRwtH9LOYDwARAvb1jHus51qk5/dbu+eNXl1w2AHXRYl23Ibp8OX3aj9JXv6hAy7IF6wu7X kWDpotTNbmTYZ63FVcQIEwub/iZ1OFSkT7XtKxnLEL/7S5x3byGTUQNYEXc1H0DdON4YNE/3 OMsmM8K8Aju2BMlP+GPgj1Q62nRfGcLVL8qt81CDYLm4ubxJoquvXAI5vfK3ayy IronPort-HdrOrdr: A9a23:k+9h36D31PN9E+zlHemU55DYdb4zR+YMi2TC1yhKJyC9Ffbo7v xG/c5rsyMc5wxwZJhNo7y90ey7MBbhHP1OkO4s1NWZLWrbUQKTRekIh+bfKn/baknDH4ZmpN 9dmsNFaeEYY2IUsS+D2njbL+od X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="58192116" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 06/65] xen: Annotate fnptr targets from __initcall() Date: Fri, 26 Nov 2021 12:33:47 +0000 Message-ID: <20211126123446.32324-7-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930144410100011 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/acpi/cpu_idle.c | 4 ++-- xen/arch/x86/acpi/cpufreq/cpufreq.c | 2 +- xen/arch/x86/cpu/mcheck/non-fatal.c | 2 +- xen/arch/x86/cpu/microcode/core.c | 2 +- xen/arch/x86/cpu/mtrr/main.c | 2 +- xen/arch/x86/cpu/vpmu.c | 2 +- xen/arch/x86/domain.c | 2 +- xen/arch/x86/extable.c | 2 +- xen/arch/x86/hvm/hvm.c | 4 ++-- xen/arch/x86/hvm/irq.c | 2 +- xen/arch/x86/hvm/mtrr.c | 2 +- xen/arch/x86/hvm/nestedhvm.c | 3 +-- xen/arch/x86/hvm/quirks.c | 2 +- xen/arch/x86/ioport_emulate.c | 4 ++-- xen/arch/x86/irq.c | 4 ++-- xen/arch/x86/mm/shadow/common.c | 4 ++-- xen/arch/x86/msi.c | 2 +- xen/arch/x86/nmi.c | 2 +- xen/arch/x86/numa.c | 2 +- xen/arch/x86/oprofile/nmi_int.c | 2 +- xen/arch/x86/percpu.c | 2 +- xen/arch/x86/psr.c | 2 +- xen/arch/x86/pv/domain.c | 2 +- xen/arch/x86/shutdown.c | 2 +- xen/arch/x86/time.c | 8 ++++---- xen/common/core_parking.c | 2 +- xen/common/debugtrace.c | 2 +- xen/common/event_channel.c | 2 +- xen/common/gdbstub.c | 2 +- xen/common/grant_table.c | 2 +- xen/common/kernel.c | 4 ++-- xen/common/kexec.c | 2 +- xen/common/livepatch.c | 2 +- xen/common/page_alloc.c | 4 ++-- xen/common/radix-tree.c | 2 +- xen/common/random.c | 2 +- xen/common/sched/cpupool.c | 2 +- xen/common/spinlock.c | 2 +- xen/common/stop_machine.c | 2 +- xen/drivers/cpufreq/cpufreq.c | 2 +- xen/drivers/cpufreq/cpufreq_misc_governors.c | 6 +++--- xen/drivers/cpufreq/cpufreq_ondemand.c | 2 +- xen/drivers/passthrough/amd/iommu.h | 2 +- xen/drivers/passthrough/amd/iommu_init.c | 2 +- xen/drivers/passthrough/pci.c | 2 +- xen/drivers/passthrough/vtd/iommu.c | 2 +- xen/drivers/passthrough/x86/hvm.c | 2 +- xen/include/asm-x86/hvm/save.h | 2 +- 48 files changed, 60 insertions(+), 61 deletions(-) diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index 5d73eb5917af..7902ccce6b98 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -410,7 +410,7 @@ static void dump_cx(unsigned char key) } } =20 -static int __init cpu_idle_key_init(void) +static int __init cf_check cpu_idle_key_init(void) { register_keyhandler('c', dump_cx, "dump ACPI Cx structures", 1); return 0; @@ -1655,7 +1655,7 @@ static struct notifier_block cpu_nfb =3D { .notifier_call =3D cpu_callback }; =20 -static int __init cpuidle_presmp_init(void) +static int __init cf_check cpuidle_presmp_init(void) { void *cpu =3D (void *)(long)smp_processor_id(); =20 diff --git a/xen/arch/x86/acpi/cpufreq/cpufreq.c b/xen/arch/x86/acpi/cpufre= q/cpufreq.c index 029c9398c42a..9510f05340aa 100644 --- a/xen/arch/x86/acpi/cpufreq/cpufreq.c +++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c @@ -630,7 +630,7 @@ static const struct cpufreq_driver __initconstrel acpi_= cpufreq_driver =3D { .exit =3D acpi_cpufreq_cpu_exit, }; =20 -static int __init cpufreq_driver_init(void) +static int __init cf_check cpufreq_driver_init(void) { int ret =3D 0; =20 diff --git a/xen/arch/x86/cpu/mcheck/non-fatal.c b/xen/arch/x86/cpu/mcheck/= non-fatal.c index ec52d37c96e1..2679c220a8a2 100644 --- a/xen/arch/x86/cpu/mcheck/non-fatal.c +++ b/xen/arch/x86/cpu/mcheck/non-fatal.c @@ -86,7 +86,7 @@ static void mce_work_fn(void *data) adjust =3D 0; } =20 -static int __init init_nonfatal_mce_checker(void) +static int __init cf_check init_nonfatal_mce_checker(void) { struct cpuinfo_x86 *c =3D &boot_cpu_data; =20 diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode= /core.c index 95d35ca0f3f7..46f55fe7f191 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -696,7 +696,7 @@ int microcode_update(XEN_GUEST_HANDLE(const_void) buf, = unsigned long len) microcode_update_helper, buffer); } =20 -static int __init microcode_init(void) +static int __init cf_check microcode_init(void) { /* * At this point, all CPUs should have updated their microcode diff --git a/xen/arch/x86/cpu/mtrr/main.c b/xen/arch/x86/cpu/mtrr/main.c index e9df53f00d61..428133100d46 100644 --- a/xen/arch/x86/cpu/mtrr/main.c +++ b/xen/arch/x86/cpu/mtrr/main.c @@ -632,7 +632,7 @@ void mtrr_bp_restore(void) mtrr_if->set_all(); } =20 -static int __init mtrr_init_finialize(void) +static int __init cf_check mtrr_init_finialize(void) { if (!mtrr_if) return 0; diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c index 9875143cac0e..c23e66d04c02 100644 --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -868,7 +868,7 @@ static struct notifier_block cpu_nfb =3D { .notifier_call =3D cpu_callback }; =20 -static int __init vpmu_init(void) +static int __init cf_check vpmu_init(void) { int vendor =3D current_cpu_data.x86_vendor; =20 diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index ef1812dc1402..f943283b2a88 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -2532,7 +2532,7 @@ static void vcpu_kick_softirq(void) */ } =20 -static int __init init_vcpu_kick_softirq(void) +static int __init cf_check init_vcpu_kick_softirq(void) { open_softirq(VCPU_KICK_SOFTIRQ, vcpu_kick_softirq); return 0; diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c index 3cb0352abe5f..b6664264de31 100644 --- a/xen/arch/x86/extable.c +++ b/xen/arch/x86/extable.c @@ -126,7 +126,7 @@ search_exception_table(const struct cpu_user_regs *regs) #ifndef NDEBUG #include =20 -static int __init stub_selftest(void) +static int __init cf_check stub_selftest(void) { static const struct { uint8_t opc[4]; diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 00edf899fa79..7af11656dcfd 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -164,7 +164,7 @@ static bool __init hap_supported(struct hvm_function_ta= ble *fns) return true; } =20 -static int __init hvm_enable(void) +static int __init cf_check hvm_enable(void) { const struct hvm_function_table *fns =3D NULL; =20 @@ -1518,7 +1518,7 @@ static int hvm_load_cpu_msrs(struct domain *d, hvm_do= main_context_t *h) /* We need variable length data chunks for XSAVE area and MSRs, hence * a custom declaration rather than HVM_REGISTER_SAVE_RESTORE. */ -static int __init hvm_register_CPU_save_and_restore(void) +static int __init cf_check hvm_register_CPU_save_and_restore(void) { hvm_register_savevm(CPU_XSAVE_CODE, "CPU_XSAVE", diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index 52aae4565f0c..6045c9149bad 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -650,7 +650,7 @@ static void dump_irq_info(unsigned char key) rcu_read_unlock(&domlist_read_lock); } =20 -static int __init dump_irq_info_key_init(void) +static int __init cf_check dump_irq_info_key_init(void) { register_keyhandler('I', dump_irq_info, "dump HVM irq info", 1); return 0; diff --git a/xen/arch/x86/hvm/mtrr.c b/xen/arch/x86/hvm/mtrr.c index 4a9f3177edd4..b3ef1bf54133 100644 --- a/xen/arch/x86/hvm/mtrr.c +++ b/xen/arch/x86/hvm/mtrr.c @@ -75,7 +75,7 @@ static uint8_t __read_mostly mtrr_epat_tbl[MTRR_NUM_TYPES= ][MEMORY_NUM_TYPES] =3D static uint8_t __read_mostly pat_entry_tbl[PAT_TYPE_NUMS] =3D { [0 ... PAT_TYPE_NUMS-1] =3D INVALID_MEM_TYPE }; =20 -static int __init hvm_mtrr_pat_init(void) +static int __init cf_check hvm_mtrr_pat_init(void) { unsigned int i, j; =20 diff --git a/xen/arch/x86/hvm/nestedhvm.c b/xen/arch/x86/hvm/nestedhvm.c index bd1101987de0..3cf812609acf 100644 --- a/xen/arch/x86/hvm/nestedhvm.c +++ b/xen/arch/x86/hvm/nestedhvm.c @@ -127,8 +127,7 @@ nestedhvm_vmcx_flushtlb(struct p2m_domain *p2m) * iomap[2] set set */ =20 -static int __init -nestedhvm_setup(void) +static int __init cf_check nestedhvm_setup(void) { /* Same format and size as hvm_io_bitmap (Intel needs only 2 pages). */ unsigned nr =3D cpu_has_vmx ? 2 : 3; diff --git a/xen/arch/x86/hvm/quirks.c b/xen/arch/x86/hvm/quirks.c index 54cc66c382b6..917356b1312c 100644 --- a/xen/arch/x86/hvm/quirks.c +++ b/xen/arch/x86/hvm/quirks.c @@ -36,7 +36,7 @@ static int __init dmi_hvm_deny_port80(const struct dmi_sy= stem_id *id) return 0; } =20 -static int __init check_port80(void) +static int __init cf_check check_port80(void) { /* * Quirk table for systems that misbehave (lock up, etc.) if port diff --git a/xen/arch/x86/ioport_emulate.c b/xen/arch/x86/ioport_emulate.c index cf1f3f922959..6caeb3d470ce 100644 --- a/xen/arch/x86/ioport_emulate.c +++ b/xen/arch/x86/ioport_emulate.c @@ -11,7 +11,7 @@ unsigned int (*__read_mostly ioemul_handle_quirk)( uint8_t opcode, char *io_emul_stub, struct cpu_user_regs *regs); =20 -static unsigned int ioemul_handle_proliant_quirk( +static unsigned int cf_check ioemul_handle_proliant_quirk( u8 opcode, char *io_emul_stub, struct cpu_user_regs *regs) { static const char stub[] =3D { @@ -100,7 +100,7 @@ static const struct dmi_system_id __initconstrel ioport= _quirks_tbl[] =3D { { } }; =20 -static int __init ioport_quirks_init(void) +static int __init cf_check ioport_quirks_init(void) { if ( dmi_check_system(ioport_quirks_tbl) ) ioemul_handle_quirk =3D ioemul_handle_proliant_quirk; diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 84b174d0f51f..bcf46cd54d16 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -954,7 +954,7 @@ static void irq_ratelimit_timer_fn(void *data) spin_unlock_irqrestore(&irq_ratelimit_lock, flags); } =20 -static int __init irq_ratelimit_init(void) +static int __init cf_check irq_ratelimit_init(void) { if ( irq_ratelimit_threshold ) init_timer(&irq_ratelimit_timer, irq_ratelimit_timer_fn, NULL, 0); @@ -2504,7 +2504,7 @@ static void dump_irqs(unsigned char key) dump_ioapic_irq_info(); } =20 -static int __init setup_dump_irqs(void) +static int __init cf_check setup_dump_irqs(void) { /* In lieu of being able to live in init_irq_data(). */ BUILD_BUG_ON(sizeof(irq_max_guests) > diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/commo= n.c index de09ef5cae58..1e4ee50771f5 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -105,7 +105,7 @@ static void shadow_audit_key(unsigned char key) __func__, shadow_audit_enable); } =20 -static int __init shadow_audit_key_init(void) +static int __init cf_check shadow_audit_key_init(void) { register_keyhandler('O', shadow_audit_key, "toggle shadow audits", 0); return 0; @@ -1057,7 +1057,7 @@ static void shadow_blow_all_tables(unsigned char c) } =20 /* Register this function in the Xen console keypress table */ -static __init int shadow_blow_tables_keyhandler_init(void) +static int __init cf_check shadow_blow_tables_keyhandler_init(void) { register_keyhandler('S', shadow_blow_all_tables, "reset shadow pagetab= les", 1); return 0; diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index 5febc0ea4b7c..d1497254b188 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -1485,7 +1485,7 @@ static void dump_msi(unsigned char key) vpci_dump_msi(); } =20 -static int __init msi_setup_keyhandler(void) +static int __init cf_check msi_setup_keyhandler(void) { register_keyhandler('M', dump_msi, "dump MSI state", 1); return 0; diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index 1a225d499295..21e947a46f24 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -606,7 +606,7 @@ static void do_nmi_stats(unsigned char key) printk("%pv: NMI neither pending nor masked\n", v); } =20 -static __init int register_nmi_trigger(void) +static int __init cf_check register_nmi_trigger(void) { register_keyhandler('N', do_nmi_trigger, "trigger an NMI", 0); register_keyhandler('n', do_nmi_stats, "NMI statistics", 1); diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c index 6be5a0c93322..5de9db4e9943 100644 --- a/xen/arch/x86/numa.c +++ b/xen/arch/x86/numa.c @@ -504,7 +504,7 @@ static void dump_numa(unsigned char key) rcu_read_unlock(&domlist_read_lock); } =20 -static __init int register_numa_trigger(void) +static int __init cf_check register_numa_trigger(void) { register_keyhandler('u', dump_numa, "dump NUMA info", 1); return 0; diff --git a/xen/arch/x86/oprofile/nmi_int.c b/xen/arch/x86/oprofile/nmi_in= t.c index 7842d95b95ea..ba9c4b9804ca 100644 --- a/xen/arch/x86/oprofile/nmi_int.c +++ b/xen/arch/x86/oprofile/nmi_int.c @@ -388,7 +388,7 @@ static int __init arch_perfmon_init(char **cpu_type) return 1; } =20 -static int __init nmi_init(void) +static int __init cf_check nmi_init(void) { __u8 vendor =3D current_cpu_data.x86_vendor; __u8 family =3D current_cpu_data.x86; diff --git a/xen/arch/x86/percpu.c b/xen/arch/x86/percpu.c index 5ea14b6ec312..0e0b6577ca45 100644 --- a/xen/arch/x86/percpu.c +++ b/xen/arch/x86/percpu.c @@ -94,7 +94,7 @@ static struct notifier_block cpu_percpu_nfb =3D { .priority =3D 100 /* highest priority */ }; =20 -static int __init percpu_presmp_init(void) +static int __init cf_check percpu_presmp_init(void) { register_cpu_notifier(&cpu_percpu_nfb); =20 diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index 56916344cb1d..9a3670afc341 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -1675,7 +1675,7 @@ static struct notifier_block cpu_nfb =3D { .priority =3D -1 }; =20 -static int __init psr_presmp_init(void) +static int __init cf_check psr_presmp_init(void) { if ( (opt_psr & PSR_CMT) && opt_rmid_max ) init_psr_cmt(opt_rmid_max); diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c index 125c4561a7ea..55146c15c853 100644 --- a/xen/arch/x86/pv/domain.c +++ b/xen/arch/x86/pv/domain.c @@ -167,7 +167,7 @@ unsigned long pv_fixup_guest_cr4(const struct vcpu *v, = unsigned long cr4) static int8_t __read_mostly opt_global_pages =3D -1; boolean_runtime_param("global-pages", opt_global_pages); =20 -static int __init pge_init(void) +static int __init cf_check pge_init(void) { if ( opt_global_pages =3D=3D -1 ) opt_global_pages =3D !cpu_has_hypervisor || diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c index a01354d93319..ad3e3a76916f 100644 --- a/xen/arch/x86/shutdown.c +++ b/xen/arch/x86/shutdown.c @@ -533,7 +533,7 @@ static const struct dmi_system_id __initconstrel reboot= _dmi_table[] =3D { { } }; =20 -static int __init reboot_init(void) +static int __init cf_check reboot_init(void) { /* * Only do the DMI check if reboot_type hasn't been overridden diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 4b12f494604d..4ab0cf6731e3 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -526,7 +526,7 @@ static struct platform_timesource __initdata plt_pmtime= r =3D static struct time_scale __read_mostly pmt_scale; static struct time_scale __read_mostly pmt_scale_r; =20 -static __init int init_pmtmr_scale(void) +static __init int cf_check init_pmtmr_scale(void) { set_time_scale(&pmt_scale, ACPI_PM_FREQUENCY); pmt_scale_r =3D scale_reciprocal(pmt_scale); @@ -2047,7 +2047,7 @@ static void __init try_platform_timer_tail(void) } =20 /* Late init function, after all cpus have booted */ -static int __init verify_tsc_reliability(void) +static int __init cf_check verify_tsc_reliability(void) { if ( boot_cpu_has(X86_FEATURE_TSC_RELIABLE) ) { @@ -2218,7 +2218,7 @@ static int _disable_pit_irq(void(*hpet_broadcast_setu= p)(void)) return ret; } =20 -static int __init disable_pit_irq(void) +static int __init cf_check disable_pit_irq(void) { if ( !_disable_pit_irq(hpet_broadcast_init) ) { @@ -2581,7 +2581,7 @@ static void dump_softtsc(unsigned char key) printk("No domains have emulated TSC\n"); } =20 -static int __init setup_dump_softtsc(void) +static int __init cf_check setup_dump_softtsc(void) { register_keyhandler('s', dump_softtsc, "dump softtsc stats", 1); return 0; diff --git a/xen/common/core_parking.c b/xen/common/core_parking.c index aa432ed2f57b..44a907abfd7f 100644 --- a/xen/common/core_parking.c +++ b/xen/common/core_parking.c @@ -258,7 +258,7 @@ static int __init register_core_parking_policy(const st= ruct cp_policy *policy) return 0; } =20 -static int __init core_parking_init(void) +static int __init cf_check core_parking_init(void) { int ret =3D 0; =20 diff --git a/xen/common/debugtrace.c b/xen/common/debugtrace.c index 29b11239f5a5..f3c0fd8aa17b 100644 --- a/xen/common/debugtrace.c +++ b/xen/common/debugtrace.c @@ -279,7 +279,7 @@ static struct notifier_block debugtrace_nfb =3D { .notifier_call =3D debugtrace_cpu_callback }; =20 -static int __init debugtrace_init(void) +static int __init cf_check debugtrace_init(void) { unsigned int cpu; =20 diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index a4e78282e059..67ac4dd15dcf 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -1642,7 +1642,7 @@ static void dump_evtchn_info(unsigned char key) rcu_read_unlock(&domlist_read_lock); } =20 -static int __init dump_evtchn_info_key_init(void) +static int __init cf_check dump_evtchn_info_key_init(void) { register_keyhandler('e', dump_evtchn_info, "dump evtchn info", 1); return 0; diff --git a/xen/common/gdbstub.c b/xen/common/gdbstub.c index 848c1f4327e8..99bfd9a654c9 100644 --- a/xen/common/gdbstub.c +++ b/xen/common/gdbstub.c @@ -640,7 +640,7 @@ __trap_to_gdb(struct cpu_user_regs *regs, unsigned long= cookie) return rc; } =20 -static int __init initialise_gdb(void) +static int __init cf_check initialise_gdb(void) { if ( *opt_gdb =3D=3D '\0' ) return 0; diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index d477f334659b..7b2f593e8b6c 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -4273,7 +4273,7 @@ static void gnttab_usage_print_all(unsigned char key) printk("%s ] done\n", __func__); } =20 -static int __init gnttab_usage_init(void) +static int __init cf_check gnttab_usage_init(void) { register_keyhandler('g', gnttab_usage_print_all, "print grant table usage", 1); diff --git a/xen/common/kernel.c b/xen/common/kernel.c index 752c2e0dae44..adff2d2c77f3 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -393,7 +393,7 @@ static HYPFS_STRING_INIT(extra, "extra"); static HYPFS_STRING_INIT(config, "config"); #endif =20 -static int __init buildinfo_init(void) +static int __init cf_check buildinfo_init(void) { hypfs_add_dir(&hypfs_root, &buildinfo, true); =20 @@ -431,7 +431,7 @@ __initcall(buildinfo_init); =20 static HYPFS_DIR_INIT(params, "params"); =20 -static int __init param_init(void) +static int __init cf_check param_init(void) { struct param_hypfs *param; =20 diff --git a/xen/common/kexec.c b/xen/common/kexec.c index 6286c0bbf08b..36384f782db3 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -570,7 +570,7 @@ void __init kexec_early_calculations(void) crashinfo_maxaddr_bits =3D fls64(crashinfo_maxaddr) - 1; } =20 -static int __init kexec_init(void) +static int __init cf_check kexec_init(void) { void *cpu =3D (void *)(unsigned long)smp_processor_id(); =20 diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index 7118551b27e2..33708b4e2388 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -2139,7 +2139,7 @@ static struct notifier_block cpu_nfb =3D { .notifier_call =3D cpu_callback }; =20 -static int __init livepatch_init(void) +static int __init cf_check livepatch_init(void) { unsigned int cpu; =20 diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 615ae7fe12fc..8789ec81b6df 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -2555,7 +2555,7 @@ static void pagealloc_info(unsigned char key) printk(" Dom heap: %lukB free\n", total << (PAGE_SHIFT-10)); } =20 -static __init int pagealloc_keyhandler_init(void) +static __init int cf_check pagealloc_keyhandler_init(void) { register_keyhandler('m', pagealloc_info, "memory info", 1); return 0; @@ -2603,7 +2603,7 @@ static void dump_heap(unsigned char key) } } =20 -static __init int register_heap_trigger(void) +static __init int cf_check register_heap_trigger(void) { register_keyhandler('H', dump_heap, "dump heap info", 1); return 0; diff --git a/xen/common/radix-tree.c b/xen/common/radix-tree.c index 2384655a2e90..628a7e06988f 100644 --- a/xen/common/radix-tree.c +++ b/xen/common/radix-tree.c @@ -744,7 +744,7 @@ static __init unsigned long __maxindex(unsigned int hei= ght) return ~0UL >> shift; } =20 -static __init int radix_tree_init_maxindex(void) +static int __init cf_check radix_tree_init_maxindex(void) { unsigned int i; =20 diff --git a/xen/common/random.c b/xen/common/random.c index fb805b0ecd95..a29f2fcb991a 100644 --- a/xen/common/random.c +++ b/xen/common/random.c @@ -31,7 +31,7 @@ unsigned int get_random(void) return val; } =20 -static int __init init_boot_random(void) +static int __init cf_check init_boot_random(void) { boot_random =3D get_random(); return 0; diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c index f0dd626054a6..f26c7f289539 100644 --- a/xen/common/sched/cpupool.c +++ b/xen/common/sched/cpupool.c @@ -1218,7 +1218,7 @@ static void cpupool_hypfs_init(void) =20 #endif /* CONFIG_HYPFS */ =20 -static int __init cpupool_init(void) +static int __init cf_check cpupool_init(void) { unsigned int cpu; =20 diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c index b90981bb271e..5ce7e3363863 100644 --- a/xen/common/spinlock.c +++ b/xen/common/spinlock.c @@ -508,7 +508,7 @@ void _lock_profile_deregister_struct( spin_unlock(&lock_profile_lock); } =20 -static int __init lock_prof_init(void) +static int __init cf_check lock_prof_init(void) { struct lock_profile **q; =20 diff --git a/xen/common/stop_machine.c b/xen/common/stop_machine.c index 2d5f6aef61ed..8979d553d677 100644 --- a/xen/common/stop_machine.c +++ b/xen/common/stop_machine.c @@ -198,7 +198,7 @@ static struct notifier_block cpu_nfb =3D { .notifier_call =3D cpu_callback }; =20 -static int __init cpu_stopmachine_init(void) +static int __init cf_check cpu_stopmachine_init(void) { unsigned int cpu; for_each_online_cpu ( cpu ) diff --git a/xen/drivers/cpufreq/cpufreq.c b/xen/drivers/cpufreq/cpufreq.c index 36b079296235..e55e202d5a18 100644 --- a/xen/drivers/cpufreq/cpufreq.c +++ b/xen/drivers/cpufreq/cpufreq.c @@ -657,7 +657,7 @@ static struct notifier_block cpu_nfb =3D { .notifier_call =3D cpu_callback }; =20 -static int __init cpufreq_presmp_init(void) +static int __init cf_check cpufreq_presmp_init(void) { register_cpu_notifier(&cpu_nfb); return 0; diff --git a/xen/drivers/cpufreq/cpufreq_misc_governors.c b/xen/drivers/cpu= freq/cpufreq_misc_governors.c index 746bbcd5ff36..8343f491da87 100644 --- a/xen/drivers/cpufreq/cpufreq_misc_governors.c +++ b/xen/drivers/cpufreq/cpufreq_misc_governors.c @@ -116,7 +116,7 @@ struct cpufreq_governor cpufreq_gov_userspace =3D { .handle_option =3D cpufreq_userspace_handle_option }; =20 -static int __init cpufreq_gov_userspace_init(void) +static int __init cf_check cpufreq_gov_userspace_init(void) { unsigned int cpu; =20 @@ -160,7 +160,7 @@ struct cpufreq_governor cpufreq_gov_performance =3D { .governor =3D cpufreq_governor_performance, }; =20 -static int __init cpufreq_gov_performance_init(void) +static int __init cf_check cpufreq_gov_performance_init(void) { return cpufreq_register_governor(&cpufreq_gov_performance); } @@ -199,7 +199,7 @@ struct cpufreq_governor cpufreq_gov_powersave =3D { .governor =3D cpufreq_governor_powersave, }; =20 -static int __init cpufreq_gov_powersave_init(void) +static int __init cf_check cpufreq_gov_powersave_init(void) { return cpufreq_register_governor(&cpufreq_gov_powersave); } diff --git a/xen/drivers/cpufreq/cpufreq_ondemand.c b/xen/drivers/cpufreq/c= pufreq_ondemand.c index 6b905d7cfca8..cabd9ffa8886 100644 --- a/xen/drivers/cpufreq/cpufreq_ondemand.c +++ b/xen/drivers/cpufreq/cpufreq_ondemand.c @@ -356,7 +356,7 @@ struct cpufreq_governor cpufreq_gov_dbs =3D { .handle_option =3D cpufreq_dbs_handle_option }; =20 -static int __init cpufreq_gov_dbs_init(void) +static int __init cf_check cpufreq_gov_dbs_init(void) { return cpufreq_register_governor(&cpufreq_gov_dbs); } diff --git a/xen/drivers/passthrough/amd/iommu.h b/xen/drivers/passthrough/= amd/iommu.h index 93243424e85d..04517c1a024c 100644 --- a/xen/drivers/passthrough/amd/iommu.h +++ b/xen/drivers/passthrough/amd/iommu.h @@ -234,7 +234,7 @@ int amd_iommu_prepare(bool xt); int amd_iommu_init(bool xt); int amd_iommu_init_late(void); int amd_iommu_update_ivrs_mapping_acpi(void); -int iov_adjust_irq_affinities(void); +int cf_check iov_adjust_irq_affinities(void); =20 int amd_iommu_quarantine_init(struct domain *d); =20 diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthr= ough/amd/iommu_init.c index 559a734bdaa5..f1ed75558227 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -808,7 +808,7 @@ static bool_t __init set_iommu_interrupt_handler(struct= amd_iommu *iommu) return 1; } =20 -int iov_adjust_irq_affinities(void) +int cf_check iov_adjust_irq_affinities(void) { const struct amd_iommu *iommu; =20 diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index e3105f90b7fe..036f5c2b1ffa 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1289,7 +1289,7 @@ static void dump_pci_devices(unsigned char ch) pcidevs_unlock(); } =20 -static int __init setup_dump_pcidevs(void) +static int __init cf_check setup_dump_pcidevs(void) { register_keyhandler('Q', dump_pci_devices, "dump PCI devices", 1); return 0; diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/= vtd/iommu.c index b33697e36ba8..ba1ed5761d23 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -2113,7 +2113,7 @@ static void adjust_irq_affinity(struct acpi_drhd_unit= *drhd) spin_unlock_irqrestore(&desc->lock, flags); } =20 -static int adjust_vtd_irq_affinities(void) +static int cf_check adjust_vtd_irq_affinities(void) { struct acpi_drhd_unit *drhd; =20 diff --git a/xen/drivers/passthrough/x86/hvm.c b/xen/drivers/passthrough/x8= 6/hvm.c index 22bf84639f22..ef71c3b92717 100644 --- a/xen/drivers/passthrough/x86/hvm.c +++ b/xen/drivers/passthrough/x86/hvm.c @@ -1072,7 +1072,7 @@ static struct notifier_block cpu_nfb =3D { .notifier_call =3D cpu_callback, }; =20 -static int __init setup_dpci_softirq(void) +static int __init cf_check setup_dpci_softirq(void) { unsigned int cpu; =20 diff --git a/xen/include/asm-x86/hvm/save.h b/xen/include/asm-x86/hvm/save.h index 4efc53505500..e975011ddb71 100644 --- a/xen/include/asm-x86/hvm/save.h +++ b/xen/include/asm-x86/hvm/save.h @@ -115,7 +115,7 @@ void hvm_register_savevm(uint16_t typecode, /* Syntactic sugar around that function: specify the max number of * saves, and this calculates the size of buffer needed */ #define HVM_REGISTER_SAVE_RESTORE(_x, _save, _load, _num, _k) \ -static int __init __hvm_register_##_x##_save_and_restore(void) \ +static int __init cf_check __hvm_register_##_x##_save_and_restore(void) \ { \ hvm_register_savevm(HVM_SAVE_CODE(_x), \ #_x, \ --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930141; cv=none; d=zohomail.com; s=zohoarc; b=aur+YAhf/y2gJ2Pcgdf6eIMGKYOUP0C8Gb7jR6FkK7e+Twhfs754OGK7fA+6kAFgkZ/V9vLUkFYoPWZeRTZCbVu8Az771MeBXqcpllH3c1noKh5LEsfflF0PUpGShJ8a7bVxLpyFHUVee/N2GPmiw98nFyZqmWanINCYpG/zU8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930141; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=c2RAZrVDX1QDHQBm4o4VLzDwdNRAy5olCZHnHy4VoKo=; b=ZErZqmbGyqKPbwrhWl7CayEbD1Gm4A73fPAK5fTir0iByLEKGgUk/4bM58LoLsEz+Rki2hx9zL7GMCD7W7/xbNeSHsC8t/qpNdB44VHNR2Cpib9JD85yyx/o1HuPAu+sRsIwj8LcXzsJPHmXLFc70dxM+bA/ieBwS7G0KMchlVY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637930141154432.79646717814273; Fri, 26 Nov 2021 04:35:41 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232666.403443 (Exim 4.92) (envelope-from ) id 1mqaRS-0001Yu-OH; Fri, 26 Nov 2021 12:35:02 +0000 Received: by outflank-mailman (output) from mailman id 232666.403443; Fri, 26 Nov 2021 12:35:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRS-0001YX-GQ; Fri, 26 Nov 2021 12:35:02 +0000 Received: by outflank-mailman (input) for mailman id 232666; Fri, 26 Nov 2021 12:35:01 +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 1mqaRR-0001F5-9e for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:35:01 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 43b4b394-4eb5-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 13:34:59 +0100 (CET) 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: 43b4b394-4eb5-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930098; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jk0u+NLjbBn13CendvrV78gP6Sc2KoMbuVoCytP69cs=; b=JYW1TivbsqyNb4Ovd5muzYkkxJbZVj9xOB31kO2H00tBYYdzlfuGgWKt 9dJzSDxutBL0Yu2imuAPmiTPalTLMsWjfzXFrkJ24pJA/sci49rJcMAq5 c5BN+uQLibecOco1NgZYs5WbfjmnZuOCaYIW2XGAsWEEhSiVWS1Hqg6Vy g=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 8H2Jlk0IsMH0cIJfrQUi8LpuJgKbPQ002IlxsT+2w4kw4UmkYpuQkj/EDC5pp0R58PejfjNhb0 dlVWNi3J5yxzWS1I3223LzcapbaxxR8kannHaex9OXEgybQ8T8qCHbLizt7ATkMV2rLES5CFvB QUt1dgrGvuGZSVrK3rVrAdmPPH+fQyXnXrApQ7nVjdRe7MJi5C+YBPtL0V8mRVeI/W675hPA5P qsBkUQjasB5KEx1oPpcUUbmjljZN9jwcfVVapK461XdBaAeZ7KbVlU9ZRBGmgSXqDPS+kxZN9t RSpbV1y73nU7uPoyGHzzIEBJ X-SBRS: 5.1 X-MesageID: 58633364 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:qApO/qqhvOAJv3cQYC6esinx1Q5eBmLtYhIvgKrLsJaIsI4StFCzt garIBmDbq2JMDemftEnadiz/UIG7ZWBn9U1QQNkqXoyQXkV9ZuZCYyVIHmrMnLJJKUvbq7GA +byyDXkBJppJpMJjk71atANlZT4vE2xbuKU5NTsY0idfic5Dnd+4f5fs7Rh2Ncx2ILnW1rlV e7a+KUzBnf0g1aYDUpMg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZdhMUdrJ8DO+iL 9sv+Znilo/vE7XBPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XnRfTAKtao2zhojx/9 DlCnZytbQYuGPOPocRHTDB5LX9nE5MFwZaSdBBTseTLp6HHW37lwvEoB0AqJ4wIvO1wBAmi9 9RBdmpLNErawbvrnvTrEYGAhex6RCXvFKoZtmtt0nfyCvE+TIqYa67L+cVZzHE7gcUm8fP2O ppHMmE0MkiojxtnIGcUEalntrySq2TSdjZStUvWu4cp2j2GpOB2+Oe0a4eEEjCQfu1Kmm6Iq 2SA+H72ajkYKdiexDyt4n+qwOjVkkvTQ5kOHbe18vprhly7xWEJDhASE1yhrpGRmkO4Ht5SN UEQ0i4vtrQpslymSMHnWB+1q2LCuQQTM/JyOeAn7ACGyoLP/h2UQGMDS1Z8hMcO7ZFsA2Zwj xnQwo2vVWcHXKCppWy19qqwrDSUZ2ssDTUdTA46ExIr3ZraidRm5v7QdepLHKmwh9zzPDj/x TGWsSQz74kuYd43O7aTpg6e3W/1znTdZktsv1iMADr5hu9sTNf9P9TA1LTN0RpXwG91pHGlt WNMpcWR5ftm4XqlxH3UG7Vl8F1ECp+43NzgbbxHQ8ZJG9eFoSfLkWVsDNdWfxwB3iEsI2KBX aMrkVkNjKK/xVPzBUONX6q/Ct4x0Y/rHsn/W/bfY7JmO8YqK1/ZoX4/ORDMhAgBdXTAd4lkY v93lu72UB4n5VlPlmLqF4/xL5d3rszB+Y8jbc+ilEn2uVZvTHWUVa0EIDOzghMRt8u5TPHu2 48HbaOikkwHOMWnO3W/2dNDfDgicClgbbir+pM/SwJ2Clc/cI3XI6SKmu1Jlk0Mt/k9q9okC VnhABIFkwSm2iWcQehIA1g6AI7SsV9EhSpTFUQR0ZyAgRDPuK6js/UScYUZZ74i+LAxxPJ4V aBdKc6BHu5OWnLM/DFENcvxq4lrdRKKgwOSPnX6PGhjLsA4HwGZqMX5egbP9TUVCnblv8UJv LD9hBjQRoAORlo+AZ+OOu6v1V64oVMUhPl2AxnTOtBWdUi1qNpqJiX9g+UZOcYJLRmflDKW2 xzPWUUTpPXXop9z+97M3PjWo4CsGup4P0xbA2iEsurmaXiEpjKumNYSXvyJcDbRUHLP1J+jP egFnevhNPAnnUpRt9YuGbhc0q9jtcDkoKVXz1o4ESyTPUirEL5pPlKPwdJL6v9W3rZctAa7B hCP991dNenbMc/pCgdMdg8sb+DF3vAIgDjCq/8yJRyitiNw+bOGV2RUPgWN13MBfOckbtt9z LdzotMS5iy+lgEuY4SPgS1j/miRKmANDvc8vZYADY630gcmxzmuu3AH5vMaNH1XV+hxDw== IronPort-HdrOrdr: A9a23:/oTs6q2E1DxZ1fotO3T4iwqjBIgkLtp133Aq2lEZdPRUGvb4qy nIpoVi6faUskdpZJhOo6HiBEDtexzhHNtOkO0s1NSZLW/bUQmTXeNfBOLZqlWKcUCTygce79 YGT0EXMqyKMbEQt6bHCWeDferIuOP3lZyVuQ== X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="58633364" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 07/65] xen: Annotate fnptr targets from notifier callbacks Date: Fri, 26 Nov 2021 12:33:48 +0000 Message-ID: <20211126123446.32324-8-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930142409100009 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/acpi/cpu_idle.c | 2 +- xen/arch/x86/cpu/mcheck/mce.c | 2 +- xen/arch/x86/cpu/mcheck/mce_intel.c | 2 +- xen/arch/x86/cpu/mwait-idle.c | 4 ++-- xen/arch/x86/cpu/vpmu.c | 2 +- xen/arch/x86/genapic/x2apic.c | 2 +- xen/arch/x86/hvm/hvm.c | 2 +- xen/arch/x86/nmi.c | 2 +- xen/arch/x86/percpu.c | 2 +- xen/arch/x86/psr.c | 2 +- xen/arch/x86/smpboot.c | 2 +- xen/common/debugtrace.c | 4 ++-- xen/common/kexec.c | 2 +- xen/common/livepatch.c | 2 +- xen/common/rcupdate.c | 2 +- xen/common/sched/core.c | 2 +- xen/common/sched/cpupool.c | 2 +- xen/common/stop_machine.c | 2 +- xen/common/tasklet.c | 2 +- xen/common/timer.c | 2 +- xen/common/trace.c | 2 +- xen/drivers/cpufreq/cpufreq.c | 2 +- xen/drivers/cpufreq/cpufreq_misc_governors.c | 2 +- xen/drivers/passthrough/x86/hvm.c | 2 +- 24 files changed, 26 insertions(+), 26 deletions(-) diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index 7902ccce6b98..fb47eb9ad68e 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -1622,7 +1622,7 @@ bool cpuidle_using_deep_cstate(void) : ACPI_STAT= E_C1); } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index ea86d84481b2..a449fa0424ce 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -733,7 +733,7 @@ static int cpu_bank_alloc(unsigned int cpu) return 0; } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/= mce_intel.c index bb9f3a3ff795..343bdb3a22ef 100644 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c @@ -921,7 +921,7 @@ static int cpu_mcabank_alloc(unsigned int cpu) return -ENOMEM; } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/arch/x86/cpu/mwait-idle.c b/xen/arch/x86/cpu/mwait-idle.c index d1739f6fc3cf..f2444bcff146 100644 --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -1195,8 +1195,8 @@ static int __init mwait_idle_probe(void) return 0; } =20 -static int mwait_idle_cpu_init(struct notifier_block *nfb, - unsigned long action, void *hcpu) +static int cf_check mwait_idle_cpu_init( + struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu, cstate; struct acpi_processor_power *dev =3D processor_powers[cpu]; diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c index c23e66d04c02..fec94a00e9a2 100644 --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -841,7 +841,7 @@ long cf_check do_xenpmu_op( return ret; } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c index 9064a0ca4696..bd44bb753995 100644 --- a/xen/arch/x86/genapic/x2apic.c +++ b/xen/arch/x86/genapic/x2apic.c @@ -187,7 +187,7 @@ static const struct genapic __initconstrel apic_x2apic_= cluster =3D { .send_IPI_self =3D send_IPI_self_x2apic }; =20 -static int update_clusterinfo( +static int cf_check update_clusterinfo( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 7af11656dcfd..0e935be1d772 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -117,7 +117,7 @@ static const char __initconst warning_hvm_fep[] =3D static bool_t __initdata opt_altp2m_enabled =3D 0; boolean_param("altp2m", opt_altp2m_enabled); =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index 21e947a46f24..5c101a9f97b3 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -428,7 +428,7 @@ void setup_apic_nmi_watchdog(void) nmi_active =3D 1; } =20 -static int cpu_nmi_callback( +static int cf_check cpu_nmi_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/arch/x86/percpu.c b/xen/arch/x86/percpu.c index 0e0b6577ca45..eb3ba7bc8874 100644 --- a/xen/arch/x86/percpu.c +++ b/xen/arch/x86/percpu.c @@ -63,7 +63,7 @@ static void free_percpu_area(unsigned int cpu) call_rcu(&info->rcu, _free_percpu_area); } =20 -static int cpu_percpu_callback( +static int cf_check cpu_percpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index 9a3670afc341..5b9991bd5b12 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -1642,7 +1642,7 @@ static void psr_cpu_fini(unsigned int cpu) free_socket_resources(socket); } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { int rc =3D 0; diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index 329cfdb6c9f6..2b452dab9e75 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -1109,7 +1109,7 @@ static int cpu_smpboot_alloc(unsigned int cpu) return rc; } =20 -static int cpu_smpboot_callback( +static int cf_check cpu_smpboot_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/common/debugtrace.c b/xen/common/debugtrace.c index f3c0fd8aa17b..160d00b79607 100644 --- a/xen/common/debugtrace.c +++ b/xen/common/debugtrace.c @@ -263,8 +263,8 @@ static void debugtrace_alloc_buffer(struct debugtrace_d= ata **ptr, *ptr =3D data; } =20 -static int debugtrace_cpu_callback(struct notifier_block *nfb, - unsigned long action, void *hcpu) +static int cf_check debugtrace_cpu_callback( + struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; =20 diff --git a/xen/common/kexec.c b/xen/common/kexec.c index 36384f782db3..3b223cd03d75 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -531,7 +531,7 @@ static int kexec_init_cpu_notes(const unsigned long cpu) return ret; } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned long cpu =3D (unsigned long)hcpu; diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index 33708b4e2388..701efd87a173 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -2124,7 +2124,7 @@ static void livepatch_printall(unsigned char key) spin_unlock(&payload_lock); } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c index a5a27af3def0..2ec5606de5dd 100644 --- a/xen/common/rcupdate.c +++ b/xen/common/rcupdate.c @@ -641,7 +641,7 @@ static void rcu_init_percpu_data(int cpu, struct rcu_ct= rlblk *rcp, init_timer(&rdp->idle_timer, rcu_idle_timer_handler, rdp, cpu); } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 0f527024ba2e..4a79971a1d45 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -2839,7 +2839,7 @@ void sched_rm_cpu(unsigned int cpu) cpu_schedule_down(cpu); } =20 -static int cpu_schedule_callback( +static int cf_check cpu_schedule_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c index f26c7f289539..e5cfb03b857e 100644 --- a/xen/common/sched/cpupool.c +++ b/xen/common/sched/cpupool.c @@ -985,7 +985,7 @@ void dump_runq(unsigned char key) spin_unlock(&cpupool_lock); } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/common/stop_machine.c b/xen/common/stop_machine.c index 8979d553d677..a122bd4afe09 100644 --- a/xen/common/stop_machine.c +++ b/xen/common/stop_machine.c @@ -182,7 +182,7 @@ static void stopmachine_action(void *data) local_irq_enable(); } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/common/tasklet.c b/xen/common/tasklet.c index ac89511a0955..1b16bbcdeb0b 100644 --- a/xen/common/tasklet.c +++ b/xen/common/tasklet.c @@ -214,7 +214,7 @@ void softirq_tasklet_init(struct tasklet *t, void (*fun= c)(void *), void *data) t->is_softirq =3D 1; } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/common/timer.c b/xen/common/timer.c index 1bb265ceea0e..b788050ea1d8 100644 --- a/xen/common/timer.c +++ b/xen/common/timer.c @@ -637,7 +637,7 @@ static void free_percpu_timers(unsigned int cpu) ASSERT(ts->heap =3D=3D dummy_heap); } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/common/trace.c b/xen/common/trace.c index a2a389a1c7c3..0886be089bea 100644 --- a/xen/common/trace.c +++ b/xen/common/trace.c @@ -79,7 +79,7 @@ static u32 tb_event_mask =3D TRC_ALL; * i.e., sizeof(_type) * ans >=3D _x. */ #define fit_to_type(_type, _x) (((_x)+sizeof(_type)-1) / sizeof(_type)) =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/drivers/cpufreq/cpufreq.c b/xen/drivers/cpufreq/cpufreq.c index e55e202d5a18..a94520ee57ac 100644 --- a/xen/drivers/cpufreq/cpufreq.c +++ b/xen/drivers/cpufreq/cpufreq.c @@ -632,7 +632,7 @@ static int __init cpufreq_cmdline_parse(const char *s) return rc; } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/drivers/cpufreq/cpufreq_misc_governors.c b/xen/drivers/cpu= freq/cpufreq_misc_governors.c index 8343f491da87..ad79d0f5d246 100644 --- a/xen/drivers/cpufreq/cpufreq_misc_governors.c +++ b/xen/drivers/cpufreq/cpufreq_misc_governors.c @@ -91,7 +91,7 @@ cpufreq_userspace_handle_option(const char *name, const c= har *val) return 0; } =20 -static int cpufreq_userspace_cpu_callback( +static int cf_check cpufreq_userspace_cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; diff --git a/xen/drivers/passthrough/x86/hvm.c b/xen/drivers/passthrough/x8= 6/hvm.c index ef71c3b92717..fef350ef3a1d 100644 --- a/xen/drivers/passthrough/x86/hvm.c +++ b/xen/drivers/passthrough/x86/hvm.c @@ -1042,7 +1042,7 @@ static void dpci_softirq(void) } } =20 -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu =3D (unsigned long)hcpu; --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930143; cv=none; d=zohomail.com; s=zohoarc; b=OgRQGwHqDeYrnO7kvKQ/EPUzJg0yyxRzJ61amAul/ftSNmJiPQUBGmzKXzVOlUnUlPcY/s1MaS5YoVVetr/7MPOiRvKMTixj58KVZ+nqqtAE039fVMu+HpkV+jEYp8C1XrZ/de8wxdkNB6TDHS0Rryaq54hIYjAZLqM9X+dY8DY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930143; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=R2usscHoO/SA+4Jlb+LJkPVPsw/lSieD1Nxnc5tDrEA=; b=ie8n0bKjiGBsHSbFFhjDXQ41yQE6QUIwQxxzWyfeyLXPhN8F6lPih4zgaLeMh/Q0OM5fnKBt96r8DsRa3xWzJCMpx3tQwBkIsvGQWyATuGNOFv3ZpCeGUYHLTPqAEf0nyTcRQaI7fzZ0d82ZOu2nLJZb77ThtqsqWxAckZgGS4Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637930143923186.78649034787088; Fri, 26 Nov 2021 04:35:43 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232669.403470 (Exim 4.92) (envelope-from ) id 1mqaRV-0002Ah-0Y; Fri, 26 Nov 2021 12:35:05 +0000 Received: by outflank-mailman (output) from mailman id 232669.403470; Fri, 26 Nov 2021 12:35:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRU-00028x-Q6; Fri, 26 Nov 2021 12:35:04 +0000 Received: by outflank-mailman (input) for mailman id 232669; Fri, 26 Nov 2021 12:35:03 +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 1mqaRT-0001F5-2f for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:35:03 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 4573f90b-4eb5-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 13:35:00 +0100 (CET) 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: 4573f90b-4eb5-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930101; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=s5eMYscCP90nHplpIvN4kyBrObzvO7RFLbbwLJlbTOM=; b=RhUGJwdnQml5TmdXKLIOktgf6tRg8baBWfCLrqCwQ8RK4VneXT0AyJ3L VZs3OMSYJBYZjjYQpGPz4Qg40a+weL39fEkfUKz3GkM/KTpgw6zyjfPua JmpSdUPDlSV/LbPBmYANovKO+Vu0qu97zJfU4NwxPSpZrGYtaWOQ9VT4/ c=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: EbDdcOCaG8WfQ7csQtJWO+naDXPjJu0Ngdud4/gHiziS/lQcasq4bQAgbMK4mwNJ9+YvD+qg7J 48D1Yfr8cVYhiVY38xvtchwSBGH2AHM2LS5kYFOEPi6rRBuNMTywE17npUJ7siZoWhw4BW2fIh Mr8mFKk6Jih7kGPafuiFVQfYwUft1qbIN0oSdZVzGWQ3+qEpLh0VKk+Yy0XXSNyZkvIUKRXvBu tZF9shOAxy4T1LkEXRPaYQRso7iD7l4x+Ltepo/wO7CMg05KktlilZRpjrDIs86upBhMoktAWp 7bOEylVDOJizCtfyGq9haNUj X-SBRS: 5.1 X-MesageID: 59062303 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:2mGyGKJGLgCkNfRsFE+RJJIlxSXFcZb7ZxGr2PjKsXjdYENS0T0Ey GpOWzvQOviOYjPyeth3O9uzoUtQsJ+EzYVhTgBlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es5xbZg6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2Rzopw5 /RKhKatdhwCN7zptM4eWCVxRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Gph3p4URq6FD yYfQSRrPQvObTJmAXg0Oc8kmcG62H3DfAQN/Tp5ooJoujOOnWSdyoPFL979atGMA8JPkS6wp H/C/mn/KgEXMpqY0zXt2mm3mubFkCf/WYQTPL617PhnhBuU3GN7IA0bUx63rOe0jma6WslDM AoE9yw2t68w+Ue3CN7nUHWQglSJoxodUNp4CPAh5UeGza+83uqCLjFaFHgbMoVg7ZJoA2xxv rOUoz/3LSQ+6ry6aHWszKqrthi7KA05B2wJWQZRGGPp/OLfiI00ixvOSPNqH6i0ksD5FFnM/ tyakMQtr+5N1JBWjs1X6XiC2mvx/caREmbZ8y2OBjr9hj6VcrJJcGBBBbLzyf9bZLiUQVCa1 JTvs5jPtbteZX1hecHkfQnsIF1Lz6raWNE/qQQ2d3XEy9hL0yX4FWy3yGsjTHqFyu5eJVfUj Lb74Gu9HqN7MnqwdrNQaImsEcksxqWIPY27Da+EMIcRM8QvKFTvEMRSiai4hDuFfK8Ey/xXB HtmWZz0USZy5VpPkFJauNvxIZd0n3tjlAs/tLjwzgi90Kr2WZJmYextDbd6VchgtPnsiFyMq 753bpLWoz0CALyWSnSGquY7cAFVRUXX8Lir8qS7gMbYeVE4cIzgYteMqY4cl3tNw/4Iy7yWp y7lASe1CjPX3BX6FOlDUVg7AJuHYHq1hStT0fUEMQn61n49T5yo6atDJZI7caN+rL5ozOJuT ulDcMKFW6wdRjPC8jUbTJ/8sI09K0j72VPQZ3KoMGolYpptZw3V4du4LAHhwzYDU3isvswkr rz+ig6CGcgfRx5vBdr9Ye60yw/jpmAUne9/BhOaItRadEj23pJtLij90q0+L80WcE2RzTqGz QeGRxwfoLCV8YMy9dDIg4GCrpuoTLQiThYLQTGD4O/vZyfA/2elzYtRa8qyfGjQBDHu5aGvR eRJ1PWgYvcJq0lH7thnGLFxwKNgu9a2/+1Gzh5pFWngZkiwDu8yOWGP2MRCu/EfxrJdvgfqC EuD9sMDZOeMMcLhVlUQOBAkfqKI0vRNwmve6vE8IUPb4i5r/eXYDRUObkfU0CENfqFoNI4Fw Ps6vJ9E4gOyvRMmL9Kag30G7G+LNHEBD/0qu5xy7FUHUeb3JoWuuaDhNxI= IronPort-HdrOrdr: A9a23:rKG69Kmd15tfHxegMbj0J+OFyRXpDfIU3DAbv31ZSRFFG/Fxl6 iV8sjzsiWE8Qr5OUtQ/+xoV5PhfZqxz/JICMwqTNKftWrdyQyVxeNZnOjfKlTbckWUnINgPO VbAsxD4bXLfCBHZK3BgTVQfexO/DD+ytHLudvj X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="59062303" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 08/65] xen: Annotate fnptr targets from acpi_table_parse() Date: Fri, 26 Nov 2021 12:33:49 +0000 Message-ID: <20211126123446.32324-9-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930145007100014 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/acpi/boot.c | 24 ++++++++++++------------ xen/arch/x86/hvm/dom0_build.c | 16 ++++++++-------- xen/arch/x86/srat.c | 4 ++-- xen/arch/x86/tboot.c | 2 +- xen/arch/x86/x86_64/acpi_mmcfg.c | 2 +- xen/arch/x86/x86_64/mmconfig.h | 2 +- xen/drivers/acpi/apei/hest.c | 4 ++-- xen/drivers/acpi/numa.c | 10 +++++----- xen/drivers/passthrough/amd/iommu_acpi.c | 9 +++++---- xen/drivers/passthrough/pci.c | 3 ++- xen/drivers/passthrough/vtd/dmar.c | 2 +- xen/include/asm-x86/tboot.h | 2 +- xen/include/xen/acpi.h | 2 +- 13 files changed, 42 insertions(+), 40 deletions(-) diff --git a/xen/arch/x86/acpi/boot.c b/xen/arch/x86/acpi/boot.c index 24702d041c9c..43953b385533 100644 --- a/xen/arch/x86/acpi/boot.c +++ b/xen/arch/x86/acpi/boot.c @@ -60,7 +60,7 @@ static u64 acpi_lapic_addr __initdata =3D APIC_DEFAULT_PH= YS_BASE; Boot-time Configuration -----------------------------------------------------------------------= --- */ =20 -static int __init acpi_parse_madt(struct acpi_table_header *table) +static int __init cf_check acpi_parse_madt(struct acpi_table_header *table) { struct acpi_table_madt *madt =3D container_of(table, struct acpi_table_madt, header); @@ -77,7 +77,7 @@ static int __init acpi_parse_madt(struct acpi_table_heade= r *table) return 0; } =20 -static int __init +static int __init cf_check acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long= end) { struct acpi_madt_local_x2apic *processor =3D @@ -133,7 +133,7 @@ acpi_parse_x2apic(struct acpi_subtable_header *header, = const unsigned long end) return 0; } =20 -static int __init +static int __init cf_check acpi_parse_lapic(struct acpi_subtable_header * header, const unsigned long= end) { struct acpi_madt_local_apic *processor =3D @@ -171,7 +171,7 @@ acpi_parse_lapic(struct acpi_subtable_header * header, = const unsigned long end) return 0; } =20 -static int __init +static int __init cf_check acpi_parse_lapic_addr_ovr(struct acpi_subtable_header * header, const unsigned long end) { @@ -187,7 +187,7 @@ acpi_parse_lapic_addr_ovr(struct acpi_subtable_header *= header, return 0; } =20 -static int __init +static int __init cf_check acpi_parse_x2apic_nmi(struct acpi_subtable_header *header, const unsigned long end) { @@ -206,7 +206,7 @@ acpi_parse_x2apic_nmi(struct acpi_subtable_header *head= er, return 0; } =20 -static int __init +static int __init cf_check acpi_parse_lapic_nmi(struct acpi_subtable_header * header, const unsigned = long end) { struct acpi_madt_local_apic_nmi *lapic_nmi =3D @@ -223,7 +223,7 @@ acpi_parse_lapic_nmi(struct acpi_subtable_header * head= er, const unsigned long e return 0; } =20 -static int __init +static int __init cf_check acpi_parse_ioapic(struct acpi_subtable_header * header, const unsigned lon= g end) { struct acpi_madt_io_apic *ioapic =3D @@ -240,7 +240,7 @@ acpi_parse_ioapic(struct acpi_subtable_header * header,= const unsigned long end) return 0; } =20 -static int __init +static int __init cf_check acpi_parse_int_src_ovr(struct acpi_subtable_header * header, const unsigned long end) { @@ -267,7 +267,7 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * he= ader, return 0; } =20 -static int __init +static int __init cf_check acpi_parse_nmi_src(struct acpi_subtable_header * header, const unsigned lo= ng end) { struct acpi_madt_nmi_source *nmi_src =3D @@ -283,7 +283,7 @@ acpi_parse_nmi_src(struct acpi_subtable_header * header= , const unsigned long end return 0; } =20 -static int __init acpi_parse_hpet(struct acpi_table_header *table) +static int __init cf_check acpi_parse_hpet(struct acpi_table_header *table) { const struct acpi_table_hpet *hpet_tbl =3D container_of(table, const struct acpi_table_hpet, header); @@ -319,7 +319,7 @@ static int __init acpi_parse_hpet(struct acpi_table_hea= der *table) return 0; } =20 -static int __init acpi_invalidate_bgrt(struct acpi_table_header *table) +static int __init cf_check acpi_invalidate_bgrt(struct acpi_table_header *= table) { struct acpi_table_bgrt *bgrt_tbl =3D container_of(table, struct acpi_table_bgrt, header); @@ -472,7 +472,7 @@ acpi_fadt_parse_sleep_info(const struct acpi_table_fadt= *fadt) acpi_sinfo.wakeup_vector, acpi_sinfo.vector_width); } =20 -static int __init acpi_parse_fadt(struct acpi_table_header *table) +static int __init cf_check acpi_parse_fadt(struct acpi_table_header *table) { const struct acpi_table_fadt *fadt =3D container_of(table, const struct acpi_table_fadt, header); diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index 43e1bf12488a..a3c47de3c7e5 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -737,15 +737,15 @@ static int __init pvh_setup_cpus(struct domain *d, pa= ddr_t entry, return 0; } =20 -static int __init acpi_count_intr_ovr(struct acpi_subtable_header *header, - const unsigned long end) +static int __init cf_check acpi_count_intr_ovr( + struct acpi_subtable_header *header, const unsigned long end) { acpi_intr_overrides++; return 0; } =20 -static int __init acpi_set_intr_ovr(struct acpi_subtable_header *header, - const unsigned long end) +static int __init cf_check acpi_set_intr_ovr( + struct acpi_subtable_header *header, const unsigned long end) { const struct acpi_madt_interrupt_override *intr =3D container_of(header, struct acpi_madt_interrupt_override, header); @@ -756,15 +756,15 @@ static int __init acpi_set_intr_ovr(struct acpi_subta= ble_header *header, return 0; } =20 -static int __init acpi_count_nmi_src(struct acpi_subtable_header *header, - const unsigned long end) +static int __init cf_check acpi_count_nmi_src( + struct acpi_subtable_header *header, const unsigned long end) { acpi_nmi_sources++; return 0; } =20 -static int __init acpi_set_nmi_src(struct acpi_subtable_header *header, - const unsigned long end) +static int __init cf_check acpi_set_nmi_src( + struct acpi_subtable_header *header, const unsigned long end) { const struct acpi_madt_nmi_source *src =3D container_of(header, struct acpi_madt_nmi_source, header); diff --git a/xen/arch/x86/srat.c b/xen/arch/x86/srat.c index 6b77b9820195..cfe24c7e781c 100644 --- a/xen/arch/x86/srat.c +++ b/xen/arch/x86/srat.c @@ -407,8 +407,8 @@ void __init acpi_numa_arch_fixup(void) {} =20 static uint64_t __initdata srat_region_mask; =20 -static int __init srat_parse_region(struct acpi_subtable_header *header, - const unsigned long end) +static int __init cf_check srat_parse_region( + struct acpi_subtable_header *header, const unsigned long end) { struct acpi_srat_mem_affinity *ma; =20 diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c index 529367ed8167..fe1abfdf08ff 100644 --- a/xen/arch/x86/tboot.c +++ b/xen/arch/x86/tboot.c @@ -450,7 +450,7 @@ int __init tboot_protect_mem_regions(void) return 1; } =20 -int __init tboot_parse_dmar_table(acpi_table_handler dmar_handler) +int __init cf_check tboot_parse_dmar_table(acpi_table_handler dmar_handler) { int rc; uint64_t size; diff --git a/xen/arch/x86/x86_64/acpi_mmcfg.c b/xen/arch/x86/x86_64/acpi_mm= cfg.c index 0db8f57abbed..2159c68189e4 100644 --- a/xen/arch/x86/x86_64/acpi_mmcfg.c +++ b/xen/arch/x86/x86_64/acpi_mmcfg.c @@ -68,7 +68,7 @@ static int __init acpi_mcfg_check_entry(struct acpi_table= _mcfg *mcfg, return -EINVAL; } =20 -int __init acpi_parse_mcfg(struct acpi_table_header *header) +int __init cf_check acpi_parse_mcfg(struct acpi_table_header *header) { struct acpi_table_mcfg *mcfg; unsigned long i; diff --git a/xen/arch/x86/x86_64/mmconfig.h b/xen/arch/x86/x86_64/mmconfig.h index 4d3b9fcbdd3c..433046be663a 100644 --- a/xen/arch/x86/x86_64/mmconfig.h +++ b/xen/arch/x86/x86_64/mmconfig.h @@ -76,7 +76,7 @@ static inline void mmio_config_writel(void __iomem *pos, = u32 val) =20 /* function prototypes */ struct acpi_table_header; -int acpi_parse_mcfg(struct acpi_table_header *header); +int cf_check acpi_parse_mcfg(struct acpi_table_header *header); int pci_mmcfg_reserved(uint64_t address, unsigned int segment, unsigned int start_bus, unsigned int end_bus, unsigned int flags); diff --git a/xen/drivers/acpi/apei/hest.c b/xen/drivers/acpi/apei/hest.c index c5f3aaab7c4e..5881275d2f37 100644 --- a/xen/drivers/acpi/apei/hest.c +++ b/xen/drivers/acpi/apei/hest.c @@ -128,8 +128,8 @@ int apei_hest_parse(apei_hest_func_t func, void *data) * Check if firmware advertises firmware first mode. We need FF bit to be = set * along with a set of MC banks which work in FF mode. */ -static int __init hest_parse_cmc(const struct acpi_hest_header *hest_hdr, - void *data) +static int __init cf_check hest_parse_cmc( + const struct acpi_hest_header *hest_hdr, void *data) { #ifdef CONFIG_X86_MCE unsigned int i; diff --git a/xen/drivers/acpi/numa.c b/xen/drivers/acpi/numa.c index 85f891757c21..bc6e888234e4 100644 --- a/xen/drivers/acpi/numa.c +++ b/xen/drivers/acpi/numa.c @@ -112,14 +112,14 @@ void __init acpi_table_print_srat_entry(struct acpi_s= ubtable_header * header) } } =20 -static int __init acpi_parse_slit(struct acpi_table_header *table) +static int __init cf_check acpi_parse_slit(struct acpi_table_header *table) { acpi_numa_slit_init((struct acpi_table_slit *)table); =20 return 0; } =20 -static int __init +static int __init cf_check acpi_parse_x2apic_affinity(struct acpi_subtable_header *header, const unsigned long end) { @@ -138,7 +138,7 @@ acpi_parse_x2apic_affinity(struct acpi_subtable_header = *header, return 0; } =20 -static int __init +static int __init cf_check acpi_parse_processor_affinity(struct acpi_subtable_header *header, const unsigned long end) { @@ -156,7 +156,7 @@ acpi_parse_processor_affinity(struct acpi_subtable_head= er *header, return 0; } =20 -static int __init +static int __init cf_check acpi_parse_memory_affinity(struct acpi_subtable_header *header, const unsigned long end) { @@ -174,7 +174,7 @@ acpi_parse_memory_affinity(struct acpi_subtable_header = *header, return 0; } =20 -int __init acpi_parse_srat(struct acpi_table_header *table) +int __init cf_check acpi_parse_srat(struct acpi_table_header *table) { if (!table) return -EINVAL; diff --git a/xen/drivers/passthrough/amd/iommu_acpi.c b/xen/drivers/passthr= ough/amd/iommu_acpi.c index 5ea227732821..3a7931458944 100644 --- a/xen/drivers/passthrough/amd/iommu_acpi.c +++ b/xen/drivers/passthrough/amd/iommu_acpi.c @@ -1078,7 +1078,7 @@ static inline bool_t is_ivmd_block(u8 type) type =3D=3D ACPI_IVRS_TYPE_MEMORY_IOMMU); } =20 -static int __init parse_ivrs_table(struct acpi_table_header *table) +static int __init cf_check parse_ivrs_table(struct acpi_table_header *tabl= e) { const struct acpi_ivrs_header *ivrs_block; unsigned long length; @@ -1170,7 +1170,7 @@ static int __init parse_ivrs_table(struct acpi_table_= header *table) return error; } =20 -static int __init detect_iommu_acpi(struct acpi_table_header *table) +static int __init cf_check detect_iommu_acpi(struct acpi_table_header *tab= le) { const struct acpi_ivrs_header *ivrs_block; unsigned long length =3D sizeof(struct acpi_table_ivrs); @@ -1264,7 +1264,8 @@ static int __init get_last_bdf_ivhd( return last_bdf; } =20 -static int __init get_last_bdf_acpi(struct acpi_table_header *table) +static int __init cf_check cf_check get_last_bdf_acpi( + struct acpi_table_header *table) { const struct acpi_ivrs_header *ivrs_block; unsigned long length =3D sizeof(struct acpi_table_ivrs); @@ -1306,7 +1307,7 @@ int __init amd_iommu_update_ivrs_mapping_acpi(void) return acpi_table_parse(ACPI_SIG_IVRS, parse_ivrs_table); } =20 -static int __init +static int __init cf_check get_supported_ivhd_type(struct acpi_table_header *table) { size_t length =3D sizeof(struct acpi_table_ivrs); diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 036f5c2b1ffa..e75c82d11bd6 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1218,7 +1218,8 @@ static bool_t hest_source_is_pcie_aer(const struct ac= pi_hest_header *hest_hdr) return 0; } =20 -static int aer_hest_parse(const struct acpi_hest_header *hest_hdr, void *d= ata) +static int cf_check aer_hest_parse( + const struct acpi_hest_header *hest_hdr, void *data) { struct aer_hest_parse_info *info =3D data; const struct acpi_hest_aer_common *p; diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/v= td/dmar.c index b152f3da916b..b8e91f5be1ae 100644 --- a/xen/drivers/passthrough/vtd/dmar.c +++ b/xen/drivers/passthrough/vtd/dmar.c @@ -767,7 +767,7 @@ acpi_parse_one_rhsa(struct acpi_dmar_header *header) return ret; } =20 -static int __init acpi_parse_dmar(struct acpi_table_header *table) +static int __init cf_check acpi_parse_dmar(struct acpi_table_header *table) { struct acpi_table_dmar *dmar; struct acpi_dmar_header *entry_header; diff --git a/xen/include/asm-x86/tboot.h b/xen/include/asm-x86/tboot.h index bfeed1542fa3..818d5fa45132 100644 --- a/xen/include/asm-x86/tboot.h +++ b/xen/include/asm-x86/tboot.h @@ -124,7 +124,7 @@ void tboot_probe(void); void tboot_shutdown(uint32_t shutdown_type); int tboot_in_measured_env(void); int tboot_protect_mem_regions(void); -int tboot_parse_dmar_table(acpi_table_handler dmar_handler); +int cf_check tboot_parse_dmar_table(acpi_table_handler dmar_handler); int tboot_s3_resume(void); void tboot_s3_error(int error); int tboot_wake_ap(int apicid, unsigned long sipi_vec); diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h index 088c238a504a..c82d5367bfb5 100644 --- a/xen/include/xen/acpi.h +++ b/xen/include/xen/acpi.h @@ -90,7 +90,7 @@ struct acpi_subtable_header *acpi_table_get_entry_madt(en= um acpi_madt_type id, int acpi_table_parse_madt(enum acpi_madt_type id, acpi_table_entry_handler= handler, unsigned int max_entries); int acpi_table_parse_srat(int id, acpi_madt_entry_handler handler, unsigned int max_entries); -int acpi_parse_srat(struct acpi_table_header *); +int cf_check acpi_parse_srat(struct acpi_table_header *); void acpi_table_print (struct acpi_table_header *header, unsigned long phy= s_addr); void acpi_table_print_madt_entry (struct acpi_subtable_header *madt); void acpi_table_print_srat_entry (struct acpi_subtable_header *srat); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637930139; cv=none; d=zohomail.com; s=zohoarc; b=HQR45jndRnaj7r8mj6an1rOcJhUtIsAlobGfR+q3uydFEoW+iWfdy0wYoGc1QR0OBD5VlVbjPKOfceTEtwB2GYlQqxEMPJ13T9DFw18hTN+CkFeJ2GJLMmiUPeSITru5rR3yrzkmY2Hulj55pqcsd+DXSUfldbTgKUhTTcH/SAM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637930139; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EuxKR7ZTkVQh2ouOBFdRQaSxO/6Nt3QOyiT5zMebfJA=; b=kIEy2rrK589zh4u5m688FCm6qpFhlL7QSal+E4YYdtWyFdQmQKqecwfYCnZYhiCLuM9EAREiLrLN/GRXCKVlyTUiLkjZBIoCHRidXI7JsoRE5yOHGSr8VdUrsKbjr5YKyARgOOMmquakH0bWa8Hn12bxi5s87EJwnLN6d67L/ks= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637930139675478.2310533260626; Fri, 26 Nov 2021 04:35:39 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232668.403466 (Exim 4.92) (envelope-from ) id 1mqaRU-00024s-LF; Fri, 26 Nov 2021 12:35:04 +0000 Received: by outflank-mailman (output) from mailman id 232668.403466; Fri, 26 Nov 2021 12:35:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRU-00024E-CS; Fri, 26 Nov 2021 12:35:04 +0000 Received: by outflank-mailman (input) for mailman id 232668; Fri, 26 Nov 2021 12:35:02 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaRS-0001V1-I3 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 12:35:02 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 44a49d7c-4eb5-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 13:35:00 +0100 (CET) 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: 44a49d7c-4eb5-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637930100; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Qgn5PSV9toabG8yFC4pdYZE+HLsve0cHhkGJ4oxeMt0=; b=IyTI4mm882ye1Afo+OJGCfAUevffp5219E0e0qDxNlymhdDJ800J6UYC u/syTskDOYKM18gYTkVx/i6rRWV+1WQrELsncK5kE79IJZ/ZkoR1+SOUl 0gUo2kJ9X3C5L7y/VwIET9Gw8P0Wkmi7zi6VNTsmnvYDSerFglDQ3Q7ub E=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: C44HcGRNmC3vEaJB0gXgj+JIfu8isG7iXQMgaBHAr5McDWPs2uK9Zjhv6HW4D6Xxs2DvHCrx26 o5NCuGfeUdqNfIEHGKSwTSogj1WjVzWyJbDEHCzcOgv7rqdj82464aVDo2PwygKNQftGTnQPlY uRwJClZgIpmlIvVsbkDNaGKxgRKp+yE9WS75ffQAVEh8//2njLBni8HUAvWLdyhrubcgtOBSQX VihxjB6YVy9HNYrK8lv7w62VNjU8eLe1S0vkMUVEdyHGeE3P9cGyP23kDZ9BXHy5UkG2Eo8d0n Ua0CZDoL/bfD1WFaYpE+SJSe X-SBRS: 5.1 X-MesageID: 58192117 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:yDR/m6nTW3io9q271Y3/6CDo5gx0IURdPkR7XQ2eYbSJt1+Wr1Gzt xJLWmuPbqyIZ2GgKtskOti+phwBsMLWmoAyHgBlpCE0RSMWpZLJC+rCIxarNUt+DCFioGGLT Sk6QoOdRCzhZiaE/n9BClVlxJVF/fngqoDUUYYoAQgsA187IMsdoUg7wbdg29Q22YHR7z6l4 rseneWOYDdJ5BYsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3fMldG0DQUIhMdtNWc s6YpF2PEsE1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXee0v0XRYRQR4/ttmHozx+4 Ohg766STCAxApLRxPQ5DUFbMREvOLITrdcrIVDn2SCS50jPcn+qyPRyFkAme4Yf/46bA0kXq 6ZecmpUKEne2aTmm9pXScE17ignBODtMJkSpTdLyjbBAOx9aZvCX7/L9ZlT2zJYasVmQKaHN pBAMGUHgBLoXCdLY0hULq8Fte7ygXryeT5DlQmfqv9ii4TU5FMoi+W8WDbPQfSVQe1Fk0Deo XjJl0z7HxUbOdq32TeDtHW2iYfnhjjnUYgfELm58P9Cg1CJwGEXThoMWjOTsfS/z0KzRd9bA 0gV4TY167g/8lSxSdvwVAH+p2SL1jY+cddNF+wx6CmW17HZpQ2eAwA5oiVpMYJ88pVsHHpzi wHPz4iB6SFTXKO9dF/HxJWRiiuOBjVJPUtcPSwmfVoA/Iy2yG0stS7nQtFmGa+zq9T6HzDs3 jyHxBQDa6UvYd0jjPviow2e6964jt2QF1NuuF2LNo6wxlohPNbNWmC+1bTMAR+sxq69R0LJg nULktP2AAsmXcDUz3zlrAng8diUCxe53N/03QEH83oJrW3FF5ufkWZ4u2oWyKBBaJtsRNMRS BWP0T69HbcKVJdQUYd5YpiqF+MhxrX6GNLuW5j8N4QVPcgvKVDWoH8yPiZ8OlwBdmB3ysnT3 r/BLK6R4YsyU/w7nFJauc9BuVPU+szO7TyKHs2qp/hW+bGfeGSUWd843KimNYgEAFe/iFyNq b53bpLSoz0GCbGWSnSHoOY7cAFRRVBmVM+eliCiXrPaSuaQMDp6UKG5LHJIU9ENopm5Yc+Up CzgAREBlwKk7ZAFQC3TAk1ehHrUdc4XhRoG0eYEZj5EAlAvPtSi6rkxbZwyceV1/eBv16csH fIEZ9+BErJETTGeo2YRapz0rYpDchW3hF3RY3r5MWZnJ5MwFRbU/tLEfxf08HVcBCSAqsZj8 aar0RnWQMRfSl06XtrWcv+m03i4oWMZxLBpR0LNL9QKIBfs/YFmJjbflPgyJ81QexzPyiHDj 1SdAAsCpPmLqIgwqYGbiaeBpoavMu1/AksFQDWLsefobXHXpzPxz5VBXeCEeSHmeFn1oKjyN /9Iy/zcMeEcmAoYuYRLDLs2n7k14MHipuEGw108TmnLdVmiFphpPmKCgZtUrqRIy7JU5Vm2V 0aI9oUIMLmFIpq4QlsYJQ5jZeWfz/AE3DLV6K1tckn94SZ2+puBUFlTYEbQ2HAMcuMtPdN32 /olte4X9xe720gjPduxhyxJ83iBcy4bWKI9u5BGWILmh2LHEL2ZjUAw3sMu3KyyVg== IronPort-HdrOrdr: A9a23:wFxig6ucoXZIyqTuQjaiR0H47skDTtV00zEX/kB9WHVpmszxra 6TdZMgpGbJYVcqKRcdcL+7WJVoLUmxyXcx2/h1AV7AZniAhILLFvAA0WKK+VSJcEeSygce79 YFT0EXMqyJMbEQt6fHCWeDfOrIuOP3kpyVuQ== X-IronPort-AV: E=Sophos;i="5.87,265,1631592000"; d="scan'208";a="58192117" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 09/65] xen: Annotate fnptr targets from continue_hypercall_on_cpu() Date: Fri, 26 Nov 2021 12:33:50 +0000 Message-ID: <20211126123446.32324-10-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637930141738100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/acpi/power.c | 2 +- xen/arch/x86/cpu/microcode/core.c | 2 +- xen/arch/x86/platform_hypercall.c | 4 ++-- xen/arch/x86/pv/shim.c | 4 ++-- xen/arch/x86/smp.c | 4 ++-- xen/arch/x86/sysctl.c | 2 +- xen/common/core_parking.c | 2 +- xen/common/kexec.c | 2 +- xen/common/sched/cpupool.c | 2 +- xen/include/asm-x86/pv/shim.h | 4 ++-- xen/include/asm-x86/smp.h | 6 +++--- 11 files changed, 17 insertions(+), 17 deletions(-) diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c index 0f2c87c096c7..90328bae1ebe 100644 --- a/xen/arch/x86/acpi/power.c +++ b/xen/arch/x86/acpi/power.c @@ -323,7 +323,7 @@ static int enter_state(u32 state) return error; } =20 -static long enter_state_helper(void *data) +static long cf_check enter_state_helper(void *data) { struct acpi_sleep_info *sinfo =3D (struct acpi_sleep_info *)data; return enter_state(sinfo->sleep_state); diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode= /core.c index 46f55fe7f191..9631042190ab 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -558,7 +558,7 @@ struct ucode_buf { char buffer[]; }; =20 -static long microcode_update_helper(void *data) +static long cf_check microcode_update_helper(void *data) { int ret; struct ucode_buf *buffer =3D data; diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hype= rcall.c index f5457565a560..5e3208862c2f 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -45,7 +45,7 @@ struct resource_access { xenpf_resource_entry_t *entries; }; =20 -long cpu_frequency_change_helper(void *); +long cf_check cpu_frequency_change_helper(void *); void check_resource_access(struct resource_access *); void resource_access(void *); =20 @@ -59,7 +59,7 @@ DEFINE_SPINLOCK(xenpf_lock); # undef guest_from_compat_handle # define guest_from_compat_handle(x,y) ((x)=3D(y)) =20 -long cpu_frequency_change_helper(void *data) +long cf_check cpu_frequency_change_helper(void *data) { return cpu_frequency_change((uint64_t)data); } diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c index ae4d8913faa1..2ee290a3920d 100644 --- a/xen/arch/x86/pv/shim.c +++ b/xen/arch/x86/pv/shim.c @@ -845,7 +845,7 @@ int cf_check compat_grant_table_op( #endif #endif =20 -long pv_shim_cpu_up(void *data) +long cf_check pv_shim_cpu_up(void *data) { struct vcpu *v =3D data; struct domain *d =3D v->domain; @@ -883,7 +883,7 @@ long pv_shim_cpu_up(void *data) return 0; } =20 -long pv_shim_cpu_down(void *data) +long cf_check pv_shim_cpu_down(void *data) { struct vcpu *v =3D data; long rc; diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index eef0f9c6cbf4..f4952a6bf9a5 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -399,7 +399,7 @@ void call_function_interrupt(struct cpu_user_regs *regs) smp_call_function_interrupt(); } =20 -long cpu_up_helper(void *data) +long cf_check cpu_up_helper(void *data) { unsigned int cpu =3D (unsigned long)data; int ret =3D cpu_up(cpu); @@ -422,7 +422,7 @@ long cpu_up_helper(void *data) return ret; } =20 -long cpu_down_helper(void *data) +long cf_check cpu_down_helper(void *data) { int cpu =3D (unsigned long)data; int ret =3D cpu_down(cpu); diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c index aff52a13f373..1772f51f8f6e 100644 --- a/xen/arch/x86/sysctl.c +++ b/xen/arch/x86/sysctl.c @@ -79,7 +79,7 @@ static void l3_cache_get(void *arg) l3_info->size =3D info.size / 1024; /* in KB unit */ } =20 -static long smt_up_down_helper(void *data) +static long cf_check smt_up_down_helper(void *data) { bool up =3D (bool)data; unsigned int cpu, sibling_mask =3D boot_cpu_data.x86_num_siblings - 1; diff --git a/xen/common/core_parking.c b/xen/common/core_parking.c index 44a907abfd7f..4afad04f2f68 100644 --- a/xen/common/core_parking.c +++ b/xen/common/core_parking.c @@ -169,7 +169,7 @@ static unsigned int core_parking_power(unsigned int eve= nt) return cpu; } =20 -long core_parking_helper(void *data) +long cf_check core_parking_helper(void *data) { uint32_t idle_nums =3D (unsigned long)data; unsigned int cpu; diff --git a/xen/common/kexec.c b/xen/common/kexec.c index 3b223cd03d75..b222a5fd782e 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -395,7 +395,7 @@ void kexec_crash(enum crash_reason reason) BUG(); } =20 -static long kexec_reboot(void *_image) +static long cf_check kexec_reboot(void *_image) { struct kexec_image *image =3D _image; =20 diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c index e5cfb03b857e..b9d4babd0d8a 100644 --- a/xen/common/sched/cpupool.c +++ b/xen/common/sched/cpupool.c @@ -544,7 +544,7 @@ static int cpupool_unassign_cpu_start(struct cpupool *c= , unsigned int cpu) return ret; } =20 -static long cpupool_unassign_cpu_helper(void *info) +static long cf_check cpupool_unassign_cpu_helper(void *info) { struct cpupool *c =3D info; long ret; diff --git a/xen/include/asm-x86/pv/shim.h b/xen/include/asm-x86/pv/shim.h index 6415f8068e5c..be4ae4e60bb8 100644 --- a/xen/include/asm-x86/pv/shim.h +++ b/xen/include/asm-x86/pv/shim.h @@ -38,8 +38,8 @@ void pv_shim_setup_dom(struct domain *d, l4_pgentry_t *l4= start, start_info_t *si); int pv_shim_shutdown(uint8_t reason); void pv_shim_inject_evtchn(unsigned int port); -long pv_shim_cpu_up(void *data); -long pv_shim_cpu_down(void *data); +long cf_check pv_shim_cpu_up(void *data); +long cf_check pv_shim_cpu_down(void *data); void pv_shim_online_memory(unsigned int nr, unsigned int order); void pv_shim_offline_memory(unsigned int nr, unsigned int order); domid_t get_initial_domain_id(void); diff --git a/xen/include/asm-x86/smp.h b/xen/include/asm-x86/smp.h index f7485f602efa..1747772d232e 100644 --- a/xen/include/asm-x86/smp.h +++ b/xen/include/asm-x86/smp.h @@ -57,10 +57,10 @@ int cpu_add(uint32_t apic_id, uint32_t acpi_id, uint32_= t pxm); =20 void __stop_this_cpu(void); =20 -long cpu_up_helper(void *data); -long cpu_down_helper(void *data); +long cf_check cpu_up_helper(void *data); +long cf_check cpu_down_helper(void *data); =20 -long core_parking_helper(void *data); +long cf_check core_parking_helper(void *data); bool core_parking_remove(unsigned int cpu); uint32_t get_cur_idle_nums(void); =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931907; cv=none; d=zohomail.com; s=zohoarc; b=SCIa1LIidsOu0qQO62OlErjztoJgUc8lk6qJzzC9lzXTcR2obXcoLlrWT2K/V8UbSwnw6DZgjdC83hcKAHhbhfg4yCpSMvj8Z01d4siQJZvaOXHf1I4jQMvBj/9BezJn0pVc1u0RB6H1wt5CTZkQUbyynt6S/pqldg13GqiSxio= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931907; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5gd+XPHbGf5CebLfOHITqwm6TLzA1QX3kan23OY/gOw=; b=M2FfDFV2ToAeS3nEeb93AwLUygSr6N59J1MfTVjEso8q/cPcymnVmwwwc45irqC39eYEI70RTcPRIBFEolrDBr/gU5diFHZgMFfcOmu7NdjsCMdYI0A+2hBn+6qNwP+5CbU8b5KljqRhPu6ZDgeExbbc85KrKptOX7v5AT7TRMQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931907212613.105323368688; Fri, 26 Nov 2021 05:05:07 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232746.403595 (Exim 4.92) (envelope-from ) id 1mqau9-0002zg-Hn; Fri, 26 Nov 2021 13:04:41 +0000 Received: by outflank-mailman (output) from mailman id 232746.403595; Fri, 26 Nov 2021 13:04:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqau9-0002zZ-ED; Fri, 26 Nov 2021 13:04:41 +0000 Received: by outflank-mailman (input) for mailman id 232746; Fri, 26 Nov 2021 13:04:40 +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 1mqau8-0002zD-G7 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:40 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 689e494e-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:04:38 +0100 (CET) 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: 689e494e-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931878; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=d55qm7ys4wdtbliZHZYDOvFk3m78eojCdUL7/+gEI38=; b=ADWgvW3bWisRnX1HgQM2480yXL47vAfyhJ1pQ+puoAnI5PVlMmWYlkRj 6aDiI0LqVKTnLhwoEDTIpFa1Ujxu6hBjaXhGbqWJiXNfthHI2NUx9hb2L 7+iXUhSBp6Zkz5iOwub77pV344A7nQtU2arIJp7xbDUAMlBQCY40E8zWe I=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: eMfjpNUtZLp4DNM7oTeCqCyK0Y+kMb5uhCXCmKqqA29E7UXYX6nYCm1LTAnkujYlOV8RavWB6r Oqt9CbiWeoq1c407E1mk5kNnHYAAxdLvmnfmxsFam97CBv1bey2QUOuCxR4KVBX/4aWA2jyRxk Jka2q3cNVxLEwSyUBmc+FP7kMs5KWvhwctvrrLl/52293Yq/z5sIdddJmFdD4xcuKWHLh4Vtus IeOTCH47y6HfmsPq3cj4ksAb/0dLHKoNkacPQxHu15Pq037tLRIayd8pFsuU2ACBNtnbpv6W1b jmsPgaSI1b5F49D2iE1KrRtl X-SBRS: 5.1 X-MesageID: 59063923 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:zPK6GaxIIqoa8mrV+QF6t+fCwSrEfRIJ4+MujC+fZmUNrF6WrkUEx mQYUWiHafmJZGP3c9xybNuz/UJV7JHTyt9nGwVvrCAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAuLeNYYH1500s6wrRn2tQAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt/Nh5 NUS8qCtcB4kNJz2sbQNUSQFNC4raMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVoru0lINPmI8U0vXZ4wCuCJf0nXYrCU+PB4towMDIY25EWQ62PP ZFxhTxHUU/pMxFSHVorGps7ubyYql30VTRBpwfAzUYwyzeKl1EguFT3C/LKfvSaSMMTmVyXz krE4mD4DxcyJNGZjz2f/RqEnfTTlCn2XIYTEryQ9fNwhlCXgGsJB3U+RVa95PW0lEO6c9ZeM FAPvDojq7Ao806mRcW7WAe3yFamlBMBX9tbE8Uh9RqAjKHT5m6k6nMsF2AbLoZ87YlvGGJsh gThc87V6SJHk625SS3ayqqttD64CBI8fX8AWHIjQl5QizX8m70bghXKR9dlNae6iNzpBD39q wy3QDgCa6Y71pBSifjilbzTq3f1/8WSEFZpjunCdjv9tlsRWWKzW2C/BbE3B95kJZ3RcFSOt WNsdyO2vLFXVsHleMBgrYww8FCVCxStbGK0bb1HRcBJG9GRF5iLJts4DNZWfhoBDyr8UWW1C HI/QCsIjHOpAFOkbLVsf6W6ANkwwK7rGLzND66PMYoQP8cgKFHbp0mCgHJ8OUi2yyDAdollZ P+mnTuEVy5GWcyLMhLqLwvi7VPb7n9nnj6CLXwK5x+mzaCfdBaopUQtazOzghQCxPrc+m39q o8HX+PTkkk3eLCuM0H/rN9IRXhXfCdTOHwDg5EOHgJ1ClE9Qz9J5j646e5JRrGJaIwJzLqVp S/kBRcDoLc97FWeQTi3hrlYQOuHdf5CQbgTZ0TA5H6khCouZ5iB9qAae8dldLUr7rU7n/V1U +MEa4OLBfEWEmbL/DEUbJ/cqo1+dUv02VLSbnT9ODVvLYR9QwHp+8P/ele9/ic5ESfq59A1p Ket112HTMNbFRhiFsvfdNmm00i14SoGgOt3UkaReotTdUzg/ZJEMSv0ivNrccgAJQ+anmmR1 hqMAAderu7I+tdn/N7MjKGCjoGoD+ohQRYKQziFte67bHCI8HCizIlMVPezUQrcDG6kqr+/Y eh1zu3nNKFVllh9rIchQa1gyrgz5oWzquYCnBhkBnjCc3+iFqhkfiudxcBKu6BAmu1ZtA+xV h7d89VWI+zUasbsEVpXLws5dOWTk/oTn2CKv/gyJUz74g5x/aaGDhoOb0Xd1nQFIesnKp4hz McgpNUSul62hRcdO9qbijxZqjaXJXsaXqR77pwXDecHUObwJo2utXAENhLL3Q== IronPort-HdrOrdr: A9a23:zY9E4qEMFK0rMObxpLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079 YZT0EUMrzN5DZB4voSmDPIceod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59063923" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 10/65] xen: Annotate fnptr targets from init_timer() Date: Fri, 26 Nov 2021 12:33:51 +0000 Message-ID: <20211126123446.32324-11-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931908752100002 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/cpu/mcheck/amd_nonfatal.c | 2 +- xen/arch/x86/cpu/mcheck/non-fatal.c | 2 +- xen/arch/x86/hvm/pmtimer.c | 2 +- xen/arch/x86/hvm/rtc.c | 6 +++--- xen/arch/x86/hvm/viridian/time.c | 2 +- xen/arch/x86/hvm/vpt.c | 2 +- xen/arch/x86/irq.c | 4 ++-- xen/arch/x86/nmi.c | 2 +- xen/arch/x86/time.c | 4 ++-- xen/common/rcupdate.c | 2 +- xen/common/sched/core.c | 18 +++++++++--------- xen/common/sched/credit.c | 10 ++++------ xen/common/sched/credit2.c | 2 +- xen/common/sched/rt.c | 5 +++-- xen/drivers/char/ehci-dbgp.c | 2 +- xen/drivers/char/ns16550.c | 6 +++--- xen/drivers/cpufreq/cpufreq_ondemand.c | 2 +- 17 files changed, 36 insertions(+), 37 deletions(-) diff --git a/xen/arch/x86/cpu/mcheck/amd_nonfatal.c b/xen/arch/x86/cpu/mche= ck/amd_nonfatal.c index 6e8901530a69..da0bf85f0223 100644 --- a/xen/arch/x86/cpu/mcheck/amd_nonfatal.c +++ b/xen/arch/x86/cpu/mcheck/amd_nonfatal.c @@ -127,7 +127,7 @@ static void mce_amd_checkregs(void *info) * multiple correctable errors between two polls. In that case, * increase polling frequency higher than normal. */ -static void mce_amd_work_fn(void *data) +static void cf_check mce_amd_work_fn(void *data) { on_each_cpu(mce_amd_checkregs, data, 1); =20 diff --git a/xen/arch/x86/cpu/mcheck/non-fatal.c b/xen/arch/x86/cpu/mcheck/= non-fatal.c index 2679c220a8a2..f7e411c0870e 100644 --- a/xen/arch/x86/cpu/mcheck/non-fatal.c +++ b/xen/arch/x86/cpu/mcheck/non-fatal.c @@ -67,7 +67,7 @@ static void mce_checkregs (void *info) } } =20 -static void mce_work_fn(void *data) +static void cf_check mce_work_fn(void *data) {=20 on_each_cpu(mce_checkregs, NULL, 1); =20 diff --git a/xen/arch/x86/hvm/pmtimer.c b/xen/arch/x86/hvm/pmtimer.c index 97b9e41712fa..808819d1de91 100644 --- a/xen/arch/x86/hvm/pmtimer.c +++ b/xen/arch/x86/hvm/pmtimer.c @@ -124,7 +124,7 @@ static void pmt_update_time(PMTState *s) /* This function should be called soon after each time the MSB of the * pmtimer register rolls over, to make sure we update the status * registers and SCI at least once per rollover */ -static void pmt_timer_callback(void *opaque) +static void cf_check pmt_timer_callback(void *opaque) { PMTState *s =3D opaque; uint32_t pmt_cycles_until_flip; diff --git a/xen/arch/x86/hvm/rtc.c b/xen/arch/x86/hvm/rtc.c index 3150f5f1479b..09d3501276bc 100644 --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -217,7 +217,7 @@ static void check_update_timer(RTCState *s) s->use_timer =3D 0; } =20 -static void rtc_update_timer(void *opaque) +static void cf_check rtc_update_timer(void *opaque) { RTCState *s =3D opaque; =20 @@ -230,7 +230,7 @@ static void rtc_update_timer(void *opaque) spin_unlock(&s->lock); } =20 -static void rtc_update_timer2(void *opaque) +static void cf_check rtc_update_timer2(void *opaque) { RTCState *s =3D opaque; =20 @@ -421,7 +421,7 @@ static void alarm_timer_update(RTCState *s) } } =20 -static void rtc_alarm_cb(void *opaque) +static void cf_check rtc_alarm_cb(void *opaque) { RTCState *s =3D opaque; =20 diff --git a/xen/arch/x86/hvm/viridian/time.c b/xen/arch/x86/hvm/viridian/t= ime.c index 24ff117edb20..b56fd6766292 100644 --- a/xen/arch/x86/hvm/viridian/time.c +++ b/xen/arch/x86/hvm/viridian/time.c @@ -126,7 +126,7 @@ static void stop_stimer(struct viridian_stimer *vs) vs->started =3D false; } =20 -static void stimer_expire(void *data) +static void cf_check stimer_expire(void *data) { struct viridian_stimer *vs =3D data; struct vcpu *v =3D vs->v; diff --git a/xen/arch/x86/hvm/vpt.c b/xen/arch/x86/hvm/vpt.c index 6fdc3e19fe8c..cb1d81bf9e82 100644 --- a/xen/arch/x86/hvm/vpt.c +++ b/xen/arch/x86/hvm/vpt.c @@ -271,7 +271,7 @@ void pt_restore_timer(struct vcpu *v) pt_vcpu_unlock(v); } =20 -static void pt_timer_fn(void *data) +static void cf_check pt_timer_fn(void *data) { struct periodic_time *pt =3D data; =20 diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index bcf46cd54d16..f9c808455535 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -935,7 +935,7 @@ void alloc_direct_apic_vector( spin_unlock(&lock); } =20 -static void irq_ratelimit_timer_fn(void *data) +static void cf_check irq_ratelimit_timer_fn(void *data) { struct irq_desc *desc, *tmp; unsigned long flags; @@ -1129,7 +1129,7 @@ static inline void clear_pirq_eoi(struct domain *d, u= nsigned int irq) =20 static void set_eoi_ready(void *data); =20 -static void irq_guest_eoi_timer_fn(void *data) +static void cf_check irq_guest_eoi_timer_fn(void *data) { struct irq_desc *desc =3D data; unsigned int i, irq =3D desc - irq_desc; diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index 5c101a9f97b3..c8ae4a5d7460 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -211,7 +211,7 @@ void __init check_nmi_watchdog(void) return; } =20 -static void nmi_timer_fn(void *unused) +static void cf_check nmi_timer_fn(void *unused) { this_cpu(nmi_timer_ticks)++; set_timer(&this_cpu(nmi_timer), NOW() + MILLISECS(1000)); diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 4ab0cf6731e3..b60c614bab6e 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -810,7 +810,7 @@ static s_time_t __read_platform_stime(u64 platform_time) return (stime_platform_stamp + scale_delta(diff, &plt_scale)); } =20 -static void plt_overflow(void *unused) +static void cf_check plt_overflow(void *unused) { int i; u64 count; @@ -1850,7 +1850,7 @@ static void time_calibration_nop_rendezvous(void *rv) static void (*time_calibration_rendezvous_fn)(void *) =3D time_calibration_std_rendezvous; =20 -static void time_calibration(void *unused) +static void cf_check time_calibration(void *unused) { struct calibration_rendezvous r =3D { .semaphore =3D ATOMIC_INIT(0) diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c index 2ec5606de5dd..f9dd2584a8b7 100644 --- a/xen/common/rcupdate.c +++ b/xen/common/rcupdate.c @@ -575,7 +575,7 @@ static void rcu_idle_timer_stop(void) stop_timer(&rdp->idle_timer); } =20 -static void rcu_idle_timer_handler(void* data) +static void cf_check rcu_idle_timer_handler(void* data) { perfc_incr(rcu_idle_timer); =20 diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 4a79971a1d45..cf1ba01b4d87 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -71,10 +71,10 @@ cpumask_t sched_res_mask; static DEFINE_SPINLOCK(sched_free_cpu_lock); =20 /* Various timer handlers. */ -static void s_timer_fn(void *unused); -static void vcpu_periodic_timer_fn(void *data); -static void vcpu_singleshot_timer_fn(void *data); -static void poll_timer_fn(void *data); +static void cf_check s_timer_fn(void *unused); +static void cf_check vcpu_periodic_timer_fn(void *data); +static void cf_check vcpu_singleshot_timer_fn(void *data); +static void cf_check poll_timer_fn(void *data); =20 /* This is global for now so that private implementations can reach it */ DEFINE_PER_CPU_READ_MOSTLY(struct sched_resource *, sched_res); @@ -1535,7 +1535,7 @@ long vcpu_yield(void) return 0; } =20 -static void domain_watchdog_timeout(void *data) +static void cf_check domain_watchdog_timeout(void *data) { struct domain *d =3D data; =20 @@ -2697,28 +2697,28 @@ static void schedule(void) } =20 /* The scheduler timer: force a run through the scheduler */ -static void s_timer_fn(void *unused) +static void cf_check s_timer_fn(void *unused) { raise_softirq(SCHEDULE_SOFTIRQ); SCHED_STAT_CRANK(sched_irq); } =20 /* Per-VCPU periodic timer function: sends a virtual timer interrupt. */ -static void vcpu_periodic_timer_fn(void *data) +static void cf_check vcpu_periodic_timer_fn(void *data) { struct vcpu *v =3D data; vcpu_periodic_timer_work(v); } =20 /* Per-VCPU single-shot timer function: sends a virtual timer interrupt. */ -static void vcpu_singleshot_timer_fn(void *data) +static void cf_check vcpu_singleshot_timer_fn(void *data) { struct vcpu *v =3D data; send_timer_event(v); } =20 /* SCHEDOP_poll timeout callback. */ -static void poll_timer_fn(void *data) +static void cf_check poll_timer_fn(void *data) { struct vcpu *v =3D data; =20 diff --git a/xen/common/sched/credit.c b/xen/common/sched/credit.c index d0aa017c643e..5635271f6fea 100644 --- a/xen/common/sched/credit.c +++ b/xen/common/sched/credit.c @@ -230,8 +230,8 @@ struct csched_private { struct timer master_ticker; }; =20 -static void csched_tick(void *_cpu); -static void csched_acct(void *dummy); +static void cf_check csched_tick(void *_cpu); +static void cf_check csched_acct(void *dummy); =20 static inline int __unit_on_runq(const struct csched_unit *svc) @@ -1356,8 +1356,7 @@ csched_runq_sort(struct csched_private *prv, unsigned= int cpu) pcpu_schedule_unlock_irqrestore(lock, flags, cpu); } =20 -static void -csched_acct(void* dummy) +static void cf_check csched_acct(void* dummy) { struct csched_private *prv =3D dummy; unsigned long flags; @@ -1563,8 +1562,7 @@ csched_acct(void* dummy) set_timer( &prv->master_ticker, NOW() + prv->tslice); } =20 -static void -csched_tick(void *_cpu) +static void cf_check csched_tick(void *_cpu) { unsigned int cpu =3D (unsigned long)_cpu; const struct sched_resource *sr =3D get_sched_res(cpu); diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c index a5f073cda51e..d96e2749ddfb 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -2072,7 +2072,7 @@ static inline void do_replenish(struct csched2_dom *s= dom) sdom->budget +=3D sdom->tot_budget; } =20 -static void replenish_domain_budget(void* data) +static void cf_check replenish_domain_budget(void *data) { struct csched2_dom *sdom =3D data; unsigned long flags; diff --git a/xen/common/sched/rt.c b/xen/common/sched/rt.c index c24cd2ac3200..5ea6f01f263c 100644 --- a/xen/common/sched/rt.c +++ b/xen/common/sched/rt.c @@ -173,7 +173,7 @@ #define TRC_RTDS_SCHED_TASKLET TRC_SCHED_CLASS_EVT(RTDS, 5) #define TRC_RTDS_SCHEDULE TRC_SCHED_CLASS_EVT(RTDS, 6) =20 -static void repl_timer_handler(void *data); +static void cf_check repl_timer_handler(void *data); =20 /* * System-wide private data, include global RunQueue/DepletedQ @@ -1452,7 +1452,8 @@ rt_dom_cntl( * The replenishment timer handler picks units * from the replq and does the actual replenishment. */ -static void repl_timer_handler(void *data){ +static void cf_check repl_timer_handler(void *data) +{ s_time_t now; const struct scheduler *ops =3D data; struct rt_private *prv =3D rt_priv(ops); diff --git a/xen/drivers/char/ehci-dbgp.c b/xen/drivers/char/ehci-dbgp.c index c893d246defa..a6b57fdf2d19 100644 --- a/xen/drivers/char/ehci-dbgp.c +++ b/xen/drivers/char/ehci-dbgp.c @@ -1289,7 +1289,7 @@ static void _ehci_dbgp_poll(struct cpu_user_regs *reg= s) set_timer(&dbgp->timer, NOW() + timeout); } =20 -static void ehci_dbgp_poll(void *data) +static void cf_check ehci_dbgp_poll(void *data) { poll_port =3D data; #ifdef run_in_exception_handler diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index 30596d60d4ed..990cad39fe85 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -111,7 +111,7 @@ struct ns16550_config_param { static void enable_exar_enhanced_bits(const struct ns16550 *uart); #endif =20 -static void ns16550_delayed_resume(void *data); +static void cf_check ns16550_delayed_resume(void *data); =20 static u8 ns_read_reg(const struct ns16550 *uart, unsigned int reg) { @@ -229,7 +229,7 @@ static void __ns16550_poll(struct cpu_user_regs *regs) set_timer(&uart->timer, NOW() + MILLISECS(uart->timeout_ms)); } =20 -static void ns16550_poll(void *data) +static void cf_check ns16550_poll(void *data) { this_cpu(poll_port) =3D data; #ifdef run_in_exception_handler @@ -532,7 +532,7 @@ static void _ns16550_resume(struct serial_port *port) } =20 static int delayed_resume_tries; -static void ns16550_delayed_resume(void *data) +static void cf_check ns16550_delayed_resume(void *data) { struct serial_port *port =3D data; struct ns16550 *uart =3D port->uart; diff --git a/xen/drivers/cpufreq/cpufreq_ondemand.c b/xen/drivers/cpufreq/c= pufreq_ondemand.c index cabd9ffa8886..ba03eaa2336d 100644 --- a/xen/drivers/cpufreq/cpufreq_ondemand.c +++ b/xen/drivers/cpufreq/cpufreq_ondemand.c @@ -172,7 +172,7 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_d= bs_info) } } =20 -static void do_dbs_timer(void *dbs) +static void cf_check do_dbs_timer(void *dbs) { struct cpu_dbs_info_s *dbs_info =3D (struct cpu_dbs_info_s *)dbs; =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932108; cv=none; d=zohomail.com; s=zohoarc; b=QbKOW6yoXfsIQuclxLzdKV3nVgsbJ8wMTZih2exx/c0ZIzSlEAZG5XU/A3IoBNclgUFJn2YhLvnxAdxHt2U6B9CYK/tUUF00J67xOkVs1JiEzEmsX0QuQMCaEmBw35+nbDWdGO7vaQATnyZbAfyNUCToTleIH8ZyvqKU42XdLQ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932108; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OSgwtk18x7K7NHHfCIZTh4QP6ohxJMT0bjSuooVF980=; b=TyJXjCFMWW17iwrmdRt2Ri8ur9DCCkDUTp2f5srMgN6CAUHKB9u3TY6m+8jMKqybVqIAzkcwDDovI1a04bT5auGUXBaSetC/DUqS/1Prsw5Wtk+XQ422yNFyi9+wljl6wNlGmk55RrJ+SJtQ9L+H/E4W+/SKl1DEA1VZ9OS/gAM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932108941247.20284667946794; Fri, 26 Nov 2021 05:08:28 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232884.404109 (Exim 4.92) (envelope-from ) id 1mqaxW-0002pr-28; Fri, 26 Nov 2021 13:08:10 +0000 Received: by outflank-mailman (output) from mailman id 232884.404109; Fri, 26 Nov 2021 13:08:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxV-0002n5-KD; Fri, 26 Nov 2021 13:08:09 +0000 Received: by outflank-mailman (input) for mailman id 232884; Fri, 26 Nov 2021 13:08:07 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavn-0003W9-UN for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:24 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a6af88e9-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:22 +0100 (CET) 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: a6af88e9-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931982; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qfUingeWCHJT51H02rxG/ZbTxmF7Rj5Q8LszhraqNPA=; b=J006ZpAr2/t9KwkDAhcOQS2Z2Jd38lUdDZvJuj0zOFita6rXCRICXrvc ss5+Rgxvsf0N9P3oHHrCcYqUcvmNHd8UooYEg1vWWgFZSDXuG5+aLA2dY j++QJjpsQA8WCIneEWf/pBiGeAr9O42412DkB+GHtgMUiyFZB8G2rGU0w Q=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: KXYoeP8jX1bI+Ae0aKL40CGzTIUxv4bCczKT3qQ/DpGuU7tl9lhapSAxM1OXKpHkRfliSfw/Uv OTxMIU5VyfbDGIVNQFb1NoZT+xcsd8JAB7ebJt6U+fluELXvKrPMvSI+6Vb4Z4gzF+tqP8+uNw bhfSrOkIHtS5IfbHy8fUZlZxu1P0afzxFze5c9k6jdplDfwO89IX5tu7vxKBamDvmpFPtIlcIt KuRRqowFUziHC9m6RqzeRX1fn71tTUjod9ZCRHUtG8WdFb+uS9yfWhAfDo30UQpI9ZKKIwUdUz RI6zajh7mDHwIC+yOp7Fd1oe X-SBRS: 5.1 X-MesageID: 58193875 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:Lfsn1qsSEZH49a5cJxwcrtVeS+fnVKNZMUV32f8akzHdYApBsoF/q tZmKW6Fbv3fZWqhfNB/b9+z8x4BvcPXy4drGVZkqSpmQSkR+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ NplnsHgRA0YAYH1hPVHbRpoEgZcYu5f0eqSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5NIMmowMXwsZTVdEVYNIowGut6VuWjhdT5FhWqUl4wetj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKhMHMN2SzxKV/3TqgfXA9QvgQ54bHrC88v9sgXWQy3YVBRlQUkG0ydGph0j7V99BJ kg8/is1sbN05EGtVsP6XRCzvDiDpBF0c/h6HvA+6QqN4rHJ+AvfDW8BJgOtc/R/6pVwH2Zzk AbUwZW5XlSDrYF5V1q2q+eZpwKNFREJPDU8Zh8FailaoMDK9dRbYg30cv5vF6u8j9vQED72w iyXoCVWu4j/nfLnxI3gowmZ3mvESozhC1dsu16JBj7NAhZRPdb9P+SVBU7nAeGsxWpzZn2Ip zA6lseX94ji5rndxXXWEI3h8FxEjstp0QEwY3YzQPHNFBz3ohZPmLy8Bhklfy+F1e5eJFfUj Lf741852XOqFCLCgVVLS4ywEd826qPrCM7oUPvZBvIXPMMuJFHao3AyOxLLt4wIrKTKufpkU Xt8WZzxZUv29Iw9lGbmLwvj+eNDKt8CKZP7GsmgkkXPPUu2b3+JU7YVWGZinchihJ5oVD79q o4FX+PTkk03eLSnPkH/rN5CRXhXfCNTLc2n9KRqmhurf1MO9JcJUKSKn9vMuuVNwsxoqws/1 i3nBxIDlgOg3SavxMfjQikLVY4DlK1X9RoTVRHA937xs5T6SYrwvqoZabUterwrqL5qwfJuF qFXcMScGPVfDD/A/m1FP5X6qYVjcjWthB6PYHX5MGRuIcY4Slyb4MLgcyvu6DIKUni9u/whr uDyzQjcW5cCGVhvVZ6EdPK1wlqtlnEBg+YuDVDQK9xedRy0oohnIiD8lNEtJMQIJUmRzzeWz V/OUxwZufPMs8k+99yQ3fKIqIKgEu1fGEtGHjaEsebqZHeCpmf6mN1OSueFezzZRVjYwqT6a LUH1ez4Pd0GgE1O79h2HYF0wP9s/NDovbJbkFhpRS2Zc1SxB7p8CXCaxs0T5LZVz7pUtAbqC EKC/t5WZeeANM//SQNDIQMkaqKI1O0OmymU5vMweR2o6Chy9buBcENTIxjT13ANcOoraNsok bU7pcobyw2jkR57YN+Jgxdd+3mIMnFdAb4ssYsXAdOzhwcmor2YjUcw1sMiDEmzVuhx IronPort-HdrOrdr: A9a23:iSJhWqGgOw7FtXhYpLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079 YZT0EUMrzN5DZB4voSmDPIceod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193875" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 11/65] xen: Annotate fnptr targets from call_rcu() Date: Fri, 26 Nov 2021 12:33:52 +0000 Message-ID: <20211126123446.32324-12-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932110932100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/hvm/mtrr.c | 2 +- xen/arch/x86/hvm/vmsi.c | 2 +- xen/arch/x86/mm/mem_sharing.c | 2 +- xen/arch/x86/percpu.c | 2 +- xen/common/domain.c | 4 ++-- xen/common/radix-tree.c | 2 +- xen/common/rcupdate.c | 2 +- xen/common/sched/core.c | 2 +- xen/xsm/flask/avc.c | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/hvm/mtrr.c b/xen/arch/x86/hvm/mtrr.c index b3ef1bf54133..42f3d8319296 100644 --- a/xen/arch/x86/hvm/mtrr.c +++ b/xen/arch/x86/hvm/mtrr.c @@ -586,7 +586,7 @@ int hvm_get_mem_pinned_cacheattr(struct domain *d, gfn_= t gfn, return rc; } =20 -static void free_pinned_cacheattr_entry(struct rcu_head *rcu) +static void cf_check free_pinned_cacheattr_entry(struct rcu_head *rcu) { xfree(container_of(rcu, struct hvm_mem_pinned_cacheattr_range, rcu)); } diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c index 13e2a190b439..2889575a2035 100644 --- a/xen/arch/x86/hvm/vmsi.c +++ b/xen/arch/x86/hvm/vmsi.c @@ -441,7 +441,7 @@ static void add_msixtbl_entry(struct domain *d, list_add_rcu(&entry->list, &d->arch.hvm.msixtbl_list); } =20 -static void free_msixtbl_entry(struct rcu_head *rcu) +static void cf_check free_msixtbl_entry(struct rcu_head *rcu) { struct msixtbl_entry *entry; =20 diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c index 74d2869c0e6f..15e6a7ed814b 100644 --- a/xen/arch/x86/mm/mem_sharing.c +++ b/xen/arch/x86/mm/mem_sharing.c @@ -75,7 +75,7 @@ static DEFINE_SPINLOCK(shr_audit_lock); static DEFINE_RCU_READ_LOCK(shr_audit_read_lock); =20 /* RCU delayed free of audit list entry */ -static void _free_pg_shared_info(struct rcu_head *head) +static void cf_check _free_pg_shared_info(struct rcu_head *head) { xfree(container_of(head, struct page_sharing_info, rcu_head)); } diff --git a/xen/arch/x86/percpu.c b/xen/arch/x86/percpu.c index eb3ba7bc8874..46460689b73d 100644 --- a/xen/arch/x86/percpu.c +++ b/xen/arch/x86/percpu.c @@ -45,7 +45,7 @@ struct free_info { }; static DEFINE_PER_CPU(struct free_info, free_info); =20 -static void _free_percpu_area(struct rcu_head *head) +static void cf_check _free_percpu_area(struct rcu_head *head) { struct free_info *info =3D container_of(head, struct free_info, rcu); unsigned int cpu =3D info->cpu; diff --git a/xen/common/domain.c b/xen/common/domain.c index 2698dbda1398..a8b6ee59587c 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -365,7 +365,7 @@ static int __init cf_check parse_extra_guest_irqs(const= char *s) } custom_param("extra_guest_irqs", parse_extra_guest_irqs); =20 -static void _free_pirq_struct(struct rcu_head *head) +static void cf_check _free_pirq_struct(struct rcu_head *head) { xfree(container_of(head, struct pirq, rcu_head)); } @@ -1116,7 +1116,7 @@ void vcpu_end_shutdown_deferral(struct vcpu *v) } =20 /* Complete domain destroy after RCU readers are not holding old reference= s. */ -static void complete_domain_destroy(struct rcu_head *head) +static void cf_check complete_domain_destroy(struct rcu_head *head) { struct domain *d =3D container_of(head, struct domain, rcu); struct vcpu *v; diff --git a/xen/common/radix-tree.c b/xen/common/radix-tree.c index 628a7e06988f..33b47748ae49 100644 --- a/xen/common/radix-tree.c +++ b/xen/common/radix-tree.c @@ -58,7 +58,7 @@ static struct radix_tree_node *rcu_node_alloc(void *arg) return rcu_node ? &rcu_node->node : NULL; } =20 -static void _rcu_node_free(struct rcu_head *head) +static void cf_check _rcu_node_free(struct rcu_head *head) { struct rcu_node *rcu_node =3D container_of(head, struct rcu_node, rcu_head); diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c index f9dd2584a8b7..423d6b1d6d02 100644 --- a/xen/common/rcupdate.c +++ b/xen/common/rcupdate.c @@ -167,7 +167,7 @@ static int rsinterval =3D 1000; static atomic_t cpu_count =3D ATOMIC_INIT(0); static atomic_t pending_count =3D ATOMIC_INIT(0); =20 -static void rcu_barrier_callback(struct rcu_head *head) +static void cf_check rcu_barrier_callback(struct rcu_head *head) { /* * We need a barrier making all previous writes visible to other cpus diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index cf1ba01b4d87..285de9ee2a19 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -2798,7 +2798,7 @@ static int cpu_schedule_up(unsigned int cpu) return 0; } =20 -static void sched_res_free(struct rcu_head *head) +static void cf_check sched_res_free(struct rcu_head *head) { struct sched_resource *sr =3D container_of(head, struct sched_resource= , rcu); =20 diff --git a/xen/xsm/flask/avc.c b/xen/xsm/flask/avc.c index 87ea38b7a0d0..e20c16504213 100644 --- a/xen/xsm/flask/avc.c +++ b/xen/xsm/flask/avc.c @@ -276,7 +276,7 @@ int avc_get_hash_stats(struct xen_flask_hash_stats *arg) return 0; } =20 -static void avc_node_free(struct rcu_head *rhead) +static void cf_check avc_node_free(struct rcu_head *rhead) { struct avc_node *node =3D container_of(rhead, struct avc_node, rhead); xfree(node); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932063; cv=none; d=zohomail.com; s=zohoarc; b=Z9kfhb0PYZq6ogelS3yxVbsBNAQ6CV1zncOyI93MyfCMx/u9KW5NE0AErkchnq6Jg7SbjtkMsQHmyYvdoR8gvJxaqh/6I+eyR34TW3OzHvJMqmqqWnGZRePRw1KKsCjCLCOnVZWV6dr5Uld6KbbZ6YAQZzQmdkzXfB1w1XiCT+c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932063; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LaVefpe3SPO97+rixMMwm7Kv4LUmM4Yv99+MK9WVUfA=; b=GI9aiB/OvE60gQnt19xBLQ3ZqAs7hIn3wxRKLQL9k7yL0hTkKFL5RdZ7ntJQfFLskbMK9iQPPvfDitD7ii3ElUKNoH6JtElmx6tZEVhdDcnxLLA1/X4ZYcvM5cji6Y2+kvFVBAw1pjtyh13+DN5gGKWiIEW4A4u55ScOeXe8b1A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932063964478.22939207885656; Fri, 26 Nov 2021 05:07:43 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232821.403909 (Exim 4.92) (envelope-from ) id 1mqawo-0000en-1Z; Fri, 26 Nov 2021 13:07:26 +0000 Received: by outflank-mailman (output) from mailman id 232821.403909; Fri, 26 Nov 2021 13:07:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawn-0000XX-8S; Fri, 26 Nov 2021 13:07:25 +0000 Received: by outflank-mailman (input) for mailman id 232821; Fri, 26 Nov 2021 13:07:22 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavJ-0003W9-VV for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:54 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 94650a7d-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:52 +0100 (CET) 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: 94650a7d-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931952; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IAy9/gvKbj3wWiqnHwvNYNHwaaHqym/9PfZDdgkTD3k=; b=JA5KzgEhyCkoU0VxxuOxk9NpOFS2pOPY/9mLk5aQjk28or2OstFKHPAc lVwyZoSZnCO3IBOlsdwPhO9SjW0zU6yKofPNKgF2g6lepSizldlmv94OD UUMUnC3Z1seyxmQbJJMkbBprD4RTnoduQ/lZaFtABiDnw9PcRrUT41bV5 s=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 6NuzUbU7VNJr64nySEbISxY0t/ZB6zL/PoRsNLbJWCg5079mImvMl/qhzSey0EeGmkjO3CD2dR 6vPtDjDqfdYWFDlh9TrEnXwogLwBmUcbp4DVCvcoxRYUmx2dPdvTMm5IqgW1tf0sgcYyvnLOVe 6ZFsHxaA0apvYwhrQXSZkvzw6TrK2g2V67Pv9+jBaJLbzHaDP+qt/BUbXm8nhKudp5bEs/v6lM tbZilJjdK/rXR27ao5etLmPn1FTinFSGQJYZMv1FvpcionNZtOhg+Us87JoYxyaIwPQM2TnX9E n/kMb2ywBwGUELnVslKdRnJz X-SBRS: 5.1 X-MesageID: 59064048 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:w5RAOaAkwDcMhxVW/9zkw5YqxClBgxIJ4kV8jS/XYbTApGt21GRUz 2cbCGGEP/veY2bwetpxaNzgoBgO75Pdy4AxQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMo/u1Si6FatANl1ElvU2zbue6WLGs1hxZH1c+EX5400w7wYbVv6Yz6TSHK1LV0 T/Ni5W31G+Ng1aY5UpNtspvADs21BjDkGtwUm4WPJinj3eH/5UhN7oNJLnZEpfNatI88thW5 Qr05OrREmvxp3/BAz4++1rxWhVirrX6ZWBihpfKMkQLb9crSiEai84G2PQghUh/hRWmm9F9m IpxtpGyFB4sJbyLu/oWekwNe81+FfUuFL7vJHG+tYqYzlHccmuqyPJrZK00FdRGoKAtWzgIr KFGbmBWBvyAr7veLLaTY+9gnMk8auLsO5sSoCpIxjDFF/c2B5vERs0m4PcFjW9u2pgSTZ4yY eI/RiZFahrPcSdAFXw9CpEnx/awgCjWJmgwRFW9+vNsvjm7IBZK+KfpGMrYfJqNX8o9tkSFo mPL+UzpDxdcM8aQoRKe6W6ljOLLmSL9WaoRGae++/osh0ecrkQDBRtTWValrP2Rjk+lR8kZO 0ES4jApr6U56AqsVNaVdz+SrWOAvxUcc8FNCOB84waIopc4+C7AWDJCFGQYLoV76olmHlTGy 2NlgfvnJRNrsbHFFk6e+7XJtDapKG82M2QrMHpsoRQ+3/Hvp4Q6jxTqR9llEbKogtCdJQwc0 wxmvwBl2exN0JdjO7GTuAme3mny/sShohsdv12PBgqYAhVFiJlJjmBCwXzS9r5+IYmQVTFtV 1BUypHFvIji4Xxg/RFhodnh/pn1uJ5p0xWG2DaD+qXNERz2oBZPmqgKvVlDyL9BaJpsRNMQS Ba7VfltzJFSJmC2SqR8fpi8Dc8npYC5S4+6Bq6JMYsSPMQqHONiwM2ITRXLt4wKuBJx+ZzTx L/BKZr8ZZrkIfgPIMWKqxc1juZwm3FWKZL7TpHn1RW3uYdyl1bOIYrpxGCmN7hjhIvd+V292 48Ga6OilkUOOMWjM3K/2dNCcjg3wY0TWMmeRzp/LbXYfGKL2QgJVpfs/F/WU9A/wvkOyL6Xp irVt40x4AOXuEAr4D6iMhhLAI4Dl74mxZ7iFSBzb1uuxVY5ZoOjsPUWe5ctJOF1/+1/1/9kC fICfpzYUPhITz3G/RUbbIX889M+JEj621rWMnr3eiU7cr5hWxfNpo3ucDzw+XRcFSGwr8Y// eGtj1uJXZoZSg1+J8/Kc/bznUiptH0QlbsqDUvFK9VeYmv2941uJ3Cjh/M7OZhUex7C2iGbx 0CdBhJB/bvBpIo88d/og6GYrtj2T7siTxQCR2SCtOS4LyjX+Gan0LRsaufQcGCPTn7w9YWje f5Rk6P2PsoYkQsYqIF7Cbtqk/4zvoO9u79Aww14N3zXdFD3WKh4K3yL0MQT5K1AwrhV5Vm/V k6Vo4QIPLyIPIXuEUILJRpjZeOGjKlGlj7X5PUzAUP7+C4oo+bXDRQMZ0GB2H5HMb94EII52 uNw6scZ5ju2hgcuLtvb3Dtf8H6BLyBYXqgq3n3A7FQHVub/Jol+XKHh IronPort-HdrOrdr: A9a23:HtMOIKkob7sQp65A+tkvmdMLWz3pDfI/3DAbv31ZSRFFG/Fw9v re/8jzuiWftN98YhwdcLO7WJVoI0mzyXcd2+B4VotKOjOLhILCFuBfBOXZrAEJ30bFh4tgPW AKSdkdNOHN X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59064048" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 12/65] xen: Annotate fnptr targets from IPIs Date: Fri, 26 Nov 2021 12:33:53 +0000 Message-ID: <20211126123446.32324-13-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932064700100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/acpi/cpu_idle.c | 2 +- xen/arch/x86/acpi/cpufreq/cpufreq.c | 8 ++++---- xen/arch/x86/acpi/cpufreq/powernow.c | 6 +++--- xen/arch/x86/acpi/lib.c | 2 +- xen/arch/x86/cpu/amd.c | 2 +- xen/arch/x86/cpu/mcheck/amd_nonfatal.c | 2 +- xen/arch/x86/cpu/mcheck/mce.c | 6 +++--- xen/arch/x86/cpu/mcheck/mce_intel.c | 2 +- xen/arch/x86/cpu/mcheck/non-fatal.c | 2 +- xen/arch/x86/cpu/microcode/core.c | 2 +- xen/arch/x86/cpu/mtrr/generic.c | 2 +- xen/arch/x86/cpu/mtrr/main.c | 2 +- xen/arch/x86/cpu/mwait-idle.c | 6 +++--- xen/arch/x86/cpu/vpmu.c | 4 ++-- xen/arch/x86/guest/xen/xen.c | 2 +- xen/arch/x86/hvm/nestedhvm.c | 3 +-- xen/arch/x86/hvm/vmx/vmcs.c | 2 +- xen/arch/x86/irq.c | 4 ++-- xen/arch/x86/nmi.c | 2 +- xen/arch/x86/oprofile/nmi_int.c | 10 +++++----- xen/arch/x86/oprofile/op_model_athlon.c | 2 +- xen/arch/x86/platform_hypercall.c | 4 ++-- xen/arch/x86/psr.c | 2 +- xen/arch/x86/shutdown.c | 4 ++-- xen/arch/x86/smp.c | 2 +- xen/arch/x86/sysctl.c | 2 +- xen/arch/x86/time.c | 8 ++++---- xen/common/cpu.c | 4 ++-- xen/common/gdbstub.c | 2 +- xen/common/keyhandler.c | 2 +- xen/common/page_alloc.c | 2 +- xen/include/asm-x86/mtrr.h | 2 +- 32 files changed, 53 insertions(+), 54 deletions(-) diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index fb47eb9ad68e..22c8bb0c2d94 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -145,7 +145,7 @@ struct hw_residencies uint64_t cc7; }; =20 -static void do_get_hw_residencies(void *arg) +static void cf_check do_get_hw_residencies(void *arg) { struct cpuinfo_x86 *c =3D ¤t_cpu_data; struct hw_residencies *hw_res =3D arg; diff --git a/xen/arch/x86/acpi/cpufreq/cpufreq.c b/xen/arch/x86/acpi/cpufre= q/cpufreq.c index 9510f05340aa..8133c2dd958c 100644 --- a/xen/arch/x86/acpi/cpufreq/cpufreq.c +++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c @@ -129,7 +129,7 @@ struct drv_cmd { u32 val; }; =20 -static void do_drv_read(void *drvcmd) +static void cf_check do_drv_read(void *drvcmd) { struct drv_cmd *cmd; =20 @@ -148,7 +148,7 @@ static void do_drv_read(void *drvcmd) } } =20 -static void do_drv_write(void *drvcmd) +static void cf_check do_drv_write(void *drvcmd) { struct drv_cmd *cmd; uint64_t msr_content; @@ -244,7 +244,7 @@ struct perf_pair { static DEFINE_PER_CPU(struct perf_pair, gov_perf_pair); static DEFINE_PER_CPU(struct perf_pair, usr_perf_pair); =20 -static void read_measured_perf_ctrs(void *_readin) +static void cf_check read_measured_perf_ctrs(void *_readin) { struct perf_pair *readin =3D _readin; =20 @@ -340,7 +340,7 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cp= u) return extract_freq(get_cur_val(cpumask_of(cpu)), data); } =20 -static void feature_detect(void *info) +static void cf_check feature_detect(void *info) { struct cpufreq_policy *policy =3D info; unsigned int eax; diff --git a/xen/arch/x86/acpi/cpufreq/powernow.c b/xen/arch/x86/acpi/cpufr= eq/powernow.c index da8fc40b9a6f..ca71ecf72d67 100644 --- a/xen/arch/x86/acpi/cpufreq/powernow.c +++ b/xen/arch/x86/acpi/cpufreq/powernow.c @@ -44,12 +44,12 @@ =20 #define ARCH_CPU_FLAG_RESUME 1 =20 -static void transition_pstate(void *pstate) +static void cf_check transition_pstate(void *pstate) { wrmsrl(MSR_PSTATE_CTRL, *(unsigned int *)pstate); } =20 -static void update_cpb(void *data) +static void cf_check update_cpb(void *data) { struct cpufreq_policy *policy =3D data; =20 @@ -165,7 +165,7 @@ struct amd_cpu_data { u32 max_hw_pstate; }; =20 -static void get_cpu_data(void *arg) +static void cf_check get_cpu_data(void *arg) { struct amd_cpu_data *data =3D arg; struct processor_performance *perf =3D data->perf; diff --git a/xen/arch/x86/acpi/lib.c b/xen/arch/x86/acpi/lib.c index b66e7338e74d..43831b92d132 100644 --- a/xen/arch/x86/acpi/lib.c +++ b/xen/arch/x86/acpi/lib.c @@ -99,7 +99,7 @@ unsigned int acpi_get_processor_id(unsigned int cpu) return INVALID_ACPIID; } =20 -static void get_mwait_ecx(void *info) +static void cf_check get_mwait_ecx(void *info) { *(u32 *)info =3D cpuid_ecx(CPUID_MWAIT_LEAF); } diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c index f87484b7ce61..f1c32c2787c9 100644 --- a/xen/arch/x86/cpu/amd.c +++ b/xen/arch/x86/cpu/amd.c @@ -430,7 +430,7 @@ static void disable_c1_ramping(void) } } =20 -static void disable_c1e(void *unused) +static void cf_check disable_c1e(void *unused) { uint64_t msr_content; =20 diff --git a/xen/arch/x86/cpu/mcheck/amd_nonfatal.c b/xen/arch/x86/cpu/mche= ck/amd_nonfatal.c index da0bf85f0223..efb45c931e1f 100644 --- a/xen/arch/x86/cpu/mcheck/amd_nonfatal.c +++ b/xen/arch/x86/cpu/mcheck/amd_nonfatal.c @@ -79,7 +79,7 @@ static int variable_period =3D 1; * Collects information of correctable errors and notifies * Dom0 via an event. */ -static void mce_amd_checkregs(void *info) +static void cf_check mce_amd_checkregs(void *info) { mctelem_cookie_t mctc; struct mca_summary bs; diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index a449fa0424ce..43f6c8471a90 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -961,7 +961,7 @@ void x86_mcinfo_dump(struct mc_info *mi) } while ( 1 ); } =20 -static void do_mc_get_cpu_info(void *v) +static void cf_check do_mc_get_cpu_info(void *v) { int cpu =3D smp_processor_id(); int cindex, cpn; @@ -1242,7 +1242,7 @@ static void x86_mc_hwcr_wren_restore(uint64_t hwcr) wrmsrl(MSR_K8_HWCR, hwcr); } =20 -static void x86_mc_msrinject(void *data) +static void cf_check x86_mc_msrinject(void *data) { struct xen_mc_msrinject *mci =3D data; struct mcinfo_msr *msr; @@ -1274,7 +1274,7 @@ static void x86_mc_msrinject(void *data) } =20 /*ARGSUSED*/ -static void x86_mc_mceinject(void *data) +static void cf_check x86_mc_mceinject(void *data) { printk("Simulating #MC on cpu %d\n", smp_processor_id()); __asm__ __volatile__("int $0x12"); diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/= mce_intel.c index 343bdb3a22ef..239b0b32327c 100644 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c @@ -599,7 +599,7 @@ static void mce_set_owner(void) cmci_discover(); } =20 -static void __cpu_mcheck_distribute_cmci(void *unused) +static void cf_check __cpu_mcheck_distribute_cmci(void *unused) { cmci_discover(); } diff --git a/xen/arch/x86/cpu/mcheck/non-fatal.c b/xen/arch/x86/cpu/mcheck/= non-fatal.c index f7e411c0870e..1c0c32ba0821 100644 --- a/xen/arch/x86/cpu/mcheck/non-fatal.c +++ b/xen/arch/x86/cpu/mcheck/non-fatal.c @@ -32,7 +32,7 @@ static uint64_t period =3D MCE_PERIOD; static int adjust =3D 0; static int variable_period =3D 1; =20 -static void mce_checkregs (void *info) +static void cf_check mce_checkregs(void *info) { mctelem_cookie_t mctc; struct mca_summary bs; diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode= /core.c index 9631042190ab..841364208053 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -533,7 +533,7 @@ static int control_thread_fn(const struct microcode_pat= ch *patch) return ret; } =20 -static int do_microcode_update(void *patch) +static int cf_check do_microcode_update(void *patch) { unsigned int cpu =3D smp_processor_id(); int ret; diff --git a/xen/arch/x86/cpu/mtrr/generic.c b/xen/arch/x86/cpu/mtrr/generi= c.c index 883e3398ff71..7cf4cd01f3f6 100644 --- a/xen/arch/x86/cpu/mtrr/generic.c +++ b/xen/arch/x86/cpu/mtrr/generic.c @@ -84,7 +84,7 @@ bool is_var_mtrr_overlapped(const struct mtrr_state *m) return false; } =20 -void mtrr_save_fixed_ranges(void *info) +void cf_check mtrr_save_fixed_ranges(void *info) { get_fixed_ranges(mtrr_state.fixed_ranges); } diff --git a/xen/arch/x86/cpu/mtrr/main.c b/xen/arch/x86/cpu/mtrr/main.c index 428133100d46..4e01c8d6f9df 100644 --- a/xen/arch/x86/cpu/mtrr/main.c +++ b/xen/arch/x86/cpu/mtrr/main.c @@ -131,7 +131,7 @@ struct set_mtrr_data { */ int hold_mtrr_updates_on_aps; =20 -static void ipi_handler(void *info) +static void cf_check ipi_handler(void *info) /* [SUMMARY] Synchronisation handler. Executed by "other" CPUs. [RETURNS] Nothing. */ diff --git a/xen/arch/x86/cpu/mwait-idle.c b/xen/arch/x86/cpu/mwait-idle.c index f2444bcff146..7a4b0837a01f 100644 --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -836,7 +836,7 @@ static void mwait_idle(void) cpuidle_current_governor->reflect(power); } =20 -static void auto_demotion_disable(void *dummy) +static void cf_check auto_demotion_disable(void *dummy) { u64 msr_bits; =20 @@ -845,13 +845,13 @@ static void auto_demotion_disable(void *dummy) wrmsrl(MSR_PKG_CST_CONFIG_CONTROL, msr_bits); } =20 -static void byt_auto_demotion_disable(void *dummy) +static void cf_check byt_auto_demotion_disable(void *dummy) { wrmsrl(MSR_CC6_DEMOTION_POLICY_CONFIG, 0); wrmsrl(MSR_MC6_DEMOTION_POLICY_CONFIG, 0); } =20 -static void c1e_promotion_disable(void *dummy) +static void cf_check c1e_promotion_disable(void *dummy) { u64 msr_bits; =20 diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c index fec94a00e9a2..42d62271a1b0 100644 --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -339,7 +339,7 @@ void vpmu_do_interrupt(struct cpu_user_regs *regs) #endif } =20 -static void vpmu_save_force(void *arg) +static void cf_check vpmu_save_force(void *arg) { struct vcpu *v =3D arg; struct vpmu_struct *vpmu =3D vcpu_vpmu(v); @@ -547,7 +547,7 @@ void vpmu_initialise(struct vcpu *v) put_vpmu(v); } =20 -static void vpmu_clear_last(void *arg) +static void cf_check vpmu_clear_last(void *arg) { if ( this_cpu(last_vcpu) =3D=3D arg ) this_cpu(last_vcpu) =3D NULL; diff --git a/xen/arch/x86/guest/xen/xen.c b/xen/arch/x86/guest/xen/xen.c index 2ff63d370a8a..b2aa3a009b4a 100644 --- a/xen/arch/x86/guest/xen/xen.c +++ b/xen/arch/x86/guest/xen/xen.c @@ -289,7 +289,7 @@ int xg_free_unused_page(mfn_t mfn) return rangeset_remove_range(mem, mfn_x(mfn), mfn_x(mfn)); } =20 -static void ap_resume(void *unused) +static void cf_check ap_resume(void *unused) { BUG_ON(map_vcpuinfo()); BUG_ON(init_evtchn()); diff --git a/xen/arch/x86/hvm/nestedhvm.c b/xen/arch/x86/hvm/nestedhvm.c index 3cf812609acf..12944030bc67 100644 --- a/xen/arch/x86/hvm/nestedhvm.c +++ b/xen/arch/x86/hvm/nestedhvm.c @@ -84,8 +84,7 @@ nestedhvm_vcpu_destroy(struct vcpu *v) hvm_funcs.nhvm_vcpu_destroy(v); } =20 -static void -nestedhvm_flushtlb_ipi(void *info) +static void cf_check nestedhvm_flushtlb_ipi(void *info) { struct vcpu *v =3D current; struct domain *d =3D info; diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 3d1ca248ffde..98fe91aff80b 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -589,7 +589,7 @@ static void vmx_free_vmcs(paddr_t pa) free_domheap_page(maddr_to_page(pa)); } =20 -static void __vmx_clear_vmcs(void *info) +static void cf_check __vmx_clear_vmcs(void *info) { struct vcpu *v =3D info; struct vmx_vcpu *vmx =3D &v->arch.hvm.vmx; diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index f9c808455535..d9bd355113d7 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -1127,7 +1127,7 @@ static inline void clear_pirq_eoi(struct domain *d, u= nsigned int irq) } } =20 -static void set_eoi_ready(void *data); +static void cf_check set_eoi_ready(void *data); =20 static void cf_check irq_guest_eoi_timer_fn(void *data) { @@ -1398,7 +1398,7 @@ static void __set_eoi_ready(const struct irq_desc *de= sc) } =20 /* Mark specified IRQ as ready-for-EOI (if it really is) and attempt to EO= I. */ -static void set_eoi_ready(void *data) +static void cf_check set_eoi_ready(void *data) { struct irq_desc *desc =3D data; =20 diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index c8ae4a5d7460..e20d1393c881 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -149,7 +149,7 @@ int nmi_active; (P4_CCCR_OVF_PMI0|P4_CCCR_THRESHOLD(15)|P4_CCCR_COMPLEMENT| \ P4_CCCR_COMPARE|P4_CCCR_REQUIRED|P4_CCCR_ESCR_SELECT(4)|P4_CCCR_ENABL= E) =20 -static void __init wait_for_nmis(void *p) +static void __init cf_check wait_for_nmis(void *p) { unsigned int start_count =3D this_cpu(nmi_count); unsigned long ticks =3D 10 * 1000 * cpu_khz / nmi_hz; diff --git a/xen/arch/x86/oprofile/nmi_int.c b/xen/arch/x86/oprofile/nmi_in= t.c index ba9c4b9804ca..6ebe20bd1d3e 100644 --- a/xen/arch/x86/oprofile/nmi_int.c +++ b/xen/arch/x86/oprofile/nmi_int.c @@ -131,7 +131,7 @@ static void nmi_cpu_save_registers(struct op_msrs *msrs) } =20 =20 -static void nmi_save_registers(void * dummy) +static void cf_check nmi_save_registers(void *dummy) { int cpu =3D smp_processor_id(); struct op_msrs * msrs =3D &cpu_msrs[cpu]; @@ -179,7 +179,7 @@ static int allocate_msrs(void) } =20 =20 -static void nmi_cpu_setup(void * dummy) +static void cf_check nmi_cpu_setup(void *dummy) { int cpu =3D smp_processor_id(); struct op_msrs * msrs =3D &cpu_msrs[cpu]; @@ -245,7 +245,7 @@ static void nmi_restore_registers(struct op_msrs * msrs) } =20 =20 -static void nmi_cpu_shutdown(void * dummy) +static void cf_check nmi_cpu_shutdown(void *dummy) { int cpu =3D smp_processor_id(); struct op_msrs * msrs =3D &cpu_msrs[cpu]; @@ -261,7 +261,7 @@ void nmi_release_counters(void) } =20 =20 -static void nmi_cpu_start(void * dummy) +static void cf_check nmi_cpu_start(void *dummy) { int cpu =3D smp_processor_id(); struct op_msrs const * msrs =3D &cpu_msrs[cpu]; @@ -278,7 +278,7 @@ int nmi_start(void) } =20 =20 -static void nmi_cpu_stop(void * dummy) +static void cf_check nmi_cpu_stop(void *dummy) { unsigned int v; int cpu =3D smp_processor_id(); diff --git a/xen/arch/x86/oprofile/op_model_athlon.c b/xen/arch/x86/oprofil= e/op_model_athlon.c index ee6eb0ecae79..2177f02946e2 100644 --- a/xen/arch/x86/oprofile/op_model_athlon.c +++ b/xen/arch/x86/oprofile/op_model_athlon.c @@ -436,7 +436,7 @@ static void athlon_stop(struct op_msrs const * const ms= rs) #define APIC_EILVT_MSG_NMI 0x4 #define APIC_EILVT_LVTOFF_IBS 1 #define APIC_EILVTn(n) (0x500 + 0x10 * n) -static inline void __init init_ibs_nmi_per_cpu(void *arg) +static inline void __init cf_check init_ibs_nmi_per_cpu(void *arg) { unsigned long reg; =20 diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hype= rcall.c index 5e3208862c2f..fe803de15979 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -47,7 +47,7 @@ struct resource_access { =20 long cf_check cpu_frequency_change_helper(void *); void check_resource_access(struct resource_access *); -void resource_access(void *); +void cf_check resource_access(void *); =20 #ifndef COMPAT typedef long ret_t; @@ -146,7 +146,7 @@ void check_resource_access(struct resource_access *ra) ra->nr_done =3D i; } =20 -void resource_access(void *info) +void cf_check resource_access(void *info) { struct resource_access *ra =3D info; unsigned int i; diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index 5b9991bd5b12..6c9cabf3843d 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -1247,7 +1247,7 @@ struct cos_write_info const uint32_t *val; }; =20 -static void do_write_psr_msrs(void *data) +static void cf_check do_write_psr_msrs(void *data) { const struct cos_write_info *info =3D data; unsigned int i, index, cos =3D info->cos; diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c index ad3e3a76916f..30985d36a612 100644 --- a/xen/arch/x86/shutdown.c +++ b/xen/arch/x86/shutdown.c @@ -118,7 +118,7 @@ static inline void kb_wait(void) break; } =20 -static void noreturn __machine_halt(void *unused) +static void noreturn cf_check __machine_halt(void *unused) { local_irq_disable(); =20 @@ -548,7 +548,7 @@ static int __init cf_check reboot_init(void) } __initcall(reboot_init); =20 -static void noreturn __machine_restart(void *pdelay) +static void cf_check noreturn __machine_restart(void *pdelay) { machine_restart(*(unsigned int *)pdelay); } diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index f4952a6bf9a5..f6fd7f95df58 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -339,7 +339,7 @@ void __stop_this_cpu(void) cpumask_clear_cpu(smp_processor_id(), &cpu_online_map); } =20 -static void stop_this_cpu(void *dummy) +static void cf_check stop_this_cpu(void *dummy) { __stop_this_cpu(); for ( ; ; ) diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c index 1772f51f8f6e..f82abc248885 100644 --- a/xen/arch/x86/sysctl.c +++ b/xen/arch/x86/sysctl.c @@ -69,7 +69,7 @@ struct l3_cache_info { unsigned long size; }; =20 -static void l3_cache_get(void *arg) +static void cf_check l3_cache_get(void *arg) { struct cpuid4_info info; struct l3_cache_info *l3_info =3D arg; diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index b60c614bab6e..ea34b4343c17 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1656,7 +1656,7 @@ static void check_tsc_warp(unsigned long tsc_khz, uns= igned long *max_warp) static unsigned long tsc_max_warp, tsc_check_count; static cpumask_t tsc_check_cpumask; =20 -static void tsc_check_slave(void *unused) +static void cf_check tsc_check_slave(void *unused) { unsigned int cpu =3D smp_processor_id(); local_irq_disable(); @@ -1804,7 +1804,7 @@ static void time_calibration_tsc_rendezvous(void *_r) } =20 /* Ordinary rendezvous function which does not modify TSC values. */ -static void time_calibration_std_rendezvous(void *_r) +static void cf_check time_calibration_std_rendezvous(void *_r) { struct calibration_rendezvous *r =3D _r; unsigned int total_cpus =3D cpumask_weight(&r->cpu_calibration_map); @@ -1835,7 +1835,7 @@ static void time_calibration_std_rendezvous(void *_r) * Rendezvous function used when clocksource is TSC and * no CPU hotplug will be performed. */ -static void time_calibration_nop_rendezvous(void *rv) +static void cf_check time_calibration_nop_rendezvous(void *rv) { const struct calibration_rendezvous *r =3D rv; struct cpu_time_stamp *c =3D &this_cpu(cpu_calibration); @@ -2027,7 +2027,7 @@ static void __init tsc_check_writability(void) disable_tsc_sync =3D true; } =20 -static void __init reset_percpu_time(void *unused) +static void __init cf_check reset_percpu_time(void *unused) { struct cpu_time *t =3D &this_cpu(cpu_time); =20 diff --git a/xen/common/cpu.c b/xen/common/cpu.c index 1f976db0a51f..b0b63cdb3638 100644 --- a/xen/common/cpu.c +++ b/xen/common/cpu.c @@ -84,13 +84,13 @@ static int cpu_notifier_call_chain(unsigned int cpu, un= signed long action, return ret; } =20 -static void _take_cpu_down(void *unused) +static void cf_check _take_cpu_down(void *unused) { cpu_notifier_call_chain(smp_processor_id(), CPU_DYING, NULL, true); __cpu_disable(); } =20 -static int take_cpu_down(void *arg) +static int cf_check take_cpu_down(void *arg) { _take_cpu_down(arg); return 0; diff --git a/xen/common/gdbstub.c b/xen/common/gdbstub.c index 99bfd9a654c9..079c3ca9616a 100644 --- a/xen/common/gdbstub.c +++ b/xen/common/gdbstub.c @@ -660,7 +660,7 @@ static int __init cf_check initialise_gdb(void) } presmp_initcall(initialise_gdb); =20 -static void gdb_pause_this_cpu(void *unused) +static void cf_check gdb_pause_this_cpu(void *unused) { unsigned long flags; =20 diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c index 8b9f37837162..2c916d528ab2 100644 --- a/xen/common/keyhandler.c +++ b/xen/common/keyhandler.c @@ -360,7 +360,7 @@ static cpumask_t read_clocks_cpumask; static DEFINE_PER_CPU(s_time_t, read_clocks_time); static DEFINE_PER_CPU(u64, read_cycles_time); =20 -static void read_clocks_slave(void *unused) +static void cf_check read_clocks_slave(void *unused) { unsigned int cpu =3D smp_processor_id(); local_irq_disable(); diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 8789ec81b6df..a95dd14f63b4 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1898,7 +1898,7 @@ void __init end_boot_allocator(void) printk("\n"); } =20 -static void __init smp_scrub_heap_pages(void *data) +static void __init cf_check smp_scrub_heap_pages(void *data) { unsigned long mfn, start, end; struct page_info *pg; diff --git a/xen/include/asm-x86/mtrr.h b/xen/include/asm-x86/mtrr.h index e0fd1005ce72..7733800b798f 100644 --- a/xen/include/asm-x86/mtrr.h +++ b/xen/include/asm-x86/mtrr.h @@ -64,7 +64,7 @@ struct mtrr_state { }; extern struct mtrr_state mtrr_state; =20 -extern void mtrr_save_fixed_ranges(void *); +extern void cf_check mtrr_save_fixed_ranges(void *); extern void mtrr_save_state(void); extern int mtrr_add(unsigned long base, unsigned long size, unsigned int type, char increment); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931916; cv=none; d=zohomail.com; s=zohoarc; b=OGqv9NjB4wV83VE2mm0izJ40iMcE74QiU9PB/jSs1PqeVPmwFx4llKA/ouTkdGqax4WLWwsETTDsag1iWOe7U6CddPTwsH4zZEgHibxXiI8wnPmVZaBU1qIYZb+dzLm7yLqsItROQsnC9ma8vrvf0yVFEXxluzS/tywT3RyoNJg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931916; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uJN+cBa2yFcja3aJRNbxIGB6curIJoXHRHL6FyNvlqo=; b=J6HkBotDVQGtEoq8IH448L9vCXDTTDY+xhcPpce3MaRreE4w5smfhrsr2pVGzQc6IWaE+CgRs2FuLLyTg8HutTqFv0Rs1WpQsVi694dSfMLIQHDiF7Sy5IRAT/UeImoU4UBXfCOV+jJooylvw9AwUB/QfXn5HC9750n8TDebMWg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931916406231.71417901754728; Fri, 26 Nov 2021 05:05:16 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232754.403665 (Exim 4.92) (envelope-from ) id 1mqauQ-0004yx-Dr; Fri, 26 Nov 2021 13:04:58 +0000 Received: by outflank-mailman (output) from mailman id 232754.403665; Fri, 26 Nov 2021 13:04:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauQ-0004xK-56; Fri, 26 Nov 2021 13:04:58 +0000 Received: by outflank-mailman (input) for mailman id 232754; Fri, 26 Nov 2021 13:04:56 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauO-0003W9-JE for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:56 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 73534a72-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:04:55 +0100 (CET) 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: 73534a72-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931895; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Degf477TCtQ3FmowYF+lOZnis5KOFl3+kW7P+vUMuYY=; b=H+XzcUyQaqH+ckcmGQTOqLsup8sn70SJQDL+Y5z6FVYnzqTl9+h0xeDy 8DyqmUmJI9kRWWmtQpVTFV37+5LjZmrfiPuapzqw5IzuGU9o/PR89ntrz ixtMjQGAlwWZquwD5vDywx0bDA1UdqXVjDACTkE6MFyPE7rV6ns+MAIji Q=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: S1H98ih+QfrsJlL1I6ZDXlwgw168vOd0Me5EUfzsKA+uvBpAg7qucL9EQ9wkGXRfWEsnnnBk+3 ldVtCfDSNhdFWrQFVzEkJh++lga4vNG+ppaQCeHqucJbPjYQ/WUgUgsvTsO3hN+IyOl98UYbUK aUiLJ5YZ1uvHGHuj+GraK1V1SoeEWb+75XWqVWg9T4JGbrZdUW/7xcBZISFDmfa+bPQt9d4qP1 KFQb/qpjZkcHYDaXz38nrvCeooWH9bdGyr8Z5pSG649QvOiiUWd3s01cYu29tMp17DHRHV7p2t mjNErD6SdXLDgMSnFIAZyDFB X-SBRS: 5.1 X-MesageID: 58634956 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:bRQitqtRba3EWiS2HQ43Q83e9OfnVKNZMUV32f8akzHdYApBsoF/q tZmKW+BaP+NZ2r9L9BzOti2/B8EscLdzNVjSAtlpC8xRS1D+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Npl5K2gbxsRJaL2gMsEXT1IKhlMMLIaweqSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5RCNWsyMnwsZTV0Jn4bEsMcrNyplyP/QgMEgmyq9aootj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKhMHMN2SzxKV/3TqgfXA9QvgQ54bHrC88v9sgXWQy3YVBRlQUkG0ydGph0j7V99BJ kg8/is1sbN05EGtVsP6XRCzvDiDpBF0c/h6HvA+6QqN4rHJ+AvfDW8BJgOtc/R/6pVwH2Zzk AbUwZW5XlSDrYF5V1rMx6eysQupNhINAnYMQT89dTkI/IXa9dRbYg30cv5vF6u8j9vQED72w iyXoCVWu4j/nfLnxI3gowmZ3mvESozhC1dsu16JBj7NAhZRPdb9P+SVBU7nAeGsxWpzZn2Ip zA6lseX94ji5rndxXXWEI3h8FxEjstp0QEwY3YzQPHNFBz3ohZPmLy8Bhklfy+F1e5eJFfUj Lf741852XOqFCLCgVVLS4ywEd826qPrCM7oUPvZBvIXPMMuJFHao3AyOxLLt4wIrKTKufpkU Xt8WZzxZUv29Iw9lGbmLwvj+eNDKt8CKZP7GsmgkkXPPUu2b3+JU7YVWGZinchihJ5oVD79q o4FX+PTkk03eLSnPkH/rN5CRXhXfCNTLc2n9KRqmhurf1MO9JcJUKSKn9vMuuVNwsxoqws/1 i3nBxIDlgOg3SavxMfjQikLVY4DlK1X9RoTVRHA937ys5T6SYrwvqoZabUterwrqL5qwfJuF qFXcMScGPVfDD/A/m1FP5X6qYVjcjWthB6PYHX5MGRuIcY4Slyb4MLgcyvu6DIKUni9u/whr uDyzQjcW5cCGVhvVZ6EdPK1wlqtlnEBg+YuDVDQK9xedRy0oohnIiD8lNEtJMQIJUmRzzeWz V/OUxwZufPMs8k+99yQ3fKIqIKgEu1fGEtGHjaEsebqZHeCpmf6mN1OSueFezzZRVjYwqT6a LUH1ez4Pd0GgE1O79h2HYF0wP9s/NDovbJbkFhpRS2Zc1SxB7p8CXCaxs0T5LZVz7pUtAbqC EKC/t5WZeeANM//SQNDIQMkaqKI1O0OmymU5vMweR2o6Chy9buBcENTIxjT13ANcOoraNsok bU7pcobyw2jkR57YN+Jgxdd+3mIMnFdAb4ssYsXAdOzhwcmor2YjUcw1sMiDEmzVuhx IronPort-HdrOrdr: A9a23:rbnQl67AUyJohka1ZAPXwPLXdLJyesId70hD6qhwISY1TiX+rb HXoB17726MtN9/YgBCpTntAsa9qDbnhPpICOoqTNGftWvdyQmVxehZhOOIqVCNJ8S9zJ876U 4JSdkENDSaNzhHZKjBjjVQa+xQpeW6zA== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58634956" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 13/65] xen: Annotate fnptr targets from open_softirq() Date: Fri, 26 Nov 2021 12:33:54 +0000 Message-ID: <20211126123446.32324-14-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931917741100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/cpu/mcheck/mce.c | 2 +- xen/arch/x86/domain.c | 2 +- xen/arch/x86/pv/traps.c | 2 +- xen/arch/x86/smp.c | 2 +- xen/arch/x86/time.c | 2 +- xen/common/rcupdate.c | 2 +- xen/common/sched/core.c | 6 +++--- xen/common/tasklet.c | 2 +- xen/common/timer.c | 2 +- xen/drivers/passthrough/x86/hvm.c | 2 +- xen/include/asm-x86/flushtlb.h | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index 43f6c8471a90..3467e0f1a315 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -1837,7 +1837,7 @@ static int mce_delayed_action(mctelem_cookie_t mctc) } =20 /* Softirq Handler for this MCE# processing */ -static void mce_softirq(void) +static void cf_check mce_softirq(void) { static DEFINE_MCE_BARRIER(mce_inside_bar); static DEFINE_MCE_BARRIER(mce_severity_bar); diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index f943283b2a88..1c3a1ec2a080 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -2523,7 +2523,7 @@ void vcpu_mark_events_pending(struct vcpu *v) vcpu_kick(v); } =20 -static void vcpu_kick_softirq(void) +static void cf_check vcpu_kick_softirq(void) { /* * Nothing to do here: we merely prevent notifiers from racing with ch= ecks diff --git a/xen/arch/x86/pv/traps.c b/xen/arch/x86/pv/traps.c index 1d1cb0784c98..3e8ca8b6fc15 100644 --- a/xen/arch/x86/pv/traps.c +++ b/xen/arch/x86/pv/traps.c @@ -130,7 +130,7 @@ bool set_guest_nmi_trapbounce(void) =20 static DEFINE_PER_CPU(struct vcpu *, softirq_nmi_vcpu); =20 -static void nmi_softirq(void) +static void cf_check nmi_softirq(void) { struct vcpu **v_ptr =3D &this_cpu(softirq_nmi_vcpu); =20 diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index f6fd7f95df58..b9a696f61963 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -290,7 +290,7 @@ void flush_area_mask(const cpumask_t *mask, const void = *va, unsigned int flags) } =20 /* Call with no locks held and interrupts enabled (e.g., softirq context).= */ -void new_tlbflush_clock_period(void) +void cf_check new_tlbflush_clock_period(void) { cpumask_t allbutself; =20 diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index ea34b4343c17..1ebf5fca96cc 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1450,7 +1450,7 @@ int cpu_frequency_change(u64 freq) static DEFINE_PER_CPU(struct cpu_time_stamp, cpu_calibration); =20 /* Softirq handler for per-CPU time calibration. */ -static void local_time_calibration(void) +static void cf_check local_time_calibration(void) { struct cpu_time *t =3D &this_cpu(cpu_time); const struct cpu_time_stamp *c =3D &this_cpu(cpu_calibration); diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c index 423d6b1d6d02..212a99acd8c8 100644 --- a/xen/common/rcupdate.c +++ b/xen/common/rcupdate.c @@ -466,7 +466,7 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk = *rcp, rcu_do_batch(rdp); } =20 -static void rcu_process_callbacks(void) +static void cf_check rcu_process_callbacks(void) { struct rcu_data *rdp =3D &this_cpu(rcu_data); =20 diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 285de9ee2a19..b1836b591c0a 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -2568,7 +2568,7 @@ static struct sched_unit *sched_wait_rendezvous_in(st= ruct sched_unit *prev, return prev->next_task; } =20 -static void sched_slave(void) +static void cf_check sched_slave(void) { struct vcpu *v, *vprev =3D current; struct sched_unit *prev =3D vprev->sched_unit, *next; @@ -2632,7 +2632,7 @@ static void sched_slave(void) * - deschedule the current domain (scheduler independent). * - pick a new domain (scheduler dependent). */ -static void schedule(void) +static void cf_check schedule(void) { struct vcpu *vnext, *vprev =3D current; struct sched_unit *prev =3D vprev->sched_unit, *next =3D NULL; @@ -2928,7 +2928,7 @@ const cpumask_t *sched_get_opt_cpumask(enum sched_gra= n opt, unsigned int cpu) return mask; } =20 -static void schedule_dummy(void) +static void cf_check schedule_dummy(void) { sched_tasklet_check_cpu(smp_processor_id()); } diff --git a/xen/common/tasklet.c b/xen/common/tasklet.c index 1b16bbcdeb0b..3ad67b5c2493 100644 --- a/xen/common/tasklet.c +++ b/xen/common/tasklet.c @@ -135,7 +135,7 @@ void do_tasklet(void) } =20 /* Softirq context work */ -static void tasklet_softirq_action(void) +static void cf_check tasklet_softirq_action(void) { unsigned int cpu =3D smp_processor_id(); struct list_head *list =3D &per_cpu(softirq_tasklet_list, cpu); diff --git a/xen/common/timer.c b/xen/common/timer.c index b788050ea1d8..700f191a70b4 100644 --- a/xen/common/timer.c +++ b/xen/common/timer.c @@ -450,7 +450,7 @@ static void execute_timer(struct timers *ts, struct tim= er *t) } =20 =20 -static void timer_softirq_action(void) +static void cf_check timer_softirq_action(void) { struct timer *t, **heap, *next; struct timers *ts; diff --git a/xen/drivers/passthrough/x86/hvm.c b/xen/drivers/passthrough/x8= 6/hvm.c index fef350ef3a1d..7a6d9ac3d40d 100644 --- a/xen/drivers/passthrough/x86/hvm.c +++ b/xen/drivers/passthrough/x86/hvm.c @@ -999,7 +999,7 @@ int arch_pci_clean_pirqs(struct domain *d) * Note: 'pt_pirq_softirq_reset' can clear the STATE_SCHED before we get to * doing it. If that is the case we let 'pt_pirq_softirq_reset' do ref-cou= nting. */ -static void dpci_softirq(void) +static void cf_check dpci_softirq(void) { unsigned int cpu =3D smp_processor_id(); LIST_HEAD(our_list); diff --git a/xen/include/asm-x86/flushtlb.h b/xen/include/asm-x86/flushtlb.h index 0be2273387ed..18777f1d4c00 100644 --- a/xen/include/asm-x86/flushtlb.h +++ b/xen/include/asm-x86/flushtlb.h @@ -87,7 +87,7 @@ static inline void tlbflush_filter(cpumask_t *mask, uint3= 2_t page_timestamp) __cpumask_clear_cpu(cpu, mask); } =20 -void new_tlbflush_clock_period(void); +void cf_check new_tlbflush_clock_period(void); =20 /* Read pagetable base. */ static inline unsigned long read_cr3(void) --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932036; cv=none; d=zohomail.com; s=zohoarc; b=ThdRs2Ro+YO9cd4zbnUPX4sO/9m3lPVqzj/LfdGqjShLIIm04XwB/dDYdaKTRl33pBgKfyAkhzlKdbY01+/gBGLBjgMyt4VZcSFJXqxPE3OLEI9Tkp0HGLd8mzzz3a0JvQDF7Y1xYjZ5yCvZIHSXf33qmqrZgYqspVQ4VRx0Tqo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932036; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=r2eARmIg92gOpkjWc/+/kCtEYz1FjdgQOvhC+m+8KvM=; b=SzTqH1qLO/yZoztdEQ1IQxzRXmR/0QU3YO2WgmwkfcjjHbdRo1bVpdkWIo0+zDzrHyfxtlDPG2q1ZcMhN1YhYkCB8RhyiwP7B7NFHT18KGPuWQ6/snf6kNyOjf4AWXaTeZetASaX5Ongpu0HLjEaqdlAZk5P7gugs8rjU/2tjnU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932036323824.4328216237116; Fri, 26 Nov 2021 05:07:16 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232779.403777 (Exim 4.92) (envelope-from ) id 1mqawN-0003EY-D7; Fri, 26 Nov 2021 13:06:59 +0000 Received: by outflank-mailman (output) from mailman id 232779.403777; Fri, 26 Nov 2021 13:06:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawN-0003Cx-0q; Fri, 26 Nov 2021 13:06:59 +0000 Received: by outflank-mailman (input) for mailman id 232779; Fri, 26 Nov 2021 13:06:57 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqav2-0003W9-E9 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:36 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 888c72f9-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:31 +0100 (CET) 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: 888c72f9-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931931; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=+Yj6D2+acshv1iSbGPrkSTGlvdblgzXw318p1/29CF0=; b=Veah2gKcV38ttBvQmFkLzmkBozBXZCJYU/H9iybJ/WfzNZoPqyKRdRTI gBind72QHZCDhPNAMoCYeJPNb5kI5RptqXOAqyK50A1DGkQVEkuKgBadj v5ysAGPYgD31g2mS2ZRtnrZabVJNnbJJVfG3EKA94sPCkK0UlsZKmOXum 8=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: ql1grrFxBgNJMIlKfOMQmI/v0TsohdDfaRuX66TyObuz6R0ci13PVAUC+9/GI4Y7hmeLZxTsiH hTj/QXg4hMn7nu8wYpklLkVzarHZHX8BBu3WaLsfKfLOJR9ZlEPVvA0CSfENdztgbkmWN1otEt qwSHKyEfgjIxRyQQ/puLGqkia+MKeRL8IZXXbhrm0l9r9ueP5U5F4Ful4y8M7dof6hbex2aBLR wIqVDTLJBP9ZadpPIRpEySEoDNO46k8WCthDYTXn3VvZI2VIkLsd/9jk5WxWXJ1ni3PaqykWfj tBFJ/sZ6uV09QzcI4maishSf X-SBRS: 5.1 X-MesageID: 58676398 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:T9W9hKK0V8ul9+ZEFE+RCpIlxSXFcZb7ZxGr2PjKsXjdYENS0D1Rm GUcXWzTaP6JNjfxKIwlbYzno0wC6JDQx4M1SwdlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es5xbZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB3ZgvtY5 vgSsaaaWFwlF/XhlOohbilxRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Gpg2J8QRqeOD yYfQShlUlPCckdUAA9JJp0wrN2lmynlcyIN/Tp5ooJoujOOnWSdyoPFPMLOf92WRe1chkuCu n/d5GP9Hw0bM9qEjzGC9xqEiuDDkCzhUaoOBba48bhsm1TVyWsNYDUGWF3+rfSnh0qWX9NEN 1dS6icotbI19kGgUp/6RRLQnZKflkdCAZwKSbR8sVzTjPqPi+qEOoQaZm5cQ/UImZAyfxY7j VOgx/7lCwBSgJTAHBpx6YyohT+1PCEUK0oLaikFURYJ7rHfnW0jsv7cZo09SfDo17UZDRm1m mnX93Zm293/mOZSj/3jlW0rlQ5AsXQgouQdwgzMFlyo4QpiDGJOT9z5sAOLhRqswWvwc7Vgg JTms5TBhAztJcvU/MBofAnrNOryjxpiGGeB6WOD57F7q1yQF4eLJOi8Gg1WKkZzKdojcjT0e kLVsg45zMYNZyT6M/IoMt7vV59CIU3c+TLNDau8gj1mOMUZSeN61Hs2OR74M57FzCDAbp3Ty b/EKJ3xXB72+IxszSasRvd17FPY7ntW+I8nfriil07P+ePHPBa9EO5ZWHPTPrFRxP7V+239r ocAX/ZmPj0CCYUSlAGMqtVNRb3LRFBmba3LRzt/KrTef1E4QT55UJc8A9oJIuRYokicrc+Ql lnVZ6OS4ACXaaTvJVrYZ3Z9RqnoWJoj/3s3MTZ1ZQSj2mQ5YJbp56AaLsNlcb4i/e1l7Ph1U /haJJnQXqUREmzKq2YHcJ3wjI1+bxD31wiACDWoPWokdJl6Sg2XptK9Jlnz9DMDBzacvNclp +HyzRvSRJcOHlwwDMvfZP+14Um2uHwRxLB7U0fSe4EBc0Tw6ol6bSf2i6Zvcc0LLBzCwBqc1 hqXXkhE9bWc/ddt/YCQ166eroqvH+9vJWZgHjHWveSsKC3X3mu/2oscAuyGSi/QCTHv86K4a OQLk/ylaK8bnExHupZXGqpwyf5s/MPmorJXw1g2HHjPaFj3WLpsLmPfgJtKv6xJgLRYpRG3S gSE/dwDYeeFP8bsEVgwIgs5b7vciaFIy2eKtfllcl/n4CJX/aacVRQANhaBvyVRMb9pPd532 uwmosMXt1SyhxdC3gxqVcyIG7Bg9kA9bpg= IronPort-HdrOrdr: A9a23:tQCXTKBlW822GqzlHemU55DYdb4zR+YMi2TC1yhKJyC9Ffbo7v xG/c5rsyMc5wxwZJhNo7y90ey7MBbhHP1OkO4s1NWZLWrbUQKTRekIh+bfKn/baknDH4ZmpN 9dmsNFaeEYY2IUsS+D2njbL+od X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676398" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Daniel De Graaf , Daniel Smith Subject: [PATCH 14/65] xsm/flask: Annotate fnptr targets in the security server Date: Fri, 26 Nov 2021 12:33:55 +0000 Message-ID: <20211126123446.32324-15-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932038456100009 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich Reviewed-by: Daniel P. Smith --- CC: Daniel De Graaf CC: Daniel Smith --- xen/xsm/flask/ss/avtab.c | 4 ++-- xen/xsm/flask/ss/conditional.c | 10 ++++---- xen/xsm/flask/ss/conditional.h | 6 ++--- xen/xsm/flask/ss/policydb.c | 53 ++++++++++++++++++++++----------------= ---- xen/xsm/flask/ss/services.c | 6 ++--- xen/xsm/flask/ss/symtab.c | 5 ++-- 6 files changed, 44 insertions(+), 40 deletions(-) diff --git a/xen/xsm/flask/ss/avtab.c b/xen/xsm/flask/ss/avtab.c index bfc91c8b0c2c..55c2b4d8a46d 100644 --- a/xen/xsm/flask/ss/avtab.c +++ b/xen/xsm/flask/ss/avtab.c @@ -482,8 +482,8 @@ int avtab_read_item(struct avtab *a, void *fp, struct p= olicydb *pol, return insertf(a, &key, &datum, p); } =20 -static int avtab_insertf(struct avtab *a, struct avtab_key *k, - struct avtab_datum *d, voi= d *p) +static int cf_check avtab_insertf( + struct avtab *a, struct avtab_key *k, struct avtab_datum *d, void *p) { return avtab_insert(a, k, d); } diff --git a/xen/xsm/flask/ss/conditional.c b/xen/xsm/flask/ss/conditional.c index 3e58aea55147..b4b116666cf7 100644 --- a/xen/xsm/flask/ss/conditional.c +++ b/xen/xsm/flask/ss/conditional.c @@ -189,14 +189,14 @@ int cond_init_bool_indexes(struct policydb *p) return 0; } =20 -int cond_destroy_bool(void *key, void *datum, void *p) +int cf_check cond_destroy_bool(void *key, void *datum, void *p) { xfree(key); xfree(datum); return 0; } =20 -int cond_index_bool(void *key, void *datum, void *datap) +int cf_check cond_index_bool(void *key, void *datum, void *datap) { struct policydb *p; struct cond_bool_datum *booldatum; @@ -220,7 +220,7 @@ static int bool_isvalid(struct cond_bool_datum *b) return 1; } =20 -int cond_read_bool(struct policydb *p, struct hashtab *h, void *fp) +int cf_check cond_read_bool(struct policydb *p, struct hashtab *h, void *f= p) { char *key =3D NULL; struct cond_bool_datum *booldatum; @@ -268,8 +268,8 @@ struct cond_insertf_data struct cond_av_list *tail; }; =20 -static int cond_insertf(struct avtab *a, struct avtab_key *k,=20 - struct avtab_datum *d, void *p= tr) +static int cf_check cond_insertf( + struct avtab *a, struct avtab_key *k, struct avtab_datum *d, void *ptr) { struct cond_insertf_data *data =3D ptr; struct policydb *p =3D data->p; diff --git a/xen/xsm/flask/ss/conditional.h b/xen/xsm/flask/ss/conditional.h index 59ac6b4b57c1..500fe4305a03 100644 --- a/xen/xsm/flask/ss/conditional.h +++ b/xen/xsm/flask/ss/conditional.h @@ -63,11 +63,11 @@ int cond_policydb_init(struct policydb* p); void cond_policydb_destroy(struct policydb* p); =20 int cond_init_bool_indexes(struct policydb* p); -int cond_destroy_bool(void *key, void *datum, void *p); +int cf_check cond_destroy_bool(void *key, void *datum, void *p); =20 -int cond_index_bool(void *key, void *datum, void *datap); +int cf_check cond_index_bool(void *key, void *datum, void *datap); =20 -int cond_read_bool(struct policydb *p, struct hashtab *h, void *fp); +int cf_check cond_read_bool(struct policydb *p, struct hashtab *h, void *f= p); int cond_read_list(struct policydb *p, void *fp); =20 void cond_compute_av(struct avtab *ctab, struct avtab_key *key, struct av_= decision *avd); diff --git a/xen/xsm/flask/ss/policydb.c b/xen/xsm/flask/ss/policydb.c index 94261643532a..ff2103c63eab 100644 --- a/xen/xsm/flask/ss/policydb.c +++ b/xen/xsm/flask/ss/policydb.c @@ -257,12 +257,12 @@ static int policydb_init(struct policydb *p) * of a class, role, or user are needed. */ =20 -static int common_index(void *key, void *datum, void *datap) +static int cf_check common_index(void *key, void *datum, void *datap) { return 0; } =20 -static int class_index(void *key, void *datum, void *datap) +static int cf_check class_index(void *key, void *datum, void *datap) { struct policydb *p; struct class_datum *cladatum; @@ -276,7 +276,7 @@ static int class_index(void *key, void *datum, void *da= tap) return 0; } =20 -static int role_index(void *key, void *datum, void *datap) +static int cf_check role_index(void *key, void *datum, void *datap) { struct policydb *p; struct role_datum *role; @@ -292,7 +292,7 @@ static int role_index(void *key, void *datum, void *dat= ap) return 0; } =20 -static int type_index(void *key, void *datum, void *datap) +static int cf_check type_index(void *key, void *datum, void *datap) { struct policydb *p; struct type_datum *typdatum; @@ -313,7 +313,7 @@ static int type_index(void *key, void *datum, void *dat= ap) return 0; } =20 -static int user_index(void *key, void *datum, void *datap) +static int cf_check user_index(void *key, void *datum, void *datap) { struct policydb *p; struct user_datum *usrdatum; @@ -329,7 +329,7 @@ static int user_index(void *key, void *datum, void *dat= ap) return 0; } =20 -static int sens_index(void *key, void *datum, void *datap) +static int cf_check sens_index(void *key, void *datum, void *datap) { struct policydb *p; struct level_datum *levdatum; @@ -348,7 +348,7 @@ static int sens_index(void *key, void *datum, void *dat= ap) return 0; } =20 -static int cat_index(void *key, void *datum, void *datap) +static int cf_check cat_index(void *key, void *datum, void *datap) { struct policydb *p; struct cat_datum *catdatum; @@ -506,14 +506,14 @@ static int policydb_index_others(struct policydb *p) * symbol data in the policy database. */ =20 -static int perm_destroy(void *key, void *datum, void *p) +static int cf_check perm_destroy(void *key, void *datum, void *p) { xfree(key); xfree(datum); return 0; } =20 -static int common_destroy(void *key, void *datum, void *p) +static int cf_check common_destroy(void *key, void *datum, void *p) { struct common_datum *comdatum; =20 @@ -525,7 +525,7 @@ static int common_destroy(void *key, void *datum, void = *p) return 0; } =20 -static int class_destroy(void *key, void *datum, void *p) +static int cf_check class_destroy(void *key, void *datum, void *p) { struct class_datum *cladatum; struct constraint_node *constraint, *ctemp; @@ -572,7 +572,7 @@ static int class_destroy(void *key, void *datum, void *= p) return 0; } =20 -static int role_destroy(void *key, void *datum, void *p) +static int cf_check role_destroy(void *key, void *datum, void *p) { struct role_datum *role; =20 @@ -584,14 +584,14 @@ static int role_destroy(void *key, void *datum, void = *p) return 0; } =20 -static int type_destroy(void *key, void *datum, void *p) +static int cf_check type_destroy(void *key, void *datum, void *p) { xfree(key); xfree(datum); return 0; } =20 -static int user_destroy(void *key, void *datum, void *p) +static int cf_check user_destroy(void *key, void *datum, void *p) { struct user_datum *usrdatum; =20 @@ -605,7 +605,7 @@ static int user_destroy(void *key, void *datum, void *p) return 0; } =20 -static int sens_destroy(void *key, void *datum, void *p) +static int cf_check sens_destroy(void *key, void *datum, void *p) { struct level_datum *levdatum; =20 @@ -617,7 +617,7 @@ static int sens_destroy(void *key, void *datum, void *p) return 0; } =20 -static int cat_destroy(void *key, void *datum, void *p) +static int cf_check cat_destroy(void *key, void *datum, void *p) { xfree(key); xfree(datum); @@ -989,7 +989,7 @@ static int perm_read(struct policydb *p, struct hashtab= *h, void *fp) goto out; } =20 -static int common_read(struct policydb *p, struct hashtab *h, void *fp) +static int cf_check common_read(struct policydb *p, struct hashtab *h, voi= d *fp) { char *key =3D NULL; struct common_datum *comdatum; @@ -1151,7 +1151,7 @@ static int read_cons_helper(struct policydb *p, struc= t constraint_node **nodep, return 0; } =20 -static int class_read(struct policydb *p, struct hashtab *h, void *fp) +static int cf_check class_read(struct policydb *p, struct hashtab *h, void= *fp) { char *key =3D NULL; struct class_datum *cladatum; @@ -1250,7 +1250,7 @@ static int class_read(struct policydb *p, struct hash= tab *h, void *fp) goto out; } =20 -static int role_read(struct policydb *p, struct hashtab *h, void *fp) +static int cf_check role_read(struct policydb *p, struct hashtab *h, void = *fp) { char *key =3D NULL; struct role_datum *role; @@ -1321,7 +1321,7 @@ static int role_read(struct policydb *p, struct hasht= ab *h, void *fp) goto out; } =20 -static int type_read(struct policydb *p, struct hashtab *h, void *fp) +static int cf_check type_read(struct policydb *p, struct hashtab *h, void = *fp) { char *key =3D NULL; struct type_datum *typdatum; @@ -1415,7 +1415,7 @@ static int mls_read_level(struct mls_level *lp, void = *fp) return -EINVAL; } =20 -static int user_read(struct policydb *p, struct hashtab *h, void *fp) +static int cf_check user_read(struct policydb *p, struct hashtab *h, void = *fp) { char *key =3D NULL; struct user_datum *usrdatum; @@ -1479,7 +1479,7 @@ static int user_read(struct policydb *p, struct hasht= ab *h, void *fp) goto out; } =20 -static int sens_read(struct policydb *p, struct hashtab *h, void *fp) +static int cf_check sens_read(struct policydb *p, struct hashtab *h, void = *fp) { char *key =3D NULL; struct level_datum *levdatum; @@ -1534,7 +1534,7 @@ static int sens_read(struct policydb *p, struct hasht= ab *h, void *fp) goto out; } =20 -static int cat_read(struct policydb *p, struct hashtab *h, void *fp) +static int cf_check cat_read(struct policydb *p, struct hashtab *h, void *= fp) { char *key =3D NULL; struct cat_datum *catdatum; @@ -1591,7 +1591,8 @@ static int (*read_f[SYM_NUM]) (struct policydb *p, st= ruct hashtab *h, void *fp) cat_read, }; =20 -static int user_bounds_sanity_check(void *key, void *datum, void *datap) +static int cf_check user_bounds_sanity_check( + void *key, void *datum, void *datap) { struct user_datum *upper, *user; struct policydb *p =3D datap; @@ -1631,7 +1632,8 @@ static int user_bounds_sanity_check(void *key, void *= datum, void *datap) return 0; } =20 -static int role_bounds_sanity_check(void *key, void *datum, void *datap) +static int cf_check role_bounds_sanity_check( + void *key, void *datum, void *datap) { struct role_datum *upper, *role; struct policydb *p =3D datap; @@ -1671,7 +1673,8 @@ static int role_bounds_sanity_check(void *key, void *= datum, void *datap) return 0; } =20 -static int type_bounds_sanity_check(void *key, void *datum, void *datap) +static int cf_check type_bounds_sanity_check( + void *key, void *datum, void *datap) { struct type_datum *upper, *type; struct policydb *p =3D datap; diff --git a/xen/xsm/flask/ss/services.c b/xen/xsm/flask/ss/services.c index 42686535f2c4..2f6d3d350d05 100644 --- a/xen/xsm/flask/ss/services.c +++ b/xen/xsm/flask/ss/services.c @@ -283,7 +283,7 @@ static int constraint_expr_eval(struct context *scontex= t, * security_dump_masked_av - dumps masked permissions during * security_compute_av due to RBAC, MLS/Constraint and Type bounds. */ -static int dump_masked_av_helper(void *k, void *d, void *args) +static int cf_check dump_masked_av_helper(void *k, void *d, void *args) { struct perm_datum *pdatum =3D d; char **permission_names =3D args; @@ -1240,7 +1240,7 @@ static int validate_classes(struct policydb *p) } =20 /* Clone the SID into the new SID table. */ -static int clone_sid(u32 sid, struct context *context, void *arg) +static int cf_check clone_sid(u32 sid, struct context *context, void *arg) { struct sidtab *s =3D arg; =20 @@ -1277,7 +1277,7 @@ struct convert_context_args { * in the policy `p->newp'. Verify that the * context is valid under the new policy. */ -static int convert_context(u32 key, struct context *c, void *p) +static int cf_check convert_context(u32 key, struct context *c, void *p) { struct convert_context_args *args; struct context oldc; diff --git a/xen/xsm/flask/ss/symtab.c b/xen/xsm/flask/ss/symtab.c index d98c116d5b97..0ce7e08c24ea 100644 --- a/xen/xsm/flask/ss/symtab.c +++ b/xen/xsm/flask/ss/symtab.c @@ -12,7 +12,7 @@ #include #include "symtab.h" =20 -static unsigned int symhash(struct hashtab *h, const void *key) +static unsigned int cf_check symhash(struct hashtab *h, const void *key) { const char *p, *keyp; unsigned int size; @@ -26,7 +26,8 @@ static unsigned int symhash(struct hashtab *h, const void= *key) return val & (h->size - 1); } =20 -static int symcmp(struct hashtab *h, const void *key1, const void *key2) +static int cf_check symcmp( + struct hashtab *h, const void *key1, const void *key2) { const char *keyp1, *keyp2; =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931910; cv=none; d=zohomail.com; s=zohoarc; b=OG1sXKI6Omd/3uRLbhPaBY8OSIKv0z/Z+qjHxJdBrzLH8wScw7R7GK4YTMEigtLqfwLizp2jJF8EbfivGgbFb9M4pA1P8CignpTMAm5Nv2tSfaQNXRqA0bPd+y4rsQHKva/oNShV1Y2eVGf3nsLxs0ThXJUPzb075Nvx0mK2A8k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931910; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=c7eGC4xlIEu6DmdWwSEpsbVPHd0BoLFdRBXmyIIjyto=; b=ip8K9gzx63SpmZzfKQ6qnxrYdqosWVzWZwFS7VKAmWsW0cK533T2SgNzqja8kIjnkRfwot7YQn9RuTeISNqVLlyaLr6+GH/DOZRK23wwZyYIgln98VEIxL+mZAGqbjbrjoXpPv4vqgTfgecl+GHkKsRmjtu7ceznky/Qi1/W15Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931910518212.84838904300477; Fri, 26 Nov 2021 05:05:10 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232749.403628 (Exim 4.92) (envelope-from ) id 1mqauI-0003t7-JU; Fri, 26 Nov 2021 13:04:50 +0000 Received: by outflank-mailman (output) from mailman id 232749.403628; Fri, 26 Nov 2021 13:04:50 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauI-0003sy-Fb; Fri, 26 Nov 2021 13:04:50 +0000 Received: by outflank-mailman (input) for mailman id 232749; Fri, 26 Nov 2021 13:04:48 +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 1mqauF-0002zD-UG for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:48 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 6bcea279-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:04:44 +0100 (CET) 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: 6bcea279-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931884; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=WZas5lwNPdncK4Rv1+NDFQxVxTq8NeKx0mS2Ud2CRLY=; b=BSMoRmCUezvx0kP9ek7d3HainlLWKH5VZbzgDvNOwGjlzdVNo4LHdG/E cLSLFqg8q2X+FKvkoHwsUvtbgxNWYp5ua9zoOaTx6o6KCO1WWyHCnq/rW cbBKt8GGnuxtURJtVGoXhks/Bqpu9MxpGRwAvnJC5eudKgA9dGdf7Ub3l s=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: nEBN93GGus7IfEhHzTrohCke4FCpbz9WERilz0ViiYuBqTvFck6GE6WF0vK7jT1zkU2NgkzX/h YjxboT6LR+mxjX2XqOdAqHk9X2SSavW7dy5BdQFpcj3cytWEEmUx1gnwlQ4Htm/znfxRUgYEux 88pSCPLdqgK99JRG3zgaQ1V9V7rPKWSHTEgQwixzMyqYCQWf+OESCZ3bARbeJLgEQhpg3QHc0A XOYRKBQxPJ/l0YZGhI2r3+3ez5gX/gm3lSeQRPp6k14y4uiQokWSr0xQWy2lHIcq/Ox+z7Ca5u k2j9/ClAUG9jBdXFyJ7tkEze X-SBRS: 5.1 X-MesageID: 58676316 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:KoOHka7PahteBZs/nQ0NfwxRtOPAchMFZxGqfqrLsTDasY5as4F+v mAcWTzQPPuDY2bxftAkPtu/90IF7ZGGyYIwGwFu+CxnHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z9 u1yqKKUVTgSb5LjouAFdBRpOSVDBPgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTaiBO ZFAN1KDajyZUjxmZQwNT6sD37+2pnPRLRgDkEys8P9fD2/7k1UqjemF3MDuUtCSXsBUgkawr 3rL5XjkGQodMMGDyD2D6TSngeqntS/0VI8dDrSQ6u9hgFrVwHcaThIRSzOTsfS/z0KzRd9bA 0gV4TY167g/8lSxSdvwVAH+p2SL1iPwQPIJTbd8slvUjPOJvUDJXQDoUwKtdvQYjPArexg26 WTYoPzTASRIvYy/TU+ko+L8QSyJBQAZKmoLZCkhRAQD4sX+rIxbsi8jXuqPA4bu0ISrRGiYL ySi6XFn2u5N1ZJjO7CTpAif21qRSo71ohnZD+k9dkas9UtHaYGsfOREAnCLvK8bfO51orRs1 UXoevRyDshSUvlhdwTXGY3h+Y1FAd7ea1UwZnY1QvEcG8yFoSLLQGypyGgWyL1VGsgFYyT1R 0TYpBlc4pReVFPzM/QoM9zsVJV2k/S7fTgAahwyRoEVCnSWXFXalByCmGbKhzy9+KTSuf1X1 WinnTaEUi9BVPUPIMueTOYBy747rh3SNkuILa0XOy+PiOLEDFbMEO9tGALXMogRsfPVyC2Io o03H5bblH1ivBjWP3C/HXg7dgtRcxDWxPne9qRqSwJ0ClY8RTx6VaaOmehJlk4Mt/09q9okN 0qVAidwoGcTT1WeQelTQnw8Or7pQ7hlqnc3YX4lMVqygiBxaoez9qYPMZAweOB/puBkyPd1S dgDetmBXasTGmiWpWxFYMmvtpFmeTSqmRmKY3ivbg8gcsMyXAfO4NLlIFfirXFcEiqtuMIii LS8zQeHE4EbTgFvAZ+OOvKixl+8p1YHn+d2UxeaK9VfYhy0ooNrNzbwnrk8JMRVcUfPwT6T1 gC3BxYEpLaS/99poYeR3a3d9tWnCepzGEZeDlL317fuOHmI5HenzK9BTP2MIWLXWlTr9fjwf u5S1fz9bqEKxQ4Yr4pmHr935qsi/N+z9aRCxwFpEXiXPVSmDrRsfiuP0cVV7/Afw7ZYvU29W 16V+8kcMrKMYZu3HFkULQsjT+KCyfBLxWWCsaVreB33tH1t4b6KcUROJB3d2iVSIYx8PJ4h3 ep86tUd7Bayi0ZyP9uL5syOG79g8pDUv30bi6wn IronPort-HdrOrdr: A9a23:3opOB6mK/TCE2HZOlPXEpjW3iKzpDfI/3DAbv31ZSRFFG/Fw9v re/8jzuiWftN98YhwdcLO7WJVoI0mzyXcd2+B4VotKOjOLhILCFuBfBOXZrAEJ30bFh4tgPW AKSdkdNOHN X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676316" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Daniel De Graaf , Daniel Smith Subject: [PATCH 15/65] xsm: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:33:56 +0000 Message-ID: <20211126123446.32324-16-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931912363100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich Reviewed-by: Daniel P. Smith --- CC: Daniel De Graaf CC: Daniel Smith --- xen/include/xsm/dummy.h | 211 ++++++++++++++++++++++-------------------- xen/xsm/flask/flask_op.c | 2 +- xen/xsm/flask/hooks.c | 232 ++++++++++++++++++++++++++-----------------= ---- xen/xsm/flask/private.h | 4 +- xen/xsm/silo.c | 24 ++--- 5 files changed, 257 insertions(+), 216 deletions(-) diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h index b024119896e6..58afc1d58973 100644 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -101,46 +101,48 @@ static always_inline int xsm_default_action( } } =20 -static XSM_INLINE void xsm_security_domaininfo( +static XSM_INLINE void cf_check xsm_security_domaininfo( struct domain *d, struct xen_domctl_getdomaininfo *info) { return; } =20 -static XSM_INLINE int xsm_domain_create( +static XSM_INLINE int cf_check xsm_domain_create( XSM_DEFAULT_ARG struct domain *d, uint32_t ssidref) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_getdomaininfo(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_getdomaininfo( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_domctl_scheduler_op( +static XSM_INLINE int cf_check xsm_domctl_scheduler_op( XSM_DEFAULT_ARG struct domain *d, int cmd) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_sysctl_scheduler_op(XSM_DEFAULT_ARG int cmd) +static XSM_INLINE int cf_check xsm_sysctl_scheduler_op(XSM_DEFAULT_ARG int= cmd) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_set_target( +static XSM_INLINE int cf_check xsm_set_target( XSM_DEFAULT_ARG struct domain *d, struct domain *e) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_domctl(XSM_DEFAULT_ARG struct domain *d, int cmd) +static XSM_INLINE int cf_check xsm_domctl( + XSM_DEFAULT_ARG struct domain *d, int cmd) { XSM_ASSERT_ACTION(XSM_OTHER); switch ( cmd ) @@ -157,91 +159,93 @@ static XSM_INLINE int xsm_domctl(XSM_DEFAULT_ARG stru= ct domain *d, int cmd) } } =20 -static XSM_INLINE int xsm_sysctl(XSM_DEFAULT_ARG int cmd) +static XSM_INLINE int cf_check xsm_sysctl(XSM_DEFAULT_ARG int cmd) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_readconsole(XSM_DEFAULT_ARG uint32_t clear) +static XSM_INLINE int cf_check xsm_readconsole(XSM_DEFAULT_ARG uint32_t cl= ear) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_alloc_security_domain(struct domain *d) +static XSM_INLINE int cf_check xsm_alloc_security_domain(struct domain *d) { return 0; } =20 -static XSM_INLINE void xsm_free_security_domain(struct domain *d) +static XSM_INLINE void cf_check xsm_free_security_domain(struct domain *d) { return; } =20 -static XSM_INLINE int xsm_grant_mapref( +static XSM_INLINE int cf_check xsm_grant_mapref( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2, uint32_t flags) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_grant_unmapref( +static XSM_INLINE int cf_check xsm_grant_unmapref( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_grant_setup( +static XSM_INLINE int cf_check xsm_grant_setup( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_grant_transfer( +static XSM_INLINE int cf_check xsm_grant_transfer( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_grant_copy( +static XSM_INLINE int cf_check xsm_grant_copy( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_grant_query_size( +static XSM_INLINE int cf_check xsm_grant_query_size( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_memory_exchange(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_memory_exchange( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_memory_adjust_reservation( +static XSM_INLINE int cf_check xsm_memory_adjust_reservation( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_memory_stat_reservation( +static XSM_INLINE int cf_check xsm_memory_stat_reservation( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_console_io(XSM_DEFAULT_ARG struct domain *d, int= cmd) +static XSM_INLINE int cf_check xsm_console_io( + XSM_DEFAULT_ARG struct domain *d, int cmd) { XSM_ASSERT_ACTION(XSM_OTHER); if ( d->is_console ) @@ -253,26 +257,27 @@ static XSM_INLINE int xsm_console_io(XSM_DEFAULT_ARG = struct domain *d, int cmd) return xsm_default_action(XSM_PRIV, d, NULL); } =20 -static XSM_INLINE int xsm_profile(XSM_DEFAULT_ARG struct domain *d, int op) +static XSM_INLINE int cf_check xsm_profile( + XSM_DEFAULT_ARG struct domain *d, int op) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, d, NULL); } =20 -static XSM_INLINE int xsm_kexec(XSM_DEFAULT_VOID) +static XSM_INLINE int cf_check xsm_kexec(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_schedop_shutdown( +static XSM_INLINE int cf_check xsm_schedop_shutdown( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_memory_pin_page( +static XSM_INLINE int cf_check xsm_memory_pin_page( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2, struct page_info *page) { @@ -280,20 +285,20 @@ static XSM_INLINE int xsm_memory_pin_page( return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_claim_pages(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_claim_pages(XSM_DEFAULT_ARG struct doma= in *d) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_evtchn_unbound( +static XSM_INLINE int cf_check xsm_evtchn_unbound( XSM_DEFAULT_ARG struct domain *d, struct evtchn *chn, domid_t id2) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_evtchn_interdomain( +static XSM_INLINE int cf_check xsm_evtchn_interdomain( XSM_DEFAULT_ARG struct domain *d1, struct evtchn *chan1, struct domain= *d2, struct evtchn *chan2) { @@ -301,89 +306,94 @@ static XSM_INLINE int xsm_evtchn_interdomain( return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE void xsm_evtchn_close_post(struct evtchn *chn) +static XSM_INLINE void cf_check xsm_evtchn_close_post(struct evtchn *chn) { return; } =20 -static XSM_INLINE int xsm_evtchn_send( +static XSM_INLINE int cf_check xsm_evtchn_send( XSM_DEFAULT_ARG struct domain *d, struct evtchn *chn) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, d, NULL); } =20 -static XSM_INLINE int xsm_evtchn_status( +static XSM_INLINE int cf_check xsm_evtchn_status( XSM_DEFAULT_ARG struct domain *d, struct evtchn *chn) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_evtchn_reset( +static XSM_INLINE int cf_check xsm_evtchn_reset( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_alloc_security_evtchns( +static XSM_INLINE int cf_check xsm_alloc_security_evtchns( struct evtchn chn[], unsigned int nr) { return 0; } =20 -static XSM_INLINE void xsm_free_security_evtchns( +static XSM_INLINE void cf_check xsm_free_security_evtchns( struct evtchn chn[], unsigned int nr) { return; } =20 -static XSM_INLINE char *xsm_show_security_evtchn( +static XSM_INLINE char *cf_check xsm_show_security_evtchn( struct domain *d, const struct evtchn *chn) { return NULL; } =20 -static XSM_INLINE int xsm_init_hardware_domain(XSM_DEFAULT_ARG struct doma= in *d) +static XSM_INLINE int cf_check xsm_init_hardware_domain( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_get_pod_target(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_get_pod_target( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_set_pod_target(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_set_pod_target( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_get_vnumainfo(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_get_vnumainfo( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, current->domain, d); } =20 #if defined(CONFIG_HAS_PASSTHROUGH) && defined(CONFIG_HAS_PCI) -static XSM_INLINE int xsm_get_device_group(XSM_DEFAULT_ARG uint32_t machin= e_bdf) +static XSM_INLINE int cf_check xsm_get_device_group( + XSM_DEFAULT_ARG uint32_t machine_bdf) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_assign_device( +static XSM_INLINE int cf_check xsm_assign_device( XSM_DEFAULT_ARG struct domain *d, uint32_t machine_bdf) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_deassign_device( +static XSM_INLINE int cf_check xsm_deassign_device( XSM_DEFAULT_ARG struct domain *d, uint32_t machine_bdf) { XSM_ASSERT_ACTION(XSM_HOOK); @@ -393,14 +403,14 @@ static XSM_INLINE int xsm_deassign_device( #endif /* HAS_PASSTHROUGH && HAS_PCI */ =20 #if defined(CONFIG_HAS_PASSTHROUGH) && defined(CONFIG_HAS_DEVICE_TREE) -static XSM_INLINE int xsm_assign_dtdevice( +static XSM_INLINE int cf_check xsm_assign_dtdevice( XSM_DEFAULT_ARG struct domain *d, const char *dtpath) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_deassign_dtdevice( +static XSM_INLINE int cf_check xsm_deassign_dtdevice( XSM_DEFAULT_ARG struct domain *d, const char *dtpath) { XSM_ASSERT_ACTION(XSM_HOOK); @@ -409,142 +419,144 @@ static XSM_INLINE int xsm_deassign_dtdevice( =20 #endif /* HAS_PASSTHROUGH && HAS_DEVICE_TREE */ =20 -static XSM_INLINE int xsm_resource_plug_core(XSM_DEFAULT_VOID) +static XSM_INLINE int cf_check xsm_resource_plug_core(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_resource_unplug_core(XSM_DEFAULT_VOID) +static XSM_INLINE int cf_check xsm_resource_unplug_core(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_resource_plug_pci( +static XSM_INLINE int cf_check xsm_resource_plug_pci( XSM_DEFAULT_ARG uint32_t machine_bdf) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_resource_unplug_pci( +static XSM_INLINE int cf_check xsm_resource_unplug_pci( XSM_DEFAULT_ARG uint32_t machine_bdf) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_resource_setup_pci( +static XSM_INLINE int cf_check xsm_resource_setup_pci( XSM_DEFAULT_ARG uint32_t machine_bdf) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_resource_setup_gsi(XSM_DEFAULT_ARG int gsi) +static XSM_INLINE int cf_check xsm_resource_setup_gsi(XSM_DEFAULT_ARG int = gsi) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_resource_setup_misc(XSM_DEFAULT_VOID) +static XSM_INLINE int cf_check xsm_resource_setup_misc(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_page_offline(XSM_DEFAULT_ARG uint32_t cmd) +static XSM_INLINE int cf_check xsm_page_offline(XSM_DEFAULT_ARG uint32_t c= md) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_hypfs_op(XSM_DEFAULT_VOID) +static XSM_INLINE int cf_check xsm_hypfs_op(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE long xsm_do_xsm_op(XEN_GUEST_HANDLE_PARAM(void) op) +static XSM_INLINE long cf_check xsm_do_xsm_op(XEN_GUEST_HANDLE_PARAM(void)= op) { return -ENOSYS; } =20 #ifdef CONFIG_COMPAT -static XSM_INLINE int xsm_do_compat_op(XEN_GUEST_HANDLE_PARAM(void) op) +static XSM_INLINE int cf_check xsm_do_compat_op(XEN_GUEST_HANDLE_PARAM(voi= d) op) { return -ENOSYS; } #endif =20 -static XSM_INLINE char *xsm_show_irq_sid(int irq) +static XSM_INLINE char *cf_check xsm_show_irq_sid(int irq) { return NULL; } =20 -static XSM_INLINE int xsm_map_domain_pirq(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_map_domain_pirq( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_map_domain_irq( +static XSM_INLINE int cf_check xsm_map_domain_irq( XSM_DEFAULT_ARG struct domain *d, int irq, const void *data) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_unmap_domain_pirq(XSM_DEFAULT_ARG struct domain = *d) +static XSM_INLINE int cf_check xsm_unmap_domain_pirq( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_bind_pt_irq( +static XSM_INLINE int cf_check xsm_bind_pt_irq( XSM_DEFAULT_ARG struct domain *d, struct xen_domctl_bind_pt_irq *bind) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_unbind_pt_irq( +static XSM_INLINE int cf_check xsm_unbind_pt_irq( XSM_DEFAULT_ARG struct domain *d, struct xen_domctl_bind_pt_irq *bind) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_unmap_domain_irq( +static XSM_INLINE int cf_check xsm_unmap_domain_irq( XSM_DEFAULT_ARG struct domain *d, int irq, const void *data) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_irq_permission( +static XSM_INLINE int cf_check xsm_irq_permission( XSM_DEFAULT_ARG struct domain *d, int pirq, uint8_t allow) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_iomem_permission( +static XSM_INLINE int cf_check xsm_iomem_permission( XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, uint8_t allo= w) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_iomem_mapping( +static XSM_INLINE int cf_check xsm_iomem_mapping( XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, uint8_t allo= w) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_pci_config_permission( +static XSM_INLINE int cf_check xsm_pci_config_permission( XSM_DEFAULT_ARG struct domain *d, uint32_t machine_bdf, uint16_t start, uint16_t end, uint8_t access) { @@ -552,41 +564,42 @@ static XSM_INLINE int xsm_pci_config_permission( return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_add_to_physmap( +static XSM_INLINE int cf_check xsm_add_to_physmap( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_remove_from_physmap( +static XSM_INLINE int cf_check xsm_remove_from_physmap( XSM_DEFAULT_ARG struct domain *d1, struct domain *d2) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE int xsm_map_gmfn_foreign( +static XSM_INLINE int cf_check xsm_map_gmfn_foreign( XSM_DEFAULT_ARG struct domain *d, struct domain *t) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d, t); } =20 -static XSM_INLINE int xsm_hvm_param( +static XSM_INLINE int cf_check xsm_hvm_param( XSM_DEFAULT_ARG struct domain *d, unsigned long op) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_hvm_param_altp2mhvm(XSM_DEFAULT_ARG struct domai= n *d) +static XSM_INLINE int cf_check xsm_hvm_param_altp2mhvm( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_hvm_altp2mhvm_op( +static XSM_INLINE int cf_check xsm_hvm_altp2mhvm_op( XSM_DEFAULT_ARG struct domain *d, uint64_t mode, uint32_t op) { XSM_ASSERT_ACTION(XSM_OTHER); @@ -606,7 +619,7 @@ static XSM_INLINE int xsm_hvm_altp2mhvm_op( } } =20 -static XSM_INLINE int xsm_vm_event_control( +static XSM_INLINE int cf_check xsm_vm_event_control( XSM_DEFAULT_ARG struct domain *d, int mode, int op) { XSM_ASSERT_ACTION(XSM_PRIV); @@ -614,7 +627,7 @@ static XSM_INLINE int xsm_vm_event_control( } =20 #ifdef CONFIG_MEM_ACCESS -static XSM_INLINE int xsm_mem_access(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_mem_access(XSM_DEFAULT_ARG struct domai= n *d) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); @@ -622,7 +635,7 @@ static XSM_INLINE int xsm_mem_access(XSM_DEFAULT_ARG st= ruct domain *d) #endif =20 #ifdef CONFIG_MEM_PAGING -static XSM_INLINE int xsm_mem_paging(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_mem_paging(XSM_DEFAULT_ARG struct domai= n *d) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); @@ -630,59 +643,61 @@ static XSM_INLINE int xsm_mem_paging(XSM_DEFAULT_ARG = struct domain *d) #endif =20 #ifdef CONFIG_MEM_SHARING -static XSM_INLINE int xsm_mem_sharing(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_mem_sharing(XSM_DEFAULT_ARG struct doma= in *d) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); } #endif =20 -static XSM_INLINE int xsm_platform_op(XSM_DEFAULT_ARG uint32_t op) +static XSM_INLINE int cf_check xsm_platform_op(XSM_DEFAULT_ARG uint32_t op) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 #ifdef CONFIG_X86 -static XSM_INLINE int xsm_do_mca(XSM_DEFAULT_VOID) +static XSM_INLINE int cf_check xsm_do_mca(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_shadow_control( +static XSM_INLINE int cf_check xsm_shadow_control( XSM_DEFAULT_ARG struct domain *d, uint32_t op) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_mem_sharing_op( +static XSM_INLINE int cf_check xsm_mem_sharing_op( XSM_DEFAULT_ARG struct domain *d, struct domain *cd, int op) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, cd); } =20 -static XSM_INLINE int xsm_apic(XSM_DEFAULT_ARG struct domain *d, int cmd) +static XSM_INLINE int cf_check xsm_apic( + XSM_DEFAULT_ARG struct domain *d, int cmd) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, d, NULL); } =20 -static XSM_INLINE int xsm_machine_memory_map(XSM_DEFAULT_VOID) +static XSM_INLINE int cf_check xsm_machine_memory_map(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_domain_memory_map(XSM_DEFAULT_ARG struct domain = *d) +static XSM_INLINE int cf_check xsm_domain_memory_map( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_mmu_update( +static XSM_INLINE int cf_check xsm_mmu_update( XSM_DEFAULT_ARG struct domain *d, struct domain *t, struct domain *f, uint32_t flags) { @@ -695,42 +710,42 @@ static XSM_INLINE int xsm_mmu_update( return rc; } =20 -static XSM_INLINE int xsm_mmuext_op( +static XSM_INLINE int cf_check xsm_mmuext_op( XSM_DEFAULT_ARG struct domain *d, struct domain *f) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d, f); } =20 -static XSM_INLINE int xsm_update_va_mapping( +static XSM_INLINE int cf_check xsm_update_va_mapping( XSM_DEFAULT_ARG struct domain *d, struct domain *f, l1_pgentry_t pte) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d, f); } =20 -static XSM_INLINE int xsm_priv_mapping( +static XSM_INLINE int cf_check xsm_priv_mapping( XSM_DEFAULT_ARG struct domain *d, struct domain *t) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d, t); } =20 -static XSM_INLINE int xsm_ioport_permission( +static XSM_INLINE int cf_check xsm_ioport_permission( XSM_DEFAULT_ARG struct domain *d, uint32_t s, uint32_t e, uint8_t allo= w) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_ioport_mapping( +static XSM_INLINE int cf_check xsm_ioport_mapping( XSM_DEFAULT_ARG struct domain *d, uint32_t s, uint32_t e, uint8_t allo= w) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_pmu_op( +static XSM_INLINE int cf_check xsm_pmu_op( XSM_DEFAULT_ARG struct domain *d, unsigned int op) { XSM_ASSERT_ACTION(XSM_OTHER); @@ -748,30 +763,31 @@ static XSM_INLINE int xsm_pmu_op( =20 #endif /* CONFIG_X86 */ =20 -static XSM_INLINE int xsm_dm_op(XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int cf_check xsm_dm_op(XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); } =20 #ifdef CONFIG_ARGO -static XSM_INLINE int xsm_argo_enable(const struct domain *d) +static XSM_INLINE int cf_check xsm_argo_enable(const struct domain *d) { return 0; } =20 -static XSM_INLINE int xsm_argo_register_single_source( +static XSM_INLINE int cf_check xsm_argo_register_single_source( const struct domain *d, const struct domain *t) { return 0; } =20 -static XSM_INLINE int xsm_argo_register_any_source(const struct domain *d) +static XSM_INLINE int cf_check xsm_argo_register_any_source( + const struct domain *d) { return 0; } =20 -static XSM_INLINE int xsm_argo_send( +static XSM_INLINE int cf_check xsm_argo_send( const struct domain *d, const struct domain *t) { return 0; @@ -780,7 +796,7 @@ static XSM_INLINE int xsm_argo_send( #endif /* CONFIG_ARGO */ =20 #include -static XSM_INLINE int xsm_xen_version(XSM_DEFAULT_ARG uint32_t op) +static XSM_INLINE int cf_check xsm_xen_version(XSM_DEFAULT_ARG uint32_t op) { XSM_ASSERT_ACTION(XSM_OTHER); switch ( op ) @@ -804,7 +820,8 @@ static XSM_INLINE int xsm_xen_version(XSM_DEFAULT_ARG u= int32_t op) } } =20 -static XSM_INLINE int xsm_domain_resource_map(XSM_DEFAULT_ARG struct domai= n *d) +static XSM_INLINE int cf_check xsm_domain_resource_map( + XSM_DEFAULT_ARG struct domain *d) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); diff --git a/xen/xsm/flask/flask_op.c b/xen/xsm/flask/flask_op.c index 2d7ca3abaecd..707be72a3b96 100644 --- a/xen/xsm/flask/flask_op.c +++ b/xen/xsm/flask/flask_op.c @@ -607,7 +607,7 @@ static int flask_relabel_domain(struct xen_flask_relabe= l *arg) =20 #endif /* !COMPAT */ =20 -ret_t do_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op) +ret_t cf_check do_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op) { xen_flask_op_t op; int rv; diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 6ff1be28e4a4..63484e323c09 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -157,7 +157,7 @@ static int avc_unknown_permission(const char *name, int= id) return rc; } =20 -static int flask_domain_alloc_security(struct domain *d) +static int cf_check flask_domain_alloc_security(struct domain *d) { struct domain_security_struct *dsec; =20 @@ -186,7 +186,7 @@ static int flask_domain_alloc_security(struct domain *d) return 0; } =20 -static void flask_domain_free_security(struct domain *d) +static void cf_check flask_domain_free_security(struct domain *d) { struct domain_security_struct *dsec =3D d->ssid; =20 @@ -197,8 +197,8 @@ static void flask_domain_free_security(struct domain *d) xfree(dsec); } =20 -static int flask_evtchn_unbound(struct domain *d1, struct evtchn *chn,=20 - domid_t id2) +static int cf_check flask_evtchn_unbound( + struct domain *d1, struct evtchn *chn, domid_t id2) { u32 sid1, sid2, newsid; int rc; @@ -230,8 +230,9 @@ static int flask_evtchn_unbound(struct domain *d1, stru= ct evtchn *chn, return rc; } =20 -static int flask_evtchn_interdomain(struct domain *d1, struct evtchn *chn1= ,=20 - struct domain *d2, struct evtchn *chn2) +static int cf_check flask_evtchn_interdomain( + struct domain *d1, struct evtchn *chn1, + struct domain *d2, struct evtchn *chn2) { u32 sid1, sid2, newsid, reverse_sid; int rc; @@ -273,12 +274,12 @@ static int flask_evtchn_interdomain(struct domain *d1= , struct evtchn *chn1, return rc; } =20 -static void flask_evtchn_close_post(struct evtchn *chn) +static void cf_check flask_evtchn_close_post(struct evtchn *chn) { chn->ssid.flask_sid =3D SECINITSID_UNLABELED; } =20 -static int flask_evtchn_send(struct domain *d, struct evtchn *chn) +static int cf_check flask_evtchn_send(struct domain *d, struct evtchn *chn) { int rc; =20 @@ -298,17 +299,18 @@ static int flask_evtchn_send(struct domain *d, struct= evtchn *chn) return rc; } =20 -static int flask_evtchn_status(struct domain *d, struct evtchn *chn) +static int cf_check flask_evtchn_status(struct domain *d, struct evtchn *c= hn) { return domain_has_evtchn(d, chn, EVENT__STATUS); } =20 -static int flask_evtchn_reset(struct domain *d1, struct domain *d2) +static int cf_check flask_evtchn_reset(struct domain *d1, struct domain *d= 2) { return domain_has_perm(d1, d2, SECCLASS_EVENT, EVENT__RESET); } =20 -static int flask_alloc_security_evtchns(struct evtchn chn[], unsigned int = nr) +static int cf_check flask_alloc_security_evtchns( + struct evtchn chn[], unsigned int nr) { unsigned int i; =20 @@ -318,7 +320,8 @@ static int flask_alloc_security_evtchns(struct evtchn c= hn[], unsigned int nr) return 0; } =20 -static void flask_free_security_evtchns(struct evtchn chn[], unsigned int = nr) +static void cf_check flask_free_security_evtchns( + struct evtchn chn[], unsigned int nr) { unsigned int i; =20 @@ -329,7 +332,8 @@ static void flask_free_security_evtchns(struct evtchn c= hn[], unsigned int nr) chn[i].ssid.flask_sid =3D SECINITSID_UNLABELED; } =20 -static char *flask_show_security_evtchn(struct domain *d, const struct evt= chn *chn) +static char *cf_check flask_show_security_evtchn( + struct domain *d, const struct evtchn *chn) { int irq; u32 sid =3D 0; @@ -355,13 +359,13 @@ static char *flask_show_security_evtchn(struct domain= *d, const struct evtchn *c return ctx; } =20 -static int flask_init_hardware_domain(struct domain *d) +static int cf_check flask_init_hardware_domain(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__CREATE_HARDWARE_= DOMAIN); } =20 -static int flask_grant_mapref(struct domain *d1, struct domain *d2,=20 - uint32_t flags) +static int cf_check flask_grant_mapref( + struct domain *d1, struct domain *d2, uint32_t flags) { u32 perms =3D GRANT__MAP_READ; =20 @@ -371,73 +375,75 @@ static int flask_grant_mapref(struct domain *d1, stru= ct domain *d2, return domain_has_perm(d1, d2, SECCLASS_GRANT, perms); } =20 -static int flask_grant_unmapref(struct domain *d1, struct domain *d2) +static int cf_check flask_grant_unmapref(struct domain *d1, struct domain = *d2) { return domain_has_perm(d1, d2, SECCLASS_GRANT, GRANT__UNMAP); } =20 -static int flask_grant_setup(struct domain *d1, struct domain *d2) +static int cf_check flask_grant_setup(struct domain *d1, struct domain *d2) { return domain_has_perm(d1, d2, SECCLASS_GRANT, GRANT__SETUP); } =20 -static int flask_grant_transfer(struct domain *d1, struct domain *d2) +static int cf_check flask_grant_transfer(struct domain *d1, struct domain = *d2) { return domain_has_perm(d1, d2, SECCLASS_GRANT, GRANT__TRANSFER); } =20 -static int flask_grant_copy(struct domain *d1, struct domain *d2) +static int cf_check flask_grant_copy(struct domain *d1, struct domain *d2) { return domain_has_perm(d1, d2, SECCLASS_GRANT, GRANT__COPY); } =20 -static int flask_grant_query_size(struct domain *d1, struct domain *d2) +static int cf_check flask_grant_query_size(struct domain *d1, struct domai= n *d2) { return domain_has_perm(d1, d2, SECCLASS_GRANT, GRANT__QUERY); } =20 -static int flask_get_pod_target(struct domain *d) +static int cf_check flask_get_pod_target(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN__GETPODTARGET); } =20 -static int flask_set_pod_target(struct domain *d) +static int cf_check flask_set_pod_target(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN__SETPODTARGET); } =20 -static int flask_memory_exchange(struct domain *d) +static int cf_check flask_memory_exchange(struct domain *d) { return current_has_perm(d, SECCLASS_MMU, MMU__EXCHANGE); } =20 -static int flask_memory_adjust_reservation(struct domain *d1, struct domai= n *d2) +static int cf_check flask_memory_adjust_reservation( + struct domain *d1, struct domain *d2) { return domain_has_perm(d1, d2, SECCLASS_MMU, MMU__ADJUST); } =20 -static int flask_memory_stat_reservation(struct domain *d1, struct domain = *d2) +static int cf_check flask_memory_stat_reservation( + struct domain *d1, struct domain *d2) { return domain_has_perm(d1, d2, SECCLASS_MMU, MMU__STAT); } =20 -static int flask_memory_pin_page(struct domain *d1, struct domain *d2, - struct page_info *page) +static int cf_check flask_memory_pin_page( + struct domain *d1, struct domain *d2, struct page_info *page) { return domain_has_perm(d1, d2, SECCLASS_MMU, MMU__PINPAGE); } =20 -static int flask_claim_pages(struct domain *d) +static int cf_check flask_claim_pages(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__SETCLAIM); } =20 -static int flask_get_vnumainfo(struct domain *d) +static int cf_check flask_get_vnumainfo(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__GET_VNUMAINFO); } =20 -static int flask_console_io(struct domain *d, int cmd) +static int cf_check flask_console_io(struct domain *d, int cmd) { u32 perm; =20 @@ -456,7 +462,7 @@ static int flask_console_io(struct domain *d, int cmd) return domain_has_xen(d, perm); } =20 -static int flask_profile(struct domain *d, int op) +static int cf_check flask_profile(struct domain *d, int op) { u32 perm; =20 @@ -488,23 +494,23 @@ static int flask_profile(struct domain *d, int op) return domain_has_xen(d, perm); } =20 -static int flask_kexec(void) +static int cf_check flask_kexec(void) { return domain_has_xen(current->domain, XEN__KEXEC); } =20 -static int flask_schedop_shutdown(struct domain *d1, struct domain *d2) +static int cf_check flask_schedop_shutdown(struct domain *d1, struct domai= n *d2) { return domain_has_perm(d1, d2, SECCLASS_DOMAIN, DOMAIN__SHUTDOWN); } =20 -static void flask_security_domaininfo(struct domain *d,=20 - struct xen_domctl_getdomaininfo *inf= o) +static void cf_check flask_security_domaininfo( + struct domain *d, struct xen_domctl_getdomaininfo *info) { info->ssidref =3D domain_sid(d); } =20 -static int flask_domain_create(struct domain *d, u32 ssidref) +static int cf_check flask_domain_create(struct domain *d, u32 ssidref) { int rc; struct domain_security_struct *dsec =3D d->ssid; @@ -532,12 +538,12 @@ static int flask_domain_create(struct domain *d, u32 = ssidref) return rc; } =20 -static int flask_getdomaininfo(struct domain *d) +static int cf_check flask_getdomaininfo(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN__GETDOMAININFO); } =20 -static int flask_domctl_scheduler_op(struct domain *d, int op) +static int cf_check flask_domctl_scheduler_op(struct domain *d, int op) { switch ( op ) { @@ -554,7 +560,7 @@ static int flask_domctl_scheduler_op(struct domain *d, = int op) } } =20 -static int flask_sysctl_scheduler_op(int op) +static int cf_check flask_sysctl_scheduler_op(int op) { switch ( op ) { @@ -569,7 +575,7 @@ static int flask_sysctl_scheduler_op(int op) } } =20 -static int flask_set_target(struct domain *d, struct domain *t) +static int cf_check flask_set_target(struct domain *d, struct domain *t) { int rc; struct domain_security_struct *dsec, *tsec; @@ -593,7 +599,7 @@ static int flask_set_target(struct domain *d, struct do= main *t) return rc; } =20 -static int flask_domctl(struct domain *d, int cmd) +static int cf_check flask_domctl(struct domain *d, int cmd) { switch ( cmd ) { @@ -757,7 +763,7 @@ static int flask_domctl(struct domain *d, int cmd) } } =20 -static int flask_sysctl(int cmd) +static int cf_check flask_sysctl(int cmd) { switch ( cmd ) { @@ -835,7 +841,7 @@ static int flask_sysctl(int cmd) } } =20 -static int flask_readconsole(uint32_t clear) +static int cf_check flask_readconsole(uint32_t clear) { u32 perms =3D XEN__READCONSOLE; =20 @@ -853,7 +859,7 @@ static inline u32 resource_to_perm(uint8_t access) return RESOURCE__REMOVE; } =20 -static char *flask_show_irq_sid (int irq) +static char *cf_check flask_show_irq_sid(int irq) { u32 sid, ctx_len; char *ctx; @@ -867,7 +873,7 @@ static char *flask_show_irq_sid (int irq) return ctx; } =20 -static int flask_map_domain_pirq (struct domain *d) +static int cf_check flask_map_domain_pirq(struct domain *d) { return current_has_perm(d, SECCLASS_RESOURCE, RESOURCE__ADD); } @@ -907,7 +913,7 @@ static u32 flask_iommu_resource_use_perm(const struct d= omain *d) return perm; } =20 -static int flask_map_domain_irq (struct domain *d, int irq, const void *da= ta) +static int cf_check flask_map_domain_irq(struct domain *d, int irq, const = void *data) { u32 sid, dsid; int rc =3D -EPERM; @@ -933,7 +939,7 @@ static int flask_map_domain_irq (struct domain *d, int = irq, const void *data) return rc; } =20 -static int flask_unmap_domain_pirq (struct domain *d) +static int cf_check flask_unmap_domain_pirq(struct domain *d) { return current_has_perm(d, SECCLASS_RESOURCE, RESOURCE__REMOVE); } @@ -954,7 +960,8 @@ static int flask_unmap_domain_msi (struct domain *d, in= t irq, const void *data, #endif } =20 -static int flask_unmap_domain_irq (struct domain *d, int irq, const void *= data) +static int cf_check flask_unmap_domain_irq( + struct domain *d, int irq, const void *data) { u32 sid; int rc =3D -EPERM; @@ -972,7 +979,8 @@ static int flask_unmap_domain_irq (struct domain *d, in= t irq, const void *data) return rc; } =20 -static int flask_bind_pt_irq (struct domain *d, struct xen_domctl_bind_pt_= irq *bind) +static int cf_check flask_bind_pt_irq( + struct domain *d, struct xen_domctl_bind_pt_irq *bind) { u32 dsid, rsid; int rc =3D -EPERM; @@ -998,12 +1006,14 @@ static int flask_bind_pt_irq (struct domain *d, stru= ct xen_domctl_bind_pt_irq *b return avc_has_perm(dsid, rsid, SECCLASS_RESOURCE, dperm, &ad); } =20 -static int flask_unbind_pt_irq (struct domain *d, struct xen_domctl_bind_p= t_irq *bind) +static int cf_check flask_unbind_pt_irq( + struct domain *d, struct xen_domctl_bind_pt_irq *bind) { return current_has_perm(d, SECCLASS_RESOURCE, RESOURCE__REMOVE); } =20 -static int flask_irq_permission (struct domain *d, int pirq, uint8_t acces= s) +static int cf_check flask_irq_permission( + struct domain *d, int pirq, uint8_t access) { /* the PIRQ number is not useful; real IRQ is checked during mapping */ return current_has_perm(d, SECCLASS_RESOURCE, resource_to_perm(access)= ); @@ -1016,7 +1026,8 @@ struct iomem_has_perm_data { u32 use_perm; }; =20 -static int _iomem_has_perm(void *v, u32 sid, unsigned long start, unsigned= long end) +static int cf_check _iomem_has_perm( + void *v, u32 sid, unsigned long start, unsigned long end) { struct iomem_has_perm_data *data =3D v; struct avc_audit_data ad; @@ -1034,7 +1045,8 @@ static int _iomem_has_perm(void *v, u32 sid, unsigned= long start, unsigned long return avc_has_perm(data->dsid, sid, SECCLASS_RESOURCE, data->use_perm= , &ad); } =20 -static int flask_iomem_permission(struct domain *d, uint64_t start, uint64= _t end, uint8_t access) +static int cf_check flask_iomem_permission( + struct domain *d, uint64_t start, uint64_t end, uint8_t access) { struct iomem_has_perm_data data; int rc; @@ -1056,12 +1068,14 @@ static int flask_iomem_permission(struct domain *d,= uint64_t start, uint64_t end return security_iterate_iomem_sids(start, end, _iomem_has_perm, &data); } =20 -static int flask_iomem_mapping(struct domain *d, uint64_t start, uint64_t = end, uint8_t access) +static int cf_check flask_iomem_mapping(struct domain *d, uint64_t start, = uint64_t end, uint8_t access) { return flask_iomem_permission(d, start, end, access); } =20 -static int flask_pci_config_permission(struct domain *d, uint32_t machine_= bdf, uint16_t start, uint16_t end, uint8_t access) +static int cf_check flask_pci_config_permission( + struct domain *d, uint32_t machine_bdf, uint16_t start, uint16_t end, + uint8_t access) { u32 dsid, rsid; int rc =3D -EPERM; @@ -1085,12 +1099,12 @@ static int flask_pci_config_permission(struct domai= n *d, uint32_t machine_bdf, u =20 } =20 -static int flask_resource_plug_core(void) +static int cf_check flask_resource_plug_core(void) { return avc_current_has_perm(SECINITSID_DOMXEN, SECCLASS_RESOURCE, RESO= URCE__PLUG, NULL); } =20 -static int flask_resource_unplug_core(void) +static int cf_check flask_resource_unplug_core(void) { return avc_current_has_perm(SECINITSID_DOMXEN, SECCLASS_RESOURCE, RESO= URCE__UNPLUG, NULL); } @@ -1100,7 +1114,7 @@ static int flask_resource_use_core(void) return avc_current_has_perm(SECINITSID_DOMXEN, SECCLASS_RESOURCE, RESO= URCE__USE, NULL); } =20 -static int flask_resource_plug_pci(uint32_t machine_bdf) +static int cf_check flask_resource_plug_pci(uint32_t machine_bdf) { u32 rsid; int rc =3D -EPERM; @@ -1115,7 +1129,7 @@ static int flask_resource_plug_pci(uint32_t machine_b= df) return avc_current_has_perm(rsid, SECCLASS_RESOURCE, RESOURCE__PLUG, &= ad); } =20 -static int flask_resource_unplug_pci(uint32_t machine_bdf) +static int cf_check flask_resource_unplug_pci(uint32_t machine_bdf) { u32 rsid; int rc =3D -EPERM; @@ -1130,7 +1144,7 @@ static int flask_resource_unplug_pci(uint32_t machine= _bdf) return avc_current_has_perm(rsid, SECCLASS_RESOURCE, RESOURCE__UNPLUG,= &ad); } =20 -static int flask_resource_setup_pci(uint32_t machine_bdf) +static int cf_check flask_resource_setup_pci(uint32_t machine_bdf) { u32 rsid; int rc =3D -EPERM; @@ -1145,7 +1159,7 @@ static int flask_resource_setup_pci(uint32_t machine_= bdf) return avc_current_has_perm(rsid, SECCLASS_RESOURCE, RESOURCE__SETUP, = &ad); } =20 -static int flask_resource_setup_gsi(int gsi) +static int cf_check flask_resource_setup_gsi(int gsi) { u32 rsid; int rc =3D -EPERM; @@ -1158,12 +1172,12 @@ static int flask_resource_setup_gsi(int gsi) return avc_current_has_perm(rsid, SECCLASS_RESOURCE, RESOURCE__SETUP, = &ad); } =20 -static int flask_resource_setup_misc(void) +static int cf_check flask_resource_setup_misc(void) { return avc_current_has_perm(SECINITSID_XEN, SECCLASS_RESOURCE, RESOURC= E__SETUP, NULL); } =20 -static inline int flask_page_offline(uint32_t cmd) +static inline int cf_check flask_page_offline(uint32_t cmd) { switch (cmd) { case sysctl_page_offline: @@ -1177,27 +1191,28 @@ static inline int flask_page_offline(uint32_t cmd) } } =20 -static inline int flask_hypfs_op(void) +static inline int cf_check flask_hypfs_op(void) { return domain_has_xen(current->domain, XEN__HYPFS_OP); } =20 -static int flask_add_to_physmap(struct domain *d1, struct domain *d2) +static int cf_check flask_add_to_physmap(struct domain *d1, struct domain = *d2) { return domain_has_perm(d1, d2, SECCLASS_MMU, MMU__PHYSMAP); } =20 -static int flask_remove_from_physmap(struct domain *d1, struct domain *d2) +static int cf_check flask_remove_from_physmap( + struct domain *d1, struct domain *d2) { return domain_has_perm(d1, d2, SECCLASS_MMU, MMU__PHYSMAP); } =20 -static int flask_map_gmfn_foreign(struct domain *d, struct domain *t) +static int cf_check flask_map_gmfn_foreign(struct domain *d, struct domain= *t) { return domain_has_perm(d, t, SECCLASS_MMU, MMU__MAP_READ | MMU__MAP_WR= ITE); } =20 -static int flask_hvm_param(struct domain *d, unsigned long op) +static int cf_check flask_hvm_param(struct domain *d, unsigned long op) { u32 perm; =20 @@ -1216,12 +1231,12 @@ static int flask_hvm_param(struct domain *d, unsign= ed long op) return current_has_perm(d, SECCLASS_HVM, perm); } =20 -static int flask_hvm_param_altp2mhvm(struct domain *d) +static int cf_check flask_hvm_param_altp2mhvm(struct domain *d) { return current_has_perm(d, SECCLASS_HVM, HVM__ALTP2MHVM); } =20 -static int flask_hvm_altp2mhvm_op(struct domain *d, uint64_t mode, uint32_= t op) +static int cf_check flask_hvm_altp2mhvm_op(struct domain *d, uint64_t mode= , uint32_t op) { /* * Require both mode and XSM to allow the operation. Assume XSM rules @@ -1245,34 +1260,34 @@ static int flask_hvm_altp2mhvm_op(struct domain *d,= uint64_t mode, uint32_t op) return current_has_perm(d, SECCLASS_HVM, HVM__ALTP2MHVM_OP); } =20 -static int flask_vm_event_control(struct domain *d, int mode, int op) +static int cf_check flask_vm_event_control(struct domain *d, int mode, int= op) { return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__VM_EVENT); } =20 #ifdef CONFIG_MEM_ACCESS -static int flask_mem_access(struct domain *d) +static int cf_check flask_mem_access(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__MEM_ACCESS); } #endif =20 #ifdef CONFIG_MEM_PAGING -static int flask_mem_paging(struct domain *d) +static int cf_check flask_mem_paging(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__MEM_PAGING); } #endif =20 #ifdef CONFIG_MEM_SHARING -static int flask_mem_sharing(struct domain *d) +static int cf_check flask_mem_sharing(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__MEM_SHARING); } #endif =20 #if defined(CONFIG_HAS_PASSTHROUGH) && defined(CONFIG_HAS_PCI) -static int flask_get_device_group(uint32_t machine_bdf) +static int cf_check flask_get_device_group(uint32_t machine_bdf) { u32 rsid; int rc =3D -EPERM; @@ -1296,7 +1311,7 @@ static int flask_test_assign_device(uint32_t machine_= bdf) return avc_current_has_perm(rsid, SECCLASS_RESOURCE, RESOURCE__STAT_DE= VICE, NULL); } =20 -static int flask_assign_device(struct domain *d, uint32_t machine_bdf) +static int cf_check flask_assign_device(struct domain *d, uint32_t machine= _bdf) { u32 dsid, rsid; int rc =3D -EPERM; @@ -1326,7 +1341,8 @@ static int flask_assign_device(struct domain *d, uint= 32_t machine_bdf) return avc_has_perm(dsid, rsid, SECCLASS_RESOURCE, dperm, &ad); } =20 -static int flask_deassign_device(struct domain *d, uint32_t machine_bdf) +static int cf_check flask_deassign_device( + struct domain *d, uint32_t machine_bdf) { u32 rsid; int rc =3D -EPERM; @@ -1357,7 +1373,7 @@ static int flask_test_assign_dtdevice(const char *dtp= ath) NULL); } =20 -static int flask_assign_dtdevice(struct domain *d, const char *dtpath) +static int cf_check flask_assign_dtdevice(struct domain *d, const char *dt= path) { u32 dsid, rsid; int rc =3D -EPERM; @@ -1387,7 +1403,8 @@ static int flask_assign_dtdevice(struct domain *d, co= nst char *dtpath) return avc_has_perm(dsid, rsid, SECCLASS_RESOURCE, dperm, &ad); } =20 -static int flask_deassign_dtdevice(struct domain *d, const char *dtpath) +static int cf_check flask_deassign_dtdevice( + struct domain *d, const char *dtpath) { u32 rsid; int rc =3D -EPERM; @@ -1405,7 +1422,7 @@ static int flask_deassign_dtdevice(struct domain *d, = const char *dtpath) } #endif /* HAS_PASSTHROUGH && HAS_DEVICE_TREE */ =20 -static int flask_platform_op(uint32_t op) +static int cf_check flask_platform_op(uint32_t op) { switch ( op ) { @@ -1474,12 +1491,12 @@ static int flask_platform_op(uint32_t op) } =20 #ifdef CONFIG_X86 -static int flask_do_mca(void) +static int cf_check flask_do_mca(void) { return domain_has_xen(current->domain, XEN__MCA_OP); } =20 -static int flask_shadow_control(struct domain *d, uint32_t op) +static int cf_check flask_shadow_control(struct domain *d, uint32_t op) { u32 perm; =20 @@ -1513,7 +1530,8 @@ struct ioport_has_perm_data { u32 use_perm; }; =20 -static int _ioport_has_perm(void *v, u32 sid, unsigned long start, unsigne= d long end) +static int cf_check _ioport_has_perm( + void *v, u32 sid, unsigned long start, unsigned long end) { struct ioport_has_perm_data *data =3D v; struct avc_audit_data ad; @@ -1531,7 +1549,8 @@ static int _ioport_has_perm(void *v, u32 sid, unsigne= d long start, unsigned long return avc_has_perm(data->dsid, sid, SECCLASS_RESOURCE, data->use_perm= , &ad); } =20 -static int flask_ioport_permission(struct domain *d, uint32_t start, uint3= 2_t end, uint8_t access) +static int cf_check flask_ioport_permission( + struct domain *d, uint32_t start, uint32_t end, uint8_t access) { int rc; struct ioport_has_perm_data data; @@ -1554,12 +1573,14 @@ static int flask_ioport_permission(struct domain *d= , uint32_t start, uint32_t en return security_iterate_ioport_sids(start, end, _ioport_has_perm, &dat= a); } =20 -static int flask_ioport_mapping(struct domain *d, uint32_t start, uint32_t= end, uint8_t access) +static int cf_check flask_ioport_mapping( + struct domain *d, uint32_t start, uint32_t end, uint8_t access) { return flask_ioport_permission(d, start, end, access); } =20 -static int flask_mem_sharing_op(struct domain *d, struct domain *cd, int o= p) +static int cf_check flask_mem_sharing_op( + struct domain *d, struct domain *cd, int op) { int rc =3D current_has_perm(cd, SECCLASS_HVM, HVM__MEM_SHARING); if ( rc ) @@ -1567,7 +1588,7 @@ static int flask_mem_sharing_op(struct domain *d, str= uct domain *cd, int op) return domain_has_perm(d, cd, SECCLASS_HVM, HVM__SHARE_MEM); } =20 -static int flask_apic(struct domain *d, int cmd) +static int cf_check flask_apic(struct domain *d, int cmd) { u32 perm; =20 @@ -1587,18 +1608,18 @@ static int flask_apic(struct domain *d, int cmd) return domain_has_xen(d, perm); } =20 -static int flask_machine_memory_map(void) +static int cf_check flask_machine_memory_map(void) { return avc_current_has_perm(SECINITSID_XEN, SECCLASS_MMU, MMU__MEMORYM= AP, NULL); } =20 -static int flask_domain_memory_map(struct domain *d) +static int cf_check flask_domain_memory_map(struct domain *d) { return current_has_perm(d, SECCLASS_MMU, MMU__MEMORYMAP); } =20 -static int flask_mmu_update(struct domain *d, struct domain *t, - struct domain *f, uint32_t flags) +static int cf_check flask_mmu_update( + struct domain *d, struct domain *t, struct domain *f, uint32_t flags) { int rc =3D 0; u32 map_perms =3D 0; @@ -1620,13 +1641,13 @@ static int flask_mmu_update(struct domain *d, struc= t domain *t, return rc; } =20 -static int flask_mmuext_op(struct domain *d, struct domain *f) +static int cf_check flask_mmuext_op(struct domain *d, struct domain *f) { return domain_has_perm(d, f, SECCLASS_MMU, MMU__MMUEXT_OP); } =20 -static int flask_update_va_mapping(struct domain *d, struct domain *f, - l1_pgentry_t pte) +static int cf_check flask_update_va_mapping( + struct domain *d, struct domain *f, l1_pgentry_t pte) { u32 map_perms =3D MMU__MAP_READ; if ( !(l1e_get_flags(pte) & _PAGE_PRESENT) ) @@ -1637,12 +1658,12 @@ static int flask_update_va_mapping(struct domain *d= , struct domain *f, return domain_has_perm(d, f, SECCLASS_MMU, map_perms); } =20 -static int flask_priv_mapping(struct domain *d, struct domain *t) +static int cf_check flask_priv_mapping(struct domain *d, struct domain *t) { return domain_has_perm(d, t, SECCLASS_MMU, MMU__TARGET_HACK); } =20 -static int flask_pmu_op (struct domain *d, unsigned int op) +static int cf_check flask_pmu_op(struct domain *d, unsigned int op) { u32 dsid =3D domain_sid(d); =20 @@ -1666,12 +1687,12 @@ static int flask_pmu_op (struct domain *d, unsigned= int op) } #endif /* CONFIG_X86 */ =20 -static int flask_dm_op(struct domain *d) +static int cf_check flask_dm_op(struct domain *d) { return current_has_perm(d, SECCLASS_HVM, HVM__DM); } =20 -static int flask_xen_version (uint32_t op) +static int cf_check flask_xen_version(uint32_t op) { u32 dsid =3D domain_sid(current->domain); =20 @@ -1711,32 +1732,33 @@ static int flask_xen_version (uint32_t op) } } =20 -static int flask_domain_resource_map(struct domain *d) +static int cf_check flask_domain_resource_map(struct domain *d) { return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__RESOURCE_MAP); } =20 #ifdef CONFIG_ARGO -static int flask_argo_enable(const struct domain *d) +static int cf_check flask_argo_enable(const struct domain *d) { return avc_has_perm(domain_sid(d), SECINITSID_XEN, SECCLASS_ARGO, ARGO__ENABLE, NULL); } =20 -static int flask_argo_register_single_source(const struct domain *d, - const struct domain *t) +static int cf_check flask_argo_register_single_source( + const struct domain *d, const struct domain *t) { return domain_has_perm(d, t, SECCLASS_ARGO, ARGO__REGISTER_SINGLE_SOURCE); } =20 -static int flask_argo_register_any_source(const struct domain *d) +static int cf_check flask_argo_register_any_source(const struct domain *d) { return avc_has_perm(domain_sid(d), SECINITSID_XEN, SECCLASS_ARGO, ARGO__REGISTER_ANY_SOURCE, NULL); } =20 -static int flask_argo_send(const struct domain *d, const struct domain *t) +static int cf_check flask_argo_send( + const struct domain *d, const struct domain *t) { return domain_has_perm(d, t, SECCLASS_ARGO, ARGO__SEND); } diff --git a/xen/xsm/flask/private.h b/xen/xsm/flask/private.h index 73b0de87245a..429f213cce74 100644 --- a/xen/xsm/flask/private.h +++ b/xen/xsm/flask/private.h @@ -3,7 +3,7 @@ =20 #include =20 -long do_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op); -int compat_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op); +long cf_check do_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op); +int cf_check compat_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op); =20 #endif /* XSM_FLASK_PRIVATE */ diff --git a/xen/xsm/silo.c b/xen/xsm/silo.c index 3550dded7b4e..4d5fc98e7e54 100644 --- a/xen/xsm/silo.c +++ b/xen/xsm/silo.c @@ -33,8 +33,8 @@ static bool silo_mode_dom_check(const struct domain *ldom, is_control_domain(rdom) || ldom =3D=3D rdom); } =20 -static int silo_evtchn_unbound(struct domain *d1, struct evtchn *chn, - domid_t id2) +static int cf_check silo_evtchn_unbound( + struct domain *d1, struct evtchn *chn, domid_t id2) { int rc =3D -EPERM; struct domain *d2 =3D rcu_lock_domain_by_any_id(id2); @@ -51,30 +51,31 @@ static int silo_evtchn_unbound(struct domain *d1, struc= t evtchn *chn, return rc; } =20 -static int silo_evtchn_interdomain(struct domain *d1, struct evtchn *chan1, - struct domain *d2, struct evtchn *chan2) +static int cf_check silo_evtchn_interdomain( + struct domain *d1, struct evtchn *chan1, + struct domain *d2, struct evtchn *chan2) { if ( silo_mode_dom_check(d1, d2) ) return xsm_evtchn_interdomain(d1, chan1, d2, chan2); return -EPERM; } =20 -static int silo_grant_mapref(struct domain *d1, struct domain *d2, - uint32_t flags) +static int cf_check silo_grant_mapref( + struct domain *d1, struct domain *d2, uint32_t flags) { if ( silo_mode_dom_check(d1, d2) ) return xsm_grant_mapref(d1, d2, flags); return -EPERM; } =20 -static int silo_grant_transfer(struct domain *d1, struct domain *d2) +static int cf_check silo_grant_transfer(struct domain *d1, struct domain *= d2) { if ( silo_mode_dom_check(d1, d2) ) return xsm_grant_transfer(d1, d2); return -EPERM; } =20 -static int silo_grant_copy(struct domain *d1, struct domain *d2) +static int cf_check silo_grant_copy(struct domain *d1, struct domain *d2) { if ( silo_mode_dom_check(d1, d2) ) return xsm_grant_copy(d1, d2); @@ -83,15 +84,16 @@ static int silo_grant_copy(struct domain *d1, struct do= main *d2) =20 #ifdef CONFIG_ARGO =20 -static int silo_argo_register_single_source(const struct domain *d1, - const struct domain *d2) +static int cf_check silo_argo_register_single_source( + const struct domain *d1, const struct domain *d2) { if ( silo_mode_dom_check(d1, d2) ) return xsm_argo_register_single_source(d1, d2); return -EPERM; } =20 -static int silo_argo_send(const struct domain *d1, const struct domain *d2) +static int cf_check silo_argo_send( + const struct domain *d1, const struct domain *d2) { if ( silo_mode_dom_check(d1, d2) ) return xsm_argo_send(d1, d2); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932040; cv=none; d=zohomail.com; s=zohoarc; b=ZxEUpC141x+Ah7gNajtQNpXpYz+dgZtC+kInZgIQbtHb0ahElyKXUnL7sgV3XWRJwAld9BrR0IjIs5LEyq0o6/udZLRoDhAHl6qa43AKcMpHTwq4x3EIDhsuR3qXBIy/dSZR/VaiFLYPzeStvlfw/UIyej1y0RkSpUr06J97Z1k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932040; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Lgh6cQHd7dJzO8dWTJwImwg3eAC6ddYxUQ/lHcniZk8=; b=NQAM7YOIcIThiCuEHDR7fvtmAbIf+OMq4GMYoEhN4v33t6mcrr6m3UJlxxZ58fru0+F3UnUeKhq4RBJyOVv0+yp3msLzO9P2joRjpfG7WoxB9HoDC6lMYTXGMtwJ6+h8YZUVnotakdtml+9DWLwHFC6dXmd0c+z8wveBwNFT1Pg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932040047986.1466530592455; Fri, 26 Nov 2021 05:07:20 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232778.403770 (Exim 4.92) (envelope-from ) id 1mqawM-00038p-OM; Fri, 26 Nov 2021 13:06:58 +0000 Received: by outflank-mailman (output) from mailman id 232778.403770; Fri, 26 Nov 2021 13:06:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawM-00036t-IQ; Fri, 26 Nov 2021 13:06:58 +0000 Received: by outflank-mailman (input) for mailman id 232778; Fri, 26 Nov 2021 13:06:56 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauc-0003W9-AW for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:10 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7a6cca6d-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:07 +0100 (CET) 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: 7a6cca6d-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931907; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6W30pS4w00/O4PLw081oztrCfwf9uX+zMhuEsVt7eLg=; b=ee/XFbG1mvg+emKveS9yXuLkooUgH21db1aZLSXHazUkOT0p2NkHoKbw WPz5byUcX+pAv+mTPAwgNT17lHGYbo3KcKHjZgbARaytMIagyHoZ7PoQr qqhX3gSUYH9MvzRraas1YP0HnZVBMzLJNR+S3ybA0GxrMwzznX+OAJViR M=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: pcZI6XLvAbxV6CboBlEV7r7xBC7uET7Hqr/1oBRAM1aetUZt3tRmnVSE6F+YblWt4mlLnsNJOL 1EAAyOYCRBnoO7jghjQeZNzv9XOxLvKKh+ldnVOD/SShfdnBWSlt4C43LyVZmOzYMDk9m7cj94 YMRABTKhH5vjL2VXZKXFXhaJ/puMMU7nosm/UCmyPA/zx6+zax6tMW7S7Gd0qTYF4fAWopxFWy t8mWM8y8vrFdCrZpK8ltQuYHQyHYQCYBIjFBcL43mguM8oGVPCN0KchSP1Kw2wjBo/ZARqOAFR sVHZ83qatcwDTF6mUOoa4VlC X-SBRS: 5.1 X-MesageID: 58695956 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:ep98O6JTUqNIKmJLFE+RQZIlxSXFcZb7ZxGr2PjKsXjdYENS12ZWy GoeUTvTM/mDMDSjfd1/bt6+8BwH7JCGx4c1HFBlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es5xbZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2FuvYyk 4VymaDzUCB0DuqSxe0CSiZXRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Gpg2JETTKuAD yYfQR12aybwJF4MAG1JWIM7n92XwUfUQjIN/Tp5ooJoujOOnWSdyoPFEvDYZ9iLTsV9hVuDq yTN+GGRKh0UPdOQyD2B81q3m/TC2yj8Xeo6FrKi8eVxqEaO3WFVAxoTPXO5vP24h0iWS99Zb UsO9UIGvaU0sUCmUNT5dxm5u2Kf+A4RXcJKFO834x3LzbDbiy6CHXQNRDNFbN0gtec1SCYs2 1vPmMnmbRRwtJWFRHTb8a2bxQ5eIgBMczVEP3VdC1JYvZ+z++nfky4jUP5vNYj21Y3KNQ2z2 hfXnG9g2rwMlPEEgvDTEU/8vxqgoZ3ATwgQ7wrRX3644g4RWLNJd7BE+nCAs68ecd/xok2p+ SFdxpPAtLxm4YSlzXTVGI0w8KeVC+Fp2dE2qXpmBNEf+juk4BZPlqgAsWgldC+F3ivpEAIFg XM/WysNu/e/31PwNMebhr5d7exxlsAM8vy/C5jpgiJmOMQZSeN+1HgGibSs927silMwtqo0J I2Wd82hZV5DV/84nGTrGLZBj+Nwrszb+Y81bcugp/hA+eDDDEN5tJ9faAfeBgzHxP/sTPrpH yZ3aJLRlkQ3vBzWaSjL648DRW3m3lBgba0aX/d/L7bZSiI/QTlJI6aIndsJJtw094wIx7yg1 izsBSdlJK/X2CSvxfOiMSs4NtsCnP9X8BoGAMDbFQryhiV4P9/wtPx3mlleVeBPydGPBMVcF 5EtE/hsyNwUItge0zhCP5T7sqJ4cxGn2VCHMya/OWBtdJ98XQ3ZvNTje1K3piUJCyO2s+o4o qGhiVyHEcZSGVw6AZaEcu+rwnOwoWMZxLB4UXzXL4QBY07r6oVrdXD816dlP8EWJBzf7TKGz ALKUwwArOzArtZtotnEjKyJtamzFO56EhYIFmXX9+/uZyLb4nCi0clLV+PRJWLRU2b9+aODY +RJzq6jbK1bzQgS64clSuRl16Mz4dfrtoR29AU8ESWZdUmvB5NhPmKCgZtFuJpSy+ILogCxQ E+OpIVXYO3bJMP/HVcNDwM5deDfh+oMkzzf4PlpckX34Ch7oOiOXUlIZkTejSVcKP1+MZ8/w Pdns8kTslTthh0vO9eAryZV62XTcSBQD/R57skXUN3xlw4m6lBeepiNWCb57aaGZ8hILkR3c CSfg7DPhugEy0fPG5bp+aMhAQaJaUwyhS13 IronPort-HdrOrdr: A9a23:HP+c8KAaAU27XJHlHemU55DYdb4zR+YMi2TC1yhKJyC9Ffbo7v xG/c5rsyMc5wxwZJhNo7y90ey7MBbhHP1OkO4s1NWZLWrbUQKTRekIh+bfKn/baknDH4ZmpN 9dmsNFaeEYY2IUsS+D2njbL+od X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58695956" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Dario Faggioli , Juergen Gross Subject: [PATCH 16/65] xen/sched: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:33:57 +0000 Message-ID: <20211126123446.32324-17-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932041023100015 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 CC: Dario Faggioli CC: Juergen Gross --- xen/common/sched/arinc653.c | 20 +++++++-------- xen/common/sched/core.c | 8 +++--- xen/common/sched/credit.c | 49 ++++++++++++++++++------------------ xen/common/sched/credit2.c | 51 +++++++++++++++++++------------------- xen/common/sched/null.c | 60 +++++++++++++++++++++++------------------= ---- xen/common/sched/rt.c | 42 +++++++++++++++---------------- 6 files changed, 115 insertions(+), 115 deletions(-) diff --git a/xen/common/sched/arinc653.c b/xen/common/sched/arinc653.c index 542191822192..a82c0d7314a1 100644 --- a/xen/common/sched/arinc653.c +++ b/xen/common/sched/arinc653.c @@ -343,7 +343,7 @@ arinc653_sched_get( *
  • !0 =3D error * */ -static int +static int cf_check a653sched_init(struct scheduler *ops) { a653sched_priv_t *prv; @@ -366,7 +366,7 @@ a653sched_init(struct scheduler *ops) * * @param ops Pointer to this instance of the scheduler structure */ -static void +static void cf_check a653sched_deinit(struct scheduler *ops) { xfree(SCHED_PRIV(ops)); @@ -381,7 +381,7 @@ a653sched_deinit(struct scheduler *ops) * * @return Pointer to the allocated data */ -static void * +static void *cf_check a653sched_alloc_udata(const struct scheduler *ops, struct sched_unit *unit, void *dd) { @@ -442,7 +442,7 @@ a653sched_alloc_udata(const struct scheduler *ops, stru= ct sched_unit *unit, * * @param ops Pointer to this instance of the scheduler structure */ -static void +static void cf_check a653sched_free_udata(const struct scheduler *ops, void *priv) { a653sched_priv_t *sched_priv =3D SCHED_PRIV(ops); @@ -469,7 +469,7 @@ a653sched_free_udata(const struct scheduler *ops, void = *priv) * @param ops Pointer to this instance of the scheduler structure * @param unit Pointer to struct sched_unit */ -static void +static void cf_check a653sched_unit_sleep(const struct scheduler *ops, struct sched_unit *unit) { if ( AUNIT(unit) !=3D NULL ) @@ -489,7 +489,7 @@ a653sched_unit_sleep(const struct scheduler *ops, struc= t sched_unit *unit) * @param ops Pointer to this instance of the scheduler structure * @param unit Pointer to struct sched_unit */ -static void +static void cf_check a653sched_unit_wake(const struct scheduler *ops, struct sched_unit *unit) { if ( AUNIT(unit) !=3D NULL ) @@ -505,7 +505,7 @@ a653sched_unit_wake(const struct scheduler *ops, struct= sched_unit *unit) * @param ops Pointer to this instance of the scheduler structure * @param now Current time */ -static void +static void cf_check a653sched_do_schedule( const struct scheduler *ops, struct sched_unit *prev, @@ -604,7 +604,7 @@ a653sched_do_schedule( * * @return Scheduler resource to run on */ -static struct sched_resource * +static struct sched_resource *cf_check a653sched_pick_resource(const struct scheduler *ops, const struct sched_unit *unit) { @@ -634,7 +634,7 @@ a653sched_pick_resource(const struct scheduler *ops, * @param pdata scheduler specific PCPU data (we don't have any) * @param vdata scheduler specific UNIT data of the idle unit */ -static spinlock_t * +static spinlock_t *cf_check a653_switch_sched(struct scheduler *new_ops, unsigned int cpu, void *pdata, void *vdata) { @@ -656,7 +656,7 @@ a653_switch_sched(struct scheduler *new_ops, unsigned i= nt cpu, * @param ops Pointer to this instance of the scheduler structure * @param sc Pointer to the scheduler operation specified by Domain= 0 */ -static int +static int cf_check a653sched_adjust_global(const struct scheduler *ops, struct xen_sysctl_scheduler_op *sc) { diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index b1836b591c0a..9e09d9befa23 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -98,13 +98,13 @@ static bool scheduler_active; static void sched_set_affinity( struct sched_unit *unit, const cpumask_t *hard, const cpumask_t *soft); =20 -static struct sched_resource * +static struct sched_resource *cf_check sched_idle_res_pick(const struct scheduler *ops, const struct sched_unit *= unit) { return unit->res; } =20 -static void * +static void *cf_check sched_idle_alloc_udata(const struct scheduler *ops, struct sched_unit *uni= t, void *dd) { @@ -112,12 +112,12 @@ sched_idle_alloc_udata(const struct scheduler *ops, s= truct sched_unit *unit, return ZERO_BLOCK_PTR; } =20 -static void +static void cf_check sched_idle_free_udata(const struct scheduler *ops, void *priv) { } =20 -static void sched_idle_schedule( +static void cf_check sched_idle_schedule( const struct scheduler *ops, struct sched_unit *unit, s_time_t now, bool tasklet_work_scheduled) { diff --git a/xen/common/sched/credit.c b/xen/common/sched/credit.c index 5635271f6fea..4d3bd8cba6fc 100644 --- a/xen/common/sched/credit.c +++ b/xen/common/sched/credit.c @@ -507,7 +507,7 @@ static inline void __runq_tickle(const struct csched_un= it *new) SCHED_STAT_CRANK(tickled_no_cpu); } =20 -static void +static void cf_check csched_free_pdata(const struct scheduler *ops, void *pcpu, int cpu) { const struct csched_private *prv =3D CSCHED_PRIV(ops); @@ -524,7 +524,7 @@ csched_free_pdata(const struct scheduler *ops, void *pc= pu, int cpu) xfree(pcpu); } =20 -static void +static void cf_check csched_deinit_pdata(const struct scheduler *ops, void *pcpu, int cpu) { struct csched_private *prv =3D CSCHED_PRIV(ops); @@ -566,7 +566,7 @@ csched_deinit_pdata(const struct scheduler *ops, void *= pcpu, int cpu) spin_unlock_irqrestore(&prv->lock, flags); } =20 -static void * +static void *cf_check csched_alloc_pdata(const struct scheduler *ops, int cpu) { struct csched_pcpu *spc; @@ -615,7 +615,7 @@ init_pdata(struct csched_private *prv, struct csched_pc= pu *spc, int cpu) } =20 /* Change the scheduler of cpu to us (Credit). */ -static spinlock_t * +static spinlock_t *cf_check csched_switch_sched(struct scheduler *new_ops, unsigned int cpu, void *pdata, void *vdata) { @@ -848,7 +848,7 @@ _csched_cpu_pick(const struct scheduler *ops, const str= uct sched_unit *unit, return cpu; } =20 -static struct sched_resource * +static struct sched_resource *cf_check csched_res_pick(const struct scheduler *ops, const struct sched_unit *unit) { struct csched_unit *svc =3D CSCHED_UNIT(unit); @@ -985,9 +985,8 @@ csched_unit_acct(struct csched_private *prv, unsigned i= nt cpu) } } =20 -static void * -csched_alloc_udata(const struct scheduler *ops, struct sched_unit *unit, - void *dd) +static void *cf_check csched_alloc_udata( + const struct scheduler *ops, struct sched_unit *unit, void *dd) { struct csched_unit *svc; =20 @@ -1007,7 +1006,7 @@ csched_alloc_udata(const struct scheduler *ops, struc= t sched_unit *unit, return svc; } =20 -static void +static void cf_check csched_unit_insert(const struct scheduler *ops, struct sched_unit *unit) { struct csched_unit *svc =3D unit->priv; @@ -1032,7 +1031,7 @@ csched_unit_insert(const struct scheduler *ops, struc= t sched_unit *unit) SCHED_STAT_CRANK(unit_insert); } =20 -static void +static void cf_check csched_free_udata(const struct scheduler *ops, void *priv) { struct csched_unit *svc =3D priv; @@ -1042,7 +1041,7 @@ csched_free_udata(const struct scheduler *ops, void *= priv) xfree(svc); } =20 -static void +static void cf_check csched_unit_remove(const struct scheduler *ops, struct sched_unit *unit) { struct csched_private *prv =3D CSCHED_PRIV(ops); @@ -1069,7 +1068,7 @@ csched_unit_remove(const struct scheduler *ops, struc= t sched_unit *unit) BUG_ON( sdom =3D=3D NULL ); } =20 -static void +static void cf_check csched_unit_sleep(const struct scheduler *ops, struct sched_unit *unit) { struct csched_unit * const svc =3D CSCHED_UNIT(unit); @@ -1094,7 +1093,7 @@ csched_unit_sleep(const struct scheduler *ops, struct= sched_unit *unit) runq_remove(svc); } =20 -static void +static void cf_check csched_unit_wake(const struct scheduler *ops, struct sched_unit *unit) { struct csched_unit * const svc =3D CSCHED_UNIT(unit); @@ -1156,7 +1155,7 @@ csched_unit_wake(const struct scheduler *ops, struct = sched_unit *unit) __runq_tickle(svc); } =20 -static void +static void cf_check csched_unit_yield(const struct scheduler *ops, struct sched_unit *unit) { struct csched_unit * const svc =3D CSCHED_UNIT(unit); @@ -1165,7 +1164,7 @@ csched_unit_yield(const struct scheduler *ops, struct= sched_unit *unit) set_bit(CSCHED_FLAG_UNIT_YIELD, &svc->flags); } =20 -static int +static int cf_check csched_dom_cntl( const struct scheduler *ops, struct domain *d, @@ -1210,7 +1209,7 @@ csched_dom_cntl( return rc; } =20 -static void +static void cf_check csched_aff_cntl(const struct scheduler *ops, struct sched_unit *unit, const cpumask_t *hard, const cpumask_t *soft) { @@ -1238,7 +1237,7 @@ __csched_set_tslice(struct csched_private *prv, unsig= ned int timeslice_ms) prv->credit =3D prv->credits_per_tslice * prv->ncpus; } =20 -static int +static int cf_check csched_sys_cntl(const struct scheduler *ops, struct xen_sysctl_scheduler_op *sc) { @@ -1281,7 +1280,7 @@ csched_sys_cntl(const struct scheduler *ops, return rc; } =20 -static void * +static void *cf_check csched_alloc_domdata(const struct scheduler *ops, struct domain *dom) { struct csched_dom *sdom; @@ -1299,7 +1298,7 @@ csched_alloc_domdata(const struct scheduler *ops, str= uct domain *dom) return sdom; } =20 -static void +static void cf_check csched_free_domdata(const struct scheduler *ops, void *data) { xfree(data); @@ -1809,7 +1808,7 @@ csched_load_balance(struct csched_private *prv, int c= pu, * This function is in the critical path. It is designed to be simple and * fast for the common case. */ -static void csched_schedule( +static void cf_check csched_schedule( const struct scheduler *ops, struct sched_unit *unit, s_time_t now, bool tasklet_work_scheduled) { @@ -2026,7 +2025,7 @@ csched_dump_unit(const struct csched_unit *svc) printk("\n"); } =20 -static void +static void cf_check csched_dump_pcpu(const struct scheduler *ops, int cpu) { const struct list_head *runq; @@ -2079,7 +2078,7 @@ csched_dump_pcpu(const struct scheduler *ops, int cpu) spin_unlock_irqrestore(&prv->lock, flags); } =20 -static void +static void cf_check csched_dump(const struct scheduler *ops) { struct list_head *iter_sdom, *iter_svc; @@ -2143,7 +2142,7 @@ csched_dump(const struct scheduler *ops) spin_unlock_irqrestore(&prv->lock, flags); } =20 -static int __init +static int __init cf_check csched_global_init(void) { if ( sched_credit_tslice_ms > XEN_SYSCTL_CSCHED_TSLICE_MAX || @@ -2173,7 +2172,7 @@ csched_global_init(void) return 0; } =20 -static int +static int cf_check csched_init(struct scheduler *ops) { struct csched_private *prv; @@ -2215,7 +2214,7 @@ csched_init(struct scheduler *ops) return 0; } =20 -static void +static void cf_check csched_deinit(struct scheduler *ops) { struct csched_private *prv; diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c index d96e2749ddfb..0e3f89e5378e 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -2164,7 +2164,7 @@ csched2_unit_check(const struct sched_unit *unit) #define CSCHED2_UNIT_CHECK(unit) #endif =20 -static void * +static void *cf_check csched2_alloc_udata(const struct scheduler *ops, struct sched_unit *unit, void *dd) { @@ -2208,7 +2208,7 @@ csched2_alloc_udata(const struct scheduler *ops, stru= ct sched_unit *unit, return svc; } =20 -static void +static void cf_check csched2_unit_sleep(const struct scheduler *ops, struct sched_unit *unit) { struct csched2_unit * const svc =3D csched2_unit(unit); @@ -2230,7 +2230,7 @@ csched2_unit_sleep(const struct scheduler *ops, struc= t sched_unit *unit) __clear_bit(__CSFLAG_delayed_runq_add, &svc->flags); } =20 -static void +static void cf_check csched2_unit_wake(const struct scheduler *ops, struct sched_unit *unit) { struct csched2_unit * const svc =3D csched2_unit(unit); @@ -2285,7 +2285,7 @@ csched2_unit_wake(const struct scheduler *ops, struct= sched_unit *unit) return; } =20 -static void +static void cf_check csched2_unit_yield(const struct scheduler *ops, struct sched_unit *unit) { struct csched2_unit * const svc =3D csched2_unit(unit); @@ -2293,7 +2293,7 @@ csched2_unit_yield(const struct scheduler *ops, struc= t sched_unit *unit) __set_bit(__CSFLAG_unit_yield, &svc->flags); } =20 -static void +static void cf_check csched2_context_saved(const struct scheduler *ops, struct sched_unit *unit) { struct csched2_unit * const svc =3D csched2_unit(unit); @@ -2335,7 +2335,7 @@ csched2_context_saved(const struct scheduler *ops, st= ruct sched_unit *unit) } =20 #define MAX_LOAD (STIME_MAX) -static struct sched_resource * +static struct sched_resource *cf_check csched2_res_pick(const struct scheduler *ops, const struct sched_unit *uni= t) { struct csched2_private *prv =3D csched2_priv(ops); @@ -2867,8 +2867,7 @@ static void balance_load(const struct scheduler *ops,= int cpu, s_time_t now) return; } =20 -static void -csched2_unit_migrate( +static void cf_check csched2_unit_migrate( const struct scheduler *ops, struct sched_unit *unit, unsigned int new= _cpu) { struct csched2_unit * const svc =3D csched2_unit(unit); @@ -2894,7 +2893,7 @@ csched2_unit_migrate( sched_set_res(unit, get_sched_res(new_cpu)); } =20 -static int +static int cf_check csched2_dom_cntl( const struct scheduler *ops, struct domain *d, @@ -3100,7 +3099,7 @@ csched2_dom_cntl( return rc; } =20 -static void +static void cf_check csched2_aff_cntl(const struct scheduler *ops, struct sched_unit *unit, const cpumask_t *hard, const cpumask_t *soft) { @@ -3116,8 +3115,8 @@ csched2_aff_cntl(const struct scheduler *ops, struct = sched_unit *unit, __clear_bit(__CSFLAG_pinned, &svc->flags); } =20 -static int csched2_sys_cntl(const struct scheduler *ops, - struct xen_sysctl_scheduler_op *sc) +static int cf_check csched2_sys_cntl( + const struct scheduler *ops, struct xen_sysctl_scheduler_op *sc) { struct xen_sysctl_credit2_schedule *params =3D &sc->u.sched_credit2; struct csched2_private *prv =3D csched2_priv(ops); @@ -3148,7 +3147,7 @@ static int csched2_sys_cntl(const struct scheduler *o= ps, return 0; } =20 -static void * +static void *cf_check csched2_alloc_domdata(const struct scheduler *ops, struct domain *dom) { struct csched2_private *prv =3D csched2_priv(ops); @@ -3180,7 +3179,7 @@ csched2_alloc_domdata(const struct scheduler *ops, st= ruct domain *dom) return sdom; } =20 -static void +static void cf_check csched2_free_domdata(const struct scheduler *ops, void *data) { struct csched2_dom *sdom =3D data; @@ -3200,7 +3199,7 @@ csched2_free_domdata(const struct scheduler *ops, voi= d *data) } } =20 -static void +static void cf_check csched2_unit_insert(const struct scheduler *ops, struct sched_unit *unit) { const struct csched2_unit *svc =3D unit->priv; @@ -3231,7 +3230,7 @@ csched2_unit_insert(const struct scheduler *ops, stru= ct sched_unit *unit) CSCHED2_UNIT_CHECK(unit); } =20 -static void +static void cf_check csched2_free_udata(const struct scheduler *ops, void *priv) { struct csched2_unit *svc =3D priv; @@ -3239,7 +3238,7 @@ csched2_free_udata(const struct scheduler *ops, void = *priv) xfree(svc); } =20 -static void +static void cf_check csched2_unit_remove(const struct scheduler *ops, struct sched_unit *unit) { struct csched2_unit * const svc =3D csched2_unit(unit); @@ -3558,7 +3557,7 @@ runq_candidate(struct csched2_runqueue_data *rqd, * This function is in the critical path. It is designed to be simple and * fast for the common case. */ -static void csched2_schedule( +static void cf_check csched2_schedule( const struct scheduler *ops, struct sched_unit *currunit, s_time_t now, bool tasklet_work_scheduled) { @@ -3790,7 +3789,7 @@ dump_pcpu(const struct scheduler *ops, int cpu) } } =20 -static void +static void cf_check csched2_dump(const struct scheduler *ops) { struct list_head *iter_sdom; @@ -3898,7 +3897,7 @@ csched2_dump(const struct scheduler *ops) read_unlock_irqrestore(&prv->lock, flags); } =20 -static void * +static void *cf_check csched2_alloc_pdata(const struct scheduler *ops, int cpu) { struct csched2_pcpu *spc; @@ -3988,7 +3987,7 @@ init_pdata(struct csched2_private *prv, struct csched= 2_pcpu *spc, } =20 /* Change the scheduler of cpu to us (Credit2). */ -static spinlock_t * +static spinlock_t *cf_check csched2_switch_sched(struct scheduler *new_ops, unsigned int cpu, void *pdata, void *vdata) { @@ -4026,7 +4025,7 @@ csched2_switch_sched(struct scheduler *new_ops, unsig= ned int cpu, return &rqd->lock; } =20 -static void +static void cf_check csched2_deinit_pdata(const struct scheduler *ops, void *pcpu, int cpu) { unsigned long flags; @@ -4086,7 +4085,7 @@ csched2_deinit_pdata(const struct scheduler *ops, voi= d *pcpu, int cpu) return; } =20 -static void +static void cf_check csched2_free_pdata(const struct scheduler *ops, void *pcpu, int cpu) { struct csched2_private *prv =3D csched2_priv(ops); @@ -4115,7 +4114,7 @@ csched2_free_pdata(const struct scheduler *ops, void = *pcpu, int cpu) xfree(pcpu); } =20 -static int __init +static int __init cf_check csched2_global_init(void) { if ( opt_load_precision_shift < LOADAVG_PRECISION_SHIFT_MIN ) @@ -4142,7 +4141,7 @@ csched2_global_init(void) return 0; } =20 -static int +static int cf_check csched2_init(struct scheduler *ops) { struct csched2_private *prv; @@ -4190,7 +4189,7 @@ csched2_init(struct scheduler *ops) return 0; } =20 -static void +static void cf_check csched2_deinit(struct scheduler *ops) { struct csched2_private *prv; diff --git a/xen/common/sched/null.c b/xen/common/sched/null.c index 82d5d1baab85..65a0a6c5312d 100644 --- a/xen/common/sched/null.c +++ b/xen/common/sched/null.c @@ -130,7 +130,7 @@ static inline bool unit_check_affinity(struct sched_uni= t *unit, return cpumask_test_cpu(cpu, cpumask_scratch_cpu(cpu)); } =20 -static int null_init(struct scheduler *ops) +static int cf_check null_init(struct scheduler *ops) { struct null_private *prv; =20 @@ -152,7 +152,7 @@ static int null_init(struct scheduler *ops) return 0; } =20 -static void null_deinit(struct scheduler *ops) +static void cf_check null_deinit(struct scheduler *ops) { xfree(ops->sched_data); ops->sched_data =3D NULL; @@ -166,7 +166,8 @@ static void init_pdata(struct null_private *prv, struct= null_pcpu *npc, npc->unit =3D NULL; } =20 -static void null_deinit_pdata(const struct scheduler *ops, void *pcpu, int= cpu) +static void cf_check null_deinit_pdata( + const struct scheduler *ops, void *pcpu, int cpu) { struct null_private *prv =3D null_priv(ops); struct null_pcpu *npc =3D pcpu; @@ -177,7 +178,7 @@ static void null_deinit_pdata(const struct scheduler *o= ps, void *pcpu, int cpu) npc->unit =3D NULL; } =20 -static void *null_alloc_pdata(const struct scheduler *ops, int cpu) +static void *cf_check null_alloc_pdata(const struct scheduler *ops, int cp= u) { struct null_pcpu *npc; =20 @@ -188,13 +189,14 @@ static void *null_alloc_pdata(const struct scheduler = *ops, int cpu) return npc; } =20 -static void null_free_pdata(const struct scheduler *ops, void *pcpu, int c= pu) +static void cf_check null_free_pdata( + const struct scheduler *ops, void *pcpu, int cpu) { xfree(pcpu); } =20 -static void *null_alloc_udata(const struct scheduler *ops, - struct sched_unit *unit, void *dd) +static void *cf_check null_alloc_udata( + const struct scheduler *ops, struct sched_unit *unit, void *dd) { struct null_unit *nvc; =20 @@ -210,15 +212,15 @@ static void *null_alloc_udata(const struct scheduler = *ops, return nvc; } =20 -static void null_free_udata(const struct scheduler *ops, void *priv) +static void cf_check null_free_udata(const struct scheduler *ops, void *pr= iv) { struct null_unit *nvc =3D priv; =20 xfree(nvc); } =20 -static void * null_alloc_domdata(const struct scheduler *ops, - struct domain *d) +static void *cf_check null_alloc_domdata( + const struct scheduler *ops, struct domain *d) { struct null_private *prv =3D null_priv(ops); struct null_dom *ndom; @@ -237,7 +239,7 @@ static void * null_alloc_domdata(const struct scheduler= *ops, return ndom; } =20 -static void null_free_domdata(const struct scheduler *ops, void *data) +static void cf_check null_free_domdata(const struct scheduler *ops, void *= data) { struct null_dom *ndom =3D data; struct null_private *prv =3D null_priv(ops); @@ -426,9 +428,8 @@ static bool unit_deassign(struct null_private *prv, con= st struct sched_unit *uni } =20 /* Change the scheduler of cpu to us (null). */ -static spinlock_t *null_switch_sched(struct scheduler *new_ops, - unsigned int cpu, - void *pdata, void *vdata) +static spinlock_t *cf_check null_switch_sched( + struct scheduler *new_ops, unsigned int cpu, void *pdata, void *vdata) { struct sched_resource *sr =3D get_sched_res(cpu); struct null_private *prv =3D null_priv(new_ops); @@ -450,8 +451,8 @@ static spinlock_t *null_switch_sched(struct scheduler *= new_ops, return &sr->_lock; } =20 -static void null_unit_insert(const struct scheduler *ops, - struct sched_unit *unit) +static void cf_check null_unit_insert( + const struct scheduler *ops, struct sched_unit *unit) { struct null_private *prv =3D null_priv(ops); struct null_unit *nvc =3D null_unit(unit); @@ -516,8 +517,8 @@ static void null_unit_insert(const struct scheduler *op= s, SCHED_STAT_CRANK(unit_insert); } =20 -static void null_unit_remove(const struct scheduler *ops, - struct sched_unit *unit) +static void cf_check null_unit_remove( + const struct scheduler *ops, struct sched_unit *unit) { struct null_private *prv =3D null_priv(ops); struct null_unit *nvc =3D null_unit(unit); @@ -556,8 +557,8 @@ static void null_unit_remove(const struct scheduler *op= s, SCHED_STAT_CRANK(unit_remove); } =20 -static void null_unit_wake(const struct scheduler *ops, - struct sched_unit *unit) +static void cf_check null_unit_wake( + const struct scheduler *ops, struct sched_unit *unit) { struct null_private *prv =3D null_priv(ops); struct null_unit *nvc =3D null_unit(unit); @@ -632,8 +633,8 @@ static void null_unit_wake(const struct scheduler *ops, cpumask_raise_softirq(cpumask_scratch_cpu(cpu), SCHEDULE_SOFTIRQ); } =20 -static void null_unit_sleep(const struct scheduler *ops, - struct sched_unit *unit) +static void cf_check null_unit_sleep( + const struct scheduler *ops, struct sched_unit *unit) { struct null_private *prv =3D null_priv(ops); unsigned int cpu =3D sched_unit_master(unit); @@ -667,15 +668,15 @@ static void null_unit_sleep(const struct scheduler *o= ps, SCHED_STAT_CRANK(unit_sleep); } =20 -static struct sched_resource * +static struct sched_resource *cf_check null_res_pick(const struct scheduler *ops, const struct sched_unit *unit) { ASSERT(!is_idle_unit(unit)); return pick_res(null_priv(ops), unit); } =20 -static void null_unit_migrate(const struct scheduler *ops, - struct sched_unit *unit, unsigned int new_cp= u) +static void cf_check null_unit_migrate( + const struct scheduler *ops, struct sched_unit *unit, unsigned int new= _cpu) { struct null_private *prv =3D null_priv(ops); struct null_unit *nvc =3D null_unit(unit); @@ -801,8 +802,9 @@ static inline void null_unit_check(struct sched_unit *u= nit) * - the unit assigned to the pCPU, if there's one and it can run; * - the idle unit, otherwise. */ -static void null_schedule(const struct scheduler *ops, struct sched_unit *= prev, - s_time_t now, bool tasklet_work_scheduled) +static void cf_check null_schedule( + const struct scheduler *ops, struct sched_unit *prev, s_time_t now, + bool tasklet_work_scheduled) { unsigned int bs; const unsigned int cur_cpu =3D smp_processor_id(); @@ -939,7 +941,7 @@ static inline void dump_unit(const struct null_private = *prv, sched_unit_master(nvc->unit) : -1); } =20 -static void null_dump_pcpu(const struct scheduler *ops, int cpu) +static void cf_check null_dump_pcpu(const struct scheduler *ops, int cpu) { struct null_private *prv =3D null_priv(ops); const struct null_pcpu *npc =3D get_sched_res(cpu)->sched_priv; @@ -968,7 +970,7 @@ static void null_dump_pcpu(const struct scheduler *ops,= int cpu) pcpu_schedule_unlock_irqrestore(lock, flags, cpu); } =20 -static void null_dump(const struct scheduler *ops) +static void cf_check null_dump(const struct scheduler *ops) { struct null_private *prv =3D null_priv(ops); struct list_head *iter; diff --git a/xen/common/sched/rt.c b/xen/common/sched/rt.c index 5ea6f01f263c..d6de25531b3c 100644 --- a/xen/common/sched/rt.c +++ b/xen/common/sched/rt.c @@ -269,13 +269,13 @@ unit_on_q(const struct rt_unit *svc) return !list_empty(&svc->q_elem); } =20 -static struct rt_unit * +static struct rt_unit *cf_check q_elem(struct list_head *elem) { return list_entry(elem, struct rt_unit, q_elem); } =20 -static struct rt_unit * +static struct rt_unit *cf_check replq_elem(struct list_head *elem) { return list_entry(elem, struct rt_unit, replq_elem); @@ -348,7 +348,7 @@ rt_dump_unit(const struct scheduler *ops, const struct = rt_unit *svc) svc->flags, CPUMASK_PR(mask)); } =20 -static void +static void cf_check rt_dump_pcpu(const struct scheduler *ops, int cpu) { struct rt_private *prv =3D rt_priv(ops); @@ -366,7 +366,7 @@ rt_dump_pcpu(const struct scheduler *ops, int cpu) spin_unlock_irqrestore(&prv->lock, flags); } =20 -static void +static void cf_check rt_dump(const struct scheduler *ops) { struct list_head *runq, *depletedq, *replq, *iter; @@ -636,7 +636,7 @@ replq_reinsert(const struct scheduler *ops, struct rt_u= nit *svc) * Valid resource of an unit is intesection of unit's affinity * and available resources */ -static struct sched_resource * +static struct sched_resource *cf_check rt_res_pick_locked(const struct sched_unit *unit, unsigned int locked_cpu) { cpumask_t *cpus =3D cpumask_scratch_cpu(locked_cpu); @@ -659,7 +659,7 @@ rt_res_pick_locked(const struct sched_unit *unit, unsig= ned int locked_cpu) * Valid resource of an unit is intesection of unit's affinity * and available resources */ -static struct sched_resource * +static struct sched_resource *cf_check rt_res_pick(const struct scheduler *ops, const struct sched_unit *unit) { struct sched_resource *res; @@ -672,7 +672,7 @@ rt_res_pick(const struct scheduler *ops, const struct s= ched_unit *unit) /* * Init/Free related code */ -static int +static int cf_check rt_init(struct scheduler *ops) { int rc =3D -ENOMEM; @@ -701,7 +701,7 @@ rt_init(struct scheduler *ops) return rc; } =20 -static void +static void cf_check rt_deinit(struct scheduler *ops) { struct rt_private *prv =3D rt_priv(ops); @@ -714,7 +714,7 @@ rt_deinit(struct scheduler *ops) } =20 /* Change the scheduler of cpu to us (RTDS). */ -static spinlock_t * +static spinlock_t *cf_check rt_switch_sched(struct scheduler *new_ops, unsigned int cpu, void *pdata, void *vdata) { @@ -750,7 +750,7 @@ rt_switch_sched(struct scheduler *new_ops, unsigned int= cpu, return &prv->lock; } =20 -static void +static void cf_check rt_deinit_pdata(const struct scheduler *ops, void *pcpu, int cpu) { unsigned long flags; @@ -782,7 +782,7 @@ rt_deinit_pdata(const struct scheduler *ops, void *pcpu= , int cpu) spin_unlock_irqrestore(&prv->lock, flags); } =20 -static void * +static void *cf_check rt_alloc_domdata(const struct scheduler *ops, struct domain *dom) { unsigned long flags; @@ -804,7 +804,7 @@ rt_alloc_domdata(const struct scheduler *ops, struct do= main *dom) return sdom; } =20 -static void +static void cf_check rt_free_domdata(const struct scheduler *ops, void *data) { struct rt_dom *sdom =3D data; @@ -822,7 +822,7 @@ rt_free_domdata(const struct scheduler *ops, void *data) } } =20 -static void * +static void * cf_check rt_alloc_udata(const struct scheduler *ops, struct sched_unit *unit, void = *dd) { struct rt_unit *svc; @@ -850,7 +850,7 @@ rt_alloc_udata(const struct scheduler *ops, struct sche= d_unit *unit, void *dd) return svc; } =20 -static void +static void cf_check rt_free_udata(const struct scheduler *ops, void *priv) { struct rt_unit *svc =3D priv; @@ -865,7 +865,7 @@ rt_free_udata(const struct scheduler *ops, void *priv) * It inserts units of moving domain to the scheduler's RunQ in * dest. cpupool. */ -static void +static void cf_check rt_unit_insert(const struct scheduler *ops, struct sched_unit *unit) { struct rt_unit *svc =3D rt_unit(unit); @@ -901,7 +901,7 @@ rt_unit_insert(const struct scheduler *ops, struct sche= d_unit *unit) /* * Remove rt_unit svc from the old scheduler in source cpupool. */ -static void +static void cf_check rt_unit_remove(const struct scheduler *ops, struct sched_unit *unit) { struct rt_unit * const svc =3D rt_unit(unit); @@ -1042,7 +1042,7 @@ runq_pick(const struct scheduler *ops, const cpumask_= t *mask, unsigned int cpu) * schedule function for rt scheduler. * The lock is already grabbed in schedule.c, no need to lock here */ -static void +static void cf_check rt_schedule(const struct scheduler *ops, struct sched_unit *currunit, s_time_t now, bool tasklet_work_scheduled) { @@ -1129,7 +1129,7 @@ rt_schedule(const struct scheduler *ops, struct sched= _unit *currunit, * Remove UNIT from RunQ * The lock is already grabbed in schedule.c, no need to lock here */ -static void +static void cf_check rt_unit_sleep(const struct scheduler *ops, struct sched_unit *unit) { struct rt_unit * const svc =3D rt_unit(unit); @@ -1244,7 +1244,7 @@ runq_tickle(const struct scheduler *ops, const struct= rt_unit *new) * The lock is already grabbed in schedule.c, no need to lock here * TODO: what if these two units belongs to the same domain? */ -static void +static void cf_check rt_unit_wake(const struct scheduler *ops, struct sched_unit *unit) { struct rt_unit * const svc =3D rt_unit(unit); @@ -1314,7 +1314,7 @@ rt_unit_wake(const struct scheduler *ops, struct sche= d_unit *unit) * scurr has finished context switch, insert it back to the RunQ, * and then pick the highest priority unit from runq to run */ -static void +static void cf_check rt_context_saved(const struct scheduler *ops, struct sched_unit *unit) { struct rt_unit *svc =3D rt_unit(unit); @@ -1341,7 +1341,7 @@ rt_context_saved(const struct scheduler *ops, struct = sched_unit *unit) /* * set/get each unit info of each domain */ -static int +static int cf_check rt_dom_cntl( const struct scheduler *ops, struct domain *d, --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932070; cv=none; d=zohomail.com; s=zohoarc; b=REMsWJKkar/xt5jOQgagjdLkbWzsnQ+gkbziaPi7TD7kD3vBomY0Mp/PmMvZu8ojR3srxKSQ6e37POKXmpu+HUXGV48zs9Y72cdbscKxgmS4Eo3Q5+9xtTIG7vocvZi2rkD9Ls0fNLNmzyWoAat7WABFqor2EdEq8FTlZPJwypk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932070; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9vFP833NaIqInxxW5OS+hokEwVzocqejMRA/mGhHTLs=; b=lnu7ZtC5Y4iUC8aFwFXvmdUbzV5AF0ztNsqTZiVlpOrYAjlLmjOzVBeFXBLI3S9mkU4bgo5KyGOw/VwWnuPVgXvRXGyF+4xgBBr/W2aLi4y49kE5c0S/WrV7C3N9wQKvel4FkBs2I/R/8YccxkxqIPRENF9/oHi5FpdSn/3y/DY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932070963547.5127007184332; Fri, 26 Nov 2021 05:07:50 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232830.403936 (Exim 4.92) (envelope-from ) id 1mqawt-0002B4-DH; Fri, 26 Nov 2021 13:07:31 +0000 Received: by outflank-mailman (output) from mailman id 232830.403936; Fri, 26 Nov 2021 13:07:31 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawt-00029P-3a; Fri, 26 Nov 2021 13:07:31 +0000 Received: by outflank-mailman (input) for mailman id 232830; Fri, 26 Nov 2021 13:07:28 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavC-0003W9-8c for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:46 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 8feca44d-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:44 +0100 (CET) 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: 8feca44d-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931944; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=C0fvCAztg5DLCbQmwvTpZ/liPDfc2zf7QofwX/rYxoo=; b=bjn59gQxhJe8w4b+m4YTxSafCP7WAd4gOy3PsT/hXn9UUtyCcw7YIiGE 2VGu3g+jajlIngtnfsVAjjY021P+g+e+aVRmAAdGIT3VNVII3qQjKayoS WpZr0uxQiT5C1Bxdx9ipHG3yzkPVSrN8MW7Rq5wo8ZXaVqX+Klz6aLjm0 Q=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: V0Oea6tppHveq4nfNZk7eroUZtBeGaTarmOZyoexrR76Bav50ggoXIfYVJumk9K/qs3x0d3+Zn bIk5q/V+btfaFNnBV7cmdY4cswEVEajmn0d7tpgzhVYVVra1bUa6cQzG5Bppfo4QpW69KA6Pn2 lkW2g9oh3tFFOZMH12w81qCrsjdoun8b0V2KEwzdWpnQUlunKiQXbvRbg4QChL2yWCSgS0NMl0 A4lz2wyKND4r0tNxcTZsixLebwA3Y6ZZ2VceFEMkizf+SNEKFgAHDsqBrz7QZXQH55buRW4Pu5 FnGwQvpaWumc8fpT4U1PPtb6 X-SBRS: 5.1 X-MesageID: 60695296 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:DNub8qwT/vDpn5CjxYJ6t+fCwSrEfRIJ4+MujC+fZmUNrF6WrkVSz TFMWDvXPvbYYTagKNt1YNzl9B9QvJPUyN5mSAVv/CAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAuLeNYYH1500s6wrRn2tQAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt4Bg4 9tdkqWBcCEKZIzSs/4aehZfDggraMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVoru0lINPmI8U0vXZ4wCuCJf0nXYrCU+PB4towMDIY2JgQTKuEN pRxhTxHVFPPSixDOAkuAtEQu+Git2LPYhBDpwfAzUYwyzeKl1EguFT3C/LKfvSaSMMTmVyXz krE4mD4DxcyJNGZjz2f/RqEnfTTlCn2XIYTEryQ9fNwhlCXgGsJB3U+RVa95PW0lEO6c9ZeM FAPvDojq7Ao806mRcW7WAe3yFamlBMBX9tbE8Uh9RqAjKHT5m6k6nMsF2AbLoZ87YlvGGJsh gThc87V6SJH4Ky+R2K6z4atixDoGDY+N2graigZZF5QizX8m70bghXKR9dlNae6iNzpBD39q wy3QDgCa6Y71pBSifjilbzTq3f1/8WSEFZpjunCdjv9tlsRWWKzW2C/BbE3B95kJZ3RcFSOt WNsdyO2vLFXVsHleMBgrYww8FCVCxStbGK0bb1HRcBJG9GRF5iLJts4DNZWfhoBDyr8UWW1C HI/QCsIjHOpAFOkbLVsf6W6ANkwwK7rGLzND66PMYoQP8cgKFHbp0mCgHJ8OUi2yyDAdollZ P+mnTuEVy5GWcyLMhLqLwvi7VPb7n9nnj6CLXwK5x+mzaCfdBaopUQtazOzghQCxPrc+m39q o8HX+PTkkk3eLCuM0H/rN9IRXhXfCdTOHwDg5EOHgJ1ClE9Qz9J5j646e5JRrGJaIwJzLqVp S/kBRcDoLc97FWeQTi3hrlYQOuHdf5CQbgTZ0TA5H6khCouZ5iB9qAae8dldLUr7rU7n/V1U +MEa4OLBfEWEmbL/DEUbJ/cqo1+dUv02VLSbnT9ODVvLYR9QwHp+8P/ele9/ic5ESfq59A1p Ket112HTMNbFRhiFsvfdNmm00i14SoGgOt3UkaReotTdUzg/ZJEMSv0ivNrccgAJQ+anmmR1 hqMAAderu7I+tdn/N7MjKGCjoGoD+ohQRYKQziFte67bHCI8HCizIlMVPezUQrcDG6kqr+/Y eh1zu3nNKFVllh9rIchQa1gyrgz5oWzquYCnBhkBnjCc3+iFqhkfiudxcBKu6BAmu1ZtA+xV h7d89VWI+zUasbsEVpXLws5dOWTk/oTn2CKv/gyJUz74g5x/aaGDhoOb0Xd1nQFIesnKp4hz McgpNUSul62hRcdO9qbijxZqjaXJXsaXqR77pwXDecHUObwJo2utXAENhLL3Q== IronPort-HdrOrdr: A9a23:8e4WbqwjbRshkAfMsrBPKrPwFL1zdoMgy1knxilNoRw8SKKlfq eV7Y0mPH7P+VAssR4b+exoVJPtfZqYz+8R3WBzB8bEYOCFghrKEGgK1+KLqFeMJ8S9zJ846U 4JSdkHNDSaNzlHZKjBjzVQa+xQouW6zA== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="60695296" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 17/65] xen/evtchn: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:33:58 +0000 Message-ID: <20211126123446.32324-18-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932072184100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/common/event_2l.c | 21 ++++++++++++--------- xen/common/event_channel.c | 3 ++- xen/common/event_fifo.c | 30 ++++++++++++++++-------------- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/xen/common/event_2l.c b/xen/common/event_2l.c index 7424320e525a..d40dd51ab555 100644 --- a/xen/common/event_2l.c +++ b/xen/common/event_2l.c @@ -16,7 +16,8 @@ =20 #include =20 -static void evtchn_2l_set_pending(struct vcpu *v, struct evtchn *evtchn) +static void cf_check evtchn_2l_set_pending( + struct vcpu *v, struct evtchn *evtchn) { struct domain *d =3D v->domain; unsigned int port =3D evtchn->port; @@ -41,12 +42,14 @@ static void evtchn_2l_set_pending(struct vcpu *v, struc= t evtchn *evtchn) evtchn_check_pollers(d, port); } =20 -static void evtchn_2l_clear_pending(struct domain *d, struct evtchn *evtch= n) +static void cf_check evtchn_2l_clear_pending( + struct domain *d, struct evtchn *evtchn) { guest_clear_bit(d, evtchn->port, &shared_info(d, evtchn_pending)); } =20 -static void evtchn_2l_unmask(struct domain *d, struct evtchn *evtchn) +static void cf_check evtchn_2l_unmask( + struct domain *d, struct evtchn *evtchn) { struct vcpu *v =3D d->vcpu[evtchn->notify_vcpu_id]; unsigned int port =3D evtchn->port; @@ -64,8 +67,8 @@ static void evtchn_2l_unmask(struct domain *d, struct evt= chn *evtchn) } } =20 -static bool evtchn_2l_is_pending(const struct domain *d, - const struct evtchn *evtchn) +static bool cf_check evtchn_2l_is_pending( + const struct domain *d, const struct evtchn *evtchn) { evtchn_port_t port =3D evtchn->port; unsigned int max_ports =3D BITS_PER_EVTCHN_WORD(d) * BITS_PER_EVTCHN_W= ORD(d); @@ -75,8 +78,8 @@ static bool evtchn_2l_is_pending(const struct domain *d, guest_test_bit(d, port, &shared_info(d, evtchn_pending))); } =20 -static bool evtchn_2l_is_masked(const struct domain *d, - const struct evtchn *evtchn) +static bool cf_check evtchn_2l_is_masked( + const struct domain *d, const struct evtchn *evtchn) { evtchn_port_t port =3D evtchn->port; unsigned int max_ports =3D BITS_PER_EVTCHN_WORD(d) * BITS_PER_EVTCHN_W= ORD(d); @@ -86,8 +89,8 @@ static bool evtchn_2l_is_masked(const struct domain *d, guest_test_bit(d, port, &shared_info(d, evtchn_mask))); } =20 -static void evtchn_2l_print_state(struct domain *d, - const struct evtchn *evtchn) +static void cf_check evtchn_2l_print_state( + struct domain *d, const struct evtchn *evtchn) { struct vcpu *v =3D d->vcpu[evtchn->notify_vcpu_id]; =20 diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index 67ac4dd15dcf..e26904e7508f 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -99,7 +99,8 @@ static xen_event_channel_notification_t __read_mostly xen_consumers[NR_XEN_CONSUMERS]; =20 /* Default notification action: wake up from wait_on_xen_event_channel(). = */ -static void default_xen_notification_fn(struct vcpu *v, unsigned int port) +static void cf_check default_xen_notification_fn( + struct vcpu *v, unsigned int port) { /* Consumer needs notification only if blocked. */ if ( test_and_clear_bit(_VPF_blocked_in_xen, &v->pause_flags) ) diff --git a/xen/common/event_fifo.c b/xen/common/event_fifo.c index 2fb01b82db84..ed4d3beb10f3 100644 --- a/xen/common/event_fifo.c +++ b/xen/common/event_fifo.c @@ -78,7 +78,7 @@ static inline event_word_t *evtchn_fifo_word_from_port(co= nst struct domain *d, return d->evtchn_fifo->event_array[p] + w; } =20 -static void evtchn_fifo_init(struct domain *d, struct evtchn *evtchn) +static void cf_check evtchn_fifo_init(struct domain *d, struct evtchn *evt= chn) { event_word_t *word; =20 @@ -158,7 +158,8 @@ static bool_t evtchn_fifo_set_link(struct domain *d, ev= ent_word_t *word, return 1; } =20 -static void evtchn_fifo_set_pending(struct vcpu *v, struct evtchn *evtchn) +static void cf_check evtchn_fifo_set_pending( + struct vcpu *v, struct evtchn *evtchn) { struct domain *d =3D v->domain; unsigned int port; @@ -317,7 +318,8 @@ static void evtchn_fifo_set_pending(struct vcpu *v, str= uct evtchn *evtchn) evtchn_check_pollers(d, port); } =20 -static void evtchn_fifo_clear_pending(struct domain *d, struct evtchn *evt= chn) +static void cf_check evtchn_fifo_clear_pending( + struct domain *d, struct evtchn *evtchn) { event_word_t *word; =20 @@ -334,7 +336,7 @@ static void evtchn_fifo_clear_pending(struct domain *d,= struct evtchn *evtchn) guest_clear_bit(d, EVTCHN_FIFO_PENDING, word); } =20 -static void evtchn_fifo_unmask(struct domain *d, struct evtchn *evtchn) +static void cf_check evtchn_fifo_unmask(struct domain *d, struct evtchn *e= vtchn) { struct vcpu *v =3D d->vcpu[evtchn->notify_vcpu_id]; event_word_t *word; @@ -350,32 +352,32 @@ static void evtchn_fifo_unmask(struct domain *d, stru= ct evtchn *evtchn) evtchn_fifo_set_pending(v, evtchn); } =20 -static bool evtchn_fifo_is_pending(const struct domain *d, - const struct evtchn *evtchn) +static bool cf_check evtchn_fifo_is_pending( + const struct domain *d, const struct evtchn *evtchn) { const event_word_t *word =3D evtchn_fifo_word_from_port(d, evtchn->por= t); =20 return word && guest_test_bit(d, EVTCHN_FIFO_PENDING, word); } =20 -static bool_t evtchn_fifo_is_masked(const struct domain *d, - const struct evtchn *evtchn) +static bool cf_check evtchn_fifo_is_masked( + const struct domain *d, const struct evtchn *evtchn) { const event_word_t *word =3D evtchn_fifo_word_from_port(d, evtchn->por= t); =20 return !word || guest_test_bit(d, EVTCHN_FIFO_MASKED, word); } =20 -static bool_t evtchn_fifo_is_busy(const struct domain *d, - const struct evtchn *evtchn) +static bool cf_check evtchn_fifo_is_busy( + const struct domain *d, const struct evtchn *evtchn) { const event_word_t *word =3D evtchn_fifo_word_from_port(d, evtchn->por= t); =20 return word && guest_test_bit(d, EVTCHN_FIFO_LINKED, word); } =20 -static int evtchn_fifo_set_priority(struct domain *d, struct evtchn *evtch= n, - unsigned int priority) +static int cf_check evtchn_fifo_set_priority( + struct domain *d, struct evtchn *evtchn, unsigned int priority) { if ( priority > EVTCHN_FIFO_PRIORITY_MIN ) return -EINVAL; @@ -390,8 +392,8 @@ static int evtchn_fifo_set_priority(struct domain *d, s= truct evtchn *evtchn, return 0; } =20 -static void evtchn_fifo_print_state(struct domain *d, - const struct evtchn *evtchn) +static void cf_check evtchn_fifo_print_state( + struct domain *d, const struct evtchn *evtchn) { event_word_t *word; =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932097; cv=none; d=zohomail.com; s=zohoarc; b=aLj2JldXUNa38QQtWKZIA1VaELDOPyTELrFrwpydiYBBl9Zduc3G08N6zsPFkAGMM2UWDM899grpIw30mp6lT8gVwUBwIYaIETNUb/P4f9abyqMfL3tholM4Lx6foMzK1p3HaQC6M7le9uUICRJh2vcBNg5kT8DG+wWAflN656I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932097; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=S7J0HoUYgWRSuHEQUWv1UItRvgU9eswYC8qWSLYfYRk=; b=TgFWabfnP8I1V9LZCH2GHZs9r3x6wXiFDM5k13iX9GdD2YLXsxqpWPefwkGTBWRNtPiGSHJa4Nwo5PJZeGcackDC/GNfT7n4pZZfg7IkF2F0g4TtMnChgomqHSNU0ez6uvxQOZhPIYqxM9EFSJ/UOthu4pSjrw/+/Zjy9nIhWcY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932097049891.6184187477726; Fri, 26 Nov 2021 05:08:17 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232860.404038 (Exim 4.92) (envelope-from ) id 1mqaxF-0007QY-V0; Fri, 26 Nov 2021 13:07:53 +0000 Received: by outflank-mailman (output) from mailman id 232860.404038; Fri, 26 Nov 2021 13:07:53 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxF-0007Mz-5K; Fri, 26 Nov 2021 13:07:53 +0000 Received: by outflank-mailman (input) for mailman id 232860; Fri, 26 Nov 2021 13:07:51 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavZ-0003W9-5Y for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:09 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9e6fb575-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:07 +0100 (CET) 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: 9e6fb575-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931967; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jYHmGb285zp19wAOZwPVRqBng1R2DTOnh2y5+lEruAo=; b=eFWIdKg08En0EXpWFrQKbybFrQHq1XyI131FyMmdtcK5G4gmQn2ciBDO q5zDZMmAGmIOCH6EBBweOYkDEyLll1GcA2sZE3UqFqfiGncngewmEGbzv ZqXPv5E/zwxyPU/QtsCdmOyl9DXE1k+SdjtFjRgm0lWC+rETSNZe1IIUd s=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: U4Ug72oaXHFOpynjTFMgYcJ7VtoRUHaNSFIGy/weFoqd02iDgsJNloaZRxwiZT3fqp2M6dOr4a TpiitZgWTnpNPbjc4e7TtV6fyHaEKY1DydubLT+R/TtETX6sXZP+LcoF2iy3pN/WKEY3zJHVTr p+q0YhRUiQMn6rlg4sFu8+OUEYdZYwX8RImJ83Pzr96RMSa19s0P9081yE4KsrIgV64e2W2gL1 bW8v+nCjyGsOaXYJugzxS8hYlmzowQJCsL5ao7hh0zPRqYHuuM02yRQBu484Ax3meL42UjD1W6 BbK2pOEndhtqpG1TLdWq0tnC X-SBRS: 5.1 X-MesageID: 58696039 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:10XO0K1deY95f0Kp7PbD5Vd2kn2cJEfYwER7XKvMYLTBsI5bpzQOn GdOWTqEbvjZajajetEiao2y9xgEvJHVyt83TQU9pC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCan8ZqTNMEn970Es6wbBh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhltBMl vNAn5KLbkQAE47BgLkbfylUOnQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1Er8IvNsT0eqgYvWlt12rxBvc6W5HTBa7N4Le02R9t1p4fQ66FN qL1bxJAZwrGPwB2a20VEbQngeKspiTfYhFH/Qf9Sa0fvDGIkV0ZPKLWGNjIft2HQ+1Fk0Deo XjJl0zbKBwHMN2UyRKe72mhwOTImEvTWo0IE6aj3uV3m1DVzWsWYDUGWF3+rfSnh0qWX9NEN 1dS6icotbI19kGgUp/6RRLQiGWfohcWVt5UEus7wAKA0KzZ50CeHGdsZiFFQMwrsokxXzNC6 7OSt4q3X3o16uTTEC/DsOfPxd+vBcQLBWYCWHEiQCEL2P6giawQgwqSSPpTHIfg27UZBgrM6 zyNqSE/gZAagsgKy7i38Dj7vt68mnTaZlVrv1uKBwpJ+is8Pdf4PNLwtTA3+N4ZdN7BJmRtq kTojCR3AAomKZiW3BKAT+wWdF1Cz6bUaWaM6bKD8nRIythMx5JBVdwPiN2dDB0wWirhRdMPS BSI0e+2zMUOVEZGlYctP+qM5z0ClMAM7+jNWPHOdcZpaZNsbgKB9ywGTRfOhD+9zhVzwP1hZ czznSOQ4ZAyUv8PIN2eHbp17FPW7npmmTO7qW7Tk3xLLoZylFbKEOxYYTNin8gy7b+eoRW9z jqsH5Di9vmra8WnOnO/2ddKdTgidCFnbbir+50/XrPSeWJORTB+Y8I9NJt8IuSJaYwOzbyWl px8M2cFoGfCaYrvdV/XNys9Mey3Bv6SbxsTZEQRALph4FB7Ca7H0UvVX8JfkWAP+LMxwPhqY eMCfsncUP1DRi6eo2YWbIXnrZwkfxOu3FrcMy2gaTk5XphhWw2WpYO0IlqxrHEDXnitqM8zg 7y8zQeHE5ANcBtvUZTNY/W1wlLv4XVEwLBuX1HFK8V4cVn39NQ4MDT4i/I6epleKRjKyjaA+ RyRBBMU+bvEr4MvqYGbjqGYtYa5VeB5GxMCTWXc6L+3Mwjc/3aintAcALrZI2iFWTqtqqu4Z OhTw/XtC9E9nQ5H49hmDrJm7aMi/N+z9bVU+RtpQSfQZFOxB7I+fnTfhZtTtrdAz6NysBetX h7d4cFTPLiENZ+3EFMVIwZ5PO2P2etNx2vX5PUxZk77+DV27PyMVkALZ0uAjylULb1UNoI5w Lh+5J5KulLn0hd6YMybii109niXKi1SWqoqgZgWHYv3h1d50VpFe5HdVnf77Zznhw+g6aX2z ut4XJb/uok= IronPort-HdrOrdr: A9a23:edKFH6BSnCfsZlPlHemU55DYdb4zR+YMi2TC1yhKJyC9Ffbo7v xG/c5rsyMc5wxwZJhNo7y90ey7MBbhHP1OkO4s1NWZLWrbUQKTRekIh+bfKn/baknDH4ZmpN 9dmsNFaeEYY2IUsS+D2njbL+od X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58696039" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Juergen Gross Subject: [PATCH 18/65] xen/hypfs: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:33:59 +0000 Message-ID: <20211126123446.32324-19-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932099215100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich Acked-by: Juergen Gross --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 CC: Juergen Gross --- xen/common/hypfs.c | 57 +++++++++++++++++++++++-------------------= ---- xen/common/sched/cpupool.c | 25 ++++++++++---------- xen/include/xen/hypfs.h | 49 +++++++++++++++++++-------------------- 3 files changed, 65 insertions(+), 66 deletions(-) diff --git a/xen/common/hypfs.c b/xen/common/hypfs.c index 1526bcc52810..0d22396f5dd7 100644 --- a/xen/common/hypfs.c +++ b/xen/common/hypfs.c @@ -113,12 +113,13 @@ static void hypfs_unlock(void) } } =20 -const struct hypfs_entry *hypfs_node_enter(const struct hypfs_entry *entry) +const struct hypfs_entry *cf_check hypfs_node_enter( + const struct hypfs_entry *entry) { return entry; } =20 -void hypfs_node_exit(const struct hypfs_entry *entry) +void cf_check hypfs_node_exit(const struct hypfs_entry *entry) { } =20 @@ -289,16 +290,14 @@ static int hypfs_get_path_user(char *buf, return 0; } =20 -struct hypfs_entry *hypfs_leaf_findentry(const struct hypfs_entry_dir *dir, - const char *name, - unsigned int name_len) +struct hypfs_entry *cf_check hypfs_leaf_findentry( + const struct hypfs_entry_dir *dir, const char *name, unsigned int name= _len) { return ERR_PTR(-ENOTDIR); } =20 -struct hypfs_entry *hypfs_dir_findentry(const struct hypfs_entry_dir *dir, - const char *name, - unsigned int name_len) +struct hypfs_entry *cf_check hypfs_dir_findentry( + const struct hypfs_entry_dir *dir, const char *name, unsigned int name= _len) { struct hypfs_entry *entry; =20 @@ -360,7 +359,7 @@ static struct hypfs_entry *hypfs_get_entry(const char *= path) return hypfs_get_entry_rel(&hypfs_root, path + 1); } =20 -unsigned int hypfs_getsize(const struct hypfs_entry *entry) +unsigned int cf_check hypfs_getsize(const struct hypfs_entry *entry) { return entry->size; } @@ -396,7 +395,7 @@ int hypfs_read_dyndir_id_entry(const struct hypfs_entry= _dir *template, return 0; } =20 -static const struct hypfs_entry *hypfs_dyndir_enter( +static const struct hypfs_entry *cf_check hypfs_dyndir_enter( const struct hypfs_entry *entry) { const struct hypfs_dyndir_id *data; @@ -407,7 +406,7 @@ static const struct hypfs_entry *hypfs_dyndir_enter( return data->template->e.funcs->enter(&data->template->e); } =20 -static struct hypfs_entry *hypfs_dyndir_findentry( +static struct hypfs_entry *cf_check hypfs_dyndir_findentry( const struct hypfs_entry_dir *dir, const char *name, unsigned int name= _len) { const struct hypfs_dyndir_id *data; @@ -418,8 +417,8 @@ static struct hypfs_entry *hypfs_dyndir_findentry( return data->template->e.funcs->findentry(data->template, name, name_l= en); } =20 -static int hypfs_read_dyndir(const struct hypfs_entry *entry, - XEN_GUEST_HANDLE_PARAM(void) uaddr) +static int cf_check hypfs_read_dyndir( + const struct hypfs_entry *entry, XEN_GUEST_HANDLE_PARAM(void) uaddr) { const struct hypfs_dyndir_id *data; =20 @@ -463,8 +462,8 @@ unsigned int hypfs_dynid_entry_size(const struct hypfs_= entry *template, return DIRENTRY_SIZE(snprintf(NULL, 0, template->name, id)); } =20 -int hypfs_read_dir(const struct hypfs_entry *entry, - XEN_GUEST_HANDLE_PARAM(void) uaddr) +int cf_check hypfs_read_dir(const struct hypfs_entry *entry, + XEN_GUEST_HANDLE_PARAM(void) uaddr) { const struct hypfs_entry_dir *d; const struct hypfs_entry *e; @@ -510,8 +509,8 @@ int hypfs_read_dir(const struct hypfs_entry *entry, return 0; } =20 -int hypfs_read_leaf(const struct hypfs_entry *entry, - XEN_GUEST_HANDLE_PARAM(void) uaddr) +int cf_check hypfs_read_leaf( + const struct hypfs_entry *entry, XEN_GUEST_HANDLE_PARAM(void) uaddr) { const struct hypfs_entry_leaf *l; unsigned int size =3D entry->funcs->getsize(entry); @@ -555,9 +554,9 @@ static int hypfs_read(const struct hypfs_entry *entry, return ret; } =20 -int hypfs_write_leaf(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen) +int cf_check hypfs_write_leaf( + struct hypfs_entry_leaf *leaf, XEN_GUEST_HANDLE_PARAM(const_void) uadd= r, + unsigned int ulen) { char *buf; int ret; @@ -596,9 +595,9 @@ int hypfs_write_leaf(struct hypfs_entry_leaf *leaf, return ret; } =20 -int hypfs_write_bool(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen) +int cf_check hypfs_write_bool( + struct hypfs_entry_leaf *leaf, XEN_GUEST_HANDLE_PARAM(const_void) uadd= r, + unsigned int ulen) { bool buf; =20 @@ -618,9 +617,9 @@ int hypfs_write_bool(struct hypfs_entry_leaf *leaf, return 0; } =20 -int hypfs_write_custom(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen) +int cf_check hypfs_write_custom( + struct hypfs_entry_leaf *leaf, XEN_GUEST_HANDLE_PARAM(const_void) uadd= r, + unsigned int ulen) { struct param_hypfs *p; char *buf; @@ -653,9 +652,9 @@ int hypfs_write_custom(struct hypfs_entry_leaf *leaf, return ret; } =20 -int hypfs_write_deny(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen) +int cf_check hypfs_write_deny( + struct hypfs_entry_leaf *leaf, XEN_GUEST_HANDLE_PARAM(const_void) uadd= r, + unsigned int ulen) { return -EACCES; } diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c index b9d4babd0d8a..07f984a659cd 100644 --- a/xen/common/sched/cpupool.c +++ b/xen/common/sched/cpupool.c @@ -1026,8 +1026,8 @@ static struct notifier_block cpu_nfb =3D { =20 static HYPFS_DIR_INIT(cpupool_pooldir, "%u"); =20 -static int cpupool_dir_read(const struct hypfs_entry *entry, - XEN_GUEST_HANDLE_PARAM(void) uaddr) +static int cf_check cpupool_dir_read( + const struct hypfs_entry *entry, XEN_GUEST_HANDLE_PARAM(void) uaddr) { int ret =3D 0; struct cpupool *c; @@ -1050,7 +1050,8 @@ static int cpupool_dir_read(const struct hypfs_entry = *entry, return ret; } =20 -static unsigned int cpupool_dir_getsize(const struct hypfs_entry *entry) +static unsigned int cf_check cpupool_dir_getsize( + const struct hypfs_entry *entry) { const struct cpupool *c; unsigned int size =3D 0; @@ -1061,7 +1062,7 @@ static unsigned int cpupool_dir_getsize(const struct = hypfs_entry *entry) return size; } =20 -static const struct hypfs_entry *cpupool_dir_enter( +static const struct hypfs_entry *cf_check cpupool_dir_enter( const struct hypfs_entry *entry) { struct hypfs_dyndir_id *data; @@ -1076,14 +1077,14 @@ static const struct hypfs_entry *cpupool_dir_enter( return entry; } =20 -static void cpupool_dir_exit(const struct hypfs_entry *entry) +static void cf_check cpupool_dir_exit(const struct hypfs_entry *entry) { spin_unlock(&cpupool_lock); =20 hypfs_free_dyndata(); } =20 -static struct hypfs_entry *cpupool_dir_findentry( +static struct hypfs_entry *cf_check cpupool_dir_findentry( const struct hypfs_entry_dir *dir, const char *name, unsigned int name= _len) { unsigned long id; @@ -1102,8 +1103,8 @@ static struct hypfs_entry *cpupool_dir_findentry( return hypfs_gen_dyndir_id_entry(&cpupool_pooldir, id, cpupool); } =20 -static int cpupool_gran_read(const struct hypfs_entry *entry, - XEN_GUEST_HANDLE_PARAM(void) uaddr) +static int cf_check cpupool_gran_read( + const struct hypfs_entry *entry, XEN_GUEST_HANDLE_PARAM(void) uaddr) { const struct hypfs_dyndir_id *data; const struct cpupool *cpupool; @@ -1121,7 +1122,7 @@ static int cpupool_gran_read(const struct hypfs_entry= *entry, return copy_to_guest(uaddr, gran, strlen(gran) + 1) ? -EFAULT : 0; } =20 -static unsigned int hypfs_gran_getsize(const struct hypfs_entry *entry) +static unsigned int cf_check hypfs_gran_getsize(const struct hypfs_entry *= entry) { const struct hypfs_dyndir_id *data; const struct cpupool *cpupool; @@ -1136,9 +1137,9 @@ static unsigned int hypfs_gran_getsize(const struct h= ypfs_entry *entry) return strlen(gran) + 1; } =20 -static int cpupool_gran_write(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen) +static int cf_check cpupool_gran_write( + struct hypfs_entry_leaf *leaf, XEN_GUEST_HANDLE_PARAM(const_void) uadd= r, + unsigned int ulen) { const struct hypfs_dyndir_id *data; struct cpupool *cpupool; diff --git a/xen/include/xen/hypfs.h b/xen/include/xen/hypfs.h index e9d4c2555bd7..1b65a9188c6c 100644 --- a/xen/include/xen/hypfs.h +++ b/xen/include/xen/hypfs.h @@ -168,31 +168,30 @@ void hypfs_add_dyndir(struct hypfs_entry_dir *parent, struct hypfs_entry_dir *template); int hypfs_add_leaf(struct hypfs_entry_dir *parent, struct hypfs_entry_leaf *leaf, bool nofault); -const struct hypfs_entry *hypfs_node_enter(const struct hypfs_entry *entry= ); -void hypfs_node_exit(const struct hypfs_entry *entry); -int hypfs_read_dir(const struct hypfs_entry *entry, - XEN_GUEST_HANDLE_PARAM(void) uaddr); -int hypfs_read_leaf(const struct hypfs_entry *entry, - XEN_GUEST_HANDLE_PARAM(void) uaddr); -int hypfs_write_deny(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen); -int hypfs_write_leaf(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen); -int hypfs_write_bool(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen); -int hypfs_write_custom(struct hypfs_entry_leaf *leaf, - XEN_GUEST_HANDLE_PARAM(const_void) uaddr, - unsigned int ulen); -unsigned int hypfs_getsize(const struct hypfs_entry *entry); -struct hypfs_entry *hypfs_leaf_findentry(const struct hypfs_entry_dir *dir, - const char *name, - unsigned int name_len); -struct hypfs_entry *hypfs_dir_findentry(const struct hypfs_entry_dir *dir, - const char *name, - unsigned int name_len); +const struct hypfs_entry *cf_check hypfs_node_enter( + const struct hypfs_entry *entry); +void cf_check hypfs_node_exit(const struct hypfs_entry *entry); +int cf_check hypfs_read_dir(const struct hypfs_entry *entry, + XEN_GUEST_HANDLE_PARAM(void) uaddr); +int cf_check hypfs_read_leaf(const struct hypfs_entry *entry, + XEN_GUEST_HANDLE_PARAM(void) uaddr); +int cf_check hypfs_write_deny(struct hypfs_entry_leaf *leaf, + XEN_GUEST_HANDLE_PARAM(const_void) uaddr, + unsigned int ulen); +int cf_check hypfs_write_leaf(struct hypfs_entry_leaf *leaf, + XEN_GUEST_HANDLE_PARAM(const_void) uaddr, + unsigned int ulen); +int cf_check hypfs_write_bool(struct hypfs_entry_leaf *leaf, + XEN_GUEST_HANDLE_PARAM(const_void) uaddr, + unsigned int ulen); +int cf_check hypfs_write_custom(struct hypfs_entry_leaf *leaf, + XEN_GUEST_HANDLE_PARAM(const_void) uaddr, + unsigned int ulen); +unsigned int cf_check hypfs_getsize(const struct hypfs_entry *entry); +struct hypfs_entry *cf_check hypfs_leaf_findentry( + const struct hypfs_entry_dir *dir, const char *name, unsigned int name= _len); +struct hypfs_entry *cf_check hypfs_dir_findentry( + const struct hypfs_entry_dir *dir, const char *name, unsigned int name= _len); void *hypfs_alloc_dyndata(unsigned long size); #define hypfs_alloc_dyndata(type) ((type *)hypfs_alloc_dyndata(sizeof(type= ))) void *hypfs_get_dyndata(void); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932044; cv=none; d=zohomail.com; s=zohoarc; b=PqR069jO2g2q+2Wr20JH/fGTjQcQrhYW6EMOprrJQ2R1EkT5BiWangfBILKIYAZzDi2oyKybLjX/ma+FqrxqqTp1ZKg0HvKFmT7qg9FEEZWdOzCc9aIUpk1+kDsL1g6uxpMkNPWWtBCYx3B6c8MqgFApnj3hyTX8y4vzUlOTd50= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932044; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=2rmpgk5Kc8HCqjDa35B2CwrnWPt2FuYZrzjH7frHXPs=; b=WrmMcZEf0nlUWYJHYkaM0wdsFGrkxe6JVaIGlFnJ1IZss8wUldcoICFcAOK+Vg+o+RNFTeazfDEs/CP/fZeOfDwpvb/Nelleu1xdqBnsuSAe/6dXTZ2U3rZlLMnSpY/dcdCbfxI5cTpW0ER7Pa5rEAqq/OoNY/RuIeKM3MhixBU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932044358734.9270877499494; Fri, 26 Nov 2021 05:07:24 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232786.403820 (Exim 4.92) (envelope-from ) id 1mqawS-0004Pv-Qq; Fri, 26 Nov 2021 13:07:04 +0000 Received: by outflank-mailman (output) from mailman id 232786.403820; Fri, 26 Nov 2021 13:07:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawS-0004OW-47; Fri, 26 Nov 2021 13:07:04 +0000 Received: by outflank-mailman (input) for mailman id 232786; Fri, 26 Nov 2021 13:07:00 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavX-0003W9-Lx for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:07 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9ce993e1-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:06 +0100 (CET) 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: 9ce993e1-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931966; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2fDXaXazfQXnz7/03KLLc3+HD6+G8OCzegB9VcGT+sI=; b=WovLxch8km54ezVS+a9dQ6Q7/ObjK2lERKNO/Idq2EndtfXzU5PI34XK VSrSsB+RAHTK03jgnNrHgV+q2nLjBUW9fLaGQICBuH5Z6ujeI+uTU8ddA nuDGWdtpUA30U5OHjlyxA6YOOPiscbGywAchY2JP1MvfGx65oun+AZZNU 0=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: H7eJka3pBj2/5aSyGooWyhODYdOVTBX01pBZ5HMUYXzwrHQw4N6Zdx1JYCRe50dDcV/mKhyJ2o LdYbbBeM/1MTbhnLwBzgvKOn1s+jxIj/stEL2Gui/z8TpKvY1XES7C9b4sISxBbZSqMWx3cDxD ar8pSf/w0TiYno9nnU/Son6DixDzgk6lyk6q0agLrYieBwnq3o30EX+qMQ2uRLo9fPLGFC7Ejq dsyMnngAVpHjObqjzBrS/AA7EzjtU2nWqur3/+nG5c1xfjAhBCpUPOF7dOtinOBXOjdpWnR5x3 KjnjhwXYY5YH/SFeVWULJ23M X-SBRS: 5.1 X-MesageID: 58696036 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:n1cAIqDBJfxo0xVW/9zkw5YqxClBgxIJ4kV8jS/XYbTApDMr0TFVy DcbW2uPafncZjH1c40jbduw8R9TsJPSxoRmQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMo/u1Si6FatANl1ElvU2zbue6WLGs1hxZH1c+EX5400w7wYbVv6Yz6TSHK1LV0 T/Ni5W31G+Ng1aY5UpNtspvADs21BjDkGtwUm4WPJinj3eH/5UhN7oNJLnZEpfNatI88thW5 Qr05OrREmvxp3/BAz4++1rxWhVirrX6ZWBihpfKMkQLb9crSiEai84G2PQghUh/kG+qh+Fhy 4R0qcKgRj53OrPlhrg6XEwNe81+FfUuFL7vJHG+tYqYzlHccmuqyPJrZK00FdRGoKAtWzgIr KFGbmBWBvyAr7veLLaTY+9gnMk8auLsO5sSoCpIxjDFF/c2B5vERs0m4PcFjGlh2JgVQ54yY eIXMmdpaSnrZyZxYFRPM7U8n7ezjWfWJmgwRFW9+vNsvjm7IBZK+KfpGMrYfJqNX8o9tkSFo mPL+UzpDxdcM8aQoRKe6W6ljOLLmSL9WaoRGae++/osh0ecrkQDBRtTWValrP2Rjk+lR8kZO 0ES4jApr6U56AqsVNaVdz+SrWOAvxUcc8FNCOB84waIopc4+C7AWDJCFGQYLoV76olmHlTGy 2NlgfvyXx93ga2WGEuBqKeblG22JwELcUgNMHpsoRQ+3/Hvp4Q6jxTqR9llEbKogtCdJQwc0 wxmvwBl2exN0JdjO7GTuAme3mny/sShohsdv12PBgqYAhVFiJlJjmBCwXzS9r5+IYmQVTFtV 1BUypHFvIji4Xxg/RFhodnh/pn1uJ5p0xWG2DaD+qXNERz2oBZPmqgKvVlDyL9BaJpsRNMQS Ba7VfltzJFSJmC2SqR8fpi8Dc8npYC5S4+6Bq6JMYsSPMQqHONiwM2ITRXLt4wKuBJx+ZzTx L/BKZr8ZZrkIfgPIMWKqxc1juZwm3FWKZL7TpHn1RW3uYdyl1bOIYrpxGCmN7hjhIvd+V292 48Ga6OilkUOOMWjM3K/2dNCcjg3wY0TWMmeRzp/LbXYfGKL2QgJVpfs/F/WU9A/wvkOyL6Xp irVt40x4AOXuEAr4D6iMhhLAI4Dl74mxZ7iFSBzb1uuxVY5ZoOjsPUWe5ctJOF1/+1/1/9kC fICfpzYUPhITz3G/RUbbIX889M+JEj621rWMnr3eiU7cr5hWxfNpo3ucDzw+XRcFSGwr8Y// eGtj1uJXZoZSg1+J8/Kc/bznUiptH0QlbsqDUvFK9VeYmv2941uJ3Cjh/M7OZhUex7C2iGbx 0CdBhJB/bvBpIo88d/og6GYrtj2T7siTxQCR2SCtOS4LyjX+Gan0LRsaufQcGCPTn7w9YWje f5Rk6P2PsoYkQsYqIF7Cbtqk/4zvoO9u79Aww14N3zXdFD3WKh4K3yL0MQT5K1AwrhV5Vm/V k6Vo4QIPLyIPIXuEUILJRpjZeOGjKlGlj7X5PUzAUP7+C4oo+bXDRQMZ0GB2H5HMb94EII52 uNw6scZ5ju2hgcuLtvb3Dtf8H6BLyBYXqgq3n3A7FQHVub/Jol+XKHh IronPort-HdrOrdr: A9a23:iinLz6GjHL60mLg8pLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079 YZT0EUMrzN5DZB4voSmDPIceod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58696036" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 19/65] xen/tasklet: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:00 +0000 Message-ID: <20211126123446.32324-20-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932045093100021 The function pointer cast in hvm_vcpu_initialise() is undefined behaviour. While it happens to function correctly before this point, it is not incompatible with control flow typechecking, so introduce a new hvm_assert_evtchn_irq_tasklet() to handle the parameter type conversion in a legal way. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/hvm/hvm.c | 7 ++++++- xen/arch/x86/hvm/vlapic.c | 2 +- xen/arch/x86/mm/shadow/common.c | 2 +- xen/common/domain.c | 2 +- xen/common/keyhandler.c | 6 +++--- xen/common/livepatch.c | 2 +- xen/common/stop_machine.c | 2 +- xen/common/trace.c | 2 +- xen/drivers/char/console.c | 2 +- xen/drivers/passthrough/amd/iommu_guest.c | 2 +- xen/drivers/passthrough/amd/iommu_init.c | 4 ++-- xen/drivers/passthrough/arm/smmu-v3.c | 6 +++--- xen/drivers/passthrough/vtd/iommu.c | 2 +- xen/include/asm-x86/shadow.h | 2 +- 14 files changed, 24 insertions(+), 19 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 0e935be1d772..16e8a32fa768 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -1540,6 +1540,11 @@ static int __init cf_check hvm_register_CPU_save_and= _restore(void) } __initcall(hvm_register_CPU_save_and_restore); =20 +static void cf_check hvm_assert_evtchn_irq_tasklet(void *v) +{ + hvm_assert_evtchn_irq(v); +} + int hvm_vcpu_initialise(struct vcpu *v) { int rc; @@ -1563,7 +1568,7 @@ int hvm_vcpu_initialise(struct vcpu *v) goto fail3; =20 softirq_tasklet_init(&v->arch.hvm.assert_evtchn_irq_tasklet, - (void (*)(void *))hvm_assert_evtchn_irq, v); + hvm_assert_evtchn_irq_tasklet, v); =20 v->arch.hvm.inject_event.vector =3D HVM_EVENT_VECTOR_UNSET; =20 diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index b8c84458ffdc..fe375912bef1 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -312,7 +312,7 @@ static void vlapic_init_sipi_one(struct vcpu *target, u= int32_t icr) vcpu_unpause(target); } =20 -static void vlapic_init_sipi_action(void *data) +static void cf_check vlapic_init_sipi_action(void *data) { struct vcpu *origin =3D data; uint32_t icr =3D vcpu_vlapic(origin)->init_sipi.icr; diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/commo= n.c index 1e4ee50771f5..b8cacbefef5f 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -3242,7 +3242,7 @@ void shadow_audit_tables(struct vcpu *v) =20 #ifdef CONFIG_PV =20 -void pv_l1tf_tasklet(void *data) +void cf_check pv_l1tf_tasklet(void *data) { struct domain *d =3D data; =20 diff --git a/xen/common/domain.c b/xen/common/domain.c index a8b6ee59587c..4fcf9e23911f 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -1833,7 +1833,7 @@ struct migrate_info { =20 static DEFINE_PER_CPU(struct migrate_info *, continue_info); =20 -static void continue_hypercall_tasklet_handler(void *data) +static void cf_check continue_hypercall_tasklet_handler(void *data) { struct migrate_info *info =3D data; struct vcpu *v =3D info->vcpu; diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c index 2c916d528ab2..b568484ca62c 100644 --- a/xen/common/keyhandler.c +++ b/xen/common/keyhandler.c @@ -73,7 +73,7 @@ static struct keyhandler { #undef KEYHANDLER }; =20 -static void keypress_action(void *unused) +static void cf_check keypress_action(void *unused) { handle_keypress(keypress_key, NULL); } @@ -206,7 +206,7 @@ static void dump_registers(unsigned char key, struct cp= u_user_regs *regs) =20 static DECLARE_TASKLET(dump_hwdom_tasklet, NULL, NULL); =20 -static void dump_hwdom_action(void *data) +static void cf_check dump_hwdom_action(void *data) { struct vcpu *v =3D data; =20 @@ -437,7 +437,7 @@ static void read_clocks(unsigned char key) maxdif_cycles, sumdif_cycles/count, count, dif_cycles); } =20 -static void run_all_nonirq_keyhandlers(void *unused) +static void cf_check run_all_nonirq_keyhandlers(void *unused) { /* Fire all the non-IRQ-context diagnostic keyhandlers */ struct keyhandler *h; diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index 701efd87a173..4e1c29ab7879 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -1591,7 +1591,7 @@ static int schedule_work(struct payload *data, uint32= _t cmd, uint32_t timeout) return 0; } =20 -static void tasklet_fn(void *unused) +static void cf_check tasklet_fn(void *unused) { this_cpu(work_to_do) =3D 1; } diff --git a/xen/common/stop_machine.c b/xen/common/stop_machine.c index a122bd4afe09..3adbe380de96 100644 --- a/xen/common/stop_machine.c +++ b/xen/common/stop_machine.c @@ -141,7 +141,7 @@ int stop_machine_run(int (*fn)(void *), void *data, uns= igned int cpu) return ret; } =20 -static void stopmachine_action(void *data) +static void cf_check stopmachine_action(void *data) { unsigned int cpu =3D (unsigned long)data; enum stopmachine_state state =3D STOPMACHINE_START; diff --git a/xen/common/trace.c b/xen/common/trace.c index 0886be089bea..53978466cf92 100644 --- a/xen/common/trace.c +++ b/xen/common/trace.c @@ -663,7 +663,7 @@ static inline void insert_lost_records(struct t_buf *bu= f) * Notification is performed in qtasklet to avoid deadlocks with contexts * which __trace_var() may be called from (e.g., scheduler critical region= s). */ -static void trace_notify_dom0(void *unused) +static void cf_check trace_notify_dom0(void *unused) { send_global_virq(VIRQ_TBUF); } diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 4694be83db45..d74b65f6bf23 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -574,7 +574,7 @@ static void serial_rx(char c, struct cpu_user_regs *reg= s) __serial_rx(c, regs); } =20 -static void notify_dom0_con_ring(void *unused) +static void cf_check notify_dom0_con_ring(void *unused) { send_global_virq(VIRQ_CON_RING); } diff --git a/xen/drivers/passthrough/amd/iommu_guest.c b/xen/drivers/passth= rough/amd/iommu_guest.c index 85828490ffee..361ff864d846 100644 --- a/xen/drivers/passthrough/amd/iommu_guest.c +++ b/xen/drivers/passthrough/amd/iommu_guest.c @@ -456,7 +456,7 @@ static int do_invalidate_dte(struct domain *d, cmd_entr= y_t *cmd) return 0; } =20 -static void guest_iommu_process_command(void *data) +static void cf_check guest_iommu_process_command(void *data) { unsigned long opcode, tail, head, cmd_mfn; cmd_entry_t *cmd; diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthr= ough/amd/iommu_init.c index f1ed75558227..34a9e49f1c5a 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -26,7 +26,7 @@ static int __initdata nr_amd_iommus; static bool __initdata pci_init; =20 -static void do_amd_iommu_irq(void *data); +static void cf_check do_amd_iommu_irq(void *data); static DECLARE_SOFTIRQ_TASKLET(amd_iommu_irq_tasklet, do_amd_iommu_irq, NU= LL); =20 unsigned int __read_mostly amd_iommu_acpi_info; @@ -692,7 +692,7 @@ static void iommu_check_ppr_log(struct amd_iommu *iommu) spin_unlock_irqrestore(&iommu->lock, flags); } =20 -static void do_amd_iommu_irq(void *unused) +static void cf_check do_amd_iommu_irq(void *unused) { struct amd_iommu *iommu; =20 diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index d115df732016..5e74266da21e 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -1475,7 +1475,7 @@ static int arm_smmu_init_l2_strtab(struct arm_smmu_de= vice *smmu, u32 sid) } =20 /* IRQ and event handlers */ -static void arm_smmu_evtq_tasklet(void *dev) +static void cf_check arm_smmu_evtq_tasklet(void *dev) { int i; struct arm_smmu_device *smmu =3D dev; @@ -1545,7 +1545,7 @@ static void arm_smmu_handle_ppr(struct arm_smmu_devic= e *smmu, u64 *evt) } } =20 -static void arm_smmu_priq_tasklet(void *dev) +static void cf_check arm_smmu_priq_tasklet(void *dev) { struct arm_smmu_device *smmu =3D dev; struct arm_smmu_queue *q =3D &smmu->priq.q; @@ -1624,7 +1624,7 @@ static void arm_smmu_combined_irq_handler(int irq, vo= id *dev, tasklet_schedule(&(smmu->combined_irq_tasklet)); } =20 -static void arm_smmu_combined_irq_tasklet(void *dev) +static void cf_check arm_smmu_combined_irq_tasklet(void *dev) { struct arm_smmu_device *smmu =3D dev; =20 diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/= vtd/iommu.c index ba1ed5761d23..23519f2081bb 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1065,7 +1065,7 @@ static void __do_iommu_page_fault(struct vtd_iommu *i= ommu) } } =20 -static void do_iommu_page_fault(void *unused) +static void cf_check do_iommu_page_fault(void *unused) { struct acpi_drhd_unit *drhd; =20 diff --git a/xen/include/asm-x86/shadow.h b/xen/include/asm-x86/shadow.h index e25f9604d896..7ef76cc0635b 100644 --- a/xen/include/asm-x86/shadow.h +++ b/xen/include/asm-x86/shadow.h @@ -233,7 +233,7 @@ static inline bool pv_l1tf_check_l4e(struct domain *d, = l4_pgentry_t l4e) return pv_l1tf_check_pte(d, 4, l4e.l4); } =20 -void pv_l1tf_tasklet(void *data); +void cf_check pv_l1tf_tasklet(void *data); =20 static inline void pv_l1tf_domain_init(struct domain *d) { --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931907; cv=none; d=zohomail.com; s=zohoarc; b=CqECH6Vwg9KrWPM5qWTOsZnshV8w2A9f2SG/lsJJI1WTDW1OOQHeW3WhTpCher7iGBBfGEBm8w75t7EDxn5on/SdZRdIVymTy2b4OLs90KoNP5QOcALnidg4CNULuRGJGgHp1Z8JfIuh2Gqapr34l5hCYiEtOZPcX4se2g9fHFk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931907; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EF3JUjASEuxYi6jwB8SKSRZ1mRtCmUZ+oWx670nXUWc=; b=aU1aMLDVtFOzDjMF7uW0+15qXQQ5dKeA8uvIjQT9oqGUdx+G3M9d3Kmqhqy5BT6cERVmjPmV1nAJlQ887n7ALamy4KzAvav29/cag0ShU5NzKEW3RS8KrDX4Xk55KPrrejqiA5YvLrD32mytGUAD5BbMPc6XJgAxUEKdD/qEjAM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931907262557.0146222601992; Fri, 26 Nov 2021 05:05:07 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232748.403617 (Exim 4.92) (envelope-from ) id 1mqauE-0003XN-6Y; Fri, 26 Nov 2021 13:04:46 +0000 Received: by outflank-mailman (output) from mailman id 232748.403617; Fri, 26 Nov 2021 13:04:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauE-0003XG-2x; Fri, 26 Nov 2021 13:04:46 +0000 Received: by outflank-mailman (input) for mailman id 232748; Fri, 26 Nov 2021 13:04:45 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauC-0003W9-Ux for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:45 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 6abd2811-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:04:42 +0100 (CET) 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: 6abd2811-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931882; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lyv9Zq2/wNiGM7cedY7jC5rNlTlcp+sDuu1OiqPjFTg=; b=M5aUjTN3C+ErM1grARTSTiuiEOO8CMpENPpVt8sHqH/eJfJxAVky0zx6 CJou6ZfIJ8u1C/gz4oLSwlzNjZfR91YqggGCJ3kkqCJT3RxwP9zqow2Op inydMKMDeuaNEDarXfm5sozCj6+RJSCe7/vp5QIJJIPh8j9HiVH3TkjHV I=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: fOYU9aW3l2wmwGsPd6CF/fr/ZOec+IzVsloqAFGDwWe+hD09ck9tQvXWbEgXc3WZcidVlFk2lV 3a01fkSNuUQ0fAsCDnP42VDS7pdx6DRRSnds6xOazrI5qLhtteHiVQqgrfqE/p7WwWRe67iAtr 3E5vhOg1Envlt3lUjMZl2wExtaZStH4CO9kldE6FjaxLBUCheNDjG3O6yw0rnaXm82F5r0G2io hgUUfNtiLIX207yh8N0EGcD8Dg7XcETvayWqG+WzrGCs1QQg81Zhb7k1lx25x2QBx67UM2gSLo JpWHnT8ZCF5PKrYrGQ/5/dz2 X-SBRS: 5.1 X-MesageID: 60695210 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:YDhxuKKufnPyGEB/FE+RJJIlxSXFcZb7ZxGr2PjKsXjdYENSgTJWy jEbUG/SaPbYZ2f9KN0nOYiz9B8G7Z/UnIJlQQNlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es5xbZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2txuJQ7 vlGpKWUdhokPK7VtcgASxtXRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Glo2JETR6+GD yYfQWFuSQrbXkxfAWkeWY8kvPmC2yjecTIN/Tp5ooJoujOOnWSdyoPFL979atGMA8JPkS6wp H/C/mn/KgEXMpqY0zXt2mm3mubFkCf/WYQTPL617PhnhBuU3GN7IA0bUx63rOe0jma6WslDM AoE9yw2t68w+Ue3CN7nUHWQglSJoxodUNp4CPAh5UeGza+83uqCLjFaFHgbMoVg7ZJoA2xxv rOUoz/3LRg2gpyzZXmMz5OrsD6wOjE4AXIaZyBRGGPp/OLfiI00ixvOSPNqH6i0ksD5FFnM/ tyakMQtr+5N1JBWjs1X6XiC2mvx/caREmbZ8y2OBjr9hj6VcrJJcGBBBbLzyf9bZLiUQVCa1 JTvs5jPtbteZX1hecHkfQnsIF1Lz6raWNE/qQQ2d3XEy9hL0yX4FWy3yGsjTHqFyu5eJVfUj Lb74Gu9HqN7MnqwdrNQaImsEcksxqWIPY27Da+EMIcRM8QvKFTvEMRSiai4hDuFfK8Ey/xXB HtmWZz0USZy5VpPkFJauNvxIZd0n3tjlAs/tLjwzgi90Kr2WZJmYextDbd6VchgtPnsiFyMq 753bpLWoz0CALyWSnSGquY7cAFVRUXX8Lir8qS7gMbYeVE4cIzgYteMqY4cl3tNw/4Iy7yWp y7lASe1CjPX3BX6FOlDUVg7AJuHYHq1hSlT0fUEMQn61n49T5yo6atDJZI7caN+rL5ozOJuT ulDcMKFW6wdRjPC8jUbTJ/8sI09K0j72VPQZ3KoMGolYpptZw3V4du4LAHhwzYDU3isvswkr rz+ig6CGcgfRx5vBdr9Ye60yw/jpmAUne9/BhOaItRadEj23pJtLij90q0+L80WcE2RzTqGz QeGRxwfoLCV8YMy9dDIg4GCrpuoTLQiThYLQTGD4O/vZyfA/2elzYtRa8qyfGjQBDHu5aGvR eRJ1PWgYvcJq0lH7thnGLFxwKNgu9a2/+1Gzh5pFWngZkiwDu8yOWGP2MRCu/EfxrJdvgfqC EuD9sMDZOeMMcLhVlUQOBAkfqKI0vRNwmve6vE8IUPb4i5r/eXYDRUObkfU0CENfqFoNI4Fw Ps6vJ9E4gOyvRMmL9Kag30G7G+LNHEBD/0qu5xy7FUHUeb3JoWuuaDhNxI= IronPort-HdrOrdr: A9a23:3tQAn62SzL3BLmlAceXccwqjBIokLtp133Aq2lEZdPRUGvb3qy nIpoVj6faUskd2ZJhOo7C90cW7LU80sKQFhLX5Xo3SOzUO2lHYT72KhLGKq1aLdhEWtNQtsZ uIG5IOcOEYZmIasS+V2maF+q4bsbu6zJw= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="60695210" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 20/65] xen/keyhandler: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:01 +0000 Message-ID: <20211126123446.32324-21-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931908754100003 Tweak {IRQ_,}KEYHANDLER() to use a named initialiser instead of requiring a pointer cast to compile in the IRQ case. Reposition iommu_dump_page_tables() to avoid a forward declaration. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/acpi/cpu_idle.c | 2 +- xen/arch/x86/hvm/irq.c | 2 +- xen/arch/x86/hvm/svm/vmcb.c | 2 +- xen/arch/x86/hvm/vmx/vmcs.c | 2 +- xen/arch/x86/io_apic.c | 2 +- xen/arch/x86/irq.c | 2 +- xen/arch/x86/mm/p2m-ept.c | 2 +- xen/arch/x86/mm/shadow/common.c | 4 +-- xen/arch/x86/msi.c | 2 +- xen/arch/x86/nmi.c | 4 +-- xen/arch/x86/numa.c | 2 +- xen/arch/x86/time.c | 2 +- xen/common/debugtrace.c | 2 +- xen/common/event_channel.c | 2 +- xen/common/grant_table.c | 2 +- xen/common/kexec.c | 2 +- xen/common/keyhandler.c | 35 ++++++++++++--------- xen/common/livepatch.c | 2 +- xen/common/page_alloc.c | 4 +-- xen/common/perfc.c | 4 +-- xen/common/sched/cpupool.c | 2 +- xen/common/spinlock.c | 4 +-- xen/common/timer.c | 2 +- xen/drivers/char/console.c | 8 ++--- xen/drivers/passthrough/amd/iommu.h | 2 +- xen/drivers/passthrough/amd/iommu_intr.c | 2 +- xen/drivers/passthrough/iommu.c | 52 +++++++++++++++-------------= ---- xen/drivers/passthrough/pci.c | 2 +- xen/drivers/passthrough/vtd/extern.h | 2 +- xen/drivers/passthrough/vtd/utils.c | 2 +- xen/include/xen/perfc.h | 4 +-- xen/include/xen/sched.h | 2 +- xen/include/xen/spinlock.h | 4 +-- 33 files changed, 86 insertions(+), 83 deletions(-) diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index 22c8bb0c2d94..0142671bb836 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -377,7 +377,7 @@ static void print_acpi_power(uint32_t cpu, struct acpi_= processor_power *power) print_hw_residencies(cpu); } =20 -static void dump_cx(unsigned char key) +static void cf_check dump_cx(unsigned char key) { unsigned int cpu; =20 diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index 6045c9149bad..a7f8991a7b84 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -635,7 +635,7 @@ static void irq_dump(struct domain *d) hvm_irq->callback_via_asserted ? "" : " not"); } =20 -static void dump_irq_info(unsigned char key) +static void cf_check dump_irq_info(unsigned char key) { struct domain *d; =20 diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c index 565e997155f2..811afb8fa8d6 100644 --- a/xen/arch/x86/hvm/svm/vmcb.c +++ b/xen/arch/x86/hvm/svm/vmcb.c @@ -226,7 +226,7 @@ void svm_destroy_vmcb(struct vcpu *v) svm->vmcb =3D NULL; } =20 -static void vmcb_dump(unsigned char ch) +static void cf_check vmcb_dump(unsigned char ch) { struct domain *d; struct vcpu *v; diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 98fe91aff80b..1bb3710f7baa 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -2117,7 +2117,7 @@ void vmcs_dump_vcpu(struct vcpu *v) vmx_vmcs_exit(v); } =20 -static void vmcs_dump(unsigned char ch) +static void cf_check vmcs_dump(unsigned char ch) { struct domain *d; struct vcpu *v; diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 4135a9c06052..4c5eaef86273 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -1268,7 +1268,7 @@ static void __init print_IO_APIC(void) __print_IO_APIC(1); } =20 -static void _print_IO_APIC_keyhandler(unsigned char key) +static void cf_check _print_IO_APIC_keyhandler(unsigned char key) { __print_IO_APIC(0); } diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index d9bd355113d7..f43b926ed26b 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2424,7 +2424,7 @@ void free_domain_pirqs(struct domain *d) pcidevs_unlock(); } =20 -static void dump_irqs(unsigned char key) +static void cf_check dump_irqs(unsigned char key) { int i, irq, pirq; struct irq_desc *desc; diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c index 1459f66c006b..ac36afcc1d64 100644 --- a/xen/arch/x86/mm/p2m-ept.c +++ b/xen/arch/x86/mm/p2m-ept.c @@ -1434,7 +1434,7 @@ static const char *memory_type_to_str(unsigned int x) return memory_types[x][0] ? memory_types[x] : "?"; } =20 -static void ept_dump_p2m_table(unsigned char key) +static void cf_check ept_dump_p2m_table(unsigned char key) { struct domain *d; ept_entry_t *table, *ept_entry; diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/commo= n.c index b8cacbefef5f..03bcd9518c39 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -98,7 +98,7 @@ void shadow_vcpu_init(struct vcpu *v) #if SHADOW_AUDIT int shadow_audit_enable =3D 0; =20 -static void shadow_audit_key(unsigned char key) +static void cf_check shadow_audit_key(unsigned char key) { shadow_audit_enable =3D !shadow_audit_enable; printk("%s shadow_audit_enable=3D%d\n", @@ -1046,7 +1046,7 @@ void shadow_blow_tables_per_domain(struct domain *d) /* Blow all shadows of all shadowed domains: this can be used to cause the * guest's pagetables to be re-shadowed if we suspect that the shadows * have somehow got out of sync */ -static void shadow_blow_all_tables(unsigned char c) +static void cf_check shadow_blow_all_tables(unsigned char c) { struct domain *d; printk("'%c' pressed -> blowing all shadow tables\n", c); diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index d1497254b188..77a4fbf13f9f 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -1411,7 +1411,7 @@ void __init early_msi_init(void) return; } =20 -static void dump_msi(unsigned char key) +static void cf_check dump_msi(unsigned char key) { unsigned int irq; =20 diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index e20d1393c881..5c26e8785dfc 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -578,13 +578,13 @@ void self_nmi(void) local_irq_restore(flags); } =20 -static void do_nmi_trigger(unsigned char key) +static void cf_check do_nmi_trigger(unsigned char key) { printk("Triggering NMI on APIC ID %x\n", get_apic_id()); self_nmi(); } =20 -static void do_nmi_stats(unsigned char key) +static void cf_check do_nmi_stats(unsigned char key) { const struct vcpu *v; unsigned int cpu; diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c index 5de9db4e9943..680b7d9002c5 100644 --- a/xen/arch/x86/numa.c +++ b/xen/arch/x86/numa.c @@ -369,7 +369,7 @@ unsigned int __init arch_get_dma_bitsize(void) + PAGE_SHIFT, 32); } =20 -static void dump_numa(unsigned char key) +static void cf_check dump_numa(unsigned char key) { s_time_t now =3D NOW(); unsigned int i, j, n; diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 1ebf5fca96cc..9f8fdb209041 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -2536,7 +2536,7 @@ int tsc_set_info(struct domain *d, } =20 /* vtsc may incur measurable performance degradation, diagnose with this */ -static void dump_softtsc(unsigned char key) +static void cf_check dump_softtsc(unsigned char key) { struct domain *d; int domcnt =3D 0; diff --git a/xen/common/debugtrace.c b/xen/common/debugtrace.c index 160d00b79607..a272e5e43761 100644 --- a/xen/common/debugtrace.c +++ b/xen/common/debugtrace.c @@ -233,7 +233,7 @@ void debugtrace_printk(const char *fmt, ...) spin_unlock_irqrestore(&debugtrace_lock, flags); } =20 -static void debugtrace_key(unsigned char key) +static void cf_check debugtrace_key(unsigned char key) { debugtrace_toggle(); } diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index e26904e7508f..0e65178a524e 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -1629,7 +1629,7 @@ static void domain_dump_evtchn_info(struct domain *d) spin_unlock(&d->event_lock); } =20 -static void dump_evtchn_info(unsigned char key) +static void cf_check dump_evtchn_info(unsigned char key) { struct domain *d; =20 diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 7b2f593e8b6c..7ea72ca01251 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -4257,7 +4257,7 @@ static void gnttab_usage_print(struct domain *rd) printk("no active grant table entries\n"); } =20 -static void gnttab_usage_print_all(unsigned char key) +static void cf_check gnttab_usage_print_all(unsigned char key) { struct domain *d; =20 diff --git a/xen/common/kexec.c b/xen/common/kexec.c index b222a5fd782e..a2ffb6530cff 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -408,7 +408,7 @@ static long cf_check kexec_reboot(void *_image) return 0; } =20 -static void do_crashdump_trigger(unsigned char key) +static void cf_check do_crashdump_trigger(unsigned char key) { printk("'%c' pressed -> triggering crashdump\n", key); kexec_crash(CRASHREASON_DEBUGKEY); diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c index b568484ca62c..5dc650a37c5c 100644 --- a/xen/common/keyhandler.c +++ b/xen/common/keyhandler.c @@ -26,10 +26,11 @@ static unsigned char keypress_key; static bool_t alt_key_handling; =20 -static keyhandler_fn_t show_handlers, dump_hwdom_registers, - dump_domains, read_clocks; -static irq_keyhandler_fn_t do_toggle_alt_key, dump_registers, - reboot_machine, run_all_keyhandlers, do_debug_key; +static keyhandler_fn_t cf_check show_handlers, cf_check dump_hwdom_registe= rs, + cf_check dump_domains, cf_check read_clocks; +static irq_keyhandler_fn_t cf_check do_toggle_alt_key, cf_check dump_regis= ters, + cf_check reboot_machine, cf_check run_all_keyhandlers, + cf_check do_debug_key; =20 static struct keyhandler { union { @@ -43,10 +44,10 @@ static struct keyhandler { } key_table[128] __read_mostly =3D { #define KEYHANDLER(k, f, desc, diag) \ - [k] =3D { { (f) }, desc, 0, diag } + [k] =3D { { .fn =3D (f) }, desc, 0, diag } =20 #define IRQ_KEYHANDLER(k, f, desc, diag) \ - [k] =3D { { (keyhandler_fn_t *)(f) }, desc, 1, diag } + [k] =3D { { .irq_fn =3D (f) }, desc, 1, diag } =20 IRQ_KEYHANDLER('A', do_toggle_alt_key, "toggle alternative key handlin= g", 0), IRQ_KEYHANDLER('d', dump_registers, "dump registers", 1), @@ -124,7 +125,7 @@ void register_irq_keyhandler(unsigned char key, irq_key= handler_fn_t fn, key_table[key].diagnostic =3D diagnostic; } =20 -static void show_handlers(unsigned char key) +static void cf_check show_handlers(unsigned char key) { unsigned int i; =20 @@ -170,7 +171,8 @@ void dump_execstate(struct cpu_user_regs *regs) watchdog_enable(); } =20 -static void dump_registers(unsigned char key, struct cpu_user_regs *regs) +static void cf_check dump_registers( + unsigned char key, struct cpu_user_regs *regs) { unsigned int cpu; =20 @@ -224,7 +226,7 @@ static void cf_check dump_hwdom_action(void *data) } } =20 -static void dump_hwdom_registers(unsigned char key) +static void cf_check dump_hwdom_registers(unsigned char key) { struct vcpu *v; =20 @@ -246,13 +248,14 @@ static void dump_hwdom_registers(unsigned char key) } } =20 -static void reboot_machine(unsigned char key, struct cpu_user_regs *regs) +static void cf_check reboot_machine( + unsigned char key, struct cpu_user_regs *regs) { printk("'%c' pressed -> rebooting machine\n", key); machine_restart(0); } =20 -static void dump_domains(unsigned char key) +static void cf_check dump_domains(unsigned char key) { struct domain *d; const struct sched_unit *unit; @@ -372,7 +375,7 @@ static void cf_check read_clocks_slave(void *unused) local_irq_enable(); } =20 -static void read_clocks(unsigned char key) +static void cf_check read_clocks(unsigned char key) { unsigned int cpu =3D smp_processor_id(), min_stime_cpu, max_stime_cpu; unsigned int min_cycles_cpu, max_cycles_cpu; @@ -461,7 +464,8 @@ static void cf_check run_all_nonirq_keyhandlers(void *u= nused) static DECLARE_TASKLET(run_all_keyhandlers_tasklet, run_all_nonirq_keyhandlers, NULL); =20 -static void run_all_keyhandlers(unsigned char key, struct cpu_user_regs *r= egs) +static void cf_check run_all_keyhandlers( + unsigned char key, struct cpu_user_regs *regs) { struct keyhandler *h; unsigned int k; @@ -494,7 +498,7 @@ static void do_debugger_trap_fatal(struct cpu_user_regs= *regs) barrier(); } =20 -static void do_debug_key(unsigned char key, struct cpu_user_regs *regs) +static void cf_check do_debug_key(unsigned char key, struct cpu_user_regs = *regs) { printk("'%c' pressed -> trapping into debugger\n", key); if ( regs ) @@ -503,7 +507,8 @@ static void do_debug_key(unsigned char key, struct cpu_= user_regs *regs) run_in_exception_handler(do_debugger_trap_fatal); } =20 -static void do_toggle_alt_key(unsigned char key, struct cpu_user_regs *reg= s) +static void cf_check do_toggle_alt_key( + unsigned char key, struct cpu_user_regs *regs) { alt_key_handling =3D !alt_key_handling; printk("'%c' pressed -> using %s key handling\n", key, diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index 4e1c29ab7879..e8714920dc8f 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -2068,7 +2068,7 @@ static const char *state2str(unsigned int state) return names[state]; } =20 -static void livepatch_printall(unsigned char key) +static void cf_check livepatch_printall(unsigned char key) { struct payload *data; const void *binary_id =3D NULL; diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index a95dd14f63b4..906bfb6679df 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -2528,7 +2528,7 @@ unsigned long avail_node_heap_pages(unsigned int node= id) } =20 =20 -static void pagealloc_info(unsigned char key) +static void cf_check pagealloc_info(unsigned char key) { unsigned int zone =3D MEMZONE_XEN; unsigned long n, total =3D 0; @@ -2578,7 +2578,7 @@ void scrub_one_page(struct page_info *pg) #endif } =20 -static void dump_heap(unsigned char key) +static void cf_check dump_heap(unsigned char key) { s_time_t now =3D NOW(); int i, j; diff --git a/xen/common/perfc.c b/xen/common/perfc.c index 3abe35892a83..7400667bf0c4 100644 --- a/xen/common/perfc.c +++ b/xen/common/perfc.c @@ -28,7 +28,7 @@ static const struct { =20 DEFINE_PER_CPU(perfc_t[NUM_PERFCOUNTERS], perfcounters); =20 -void perfc_printall(unsigned char key) +void cf_check perfc_printall(unsigned char key) { unsigned int i, j; s_time_t now =3D NOW(); @@ -115,7 +115,7 @@ void perfc_printall(unsigned char key) } } =20 -void perfc_reset(unsigned char key) +void cf_check perfc_reset(unsigned char key) { unsigned int i, j; s_time_t now =3D NOW(); diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c index 07f984a659cd..a6da4970506a 100644 --- a/xen/common/sched/cpupool.c +++ b/xen/common/sched/cpupool.c @@ -956,7 +956,7 @@ const cpumask_t *cpupool_valid_cpus(const struct cpupoo= l *pool) return pool->cpu_valid; } =20 -void dump_runq(unsigned char key) +void cf_check dump_runq(unsigned char key) { s_time_t now =3D NOW(); struct cpupool *c; diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c index 5ce7e3363863..25bfbf3c47f7 100644 --- a/xen/common/spinlock.c +++ b/xen/common/spinlock.c @@ -393,7 +393,7 @@ static void spinlock_profile_print_elem(struct lock_pro= file *data, data->lock_cnt, data->time_hold, data->block_cnt, data->time_bl= ock); } =20 -void spinlock_profile_printall(unsigned char key) +void cf_check spinlock_profile_printall(unsigned char key) { s_time_t now =3D NOW(); s_time_t diff; @@ -413,7 +413,7 @@ static void spinlock_profile_reset_elem(struct lock_pro= file *data, data->time_block =3D 0; } =20 -void spinlock_profile_reset(unsigned char key) +void cf_check spinlock_profile_reset(unsigned char key) { s_time_t now =3D NOW(); =20 diff --git a/xen/common/timer.c b/xen/common/timer.c index 700f191a70b4..9b5016d5ed82 100644 --- a/xen/common/timer.c +++ b/xen/common/timer.c @@ -546,7 +546,7 @@ static void dump_timer(struct timer *t, s_time_t now) (t->expires - now) / 1000, t, t->function, t->data); } =20 -static void dump_timerq(unsigned char key) +static void cf_check dump_timerq(unsigned char key) { struct timer *t; struct timers *ts; diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index d74b65f6bf23..380765ab02fd 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -280,7 +280,7 @@ static int *__read_mostly upper_thresh_adj =3D &xenlog_= upper_thresh; static int *__read_mostly lower_thresh_adj =3D &xenlog_lower_thresh; static const char *__read_mostly thresh_adj =3D "standard"; =20 -static void do_toggle_guest(unsigned char key, struct cpu_user_regs *regs) +static void cf_check do_toggle_guest(unsigned char key, struct cpu_user_re= gs *regs) { if ( upper_thresh_adj =3D=3D &xenlog_upper_thresh ) { @@ -307,13 +307,13 @@ static void do_adj_thresh(unsigned char key) loglvl_str(*upper_thresh_adj)); } =20 -static void do_inc_thresh(unsigned char key, struct cpu_user_regs *regs) +static void cf_check do_inc_thresh(unsigned char key, struct cpu_user_regs= *regs) { ++*lower_thresh_adj; do_adj_thresh(key); } =20 -static void do_dec_thresh(unsigned char key, struct cpu_user_regs *regs) +static void cf_check do_dec_thresh(unsigned char key, struct cpu_user_regs= *regs) { if ( *lower_thresh_adj ) --*lower_thresh_adj; @@ -424,7 +424,7 @@ void console_serial_puts(const char *s, size_t nr) pv_console_puts(s, nr); } =20 -static void dump_console_ring_key(unsigned char key) +static void cf_check dump_console_ring_key(unsigned char key) { uint32_t idx, len, sofar, c; unsigned int order; diff --git a/xen/drivers/passthrough/amd/iommu.h b/xen/drivers/passthrough/= amd/iommu.h index 04517c1a024c..99be9aafcc53 100644 --- a/xen/drivers/passthrough/amd/iommu.h +++ b/xen/drivers/passthrough/amd/iommu.h @@ -297,7 +297,7 @@ unsigned int amd_iommu_read_ioapic_from_ire( int amd_iommu_msi_msg_update_ire( struct msi_desc *msi_desc, struct msi_msg *msg); int amd_setup_hpet_msi(struct msi_desc *msi_desc); -void amd_iommu_dump_intremap_tables(unsigned char key); +void cf_check amd_iommu_dump_intremap_tables(unsigned char key); =20 extern struct ioapic_sbdf { u16 bdf, seg; diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthr= ough/amd/iommu_intr.c index b166a0466654..e7804413c7f4 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -844,7 +844,7 @@ static int dump_intremap_mapping(const struct amd_iommu= *iommu, return 0; } =20 -void amd_iommu_dump_intremap_tables(unsigned char key) +void cf_check amd_iommu_dump_intremap_tables(unsigned char key) { if ( !shared_intremap_table ) { diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iomm= u.c index 4eea296c8c7c..a2fc1969f402 100644 --- a/xen/drivers/passthrough/iommu.c +++ b/xen/drivers/passthrough/iommu.c @@ -22,8 +22,6 @@ #include #include =20 -static void iommu_dump_page_tables(unsigned char key); - unsigned int __read_mostly iommu_dev_iotlb_timeout =3D 1000; integer_param("iommu_dev_iotlb_timeout", iommu_dev_iotlb_timeout); =20 @@ -224,6 +222,31 @@ int iommu_domain_init(struct domain *d, unsigned int o= pts) return 0; } =20 +static void cf_check iommu_dump_page_tables(unsigned char key) +{ + struct domain *d; + + ASSERT(iommu_enabled); + + rcu_read_lock(&domlist_read_lock); + + for_each_domain(d) + { + if ( is_hardware_domain(d) || !is_iommu_enabled(d) ) + continue; + + if ( iommu_use_hap_pt(d) ) + { + printk("%pd sharing page tables\n", d); + continue; + } + + dom_iommu(d)->platform_ops->dump_page_tables(d); + } + + rcu_read_unlock(&domlist_read_lock); +} + void __hwdom_init iommu_hwdom_init(struct domain *d) { struct domain_iommu *hd =3D dom_iommu(d); @@ -584,31 +607,6 @@ bool_t iommu_has_feature(struct domain *d, enum iommu_= feature feature) return is_iommu_enabled(d) && test_bit(feature, dom_iommu(d)->features= ); } =20 -static void iommu_dump_page_tables(unsigned char key) -{ - struct domain *d; - - ASSERT(iommu_enabled); - - rcu_read_lock(&domlist_read_lock); - - for_each_domain(d) - { - if ( is_hardware_domain(d) || !is_iommu_enabled(d) ) - continue; - - if ( iommu_use_hap_pt(d) ) - { - printk("%pd sharing page tables\n", d); - continue; - } - - dom_iommu(d)->platform_ops->dump_page_tables(d); - } - - rcu_read_unlock(&domlist_read_lock); -} - /* * Local variables: * mode: C diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index e75c82d11bd6..81ab09649cd0 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1282,7 +1282,7 @@ static int _dump_pci_devices(struct pci_seg *pseg, vo= id *arg) return 0; } =20 -static void dump_pci_devices(unsigned char ch) +static void cf_check dump_pci_devices(unsigned char ch) { printk("=3D=3D=3D=3D PCI devices =3D=3D=3D=3D\n"); pcidevs_lock(); diff --git a/xen/drivers/passthrough/vtd/extern.h b/xen/drivers/passthrough= /vtd/extern.h index 6fb00a25c302..8c5e8397fd7e 100644 --- a/xen/drivers/passthrough/vtd/extern.h +++ b/xen/drivers/passthrough/vtd/extern.h @@ -31,7 +31,7 @@ extern const struct iommu_init_ops intel_iommu_init_ops; =20 void print_iommu_regs(struct acpi_drhd_unit *drhd); void print_vtd_entries(struct vtd_iommu *iommu, int bus, int devfn, u64 gm= fn); -keyhandler_fn_t vtd_dump_iommu_info; +keyhandler_fn_t cf_check vtd_dump_iommu_info; =20 bool intel_iommu_supports_eim(void); int intel_iommu_enable_eim(void); diff --git a/xen/drivers/passthrough/vtd/utils.c b/xen/drivers/passthrough/= vtd/utils.c index 56dfdff9bd0d..47922dc8e813 100644 --- a/xen/drivers/passthrough/vtd/utils.c +++ b/xen/drivers/passthrough/vtd/utils.c @@ -154,7 +154,7 @@ void print_vtd_entries(struct vtd_iommu *iommu, int bus= , int devfn, u64 gmfn) } while ( --level ); } =20 -void vtd_dump_iommu_info(unsigned char key) +void cf_check vtd_dump_iommu_info(unsigned char key) { struct acpi_drhd_unit *drhd; struct vtd_iommu *iommu; diff --git a/xen/include/xen/perfc.h b/xen/include/xen/perfc.h index 6846e7119fa3..bb010b0aae93 100644 --- a/xen/include/xen/perfc.h +++ b/xen/include/xen/perfc.h @@ -96,8 +96,8 @@ DECLARE_PER_CPU(perfc_t[NUM_PERFCOUNTERS], perfcounters); struct xen_sysctl_perfc_op; int perfc_control(struct xen_sysctl_perfc_op *); =20 -extern void perfc_printall(unsigned char key); -extern void perfc_reset(unsigned char key); +extern void cf_check perfc_printall(unsigned char key); +extern void cf_check perfc_reset(unsigned char key); =20 =20 #else /* CONFIG_PERF_COUNTERS */ diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 37f78cc4c4c9..67b0f6b86853 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -1145,7 +1145,7 @@ int cpupool_move_domain(struct domain *d, struct cpup= ool *c); int cpupool_do_sysctl(struct xen_sysctl_cpupool_op *op); unsigned int cpupool_get_id(const struct domain *d); const cpumask_t *cpupool_valid_cpus(const struct cpupool *pool); -extern void dump_runq(unsigned char key); +extern void cf_check dump_runq(unsigned char key); =20 void arch_do_physinfo(struct xen_sysctl_physinfo *pi); =20 diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h index 9fa4e600c1f7..961891bea4d5 100644 --- a/xen/include/xen/spinlock.h +++ b/xen/include/xen/spinlock.h @@ -129,8 +129,8 @@ void _lock_profile_deregister_struct(int32_t, struct lo= ck_profile_qhead *); _lock_profile_deregister_struct(type, &((ptr)->profile_head)) =20 extern int spinlock_profile_control(struct xen_sysctl_lockprof_op *pc); -extern void spinlock_profile_printall(unsigned char key); -extern void spinlock_profile_reset(unsigned char key); +extern void cf_check spinlock_profile_printall(unsigned char key); +extern void cf_check spinlock_profile_reset(unsigned char key); =20 #else =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932036; cv=none; d=zohomail.com; s=zohoarc; b=j3WiABNj//4smgn/bpRBZ0gjukd2wGwTV0QmW9AI3Btr5/bhMdwZnv4YU+yKNO0dhCndkH3zWYeez/eZeh7H7q0BCTrFXCShoTuzzJ6ibjKYxZo3yyPhED4pphx/Ri+jtguzgu6HtcaCAPTQZIj3xyopzNHrBS50NOcBbC2zUYw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932036; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=75h8D+pg/t78GOFCTlqIStbgtSvnK53iZZnuVgnOD50=; b=kDjEyx4MxeHpGV+ApqkKt3jeYdmgPMSAf2qWY6qHvpWydEOFe5CQC0UHYQkVnzGi2cEtfDUgtpbYVxZet1pCE1wAabXm9A2NMHAtT2saVmeoy586Eq0RRlfO2yf/0DWnUxv5j/iWcSe2IkrCG8ywiUKk6HqKIQrac9Lt7tQoJxM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932036444463.6423976630423; Fri, 26 Nov 2021 05:07:16 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232780.403783 (Exim 4.92) (envelope-from ) id 1mqawN-0003NQ-V8; Fri, 26 Nov 2021 13:06:59 +0000 Received: by outflank-mailman (output) from mailman id 232780.403783; Fri, 26 Nov 2021 13:06:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawN-0003KB-Ia; Fri, 26 Nov 2021 13:06:59 +0000 Received: by outflank-mailman (input) for mailman id 232780; Fri, 26 Nov 2021 13:06:57 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavh-0003W9-L7 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:17 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a2b13141-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:16 +0100 (CET) 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: a2b13141-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931976; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Or7hnmv/3zwwTutpx5mxBrC73JF1NuKmpQ2hWXjITFk=; b=WwlgTmIrMqDklSCfrAWUAxuMIjgc1k2ylcDKe446b05ddgQah7HPmXAL XfmZ3JHr5qrJ++z1esZlB62L7yQl8melDDoBea5+wEL+/5qlZzZQ2Le4E lu37Eoe8FDoPDjqWr4iDuXlCsdLoUo/EUH2WGBn1+J27uWHQp5LTitfe1 o=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 23k4lIiUYExCJAh8+kPkeaWlutL67lof2RrJj6EJMlCPthy+uEZkRTCvzfGjFOts2a0Jtq182H ViJiGHxlcUmW7kbznEed6LchSEEQzuidpW0TxAOtuvr1kvF3WEIO3OpEbhg/v+fEfpx17ksiXt 9nDNx4wbAzpA7Z73uuV0BPWJhx0EG/U1M/8iKbalhNwhYznNCsz5YpLjSn+I9AZkMmwp2Gs2Jq 7VPAbnW6EfbphkwmkSigxGpOaDZIPmRGwt1SNH/HwVezoeLefYCkRaTJqTrBZ57JPfGYVE9PjE 36ExQSQp1Z1jwhC4gEzPrmXr X-SBRS: 5.1 X-MesageID: 58635067 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:olcMO6xfdXs1XaBCFe56t+fCwSrEfRIJ4+MujC+fZmUNrF6WrkUCy TRKCmzQO/aOYTb2KYsibIuz/B9S65PVmIdrQVZsrSAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAuLeNYYH1500s6wrRn2tQAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt/Zol ZZHp5e0cCA0HajtnfsFSTt+LRgraMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVoru0lINPmI8U0vXZ4wCuCJf0nXYrCU+PB4towMDIY25AQRquGO ZVxhTxHaibvUxBSO3crBZtho8yMh13ETmRapwfAzUYwyzeKl1EguFT3C/LKfvSaSMMTmVyXz krE4mD4DxcyJNGZjz2f/RqEnfTTlCn2XIYTEryQ9fNwhlCXgGsJB3U+RVa95PW0lEO6c9ZeM FAPvDojq7Ao806mRcW7WAe3yFamlBMBX9tbE8Uh9RqAjKHT5m6k6nMsF2AbLoZ87YlvGGJsh gThc87V6SJHlqTICniP/bOtii6RPAkQMncYRwk6dF5QizX8m70bghXKR9dlNae6iNzpBD39q wy3QDgCa6Y71pBSifjilbzTq3f1/8WSEFZpjunCdjv9tlsRWWKzW2C/BbE3B95kJZ3RcFSOt WNsdyO2vLFXVsHleMBgrYww8FCVCxStbGK0bb1HRcBJG9GRF5iLJts4DNZWfhoBDyr8UWW1C HI/QCsIjHOpAFOkbLVsf6W6ANkwwK7rGLzND66PMYoQP8cgKFHbp0mCgHJ8OUi2yyDAdollZ P+mnTuEVy5GWcyLMhLqLwvi7VPb7n9nnj6CLXwK5x+mzaCfdBaopUQtazOzghQCxPrc+m39q o8HX+PTkkk3eLCuM0H/rN9IRXhXfCdTOHwDg5EOHgJ1ClE9Qz9J5j646e5JRrGJaIwJzLqVp S/kBRcDoLc97FWeQTi3hrlYQOuHdf5CQbgTZkTA5H6khCouZ5iB9qAae8dldLUr7rU7n/V1U +MEa4OLBfEWEmbL/DEUbJ/cqo1+dUv02VLSbnT9ODVvLYR9QwHp+8P/ele9/ic5ESfq59A1p Ket112HTMNbFRhiFsvfdNmm00i14SoGgOt3UkaReotTdUzg/ZJEMSv0ivNrccgAJQ+anmmR1 hqMAAderu7I+tdn/N7MjKGCjoGoD+ohQRYKQziFte67bHCI8HCizIlMVPezUQrcDG6kqr+/Y eh1zu3nNKFVllh9rIchQa1gyrgz5oWzquYCnBhkBnjCc3+iFqhkfiudxcBKu6BAmu1ZtA+xV h7d89VWI+zUasbsEVpXLws5dOWTk/oTn2CKv/gyJUz74g5x/aaGDhoOb0Xd1nQFIesnKp4hz McgpNUSul62hRcdO9qbijxZqjaXJXsaXqR77pwXDecHUObwJo2utXAENhLL3Q== IronPort-HdrOrdr: A9a23:3XVoCaBQSPyF5+flHemW55DYdb4zR+YMi2TC1yhKKCC9Ffbo7/ xG/c5rrCMc5wxhO03I9eruBEDEewK5yXcX2/h2AV7BZniFhILAFugLhuGOrwEIWReOkdK1vZ 0QCJSWY+eRMbEVt6jHCXGDYrMd/OU= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58635067" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 21/65] xen/vpci: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:02 +0000 Message-ID: <20211126123446.32324-22-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932038360100007 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/drivers/vpci/header.c | 18 +++++++++--------- xen/drivers/vpci/msi.c | 42 +++++++++++++++++++++--------------------- xen/drivers/vpci/msix.c | 20 ++++++++++---------- xen/drivers/vpci/vpci.c | 16 ++++++++-------- xen/include/xen/vpci.h | 8 ++++---- 5 files changed, 52 insertions(+), 52 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index 40ff79c33f8f..a1c928a0d26f 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -33,8 +33,8 @@ struct map_data { bool map; }; =20 -static int map_range(unsigned long s, unsigned long e, void *data, - unsigned long *c) +static int cf_check map_range( + unsigned long s, unsigned long e, void *data, unsigned long *c) { const struct map_data *map =3D data; int rc; @@ -332,8 +332,8 @@ static int modify_bars(const struct pci_dev *pdev, uint= 16_t cmd, bool rom_only) return 0; } =20 -static void cmd_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t cmd, void *data) +static void cf_check cmd_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t cmd, void *data) { uint16_t current_cmd =3D pci_conf_read16(pdev->sbdf, reg); =20 @@ -353,8 +353,8 @@ static void cmd_write(const struct pci_dev *pdev, unsig= ned int reg, pci_conf_write16(pdev->sbdf, reg, cmd); } =20 -static void bar_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t val, void *data) +static void cf_check bar_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { struct vpci_bar *bar =3D data; bool hi =3D false; @@ -397,8 +397,8 @@ static void bar_write(const struct pci_dev *pdev, unsig= ned int reg, pci_conf_write32(pdev->sbdf, reg, val); } =20 -static void rom_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t val, void *data) +static void cf_check rom_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { struct vpci_header *header =3D &pdev->vpci->header; struct vpci_bar *rom =3D data; @@ -445,7 +445,7 @@ static void rom_write(const struct pci_dev *pdev, unsig= ned int reg, rom->addr =3D val & PCI_ROM_ADDRESS_MASK; } =20 -static int init_bars(struct pci_dev *pdev) +static int cf_check init_bars(struct pci_dev *pdev) { uint16_t cmd; uint64_t addr, size; diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c index 5757a7aed20f..8f2b59e61aa4 100644 --- a/xen/drivers/vpci/msi.c +++ b/xen/drivers/vpci/msi.c @@ -22,8 +22,8 @@ =20 #include =20 -static uint32_t control_read(const struct pci_dev *pdev, unsigned int reg, - void *data) +static uint32_t cf_check control_read( + const struct pci_dev *pdev, unsigned int reg, void *data) { const struct vpci_msi *msi =3D data; =20 @@ -34,8 +34,8 @@ static uint32_t control_read(const struct pci_dev *pdev, = unsigned int reg, (msi->address64 ? PCI_MSI_FLAGS_64BIT : 0); } =20 -static void control_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t val, void *data) +static void cf_check control_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { struct vpci_msi *msi =3D data; unsigned int vectors =3D min_t(uint8_t, @@ -89,16 +89,16 @@ static void update_msi(const struct pci_dev *pdev, stru= ct vpci_msi *msi) } =20 /* Handlers for the address field (32bit or low part of a 64bit address). = */ -static uint32_t address_read(const struct pci_dev *pdev, unsigned int reg, - void *data) +static uint32_t cf_check address_read( + const struct pci_dev *pdev, unsigned int reg, void *data) { const struct vpci_msi *msi =3D data; =20 return msi->address; } =20 -static void address_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t val, void *data) +static void cf_check address_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { struct vpci_msi *msi =3D data; =20 @@ -110,16 +110,16 @@ static void address_write(const struct pci_dev *pdev,= unsigned int reg, } =20 /* Handlers for the high part of a 64bit address field. */ -static uint32_t address_hi_read(const struct pci_dev *pdev, unsigned int r= eg, - void *data) +static uint32_t cf_check address_hi_read( + const struct pci_dev *pdev, unsigned int reg, void *data) { const struct vpci_msi *msi =3D data; =20 return msi->address >> 32; } =20 -static void address_hi_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t val, void *data) +static void cf_check address_hi_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { struct vpci_msi *msi =3D data; =20 @@ -131,16 +131,16 @@ static void address_hi_write(const struct pci_dev *pd= ev, unsigned int reg, } =20 /* Handlers for the data field. */ -static uint32_t data_read(const struct pci_dev *pdev, unsigned int reg, - void *data) +static uint32_t cf_check data_read( + const struct pci_dev *pdev, unsigned int reg, void *data) { const struct vpci_msi *msi =3D data; =20 return msi->data; } =20 -static void data_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t val, void *data) +static void cf_check data_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { struct vpci_msi *msi =3D data; =20 @@ -150,16 +150,16 @@ static void data_write(const struct pci_dev *pdev, un= signed int reg, } =20 /* Handlers for the MSI mask bits. */ -static uint32_t mask_read(const struct pci_dev *pdev, unsigned int reg, - void *data) +static uint32_t cf_check mask_read( + const struct pci_dev *pdev, unsigned int reg, void *data) { const struct vpci_msi *msi =3D data; =20 return msi->mask; } =20 -static void mask_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t val, void *data) +static void cf_check mask_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { struct vpci_msi *msi =3D data; uint32_t dmask =3D msi->mask ^ val; @@ -182,7 +182,7 @@ static void mask_write(const struct pci_dev *pdev, unsi= gned int reg, msi->mask =3D val; } =20 -static int init_msi(struct pci_dev *pdev) +static int cf_check init_msi(struct pci_dev *pdev) { uint8_t slot =3D PCI_SLOT(pdev->devfn), func =3D PCI_FUNC(pdev->devfn); unsigned int pos =3D pci_find_cap_offset(pdev->seg, pdev->bus, slot, f= unc, diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c index 846f1b8d7038..2ab4079412f2 100644 --- a/xen/drivers/vpci/msix.c +++ b/xen/drivers/vpci/msix.c @@ -27,8 +27,8 @@ ((addr) >=3D vmsix_table_addr(vpci, nr) && = \ (addr) < vmsix_table_addr(vpci, nr) + vmsix_table_size(vpci, nr)) =20 -static uint32_t control_read(const struct pci_dev *pdev, unsigned int reg, - void *data) +static uint32_t cf_check control_read( + const struct pci_dev *pdev, unsigned int reg, void *data) { const struct vpci_msix *msix =3D data; =20 @@ -65,8 +65,8 @@ static void update_entry(struct vpci_msix_entry *entry, entry->updated =3D false; } =20 -static void control_write(const struct pci_dev *pdev, unsigned int reg, - uint32_t val, void *data) +static void cf_check control_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { struct vpci_msix *msix =3D data; bool new_masked =3D val & PCI_MSIX_FLAGS_MASKALL; @@ -156,7 +156,7 @@ static struct vpci_msix *msix_find(const struct domain = *d, unsigned long addr) return NULL; } =20 -static int msix_accept(struct vcpu *v, unsigned long addr) +static int cf_check msix_accept(struct vcpu *v, unsigned long addr) { return !!msix_find(v->domain, addr); } @@ -182,8 +182,8 @@ static struct vpci_msix_entry *get_entry(struct vpci_ms= ix *msix, return &msix->entries[(addr - start) / PCI_MSIX_ENTRY_SIZE]; } =20 -static int msix_read(struct vcpu *v, unsigned long addr, unsigned int len, - unsigned long *data) +static int cf_check msix_read( + struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *d= ata) { const struct domain *d =3D v->domain; struct vpci_msix *msix =3D msix_find(d, addr); @@ -259,8 +259,8 @@ static int msix_read(struct vcpu *v, unsigned long addr= , unsigned int len, return X86EMUL_OKAY; } =20 -static int msix_write(struct vcpu *v, unsigned long addr, unsigned int len, - unsigned long data) +static int cf_check msix_write( + struct vcpu *v, unsigned long addr, unsigned int len, unsigned long da= ta) { const struct domain *d =3D v->domain; struct vpci_msix *msix =3D msix_find(d, addr); @@ -428,7 +428,7 @@ int vpci_make_msix_hole(const struct pci_dev *pdev) return 0; } =20 -static int init_msix(struct pci_dev *pdev) +static int cf_check init_msix(struct pci_dev *pdev) { struct domain *d =3D pdev->domain; uint8_t slot =3D PCI_SLOT(pdev->devfn), func =3D PCI_FUNC(pdev->devfn); diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c index 657697fe3406..d21264e34edc 100644 --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -106,25 +106,25 @@ static int vpci_register_cmp(const struct vpci_regist= er *r1, } =20 /* Dummy hooks, writes are ignored, reads return 1's */ -static uint32_t vpci_ignored_read(const struct pci_dev *pdev, unsigned int= reg, - void *data) +static uint32_t cf_check vpci_ignored_read( + const struct pci_dev *pdev, unsigned int reg, void *data) { return ~(uint32_t)0; } =20 -static void vpci_ignored_write(const struct pci_dev *pdev, unsigned int re= g, - uint32_t val, void *data) +static void cf_check vpci_ignored_write( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) { } =20 -uint32_t vpci_hw_read16(const struct pci_dev *pdev, unsigned int reg, - void *data) +uint32_t cf_check vpci_hw_read16( + const struct pci_dev *pdev, unsigned int reg, void *data) { return pci_conf_read16(pdev->sbdf, reg); } =20 -uint32_t vpci_hw_read32(const struct pci_dev *pdev, unsigned int reg, - void *data) +uint32_t cf_check vpci_hw_read32( + const struct pci_dev *pdev, unsigned int reg, void *data) { return pci_conf_read32(pdev->sbdf, reg); } diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index 9ea66e033f11..68ae06067031 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -46,10 +46,10 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsi= gned int size, uint32_t data); =20 /* Passthrough handlers. */ -uint32_t vpci_hw_read16(const struct pci_dev *pdev, unsigned int reg, - void *data); -uint32_t vpci_hw_read32(const struct pci_dev *pdev, unsigned int reg, - void *data); +uint32_t cf_check vpci_hw_read16( + const struct pci_dev *pdev, unsigned int reg, void *data); +uint32_t cf_check vpci_hw_read32( + const struct pci_dev *pdev, unsigned int reg, void *data); =20 /* * Check for pending vPCI operations on this vcpu. Returns true if the vcpu --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931921; cv=none; d=zohomail.com; s=zohoarc; b=ZTucvvO7jX9zkKsmJ/+LP+ciXnLq59QUhAJVbZzNC3RWcMvxKuFkL8X/qeuNF2FFoxVdSJpYPF8ohifg8spaS9KaFxeW/fa7jQurzOl0hEKFh5cYZbggm1SdZgzSOKwlH8RlDv3uy1zFxH/2hJj81z/mo+sCgq5A3xYFX+PLlE4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931921; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+k8YXmPD28IhbkuEsYbUygStcgWnfV1k8TrIbEf1b0k=; b=jniEXg1GgGR3zWUI5bolIlKfunBIC+2ojnY6PAEO/zS5DZsgJJ3OL+ARoa5wHv792D73i9TjY2/P4K2bHAWz2LWMOVnF7d2ugWHC4QPqEERQy/nz+L5caI12DmCbamI3wXt8PdLTq4/RlqWgZSh4Efd/3Rwl0JJ3HbG1bbAxPgg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931921132471.01469396311415; Fri, 26 Nov 2021 05:05:21 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232762.403723 (Exim 4.92) (envelope-from ) id 1mqauY-000738-Um; Fri, 26 Nov 2021 13:05:06 +0000 Received: by outflank-mailman (output) from mailman id 232762.403723; Fri, 26 Nov 2021 13:05:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauY-00071M-Lu; Fri, 26 Nov 2021 13:05:06 +0000 Received: by outflank-mailman (input) for mailman id 232762; Fri, 26 Nov 2021 13:05:04 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauV-0003W9-UC for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:04 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7790ee42-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:02 +0100 (CET) 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: 7790ee42-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931902; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=68x0fT4tZlqz9kHnlGXMQc+oz8hTkbs5wEWSP4Ikepk=; b=L2hevmt+OBV/h2oFXjxZk53rZkomfGfTElgO1w1Cvz3/QDRb8my2v6yQ 7vGcJX4IMvMcGN2M97xETiv01Q6K8AxGfj3Mn3cpgvU49FGkMTi/JSFwD EEJnvptprbtTBEPGB6YrsQ216aLBS6K2Lkft/vWTfEpwxbPGK2q4dG5D6 A=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 7oAFDYuEYgaCKzyUVMpfzCGZeKaLzz0oIodgWpZhGW06SdI24LD3zuOxByjunmQjbb+ySe7W3J TumNNC8JrmLf1zGvEJq05WqtE/26F0VyPyVuIEtdmPKxYgCQcTGJqVEQrNm7Crk43MvtCPqnji GyjmzVAK3r0L9zImEWftvgsoqKHcnqCE0z1ooATRWTibo+nr6j8zhcUUh+kCXR8Bojj6NhOYk7 O2LuP2mYoLEqXazuhI9lxC9SV4Viqa8OdXLQqltH9OSkC52uqW53iud/zAz8wiJMu3f8FxC9xN 4mOWzZZtRJZdsHHsaoaAYpON X-SBRS: 5.1 X-MesageID: 58676346 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:RqW/8a5TWXtcczz7n6KgkAxRtM3AchMFZxGqfqrLsTDasY5as4F+v mIcWGGFMq6OZ2fzKNF0Ot+08kJXvZHRmtZnSgtsqi8yHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z9 /B2l5mQSVsSZYKdwdwtdhdfM3hkMvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTaiBO ZFFN1KDajzkQC0IEU0GCqkTo+GiqWPlchRWmg2K8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u12bkBhAXMvSPxDzD9Wij7sfUhj/yUo8WELy+99ZpjUeVy2hVDwcZPXOrrP/8hkOgVtZ3L 00P5jFovaU07FasTNT2Q1u/unHsljw2VsdUEuY6wBqQ0aeS6AGcblXoVRYYNoZg7pVvA2V3i BnZxLsFGACDrpWqbEm/85eU8QjpFnlMFV8naygkFBEKtoyLTJ4IsjrDSdNqEaiQh9LzGC3tz z3ikBXSl4n/nuZQifzloAmvbyaE48GQE1Vrvlm/sneNt1shPOaYi5qUBU83BBqqBKKQVRG/s XcNgKByB8heXMjWxERhrAjgdYxFBspp0hWA3jaD/LF7rlxBHkJPm6gLu1mSw28zb645lcfBO hO7hO+ozMY70IGWRaF2eZmtLM8h0LLtE9/oPtiNMIERMsYsK17bon01DaJ144wLuBN3+U3YE c3GGftA8F5AUfg3pNZIb7t1PUAXKtAWmjqIGMGTI+WP2ruCfn+FIYrpw3PVBt3VGJis+V2Pm /4GbpPi40wGDIXWP3mGmaZOfAtiBSVqWvjLRzl/K7frzvxOQzp6VZc8ANoJJuRYokiivruSo yzmBBYHkAGXaL+uAVziV02PoYjHBf5XxU/X9wR2Vbpx83R8M4up8okFcJ47Iesu+OB5lKYmR PgZYcSQRP9IT22fqTgaaJD8qq1kdQiq2l3Sb3b0PmBncs4yXRHN9//lYhDrqHsEAB2ouJZsu LanzA7aH8YOHlwwEMbMZfuz5FqtpnxByvlqVk7FL4ALKkXh+YRnMQLrifozL51eIBnP3GLCh Q2XHQ0Zta/GpIpsqIvFgqWNroGIFepiHxUFQzmHvOjubSSDpzit245NVuqMbAvxbmKs9fXwf /hRwtH9LOYDwARAvb1jHus51qk5/dbu+eNXl1w2AHXRYl23Ibp8OX3aj9JXv6hAy7IF6wu7X kWDpotTNbmTYZ63FVcQIEwub/iZ1OFSkT7XtKxnLEL/7S5x3byGTUQNYEXc1H0DdON4YNE/3 OMsmM8K8Aju2BMlP+GPgj1Q62nRfGcLVL8qt81CDYLm4ubxJoquvXAI5vfK3ayy IronPort-HdrOrdr: A9a23:RzLJtawemZW0Xs9NectoKrPwFL1zdoMgy1knxilNoRw8SKKlfq eV7Y0mPH7P+VAssR4b+exoVJPtfZqYz+8R3WBzB8bEYOCFghrKEGgK1+KLqFeMJ8S9zJ846U 4JSdkHNDSaNzlHZKjBjzVQa+xQouW6zA== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676346" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 22/65] xen/decompress: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:03 +0000 Message-ID: <20211126123446.32324-23-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931922378100005 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- tools/libs/guest/xg_dom_decompress_unsafe.h | 4 ++++ xen/common/bunzip2.c | 2 +- xen/common/decompress.c | 2 +- xen/common/unlzma.c | 2 +- xen/common/zstd/zstd_common.c | 4 ++-- xen/common/zstd/zstd_internal.h | 4 ++-- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tools/libs/guest/xg_dom_decompress_unsafe.h b/tools/libs/guest= /xg_dom_decompress_unsafe.h index 4e0bf23aa587..98b8a8a40971 100644 --- a/tools/libs/guest/xg_dom_decompress_unsafe.h +++ b/tools/libs/guest/xg_dom_decompress_unsafe.h @@ -8,6 +8,10 @@ typedef int decompress_fn(unsigned char *inbuf, unsigned i= nt len, void (*error)(const char *x)); #endif =20 +#ifndef cf_check +#define cf_check +#endif + int xc_dom_decompress_unsafe( decompress_fn fn, struct xc_dom_image *dom, void **blob, size_t *size) __attribute__((visibility("internal"))); diff --git a/xen/common/bunzip2.c b/xen/common/bunzip2.c index 2087cfbbedc8..782b589a8b01 100644 --- a/xen/common/bunzip2.c +++ b/xen/common/bunzip2.c @@ -607,7 +607,7 @@ static int __init read_bunzip(struct bunzip_data *bd, u= nsigned char *outbuf, int goto decode_next_byte; } =20 -static int __init nofill(void *buf, unsigned int len) +static int __init cf_check nofill(void *buf, unsigned int len) { return -1; } diff --git a/xen/common/decompress.c b/xen/common/decompress.c index 79e60f4802d5..989336983f61 100644 --- a/xen/common/decompress.c +++ b/xen/common/decompress.c @@ -3,7 +3,7 @@ #include #include =20 -static void __init error(const char *msg) +static void __init cf_check error(const char *msg) { printk("%s\n", msg); } diff --git a/xen/common/unlzma.c b/xen/common/unlzma.c index d0ef78eef0d1..6cd99023adf6 100644 --- a/xen/common/unlzma.c +++ b/xen/common/unlzma.c @@ -76,7 +76,7 @@ struct rc { #define RC_MODEL_TOTAL_BITS 11 =20 =20 -static int __init nofill(void *buffer, unsigned int len) +static int __init cf_check nofill(void *buffer, unsigned int len) { return -1; } diff --git a/xen/common/zstd/zstd_common.c b/xen/common/zstd/zstd_common.c index 9a85e938cdd6..5c44e5db7671 100644 --- a/xen/common/zstd/zstd_common.c +++ b/xen/common/zstd/zstd_common.c @@ -54,12 +54,12 @@ void *__init ZSTD_stackAllocAll(void *opaque, size_t *s= ize) return stack_push(stack, *size); } =20 -void *__init ZSTD_stackAlloc(void *opaque, size_t size) +void *__init cf_check ZSTD_stackAlloc(void *opaque, size_t size) { ZSTD_stack *stack =3D (ZSTD_stack *)opaque; return stack_push(stack, size); } -void __init ZSTD_stackFree(void *opaque, void *address) +void __init cf_check ZSTD_stackFree(void *opaque, void *address) { (void)opaque; (void)address; diff --git a/xen/common/zstd/zstd_internal.h b/xen/common/zstd/zstd_interna= l.h index b7dd14f6ce79..94f8c586220e 100644 --- a/xen/common/zstd/zstd_internal.h +++ b/xen/common/zstd/zstd_internal.h @@ -351,8 +351,8 @@ typedef struct { ZSTD_customMem ZSTD_initStack(void *workspace, size_t workspaceSize); =20 void *ZSTD_stackAllocAll(void *opaque, size_t *size); -void *ZSTD_stackAlloc(void *opaque, size_t size); -void ZSTD_stackFree(void *opaque, void *address); +void *cf_check ZSTD_stackAlloc(void *opaque, size_t size); +void cf_check ZSTD_stackFree(void *opaque, void *address); =20 /*=3D=3D=3D=3D=3D=3D common function =3D=3D=3D=3D=3D=3D*/ =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932038; cv=none; d=zohomail.com; s=zohoarc; b=OI58NNOB9OzFpnLmJnPBmu0BIiyAfoMow1tHnVYwdeSdg6D2a5ytWkreZ4DdSPg/NtYmKO2bMwb9cfzHBi3HNX93PiykrazlX6hagWEcFzB0I7J/POj0C0X+oxRadLA6koY6/fSGR7hj5lIi2SLa0fdeiWdK5qSJ7eAvhH6bJ3k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932038; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=d3RXJra1BeQdf5yeJR7nXunOFFDIei/A2lInpE3YV7I=; b=f5bExQc0geB0ZD/eXz6ROpS0dncLYL8O4CmoZpoV0IVCinU1mLDpNYvIn7I3oj7dqI4rC6tWDSY5sGwjwqd2XXUFN6YJGgKLKdmTDq64ATdU29kcNJKfM97PGGA6pMFoDukvdFp6oQ1wl/ayQgoaZohtaNTQevS/5Wh3JtFydMQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932038465311.85423250498707; Fri, 26 Nov 2021 05:07:18 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232771.403738 (Exim 4.92) (envelope-from ) id 1mqawI-0002Lw-Hg; Fri, 26 Nov 2021 13:06:54 +0000 Received: by outflank-mailman (output) from mailman id 232771.403738; Fri, 26 Nov 2021 13:06:54 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawI-0002Ln-E4; Fri, 26 Nov 2021 13:06:54 +0000 Received: by outflank-mailman (input) for mailman id 232771; Fri, 26 Nov 2021 13:06:53 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavt-0003W9-Nt for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:30 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a9dc9b72-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:27 +0100 (CET) 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: a9dc9b72-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931986; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gXVxAw7BmbfGq+9eyJe/9PGTuBcOHQvuNt32/DJjUIQ=; b=gIASyNvmuYsRTvLtPAaJlRvtC/7F1tF+EQIcvspfW8d4z6IriwB5IQfZ t6zXVSzcAUdwyMnyBZ9mZPKOxqTLMFzy8U9R4NXhReJVG79ZeVD1jYcl3 LLyxgmJiZF3pWp5gXopV6Ac14hzM6SsbNWelYvfv6Oq4W1fFrDD/s1tkb w=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: tobCbH1cBoF1C+kEiGzXYxrI8P2jXC8RHfJcCmvYadfoTtXaTWk9g49l8HqtT9CidJfDxSUu4+ 0zFtVMVQQeQzKtkOGHlQsvqGdUEJjMqseQ7uQVfInxTsQRuHDiIZqCItnF15zo5rV53pvBSyLN IbSvp7v+zmEXQGEkTFnPbvKAcQiZbj1xgq0pRHGE6J62WdrtmnzP7OPibMFmECmMptzvAdbeyW hw7WxNwag/ftcftuCfaEA4CG9PG2QcCdvKcxTiwY+lsJ0/PdpPQFqS2eRNUpC/NAHp5PPPu4yL yqWNl42rIyiO0dLCgSfDD27w X-SBRS: 5.1 X-MesageID: 58193879 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:HTdJ4q91aMj+emmEYtZ2DrUDdXmTJUtcMsCJ2f8bNWPcYEJGY0x3y DFMWGqHaf2CNjbzco0kPdvn9U1S6pfRmNZqTFY5pX88E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGmeIdA970Ug6wrdj3NYy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhj7 9gdh8eXET4AM/brmvYdXDJzEj1HaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguwKKsXxMZxZkXZn1TzDVt4tQIzZQrWM7thdtNs1rp0eRKeFN 5VIAdZpREzaTAdVeVE9Ma0dntutq3znKCNzi2vA8MLb5ECMlVcsgdABKuH9ZdiiVchT2EGCq Qru/Xn9AxwcHMySz3yC6H3ErvTUgSrxVYYWFbu53v1nmluewioUEhJ+fUu2p7y1h1CzX/pbK lcI4Ww+oK4q7kupQ9LhGRqirxasnDQRRt5RGO0S8xyWx+zf5APxO4QfZmcfMpp87pZwHGF0k A/S9z/0OdBxmK+yRCKvrZDMlBq/Yg8XP28NTgQFUTJQtrEPv7oPph7IS99iFou8gdv0BSz8z li2kcQuu1kApZVVjvvmpDgrlxrp/8GUFVBtum07S0r8tlshDLNJcbBE/rQyARxoCI+CBmeMs 3Ef8yR1xLBfVMrd/MBhrQhkIV1I2xpnGGGD6bKMN8N4n9hIx5JFVdsLiN2ZDB00WvvogRezP CfuVfp5vfe/xkeCY65teJ6WAM8316XmHtmNfqmKNYUePMUuJVPZoHoGiausM4bFyxNEfUYXY 8rzTCpRJSxCVfQPIMSeG4/xLoPHNghhnDiOFPgXPjys0KaEZW79dFv2GADmUwzN14vd+F+92 48Gb6OikkwDOMWjMni/2dNCdjgicClkba0aXuQKL4Zv1CI9Qzp/YxIQqJt8E7FYc1N9yr2Vo yrjAxAAkzISRxTvcG23V5yqU5u3Nb4XkJ7xFXZE0Y+A1ydxbICxwr0YcpdrL7Ar+PY6lax/T uUfetXGCfNKE2yV9zMYZJj7jYpjaBX02l7eY3v7OGAyL8x6WgjE2t74ZQ+zpiMAOTW66Jklq Lq62wKFHZdaH1Z+DNzbYe6Exk+quSRPg/p7WkbFe4EBeEjl/IVwBTb2i/s7f5MFJRnZn2PI3 AeKGxYI4+LKptZtotXOgKmFqaavEvd/QRUGTzWKs+7uOHCDrGS5wIJGXOKZRhznVTv5qPe4e OFY7/DgK/lbzlxEhJVxTuRwxqUk6tqx+7IDllZ4HG/GZkiAA697JiXUxtFGs6BAy+MLuQayX U7TqNBWNa/QZZHgGV8VYgEkcv6CxbcfnTyLtaY5J0Dz5SlW+rubUBoNY0nQ2XIFdLYlYpk4x eoBudIN713tgxUnBd+KkyRI+jneNXcHSagm6skXDYKDZtDHEb2ejUgw0hPL3aw= IronPort-HdrOrdr: A9a23:Uqh2BqMPDi15dMBcTvmjsMiBIKoaSvp037Eqv3oedfUzSL3gqy nOpoV86faaslYssR0b9exofZPwJE80lqQFhrX5X43SPzUO0VHAROoJgLcKgQeQfxEWntQtrZ uIGJIeNDSfNzdHZL7BkWuFL+o= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193879" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 23/65] xen/iommu: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:04 +0000 Message-ID: <20211126123446.32324-24-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932039472100011 AMD's parse_ppr_log_entry() has no external callers, so becomes static. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/common/compat/memory.c | 4 +- xen/drivers/passthrough/amd/iommu.h | 41 ++++++++-------- xen/drivers/passthrough/amd/iommu_init.c | 22 ++++----- xen/drivers/passthrough/amd/iommu_intr.c | 18 +++---- xen/drivers/passthrough/amd/iommu_map.c | 22 +++++---- xen/drivers/passthrough/amd/pci_amd_iommu.c | 32 ++++++------ xen/drivers/passthrough/pci.c | 7 +-- xen/drivers/passthrough/vtd/dmar.c | 3 +- xen/drivers/passthrough/vtd/extern.h | 36 +++++++------- xen/drivers/passthrough/vtd/intremap.c | 14 +++--- xen/drivers/passthrough/vtd/iommu.c | 75 +++++++++++++++----------= ---- xen/drivers/passthrough/vtd/qinval.c | 28 +++++------ 12 files changed, 153 insertions(+), 149 deletions(-) diff --git a/xen/common/compat/memory.c b/xen/common/compat/memory.c index ec8ba54bb66e..077ded4a754c 100644 --- a/xen/common/compat/memory.c +++ b/xen/common/compat/memory.c @@ -23,8 +23,8 @@ struct get_reserved_device_memory { unsigned int used_entries; }; =20 -static int get_reserved_device_memory(xen_pfn_t start, xen_ulong_t nr, - u32 id, void *ctxt) +static int cf_check get_reserved_device_memory( + xen_pfn_t start, xen_ulong_t nr, u32 id, void *ctxt) { struct get_reserved_device_memory *grdm =3D ctxt; uint32_t sbdf =3D PCI_SBDF3(grdm->map.dev.pci.seg, grdm->map.dev.pci.b= us, diff --git a/xen/drivers/passthrough/amd/iommu.h b/xen/drivers/passthrough/= amd/iommu.h index 99be9aafcc53..03811fedea57 100644 --- a/xen/drivers/passthrough/amd/iommu.h +++ b/xen/drivers/passthrough/amd/iommu.h @@ -236,25 +236,26 @@ int amd_iommu_init_late(void); int amd_iommu_update_ivrs_mapping_acpi(void); int cf_check iov_adjust_irq_affinities(void); =20 -int amd_iommu_quarantine_init(struct domain *d); +int cf_check amd_iommu_quarantine_init(struct domain *d); =20 /* mapping functions */ -int __must_check amd_iommu_map_page(struct domain *d, dfn_t dfn, - mfn_t mfn, unsigned int flags, - unsigned int *flush_flags); -int __must_check amd_iommu_unmap_page(struct domain *d, dfn_t dfn, - unsigned int *flush_flags); +int __must_check cf_check amd_iommu_map_page( + struct domain *d, dfn_t dfn, mfn_t mfn, unsigned int flags, + unsigned int *flush_flags); +int __must_check cf_check amd_iommu_unmap_page( + struct domain *d, dfn_t dfn, unsigned int *flush_flags); int __must_check amd_iommu_alloc_root(struct domain *d); int amd_iommu_reserve_domain_unity_map(struct domain *domain, const struct ivrs_unity_map *map, unsigned int flag); int amd_iommu_reserve_domain_unity_unmap(struct domain *d, const struct ivrs_unity_map *map); -int amd_iommu_get_reserved_device_memory(iommu_grdm_t *func, void *ctxt); -int __must_check amd_iommu_flush_iotlb_pages(struct domain *d, dfn_t dfn, - unsigned long page_count, - unsigned int flush_flags); -int __must_check amd_iommu_flush_iotlb_all(struct domain *d); +int cf_check amd_iommu_get_reserved_device_memory( + iommu_grdm_t *func, void *ctxt); +int __must_check cf_check amd_iommu_flush_iotlb_pages( + struct domain *d, dfn_t dfn, unsigned long page_count, + unsigned int flush_flags); +int __must_check cf_check amd_iommu_flush_iotlb_all(struct domain *d); =20 /* device table functions */ int get_dma_requestor_id(uint16_t seg, uint16_t bdf); @@ -282,21 +283,21 @@ void amd_iommu_flush_all_caches(struct amd_iommu *iom= mu); struct amd_iommu *find_iommu_for_device(int seg, int bdf); =20 /* interrupt remapping */ -bool iov_supports_xt(void); +bool cf_check iov_supports_xt(void); int amd_iommu_setup_ioapic_remapping(void); void *amd_iommu_alloc_intremap_table( const struct amd_iommu *, unsigned long **, unsigned int nr); -int amd_iommu_free_intremap_table( +int cf_check amd_iommu_free_intremap_table( const struct amd_iommu *, struct ivrs_mappings *, uint16_t); unsigned int amd_iommu_intremap_table_order( const void *irt, const struct amd_iommu *iommu); -void amd_iommu_ioapic_update_ire( +void cf_check amd_iommu_ioapic_update_ire( unsigned int apic, unsigned int reg, unsigned int value); -unsigned int amd_iommu_read_ioapic_from_ire( +unsigned int cf_check amd_iommu_read_ioapic_from_ire( unsigned int apic, unsigned int reg); -int amd_iommu_msi_msg_update_ire( +int cf_check amd_iommu_msi_msg_update_ire( struct msi_desc *msi_desc, struct msi_msg *msg); -int amd_setup_hpet_msi(struct msi_desc *msi_desc); +int cf_check amd_setup_hpet_msi(struct msi_desc *msi_desc); void cf_check amd_iommu_dump_intremap_tables(unsigned char key); =20 extern struct ioapic_sbdf { @@ -327,9 +328,9 @@ extern void *shared_intremap_table; extern unsigned long *shared_intremap_inuse; =20 /* power management support */ -void amd_iommu_resume(void); -int __must_check amd_iommu_suspend(void); -void amd_iommu_crash_shutdown(void); +void cf_check amd_iommu_resume(void); +int __must_check cf_check amd_iommu_suspend(void); +void cf_check amd_iommu_crash_shutdown(void); =20 /* guest iommu support */ #ifdef CONFIG_HVM diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthr= ough/amd/iommu_init.c index 34a9e49f1c5a..06b4d2b1fea0 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -258,8 +258,8 @@ static void register_iommu_exclusion_range(struct amd_i= ommu *iommu) writel(entry, iommu->mmio_base+IOMMU_EXCLUSION_BASE_LOW_OFFSET); } =20 -static void set_iommu_event_log_control(struct amd_iommu *iommu, - bool enable) +static void cf_check set_iommu_event_log_control( + struct amd_iommu *iommu, bool enable) { /* Reset head and tail pointer manually before enablement */ if ( enable ) @@ -275,8 +275,8 @@ static void set_iommu_event_log_control(struct amd_iomm= u *iommu, writeq(iommu->ctrl.raw, iommu->mmio_base + IOMMU_CONTROL_MMIO_OFFSET); } =20 -static void set_iommu_ppr_log_control(struct amd_iommu *iommu, - bool enable) +static void cf_check set_iommu_ppr_log_control( + struct amd_iommu *iommu, bool enable) { /* Reset head and tail pointer manually before enablement */ if ( enable ) @@ -527,7 +527,7 @@ static hw_irq_controller iommu_x2apic_type =3D { .set_affinity =3D set_x2apic_affinity, }; =20 -static void parse_event_log_entry(struct amd_iommu *iommu, u32 entry[]) +static void cf_check parse_event_log_entry(struct amd_iommu *iommu, u32 en= try[]) { u32 code; static const char *const event_str[] =3D { @@ -628,7 +628,7 @@ static void iommu_check_event_log(struct amd_iommu *iom= mu) spin_unlock_irqrestore(&iommu->lock, flags); } =20 -void parse_ppr_log_entry(struct amd_iommu *iommu, u32 entry[]) +static void cf_check parse_ppr_log_entry(struct amd_iommu *iommu, u32 entr= y[]) { =20 u16 device_id; @@ -1243,7 +1243,7 @@ static int __init alloc_ivrs_mappings(u16 seg) return 0; } =20 -static int __init amd_iommu_setup_device_table( +static int __init cf_check amd_iommu_setup_device_table( u16 seg, struct ivrs_mappings *ivrs_mappings) { struct amd_iommu_dte *dt =3D IVRS_MAPPINGS_DEVTAB(ivrs_mappings); @@ -1543,7 +1543,7 @@ static void invalidate_all_domain_pages(void) amd_iommu_flush_all_pages(d); } =20 -static int _invalidate_all_devices( +static int cf_check _invalidate_all_devices( u16 seg, struct ivrs_mappings *ivrs_mappings) { unsigned int bdf;=20 @@ -1569,14 +1569,14 @@ static void invalidate_all_devices(void) iterate_ivrs_mappings(_invalidate_all_devices); } =20 -int amd_iommu_suspend(void) +int cf_check amd_iommu_suspend(void) { amd_iommu_crash_shutdown(); =20 return 0; } =20 -void amd_iommu_crash_shutdown(void) +void cf_check amd_iommu_crash_shutdown(void) { struct amd_iommu *iommu; =20 @@ -1584,7 +1584,7 @@ void amd_iommu_crash_shutdown(void) disable_iommu(iommu); } =20 -void amd_iommu_resume(void) +void cf_check amd_iommu_resume(void) { struct amd_iommu *iommu; =20 diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthr= ough/amd/iommu_intr.c index e7804413c7f4..cebf9ceca74e 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -349,7 +349,7 @@ static int update_intremap_entry_from_ioapic( return 0; } =20 -void amd_iommu_ioapic_update_ire( +void cf_check amd_iommu_ioapic_update_ire( unsigned int apic, unsigned int reg, unsigned int value) { struct IO_APIC_route_entry old_rte =3D { 0 }; @@ -455,7 +455,7 @@ void amd_iommu_ioapic_update_ire( } } =20 -unsigned int amd_iommu_read_ioapic_from_ire( +unsigned int cf_check amd_iommu_read_ioapic_from_ire( unsigned int apic, unsigned int reg) { unsigned int idx; @@ -608,7 +608,7 @@ static struct amd_iommu *_find_iommu_for_device(int seg= , int bdf) return ERR_PTR(-EINVAL); } =20 -int amd_iommu_msi_msg_update_ire( +int cf_check amd_iommu_msi_msg_update_ire( struct msi_desc *msi_desc, struct msi_msg *msg) { struct pci_dev *pdev =3D msi_desc->dev; @@ -653,7 +653,7 @@ int amd_iommu_msi_msg_update_ire( return rc; } =20 -int amd_iommu_free_intremap_table( +int cf_check amd_iommu_free_intremap_table( const struct amd_iommu *iommu, struct ivrs_mappings *ivrs_mapping, uint16_t bdf) { @@ -727,7 +727,7 @@ void *amd_iommu_alloc_intremap_table( return tb; } =20 -bool __init iov_supports_xt(void) +bool __init cf_check iov_supports_xt(void) { unsigned int apic; =20 @@ -756,7 +756,7 @@ bool __init iov_supports_xt(void) return true; } =20 -int __init amd_setup_hpet_msi(struct msi_desc *msi_desc) +int __init cf_check amd_setup_hpet_msi(struct msi_desc *msi_desc) { const struct amd_iommu *iommu; spinlock_t *lock; @@ -826,9 +826,9 @@ static void dump_intremap_table(const struct amd_iommu = *iommu, } } =20 -static int dump_intremap_mapping(const struct amd_iommu *iommu, - struct ivrs_mappings *ivrs_mapping, - uint16_t unused) +static int cf_check dump_intremap_mapping( + const struct amd_iommu *iommu, struct ivrs_mappings *ivrs_mapping, + uint16_t unused) { unsigned long flags; =20 diff --git a/xen/drivers/passthrough/amd/iommu_map.c b/xen/drivers/passthro= ugh/amd/iommu_map.c index b0330157eab5..bf5df5fe5d9a 100644 --- a/xen/drivers/passthrough/amd/iommu_map.c +++ b/xen/drivers/passthrough/amd/iommu_map.c @@ -276,8 +276,9 @@ static int iommu_pde_from_dfn(struct domain *d, unsigne= d long dfn, return 0; } =20 -int amd_iommu_map_page(struct domain *d, dfn_t dfn, mfn_t mfn, - unsigned int flags, unsigned int *flush_flags) +int cf_check amd_iommu_map_page( + struct domain *d, dfn_t dfn, mfn_t mfn, unsigned int flags, + unsigned int *flush_flags) { struct domain_iommu *hd =3D dom_iommu(d); int rc; @@ -326,8 +327,8 @@ int amd_iommu_map_page(struct domain *d, dfn_t dfn, mfn= _t mfn, return 0; } =20 -int amd_iommu_unmap_page(struct domain *d, dfn_t dfn, - unsigned int *flush_flags) +int cf_check amd_iommu_unmap_page( + struct domain *d, dfn_t dfn, unsigned int *flush_flags) { unsigned long pt_mfn =3D 0; struct domain_iommu *hd =3D dom_iommu(d); @@ -370,9 +371,9 @@ static unsigned long flush_count(unsigned long dfn, uns= igned long page_count, return end - start; } =20 -int amd_iommu_flush_iotlb_pages(struct domain *d, dfn_t dfn, - unsigned long page_count, - unsigned int flush_flags) +int cf_check amd_iommu_flush_iotlb_pages( + struct domain *d, dfn_t dfn, unsigned long page_count, + unsigned int flush_flags) { unsigned long dfn_l =3D dfn_x(dfn); =20 @@ -410,7 +411,7 @@ int amd_iommu_flush_iotlb_pages(struct domain *d, dfn_t= dfn, return 0; } =20 -int amd_iommu_flush_iotlb_all(struct domain *d) +int cf_check amd_iommu_flush_iotlb_all(struct domain *d) { amd_iommu_flush_all_pages(d); =20 @@ -462,7 +463,8 @@ int amd_iommu_reserve_domain_unity_unmap(struct domain = *d, return rc; } =20 -int amd_iommu_get_reserved_device_memory(iommu_grdm_t *func, void *ctxt) +int cf_check amd_iommu_get_reserved_device_memory( + iommu_grdm_t *func, void *ctxt) { unsigned int seg =3D 0 /* XXX */, bdf; const struct ivrs_mappings *ivrs_mappings =3D get_ivrs_mappings(seg); @@ -537,7 +539,7 @@ int amd_iommu_get_reserved_device_memory(iommu_grdm_t *= func, void *ctxt) return 0; } =20 -int __init amd_iommu_quarantine_init(struct domain *d) +int __init cf_check amd_iommu_quarantine_init(struct domain *d) { struct domain_iommu *hd =3D dom_iommu(d); unsigned long end_gfn =3D diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/pass= through/amd/pci_amd_iommu.c index 9642bba43a26..e57f555d00d1 100644 --- a/xen/drivers/passthrough/amd/pci_amd_iommu.c +++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c @@ -197,7 +197,7 @@ int __init acpi_ivrs_init(void) return 0; } =20 -static int __init iov_detect(void) +static int __init cf_check iov_detect(void) { if ( !iommu_enable && !iommu_intremap ) return 0; @@ -217,7 +217,7 @@ static int __init iov_detect(void) return 0; } =20 -static int iov_enable_xt(void) +static int cf_check iov_enable_xt(void) { int rc; =20 @@ -253,7 +253,7 @@ int amd_iommu_alloc_root(struct domain *d) unsigned int __read_mostly amd_iommu_max_paging_mode =3D 6; int __read_mostly amd_iommu_min_paging_mode =3D 1; =20 -static int amd_iommu_domain_init(struct domain *d) +static int cf_check amd_iommu_domain_init(struct domain *d) { struct domain_iommu *hd =3D dom_iommu(d); =20 @@ -275,9 +275,9 @@ static int amd_iommu_domain_init(struct domain *d) return 0; } =20 -static int amd_iommu_add_device(u8 devfn, struct pci_dev *pdev); +static int cf_check amd_iommu_add_device(u8 devfn, struct pci_dev *pdev); =20 -static void __hwdom_init amd_iommu_hwdom_init(struct domain *d) +static void __hwdom_init cf_check amd_iommu_hwdom_init(struct domain *d) { const struct amd_iommu *iommu; =20 @@ -350,8 +350,9 @@ static void amd_iommu_disable_domain_device(const struc= t domain *domain, spin_unlock_irqrestore(&iommu->lock, flags); } =20 -static int reassign_device(struct domain *source, struct domain *target, - u8 devfn, struct pci_dev *pdev) +static int cf_check reassign_device( + struct domain *source, struct domain *target, u8 devfn, + struct pci_dev *pdev) { struct amd_iommu *iommu; int bdf, rc; @@ -404,9 +405,8 @@ static int reassign_device(struct domain *source, struc= t domain *target, return 0; } =20 -static int amd_iommu_assign_device(struct domain *d, u8 devfn, - struct pci_dev *pdev, - u32 flag) +static int cf_check amd_iommu_assign_device( + struct domain *d, u8 devfn, struct pci_dev *pdev, u32 flag) { struct ivrs_mappings *ivrs_mappings =3D get_ivrs_mappings(pdev->seg); int bdf =3D PCI_BDF2(pdev->bus, devfn); @@ -435,7 +435,7 @@ static int amd_iommu_assign_device(struct domain *d, u8= devfn, return rc; } =20 -static void amd_iommu_clear_root_pgtable(struct domain *d) +static void cf_check amd_iommu_clear_root_pgtable(struct domain *d) { struct domain_iommu *hd =3D dom_iommu(d); =20 @@ -444,13 +444,13 @@ static void amd_iommu_clear_root_pgtable(struct domai= n *d) spin_unlock(&hd->arch.mapping_lock); } =20 -static void amd_iommu_domain_destroy(struct domain *d) +static void cf_check amd_iommu_domain_destroy(struct domain *d) { iommu_identity_map_teardown(d); ASSERT(!dom_iommu(d)->arch.amd.root_table); } =20 -static int amd_iommu_add_device(u8 devfn, struct pci_dev *pdev) +static int cf_check amd_iommu_add_device(u8 devfn, struct pci_dev *pdev) { struct amd_iommu *iommu; u16 bdf; @@ -525,7 +525,7 @@ static int amd_iommu_add_device(u8 devfn, struct pci_de= v *pdev) return amd_iommu_setup_domain_device(pdev->domain, iommu, devfn, pdev); } =20 -static int amd_iommu_remove_device(u8 devfn, struct pci_dev *pdev) +static int cf_check amd_iommu_remove_device(u8 devfn, struct pci_dev *pdev) { struct amd_iommu *iommu; u16 bdf; @@ -562,7 +562,7 @@ static int amd_iommu_remove_device(u8 devfn, struct pci= _dev *pdev) return 0; } =20 -static int amd_iommu_group_id(u16 seg, u8 bus, u8 devfn) +static int cf_check amd_iommu_group_id(u16 seg, u8 bus, u8 devfn) { int bdf =3D PCI_BDF2(bus, devfn); =20 @@ -616,7 +616,7 @@ static void amd_dump_page_table_level(struct page_info = *pg, int level, unmap_domain_page(table_vaddr); } =20 -static void amd_dump_page_tables(struct domain *d) +static void cf_check amd_dump_page_tables(struct domain *d) { const struct domain_iommu *hd =3D dom_iommu(d); =20 diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 81ab09649cd0..d0069e93ba2f 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1029,7 +1029,7 @@ void pci_check_disable_device(u16 seg, u8 bus, u8 dev= fn) * scan pci devices to add all existed PCI devices to alldevs_list, * and setup pci hierarchy in array bus2bridge. */ -static int __init _scan_pci_devices(struct pci_seg *pseg, void *arg) +static int __init cf_check _scan_pci_devices(struct pci_seg *pseg, void *a= rg) { struct pci_dev *pdev; int bus, dev, func; @@ -1107,7 +1107,8 @@ static void __hwdom_init setup_one_hwdom_device(const= struct setup_hwdom *ctxt, ctxt->d->domain_id, err); } =20 -static int __hwdom_init _setup_hwdom_pci_devices(struct pci_seg *pseg, voi= d *arg) +static int __hwdom_init cf_check _setup_hwdom_pci_devices( + struct pci_seg *pseg, void *arg) { struct setup_hwdom *ctxt =3D arg; int bus, devfn; @@ -1264,7 +1265,7 @@ bool_t pcie_aer_get_firmware_first(const struct pci_d= ev *pdev) } #endif =20 -static int _dump_pci_devices(struct pci_seg *pseg, void *arg) +static int cf_check _dump_pci_devices(struct pci_seg *pseg, void *arg) { struct pci_dev *pdev; =20 diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/v= td/dmar.c index b8e91f5be1ae..63f8642e126a 100644 --- a/xen/drivers/passthrough/vtd/dmar.c +++ b/xen/drivers/passthrough/vtd/dmar.c @@ -1046,7 +1046,8 @@ bool_t __init platform_supports_x2apic(void) return cpu_has_x2apic && ((dmar_flags & mask) =3D=3D ACPI_DMAR_INTR_RE= MAP); } =20 -int intel_iommu_get_reserved_device_memory(iommu_grdm_t *func, void *ctxt) +int cf_check intel_iommu_get_reserved_device_memory( + iommu_grdm_t *func, void *ctxt) { struct acpi_rmrr_unit *rmrr, *rmrr_cur =3D NULL; unsigned int i; diff --git a/xen/drivers/passthrough/vtd/extern.h b/xen/drivers/passthrough= /vtd/extern.h index 8c5e8397fd7e..b42e68b125c0 100644 --- a/xen/drivers/passthrough/vtd/extern.h +++ b/xen/drivers/passthrough/vtd/extern.h @@ -33,9 +33,9 @@ void print_iommu_regs(struct acpi_drhd_unit *drhd); void print_vtd_entries(struct vtd_iommu *iommu, int bus, int devfn, u64 gm= fn); keyhandler_fn_t cf_check vtd_dump_iommu_info; =20 -bool intel_iommu_supports_eim(void); -int intel_iommu_enable_eim(void); -void intel_iommu_disable_eim(void); +bool cf_check intel_iommu_supports_eim(void); +int cf_check intel_iommu_enable_eim(void); +void cf_check intel_iommu_disable_eim(void); =20 int enable_qinval(struct vtd_iommu *iommu); void disable_qinval(struct vtd_iommu *iommu); @@ -49,15 +49,13 @@ int iommu_flush_iec_global(struct vtd_iommu *iommu); int iommu_flush_iec_index(struct vtd_iommu *iommu, u8 im, u16 iidx); void clear_fault_bits(struct vtd_iommu *iommu); =20 -int __must_check vtd_flush_context_reg(struct vtd_iommu *iommu, uint16_t d= id, - uint16_t source_id, - uint8_t function_mask, uint64_t typ= e, - bool flush_non_present_entry); -int __must_check vtd_flush_iotlb_reg(struct vtd_iommu *iommu, uint16_t did, - uint64_t addr, unsigned int size_orde= r, - uint64_t type, - bool flush_non_present_entry, - bool flush_dev_iotlb); +int __must_check cf_check vtd_flush_context_reg( + struct vtd_iommu *iommu, uint16_t did, uint16_t source_id, + uint8_t function_mask, uint64_t type, bool flush_non_present_entry); +int __must_check cf_check vtd_flush_iotlb_reg( + struct vtd_iommu *iommu, uint16_t did, uint64_t addr, + unsigned int size_order, uint64_t type, bool flush_non_present_entry, + bool flush_dev_iotlb); =20 struct vtd_iommu *ioapic_to_iommu(unsigned int apic_id); struct vtd_iommu *hpet_to_iommu(unsigned int hpet_id); @@ -87,17 +85,19 @@ int domain_context_mapping_one(struct domain *domain, s= truct vtd_iommu *iommu, u8 bus, u8 devfn, const struct pci_dev *); int domain_context_unmap_one(struct domain *domain, struct vtd_iommu *iomm= u, u8 bus, u8 devfn); -int intel_iommu_get_reserved_device_memory(iommu_grdm_t *func, void *ctxt); +int cf_check intel_iommu_get_reserved_device_memory( + iommu_grdm_t *func, void *ctxt); =20 -unsigned int io_apic_read_remap_rte(unsigned int apic, unsigned int reg); -void io_apic_write_remap_rte(unsigned int apic, - unsigned int reg, unsigned int value); +unsigned int cf_check io_apic_read_remap_rte( + unsigned int apic, unsigned int reg); +void cf_check io_apic_write_remap_rte( + unsigned int apic, unsigned int reg, unsigned int value); =20 struct msi_desc; struct msi_msg; -int msi_msg_write_remap_rte(struct msi_desc *, struct msi_msg *); +int cf_check msi_msg_write_remap_rte(struct msi_desc *, struct msi_msg *); =20 -int intel_setup_hpet_msi(struct msi_desc *); +int cf_check intel_setup_hpet_msi(struct msi_desc *); =20 int is_igd_vt_enabled_quirk(void); bool is_azalia_tlb_enabled(const struct acpi_drhd_unit *); diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrou= gh/vtd/intremap.c index 01152f200664..e6ba89591b6f 100644 --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -142,7 +142,7 @@ static void set_hpet_source_id(unsigned int id, struct = iremap_entry *ire) set_ire_sid(ire, SVT_VERIFY_SID_SQ, SQ_13_IGNORE_3, hpetid_to_bdf(id)); } =20 -bool __init intel_iommu_supports_eim(void) +bool __init cf_check intel_iommu_supports_eim(void) { struct acpi_drhd_unit *drhd; unsigned int apic; @@ -414,7 +414,7 @@ static int ioapic_rte_to_remap_entry(struct vtd_iommu *= iommu, return 0; } =20 -unsigned int io_apic_read_remap_rte( +unsigned int cf_check io_apic_read_remap_rte( unsigned int apic, unsigned int reg) { unsigned int ioapic_pin =3D (reg - 0x10) / 2; @@ -438,7 +438,7 @@ unsigned int io_apic_read_remap_rte( return (*(((u32 *)&old_rte) + 0)); } =20 -void io_apic_write_remap_rte( +void cf_check io_apic_write_remap_rte( unsigned int apic, unsigned int reg, unsigned int value) { unsigned int ioapic_pin =3D (reg - 0x10) / 2; @@ -639,7 +639,7 @@ static int msi_msg_to_remap_entry( return 0; } =20 -int msi_msg_write_remap_rte( +int cf_check msi_msg_write_remap_rte( struct msi_desc *msi_desc, struct msi_msg *msg) { struct pci_dev *pdev =3D msi_desc->dev; @@ -651,7 +651,7 @@ int msi_msg_write_remap_rte( : -EINVAL; } =20 -int __init intel_setup_hpet_msi(struct msi_desc *msi_desc) +int __init cf_check intel_setup_hpet_msi(struct msi_desc *msi_desc) { struct vtd_iommu *iommu =3D hpet_to_iommu(msi_desc->hpet_id); unsigned long flags; @@ -802,7 +802,7 @@ void disable_intremap(struct vtd_iommu *iommu) * This function is used to enable Interrupt remapping when * enable x2apic */ -int intel_iommu_enable_eim(void) +int cf_check intel_iommu_enable_eim(void) { struct acpi_drhd_unit *drhd; struct vtd_iommu *iommu; @@ -856,7 +856,7 @@ int intel_iommu_enable_eim(void) * This function is used to disable Interrupt remapping when * suspend local apic */ -void intel_iommu_disable_eim(void) +void cf_check intel_iommu_disable_eim(void) { struct acpi_drhd_unit *drhd; =20 diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/= vtd/iommu.c index 23519f2081bb..498a9ea9c9c1 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -59,7 +59,7 @@ static unsigned int __read_mostly nr_iommus; static struct iommu_ops vtd_ops; static struct tasklet vtd_fault_tasklet; =20 -static int setup_hwdom_device(u8 devfn, struct pci_dev *); +static int cf_check setup_hwdom_device(u8 devfn, struct pci_dev *); static void setup_hwdom_rmrr(struct domain *d); =20 static int domain_iommu_domid(struct domain *d, @@ -202,7 +202,7 @@ static void check_cleanup_domid_map(struct domain *d, } } =20 -static void sync_cache(const void *addr, unsigned int size) +static void cf_check sync_cache(const void *addr, unsigned int size) { static unsigned long clflush_size =3D 0; const void *end =3D addr + size; @@ -437,9 +437,9 @@ static void iommu_flush_write_buffer(struct vtd_iommu *= iommu) } =20 /* return value determine if we need a write buffer flush */ -int vtd_flush_context_reg(struct vtd_iommu *iommu, uint16_t did, - uint16_t source_id, uint8_t function_mask, - uint64_t type, bool flush_non_present_entry) +int cf_check vtd_flush_context_reg( + struct vtd_iommu *iommu, uint16_t did, uint16_t source_id, + uint8_t function_mask, uint64_t type, bool flush_non_present_entry) { u64 val =3D 0; unsigned long flags; @@ -505,9 +505,10 @@ static int __must_check iommu_flush_context_device(str= uct vtd_iommu *iommu, } =20 /* return value determine if we need a write buffer flush */ -int vtd_flush_iotlb_reg(struct vtd_iommu *iommu, uint16_t did, uint64_t ad= dr, - unsigned int size_order, uint64_t type, - bool flush_non_present_entry, bool flush_dev_iotlb) +int cf_check vtd_flush_iotlb_reg( + struct vtd_iommu *iommu, uint16_t did, uint64_t addr, + unsigned int size_order, uint64_t type, bool flush_non_present_entry, + bool flush_dev_iotlb) { int tlb_offset =3D ecap_iotlb_offset(iommu->ecap); u64 val =3D 0; @@ -720,10 +721,9 @@ static int __must_check iommu_flush_iotlb(struct domai= n *d, dfn_t dfn, return ret; } =20 -static int __must_check iommu_flush_iotlb_pages(struct domain *d, - dfn_t dfn, - unsigned long page_count, - unsigned int flush_flags) +static int __must_check cf_check iommu_flush_iotlb_pages( + struct domain *d, dfn_t dfn, unsigned long page_count, + unsigned int flush_flags) { ASSERT(page_count && !dfn_eq(dfn, INVALID_DFN)); ASSERT(flush_flags); @@ -732,7 +732,7 @@ static int __must_check iommu_flush_iotlb_pages(struct = domain *d, page_count); } =20 -static int __must_check iommu_flush_iotlb_all(struct domain *d) +static int __must_check cf_check iommu_flush_iotlb_all(struct domain *d) { return iommu_flush_iotlb(d, INVALID_DFN, 0, 0); } @@ -1353,7 +1353,7 @@ void __init iommu_free(struct acpi_drhd_unit *drhd) agaw =3D 64; \ agaw; }) =20 -static int intel_iommu_domain_init(struct domain *d) +static int cf_check intel_iommu_domain_init(struct domain *d) { struct domain_iommu *hd =3D dom_iommu(d); =20 @@ -1367,7 +1367,7 @@ static int intel_iommu_domain_init(struct domain *d) return 0; } =20 -static void __hwdom_init intel_iommu_hwdom_init(struct domain *d) +static void __hwdom_init cf_check intel_iommu_hwdom_init(struct domain *d) { struct acpi_drhd_unit *drhd; =20 @@ -1815,7 +1815,7 @@ static int domain_context_unmap(struct domain *domain= , u8 devfn, return ret; } =20 -static void iommu_clear_root_pgtable(struct domain *d) +static void cf_check iommu_clear_root_pgtable(struct domain *d) { struct domain_iommu *hd =3D dom_iommu(d); =20 @@ -1824,7 +1824,7 @@ static void iommu_clear_root_pgtable(struct domain *d) spin_unlock(&hd->arch.mapping_lock); } =20 -static void iommu_domain_teardown(struct domain *d) +static void cf_check iommu_domain_teardown(struct domain *d) { struct domain_iommu *hd =3D dom_iommu(d); const struct acpi_drhd_unit *drhd; @@ -1842,9 +1842,9 @@ static void iommu_domain_teardown(struct domain *d) XFREE(hd->arch.vtd.iommu_bitmap); } =20 -static int __must_check intel_iommu_map_page(struct domain *d, dfn_t dfn, - mfn_t mfn, unsigned int flags, - unsigned int *flush_flags) +static int __must_check cf_check intel_iommu_map_page( + struct domain *d, dfn_t dfn, mfn_t mfn, unsigned int flags, + unsigned int *flush_flags) { struct domain_iommu *hd =3D dom_iommu(d); struct dma_pte *page, *pte, old, new =3D {}; @@ -1913,8 +1913,8 @@ static int __must_check intel_iommu_map_page(struct d= omain *d, dfn_t dfn, return rc; } =20 -static int __must_check intel_iommu_unmap_page(struct domain *d, dfn_t dfn, - unsigned int *flush_flags) +static int __must_check cf_check intel_iommu_unmap_page( + struct domain *d, dfn_t dfn, unsigned int *flush_flags) { /* Do nothing if VT-d shares EPT page table */ if ( iommu_use_hap_pt(d) ) @@ -1929,8 +1929,8 @@ static int __must_check intel_iommu_unmap_page(struct= domain *d, dfn_t dfn, return 0; } =20 -static int intel_iommu_lookup_page(struct domain *d, dfn_t dfn, mfn_t *mfn, - unsigned int *flags) +static int cf_check intel_iommu_lookup_page( + struct domain *d, dfn_t dfn, mfn_t *mfn, unsigned int *flags) { struct domain_iommu *hd =3D dom_iommu(d); struct dma_pte *page, val; @@ -1982,7 +1982,7 @@ static int __init vtd_ept_page_compatible(struct vtd_= iommu *iommu) (ept_has_1gb(ept_cap) && opt_hap_1gb) <=3D cap_sps_1gb(vtd_cap); } =20 -static int intel_iommu_add_device(u8 devfn, struct pci_dev *pdev) +static int cf_check intel_iommu_add_device(u8 devfn, struct pci_dev *pdev) { struct acpi_rmrr_unit *rmrr; u16 bdf; @@ -2025,7 +2025,7 @@ static int intel_iommu_add_device(u8 devfn, struct pc= i_dev *pdev) return 0; } =20 -static int intel_iommu_enable_device(struct pci_dev *pdev) +static int cf_check intel_iommu_enable_device(struct pci_dev *pdev) { struct acpi_drhd_unit *drhd =3D acpi_find_matched_drhd_unit(pdev); int ret =3D drhd ? ats_device(pdev, drhd) : -ENODEV; @@ -2040,7 +2040,7 @@ static int intel_iommu_enable_device(struct pci_dev *= pdev) return ret >=3D 0 ? 0 : ret; } =20 -static int intel_iommu_remove_device(u8 devfn, struct pci_dev *pdev) +static int cf_check intel_iommu_remove_device(u8 devfn, struct pci_dev *pd= ev) { struct acpi_rmrr_unit *rmrr; u16 bdf; @@ -2067,7 +2067,8 @@ static int intel_iommu_remove_device(u8 devfn, struct= pci_dev *pdev) return domain_context_unmap(pdev->domain, devfn, pdev); } =20 -static int __hwdom_init setup_hwdom_device(u8 devfn, struct pci_dev *pdev) +static int __hwdom_init cf_check setup_hwdom_device( + u8 devfn, struct pci_dev *pdev) { return domain_context_mapping(pdev->domain, devfn, pdev); } @@ -2273,7 +2274,7 @@ static struct iommu_state { uint32_t fectl; } *__read_mostly iommu_state; =20 -static int __init vtd_setup(void) +static int __init cf_check vtd_setup(void) { struct acpi_drhd_unit *drhd; struct vtd_iommu *iommu; @@ -2408,7 +2409,7 @@ static int __init vtd_setup(void) return ret; } =20 -static int reassign_device_ownership( +static int cf_check reassign_device_ownership( struct domain *source, struct domain *target, u8 devfn, struct pci_dev *pdev) @@ -2486,7 +2487,7 @@ static int reassign_device_ownership( return ret; } =20 -static int intel_iommu_assign_device( +static int cf_check intel_iommu_assign_device( struct domain *d, u8 devfn, struct pci_dev *pdev, u32 flag) { struct domain *s =3D pdev->domain; @@ -2568,7 +2569,7 @@ static int intel_iommu_assign_device( return ret; } =20 -static int intel_iommu_group_id(u16 seg, u8 bus, u8 devfn) +static int cf_check intel_iommu_group_id(u16 seg, u8 bus, u8 devfn) { u8 secbus; if ( find_upstream_bridge(seg, &bus, &devfn, &secbus) < 0 ) @@ -2577,7 +2578,7 @@ static int intel_iommu_group_id(u16 seg, u8 bus, u8 d= evfn) return PCI_BDF2(bus, devfn); } =20 -static int __must_check vtd_suspend(void) +static int __must_check cf_check vtd_suspend(void) { struct acpi_drhd_unit *drhd; struct vtd_iommu *iommu; @@ -2620,7 +2621,7 @@ static int __must_check vtd_suspend(void) return 0; } =20 -static void vtd_crash_shutdown(void) +static void cf_check vtd_crash_shutdown(void) { struct acpi_drhd_unit *drhd; struct vtd_iommu *iommu; @@ -2641,7 +2642,7 @@ static void vtd_crash_shutdown(void) } } =20 -static void vtd_resume(void) +static void cf_check vtd_resume(void) { struct acpi_drhd_unit *drhd; struct vtd_iommu *iommu; @@ -2719,7 +2720,7 @@ static void vtd_dump_page_table_level(paddr_t pt_madd= r, int level, paddr_t gpa, unmap_vtd_domain_page(pt_vaddr); } =20 -static void vtd_dump_page_tables(struct domain *d) +static void cf_check vtd_dump_page_tables(struct domain *d) { const struct domain_iommu *hd =3D dom_iommu(d); =20 @@ -2729,7 +2730,7 @@ static void vtd_dump_page_tables(struct domain *d) agaw_to_level(hd->arch.vtd.agaw), 0, 0); } =20 -static int __init intel_iommu_quarantine_init(struct domain *d) +static int __init cf_check intel_iommu_quarantine_init(struct domain *d) { struct domain_iommu *hd =3D dom_iommu(d); struct page_info *pg; diff --git a/xen/drivers/passthrough/vtd/qinval.c b/xen/drivers/passthrough= /vtd/qinval.c index b16153e29812..b877e5c930e1 100644 --- a/xen/drivers/passthrough/vtd/qinval.c +++ b/xen/drivers/passthrough/vtd/qinval.c @@ -325,9 +325,9 @@ int iommu_flush_iec_index(struct vtd_iommu *iommu, u8 i= m, u16 iidx) return queue_invalidate_iec_sync(iommu, IEC_INDEX_INVL, im, iidx); } =20 -static int __must_check flush_context_qi(struct vtd_iommu *iommu, u16 did, - u16 sid, u8 fm, u64 type, - bool flush_non_present_entry) +static int __must_check cf_check flush_context_qi( + struct vtd_iommu *iommu, u16 did, u16 sid, u8 fm, u64 type, + bool flush_non_present_entry) { ASSERT(iommu->qinval_maddr); =20 @@ -349,11 +349,9 @@ static int __must_check flush_context_qi(struct vtd_io= mmu *iommu, u16 did, type >> DMA_CCMD_INVL_GRANU_OFFSE= T); } =20 -static int __must_check flush_iotlb_qi(struct vtd_iommu *iommu, u16 did, - u64 addr, - unsigned int size_order, u64 type, - bool flush_non_present_entry, - bool flush_dev_iotlb) +static int __must_check cf_check flush_iotlb_qi( + struct vtd_iommu *iommu, u16 did, u64 addr, unsigned int size_order, + u64 type, bool flush_non_present_entry, bool flush_dev_iotlb) { u8 dr =3D 0, dw =3D 0; int ret =3D 0, rc; @@ -464,18 +462,18 @@ int enable_qinval(struct vtd_iommu *iommu) return 0; } =20 -static int vtd_flush_context_noop(struct vtd_iommu *iommu, uint16_t did, - uint16_t source_id, uint8_t function_mas= k, - uint64_t type, bool flush_non_present_en= try) +static int cf_check vtd_flush_context_noop( + struct vtd_iommu *iommu, uint16_t did, uint16_t source_id, + uint8_t function_mask, uint64_t type, bool flush_non_present_entry) { WARN(); return -EIO; } =20 -static int vtd_flush_iotlb_noop(struct vtd_iommu *iommu, uint16_t did, - uint64_t addr, unsigned int size_order, - uint64_t type, bool flush_non_present_entr= y, - bool flush_dev_iotlb) +static int cf_check vtd_flush_iotlb_noop( + struct vtd_iommu *iommu, uint16_t did, uint64_t addr, + unsigned int size_order, uint64_t type, bool flush_non_present_entry, + bool flush_dev_iotlb) { WARN(); return -EIO; --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931909; cv=none; d=zohomail.com; s=zohoarc; b=JTg1Sy4q1Vq+Ka4eCPwUZhqQnvIljUBuz2XDcx3K9CFsyycOgF2DJn01co/EwjV13CkmCzI0vNG+DFI2E1VAnuRJWejQ8Ab3BGvQm1hYsN8kgcwHvA0lKAUZceOQWYWHg3Y480piwqQXM1cK7F3DGlRaucpY0zbU3fHL1D8etXQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931909; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UshRYu2w7zcvDNXJlZJpQzvmodkoDJ64sGwnN8Jv+2k=; b=B7MaEXziXJg5oLlHa8A/Z8DoxxrAxb/qlsGO28wzUQc47OmGE5vu/4hgjrHcTgXhfkiqL/LoRIMIvR35UOONq6XbENhiVT70LTSXBx7sowEOOZ6ikR8R9l+Ki3skFEpml4eU2HLOjgrfDGwQud4BK+cqEVFj+JaJsKfbQFvG9rc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931909271777.2226428078569; Fri, 26 Nov 2021 05:05:09 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232747.403606 (Exim 4.92) (envelope-from ) id 1mqauA-0003Fb-Tk; Fri, 26 Nov 2021 13:04:42 +0000 Received: by outflank-mailman (output) from mailman id 232747.403606; Fri, 26 Nov 2021 13:04:42 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauA-0003FS-Pm; Fri, 26 Nov 2021 13:04:42 +0000 Received: by outflank-mailman (input) for mailman id 232747; Fri, 26 Nov 2021 13:04:42 +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 1mqauA-0002zD-1o for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:42 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 69c06862-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:04:40 +0100 (CET) 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: 69c06862-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931880; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0JgbBrfAwQwtdb0IBLWk+TvY2zX477eVRbHMu7fiRPk=; b=cfDdmaCp21C/vy0kXf2V5fcMPtcUgfKblMaOT9X5gHVVa3NNjmn76KLB qccYmsEgSGkntgRZsIBHkLKXwjMrIIk4zJZA/P+ffR7DScI10Q7cJ7v92 o4W2Qv0bWhIAl1Ei5FFRUpaQmKVDjrS5kbMwhXIO2lEszYvqFUV1Qu74i o=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: eAIUH47b1AWNmKD+/uw/I5BRdAKmPRFEGpwRUdKuAX1OK3OTmo4QQDh5Wmq9PZYv1kpCMDbf4O YPYjbtRiBIlcNXnM2AE3KKnBigEPttpKhkTYyC04swgtNCRde37Ia4CTQb0m2Alo7DRbq9sQzC InVIzqjU8TMPajBwsjra0dlkM2PhqTVQRvygssvqM602L3e0mEE7HVLP4Zet3HOaJ59iy2x6Xq QoxqI9XKFksU/ZXAcntxuKbWQwWFQRXKKBhdlcCFc619q2y0cjOr92seqMug/rC3yxPURlH5Es Ej9eTbsqkI3QDoeoiw2Nitcc X-SBRS: 5.1 X-MesageID: 58695923 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:Bt187aIbe/7jiJdtFE+RJJIlxSXFcZb7ZxGr2PjKsXjdYENS02BVn GMeUGmFP6yDZDOkf9kibd6yoRgF75SAz4dmGwZlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es5xbZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2Cg9Jwk stwvqe8VCYsJ5LPieQiSCdhRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Gpg2JETTKyFD yYfQWVxd0rJeyVrA3YGVZEyl8iPonD+TxQN/Tp5ooJoujOOnWSdyoPFL979atGMA8JPkS6wp H/C/mn/KgEXMpqY0zXt2mm3mubFkCf/WYQTPL617PhnhBuU3GN7IA0bUx63rOe0jma6WslDM AoE9yw2t68w+Ue3CN7nUHWQglSJoxodUNp4CPAh5UeGza+83uqCLjFaFHgbMoVg7ZJoA2xxv rOUoz/3LTdzsrzPV0+WzbuJjDarBisELVAZWxZRGGPp/OLfiI00ixvOSPNqH6i0ksD5FFnM/ tyakMQtr+5N1JBWjs1X6XiC2mvx/caREmbZ8y2OBjr9hj6VcrJJcGBBBbLzyf9bZLiUQVCa1 JTvs5jPtbteZX1hecHkfQnsIF1Lz6raWNE/qQQ2d3XEy9hL0yX4FWy3yGsjTHqFyu5eJVfUj Lb74Gu9HqN7MnqwdrNQaImsEcksxqWIPY27Da+EMIcRM8QvKFTvEMRSiai4hDuFfK8Ey/xXB HtmWZz0USZy5VpPkFJauNvxIZd0n3tjlAs/tLjwzgi90Kr2WZJmYextDbd6VchgtPnsiFyMq 753bpLWoz0CALyWSnSGquY7cAFVRUXX8Lir8qS7gMbYeVE4cIzgYteMqY4cl3tNw/4Iy7yWp y7lASe1CjPX3BX6FOlDUVg7AJuHYHq1hStT0fUEMQn61n49T5yo6atDJZI7caN+rL5ozOJuT ulDcMKFW6wdRjPC8jUbTJ/8sI09K0j72VPQZ3KoMGolYpptZw3V4du4LAHhwzYDU3isvswkr rz+ig6CGcgfRx5vBdr9Ye60yw/jpmAUne9/BhOaItRadEj23pJtLij90q0+L80WcE2RzTqGz QeGRxwfoLCV8YMy9dDIg4GCrpuoTLQiThYLQTGD4O/vZyfA/2elzYtRa8qyfGjQBDHu5aGvR eRJ1PWgYvcJq0lH7thnGLFxwKNgu9a2/+1Gzh5pFWngZkiwDu8yOWGP2MRCu/EfxrJdvgfqC EuD9sMDZOeMMcLhVlUQOBAkfqKI0vRNwmve6vE8IUPb4i5r/eXYDRUObkfU0CENfqFoNI4Fw Ps6vJ9E4gOyvRMmL9Kag30G7G+LNHEBD/0qu5xy7FUHUeb3JoWuuaDhNxI= IronPort-HdrOrdr: A9a23:nwVYCalvYAar/SJVv27Xs/hqQtTpDfIU3DAbv31ZSRFFG/Fxl6 iV8sjzsiWE8Qr5OUtQ/+xoV5PhfZqxz/JICMwqTNKftWrdyQyVxeNZnOjfKlTbckWUnINgPO VbAsxD4bXLfCBHZK3BgTVQfexO/DD+ytHLudvj X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58695923" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 24/65] xen/video: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:05 +0000 Message-ID: <20211126123446.32324-25-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931909734100007 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/drivers/video/lfb.c | 4 ++-- xen/drivers/video/lfb.h | 4 ++-- xen/drivers/video/vesa.c | 4 ++-- xen/drivers/video/vga.c | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/xen/drivers/video/lfb.c b/xen/drivers/video/lfb.c index 75b749b3303b..48c66f8acf10 100644 --- a/xen/drivers/video/lfb.c +++ b/xen/drivers/video/lfb.c @@ -53,7 +53,7 @@ static void lfb_show_line( } =20 /* Fast mode which redraws all modified parts of a 2D text buffer. */ -void lfb_redraw_puts(const char *s, size_t nr) +void cf_check lfb_redraw_puts(const char *s, size_t nr) { unsigned int i, min_redraw_y =3D lfb.ypos; =20 @@ -98,7 +98,7 @@ void lfb_redraw_puts(const char *s, size_t nr) } =20 /* Slower line-based scroll mode which interacts better with dom0. */ -void lfb_scroll_puts(const char *s, size_t nr) +void cf_check lfb_scroll_puts(const char *s, size_t nr) { unsigned int i; =20 diff --git a/xen/drivers/video/lfb.h b/xen/drivers/video/lfb.h index e743ccdd6b11..42161402d611 100644 --- a/xen/drivers/video/lfb.h +++ b/xen/drivers/video/lfb.h @@ -35,8 +35,8 @@ struct lfb_prop { unsigned int text_rows; }; =20 -void lfb_redraw_puts(const char *s, size_t nr); -void lfb_scroll_puts(const char *s, size_t nr); +void cf_check lfb_redraw_puts(const char *s, size_t nr); +void cf_check lfb_scroll_puts(const char *s, size_t nr); void lfb_carriage_return(void); void lfb_free(void); =20 diff --git a/xen/drivers/video/vesa.c b/xen/drivers/video/vesa.c index cb0e443be4dd..155bc09d3237 100644 --- a/xen/drivers/video/vesa.c +++ b/xen/drivers/video/vesa.c @@ -17,7 +17,7 @@ =20 #define vlfb_info vga_console_info.u.vesa_lfb =20 -static void lfb_flush(void); +static void cf_check lfb_flush(void); =20 static unsigned char *lfb; static const struct font_desc *font; @@ -177,7 +177,7 @@ void __init vesa_mtrr_init(void) } while ( (size_total >=3D PAGE_SIZE) && (rc =3D=3D -EINVAL) ); } =20 -static void lfb_flush(void) +static void cf_check lfb_flush(void) { if ( vesa_mtrr =3D=3D 3 ) __asm__ __volatile__ ("sfence" : : : "memory"); diff --git a/xen/drivers/video/vga.c b/xen/drivers/video/vga.c index b7f04d0d97f4..abe295e477b1 100644 --- a/xen/drivers/video/vga.c +++ b/xen/drivers/video/vga.c @@ -19,8 +19,8 @@ static int vgacon_keep; static unsigned int xpos, ypos; static unsigned char *video; =20 -static void vga_text_puts(const char *s, size_t nr); -static void vga_noop_puts(const char *s, size_t nr) {} +static void cf_check vga_text_puts(const char *s, size_t nr); +static void cf_check vga_noop_puts(const char *s, size_t nr) {} void (*video_puts)(const char *, size_t nr) =3D vga_noop_puts; =20 /* @@ -175,7 +175,7 @@ void __init video_endboot(void) } } =20 -static void vga_text_puts(const char *s, size_t nr) +static void cf_check vga_text_puts(const char *s, size_t nr) { for ( ; nr > 0; nr--, s++ ) { --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932075; cv=none; d=zohomail.com; s=zohoarc; b=NNLdDFVr1eqIIVtng0lSVKjQXU9n8mamURsRD1tm0n7bvcsuQlOl7R+3yc18p4bVPNr/GFwF5QAZFyLwyBbWeyufYCIrHdr7bLs7yu/oIwW8fCHBqZlJ9rXl18eBvyvuAPanpMuvec0OH1tvQmKRILf11trAwvrQu5bixKN8Kt8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932075; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zahCugMWj7qeyYuCxzPfGNlqAXHzMQQe2+bBvZoDnpU=; b=Fm3T1cbxvLhVcJ/MJUPw+ze5lPgGVZ52tlubhIxXByU/RrhCeuIKZe1TGw+NtU6bYIQeuGfAIiHnvBoIfGual+fgXp632smZpyM8VShuXWWV1DtaAgApGlrXRKoI/4YWftyywbHrpqApKtJrfhZ9lZVARsknf4GNtkuHXM0nL90= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932075601830.9639975189997; Fri, 26 Nov 2021 05:07:55 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232834.403947 (Exim 4.92) (envelope-from ) id 1mqawv-0002Na-61; Fri, 26 Nov 2021 13:07:33 +0000 Received: by outflank-mailman (output) from mailman id 232834.403947; Fri, 26 Nov 2021 13:07:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawu-0002K3-90; Fri, 26 Nov 2021 13:07:32 +0000 Received: by outflank-mailman (input) for mailman id 232834; Fri, 26 Nov 2021 13:07:30 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauz-0003W9-DW for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:33 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 85fddd33-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:26 +0100 (CET) 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: 85fddd33-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931926; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/bd2B5JZciwzE0+dMFIIH8KGXsdKJbiMpcA3tfgV6qI=; b=SLGI0254T9VpElD45XhyqRsctBGtlclB7XQKXU3d1hpfJCp4hD8iKdJy N+ji/VC2804D0nXk6uzM5frH3NlvqYl1I5SIrhh4aMUAJYWum0FMTDmXG dileimY3NOM0IMDj8TNzDCINfysrTzyE5FFTxadd6G1ZtdfqbvTGb+1LX Y=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 0VJ2VbQS0zNheQg0h9xjkyhHsASv7a5dOFTxhYilSCwNr3j0B1FRaOedFFg/lPGWHzIDGsFF3X oPBzHHrz1karrjowWj8EyjucIMekvPWhhld5b7oiPSNKba5sXrVp2U3AxBQH0nxd1h0yseAXF/ xPF5WfHHifL6Xaalc7MiY2DB3CnguJ2Fvy8OLW3QjaHsO9teLD4wrvz6fpPIuv4S7eXnGs+zli O1DWBhSPudphVpaSifwp9s4R8PIIz+yn5EnyPh2l7gvdvn7u5DyrQOFs4+/PXdSEJq0VeEFdlF kQixZx/2ecQKVpAUzS/KYunu X-SBRS: 5.1 X-MesageID: 60695278 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:WoulwKATvpnLFBVW/9zkw5YqxClBgxIJ4kV8jS/XYbTApDh0hTBWz mJNW2jQMvfbYGP0L48jOt/g8xsE7J/Sy9JlQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMo/u1Si6FatANl1ElvU2zbue6WLGs1hxZH1c+EX5400w7wYbVv6Yz6TSHK1LV0 T/Ni5W31G+Ng1aY5UpNtspvADs21BjDkGtwUm4WPJinj3eH/5UhN7oNJLnZEpfNatI88thW5 Qr05OrREmvxp3/BAz4++1rxWhVirrX6ZWBihpfKMkQLb9crSiEai84G2PQghUh/jnbOpuxo6 ddxtN+rYkQqFajItcY4TEwNe81+FfUuFL7vJHG+tYqYzlHccmuqyPJrZK00FdRGoKAtWzgIr KFGbmBWBvyAr7veLLaTY+9gnMk8auLsO5sSoCpIxjDFF/c2B5vERs0m4PcGhGlh25oRTZ4yY eI7eQhJMSnFYyFIJw0XCaM3rtWsh3bgJmgwRFW9+vNsvjm7IBZK+KfpGMrYfJqNX8o9tkSFo mPL+UzpDxdcM8aQoRKe6W6ljOLLmSL9WaoRGae++/osh0ecrkQDBRtTWValrP2Rjk+lR8kZO 0ES4jApr6U56AqsVNaVdz+SrWOAvxUcc8FNCOB84waIopc4+C7AWDJCFGQYLoV76olmHlTGy 2NlgfvsRntWjKS0S06ctay/7jCZPCw4D0odMHpsoRQ+3/Hvp4Q6jxTqR9llEbKogtCdJQwc0 wxmvwBl2exN0JdjO7GTuAme3mny/sShohsdv12PBgqYAhVFiJlJjmBCwXzS9r5+IYmQVTFtV 1BUypHFvIji4Xxg/RFhodnh/pn1uJ5p0xWG2DaD+qXNERz2oBZPmqgKvVlDyL9BaJpsRNMQS Ba7VfltzJFSJmC2SqR8fpi8Dc8npYC5S4+6Bq6JMYsSPMQqHONiwM2ITRXLt4wKuBJx+ZzTx L/BKZr8ZZrkIfgPIMWKqxc1juZwm3FWKZL7TpHn1RW3uYdyl1bOIYrpxGCmN7hjhIvd+V292 48Ga6OilkUOOMWjM3K/2dNCcjg3wY0TWMmeRzp/LbXYfGKL2QgJVpfs/F/WU9A/wvkOyL6Xp irVt40x4AOXuEAr4D6iMhhLAI4Dl74lxZ7iFSBzb1uuxVY5ZoOjsPUWe5ctJOF1/+1/1/9kC fICfpzYUPhITz3G/RUbbIX889M+JEj621rWMnr3eiU7cr5hWxfNpo3ucDzw+XRcFSGwr8Y// eGtj1uJXZoZSg1+J8/Kc/bznUiptH0QlbsqDUvFK9VeYmv2941uJ3Cjh/M7OZhUex7C2iGbx 0CdBhJB/bvBpIo88d/og6GYrtj2T7siTxQCR2SCtOS4LyjX+Gan0LRsaufQcGCPTn7w9YWje f5Rk6P2PsoYkQsYqIF7Cbtqk/4zvoO9u79Aww14N3zXdFD3WKh4K3yL0MQT5K1AwrhV5Vm/V k6Vo4QIPLyIPIXuEUILJRpjZeOGjKlGlj7X5PUzAUP7+C4oo+bXDRQMZ0GB2H5HMb94EII52 uNw6scZ5ju2hgcuLtvb3Dtf8H6BLyBYXqgq3n3A7FQHVub/Jol+XKHh IronPort-HdrOrdr: A9a23:SwZyDa9XhqFTZsU/0rJuk+DgI+orL9Y04lQ7vn2YSXRuHPBw8P re5cjztCWE7gr5N0tBpTntAsW9qDbnhPtICOoqTNCftWvdyQiVxehZhOOIqVDd8m/Fh4pgPM 9bAtBD4bbLbGSS4/yU3ODBKadD/OW6 X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="60695278" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 25/65] xen/console: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:06 +0000 Message-ID: <20211126123446.32324-26-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932076861100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/drivers/char/console.c | 4 ++-- xen/drivers/char/ehci-dbgp.c | 24 +++++++++++++----------- xen/drivers/char/ns16550.c | 26 +++++++++++++------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 380765ab02fd..d9d6556c2293 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -552,7 +552,7 @@ static void __serial_rx(char c, struct cpu_user_regs *r= egs) #endif } =20 -static void serial_rx(char c, struct cpu_user_regs *regs) +static void cf_check serial_rx(char c, struct cpu_user_regs *regs) { static int switch_code_count =3D 0; =20 @@ -1286,7 +1286,7 @@ void panic(const char *fmt, ...) * ************************************************************** */ =20 -static void suspend_steal_fn(const char *str, size_t nr) { } +static void cf_check suspend_steal_fn(const char *str, size_t nr) { } static int suspend_steal_id; =20 int console_suspend(void) diff --git a/xen/drivers/char/ehci-dbgp.c b/xen/drivers/char/ehci-dbgp.c index a6b57fdf2d19..e205c0da6a61 100644 --- a/xen/drivers/char/ehci-dbgp.c +++ b/xen/drivers/char/ehci-dbgp.c @@ -1000,13 +1000,15 @@ static int ehci_dbgp_external_startup(struct ehci_d= bgp *dbgp) =20 typedef void (*set_debug_port_t)(struct ehci_dbgp *, unsigned int); =20 -static void default_set_debug_port(struct ehci_dbgp *dbgp, unsigned int po= rt) +static void cf_check default_set_debug_port( + struct ehci_dbgp *dbgp, unsigned int port) { } =20 static set_debug_port_t __read_mostly set_debug_port =3D default_set_debug= _port; =20 -static void nvidia_set_debug_port(struct ehci_dbgp *dbgp, unsigned int por= t) +static void cf_check nvidia_set_debug_port( + struct ehci_dbgp *dbgp, unsigned int port) { uint32_t dword =3D pci_conf_read32(PCI_SBDF(0, dbgp->bus, dbgp->slot, dbgp->func), 0x74); @@ -1167,7 +1169,7 @@ static inline void _ehci_dbgp_flush(struct ehci_dbgp = *dbgp) dbgp->out.chunk =3D 0; } =20 -static void ehci_dbgp_flush(struct serial_port *port) +static void cf_check ehci_dbgp_flush(struct serial_port *port) { struct ehci_dbgp *dbgp =3D port->uart; s_time_t goal; @@ -1196,7 +1198,7 @@ static void ehci_dbgp_flush(struct serial_port *port) set_timer(&dbgp->timer, goal); } =20 -static void ehci_dbgp_putc(struct serial_port *port, char c) +static void cf_check ehci_dbgp_putc(struct serial_port *port, char c) { struct ehci_dbgp *dbgp =3D port->uart; =20 @@ -1209,7 +1211,7 @@ static void ehci_dbgp_putc(struct serial_port *port, = char c) ehci_dbgp_flush(port); } =20 -static int ehci_dbgp_tx_ready(struct serial_port *port) +static int cf_check ehci_dbgp_tx_ready(struct serial_port *port) { struct ehci_dbgp *dbgp =3D port->uart; =20 @@ -1228,7 +1230,7 @@ static int ehci_dbgp_tx_ready(struct serial_port *por= t) (dbgp->state =3D=3D dbgp_idle) * DBGP_MAX_PACKET; } =20 -static int ehci_dbgp_getc(struct serial_port *port, char *pc) +static int cf_check ehci_dbgp_getc(struct serial_port *port, char *pc) { struct ehci_dbgp *dbgp =3D port->uart; =20 @@ -1309,7 +1311,7 @@ static bool_t ehci_dbgp_setup_preirq(struct ehci_dbgp= *dbgp) return 0; } =20 -static void __init ehci_dbgp_init_preirq(struct serial_port *port) +static void __init cf_check ehci_dbgp_init_preirq(struct serial_port *port) { struct ehci_dbgp *dbgp =3D port->uart; u32 debug_port, offset; @@ -1358,7 +1360,7 @@ static void ehci_dbgp_setup_postirq(struct ehci_dbgp = *dbgp) set_timer(&dbgp->timer, NOW() + MILLISECS(1)); } =20 -static void __init ehci_dbgp_init_postirq(struct serial_port *port) +static void __init cf_check ehci_dbgp_init_postirq(struct serial_port *por= t) { struct ehci_dbgp *dbgp =3D port->uart; =20 @@ -1409,12 +1411,12 @@ static int ehci_dbgp_check_release(struct ehci_dbgp= *dbgp) return 0; } =20 -static void __init ehci_dbgp_endboot(struct serial_port *port) +static void __init cf_check ehci_dbgp_endboot(struct serial_port *port) { ehci_dbgp_check_release(port->uart); } =20 -static void ehci_dbgp_suspend(struct serial_port *port) +static void cf_check ehci_dbgp_suspend(struct serial_port *port) { struct ehci_dbgp *dbgp =3D port->uart; =20 @@ -1431,7 +1433,7 @@ static void ehci_dbgp_suspend(struct serial_port *por= t) dbgp->state =3D dbgp_unsafe; } =20 -static void ehci_dbgp_resume(struct serial_port *port) +static void cf_check ehci_dbgp_resume(struct serial_port *port) { struct ehci_dbgp *dbgp =3D port->uart; =20 diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index 990cad39fe85..8df1ee4d5c2c 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -174,7 +174,7 @@ static void handle_dw_usr_busy_quirk(struct ns16550 *ua= rt) } } =20 -static void ns16550_interrupt( +static void cf_check ns16550_interrupt( int irq, void *dev_id, struct cpu_user_regs *regs) { struct serial_port *port =3D dev_id; @@ -239,7 +239,7 @@ static void cf_check ns16550_poll(void *data) #endif } =20 -static int ns16550_tx_ready(struct serial_port *port) +static int cf_check ns16550_tx_ready(struct serial_port *port) { struct ns16550 *uart =3D port->uart; =20 @@ -250,13 +250,13 @@ static int ns16550_tx_ready(struct serial_port *port) uart->lsr_mask ) =3D=3D uart->lsr_mask ) ? uart->fifo_size := 0; } =20 -static void ns16550_putc(struct serial_port *port, char c) +static void cf_check ns16550_putc(struct serial_port *port, char c) { struct ns16550 *uart =3D port->uart; ns_write_reg(uart, UART_THR, c); } =20 -static int ns16550_getc(struct serial_port *port, char *pc) +static int cf_check ns16550_getc(struct serial_port *port, char *pc) { struct ns16550 *uart =3D port->uart; =20 @@ -344,7 +344,7 @@ static void ns16550_setup_preirq(struct ns16550 *uart) UART_FCR_ENABLE | UART_FCR_CLRX | UART_FCR_CLTX | UART_FC= R_TRG14); } =20 -static void __init ns16550_init_preirq(struct serial_port *port) +static void __init cf_check ns16550_init_preirq(struct serial_port *port) { struct ns16550 *uart =3D port->uart; =20 @@ -373,7 +373,7 @@ static void __init ns16550_init_preirq(struct serial_po= rt *port) uart->fifo_size =3D 16; } =20 -static void __init ns16550_init_irq(struct serial_port *port) +static void __init cf_check ns16550_init_irq(struct serial_port *port) { #ifdef NS16550_PCI struct ns16550 *uart =3D port->uart; @@ -399,7 +399,7 @@ static void ns16550_setup_postirq(struct ns16550 *uart) set_timer(&uart->timer, NOW() + MILLISECS(uart->timeout_ms)); } =20 -static void __init ns16550_init_postirq(struct serial_port *port) +static void __init cf_check ns16550_init_postirq(struct serial_port *port) { struct ns16550 *uart =3D port->uart; int rc, bits; @@ -491,7 +491,7 @@ static void __init ns16550_init_postirq(struct serial_p= ort *port) ns16550_setup_postirq(uart); } =20 -static void ns16550_suspend(struct serial_port *port) +static void cf_check ns16550_suspend(struct serial_port *port) { struct ns16550 *uart =3D port->uart; =20 @@ -543,7 +543,7 @@ static void cf_check ns16550_delayed_resume(void *data) _ns16550_resume(port); } =20 -static void ns16550_resume(struct serial_port *port) +static void cf_check ns16550_resume(struct serial_port *port) { struct ns16550 *uart =3D port->uart; =20 @@ -569,7 +569,7 @@ static void ns16550_resume(struct serial_port *port) _ns16550_resume(port); } =20 -static void __init ns16550_endboot(struct serial_port *port) +static void __init cf_check ns16550_endboot(struct serial_port *port) { #ifdef CONFIG_HAS_IOPORTS struct ns16550 *uart =3D port->uart; @@ -583,13 +583,13 @@ static void __init ns16550_endboot(struct serial_port= *port) #endif } =20 -static int __init ns16550_irq(struct serial_port *port) +static int __init cf_check ns16550_irq(struct serial_port *port) { struct ns16550 *uart =3D port->uart; return ((uart->irq > 0) ? uart->irq : -1); } =20 -static void ns16550_start_tx(struct serial_port *port) +static void cf_check ns16550_start_tx(struct serial_port *port) { struct ns16550 *uart =3D port->uart; u8 ier =3D ns_read_reg(uart, UART_IER); @@ -599,7 +599,7 @@ static void ns16550_start_tx(struct serial_port *port) ns_write_reg(uart, UART_IER, ier | UART_IER_ETHREI); } =20 -static void ns16550_stop_tx(struct serial_port *port) +static void cf_check ns16550_stop_tx(struct serial_port *port) { struct ns16550 *uart =3D port->uart; u8 ier =3D ns_read_reg(uart, UART_IER); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932047; cv=none; d=zohomail.com; s=zohoarc; b=GJa4SccRvZHCnILshFLAZY4Xq8A2/9vJsdragGAvxhLHPhVau2oNyL6+SpjY99/nqSSXQB3ssgP/1H7TGPBNi4p/kkXaWRmZb5HJi9mKSHalB4xkakolyLXyJXFSxBYrMQUplkByfNudIZ6GpXMR89QVjJW7ja9W+6UWgtQzq4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932047; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4khl3/CT07pNxOyPy0oyuJpI7ScDmUBU9XVXBJ8/TNQ=; b=F4e6Ti9so7HLwOZfIgM7xrZj0BSl1QhP6EYbcki41Pr7YOfx6lU/JX5uGSw6WoNZlUZqcY8xUhxRj5elQcyqRmICiuMptWWxxggdJMStgvusB7RSWhhC788kkao+WMFZYIe82lsfLMvML4p9yd1pLMpNELz6ZFQoyBVO2U607/c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932047466381.76490605775325; Fri, 26 Nov 2021 05:07:27 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232788.403829 (Exim 4.92) (envelope-from ) id 1mqawU-0004fa-89; Fri, 26 Nov 2021 13:07:06 +0000 Received: by outflank-mailman (output) from mailman id 232788.403829; Fri, 26 Nov 2021 13:07:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawT-0004aB-4m; Fri, 26 Nov 2021 13:07:05 +0000 Received: by outflank-mailman (input) for mailman id 232788; Fri, 26 Nov 2021 13:07:01 +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 1mqavE-0002zD-Bk for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:48 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9159b3dc-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:47 +0100 (CET) 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: 9159b3dc-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931947; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UegzuZhXXHY5hqqFyS7Iw93YbL6XWSCZlaORkPJB840=; b=fmbPKmOdEx1a0pdUxgRngzqMFtlESNgNq7Wa9bTcjN8qetlQ7Pqn94ZV U93ba9rC3ODKmlCB/dpaP5tXZ65AYAGbltjzk7xSzuPtR2ypI043V63Kf xgOsVqhouqj8iMvslFJUSoaBt860UATHaVVGWLrYdtPWcLIt6u6em6i2H Q=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: IdT3NFWX9Hj68kTd32brC/LgREC0HLKlW7vgt8jFLvL0zEByVHaP7ZDEBTQxPGVQjTVR3JclgH PNDH4cUqFWo3iNyQYRX0msWEosxO7IiYeZqW1QLrzwltlP1nFwJQ8rDbb3EhuDwn02oldn74ES vW/fR53wk0hHRg9jCBItk2BFp1iBL0XYGef94vIVmT27i4/XUy5Wwg6gWHDi+SolLHZsfZiTbf VG9suuoh/J8C9WkmuvB+E0GsIoVPTxYyYailt2gbbUHSzyAonUkv5tdaKd53hl3EgkuPOJDa23 yUTIlp67WZnQ7Ge8AO6ThD1Y X-SBRS: 5.1 X-MesageID: 58635033 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:HpbFC69dDI9+AM7d51FEDrUDdXmTJUtcMsCJ2f8bNWPcYEJGY0x3m 2pKWG2EOPzZN2P0KIx+PYS/90JT6pfRy4JgSgI+qSs8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGmeIdA970Ug6wrdj3NYy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhz0 YhLmt+7Qz4jYJbXsrozDRlZGCBXaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguwKKsXxMZxZkXZn1TzDVt4tQIzZQrWM7thdtNs1rp0eQ62DP 5FCAdZpRBHlXD4QYGg0Mb8ZkcSR2Xr1SWdG72vA8MLb5ECMlVcsgdABKuH9ZdiiVchT2EGCq Qru/Xn9AxwcHMySz3yC6H3ErvTUgSrxVYYWFbu53v1nmluewioUEhJ+fUu2p7y1h1CzX/pbK lcI4Ww+oK4q7kupQ9LhGRqirxasnDQRRt5RGO0S8xyWx+zf5APxO4QfZmcfMpp87pZwHGF0k A/S9z/0OdBxmL+MFHSytbyelDnsAjM/c0FcZS4PTCJQtrEPv7oPph7IS99iFou8gdv0BSz8z li2kcQuu1kApZVVjvvmpDgrlxrp/8GUFVBtum07S0r8tlshDLNJcbBE/rQyARxoCI+CBmeMs 3Ef8yR1xLBfVMrd/MBhrQhkIV1I2xpnGGGD6bKMN8N4n9hIx5JFVdsLiN2ZDB00WvvogRezP CfuVfp5vfe/xkeCY65teJ6WAM8316XmHtmNfqmKNYUePMUuJVPZoHoGiausM4bFyxNEfUYXY 8rzTCpRJSxCVfQPIMSeG4/xLoPHNghhnDiOFPgXPjys0KaEZW79dFv2GADmUwzN14vd+F+92 48Gb6OikkwDOMWjMni/2dNCdjgicClkba0aXuQKL4Zv1CI9Qzp/YxIQqJt8E7FYc1N9yr2Vo yrjAxAAkzISRxTvcG23V5yqU5u3Nb4XkJ7xFXVE0Y+A1ydxbICxwr0YcpdrL7Ar+PY6lax/T uUfetXGCfNKE2yV9zMYZJj7jYpjaBX02l7eY3v7OGAyL8x6WgjE2t74ZQ+zpiMAOTW66Jklq Lq62wKFHZdaH1Z+DNzbYe6Exk+quSRPg/p7WkbFe4EBeEjl/IVwBTb2i/s7f5MFJRnZn2PI3 AeKGxYI4+LKptZtotXOgKmFqaavEvd/QRUGTzWKs+7uOHCDrGS5wIJGXOKZRhznVTv5qPe4e OFY7/DgK/lbzlxEhJVxTuRwxqUk6tqx+7IDllZ4HG/GZkiAA697JiXUxtFGs6BAy+MLuQayX U7TqNBWNa/QZZHgGV8VYgEkcv6CxbcfnTyLtaY5J0Dz5SlW+rubUBoNY0nQ2XIFdLYlYpk4x eoBudIN713tgxUnBd+KkyRI+jneNXcHSagm6skXDYKDZtDHEb2ejUgw0hPL3aw= IronPort-HdrOrdr: A9a23:savNVKr5TE5rSQH0xT4iPqwaV5oReYIsimQD101hICG8cqSj9v xG+85rrSMc6QxhIU3I9urwW5VoLUmyyXcx2/h0AV7AZniBhILLFvAB0WKK+VSJcEeSmtK1l5 0QFJSWYOeAdmSS5vyb3ODXKbgdKaG8gcWVuds= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58635033" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , Stefano Stabellini , Wei Liu , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH 26/65] xen/misc: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:07 +0000 Message-ID: <20211126123446.32324-27-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932048593100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Stefano Stabellini CC: Wei Liu CC: Julien Grall CC: Roger Pau Monn=C3=A9 --- xen/arch/x86/mm.c | 6 ++++-- xen/arch/x86/setup.c | 4 ++-- xen/common/domain.c | 2 +- xen/common/gdbstub.c | 5 ++--- xen/common/livepatch.c | 7 +++---- xen/common/memory.c | 4 ++-- xen/common/page_alloc.c | 2 +- xen/common/radix-tree.c | 4 ++-- xen/common/rangeset.c | 2 +- xen/common/spinlock.c | 6 +++--- xen/common/vm_event.c | 6 +++--- xen/common/xmalloc_tlsf.c | 4 ++-- xen/drivers/passthrough/amd/iommu_init.c | 2 +- 13 files changed, 27 insertions(+), 27 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 35d000921795..5d7acf705fb8 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -811,7 +811,8 @@ struct mmio_emul_range_ctxt { unsigned long mfn; }; =20 -static int print_mmio_emul_range(unsigned long s, unsigned long e, void *a= rg) +static int cf_check print_mmio_emul_range( + unsigned long s, unsigned long e, void *arg) { const struct mmio_emul_range_ctxt *ctxt =3D arg; =20 @@ -4582,7 +4583,8 @@ static int _handle_iomem_range(unsigned long s, unsig= ned long e, return 0; } =20 -static int handle_iomem_range(unsigned long s, unsigned long e, void *p) +static int cf_check handle_iomem_range( + unsigned long s, unsigned long e, void *p) { int err =3D 0; =20 diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index f35f3cb899ab..9bd42a55f94b 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -2034,8 +2034,8 @@ int __hwdom_init xen_in_range(unsigned long mfn) return 0; } =20 -static int __hwdom_init io_bitmap_cb(unsigned long s, unsigned long e, - void *ctx) +static int __hwdom_init cf_check io_bitmap_cb( + unsigned long s, unsigned long e, void *ctx) { struct domain *d =3D ctx; unsigned int i; diff --git a/xen/common/domain.c b/xen/common/domain.c index 4fcf9e23911f..de8208a6c797 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -370,7 +370,7 @@ static void cf_check _free_pirq_struct(struct rcu_head = *head) xfree(container_of(head, struct pirq, rcu_head)); } =20 -static void free_pirq_struct(void *ptr) +static void cf_check free_pirq_struct(void *ptr) { struct pirq *pirq =3D ptr; =20 diff --git a/xen/common/gdbstub.c b/xen/common/gdbstub.c index 079c3ca9616a..d6872721dc0d 100644 --- a/xen/common/gdbstub.c +++ b/xen/common/gdbstub.c @@ -69,7 +69,7 @@ static void gdb_smp_resume(void); static char __initdata opt_gdb[30]; string_param("gdb", opt_gdb); =20 -static void gdbstub_console_puts(const char *str, size_t nr); +static void cf_check gdbstub_console_puts(const char *str, size_t nr); =20 /* value <-> char (de)serialzers */ static char @@ -546,8 +546,7 @@ __gdb_ctx =3D { }; static struct gdb_context *gdb_ctx =3D &__gdb_ctx; =20 -static void -gdbstub_console_puts(const char *str, size_t nr) +static void cf_check gdbstub_console_puts(const char *str, size_t nr) { const char *p; =20 diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index e8714920dc8f..ec301a9f120c 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -157,10 +157,9 @@ unsigned long livepatch_symbols_lookup_by_name(const c= har *symname) return 0; } =20 -static const char *livepatch_symbols_lookup(unsigned long addr, - unsigned long *symbolsize, - unsigned long *offset, - char *namebuf) +static const char *cf_check livepatch_symbols_lookup( + unsigned long addr, unsigned long *symbolsize, unsigned long *offset, + char *namebuf) { const struct payload *data; unsigned int i, best; diff --git a/xen/common/memory.c b/xen/common/memory.c index fbd2ebb3ba75..8146e1136a6c 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -1033,8 +1033,8 @@ struct get_reserved_device_memory { unsigned int used_entries; }; =20 -static int get_reserved_device_memory(xen_pfn_t start, xen_ulong_t nr, - u32 id, void *ctxt) +static int cf_check get_reserved_device_memory( + xen_pfn_t start, xen_ulong_t nr, u32 id, void *ctxt) { struct get_reserved_device_memory *grdm =3D ctxt; uint32_t sbdf =3D PCI_SBDF3(grdm->map.dev.pci.seg, grdm->map.dev.pci.b= us, diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 906bfb6679df..f878cd110d1e 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1238,7 +1238,7 @@ struct scrub_wait_state { bool drop; }; =20 -static void scrub_continue(void *data) +static void cf_check scrub_continue(void *data) { struct scrub_wait_state *st =3D data; =20 diff --git a/xen/common/radix-tree.c b/xen/common/radix-tree.c index 33b47748ae49..adc3034222dc 100644 --- a/xen/common/radix-tree.c +++ b/xen/common/radix-tree.c @@ -52,7 +52,7 @@ struct rcu_node { struct rcu_head rcu_head; }; =20 -static struct radix_tree_node *rcu_node_alloc(void *arg) +static struct radix_tree_node *cf_check rcu_node_alloc(void *arg) { struct rcu_node *rcu_node =3D xmalloc(struct rcu_node); return rcu_node ? &rcu_node->node : NULL; @@ -65,7 +65,7 @@ static void cf_check _rcu_node_free(struct rcu_head *head) xfree(rcu_node); } =20 -static void rcu_node_free(struct radix_tree_node *node, void *arg) +static void cf_check rcu_node_free(struct radix_tree_node *node, void *arg) { struct rcu_node *rcu_node =3D container_of(node, struct rcu_node, node); call_rcu(&rcu_node->rcu_head, _rcu_node_free); diff --git a/xen/common/rangeset.c b/xen/common/rangeset.c index 885b6b15c229..a6ef2640462a 100644 --- a/xen/common/rangeset.c +++ b/xen/common/rangeset.c @@ -384,7 +384,7 @@ int rangeset_consume_ranges(struct rangeset *r, return rc; } =20 -static int merge(unsigned long s, unsigned long e, void *data) +static int cf_check merge(unsigned long s, unsigned long e, void *data) { struct rangeset *r =3D data; =20 diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c index 25bfbf3c47f7..62c83aaa6a73 100644 --- a/xen/common/spinlock.c +++ b/xen/common/spinlock.c @@ -375,7 +375,7 @@ static void spinlock_profile_iterate(lock_profile_subfu= nc *sub, void *par) spin_unlock(&lock_profile_lock); } =20 -static void spinlock_profile_print_elem(struct lock_profile *data, +static void cf_check spinlock_profile_print_elem(struct lock_profile *data, int32_t type, int32_t idx, void *par) { struct spinlock *lock =3D data->lock; @@ -404,7 +404,7 @@ void cf_check spinlock_profile_printall(unsigned char k= ey) spinlock_profile_iterate(spinlock_profile_print_elem, NULL); } =20 -static void spinlock_profile_reset_elem(struct lock_profile *data, +static void cf_check spinlock_profile_reset_elem(struct lock_profile *data, int32_t type, int32_t idx, void *par) { data->lock_cnt =3D 0; @@ -428,7 +428,7 @@ typedef struct { int rc; } spinlock_profile_ucopy_t; =20 -static void spinlock_profile_ucopy_elem(struct lock_profile *data, +static void cf_check spinlock_profile_ucopy_elem(struct lock_profile *data, int32_t type, int32_t idx, void *par) { spinlock_profile_ucopy_t *p =3D par; diff --git a/xen/common/vm_event.c b/xen/common/vm_event.c index 70ab3ba406ff..84cf52636bc4 100644 --- a/xen/common/vm_event.c +++ b/xen/common/vm_event.c @@ -523,21 +523,21 @@ int __vm_event_claim_slot(struct domain *d, struct vm= _event_domain *ved, =20 #ifdef CONFIG_MEM_PAGING /* Registered with Xen-bound event channel for incoming notifications. */ -static void mem_paging_notification(struct vcpu *v, unsigned int port) +static void cf_check mem_paging_notification(struct vcpu *v, unsigned int = port) { vm_event_resume(v->domain, v->domain->vm_event_paging); } #endif =20 /* Registered with Xen-bound event channel for incoming notifications. */ -static void monitor_notification(struct vcpu *v, unsigned int port) +static void cf_check monitor_notification(struct vcpu *v, unsigned int por= t) { vm_event_resume(v->domain, v->domain->vm_event_monitor); } =20 #ifdef CONFIG_MEM_SHARING /* Registered with Xen-bound event channel for incoming notifications. */ -static void mem_sharing_notification(struct vcpu *v, unsigned int port) +static void cf_check mem_sharing_notification(struct vcpu *v, unsigned int= port) { vm_event_resume(v->domain, v->domain->vm_event_share); } diff --git a/xen/common/xmalloc_tlsf.c b/xen/common/xmalloc_tlsf.c index e3f6886e6b62..d2ad909502d0 100644 --- a/xen/common/xmalloc_tlsf.c +++ b/xen/common/xmalloc_tlsf.c @@ -512,13 +512,13 @@ int xmem_pool_maxalloc(struct xmem_pool *pool) =20 static struct xmem_pool *xenpool; =20 -static void *xmalloc_pool_get(unsigned long size) +static void *cf_check xmalloc_pool_get(unsigned long size) { ASSERT(size =3D=3D PAGE_SIZE); return alloc_xenheap_page(); } =20 -static void xmalloc_pool_put(void *p) +static void cf_check xmalloc_pool_put(void *p) { free_xenheap_page(p); } diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthr= ough/amd/iommu_init.c index 06b4d2b1fea0..cebcd68a6c04 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -1073,7 +1073,7 @@ static void * __init allocate_ppr_log(struct amd_iomm= u *iommu) #define IVRS_MAPPINGS_DEVTAB(m) (m)[ivrs_bdf_entries].intremap_table =20 /* Gets passed to radix_tree_destroy(), so its param needs to be void *. */ -static void __init free_ivrs_mapping_callback(void *ptr) +static void __init cf_check free_ivrs_mapping_callback(void *ptr) { const struct ivrs_mappings *ivrs_mappings =3D ptr; =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932035; cv=none; d=zohomail.com; s=zohoarc; b=fRhCbhta+JTLmJs9dPCkBzffsUDkXpB78j2uJxaQxjIqVOj3fiI7BA+AAp6BcyCFzLc0+SaGwMcuWwgDghMwZXZQu9RFb9fk1UFXYAipqXy5+fzbLHHoRiuBDvmZ5r5iAXPT6Xg7J8mBW6yIIxMXI/bvay+WQNxdFwbJMfzS1S0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932035; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=2/jHvgOfwHRxgI1me1d46K5cFfSA/8v2ncpuOtwToTI=; b=D5CFcBQvcbVD/cy8QDL6VWstcCJiv0WcF1Et7xc1z8bgkOByg05JBITY700s9nMJUoj3FNnkl+pWFtNDzGN0bwyTBxawusBW3yATsYEfLKgrA/txd7O3w2QgTLGyLlnlPHDX3H6sLTIsF73LyErJxtl3uCesGr15XiJPWlodNnE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 16379320358441020.2916361834966; Fri, 26 Nov 2021 05:07:15 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232773.403754 (Exim 4.92) (envelope-from ) id 1mqawL-0002g8-CM; Fri, 26 Nov 2021 13:06:57 +0000 Received: by outflank-mailman (output) from mailman id 232773.403754; Fri, 26 Nov 2021 13:06:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawL-0002fS-5i; Fri, 26 Nov 2021 13:06:57 +0000 Received: by outflank-mailman (input) for mailman id 232773; Fri, 26 Nov 2021 13:06:54 +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 1mqavn-0002zD-FE for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:23 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id a61a7074-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:06:21 +0100 (CET) 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: a61a7074-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931981; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=U/I9hgUec63ZCE74xwerXvfwVJ+965BYzcV6BQ/X/5M=; b=HDJvTva2aFT9lS5HKDei2IOHanRaESWHvH+vB5yAKdHjjWog0Shkym2u gEG1DGThQTNBLUgHLpCs520qPNSYY/NBiQhljoL456ISJ48CLNyO7POHX enQuDr987lm05QnzXTMKoMdI3a6EeqD4qDe8OuF3p9o5rprUEJhDNN2v8 M=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: n3wspB8X/1QGbSpyAjzvfuL4qomhOltSGM+0Zm2Q2Pk33Un/TPkkYtjGi6GIMtuUUQoMDEiEMu uUmDMfKd7nQ3cyICQ+kV45K3Ic+YNQ5gi8iHZLphelpTm5smDPxg7CjpDZUPJNGPpapHPb/3nu mTcxC4//wO/FmBeeI9jXHB11ebNPyGU73LNmM/e42HYe3nmj2Wj+eTrqnkZP8a+iJFq37Tobwi jOmqRJabSJ+AT9RFbg61BJdjvk9Pq/MeQVHBxwfhbn8KCB+2U3sRQbMkHKMGW1nUe9WZ8uP+Jv 47cFs2Ad4T+vgdlvH4RSYxk+ X-SBRS: 5.1 X-MesageID: 58676456 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:iw27+ayeAyOF5bWx5Oh6t+f6wSrEfRIJ4+MujC+fZmUNrF6WrkUGx jEbCmCFPKuONDbwe9hyb4/i8kkG6pfRzNBqTVNppSAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAuLeNYYH1500s6wrRn2tQAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt/4y5 9tzlZiodTdzPoGPmbU4QUNgExgraMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVoru0lINPmI8U0vXZ4wCuCJf0nXYrCU+PB4towMDIY25AQQqiCO pRxhTxHQxrSWCVuHnksEpcQwMSViiHlXSQGkQfAzUYwyzeKl1EguFT3C/LKfvSaSMMTmVyXz krk1WnkBhARNPSE1CGItHmrg4fnjS79HY4fCrC83vprm0GIgHweDgUMUlm2quX/jVSxM++zM GRNpHBo9/JrshX2EJ+tBHVUvUJooDYyGPVeLc0+8D29kKr4oAfII3pedj54PYlOWNANeRQm0 VqAntXMDDNpsaGIRX/1yop4vQ9eKgBOczZcOHZsoR8tpoC6/dpt1k6nosNLSfbt1rXI9SfML ydmRcTUr5EaloY12qqy5jgraBr898GSHmbZCug6N19JDz+Vhqb5OORECnCBtJ6sybp1qHHa5 xDofODEsYgz4WmlznDlfQn0NOjBCwy5GDPdm0VzOJIq6i6g/XWuFagJvmohdBk0bZdYJ2OyC KM2he+3zMQIVJdNRfUqC79d9uxwlfSwfTgbfqy8giVyjmhZK1bcoXAGib+41GHxikk8+ZzTy r/AGftA+U0yUPw9pBLvHr91+eZymkgWmDOCLbimnk/P+efPOxaopUItbQLmghYRt/jf/m04M r93aqO39vmoeLGkP3SMr9dMdQtiwLpSLcmelvG7v9WremJOcFzNwdeLqV/4U4A6zalTiMnS+ XSxBh1RxFbl3CWVIgSWcHFzLrjoWM8n/348OCUtO3eu2mQiPtnzvPtOKcNvcOl17vFnwN51U +IBJ5eKDMNQR2mV4D8ad5T88tBvLUz5mQKUMiO5SzEjZJo8FRfR89rpc1K3pikDBya6r+Ukp Lik2l+JSJYPXV06Xs3XdOiu3xW6un1EwLB+WE7BI99yfkTw8dc1d3yt36Fve8xVcEfN3DqX0 QqSECw0n+iVrt9n6sTNiICFs5ytT7l0EH1FEjSJ9r2xLyTboDaumNcSTOaScDnBf2ro46H+N /5NxvTxPfBbzlZHt41wT+Riwa4kvoa9orZbykJvHWnRbkTtAbRleyHU0c5Kv6xL57lYpQrpB R7fpogEYe2EaJH/DVocBAs5deDSh/gblw7b4ekxPEintjR8+6CKUBkKMhSB4MCHwGCZ7G/xL T8dhfMr IronPort-HdrOrdr: A9a23:dEQ32a4TaXYTBqloTgPXwPDXdLJyesId70hD6qhwISY6TiX+rb HWoB17726TtN9/YhEdcLy7VJVoBEmskKKdgrNhWotKPjOW21dARbsKheCJrgEIWReOktK1vZ 0QC5SWY+eQMbEVt6nHCXGDYrQd/OU= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676456" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 27/65] x86: Annotate fnptr targets from request_irq() Date: Fri, 26 Nov 2021 12:34:08 +0000 Message-ID: <20211126123446.32324-28-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932036422100003 ...and friends; alloc_direct_apic_vector() and set_direct_apic_vector(). Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/apic.c | 8 ++++---- xen/arch/x86/cpu/mcheck/mce_intel.c | 4 ++-- xen/arch/x86/guest/xen/xen.c | 2 +- xen/arch/x86/hpet.c | 4 ++-- xen/arch/x86/hvm/vmx/vmx.c | 4 ++-- xen/arch/x86/irq.c | 2 +- xen/arch/x86/smp.c | 6 +++--- xen/arch/x86/time.c | 3 ++- xen/drivers/passthrough/amd/iommu_init.c | 4 ++-- xen/drivers/passthrough/vtd/iommu.c | 4 ++-- xen/include/asm-x86/irq.h | 16 ++++++++-------- 11 files changed, 29 insertions(+), 28 deletions(-) diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c index dd6cf1529f1e..07611c481b0e 100644 --- a/xen/arch/x86/apic.c +++ b/xen/arch/x86/apic.c @@ -1365,7 +1365,7 @@ int reprogram_timer(s_time_t timeout) return apic_tmict || !timeout; } =20 -void apic_timer_interrupt(struct cpu_user_regs * regs) +void cf_check apic_timer_interrupt(struct cpu_user_regs *regs) { ack_APIC_irq(); perfc_incr(apic_timer); @@ -1384,7 +1384,7 @@ void smp_send_state_dump(unsigned int cpu) /* * Spurious interrupts should _never_ happen with our APIC/SMP architectur= e. */ -void spurious_interrupt(struct cpu_user_regs *regs) +void cf_check spurious_interrupt(struct cpu_user_regs *regs) { /* * Check if this is a vectored interrupt (most likely, as this is prob= ably @@ -1415,7 +1415,7 @@ void spurious_interrupt(struct cpu_user_regs *regs) * This interrupt should never happen with our APIC/SMP architecture */ =20 -void error_interrupt(struct cpu_user_regs *regs) +void cf_check error_interrupt(struct cpu_user_regs *regs) { static const char *const esr_fields[] =3D { "Send CS error", @@ -1448,7 +1448,7 @@ void error_interrupt(struct cpu_user_regs *regs) * This interrupt handles performance counters interrupt */ =20 -void pmu_apic_interrupt(struct cpu_user_regs *regs) +void cf_check pmu_apic_interrupt(struct cpu_user_regs *regs) { ack_APIC_irq(); vpmu_do_interrupt(regs); diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/= mce_intel.c index 239b0b32327c..f587018cd2d2 100644 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c @@ -55,7 +55,7 @@ bool __read_mostly lmce_support; #define MCE_RING 0x1 static DEFINE_PER_CPU(int, last_state); =20 -static void intel_thermal_interrupt(struct cpu_user_regs *regs) +static void cf_check intel_thermal_interrupt(struct cpu_user_regs *regs) { uint64_t msr_content; unsigned int cpu =3D smp_processor_id(); @@ -639,7 +639,7 @@ static void cpu_mcheck_disable(void) clear_cmci(); } =20 -static void cmci_interrupt(struct cpu_user_regs *regs) +static void cf_check cmci_interrupt(struct cpu_user_regs *regs) { mctelem_cookie_t mctc; struct mca_summary bs; diff --git a/xen/arch/x86/guest/xen/xen.c b/xen/arch/x86/guest/xen/xen.c index b2aa3a009b4a..17807cdea688 100644 --- a/xen/arch/x86/guest/xen/xen.c +++ b/xen/arch/x86/guest/xen/xen.c @@ -170,7 +170,7 @@ static void __init init_memmap(void) } } =20 -static void xen_evtchn_upcall(struct cpu_user_regs *regs) +static void cf_check xen_evtchn_upcall(struct cpu_user_regs *regs) { struct vcpu_info *vcpu_info =3D this_cpu(vcpu_info); unsigned long pending; diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c index 7b009a930498..c31fd97579dc 100644 --- a/xen/arch/x86/hpet.c +++ b/xen/arch/x86/hpet.c @@ -240,8 +240,8 @@ static void handle_hpet_broadcast(struct hpet_event_cha= nnel *ch) } } =20 -static void hpet_interrupt_handler(int irq, void *data, - struct cpu_user_regs *regs) +static void cf_check hpet_interrupt_handler( + int irq, void *data, struct cpu_user_regs *regs) { struct hpet_event_channel *ch =3D data; =20 diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 37c31c08b984..b1eee802fde7 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -2470,7 +2470,7 @@ static struct hvm_function_table __initdata vmx_funct= ion_table =3D { }; =20 /* Handle VT-d posted-interrupt when VCPU is blocked. */ -static void pi_wakeup_interrupt(struct cpu_user_regs *regs) +static void cf_check pi_wakeup_interrupt(struct cpu_user_regs *regs) { struct vmx_vcpu *vmx, *tmp; spinlock_t *lock =3D &per_cpu(vmx_pi_blocking, smp_processor_id()).loc= k; @@ -2502,7 +2502,7 @@ static void pi_wakeup_interrupt(struct cpu_user_regs = *regs) } =20 /* Handle VT-d posted-interrupt when VCPU is running. */ -static void pi_notification_interrupt(struct cpu_user_regs *regs) +static void cf_check pi_notification_interrupt(struct cpu_user_regs *regs) { ack_APIC_irq(); this_cpu(irq_count)++; diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index f43b926ed26b..61e09a356f97 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -744,7 +744,7 @@ void move_native_irq(struct irq_desc *desc) desc->handler->enable(desc); } =20 -void irq_move_cleanup_interrupt(struct cpu_user_regs *regs) +void cf_check irq_move_cleanup_interrupt(struct cpu_user_regs *regs) { unsigned vector, me; =20 diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index b9a696f61963..33748e629a21 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -246,7 +246,7 @@ static cpumask_t flush_cpumask; static const void *flush_va; static unsigned int flush_flags; =20 -void invalidate_interrupt(struct cpu_user_regs *regs) +void cf_check invalidate_interrupt(struct cpu_user_regs *regs) { unsigned int flags =3D flush_flags; ack_APIC_irq(); @@ -385,14 +385,14 @@ void smp_send_nmi_allbutself(void) send_IPI_mask(&cpu_online_map, APIC_DM_NMI); } =20 -void event_check_interrupt(struct cpu_user_regs *regs) +void cf_check event_check_interrupt(struct cpu_user_regs *regs) { ack_APIC_irq(); perfc_incr(ipis); this_cpu(irq_count)++; } =20 -void call_function_interrupt(struct cpu_user_regs *regs) +void cf_check call_function_interrupt(struct cpu_user_regs *regs) { ack_APIC_irq(); perfc_incr(ipis); diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 9f8fdb209041..dda09f0680b3 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -196,7 +196,8 @@ static void smp_send_timer_broadcast_ipi(void) } } =20 -static void timer_interrupt(int irq, void *dev_id, struct cpu_user_regs *r= egs) +static void cf_check timer_interrupt( + int irq, void *dev_id, struct cpu_user_regs *regs) { ASSERT(local_irq_is_enabled()); =20 diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthr= ough/amd/iommu_init.c index cebcd68a6c04..d2ad282e93d3 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -715,8 +715,8 @@ static void cf_check do_amd_iommu_irq(void *unused) } } =20 -static void iommu_interrupt_handler(int irq, void *dev_id, - struct cpu_user_regs *regs) +static void cf_check iommu_interrupt_handler( + int irq, void *dev_id, struct cpu_user_regs *regs) { unsigned long flags; struct amd_iommu *iommu =3D dev_id; diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/= vtd/iommu.c index 498a9ea9c9c1..ad3abdcdacfd 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1085,8 +1085,8 @@ static void cf_check do_iommu_page_fault(void *unused) __do_iommu_page_fault(drhd->iommu); } =20 -static void iommu_page_fault(int irq, void *dev_id, - struct cpu_user_regs *regs) +static void cf_check iommu_page_fault( + int irq, void *dev_id, struct cpu_user_regs *regs) { /* * Just flag the tasklet as runnable. This is fine, according to VT-d diff --git a/xen/include/asm-x86/irq.h b/xen/include/asm-x86/irq.h index 7c825e9d9c0a..b3f49abc5556 100644 --- a/xen/include/asm-x86/irq.h +++ b/xen/include/asm-x86/irq.h @@ -93,14 +93,14 @@ static inline struct cpu_user_regs *set_irq_regs(struct= cpu_user_regs *new_regs) =20 #define platform_legacy_irq(irq) ((irq) < 16) =20 -void event_check_interrupt(struct cpu_user_regs *regs); -void invalidate_interrupt(struct cpu_user_regs *regs); -void call_function_interrupt(struct cpu_user_regs *regs); -void apic_timer_interrupt(struct cpu_user_regs *regs); -void error_interrupt(struct cpu_user_regs *regs); -void pmu_apic_interrupt(struct cpu_user_regs *regs); -void spurious_interrupt(struct cpu_user_regs *regs); -void irq_move_cleanup_interrupt(struct cpu_user_regs *regs); +void cf_check event_check_interrupt(struct cpu_user_regs *regs); +void cf_check invalidate_interrupt(struct cpu_user_regs *regs); +void cf_check call_function_interrupt(struct cpu_user_regs *regs); +void cf_check apic_timer_interrupt(struct cpu_user_regs *regs); +void cf_check error_interrupt(struct cpu_user_regs *regs); +void cf_check pmu_apic_interrupt(struct cpu_user_regs *regs); +void cf_check spurious_interrupt(struct cpu_user_regs *regs); +void cf_check irq_move_cleanup_interrupt(struct cpu_user_regs *regs); =20 uint8_t alloc_hipriority_vector(void); =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932104; cv=none; d=zohomail.com; s=zohoarc; b=Vu6SYd5JIcX1PomYNgsGH2yn/cdUITZcdOvMGzT/byWsdnJLNlXlo+hLHclGccPJ/fir7oZJOG75mYrbyE0yaaPioj43Ktxc3OIEZ56NEhRXUeKryWg8IYCYyYq9xFI0OtAuaEhh8O2hDw8V92i7WwUx92yY+HffXwnFmSu1p4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932104; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=C9itiA4E0synpAGGQiFCkcjBvWiOp4zqnaJIqq5d0wE=; b=fkM8yoiG9uYWeE35ApNySyAYg+40Nk3IjLUF8sdTR1GjwbNNsznxX1yNb6bu5O5JHbGKiykJHwJS9lQCVit8mTFRh5YG8Fzcw3KADuUsAn552RGsQWS9gb/uzBEVKms1a6vfxSbnoVjyDzWI87kH+r2r7BpvUescyUPH46n6/yg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932104531130.9734043513472; Fri, 26 Nov 2021 05:08:24 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232874.404081 (Exim 4.92) (envelope-from ) id 1mqaxP-0001HW-6n; Fri, 26 Nov 2021 13:08:03 +0000 Received: by outflank-mailman (output) from mailman id 232874.404081; Fri, 26 Nov 2021 13:08:03 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxO-0001Fm-R8; Fri, 26 Nov 2021 13:08:02 +0000 Received: by outflank-mailman (input) for mailman id 232874; Fri, 26 Nov 2021 13:08:01 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavi-0003W9-LH for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:18 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a1ccbe9a-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:14 +0100 (CET) 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: a1ccbe9a-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931974; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QWYA8RzofckUZhmsWLLEN5SvofjWDHZvKGXYl+18TtA=; b=a38c0gbxJmGI3Nh31PuRPPhWz9hSfTKB1nbH+OGfY9AYQEX8fpi9p1Bk BJ6wG7QfR6X6X3fP7Do3Pbd77VJqu/t/JRNjwit9jlv5FB+RnyWRqXFIZ yFOQInYOJXAg6i4pORMELapPMrH1J72cerTDSO99/irrBcpS5+1rHc2hl w=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: xuATDL/Ujsk3IBsj/4PLeC2nsPQPNvWNgs+MYXwsZ8jtg4oXz3BtZSpvHXDNNzrhRA0VtbE8As y96KuZctYjPvNCyKGuwvsO3BYTAxdGWa0pu5BQICTtUVxF4E7HBsgXUz8edVLlvFuaaPp1gUwk gR5DT7vNLKcnv+k6fedCAhpIWkQ7bH/kiy5GIQjoDPQPJN911x5U84iF1G8fgBMSNiJEDuyMF4 UBDLXZjenKPG4hhyeiCcZSzbjkjJuHasq4OvNT9mZDvnnhf7N/oTfnKvQ25NYDRCZBfDuIEzFG r1faQWocCCMFtkE7JWYOOHMl X-SBRS: 5.1 X-MesageID: 58193867 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:OU1D/q+v1/YHgJfioHQ7DrUDTXmTJUtcMsCJ2f8bNWPcYEJGY0x3m GAWD2DVPf/ZZmGjLohzOtm2pENU6JeDy4BjHgs/rCg8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGmeIdA970Ug6wrdj3NYy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhNk 4V8kbaIWz5qGfPUguEGYj8BDCNxaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguwKKsXxMZxZkXZn1TzDVt4tQIzZQrWM7thdtNs1rp0eRKeFN 5RGAdZpRA/iZBcUA0YPMaA7jsiUrVf8a2Rh9GvA8MLb5ECMlVcsgdABKuH9ZdiiVchT2EGCq Qru3U70HxUbP9y30iee/zSngeqntTP2XsceGaO18tZugUaP3SoDBRsOT1y5rPKlzEmkVLpix 1c8o3R06/JorQryE4e7D0bQTGO4UgA0Z4EAIskQ0BO0iY2K+xycHVkiFyFDZ4lz3CMpfgAC2 liMltLvIDVgtryJVH6QnoupQSOO1Ts9djFbO3JdJecRy5y6+dxo0EqTJjp2OPft1oWdJN3m/ 9ydQMHSbZ03hNVD6ai09Euvb9mE9smQFV5dCuk6swuYAuJFiGyNO9PABbvzt68owGOlor+p5 yNsdy+2tr1mMH11vHbRKNjh5Znwjxp/DBXSgER0A74q/Cm39niocOh4uW8lexc3b5lVJWG1O yc/XD+9ArcIZxNGioctPuqM5zkCl/C8RbwJqNiIBjaxXnSBXFDep3w/DaJh92vsjFItgckC1 WSzKq6R4YIhIf0/llKeHr5FuZdyn3xW7T6DFPjTkkX8uZLDNSH9dFvwGAbXBgzPxPjf+1u9H hc2H5bi9iizp8WiOHSKqtBKcghRRZX5bLivw/Fqmie4ClIOMAkc5zX5m9vNoqRpwPZYkPnm5 Ha4VhMKwVbznySfew6LdmpiePXkWpMm9SA3OiklPFCJ3Xk/YNnwsPdDJsVvJbR3pvZ+yfNUT uUef5nSCPp4VTmaqS8WaoPwrdI+eU3z1x6OJSesfBM2Y4VkG17S4tbhcwa2rHsOAyO7uNEQu bql0g+HE5MPSx47VJTdae61zkP3tn8YwbogU0zNK9hVWUPt7Ik1dHCh0q5pe5kBcEyRyCGb2 gCaBQYjidPM+4JlosPUga2krpuyF7csFERtAGSGv629MjPX/zT/zNYYAvqIZz3USEj95L6mO bdO1/j5PfAKwARKvo57H+o5xK4y/YKy9bpTzwAiF3TXdVW7TLhnJyDej8VIs6RMwJ5fuBe3B R3TqoULZ+3RNZO3CkMVKSokcv+HhKMdlTTl5PgoJFn3uX1s972dXEQOZxSBhUSx9leu3F/JF Qv5hPMr1g== IronPort-HdrOrdr: A9a23:Erf1tauPYuyCuFd/nusetGzj7skDTtV00zEX/kB9WHVpmszxra 6TdZMgpGbJYVcqKRcdcL+7WJVoLUmxyXcx2/h1AV7AZniAhILLFvAA0WKK+VSJcEeSygce79 YFT0EXMqyJMbEQt6fHCWeDfOrIuOP3kpyVuQ== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193867" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 28/65] x86/hvm: Annotate fnptr targets from hvm_funcs Date: Fri, 26 Nov 2021 12:34:09 +0000 Message-ID: <20211126123446.32324-29-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932105381100009 In svm.c, make a few rearrangements. svm_update_guest_cr() has no external callers so can become static, but needs moving along with svm_fpu_enter() to avoid a forward declaration. Also move svm_update_guest_efer() to drop its forward declaration. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/hvm/svm/nestedsvm.c | 27 ++- xen/arch/x86/hvm/svm/svm.c | 344 ++++++++++++++++------------= ---- xen/arch/x86/hvm/vmx/intr.c | 2 +- xen/arch/x86/hvm/vmx/vmcs.c | 8 +- xen/arch/x86/hvm/vmx/vmx.c | 145 +++++++------- xen/arch/x86/hvm/vmx/vvmx.c | 21 +- xen/include/asm-x86/hvm/svm/nestedsvm.h | 22 +- xen/include/asm-x86/hvm/svm/svm.h | 1 - xen/include/asm-x86/hvm/vmx/vmcs.h | 8 +- xen/include/asm-x86/hvm/vmx/vmx.h | 2 +- xen/include/asm-x86/hvm/vmx/vvmx.h | 23 +-- 11 files changed, 306 insertions(+), 297 deletions(-) diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nested= svm.c index 6d9063004077..10a3e72a96fb 100644 --- a/xen/arch/x86/hvm/svm/nestedsvm.c +++ b/xen/arch/x86/hvm/svm/nestedsvm.c @@ -80,7 +80,7 @@ int nestedsvm_vmcb_map(struct vcpu *v, uint64_t vmcbaddr) } =20 /* Interface methods */ -int nsvm_vcpu_initialise(struct vcpu *v) +int cf_check nsvm_vcpu_initialise(struct vcpu *v) { void *msrpm; struct nestedvcpu *nv =3D &vcpu_nestedhvm(v); @@ -110,7 +110,7 @@ int nsvm_vcpu_initialise(struct vcpu *v) return -ENOMEM; } =20 -void nsvm_vcpu_destroy(struct vcpu *v) +void cf_check nsvm_vcpu_destroy(struct vcpu *v) { struct nestedvcpu *nv =3D &vcpu_nestedhvm(v); struct nestedsvm *svm =3D &vcpu_nestedsvm(v); @@ -150,7 +150,7 @@ void nsvm_vcpu_destroy(struct vcpu *v) svm->ns_iomap =3D NULL; } =20 -int nsvm_vcpu_reset(struct vcpu *v) +int cf_check nsvm_vcpu_reset(struct vcpu *v) { struct nestedsvm *svm =3D &vcpu_nestedsvm(v); =20 @@ -855,8 +855,8 @@ nsvm_vcpu_vmexit_inject(struct vcpu *v, struct cpu_user= _regs *regs, return 0; } =20 -int -nsvm_vcpu_vmexit_event(struct vcpu *v, const struct x86_event *trap) +int cf_check nsvm_vcpu_vmexit_event( + struct vcpu *v, const struct x86_event *trap) { ASSERT(vcpu_nestedhvm(v).nv_vvmcx !=3D NULL); =20 @@ -865,7 +865,7 @@ nsvm_vcpu_vmexit_event(struct vcpu *v, const struct x86= _event *trap) return NESTEDHVM_VMEXIT_DONE; } =20 -uint64_t nsvm_vcpu_hostcr3(struct vcpu *v) +uint64_t cf_check nsvm_vcpu_hostcr3(struct vcpu *v) { return vcpu_nestedsvm(v).ns_vmcb_hostcr3; } @@ -1030,8 +1030,7 @@ nsvm_vmcb_guest_intercepts_exitcode(struct vcpu *v, return 1; } =20 -bool_t -nsvm_vmcb_guest_intercepts_event( +bool cf_check nsvm_vmcb_guest_intercepts_event( struct vcpu *v, unsigned int vector, int errcode) { return nsvm_vmcb_guest_intercepts_exitcode(v, @@ -1206,8 +1205,7 @@ nsvm_vmcb_prepare4vmexit(struct vcpu *v, struct cpu_u= ser_regs *regs) return 0; } =20 -bool_t -nsvm_vmcb_hap_enabled(struct vcpu *v) +bool cf_check nsvm_vmcb_hap_enabled(struct vcpu *v) { return vcpu_nestedsvm(v).ns_hap_enabled; } @@ -1216,10 +1214,9 @@ nsvm_vmcb_hap_enabled(struct vcpu *v) * walk is successful, the translated value is returned in * L1_gpa. The result value tells what to do next. */ -int -nsvm_hap_walk_L1_p2m(struct vcpu *v, paddr_t L2_gpa, paddr_t *L1_gpa, - unsigned int *page_order, uint8_t *p2m_acc, - bool_t access_r, bool_t access_w, bool_t access_x) +int cf_check nsvm_hap_walk_L1_p2m( + struct vcpu *v, paddr_t L2_gpa, paddr_t *L1_gpa, unsigned int *page_or= der, + uint8_t *p2m_acc, bool access_r, bool access_w, bool access_x) { uint32_t pfec; unsigned long nested_cr3, gfn; @@ -1242,7 +1239,7 @@ nsvm_hap_walk_L1_p2m(struct vcpu *v, paddr_t L2_gpa, = paddr_t *L1_gpa, return NESTEDHVM_PAGEFAULT_DONE; } =20 -enum hvm_intblk nsvm_intr_blocked(struct vcpu *v) +enum hvm_intblk cf_check nsvm_intr_blocked(struct vcpu *v) { struct nestedsvm *svm =3D &vcpu_nestedsvm(v); struct nestedvcpu *nv =3D &vcpu_nestedhvm(v); diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index f0e10dec046e..9c62c0cd80ee 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -67,8 +67,6 @@ void noreturn svm_asm_do_resume(void); =20 u32 svm_feature_flags; =20 -static void svm_update_guest_efer(struct vcpu *); - static struct hvm_function_table svm_function_table; =20 /* @@ -122,11 +120,144 @@ void __update_guest_eip(struct cpu_user_regs *regs, = unsigned int inst_len) hvm_inject_hw_exception(TRAP_debug, X86_EVENT_NO_EC); } =20 -static void svm_cpu_down(void) +static void cf_check svm_cpu_down(void) { write_efer(read_efer() & ~EFER_SVME); } =20 +static void svm_fpu_enter(struct vcpu *v) +{ + struct vmcb_struct *n1vmcb =3D vcpu_nestedhvm(v).nv_n1vmcx; + + vcpu_restore_fpu_lazy(v); + vmcb_set_exception_intercepts( + n1vmcb, + vmcb_get_exception_intercepts(n1vmcb) & ~(1U << TRAP_no_device)); +} + +static void cf_check svm_update_guest_cr( + struct vcpu *v, unsigned int cr, unsigned int flags) +{ + struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; + uint64_t value; + + switch ( cr ) + { + case 0: + { + unsigned long hw_cr0_mask =3D 0; + + if ( !(v->arch.hvm.guest_cr[0] & X86_CR0_TS) ) + { + if ( v !=3D current ) + { + if ( !v->arch.fully_eager_fpu ) + hw_cr0_mask |=3D X86_CR0_TS; + } + else if ( vmcb_get_cr0(vmcb) & X86_CR0_TS ) + svm_fpu_enter(v); + } + + if ( paging_mode_hap(v->domain) ) + { + uint32_t intercepts =3D vmcb_get_cr_intercepts(vmcb); + + /* Trap CR3 updates if CR3 memory events are enabled. */ + if ( v->domain->arch.monitor.write_ctrlreg_enabled & + monitor_ctrlreg_bitmask(VM_EVENT_X86_CR3) ) + vmcb_set_cr_intercepts(vmcb, intercepts | CR_INTERCEPT_CR3_= WRITE); + } + + value =3D v->arch.hvm.guest_cr[0] | hw_cr0_mask; + if ( !paging_mode_hap(v->domain) ) + value |=3D X86_CR0_PG | X86_CR0_WP; + vmcb_set_cr0(vmcb, value); + break; + } + case 2: + vmcb_set_cr2(vmcb, v->arch.hvm.guest_cr[2]); + break; + case 3: + vmcb_set_cr3(vmcb, v->arch.hvm.hw_cr[3]); + if ( !nestedhvm_enabled(v->domain) ) + { + if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) ) + hvm_asid_flush_vcpu(v); + } + else if ( nestedhvm_vmswitch_in_progress(v) ) + ; /* CR3 switches during VMRUN/VMEXIT do not flush the TLB. */ + else if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) ) + hvm_asid_flush_vcpu_asid( + nestedhvm_vcpu_in_guestmode(v) + ? &vcpu_nestedhvm(v).nv_n2asid : &v->arch.hvm.n1asid); + break; + case 4: + value =3D HVM_CR4_HOST_MASK; + if ( paging_mode_hap(v->domain) ) + value &=3D ~X86_CR4_PAE; + value |=3D v->arch.hvm.guest_cr[4]; + + if ( !hvm_paging_enabled(v) ) + { + /* + * When the guest thinks paging is disabled, Xen may need to h= ide + * the effects of shadow paging, as hardware runs with the host + * paging settings, rather than the guests settings. + * + * Without CR0.PG, all memory accesses are user mode, so + * _PAGE_USER must be set in the shadow pagetables for guest + * userspace to function. This in turn trips up guest supervi= sor + * mode if SMEP/SMAP are left active in context. They wouldn't + * have any effect if paging was actually disabled, so hide th= em + * behind the back of the guest. + */ + value &=3D ~(X86_CR4_SMEP | X86_CR4_SMAP); + } + + vmcb_set_cr4(vmcb, value); + break; + default: + BUG(); + } +} + +static void cf_check svm_update_guest_efer(struct vcpu *v) +{ + struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; + unsigned long guest_efer =3D v->arch.hvm.guest_efer, + xen_efer =3D read_efer(); + + if ( paging_mode_shadow(v->domain) ) + { + /* EFER.NX is a Xen-owned bit and is not under guest control. */ + guest_efer &=3D ~EFER_NXE; + guest_efer |=3D xen_efer & EFER_NXE; + + /* + * CR0.PG is a Xen-owned bit, and remains set even when the guest = has + * logically disabled paging. + * + * LMA was calculated using the guest CR0.PG setting, but LME needs + * clearing to avoid interacting with Xen's CR0.PG setting. As wr= ites + * to CR0 are intercepted, it is safe to leave LME clear at this + * point, and fix up both LME and LMA when CR0.PG is set. + */ + if ( !(guest_efer & EFER_LMA) ) + guest_efer &=3D ~EFER_LME; + } + + /* SVME must remain set in non-root mode. */ + guest_efer |=3D EFER_SVME; + + vmcb_set_efer(vmcb, guest_efer); + + ASSERT(nestedhvm_enabled(v->domain) || + !(v->arch.hvm.guest_efer & EFER_SVME)); + + if ( nestedhvm_enabled(v->domain) ) + svm_nested_features_on_efer_update(v); +} + unsigned long * svm_msrbit(unsigned long *msr_bitmap, uint32_t msr) { @@ -165,7 +296,7 @@ void svm_intercept_msr(struct vcpu *v, uint32_t msr, in= t flags) __clear_bit(msr * 2 + 1, msr_bit); } =20 -static void svm_enable_msr_interception(struct domain *d, uint32_t msr) +static void cf_check svm_enable_msr_interception(struct domain *d, uint32_= t msr) { struct vcpu *v; =20 @@ -377,13 +508,13 @@ static void svm_load_cpu_state(struct vcpu *v, struct= hvm_hw_cpu *data) svm_update_guest_efer(v); } =20 -static void svm_save_vmcb_ctxt(struct vcpu *v, struct hvm_hw_cpu *ctxt) +static void cf_check svm_save_vmcb_ctxt(struct vcpu *v, struct hvm_hw_cpu = *ctxt) { svm_save_cpu_state(v, ctxt); svm_vmcb_save(v, ctxt); } =20 -static int svm_load_vmcb_ctxt(struct vcpu *v, struct hvm_hw_cpu *ctxt) +static int cf_check svm_load_vmcb_ctxt(struct vcpu *v, struct hvm_hw_cpu *= ctxt) { svm_load_cpu_state(v, ctxt); if ( svm_vmcb_restore(v, ctxt) ) @@ -396,17 +527,7 @@ static int svm_load_vmcb_ctxt(struct vcpu *v, struct h= vm_hw_cpu *ctxt) return 0; } =20 -static void svm_fpu_enter(struct vcpu *v) -{ - struct vmcb_struct *n1vmcb =3D vcpu_nestedhvm(v).nv_n1vmcx; - - vcpu_restore_fpu_lazy(v); - vmcb_set_exception_intercepts( - n1vmcb, - vmcb_get_exception_intercepts(n1vmcb) & ~(1U << TRAP_no_device)); -} - -static void svm_fpu_leave(struct vcpu *v) +static void cf_check svm_fpu_leave(struct vcpu *v) { struct vmcb_struct *n1vmcb =3D vcpu_nestedhvm(v).nv_n1vmcx; =20 @@ -428,7 +549,7 @@ static void svm_fpu_leave(struct vcpu *v) } } =20 -static unsigned int svm_get_interrupt_shadow(struct vcpu *v) +static unsigned cf_check int svm_get_interrupt_shadow(struct vcpu *v) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; unsigned int intr_shadow =3D 0; @@ -442,7 +563,8 @@ static unsigned int svm_get_interrupt_shadow(struct vcp= u *v) return intr_shadow; } =20 -static void svm_set_interrupt_shadow(struct vcpu *v, unsigned int intr_sha= dow) +static void cf_check svm_set_interrupt_shadow( + struct vcpu *v, unsigned int intr_shadow) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; u32 general1_intercepts =3D vmcb_get_general1_intercepts(vmcb); @@ -456,7 +578,7 @@ static void svm_set_interrupt_shadow(struct vcpu *v, un= signed int intr_shadow) vmcb_set_general1_intercepts(vmcb, general1_intercepts); } =20 -static int svm_guest_x86_mode(struct vcpu *v) +static int cf_check svm_guest_x86_mode(struct vcpu *v) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; =20 @@ -469,129 +591,7 @@ static int svm_guest_x86_mode(struct vcpu *v) return likely(vmcb->cs.db) ? 4 : 2; } =20 -void svm_update_guest_cr(struct vcpu *v, unsigned int cr, unsigned int fla= gs) -{ - struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; - uint64_t value; - - switch ( cr ) - { - case 0: - { - unsigned long hw_cr0_mask =3D 0; - - if ( !(v->arch.hvm.guest_cr[0] & X86_CR0_TS) ) - { - if ( v !=3D current ) - { - if ( !v->arch.fully_eager_fpu ) - hw_cr0_mask |=3D X86_CR0_TS; - } - else if ( vmcb_get_cr0(vmcb) & X86_CR0_TS ) - svm_fpu_enter(v); - } - - if ( paging_mode_hap(v->domain) ) - { - uint32_t intercepts =3D vmcb_get_cr_intercepts(vmcb); - - /* Trap CR3 updates if CR3 memory events are enabled. */ - if ( v->domain->arch.monitor.write_ctrlreg_enabled & - monitor_ctrlreg_bitmask(VM_EVENT_X86_CR3) ) - vmcb_set_cr_intercepts(vmcb, intercepts | CR_INTERCEPT_CR3_= WRITE); - } - - value =3D v->arch.hvm.guest_cr[0] | hw_cr0_mask; - if ( !paging_mode_hap(v->domain) ) - value |=3D X86_CR0_PG | X86_CR0_WP; - vmcb_set_cr0(vmcb, value); - break; - } - case 2: - vmcb_set_cr2(vmcb, v->arch.hvm.guest_cr[2]); - break; - case 3: - vmcb_set_cr3(vmcb, v->arch.hvm.hw_cr[3]); - if ( !nestedhvm_enabled(v->domain) ) - { - if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) ) - hvm_asid_flush_vcpu(v); - } - else if ( nestedhvm_vmswitch_in_progress(v) ) - ; /* CR3 switches during VMRUN/VMEXIT do not flush the TLB. */ - else if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) ) - hvm_asid_flush_vcpu_asid( - nestedhvm_vcpu_in_guestmode(v) - ? &vcpu_nestedhvm(v).nv_n2asid : &v->arch.hvm.n1asid); - break; - case 4: - value =3D HVM_CR4_HOST_MASK; - if ( paging_mode_hap(v->domain) ) - value &=3D ~X86_CR4_PAE; - value |=3D v->arch.hvm.guest_cr[4]; - - if ( !hvm_paging_enabled(v) ) - { - /* - * When the guest thinks paging is disabled, Xen may need to h= ide - * the effects of shadow paging, as hardware runs with the host - * paging settings, rather than the guests settings. - * - * Without CR0.PG, all memory accesses are user mode, so - * _PAGE_USER must be set in the shadow pagetables for guest - * userspace to function. This in turn trips up guest supervi= sor - * mode if SMEP/SMAP are left active in context. They wouldn't - * have any effect if paging was actually disabled, so hide th= em - * behind the back of the guest. - */ - value &=3D ~(X86_CR4_SMEP | X86_CR4_SMAP); - } - - vmcb_set_cr4(vmcb, value); - break; - default: - BUG(); - } -} - -static void svm_update_guest_efer(struct vcpu *v) -{ - struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; - unsigned long guest_efer =3D v->arch.hvm.guest_efer, - xen_efer =3D read_efer(); - - if ( paging_mode_shadow(v->domain) ) - { - /* EFER.NX is a Xen-owned bit and is not under guest control. */ - guest_efer &=3D ~EFER_NXE; - guest_efer |=3D xen_efer & EFER_NXE; - - /* - * CR0.PG is a Xen-owned bit, and remains set even when the guest = has - * logically disabled paging. - * - * LMA was calculated using the guest CR0.PG setting, but LME needs - * clearing to avoid interacting with Xen's CR0.PG setting. As wr= ites - * to CR0 are intercepted, it is safe to leave LME clear at this - * point, and fix up both LME and LMA when CR0.PG is set. - */ - if ( !(guest_efer & EFER_LMA) ) - guest_efer &=3D ~EFER_LME; - } - - /* SVME must remain set in non-root mode. */ - guest_efer |=3D EFER_SVME; - - vmcb_set_efer(vmcb, guest_efer); - - ASSERT(nestedhvm_enabled(v->domain) || - !(v->arch.hvm.guest_efer & EFER_SVME)); - - if ( nestedhvm_enabled(v->domain) ) - svm_nested_features_on_efer_update(v); -} - -static void svm_cpuid_policy_changed(struct vcpu *v) +static void cf_check svm_cpuid_policy_changed(struct vcpu *v) { struct svm_vcpu *svm =3D &v->arch.hvm.svm; struct vmcb_struct *vmcb =3D svm->vmcb; @@ -632,13 +632,13 @@ void svm_sync_vmcb(struct vcpu *v, enum vmcb_sync_sta= te new_state) } } =20 -static unsigned int svm_get_cpl(struct vcpu *v) +static unsigned int cf_check svm_get_cpl(struct vcpu *v) { return vmcb_get_cpl(v->arch.hvm.svm.vmcb); } =20 -static void svm_get_segment_register(struct vcpu *v, enum x86_segment seg, - struct segment_register *reg) +static void cf_check svm_get_segment_register( + struct vcpu *v, enum x86_segment seg, struct segment_register *reg) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; =20 @@ -682,8 +682,8 @@ static void svm_get_segment_register(struct vcpu *v, en= um x86_segment seg, } } =20 -static void svm_set_segment_register(struct vcpu *v, enum x86_segment seg, - struct segment_register *reg) +static void cf_check svm_set_segment_register( + struct vcpu *v, enum x86_segment seg, struct segment_register *reg) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; =20 @@ -752,12 +752,12 @@ static void svm_set_segment_register(struct vcpu *v, = enum x86_segment seg, } } =20 -static unsigned long svm_get_shadow_gs_base(struct vcpu *v) +static unsigned long cf_check svm_get_shadow_gs_base(struct vcpu *v) { return v->arch.hvm.svm.vmcb->kerngsbase; } =20 -static int svm_set_guest_pat(struct vcpu *v, u64 gpat) +static int cf_check svm_set_guest_pat(struct vcpu *v, u64 gpat) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; =20 @@ -768,7 +768,7 @@ static int svm_set_guest_pat(struct vcpu *v, u64 gpat) return 1; } =20 -static int svm_get_guest_pat(struct vcpu *v, u64 *gpat) +static int cf_check svm_get_guest_pat(struct vcpu *v, u64 *gpat) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; =20 @@ -816,7 +816,7 @@ static uint64_t svm_get_tsc_offset(uint64_t host_tsc, u= int64_t guest_tsc, return guest_tsc - scale_tsc(host_tsc, ratio); } =20 -static void svm_set_tsc_offset(struct vcpu *v, u64 offset, u64 at_tsc) +static void cf_check svm_set_tsc_offset(struct vcpu *v, u64 offset, u64 at= _tsc) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; struct vmcb_struct *n1vmcb, *n2vmcb; @@ -852,7 +852,7 @@ static void svm_set_tsc_offset(struct vcpu *v, u64 offs= et, u64 at_tsc) vmcb_set_tsc_offset(vmcb, offset + n2_tsc_offset); } =20 -static void svm_set_rdtsc_exiting(struct vcpu *v, bool_t enable) +static void cf_check svm_set_rdtsc_exiting(struct vcpu *v, bool enable) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; u32 general1_intercepts =3D vmcb_get_general1_intercepts(vmcb); @@ -871,7 +871,8 @@ static void svm_set_rdtsc_exiting(struct vcpu *v, bool_= t enable) vmcb_set_general2_intercepts(vmcb, general2_intercepts); } =20 -static void svm_set_descriptor_access_exiting(struct vcpu *v, bool enable) +static void cf_check svm_set_descriptor_access_exiting( + struct vcpu *v, bool enable) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; u32 general1_intercepts =3D vmcb_get_general1_intercepts(vmcb); @@ -888,7 +889,7 @@ static void svm_set_descriptor_access_exiting(struct vc= pu *v, bool enable) vmcb_set_general1_intercepts(vmcb, general1_intercepts); } =20 -static unsigned int svm_get_insn_bytes(struct vcpu *v, uint8_t *buf) +static unsigned int cf_check svm_get_insn_bytes(struct vcpu *v, uint8_t *b= uf) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; unsigned int len =3D v->arch.hvm.svm.cached_insn_len; @@ -903,7 +904,7 @@ static unsigned int svm_get_insn_bytes(struct vcpu *v, = uint8_t *buf) return len; } =20 -static void svm_init_hypercall_page(void *p) +static void cf_check svm_init_hypercall_page(void *p) { unsigned int i; =20 @@ -1144,7 +1145,7 @@ static int acpi_c1e_quirk(int dir, unsigned int port,= unsigned int bytes, return X86EMUL_OKAY; } =20 -static int svm_domain_initialise(struct domain *d) +static int cf_check svm_domain_initialise(struct domain *d) { static const struct arch_csw csw =3D { .from =3D svm_ctxt_switch_from, @@ -1162,7 +1163,7 @@ static int svm_domain_initialise(struct domain *d) return 0; } =20 -static int svm_vcpu_initialise(struct vcpu *v) +static int cf_check svm_vcpu_initialise(struct vcpu *v) { int rc; =20 @@ -1179,7 +1180,7 @@ static int svm_vcpu_initialise(struct vcpu *v) return 0; } =20 -static void svm_vcpu_destroy(struct vcpu *v) +static void cf_check svm_vcpu_destroy(struct vcpu *v) { svm_destroy_vmcb(v); passive_domain_destroy(v); @@ -1300,7 +1301,7 @@ static void svm_emul_swint_injection(struct x86_event= *event) event->error_code =3D ec; } =20 -static void svm_inject_event(const struct x86_event *event) +static void cf_check svm_inject_event(const struct x86_event *event) { struct vcpu *curr =3D current; struct vmcb_struct *vmcb =3D curr->arch.hvm.svm.vmcb; @@ -1430,12 +1431,12 @@ static void svm_inject_event(const struct x86_event= *event) HVMTRACE_2D(INJ_EXC, _event.vector, _event.error_code); } =20 -static bool svm_event_pending(const struct vcpu *v) +static bool cf_check svm_event_pending(const struct vcpu *v) { return v->arch.hvm.svm.vmcb->event_inj.v; } =20 -static void svm_cpu_dead(unsigned int cpu) +static void cf_check svm_cpu_dead(unsigned int cpu) { paddr_t *this_hsa =3D &per_cpu(hsa, cpu); paddr_t *this_vmcb =3D &per_cpu(host_vmcb, cpu); @@ -1461,7 +1462,7 @@ static void svm_cpu_dead(unsigned int cpu) } } =20 -static int svm_cpu_up_prepare(unsigned int cpu) +static int cf_check svm_cpu_up_prepare(unsigned int cpu) { paddr_t *this_hsa =3D &per_cpu(hsa, cpu); paddr_t *this_vmcb =3D &per_cpu(host_vmcb, cpu); @@ -1616,7 +1617,7 @@ static int _svm_cpu_up(bool bsp) return 0; } =20 -static int svm_cpu_up(void) +static int cf_check svm_cpu_up(void) { return _svm_cpu_up(false); } @@ -1745,7 +1746,7 @@ static void svm_do_nested_pgfault(struct vcpu *v, domain_crash(v->domain); } =20 -static void svm_fpu_dirty_intercept(void) +static void cf_check svm_fpu_dirty_intercept(void) { struct vcpu *v =3D current; struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; @@ -1791,7 +1792,8 @@ static void svm_dr_access(struct vcpu *v, struct cpu_= user_regs *regs) __restore_debug_registers(vmcb, v); } =20 -static int svm_msr_read_intercept(unsigned int msr, uint64_t *msr_content) +static int cf_check svm_msr_read_intercept( + unsigned int msr, uint64_t *msr_content) { struct vcpu *v =3D current; const struct domain *d =3D v->domain; @@ -1986,7 +1988,8 @@ static int svm_msr_read_intercept(unsigned int msr, u= int64_t *msr_content) return X86EMUL_EXCEPTION; } =20 -static int svm_msr_write_intercept(unsigned int msr, uint64_t msr_content) +static int cf_check svm_msr_write_intercept( + unsigned int msr, uint64_t msr_content) { struct vcpu *v =3D current; struct domain *d =3D v->domain; @@ -2405,7 +2408,7 @@ static void svm_vmexit_mce_intercept( } } =20 -static void svm_wbinvd_intercept(void) +static void cf_check svm_wbinvd_intercept(void) { if ( cache_flush_permitted(current->domain) ) flush_all(FLUSH_CACHE); @@ -2450,12 +2453,13 @@ static bool is_invlpg(const struct x86_emulate_stat= e *state, (ext & 7) =3D=3D 7; } =20 -static void svm_invlpg(struct vcpu *v, unsigned long linear) +static void cf_check svm_invlpg(struct vcpu *v, unsigned long linear) { svm_asid_g_invlpg(v, linear); } =20 -static bool svm_get_pending_event(struct vcpu *v, struct x86_event *info) +static bool cf_check svm_get_pending_event( + struct vcpu *v, struct x86_event *info) { const struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; =20 diff --git a/xen/arch/x86/hvm/vmx/intr.c b/xen/arch/x86/hvm/vmx/intr.c index 80bfbb478782..13bbe8430df5 100644 --- a/xen/arch/x86/hvm/vmx/intr.c +++ b/xen/arch/x86/hvm/vmx/intr.c @@ -147,7 +147,7 @@ static void vmx_enable_intr_window(struct vcpu *v, stru= ct hvm_intack intack) * used but may have negative impact on interrupt performance. */ =20 -enum hvm_intblk nvmx_intr_blocked(struct vcpu *v) +enum hvm_intblk cf_check nvmx_intr_blocked(struct vcpu *v) { int r =3D hvm_intblk_none; struct nestedvcpu *nvcpu =3D &vcpu_nestedhvm(v); diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 1bb3710f7baa..441be8127148 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -655,7 +655,7 @@ void vmx_vmcs_reload(struct vcpu *v) vmx_load_vmcs(v); } =20 -int vmx_cpu_up_prepare(unsigned int cpu) +int cf_check vmx_cpu_up_prepare(unsigned int cpu) { /* * If nvmx_cpu_up_prepare() failed, do not return failure and just fal= lback @@ -676,7 +676,7 @@ int vmx_cpu_up_prepare(unsigned int cpu) return -ENOMEM; } =20 -void vmx_cpu_dead(unsigned int cpu) +void cf_check vmx_cpu_dead(unsigned int cpu) { vmx_free_vmcs(per_cpu(vmxon_region, cpu)); per_cpu(vmxon_region, cpu) =3D 0; @@ -774,12 +774,12 @@ static int _vmx_cpu_up(bool bsp) return 0; } =20 -int vmx_cpu_up() +int cf_check vmx_cpu_up() { return _vmx_cpu_up(false); } =20 -void vmx_cpu_down(void) +void cf_check vmx_cpu_down(void) { struct list_head *active_vmcs_list =3D &this_cpu(active_vmcs_list); unsigned long flags; diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index b1eee802fde7..88a6a5ec824b 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -68,14 +68,16 @@ static void vmx_ctxt_switch_to(struct vcpu *v); =20 static int alloc_vlapic_mapping(void); static void vmx_install_vlapic_mapping(struct vcpu *v); -static void vmx_update_guest_cr(struct vcpu *v, unsigned int cr, - unsigned int flags); -static void vmx_update_guest_efer(struct vcpu *v); -static void vmx_wbinvd_intercept(void); -static void vmx_fpu_dirty_intercept(void); -static int vmx_msr_read_intercept(unsigned int msr, uint64_t *msr_content); -static int vmx_msr_write_intercept(unsigned int msr, uint64_t msr_content); -static void vmx_invlpg(struct vcpu *v, unsigned long linear); +static void cf_check vmx_update_guest_cr( + struct vcpu *v, unsigned int cr, unsigned int flags); +static void cf_check vmx_update_guest_efer(struct vcpu *v); +static void cf_check vmx_wbinvd_intercept(void); +static void cf_check vmx_fpu_dirty_intercept(void); +static int cf_check vmx_msr_read_intercept( + unsigned int msr, uint64_t *msr_content); +static int cf_check vmx_msr_write_intercept( + unsigned int msr, uint64_t msr_content); +static void cf_check vmx_invlpg(struct vcpu *v, unsigned long linear); =20 static mfn_t __read_mostly apic_access_mfn =3D INVALID_MFN_INITIALIZER; =20 @@ -103,7 +105,7 @@ void vmx_pi_per_cpu_init(unsigned int cpu) spin_lock_init(&per_cpu(vmx_pi_blocking, cpu).lock); } =20 -static void vmx_vcpu_block(struct vcpu *v) +static void cf_check vmx_vcpu_block(struct vcpu *v) { unsigned long flags; unsigned int dest; @@ -395,7 +397,7 @@ void vmx_pi_hooks_deassign(struct domain *d) domain_unpause(d); } =20 -static int vmx_domain_initialise(struct domain *d) +static int cf_check vmx_domain_initialise(struct domain *d) { static const struct arch_csw csw =3D { .from =3D vmx_ctxt_switch_from, @@ -414,7 +416,7 @@ static int vmx_domain_initialise(struct domain *d) return 0; } =20 -static void domain_creation_finished(struct domain *d) +static void cf_check domain_creation_finished(struct domain *d) { gfn_t gfn =3D gaddr_to_gfn(APIC_DEFAULT_PHYS_BASE); bool ipat; @@ -444,7 +446,7 @@ static void vmx_init_ipt(struct vcpu *v) v->arch.msrs->rtit.output_limit =3D size - 1; } =20 -static int vmx_vcpu_initialise(struct vcpu *v) +static int cf_check vmx_vcpu_initialise(struct vcpu *v) { int rc; =20 @@ -491,7 +493,7 @@ static int vmx_vcpu_initialise(struct vcpu *v) return 0; } =20 -static void vmx_vcpu_destroy(struct vcpu *v) +static void cf_check vmx_vcpu_destroy(struct vcpu *v) { /* * There are cases that domain still remains in log-dirty mode when it= is @@ -589,7 +591,7 @@ void vmx_update_exception_bitmap(struct vcpu *v) __vmwrite(EXCEPTION_BITMAP, bitmap); } =20 -static void vmx_cpuid_policy_changed(struct vcpu *v) +static void cf_check vmx_cpuid_policy_changed(struct vcpu *v) { const struct cpuid_policy *cp =3D v->domain->arch.cpuid; =20 @@ -625,7 +627,7 @@ static void vmx_cpuid_policy_changed(struct vcpu *v) vmx_set_msr_intercept(v, MSR_FLUSH_CMD, VMX_MSR_RW); } =20 -int vmx_guest_x86_mode(struct vcpu *v) +int cf_check vmx_guest_x86_mode(struct vcpu *v) { unsigned long cs_ar_bytes; =20 @@ -822,7 +824,7 @@ static void vmx_load_cpu_state(struct vcpu *v, struct h= vm_hw_cpu *data) } =20 =20 -static void vmx_save_vmcs_ctxt(struct vcpu *v, struct hvm_hw_cpu *ctxt) +static void cf_check vmx_save_vmcs_ctxt(struct vcpu *v, struct hvm_hw_cpu = *ctxt) { if ( v =3D=3D current ) vmx_save_guest_msrs(v); @@ -831,7 +833,7 @@ static void vmx_save_vmcs_ctxt(struct vcpu *v, struct h= vm_hw_cpu *ctxt) vmx_vmcs_save(v, ctxt); } =20 -static int vmx_load_vmcs_ctxt(struct vcpu *v, struct hvm_hw_cpu *ctxt) +static int cf_check vmx_load_vmcs_ctxt(struct vcpu *v, struct hvm_hw_cpu *= ctxt) { /* Not currently safe to use in current context. */ ASSERT(v !=3D current); @@ -857,7 +859,7 @@ static void vmx_fpu_enter(struct vcpu *v) __vmwrite(HOST_CR0, v->arch.hvm.vmx.host_cr0); } =20 -static void vmx_fpu_leave(struct vcpu *v) +static void cf_check vmx_fpu_leave(struct vcpu *v) { ASSERT(!v->fpu_dirtied); ASSERT(read_cr0() & X86_CR0_TS); @@ -934,7 +936,7 @@ unsigned int vmx_get_cpl(void) return (attr >> 5) & 3; } =20 -static unsigned int _vmx_get_cpl(struct vcpu *v) +static unsigned int cf_check _vmx_get_cpl(struct vcpu *v) { unsigned int cpl; =20 @@ -960,8 +962,8 @@ static unsigned int _vmx_get_cpl(struct vcpu *v) #define vm86_ds_attr 0xf3 #define vm86_tr_attr 0x8b =20 -static void vmx_get_segment_register(struct vcpu *v, enum x86_segment seg, - struct segment_register *reg) +static void cf_check vmx_get_segment_register( + struct vcpu *v, enum x86_segment seg, struct segment_register *reg) { unsigned long attr =3D 0, sel =3D 0, limit; =20 @@ -1061,8 +1063,8 @@ static void vmx_get_segment_register(struct vcpu *v, = enum x86_segment seg, } } =20 -static void vmx_set_segment_register(struct vcpu *v, enum x86_segment seg, - struct segment_register *reg) +static void cf_check vmx_set_segment_register( + struct vcpu *v, enum x86_segment seg, struct segment_register *reg) { uint32_t attr, sel, limit; uint64_t base; @@ -1161,12 +1163,12 @@ static void vmx_set_segment_register(struct vcpu *v= , enum x86_segment seg, vmx_vmcs_exit(v); } =20 -static unsigned long vmx_get_shadow_gs_base(struct vcpu *v) +static unsigned long cf_check vmx_get_shadow_gs_base(struct vcpu *v) { return v->arch.hvm.vmx.shadow_gs; } =20 -static int vmx_set_guest_pat(struct vcpu *v, u64 gpat) +static int cf_check vmx_set_guest_pat(struct vcpu *v, u64 gpat) { if ( !paging_mode_hap(v->domain) || unlikely(v->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) ) @@ -1178,7 +1180,7 @@ static int vmx_set_guest_pat(struct vcpu *v, u64 gpat) return 1; } =20 -static int vmx_get_guest_pat(struct vcpu *v, u64 *gpat) +static int cf_check vmx_get_guest_pat(struct vcpu *v, u64 *gpat) { if ( !paging_mode_hap(v->domain) || unlikely(v->arch.hvm.cache_mode =3D=3D NO_FILL_CACHE_MODE) ) @@ -1190,7 +1192,7 @@ static int vmx_get_guest_pat(struct vcpu *v, u64 *gpa= t) return 1; } =20 -static bool vmx_set_guest_bndcfgs(struct vcpu *v, u64 val) +static bool cf_check vmx_set_guest_bndcfgs(struct vcpu *v, u64 val) { ASSERT(cpu_has_mpx && cpu_has_vmx_mpx); =20 @@ -1201,7 +1203,7 @@ static bool vmx_set_guest_bndcfgs(struct vcpu *v, u64= val) return true; } =20 -static bool vmx_get_guest_bndcfgs(struct vcpu *v, u64 *val) +static bool cf_check vmx_get_guest_bndcfgs(struct vcpu *v, u64 *val) { ASSERT(cpu_has_mpx && cpu_has_vmx_mpx); =20 @@ -1212,7 +1214,7 @@ static bool vmx_get_guest_bndcfgs(struct vcpu *v, u64= *val) return true; } =20 -static void vmx_handle_cd(struct vcpu *v, unsigned long value) +static void cf_check vmx_handle_cd(struct vcpu *v, unsigned long value) { if ( !paging_mode_hap(v->domain) ) { @@ -1262,7 +1264,7 @@ static void vmx_handle_cd(struct vcpu *v, unsigned lo= ng value) } } =20 -static void vmx_setup_tsc_scaling(struct vcpu *v) +static void cf_check vmx_setup_tsc_scaling(struct vcpu *v) { if ( v->domain->arch.vtsc ) return; @@ -1272,7 +1274,7 @@ static void vmx_setup_tsc_scaling(struct vcpu *v) vmx_vmcs_exit(v); } =20 -static void vmx_set_tsc_offset(struct vcpu *v, u64 offset, u64 at_tsc) +static void cf_check vmx_set_tsc_offset(struct vcpu *v, u64 offset, u64 at= _tsc) { vmx_vmcs_enter(v); =20 @@ -1283,7 +1285,7 @@ static void vmx_set_tsc_offset(struct vcpu *v, u64 of= fset, u64 at_tsc) vmx_vmcs_exit(v); } =20 -static void vmx_set_rdtsc_exiting(struct vcpu *v, bool_t enable) +static void cf_check vmx_set_rdtsc_exiting(struct vcpu *v, bool enable) { vmx_vmcs_enter(v); v->arch.hvm.vmx.exec_control &=3D ~CPU_BASED_RDTSC_EXITING; @@ -1293,7 +1295,8 @@ static void vmx_set_rdtsc_exiting(struct vcpu *v, boo= l_t enable) vmx_vmcs_exit(v); } =20 -static void vmx_set_descriptor_access_exiting(struct vcpu *v, bool enable) +static void cf_check vmx_set_descriptor_access_exiting( + struct vcpu *v, bool enable) { if ( enable ) v->arch.hvm.vmx.secondary_exec_control |=3D @@ -1307,7 +1310,7 @@ static void vmx_set_descriptor_access_exiting(struct = vcpu *v, bool enable) vmx_vmcs_exit(v); } =20 -static void vmx_init_hypercall_page(void *p) +static void cf_check vmx_init_hypercall_page(void *p) { unsigned int i; =20 @@ -1330,7 +1333,7 @@ static void vmx_init_hypercall_page(void *p) } } =20 -static unsigned int vmx_get_interrupt_shadow(struct vcpu *v) +static unsigned int cf_check vmx_get_interrupt_shadow(struct vcpu *v) { unsigned long intr_shadow; =20 @@ -1339,7 +1342,8 @@ static unsigned int vmx_get_interrupt_shadow(struct v= cpu *v) return intr_shadow; } =20 -static void vmx_set_interrupt_shadow(struct vcpu *v, unsigned int intr_sha= dow) +static void cf_check vmx_set_interrupt_shadow( + struct vcpu *v, unsigned int intr_shadow) { __vmwrite(GUEST_INTERRUPTIBILITY_INFO, intr_shadow); } @@ -1390,7 +1394,7 @@ static void vmx_load_pdptrs(struct vcpu *v) return; } =20 -static void vmx_update_host_cr3(struct vcpu *v) +static void cf_check vmx_update_host_cr3(struct vcpu *v) { vmx_vmcs_enter(v); __vmwrite(HOST_CR3, v->arch.cr3); @@ -1409,8 +1413,8 @@ void vmx_update_debug_state(struct vcpu *v) vmx_vmcs_exit(v); } =20 -static void vmx_update_guest_cr(struct vcpu *v, unsigned int cr, - unsigned int flags) +static void cf_check vmx_update_guest_cr( + struct vcpu *v, unsigned int cr, unsigned int flags) { vmx_vmcs_enter(v); =20 @@ -1612,7 +1616,7 @@ static void vmx_update_guest_cr(struct vcpu *v, unsig= ned int cr, vmx_vmcs_exit(v); } =20 -static void vmx_update_guest_efer(struct vcpu *v) +static void cf_check vmx_update_guest_efer(struct vcpu *v) { unsigned long entry_ctls, guest_efer =3D v->arch.hvm.guest_efer, xen_efer =3D read_efer(); @@ -1714,7 +1718,8 @@ void nvmx_enqueue_n2_exceptions(struct vcpu *v, nvmx->intr.intr_info, nvmx->intr.error_code); } =20 -static int nvmx_vmexit_event(struct vcpu *v, const struct x86_event *event) +static int cf_check nvmx_vmexit_event( + struct vcpu *v, const struct x86_event *event) { nvmx_enqueue_n2_exceptions(v, event->vector, event->error_code, hvm_intsrc_none); @@ -1800,7 +1805,7 @@ void vmx_inject_nmi(void) * - #DB is X86_EVENTTYPE_HW_EXCEPTION, except when generated by * opcode 0xf1 (which is X86_EVENTTYPE_PRI_SW_EXCEPTION) */ -static void vmx_inject_event(const struct x86_event *event) +static void cf_check vmx_inject_event(const struct x86_event *event) { unsigned long intr_info; struct vcpu *curr =3D current; @@ -1881,7 +1886,7 @@ static void vmx_inject_event(const struct x86_event *= event) HVMTRACE_2D(INJ_EXC, _event.vector, _event.error_code); } =20 -static bool vmx_event_pending(const struct vcpu *v) +static bool cf_check vmx_event_pending(const struct vcpu *v) { unsigned long intr_info; =20 @@ -1891,7 +1896,7 @@ static bool vmx_event_pending(const struct vcpu *v) return intr_info & INTR_INFO_VALID_MASK; } =20 -static void vmx_set_info_guest(struct vcpu *v) +static void cf_check vmx_set_info_guest(struct vcpu *v) { unsigned long intr_shadow; =20 @@ -1919,7 +1924,8 @@ static void vmx_set_info_guest(struct vcpu *v) vmx_vmcs_exit(v); } =20 -static void vmx_update_eoi_exit_bitmap(struct vcpu *v, uint8_t vector, boo= l set) +static void cf_check vmx_update_eoi_exit_bitmap( + struct vcpu *v, uint8_t vector, bool set) { if ( set ) vmx_set_eoi_exit_bitmap(v, vector); @@ -1947,7 +1953,7 @@ static u8 set_svi(int isr) return old; } =20 -static void vmx_process_isr(int isr, struct vcpu *v) +static void cf_check vmx_process_isr(int isr, struct vcpu *v) { unsigned int i; const struct vlapic *vlapic =3D vcpu_vlapic(v); @@ -2035,7 +2041,7 @@ static void __vmx_deliver_posted_interrupt(struct vcp= u *v) } } =20 -static void vmx_deliver_posted_intr(struct vcpu *v, u8 vector) +static void cf_check vmx_deliver_posted_intr(struct vcpu *v, u8 vector) { struct pi_desc old, new, prev; =20 @@ -2082,7 +2088,7 @@ static void vmx_deliver_posted_intr(struct vcpu *v, u= 8 vector) __vmx_deliver_posted_interrupt(v); } =20 -static void vmx_sync_pir_to_irr(struct vcpu *v) +static void cf_check vmx_sync_pir_to_irr(struct vcpu *v) { struct vlapic *vlapic =3D vcpu_vlapic(v); unsigned int group, i; @@ -2098,12 +2104,12 @@ static void vmx_sync_pir_to_irr(struct vcpu *v) vlapic_set_vector(i, &vlapic->regs->data[APIC_IRR]); } =20 -static bool vmx_test_pir(const struct vcpu *v, uint8_t vec) +static bool cf_check vmx_test_pir(const struct vcpu *v, uint8_t vec) { return pi_test_pir(vec, &v->arch.hvm.vmx.pi_desc); } =20 -static void vmx_handle_eoi(uint8_t vector, int isr) +static void cf_check vmx_handle_eoi(uint8_t vector, int isr) { uint8_t old_svi =3D set_svi(isr); static bool warned; @@ -2112,7 +2118,7 @@ static void vmx_handle_eoi(uint8_t vector, int isr) printk(XENLOG_WARNING "EOI for %02x but SVI=3D%02x\n", vector, old= _svi); } =20 -static void vmx_enable_msr_interception(struct domain *d, uint32_t msr) +static void cf_check vmx_enable_msr_interception(struct domain *d, uint32_= t msr) { struct vcpu *v; =20 @@ -2120,12 +2126,12 @@ static void vmx_enable_msr_interception(struct doma= in *d, uint32_t msr) vmx_set_msr_intercept(v, msr, VMX_MSR_W); } =20 -static bool_t vmx_is_singlestep_supported(void) +static bool cf_check vmx_is_singlestep_supported(void) { return !!cpu_has_monitor_trap_flag; } =20 -static void vmx_vcpu_update_eptp(struct vcpu *v) +static void cf_check vmx_vcpu_update_eptp(struct vcpu *v) { struct domain *d =3D v->domain; struct p2m_domain *p2m =3D NULL; @@ -2150,7 +2156,7 @@ static void vmx_vcpu_update_eptp(struct vcpu *v) vmx_vmcs_exit(v); } =20 -static void vmx_vcpu_update_vmfunc_ve(struct vcpu *v) +static void cf_check vmx_vcpu_update_vmfunc_ve(struct vcpu *v) { struct domain *d =3D v->domain; u32 mask =3D SECONDARY_EXEC_ENABLE_VM_FUNCTIONS; @@ -2194,7 +2200,7 @@ static void vmx_vcpu_update_vmfunc_ve(struct vcpu *v) vmx_vmcs_exit(v); } =20 -static int vmx_vcpu_emulate_vmfunc(const struct cpu_user_regs *regs) +static int cf_check vmx_vcpu_emulate_vmfunc(const struct cpu_user_regs *re= gs) { int rc =3D X86EMUL_EXCEPTION; struct vcpu *curr =3D current; @@ -2207,7 +2213,7 @@ static int vmx_vcpu_emulate_vmfunc(const struct cpu_u= ser_regs *regs) return rc; } =20 -static bool_t vmx_vcpu_emulate_ve(struct vcpu *v) +static bool cf_check vmx_vcpu_emulate_ve(struct vcpu *v) { const struct page_info *pg =3D vcpu_altp2m(v).veinfo_pg; ve_info_t *veinfo; @@ -2244,7 +2250,8 @@ static bool_t vmx_vcpu_emulate_ve(struct vcpu *v) return rc; } =20 -static bool vmx_get_pending_event(struct vcpu *v, struct x86_event *info) +static bool cf_check vmx_get_pending_event( + struct vcpu *v, struct x86_event *info) { unsigned long intr_info, error_code; =20 @@ -2281,7 +2288,8 @@ static bool vmx_get_pending_event(struct vcpu *v, str= uct x86_event *info) (RTIT_STATUS_FILTER_EN | RTIT_STATUS_CONTEXT_EN | RTIT_STATUS_TRIGGER_= EN | \ RTIT_STATUS_ERROR | RTIT_STATUS_STOPPED) =20 -static int vmtrace_get_option(struct vcpu *v, uint64_t key, uint64_t *outp= ut) +static int cf_check vmtrace_get_option( + struct vcpu *v, uint64_t key, uint64_t *output) { const struct vcpu_msrs *msrs =3D v->arch.msrs; =20 @@ -2302,7 +2310,8 @@ static int vmtrace_get_option(struct vcpu *v, uint64_= t key, uint64_t *output) return 0; } =20 -static int vmtrace_set_option(struct vcpu *v, uint64_t key, uint64_t value) +static int cf_check vmtrace_set_option( + struct vcpu *v, uint64_t key, uint64_t value) { struct vcpu_msrs *msrs =3D v->arch.msrs; bool new_en, old_en =3D msrs->rtit.ctl & RTIT_CTL_TRACE_EN; @@ -2356,7 +2365,7 @@ static int vmtrace_set_option(struct vcpu *v, uint64_= t key, uint64_t value) return 0; } =20 -static int vmtrace_control(struct vcpu *v, bool enable, bool reset) +static int cf_check vmtrace_control(struct vcpu *v, bool enable, bool rese= t) { struct vcpu_msrs *msrs =3D v->arch.msrs; uint64_t new_ctl; @@ -2388,13 +2397,13 @@ static int vmtrace_control(struct vcpu *v, bool ena= ble, bool reset) return 0; } =20 -static int vmtrace_output_position(struct vcpu *v, uint64_t *pos) +static int cf_check vmtrace_output_position(struct vcpu *v, uint64_t *pos) { *pos =3D v->arch.msrs->rtit.output_offset; return v->arch.hvm.vmx.ipt_active; } =20 -static int vmtrace_reset(struct vcpu *v) +static int cf_check vmtrace_reset(struct vcpu *v) { if ( !v->arch.hvm.vmx.ipt_active ) return -EINVAL; @@ -2764,7 +2773,7 @@ void update_guest_eip(void) hvm_inject_hw_exception(TRAP_debug, X86_EVENT_NO_EC); } =20 -static void vmx_fpu_dirty_intercept(void) +static void cf_check vmx_fpu_dirty_intercept(void) { struct vcpu *curr =3D current; =20 @@ -2799,7 +2808,7 @@ static void vmx_invlpg_intercept(unsigned long linear) paging_invlpg(current, linear); } =20 -static void vmx_invlpg(struct vcpu *v, unsigned long linear) +static void cf_check vmx_invlpg(struct vcpu *v, unsigned long linear) { if ( cpu_has_vmx_vpid ) vpid_sync_vcpu_gva(v, linear); @@ -3125,7 +3134,8 @@ static int is_last_branch_msr(u32 ecx) return 0; } =20 -static int vmx_msr_read_intercept(unsigned int msr, uint64_t *msr_content) +static int cf_check vmx_msr_read_intercept( + unsigned int msr, uint64_t *msr_content) { struct vcpu *curr =3D current; uint64_t tmp; @@ -3328,7 +3338,8 @@ void vmx_vlapic_msr_changed(struct vcpu *v) vmx_vmcs_exit(v); } =20 -static int vmx_msr_write_intercept(unsigned int msr, uint64_t msr_content) +static int cf_check vmx_msr_write_intercept( + unsigned int msr, uint64_t msr_content) { struct vcpu *v =3D current; const struct cpuid_policy *cp =3D v->domain->arch.cpuid; @@ -3528,7 +3539,7 @@ static void vmx_do_extint(struct cpu_user_regs *regs) do_IRQ(regs); } =20 -static void vmx_wbinvd_intercept(void) +static void cf_check vmx_wbinvd_intercept(void) { if ( !cache_flush_permitted(current->domain) || iommu_snoop ) return; diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index e9f94daf6493..12d80be9ee57 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -62,7 +62,7 @@ void nvmx_cpu_dead(unsigned int cpu) XFREE(per_cpu(vvmcs_buf, cpu)); } =20 -int nvmx_vcpu_initialise(struct vcpu *v) +int cf_check nvmx_vcpu_initialise(struct vcpu *v) { struct domain *d =3D v->domain; struct nestedvmx *nvmx =3D &vcpu_2_nvmx(v); @@ -150,7 +150,7 @@ int nvmx_vcpu_initialise(struct vcpu *v) return 0; } =20 -void nvmx_vcpu_destroy(struct vcpu *v) +void cf_check nvmx_vcpu_destroy(struct vcpu *v) { struct nestedvmx *nvmx =3D &vcpu_2_nvmx(v); struct nestedvcpu *nvcpu =3D &vcpu_nestedhvm(v); @@ -199,7 +199,7 @@ static void vcpu_relinquish_resources(struct vcpu *v) FREE_XENHEAP_PAGE(nvmx->msr_merged); } =20 -void nvmx_domain_relinquish_resources(struct domain *d) +void cf_check nvmx_domain_relinquish_resources(struct domain *d) { struct vcpu *v; =20 @@ -210,17 +210,17 @@ void nvmx_domain_relinquish_resources(struct domain *= d) } } =20 -int nvmx_vcpu_reset(struct vcpu *v) +int cf_check nvmx_vcpu_reset(struct vcpu *v) { return 0; } =20 -uint64_t nvmx_vcpu_eptp_base(struct vcpu *v) +uint64_t cf_check nvmx_vcpu_eptp_base(struct vcpu *v) { return get_vvmcs(v, EPT_POINTER) & PAGE_MASK; } =20 -bool_t nvmx_ept_enabled(struct vcpu *v) +bool cf_check nvmx_ept_enabled(struct vcpu *v) { struct nestedvmx *nvmx =3D &vcpu_2_nvmx(v); =20 @@ -514,7 +514,7 @@ static void vmfail(struct cpu_user_regs *regs, enum vmx= _insn_errno errno) vmfail_invalid(regs); } =20 -bool_t nvmx_intercepts_exception( +bool cf_check nvmx_intercepts_exception( struct vcpu *v, unsigned int vector, int error_code) { u32 exception_bitmap, pfec_match=3D0, pfec_mask=3D0; @@ -2346,10 +2346,9 @@ int nvmx_msr_read_intercept(unsigned int msr, u64 *m= sr_content) * walk is successful, the translated value is returned in * L1_gpa. The result value tells what to do next. */ -int -nvmx_hap_walk_L1_p2m(struct vcpu *v, paddr_t L2_gpa, paddr_t *L1_gpa, - unsigned int *page_order, uint8_t *p2m_acc, - bool_t access_r, bool_t access_w, bool_t access_x) +int cf_check nvmx_hap_walk_L1_p2m( + struct vcpu *v, paddr_t L2_gpa, paddr_t *L1_gpa, unsigned int *page_or= der, + uint8_t *p2m_acc, bool access_r, bool access_w, bool access_x) { int rc; unsigned long gfn; diff --git a/xen/include/asm-x86/hvm/svm/nestedsvm.h b/xen/include/asm-x86/= hvm/svm/nestedsvm.h index 087369845761..32ba092a30cd 100644 --- a/xen/include/asm-x86/hvm/svm/nestedsvm.h +++ b/xen/include/asm-x86/hvm/svm/nestedsvm.h @@ -107,24 +107,24 @@ nestedsvm_check_intercepts(struct vcpu *v, struct cpu= _user_regs *regs, void svm_nested_features_on_efer_update(struct vcpu *v); =20 /* Interface methods */ -void nsvm_vcpu_destroy(struct vcpu *v); -int nsvm_vcpu_initialise(struct vcpu *v); -int nsvm_vcpu_reset(struct vcpu *v); +void cf_check nsvm_vcpu_destroy(struct vcpu *v); +int cf_check nsvm_vcpu_initialise(struct vcpu *v); +int cf_check nsvm_vcpu_reset(struct vcpu *v); int nsvm_vcpu_vmrun(struct vcpu *v, struct cpu_user_regs *regs); -int nsvm_vcpu_vmexit_event(struct vcpu *v, const struct x86_event *event); -uint64_t nsvm_vcpu_hostcr3(struct vcpu *v); -bool_t nsvm_vmcb_guest_intercepts_event( +int cf_check nsvm_vcpu_vmexit_event(struct vcpu *v, const struct x86_event= *event); +uint64_t cf_check nsvm_vcpu_hostcr3(struct vcpu *v); +bool cf_check nsvm_vmcb_guest_intercepts_event( struct vcpu *v, unsigned int vector, int errcode); -bool_t nsvm_vmcb_hap_enabled(struct vcpu *v); -enum hvm_intblk nsvm_intr_blocked(struct vcpu *v); +bool cf_check nsvm_vmcb_hap_enabled(struct vcpu *v); +enum hvm_intblk cf_check nsvm_intr_blocked(struct vcpu *v); =20 /* Interrupts, vGIF */ void svm_vmexit_do_clgi(struct cpu_user_regs *regs, struct vcpu *v); void svm_vmexit_do_stgi(struct cpu_user_regs *regs, struct vcpu *v); bool_t nestedsvm_gif_isset(struct vcpu *v); -int nsvm_hap_walk_L1_p2m(struct vcpu *v, paddr_t L2_gpa, paddr_t *L1_gpa, - unsigned int *page_order, uint8_t *p2m_acc, - bool_t access_r, bool_t access_w, bool_t access_x= ); +int cf_check nsvm_hap_walk_L1_p2m( + struct vcpu *v, paddr_t L2_gpa, paddr_t *L1_gpa, unsigned int *page_or= der, + uint8_t *p2m_acc, bool access_r, bool access_w, bool access_x); =20 #define NSVM_INTR_NOTHANDLED 3 #define NSVM_INTR_NOTINTERCEPTED 2 diff --git a/xen/include/asm-x86/hvm/svm/svm.h b/xen/include/asm-x86/hvm/sv= m/svm.h index 05e968502694..6292133ca21e 100644 --- a/xen/include/asm-x86/hvm/svm/svm.h +++ b/xen/include/asm-x86/hvm/svm/svm.h @@ -47,7 +47,6 @@ static inline void svm_invlpga(unsigned long linear, uint= 32_t asid) =20 unsigned long *svm_msrbit(unsigned long *msr_bitmap, uint32_t msr); void __update_guest_eip(struct cpu_user_regs *regs, unsigned int inst_len); -void svm_update_guest_cr(struct vcpu *, unsigned int cr, unsigned int flag= s); =20 /* * PV context switch helpers. Prefetching the VMCB area itself has been s= hown diff --git a/xen/include/asm-x86/hvm/vmx/vmcs.h b/xen/include/asm-x86/hvm/v= mx/vmcs.h index 03c9ccf627ab..9119aa8536df 100644 --- a/xen/include/asm-x86/hvm/vmx/vmcs.h +++ b/xen/include/asm-x86/hvm/vmx/vmcs.h @@ -22,10 +22,10 @@ =20 extern void vmcs_dump_vcpu(struct vcpu *v); extern int vmx_vmcs_init(void); -extern int vmx_cpu_up_prepare(unsigned int cpu); -extern void vmx_cpu_dead(unsigned int cpu); -extern int vmx_cpu_up(void); -extern void vmx_cpu_down(void); +int cf_check vmx_cpu_up_prepare(unsigned int cpu); +void cf_check vmx_cpu_dead(unsigned int cpu); +int cf_check vmx_cpu_up(void); +void cf_check vmx_cpu_down(void); =20 struct vmcs_struct { u32 vmcs_revision_id; diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h b/xen/include/asm-x86/hvm/vm= x/vmx.h index 85530d2e0e26..459c84dd9f09 100644 --- a/xen/include/asm-x86/hvm/vmx/vmx.h +++ b/xen/include/asm-x86/hvm/vmx/vmx.h @@ -587,7 +587,7 @@ static inline int __vmxon(u64 addr) return rc; } =20 -int vmx_guest_x86_mode(struct vcpu *v); +int cf_check vmx_guest_x86_mode(struct vcpu *v); unsigned int vmx_get_cpl(void); =20 void vmx_inject_extint(int trap, uint8_t source); diff --git a/xen/include/asm-x86/hvm/vmx/vvmx.h b/xen/include/asm-x86/hvm/v= mx/vvmx.h index d5f68f30b129..6726c26f09fa 100644 --- a/xen/include/asm-x86/hvm/vmx/vvmx.h +++ b/xen/include/asm-x86/hvm/vmx/vvmx.h @@ -84,26 +84,25 @@ union vmx_inst_info { u32 word; }; =20 -int nvmx_vcpu_initialise(struct vcpu *v); -void nvmx_vcpu_destroy(struct vcpu *v); -int nvmx_vcpu_reset(struct vcpu *v); -uint64_t nvmx_vcpu_eptp_base(struct vcpu *v); -enum hvm_intblk nvmx_intr_blocked(struct vcpu *v); -bool_t nvmx_intercepts_exception( +int cf_check nvmx_vcpu_initialise(struct vcpu *v); +void cf_check nvmx_vcpu_destroy(struct vcpu *v); +int cf_check nvmx_vcpu_reset(struct vcpu *v); +uint64_t cf_check nvmx_vcpu_eptp_base(struct vcpu *v); +enum hvm_intblk cf_check nvmx_intr_blocked(struct vcpu *v); +bool cf_check nvmx_intercepts_exception( struct vcpu *v, unsigned int vector, int error_code); -void nvmx_domain_relinquish_resources(struct domain *d); +void cf_check nvmx_domain_relinquish_resources(struct domain *d); =20 -bool_t nvmx_ept_enabled(struct vcpu *v); +bool cf_check nvmx_ept_enabled(struct vcpu *v); =20 #define EPT_TRANSLATE_SUCCEED 0 #define EPT_TRANSLATE_VIOLATION 1 #define EPT_TRANSLATE_MISCONFIG 2 #define EPT_TRANSLATE_RETRY 3 =20 -int -nvmx_hap_walk_L1_p2m(struct vcpu *v, paddr_t L2_gpa, paddr_t *L1_gpa, - unsigned int *page_order, uint8_t *p2m_acc, - bool_t access_r, bool_t access_w, bool_t access_x); +int cf_check nvmx_hap_walk_L1_p2m( + struct vcpu *v, paddr_t L2_gpa, paddr_t *L1_gpa, unsigned int *page_or= der, + uint8_t *p2m_acc, bool access_r, bool access_w, bool access_x); /* * Virtual VMCS layout * --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932072; cv=none; d=zohomail.com; s=zohoarc; b=jDj8Ud9hY47gdT+b4PkTovtQyyOt0bhqx6QKuXgQ6RFxg20lvfXU6EXMJfWGXg+p7L6kJ9cH3VEuS8p3yk3uVRvDBU1+wHLeZtDc+5qTgoPxoSeDbbCG4MOjovc2FO8k9hHvnRjnnaT/80feDkuVxOEM2AucDAXidJ5YhW6CEXI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932072; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZNwHDdqXUXRr9XDPUPkJIpfTNiouCsCRi6ylrPHEkwE=; b=X+mcUBWIPx20bPXTBzFxCYcK/uuTiZue+BLQzu2y1cJh3m9spw/x8F+P0Kw5Nme64iqKrrcAQId0Ipypu0669j/yCrvCmzdHdipMBxC/HFLToh7T4d4oN9KF/aMthHPQjPnNdn72h8aQc+YWF6zCuhBiviPab+kGQmPTza3C8w0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932072289523.1116523211533; Fri, 26 Nov 2021 05:07:52 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232836.403952 (Exim 4.92) (envelope-from ) id 1mqaww-0002az-6x; Fri, 26 Nov 2021 13:07:34 +0000 Received: by outflank-mailman (output) from mailman id 232836.403952; Fri, 26 Nov 2021 13:07:34 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawv-0002Xh-9B; Fri, 26 Nov 2021 13:07:33 +0000 Received: by outflank-mailman (input) for mailman id 232836; Fri, 26 Nov 2021 13:07:30 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavj-0003W9-LZ for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:19 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a3605815-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:17 +0100 (CET) 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: a3605815-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931977; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UJ5A9G/AzcOIhdVCJGvCmHSUkDZkQpv6RgU2BBYBZyw=; b=SxTES20FTHjp6aXbB4yxoa30Jc5qsA2tR+eEYJPSzqV0ABNlJy7gPa9k MPJi1Sl3YkQ46NTgtmytKeKvPYxlJQu779WtzyvOPiBlbEpQZjVoKw+lY MGCzJ108sKTenNzmyhOu0wkBJUzElZMmk0oaTzzKF2jj4uLbks/BRQbuf E=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: KF1gOr6TbldRrSvVXEjgO5zpAxqCD1SOx5b1qfJMq4qGtq0nXiDC0kEje7R7le/vodhGai4Qo3 myU48NdSI88Uud5m+mPach0vtRG9VBygXFtDSXNUExvTfksp6ImoF6oUnyfekaCb8LpEFu6DH0 m4V19HTk1LqtzHe+gR3/PVzsdwmDY3v5pqA2Hnc4CeWJ5WMe/1WLdKk6gYHI4TRGBcW3hddX0k q23qkFgywyb+SbrnT4QZB9O5tBThskaERPYphaw//bpGF6JcWJ6Cvvub4tB1ckAu4wpM0JvZX6 Y/3Ej4+0bJcquas/MkVC9q9x X-SBRS: 5.1 X-MesageID: 58635072 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:7dMC6KhnumFeJs5YkNa1K6gZX161rRcKZh0ujC45NGQN5FlHY01je htvXTrUa/eDZmXxf4wiPo6+8R4GsJ6BmNNmTQFprSgxQn8b9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0F0/NtTo5w7Rg29cy34Dja++wk YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx /19v82JFRUtHJTOv9szWSthCCRjPpZvreqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr KJCbmpXN1ba2rzwkOnTpupE36zPKOHCOo8Ft24m5jbeFfs8GrjIQrnQ5M8e1zA17ixLNauOO ZFEMWU1BPjGSw1JAW1LUawmpdb2lkTRSnpIqUOwjJNitgA/yyQuieOwYbI5YOeiWsF9jkue4 GXc8AzRIDsXKdiewjqt6W+3i6nEmiaTcJIfEvi0++BnhHWXx3cPE1sGWF2ju/67h0WiHdVFJ CQpFjEG9PZoshbxF5+kAkP+8CXsUgMgt8R4I+dr0V2fzojt4SGmKGI2dyVEdd8dnZpjLdA17 WOhk9TsDD1plbSaT3OB67uZxQ+P1TgpwXwqPnFdE1ZcizX3iMRq10+UEI4/eEKgpoStQWmY/ tyckMQpa1z/Z+Yv3r7zw13IiinESnPhHl9svVW/so5IA2pEiG+Zi26AtQezARVodt/xory9U J4swJP2AAcmV8zlqcB1aL9RdIxFHt7cWNEmvXZhHoM66xOm8GO5cIZb7VlWfRkybZZaJGC4P BGP4mu9AaO/2lPxNsebhKrrVqwXIVXIT4y5Bpg4kPISCnSOSON31H43PhPBt4wcuEMtjbs+K f+mnTWEVh4n5VBc5GPuHY81iOZzrghnnD+7bc2rnnyPjOvFDFbIGOhtDbd7Rr1ghE9yiF6Oq Ig32grj40g3bdASlQGLq9NOdg5TciBgbX00wuQOHtO+zsNdMDlJI5fsLXkJIeSJRoxZybXF+ G+TQEhdxAatjHHLM1zSOHtidKnuTdB0qndiZX4gOlOh2n4CZ4ez7fhAK8trLOd/rOEzn+RpS /QletmbBqgdQDrw5DlAP4L2q5ZvdUr3iFvWbTalejU2Y7VpWxfNpo3/ZgLq+SRXVni3uMIyr qeOzATeRZZfFQ1uANyPMKCkzk+rvGhbk+V3BhOaLt5WcUTq0Y5rNy2u0aNnf5BScU3On2LI2 RyXDBEUofj2j7U0qNSZ17qZq4qJEvdlGhYIFWfs8rvrZzLR+XCuwNEcXb/QLyzdTm795I6re f5Rk6PnKPQCkVtH79h8HrJswf5s7tfjveYHnAFtHXGNZFW3ELJwZHKB2JAX5KFKw7ZYvyqwW 16OpYYGaenYZpu9HQ5DPhchY8SCyeoQy2vb4vkCKUnn4DN6oeicWkJIMhjQ0CFQIdOZ6m/+L TvNbCLO1zGCtw== IronPort-HdrOrdr: A9a23:kgkWcKOlaP3ZkcBcTvujsMiBIKoaSvp037Eqv3oRdfUzSL3hqy nOpoVj6faaskdzZJhNo7+90ey7MBfhHP1OkO8s1NWZLWvbUQKTRekIh+aP/9SjIVyYygc079 YaT0EUMr3N5DZB4/oSmDPIduod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58635072" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 29/65] x86/hvm: Annotate fnptr targets from device emulation Date: Fri, 26 Nov 2021 12:34:10 +0000 Message-ID: <20211126123446.32324-30-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932073757100005 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/emul-i8254.c | 8 +++---- xen/arch/x86/hvm/emulate.c | 21 ++++++++--------- xen/arch/x86/hvm/hpet.c | 6 ++--- xen/arch/x86/hvm/hvm.c | 2 +- xen/arch/x86/hvm/intercept.c | 28 +++++++++++++---------- xen/arch/x86/hvm/io.c | 38 +++++++++++++++++----------= ---- xen/arch/x86/hvm/ioreq.c | 2 +- xen/arch/x86/hvm/pmtimer.c | 4 ++-- xen/arch/x86/hvm/rtc.c | 6 ++--- xen/arch/x86/hvm/stdvga.c | 19 ++++++++-------- xen/arch/x86/hvm/svm/svm.c | 4 ++-- xen/arch/x86/hvm/vioapic.c | 8 +++---- xen/arch/x86/hvm/vlapic.c | 11 +++++---- xen/arch/x86/hvm/vmsi.c | 14 +++++++----- xen/arch/x86/hvm/vpic.c | 4 ++-- xen/drivers/passthrough/amd/iommu_guest.c | 10 ++++---- xen/include/asm-x86/hvm/vioapic.h | 2 +- 17 files changed, 98 insertions(+), 89 deletions(-) diff --git a/xen/arch/x86/emul-i8254.c b/xen/arch/x86/emul-i8254.c index 050c784702af..0e09a173187f 100644 --- a/xen/arch/x86/emul-i8254.c +++ b/xen/arch/x86/emul-i8254.c @@ -48,9 +48,9 @@ #define RW_STATE_WORD0 3 #define RW_STATE_WORD1 4 =20 -static int handle_pit_io( +static int cf_check handle_pit_io( int dir, unsigned int port, unsigned int bytes, uint32_t *val); -static int handle_speaker_io( +static int cf_check handle_speaker_io( int dir, unsigned int port, unsigned int bytes, uint32_t *val); =20 #define get_guest_time(v) \ @@ -505,7 +505,7 @@ void pit_deinit(struct domain *d) } =20 /* the intercept action for PIT DM retval:0--not handled; 1--handled */ =20 -static int handle_pit_io( +static int cf_check handle_pit_io( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct PITState *vpit =3D vcpu_vpit(current); @@ -548,7 +548,7 @@ static uint32_t speaker_ioport_read( (pit_get_out(pit, 2) << 5) | (refresh_clock << 4)); } =20 -static int handle_speaker_io( +static int cf_check handle_speaker_io( int dir, unsigned int port, uint32_t bytes, uint32_t *val) { struct PITState *vpit =3D vcpu_vpit(current); diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index 425c8ddd9779..bd4e3ab6456e 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -71,19 +71,17 @@ static void hvmtrace_io_assist(const ioreq_t *p) trace_var(event, 0/*!cycles*/, size, buffer); } =20 -static int null_read(const struct hvm_io_handler *io_handler, - uint64_t addr, - uint32_t size, - uint64_t *data) +static int cf_check null_read( + const struct hvm_io_handler *io_handler, uint64_t addr, uint32_t size, + uint64_t *data) { *data =3D ~0ul; return X86EMUL_OKAY; } =20 -static int null_write(const struct hvm_io_handler *handler, - uint64_t addr, - uint32_t size, - uint64_t data) +static int cf_check null_write( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t data) { return X86EMUL_OKAY; } @@ -114,10 +112,9 @@ static const struct hvm_io_handler null_handler =3D { .ops =3D &null_ops }; =20 -static int ioreq_server_read(const struct hvm_io_handler *io_handler, - uint64_t addr, - uint32_t size, - uint64_t *data) +static int cf_check ioreq_server_read( + const struct hvm_io_handler *io_handler, uint64_t addr, uint32_t size, + uint64_t *data) { if ( hvm_copy_from_guest_phys(data, addr, size) !=3D HVMTRANS_okay ) return X86EMUL_UNHANDLEABLE; diff --git a/xen/arch/x86/hvm/hpet.c b/xen/arch/x86/hvm/hpet.c index 8267f0b8a278..7bdb51cfa1c4 100644 --- a/xen/arch/x86/hvm/hpet.c +++ b/xen/arch/x86/hvm/hpet.c @@ -162,7 +162,7 @@ static inline int hpet_check_access_length( return 0; } =20 -static int hpet_read( +static int cf_check hpet_read( struct vcpu *v, unsigned long addr, unsigned int length, unsigned long *pval) { @@ -351,7 +351,7 @@ static void timer_sanitize_int_route(HPETState *h, unsi= gned int tn) HPET_TN_ROUTE); } =20 -static int hpet_write( +static int cf_check hpet_write( struct vcpu *v, unsigned long addr, unsigned int length, unsigned long val) { @@ -569,7 +569,7 @@ static int hpet_write( return X86EMUL_OKAY; } =20 -static int hpet_range(struct vcpu *v, unsigned long addr) +static int cf_check hpet_range(struct vcpu *v, unsigned long addr) { return ( (addr >=3D HPET_BASE_ADDRESS) && (addr < (HPET_BASE_ADDRESS + HPET_MMAP_SIZE)) ); diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 16e8a32fa768..785add50896a 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -576,7 +576,7 @@ void hvm_do_resume(struct vcpu *v) } } =20 -static int hvm_print_line( +static int cf_check hvm_print_line( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct domain *cd =3D current->domain; diff --git a/xen/arch/x86/hvm/intercept.c b/xen/arch/x86/hvm/intercept.c index 02ca3b05b05a..ffa31b746716 100644 --- a/xen/arch/x86/hvm/intercept.c +++ b/xen/arch/x86/hvm/intercept.c @@ -32,8 +32,8 @@ #include #include =20 -static bool_t hvm_mmio_accept(const struct hvm_io_handler *handler, - const ioreq_t *p) +static bool cf_check hvm_mmio_accept( + const struct hvm_io_handler *handler, const ioreq_t *p) { paddr_t first =3D ioreq_mmio_first_byte(p), last; =20 @@ -51,16 +51,18 @@ static bool_t hvm_mmio_accept(const struct hvm_io_handl= er *handler, return 1; } =20 -static int hvm_mmio_read(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t *data) +static int cf_check hvm_mmio_read( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t *data) { BUG_ON(handler->type !=3D IOREQ_TYPE_COPY); =20 return handler->mmio.ops->read(current, addr, size, data); } =20 -static int hvm_mmio_write(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t data) +static int cf_check hvm_mmio_write( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t data) { BUG_ON(handler->type !=3D IOREQ_TYPE_COPY); =20 @@ -73,8 +75,8 @@ static const struct hvm_io_ops mmio_ops =3D { .write =3D hvm_mmio_write }; =20 -static bool_t hvm_portio_accept(const struct hvm_io_handler *handler, - const ioreq_t *p) +static bool cf_check hvm_portio_accept( + const struct hvm_io_handler *handler, const ioreq_t *p) { unsigned int start =3D handler->portio.port; unsigned int end =3D start + handler->portio.size; @@ -84,8 +86,9 @@ static bool_t hvm_portio_accept(const struct hvm_io_handl= er *handler, return (p->addr >=3D start) && ((p->addr + p->size) <=3D end); } =20 -static int hvm_portio_read(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t *data) +static int cf_check hvm_portio_read( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t *data) { uint32_t val =3D ~0u; int rc; @@ -98,8 +101,9 @@ static int hvm_portio_read(const struct hvm_io_handler *= handler, return rc; } =20 -static int hvm_portio_write(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t data) +static int cf_check hvm_portio_write( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t data) { uint32_t val =3D data; =20 diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c index 93f1d1503fa6..f70bfde90143 100644 --- a/xen/arch/x86/hvm/io.c +++ b/xen/arch/x86/hvm/io.c @@ -156,8 +156,8 @@ bool handle_pio(uint16_t port, unsigned int size, int d= ir) return true; } =20 -static bool_t g2m_portio_accept(const struct hvm_io_handler *handler, - const ioreq_t *p) +static bool cf_check g2m_portio_accept( + const struct hvm_io_handler *handler, const ioreq_t *p) { struct vcpu *curr =3D current; const struct hvm_domain *hvm =3D &curr->domain->arch.hvm; @@ -179,8 +179,9 @@ static bool_t g2m_portio_accept(const struct hvm_io_han= dler *handler, return 0; } =20 -static int g2m_portio_read(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t *data) +static int cf_check g2m_portio_read( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t *data) { struct hvm_vcpu_io *hvio =3D ¤t->arch.hvm.hvm_io; const struct g2m_ioport *g2m_ioport =3D hvio->g2m_ioport; @@ -204,8 +205,9 @@ static int g2m_portio_read(const struct hvm_io_handler = *handler, return X86EMUL_OKAY; } =20 -static int g2m_portio_write(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t data) +static int cf_check g2m_portio_write( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t data) { struct hvm_vcpu_io *hvio =3D ¤t->arch.hvm.hvm_io; const struct g2m_ioport *g2m_ioport =3D hvio->g2m_ioport; @@ -261,14 +263,15 @@ unsigned int hvm_pci_decode_addr(unsigned int cf8, un= signed int addr, } =20 /* vPCI config space IO ports handlers (0xcf8/0xcfc). */ -static bool vpci_portio_accept(const struct hvm_io_handler *handler, - const ioreq_t *p) +static bool cf_check vpci_portio_accept( + const struct hvm_io_handler *handler, const ioreq_t *p) { return (p->addr =3D=3D 0xcf8 && p->size =3D=3D 4) || (p->addr & ~3) = =3D=3D 0xcfc; } =20 -static int vpci_portio_read(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t *data) +static int cf_check vpci_portio_read( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t *data) { const struct domain *d =3D current->domain; unsigned int reg; @@ -299,8 +302,9 @@ static int vpci_portio_read(const struct hvm_io_handler= *handler, return X86EMUL_OKAY; } =20 -static int vpci_portio_write(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t data) +static int cf_check vpci_portio_write( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t data) { struct domain *d =3D current->domain; unsigned int reg; @@ -387,7 +391,7 @@ static unsigned int vpci_mmcfg_decode_addr(const struct= hvm_mmcfg *mmcfg, return addr & (PCI_CFG_SPACE_EXP_SIZE - 1); } =20 -static int vpci_mmcfg_accept(struct vcpu *v, unsigned long addr) +static int cf_check vpci_mmcfg_accept(struct vcpu *v, unsigned long addr) { struct domain *d =3D v->domain; bool found; @@ -399,8 +403,8 @@ static int vpci_mmcfg_accept(struct vcpu *v, unsigned l= ong addr) return found; } =20 -static int vpci_mmcfg_read(struct vcpu *v, unsigned long addr, - unsigned int len, unsigned long *data) +static int cf_check vpci_mmcfg_read( + struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *d= ata) { struct domain *d =3D v->domain; const struct hvm_mmcfg *mmcfg; @@ -426,8 +430,8 @@ static int vpci_mmcfg_read(struct vcpu *v, unsigned lon= g addr, return X86EMUL_OKAY; } =20 -static int vpci_mmcfg_write(struct vcpu *v, unsigned long addr, - unsigned int len, unsigned long data) +static int cf_check vpci_mmcfg_write( + struct vcpu *v, unsigned long addr, unsigned int len, unsigned long da= ta) { struct domain *d =3D v->domain; const struct hvm_mmcfg *mmcfg; diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c index 02ad9db56523..8409d910d689 100644 --- a/xen/arch/x86/hvm/ioreq.c +++ b/xen/arch/x86/hvm/ioreq.c @@ -319,7 +319,7 @@ bool arch_ioreq_server_get_type_addr(const struct domai= n *d, return true; } =20 -static int hvm_access_cf8( +static int cf_check hvm_access_cf8( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct domain *d =3D current->domain; diff --git a/xen/arch/x86/hvm/pmtimer.c b/xen/arch/x86/hvm/pmtimer.c index 808819d1de91..60e3c8de4c6b 100644 --- a/xen/arch/x86/hvm/pmtimer.c +++ b/xen/arch/x86/hvm/pmtimer.c @@ -152,7 +152,7 @@ static void cf_check pmt_timer_callback(void *opaque) } =20 /* Handle port I/O to the PM1a_STS and PM1a_EN registers */ -static int handle_evt_io( +static int cf_check handle_evt_io( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct vcpu *v =3D current; @@ -216,7 +216,7 @@ static int handle_evt_io( =20 =20 /* Handle port I/O to the TMR_VAL register */ -static int handle_pmt_io( +static int cf_check handle_pmt_io( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct vcpu *v =3D current; diff --git a/xen/arch/x86/hvm/rtc.c b/xen/arch/x86/hvm/rtc.c index 09d3501276bc..bdc647e433e9 100644 --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -696,7 +696,7 @@ static uint32_t rtc_ioport_read(RTCState *s, uint32_t a= ddr) return ret; } =20 -static int handle_rtc_io( +static int cf_check handle_rtc_io( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct RTCState *vrtc =3D vcpu_vrtc(current); @@ -809,8 +809,8 @@ void rtc_reset(struct domain *d) } =20 /* RTC mediator for HVM hardware domain. */ -static int hw_rtc_io(int dir, unsigned int port, unsigned int size, - uint32_t *val) +static int cf_check hw_rtc_io( + int dir, unsigned int port, unsigned int size, uint32_t *val) { if ( dir =3D=3D IOREQ_READ ) *val =3D ~0; diff --git a/xen/arch/x86/hvm/stdvga.c b/xen/arch/x86/hvm/stdvga.c index ab9781d82a55..be8200c8d072 100644 --- a/xen/arch/x86/hvm/stdvga.c +++ b/xen/arch/x86/hvm/stdvga.c @@ -199,7 +199,7 @@ static void stdvga_out(uint32_t port, uint32_t bytes, u= int32_t val) } } =20 -static int stdvga_intercept_pio( +static int cf_check stdvga_intercept_pio( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct hvm_hw_stdvga *s =3D ¤t->domain->arch.hvm.stdvga; @@ -302,8 +302,9 @@ static uint8_t stdvga_mem_readb(uint64_t addr) return ret; } =20 -static int stdvga_mem_read(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, uint64_t *p_data) +static int cf_check stdvga_mem_read( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t *p_data) { uint64_t data =3D ~0ul; =20 @@ -453,9 +454,9 @@ static void stdvga_mem_writeb(uint64_t addr, uint32_t v= al) } } =20 -static int stdvga_mem_write(const struct hvm_io_handler *handler, - uint64_t addr, uint32_t size, - uint64_t data) +static int cf_check stdvga_mem_write( + const struct hvm_io_handler *handler, uint64_t addr, uint32_t size, + uint64_t data) { struct hvm_hw_stdvga *s =3D ¤t->domain->arch.hvm.stdvga; ioreq_t p =3D { @@ -514,8 +515,8 @@ static int stdvga_mem_write(const struct hvm_io_handler= *handler, return ioreq_send(srv, &p, 1); } =20 -static bool_t stdvga_mem_accept(const struct hvm_io_handler *handler, - const ioreq_t *p) +static bool cf_check stdvga_mem_accept( + const struct hvm_io_handler *handler, const ioreq_t *p) { struct hvm_hw_stdvga *s =3D ¤t->domain->arch.hvm.stdvga; =20 @@ -558,7 +559,7 @@ static bool_t stdvga_mem_accept(const struct hvm_io_han= dler *handler, return 0; } =20 -static void stdvga_mem_complete(const struct hvm_io_handler *handler) +static void cf_check stdvga_mem_complete(const struct hvm_io_handler *hand= ler) { struct hvm_hw_stdvga *s =3D ¤t->domain->arch.hvm.stdvga; =20 diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 9c62c0cd80ee..ffa7c51e376f 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -1129,8 +1129,8 @@ static void svm_host_osvw_init(void) spin_unlock(&osvw_lock); } =20 -static int acpi_c1e_quirk(int dir, unsigned int port, unsigned int bytes, - uint32_t *val) +static int cf_check acpi_c1e_quirk( + int dir, unsigned int port, unsigned int bytes, uint32_t *val) { ASSERT(bytes =3D=3D 1 && port =3D=3D acpi_smi_cmd); =20 diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index 553c0f76eff8..b56549aa22d1 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -135,7 +135,7 @@ static uint32_t vioapic_read_indirect(const struct hvm_= vioapic *vioapic) return result; } =20 -static int vioapic_read( +static int cf_check vioapic_read( struct vcpu *v, unsigned long addr, unsigned int length, unsigned long *pval) { @@ -351,7 +351,7 @@ static void vioapic_write_indirect( } } =20 -static int vioapic_write( +static int cf_check vioapic_write( struct vcpu *v, unsigned long addr, unsigned int length, unsigned long val) { @@ -383,7 +383,7 @@ static int vioapic_write( return X86EMUL_OKAY; } =20 -static int vioapic_range(struct vcpu *v, unsigned long addr) +static int cf_check vioapic_range(struct vcpu *v, unsigned long addr) { return !!addr_vioapic(v->domain, addr); } @@ -568,7 +568,7 @@ int vioapic_get_mask(const struct domain *d, unsigned i= nt gsi) return vioapic->redirtbl[pin].fields.mask; } =20 -int vioapic_get_vector(const struct domain *d, unsigned int gsi) +int cf_check vioapic_get_vector(const struct domain *d, unsigned int gsi) { unsigned int pin =3D 0; /* See gsi_vioapic */ const struct hvm_vioapic *vioapic =3D gsi_vioapic(d, gsi, &pin); diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index fe375912bef1..652e3cb87f12 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -615,8 +615,9 @@ static uint32_t vlapic_read_aligned(const struct vlapic= *vlapic, return 0; } =20 -static int vlapic_mmio_read(struct vcpu *v, unsigned long address, - unsigned int len, unsigned long *pval) +static int cf_check vlapic_mmio_read( + struct vcpu *v, unsigned long address, unsigned int len, + unsigned long *pval) { struct vlapic *vlapic =3D vcpu_vlapic(v); unsigned int offset =3D address - vlapic_base_address(vlapic); @@ -898,8 +899,8 @@ void vlapic_reg_write(struct vcpu *v, unsigned int reg,= uint32_t val) } } =20 -static int vlapic_mmio_write(struct vcpu *v, unsigned long address, - unsigned int len, unsigned long val) +static int cf_check vlapic_mmio_write( + struct vcpu *v, unsigned long address, unsigned int len, unsigned long= val) { struct vlapic *vlapic =3D vcpu_vlapic(v); unsigned int offset =3D address - vlapic_base_address(vlapic); @@ -1052,7 +1053,7 @@ int guest_wrmsr_x2apic(struct vcpu *v, uint32_t msr, = uint64_t msr_content) return X86EMUL_OKAY; } =20 -static int vlapic_range(struct vcpu *v, unsigned long addr) +static int cf_check vlapic_range(struct vcpu *v, unsigned long addr) { struct vlapic *vlapic =3D vcpu_vlapic(v); unsigned long offset =3D addr - vlapic_base_address(vlapic); diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c index 2889575a2035..d4a8c953e23f 100644 --- a/xen/arch/x86/hvm/vmsi.c +++ b/xen/arch/x86/hvm/vmsi.c @@ -211,8 +211,9 @@ static struct msi_desc *msixtbl_addr_to_desc( return NULL; } =20 -static int msixtbl_read(const struct hvm_io_handler *handler, - uint64_t address, uint32_t len, uint64_t *pval) +static int cf_check msixtbl_read( + const struct hvm_io_handler *handler, uint64_t address, uint32_t len, + uint64_t *pval) { unsigned long offset; struct msixtbl_entry *entry; @@ -350,14 +351,15 @@ static int msixtbl_write(struct vcpu *v, unsigned lon= g address, return r; } =20 -static int _msixtbl_write(const struct hvm_io_handler *handler, - uint64_t address, uint32_t len, uint64_t val) +static int cf_check _msixtbl_write( + const struct hvm_io_handler *handler, uint64_t address, uint32_t len, + uint64_t val) { return msixtbl_write(current, address, len, val); } =20 -static bool_t msixtbl_range(const struct hvm_io_handler *handler, - const ioreq_t *r) +static bool cf_check msixtbl_range( + const struct hvm_io_handler *handler, const ioreq_t *r) { struct vcpu *curr =3D current; unsigned long addr =3D r->addr; diff --git a/xen/arch/x86/hvm/vpic.c b/xen/arch/x86/hvm/vpic.c index 91c2c6983393..5d8ef259b710 100644 --- a/xen/arch/x86/hvm/vpic.c +++ b/xen/arch/x86/hvm/vpic.c @@ -351,7 +351,7 @@ static uint32_t vpic_ioport_read(struct hvm_hw_vpic *vp= ic, uint32_t addr) return vpic->imr; } =20 -static int vpic_intercept_pic_io( +static int cf_check vpic_intercept_pic_io( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct hvm_hw_vpic *vpic; @@ -373,7 +373,7 @@ static int vpic_intercept_pic_io( return X86EMUL_OKAY; } =20 -static int vpic_intercept_elcr_io( +static int cf_check vpic_intercept_elcr_io( int dir, unsigned int port, unsigned int bytes, uint32_t *val) { struct hvm_hw_vpic *vpic; diff --git a/xen/drivers/passthrough/amd/iommu_guest.c b/xen/drivers/passth= rough/amd/iommu_guest.c index 361ff864d846..80a331f546ed 100644 --- a/xen/drivers/passthrough/amd/iommu_guest.c +++ b/xen/drivers/passthrough/amd/iommu_guest.c @@ -645,8 +645,8 @@ static uint64_t iommu_mmio_read64(struct guest_iommu *i= ommu, return val; } =20 -static int guest_iommu_mmio_read(struct vcpu *v, unsigned long addr, - unsigned int len, unsigned long *pval) +static int cf_check guest_iommu_mmio_read( + struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *p= val) { struct guest_iommu *iommu =3D vcpu_iommu(v); unsigned long offset; @@ -735,8 +735,8 @@ static void guest_iommu_mmio_write64(struct guest_iommu= *iommu, } } =20 -static int guest_iommu_mmio_write(struct vcpu *v, unsigned long addr, - unsigned int len, unsigned long val) +static int cf_check guest_iommu_mmio_write( + struct vcpu *v, unsigned long addr, unsigned int len, unsigned long va= l) { struct guest_iommu *iommu =3D vcpu_iommu(v); unsigned long offset; @@ -819,7 +819,7 @@ static void guest_iommu_reg_init(struct guest_iommu *io= mmu) iommu->reg_ext_feature =3D ef; } =20 -static int guest_iommu_mmio_range(struct vcpu *v, unsigned long addr) +static int cf_check guest_iommu_mmio_range(struct vcpu *v, unsigned long a= ddr) { struct guest_iommu *iommu =3D vcpu_iommu(v); =20 diff --git a/xen/include/asm-x86/hvm/vioapic.h b/xen/include/asm-x86/hvm/vi= oapic.h index 36b64d20d60c..2944ec20dd53 100644 --- a/xen/include/asm-x86/hvm/vioapic.h +++ b/xen/include/asm-x86/hvm/vioapic.h @@ -66,7 +66,7 @@ void vioapic_irq_positive_edge(struct domain *d, unsigned= int irq); void vioapic_update_EOI(struct domain *d, u8 vector); =20 int vioapic_get_mask(const struct domain *d, unsigned int gsi); -int vioapic_get_vector(const struct domain *d, unsigned int gsi); +int cf_check vioapic_get_vector(const struct domain *d, unsigned int gsi); int vioapic_get_trigger_mode(const struct domain *d, unsigned int gsi); =20 #endif /* __ASM_X86_HVM_VIOAPIC_H__ */ --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932120; cv=none; d=zohomail.com; s=zohoarc; b=mbHwy6EzB3H4PWBzlwNeoFFOpMYljFBaaC8+5oqi0RZSOgmSVAaY4ktupaAI6LcoaRI5xV1uLjYwUCLAekL75ydKyd3Y0UhQrWwVTT7ZKRs1ynIWUW+yHTCcJwF4OGXiyzV86x2at7KninRsmNBuxNfHiRcJ0RET+z8+bEJ4yx4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932120; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kGaM8THEiBIIU/LIuE+Mfwa/kMt7Ix7Oc2u9qLXe7U0=; b=PpVq/tK4l5xOKWBnFdj48nAY7FkG48XoVLe8nx0Ra8uEMFT6gRB9Ky7eOrdX1/KHNxR8G39uRadQBCBBovI5tdZDPCkuaBGCZ96pPgeW1LknFkccz8L+RJ7cJ8Kg/IKAF+6bKfXos+r/Hjez2vVSpt9ZQnwZ0Vwk4Xf5+wwppmI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932120096565.4544727362209; Fri, 26 Nov 2021 05:08:40 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232892.404163 (Exim 4.92) (envelope-from ) id 1mqaxg-0004n8-V5; Fri, 26 Nov 2021 13:08:20 +0000 Received: by outflank-mailman (output) from mailman id 232892.404163; Fri, 26 Nov 2021 13:08:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxf-0004iE-1A; Fri, 26 Nov 2021 13:08:19 +0000 Received: by outflank-mailman (input) for mailman id 232892; Fri, 26 Nov 2021 13:08:14 +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 1mqavA-0002zD-U5 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:45 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 8f4a651c-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:42 +0100 (CET) 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: 8f4a651c-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931942; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PgE5BFcBHa/MwQQAVsmO5Ee04lSQ5qVW11+nLEj1wp4=; b=H7g5rZYT41F70oe1cJdZdm3aVmxBYnwx9sdYATmi7FSvVBbsxSS/1nRt AVh36QOWQj+orshX0tcxtgOhp9AzwRVsuOOMMn4Z0FOj022nfB/nxoMME VEqYTySFAR5k6kkhWT5J2QqAgxUp8rIGhjPhYvmdZXO3IAzKxz6nySjQI Q=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: RXJkyoZCtH2jLoH126WkT5H5cqN2zPvp2yyG0NGemrHgn5Qr2zeVZ0zkRZ42+8NaN/YZO6oIZ6 5uCzOSje0jMb3/OqRH49S4FgyZCEdWf2LwDzwJX5Ze5Eu61zsMpFXqZclaUSjeiMNy6ytJLsto iGgWCilxHnkr9xEsD7rRRHd+D2iROjlkkb1hB6MZUM8GijyZGPsn5bqK6nxWk9rxcQYXvFGKfB 1YXcKPBFSi3/qwFunXWEXVCTUYIKvqJ/lmTL0Cn+35/FiCNu7UMHG6zOraUDkqLd76zbtXeYxM 9zrzeAEELp+MaPIH8J+OeBHH X-SBRS: 5.1 X-MesageID: 58676416 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:1ivs0Kkffdzw9xMy4DWVWCDo5gxMIURdPkR7XQ2eYbSJt1+Wr1Gzt xJNXGqAOvyCZmbwKYpxYY/g8klSuJDdxt5iHQQ5/ypjFyMWpZLJC+rCIxarNUt+DCFioGGLT Sk6QoOdRCzhZiaE/n9BClVlxJVF/fngqoDUUYYoAQgsA187IMsdoUg7wbdg29Q22YLR7z6l4 rseneWOYDdJ5BYsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3fMldG0DQUIhMdtNWc s6YpF2PEsE1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXee0v0XRYRQR4/ttmHozx+4 IRSl62Sch8bBaHNt8YedB1EPCxyF4QTrdcrIVDn2SCS50jPcn+qyPRyFkAme4Yf/46bA0kXq 6ZecmpUKEne2aTmm9pXScE17ignBODtMJkSpTdLyjbBAOx9aZvCX7/L9ZlT2zJYasVmQKaAO JRFMGQHgBLoQTFFfUoqBZUChNyUoHrYLBlejH2KjP9ii4TU5FMoi+W8WDbPQfSVQe1Fk0Deo XjJl0zbKBwHMN2UyRKe72mhwOTImEvTSI8UUbG16PNuqFmS3XAITg0bU0Ohpvu0gVL4XMhQQ 3H44QJ38/J0rhbyCICgAVvo+xZooyLwRfIBDM8LyjqV+JHY4im7BU8AUhFMZPYP4ZpeqSMR6 neFmNbgBDpKubKTSG6A+rr8kQ5eKRT5PkdZO3ZaEFJtD83L5dhq00mRFooL/Lud14WtQVnNL ya2QD/Sbln5peoCzO2F8F/OmFpATbCZH1dutm07so9Ihz6VhbJJhaT0tjA3Dt4ade51q2VtW lBfwKByC8hUUPmweNSlGrllIV1Qz6/t3MfgqVBuBYI90D+m5mSue4tdiBknehw2YphZJm61P hOI0e+02HO1FCDxBUOQS9jsY/nGMIC6TYi1PhwqRoYmjmdNmP+vo3g1OB/4M5HFm0kwi6AvU ap3gu73ZUv2/Z9PlWLsL89EiOdD7nlnmQv7GMCqpzz6gOH2TCPEFt843K6mM7lRAFWs+16Or b6y9qKiln1ibQEJSnWNrNNIcwlVdSNT6FKfg5U/S9Nv6zFOQAkJY8I9C5t4E2C8t6gKxOrO4 F+nXUpUlAj2iXHdcF3YYXF/crL/G514qCtjbyArOF+p3VklYJqus/hDJ8dmI+F/+bwx1+NwQ tkEZ96EXqZFRAPY9mlPdpL6toFjKkim3FrcIyq/bTEjVJd8XAiVqMT8dw7i+XBWXCq6vMczu ZO60QbfTcZRTghuFp+OOvmu00mwrT4Wn+crBxnEJdxaeUPN9ol2KnOu0q9rcp9UcRian2mUz QebBxsctNLhmY5t/Ymbn72AoqeoD/B6QhhQEV7E4OvkLiLd5Gein9NNCb7aYTDHWWro06y+f uEJnerkOfgKkVsW4YpxF7FnkfA369f1/uIIyw1lGDPAbkixC6MmKX6DhJEduqpIz75fmA23R kPQpYUKZeTXYJvoQAwLOQ4oTuWfzvVFyDDd4MM8LFj++CIqrqGMVl9fPkXUhSFQRFev3FjJH Qv1VBYq1jGC IronPort-HdrOrdr: A9a23:N48GrKs+6mNkzEnpHfRSSjPC7skDTtV00zEX/kB9WHVpmszxra 6TdZMgpGbJYVcqKRcdcL+7WJVoLUmxyXcx2/h1AV7AZniAhILLFvAA0WKK+VSJcEeSygce79 YFT0EXMqyJMbEQt6fHCWeDfOrIuOP3kpyVuQ== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676416" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 30/65] x86/emul: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:11 +0000 Message-ID: <20211126123446.32324-31-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932121928100003 pv_emul_is_mem_write() only has a single user. Having it as a static inline is pointless because it can't be inlined to begin with. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/hvm/emulate.c | 72 +++++++++++++++++-------------= ---- xen/arch/x86/hvm/hvm.c | 8 ++-- xen/arch/x86/hvm/svm/svm.c | 4 +- xen/arch/x86/mm.c | 4 +- xen/arch/x86/mm/shadow/hvm.c | 8 ++-- xen/arch/x86/pv/emul-gate-op.c | 5 ++- xen/arch/x86/pv/emul-priv-op.c | 65 +++++++++++++++--------------- xen/arch/x86/pv/emulate.h | 7 ---- xen/arch/x86/pv/ro-page-fault.c | 25 +++++++----- xen/arch/x86/x86_emulate.c | 21 +++++----- xen/arch/x86/x86_emulate/x86_emulate.c | 10 ++--- xen/arch/x86/x86_emulate/x86_emulate.h | 33 ++++++++-------- xen/include/asm-x86/hvm/emulate.h | 8 ++-- xen/include/asm-x86/mm.h | 16 +++----- 14 files changed, 142 insertions(+), 144 deletions(-) diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index bd4e3ab6456e..952e28e5b212 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -1272,7 +1272,7 @@ static int __hvmemul_read( return linear_read(addr, bytes, p_data, pfec, hvmemul_ctxt); } =20 -static int hvmemul_read( +static int cf_check hvmemul_read( enum x86_segment seg, unsigned long offset, void *p_data, @@ -1290,7 +1290,7 @@ static int hvmemul_read( container_of(ctxt, struct hvm_emulate_ctxt, ctxt)); } =20 -int hvmemul_insn_fetch( +int cf_check hvmemul_insn_fetch( enum x86_segment seg, unsigned long offset, void *p_data, @@ -1337,7 +1337,7 @@ int hvmemul_insn_fetch( return X86EMUL_OKAY; } =20 -static int hvmemul_write( +static int cf_check hvmemul_write( enum x86_segment seg, unsigned long offset, void *p_data, @@ -1385,7 +1385,7 @@ static int hvmemul_write( return X86EMUL_OKAY; } =20 -static int hvmemul_rmw( +static int cf_check hvmemul_rmw( enum x86_segment seg, unsigned long offset, unsigned int bytes, @@ -1438,7 +1438,7 @@ static int hvmemul_rmw( return rc; } =20 -static int hvmemul_blk( +static int cf_check hvmemul_blk( enum x86_segment seg, unsigned long offset, void *p_data, @@ -1479,7 +1479,7 @@ static int hvmemul_blk( return rc; } =20 -static int hvmemul_write_discard( +static int cf_check hvmemul_write_discard( enum x86_segment seg, unsigned long offset, void *p_data, @@ -1490,7 +1490,7 @@ static int hvmemul_write_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_rep_ins_discard( +static int cf_check hvmemul_rep_ins_discard( uint16_t src_port, enum x86_segment dst_seg, unsigned long dst_offset, @@ -1501,7 +1501,7 @@ static int hvmemul_rep_ins_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_rep_movs_discard( +static int cf_check hvmemul_rep_movs_discard( enum x86_segment src_seg, unsigned long src_offset, enum x86_segment dst_seg, @@ -1513,7 +1513,7 @@ static int hvmemul_rep_movs_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_rep_stos_discard( +static int cf_check hvmemul_rep_stos_discard( void *p_data, enum x86_segment seg, unsigned long offset, @@ -1524,7 +1524,7 @@ static int hvmemul_rep_stos_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_rep_outs_discard( +static int cf_check hvmemul_rep_outs_discard( enum x86_segment src_seg, unsigned long src_offset, uint16_t dst_port, @@ -1535,7 +1535,7 @@ static int hvmemul_rep_outs_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_cmpxchg_discard( +static int cf_check hvmemul_cmpxchg_discard( enum x86_segment seg, unsigned long offset, void *p_old, @@ -1547,7 +1547,7 @@ static int hvmemul_cmpxchg_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_read_io_discard( +static int cf_check hvmemul_read_io_discard( unsigned int port, unsigned int bytes, unsigned long *val, @@ -1556,7 +1556,7 @@ static int hvmemul_read_io_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_write_io_discard( +static int cf_check hvmemul_write_io_discard( unsigned int port, unsigned int bytes, unsigned long val, @@ -1565,7 +1565,7 @@ static int hvmemul_write_io_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_write_msr_discard( +static int cf_check hvmemul_write_msr_discard( unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt) @@ -1573,7 +1573,7 @@ static int hvmemul_write_msr_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_cache_op_discard( +static int cf_check hvmemul_cache_op_discard( enum x86emul_cache_op op, enum x86_segment seg, unsigned long offset, @@ -1582,7 +1582,7 @@ static int hvmemul_cache_op_discard( return X86EMUL_OKAY; } =20 -static int hvmemul_cmpxchg( +static int cf_check hvmemul_cmpxchg( enum x86_segment seg, unsigned long offset, void *p_old, @@ -1676,7 +1676,7 @@ static int hvmemul_cmpxchg( return rc; } =20 -static int hvmemul_validate( +static int cf_check hvmemul_validate( const struct x86_emulate_state *state, struct x86_emulate_ctxt *ctxt) { @@ -1689,7 +1689,7 @@ static int hvmemul_validate( ? X86EMUL_OKAY : X86EMUL_UNHANDLEABLE; } =20 -static int hvmemul_rep_ins( +static int cf_check hvmemul_rep_ins( uint16_t src_port, enum x86_segment dst_seg, unsigned long dst_offset, @@ -1767,7 +1767,7 @@ static int hvmemul_rep_outs_set_context( return rc; } =20 -static int hvmemul_rep_outs( +static int cf_check hvmemul_rep_outs( enum x86_segment src_seg, unsigned long src_offset, uint16_t dst_port, @@ -1808,7 +1808,7 @@ static int hvmemul_rep_outs( !!(ctxt->regs->eflags & X86_EFLAGS_DF), gpa= ); } =20 -static int hvmemul_rep_movs( +static int cf_check hvmemul_rep_movs( enum x86_segment src_seg, unsigned long src_offset, enum x86_segment dst_seg, @@ -1978,7 +1978,7 @@ static int hvmemul_rep_movs( return X86EMUL_UNHANDLEABLE; } =20 -static int hvmemul_rep_stos( +static int cf_check hvmemul_rep_stos( void *p_data, enum x86_segment seg, unsigned long offset, @@ -2106,7 +2106,7 @@ static int hvmemul_rep_stos( } } =20 -static int hvmemul_read_segment( +static int cf_check hvmemul_read_segment( enum x86_segment seg, struct segment_register *reg, struct x86_emulate_ctxt *ctxt) @@ -2123,7 +2123,7 @@ static int hvmemul_read_segment( return X86EMUL_OKAY; } =20 -static int hvmemul_write_segment( +static int cf_check hvmemul_write_segment( enum x86_segment seg, const struct segment_register *reg, struct x86_emulate_ctxt *ctxt) @@ -2142,7 +2142,7 @@ static int hvmemul_write_segment( return X86EMUL_OKAY; } =20 -static int hvmemul_read_io( +static int cf_check hvmemul_read_io( unsigned int port, unsigned int bytes, unsigned long *val, @@ -2159,7 +2159,7 @@ static int hvmemul_read_io( return hvmemul_do_pio_buffer(port, bytes, IOREQ_READ, val); } =20 -static int hvmemul_write_io( +static int cf_check hvmemul_write_io( unsigned int port, unsigned int bytes, unsigned long val, @@ -2168,7 +2168,7 @@ static int hvmemul_write_io( return hvmemul_do_pio_buffer(port, bytes, IOREQ_WRITE, &val); } =20 -static int hvmemul_read_cr( +static int cf_check hvmemul_read_cr( unsigned int reg, unsigned long *val, struct x86_emulate_ctxt *ctxt) @@ -2189,7 +2189,7 @@ static int hvmemul_read_cr( return X86EMUL_UNHANDLEABLE; } =20 -static int hvmemul_write_cr( +static int cf_check hvmemul_write_cr( unsigned int reg, unsigned long val, struct x86_emulate_ctxt *ctxt) @@ -2233,7 +2233,7 @@ static int hvmemul_write_cr( return rc; } =20 -static int hvmemul_read_xcr( +static int cf_check hvmemul_read_xcr( unsigned int reg, uint64_t *val, struct x86_emulate_ctxt *ctxt) @@ -2246,7 +2246,7 @@ static int hvmemul_read_xcr( return rc; } =20 -static int hvmemul_write_xcr( +static int cf_check hvmemul_write_xcr( unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt) @@ -2256,7 +2256,7 @@ static int hvmemul_write_xcr( return x86emul_write_xcr(reg, val, ctxt); } =20 -static int hvmemul_read_msr( +static int cf_check hvmemul_read_msr( unsigned int reg, uint64_t *val, struct x86_emulate_ctxt *ctxt) @@ -2269,7 +2269,7 @@ static int hvmemul_read_msr( return rc; } =20 -static int hvmemul_write_msr( +static int cf_check hvmemul_write_msr( unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt) @@ -2282,7 +2282,7 @@ static int hvmemul_write_msr( return rc; } =20 -static int hvmemul_cache_op( +static int cf_check hvmemul_cache_op( enum x86emul_cache_op op, enum x86_segment seg, unsigned long offset, @@ -2352,7 +2352,7 @@ static int hvmemul_cache_op( return X86EMUL_OKAY; } =20 -static int hvmemul_get_fpu( +static int cf_check hvmemul_get_fpu( enum x86_emulate_fpu_type type, struct x86_emulate_ctxt *ctxt) { @@ -2394,7 +2394,7 @@ static int hvmemul_get_fpu( return X86EMUL_OKAY; } =20 -static void hvmemul_put_fpu( +static void cf_check hvmemul_put_fpu( struct x86_emulate_ctxt *ctxt, enum x86_emulate_fpu_type backout, const struct x86_emul_fpu_aux *aux) @@ -2481,7 +2481,7 @@ static void hvmemul_put_fpu( } } =20 -static int hvmemul_tlb_op( +static int cf_check hvmemul_tlb_op( enum x86emul_tlb_op op, unsigned long addr, unsigned long aux, @@ -2538,7 +2538,7 @@ static int hvmemul_tlb_op( return rc; } =20 -static int hvmemul_vmfunc( +static int cf_check hvmemul_vmfunc( struct x86_emulate_ctxt *ctxt) { int rc; diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 785add50896a..fdc0b86bf091 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -3737,8 +3737,8 @@ int hvm_msr_write_intercept(unsigned int msr, uint64_= t msr_content, return X86EMUL_EXCEPTION; } =20 -static bool is_sysdesc_access(const struct x86_emulate_state *state, - const struct x86_emulate_ctxt *ctxt) +static bool cf_check is_sysdesc_access( + const struct x86_emulate_state *state, const struct x86_emulate_ctxt *= ctxt) { unsigned int ext; int mode =3D x86_insn_modrm(state, NULL, &ext); @@ -3778,8 +3778,8 @@ int hvm_descriptor_access_intercept(uint64_t exit_inf= o, return X86EMUL_OKAY; } =20 -static bool is_cross_vendor(const struct x86_emulate_state *state, - const struct x86_emulate_ctxt *ctxt) +static bool cf_check is_cross_vendor( + const struct x86_emulate_state *state, const struct x86_emulate_ctxt *= ctxt) { switch ( ctxt->opcode ) { diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index ffa7c51e376f..c01477c97c09 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -2443,8 +2443,8 @@ static void svm_invlpg_intercept(unsigned long linear) paging_invlpg(current, linear); } =20 -static bool is_invlpg(const struct x86_emulate_state *state, - const struct x86_emulate_ctxt *ctxt) +static bool cf_check is_invlpg( + const struct x86_emulate_state *state, const struct x86_emulate_ctxt *= ctxt) { unsigned int ext; =20 diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 5d7acf705fb8..b60eb99d1094 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -4838,7 +4838,7 @@ long arch_memory_op(unsigned long cmd, XEN_GUEST_HAND= LE_PARAM(void) arg) return 0; } =20 -int mmio_ro_emulated_write( +int cf_check mmio_ro_emulated_write( enum x86_segment seg, unsigned long offset, void *p_data, @@ -4859,7 +4859,7 @@ int mmio_ro_emulated_write( return X86EMUL_OKAY; } =20 -int mmcfg_intercept_write( +int cf_check mmcfg_intercept_write( enum x86_segment seg, unsigned long offset, void *p_data, diff --git a/xen/arch/x86/mm/shadow/hvm.c b/xen/arch/x86/mm/shadow/hvm.c index d5f42102a0bd..ea99dd714fc3 100644 --- a/xen/arch/x86/mm/shadow/hvm.c +++ b/xen/arch/x86/mm/shadow/hvm.c @@ -148,7 +148,7 @@ hvm_read(enum x86_segment seg, return X86EMUL_UNHANDLEABLE; } =20 -static int +static int cf_check hvm_emulate_read(enum x86_segment seg, unsigned long offset, void *p_data, @@ -161,7 +161,7 @@ hvm_emulate_read(enum x86_segment seg, container_of(ctxt, struct sh_emulate_ctxt, ctxt)); } =20 -static int +static int cf_check hvm_emulate_insn_fetch(enum x86_segment seg, unsigned long offset, void *p_data, @@ -184,7 +184,7 @@ hvm_emulate_insn_fetch(enum x86_segment seg, return X86EMUL_OKAY; } =20 -static int +static int cf_check hvm_emulate_write(enum x86_segment seg, unsigned long offset, void *p_data, @@ -237,7 +237,7 @@ hvm_emulate_write(enum x86_segment seg, return X86EMUL_OKAY; } =20 -static int +static int cf_check hvm_emulate_cmpxchg(enum x86_segment seg, unsigned long offset, void *p_old, diff --git a/xen/arch/x86/pv/emul-gate-op.c b/xen/arch/x86/pv/emul-gate-op.c index 43d847abd0ab..17a32b649ab5 100644 --- a/xen/arch/x86/pv/emul-gate-op.c +++ b/xen/arch/x86/pv/emul-gate-op.c @@ -96,8 +96,9 @@ struct gate_op_ctxt { bool insn_fetch; }; =20 -static int read_mem(enum x86_segment seg, unsigned long offset, void *p_da= ta, - unsigned int bytes, struct x86_emulate_ctxt *ctxt) +static int cf_check read_mem( + enum x86_segment seg, unsigned long offset, void *p_data, + unsigned int bytes, struct x86_emulate_ctxt *ctxt) { const struct gate_op_ctxt *goc =3D container_of(ctxt, struct gate_op_ctxt, ctxt); diff --git a/xen/arch/x86/pv/emul-priv-op.c b/xen/arch/x86/pv/emul-priv-op.c index 7f4279a0517b..808ff1873352 100644 --- a/xen/arch/x86/pv/emul-priv-op.c +++ b/xen/arch/x86/pv/emul-priv-op.c @@ -358,8 +358,9 @@ static unsigned int check_guest_io_breakpoint(struct vc= pu *v, return match; } =20 -static int read_io(unsigned int port, unsigned int bytes, - unsigned long *val, struct x86_emulate_ctxt *ctxt) +static int cf_check read_io( + unsigned int port, unsigned int bytes, unsigned long *val, + struct x86_emulate_ctxt *ctxt) { struct priv_op_ctxt *poc =3D container_of(ctxt, struct priv_op_ctxt, c= txt); struct vcpu *curr =3D current; @@ -462,8 +463,9 @@ static void guest_io_write(unsigned int port, unsigned = int bytes, } } =20 -static int write_io(unsigned int port, unsigned int bytes, - unsigned long val, struct x86_emulate_ctxt *ctxt) +static int cf_check write_io( + unsigned int port, unsigned int bytes, unsigned long val, + struct x86_emulate_ctxt *ctxt) { struct priv_op_ctxt *poc =3D container_of(ctxt, struct priv_op_ctxt, c= txt); struct vcpu *curr =3D current; @@ -493,9 +495,9 @@ static int write_io(unsigned int port, unsigned int byt= es, return X86EMUL_OKAY; } =20 -static int read_segment(enum x86_segment seg, - struct segment_register *reg, - struct x86_emulate_ctxt *ctxt) +static int cf_check read_segment( + enum x86_segment seg, struct segment_register *reg, + struct x86_emulate_ctxt *ctxt) { /* Check if this is an attempt to access the I/O bitmap. */ if ( seg =3D=3D x86_seg_tr ) @@ -607,10 +609,10 @@ static int pv_emul_virt_to_linear(unsigned long base,= unsigned long offset, return rc; } =20 -static int rep_ins(uint16_t port, - enum x86_segment seg, unsigned long offset, - unsigned int bytes_per_rep, unsigned long *reps, - struct x86_emulate_ctxt *ctxt) +static int cf_check rep_ins( + uint16_t port, enum x86_segment seg, unsigned long offset, + unsigned int bytes_per_rep, unsigned long *reps, + struct x86_emulate_ctxt *ctxt) { struct priv_op_ctxt *poc =3D container_of(ctxt, struct priv_op_ctxt, c= txt); struct vcpu *curr =3D current; @@ -675,10 +677,10 @@ static int rep_ins(uint16_t port, return X86EMUL_OKAY; } =20 -static int rep_outs(enum x86_segment seg, unsigned long offset, - uint16_t port, - unsigned int bytes_per_rep, unsigned long *reps, - struct x86_emulate_ctxt *ctxt) +static int cf_check rep_outs( + enum x86_segment seg, unsigned long offset, uint16_t port, + unsigned int bytes_per_rep, unsigned long *reps, + struct x86_emulate_ctxt *ctxt) { struct priv_op_ctxt *poc =3D container_of(ctxt, struct priv_op_ctxt, c= txt); struct vcpu *curr =3D current; @@ -744,8 +746,8 @@ static int rep_outs(enum x86_segment seg, unsigned long= offset, return X86EMUL_OKAY; } =20 -static int read_cr(unsigned int reg, unsigned long *val, - struct x86_emulate_ctxt *ctxt) +static int cf_check read_cr( + unsigned int reg, unsigned long *val, struct x86_emulate_ctxt *ctxt) { const struct vcpu *curr =3D current; =20 @@ -787,8 +789,8 @@ static int read_cr(unsigned int reg, unsigned long *val, return X86EMUL_UNHANDLEABLE; } =20 -static int write_cr(unsigned int reg, unsigned long val, - struct x86_emulate_ctxt *ctxt) +static int cf_check write_cr( + unsigned int reg, unsigned long val, struct x86_emulate_ctxt *ctxt) { struct vcpu *curr =3D current; =20 @@ -871,8 +873,8 @@ static uint64_t guest_efer(const struct domain *d) return val; } =20 -static int read_msr(unsigned int reg, uint64_t *val, - struct x86_emulate_ctxt *ctxt) +static int cf_check read_msr( + unsigned int reg, uint64_t *val, struct x86_emulate_ctxt *ctxt) { struct vcpu *curr =3D current; const struct domain *currd =3D curr->domain; @@ -1020,8 +1022,8 @@ static int read_msr(unsigned int reg, uint64_t *val, return ret; } =20 -static int write_msr(unsigned int reg, uint64_t val, - struct x86_emulate_ctxt *ctxt) +static int cf_check write_msr( + unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt) { struct vcpu *curr =3D current; const struct domain *currd =3D curr->domain; @@ -1188,8 +1190,9 @@ static int write_msr(unsigned int reg, uint64_t val, return X86EMUL_UNHANDLEABLE; } =20 -static int cache_op(enum x86emul_cache_op op, enum x86_segment seg, - unsigned long offset, struct x86_emulate_ctxt *ctxt) +static int cf_check cache_op( + enum x86emul_cache_op op, enum x86_segment seg, + unsigned long offset, struct x86_emulate_ctxt *ctxt) { ASSERT(op =3D=3D x86emul_wbinvd || op =3D=3D x86emul_wbnoinvd); =20 @@ -1208,8 +1211,8 @@ static int cache_op(enum x86emul_cache_op op, enum x8= 6_segment seg, return X86EMUL_OKAY; } =20 -static int validate(const struct x86_emulate_state *state, - struct x86_emulate_ctxt *ctxt) +static int cf_check validate( + const struct x86_emulate_state *state, struct x86_emulate_ctxt *ctxt) { switch ( ctxt->opcode ) { @@ -1258,11 +1261,9 @@ static int validate(const struct x86_emulate_state *= state, return X86EMUL_UNHANDLEABLE; } =20 -static int insn_fetch(enum x86_segment seg, - unsigned long offset, - void *p_data, - unsigned int bytes, - struct x86_emulate_ctxt *ctxt) +static int cf_check insn_fetch( + enum x86_segment seg, unsigned long offset, void *p_data, + unsigned int bytes, struct x86_emulate_ctxt *ctxt) { const struct priv_op_ctxt *poc =3D container_of(ctxt, struct priv_op_ctxt, ctxt); diff --git a/xen/arch/x86/pv/emulate.h b/xen/arch/x86/pv/emulate.h index 4b845b08e372..49a4d34832df 100644 --- a/xen/arch/x86/pv/emulate.h +++ b/xen/arch/x86/pv/emulate.h @@ -12,13 +12,6 @@ int pv_emul_read_descriptor(unsigned int sel, const stru= ct vcpu *v, =20 void pv_emul_instruction_done(struct cpu_user_regs *regs, unsigned long ri= p); =20 -static inline int pv_emul_is_mem_write(const struct x86_emulate_state *sta= te, - struct x86_emulate_ctxt *ctxt) -{ - return x86_insn_is_mem_write(state, ctxt) ? X86EMUL_OKAY - : X86EMUL_UNHANDLEABLE; -} - /* Return a pointer to the GDT/LDT descriptor referenced by sel. */ static inline const seg_desc_t *gdt_ldt_desc_ptr(unsigned int sel) { diff --git a/xen/arch/x86/pv/ro-page-fault.c b/xen/arch/x86/pv/ro-page-faul= t.c index ac5b66870c8c..276e11e16dff 100644 --- a/xen/arch/x86/pv/ro-page-fault.c +++ b/xen/arch/x86/pv/ro-page-fault.c @@ -26,6 +26,13 @@ #include "emulate.h" #include "mm.h" =20 +static int cf_check pv_emul_is_mem_write( + const struct x86_emulate_state *state, struct x86_emulate_ctxt *ctxt) +{ + return x86_insn_is_mem_write(state, ctxt) ? X86EMUL_OKAY + : X86EMUL_UNHANDLEABLE; +} + /********************* * Writable Pagetables */ @@ -35,9 +42,9 @@ struct ptwr_emulate_ctxt { l1_pgentry_t pte; }; =20 -static int ptwr_emulated_read(enum x86_segment seg, unsigned long offset, - void *p_data, unsigned int bytes, - struct x86_emulate_ctxt *ctxt) +static int cf_check ptwr_emulated_read( + enum x86_segment seg, unsigned long offset, void *p_data, + unsigned int bytes, struct x86_emulate_ctxt *ctxt) { unsigned int rc =3D bytes; unsigned long addr =3D offset; @@ -203,9 +210,9 @@ static int ptwr_emulated_update(unsigned long addr, int= pte_t *p_old, return X86EMUL_OKAY; } =20 -static int ptwr_emulated_write(enum x86_segment seg, unsigned long offset, - void *p_data, unsigned int bytes, - struct x86_emulate_ctxt *ctxt) +static int cf_check ptwr_emulated_write( + enum x86_segment seg, unsigned long offset, void *p_data, + unsigned int bytes, struct x86_emulate_ctxt *ctxt) { intpte_t val =3D 0; =20 @@ -221,9 +228,9 @@ static int ptwr_emulated_write(enum x86_segment seg, un= signed long offset, return ptwr_emulated_update(offset, NULL, val, bytes, ctxt); } =20 -static int ptwr_emulated_cmpxchg(enum x86_segment seg, unsigned long offse= t, - void *p_old, void *p_new, unsigned int by= tes, - bool lock, struct x86_emulate_ctxt *ctxt) +static int cf_check ptwr_emulated_cmpxchg( + enum x86_segment seg, unsigned long offset, void *p_old, void *p_new, + unsigned int bytes, bool lock, struct x86_emulate_ctxt *ctxt) { intpte_t old =3D 0, new =3D 0; int rc; diff --git a/xen/arch/x86/x86_emulate.c b/xen/arch/x86/x86_emulate.c index 1e082e6f3b2d..60191a94dc18 100644 --- a/xen/arch/x86/x86_emulate.c +++ b/xen/arch/x86/x86_emulate.c @@ -53,8 +53,8 @@ =20 #include "x86_emulate/x86_emulate.c" =20 -int x86emul_read_xcr(unsigned int reg, uint64_t *val, - struct x86_emulate_ctxt *ctxt) +int cf_check x86emul_read_xcr( + unsigned int reg, uint64_t *val, struct x86_emulate_ctxt *ctxt) { switch ( reg ) { @@ -77,8 +77,8 @@ int x86emul_read_xcr(unsigned int reg, uint64_t *val, } =20 /* Note: May be called with ctxt=3DNULL. */ -int x86emul_write_xcr(unsigned int reg, uint64_t val, - struct x86_emulate_ctxt *ctxt) +int cf_check x86emul_write_xcr( + unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt) { switch ( reg ) { @@ -100,8 +100,8 @@ int x86emul_write_xcr(unsigned int reg, uint64_t val, =20 #ifdef CONFIG_PV /* Called with NULL ctxt in hypercall context. */ -int x86emul_read_dr(unsigned int reg, unsigned long *val, - struct x86_emulate_ctxt *ctxt) +int cf_check x86emul_read_dr( + unsigned int reg, unsigned long *val, struct x86_emulate_ctxt *ctxt) { struct vcpu *curr =3D current; =20 @@ -143,8 +143,8 @@ int x86emul_read_dr(unsigned int reg, unsigned long *va= l, return X86EMUL_OKAY; } =20 -int x86emul_write_dr(unsigned int reg, unsigned long val, - struct x86_emulate_ctxt *ctxt) +int cf_check x86emul_write_dr( + unsigned int reg, unsigned long val, struct x86_emulate_ctxt *ctxt) { struct vcpu *curr =3D current; =20 @@ -167,8 +167,9 @@ int x86emul_write_dr(unsigned int reg, unsigned long va= l, } #endif /* CONFIG_PV */ =20 -int x86emul_cpuid(uint32_t leaf, uint32_t subleaf, - struct cpuid_leaf *res, struct x86_emulate_ctxt *ctxt) +int cf_check x86emul_cpuid( + uint32_t leaf, uint32_t subleaf, struct cpuid_leaf *res, + struct x86_emulate_ctxt *ctxt) { guest_cpuid(current, leaf, subleaf, res); =20 diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emul= ate/x86_emulate.c index 069acde51791..509b047a4889 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -2524,7 +2524,7 @@ static void adjust_bnd(struct x86_emulate_ctxt *ctxt, done:; } =20 -int x86emul_unhandleable_rw( +int cf_check x86emul_unhandleable_rw( enum x86_segment seg, unsigned long offset, void *p_data, @@ -12319,7 +12319,7 @@ x86_insn_operand_ea(const struct x86_emulate_state = *state, * memory operand (like POP), but it does not mean e.g. segment selector * loads, where the descriptor table access is considered an implicit one. */ -bool +bool cf_check x86_insn_is_mem_access(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt) { @@ -12411,7 +12411,7 @@ x86_insn_is_mem_access(const struct x86_emulate_sta= te *state, * loads, where the (possible) descriptor table write is considered an * implicit access. */ -bool +bool cf_check x86_insn_is_mem_write(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt) { @@ -12583,7 +12583,7 @@ x86_insn_is_mem_write(const struct x86_emulate_stat= e *state, return false; } =20 -bool +bool cf_check x86_insn_is_portio(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt) { @@ -12598,7 +12598,7 @@ x86_insn_is_portio(const struct x86_emulate_state *= state, return false; } =20 -bool +bool cf_check x86_insn_is_cr_access(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt) { diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emul= ate/x86_emulate.h index 4a483a464804..2c5635804bb8 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.h +++ b/xen/arch/x86/x86_emulate/x86_emulate.h @@ -743,7 +743,7 @@ static inline unsigned long *decode_gpr(struct cpu_user= _regs *regs, } =20 /* Unhandleable read, write or instruction fetch */ -int +int cf_check x86emul_unhandleable_rw( enum x86_segment seg, unsigned long offset, @@ -773,16 +773,16 @@ x86_insn_immediate(const struct x86_emulate_state *st= ate, unsigned int x86_insn_length(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt); -bool +bool cf_check x86_insn_is_mem_access(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt); -bool +bool cf_check x86_insn_is_mem_write(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt); -bool +bool cf_check x86_insn_is_portio(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt); -bool +bool cf_check x86_insn_is_cr_access(const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt); =20 @@ -794,17 +794,18 @@ void x86_emulate_free_state(struct x86_emulate_state = *state); =20 #ifdef __XEN__ =20 -int x86emul_read_xcr(unsigned int reg, uint64_t *val, - struct x86_emulate_ctxt *ctxt); -int x86emul_write_xcr(unsigned int reg, uint64_t val, - struct x86_emulate_ctxt *ctxt); - -int x86emul_read_dr(unsigned int reg, unsigned long *val, - struct x86_emulate_ctxt *ctxt); -int x86emul_write_dr(unsigned int reg, unsigned long val, - struct x86_emulate_ctxt *ctxt); -int x86emul_cpuid(uint32_t leaf, uint32_t subleaf, - struct cpuid_leaf *res, struct x86_emulate_ctxt *ctxt); +int cf_check x86emul_read_xcr( + unsigned int reg, uint64_t *val, struct x86_emulate_ctxt *ctxt); +int cf_check x86emul_write_xcr( + unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt); + +int cf_check x86emul_read_dr( + unsigned int reg, unsigned long *val, struct x86_emulate_ctxt *ctxt); +int cf_check x86emul_write_dr( + unsigned int reg, unsigned long val, struct x86_emulate_ctxt *ctxt); +int cf_check x86emul_cpuid( + uint32_t leaf, uint32_t subleaf, struct cpuid_leaf *res, + struct x86_emulate_ctxt *ctxt); =20 #endif =20 diff --git a/xen/include/asm-x86/hvm/emulate.h b/xen/include/asm-x86/hvm/em= ulate.h index 610078b28fca..8bebfb5105b2 100644 --- a/xen/include/asm-x86/hvm/emulate.h +++ b/xen/include/asm-x86/hvm/emulate.h @@ -92,11 +92,9 @@ static inline bool handle_mmio(void) return hvm_emulate_one_insn(x86_insn_is_mem_access, "MMIO"); } =20 -int hvmemul_insn_fetch(enum x86_segment seg, - unsigned long offset, - void *p_data, - unsigned int bytes, - struct x86_emulate_ctxt *ctxt); +int cf_check hvmemul_insn_fetch( + enum x86_segment seg, unsigned long offset, void *p_data, + unsigned int bytes, struct x86_emulate_ctxt *ctxt); int hvmemul_do_pio_buffer(uint16_t port, unsigned int size, uint8_t dir, diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index cb9052749963..1c849b96d583 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -546,16 +546,12 @@ struct mmio_ro_emulate_ctxt { unsigned int seg, bdf; }; =20 -extern int mmio_ro_emulated_write(enum x86_segment seg, - unsigned long offset, - void *p_data, - unsigned int bytes, - struct x86_emulate_ctxt *ctxt); -extern int mmcfg_intercept_write(enum x86_segment seg, - unsigned long offset, - void *p_data, - unsigned int bytes, - struct x86_emulate_ctxt *ctxt); +int cf_check mmio_ro_emulated_write( + enum x86_segment seg, unsigned long offset, void *p_data, + unsigned int bytes, struct x86_emulate_ctxt *ctxt); +int cf_check mmcfg_intercept_write( + enum x86_segment seg, unsigned long offset, void *p_data, + unsigned int bytes, struct x86_emulate_ctxt *ctxt); =20 int audit_adjust_pgtables(struct domain *d, int dir, int noisy); =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932032; cv=none; d=zohomail.com; s=zohoarc; b=PT6KgZ6877FWzvq8rUell1LcaiprwTobMmxWxBbAKqGV2LZMehLRpdIo0ib5wYtLh46ao+OFh8yUpCmEZBGN10wtNo94ZJ6opBApkX0b+UPKNFAZatsIdgPAEQBD7gneL/GokJPP9ns8AuGlmvt5zEo8N46fJN9lKzconibcgP4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932032; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hgDS1d0m6qnV+DBoEnzY6lgpM6HlNheCIOWlnNaLsVw=; b=SeMFz8gUAAeFQKCekksAhsWnicyMmNZfUIULxo4Csi+mnjChOo/0yl3GNN8Zha9Kj/j+xQdg2Fk0cdy3h+NcWT2uYXLoLcVT2QagohtS+WLnqBKTJiRDpo4wF4F+h8F74gtNo2wfpgY6rKmGDV8tu8LB8JSOIkXEEFidK82Muio= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163793203224066.91166590882142; Fri, 26 Nov 2021 05:07:12 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232772.403749 (Exim 4.92) (envelope-from ) id 1mqawL-0002do-04; Fri, 26 Nov 2021 13:06:57 +0000 Received: by outflank-mailman (output) from mailman id 232772.403749; Fri, 26 Nov 2021 13:06:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawK-0002da-SQ; Fri, 26 Nov 2021 13:06:56 +0000 Received: by outflank-mailman (input) for mailman id 232772; Fri, 26 Nov 2021 13:06:54 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauw-0003W9-Cz for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:30 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 8432bbe3-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:25 +0100 (CET) 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: 8432bbe3-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931924; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=SoaVzjnC4k/9FIXMh3yDocr0kLc2Ez0/muzxLvgq4vw=; b=PvMp2EXmQkxpELxTqpXudzECF0fP5Pk8XUpsDbesO0ll1Ik9nO+LvgbK EIg76Sj/fWo8GB1yMtYnheviLFK6fELRCpPJQSVnS1ZU47vpDX3n3chC4 bPQ4n0tTn9gTmKzRlcLyW2sIPAzEZDxBjG+WKK1fCNZTCPsZMHiSXlhj/ U=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: IPuR6OEJii/cuW4FHwFCAb2Qfs3WRyC9KwpwrtROb2XahnhvNwGGdsDrrZ3eFwChASeqicmiR/ 18xq+nx78zAajtR4lLwo1ySPrfG1hVo1Z+3YYHZSpnK18BM8yc/St7/fv2k0ip/WQVfhKY1w3e ArCLQ5GAsaODr0wP1N+lI+ze83h+d5+ChiTlxMLMEDibLn5wbcvrYar6/iW1FzqiJ4Xjvgp37d 7eWZyN1VHa50adIN+pxoeOSxkg8JEEo3ItAtO2C3T80V4tPNeRJEBJzXVnDYFxU9khB1i9UnN/ Q7pmY8EEw4XaGYHiI3yon+PM X-SBRS: 5.1 X-MesageID: 60695261 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:2qtBeqByL/MynRVW/+Xkw5YqxClBgxIJ4kV8jS/XYbTApDtxhjYDz WYYWWmOaanfNGqjKNh+bd6wp0MB7ZGGn99jQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMo/u1Si6FatANl1ElvU2zbue6WLGs1hxZH1c+EX5400w7wYbVv6Yz6TSHK1LV0 T/Ni5W31G+Ng1aY5UpNtspvADs21BjDkGtwUm4WPJinj3eH/5UhN7oNJLnZEpfNatI88thW5 Qr05OrREmvxp3/BAz4++1rxWhVirrX6ZWBihpfKMkQLb9crSiEai84G2PQghUh/jifUv/JX1 N9x8pmXGBcxY5P+xaMaakwNe81+FfUuFL7vJHG+tYqYzlHccmuqyPJrZK00FdRGoKAtWzgIr KFGbmBWBvyAr7veLLaTY+9gnMk8auLsO5sSoCpIxjDFF/c2B5vERs0m4PcGhGlh25oQRJ4yY eIHSGIsb0XKfydLeUkXCoslrbmZlnXwJmgwRFW9+vNsvjm7IBZK+KfpGMrYfJqNX8o9tmSyq 3/C/m/5KgoHL9HZwj2Amlq8i+mKkS7lVYY6ELyj6uUskFCV3nYUChAdSR28u/bRt6Klc4sBc QpOoHNo9PVsshzwJjXgY/GmiHuW4z4+fcZaL6o/z1Cd0vfq0VveAVFRG1atd+canMMxQDUr0 HqAkNXoGSFjvdWpdJ6NyluHhWjsYHZIdAfucQdBFFJYuIe7/OnfmzqWFo47eJNZmOEZDt0ZL 9qiiCElz4segscQv0lQ1QCW2mn8znQlo+Nc2+k2Yo5Hxl8mDGJGT9bxgbQ+0RqmBN3CJrVml CJZ8/VyFMhUUfmweNWlGY3h5o2B6fefKyH7ilVyBZQn/DnF0yf9Jt8AvmwhdRs3bp1sldrVj Kn74lg5CHh7ZibCUEOKS9jpV5RCIVbISbwJqcw4nvIRO8MsJWdrDQllZFKK3nCFraTfufpXB HtvSu71VSxyIf0+lFKeHr5BuZd2lnFW7T6CHvjTkkX4uYdykVbIEN/pxnPVNbtnhE5FyS2Im +ti2zyil08CDbagO3aPqub+7zkidBAGOHw/kOQPHsbrH+asMDt8YxMI6b9+KYFjgYpPkeLEo iO0VkNCkQKtjnzbMwSaLHtkbeq3D5p4qHs6Ow0qPEqphCd/Mdr+sv9HestlZ6Qj+cxi0eVwE 6sPdfKfD6kdUT/A4TkcM8Xw9dQwaBSxiAuSFCO5ezxjLYV4TgnE94a8LAvi/SUDFAStss46r +Hy3w/XW8NbFQ9jENzXeLSkyFbo5SoRn+d7Xk3pJNhPeRqzrNg2enKp1vJuepMCMxTOwDeex j26OxZAqLmfuZIx/fnImbuA89WjHdxhExcIBGLc97u3a3XXpzLx3Y9aXe+UVjnBT2eoqr66b OBYwvygYv0KmFFG79h1H7pxlP9s4tLuo/lRzxh+HWWNZFOuU+syLn6D1MhJl6tM2r4G5lfmB hPRooFXaeeTJcfoMF8NPw50PO2M2MYdliTW8flocl7x4zV6/ebfXEhfV/VWZPex8Feh3FsZ/ Noc IronPort-HdrOrdr: A9a23:Lf051KygZks2fppUp5UKKrPwFL1zdoMgy1knxilNoRw8SKKlfq eV7Y0mPH7P+VAssR4b+exoVJPtfZqYz+8R3WBzB8bEYOCFghrKEGgK1+KLqFeMJ8S9zJ846U 4JSdkHNDSaNzlHZKjBjzVQa+xQouW6zA== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="60695261" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 31/65] x86/ucode: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:12 +0000 Message-ID: <20211126123446.32324-32-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932034459100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/cpu/microcode/amd.c | 9 +++++---- xen/arch/x86/cpu/microcode/core.c | 4 ++-- xen/arch/x86/cpu/microcode/intel.c | 10 +++++----- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/cpu/microcode/amd.c b/xen/arch/x86/cpu/microcode/= amd.c index fe92e594f129..0afa2192bf1d 100644 --- a/xen/arch/x86/cpu/microcode/amd.c +++ b/xen/arch/x86/cpu/microcode/amd.c @@ -91,7 +91,7 @@ static struct { uint16_t id; } equiv __read_mostly; =20 -static void collect_cpu_info(void) +static void cf_check collect_cpu_info(void) { struct cpu_signature *csig =3D &this_cpu(cpu_sig); =20 @@ -204,7 +204,7 @@ static enum microcode_match_result compare_header( return compare_revisions(old->patch_id, new->patch_id); } =20 -static enum microcode_match_result compare_patch( +static enum microcode_match_result cf_check compare_patch( const struct microcode_patch *new, const struct microcode_patch *old) { /* Both patches to compare are supposed to be applicable to local CPU.= */ @@ -214,7 +214,7 @@ static enum microcode_match_result compare_patch( return compare_header(new, old); } =20 -static int apply_microcode(const struct microcode_patch *patch) +static int cf_check apply_microcode(const struct microcode_patch *patch) { int hw_err; unsigned int cpu =3D smp_processor_id(); @@ -299,7 +299,8 @@ static int scan_equiv_cpu_table(const struct container_= equiv_table *et) return -ESRCH; } =20 -static struct microcode_patch *cpu_request_microcode(const void *buf, size= _t size) +static struct microcode_patch *cf_check cpu_request_microcode( + const void *buf, size_t size) { const struct microcode_patch *saved =3D NULL; struct microcode_patch *patch =3D NULL; diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode= /core.c index 841364208053..c07f68ba350e 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -291,12 +291,12 @@ static int wait_for_condition(bool (*func)(unsigned i= nt data), return 0; } =20 -static bool wait_cpu_callin(unsigned int nr) +static bool cf_check wait_cpu_callin(unsigned int nr) { return cpumask_weight(&cpu_callin_map) >=3D nr; } =20 -static bool wait_cpu_callout(unsigned int nr) +static bool cf_check wait_cpu_callout(unsigned int nr) { return atomic_read(&cpu_out) >=3D nr; } diff --git a/xen/arch/x86/cpu/microcode/intel.c b/xen/arch/x86/cpu/microcod= e/intel.c index f6d01490e0ab..d3864b5ab03e 100644 --- a/xen/arch/x86/cpu/microcode/intel.c +++ b/xen/arch/x86/cpu/microcode/intel.c @@ -116,7 +116,7 @@ static bool signature_matches(const struct cpu_signatur= e *cpu_sig, return cpu_sig->pf & ucode_pf; } =20 -static void collect_cpu_info(void) +static void cf_check collect_cpu_info(void) { struct cpu_signature *csig =3D &this_cpu(cpu_sig); uint64_t msr_content; @@ -271,7 +271,7 @@ static enum microcode_match_result microcode_update_mat= ch( return compare_revisions(cpu_sig->rev, mc->rev); } =20 -static enum microcode_match_result compare_patch( +static enum microcode_match_result cf_check compare_patch( const struct microcode_patch *new, const struct microcode_patch *old) { /* @@ -284,7 +284,7 @@ static enum microcode_match_result compare_patch( return compare_revisions(old->rev, new->rev); } =20 -static int apply_microcode(const struct microcode_patch *patch) +static int cf_check apply_microcode(const struct microcode_patch *patch) { uint64_t msr_content; unsigned int cpu =3D smp_processor_id(); @@ -323,8 +323,8 @@ static int apply_microcode(const struct microcode_patch= *patch) return 0; } =20 -static struct microcode_patch *cpu_request_microcode(const void *buf, - size_t size) +static struct microcode_patch *cf_check cpu_request_microcode( + const void *buf, size_t size) { int error =3D 0; const struct microcode_patch *saved =3D NULL; --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932069; cv=none; d=zohomail.com; s=zohoarc; b=j1L+Oqx77YQHCBdctr2T4sWRWFZ73d+tgkvO1ydEnNQdOhVArDo9g55v6ZYoAi8lC1puI4X9eXuhlMYELo1XijfuqbmLxMiAocO09gIqkLcoL+J7eSPaE+Sk0xPO0TOKEYDPBP6GO3CcDopVj9W+b9i45JnWNkGV9Fhfp2hDZZo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932069; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=u5srJpFXm3J2orLjQKLQRIzTE6jo7L1hVfGstPRG2Ck=; b=dB2pgararLw6yGDEyJz3v8/zcZ1EOwuYiDkHlirIdjwEmxph8qp4VtgzXvm8Ox2U/DDGwvWXhpBBBRvNoxclE3ty49hdtunMI1Q670epH/eP+lqO0A1coD4eN53iXz0uUath1qW5R87W3IS5gprrI0ecvZNpjJwbhPhrJfIGjUY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163793206985848.40956436919271; Fri, 26 Nov 2021 05:07:49 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232831.403941 (Exim 4.92) (envelope-from ) id 1mqawu-0002GJ-7I; Fri, 26 Nov 2021 13:07:32 +0000 Received: by outflank-mailman (output) from mailman id 232831.403941; Fri, 26 Nov 2021 13:07:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawt-0002EF-MQ; Fri, 26 Nov 2021 13:07:31 +0000 Received: by outflank-mailman (input) for mailman id 232831; Fri, 26 Nov 2021 13:07:29 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavm-0003W9-0I for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:22 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a57716ae-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:20 +0100 (CET) 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: a57716ae-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931980; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WTIRJTAjCr7fLAVZPwIgCZwnRELjNRnUT72EuTQsn8A=; b=GTI0ITRoK/KTNMCGL5ikwqvqc5NedEm+4RfZXgNGb8mGYWQ8oMS6mZqD 5Hq9+fASZiXWyCFMrBXn61A8bEPO4Hhx+kDziMRYx/HluN+dKKXNKrLlm uumVkC6MmoZtkX0gI0j080+def9aYCq8PYAOc0qc2mXOml2Xucyb1poPh 0=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: /9KGlOuy6Tx9M98ey6QNrBzDzYpB52YceVWdKiE4VRJG+h33+wRSnDJeGE3By+kCxjPe50poE4 EBr90O2Fe3nUR0769x50SUg/TLj1z2CBgGrWkbGqwEP6fF/+uP6Mxl+cbGrr/61qPZiw9QDdFu Udm8gTv8bQ6vW+YvjctlMxWhzLzi/miP0m1HDfS3d21y2/BgF+sNcWZYrAqixu6CXMvMGCWt/y MqdoVUGNbZzvuv8R+8K8wmCiU9j75Kt0+2zZlNwCWYuZ/Ov4S97RxdXrheT3ltPj+ezcfElveg +mxQtNPMwFwgFoB74WrEApfA X-SBRS: 5.1 X-MesageID: 58696049 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:PHFOvarbvgBxPapGai1UZzw75jleBmLVYhIvgKrLsJaIsI4StFCzt garIBmOO/aMNzfzLY0gO4ni9UkFuZbVm9FrGQNkqH9jFnsS9ZuZCYyVIHmrMnLJJKUvbq7GA +byyDXkBJppJpMJjk71atANlZT4vE2xbuKU5NTsY0idfic5Dnd+4f5fs7Rh2Ncx2ILnW1nlV e7a+KUzBnf0g1aYDUpMg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZdhMUdrJ8DO+iL 9sv+Znilo/vE7XBPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XnRfTAKtao2zhojx/9 DlCnY6VdC04G5fHosYEfV5YPid/Y4RJ1ZaSdBBTseTLp6HHW37lwvEoB0AqJ4wIvO1wBAmi9 9RBdmpLNErawbvrnvTrEYGAhex6RCXvFKoZtmtt0nfyCvE+TIqYa67L+cVZzHE7gcUm8fP2O ppHOGQ3MEWojxtnGUUqOLRgxt+RvWDccj8Jp1iK+YUp7D2GpOB2+Oe0a4eEEjCQfu1Kmm6Iq 2SA+H72ajk4HtGCzTuO8lq3m/TC2yj8Xeo6BLC+s/JnnlCX7mgSEwENE0u2p+GjjUyzUM4ZL FYbkhfCtoBrqhbtFIOkGUTl/jjU5XbwRua8DcUozTyn24/u6Dy7H0ZDThNHaYIPu+IfEGlCO kCyo/vlAjlmsbuwQH2b96uJoT7aBRX5PVPudgdfE1JbvoCLTJUby0uWE409SPLdYsjdQGmom 1i3QD4Ca6L/ZCLh/4Gy5hj5jj2lvfAlpSZlt1yMDgpJAu6UDbNJhrBEC3CHsp6sz67DFzFtW UTofeDFt4ji6rnXyUSwrB0lRu3B2hp8GGS0baRTN5cg7S+x3HWoYJpd5jpzTG8wbJ1bKWG0P x6P518KjHO2AJdMRfQsC25WI553pZUM6Py/DqyEBjawSsQZmPC7ENFGOhfLgjGFfLkEmqAjI 5aLGftA/l5BYZmLOAGeHr9HuZdyn3hW7TqKGfjTkkT2uZLDNSX9YepUbzOzghURsfrsTPP9q I0EaaNnCnx3DYXDX8Ug2dJJcA1RcyFkXcueRg4+XrfrHzeK0VoJU5f5qY7NsaQ+90iMvuuXr Hy7RGFCz1/z2S/OJQmQMygxY7LzR5dv63k8OHV0b1qv3nEiZ6ep7bseKMRrLeV2qrQ7wK4mV eQBduWBHu9LFmbN9QMCYMSvt4dlbhmq216DZnL3fDglcpd8bAXV4du4LBD3/SwDA3Pv58szq rGtzC3BRp8HS1gwBcracqv3nViwoWIciKR5WE6Reotff0Dl8Y5LLS3tj6Bof5FQeEubnjbDj lSYGxYVo+XJsrQZytiRiPDWtZqtHst/AlFeQzvR44GpOHSI5WGk24JBDrqFJGiPSGPu9ay+T uxJ1PWgYuYflVNHvocgQbZmyaUyu4nmq7NAl1k2GXzKaxKgC696I2nA1s5K7/UfyrhcsAqwe 0SO5tgFZunZZJK7SAYcdFg/c+CO9fAIgT2Dv/06LXLz6DJz4LfaA15ZOAOBiXAFIbZ4WG//L TzNZCLCB9SDtycX IronPort-HdrOrdr: A9a23:YLOTgqy3ss8Ye9AVETqxKrPwFL1zdoMgy1knxilNoRw8SKKlfq eV7Y0mPH7P+VAssR4b+exoVJPtfZqYz+8R3WBzB8bEYOCFghrKEGgK1+KLqFeMJ8S9zJ846U 4JSdkHNDSaNzlHZKjBjzVQa+xQouW6zA== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58696049" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 32/65] x86/power: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:13 +0000 Message-ID: <20211126123446.32324-33-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932071733100001 cpufreq_governor_dbs() has no external callers so make it static. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/acpi/cpufreq/cpufreq.c | 14 +++++++------- xen/arch/x86/acpi/cpufreq/powernow.c | 15 ++++++++------- xen/common/core_parking.c | 4 ++-- xen/drivers/cpufreq/cpufreq_ondemand.c | 6 ++++-- xen/include/acpi/cpufreq/cpufreq.h | 1 - 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/xen/arch/x86/acpi/cpufreq/cpufreq.c b/xen/arch/x86/acpi/cpufre= q/cpufreq.c index 8133c2dd958c..c27cbb2304f2 100644 --- a/xen/arch/x86/acpi/cpufreq/cpufreq.c +++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c @@ -320,7 +320,7 @@ unsigned int get_measured_perf(unsigned int cpu, unsign= ed int flag) return policy->cpuinfo.max_freq * perf_percent / 100; } =20 -static unsigned int get_cur_freq_on_cpu(unsigned int cpu) +static unsigned int cf_check get_cur_freq_on_cpu(unsigned int cpu) { struct cpufreq_policy *policy; struct acpi_cpufreq_data *data; @@ -369,8 +369,9 @@ static unsigned int check_freqs(const cpumask_t *mask, = unsigned int freq, return 0; } =20 -static int acpi_cpufreq_target(struct cpufreq_policy *policy, - unsigned int target_freq, unsigned int rela= tion) +static int cf_check acpi_cpufreq_target( + struct cpufreq_policy *policy, + unsigned int target_freq, unsigned int relation) { struct acpi_cpufreq_data *data =3D cpufreq_drv_data[policy->cpu]; struct processor_performance *perf; @@ -449,7 +450,7 @@ static int acpi_cpufreq_target(struct cpufreq_policy *p= olicy, return result; } =20 -static int acpi_cpufreq_verify(struct cpufreq_policy *policy) +static int cf_check acpi_cpufreq_verify(struct cpufreq_policy *policy) { struct acpi_cpufreq_data *data; struct processor_performance *perf; @@ -494,8 +495,7 @@ acpi_cpufreq_guess_freq(struct acpi_cpufreq_data *data,= unsigned int cpu) } } =20 -static int=20 -acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) +static int cf_check acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) { unsigned int i; unsigned int valid_states =3D 0; @@ -609,7 +609,7 @@ acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) return result; } =20 -static int acpi_cpufreq_cpu_exit(struct cpufreq_policy *policy) +static int cf_check acpi_cpufreq_cpu_exit(struct cpufreq_policy *policy) { struct acpi_cpufreq_data *data =3D cpufreq_drv_data[policy->cpu]; =20 diff --git a/xen/arch/x86/acpi/cpufreq/powernow.c b/xen/arch/x86/acpi/cpufr= eq/powernow.c index ca71ecf72d67..d4c7dcd5d99d 100644 --- a/xen/arch/x86/acpi/cpufreq/powernow.c +++ b/xen/arch/x86/acpi/cpufreq/powernow.c @@ -67,8 +67,8 @@ static void cf_check update_cpb(void *data) } } =20 -static int powernow_cpufreq_update (int cpuid, - struct cpufreq_policy *policy) +static int cf_check powernow_cpufreq_update( + int cpuid, struct cpufreq_policy *policy) { if (!cpumask_test_cpu(cpuid, &cpu_online_map)) return -EINVAL; @@ -78,8 +78,9 @@ static int powernow_cpufreq_update (int cpuid, return 0; } =20 -static int powernow_cpufreq_target(struct cpufreq_policy *policy, - unsigned int target_freq, unsigned int rela= tion) +static int cf_check powernow_cpufreq_target( + struct cpufreq_policy *policy, + unsigned int target_freq, unsigned int relation) { struct acpi_cpufreq_data *data =3D cpufreq_drv_data[policy->cpu]; struct processor_performance *perf; @@ -180,7 +181,7 @@ static void cf_check get_cpu_data(void *arg) amd_fixup_frequency(&perf->states[i]); } =20 -static int powernow_cpufreq_verify(struct cpufreq_policy *policy) +static int cf_check powernow_cpufreq_verify(struct cpufreq_policy *policy) { struct acpi_cpufreq_data *data; struct processor_performance *perf; @@ -197,7 +198,7 @@ static int powernow_cpufreq_verify(struct cpufreq_polic= y *policy) return cpufreq_frequency_table_verify(policy, data->freq_table); } =20 -static int powernow_cpufreq_cpu_init(struct cpufreq_policy *policy) +static int cf_check powernow_cpufreq_cpu_init(struct cpufreq_policy *polic= y) { unsigned int i; unsigned int valid_states =3D 0; @@ -303,7 +304,7 @@ static int powernow_cpufreq_cpu_init(struct cpufreq_pol= icy *policy) return result; } =20 -static int powernow_cpufreq_cpu_exit(struct cpufreq_policy *policy) +static int cf_check powernow_cpufreq_cpu_exit(struct cpufreq_policy *polic= y) { struct acpi_cpufreq_data *data =3D cpufreq_drv_data[policy->cpu]; =20 diff --git a/xen/common/core_parking.c b/xen/common/core_parking.c index 4afad04f2f68..c4f01291c0be 100644 --- a/xen/common/core_parking.c +++ b/xen/common/core_parking.c @@ -53,7 +53,7 @@ static int __init cf_check setup_core_parking_option(cons= t char *str) } custom_param("core_parking", setup_core_parking_option); =20 -static unsigned int core_parking_performance(unsigned int event) +static unsigned int cf_check core_parking_performance(unsigned int event) { unsigned int cpu =3D -1; =20 @@ -111,7 +111,7 @@ static unsigned int core_parking_performance(unsigned i= nt event) return cpu; } =20 -static unsigned int core_parking_power(unsigned int event) +static unsigned int cf_check core_parking_power(unsigned int event) { unsigned int cpu =3D -1; =20 diff --git a/xen/drivers/cpufreq/cpufreq_ondemand.c b/xen/drivers/cpufreq/c= pufreq_ondemand.c index ba03eaa2336d..fbcd14d6c32f 100644 --- a/xen/drivers/cpufreq/cpufreq_ondemand.c +++ b/xen/drivers/cpufreq/cpufreq_ondemand.c @@ -215,7 +215,8 @@ static void dbs_timer_exit(struct cpu_dbs_info_s *dbs_i= nfo) kill_timer(&per_cpu(dbs_timer, dbs_info->cpu)); } =20 -int cpufreq_governor_dbs(struct cpufreq_policy *policy, unsigned int event) +static int cf_check cpufreq_governor_dbs( + struct cpufreq_policy *policy, unsigned int event) { unsigned int cpu =3D policy->cpu; struct cpu_dbs_info_s *this_dbs_info; @@ -307,7 +308,8 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,= unsigned int event) return 0; } =20 -static bool_t __init cpufreq_dbs_handle_option(const char *name, const cha= r *val) +static bool __init cf_check cpufreq_dbs_handle_option( + const char *name, const char *val) { if ( !strcmp(name, "rate") && val ) { diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/= cpufreq.h index 4958d3f7d315..e5e58c6c30ea 100644 --- a/xen/include/acpi/cpufreq/cpufreq.h +++ b/xen/include/acpi/cpufreq/cpufreq.h @@ -227,7 +227,6 @@ struct cpu_dbs_info_s { int8_t stoppable; }; =20 -int cpufreq_governor_dbs(struct cpufreq_policy *policy, unsigned int event= ); int get_cpufreq_ondemand_para(uint32_t *sampling_rate_max, uint32_t *sampling_rate_min, uint32_t *sampling_rate, --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932102; cv=none; d=zohomail.com; s=zohoarc; b=hAvU8VgB2r8sSRkmRBRED9/obe1klrzrC39vfd5k8YQc/oJSfeMxxriSKXTfnCx0Cd9ZInoTtYofq1qByCP6YmU+dTFVCBiAhyZGQYeYR1wu68wP/q+tiEJ6ETrRLXugsugnu2Dtm0y9hg7yX7+/Yt9G4rATBWNtDsZ0EdAuH8E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932102; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NlCUvalgU7eB7GjLqqsbJjozlKRC2Q8OZ84C2MoFpdc=; b=fJLW91WgqjUqzeQ3Em4T6K8FTe9NWH1fD8vsWUzagS6XUDCJNb5skApjBeQ4UQZnK855h01a7tgrjTbSSvhgL/ogRs8Vu97TwxaWCawao1LnKlYgmTSq7en/pG99/X2hEj/MKK2nKY0Ap/FtrQEmg4B9fE4UwrIcboPNAiwjTFs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932102529412.9031700051444; Fri, 26 Nov 2021 05:08:22 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232864.404053 (Exim 4.92) (envelope-from ) id 1mqaxJ-0008Fp-Ao; Fri, 26 Nov 2021 13:07:57 +0000 Received: by outflank-mailman (output) from mailman id 232864.404053; Fri, 26 Nov 2021 13:07:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxI-0008Dp-Oa; Fri, 26 Nov 2021 13:07:56 +0000 Received: by outflank-mailman (input) for mailman id 232864; Fri, 26 Nov 2021 13:07:54 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauu-0003W9-Cn for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:28 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 846e797f-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:24 +0100 (CET) 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: 846e797f-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931924; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZfAMQ5gXNhkyy/7pM7nDOvtvjRuJe/w57bbDaSOyQrI=; b=Xrhqk4IdtcCx7hQ2kuQgiOcp5q9htQRUZeH2QtI2JQQqk2z1XSFWmStm k8c6bIy5H4PhQTh6PO+qyCJObS5VJorR1iT0A232ah6NViqc3aXUtIq37 D0RVSnPwOeb6MkRrddbjvzCw2IfMvzaiS0VInXC/hLyzAU/fRZYkPitVw M=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: BQqAQ9/QWNhbiSN8W9Di7v7gSxwhnlTH8wsxI5qXFyyLu8cQ5dyHiscix5irSI4vDRRJAgEvU5 Icymn2Za8wlxSt7KMxRJv0+a8Q9c7kzG1tc0/8NMye4rV42rgdre29CnnI9FU2LGsPWf+nj+AR P24nxgELA5P4xnYWV3Ysd9yS8UZwalnH09ft99bmXYHLmgM9QUj7Q62Boh05shRWCjgWFPNeFU b2jyJxSty2JMpAhQQfr48Y0kP+JPfsm/lPkhDKSS9krctkJbMsByK5ZTvsF5KSkJc2pAmEyPHy iN8ywxG8tfP/SaZGtjelHaxR X-SBRS: 5.1 X-MesageID: 59064012 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:aZ/j5qtW/DuLyak5AcGCRRXefOfnVJtZMUV32f8akzHdYApBsoF/q tZmKW6OPfzYMGWkf4h+bY3gp0wG75SEzt41G1E5+Sg2RCoU+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Nplj769EyFzG6z1mcsTAxRgEBxOF/MB5+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN pJHNWI2NnwsZTVDMHpOVpQ8u974g0vDfzYHsg2qpok4tj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO9cY5VurkI/V2ge2CDgJdj18WPZ489BjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9YNc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:L3TuBq0wT24uS1Hjva+F0QqjBIokLtp133Aq2lEZdPRUGvb3qy nIpoVj6faUskd2ZJhOo7C90cW7LU80sKQFhLX5Xo3SOzUO2lHYT72KhLGKq1aLdhEWtNQtsZ uIG5IOcOEYZmIasS+V2maF+q4bsbu6zJw= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59064012" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 33/65] x86/apic: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:14 +0000 Message-ID: <20211126123446.32324-34-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932103910100005 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/genapic/bigsmp.c | 4 ++-- xen/arch/x86/genapic/delivery.c | 12 ++++++------ xen/arch/x86/genapic/x2apic.c | 16 ++++++++++------ xen/arch/x86/smp.c | 6 +++--- xen/include/asm-x86/genapic.h | 18 +++++++++--------- 5 files changed, 30 insertions(+), 26 deletions(-) diff --git a/xen/arch/x86/genapic/bigsmp.c b/xen/arch/x86/genapic/bigsmp.c index b9d976e8abf2..2000383ab0bf 100644 --- a/xen/arch/x86/genapic/bigsmp.c +++ b/xen/arch/x86/genapic/bigsmp.c @@ -10,7 +10,7 @@ #include #include =20 -static __init int force_bigsmp(const struct dmi_system_id *d) +static int __init cf_check force_bigsmp(const struct dmi_system_id *d) { printk(KERN_NOTICE "%s detected: force use of apic=3Dbigsmp\n", d->ident); def_to_bigsmp =3D true; @@ -27,7 +27,7 @@ static const struct dmi_system_id __initconstrel bigsmp_d= mi_table[] =3D { }; =20 =20 -static __init int probe_bigsmp(void) +static int __init cf_check probe_bigsmp(void) {=20 /* * We don't implement cluster mode, so force use of diff --git a/xen/arch/x86/genapic/delivery.c b/xen/arch/x86/genapic/deliver= y.c index 548c33f282dd..d1f99bf6834a 100644 --- a/xen/arch/x86/genapic/delivery.c +++ b/xen/arch/x86/genapic/delivery.c @@ -9,7 +9,7 @@ * LOGICAL FLAT DELIVERY MODE (multicast via bitmask to <=3D 8 logical API= C IDs). */ =20 -void init_apic_ldr_flat(void) +void cf_check init_apic_ldr_flat(void) { unsigned long val; =20 @@ -19,12 +19,12 @@ void init_apic_ldr_flat(void) apic_write(APIC_LDR, val); } =20 -const cpumask_t *vector_allocation_cpumask_flat(int cpu) +const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu) { return &cpu_online_map; }=20 =20 -unsigned int cpu_mask_to_apicid_flat(const cpumask_t *cpumask) +unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask) { return cpumask_bits(cpumask)[0]&0xFF; } @@ -33,17 +33,17 @@ unsigned int cpu_mask_to_apicid_flat(const cpumask_t *c= pumask) * PHYSICAL DELIVERY MODE (unicast to physical APIC IDs). */ =20 -void init_apic_ldr_phys(void) +void cf_check init_apic_ldr_phys(void) { /* We only deliver in phys mode - no setup needed. */ } =20 -const cpumask_t *vector_allocation_cpumask_phys(int cpu) +const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu) { return cpumask_of(cpu); } =20 -unsigned int cpu_mask_to_apicid_phys(const cpumask_t *cpumask) +unsigned int cf_check cpu_mask_to_apicid_phys(const cpumask_t *cpumask) { /* As we are using single CPU as destination, pick only one CPU here */ return cpu_physical_id(cpumask_any(cpumask)); diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c index bd44bb753995..de5032f2020a 100644 --- a/xen/arch/x86/genapic/x2apic.c +++ b/xen/arch/x86/genapic/x2apic.c @@ -38,7 +38,7 @@ static inline u32 x2apic_cluster(unsigned int cpu) return per_cpu(cpu_2_logical_apicid, cpu) >> 16; } =20 -static void init_apic_ldr_x2apic_cluster(void) +static void cf_check init_apic_ldr_x2apic_cluster(void) { unsigned int cpu, this_cpu =3D smp_processor_id(); =20 @@ -74,12 +74,14 @@ static void init_apic_ldr_x2apic_cluster(void) cpumask_set_cpu(this_cpu, per_cpu(cluster_cpus, this_cpu)); } =20 -static const cpumask_t *vector_allocation_cpumask_x2apic_cluster(int cpu) +static const cpumask_t *cf_check vector_allocation_cpumask_x2apic_cluster( + int cpu) { return per_cpu(cluster_cpus, cpu); } =20 -static unsigned int cpu_mask_to_apicid_x2apic_cluster(const cpumask_t *cpu= mask) +static unsigned int cf_check cpu_mask_to_apicid_x2apic_cluster( + const cpumask_t *cpumask) { unsigned int cpu =3D cpumask_any(cpumask); unsigned int dest =3D per_cpu(cpu_2_logical_apicid, cpu); @@ -92,12 +94,13 @@ static unsigned int cpu_mask_to_apicid_x2apic_cluster(c= onst cpumask_t *cpumask) return dest; } =20 -static void send_IPI_self_x2apic(uint8_t vector) +static void cf_check send_IPI_self_x2apic(uint8_t vector) { apic_wrmsr(APIC_SELF_IPI, vector); } =20 -static void send_IPI_mask_x2apic_phys(const cpumask_t *cpumask, int vector) +static void cf_check send_IPI_mask_x2apic_phys( + const cpumask_t *cpumask, int vector) { unsigned int cpu; unsigned long flags; @@ -130,7 +133,8 @@ static void send_IPI_mask_x2apic_phys(const cpumask_t *= cpumask, int vector) local_irq_restore(flags); } =20 -static void send_IPI_mask_x2apic_cluster(const cpumask_t *cpumask, int vec= tor) +static void cf_check send_IPI_mask_x2apic_cluster( + const cpumask_t *cpumask, int vector) { unsigned int cpu =3D smp_processor_id(); cpumask_t *ipimask =3D per_cpu(scratch_mask, cpu); diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index 33748e629a21..0a02086966c0 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -161,13 +161,13 @@ void send_IPI_self(int vector) * The following functions deal with sending IPIs between CPUs. */ =20 -void send_IPI_self_legacy(uint8_t vector) +void cf_check send_IPI_self_legacy(uint8_t vector) { /* NMI continuation handling relies on using a shorthand here. */ send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL); } =20 -void send_IPI_mask_flat(const cpumask_t *cpumask, int vector) +void cf_check send_IPI_mask_flat(const cpumask_t *cpumask, int vector) { unsigned long mask =3D cpumask_bits(cpumask)[0]; unsigned long cfg; @@ -204,7 +204,7 @@ void send_IPI_mask_flat(const cpumask_t *cpumask, int v= ector) local_irq_restore(flags); } =20 -void send_IPI_mask_phys(const cpumask_t *mask, int vector) +void cf_check send_IPI_mask_phys(const cpumask_t *mask, int vector) { unsigned long cfg, flags; unsigned int query_cpu; diff --git a/xen/include/asm-x86/genapic.h b/xen/include/asm-x86/genapic.h index 51a65d3e0f0c..beeaddf19daa 100644 --- a/xen/include/asm-x86/genapic.h +++ b/xen/include/asm-x86/genapic.h @@ -39,12 +39,12 @@ extern struct genapic genapic; extern const struct genapic apic_default; extern const struct genapic apic_bigsmp; =20 -void send_IPI_self_legacy(uint8_t vector); +void cf_check send_IPI_self_legacy(uint8_t vector); =20 -void init_apic_ldr_flat(void); -unsigned int cpu_mask_to_apicid_flat(const cpumask_t *cpumask); -void send_IPI_mask_flat(const cpumask_t *mask, int vector); -const cpumask_t *vector_allocation_cpumask_flat(int cpu); +void cf_check init_apic_ldr_flat(void); +unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask); +void cf_check send_IPI_mask_flat(const cpumask_t *mask, int vector); +const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu); #define GENAPIC_FLAT \ .int_delivery_mode =3D dest_LowestPrio, \ .int_dest_mode =3D 1 /* logical delivery */, \ @@ -54,10 +54,10 @@ const cpumask_t *vector_allocation_cpumask_flat(int cpu= ); .send_IPI_mask =3D send_IPI_mask_flat, \ .send_IPI_self =3D send_IPI_self_legacy =20 -void init_apic_ldr_phys(void); -unsigned int cpu_mask_to_apicid_phys(const cpumask_t *cpumask); -void send_IPI_mask_phys(const cpumask_t *mask, int vector); -const cpumask_t *vector_allocation_cpumask_phys(int cpu); +void cf_check init_apic_ldr_phys(void); +unsigned int cf_check cpu_mask_to_apicid_phys(const cpumask_t *cpumask); +void cf_check send_IPI_mask_phys(const cpumask_t *mask, int vector); +const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu); #define GENAPIC_PHYS \ .int_delivery_mode =3D dest_Fixed, \ .int_dest_mode =3D 0 /* physical delivery */, \ --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931917; cv=none; d=zohomail.com; s=zohoarc; b=ZTxZfPB4BYaAS+vNKYaMN/S3GsSyatRUk7O/P8Aw32jXoz0nznQMZsr0fCiBDF07x5fspBCj6fSat6DSq9VYdGbF3OZfsqGAr3MrvxZH/NFQ4dMqrbMWum9SWPKUjuvbzafB8PTI6y7BZvRVUzOr5JTzZ3YftqF+3CbtDAgsY7o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931917; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NgzhAGHjmk99UzyqYLh83eA2Uhe9HvgZXB83ZTe8K50=; b=oKO7n4Cf++JkIIt3+A7lh1eQCdTLxei7BfFEdX3BW52Ti5StdfG9aBgJOQMnC79DtPBA/ZhfcNSnrASl80EwMLQTkiDTIGJHVbRmsKfOvd1w/EDNnrRZ5qiAKuqqYggVIBgWvjuwa0PmJFwSD4LRxh6GxdfYKeSeIwFA3Bw8I6Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931917906869.0799292380407; Fri, 26 Nov 2021 05:05:17 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232757.403694 (Exim 4.92) (envelope-from ) id 1mqauU-000606-C1; Fri, 26 Nov 2021 13:05:02 +0000 Received: by outflank-mailman (output) from mailman id 232757.403694; Fri, 26 Nov 2021 13:05:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauU-0005zA-1n; Fri, 26 Nov 2021 13:05:02 +0000 Received: by outflank-mailman (input) for mailman id 232757; Fri, 26 Nov 2021 13:04:59 +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 1mqauR-0002zD-GO for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:59 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 750f485a-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:04:58 +0100 (CET) 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: 750f485a-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931898; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1m9xOwxe8Ri/U/q6tx5wCyVpE1aVwbjAxBpIt6ZgzWI=; b=LmGn6gUg8ZzrV7/hXfyjVbWQYvWf6UB71QJMCZmh+um8kruuhkzpkoV2 Jz5l1tNUMojmV4K9hXIuINgg+KC+ymp4qUbWRLWnl/dN1SxbsKJ6P24kq +y3nqE2nAcqS1J1ygdUjCxW2J6IA81UZ56W11nlie8WXvV6aZg5mVKdzI g=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: uhEoPZybOJgCWemvUXicnrQPzSPxjiFlhay76PvHGtGlfRUkPIrbwG9xRGYIx3r/c51cAPKXU6 n4YUzHkeONztXQgdJ+NrQH0leKkXA63/8B2AFMUdObluYbuOtSU6bHW4W0jTK9rWlaxMGEAvbl jMXqJTd/uW/c+zFdcDdWf6IunPNfMJF4yyUG4blthdKqCLWRfmDzdyehbUUVUF54z5kWgNp5gc qy4Gcs2pNR1DvCQc4wIkn4mlMqPnHixrynWq/96tIo5gOub0rcVpQbeN8jxTLRPP9TFsRzJ4FL 5FqqVDGfk8BJy3UUESLdxWz/ X-SBRS: 5.1 X-MesageID: 59063946 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:I3tceq4QwI85Mvi30N9NjAxRtPXAchMFZxGqfqrLsTDasY5as4F+v msbWmCCbK3fZGqhKIt0bY/jpkIA6MPczYdnQQZr+SA2Hi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z9 M9MqqOqdUQQEIKWl8A6VTV0MjBEIvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTK6AP JtFN1KDajzvajEUZ3w7FKkZs8iyokfaWDBgsQiK8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u10bTDwweNdef4SGY6X/qjejK9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc+ZKEvIF8j3O84T7uQm9IW4oYh9QUsNz4afaWgcW/ lOOmtroAxlmv7uUVW+R+9+okN+iBcQGBTRcPHFZFGPp9/Gm+dhu1UyXEr6PBYbs1oWtcQwc1 Qxmu8TXa187qccQn5u28lnc695HjsiYF1Vljuk7s4/M0++YWGJHT9D3gbQ4xawZRGp8crVnl CNf8yR5xLpTZaxhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGggfxg5bJtbKGO3P BS7VeZtCHl7ZyDCgUhfOd/ZNijX5fK4SYSNug78MrKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWPnOKrNVNdA9SdhDWx/ne8qRqSwJKGSI+cElJNhMb6epJl1VNk/sHm+HW0 Gu6X0MEmlPziWeecVeBa2x5aaOpVpF69CppMSspNFeu+n4ifYfws/tPK8ppJeEqpL550Pp5b /gZYMHcUP5BfSvKpmYGZp7noY08KBny3VCSPzCoaSQUdoJ7Q1Cb4cftewbirXFcDie+ucYkj aen0wfXHcgKSwh4VZ6EY/Oz1VKh+3ManbsqDUfPJ9BSfmTq8ZRrdHOt3qNmfZlUJEyalDWA1 guQDRMJnsX3otc4oIvTmKSJj4a1CO8iTEBUKHbWsOStPi7A82v9nYIZCLSUfSrQXX/f8bm5Y bkH1On1NfAKkQoYs4d4FLo3n6sy68G2+u1fxwVgWn7Kc06qGvVrJXzfhZtDsahEx7l4vwqqW x3QpokGaOvRYM61QkQMIAcFb/iY0aBGkzbf2v05PUHm6XIl57GAS0hTY0GBhSE1wGGZ62/5L TPNYPIr1jE= IronPort-HdrOrdr: A9a23:+qFMb6hWCXZxiPKLBE5zCf9byXBQXuIji2hC6mlwRA09TySZ// rBoB19726MtN9xYgBHpTnuAsm9qB/nmaKdpLNhWItKPzOW31dATrsSjrcKqgeIc0aVm9K1l5 0QF5SWYOeAdWSS5vya3ODXKbkdKaG8gcKVuds= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59063946" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 34/65] x86/nmi: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:15 +0000 Message-ID: <20211126123446.32324-35-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931918529100005 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/alternative.c | 4 ++-- xen/arch/x86/cpu/microcode/core.c | 3 ++- xen/arch/x86/crash.c | 3 ++- xen/arch/x86/livepatch.c | 2 +- xen/arch/x86/oprofile/nmi_int.c | 2 +- xen/arch/x86/traps.c | 3 ++- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c index 1cb531c9df83..436047abe021 100644 --- a/xen/arch/x86/alternative.c +++ b/xen/arch/x86/alternative.c @@ -324,8 +324,8 @@ static unsigned int __initdata alt_done; * condition where an NMI hits while we are midway though patching some * instructions in the NMI path. */ -static int __init nmi_apply_alternatives(const struct cpu_user_regs *regs, - int cpu) +static int __init cf_check nmi_apply_alternatives( + const struct cpu_user_regs *regs, int cpu) { /* * More than one NMI may occur between the two set_nmi_callback() belo= w. diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode= /core.c index c07f68ba350e..f84dafa82693 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -376,7 +376,8 @@ static int primary_thread_work(const struct microcode_p= atch *patch) return ret; } =20 -static int microcode_nmi_callback(const struct cpu_user_regs *regs, int cp= u) +static int cf_check microcode_nmi_callback( + const struct cpu_user_regs *regs, int cpu) { unsigned int primary =3D cpumask_first(this_cpu(cpu_sibling_mask)); int ret; diff --git a/xen/arch/x86/crash.c b/xen/arch/x86/crash.c index f6264946a681..c383f718f5bd 100644 --- a/xen/arch/x86/crash.c +++ b/xen/arch/x86/crash.c @@ -36,7 +36,8 @@ static unsigned int crashing_cpu; static DEFINE_PER_CPU_READ_MOSTLY(bool, crash_save_done); =20 /* This becomes the NMI handler for non-crashing CPUs, when Xen is crashin= g. */ -static int noreturn do_nmi_crash(const struct cpu_user_regs *regs, int cpu) +static int noreturn cf_check do_nmi_crash( + const struct cpu_user_regs *regs, int cpu) { stac(); =20 diff --git a/xen/arch/x86/livepatch.c b/xen/arch/x86/livepatch.c index 49f0d902e5bb..ea5fa832e4a4 100644 --- a/xen/arch/x86/livepatch.c +++ b/xen/arch/x86/livepatch.c @@ -174,7 +174,7 @@ static nmi_callback_t *saved_nmi_callback; * Note that because of this NOP code the do_nmi is not safely patchable. * Also if we do receive 'real' NMIs we have lost them. */ -static int mask_nmi_callback(const struct cpu_user_regs *regs, int cpu) +static int cf_check mask_nmi_callback(const struct cpu_user_regs *regs, in= t cpu) { /* TODO: Handle missing NMI/MCE.*/ return 1; diff --git a/xen/arch/x86/oprofile/nmi_int.c b/xen/arch/x86/oprofile/nmi_in= t.c index 6ebe20bd1d3e..a90b72825818 100644 --- a/xen/arch/x86/oprofile/nmi_int.c +++ b/xen/arch/x86/oprofile/nmi_int.c @@ -95,7 +95,7 @@ bool nmi_oprofile_send_virq(void) return v; } =20 -static int nmi_callback(const struct cpu_user_regs *regs, int cpu) +static int cf_check nmi_callback(const struct cpu_user_regs *regs, int cpu) { int xen_mode, ovf; =20 diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 07981db74cff..76b1b779b33c 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -741,7 +741,8 @@ static cpumask_t show_state_mask; static bool opt_show_all; boolean_param("async-show-all", opt_show_all); =20 -static int nmi_show_execution_state(const struct cpu_user_regs *regs, int = cpu) +static int cf_check nmi_show_execution_state( + const struct cpu_user_regs *regs, int cpu) { if ( !cpumask_test_cpu(cpu, &show_state_mask) ) return 0; --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932113; cv=none; d=zohomail.com; s=zohoarc; b=UGX6aQBntSw//gbnC1lOSrFtXpVZA+QyeiRjTMphFhixcZOPAhZiyb9gOrEiZAaj3F4fJGdU6vfpxXXZwSqm+M7Q3IB+sB/WZ1WU6gJJ1R3dD9J9Qa+lSXYciWk/tCWJ/P+RHmmMBlaNMB14oejJxOoJhjWifpmXcnoOztq5yWE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932113; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=U3cVGsBSN6Mls5SrjUdt23PGwGeckYnaqWOgII2XWBo=; b=Z9Q+J65L31Z+LMiUhkRYko2B4CbMPC9+lRJXF0Tjdd/jIQcOiaHwLIpwB/M/OCJfqZbnbWUCtZMsW1OGxAVMtJbmTsLHgL7vQQ5CU7rLhBmTe8rVFjedOsUhj4PISSpFf9G8VVhkUWG2vrPZ4uLazp6VVTBJJL8zZY6nFoNLvD4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932113820561.462595727844; Fri, 26 Nov 2021 05:08:33 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232886.404122 (Exim 4.92) (envelope-from ) id 1mqaxY-0003Jl-M5; Fri, 26 Nov 2021 13:08:12 +0000 Received: by outflank-mailman (output) from mailman id 232886.404122; Fri, 26 Nov 2021 13:08:12 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxX-0003GL-S4; Fri, 26 Nov 2021 13:08:11 +0000 Received: by outflank-mailman (input) for mailman id 232886; Fri, 26 Nov 2021 13:08:08 +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 1mqavF-0002zD-KQ for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:49 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9227ff5f-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:48 +0100 (CET) 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: 9227ff5f-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931948; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LFV0YxOEuIiuCG9iI5eNKk5hv6ynkvXZ8FKbseF1zyo=; b=A1IyxymbTVDa9ZMeZefHQcSm+ukEKsbWVTc+HR9jZaYXlJAPLOXR15lc +itVk6Zjays+GiYCK3gSFo857Sap6kc7d6bamJyLvqx9N7ehSawFKOpzW EVsR0QxIP7WIGnMMVEx6t9Bius3JKQ5vBE178rIuGwFoswcEOooXGzNHA s=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: Q2YEL56UzM6ggU2Wf2ibE6MdCXcsbwTdC5Kj3RR/b0qIshnnNVIuD0y4PuDlIu7ndaSs4pYrNp e61zTTay7OW6wsxdA8sGVLZXojGgNEl1bCrVpvFnOMK407n93Afw75Yyb9geq4E6g71egX8nlW 2NJUPJB/N6+ZolBXiBwdnWYObvoOOxCwS/M30UaCLkXMDqO4x91//bAtAyJVibP8qu8NdKYOFA Bb+7FAQwFB+fvMAujRFEUBmTwl5LA9b23XNvrEmrWvQGpGfum74NnwemIROUxy3haqKiaZM8V2 A118EYJuLMxKhcdQMEbBhHKD X-SBRS: 5.1 X-MesageID: 58696019 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:uEGppaL1vw/jpdHZFE+RHJIlxSXFcZb7ZxGr2PjKsXjdYENShmQDx jQWWTqOb/fbMGuheI1xO9y2p00BusDXz9ZrHgRlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es5xbZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2sho5u7 pYTu6WCYgd5HvHJn9s/CBdXRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Gpg2JEQRa+PD yYfQWNEdx6eei9gAHEaOa8uuNannTqlczIN/Tp5ooJoujOOnWSdyoPFL979atGMA8JPkS6wh EjL4mD4CREyL8GExHyO9XfErv/Cm2b3VZwfEJW89+V2mxuDy2oLEhoUWFCn5/6jhSaDt8l3c hJOvHB09O5rqRLtHoKVswCETGCsmwdCRPwTTeMD2iqNmoqI5gGmJDMKQWsUADA5j/MeSTsv3 16PutrmAz1zrbGYIU6gGqeoQSCaYnZMczJbDcMQZU5cuoS4/tlv5v7aZo87SPbdszHjJd3nL 9lmRgAajq5bs8ME3r7TEbvv02P1/cihouLYC2zqsoOZAuFRONHNi2+AswGzARN8wGCxFQLpU J8swZX20Qz2JcvR/BFhuc1UdF1T296LMSfHnXlkFIQ7+jKm9haLJN4Lv2EgeRg4bphYIlcFh XM/XysKv/e/21PwMMdKj3+ZUZx2ncAM6/y5PhwrUja+SscoL1LWlM2fTUWRw3rsgCARfVIXY v+mnTKXJS9CU8xPlWPuL89EiOND7n1ulAv7GMGgpzz6gOX2WZJgYepcWLd4Rrtit/3sTcS82 4s3CvZmPD0DCrCjOXeOrtZIRb3IRFBiba3LRwVsXrbrCmJb9KsJUpc9GJstJN5ombp7jODN8 i3vU0NU0gOn13bGNR+LejZob7a2BcRzqncyPCoNO1e02id8PdbzvflHL5ZnL6M68OFDzOJvS 6VXccu3HfkSGC/M/C4QbMehodU6Jgirnw+HIwGsfCM7I8x7XwXM99K9Jlnv+SACAzCZr8w7p 7H8hArXTYBaH1ZpDdrMaeLpxFS05CBPlOV3VkrOA99SZESzr9Q6d32v1qc6epheJw/Cyz2W0 xetLS0Z/eSd8ZUo9NTphLyfq9v7GeVJAUcHTXLQ6qy7NHeG8zP7k5NASuuBYRvUSHjwpPe5f exQwvzxbK8HkVJNv9YuGrpn1/tjtd7mprscxQV4BnTbKV+sD+o4cHWB2MBOsIxLx6NY5lTqC h7epIECNOXbIt7hHX4QOBEhP7aK2vwjkzXP6eg4fRfh7yht8bvbCUhfMnFgUsCGwGeZ5G/9/ dochQ== IronPort-HdrOrdr: A9a23:7FEcL6/XJ8dFQCzmIj1uk+DgI+orL9Y04lQ7vn2YSXRuHPBw8P re5cjztCWE7gr5N0tBpTntAsW9qDbnhPtICOoqTNCftWvdyQiVxehZhOOIqVDd8m/Fh4pgPM 9bAtBD4bbLbGSS4/yU3ODBKadD/OW6 X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58696019" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 35/65] x86/mtrr: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:16 +0000 Message-ID: <20211126123446.32324-36-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932116022100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu Most of mtrr/ looks to be compatibility for pre-64bit days. It can probably be pruned substantially. --- xen/arch/x86/cpu/mtrr/generic.c | 18 ++++++++++-------- xen/arch/x86/cpu/mtrr/mtrr.h | 8 ++++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/xen/arch/x86/cpu/mtrr/generic.c b/xen/arch/x86/cpu/mtrr/generi= c.c index 7cf4cd01f3f6..47aaf76226e0 100644 --- a/xen/arch/x86/cpu/mtrr/generic.c +++ b/xen/arch/x86/cpu/mtrr/generic.c @@ -287,7 +287,8 @@ static void set_fixed_range(int msr, bool *changed, uns= igned int *msrwords) } } =20 -int generic_get_free_region(unsigned long base, unsigned long size, int re= place_reg) +int cf_check generic_get_free_region( + unsigned long base, unsigned long size, int replace_reg) /* [SUMMARY] Get a free MTRR. The starting (base) address of the region. The size (in bytes) of the region. @@ -309,8 +310,8 @@ int generic_get_free_region(unsigned long base, unsigne= d long size, int replace_ return -ENOSPC; } =20 -static void generic_get_mtrr(unsigned int reg, unsigned long *base, - unsigned long *size, mtrr_type *type) +static void cf_check generic_get_mtrr( + unsigned int reg, unsigned long *base, unsigned long *size, mtrr_type = *type) { uint64_t _mask, _base; =20 @@ -499,7 +500,7 @@ static void post_set(bool pge) spin_unlock(&set_atomicity_lock); } =20 -static void generic_set_all(void) +static void cf_check generic_set_all(void) { unsigned long mask, count; unsigned long flags; @@ -522,8 +523,8 @@ static void generic_set_all(void) } } =20 -static void generic_set_mtrr(unsigned int reg, unsigned long base, - unsigned long size, mtrr_type type) +static void cf_check generic_set_mtrr( + unsigned int reg, unsigned long base, unsigned long size, mtrr_type ty= pe) /* [SUMMARY] Set variable MTRR register on the local CPU. The register to set. The base address of the region. @@ -566,7 +567,8 @@ static void generic_set_mtrr(unsigned int reg, unsigned= long base, local_irq_restore(flags); } =20 -int generic_validate_add_page(unsigned long base, unsigned long size, unsi= gned int type) +int cf_check generic_validate_add_page( + unsigned long base, unsigned long size, unsigned int type) { unsigned long lbase, last; =20 @@ -584,7 +586,7 @@ int generic_validate_add_page(unsigned long base, unsig= ned long size, unsigned i } =20 =20 -static int generic_have_wrcomb(void) +static int cf_check generic_have_wrcomb(void) { unsigned long config; rdmsrl(MSR_MTRRcap, config); diff --git a/xen/arch/x86/cpu/mtrr/mtrr.h b/xen/arch/x86/cpu/mtrr/mtrr.h index 9a406e6f6199..c7fd44daab27 100644 --- a/xen/arch/x86/cpu/mtrr/mtrr.h +++ b/xen/arch/x86/cpu/mtrr/mtrr.h @@ -24,10 +24,10 @@ struct mtrr_ops { int (*have_wrcomb)(void); }; =20 -extern int generic_get_free_region(unsigned long base, unsigned long size, - int replace_reg); -extern int generic_validate_add_page(unsigned long base, unsigned long siz= e, - unsigned int type); +int cf_check generic_get_free_region( + unsigned long base, unsigned long size, int replace_reg); +int cf_check generic_validate_add_page( + unsigned long base, unsigned long size, unsigned int type); =20 extern const struct mtrr_ops generic_mtrr_ops; =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932039; cv=none; d=zohomail.com; s=zohoarc; b=FycEni0i/6X+vdTcG+iZAU6fDMN/4qhmqJa/ySZRe38kHaSazNp0anIrNfzEqxx1L9QeDSLhtG5mNjBovOqJK3RUz12K7XLN7cFT7xUhWy+o8A3tr3XCGPYHBP6pFKoNrXbxnqvIjCuvxalr2h92pcjbjEPJd/Js08ZCAZpcnoo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932039; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0BzCVogi+Y42YNWHJkLrm451zQHSOAhlM/c0VKroQdU=; b=jn+Q4zyKU+wG1pt8Bx+4CBbATxt/ZD247qBoI9iaR+Ndgyx4UbSpHG9wJpyPXUEddZ8FH7k/9nbF51pqh84ic5SdlgPzJmZuSxZRcWyTmb3HMfI7VIwfTwlCScisYykwCC2BCTx5mtx8rcA6sqPMpBFc9fqMRBttQ894xEnbDqY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932039942849.4596616457789; Fri, 26 Nov 2021 05:07:19 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232782.403799 (Exim 4.92) (envelope-from ) id 1mqawP-0003o2-Vk; Fri, 26 Nov 2021 13:07:01 +0000 Received: by outflank-mailman (output) from mailman id 232782.403799; Fri, 26 Nov 2021 13:07:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawP-0003kw-I1; Fri, 26 Nov 2021 13:07:01 +0000 Received: by outflank-mailman (input) for mailman id 232782; Fri, 26 Nov 2021 13:06:58 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavH-0003W9-0F for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:51 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 92ea1cf3-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:49 +0100 (CET) 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: 92ea1cf3-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931949; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Fjt4FTXRqzsNvO1Bgk1R2D4yNEdp9/3zXUQNGV4mJuY=; b=KNJUnG5Ow1g9BDbB/Fw5OUP+iQ43hsgEcDd0Pq65ZW5eGfXu/Vts8BmL /2TtO54yeLSowqM2QFZ70hy4m3840c87RMKf3cD6Ls4uOipruC2qAEHJ6 AlWmNMBKWbUWB96UdMq0xUN649WOe/GXiKJgnkoqBIJLng3bGxPMaFniW c=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: YGBaZ+vcSFMZpJ7CJMlyA3tJ6oA7fLKQGFXtvt5tYIaUDpjSkNnDfsAt6EcKceRcn90+Vb7Bgd vvryaQwtkjvGUJbRH/xDHHQuIuzb/dZN01k+wSCTIo94DHbaJ6SHiyqBlFOdC5FqHnQ0Y4fYgJ PeKGAaXA//dEybytppsLE9RUHX6Or6fSz7B0SM3ChxFrBMPsJmPtNF5NVRLtFJJ9KeR2JWmc9h lgweT+XwIiypiFA0st6Ilk/ids6/pRdylrJYtXfFTnyr32uj4ycVDisHo1U+Da6bxXzsmFPJuI e7iQlWN2n//tRPoELe3Krc02 X-SBRS: 5.1 X-MesageID: 58193841 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:IUAnuKMKjHbFzunvrR1okMFynXyQoLVcMsEvi/4bfWQNrUoihjFRn TQeWWzTb/uMYmugfY93PYnn80tUscSAmtYxTgto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6bUsxNbVU8En540Eg9w7RRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYozCsleBdm I4OicHzSB0jF5Xwk+AcWiANRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YsBqit4uM4/AO4QHt2s75TrYEewnUdbIRKCiCdpwgWdp15seQa+2i 8wxMiprajfaby11ZlpUI48fvej3l2ajWmgNwL6SjfVuuDWCpOBr65DyNPLFd9rMQt9a9m66j G/b+2XyAjkBKceSjzGC9xqEluLJ2C/2Ro8WPLm57eJxxk2ewHQJDx8bXkf9puO24nNSQPoGd RZSoHB36/Fvqgr7FbERQiFUvlaBmxQsd4oLUNFnqwCXwIPs3w2dB2E9G2sphMMdiOc6Qjkj1 1msltzvBCByvLD9dU9x5ot4vhvpZ3FLcDZqiTssCFJcvoK9+N1bYgfnF447SMaIYsvJ9SYcK txghAw3nP0tgMECzM1XFniX0mv39vAlouPYjzg7v15JDCslO+ZJhKTysDA3CMqsyq7CFTFtW 1BexqCjABgmV83lqcB0aLxl8EuVz/iEKibAplVkAoMs8T+gk1b6I9sPsG8jexY1bJpfEdMMX KM1kVgKjHO0FCH3BZKbnqrrU5h6pUQePYiNug/ogipmPcEqKV7vENBGbk+MxWH9+HXAYolkU ap3hf2EVC5AYYw+lWLeb75EjdcDm3BvrUuOFMuT50n2jtKjiIu9FO5t3K2mNbtisstpYWz9r r5iCid940kFDbClPHCIqdV7wJJjBSFTOK0aYvd/LoarSjeK0kl7YxMI6b9+KYFjgYpPkeLEo iO0VkNCkQKtjnzbMwSaLHtkbeq3D5p4qHs6Ow0qPEqphCd/Mdr+sv9HestlZ6Qj+cxi0eVwE 6sPdfKfD6kdUT/A4TkcM8Xw9dQwaBSxiAuSFCO5ezxjLYV4TgnE94a8LAvi/SUDFAStss46r +Hy3w/XW8NbFQ9jENzXeLSkyFbo5SoRn+d7Xk3pJNhPeRqzrNg2enKp1vJuepMCMxTOwDeex j26OxZAqLmfuZIx/fnImbuA89WjHdxhExcIBGLc97u3a3XXpzLx3Y9aXe+UVjnBT2eoqr66b OBYwvygYv0KmFFG79h1H7pxlP9s4tLuo/lRzxh+HWWNZFOuU+syLn6D1MhJl6tM2r4G5lfmB hPRooFXaeeTJcfoMF8NPw50PO2M2MYdliTW8flocl7x4zV6/ebfXEhfV/VWZPex8Feh3FsZ/ Noc IronPort-HdrOrdr: A9a23:CIVp8qGjMyjCSUOGpLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079 YZT0EUMrzN5DZB4voSmDPIceod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193841" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 36/65] x86/idle: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:17 +0000 Message-ID: <20211126123446.32324-37-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932040762100013 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/acpi/cpu_idle.c | 31 +++++++++++++++++++++---= ---- xen/arch/x86/acpi/cpuidle_menu.c | 6 +++--- xen/arch/x86/cpu/mwait-idle.c | 2 +- xen/arch/x86/domain.c | 6 +++--- xen/arch/x86/hpet.c | 4 ++-- xen/arch/x86/time.c | 6 +++--- xen/drivers/cpufreq/cpufreq_misc_governors.c | 14 ++++++------- xen/include/asm-x86/cpuidle.h | 4 ++-- xen/include/asm-x86/hpet.h | 4 ++-- xen/include/asm-x86/time.h | 6 +++--- 10 files changed, 49 insertions(+), 34 deletions(-) diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index 0142671bb836..557bc6ef8642 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -75,7 +75,7 @@ #define GET_CC7_RES(val) GET_HW_RES_IN_NS(0x3FE, val) /* SNB onwards */ #define PHI_CC6_RES(val) GET_HW_RES_IN_NS(0x3FF, val) /* Xeon Phi only */ =20 -static void lapic_timer_nop(void) { } +static void cf_check lapic_timer_nop(void) { } void (*__read_mostly lapic_timer_off)(void); void (*__read_mostly lapic_timer_on)(void); =20 @@ -310,12 +310,27 @@ static char* acpi_cstate_method_name[] =3D "HALT" }; =20 -static uint64_t get_stime_tick(void) { return (uint64_t)NOW(); } -static uint64_t stime_ticks_elapsed(uint64_t t1, uint64_t t2) { return t2 = - t1; } -static uint64_t stime_tick_to_ns(uint64_t ticks) { return ticks; } +static uint64_t cf_check get_stime_tick(void) +{ + return NOW(); +} + +static uint64_t cf_check stime_ticks_elapsed(uint64_t t1, uint64_t t2) +{ + return t2 - t1; +} + +static uint64_t cf_check stime_tick_to_ns(uint64_t ticks) +{ + return ticks; +} + +static uint64_t cf_check get_acpi_pm_tick(void) +{ + return inl(pmtmr_ioport); +} =20 -static uint64_t get_acpi_pm_tick(void) { return (uint64_t)inl(pmtmr_ioport= ); } -static uint64_t acpi_pm_ticks_elapsed(uint64_t t1, uint64_t t2) +static uint64_t cf_check acpi_pm_ticks_elapsed(uint64_t t1, uint64_t t2) { if ( t2 >=3D t1 ) return (t2 - t1); @@ -664,7 +679,7 @@ void update_idle_stats(struct acpi_processor_power *pow= er, spin_unlock(&power->stat_lock); } =20 -static void acpi_processor_idle(void) +static void cf_check acpi_processor_idle(void) { unsigned int cpu =3D smp_processor_id(); struct acpi_processor_power *power =3D processor_powers[cpu]; @@ -869,7 +884,7 @@ static void acpi_processor_idle(void) cpuidle_current_governor->reflect(power); } =20 -void acpi_dead_idle(void) +void cf_check acpi_dead_idle(void) { struct acpi_processor_power *power; struct acpi_processor_cx *cx; diff --git a/xen/arch/x86/acpi/cpuidle_menu.c b/xen/arch/x86/acpi/cpuidle_m= enu.c index 6ff5fb8ff215..a275436d799c 100644 --- a/xen/arch/x86/acpi/cpuidle_menu.c +++ b/xen/arch/x86/acpi/cpuidle_menu.c @@ -185,7 +185,7 @@ static unsigned int get_sleep_length_us(void) return (us >> 32) ? (unsigned int)-2000 : (unsigned int)us; } =20 -static int menu_select(struct acpi_processor_power *power) +static int cf_check menu_select(struct acpi_processor_power *power) { struct menu_device *data =3D &this_cpu(menu_devices); int i; @@ -237,7 +237,7 @@ static int menu_select(struct acpi_processor_power *pow= er) return data->last_state_idx; } =20 -static void menu_reflect(struct acpi_processor_power *power) +static void cf_check menu_reflect(struct acpi_processor_power *power) { struct menu_device *data =3D &this_cpu(menu_devices); u64 new_factor; @@ -275,7 +275,7 @@ static void menu_reflect(struct acpi_processor_power *p= ower) data->correction_factor[data->bucket] =3D new_factor; } =20 -static int menu_enable_device(struct acpi_processor_power *power) +static int cf_check menu_enable_device(struct acpi_processor_power *power) { memset(&per_cpu(menu_devices, power->cpu), 0, sizeof(struct menu_devic= e)); =20 diff --git a/xen/arch/x86/cpu/mwait-idle.c b/xen/arch/x86/cpu/mwait-idle.c index 7a4b0837a01f..cf999070ee28 100644 --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -738,7 +738,7 @@ static const struct cpuidle_state dnv_cstates[] =3D { {} }; =20 -static void mwait_idle(void) +static void cf_check mwait_idle(void) { unsigned int cpu =3D smp_processor_id(); struct acpi_processor_power *power =3D processor_powers[cpu]; diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 1c3a1ec2a080..ae7c88b51af1 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -74,11 +74,11 @@ =20 DEFINE_PER_CPU(struct vcpu *, curr_vcpu); =20 -static void default_idle(void); +static void cf_check default_idle(void); void (*pm_idle) (void) __read_mostly =3D default_idle; void (*dead_idle) (void) __read_mostly =3D default_dead_idle; =20 -static void default_idle(void) +static void cf_check default_idle(void) { struct cpu_info *info =3D get_cpu_info(); =20 @@ -93,7 +93,7 @@ static void default_idle(void) local_irq_enable(); } =20 -void default_dead_idle(void) +void cf_check default_dead_idle(void) { /* * When going into S3, without flushing caches modified data may be diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c index c31fd97579dc..20fca839907c 100644 --- a/xen/arch/x86/hpet.c +++ b/xen/arch/x86/hpet.c @@ -709,7 +709,7 @@ void hpet_disable_legacy_broadcast(void) smp_send_event_check_mask(&cpu_online_map); } =20 -void hpet_broadcast_enter(void) +void cf_check hpet_broadcast_enter(void) { unsigned int cpu =3D smp_processor_id(); struct hpet_event_channel *ch =3D per_cpu(cpu_bc_channel, cpu); @@ -740,7 +740,7 @@ void hpet_broadcast_enter(void) spin_unlock(&ch->lock); } =20 -void hpet_broadcast_exit(void) +void cf_check hpet_broadcast_exit(void) { unsigned int cpu =3D smp_processor_id(); struct hpet_event_channel *ch =3D per_cpu(cpu_bc_channel, cpu); diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index dda09f0680b3..ef036a187415 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -535,7 +535,7 @@ static __init int cf_check init_pmtmr_scale(void) } __initcall(init_pmtmr_scale); =20 -uint64_t acpi_pm_tick_to_ns(uint64_t ticks) +uint64_t cf_check acpi_pm_tick_to_ns(uint64_t ticks) { return scale_delta(ticks, &pmt_scale); } @@ -2232,12 +2232,12 @@ static int __init cf_check disable_pit_irq(void) } __initcall(disable_pit_irq); =20 -void pit_broadcast_enter(void) +void cf_check pit_broadcast_enter(void) { cpumask_set_cpu(smp_processor_id(), &pit_broadcast_mask); } =20 -void pit_broadcast_exit(void) +void cf_check pit_broadcast_exit(void) { int cpu =3D smp_processor_id(); =20 diff --git a/xen/drivers/cpufreq/cpufreq_misc_governors.c b/xen/drivers/cpu= freq/cpufreq_misc_governors.c index ad79d0f5d246..f5571f5486ab 100644 --- a/xen/drivers/cpufreq/cpufreq_misc_governors.c +++ b/xen/drivers/cpufreq/cpufreq_misc_governors.c @@ -26,8 +26,8 @@ static unsigned int __read_mostly userspace_cmdline_freq; static DEFINE_PER_CPU(unsigned int, cpu_set_freq); =20 -static int cpufreq_governor_userspace(struct cpufreq_policy *policy, - unsigned int event) +static int cf_check cpufreq_governor_userspace( + struct cpufreq_policy *policy, unsigned int event) { int ret =3D 0; unsigned int cpu; @@ -81,7 +81,7 @@ int write_userspace_scaling_setspeed(unsigned int cpu, un= signed int freq) return __cpufreq_driver_target(policy, freq, CPUFREQ_RELATION_L); } =20 -static bool_t __init +static bool __init cf_check cpufreq_userspace_handle_option(const char *name, const char *val) { if (!strcmp(name, "speed") && val) { @@ -131,8 +131,8 @@ __initcall(cpufreq_gov_userspace_init); /* * cpufreq performance governor */ -static int cpufreq_governor_performance(struct cpufreq_policy *policy, - unsigned int event) +static int cf_check cpufreq_governor_performance( + struct cpufreq_policy *policy, unsigned int event) { int ret =3D 0; =20 @@ -170,8 +170,8 @@ __initcall(cpufreq_gov_performance_init); /* * cpufreq powersave governor */ -static int cpufreq_governor_powersave(struct cpufreq_policy *policy, - unsigned int event) +static int cf_check cpufreq_governor_powersave( + struct cpufreq_policy *policy, unsigned int event) { int ret =3D 0; =20 diff --git a/xen/include/asm-x86/cpuidle.h b/xen/include/asm-x86/cpuidle.h index 0981a8fd6417..3edd7a75d2ef 100644 --- a/xen/include/asm-x86/cpuidle.h +++ b/xen/include/asm-x86/cpuidle.h @@ -17,8 +17,8 @@ extern uint64_t (*cpuidle_get_tick)(void); =20 int mwait_idle_init(struct notifier_block *); int cpuidle_init_cpu(unsigned int cpu); -void default_dead_idle(void); -void acpi_dead_idle(void); +void cf_check default_dead_idle(void); +void cf_check acpi_dead_idle(void); void play_dead(void); void trace_exit_reason(u32 *irq_traced); void update_idle_stats(struct acpi_processor_power *, diff --git a/xen/include/asm-x86/hpet.h b/xen/include/asm-x86/hpet.h index 8f9725a95e21..f343fe4740f1 100644 --- a/xen/include/asm-x86/hpet.h +++ b/xen/include/asm-x86/hpet.h @@ -91,8 +91,8 @@ void hpet_disable_legacy_replacement_mode(void); */ void hpet_broadcast_init(void); void hpet_broadcast_resume(void); -void hpet_broadcast_enter(void); -void hpet_broadcast_exit(void); +void cf_check hpet_broadcast_enter(void); +void cf_check hpet_broadcast_exit(void); int hpet_broadcast_is_available(void); void hpet_disable_legacy_broadcast(void); =20 diff --git a/xen/include/asm-x86/time.h b/xen/include/asm-x86/time.h index f347311cc429..69742450575c 100644 --- a/xen/include/asm-x86/time.h +++ b/xen/include/asm-x86/time.h @@ -43,11 +43,11 @@ int hwdom_pit_access(struct ioreq *ioreq); =20 int cpu_frequency_change(u64 freq); =20 -void pit_broadcast_enter(void); -void pit_broadcast_exit(void); +void cf_check pit_broadcast_enter(void); +void cf_check pit_broadcast_exit(void); int pit_broadcast_is_available(void); =20 -uint64_t acpi_pm_tick_to_ns(uint64_t ticks); +uint64_t cf_check acpi_pm_tick_to_ns(uint64_t ticks); uint64_t ns_to_acpi_pm_tick(uint64_t ns); =20 uint64_t tsc_ticks2ns(uint64_t ticks); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932109; cv=none; d=zohomail.com; s=zohoarc; b=hz19/ye4jI9wbpDkbAtlRwrZrGSyFERnRjyKKWRkWIvhfETxCJy7CMq6yYlpMSyAdaXzX1ROv60cePNTf14GeCuFcYL3XtXRSxS3QoVzuUDMnIYhZtV9zI3BgHOGAV3jpfkCdDh65M6aqTDUyu5x0azQ/HVykR/dJTeuDs9BydU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932109; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=juJ34aXvNFisEcBfYgOFskjEdVsv8yVw6p8Mj92oBsI=; b=PLcQhUjKd7AKP5PQ/39yp3t/1WJ4fH+4QaMHcDZkSdyGSrAgDCCdBjbZKdItxudZs6fh/QyFdSFIJSQdYkmYvZgj8x7yJEgPHbmDLj/mRa7ubleQgI4e9nJi9f0MdTLK6YBGYWrGdJgUnHfK2n4fJk9hjNBbFaaUnNK598Mv2P0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932109865919.0862516433458; Fri, 26 Nov 2021 05:08:29 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232885.404118 (Exim 4.92) (envelope-from ) id 1mqaxX-00039J-SX; Fri, 26 Nov 2021 13:08:11 +0000 Received: by outflank-mailman (output) from mailman id 232885.404118; Fri, 26 Nov 2021 13:08:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxX-00035W-0L; Fri, 26 Nov 2021 13:08:11 +0000 Received: by outflank-mailman (input) for mailman id 232885; Fri, 26 Nov 2021 13:08:08 +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 1mqavr-0002zD-Qh for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:27 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id a8fd2f83-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:06:26 +0100 (CET) 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: a8fd2f83-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931986; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mCzjaOkn5BbOoEcopUe7WTJn31Et1DKHCsnFeiI7nEk=; b=c63xE59rmRwkgBgSnzCSydDt09D9EqApNKEbZs+foyyNRTtIE2x7A4Tv E8UGTz5FjqLF/RzCqIOiOy6jdivWdfjviwHY2BG5Jx2spl/2yC4hCYAHc tGUj2jh5DBsNExzuKPMkoUjW92XQ+ZAOMhm5nVs3X0R5YC1+mb8HX9Jlp k=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: CTBTXSicJyP10PojeuUE/4iFSsYI4LUQxEqKPWHbFG5/tCPVhOKDv8jc0MBfADjZBwKs5uPIGZ 0FpDcsOxngyrsk3RJuJci5aipK+bmI3B2abPVwUEyv4l7BCHABJnkUzP64Uwiqvi/zD1/MB9x4 009SpuOsCZ0iSfdVo9EMK72L5ozWdCnv9k8hnH8UcQXcMDQs96pChbd4+o0zc0uH0kS5tPQKAZ bNsClq33TkEL6PY9p5lkgQ/XaFO9+UVXXD63m1Xhg+W06SE+QoOz/uUJNX7COrqoeUn4+qVoUH OH4Dax9hvGU36zVb84LcTsbD X-SBRS: 5.1 X-MesageID: 60695367 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:J5RZXquvqRJMrAh2x7OgLh7rTefnVJtZMUV32f8akzHdYApBsoF/q tZmKWzUbPiDYWHzetslb43np0kB6JSDzN8xTwFkqH01Hy1H+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Nplv4KcWDwmG4H3qOkCVB5IVB5xEp9dweqSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6AP 5RINGExM3wsZTVVOno9B54Dgd6woXjad2UHjGmz4pc4tj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO+ckxBC2xY/42DaUGW8DXnl+Z/MUr/ZjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9UNc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:ro6YL6Po0936JcBcTvujsMiBIKoaSvp037Eqv3oRdfUzSL3hqy nOpoVj6faaskdzZJhNo7+90ey7MBfhHP1OkO8s1NWZLWvbUQKTRekIh+aP/9SjIVyYygc079 YaT0EUMr3N5DZB4/oSmDPIduod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="60695367" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 37/65] x86/quirks: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:18 +0000 Message-ID: <20211126123446.32324-38-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932111386100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/dmi_scan.c | 10 +++++----- xen/arch/x86/hvm/quirks.c | 2 +- xen/arch/x86/shutdown.c | 2 +- xen/arch/x86/x86_64/mmconfig-shared.c | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/dmi_scan.c b/xen/arch/x86/dmi_scan.c index d27cd3450a29..81f80c053a7a 100644 --- a/xen/arch/x86/dmi_scan.c +++ b/xen/arch/x86/dmi_scan.c @@ -476,7 +476,7 @@ static void __init dmi_save_ident(const struct dmi_head= er *dm, int slot, int str #define NO_MATCH { DMI_NONE, NULL} #define MATCH DMI_MATCH =20 -static int __init ich10_bios_quirk(const struct dmi_system_id *d) +static int __init cf_check ich10_bios_quirk(const struct dmi_system_id *d) { u32 port, smictl; =20 @@ -499,14 +499,14 @@ static int __init ich10_bios_quirk(const struct dmi_s= ystem_id *d) return 0; } =20 -static __init int reset_videomode_after_s3(const struct dmi_blacklist *d) +static __init int cf_check reset_videomode_after_s3(const struct dmi_black= list *d) { /* See wakeup.S */ acpi_video_flags |=3D 2; return 0; } =20 -static __init int dmi_disable_acpi(const struct dmi_blacklist *d) +static __init int cf_check dmi_disable_acpi(const struct dmi_blacklist *d) {=20 if (!acpi_force) {=20 printk(KERN_NOTICE "%s detected: acpi off\n",d->ident); @@ -521,7 +521,7 @@ static __init int dmi_disable_acpi(const struct dmi_bla= cklist *d) /* * Limit ACPI to CPU enumeration for HT */ -static __init int force_acpi_ht(const struct dmi_blacklist *d) +static __init int cf_check force_acpi_ht(const struct dmi_blacklist *d) {=20 if (!acpi_force) {=20 printk(KERN_NOTICE "%s detected: force use of acpi=3Dht\n", d->ident); @@ -650,7 +650,7 @@ static const struct dmi_blacklist __initconstrel dmi_bl= acklist[] =3D { * out of here. */ =20 -static void __init dmi_decode(const struct dmi_header *dm) +static void __init cf_check dmi_decode(const struct dmi_header *dm) { #ifdef DMI_DEBUG const uint8_t *data =3D (const void *)dm; diff --git a/xen/arch/x86/hvm/quirks.c b/xen/arch/x86/hvm/quirks.c index 917356b1312c..2adab1f4b84b 100644 --- a/xen/arch/x86/hvm/quirks.c +++ b/xen/arch/x86/hvm/quirks.c @@ -25,7 +25,7 @@ s8 __read_mostly hvm_port80_allowed =3D -1; boolean_param("hvm_port80", hvm_port80_allowed); =20 -static int __init dmi_hvm_deny_port80(const struct dmi_system_id *id) +static int __init cf_check dmi_hvm_deny_port80(const struct dmi_system_id = *id) { printk(XENLOG_WARNING "%s: port 0x80 access %s allowed for HVM guests\= n", id->ident, hvm_port80_allowed > 0 ? "forcibly" : "not"); diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c index 30985d36a612..7619544d14da 100644 --- a/xen/arch/x86/shutdown.c +++ b/xen/arch/x86/shutdown.c @@ -158,7 +158,7 @@ static void default_reboot_type(void) reboot_type =3D BOOT_ACPI; } =20 -static int __init override_reboot(const struct dmi_system_id *d) +static int __init cf_check override_reboot(const struct dmi_system_id *d) { enum reboot_type type =3D (long)d->driver_data; =20 diff --git a/xen/arch/x86/x86_64/mmconfig-shared.c b/xen/arch/x86/x86_64/mm= config-shared.c index 2fa7f3f0bc4b..74b22b71a19c 100644 --- a/xen/arch/x86/x86_64/mmconfig-shared.c +++ b/xen/arch/x86/x86_64/mmconfig-shared.c @@ -62,7 +62,7 @@ static int __init cf_check parse_mmcfg(const char *s) } custom_param("mmcfg", parse_mmcfg); =20 -static const char __init *pci_mmcfg_e7520(void) +static const char *__init cf_check pci_mmcfg_e7520(void) { u32 win; win =3D pci_conf_read16(PCI_SBDF(0, 0, 0, 0), 0xce); @@ -84,7 +84,7 @@ static const char __init *pci_mmcfg_e7520(void) return "Intel Corporation E7520 Memory Controller Hub"; } =20 -static const char __init *pci_mmcfg_intel_945(void) +static const char *__init cf_check pci_mmcfg_intel_945(void) { u32 pciexbar, mask =3D 0, len =3D 0; =20 @@ -137,7 +137,7 @@ static const char __init *pci_mmcfg_intel_945(void) return "Intel Corporation 945G/GZ/P/PL Express Memory Controller Hub"; } =20 -static const char __init *pci_mmcfg_amd_fam10h(void) +static const char *__init cf_check pci_mmcfg_amd_fam10h(void) { uint32_t address; uint64_t base, msr_content; @@ -190,7 +190,7 @@ static const char __init *pci_mmcfg_amd_fam10h(void) return "AMD Family 10h NB"; } =20 -static const char __init *pci_mmcfg_nvidia_mcp55(void) +static const char *__init cf_check pci_mmcfg_nvidia_mcp55(void) { static bool_t __initdata mcp55_checked; int bus, i; --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932072; cv=none; d=zohomail.com; s=zohoarc; b=e/Xr6DoJAz+MTeqxrh1fOU7++tjijc65SuLosgr8xXkDufk5oFmNHlTh0b43e6KTIPRgskItuWxfYLMAy6jmDjm2+WFdS5syOpGE604JrOwnMGl2TGry4AHijHriQ+iBDdiNEMT16JRA9kafEMzj0kPcHfM5YGAFe6sojeCxvk4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932072; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IKmALWDsYRkP8aTQlBngTd3ThbDYJ2FCvb74XUKS8oA=; b=Dtx1gb2wI7qkE0w2F2zKDHhBAL/73smXmlhf//x+8Q5nw5PtzvU85ZEssqPziIoKmBWKX6HNHWdhMLKWOTX1K1qLyKWRKQetC5fAS6Trf17OehmMdEXI4n6wiiF7jc1bX0z7E69+ieZhrdgT58Y2vIWAKb62LnuuvaKhm9ASMoo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932072992976.4256125827297; Fri, 26 Nov 2021 05:07:52 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232838.403962 (Exim 4.92) (envelope-from ) id 1mqawx-0002wQ-W6; Fri, 26 Nov 2021 13:07:35 +0000 Received: by outflank-mailman (output) from mailman id 232838.403962; Fri, 26 Nov 2021 13:07:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaww-0002rv-VT; Fri, 26 Nov 2021 13:07:34 +0000 Received: by outflank-mailman (input) for mailman id 232838; Fri, 26 Nov 2021 13:07:31 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauZ-0003W9-UN for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:08 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7872a09d-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:05 +0100 (CET) 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: 7872a09d-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931905; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ndytZ7gB54U/vWJSnFX0QALHgIGbo3Y13sh++2zkJpQ=; b=cSma2VuquqPHfWDUy5W4n7/xnwOVpc/nDFOk+Djvlhw4iDgqr4npkmOu 5RaVDEYGtTXkH3sCKSLnyeDhchp8UlVhj5+n3NHAz7h0BP814wZVOK5Qn HVg7X9VyJXimtb2yMnz+AmMosK2LPMHFv31vSvhj9S24GvFnil6eEvFlP Q=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: HiosesprsiVx5lIiXoEOUIsyCv4arXWswZpFIaqMvjRtGBjMDeN5IMZcfcfReQ9QyWXTXY2pnI JZJHbk+UaZC9qjwGYWnrhUgWpQrU0dVFZunMtriVsRSQiz/5DZs75/ghVj1ew8uJGeFs4pJloh OSpb+EaHISUsR3dv9A6XfCePACgm6vyL2lBeGKkv8kc8zftOjMG0Q6bcPAnr61weuDGOn5i4FE BDMU5lNWgr4ZxpWs6BZ19OuVgPH4fm9AYnmZzpxVveewKSfH65l2LE5VTsT1XvMgFL9p41WpD/ q2ECgkQv6jt+BX/LkKKINONE X-SBRS: 5.1 X-MesageID: 58695952 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:b5BszqtN3lXiCMI2BkEYbHvjHefnVJtZMUV32f8akzHdYApBsoF/q tZmKW7QPvmLNDPzKIskOtzl80hTusTRzoNiSVM/rS1gHi1B+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ NpljN+1UFx0Op33vu1NaAVfAjBMfolKweqSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5RINGsyNnwsZTVGNXYKV8ovod6nn1jCLRB5in+Yoo84tj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO9R57RjWl67k2CCQVlMYSS9QWp8CuPZjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9YNc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:BtwGnaF2Zh2Bj/dnpLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079 YZT0EUMrzN5DZB4voSmDPIceod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58695952" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 38/65] x86/hvmsave: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:19 +0000 Message-ID: <20211126123446.32324-39-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932074122100007 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/cpu/mcheck/vmce.c | 4 ++-- xen/arch/x86/emul-i8254.c | 4 ++-- xen/arch/x86/hvm/hpet.c | 4 ++-- xen/arch/x86/hvm/hvm.c | 18 ++++++++++-------- xen/arch/x86/hvm/irq.c | 12 ++++++------ xen/arch/x86/hvm/mtrr.c | 4 ++-- xen/arch/x86/hvm/pmtimer.c | 4 ++-- xen/arch/x86/hvm/rtc.c | 4 ++-- xen/arch/x86/hvm/vioapic.c | 4 ++-- xen/arch/x86/hvm/viridian/viridian.c | 15 ++++++++------- xen/arch/x86/hvm/vlapic.c | 8 ++++---- xen/arch/x86/hvm/vpic.c | 4 ++-- 12 files changed, 44 insertions(+), 41 deletions(-) diff --git a/xen/arch/x86/cpu/mcheck/vmce.c b/xen/arch/x86/cpu/mcheck/vmce.c index eb6434a3ba20..458120f9ad8d 100644 --- a/xen/arch/x86/cpu/mcheck/vmce.c +++ b/xen/arch/x86/cpu/mcheck/vmce.c @@ -353,7 +353,7 @@ int vmce_wrmsr(uint32_t msr, uint64_t val) } =20 #if CONFIG_HVM -static int vmce_save_vcpu_ctxt(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check vmce_save_vcpu_ctxt(struct vcpu *v, hvm_domain_context= _t *h) { struct hvm_vmce_vcpu ctxt =3D { .caps =3D v->arch.vmce.mcg_cap, @@ -365,7 +365,7 @@ static int vmce_save_vcpu_ctxt(struct vcpu *v, hvm_doma= in_context_t *h) return hvm_save_entry(VMCE_VCPU, v->vcpu_id, h, &ctxt); } =20 -static int vmce_load_vcpu_ctxt(struct domain *d, hvm_domain_context_t *h) +static int cf_check vmce_load_vcpu_ctxt(struct domain *d, hvm_domain_conte= xt_t *h) { unsigned int vcpuid =3D hvm_load_instance(h); struct vcpu *v; diff --git a/xen/arch/x86/emul-i8254.c b/xen/arch/x86/emul-i8254.c index 0e09a173187f..d170f464d966 100644 --- a/xen/arch/x86/emul-i8254.c +++ b/xen/arch/x86/emul-i8254.c @@ -391,7 +391,7 @@ void pit_stop_channel0_irq(PITState *pit) spin_unlock(&pit->lock); } =20 -static int pit_save(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check pit_save(struct vcpu *v, hvm_domain_context_t *h) { struct domain *d =3D v->domain; PITState *pit =3D domain_vpit(d); @@ -409,7 +409,7 @@ static int pit_save(struct vcpu *v, hvm_domain_context_= t *h) return rc; } =20 -static int pit_load(struct domain *d, hvm_domain_context_t *h) +static int cf_check pit_load(struct domain *d, hvm_domain_context_t *h) { PITState *pit =3D domain_vpit(d); int i, rc =3D 0; diff --git a/xen/arch/x86/hvm/hpet.c b/xen/arch/x86/hvm/hpet.c index 7bdb51cfa1c4..ed512fa65b63 100644 --- a/xen/arch/x86/hvm/hpet.c +++ b/xen/arch/x86/hvm/hpet.c @@ -582,7 +582,7 @@ static const struct hvm_mmio_ops hpet_mmio_ops =3D { }; =20 =20 -static int hpet_save(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check hpet_save(struct vcpu *v, hvm_domain_context_t *h) { const struct domain *d =3D v->domain; HPETState *hp =3D domain_vhpet(d); @@ -645,7 +645,7 @@ static int hpet_save(struct vcpu *v, hvm_domain_context= _t *h) return rc; } =20 -static int hpet_load(struct domain *d, hvm_domain_context_t *h) +static int cf_check hpet_load(struct domain *d, hvm_domain_context_t *h) { HPETState *hp =3D domain_vhpet(d); struct hvm_hw_hpet *rec; diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index fdc0b86bf091..d5ca7a1ce636 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -789,7 +789,7 @@ void hvm_domain_destroy(struct domain *d) destroy_vpci_mmcfg(d); } =20 -static int hvm_save_tsc_adjust(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check hvm_save_tsc_adjust(struct vcpu *v, hvm_domain_context= _t *h) { struct hvm_tsc_adjust ctxt =3D { .tsc_adjust =3D v->arch.hvm.msr_tsc_adjust, @@ -798,7 +798,7 @@ static int hvm_save_tsc_adjust(struct vcpu *v, hvm_doma= in_context_t *h) return hvm_save_entry(TSC_ADJUST, v->vcpu_id, h, &ctxt); } =20 -static int hvm_load_tsc_adjust(struct domain *d, hvm_domain_context_t *h) +static int cf_check hvm_load_tsc_adjust(struct domain *d, hvm_domain_conte= xt_t *h) { unsigned int vcpuid =3D hvm_load_instance(h); struct vcpu *v; @@ -821,7 +821,7 @@ static int hvm_load_tsc_adjust(struct domain *d, hvm_do= main_context_t *h) HVM_REGISTER_SAVE_RESTORE(TSC_ADJUST, hvm_save_tsc_adjust, hvm_load_tsc_adjust, 1, HVMSR_PER_VCPU); =20 -static int hvm_save_cpu_ctxt(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check hvm_save_cpu_ctxt(struct vcpu *v, hvm_domain_context_t= *h) { struct segment_register seg; struct hvm_hw_cpu ctxt =3D { @@ -1004,7 +1004,7 @@ unsigned long hvm_cr4_guest_valid_bits(const struct d= omain *d) (cet ? X86_CR4_CET : 0)); } =20 -static int hvm_load_cpu_ctxt(struct domain *d, hvm_domain_context_t *h) +static int cf_check hvm_load_cpu_ctxt(struct domain *d, hvm_domain_context= _t *h) { unsigned int vcpuid =3D hvm_load_instance(h); struct vcpu *v; @@ -1205,7 +1205,8 @@ HVM_REGISTER_SAVE_RESTORE(CPU, hvm_save_cpu_ctxt, hvm= _load_cpu_ctxt, 1, save_area) + \ xstate_ctxt_size(xcr0)) =20 -static int hvm_save_cpu_xsave_states(struct vcpu *v, hvm_domain_context_t = *h) +static int cf_check hvm_save_cpu_xsave_states( + struct vcpu *v, hvm_domain_context_t *h) { struct hvm_hw_cpu_xsave *ctxt; unsigned int size =3D HVM_CPU_XSAVE_SIZE(v->arch.xcr0_accum); @@ -1243,7 +1244,8 @@ CHECK_FIELD_(struct, xsave_hdr, reserved); #undef compat_xsave_hdr #undef xen_xsave_hdr =20 -static int hvm_load_cpu_xsave_states(struct domain *d, hvm_domain_context_= t *h) +static int cf_check hvm_load_cpu_xsave_states( + struct domain *d, hvm_domain_context_t *h) { unsigned int vcpuid, size; int err; @@ -1371,7 +1373,7 @@ static const uint32_t msrs_to_send[] =3D { MSR_AMD64_DR3_ADDRESS_MASK, }; =20 -static int hvm_save_cpu_msrs(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check hvm_save_cpu_msrs(struct vcpu *v, hvm_domain_context_t= *h) { struct hvm_save_descriptor *desc =3D _p(&h->data[h->cur]); struct hvm_msr *ctxt; @@ -1430,7 +1432,7 @@ static int hvm_save_cpu_msrs(struct vcpu *v, hvm_doma= in_context_t *h) return 0; } =20 -static int hvm_load_cpu_msrs(struct domain *d, hvm_domain_context_t *h) +static int cf_check hvm_load_cpu_msrs(struct domain *d, hvm_domain_context= _t *h) { unsigned int i, vcpuid =3D hvm_load_instance(h); struct vcpu *v; diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index a7f8991a7b84..5a7f39b54ff4 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -657,7 +657,7 @@ static int __init cf_check dump_irq_info_key_init(void) } __initcall(dump_irq_info_key_init); =20 -static int irq_save_pci(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check irq_save_pci(struct vcpu *v, hvm_domain_context_t *h) { struct domain *d =3D v->domain; struct hvm_irq *hvm_irq =3D hvm_domain_irq(d); @@ -690,7 +690,7 @@ static int irq_save_pci(struct vcpu *v, hvm_domain_cont= ext_t *h) return rc; } =20 -static int irq_save_isa(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check irq_save_isa(struct vcpu *v, hvm_domain_context_t *h) { const struct domain *d =3D v->domain; struct hvm_irq *hvm_irq =3D hvm_domain_irq(d); @@ -699,7 +699,7 @@ static int irq_save_isa(struct vcpu *v, hvm_domain_cont= ext_t *h) return hvm_save_entry(ISA_IRQ, 0, h, &hvm_irq->isa_irq); } =20 -static int irq_save_link(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check irq_save_link(struct vcpu *v, hvm_domain_context_t *h) { const struct domain *d =3D v->domain; struct hvm_irq *hvm_irq =3D hvm_domain_irq(d); @@ -708,7 +708,7 @@ static int irq_save_link(struct vcpu *v, hvm_domain_con= text_t *h) return hvm_save_entry(PCI_LINK, 0, h, &hvm_irq->pci_link); } =20 -static int irq_load_pci(struct domain *d, hvm_domain_context_t *h) +static int cf_check irq_load_pci(struct domain *d, hvm_domain_context_t *h) { struct hvm_irq *hvm_irq =3D hvm_domain_irq(d); int link, dev, intx, gsi; @@ -741,7 +741,7 @@ static int irq_load_pci(struct domain *d, hvm_domain_co= ntext_t *h) return 0; } =20 -static int irq_load_isa(struct domain *d, hvm_domain_context_t *h) +static int cf_check irq_load_isa(struct domain *d, hvm_domain_context_t *h) { struct hvm_irq *hvm_irq =3D hvm_domain_irq(d); int irq; @@ -760,7 +760,7 @@ static int irq_load_isa(struct domain *d, hvm_domain_co= ntext_t *h) } =20 =20 -static int irq_load_link(struct domain *d, hvm_domain_context_t *h) +static int cf_check irq_load_link(struct domain *d, hvm_domain_context_t *= h) { struct hvm_irq *hvm_irq =3D hvm_domain_irq(d); int link, gsi; diff --git a/xen/arch/x86/hvm/mtrr.c b/xen/arch/x86/hvm/mtrr.c index 42f3d8319296..4d2aa6def86d 100644 --- a/xen/arch/x86/hvm/mtrr.c +++ b/xen/arch/x86/hvm/mtrr.c @@ -687,7 +687,7 @@ int hvm_set_mem_pinned_cacheattr(struct domain *d, uint= 64_t gfn_start, return 0; } =20 -static int hvm_save_mtrr_msr(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check hvm_save_mtrr_msr(struct vcpu *v, hvm_domain_context_t= *h) { const struct mtrr_state *mtrr_state =3D &v->arch.hvm.mtrr; struct hvm_hw_mtrr hw_mtrr =3D { @@ -725,7 +725,7 @@ static int hvm_save_mtrr_msr(struct vcpu *v, hvm_domain= _context_t *h) return hvm_save_entry(MTRR, v->vcpu_id, h, &hw_mtrr); } =20 -static int hvm_load_mtrr_msr(struct domain *d, hvm_domain_context_t *h) +static int cf_check hvm_load_mtrr_msr(struct domain *d, hvm_domain_context= _t *h) { unsigned int vcpuid, i; struct vcpu *v; diff --git a/xen/arch/x86/hvm/pmtimer.c b/xen/arch/x86/hvm/pmtimer.c index 60e3c8de4c6b..2a89bbdfa5b8 100644 --- a/xen/arch/x86/hvm/pmtimer.c +++ b/xen/arch/x86/hvm/pmtimer.c @@ -249,7 +249,7 @@ static int cf_check handle_pmt_io( return X86EMUL_OKAY; } =20 -static int acpi_save(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check acpi_save(struct vcpu *v, hvm_domain_context_t *h) { struct domain *d =3D v->domain; struct hvm_hw_acpi *acpi =3D &d->arch.hvm.acpi; @@ -281,7 +281,7 @@ static int acpi_save(struct vcpu *v, hvm_domain_context= _t *h) return rc; } =20 -static int acpi_load(struct domain *d, hvm_domain_context_t *h) +static int cf_check acpi_load(struct domain *d, hvm_domain_context_t *h) { struct hvm_hw_acpi *acpi =3D &d->arch.hvm.acpi; PMTState *s =3D &d->arch.hvm.pl_time->vpmt; diff --git a/xen/arch/x86/hvm/rtc.c b/xen/arch/x86/hvm/rtc.c index bdc647e433e9..ed397276faa3 100644 --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -738,7 +738,7 @@ void rtc_migrate_timers(struct vcpu *v) } =20 /* Save RTC hardware state */ -static int rtc_save(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check rtc_save(struct vcpu *v, hvm_domain_context_t *h) { const struct domain *d =3D v->domain; RTCState *s =3D domain_vrtc(d); @@ -756,7 +756,7 @@ static int rtc_save(struct vcpu *v, hvm_domain_context_= t *h) } =20 /* Reload the hardware state from a saved domain */ -static int rtc_load(struct domain *d, hvm_domain_context_t *h) +static int cf_check rtc_load(struct domain *d, hvm_domain_context_t *h) { RTCState *s =3D domain_vrtc(d); =20 diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index b56549aa22d1..d5d5b02421e9 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -590,7 +590,7 @@ int vioapic_get_trigger_mode(const struct domain *d, un= signed int gsi) return vioapic->redirtbl[pin].fields.trig_mode; } =20 -static int ioapic_save(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check ioapic_save(struct vcpu *v, hvm_domain_context_t *h) { const struct domain *d =3D v->domain; struct hvm_vioapic *s; @@ -607,7 +607,7 @@ static int ioapic_save(struct vcpu *v, hvm_domain_conte= xt_t *h) return hvm_save_entry(IOAPIC, 0, h, &s->domU); } =20 -static int ioapic_load(struct domain *d, hvm_domain_context_t *h) +static int cf_check ioapic_load(struct domain *d, hvm_domain_context_t *h) { struct hvm_vioapic *s; =20 diff --git a/xen/arch/x86/hvm/viridian/viridian.c b/xen/arch/x86/hvm/viridi= an/viridian.c index ad32b09725d5..69a3497709a8 100644 --- a/xen/arch/x86/hvm/viridian/viridian.c +++ b/xen/arch/x86/hvm/viridian/viridian.c @@ -1125,8 +1125,8 @@ void viridian_unmap_guest_page(struct viridian_page *= vp) put_page_and_type(page); } =20 -static int viridian_save_domain_ctxt(struct vcpu *v, - hvm_domain_context_t *h) +static int cf_check viridian_save_domain_ctxt( + struct vcpu *v, hvm_domain_context_t *h) { const struct domain *d =3D v->domain; const struct viridian_domain *vd =3D d->arch.hvm.viridian; @@ -1144,8 +1144,8 @@ static int viridian_save_domain_ctxt(struct vcpu *v, return (hvm_save_entry(VIRIDIAN_DOMAIN, 0, h, &ctxt) !=3D 0); } =20 -static int viridian_load_domain_ctxt(struct domain *d, - hvm_domain_context_t *h) +static int cf_check viridian_load_domain_ctxt( + struct domain *d, hvm_domain_context_t *h) { struct viridian_domain *vd =3D d->arch.hvm.viridian; struct hvm_viridian_domain_context ctxt; @@ -1165,7 +1165,8 @@ static int viridian_load_domain_ctxt(struct domain *d, HVM_REGISTER_SAVE_RESTORE(VIRIDIAN_DOMAIN, viridian_save_domain_ctxt, viridian_load_domain_ctxt, 1, HVMSR_PER_DOM); =20 -static int viridian_save_vcpu_ctxt(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check viridian_save_vcpu_ctxt( + struct vcpu *v, hvm_domain_context_t *h) { struct hvm_viridian_vcpu_context ctxt =3D {}; =20 @@ -1178,8 +1179,8 @@ static int viridian_save_vcpu_ctxt(struct vcpu *v, hv= m_domain_context_t *h) return hvm_save_entry(VIRIDIAN_VCPU, v->vcpu_id, h, &ctxt); } =20 -static int viridian_load_vcpu_ctxt(struct domain *d, - hvm_domain_context_t *h) +static int cf_check viridian_load_vcpu_ctxt( + struct domain *d, hvm_domain_context_t *h) { unsigned int vcpuid =3D hvm_load_instance(h); struct vcpu *v; diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index 652e3cb87f12..d4e29ef1ff1d 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -1482,7 +1482,7 @@ static void lapic_rearm(struct vlapic *s) s->timer_last_update =3D s->pt.last_plt_gtime; } =20 -static int lapic_save_hidden(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check lapic_save_hidden(struct vcpu *v, hvm_domain_context_t= *h) { if ( !has_vlapic(v->domain) ) return 0; @@ -1490,7 +1490,7 @@ static int lapic_save_hidden(struct vcpu *v, hvm_doma= in_context_t *h) return hvm_save_entry(LAPIC, v->vcpu_id, h, &vcpu_vlapic(v)->hw); } =20 -static int lapic_save_regs(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check lapic_save_regs(struct vcpu *v, hvm_domain_context_t *= h) { if ( !has_vlapic(v->domain) ) return 0; @@ -1529,7 +1529,7 @@ static void lapic_load_fixup(struct vlapic *vlapic) } } =20 -static int lapic_load_hidden(struct domain *d, hvm_domain_context_t *h) +static int cf_check lapic_load_hidden(struct domain *d, hvm_domain_context= _t *h) { unsigned int vcpuid =3D hvm_load_instance(h); struct vcpu *v; @@ -1563,7 +1563,7 @@ static int lapic_load_hidden(struct domain *d, hvm_do= main_context_t *h) return 0; } =20 -static int lapic_load_regs(struct domain *d, hvm_domain_context_t *h) +static int cf_check lapic_load_regs(struct domain *d, hvm_domain_context_t= *h) { unsigned int vcpuid =3D hvm_load_instance(h); struct vcpu *v; diff --git a/xen/arch/x86/hvm/vpic.c b/xen/arch/x86/hvm/vpic.c index 5d8ef259b710..b3cafaab8fad 100644 --- a/xen/arch/x86/hvm/vpic.c +++ b/xen/arch/x86/hvm/vpic.c @@ -400,7 +400,7 @@ static int cf_check vpic_intercept_elcr_io( return X86EMUL_OKAY; } =20 -static int vpic_save(struct vcpu *v, hvm_domain_context_t *h) +static int cf_check vpic_save(struct vcpu *v, hvm_domain_context_t *h) { struct domain *d =3D v->domain; struct hvm_hw_vpic *s; @@ -420,7 +420,7 @@ static int vpic_save(struct vcpu *v, hvm_domain_context= _t *h) return 0; } =20 -static int vpic_load(struct domain *d, hvm_domain_context_t *h) +static int cf_check vpic_load(struct domain *d, hvm_domain_context_t *h) { struct hvm_hw_vpic *s; unsigned int inst =3D hvm_load_instance(h); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932115; cv=none; d=zohomail.com; s=zohoarc; b=UOvJmeFROFJ3tYWxQvrC1O0CbcPrxPZ7eJNgHM+MAYSzs2TXynDp6mVdlrOhAFGxpJdbzl/xP1nlsnI5m+p10sBMGu5xbE3Sh9Hu/wwos7heO7elPgdk4E6OTLw1drwiYNagoc28S+v0yEFO5tqk/jglkb8F3qokAPCP+owwY/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932115; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HAabUIsuM9Buz8gIOVqnt9EvEc6UFZM7kfw5nmAyiHw=; b=nnqOpRHaZbuLAqrKnVcgDTHRgh4J8ZYlaFIUU6fIcrx5pqFyw0gBvLys7nAoh3O+LakPzo/zd7XgwNmiVVfE6ZiurZP8EBT99N07OZGD3U3PFiwD3Ctxa/NuSznnkWXfR4Vs+jf6R/BlLbviyXJzzcQsUbPx9/j44pat77pAyOc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932115452924.8146376935306; Fri, 26 Nov 2021 05:08:35 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232890.404149 (Exim 4.92) (envelope-from ) id 1mqaxe-0004OL-90; Fri, 26 Nov 2021 13:08:18 +0000 Received: by outflank-mailman (output) from mailman id 232890.404149; Fri, 26 Nov 2021 13:08:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxc-0004GU-MA; Fri, 26 Nov 2021 13:08:16 +0000 Received: by outflank-mailman (input) for mailman id 232890; Fri, 26 Nov 2021 13:08:13 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqav5-0003W9-E8 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:39 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 8aa86722-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:35 +0100 (CET) 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: 8aa86722-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931935; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eytoyY1MzG0tl/bk0TOOzujLGnc7vJSPTvWtmGIYixE=; b=ZjNROnfUeYE/cW1nYFrzIvkp9Hs8liQdojrXHJWu9EhasijitfdC74t0 lILn9e1fyDw5jPJX8D4hgYVDm3dlGpRASGFKkrBzfWESwKFtYuta49rDX vrhwrTOWGhIwWzMkMdv8gy/sToFwbotm0Yj2VN/Rg2Vokcoi9gMCTh+z0 s=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: kWN/RgKQoGE/jGDWqtw6TFykhPetduO7zsGvLarezDqHrxDktXpbGxm3fjA5AjcYCuQ6NkHZLZ ymYXwc7D6QJU7DP8DWNryqW1gdo662GNEIAgzYeFczjtJile9uyWqkBDFDotPXjUMjn8FvlWNQ pf894DprJP/Cmif3Iotl0OV0/NF6+afJZHqCh8BahcZ8RYRphmiaWqxe4eQDFYUlRJBmP1gBdJ UZnI6l2WmS9n5omnE0wYbsq+CnhMQGBHs4G9DxJBZpBl9ZDOyU1jQrNKD7QC/o81j9VFoaPT1Q Zyk6CSsTqjQyAJr7YGpOtO0A X-SBRS: 5.1 X-MesageID: 58193821 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:qKW+7qj6R8eNCXYsYWuGSrUsX161rRcKZh0ujC45NGQN5FlHY01je htvX22AP6qPYmH0fIh+Oom/9UsDu5XXytUxSgA9/n03FH4b9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0F0/NtTo5w7Rg29cy34Dja++wk YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx /18jt+SYDYGEZaWp/k5Ax0DFn11JJZJreqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr KJCbmpXN1ba2rzwkOnTpupE36zPKOHCOo8Ft24m5jbeFfs8GrjIQrnQ5M8e1zA17ixLNauOP ptCOWA2BPjGSwRAF3VHF54XoMOt3Efdcg9elHi6hoNitgA/yyQuieOwYbI5YOeiWsF9jkue4 GXc8AzRIDsXKdiewjqt6W+3i6nEmiaTcJIfEvi0++BnhHWXx3cPE1sGWF2ju/67h0WiHdVFJ CQpFjEG9PZoshbxF5+kAkP+8CXsUgMgt8R4ItZ5yii85YXvuTmEIjgAFTsdY8Udu5pjLdA17 WOhk9TsDD1plbSaT3OB67uZxQ+P1TgpwXwqPnFdE1ZcizX3iMRq10+UEI4/eEKgpoStQWmY/ tyckMQpa1z/Z+Yv3r7zw13IiinESnPhHl9svVW/so5IA2pEiG+Zi26AtQezARVodt/xory9U J4swJP2AAcmV8zlqcB1aL9RdIxFHt7cWNEmvXZhHoM66xOm8GO5cIZb7VlWfRkybZZaJGC4P BGP4mu9AaO/2lPxNsebhKrrVqwXIVXIT4y5Bpg4kPISCnSOSON31H43PhPBt4wcuEMtjbs+K f+mnTWEVh4n5VBc5GPuHY81iOZzrghnnD+7bc2rnnyPjOvFDFbIGOhtDbd7Rr1ghE9yiF6Oq Ig32grj40g3bdASlQGLq9NOdg5TciBgbX00wuQOHtO+zsNdMDlJI5fsLXkJIeSJRoxZybXF+ G+TQEhdxAatjHHLM1zSOHtidKnuTdB0qndiZX4gOlOh2n4CZ4ez7fhAK8trLOd/rOEzn+RpS /QletmbBqgdQDrw5DlAP4L2q5ZvdUr3iFvWbTalejU2Y7VpWxfNpo3/ZgLq+SRXVni3uMIyr qeOzATeRZZfFQ1uANyPMKCkzk+rvGhbk+V3BhOaLt5WcUTq0Y5rNy2u0aNnf5BScU3On2LI2 RyXDBEUofj2j7U0qNSZ17qZq4qJEvdlGhYIFWfs8rvrZzLR+XCuwNEcXb/QLyzdTm795I6re f5Rk6PnKPQCkVtH79h8HrJswf5s7tfjveYHnAFtHXGNZFW3ELJwZHKB2JAX5KFKw7ZYvyqwW 16OpYYGaenYZpu9HQ5DPhchY8SCyeoQy2vb4vkCKUnn4DN6oeicWkJIMhjQ0CFQIdOZ6m/+L TvNbCLO1zGCtw== IronPort-HdrOrdr: A9a23:kR7Rwq0zy0udtazHlimnjAqjBIokLtp133Aq2lEZdPRUGvb3qy nIpoVj6faUskd2ZJhOo7C90cW7LU80sKQFhLX5Xo3SOzUO2lHYT72KhLGKq1aLdhEWtNQtsZ uIG5IOcOEYZmIasS+V2maF+q4bsbu6zJw= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193821" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 39/65] x86/mce: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:20 +0000 Message-ID: <20211126123446.32324-40-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932116751100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/cpu/mcheck/mce.c | 8 ++++---- xen/arch/x86/cpu/mcheck/mce.h | 2 +- xen/arch/x86/cpu/mcheck/mce_amd.c | 9 ++++---- xen/arch/x86/cpu/mcheck/mce_amd.h | 4 ++-- xen/arch/x86/cpu/mcheck/mce_intel.c | 41 +++++++++++++++++----------------= ---- 5 files changed, 31 insertions(+), 33 deletions(-) diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index 3467e0f1a315..275c54be7c0f 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -75,7 +75,7 @@ static int __init cf_check mce_set_verbosity(const char *= str) custom_param("mce_verbosity", mce_set_verbosity); =20 /* Handle unconfigured int18 (should never happen) */ -static void unexpected_machine_check(const struct cpu_user_regs *regs) +static void cf_check unexpected_machine_check(const struct cpu_user_regs *= regs) { console_force_unlock(); printk("Unexpected Machine Check Exception\n"); @@ -469,7 +469,7 @@ static int mce_urgent_action(const struct cpu_user_regs= *regs, } =20 /* Shared #MC handler. */ -void mcheck_cmn_handler(const struct cpu_user_regs *regs) +void cf_check mcheck_cmn_handler(const struct cpu_user_regs *regs) { static DEFINE_MCE_BARRIER(mce_trap_bar); static atomic_t severity_cpu =3D ATOMIC_INIT(-1); @@ -1684,7 +1684,7 @@ long cf_check do_mca(XEN_GUEST_HANDLE_PARAM(xen_mc_t)= u_xen_mc) } =20 int mcinfo_dumpped; -static int x86_mcinfo_dump_panic(mctelem_cookie_t mctc) +static int cf_check x86_mcinfo_dump_panic(mctelem_cookie_t mctc) { struct mc_info *mcip =3D mctelem_dataptr(mctc); =20 @@ -1801,7 +1801,7 @@ static enum mce_result mce_action(const struct cpu_us= er_regs *regs, * should be committed for dom0 consumption, 0 if it should be * dismissed. */ -static int mce_delayed_action(mctelem_cookie_t mctc) +static int cf_check mce_delayed_action(mctelem_cookie_t mctc) { enum mce_result result; int ret =3D 0; diff --git a/xen/arch/x86/cpu/mcheck/mce.h b/xen/arch/x86/cpu/mcheck/mce.h index 195362691904..535d0abf8f9b 100644 --- a/xen/arch/x86/cpu/mcheck/mce.h +++ b/xen/arch/x86/cpu/mcheck/mce.h @@ -70,7 +70,7 @@ extern void x86_mce_vector_register(x86_mce_vector_t); * Common generic MCE handler that implementations may nominate * via x86_mce_vector_register. */ -extern void mcheck_cmn_handler(const struct cpu_user_regs *regs); +void cf_check mcheck_cmn_handler(const struct cpu_user_regs *regs); =20 /* Register a handler for judging whether mce is recoverable. */ typedef bool (*mce_recoverable_t)(uint64_t status); diff --git a/xen/arch/x86/cpu/mcheck/mce_amd.c b/xen/arch/x86/cpu/mcheck/mc= e_amd.c index 279a8e6f122d..d7ae8919df77 100644 --- a/xen/arch/x86/cpu/mcheck/mce_amd.c +++ b/xen/arch/x86/cpu/mcheck/mce_amd.c @@ -113,7 +113,7 @@ mc_ec2type(uint16_t errorcode) return 0; } =20 -bool mc_amd_recoverable_scan(uint64_t status) +bool cf_check mc_amd_recoverable_scan(uint64_t status) { bool ret =3D false; enum mc_ec_type ectype; @@ -143,7 +143,7 @@ bool mc_amd_recoverable_scan(uint64_t status) return ret; } =20 -bool mc_amd_addrcheck(uint64_t status, uint64_t misc, int addrtype) +bool cf_check mc_amd_addrcheck(uint64_t status, uint64_t misc, int addrtyp= e) { enum mc_ec_type ectype; uint16_t errorcode; @@ -216,7 +216,7 @@ static void mcequirk_amd_apply(enum mcequirk_amd_flags = flags) } } =20 -static struct mcinfo_extended * +static struct mcinfo_extended *cf_check amd_f10_handler(struct mc_info *mi, uint16_t bank, uint64_t status) { struct mcinfo_extended *mc_ext; @@ -252,7 +252,8 @@ amd_f10_handler(struct mc_info *mi, uint16_t bank, uint= 64_t status) return mc_ext; } =20 -static bool amd_need_clearbank_scan(enum mca_source who, uint64_t status) +static bool cf_check amd_need_clearbank_scan( + enum mca_source who, uint64_t status) { if ( who !=3D MCA_MCE_SCAN ) return true; diff --git a/xen/arch/x86/cpu/mcheck/mce_amd.h b/xen/arch/x86/cpu/mcheck/mc= e_amd.h index 67c45454707d..c12c25d74567 100644 --- a/xen/arch/x86/cpu/mcheck/mce_amd.h +++ b/xen/arch/x86/cpu/mcheck/mce_amd.h @@ -1,7 +1,7 @@ #ifndef _MCHECK_AMD_H #define _MCHECK_AMD_H =20 -bool mc_amd_recoverable_scan(uint64_t status); -bool mc_amd_addrcheck(uint64_t status, uint64_t misc, int addrtype); +bool cf_check mc_amd_recoverable_scan(uint64_t status); +bool cf_check mc_amd_addrcheck(uint64_t status, uint64_t misc, int addrtyp= e); =20 #endif diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/= mce_intel.c index f587018cd2d2..9f8b2865c206 100644 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c @@ -271,12 +271,13 @@ static void intel_memerr_dhandler( mc_memerr_dhandler(binfo, result, regs); } =20 -static bool intel_srar_check(uint64_t status) +static bool cf_check intel_srar_check(uint64_t status) { return (intel_check_mce_type(status) =3D=3D intel_mce_ucr_srar); } =20 -static bool intel_checkaddr(uint64_t status, uint64_t misc, int addrtype) +static bool cf_check intel_checkaddr( + uint64_t status, uint64_t misc, int addrtype) { if ( !(status & MCi_STATUS_ADDRV) || !(status & MCi_STATUS_MISCV) || @@ -287,10 +288,9 @@ static bool intel_checkaddr(uint64_t status, uint64_t = misc, int addrtype) return (addrtype =3D=3D MC_ADDR_PHYSICAL); } =20 -static void intel_srar_dhandler( - struct mca_binfo *binfo, - enum mce_result *result, - const struct cpu_user_regs *regs) +static void cf_check intel_srar_dhandler( + struct mca_binfo *binfo, enum mce_result *result, + const struct cpu_user_regs *regs) { uint64_t status =3D binfo->mib->mc_status; =20 @@ -306,15 +306,14 @@ static void intel_srar_dhandler( } } =20 -static bool intel_srao_check(uint64_t status) +static bool cf_check intel_srao_check(uint64_t status) { return (intel_check_mce_type(status) =3D=3D intel_mce_ucr_srao); } =20 -static void intel_srao_dhandler( - struct mca_binfo *binfo, - enum mce_result *result, - const struct cpu_user_regs *regs) +static void cf_check intel_srao_dhandler( + struct mca_binfo *binfo, enum mce_result *result, + const struct cpu_user_regs *regs) { uint64_t status =3D binfo->mib->mc_status; =20 @@ -333,15 +332,14 @@ static void intel_srao_dhandler( } } =20 -static bool intel_default_check(uint64_t status) +static bool cf_check intel_default_check(uint64_t status) { return true; } =20 -static void intel_default_mce_dhandler( - struct mca_binfo *binfo, - enum mce_result *result, - const struct cpu_user_regs * regs) +static void cf_check intel_default_mce_dhandler( + struct mca_binfo *binfo, enum mce_result *result, + const struct cpu_user_regs * regs) { uint64_t status =3D binfo->mib->mc_status; enum intel_mce_type type; @@ -360,10 +358,9 @@ static const struct mca_error_handler intel_mce_dhandl= ers[] =3D { {intel_default_check, intel_default_mce_dhandler} }; =20 -static void intel_default_mce_uhandler( - struct mca_binfo *binfo, - enum mce_result *result, - const struct cpu_user_regs *regs) +static void cf_check intel_default_mce_uhandler( + struct mca_binfo *binfo, enum mce_result *result, + const struct cpu_user_regs *regs) { uint64_t status =3D binfo->mib->mc_status; enum intel_mce_type type; @@ -396,7 +393,7 @@ static const struct mca_error_handler intel_mce_uhandle= rs[] =3D { * 3) ser_support =3D 1, SRAO, UC =3D 1, S =3D 1, AR =3D 0, [EN =3D 1] */ =20 -static bool intel_need_clearbank_scan(enum mca_source who, u64 status) +static bool cf_check intel_need_clearbank_scan(enum mca_source who, u64 st= atus) { if ( who =3D=3D MCA_CMCI_HANDLER ) { @@ -453,7 +450,7 @@ static bool intel_need_clearbank_scan(enum mca_source w= ho, u64 status) * 4) SRAO ser_support =3D 1, PCC =3D 0, S =3D 1, AR =3D 0, EN =3D 1 [UC = =3D 1] * 5) UCNA ser_support =3D 1, OVER =3D 0, EN =3D 1, PCC =3D 0, S =3D 0, AR= =3D 0, [UC =3D 1] */ -static bool intel_recoverable_scan(uint64_t status) +static bool cf_check intel_recoverable_scan(uint64_t status) { =20 if ( !(status & MCi_STATUS_UC ) ) --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932103; cv=none; d=zohomail.com; s=zohoarc; b=Fvj1BY0ubOsjRrX3PXe7Px23mtu+R6+qX3GVHfI0UYNCL2BaF+vob4M3rzBSjeBlmE/xb0JPYst21gxtPsmLAjhCT9ltKVOcHOQ7fd3tseV2x0PIIdSxC/WnFBXIhNDJDtEYKmwUMbqS1ft0Sc0D3vdRPC7ICHI5TD3APU8Zl/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932103; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+Ip25cynITe1kpYa62hesgGGd2jW7G3flIvHTYHb3OY=; b=iX0KBFrxR4KQNrboW1FDzWpJ34WmW16Z5++6wR1O9tfUnrn5Bn5xaT9oj4927GgozmFURYzOntH9eKwzOEK/st2zL0ffljZeOsLS774PBU0fBwfprp34RkkDaTeFJrn+bR7Zh7cAT83gFWrnAV6HYztsxibIJqnIlppQBcMfODE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932103110660.4580339154414; Fri, 26 Nov 2021 05:08:23 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232877.404094 (Exim 4.92) (envelope-from ) id 1mqaxS-0001qx-Hn; Fri, 26 Nov 2021 13:08:06 +0000 Received: by outflank-mailman (output) from mailman id 232877.404094; Fri, 26 Nov 2021 13:08:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxR-0001lo-Et; Fri, 26 Nov 2021 13:08:05 +0000 Received: by outflank-mailman (input) for mailman id 232877; Fri, 26 Nov 2021 13:08:02 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaup-0003W9-CM for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:23 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 80e7cff7-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:19 +0100 (CET) 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: 80e7cff7-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931919; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GwkeJYr8tdjhFymC30/jfquVKzBuwYOcbZ/CTHFhz7Q=; b=hzvaSuq8yNpGpNvy+6BACf5Q2JNwFfyBSbbOlEb64z1a2jt6B3AfQe9N H9ltfbgYAcu70gM+UK7/NCoAG/VE+jOgqd0K/THg6E7gH5jXS2d2iGqs/ 38d1FXHF4LXqN9QXGQYBeoDLE1ddgOrXSCKj4bP+PLqXOuaX284eceKQQ g=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: G73dUSdqFY5hj4RbPyMaRn5jPx9fz3c3PnXHH5bNm30qmm6XUogzgr6bBtdUxFA1bPowJc4/ak HdXetXBDwH5EAocz1cEmgXKzU6Zv15beqzeoGZkV/7XYadKkr0dVvL4FAsytj9ythCv9SfRKr2 VP0aCC5OZlHYVdB1JQohBLObN/HXILliU/hufyIWsEHqlXA3FvLCuBrUzCdlH2U4CWk9MRkFPA QoIDs7Oa2E++stT38C/UX8uBVBjfY+xftB59LY0vb9LvuJ9L9kgfBsLls46lsCVOfK2Lch9ArA 5jfI/OOKk2kOdNV1HCtdTJ7t X-SBRS: 5.1 X-MesageID: 58635005 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:LRKa7q670gJK77AFL/h2dQxRtPXAchMFZxGqfqrLsTDasY5as4F+v mEcWmjXOazbN2ShKtF1aoqwoBkA6JWGmtA2Twpq/nxnHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Zw 9pErYSVFEQVLvPvps5DSD9IOBl1BPgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTaiFO pJBNFKDajz8fBhOOFQRJagagfXzll/AejhnhUma8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u10bTDwweNdef4SGY6X/qjejK9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc9FfGvUizVzO9rqKwDizWHMiXhV5Y+Vz4afaWgcW/ lOOmtroAxlmv7uUVW+R+9+okN+iBcQGBTRcPHFZFGPp9/Gm+dhu1UyXEr6PBYbs1oWtcQwc1 Qxmu8TXa187qccQn5u28lnc695HjsiYF1Vljuk7s4/M0++YWGJHT9D3gbQ4xawZRGp8crVnl CNf8yR5xLpTZaxhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGggfxg5bJtbKGO3P BS7VeZtCHl7ZyDCgUhfOd/ZNijX5fK4SYSNug78MrKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWPnOKrNVNdA9SdhDWx/ne8qRqSwJKGSI+cElJNhMb6elJl1VNk/sHm+HW0 Gu6X0MEmlPziWeecVeBa2x5aaOpVpF69CppMSspNFeu+n4ifYfws/tPK8ppJeEqpL550Pp5b /gZYMHcUP5BfSvKpmYGZp7noY08KBny3VCSPzCoaSQUdoJ7Q1Cb4cftewbirXFcDie+ucYkj aen0wfXHcgKSwh4VZ6EY/Oz1VKh+3ManbsqDUfPJ9BSfmTq8ZRrdHOt3qNmfZlUJEyalDWA1 guQDRMJnsX3otc4oIvTmKSJj4a1CO8iTEBUKHbWsOStPi7A82v9nYIZCLSUfSrQXX/f8bm5Y bkH1On1NfAKkQoYs4d4FLo3n6sy68G2+u1fxwVgWn7Kc06qGvVrJXzfhZtDsahEx7l4vwqqW x3QpokGaOvRYM61QkQMIAcFb/iY0aBGkzbf2v05PUHm6XIl57GAS0hTY0GBhSE1wGGZ62/5L TPNYPIr1jE= IronPort-HdrOrdr: A9a23:ZYdUMqFNKZSgoFG6pLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079 YZT0EUMrzN5DZB4voSmDPIceod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58635005" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 40/65] x86/pmu: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:21 +0000 Message-ID: <20211126123446.32324-41-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932104133100007 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/cpu/vpmu_amd.c | 16 ++++++++-------- xen/arch/x86/cpu/vpmu_intel.c | 16 ++++++++-------- xen/arch/x86/oprofile/op_model_athlon.c | 16 ++++++++-------- xen/arch/x86/oprofile/op_model_p4.c | 14 +++++++------- xen/arch/x86/oprofile/op_model_ppro.c | 26 ++++++++++++++------------ 5 files changed, 45 insertions(+), 43 deletions(-) diff --git a/xen/arch/x86/cpu/vpmu_amd.c b/xen/arch/x86/cpu/vpmu_amd.c index 38972089ab42..a5487143f77e 100644 --- a/xen/arch/x86/cpu/vpmu_amd.c +++ b/xen/arch/x86/cpu/vpmu_amd.c @@ -186,7 +186,7 @@ static void amd_vpmu_unset_msr_bitmap(struct vcpu *v) msr_bitmap_off(vpmu); } =20 -static int amd_vpmu_do_interrupt(struct cpu_user_regs *regs) +static int cf_check amd_vpmu_do_interrupt(struct cpu_user_regs *regs) { return 1; } @@ -206,7 +206,7 @@ static inline void context_load(struct vcpu *v) } } =20 -static int amd_vpmu_load(struct vcpu *v, bool_t from_guest) +static int cf_check amd_vpmu_load(struct vcpu *v, bool from_guest) { struct vpmu_struct *vpmu =3D vcpu_vpmu(v); struct xen_pmu_amd_ctxt *ctxt; @@ -280,7 +280,7 @@ static inline void context_save(struct vcpu *v) rdmsrl(counters[i], counter_regs[i]); } =20 -static int amd_vpmu_save(struct vcpu *v, bool_t to_guest) +static int cf_check amd_vpmu_save(struct vcpu *v, bool to_guest) { struct vpmu_struct *vpmu =3D vcpu_vpmu(v); unsigned int i; @@ -348,8 +348,8 @@ static void context_update(unsigned int msr, u64 msr_co= ntent) } } =20 -static int amd_vpmu_do_wrmsr(unsigned int msr, uint64_t msr_content, - uint64_t supported) +static int cf_check amd_vpmu_do_wrmsr( + unsigned int msr, uint64_t msr_content, uint64_t supported) { struct vcpu *v =3D current; struct vpmu_struct *vpmu =3D vcpu_vpmu(v); @@ -407,7 +407,7 @@ static int amd_vpmu_do_wrmsr(unsigned int msr, uint64_t= msr_content, return 0; } =20 -static int amd_vpmu_do_rdmsr(unsigned int msr, uint64_t *msr_content) +static int cf_check amd_vpmu_do_rdmsr(unsigned int msr, uint64_t *msr_cont= ent) { struct vcpu *v =3D current; struct vpmu_struct *vpmu =3D vcpu_vpmu(v); @@ -425,7 +425,7 @@ static int amd_vpmu_do_rdmsr(unsigned int msr, uint64_t= *msr_content) return 0; } =20 -static void amd_vpmu_destroy(struct vcpu *v) +static void cf_check amd_vpmu_destroy(struct vcpu *v) { struct vpmu_struct *vpmu =3D vcpu_vpmu(v); =20 @@ -443,7 +443,7 @@ static void amd_vpmu_destroy(struct vcpu *v) } =20 /* VPMU part of the 'q' keyhandler */ -static void amd_vpmu_dump(const struct vcpu *v) +static void cf_check amd_vpmu_dump(const struct vcpu *v) { const struct vpmu_struct *vpmu =3D vcpu_vpmu(v); const struct xen_pmu_amd_ctxt *ctxt =3D vpmu->context; diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c index f59cae543868..8b450ec8a8aa 100644 --- a/xen/arch/x86/cpu/vpmu_intel.c +++ b/xen/arch/x86/cpu/vpmu_intel.c @@ -288,7 +288,7 @@ static inline void __core2_vpmu_save(struct vcpu *v) rdmsrl(MSR_CORE_PERF_GLOBAL_STATUS, core2_vpmu_cxt->global_status); } =20 -static int core2_vpmu_save(struct vcpu *v, bool_t to_guest) +static int cf_check core2_vpmu_save(struct vcpu *v, bool to_guest) { struct vpmu_struct *vpmu =3D vcpu_vpmu(v); =20 @@ -407,7 +407,7 @@ static int core2_vpmu_verify(struct vcpu *v) return 0; } =20 -static int core2_vpmu_load(struct vcpu *v, bool_t from_guest) +static int cf_check core2_vpmu_load(struct vcpu *v, bool from_guest) { struct vpmu_struct *vpmu =3D vcpu_vpmu(v); =20 @@ -522,8 +522,8 @@ static int core2_vpmu_msr_common_check(u32 msr_index, i= nt *type, int *index) return 1; } =20 -static int core2_vpmu_do_wrmsr(unsigned int msr, uint64_t msr_content, - uint64_t supported) +static int cf_check core2_vpmu_do_wrmsr( + unsigned int msr, uint64_t msr_content, uint64_t supported) { int i, tmp; int type =3D -1, index =3D -1; @@ -693,7 +693,7 @@ static int core2_vpmu_do_wrmsr(unsigned int msr, uint64= _t msr_content, return 0; } =20 -static int core2_vpmu_do_rdmsr(unsigned int msr, uint64_t *msr_content) +static int cf_check core2_vpmu_do_rdmsr(unsigned int msr, uint64_t *msr_co= ntent) { int type =3D -1, index =3D -1; struct vcpu *v =3D current; @@ -733,7 +733,7 @@ static int core2_vpmu_do_rdmsr(unsigned int msr, uint64= _t *msr_content) } =20 /* Dump vpmu info on console, called in the context of keyhandler 'q'. */ -static void core2_vpmu_dump(const struct vcpu *v) +static void cf_check core2_vpmu_dump(const struct vcpu *v) { const struct vpmu_struct *vpmu =3D vcpu_vpmu(v); unsigned int i; @@ -778,7 +778,7 @@ static void core2_vpmu_dump(const struct vcpu *v) } } =20 -static int core2_vpmu_do_interrupt(struct cpu_user_regs *regs) +static int cf_check core2_vpmu_do_interrupt(struct cpu_user_regs *regs) { struct vcpu *v =3D current; u64 msr_content; @@ -805,7 +805,7 @@ static int core2_vpmu_do_interrupt(struct cpu_user_regs= *regs) return 1; } =20 -static void core2_vpmu_destroy(struct vcpu *v) +static void cf_check core2_vpmu_destroy(struct vcpu *v) { struct vpmu_struct *vpmu =3D vcpu_vpmu(v); =20 diff --git a/xen/arch/x86/oprofile/op_model_athlon.c b/xen/arch/x86/oprofil= e/op_model_athlon.c index 2177f02946e2..7bc5853a6c23 100644 --- a/xen/arch/x86/oprofile/op_model_athlon.c +++ b/xen/arch/x86/oprofile/op_model_athlon.c @@ -164,7 +164,7 @@ static inline u64 op_amd_randomize_ibs_op(u64 val) return val; } =20 -static void athlon_fill_in_addresses(struct op_msrs * const msrs) +static void cf_check athlon_fill_in_addresses(struct op_msrs * const msrs) { msrs->counters[0].addr =3D MSR_K7_PERFCTR0; msrs->counters[1].addr =3D MSR_K7_PERFCTR1; @@ -177,7 +177,7 @@ static void athlon_fill_in_addresses(struct op_msrs * c= onst msrs) msrs->controls[3].addr =3D MSR_K7_EVNTSEL3; } =20 -static void fam15h_fill_in_addresses(struct op_msrs * const msrs) +static void cf_check fam15h_fill_in_addresses(struct op_msrs * const msrs) { msrs->counters[0].addr =3D MSR_AMD_FAM15H_PERFCTR0; msrs->counters[1].addr =3D MSR_AMD_FAM15H_PERFCTR1; @@ -194,7 +194,7 @@ static void fam15h_fill_in_addresses(struct op_msrs * c= onst msrs) msrs->controls[5].addr =3D MSR_AMD_FAM15H_EVNTSEL5; } =20 -static void athlon_setup_ctrs(struct op_msrs const * const msrs) +static void cf_check athlon_setup_ctrs(struct op_msrs const * const msrs) { uint64_t msr_content; int i; @@ -308,9 +308,9 @@ static inline int handle_ibs(int mode, struct cpu_user_= regs const * const regs) return 1; } =20 -static int athlon_check_ctrs(unsigned int const cpu, - struct op_msrs const * const msrs, - struct cpu_user_regs const * const regs) +static int cf_check athlon_check_ctrs( + unsigned int const cpu, struct op_msrs const * const msrs, + struct cpu_user_regs const * const regs) =20 { uint64_t msr_content; @@ -386,7 +386,7 @@ static inline void start_ibs(void) } } =20 -static void athlon_start(struct op_msrs const * const msrs) +static void cf_check athlon_start(struct op_msrs const * const msrs) { uint64_t msr_content; int i; @@ -415,7 +415,7 @@ static void stop_ibs(void) wrmsrl(MSR_AMD64_IBSOPCTL, 0); } =20 -static void athlon_stop(struct op_msrs const * const msrs) +static void cf_check athlon_stop(struct op_msrs const * const msrs) { uint64_t msr_content; int i; diff --git a/xen/arch/x86/oprofile/op_model_p4.c b/xen/arch/x86/oprofile/op= _model_p4.c index b08ba53cbd39..d047258644db 100644 --- a/xen/arch/x86/oprofile/op_model_p4.c +++ b/xen/arch/x86/oprofile/op_model_p4.c @@ -390,7 +390,7 @@ static unsigned int get_stagger(void) static unsigned long reset_value[NUM_COUNTERS_NON_HT]; =20 =20 -static void p4_fill_in_addresses(struct op_msrs * const msrs) +static void cf_check p4_fill_in_addresses(struct op_msrs * const msrs) { unsigned int i; unsigned int addr, stag; @@ -530,7 +530,7 @@ static void pmc_setup_one_p4_counter(unsigned int ctr) } =20 =20 -static void p4_setup_ctrs(struct op_msrs const * const msrs) +static void cf_check p4_setup_ctrs(struct op_msrs const * const msrs) { unsigned int i; uint64_t msr_content; @@ -609,9 +609,9 @@ static void p4_setup_ctrs(struct op_msrs const * const = msrs) } } =20 -static int p4_check_ctrs(unsigned int const cpu, - struct op_msrs const * const msrs, - struct cpu_user_regs const * const regs) +static int cf_check p4_check_ctrs( + unsigned int const cpu, struct op_msrs const * const msrs, + struct cpu_user_regs const * const regs) { unsigned long ctr, stag, real; uint64_t msr_content; @@ -665,7 +665,7 @@ static int p4_check_ctrs(unsigned int const cpu, } =20 =20 -static void p4_start(struct op_msrs const * const msrs) +static void cf_check p4_start(struct op_msrs const * const msrs) { unsigned int stag; uint64_t msr_content; @@ -683,7 +683,7 @@ static void p4_start(struct op_msrs const * const msrs) } =20 =20 -static void p4_stop(struct op_msrs const * const msrs) +static void cf_check p4_stop(struct op_msrs const * const msrs) { unsigned int stag; uint64_t msr_content; diff --git a/xen/arch/x86/oprofile/op_model_ppro.c b/xen/arch/x86/oprofile/= op_model_ppro.c index 72c504a10216..8d7e13ea8777 100644 --- a/xen/arch/x86/oprofile/op_model_ppro.c +++ b/xen/arch/x86/oprofile/op_model_ppro.c @@ -63,7 +63,7 @@ static int counter_width =3D 32; static unsigned long reset_value[OP_MAX_COUNTER]; int ppro_has_global_ctrl =3D 0; =20 -static void ppro_fill_in_addresses(struct op_msrs * const msrs) +static void cf_check ppro_fill_in_addresses(struct op_msrs * const msrs) { int i; =20 @@ -74,7 +74,7 @@ static void ppro_fill_in_addresses(struct op_msrs * const= msrs) } =20 =20 -static void ppro_setup_ctrs(struct op_msrs const * const msrs) +static void cf_check ppro_setup_ctrs(struct op_msrs const * const msrs) { uint64_t msr_content; int i; @@ -128,9 +128,9 @@ static void ppro_setup_ctrs(struct op_msrs const * cons= t msrs) } } =20 -static int ppro_check_ctrs(unsigned int const cpu, - struct op_msrs const * const msrs, - struct cpu_user_regs const * const regs) +static int cf_check ppro_check_ctrs( + unsigned int const cpu, struct op_msrs const * const msrs, + struct cpu_user_regs const * const regs) { u64 val; int i; @@ -170,7 +170,7 @@ static int ppro_check_ctrs(unsigned int const cpu, } =20 =20 -static void ppro_start(struct op_msrs const * const msrs) +static void cf_check ppro_start(struct op_msrs const * const msrs) { uint64_t msr_content; int i; @@ -190,7 +190,7 @@ static void ppro_start(struct op_msrs const * const msr= s) } =20 =20 -static void ppro_stop(struct op_msrs const * const msrs) +static void cf_check ppro_stop(struct op_msrs const * const msrs) { uint64_t msr_content; int i; @@ -206,7 +206,7 @@ static void ppro_stop(struct op_msrs const * const msrs) wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, 0x0ULL); } =20 -static int ppro_is_arch_pmu_msr(u64 msr_index, int *type, int *index) +static int cf_check ppro_is_arch_pmu_msr(u64 msr_index, int *type, int *in= dex) { if ( (msr_index >=3D MSR_IA32_PERFCTR0) && (msr_index < (MSR_IA32_PERFCTR0 + num_counters)) ) @@ -226,7 +226,7 @@ static int ppro_is_arch_pmu_msr(u64 msr_index, int *typ= e, int *index) return 0; } =20 -static int ppro_allocate_msr(struct vcpu *v) +static int cf_check ppro_allocate_msr(struct vcpu *v) { struct vpmu_struct *vpmu =3D vcpu_vpmu(v); struct arch_msr_pair *msr_content; @@ -245,7 +245,7 @@ static int ppro_allocate_msr(struct vcpu *v) return 0; } =20 -static void ppro_free_msr(struct vcpu *v) +static void cf_check ppro_free_msr(struct vcpu *v) { struct vpmu_struct *vpmu =3D vcpu_vpmu(v); =20 @@ -255,7 +255,8 @@ static void ppro_free_msr(struct vcpu *v) vpmu_reset(vpmu, VPMU_PASSIVE_DOMAIN_ALLOCATED); } =20 -static void ppro_load_msr(struct vcpu *v, int type, int index, u64 *msr_co= ntent) +static void cf_check ppro_load_msr( + struct vcpu *v, int type, int index, u64 *msr_content) { struct arch_msr_pair *msrs =3D vcpu_vpmu(v)->context; switch ( type ) @@ -269,7 +270,8 @@ static void ppro_load_msr(struct vcpu *v, int type, int= index, u64 *msr_content) } } =20 -static void ppro_save_msr(struct vcpu *v, int type, int index, u64 msr_con= tent) +static void cf_check ppro_save_msr( + struct vcpu *v, int type, int index, u64 msr_content) { struct arch_msr_pair *msrs =3D vcpu_vpmu(v)->context; =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932082; cv=none; d=zohomail.com; s=zohoarc; b=GKvKlF0+a9FibFXGz/qXwrNfuPtjHgShYraogAG20WUM5VWPX/uiObXr+cDdR+1JZ1vtKmkNeghnkRc0V3J83Trr3cejIyxaIgZ1ZaUrkaaEWvGr36mgM19YJbJ7l+OWaMzgLGUqd+TVlDHMEekpwh4/aERRTWMWWKdy1XEIGf4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932082; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fXmnfGWnpSon8GBARjF7z/7qMlnuwHDvyrB0hPMw00E=; b=R4PlshRUyTBiHtWlFSRUr5dmjvXEuu/8IeLC+6OUuHVHj9na7N5KGjuTVDL/MxHj+6mMf90R6fTYzx/6hIsPhb7A4h5dmLvw2mW3Ay+Ha3TieYiJGR2cAfgfLGMVjTzZrVMsePFGYhHYsLNLzJTyx+HaqHReAkFEI89cetwATo4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 16379320828975.432183566166259; Fri, 26 Nov 2021 05:08:02 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232843.403987 (Exim 4.92) (envelope-from ) id 1mqax3-0004NM-7w; Fri, 26 Nov 2021 13:07:41 +0000 Received: by outflank-mailman (output) from mailman id 232843.403987; Fri, 26 Nov 2021 13:07:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqax2-0004Gd-Bs; Fri, 26 Nov 2021 13:07:40 +0000 Received: by outflank-mailman (input) for mailman id 232843; Fri, 26 Nov 2021 13:07:37 +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 1mqav6-0002zD-FU for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:40 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 8cdd30a3-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:38 +0100 (CET) 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: 8cdd30a3-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931938; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=izWgzigFmafOWMX4S5OZ2RAoFVxEuqnImtxUKaeis+Q=; b=ct1fzlr00rr7ybhs/agi/IUQnTLXMAPm2/JyRioVRn7qWRZg75HX2wpW 9ipOjelg/KDb4lP/iBmTd342cox+gyGjNHvskBt8QxJ/CUP+YkXiQQ23V QUteiLhM4U7FD6kZPIcwDl+hpOQvo+M2U77FgF9pJi66wWzJGYdkAhmkb 8=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: Ro8n5ILYxZ/ug8PPdK97TKOMvPeoamB5J066UCLkq97/cuW2cOTxNCHICw//9Z6tuSW4YoQw3V LhKOVoDmI1F5tq4HGu4klMIWPcVHCYnH3l2tUiORbVX8AOJuZHzFJBUpWqZgHT6CmGgoUMvPY2 kqfkvhSBDoZRH2lYkj3MqSjmuAQUYwcxgGcK+1VPHIAE0wE+fTw17R5WXSa1A2+QC+MTYTOP5Z vLX3oAoGSXIpceYTmzfClP4CWNnZ52YBBbytMSTRHcmI/7obX9uP8hoXQOL+XZx5LP6PJFNcLy LLyVIpoFmoBq6d02pwxz1lVQ X-SBRS: 5.1 X-MesageID: 58696015 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:iX9RcaPEV2s+AdHvrR1okMFynXyQoLVcMsEvi/4bfWQNrUoj0jUBy TRNW27UbP6NZWXwKY8lPN7l9EsPsZKEy9RqSQto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6bUsxNbVU8En540Eg9w7RRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYozWts+pVm ZZijoCpFyEtJfbFwOE5bSANRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YsBqit4uM4/AO4QHt2s75TrYEewnUdbIRKCiCdpwgWdu154WRKu2i 8wxdHlgQk7Hbh12BFopIok0s8eRmiH9SmgNwL6SjfVuuDWCpOBr65DyNPLFd9rMQt9a9m66j G/b+2XyAjkBKceSjzGC9xqEluLJ2C/2Ro8WPLm57eJxxk2ewHQJDx8bXkf9puO24nNSQPoGd RZSoHB36/Fvqgr7FbERQiFUvlaEmjImf4sTPNYm8V+rzrGP6l6cIlY9G2sphMMdiOc6Qjkj1 1msltzvBCByvLD9dU9x5ot4vhvpZ3FLcDZqiTssCFJcvoK9+N1bYgfnF447SMaIYsvJ9SYcK txghAw3nP0tgMECzM1XFniX0mv39vAlouPYjzg7v15JDCslO+ZJhKTysDA3CMqsyq7CFTFtW 1BexqCjABgmV83lqcB0aLxl8EuVz/iEKibAplVkAoMs8T+gk1b6I9sPsG8jexY1bJpfEdMMX KM1kVgKjHO0FCH3BZKbnqrrU5h6pUQePYiNug/ogipmPcEqKV7vENBGbk+MxWH9+HXAYolkU ap3hf2EVC5AYYw+lWLeb75EjdcDm3BvrUuOFMuT50n2jtKjiIu9FO5t3K2mNbtisstpYWz9r r5iCid940kFDbClPHCIqdV7wJJjBSFTOK0aYvd/LoarSjeK0kl4YxMI6b9+KYFjgYpPkeLEo iO0VkNCkQKtjnzbMwSaLHtkbeq3D5p4qHs6Ow0qPEqphCd/Mdr+sv9HestlZ6Qj+cxi0eVwE 6sPdfKfD6kdUT/A4TkcM8Xw9dQwaBSxiAuSFCO5ezxjLYV4TgnE94a8LAvi/SUDFAStss46r +Hy3w/XW8NbFQ9jENzXeLSkyFbo5SoRn+d7Xk3pJNhPeRqzrNg2enKp1vJuepMCMxTOwDeex j26OxZAqLmfuZIx/fnImbuA89WjHdxhExcIBGLc97u3a3XXpzLx3Y9aXe+UVjnBT2eoqr66b OBYwvygYv0KmFFG79h1H7pxlP9s4tLuo/lRzxh+HWWNZFOuU+syLn6D1MhJl6tM2r4G5lfmB hPRooFXaeeTJcfoMF8NPw50PO2M2MYdliTW8flocl7x4zV6/ebfXEhfV/VWZPex8Feh3FsZ/ Noc IronPort-HdrOrdr: A9a23:RiYeTq+aENcMDUYxrpBuk+DgI+orL9Y04lQ7vn2YSXRuHPBw8P re5cjztCWE7gr5N0tBpTntAsW9qDbnhPtICOoqTNCftWvdyQiVxehZhOOIqVDd8m/Fh4pgPM 9bAtBD4bbLbGSS4/yU3ODBKadD/OW6 X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58696015" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 41/65] x86/cpu: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:22 +0000 Message-ID: <20211126123446.32324-42-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932083784100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/cpu/amd.c | 6 +++--- xen/arch/x86/cpu/centaur.c | 2 +- xen/arch/x86/cpu/common.c | 2 +- xen/arch/x86/cpu/cpu.h | 2 +- xen/arch/x86/cpu/hygon.c | 2 +- xen/arch/x86/cpu/intel.c | 6 +++--- xen/arch/x86/cpu/shanghai.c | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c index f1c32c2787c9..a5f380852b20 100644 --- a/xen/arch/x86/cpu/amd.c +++ b/xen/arch/x86/cpu/amd.c @@ -208,7 +208,7 @@ static void __init noinline probe_masking_msrs(void) * parameter of NULL is used to context switch to the default host state (= by * the cpu bringup-code, crash path, etc). */ -static void amd_ctxt_switch_masking(const struct vcpu *next) +static void cf_check amd_ctxt_switch_masking(const struct vcpu *next) { struct cpuidmasks *these_masks =3D &this_cpu(cpuidmasks); const struct domain *nextd =3D next ? next->domain : NULL; @@ -634,7 +634,7 @@ void amd_log_freq(const struct cpuinfo_x86 *c) #undef FREQ } =20 -void early_init_amd(struct cpuinfo_x86 *c) +void cf_check early_init_amd(struct cpuinfo_x86 *c) { if (c =3D=3D &boot_cpu_data) amd_init_levelling(); @@ -744,7 +744,7 @@ void __init detect_zen2_null_seg_behaviour(void) =20 } =20 -static void init_amd(struct cpuinfo_x86 *c) +static void cf_check init_amd(struct cpuinfo_x86 *c) { u32 l, h; =20 diff --git a/xen/arch/x86/cpu/centaur.c b/xen/arch/x86/cpu/centaur.c index 34a5bfcaeef2..eac49d78db62 100644 --- a/xen/arch/x86/cpu/centaur.c +++ b/xen/arch/x86/cpu/centaur.c @@ -48,7 +48,7 @@ static void init_c3(struct cpuinfo_x86 *c) display_cacheinfo(c); } =20 -static void init_centaur(struct cpuinfo_x86 *c) +static void cf_check init_centaur(struct cpuinfo_x86 *c) { if (c->x86 =3D=3D 6) init_c3(c); diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c index 4a163afbfc7e..7c41a21bf07c 100644 --- a/xen/arch/x86/cpu/common.c +++ b/xen/arch/x86/cpu/common.c @@ -104,7 +104,7 @@ bool __init is_forced_cpu_cap(unsigned int cap) return test_bit(cap, forced_caps); } =20 -static void default_init(struct cpuinfo_x86 * c) +static void cf_check default_init(struct cpuinfo_x86 * c) { /* Not much we can do here... */ /* Check if at least it has cpuid */ diff --git a/xen/arch/x86/cpu/cpu.h b/xen/arch/x86/cpu/cpu.h index b593bd85f04f..a228087f9157 100644 --- a/xen/arch/x86/cpu/cpu.h +++ b/xen/arch/x86/cpu/cpu.h @@ -18,7 +18,7 @@ extern void display_cacheinfo(struct cpuinfo_x86 *c); extern void detect_ht(struct cpuinfo_x86 *c); extern bool detect_extended_topology(struct cpuinfo_x86 *c); =20 -void early_init_amd(struct cpuinfo_x86 *c); +void cf_check early_init_amd(struct cpuinfo_x86 *c); void amd_log_freq(const struct cpuinfo_x86 *c); void amd_init_lfence(struct cpuinfo_x86 *c); void amd_init_ssbd(const struct cpuinfo_x86 *c); diff --git a/xen/arch/x86/cpu/hygon.c b/xen/arch/x86/cpu/hygon.c index cdc94130dd2e..3c8516e014c3 100644 --- a/xen/arch/x86/cpu/hygon.c +++ b/xen/arch/x86/cpu/hygon.c @@ -28,7 +28,7 @@ static void hygon_get_topology(struct cpuinfo_x86 *c) c->phys_proc_id, c->cpu_core_id); } =20 -static void init_hygon(struct cpuinfo_x86 *c) +static void cf_check init_hygon(struct cpuinfo_x86 *c) { unsigned long long value; =20 diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c index 9b011c344636..d63e18100698 100644 --- a/xen/arch/x86/cpu/intel.c +++ b/xen/arch/x86/cpu/intel.c @@ -144,7 +144,7 @@ static void __init probe_masking_msrs(void) * parameter of NULL is used to context switch to the default host state (= by * the cpu bringup-code, crash path, etc). */ -static void intel_ctxt_switch_masking(const struct vcpu *next) +static void cf_check intel_ctxt_switch_masking(const struct vcpu *next) { struct cpuidmasks *these_masks =3D &this_cpu(cpuidmasks); const struct domain *nextd =3D next ? next->domain : NULL; @@ -254,7 +254,7 @@ static void __init noinline intel_init_levelling(void) ctxt_switch_masking =3D intel_ctxt_switch_masking; } =20 -static void early_init_intel(struct cpuinfo_x86 *c) +static void cf_check early_init_intel(struct cpuinfo_x86 *c) { u64 misc_enable, disable; =20 @@ -448,7 +448,7 @@ static void intel_log_freq(const struct cpuinfo_x86 *c) } } =20 -static void init_intel(struct cpuinfo_x86 *c) +static void cf_check init_intel(struct cpuinfo_x86 *c) { /* Detect the extended topology information if available */ detect_extended_topology(c); diff --git a/xen/arch/x86/cpu/shanghai.c b/xen/arch/x86/cpu/shanghai.c index 08a81f0f0c8e..95ae544f8c54 100644 --- a/xen/arch/x86/cpu/shanghai.c +++ b/xen/arch/x86/cpu/shanghai.c @@ -3,7 +3,7 @@ #include #include "cpu.h" =20 -static void init_shanghai(struct cpuinfo_x86 *c) +static void cf_check init_shanghai(struct cpuinfo_x86 *c) { if ( cpu_has(c, X86_FEATURE_ITSC) ) { --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931914; cv=none; d=zohomail.com; s=zohoarc; b=WAvQXuqf1NipjJHoyeTDTTFGXYQV9pq6YgNx0Ch99kOfsOPel8WgmXesbRuKjryfpV5aZnbDBTYW+h0nCzGJAa7nVaHrdYl/qlAGRrSnmYIFq4LLGp+3xKZuUDnFJai9GFBXF954KnwyBHe5lRfz+PWJ3zVSDsqK0rtdbeDQymo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931914; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=FAqowEUNN3dyBlbbXXue39utmwKcQYpOgoWNpz0K3Cc=; b=RYzufPEoSMIQf89RrRPEnB+ycsnuzOypXdUeYe08BFoEMQ8GwYboRqSOwjHFOYzwlLWXe9Jv4ocZ4sPQv0UT4bO61EaUOEmEGe/z/REsb0Op7i+jP/IFAmj4yfsbtD8T0NjUA2TNfBipUiEOH9Muvx/uK+gJtq5rGrNKlktr9wM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931914024807.1485080011413; Fri, 26 Nov 2021 05:05:14 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232755.403674 (Exim 4.92) (envelope-from ) id 1mqauR-0005Gk-JB; Fri, 26 Nov 2021 13:04:59 +0000 Received: by outflank-mailman (output) from mailman id 232755.403674; Fri, 26 Nov 2021 13:04:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauR-0005EM-9j; Fri, 26 Nov 2021 13:04:59 +0000 Received: by outflank-mailman (input) for mailman id 232755; Fri, 26 Nov 2021 13:04:58 +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 1mqauQ-0002zD-BW for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:58 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 73a512a7-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:04:57 +0100 (CET) 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: 73a512a7-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931897; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kxMBCLxYJcgL5gD+raiROxZG9c0M3vO+3cMFtFlzQtM=; b=U4QDuJ8CsthjleWF4gs0sYogp9IWHGUAqNa71fIAL8I3OZb0qIKw2qeU KMXHx2jcyT2o31wIumbIxQavCN5pcjcg2JAqtclJp3SkGMmquL4yMzcI3 +Dh0kRrMACom30MGX0GisZ5EvNSw3IU/lbkEnQza/Sxhb1rVzMwNYutdb A=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: TDmvKVtgsxQpQCb6YRl/gPx5kb4NDDZGF2hDYlO2IQ5Stx9TmORE+dBNqRDQhyR6bAU4hcxcR4 ARuU9IXn1ocZhop4HrdU0p+YOgPYHd3ex21BecHQSvSQoN3EpVDDtYQtdhi7b/KQDVdlh1ykHy Z5owYzt09pLFXYg3ZAf9rwm0GVkcQgNI/+URoyFrbSIcHqiSXYeVY8eYZN3ZFQV5Ob1cYinhwL PMqvmBnbm4Magh7d7B3MJ/3Cv/8Z8mXhV88ttV9tQJ/HpItw7dQpExT585ylrZrVjwMtSad2zj /GwGg0MR+bkt6xD+FAi7OKYu X-SBRS: 5.1 X-MesageID: 59063944 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:ejN0KahhiOQTLuwy1gD0VXAEX161rRcKZh0ujC45NGQN5FlHY01je htvW22Eb6uJa2akKtl/b9nk9RhT7JaHmNJhQAtvqilnFiob9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0F0/NtTo5w7Rg29cy34Dja++wk YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx /1tsZa6VQgXYZfps+EjTxAENz1UGpR/reqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr KJCbmpXN1ba2rzwkOnTpupE36zPKOHCOo8Ft24m5jbeFfs8GrjIQrnQ5M8e1zA17ixLNauPP 5RCOGYzBPjGS0FXCHUyCYwRpeGHjWvvXRtKtWyyq6VitgA/yyQuieOwYbI5YOeiWsF9jkue4 GXc8AzRIDsXKdiewjqt6W+3i6nEmiaTcJIfEvi0++BnhHWXx3cPE1sGWF2ju/67h0WiHdVFJ CQpFjEG9PZoshbxF5+kAkP+8CXsUgMgt8R4M+kw4h2C9PXuxi2cOHQNEhpdQvsfjZpjLdA17 WOhk9TsDD1plbSaT3OB67uZxQ+P1TgpwXwqPnFdE1ZcizX3iMRq10+UEI4/eEKgpoStQWmY/ tyckMQpa1z/Z+Yv3r7zw13IiinESnPhHl9svVW/so5IA2pEiG+Zi26AtQezARVodt/xory9U J4swJP2AAcmV8zlqcB1aL9RdIxFHt7cWNEmvXZhHoM66xOm8GO5cIZb7VlWfRkybZZaJGC4P BGP4mu9AaO/2lPxNsebhKrrVqwXIVXIT4y5Bpg4kPISCnSOSON31H43PhPBt4wcuEMtjbs+K f+mnTWEVh4n5VBc5GPuHY81iOZzrghnnD+7bc2rnnyPjOvFDFbIGOhtDbd7Rr1ghE9yiF6Oq Ig32grj40g3bdASlQGLq9NOdg5TciBgbX00wuQOHtO+zsNdMDlJI5fsLXkJIuSJRoxZybXF+ G+TQEhdxAatjHHLM1zSOHtidKnuTdB0qndiZX4gOlOh2n4CZ4ez7fhAK8trLOd/rOEzn+RpS /QletmbBqgdQDrw5DlAP4L2q5ZvdUr3iFvWbTalejU2Y7VpWxfNpo3/ZgLq+SRXVni3uMIyr qeOzATeRZZfFQ1uANyPMKCkzk+rvGhbk+V3BhOaLt5WcUTq0Y5rNy2u0aNnf5BScU3On2LI2 RyXDBEUofj2j7U0qNSZ17qZq4qJEvdlGhYIFWfs8rvrZzLR+XCuwNEcXb/QLyzdTm795I6re f5Rk6PnKPQCkVtH79h8HrJswf5s7tfjveYHnAFtHXGNZFW3ELJwZHKB2JAX5KFKw7ZYvyqwW 16OpYYGaenYZpu9HQ5DPhchY8SCyeoQy2vb4vkCKUnn4DN6oeicWkJIMhjQ0CFQIdOZ6m/+L TvNbCLO1zGCtw== IronPort-HdrOrdr: A9a23:HiDd16zUmy4CE7xUWPaPKrPwFL1zdoMgy1knxilNoRw8SKKlfq eV7Y0mPH7P+VAssR4b+exoVJPtfZqYz+8R3WBzB8bEYOCFghrKEGgK1+KLqFeMJ8S9zJ846U 4JSdkHNDSaNzlHZKjBjzVQa+xQouW6zA== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59063944" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 42/65] x86/guest: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:23 +0000 Message-ID: <20211126123446.32324-43-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931914805100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/guest/hyperv/hyperv.c | 10 +++++----- xen/arch/x86/guest/xen/xen.c | 11 ++++++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/guest/hyperv/hyperv.c b/xen/arch/x86/guest/hyperv= /hyperv.c index 84221b751453..b101ba3080b4 100644 --- a/xen/arch/x86/guest/hyperv/hyperv.c +++ b/xen/arch/x86/guest/hyperv/hyperv.c @@ -175,7 +175,7 @@ static int setup_vp_assist(void) return 0; } =20 -static void __init setup(void) +static void __init cf_check setup(void) { ASM_CONSTANT(HV_HCALL_PAGE, __fix_x_to_virt(FIX_X_HYPERV_HCALL)); =20 @@ -188,7 +188,7 @@ static void __init setup(void) panic("VP assist page setup failed\n"); } =20 -static int ap_setup(void) +static int cf_check ap_setup(void) { int rc; =20 @@ -199,7 +199,7 @@ static int ap_setup(void) return setup_vp_assist(); } =20 -static void __init e820_fixup(struct e820map *e820) +static void __init cf_check e820_fixup(struct e820map *e820) { uint64_t s =3D HV_HCALL_MFN << PAGE_SHIFT; =20 @@ -207,8 +207,8 @@ static void __init e820_fixup(struct e820map *e820) panic("Unable to reserve Hyper-V hypercall range\n"); } =20 -static int flush_tlb(const cpumask_t *mask, const void *va, - unsigned int flags) +static int cf_check flush_tlb( + const cpumask_t *mask, const void *va, unsigned int flags) { if ( !(ms_hyperv.hints & HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED) ) return -EOPNOTSUPP; diff --git a/xen/arch/x86/guest/xen/xen.c b/xen/arch/x86/guest/xen/xen.c index 17807cdea688..9c2defaa6621 100644 --- a/xen/arch/x86/guest/xen/xen.c +++ b/xen/arch/x86/guest/xen/xen.c @@ -237,7 +237,7 @@ static int init_evtchn(void) return rc; } =20 -static void __init setup(void) +static void __init cf_check setup(void) { init_memmap(); =20 @@ -265,7 +265,7 @@ static void __init setup(void) BUG_ON(init_evtchn()); } =20 -static int ap_setup(void) +static int cf_check ap_setup(void) { set_vcpu_id(); =20 @@ -295,7 +295,7 @@ static void cf_check ap_resume(void *unused) BUG_ON(init_evtchn()); } =20 -static void resume(void) +static void cf_check resume(void) { /* Reset shared info page. */ map_shared_info(); @@ -318,13 +318,14 @@ static void resume(void) pv_console_init(); } =20 -static void __init e820_fixup(struct e820map *e820) +static void __init cf_check e820_fixup(struct e820map *e820) { if ( pv_shim ) pv_shim_fixup_e820(e820); } =20 -static int flush_tlb(const cpumask_t *mask, const void *va, unsigned int f= lags) +static int cf_check flush_tlb( + const cpumask_t *mask, const void *va, unsigned int flags) { return xen_hypercall_hvm_op(HVMOP_flush_tlbs, NULL); } --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932048; cv=none; d=zohomail.com; s=zohoarc; b=Im1hYBf+iDbpRj32VvX9f5Ru9HO8Fqm3NnHrclgo/fkpVUONB4q6Dc3CFF01kbT8q9GrPIvyUxX7k9Mx+ARgbFv+BQjlV8IeyRtWWsE/U2EOglEqfNMSh2gyRLYLMXQZqociF16I4uw6f4/T8yFjzXu+ct9ypnjHsqO4O+t96H0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932048; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uzH2qA2u4Ifm4TPKCt00zzjZkEoHedPTu17TLHy/ddA=; b=Y7xDsDetBPQz204OgS4fmLh4M+SJKIWOHeDiW1dyFgMKsNOChMyColx04xRcbtLVNZ7CquARt/wyPQOaxheX5OKTQxJIxLeXocfD+3Gd6Ys99QDdT4iMwB6e0C/IstuRK+dgsKGNfuyf99OoZtn44gkDguCzNh6JtcMlDNATIVg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932048877603.2446999180981; Fri, 26 Nov 2021 05:07:28 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232792.403853 (Exim 4.92) (envelope-from ) id 1mqawY-0005Xu-P3; Fri, 26 Nov 2021 13:07:10 +0000 Received: by outflank-mailman (output) from mailman id 232792.403853; Fri, 26 Nov 2021 13:07:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawX-0005U3-FL; Fri, 26 Nov 2021 13:07:09 +0000 Received: by outflank-mailman (input) for mailman id 232792; Fri, 26 Nov 2021 13:07:06 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavo-0003W9-JO for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:24 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a7af74ef-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:23 +0100 (CET) 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: a7af74ef-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931983; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6MkSkTdCAehsaJLlFHgLLk6HFoheo0WWaEyuCz1hHYs=; b=CWU/iHricrdMAINFI+Dg1xmfr+rMna2wLk2Xq5zjN/7V0r5mJmSeDi1h kBRrx6MuZBvnTrqfmFizQ6b+ylr/eeGaGC//EykAwc8RbjinSqpsMnX0F yRWd2cIAya0fuBC11uTsYMhI0uGz8BVfMKQwuBdQ1w6wuocyDHm+OgwXV w=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 6Uj1SgDZB8dlL8kof0Ub0RanFk182/i9EBEkH1wmMSg6aZU5qqTTgAtKW/UV9ePcNSjr2OAAcc Bec1Kjz1DUoj7s+yHakh4NGtsGIPGxgU/i3kLDN5a+tNgda1BkNfbJgRGfgdFu5ZYtEJVKvhkr slrJeM/LSJ5XbXX2JjjuUt2wvxbOd2TDjChniwwHNFW+BSdH1qjTjhlzYsnO5+uPen/nZufS7r 4EOczLmXUXJ7unQnKYcb6U2SuZLpduV1JZ7f0Irh7620oHhiQIaJoElHsm2u68HhYhumIYIm/j kZbybqsumRzN4q56AMge7aXu X-SBRS: 5.1 X-MesageID: 59064074 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:hQEqaqJwtaVGP1kuFE+RHJIlxSXFcZb7ZxGr2PjKsXjdYENShTcAz jMaDW2EafiLYDPzKIhxPtmxoEsEu8fXmNBnTwplqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es5xbZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2Gpolq9 9hSkaW1UD11PLLwnrU4ShdHRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Gph3p4SRamCD yYfQRR3aVPRUjNvBk1NGrAVsNnxrXrPLCIN/Tp5ooJoujOOnWSdyoPFL979atGMA8JPkS6wh EjL4mD4CREyL8GExHyO9XfErv/Cm2b3VZwfEJW89+V2mxuDy2oLEhoUWFCn5/6jhSaDt8l3c hJOvHB09O5rqRLtHoKVswCETGCssSdFQOVdDMkD7Ri3lqjL3wDII3EKUWsUADA5j/MeSTsv3 16PutrmAz1zrbGYIU6gGqeoQSCaYnZMczJbDcMQZU5cuoS4/tlv5v7aZo87SPbdszHjJd3nL 9lmRgAajq5bs8ME3r7TEbvv02P1/cihouLYC2zqsoOZAuFRONHNi2+AswGzARN8wGCxFQLpU J8swZX20Qz2JcvR/BFhuc1UdF1T296LMSfHnXlkFIQ7+jKm9haLJN4Lv2EgeRg4bphYIlcFh XM/XysKv/e/21PwMMdKj3+ZUZx2ncAM6/y5PhwrUja+SscoL1LWlM2fTUWRw3rsgCARfVIXY v+mnTKXJS9CU8xPlWPuL89EiOND7n1ulAv7GMGgpzz6gOX2WZJgYepcWLd4Rrtit/3sTcS82 4s3CvZmPD0DCrCjOXeOrtZIRb3IRFBiba3LRwVsXrbrCmJb9KsJUpc9GJstJN5ombp7jODN8 i3vU0NU0gOn13bGNR+LejZob7a2BcRzqncyPCoNO1e02id8PdbzvflHL5ZnL6M68OFDzOJvS 6VXccu3HfkSGC/M/C4QbMehodU6Jgirnw+HIwGsfCM7I8x7XwXM99K9Jlnv+SACAzCZr8w7p 7H8hArXTYBaH1ZpDdrMaeLpxFS05CBPlOV3VkrOA99SZESzr9Q6d32v1qc6epheJw/Cyz2W0 xetLS0Z/eSd8ZUo9NTphLyfq9v7GeVJAUcHTXLQ6qy7NHeG8zP7k5NASuuBYRvUSHjwpPe5f exQwvzxbK8HkVJNv9YuGrpn1/tjtd7mprscxQV4BnTbKV+sD+o4cHWB2MBOsIxLx6NY5lTqC h7epIECNOXbIt7hHX4QOBEhP7aK2vwjkzXP6eg4fRfh7yht8bvbCUhfMnFgUsCGwGeZ5G/9/ dochQ== IronPort-HdrOrdr: A9a23:IWYawK0UWCXXIc7JANKjKwqjBIokLtp133Aq2lEZdPRUGvb3qy nIpoVj6faUskd2ZJhOo7C90cW7LU80sKQFhLX5Xo3SOzUO2lHYT72KhLGKq1aLdhEWtNQtsZ uIG5IOcOEYZmIasS+V2maF+q4bsbu6zJw= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59064074" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 43/65] x86/logdirty: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:24 +0000 Message-ID: <20211126123446.32324-44-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932049936100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/mm/hap/hap.c | 6 +++--- xen/arch/x86/mm/shadow/common.c | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c index de4b13565ab4..ed5112b00b63 100644 --- a/xen/arch/x86/mm/hap/hap.c +++ b/xen/arch/x86/mm/hap/hap.c @@ -180,7 +180,7 @@ int hap_track_dirty_vram(struct domain *d, * NB: Domain that having device assigned should not set log_global. Becau= se * there is no way to track the memory updating from device. */ -static int hap_enable_log_dirty(struct domain *d, bool_t log_global) +static int cf_check hap_enable_log_dirty(struct domain *d, bool log_global) { struct p2m_domain *p2m =3D p2m_get_hostp2m(d); =20 @@ -211,7 +211,7 @@ static int hap_enable_log_dirty(struct domain *d, bool_= t log_global) return 0; } =20 -static int hap_disable_log_dirty(struct domain *d) +static int cf_check hap_disable_log_dirty(struct domain *d) { paging_lock(d); d->arch.paging.mode &=3D ~PG_log_dirty; @@ -228,7 +228,7 @@ static int hap_disable_log_dirty(struct domain *d) return 0; } =20 -static void hap_clean_dirty_bitmap(struct domain *d) +static void cf_check hap_clean_dirty_bitmap(struct domain *d) { /* * Switch to log-dirty mode, either by setting l1e entries of P2M tabl= e to diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/commo= n.c index 03bcd9518c39..8e51168e61b6 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -40,9 +40,9 @@ =20 DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags); =20 -static int sh_enable_log_dirty(struct domain *, bool log_global); -static int sh_disable_log_dirty(struct domain *); -static void sh_clean_dirty_bitmap(struct domain *); +static int cf_check sh_enable_log_dirty(struct domain *, bool log_global); +static int cf_check sh_disable_log_dirty(struct domain *); +static void cf_check sh_clean_dirty_bitmap(struct domain *); =20 /* Set up the shadow-specific parts of a domain struct at start of day. * Called for every domain from arch_domain_create() */ @@ -3016,7 +3016,7 @@ static int shadow_test_disable(struct domain *d) /* Shadow specific code which is called in paging_log_dirty_enable(). * Return 0 if no problem found. */ -static int sh_enable_log_dirty(struct domain *d, bool log_global) +static int cf_check sh_enable_log_dirty(struct domain *d, bool log_global) { int ret; =20 @@ -3044,7 +3044,7 @@ static int sh_enable_log_dirty(struct domain *d, bool= log_global) } =20 /* shadow specfic code which is called in paging_log_dirty_disable() */ -static int sh_disable_log_dirty(struct domain *d) +static int cf_check sh_disable_log_dirty(struct domain *d) { int ret; =20 @@ -3058,7 +3058,7 @@ static int sh_disable_log_dirty(struct domain *d) /* This function is called when we CLEAN log dirty bitmap. See * paging_log_dirty_op() for details. */ -static void sh_clean_dirty_bitmap(struct domain *d) +static void cf_check sh_clean_dirty_bitmap(struct domain *d) { paging_lock(d); /* Need to revoke write access to the domain's pages again. --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932044; cv=none; d=zohomail.com; s=zohoarc; b=krVOa8rjgAWIGjLRaB0ATUxKY7aJ8phEFnYtQBgSZ0RL/Gh+lBmI7ZnUl3Ib31ZHqwhiv7uQu9+5ULtihCnSM1DXWxzXJBU6am4zPKIsACGQwRwCiljsgJcHySyfa+PznXhaqo3C1AFGztHt0r9v0wnBop4tGU1j3/+pf3XOofg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932044; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PLkq+fgBVtg/rYg1aeu1dpGbASn2fWRL1WIx8BPibGI=; b=elaKfGoqH0ZWRcwsU665+cGpy/KRK9XavZzKaevixSdYPDb+ICjFgHCwQqR2pRa6G2tLmsNIk/Q1lCKrAzRJ74RNAZy2VT4MyJxB2txU+JDSB46edBEpDLklwCBobCKaoAPS3dEf9YLEDF5LoakmucRSnt/PpgtiMVysBlHMwjk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932044706289.0971410303665; Fri, 26 Nov 2021 05:07:24 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232789.403834 (Exim 4.92) (envelope-from ) id 1mqawU-0004tK-Rl; Fri, 26 Nov 2021 13:07:06 +0000 Received: by outflank-mailman (output) from mailman id 232789.403834; Fri, 26 Nov 2021 13:07:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawU-0004oh-8t; Fri, 26 Nov 2021 13:07:06 +0000 Received: by outflank-mailman (input) for mailman id 232789; Fri, 26 Nov 2021 13:07:02 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavk-0003W9-Lf for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:20 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a4486e1c-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:18 +0100 (CET) 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: a4486e1c-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931979; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1fjbUCy704jAqvZkS1xr/U+cwmAU8Nf/lqpWXLu6U00=; b=enbaqYIYPy1AuyrHbSPN/4S2Ff7hm1yVe0EAOq1l3qrSFcoWwKiQu32P aXsCzGucRPsGYT3h3KdrqPzjLgEcjNal0S0wxhAw+zArIX/Ria9JE8u+q jv7eeq1gNbPACxzndjaCrKRf+VTZiThxrB//5RqCid/yQm6w9nd+mjJLI c=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: xm5SIC1v00MKbrjx8rAQR840+L9k/+Mfv2qdy50VQrsOaGKOIRk3U1oCXRuZzSD2AtaiVzghH3 De4pQeB1yzSeAxCp5CmXdt7lsYumuIdHfMXz2SNbyUrA7qhlU3V0lM14kVn3t8u2UDO+2YfT2N NXl0+Pr1gJtUvkBJBvGaD6fpil/oJ79MyoltluP6t5fFLLJYrJKk0SljDeA/QlYYlbzgN6t9wz 4iqL7FiKKxLpwE0rwfBWTE6qGxHcrUnrzAM3sAZhCeCLdfmuCfbKxSyOdH+NoiEhsIpxY956tP XH2TJxBgDo6bGQZ2ojPDvqbb X-SBRS: 5.1 X-MesageID: 59064069 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:4ewVbaxCsmEb9AO/XLp6t+f6wSrEfRIJ4+MujC+fZmUNrF6WrkUEz 2EcWziHOqvbNmKnf9t1Ptm39R4BvZ7Uz9AwQVNv/yAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAuLeNYYH1500s6wrRn2tQAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt/5By Opnv7afc1c4A4n+3+AmYxVmEAgraMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVoru0lINPmI8U0vXZ4wCuCJf0nXYrCU+PB4towMDIY25EWQ6qGO ZtxhTxHZiWYfBkVIxQuLbESrf6CoEb6LhZcgQfAzUYwyzeKl1EguFT3C/LKfvSaSMMTmVyXz krk1WnkBhARNPSE1CGItHmrg4fnjS79HY4fCrC83vprm0GIgHweDgUMUlm2quX/jVSxM++zM GRNpHBo9/JrshX2EJ+tBHVUvUJooDYya9pvOecQxzvd25fw0UGdPVgIcD1oPYlOWNANeRQm0 VqAntXMDDNpsaGIRX/1yop4vQ9eKgBOczZcOHZsoR8tpoC6/dpt1k6nosNLSfbt1rXI9SfML ydmRcTUr5EaloY12qqy5jgraBr898GSHmbZCug6N19JDz+Vhqb5OORECnCBtJ6sybp1qHHa5 xDofODEsYgz4WmlznDlfQn0NOjBCwy5GDPdm0VzOJIq6i6g/XWuFagJvmohdBk0bZdYJ2OyC KM2he+3zMQIVJdNRfUqC79d9uxwlfSwfTgbfqy8giVyjmhZK1bcoXAGib+41GHxikk8+ZzTy r/AGftA+U0yUPw9pBLvHr91+eZymkgWmDOCLbimnk/P+efPOxaopUItbQLmghYRt/jf/m04M r93aqO39vmoeLGkP3SMr9dMdQtiwLpSLcmelvG7v9WremJOcFzNwdeIqV/4U4A6zalTiMnS+ XSxBh1RxFbl3CWVIgSWcHFzLrjoWM8n/348OCUtO3eu2mQiPtnzvPtOKcNvcOl17vFnwN51U +IBJ5eKDMNQR2mV4D8ad5T88tBvLUz5mQKUMiO5SzEjZJo8FRfR89rpc1K3pikDBya6r+Ukp Lik2l+JSJYPXV06Xs3XdOiu3xW6un1EwLB+WE7BI99yfkTw8dc1d3yt36Fve8xVcEfN3DqX0 QqSECw0n+iVrt9n6sTNiICFs5ytT7l0EH1FEjSJ9r2xLyTboDaumNcSTOaScDnBf2ro46H+N /5NxvTxPfBbzlZHt41wT+Riwa4kvoa9orZbykJvHWnRbkTtAbRleyHU0c5Kv6xL57lYpQrpB R7fpogEYe2EaJH/DVocBAs5deDSh/gblw7b4ekxPEintjR8+6CKUBkKMhSB4MCHwGCZ7G/xL T8dhfMr IronPort-HdrOrdr: A9a23:CuJwzKmauO8Uih+XhXSArznhYwnpDfIU3DAbv31ZSRFFG/Fxl6 iV8sjzsiWE8Qr5OUtQ/+xoV5PhfZqxz/JICMwqTNKftWrdyQyVxeNZnOjfKlTbckWUnINgPO VbAsxD4bXLfCBHZK3BgTVQfexO/DD+ytHLudvj X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59064069" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 44/65] x86/shadow: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:25 +0000 Message-ID: <20211126123446.32324-45-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932045540100023 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/mm/shadow/common.c | 11 +++--- xen/arch/x86/mm/shadow/hvm.c | 8 ++-- xen/arch/x86/mm/shadow/multi.c | 80 ++++++++++++++++++++----------------= ---- xen/arch/x86/mm/shadow/multi.h | 20 +++++----- xen/arch/x86/mm/shadow/private.h | 12 +++--- xen/arch/x86/mm/shadow/pv.c | 4 +- 6 files changed, 67 insertions(+), 68 deletions(-) diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/commo= n.c index 8e51168e61b6..7cf6470ae8c3 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -1215,7 +1215,7 @@ void shadow_free(struct domain *d, mfn_t smfn) * This action is irreversible: the p2m mapping only ever grows. * That's OK because the p2m table only exists for translated domains, * and those domains can't ever turn off shadow mode. */ -static struct page_info * +static struct page_info *cf_check shadow_alloc_p2m_page(struct domain *d) { struct page_info *pg; @@ -1251,7 +1251,7 @@ shadow_alloc_p2m_page(struct domain *d) return pg; } =20 -static void +static void cf_check shadow_free_p2m_page(struct domain *d, struct page_info *pg) { struct domain *owner =3D page_get_owner(pg); @@ -2290,7 +2290,8 @@ void shadow_prepare_page_type_change(struct domain *d= , struct page_info *page, /* Reset the up-pointers of every L3 shadow to 0. * This is called when l3 shadows stop being pinnable, to clear out all * the list-head bits so the up-pointer field is properly inititalised. */ -static int sh_clear_up_pointer(struct vcpu *v, mfn_t smfn, mfn_t unused) +static int cf_check sh_clear_up_pointer( + struct vcpu *v, mfn_t smfn, mfn_t unused) { mfn_to_page(smfn)->up =3D 0; return 0; @@ -2490,7 +2491,7 @@ static void sh_update_paging_modes(struct vcpu *v) v->arch.paging.mode->update_cr3(v, 0, false); } =20 -void shadow_update_paging_modes(struct vcpu *v) +void cf_check shadow_update_paging_modes(struct vcpu *v) { paging_lock(v->domain); sh_update_paging_modes(v); @@ -3075,7 +3076,7 @@ static bool flush_vcpu(const struct vcpu *v, const un= signed long *vcpu_bitmap) } =20 /* Flush TLB of selected vCPUs. NULL for all. */ -bool shadow_flush_tlb(const unsigned long *vcpu_bitmap) +bool cf_check shadow_flush_tlb(const unsigned long *vcpu_bitmap) { static DEFINE_PER_CPU(cpumask_t, flush_cpumask); cpumask_t *mask =3D &this_cpu(flush_cpumask); diff --git a/xen/arch/x86/mm/shadow/hvm.c b/xen/arch/x86/mm/shadow/hvm.c index ea99dd714fc3..e99eb3432cce 100644 --- a/xen/arch/x86/mm/shadow/hvm.c +++ b/xen/arch/x86/mm/shadow/hvm.c @@ -797,9 +797,9 @@ sh_remove_all_shadows_and_parents(struct domain *d, mfn= _t gmfn) * It means extra emulated writes and slows down removal of mappings. = */ } =20 -static void sh_unshadow_for_p2m_change(struct domain *d, unsigned long gfn, - l1_pgentry_t old, l1_pgentry_t new, - unsigned int level) +static void cf_check sh_unshadow_for_p2m_change( + struct domain *d, unsigned long gfn, l1_pgentry_t old, l1_pgentry_t ne= w, + unsigned int level) { mfn_t omfn =3D l1e_get_mfn(old); unsigned int oflags =3D l1e_get_flags(old); @@ -882,7 +882,7 @@ static void sh_unshadow_for_p2m_change(struct domain *d= , unsigned long gfn, } =20 #if (SHADOW_OPTIMIZATIONS & SHOPT_FAST_FAULT_PATH) -static void +static void cf_check sh_write_p2m_entry_post(struct p2m_domain *p2m, unsigned int oflags) { struct domain *d =3D p2m->domain; diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index 7b8f4dd13b03..c1918e4e1f47 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -369,7 +369,7 @@ static void sh_audit_gw(struct vcpu *v, const walk_t *g= w) =20 #if GUEST_PAGING_LEVELS =3D=3D 2 /* From one page of a multi-page shadow, find the next one */ -static inline mfn_t sh_next_page(mfn_t smfn) +static inline mfn_t cf_check sh_next_page(mfn_t smfn) { struct page_info *pg =3D mfn_to_page(smfn), *next; struct page_list_head h =3D PAGE_LIST_HEAD_INIT(h); @@ -399,8 +399,7 @@ guest_index(void *ptr) return (u32)((unsigned long)ptr & ~PAGE_MASK) / sizeof(guest_l1e_t); } =20 -static u32 -shadow_l1_index(mfn_t *smfn, u32 guest_index) +static u32 cf_check shadow_l1_index(mfn_t *smfn, u32 guest_index) { #if (GUEST_PAGING_LEVELS =3D=3D 2) ASSERT(mfn_to_page(*smfn)->u.sh.head); @@ -412,8 +411,7 @@ shadow_l1_index(mfn_t *smfn, u32 guest_index) #endif } =20 -static u32 -shadow_l2_index(mfn_t *smfn, u32 guest_index) +static u32 cf_check shadow_l2_index(mfn_t *smfn, u32 guest_index) { #if (GUEST_PAGING_LEVELS =3D=3D 2) int i; @@ -432,14 +430,12 @@ shadow_l2_index(mfn_t *smfn, u32 guest_index) =20 #if GUEST_PAGING_LEVELS >=3D 4 =20 -static u32 -shadow_l3_index(mfn_t *smfn, u32 guest_index) +static u32 cf_check shadow_l3_index(mfn_t *smfn, u32 guest_index) { return guest_index; } =20 -static u32 -shadow_l4_index(mfn_t *smfn, u32 guest_index) +static u32 cf_check shadow_l4_index(mfn_t *smfn, u32 guest_index) { return guest_index; } @@ -922,7 +918,7 @@ do { = \ /*************************************************************************= */ /* Create a shadow of a given guest page. */ -static mfn_t +static mfn_t cf_check sh_make_shadow(struct vcpu *v, mfn_t gmfn, u32 shadow_type) { struct domain *d =3D v->domain; @@ -1457,7 +1453,8 @@ void sh_unhook_64b_mappings(struct domain *d, mfn_t s= l4mfn, int user_only) */ =20 #if GUEST_PAGING_LEVELS >=3D 4 -static int validate_gl4e(struct vcpu *v, void *new_ge, mfn_t sl4mfn, void = *se) +static int cf_check validate_gl4e( + struct vcpu *v, void *new_ge, mfn_t sl4mfn, void *se) { shadow_l4e_t new_sl4e; guest_l4e_t new_gl4e =3D *(guest_l4e_t *)new_ge; @@ -1516,7 +1513,8 @@ static int validate_gl4e(struct vcpu *v, void *new_ge= , mfn_t sl4mfn, void *se) } =20 =20 -static int validate_gl3e(struct vcpu *v, void *new_ge, mfn_t sl3mfn, void = *se) +static int cf_check validate_gl3e( + struct vcpu *v, void *new_ge, mfn_t sl3mfn, void *se) { struct domain *d =3D v->domain; shadow_l3e_t new_sl3e; @@ -1550,7 +1548,8 @@ static int validate_gl3e(struct vcpu *v, void *new_ge= , mfn_t sl3mfn, void *se) } #endif // GUEST_PAGING_LEVELS >=3D 4 =20 -static int validate_gl2e(struct vcpu *v, void *new_ge, mfn_t sl2mfn, void = *se) +static int cf_check validate_gl2e( + struct vcpu *v, void *new_ge, mfn_t sl2mfn, void *se) { struct domain *d =3D v->domain; shadow_l2e_t new_sl2e; @@ -1597,7 +1596,8 @@ static int validate_gl2e(struct vcpu *v, void *new_ge= , mfn_t sl2mfn, void *se) return result; } =20 -static int validate_gl1e(struct vcpu *v, void *new_ge, mfn_t sl1mfn, void = *se) +static int cf_check validate_gl1e( + struct vcpu *v, void *new_ge, mfn_t sl1mfn, void *se) { struct domain *d =3D v->domain; shadow_l1e_t new_sl1e; @@ -2087,8 +2087,8 @@ static DEFINE_PER_CPU(int,trace_extra_emulation_count= ); #endif static DEFINE_PER_CPU(guest_pa_t,trace_emulate_write_val); =20 -static void trace_emulate_write_val(const void *ptr, unsigned long vaddr, - const void *src, unsigned int bytes) +static void cf_check trace_emulate_write_val( + const void *ptr, unsigned long vaddr, const void *src, unsigned int by= tes) { #if GUEST_PAGING_LEVELS =3D=3D 3 if ( vaddr =3D=3D this_cpu(trace_emulate_initial_va) ) @@ -2142,9 +2142,8 @@ static inline void trace_shadow_emulate(guest_l1e_t g= l1e, unsigned long va) * shadow code (and the guest should retry) or 0 if it is not (and the * fault should be handled elsewhere or passed to the guest). */ =20 -static int sh_page_fault(struct vcpu *v, - unsigned long va, - struct cpu_user_regs *regs) +static int cf_check sh_page_fault( + struct vcpu *v, unsigned long va, struct cpu_user_regs *regs) { struct domain *d =3D v->domain; walk_t gw; @@ -2896,7 +2895,7 @@ static int sh_page_fault(struct vcpu *v, * instruction should be issued on the hardware, or false if it's safe not * to do so. */ -static bool sh_invlpg(struct vcpu *v, unsigned long linear) +static bool cf_check sh_invlpg(struct vcpu *v, unsigned long linear) { mfn_t sl1mfn; shadow_l2e_t sl2e; @@ -3028,9 +3027,8 @@ static bool sh_invlpg(struct vcpu *v, unsigned long l= inear) =20 #ifdef CONFIG_HVM =20 -static unsigned long -sh_gva_to_gfn(struct vcpu *v, struct p2m_domain *p2m, - unsigned long va, uint32_t *pfec) +static unsigned long cf_check sh_gva_to_gfn( + struct vcpu *v, struct p2m_domain *p2m, unsigned long va, uint32_t *pf= ec) /* Called to translate a guest virtual address to what the *guest* * pagetables would map it to. */ { @@ -3194,8 +3192,7 @@ sh_update_linear_entries(struct vcpu *v) * Removes v->arch.paging.shadow.shadow_table[]. * Does all appropriate management/bookkeeping/refcounting/etc... */ -static void -sh_detach_old_tables(struct vcpu *v) +static void cf_check sh_detach_old_tables(struct vcpu *v) { struct domain *d =3D v->domain; mfn_t smfn; @@ -3214,8 +3211,7 @@ sh_detach_old_tables(struct vcpu *v) } } =20 -static void -sh_update_cr3(struct vcpu *v, int do_locking, bool noflush) +static void cf_check sh_update_cr3(struct vcpu *v, int do_locking, bool no= flush) /* Updates vcpu->arch.cr3 after the guest has changed CR3. * Paravirtual guests should set v->arch.guest_table (and guest_table_user, * if appropriate). @@ -3523,7 +3519,8 @@ int sh_rm_write_access_from_sl1p(struct domain *d, mf= n_t gmfn, #endif /* OOS */ =20 #if defined(CONFIG_HVM) && (SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTI= C) -static int sh_guess_wrmap(struct vcpu *v, unsigned long vaddr, mfn_t gmfn) +static int cf_check sh_guess_wrmap( + struct vcpu *v, unsigned long vaddr, mfn_t gmfn) /* Look up this vaddr in the current shadow and see if it's a writeable * mapping of this gmfn. If so, remove it. Returns 1 if it worked. */ { @@ -3587,8 +3584,8 @@ static int sh_guess_wrmap(struct vcpu *v, unsigned lo= ng vaddr, mfn_t gmfn) } #endif =20 -int sh_rm_write_access_from_l1(struct domain *d, mfn_t sl1mfn, - mfn_t readonly_mfn) +int cf_check sh_rm_write_access_from_l1( + struct domain *d, mfn_t sl1mfn, mfn_t readonly_mfn) /* Excises all writeable mappings to readonly_mfn from this l1 shadow tabl= e */ { shadow_l1e_t *sl1e; @@ -3624,7 +3621,8 @@ int sh_rm_write_access_from_l1(struct domain *d, mfn_= t sl1mfn, } =20 =20 -int sh_rm_mappings_from_l1(struct domain *d, mfn_t sl1mfn, mfn_t target_mf= n) +int cf_check sh_rm_mappings_from_l1( + struct domain *d, mfn_t sl1mfn, mfn_t target_mfn) /* Excises all mappings to guest frame from this shadow l1 table */ { shadow_l1e_t *sl1e; @@ -3675,7 +3673,7 @@ void sh_clear_shadow_entry(struct domain *d, void *ep= , mfn_t smfn) } } =20 -int sh_remove_l1_shadow(struct domain *d, mfn_t sl2mfn, mfn_t sl1mfn) +int cf_check sh_remove_l1_shadow(struct domain *d, mfn_t sl2mfn, mfn_t sl1= mfn) /* Remove all mappings of this l1 shadow from this l2 shadow */ { shadow_l2e_t *sl2e; @@ -3698,7 +3696,7 @@ int sh_remove_l1_shadow(struct domain *d, mfn_t sl2mf= n, mfn_t sl1mfn) } =20 #if GUEST_PAGING_LEVELS >=3D 4 -int sh_remove_l2_shadow(struct domain *d, mfn_t sl3mfn, mfn_t sl2mfn) +int cf_check sh_remove_l2_shadow(struct domain *d, mfn_t sl3mfn, mfn_t sl2= mfn) /* Remove all mappings of this l2 shadow from this l3 shadow */ { shadow_l3e_t *sl3e; @@ -3720,7 +3718,7 @@ int sh_remove_l2_shadow(struct domain *d, mfn_t sl3mf= n, mfn_t sl2mfn) return done; } =20 -int sh_remove_l3_shadow(struct domain *d, mfn_t sl4mfn, mfn_t sl3mfn) +int cf_check sh_remove_l3_shadow(struct domain *d, mfn_t sl4mfn, mfn_t sl3= mfn) /* Remove all mappings of this l3 shadow from this l4 shadow */ { shadow_l4e_t *sl4e; @@ -3750,7 +3748,7 @@ int sh_remove_l3_shadow(struct domain *d, mfn_t sl4mf= n, mfn_t sl3mfn) * and in the meantime we unhook its top-level user-mode entries. */ =20 #if GUEST_PAGING_LEVELS =3D=3D 3 -static void sh_pagetable_dying(paddr_t gpa) +static void cf_check sh_pagetable_dying(paddr_t gpa) { struct vcpu *v =3D current; struct domain *d =3D v->domain; @@ -3831,7 +3829,7 @@ static void sh_pagetable_dying(paddr_t gpa) put_gfn(d, l3gfn); } #else -static void sh_pagetable_dying(paddr_t gpa) +static void cf_check sh_pagetable_dying(paddr_t gpa) { struct vcpu *v =3D current; struct domain *d =3D v->domain; @@ -3930,7 +3928,7 @@ static const char *sh_audit_flags(struct vcpu *v, int= level, return NULL; } =20 -int sh_audit_l1_table(struct vcpu *v, mfn_t sl1mfn, mfn_t x) +int cf_check sh_audit_l1_table(struct vcpu *v, mfn_t sl1mfn, mfn_t x) { guest_l1e_t *gl1e, *gp; shadow_l1e_t *sl1e; @@ -3998,7 +3996,7 @@ int sh_audit_l1_table(struct vcpu *v, mfn_t sl1mfn, m= fn_t x) return done; } =20 -int sh_audit_fl1_table(struct vcpu *v, mfn_t sl1mfn, mfn_t x) +int cf_check sh_audit_fl1_table(struct vcpu *v, mfn_t sl1mfn, mfn_t x) { guest_l1e_t *gl1e, e; shadow_l1e_t *sl1e; @@ -4024,7 +4022,7 @@ int sh_audit_fl1_table(struct vcpu *v, mfn_t sl1mfn, = mfn_t x) return 0; } =20 -int sh_audit_l2_table(struct vcpu *v, mfn_t sl2mfn, mfn_t x) +int cf_check sh_audit_l2_table(struct vcpu *v, mfn_t sl2mfn, mfn_t x) { struct domain *d =3D v->domain; guest_l2e_t *gl2e, *gp; @@ -4076,7 +4074,7 @@ int sh_audit_l2_table(struct vcpu *v, mfn_t sl2mfn, m= fn_t x) } =20 #if GUEST_PAGING_LEVELS >=3D 4 -int sh_audit_l3_table(struct vcpu *v, mfn_t sl3mfn, mfn_t x) +int cf_check sh_audit_l3_table(struct vcpu *v, mfn_t sl3mfn, mfn_t x) { struct domain *d =3D v->domain; guest_l3e_t *gl3e, *gp; @@ -4124,7 +4122,7 @@ int sh_audit_l3_table(struct vcpu *v, mfn_t sl3mfn, m= fn_t x) return 0; } =20 -int sh_audit_l4_table(struct vcpu *v, mfn_t sl4mfn, mfn_t x) +int cf_check sh_audit_l4_table(struct vcpu *v, mfn_t sl4mfn, mfn_t x) { struct domain *d =3D v->domain; guest_l4e_t *gl4e, *gp; diff --git a/xen/arch/x86/mm/shadow/multi.h b/xen/arch/x86/mm/shadow/multi.h index 0bd6a2d5b787..5bcd6ae1a8da 100644 --- a/xen/arch/x86/mm/shadow/multi.h +++ b/xen/arch/x86/mm/shadow/multi.h @@ -59,10 +59,10 @@ extern void SHADOW_INTERNAL_NAME(sh_unhook_64b_mappings, GUEST_LEVELS) (struct domain *d, mfn_t sl4mfn, int user_only); =20 -extern int +int cf_check SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1, GUEST_LEVELS) (struct domain *d, mfn_t sl1mfn, mfn_t readonly_mfn); -extern int +int cf_check SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1, GUEST_LEVELS) (struct domain *d, mfn_t sl1mfn, mfn_t target_mfn); =20 @@ -70,30 +70,30 @@ extern void SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, GUEST_LEVELS) (struct domain *d, void *ep, mfn_t smfn); =20 -extern int +int cf_check SHADOW_INTERNAL_NAME(sh_remove_l1_shadow, GUEST_LEVELS) (struct domain *d, mfn_t sl2mfn, mfn_t sl1mfn); -extern int +int cf_check SHADOW_INTERNAL_NAME(sh_remove_l2_shadow, GUEST_LEVELS) (struct domain *d, mfn_t sl3mfn, mfn_t sl2mfn); -extern int +int cf_check SHADOW_INTERNAL_NAME(sh_remove_l3_shadow, GUEST_LEVELS) (struct domain *d, mfn_t sl4mfn, mfn_t sl3mfn); =20 #if SHADOW_AUDIT & SHADOW_AUDIT_ENTRIES -int +int cf_check SHADOW_INTERNAL_NAME(sh_audit_l1_table, GUEST_LEVELS) (struct vcpu *v, mfn_t sl1mfn, mfn_t x); -int +int cf_check SHADOW_INTERNAL_NAME(sh_audit_fl1_table, GUEST_LEVELS) (struct vcpu *v, mfn_t sl1mfn, mfn_t x); -int +int cf_check SHADOW_INTERNAL_NAME(sh_audit_l2_table, GUEST_LEVELS) (struct vcpu *v, mfn_t sl2mfn, mfn_t x); -int +int cf_check SHADOW_INTERNAL_NAME(sh_audit_l3_table, GUEST_LEVELS) (struct vcpu *v, mfn_t sl3mfn, mfn_t x); -int +int cf_check SHADOW_INTERNAL_NAME(sh_audit_l4_table, GUEST_LEVELS) (struct vcpu *v, mfn_t sl4mfn, mfn_t x); #endif diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/priv= ate.h index e4db8d32546a..3dc024e30f20 100644 --- a/xen/arch/x86/mm/shadow/private.h +++ b/xen/arch/x86/mm/shadow/private.h @@ -420,15 +420,15 @@ static inline int sh_remove_write_access(struct domai= n *d, mfn_t readonly_mfn, #endif =20 /* Functions that atomically write PV guest PT entries */ -void sh_write_guest_entry(struct vcpu *v, intpte_t *p, intpte_t new, - mfn_t gmfn); -intpte_t sh_cmpxchg_guest_entry(struct vcpu *v, intpte_t *p, intpte_t old, - intpte_t new, mfn_t gmfn); +void cf_check sh_write_guest_entry( + struct vcpu *v, intpte_t *p, intpte_t new, mfn_t gmfn); +intpte_t cf_check sh_cmpxchg_guest_entry( + struct vcpu *v, intpte_t *p, intpte_t old, intpte_t new, mfn_t gmfn); =20 /* Update all the things that are derived from the guest's CR0/CR3/CR4. * Called to initialize paging structures if the paging mode * has changed, and when bringing up a VCPU for the first time. */ -void shadow_update_paging_modes(struct vcpu *v); +void cf_check shadow_update_paging_modes(struct vcpu *v); =20 /* Unhook the non-Xen mappings in this top-level shadow mfn. * With user_only =3D=3D 1, unhooks only the user-mode mappings. */ @@ -922,7 +922,7 @@ static inline int sh_check_page_has_no_refs(struct page= _info *page) } =20 /* Flush the TLB of the selected vCPUs. */ -bool shadow_flush_tlb(const unsigned long *vcpu_bitmap); +bool cf_check shadow_flush_tlb(const unsigned long *vcpu_bitmap); =20 #endif /* _XEN_SHADOW_PRIVATE_H */ =20 diff --git a/xen/arch/x86/mm/shadow/pv.c b/xen/arch/x86/mm/shadow/pv.c index f51f980f2694..ed10d5479c5e 100644 --- a/xen/arch/x86/mm/shadow/pv.c +++ b/xen/arch/x86/mm/shadow/pv.c @@ -28,7 +28,7 @@ * Write a new value into the guest pagetable, and update the shadows * appropriately. */ -void +void cf_check sh_write_guest_entry(struct vcpu *v, intpte_t *p, intpte_t new, mfn_t gmfn) { paging_lock(v->domain); @@ -42,7 +42,7 @@ sh_write_guest_entry(struct vcpu *v, intpte_t *p, intpte_= t new, mfn_t gmfn) * appropriately. Returns the previous entry found, which the caller is * expected to check to see if the cmpxchg was successful. */ -intpte_t +intpte_t cf_check sh_cmpxchg_guest_entry(struct vcpu *v, intpte_t *p, intpte_t old, intpte_t new, mfn_t gmfn) { --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932042; cv=none; d=zohomail.com; s=zohoarc; b=g4NuHhwR78aKKg30QMP7AyW6RVYDVY8ZI5+Ds0TCv6UD7m5QenPfLn1ml/NSTj+Ho96/gNlEZlqSf0OEnTGyQ6EYncMtWnPHTPc9rm0+W71ZVOE9OEA5NXD5gQwnYo3+7R0MFHG6i9bI3NbO13WkWsaJNNU9rXCNwBerZkhl+fE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932042; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=to8kBf3uAgp20yBRd8RIMFN0+HIFzQGSheJqSVO5/qE=; b=EaIfp/gjTSIMyg8kP1rBihkeBTe5mp1C9hMpchgw3vKGoXwHUhF0yfWrM66DMy/2teeGBtoW1D0ChGbxOZf6fKgJleQduHJjgyvzxhA+rDLHKU/h+kTANChrtW2WYAujA4Vp+BFKLh+DC5P15+m3TmEaVJ+BkM2FXi/6gRpxrLk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932042029446.4859592895027; Fri, 26 Nov 2021 05:07:22 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232781.403791 (Exim 4.92) (envelope-from ) id 1mqawP-0003e0-4Q; Fri, 26 Nov 2021 13:07:01 +0000 Received: by outflank-mailman (output) from mailman id 232781.403791; Fri, 26 Nov 2021 13:07:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawO-0003cR-PS; Fri, 26 Nov 2021 13:07:00 +0000 Received: by outflank-mailman (input) for mailman id 232781; Fri, 26 Nov 2021 13:06:58 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavb-0003W9-I3 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:11 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9f33e7f7-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:10 +0100 (CET) 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: 9f33e7f7-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931970; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lximL64CK95djBSogswxc0craXiGZCmN208+GkSGs/4=; b=iVU0sLnf7fPCHW16bSgPBhhxeyyHvvWz9qWP4vN4GWthrrdx3+BHCQFb BkgMw0umZW0EMcnQKQDtP7bPPKcR1WhGhPpI35KLQQjQFmnFhUbe4EPAD diCeuUr+maowUaUCSTx1K4oAwuf7/Z1ZcKlWJ3ZVkzVHjmRIWNvw/XWbR 4=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: vuJvUChCQhHB/ox0yJ203BadB5bX5zAEnj3gOCw4jIbaFaveUZeMtTEUzpYxpb+0TpLDLuB7N+ e6d1O8VHvV4xk8tJvEtZc9oiG7QDu8swSJ9P7bByQ8q/nP780UInPfylxNbNuPp12qljLhi44N VOuSFHqMFqemWyR5CXH+jig5dZCVJRhIm5wXOLvCGPWy4v8C60lQrc9QL1Lz5SOfisMmh1NEU/ n+kDYpkp5RilgJfTTjWBFzWnCN/faf2ZGUbOBDD9vzP3YxkWItnk35+uftbToSag9xzv5+Hboi BV+W//OFBnnrRDSDtUeP4LGO X-SBRS: 5.1 X-MesageID: 59064059 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:h5LPia5j3Ixzl2l9ZfI0/wxRtPXAchMFZxGqfqrLsTDasY5as4F+v mVJWjjXaPyNZzb1fYpya4q+o0xU6MLRm4VmTgI6pSo1Hi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z9 ORplsSrEwsTN4rzvcMwYkBgNBxwFPgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTK6AO 5JEOFKDajzqXzJlfUUdJa5kgef5hlryLgJe9Wms8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u10bTDwweNdef4SGY6X/qjejK9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc+ZhN85i81uB8KPz3CO+K1lddhl8ZvVz4afaWgcW/ lOOmtroAxlmv7uUVW+R+9+okN+iBcQGBTRcPHFZFGPp9/Gm+dhu1UyXEr6PBYbs1oWtcQwc1 Qxmu8TXa187qccQn5u28lnc695HjsiYF1Vljuk7s4/M0++YWGJHT9D3gbQ4xawZRGp8crVnl CNf8yR5xLpTZaxhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGggfxg5bJtbKGO3P BS7VeZtCHl7ZyDCgUhfOd/ZNijX5fK4SYSNug78MrKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWPnOKrNVNdA9SdhDWx/ne8qRqSwJKGSI+cElJNhMb6e9Jl1VNk/sHm+HW0 Gu6X0MEmlPziWeecVeBa2x5aaOpVpF69CppMSspNFeu+n4ifYfws/tPK8ppJeEqpL550Pp5b /gZYMHcUP5BfSvKpmYGZp7noY08KBny3VCSPzCoaSQUdoJ7Q1Cb4cftewbirXFcDie+ucYkj aen0wfXHcgKSwh4VZ6EY/Oz1VKh+3ManbsqDUfPJ9BSfmTq8ZRrdHOt3qNmfZlUJEyalDWA1 guQDRMJnsX3otc4oIvTmKSJj4a1CO8iTEBUKHbWsOStPi7A82v9nYIZCLSUfSrQXX/f8bm5Y bkH1On1NfAKkQoYs4d4FLo3n6sy68G2+u1fxwVgWn7Kc06qGvVrJXzfhZtDsahEx7l4vwqqW x3QpokGaOvRYM61QkQMIAcFb/iY0aBGkzbf2v05PUHm6XIl57GAS0hTY0GBhSE1wGGZ62/5L TPNYPIr1jE= IronPort-HdrOrdr: A9a23:e7v42Kk5tm8s1kNeybthigMvTufpDfIU3DAbv31ZSRFFG/Fxl6 iV8sjzsiWE8Qr5OUtQ/+xoV5PhfZqxz/JICMwqTNKftWrdyQyVxeNZnOjfKlTbckWUnINgPO VbAsxD4bXLfCBHZK3BgTVQfexO/DD+ytHLudvj X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59064059" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 45/65] x86/hap: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:26 +0000 Message-ID: <20211126123446.32324-46-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932043796100019 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/mm/hap/guest_walk.c | 4 ++-- xen/arch/x86/mm/hap/hap.c | 21 +++++++++++---------- xen/arch/x86/mm/hap/private.h | 30 ++++++++++++------------------ 3 files changed, 25 insertions(+), 30 deletions(-) diff --git a/xen/arch/x86/mm/hap/guest_walk.c b/xen/arch/x86/mm/hap/guest_w= alk.c index 832a8058471e..1da8d3b99edc 100644 --- a/xen/arch/x86/mm/hap/guest_walk.c +++ b/xen/arch/x86/mm/hap/guest_walk.c @@ -36,14 +36,14 @@ #include #include =20 -unsigned long hap_gva_to_gfn(GUEST_PAGING_LEVELS)( +unsigned long cf_check hap_gva_to_gfn(GUEST_PAGING_LEVELS)( struct vcpu *v, struct p2m_domain *p2m, unsigned long gva, uint32_t *p= fec) { unsigned long cr3 =3D v->arch.hvm.guest_cr[3]; return hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(v, p2m, cr3, gva, pfec, = NULL); } =20 -unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)( +unsigned long cf_check hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)( struct vcpu *v, struct p2m_domain *p2m, unsigned long cr3, paddr_t ga, uint32_t *pfec, unsigned int *page_order) { diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c index ed5112b00b63..9d67a47f5fe9 100644 --- a/xen/arch/x86/mm/hap/hap.c +++ b/xen/arch/x86/mm/hap/hap.c @@ -268,7 +268,7 @@ static void hap_free(struct domain *d, mfn_t mfn) page_list_add_tail(pg, &d->arch.paging.hap.freelist); } =20 -static struct page_info *hap_alloc_p2m_page(struct domain *d) +static struct page_info *cf_check hap_alloc_p2m_page(struct domain *d) { struct page_info *pg; =20 @@ -294,7 +294,7 @@ static struct page_info *hap_alloc_p2m_page(struct doma= in *d) return pg; } =20 -static void hap_free_p2m_page(struct domain *d, struct page_info *pg) +static void cf_check hap_free_p2m_page(struct domain *d, struct page_info = *pg) { struct domain *owner =3D page_get_owner(pg); =20 @@ -662,8 +662,8 @@ void hap_vcpu_init(struct vcpu *v) * HAP guests can handle page faults (in the guest page tables) without * needing any action from Xen, so we should not be intercepting them. */ -static int hap_page_fault(struct vcpu *v, unsigned long va, - struct cpu_user_regs *regs) +static int cf_check hap_page_fault( + struct vcpu *v, unsigned long va, struct cpu_user_regs *regs) { struct domain *d =3D v->domain; =20 @@ -677,7 +677,7 @@ static int hap_page_fault(struct vcpu *v, unsigned long= va, * should not be intercepting it. However, we need to correctly handle * getting here from instruction emulation. */ -static bool_t hap_invlpg(struct vcpu *v, unsigned long linear) +static bool cf_check hap_invlpg(struct vcpu *v, unsigned long linear) { /* * Emulate INVLPGA: @@ -690,7 +690,8 @@ static bool_t hap_invlpg(struct vcpu *v, unsigned long = linear) return 1; } =20 -static void hap_update_cr3(struct vcpu *v, int do_locking, bool noflush) +static void cf_check hap_update_cr3( + struct vcpu *v, int do_locking, bool noflush) { v->arch.hvm.hw_cr[3] =3D v->arch.hvm.guest_cr[3]; hvm_update_guest_cr3(v, noflush); @@ -702,7 +703,7 @@ static bool flush_vcpu(const struct vcpu *v, const unsi= gned long *vcpu_bitmap) } =20 /* Flush TLB of selected vCPUs. NULL for all. */ -static bool flush_tlb(const unsigned long *vcpu_bitmap) +static bool cf_check flush_tlb(const unsigned long *vcpu_bitmap) { static DEFINE_PER_CPU(cpumask_t, flush_cpumask); cpumask_t *mask =3D &this_cpu(flush_cpumask); @@ -747,7 +748,7 @@ hap_paging_get_mode(struct vcpu *v) &hap_paging_protected_mode); } =20 -static void hap_update_paging_modes(struct vcpu *v) +static void cf_check hap_update_paging_modes(struct vcpu *v) { struct domain *d =3D v->domain; unsigned long cr3_gfn =3D v->arch.hvm.guest_cr[3] >> PAGE_SHIFT; @@ -791,13 +792,13 @@ void hap_p2m_init(struct p2m_domain *p2m) p2m->write_p2m_entry_post =3D hap_write_p2m_entry_post; } =20 -static unsigned long hap_gva_to_gfn_real_mode( +static unsigned long cf_check hap_gva_to_gfn_real_mode( struct vcpu *v, struct p2m_domain *p2m, unsigned long gva, uint32_t *p= fec) { return ((paddr_t)gva >> PAGE_SHIFT); } =20 -static unsigned long hap_p2m_ga_to_gfn_real_mode( +static unsigned long cf_check hap_p2m_ga_to_gfn_real_mode( struct vcpu *v, struct p2m_domain *p2m, unsigned long cr3, paddr_t ga, uint32_t *pfec, unsigned int *page_order) { diff --git a/xen/arch/x86/mm/hap/private.h b/xen/arch/x86/mm/hap/private.h index 973fbe8be59c..1040eaf69f43 100644 --- a/xen/arch/x86/mm/hap/private.h +++ b/xen/arch/x86/mm/hap/private.h @@ -24,27 +24,21 @@ /********************************************/ /* GUEST TRANSLATION FUNCS */ /********************************************/ -unsigned long hap_gva_to_gfn_2_levels(struct vcpu *v, - struct p2m_domain *p2m, - unsigned long gva,=20 - uint32_t *pfec); -unsigned long hap_gva_to_gfn_3_levels(struct vcpu *v, - struct p2m_domain *p2m, - unsigned long gva,=20 - uint32_t *pfec); -unsigned long hap_gva_to_gfn_4_levels(struct vcpu *v, - struct p2m_domain *p2m, - unsigned long gva,=20 - uint32_t *pfec); +unsigned long cf_check hap_gva_to_gfn_2_levels( + struct vcpu *v, struct p2m_domain *p2m, unsigned long gva, uint32_t *p= fec); +unsigned long cf_check hap_gva_to_gfn_3_levels( + struct vcpu *v, struct p2m_domain *p2m, unsigned long gva, uint32_t *p= fec); +unsigned long cf_check hap_gva_to_gfn_4_levels( + struct vcpu *v, struct p2m_domain *p2m, unsigned long gva, uint32_t *p= fec); =20 -unsigned long hap_p2m_ga_to_gfn_2_levels(struct vcpu *v, - struct p2m_domain *p2m, unsigned long cr3, +unsigned long cf_check hap_p2m_ga_to_gfn_2_levels( + struct vcpu *v, struct p2m_domain *p2m, unsigned long cr3, paddr_t ga, uint32_t *pfec, unsigned int *page_order); -unsigned long hap_p2m_ga_to_gfn_3_levels(struct vcpu *v, - struct p2m_domain *p2m, unsigned long cr3, +unsigned long cf_check hap_p2m_ga_to_gfn_3_levels( + struct vcpu *v, struct p2m_domain *p2m, unsigned long cr3, paddr_t ga, uint32_t *pfec, unsigned int *page_order); -unsigned long hap_p2m_ga_to_gfn_4_levels(struct vcpu *v, - struct p2m_domain *p2m, unsigned long cr3, +unsigned long cf_check hap_p2m_ga_to_gfn_4_levels( + struct vcpu *v, struct p2m_domain *p2m, unsigned long cr3, paddr_t ga, uint32_t *pfec, unsigned int *page_order); =20 #endif /* __HAP_PRIVATE_H__ */ --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932121; cv=none; d=zohomail.com; s=zohoarc; b=ZTRF4AwOd52L8gLMgwDpPItJ7UpAV0UhpEeVf7HEd34JrWINYeCl/CELVetYvxAwYBacDHnpzmZWWuwl+NkVZpWZVut27HxbbB11achs79dMqJ3R1TiCErGTJpMysIitukzL7KIFsjK9NfqPOPA8i2ijWVXctnU2pIpsIilr+uo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932121; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=E5zLQREyEYN6tktNb/yJqaCxji536yqlfoD8mIKGTp8=; b=CoH0ncW3twqxHtUvN91PkKGKNHMog1i1w4yRjSjnzgP3Fv1Bf9zO+WrGLdkcnSZ8LafT0qC6mjqgayU+Zc5xYwRfiJlEQ09wS+esl4TxVgIVuiOmBvFaUFLD6VPz2CCs1LI0fgJrB0Dn9g4uUATNOcasDmqnjJvQ1KZG+Q5/toU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163793212128356.83091346888807; Fri, 26 Nov 2021 05:08:41 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232893.404173 (Exim 4.92) (envelope-from ) id 1mqaxj-0005dJ-TZ; Fri, 26 Nov 2021 13:08:23 +0000 Received: by outflank-mailman (output) from mailman id 232893.404173; Fri, 26 Nov 2021 13:08:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxi-0005Vi-S6; Fri, 26 Nov 2021 13:08:22 +0000 Received: by outflank-mailman (input) for mailman id 232893; Fri, 26 Nov 2021 13:08:16 +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 1mqavi-0002zD-Dd for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:18 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id a0ad151d-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:06:12 +0100 (CET) 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: a0ad151d-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931972; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OmfIVjvRFySSa8/mzc3J6kH3MJyMsyMFs53apAyPR2A=; b=RATjgcQLwPt3aSUc9j5CuIR7R9SPzPY7X3CGFgmddPOH4uC6vETcpcMY tI7kM3J0mXk7OGEKv8seNFQ/W4NHzaE5ygjc89rpowp9BDQLOF8v9O5RO iXAgl/ht4IZE6lOcIdfORZIkI9CkLHVR9Hv2B1s5MPjV7hFa2qtVUuQAb 8=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: JHqhR5uQ2IHIQG9EIfZMKm1ecScCjhq+z1tYFDsehJYddTebeD3lsy2yAybyGbBsff91CRrmTd r5zqVXdJQ0EkM81GgeuAu1T2yKel/eEbb5uWcGwmfnjvHIh6WuHNSQlsCJb7iPStFBC/HJEgSl aiuBTzKyQ0H3hs81E8Som1JuEkrq1Ubm1bZIC6QDkY/5zHwDKntnmy1xZ4jiaSJSSFfk/4sjtq 18RHHwNP1lsJk3p27dAENWYp1ryj4Q+UB4WSt2EG883gN7eemu0iWwDdSiwZPg/nRtIVFZn+cX cEmM0YaDwcmXf4RReewiuq5m X-SBRS: 5.1 X-MesageID: 58193863 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:NwEnEq6NpPAr7+JCk6oelQxRtPXAchMFZxGqfqrLsTDasY5as4F+v mAaUTuBMqneMzChfox/Po/no00G7Jbcx9Y1TAU6qS01Hi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Zy N9s6sbhcjgTGrDToc9FbQICPiolFPgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTa+PP JpHMlKDajzuRw1LA00eFakYwrnz3SDudz5J+VuK8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u10bTDwweNdef4SGY6X/qjejK9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc9paMrJguTqy8I7J/D+yXlYfFBNKM/Vz4afaWgcW/ lOOmtroAxlmv7uUVW+R+9+okN+iBcQGBTRcPHFZFGPp9/Gm+dhu1UyXEr6PBYbs1oWtcQwc1 Qxmu8TXa187qccQn5u28lnc695HjsiYF1Vljuk7s4/M0++YWGJHT9D3gbQ4xawZRGp8crVnl CNf8yR5xLpTZaxhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGggfxg5bJtbKGO3P BS7VeZtCHl7ZyDCgUhfOd/ZNijX5fK4SYSNug78MrKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWPnOKrNVNdA9SdhDWx/ne8qRqSwJKGSI+cElJNhMb6epJl1VNk/sHm+HW0 Gu6X0MEmlPziWeecVeBa2x5aaOpVpF69CppMSspNFeu+n4ifYfws/tPK8ppJeEqpL550Pp5b /gZYMHcUP5BfSvKpmYGZp7noY08KBny3VCSPzCoaSQUdoJ7Q1Cb4cftewbirXFcDie+ucYkj aen0wfXHcgKSwh4VZ6EY/Oz1VKh+3ManbsqDUfPJ9BSfmTq8ZRrdHOt3qNmfZlUJEyalDWA1 guQDRMJnsX3otc4oIvTmKSJj4a1CO8iTEBUKHbWsOStPi7A82v9nYIZCLSUfSrQXX/f8bm5Y bkH1On1NfAKkQoYs4d4FLo3n6sy68G2+u1fxwVgWn7Kc06qGvVrJXzfhZtDsahEx7l4vwqqW x3QpokGaOvRYM61QkQMIAcFb/iY0aBGkzbf2v05PUHm6XIl57GAS0hTY0GBhSE1wGGZ62/5L TPNYPIr1jE= IronPort-HdrOrdr: A9a23:y1sHp64/TIZ7QUCywQPXwPDXdLJyesId70hD6qhwISY6TiX+rb HWoB17726TtN9/YhEdcLy7VJVoBEmskKKdgrNhWotKPjOW21dARbsKheCJrgEIWReOktK1vZ 0QC5SWY+eQMbEVt6nHCXGDYrQd/OU= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193863" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 46/65] x86/p2m: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:27 +0000 Message-ID: <20211126123446.32324-47-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932121830100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/mm/hap/hap.c | 2 +- xen/arch/x86/mm/hap/nested_hap.c | 2 +- xen/arch/x86/mm/p2m-ept.c | 32 +++++++++++++++----------------- xen/arch/x86/mm/p2m-pt.c | 19 +++++++++---------- xen/include/asm-x86/p2m.h | 4 ++-- 5 files changed, 28 insertions(+), 31 deletions(-) diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c index 9d67a47f5fe9..c19e337d6585 100644 --- a/xen/arch/x86/mm/hap/hap.c +++ b/xen/arch/x86/mm/hap/hap.c @@ -778,7 +778,7 @@ static void cf_check hap_update_paging_modes(struct vcp= u *v) put_gfn(d, cr3_gfn); } =20 -static void +static void cf_check hap_write_p2m_entry_post(struct p2m_domain *p2m, unsigned int oflags) { struct domain *d =3D p2m->domain; diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_= hap.c index 50fa2dd9f405..aa8495be4510 100644 --- a/xen/arch/x86/mm/hap/nested_hap.c +++ b/xen/arch/x86/mm/hap/nested_hap.c @@ -71,7 +71,7 @@ /* NESTED VIRT P2M FUNCTIONS */ /********************************************/ =20 -void +void cf_check nestedp2m_write_p2m_entry_post(struct p2m_domain *p2m, unsigned int oflags) { if ( oflags & _PAGE_PRESENT ) diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c index ac36afcc1d64..d2c540b81fdf 100644 --- a/xen/arch/x86/mm/p2m-ept.c +++ b/xen/arch/x86/mm/p2m-ept.c @@ -625,7 +625,7 @@ int epte_get_entry_emt(struct domain *d, gfn_t gfn, mfn= _t mfn, * - zero if no adjustment was done, * - a positive value if at least one adjustment was done. */ -static int resolve_misconfig(struct p2m_domain *p2m, unsigned long gfn) +static int cf_check resolve_misconfig(struct p2m_domain *p2m, unsigned lon= g gfn) { struct ept_data *ept =3D &p2m->ept; unsigned int level =3D ept->wl; @@ -794,7 +794,7 @@ bool_t ept_handle_misconfig(uint64_t gpa) * * Returns: 0 for success, -errno for failure */ -static int +static int cf_check ept_set_entry(struct p2m_domain *p2m, gfn_t gfn_, mfn_t mfn, unsigned int order, p2m_type_t p2mt, p2m_access_t p2ma, int sve) @@ -1003,10 +1003,9 @@ ept_set_entry(struct p2m_domain *p2m, gfn_t gfn_, mf= n_t mfn, } =20 /* Read ept p2m entries */ -static mfn_t ept_get_entry(struct p2m_domain *p2m, - gfn_t gfn_, p2m_type_t *t, p2m_access_t* a, - p2m_query_t q, unsigned int *page_order, - bool_t *sve) +static mfn_t cf_check ept_get_entry( + struct p2m_domain *p2m, gfn_t gfn_, p2m_type_t *t, p2m_access_t* a, + p2m_query_t q, unsigned int *page_order, bool_t *sve) { ept_entry_t *table =3D map_domain_page(pagetable_get_mfn(p2m_get_pagetable(p2m))); @@ -1166,8 +1165,8 @@ void ept_walk_table(struct domain *d, unsigned long g= fn) return; } =20 -static void ept_change_entry_type_global(struct p2m_domain *p2m, - p2m_type_t ot, p2m_type_t nt) +static void cf_check ept_change_entry_type_global( + struct p2m_domain *p2m, p2m_type_t ot, p2m_type_t nt) { unsigned long mfn =3D p2m->ept.mfn; =20 @@ -1178,10 +1177,9 @@ static void ept_change_entry_type_global(struct p2m_= domain *p2m, ept_sync_domain(p2m); } =20 -static int ept_change_entry_type_range(struct p2m_domain *p2m, - p2m_type_t ot, p2m_type_t nt, - unsigned long first_gfn, - unsigned long last_gfn) +static int cf_check ept_change_entry_type_range( + struct p2m_domain *p2m, p2m_type_t ot, p2m_type_t nt, + unsigned long first_gfn, unsigned long last_gfn) { unsigned int i, wl =3D p2m->ept.wl; unsigned long mask =3D (1 << EPT_TABLE_ORDER) - 1; @@ -1225,7 +1223,7 @@ static int ept_change_entry_type_range(struct p2m_dom= ain *p2m, return rc < 0 ? rc : 0; } =20 -static void ept_memory_type_changed(struct p2m_domain *p2m) +static void cf_check ept_memory_type_changed(struct p2m_domain *p2m) { unsigned long mfn =3D p2m->ept.mfn; =20 @@ -1284,7 +1282,7 @@ void ept_sync_domain(struct p2m_domain *p2m) ept_sync_domain_mask(p2m, d->dirty_cpumask); } =20 -static void ept_tlb_flush(struct p2m_domain *p2m) +static void cf_check ept_tlb_flush(struct p2m_domain *p2m) { ept_sync_domain_mask(p2m, p2m->domain->dirty_cpumask); } @@ -1347,7 +1345,7 @@ static void ept_disable_pml(struct p2m_domain *p2m) vmx_domain_update_eptp(p2m->domain); } =20 -static void ept_enable_hardware_log_dirty(struct p2m_domain *p2m) +static void cf_check ept_enable_hardware_log_dirty(struct p2m_domain *p2m) { struct p2m_domain *hostp2m =3D p2m_get_hostp2m(p2m->domain); =20 @@ -1356,7 +1354,7 @@ static void ept_enable_hardware_log_dirty(struct p2m_= domain *p2m) p2m_unlock(hostp2m); } =20 -static void ept_disable_hardware_log_dirty(struct p2m_domain *p2m) +static void cf_check ept_disable_hardware_log_dirty(struct p2m_domain *p2m) { struct p2m_domain *hostp2m =3D p2m_get_hostp2m(p2m->domain); =20 @@ -1365,7 +1363,7 @@ static void ept_disable_hardware_log_dirty(struct p2m= _domain *p2m) p2m_unlock(hostp2m); } =20 -static void ept_flush_pml_buffers(struct p2m_domain *p2m) +static void cf_check ept_flush_pml_buffers(struct p2m_domain *p2m) { /* Domain must have been paused */ ASSERT(atomic_read(&p2m->domain->pause_count)); diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c index 09c99d78aa40..0a8f64f7046d 100644 --- a/xen/arch/x86/mm/p2m-pt.c +++ b/xen/arch/x86/mm/p2m-pt.c @@ -399,7 +399,7 @@ static int p2m_pt_set_recalc_range(struct p2m_domain *p= 2m, * GFN. Propagate the re-calculation flag down to the next page table level * for entries not involved in the translation of the given GFN. */ -static int do_recalc(struct p2m_domain *p2m, unsigned long gfn) +static int cf_check do_recalc(struct p2m_domain *p2m, unsigned long gfn) { void *table; unsigned long gfn_remainder =3D gfn; @@ -573,7 +573,7 @@ static void check_entry(mfn_t mfn, p2m_type_t new, p2m_= type_t old, } =20 /* Returns: 0 for success, -errno for failure */ -static int +static int cf_check p2m_pt_set_entry(struct p2m_domain *p2m, gfn_t gfn_, mfn_t mfn, unsigned int page_order, p2m_type_t p2mt, p2m_access_t p2= ma, int sve) @@ -774,7 +774,7 @@ p2m_pt_set_entry(struct p2m_domain *p2m, gfn_t gfn_, mf= n_t mfn, return rc; } =20 -static mfn_t +static mfn_t cf_check p2m_pt_get_entry(struct p2m_domain *p2m, gfn_t gfn_, p2m_type_t *t, p2m_access_t *a, p2m_query_t q, unsigned int *page_order, bool_t *sve) @@ -943,8 +943,8 @@ p2m_pt_get_entry(struct p2m_domain *p2m, gfn_t gfn_, return (p2m_is_valid(*t) || p2m_is_any_ram(*t)) ? mfn : INVALID_MFN; } =20 -static void p2m_pt_change_entry_type_global(struct p2m_domain *p2m, - p2m_type_t ot, p2m_type_t nt) +static void cf_check p2m_pt_change_entry_type_global( + struct p2m_domain *p2m, p2m_type_t ot, p2m_type_t nt) { l1_pgentry_t *tab; unsigned long gfn =3D 0; @@ -983,10 +983,9 @@ static void p2m_pt_change_entry_type_global(struct p2m= _domain *p2m, guest_flush_tlb_mask(d, d->dirty_cpumask); } =20 -static int p2m_pt_change_entry_type_range(struct p2m_domain *p2m, - p2m_type_t ot, p2m_type_t nt, - unsigned long first_gfn, - unsigned long last_gfn) +static int cf_check p2m_pt_change_entry_type_range( + struct p2m_domain *p2m, p2m_type_t ot, p2m_type_t nt, + unsigned long first_gfn, unsigned long last_gfn) { unsigned long mask =3D (1 << PAGETABLE_ORDER) - 1; unsigned int i; @@ -1025,7 +1024,7 @@ static int p2m_pt_change_entry_type_range(struct p2m_= domain *p2m, } =20 #if P2M_AUDIT -static long p2m_pt_audit_p2m(struct p2m_domain *p2m) +static long cf_check p2m_pt_audit_p2m(struct p2m_domain *p2m) { unsigned long entry_count =3D 0, pmbad =3D 0; unsigned long mfn, gfn, m2pfn; diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h index 357a8087481e..eaaf0ea0bfec 100644 --- a/xen/include/asm-x86/p2m.h +++ b/xen/include/asm-x86/p2m.h @@ -820,8 +820,8 @@ void np2m_flush_base(struct vcpu *v, unsigned long np2m= _base); void hap_p2m_init(struct p2m_domain *p2m); void shadow_p2m_init(struct p2m_domain *p2m); =20 -void nestedp2m_write_p2m_entry_post(struct p2m_domain *p2m, - unsigned int oflags); +void cf_check nestedp2m_write_p2m_entry_post( + struct p2m_domain *p2m, unsigned int oflags); =20 /* * Alternate p2m: shadow p2m tables used for alternate memory views --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932079; cv=none; d=zohomail.com; s=zohoarc; b=OqbKjppSAx5RgcLvjh7EhLrN/BBmlZowmNGKTeZCw4uwQeRw+E3Q0kV4UOeE0EH7Q9tmedO40xRhuYsEC7F9cfHjMy1n9MPkqhke0VrpScBHMXXBZAvVxqtX90qIpt1M000aNcWuqy5s6NAScW+fSFa9xphNtqBYW3t8CKJ0+xY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932079; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JO1fx+RALu7ddUuh8glBNko3kER1ci3cUuhhhUfIkp0=; b=ZQVIXHW7K/zwUXY0wT1kK+NypF8FwDR77tlGbSb2t9X5zG3g+aAHV+a1HpmZxeztA13TrdfceTyeNWUQVp3kyLbFdXvj4mMIR+BDGTwNdytfSc39coFToFFwgxsdd4BZBMc2C2x4lJ+i2hhdf0Ct6rQNAwhMDMlVQUeOrDYHhpg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932079939519.8781680387434; Fri, 26 Nov 2021 05:07:59 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232844.403994 (Exim 4.92) (envelope-from ) id 1mqax4-0004j2-MP; Fri, 26 Nov 2021 13:07:42 +0000 Received: by outflank-mailman (output) from mailman id 232844.403994; Fri, 26 Nov 2021 13:07:42 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqax3-0004dh-RT; Fri, 26 Nov 2021 13:07:41 +0000 Received: by outflank-mailman (input) for mailman id 232844; Fri, 26 Nov 2021 13:07:38 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaux-0003W9-D8 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:31 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 855b1c0e-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:25 +0100 (CET) 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: 855b1c0e-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931926; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jO+OyPCKEQLuTMUlOqQ6gopRTA925Ji5NSM1T3yoqwY=; b=ObdLe2wZu8uOuaL9AAgDTWTORNdcX+ZGdv949mlOt95n0tMDLj+x7JFM KnDrtTVRJAtf1lCtBZGQKHRCK3l9KmgjfDsbZZvR+Nbw7nPJQTvGhMQMP +Jy4x9n21YmJjCS7ZPtE8wTZp/3PXa75KU8vIFHsl0nNHPLXRmoXe7mhU k=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: iQ0EbjAT+kP/KRVWw/Ea31SAZ+x2zqcw+aSEQQhT8Q7/XUrjt4J8bPnasK+F7yoYWUyIYQeFjR zvOtFSKIcw0IakMq8ANW1DFVR84rUzL6lUmFyNhlIMXIrEBGeRwnhZTGqWbuBpvKs7EcRUM/VB 9i5CqaZTe8eqm75J4/SHzWtq79/kCyokW2iA3WhjAfYa/VMf2bcm5oEelNCnegyEjuU84ZXBUv zQ1GE/zGRPphkK4Evq3kdhvrOKJnBT4W4eI9+yj187vwPL57powQGB+drDwQFEFRuWJjKzN/Xd vEAG+w0gDZC79L8OWe+EvRpw X-SBRS: 5.1 X-MesageID: 59064014 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:f6wbma6QaHTHuQrtNoFmKQxRtPXAchMFZxGqfqrLsTDasY5as4F+v mMbXWDUPfnYYzGhco0iOYjlp0NVvZ/czdNjQAtk/C5kHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Zw ed/jsa9cgcTFfPRieIaehVfVDB6MvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTK6AO 5JANVKDajzDcyVAfVQWL6kylbapi1DgUCR+oW+K8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u10bTDwweNdef4SGY6X/qjejK9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc9NiIdZg5TqN8IGK/hefAUEISXlQbNNz4afaWgcW/ lOOmtroAxlmv7uUVW+R+9+okN+iBcQGBTRcPHFZFGPp9/Gm+dhu1UyXEr6PBYbs1oWtcQwc1 Qxmu8TXa187qccQn5u28lnc695HjsiYF1Vljuk7s4/M0++YWGJHT9D3gbQ4xawZRGp8crVnl CNf8yR5xLpTZaxhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGggfxg5bJtbKGO3P BS7VeZtCHl7ZyDCgUhfOd/ZNijX5fK4SYSNug78MrKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWPnOKrNVNdA9SdhDWx/ne8qRqSwJKGSI+cElJNhMb6elJl1VNk/sHm+HW0 Gu6X0MEmlPziWeecVeBa2x5aaOpVpF69CppMSspNFeu+n4ifYfws/tPK8ppJeEqpL550Pp5b /gZYMHcUP5BfSvKpmYGZp7noY08KBny3VCSPzCoaSQUdoJ7Q1Cb4cftewbirXFcDie+ucYkj aen0wfXHcgKSwh4VZ6EY/Oz1VKh+3ManbsqDUfPJ9BSfmTq8ZRrdHOt3qNmfZlUJEyalDWA1 guQDRMJnsX3otc4oIvTmKSJj4a1CO8iTEBUKHbWsOStPi7A82v9nYIZCLSUfSrQXX/f8bm5Y bkH1On1NfAKkQoYs4d4FLo3n6sy68G2+u1fxwVgWn7Kc06qGvVrJXzfhZtDsahEx7l4vwqqW x3QpokGaOvRYM61QkQMIAcFb/iY0aBGkzbf2v05PUHm6XIl57GAS0hTY0GBhSE1wGGZ62/5L TPNYPIr1jE= IronPort-HdrOrdr: A9a23:hURw5q3dQJfRWkRGY2tgigqjBIokLtp133Aq2lEZdPRUGvb3qy nIpoVj6faUskd2ZJhOo7C90cW7LU80sKQFhLX5Xo3SOzUO2lHYT72KhLGKq1aLdhEWtNQtsZ uIG5IOcOEYZmIasS+V2maF+q4bsbu6zJw= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59064014" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 47/65] x86/irq: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:28 +0000 Message-ID: <20211126123446.32324-48-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932080907100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/hpet.c | 11 ++++++----- xen/arch/x86/i8259.c | 10 +++++----- xen/arch/x86/io_apic.c | 24 ++++++++++++------------ xen/arch/x86/irq.c | 6 +++--- xen/arch/x86/msi.c | 14 +++++++------- xen/common/irq.c | 6 +++--- xen/drivers/passthrough/amd/iommu_init.c | 15 ++++++++------- xen/drivers/passthrough/vtd/iommu.c | 13 +++++++------ xen/include/asm-x86/irq.h | 8 ++++---- xen/include/asm-x86/msi.h | 8 ++++---- xen/include/xen/irq.h | 6 +++--- 11 files changed, 62 insertions(+), 59 deletions(-) diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c index 20fca839907c..dcc9e16693e9 100644 --- a/xen/arch/x86/hpet.c +++ b/xen/arch/x86/hpet.c @@ -256,7 +256,7 @@ static void cf_check hpet_interrupt_handler( ch->event_handler(ch); } =20 -static void hpet_msi_unmask(struct irq_desc *desc) +static void cf_check hpet_msi_unmask(struct irq_desc *desc) { u32 cfg; struct hpet_event_channel *ch =3D desc->action->dev_id; @@ -267,7 +267,7 @@ static void hpet_msi_unmask(struct irq_desc *desc) ch->msi.msi_attrib.host_masked =3D 0; } =20 -static void hpet_msi_mask(struct irq_desc *desc) +static void cf_check hpet_msi_mask(struct irq_desc *desc) { u32 cfg; struct hpet_event_channel *ch =3D desc->action->dev_id; @@ -296,7 +296,7 @@ static int hpet_msi_write(struct hpet_event_channel *ch= , struct msi_msg *msg) return 0; } =20 -static unsigned int hpet_msi_startup(struct irq_desc *desc) +static unsigned int cf_check hpet_msi_startup(struct irq_desc *desc) { hpet_msi_unmask(desc); return 0; @@ -304,14 +304,15 @@ static unsigned int hpet_msi_startup(struct irq_desc = *desc) =20 #define hpet_msi_shutdown hpet_msi_mask =20 -static void hpet_msi_ack(struct irq_desc *desc) +static void cf_check hpet_msi_ack(struct irq_desc *desc) { irq_complete_move(desc); move_native_irq(desc); ack_APIC_irq(); } =20 -static void hpet_msi_set_affinity(struct irq_desc *desc, const cpumask_t *= mask) +static void cf_check hpet_msi_set_affinity( + struct irq_desc *desc, const cpumask_t *mask) { struct hpet_event_channel *ch =3D desc->action->dev_id; struct msi_msg msg =3D ch->msi.msg; diff --git a/xen/arch/x86/i8259.c b/xen/arch/x86/i8259.c index b389bb217622..6b35be10f09a 100644 --- a/xen/arch/x86/i8259.c +++ b/xen/arch/x86/i8259.c @@ -40,18 +40,18 @@ bool bogus_8259A_irq(unsigned int irq) return _mask_and_ack_8259A_irq(irq); } =20 -static void mask_and_ack_8259A_irq(struct irq_desc *desc) +static void cf_check mask_and_ack_8259A_irq(struct irq_desc *desc) { _mask_and_ack_8259A_irq(desc->irq); } =20 -static unsigned int startup_8259A_irq(struct irq_desc *desc) +static unsigned int cf_check startup_8259A_irq(struct irq_desc *desc) { enable_8259A_irq(desc); return 0; /* never anything pending */ } =20 -static void end_8259A_irq(struct irq_desc *desc, u8 vector) +static void cf_check end_8259A_irq(struct irq_desc *desc, u8 vector) { if (!(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS))) enable_8259A_irq(desc); @@ -108,12 +108,12 @@ static void _disable_8259A_irq(unsigned int irq) spin_unlock_irqrestore(&i8259A_lock, flags); } =20 -void disable_8259A_irq(struct irq_desc *desc) +void cf_check disable_8259A_irq(struct irq_desc *desc) { _disable_8259A_irq(desc->irq); } =20 -void enable_8259A_irq(struct irq_desc *desc) +void cf_check enable_8259A_irq(struct irq_desc *desc) { unsigned int mask =3D ~(1 << desc->irq); unsigned long flags; diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 4c5eaef86273..c086f40f6314 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -473,7 +473,7 @@ static void __level_IO_APIC_irq (unsigned int irq) modify_IO_APIC_irq(irq, IO_APIC_REDIR_LEVEL_TRIGGER, 0); } =20 -static void mask_IO_APIC_irq(struct irq_desc *desc) +static void cf_check mask_IO_APIC_irq(struct irq_desc *desc) { unsigned long flags; =20 @@ -482,7 +482,7 @@ static void mask_IO_APIC_irq(struct irq_desc *desc) spin_unlock_irqrestore(&ioapic_lock, flags); } =20 -static void unmask_IO_APIC_irq(struct irq_desc *desc) +static void cf_check unmask_IO_APIC_irq(struct irq_desc *desc) { unsigned long flags; =20 @@ -567,7 +567,7 @@ static void clear_IO_APIC (void) } } =20 -static void +static void cf_check set_ioapic_affinity_irq(struct irq_desc *desc, const cpumask_t *mask) { unsigned int dest; @@ -1547,7 +1547,7 @@ static int __init timer_irq_works(void) * This is not complete - we should be able to fake * an edge even if it isn't on the 8259A... */ -static unsigned int startup_edge_ioapic_irq(struct irq_desc *desc) +static unsigned int cf_check startup_edge_ioapic_irq(struct irq_desc *desc) { int was_pending =3D 0; unsigned long flags; @@ -1569,7 +1569,7 @@ static unsigned int startup_edge_ioapic_irq(struct ir= q_desc *desc) * interrupt for real. This prevents IRQ storms from unhandled * devices. */ -static void ack_edge_ioapic_irq(struct irq_desc *desc) +static void cf_check ack_edge_ioapic_irq(struct irq_desc *desc) { irq_complete_move(desc); move_native_irq(desc); @@ -1594,7 +1594,7 @@ static void ack_edge_ioapic_irq(struct irq_desc *desc) * generic IRQ layer and by the fact that an unacked local * APIC does not accept IRQs. */ -static unsigned int startup_level_ioapic_irq(struct irq_desc *desc) +static unsigned int cf_check startup_level_ioapic_irq(struct irq_desc *des= c) { unmask_IO_APIC_irq(desc); =20 @@ -1652,7 +1652,7 @@ static bool io_apic_level_ack_pending(unsigned int ir= q) return 0; } =20 -static void mask_and_ack_level_ioapic_irq(struct irq_desc *desc) +static void cf_check mask_and_ack_level_ioapic_irq(struct irq_desc *desc) { unsigned long v; int i; @@ -1702,7 +1702,7 @@ static void mask_and_ack_level_ioapic_irq(struct irq_= desc *desc) } } =20 -static void end_level_ioapic_irq_old(struct irq_desc *desc, u8 vector) +static void cf_check end_level_ioapic_irq_old(struct irq_desc *desc, u8 ve= ctor) { if ( directed_eoi_enabled ) { @@ -1723,7 +1723,7 @@ static void end_level_ioapic_irq_old(struct irq_desc = *desc, u8 vector) unmask_IO_APIC_irq(desc); } =20 -static void end_level_ioapic_irq_new(struct irq_desc *desc, u8 vector) +static void cf_check end_level_ioapic_irq_new(struct irq_desc *desc, u8 ve= ctor) { /* * It appears there is an erratum which affects at least version 0x11 @@ -1807,7 +1807,7 @@ static inline void init_IO_APIC_traps(void) make_8259A_irq(irq); } =20 -static void enable_lapic_irq(struct irq_desc *desc) +static void cf_check enable_lapic_irq(struct irq_desc *desc) { unsigned long v; =20 @@ -1815,7 +1815,7 @@ static void enable_lapic_irq(struct irq_desc *desc) apic_write(APIC_LVT0, v & ~APIC_LVT_MASKED); } =20 -static void disable_lapic_irq(struct irq_desc *desc) +static void cf_check disable_lapic_irq(struct irq_desc *desc) { unsigned long v; =20 @@ -1823,7 +1823,7 @@ static void disable_lapic_irq(struct irq_desc *desc) apic_write(APIC_LVT0, v | APIC_LVT_MASKED); } =20 -static void ack_lapic_irq(struct irq_desc *desc) +static void cf_check ack_lapic_irq(struct irq_desc *desc) { ack_APIC_irq(); } diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 61e09a356f97..285ac399fbfd 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -468,7 +468,7 @@ int __init init_irq_data(void) return 0; } =20 -static void ack_none(struct irq_desc *desc) +static void cf_check ack_none(struct irq_desc *desc) { ack_bad_irq(desc->irq); } @@ -832,7 +832,7 @@ static void send_cleanup_vector(struct irq_desc *desc) desc->arch.move_in_progress =3D 0; } =20 -void irq_complete_move(struct irq_desc *desc) +void cf_check irq_complete_move(struct irq_desc *desc) { unsigned vector, me; =20 @@ -1086,7 +1086,7 @@ bool cpu_has_pending_apic_eoi(void) return pending_eoi_sp(this_cpu(pending_eoi)) !=3D 0; } =20 -void end_nonmaskable_irq(struct irq_desc *desc, uint8_t vector) +void cf_check end_nonmaskable_irq(struct irq_desc *desc, uint8_t vector) { struct pending_eoi *peoi =3D this_cpu(pending_eoi); unsigned int sp =3D pending_eoi_sp(peoi); diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index 77a4fbf13f9f..b32b1378f84e 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -241,7 +241,7 @@ static int write_msi_msg(struct msi_desc *entry, struct= msi_msg *msg) return 0; } =20 -void set_msi_affinity(struct irq_desc *desc, const cpumask_t *mask) +void cf_check set_msi_affinity(struct irq_desc *desc, const cpumask_t *mas= k) { struct msi_msg msg; unsigned int dest; @@ -416,14 +416,14 @@ static int msi_get_mask_bit(const struct msi_desc *en= try) return -1; } =20 -void mask_msi_irq(struct irq_desc *desc) +void cf_check mask_msi_irq(struct irq_desc *desc) { if ( unlikely(!msi_set_mask_bit(desc, 1, desc->msi_desc->msi_attrib.guest_maske= d)) ) BUG_ON(!(desc->status & IRQ_DISABLED)); } =20 -void unmask_msi_irq(struct irq_desc *desc) +void cf_check unmask_msi_irq(struct irq_desc *desc) { if ( unlikely(!msi_set_mask_bit(desc, 0, desc->msi_desc->msi_attrib.guest_maske= d)) ) @@ -435,26 +435,26 @@ void guest_mask_msi_irq(struct irq_desc *desc, bool m= ask) msi_set_mask_bit(desc, desc->msi_desc->msi_attrib.host_masked, mask); } =20 -static unsigned int startup_msi_irq(struct irq_desc *desc) +static unsigned int cf_check startup_msi_irq(struct irq_desc *desc) { if ( unlikely(!msi_set_mask_bit(desc, 0, !!(desc->status & IRQ_GUEST))= ) ) WARN(); return 0; } =20 -static void shutdown_msi_irq(struct irq_desc *desc) +static void cf_check shutdown_msi_irq(struct irq_desc *desc) { if ( unlikely(!msi_set_mask_bit(desc, 1, 1)) ) BUG_ON(!(desc->status & IRQ_DISABLED)); } =20 -void ack_nonmaskable_msi_irq(struct irq_desc *desc) +void cf_check ack_nonmaskable_msi_irq(struct irq_desc *desc) { irq_complete_move(desc); move_native_irq(desc); } =20 -static void ack_maskable_msi_irq(struct irq_desc *desc) +static void cf_check ack_maskable_msi_irq(struct irq_desc *desc) { ack_nonmaskable_msi_irq(desc); ack_APIC_irq(); /* ACKTYPE_NONE */ diff --git a/xen/common/irq.c b/xen/common/irq.c index f42512db33b7..727cf8bd22da 100644 --- a/xen/common/irq.c +++ b/xen/common/irq.c @@ -27,15 +27,15 @@ int init_one_irq_desc(struct irq_desc *desc) return err; } =20 -void no_action(int cpl, void *dev_id, struct cpu_user_regs *regs) +void cf_check no_action(int cpl, void *dev_id, struct cpu_user_regs *regs) { } =20 -void irq_actor_none(struct irq_desc *desc) +void cf_check irq_actor_none(struct irq_desc *desc) { } =20 -unsigned int irq_startup_none(struct irq_desc *desc) +unsigned int cf_check irq_startup_none(struct irq_desc *desc) { return 0; } diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthr= ough/amd/iommu_init.c index d2ad282e93d3..657c7f619a51 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -410,7 +410,7 @@ static void amd_iommu_msi_enable(struct amd_iommu *iomm= u, int flag) PCI_FUNC(iommu->bdf), iommu->msi.msi_attrib.pos, flag= ); } =20 -static void iommu_msi_unmask(struct irq_desc *desc) +static void cf_check iommu_msi_unmask(struct irq_desc *desc) { unsigned long flags; struct amd_iommu *iommu =3D desc->action->dev_id; @@ -421,7 +421,7 @@ static void iommu_msi_unmask(struct irq_desc *desc) iommu->msi.msi_attrib.host_masked =3D 0; } =20 -static void iommu_msi_mask(struct irq_desc *desc) +static void cf_check iommu_msi_mask(struct irq_desc *desc) { unsigned long flags; struct amd_iommu *iommu =3D desc->action->dev_id; @@ -434,13 +434,13 @@ static void iommu_msi_mask(struct irq_desc *desc) iommu->msi.msi_attrib.host_masked =3D 1; } =20 -static unsigned int iommu_msi_startup(struct irq_desc *desc) +static unsigned int cf_check iommu_msi_startup(struct irq_desc *desc) { iommu_msi_unmask(desc); return 0; } =20 -static void iommu_msi_end(struct irq_desc *desc, u8 vector) +static void cf_check iommu_msi_end(struct irq_desc *desc, u8 vector) { iommu_msi_unmask(desc); end_nonmaskable_irq(desc, vector); @@ -458,14 +458,14 @@ static hw_irq_controller iommu_msi_type =3D { .set_affinity =3D set_msi_affinity, }; =20 -static unsigned int iommu_maskable_msi_startup(struct irq_desc *desc) +static unsigned int cf_check iommu_maskable_msi_startup(struct irq_desc *d= esc) { iommu_msi_unmask(desc); unmask_msi_irq(desc); return 0; } =20 -static void iommu_maskable_msi_shutdown(struct irq_desc *desc) +static void cf_check iommu_maskable_msi_shutdown(struct irq_desc *desc) { mask_msi_irq(desc); iommu_msi_mask(desc); @@ -489,7 +489,8 @@ static hw_irq_controller iommu_maskable_msi_type =3D { .set_affinity =3D set_msi_affinity, }; =20 -static void set_x2apic_affinity(struct irq_desc *desc, const cpumask_t *ma= sk) +static void cf_check set_x2apic_affinity( + struct irq_desc *desc, const cpumask_t *mask) { struct amd_iommu *iommu =3D desc->action->dev_id; unsigned int dest =3D set_desc_affinity(desc, mask); diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/= vtd/iommu.c index ad3abdcdacfd..708ba2b31565 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1096,7 +1096,7 @@ static void cf_check iommu_page_fault( tasklet_schedule(&vtd_fault_tasklet); } =20 -static void dma_msi_unmask(struct irq_desc *desc) +static void cf_check dma_msi_unmask(struct irq_desc *desc) { struct vtd_iommu *iommu =3D desc->action->dev_id; unsigned long flags; @@ -1111,7 +1111,7 @@ static void dma_msi_unmask(struct irq_desc *desc) iommu->msi.msi_attrib.host_masked =3D 0; } =20 -static void dma_msi_mask(struct irq_desc *desc) +static void cf_check dma_msi_mask(struct irq_desc *desc) { unsigned long flags; struct vtd_iommu *iommu =3D desc->action->dev_id; @@ -1126,26 +1126,27 @@ static void dma_msi_mask(struct irq_desc *desc) iommu->msi.msi_attrib.host_masked =3D 1; } =20 -static unsigned int dma_msi_startup(struct irq_desc *desc) +static unsigned int cf_check dma_msi_startup(struct irq_desc *desc) { dma_msi_unmask(desc); return 0; } =20 -static void dma_msi_ack(struct irq_desc *desc) +static void cf_check dma_msi_ack(struct irq_desc *desc) { irq_complete_move(desc); dma_msi_mask(desc); move_masked_irq(desc); } =20 -static void dma_msi_end(struct irq_desc *desc, u8 vector) +static void cf_check dma_msi_end(struct irq_desc *desc, u8 vector) { dma_msi_unmask(desc); end_nonmaskable_irq(desc, vector); } =20 -static void dma_msi_set_affinity(struct irq_desc *desc, const cpumask_t *m= ask) +static void cf_check dma_msi_set_affinity( + struct irq_desc *desc, const cpumask_t *mask) { struct msi_msg msg; unsigned int dest; diff --git a/xen/include/asm-x86/irq.h b/xen/include/asm-x86/irq.h index b3f49abc5556..76e6ed6d60aa 100644 --- a/xen/include/asm-x86/irq.h +++ b/xen/include/asm-x86/irq.h @@ -111,8 +111,8 @@ void alloc_direct_apic_vector( =20 void do_IRQ(struct cpu_user_regs *regs); =20 -void disable_8259A_irq(struct irq_desc *); -void enable_8259A_irq(struct irq_desc *); +void cf_check disable_8259A_irq(struct irq_desc *); +void cf_check enable_8259A_irq(struct irq_desc *); int i8259A_irq_pending(unsigned int irq); void mask_8259A(void); void unmask_8259A(void); @@ -173,7 +173,7 @@ int create_irq(nodeid_t node, bool grant_access); void destroy_irq(unsigned int irq); int assign_irq_vector(int irq, const cpumask_t *); =20 -extern void irq_complete_move(struct irq_desc *); +void cf_check irq_complete_move(struct irq_desc *); =20 extern struct irq_desc *irq_desc; =20 @@ -187,7 +187,7 @@ void move_masked_irq(struct irq_desc *); =20 int bind_irq_vector(int irq, int vector, const cpumask_t *); =20 -void end_nonmaskable_irq(struct irq_desc *, uint8_t vector); +void cf_check end_nonmaskable_irq(struct irq_desc *, uint8_t vector); void irq_set_affinity(struct irq_desc *, const cpumask_t *mask); =20 int init_domain_irq_mapping(struct domain *); diff --git a/xen/include/asm-x86/msi.h b/xen/include/asm-x86/msi.h index e228b0f3f344..117379318f2c 100644 --- a/xen/include/asm-x86/msi.h +++ b/xen/include/asm-x86/msi.h @@ -247,10 +247,10 @@ void early_msi_init(void); void msi_compose_msg(unsigned vector, const cpumask_t *mask, struct msi_msg *msg); void __msi_set_enable(u16 seg, u8 bus, u8 slot, u8 func, int pos, int enab= le); -void mask_msi_irq(struct irq_desc *); -void unmask_msi_irq(struct irq_desc *); +void cf_check mask_msi_irq(struct irq_desc *); +void cf_check unmask_msi_irq(struct irq_desc *); void guest_mask_msi_irq(struct irq_desc *, bool mask); -void ack_nonmaskable_msi_irq(struct irq_desc *); -void set_msi_affinity(struct irq_desc *, const cpumask_t *); +void cf_check ack_nonmaskable_msi_irq(struct irq_desc *); +void cf_check set_msi_affinity(struct irq_desc *, const cpumask_t *); =20 #endif /* __ASM_MSI_H */ diff --git a/xen/include/xen/irq.h b/xen/include/xen/irq.h index 43d567fe445c..d8beadd16b9f 100644 --- a/xen/include/xen/irq.h +++ b/xen/include/xen/irq.h @@ -116,9 +116,9 @@ extern int request_irq(unsigned int irq, unsigned int i= rqflags, const char * devname, void *dev_id); =20 extern hw_irq_controller no_irq_type; -extern void no_action(int cpl, void *dev_id, struct cpu_user_regs *regs); -extern unsigned int irq_startup_none(struct irq_desc *); -extern void irq_actor_none(struct irq_desc *); +void cf_check no_action(int cpl, void *dev_id, struct cpu_user_regs *regs); +unsigned int cf_check irq_startup_none(struct irq_desc *); +void cf_check irq_actor_none(struct irq_desc *); #define irq_shutdown_none irq_actor_none #define irq_disable_none irq_actor_none #define irq_enable_none irq_actor_none --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932092; cv=none; d=zohomail.com; s=zohoarc; b=SKKoJUnmyrWq7L4lk193elQdxZxk/624Q/dIy9sSVEhtZBdlBOjm1vwIk8MXKi73w46NMvg97IQo0OWapfCz6pt7lNLyboItVW+kAiVqNGxedeTjkNtTtk5wv1ym6iVaC9OGMmrIPbubb6ILppCJ72WOHF1LEgQs/KDuoqlX7ZE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932092; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=YiseqbO8owqUS+4IsubHrH4Ps/UmzSxNszasWttowus=; b=A7Nd7y/tE8wNoCXhOApdnPWrzw+nl9rr7CRAd/Y5nrgeiKFqIQCP1LpFDnZrOufjAuOdNQdg8pFO2LQDeGMhxBKFkk8J24t3Ux/GoWvRLMFRye2cvfYyS4468DsRuyxGEX1/CmGopjBLwOtjJvGDVW2SFMY+xIunt6VhlaFCEtE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 16379320929681010.0914794038483; Fri, 26 Nov 2021 05:08:12 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232861.404041 (Exim 4.92) (envelope-from ) id 1mqaxG-0007cl-Jw; Fri, 26 Nov 2021 13:07:54 +0000 Received: by outflank-mailman (output) from mailman id 232861.404041; Fri, 26 Nov 2021 13:07:54 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxG-0007Yf-4b; Fri, 26 Nov 2021 13:07:54 +0000 Received: by outflank-mailman (input) for mailman id 232861; Fri, 26 Nov 2021 13:07:52 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaui-0003W9-Jl for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:16 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7efb2e6d-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:15 +0100 (CET) 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: 7efb2e6d-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931914; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AtKkHK4Fn9Tibx+JcfjODOJaD4dj5WX9w5aEerifsuI=; b=Bqi5CYy77kAnfoq3UW9ww0q/T7daq4cURakCvLeNH9pHNPMGT3RtyF2C 4GWfCu2VVGNzGNF5vIkc1PMsg0FCgW4mi0eGvXu+OT49P4jmypZO3RIb4 1MAW+MIhiiP0WLXjE7nlfj9AlaBYEzD8+IUvNaaOIFCRI0Pce85VdzxAE E=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: pIQJ7FhTgUrM8YBosF6BU8m+O0b8OBTcvCK/9DljwUQNqpG9tdw/V9MsO6XszAgnd+tkHMgnfy 0jn94jvzFviXY1z7iokKWf5XE/pH0ymMXgr8uTyMaPembhSTMTGJTjI6B6A62fUHNy/ELn+nNC HLXtwRtZDQQgRI8mU+U17PdLTkm3m5gkNFgl9uJZ7ZuTqrjLAX4rNaHLcJuvrA/AdQkddp4RPy DkdkW9pI3lFuCETeK9GDdbtD11Lz63U/icDd5RHJiD2QSq00cOfT5ez9f8mme3t61w0uvJZNKo DQUqXwa/m4voj81LharwsjP2 X-SBRS: 5.1 X-MesageID: 58193791 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:0JNBl6tYFeKRys/g1YzV9i5MaufnVJtZMUV32f8akzHdYApBsoF/q tZmKWvXOf+DNmb1eYp3aIS080tV7ZKEmN5nGQs+pCs3RHsT+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ NpllLi9UwwXEvD1nssTUkljLyBvJolFweqSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5NIMmU+NXwsZTVsZWZLCpwQx965g0DDKiZkil+H9fEotj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO8we5RuG9IaJ2gC2CGlUdQJAeccCt/ZjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9YNc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:5Bs6uKCqFNqtR3blHemU55DYdb4zR+YMi2TC1yhKJyC9Ffbo7v xG/c5rsyMc5wxwZJhNo7y90ey7MBbhHP1OkO4s1NWZLWrbUQKTRekIh+bfKn/baknDH4ZmpN 9dmsNFaeEYY2IUsS+D2njbL+od X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193791" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 48/65] x86/aepi: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:29 +0000 Message-ID: <20211126123446.32324-49-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932094912100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu I was very surprised when encountering this... AML and EFI are bad enough, but why on earth do we need yet another firmware provided arbitrary turning machine to be executing in Xen's context. --- xen/drivers/acpi/apei/apei-base.c | 32 ++++++++++---------- xen/drivers/acpi/apei/apei-internal.h | 20 ++++++------ xen/drivers/acpi/apei/erst.c | 57 +++++++++++++++++--------------= ---- 3 files changed, 54 insertions(+), 55 deletions(-) diff --git a/xen/drivers/acpi/apei/apei-base.c b/xen/drivers/acpi/apei/apei= -base.c index 6f81e7fa366a..de75c1cef992 100644 --- a/xen/drivers/acpi/apei/apei-base.c +++ b/xen/drivers/acpi/apei/apei-base.c @@ -80,8 +80,8 @@ int __apei_exec_read_register(struct acpi_whea_header *en= try, u64 *val) return 0; } =20 -int apei_exec_read_register(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +int cf_check apei_exec_read_register( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { int rc; u64 val =3D 0; @@ -94,8 +94,8 @@ int apei_exec_read_register(struct apei_exec_context *ctx, return 0; } =20 -int apei_exec_read_register_value(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +int cf_check apei_exec_read_register_value( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { int rc; =20 @@ -126,14 +126,14 @@ int __apei_exec_write_register(struct acpi_whea_heade= r *entry, u64 val) return rc; } =20 -int apei_exec_write_register(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +int cf_check apei_exec_write_register( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { return __apei_exec_write_register(entry, ctx->value); } =20 -int apei_exec_write_register_value(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +int cf_check apei_exec_write_register_value( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { int rc; =20 @@ -143,8 +143,8 @@ int apei_exec_write_register_value(struct apei_exec_con= text *ctx, return rc; } =20 -int apei_exec_noop(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +int cf_check apei_exec_noop( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { return 0; } @@ -230,9 +230,9 @@ static int __init apei_exec_for_each_entry(struct apei_= exec_context *ctx, return 0; } =20 -static int __init pre_map_gar_callback(struct apei_exec_context *ctx, - struct acpi_whea_header *entry, - void *data) +static int __init cf_check pre_map_gar_callback( + struct apei_exec_context *ctx, struct acpi_whea_header *entry, + void *data) { u8 ins =3D entry->instruction; =20 @@ -259,9 +259,9 @@ int __init apei_exec_pre_map_gars(struct apei_exec_cont= ext *ctx) return rc; } =20 -static int __init post_unmap_gar_callback(struct apei_exec_context *ctx, - struct acpi_whea_header *entry, - void *data) +static int __init cf_check post_unmap_gar_callback( + struct apei_exec_context *ctx, struct acpi_whea_header *entry, + void *data) { u8 ins =3D entry->instruction; =20 diff --git a/xen/drivers/acpi/apei/apei-internal.h b/xen/drivers/acpi/apei/= apei-internal.h index b813d55b92a9..360e94b9c877 100644 --- a/xen/drivers/acpi/apei/apei-internal.h +++ b/xen/drivers/acpi/apei/apei-internal.h @@ -68,16 +68,16 @@ static inline int apei_exec_run_optional(struct apei_ex= ec_context *ctx, u8 actio =20 int __apei_exec_read_register(struct acpi_whea_header *entry, u64 *val); int __apei_exec_write_register(struct acpi_whea_header *entry, u64 val); -int apei_exec_read_register(struct apei_exec_context *ctx, - struct acpi_whea_header *entry); -int apei_exec_read_register_value(struct apei_exec_context *ctx, - struct acpi_whea_header *entry); -int apei_exec_write_register(struct apei_exec_context *ctx, - struct acpi_whea_header *entry); -int apei_exec_write_register_value(struct apei_exec_context *ctx, - struct acpi_whea_header *entry); -int apei_exec_noop(struct apei_exec_context *ctx, - struct acpi_whea_header *entry); +int cf_check apei_exec_read_register( + struct apei_exec_context *ctx, struct acpi_whea_header *entry); +int cf_check apei_exec_read_register_value( + struct apei_exec_context *ctx, struct acpi_whea_header *entry); +int cf_check apei_exec_write_register( + struct apei_exec_context *ctx, struct acpi_whea_header *entry); +int cf_check apei_exec_write_register_value( + struct apei_exec_context *ctx, struct acpi_whea_header *entry); +int cf_check apei_exec_noop( + struct apei_exec_context *ctx, struct acpi_whea_header *entry); int apei_exec_pre_map_gars(struct apei_exec_context *ctx); int apei_exec_post_unmap_gars(struct apei_exec_context *ctx); =20 diff --git a/xen/drivers/acpi/apei/erst.c b/xen/drivers/acpi/apei/erst.c index c5df512b9838..40d8f00270d0 100644 --- a/xen/drivers/acpi/apei/erst.c +++ b/xen/drivers/acpi/apei/erst.c @@ -114,40 +114,40 @@ static int erst_timedout(u64 *t, u64 spin_unit) return 0; } =20 -static int erst_exec_load_var1(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_load_var1( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { return __apei_exec_read_register(entry, &ctx->var1); } =20 -static int erst_exec_load_var2(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_load_var2( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { return __apei_exec_read_register(entry, &ctx->var2); } =20 -static int erst_exec_store_var1(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_store_var1( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { return __apei_exec_write_register(entry, ctx->var1); } =20 -static int erst_exec_add(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_add( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { ctx->var1 +=3D ctx->var2; return 0; } =20 -static int erst_exec_subtract(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_subtract( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { ctx->var1 -=3D ctx->var2; return 0; } =20 -static int erst_exec_add_value(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_add_value( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { int rc; u64 val; @@ -160,8 +160,8 @@ static int erst_exec_add_value(struct apei_exec_context= *ctx, return rc; } =20 -static int erst_exec_subtract_value(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_subtract_value( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { int rc; u64 val; @@ -174,8 +174,8 @@ static int erst_exec_subtract_value(struct apei_exec_co= ntext *ctx, return rc; } =20 -static int erst_exec_stall(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_stall( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { udelay((ctx->var1 > FIRMWARE_MAX_STALL) ?=20 FIRMWARE_MAX_STALL :=20 @@ -183,8 +183,8 @@ static int erst_exec_stall(struct apei_exec_context *ct= x, return 0; } =20 -static int erst_exec_stall_while_true(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_stall_while_true( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { int rc; u64 val; @@ -205,9 +205,8 @@ static int erst_exec_stall_while_true(struct apei_exec_= context *ctx, return 0; } =20 -static int erst_exec_skip_next_instruction_if_true( - struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_skip_next_instruction_if_true( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { int rc; u64 val; @@ -223,27 +222,27 @@ static int erst_exec_skip_next_instruction_if_true( return 0; } =20 -static int erst_exec_goto(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_goto( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { ctx->ip =3D ctx->value; return APEI_EXEC_SET_IP; } =20 -static int erst_exec_set_src_address_base(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_set_src_address_base( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { return __apei_exec_read_register(entry, &ctx->src_base); } =20 -static int erst_exec_set_dst_address_base(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_set_dst_address_base( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { return __apei_exec_read_register(entry, &ctx->dst_base); } =20 -static int erst_exec_move_data(struct apei_exec_context *ctx, - struct acpi_whea_header *entry) +static int cf_check erst_exec_move_data( + struct apei_exec_context *ctx, struct acpi_whea_header *entry) { int rc; u64 offset; --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932111; cv=none; d=zohomail.com; s=zohoarc; b=YqQZlz5/58I0fHYFYx2PYq8Kg0AuZkHuDKxQe2ODm9Ei4hsTNdLSox7hgF26C9IpRGSNHDxxiTomjuheLilwCSEgoP87eMBmfzwJtaH2s9nNYTY1MkKuRSanTXs5M/5olnvX66x1TqNDTPzJpHz7c3OXn4M5w46X0SB5WnirwzQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932111; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=eqO0nEOeCxzfuS7ZOb8d3Pb/T9oEf2D3y5tX/EkeRRM=; b=kX0yTD3K+OM9ep1PwJvokkEvUFylyreTri8VFCreoib6qDc+zNA35bo3C+I4JaJsWb0XryhMfxb1vNNPCmYbScNziUnEMbOIdN3HigQWf4GCFXhGmHyNgUC+6NC5VmCckpdfQvDQyO0g7owMi0YcBXrzdGIhDrb0OYU5zPG8bWU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932111279180.87652931869388; Fri, 26 Nov 2021 05:08:31 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232888.404132 (Exim 4.92) (envelope-from ) id 1mqaxa-0003eS-Et; Fri, 26 Nov 2021 13:08:14 +0000 Received: by outflank-mailman (output) from mailman id 232888.404132; Fri, 26 Nov 2021 13:08:14 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxZ-0003Y5-Ai; Fri, 26 Nov 2021 13:08:13 +0000 Received: by outflank-mailman (input) for mailman id 232888; Fri, 26 Nov 2021 13:08:10 +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 1mqav0-0002zD-7P for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:34 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 891388cb-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:33 +0100 (CET) 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: 891388cb-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931933; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2MzOrJ78BogsSqIrTSJWk1tHUhlV8OhibZYGX9BCTw0=; b=Zut86zSFbISjSTEUM49c3TAerWLnbQ6vqUtqAMnPpO/JLYBhr79JjbbO 4SUtVuRRmnHYg4EPWtie7Si80BGqbL1zm8rBW/KNXEDqTQV4Gd2Z0PXxn gJxeGYhyIw2zDeQ/tbujWt/J+50vIVHdZDQXQQQduXq8kzddApsr1dsTO E=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 2D0+zxpoXeTsNce9F3bY+AfJtSywlElzy1dSTtNoDLadx2dNuFopbHsfi0Vxp6unCB/RfMTC7U ek4qKV4Su8ZeBkRXPQ9WNE3Cvasyc8hmbruIV8bxO0V7Qro9SrOverOj+gdOGTXFt+DZ/Z4Iv6 QQdhZ+iB1MAg5rPJIdiw+LkogCRPDEUn1YCBvV4wqDhIANZUIfDrdNncclDFx7qpp2AgepJfSJ xgAR54rPwjKTBrx/LMJsPt8SdPqK+0jjE76afd7d3r1GzlBIjZHV7SugcKxntCCRbjzyb/l61t HYTHHgfEp1zPw51+rsRFR4mn X-SBRS: 5.1 X-MesageID: 58696001 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:3QtIjqxKyXKoaLxQpH56t+f6wSrEfRIJ4+MujC+fZmUNrF6WrkUAz mVMWW2GOa2KMGOkLY10bo208BxV68PSztQ2TFNr/yAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAuLeNYYH1500s6wrRn2tQAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt8hzk 5IUhL62cydzY/Xgqc0jXRYJTD4raMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVoru0lINPmI8U0vXZ4wCuCJf0nXYrCU+PB4towMDIY25AQTKiGP 5NxhTxHVEudOhJtCggsVNFkuveGi3nTeQV6gQfAzUYwyzeKl1EguFT3C/LKfvSaSMMTmVyXz krk1WnkBhARNPSE1CGItHmrg4fnjS79HY4fCrC83vprm0GIgHweDgUMUlm2quX/jVSxM++zM GRNpHBo9/JrshX2EJ+tBHVUvUJooDYEWYEXStwY7jutkPeMzzewOGYLH2FePYlOWNANeRQm0 VqAntXMDDNpsaGIRX/1yop4vQ9eKgBOczZcOHZsoR8tpoC6/dpt1k6nosNLSfbt1rXI9SfML ydmRcTUr5EaloY12qqy5jgraBr898GSHmbZCug6N19JDz+Vhqb5OORECnCBtJ6sybp1qHHa5 xDofODEsYgz4WmlznDlfQn0NOjBCwy5GDPdm0VzOJIq6i6g/XWuFagJvmohdBk0bZdYJ2OyC KM2he+3zMQIVJdNRfUqC79d9uxwlfSwfTgbfqy8giVyjmhZK1bcoXAGib+41GHxikk8+ZzTy r/AGftA+U0yUPw9pBLvHr91+eZymkgWmDOCLbimnk/P+efPOxaopUItbQLmghYRt/jf/m04M r93aqO39vmoeLGkP3SMr9dMdQtiwLpSLcmelvG7v9WremJOcFzNwdeIqV/4U4A6zalTiMnS+ XSxBh1RxFbl3CWVIgSWcHFzLrjoWM8n/348OCUtO3eu2mQiPtnzvPtOKcNvcOl17vFnwN51U +IBJ5eKDMNQR2mV4D8ad5T88tBvLUz5mQKUMiO5SzEjZJo8FRfR89rpc1K3pikDBya6r+Ukp Lik2l+JSJYPXV06Xs3XdOiu3xW6un1EwLB+WE7BI99yfkTw8dc1d3yt36Fve8xVcEfN3DqX0 QqSECw0n+iVrt9n6sTNiICFs5ytT7l0EH1FEjSJ9r2xLyTboDaumNcSTOaScDnBf2ro46H+N /5NxvTxPfBbzlZHt41wT+Riwa4kvoa9orZbykJvHWnRbkTtAbRleyHU0c5Kv6xL57lYpQrpB R7fpogEYe2EaJH/DVocBAs5deDSh/gblw7b4ekxPEintjR8+6CKUBkKMhSB4MCHwGCZ7G/xL T8dhfMr IronPort-HdrOrdr: A9a23:8+LOtqlB0wn00/6dVmmWJt3E8yTpDfIU3DAbv31ZSRFFG/Fxl6 iV8sjzsiWE8Qr5OUtQ/+xoV5PhfZqxz/JICMwqTNKftWrdyQyVxeNZnOjfKlTbckWUnINgPO VbAsxD4bXLfCBHZK3BgTVQfexO/DD+ytHLudvj X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58696001" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 49/65] x86/psr: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:30 +0000 Message-ID: <20211126123446.32324-50-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932112111100005 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/psr.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index 6c9cabf3843d..ccb761998f9a 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -282,7 +282,7 @@ static enum psr_feat_type psr_type_to_feat_type(enum ps= r_type type) } =20 /* Implementation of allocation features' functions. */ -static bool cat_check_cbm(const struct feat_node *feat, uint32_t *val) +static bool cf_check cat_check_cbm(const struct feat_node *feat, uint32_t = *val) { unsigned int first_bit, zero_bit; unsigned int cbm_len =3D feat->cat.cbm_len; @@ -417,8 +417,8 @@ static bool mba_init_feature(const struct cpuid_leaf *r= egs, return true; } =20 -static bool cat_get_feat_info(const struct feat_node *feat, - uint32_t data[], unsigned int array_len) +static bool cf_check cat_get_feat_info( + const struct feat_node *feat, uint32_t data[], unsigned int array_len) { if ( array_len !=3D PSR_INFO_ARRAY_SIZE ) return false; @@ -431,8 +431,8 @@ static bool cat_get_feat_info(const struct feat_node *f= eat, } =20 /* L3 CAT props */ -static void l3_cat_write_msr(unsigned int cos, uint32_t val, - enum psr_type type) +static void cf_check l3_cat_write_msr( + unsigned int cos, uint32_t val, enum psr_type type) { wrmsrl(MSR_IA32_PSR_L3_MASK(cos), val); } @@ -447,8 +447,8 @@ static const struct feat_props l3_cat_props =3D { }; =20 /* L3 CDP props */ -static bool l3_cdp_get_feat_info(const struct feat_node *feat, - uint32_t data[], uint32_t array_len) +static bool cf_check l3_cdp_get_feat_info( + const struct feat_node *feat, uint32_t data[], uint32_t array_len) { if ( !cat_get_feat_info(feat, data, array_len) ) return false; @@ -458,8 +458,8 @@ static bool l3_cdp_get_feat_info(const struct feat_node= *feat, return true; } =20 -static void l3_cdp_write_msr(unsigned int cos, uint32_t val, - enum psr_type type) +static void cf_check l3_cdp_write_msr( + unsigned int cos, uint32_t val, enum psr_type type) { wrmsrl(((type =3D=3D PSR_TYPE_L3_DATA) ? MSR_IA32_PSR_L3_MASK_DATA(cos) : @@ -478,8 +478,8 @@ static const struct feat_props l3_cdp_props =3D { }; =20 /* L2 CAT props */ -static void l2_cat_write_msr(unsigned int cos, uint32_t val, - enum psr_type type) +static void cf_check l2_cat_write_msr( + unsigned int cos, uint32_t val, enum psr_type type) { wrmsrl(MSR_IA32_PSR_L2_MASK(cos), val); } @@ -494,8 +494,8 @@ static const struct feat_props l2_cat_props =3D { }; =20 /* MBA props */ -static bool mba_get_feat_info(const struct feat_node *feat, - uint32_t data[], unsigned int array_len) +static bool cf_check mba_get_feat_info( + const struct feat_node *feat, uint32_t data[], unsigned int array_len) { ASSERT(array_len =3D=3D PSR_INFO_ARRAY_SIZE); =20 @@ -508,13 +508,14 @@ static bool mba_get_feat_info(const struct feat_node = *feat, return true; } =20 -static void mba_write_msr(unsigned int cos, uint32_t val, - enum psr_type type) +static void cf_check mba_write_msr( + unsigned int cos, uint32_t val, enum psr_type type) { wrmsrl(MSR_IA32_PSR_MBA_MASK(cos), val); } =20 -static bool mba_sanitize_thrtl(const struct feat_node *feat, uint32_t *thr= tl) +static bool cf_check mba_sanitize_thrtl( + const struct feat_node *feat, uint32_t *thrtl) { /* * Per SDM (chapter "Memory Bandwidth Allocation Configuration"): --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931920; cv=none; d=zohomail.com; s=zohoarc; b=Fmu1uzBabuVpBpGxpwuq68Ieze/lNG+ldUM8BP1rMo5ULJltQrT54653Lkv2Ug4Z+Wq8rmE8R63n3MdZHLsff5h0AEWUOFLXwP5aFmbHs+9UnftnRWquyCvtE+GK7xsNbk5tnyFeAdt04MTh1kbCICqquAxE2KsqoPYF/nJ5eiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931920; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=yEw+WW5QLNKYUfJJhP+ym3Vx+W7CBfkRS6clSr5GXrg=; b=RA0gQXkfLyxyOGtDwMMeGQXZVgzLA8Nbo/GmLcwPepEGnaYwiadtqD/9DEoO/73uEC8fw+CCBK40ymhw8TbjWy1mnTBKiSOzUTekZKpeLRWIdSyKEZDnCy9ddkVtoDEwHHYFGfWOLQuhl6c3CPrX4RYeEhKQHXryJF9sTF85lK8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931920172390.60592472061035; Fri, 26 Nov 2021 05:05:20 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232758.403700 (Exim 4.92) (envelope-from ) id 1mqauV-00069F-C4; Fri, 26 Nov 2021 13:05:03 +0000 Received: by outflank-mailman (output) from mailman id 232758.403700; Fri, 26 Nov 2021 13:05:03 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauU-00067X-Ni; Fri, 26 Nov 2021 13:05:02 +0000 Received: by outflank-mailman (input) for mailman id 232758; Fri, 26 Nov 2021 13:04:59 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauR-0003W9-Ix for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:59 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7473ae67-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:04:58 +0100 (CET) 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: 7473ae67-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931898; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Hp7PZvlLpwuVUaikk4pFAoTgRxWIqAcdM9EjJyWnZJg=; b=dZzm/MGH1Jqk1akeIXrgrGFYozVW/g0fzFW9p7d/ILmzGGAVn2/BuNmL 7+R6fim1M0PI/IjlmKi+Jv4JRuc+b1C3r2hXLRdaEdDKbTD/bpc3GNf1K VbefWtBvk3cNGlvMAnaY0wjLC27Zvrac9W+J9joP/BUkmtU6csatpQORj A=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 754iWkJep8g+aBPCoWQR/vX+YgDFkxXAhDT/yLpwpAyIC6+JFXFmqjFuwwEeoAIPigJcjyBvaU uOdUKbi8xZ0qWPZ7r8QkLz3Y4ghp3APc7SLN/Kp0VSCkYrO+H6gAkKwmbFUz9G/FI2HaftZfpb nl47wDu27YTjLSmxsgQWFMyKrmpulgDURSOcyl8elsW4WHNZfdfLjrrs7aRgABcNdcgH8iUyur +TbczlghJvY+UhrEbcm95F2nLLLxwBAnvRdoQXDyV5WWlfJgm204PsaxfL+0O2mhCwvLrIjPtz 0dJdejd92KNut03CEFkqUYm2 X-SBRS: 5.1 X-MesageID: 59063951 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:N0Whf6jGAEHyjN7/GcMxLQtCX161rRcKZh0ujC45NGQN5FlHY01je htvXGHSO6yJYWugKIhwPoq3/EIEu5aBm9UxHQo4qCxmQSob9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0F0/NtTo5w7Rg29cy34Dja++wk YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx /18jJqITw4jb5H+neAQbBBpQyNAeql/reqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr KJCbmpXN1ba2rzwkOnTpupE36zPKOHCOo8Ft24m5jbeFfs8GrjIQrnQ5M8e1zA17ixLNauPP 5RCOGc2BPjGSwNhF1YlUc4cpsuThXinbCR2gWqroZNitgA/yyQuieOwYbI5YOeiWsF9jkue4 GXc8AzRIDsXKdiewjqt6W+3i6nEmiaTcJIfEvi0++BnhHWXx3cPE1sGWF2ju/67h0WiHdVFJ CQpFjEG9PZoshbxF5+kAkP+8CXsUgMgt8R4ItQ80AeEwPvo0QOdC1cNf25DVpsijZpjLdA17 WOhk9TsDD1plbSaT3OB67uZxQ+P1TgpwXwqPnFdE1ZcizX3iMRq10+UEI4/eEKgpoStQWmY/ tyckMQpa1z/Z+Yv3r7zw13IiinESnPhHl9svVW/so5IA2pEiG+Zi26AtQezARVodt/xory9U J4swJP2AAcmV8zlqcB1aL9RdIxFHt7cWNEmvXZhHoM66xOm8GO5cIZb7VlWfRkybZZaJGC4P BGP4mu9AaO/2lPxNsebhKrrVqwXIVXIT4y5Bpg4kPISCnSOSON31H43PhPBt4wcuEMtjbs+K f+mnTWEVh4n5VBc5GPuHY81iOZzrghnnD+7bc2rnnyPjOvFDFbIGOhtDbd7Rr1ghE9yiF6Oq Ig32grj40g3bdASlQGLq9NOdg5TciBgbX00wuQOHtO+zsNdMDlJI5fsLXkJIuSJRoxZybXF+ G+TQEhdxAatjHHLM1zSOHtidKnuTdB0qndiZX4gOlOh2n4CZ4ez7fhAK8trLOd/rOEzn+RpS /QletmbBqgdQDrw5DlAP4L2q5ZvdUr3iFvWbTalejU2Y7VpWxfNpo3/ZgLq+SRXVni3uMIyr qeOzATeRZZfFQ1uANyPMKCkzk+rvGhbk+V3BhOaLt5WcUTq0Y5rNy2u0aNnf5BScU3On2LI2 RyXDBEUofj2j7U0qNSZ17qZq4qJEvdlGhYIFWfs8rvrZzLR+XCuwNEcXb/QLyzdTm795I6re f5Rk6PnKPQCkVtH79h8HrJswf5s7tfjveYHnAFtHXGNZFW3ELJwZHKB2JAX5KFKw7ZYvyqwW 16OpYYGaenYZpu9HQ5DPhchY8SCyeoQy2vb4vkCKUnn4DN6oeicWkJIMhjQ0CFQIdOZ6m/+L TvNbCLO1zGCtw== IronPort-HdrOrdr: A9a23:RbVoy6ElWyrGWX9upLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079 YZT0EUMrzN5DZB4voSmDPIceod/A== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59063951" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 50/65] x86/dpci: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:31 +0000 Message-ID: <20211126123446.32324-51-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931921670100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/hvm/hvm.c | 4 ++-- xen/drivers/passthrough/vtd/x86/hvm.c | 4 ++-- xen/drivers/passthrough/x86/hvm.c | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index d5ca7a1ce636..1fba0efc54d1 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -513,8 +513,8 @@ void hvm_migrate_pirq(struct hvm_pirq_dpci *pirq_dpci, = const struct vcpu *v) } } =20 -static int migrate_pirq(struct domain *d, struct hvm_pirq_dpci *pirq_dpci, - void *arg) +static int cf_check migrate_pirq( + struct domain *d, struct hvm_pirq_dpci *pirq_dpci, void *arg) { hvm_migrate_pirq(pirq_dpci, arg); =20 diff --git a/xen/drivers/passthrough/vtd/x86/hvm.c b/xen/drivers/passthroug= h/vtd/x86/hvm.c index b531fe907a94..132d252d1cca 100644 --- a/xen/drivers/passthrough/vtd/x86/hvm.c +++ b/xen/drivers/passthrough/vtd/x86/hvm.c @@ -21,8 +21,8 @@ #include #include =20 -static int _hvm_dpci_isairq_eoi(struct domain *d, - struct hvm_pirq_dpci *pirq_dpci, void *arg) +static int cf_check _hvm_dpci_isairq_eoi( + struct domain *d, struct hvm_pirq_dpci *pirq_dpci, void *arg) { struct hvm_irq *hvm_irq =3D hvm_domain_irq(d); unsigned int isairq =3D (long)arg; diff --git a/xen/drivers/passthrough/x86/hvm.c b/xen/drivers/passthrough/x8= 6/hvm.c index 7a6d9ac3d40d..085d47beb44d 100644 --- a/xen/drivers/passthrough/x86/hvm.c +++ b/xen/drivers/passthrough/x86/hvm.c @@ -773,8 +773,8 @@ static void __msi_pirq_eoi(struct hvm_pirq_dpci *pirq_d= pci) } } =20 -static int _hvm_dpci_msi_eoi(struct domain *d, - struct hvm_pirq_dpci *pirq_dpci, void *arg) +static int cf_check _hvm_dpci_msi_eoi( + struct domain *d, struct hvm_pirq_dpci *pirq_dpci, void *arg) { int vector =3D (long)arg; =20 @@ -943,8 +943,8 @@ void hvm_dpci_eoi(struct domain *d, unsigned int guest_= gsi) spin_unlock(&d->event_lock); } =20 -static int pci_clean_dpci_irq(struct domain *d, - struct hvm_pirq_dpci *pirq_dpci, void *arg) +static int cf_check pci_clean_dpci_irq( + struct domain *d, struct hvm_pirq_dpci *pirq_dpci, void *arg) { struct dev_intx_gsi_link *digl, *tmp; =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932057; cv=none; d=zohomail.com; s=zohoarc; b=AK2YsAaUs3zMpWwL4QvrZlgnVYO+uTk2o37swhvy12oWE+FNSQAQSbjAJ5CLUTE507CeeAexEAT+62bwhcuGq182m/4cYByjRI36dqQis0kBFMLWmnNSVF1nmhrk+87J4fLO+aJUsImUgrnwfBxE8eviJLTVruaDtdgBGqn+NBU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932057; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6NSuGfT715fO5qN7jhV0V6LEfJtrvXhAdqSU6DX+8oA=; b=IRa7t5V9rZs26ziJpUsrF+Gqw+eYKsmM1NMQ4L8mzRMJTYb0mcwI66VkXyFMZgWhgZg1shD4xMAD5GFzYOFgLJmKxzqSzPs7iJGRN4+si2mYdJS4m+C6Ojw1GlA2H6GmiA5d0OpZ0kjFqwxVSiOS59PXoXB45A1pq9UG9KVvXbQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932057136366.2015903380127; Fri, 26 Nov 2021 05:07:37 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232807.403886 (Exim 4.92) (envelope-from ) id 1mqawh-0007UF-Nw; Fri, 26 Nov 2021 13:07:19 +0000 Received: by outflank-mailman (output) from mailman id 232807.403886; Fri, 26 Nov 2021 13:07:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawg-0007PP-QN; Fri, 26 Nov 2021 13:07:18 +0000 Received: by outflank-mailman (input) for mailman id 232807; Fri, 26 Nov 2021 13:07:16 +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 1mqauq-0002zD-6z for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:24 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 831785f6-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:23 +0100 (CET) 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: 831785f6-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931922; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w8x1lrOFlbNAGePhZZD3cYzZny3J+Uxt4VjkYNuWyfk=; b=QbzIJNFnARaR6TaflbPuuK85DXGY3Nefxybymts9XmnMaAULG1PDbDn9 x78mXTX7qnlQfMMqZ682P8witIDZ0p54Q/FH8KvE/AShdAlfv8Wvr4OAE E/EHcv8CRpOfECdUSQYgXBsEwBWtxRIW1ILrpY6qHiQrsavwA1VvJ7E8Y 4=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: U7OSD1qpbf/GiJTD9ozKCW8kBmRN5ASqB3ZPnKh5fIg2hTwzyN2DcmU3+BIMPsz311GmA9Bq4Z patuyWGAElHo549NuyRS1SVVNjUeA/Baeva48yuOXUEqbvUcBA6vrATOlMJ5IT6KpZr6GbU0QY Qo1wASduyQF1k9rKkly5qbhWy8r7+jejtnsluGKApnrRydF1y35YDHB6V27qEvlv0qepAMfVOL JSpKyARoS6WzIS8Lzn8UzxE2wPT8g4FMRgp2amfKTGJEUtXxnWpJSJeFA4F/bW5XJNexZoPhmD 8oGb9tac8AiqTu4k6yqowx9V X-SBRS: 5.1 X-MesageID: 58695989 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:tSqAv65RX89VO1zni2V70wxRtPXAchMFZxGqfqrLsTDasY5as4F+v mQWCmiFP6uKazegf9ElaI61/BhTv5DRx4VjGVRl+C8zHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z9 d5LloOsESoSE4bJuuglDhxCDXliIvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTaiPO ptJOFKDajzgPj9QZ3BGLasZu+2ii1vFSBl08k2K8P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u10bTDwweNdef4SGY6X/qjejK9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc+dbFc4l9Fmg8Yf/5iSVPjUBVCAZdMNz4afaWgcW/ lOOmtroAxlmv7uUVW+R+9+okN+iBcQGBTRcPHFZFGPp9/Gm+dhu1UyXEr6PBYbs1oWtcQwc1 Qxmu8TXa187qccQn5u28lnc695HjsiYF1Vljuk7s4/M0++YWGJHT9D3gbQ4xawZRGp8crVnl CNf8yR5xLpTZaxhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGggfxg5bJtbKGO3P BS7VeZtCHl7ZyDCgUhfOd/ZNijX5fK4SYSNug78MrKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWPnOKrNVNdA9SdhDWx/ne8qRqSwJKGSI+cElJNhMb6epJl1VNk/sHm+HW0 Gu6X0MEmlPziWeecVeBa2x5aaOpVpF69CppMSspNFeu+n4ifYfws/tPK8ppJeEqpL550Pp5b /gZYMHcUP5BfSvKpmYGZp7noY08KBny3VCSPzCoaSQUdoJ7Q1Cb4cftewbirXFcDie+ucYkj aen0wfXHcgKSwh4VZ6EY/Oz1VKh+3ManbsqDUfPJ9BSfmTq8ZRrdHOt3qNmfZlUJEyalDWA1 guQDRMJnsX3otc4oIvTmKSJj4a1CO8iTEBUKHbWsOStPi7A82v9nYIZCLSUfSrQXX/f8bm5Y bkH1On1NfAKkQoYs4d4FLo3n6sy68G2+u1fxwVgWn7Kc06qGvVrJXzfhZtDsahEx7l4vwqqW x3QpokGaOvRYM61QkQMIAcFb/iY0aBGkzbf2v05PUHm6XIl57GAS0hTY0GBhSE1wGGZ62/5L TPNYPIr1jE= IronPort-HdrOrdr: A9a23:xyGiJa5VppSnQ0u8eQPXwPDXdLJyesId70hD6qhwISY6TiX+rb HWoB17726TtN9/YhEdcLy7VJVoBEmskKKdgrNhWotKPjOW21dARbsKheCJrgEIWReOktK1vZ 0QC5SWY+eQMbEVt6nHCXGDYrQd/OU= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58695989" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 51/65] x86/pt: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:32 +0000 Message-ID: <20211126123446.32324-52-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932059125100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/emul-i8254.c | 2 +- xen/arch/x86/hvm/hpet.c | 2 +- xen/arch/x86/hvm/rtc.c | 2 +- xen/arch/x86/hvm/vlapic.c | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/emul-i8254.c b/xen/arch/x86/emul-i8254.c index d170f464d966..18894b63488e 100644 --- a/xen/arch/x86/emul-i8254.c +++ b/xen/arch/x86/emul-i8254.c @@ -156,7 +156,7 @@ static int pit_get_gate(PITState *pit, int channel) return pit->hw.channels[channel].gate; } =20 -static void pit_time_fired(struct vcpu *v, void *priv) +static void cf_check pit_time_fired(struct vcpu *v, void *priv) { uint64_t *count_load_time =3D priv; TRACE_0D(TRC_HVM_EMUL_PIT_TIMER_CB); diff --git a/xen/arch/x86/hvm/hpet.c b/xen/arch/x86/hvm/hpet.c index ed512fa65b63..45c7b9b40688 100644 --- a/xen/arch/x86/hvm/hpet.c +++ b/xen/arch/x86/hvm/hpet.c @@ -219,7 +219,7 @@ static void hpet_stop_timer(HPETState *h, unsigned int = tn, hpet_get_comparator(h, tn, guest_time); } =20 -static void hpet_timer_fired(struct vcpu *v, void *data) +static void cf_check hpet_timer_fired(struct vcpu *v, void *data) { unsigned int tn =3D (unsigned long)data; HPETState *h =3D vcpu_vhpet(v); diff --git a/xen/arch/x86/hvm/rtc.c b/xen/arch/x86/hvm/rtc.c index ed397276faa3..d21925db08bc 100644 --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -81,7 +81,7 @@ static void rtc_update_irq(RTCState *s) =20 /* Called by the VPT code after it's injected a PF interrupt for us. * Fix up the register state to reflect what happened. */ -static void rtc_pf_callback(struct vcpu *v, void *opaque) +static void cf_check rtc_pf_callback(struct vcpu *v, void *opaque) { RTCState *s =3D opaque; =20 diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index d4e29ef1ff1d..49be9c8ea4fe 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -691,13 +691,13 @@ int guest_rdmsr_x2apic(const struct vcpu *v, uint32_t= msr, uint64_t *val) return X86EMUL_OKAY; } =20 -static void vlapic_pt_cb(struct vcpu *v, void *data) +static void cf_check vlapic_pt_cb(struct vcpu *v, void *data) { TRACE_0D(TRC_HVM_EMUL_LAPIC_TIMER_CB); *(s_time_t *)data =3D hvm_get_guest_time(v); } =20 -static void vlapic_tdt_pt_cb(struct vcpu *v, void *data) +static void cf_check vlapic_tdt_pt_cb(struct vcpu *v, void *data) { *(s_time_t *)data =3D hvm_get_guest_time(v); vcpu_vlapic(v)->hw.tdt_msr =3D 0; --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931920; cv=none; d=zohomail.com; s=zohoarc; b=ijesD2dU3jN5Aijbo/ERMFyBxVzH6xzDCLKX1PeCYehdm/LvkpESiS/bfIzwbmnF24AIKubtDswYwmkDk/IyQrTvZFJI2Ra9ym8QePfPo82tVcvfUYLRwhwbf2uz4JUmCeWdn/4iPyW1DoLqRtikqjpkENoEcmHZA7oO7TicFDw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931920; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+s4kq1grJ5pOaLgyrP7MnWpTCC2mgCFbVYTngz7fqC4=; b=btCgREzLuD0FK3ou143pNTJ9vGSe0auO2BJ43bqdygstewlLFGgmNIWQ79kYbf6HeUFpLizsFhcPvyQpgEKgbEYBUAedIwre81zrGgQtaFvfip9AQPur1X/q75V4MW2+zUFzXO1kzXjTS3zDB520/WOfhI1dUoHd1uHXgqUrg4g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931920561805.8798156703436; Fri, 26 Nov 2021 05:05:20 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232761.403711 (Exim 4.92) (envelope-from ) id 1mqauW-0006Wx-UC; Fri, 26 Nov 2021 13:05:04 +0000 Received: by outflank-mailman (output) from mailman id 232761.403711; Fri, 26 Nov 2021 13:05:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauW-0006UI-Al; Fri, 26 Nov 2021 13:05:04 +0000 Received: by outflank-mailman (input) for mailman id 232761; Fri, 26 Nov 2021 13:05:02 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauU-0003W9-Hl for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:02 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 761fdb9a-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:01 +0100 (CET) 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: 761fdb9a-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931901; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2MB3qO+z9Cw8CtOS8rAbbOlsadBbIGcPOzvcS4Y5AMw=; b=Q8fp2z2QkkCRgJcVfS0aq+7+/2k45A6Pi4rYF0Krb0tvXHkICO1nh2Th E6mWp2nStjpIMUgok7KyeGDn+e8+sSsCRwtNW7hrbRz7JbNPumU58Fw+a WTu6XtFeOeZnM2pUgTnsKVps0g6S1fUwNakdvhuaC4Wjix65useRtVRto s=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: fcaLdGsmvyl8paTutvujKAQ2Sjig0Idrq2+Hw1Hqs/WgsogmQAVCx6mNxqYZHfvs+L4k/+RJHb 2/g71yJ8pOJOKZqIedrny2kDrRAxFmn8RVIkpYv4OEQ0GdEfm1CaErA7sjnAGsL7HTuOhY0bYs ZQD7O1jKdNHdMaG0Ivk1D5DtOLtIneRRHaI4bgxJDJQFbCpcJJRMkzQZZRw0VP7I1CMBmYLoqu aDXwg980SI405pupDGVtY8ykBhg2zo+7RJHZI04S/V16vSU1gt4k0YlVKLEZgl97kdLRx2Kk3E 0uw4TzA00ursUuVOtYSVADx3 X-SBRS: 5.1 X-MesageID: 58676339 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:olExu6s4CqaTQcFRX6vhfHOsd+fnVJtZMUV32f8akzHdYApBsoF/q tZmKWjSOv+ON2ryKYp+bo/g9UkE75CGn9cyHAo4r31gF3sR+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ NplksWpeCIgN+71yeEfThdbAjNfNOpK9+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5RGN2E0PXwsZTVCAXkuBK8judyyxUneLAQFqVeFr4sotj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO8pj8TCow6OX2lecBHUKTS9TSdVhuMBjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9UNc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:y0C4s6t7uZnB5RRmgOL1rklZ7skDTtV00zEX/kB9WHVpmszxra 6TdZMgpGbJYVcqKRcdcL+7WJVoLUmxyXcx2/h1AV7AZniAhILLFvAA0WKK+VSJcEeSygce79 YFT0EXMqyJMbEQt6fHCWeDfOrIuOP3kpyVuQ== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676339" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 52/65] x86/time: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:33 +0000 Message-ID: <20211126123446.32324-53-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931921933100003 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/hpet.c | 8 ++++---- xen/arch/x86/time.c | 33 +++++++++++++++++---------------- xen/include/asm-x86/hpet.h | 4 ++-- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c index dcc9e16693e9..2b00c30d1153 100644 --- a/xen/arch/x86/hpet.c +++ b/xen/arch/x86/hpet.c @@ -196,7 +196,7 @@ static void evt_do_broadcast(cpumask_t *mask) cpumask_raise_softirq(mask, TIMER_SOFTIRQ); } =20 -static void handle_hpet_broadcast(struct hpet_event_channel *ch) +static void cf_check handle_hpet_broadcast(struct hpet_event_channel *ch) { cpumask_t mask; s_time_t now, next_event; @@ -553,7 +553,7 @@ static void hpet_detach_channel(unsigned int cpu, =20 void (*__read_mostly pv_rtc_handler)(uint8_t index, uint8_t value); =20 -static void handle_rtc_once(uint8_t index, uint8_t value) +static void cf_check handle_rtc_once(uint8_t index, uint8_t value) { if ( index !=3D RTC_REG_B ) return; @@ -566,7 +566,7 @@ static void handle_rtc_once(uint8_t index, uint8_t valu= e) } } =20 -void __init hpet_broadcast_init(void) +void __init cf_check hpet_broadcast_init(void) { u64 hpet_rate =3D hpet_setup(); u32 hpet_id, cfg; @@ -637,7 +637,7 @@ void __init hpet_broadcast_init(void) hpet_events->flags =3D HPET_EVT_LEGACY; } =20 -void hpet_broadcast_resume(void) +void cf_check hpet_broadcast_resume(void) { u32 cfg; unsigned int i, n; diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index ef036a187415..cce1d56b2ddd 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -292,7 +292,7 @@ static char *freq_string(u64 freq) * PLATFORM TIMER 1: PROGRAMMABLE INTERVAL TIMER (LEGACY PIT) */ =20 -static u64 read_pit_count(void) +static u64 cf_check read_pit_count(void) { u16 count16; u32 count32; @@ -311,7 +311,7 @@ static u64 read_pit_count(void) return count32; } =20 -static s64 __init init_pit(struct platform_timesource *pts) +static s64 __init cf_check init_pit(struct platform_timesource *pts) { u8 portb =3D inb(0x61); u64 start, end; @@ -348,7 +348,7 @@ static s64 __init init_pit(struct platform_timesource *= pts) return (end - start) * CALIBRATE_FRAC; } =20 -static void resume_pit(struct platform_timesource *pts) +static void cf_check resume_pit(struct platform_timesource *pts) { /* Set CTC channel 2 to mode 0 again; initial value does not matter. */ outb(0xb0, PIT_MODE); /* binary, mode 0, LSB/MSB, Ch 2 */ @@ -371,12 +371,12 @@ static struct platform_timesource __initdata plt_pit = =3D * PLATFORM TIMER 2: HIGH PRECISION EVENT TIMER (HPET) */ =20 -static u64 read_hpet_count(void) +static u64 cf_check read_hpet_count(void) { return hpet_read32(HPET_COUNTER); } =20 -static int64_t __init init_hpet(struct platform_timesource *pts) +static int64_t __init cf_check init_hpet(struct platform_timesource *pts) { uint64_t hpet_rate, start; uint32_t count, target; @@ -462,7 +462,7 @@ static int64_t __init init_hpet(struct platform_timesou= rce *pts) return (rdtsc_ordered() - start) * CALIBRATE_FRAC; } =20 -static void resume_hpet(struct platform_timesource *pts) +static void cf_check resume_hpet(struct platform_timesource *pts) { hpet_resume(NULL); } @@ -487,12 +487,12 @@ unsigned int __initdata pmtmr_width; /* ACPI PM timer ticks at 3.579545 MHz. */ #define ACPI_PM_FREQUENCY 3579545 =20 -static u64 read_pmtimer_count(void) +static u64 cf_check read_pmtimer_count(void) { return inl(pmtmr_ioport); } =20 -static s64 __init init_pmtimer(struct platform_timesource *pts) +static s64 __init cf_check init_pmtimer(struct platform_timesource *pts) { u64 start; u32 count, target, mask; @@ -557,7 +557,7 @@ static unsigned int __initdata tsc_flags; * Called in verify_tsc_reliability() under reliable TSC conditions * thus reusing all the checks already performed there. */ -static s64 __init init_tsc(struct platform_timesource *pts) +static s64 __init cf_check init_tsc(struct platform_timesource *pts) { u64 ret =3D pts->frequency; =20 @@ -579,7 +579,7 @@ static s64 __init init_tsc(struct platform_timesource *= pts) return ret; } =20 -static u64 read_tsc(void) +static u64 cf_check read_tsc(void) { return rdtsc_ordered(); } @@ -621,7 +621,7 @@ static uint64_t xen_timer_cpu_frequency(void) return freq; } =20 -static int64_t __init init_xen_timer(struct platform_timesource *pts) +static int64_t __init cf_check init_xen_timer(struct platform_timesource *= pts) { if ( !xen_guest ) return 0; @@ -642,7 +642,7 @@ static always_inline uint64_t read_cycle(const struct v= cpu_time_info *info, return info->system_time + offset; } =20 -static uint64_t read_xen_timer(void) +static uint64_t cf_check read_xen_timer(void) { struct vcpu_time_info *info =3D &this_cpu(vcpu_info)->time; uint32_t version; @@ -671,7 +671,7 @@ static uint64_t read_xen_timer(void) return ret; } =20 -static void resume_xen_timer(struct platform_timesource *pts) +static void cf_check resume_xen_timer(struct platform_timesource *pts) { write_atomic(&xen_timer_last, 0); } @@ -697,7 +697,8 @@ static struct platform_timesource __initdata plt_xen_ti= mer =3D static struct ms_hyperv_tsc_page *hyperv_tsc; static struct page_info *hyperv_tsc_page; =20 -static int64_t __init init_hyperv_timer(struct platform_timesource *pts) +static int64_t __init cf_check init_hyperv_timer( + struct platform_timesource *pts) { paddr_t maddr; uint64_t tsc_msr, freq; @@ -740,7 +741,7 @@ static int64_t __init init_hyperv_timer(struct platform= _timesource *pts) return freq; } =20 -static uint64_t read_hyperv_timer(void) +static uint64_t cf_check read_hyperv_timer(void) { uint64_t scale, ret, tsc; int64_t offset; @@ -1716,7 +1717,7 @@ time_calibration_rendezvous_tail(const struct calibra= tion_rendezvous *r, * Keep TSCs in sync when they run at the same rate, but may stop in * deep-sleep C states. */ -static void time_calibration_tsc_rendezvous(void *_r) +static void cf_check time_calibration_tsc_rendezvous(void *_r) { int i; struct calibration_rendezvous *r =3D _r; diff --git a/xen/include/asm-x86/hpet.h b/xen/include/asm-x86/hpet.h index f343fe4740f1..9919f7473071 100644 --- a/xen/include/asm-x86/hpet.h +++ b/xen/include/asm-x86/hpet.h @@ -89,8 +89,8 @@ void hpet_disable_legacy_replacement_mode(void); * Temporarily use an HPET event counter for timer interrupt handling, * rather than using the LAPIC timer. Used for Cx state entry. */ -void hpet_broadcast_init(void); -void hpet_broadcast_resume(void); +void cf_check hpet_broadcast_init(void); +void cf_check hpet_broadcast_resume(void); void cf_check hpet_broadcast_enter(void); void cf_check hpet_broadcast_exit(void); int hpet_broadcast_is_available(void); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931915; cv=none; d=zohomail.com; s=zohoarc; b=eH4qyYDuT2Ezb/8rh0MUq5rrIcpUKoLlhMqs+A6suNGCuF39OSlGHk7cCBN1kL/ZCa9YdmMVraJpOKbHx+NgWNoIHjvrRXlxYhvT84jNnZ7KbiTjR9Zm3PW6ssWiIsMdtcpmwfZGux/Oj3fRdkohUdxUcHOp+ibef+4U7OgPKwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931915; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1BUbnhpvv3YraeA3/MYZezaNENrN08t7fV9K3eNAaJI=; b=A4KRHKjgTP/hwH0T2W093BNuM4wIt0C77Rd177nrF87XrQNoCA90Kb46IZgQkcH9/DxNCQzLEjqXRiKnxJldxqGC9zfgLR/p9v5aaNGfUQ7n42BlFrR+KkoGfTYz9bAGuF7nVrWZdvTt6eyoWfX1u/aAKPq6Y6jkJRsdeTwQQiU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163793191580889.89561723826296; Fri, 26 Nov 2021 05:05:15 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232751.403650 (Exim 4.92) (envelope-from ) id 1mqauO-0004bl-H8; Fri, 26 Nov 2021 13:04:56 +0000 Received: by outflank-mailman (output) from mailman id 232751.403650; Fri, 26 Nov 2021 13:04:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauO-0004bI-BF; Fri, 26 Nov 2021 13:04:56 +0000 Received: by outflank-mailman (input) for mailman id 232751; Fri, 26 Nov 2021 13:04:55 +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 1mqauM-0002zD-R0 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:54 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 70e59a61-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:04:52 +0100 (CET) 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: 70e59a61-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931892; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XPX2j3prxpqJwVaGqHu3muka5HpBzV+XeYCvn/fY7+U=; b=MKKqaR2DkJsBO02uBKIKM9xiOiWkNZYDTM/aitIIFZCDJGm+K00Ww6Ka YBV4iuomJF7zGpWB54JXuzc/FGi/H5LsOooVZVoPbvQ5BlMxoa5W4L+zp CISN2Lx55/xLyxu73DvEu6pVo+bmncIdyI8k/huwItwsy/zb46xd+Gnlw A=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: wZFVAOxcftvc5QFYyOSXyb9NyytxVzW/hd4h7fIAHTqenuWGoIRzVMVc9deLRWeD2n02VWNzp+ /UYVXi7f5I/VXTGxkK5hUIWzUlZ3ysE6smbVUT5gYeOcv+WPXWoAs5/88Dii0MaPTCNtRv6OTv VrKB9XLJHn4KBHIU8O2jsCr6zxsvtLO01hwkr9DO5V91N0LZCN3SKs2LKphjkws5m7uaq0LlOO V8GNI4rsDO79iMPITcCv32vnPDU3iTflh5bhaElHriI4ujqRzjvfLV/c0ZcFzDQoPY63VFQrgK OaPp/Wsn79M4qPmyyGYBHWcJ X-SBRS: 5.1 X-MesageID: 58193732 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:kS2pRK4Gzt998JaZaD0suwxRtPTAchMFZxGqfqrLsTDasY5as4F+v mscCj2OaPmOMDb8KtEgaYvj9hsA65XXyoNiQFFrqilgHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdg2NAw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Zy Il0vJ+3Uh0TIbDBvMM/dyNHPDF9BPgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTTa+PP JVCM1KDajycOkFMAEc2Ea47wtmSnHShXR9euG+88P9fD2/7k1UqjemF3MDuUsOObdVYmACfv G2u10bTDwweNdef4SGY6X/qjejK9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc9oMKuQ57xqX8LXJ7iK+JEw+URFRa+Vz4afaWgcW/ lOOmtroAxlmv7uUVW+R+9+okN+iBcQGBTRcPHFZFGPp9/Gm+dhu1UyXEr6PBYbs1oWtcQwc1 Qxmu8TXa187qccQn5u28lnc695HjsiYF1Vljuk7s4/M0++YWGJHT9D3gbQ4xawZRGp8crVnl CNf8yR5xLpTZaxhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGggfxg5bJtbKGO3P BS7VeZtCHl7ZyDCgUhfOd/ZNijX5fK4SYSNug78MrKinaSdhCfYpXozNCZ8LkjmkVQ2kLFXB HtoWZ3EMJruMow+lGDeb75EidcDn3lirUuOFcGT50n2itK2OS/KIYrpxXPTN4jVGovf+16Lm zueXuPXoyhivBrWPnOKrNVNdA9SdhDWx/ne8qRqSwJKGSI+cElJNhMb6epxE2C8t6gKxOrO4 F+nXUpUlAj2iXHdcF3YYXF/crL/G514qCtjbyArOF+p3VklYJqus/hDJ8dmI+F/+bwx1+NwQ tkEZ96EXqZFRAPY9mlPdpL6toFjKkim3FrcIyq/bTEjVJd8XAiVqMT8dw7i+XBWXCq6vMczu ZO60QbfTcZRTghuFp+OOvmu00mwrT4Wn+crBxnEJdxaeUPN9ol2KnOu0q9rcp9UcRian2mUz QebBxsctNLhmY5t/Ymbn72AoqeoD/B6QhhQEV7E4OvkLiLd5Gein9NNCb7aYTDHWWro06y+f uEJnerkOfgKkVsW4YpxF7FnkfA369f1/uIIyw1lGDPAbkixC6MmKX6DhJEduqpIz75fmA23R kPQpYUKZeTXYJvoQAwLOQ4oTuWfzvVFyDDd4MM8LFj++CIqrqGMVl9fPkXUhSFQRFev3FjJH Qv1VBYq1jGC IronPort-HdrOrdr: A9a23:/ZuFN6yCd0lGqTM+6gUFKrPwFL1zdoMgy1knxilNoRw8SKKlfq eV7Y0mPH7P+VAssR4b+exoVJPtfZqYz+8R3WBzB8bEYOCFghrKEGgK1+KLqFeMJ8S9zJ846U 4JSdkHNDSaNzlHZKjBjzVQa+xQouW6zA== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193732" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 53/65] x86/misc: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:34 +0000 Message-ID: <20211126123446.32324-54-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931917560100001 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/extable.c | 4 ++-- xen/common/efi/boot.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c index b6664264de31..4aa1ab4b2a45 100644 --- a/xen/arch/x86/extable.c +++ b/xen/arch/x86/extable.c @@ -23,7 +23,7 @@ static inline unsigned long ex_cont(const struct exceptio= n_table_entry *x) return EX_FIELD(x, cont); } =20 -static int init_or_livepatch cmp_ex(const void *a, const void *b) +static int init_or_livepatch cf_check cmp_ex(const void *a, const void *b) { const struct exception_table_entry *l =3D a, *r =3D b; unsigned long lip =3D ex_addr(l); @@ -37,7 +37,7 @@ static int init_or_livepatch cmp_ex(const void *a, const = void *b) return 0; } =20 -static void init_or_livepatch swap_ex(void *a, void *b, size_t size) +static void init_or_livepatch cf_check swap_ex(void *a, void *b, size_t si= ze) { struct exception_table_entry *l =3D a, *r =3D b, tmp; long delta =3D b - a; diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index 56f44f86c2c4..f5af71837d5a 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -1504,7 +1504,7 @@ static __init void copy_mapping(unsigned long mfn, un= signed long end, unmap_domain_page(l3dst); } =20 -static bool __init ram_range_valid(unsigned long smfn, unsigned long emfn) +static bool __init cf_check ram_range_valid(unsigned long smfn, unsigned l= ong emfn) { unsigned long sz =3D pfn_to_pdx(emfn - 1) / PDX_GROUP_COUNT + 1; =20 @@ -1513,7 +1513,7 @@ static bool __init ram_range_valid(unsigned long smfn= , unsigned long emfn) pfn_to_pdx(smfn) / PDX_GROUP_COUNT) < sz; } =20 -static bool __init rt_range_valid(unsigned long smfn, unsigned long emfn) +static bool __init cf_check rt_range_valid(unsigned long smfn, unsigned lo= ng emfn) { return true; } --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932084; cv=none; d=zohomail.com; s=zohoarc; b=nollMa568KB/Piq6r9NWTKTHkPNHnUChXe5sYy7f4dg0koVCEzIfc5LBTOtyhhud30kmkawRpzAu/qssf4DCkIUyupK2/ADunqkV5xHkYaNiV3isoedTvnWkAvKeZNwaAErpDGLj8At0RKqqIeX1dnFrVWUo17JWouZOiC6yAcs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932084; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IaLHyV/mHEGthxxx5go5DWW51wPRlKnrVHIAgH75bvI=; b=OJpnUgXinVW+j99h6Rx6n8wmJ0f/d8jdFu4JDj/NHlIy8BIxOg5CD5RSzDw0ECLj8ACvvBBxFvGevu5d4rn2Usa1bE1UhHvudfw2IN3AI6P9Q2WnUDKrHU/axRjQqO65h5gU0g4aSfeUxJAdY/1XOIkfZOz6IAgU2iZs3oXWYh8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163793208411328.69469792538939; Fri, 26 Nov 2021 05:08:04 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232845.404004 (Exim 4.92) (envelope-from ) id 1mqax6-0005Kd-Lm; Fri, 26 Nov 2021 13:07:44 +0000 Received: by outflank-mailman (output) from mailman id 232845.404004; Fri, 26 Nov 2021 13:07:44 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqax6-0005Ac-36; Fri, 26 Nov 2021 13:07:44 +0000 Received: by outflank-mailman (input) for mailman id 232845; Fri, 26 Nov 2021 13:07:39 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqavW-0003W9-4X for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:06 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9c0b457b-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:06:04 +0100 (CET) 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: 9c0b457b-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931964; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hONvnroaH0E3hbObIHELnWwYtV3ug1ZhmACYEbr++xc=; b=CHZdsg2L+iRHfERqQu9SZhvywjaYMQkOXP6zqcyEWuMRIszgOsW+9mcG ti+ojR66TPCnwQM+f+LoB7l2ohojJa4T+QKCMU8KwHVY5mjNkKljGNQCh vdF6PYkn5jWrk07i4dRcc2YEv5XWwv8sOdBXoudoDFC1VfMF8ZI9eqaeq Y=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: fQ25UPOTu+fu01MWoH/vgj3u2zGbsKKD7QCLJWNp0kziqNHAAuOedr34hC0a7jgA23XdznJ+rF cBz0fcKSzLGXI9BuS7KlTBfjBs/+Pzsu8q2eNjD1XAsKIYIdL7KcgkCUw9d0uAZJNQOtoOHfj7 C0Qqy83/e0e+fuMRAqYmAi0kCvzm4NEntLz87ennNnd0z1ENb1F7B89xEpuFNZ/ERLET2Vj6k5 IgfLFL8VHDR5FvpYR9at5f3YtgIywWSOZapEQy/G5F13WgE2crQCAgvt5bFrdhmM9o1Rc9Iszc DapEFMsz1/4tWt7Q1aasqCdW X-SBRS: 5.1 X-MesageID: 58676436 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:aAWv7apRmnzaiiC08hoOrVifxaBeBmLVYhIvgKrLsJaIsI4StFCzt garIBmFafiCM2TyKd8gPdi0/UoB6sTSy9YyHgRlrC89FykR8puZCYyVIHmrMnLJJKUvbq7GA +byyDXkBJppJpMJjk71atANlZT4vE2xbuKU5NTsY0idfic5Dnd+4f5fs7Rh2Ncx2ILnW1nlV e7a+KUzBnf0g1aYDUpMg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZdhMUdrJ8DO+iL 9sv+Znilo/vE7XBPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XnRfTAKtao2zhojx/9 DlCncCWFgJ1O4HhpL02fyNxCRlcA51s/ZaSdBBTseTLp6HHW37lwvEoB0AqJ4wIvO1wBAmi9 9RBdmpLNErawbvrnvTrEYGAhex6RCXvFKoZtmtt0nfyCvE+TIqYa67L+cVZzHE7gcUm8fP2O ppHNmQzN0qojxtnAA5KGJMEl8eUo0LCInpbpWOkgqMJ7D2GpOB2+Oe0a4eEEjCQfu1Kmm6Iq 2SA+H72ajk4HtGCzTuO8lq3m/TC2yj8Xeo6BLC+s/JnnlCX7mgSEwENE0u2p+GjjUyzUM4ZL FYbkhfCtoBrqhbtFIOkGUTl/jjU5XbwRua8DcVmzl6Ilq/4zjrALUQ+ZyR5SuIWnsofEGlCO kCyo/vlAjlmsbuwQH2b96uJoT7aBRX5PVPudgdfE1JbvoCLTJUby0uWE409SPLdYsjdQGmom 1i3QD4Ca6L/ZCLh/4Gy5hj5jj2lvfAlpSZlt1yMDgpJAu6UDbNJhrBEC3CHsp6sz67DFzFtW UTofeDFt4ji6rnXyUSwrB0lRu3B2hp8GGS0baRTN5cg7S+x3HWoYJpd5jpzTG8wbJ1bKWG0P x6P518KjHO2AJdMRfQsC25WI553pZUM6Py/DqyEBjawSsQZmPC7ENFGOhfLgjGFfLkEmqAjI 5aLGftA/l5BYZmLOAGeHr9HuZdyn3hW7TqKGfjTkkT2uZLDNSX9YepUbzOzghURsfrsTPP9q I0EaaNnCnx3DYXDX8Ug2dJJcA1RcyFkXcueRg4+XrfrHzeK0VoJU5f5qY7NsaQ890iMvuuXr Hy7RGFCz1/z2S/OJQmQMygxY7LzR5dv63k8OHV0b1qv3nEiZ6ep7bseKMRrLeV2qrQ7wK4mV eQBduWBHu9LFmbN9QMCYMSvt4dlbhmq216DZnL3fDglcpd8bAXV4du4LBD3/SwDA3Pv58szq rGtzC3BRp8HS1gwBcracqv3nViwoWIciKR5WE6Reotff0Dl8Y5LLS3tj6Bof5FQeEubnjbDj lSYGxYVo+XJsrQZytiRiPDWtZqtHst/AlFeQzvR44GpOHSI5WGk24JBDrqFJGiPSGPu9ay+T uxJ1PWgYuYflVNHvocgQbZmyaUyu4nmq7NAl1k2GXzKaxKgC696I2nA1s5K7/UfyrhcsAqwe 0SO5tgFZunZZJK7SAYcdFg/c+CO9fAIgT2Dv/06LXLz6DJz4LfaA15ZOAOBiXAFIbZ4WG//L TzNZCLCB9SDtycX IronPort-HdrOrdr: A9a23:bGlimapMfcIEts7cDGVDhYcaV5oTeYIsimQD101hICG8cqSj+f xG+85rrCMc6QxhPk3I9urhBEDtex/hHNtOkOws1NSZLW7bUQmTXeJfBOLZqlWKcUDDH6xmpM NdmsBFeaXN5DNB7PoSjjPWLz9Z+qjkzJyV X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676436" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 54/65] x86/stack: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:35 +0000 Message-ID: <20211126123446.32324-55-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932084530100003 The function typecheck in switch_stack_and_jump() is incompatible with cont= rol flow typechecking. It's ok for reset_stack_and_jump_ind(), but for reset_stack_and_jump(), it would force us to ENDBR64 the targets which are branched to directly. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu Honestly, the control flow typechecking is distinctly sub-par, but it's too late to do anything now. --- xen/arch/x86/domain.c | 6 +++--- xen/arch/x86/hvm/svm/svm.c | 6 +++--- xen/arch/x86/hvm/vmx/vmcs.c | 2 +- xen/arch/x86/hvm/vmx/vmx.c | 8 ++++---- xen/arch/x86/pv/domain.c | 2 +- xen/arch/x86/x86_64/entry.S | 1 + xen/include/asm-x86/current.h | 2 +- xen/include/asm-x86/hvm/vmx/vmx.h | 2 +- xen/include/asm-x86/pv/domain.h | 4 ++-- 9 files changed, 17 insertions(+), 16 deletions(-) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index ae7c88b51af1..afccc1525f8b 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -132,7 +132,7 @@ void play_dead(void) dead_idle(); } =20 -static void noreturn idle_loop(void) +static void noreturn cf_check idle_loop(void) { unsigned int cpu =3D smp_processor_id(); /* @@ -1790,7 +1790,7 @@ static void save_segments(struct vcpu *v) } } =20 -void paravirt_ctxt_switch_from(struct vcpu *v) +void cf_check paravirt_ctxt_switch_from(struct vcpu *v) { save_segments(v); =20 @@ -1804,7 +1804,7 @@ void paravirt_ctxt_switch_from(struct vcpu *v) write_debugreg(7, 0); } =20 -void paravirt_ctxt_switch_to(struct vcpu *v) +void cf_check paravirt_ctxt_switch_to(struct vcpu *v) { root_pgentry_t *root_pgt =3D this_cpu(root_pgt); =20 diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index c01477c97c09..2d81e4256455 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -940,7 +940,7 @@ static inline void svm_tsc_ratio_load(struct vcpu *v) wrmsrl(MSR_AMD64_TSC_RATIO, hvm_tsc_scaling_ratio(v->domain)); } =20 -static void svm_ctxt_switch_from(struct vcpu *v) +static void cf_check svm_ctxt_switch_from(struct vcpu *v) { int cpu =3D smp_processor_id(); =20 @@ -965,7 +965,7 @@ static void svm_ctxt_switch_from(struct vcpu *v) enable_each_ist(idt_tables[cpu]); } =20 -static void svm_ctxt_switch_to(struct vcpu *v) +static void cf_check svm_ctxt_switch_to(struct vcpu *v) { struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; int cpu =3D smp_processor_id(); @@ -992,7 +992,7 @@ static void svm_ctxt_switch_to(struct vcpu *v) wrmsr_tsc_aux(v->arch.msrs->tsc_aux); } =20 -static void noreturn svm_do_resume(void) +static void noreturn cf_check svm_do_resume(void) { struct vcpu *v =3D current; struct vmcb_struct *vmcb =3D v->arch.hvm.svm.vmcb; diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 441be8127148..6dc4833aadd2 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -1865,7 +1865,7 @@ void vmx_vmentry_failure(void) =20 void noreturn vmx_asm_do_vmentry(void); =20 -void vmx_do_resume(void) +void cf_check vmx_do_resume(void) { struct vcpu *v =3D current; bool_t debug_state; diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 88a6a5ec824b..594de04568ea 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -63,8 +63,8 @@ static bool_t __initdata opt_force_ept; boolean_param("force-ept", opt_force_ept); =20 -static void vmx_ctxt_switch_from(struct vcpu *v); -static void vmx_ctxt_switch_to(struct vcpu *v); +static void cf_check vmx_ctxt_switch_from(struct vcpu *v); +static void cf_check vmx_ctxt_switch_to(struct vcpu *v); =20 static int alloc_vlapic_mapping(void); static void vmx_install_vlapic_mapping(struct vcpu *v); @@ -885,7 +885,7 @@ static void cf_check vmx_fpu_leave(struct vcpu *v) } } =20 -static void vmx_ctxt_switch_from(struct vcpu *v) +static void cf_check vmx_ctxt_switch_from(struct vcpu *v) { /* * Return early if trying to do a context switch without VMX enabled, @@ -917,7 +917,7 @@ static void vmx_ctxt_switch_from(struct vcpu *v) vmx_pi_switch_from(v); } =20 -static void vmx_ctxt_switch_to(struct vcpu *v) +static void cf_check vmx_ctxt_switch_to(struct vcpu *v) { vmx_restore_guest_msrs(v); vmx_restore_dr(v); diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c index 55146c15c853..f94f28c8e271 100644 --- a/xen/arch/x86/pv/domain.c +++ b/xen/arch/x86/pv/domain.c @@ -351,7 +351,7 @@ void pv_domain_destroy(struct domain *d) FREE_XENHEAP_PAGE(d->arch.pv.gdt_ldt_l1tab); } =20 -void noreturn continue_pv_domain(void); +void noreturn cf_check continue_pv_domain(void); =20 int pv_domain_initialise(struct domain *d) { diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 3eaf0e67b2b9..8494b97a54a2 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -625,6 +625,7 @@ ENTRY(dom_crash_sync_extable) /* No special register assumptions. */ #ifdef CONFIG_PV ENTRY(continue_pv_domain) + ENDBR64 call check_wakeup_from_wait ret_from_intr: GET_CURRENT(bx) diff --git a/xen/include/asm-x86/current.h b/xen/include/asm-x86/current.h index a74ad4bc4c44..d423f2fd82ca 100644 --- a/xen/include/asm-x86/current.h +++ b/xen/include/asm-x86/current.h @@ -173,7 +173,6 @@ unsigned long get_stack_dump_bottom (unsigned long sp); #define switch_stack_and_jump(fn, instr, constr) \ ({ \ unsigned int tmp; \ - (void)((fn) =3D=3D (void (*)(void))NULL); = \ BUILD_BUG_ON(!ssaj_has_attr_noreturn(fn)); \ __asm__ __volatile__ ( \ SHADOW_STACK_WORK \ @@ -198,6 +197,7 @@ unsigned long get_stack_dump_bottom (unsigned long sp); =20 /* The constraint may only specify non-call-clobbered registers. */ #define reset_stack_and_jump_ind(fn) \ + (void)((fn) =3D=3D (void (*)(void))NULL); = \ switch_stack_and_jump(fn, "INDIRECT_JMP %", "b") =20 /* diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h b/xen/include/asm-x86/hvm/vm= x/vmx.h index 459c84dd9f09..4bb8d08f2ed9 100644 --- a/xen/include/asm-x86/hvm/vmx/vmx.h +++ b/xen/include/asm-x86/hvm/vmx/vmx.h @@ -93,7 +93,7 @@ typedef enum { =20 void vmx_asm_vmexit_handler(struct cpu_user_regs); void vmx_intr_assist(void); -void noreturn vmx_do_resume(void); +void noreturn cf_check vmx_do_resume(void); void vmx_vlapic_msr_changed(struct vcpu *v); struct hvm_emulate_ctxt; void vmx_realmode_emulate_one(struct hvm_emulate_ctxt *hvmemul_ctxt); diff --git a/xen/include/asm-x86/pv/domain.h b/xen/include/asm-x86/pv/domai= n.h index df9716ff26a8..68aec0b5a3fa 100644 --- a/xen/include/asm-x86/pv/domain.h +++ b/xen/include/asm-x86/pv/domain.h @@ -104,8 +104,8 @@ static inline unsigned long pv_make_cr4(const struct vc= pu *v) { return ~0ul; } =20 #endif /* CONFIG_PV */ =20 -void paravirt_ctxt_switch_from(struct vcpu *v); -void paravirt_ctxt_switch_to(struct vcpu *v); +void cf_check paravirt_ctxt_switch_from(struct vcpu *v); +void cf_check paravirt_ctxt_switch_to(struct vcpu *v); =20 #endif /* __X86_PV_DOMAIN_H__ */ =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931907; cv=none; d=zohomail.com; s=zohoarc; b=cmAb4WQnF2R/FtiLFe9lLxIDdh2XblnFJQIPdiyRvwkwVVlWDts1RtEgIipKD5ffqUbPqD6W/bIqjG4YHKzaLa2tc2vtVcC1jsE7Qf1p1OEf7PwehplNyq6v4RTDv+nqhEfHuefNw4qaNwtjFuIL/i9k1i7m78y4hc1QXsYe0cU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931907; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1nZbgEZkKYrF9z5bmMRz0FObBT62+gOPaLsQDWtlL6E=; b=MsJrBMBuadseHeyxUEp2Ae2ybC3o8cefJHaHN9nj7AMxCzdCGsSPx09lgtbwLo1HUsNBGRYyB9EH0nmnZfUTojsQnTO4dFueIhOEQhnzkBUsmpCkatl/jFlhs6Wz/qcnEAEcZ1m2ryiDCUXG5hm+QZ1I42ZGlFIsGmoByTu2gqg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931907374561.2560500840826; Fri, 26 Nov 2021 05:05:07 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232750.403633 (Exim 4.92) (envelope-from ) id 1mqauI-0003x3-Vr; Fri, 26 Nov 2021 13:04:50 +0000 Received: by outflank-mailman (output) from mailman id 232750.403633; Fri, 26 Nov 2021 13:04:50 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauI-0003vW-QF; Fri, 26 Nov 2021 13:04:50 +0000 Received: by outflank-mailman (input) for mailman id 232750; Fri, 26 Nov 2021 13:04:49 +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 1mqauH-0002zD-3t for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:49 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 6ed9d182-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:04:48 +0100 (CET) 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: 6ed9d182-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931888; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ne9sR1Af4/V67CBqU4M6NCPQOFrIw5Az3Gw7QUu3Mac=; b=AL0NIBVMpwvvxXsrfgyYrlV+k4CYk0MCzSCZapEBcsViVRThBLRlI/1e +cwSVQerhycbdNTfoTp71ivATZmQmVUGvq5I833HT/2zbNHt1JD1dlO3U 1HkkZ362yS77rLGk8KGjXsJ/8GXLg8jdPbrPc87XBI9GC1k7RZpYira5U o=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: KeRx9sKZ+rVuae8W+b2HPau0rRsDaLoRSPCz/VU2HOfd97UJk91ogFSfaooAmqE/ij+HYfi+iZ +u3e9iMZXz71TR42oHTAKoUGJXnAslglXD574vRVlCDncYckwh0Kvyqff5xqiN/SMnRZLtB90l 2HkkFHAkIJUgTgTGtjtShEzzzS7W80XUfOwITQOtn9Oq2MjtKjrIqu7o7ft1+RnnRw6uOr2kf4 kPPpP9uJMUuBxEi1ssVUGoTJWOpCdlO/iSSeCDIMmco3UpINWRHjfMozGWSYNgLBM0uYBVgAsL Td0YH4GQl1G7MTNjI5T2fcuB X-SBRS: 5.1 X-MesageID: 58676319 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:xsW1ZqwlI6JOurp/Ay56t+f6wSrEfRIJ4+MujC+fZmUNrF6WrkVUn TYfWW3SPvaCYWf1eo1xPI3j8hkOsJXTn9c3TwVlqyAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAuLeNYYH1500s6wrRn2tQAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt8FOz 9pVk5DocgAKfYHsqLQAQQR9IS4raMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVoru0lINPmI8U0vXZ4wCuCJf0nXYrCU+PB4towMDIY25AQQqiFP ptxhTxHdE/Zb01SJ3AsWb0Yuuir2CjmUxRRpwfAzUYwyzeKl1EguFT3C/LKfvSaSMMTmVyXz krk1WnkBhARNPSE1CGItHmrg4fnjS79HY4fCrC83vprm0GIgHweDgUMUlm2quX/jVSxM++zM GRNpHBo9/JrshX2EJ+tBHVUvUJooDYNZN1fC8s2sDqK6en4wzbJG3oZawxOPYlOWNANeRQm0 VqAntXMDDNpsaGIRX/1yop4vQ9eKgBOczZcOHZsoR8tpoC6/dpt1k6nosNLSfbt1rXI9SfML ydmRcTUr5EaloY12qqy5jgraBr898GSHmbZCug6N19JDz+Vhqb5OORECnCBtJ6sybp1qHHa5 xDofODEsYgz4WmlznDlfQn0NOjBCwy5GDPdm0VzOJIq6i6g/XWuFagJvmohdBk0bZdYJ2OyC KM2he+3zMQIVJdNRfUqC79d9uxwlfSwfTgbfqy8giVyjmhZK1bcoXAGib+41GHxikk8+ZzTy r/AGftA+U0yUPw9pBLvHr91+eZymkgWmDOCLbimnk/P+efPOxaopUItbQLmghYRt/jf/m04M r93aqO39vmoeLGkP3SMr9dMdQtiwLpSLcmelvG7v9WremJOcFzNwdeLqV/4U4A6zalTiMnS+ XSxBh1RxFbl3CWVIgSWcHFzLrjoWM8n/348OCUtO3eu2mQiPtnzvPtOKcNvcOl17vFnwN51U +IBJ5eKDMNQR2mV4D8ad5T88tBvLUz5mQKUMiO5SzEjZJo8FRfR89rpc1K3pikDBya6r+Ukp Lik2l+JSJYPXV06Xs3XdOiu3xW6un1EwLB+WE7BI99yfkTw8dc1d3yt36Fve8xVcEfN3DqX0 QqSECw0n+iVrt9n6sTNiICFs5ytT7l0EH1FEjSJ9r2xLyTboDaumNcSTOaScDnBf2ro46H+N /5NxvTxPfBbzlZHt41wT+Riwa4kvoa9orZbykJvHWnRbkTtAbRleyHU0c5Kv6xL57lYpQrpB R7fpogEYe2EaJH/DVocBAs5deDSh/gblw7b4ekxPEintjR8+6CKUBkKMhSB4MCHwGCZ7G/xL T8dhfMr IronPort-HdrOrdr: A9a23:SCgZ06v0/TEX60kqCvjsIDGn7skDTtV00zEX/kB9WHVpmszxra 6TdZMgpGbJYVcqKRcdcL+7WJVoLUmxyXcx2/h1AV7AZniAhILLFvAA0WKK+VSJcEeSygce79 YFT0EXMqyJMbEQt6fHCWeDfOrIuOP3kpyVuQ== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676319" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 55/65] x86/bugframe: Annotate fnptr targets Date: Fri, 26 Nov 2021 12:34:36 +0000 Message-ID: <20211126123446.32324-56-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931908662100001 run_in_exception_handler() managed to escape typechecking, as the compiler can't see where function pointer gets called. After adding some ad-hoc typechecking, it turns out that dump_execution_state() alone differs in const-ness from the other users of run_in_exception_handler(). Introduce a new show_execution_state_nonconst() to make the typechecking happy. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/traps.c | 5 +++++ xen/common/keyhandler.c | 4 ++-- xen/drivers/char/ehci-dbgp.c | 2 +- xen/drivers/char/ns16550.c | 2 +- xen/include/asm-x86/bug.h | 10 +++++++++- xen/include/asm-x86/processor.h | 4 +++- xen/include/xen/lib.h | 2 +- 7 files changed, 22 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 76b1b779b33c..81ab96115ead 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -670,6 +670,11 @@ void show_execution_state(const struct cpu_user_regs *= regs) console_unlock_recursive_irqrestore(flags); } =20 +void cf_check show_execution_state_nonconst(struct cpu_user_regs *regs) +{ + show_execution_state(regs); +} + void vcpu_show_execution_state(struct vcpu *v) { unsigned long flags =3D 0; diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c index 5dc650a37c5c..b6e22d8120b1 100644 --- a/xen/common/keyhandler.c +++ b/xen/common/keyhandler.c @@ -138,7 +138,7 @@ static void cf_check show_handlers(unsigned char key) =20 static cpumask_t dump_execstate_mask; =20 -void dump_execstate(struct cpu_user_regs *regs) +void cf_check dump_execstate(struct cpu_user_regs *regs) { unsigned int cpu =3D smp_processor_id(); =20 @@ -490,7 +490,7 @@ static void cf_check run_all_keyhandlers( tasklet_schedule(&run_all_keyhandlers_tasklet); } =20 -static void do_debugger_trap_fatal(struct cpu_user_regs *regs) +static void cf_check do_debugger_trap_fatal(struct cpu_user_regs *regs) { (void)debugger_trap_fatal(0xf001, regs); =20 diff --git a/xen/drivers/char/ehci-dbgp.c b/xen/drivers/char/ehci-dbgp.c index e205c0da6a61..16c8ff394d5c 100644 --- a/xen/drivers/char/ehci-dbgp.c +++ b/xen/drivers/char/ehci-dbgp.c @@ -1247,7 +1247,7 @@ static int cf_check ehci_dbgp_getc(struct serial_port= *port, char *pc) /* Safe: ehci_dbgp_poll() runs as timer handler, so not reentrant. */ static struct serial_port *poll_port; =20 -static void _ehci_dbgp_poll(struct cpu_user_regs *regs) +static void cf_check _ehci_dbgp_poll(struct cpu_user_regs *regs) { struct serial_port *port =3D poll_port; struct ehci_dbgp *dbgp =3D port->uart; diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index 8df1ee4d5c2c..e5b4a9085516 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -206,7 +206,7 @@ static void cf_check ns16550_interrupt( /* Safe: ns16550_poll() runs as softirq so not reentrant on a given CPU. */ static DEFINE_PER_CPU(struct serial_port *, poll_port); =20 -static void __ns16550_poll(struct cpu_user_regs *regs) +static void cf_check __ns16550_poll(struct cpu_user_regs *regs) { struct serial_port *port =3D this_cpu(poll_port); struct ns16550 *uart =3D port->uart; diff --git a/xen/include/asm-x86/bug.h b/xen/include/asm-x86/bug.h index 9bb4a194202f..b7265bdfbe33 100644 --- a/xen/include/asm-x86/bug.h +++ b/xen/include/asm-x86/bug.h @@ -65,7 +65,15 @@ struct bug_frame { unreachable(); \ } while (0) =20 -#define run_in_exception_handler(fn) BUG_FRAME(BUGFRAME_run_fn, 0, fn, 0, = NULL) +/* + * TODO: untangle header dependences, break BUILD_BUG_ON() out of xen/lib.= h, + * and use a real static inline here to get proper type checking of fn(). + */ +#define run_in_exception_handler(fn) \ + do { \ + (void)((fn) =3D=3D (void (*)(struct cpu_user_regs *))NULL); \ + BUG_FRAME(BUGFRAME_run_fn, 0, fn, 0, NULL); \ + } while ( 0 ) =20 #define assert_failed(msg) do { \ BUG_FRAME(BUGFRAME_assert, __LINE__, __FILE__, 1, msg); \ diff --git a/xen/include/asm-x86/processor.h b/xen/include/asm-x86/processo= r.h index f031a050cba0..547415ec68e1 100644 --- a/xen/include/asm-x86/processor.h +++ b/xen/include/asm-x86/processor.h @@ -497,7 +497,9 @@ void show_stack(const struct cpu_user_regs *regs); void show_stack_overflow(unsigned int cpu, const struct cpu_user_regs *reg= s); void show_registers(const struct cpu_user_regs *regs); void show_execution_state(const struct cpu_user_regs *regs); -#define dump_execution_state() run_in_exception_handler(show_execution_sta= te) +void cf_check show_execution_state_nonconst(struct cpu_user_regs *regs); +#define dump_execution_state() \ + run_in_exception_handler(show_execution_state_nonconst) void show_page_walk(unsigned long addr); void noreturn fatal_trap(const struct cpu_user_regs *regs, bool_t show_rem= ote); =20 diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h index c6987973bf88..3a1fdaf7e35a 100644 --- a/xen/include/xen/lib.h +++ b/xen/include/xen/lib.h @@ -199,7 +199,7 @@ extern char *print_tainted(char *str); extern void add_taint(unsigned int taint); =20 struct cpu_user_regs; -void dump_execstate(struct cpu_user_regs *); +void cf_check dump_execstate(struct cpu_user_regs *); =20 void init_constructors(void); =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932123; cv=none; d=zohomail.com; s=zohoarc; b=Qi1X9GaE9eczk45AwsfkXwIFEhYfujyZ9xBdT27Wy4QQJ5wSb3Hr/+GOn97BQTTnDtuaYB/8e+scGR9HHqgNzhGgLSlEwNTb/uAyAvF/QqdNlvzVsveT1pn89oAEJ0ZmB/2FpgHAOWKgFOV+IOI0bsqUy4sSl23K7QI5X2FX3JM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932123; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=efnMfTPGpDu6mOk04JJ7qz9vQ4FLPIlQYb/wBE/hHeY=; b=BNvgWkwLcsnypEW+WxgsbRN2lufXmKXiqc/k5Ix3kBoDNuIH9BQt2OErp2OYEf1H+jl2mQAiHEy22Md3MraE5OYa/4+lBa9Fw/PRigazQM0QxCxY+9HZY7SriT5kr9JDi/Kro6PX7PzD0ceTCG5c4z7GIqJjdTwQhS66t3sZ5q0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 16379321233391000.9947709528902; Fri, 26 Nov 2021 05:08:43 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232895.404182 (Exim 4.92) (envelope-from ) id 1mqaxl-00061W-Qg; Fri, 26 Nov 2021 13:08:25 +0000 Received: by outflank-mailman (output) from mailman id 232895.404182; Fri, 26 Nov 2021 13:08:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxk-0005xb-Ii; Fri, 26 Nov 2021 13:08:24 +0000 Received: by outflank-mailman (input) for mailman id 232895; Fri, 26 Nov 2021 13:08:19 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaus-0003W9-CN for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:26 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 827943f7-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:22 +0100 (CET) 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: 827943f7-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931922; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aOPxwPbEuVDUU/7ny7Nc1lwWXehixxmxhczRU20X228=; b=Ug80rd4/6m+cIaw8wNVjx9jC3dRfaZt117E/zbmysFdBbtIvquKSEF/+ qxnpN/alAGt8DO4TLHHBTBXH3WXWrkPajeLGJPDY9uSex3z6P5a8lYRR9 qgvZN+p1Ruw17J/BMDkx5RD11zuwovWLYpraJypg3oTILkpXfNAKNXZfx I=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: RaBzP1Ct+zqp3D/WYQ0bOnB5QQhIOC7By7f4KKyDcfUSo2Yu2CggadFQgyQJk5CWxt6/5VAWP5 dcHqInpTGrQtHna6pX3RCzMySR4P/YeA0ebFH3ng48Ny+ScNdjI+RCoQpiKsZ0fafcP3Kx617j Lxeww12q4BHUnsm9YxUU/8GMSe1hClBvQEVrxUbCu0sqI0qVMpKZj9S1u+Q9dJwxA9wowILsr7 pV0HiIDK8wGf6yjNScDc36NMDZb+Vj8blQ3GIaM2VF3jCfPp3iqTkKVSQj+UwRwrU461fYKTVf L05KaVzOyYWJp0g70nBMaFP0 X-SBRS: 5.1 X-MesageID: 58676375 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:N0Q8vauAjCvmykCQGoLdzBzKKOfnVJtZMUV32f8akzHdYApBsoF/q tZmKT2GO/iOMTejc9h3bYWw8hhT7J+Bz4JlSQRq/ioxRn4V+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Npl7ZngYhU0M5H1psc0cwZ/PwR9OPwW9+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5RGN2EwMXwsZTVWZGdLJa43xd6xpWmvVjxB+Wy4p5YOtj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO7U/uCqf16fo2ji6L0gbaRJka9l35MBjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9UNc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:48fDrqs5ylNCdbSiW0K5HrmY7skDTtV00zEX/kB9WHVpmszxra 6TdZMgpGbJYVcqKRcdcL+7WJVoLUmxyXcx2/h1AV7AZniAhILLFvAA0WKK+VSJcEeSygce79 YFT0EXMqyJMbEQt6fHCWeDfOrIuOP3kpyVuQ== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676375" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 56/65] x86: Use control flow typechecking where possible Date: Fri, 26 Nov 2021 12:34:37 +0000 Message-ID: <20211126123446.32324-57-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932123857100005 Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu RFC. This is still an experimental compiler extention https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D102953 However, it is also the entire basis of being able to sanely use -mmanual-endbr in the first place, so is very important. --- xen/arch/x86/arch.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk index 1c8381f7c9d8..429a9ea00f92 100644 --- a/xen/arch/x86/arch.mk +++ b/xen/arch/x86/arch.mk @@ -48,6 +48,7 @@ CFLAGS-$(CONFIG_INDIRECT_THUNK) +=3D -fno-jump-tables =20 ifdef CONFIG_HAS_CC_CET_IBT CFLAGS +=3D -fcf-protection=3Dbranch -mmanual-endbr +$(call cc-option-add,CFLAGS,CC,-fcf-check-attribute=3Dno) else $(call cc-option-add,CFLAGS,CC,-fcf-protection=3Dnone) endif --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932088; cv=none; d=zohomail.com; s=zohoarc; b=mA/T/1PuFK9Q8NApApYOMBBVT+Q8Ap6/lbKd0XidwZ+nqdDrvNM8Z5HURCgOhcBo5jPc4g+UFEAyG8v2SVqXQlh2OOvdftY6WJcj85z4hNeV14hjUtcGfhQ3MKewu5Y1U96Rocx0YJWF+meKdu+X0TNsZ7KiqeO2RiCjluCYLOg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932088; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hEmE9VJ2OyHXWyBu5iJYivl989XWbUHMNz0S6hQ3Uws=; b=h+vTbXgtq2EJIGEf9xGzQWyjrQW8Q/ejnFEVliAtRJKGCV05betRaSQtI2a9AlAfaQo0gaayggzNs/TgjbxIDSqu4yWq5+PJJs2jAgUyA8v0jpTLOOs/zOHcXWJ0eX5M7OHrWcwNAPEz7ip/kQo6g3TXg5hRxku0hhFqVSU0b6c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932088933483.79900435893273; Fri, 26 Nov 2021 05:08:08 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232859.404034 (Exim 4.92) (envelope-from ) id 1mqaxF-0007Ir-CF; Fri, 26 Nov 2021 13:07:53 +0000 Received: by outflank-mailman (output) from mailman id 232859.404034; Fri, 26 Nov 2021 13:07:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxE-0007H7-Kd; Fri, 26 Nov 2021 13:07:52 +0000 Received: by outflank-mailman (input) for mailman id 232859; Fri, 26 Nov 2021 13:07:50 +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 1mqavg-0002zD-CD for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:06:16 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9fdb31ff-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:06:11 +0100 (CET) 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: 9fdb31ff-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931971; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xnOxh2ouMD9YxuVuQeIQxnQYuJC2T33FETvQlA9/bVY=; b=Ok7bv8A75dtngjor7SrVl41xrKPUl02zyOWNP2xGE2WOT4i71JMwkhN9 RK+3Jd73/x/DS8mid/GHic5yyXoili3MCgt8Zr/G+o6x/vVcigMNCNK2t pr//rZ68TdxPJao8fL0ahh0tg06VmlzBSDU9A8HfBHIpdZu2fmCjsXjFm g=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: OZyK3cfFl/Fm6/VFQRlvSPJ8ju/C18rmFwdmN9z+74ENs6E8koK6YiffJE77w3L7mDeT0H0Xab 6hvLhjosfR0bmOSTDofDO5EyBzLadDGsHFFslfIq12Pq/EyQssxVK6WNFqpyM5ja0zuXk6ZrMN qRkGtUGOdpeFaBkBW4IoTc4Vn+cDg3cvAnfMTdAjeSmqB+NOHzIjL3Ctmm1+ElWviGMHDqKvdB xQWzKQz6x7gPqTCbB5WHNKdGV8LHomrkC3afNgM7yhmbRCSqzQc8hkRBrchKrKG7MW8ZKCNh9g NpMsm12s653XIvt08wGoDudO X-SBRS: 5.1 X-MesageID: 60695344 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:rMEQm6/9ga7POMEtV9JlDrUDTXmTJUtcMsCJ2f8bNWPcYEJGY0x3n GZNDTjVbPfcY2WgKdogboiy8hgG7JaByYUxSVNorSo8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGmeIdA970Ug6wrdj3NYy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhIk Oh2lbuVQDsFBaGWh78BVENoTyhHaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguwKKsXxMZxZkXZn1TzDVt4tQIzZQrWM7thdtNs1rp4WQ6eDP JZFAdZpRDT5aTFFP14aMqIFobiRgFDQWWVXk3vA8MLb5ECMlVcsgdABKuH9ZdiiVchT2EGCq Qru3U70HxUbP9y30iee/zSngeqntTP2XsceGaO18tZugUaP3SoDBRsOT1y5rPKlzEmkVLpix 1c8o3R06/JorQryE4e7D0bQTGO4UgA0YoJtKM0dzQix5pHYuRnCGm9efmJIUYlz3CMpfgAC2 liMltLvIDVgtryJVH6QnoupQSOO1Ts9djFbO3JdJecRy5y6+dxo0EqTJjp2OPft1oWdJN3m/ 9ydQMHSbZ03hNVD6ai09Euvb9mE9smQFV5dCuk6swuYAuJFiGyNO9PABbvzt68owGOlor+p5 yNsdy+2tr1mMH11vHbRKNjh5Znwjxp/DBXSgER0A74q/Cm39niocOh4uW8lexc3b5lVJWG1O yc/XD+9ArcIZxNGioctPuqM5zkCl/C8RbwJqNiIBjaxXnSBXFDep3w/DaJh92vsjFItgckC1 WSzKq6R4YIhIf0/llKeHr5FuZdyn3xW7T6DFPjTkkX8uZLDNSH9dFvwGAbXBgzPxPjf+1u9H hc2H5bi9iizp8WiOHSKqtBKcghRRZX5bLivw/Fqmie4ClIOMAkc5zX5n9vNoqRpwPZYkPnm5 Ha4VhMKwVbznySfew6LdmpiePXkWpMm9SA3OiklPFCJ3Xk/YNnwsPdDJsVvJbR3pvZ+yfNUT uUef5nSCPp4VTmaqS8WaoPwrdI+eU3z1x6OJSesfBM2Y4VkG17S4tbhcwa2rHsOAyO7uNEQu bql0g+HE5MPSx47VJTdae61zkP3tn8YwbogU0zNK9hVWUPt7Ik1dHCh0q5pe5kBcEyRyCGb2 gCaBQYjidPM+4JlosPUga2krpuyF7csFERtAGSGv629MjPX/zT/zNYYAvqIZz3USEj95L6mO bdO1/j5PfAKwARKvo57H+o5xK4y/YKy9bpTzwAiF3TXdVW7TLhnJyDej8VIs6RMwJ5fuBe3B R3TqoULZ+3RNZO3CkMVKSokcv+HhKMdlTTl5PgoJFn3uX1s972dXEQOZxSBhUSx9leu3F/JF Qv5hPMr1g== IronPort-HdrOrdr: A9a23:dXKQ7anUUmKUK5MHGwI1Dtf0rWTpDfI/3DAbv31ZSRFFG/Fw9v re/8jzuiWftN98YhwdcLO7WJVoI0mzyXcd2+B4VotKOjOLhILCFuBfBOXZrAEJ30bFh4tgPW AKSdkdNOHN X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="60695344" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 57/65] x86/setup: Read CR4 earlier in __start_xen() Date: Fri, 26 Nov 2021 12:34:38 +0000 Message-ID: <20211126123446.32324-58-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932089534100001 This is necessary for read_cr4() to function correctly. Move the EFER cach= ing at the same time. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/setup.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 9bd42a55f94b..141957c9f6a5 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -872,6 +872,9 @@ void __init noreturn __start_xen(unsigned long mbi_p) =20 /* Full exception support from here on in. */ =20 + rdmsrl(MSR_EFER, this_cpu(efer)); + asm volatile ( "mov %%cr4,%0" : "=3Dr" (get_cpu_info()->cr4) ); + /* Enable NMIs. Our loader (e.g. Tboot) may have left them disabled. = */ enable_nmis(); =20 @@ -918,9 +921,6 @@ void __init noreturn __start_xen(unsigned long mbi_p) =20 parse_video_info(); =20 - rdmsrl(MSR_EFER, this_cpu(efer)); - asm volatile ( "mov %%cr4,%0" : "=3Dr" (get_cpu_info()->cr4) ); - /* We initialise the serial devices very early so we can get debugging= . */ ns16550.io_base =3D 0x3f8; ns16550.irq =3D 4; --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932041; cv=none; d=zohomail.com; s=zohoarc; b=aQ8nuoxWTocs1OOktIxGJxOG6J0MCF8KaW5FB7ADl4VP5bLiMLzrs5IPzdRaDkthLk/6JdnpCyijJIb9O5dMnGofc7tQi/OzuzV0E3Kv/noMZBuVYFGMYeo87CxK+IR8FBuiPc4JZ2CzWfuT26l0RAtYBRYLvTAsuku+eCVTg4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932041; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ySmMDft+KGXVi6LUIGpC8vKrtXeLYilwlW0pjCcjuVA=; b=JxlwzdzVz/ydwiHqZpUSrUn7Zu0qQc9lwCB1CvrWWAeSV7CEzwcG4JTA+jk+P/4tA9QhIWna7qE4fLaOVEABOe0sbPgTZcUxJpeGWFi1qy/qUf0sNqSBhxUGmd+GoFyzITYzvD2GMhD1xXchS77U0kIv8uXiUhDRbwo5BF7cmNo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 16379320412271019.8679832227527; Fri, 26 Nov 2021 05:07:21 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232784.403809 (Exim 4.92) (envelope-from ) id 1mqawR-000417-4j; Fri, 26 Nov 2021 13:07:03 +0000 Received: by outflank-mailman (output) from mailman id 232784.403809; Fri, 26 Nov 2021 13:07:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawQ-0003yh-Eo; Fri, 26 Nov 2021 13:07:02 +0000 Received: by outflank-mailman (input) for mailman id 232784; Fri, 26 Nov 2021 13:06:59 +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 1mqav8-0002zD-HD for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:42 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 8e17ee3d-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:41 +0100 (CET) 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: 8e17ee3d-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931941; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rj13aauZ5p/MtXm9lZgjoTPFAuAFcCO95ql16j4Ncjk=; b=KFNTYugEMJ9BRHAVbHhF+ZQJN05DCEhGjr2V0OunvXuHAoO3fWFdhaPk JqQz4E8SG8x/Br9LY/EJ2FiXOJ/pkGGOlvrjSOEFkstBjZA8Jh0mGPlTN 8rSdcQDbyIkuX37Ujtf1rdBIn/k0w5mX7kMYOve6n8ulpM9pcCMGULXj6 w=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 1c/C4dHXEf3cDxntLF1CvYAOF9ZtVrjHWTbw0UM8D///AVi5TL6nGQlUl4auXKmXn22nKIhprj TQNVx33bb5ZnM/4/Y+iuhfevxBJgHGl973nBg4eiEGcENeM5f9Vvjb367bAAtsBCE13Dg75Wzi RhBPRwzt6tYLv4HGUxQ+2RoOOLaSdB8gllcrsGlNgoCfYGiTyayhAFho+thnyPypXz2W5dnyuY m3bYeJLkpP6YfNvePLiXG9YyEtwR4j5xDu+0jJL9q7RLoflqrFRCEunv9Exo1vWdSA64Ph0m30 owsXgGIF+Fk8Xv14+K070UQd X-SBRS: 5.1 X-MesageID: 59064039 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:rmyK5KN7ynEs+UjvrR1okMFynXyQoLVcMsEvi/4bfWQNrUp0gmMDn TQdDT2Aaa7YazeneIgjPIW0oBsD7cTTmtQyTAto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6bUsxNbVU8En540Eg9w7RRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYow+7hN1uz I5Hj6y9Qi4MNPPmnOojdxYNRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YsBqit4uM4/AO4QHt2s75TrYEewnUdbIRKCiCdpwgWZo2JwWRqe2i 8wxMChTdhjbaUJ0FQlQOL8flcKUl0j6bGgNwL6SjfVuuDWCpOBr65DyNPLFd9rMQt9a9m66j G/b+2XyAjkBKceSjzGC9xqEluLJ2C/2Ro8WPLm57eJxxk2ewHQJDx8bXkf9puO24nNSQPoGd RZSoHB36/Fvqgr7FbERQiFUvla+jAURRN4LGdcK5Qqk76CKyQKXOEwLG2sphMMdiOc6Qjkj1 1msltzvBCByvLD9dU9x5ot4vhvpZ3FLcDZqiTssCFJcvoK9+N1bYgfnF447SMaIYsvJ9SYcK txghAw3nP0tgMECzM1XFniX0mv39vAlouPYjzg7v15JDCslO+ZJhKTysDA3CMqsyq7CFTFtW 1BexqCjABgmV83lqcB0aLxl8EuVz/iEKibAplVkAoMs8T+gk1b6I9sPsG8jexY1bJpfEdMMX KM1kVgKjHO0FCH3BZKbnqrrU5h6pUQePYiNug/ogipmPcEqKV7vENBGbk+MxWH9+HXAYolkU ap3hf2EVC5AYYw+lWLeb75EjdcDm3BvrUuOFMuT50n2jtKjiIu9FO5t3K2mNbtisstpYWz9r r5iCid940kFDbClPHCIqdV7wJJjBSFTOK0aYvd/LoarSjeK0kl7YxMI6b9+KYFjgYpPkeLEo iO0VkNCkQKtjnzbMwSaLHtkbeq3D5p4qHs6Ow0qPEqphCd/Mdr+sv9HestlZ6Qj+cxi0eVwE 6sPdfKfD6kdUT/A4TkcM8Xw9dQwaBSxiAuSFCO5ezxjLYV4TgnE94a8LAvi/SUDFAStss46r +Hy3w/XW8NbFQ9jENzXeLSkyFbo5SoRn+d7Xk3pJNhPeRqzrNg2enKp1vJuepMCMxTOwDeex j26OxZAqLmfuZIx/fnImbuA89WjHdxhExcIBGLc97u3a3XXpzLx3Y9aXe+UVjnBT2eoqr66b OBYwvygYv0KmFFG79h1H7pxlP9s4tLuo/lRzxh+HWWNZFOuU+syLn6D1MhJl6tM2r4G5lfmB hPRooFXaeeTJcfoMF8NPw50PO2M2MYdliTW8flocl7x4zV6/ebfXEhfV/VWZPex8Feh3FsZ/ Noc IronPort-HdrOrdr: A9a23:8tL796A9HyFJHj7lHemU55DYdb4zR+YMi2TC1yhKJyC9Ffbo7v xG/c5rsyMc5wxwZJhNo7y90ey7MBbhHP1OkO4s1NWZLWrbUQKTRekIh+bfKn/baknDH4ZmpN 9dmsNFaeEYY2IUsS+D2njbL+od X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59064039" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 58/65] x86/alternatives: Clear CR4.CET when clearing CR0.WP Date: Fri, 26 Nov 2021 12:34:39 +0000 Message-ID: <20211126123446.32324-59-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932041642100017 This allows us to have CET active much earlier in boot. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu Still TODO: Implement alternatives in a way which doesn't depend on clearing CR0.WP --- xen/arch/x86/alternative.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c index 436047abe021..ec24692e9595 100644 --- a/xen/arch/x86/alternative.c +++ b/xen/arch/x86/alternative.c @@ -333,9 +333,13 @@ static int __init cf_check nmi_apply_alternatives( */ if ( !(alt_done & alt_todo) ) { - unsigned long cr0; + unsigned long cr0, cr4; =20 cr0 =3D read_cr0(); + cr4 =3D read_cr4(); + + if ( cr4 & X86_CR4_CET ) + write_cr4(cr4 & ~X86_CR4_CET); =20 /* Disable WP to allow patching read-only pages. */ write_cr0(cr0 & ~X86_CR0_WP); @@ -345,6 +349,9 @@ static int __init cf_check nmi_apply_alternatives( =20 write_cr0(cr0); =20 + if ( cr4 & X86_CR4_CET ) + write_cr4(cr4); + alt_done |=3D alt_todo; } =20 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932061; cv=none; d=zohomail.com; s=zohoarc; b=UZQlLdx0IrbxrPPrwzA35X+I8YTgAFeD2KrD6PgUTyqTquy9d36X0SDptiS0b2o6uVfTYnuAT9rvzH7qjXz882lUjzBTMuHWpRMVPe2X4sciLs9fYHRGM0FM6LOWbuojKbRhF9cdWoyt16RSBhOrKScOYZ8rK730flY88a9BJYA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932061; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ktPnV12dhqodbPI6dwDxvg/4urqqBeyhXTS0lkLu1+Q=; b=Hsdvd/AUg8xfgxJCVP9oJFjOVxj6J2KM56/pkpT7AuOdixIewxd9lQrN/+fGQp2SIT6zm+RSHVPxeTodKSNRtpAj6VMMwvPiM14l3P1twXx2ZOTa/Nn+1L2QA9kB+kCWvIa6yo5QTCxrLg0eTv2SQ4Elb/oyUaknOxSJUJpAmjI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932061528786.9757833805255; Fri, 26 Nov 2021 05:07:41 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232819.403904 (Exim 4.92) (envelope-from ) id 1mqawm-0000Gx-SI; Fri, 26 Nov 2021 13:07:24 +0000 Received: by outflank-mailman (output) from mailman id 232819.403904; Fri, 26 Nov 2021 13:07:24 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawl-00009T-Rc; Fri, 26 Nov 2021 13:07:23 +0000 Received: by outflank-mailman (input) for mailman id 232819; Fri, 26 Nov 2021 13:07:21 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqav3-0003W9-E5 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:37 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 89df46d3-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:33 +0100 (CET) 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: 89df46d3-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931933; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ih31JwK4ZhE/5fbqj/U4g/nJspiAVJIOtl0WbTPrTf0=; b=dnkpZw9By2ciYTOoif79R0RC1YKV36CdVT/xSCa/CWU+75u4X9OfGsLe yYPWo55WdUBXCYKtmm5UJZJlDSDQ6zV4ECeKr2WQIYZaDZZDfnh4+DoQX QS7hbwXJBSB2SqdePzow38zOgk+OmqqSp1WKbbpJ6KQwXhQ3xdDZJW3xF M=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: oQYG/ml5g7RQdhWOqKM8ehXsmYO6tNQXLbV0T35CpvWN8fP4ijOePptef0de3U+4Fvw7E6Afgf fGJNLtDuXjRhHEIiLhWHLXHquZyiYbxWupRdqcXA1PNRxLfFao420lWf90R7S/IDcrqtUM3eid 8c7JO4wYJy7LPHlNpjOfycW6PPCRspcv44CbZHZ/xam0uMCK2pemo2S0au7zgE8R3nyFLZntjU Zk9uNwcqpLNPxXQWwEGzO5nqhReeb0pvgiPIffjwbplAmVaBhHRNkzOe5UBOOVDJedORv00E3r lX3Qfv1Gy3wLpa7LfylUBek1 X-SBRS: 5.1 X-MesageID: 60695284 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:GBM0VKLfPwP3pyKFFE+RHJIlxSXFcZb7ZxGr2PjKsXjdYENS0jEFm jZKUTzSPvyLamD8L9F/bozg8B8D6p/cz4NhHARlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es5xbZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB3Ygfpvk 8d29qWLchhyZqvTvck0SglhRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Glo2JETR6aCD yYfQWA0ZSbEOwxgAFNUNdFuhuT3gmjmazIN/Tp5ooJoujOOnWSdyoPFL979atGMA8JPkS6wh EjL4mD4CREyL8GExHyO9XfErv/Cm2b3VZwfEJW89+V2mxuDy2oLEhoUWFCn5/6jhSaDt8l3c hJOvHB09O5rqRLtHoKVswCETGCs7wA2RYFCKK4D0zqSkfLS/CO0L3EUd2sUADA5j/MeSTsv3 16PutrmAz1zrbGYIU6gGqeoQSCaYnZMczJbDcMQZU5cuoS4/tlv5v7aZo87SPbdszHjJd3nL 9lmRgAajq5bs8ME3r7TEbvv02P1/cihouLYC2zqsoOZAuFRONHNi2+AswGzARN8wGCxFQLpU J8swZX20Qz2JcvR/BFhuc1UdF1T296LMSfHnXlkFIQ7+jKm9haLJN4Lv2EgeRg4bphYIlcFh XM/XysKv/e/21PwMMdKj3+ZUZx2ncAM6/y5PhwrUja+SscoL1LWlM2fTUWRw3rsgCARfVIXY v+mnTKXJS9CU8xPlWPuL89EiOND7n1ulAv7GMGgpzz6gOX2WZJgYepcWLd4Rrtit/3sTcS82 4s3CvZmPD0DCrCjOXeOrtZIRb3IRFBiba3LRwVsXrbrCmJb9KsJUpc9GJstJN5ombp7jODN8 i3vU0NU0gOn13bGNR+LejZob7a2BcRzqncyPCoNO1e02id8PdbzvflHL5ZnL6M68OFDzOJvS 6VXccu3HfkSGC/M/C4QbMehodU6Jgirnw+HIwGsfCM7I8x7XwXM99K9Jlnv+SACAzCZr8w7p 7H8hArXTYBaH1ZpDdrMaeLpxFS05CBPlOV3VkrOA99SZESzr9Q6d32v1qc6epheJw/Cyz2W0 xetLS0Z/eSd8ZUo9NTphLyfq9v7GeVJAUcHTXLQ6qy7NHeG8zP7k5NASuuBYRvUSHjwpPe5f exQwvzxbK8HkVJNv9YuGrpn1/tjtd7mprscxQV4BnTbKV+sD+o4cHWB2MBOsIxLx6NY5lTqC h7epIECNOXbIt7hHX4QOBEhP7aK2vwjkzXP6eg4fRfh7yht8bvbCUhfMnFgUsCGwGeZ5G/9/ dochQ== IronPort-HdrOrdr: A9a23:DATMja9wuWdEpyQ097Juk+DLI+orL9Y04lQ7vn2ZKCYlEfBw+P rFoB1273LJYVUqOE3I++rvBEDoexq1nqKdh7N8AV7IZmjbUQWTQ72LKeDZsljd8+qUzJ8+6Z td X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="60695284" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 59/65] x86/traps: Rework write_stub_trampoline() to not hardcode the jmp Date: Fri, 26 Nov 2021 12:34:40 +0000 Message-ID: <20211126123446.32324-60-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932063660100001 For CET-IBT, we will need to optionally insert an endbr64 instruction at the start of the stub. Don't hardcode the jmp displacement assuming that it starts at byte 24 of the stub. Also add extra comments describing what is going on. The mix of %rax and %= rsp is far from trivial to follow. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/x86_64/traps.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c index d661d7ffcaaf..6f3c65bedc7a 100644 --- a/xen/arch/x86/x86_64/traps.c +++ b/xen/arch/x86/x86_64/traps.c @@ -293,30 +293,38 @@ static unsigned int write_stub_trampoline( unsigned char *stub, unsigned long stub_va, unsigned long stack_bottom, unsigned long target_va) { + unsigned char *p =3D stub; + + /* Store guest %rax into %ss slot */ /* movabsq %rax, stack_bottom - 8 */ - stub[0] =3D 0x48; - stub[1] =3D 0xa3; - *(uint64_t *)&stub[2] =3D stack_bottom - 8; + *p++ =3D 0x48; + *p++ =3D 0xa3; + *(uint64_t *)p =3D stack_bottom - 8; + p +=3D 8; =20 + /* Store guest %rsp in %rax */ /* movq %rsp, %rax */ - stub[10] =3D 0x48; - stub[11] =3D 0x89; - stub[12] =3D 0xe0; + *p++ =3D 0x48; + *p++ =3D 0x89; + *p++ =3D 0xe0; =20 + /* Switch to Xen stack */ /* movabsq $stack_bottom - 8, %rsp */ - stub[13] =3D 0x48; - stub[14] =3D 0xbc; - *(uint64_t *)&stub[15] =3D stack_bottom - 8; + *p++ =3D 0x48; + *p++ =3D 0xbc; + *(uint64_t *)p =3D stack_bottom - 8; + p +=3D 8; =20 + /* Store guest %rsp into %rsp slot */ /* pushq %rax */ - stub[23] =3D 0x50; + *p++ =3D 0x50; =20 /* jmp target_va */ - stub[24] =3D 0xe9; - *(int32_t *)&stub[25] =3D target_va - (stub_va + 29); + *p++ =3D 0xe9; + *(int32_t *)p =3D target_va - (stub_va + (p - stub) + 4); + p +=3D 4; =20 - /* Round up to a multiple of 16 bytes. */ - return 32; + return p - stub; } =20 DEFINE_PER_CPU(struct stubs, stubs); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637944706; cv=none; d=zohomail.com; s=zohoarc; b=LOQCBlCzx38fOBDNYzhAHvMpwLPboZkixjUy1Ss6nLO3Z7dFgbv7U7PUFH2lglXRnzEtmVfWn13vHnpbGDbZhR9IBIv1U4zJ2wRozuSFNB7U4XLLjekaawBLX5Ups9tYZLbuMA/4kIwSvFQZke+HUebyFdtJSuH0oalG1NUEDWA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637944706; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5Gqyz1tDmnPBMtAUwHhjOuY4AMpFNXal6eVIKQVu4is=; b=FPrTd+9TWr+to6OBULXePL2RsIIBbR3V+P1lAgeuBqXc1IubMWstm93cIoSSaRxt3gkUlRJ3XFmMEiObYZC70Yh6FpFxtwyEI+HrloEf+l3B6e3wdI9hNgSrQ2WsAi//aeUjbIDrKsaKm5Wg0OTVp862vh5UKmEtf6TpJ9/132s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163794470618821.89974505097564; Fri, 26 Nov 2021 08:38:26 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.233242.404595 (Exim 4.92) (envelope-from ) id 1mqeEe-00017C-QJ; Fri, 26 Nov 2021 16:38:04 +0000 Received: by outflank-mailman (output) from mailman id 233242.404595; Fri, 26 Nov 2021 16:38:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqeEe-000175-Mw; Fri, 26 Nov 2021 16:38:04 +0000 Received: by outflank-mailman (input) for mailman id 233242; Fri, 26 Nov 2021 16:38:03 +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 1mqeEd-00016T-H3 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 16:38:03 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 3798379d-4ed7-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 17:38:01 +0100 (CET) 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: 3798379d-4ed7-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637944681; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3/NSMBOP/JTQOyrzYRs/g6kXzLCntN/islndZqobP2A=; b=fHTEOc5bsGQR/2ghLjq12c9Ysde2RrWLIZD+PvjpMSdd8tx1ldQALi7m UR7CrSZ4ZcabtZAh+quoUhNypWg9b4yyzMYCqgeqF8VtOJT3Jt1DMu8Vo U7LUwInHWF0X9mxKNHsT+5Nw8xvZWoB8Bir3YU7WErPPJM1ryuKDSWa8E g=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: gP0vgzTaE3WaM/cuUgl+CufkQG5kFJBtOQLSYtnjRVimZhPkhfI9r1CKRblfJ2Siwlzp7lk5Pi uqGf2I9Q/Lq+iQQ2Uk4JVQ766DJBFeeTnMip0FCo15yLXhcIwIAtjOn2Nmsc/Rr0FwrONfa+lX iLd2/OLLlvJXCv7r+Sup18zbPu0co4BlOBa+TZByHDLAQ3cqP02PrPNDChlCDsQyN8VPhxePNk QOQD4slsyMrzV9YqNr1WCXBZUB3wle+kWHg1CpiBhqf1yMu6Iq2KXQ6EKzJmlSXhgWKQcag1rT yqUbewEqur95krDwC/c94Y4o X-SBRS: 5.1 X-MesageID: 58647550 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:CDflPq3zkrkNgO6zh/bD5R52kn2cJEfYwER7XKvMYLTBsI5bpzQGz TYfC2vVbKyDMWfzfd8kYNzl8R5TuMXWztY1TgU5pC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCan8ZqTNMEn970Es6wbBh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhg+8t2 NUUmr6KaiQ3OIz2we4NWSJgHHQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1Er8IvNsT0eqgYvWlt12rxBvc6W5HTBa7N4Le02R9t1p4SQquDP 6L1bxIxQyzfQyVkFm4KS7cDmb+4gmikbjRx/Qf9Sa0fvDGIkV0ZPKLWGMXRUsyHQ4NShEnwj kDs8nn9AxoaHMeC0jfD+XWp7sffkCW+VI8MGbmQ8v9xnEbV1mEVEAcRV1awvb++kEHWZj5EA xVKoGx09/F0rRH1CImmN/GlnJKalgIjB8pQSsIY0iKu1Kz12V+TFmI/djEUPbTKq/QKbTAt0 1aImfbgCjpurKCZRBqhy1uEkd+hEXNLdDFfPEfoWSNAuoC++99r0nojW/46SPbt5uAZDw0c1 NxjQMIWo7wIxfAG2Kyglbwsq2L9/8OZJuLZC+i+Y45E0u+bTNL6D2BLwQKChRqlEGp/ZgLa1 JTjs5LDhN3i9bnXyESwrBwlRdlFHcqtPjzGmkJIFJI87Tmr8HPLVdkOu24ueho2Y5paJWSBj KrvVeV5v8Q70JyCN/IfXm5MI55ykfiI+SrNCpg4keaikrAuLVTarUmClGab3nz3kVhErE3ME czzTCpYNl5DUf4P5GPvH481iOZ3rghjlTK7bc2qlHyPjOvBDEN5vJ9YaTNimMhit/jayOgUm v4CX/a3J+J3DLejP3KJqNFLdjjn7xETXPjLliCeTcbbSiIOJY3rI6W5LWoJd9M3kqJLuP3P+ 33hCEZUxECm3S/MKBmQa2AlY7TqBM4toXU+NC0qHFCpx3l8Ptr/sPZBL8M6Les96ehu7f9oV P1ZKc+ONetCF2bc8DMHYJij8IE7LEa3hRiDNjaOaSQke8IyXBTA/9LpJ1O99CQHAietm9E5p rmsilHSTZYZHlwwB8fKcvO/iVi2uCFFyu51WkLJJPhVeVntr9c2e3Cg0KdvLphVexvZxzac2 wKHOjsipLHA890v7d3EpaGYtIP1QeFwKVVXQjvA5rGsOCiEomf6md1cUPyFdCz2XX/v/Pnwf v1cyvzxPaFVnFtOtIYgQb9nwbhnuonqrr5eiA9lAG/KfxKgDbY5eiuK2sxGt6tswL5FuFTpB hLTq4cCYbjZatn4FFMxJRY+arXR3P4ZrTDe8PApLRio/yRw5reGDR1fMhTkZPax91ep3FfJG dschfM= IronPort-HdrOrdr: A9a23:gDK2b62eaXLx2f9WTua6YgqjBIokLtp133Aq2lEZdPRUGvb3qy nIpoVj6faUskd2ZJhOo7C90cW7LU80sKQFhLX5Xo3SOzUO2lHYT72KhLGKq1aLdhEWtNQtsZ uIG5IOcOEYZmIasS+V2maF+q4bsbu6zJw= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58647550" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH v1.1 60/65] x86/emul: Update emulation stubs to be CET-IBT compatible Date: Fri, 26 Nov 2021 16:37:14 +0000 Message-ID: <20211126163714.28870-1-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637944707264100001 All indirect branches need to land on an endbr64 instruction. For stub_selftests(), use endbr64 unconditionally for simplicity. For iopo= rt and instruction emulation, add endbr64 conditionally. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu v2: * Update to use endbr helpers --- xen/arch/x86/extable.c | 14 +++++++++----- xen/arch/x86/pv/emul-priv-op.c | 7 +++++++ xen/arch/x86/x86_emulate.c | 13 +++++++++++-- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c index 4aa1ab4b2a45..25c6fda00d28 100644 --- a/xen/arch/x86/extable.c +++ b/xen/arch/x86/extable.c @@ -129,19 +129,23 @@ search_exception_table(const struct cpu_user_regs *re= gs) static int __init cf_check stub_selftest(void) { static const struct { - uint8_t opc[4]; + uint8_t opc[8]; uint64_t rax; union stub_exception_token res; } tests[] __initconst =3D { - { .opc =3D { 0x0f, 0xb9, 0xc3, 0xc3 }, /* ud1 */ + { .opc =3D { 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + 0x0f, 0xb9, 0xc3, 0xc3 }, /* ud1 */ .res.fields.trapnr =3D TRAP_invalid_op }, - { .opc =3D { 0x90, 0x02, 0x00, 0xc3 }, /* nop; add (%rax),%al */ + { .opc =3D { 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + 0x90, 0x02, 0x00, 0xc3 }, /* nop; add (%rax),%al */ .rax =3D 0x0123456789abcdef, .res.fields.trapnr =3D TRAP_gp_fault }, - { .opc =3D { 0x02, 0x04, 0x04, 0xc3 }, /* add (%rsp,%rax),%al */ + { .opc =3D { 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + 0x02, 0x04, 0x04, 0xc3 }, /* add (%rsp,%rax),%al */ .rax =3D 0xfedcba9876543210, .res.fields.trapnr =3D TRAP_stack_error }, - { .opc =3D { 0xcc, 0xc3, 0xc3, 0xc3 }, /* int3 */ + { .opc =3D { 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + 0xcc, 0xc3, 0xc3, 0xc3 }, /* int3 */ .res.fields.trapnr =3D TRAP_int3 }, }; unsigned long addr =3D this_cpu(stubs.addr) + STUB_BUF_SIZE / 2; diff --git a/xen/arch/x86/pv/emul-priv-op.c b/xen/arch/x86/pv/emul-priv-op.c index 808ff1873352..e35cb4b8669d 100644 --- a/xen/arch/x86/pv/emul-priv-op.c +++ b/xen/arch/x86/pv/emul-priv-op.c @@ -26,6 +26,7 @@ =20 #include #include +#include #include #include #include @@ -111,6 +112,12 @@ static io_emul_stub_t *io_emul_stub_setup(struct priv_= op_ctxt *ctxt, u8 opcode, =20 p =3D ctxt->io_emul_stub; =20 + if ( cpu_has_xen_ibt ) + { + place_endbr64(p); + p +=3D 4; + } + APPEND_BUFF(prologue); APPEND_CALL(load_guest_gprs); =20 diff --git a/xen/arch/x86/x86_emulate.c b/xen/arch/x86/x86_emulate.c index 60191a94dc18..720740f29b84 100644 --- a/xen/arch/x86/x86_emulate.c +++ b/xen/arch/x86/x86_emulate.c @@ -17,6 +17,7 @@ #include #include /* cpu_has_amd_erratum() */ #include +#include =20 /* Avoid namespace pollution. */ #undef cmpxchg @@ -29,11 +30,19 @@ cpu_has_amd_erratum(¤t_cpu_data, AMD_ERRATUM_##nr) =20 #define get_stub(stb) ({ \ + void *ptr; \ BUILD_BUG_ON(STUB_BUF_SIZE / 2 < MAX_INST_LEN + 1); \ ASSERT(!(stb).ptr); \ (stb).addr =3D this_cpu(stubs.addr) + STUB_BUF_SIZE / 2; \ - memset(((stb).ptr =3D map_domain_page(_mfn(this_cpu(stubs.mfn)))) + \ - ((stb).addr & ~PAGE_MASK), 0xcc, STUB_BUF_SIZE / 2); \ + (stb).ptr =3D map_domain_page(_mfn(this_cpu(stubs.mfn))) + \ + ((stb).addr & ~PAGE_MASK); \ + ptr =3D memset((stb).ptr, 0xcc, STUB_BUF_SIZE / 2); \ + if ( cpu_has_xen_ibt ) \ + { \ + place_endbr64(ptr); \ + ptr +=3D 4; \ + } \ + ptr; \ }) #define put_stub(stb) ({ \ if ( (stb).ptr ) \ --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637931913; cv=none; d=zohomail.com; s=zohoarc; b=jhoIhI+W5B32yZjtTQQnn4k+6l/Azfs3ZDRFrJGy9WHSvugwyqO3+Ja12d+uoqCUXqQ0bHS1KUfyQFrBnULj+zHM2L+QxaMcxEjwYg9K3NuM1u5f2ruVEeMidjO6d0h2htsvWzDqehOxfCsvq3VdafcI4u0bfJl91wOWqkm0lmk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637931913; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=s87piWY0IE8gr8+WtIz6ANXgjXGUMFGTlFESFs09Eeg=; b=b6YSIF/+cM+2qPmS5JkyUZrswGExEbhFOnEGl9LsnrLni8wEa9S+Pdop2MPtIWh3HqgBZVSEQl39EjbEfvU3TLzVus3UMR3EqSJVDDy4bTMkAOSxkNGt3pW4fVkGRTzNb57STL2w40kW7EuNm2uwcg/csH1lpJ6K4pPqOwfzkqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637931913153631.9480374656046; Fri, 26 Nov 2021 05:05:13 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232752.403661 (Exim 4.92) (envelope-from ) id 1mqauP-0004tl-Sd; Fri, 26 Nov 2021 13:04:57 +0000 Received: by outflank-mailman (output) from mailman id 232752.403661; Fri, 26 Nov 2021 13:04:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauP-0004sZ-M2; Fri, 26 Nov 2021 13:04:57 +0000 Received: by outflank-mailman (input) for mailman id 232752; Fri, 26 Nov 2021 13:04:55 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqauN-0003W9-E0 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:04:55 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 718cc36b-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:04:54 +0100 (CET) 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: 718cc36b-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931894; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HcmfBpauAYXuC35jOvSCXt5rS/45eJAP/EQh3RsIuyw=; b=HzqFQ0t33tKuw/7Z/EhqY51lMi7J767xI0E/RpvygcMftgVDjMQ30780 1rs/or1bqqEmwWJeVYMqxb8h3mhqCjzScbo53KZB9bc8h/Tc3jF9NPGRe dMorJtgIzzisjQlcu5ZsTgmh2Xo2mvNOxRr/12kG65qVJH2y+hyF2QoN8 Y=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: EVsLFuAFkDLW+JkrLW9MsUlIohhH3cb3mKa3DRvfjWtMzZ4p2H0dQLac9HgEC8oB9z8k77jkl+ luFKIHOX0f/AnPAUrrpIO+DjgP2gxtp65MSnU7hxM4fxos0Yv0s/iHVHrk9zHKLc8hJ8pzkjdE YKs2BTY9A3KZZaLMC75hyeBFrD+qLtc/Dya+YD4K/9Z3/zHz90wDPtM2CsmaWpgLrSHaMFRkM/ ndB9S2KBRmf6MserNSewHIPHR0/RpkxwevXohvYBSRRSV2GRO/uh4ByKVB3E6ql9iCy1qQDHit 4gniXb7ekmfOxqWxPmxLT16H X-SBRS: 5.1 X-MesageID: 58634951 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:EY52sa1f1bFNsZqlyfbD5R52kn2cJEfYwER7XKvMYLTBsI5bpzICx 2MbD22Cb6nbNjf1fItzYImx9EMBvJ7VyNJrTAU6pC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCan8ZqTNMEn970Es6wbBh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhg/5wz up2mJmMdF0kAv3JnPosCzcBKnQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1Er8IvNsT0eqgYvWlt12rxBvc6W5HTBa7N4Le02R9t1p4VQaeDP qL1bxJDTgnbXwBFCGxPK4AMmur5h1WgcTdH/Qf9Sa0fvDGIkV0ZPKLWGMXRUsyHQ4NShEnwj kDs8nn9AxoaHMeC0jfD+XWp7sffkCW+VI8MGbmQ8v9xnEbV1mEVEAcRV1awvb++kEHWZj5EA xVKoGx09/F0rRH1CImmN/GlnJKalgIyWtxvKMA/1DzXx5aE5gKHNzAqFwcUPbTKq/QKbTAt0 1aImfbgCjpurKCZRBqhy1uEkd+hEXNLdDFfPEfoWSNAuoC++99r0nojW/46SPbt5uAZDw0c1 NxjQMIWo7wIxfAG2Kyglbwsq2L9/8OZJuLZC+i+Y45E0u+bTNL6D2BLwQKChRqlEGp/ZgLa1 JTjs5LDhN3i9bnXyESwrBwlRdlFHcqtPjzGmkJIFJI87Tmr8HPLVdkOu24ueho2Y5paJWSBj KrvVeV5v8Q70JyCN/IfXm5MI55ykfiI+SrNCpg4keaikrAuLVTarUmClGab3nz3kVhErE3ME czzTCpYNl5DUf4P5GPvH481iOZ3rghjlTK7bc2qlHyPjOvBDEN5vJ9YaTNimMhit/jayOgUm v4CX/a3J+J3DLejP3KJqNFLdjjn7xETXPjLliCeTcbbSiIOJY3rI6a5LWoJd9M3kqJLuP3P+ 33hCEZUxECm3S/MKBmQa2AlY7TqBM4toXU+NC0qHFCpx3l8Ptr/sPZBL8M6Les96ehu7f9oV P1ZKc+ONetCF2bc8DMHYJij8IE7LEa3hRiDNjaOaSQke8IyXBTA/9LpJ1O99CQHAietm9E5p rmsilHSTZYZHlwwB8fKcvO/iVi2uCFFyu51WkLJJPhVeVntr9c2e3Cg0KdvLphVexvZxzac2 wKHOjsipLHA890v7d3EpaGYtIP1QeFwKVVXQjvA5rGsOCiEomf6md1cUPyFdCz2XX/v/Pnwf v1cyvzxPaFVnFtOtIYgQb9nwbhnuonqrr5eiA9lAG/KfxKgDbY5eiuK2sxGt6tswL5FuFTpB hLTq4cCYbjZatn4FFMxJRY+arXR3P4ZrTDe8PApLRio/yRw5reGDR1fMhTkZPax91ep3FfJG dschfM= IronPort-HdrOrdr: A9a23:VV8wGaEyRdChOKgPpLqE0seALOsnbusQ8zAXP0AYc31om6uj5r iTdZUgpGbJYVkqKRIdcLy7V5VoBEmskaKdgrNhW4tKPjOW2ldARbsKheCJrlHd8m/Fh4lgPM 9bAtND4bbLbWSS4/yV3ODBKadE/OW6 X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58634951" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 60/65] x86/emul: Update emulation stubs to be CET-IBT compatible Date: Fri, 26 Nov 2021 12:34:41 +0000 Message-ID: <20211126123446.32324-61-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637931914462100001 All indirect branches need to land on an endbr64 instruction. For stub_selftests(), use endbr64 unconditionally for simplicity. For iopo= rt and instruction emulation, add endbr64 conditionally. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/extable.c | 14 +++++++++----- xen/arch/x86/pv/emul-priv-op.c | 5 +++++ xen/arch/x86/x86_emulate.c | 12 ++++++++++-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c index 4aa1ab4b2a45..25c6fda00d28 100644 --- a/xen/arch/x86/extable.c +++ b/xen/arch/x86/extable.c @@ -129,19 +129,23 @@ search_exception_table(const struct cpu_user_regs *re= gs) static int __init cf_check stub_selftest(void) { static const struct { - uint8_t opc[4]; + uint8_t opc[8]; uint64_t rax; union stub_exception_token res; } tests[] __initconst =3D { - { .opc =3D { 0x0f, 0xb9, 0xc3, 0xc3 }, /* ud1 */ + { .opc =3D { 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + 0x0f, 0xb9, 0xc3, 0xc3 }, /* ud1 */ .res.fields.trapnr =3D TRAP_invalid_op }, - { .opc =3D { 0x90, 0x02, 0x00, 0xc3 }, /* nop; add (%rax),%al */ + { .opc =3D { 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + 0x90, 0x02, 0x00, 0xc3 }, /* nop; add (%rax),%al */ .rax =3D 0x0123456789abcdef, .res.fields.trapnr =3D TRAP_gp_fault }, - { .opc =3D { 0x02, 0x04, 0x04, 0xc3 }, /* add (%rsp,%rax),%al */ + { .opc =3D { 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + 0x02, 0x04, 0x04, 0xc3 }, /* add (%rsp,%rax),%al */ .rax =3D 0xfedcba9876543210, .res.fields.trapnr =3D TRAP_stack_error }, - { .opc =3D { 0xcc, 0xc3, 0xc3, 0xc3 }, /* int3 */ + { .opc =3D { 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + 0xcc, 0xc3, 0xc3, 0xc3 }, /* int3 */ .res.fields.trapnr =3D TRAP_int3 }, }; unsigned long addr =3D this_cpu(stubs.addr) + STUB_BUF_SIZE / 2; diff --git a/xen/arch/x86/pv/emul-priv-op.c b/xen/arch/x86/pv/emul-priv-op.c index 808ff1873352..51638c8f7273 100644 --- a/xen/arch/x86/pv/emul-priv-op.c +++ b/xen/arch/x86/pv/emul-priv-op.c @@ -68,6 +68,9 @@ static io_emul_stub_t *io_emul_stub_setup(struct priv_op_= ctxt *ctxt, u8 opcode, * helpers (non-standard ABI), and one of several possible stubs * performing the real I/O. */ + static const char endbr64[] =3D { + 0xf3, 0x0f, 0x1e, 0xfa, /* endbr64 */ + }; static const char prologue[] =3D { 0x53, /* push %rbx */ 0x55, /* push %rbp */ @@ -111,6 +114,8 @@ static io_emul_stub_t *io_emul_stub_setup(struct priv_o= p_ctxt *ctxt, u8 opcode, =20 p =3D ctxt->io_emul_stub; =20 + if ( cpu_has_xen_ibt ) + APPEND_BUFF(endbr64); APPEND_BUFF(prologue); APPEND_CALL(load_guest_gprs); =20 diff --git a/xen/arch/x86/x86_emulate.c b/xen/arch/x86/x86_emulate.c index 60191a94dc18..8ba71a577f09 100644 --- a/xen/arch/x86/x86_emulate.c +++ b/xen/arch/x86/x86_emulate.c @@ -29,11 +29,19 @@ cpu_has_amd_erratum(¤t_cpu_data, AMD_ERRATUM_##nr) =20 #define get_stub(stb) ({ \ + void *ptr; \ BUILD_BUG_ON(STUB_BUF_SIZE / 2 < MAX_INST_LEN + 1); \ ASSERT(!(stb).ptr); \ (stb).addr =3D this_cpu(stubs.addr) + STUB_BUF_SIZE / 2; \ - memset(((stb).ptr =3D map_domain_page(_mfn(this_cpu(stubs.mfn)))) + \ - ((stb).addr & ~PAGE_MASK), 0xcc, STUB_BUF_SIZE / 2); \ + (stb).ptr =3D map_domain_page(_mfn(this_cpu(stubs.mfn))) + \ + ((stb).addr & ~PAGE_MASK); \ + ptr =3D memset((stb).ptr, 0xcc, STUB_BUF_SIZE / 2); \ + if ( cpu_has_xen_ibt ) \ + { \ + memcpy(ptr, "\xf3\x0f\x1e\xfa", 4); /* endbr64 */ \ + ptr +=3D 4; \ + } \ + ptr; \ }) #define put_stub(stb) ({ \ if ( (stb).ptr ) \ --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637944714; cv=none; d=zohomail.com; s=zohoarc; b=bgn4+62ghCEqjlNpMvrU0diwpf5x8CHqDPp48MjflgWvvwvBMMVd7qvGThB9m/VvLRiJdgMlS7r02ryXHSobdmFXptmmZCo3ZFjwpKIE/r8z5+nCW6iqYCHzo6/SYoLjaPG74/R/LL0mKTXSOjBxL/GviN0pqBNw6I2zhFGbrYI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637944714; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=bOeKY4mblGd94baE1MeJnaiv7IiVJocHFgi03bkoYTk=; b=Opr+JiRd6CL/roOfw9Rh6ct3IFeOPVlcPMAAhw8K7y2Zw0Lh1Q+DKehAM7gw5GABzIRSwkUwsK+TEUME3PX3yclwH0734HbzMjowZ4UIqwMFS3JHHHBs1/z8hw4fsgq+jdG+edn8kHP0cdIJjbvU6hRraJpb1kc2GhbSjBURX28= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637944714642424.3432148993013; Fri, 26 Nov 2021 08:38:34 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.233243.404605 (Exim 4.92) (envelope-from ) id 1mqeEr-0001Rd-2z; Fri, 26 Nov 2021 16:38:17 +0000 Received: by outflank-mailman (output) from mailman id 233243.404605; Fri, 26 Nov 2021 16:38:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqeEq-0001RS-WA; Fri, 26 Nov 2021 16:38:16 +0000 Received: by outflank-mailman (input) for mailman id 233243; Fri, 26 Nov 2021 16:38:16 +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 1mqeEq-00016T-2v for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 16:38:16 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 3fac4119-4ed7-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 17:38:15 +0100 (CET) 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: 3fac4119-4ed7-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637944694; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=iSTdkE0nHLJGOO6QKVKdLSrlYBdgNwshsJepa2MYnPQ=; b=IfDEyPOHU3dWChg48nlRVD0B81D5KNSncDDVmoXjspxxEo2escZBq1b5 pP5wIHwQ9ZH4kO1/Z7FrN0zGiZ/byne4yEERQsyULXTPAUIL493DK7TIB U8gcxdpxmXfS6YTj/aNkf4omc3GrG6uNbnjtRqPMIx4yenUbfQ6i/+Zcr c=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: j1O0amNu4WnABxO8wR389VwN1V9tYpOLOWCKCII3ywUkhB88zBxYwgBy+zauNorvkebXMK9P5X M+cHOCylB+6s43BtLb9o0Q7jfP7WBvY2IPfMSdtozspCgXDZECH0yg4Bx9yZjTl9DPMw6Pl0nZ gLw7zk/NffR2FV8ff7yu+3zHtqYLvZtOkA4LkRmo/rI6NAFRU26sA5npgVUT9w1hhLvYfkrDX3 340xxyKtnwOenii16QCeaZlmSMvbtUAoWZz6QhChqyCH7trnE40tdp/aD1BpIvXO2thvCt+nQ5 YWZijXFOwBklN5MfH/X+Atd7 X-SBRS: 5.1 X-MesageID: 58206773 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:IV4r06Mw0mezgJfvrR1okMFynXyQoLVcMsEvi/4bfWQNrUorgTZSy WVNXz+AOa6Ia2KkLdtybo7joE0H6sSAnNJlHQto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6bUsxNbVU8En540Eg9w7RRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYoy20jf147 Olzj4LuRlkZL4venectTRYNRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YsBqit4uM4/AO4QHt2s75TrYEewnUdbIRKCiCdpwgWdq3p4RQq22i 8wxSWFpNjnPXRB0NkoSOIwC3/inoDrCfGgNwL6SjfVuuDWCpOBr65DyNPLFd9rMQt9a9m66j G/b+2XyAjkBKceSjzGC9xqEluLJ2C/2Ro8WPLm57eJxxk2ewHQJDx8bXkf9puO24nNSQPoGd RZSoHB36/Fvqgr7FbERQiFUvlacgwwxUv5sLdcktg7T+rvy8QOaNnYLG2sphMMdiOc6Qjkj1 1msltzvBCByvLD9dU9x5ot4vhvpZ3FLcDZqiTssCFJcvoK9+N1bYgfnF447SMaIYsvJ9SYcK txghAw3nP0tgMECzM1XFniX0mv39vAlouPYjzg7v15JDCslO+ZJhKTysDA3CMqsyq7CFTFtW 1BexqCjABgmV83lqcB0aLxl8EuVz/iEKibAplVkAoMs8T+gk1b6I9sPsG8jexY1bJpfEdMMX KM1kVgKjHO0FCH3BZKbnqrrU5h6pUQePYiNug/ogipmPcEqKV7vENBGbk+MxWH9+HXAYolkU ap3hf2EVC5AYYw+lWLeb75EjdcDm3BvrUuOFMuT50n2jtKjiIu9FO5t3K2mNbtisstpYWz9r r5iCid940kFDbClPHCIqdV7wJJjBSFTOK0aYvd/LoarSjeK0kl7YxMI6b9+KYFjgYpPkeLEo iO0VkNCkQKtjnzbMwSaLHtkbeq3D5p4qHs6Ow0qPEqphCd/Mdr+sv9HestlZ6Qj+cxi0eVwE 6sPdfKfD6kdUT/A4TkcM8Xw9dQwaBSxiAuSFCO5ezxjLYV4TgnE94a8LAvi/SUDFAStss46r +Hy3w/XW8NbFQ9jENzXeLSkyFbo5SoRn+d7Xk3pJNhPeRqzrNg2enKp1vJuepMCMxTOwDeex j26OxZAqLmfuZIx/fnImbuA89WjHdxhExcIBGLc97u3a3XXpzLx3Y9aXe+UVjnBT2eoqr66b OBYwvygYv0KmFFG79h1H7pxlP9s4tLuo/lRzxh+HWWNZFOuU+syLn6D1MhJl6tM2r4G5lfmB hPRooFXaeeTJcfoMF8NPw50PO2M2MYdliTW8flocl7x4zV6/ebfXEhfV/VWZPex8Feh3FsZ/ Noc IronPort-HdrOrdr: A9a23:nvXG/qr5H7YIu8kKJiVXDF8aV5oReYIsimQD101hICG8cqSj9v xG+85rrSMc6QxhIU3I9urwW5VoLUmyyXcx2/h0AV7AZniBhILLFvAB0WKK+VSJcEeSmtK1l5 0QFJSWYOeAdmSS5vyb3ODXKbgdKaG8gcWVuds= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58206773" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH v1.1 61/65] x86/entry: Make syscall/sysenter entrypoints CET-IBT compatible Date: Fri, 26 Nov 2021 16:37:47 +0000 Message-ID: <20211126163747.29517-1-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637944715127100003 Each of MSR_{L,C}STAR and MSR_SYSENTER_EIP need to land on an endbr64 instruction. For sysenter, this is easy. Unfortunately for syscall, the stubs are already 29 byte long with a limit = of 32. endbr64 is 4 bytes. Luckily, there is a 1 byte instruction which can move from the stubs into the main handlers. Move the push %rax out of the stub and into {l,c}star_entry(), allowing room for the endbr64 instruction when appropriate. Update the comment describing the entry state. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu v2: * Update to use endbr helpers. --- xen/arch/x86/x86_64/entry.S | 18 +++++++++--------- xen/arch/x86/x86_64/traps.c | 11 +++++++---- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 8494b97a54a2..9abcf95bd010 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -241,18 +241,17 @@ iret_exit_to_guest: * When entering SYSCALL from user mode: * Vector directly to the registered arch.syscall_addr. * - * Initial work is done by per-CPU trampolines. At this point %rsp has been - * initialised to point at the correct Xen stack, %rsp has been saved, and - * %rax needs to be restored from the %ss save slot. All other registers a= re - * still to be saved onto the stack, starting with RFLAGS, and an appropri= ate - * %ss must be saved into the space left by the trampoline. + * Initial work is done by per-CPU trampolines. + * - Guest %rax stored in the %ss slot + * - Guest %rsp stored in %rax + * - Xen stack loaded, pointing at the %ss slot */ ENTRY(lstar_enter) #ifdef CONFIG_XEN_SHSTK ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif - /* sti could live here when we don't switch page tables below. */ - movq 8(%rsp),%rax /* Restore %rax. */ + push %rax /* Guest %rsp */ + movq 8(%rsp), %rax /* Restore guest %rax */ movq $FLAT_KERNEL_SS,8(%rsp) pushq %r11 pushq $FLAT_KERNEL_CS64 @@ -288,9 +287,9 @@ ENTRY(cstar_enter) #ifdef CONFIG_XEN_SHSTK ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif - /* sti could live here when we don't switch page tables below. */ + push %rax /* Guest %rsp */ CR4_PV32_RESTORE - movq 8(%rsp), %rax /* Restore %rax. */ + movq 8(%rsp), %rax /* Restore guest %rax. */ movq $FLAT_USER_SS32, 8(%rsp) /* Assume a 64bit domain. Compat h= andled lower. */ pushq %r11 pushq $FLAT_USER_CS32 @@ -323,6 +322,7 @@ ENTRY(cstar_enter) jmp switch_to_kernel =20 ENTRY(sysenter_entry) + ENDBR64 #ifdef CONFIG_XEN_SHSTK ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c index 6f3c65bedc7a..ab66515a3c75 100644 --- a/xen/arch/x86/x86_64/traps.c +++ b/xen/arch/x86/x86_64/traps.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -295,6 +296,12 @@ static unsigned int write_stub_trampoline( { unsigned char *p =3D stub; =20 + if ( cpu_has_xen_ibt ) + { + place_endbr64(p); + p +=3D 4; + } + /* Store guest %rax into %ss slot */ /* movabsq %rax, stack_bottom - 8 */ *p++ =3D 0x48; @@ -315,10 +322,6 @@ static unsigned int write_stub_trampoline( *(uint64_t *)p =3D stack_bottom - 8; p +=3D 8; =20 - /* Store guest %rsp into %rsp slot */ - /* pushq %rax */ - *p++ =3D 0x50; - /* jmp target_va */ *p++ =3D 0xe9; *(int32_t *)p =3D target_va - (stub_va + (p - stub) + 4); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932089; cv=none; d=zohomail.com; s=zohoarc; b=KY58uFgWG6h56pW9E/kbJpcx5bqRLbZ6w2e4uV1Vb95ClBMeSOKiZQCfkvTJrCrQss6PKYaNPD90SueLMHKXr5UzVwoEYIX5v5kVTo+ektKwaP63jln5LSjhjh75q4fWPl4L3gGjCO9GCvBULfNkAH7NkI51T6yozFw1IR68Vjo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932089; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EXDDYxw1TqBgBOsC/GmLcrqFiuTHPDws0cvpUX+fQXw=; b=CGQs9CILOUCD2LUH+Xz3T2cq6s688PDtMgEM5gNBtpgd+evuPiChCERw/zBdIC7c7devb8t6ZEh7XBRPSaUL6lsJPFS1k5jJvL7RFxB6Gw20lu/siN93xUas6cY7ooDPV0lboimPH7ZyoNJSDyMdkfa5QS/2Unzk/6alldmuP2A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932089571572.369933162201; Fri, 26 Nov 2021 05:08:09 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232856.404024 (Exim 4.92) (envelope-from ) id 1mqaxD-0006zj-F1; Fri, 26 Nov 2021 13:07:51 +0000 Received: by outflank-mailman (output) from mailman id 232856.404024; Fri, 26 Nov 2021 13:07:51 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxD-0006zA-7U; Fri, 26 Nov 2021 13:07:51 +0000 Received: by outflank-mailman (input) for mailman id 232856; Fri, 26 Nov 2021 13:07:50 +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 1mqav5-0002zD-FG for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:39 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 8c37c52e-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:38 +0100 (CET) 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: 8c37c52e-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931938; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KUsZ4Kl0u4zBXJbtydzwrtf6/N87hO+1FCFpIszujeQ=; b=VGmH7D7Ci2nS980UzLcHAFSFqXs3P1qbzwaPxMnloIDJb73E9y72moPQ Sbx72gA7rlUCqsfM5pIZFyOS/We96kL2J7Cz6Fl47ZV74xIHOhMyJwTLK INQSFqEi2Yyxu48CrPjAjtL6toRsuBFqZZKgJatfS6yIwYVnbNikl2cyq U=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: xSwBivzb9jPB7vbbjV2BtbjkjML9dS2pq04YAfs1EiIODJSctJUiDYQkoZwatdcvAfYUmgxCKC R+7Uw68J4In7FpSPqzqTpuVxC1PJvNU0lNXRyKwv9aZ4wBTfPLayXKOZpRVjhazVL//b+b7zkd VlV+A0v2m9JZf1Mjh3X4IL3qL7f+pRRLOdqxGUKCdub3wOefUh2FLNBlHjR7190TyViFAiRor6 rZYXaSnS4DhYo7yHwCjylgZOM1VHADTXBoIjEX3mKUq9IlRaFMocr6oKXjC0F/avT9ZCWiSD2A cdq1uPeeHoKhwgyP4iaBiFPY X-SBRS: 5.1 X-MesageID: 58676411 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:KQ1kY6iuAw77EZCm6P8bdSNNX161rRcKZh0ujC45NGQN5FlHY01je htvDGGOOfqJazDyLtkkaYu3o04OvJHUzINrSFFrrCk8QSgb9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0F0/NtTo5w7Rg29cy34Dja++wk YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx /1Mkr6hZVYnPJbRv7VAVjR0PihRNrxZreqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr KJCbmpXN1ba2rzwkOnTpupE36zPKOHCOo8Ft24m5jbeFfs8GrjIQrnQ5M8e1zA17ixLNauOO ZVHNWM2BPjGS0dVGHdPGdE/pdrynSDybw938E2IhoNitgA/yyQuieOwYbI5YOeiWsF9jkue4 GXc8AzRIDsXKdiewjqt6W+3i6nEmiaTcJIfEvi0++BnhHWXx3cPE1sGWF2ju/67h0WiHdVFJ CQpFjEG9PZoshbxF5+kAkP+8CXsUgMgt8R4EsoY+S3cxKjv/iHIW20pYhNIR9c3q5pjLdA17 WOhk9TsDD1plbSaT3OB67uZxQ+P1TgpwXwqPnFdE1ZcizX3iMRq10+UEI4/eEKgpoStQWmY/ tyckMQpa1z/Z+Yv3r7zw13IiinESnPhHl9svVW/so5IA2pEiG+Zi26AtQezARVodt/xory9U J4swJP2AAcmV8zlqcB1aL9RdIxFHt7cWNEmvXZhHoM66xOm8GO5cIZb7VlWfRkybZZaJGC4P BGP4mu9AaO/2lPxNsebhKrrVqwXIVXIT4y5Bpg4kPISCnSOSON31H43PhPBt4wcuEMtjbs+K f+mnTWEVh4n5VBc5GPuHY81iOZzrghnnD+7bc2rnnyPjOvFDFbIGOhtDbd7Rr1ghE9yiF6Oq Ig32grj40g3bdASlQGLq9NOdg5TciBgbX00wuQOHtO+zsNdMDlJI5fsLXkJIuSJRoxZybXF+ G+TQEhdxAatjHHLM1zSOHtidKnuTdB0qndiZX4gOlOh2n4CZ4ez7fhAK8trLOd/rOEzn+RpS /QletmbBqgdQDrw5DlAP4L2q5ZvdUr3iFvWbTalejU2Y7VpWxfNpo3/ZgLq+SRXVni3uMIyr qeOzATeRZZfFQ1uANyPMKCkzk+rvGhbk+V3BhOaLt5WcUTq0Y5rNy2u0aNnf5BScU3On2LI2 RyXDBEUofj2j7U0qNSZ17qZq4qJEvdlGhYIFWfs8rvrZzLR+XCuwNEcXb/QLyzdTm795I6re f5Rk6PnKPQCkVtH79h8HrJswf5s7tfjveYHnAFtHXGNZFW3ELJwZHKB2JAX5KFKw7ZYvyqwW 16OpYYGaenYZpu9HQ5DPhchY8SCyeoQy2vb4vkCKUnn4DN6oeicWkJIMhjQ0CFQIdOZ6m/+L TvNbCLO1zGCtw== IronPort-HdrOrdr: A9a23:Cv0ix66lSWRrpdSCEwPXwPDXdLJyesId70hD6qhwISY6TiX+rb HWoB17726TtN9/YhEdcLy7VJVoBEmskKKdgrNhWotKPjOW21dARbsKheCJrgEIWReOktK1vZ 0QC5SWY+eQMbEVt6nHCXGDYrQd/OU= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676411" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 61/65] x86/entry: Make syscall/sysenter entrypoints CET-IBT compatible Date: Fri, 26 Nov 2021 12:34:42 +0000 Message-ID: <20211126123446.32324-62-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932091774100001 Each of MSR_{L,C}STAR and MSR_SYSENTER_EIP need to land on an endbr64 instruction. For sysenter, this is easy. Unfortunately for syscall, the stubs are already 29 byte long with a limit = of 32. endbr64 is 4 bytes. Luckily, there is a 1 byte instruction which can move from the stubs into the main handlers. Move the push %rax out of the stub and into {l,c}star_entry(), allowing room for the endbr64 instruction when appropriate. Update the comment describing the entry state. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/x86_64/entry.S | 18 +++++++++--------- xen/arch/x86/x86_64/traps.c | 13 +++++++++---- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 8494b97a54a2..9abcf95bd010 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -241,18 +241,17 @@ iret_exit_to_guest: * When entering SYSCALL from user mode: * Vector directly to the registered arch.syscall_addr. * - * Initial work is done by per-CPU trampolines. At this point %rsp has been - * initialised to point at the correct Xen stack, %rsp has been saved, and - * %rax needs to be restored from the %ss save slot. All other registers a= re - * still to be saved onto the stack, starting with RFLAGS, and an appropri= ate - * %ss must be saved into the space left by the trampoline. + * Initial work is done by per-CPU trampolines. + * - Guest %rax stored in the %ss slot + * - Guest %rsp stored in %rax + * - Xen stack loaded, pointing at the %ss slot */ ENTRY(lstar_enter) #ifdef CONFIG_XEN_SHSTK ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif - /* sti could live here when we don't switch page tables below. */ - movq 8(%rsp),%rax /* Restore %rax. */ + push %rax /* Guest %rsp */ + movq 8(%rsp), %rax /* Restore guest %rax */ movq $FLAT_KERNEL_SS,8(%rsp) pushq %r11 pushq $FLAT_KERNEL_CS64 @@ -288,9 +287,9 @@ ENTRY(cstar_enter) #ifdef CONFIG_XEN_SHSTK ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif - /* sti could live here when we don't switch page tables below. */ + push %rax /* Guest %rsp */ CR4_PV32_RESTORE - movq 8(%rsp), %rax /* Restore %rax. */ + movq 8(%rsp), %rax /* Restore guest %rax. */ movq $FLAT_USER_SS32, 8(%rsp) /* Assume a 64bit domain. Compat h= andled lower. */ pushq %r11 pushq $FLAT_USER_CS32 @@ -323,6 +322,7 @@ ENTRY(cstar_enter) jmp switch_to_kernel =20 ENTRY(sysenter_entry) + ENDBR64 #ifdef CONFIG_XEN_SHSTK ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c index 6f3c65bedc7a..3b9a332efb99 100644 --- a/xen/arch/x86/x86_64/traps.c +++ b/xen/arch/x86/x86_64/traps.c @@ -295,6 +295,15 @@ static unsigned int write_stub_trampoline( { unsigned char *p =3D stub; =20 + if ( cpu_has_xen_ibt ) + { + /* endbr64 */ + *p++ =3D 0xf3; + *p++ =3D 0x0f; + *p++ =3D 0x1e; + *p++ =3D 0xfa; + } + /* Store guest %rax into %ss slot */ /* movabsq %rax, stack_bottom - 8 */ *p++ =3D 0x48; @@ -315,10 +324,6 @@ static unsigned int write_stub_trampoline( *(uint64_t *)p =3D stack_bottom - 8; p +=3D 8; =20 - /* Store guest %rsp into %rsp slot */ - /* pushq %rax */ - *p++ =3D 0x50; - /* jmp target_va */ *p++ =3D 0xe9; *(int32_t *)p =3D target_va - (stub_va + (p - stub) + 4); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932058; cv=none; d=zohomail.com; s=zohoarc; b=KrM5Xej/1LISKrQqIZD5m/oDIzqWbbtw0AJyhukCNsOJGRm0F928XPuOBUfaRA7BqpEIC6F2egliGiz0C7ItRioZeopDhu4fhol/XEsTOKKdysEqLQ+QUv+q5V9Oc9kztL1UGBhC+SXoh6KppOnX5RVlKRpIMHSlmrPnTw5o5eo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932058; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=SZxYbkW3b6GBF5U9viDdPeQfaVMSGNwyjHiVGAVNO3g=; b=oK6CdR3FCj6WIc4NdydgCOsqXIcKxWj+Ez4diN9VFe03WZfqLa8pV+mR24eauZ5wY/waYig7Ay15c19zcKys0M2aY0ccLBVbyGSIOFFLRUOuOSqjC7f3hgDxLBLuZlkY55dyqDMjXEP30IpJ8JGsdP62Xkujf0WgPv/MBhuI7d4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932058201680.9859713069342; Fri, 26 Nov 2021 05:07:38 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232817.403896 (Exim 4.92) (envelope-from ) id 1mqawk-0008JG-5N; Fri, 26 Nov 2021 13:07:22 +0000 Received: by outflank-mailman (output) from mailman id 232817.403896; Fri, 26 Nov 2021 13:07:22 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawj-0008Hy-VL; Fri, 26 Nov 2021 13:07:21 +0000 Received: by outflank-mailman (input) for mailman id 232817; Fri, 26 Nov 2021 13:07:20 +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 1mqavP-0002zD-Li for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:59 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 98288177-4eb9-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 14:05:58 +0100 (CET) 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: 98288177-4eb9-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931958; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vtDK4Lm6UnR4ZAbcZE6B6lPCfdnsXXgGlR9U+vikoZM=; b=AIcPW41nh3a5BIwylumcuTNrXtqDKetx0T0KT+wQ+YJO4A4/owpCAlyz FAgyiFE9+WsEd6FGrKgF917yFgJSSYgpw+kcOp0nMMjLbJ0SflT0pMcTz CWRpZ1j+nCaKokL6KIPivf+mmucyZgoauTuXfi30geeedwYhTnay8PWx6 s=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: Y0EDDO3sfh+2/6bNtzn3Z3M6c3FySYttdkmzca9t+jQBfprYKF8wGjbHTU2jkld97GTWGBCEQt KNlRxsJlINk6fy3efVuKiiv6vgrxtFIBYhCAQ6Ts0Rd6PJNZkro3oFMbk/G668fGW/YGx8V8/K 3YNxGdEsmhXvPhr5IKFFud01N3rKcMuphyUzMXuDqXauPiu51l1xYv0GW2ogQMruL+uciYf3hE 255OBVmT/e5KCHkZqSHZ4wvNG7j9BBNJmGHrtFHtWfzm/SIidJjVCYLuXas7NNmw4vNCrN94pc 7/kVGvBe8Z+TzzJIFIjDrp5L X-SBRS: 5.1 X-MesageID: 58696027 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:LmiHgaDjct/1QxVW/+Tkw5YqxClBgxIJ4kV8jS/XYbTApD5w1jcBy jcbD2CDMvbZYTPxeI8iOdizoEhVv57XyNRmQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMo/u1Si6FatANl1ElvU2zbue6WLGs1hxZH1c+EX5400w7wYbVv6Yz6TSHK1LV0 T/Ni5W31G+Ng1aY5UpNtspvADs21BjDkGtwUm4WPJinj3eH/5UhN7oNJLnZEpfNatI88thW5 Qr05OrREmvxp3/BAz4++1rxWhVirrX6ZWBihpfKMkQLb9crSiEai84G2PQghUh/ggiZjv5uz Od35ZGNcj4jIL/l39U0TEwNe81+FfUuFL7vJHG+tYqYzlHccmuqyPJrZK00FdRGoKAtWzgIr KFGbmBWBvyAr7veLLaTY+9gnMk8auLsO5sSoCpIxjDFF/c2B5vERs0m4PcFjGlh2JgUQp4yY eJIZDZsQQnKTSEXZH0ONqAwnsiWuF7WJmgwRFW9+vNsvjm7IBZK+KfpGMrYfJqNX8o9tmSyq 3/C/m/5KgoHL9HZwj2Amlq8i+mKkS7lVYY6ELyj6uUskFCV3nYUChAdSR28u/bRt6Klc4sBc QpOoHNo9PVsshzwJjXgY/GmiHe5rg8yRN5iKb031Tq0wLTGykGoL3dRG1atd+canMMxQDUr0 HqAkNXoGSFjvdWpdJ6NyluHhWjsYHZIdAfucQdBFFJYuIe7/OnfmzqWFo47eJNZmOEZDt0ZL 9qiiCElz4segscQv0lQ1QCW2mn8znQlo+Nc2+k2Yo5Hxl8mDGJGT9bxgbQ+0RqmBN3CJrVml CJZ8/VyFMhUUfmweNWlGY3h5o2B6fefKyH7ilVyBZQn/DnF0yf9Jt8AvmwhdRs3bp1sldrVj Kn74lg5CHh7ZibCUEOKS9jpV5RCIVbISbwJqcw4nvIRO8MsJWdrDQllZFKK3nCFraTfufpXB HtvSu71VSxyIf0+lFKeHr5BuZd2lnFW7T6CHvjTkkX4uYdykVbIEN/pxnPVNbtnhE5FyS2Im +ti2zyil08CDbagO3aPqub+7zkidBAGOHw/kOQPHsbrH+asMDhJ5yb5zexzdop7sb5Sk+uUr HixVlUBkAj0hGHdKBXMYXdmMeu9UZF6pHM9HCotIVf3hCRzPdfxtP8SJ8ktYL0q1O1/1vooH fMLTNqNX6ZUQTPd9jVDMZSk9N5+dA6mjB6lNja+ZGRtZIZpQgHEo4e2fgbm+CQUIDCwsM8y/ ++p2g/BGMJRTAV+FsfGLvmoygrp73QanetzWWrOI8VSJxqwoNQ7dXSpg6Zucc8WKBjFyj+L7 CqsAE8V9bvXvos40NjVnqTY/Y2nJPRzQxhBFG7B4LfoaSSDpji/wZVNWfqjdCzGUD+m472rY OhYwq2uMPADm1oW4YNwH6wykPA77trr4bRb0h5lDDPAaFHyUuFsJXyP3M9usKxRx+AG5VvqC xzXotQKa6+UPM7FEUIKIFt3Z+uO4vgYhz3O4KlnO079/iJ2oOKKXEg608NgU8CBwG+Z6L8Y/ No= IronPort-HdrOrdr: A9a23:9bD1Q65MZhzjqF9AEgPXwPDXdLJyesId70hD6qhwISY6TiX+rb HWoB17726TtN9/YhEdcLy7VJVoBEmskKKdgrNhWotKPjOW21dARbsKheCJrgEIWReOktK1vZ 0QC5SWY+eQMbEVt6nHCXGDYrQd/OU= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58696027" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 62/65] x86/entry: Make IDT entrypoints CET-IBT compatible Date: Fri, 26 Nov 2021 12:34:43 +0000 Message-ID: <20211126123446.32324-63-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932059654100003 Each IDT vector needs to land on an endbr64 instruction. This is especially important for the #CP handler, which will escalate to #DF if the endbr64 is missing. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/x86_64/compat/entry.S | 1 + xen/arch/x86/x86_64/entry.S | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/x86_64/compat/entry.S b/xen/arch/x86/x86_64/compa= t/entry.S index c84ff7ea6476..5fd6dbbd4513 100644 --- a/xen/arch/x86/x86_64/compat/entry.S +++ b/xen/arch/x86/x86_64/compat/entry.S @@ -12,6 +12,7 @@ #include =20 ENTRY(entry_int82) + ENDBR64 ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP pushq $0 movl $HYPERCALL_VECTOR, 4(%rsp) diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 9abcf95bd010..c5fa4b3c0f41 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -386,6 +386,7 @@ UNLIKELY_END(sysenter_gpf) jmp .Lbounce_exception =20 ENTRY(int80_direct_trap) + ENDBR64 ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP pushq $0 movl $0x80, 4(%rsp) @@ -698,6 +699,7 @@ ENTRY(common_interrupt) jmp ret_from_intr =20 ENTRY(page_fault) + ENDBR64 movl $TRAP_page_fault,4(%rsp) /* No special register assumptions. */ GLOBAL(handle_exception) @@ -872,75 +874,91 @@ FATAL_exception_with_ints_disabled: BUG /* fatal_trap() shouldn't return. */ =20 ENTRY(divide_error) + ENDBR64 pushq $0 movl $TRAP_divide_error,4(%rsp) jmp handle_exception =20 ENTRY(coprocessor_error) + ENDBR64 pushq $0 movl $TRAP_copro_error,4(%rsp) jmp handle_exception =20 ENTRY(simd_coprocessor_error) + ENDBR64 pushq $0 movl $TRAP_simd_error,4(%rsp) jmp handle_exception =20 ENTRY(device_not_available) + ENDBR64 pushq $0 movl $TRAP_no_device,4(%rsp) jmp handle_exception =20 ENTRY(debug) + ENDBR64 pushq $0 movl $TRAP_debug,4(%rsp) jmp handle_ist_exception =20 ENTRY(int3) + ENDBR64 pushq $0 movl $TRAP_int3,4(%rsp) jmp handle_exception =20 ENTRY(overflow) + ENDBR64 pushq $0 movl $TRAP_overflow,4(%rsp) jmp handle_exception =20 ENTRY(bounds) + ENDBR64 pushq $0 movl $TRAP_bounds,4(%rsp) jmp handle_exception =20 ENTRY(invalid_op) + ENDBR64 pushq $0 movl $TRAP_invalid_op,4(%rsp) jmp handle_exception =20 ENTRY(invalid_TSS) + ENDBR64 movl $TRAP_invalid_tss,4(%rsp) jmp handle_exception =20 ENTRY(segment_not_present) + ENDBR64 movl $TRAP_no_segment,4(%rsp) jmp handle_exception =20 ENTRY(stack_segment) + ENDBR64 movl $TRAP_stack_error,4(%rsp) jmp handle_exception =20 ENTRY(general_protection) + ENDBR64 movl $TRAP_gp_fault,4(%rsp) jmp handle_exception =20 ENTRY(alignment_check) + ENDBR64 movl $TRAP_alignment_check,4(%rsp) jmp handle_exception =20 ENTRY(entry_CP) + ENDBR64 movl $X86_EXC_CP, 4(%rsp) jmp handle_exception =20 ENTRY(double_fault) + ENDBR64 movl $TRAP_double_fault,4(%rsp) /* Set AC to reduce chance of further SMAP faults */ ALTERNATIVE "", stac, X86_FEATURE_XEN_SMAP @@ -966,6 +984,7 @@ ENTRY(double_fault) =20 .pushsection .init.text, "ax", @progbits ENTRY(early_page_fault) + ENDBR64 movl $TRAP_page_fault,4(%rsp) SAVE_ALL movq %rsp,%rdi @@ -974,6 +993,7 @@ ENTRY(early_page_fault) .popsection =20 ENTRY(nmi) + ENDBR64 pushq $0 movl $TRAP_nmi,4(%rsp) handle_ist_exception: @@ -1102,12 +1122,14 @@ handle_ist_exception: #endif =20 ENTRY(machine_check) + ENDBR64 pushq $0 movl $TRAP_machine_check,4(%rsp) jmp handle_ist_exception =20 /* No op trap handler. Required for kexec crash path. */ GLOBAL(trap_nop) + ENDBR64 iretq =20 /* Table of automatically generated entry points. One per vector. */ @@ -1136,7 +1158,8 @@ autogen_stubs: /* Automatically generated stubs. */ #endif =20 ALIGN -1: pushq $0 +1: ENDBR64 + pushq $0 movb $vec,4(%rsp) jmp common_interrupt =20 @@ -1146,7 +1169,8 @@ autogen_stubs: /* Automatically generated stubs. */ .elseif vec =3D=3D X86_EXC_CSO || vec =3D=3D X86_EXC_SPV || \ vec =3D=3D X86_EXC_VE || (vec > X86_EXC_CP && vec < TRAP_= nr) =20 -1: test $8,%spl /* 64bit exception frames are 16 byte aligned= , but the word */ +1: ENDBR64 + test $8,%spl /* 64bit exception frames are 16 byte aligned= , but the word */ jz 2f /* size is 8 bytes. Check whether the proces= sor gave us an */ pushq $0 /* error code, and insert an empty one if not= . */ 2: movb $vec,4(%rsp) --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932105; cv=none; d=zohomail.com; s=zohoarc; b=hoxWjo55Tll6QJ5RTIw9beY6AhfSw92kb1MrXP14WJnrE/QOAqlXv9IAfGEQQfvUvrXxTyEa4RXxI/LLeKTb5KRm3gMSyNBHtKt8MA2ZrYD2kZ4Nnjkp3SODcyvYMCCDZux3x92GPmUU33mvtKRvNVHEbzlwnxBLlpLm5xt0lP4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932105; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UULwZv2WwW3UfE/8in73FuEBJSalczR4aT8Hnb2XJ54=; b=ksLFk6gtbnLU5rplbBDQVE4WQ03KZ5y+FcNsEMl/4R30xs20YdnOU+n+0KvKuBo3GBWyk2UGo9hqW9Gbu8cO+nnXJ+AUobIp9QOSKntMEPwDCUDbYvgj50mSntVt4gSMYGPw50bUDf+o1myQreUUyAY9VPy0++MtBHW90xxY7ZI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932105782348.3770148046667; Fri, 26 Nov 2021 05:08:25 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232875.404087 (Exim 4.92) (envelope-from ) id 1mqaxR-0001ca-9o; Fri, 26 Nov 2021 13:08:05 +0000 Received: by outflank-mailman (output) from mailman id 232875.404087; Fri, 26 Nov 2021 13:08:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxQ-0001XF-EP; Fri, 26 Nov 2021 13:08:04 +0000 Received: by outflank-mailman (input) for mailman id 232875; Fri, 26 Nov 2021 13:08:01 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaum-0003W9-BU for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:20 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 801a3d48-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:18 +0100 (CET) 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: 801a3d48-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931918; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xjn85GMBbIR9P9hSa/8Sl+mZVJ+id4k3kzCvHV3KSWQ=; b=RzAu9bkg2cHhdT05XVLR8+obe2uz78zqqx5zt/JFaKxbwTwxfi9oJ05H 05Vlbil39d+aWIxGIF8cwV7h2BgIxcrljqB5afSnxXaXCmOl7knJrM0QO 9xAmTSHHe5zXmM0WG/N3s6iQJtcVuTY9LHwbpa4wWkqf73zx9qzcYVSsY 4=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: QY8y04f07OZwnNF+0vjbYUv51UZ2G1BAr2Q4JGd//Xqzbjcz0R9cUFzGjXr19xkOFOe0ZyJAFg NH1qLab9PG00lcH1EVHQn6O36oALuGxAPp+kwIkOjOvgasew1y2/BPM7UhhnuOGn33W6FAbW0H LewJU/1p3Lxc6QF3AF2A4HEBwM/QLAQ1tpjReUWSW79TwKQlggZcoDQBzwAvczknPkffQ6eUVa toxGis/MNsKUpfz6TD9KWdhPIO+WviVBqfbDEndWFG7HW6J+hr7TztFN8OGxkEdtn8YUi4w0tM HWO+F+HwaU1s7XaqgqTjiX4P X-SBRS: 5.1 X-MesageID: 59064000 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:fk4yu6/Va7Flx3bS9FLADrUDTXmTJUtcMsCJ2f8bNWPcYEJGY0x3y DQbDWGPOffcNmumc94nOtvi800FsZaBy9cxT1drqCo8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGmeIdA970Ug6wrdj3NYy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPh25 IwS5Y3tFj4LAY3QkfUSDylGFz5HaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguwKKsXxMZxZkXZn1TzDVt4tQIzZQrWM7thdtNs1rp0fRaiCP 5JBAdZpRArYWCVSIQoXMoAjlbj2oVzTQTx5sXvA8MLb5ECMlVcsgdABKuH9ZdiiVchT2EGCq Qru3U70HxUbP9y30iee/zSngeqntTP2XsceGaO18tZugUaP3SoDBRsOT1y5rPKlzEmkVLpix 1c8o3R06/JorQryE4e7D0bQTGO4UgA0XPYJTL0rtV606JX0/w+ICTQ0UDpeUYlz3CMpfgAC2 liMltLvIDVgtryJVH6QnoupQSOO1Ts9djFbO3JdJecRy5y6+dxo0EqTJjp2OPft1oWdJN3m/ 9ydQMHSbZ03hNVD6ai09Euvb9mE9smQFV5dCuk6swuYAuJFiGyNO9PABbvzt68owGOlor+p5 yNsdy+2tr1mMH11vHbRKNjh5Znwjxp/DBXSgER0A74q/Cm39niocOh4uW8lexc3b5lVJWG1O yc/XD+9ArcIZxNGioctPuqM5zkCl/C8RbwJqNiIBjaxXnSBXFDep3w/DaJh92vsjFItgckC1 WSzKq6R4YIhIf0/llKeHr5FuZdyn3xW7T6DFPjTkkX8uZLDNSH9dFvwGAbXBgzPxPjf+1u9H hc2H5bi9iizp8WiOHSKqtBKcghRRZX5bLivw/Fqmie4ClIOMAkc5zX5m9vNoqRpwPZYkPnm5 Ha4VhMKwVbznySfew6LdmpiePXkWpMm9SA3OiklPFCJ3Xk/YNnwsPdDJsVvJbR3pvZ+yfNUT uUef5nSCPp4VTmaqS8WaoPwrdI+eU3z1x6OJSesfBM2Y4VkG17S4tbhcwa2rHsOAyO7uNEQu bql0g+HE5MPSx47VJTdae61zkP3tn8YwbogU0zNK9hVWUPt7Ik1dHCh0q5pe5kBcEyRyCGb2 gCaBQYjidPM+4JlosPUga2krpuyF7csFERtAGSGv629MjPX/zT/zNYYAvqIZz3USEj95L6mO bdO1/j5PfAKwARKvo57H+o5xK4y/YKy9bpTzwAiF3TXdVW7TLhnJyDej8VIs6RMwJ5fuBe3B R3TqoULZ+3RNZO3CkMVKSokcv+HhKMdlTTl5PgoJFn3uX1s972dXEQOZxSBhUSx9leu3F/JF Qv5hPMr1g== IronPort-HdrOrdr: A9a23:y0Gu9a4VCkWPJCL01wPXwPDXdLJyesId70hD6qhwISY6TiX+rb HWoB17726TtN9/YhEdcLy7VJVoBEmskKKdgrNhWotKPjOW21dARbsKheCJrgEIWReOktK1vZ 0QC5SWY+eQMbEVt6nHCXGDYrQd/OU= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="59064000" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 63/65] x86/setup: Rework MSR_S_CET handling for CET-IBT Date: Fri, 26 Nov 2021 12:34:44 +0000 Message-ID: <20211126123446.32324-64-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932107896100001 CET-SS and CET-IBT can be independently controlled, so the configuration of MSR_S_CET can't be constants any more. Introduce xen_msr_s_cet_value(), mostly because I don't fancy writing/maintaining that logic in assembly. Use this in the 3 paths which alter MSR_S_CET when both features are potentially active. To active CET-IBT, we only need CR4.CET and MSR_S_CET.ENDBR_EN. This is common with the CET-SS setup, so reorder the operations to set up CR4 and MSR_S_CET for any nonzero result from xen_msr_s_cet_value(), and set up MSR_PL0_SSP and SSP if SHSTK_EN was also set. Adjust the crash path to disable CET-IBT too. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu It is quite possible that the S3 path is dead code. CET-IBT only exist on Intel systems from TigerLake onwards, and TGL kills S3 in favour of the new= er S0ix power state. AMD Ryzen platforms (Zen3 onwards) support S3 and CET-SS, so partial testing will occur there. --- xen/arch/x86/acpi/wakeup_prot.S | 37 ++++++++++++++++++++++--------------- xen/arch/x86/boot/x86_64.S | 29 ++++++++++++++++++----------- xen/arch/x86/crash.c | 4 ++-- xen/arch/x86/setup.c | 17 ++++++++++++++++- xen/include/asm-x86/msr-index.h | 1 + 5 files changed, 59 insertions(+), 29 deletions(-) diff --git a/xen/arch/x86/acpi/wakeup_prot.S b/xen/arch/x86/acpi/wakeup_pro= t.S index 15052c300fa1..01eb26ed0769 100644 --- a/xen/arch/x86/acpi/wakeup_prot.S +++ b/xen/arch/x86/acpi/wakeup_prot.S @@ -63,7 +63,24 @@ ENTRY(s3_resume) pushq %rax lretq 1: -#ifdef CONFIG_XEN_SHSTK +#if defined(CONFIG_XEN_SHSTK) || defined(CONFIG_XEN_IBT) + call xen_msr_s_cet_value + test %eax, %eax + je .L_cet_done + + /* Set up MSR_S_CET. */ + mov $MSR_S_CET, %ecx + xor %edx, %edx + wrmsr + + /* Enable CR4.CET. */ + mov $XEN_MINIMAL_CR4 | X86_CR4_CET, %ecx + mov %rcx, %cr4 + +#if defined(CONFIG_XEN_SHSTK) + test $CET_SHSTK_EN, %eax + je .L_cet_done + /* * Restoring SSP is a little complicated, because we are intercept= ing * an in-use shadow stack. Write a temporary token under the stac= k, @@ -71,14 +88,6 @@ ENTRY(s3_resume) * reset MSR_PL0_SSP to its usual value and pop the temporary toke= n. */ mov saved_ssp(%rip), %rdi - cmpq $1, %rdi - je .L_shstk_done - - /* Set up MSR_S_CET. */ - mov $MSR_S_CET, %ecx - xor %edx, %edx - mov $CET_SHSTK_EN | CET_WRSS_EN, %eax - wrmsr =20 /* Construct the temporary supervisor token under SSP. */ sub $8, %rdi @@ -90,12 +99,9 @@ ENTRY(s3_resume) mov %edi, %eax wrmsr =20 - /* Enable CET. MSR_INTERRUPT_SSP_TABLE is set up later in load_sy= stem_tables(). */ - mov $XEN_MINIMAL_CR4 | X86_CR4_CET, %ebx - mov %rbx, %cr4 - /* Write the temporary token onto the shadow stack, and activate i= t. */ wrssq %rdi, (%rdi) + /* MSR_INTERRUPT_SSP_TABLE is set up later in load_system_tables()= . */ setssbsy =20 /* Reset MSR_PL0_SSP back to its normal value. */ @@ -106,8 +112,9 @@ ENTRY(s3_resume) /* Pop the temporary token off the stack. */ mov $2, %eax incsspd %eax -.L_shstk_done: -#endif +#endif /* CONFIG_XEN_SHSTK */ +.L_cet_done: +#endif /* CONFIG_XEN_SHSTK || CONFIG_XEN_IBT */ =20 call load_system_tables =20 diff --git a/xen/arch/x86/boot/x86_64.S b/xen/arch/x86/boot/x86_64.S index d61048c583b3..c05c69f9fa59 100644 --- a/xen/arch/x86/boot/x86_64.S +++ b/xen/arch/x86/boot/x86_64.S @@ -30,18 +30,25 @@ ENTRY(__high_start) test %ebx,%ebx jz .L_bsp =20 - /* APs. Set up shadow stacks before entering C. */ -#ifdef CONFIG_XEN_SHSTK - testl $cpufeat_mask(X86_FEATURE_XEN_SHSTK), \ - CPUINFO_FEATURE_OFFSET(X86_FEATURE_XEN_SHSTK) + boot_cpu_d= ata(%rip) - je .L_ap_shstk_done + /* APs. Set up CET before entering C properly. */ +#if defined(CONFIG_XEN_SHSTK) || defined(CONFIG_XEN_IBT) + call xen_msr_s_cet_value + test %eax, %eax + je .L_ap_cet_done =20 /* Set up MSR_S_CET. */ mov $MSR_S_CET, %ecx xor %edx, %edx - mov $CET_SHSTK_EN | CET_WRSS_EN, %eax wrmsr =20 + /* Enable CR4.CET. */ + mov $XEN_MINIMAL_CR4 | X86_CR4_CET, %ecx + mov %rcx, %cr4 + +#if defined(CONFIG_XEN_SHSTK) + test $CET_SHSTK_EN, %eax + je .L_ap_cet_done + /* Derive MSR_PL0_SSP from %rsp (token written when stack is alloc= ated). */ mov $MSR_PL0_SSP, %ecx mov %rsp, %rdx @@ -51,13 +58,13 @@ ENTRY(__high_start) or $(PRIMARY_SHSTK_SLOT + 1) * PAGE_SIZE - 8, %eax wrmsr =20 - /* Enable CET. MSR_INTERRUPT_SSP_TABLE is set up later in load_sy= stem_tables(). */ - mov $XEN_MINIMAL_CR4 | X86_CR4_CET, %ecx - mov %rcx, %cr4 + /* MSR_INTERRUPT_SSP_TABLE is set up later in load_system_tables()= . */ setssbsy -#endif =20 -.L_ap_shstk_done: +#endif /* CONFIG_XEN_SHSTK */ +.L_ap_cet_done: +#endif /* CONFIG_XEN_SHSTK || CONFIG_XEN_IBT */ + call start_secondary BUG /* start_secondary() shouldn't return. */ =20 diff --git a/xen/arch/x86/crash.c b/xen/arch/x86/crash.c index c383f718f5bd..003222c0f1ac 100644 --- a/xen/arch/x86/crash.c +++ b/xen/arch/x86/crash.c @@ -190,8 +190,8 @@ void machine_crash_shutdown(void) /* Reset CPUID masking and faulting to the host's default. */ ctxt_switch_levelling(NULL); =20 - /* Disable shadow stacks. */ - if ( cpu_has_xen_shstk ) + /* Disable CET. */ + if ( cpu_has_xen_shstk || cpu_has_xen_ibt ) { wrmsrl(MSR_S_CET, 0); write_cr4(read_cr4() & ~X86_CR4_CET); diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 141957c9f6a5..daaba097d57f 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -661,6 +661,21 @@ static void noreturn init_done(void) startup_cpu_idle_loop(); } =20 +#if defined(CONFIG_XEN_SHSTK) || defined(CONFIG_XEN_IBT) +/* + * Used by AP and S3 asm code to calcualte the appropriate MSR_S_CET setti= ng. + * Do not use on the BSP before reinit_bsp_stack(), or it may turn SHSTK on + * too early. + */ +unsigned int xen_msr_s_cet_value(void) +{ + return ((cpu_has_xen_shstk ? CET_SHSTK_EN | CET_WRSS_EN : 0) | + (cpu_has_xen_ibt ? CET_ENDBR_EN : 0)); +} +#else +unsigned int xen_msr_s_cet_value(void); /* To avoid ifdefary */ +#endif + /* Reinitalise all state referring to the old virtual address of the stack= . */ static void __init noreturn reinit_bsp_stack(void) { @@ -684,7 +699,7 @@ static void __init noreturn reinit_bsp_stack(void) { wrmsrl(MSR_PL0_SSP, (unsigned long)stack + (PRIMARY_SHSTK_SLOT + 1) * PAGE_SIZE= - 8); - wrmsrl(MSR_S_CET, CET_SHSTK_EN | CET_WRSS_EN); + wrmsrl(MSR_S_CET, xen_msr_s_cet_value()); asm volatile ("setssbsy" ::: "memory"); } =20 diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-inde= x.h index ab68ef2681a9..627508233d19 100644 --- a/xen/include/asm-x86/msr-index.h +++ b/xen/include/asm-x86/msr-index.h @@ -115,6 +115,7 @@ #define MSR_S_CET 0x000006a2 #define CET_SHSTK_EN (_AC(1, ULL) << 0) #define CET_WRSS_EN (_AC(1, ULL) << 1) +#define CET_ENDBR_EN (_AC(1, ULL) << 2) =20 #define MSR_PL0_SSP 0x000006a4 #define MSR_PL1_SSP 0x000006a5 --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932116; cv=none; d=zohomail.com; s=zohoarc; b=I1ktm0fzfCggOpcsyWlwwM9ie7A5uimC3BNnuUbP6E6Wi0RmjG+Tg2Z3jm/fbIyQ53+2C/fIEcIH+DDLIRbya46Ft6m4Wv/Yk4DEn9/rLJRziTCKUraO5CD09SK49Ju6WxQbhZoYJ2aw5Hh+ANekjUl8Bm8GoEldaZlksRJeL1U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932116; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=31bEVotdRq3iUCIvte6rAqfb+XNh08r4PT/Y1Zh0yvI=; b=XV+TJbN4+aF0/qaXUreCDiNRMQkS9Zx7IkqUKSPzAaOSqBmqTeJ6bAAZ3qsEM2S9B7zKTD+zNeMph9b8g8xVF/bcZqo2Jck/QL5p73aJyMBeknZ3wChPqqZK/KBh1/LckeaULz7CV0Hm3arY/TNYlvLN/pHIr4Pfn+MifT5j7/g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163793211650568.62891865289987; Fri, 26 Nov 2021 05:08:36 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232889.404139 (Exim 4.92) (envelope-from ) id 1mqaxb-0003y9-SZ; Fri, 26 Nov 2021 13:08:15 +0000 Received: by outflank-mailman (output) from mailman id 232889.404139; Fri, 26 Nov 2021 13:08:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaxa-0003tz-T6; Fri, 26 Nov 2021 13:08:14 +0000 Received: by outflank-mailman (input) for mailman id 232889; Fri, 26 Nov 2021 13:08:11 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqav1-0003W9-Dw for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:35 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 872dc6a3-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:30 +0100 (CET) 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: 872dc6a3-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931930; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BQp5LAqKi9Mysj7MTKO9IkQnzJYceTwiMMvVtxZlU9w=; b=PaouKdFrjJE5h2uXZxUnIFFL+OhEG+pK6Wn4Zt7M4aFP+skezcpHTQKO 4OQaVO/cbiBFqsR52cS5J3TFdNb5XEU5D9RZYSaSoxjCe3vKCd9IVumST dRVdGY8BF3LO+3WYytqb74U/R/MgtrJKIVEwWIXtJ37Cmtfp6J759sMFw M=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: r3rAfdmdu4PgYhns2nMOUSy/qbByDM1l4Opw1udkMe1l6L6GUGLdxGUKwtmdNFt6nJ0Le6i12H Zh0YLipD11tOMHFsNSW9Tz6L5fbA9kAKDs4WXxgInWHvFn42XCQSQNcjDCKUCy8AiREoMm3a/t YA79EVhM8A3WjxZDOv4HQ7m/9ZfBhn+7Jkd4Ce6wvFLoVRThvgj9JGurOhW6oTMMn5xgIA7e8d CiFrsnLZEJrb26LkJuT1h0hjHR45Bcj6KaT4tgyFvw+RoyiE+MHZM4mIcxXiTPi9SKO9D265im Z/rL3mVttoswlFDABxZ1CGF1 X-SBRS: 5.1 X-MesageID: 58676392 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:B2dizKu4EHfxiP0JpdPOvkX+x+fnVJtZMUV32f8akzHdYApBsoF/q tZmKWyFbK7eZ2vyeIp/bY+09E5XscDUnIQ3SQdtqH9hH3kV+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Npli72aZCANF4v3gulaTUR5FwxmFJVU9+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5RGN2E+NnwsZTVea3wuJ8x9uN2h3EOiKh0IpgOljrIotj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO9Mbwiyq7oPy2ByUQXZZbzpscPUepsBjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9YNc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:9e+Kv6PnpClXvsBcTvmjsMiBIKoaSvp037Eqv3oedfUzSL3gqy nOpoV86faaslYssR0b9exofZPwJE80lqQFhrX5X43SPzUO0VHAROoJgLcKgQeQfxEWntQtrZ uIGJIeNDSfNzdHZL7BkWuFL+o= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58676392" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 64/65] x86/efi: Disable CET-IBT around Runtime Services calls Date: Fri, 26 Nov 2021 12:34:45 +0000 Message-ID: <20211126123446.32324-65-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932117195100005 At least one TigerLake NUC has UEFI firmware which isn't CET-IBT compatible. Read under a function pointer to see whether an endbr64 instruction is present, and use this as a heuristic. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu This was disappointing to discover. I've pestered some folk and maybe something will improve in due course, but it remains an open question how b= est to discover that Runtime Services are CET-IBT compatible. --- xen/arch/x86/efi/stub.c | 2 ++ xen/common/efi/boot.c | 6 ++++++ xen/common/efi/runtime.c | 17 +++++++++++++++++ xen/include/xen/efi.h | 1 + 4 files changed, 26 insertions(+) diff --git a/xen/arch/x86/efi/stub.c b/xen/arch/x86/efi/stub.c index 998493262641..5e44913e52db 100644 --- a/xen/arch/x86/efi/stub.c +++ b/xen/arch/x86/efi/stub.c @@ -11,6 +11,8 @@ #include #include =20 +bool __initdata efi_no_cet_ibt; + /* * Here we are in EFI stub. EFI calls are not supported due to lack * of relevant functionality in compiler and/or linker. diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index f5af71837d5a..2c7f86f4f534 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -735,6 +735,12 @@ static void __init efi_init(EFI_HANDLE ImageHandle, EF= I_SYSTEM_TABLE *SystemTabl =20 StdOut =3D SystemTable->ConOut; StdErr =3D SystemTable->StdErr ?: StdOut; + + /* + * Heuristic. Look under an arbitrary function pointer to see if UEFI= was + * compiled with CET-IBT support. Experimentally some are not. + */ + efi_no_cet_ibt =3D memcmp(efi_rs->GetTime, "\xf3\x0f\x1e\xfa", 4) !=3D= 0; } =20 static void __init efi_console_set_mode(void) diff --git a/xen/common/efi/runtime.c b/xen/common/efi/runtime.c index d2fdc28df3e0..ef54863542db 100644 --- a/xen/common/efi/runtime.c +++ b/xen/common/efi/runtime.c @@ -21,6 +21,7 @@ struct efi_rs_state { * don't strictly need that. */ unsigned long __aligned(32) cr3; + unsigned long msr_s_cet; #endif }; =20 @@ -61,6 +62,7 @@ UINTN __read_mostly efi_apple_properties_len; =20 /* Bit field representing available EFI features/properties. */ unsigned int efi_flags; +bool __read_mostly efi_no_cet_ibt; =20 struct efi __read_mostly efi =3D { .acpi =3D EFI_INVALID_TABLE_ADDR, @@ -113,6 +115,17 @@ struct efi_rs_state efi_rs_enter(void) =20 switch_cr3_cr4(mfn_to_maddr(efi_l4_mfn), read_cr4()); =20 + /* + * If UEFI doesn't appear to be CET-IBT compatible, stash and clobber + * ENDBR_EN. Always read the current CET setting, because CET-SS isn't + * configured until very late on the BSP. + */ + if ( cpu_has_xen_ibt && efi_no_cet_ibt ) + { + rdmsrl(MSR_S_CET, state.msr_s_cet); + wrmsrl(MSR_S_CET, state.msr_s_cet & ~CET_ENDBR_EN); + } + return state; } =20 @@ -122,6 +135,10 @@ void efi_rs_leave(struct efi_rs_state *state) =20 if ( !state->cr3 ) return; + + if ( state->msr_s_cet ) + wrmsrl(MSR_S_CET, state->msr_s_cet); + switch_cr3_cr4(state->cr3, read_cr4()); if ( is_pv_vcpu(curr) && !is_idle_vcpu(curr) ) { diff --git a/xen/include/xen/efi.h b/xen/include/xen/efi.h index 94a7e547f97b..8c14f7f18718 100644 --- a/xen/include/xen/efi.h +++ b/xen/include/xen/efi.h @@ -30,6 +30,7 @@ union compat_pf_efi_info; =20 struct xenpf_efi_runtime_call; struct compat_pf_efi_runtime_call; +extern bool efi_no_cet_ibt; =20 bool efi_enabled(unsigned int feature); void efi_init_memory(void); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637944818; cv=none; d=zohomail.com; s=zohoarc; b=Vk0sAhuX6sFZ0VVn+mOwTMaoNVor1vgxoj+VdHYZGABUyIWf3++jZ4ZmUBEcUSv1PLH10ugzNQ2tQhVho/yy/og1veOb6V0Zsn/Q4Hkfo84906omK+A+9T/gZxNjQViM+zuIsKbHDRX74nOTqtSipT9lF31tiIsuwtSgj9rujNg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637944818; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lhqWxUPxNE+GfpzOgHb9kGl6WNksslkZqGfvi5gLZqQ=; b=mijeWdEl/NXcnjV0UoRvD9tqILhSsDxu5FtRK+gtJVztjIEKgIPawteqou6ltZrVr31ZuKlnmLu1pBVru6GLSO8PczuGsSpyHfPNTZ3fZmwA7TS/uQqU1w8f5Zt+pXgU4yNM5RYm3YGAXLp1IkU5bYJ8Kc5EGHso07anJ+YHjA0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637944818944910.583446942774; Fri, 26 Nov 2021 08:40:18 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.233255.404626 (Exim 4.92) (envelope-from ) id 1mqeGM-0002Iz-In; Fri, 26 Nov 2021 16:39:50 +0000 Received: by outflank-mailman (output) from mailman id 233255.404626; Fri, 26 Nov 2021 16:39:50 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqeGM-0002Iq-Fj; Fri, 26 Nov 2021 16:39:50 +0000 Received: by outflank-mailman (input) for mailman id 233255; Fri, 26 Nov 2021 16:39:49 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqeGL-0002Id-21 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 16:39:49 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 76aaaa14-4ed7-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 17:39:47 +0100 (CET) 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: 76aaaa14-4ed7-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637944787; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=h9LW2Z7OcjobSQpDdRkOtRJfqxEd9wK31rMUqlrU7c8=; b=Vr36gQrAm+3Bj+YuBtUMXDkrBEcHQ7pGUydi6t9DnaTSCElwEfux9Zwl P8cnd78xbWm6IypTW8BVS3/Q62wDoNP6XU/LhLbcNgCl1rlOIb1Fw+gKg Q8sXWEnDDYCyHDsQIgeuVYxendCONjEQIbOqIVAZvZ4vduQskJB4KfIqz E=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: wQ/zICD1qPxh/hItQiU9uzFMfE6yks6v2nQ9+901uzFNUQ77QWiMqEaPN/S/pLuxW9GJUaHsNs 0oBvNVO7I/zheiFTH4RoVwKbI7K3fws7owBYhTRPqRhJ9FHUhGLN724+/mdNqkPkUOyNoRwZ5J wS5gcSA9cFKY/4KxQAENIhbnKT9OzOQL2L+tRpjrkhgygNrHFBJ58W1ZxhbaLzCRR5Xuc016Pw vZsCH73VRJWaHw0MPSzBH3Fx2Gr8ZJb3vYgS37FvMZgGrayNGZp0IwA8qvMc/Ltn8MyGFCFnaY ozNKFMctqC15RKFoJPqqFUFh X-SBRS: 5.1 X-MesageID: 58708258 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:FtgpyaujDDRUaKBLHqgtBNFIMOfnVJtZMUV32f8akzHdYApBsoF/q tZmKTrTaPfZM2Wmc49/a4vjph9U6sXQy99lSwY//i8yFi8Q+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Npl5bnpciYEHZz1xKciXyUfEAFhMbMa9+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5VBOWAyPHwsZTVLJlwONdVisdyuuUnvXyd1tBGZqvMotj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO70fsTqs54nl2lraOWQ4CT1hd9A46MBjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9INc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:OPMoEK18qYQ4mrhQPmqJCAqjBIgkLtp133Aq2lEZdPRUGvb4qy nIpoVi6faUskdpZJhOo6HiBEDtexzhHNtOkO0s1NSZLW/bUQmTXeNfBOLZqlWKcUCTygce79 YGT0EXMqyKMbEQt6bHCWeDferIuOP3lZyVuQ== X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58708258" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH v1.1 64/65] x86/efi: Disable CET-IBT around Runtime Services calls Date: Fri, 26 Nov 2021 16:38:30 +0000 Message-ID: <20211126163830.30151-1-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637944820054100001 At least one TigerLake NUC has UEFI firmware which isn't CET-IBT compatible. Read under a function pointer to see whether an endbr64 instruction is present, and use this as a heuristic. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu This was disappointing to discover. I've pestered some folk and maybe something will improve in due course, but it remains an open question how b= est to discover that Runtime Services are CET-IBT compatible. v2: * Switch to endbr helpers. --- xen/arch/x86/efi/stub.c | 2 ++ xen/common/efi/boot.c | 9 +++++++++ xen/common/efi/runtime.c | 17 +++++++++++++++++ xen/include/xen/efi.h | 1 + 4 files changed, 29 insertions(+) diff --git a/xen/arch/x86/efi/stub.c b/xen/arch/x86/efi/stub.c index 998493262641..5e44913e52db 100644 --- a/xen/arch/x86/efi/stub.c +++ b/xen/arch/x86/efi/stub.c @@ -11,6 +11,8 @@ #include #include =20 +bool __initdata efi_no_cet_ibt; + /* * Here we are in EFI stub. EFI calls are not supported due to lack * of relevant functionality in compiler and/or linker. diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index f5af71837d5a..c19f993af922 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -21,6 +21,7 @@ #include #include #ifdef CONFIG_X86 +#include /* * Keep this arch-specific modified include in the common file, as moving * it to the arch specific include file would obscure that special care is @@ -735,6 +736,14 @@ static void __init efi_init(EFI_HANDLE ImageHandle, EF= I_SYSTEM_TABLE *SystemTabl =20 StdOut =3D SystemTable->ConOut; StdErr =3D SystemTable->StdErr ?: StdOut; + +#ifdef CONFIG_X86 + /* + * Heuristic. Look under an arbitrary function pointer to see if UEFI= was + * compiled with CET-IBT support. Experimentally some are not. + */ + efi_no_cet_ibt =3D !is_endbr64(efi_rs->GetTime); +#endif } =20 static void __init efi_console_set_mode(void) diff --git a/xen/common/efi/runtime.c b/xen/common/efi/runtime.c index d2fdc28df3e0..ef54863542db 100644 --- a/xen/common/efi/runtime.c +++ b/xen/common/efi/runtime.c @@ -21,6 +21,7 @@ struct efi_rs_state { * don't strictly need that. */ unsigned long __aligned(32) cr3; + unsigned long msr_s_cet; #endif }; =20 @@ -61,6 +62,7 @@ UINTN __read_mostly efi_apple_properties_len; =20 /* Bit field representing available EFI features/properties. */ unsigned int efi_flags; +bool __read_mostly efi_no_cet_ibt; =20 struct efi __read_mostly efi =3D { .acpi =3D EFI_INVALID_TABLE_ADDR, @@ -113,6 +115,17 @@ struct efi_rs_state efi_rs_enter(void) =20 switch_cr3_cr4(mfn_to_maddr(efi_l4_mfn), read_cr4()); =20 + /* + * If UEFI doesn't appear to be CET-IBT compatible, stash and clobber + * ENDBR_EN. Always read the current CET setting, because CET-SS isn't + * configured until very late on the BSP. + */ + if ( cpu_has_xen_ibt && efi_no_cet_ibt ) + { + rdmsrl(MSR_S_CET, state.msr_s_cet); + wrmsrl(MSR_S_CET, state.msr_s_cet & ~CET_ENDBR_EN); + } + return state; } =20 @@ -122,6 +135,10 @@ void efi_rs_leave(struct efi_rs_state *state) =20 if ( !state->cr3 ) return; + + if ( state->msr_s_cet ) + wrmsrl(MSR_S_CET, state->msr_s_cet); + switch_cr3_cr4(state->cr3, read_cr4()); if ( is_pv_vcpu(curr) && !is_idle_vcpu(curr) ) { diff --git a/xen/include/xen/efi.h b/xen/include/xen/efi.h index 94a7e547f97b..8c14f7f18718 100644 --- a/xen/include/xen/efi.h +++ b/xen/include/xen/efi.h @@ -30,6 +30,7 @@ union compat_pf_efi_info; =20 struct xenpf_efi_runtime_call; struct compat_pf_efi_runtime_call; +extern bool efi_no_cet_ibt; =20 bool efi_enabled(unsigned int feature); void efi_init_memory(void); --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637932056; cv=none; d=zohomail.com; s=zohoarc; b=WIry3jbdlgOpplQsfLjI7iW/LxONa9wZxdcXv8WLJCkh6LwU/l1SlAl+z2RvTeVhHiK++bUp5FAQpq7wERTDi4BZCKEJBw0ekWgtOE5OxmbsQ+EviIkRmfDp1zMdi77xeR1Ngx/RCRewA/lVgmDcXWWZ+d96LK824uxPcA//0ss= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637932056; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=FHIYkqxFKs9FOs6Jg5I/4AGgiEO+qrrOEY2LzWBb7hY=; b=YN0pQsYdrbdmBSEfk5dAt1OlmfDpz7/FszS1lrfop75KgaTsBwyERYpURDJ37Tt6Frq3ERuNxAVCaJ8Yx0gqS5xJJFHXcz5a4aa0b94hS6ljChF7KeLoombaREtVtffzuPu8/3DvgEzWp1Xizog1PJ5S3vW8E29/kWoWuDgU3No= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637932056122787.3407292054566; Fri, 26 Nov 2021 05:07:36 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.232804.403879 (Exim 4.92) (envelope-from ) id 1mqawg-0007Da-4f; Fri, 26 Nov 2021 13:07:18 +0000 Received: by outflank-mailman (output) from mailman id 232804.403879; Fri, 26 Nov 2021 13:07:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqawf-00079D-9c; Fri, 26 Nov 2021 13:07:17 +0000 Received: by outflank-mailman (input) for mailman id 232804; Fri, 26 Nov 2021 13:07:14 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqaug-0003W9-B4 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 13:05:14 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7cd3963a-4eb9-11ec-a9d2-d9f7a1cc8784; Fri, 26 Nov 2021 14:05:12 +0100 (CET) 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: 7cd3963a-4eb9-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637931912; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=746QsnWin6OQb455qcVFN7IMD2ME3Bl0zmu1yTWBR/k=; b=boJok758E2DbyrfNGsW0K1nD22EK5GW2Bcuw0nD1yPlPRuZpjsf4PIUu HBDjCjuiiKOLt5h8ylvzUeFpJu4z9biPxhqkJKRwVWEhTEp26iTvX9x1S 8sld+K90/oocxAWyJeWT076QSejlbdn/JS9nPEZXVSu6mXa6bsSi0M7IQ k=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: RyIhBz+rJqLuLebsns2cQNRKoum3qY911Ub6CMBIynZx3p5kShJvORwI91t6gtehNJ26EdxU03 px/lmGMXc+gxRK3BkN6AOEtTbE0pmjZu4R3JBAL/8nMekGs0OHyjZygwW0Xk5w48+Xvs1ze8Ce Lh2A3sTDRyZ14ZsVBEv1hnxVuxo7X06Z1h/836QHxzA/cjiqtPxBGLEnteV2sp+0gjmjQkJiaE koGsWUDo9GSWVaBYUfwtkv1EuM2U3oM10DKeQRlq69OuIwAM++xs+7YjKfzKkm70iq/vfVchhI U8LLK9h6AJNCGf29C68NHG4q X-SBRS: 5.1 X-MesageID: 58193786 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:R5X73qhfWJcu/mk7Z9PhZS6iX161rRcKZh0ujC45NGQN5FlHY01je htvCjyGOPuMMWX8fdl1bN7l9h9X7J7SztBjSAtk/ygzEn4b9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0F0/NtTo5w7Rg29cy34Dja++wk YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx /1W9o6wSV8LDJbrv/saWAdmKAF8G5J/reqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr KJCbmpXN1ba2rzwkOnTpupE36zPKOHCOo8Ft24m5jbeFfs8GrjIQrnQ5M8e1zA17ixLNauOP ptCNmoxBPjGSwVPCH4RAZZkoOCtplDAcGRq9RGL/4NitgA/yyQuieOwYbI5YOeiWsF9jkue4 GXc8AzRIDsXKdiewjqt6W+3i6nEmiaTcJIfEvi0++BnhHWXx3cPE1sGWF2ju/67h0WiHdVFJ CQpFjEG9PZoshbxF5+kAkP+8CXsUgMgt8R4CK4o6AHV6JjvxCGGAWMacAVhavoZjZpjLdA17 WOhk9TsDD1plbSaT3OB67uZxQ+P1TgpwXwqPnFdE1ZcizX3iMRq10+UEI4/eEKgpoStQWmY/ tyckMQpa1z/Z+Yv3r7zw13IiinESnPhHl9svVW/so5IA2pEiG+Zi26AtQezARVodt/xory9U J4swJP2AAcmV8zlqcB1aL9RdIxFHt7cWNEmvXZhHoM66xOm8GO5cIZb7VlWfRkybZZaJGC4P BGP4mu9AaO/2lPxNsebhKrrVqwXIVXIT4y5Bpg4kPISCnSOSON31H43PhPBt4wcuEMtjbs+K f+mnTWEVh4n5VBc5GPuHY81iOZzrghnnD+7bc2rnnyPjOvFDFbIGOhtDbd7Rr1ghE9yiF6Oq Ig32grj40g3bdASlQGLq9NOdg5TciBgbX00wuQOHtO+zsNdMDlJI5fsLXkJIeSJRoxZybXF+ G+TQEhdxAatjHHLM1zSOHtidKnuTdB0qndiZX4gOlOh2n4CZ4ez7fhAK8trLOd/rOEzn+RpS /QletmbBqgdQDrw5DlAP4L2q5ZvdUr3iFvWbTalejU2Y7VpWxfNpo3/ZgLq+SRXVni3uMIyr qeOzATeRZZfFQ1uANyPMKCkzk+rvGhbk+V3BhOaLt5WcUTq0Y5rNy2u0aNnf5BScU3On2LI2 RyXDBEUofj2j7U0qNSZ17qZq4qJEvdlGhYIFWfs8rvrZzLR+XCuwNEcXb/QLyzdTm795I6re f5Rk6PnKPQCkVtH79h8HrJswf5s7tfjveYHnAFtHXGNZFW3ELJwZHKB2JAX5KFKw7ZYvyqwW 16OpYYGaenYZpu9HQ5DPhchY8SCyeoQy2vb4vkCKUnn4DN6oeicWkJIMhjQ0CFQIdOZ6m/+L TvNbCLO1zGCtw== IronPort-HdrOrdr: A9a23:dIgVs6hpd+3gt94YCVDXHWLOD3BQXuIji2hC6mlwRA09TySZ// rBoB19726MtN9xYgBHpTnuAsm9qB/nmaKdpLNhWItKPzOW31dATrsSjrcKqgeIc0aVm9K1l5 0QF5SWYOeAdWSS5vya3ODXKbkdKaG8gcKVuds= X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58193786" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 65/65] x86: Enable CET Indirect Branch Tracking Date: Fri, 26 Nov 2021 12:34:46 +0000 Message-ID: <20211126123446.32324-66-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637932056718100001 With all the pieces now in place, turn CET-IBT on when available. MSR_S_CET, like SMEP/SMAP, controls Ring1 meaning that ENDBR_EN can't be enabled for Xen independently of PV32 kernels. As we already disable PV32 = for CET-SS, extend this to all CET, adjusting the documentation/comments as appropriate. Introduce a cet=3Dno-ibt command line option to allow the admin to disable = IBT even when everything else is configured correctly. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- docs/misc/xen-command-line.pandoc | 16 +++++++++++---- xen/arch/x86/cpu/common.c | 1 + xen/arch/x86/setup.c | 42 ++++++++++++++++++++++++++++++++++-= ---- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line= .pandoc index f7797ea233f9..ea033c1a1d74 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -271,7 +271,7 @@ enough. Setting this to a high value may cause boot fai= lure, particularly if the NMI watchdog is also enabled. =20 ### cet - =3D List of [ shstk=3D ] + =3D List of [ shstk=3D, ibt=3D ] =20 Applicability: x86 =20 @@ -279,6 +279,10 @@ Controls for the use of Control-flow Enforcement Techn= ology. CET is group a of hardware features designed to combat Return-oriented Programming (ROP, = also call/jmp COP/JOP) attacks. =20 +CET is incompatible with 32bit PV guests. If any CET sub-options are acti= ve, +they will override the `pv=3D32` boolean to `false`. Backwards compatibil= ity +can be maintained with the `pv-shim` mechanism. + * The `shstk=3D` boolean controls whether Xen uses Shadow Stacks for its= own protection. =20 @@ -287,9 +291,13 @@ call/jmp COP/JOP) attacks. `cet=3Dno-shstk` will cause Xen not to use Shadow Stacks even when sup= port is available in hardware. =20 - Shadow Stacks are incompatible with 32bit PV guests. This option will - override the `pv=3D32` boolean to false. Backwards compatibility can = be - maintained with the `pv-shim` mechanism. +* The `ibt=3D` boolean controls whether Xen uses Indirect Branch Trackin= g for + its own protection. + + The option is available when `CONFIG_XEN_IBT` is compiled in, and defa= ults + to `true` on hardware supporting CET-IBT. Specifying `cet=3Dno-ibt` w= ill + cause Xen not to use Indirect Branch Tracking even when support is + available in hardware. =20 ### clocksource (x86) > `=3D pit | hpet | acpi | tsc` diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c index 7c41a21bf07c..9658c31cab48 100644 --- a/xen/arch/x86/cpu/common.c +++ b/xen/arch/x86/cpu/common.c @@ -345,6 +345,7 @@ void __init early_cpu_init(void) if (c->cpuid_level >=3D 7) { cpuid_count(7, 0, &eax, &ebx, &ecx, &edx); c->x86_capability[cpufeat_word(X86_FEATURE_CET_SS)] =3D ecx; + c->x86_capability[cpufeat_word(X86_FEATURE_CET_IBT)] =3D edx; } =20 eax =3D cpuid_eax(0x80000000); diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index daaba097d57f..6cec1918f66b 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -102,6 +102,12 @@ static bool __initdata opt_xen_shstk =3D true; #define opt_xen_shstk false #endif =20 +#ifdef CONFIG_XEN_IBT +static bool __initdata opt_xen_ibt =3D true; +#else +#define opt_xen_ibt false +#endif + static int __init cf_check parse_cet(const char *s) { const char *ss; @@ -120,6 +126,14 @@ static int __init cf_check parse_cet(const char *s) no_config_param("XEN_SHSTK", "cet", s, ss); #endif } + else if ( (val =3D parse_boolean("ibt", s, ss)) >=3D 0 ) + { +#ifdef CONFIG_XEN_IBT + opt_xen_ibt =3D val; +#else + no_config_param("XEN_IBT", "cet", s, ss); +#endif + } else rc =3D -EINVAL; =20 @@ -1102,11 +1116,33 @@ void __init noreturn __start_xen(unsigned long mbi_= p) printk("Enabling Supervisor Shadow Stacks\n"); =20 setup_force_cpu_cap(X86_FEATURE_XEN_SHSTK); + } + + if ( opt_xen_ibt && boot_cpu_has(X86_FEATURE_CET_IBT) ) + { + printk("Enabling Indirect Branch Tracking\n"); + + setup_force_cpu_cap(X86_FEATURE_XEN_IBT); + + if ( efi_no_cet_ibt ) + printk(" - UEFI Runtime Services not IBT safe\n"); + + /* + * Enable IBT now. Only require the ENDBR64 on callees, which is + * entirely build-time arrangements. + */ + wrmsrl(MSR_S_CET, CET_ENDBR_EN); + } + + if ( cpu_has_xen_shstk || cpu_has_xen_ibt ) + { + set_in_cr4(X86_CR4_CET); + #ifdef CONFIG_PV32 if ( opt_pv32 ) { opt_pv32 =3D 0; - printk(" - Disabling PV32 due to Shadow Stacks\n"); + printk(" - Disabling PV32 due to CET\n"); } #endif } @@ -1863,10 +1899,6 @@ void __init noreturn __start_xen(unsigned long mbi_p) =20 alternative_branches(); =20 - /* Defer CR4.CET until alternatives have finished playing with CR0.WP = */ - if ( cpu_has_xen_shstk ) - set_in_cr4(X86_CR4_CET); - /* * NB: when running as a PV shim VCPUOP_up/down is wired to the shim * physical cpu_add/remove functions, so launch the guest with only --=20 2.11.0 From nobody Wed May 1 01:01:45 2024 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; 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1637944496; cv=none; d=zohomail.com; s=zohoarc; b=Ynm3plCOb8BtoZgJynJuXiZnf2TlojSuVthLp5gXkSOm2saGoFmUQoUw0cLpZL0Cter5ODwcLYUCruC0pXLgjEpQKbgC4i0vXjQz8d+IYnzcUnTPUBY2nW1gqPMr9N3ZKi8CbSWq8Piiesyd+5kTGP5kMna834ykxpVQ3KSDEGk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637944496; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=frMeDydFPTrP4ylXwdBvI5+cz5TyWQ85aUDis2vr1rc=; b=L+jQjoK5cj1MDZDhjfugAlD4vShTJc2V9CrlA6U33goY9UdDhTF7l5TJS6qegVG1B3o9tl+Qyq8a94U7I3lXQ93eDN8mFW4VIB9NFSWXjUxH2Bpc9QQg7dnqINEOwOsBJdBQHg/8/DI9LtNnh9KCi+Igxol5xq0oxAvfAvn9DEs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637944496794451.6038139343608; Fri, 26 Nov 2021 08:34:56 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.233235.404581 (Exim 4.92) (envelope-from ) id 1mqeAi-0000Rr-8Z; Fri, 26 Nov 2021 16:34:00 +0000 Received: by outflank-mailman (output) from mailman id 233235.404581; Fri, 26 Nov 2021 16:34:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mqeAi-0000Rk-5X; Fri, 26 Nov 2021 16:34:00 +0000 Received: by outflank-mailman (input) for mailman id 233235; Fri, 26 Nov 2021 16:33:59 +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 1mqeAh-0000Re-23 for xen-devel@lists.xenproject.org; Fri, 26 Nov 2021 16:33:59 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id a5d49001-4ed6-11ec-9787-a32c541c8605; Fri, 26 Nov 2021 17:33:57 +0100 (CET) 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: a5d49001-4ed6-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1637944437; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KYEz55HYjAYxPEm8qBYCpFw4y6kWRbV6ztRd7oOqaJA=; b=WvrHmTftpGN6Q0ezAqdAE5VQf5Au5teR5yIHGwhNywysZ2Wku57IIwD6 NIRBmzh7AF660Xxgkzes19jnYDFA61wEOi/8W2YLTU8xARw4B8Lm3rRGl qIMpszfoIwgjNApKgK3NucbsALw8tXIEDM3AnTOhTjGG8LhjnVgL3kw7t E=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: Y3N6KCa5Nnq1a+ynvFHrqGW7zFkGMYUyORd1SouRYf6P6YfSS0dqUsh0PvczSSi+w+BvSZ9zF1 UdhgQyi5KUYgxgyeoZKdAv+ZOPtq9jtM7VuSh6RQPOcvdInld8pgLpHE0s+6CNYHm/wT7jqiG7 uBO852vbK1lQoyrubqOW0W9lVuHsm6GN4FRrrd12BNRQINHAYuTjQZlwkTq/KUwrFf3ugVAuVI ijkbVChwhyHbNDg/wPI28wOKo2XLN+SiRkPeYFAyoGG6eBAc0th2XLRVv39e3dl/QcU9hQZLSp Z6LFkUWskjABUo1oPMgW3LEu X-SBRS: 5.1 X-MesageID: 58206538 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:7q3XoKu1xEsXix5Y31QeXi/FsufnVJtZMUV32f8akzHdYApBsoF/q tZmKW6GbPaONjGjethwPdnl80IFv8fRz9FgTQdsqig2Ri9H+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx24bhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ NplqLKgEioqN7b1h+kZcTt2NityYbdJ9+qSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DFYUToHx/ixreCu4rW8vrSKTW/95Imjw3g6iiGN6DN 5BBN2c0PHwsZTUXFFQIDrcDmtyUuTq8MB9jkG2/hvsOtj27IAtZj+G2bYu9lsaxbdpRtlaVo CTB5WuRKjMwOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN8x8Y1hfFsrgrxFIC7BkDm5i7f1vIBZzZOO/AU+FqgyaPP2hmUAkomYBtLZIA8u8BjEFTGy WS1t9/uADVutpicRnSc6qqYoFuOBMQFEYMRTXRaFFVYurEPtKl210uSFYg7TMZZm/WsQWmoq w1muhTSkFn6YSQj86ygtW7KjDu3znQiZl5kv16HNo5JA+4QWWJEW2BKwQSEhRqjBNzAJrVkg JTis5PFhAzpJcvQ/BFhuM1XQNmUCw+taVUwe2JHEZg77CiK8HW+Z41W6zwWDB43aZlUJ2K2M RON5Vg5CHpv0J2CNvQfj2WZUZlC8EQdPY69CqC8giRmPvCdizNrDAkxPBXNjggBYWAnkL0lO IfzTCpfJS1yNEiT9xLvH711+eZynkgWnDqPLbimn0XP+efPPxa9FOZaWGZim8hktctoVi2Oq I0BXyZLoj0CONDDjt7/rdROcAtUdCdjXvgbaaV/L4a+H+avI0l5Y9e5/F/rU9YNc319mria8 3ejdFVfzVaj13TLJR/TMiJoaa/1XIY5pnU+ZHR+MVGt0nklQICu8KZAKMdnIeh5rLRunaxuU v0IW8ScGfATGD7JzCsQMMvmp4t4eRX12Q/XZ3i5YCIydoJLThDS/oO2ZRPm8SQDV3LltcY3r 7C6+BncRJ4PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4GTWPV2qm7aHvB9W25zI4eDOvRJWLBVHn58bmJb PlOy62uK+UOmVtHvtYuE7tvyq5itdLjq6UDk1ZhFXTPKV+qFqlhMj+N2swW7v9BwbpQuA2XX EOT+4YFZeXVaZ29SFNBdhA4aumj1O0PnmiA5Ps4F0z2+Str8efVSk5VJRSN1HRQIbYd3FnJG gv9VBr6MzCCtyc= IronPort-HdrOrdr: A9a23:5W/Pm6w9dTxYf486RQubKrPwFr1zdoMgy1knxilNoRw8SK2lfq eV7YwmPH7P+U8ssR4b6LO90cW7Lk80sKQFhbX5Xo3SOjUO2lHYTr2KhLGKq1aLdkHDH6xmpM BdmsBFeabN5DNB7foSjjPXLz9Z+qjjzJyV X-IronPort-AV: E=Sophos;i="5.87,266,1631592000"; d="scan'208";a="58206538" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 59.5/65] x86: Introduce helpers/checks for endbr64 instructions Date: Fri, 26 Nov 2021 16:33:40 +0000 Message-ID: <20211126163340.26714-1-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211126123446.32324-1-andrew.cooper3@citrix.com> References: <20211126123446.32324-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1637944498522100001 ... to prevent the optimiser creating unsafe code. See the code comment for full details. Also add a build time check for endbr64 embedded in imm32 operands, which catches the obvious cases where the optimiser has done an unsafe thing. Signed-off-by: Andrew Cooper Acked-by: Dario Faggioli Acked-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/Makefile | 4 ++++ xen/include/asm-x86/endbr.h | 55 +++++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 59 insertions(+) create mode 100644 xen/include/asm-x86/endbr.h diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index 69b6cfaded25..64a5c0d20018 100644 --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -190,6 +190,10 @@ $(TARGET)-syms: prelink.o xen.lds $(MAKE) -f $(BASEDIR)/Rules.mk efi-y=3D $(@D)/.$(@F).1.o $(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \ $(@D)/.$(@F).1.o -o $@ +ifeq ($(CONFIG_XEN_IBT),y) + $(OBJDUMP) -d $@ | grep 0xfa1e0ff3 >/dev/null && \ + { echo "Found embedded endbr64 instructions" >&2; false; } || : +endif $(NM) -pa --format=3Dsysv $(@D)/$(@F) \ | $(BASEDIR)/tools/symbols --all-symbols --xensyms --sysv --sort \ >$(@D)/$(@F).map diff --git a/xen/include/asm-x86/endbr.h b/xen/include/asm-x86/endbr.h new file mode 100644 index 000000000000..47f766024c12 --- /dev/null +++ b/xen/include/asm-x86/endbr.h @@ -0,0 +1,55 @@ +/*************************************************************************= ***** + * include/asm-x86/endbr.h + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; If not, see . + * + * Copyright (c) 2021 Citrix Systems Ltd. + */ +#ifndef XEN_ASM_ENDBR_H +#define XEN_ASM_ENDBR_H + +#include + +/* + * In some cases we need to inspect/insert endbr64 instructions. + * + * The naive way, mem{cmp,cpy}(ptr, "\xf3\x0f\x1e\xfa", 4), optimises unsa= fely + * by placing 0xfa1e0ff3 in an imm32 operand, which marks a legal indirect + * branch target as far as the CPU is concerned. + * + * gen_endbr64() is written deliberately to avoid the problematic operand,= and + * marked __const__ as it is safe for the optimiser to hoist/merge/etc. + */ +static inline uint32_t __attribute_const__ gen_endbr64(void) +{ + uint32_t res; + + asm ( "mov $~0xfa1e0ff3, %[res]\n\t" + "not %[res]\n\t" + : [res] "=3Dr" (res) ); + + return res; +} + +static inline bool is_endbr64(const void *ptr) +{ + return *(const uint32_t *)ptr =3D=3D gen_endbr64(); +} + +static inline void place_endbr64(void *ptr) +{ + *(uint32_t *)ptr =3D gen_endbr64(); +} + +#endif /* XEN_ASM_ENDBR_H */ --=20 2.11.0