From nobody Sun Feb 8 23:10:52 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689684287; cv=none; d=zohomail.com; s=zohoarc; b=BoCO9lz2rBv9DkZX2+eF5I5ZSI//ffguLVevIhk+GrrsD+A049YbX3nQK1HGX9eLrJWXHExn9uxsVpgsp9wE6ZNR8nHLtxQgTQm3hXYztqk9Rb9CYHaFxuJho/xfkQI1HZD/CwuiiPHJtLl01WYIo2wJhD01InFvj2bf8vRNt6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689684287; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Vw1gRyZwe4JBxeOfmYftsFVgq9VUuHpZanmEFCLtcvk=; b=fzbNKOB9ZtxHrOtdEOp4yCz9kujdaF0EtaLzLnfopiOhBFEIuYED21+f0IlrLKqVI23wdrYOeTPbPpks5R/1dPdilOc92z11AU2Nz0iNT65w1lfmoweXgSqySw0dyHbhXuVG//fKZhPB9VQDsDV3e5683oFvBEEzdMhvPOGumX0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689684287220552.1062084976113; Tue, 18 Jul 2023 05:44:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.565176.883087 (Exim 4.92) (envelope-from ) id 1qLk3l-0002PK-T7; Tue, 18 Jul 2023 12:44:09 +0000 Received: by outflank-mailman (output) from mailman id 565176.883087; Tue, 18 Jul 2023 12:44:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qLk3l-0002Mw-OW; Tue, 18 Jul 2023 12:44:09 +0000 Received: by outflank-mailman (input) for mailman id 565176; Tue, 18 Jul 2023 12:44:08 +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 1qLk3k-0002IP-5j for xen-devel@lists.xenproject.org; Tue, 18 Jul 2023 12:44:08 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id c6d744cc-2568-11ee-8611-37d641c3527e; Tue, 18 Jul 2023 14:44:05 +0200 (CEST) Received: from mail-mw2nam04lp2172.outbound.protection.outlook.com (HELO NAM04-MW2-obe.outbound.protection.outlook.com) ([104.47.73.172]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 18 Jul 2023 08:43:57 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by CH2PR03MB5317.namprd03.prod.outlook.com (2603:10b6:610:9c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.33; Tue, 18 Jul 2023 12:43:54 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea%5]) with mapi id 15.20.6588.031; Tue, 18 Jul 2023 12:43:54 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: c6d744cc-2568-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689684245; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=vXSrjScc4stYZjmMBMkswDIFJ2P93wZXbU9NQNneoJ8=; b=F52PhCtIoC3KAHeCPnwmcqQD8JGcRBT8bMvw2UcvJQJnE7TqMI6S/pxn FZLyEDGqms+NRqeahOpqo1v/qyJ3IfDqkcp2xiwdpVj1ssgP+j/ERmJ5T r00fjubUJKU+B7peJP537W47SpUYiXW16nNOe503im9uI0Tq+ACYZiJMn A=; X-IronPort-RemoteIP: 104.47.73.172 X-IronPort-MID: 115292209 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:0G2DL6DpdZGfShVW/xXiw5YqxClBgxIJ4kV8jS/XYbTApDgrgjUEn GYcW2DUbP/fMWGgKNp3Ydyxp08FuZLXmNdgQQY4rX1jcSlH+JHPbTi7wuUcHAvJd5GeExg3h yk6QoOdRCzhZiaE/n9BCpC48T8nk/nOHuGmYAL9EngZbRd+Tys8gg5Ulec8g4p56fC0GArIs t7pyyHlEAbNNwVcbCRMsspvlDs15K6p4GxB7gRkDRx2lAS2e0c9Xcp3yZ6ZdxMUcqEMdsamS uDKyq2O/2+x13/B3fv8z94X2mVTKlLjFVDmZkh+AsBOsTAbzsAG6Y4pNeJ0VKtio27hc+ada jl6ncfYpQ8BZsUgkQmGOvVSO3kW0aZuoNcrLZUj2CA6IoKvn3bEmp1T4E8K0YIw9NxxGG1Lr q0iNxstRDyjn8OGmrekRbw57igjBJGD0II3nFhFlW2cKMl8BJfJTuPN+MNS2yo2ioZWB/HCa sEFaD1pKhPdfxlIPVRRA5U79AuqriCnL3sE9xTK/uxuvDK7IA9ZidABNPLPfdOHX4NNl1uwr WPa5WXpRBodMbRzzBLcqy/217WVxXKTtIQ6EeSIqtxHmXiv3DYpNkAVaEaY+9qXhRvrMz5YA wlOksY0loAi+UruQtTjUhmQpH+fogVaS9dWC/c96gyG1uzT+QnxLmoOQyNFadcmnNQrXjFs3 ViM9/v2ARR/vbvTTmiSnp+XoC2zP24JLGYETS4CUQYBpdLkpekOYgnnS99iFOuwkYfzEDSon zSS9nFh3fMUkNIB0Li98RbfmTWwq5PVTwkzoALKQmai6QA/b4mgD2C11WXmAT97BN7xZjG8U LIswKByMMhm4UmxqRGw IronPort-HdrOrdr: A9a23:6XV+RqBjTO7IerXlHemG55DYdb4zR+YMi2TDj3oBLSC8cqSj+/ xG785rsiMc6QxhIE3I/OrqBEDuexPhHPJOi7X5eI3SOTUO21HYV72Kj7GSoAEIcheWntK1l5 0QEZSWY+eeMbEOt6fHCX6DferIruPrzEniv5a5854kd3ASV51d X-Talos-CUID: =?us-ascii?q?9a23=3A9NchwWiOtXSLtn2/psmRfYw/9TJufEfb1XvVeB6?= =?us-ascii?q?CFk1JYpG1UX6goqZ7nJ87?= X-Talos-MUID: 9a23:biDFUQuHpxlgBtxPUs2ngWhSaOVF+oGSEho3r8gFhtSnbw9eNGLI X-IronPort-AV: E=Sophos;i="6.01,214,1684814400"; d="scan'208";a="115292209" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gDXOX7TtFSkifTo0kBLSqHcNlNKY8CcolHXSvFpDQLIMDooRajsE2nxdicim01grsyYOC0NvMZLl++M9gpDZIQ8JyAN/FXZ0ct6BGF2LCHoCJtYjNeED1bjwjVnPnGOp/Trc+WapeQzaj/bG8pXWa3+99AS/UD2yAiIZxcu2U+E+WcSN0ex0n89bL0WGigP8pW2vSVNikNByC+2uUBrfbhPvZnqblbgbCtwIWZcTzkKSL7tisXwJVrKo/wSt36Kq1JrpwOHL3NC7Bfaqmy6V+u7Xz61K5iPOawchxm9j28bqq5962bPbqn4DUjlAFfH58vEnuJfIbH377WGfOHYzfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Vw1gRyZwe4JBxeOfmYftsFVgq9VUuHpZanmEFCLtcvk=; b=dkoR00na7YFZNzaVQxZT7G72BXhNNUjI+jwjmBDv7q1Yaky+GMW3W8iv2g4PKhx2cBaTzdDca7aHemqJg3ILTveC7YyNbLegFs/La1fxz3WDzeG9jbKvQAKgymq9SB9596lZ3ca+rMd2x4hkb/WhDurRI2/3AL4VNnPIGBdO3njXPRDXdLCEiukESLi3hIi8K1OKPzXLg8+WGwl2himXxcpUWabD9+/lngH5DqdgwrbrDWBDEY1BLkZgAWrBJ+PiC0JkwFXkT7/PeKXatfipd9NstIgYnsM6xYNz9n1KZJK8Bu7005UXzFLM6L8KB7NfejEjH8M+eBRDxmxQGstQsw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Vw1gRyZwe4JBxeOfmYftsFVgq9VUuHpZanmEFCLtcvk=; b=u98aMxQWVUxx73FDkgg1jK9mLnW2JA5G70us1tK7mBpTRH+ngmNNfEkL4Xh4RJ39pbCSYWXoqcPKOQD9C59q+NC0h0wX5ulrVgq1gx8sYuVxrjRFJdVcgxXbyBWv7QWlf8OZ9UQOa6ch38fR7MuIrwAsQakE67WhWe8ygX31ZEA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper , Wei Liu , Kevin Tian Subject: [PATCH v2 1/5] x86/ioapic: add a raw field to RTE struct Date: Tue, 18 Jul 2023 14:43:30 +0200 Message-ID: <20230718124334.36548-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718124334.36548-1-roger.pau@citrix.com> References: <20230718124334.36548-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0088.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2bc::7) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|CH2PR03MB5317:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d16aa5c-ce59-4f06-14e5-08db878ca587 X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr,ExtFwd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: daRqWS4XeaatqH4m54Z1HGB9fvjpoWTws3l1TAe+tO6umm/tZXhAKXk7mFtZqnVGRunMEyYxkhUsPdYXoKbnmhEoQ3OV+qTGBJpo+gZBGnuWQXp0z6K3nPEqohWcSNyHI0mR0UR13As8rHIMJlv8rnKETjmbncUgxymuYTyq1RzoCKkeAamav7N+eTZzoicB7mjP63u0mHBJjjZ7J/bXoKa4SWcS2iEOkbRw0XekyRwNtBVKOJC5IsYDLYsqZ2k99JhxB0C9hpv5fnswvmxGQT5q8sLYB3bzKSvCkLQcpu6p0eHKAUA9LY/VoPAbEUhiKkI9lu6GMUm80yALOqOVncQz/LZkx8p4dyHL2/hiunKaqt4buRPY9FFqOCsyulz8Shj9XbGyc8LAntlZNXirKT1Z6/7g6Fnk20s0XmfRGPPblvzSncHmxOdTl2DjwHprje1N5gdh2owRorvK7wrnxlp5twgikvWdVjc+V1QmifDhPDsUrIP2sIPA6exxiEHInbFnP9asDOMTFS5VYR4Ugr75jzPd52JfbATev7u9y16uSUNDSZXtRq/s12+ZVF8t X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(366004)(136003)(396003)(39860400002)(346002)(451199021)(86362001)(2906002)(36756003)(186003)(6512007)(38100700002)(83380400001)(6506007)(1076003)(26005)(54906003)(82960400001)(6486002)(6666004)(4326008)(6916009)(66556008)(66476007)(2616005)(66946007)(316002)(8676002)(478600001)(8936002)(5660300002)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z1NpSzY4TzdPM3RiMUIrWm0wTDJvbUMwN3ZIeXRTZTRDK0ZDT1VrZkZOTk45?= =?utf-8?B?RWZZb3pCTlA2QUpudGY1WElPUTd2YlowZVRObU9yS2ovYUNhL1FqTEx2UXU1?= =?utf-8?B?d1h5anZkc3IxNzlDcjQwOHdoOTZ3ZllHclZEN2FEVG9tbmtpVkZaTHdlcmdZ?= =?utf-8?B?aElKYU0xS1ByWkhJMlgvaU5GOThMT1N6cm9YdFY1ZXVXcE51N0ZYMnBUeXhr?= =?utf-8?B?aUVTUE5Kdmd5VnhvZFZLNUNxNHBxQUErUEhzazhuME41c0VjaDJKSWRCSDJi?= =?utf-8?B?cFpud0E4eTllWDFEaGt5Rk80bkdLMlFJV3gweGtQWTQ1cmdyL2ZkeWRlbVU5?= =?utf-8?B?YVFhSWpxN3FMdjlmUi85OTZHYTA1b2JDazQ0NWJwbC8wMWFvS3g5TTNJWWNS?= =?utf-8?B?bnQ1UGViZVBmZHlkOGNTUTJ5YWlzd0VkMlRoSUd2eE1HdTdGaklpa3ZLTEdJ?= =?utf-8?B?bUhib2Fhc0xtaWd6T05Ga0dmQU9lRWp4cnRobUMrT0FPazFla1dHaVNpWXZ2?= =?utf-8?B?aTNIdXB3ZXJJU0RGM1R2WHQ3ck9naG9iUWxDYUJmdCtIc3VWTDcwMGcxcjFr?= =?utf-8?B?cHRhK01XTWdIUXpsaUFsVDV1c292TmF4M1AxUXJoU1lKb0dYZzE0c3Z1bG1D?= =?utf-8?B?S0xRQWp0aWVpQXlkM21McXVUSHJUeTFqdCtyV2ZtZWtBVjNYbjNXWDRSOU1H?= =?utf-8?B?U0QzNE9Yd3o1MVN5MUZvOGIrVDhtS3RYTFlOckhiVHZISStIWWN0YVpyQVFI?= =?utf-8?B?Zm9PbG9DcWhweVNZblRKd0JjbzBmMmlWQUo4cUxUcU9MS3pyYmlBcjBvTTF2?= =?utf-8?B?Zm96bHVVL3lFWmdKc2NGekx4NUIxT0pXUkk4ZkVlUHRyaEQ2KzhVTG5VVDR4?= =?utf-8?B?SEVkRUwwVkRiTzlPaS9ObWxwYkpyVHdqVkN0cDBEK3JTRU5HdFZmWG0wODhi?= =?utf-8?B?K0xtUHBYaHVNL0FKVTFEd1RzQkh4UmhRU05UK3JrYkNtVm1lUUZMM1RES1Zp?= =?utf-8?B?ZVg2RGdHTHZMd1BsUkY1T0NQeXowMkF6R05Zd3hvQWIyQTdLTXdzNFA3VlFi?= =?utf-8?B?UDIySFdmbVUwYzNnTnBOdk1nYXRpZURDbVVBZkd5WjNEdTAwb1FVRjM4NmZ5?= =?utf-8?B?aXJ6bUxldjR3djdxaDNCZFBZVWg1NkRKdjdFTlhoZW92UDZtcnZTYkhBc1hu?= =?utf-8?B?MGxCakRUd2VYTlNjUXNZSFFPcm96TmQwTG42a0xXM0o4Z1RYMnBBY0xGeFRq?= =?utf-8?B?SXAxbEtoQ1d2ZzF1NkRSV3lBM0VDa1pLSE5lbm90RWJIbUcxdnpKWCtHWmJv?= =?utf-8?B?K2EzRkNOWVYrLzNQTXkxQUE5NWZSL0FVL1gvbjFBRGo0a0d2b1l1WmgyeElU?= =?utf-8?B?YUJvbFdFV1V0aUlZRlJwTFd5WlY3ajB6NjlNRlZFcWFpUjZVQ09OL09rYUFX?= =?utf-8?B?OGhUazhmUnZ3UGRFUEpteTk0bWRBbFNnK0Y0c05JeFQ2QU5pNjVPc3R3S3Y4?= =?utf-8?B?OEY1V1ZjeldjVUQ1Mk94TmdTM3F2Wm9OZCtZZG1LSkh6czR5UTllR0JMNW5L?= =?utf-8?B?Mi9BRmNrVlNVUlZYL2g3QVRRdlVLc1FMU0t0TzBjenh3NC9MSmhCOGthaEVE?= =?utf-8?B?RUsrVWcxamE2YmcrcTE2MVkxdWwwR25MUmU4cmFwc1JLdFF4Tm9NZUJrUVpw?= =?utf-8?B?OHZjMW83eEt4WnpTb01NV0pvcXBacVZaUXRlNDVvTzA0NmwrMUlRZ2c2ZDlx?= =?utf-8?B?cGtYRDlWUE1zRFpKSUZSYW5uMkhSaDhMV29yOEVQTDk1M0ZzbVlkdDJrVm4r?= =?utf-8?B?ekZjTWVaUnRwNmNGTnphaTVOMy94ancxUnpueFZKd0llZ2JsTGtSZGpiWS9y?= =?utf-8?B?M0tLNEI0aDlhSmZRVXQ4bVZaMG8rQ1RjTEx6eU9JcFk4MCtqYXk3NjJrM3Q1?= =?utf-8?B?UnhRNEtreHQyZmZzUXdVckI2cWNBaklLOWFuMFRSL1owcW5EREZvYXZ2ZjJ0?= =?utf-8?B?TzhjVkszVndneHV5eC9ORWpIZTd1VmxtYWlvVnZ0Z3pVbXBGL3RtL1NaeWUz?= =?utf-8?B?bC94TkxURGdUc0NmcVpxNmFxdnlWUkNoTUVGZFZDUlFxdzExK1BaTVRwd2hJ?= =?utf-8?B?UFVHTWNzbjdPOG5yc3dxUnZhWTk2YVNDSlhXQWhPQXNGc2JnOGlVNmwzODIr?= =?utf-8?B?ZVE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: WryD50bkUU1F0R4Rp+y5+i9xwcuXsOK2fbH2WupezntURhWIqgY7vr2CjsKsEZSIgEajZWzeO1Kya75w0gfjrO1+01r1mzl9kw1D4WbiC+EuC0YXkR+varbVS6yaUeEbMHhgnoqgcADHrrGgwY6srnTsTaUfcrAAUSyVLaIsiLwZIIOra1oyxgD1XbWhrbr+GIVbCOm+djMkfsbBDqWewJuhdl87wt2Max4qWcn1ECAJGWtosLyTBBHx139/wlXBKrc+9IAKSTR0oMmbWg2bJ+gNyo1H7efsuYD4EU+dMgVt3EM4I1/rG8e/EqhnjygNoYAK04yGWnqN54w4c8SwENBUzD21w0fjeXujcmwTiVgzV3JvBsfLG2mu1NNzmNDz4tUxIITqMvX5QATRmQHCCQiSfItpP15v7+GHTGq/Cmk05PEAVTgRDvoB+UNKM8u6nRMKHPzT+57pLrHGD5vpbVmHulkjdx5pJwnYShri3iKK+wdsz27DVv2KluLRIyKNvNZKWH3yicvarhECgDz2jdf+cH5eAfaKaxLjugw2oh0lK0SFP2hfDa5bfD3UEK3OhODNIZYg3Pg7GXu2q6Sck760eCE3o/UkqmnjDQBKy3tpQ7DkXukOU/zfIl1ydYZiuWy5RpWIjayV2QLJUOR21JoPd/sSxBBpYqr+FR/RMvbU6Poz9Rn6SXGHBWVrL6yChLzSdKqZY3vsbsxwuBnILgkfdTUzhgOhGQHzwsE4hvYH1MOs7/7Cy6QKm+978koYBFL/V3+5gXL+yrq60itCUn/BJmRYC8WNMzHnLBa9N6DgaKz2upgUqALpXfGltlL0V6BV8GgxmchefoppPRK19wvTTmOXu+bVjytd9oxv4VI= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d16aa5c-ce59-4f06-14e5-08db878ca587 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2023 12:43:54.6981 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BfQu1GSpfCI5N1cDc4NULRHlzOqP7x7+t7k83QFMQFGmJkEB+e/DE4LqlGRwcntC69i3BTaJd//d6Lyn2261yw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5317 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689684288836100009 Further changes will require access to the full RTE as a single value in order to pass it to IOMMU interrupt remapping handlers. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Jan Beulich --- Changes since v1: - Fix initializers. --- Tested on gitlab CI, builds on all compilers used there. --- xen/arch/x86/include/asm/io_apic.h | 57 +++++++++++++----------- xen/arch/x86/io_apic.c | 2 +- xen/drivers/passthrough/amd/iommu_intr.c | 4 +- xen/drivers/passthrough/vtd/intremap.c | 4 +- 4 files changed, 35 insertions(+), 32 deletions(-) diff --git a/xen/arch/x86/include/asm/io_apic.h b/xen/arch/x86/include/asm/= io_apic.h index bd8cb95f46b1..4c4777b68a51 100644 --- a/xen/arch/x86/include/asm/io_apic.h +++ b/xen/arch/x86/include/asm/io_apic.h @@ -90,35 +90,38 @@ enum ioapic_irq_destination_types { }; =20 struct IO_APIC_route_entry { - unsigned int vector:8; - unsigned int delivery_mode:3; /* - * 000: FIXED - * 001: lowest prio - * 111: ExtINT - */ - unsigned int dest_mode:1; /* 0: physical, 1: logical */ - unsigned int delivery_status:1; - unsigned int polarity:1; /* 0: low, 1: high */ - unsigned int irr:1; - unsigned int trigger:1; /* 0: edge, 1: level */ - unsigned int mask:1; /* 0: enabled, 1: disabled */ - unsigned int __reserved_2:15; - union { struct { - unsigned int __reserved_1:24; - unsigned int physical_dest:4; - unsigned int __reserved_2:4; - } physical; - - struct { - unsigned int __reserved_1:24; - unsigned int logical_dest:8; - } logical; - - /* used when Interrupt Remapping with EIM is enabled */ - unsigned int dest32; - } dest; + unsigned int vector:8; + unsigned int delivery_mode:3; /* + * 000: FIXED + * 001: lowest prio + * 111: ExtINT + */ + unsigned int dest_mode:1; /* 0: physical, 1: logical */ + unsigned int delivery_status:1; + unsigned int polarity:1; /* 0: low, 1: high */ + unsigned int irr:1; + unsigned int trigger:1; /* 0: edge, 1: level */ + unsigned int mask:1; /* 0: enabled, 1: disabled */ + unsigned int __reserved_2:15; + + union { + struct { + unsigned int __reserved_1:24; + unsigned int physical_dest:4; + unsigned int __reserved_2:4; + } physical; + + struct { + unsigned int __reserved_1:24; + unsigned int logical_dest:8; + } logical; + unsigned int dest32; + } dest; + }; + uint64_t raw; + }; }; =20 /* diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 25a08b1ea6c6..aada2ef96c62 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -2360,7 +2360,7 @@ int ioapic_guest_read(unsigned long physbase, unsigne= d int reg, u32 *pval) int ioapic_guest_write(unsigned long physbase, unsigned int reg, u32 val) { int apic, pin, irq, ret, pirq; - struct IO_APIC_route_entry rte =3D { 0 }; + struct IO_APIC_route_entry rte =3D { }; unsigned long flags; struct irq_desc *desc; =20 diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthr= ough/amd/iommu_intr.c index f4de09f43180..9e6be3be3515 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -352,8 +352,8 @@ static int update_intremap_entry_from_ioapic( void cf_check amd_iommu_ioapic_update_ire( unsigned int apic, unsigned int reg, unsigned int value) { - struct IO_APIC_route_entry old_rte =3D { 0 }; - struct IO_APIC_route_entry new_rte =3D { 0 }; + struct IO_APIC_route_entry old_rte =3D { }; + struct IO_APIC_route_entry new_rte =3D { }; unsigned int rte_lo =3D (reg & 1) ? reg - 1 : reg; unsigned int pin =3D (reg - 0x10) / 2; int seg, bdf, rc; diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrou= gh/vtd/intremap.c index b39bc832821a..786388b4d9c7 100644 --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -419,7 +419,7 @@ unsigned int cf_check io_apic_read_remap_rte( { unsigned int ioapic_pin =3D (reg - 0x10) / 2; int index; - struct IO_xAPIC_route_entry old_rte =3D { 0 }; + struct IO_xAPIC_route_entry old_rte =3D { }; int rte_upper =3D (reg & 1) ? 1 : 0; struct vtd_iommu *iommu =3D ioapic_to_iommu(IO_APIC_ID(apic)); =20 @@ -442,7 +442,7 @@ void cf_check io_apic_write_remap_rte( unsigned int apic, unsigned int reg, unsigned int value) { unsigned int ioapic_pin =3D (reg - 0x10) / 2; - struct IO_xAPIC_route_entry old_rte =3D { 0 }; + struct IO_xAPIC_route_entry old_rte =3D { }; struct IO_APIC_route_remap_entry *remap_rte; unsigned int rte_upper =3D (reg & 1) ? 1 : 0; struct vtd_iommu *iommu =3D ioapic_to_iommu(IO_APIC_ID(apic)); --=20 2.41.0 From nobody Sun Feb 8 23:10:52 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689684280; cv=none; d=zohomail.com; s=zohoarc; b=GQmdj4S97rEtq5hck0mTQXfFJkJhYE5RIs2PHHyEg5ozZvoKGlCuCsO4a3dQiuvVqRA/ENEPNv3TXtoTF2TVoYk2PYYI8OVHrhyOWg54ZMuz3kjBnNn6Hz3uFUYfa3mUZJhIgHxDZKV7iWzBaHfg17VYYO5IGvYB2aIS3X5NENc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689684280; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/lDf3HGgdgOwPdxea2uOADARo6YV2zcr4Bg6cHDoLRU=; b=NjMfYZLi6+CNgNv2B4z9pSNf7C2AozBteVXjJbOJN4CWdWoJFCnYLj2xKAz6gHXzIYOImVtgxVZgzkW1qBQv52+ITh8DeYE2FNggrYiENXt9NvQjKTz/hVJjgqiJAwr1rOqvvqyNSOxMEEXW4cHDViARstBnU1+HJ7r8vcTJmqM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689684280454500.0218988112423; Tue, 18 Jul 2023 05:44:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.565175.883081 (Exim 4.92) (envelope-from ) id 1qLk3l-0002Ip-Gp; Tue, 18 Jul 2023 12:44:09 +0000 Received: by outflank-mailman (output) from mailman id 565175.883081; Tue, 18 Jul 2023 12:44:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qLk3l-0002Ii-DA; Tue, 18 Jul 2023 12:44:09 +0000 Received: by outflank-mailman (input) for mailman id 565175; Tue, 18 Jul 2023 12:44:07 +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 1qLk3j-0002IO-Gl for xen-devel@lists.xenproject.org; Tue, 18 Jul 2023 12:44:07 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id c6cd3c83-2568-11ee-b23a-6b7b168915f2; Tue, 18 Jul 2023 14:44:05 +0200 (CEST) Received: from mail-mw2nam04lp2173.outbound.protection.outlook.com (HELO NAM04-MW2-obe.outbound.protection.outlook.com) ([104.47.73.173]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 18 Jul 2023 08:44:02 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by CH2PR03MB5317.namprd03.prod.outlook.com (2603:10b6:610:9c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.33; Tue, 18 Jul 2023 12:44:00 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea%5]) with mapi id 15.20.6588.031; Tue, 18 Jul 2023 12:44:00 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: c6cd3c83-2568-11ee-b23a-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689684245; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=fcX1i0yf1nk6ewWn6P+aoOiC71E0Ma4dunC5WfGx96k=; b=MvFe/c78IKY6NWpvwwK6XYsaoR5Vx3NficYxOpDMXWX45AGINu1ZgIfh rHH4gKvYpF6Z+FVLEJsNfRSqeUWzaYYxM6y9W15sHmcJqDX4Qp44DhT+x nZ7qe5TchMhICDOFU9DTFoxN42+OXG+THR++n81R+fDvKp+ANVH/cY9kJ 4=; X-IronPort-RemoteIP: 104.47.73.173 X-IronPort-MID: 116465646 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:fqpdqqsqGRIxIrdJrY+KbNXcEOfnVHBfMUV32f8akzHdYApBsoF/q tZmKTzSaKyDZzGneY9xbI3ioEMBvJ+Bxt81Sgo++y1gFXgb+JbJXdiXEBz9bniYRiHhoOCLz O1FM4Wdc5pkJpP4jk3wWlQ0hSAkjclkfpKlVKiffHg3HVQ+IMsYoUoLs/YjhYJ1isSODQqIu Nfjy+XSI1bg0DNvWo4uw/vrRChH4rKq4Vv0gnRkPaoQ5ACHxyFPZH4iDfrZw0XQE9E88tGSH 44v/JnhlkvF8hEkDM+Sk7qTWiXmlZaLYGBiIlIPM0STqkAqSh4ai87XB9JFAatjsB2bnsgZ9 Tl4ncfYpTHFnEH7sL91vxFwS0mSNEDdkVPNCSDXXce7lyUqf5ZwqhnH4Y5f0YAwo45K7W9yG fMwJgokaymF3dKM7JWjaet12e18IerMI9ZK0p1g5Wmx4fcOZ7nmG/mPwOACmTA6i4ZJAOrUY NcfZXx3dhPcbhZTO1ARTpUjgOOvgXq5eDpdwL6XjfNvvy6Pk0oui/60b4G9lt+iHK25mm6Co W3L5SLhCwwyP92D0zuVtHmrg4cjmAuiAdxOSuDmqqACbFu7wWtIOURIdGWAuuCo2kS7ZPUOM xQp0397xUQ13AnxJjXnZDWorXjBshMCVt54F+wh9BrL2qfS+xyeBGUPUnhGctNOnM08SCEu1 1SJt8j0HjEpu7qQIVqC8p+EoDX0PjIaRVLufgcBRAoBptz8+oc6i0qTSs45SfHuyNroBTv33 jaG6jAkgKkehtIK0KP9+k3bhzWrpd7CSQtdChjrY19JJzhRPOaND7FEI3CChRqcBO51lmW8g UU= IronPort-HdrOrdr: A9a23:N76fK6r4a+JS3Iafiq6EnAwaV5rbeYIsimQD101hICG9Evb0qy nOpoV96faQslwssR4b9uxoVJPvfZqYz+8X3WBzB8bHYOCFgguVxehZhOOP/9SjIVydygc078 xdmsNFebjN5DZB7PoT4GODYqodKNvsytHWuQ8JpU0dMz2DaMtbnnZE4h7wKDwReOHfb6BJbq Z14KB81kOdUEVSVOuXLF8fUdPOotXa/aiWHCLvV3YcmXGzZSrD0s+ALySl X-Talos-CUID: 9a23:Iixw9W5Y6u3z5CICmtss+nQ9H/kjKE3n4FDIAE2hVk82RZ6yVgrF X-Talos-MUID: =?us-ascii?q?9a23=3AXEUUWAxCR5ltMNzNMB+y2KLIEwKaqKOpU3FUz7Q?= =?us-ascii?q?4gNKdJHx6Pgi63Szvf6Zyfw=3D=3D?= X-IronPort-AV: E=Sophos;i="6.01,214,1684814400"; d="scan'208";a="116465646" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=il78Ji7u5ABSPTwNDiuFrsYmbuol6Op13GhmYSQoFlRLaWkKP/BJNqDjbWq4jTDtPLzL+rqOI1PhgFBi8uNf69dAFbF3Bj8DLxSXVd2kX/bCabjxoGK3IaV6JH88bB2RXPgkWHzQHSrLJVswg56wiXpFhtZv8VXJayf9m7N1iA8UxF5b4zo98zOrhwm23hqGd0/Ood5izZHuH/oegZv+/nAE2JqyXcTvOg0wh1piL0ZofzYyhwGuEnvrJmuwqF9KcS/KPVLyBWbi2o8wn9mHDG4sco1FnJ0GnMSZwaVQS8OlyWkqsJQVk/GUWIxoKaGgIQRHO4jWwZqgLlOSWiqkjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/lDf3HGgdgOwPdxea2uOADARo6YV2zcr4Bg6cHDoLRU=; b=RoJRwD+pqXbg73q5SZWIXIhhNd7pQxmQbFxNfQ/1+GUl/78PrypeopXm44krwTOD1OsX6l4C7o3Ed9cYn7PFXxtr+zPVYmzDMYymbEAlHZO113qkKXE7rk/+k+7yUY27oZ7znb43x31NoZ+0Ji9ReOldUz+lh+2nUmpiRNumoo63hKqBVUdZFkXw3ilHZ86tAIUV7VHXVNoTuY3zrfQ31/fvt5hleqIYleQKx4SHatyO3o7cRfCqEcOWgLI/fTASi0Tp1qjznHa6xegV3kFBiqfQmWkX2UxD8MtnOldFUq6AgqVG5SrJJiDRTQaiQqexiB/76Z6AE2JiNgmq5Cushw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/lDf3HGgdgOwPdxea2uOADARo6YV2zcr4Bg6cHDoLRU=; b=FWB8OfmOwMZ47Wlj5b8UsmAFh2e3JojltKFZQUuXQX6rvoIPHxQWLgca7B7TWZnTAU+UpqZSt974VQtDMKYN88xzDAtY8QSsre8JabUMA4JOQubsQZBSaXmcr9osjmKk9aajtC1hynnfDFmIyYtt7//hmbqL1+1RpSg49HtOU0U= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper , Wei Liu Subject: [PATCH v2 2/5] x86/ioapic: RTE modifications must use ioapic_write_entry Date: Tue, 18 Jul 2023 14:43:31 +0200 Message-ID: <20230718124334.36548-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718124334.36548-1-roger.pau@citrix.com> References: <20230718124334.36548-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO6P123CA0037.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:2fe::9) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|CH2PR03MB5317:EE_ X-MS-Office365-Filtering-Correlation-Id: e3760484-2356-4757-eb9c-08db878ca8f1 X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr,ExtFwd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JRv8nrwCb8tHYmK8cwbPgMw/LhhluD1XynxsVaJffOuca6vtQUkc9PLNIieMBo2zVvaSOqfG+pZS3c7a0lQ1Kw4QRyii3A2kwSNOe/9kjEDlQrmJJKMzfiuqib40q5/RHFYiiYHra97Gp1WnhzkuvZWWrUAtWEcHgc9yBDfRSwKU3FJTsw/s1WGcaB2PEmia5Ky8n8ofynM+gplFQqs+P6xs0FukUNRdC4inVNxaGW75YiJb7jKr5YMmqfbb+NlOc2CdEVpgIJefAsClJVg8jPUw3arRIrY5mFf22jU9HmTPYRIjebTsJW5jJGnxMDK71LznL3sb2lZmeNVoeZmn6WFuIGshXRjKb8HqinmZzZ8FdAUqOk5D3LdXDDD4Esl51VIpb5ObWmc4VkXltAahRgr9mJCjYSnYvDR/5LECBbFQXuJ+T0buzMC5cbemGfyUUHbnQx/Tv/srMsX1bCuMaYHSaP6T5DoBPlBq/xNLWxL7s/XQWq2vxxGoz8dwF/JNgwQO5LGwQbEwnntF7X18lpNoZIfh+YNYgsfVsHlxtT4T3mobQQoYwLlh8+7Xrl2j X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(366004)(136003)(396003)(39860400002)(346002)(451199021)(86362001)(2906002)(36756003)(186003)(6512007)(38100700002)(83380400001)(6506007)(1076003)(26005)(54906003)(82960400001)(6486002)(6666004)(4326008)(6916009)(66556008)(66476007)(2616005)(66946007)(316002)(8676002)(478600001)(8936002)(5660300002)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MmxBR1Rwall3Z2Yrd2ZBQlFqdjM3WTlHcEhLb0FEL00xTjFPaE04NklwL1VM?= =?utf-8?B?d0V1MFVMdGIwOVRYWGdNZFJMSzlFcGxOZmxlRzFmTHVmRUtvczJzcmVRL29u?= =?utf-8?B?ZnM3Vmp2SFdqVVdHSXZFdDhCR3ZQVk5TV1BzbmpPa0E0WHNtWW5UbkRvdHhs?= =?utf-8?B?Zkx5R2U5M0NLOG5QTmdDVXNlemxtTHNFd0l1dzZiTVdnMno5OUNjbzU2cXp0?= =?utf-8?B?Zm1HeisxV3F5cjl1R1ZCVGpSU0pELzdneExwdVB1ZjR1MjhESDRVM3U1WFEv?= =?utf-8?B?QUZtQVZIS0lGWVpRYi9lbGUwdkFIbWdMWS9Yb3plRE5OM2tvd3NOSVhnWC9s?= =?utf-8?B?WDV5NmQ1L1o4cnVHaE5IeVhFTGZvMkFNSEprOUhMa0tLYzhGYWxsWXl3Mkxo?= =?utf-8?B?aFpWUUhxaFpJNjBhTWZxTyttSmVLZTJiaE41TFhwcXhJMytrVlloS1pRWDZN?= =?utf-8?B?UndQZVVPbFM5SEllaGliVHR5NkpQYmlNMWtzUWV1SDNWdXdUclFzVURrcjlJ?= =?utf-8?B?OEVoUU1lQUV3VGwvM2IyUXZicjVCM0pRbytSWm02YVhwQ3JENEhoZGlYTWlx?= =?utf-8?B?Kzlmd1VTQmV5dFVaSS9RRlNzWm5PbUVRNWZhMEZ4ODRRSTI1MGVtME1DOERt?= =?utf-8?B?K3JjMHAyQ3c1b2NDQnViMUdqckJvZUNNYS9BRlJvNmpRNjM2cGd6MzBNZlNK?= =?utf-8?B?aGZwRTNqM1VKbGNWR3NZQWVRYTA2c0FoL25SYVlWZkQyeDBCL1lDWTk2dnQw?= =?utf-8?B?N2NaV2QxZExKSzVZbWtqS3I1SHY1NkdEZC9tazRqVDVEd3RtQ2NqRVNnTm9P?= =?utf-8?B?aGRDK0pZTldnakFmdEMxckMrVEh1enM2WGpTdER2MXRFc3FKRk0rS0N1MU5y?= =?utf-8?B?TmVCYzdQNGQza3JPYU13b2xGRWtFZGpGMDg0T1JtQkZFUktVY00yTytSUEdo?= =?utf-8?B?T0NVRVI3ZTYzWThQek9WVGVtUmdkbzVrM3BUNnFZYTRkZDBKREpWV2pvVysr?= =?utf-8?B?NGk3NWcvNUJ2WWxxdS9henlId2oxWWN6a2lkYUhRcG9Gc0ZHdDlyUHQrc3Bw?= =?utf-8?B?NnlYZlk2T0o2YjZuNHdYUDIyZnlQRlhuVVpnMVFaNnNNOGphYXZrOTcwUUFQ?= =?utf-8?B?L1hDYXp1Nkp3dUV2bENscytqNDRpc0djekRuMXh6ak5jalJkSnowNmFDWWJ0?= =?utf-8?B?ZEc0WVJHOG1KZTBCbHk3Ulo2bGpEUDhwdFI0M1I5Y2pvSWVIN1E4N29LR1hn?= =?utf-8?B?amwyUjV0MFVWTzZGWjY1RTFmSFprSitGUGlkcEV0Y3R1OFBRRDhUOVQzZFpF?= =?utf-8?B?TXp1RzZpb0pnREU2OHBWR3YrNG5CbWFzaGUvcG5Dc1dUUDNkdnlQL3Rkc0Vr?= =?utf-8?B?ZVZzNUFQMWovREtMQmpBeEJrbzN2bllLSjVZSnRzeTNVY0lJNjZyN08vd1Zs?= =?utf-8?B?NEpRekxVd1ZyeWFkdEZFNTlIUXY3bjRka3pnZXpIQ1lMRUlCaTNkUmFQYko3?= =?utf-8?B?WURSbTNxTlIvZENSdGtpeGRnMHljSkxoTFBMaEROWGFheVZobVlFR3AzcC8w?= =?utf-8?B?anJMYThvdktMTE5VSklaTGZaS0dPbEVabkJKMjIwQUM3YkdnK05XK29TMXpa?= =?utf-8?B?TjR0YlFpR080aGZHT1pmMFFGYzZqVjFoR1BCaU8zR0ZPdTkzZ1V1RlV5MGF2?= =?utf-8?B?WU9aOUpvNTlhQkduZVJWWVNmbmUxSkxkdG1mNmQ0bGtGQllNbjJNT2NSajQ1?= =?utf-8?B?UDd1YUR1T1NTVFh1d2VKQWJMeWlGTjU1WXRFd1puOHFUays5cU1MV0NiTGVT?= =?utf-8?B?WDVORUExOTU3dVcwSkZKWTNEQmtUdjhUUXBEd0s2NUtZTHpDclZ3WTEzUE5P?= =?utf-8?B?Mi85b1UxYVJXWWJFOVFSVmxwakJaVUVYTEhGTmY1UHNEMWM2T0VzdWNwSmNL?= =?utf-8?B?d1VYWVh5ZUtmL3hWcm5hbzgyWmVSY29CS1Y2UXk5ZFVjTmRWdzg5bEhyd0xj?= =?utf-8?B?L011K0d6SWJ4U0JLTlp5VithQWNRZEk4Wml1RVBwUkhnSkdpbktlcUI5R1JV?= =?utf-8?B?dnExNGVoa1ordWJtazlNODFtdFFlbStnZ1FQSHBqOXdacnNJWjZXbnVVcTJX?= =?utf-8?B?VFBESk9TdmI2b01yN2ZtQ0VuWFZJOUFuVkduQ29MVFpXNHRkd2llUDNJOEc5?= =?utf-8?B?akE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ypfeDCWk7wvBc3oY3QvlBEeTMlfufMX9ZKyGu7ALcnSyHeeDWeXEwVSR8crVirvYBNNGxhT/mdXASshbJhXHSfLA2DUdB0eBdmjScFUT/EeUzjqfynjauUMVvivddawFjo/hn5n8nWC74QkkPLDzdydKIv6eyofbAoIPwqvdiadmoLnMZ8FPPquPdJd3/+VnFAgTqkJ9ZuyD4PM7cucDkSszBsDV3gr41CM2JTGAYqenxv4JG/2EHjHWDkskSRO7MJIm/YYX/QGtN9jMr+dvp7i1HWLVHJjvQatZQIw/gwrzxZvwwuXla521B/dI7DTf8nLdxBNUpAipG4luGke9NhKLKk0biaTUi+F75QLK77muafQgBYowUl0IYUDRohsSLpXbawHHmKvclEalEpMsc0x1YBNntp7AK0VJPQTE/wYRJ32GMKmnfzBP87Wlr6O2GH87KNof1cmBqh7Rcjs/TMNbHD8AMeaZ6Xwl6pukAHGaqGQN8CsbRXDAgn7ReurKwKaP32x0aMxOOzelpaxqgg6NrhzBeY83EJn3ECNhCCzXibNtLOSaZNWd3OKDBMqjOv1ZlfFt7PFDB3S2nGPBBQnO1dLd1UUG/4koj43Y7zWlyOS9S76OGVP1TGbmlZWGYzc9HApKxIrquDjnEXc63eaZObxaSfZ6oOgqb0CUPdh7MIgoMpoixoatqxr3TN9oeUSwEd3ruyr1jjo4m3IVZyiYf7FNTZZzfZRvnmdusYalyddqqhhimbUY3Jh4i129FDfwQhjmxXebHTQOzg7G//jsHoaXmXqp5+UcYZ3cv+sMcXKFTStezu52APuo7jgaGU1skaksPj2tUkhAAlyXaQ== X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3760484-2356-4757-eb9c-08db878ca8f1 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2023 12:44:00.5149 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 00YNS6VH3gkg/mAnZGqYwRn7wgmaSCdULAusWXkSMfZzYplvkK5eykPtzbA+3/7ie8PN71itYAX4dMs8iZ6q2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5317 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689684280922100001 Do not allow to write to RTE registers using io_apic_write and instead require changes to RTE to be performed using ioapic_write_entry. This is in preparation for passing the full contents of the RTE to the IOMMU interrupt remapping handlers, so remapping entries for IO-APIC RTEs can be updated atomically when possible. While immediately this commit might expand the number of MMIO accesses in order to update an IO-APIC RTE, further changes will benefit from getting the full RTE value passed to the IOMMU handlers, as the logic is greatly simplified when the IOMMU handlers can get the complete RTE value in one go. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v1: - Reinstate io_apic_modify(). - Expand commit message. --- xen/arch/x86/include/asm/io_apic.h | 8 ++--- xen/arch/x86/io_apic.c | 37 ++++++++++++------------ xen/drivers/passthrough/amd/iommu_intr.c | 6 ---- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/xen/arch/x86/include/asm/io_apic.h b/xen/arch/x86/include/asm/= io_apic.h index 4c4777b68a51..9165da2281ae 100644 --- a/xen/arch/x86/include/asm/io_apic.h +++ b/xen/arch/x86/include/asm/io_apic.h @@ -162,8 +162,8 @@ static inline void __io_apic_write(unsigned int apic, u= nsigned int reg, unsigned =20 static inline void io_apic_write(unsigned int apic, unsigned int reg, unsi= gned int value) { - if ( ioapic_reg_remapped(reg) ) - return iommu_update_ire_from_apic(apic, reg, value); + /* RTE writes must use ioapic_write_entry. */ + BUG_ON(reg >=3D 0x10); __io_apic_write(apic, reg, value); } =20 @@ -173,8 +173,8 @@ static inline void io_apic_write(unsigned int apic, uns= igned int reg, unsigned i */ static inline void io_apic_modify(unsigned int apic, unsigned int reg, uns= igned int value) { - if ( ioapic_reg_remapped(reg) ) - return iommu_update_ire_from_apic(apic, reg, value); + /* RTE writes must use ioapic_write_entry. */ + BUG_ON(reg >=3D 0x10); *(IO_APIC_BASE(apic) + 4) =3D value; } =20 diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index aada2ef96c62..85b4b4c6bc98 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -269,15 +269,15 @@ void __ioapic_write_entry( { union entry_union eu =3D { .entry =3D e }; =20 - if ( raw ) + if ( raw || !iommu_intremap ) { __io_apic_write(apic, 0x11 + 2 * pin, eu.w2); __io_apic_write(apic, 0x10 + 2 * pin, eu.w1); } else { - io_apic_write(apic, 0x11 + 2 * pin, eu.w2); - io_apic_write(apic, 0x10 + 2 * pin, eu.w1); + iommu_update_ire_from_apic(apic, 0x11 + 2 * pin, eu.w2); + iommu_update_ire_from_apic(apic, 0x10 + 2 * pin, eu.w1); } } =20 @@ -433,16 +433,17 @@ static void modify_IO_APIC_irq(unsigned int irq, unsi= gned int enable, unsigned int disable) { struct irq_pin_list *entry =3D irq_2_pin + irq; - unsigned int pin, reg; =20 for (;;) { - pin =3D entry->pin; + unsigned int pin =3D entry->pin; + struct IO_APIC_route_entry rte; + if (pin =3D=3D -1) break; - reg =3D io_apic_read(entry->apic, 0x10 + pin*2); - reg &=3D ~disable; - reg |=3D enable; - io_apic_modify(entry->apic, 0x10 + pin*2, reg); + rte =3D __ioapic_read_entry(entry->apic, pin, false); + rte.raw &=3D ~(uint64_t)disable; + rte.raw |=3D enable; + __ioapic_write_entry(entry->apic, pin, false, rte); if (!entry->next) break; entry =3D irq_2_pin + entry->next; @@ -584,16 +585,16 @@ set_ioapic_affinity_irq(struct irq_desc *desc, const = cpumask_t *mask) dest =3D SET_APIC_LOGICAL_ID(dest); entry =3D irq_2_pin + irq; for (;;) { - unsigned int data; + struct IO_APIC_route_entry rte; + pin =3D entry->pin; if (pin =3D=3D -1) break; =20 - io_apic_write(entry->apic, 0x10 + 1 + pin*2, dest); - data =3D io_apic_read(entry->apic, 0x10 + pin*2); - data &=3D ~IO_APIC_REDIR_VECTOR_MASK; - data |=3D MASK_INSR(desc->arch.vector, IO_APIC_REDIR_VECTOR_MA= SK); - io_apic_modify(entry->apic, 0x10 + pin*2, data); + rte =3D __ioapic_read_entry(entry->apic, pin, false); + rte.dest.dest32 =3D dest; + rte.vector =3D desc->arch.vector; + __ioapic_write_entry(entry->apic, pin, false, rte); =20 if (!entry->next) break; @@ -2127,10 +2128,8 @@ void ioapic_resume(void) reg_00.bits.ID =3D mp_ioapics[apic].mpc_apicid; __io_apic_write(apic, 0, reg_00.raw); } - for (i =3D 0; i < nr_ioapic_entries[apic]; i++, entry++) { - __io_apic_write(apic, 0x11+2*i, *(((int *)entry)+1)); - __io_apic_write(apic, 0x10+2*i, *(((int *)entry)+0)); - } + for (i =3D 0; i < nr_ioapic_entries[apic]; i++, entry++) + __ioapic_write_entry(apic, i, true, *entry); } spin_unlock_irqrestore(&ioapic_lock, flags); } diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthr= ough/amd/iommu_intr.c index 9e6be3be3515..f32c418a7e49 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -361,12 +361,6 @@ void cf_check amd_iommu_ioapic_update_ire( struct amd_iommu *iommu; unsigned int idx; =20 - if ( !iommu_intremap ) - { - __io_apic_write(apic, reg, value); - return; - } - idx =3D ioapic_id_to_index(IO_APIC_ID(apic)); if ( idx =3D=3D MAX_IO_APICS ) return; --=20 2.41.0 From nobody Sun Feb 8 23:10:52 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689684285; cv=none; d=zohomail.com; s=zohoarc; b=YSbUpzaOQL8oBMrOtTrKuS9JQwZR2zjqz241Q7Yqis8Gi8qC/NrKjiKed4wgYoTQFwSM8nQEK0Pa0ovEFnoGFj2zYIqfWXXr/xFNjv3JRp6f7xqwDlTSp8Bm35h+wPka8Y/3j7N1vNKXAn/i0aNC2MQK++OoPTZLlVQi1rPQ26E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689684285; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OCnIUZuAFwbePOekwR0bgT5Rjf2c+Q+JJrHWHdx6kO0=; b=kZHij45FqwtdTwHDeQdS/7IwEZTOWW5q8UisT1ZapUm+0pzkz19L6BS7UEAZmjxmuAZRJX8NEc0VbvcFHW+xKYv+3RxETq3p2IqOhwm5ZCdZL2AqmHaYwCBHRSNp1GO1tXZWtbo4tBLs/pkrZORx9STxpcn4WNrly+ykDNFBAlA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689684285868661.8444618234765; Tue, 18 Jul 2023 05:44:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.565178.883111 (Exim 4.92) (envelope-from ) id 1qLk3p-00033T-Jg; Tue, 18 Jul 2023 12:44:13 +0000 Received: by outflank-mailman (output) from mailman id 565178.883111; Tue, 18 Jul 2023 12:44:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qLk3p-00033I-Fx; Tue, 18 Jul 2023 12:44:13 +0000 Received: by outflank-mailman (input) for mailman id 565178; Tue, 18 Jul 2023 12:44:12 +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 1qLk3o-0002IO-0N for xen-devel@lists.xenproject.org; Tue, 18 Jul 2023 12:44:12 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id c9f6ce7c-2568-11ee-b23a-6b7b168915f2; Tue, 18 Jul 2023 14:44:10 +0200 (CEST) Received: from mail-mw2nam04lp2170.outbound.protection.outlook.com (HELO NAM04-MW2-obe.outbound.protection.outlook.com) ([104.47.73.170]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 18 Jul 2023 08:44:08 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by CH2PR03MB5317.namprd03.prod.outlook.com (2603:10b6:610:9c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.33; Tue, 18 Jul 2023 12:44:06 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea%5]) with mapi id 15.20.6588.031; Tue, 18 Jul 2023 12:44:06 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: c9f6ce7c-2568-11ee-b23a-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689684250; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=bh4Z8vh88aCCNmW7xSNaFT+TLYRAGdh+7EtGhKnpcyM=; b=T3+eCNkH1KA8sO28YAwi2QJL9Mrd1NOZ40LeUjQrzVfQZGzX/TojYIQ5 MZzJ91c1/TAPAzlLfSra4n72OneajZaxXmRmMRiLWsFDzaRLMiXUew6Ty RjYVcOgEBcEB0TiJw6o2EXJLQE8D3uFjmZLKvJfVXbOZeiwmrKtWdzKED M=; X-IronPort-RemoteIP: 104.47.73.170 X-IronPort-MID: 116607369 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:pkF6K60OGAyN9HQq8fbD5cxwkn2cJEfYwER7XKvMYLTBsI5bpz1Rz GEYDTzUOvmNZWTwc9pyaoXg8RgFsJ7TzIViGgtupC1hF35El5HIVI+TRqvS04F+DeWYFR46s J9OAjXkBJppJpMJjk71atANlVEliefTAOK6ULWeUsxIbVcMYD87jh5+kPIOjIdtgNyoayuAo tq3qMDEULOf82cc3lk8teTb8XuDgNyo4GlD5gNnNagR1LPjvyJ94Kw3dPnZw0TQGuG4LsbiL 87fwbew+H/u/htFIrtJRZ6iLyXm6paLVeS/oiI+t5qK23CulQRrukoPD9IOaF8/ttm8t4sZJ OOhF3CHYVxB0qXkwIzxWvTDes10FfUuFLTveRBTvSEPpqFvnrSFL/hGVSkL0YMkFulfOWhoq fkzC242ck6kuu+q8JakRdAwr5F2RCXrFNt3VnBI6xj8VapjZK+ZBqLA6JlfwSs6gd1IEbDGf c0FZDFzbRPGJRpSJlMQD5F4l+Ct7pX9W2QA9BTJ+uxouC6Kk1QZPLvFabI5fvSQQspYhACAr 3/u9GXlGBAKcteYzFJp91r137GRxXygBtN6+LuQqfwwvGCQ+GYpWD4WcEO5r8awr1WjYocKQ 6AT0m90xUQoz2S7Q9+4UxCmrXqsuh8HR8EWA+A88BuKyKff/0CeHGdsZj1Mdt0g8tM3TDoC1 1mVktevDjtq2IB5UlqY/7aQ6DatYy4cKDdeYTdeFFRdpd7+vIs0kxTDCM55F7K4hcH0Hje2x C2WqC85hPMYistjO7iHwG0rSgmE/vDhJjPZLC2ONo55xmuVvLKYWrE= IronPort-HdrOrdr: A9a23:qpuOCa8CXdWPjoAzL3Ruk+A7I+orL9Y04lQ7vn2ZLiYlDfBw9v re4MjzsCWetN9/Yh4dcK+7Scu9qB/nm6KdmLNhRYtKPzOHhILLFu1fBNDZsl7d8kTFn4ZgPM 9bEpSWY+ecMbEVt6zHCObRKadY/DFrmJrY/ts3Dx9WPHxXggpbnmJEIzfeA1dTTAlCBZ02NJ f03Ls8mxOQPWUMSsigHHEKU8jPzue78q7OcFoGCxYr5BK5iS6h6LOSKWn+4j4OFylSyrcumF K19zDE2g== X-Talos-CUID: 9a23:k4Dmh2w9DlyY/ehwUsnwBgUsE+Z5d1b+kkzMfWiFBHpZbKKacAO5rfY= X-Talos-MUID: 9a23:4xVB5gmqAJthI0I8KJ54dno9Np1U3qeQAnpdspUjo8uKCiVVICqk2WE= X-IronPort-AV: E=Sophos;i="6.01,214,1684814400"; d="scan'208";a="116607369" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=frMre0DkL8Z2df4GtYAhzvLnCvUb0L6IvV6p/crGziD9vBgZfwCrL5Nhz4TE2OfJdF3PCj33YM2i1ewPLXN9RR7i5jUu5KgxWzLjcHfoYUaQAxbWzV9faYTwc50zkrtwr4UV1XkXSU8d8sALtU/Ii5WB+g7IgZKKKT6fpn9gt00n5YDFUKREjHfMN0P+d++OxEVIQQguSgad7o+xnObLNEceKZyHgMhldWrMa7b2V2pFgasQnFHY8ZzFO1TKCgCL+eZD+E6BwWF/qGXdRkzZFvtoJkRGJL/xLzZJ+g9NbMDhwqXb2DAGQTvn0ci7+MjTFJf0Z2v2t3Tf/H9CHwEyLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OCnIUZuAFwbePOekwR0bgT5Rjf2c+Q+JJrHWHdx6kO0=; b=IrDALT/XZpG2n/fvfNo5ZxW7JijijjUt7j075TR7+926W7h51577+K7nkwq0hd8tXS12qOP4+iQC6PfeavFi9bHOsyf5uQM6sAcFZMYDP41um49kBBOiXXEnYELN7RfQwrgDkRXdrj94neecCSz6R+MAvl9gleUPIFPHoVaz2iQaVEt6aqWBd+DvRHbd2x6QhiVuh4O/A5i5CM3ggLBYLPVsG9KVhEzWNJqVv4rzUuBsGz/73uu4TxNdd92MEcQ32QVFDdGfzePjb5WT3X/akVULeukgYhMENoxfjR/kGybIZO4kbIRnBnlQozZnCcw6nEO+lpXjPA57cahXlHgbJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OCnIUZuAFwbePOekwR0bgT5Rjf2c+Q+JJrHWHdx6kO0=; b=uGGPEAjrHXznKiE0oPw1THGDb4yVeOLWcqPY2nAX7YFK73OzMMNG0Vyh1i9/JgtbFHqRaqI82r3PtVVfZkIXf7T6sDnmzFswdV3ZSTZB7Y+lEBITuic2iTRjiQu2b3K/C+V95Hl9zGz0scf4IJQn4enxiC7uue2OasF3THaol+I= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Kevin Tian Subject: [PATCH v2 3/5] iommu/vtd: rename io_apic_read_remap_rte() local variable Date: Tue, 18 Jul 2023 14:43:32 +0200 Message-ID: <20230718124334.36548-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718124334.36548-1-roger.pau@citrix.com> References: <20230718124334.36548-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0492.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1ab::11) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|CH2PR03MB5317:EE_ X-MS-Office365-Filtering-Correlation-Id: 2213edac-1ba4-4ced-8998-08db878cac42 X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr,ExtFwd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KTkk4fFLWFl0JTz0fL28sVhatrjvHho3OszrtnhhdUnQMovRASaBJNn7o3ObzknWANNFOpM0VybsOpnRqE2g+E6H/zF+BpzBnwQ7kXQtWgTDMSAJRK2f1KKCjxPUSOb9jlh/9IENxxIRSTJk0z0t7ljH8AHTInNSg9PIz9EZvZnV0By5xadmXETk+cDRIojwT+vYJ8P9CAslbwM6cLnxDwsDLMgdimcvlLXCH8QnyqSkbMIDkFwcWU7/jCKdy6+ajxCNFGxbOKxNEvS8eKogDSGQPCXrdOu/ZA7RSHW0Ic9rQr5dWdJgH2g0xSERYK/SKMEfnuNI/ETzXGjynn2uFEH8+5IvFaztFYkqgclZeaW1WkakI/9RnISvjdoQ2hv9volKFmtuQTE7dnXfOA+czXGdhJOtDQpvkjnq+LGuIUiSzl6jIGGaIsUBd2tDLsWoNqh9OvSnHJHeEv7DpjsHA89AEISwFdeyWxgGxNlWDS9gP7MOo81MEdinT8juM4glb4y4MZGBb0O8how36j98eSiu1tJ3AbXl2Aq5I0NGCoxUaKNGq2aHjTP7TpINsidI X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(366004)(136003)(396003)(39860400002)(346002)(451199021)(86362001)(2906002)(36756003)(186003)(6512007)(38100700002)(83380400001)(6506007)(1076003)(26005)(54906003)(82960400001)(6486002)(6666004)(4326008)(6916009)(66556008)(66476007)(2616005)(66946007)(316002)(8676002)(478600001)(8936002)(5660300002)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?M1JhQkJkUmpyTjRURXFOTjlScjUvdTdRUDlQTDN1b1JMSFFva005c3daSHJn?= =?utf-8?B?WHgrSGRpV3p4MGE3SnE3RFlqNUtEVHo0YW81WGZmM2dmcVhMRWs1ak5CZlQ4?= =?utf-8?B?K3ZuU1M4QldGaWUyNWlmM1czVFdBdCs3Q1FDVTdxNjd6SklYKzYvWTl0WThZ?= =?utf-8?B?d01jYzdLc3d1aXEzUnBjZTNTTHlMenA2bnZHci9wdkFoYldkb3dsd3FqaVNk?= =?utf-8?B?VkJRZkZXUWNXcFR5QVR1dFVKRUE2VmdHMVVLTE1keEpaOHdPd0oxQzdjV0Qw?= =?utf-8?B?WVZ0SXEwcXpOVS9WbElBRHZOTzhaYjAxZkdOTE5TekVXWnNudHNOMGZtSDIz?= =?utf-8?B?WUFMMUd5N2h6ckNyODZxeWNibHUvVTZEK0d2YkE4NE93VktmbklsWmJnN2cw?= =?utf-8?B?eFgrVkJlcDc0R0R4Ymg1QkkyM0FhOFRQNDRNMHFNdEFid3lnMjRYVWo4UUVG?= =?utf-8?B?WTZOTWJmZHU1aVJKWS9mamdvelpJVVdUVVBJQ0w5aU11bk01VzF1Q0FEbkhG?= =?utf-8?B?REgvaTIzbjlEZnJ4OXRlNncwSEFETEpWZThrUGlObE1YVVBlZ0xhd2trNGJt?= =?utf-8?B?bVlrcnJVMkx1MTN6RFdZUExlQ1c0K3pzMGFVT3cwOG5TU2RDblFqcEpJOTg5?= =?utf-8?B?OVZYczJLSzF2dE9jZ1JBcHB3QzlSUmJoRW9IR2pHSW84c2R2Y3pSVGpCaWRR?= =?utf-8?B?ZVBWa0pBSzJLZ3ljaVhadmJkTmdqSE1RdnN0OG1QV09lNFZqY0wxR0s0R0hV?= =?utf-8?B?T3E2TTVNMzBEM2FZZmI1ZUxxQmk1YjZkMWJaSXZIeWdWRmF5UFc5RVg0bTJH?= =?utf-8?B?WGw0TkdheExaQjgrNTdsTXU4MXFIWFZWaW91WVJ0NnM2ZDlnSkR6NnplMHMv?= =?utf-8?B?a3I1SkJBLzRQZnNzQzZFLzdaNTBuR3piZ0Rmcm1BTzllZTQ0czZNSVpyMmRT?= =?utf-8?B?VnFlRlhMSmNmazByYXEyNzFzSE1mMVE2TzdXOUloMzVpcEZvU0lUMGVRZGZz?= =?utf-8?B?RGR4VkZtSE1lYWRRTUUzUHdPOGZVdjNFQWtacnFrVHVNdkJURHdLalVYU3Bk?= =?utf-8?B?SWp5WjBtMmJsWWhIT3FKQmdFTElnZnpCUTVnaDNEblYweS8zRm9IT3loS2dq?= =?utf-8?B?SVVyTlp2TnMvSFAzQ0N0REpma3lqVGk5My9LK1RhWE5SaG9PV3lSNVM3bUYz?= =?utf-8?B?RUlLNm5jTlc4eUlZSjJVOEZleGVhV1JtOEVoNGhNcDFBa0U5RFNDOWlhOUVI?= =?utf-8?B?MG82ZWpPSmtQMWVNZEQwQVJxMjV1WCtybTVxQ242WGt3aklWdXBmSVBFc05I?= =?utf-8?B?aHo0SGxSUjQzZ3FmSnk2bWp6NHFyeWxrNitXVSt0VDhQanY5L1YrZE9NZHpW?= =?utf-8?B?WXc0eUdzS1ZvcmxZZUxFZlg0MXZhVVZzUnFHUWZqUGNVS3lPMGsrSThrOFBz?= =?utf-8?B?ZXJONExiYUlRZjNTL1EvZllER1VES1o5UmFGTDFQTzBncVRDdlpIMmxwcnZR?= =?utf-8?B?cTJlTTBtU2tqd3hpWk5VT2tzdzgxSFYyOU0yZi84SzByVkxXTVYzc3hLbkJK?= =?utf-8?B?aDM4ZDFnZ0hERDNzaUNVNzlod3dkNlZnREI0aHlydFFVTTJ6dForRlVDbEwx?= =?utf-8?B?K1haYzVheGpPS0h0SXVLVE1ZZXRvOUI2RVMvR3ZFR2EvVW9uUncyelRaUDNa?= =?utf-8?B?OGlNTWpQTWZUa3dUSGFQbkF0UFNBTTE4RUVjbG95ZUlzWC85SkNkOFBhc1dQ?= =?utf-8?B?Q3RSbHVHZUlqc1J3bDdKR0F1MUtzK0FERVM0dThaUDVEaVFMTGJaaGkxQ3ZP?= =?utf-8?B?MUhUdFdoRDVKbnpub3k2OVprVExoN2N1ZC8wZU5oVGRrd21OZ3pkZ3BvSEZS?= =?utf-8?B?T1RDV3ZlbW5KbjA5RXEzczdKVDhDTDRiNnZyRm5jRUFqQVNTbUx6d3d4SFZq?= =?utf-8?B?TURDUTlwR1JCUHlWdnFTTjV2V2JnZGl2YlUxME0ySVI3VHRnSCs2MlRST1A4?= =?utf-8?B?cjkrNjNlNG9IYWtpbDRUVkF0ZW5kMXpxLzIzUU5sT1A1ZURGNEdsT1ZKNmk5?= =?utf-8?B?TEY3WWJIeDdEdWJPYVNGQnNUUFpPWXpNQkRwd01TTXR0N2pFNkV2VkJwb1JT?= =?utf-8?B?aEVjWlhJbDB0bkdSdUNRWGxGakZJM3NCWHRORUY0anJRVGFLSndXVVd4WE1x?= =?utf-8?B?WHc9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: jA+XSp/yT37D2eeCUE3D3JB+JXJwTBtPQB5l0+E63++Y7DTV6Z5h2q1qez7uIB195NuLNiMiuRgZxl49tFbjEtInCqbD68VNTao0qrznAUb9zPmB/rxC78efXs9huTPO0qzohebSJPQGw9MZ7Afied47U3VK67Tf/LdmsMmf0w6iuQy8/Czq+r9Q7Txen+Mlff1qqacVWXtpH0+WjZRp612Z5NSmZQ9fDtnJmB2SMASavugCPLx6q2Rq1jkzdBelZekJjyEYxkDZuOCw76hTQHEubhn3fG0DxySGtjPGC0osxz3wiallF36QHl3dMsnfBE5RpTuE7t3amveDOi7H93iIJUOYsmewUzIJBIzEPQjXOpGcPo8rn591/xhCaHjTbhDe2r46aWYugm9kwj3sxriKGhtYIuVZUudI1atHAol+VR5AuAKZ9GjcvmmqrCMuKJtuMUj3xZJ2iMQMCWuRD+GpKpnc8O5b4xYMnscXTtJdMsMAA7f9VOJtYG/6zaeIkqc3sWeHEp18XV2LJAMI08t+xA6irL9bUagGmEPgNK7M6sNxwUFiW/m8mGOjlvELqlQmobE/kZu6f/T28+bjBHcF6MbeRE4At7tXCkXm9vpO6lesh/JL9nLhKNKR8SydJZWkpB2aTTrD5hr+NwEPCISlyVeO3H0zl8pm1UiVtKNCPY0nt+lhCkZbTd4Zbl52cOosM6Qp0xc01JU4mSkVpstkYXXnWnLgNHIsy9AKZy/h2klJtgDaNqzHofbTqBWN4SKHP4Rfzs4aCN5GAPhxObM5KI+Jex/ZX5AgyBqIgiv190j8cADxcVgqT8CK191w X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2213edac-1ba4-4ced-8998-08db878cac42 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2023 12:44:06.0689 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +CX60RyCCa96JW+b/Qz0SjWi7VHBv3y5BE/j2zN5BhoKTYXw+ZS+eQiY011nNQwUYaBKZJXKEyhC9fHC1os6PQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5317 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689684286974100007 Preparatory change to unify the IO-APIC pin variable name between io_apic_read_remap_rte() and amd_iommu_ioapic_update_ire(), so that the local variable can be made a function parameter with the same name across vendors. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v1: - New in this version. --- xen/drivers/passthrough/vtd/intremap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrou= gh/vtd/intremap.c index 786388b4d9c7..05df6d5759b1 100644 --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -441,14 +441,14 @@ unsigned int cf_check io_apic_read_remap_rte( void cf_check io_apic_write_remap_rte( unsigned int apic, unsigned int reg, unsigned int value) { - unsigned int ioapic_pin =3D (reg - 0x10) / 2; + unsigned int pin =3D (reg - 0x10) / 2; struct IO_xAPIC_route_entry old_rte =3D { }; struct IO_APIC_route_remap_entry *remap_rte; unsigned int rte_upper =3D (reg & 1) ? 1 : 0; struct vtd_iommu *iommu =3D ioapic_to_iommu(IO_APIC_ID(apic)); int saved_mask; =20 - old_rte =3D __ioapic_read_entry(apic, ioapic_pin, true); + old_rte =3D __ioapic_read_entry(apic, pin, true); =20 remap_rte =3D (struct IO_APIC_route_remap_entry *) &old_rte; =20 @@ -458,7 +458,7 @@ void cf_check io_apic_write_remap_rte( __io_apic_write(apic, reg & ~1, *(u32 *)&old_rte); remap_rte->mask =3D saved_mask; =20 - if ( ioapic_rte_to_remap_entry(iommu, apic, ioapic_pin, + if ( ioapic_rte_to_remap_entry(iommu, apic, pin, &old_rte, rte_upper, value) ) { __io_apic_write(apic, reg, value); @@ -468,7 +468,7 @@ void cf_check io_apic_write_remap_rte( __io_apic_write(apic, reg & ~1, *(u32 *)&old_rte); } else - __ioapic_write_entry(apic, ioapic_pin, true, old_rte); + __ioapic_write_entry(apic, pin, true, old_rte); } =20 static void set_msi_source_id(struct pci_dev *pdev, struct iremap_entry *i= re) --=20 2.41.0 From nobody Sun Feb 8 23:10:52 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689684302; cv=none; d=zohomail.com; s=zohoarc; b=duh4UDZHnXttxeTMV6JdBb4Mk57sim/DYj8BKQTkzMVDsrInXzgkY1NJB1Fg7i4awlnbFO308jmZxkqIBonRuqQyayD/6MCUiCizZddvW+31myymsi4tpvlLnYQkAtYSDwsvrCN8ES5P9hp85K/a3nsxn0+6CbqWZxjVjdd+rfY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689684302; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=D+ah55pwSKrj0QLPdtYi0rT2uASDXc6qmyPXuOczQlM=; b=DJTkxGBtnAX3zfU+VFRzfZiNm5710gwc0pyNM3+gKnWBFrWB5n4ZJ2aeYP0UWZAjmYqPKI52XU+nsoTuzdiMcuIK3AQEJBZrwX1bbbWj08vTckBzjchvykLCUFFbViKFTrsKaWWI1QZ0gts/Or2qgl9qgLqYvYpqns/ZMfTZgFs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689684302231270.1444315471373; Tue, 18 Jul 2023 05:45:02 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.565184.883131 (Exim 4.92) (envelope-from ) id 1qLk49-0004Np-DW; Tue, 18 Jul 2023 12:44:33 +0000 Received: by outflank-mailman (output) from mailman id 565184.883131; Tue, 18 Jul 2023 12:44:33 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qLk49-0004Mn-7z; Tue, 18 Jul 2023 12:44:33 +0000 Received: by outflank-mailman (input) for mailman id 565184; Tue, 18 Jul 2023 12:44:32 +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 1qLk48-0002IP-8L for xen-devel@lists.xenproject.org; Tue, 18 Jul 2023 12:44:32 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id d55173fd-2568-11ee-8611-37d641c3527e; Tue, 18 Jul 2023 14:44:29 +0200 (CEST) Received: from mail-bn8nam11lp2169.outbound.protection.outlook.com (HELO NAM11-BN8-obe.outbound.protection.outlook.com) ([104.47.58.169]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 18 Jul 2023 08:44:21 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by CO6PR03MB6228.namprd03.prod.outlook.com (2603:10b6:5:35c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.31; Tue, 18 Jul 2023 12:44:12 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea%5]) with mapi id 15.20.6588.031; Tue, 18 Jul 2023 12:44:12 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: d55173fd-2568-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689684269; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=QGsl4OT+iTggPUJrovUVSAuwyNeFqK9Pe6BIahwm9qQ=; b=EO2UdwYubFl2bMITFV5Sn4Ywg6nMogUSEF0Gc+tfqy7S3df3BFBGSLff kjBIivgMD341hgdbcSyV4wRXffngogA3+E+u6e3e2LRs6k/yE9WACmh+W U23l98w2+y1R1MmtL+9gkZt37Lz0TQDinbehvJq9glXxI5TgP/PM9PjBS 4=; X-IronPort-RemoteIP: 104.47.58.169 X-IronPort-MID: 119178503 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:9XYdM6JYSGuh+MPFFE+RE5QlxSXFcZb7ZxGr2PjKsXjdYENShT0Bz mZMXW6Fa/rcYmb2edBzO4238EwCvZ/TyYU3TgRlqX01Q3x08seUXt7xwmUcnc+xBpaaEB84t ZV2hv3odp1coqr0/0/1WlTZhSAgk/rOHvykU7Ss1hlZHWdMUD0mhQ9oh9k3i4tphcnRKw6Ws Jb5rta31GWNglaYCUpKrfrawP9TlK6q4mhA4QVuPaojUGL2zBH5MrpOfcldEFOgKmVkNrbSb /rOyri/4lTY838FYj9yuu+mGqGiaue60Tmm0hK6aYD76vRxjnVaPpIAHOgdcS9qZwChxLid/ jnvWauYEm/FNoWU8AgUvoIx/ytWZcWq85efSZSzXFD6I+QrvBIAzt03ZHzaM7H09c5zAXhQ+ swULQxSLTfev+2926+6Tflz05FLwMnDZOvzu1lG5BSAVLMMZ8CGRK/Ho9hFwD03m8ZCW+7EY NYUYiZuaxKGZABTPlAQC9Q1m+LAanvXKmUE7g7K4/dnpTGNnWSd05C0WDbRUsaNSshP2F6Ru 0rN/njjAwFcP9uaodaA2iv117aQzX6jA+r+EpW/9PVJkgOdx1dPJx0xamGRosSmqxSxDoc3x 0s8v3BGQbIJ3FymSJzxUgO1pFaAvwUAQJxAHusi8gaPx6HIpQGDCQAsTDRMddgnv88eXiEx2 xmCmNaBLSNrmK2YTzSa7Lj8hTC/JykTa3MDbCksTA0Z7t2lq4Y25jrXR8tnOL64iJvyAz6Y/ tyRhC03hrFWh8hb0ay+pAnDm2j1+MmPSRMp7ALKWG7j9hl+eIOue42v7x7c8OpEK4GaCFKGu RDohvSj0QzHNrnV/ATlfQnHNOjBCyqtWNEEvWNSIg== IronPort-HdrOrdr: A9a23:w45Mw6t8ZdnHkdsHU+b/nWLW7skDldV00zEX/kB9WHVpm6uj5r +TdZUgpGPJYVMqM03I9uruBED+ewK/yXcY2+cs1M6ZLXHbUQiTTL2Kj7GP/9S6IVycygc178 4JT0EXMrzN5DNB4PoSjjPTLz7OqOP3iZxBaI/lvgxQpcEDUdAc0+7TMHf/LmRGABhdIZI4EZ qa6OpLzgDQA0g/X4CrHF0IRfLKqdHqmfvdEHg7Lg9i6QWHgD+y3rrmGxiUty1uNA9n0PM57W PEnmXCl8Gej80= X-Talos-CUID: 9a23:XV0Gtm/MRpJsFBXeiGGVv0oUA94qQnHY8CiTBBKABm1yVbySWUDFrQ== X-Talos-MUID: 9a23:Wnw27wZrWpGVHOBTsD3npyM8OsZTv4uuL383u5Y7pOjeOnkl X-IronPort-AV: E=Sophos;i="6.01,214,1684814400"; d="scan'208";a="119178503" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZZFQOPbvcaD0YYxeYe6fwavvQPm58Srzz8Or2MuED3Rl74URLMfEvorEhTPgSPL7zYJqxHJG4YpTWeNRn5w51r2kJpjlXNknsaWhVoO2lJYnaiLeqKz4VpwwcWniItmbdqUJA5u/HoKEr7pfztdJNi0LqGlmobzJQ3a0rDteNT9m62mzDE6XWwO5hFzAkjVvz60Olo/LG3J26J1/2LKJWqW/chtXvtjU6MZVLl6P62EyXho6BWoEmfglUKmmJs4hDmrGzSM6S8EhkQ6y5uWSHbZp0yx+prSEb7h117uwQ0I+D1ZXbHFSUuY8H5bHieLsSmMQlX7xoC5qUuNbsaLPcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=D+ah55pwSKrj0QLPdtYi0rT2uASDXc6qmyPXuOczQlM=; b=YmgOxT9A8x0JMoM7GFp8XkzOBkOyk+K7EbmQ8LTRskR4LQyZaLSmyQDSjcXFPLddACn0uAT8Az9yAN5veJF1r8fds/du+YJ1qhgxGd4GLb/7anXUnI+sJSM6AlWlXgT7KPKp1W5EdGsjk2RJUQZm/k+q8mA+md4BYZHC4FbG04bba8BH21z7SQXD8Fu14PVlyeZcLo07eswVxChb2kP1z6FHWZ/JAMl9TLSVQU1xqeHYJ2mzy5PFBTxGXd2YOA+nqg5Hi02U63hWFhy458bd8rK0c3neMOpfc1UiyU0senCEAziqTKR/95NGiq6ZjCoTfwyLA1HpJsV9UBPizz3Yug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D+ah55pwSKrj0QLPdtYi0rT2uASDXc6qmyPXuOczQlM=; b=vUbbJrORQO5hOxzZ8jJVk6gqHkwjSLHtaXWUgEUaH2ZBYNVl5jkviIkkvQwvtMKE219iqeOfR7yK9sVimd5EUa7FUSNUU0II8gA+kKsqNjIHovbqcnbHFqjOh9p6O76xgxHgx+hWldCrH3TFe+uvDAvZb1nRLojyjPyZB5tc6RA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper , Wei Liu , Kevin Tian , Paul Durrant Subject: [PATCH v2 4/5] x86/iommu: pass full IO-APIC RTE for remapping table update Date: Tue, 18 Jul 2023 14:43:33 +0200 Message-ID: <20230718124334.36548-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718124334.36548-1-roger.pau@citrix.com> References: <20230718124334.36548-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0598.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:295::22) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|CO6PR03MB6228:EE_ X-MS-Office365-Filtering-Correlation-Id: 4345a27c-46f0-4ba6-9603-08db878cafe6 X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr,ExtFwd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BUKvqZ0Q75s5d8h54maaX3+fWQkX9C4T2Sc8PmZL5Ps4WW2kpb1NFDWh67rfXcHwmiN8bX4MiT4slMeSxfpEFIVzeddntwq0ipqm91g+Pa5gpt22QzOri+FKS8mfcy1gVsqvdm/kMIvUamaGnBXuewZnB6OYUU2MOUY8+dZRxsVvk/C/qP+3+bfiTCuM0mtJ5lpCtXdrmhg/UGoY/OOesrtJppXN/wd+VFtufl+TwReBugiY5VA2QO/g3JlwfE8GzEiTLBJy07KK6mRe6de9/I9aobhXF612m3gc93l9gMLewWgKUcTkwnO0/tn4l8Xw8gOYuL4fF7IjjkVs48dNgPc7fsCJM7CFPAQnUIT7SIuyLfYh2q2r7V0cYGcAnaZ7EGTmgRN0crPpOcEaVZ/B2ood7n2BvAxvMF13l5dvopqgz7nWHFcAWCkq7hOygE+lEb2Apm5/rZplQCL4oywvdGXu5xjofEU7YeuhfgRqCF+xsR6kuLXfFdnl/vGzzeCD6ju0SURdyZPlGvWY36SuPFiC+Fqppw31W8OAxYyFrtsELeSJtDS7HJewIvWNtS/o X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(366004)(346002)(396003)(136003)(376002)(451199021)(54906003)(478600001)(6506007)(26005)(186003)(1076003)(6486002)(6666004)(6512007)(2616005)(83380400001)(15650500001)(5660300002)(86362001)(38100700002)(8676002)(8936002)(41300700001)(82960400001)(4326008)(6916009)(316002)(2906002)(30864003)(36756003)(66946007)(66556008)(66476007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MHpzNmt6QjkyMFJVWG9EbDR4RHp6OENXb2NuQ2p2ait2VFZrN2VLT2oreGpy?= =?utf-8?B?c3FVNyt0dlk0WmErenlUU1BhT1c2RGtQTjRvRmhPTjJHeEJvZFlKQ1o0bmww?= =?utf-8?B?SlNkdnoxYUVPaDM5SkY1Z3FFbG8zT29qLyt3czZ6K3o5dzlieVl6WlBaZFkw?= =?utf-8?B?QTkyMGQwTkVlMGMzQUdlYm5VTFZOR3luMU5ielloN1YxVmVVUWhWTnRBdzZD?= =?utf-8?B?U2FkSDBhRFR5eTZsWkh6djlkaFk1QTFsaTZ6YzlWZVUzb1B0QXJKQXBFMWl4?= =?utf-8?B?dUhiMEcxeEZWNUhZSnFha2d4Yy9Id0QrQ3N5UUNBdWMyU2R0S1dZWHhQRHNh?= =?utf-8?B?TmZtcGJEYWNtS3V4S2U1WFRKWmllOFNkZkkyYmx1SHlGTVBmUlRqTzFUNUQ4?= =?utf-8?B?dFQzbjFiSlNRajlLKzdxdy9xQmNjM2NrRzErTzIwNDQ2andZWmY0cU91dXFB?= =?utf-8?B?SWk5UGVoNDNiWWtNUVBsSS8yWVE4eVI3anBqNnp2bHpTak13SHVZUUxZREwx?= =?utf-8?B?aFE3clRUL1Z3RDZNcEU1c1ZoRzhHenZ2M21uMnViRXo4YVhGeTEyVEJSOWkv?= =?utf-8?B?T3dVMzFLSWZhamc2dkV4K3FVRGtiejZIVmF1eDJuVEd2b3d3dGhXQUtMMkww?= =?utf-8?B?TWV0MjhhYm9DaDBRY00wNTQxSXlQSVQ3WVphMFBrczJpSDhBU0ZOUmhIclNo?= =?utf-8?B?d1BKRENvMFJpMlJlNGJnWDl1QTRKeHZyaVNLc21yMVN2ODRSQ1NrMW5EWVQr?= =?utf-8?B?N2JaNDdMNCt3MEp6blVqUDRPR1QzeVBxd1VjVkhjU0ZiNXVJQ3N3RTRINmoz?= =?utf-8?B?YmFCcGt6aHQxc1lPUnczNDdwRE55bzhuSkgxeTZQU3l5UjBzZzVLck13UjhU?= =?utf-8?B?cUhhbWZIZzNiQlQ2M0xNOHhMUk9SSUJLQ0ZYNUNSVElZMUlkbUU3VTBpenpX?= =?utf-8?B?V3dzU3VsRzZNNEJHOXBITDZUVENWbUZDUkxIekJ6VHFySDdHMVYrY25xTVpJ?= =?utf-8?B?WTVSbkNIbnNlYTJ3MXc2cy9ESEdpT0dqcEdwbGFhUnovTjR0SkFOUERRS1NO?= =?utf-8?B?ajF3SlNoYUdUallxN0xDaVhmRnZncHZpOFF0TUd2bnJDajJqY0JtQlRZdnFx?= =?utf-8?B?eWJ1ek9lNVczallYbmVIYkdyL3FNMXNiMlBneWIzSlQ4OGhLcGY4ZkJHWDM1?= =?utf-8?B?ZmllZUJuTGZwNCsxUi9XL0p0TkFtNWplRWI3ZGJUM2E0YjFVR2toU3l3QURL?= =?utf-8?B?UXRBcnZsVnRqazk5SUIxdHVQOWlkd25DY2dNK0FRL3VrU0pDUW5LaGJqSEpo?= =?utf-8?B?TWJwNFd0TldoUkVrV2tXbGtINEdnVjhKSVQrc20yaWswbllPQkxQOEtsbHNP?= =?utf-8?B?VGNyNTZHNjZ1STBoQjVnbWZoeEpLLzB2Z3hLL2VoMXk1d3ZDdm9GRThvUk5n?= =?utf-8?B?VkVrdlEyOTBkN1ZVWGxPZitKcElWdDRZL2dsZ2hmcjVhSlE2YWpLWnBPTm8v?= =?utf-8?B?YXhidk9sR0UyWFZFY1lGU3huUzhXV3g3RTdVclBrN0p1REV0a1NPTThpdVhh?= =?utf-8?B?Mm0xa3IxU3lFc2V1UEJBQ1VrNHRPZUpxVzIyazJITFJQQkszUlNTZFUxcGxp?= =?utf-8?B?d0VSUlRpWVhTZitSUUEvWFVudXpEcHc3V1NFVVRHYUVBK2JaamJOMEhOdTBx?= =?utf-8?B?NkRhS29DOUIxVnh1UE1SM2pjdHpVMmwvbHdZM0I3UkNnbGVIME9UMCtBaExM?= =?utf-8?B?bHBSSXRMcTJPVE4rQnQyOXZXK2hsZzF2WGF4QTR1Z0lqcVFIbnAxRUNiaVdw?= =?utf-8?B?QlpPV2RhV2tNa2ZVV3l2Q0lmQTUvVEFLQ1BnQlZPVlZzWi9yVVZ2V2FuQUVP?= =?utf-8?B?MFVZMERJVnVuVVJobjgvWktHV0JuTXEyTDlHVENKUU95WVp4aWVrWjBWKzJz?= =?utf-8?B?TDdvb0pTcmw0SWNNaU04VHlQdU9QSUxod3FCNHFUR0htSFF3RGErcCs1dXFV?= =?utf-8?B?OEF4OGV4MkNuckx1M0JRTGpCQ3kxMXROWVVjUUxMMlU3K1M3RVZJRkJWU2lL?= =?utf-8?B?OFgweHhmOGNSai92QjdESlRmT1NaeHo1ZXdPWncvTFdhcHU1UTRZektsTVBm?= =?utf-8?B?Qy9tZHZYaERQak5iWW9BMmNveDFaTGtOZXg2eTVvRG1WaXN1T1RRUmM4TG9n?= =?utf-8?B?Nnc9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: UdWsIwL6buICfaqKHyido4dGICvIRPpAl4VTQKDWkwyuKR4+zv/cMIvztyNPh5sK+4hPZpDYKsdjiXGCmw9ZfNMVvjasw2SaVDfhQQ63blgFxN5tPxWTAUF8kCWmZW/BlM4CKaDh9z1U8Mlq2Uq37waNvDJek4n9TmX10IEyp+x/4FJW+SEP3fkei8MHRzo5zzs88w/gIpkvHD0dqAiX+boFMGPqMmSedDNcHuPPmaINlUB9L86C42nZzdaHD80QrE4+8dVylhzwB1sXFWdAbDDI0Uv+nr7Gsp2DWg3+f8om3PeRdYWHn1xAX+0/jvjVr8uKHQtJtO/Fld2OepgkMIHPUbFabf22lOCTgnDoXN7H5FOfLy3v+cUOOwwoBM051WKSttZayqo9h/F+dchBJWu12YJMhZhG0Z+/bzgQtId37obbkBArfr7uWs08/4X/p27UFV7PM5uaiHTl+pqx8gRZXQcy0hSo1KcjKKCHIJ+68p1z2bxciSs/b/e6zjbm2LqK2E1tonV7MMH2yOMHyQJmQOVE46Ipz6+I91ow+5bnpxPVeb4B8/FKdR2myqb4+mPfGnFiTIXZgB5s9DYHM8/x2pO/HaUjA9qXMk+WWCN1TI3XBZKZqjWmAfi4bR6lUdenf4NCdZ34sdh72HC217j6HgY5vPYMsAEvbWSA6R04k0EUU5AgI1116ubIu6AyLMKxx15XuUihd9gtVoqE0fLrK2ear3dH+KfULZaKsw897kHqnTsV2GHgxG1g7sR2bDMO0WwcoJD/Y2m1h9VpcxdouaqL7P1TeaLTdcsjXhC/QGt/5jN9U+jd3WS2juHQ6VigRbTVJ/nUyY6w73pB0XlI8llP/8Mn8qcp/Msx8yc= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4345a27c-46f0-4ba6-9603-08db878cafe6 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2023 12:44:12.0744 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ilWk9tL+rDO78UYMHQ9QCGOfo3z91C6unLHBQ+pxY6Pcvev/1dyfA3FEkVCi8DDvv1tEQxvrco69OkquwF5mjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR03MB6228 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689684303001100001 So that the remapping entry can be updated atomically when possible. Doing such update atomically will avoid Xen having to mask the IO-APIC pin prior to performing any interrupt movements (ie: changing the destination and vector fields), as the interrupt remapping entry is always consistent. This also simplifies some of the logic on both VT-d and AMD-Vi implementations, as having the full RTE available instead of half of it avoids to possibly read and update the missing other half from hardware. While there remove the explicit zeroing of new_ire fields in ioapic_rte_to_remap_entry() and initialize the variable at definition so all fields are zeroed. Note fields could be also initialized with final values at definition, but I found that likely too much to be done at this time. Signed-off-by: Roger Pau Monn=C3=A9 --- Note that certain combination of changes to the RTE are impossible to handle atomically. For example changing the vector and/or destination fields together with the triggering mode is impossible to be performed atomically (as the destination and vector is set in the IRTE, but the triggering mode is set in the RTE). Xen doesn't attempt to perform such changes in a single update to the RTE anyway, so it's fine. Naming the iommu_update_ire_from_apic() parameter RTE is not really correct, as the format of the passed value expands the destination field to be 32bits (in order to fit an x2APIC ID). Passing an IO_APIC_route_entry struct is not possible due to the circular dependency that would create between io_apic.h and iommu.h. It might be possible to move IO_APIC_route_entry declaration to a different header, but I haven't looked into it. --- xen/arch/x86/include/asm/iommu.h | 3 +- xen/arch/x86/io_apic.c | 5 +- xen/drivers/passthrough/amd/iommu.h | 2 +- xen/drivers/passthrough/amd/iommu_intr.c | 98 ++--------------- xen/drivers/passthrough/vtd/extern.h | 2 +- xen/drivers/passthrough/vtd/intremap.c | 127 +++++++++++------------ xen/drivers/passthrough/x86/iommu.c | 4 +- xen/include/xen/iommu.h | 3 +- 8 files changed, 80 insertions(+), 164 deletions(-) diff --git a/xen/arch/x86/include/asm/iommu.h b/xen/arch/x86/include/asm/io= mmu.h index 0540cd9faa87..eb720205e25e 100644 --- a/xen/arch/x86/include/asm/iommu.h +++ b/xen/arch/x86/include/asm/iommu.h @@ -84,7 +84,8 @@ struct iommu_init_ops { =20 extern const struct iommu_init_ops *iommu_init_ops; =20 -void iommu_update_ire_from_apic(unsigned int apic, unsigned int reg, unsig= ned int value); +void iommu_update_ire_from_apic(unsigned int apic, unsigned int pin, + uint64_t rte); unsigned int iommu_read_apic_from_ire(unsigned int apic, unsigned int reg); int iommu_setup_hpet_msi(struct msi_desc *); =20 diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 85b4b4c6bc98..255ba3e8b073 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -275,10 +275,7 @@ void __ioapic_write_entry( __io_apic_write(apic, 0x10 + 2 * pin, eu.w1); } else - { - iommu_update_ire_from_apic(apic, 0x11 + 2 * pin, eu.w2); - iommu_update_ire_from_apic(apic, 0x10 + 2 * pin, eu.w1); - } + iommu_update_ire_from_apic(apic, pin, e.raw); } =20 static void ioapic_write_entry( diff --git a/xen/drivers/passthrough/amd/iommu.h b/xen/drivers/passthrough/= amd/iommu.h index 8bc3c35b1bb1..aa3681a9f2aa 100644 --- a/xen/drivers/passthrough/amd/iommu.h +++ b/xen/drivers/passthrough/amd/iommu.h @@ -300,7 +300,7 @@ int cf_check amd_iommu_free_intremap_table( unsigned int amd_iommu_intremap_table_order( const void *irt, const struct amd_iommu *iommu); void cf_check amd_iommu_ioapic_update_ire( - unsigned int apic, unsigned int reg, unsigned int value); + unsigned int apic, unsigned int pin, uint64_t raw); unsigned int cf_check amd_iommu_read_ioapic_from_ire( unsigned int apic, unsigned int reg); int cf_check amd_iommu_msi_msg_update_ire( diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthr= ough/amd/iommu_intr.c index f32c418a7e49..bb324eb16da1 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -247,11 +247,6 @@ static void update_intremap_entry(const struct amd_iom= mu *iommu, } } =20 -static inline int get_rte_index(const struct IO_APIC_route_entry *rte) -{ - return rte->vector | (rte->delivery_mode << 8); -} - static inline void set_rte_index(struct IO_APIC_route_entry *rte, int offs= et) { rte->vector =3D (u8)offset; @@ -267,7 +262,6 @@ static int update_intremap_entry_from_ioapic( int bdf, struct amd_iommu *iommu, struct IO_APIC_route_entry *rte, - bool_t lo_update, u16 *index) { unsigned long flags; @@ -315,31 +309,6 @@ static int update_intremap_entry_from_ioapic( spin_lock(lock); } =20 - if ( fresh ) - /* nothing */; - else if ( !lo_update ) - { - /* - * Low half of incoming RTE is already in remapped format, - * so need to recover vector and delivery mode from IRTE. - */ - ASSERT(get_rte_index(rte) =3D=3D offset); - if ( iommu->ctrl.ga_en ) - vector =3D entry.ptr128->full.vector; - else - vector =3D entry.ptr32->flds.vector; - /* The IntType fields match for both formats. */ - delivery_mode =3D entry.ptr32->flds.int_type; - } - else if ( x2apic_enabled ) - { - /* - * High half of incoming RTE was read from the I/O APIC and hence = may - * not hold the full destination, so need to recover full destinat= ion - * from IRTE. - */ - dest =3D get_full_dest(entry.ptr128); - } update_intremap_entry(iommu, entry, vector, delivery_mode, dest_mode, = dest); =20 spin_unlock_irqrestore(lock, flags); @@ -350,14 +319,11 @@ static int update_intremap_entry_from_ioapic( } =20 void cf_check amd_iommu_ioapic_update_ire( - unsigned int apic, unsigned int reg, unsigned int value) + unsigned int apic, unsigned int pin, uint64_t raw) { struct IO_APIC_route_entry old_rte =3D { }; - struct IO_APIC_route_entry new_rte =3D { }; - unsigned int rte_lo =3D (reg & 1) ? reg - 1 : reg; - unsigned int pin =3D (reg - 0x10) / 2; + struct IO_APIC_route_entry new_rte =3D { .raw =3D raw }; int seg, bdf, rc; - bool saved_mask, fresh =3D false; struct amd_iommu *iommu; unsigned int idx; =20 @@ -373,58 +339,23 @@ void cf_check amd_iommu_ioapic_update_ire( { AMD_IOMMU_WARN("failed to find IOMMU for IO-APIC @ %04x:%04x\n", seg, bdf); - __io_apic_write(apic, reg, value); + __ioapic_write_entry(apic, pin, true, new_rte); return; } =20 - /* save io-apic rte lower 32 bits */ - *((u32 *)&old_rte) =3D __io_apic_read(apic, rte_lo); - saved_mask =3D old_rte.mask; - - if ( reg =3D=3D rte_lo ) - { - *((u32 *)&new_rte) =3D value; - /* read upper 32 bits from io-apic rte */ - *(((u32 *)&new_rte) + 1) =3D __io_apic_read(apic, reg + 1); - } - else - { - *((u32 *)&new_rte) =3D *((u32 *)&old_rte); - *(((u32 *)&new_rte) + 1) =3D value; - } - - if ( ioapic_sbdf[idx].pin_2_idx[pin] >=3D INTREMAP_MAX_ENTRIES ) - { - ASSERT(saved_mask); - - /* - * There's nowhere except the IRTE to store a full 32-bit destinat= ion, - * so we may not bypass entry allocation and updating of the low R= TE - * half in the (usual) case of the high RTE half getting written f= irst. - */ - if ( new_rte.mask && !x2apic_enabled ) - { - __io_apic_write(apic, reg, value); - return; - } - - fresh =3D true; - } - + old_rte =3D __ioapic_read_entry(apic, pin, true); /* mask the interrupt while we change the intremap table */ - if ( !saved_mask ) + if ( !old_rte.mask ) { old_rte.mask =3D 1; - __io_apic_write(apic, rte_lo, *((u32 *)&old_rte)); + __ioapic_write_entry(apic, pin, true, old_rte); } =20 /* Update interrupt remapping entry */ rc =3D update_intremap_entry_from_ioapic( - bdf, iommu, &new_rte, reg =3D=3D rte_lo, + bdf, iommu, &new_rte, &ioapic_sbdf[idx].pin_2_idx[pin]); =20 - __io_apic_write(apic, reg, ((u32 *)&new_rte)[reg !=3D rte_lo]); - if ( rc ) { /* Keep the entry masked. */ @@ -433,20 +364,7 @@ void cf_check amd_iommu_ioapic_update_ire( return; } =20 - /* For lower bits access, return directly to avoid double writes */ - if ( reg =3D=3D rte_lo ) - return; - - /* - * Unmask the interrupt after we have updated the intremap table. Also - * write the low half if a fresh entry was allocated for a high half - * update in x2APIC mode. - */ - if ( !saved_mask || (x2apic_enabled && fresh) ) - { - old_rte.mask =3D saved_mask; - __io_apic_write(apic, rte_lo, *((u32 *)&old_rte)); - } + __ioapic_write_entry(apic, pin, true, new_rte); } =20 unsigned int cf_check amd_iommu_read_ioapic_from_ire( diff --git a/xen/drivers/passthrough/vtd/extern.h b/xen/drivers/passthrough= /vtd/extern.h index 39602d1f88f8..032a7c3b42cd 100644 --- a/xen/drivers/passthrough/vtd/extern.h +++ b/xen/drivers/passthrough/vtd/extern.h @@ -92,7 +92,7 @@ int cf_check intel_iommu_get_reserved_device_memory( unsigned int cf_check io_apic_read_remap_rte( unsigned int apic, unsigned int reg); void cf_check io_apic_write_remap_rte( - unsigned int apic, unsigned int reg, unsigned int value); + unsigned int apic, unsigned int ioapic_pin, uint64_t raw); =20 struct msi_desc; struct msi_msg; diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrou= gh/vtd/intremap.c index 05df6d5759b1..845c180bb39c 100644 --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -328,12 +328,11 @@ static int remap_entry_to_ioapic_rte( =20 static int ioapic_rte_to_remap_entry(struct vtd_iommu *iommu, int apic, unsigned int ioapic_pin, struct IO_xAPIC_route_entry *old_rt= e, - unsigned int rte_upper, unsigned int value) + struct IO_xAPIC_route_entry new_rte) { struct iremap_entry *iremap_entry =3D NULL, *iremap_entries; - struct iremap_entry new_ire; + struct iremap_entry new_ire =3D { }; struct IO_APIC_route_remap_entry *remap_rte; - struct IO_xAPIC_route_entry new_rte; int index; unsigned long flags; bool init =3D false; @@ -364,48 +363,37 @@ static int ioapic_rte_to_remap_entry(struct vtd_iommu= *iommu, =20 new_ire =3D *iremap_entry; =20 - if ( rte_upper ) - { - if ( x2apic_enabled ) - new_ire.remap.dst =3D value; - else - new_ire.remap.dst =3D (value >> 24) << 8; - } + if ( x2apic_enabled ) + new_ire.remap.dst =3D new_rte.dest.dest32; else - { - *(((u32 *)&new_rte) + 0) =3D value; - new_ire.remap.fpd =3D 0; - new_ire.remap.dm =3D new_rte.dest_mode; - new_ire.remap.tm =3D new_rte.trigger; - new_ire.remap.dlm =3D new_rte.delivery_mode; - /* Hardware require RH =3D 1 for LPR delivery mode */ - new_ire.remap.rh =3D (new_ire.remap.dlm =3D=3D dest_LowestPrio); - new_ire.remap.avail =3D 0; - new_ire.remap.res_1 =3D 0; - new_ire.remap.vector =3D new_rte.vector; - new_ire.remap.res_2 =3D 0; - - set_ioapic_source_id(IO_APIC_ID(apic), &new_ire); - new_ire.remap.res_3 =3D 0; - new_ire.remap.res_4 =3D 0; - new_ire.remap.p =3D 1; /* finally, set present bit */ - - /* now construct new ioapic rte entry */ - remap_rte->vector =3D new_rte.vector; - remap_rte->delivery_mode =3D 0; /* has to be 0 for remap format= */ - remap_rte->index_15 =3D (index >> 15) & 0x1; - remap_rte->index_0_14 =3D index & 0x7fff; - - remap_rte->delivery_status =3D new_rte.delivery_status; - remap_rte->polarity =3D new_rte.polarity; - remap_rte->irr =3D new_rte.irr; - remap_rte->trigger =3D new_rte.trigger; - remap_rte->mask =3D new_rte.mask; - remap_rte->reserved =3D 0; - remap_rte->format =3D 1; /* indicate remap format */ - } - - update_irte(iommu, iremap_entry, &new_ire, !init); + new_ire.remap.dst =3D (new_rte.dest.dest32 >> 24) << 8; + + new_ire.remap.dm =3D new_rte.dest_mode; + new_ire.remap.tm =3D new_rte.trigger; + new_ire.remap.dlm =3D new_rte.delivery_mode; + /* Hardware require RH =3D 1 for LPR delivery mode */ + new_ire.remap.rh =3D (new_ire.remap.dlm =3D=3D dest_LowestPrio); + new_ire.remap.vector =3D new_rte.vector; + + set_ioapic_source_id(IO_APIC_ID(apic), &new_ire); + new_ire.remap.p =3D 1; /* finally, set present bit */ + + /* now construct new ioapic rte entry */ + remap_rte->vector =3D new_rte.vector; + remap_rte->delivery_mode =3D 0; /* has to be 0 for remap format */ + remap_rte->index_15 =3D (index >> 15) & 0x1; + remap_rte->index_0_14 =3D index & 0x7fff; + + remap_rte->delivery_status =3D new_rte.delivery_status; + remap_rte->polarity =3D new_rte.polarity; + remap_rte->irr =3D new_rte.irr; + remap_rte->trigger =3D new_rte.trigger; + remap_rte->mask =3D new_rte.mask; + remap_rte->reserved =3D 0; + remap_rte->format =3D 1; /* indicate remap format */ + + /* If cmpxchg16b is not available the caller must mask the IO-APIC pin= . */ + update_irte(iommu, iremap_entry, &new_ire, !init && cpu_has_cx16); iommu_sync_cache(iremap_entry, sizeof(*iremap_entry)); iommu_flush_iec_index(iommu, 0, index); =20 @@ -439,36 +427,47 @@ unsigned int cf_check io_apic_read_remap_rte( } =20 void cf_check io_apic_write_remap_rte( - unsigned int apic, unsigned int reg, unsigned int value) + unsigned int apic, unsigned int pin, uint64_t raw) { - unsigned int pin =3D (reg - 0x10) / 2; + struct IO_xAPIC_route_entry rte =3D { .raw =3D raw }; struct IO_xAPIC_route_entry old_rte =3D { }; struct IO_APIC_route_remap_entry *remap_rte; - unsigned int rte_upper =3D (reg & 1) ? 1 : 0; struct vtd_iommu *iommu =3D ioapic_to_iommu(IO_APIC_ID(apic)); - int saved_mask; - - old_rte =3D __ioapic_read_entry(apic, pin, true); + bool masked =3D true; + int rc; =20 remap_rte =3D (struct IO_APIC_route_remap_entry *) &old_rte; =20 - /* mask the interrupt while we change the intremap table */ - saved_mask =3D remap_rte->mask; - remap_rte->mask =3D 1; - __io_apic_write(apic, reg & ~1, *(u32 *)&old_rte); - remap_rte->mask =3D saved_mask; - - if ( ioapic_rte_to_remap_entry(iommu, apic, pin, - &old_rte, rte_upper, value) ) + if ( !cpu_has_cx16 ) { - __io_apic_write(apic, reg, value); + /* + * Cannot atomically update the IRTE entry: mask the IO-APIC pin to + * avoid interrupts seeing an inconsistent IRTE entry. + */ + old_rte =3D __ioapic_read_entry(apic, pin, true); + if ( !old_rte.mask ) + { + masked =3D false; + old_rte.mask =3D 1; + __ioapic_write_entry(apic, pin, true, old_rte); + } + } =20 - /* Recover the original value of 'mask' bit */ - if ( rte_upper ) - __io_apic_write(apic, reg & ~1, *(u32 *)&old_rte); + rc =3D ioapic_rte_to_remap_entry(iommu, apic, pin, &old_rte, rte); + if ( rc ) + { + if ( !masked ) + { + /* Recover the original value of 'mask' bit */ + old_rte.mask =3D 0; + __ioapic_write_entry(apic, pin, true, old_rte); + } + dprintk(XENLOG_ERR VTDPREFIX, + "failed to update IRTE for IO-APIC#%u pin %u: %d\n", + apic, pin, rc); + return; } - else - __ioapic_write_entry(apic, pin, true, old_rte); + __ioapic_write_entry(apic, pin, true, old_rte); } =20 static void set_msi_source_id(struct pci_dev *pdev, struct iremap_entry *i= re) diff --git a/xen/drivers/passthrough/x86/iommu.c b/xen/drivers/passthrough/= x86/iommu.c index be71a4c4641c..d290855959f2 100644 --- a/xen/drivers/passthrough/x86/iommu.c +++ b/xen/drivers/passthrough/x86/iommu.c @@ -158,9 +158,9 @@ int iommu_enable_x2apic(void) } =20 void iommu_update_ire_from_apic( - unsigned int apic, unsigned int reg, unsigned int value) + unsigned int apic, unsigned int pin, uint64_t rte) { - iommu_vcall(&iommu_ops, update_ire_from_apic, apic, reg, value); + iommu_vcall(&iommu_ops, update_ire_from_apic, apic, pin, rte); } =20 unsigned int iommu_read_apic_from_ire(unsigned int apic, unsigned int reg) diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h index 405db59971c5..9335cd074cff 100644 --- a/xen/include/xen/iommu.h +++ b/xen/include/xen/iommu.h @@ -278,7 +278,8 @@ struct iommu_ops { int (*enable_x2apic)(void); void (*disable_x2apic)(void); =20 - void (*update_ire_from_apic)(unsigned int apic, unsigned int reg, unsi= gned int value); + void (*update_ire_from_apic)(unsigned int apic, unsigned int pin, + uint64_t rte); unsigned int (*read_apic_from_ire)(unsigned int apic, unsigned int reg= ); =20 int (*setup_hpet_msi)(struct msi_desc *); --=20 2.41.0 From nobody Sun Feb 8 23:10:52 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=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689684292; cv=none; d=zohomail.com; s=zohoarc; b=mUnb7NkMTU78GXwgF+N1pIXYG2rjxTNga5V+9u3cvKz3+opv9lMvxV3Tbm0Oh4du6mC1rb68ePziUS19mUmUYqpzh/XHBa3Z6KJNeHcnApfj8HHg7P8/Hqdaq5AqNTZ231nvpoQyeoTrS3LG7Xm/Jtcch4a2rBGU+p6R+V52Tv8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689684292; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8iXg4dFK7b5fi2DFIu2Ng5SgE/oKjRZe5KO1fq6oWYI=; b=kry/JMVcUl/biFQmCkJ+0RGmC+RzgaV2EFlnxiBDmULoCwGaSCwnoc6+j/17bOj9+M/SZMDNL8nDRDCgEj5CBaXcHJ7DC7+7MTJNgJ6jMn9zgGi9ykxXvEa0B3veFVap47ITu7JSzjsL9+zOPi4TIP7vZ7OUxzOx1TV3YsfuTsU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689684292687730.8108884378485; Tue, 18 Jul 2023 05:44:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.565179.883121 (Exim 4.92) (envelope-from ) id 1qLk42-0003j0-Te; Tue, 18 Jul 2023 12:44:26 +0000 Received: by outflank-mailman (output) from mailman id 565179.883121; Tue, 18 Jul 2023 12:44:26 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qLk42-0003ir-PV; Tue, 18 Jul 2023 12:44:26 +0000 Received: by outflank-mailman (input) for mailman id 565179; Tue, 18 Jul 2023 12:44:26 +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 1qLk41-0002IP-Ur for xen-devel@lists.xenproject.org; Tue, 18 Jul 2023 12:44:26 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id d1ffebea-2568-11ee-8611-37d641c3527e; Tue, 18 Jul 2023 14:44:23 +0200 (CEST) Received: from mail-bn8nam11lp2169.outbound.protection.outlook.com (HELO NAM11-BN8-obe.outbound.protection.outlook.com) ([104.47.58.169]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 18 Jul 2023 08:44:21 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by CO6PR03MB6228.namprd03.prod.outlook.com (2603:10b6:5:35c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.31; Tue, 18 Jul 2023 12:44:18 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::38aa:4814:3c7b:78ea%5]) with mapi id 15.20.6588.031; Tue, 18 Jul 2023 12:44:18 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: d1ffebea-2568-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689684263; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=hCgfqa99aIjybw0r0e16yWne8XxslcvUQBLlF7gjjSw=; b=QcYIFx4bjvPso54iDLpBPR2JYJX9wqvU5zDTojwqdBn/DPNqeuJdAGaS ztsAEl+cPoJcP0dgYkEVdqdIGp/ABoySOSHEEeyNuMMzwIlESqISWhUOp yBf6MOSWcJQijXfomONo9uu8LV9lomMrJQhomnhO20UPmVKoScrJ1ZmzP I=; X-IronPort-RemoteIP: 104.47.58.169 X-IronPort-MID: 115292242 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:jKGBsqKlsknkD1m0FE+Rw5QlxSXFcZb7ZxGr2PjKsXjdYENS1mNTy 2cZC2+Haf+NMGXyeNx3OYrk804H6sDQyIVkQAplqX01Q3x08seUXt7xwmUcnc+xBpaaEB84t ZV2hv3odp1coqr0/0/1WlTZhSAgk/rOHvykU7Ss1hlZHWdMUD0mhQ9oh9k3i4tphcnRKw6Ws Jb5rta31GWNglaYCUpKrfrawP9TlK6q4mhA4QVuPaojUGL2zBH5MrpOfcldEFOgKmVkNrbSb /rOyri/4lTY838FYj9yuu+mGqGiaue60Tmm0hK6aYD76vRxjnVaPpIAHOgdcS9qZwChxLid/ jnvWauYEm/FNoWU8AgUvoIx/ytWZcWq85efSZSzXFD6I+QrvBIAzt03ZHzaM7H09c4pXF0U8 foVdAkgMDzehf7rh7C+aNFz05FLwMnDZOvzu1lG5BSAVLMMZ8CGRK/Ho9hFwD03m8ZCW+7EY NYUYiZuaxKGZABTPlAQC9Q1m+LAanvXKmUE7g7K4/dnpTGNnWSd05C0WDbRUsaNSshP2F6Ru 0rN/njjAwFcP9uaodaA2iv127Wex3mnAur+EpW82a5OxwadxFY+IzImU1eqvNCJpGGhDoc3x 0s8v3BGQbIJ3FymSJzxUgO1pFaAvwUAQJxAHusi8gaPx6HIpQGDCQAsTDRMddgnv88eXiEx2 xmCmNaBONB0mLicSHbY/LHEqzq3YHERNTVbO35CShYZ6d7+po11lgjIUttoDK+yiJvyBC30x DeJ6iM5gt3/kPI26klyxnif6xrEm3QDZlddCtn/No590j5EWQ== IronPort-HdrOrdr: A9a23:niYq6qodJNnauVOIbxYIdX0aV5oUeYIsimQD101hICG9E/bo9f xG+c5xvyMc5wx9ZJheo6HmBEDtex/hHOdOj7X5ZI3MYCDDmE+FaL5P1rHD5RqIIVyaygc+79 YFT0EWMrSZMbEdt6bHCWKDYrUdKbe8kZxAjN2uqUtQcQ== X-Talos-CUID: 9a23:vEr0b2734+aYBOUAoNssqhMoQMQjfyHk4Sn8fk2kVCFrTZ+tVgrF X-Talos-MUID: =?us-ascii?q?9a23=3AnGZT8g1GLnLlsU9jU3Of97iY8zUj54v+LAdWn5c?= =?us-ascii?q?8luKrBSp8Kiq0vBqYXdpy?= X-IronPort-AV: E=Sophos;i="6.01,214,1684814400"; d="scan'208";a="115292242" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mrOrcUCYGgBITWqHb5MiO8D2RjiZ5/TAPwfSdBLIEwGKXixFnAKbKXudDro36liAZ29023xrAKC1m9dXmYn6tzrlD8+YSPDyQqxPDLvy9I/MlIkQkPk8cXtsS+UVP7zBvM1B8Uq123bdjEgtI8bxiVufm/pRuWxzLgz6WNqpKMeM3RHdnK9OrLFScapI/tlR5+BO+6+V56Qkvf4DkAjUG8uFCOkj4lnyvkM1n3utw5qBdtyq+qwO4wFW25RtJofslftmR/VKkhCbAvT3+g88wwbpOpi1OQ6zBfoYCNUANSHoz/uSj0RJOAS+kyhdbZ8KocQgLp7HGMIWUaToVz4FjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8iXg4dFK7b5fi2DFIu2Ng5SgE/oKjRZe5KO1fq6oWYI=; b=coNzYb5K0WPWz2eAI7Ay9BiCljd6BE+BUCjMAAEg4AS0qewq6aziMeF2KC/FcAuhPEk9+iHe94v09jbQZrMC5w13RRAI/wAcB+FCEKTeM0OvoZ4gEkcTNYksD3XovzuuOdI3z1leXLAfCkNWUeBYoNU/R06U9EQ7FR4jpq9wElJro5KGmeNpodlPjdITOQ+FL4wnl0CmaS1B1Gn/D/KPiKYZYpHwspdj+LBmkkMpLF9bdoizUJOBoiL8w9I3OfbSxORVn/a0ocLa8jgrO7HKLomBFmk74zoUTA24raWFVf53diXeDy3/Hj6F+6zgEURQo00SEzVmndY1hBNoiVQoWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8iXg4dFK7b5fi2DFIu2Ng5SgE/oKjRZe5KO1fq6oWYI=; b=plRniVmTRIOYiv0yfZQQ/j9If6juZ1dD2hW2A4fXREBNCgiHAiGHALTXaeKu9+Mx/A+TWp/YMScJ5rHiaW6K/4xcCY75/0TxIoELKs493aDh3BjccX8aEO2ZnM9AuVGHZM0ErG/156YYJ76zOa+06RUmfW8o7Tqb1XmLg4Cafxs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Jan Beulich , Andrew Cooper Subject: [PATCH v2 5/5] amd/iommu: force atomic updates of remapping entries Date: Tue, 18 Jul 2023 14:43:34 +0200 Message-ID: <20230718124334.36548-6-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230718124334.36548-1-roger.pau@citrix.com> References: <20230718124334.36548-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0685.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:37b::8) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|CO6PR03MB6228:EE_ X-MS-Office365-Filtering-Correlation-Id: 42d1e4a2-5383-4753-9cc3-08db878cb3c8 X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr,ExtFwd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: clir5641M7Bu5qwJaOwC4H5kakyPAq9Gww7UN9bRviMzNt2Kp36CAefGRyuZeZpITBnN3hHJLyaU3CDb+6W4sh3tLt4hgd7z97mfRTo0kkMipnAxQxBJ+AxSgePYQxCCYA2RpRgTm82UMtV3DU4jzr5mKmH/0L1bObFNsV87untf/8Q8arwbZE6DvWpKvpuRLBQXnI1e6n3/p/+iktDuA49pGf4gGVavsO27lRWYJCxKJJ8jgOSb7reBjub+Twr+DWTnDd0LOovhQimnRvHjv2JeaX5aRKiQAuG5arXfMzNKIjSXhfutwGjWyqfXU88gcc8XcHS4HD2H6xnr6N6JGnA/CZkRtXHyXFpswoK/Vuvw6U0zZrqoDNOrC0mDM4iNLEVoTYm4LpK8UMcz4kdKR49PgGP4o06okdgmuqjEOAgY03ugNgp+CqN8hM5ZejGlbclKtQwGJspgWjTL9efUtxEBhuUdialg7Nf7NSItaaQQlO3jyyXmq7NU4xezT3i9p2ygLspc7T+J5GRd9/oPUVjg9lEqBWBub6ReqAaPhMdTAIZvZPHw4kzAPMT1ylQa X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(366004)(346002)(396003)(136003)(376002)(451199021)(54906003)(478600001)(6506007)(26005)(186003)(1076003)(107886003)(6486002)(6666004)(6512007)(2616005)(83380400001)(15650500001)(5660300002)(86362001)(38100700002)(8676002)(8936002)(41300700001)(82960400001)(4326008)(6916009)(316002)(2906002)(36756003)(66946007)(66556008)(66476007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NVZWNm9JTTArOXRDbmwxdnQzMDlXMUJhZ1RXaDJvNHNJeGtsTmliWXRQbVFK?= =?utf-8?B?bStQaUw1cjlMNHQ1UGFxcmJMTWJGQjhSaFFhK3l5V1g2RCtUa29KNXc0dEJX?= =?utf-8?B?NTFXSFV3bzVvUjlGOUNlTkJpNFY3Q2FWTzNRY3JqZ3pJdGtxTUFGNWMwVFpE?= =?utf-8?B?WGhXNG5hVlpSSGplbkRZcFp0Q3daOFFmVTM1dnpiUVFlM0ZyWXl0VGN3UHo3?= =?utf-8?B?K0FTVlJ6bytCZzY3a1ZXbDJaa0M3cDVuMURvOWRSeEtZWGV6SnpaQjlUdGl6?= =?utf-8?B?RGdRTGVmejQ0eFV4L3lsSm1uR3RSYS9PYm5XOWhONTlzTUdURXFGWkNWYnVX?= =?utf-8?B?cTFucFBsYnhJOVVzT0dXR041SWUyYklXUk53QXozOFhjTGlFeWNNMGR6TzFX?= =?utf-8?B?clNZWlFZT1VmMHpwRm1pL2xrRHgvdG9tdzZDQ0tHbEVGUUZLTkxpUDBPTFZl?= =?utf-8?B?dzVtRWdyRXNWSGtHVFI1Y0tPYUh3L25TUlZaWDhSL2VPaERtUVl3STgvRW4r?= =?utf-8?B?TWlscm5yN1ZjK2x2YU11WWIrVnJmNWQrQjRjaU0yaXk1SXVpYXYxcGMxV0Z5?= =?utf-8?B?N05vVjkrUk5yRllTZERWY3kya0pURDg3V04yMDNGbnJwMzFHRHBIYkdndHpx?= =?utf-8?B?K3oyQlNVaGkzTExzdE4wQzdCRzEzVnVIS0tnb3o0R1RIRlJJV1YrTUVoZnB0?= =?utf-8?B?aXlsOW1sSk16Mlg3Nll4aUVnNzUveldOaGh2SVkzTkRza0FJMVFCRTEzZysz?= =?utf-8?B?bzM2dTFNejJUSjRiTG42cmdnUUdOY0FWbGJ6ckVaZDZHMmV6NVA0ei9iVThK?= =?utf-8?B?Z2VSSFZGYlY3bkQzaVBPdFpHV0ZObW1qaytGT2UzekJSc1Q1dWMxT3VSbXF0?= =?utf-8?B?UGNHU0VhTFNBTDZWUzFhdTFjSUFwZk1tQnZSQjVpTTlVZ3lkY0ZKTGZCb2VN?= =?utf-8?B?OVdaejM0OTFBTEUwQjcwdCs3S2s2bHN3MnNGaStQR1BXVVA2dTNjQW5oM2l5?= =?utf-8?B?Z0RTdzAwSEpHSkR2ODkzYWxZMW1iRCsrU1l4SmZSQlR0UU5hSzdVV2xpM1hi?= =?utf-8?B?L21IVk00R09sL2FRMGdSOW5OM0xHSCt5WmNrOHVoN2Y3YnNwcHc4VnNLTmJu?= =?utf-8?B?NWNwYjlPOE85Z0J3QkI3Z0J1cHNtUUpCaUhGZDdSbHU0SS9Sd1BhY1F6WDZZ?= =?utf-8?B?d1RLWGxPL3JtNlZTL2xRS3RJY09Wa2RENHZFR29WUTh2R1lXNUNPSzl1Qk1p?= =?utf-8?B?L1FCdEhOYUxpNUdORklXYWx3dUw5ZXdVRkZqR3NhU0hVWGFZY1RLb28xVnQ4?= =?utf-8?B?YkdWRlFKVnBaSTk1OGRoQmkrUndBSG5iakl2UmtlMU1ZeXZ0NEhVUFhNbnFK?= =?utf-8?B?TXM5UkM1SEJKZC8rUk42L1RFRmM4NHpoNnpzdFl6ckZZaGJLeDdOK1ZRSTR6?= =?utf-8?B?dW9UR2k2WlNWWnZpSTRRenZ6SXZKSTFXRFh6Mis1akovdjJhTkoyblZOZzc4?= =?utf-8?B?Q1E1UjVNdFkybDZOeGJYUThZNzl4c1FSckl1SGI5TlR4TVlBVTJEM2h3ZHI1?= =?utf-8?B?VDFlUERNaEtkYXYxUTNJOXJhNnVmMVZublRVUHdxVTJtcko3TDZ2SHViQzly?= =?utf-8?B?ankrS2VRQjdkTFBjaS9GUHRaU05UODVjS01hVy9HNmtGVUxkTDN3M2lHLzBx?= =?utf-8?B?czFqTCtvdXV4R0ZRNUwwSkdSY09iK3c3elFLaVN1VDRiQis0UU1YMjRHOXk3?= =?utf-8?B?TXZKNEUvNm9obmdWT2Q4b2MyNnBiQkQ1R3JTcUpZVTR5NjM4RlNITnhpMGR3?= =?utf-8?B?aUJqMi82cis0WjNsVHpBUTFLOWc3TGM5U2hSeTJyQjF3Z3NWTDVESThmY3pn?= =?utf-8?B?SHRiKzNrd214cTVmcjBCQ1ZUYThEcnNvM0JFR2tqTVFmUWZyeGhRRDRFUFl3?= =?utf-8?B?YkNHdG1QamdpTzlmZ1dKMkxXTlNGSlB0cE9vcUpBT3h1d3ZaczNDM1RpU0c1?= =?utf-8?B?c2dLTSsxU0dzWEhtSGNCNENNTXVZa1FwM0VSQzBRK2JteFpoQ1JLQkF0UlhS?= =?utf-8?B?czNZNUVHTzRPRG4wc2EvSGFmRzBHSW1KRWpmcFhMQ09Ia05vV1hoSkJvWnY3?= =?utf-8?B?YW8xT29PUzRra3R0c3BFU3VVcmtkSGdiQlBmUm4zUm4vbGRSelpiSDIxYzIr?= =?utf-8?B?Tmc9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: wvlfKmZZLOhhzHWXhkliD2b8FhziqGWK2ua6YTuVUptXUVONI6LM553JhZRH5bDrsBEMRhmjKu5rkyzpaolCUuPUZdMol0mSsO9AYYfkKCDHwSvvwxM1X3tvO5luCseP03AZJ8B7TadTtjIKr86IPtwKkwSsOrno7WiM9MXwxabW+07qtX+YOV6/sTlKxe6ACKT72zvVIT34VbBoyVt9T8pVCg0XZp/66PDFjaGa9BeDTxzn8TXnbFw2FA8/vQ8I112F5DOhim03s02yULkXQvofIj29Esa6c6bYTJoDDVAUfDcPd+PyZ9Rr6LHMoFXJgl3C9JK3MTNIkqqPz86MmJWdEpfnDE9qFVXoPGEhpQEBd16L4Iwhcx4GMCZwAI793NF8DIcr5P+WSVkXB8WGmAFYy5E2R4qA9WdPXTIRyiGLSawyPCEijZXoftW/8rBedki4NGlOTIFDXIEVbQ9siPvAcyNa9xgku31Vg0JPvynEAx9OQ/G5GJC3M1SF8uqvYHIGC3P4KlIlGAjeh7OiczcdR7WxdVyTcKm0B7RWM3h8OZ/+4tDsi93DomRJR/9RNeoiw/OK6/J3SBhBqlKucd7PvN0XeDWEeEFZ+WnZ90h5WBruYd+G2FFyXrMtabbnbXYjvmQ1x2axpwzpt38ik9Op9LLPNFpCZ/hx0DgQl77ksmjfdlK2cQlaWA661NcB/MUP9Iobvq3lVBleyB+zZP6p4VuJ8nZw4j8tpFKItf8s7+tBYszr1Ee9vIjl/5u59LQ9diQNVCiCXHqpqAlYSnwUofRqxWeIq9nni9yU3M29MvPOeDxxl9uf/E+ldqGC X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 42d1e4a2-5383-4753-9cc3-08db878cb3c8 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2023 12:44:18.6826 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: w6uYqf8IyT1/1AJPsvGibuxokpUwa2CnxY6hWhs9al6d2roggPrMYsqEZGGVoujtBGerwxkBOVYw1zrpqMWWZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR03MB6228 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689684294912100001 Disable XT (x2APIC) support and thus 128 IRTE entries if cmpxchg16b is not available, do so in order to avoid having to disable the IRTE (and possibly loose interrupts) when updating the entry. Note this also removes the usage of a while loop in order to disable the entry, since RemapEn is no longer toggled when updating. Signed-off-by: Roger Pau Monn=C3=A9 --- x2APIC support was added late enough on AMD that CPUs that I believe all models that have x2APIC must also have CX16. The AMD-Vi manual contains the following advice in the "2.3.2 Making Guest Interrupt Virtualization Changes" section: """ If RemapEn=3D1 before the change, the following steps may be followed to change interrupt virtualization information: * Set RemapEn=3D0 in the entry to disable interrupt virtualization; device-initiated interrupt requests for the DeviceID and vector are processed as IO_PAGE_FAULT events. * Update the fields in the IRTE and invalidate the interrupt table (see Section 2.4.5 [INVALIDATE_INTERRUPT_TABLE]). * Set RemapEn=3D1 to virtualize interrupts from the device. """ However if the update of the IRTE is done atomically I assume that setting RemapEn=3D0 is not longer necessary, and that the INVALIDATE_INTERRUPT_TABLE command can be executed after the entry has been (atomically) updated. Note that on VT-d IRTEs always have a size of 128b, so it's not possible to use a smaller entry size if CX16 is not available in order to do atomic updates. --- xen/drivers/passthrough/amd/iommu_init.c | 10 +++++ xen/drivers/passthrough/amd/iommu_intr.c | 57 +++++++----------------- 2 files changed, 26 insertions(+), 41 deletions(-) diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthr= ough/amd/iommu_init.c index af6713d2fc02..e276856507a1 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -1417,6 +1417,16 @@ int __init amd_iommu_prepare(bool xt) has_xt =3D false; } =20 + /* + * Prevent using 128bit IRTE format if there's no support for cmpxchg1= 6b + * to update the entry atomically. + */ + if ( xt && has_xt && !cpu_has_cx16 ) + { + has_xt =3D false; + printk(XENLOG_WARNING "AMD-Vi: x2APIC not supported without CX16\n= "); + } + if ( ivhd_type !=3D ACPI_IVRS_TYPE_HARDWARE ) iommuv2_enabled =3D true; =20 diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthr= ough/amd/iommu_intr.c index bb324eb16da1..4c6122a099f2 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -39,6 +39,7 @@ union irte32 { }; =20 union irte128 { + __uint128_t raw128; uint64_t raw[2]; struct { bool remap_en:1; @@ -221,15 +222,16 @@ static void update_intremap_entry(const struct amd_io= mmu *iommu, .vector =3D vector, }, }; - - ASSERT(!entry.ptr128->full.remap_en); - entry.ptr128->raw[1] =3D irte.raw[1]; - /* - * High half needs to be set before low one (containing RemapEn). = See - * comment in free_intremap_entry() regarding the choice of barrie= r. + union irte128 old_irte =3D *entry.ptr128; + __uint128_t ret =3D cmpxchg16b(entry.ptr128, &old_irte, &irte); + + /* + * In the above, we use cmpxchg16 to atomically update the 128-bit + * IRTE, and the hardware cannot update the IRTE behind us, so + * the return value of cmpxchg16 should be the same as old_ire. + * This ASSERT validate it. */ - smp_wmb(); - ACCESS_ONCE(entry.ptr128->raw[0]) =3D irte.raw[0]; + ASSERT(ret =3D=3D old_irte.raw128); } else { @@ -298,21 +300,12 @@ static int update_intremap_entry_from_ioapic( =20 entry =3D get_intremap_entry(iommu, req_id, offset); =20 - /* The RemapEn fields match for all formats. */ - while ( iommu->enabled && entry.ptr32->flds.remap_en ) - { - entry.ptr32->flds.remap_en =3D false; - spin_unlock(lock); - - amd_iommu_flush_intremap(iommu, req_id); - - spin_lock(lock); - } - update_intremap_entry(iommu, entry, vector, delivery_mode, dest_mode, = dest); =20 spin_unlock_irqrestore(lock, flags); =20 + amd_iommu_flush_intremap(iommu, req_id); + set_rte_index(rte, offset); =20 return 0; @@ -321,7 +314,6 @@ static int update_intremap_entry_from_ioapic( void cf_check amd_iommu_ioapic_update_ire( unsigned int apic, unsigned int pin, uint64_t raw) { - struct IO_APIC_route_entry old_rte =3D { }; struct IO_APIC_route_entry new_rte =3D { .raw =3D raw }; int seg, bdf, rc; struct amd_iommu *iommu; @@ -343,14 +335,6 @@ void cf_check amd_iommu_ioapic_update_ire( return; } =20 - old_rte =3D __ioapic_read_entry(apic, pin, true); - /* mask the interrupt while we change the intremap table */ - if ( !old_rte.mask ) - { - old_rte.mask =3D 1; - __ioapic_write_entry(apic, pin, true, old_rte); - } - /* Update interrupt remapping entry */ rc =3D update_intremap_entry_from_ioapic( bdf, iommu, &new_rte, @@ -469,22 +453,13 @@ static int update_intremap_entry_from_msi_msg( =20 entry =3D get_intremap_entry(iommu, req_id, offset); =20 - /* The RemapEn fields match for all formats. */ - while ( iommu->enabled && entry.ptr32->flds.remap_en ) - { - entry.ptr32->flds.remap_en =3D false; - spin_unlock(lock); - - amd_iommu_flush_intremap(iommu, req_id); - if ( alias_id !=3D req_id ) - amd_iommu_flush_intremap(iommu, alias_id); - - spin_lock(lock); - } - update_intremap_entry(iommu, entry, vector, delivery_mode, dest_mode, = dest); spin_unlock_irqrestore(lock, flags); =20 + amd_iommu_flush_intremap(iommu, req_id); + if ( alias_id !=3D req_id ) + amd_iommu_flush_intremap(iommu, alias_id); + *data =3D (msg->data & ~(INTREMAP_MAX_ENTRIES - 1)) | offset; =20 /* --=20 2.41.0