From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956674; cv=none; d=zohomail.com; s=zohoarc; b=iI/swyjGhezu1kVaqo+XJGWJUgvS+pDigEZ/qUQD2qKiybz5JK8d0f8W4y6Nb7oQbSk0jV5XQ9axDgWOQ2tTCGo9Q5Z5a9iS1lvPKkH6hW+A/fvDzrsf1ICoRPQB/ZDcezoUETTAm9n0/vxO0XbijICrs+9gE0R69C8HGfLlQF4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956674; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eZ6SZ4ba4nhrBe95M28NmTJI8Qq1jIqB20FYpZGCsQQ=; b=lZZ0egDujYBWR//u86KQQS1j/BkMBwbSAAM9Ux3yfqOLGf1xSnqJenOc1perAC9Q3lWv71sbg+4npebXpYPtHv7Pn67TZsZfxDmm+M4QGpCbXOFsrMBov+pM1xHzUoFtZgL9+pGxCwsX/azYqrNQh0Onqkyv59MLsPLFJok2Rks= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786956674653344.1684855782539; Mon, 17 Aug 2026 01:51:14 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392639.1631602 (Exim 4.92) (envelope-from ) id 1wvt3e-000193-PU; Mon, 17 Aug 2026 08:51:02 +0000 Received: by outflank-mailman (output) from mailman id 1392639.1631602; Mon, 17 Aug 2026 08:51: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 1wvt3e-00018w-Mx; Mon, 17 Aug 2026 08:51:02 +0000 Received: by outflank-mailman (input) for mailman id 1392639; Mon, 17 Aug 2026 08:51:01 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt3d-00018o-Ny for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:51:01 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt3c-009PrU-Nk for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:51:00 +0200 Received: from [10.42.69.1] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cb69-8faa-0a2a0a5109dd-0a2a4501dc7a-42 for ; Mon, 17 Aug 2026 10:51:00 +0200 Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com) by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cb74-5984-0a2a45010019-d155dd2fdde4-3 for ; Mon, 17 Aug 2026 10:51:00 +0200 Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-482938466a7so1803982f8f.1 for ; Mon, 17 Aug 2026 01:51:00 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482a5a315bfsm2197432f8f.1.2026.08.17.01.50.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:50:59 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956660; x=1787561460; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=eZ6SZ4ba4nhrBe95M28NmTJI8Qq1jIqB20FYpZGCsQQ=; b=e2nFJh2dXohPstzE60uVMhHMmtscwe76LwHEuByRI2K7JsoBnm+m38He3fnBPwUL4n tNOLKchVbISjav9s4qrO4YJi23n+k2DjelKInWBhbF3mz4lPGYIl5ZbhP6C+eqiYF6+2 HOIb599NllZktUytTV1RCr87w4Kku5SGlpHA9JIo98a/3sjqC77t0Pc/VePGSdYoLw8h kVh5Qr9nInWuhjj/vloC+JZOajj9lJcIHZHi5MxG5P9AiLdl5LNqRaIEdztXB9/2nKX1 qv1cah6M9/BMypMKQMPMUS0vFAVmtwIdz7CZuksDQdOfc1kHMdmVO1Pj7kZBHG6VXCVK GnDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956660; x=1787561460; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=eZ6SZ4ba4nhrBe95M28NmTJI8Qq1jIqB20FYpZGCsQQ=; b=r0DbxGitXgUBLSQIhzkJBH/nC+DR08x9D8lx5lueRwvKl+obgryb3xFaamy8z/4/W8 AyqPyKfbmgHFeh8kkUM7X4FDdEdWQ+ZhLwro0xe27H0shTJZRzIIfx4b2U0p/Qybcbjm 9E0EU4EkvIxMq2yqZt+EPXpQ8T5EoaoG/kYwpCovCkPhWvc/+CwhIowDD1CQe/54RRyL AF6yqN2m4ZkBmkDeJd2efYFM4eMw3PmAM8edGXlm9Q/ljcFkhJjUIuv8m+TPQ6egOBGx 9smnbNSdXEUKprzwFuUsZg26bvIBD6L0Z8J1jH2KPEnjSap3tvkDRozlNpkEUOHys7ko nbDg== X-Gm-Message-State: AOJu0YwVYEbSIg5bPkMMYuzcq6O3gn7zwS5H0/WTbPHtEMC/cL9Lb8Bk ZYCDvKtbM9897Vq1K/yelEVPRLMFkdK/QKvl7abwAa7HZQiSrlxnlj2KYP0Suk0bNQJSxfa7VQr Nfr3UQw== X-Gm-Gg: AR+sD12h7wY3sH3JDlXbOnCcKhRKeDHTqgfzl/rvtcrCBYKsydRCy/+t1yL1+RpFTnQ NvGm6CV7YDFmi31CO8obVCMmAe7HN3+jhypPP1n7UjcA0dRpUIK3mQDCPgN28scm3Rc5m/bPQbg HyGQ2Osc7qYFFGn23DiaccN1qbZenG6MTJOcqj0GkHD8h+zB4otgH4nkBSgTGMBBLNBTK9eqP/v nLZuPFAfivjSIekbikiEirXzJrs4jtXdog+ITra16mhfB8yUYlScq24seakrYFGy72vJIArqKdu fsbEo22z+m/+NtAhzuoLc70Duxxhm6APE4YXHhmtg3zYvcoRMabB/9GoQ2NIg9w0k86AcEB5wy8 Fi9ZEnTgNXPnfQGq0D8gMANGe4mQYmSkXq0aXxUhIuPbXIyYgtGm0L3XYMYEUDRNY5MUof8SQeV enSqvYayzgfIrhawscxqnspi83RTAg5LEtLrveJmV3NkLPEP1KLj8enw8Usm+T0zuYhdDKjoauU SZMi9CGHsH7LOEfwIcVCY7d77xwNGODFGzgW3wlZrr1y2nwTEDgJrSyjXhGnvQ= X-Received: by 2002:a05:6000:29da:b0:47f:c648:e274 with SMTP id ffacd0b85a97d-4816070be36mr27859706f8f.5.1786956660114; Mon, 17 Aug 2026 01:51:00 -0700 (PDT) Message-ID: <8df4fd76-2f19-436c-937f-e1cce371bbc5@suse.com> Date: Mon, 17 Aug 2026 10:51:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 01/14] XSM: make xsm_default_action() const-correct From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Frediano Ziglio , Jason Andryuk References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d62444/1786956660-BFA6E757-E0AC9521/0/0 X-purgate-type: clean X-purgate-size: 651 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956675579158500 Content-Type: text/plain; charset="utf-8" To be able to properly use const on dummy hook function parameters, add const to both domain pointers. Signed-off-by: Jan Beulich Reviewed-by: Jason Andryuk --- v2: Split off from Argo patch. --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -76,7 +76,7 @@ void __xsm_action_mismatch_detected(void #endif /* CONFIG_XSM */ =20 static always_inline int xsm_default_action( - xsm_default_t action, struct domain *src, struct domain *target) + xsm_default_t action, const struct domain *src, const struct domain *t= arget) { switch ( action ) { case XSM_HOOK: From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956707; cv=none; d=zohomail.com; s=zohoarc; b=UDu6MZ9l8s7Coc1sd0E369ss/lSEPhBHUHGag8VjRzl/4OdZtsHFagrnpKfu6P5LkmG6+19NZnOH+7+TZGEItlFAeqICMUvJVbdfwJ/yAd3WlSeBf608F0ezLTk7iuo9iRW7y1Cw9b+SE8zY9MNkBzc2KxohGzbaXyqP6cxHK1c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956707; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0/b/DUjZscGxl9LgcIBjaXV0FG4JzY7JAueSN3/ZjzM=; b=nFCqaroes4J1EaFbRk9AiNkXF6Ba5Bc11IJDU5ZEtFXj6dzctEtVsCB+T0Ibc8b2kjlyZZ32nBwzRaNMIIFWJnJQIURIiKV9FK4yeAvBJA6vj6CaL5fLCYh/ca2h74SaQrl9g7Os1zZLE6lKR0fKVJDqHleKHQ6bfFhunKuWhXQ= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 178695670780434.60269407570593; Mon, 17 Aug 2026 01:51:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392645.1631612 (Exim 4.92) (envelope-from ) id 1wvt47-0001aB-0T; Mon, 17 Aug 2026 08:51:31 +0000 Received: by outflank-mailman (output) from mailman id 1392645.1631612; Mon, 17 Aug 2026 08:51:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt46-0001a4-U3; Mon, 17 Aug 2026 08:51:30 +0000 Received: by outflank-mailman (input) for mailman id 1392645; Mon, 17 Aug 2026 08:51:29 +0000 Received: from mx.expurgate.net ([195.190.135.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt45-0001Zu-Hf for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:51:29 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt44-00GMDv-UI for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:51:28 +0200 Received: from [10.42.69.1] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cb76-e002-0a2a0a5209dd-0a2a4501d510-46 for ; Mon, 17 Aug 2026 10:51:28 +0200 Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com) by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cb90-5984-0a2a45010019-d155dd2ee9ae-3 for ; Mon, 17 Aug 2026 10:51:28 +0200 Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-47f7027ca11so1885740f8f.3 for ; Mon, 17 Aug 2026 01:51:28 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49996100073sm153443635e9.3.2026.08.17.01.51.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:51:27 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956688; x=1787561488; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=0/b/DUjZscGxl9LgcIBjaXV0FG4JzY7JAueSN3/ZjzM=; b=VcOU5bV+okLK/R72shYSIdSZOOtRxE3TzDRxZCwcBhuHfPH06TqUgWg6Xz2Q9Kb6K7 e1oHSL0icWkhbz6MoIAlxyl7OPqNwvLWleVmXO+2xGGuG3J7f5tRM+i3zoqCkolVd4Sz RKxTirDrM77+7Lx4ncGKZgUmALO9L15yWtHaRoKqbr90D7D6zBSTiWFoTQJAZAtpR78G X72PA+/zWOK0lOM9oA6UCDMaJgYeljUGplpmTKSyTS29twEfrg4JbUtYaaCNxh3JVwGN wOQni3HswMYbHgPw5ZgijKRcSG++ycJoYtAsWXlnRrOWhTwU5l0xZGKqfiSGsY6MoFHO lE0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956688; x=1787561488; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=0/b/DUjZscGxl9LgcIBjaXV0FG4JzY7JAueSN3/ZjzM=; b=TivNCezgy9IMi8v4lY3ISDazLjQ2n5JBnOdue27gieswpK+Er1mLpjJJVsXUh10VGV QzxMlqWWUAxwfbvtWjM/JDPwzXZ1RFo3MLbFvwfNnDB38zTJvvn1oSZXZ7wrgCyKiWw1 PBe8DD5Nu5Ph49vOFgaOwyIq4Tq3G4Z3HXnojv0PFdwpXIl3bCx9BLkcYK0yS+a1c+Jh c/tAidK8Q+dl/+sI/ev12CbGNUYd2x+lwXRd4gWgWNyQYH8sA/co/j/juXOOlRN4Gc20 ySfaXa9GfvXr+bbOOL99VfzkuTjCjuihK4AcoWaMBJ3lc2f0Qj0BLvJgSVT1ZjyXSQha 2Ivg== X-Gm-Message-State: AOJu0YxlIQ2hWfAObhabgG34CWDxBuDHxXe5b20ILuXqonL+vCRZnJMd Phwv5Z0odjnDmsX/T/qu3KaCBDiCpxK8Ja3BnyQ0vRTpS+bgjDLMe4BSE0rCxYzKV2fCx4++bPF fSXOSEQ== X-Gm-Gg: AR+sD10IdGNBONBtU/hcBzwKSckh+jjz/o3pGpeHEXpmRkCpyt+XSNcBagGoZXpGPyR zBM3cgG9/ailjQBWkdMYOCpo7T2CSPBpIbyKPcEGf04+YWM5khXucp5hDGd/m8f1scC+SJmTdhd 7q2/e5nYRJN50eisQPQaFpxOK4/XprOy111MJLi1+Im33dV/Ew5i39f3zPXexHpOCph7NUlSUgm JoeTc82EmyQpmWilL444JBX/OGN9vsoLH90uxWd5Fu8O1jLk1RDe0GHFc/8CNv9gq8PpsTiHciB 6sh4S2S+Skt8OUb0TZzUK8/ynkZ4Vh02HqJlXVqg8ZD7hJf4BI71xzk3jz/dEoem0GfwBtIL/Jb 8NuKhOnU7/YfP2KmnFi1U+91JDC5E8g5k2x1nHF239y2lFetoonf2CxZipSpfxIxvCtXxGCXRac /NLB86Zz5QigBGwnP7VyiKfcpssxd5IqFVylu8+r/kw7FgPvOCLNxLDEnnxDZ5ne9PLpG+T/Lyq +jRj7uXoTnH0hgr3tfhR+HMJhTgBc/lMBj4dZZvw8CFz+P6KJSt X-Received: by 2002:a05:600c:1c21:b0:499:90f3:13b8 with SMTP id 5b1f17b1804b1-49990f315e9mr185511605e9.12.1786956688264; Mon, 17 Aug 2026 01:51:28 -0700 (PDT) Message-ID: <1a4dd743-a64d-4657-b3c2-c9759799a36b@suse.com> Date: Mon, 17 Aug 2026 10:51:29 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 02/14] XSM: convert "allow" (Flask: "access") parameters to bool From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Andrew Cooper , Teddy Astie , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d62444/1786956688-BCD44757-12059775/0/0 X-purgate-type: clean X-purgate-size: 9742 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956709799158500 Content-Type: text/plain; charset="utf-8" These are boolean, so they should always have used bool (originally bool_t), not uint8_t. Leverage recent changes to arrange for this with (now) fewer places which need changing (within the XSM machinery itself). Adjust call sites as well, where the conversion wasn't done so far. While doing this, rename flask_io{port,mem}_mapping()'s last parameters to "map". Signed-off-by: Jan Beulich Acked-by: Daniel P. Smith --- Why is it that Arm doesn't use xsm_irq_permission() at all? Same for Arm64 vs xsm_pci_config_permission(). --- v2: Rename flask_io{port,mem}_mapping()'s last parameters to "map". --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -235,7 +235,7 @@ long arch_do_domctl( { unsigned int fp =3D domctl->u.ioport_permission.first_port; unsigned int np =3D domctl->u.ioport_permission.nr_ports; - int allow =3D domctl->u.ioport_permission.allow_access; + bool allow =3D domctl->u.ioport_permission.allow_access; =20 ret =3D -EINVAL; if ( (fp + np) <=3D fp || (fp + np) > MAX_IOPORTS ) @@ -306,7 +306,8 @@ long arch_do_domctl( break; } =20 - ret =3D xsm_irq_permission(XSM_PRIV, d, irq, flags); + ret =3D xsm_irq_permission(XSM_PRIV, d, irq, + flags & XEN_DOMCTL_GSI_ACTION_MASK); if ( ret ) break; =20 @@ -687,7 +688,7 @@ long arch_do_domctl( unsigned int fgp =3D domctl->u.ioport_mapping.first_gport; unsigned int fmp =3D domctl->u.ioport_mapping.first_mport; unsigned int np =3D domctl->u.ioport_mapping.nr_ports; - unsigned int add =3D domctl->u.ioport_mapping.add_mapping; + bool add =3D domctl->u.ioport_mapping.add_mapping; struct hvm_domain *hvm; struct g2m_ioport *g2m_ioport; int found =3D 0; --- a/xen/arch/x86/pci.c +++ b/xen/arch/x86/pci.c @@ -78,7 +78,7 @@ int pci_conf_write_intercept(unsigned in { struct pci_dev *pdev; int rc =3D xsm_pci_config_permission(XSM_HOOK, current->domain, bdf, - reg, reg + size - 1, 1); + reg, reg + size - 1, true); =20 if ( rc < 0 ) return rc; --- a/xen/arch/x86/pv/emul-priv-op.c +++ b/xen/arch/x86/pv/emul-priv-op.c @@ -260,7 +260,7 @@ static bool pci_cfg_ok(struct domain *cu =20 return !write ? xsm_pci_config_permission(XSM_HOOK, currd, machine_bdf, - start, start + size - 1, 0) =3D=3D 0 : + start, start + size - 1, false) =3D= =3D 0 : pci_conf_write_intercept(0, machine_bdf, start, size, write) >= =3D 0; } =20 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -505,21 +505,21 @@ static XSM_INLINE int xsm_unmap_domain_i } =20 static XSM_INLINE int xsm_irq_permission( - XSM_DEFAULT_ARG struct domain *d, int pirq, uint8_t allow) + XSM_DEFAULT_ARG struct domain *d, int pirq, bool allow) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, d); } =20 static XSM_INLINE int xsm_iomem_permission( - XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, uint8_t allo= w) + XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, bool allow) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, d); } =20 static XSM_INLINE int xsm_iomem_mapping( - XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, uint8_t allo= w) + XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, bool allow) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); @@ -527,7 +527,7 @@ static XSM_INLINE int xsm_iomem_mapping( =20 #ifdef CONFIG_HAS_VPCI static XSM_INLINE int xsm_iomem_mapping_vpci( - XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, uint8_t allo= w) + XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, bool allow) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); @@ -537,7 +537,7 @@ static XSM_INLINE int xsm_iomem_mapping_ #ifdef CONFIG_HAS_PCI static XSM_INLINE int xsm_pci_config_permission( XSM_DEFAULT_ARG struct domain *d, uint32_t machine_bdf, uint16_t start, - uint16_t end, uint8_t access) + uint16_t end, bool access) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); @@ -709,14 +709,14 @@ static XSM_INLINE int xsm_priv_mapping( } =20 static XSM_INLINE int xsm_ioport_permission( - XSM_DEFAULT_ARG struct domain *d, uint32_t s, uint32_t e, uint8_t allo= w) + XSM_DEFAULT_ARG struct domain *d, uint32_t s, uint32_t e, bool allow) { XSM_ASSERT_ACTION(XSM_PRIV); return xsm_default_action(action, current->domain, d); } =20 static XSM_INLINE int xsm_ioport_mapping( - XSM_DEFAULT_ARG struct domain *d, uint32_t s, uint32_t e, uint8_t allo= w) + XSM_DEFAULT_ARG struct domain *d, uint32_t s, uint32_t e, bool allow) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -77,12 +77,12 @@ XSM_HOOK(int, unmap_domain_irq, struct d XSM_HOOK(int, bind_pt_irq, struct domain *, struct xen_domctl_bind_pt_irq = *) XSM_HOOK(int, unbind_pt_irq, struct domain *, struct xen_domctl_bind_pt_ir= q *) =20 -XSM_HOOK(int, irq_permission, struct domain *, int, uint8_t) -XSM_HOOK(int, iomem_permission, struct domain *, uint64_t, uint64_t, uint8= _t) +XSM_HOOK(int, irq_permission, struct domain *, int, bool) +XSM_HOOK(int, iomem_permission, struct domain *, uint64_t, uint64_t, bool) =20 -XSM_HOOK(int, iomem_mapping, struct domain *, uint64_t, uint64_t, uint8_t) +XSM_HOOK(int, iomem_mapping, struct domain *, uint64_t, uint64_t, bool) #ifdef CONFIG_HAS_VPCI -XSM_HOOK(int, iomem_mapping_vpci, struct domain *, uint64_t, uint64_t, uin= t8_t) +XSM_HOOK(int, iomem_mapping_vpci, struct domain *, uint64_t, uint64_t, boo= l) #endif =20 #if defined(CONFIG_HAS_PASSTHROUGH) && defined(CONFIG_HAS_PCI) @@ -97,7 +97,7 @@ XSM_HOOK(int, resource_setup_misc) XSM_HOOK(int, resource_setup_pci, uint32_t) XSM_HOOK(int, resource_setup_gsi, int) XSM_HOOK(int, pci_config_permission, struct domain *, uint32_t, uint16_t, - uint16_t, uint8_t) + uint16_t, bool) #endif =20 #ifdef CONFIG_HYPFS @@ -142,8 +142,8 @@ XSM_HOOK(int, mmuext_op, struct domain * XSM_HOOK(int, update_va_mapping, struct domain *, struct domain *, l1_pgen= try_t) #endif /* CONFIG_PV */ XSM_HOOK(int, priv_mapping, struct domain *, struct domain *) -XSM_HOOK(int, ioport_permission, struct domain *, uint32_t, uint32_t, uint= 8_t) -XSM_HOOK(int, ioport_mapping, struct domain *, uint32_t, uint32_t, uint8_t) +XSM_HOOK(int, ioport_permission, struct domain *, uint32_t, uint32_t, bool) +XSM_HOOK(int, ioport_mapping, struct domain *, uint32_t, uint32_t, bool) XSM_HOOK(int, pmu_op, struct domain *, unsigned int) #endif /* CONFIG_X86 */ =20 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -998,7 +998,7 @@ static int cf_check flask_sysctl(const s } #endif /* CONFIG_SYSCTL */ =20 -static inline uint32_t resource_to_perm(uint8_t access) +static inline uint32_t resource_to_perm(bool access) { if ( access ) return RESOURCE__ADD; @@ -1166,7 +1166,7 @@ static int cf_check flask_unbind_pt_irq( } =20 static int cf_check flask_irq_permission( - struct domain *d, int pirq, uint8_t access) + struct domain *d, int pirq, bool access) { /* the PIRQ number is not useful; real IRQ is checked during mapping */ return current_has_perm(d, SECCLASS_RESOURCE, resource_to_perm(access)= ); @@ -1199,7 +1199,7 @@ static int cf_check _iomem_has_perm( } =20 static int cf_check flask_iomem_permission( - struct domain *d, uint64_t start, uint64_t end, uint8_t access) + struct domain *d, uint64_t start, uint64_t end, bool access) { struct iomem_has_perm_data data; int rc; @@ -1221,16 +1221,17 @@ static int cf_check flask_iomem_permissi return security_iterate_iomem_sids(start, end, _iomem_has_perm, &data); } =20 -static int cf_check 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, bool map) { - return flask_iomem_permission(d, start, end, access); + return flask_iomem_permission(d, start, end, map); } #define flask_iomem_mapping_vpci flask_iomem_mapping =20 #ifdef CONFIG_HAS_PCI static int cf_check flask_pci_config_permission( struct domain *d, uint32_t machine_bdf, uint16_t start, uint16_t end, - uint8_t access) + bool access) { uint32_t dsid, rsid; int rc =3D -EPERM; @@ -1709,7 +1710,7 @@ static int cf_check _ioport_has_perm( } =20 static int cf_check flask_ioport_permission( - struct domain *d, uint32_t start, uint32_t end, uint8_t access) + struct domain *d, uint32_t start, uint32_t end, bool access) { int rc; struct ioport_has_perm_data data; @@ -1733,9 +1734,9 @@ static int cf_check flask_ioport_permiss } =20 static int cf_check flask_ioport_mapping( - struct domain *d, uint32_t start, uint32_t end, uint8_t access) + struct domain *d, uint32_t start, uint32_t end, bool map) { - return flask_ioport_permission(d, start, end, access); + return flask_ioport_permission(d, start, end, map); } =20 #ifdef CONFIG_MEM_SHARING From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956736; cv=none; d=zohomail.com; s=zohoarc; b=CXg7QW/QwtqBiokHgQH800kd7Woh7yNq+0D51ZRr27H7LMrBWOM9BF9N5ieu3JLv4Y2ciP48/ot5qB38xE68+SX+KqNuosPA/hTFSBJPtQO92raUuaaIxzETBWcCC94f2tsIfaKPiPfHXfaqg9KGL8fJwrRwSCxLYRSjeq/8SNg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956736; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=K2Unx129q4eX6PMvb4yv3itragzYIlcm4Wp+G/Yi98I=; b=iPmG4FLvuNzF/GkyqAAbc8eCqsQr1qTRSU8eITcsfI9wY76lPMlR2HA6NuN+TeogXuXEjAFexhsVgc0vkNSdd6ntTNPCeIpdJYtrG+OTvrYRzcnW6BfAZNFSa9kw+uZ9m7kSxHnRTp0VYFcSf5dCBVyiCsim1NSjAN73p+0rfL4= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786956736648645.6461667751123; Mon, 17 Aug 2026 01:52:16 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392653.1631622 (Exim 4.92) (envelope-from ) id 1wvt4e-000261-D8; Mon, 17 Aug 2026 08:52:04 +0000 Received: by outflank-mailman (output) from mailman id 1392653.1631622; Mon, 17 Aug 2026 08:52: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 1wvt4e-00025u-8Z; Mon, 17 Aug 2026 08:52:04 +0000 Received: by outflank-mailman (input) for mailman id 1392653; Mon, 17 Aug 2026 08:52:03 +0000 Received: from mx.expurgate.net ([195.190.135.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt4d-00025k-E6 for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:52:03 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt4c-00GMOB-RE for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:52:02 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cbb0-e002-0a2a0a5209dd-0a2a4502c5ea-8 for ; Mon, 17 Aug 2026 10:52:02 +0200 Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cbb2-6ca4-0a2a45020019-d155dd34ede4-3 for ; Mon, 17 Aug 2026 10:52:02 +0200 Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-47ddf7b09e5so3185593f8f.1 for ; Mon, 17 Aug 2026 01:52:02 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482a5b7cd38sm2338219f8f.32.2026.08.17.01.52.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:52:01 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956722; x=1787561522; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=K2Unx129q4eX6PMvb4yv3itragzYIlcm4Wp+G/Yi98I=; b=L8XZFSbcoa2DGBjoFKPXeDoMPB61/F3oNkl4mlUfUzaUpWwsGo3mzY9HcNCY7GaWPg 199juwsootLOVb90tGjrxwMGz/tfvHnKwXDNixlCkb4LwuMB8K77y8ciCBZc8vtaIDCM a5pHgf4qFQHyh7pibsqCjqyMz5J4QEfBxSrnbTjFRxvVSa6rlFrVpfNm81Yl1x4RFkdj JBjgOogQiVFvIQdupqpDjED23OLGzLTEnsT7cO5OgUglgDgIphshT2JtErZ1BRRsnFdp ehKiOWcz3sNOKe5apET+UOhsCNkuvUs6aHMFDX0YNOs6K3gWljO6Yw+5mgUPUNpf7Q67 sPmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956722; x=1787561522; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=K2Unx129q4eX6PMvb4yv3itragzYIlcm4Wp+G/Yi98I=; b=IdbN07rpyhrRMQK+dps+jUZH3g/9/QZP3j1h6DQRlBlwdRrvs4S45WpC9nmGYDKtEW R4bCifRt4qM3+ovWdeS83NjdDoeHUJ6ohGU82weyIkhl4cgx8BRt0MAzeiKbFx+EZG5o zmFGjp5EkbWTh6fI5iUjAQDQvr7TeuqcIvBrt3n0OBKNoFtuUJdcgi8fQ9M6r8g9NJJN tWYv/Hoox63m+9NxIIxjGa9qTl4OQn5daQi5LLiqO5ZEgDyhNS3k/F6nr00xnf8KtlSp 36AdpTHVZK9QUTmS7Dr16VfUsJ1Fje8hbkNaNupZfV1X+sP4JvkRZYfkSPmmhCSmxTrh Q1jg== X-Gm-Message-State: AOJu0YwOM+He4Cp5EP6tdgBtserRXxURsn1LLglpaRCFi7va1/kJug75 POUF8QSbPOZCObIGmvP5rReVfjqWOse2cgx8YRytsAkC6q9aNw1+WflngcDhWVkZF8NM4/hP/Yz OtN85pA== X-Gm-Gg: AR+sD13D3fbF34G28gs+qj2EzOfP6+3y/RzC3Wz2l2y7SIBA6F90HVSrcEU1ezOEyh7 jxzv023zRG4hwnngAeTZHVtArcpy3EexZpzdL6dHIjNRu/aTo/sCtEzGnH5Vwv6ZhCFdIjGU2UH L04IXR6EeUwjafgcMhN8fuIA6T01oXUbvhhe05t4dT2wAmQOAXxZ4ex300plC7fxlf6PmMOF6v3 FQtT8I9PpAGznDV2S4bL5S5KAzMWDTp/VEy5ET56BYFq2+SUkNGmd/I6HYBw3JTUysUKVYe1oc6 2r8DicYsc9CDuSTQY0dKEhEJb4Dh2U+br4Cd4/0DmURSrxJgciJOYivi7bFWncMNOpdnkJuMT6o A93Ylanxfwn2p3Lvn1r+FJ/+msGm4UdTAm+tgO2S+AEL8XhrPAg2DrGD7TVByUtHwabGnnyuydP iDEpJqyxEDBN2oKE7DXJGc/jU18/FUCLEOiUi++JWPoOk7apxITshgpi3EWlf+VDi4JpmzbiYuu vhVTUIFovczeEkmhwUsndUptcK6NLtFOG/76kb2uV51eZm8Lc7anQqgxhLIy8Y= X-Received: by 2002:a05:6000:230f:b0:47f:f1ab:9075 with SMTP id ffacd0b85a97d-4816074ccd8mr32295966f8f.20.1786956722292; Mon, 17 Aug 2026 01:52:02 -0700 (PDT) Message-ID: <4f7a34b6-b522-4d8f-a678-304ef4c0f916@suse.com> Date: Mon, 17 Aug 2026 10:52:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 03/14] x86/mm: get_page_from_l1e() is PV-or-shadow-only From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Andrew Cooper , Teddy Astie , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-720697/1786956722-303C42AC-3D3C2DEA/0/0 X-purgate-type: clean X-purgate-size: 3450 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956737683158501 Content-Type: text/plain; charset="utf-8" Otherwise the function is unreachable, violating MISRA C:2012 rule 2.1. With the function compiled out, its dedicated XSM hook also becomes unreachable, so it is similarly guarded. Signed-off-by: Jan Beulich Acked-by: Daniel P. Smith --- It feels suspicious that the .priv_mapping() check is used for HVM guests in shadow mode, but not for ones in HAP mode. --- v2: Also conditionalize the declaration. --- a/xen/arch/x86/include/asm/mm.h +++ b/xen/arch/x86/include/asm/mm.h @@ -404,10 +404,13 @@ int get_page_type(struct page_info *pag int put_page_type_preemptible(struct page_info *page); int get_page_type_preemptible(struct page_info *page, unsigned long type); int put_old_guest_table(struct vcpu *v); -int get_page_from_l1e( - l1_pgentry_t l1e, struct domain *l1e_owner, struct domain *pg_owner); void put_page_from_l1e(l1_pgentry_t l1e, struct domain *l1e_owner); =20 +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) +int get_page_from_l1e( + l1_pgentry_t l1e, struct domain *l1e_owner, struct domain *pg_owner); +#endif + static inline struct page_info *get_page_from_mfn(mfn_t mfn, struct domain= *d) { struct page_info *page =3D mfn_to_page(mfn); --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -836,6 +836,8 @@ static int cf_check print_mmio_emul_rang } #endif =20 +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) + /* * get_page_from_l1e returns: * 0 =3D> success (page not present also counts as such) @@ -1037,6 +1039,8 @@ get_page_from_l1e( return -EBUSY; } =20 +#endif /* CONFIG_PV || CONFIG_SHADOW_PAGING */ + /* * The following flags are used to specify behavior of various get and * put commands. The first is also stored in page->partial_flags to --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -701,12 +701,14 @@ static XSM_INLINE int xsm_update_va_mapp =20 #endif /* CONFIG_PV */ =20 +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) static XSM_INLINE int xsm_priv_mapping( XSM_DEFAULT_ARG struct domain *d, struct domain *t) { XSM_ASSERT_ACTION(XSM_TARGET); return xsm_default_action(action, d, t); } +#endif =20 static XSM_INLINE int xsm_ioport_permission( XSM_DEFAULT_ARG struct domain *d, uint32_t s, uint32_t e, bool allow) --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -141,7 +141,9 @@ XSM_HOOK(int, mmu_update, struct domain XSM_HOOK(int, mmuext_op, struct domain *, struct domain *) XSM_HOOK(int, update_va_mapping, struct domain *, struct domain *, l1_pgen= try_t) #endif /* CONFIG_PV */ +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) XSM_HOOK(int, priv_mapping, struct domain *, struct domain *) +#endif XSM_HOOK(int, ioport_permission, struct domain *, uint32_t, uint32_t, bool) XSM_HOOK(int, ioport_mapping, struct domain *, uint32_t, uint32_t, bool) XSM_HOOK(int, pmu_op, struct domain *, unsigned int) --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1829,10 +1829,12 @@ static int cf_check flask_update_va_mapp =20 #endif /* CONFIG_PV */ =20 +#if defined(CONFIG_PV) || defined(CONFIG_SHADOW_PAGING) static int cf_check flask_priv_mapping(struct domain *d, struct domain *t) { return domain_has_perm(d, t, SECCLASS_MMU, MMU__TARGET_HACK); } +#endif =20 static int cf_check flask_pmu_op(struct domain *d, unsigned int op) { From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956765; cv=none; d=zohomail.com; s=zohoarc; b=jB1HJ/cYaWcHqb7PEXB6wsmqE50+0RJVnFkkQL219BH4ktop3y17k0JKnWQ+y5q4o+XH2+s8qU35BY2TW/lXoJFR0iHV8rn3lgWA3TnjDMgaB17uKKfHIqBd7E9KVxcjo7syy+r1OiIeMq+w3ICUEShkM2XAEZpToSYF/XGM4dA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956765; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hicPJ0lkpk7PVJS0MRWq/kXZnKXC4WFY9rX0q730ZTg=; b=cHdOgyf1rURloDiJr7IvEh0lwUjDJdqf82FouRfR5u2bjhjB6tXJcD/ZTc11Sh49ybVZqwE+iw5RcDiAWttmGtHXQYaizexqi5hivmCGk8FYWfMVUOEBWNLoOV84yvbaG4WNf8NtmmZf2TKgqA7mG0SE8noZxgNhu792wTrep50= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786956765781744.9434505987983; Mon, 17 Aug 2026 01:52:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392659.1631629 (Exim 4.92) (envelope-from ) id 1wvt53-0002YX-JK; Mon, 17 Aug 2026 08:52:29 +0000 Received: by outflank-mailman (output) from mailman id 1392659.1631629; Mon, 17 Aug 2026 08:52:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt53-0002YQ-GL; Mon, 17 Aug 2026 08:52:29 +0000 Received: by outflank-mailman (input) for mailman id 1392659; Mon, 17 Aug 2026 08:52:28 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt52-0002X2-95 for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:52:28 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt51-002rSu-MA for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:52:27 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cbc5-8faa-0a2a0a5109dd-0a2a450c89e0-18 for ; Mon, 17 Aug 2026 10:52:27 +0200 Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cbcb-f479-0a2a450c0019-d155802ea579-3 for ; Mon, 17 Aug 2026 10:52:27 +0200 Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-495437bb891so28915185e9.1 for ; Mon, 17 Aug 2026 01:52:27 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4999d06167csm23897685e9.3.2026.08.17.01.52.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:52:26 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956747; x=1787561547; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=hicPJ0lkpk7PVJS0MRWq/kXZnKXC4WFY9rX0q730ZTg=; b=Q18UK3pnmIklxtKxthIIrwZG+DAxCyxYHogHDQOlKRSfw+F3JrX1eae3vEEIQTyzWQ TePOmpjok13S+I4aBWj/c9AgsxjB0j1cN+MdrRyVtAbDxC8jlavsYx0eg9rCIoEyOMQT uFee7zo2XkaQPfdOrBPPMiCThTYt5StEWOzdDeJ/m7cS+ZVtbU7u1G3LJCGPzCOsmxGN Cx3YqGa5G7zb5XrECPdNwb6LB7xM2wnRZFPC5oq/8NcS+LkPttjLDAIH6GfMchS5GLGL 2DIPXPJ807ngKDNOD7uTtU/tm7kNcTmy7IZMVIIyY7vmKwzdF7QRggUSspCiw0H30z/x JIEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956747; x=1787561547; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=hicPJ0lkpk7PVJS0MRWq/kXZnKXC4WFY9rX0q730ZTg=; b=nQ+CYMUktopTBTnzUjSD83fiKIeUUprHqpcJPFE/SmFrxOKos54wR2dW5GrICkk8m5 DyUiXIffQ2xHBOGT8CqUmbuCJn1KZPzBvbelTZFYTGSHXxVWA5jSF7K0zhN6qZnCUEoi rgXMq4fFeBLcBPlKWPju8awP0u87ig1u2pqkNeOdFsKlJHRSKFvfpK4pcEZi6/nfU13z AWSK71bYSajx2366gVsYqVUtx1r6l1LbwgcBK889hMYhwAz1dKF4di3EOmozPl1SnrPv nMO9rR3o7lGXesh6evROLHXulRhjjJOUEDHouNM/1XDTSJHfxd6D+EJEcARySslWmzwU hHIg== X-Gm-Message-State: AOJu0Yz/S1cg3LX3N2Z3GYbejFCl6BsyDGCmPfXzuYICz/68rOWIDk+Z 3yyFGkzBoiI3iw9k/LwoVnHYZH1H+R3Wf791dnM6NkUd9gg3yUV50O72QsdO3RnvlpsrgJNrfrH f/P4yyA== X-Gm-Gg: AR+sD10Wf3Q2TxSb/0P//3baopwYEqeJRRZRoKKZ5JAz0jcfqmfOMlhP37LTX+VMKr9 8pCEF8t8uU3x5/GpowQFkpkoNDcmhEPicaaLLV/t9UO+8e1z1Ze/2jMuuhTgGSlwl/n6tQKIBYd iHLrwjf7zlKwkQ68uUunUlGiwXxtchQ3CdTUDvASd0WfehGTdbE1nWEyIGZnZ48X8Tqqn9/ap1g Elq5CYxiReM5PGMYySxUt931rEE3r1saGp7SmCAFomBzW8Nzv0nRPnGm/GpnsglhRJCXfYDcmap tRFDdiKs5m44N5b//h7R7SEN3E/ziaOFoQGGJlrQp7WYefCA3YUvyV3YGs+8w3J+A2PWTdPP2zE AjU2hfwBEJKoih8UN7VZVwCt5ss/ZOgWBBUi20ymQ7L8CBD3nmGdoivkKB5yTFtEz4aodivYhB6 wccv++SL+9xn1xDH5yNziPcYfgH+TYOCFmJyTfYFekty0VqqpnmowJSl7AtlqvEvLjvhMsPZjxi mtGbfWvYFvgAOfaUBW3lN4zuKawqS7JFbLTD393sJyCzwCgd2Xs3D14ZIuimVc= X-Received: by 2002:a05:600c:5643:b0:499:77ba:4b6 with SMTP id 5b1f17b1804b1-49987ad988emr253624925e9.9.1786956747083; Mon, 17 Aug 2026 01:52:27 -0700 (PDT) Message-ID: <664d2a63-2745-4c33-9748-283aefce2433@suse.com> Date: Mon, 17 Aug 2026 10:52:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 04/14] x86: restrict PHYSDEVOP_* when PV=n From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d25034/1786956747-026DEA5B-B044AD98/0/0 X-purgate-type: clean X-purgate-size: 4589 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956767839158500 Content-Type: text/plain; charset="utf-8" hvm_physdev_op() permits through only a subset of sub-ops. The code handling other sub-ops is therefore unreachable when PV=3Dn, violating MISRA C:2012 rule 2.1. With that the XSM .apic() hook also becomes unreachable / dead when PV=3Dn. Signed-off-by: Jan Beulich Acked-by: Daniel P. Smith --- At least for the sub-ops using xsm_apic() IS_ENABLED() cannot be used. Therefore #ifdef is used throughout. --- v2: Re-base over re-ordering of series. --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -233,6 +233,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H break; } =20 +#ifdef CONFIG_PV + case PHYSDEVOP_pirq_eoi_gmfn_v2: case PHYSDEVOP_pirq_eoi_gmfn_v1: { struct physdev_pirq_eoi_gmfn info; @@ -281,6 +283,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H break; } =20 +#endif /* CONFIG_PV */ + case PHYSDEVOP_irq_status_query: { struct physdev_irq_status_query irq_status_query; ret =3D -EFAULT; @@ -379,6 +383,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H break; } =20 +#ifdef CONFIG_PV + case PHYSDEVOP_apic_read: { struct physdev_apic apic; ret =3D -EFAULT; @@ -526,6 +532,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H break; } =20 +#endif /* CONFIG_PV */ + case PHYSDEVOP_pci_mmcfg_reserved: { struct physdev_pci_mmcfg_reserved info; =20 @@ -560,6 +568,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H break; } =20 +#ifdef CONFIG_PV + case PHYSDEVOP_restore_msi: { struct physdev_restore_msi restore_msi; struct pci_dev *pdev; @@ -591,6 +601,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H break; } =20 +#endif /* CONFIG_PV */ + case PHYSDEVOP_setup_gsi: { struct physdev_setup_gsi setup_gsi; =20 @@ -610,6 +622,7 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H setup_gsi.polarity); break;=20 } + case PHYSDEVOP_get_free_pirq: { struct physdev_get_free_pirq out; =20 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -644,13 +644,6 @@ static XSM_INLINE int xsm_mem_sharing_op return xsm_default_action(action, current->domain, cd); } =20 -static XSM_INLINE int xsm_apic( - XSM_DEFAULT_ARG struct domain *d, int cmd) -{ - XSM_ASSERT_ACTION(XSM_PRIV); - return xsm_default_action(action, d, NULL); -} - static XSM_INLINE int xsm_machine_memory_map(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_PRIV); @@ -666,6 +659,13 @@ static XSM_INLINE int xsm_domain_memory_ =20 #ifdef CONFIG_PV =20 +static XSM_INLINE int xsm_apic( + XSM_DEFAULT_ARG struct domain *d, int cmd) +{ + XSM_ASSERT_ACTION(XSM_PRIV); + return xsm_default_action(action, d, NULL); +} + static XSM_INLINE int xsm_do_mca(XSM_DEFAULT_VOID) { XSM_ASSERT_ACTION(XSM_PRIV); --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -131,10 +131,10 @@ XSM_HOOK(int, mem_sharing_op, struct dom XSM_HOOK(int, platform_op, uint32_t) =20 #ifdef CONFIG_X86 -XSM_HOOK(int, apic, struct domain *, int) XSM_HOOK(int, machine_memory_map) XSM_HOOK(int, domain_memory_map, struct domain *) #ifdef CONFIG_PV +XSM_HOOK(int, apic, struct domain *, int) XSM_HOOK(int, do_mca) XSM_HOOK(int, mmu_update, struct domain *, struct domain *, struct domain = *, uint32_t) --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1750,6 +1750,19 @@ static int cf_check flask_mem_sharing_op } #endif =20 +static int cf_check flask_machine_memory_map(void) +{ + return avc_current_has_perm(SECINITSID_XEN, SECCLASS_MMU, MMU__MEMORYM= AP, + NULL); +} + +static int cf_check flask_domain_memory_map(struct domain *d) +{ + return current_has_perm(d, SECCLASS_MMU, MMU__MEMORYMAP); +} + +#ifdef CONFIG_PV + static int cf_check flask_apic(struct domain *d, int cmd) { uint32_t perm; @@ -1770,18 +1783,6 @@ static int cf_check flask_apic(struct do return domain_has_xen(d, perm); } =20 -static int cf_check flask_machine_memory_map(void) -{ - return avc_current_has_perm(SECINITSID_XEN, SECCLASS_MMU, MMU__MEMORYM= AP, NULL); -} - -static int cf_check flask_domain_memory_map(struct domain *d) -{ - return current_has_perm(d, SECCLASS_MMU, MMU__MEMORYMAP); -} - -#ifdef CONFIG_PV - static int cf_check flask_do_mca(void) { return domain_has_xen(current->domain, XEN__MCA_OP); From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956802; cv=none; d=zohomail.com; s=zohoarc; b=csiq5orYaKciQ8bp6laDxye7tjE2YGw56fCT/bxgbKhwu4S9gAdcE3a/FucrfGRYAoz7QVRXfLjEFW3E64an4TMxj6ELjkZLssWIuWzjqglUIkx7/B9rqeElbOoKOW93fa7splB85BLQD2bWOb3d6H7Vsavp/C3YV7P8jKFNDNI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956802; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yG72bC7P9bK/t0BCXT48RBUcpJmBlidVDBFgV61UuIM=; b=A44eyeQ0U8MzgYp3qF5nwLoT4aHmcAgu8qmLyDiBwYVTA2Be/ItZyO4rKf+2066DX2ndULUGNINW+OEs+LVy453oRVI+Pew9ex2VnJItfY8oSclgA2Vr6HZqWouz0TzeRPK2IaVwEb5wI5kPrDS20Oa+AcNYsO7ojzJpzxgSp2k= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786956802849329.4766492792627; Mon, 17 Aug 2026 01:53:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392668.1631640 (Exim 4.92) (envelope-from ) id 1wvt5g-00032y-S8; Mon, 17 Aug 2026 08:53:08 +0000 Received: by outflank-mailman (output) from mailman id 1392668.1631640; Mon, 17 Aug 2026 08:53: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 1wvt5g-00032q-OA; Mon, 17 Aug 2026 08:53:08 +0000 Received: by outflank-mailman (input) for mailman id 1392668; Mon, 17 Aug 2026 08:53:07 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt5f-00032Y-1Q for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:53:07 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt5e-00D2zY-EY for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:53:06 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cbed-2eae-0a2a0a5409dd-0a2a450bdbc8-28 for ; Mon, 17 Aug 2026 10:53:06 +0200 Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cbf2-b7e8-0a2a450b0019-d155802bac30-3 for ; Mon, 17 Aug 2026 10:53:06 +0200 Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-495590dde14so38912005e9.0 for ; Mon, 17 Aug 2026 01:53:06 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49996183b89sm157259195e9.12.2026.08.17.01.53.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:53:05 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956786; x=1787561586; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=yG72bC7P9bK/t0BCXT48RBUcpJmBlidVDBFgV61UuIM=; b=SA8/kGTH9IlTOzeDdqpJrhKbFKgq5u/9PG9qe2xOLx+CbJeSO2mpVU6pX9eWnN8UAb b/6FRvs8woGtHUrzGeuSyscxzbr82ecLhYM2AwPgpJUmf72n2pQY0KmDn4t4IdNiFvcM 9Hiei/njh6UVNjnKJzGLu4rlaLQWV8Y6jl94odPDiRgbtVsGp9T8pEcFUjfGsOupFCJK SDEYOkLMAuEAZXfX2WhtSlyFZV9QhSMY3CSoRhhbakQUgv5DOy4WDV4eZdHDT5ytowJp G/mcUBcukc/v29F2uDM55C7ke0IkbdLifBmY3Qnj/OiFzOyibkmXWT8gVt1+KzZm3NvG iVfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956786; x=1787561586; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=yG72bC7P9bK/t0BCXT48RBUcpJmBlidVDBFgV61UuIM=; b=eeOm372wa/2/OdYWzCUk7EsrsWrBQ5PHwshdQbEAoHp6ZZcBxooUwsnOlYc76B3VEQ h0uJGP5+Zi5bcK/0iQ6mhKmSZ/9X+xk+mzhH4yYTSplmmy8Auij2qv8JMILvUO+Bgevk jZ2nBW1mSdWq3UKh6WVoCD/818RX0VmAYtaW2v/s1HZ6aGgEHZhTMcPZlOHUt4Vgo98h Gof1gCbvVUmdht6hGdxDg2O/LzmZQPhRr48FGndVeK5OEtenqZ7639qkJyX59TKZF77i q9brxTS/qArY2f3J4vO9tfCD5JJRLpV8VoGkzM9fRplqSg/rqeYTpAr60pD+l3ZRe2/C AwpQ== X-Gm-Message-State: AOJu0YwRcriih+R6oa2gKVmEOoCwcBJIkDUDk34hDY0ieAmklTlOKzv6 MTAtcwjZyb6MhMLk44EjrPUzvwczWjWgQi+N8XUBXZ3AFYtkFIKMmWUc6UwkJkxYl3giFU26Cak rITcfVg== X-Gm-Gg: AR+sD131ZZx6FCzSmVn/3P5czIjlF3UQslISQlwUITqw3WqUg92YtiusnC22d/508yf Iysld0eS7soNcDlhbPJyaXH39gbAWPeRvEFAa6C/VDENa/Qu6DxJj4zcwzrABD7pxG4XvXkfiK0 orYZBxsqXdshYihRfOHBuYdvrNkwTGweaMet7Zm+/joq+n5VuJutFcedeUS0RhB9BS38UylyRw2 kt6rtnYhWHxtTJqwhofHObWN4LID2ZyyjDKr/5xY7wfrVa7WocuG9x3sgoSQ6MEp0Zl6XxMoEr1 DEd5tNZ3OYyx4K+IPtpUysTGrLw/S2NbKbnKG5kTVaZ+KXZ6ChhmtZrBCoG+7sjaDOayi6+H4R/ lb8C07zF4NrsifPsAz/ytaH+5e2VFjmQQtOm7qYwGZ9Ky1xn/HVLmrmYORmW3VEI8sUUfvW39f6 xvHRlIyWgHMPou/0QUJi0K+6SoBzo6w+eE7xsjmStriluIhW2L9wSu2+kb3jyGhpWA5paxNMTnn QorCn2eNaoGeZ6+lvVqvFHxPSo3Nq9o5ZMlOaUZE2WT6/VXvLj+ X-Received: by 2002:a05:600c:4754:b0:499:7e2b:8e5 with SMTP id 5b1f17b1804b1-4999a2f9ec3mr69341345e9.5.1786956785706; Mon, 17 Aug 2026 01:53:05 -0700 (PDT) Message-ID: Date: Mon, 17 Aug 2026 10:53:06 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 05/14] XSM: make Argo hooks well-formed ones From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Jason Andryuk , Andrew Cooper , Julien Grall , Stefano Stabellini , Anthony PERARD , Michal Orzel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-42698a/1786956786-A88C99EA-BF76762A/0/0 X-purgate-type: clean X-purgate-size: 7573 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956804168158500 Content-Type: text/plain; charset="utf-8" For whatever reason they didn't have an xsm_default_t first argument (to cope with XSM=3Dn mode), making it impossible to (easily) cover them in xsm/hooks.h. Signed-off-by: Jan Beulich Reviewed-by: Jason Andryuk --- v2: Drop uses of current->domain from dummy handlers. Move const-ification in xsm_default_action() to a separate patch. Re-base over re-ordering of series. --- a/xen/common/argo.c +++ b/xen/common/argo.c @@ -1341,7 +1341,7 @@ fill_ring_data(const struct domain *curr * Don't supply information about rings that a guest is not * allowed to send to. */ - ret =3D xsm_argo_send(currd, dst_d); + ret =3D xsm_argo_send(XSM_HOOK, currd, dst_d); if ( ret ) goto out; =20 @@ -1666,8 +1666,9 @@ register_ring(struct domain *currd, =20 if ( reg.partner_id =3D=3D XEN_ARGO_DOMID_ANY ) { - ret =3D opt_argo_mac_permissive ? xsm_argo_register_any_source(cur= rd) : - -EPERM; + ret =3D opt_argo_mac_permissive + ? xsm_argo_register_any_source(XSM_HOOK, currd) + : -EPERM; if ( ret ) return ret; } @@ -1680,7 +1681,7 @@ register_ring(struct domain *currd, return -ESRCH; } =20 - ret =3D xsm_argo_register_single_source(currd, dst_d); + ret =3D xsm_argo_register_single_source(XSM_HOOK, currd, dst_d); if ( ret ) goto out; =20 @@ -2002,7 +2003,7 @@ sendv(struct domain *src_d, xen_argo_add if ( !dst_d ) return -ESRCH; =20 - ret =3D xsm_argo_send(src_d, dst_d); + ret =3D xsm_argo_send(XSM_HOOK, src_d, dst_d); if ( ret ) { gprintk(XENLOG_ERR, "argo: XSM REJECTED %i -> %i\n", @@ -2100,7 +2101,7 @@ do_argo_op(unsigned int cmd, XEN_GUEST_H if ( unlikely(!opt_argo) ) return -EOPNOTSUPP; =20 - rc =3D xsm_argo_enable(currd); + rc =3D xsm_argo_enable(XSM_HOOK, currd); if ( rc ) return rc; =20 @@ -2242,7 +2243,7 @@ compat_argo_op(unsigned int cmd, XEN_GUE if ( unlikely(!opt_argo) ) return -EOPNOTSUPP; =20 - rc =3D xsm_argo_enable(currd); + rc =3D xsm_argo_enable(XSM_HOOK, currd); if ( rc ) return rc; =20 @@ -2307,7 +2308,7 @@ argo_init(struct domain *d) { struct argo_domain *argo; =20 - if ( !opt_argo || xsm_argo_enable(d) ) + if ( !opt_argo || xsm_argo_enable(XSM_HOOK, d) ) { argo_dprintk("argo disabled, domid: %u\n", d->domain_id); return 0; @@ -2365,8 +2366,8 @@ argo_soft_reset(struct domain *d) wildcard_rings_pending_remove(d); =20 /* - * Since neither opt_argo or xsm_argo_enable(d) can change at runt= ime, - * if d->argo is true then both opt_argo and xsm_argo_enable(d) mu= st be + * Since neither opt_argo nor xsm_argo_enable() can change at runt= ime, + * if d->argo is true then both opt_argo and xsm_argo_enable() mus= t be * true, and we can assume that init is allowed to proceed again h= ere. */ argo_domain_init(d->argo); --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -751,27 +751,32 @@ static XSM_INLINE int xsm_dm_op(XSM_DEFA #endif =20 #ifdef CONFIG_ARGO -static XSM_INLINE int xsm_argo_enable(const struct domain *d) + +static XSM_INLINE int xsm_argo_enable(XSM_DEFAULT_ARG const struct domain = *d) { - return 0; + XSM_ASSERT_ACTION(XSM_HOOK); + return xsm_default_action(action, d, NULL); } =20 static XSM_INLINE int xsm_argo_register_single_source( - const struct domain *d, const struct domain *t) + XSM_DEFAULT_ARG const struct domain *d, const struct domain *t) { - return 0; + XSM_ASSERT_ACTION(XSM_HOOK); + return xsm_default_action(action, d, t); } =20 static XSM_INLINE int xsm_argo_register_any_source( - const struct domain *d) + XSM_DEFAULT_ARG const struct domain *d) { - return 0; + XSM_ASSERT_ACTION(XSM_HOOK); + return xsm_default_action(action, d, NULL); } =20 static XSM_INLINE int xsm_argo_send( - const struct domain *d, const struct domain *t) + XSM_DEFAULT_ARG const struct domain *d, const struct domain *t) { - return 0; + XSM_ASSERT_ACTION(XSM_HOOK); + return xsm_default_action(action, d, t); } =20 #endif /* CONFIG_ARGO */ --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -161,6 +161,14 @@ XSM_HOOK(int, do_xsm_op, XEN_GUEST_HANDL XSM_HOOK(int, do_compat_op, XEN_GUEST_HANDLE_PARAM(void)) #endif =20 +#ifdef CONFIG_ARGO +XSM_HOOK(int, argo_enable, const struct domain *) +XSM_HOOK(int, argo_register_single_source, const struct domain *, + const struct domain *) +XSM_HOOK(int, argo_register_any_source, const struct domain *) +XSM_HOOK(int, argo_send, const struct domain *, const struct domain *) +#endif + #undef XSM_HOOK0 #undef XSM_HOOK1 #undef XSM_HOOK2 --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -85,14 +85,6 @@ struct xsm_ops { char *(*show_security_evtchn)(struct domain *d, const struct evtchn *c= hn); =20 char *(*show_irq_sid)(int irq); - -#ifdef CONFIG_ARGO - int (*argo_enable)(const struct domain *d); - int (*argo_register_single_source)(const struct domain *d, - const struct domain *t); - int (*argo_register_any_source)(const struct domain *d); - int (*argo_send)(const struct domain *d, const struct domain *t); -#endif }; =20 #ifdef CONFIG_XSM @@ -196,30 +188,6 @@ static inline char *xsm_show_irq_sid(int return alternative_call(xsm_ops.show_irq_sid, irq); } =20 -#ifdef CONFIG_ARGO -static inline int xsm_argo_enable(const struct domain *d) -{ - return alternative_call(xsm_ops.argo_enable, d); -} - -static inline int xsm_argo_register_single_source( - const struct domain *d, const struct domain *t) -{ - return alternative_call(xsm_ops.argo_register_single_source, d, t); -} - -static inline int xsm_argo_register_any_source(const struct domain *d) -{ - return alternative_call(xsm_ops.argo_register_any_source, d); -} - -static inline int xsm_argo_send(const struct domain *d, const struct domai= n *t) -{ - return alternative_call(xsm_ops.argo_send, d, t); -} - -#endif /* CONFIG_ARGO */ - #endif /* XSM_NO_WRAPPERS */ =20 #ifdef CONFIG_MULTIBOOT --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -35,13 +35,6 @@ static const struct xsm_ops __initconst_ .show_security_evtchn =3D xsm_show_security_evtchn, =20 .show_irq_sid =3D xsm_show_irq_sid, - -#ifdef CONFIG_ARGO - .argo_enable =3D xsm_argo_enable, - .argo_register_single_source =3D xsm_argo_register_single_source, - .argo_register_any_source =3D xsm_argo_register_any_source, - .argo_send =3D xsm_argo_send, -#endif }; =20 void __init xsm_fixup_ops(struct xsm_ops *ops) --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1972,13 +1972,6 @@ static const struct xsm_ops __initconst_ .show_security_evtchn =3D flask_show_security_evtchn, =20 .show_irq_sid =3D flask_show_irq_sid, - -#ifdef CONFIG_ARGO - .argo_enable =3D flask_argo_enable, - .argo_register_single_source =3D flask_argo_register_single_source, - .argo_register_any_source =3D flask_argo_register_any_source, - .argo_send =3D flask_argo_send, -#endif }; =20 const struct xsm_ops *__init flask_init( From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956837; cv=none; d=zohomail.com; s=zohoarc; b=GjWWDeP8cQDXrA9iSWIGrw1cZoCbmmfxUClaRDZ3l3yHCl6yOWvK8rSPvgrBgqCWUPuisEc49FfXHL9o76dDkApQNRFf+hljhWjhUpi78vT3Lc228hRnWcfYpP+ZyfslwtuQg8j/WMDDBMEfCqEg/gZUdk4zTNmd1R0CSCzxxxU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956837; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tEmpas18PFX7DYvL8q0Gls2b5mj4VJSxRmZe4a/2YYU=; b=ZTgOs4rsaARv3niO9C+I5BtuNPH69hZAEEJ7gcjyP569V88uFxOWjoUN4ICUbnduKu03OCA69nebj5Cyj3hMp2J1ByXXbOD5iqqwMCFNsYqqDsJwkfr/T5wUyZjYaQ1xNHQAi4wJIDpHqp9zVqOH+bJliFjHoo/zR2JJ64oxjkE= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786956837611447.8167471262757; Mon, 17 Aug 2026 01:53:57 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392677.1631649 (Exim 4.92) (envelope-from ) id 1wvt6E-0003ZJ-7g; Mon, 17 Aug 2026 08:53:42 +0000 Received: by outflank-mailman (output) from mailman id 1392677.1631649; Mon, 17 Aug 2026 08:53: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 1wvt6E-0003ZC-41; Mon, 17 Aug 2026 08:53:42 +0000 Received: by outflank-mailman (input) for mailman id 1392677; Mon, 17 Aug 2026 08:53:41 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt6D-0003Z0-0w for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:53:41 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt6B-002rjM-Ox for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:53:39 +0200 Received: from [10.42.69.1] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cc03-bab6-0a2a0a5309dd-0a2a45018c1e-36 for ; Mon, 17 Aug 2026 10:53:39 +0200 Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com) by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cc13-5984-0a2a45010019-d155802bf15e-3 for ; Mon, 17 Aug 2026 10:53:39 +0200 Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-49800c6a846so36449895e9.3 for ; Mon, 17 Aug 2026 01:53:39 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4999d063a68sm21461775e9.2.2026.08.17.01.53.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:53:38 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956819; x=1787561619; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=tEmpas18PFX7DYvL8q0Gls2b5mj4VJSxRmZe4a/2YYU=; b=g5lNjz8PGPpAkSmHydPPNTtB8oBTtVUukxo1pAfiFXldLSHeK1NBIxg2WuPTJNdaOB 4AMgaNiHAFHuMUEW+j9EAmqyBFJHtx5CoJ3HnR2aMuH0d53iLz1TLtWh++JMpix2EOG/ SYoUp69KCZe6j7hyiY3fcx+nvf7F2gQWTqJiEedVIvr8Vg6np6kdkIs+UtQ50G98SeHl mJJBpnAaCQSZss+we5NXwCOVm1Pne58VJMlcI45d50SfMwwJ4HKj750Ho5tccOjj1ReZ 8B1HA9ZPN/KChkDC2i4EwKTwwWfQlwLH10weRtpdn3BOpaI0/2lAAKGGhHA4jLcacosk bdCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956819; x=1787561619; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=tEmpas18PFX7DYvL8q0Gls2b5mj4VJSxRmZe4a/2YYU=; b=sdwHc2uLNoZ97EdMxHCcquj8Xa/xaGpkPd53bAi1AzgSBnHybeXtVB2cXlOnIy14Td bkjvrXvxYUl70DJhwOnqPF4o0NojOXI1Pmq7a8doRBCegQKXjGjvnphL/kW6DEviZ7ae IGSEhUXm8uLxR75h76MGeb+7wUA8Kwf5smSFJwsb7dlLsDSz086/dmkmkspdjpvdkF57 HX3DEboXor/UEuO8701AprwZtizyLGOIeyVpXcoGab8T96sRgkNmVnKRp0j/FbAUBv0j UDq+hZNYGepmS2+pEqq7hJWVhAG33oXFRAenjA0q8mQSMnyDFw01sJOCDEd/inrr3YNT DItw== X-Gm-Message-State: AOJu0YyNHMTFEQtPP1eMwveZa4teJHj2NQA1G+vuy54ceWP7fnbxhlR5 YDRWB5gnRCsW6MXY6VruDRbQ6fD6bSuY61ygfniKVZy5yhfnltpg1PBKDK41Ir7/fF+wycF6XPG 0QNO0dg== X-Gm-Gg: AR+sD1250wEwWtHkY8vv+xv2riaSycMNEy0DCo+qju/6dqKgH3fNUfm8pXzwNJp6KGn l5zfuhMapKWcsFXX5Rtf6PmydKDtZRBjP8mYGTiEHqSrTLQqZDpZFA7N7QNP/lgFNMfxFp3lbW+ ykiTGGOrWcF1j7JLKIYk1d9DroE8NM5dF/vo2z+qkChjOizreKEFeXJ996d9kK4AxbM8OOqpwOX RQn6l9/AMshUqgv+55JXAKxZYj/58yvhRplsq0Ftky+V8kyiH+T6xRrJYjV7YDmPQtizyxoDUzJ h6KTfzlSqsUjBFs1lHyG988Tf+1lnHsNBD9mDbs3V010iU3esVE6aYgB3M1Ae472SgQK7SzziOT 8Qc63p6hfkRdOv92MC5GMiGEns4jE8aynhvEaRb4GTxQNwnNB1+Ddoc1KFqrWtsMYiC/ZvdvhBl bybuHJJ27C3iXoyBwOLYp/Mk7MSEs26mpBYG9LtSYjqgIopX0geSYAZBW67VvRbdB2JqChzVSEw x0T7EgM4OMzZVhepOKybfI3rkklnk9XM9MPC5f7lY3sHgggryl2 X-Received: by 2002:a05:600c:3b23:b0:499:8ae1:b900 with SMTP id 5b1f17b1804b1-4998ae1bb69mr276680605e9.12.1786956819212; Mon, 17 Aug 2026 01:53:39 -0700 (PDT) Message-ID: <236a8612-d431-4972-92b3-4d62e8f10bb4@suse.com> Date: Mon, 17 Aug 2026 10:53:40 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 06/14] XSM: fold xsm_{,un}map_domain_pirq() hooks From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Andrew Cooper , Teddy Astie , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d62444/1786956819-1F66C757-D5D940F0/0/0 X-purgate-type: clean X-purgate-size: 2676 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956838114158500 Content-Type: text/plain; charset="utf-8" Like other resource management hooks they are different in just "add resource" vs "remove resource". Hence like in other cases a single hook can easily serve both purposes. Rename hook and functions to fit xsm_io{mem,port}_mapping(). Signed-off-by: Jan Beulich --- v2: Rename hook, functions, and new parameter. --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -109,7 +109,7 @@ int physdev_map_pirq(struct domain *d, i return physdev_hvm_map_pirq(d, type, index, pirq_p); } =20 - ret =3D xsm_map_domain_pirq(XSM_DM_PRIV, d); + ret =3D xsm_pirq_mapping(XSM_DM_PRIV, d, true); if ( ret ) return ret; =20 @@ -142,7 +142,7 @@ int physdev_unmap_pirq(struct domain *d, int ret =3D 0; =20 if ( d !=3D current->domain || !is_hvm_domain(d) || !has_pirq(d) ) - ret =3D xsm_unmap_domain_pirq(XSM_DM_PRIV, d); + ret =3D xsm_pirq_mapping(XSM_DM_PRIV, d, false); if ( ret ) return ret; =20 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -460,15 +460,8 @@ static XSM_INLINE char *xsm_show_irq_sid =20 #ifdef CONFIG_HAS_PIRQ =20 -static XSM_INLINE int xsm_map_domain_pirq( - XSM_DEFAULT_ARG struct domain *d) -{ - XSM_ASSERT_ACTION(XSM_DM_PRIV); - return xsm_default_action(action, current->domain, d); -} - -static XSM_INLINE int xsm_unmap_domain_pirq( - XSM_DEFAULT_ARG struct domain *d) +static XSM_INLINE int xsm_pirq_mapping( + XSM_DEFAULT_ARG struct domain *d, bool map) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -68,8 +68,7 @@ XSM_HOOK(int, kexec) XSM_HOOK(int, schedop_shutdown, struct domain *, struct domain *) =20 #ifdef CONFIG_HAS_PIRQ -XSM_HOOK(int, map_domain_pirq, struct domain *) -XSM_HOOK(int, unmap_domain_pirq, struct domain *) +XSM_HOOK(int, pirq_mapping, struct domain *, bool) #endif =20 XSM_HOOK(int, map_domain_irq, struct domain *, int, const void *) --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1022,14 +1022,9 @@ static char *cf_check flask_show_irq_sid =20 #ifdef CONFIG_HAS_PIRQ =20 -static int cf_check flask_map_domain_pirq(struct domain *d) +static int cf_check flask_pirq_mapping(struct domain *d, bool map) { - return current_has_perm(d, SECCLASS_RESOURCE, RESOURCE__ADD); -} - -static int cf_check flask_unmap_domain_pirq(struct domain *d) -{ - return current_has_perm(d, SECCLASS_RESOURCE, RESOURCE__REMOVE); + return current_has_perm(d, SECCLASS_RESOURCE, resource_to_perm(map)); } =20 #endif /* CONFIG_HAS_PIRQ */ From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956867; cv=none; d=zohomail.com; s=zohoarc; b=l91qLLbZYusniINbfQV7h/tZDzEfpw3wvYxsIgqIq7NCS6RgvOQ3fxAxHgSHG994WxfTpw1SkpzXXrKo0bXafOa6/4uHqGrZA5GOA8yElyjgqPeTD15/C5UVxCGIfTkQpFvbZtgL7amKWBLgq0sK4Vq2buizxq6FHyzXdM744pc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956867; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=31bEzBE374yqE4es14uilqJ/7IGdLVYHPRoJ2VGKJ8Y=; b=hkp68db6pyKU5H1uMH+w1G0CiCJIOo1LXOCCN9VtNYvungNjCyebvVGz1b3qtcg9/xKPPF2COxx9Now6BIOttOOfb2DZ5CvHtBsmzbZ0GqOPg3QaSgEawMNYiT2VZs0Mg699DKzwvvL3e24kDrjkn/fRL5GT7f6Mzqv/hhhvjvg= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786956867268528.530635009392; Mon, 17 Aug 2026 01:54:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392684.1631656 (Exim 4.92) (envelope-from ) id 1wvt6l-00042z-Eq; Mon, 17 Aug 2026 08:54:15 +0000 Received: by outflank-mailman (output) from mailman id 1392684.1631656; Mon, 17 Aug 2026 08:54: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 1wvt6l-00042s-C9; Mon, 17 Aug 2026 08:54:15 +0000 Received: by outflank-mailman (input) for mailman id 1392684; Mon, 17 Aug 2026 08:54:13 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt6j-00042b-Px for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:54:13 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt6j-00G9eg-6a for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:54:13 +0200 Received: from [10.42.69.1] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cc34-e002-0a2a0a5209dd-0a2a450180da-4 for ; Mon, 17 Aug 2026 10:54:13 +0200 Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com) by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cc34-5984-0a2a45010019-d155dd2bc8a8-3 for ; Mon, 17 Aug 2026 10:54:13 +0200 Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-480033bdcf4so1813602f8f.2 for ; Mon, 17 Aug 2026 01:54:12 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482a7168bbesm601201f8f.0.2026.08.17.01.54.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:54:12 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956852; x=1787561652; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=31bEzBE374yqE4es14uilqJ/7IGdLVYHPRoJ2VGKJ8Y=; b=WXt+b+gYYg4YFkF2fWb0JmKsSl1WVwET5afkOCkxhzw8f5MB21g4p4toYiq7QeUWog 3j/XPqd+TzC4Fntgo+JOMXasBY30f6lEk3K4itisvwA25nN/dlhiwSVmXgJwlvbXGdbr mG9DtFwbea1GXd50meUJYBrCHERb1vP9JW4Em4gnri5mcdbRuNq43X71nP72BtyqpVOW /aJTczmMN5RsuFL24c5NKvi3ENsCcjThatKb6UzE0L6T4dXMra8EUPVnwrffl7QiLwJl 2lf1Bnmadouq1U+F6RvcSFexf/SEmaY6tSsj13eiIYBMp99G8SGL6JkOR6Bm5DNF1P9R 6DEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956852; x=1787561652; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=31bEzBE374yqE4es14uilqJ/7IGdLVYHPRoJ2VGKJ8Y=; b=bsoBDI61SGBFUVWW3W1LRHGcOzRlCd61ZufOD0tDGFFAz53aBt/jG1g/h4v9zQQ8r8 XD3FJpQ1nFQiIi+mepgCQ9X8we8NodA6kLb+fbhjolELg/LFJxO/DVbEF1odabv0E8xX dYnlm1F4oRBM+QPulY82r+Bv0e/YUYmwTKDhjminDhBUHEnRZ3LpyO8Qo/XcbCYKFZX2 CqHvlVBoaqe6JWhwqx46uuphVQUCfekOFhjy57eBtNfeHvl5KSVP8lLCDb3Xl85roU7K eO5bmEy5eVVwyAR4hLLQt99JELoq8DSXglWjwD6q047tXU/xPQP4tDwIostqpq/nWSG6 hROA== X-Gm-Message-State: AOJu0Yx0iPtoNKPGniYfxgmmE2CgmipyQOBeX0tzprKYBHiY4zfIg+uI EARdQEaMIOrKABttu7xlkXYYZ9tZf2yhlIuyvXIL3o49KPBQoIXkZg/1JP0aldxd5ru9rN+siNM ytFRfEA== X-Gm-Gg: AR+sD13gM5RkO3e1mtfJ0WIkkZgEyhRnphTcn9XBvuFIW4DDTb3fiXDk3qMllhZq5Q8 yIyWxftT6MjsJYQlcQPpTCHTgIy+ZgS5DCnwyZWpyOAF8ex6N+5wZ2+jRYzMNT7pmHmWtGF3Xbn pOYGKCDAjmYGQu/fb/Akzoni4S0shQ5o9f8jn/VSdwaZgEORbGYKCfxT3dk//IuPAT2U5GIRCFd lt7l+aqihuG42b+D99cm1BZVH3XH4nFaGW8mI+Sc6iOVBSVFZNaJR4GROyRgavDvvDDSjne0SRx fj2XdETcV6n7LVBJr1XCa1ychZcs7ZXhJnwXEdIjld5mBXJEv7WaouUOvvE1kDbFvj8vdKa2IYW n8WzYR7tuRVSHLz8RJnE9uE4RikghFvHtGSr+khWuVGhitS9g+qOQdNvVo7ADVWaMRf5H0vWbfB /nDm1AjaP+O2mhSIgroQsiaBYW0dolkonSNuuIGOyWA9Sg3VwWhBx64LoYCV78bYKu8uuJjak79 nrpeXergiQ5kRXKzm3WTcQflwWa+XMv8Cm7XpGx1iSoght7ujCd X-Received: by 2002:a05:6000:46db:b0:47f:7759:89df with SMTP id ffacd0b85a97d-4816071004bmr28042923f8f.3.1786956852540; Mon, 17 Aug 2026 01:54:12 -0700 (PDT) Message-ID: <3c118229-c591-4f5a-afe5-7a2e95fbbdac@suse.com> Date: Mon, 17 Aug 2026 10:54:13 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 07/14] x86: type-correct last parameter of map_domain_pirq() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Teddy Astie , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d62444/1786956853-BC359757-19041175/0/0 X-purgate-type: clean X-purgate-size: 2091 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956868375158500 Content-Type: text/plain; charset="utf-8" This was meant to allow for non-MSI data to be passed if necessary, but the way XSM/Flask uses the (propagated) argument that's not going to work anyway without further adjustments. As no secondary use has surfaced in many years, switch to using the correct type. Leave XSM alone, as that'll be changed subsequently anyway (to then also no longer use plain void). Signed-off-by: Jan Beulich --- a/xen/arch/x86/include/asm/irq.h +++ b/xen/arch/x86/include/asm/irq.h @@ -27,6 +27,7 @@ typedef struct { } vmask_t; =20 struct irq_desc; +struct msi_info; =20 /* * Xen logic for moving interrupts around CPUs allows manipulating interru= pts @@ -161,7 +162,7 @@ struct arch_pirq { int pirq_shared(struct domain *d , int pirq); =20 int map_domain_pirq(struct domain *d, int pirq, int irq, int type, - void *data); + struct msi_info *msi); int unmap_domain_pirq(struct domain *d, int pirq); int get_free_pirq(struct domain *d, int type); int get_free_pirqs(struct domain *d, unsigned int nr); --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2180,7 +2180,7 @@ int get_free_pirqs(struct domain *d, uns #define MAX_MSI_IRQS 32 /* limited by MSI capability struct properties */ =20 int map_domain_pirq( - struct domain *d, int pirq, int irq, int type, void *data) + struct domain *d, int pirq, int irq, int type, struct msi_info *msi) { int ret =3D 0; int old_irq, old_pirq; @@ -2214,7 +2214,7 @@ int map_domain_pirq( return 0; } =20 - ret =3D xsm_map_domain_irq(XSM_HOOK, d, irq, data); + ret =3D xsm_map_domain_irq(XSM_HOOK, d, irq, msi); if ( ret ) { dprintk(XENLOG_G_ERR, "dom%d: could not permit access to irq %d ma= pping to pirq %d\n", @@ -2245,7 +2245,6 @@ int map_domain_pirq( =20 if ( type =3D=3D MAP_PIRQ_TYPE_MSI || type =3D=3D MAP_PIRQ_TYPE_MULTI_= MSI ) { - struct msi_info *msi =3D (struct msi_info *)data; struct msi_desc *msi_desc; struct pci_dev *pdev; unsigned int nr =3D 0; From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956906; cv=none; d=zohomail.com; s=zohoarc; b=lX+5f3+JRDY4QAerosBzZXk837N9EU2yWfOZSj9UAIOtz5od0wLtPJfliODAz379oMt3hZ1t8D6U8BRymmCNnu9bkxwt6Pm/loXg8nDVzYpKD7gORMfvnz9J6siiXMFR6fYSdXUQB4v1uaefr/7VUu7tCAwl3BoCNBhngUslvLE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956906; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cPYUEycXx4QXrkSBKGzwPTxbJ3B4xNT3wDshow8ZLw4=; b=bZ+O5aI3D0nmh9MLZ6DOlmcZmXh4J1em0tb0tim8zyY30TivfVWdwLGfEQ9ke0sXS5NsOD8E0WiGU5qdxF508no/mdXf1zK51/LpLTzlIFUbwIPWhX+KYcADS37FIaLH9HP+Nje6MH/CdG4e3iYJhibWS9Tcj71YOJMlMI9+zX0= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786956906820714.4708021823267; Mon, 17 Aug 2026 01:55:06 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392691.1631666 (Exim 4.92) (envelope-from ) id 1wvt7H-0004XV-Mt; Mon, 17 Aug 2026 08:54:47 +0000 Received: by outflank-mailman (output) from mailman id 1392691.1631666; Mon, 17 Aug 2026 08:54:47 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt7H-0004XO-K5; Mon, 17 Aug 2026 08:54:47 +0000 Received: by outflank-mailman (input) for mailman id 1392691; Mon, 17 Aug 2026 08:54:46 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt7F-0004X5-TH for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:54:46 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt7F-00BAbm-7q for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:54:45 +0200 Received: from [10.42.69.1] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cc49-8faa-0a2a0a5109dd-0a2a4501aab2-32 for ; Mon, 17 Aug 2026 10:54:45 +0200 Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com) by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cc55-5984-0a2a45010019-d155802be4b8-3 for ; Mon, 17 Aug 2026 10:54:45 +0200 Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4953de5be0aso23114225e9.0 for ; Mon, 17 Aug 2026 01:54:45 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4999d078523sm26211435e9.6.2026.08.17.01.54.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:54:44 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956884; x=1787561684; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=cPYUEycXx4QXrkSBKGzwPTxbJ3B4xNT3wDshow8ZLw4=; b=L+P6faDBgCuHYZIv59p1LQcFscXb22cIUGFCUawWhCM+SXGws0yORdU1WEwCFmSwqk 3iZlzUmHTvm9mPvs3t6SGqdnK16XILlgwsXAhMEH1nyjSRsokJ0OX4iNhz4HKZw39JS0 xSL5OYvEAMTLfmkcLVBBTSTQwvq7PJQTqV4SeWIhhtL7NxVFvpKtMhBbniUckd0++NOc VcsDTMq/UCiCYBZ3ittCvktB6Dco+TEGJHjXnkkksxqzJtyYo13pwSP6xMKQHQct5vDx tf1GkoM6XB2y4fg9eM05VXTJHOMhmnJ5VoKh+V8tcm1Ap7gkafI7r/ZbPD/0wGcfYo2U vDaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956885; x=1787561685; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=cPYUEycXx4QXrkSBKGzwPTxbJ3B4xNT3wDshow8ZLw4=; b=d10QfquDMoFO8L8hzW2Tz7q3wsCttuOOynVY/QBPlKmdadeRL+KEeYeGd6ZfBfy04n iBmYbuTWwkenhr/MM6sQqJTxKvqFeaS9FRQw+uJzIWRUtqAJz7ct4HzInOFRbzHrjNuH 6NtsXmlznzPMQ7nBN1UTE604n8M32fQiaJIw+rJ0xiBrGAjVYUMgxjD7VDwiucHnqUIl NTCUdusDljafU5kdG1dQf8QTyMdNfefZ5dfuHWwzZ/6r/UpAYOKoNzEaeLbFNhvURadU vZut7HAeqbC7JFm8PUZwgGfAUOgbXj1jpKaY9S8MxkCD6g7espVwVFcFncPxN+iuS1Ex FY1w== X-Gm-Message-State: AOJu0YxkQA/FJiKJ1SzgQVt6Qu3y0x1c7SzmKxjc65fcxXaAmHcOB5Et /Uy06p2II/hGOFmnEdq0wJ65tVH1mlQcEelZzlVIZzMbub0/YTWFxDqKhgAebRqi+iaF1dC9rqr bMa+o3w== X-Gm-Gg: AR+sD11lcHKPth0/6iKZAw4ejJFYKAhLhdyANB4Ea/CHvYgcgLLR31w47nKi/TscuSW W5KYpAeEL4ZnX3/69w8x4f8eLMVtDwyJ4fEVjlP7jt7UGQ1Lp3DIqa3kg0j22eBokmfDDU++WPR 5WXHa7QWFVjnHmpcpFTBJg10qQur5UgN3Awoi4RPv0T1AcOpRThjLQbqpr0LJXDAa2QuuHvl4T9 dPf8dXGxeXHy3kGZYVXsKHGDz7j7GWVZmSrf9ZikzhsjASNeO+cwkSWoD9ZSop/VSGugXxb1fbU PTFYfYpPhfIqWDCsOHU/YKElbFtfO/3yTA+5LKLYauiHBH2FnsZfqoQ8W7BmIH7NirpdQnqwKpY dlwLYK20MtxWhh9E7oLqco1MVrjD9M85Zfta7RC/fuW4JaxrDD+HvlW9eiy7+BV71Rl8CM8DsNu 0d1CCHZEimefsyPlRw+hQTH/yPu/J8xRRgnqbJWQiUfBcTGEcC3+Z0pvGGJRcN23saJXdrNv5Tj iNh8prF9WwB2lI1eojidl7xS3klqWsxDecJnPkDiPvTQdIazg+e X-Received: by 2002:a05:600c:4614:b0:499:858f:2653 with SMTP id 5b1f17b1804b1-49987929193mr238357775e9.2.1786956884595; Mon, 17 Aug 2026 01:54:44 -0700 (PDT) Message-ID: Date: Mon, 17 Aug 2026 10:54:45 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 08/14] XSM: pass just SBDF to xsm_{,un}map_domain_irq() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Andrew Cooper , Teddy Astie , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d62444/1786956885-BF46D757-85A595FB/0/0 X-purgate-type: clean X-purgate-size: 4874 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956908588158500 Content-Type: text/plain; charset="utf-8" That's what Flask needs, and by unifying the hooks flask_map_domain_msi() can then also serve both flask_{,un}map_domain_irq(). Signed-off-by: Jan Beulich Acked-by: Daniel P. Smith --- How come Arm doesn't use xsm_unmap_domain_irq()? --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2214,7 +2214,7 @@ int map_domain_pirq( return 0; } =20 - ret =3D xsm_map_domain_irq(XSM_HOOK, d, irq, msi); + ret =3D xsm_map_domain_irq(XSM_HOOK, d, irq, msi ? &msi->sbdf : NULL); if ( ret ) { dprintk(XENLOG_G_ERR, "dom%d: could not permit access to irq %d ma= pping to pirq %d\n", @@ -2442,7 +2442,7 @@ int unmap_domain_pirq(struct domain *d, */ if ( !d->is_dying ) ret =3D xsm_unmap_domain_irq(XSM_HOOK, d, irq, - msi_desc ? msi_desc->dev : NULL); + msi_desc ? &msi_desc->dev->sbdf : NULL); =20 if ( ret ) goto done; --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -470,7 +470,7 @@ static XSM_INLINE int xsm_pirq_mapping( #endif /* CONFIG_HAS_PIRQ */ =20 static XSM_INLINE int xsm_map_domain_irq( - XSM_DEFAULT_ARG struct domain *d, int irq, const void *data) + XSM_DEFAULT_ARG struct domain *d, int irq, const pci_sbdf_t *sbdf) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); @@ -491,7 +491,7 @@ static XSM_INLINE int xsm_unbind_pt_irq( } =20 static XSM_INLINE int xsm_unmap_domain_irq( - XSM_DEFAULT_ARG struct domain *d, int irq, const void *data) + XSM_DEFAULT_ARG struct domain *d, int irq, const pci_sbdf_t *sbdf) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -71,8 +71,8 @@ XSM_HOOK(int, schedop_shutdown, struct d XSM_HOOK(int, pirq_mapping, struct domain *, bool) #endif =20 -XSM_HOOK(int, map_domain_irq, struct domain *, int, const void *) -XSM_HOOK(int, unmap_domain_irq, struct domain *, int, const void *) +XSM_HOOK(int, map_domain_irq, struct domain *, int, const pci_sbdf_t *) +XSM_HOOK(int, unmap_domain_irq, struct domain *, int, const pci_sbdf_t *) XSM_HOOK(int, bind_pt_irq, struct domain *, struct xen_domctl_bind_pt_irq = *) XSM_HOOK(int, unbind_pt_irq, struct domain *, struct xen_domctl_bind_pt_ir= q *) =20 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1030,17 +1030,14 @@ static int cf_check flask_pirq_mapping(s #endif /* CONFIG_HAS_PIRQ */ =20 static int flask_map_domain_msi ( - struct domain *d, int irq, const void *data, uint32_t *sid, + struct domain *d, int irq, pci_sbdf_t sbdf, uint32_t *sid, struct avc_audit_data *ad) { #ifdef CONFIG_HAS_PCI_MSI - const struct msi_info *msi =3D data; - uint32_t machine_bdf =3D msi->sbdf.sbdf; - AVC_AUDIT_DATA_INIT(ad, DEV); - ad->device =3D machine_bdf; + ad->device =3D sbdf.sbdf; =20 - return security_device_sid(machine_bdf, sid); + return security_device_sid(sbdf.sbdf, sid); #else return -EINVAL; #endif @@ -1066,15 +1063,15 @@ static uint32_t flask_iommu_resource_use } =20 static int cf_check flask_map_domain_irq( - struct domain *d, int irq, const void *data) + struct domain *d, int irq, const pci_sbdf_t *sbdf) { uint32_t sid, dsid; int rc =3D -EPERM; struct avc_audit_data ad; uint32_t dperm =3D flask_iommu_resource_use_perm(d); =20 - if ( irq >=3D nr_static_irqs && data ) - rc =3D flask_map_domain_msi(d, irq, data, &sid, &ad); + if ( irq >=3D nr_static_irqs && sbdf ) + rc =3D flask_map_domain_msi(d, irq, *sbdf, &sid, &ad); else rc =3D get_irq_sid(irq, &sid, &ad); =20 @@ -1091,32 +1088,15 @@ static int cf_check flask_map_domain_irq return rc; } =20 -static int flask_unmap_domain_msi ( - struct domain *d, int irq, const void *data, uint32_t *sid, - struct avc_audit_data *ad) -{ -#ifdef CONFIG_HAS_PCI_MSI - const struct pci_dev *pdev =3D data; - uint32_t machine_bdf =3D (pdev->seg << 16) | (pdev->bus << 8) | pdev->= devfn; - - AVC_AUDIT_DATA_INIT(ad, DEV); - ad->device =3D machine_bdf; - - return security_device_sid(machine_bdf, sid); -#else - return -EINVAL; -#endif -} - static int cf_check flask_unmap_domain_irq( - struct domain *d, int irq, const void *data) + struct domain *d, int irq, const pci_sbdf_t *sbdf) { uint32_t sid; int rc =3D -EPERM; struct avc_audit_data ad; =20 - if ( irq >=3D nr_static_irqs && data ) - rc =3D flask_unmap_domain_msi(d, irq, data, &sid, &ad); + if ( irq >=3D nr_static_irqs && sbdf ) + rc =3D flask_map_domain_msi(d, irq, *sbdf, &sid, &ad); else rc =3D get_irq_sid(irq, &sid, &ad); From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786956950; cv=none; d=zohomail.com; s=zohoarc; b=aJgnf4Rwq4MJ5Dz+j+niSkkBMedRMJbhWj26B42KJI5Naa3uPwqwYHECDqut3D0iiBsI08XCxbZVDwlviZZrx0b1jMCXzspSZ9Y+UjygXSTrLuBbtezjBzzGZgjDBCiAAJWcGFmq7YnVfJF0sj4Wb11dAhYjv7kxGYAmlPUk9Uc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786956950; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XcRV9DpoQXKVy9yGwvj7aXR3BN5ZksQ4Op6sLkbWN6Y=; b=ajgtcV+DP5oY0kHkDI0W6nebnvDOqWCEzJ+ks4mLnflpjBFM6NVRfSLB6jIDrpl4Ms0e/b+JXA4JGUpMx7dyPDc9t44F9PZrsUSbJUNvSp6dPwqiMsiZaWGdnhFC2NC5OfErTH/+YAvXxVzIflxNxqm0h4ixVIjttYV+satspgs= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 178695695087319.556208680620443; Mon, 17 Aug 2026 01:55:50 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392704.1631692 (Exim 4.92) (envelope-from ) id 1wvt84-0005CE-An; Mon, 17 Aug 2026 08:55:36 +0000 Received: by outflank-mailman (output) from mailman id 1392704.1631692; Mon, 17 Aug 2026 08:55:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt84-0005Bz-5W; Mon, 17 Aug 2026 08:55:36 +0000 Received: by outflank-mailman (input) for mailman id 1392704; Mon, 17 Aug 2026 08:55:34 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt82-0005BI-LR for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:55:34 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt82-009Qt6-26 for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:55:34 +0200 Received: from [10.42.69.1] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cc84-bab6-0a2a0a5309dd-0a2a4501b900-4 for ; Mon, 17 Aug 2026 10:55:33 +0200 Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com) by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cc85-5984-0a2a45010019-d155802aa5b2-3 for ; Mon, 17 Aug 2026 10:55:33 +0200 Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-495437bb891so28949605e9.1 for ; Mon, 17 Aug 2026 01:55:33 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4999d0876b8sm32206315e9.8.2026.08.17.01.55.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:55:32 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956933; x=1787561733; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=XcRV9DpoQXKVy9yGwvj7aXR3BN5ZksQ4Op6sLkbWN6Y=; b=adaeBuAON58+6L7oGF3FxHS7yAzsylsI6RkjtoBAn9j73oRnQBHYjpKk6K3Jshmavq 8j+u6Y3bhX7skZ03uyV1HPuKH+kEfWn8f8Q9kueIsQZWAsji/ac2nFEkSYVE+IiYlwzp hAJCVdOhR1/c0QHl3x6BJ1ntThD6aVf/L1qlQp5FTNzl6fNcSiapoS8x6It6vx4rY85+ tAhEojX7W9nQLsEEp1ckL0yTEIdJKpxV3kygcplE5PMeSA0PSu+Xn0RzRrgHAauS3G35 6GBq73O+05a8SrMGEefXcP+X4+LMqqO/AtfePeRebU9TKPZskLB8cjm1TmaoMLutigkX QhZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956933; x=1787561733; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=XcRV9DpoQXKVy9yGwvj7aXR3BN5ZksQ4Op6sLkbWN6Y=; b=sInItS6bJaHP1R2u8fpxlLHuBrKnEq3bWvn8M7iiXP3owmV/DbRq5fwX5Y6gx59bDa DIFEsj7ly9ymUJTdAecHO+/1eRG+DJeEO2mzua20/PajZ0/yqARvrS26OqbGIfsA8r0R vI9AVmF2ddnIdNHhu5ZFE8UWbD7tmvOCiphIW36wGg9Fg0FY+wGluiE7omfmpd0SD4er e3NSk97cshpqRdjKeHmBbvdPan0U1xHdey9UO7MlR6YM7e9xon1gZoUrxxivb+6nwz0n dxuCLIhIh3AJ2jxKsgNivgjiIlw75TX/xtIqwRrCuY5NYCXGBJgf+7iUQLHROARV7hzL KWDA== X-Gm-Message-State: AOJu0Yykxd5NAIHNSa0dkTinZFsM8H2IZj1ReVjZqmISd6KbqhK3TL8O MAP9/hHu9nYvcZwa7TwqsUhCuDmqcweLsD5/vWk0ZOUKQDapiBBhZLEWmVao1bLrByCMhhl+gM1 gcKw0YA== X-Gm-Gg: AR+sD13vL0e46h7cd9kLbZe13bDefVCKvNYw6IUmpVKt7oZUcmW1F0oxIn3lmx155nU K0ZimYA7zrQ+2N8JKBHpGWh7hf3CR0g05Ep1la8QJKUGHwc6VdFMk5lrZmZSO+mLihN3vjqb6m2 AId2+ktQbfcp3nuvy6Yh9vrj9g3g0c7gYYChW2+23A6MrsIY+V8Gu66i8lMEIZm3+JDMyzuVdqJ /0tsgMvUra2THQ0m4Yh1apfBG9kqlcdl1G6IAdqUwcGoaae5GTHsBY6pCgm4wnIl4rMNYzXx2Y0 t47Blq4TIclH8AJv3XX0cIFbRjVr6B//AYY2oVlE6Pnsu9SvRGx+of41yfna+D3V4zZ+F4yARo3 0/PH4fxAKOO31Jk1HKI+TO2rmTR0+CPWtllZ6Fp7m0UqO0LBSzcHEz/N44ymostRY1KvcQryFXU /zdboMwne3rUzg+pCZlSbbMap02y6sMljjLMOjfCO1m27UJN0qBbwgWPVSv+ZQJlayZFTHEU5ai c7yEu0e3nbZJxRUIYgjz4AD/PPtjHMJG2mn9GUIT5dQWj5TsM9CmI0u/C/E2b0= X-Received: by 2002:a05:600c:3b90:b0:499:59fd:dbfc with SMTP id 5b1f17b1804b1-49987a4f131mr309975285e9.1.1786956933400; Mon, 17 Aug 2026 01:55:33 -0700 (PDT) Message-ID: <9fa10fe2-8bd6-4652-b3ff-0aa49005e411@suse.com> Date: Mon, 17 Aug 2026 10:55:34 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 09/14] XSM: fold xsm_{,un}map_domain_irq() hooks From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Andrew Cooper , Teddy Astie , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d62444/1786956933-BE465757-1E8E0C3D/0/0 X-purgate-type: clean X-purgate-size: 5280 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786956952917158501 Content-Type: text/plain; charset="utf-8" Like other resource management hooks they are (now) mainly different in "add resource" vs "remove resource". Hence like in other cases a single hook can easily serve both purposes, with minor tweaking of flask_map_domain_irq(). While adjusting that function, also defer the setting of local variables only needed in the "map" case. Rename hook and functions to fit xsm_{io{mem,port},pirq}_mapping(). Signed-off-by: Jan Beulich --- v2: Fix inverted part of conditional in flask_map_domain_irq(). Rename hook, functions, and new parameter. --- a/xen/arch/arm/domctl.c +++ b/xen/arch/arm/domctl.c @@ -100,7 +100,7 @@ long arch_do_domctl(struct xen_domctl *d * done by the 2 hypercalls for consistency with other * architectures. */ - rc =3D xsm_map_domain_irq(XSM_HOOK, d, irq, NULL); + rc =3D xsm_irq_mapping(XSM_HOOK, d, irq, NULL, true); if ( rc ) return rc; =20 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2214,7 +2214,7 @@ int map_domain_pirq( return 0; } =20 - ret =3D xsm_map_domain_irq(XSM_HOOK, d, irq, msi ? &msi->sbdf : NULL); + ret =3D xsm_irq_mapping(XSM_HOOK, d, irq, msi ? &msi->sbdf : NULL, tru= e); if ( ret ) { dprintk(XENLOG_G_ERR, "dom%d: could not permit access to irq %d ma= pping to pirq %d\n", @@ -2441,8 +2441,8 @@ int unmap_domain_pirq(struct domain *d, * domain. Skip the XSM check since this is a Xen-initiated action. */ if ( !d->is_dying ) - ret =3D xsm_unmap_domain_irq(XSM_HOOK, d, irq, - msi_desc ? &msi_desc->dev->sbdf : NULL); + ret =3D xsm_irq_mapping(XSM_HOOK, d, irq, + msi_desc ? &msi_desc->dev->sbdf : NULL, fals= e); =20 if ( ret ) goto done; --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -469,8 +469,9 @@ static XSM_INLINE int xsm_pirq_mapping( =20 #endif /* CONFIG_HAS_PIRQ */ =20 -static XSM_INLINE int xsm_map_domain_irq( - XSM_DEFAULT_ARG struct domain *d, int irq, const pci_sbdf_t *sbdf) +static XSM_INLINE int xsm_irq_mapping( + XSM_DEFAULT_ARG struct domain *d, int irq, const pci_sbdf_t *sbdf, + bool map) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, d); @@ -490,13 +491,6 @@ static XSM_INLINE int xsm_unbind_pt_irq( return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_unmap_domain_irq( - XSM_DEFAULT_ARG struct domain *d, int irq, const pci_sbdf_t *sbdf) -{ - XSM_ASSERT_ACTION(XSM_HOOK); - return xsm_default_action(action, current->domain, d); -} - static XSM_INLINE int xsm_irq_permission( XSM_DEFAULT_ARG struct domain *d, int pirq, bool allow) { --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -71,8 +71,7 @@ XSM_HOOK(int, schedop_shutdown, struct d XSM_HOOK(int, pirq_mapping, struct domain *, bool) #endif =20 -XSM_HOOK(int, map_domain_irq, struct domain *, int, const pci_sbdf_t *) -XSM_HOOK(int, unmap_domain_irq, struct domain *, int, const pci_sbdf_t *) +XSM_HOOK(int, irq_mapping, struct domain *, int, const pci_sbdf_t *, bool) XSM_HOOK(int, bind_pt_irq, struct domain *, struct xen_domctl_bind_pt_irq = *) XSM_HOOK(int, unbind_pt_irq, struct domain *, struct xen_domctl_bind_pt_ir= q *) =20 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1062,13 +1062,12 @@ static uint32_t flask_iommu_resource_use return perm; } =20 -static int cf_check flask_map_domain_irq( - struct domain *d, int irq, const pci_sbdf_t *sbdf) +static int cf_check flask_irq_mapping( + struct domain *d, int irq, const pci_sbdf_t *sbdf, bool map) { - uint32_t sid, dsid; + uint32_t sid, dsid, dperm; int rc =3D -EPERM; struct avc_audit_data ad; - uint32_t dperm =3D flask_iommu_resource_use_perm(d); =20 if ( irq >=3D nr_static_irqs && sbdf ) rc =3D flask_map_domain_msi(d, irq, *sbdf, &sid, &ad); @@ -1078,33 +1077,16 @@ static int cf_check flask_map_domain_irq if ( rc ) return rc; =20 - dsid =3D domain_sid(d); - - rc =3D avc_current_has_perm(sid, SECCLASS_RESOURCE, RESOURCE__ADD_IRQ,= &ad); - if ( rc ) + rc =3D avc_current_has_perm(sid, SECCLASS_RESOURCE, + map ? RESOURCE__ADD_IRQ : RESOURCE__REMOVE_I= RQ, + &ad); + if ( rc || !map ) return rc; =20 - rc =3D avc_has_perm(dsid, sid, SECCLASS_RESOURCE, dperm, &ad); - return rc; -} - -static int cf_check flask_unmap_domain_irq( - struct domain *d, int irq, const pci_sbdf_t *sbdf) -{ - uint32_t sid; - int rc =3D -EPERM; - struct avc_audit_data ad; - - if ( irq >=3D nr_static_irqs && sbdf ) - rc =3D flask_map_domain_msi(d, irq, *sbdf, &sid, &ad); - else - rc =3D get_irq_sid(irq, &sid, &ad); - - if ( rc ) - return rc; + dsid =3D domain_sid(d); + dperm =3D flask_iommu_resource_use_perm(d); =20 - rc =3D avc_current_has_perm(sid, SECCLASS_RESOURCE, RESOURCE__REMOVE_I= RQ, &ad); - return rc; + return avc_has_perm(dsid, sid, SECCLASS_RESOURCE, dperm, &ad); } =20 static int cf_check flask_bind_pt_irq( From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786958136; cv=none; d=zohomail.com; s=zohoarc; b=m50JnzjRROKd0IjLGxRWxVc7cg3WqVKf1vDcl5tLLMv52iMeifPT7tegFvfCVuL9a+85bMINhnHzNSSsi8HbKZ38ctEMytxnmxCp0AkFoxp/zkkLn2o6UrvNeU0zJsyEAAHk2Dr6p8x0TPWNE0KOO1SCjYNhjVGNpI0NTH81pFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786958136; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AEdc8GQ0X7pW91c3IJ6VKmtma1QrK/AiK+09OB1ma3I=; b=fJ/MBc4wHiDWRc9sjBpxi+Z9wlCbFN7UQIyiyOZ045uw6LjVwP2y8of3Se0PH4AoM8Kf/uWc594zvvE00DWiZaOAib2KF+UdnnT45jZsC3i220mxyRrQQTgMYEsr/C2Cau11tFErKD44iRnfJnis9eyHPrtu2K95sGgsr9swzEo= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 178695813602144.37458292447445; Mon, 17 Aug 2026 02:15:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392753.1631745 (Exim 4.92) (envelope-from ) id 1wvtR4-0003EY-Um; Mon, 17 Aug 2026 09:15:14 +0000 Received: by outflank-mailman (output) from mailman id 1392753.1631745; Mon, 17 Aug 2026 09:15: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 1wvtR4-0003ER-Rv; Mon, 17 Aug 2026 09:15:14 +0000 Received: by outflank-mailman (input) for mailman id 1392753; Mon, 17 Aug 2026 09:15:14 +0000 Received: from mx.expurgate.net ([195.190.135.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvtR4-0003EJ-Aj for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 09:15:14 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvtR3-007wvY-3J for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 11:15:13 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82d11b-bab6-0a2a0a5309dd-0a2a450581b6-16 for ; Mon, 17 Aug 2026 11:15:13 +0200 Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82ccab-4cb1-0a2a45050019-d1558029d47f-3 for ; Mon, 17 Aug 2026 10:56:12 +0200 Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-49954b88fffso35273405e9.0 for ; Mon, 17 Aug 2026 01:56:11 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4999d078523sm26288775e9.6.2026.08.17.01.56.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:56:10 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786956971; x=1787561771; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=AEdc8GQ0X7pW91c3IJ6VKmtma1QrK/AiK+09OB1ma3I=; b=DoBInu21q/5nILPbRnbDGqbwzxbg5Vsv5E05GQacq+UUcTO1sepRNwOa5HzSht9Nqt WOVrNG6Pm3EfssQgremI3YuinivuMxGGtumUe16eKxBRmcQ2PrQLqWOLDZ0s5+nei0ts IME+iYmdKV8os1nqVg6in8AdXOqDFxK74fMwImH8QRv+rHnP0spOuP71AGTYg9JYCtPb 17Ue0yV/GvK5xDQ+dekpdmCZkhrERMpEqt0y4SVsrXPl5NyR9IOaX9DS7fQt2FrgfkEu YOHea3H7q6Oq9lPXphFUa0lA1nl9JMghQ7Mn2oNUqtpTCu0SwdiuO9cdQbkNB66xxvbE WQWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786956971; x=1787561771; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=AEdc8GQ0X7pW91c3IJ6VKmtma1QrK/AiK+09OB1ma3I=; b=TH1yijPr8KwZb1aW1YeewoOc0b3/0FI2miai4j0FLCX3Rahi4Wy47W5UTwQVgz/tAy IwgJ5w0N99Tm5xwnpoTS62yxGHwXv+gCyg9YGZL+b4a4Ha3tT3h4Gvx5VRv30pHjde5x SbtyuVXLs/yJWN/h5Up5VAf7AMgmJsYo80NIUtMxwWXsCndtHyk0xRSkQiKigENhQVA7 EuJqs24xM0Y4RUBOUqToE8n7q/po6k5YWQ5z8XRDkF2aGizik9cizTrTLIMkz3dtIVd2 C+zBW6/jsSspmB7+yam0VIsI0u9qy4/zN3FM3cUhzneFF0tH1gvwNrXu0ozCEFR3zf5H L7ZQ== X-Gm-Message-State: AOJu0Ywxdajk2TmpH1/7OvSo9Bp2hB0a05kIQ6D6+uCRrn2uyUgavT8O JPSnmoXVwIHUySf2JW9ynd8HDLJfqbd/M5NBEOJ9Bw1e/l3us9fq0CESaqMyvrkmOmlNMHRxhvS h7wDExg== X-Gm-Gg: AR+sD13APOL4AYPBDqc9NCjuKwyfxxzevkZUZipzYmir9NjGa1tV4RGYg0KlhkGypVB BcHHNoU4lOrCKp3VsuYbejs4Btny9CStm5GqbIMxjbaUzUwYWsPbyM655aQSnZNsbai4C3iAW4Q tbjk91SwGbIxfT01wsGJhh9UPwMCgDFo+sgpiQ6n2wTHkGcEmOBaZz5zTwhjNC8SvfDNeEtiKyN hhbqz+Szx9kYcKIJNL8fEzFwZhf8tAfK8jEgIxYbBXhc8/pw/QcR1RHQv5TiZQJfbdVkIvhSeTJ g6nsTW80Nbo72f3X2cO+XmrjauAfLHVaF498RUj0hCqCu22n+m8R70ElXKMZIZkO08DR63KJ82p K0NgZVGJYfwuA2EKxggrt46Rjtc0vQ/8QGpcwG/hLHBP0Yob1MMk2U/TyGSxqR0kSn9BeijxKfp giZIWnR2yiG71/VheJO0L5rWLwZpedmSz6aGcn2GiXFE1GdjLATAet1UkMSsnubjbPMMqTU92Zu CSSAXpWSyP6Bc9BH/JzpwuwNzGUnYOxcYSMaPriL/+FQLxz5mxL X-Received: by 2002:a05:600c:3114:b0:495:63e4:7f78 with SMTP id 5b1f17b1804b1-49987971986mr337054185e9.10.1786956971404; Mon, 17 Aug 2026 01:56:11 -0700 (PDT) Message-ID: <51370c2d-89dd-4c82-9cc6-53a560d1c9ac@suse.com> Date: Mon, 17 Aug 2026 10:56:12 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 10/14] XSM: fold xsm_{,un}bind_pt_irq() hooks From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Julien Grall , Stefano Stabellini , Volodymyr Babchuk , Bertrand Marquis , Michal Orzel , Andrew Cooper , Teddy Astie , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-c201ff/1786956972-714AC2A1-26582E4F/19/8833835083 X-purgate-type: clean X-purgate-size: 4607 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786958137862158500 Content-Type: text/plain; charset="utf-8" Like other resource management hooks they are mainly different in "add resource" vs "remove resource". Hence like in other cases a single hook can easily serve both purposes, with minor tweaking of flask_bind_pt_irq(). While adjusting that function, also defer the setting of "dperm", which is only needed in the "map" case. Rename hook and functions to fit xsm_{io{mem,port},{p,}irq}_mapping(). Signed-off-by: Jan Beulich --- v2: Fix inverted part of conditional in flask_bind_pt_irq(). Rename hook, functions, and new parameter. --- a/xen/arch/arm/domctl.c +++ b/xen/arch/arm/domctl.c @@ -104,7 +104,7 @@ long arch_do_domctl(struct xen_domctl *d if ( rc ) return rc; =20 - rc =3D xsm_bind_pt_irq(XSM_DM_PRIV, d, bind); + rc =3D xsm_pt_irq_binding(XSM_DM_PRIV, d, bind, true); if ( rc ) return rc; =20 @@ -140,7 +140,7 @@ long arch_do_domctl(struct xen_domctl *d if ( irq !=3D virq ) return -EINVAL; =20 - rc =3D xsm_unbind_pt_irq(XSM_DM_PRIV, d, bind); + rc =3D xsm_pt_irq_binding(XSM_DM_PRIV, d, bind, false); if ( rc ) return rc; =20 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -622,7 +622,7 @@ long arch_do_domctl( if ( !is_hvm_domain(d) ) break; =20 - ret =3D xsm_bind_pt_irq(XSM_DM_PRIV, d, bind); + ret =3D xsm_pt_irq_binding(XSM_DM_PRIV, d, bind, true); if ( ret ) break; =20 @@ -660,7 +660,7 @@ long arch_do_domctl( if ( !is_hvm_domain(d) ) break; =20 - ret =3D xsm_unbind_pt_irq(XSM_DM_PRIV, d, bind); + ret =3D xsm_pt_irq_binding(XSM_DM_PRIV, d, bind, false); if ( ret ) break; =20 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -477,15 +477,9 @@ static XSM_INLINE int xsm_irq_mapping( return xsm_default_action(action, current->domain, d); } =20 -static XSM_INLINE int xsm_bind_pt_irq( - XSM_DEFAULT_ARG struct domain *d, struct xen_domctl_bind_pt_irq *bind) -{ - XSM_ASSERT_ACTION(XSM_DM_PRIV); - return xsm_default_action(action, current->domain, d); -} - -static XSM_INLINE int xsm_unbind_pt_irq( - XSM_DEFAULT_ARG struct domain *d, struct xen_domctl_bind_pt_irq *bind) +static XSM_INLINE int xsm_pt_irq_binding( + XSM_DEFAULT_ARG struct domain *d, struct xen_domctl_bind_pt_irq *bind, + bool map) { XSM_ASSERT_ACTION(XSM_DM_PRIV); return xsm_default_action(action, current->domain, d); --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -72,8 +72,8 @@ XSM_HOOK(int, pirq_mapping, struct domai #endif =20 XSM_HOOK(int, irq_mapping, struct domain *, int, const pci_sbdf_t *, bool) -XSM_HOOK(int, bind_pt_irq, struct domain *, struct xen_domctl_bind_pt_irq = *) -XSM_HOOK(int, unbind_pt_irq, struct domain *, struct xen_domctl_bind_pt_ir= q *) +XSM_HOOK(int, pt_irq_binding, struct domain *, struct xen_domctl_bind_pt_i= rq *, + bool) =20 XSM_HOOK(int, irq_permission, struct domain *, int, bool) XSM_HOOK(int, iomem_permission, struct domain *, uint64_t, uint64_t, bool) --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1089,17 +1089,16 @@ static int cf_check flask_irq_mapping( return avc_has_perm(dsid, sid, SECCLASS_RESOURCE, dperm, &ad); } =20 -static int cf_check flask_bind_pt_irq( - struct domain *d, struct xen_domctl_bind_pt_irq *bind) +static int cf_check flask_pt_irq_binding( + struct domain *d, struct xen_domctl_bind_pt_irq *bind, bool map) { - uint32_t dsid, rsid; + uint32_t dsid, rsid, dperm; int rc =3D -EPERM; int irq; struct avc_audit_data ad; - uint32_t dperm =3D flask_iommu_resource_use_perm(d); =20 - rc =3D current_has_perm(d, SECCLASS_RESOURCE, RESOURCE__ADD); - if ( rc ) + rc =3D current_has_perm(d, SECCLASS_RESOURCE, resource_to_perm(map)); + if ( rc || !map ) return rc; =20 irq =3D domain_pirq_to_irq(d, bind->machine_irq); @@ -1113,13 +1112,9 @@ static int cf_check flask_bind_pt_irq( return rc; =20 dsid =3D domain_sid(d); - return avc_has_perm(dsid, rsid, SECCLASS_RESOURCE, dperm, &ad); -} + dperm =3D flask_iommu_resource_use_perm(d); =20 -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); + return avc_has_perm(dsid, rsid, SECCLASS_RESOURCE, dperm, &ad); } =20 static int cf_check flask_irq_permission( From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786957020; cv=none; d=zohomail.com; s=zohoarc; b=CknLQvShoD8HqS7MbjO1SwAe52hWqEpm8dwhJcgh1OIh1qXs5x+Zs1SJEDwpGzWiGTbgF4+2IKp+SRbbRr5oMEKc0hufGan6u1t5sAaix/uQM1XaR3xrstlg/XRsq+xlSov6wNtYDWjZtyK9vz+62icr2Dxzo7Yi7pc+pg+1tPk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786957020; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uyRZNfEKi5kGEi7GsXb+f9FRAExy/jFd4bMa55xJlqk=; b=UofIwrrZX+9/jgkitEs+C/rEPHu5a9GeO4a1oqRHDxuQp8aJnKzbHmvo68v1+9677wNUiDqcRRHlIqjh8d47VLoOaV205KpKFUoufBUJi81Ot8xrtSwZz0/cMaduSVse1uKGkbHrYkZSG4elrIFFXd9FpHKpR3fohw9HImQpgeY= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786957020752492.31172655720513; Mon, 17 Aug 2026 01:57:00 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392712.1631700 (Exim 4.92) (envelope-from ) id 1wvt9D-0005jc-HY; Mon, 17 Aug 2026 08:56:47 +0000 Received: by outflank-mailman (output) from mailman id 1392712.1631700; Mon, 17 Aug 2026 08:56:47 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt9D-0005jV-Ei; Mon, 17 Aug 2026 08:56:47 +0000 Received: by outflank-mailman (input) for mailman id 1392712; Mon, 17 Aug 2026 08:56:46 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt9C-0005jN-76 for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:56:46 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt9B-00BBIF-Je for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:56:45 +0200 Received: from [10.42.69.10] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82ccbc-8faa-0a2a0a5109dd-0a2a450a85b6-38 for ; Mon, 17 Aug 2026 10:56:45 +0200 Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com) by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cccd-f2d2-0a2a450a0019-d155dd31e152-3 for ; Mon, 17 Aug 2026 10:56:45 +0200 Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-47de0093c42so2795532f8f.3 for ; Mon, 17 Aug 2026 01:56:45 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482a5b7cd38sm2374589f8f.32.2026.08.17.01.56.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:56:44 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786957005; x=1787561805; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=uyRZNfEKi5kGEi7GsXb+f9FRAExy/jFd4bMa55xJlqk=; b=QnaCWDSZ0PrHXpkeNFzz5fBrP/IHB7LHsQO8cEPSLrr8PDAeOi6/HEae4d8Lpp+rkt cYqPv5oPcee3Ccvm5VLvQpJb/laqQQM5wyRe6nlwPesu+ss8o82K3OMl998X3kqiZnuq kz6BhFJabH0UIspXvoJMnaaXPG0Annan5puj1jDs/g+LwHmYx0+RMWPbHf6bqeD9qsJJ jKtU82A0+NtEDnAda/mRXdtxFUTJbITUo87luoGXdz0037NKFy+J4Iv4BgmOJkl1oc7k SnOwelZiGfbErZ/2goxKZ/998S25+ZgHtg2KzOO1tmLQXZ1HGrEwmNH4BbytzgZDSXx/ LygQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786957005; x=1787561805; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=uyRZNfEKi5kGEi7GsXb+f9FRAExy/jFd4bMa55xJlqk=; b=TjRkYeGU1pgCvDgLNS0BJ3ysi+UaJZGz3QnJai4zbPkWogE6q82paHtvVCxINNhmaM h0iN5rpNm9yCZmsrik8Qiycu3j+5OdiPnCXWQyamb6FuZeYNJmfkAbop6qdE6c31Q397 CAvlp+KaoA4PhJ1gTL57YOsbOMCbO5JYGLprbiYKSh0JjqtOoF302Np4wewrU/eFHUt0 17eJLik07raWw1Ms4W3Br2U6NmaeEC+/diJG4Ig4ytMUhKQnL11cH1DgtiY/OGVYZcpU YmPZESkuKsOTPjVf81ZLy9aPGH0gygBWzQGclk6+SY0vGtnqjz9hfQNpV/KRLkwakS+m Z1CQ== X-Gm-Message-State: AOJu0YwTTWxSyYqYFux4/jyE4MTIktFxpS94KoPE7i+chrjyvtwBVIvX Rli5bqet9OCOrnwmOfyov4MrRBLOnKax0ntHEE+zQZO/3d2z4quhgz7zz0mOeU7KpqzZRrgft5u KXibaeg== X-Gm-Gg: AR+sD10xkEAtbvzb6GYWd3r4TbF4cG8eZcU4IlPJLWOXs7d79AwqI1hmGWRCXJKc/h4 3Jkr16dtJJV6WuLtMOB8hNrSM6Kg+ccWLFbeSap+6dKhMsuwWZ7e7MEZO4VAtEvQe0yNHHMi7pn 1GlSmj5Edxa1dohMBF4glw7NZw7HzPmemBvCFtdFnWYWohFsIznhI2yQz6Zw4BFFmuF1qMt2jp7 bMzRlU8eICvOm/TgY+4w1qGmjauW1rZD4JhpjfFQ0LvF45KUf6YotPyObM7MNFnxd3jWkLO76Gz 3jaYKzBiXmByQavac7r//48zGD/xoFYcY4eC3irQEZmOyU3dwwhWuWOGodn/HXyFzCN86T20DYp XmyX3azKtnBr9hHfPlyoQ6Ff3KeRHs60HdQJhJNt8D1dvflL4rGsmwHwQSZ3dl1auyeBp6JcfmD gGuaJcgJBXa7mU3cgs7TjnQZxHQvrGmRFiOtYf+9lqxpcN124usXSsar1zryL++AH5FXVU8PvWh Jhv5fSqqJUvBu+V5zpqjKlICV4y6q8LZ/RHOFZVJNZ8/X/PLCYLUA== X-Received: by 2002:adf:f3ce:0:b0:47f:8480:4abd with SMTP id ffacd0b85a97d-4816079d16bmr26232842f8f.29.1786957004957; Mon, 17 Aug 2026 01:56:44 -0700 (PDT) Message-ID: Date: Mon, 17 Aug 2026 10:56:46 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 11/14] XSM: convert remaining event channel hooks From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Andrew Cooper , Julien Grall , Stefano Stabellini , Anthony PERARD , Michal Orzel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-4011c0/1786957005-52CDBCFC-607E69A7/0/0 X-purgate-type: clean X-purgate-size: 7123 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786957021374158500 Content-Type: text/plain; charset="utf-8" Make them follow the standard scheme, i.e. taking xsm_default_t as first argument at call sites. This way they can be covered by the recently introduced hook machinery. While there, uniformly convert struct evtchn chn[] notation to pointer form, as the (nicer) array representation is harder to make usable with the hooks.h logic. Signed-off-by: Jan Beulich --- v2: New. --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -159,7 +159,7 @@ static void free_evtchn_bucket(struct do if ( !bucket ) return; =20 - xsm_free_security_evtchns(bucket, EVTCHNS_PER_BUCKET); + xsm_free_security_evtchns(XSM_HOOK, bucket, EVTCHNS_PER_BUCKET); xfree(bucket); } =20 @@ -172,7 +172,7 @@ static struct evtchn *alloc_evtchn_bucke if ( !chn ) goto err; =20 - if ( xsm_alloc_security_evtchns(chn, EVTCHNS_PER_BUCKET) ) + if ( xsm_alloc_security_evtchns(XSM_HOOK, chn, EVTCHNS_PER_BUCKET) ) goto err; =20 for ( i =3D 0; i < EVTCHNS_PER_BUCKET; i++ ) @@ -297,7 +297,7 @@ void evtchn_free(struct domain *d, struc chn->notify_vcpu_id =3D 0; chn->xen_consumer =3D 0; =20 - xsm_evtchn_close_post(chn); + xsm_evtchn_close_post(XSM_HOOK, chn); } =20 static int evtchn_get_port(struct domain *d, evtchn_port_t port) @@ -1779,7 +1779,7 @@ static void domain_dump_evtchn_info(stru break; } =20 - ssid =3D xsm_show_security_evtchn(d, chn); + ssid =3D xsm_show_security_evtchn(XSM_HOOK, d, chn); if (ssid) { printk(" Z=3D%s\n", ssid); xfree(ssid); --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -311,8 +311,10 @@ static XSM_INLINE int xsm_evtchn_interdo return xsm_default_action(action, d1, d2); } =20 -static XSM_INLINE void xsm_evtchn_close_post(struct evtchn *chn) -{} +static XSM_INLINE void xsm_evtchn_close_post(XSM_DEFAULT_ARG struct evtchn= *chn) +{ + XSM_ASSERT_ACTION(XSM_HOOK); +} =20 static XSM_INLINE int xsm_evtchn_send( XSM_DEFAULT_ARG struct domain *d, struct evtchn *chn) @@ -336,18 +338,22 @@ static XSM_INLINE int xsm_evtchn_reset( } =20 static XSM_INLINE int xsm_alloc_security_evtchns( - struct evtchn chn[], unsigned int nr) + XSM_DEFAULT_ARG struct evtchn *chn, unsigned int nr) { + XSM_ASSERT_ACTION(XSM_HOOK); return 0; } =20 static XSM_INLINE void xsm_free_security_evtchns( - struct evtchn chn[], unsigned int nr) -{} + XSM_DEFAULT_ARG struct evtchn *chn, unsigned int nr) +{ + XSM_ASSERT_ACTION(XSM_HOOK); +} =20 static XSM_INLINE char *xsm_show_security_evtchn( - struct domain *d, const struct evtchn *chn) + XSM_DEFAULT_ARG struct domain *d, const struct evtchn *chn) { + XSM_ASSERT_ACTION(XSM_HOOK); return NULL; } =20 --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -34,6 +34,11 @@ XSM_HOOK(int, evtchn_interdomain, struct XSM_HOOK(int, evtchn_send, struct domain *, struct evtchn *) XSM_HOOK(int, evtchn_status, struct domain *, struct evtchn *) XSM_HOOK(int, evtchn_reset, struct domain *, struct domain *) +XSM_HOOK(void, evtchn_close_post, struct evtchn *) +XSM_HOOK(int, alloc_security_evtchns, struct evtchn *, unsigned int) +XSM_HOOK(void, free_security_evtchns, struct evtchn *, unsigned int) +XSM_HOOK(pchar_t, show_security_evtchn, struct domain *, + const struct evtchn *) =20 #ifdef CONFIG_GRANT_TABLE XSM_HOOK(int, grant_mapref, struct domain *, struct domain *, uint32_t) --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -21,6 +21,9 @@ /* policy magic number (defined by XSM_MAGIC) */ typedef uint32_t xsm_magic_t; =20 +/* Auxiliary type(s) for use in hook definitions. */ +typedef char *pchar_t; + #ifdef CONFIG_XSM_FLASK #define XSM_MAGIC 0xf97cff8cU #else @@ -76,13 +79,8 @@ struct xsm_ops { =20 #include "hooks.h" =20 - void (*evtchn_close_post)(struct evtchn *chn); - int (*alloc_security_domain)(struct domain *d); void (*free_security_domain)(struct domain *d); - int (*alloc_security_evtchns)(struct evtchn chn[], unsigned int nr); - void (*free_security_evtchns)(struct evtchn chn[], unsigned int nr); - char *(*show_security_evtchn)(struct domain *d, const struct evtchn *c= hn); =20 char *(*show_irq_sid)(int irq); }; @@ -104,8 +102,9 @@ static inline void xsm_security_domainin alternative_vcall(xsm_ops.security_domaininfo, d, info); } =20 -#define XSM_ALT_void alternative_vcall -#define XSM_ALT_int return alternative_call +#define XSM_ALT_void alternative_vcall +#define XSM_ALT_int return alternative_call +#define XSM_ALT_pchar_t return alternative_call =20 #define XSM_HOOK0(rtype, name) \ static inline rtype xsm_ ## name(xsm_default_t def) \ @@ -150,11 +149,6 @@ static inline rtype xsm_ ## name( \ =20 #include "hooks.h" =20 -static inline void xsm_evtchn_close_post(struct evtchn *chn) -{ - alternative_vcall(xsm_ops.evtchn_close_post, chn); -} - static inline int xsm_alloc_security_domain(struct domain *d) { return alternative_call(xsm_ops.alloc_security_domain, d); @@ -165,24 +159,6 @@ static inline void xsm_free_security_dom alternative_vcall(xsm_ops.free_security_domain, d); } =20 -static inline int xsm_alloc_security_evtchns( - struct evtchn *chn, unsigned int nr) -{ - return alternative_call(xsm_ops.alloc_security_evtchns, chn, nr); -} - -static inline void xsm_free_security_evtchns( - struct evtchn *chn, unsigned int nr) -{ - alternative_vcall(xsm_ops.free_security_evtchns, chn, nr); -} - -static inline char *xsm_show_security_evtchn( - struct domain *d, const struct evtchn *chn) -{ - return alternative_call(xsm_ops.show_security_evtchn, d, chn); -} - static inline char *xsm_show_irq_sid(int irq) { return alternative_call(xsm_ops.show_irq_sid, irq); --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -26,13 +26,8 @@ static const struct xsm_ops __initconst_ =20 #include =20 - .evtchn_close_post =3D xsm_evtchn_close_post, - .alloc_security_domain =3D xsm_alloc_security_domain, .free_security_domain =3D xsm_free_security_domain, - .alloc_security_evtchns =3D xsm_alloc_security_evtchns, - .free_security_evtchns =3D xsm_free_security_evtchns, - .show_security_evtchn =3D xsm_show_security_evtchn, =20 .show_irq_sid =3D xsm_show_irq_sid, }; --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1915,13 +1915,8 @@ static const struct xsm_ops __initconst_ =20 #include =20 - .evtchn_close_post =3D flask_evtchn_close_post, - .alloc_security_domain =3D flask_domain_alloc_security, .free_security_domain =3D flask_domain_free_security, - .alloc_security_evtchns =3D flask_alloc_security_evtchns, - .free_security_evtchns =3D flask_free_security_evtchns, - .show_security_evtchn =3D flask_show_security_evtchn, =20 .show_irq_sid =3D flask_show_irq_sid, }; From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786957053; cv=none; d=zohomail.com; s=zohoarc; b=TaI3e4vQvfEoDIgSiQHCvDlcIGZT1muzO58GHFtpaEI0SgPhNLBfe8rumt8UnjnXelvGUvzkEAnaueU6cAEzaeCVX9MJWU3WWRYhS8a21JCl+g5g+DRtono/+UsEtEEQZMlj05vZ1Tn+xJtodclqKxalpspE6ua0rkEk82mS14E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786957053; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=o8SOdb+AsZMjG0+VwY3YOWVBWdSQ5EYwU96aNxkx4tc=; b=l3igrpifQRcAI4Lh7sLcUndOpnQK2ZS5j/pbPtYzjgzAKa/K64E3TKyBBloN5BYpF44lWfKq2EyVW8q7xNrI7ffc0cAXXFKTscYhonW64oSxLc8a6r+jgaIElqOBLJDEQfsCnJRyHyDL0GCAEODI7xpT8Zso1AE9YJ1atgW6Wgw= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786957053614291.05563709751436; Mon, 17 Aug 2026 01:57:33 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392717.1631708 (Exim 4.92) (envelope-from ) id 1wvt9h-0006Bg-P2; Mon, 17 Aug 2026 08:57:17 +0000 Received: by outflank-mailman (output) from mailman id 1392717.1631708; Mon, 17 Aug 2026 08:57: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 1wvt9h-0006BZ-LZ; Mon, 17 Aug 2026 08:57:17 +0000 Received: by outflank-mailman (input) for mailman id 1392717; Mon, 17 Aug 2026 08:57:16 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvt9g-0006BP-F0 for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:57:16 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvt9f-005GNP-Rx for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:57:15 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cce5-8faa-0a2a0a5109dd-0a2a450b8f80-24 for ; Mon, 17 Aug 2026 10:57:15 +0200 Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cceb-b7e8-0a2a450b0019-d155802fa4c7-3 for ; Mon, 17 Aug 2026 10:57:15 +0200 Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4994c49f588so27566865e9.0 for ; Mon, 17 Aug 2026 01:57:15 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4999d0fb872sm34010115e9.9.2026.08.17.01.57.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:57:14 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786957035; x=1787561835; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=o8SOdb+AsZMjG0+VwY3YOWVBWdSQ5EYwU96aNxkx4tc=; b=AnQxLYS6hTUir/nPEnrqBvrblfqVkMZgcSl8h41ugMg/mXZRwbyEO9gtQoXSTWbbLx eJZUC8+ecMlgVhpQfRSMh6Fnrt3euv0LbStNDPqnrDbxvHiponymJR9rkr8h1x5L48WN CXzSoL8i0RCFYNcUFHY/WwUe7sHoR3Gq+MCZl42BWCL+WoW9l+MjlaVlN6SjFk74cQzu bd44/WD6WdeQbbiMR5OUgsPHh5hkSKOYzTUpqbNaP61BO34sP0I5/S3ew95wfnywVzSI psnrWZYGc6dv6cy9gXjqVMlkPjgkA/etLpLQjzE1P6L6bYHrcKUuirJbkyoQEjkYTzjh ng2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786957035; x=1787561835; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=o8SOdb+AsZMjG0+VwY3YOWVBWdSQ5EYwU96aNxkx4tc=; b=Ke1298nwxwO/RtWvWkGGGvdViY0ShrMHx/+1t+Vwgu4ctjH7/wPFIG1kuONhqpU0i3 6vgn9yAeUIO8NN6TJqDU3FBlY4s9JPJ3nipP0Xhzfi9QpTiLprlDW5XjXnLKoBhAS5+3 DmdCgKQryUJ0UO7ybUPq3/lL3wZ60sz0BIrdymtTMV7CGNQtB5AOdxObSzArh4/TMEkr jQNN5Kgcz1cvCY0OO0yHXQ6vnoWoqdr+7FqR7zIpCC+60DD+g1ifEsTSKmMkH5X56Oz5 SpLCU20gwZ+HIYTuZsstiM1J0Obnj3/dUFVAJJ3Y+LI5fDf1v9gqUZpoOA1HI6pjuQF2 LxgA== X-Gm-Message-State: AOJu0YzrgyKF9iPZbYqvfLkvqy9FQj7fmOQC58LCxnS6jsVCajGrkuHU fSM8g5b+01wbCi4RwryvEcxmFIkvzhNEofzudK2dctj1cAzIUryU4ZdrJQ7j8Bg+lkBYLtr10Cz AJagZog== X-Gm-Gg: AR+sD103jpAJ8WuHUVEb0DAUZjmvaIv4XaMN5niA2f1BjWXF8au/XN78v9sCIM8IMXQ JeN6Svq8bxzT9xk1m2chymCVH0kQWriMgzJit6iJREhMbGF4w+htiwrL/S2YYJZ1hZyR5Q7EaZY scP0Erahhp4sXnHkq1uTi1n5+sGmqpbMXemCJXEOajzVnWni8p1GuYE/UYa5r8PvasTRO+4nZLb kKyLKIThhiDPRdnfx366n0x3urk/mCXkhblFAf5U8947Cn1KK3Q32tQOrF9JCqjADrw6LVbCdfQ u12gILfo5UwcmFPlSADrMa9zzZ/CRnyOni037tJch/UGyk508nlFaQ5uvbJnzIIdh77LeZESbui dj75ceWn1+bGe/dSmlmc++iq8hjeZDV2Gp/aD380fLf19wEV74iWJ9HxrjSeM58u5CpxtaYdS4o yWtTVsV1cG0EoFtvE1lEOUq54v9TBkHD1lp78F2EfWMzU6KZ9AVmnPYHrQ7+j3hqeJcJgOYR6dS qwZSKOMyU+JSjjJXuxW95Nv9b5yhJhWQI3i3rOvB0YQB7YhPXk8 X-Received: by 2002:a05:600d:117:b0:499:5f80:83ac with SMTP id 5b1f17b1804b1-49987ab4e1bmr230477815e9.7.1786957035231; Mon, 17 Aug 2026 01:57:15 -0700 (PDT) Message-ID: Date: Mon, 17 Aug 2026 10:57:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 12/14] XSM: convert remaining domain-related hooks From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Andrew Cooper , Julien Grall , Stefano Stabellini , Anthony PERARD , Michal Orzel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-42698a/1786957035-A8AC89EA-D7B6E5A8/0/0 X-purgate-type: clean X-purgate-size: 6831 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786957055267158500 Content-Type: text/plain; charset="utf-8" Make them follow the standard scheme, i.e. taking xsm_default_t as first argument at call sites. This way they can be covered by the recently introduced hook machinery. While there, - rename flask_domain_{alloc,free}_security() to fit the corresponding hook names, - add const to .security_domaininfo()'s first parameter. Signed-off-by: Jan Beulich --- v2: New. --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -760,7 +760,7 @@ static void _domain_destroy(struct domai =20 free_cpumask_var(d->dirty_cpumask); =20 - xsm_free_security_domain(d); + xsm_free_security_domain(XSM_HOOK, d); =20 lock_profile_deregister_struct(LOCKPROF_TYPE_PERDOM, d); =20 @@ -987,7 +987,7 @@ struct domain *domain_create(domid_t dom d->max_vcpus =3D config->max_vcpus; } =20 - if ( (err =3D xsm_alloc_security_domain(d)) !=3D 0 ) + if ( (err =3D xsm_alloc_security_domain(XSM_HOOK, d)) !=3D 0 ) goto fail; =20 err =3D -ENOMEM; --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -91,7 +91,7 @@ void getdomaininfo(struct domain *d, str (is_hvm_domain(d) ? XEN_DOMINF_hvm_guest : 0) | d->shutdown_code << XEN_DOMINF_shutdownshift; =20 - xsm_security_domaininfo(d, info); + xsm_security_domaininfo(XSM_HOOK, d, info); =20 info->tot_pages =3D domain_tot_pages(d); info->max_pages =3D d->max_pages; --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -122,8 +122,11 @@ static XSM_INLINE int xsm_set_system_act } =20 static XSM_INLINE void xsm_security_domaininfo( - struct domain *d, struct xen_domctl_getdomaininfo *info) -{} + XSM_DEFAULT_ARG const struct domain *d, + struct xen_domctl_getdomaininfo *info) +{ + XSM_ASSERT_ACTION(XSM_HOOK); +} =20 static XSM_INLINE int xsm_domain_create( XSM_DEFAULT_ARG struct domain *d, uint32_t ssidref) @@ -179,13 +182,18 @@ static XSM_INLINE int xsm_sysctl( return xsm_default_action(action, current->domain, NULL); } =20 -static XSM_INLINE int xsm_alloc_security_domain(struct domain *d) +static XSM_INLINE int xsm_alloc_security_domain( + XSM_DEFAULT_ARG struct domain *d) { + XSM_ASSERT_ACTION(XSM_HOOK); return 0; } =20 -static XSM_INLINE void xsm_free_security_domain(struct domain *d) -{} +static XSM_INLINE void xsm_free_security_domain( + XSM_DEFAULT_ARG struct domain *d) +{ + XSM_ASSERT_ACTION(XSM_HOOK); +} =20 #ifdef CONFIG_GRANT_TABLE =20 --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -20,6 +20,10 @@ XSM_HOOK(int, domain_create, struct domain *, uint32_t) XSM_HOOK(int, getdomaininfo, struct domain *) XSM_HOOK(int, get_domain_state, struct domain *) +XSM_HOOK(void, security_domaininfo, const struct domain *, + struct xen_domctl_getdomaininfo *) +XSM_HOOK(int, alloc_security_domain, struct domain *) +XSM_HOOK(void, free_security_domain, struct domain *) =20 #ifdef CONFIG_SYSCTL XSM_HOOK(int, sysctl, const struct xen_sysctl *) --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -62,8 +62,6 @@ typedef enum xsm_default xsm_default_t; */ struct xsm_ops { int (*set_system_active)(void); - void (*security_domaininfo)(struct domain *d, - struct xen_domctl_getdomaininfo *info); =20 #define XSM_HOOK0(rtype, name) rtype (*name)(void); #define XSM_HOOK1(rtype, name, type1) \ @@ -79,9 +77,6 @@ struct xsm_ops { =20 #include "hooks.h" =20 - int (*alloc_security_domain)(struct domain *d); - void (*free_security_domain)(struct domain *d); - char *(*show_irq_sid)(int irq); }; =20 @@ -96,12 +91,6 @@ static inline int xsm_set_system_active( return alternative_call(xsm_ops.set_system_active); } =20 -static inline void xsm_security_domaininfo( - struct domain *d, struct xen_domctl_getdomaininfo *info) -{ - alternative_vcall(xsm_ops.security_domaininfo, d, info); -} - #define XSM_ALT_void alternative_vcall #define XSM_ALT_int return alternative_call #define XSM_ALT_pchar_t return alternative_call @@ -149,16 +138,6 @@ static inline rtype xsm_ ## name( \ =20 #include "hooks.h" =20 -static inline int xsm_alloc_security_domain(struct domain *d) -{ - return alternative_call(xsm_ops.alloc_security_domain, d); -} - -static inline void xsm_free_security_domain(struct domain *d) -{ - alternative_vcall(xsm_ops.free_security_domain, d); -} - static inline char *xsm_show_irq_sid(int irq) { return alternative_call(xsm_ops.show_irq_sid, irq); --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -15,7 +15,6 @@ =20 static const struct xsm_ops __initconst_cf_clobber dummy_ops =3D { .set_system_active =3D xsm_set_system_active, - .security_domaininfo =3D xsm_security_domaininfo, =20 #define XSM_HOOK0(rtype, name) .name =3D xsm_ ## name, #define XSM_HOOK1(rtype, name, ...) XSM_HOOK0(rtype, name) @@ -26,9 +25,6 @@ static const struct xsm_ops __initconst_ =20 #include =20 - .alloc_security_domain =3D xsm_alloc_security_domain, - .free_security_domain =3D xsm_free_security_domain, - .show_irq_sid =3D xsm_show_irq_sid, }; =20 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -188,7 +188,7 @@ static int avc_unknown_permission(const return rc; } =20 -static int cf_check flask_domain_alloc_security(struct domain *d) +static int cf_check flask_alloc_security_domain(struct domain *d) { struct domain_security_struct *dsec; =20 @@ -256,7 +256,7 @@ static int cf_check flask_set_system_act return 0; } =20 -static void cf_check flask_domain_free_security(struct domain *d) +static void cf_check flask_free_security_domain(struct domain *d) { struct domain_security_struct *dsec =3D d->ssid; =20 @@ -549,7 +549,7 @@ static int cf_check flask_schedop_shutdo } =20 static void cf_check flask_security_domaininfo( - struct domain *d, struct xen_domctl_getdomaininfo *info) + const struct domain *d, struct xen_domctl_getdomaininfo *info) { info->ssidref =3D domain_sid(d); } @@ -1904,7 +1904,6 @@ static int cf_check flask_get_domain_sta =20 static const struct xsm_ops __initconst_cf_clobber flask_ops =3D { .set_system_active =3D flask_set_system_active, - .security_domaininfo =3D flask_security_domaininfo, =20 #define XSM_HOOK0(rtype, name) .name =3D flask_ ## name, #define XSM_HOOK1(rtype, name, ...) XSM_HOOK0(rtype, name) @@ -1915,9 +1914,6 @@ static const struct xsm_ops __initconst_ =20 #include =20 - .alloc_security_domain =3D flask_domain_alloc_security, - .free_security_domain =3D flask_domain_free_security, - .show_irq_sid =3D flask_show_irq_sid, }; From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786957102; cv=none; d=zohomail.com; s=zohoarc; b=V8hYYI/SNZy9/tqXPfBxrr3Ret1FbIUsmF7vwM3pZjGpaFfABuSn0mxcewx23BB+hzOL3JN+6BlCMuFd40SA0efZH2m8SA7H0GabCQ6Ovnh8KIMUPGVfs+LoTrUhOXRXAV7b+XtRnPn21AK7U48mpjLoMCCR1NiBUUqkMvkykEk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786957102; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8QVewtRw+TwFKfjqe5upIsoN/acNO1D5x9ht9JMPqQM=; b=ZO3M3fAgmBBuMEKjnPDQ5VtdElJ+K6usJtNxT09JyMlVSvfBBm8KW3BGz4TxV4RriKBl8EVQgsLASrg4UrRO1OZ1SbxnRPTSWuiAYm879jrEXE96Etbc4fFIev234BilF6fNPLV2Tv7vPy74STd+0qeF37kD7TK2sFASucz3pQ0= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786957102106780.364086850036; Mon, 17 Aug 2026 01:58:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392726.1631718 (Exim 4.92) (envelope-from ) id 1wvtAT-0006z3-4D; Mon, 17 Aug 2026 08:58:05 +0000 Received: by outflank-mailman (output) from mailman id 1392726.1631718; Mon, 17 Aug 2026 08:58: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 1wvtAT-0006yw-1Q; Mon, 17 Aug 2026 08:58:05 +0000 Received: by outflank-mailman (input) for mailman id 1392726; Mon, 17 Aug 2026 08:58:03 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvtAR-0006xn-Ol for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:58:03 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvtAR-009RUc-5R for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:58:03 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cd1b-2eae-0a2a0a5409dd-0a2a450baa0e-0 for ; Mon, 17 Aug 2026 10:58:03 +0200 Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cd1a-b7e8-0a2a450b0019-d155dd2ae830-3 for ; Mon, 17 Aug 2026 10:58:02 +0200 Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-47f6609c657so1474512f8f.2 for ; Mon, 17 Aug 2026 01:58:02 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482a5a31396sm2279394f8f.2.2026.08.17.01.58.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:58:02 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786957082; x=1787561882; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=8QVewtRw+TwFKfjqe5upIsoN/acNO1D5x9ht9JMPqQM=; b=EPu+UbRKbFFBoDP2pn29coHY9xhdEERQ3jCxcAru/9iN+sQusNc4vAn5hnalitVMI0 JuRTcdqHqf6sK/hKqJ0KEJV5MV1XxSST3UwLOfsJ7QjatahiC5fcj0KQ79/TFcAqliwj CF5deqzKxRb57cQ4XFtvB5iyn7giOXpSPX5jQspwyDaI/vlcXYN1UgQxvemcvEePP02i PS6yUb1cY9UMNUTs8LHnQO8cBzrDVBLdPQHlFUT5W+Fgpa6Ldx9FvM29RX4JoOt6mKzh cdDSBthLJ80oAxPok3srArHX911JRyPwMMGmrQo8PhikH8mwE7g+YovS5JV5rdZkcOZJ AwUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786957082; x=1787561882; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=8QVewtRw+TwFKfjqe5upIsoN/acNO1D5x9ht9JMPqQM=; b=hWdbVfdW7ReBDJqJf9ncNwi7n7egR9XY8GwW9y8gXBjX3chdkrijlwE3LsYeVZVXvj FZSIXI9K4mFkcwAdCPbRFs4u/uO37HDtD3SFmOx8Wj/X8ZIrYyuwuyUYz8ZibyPOSelH k0RTsBEaaLVpJvNFuCwDo+y1aI5QxSWP2lxAGFf4PlnEWj+tuAqzlBpeh4ZnRoj9sKlP Ljj0/3Jg68b/5uaQA2kQS4UENyInjeKyAi4WWWHSQNX6ZJo8WGeTr9LBsESKzUQPAnaN mUKFza/7IjeZU0NtmopDlIoCKUxLZQ3q1FcXRM53LBqubocjCwaw5a8ghTX6PM0iiDZU fl8A== X-Gm-Message-State: AOJu0YyWGECmjmRigHK6ytFqhU8ZEKlG7LQ/Wc7/IDWW3TLIy7VV+5AW +R3C263GhEpcMwR6gS4u8Z3aX2bbHjEKWjXgfe7BBLCZ6Ao/iHtcP7Ov3DEW+ISPhxhYMiUVrNc HHGHykA== X-Gm-Gg: AR+sD10SmzfaX+8DV2IoQaEHbHx/QSw+9rPfyR0xuyFYZ5GS5SeIgC4pwTeZDRAC3P1 pYtFMOdX/wUrjs4Vd9yvT8v5wsN+AK+PrmWqYW5chZ/+WqB+WihZXOHY2lPmsmzcp8kVWiVnN8J ItuvZblqtD7vSMhVSkSnscBL62bfG2af3sqYj5TRg76F6JACo21HmcG+adnKveApak/NNKxK3Nb aMwvDh4pa36OW3vQCVCUeuzY3XC2GASsQc918iU3ffcvTTDCGP4xPlirXmijYIsjM2HhmUTrchF chUQJVa+mU3pjjDFIgDpjA+3HA63qrffZ6m6Rl2SO6WfR8EuGcDDh08WhDyObzr2Fi/uruWTSiQ Q9eWBEc3dEWlkv0HdPwoWOKxxMKjIF4sRQx7CG5tiJBjZdAD3fliEoBCduE1cBcN8gEROY8kRxh ynIJrzhNPq1lifcRv89rhjqkjGeinkIs6vJm0tRRfb5Eu8KI4epEY15xUFip8uUO8A6mQai7lN+ ChV2IfR8hMjq9sPygmqY9Lg397ccWnI6sDzL09tjZ5H9IglvD6E X-Received: by 2002:a05:6000:240c:b0:47f:e9fd:80d8 with SMTP id ffacd0b85a97d-481607947e2mr34071751f8f.21.1786957082432; Mon, 17 Aug 2026 01:58:02 -0700 (PDT) Message-ID: Date: Mon, 17 Aug 2026 10:58:03 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 13/14] XSM: convert remaining miscellaneous hooks From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Julien Grall , Stefano Stabellini , Volodymyr Babchuk , Bertrand Marquis , Michal Orzel , Andrew Cooper , Teddy Astie , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-42698a/1786957082-A8ECE9EA-746152B0/0/0 X-purgate-type: clean X-purgate-size: 5160 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786957103474158500 Content-Type: text/plain; charset="utf-8" Make the ones left also follow the standard scheme, i.e. taking xsm_default_t as first argument at call sites. This way they can be covered by the recently introduced hook machinery. Signed-off-by: Jan Beulich --- Interestingly .show_irq_sid() is unused on Arm. Oddly there's no use of register_keyhandler() there at all. (IOW I think it would be wrong to make the hook x86-only.) --- v2: New. --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -497,7 +497,7 @@ void asmlinkage __init noreturn start_xe /* Hide UART from DOM0 if we're using it */ serial_endboot(); =20 - if ( (rc =3D xsm_set_system_active()) !=3D 0 ) + if ( (rc =3D xsm_set_system_active(XSM_HOOK)) !=3D 0 ) panic("xsm: unable to switch to SYSTEM_ACTIVE privilege: %d\n", rc= ); =20 system_state =3D SYS_STATE_active; --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2549,7 +2549,7 @@ static void cf_check dump_irqs(unsigned if ( !irq_desc_initialized(desc) || desc->handler =3D=3D &no_irq_t= ype ) continue; =20 - ssid =3D in_irq() ? NULL : xsm_show_irq_sid(irq); + ssid =3D in_irq() ? NULL : xsm_show_irq_sid(XSM_HOOK, irq); =20 spin_lock_irqsave(&desc->lock, flags); =20 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -835,7 +835,7 @@ static void noreturn init_done(void) unsigned long start, end; int err; =20 - if ( (err =3D xsm_set_system_active()) !=3D 0 ) + if ( (err =3D xsm_set_system_active(XSM_HOOK)) !=3D 0 ) panic("xsm: unable to switch to SYSTEM_ACTIVE privilege: %d\n", er= r); =20 system_state =3D SYS_STATE_active; --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -104,10 +104,12 @@ static always_inline int xsm_default_act } } =20 -static XSM_INLINE int xsm_set_system_active(void) +static XSM_INLINE int xsm_set_system_active(XSM_DEFAULT_VOID) { struct domain *d =3D current->domain; =20 + XSM_ASSERT_ACTION(XSM_HOOK); + ASSERT(d->is_privileged); =20 if ( d->domain_id !=3D DOMID_IDLE ) @@ -467,8 +469,9 @@ static XSM_INLINE int xsm_do_compat_op(X =20 #endif /* CONFIG_XSM */ =20 -static XSM_INLINE char *xsm_show_irq_sid(int irq) +static XSM_INLINE char *xsm_show_irq_sid(XSM_DEFAULT_ARG int irq) { + XSM_ASSERT_ACTION(XSM_HOOK); return NULL; } =20 --- a/xen/include/xsm/hooks.h +++ b/xen/include/xsm/hooks.h @@ -17,6 +17,8 @@ =20 #endif /* XSM_HOOK */ =20 +XSM_HOOK(int, set_system_active) + XSM_HOOK(int, domain_create, struct domain *, uint32_t) XSM_HOOK(int, getdomaininfo, struct domain *) XSM_HOOK(int, get_domain_state, struct domain *) @@ -84,6 +86,8 @@ XSM_HOOK(int, irq_mapping, struct domain XSM_HOOK(int, pt_irq_binding, struct domain *, struct xen_domctl_bind_pt_i= rq *, bool) =20 +XSM_HOOK(pchar_t, show_irq_sid, int) + XSM_HOOK(int, irq_permission, struct domain *, int, bool) XSM_HOOK(int, iomem_permission, struct domain *, uint64_t, uint64_t, bool) =20 --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -61,7 +61,6 @@ typedef enum xsm_default xsm_default_t; * !!! WARNING !!! */ struct xsm_ops { - int (*set_system_active)(void); =20 #define XSM_HOOK0(rtype, name) rtype (*name)(void); #define XSM_HOOK1(rtype, name, type1) \ @@ -77,7 +76,6 @@ struct xsm_ops { =20 #include "hooks.h" =20 - char *(*show_irq_sid)(int irq); }; =20 #ifdef CONFIG_XSM @@ -86,11 +84,6 @@ extern struct xsm_ops xsm_ops; =20 #ifndef XSM_NO_WRAPPERS =20 -static inline int xsm_set_system_active(void) -{ - return alternative_call(xsm_ops.set_system_active); -} - #define XSM_ALT_void alternative_vcall #define XSM_ALT_int return alternative_call #define XSM_ALT_pchar_t return alternative_call @@ -138,11 +131,6 @@ static inline rtype xsm_ ## name( \ =20 #include "hooks.h" =20 -static inline char *xsm_show_irq_sid(int irq) -{ - return alternative_call(xsm_ops.show_irq_sid, irq); -} - #endif /* XSM_NO_WRAPPERS */ =20 #ifdef CONFIG_MULTIBOOT --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -14,7 +14,6 @@ #include =20 static const struct xsm_ops __initconst_cf_clobber dummy_ops =3D { - .set_system_active =3D xsm_set_system_active, =20 #define XSM_HOOK0(rtype, name) .name =3D xsm_ ## name, #define XSM_HOOK1(rtype, name, ...) XSM_HOOK0(rtype, name) @@ -25,7 +24,6 @@ static const struct xsm_ops __initconst_ =20 #include =20 - .show_irq_sid =3D xsm_show_irq_sid, }; =20 void __init xsm_fixup_ops(struct xsm_ops *ops) --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1903,7 +1903,6 @@ static int cf_check flask_get_domain_sta } =20 static const struct xsm_ops __initconst_cf_clobber flask_ops =3D { - .set_system_active =3D flask_set_system_active, =20 #define XSM_HOOK0(rtype, name) .name =3D flask_ ## name, #define XSM_HOOK1(rtype, name, ...) XSM_HOOK0(rtype, name) @@ -1914,7 +1913,6 @@ static const struct xsm_ops __initconst_ =20 #include =20 - .show_irq_sid =3D flask_show_irq_sid, }; =20 const struct xsm_ops *__init flask_init( From nobody Thu Aug 27 02:06:48 2026 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=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1786957143; cv=none; d=zohomail.com; s=zohoarc; b=U381CO3FcXG8FFHbTogovDJ3nRr7Y+CFbDSM2n2e0D3oi95x6L0KPcdcMoLGiixqyYRd9dcPVCRlZ7GntOFeOl2jNSwC1kRZdypkJayExY0qZTodhWLICPSv4iRT8azK8uFhWF7BOGvBG7B1Y39YGStgZrtfsyLWjIgK2jxOMFA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786957143; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JTfzh5nMGjglXFSQtaFq+GPWNKgrY8T3kAqW5LSmjgc=; b=Kmf4BYwFitUthny04ZezE9vZhEsvReHcdoJhLkKhTfArKmOjRnhFlNPOyFrCuMjdtL49LIhUQ46czHjWXMnq7XA4/YLYaOFRUEbWswu8V2OL0QludrAX2crpCEdana6p97JFkwqmpWWLgm0hVU5NnFIxEK/mtQGMm7DulsF8aRE= 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=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786957143007295.4404522744287; Mon, 17 Aug 2026 01:59:03 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1392733.1631728 (Exim 4.92) (envelope-from ) id 1wvtBB-0007gq-D1; Mon, 17 Aug 2026 08:58:49 +0000 Received: by outflank-mailman (output) from mailman id 1392733.1631728; Mon, 17 Aug 2026 08:58:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvtBB-0007gj-9U; Mon, 17 Aug 2026 08:58:49 +0000 Received: by outflank-mailman (input) for mailman id 1392733; Mon, 17 Aug 2026 08:58:48 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wvtB9-0007gT-Vn for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 08:58:48 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wvtB8-005H11-Jl for xen-devel@lists.xenproject.org; Mon, 17 Aug 2026 10:58:46 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a82cd38-8faa-0a2a0a5109dd-0a2a4509baf2-32 for ; Mon, 17 Aug 2026 10:58:46 +0200 Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a82cd46-be1a-0a2a45090019-d155dd2eb887-3 for ; Mon, 17 Aug 2026 10:58:46 +0200 Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-47362928f65so3040073f8f.2 for ; Mon, 17 Aug 2026 01:58:46 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4999d11f073sm28466565e9.15.2026.08.17.01.58.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Aug 2026 01:58:45 -0700 (PDT) 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1786957126; x=1787561926; darn=lists.xenproject.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=JTfzh5nMGjglXFSQtaFq+GPWNKgrY8T3kAqW5LSmjgc=; b=cgTUpKGY5VsugGAI0/KhXS+MYDhS3vL+p82T7JjpaUifAttT7566OfO8qkG6IQzOL3 Y8TZXRVZxYlN8+FYh2s4IoKBZfBwdnpg2S9l3xxkk8hgMKaGUfYLg45Js2KJHLVZ2+V7 upp/VLkU1gjq7oJJt9riTI+RMCSKbWsMsTcr8h1duU3vbtecOYEsFnM4O5vUUBnON8Sr ScWypRu9zkaVl6RyMCrJDXP9WnZPcV7a3w+ZrvqYktfN9t443M+5U2h0U2z8Z2+pl3zc QonP3/pTmBwmLgzAmW1X+CBVxbIsidTeCptk8hZoRSBS3YovcY/k67ePniNHvVFd+5ig UJgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786957126; x=1787561926; h=content-transfer-encoding:content-type:in-reply-to:autocrypt :content-language:references:cc:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=JTfzh5nMGjglXFSQtaFq+GPWNKgrY8T3kAqW5LSmjgc=; b=UQy0Vbzgtyy10xhWxak45rrLZQJ4JD4vN64Hs44i6BoZuxi6d2UYitjIKF3ZLhrrtD LbEUVAE8PxSRE+Gwj02lCJ8xMvBvuvo2MEe4bzg8ZxWuHxebpsWu7lh28B+cZ29LXTPW +7EXIey5pJVlTgMu71Iu5cUxKqR5IenJ3MpNkVESHNVZ1x6l9Mc9clD1n15Rf4Io5pVH +9NY4Opi22zC17r6DlP+EjTV05V6VqdEIy6B+g4yQw+dJpJsAqcxRzR0FTv8jvL9GZwe NEnOaAxAo1jhqn+RCZUa+kaG2C4u4wrt2dRJ2BnOoUH70p6SO4FkqVJjDoj/814X/5gq y2pA== X-Gm-Message-State: AOJu0Yxr/P/cbAsVomNKzPdL4GKKxjePChedHtC8q36Ty/no8aCPYx7F 3Fp0rTfnGZc6f2+Qy/q8Kv0Ot98/1XIOJAL+LDu149NjSHY7hpXRMO8IDTD0YQ0BntvAlcdz47c nC956yQ== X-Gm-Gg: AR+sD12ZTIq4dlEFOmbqG1NCISa0NI5ISajzaxl59jnk1Mf0EfOE78Vlc6E5dpHMSaj 2OzsdAiwPp9hycKRNXOJWD43z+82owUEAZlRHvQJz3h1BAEBK5sjbLQ1t7/sNPY498V+PGWNns+ BnOn/nVJv1CkY19i3E6ActiEqXvBqH4/v5uo8aoUz9IPbgEKhx8JhQ7RjoYqBeidmnD8+4eNt7j ikWpyZvA+B7JhyowntHw2kHEijqK4gk3KJ7ANt4B+0GAdh3tK/LXUtw0codBWAVoDUJw4jCD1hP tnEoJwhEtRwAoSt2CXFNl895yvveUaU+OOnANViNBpmnYZs8FxixVSamO3A8FKiXVO4pDrj8zvC 7mwyNwAYKpnH/AFs1RjUYy8h6jGd1M7CsMgxsIW7DAYBrmD0t0BVC5Lze0HDUR8XCW4pdmc/1+H cj6+TzztS8SJtMKOlkfxBoqXNxrZBNLszIdhd9wasxrDIbL+3H8RTH2bSM7OVw7JekMuaS9RT+z lFRVmfDRSjxaYd3K7by8qYmAhn+iPwMkps+PMlCltns2u5tNvTbzQ== X-Received: by 2002:a05:600c:3585:b0:499:9eb7:4558 with SMTP id 5b1f17b1804b1-4999eb7462amr4762655e9.10.1786957126079; Mon, 17 Aug 2026 01:58:46 -0700 (PDT) Message-ID: <0511f8a7-7790-44c3-addd-67a969f4f5c1@suse.com> Date: Mon, 17 Aug 2026 10:58:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH RFC v2 14/14] XSM: avoid fragile assumptions in xsm_fixup_ops() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Daniel Smith , Andrew Cooper References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-bad1c0/1786957126-BD8C1034-97BB62B4/0/0 X-purgate-type: clean X-purgate-size: 3645 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1786957143633158500 Content-Type: text/plain; charset="utf-8" Using the recently introduced hook machinery, the assumptions made can be avoided, at the expense of a significant code size increase. Signed-off-by: Jan Beulich --- RFC: Of course the significantly increased code size isn't nice. Yet then it's all .init.text bloat only. RFC: The asm() is somewhat like RELOC_HIDE(), with an offset of 0. It didn't feel quite right to use that macro here, though. The generated code I've looked at (both for x86 and Arm64) it is clear that a similar weakness in codegen exists for the recurring accesses to _{s,e}text[] by is_kernel_text(): A register variable each would shrink code size significantly, yet that doesn't appear to happen at -O1. Yet open-coding isn't an option, imo. --- v2: New. --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -51,15 +51,6 @@ typedef enum xsm_default xsm_default_t; #define XSM_MMU_MACHPHYS_UPDATE 8 #endif /* CONFIG_X86 */ =20 -/* - * !!! WARNING !!! - * - * For simplicity, xsm_fixup_ops() expects that this structure is made - * exclusively of function pointers to non-init functions. Think carefully - * before deviating from the pattern. - * - * !!! WARNING !!! - */ struct xsm_ops { =20 #define XSM_HOOK0(rtype, name) rtype (*name)(void); --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -28,29 +28,35 @@ static const struct xsm_ops __initconst_ =20 void __init xsm_fixup_ops(struct xsm_ops *ops) { + const struct xsm_ops *dops =3D &dummy_ops; + /* - * We make some simplifying assumptions about struct xsm_ops; that it = is - * made exclusively of function pointers to non-init text. - * - * This allows us to walk over struct xsm_ops as if it were an array of - * unsigned longs. + * To limit the size of generated code (by avoiding the compiler using + * dummy_ops directly for every access), hide the relationship between + * dops and dummy_ops. */ - unsigned long *dst =3D _p(ops); - const unsigned long *src =3D _p(&dummy_ops); + asm ( "" : "+r" (dops) ); =20 - for ( ; dst < (unsigned long *)(ops + 1); src++, dst++ ) - { - /* - * If you encounter this BUG(), then you've most likely added a new - * XSM hook but failed to provide the default implementation in - * dummy_ops. - * - * If not, then perhaps a function pointer to an init function, or - * something which isn't a function pointer at all. - */ - BUG_ON(!is_kernel_text(*src)); + /* + * If you encounter the BUG() below, then you've most likely added a + * new XSM hook but failed to provide the default implementation in + * dummy_ops. + * + * If not, then perhaps a function pointer to an init function, or + * (less likely) something which isn't a function pointer at all. + */ +#define XSM_HOOK0(rtype, name) \ + do { \ + typeof(xsm_ ## name) *dummy =3D dops->name; \ + BUG_ON(!is_kernel_text(dummy)); \ + if ( !ops->name ) \ + ops->name =3D dummy; \ + } while ( false ); +#define XSM_HOOK1(rtype, name, ...) XSM_HOOK0(rtype, name) +#define XSM_HOOK2(rtype, name, ...) XSM_HOOK0(rtype, name) +#define XSM_HOOK3(rtype, name, ...) XSM_HOOK0(rtype, name) +#define XSM_HOOK4(rtype, name, ...) XSM_HOOK0(rtype, name) +#define XSM_HOOK5(rtype, name, ...) XSM_HOOK0(rtype, name) =20 - if ( !*dst ) - *dst =3D *src; - } +#include }