From patchwork Tue Nov 19 10:34:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 13879627 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C7F40D6206A for ; Tue, 19 Nov 2024 10:35:04 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.839918.1255697 (Exim 4.92) (envelope-from ) id 1tDLZP-0000aU-J1; Tue, 19 Nov 2024 10:34:55 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 839918.1255697; Tue, 19 Nov 2024 10:34:55 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tDLZP-0000aN-F6; Tue, 19 Nov 2024 10:34:55 +0000 Received: by outflank-mailman (input) for mailman id 839918; Tue, 19 Nov 2024 10:34:54 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tDLZO-0000aB-4l for xen-devel@lists.xenproject.org; Tue, 19 Nov 2024 10:34:54 +0000 Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [2a00:1450:4864:20::635]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e88b4cb5-a661-11ef-a0ca-8be0dac302b0; Tue, 19 Nov 2024 11:34:51 +0100 (CET) Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-aa20c733e92so583494366b.0 for ; Tue, 19 Nov 2024 02:34:51 -0800 (PST) Received: from localhost ([213.195.123.63]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa20e0812aesm630324366b.176.2024.11.19.02.34.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 02:34:50 -0800 (PST) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e88b4cb5-a661-11ef-a0ca-8be0dac302b0 X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzUiLCJoZWxvIjoibWFpbC1lajEteDYzNS5nb29nbGUuY29tIn0= X-Custom-Transaction: eyJpZCI6ImU4OGI0Y2I1LWE2NjEtMTFlZi1hMGNhLThiZTBkYWMzMDJiMCIsInRzIjoxNzMyMDEyNDkxLjY5MTE3LCJzZW5kZXIiOiJyb2dlci5wYXVAY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1732012491; x=1732617291; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rJBBbyuIQCYsK6rK43EbpJKOGh50/Oq+iOYqEx2dg9s=; b=fXkC5NrZmnM9U7cvOlecLCjenG4Op1/h7rRq2BIMgX/vi62A91Exgoft6bJFJfuxh4 Hyb0V0ssPfRBKLWWo7iAB7I8rlHbFInsN6LKS/Kg4RyE8B2oC16uDOyyIlH+ABn0a80Z 40/jjaRaFCBbmYJ931wfkZq6AKkPlYL+4YFg0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732012491; x=1732617291; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rJBBbyuIQCYsK6rK43EbpJKOGh50/Oq+iOYqEx2dg9s=; b=mnyLgKrp9NNGvic4IO8x9lPaLKVhUA+WAr7KP7YnpXIelDyDXunQSVUKgXbDi/MiNo Y6ElWoNkacHkcVxrbdNgv2VGaRyIami/MrWKFqjo7RR42bM498gTkX76YoENYVP6KqOQ J/4lpHqgIGj3v+pUgQ/M1lK9jDLO6MxFWwX5C4XcDj7MLBo3O7EdL3NSI59Uq6d4WNn8 d+VgUZYxdBzGLiJ2pV7O7crOYxiNOyasYUGSmXWKefJktlEECCrfCnbns9xqaJClQmeT phFoXFieaSRltWzokMissfC7d6WENYz1c2xDrNmmBI33EL9HLYgzNsg9N0JvPrWebohP cACw== X-Gm-Message-State: AOJu0Yy46QuJiHtxfH5ebO/jxefnp/+ix3KPT9LWL8Znl7paOaGbE+mi unZqqGpE9FTAQDWc2aiUiMKJ0v8GyCW0/JWee+/Cjy16zFurDRU4/n2ysjbcG7GXkrEYyWbMcYy T X-Google-Smtp-Source: AGHT+IEo1WtFxaf15RLq3BAAYzsbXhcsmW7mBp1090g41vITBvFhcqdFiYAEXLtb1V+KvevboAFnrQ== X-Received: by 2002:a17:907:2cc2:b0:a9a:46f5:d6d7 with SMTP id a640c23a62f3a-aa4833ec1damr1489691666b.5.1732012490846; Tue, 19 Nov 2024 02:34:50 -0800 (PST) From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper Subject: [PATCH 1/4] x8&/mm: fix IS_LnE_ALIGNED() to comply with Misra Rule 20.7 Date: Tue, 19 Nov 2024 11:34:41 +0100 Message-ID: <20241119103444.23296-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20241119103444.23296-1-roger.pau@citrix.com> References: <20241119103444.23296-1-roger.pau@citrix.com> MIME-Version: 1.0 While not strictly needed to guarantee operator precedence is as expected, add the parentheses to comply with Misra Rule 20.7. No functional change intended. Reported-by: Andrew Cooper Fixes: 5b52e1b0436f ('x86/mm: skip super-page alignment checks for non-present entries') Signed-off-by: Roger Pau Monné Acked-by: Jan Beulich --- xen/arch/x86/mm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 494c14e80ff9..fa21903eb25a 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -5498,7 +5498,7 @@ int map_pages_to_xen( * be INVALID_MFN, since alignment is only relevant for present entries. */ #define IS_LnE_ALIGNED(v, m, n) ({ \ - mfn_t m_ = m; \ + mfn_t m_ = (m); \ \ ASSERT(!mfn_eq(m_, INVALID_MFN)); \ IS_ALIGNED(PFN_DOWN(v) | mfn_x(m_), \ From patchwork Tue Nov 19 10:34:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 13879630 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CDB96D62071 for ; Tue, 19 Nov 2024 10:35:12 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.839920.1255717 (Exim 4.92) (envelope-from ) id 1tDLZS-00014e-1p; Tue, 19 Nov 2024 10:34:58 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 839920.1255717; Tue, 19 Nov 2024 10:34:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tDLZR-00014T-UJ; Tue, 19 Nov 2024 10:34:57 +0000 Received: by outflank-mailman (input) for mailman id 839920; Tue, 19 Nov 2024 10:34:56 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tDLZP-0000aC-UI for xen-devel@lists.xenproject.org; Tue, 19 Nov 2024 10:34:55 +0000 Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [2a00:1450:4864:20::62b]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e924aa79-a661-11ef-99a3-01e77a169b0f; Tue, 19 Nov 2024 11:34:52 +0100 (CET) Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-a9a6b4ca29bso611738766b.3 for ; Tue, 19 Nov 2024 02:34:52 -0800 (PST) Received: from localhost ([213.195.123.63]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa20e044bb8sm633706166b.150.2024.11.19.02.34.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 02:34:51 -0800 (PST) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e924aa79-a661-11ef-99a3-01e77a169b0f X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmIiLCJoZWxvIjoibWFpbC1lajEteDYyYi5nb29nbGUuY29tIn0= X-Custom-Transaction: eyJpZCI6ImU5MjRhYTc5LWE2NjEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMyMDEyNDkyLjcxNjM3OSwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1732012492; x=1732617292; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rZ82fMjo7f/+Ug2kFMZ6vDINmL+ZwDvWFTn794Oj1rk=; b=XdUF2ZGRLC2BXrdEdZh4ugKZfSWf5g88OzRuNCWVef+jYQUFTa6CpWkM9q2wuB3u0r tIqnktK2cbt36yb0iArJdnf1ENSan+R6gyKcG/NDR04KNiA/2LEY3cl2Xi1hqoSlfvuG 5j6mE7fKSIyXtnwCS7NXXjjOmCbRoEl+ZTy/0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732012492; x=1732617292; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rZ82fMjo7f/+Ug2kFMZ6vDINmL+ZwDvWFTn794Oj1rk=; b=iyXV449nmrVz/AvLiKWI2aW8jcUyTWTOEQ9+c4DNMFoL1DN5Xoyj/pk3EJTVrsDZ2B J+i3L0ngPnxhz1zISPpRn8IcCwRG1KZMso8W+3lBMotXkJVm6cxJajbjHUlOpd9PRzWm Z729YpdVPc7rqGoamE6FFXsQGPhUisdaHV7J0xISlieqs3zkMevRAP3Mqz892y0GO/ao kbz16B1cSqZu5Vue49hLffMOwxSU5fvW6KJ5DAKHJhpSTYaawwa6MQM7EiiL3gL94lG6 oQS/1Z+4LPL3TCYGiT5LJEPj7chjrMCv6/kK0elAw7mCF7Fo1suwZR1x/UInS8pmy4oy FjaQ== X-Gm-Message-State: AOJu0Yx74mEEhRnfjSMHVmLcyKlZrwhFieSD49uxRKTz/fE/ePdzNmNQ XFqfDjgd2bEuwl2T16borTm9dPsuK+W8OjRO/ORM8CcFq6PsVQzHPbM5dYyDhv93MIFz47ctLxc N X-Google-Smtp-Source: AGHT+IE9mIPwptfQcOONcgsmg3XZysj9KYiZdM0dzj59xhF/TX7rURgl7iaAvoo81T+LuCAHu+X3nw== X-Received: by 2002:a17:907:928a:b0:a9a:bbcc:5092 with SMTP id a640c23a62f3a-aa48350b016mr1511216166b.39.1732012491894; Tue, 19 Nov 2024 02:34:51 -0800 (PST) From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper Subject: [PATCH 2/4] x86/msi: fix Misra Rule 20.7 in msi.h Date: Tue, 19 Nov 2024 11:34:42 +0100 Message-ID: <20241119103444.23296-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20241119103444.23296-1-roger.pau@citrix.com> References: <20241119103444.23296-1-roger.pau@citrix.com> MIME-Version: 1.0 Prune unused macros and adjust the remaining ones to parenthesize macro arguments. No functional change intended. Singed-off-by: Roger Pau Monné --- xen/arch/x86/include/asm/msi.h | 35 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/xen/arch/x86/include/asm/msi.h b/xen/arch/x86/include/asm/msi.h index 748bc3cd6d8b..49a576383288 100644 --- a/xen/arch/x86/include/asm/msi.h +++ b/xen/arch/x86/include/asm/msi.h @@ -147,33 +147,26 @@ int msi_free_irq(struct msi_desc *entry); */ #define NR_HP_RESERVED_VECTORS 20 -#define msi_control_reg(base) (base + PCI_MSI_FLAGS) -#define msi_lower_address_reg(base) (base + PCI_MSI_ADDRESS_LO) -#define msi_upper_address_reg(base) (base + PCI_MSI_ADDRESS_HI) +#define msi_control_reg(base) ((base) + PCI_MSI_FLAGS) +#define msi_lower_address_reg(base) ((base) + PCI_MSI_ADDRESS_LO) +#define msi_upper_address_reg(base) ((base) + PCI_MSI_ADDRESS_HI) #define msi_data_reg(base, is64bit) \ - ( (is64bit == 1) ? base+PCI_MSI_DATA_64 : base+PCI_MSI_DATA_32 ) + ((base) + ((is64bit) ? PCI_MSI_DATA_64 : PCI_MSI_DATA_32)) #define msi_mask_bits_reg(base, is64bit) \ - ( (is64bit == 1) ? base+PCI_MSI_MASK_BIT : base+PCI_MSI_MASK_BIT-4) + ((base) + PCI_MSI_MASK_BIT - ((is64bit) ? 0 : 4)) #define msi_pending_bits_reg(base, is64bit) \ ((base) + PCI_MSI_MASK_BIT + ((is64bit) ? 4 : 0)) -#define msi_disable(control) control &= ~PCI_MSI_FLAGS_ENABLE #define multi_msi_capable(control) \ - (1 << ((control & PCI_MSI_FLAGS_QMASK) >> 1)) + (1U << MASK_EXTR(control, PCI_MSI_FLAGS_QMASK)) #define multi_msi_enable(control, num) \ - control |= (((fls(num) - 1) << 4) & PCI_MSI_FLAGS_QSIZE); -#define is_64bit_address(control) (!!(control & PCI_MSI_FLAGS_64BIT)) -#define is_mask_bit_support(control) (!!(control & PCI_MSI_FLAGS_MASKBIT)) -#define msi_enable(control, num) multi_msi_enable(control, num); \ - control |= PCI_MSI_FLAGS_ENABLE - -#define msix_control_reg(base) (base + PCI_MSIX_FLAGS) -#define msix_table_offset_reg(base) (base + PCI_MSIX_TABLE) -#define msix_pba_offset_reg(base) (base + PCI_MSIX_PBA) -#define msix_enable(control) control |= PCI_MSIX_FLAGS_ENABLE -#define msix_disable(control) control &= ~PCI_MSIX_FLAGS_ENABLE -#define msix_table_size(control) ((control & PCI_MSIX_FLAGS_QSIZE)+1) -#define msix_unmask(address) (address & ~PCI_MSIX_VECTOR_BITMASK) -#define msix_mask(address) (address | PCI_MSIX_VECTOR_BITMASK) + ((control) |= MASK_INSR(fls(num) - 1, PCI_MSI_FLAGS_QSIZE)) +#define is_64bit_address(control) !!((control) & PCI_MSI_FLAGS_64BIT) +#define is_mask_bit_support(control) !!((control) & PCI_MSI_FLAGS_MASKBIT) + +#define msix_control_reg(base) ((base) + PCI_MSIX_FLAGS) +#define msix_table_offset_reg(base) ((base) + PCI_MSIX_TABLE) +#define msix_pba_offset_reg(base) ((base) + PCI_MSIX_PBA) +#define msix_table_size(control) (((control) & PCI_MSIX_FLAGS_QSIZE) + 1) /* * MSI Defined Data Structures From patchwork Tue Nov 19 10:34:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 13879628 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 224F2D62071 for ; Tue, 19 Nov 2024 10:35:08 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.839921.1255723 (Exim 4.92) (envelope-from ) id 1tDLZS-00019o-F8; Tue, 19 Nov 2024 10:34:58 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 839921.1255723; Tue, 19 Nov 2024 10:34:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tDLZS-00017z-8v; Tue, 19 Nov 2024 10:34:58 +0000 Received: by outflank-mailman (input) for mailman id 839921; Tue, 19 Nov 2024 10:34:57 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tDLZR-0000aC-Dw for xen-devel@lists.xenproject.org; Tue, 19 Nov 2024 10:34:57 +0000 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [2a00:1450:4864:20::52d]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e9dbee06-a661-11ef-99a3-01e77a169b0f; Tue, 19 Nov 2024 11:34:53 +0100 (CET) Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-5cfbeed072dso3287561a12.3 for ; Tue, 19 Nov 2024 02:34:53 -0800 (PST) Received: from localhost ([213.195.123.63]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5cfe84f8207sm120958a12.32.2024.11.19.02.34.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 02:34:52 -0800 (PST) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e9dbee06-a661-11ef-99a3-01e77a169b0f X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmQiLCJoZWxvIjoibWFpbC1lZDEteDUyZC5nb29nbGUuY29tIn0= X-Custom-Transaction: eyJpZCI6ImU5ZGJlZTA2LWE2NjEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMyMDEyNDkzLjk0MTY3NCwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1732012493; x=1732617293; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cO1IumWlbaoJe1bK8+bYKC2sAvhfBGmW90G8QQAFdCE=; b=eVgFuNuK4zOZMEcIX90/IN/srdA65LubPwAi2RyzbY0Ouu8BgiEwMpJwGasNglgJjq 1GeNjtjQvUZFNwtMMOl5GKKfLqk8aGbpJa9b1DW2ll+htD7SlG3duccsKpj6gF/l8dwH Yt/Chvuicw+FIw1OFBcVE20sNqYwMUvUxuIRg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732012493; x=1732617293; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cO1IumWlbaoJe1bK8+bYKC2sAvhfBGmW90G8QQAFdCE=; b=qFZ4CjIbdRy97FKdEogBJsbOzg0KeaHN/RnfIiJGt08btM5QP8BnAQwb2jayTw/P8Q flBkb7PWvDb/oLBFWK84fskKLfiU5oqwTY6ew3qIy0wHF/t/hsilILW6WAP0gozv51pJ H3qelQ3hyA1IZ2F+zlYBqLB52YJLtN8iO9fzrzQINUXuheaAX1vY+tN8ZEZdKLq6LRk+ HQRDt/9yTzGnA1qEF2P4pEWMgOo/mA0KF2mFiE+3yuXNcdcpml8tS/Gxjc19kw83rb2R 5YGlUs3Q/YO49wNI9Bb9l1MXuSO4aYf9cidWgzco2tttHclSnEaoCqu8BvyDnbonIVmm L/Vg== X-Gm-Message-State: AOJu0Ywz6qZVoKkhOiTDsUlwsGt7Vcj3LCe/32b0hYiaLvETfHff72ZE KoiDorRsyRyy7Fn1dJrq0nbYgcaCZ2ZRXqPTHkAnHS0CQN3yY7E+iC/T9xjC6+gpaRHWau6dwjj E X-Google-Smtp-Source: AGHT+IEhPCo9rL4nHhlIZCkWsxczkP0p++tT+Ie2gGjDMV6Jni4r8Vf8Mn4MsSSBp/skTYhP5PNbbw== X-Received: by 2002:a17:906:6a07:b0:a9e:471e:ce4a with SMTP id a640c23a62f3a-aa4833e8cfbmr1510445266b.11.1732012493031; Tue, 19 Nov 2024 02:34:53 -0800 (PST) From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper Subject: [PATCH 3/4] x86/uaccess: rework user access speculative harden guards Date: Tue, 19 Nov 2024 11:34:43 +0100 Message-ID: <20241119103444.23296-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20241119103444.23296-1-roger.pau@citrix.com> References: <20241119103444.23296-1-roger.pau@citrix.com> MIME-Version: 1.0 The current guards to select whether user accesses should be speculative hardened violate Misra rule 20.7, as the UA_KEEP() macro doesn't (and can't) parenthesize the 'args' argument. Change the logic so the guard is implemented inside the assembly block using the .if assembly directive. No functional change intended. Signed-off-by: Roger Pau Monné --- The guard check could be moved inside of the guest_access_mask_ptr macro, but given it's limited usages it's clearer to keep the check in the callers IMO. --- xen/arch/x86/include/asm/uaccess.h | 45 +++++++++++++++--------------- xen/arch/x86/usercopy.c | 26 ++++++++--------- 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/xen/arch/x86/include/asm/uaccess.h b/xen/arch/x86/include/asm/uaccess.h index 2d01669b9610..6b8150ac221a 100644 --- a/xen/arch/x86/include/asm/uaccess.h +++ b/xen/arch/x86/include/asm/uaccess.h @@ -24,9 +24,6 @@ unsigned int copy_from_unsafe_ll(void *to, const void *from, unsigned int n); void noreturn __get_user_bad(void); void noreturn __put_user_bad(void); -#define UA_KEEP(args...) args -#define UA_DROP(args...) - /** * get_guest: - Get a simple variable from guest space. * @x: Variable to store result. @@ -104,7 +101,7 @@ void noreturn __put_user_bad(void); #define put_unsafe(x, ptr) \ ({ \ int err_; \ - put_unsafe_size(x, ptr, sizeof(*(ptr)), UA_DROP, err_, -EFAULT);\ + put_unsafe_size(x, ptr, sizeof(*(ptr)), 0, err_, -EFAULT); \ err_; \ }) @@ -126,7 +123,7 @@ void noreturn __put_user_bad(void); #define get_unsafe(x, ptr) \ ({ \ int err_; \ - get_unsafe_size(x, ptr, sizeof(*(ptr)), UA_DROP, err_, -EFAULT);\ + get_unsafe_size(x, ptr, sizeof(*(ptr)), 0, err_, -EFAULT); \ err_; \ }) @@ -155,9 +152,9 @@ struct __large_struct { unsigned long buf[100]; }; */ #define put_unsafe_asm(x, addr, GUARD, err, itype, rtype, ltype, errret) \ __asm__ __volatile__( \ - GUARD( \ + ".if " STR(GUARD) "\n" \ " guest_access_mask_ptr %[ptr], %[scr1], %[scr2]\n" \ - ) \ + ".endif\n" \ "1: mov"itype" %"rtype"[val], (%[ptr])\n" \ "2:\n" \ ".section .fixup,\"ax\"\n" \ @@ -165,16 +162,16 @@ struct __large_struct { unsigned long buf[100]; }; " jmp 2b\n" \ ".previous\n" \ _ASM_EXTABLE(1b, 3b) \ - : [ret] "+r" (err), [ptr] "=&r" (dummy_) \ - GUARD(, [scr1] "=&r" (dummy_), [scr2] "=&r" (dummy_)) \ + : [ret] "+r" (err), [ptr] "=&r" (dummy_), \ + [scr1] "=&r" (dummy_), [scr2] "=&r" (dummy_) \ : [val] ltype (x), "m" (__m(addr)), \ "[ptr]" (addr), [errno] "i" (errret)) #define get_unsafe_asm(x, addr, GUARD, err, rtype, ltype, errret) \ __asm__ __volatile__( \ - GUARD( \ + ".if " STR(GUARD) "\n" \ " guest_access_mask_ptr %[ptr], %[scr1], %[scr2]\n" \ - ) \ + ".endif\n" \ "1: mov (%[ptr]), %"rtype"[val]\n" \ "2:\n" \ ".section .fixup,\"ax\"\n" \ @@ -184,14 +181,15 @@ struct __large_struct { unsigned long buf[100]; }; ".previous\n" \ _ASM_EXTABLE(1b, 3b) \ : [ret] "+r" (err), [val] ltype (x), \ - [ptr] "=&r" (dummy_) \ - GUARD(, [scr1] "=&r" (dummy_), [scr2] "=&r" (dummy_)) \ + [ptr] "=&r" (dummy_), \ + [scr1] "=&r" (dummy_), [scr2] "=&r" (dummy_) \ : "m" (__m(addr)), "[ptr]" (addr), \ [errno] "i" (errret)) #define put_unsafe_size(x, ptr, size, grd, retval, errret) \ do { \ retval = 0; \ + BUILD_BUG_ON((grd) != 0 && (grd) != 1); \ stac(); \ switch ( size ) \ { \ @@ -214,11 +212,12 @@ do { \ } while ( false ) #define put_guest_size(x, ptr, size, retval, errret) \ - put_unsafe_size(x, ptr, size, UA_KEEP, retval, errret) + put_unsafe_size(x, ptr, size, 1, retval, errret) #define get_unsafe_size(x, ptr, size, grd, retval, errret) \ do { \ retval = 0; \ + BUILD_BUG_ON((grd) != 0 && (grd) != 1); \ stac(); \ switch ( size ) \ { \ @@ -233,7 +232,7 @@ do { \ } while ( false ) #define get_guest_size(x, ptr, size, retval, errret) \ - get_unsafe_size(x, ptr, size, UA_KEEP, retval, errret) + get_unsafe_size(x, ptr, size, 1, retval, errret) /** * __copy_to_guest_pv: - Copy a block of data into guest space, with less @@ -333,16 +332,16 @@ copy_to_unsafe(void __user *to, const void *from, unsigned int n) switch (n) { case 1: - put_unsafe_size(*(const uint8_t *)from, to, 1, UA_DROP, ret, 1); + put_unsafe_size(*(const uint8_t *)from, to, 1, 0, ret, 1); return ret; case 2: - put_unsafe_size(*(const uint16_t *)from, to, 2, UA_DROP, ret, 2); + put_unsafe_size(*(const uint16_t *)from, to, 2, 0, ret, 2); return ret; case 4: - put_unsafe_size(*(const uint32_t *)from, to, 4, UA_DROP, ret, 4); + put_unsafe_size(*(const uint32_t *)from, to, 4, 0, ret, 4); return ret; case 8: - put_unsafe_size(*(const uint64_t *)from, to, 8, UA_DROP, ret, 8); + put_unsafe_size(*(const uint64_t *)from, to, 8, 0, ret, 8); return ret; } } @@ -374,16 +373,16 @@ copy_from_unsafe(void *to, const void __user *from, unsigned int n) switch ( n ) { case 1: - get_unsafe_size(*(uint8_t *)to, from, 1, UA_DROP, ret, 1); + get_unsafe_size(*(uint8_t *)to, from, 1, 0, ret, 1); return ret; case 2: - get_unsafe_size(*(uint16_t *)to, from, 2, UA_DROP, ret, 2); + get_unsafe_size(*(uint16_t *)to, from, 2, 0, ret, 2); return ret; case 4: - get_unsafe_size(*(uint32_t *)to, from, 4, UA_DROP, ret, 4); + get_unsafe_size(*(uint32_t *)to, from, 4, 0, ret, 4); return ret; case 8: - get_unsafe_size(*(uint64_t *)to, from, 8, UA_DROP, ret, 8); + get_unsafe_size(*(uint64_t *)to, from, 8, 0, ret, 8); return ret; } } diff --git a/xen/arch/x86/usercopy.c b/xen/arch/x86/usercopy.c index 7ab2009efe4c..d66beecc5507 100644 --- a/xen/arch/x86/usercopy.c +++ b/xen/arch/x86/usercopy.c @@ -11,23 +11,23 @@ #include #ifndef GUARD -# define GUARD UA_KEEP +# define GUARD 1 #endif unsigned int copy_to_guest_ll(void __user *to, const void *from, unsigned int n) { - GUARD(unsigned dummy); + unsigned __maybe_unused dummy; stac(); asm volatile ( - GUARD( + ".if " STR(GUARD) "\n" " guest_access_mask_ptr %[to], %q[scratch1], %q[scratch2]\n" - ) + ".endif\n" "1: rep movsb\n" "2:\n" _ASM_EXTABLE(1b, 2b) - : [cnt] "+c" (n), [to] "+D" (to), [from] "+S" (from) - GUARD(, [scratch1] "=&r" (dummy), [scratch2] "=&r" (dummy)) + : [cnt] "+c" (n), [to] "+D" (to), [from] "+S" (from), + [scratch1] "=&r" (dummy), [scratch2] "=&r" (dummy) :: "memory" ); clac(); @@ -40,9 +40,9 @@ unsigned int copy_from_guest_ll(void *to, const void __user *from, unsigned int stac(); asm volatile ( - GUARD( + ".if " STR(GUARD) "\n" " guest_access_mask_ptr %[from], %q[scratch1], %q[scratch2]\n" - ) + ".endif\n" "1: rep movsb\n" "2:\n" ".section .fixup,\"ax\"\n" @@ -56,15 +56,15 @@ unsigned int copy_from_guest_ll(void *to, const void __user *from, unsigned int ".previous\n" _ASM_EXTABLE(1b, 6b) : [cnt] "+c" (n), [to] "+D" (to), [from] "+S" (from), - [aux] "=&r" (dummy) - GUARD(, [scratch1] "=&r" (dummy), [scratch2] "=&r" (dummy)) + [aux] "=&r" (dummy), + [scratch1] "=&r" (dummy), [scratch2] "=&r" (dummy) :: "memory" ); clac(); return n; } -#if GUARD(1) + 0 +#if GUARD /** * copy_to_guest_pv: - Copy a block of data into PV guest space. @@ -140,14 +140,14 @@ unsigned int copy_from_guest_pv(void *to, const void __user *from, } # undef GUARD -# define GUARD UA_DROP +# define GUARD 0 # define copy_to_guest_ll copy_to_unsafe_ll # define copy_from_guest_ll copy_from_unsafe_ll # undef __user # define __user # include __FILE__ -#endif /* GUARD(1) */ +#endif /* GUARD */ /* * Local variables: From patchwork Tue Nov 19 10:34:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 13879631 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 92B71D6206A for ; Tue, 19 Nov 2024 10:35:14 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.839922.1255737 (Exim 4.92) (envelope-from ) id 1tDLZT-0001Yk-M5; Tue, 19 Nov 2024 10:34:59 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 839922.1255737; Tue, 19 Nov 2024 10:34:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tDLZT-0001Xw-Ii; Tue, 19 Nov 2024 10:34:59 +0000 Received: by outflank-mailman (input) for mailman id 839922; Tue, 19 Nov 2024 10:34:58 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tDLZS-0000aC-4b for xen-devel@lists.xenproject.org; Tue, 19 Nov 2024 10:34:58 +0000 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [2a00:1450:4864:20::52a]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id ea9a4c6e-a661-11ef-99a3-01e77a169b0f; Tue, 19 Nov 2024 11:34:55 +0100 (CET) Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-5cefa22e9d5so949603a12.3 for ; Tue, 19 Nov 2024 02:34:55 -0800 (PST) Received: from localhost ([213.195.123.63]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5cfb2ae6e98sm3206096a12.46.2024.11.19.02.34.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 02:34:53 -0800 (PST) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ea9a4c6e-a661-11ef-99a3-01e77a169b0f X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmEiLCJoZWxvIjoibWFpbC1lZDEteDUyYS5nb29nbGUuY29tIn0= X-Custom-Transaction: eyJpZCI6ImVhOWE0YzZlLWE2NjEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMyMDEyNDk1LjE0MDkyLCJzZW5kZXIiOiJyb2dlci5wYXVAY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1732012494; x=1732617294; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EGEGshzGY38tWisNXdt9B5IgeekGw56Bfs63DZJjmS4=; b=OTrP9Irh8jo1eshHuV697DsfRIy+mlCcLfpnrzY2T4ZtUodA1O7VdUIsOaTTxeLXHB BTkHjPviezgGWIBCVAmbOpVZ9EHVhQ2q8DbMx7ZF8pyFza3DxsQwOhIVIZci9hXaed4B c+CAifL7KEVNnIndbjKn2JtR2C+YI9FQCYJEw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732012494; x=1732617294; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EGEGshzGY38tWisNXdt9B5IgeekGw56Bfs63DZJjmS4=; b=Mmy4gGG2kWa2Ub6XWDprPQ6TDV8s9y5elR5S6Za4Mc37HKxuJWeE7aw4nXgLo/CQLM EzKmVSI7rcsM7jsVeupcrqlvW2M66FOVNKtDIDehzand2rCgaiSkOXT27lBgbV3lH4P0 DhYF2heemNA4uO2P3lCvBb8fuzag3aNm9v13oNeQHRKAsjjCHLDha26ZM8pLrNm004MH 6t+deTfg2yGisrePam0qVvJ6KQGACwZVq+43C/KVYzo4AYlVEqaa5qpiYjThzCdpM4Hx 3a0wgubl5xFTYaIEhX+0LeffihJ0PL1ISr7rQfFpk7so10ShiD3jz5WyRILBgvuNGaXJ zPFw== X-Gm-Message-State: AOJu0YzjPPMmKDxyivEO54FUFdmm/PBDVKskxhbVbS0eMAM8pz7iRdyR cdiQvtGU6Yd0l+9If0VzKkhtMHSW9YBO4E5zF6NWTTRRyEpdlv5E1pGisiA63DpcUW0QEFdzrlL j X-Google-Smtp-Source: AGHT+IF+mTzXLtDza3F7Ib3z/vI+mndFETLYxPvl9yQ8aIPt6jOoWBcfzYa+oAFlla6vtR6vaeO4gQ== X-Received: by 2002:a05:6402:278d:b0:5cf:c321:d16e with SMTP id 4fb4d7f45d1cf-5cfc321d245mr5998376a12.0.1732012494245; Tue, 19 Nov 2024 02:34:54 -0800 (PST) From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Simone Ballarin , Doug Goldstein , Stefano Stabellini Subject: [PATCH 4/4] automation/eclair: make Misra rule 20.7 blocking for x86 also Date: Tue, 19 Nov 2024 11:34:44 +0100 Message-ID: <20241119103444.23296-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20241119103444.23296-1-roger.pau@citrix.com> References: <20241119103444.23296-1-roger.pau@citrix.com> MIME-Version: 1.0 There are no violations left, make the rule globally blocking for both x86 and ARM. Signed-off-by: Roger Pau Monné Reviewed-by: Andrew Cooper --- automation/eclair_analysis/ECLAIR/tagging.ecl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/automation/eclair_analysis/ECLAIR/tagging.ecl b/automation/eclair_analysis/ECLAIR/tagging.ecl index 9318e5b10ca8..dcddba2e061b 100644 --- a/automation/eclair_analysis/ECLAIR/tagging.ecl +++ b/automation/eclair_analysis/ECLAIR/tagging.ecl @@ -79,6 +79,7 @@ MC3R1.R20.2|| MC3R1.R20.3|| MC3R1.R20.4|| MC3R1.R20.6|| +MC3R1.R20.7|| MC3R1.R20.9|| MC3R1.R20.11|| MC3R1.R20.12|| @@ -115,7 +116,7 @@ if(string_equal(target,"x86_64"), ) if(string_equal(target,"arm64"), - service_selector({"additional_clean_guidelines","MC3R1.R2.1||MC3R1.R5.3||MC3.R11.2||MC3R1.R16.6||MC3R1.R20.7"}) + service_selector({"additional_clean_guidelines","MC3R1.R2.1||MC3R1.R5.3||MC3.R11.2||MC3R1.R16.6"}) ) -reports+={clean:added,"service(clean_guidelines_common||additional_clean_guidelines)"}