From patchwork Tue Jul 2 05:52:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13718980 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1802DC3064D for ; Tue, 2 Jul 2024 05:53:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sOWRl-00083R-Fl; Tue, 02 Jul 2024 01:52:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sOWRg-00081c-3l for qemu-devel@nongnu.org; Tue, 02 Jul 2024 01:52:52 -0400 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sOWRe-0006cX-3a for qemu-devel@nongnu.org; Tue, 02 Jul 2024 01:52:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1719899571; x=1751435571; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=fcrGvIymbVDEDf72GNfFZEeTZnuVqowT/D0J4yl/qfI=; b=YZmG9asopiH5+ssWrQEECu+xMXpRjrdT8ZUe2Bzi9pN4FcpExv5HP1k3 UFZGaF7JaR8aF8QlHZye+elh4rY+PnOi3YGIA8ombq5XAAym4UwSTxBjP cyOfdXezNDkgYIAia/eTQYLtqbTt9v029LAxXuDatFJ3ZCJ66+zHlgQbd m7VpLrWe1njZzOhiaPQlc2uiAV9Eiq01cvKGPe8Gfaeqp/vOHpFR1uH1G GFKPKqGx3CurIQIv1lbiSSLLBMn/0A7quvsk30pYwgIRORaAKU2pYHx6m pxikLkKJtL/MgnOIl1L58dMFltSQsr4SMGO83iypyL0VMnYvvE2k3SBuY Q==; X-IronPort-AV: E=Sophos;i="6.09,178,1716242400"; d="scan'208";a="15715683" X-MGA-submission: MDFRmtchDG0XCPWEeqe39yVZtqV5mWR2LJSdqZuIhsluVHB9P6R992InG5svM5qi/qBcjNtncZlDXL66+wBlewlVEtUa0V3vr/IziSgx3Xn1qDY6fpI3o4XHN/8SM6KjGYL+GqDvKwokJwUg+1RXgaO0lnLK5D0sZ/y65kwRPMxObA== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jul 2024 07:52:50 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EUiQMWta4bnbe4k1z2EhGo4IHZiYV0ri1OnaGT6fK4K1GpF7wpvhs2AO3G4ATjuoe2VfOFw5V2gW/apqaDWLQY/arjaZbye0qM+NmfhnjSrOSHV8O4CgCtvMXO51FNO1xQdgvgSv3J+VVQq9eRiLOc1D0I3WkEkO1JM7N0oJUxyZuIdkhrnHJ99Xu24AFljEhFcnhnCk3pBi/KoKxzwZB4l7bN17AhyoqIu6dFBjilq63w4JCh/5F3wUdiMvdoh4g6kiW8hHRNiIIzGlPNty3z4Yw+JvCctpBmggc9r7gDTHcBeQ9jXuTVcSbbBxmk5q8mL8e1RP6noxmX/p2C5QFQ== 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=fcrGvIymbVDEDf72GNfFZEeTZnuVqowT/D0J4yl/qfI=; b=Y55cjIihjQe7WIijHGYmoaXL+XuD1EWY5ZvqiYbBQP2uzyM9yUUyEhdz/9NNckVRpikdrzlij9e8QQ2izrfxps6gLVRaElJyXIhaQ59xy6lxGQWZcbiTwEwHdqEjngGYQgUFzmJkjw1rg2L2fMNVeR6sFw8bhl9M9vYlm3CqQCPPmWhGPwf62gNnTuevD2XXy2N383jAMXuoMTI156xZLaj2F27KRPFR3SPU+JE//tPJhwOTNSJCsngzfClITxR+vvoKpA7JwjKl8gmi4aqBDrrVe4rHshHY88ryqNCIdy4aPNjswP/w9bOcCgWkjKvCDfpq9zkdQoObnXSRYUwP6g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fcrGvIymbVDEDf72GNfFZEeTZnuVqowT/D0J4yl/qfI=; b=bQW90S1217L8KB5ovFHOcc9lo61cAVYckTQeZ5hjsxb3hbnrQKdjhcPTuvPWBcW5rUpRnzGkcPu8hv2RODtYb6XiBnLj7wDBM98WriXCcjdh7hcUgeBBtfdHL5k9zvKyI8MHZYeIdtbYmIfYHIk+PxlfZLZDXHqxkDa1UX2lP2VTzPhD6y4e9TNZkRHP6OL034whGozb9b/WskADAs/6UOH2lYbNtf3JM//iD+GKYChX4ayloDBzDUlSQmr+7NeukMboqrXwvzz460K9W02DWscpgB76IJvNJe6zWJcF+W940OyxZX8t9zN/vZXFhh50UqGS/SJ6cA9Vidvs7ow9RA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AM7PR07MB6215.eurprd07.prod.outlook.com (2603:10a6:20b:13d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.21; Tue, 2 Jul 2024 05:52:46 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7741.017; Tue, 2 Jul 2024 05:52:46 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , "mst@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v5 22/22] intel_iommu: add support for ATS Thread-Topic: [PATCH ats_vtd v5 22/22] intel_iommu: add support for ATS Thread-Index: AQHazEQQ+8Pi8kxvokGHkqBN3Nk9bA== Date: Tue, 2 Jul 2024 05:52:46 +0000 Message-ID: <20240702055221.1337035-23-clement.mathieu--drif@eviden.com> References: <20240702055221.1337035-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240702055221.1337035-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AM7PR07MB6215:EE_ x-ms-office365-filtering-correlation-id: 3478fdd3-5434-495b-8b02-08dc9a5b3306 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?q?YhcVZ5t3BhnCJKrYdELccjUZgVZXrGD?= =?utf-8?q?7nm0C8UbT03IZwI8w3xgP/HVrqSQHS9nmWceNwQ1OfO+i/+a65aL++y9d9iVb+EF+?= =?utf-8?q?8AnF6sJtm/94FfvlJFUgYlp31VIdiZPzEd/RoLKPZ9UwSDoVKPZ5Ol0RCEVZzB2PM?= =?utf-8?q?Zz3I15j8AlZoG4DtpJxqtZD9nl0PwhAU1c9NJf3WA8YbgVldoUbrbUpKM7rHJ3mk8?= =?utf-8?q?Ap6HVtwbvendwgVhGblsN6hW/RE4i2BjFxXnu/MlJvyfS0ASELLa09nFtjKm52TZu?= =?utf-8?q?wuehTMohD/6SJMYOQcJpCviyQcVq/AxBoNi40fIkYxiUtgOvCTh/wEqh/44XgE2cH?= =?utf-8?q?91NafU0hhSDnJMBnRoTr+ShveB5j5H5a4asUgVB8wfWyhMxhhmjHoj3Se5gNYwKmP?= =?utf-8?q?yqwlHyq1IuFvLsphufwTKKLfXlopQ3XP8UlCwgpo9V5zM+RfSsX4wJ6ii9f0D650e?= =?utf-8?q?XF4NutaVr+Oh/sUg9OheIa7tYkfv5sU9pT4zyqMm+XgT7TgGjrTMyeGa6tLcfBpv6?= =?utf-8?q?oSiuAHYipTuCnsLNWTAnqkn6VALmxuIlqiZYYZvWRhzUa+9d5RasJJ3TlH7LyRGoB?= =?utf-8?q?1RRKtEcr4BV4CTUlE9S8WAhfmg1FWn2DwroFn1Y/86riiDiTpMJin9wraz0JIC2Mr?= =?utf-8?q?WsC4P+KDcZZWVIuu3B2DvZaIrkFNAIMPeHtgJ5yqL4A7RVHLE6btlXzQygD2d8xqM?= =?utf-8?q?VrcmDCfm37WZjI5dRI5QgxnhzRtdFYaoIBhANDgnZJ+Lrsi5Pxl1t9S2lhfn0gKyr?= =?utf-8?q?yx/Z69GZThEB2A0kDV2RwqbxvQ3E5fk6vEC1BXG0sFsXITuq8Bl2LwKwRBsr2twRH?= =?utf-8?q?M1VjLa8Ymya9KdAdT0J4BErKoWnPhSeg048GUOgaLoK8KkcFj9/7HhYC68N2+iQp2?= =?utf-8?q?mqRM63gN6kEhSuZpofKoaQDHrBQzcnamlthL6x+CpiIO/BSPe2m5DX8msoMBmkO/o?= =?utf-8?q?OVCo/5gUo147RcvX436GHq5dGcIzojIs8fQ3oaRKMgcOWkrd9PlFcfBuS8sv/ti/R?= =?utf-8?q?u2CaNY7ujPTnNe4oDhS34BTL/3GSCH064gb3IUq0e48p46zrkXFA2fOWAQoCJhavM?= =?utf-8?q?pRPmF468tG5/j4AljLjQPPCzxMBSHYBjezU8a/b2Z4q7geXo3TGIV/0Vcu2VVaIqS?= =?utf-8?q?zTK0x06r84ISqt0cV8sxXiQnt7Khaz2vERzds0wloQNOTXxxE3UgvVxjK0uRwD8Sm?= =?utf-8?q?BESySkANasFRqsyHv5DLll2JYfkozzl8G6ghUWPiQrPTjPQvlpoKFELt/bQ5efPLe?= =?utf-8?q?TNHLNHmL2cEP5W6cUcAZtPyAfsuaLF4JjMLTVl+5JjJUx0br6DVyOyubOEiP3Bn5a?= =?utf-8?q?wY0Muwc4A6qC98RRLeszTToAB51pUd+3zA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?YW2vZDiyuBci8/PVTI0bG+f1nSlN?= =?utf-8?q?K78GwSrhpr+hKpI8wpBa0tgDAktKnjzwAvKnGaH2xJWVjJl4eE/q1VXGY3En1MWU2?= =?utf-8?q?p2oF6nj+4I8cA0TSv7AnMUU+HcuTFZvtVrPc/g3WLpZmY/lwZXoFR2++U0fLM6m3W?= =?utf-8?q?3EaZXndSfXbQ+G9dZ1+AWy6MzVXkolaCMaEicxCbZwXNn0kgW1zSPerTX0kyZh02I?= =?utf-8?q?OqoPGb5MLYeuazuNtGrPO5CkCbZ8PLfu0C0d5FyaPXX9ft1G3gshaV/te9skc+NIO?= =?utf-8?q?l/ELjzhxGqX2V8/USTi3y59pOlI4eeyRyseTXzVsImYdxj+0vz0cBCpiBNM0ghski?= =?utf-8?q?w9deQf10CjBgPLKm2oRwuzc5ob+Bz0L6F9V9QuAr3SBGBDpAQtBArrO8nlZx20jC4?= =?utf-8?q?1qXKhZPwafoitsQC4hW1g5X1CN/3ICGUguo7Yxm3oRz6AgA6DPKcvUOBEHf5exP3a?= =?utf-8?q?JdovkC8c/IXZJNdM+8Ny4CO4SvjQ7Bn4ulfSaofpmiWCXdPdZCy/SloT7J9h/965y?= =?utf-8?q?bn2AOcid/4LZPJbWXcCZpXCJHLpqtzEYeqHAjOPDD+kSDTQm2K9OojxrTd+q3a08X?= =?utf-8?q?9kgCQdmh7hghnbLMIq4UkZuu6FQQUhrbCtCuGk3kOebFBwBFXoJwoTHhtJX7kISA8?= =?utf-8?q?5pEnjwfnNpmp/smj/WGG6MdJtRxICEpnXY5ZLXiJNWAc2uRg9qKGCcBS6WJgLT6hO?= =?utf-8?q?3A9JcJOyfnphOEO9ERnKW8yRlO7XcmKjDogD21U0kSzzgLv9awtf9sJgz2tZAvUF7?= =?utf-8?q?M/xsXE+kaD6Cy8lcw87B/BcxVGJi3vy4RDDqZMzrRyqTuIt9V62SeJEcVdPvuLB1O?= =?utf-8?q?1isoBNGOPT1oj5brS1a3xcMtSR6ZPn7bvqhSXr/yAGAFFZOc2wuQryEjzZi9+wAVv?= =?utf-8?q?i5NuQuRtwY0kNUZCOiLvBavFBzQ+vFaw0v/6GaBQC10p49hxMm+3131+oSHuwcDBw?= =?utf-8?q?3vWFcUWGUcf27p6yTlLZPiyrCJHTKR5eFBzGpzncdmFDq1FqP+FCjY8/vMymXCeyM?= =?utf-8?q?l5uDuGh37R6jvWaRtvrNVAxKdGYRB4+8bLALmo7VZs3xTof6Y88n9S8hHBQ2M5L+S?= =?utf-8?q?tyTGrcKo31lPDquAZXVjJWhSTXF0ILicuuqWT5tm2yRXn1K93qtrtq6bYhF69N5vs?= =?utf-8?q?l77+kfxmemMsIrK4vPD48Hvn+g2usxn60FyNcCUIgx3CPRVZ4schUjZNG9SPBJZIw?= =?utf-8?q?zJJokb9/oRM5AqM75VNXYA+YAb6Y4z1DGU3q+2zOcKKqoLGUKuOrWG3cCs4BH4qgK?= =?utf-8?q?rx/WAI5p8Xn4jlGymRt6wVTlJwZgqjTjuVDjRt1NlKoFVPt7FQIzX9kPefXkP5hzU?= =?utf-8?q?xIjPtxwIWtkieV1b0vT/J3fBhJPmMk0plViFv7NQDdQ1V0DiP60d67DFduVtLRA7z?= =?utf-8?q?bstpo9q44aadRQJtjqv/OtrhGQVzKTJ88uryMOB5mmlKPnx3+5HMDoJxG0yrasfGi?= =?utf-8?q?7u26RfeX2TqDJstPAB/W60UoiEXgVTqT1VoqYVIY66lHnEDFUef0oi8QZZXnBHU+w?= =?utf-8?q?6MqwFghPU42xeXXw+3wrgP2kTuoGLKAz2RCQi1/Kbg0Wq2AS28IshvY=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3478fdd3-5434-495b-8b02-08dc9a5b3306 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jul 2024 05:52:46.7992 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7d1c7785-2d8a-437d-b842-1ed5d8fbe00a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: gXXxaq/ycJBmddgUqmYtc1Fwyg5z5Kr29MJQ6ausZm2O7kg5sEm0+XtpzjsESSObK1KUjGJ6W6FgwRE18aR4hsEpAdKYCSUNgnaHxrivPDUmWVwsLQAcBTfVKxUlgCaq X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR07MB6215 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Clément Mathieu--Drif Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 75 ++++++++++++++++++++++++++++++++-- hw/i386/intel_iommu_internal.h | 1 + 2 files changed, 73 insertions(+), 3 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 9a1bce9ae2..191d7cf0a9 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5405,12 +5405,10 @@ static void vtd_report_ir_illegal_access(VTDAddressSpace *vtd_as, bool is_fpd_set = false; VTDContextEntry ce; - assert(vtd_as->pasid != PCI_NO_PASID); - /* Try out best to fetch FPD, we can't do anything more */ if (vtd_dev_to_context_entry(s, bus_n, vtd_as->devfn, &ce) == 0) { is_fpd_set = ce.lo & VTD_CONTEXT_ENTRY_FPD; - if (!is_fpd_set && s->root_scalable) { + if (!is_fpd_set && s->root_scalable && vtd_as->pasid != PCI_NO_PASID) { vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set, vtd_as->pasid); } } @@ -6041,6 +6039,75 @@ static IOMMUMemoryRegion *vtd_get_memory_region_pasid(PCIBus *bus, return &vtd_as->iommu; } +static IOMMUTLBEntry vtd_iommu_ats_do_translate(IOMMUMemoryRegion *iommu, + hwaddr addr, + IOMMUAccessFlags flags, + int iommu_idx) +{ + IOMMUTLBEntry entry; + VTDAddressSpace *vtd_as = container_of(iommu, VTDAddressSpace, iommu); + + if (vtd_is_interrupt_addr(addr)) { + vtd_report_ir_illegal_access(vtd_as, addr, flags & IOMMU_WO); + entry.iova = 0; + entry.translated_addr = 0; + entry.addr_mask = ~VTD_PAGE_MASK_4K; + entry.perm = IOMMU_NONE; + entry.pasid = PCI_NO_PASID; + } else { + entry = vtd_iommu_translate(iommu, addr, flags, iommu_idx); + } + return entry; +} + +static ssize_t vtd_iommu_ats_request_translation(IOMMUMemoryRegion *iommu, + bool priv_req, bool exec_req, + hwaddr addr, size_t length, + bool no_write, + IOMMUTLBEntry *result, + size_t result_length, + uint32_t *err_count) +{ + IOMMUAccessFlags flags = IOMMU_ACCESS_FLAG_FULL(true, !no_write, exec_req, + priv_req, false, false); + ssize_t res_index = 0; + hwaddr target_address = addr + length; + IOMMUTLBEntry entry; + + *err_count = 0; + + while ((addr < target_address) && (res_index < result_length)) { + entry = vtd_iommu_ats_do_translate(iommu, addr, flags, 0); + if (!IOMMU_TLB_ENTRY_TRANSLATION_ERROR(&entry)) { /* Translation done */ + if (no_write) { + /* The device should not use this entry for a write access */ + entry.perm &= ~IOMMU_WO; + } + /* + * 4.1.2 : Global Mapping (G) : Remapping hardware provides a value + * of 0 in this field + */ + entry.perm &= ~IOMMU_GLOBAL; + } else { + *err_count += 1; + } + result[res_index] = entry; + res_index += 1; + addr = (addr & (~entry.addr_mask)) + (entry.addr_mask + 1); + } + + /* Buffer too small */ + if (addr < target_address) { + return -ENOMEM; + } + return res_index; +} + +static uint64_t vtd_get_min_page_size(IOMMUMemoryRegion *iommu) +{ + return VTD_PAGE_SIZE; +} + static PCIIOMMUOps vtd_iommu_ops = { .get_address_space = vtd_host_dma_iommu, .get_address_space_pasid = vtd_host_dma_iommu_pasid, @@ -6246,6 +6313,8 @@ static void vtd_iommu_memory_region_class_init(ObjectClass *klass, imrc->translate = vtd_iommu_translate; imrc->notify_flag_changed = vtd_iommu_notify_flag_changed; imrc->replay = vtd_iommu_replay; + imrc->iommu_ats_request_translation = vtd_iommu_ats_request_translation; + imrc->get_min_page_size = vtd_get_min_page_size; } static const TypeInfo vtd_iommu_memory_region_info = { diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 117dc96d22..d4831522ed 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -194,6 +194,7 @@ #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_NEST (1ULL << 26) #define VTD_ECAP_SRS (1ULL << 31) +#define VTD_ECAP_NWFS (1ULL << 33) #define VTD_ECAP_PSS (19ULL << 35) #define VTD_ECAP_PASID (1ULL << 40) #define VTD_ECAP_SMTS (1ULL << 43)