From nobody Sun May 19 01:43:06 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass(p=reject dis=none) header.from=eviden.com ARC-Seal: i=2; a=rsa-sha256; t=1713801214; cv=pass; d=zohomail.com; s=zohoarc; b=fdHQeiBiL3gndg8ZlNrPi8TEXgNlAtx0ZJr5I5iVqQxjsxgSUKcp8lfyFzPfzYDrBH7bQM1sZAudw7rZRFZ8ct7or3q7tmjBouaVCi9SThx6WOZUtCVklFNa6FmdHJedYrKXPrsv+1Kmmlj2oFi+xRT6ksoS8bT8ByqZxzTuA2k= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713801214; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4cnIcDoqGHDL1Z0x70yJNdcDhiQCEDUbH698gtLc7kE=; b=Y4oFcko+OptCiucY2tfsfSeSrhw2uum0LB8vdZDhDBQ47ww6AgsGWJOfLVS3v7RyE60Pu6NME15/LqCcfLd/ZXWg1lcrZoeFZwblxQvAuVaBCA4huCHM42Lo2O/z+CH/3Z7QG/5yCtV7aF36qd9elOn8Ukh67kbYOibsj4ubvOI= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713801214393924.8174499170775; Mon, 22 Apr 2024 08:53:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ryvyZ-0007E5-6F; Mon, 22 Apr 2024 11:53:03 -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 1ryvyW-0007DJ-OM for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:00 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ryvyU-0007bi-Qv for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:00 -0400 Received: from mail-am0eur02lp2233.outbound.protection.outlook.com (HELO EUR02-AM0-obe.outbound.protection.outlook.com) ([104.47.11.233]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2024 17:52:54 +0200 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DU0PR07MB9626.eurprd07.prod.outlook.com (2603:10a6:10:31e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 15:52:52 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 15:52:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1713801179; x=1745337179; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=4cnIcDoqGHDL1Z0x70yJNdcDhiQCEDUbH698gtLc7kE=; b=nG5aTr3hJWu7UTPHJtYzEa492Z0CuuLejTThjkO5ICOgXR8Y2otbopPk 6hfigrB7bCvUDZ0B82dD4woz1qgr1HyvJRfmVTIp02AW9q5b6rTlcB+dO tsAQh8j4vP+HkLttPk7yMQsJxjlZ9zfkhqo4tlX+5senLKnv3iwgGun/O GXQuwnqsFxn3peZ+XOgXcFaA2z2W/42sLPH7uS0l4448PwtvkutvxL5qf GmnhYOfCQeMVuAD4Xe0V14JOCmX+qjXf0Eup8AYB8Awqw/Alt5v9iptbo VyCYmW6S8AibPLqVzJnn+4DtSOxnGGl72MgqZIqPFqTG8MpCcsBAh33A0 Q==; X-IronPort-AV: E=Sophos;i="6.07,220,1708383600"; d="scan'208";a="11027665" X-MGA-submission: =?us-ascii?q?MDHJ37PvaTsQTQVLnmavDLm4el/1eeDDDWgdMI?= =?us-ascii?q?/+e1wunmKBenyQowoL+MyhNQX9VzyjgXnXag8mSF3q+lURaVKmPyBafv?= =?us-ascii?q?IzUh5oJxMrfj/gFGDHCKMu5oC5z00PFXeVIak+vD4rAl2dEWlQfjGxac?= =?us-ascii?q?+EqnAqYsW0jel3psINO1K/CA=3D=3D?= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ivKfQXwGrGOigYZuFYqHhiV6InQoasJsqpn7pauYKPg3lpM8lgVUnkS80E6fAZnUaKAkbFw3ZJJxCFrAvSgNjM6YXLlr//4tsOnwIs05Ew9B0O6Mbmmb+k9hhY9i9sj/YWMPIXosu2jeWq5O2JpkBa9IP/aA7lBm2K5P8/oLRqqUrpb0Fx0Rw6SO+6AVXnj0nIRDI6rdoEMLZ/yhQojqyfEpjRYsZ07hHh1jXPA0bUEh5SlOtMNM6OJyOqrM58pgtjxuHJCUUd/xiJ08/s9GThZGvnJawdPrGEwdalKwrkqTjB2uVnfMfO19QhLyRzfO7Z3MMiR5BkVDknAdbBBMRQ== 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=4cnIcDoqGHDL1Z0x70yJNdcDhiQCEDUbH698gtLc7kE=; b=bSJ9bZuAqy5qQMdysOiOznzqh51iONcNbhhFp71a+js4LHi6rsoJ8VvIBTf91qzS10dlZBq9TasZvZiWoZH54gJC5INvqsR/cs2+h7X+96l9YIpqopzqaDKBnp6KJW6JtAR0EAA4naeKw6yqQ2vbQBnb8OUIfePDbYWDBgElUwCT6jlb+VOUxtTXnIFuYJrru1UOdwENdS+Rl927mO0/tswolLlisjDlK9RCLbjnBBJyAFQyzHpsOLBt45eqM0PnH4CicS9Lw60aw1CcacRlZpSXpAndRqeQlFRm50hkwJPKTl1os/WZ5DJzX/beyJ4GWBBd4ZlXXsEEY6hPebMHKg== 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 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH intel_iommu 1/7] intel_iommu: fix FRCD construction macro. Thread-Topic: [PATCH intel_iommu 1/7] intel_iommu: fix FRCD construction macro. Thread-Index: AQHalM0iDk6hOYr1Bkut1qmJ4l2A4Q== Date: Mon, 22 Apr 2024 15:52:52 +0000 Message-ID: <20240422155236.129179-2-clement.mathieu--drif@eviden.com> References: <20240422155236.129179-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240422155236.129179-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_|DU0PR07MB9626:EE_ x-ms-office365-filtering-correlation-id: e63b34bf-bb6b-4008-e083-08dc62e444ee x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?utf-8?B?MnJyUWZqbGJvQ1R5Vi9lTDZJT0xzV09xajh2UTE4TmIvbmRoNjFzVVZWYXN0?= =?utf-8?B?L29vcmsyaTE5Qzg5dllmSGpqUVFBL0NrZE16SnlobnMrRE1IMnlSSXE4cGtV?= =?utf-8?B?dDFjRVM4bmZKRzdkUzBCT3pQejhJd0ZRRi8zQzlNcWdMUnVqbUpEZ1ZvOGwr?= =?utf-8?B?WEFJU3pObWNjemhGOFVndnpleFlNL2EvMVROYlR1cmdyTTFXdlRvckwvS3dF?= =?utf-8?B?TjRUS096dlZQeDZYM2gvUEFhMUlOR3JOclVrYWVUNVpKaGRNMEordTV6VWU5?= =?utf-8?B?RnFHcVJUTURtTGV2NU9PYWpJSnFYajVzYS9zVlQ5VitZbllDQ2FGQ3ZXOFo2?= =?utf-8?B?WGsxd0p0bzFac3ZsWThQV2tVS0dLUWpyUnEycjJJZ1NTOGg0TUZDd2Jmc09r?= =?utf-8?B?d3M5ZEJUbXpxS29LWWxkTVNFbzAwWFByQlRzS0tQS1RQUElyN3Q4QUQ4VnpN?= =?utf-8?B?QmgvREhkeXQwTjdoM212bmNtazBVOXNqNjdXNVBVeHJQd0M5VzJ4VnRFbUVI?= =?utf-8?B?ZUJBZEJKSnJkWEFvbkg4SGZ1QUJuc0sxNkNmb2ZXelIvMWZSaXZZRklnSzBj?= =?utf-8?B?UG40cmg2L2RCY29iNTNKRXRuWThlTjIvU3QwMW1IRmdlbEVIWm1LMk5QNG8v?= =?utf-8?B?NlhrRy9CMENHWC9PM01CSmJURTg3bm9pdFRMbG1QRy91dExDSWswTEFJeitp?= =?utf-8?B?Qkt5aGdwWkx1THloZkJIdTNFTFBSeXl1U21JZXJyOEZZeER6ZVhCbzMwaDhI?= =?utf-8?B?dnlNei9rN2dCNzdwMVJkNUpkNHZheHBGaERJcGwyd1ZwSDJCem5kL3h1UFRN?= =?utf-8?B?Ni9MQVBDOEN0V1Roc1RIdVhSNExCSzA0Tll3b3NjSWJ1NkhtYVVCanliZysv?= =?utf-8?B?Z1creG9OZlE4MVMzK1pPc1F2UENadEVxVVdranpLRG9seG05SzlwZmExdTRr?= =?utf-8?B?Y2MwcXdtNnZFMHhiaVdFQ3ZwaVNzRnYwSlJpNXhUMC94YnBZaHF2VElyMGRh?= =?utf-8?B?UnJObmo1QThqbE0vRE1wU0pvMjdtVkpvZ3JTYWRWdzNPd0N4alhIa2J4R1NZ?= =?utf-8?B?dDBmUE1aOFB6YWllRll5dlJWYnhaMlBjcnQvMnd6MXFncHhnQkZQbXljU01G?= =?utf-8?B?c3IveGZLa0tVSHlIeHFjSnBmUjhjajViN1RSZTNSS0YvMzZIUzk3UW1FTDM1?= =?utf-8?B?d3RNNytUQTJNWjZZRGdlUGxKM2hLZDRmMitmbnQ0UW1mUlpZWC83UWlaSS9Z?= =?utf-8?B?ank2VnFMSWQ1TmRLK0g0ZVc4ZXdjQkZSVUtPbDEzeHFUVmFQUWkzcEh3ODFS?= =?utf-8?B?OWd6KzdHRFRQUGxRRDhvSXdkMzVKNWQzU1pyUTdyNEEwVjk1M2cxRlYzREF3?= =?utf-8?B?N3VNTG5xVEVjWFBIQWY2Q1FQendDaWZwcHEwNE05UzZGRzhCZ3lpUWpiQjFB?= =?utf-8?B?QW5abm53Q0VxaEc1Y0FVZDlRd25zak5QVVVIbjhlWGRTTWYzdEF2UThsbFFB?= =?utf-8?B?NEN3Nld3WGhucXlRcWN5NU5NZVZwY0luOU9mWTNKWDNRY01RT1RxcXlZbDc5?= =?utf-8?B?MXVMcHovaWxTQWFaUHFlZ0FMQ0wyRmJReE83bFhmR3dBNzdLZ3QzS3poazJ6?= =?utf-8?B?Tkp0RUR2S2VIL082QlljMXFyTzFxSFNpdUVnc3djTFJJSVhQYjZHVFlUeGU3?= =?utf-8?B?bkxOVVp5bUhYU1lYRVNWbERqSzAxRTY3ZjVWL3EyV2hDQ2daZ0YyalI2RkJk?= =?utf-8?B?Q1JsR09TTlJESHdBTHliZHJqZHJoR0dsM29RN3VjSHd3Yk05ckFVeURDMFlZ?= =?utf-8?B?RXdUUUdZRlhKeFQxTVJpUT09?= 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:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WWk4bkdzUnNaZHZ4MmZnZTUzellCL3dxa1hCcHpWSHhNZVNrRWxtSEI1eUwx?= =?utf-8?B?REh0WWtuSTZabEp6aE9tN2RtdzlwRGdHaHVoeXE4K0VTYnlpMzhEOTYzY05t?= =?utf-8?B?NTRCQkt3ZlNoOWpZejMrU05OM1Q1L0JrQUFpRThWWXY5SDVZTzg4OS9YaExa?= =?utf-8?B?Y0dGbC9PWVZxR1c0QWRUOFBtL0dYc0dmQ3Z2NXM1Z0xSdTQwaEtkTUhoWHFI?= =?utf-8?B?eDZrRy84dUpoMEtFKzNwd00rVkNvalQ3WHZ0MytsWFlXTWo2ZitvdHBZMFB4?= =?utf-8?B?UHNQcEZhM3VOT0srYWlmMk9JckdaNG9pZnh1V3FmQWRZNWVkVVZEOUN0SVRE?= =?utf-8?B?OXNzMFhZUTFCQ3QzMHl0MFlSYWRlcGVrQlR5ZTAxSDE0TjZ4M1ExdS8zV0Iy?= =?utf-8?B?Uitsa1FJbDlqWjFHc1Q5c2dScm9weXh5bjZuSG1yTzQvTGZwMzBFdktYM09U?= =?utf-8?B?ekZ3RHdlNXdnZ1ozT3hXb3FyMUlKYlFIa0JNM2g1T0RHRUMzMzZuU1NqcytE?= =?utf-8?B?aWpUd3g1SmwxTFlqRFBlQ2szdmZoWGk4bGY2SXVjRHpuM2xiSEgxZ1JiZ2RJ?= =?utf-8?B?RVdtaHd3VDZ5TzlVY2Exc2tVK0xHdllJd3owRFBGZ0p5MWxzZ3F3TzRURzlh?= =?utf-8?B?SmhIMWhMcGR1Rmg1RGcvbE1DL2ZZZ0FESHcwOCtDbGNKMjdHdkp3OUROOFFk?= =?utf-8?B?K2g5Q1l3U0FFM0FpQ3E2NkNhRUtPWG9LQVdPalZnN0syN1VJeWlMV2pLZXFr?= =?utf-8?B?U3o4blYvd2xBN0Z0MXdBbStBTUd1R0JSQTJvamxsSzZmTVBodHBrQkF0dnBi?= =?utf-8?B?Z2RTUUt5cGNhMlExQnRadGF4TU5ERnEyWkpKd0FyZ0ZMUVozblAxL0EvMjRt?= =?utf-8?B?b0g3Yzk2UTYrUUZnRTNSKzcxcDZwdlZSLzJSSExFeTN0SjB1eko1cnhaS2xv?= =?utf-8?B?SGhoYXFtZEtpN3FFbVVPRk5IZXgwanRqMjU4Wm1iZ1R0TGU1SXEyVDhOcTlX?= =?utf-8?B?NEd6QnA0bGN4Wi9RWTFHbmxFVzRGNVU2ZldJbXRRUHRpWWFoK0lKc3ZaWUJM?= =?utf-8?B?azdrRWY4ZTY2UGJFVXp4U1ozOFlIMFZ3SEQrOVovWVN3UXNhczFzSjVPWXlJ?= =?utf-8?B?VzJ0Sld4Y3E5RG9yOFBQc1BpZ0FDYzZ0a3pqQ3l0NncvWUFvMlFzekc5RjE2?= =?utf-8?B?enhSUml0SzBibU1ndWhDdVJRTVdTL1BHeGVCb3Vyc1d3U1BEZGFlOEVlTS9M?= =?utf-8?B?YkVmOXR0akc1ZklRRFhEVWFzeFA2NitKcGpQU21FK3pWVG56enRmOGFmZmRH?= =?utf-8?B?Zm5wZjlqdWZpalBNSzV3U0NsMnBTdWw0K2VkR2ZIWmJmYU9lcjEvRUgxUXFj?= =?utf-8?B?VlVPOGRXazNsV3ZUK0I0cGNlSlBFVENsNXkzQjBUNVNSZlU3eGFBVUFkUDIx?= =?utf-8?B?TUlHUFJVa3I5c2lKdWVBL1pvdkczYjcrc2w5SlpZT1pvUXRlbFBTNG81Sy85?= =?utf-8?B?NkNMNVpoSDNGRHU1QndlZ1NoVTgvdTZIUThkQnpDR2tRWGg4dGhQU2JSelQx?= =?utf-8?B?YXQyMUlGUWE3alB2R0wyRHg0cFBEb1lwWVZWRUZYNHhzYSthNC94S25hRlM3?= =?utf-8?B?RUlxdFpaRWN0NlhYczAyeWdkOTNBa1dCcURyeVkxTHpjWG1tL2VPL3dSNkZw?= =?utf-8?B?cko4ajhvZmtnY0tMWjVWZDNCdXRkU0RMNFlpUnd6REpmaEdhVGpRSmRpWXhw?= =?utf-8?B?Qi8weDBpZHdHMEQyendaMVJEYmxSYVlHL0RPTWFoaWFCKzJtYUR6Y2NsMmRL?= =?utf-8?B?Y012VzNUbDlrSHhiS2hGUnNpbjErYmluUEpLYmk3eElhdzVLcUlQTWszdmxq?= =?utf-8?B?cnFLU29udWV1Y0xUTmVPN3gwTmJNSUlhTFlWaDlkZmROT1BrMG9mY1d3c3dX?= =?utf-8?B?ZmhzbFdRLzUxVkdIanQ5OEpIazE0Wm5UZUdxRVpnQ3ZyOUN4S1J0T2JRa1dp?= =?utf-8?B?blhwbUdNZzBleVJHSEtvWWhIWW0rYXBHTUcycEV2WUN3YXJUU1hHY21ST2hp?= =?utf-8?B?d0R5bWc4V3A0bU83bk12RzVvbjdYMXNJRkVycEdJbk1jZ3ZBT3ZBd1R6RWFv?= =?utf-8?B?ZXEyd09mV3NLYUNkenJLemR4ZURsYzY0OWhlNUxaVFlQRVllS0hUdzh6M1BZ?= =?utf-8?Q?AZJq26Mkaj9nXZmL//z98R0=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <5561B50DE06953448E44197C645B2BB6@eurprd07.prod.outlook.com> Content-Transfer-Encoding: quoted-printable 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: e63b34bf-bb6b-4008-e083-08dc62e444ee X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2024 15:52:52.6475 (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: TqjMOYcFwf5gnZioe91//QxdTKjxsdvKMtAIAMJqYDeYyGybNAtKJi1OVKAL9JdwoRFm0O0lzPFV0imu+6HiW1ZyOuFULNeHkZJwj2FfbL1SzNAj4jrXydZAF/ZoAW8c X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR07MB9626 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @eviden.com) X-ZM-MESSAGEID: 1713801214963100001 The constant must be unsigned, otherwise the two's complement overrides the other fields when a PASID is present Signed-off-by: Cl=C3=A9ment Mathieu--Drif --- hw/i386/intel_iommu_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index f8cf99bddf..cbc4030031 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -267,7 +267,7 @@ /* For the low 64-bit of 128-bit */ #define VTD_FRCD_FI(val) ((val) & ~0xfffULL) #define VTD_FRCD_PV(val) (((val) & 0xffffULL) << 40) -#define VTD_FRCD_PP(val) (((val) & 0x1) << 31) +#define VTD_FRCD_PP(val) (((val) & 0x1ULL) << 31) #define VTD_FRCD_IR_IDX(val) (((val) & 0xffffULL) << 48) =20 /* DMA Remapping Fault Conditions */ --=20 2.44.0 From nobody Sun May 19 01:43:06 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass(p=reject dis=none) header.from=eviden.com ARC-Seal: i=2; a=rsa-sha256; t=1713801255; cv=pass; d=zohomail.com; s=zohoarc; b=IUD2ts0lOCC6tr9RpNlJYHCWX7C207/UQYMSezL3VaEqfVuEgD2rhXv4VLellPI6vI351O7Ep5Aaw8KCKrHm1IbkJ1XvzqF9V0bDjkLmyT0Uhpqhb+09UBX1JMF59RjbRf4y3go2BqfGtnPi8MOWnxWf2w+tEStQREfIYLkJfJs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713801255; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7jLCsNJx8lCeA6DFN4EYr1QUUYAosNseFTCvam9nezs=; b=Y4tKsCazN4LQwRWKSLiPtYjsRYbtVKLClAPZvzL0mHz4P0RSc0DMpL2wJ6seOy1j3q8X2gWD0I2U9UUrCd7e5R9xGQe5HfgrBiYEaTVI0/wYMskn528ELEVGLfXGay1VA4nYYfRDRRHaxKRIZaRF4iMWX7A62OAkfKgrDzlN1Z4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713801255129703.1999615866476; Mon, 22 Apr 2024 08:54:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ryvya-0007ER-8t; Mon, 22 Apr 2024 11:53:04 -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 1ryvyY-0007E4-W8 for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:03 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ryvyW-0007bS-Dd for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:02 -0400 Received: from mail-am0eur02lp2233.outbound.protection.outlook.com (HELO EUR02-AM0-obe.outbound.protection.outlook.com) ([104.47.11.233]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2024 17:52:55 +0200 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DU0PR07MB9626.eurprd07.prod.outlook.com (2603:10a6:10:31e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 15:52:53 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 15:52:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1713801180; x=1745337180; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=7jLCsNJx8lCeA6DFN4EYr1QUUYAosNseFTCvam9nezs=; b=gDHE7T5K/kWrOBQcu55qalsLhgsxX/vX6DocqpiaXOg6vhlOYCMUYVbc 1+64VMH8O1ZvgNRzeEVypETLxAr32Iw4sbIx7pWDpvBCW6ZC2vCOQUqWs dgf81DhGS9LpwyYHIafDofK3KxegnlgJ4mkVLMZ5zzM4rkwu2xgaCv3NA 1VIWVZ229zKJayz1nOGusUeSoJzc0epP5/4Bx6BOW3g/HyTxLCB2SMBZQ aXuyhjMlOQvDeaouE3GMOkjEAmusDAne0pWgxiEIItj1unPSECq7O3Rmu 8ztKRVzPaHOHgLdMHK+CbjDDh4L9oEhPpoU7z2utA10bQMW7HG2+ALskr g==; X-IronPort-AV: E=Sophos;i="6.07,220,1708383600"; d="scan'208";a="11027668" X-MGA-submission: =?us-ascii?q?MDGysoVmv6eMTPk+neONAIRBoArbk4L7AIc0Z3?= =?us-ascii?q?i814Xo2IAbw6BcDiYjmi9uZE24EkGp4JtaQZjM9lxTZqULvsvDM3RmZJ?= =?us-ascii?q?+Jx5vj5qm03+Ydu5wwlozyJeF1qn+4epWycuBgIcSVXdsElAN/BEaIJa?= =?us-ascii?q?NNlLR0TeELHDXZsxpgnHgKFQ=3D=3D?= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QtnSi4jCUjA0c7sWKilGAiQZNXd2Da7cheaqoP2bZ3F8Ap/kFs9HZiD/8Vl/b/pDbKjWHcxFjMch1cHV5ZaGa/YJh8voH4iDofRfHKi/N12Dzvpuybl0hRm4RIW1ySLk8sFdhBlKnQuCmb0k1LTknYFhmDsdWmHeRC3On1uyWVLe+K/E19y0iydgsSRWZ0oDh1H2zlfOdRVmyPJmupgb8Ili7sNuOurHTiz/xvLk9THJ7r+CpxjetP15p0FueCBTxE6FE9IPdP5j+aWbbbeQh1cY3stonroWyWQSAxJFs77gFYGfnGEgyvOuxKlgRhm+nPCzxYvwVkG5fYp2viwYIw== 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=7jLCsNJx8lCeA6DFN4EYr1QUUYAosNseFTCvam9nezs=; b=L/0gu3A9wLdo8OE6DLCzmYsdz72/kS4xYzNXEGd7HdoWYoAHyQ3G9H0mfPxeKrSq9Zv1mY4kTBzbWklt1mnzhNnO9V/tnfK/jmmEqCljgw3zUDJvJfoKMq8t8sNohWO9gU5hM3ySnGFxsN8E+zaRV7cBXDSUQO6+GNI4R2TaRla0m+DaslSR0dgR4H7rDGxSeB6D+jVV4FRJV767vA3zFX3YqdvA/Mke5LqnLdrEst4b6W4YrRrLWdtTORCZi/Omkbaw3vQ12kh+FG7cxWz2hJZeAqDMMl1vLBNlfWKJN7WAZggYKVptylA9VE13v8gqoyOBj2AYGk0lPaTbtVPiWw== 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 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH intel_iommu 2/7] intel_iommu: rename slpte to pte before adding FLTS Thread-Topic: [PATCH intel_iommu 2/7] intel_iommu: rename slpte to pte before adding FLTS Thread-Index: AQHalM0iJJ5KBZ+noku2MdxtTQSxUw== Date: Mon, 22 Apr 2024 15:52:52 +0000 Message-ID: <20240422155236.129179-3-clement.mathieu--drif@eviden.com> References: <20240422155236.129179-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240422155236.129179-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_|DU0PR07MB9626:EE_ x-ms-office365-filtering-correlation-id: 2058bd59-b70d-49d5-0223-08dc62e44522 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?utf-8?B?MDNtNTR0eVhtRFNUODZpQkVWRG5mQlVVZzgramExcW9nVHJJYjR3Y1VaYVV4?= =?utf-8?B?TGtXMjFQVUd2KzA2WGVNdW1zN01xZzZCeWtneWorLzZNcWgyem1kSXhEZzdT?= =?utf-8?B?ME1IcjVPdzlVTG9hZ3JaWHZsL0hzL0RBZFFMZGFqMkQ5MmJ1eXg1NE5Ia2xC?= =?utf-8?B?V1Y1MFMydnMyNm5EUllDOWJZREZXeWxsYmd4SktkaGVFV05xV0VKMUlFWGhm?= =?utf-8?B?SkdBSDVBOFhVVDgzbzVrWnQ3VngwK0RPZXFCbDExczdXMDBrcnlYMUZJTXUx?= =?utf-8?B?eVJSUjJHNTBsd0F3NUhWUGlwMTBDOTJYUVV6MEhmblRYQzFGNGhIR3BnSldq?= =?utf-8?B?UzROWmpTMnk1RGc0Z1RGRDI5eEtJWFgvVjEySk1ZRlM5aVp3bU52ZnhPOWN1?= =?utf-8?B?aGk4d0tOR3VFT3FuNTdxKzhOSEYrSFh3eDRsdEl6V1ZIVlcxZXdkYUNwNDFP?= =?utf-8?B?SXZac3VHamhZNTVKMDd1Ui84ekQxNmNXQk5xV21UNnJ5a0xzbVhyTVc3L3dK?= =?utf-8?B?Q1hjM2cvN3JpQXNkNytYSzIxaW5JOTBxRVNIUkhSSmdnc296S2MrRnZTQUtr?= =?utf-8?B?VmdxMEQzN2d6Q1NLQmFOTHFsZUNvcnUvQW1OMmRzN0dNdnpLOUJjcVdpRGU0?= =?utf-8?B?MXRMb2gwY0p1M3hqSWxCMndldTExTXppN0tkdzIvckdjbkVJSXJ6RzdBRGRs?= =?utf-8?B?NEQxOHlnUjh2T2hFam9lN1B1NHJSOVcyUkhhTWRaa3dtZFcyVExTMjR1UG9C?= =?utf-8?B?RGdRM0FwZ0NYOU8rOEwvR3lTVHFrWmM5TmpLUGRmbGJmOVFaRDhtSDhGRDUy?= =?utf-8?B?TFhZRFhRd0dHNkhlSkg4ODRMeXRlT2lDdVVVYy9BUVJUYTVQZzNiWUoxaHhn?= =?utf-8?B?K2lwT05iUEdHVFcxNEhPdUxzM09Rd2ZhVCtOUk1XNlV0R2dmUFJKS3dPTUFy?= =?utf-8?B?WTNJSVV2TGlUVVpMTDFJS0wyYVJLTXE2QUx6N1dpRHAyc25GWnRhMHYyWGx4?= =?utf-8?B?N3A0MmxWaHZLVjdta3Y3WDVkTEdtbFpPakd2MStvTUdIK0Z4S0h5TDczT1Fi?= =?utf-8?B?NVFVMFdjZlBjUGI0TGFFQ09QaTlHVmVzaG5waUN1NGNzbTh4NE1nR1pjdkNu?= =?utf-8?B?aCtSVzdWMmw5RFlBNkxtWjlVZi94cCthbHBlMnVzd3pDTUwwUktGb2FsOEFh?= =?utf-8?B?WWtBa0VSYlZLbUlZeVAwOFFZQnRlUjg5MmRkckFTdDFJVkJPWnBYd1BOR3NG?= =?utf-8?B?N2MvZTA3QTNJZ29tQmNaM0N0KzRkOFBKT0d5eUFYR1F2ZWxsRGo3VDB3OEQz?= =?utf-8?B?UGY3WHA5b3E2ZzUwaG95OXNMZzFSdTBBK1lhd2x3clZUUjIxUzE4VGxvenZQ?= =?utf-8?B?QjY4K1BISkVMeHhTVEI4d2dGZGFheVl2b3FwRkJtNkFvNmxMQklCa0xMdCtq?= =?utf-8?B?cE9JK0lMYXArN0JZWkRybmNxbjk3ejhTVit3aXpDRm5XVm9FbTFsaXUxa3Mx?= =?utf-8?B?Qks1VGJRRUdlbTN1ekZlOVRGNUZqRjBUcVRUTUtIYjJjNG9lc3lRQ2RmQXY1?= =?utf-8?B?dEVRWEZpL0tHMFBBOCtEZFNvdzRtbCtRWnhNdVcxMFNPMzk5amg1d3B4TWgv?= =?utf-8?B?dCs2ZjBGQXd1OUJhRDZyRUNMcVlkOS94MWhQWU5tZmJndTN2WXlCV1hVR2Jy?= =?utf-8?B?Qks2YlI2aks4UER6WCtMM3J5bkdDTG5ieXpGNnhxdngyd0RYTEk2Z09jblRZ?= =?utf-8?B?RjdraWQ4L1FpSFM1cHhrSG51ZzFEUkRWWkx6VElHd1h1amphU1Q1aWlrbGZF?= =?utf-8?B?b2k2dXUvaHNuV2NXWksrdz09?= 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:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ckNWOVVMWkhHMytzaEVmL3FEb3FYaVFoSi9Fd3VnaFpGbGJMb2ZRWmR3SUcx?= =?utf-8?B?WVBTNXYxL1pzVVZ3V2VXNmZYQUpQb2h1U2trbzFJNnNtOGhGaEpUdHVxaXpY?= =?utf-8?B?ZUtoRUZmZWRHZjBaMk9leERHb2E2aitDeUN2Si9HSmVJZThxblM2OEwyclpQ?= =?utf-8?B?blRKR05VbGpUNGhQZXJRRlJSMFBKMTU3MEJnN0xUeUNQTElQWDkveDNETFd5?= =?utf-8?B?ODcyN2xPVTEvdWZOZElQZTllZUNlY1dPTWVjVEJHYWFNZGJJU3JOaHRmVzdX?= =?utf-8?B?TUo1b2pHamNIQXRtaVJNWDdFVXplNWdzM0FpeVJ3R3Rka2c5VjRxL2ZOcmZE?= =?utf-8?B?aVpVTXJPUENJM0VjQUpQYXB4bTR1MTNBS1RnYnFFamxJb2hSd2xXS1pUcWNC?= =?utf-8?B?MEtLM0FJeVFyYU1PRmlHSnNRaXk1Ri9GaXdLWk1qV1ROYm80c0w5WkxEYkgx?= =?utf-8?B?QnEzVzM2aG9oRDJlaStGR3lQcmRIZjd1NmdiNFpaK2FFVGhLcXZCVDVNLzNX?= =?utf-8?B?QklwUGZ1T05ZN2JaOHd6bWhLZUpCV0hDU1lUdXVXN1FzQmJGYzJ4Szl2TDUz?= =?utf-8?B?bm5nVUxKWmxLNmM4WnFucVAvSmJMdFRJbXJiVWphNGlDRlRYRS9aYjhuVHFT?= =?utf-8?B?RjlVZVVHRytEWVpzeHorUW1qK1dIa2xMZTFxbW56YTJUV1VxckQ0TlNVZzQ3?= =?utf-8?B?c2w1WGI0Qk5NdHNobUFTQ2taKzEvOUJVODFTeUVZMkE2TTJ4eFZzbEFpV1VX?= =?utf-8?B?N3BzYzAxMXhZRXNsRWY3V1JkdWZDSlZtcGNQNVlRQ2dOSERjRit2a0FaUGF1?= =?utf-8?B?K2lVSlNEMWdia09sSzBNS1ErQWVPWmdKbnVNazNzYjExUm5RMHk0d0ZKWEgx?= =?utf-8?B?cmxNdVdQeXNjRFZMN3piZEdBeEhzRzBtOGFqMWpEdUNHSU5xZDcyQWMvKzBJ?= =?utf-8?B?QzJKMVFJV21hZDZsRVhjak9sTjdxcnkxVkEwSk9hVVo1SlIwdkNXSzJyaDFq?= =?utf-8?B?Mzc1SXJzWUJFMU9QZWFLMnVXemtEL1l4NWdjejlVTDZyZ0w0UmhoY1FFUHZi?= =?utf-8?B?czEza0d2Q3FNUW5FdGo2ZmJZT1VaaE1jcytTQVhLZUsrS3JUcnRsM0dNeTcx?= =?utf-8?B?ZDg0YktaaFhlYjk4cVZ5RU5DOXpRS1c0aWc3elNpUmV4Tm5tY1Rlb0U3ayt6?= =?utf-8?B?R2p3SU1WODNNZUNEQTF2NXErdnk4Wkd4cnkwVnU1V3licTFMeElSZVprV29m?= =?utf-8?B?eXBBTHFvYTgxVTlUWjZ6WCsxVDBaMXRLNWtKcUZhM1BadWFNWmt4aEVuTUFI?= =?utf-8?B?T1pFZzduUFkzOFJYVllyUmFSaWU0KzRwZFFoUFZYYW9JSCtONzFCQzNUMHVk?= =?utf-8?B?SGFkVkdrRnhMZkV6cjJqai9tZTQyRkFvRGkxeWY5ZDZjMmsxTDNDL1dlYWJF?= =?utf-8?B?UkhtK3k0UzNBN0dqSGt6SWNRWWw1dXlPOXFQUjBQN3FKUmUvMllMVXBJd1l3?= =?utf-8?B?R1RGR0tBVURhUk43M0pkYWxrcVE5Z1A1aGhzNUF3ekcrdVMvMGRkNEVSWmR1?= =?utf-8?B?WE5hUm13ZFBjajJOWWVDYUFabXhSNWQ2N2dhRmhvWHNacythV0p5RDIzS0pR?= =?utf-8?B?NTg3VkhDNDgweWlja0RWQnJ6NzNVbFVXNXVqWVNZUDc1cHBRMEg1U0VNMnpq?= =?utf-8?B?STVSLzNoNmR2UVJCQlNmRk90TzVPeW1wR1JHOXBzejJJVDBuUE94bmM5WUtD?= =?utf-8?B?NjM1ZFRSRjFnSGxqUytQZyticTZjdjFjTmNsWjgwOTRVVFhHTVNHNXhEbE5R?= =?utf-8?B?RW5LUTcyUlRqUmxNVjA3Vm9vdi9VMFpsM2lCSUhIZUZpVGlPd2EwTTlxck1V?= =?utf-8?B?NTB0VFRkeEhlck5IQ2xXcUtiVktBYS9KY2NnMTlBbDc2UVBiUmNlMmNsYzQ1?= =?utf-8?B?VnNIbXNYeURRb3RqWlhjZFlGcU5yVEFVUWdPWGtMd2lzeEdNYkJIRHZPOXlL?= =?utf-8?B?YUF0MlBublExcXlzVWlOL3hESnIzbEJIMDhXclFLajdpWWNXL2orSmJBek5S?= =?utf-8?B?NlQ4OVgwMERkMkRyL2NtN2FaNHBvbnI5Rnl3RVhXL1A5amZqQitIWjBCVUdW?= =?utf-8?B?RGg5NCs5UjZhMUYyc2JCZlhjTHBld3NiU2wzazNGUW5wUDB0ZFNkT0FLeEx0?= =?utf-8?Q?g8uoIuiTTlae/QZuxYlLNkQ=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <6A4C84B3AFBEB74B95DE316E4F3AB62B@eurprd07.prod.outlook.com> Content-Transfer-Encoding: quoted-printable 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: 2058bd59-b70d-49d5-0223-08dc62e44522 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2024 15:52:52.8866 (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: NDdhkzuJ6rrE6X9gqp3OXds6E1+xOY5Trkd+uRLuLy92HweJx09D9WhVFHRNkoIFvbk5H6jZy6x0LtDbtrw0dBQtMHO1XGyc+cY8F171NTw0CavSerFnKz8W6mf1/W+D X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR07MB9626 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @eviden.com) X-ZM-MESSAGEID: 1713801256723100005 Some variables struct fields and functions can be used for both slpte and flpte. We can modify certain identifiers to make them more generic. - slpte in IOMMUTLBEntry becomes pte and will be used for both FL and SL - VTD_SL_PT_LEVEL, VTD_SL_PT_PAGE_SIZE_MASK and VTD_SL_LEVEL_BITS can be renamed and considered as a common constants - vtd_iova_range_check becomes vtd_iova_sl_range_check because the range check depends on the translation type - vtd_do_iommu_translate now handles both FL and SL so we can rename slpte to pte - VTD_SL_PT_BASE_ADDR_MASK becomes VTD_PT_BASE_ADDR_MASK because the address offset within a 64bits word of a Scalable-Mode PASID Table Entry is the same for FL and SL. As a consequence, vtd_get_slpte_addr is also renamed to vtd_get_pte_addr. - vtd_is_last_slpte becomes vtd_is_last_slpte because the same bit is used for FL and SL. - vtd_slpt_level_page_mask becomes vtd_pt_level_page_mask - vtd_get_slpte becomes vtd_get_pte Signed-off-by: Cl=C3=A9ment Mathieu--Drif --- hw/i386/intel_iommu.c | 106 ++++++++++++++++----------------- hw/i386/intel_iommu_internal.h | 10 ++-- include/hw/i386/intel_iommu.h | 2 +- 3 files changed, 60 insertions(+), 58 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index cc8e59674e..6f1364b3fd 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -259,15 +259,15 @@ static gboolean vtd_hash_remove_by_domain(gpointer ke= y, gpointer value, } =20 /* The shift of an addr for a certain level of paging structure */ -static inline uint32_t vtd_slpt_level_shift(uint32_t level) +static inline uint32_t vtd_pt_level_shift(uint32_t level) { assert(level !=3D 0); - return VTD_PAGE_SHIFT_4K + (level - 1) * VTD_SL_LEVEL_BITS; + return VTD_PAGE_SHIFT_4K + (level - 1) * VTD_LEVEL_BITS; } =20 -static inline uint64_t vtd_slpt_level_page_mask(uint32_t level) +static inline uint64_t vtd_pt_level_page_mask(uint32_t level) { - return ~((1ULL << vtd_slpt_level_shift(level)) - 1); + return ~((1ULL << vtd_pt_level_shift(level)) - 1); } =20 static gboolean vtd_hash_remove_by_page(gpointer key, gpointer value, @@ -324,7 +324,7 @@ static void vtd_reset_caches(IntelIOMMUState *s) =20 static uint64_t vtd_get_iotlb_gfn(hwaddr addr, uint32_t level) { - return (addr & vtd_slpt_level_page_mask(level)) >> VTD_PAGE_SHIFT_4K; + return (addr & vtd_pt_level_page_mask(level)) >> VTD_PAGE_SHIFT_4K; } =20 /* Must be called with IOMMU lock held */ @@ -352,7 +352,7 @@ out: =20 /* Must be with IOMMU lock held */ static void vtd_update_iotlb(IntelIOMMUState *s, uint16_t source_id, - uint16_t domain_id, hwaddr addr, uint64_t slp= te, + uint16_t domain_id, hwaddr addr, uint64_t pte, uint8_t access_flags, uint32_t level, uint32_t pasid) { @@ -360,7 +360,7 @@ static void vtd_update_iotlb(IntelIOMMUState *s, uint16= _t source_id, struct vtd_iotlb_key *key =3D g_malloc(sizeof(*key)); uint64_t gfn =3D vtd_get_iotlb_gfn(addr, level); =20 - trace_vtd_iotlb_page_update(source_id, addr, slpte, domain_id); + trace_vtd_iotlb_page_update(source_id, addr, pte, domain_id); if (g_hash_table_size(s->iotlb) >=3D VTD_IOTLB_MAX_SIZE) { trace_vtd_iotlb_reset("iotlb exceeds size limit"); vtd_reset_iotlb_locked(s); @@ -368,9 +368,9 @@ static void vtd_update_iotlb(IntelIOMMUState *s, uint16= _t source_id, =20 entry->gfn =3D gfn; entry->domain_id =3D domain_id; - entry->slpte =3D slpte; + entry->pte =3D pte; entry->access_flags =3D access_flags; - entry->mask =3D vtd_slpt_level_page_mask(level); + entry->mask =3D vtd_pt_level_page_mask(level); entry->pasid =3D pasid; =20 key->gfn =3D gfn; @@ -685,32 +685,32 @@ static inline dma_addr_t vtd_ce_get_slpt_base(VTDCont= extEntry *ce) return ce->lo & VTD_CONTEXT_ENTRY_SLPTPTR; } =20 -static inline uint64_t vtd_get_slpte_addr(uint64_t slpte, uint8_t aw) +static inline uint64_t vtd_get_pte_addr(uint64_t pte, uint8_t aw) { - return slpte & VTD_SL_PT_BASE_ADDR_MASK(aw); + return pte & VTD_PT_BASE_ADDR_MASK(aw); } =20 /* Whether the pte indicates the address of the page frame */ -static inline bool vtd_is_last_slpte(uint64_t slpte, uint32_t level) +static inline bool vtd_is_last_pte(uint64_t pte, uint32_t level) { - return level =3D=3D VTD_SL_PT_LEVEL || (slpte & VTD_SL_PT_PAGE_SIZE_MA= SK); + return level =3D=3D VTD_COMMON_PT_LEVEL || (pte & VTD_PT_PAGE_SIZE_MAS= K); } =20 -/* Get the content of a spte located in @base_addr[@index] */ -static uint64_t vtd_get_slpte(dma_addr_t base_addr, uint32_t index) +/* Get the content of a pte located in @base_addr[@index] */ +static uint64_t vtd_get_pte(dma_addr_t base_addr, uint32_t index) { - uint64_t slpte; + uint64_t pte; =20 - assert(index < VTD_SL_PT_ENTRY_NR); + assert(index < VTD_PT_ENTRY_NR); =20 if (dma_memory_read(&address_space_memory, - base_addr + index * sizeof(slpte), - &slpte, sizeof(slpte), MEMTXATTRS_UNSPECIFIED)) { - slpte =3D (uint64_t)-1; - return slpte; + base_addr + index * sizeof(pte), + &pte, sizeof(pte), MEMTXATTRS_UNSPECIFIED)) { + pte =3D (uint64_t)-1; + return pte; } - slpte =3D le64_to_cpu(slpte); - return slpte; + pte =3D le64_to_cpu(pte); + return pte; } =20 /* Given an iova and the level of paging structure, return the offset @@ -718,8 +718,8 @@ static uint64_t vtd_get_slpte(dma_addr_t base_addr, uin= t32_t index) */ static inline uint32_t vtd_iova_level_offset(uint64_t iova, uint32_t level) { - return (iova >> vtd_slpt_level_shift(level)) & - ((1ULL << VTD_SL_LEVEL_BITS) - 1); + return (iova >> vtd_pt_level_shift(level)) & + ((1ULL << VTD_LEVEL_BITS) - 1); } =20 /* Check Capability Register to see if the @level of page-table is support= ed */ @@ -1016,7 +1016,7 @@ static inline uint64_t vtd_iova_limit(IntelIOMMUState= *s, } =20 /* Return true if IOVA passes range check, otherwise false. */ -static inline bool vtd_iova_range_check(IntelIOMMUState *s, +static inline bool vtd_iova_sl_range_check(IntelIOMMUState *s, uint64_t iova, VTDContextEntry *ce, uint8_t aw, uint32_t pasid) { @@ -1064,12 +1064,12 @@ static bool vtd_slpte_nonzero_rsvd(uint64_t slpte, = uint32_t level) assert(level < VTD_SPTE_RSVD_LEN); /* * Zero level doesn't exist. The smallest level is VTD_SL_PT_LEVEL=3D1= and - * checked by vtd_is_last_slpte(). + * checked by vtd_is_last_pte(). */ assert(level); =20 if ((level =3D=3D VTD_SL_PD_LEVEL || level =3D=3D VTD_SL_PDP_LEVEL) && - (slpte & VTD_SL_PT_PAGE_SIZE_MASK)) { + (slpte & VTD_PT_PAGE_SIZE_MASK)) { /* large page */ rsvd_mask =3D vtd_spte_rsvd_large[level]; } else { @@ -1095,7 +1095,7 @@ static int vtd_iova_to_slpte(IntelIOMMUState *s, VTDC= ontextEntry *ce, uint64_t access_right_check; uint64_t xlat, size; =20 - if (!vtd_iova_range_check(s, iova, ce, aw_bits, pasid)) { + if (!vtd_iova_sl_range_check(s, iova, ce, aw_bits, pasid)) { error_report_once("%s: detected IOVA overflow (iova=3D0x%" PRIx64 = "," "pasid=3D0x%" PRIx32 ")", __func__, iova, pasid); return -VTD_FR_ADDR_BEYOND_MGAW; @@ -1106,7 +1106,7 @@ static int vtd_iova_to_slpte(IntelIOMMUState *s, VTDC= ontextEntry *ce, =20 while (true) { offset =3D vtd_iova_level_offset(iova, level); - slpte =3D vtd_get_slpte(addr, offset); + slpte =3D vtd_get_pte(addr, offset); =20 if (slpte =3D=3D (uint64_t)-1) { error_report_once("%s: detected read error on DMAR slpte " @@ -1137,17 +1137,17 @@ static int vtd_iova_to_slpte(IntelIOMMUState *s, VT= DContextEntry *ce, return -VTD_FR_PAGING_ENTRY_RSVD; } =20 - if (vtd_is_last_slpte(slpte, level)) { + if (vtd_is_last_pte(slpte, level)) { *slptep =3D slpte; *slpte_level =3D level; break; } - addr =3D vtd_get_slpte_addr(slpte, aw_bits); + addr =3D vtd_get_pte_addr(slpte, aw_bits); level--; } =20 - xlat =3D vtd_get_slpte_addr(*slptep, aw_bits); - size =3D ~vtd_slpt_level_page_mask(level) + 1; + xlat =3D vtd_get_pte_addr(*slptep, aw_bits); + size =3D ~vtd_pt_level_page_mask(level) + 1; =20 /* * From VT-d spec 3.14: Untranslated requests and translation @@ -1298,14 +1298,14 @@ static int vtd_page_walk_level(dma_addr_t addr, uin= t64_t start, =20 trace_vtd_page_walk_level(addr, level, start, end); =20 - subpage_size =3D 1ULL << vtd_slpt_level_shift(level); - subpage_mask =3D vtd_slpt_level_page_mask(level); + subpage_size =3D 1ULL << vtd_pt_level_shift(level); + subpage_mask =3D vtd_pt_level_page_mask(level); =20 while (iova < end) { iova_next =3D (iova & subpage_mask) + subpage_size; =20 offset =3D vtd_iova_level_offset(iova, level); - slpte =3D vtd_get_slpte(addr, offset); + slpte =3D vtd_get_pte(addr, offset); =20 if (slpte =3D=3D (uint64_t)-1) { trace_vtd_page_walk_skip_read(iova, iova_next); @@ -1328,12 +1328,12 @@ static int vtd_page_walk_level(dma_addr_t addr, uin= t64_t start, */ entry_valid =3D read_cur | write_cur; =20 - if (!vtd_is_last_slpte(slpte, level) && entry_valid) { + if (!vtd_is_last_pte(slpte, level) && entry_valid) { /* * This is a valid PDE (or even bigger than PDE). We need * to walk one further level. */ - ret =3D vtd_page_walk_level(vtd_get_slpte_addr(slpte, info->aw= ), + ret =3D vtd_page_walk_level(vtd_get_pte_addr(slpte, info->aw), iova, MIN(iova_next, end), level - 1, read_cur, write_cur, info); } else { @@ -1350,7 +1350,7 @@ static int vtd_page_walk_level(dma_addr_t addr, uint6= 4_t start, event.entry.perm =3D IOMMU_ACCESS_FLAG(read_cur, write_cur); event.entry.addr_mask =3D ~subpage_mask; /* NOTE: this is only meaningful if entry_valid =3D=3D true */ - event.entry.translated_addr =3D vtd_get_slpte_addr(slpte, info= ->aw); + event.entry.translated_addr =3D vtd_get_pte_addr(slpte, info->= aw); event.type =3D event.entry.perm ? IOMMU_NOTIFIER_MAP : IOMMU_NOTIFIER_UNMAP; ret =3D vtd_page_walk_one(&event, info); @@ -1384,11 +1384,11 @@ static int vtd_page_walk(IntelIOMMUState *s, VTDCon= textEntry *ce, dma_addr_t addr =3D vtd_get_iova_pgtbl_base(s, ce, pasid); uint32_t level =3D vtd_get_iova_level(s, ce, pasid); =20 - if (!vtd_iova_range_check(s, start, ce, info->aw, pasid)) { + if (!vtd_iova_sl_range_check(s, start, ce, info->aw, pasid)) { return -VTD_FR_ADDR_BEYOND_MGAW; } =20 - if (!vtd_iova_range_check(s, end, ce, info->aw, pasid)) { + if (!vtd_iova_sl_range_check(s, end, ce, info->aw, pasid)) { /* Fix end so that it reaches the maximum */ end =3D vtd_iova_limit(s, ce, info->aw, pasid); } @@ -1869,7 +1869,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, VTDContextEntry ce; uint8_t bus_num =3D pci_bus_num(bus); VTDContextCacheEntry *cc_entry; - uint64_t slpte, page_mask; + uint64_t pte, page_mask; uint32_t level, pasid =3D vtd_as->pasid; uint16_t source_id =3D PCI_BUILD_BDF(bus_num, devfn); int ret_fr; @@ -1890,13 +1890,13 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, =20 cc_entry =3D &vtd_as->context_cache_entry; =20 - /* Try to fetch slpte form IOTLB, we don't need RID2PASID logic */ + /* Try to fetch pte form IOTLB, we don't need RID2PASID logic */ if (!rid2pasid) { iotlb_entry =3D vtd_lookup_iotlb(s, source_id, pasid, addr); if (iotlb_entry) { - trace_vtd_iotlb_page_hit(source_id, addr, iotlb_entry->slpte, + trace_vtd_iotlb_page_hit(source_id, addr, iotlb_entry->pte, iotlb_entry->domain_id); - slpte =3D iotlb_entry->slpte; + pte =3D iotlb_entry->pte; access_flags =3D iotlb_entry->access_flags; page_mask =3D iotlb_entry->mask; goto out; @@ -1968,20 +1968,20 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, return true; } =20 - /* Try to fetch slpte form IOTLB for RID2PASID slow path */ + /* Try to fetch pte form IOTLB for RID2PASID slow path */ if (rid2pasid) { iotlb_entry =3D vtd_lookup_iotlb(s, source_id, pasid, addr); if (iotlb_entry) { - trace_vtd_iotlb_page_hit(source_id, addr, iotlb_entry->slpte, + trace_vtd_iotlb_page_hit(source_id, addr, iotlb_entry->pte, iotlb_entry->domain_id); - slpte =3D iotlb_entry->slpte; + pte =3D iotlb_entry->pte; access_flags =3D iotlb_entry->access_flags; page_mask =3D iotlb_entry->mask; goto out; } } =20 - ret_fr =3D vtd_iova_to_slpte(s, &ce, addr, is_write, &slpte, &level, + ret_fr =3D vtd_iova_to_slpte(s, &ce, addr, is_write, &pte, &level, &reads, &writes, s->aw_bits, pasid); if (ret_fr) { vtd_report_fault(s, -ret_fr, is_fpd_set, source_id, @@ -1989,14 +1989,14 @@ static bool vtd_do_iommu_translate(VTDAddressSpace = *vtd_as, PCIBus *bus, goto error; } =20 - page_mask =3D vtd_slpt_level_page_mask(level); + page_mask =3D vtd_pt_level_page_mask(level); access_flags =3D IOMMU_ACCESS_FLAG(reads, writes); vtd_update_iotlb(s, source_id, vtd_get_domain_id(s, &ce, pasid), - addr, slpte, access_flags, level, pasid); + addr, pte, access_flags, level, pasid); out: vtd_iommu_unlock(s); entry->iova =3D addr & page_mask; - entry->translated_addr =3D vtd_get_slpte_addr(slpte, s->aw_bits) & pag= e_mask; + entry->translated_addr =3D vtd_get_pte_addr(pte, s->aw_bits) & page_ma= sk; entry->addr_mask =3D ~page_mask; entry->perm =3D access_flags; return true; diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index cbc4030031..8d27b1c15b 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -518,22 +518,24 @@ typedef struct VTDRootEntry VTDRootEntry; #define VTD_SM_PASID_ENTRY_SLPTPTR (~0xfffULL) =20 /* Paging Structure common */ -#define VTD_SL_PT_PAGE_SIZE_MASK (1ULL << 7) +#define VTD_SM_PASID_ENTRY_PTPTR (~0xfffULL) +#define VTD_PT_PAGE_SIZE_MASK (1ULL << 7) +#define VTD_PT_ENTRY_NR 512 +#define VTD_PT_BASE_ADDR_MASK(aw) (~(VTD_PAGE_SIZE - 1) & VTD_HAW_MASK(a= w)) +#define VTD_COMMON_PT_LEVEL 1 /* Bits to decide the offset for each level */ -#define VTD_SL_LEVEL_BITS 9 +#define VTD_LEVEL_BITS 9 =20 /* Second Level Paging Structure */ #define VTD_SL_PML4_LEVEL 4 #define VTD_SL_PDP_LEVEL 3 #define VTD_SL_PD_LEVEL 2 #define VTD_SL_PT_LEVEL 1 -#define VTD_SL_PT_ENTRY_NR 512 =20 /* Masks for Second Level Paging Entry */ #define VTD_SL_RW_MASK 3ULL #define VTD_SL_R 1ULL #define VTD_SL_W (1ULL << 1) -#define VTD_SL_PT_BASE_ADDR_MASK(aw) (~(VTD_PAGE_SIZE - 1) & VTD_HAW_MASK(= aw)) #define VTD_SL_IGN_COM 0xbff0000000000000ULL #define VTD_SL_TM (1ULL << 62) =20 diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h index 7fa0a695c8..b9a01556ec 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -152,7 +152,7 @@ struct VTDIOTLBEntry { uint64_t gfn; uint16_t domain_id; uint32_t pasid; - uint64_t slpte; + uint64_t pte; uint64_t mask; uint8_t access_flags; }; --=20 2.44.0 From nobody Sun May 19 01:43:06 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass(p=reject dis=none) header.from=eviden.com ARC-Seal: i=2; a=rsa-sha256; t=1713801262; cv=pass; d=zohomail.com; s=zohoarc; b=l1zpcOyt8z4gQJMzpCWh1TnWqpA0SPE5Gdi51XvoL4XyWg6Zld6mFZpCgUqoRrSbQCRMebxrRqbpQZZ1zzVB8IQ8yKV9k7wjNVI8aCgN7CC3m1+QyTvTfPS6dmef0N9XZDy9e5uoT83/VFWButpl4tBhQr93HgIpCsZtOBxH+t4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713801262; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ESjUTwshCUuctme6QRudtAHCmYhhHel8S50dn9oAu2A=; b=O/JdoG99CD2O42MYMf4igRtRC1Bth2CGGo3xtP31uzqH82qkMyz65m9HAHQDDNTnZJit5Zd43O+3b8eG5vMM3IxUScAUxYpkhZe+LbLPykMrhd2h8CLEiHt76fXlrqiPC1Tlpb5Qu8hT9Mph5Dc6OQtv5vGwioPuHrjXzOQ+KO8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713801262556715.8679986000224; Mon, 22 Apr 2024 08:54:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ryvya-0007EK-1e; Mon, 22 Apr 2024 11:53:04 -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 1ryvyY-0007Du-MK for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:02 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ryvyX-0007c1-2n for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:02 -0400 Received: from mail-am0eur02lp2233.outbound.protection.outlook.com (HELO EUR02-AM0-obe.outbound.protection.outlook.com) ([104.47.11.233]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2024 17:52:56 +0200 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DU0PR07MB9626.eurprd07.prod.outlook.com (2603:10a6:10:31e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 15:52:53 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 15:52:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1713801181; x=1745337181; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=ESjUTwshCUuctme6QRudtAHCmYhhHel8S50dn9oAu2A=; b=VCkuZO+mMM6DpI3hant1BUtz4V2IRrVirxXWQkCoA1o0iVe92vr7BvyD 7Y32IsGrWOopSRqz9rCJXKerHaB6M6AzWvaaSeyd4cAhAuKaGeTl8DZe8 D3zqsZJBiLxZsgPZHgK7dNhg08KnQ2ckST+TFmj9w2fhixEIFvCa1imah 4Ify0/w08rCMjaLPtGD2TEpHsH44QqDmXRdKuwC9duha+vmnIhhUOV0hH CE8oJimgVt53poLSUpfc3vt9O0EmwbLgYZQ5+0hyWwPjFRTjYr8/n8gAO mW0JnIFxYwTTt6mO2o26+snAlsOK6qhu249pylZG5VqeUvhrpWKjpUM2A Q==; X-IronPort-AV: E=Sophos;i="6.07,220,1708383600"; d="scan'208";a="11027670" X-MGA-submission: =?us-ascii?q?MDGupIHUeyu/bMr96QwLX/Qq1J7CwjAm8VM5sV?= =?us-ascii?q?Ddy8jG8FdFk5aJ86MsbbdHMq267N266hbt8emzoJ6c9TD1hlX3eYRrdD?= =?us-ascii?q?3+gQJ+53Ea2a/RjAG5wS8h3IaYptPrRlUzNLbwjjLk6fgxxY+0QJfXGe?= =?us-ascii?q?Reso7EVskhzGgKU4bWxT8RSA=3D=3D?= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lerSqTJmQpxT6BhilYqwkF3HXG0LqcLQisVXXzgLIP1/BNhQgW26OdXvIri+KdT/XY0gOaGgFZ4AqhacFwNwLI1Xu6D2KMdnvdzKFmhh3bWxIBYyW0G0DEnqoMdRTimgk5ABqMnK9+WwfqvshZkGaUeEqBgwb2Gx74XrX58/GHCGjPgMvw3XYbGk9UYr/ngLdUn6xggIs2FpZLBDFI5Rt1x87caqHRjWlig1Eb5SVpvE5dZLZ3csCBFLh5UEpqKaK3F7DS+jNOWQnLvEV/OyklUolJPH9Rz7az8kjuvH724+TypEQlaRKAqo/vWYC3aLw4ukaGU/egta7nf6E5CItA== 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=ESjUTwshCUuctme6QRudtAHCmYhhHel8S50dn9oAu2A=; b=RKrZXAF5UePnD1fqsNZFoAAAAM7fu0uiRFH53HguxjPr3UqlS8VZ+FBwmU8Fvwf3+2YbOOxuOWYIx1hOA6WVDO9Lou8rEcqXo/fUyqbFT24UOArU7HogF3ZTRWq70YRgAzO05eHHmEvar1eo0zFSMQRbdf7Nf/PcMacuvLbPnvGksbDS2LprEm1XY5RBtFJIB52WEKwiXz2WDS3SG/viPG2LOXC2OeXrU7vlRUZP2SSwxj4OvRCrLuJo2J0UWQ5hPVquCsnKQ+nAagNrGMYI79mi3iTC7fUQEmF+MxeY7q1BBWj0TKCCNVSPOJwihA7mf7RVImfy8dOJWSWi25Kpbw== 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 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH intel_iommu 3/7] intel_iommu: make types match Thread-Topic: [PATCH intel_iommu 3/7] intel_iommu: make types match Thread-Index: AQHalM0i32KNWd9K4kWnjKS4kUptSg== Date: Mon, 22 Apr 2024 15:52:53 +0000 Message-ID: <20240422155236.129179-4-clement.mathieu--drif@eviden.com> References: <20240422155236.129179-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240422155236.129179-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_|DU0PR07MB9626:EE_ x-ms-office365-filtering-correlation-id: ba6e9a88-ea34-4ece-b493-08dc62e44549 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?utf-8?B?c2dLTmYzb0gzUFhIMmpqU2JNbzN1STJYeG9wRit2MzZuWWNwK0Q3MlJYWHRL?= =?utf-8?B?cXF2M2FKbmdCU0d2STBOczE0ZVMvV2ppeWNka3dXbjk0bXh6a0V0SlV6QjdO?= =?utf-8?B?SUovNTltdWFYdXZvOTNkSWJpZlhISkdSQm1MeGV0TWdNUzFya0RUNTVwTXha?= =?utf-8?B?VjVib0svNnFjMWRsQmxiTVEvYzNGS3BKaG0rRlQ3THdMeFZieWp0NkxPRS80?= =?utf-8?B?dkdRdHZXSStqQVB2a0NtcDVPQVVZblErYjd0TS9SMXBTSUllRmhWSUJ2VXFl?= =?utf-8?B?cTdwMGEwZVdxOGFlRE1Fb1N2SWc4cjNtMkgwaU5TenMwU3BSL2lpZUVFSW83?= =?utf-8?B?bXA2aXhucHNwc2NCSE1iMWU1L1lWYzdvbzZOVTJoWjBpNG1UaVN3elBvWllG?= =?utf-8?B?aUtnajlwa2I3YXJxWVBma01YMllLcnhZMDB6c3hUZlVMTHhISWxkM2YvM3pL?= =?utf-8?B?VWVkd2NYeXMxZWpnc05BMDdzTVlzdWZLV0QwNmJqdnBXcHFUV05Zc2lqeVpB?= =?utf-8?B?a0FoNnc5QzZ4a0l6UEJmZDNsS0FwRDI2Z2VZSW9VK0RzeEdHb2h3UDVWVGlm?= =?utf-8?B?b2M3L2R0M2kwL2pzbWNmdi9GM3ZwWHBsUFh3TTV5TFBGdzA0ZlM4MXhLVzZP?= =?utf-8?B?TDB0dHRVMStxdS80L24zVmVtVkllbDl6WEQ2enJpLzFHYkNoVlpCZElqTmo0?= =?utf-8?B?TEhSU3VXM2R2ZitkSm4yTloveGUrWUFqZitXSkdvQ3JITzd0ODFPb0dJOWFC?= =?utf-8?B?OUJlUFRsc0h2bXVsMFFLVmpvQ0ZEN3hERWNrdTd2M2JObE5rcGhWUE5zUEUr?= =?utf-8?B?SGphdEhuSDBDVVo1MmF0NTZwc25NY0dNZFh4SjYxSlRReWx2bzhOQzhCaUc3?= =?utf-8?B?Ky9MVzVkdnJlSldnMHpFREpiWVFKWGdlNXRMVTdWOGNoRmVWclhoZXhsQlFw?= =?utf-8?B?OC8wQTN0eWQ0UkE0WktPTi9Tcjc5WFRDWFFFVW9KZWNuVG1JVVJnQlA1TDJX?= =?utf-8?B?U2dwMDY0bzZaQzVGZXJRZHZUQlZFSitpU3p2NTlBMk82b0tTSFRqeUFTeHhZ?= =?utf-8?B?MGttTUVqSm9NYjFUckJIaEVaVGYzSyt5Q0FPOVpGVkZzV2dBYlR2a0w5TWRp?= =?utf-8?B?ckFjNUU4UjJ6S2lDaEdBK2tPQjZUbmZkaWhRREFDamdTWEhuNzU1ekZGUWdP?= =?utf-8?B?ZHgzaTRpeWUwYXdrcmlPWTRpUDZaOVhId2tQREJwb3NBeWc0ZHpXdDZyVEVP?= =?utf-8?B?Z0hxaFRZeUswTVRSZU9iZkMybmhkM2d3WFY5OTNSNGQ3NytmcVoyN2plMEQ0?= =?utf-8?B?OGJvNTJZeWRpNjQ2SmtaWkhRUUw3eWdRbVIrOGdBWXZmTzRZdEk1b1p3aG5u?= =?utf-8?B?RTlmZWl5L2dqdXFDMHVsQlMwZkxGRVNzV29rRDFuMmZpNUNOdzByUFduazFa?= =?utf-8?B?a2V3UXdZZzluZGlheVdJN3kxc3VGMnE4TUdyQThUdGRja1luV0FXKzd5djRx?= =?utf-8?B?eVpCb3dOSVB1d2RzVjErN3gwcTAzNEtzRWljZzVMRTNvSWxadGJ4UFRnbllo?= =?utf-8?B?bzg1Uy9IN1RDemtqMnBKM0lwVnBFOXdVbGJNcHk0SGlIemNJYzdXcTB2dVJK?= =?utf-8?B?TFQzVlJ4d2hBQ2RvNFJ0S3lXR3V5dkJkcjJmVDc3UE4rbFA2bGNDVm9vRjk2?= =?utf-8?B?UVFONFliVGdpSmRSeFlUWEU2N1lLbFYwbzhxNDVZVVJrZ05rWHJlS29FbHRM?= =?utf-8?B?bFNrNXh6YUtOQ285WUNxZTR1bDJGSmdFYnpQcU83ZDY4R3dTVUhEWmFNZ1ln?= =?utf-8?B?SE9oc0ZsYVRqN3JGQlVaQT09?= 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:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QVlsN3VWbC9jem45VEF0WS9JRkI4QmZieS9GNXA5KzBIN3RjSGZCM0xQTytI?= =?utf-8?B?MzRKWDZpN3BqbXdUYVluQUV3SHRSUHptaXZZMnhzQnFHc01LT1l6WHhERSsy?= =?utf-8?B?U0JYSFluNjhlY3pMbm9LSHZRK2UvTlNnOG04WnNuMnRLelBWakFLaURNd0l2?= =?utf-8?B?U0g0THlVaDVrTFNIdzByZERIcVpYY2VpNWNPRnZ4eU40SG9IQkNLQVhTS3RN?= =?utf-8?B?ZWJyVS8vWnE4Zjllam4yQlNhSktHYm44N20xMUlIbUg3THdtNWxhMy9rSWVN?= =?utf-8?B?MDlvMGpOTmZpTUxqdHVlR3NkTWRyWFF6Qm9QZzBJMkxkQTk1UGVjZmZXTmRo?= =?utf-8?B?S1B4ak5ITlgvaGR3TWVmdG9MZnVvTnZyRWxBNXdLKzZodkUrZi9MTG9hdThW?= =?utf-8?B?Z2t3eWRYRnJWNGpuOUpjay9HeGZuQ0ZubVN0alRmY0U1WDdORlVOQnVqSlVi?= =?utf-8?B?YTN3RHF0VjR3ZXBXSStFSktRZEc2RS8vUTc5L2x0WmVjNEs2U2l3MWNlejBZ?= =?utf-8?B?TlZzQ1M4azFaV0Zqak5QTG1VNHhSbWx1cWFkemJhWHVCREpwR1kzS1ppMjdO?= =?utf-8?B?ZXNaN3oxek41ajYwZG9GeUo5NDV4U2JXSGNyUnRzNkdjQnFGeTlSNHh4S2xa?= =?utf-8?B?MkVaVmVlQUhUOXg3WkRrL1hxVVdGWHFTR3hrRDY0Y1ZhNjhQMldjbzBXOWlO?= =?utf-8?B?RXhPUTZIZm9qQUIwY0VUYktyMVF2OE9WdmNPK0xWa05zWWk5YUs0WmptWnp6?= =?utf-8?B?WlpVK2NhWEVNYURHdW9NaDBFSHgvZzhDT043bVAzWUhaMG1vaWU5cFZFLzZE?= =?utf-8?B?VGZrUWtpYUcvWVpNYjFmUlhZUVZzWHUwZHFueExNWXlmaVhZbXJLSFZZbVlX?= =?utf-8?B?cmJUd2F0OWlaSWxab29DOXVjVis0VFcydkYvUGoyS1h6eFVyQlNxNm44OExl?= =?utf-8?B?dmhKNDJDSWJmSmI1Y3grSUR5VmFNTmg5YVo3d2FKbnJGdWoraG8vQ0tsS1FI?= =?utf-8?B?RmFhWXZXU0lVdjdwYXdsbzhoSW1uNFArWXdPb0NKak9OSlZNaUF0TmpUT09Y?= =?utf-8?B?TWxleUVaUGV6d3FvRkZCY0NNWDdReHZTd3N0WWVNWFhyT0I2dGlGUS9KdUlq?= =?utf-8?B?d1Qxb0dYcWx2bFJzU3VLY2R6T09XVHVpVzQ2ZlVidWpaUFZqOVFKcWQwSlda?= =?utf-8?B?RHVKQ0l3SWNPcHA5dTFRTm5PK0kwQVF5T3hRQkh4N08yeS83RjcrUjFlRWVG?= =?utf-8?B?Ry8zbVFiVnZxOFB0RmUvU2g1MWVrVFJwSzFzRFcvL0ZTdTRoYzhvK3N6Wjdj?= =?utf-8?B?Uys2MVphZ1ZkSU5MV1F5cGlvQlB6WDBrYkRwU3Jjd2lEaVhweHNrVEFWVHVq?= =?utf-8?B?MHgyeGhnbm9jUnlLcFZJV29kTUsxVEp5ZTZQQUpqc1ZleUZJaFE1UCt4Mm1T?= =?utf-8?B?Y2tRUUhVdnR3a2d1SnNmdDRQSmRzWFJiZVpKUUpqWmFLVVhRNCt5WURwQ0Yw?= =?utf-8?B?L1V1MSt5Qlp4NVdDemNwT0QwV3hJV2Q4ZERwK0FIMXRNbXZNVXp6Y3RWYWVN?= =?utf-8?B?VjBuRThIclpJUVM0WGZjbER2S0RvamYycmk3aWJReERYN3BNb3BsN1IyVDVL?= =?utf-8?B?azk1azEyb1NwMkxYMmlxSlNvSGlzQkxzVFNVWmxmbEN4anVKbG9Fd1pQc1la?= =?utf-8?B?aHEzWXdDakQ3S1l3TGRTUmlkTlFrQVhwUmUrMERnMmhqVHpWWXFFZmJTUWJw?= =?utf-8?B?azBHYjNxSEs3aXkrKzBscnJLQzByWWVVMHpVZStPUkZncWpCdE1sMDRONEZN?= =?utf-8?B?R3FGNnBuM2pacjhLcElrUFM1cjdaOVo5amwxY0ZGbDBlSEd4MWduaUppaVJB?= =?utf-8?B?SnBnOVo3bWZUZkR0UTJGOGhUcnZxVnZ1Tk1VbzdoeCtQQ1BpdnZ2ZUh2Vzhp?= =?utf-8?B?cWUrRnBEWjlxN3dKekdteWI3N0MrZmNSTnBORXhlbWZNMWloTlF6amt5UXFa?= =?utf-8?B?cTVYUVRjQVdvL1pVWUI0SFQ5ckxDL3BOVndQWVVqOXoyVHdwWGZXUVRNRUdz?= =?utf-8?B?NVBxNjloQUhUNkxwcDQ1N1N4SVBnUDh5Rm92YWdISGZzbENYTlBSdngxUGVR?= =?utf-8?B?R2J5Z0o4ckpySm1JaTNjZXpBd1dST2FSQVBWYUsvTXhpQkRUNzFKS1RkaDhH?= =?utf-8?Q?LrhoVv8bD3gV+bUcUiCnRQE=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <8ECFF188561B0743B8442DC143DDADF2@eurprd07.prod.outlook.com> Content-Transfer-Encoding: quoted-printable 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: ba6e9a88-ea34-4ece-b493-08dc62e44549 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2024 15:52:53.1092 (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: 34W9htQZnmFrDEpnzJ+P2F9uJaU2k05e/WUKWQbJ0Osk335O0QBOLWbYKKbdRrzn8gURaGpyjrujOnAaT8LuPORGBuDrWLB8sZMeEawGyAtOqOs8x9QqB1ZhVlYI+q0g X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR07MB9626 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @eviden.com) X-ZM-MESSAGEID: 1713801262700100001 The 'level' field in vtd_iotlb_key is an uint8_t. We don't need to store level as an int in vtd_lookup_iotlb Signed-off-by: Cl=C3=A9ment Mathieu--Drif --- hw/i386/intel_iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 6f1364b3fd..ba545590b1 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -333,7 +333,7 @@ static VTDIOTLBEntry *vtd_lookup_iotlb(IntelIOMMUState = *s, uint16_t source_id, { struct vtd_iotlb_key key; VTDIOTLBEntry *entry; - int level; + uint8_t level; =20 for (level =3D VTD_SL_PT_LEVEL; level < VTD_SL_PML4_LEVEL; level++) { key.gfn =3D vtd_get_iotlb_gfn(addr, level); --=20 2.44.0 From nobody Sun May 19 01:43:06 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass(p=reject dis=none) header.from=eviden.com ARC-Seal: i=2; a=rsa-sha256; t=1713801267; cv=pass; d=zohomail.com; s=zohoarc; b=Hv6msvSKejPOkYsekG886VcRS+B2UBO05ttheAITWR6gbOxRvGPjsgh1Mm+NUxojopDtYfVV2JxphJBbDxdG7Dw7KOANVfF3YEB2fWmAlOQNE8/c3n3yg1Sa5GH/Wk2BH1aRnDGrMh4Agks6utmbHleqet4yh2LVxInKi2B7Z/E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713801267; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=A//6ZkMyDQVH+O5DOpFjHEE8sA2/YPKnd/qwbDTuIZ4=; b=HLgRnSAmaf6FNmc2kc5q2u7R3QmGV30JNY9nZ7N4SA8ki/zGJyxODSa67ZzVzZCd9nEds8DxWIHkuzlj+LifKl0WUMLgL1tbJWmDDS/1rmacHjn2y+46gzG9ypA2EBn8SCMO5WUS6Teqctg4V1qY8TgpuXT3XXck+HaYRc5+lx0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713801267580794.8240149419779; Mon, 22 Apr 2024 08:54:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ryvyg-0007Gc-4U; Mon, 22 Apr 2024 11:53:10 -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 1ryvyc-0007Eo-KR for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:07 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ryvyZ-0007c1-14 for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:05 -0400 Received: from mail-am0eur02lp2233.outbound.protection.outlook.com (HELO EUR02-AM0-obe.outbound.protection.outlook.com) ([104.47.11.233]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2024 17:52:57 +0200 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DU0PR07MB9626.eurprd07.prod.outlook.com (2603:10a6:10:31e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 15:52:54 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 15:52:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1713801183; x=1745337183; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=A//6ZkMyDQVH+O5DOpFjHEE8sA2/YPKnd/qwbDTuIZ4=; b=mjlOAiZRzeemq/D7wicXmj1Vi6KIWI9SRULYvXy6dhcClUWbCyd1uXRs Xb+eKEiMcUw/G4BpbL0ltlLprxH0AwHCwxUvmjY5E5zcInu4euKIdAZVA 0VBd7ACxsgpdHQ/4rUzEwLyxQ2fKYWlWRiFmVfNUAWIWFmjc1WKE18M4m vy+xFwDcxqXJBTTwNrFPjtHpUAx0qxMZMq8iC5IvwqcmVVPc8eVLDivnP /tOLQ/1wI43G7RNKctUL3/nODZEKW1o7oPMpx/rHHcczT32vsjrOZtYrA IZRJkKh6loRJqP5bCY7nXXPFrNp9ahlNOSL2MTXuJcbUUcJnb4w1ZuXab w==; X-IronPort-AV: E=Sophos;i="6.07,220,1708383600"; d="scan'208";a="11027673" X-MGA-submission: =?us-ascii?q?MDE2w0TDNpiD8qfN4OSreQ0o9Xf9QP4shRuEVX?= =?us-ascii?q?hdcX4Fw2ZFgB2lpunDlB3Ij+w+jYsM7/LpwVl+vtoHMSIvwDfu26Gf5i?= =?us-ascii?q?MLUYMSKzwV7JIqVIC/AwLcwdAmpr1BmM/fmzC9Rq5/psCTkhCY0xHwQw?= =?us-ascii?q?vKOM6in8BGhaMG1DL4mgFarg=3D=3D?= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ogqn2IWFzIdVt27toFb8pGSjqflmcjztDm4JKpX0NrKVQl1lPqwmxt9cgES1xl05Y18fxxtOtVn3H6uLck0dHDgB6HyywjzBPMqWuTX9QcK6cOJJg6jySF7greKbiS+bFIDIffkxyB+AE3uY3ol6aXomTAfey2eMDETFoOTIzjf/UOxdw5f2Difd5lPKP7Vg6qYyf/kL//5HStcJYP2WkpjBOvmv1jWV8p/HS/y6uxkXSLjNTRAGKKXorvX1+/p6qO4URMKnwYyycdKTgrpzdNx+h/VHziB8n0NvNIO6EsHj3ke/ZGPl7Sj4IvkFfpdahHJA9joaGtIazL3LOWZW2g== 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=A//6ZkMyDQVH+O5DOpFjHEE8sA2/YPKnd/qwbDTuIZ4=; b=M7fSYPNAo9I+shPTIX/mZS7IrZINK1qjF3wsKed/f3wylIi8eOw7Gv4lRXqZPvG1vAjtofmMtKrjw5/RwwDK8vC33+k8hQmhk9+0NnlqlXUhZHUVTA8zPkdXJaoFlkeMKNdhBWhv5AqNOQ4oswMUEbnknf0OTVvXvkbn/p7KM6Rfta2+iu6wPF2w8l3cNeWsObNLUxqkPhQa6Wzwb0YUcTze/wW7xl5Ez6E5n070CqiaIpwgm1g7jS9Lkyki4FI56OnL7UIPfD5f6mJaQw6hrePZghpEmAL4cQlCIV0pYZFESiCA+5J8epPbWx7uO45/a5hdr+y+/ilO6U1VpRKJ1g== 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 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH intel_iommu 4/7] intel_iommu: add support for first-stage translation Thread-Topic: [PATCH intel_iommu 4/7] intel_iommu: add support for first-stage translation Thread-Index: AQHalM0il2RzFQqe1USu5Fe1IhjH8A== Date: Mon, 22 Apr 2024 15:52:53 +0000 Message-ID: <20240422155236.129179-5-clement.mathieu--drif@eviden.com> References: <20240422155236.129179-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240422155236.129179-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_|DU0PR07MB9626:EE_ x-ms-office365-filtering-correlation-id: 7cd75ea8-5305-411a-4d10-08dc62e44618 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?utf-8?B?NzNqZUJOSWsrN2c0MisrdzJHK3F4QUYrWkMrdEgvWkI4UTJTekxROWR2YVh4?= =?utf-8?B?blh2T3lZREtNK1NrOTFjeUo5V21WNTFYQmM4dUIrZHFUS0VQT3dqTjZnN0RV?= =?utf-8?B?RVRyRWtsaDRwS0F2RG53Z2V3Und2M3RpMzZzSGxuZWhzK1B4RVZPaDJBVlFG?= =?utf-8?B?eklVb3J3OXdGNXFYWERMVktZVVRUdWc2VGs1Q1ZLMmlzOHo5VGNlcTJYQ3lk?= =?utf-8?B?bUtydXRieVlZb2tVWFRIL3ZZTnNPdXhyYWE3Z0FHbFFmVkZQRUFNdHhuVkFH?= =?utf-8?B?YW9Kc2V1bmZ0NzhCTTNIR3JjNG5heHlJeDZaL0VOcHVqT2xndVphclliNC9p?= =?utf-8?B?UWFTMTZsRHNQWkEvbDRHdDlZVmZvU3BTWjFReFZ3VndpZ0NZQ3lTblZpQUlz?= =?utf-8?B?NDdJV3RidkNNZFYrc1ZUWkltbkFwOTVFWk9Rc09nSENXOWlYQkRDc0pyYXBi?= =?utf-8?B?eGtSL1FWSzJqTmp0cmN0ZjQ5SWxLemMwdjZtbDdENDJFR2RVZTNmTmE2Vk0r?= =?utf-8?B?SmdwMFJHTy9NV3lZOUcraXozeXlTMG5zWjVBVTViZ3Y2WldFNzlYRUVhZE8r?= =?utf-8?B?aWZhV3lmNWlFT3labys2TTZ4RTdnaENYeFo0YkN3LzU5ekx6MkFLaW9PMTNU?= =?utf-8?B?Rlp0UUVQNFJOZEFyNytxYndyK2V4NmN0bUhCcGY5SlZZQ0plSG1kci9OTGdJ?= =?utf-8?B?K3B1TmhJZG8yck1LSk8xa2JLQXZQa1FOTG4xdS9ZZXB1VWF4MDRVZmRUcEJj?= =?utf-8?B?OFNxNk54U3VmSUhidCt0UHVlRXVscnpqMVBkOHRBOW5wNFg4eXB5TVVHRHhu?= =?utf-8?B?T285OWhMVFY1RmlMclRrU09yakVxNmhzNnhWS3ZVUVdwd05icFNodHdGZTFh?= =?utf-8?B?WmR1TFplTy9QeHUrWUxzb2pQSFJQajkvNm5ZY0FUczJTZC93OGpwRGJycm1k?= =?utf-8?B?d25zOVNKNkQra0NTUUtJMVdEY0dlcGdLTDh2d1BiSFgrY21XSjdBalNSRG9B?= =?utf-8?B?dEo4VHdLRXR5dGU3NGNqbzljTE1oeUEvd01iLzhBczNsbkJRRzRnTVNqUHJw?= =?utf-8?B?OUhteDRqcVFpdCtnMURsRHpTaGRNb3lUSmR4TW14ZVE3ZVZUTEgwRk9UdkpS?= =?utf-8?B?RVhpZTJCYlFMdVBPU1EvMzBydWNTMWN2UjhRdGJXaFR2R05sNWhTdlJaS3JU?= =?utf-8?B?K3BKQkJ2TUhwbE9lRXg4QWRTZGdVTWlWQnRFNHRtVGxLaVBoTzJGRW5RRHQy?= =?utf-8?B?b3RWaWxraWh0YUNmYk9icVEzZXJlMkRKSHpzTGo2aVk4Vkc1ZU9Jc0pkMWRN?= =?utf-8?B?Mm1VdzF1YUNtRHprWEVQaG9uY2xUMlhLc3lVMEtiSGlJRXV6N0d4U0VuRk1w?= =?utf-8?B?MDNNSU5LbVZlUHRoN21mYW5ZZ2xaaEIxd29UMzhZemlvMUJqeHB3cGlaS0R2?= =?utf-8?B?cDhPaDNGQ0RNOVlSNDRSaHo0R3RVTm9UMXZ6WW8xb2NVSHJMTlBhYkhwZ3ow?= =?utf-8?B?MkdNZVgyQzIzWXB6L2IxUlBrc0tOUGEvYncrS0JJdW9XRUp6MGJnVzBqbmp5?= =?utf-8?B?ZjdjQVArTnJVTnpJdnBhYTFuUXRGcjF5NVFaTzc4Q2sxd05YY0duVmUwd0tR?= =?utf-8?B?YUxTTDJ1d0w2RUhnRitJMmFHamZQaWk0YlFlSTdQWVpEazN2blNuZkJ1VS9t?= =?utf-8?B?L3N1cG4reVNOeFh0ZUtsbldjZzN6RmpTWWxVNCs1blRKaTJPM2pySGdQYnpt?= =?utf-8?Q?0brLrbf6rVmMxiNH0WuIDWcuYRqbwRl2bH4ReLu?= 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:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MlhPUXBvS0cxcTlpZ3F6OHRKd00yTWYxblBzRXhyZWx5Mm0xcjFhVnZXNU1r?= =?utf-8?B?VFdteEoyRlkxWisvS085UGl3UnYzWnlGak1sYVBhSFBLUE1Jb25OVEdBV09N?= =?utf-8?B?UDgrckt3ZWhkbE9rdXZ5c216TUZBWndwR0NEY1h1eGFiTGlBcWRFWWdCOUll?= =?utf-8?B?QWN0aWc0WXlwaXVnazlaeUthKzM1VGE0WWdWczc0NndiK2JGbVp5OWdKdnVB?= =?utf-8?B?ZTdWUFVqUXVERjJGc25rVjM2Qm9PYlBuanlRRUk4U0ppcnJYdkZqb0czVzBi?= =?utf-8?B?dnRkaWY3QmJPUHBpZGh1czJ6bWdadm1BRUkvSHpDMzdRUlFSSkNicCtzcG52?= =?utf-8?B?RkJMN2E4aHlFeGJyM0Z1TC9la0FYUTNJZC82Rzk2bnRKeXdUaTRUTzNqdEVP?= =?utf-8?B?b0VBSnFhRzhMUXF6bVAwM1F3aUw4MjU3K08vcnJ4TTFPcFFjNktsVnl2aFZz?= =?utf-8?B?YnFyUmJsM2NRVGpaRWZYeWNPYWVTbDI1M1NMYkdEelVONTRHNDBWMGdLTXJs?= =?utf-8?B?cmJDRFpwVkQ3dGp0UWR4bXhlUzRoYlJCNGpHYnFpeTdwWmFxeHhrYnJXWCtV?= =?utf-8?B?V2t1M0Q5TUFnZ0NKKy96d2VXWGk3czNOT21mbHEyZ0JNZmdDM2s2clY4Sng5?= =?utf-8?B?YnRQQSsxVGhVRjZJT2xXNGx6TU9uWE5rN1VsekVPTE1VS1dzM3plMlRTR21n?= =?utf-8?B?ZGVJTFhBbUhNcExiSDRkaVlqSnhBUWx3Vm5mVUE4VEp1YWQyb2k5S2lzQ2dT?= =?utf-8?B?REZrblFQWGJZMkFlWXJmbnBkTnJIWXFNb3NFZnlrb1FtLzAyWCs3dExITEdm?= =?utf-8?B?NUJZZzhWaVJUSmo1YUd5WXVsT1hpdlgyRGIzZkRaOVp1VGdqcEJYRythenlI?= =?utf-8?B?M3RMT2lSaExoZW0weVpLSTQyOVFBN1p3R0RQd1FUdm5TM05tZjE0VW14NDIy?= =?utf-8?B?ZkdYNFFUTnN5cldZVWpiTUh1MnhRa2RZTU5kb1ZUNENBTTNSVG03TWo5aGps?= =?utf-8?B?MU9RaFRTQk1BT01kK2VFQjB6SFJST1paSHlaSkpDT3BLNkQ4ZDM3QThtVEdC?= =?utf-8?B?TFVNdzdUaks4UVdzbWJHSlZSM1dYdlRIc21jVEtwZGlwc0Z2YmErV3VQY3o5?= =?utf-8?B?aElqditCVVZNeVl0clhxeFIzMUEzTzkxNU5vbEc3WDVtYWxyaHlTVUZCcUs4?= =?utf-8?B?ejF4WEdvVHRtTUhqQmZBT0N2ZEtuVXJlZGxVaURuQ0FWK2cyRGxVZ1pPM2sy?= =?utf-8?B?KzZDRmxrYnRuNUpPaCs4NFhnVUVXa24zNDNyeEV2MkZuaFNaZ2hmMmVGUk5E?= =?utf-8?B?MzJ0RjAzNkh4cnlwY0xHOE1POUdwdUc4bURDUTZlZzFWak1xbnovWTNFRXBJ?= =?utf-8?B?d0xuTmRWL3IycUdidEYwRDBDWUtVSkdxeWxiNnpxY2F1VmZVMDY3QTEvMDlI?= =?utf-8?B?TDIxUFdaRXRYMFp2WS9yV1pzVmJabUU1UmYxb0xmV2ordTdYdEptSDBDbG5N?= =?utf-8?B?S1FhMEFqaTdERXI5US9xTnBpVG1qekhEQWtyU2syTDRleC8xUHo4Y3VkRnZV?= =?utf-8?B?bDNMQ0tZb0htQVh2a2hiQWlkc0MzdFMyeDVwS3NQMkhMZG9TalFxMHdzcklX?= =?utf-8?B?NzJSc2FjNVdGNW16S2pBOTgzVHlpZWdkZ24wblB0NlpxT09EQ29rRDlFZnpz?= =?utf-8?B?a3hyNnBSOUl5T0llby9zZ1FSZkU0eFk2ai8yamVOSlVkaUEwU1IzbWt6cWZU?= =?utf-8?B?cEtQZDRpdXV0N0JtY05iNElpOVNOemdLakMxTjdibkU5dzRIWldKZ1I2em5k?= =?utf-8?B?L1RSTW5ZbEVIV1dqQm84V1p5Rkh3bmpDeHN2SzlrNzFXN01VUFlEUFR5MSsz?= =?utf-8?B?RnVNdDlDRmtmTDc2dXZidGc4WVpWODFwU3F5TmpLc21wRzFWRjFxc240T3Fj?= =?utf-8?B?ZzBYVlZVQ3VtbC9YRmxZNmdCZVpURXVGN3VoT0RPcC9aOTNhUVhXRDk4b29n?= =?utf-8?B?L3NxMnZ6a1VsV21KK3dSL3pqV3VEajdGVkNSSUNQajVhMWh1Vlk1WTJ1OFdq?= =?utf-8?B?NzdwTGp3WnE4c09YeS9JQTEySGVoNzJoSThFaDVoc1ZzV3h6TjV1dHBCUy9G?= =?utf-8?B?bGxVZE11NWwxSkhLbEZMOEJ2SkVaNGtoYi9uSHZqVGN5YkRGWGdVQk13ZDBv?= =?utf-8?Q?QNXU90moq4/6CGn/1Cynmm4=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <717C8F90C9DBAB4DAE6921D2483745CC@eurprd07.prod.outlook.com> Content-Transfer-Encoding: quoted-printable 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: 7cd75ea8-5305-411a-4d10-08dc62e44618 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2024 15:52:53.3583 (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: TSFiVvwbIrYVfzSeAJRYfPdEdOU9YmACt0vlr1t8CtqCsM6Szrt5+BUSC7R6JrObkhJSXJjBXUCnUiScYOyIB4ZksV9Grjq4uLJ+UR+7OH7GKkZ/M7/nQ59fBRTPF79r X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR07MB9626 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @eviden.com) X-ZM-MESSAGEID: 1713801268768100001 This translation mode will only be made available in scalable mode Signed-off-by: Cl=C3=A9ment Mathieu--Drif --- hw/i386/intel_iommu.c | 364 ++++++++++++++++++++++++++++----- hw/i386/intel_iommu_internal.h | 51 ++++- 2 files changed, 362 insertions(+), 53 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index ba545590b1..3b9f120dec 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -713,6 +713,21 @@ static uint64_t vtd_get_pte(dma_addr_t base_addr, uint= 32_t index) return pte; } =20 +static MemTxResult vtd_set_flag_in_pte(dma_addr_t base_addr, uint32_t inde= x, + uint64_t pte, uint64_t flag) +{ + assert(index < VTD_PT_ENTRY_NR); + if (pte & flag) { + return MEMTX_OK; + } + pte |=3D flag; + pte =3D cpu_to_le64(pte); + return dma_memory_write(&address_space_memory, + base_addr + index * sizeof(pte), + &pte, sizeof(pte), + MEMTXATTRS_UNSPECIFIED); +} + /* Given an iova and the level of paging structure, return the offset * of current level. */ @@ -730,11 +745,17 @@ static inline bool vtd_is_level_supported(IntelIOMMUS= tate *s, uint32_t level) } =20 /* Return true if check passed, otherwise false */ -static inline bool vtd_pe_type_check(X86IOMMUState *x86_iommu, +static inline bool vtd_pe_type_check(IntelIOMMUState *s, VTDPASIDEntry *pe) { + X86IOMMUState *x86_iommu =3D X86_IOMMU_DEVICE(s); + switch (VTD_PE_GET_TYPE(pe)) { case VTD_SM_PASID_ENTRY_FLT: + if (!(s->ecap & VTD_ECAP_FLTS)) { + return false; + } + break; case VTD_SM_PASID_ENTRY_SLT: case VTD_SM_PASID_ENTRY_NESTED: break; @@ -784,6 +805,11 @@ static inline bool vtd_pe_present(VTDPASIDEntry *pe) return pe->val[0] & VTD_PASID_ENTRY_P; } =20 +static inline bool vtd_fl_pte_present(uint64_t pte) +{ + return pte & VTD_FL_PTE_P; +} + static int vtd_get_pe_in_pasid_leaf_table(IntelIOMMUState *s, uint32_t pasid, dma_addr_t addr, @@ -791,7 +817,6 @@ static int vtd_get_pe_in_pasid_leaf_table(IntelIOMMUSta= te *s, { uint32_t index; dma_addr_t entry_size; - X86IOMMUState *x86_iommu =3D X86_IOMMU_DEVICE(s); =20 index =3D VTD_PASID_TABLE_INDEX(pasid); entry_size =3D VTD_PASID_ENTRY_SIZE; @@ -805,7 +830,7 @@ static int vtd_get_pe_in_pasid_leaf_table(IntelIOMMUSta= te *s, } =20 /* Do translation type check */ - if (!vtd_pe_type_check(x86_iommu, pe)) { + if (!vtd_pe_type_check(s, pe)) { return -VTD_FR_PASID_TABLE_INV; } =20 @@ -1027,6 +1052,34 @@ static inline bool vtd_iova_sl_range_check(IntelIOMM= UState *s, return !(iova & ~(vtd_iova_limit(s, ce, aw, pasid) - 1)); } =20 +/* Return true if IOVA is canonical, otherwise false. */ +static bool vtd_iova_fl_check_canonical(IntelIOMMUState *s, + uint64_t iova, VTDContextEntry *ce, + uint8_t aw, uint32_t pasid) +{ + uint64_t iova_limit =3D vtd_iova_limit(s, ce, aw, pasid); + uint64_t upper_bits_mask =3D ~(iova_limit - 1); + uint64_t upper_bits =3D iova & upper_bits_mask; + bool msb =3D ((iova & (iova_limit >> 1)) !=3D 0); + return !( + (!msb && (upper_bits !=3D 0)) || + (msb && (upper_bits !=3D upper_bits_mask)) + ); +} + +/* Return the page table base address corresponding to the translation typ= e. */ +static dma_addr_t vtd_pe_get_pgtbl_base(VTDPASIDEntry *pe) +{ + uint16_t pgtt =3D VTD_PE_GET_TYPE(pe); + if (pgtt =3D=3D VTD_SM_PASID_ENTRY_FLT) { + return pe->val[2] & VTD_SM_PASID_ENTRY_PTPTR; + } else if (pgtt =3D=3D VTD_SM_PASID_ENTRY_SLT) { + return pe->val[0] & VTD_SM_PASID_ENTRY_PTPTR; + } + + return 0; /* Not supported */ +} + static dma_addr_t vtd_get_iova_pgtbl_base(IntelIOMMUState *s, VTDContextEntry *ce, uint32_t pasid) @@ -1035,7 +1088,7 @@ static dma_addr_t vtd_get_iova_pgtbl_base(IntelIOMMUS= tate *s, =20 if (s->root_scalable) { vtd_ce_get_rid2pasid_entry(s, ce, &pe, pasid); - return pe.val[0] & VTD_SM_PASID_ENTRY_SLPTPTR; + return vtd_pe_get_pgtbl_base(&pe); } =20 return vtd_ce_get_slpt_base(ce); @@ -1053,6 +1106,10 @@ static dma_addr_t vtd_get_iova_pgtbl_base(IntelIOMMU= State *s, static uint64_t vtd_spte_rsvd[VTD_SPTE_RSVD_LEN]; static uint64_t vtd_spte_rsvd_large[VTD_SPTE_RSVD_LEN]; =20 +#define VTD_FPTE_RSVD_LEN 5 +static uint64_t vtd_fpte_rsvd[VTD_FPTE_RSVD_LEN]; +static uint64_t vtd_fpte_rsvd_large[VTD_FPTE_RSVD_LEN]; + static bool vtd_slpte_nonzero_rsvd(uint64_t slpte, uint32_t level) { uint64_t rsvd_mask; @@ -1079,21 +1136,140 @@ static bool vtd_slpte_nonzero_rsvd(uint64_t slpte,= uint32_t level) return slpte & rsvd_mask; } =20 -/* Given the @iova, get relevant @slptep. @slpte_level will be the last le= vel - * of the translation, can be used for deciding the size of large page. - */ -static int vtd_iova_to_slpte(IntelIOMMUState *s, VTDContextEntry *ce, - uint64_t iova, bool is_write, - uint64_t *slptep, uint32_t *slpte_level, - bool *reads, bool *writes, uint8_t aw_bits, - uint32_t pasid) +static bool vtd_flpte_nonzero_rsvd(uint64_t flpte, uint32_t level) +{ + uint64_t rsvd_mask; + assert(level < VTD_FPTE_RSVD_LEN); + assert(level); + + if ((level =3D=3D VTD_FL_PD_LEVEL || level =3D=3D VTD_FL_PDP_LEVEL) && + (flpte & VTD_PT_PAGE_SIZE_MASK)) { + /* large page */ + rsvd_mask =3D vtd_fpte_rsvd_large[level]; + } else { + rsvd_mask =3D vtd_fpte_rsvd[level]; + } + + return flpte & rsvd_mask; +} + +static int vtd_iova_to_pte_check_read_error(IntelIOMMUState *s, + VTDContextEntry *ce, uint64_t = iova, + uint64_t pte, uint32_t pasid, + uint32_t level, uint16_t pgtt) +{ + if (pte =3D=3D (uint64_t)-1) { + error_report_once("%s: detected read error on DMAR pte " + "(iova=3D0x%" PRIx64 ", pasid=3D0x%" PRIx32 ")= ", + __func__, iova, pasid); + if (level =3D=3D vtd_get_iova_level(s, ce, pasid)) { + /* Invalid programming of context-entry */ + if (s->root_scalable) { + return pgtt =3D=3D VTD_SM_PASID_ENTRY_FLT ? + -VTD_FR_FIRST_FSPE_ACCESS : + -VTD_FR_FIRST_SSPE_ACCESS; + } else { + return -VTD_FR_CONTEXT_ENTRY_INV; + } + } else { + if (s->root_scalable) { + return pgtt =3D=3D VTD_SM_PASID_ENTRY_FLT ? + -VTD_FR_FSPE_ACCESS : + -VTD_FR_SSPE_ACCESS; + } else { + return -VTD_FR_PAGING_ENTRY_INV; + } + } + } + + return 0; +} + +static inline bool vtd_addr_in_interrup_range(hwaddr addr, uint64_t size) +{ + return !((addr > VTD_INTERRUPT_ADDR_LAST) || + (addr + size - 1 < VTD_INTERRUPT_ADDR_FIRST)); +} + +static int vtd_iova_to_pte_fl(IntelIOMMUState *s, VTDContextEntry *ce, + uint64_t iova, bool is_write, uint64_t *ptep, + uint32_t *pte_level, bool *reads, bool *writ= es, + uint8_t aw_bits, uint32_t pasid, dma_addr_t = addr) +{ + uint32_t offset; + uint64_t pte; + uint64_t access_right_check =3D is_write ? VTD_FL_W : 0; + int ret; + + if (!vtd_iova_fl_check_canonical(s, iova, ce, aw_bits, pasid)) { + error_report_once("%s: detected non canonical IOVA (iova=3D0x%" PR= Ix64 "," + "pasid=3D0x%" PRIx32 ")", __func__, iova, pasid); + return -VTD_FR_FS_NON_CANONICAL; + } + + while (true) { + offset =3D vtd_iova_level_offset(iova, *pte_level); + pte =3D vtd_get_pte(addr, offset); + + ret =3D vtd_iova_to_pte_check_read_error(s, ce, iova, pte, + pasid, *pte_level, + VTD_SM_PASID_ENTRY_FLT); + if (ret !=3D 0) { + return ret; + } + + if (!vtd_fl_pte_present(pte)) { + return -VTD_FR_FSPE_NOT_PRESENT; + } + + *reads =3D true; + *writes =3D (*writes) && (pte & VTD_FL_W); + + if (vtd_set_flag_in_pte(addr, offset, pte, VTD_FL_PTE_A) !=3D MEMT= X_OK) { + return -VTD_FR_FS_BIT_UPDATE_FAILED; + } + + if ((pte & access_right_check) !=3D access_right_check) { + error_report_once("%s: detected pte permission error " + "(iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 = ", " + "pte=3D0x%" PRIx64 ", write=3D%d, pasid=3D0x= %" + PRIx32 ")", __func__, iova, *pte_level, + pte, is_write, pasid); + return is_write ? -VTD_FR_SM_WRITE : -VTD_FR_SM_READ; + } + if (vtd_flpte_nonzero_rsvd(pte, *pte_level)) { + error_report_once("%s: detected flpte reserved non-zero " + "iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 + "pte=3D0x%" PRIx64 ", pasid=3D0x%" PRIX32 ")= ", + __func__, iova, *pte_level, pte, pasid); + return -VTD_FR_PAGING_ENTRY_RSVD; + } + + if (vtd_is_last_pte(pte, *pte_level)) { + *ptep =3D pte; + break; + } + addr =3D vtd_get_pte_addr(pte, aw_bits); + (*pte_level)--; + } + + if (is_write && + (vtd_set_flag_in_pte(addr, offset, pte, VTD_FL_PTE_D) !=3D MEMTX_O= K)) { + return -VTD_FR_FS_BIT_UPDATE_FAILED; + } + + return 0; +} + +static int vtd_iova_to_pte_sl(IntelIOMMUState *s, VTDContextEntry *ce, + uint64_t iova, bool is_write, uint64_t *slpt= ep, + uint32_t *pte_level, bool *reads, bool *writ= es, + uint8_t aw_bits, uint32_t pasid, dma_addr_t = addr) { - dma_addr_t addr =3D vtd_get_iova_pgtbl_base(s, ce, pasid); - uint32_t level =3D vtd_get_iova_level(s, ce, pasid); uint32_t offset; uint64_t slpte; - uint64_t access_right_check; - uint64_t xlat, size; + uint64_t access_right_check =3D is_write ? VTD_SL_W : VTD_SL_R; + int ret; =20 if (!vtd_iova_sl_range_check(s, iova, ce, aw_bits, pasid)) { error_report_once("%s: detected IOVA overflow (iova=3D0x%" PRIx64 = "," @@ -1101,72 +1277,128 @@ static int vtd_iova_to_slpte(IntelIOMMUState *s, V= TDContextEntry *ce, return -VTD_FR_ADDR_BEYOND_MGAW; } =20 - /* FIXME: what is the Atomics request here? */ - access_right_check =3D is_write ? VTD_SL_W : VTD_SL_R; - while (true) { - offset =3D vtd_iova_level_offset(iova, level); + offset =3D vtd_iova_level_offset(iova, *pte_level); slpte =3D vtd_get_pte(addr, offset); =20 - if (slpte =3D=3D (uint64_t)-1) { - error_report_once("%s: detected read error on DMAR slpte " - "(iova=3D0x%" PRIx64 ", pasid=3D0x%" PRIx32 = ")", - __func__, iova, pasid); - if (level =3D=3D vtd_get_iova_level(s, ce, pasid)) { - /* Invalid programming of context-entry */ - return -VTD_FR_CONTEXT_ENTRY_INV; - } else { - return -VTD_FR_PAGING_ENTRY_INV; - } + ret =3D vtd_iova_to_pte_check_read_error(s, ce, iova, slpte, + pasid, *pte_level, + VTD_SM_PASID_ENTRY_SLT); + if (ret !=3D 0) { + return ret; } *reads =3D (*reads) && (slpte & VTD_SL_R); *writes =3D (*writes) && (slpte & VTD_SL_W); - if (!(slpte & access_right_check)) { + if ((slpte & access_right_check) !=3D access_right_check) { error_report_once("%s: detected slpte permission error " "(iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 = ", " "slpte=3D0x%" PRIx64 ", write=3D%d, pasid=3D= 0x%" - PRIx32 ")", __func__, iova, level, + PRIx32 ")", __func__, iova, *pte_level, slpte, is_write, pasid); - return is_write ? -VTD_FR_WRITE : -VTD_FR_READ; + if (s->root_scalable) { + return is_write ? -VTD_FR_SM_WRITE : -VTD_FR_SM_READ; + } else { + return is_write ? -VTD_FR_WRITE : -VTD_FR_READ; + } } - if (vtd_slpte_nonzero_rsvd(slpte, level)) { + if (vtd_slpte_nonzero_rsvd(slpte, *pte_level)) { error_report_once("%s: detected splte reserve non-zero " "iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 "slpte=3D0x%" PRIx64 ", pasid=3D0x%" PRIX32 = ")", - __func__, iova, level, slpte, pasid); + __func__, iova, *pte_level, slpte, pasid); return -VTD_FR_PAGING_ENTRY_RSVD; } =20 - if (vtd_is_last_pte(slpte, level)) { + if (vtd_is_last_pte(slpte, *pte_level)) { *slptep =3D slpte; - *slpte_level =3D level; break; } addr =3D vtd_get_pte_addr(slpte, aw_bits); - level--; + (*pte_level)--; + } + + return 0; +} + +/* + * Given the @iova, get relevant @ptep. @pte_level will be the last level + * of the translation, can be used for deciding the size of large page. + */ +static int vtd_iova_to_pte(IntelIOMMUState *s, VTDContextEntry *ce, + uint64_t iova, bool is_write, + uint64_t *ptep, uint32_t *pte_level, + bool *reads, bool *writes, uint8_t aw_bits, + uint32_t pasid) +{ + dma_addr_t addr; + uint16_t pgtt; + uint64_t xlat, size; + VTDPASIDEntry pe; + int ret; + + /* FIXME: what is the Atomics request in access rights? */ + + if (s->root_scalable) { + vtd_ce_get_rid2pasid_entry(s, ce, &pe, pasid); + pgtt =3D VTD_PE_GET_TYPE(&pe); + *pte_level =3D VTD_PE_GET_LEVEL(&pe); + addr =3D vtd_pe_get_pgtbl_base(&pe); + switch (pgtt) { + case VTD_SM_PASID_ENTRY_FLT: + if (s->ecap & VTD_ECAP_FLTS) { + ret =3D vtd_iova_to_pte_fl(s, ce, iova, is_write, ptep, pt= e_level, + reads, writes, aw_bits, pasid, ad= dr); + } else { + error_report_once("First-stage translation not supported := %d", + pgtt); + return -VTD_FR_INVALID_PGTT; + } + break; + case VTD_SM_PASID_ENTRY_SLT: + if (s->ecap & VTD_ECAP_SLTS) { + ret =3D vtd_iova_to_pte_sl(s, ce, iova, is_write, ptep, pt= e_level, + reads, writes, aw_bits, pasid, ad= dr); + } else { + error_report_once("Second-stage translation not supported = : %d", + pgtt); + return -VTD_FR_INVALID_PGTT; + } + break; + default: + error_report_once("Unsupported PGTT : %d", pgtt); + ret =3D -VTD_FR_INVALID_PGTT; + break; + } + } else { + *pte_level =3D vtd_ce_get_level(ce); + addr =3D vtd_ce_get_slpt_base(ce); + ret =3D vtd_iova_to_pte_sl(s, ce, iova, is_write, ptep, pte_level, + reads, writes, aw_bits, pasid, addr); } =20 - xlat =3D vtd_get_pte_addr(*slptep, aw_bits); - size =3D ~vtd_pt_level_page_mask(level) + 1; + if (ret !=3D 0) { + return ret; + } + + xlat =3D vtd_get_pte_addr(*ptep, aw_bits); + size =3D ~vtd_pt_level_page_mask(*pte_level) + 1; =20 /* * From VT-d spec 3.14: Untranslated requests and translation * requests that result in an address in the interrupt range will be * blocked with condition code LGN.4 or SGN.8. */ - if ((xlat > VTD_INTERRUPT_ADDR_LAST || - xlat + size - 1 < VTD_INTERRUPT_ADDR_FIRST)) { + if (!vtd_addr_in_interrup_range(xlat, size)) { return 0; } else { error_report_once("%s: xlat address is in interrupt range " "(iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 ", " - "slpte=3D0x%" PRIx64 ", write=3D%d, " + "pte=3D0x%" PRIx64 ", write=3D%d, " "xlat=3D0x%" PRIx64 ", size=3D0x%" PRIx64 ", " "pasid=3D0x%" PRIx32 ")", - __func__, iova, level, slpte, is_write, + __func__, iova, *pte_level, *ptep, is_write, xlat, size, pasid); - return s->scalable_mode ? -VTD_FR_SM_INTERRUPT_ADDR : - -VTD_FR_INTERRUPT_ADDR; + return -VTD_INTERRUPT_RANGE_ERROR(s); } } =20 @@ -1772,6 +2004,16 @@ static const bool vtd_qualified_faults[] =3D { [VTD_FR_CONTEXT_ENTRY_TT] =3D true, [VTD_FR_PASID_TABLE_INV] =3D false, [VTD_FR_SM_INTERRUPT_ADDR] =3D true, + [VTD_FR_INVALID_PGTT] =3D true, + [VTD_FR_FSPE_ACCESS] =3D true, + [VTD_FR_FSPE_NOT_PRESENT] =3D true, + [VTD_FR_FIRST_FSPE_ACCESS] =3D true, + [VTD_FR_SSPE_ACCESS] =3D true, + [VTD_FR_FIRST_SSPE_ACCESS] =3D true, + [VTD_FR_FS_NON_CANONICAL] =3D true, + [VTD_FR_SM_WRITE] =3D true, + [VTD_FR_SM_READ] =3D true, + [VTD_FR_FS_BIT_UPDATE_FAILED] =3D true, [VTD_FR_MAX] =3D false, }; =20 @@ -1870,7 +2112,8 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, uint8_t bus_num =3D pci_bus_num(bus); VTDContextCacheEntry *cc_entry; uint64_t pte, page_mask; - uint32_t level, pasid =3D vtd_as->pasid; + uint32_t level =3D UINT32_MAX; + uint32_t pasid =3D vtd_as->pasid; uint16_t source_id =3D PCI_BUILD_BDF(bus_num, devfn); int ret_fr; bool is_fpd_set =3D false; @@ -1981,7 +2224,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, } } =20 - ret_fr =3D vtd_iova_to_slpte(s, &ce, addr, is_write, &pte, &level, + ret_fr =3D vtd_iova_to_pte(s, &ce, addr, is_write, &pte, &level, &reads, &writes, s->aw_bits, pasid); if (ret_fr) { vtd_report_fault(s, -ret_fr, is_fpd_set, source_id, @@ -1990,6 +2233,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, } =20 page_mask =3D vtd_pt_level_page_mask(level); + /* Exe is always set to 0 in the spec */ access_flags =3D IOMMU_ACCESS_FLAG(reads, writes); vtd_update_iotlb(s, source_id, vtd_get_domain_id(s, &ce, pasid), addr, pte, access_flags, level, pasid); @@ -2005,7 +2249,12 @@ error: vtd_iommu_unlock(s); entry->iova =3D 0; entry->translated_addr =3D 0; - entry->addr_mask =3D 0; + /* + * Set the mask for ATS (the range must be present even when the + * translation fails : PCIe rev 5 10.2.3.5) + */ + entry->addr_mask =3D (level !=3D UINT32_MAX) ? + (~vtd_pt_level_page_mask(level)) : (~VTD_PAGE_MASK= _4K); entry->perm =3D IOMMU_NONE; return false; } @@ -3187,6 +3436,8 @@ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryR= egion *iommu, hwaddr addr, }; bool success; =20 + /* IOMMUAccessFlags : IOMMU_EXEC and IOMMU_PRIV not supported */ + if (likely(s->dmar_enabled)) { success =3D vtd_do_iommu_translate(vtd_as, vtd_as->bus, vtd_as->de= vfn, addr, flag & IOMMU_WO, &iotlb); @@ -3989,6 +4240,21 @@ static void vtd_init(IntelIOMMUState *s) vtd_spte_rsvd_large[3] =3D VTD_SPTE_LPAGE_L3_RSVD_MASK(s->aw_bits, x86_iommu->dt_sup= ported); =20 + /* + * Rsvd field masks for fpte + */ + vtd_fpte_rsvd[0] =3D ~0ULL; + vtd_fpte_rsvd[1] =3D VTD_FPTE_PAGE_L1_RSVD_MASK(s->aw_bits); + vtd_fpte_rsvd[2] =3D VTD_FPTE_PAGE_L2_RSVD_MASK(s->aw_bits); + vtd_fpte_rsvd[3] =3D VTD_FPTE_PAGE_L3_RSVD_MASK(s->aw_bits); + vtd_fpte_rsvd[4] =3D VTD_FPTE_PAGE_L4_RSVD_MASK(s->aw_bits); + + vtd_fpte_rsvd_large[0] =3D ~0ULL; + vtd_fpte_rsvd_large[1] =3D ~0ULL; + vtd_fpte_rsvd_large[2] =3D VTD_FPTE_PAGE_L2_FS2MP_RSVD_MASK(s->aw_bits= ); + vtd_fpte_rsvd_large[3] =3D VTD_FPTE_PAGE_L3_FS1GP_RSVD_MASK(s->aw_bits= ); + vtd_fpte_rsvd_large[4] =3D ~0ULL; + if (s->scalable_mode || s->snoop_control) { vtd_spte_rsvd[1] &=3D ~VTD_SPTE_SNP; vtd_spte_rsvd_large[2] &=3D ~VTD_SPTE_SNP; diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 8d27b1c15b..ed61979934 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -195,6 +195,7 @@ #define VTD_ECAP_PASID (1ULL << 40) #define VTD_ECAP_SMTS (1ULL << 43) #define VTD_ECAP_SLTS (1ULL << 46) +#define VTD_ECAP_FLTS (1ULL << 47) =20 /* CAP_REG */ /* (offset >> 4) << 24 */ @@ -215,6 +216,7 @@ #define VTD_CAP_CM (1ULL << 7) #define VTD_PASID_ID_SHIFT 20 #define VTD_PASID_ID_MASK ((1ULL << VTD_PASID_ID_SHIFT) - 1) +#define VTD_CAP_FS1GP (1ULL << 56) =20 /* Supported Adjusted Guest Address Widths */ #define VTD_CAP_SAGAW_SHIFT 8 @@ -270,6 +272,10 @@ #define VTD_FRCD_PP(val) (((val) & 0x1ULL) << 31) #define VTD_FRCD_IR_IDX(val) (((val) & 0xffffULL) << 48) =20 +#define VTD_INTERRUPT_RANGE_ERROR(s) ((s)->scalable_mode ? \ + VTD_FR_SM_INTERRUPT_ADDR : \ + VTD_FR_INTERRUPT_ADDR) + /* DMA Remapping Fault Conditions */ typedef enum VTDFaultReason { VTD_FR_RESERVED =3D 0, /* Reserved for Advanced Fault logging */ @@ -312,9 +318,21 @@ typedef enum VTDFaultReason { VTD_FR_IR_SID_ERR =3D 0x26, /* Invalid Source-ID */ =20 VTD_FR_PASID_TABLE_INV =3D 0x58, /*Invalid PASID table entry */ + VTD_FR_INVALID_PGTT =3D 0x5b, /* SPT.4.2 Invalid PGTT */ + + VTD_FR_FSPE_ACCESS =3D 0x70, /* SFS.1 */ + VTD_FR_FSPE_NOT_PRESENT =3D 0x71, /* SFS.2 : Present (P) field is 0.*/ + VTD_FR_FIRST_FSPE_ACCESS =3D 0x73, /* SFS.4 */ + VTD_FR_SSPE_ACCESS =3D 0x78, /* SSS.1 */ + VTD_FR_FIRST_SSPE_ACCESS =3D 0x7b, /* SSS.4 */ + VTD_FR_FS_NON_CANONICAL =3D 0x80, /* SNG.1 : Address for FS not canoni= cal.*/ + + VTD_FR_SM_WRITE =3D 0x85, /* SGN.6 */ + VTD_FR_SM_READ =3D 0x86, /* SGN.7 */ =20 /* Output address in the interrupt address range for scalable mode */ - VTD_FR_SM_INTERRUPT_ADDR =3D 0x87, + VTD_FR_SM_INTERRUPT_ADDR =3D 0x87, /* SGN.8 */ + VTD_FR_FS_BIT_UPDATE_FAILED =3D 0x91, /* SFS.10 */ VTD_FR_MAX, /* Guard */ } VTDFaultReason; =20 @@ -431,6 +449,23 @@ typedef union VTDInvDesc VTDInvDesc; (0x3ffff800ULL | ~(VTD_HAW_MASK(aw) | VTD_SL_IGN_COM | VTD_SL_TM))= : \ (0x3ffff800ULL | ~(VTD_HAW_MASK(aw) | VTD_SL_IGN_COM)) =20 +#define VTD_FS_UPPER_IGNORED 0xfff0000000000000ULL +#define VTD_FPTE_PAGE_L1_RSVD_MASK(aw) (~(VTD_HAW_MASK(aw)) & \ + (~VTD_FS_UPPER_IGNORED)) +#define VTD_FPTE_PAGE_L2_RSVD_MASK(aw) (~(VTD_HAW_MASK(aw)) & \ + (~VTD_FS_UPPER_IGNORED)) +#define VTD_FPTE_PAGE_L3_RSVD_MASK(aw) (~(VTD_HAW_MASK(aw)) & \ + (~VTD_FS_UPPER_IGNORED)) +#define VTD_FPTE_PAGE_L3_FS1GP_RSVD_MASK(aw) ((0x3fffe000ULL | \ + ~(VTD_HAW_MASK(aw))) \ + & (~VTD_FS_UPPER_IGNORED)) +#define VTD_FPTE_PAGE_L2_FS2MP_RSVD_MASK(aw) ((0x1fe000ULL | \ + ~(VTD_HAW_MASK(aw))) \ + & (~VTD_FS_UPPER_IGNORED)) +#define VTD_FPTE_PAGE_L4_RSVD_MASK(aw) ((0x80ULL | \ + ~(VTD_HAW_MASK(aw))) \ + & (~VTD_FS_UPPER_IGNORED)) + /* Information about page-selective IOTLB invalidate */ struct VTDIOTLBPageInvInfo { uint16_t domain_id; @@ -514,9 +549,6 @@ typedef struct VTDRootEntry VTDRootEntry; #define VTD_SM_PASID_ENTRY_AW 7ULL /* Adjusted guest-address-widt= h */ #define VTD_SM_PASID_ENTRY_DID(val) ((val) & VTD_DOMAIN_ID_MASK) =20 -/* Second Level Page Translation Pointer*/ -#define VTD_SM_PASID_ENTRY_SLPTPTR (~0xfffULL) - /* Paging Structure common */ #define VTD_SM_PASID_ENTRY_PTPTR (~0xfffULL) #define VTD_PT_PAGE_SIZE_MASK (1ULL << 7) @@ -532,6 +564,14 @@ typedef struct VTDRootEntry VTDRootEntry; #define VTD_SL_PD_LEVEL 2 #define VTD_SL_PT_LEVEL 1 =20 +/* First Level Paging Structure */ +#define VTD_FL_PDP_LEVEL 3 +#define VTD_FL_PD_LEVEL 2 +#define VTD_FL_PTE_P 0x1 +#define VTD_FL_PTE_A 0x20 +#define VTD_FL_PTE_D 0x40 +#define VTD_FL_PTE_EA 0x400 + /* Masks for Second Level Paging Entry */ #define VTD_SL_RW_MASK 3ULL #define VTD_SL_R 1ULL @@ -539,4 +579,7 @@ typedef struct VTDRootEntry VTDRootEntry; #define VTD_SL_IGN_COM 0xbff0000000000000ULL #define VTD_SL_TM (1ULL << 62) =20 +/* Masks for First Level Paging Entry */ +#define VTD_FL_W (1ULL << 1) + #endif --=20 2.44.0 From nobody Sun May 19 01:43:06 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass(p=reject dis=none) header.from=eviden.com ARC-Seal: i=2; a=rsa-sha256; t=1713801229; cv=pass; d=zohomail.com; s=zohoarc; b=Zd+ebma1ZQJNJFuPR0o7JEw6fR/pKVeHZBycscUo9nZPDyDASZy2Tugn5yYSlFUHleLOsRwZZ/ahsCLVXKBMAzVKv4V/pKP2tsQVDJgA6ydgOXzteLZeaUkT2Y7GFnfJYHHUWkRjEJb5KsW01DhMRq0wdl8EJNg2yya0p2fJRFo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713801229; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fNY3Ia8OsIWRUUDly0kC7nl47E5WuYX0I5f9Ly0Fijw=; b=Ql5Immp9NMAyVeoaDYYacKnn4aY9+BdX2fei5nfcVMMVyM+82zZLjIy8VikCblfPknjbxcX91YlrY95aL8gqGa/7aGHib90Fmn2CmfRjkzfW/vettDGFxhjQ2Q2/sIUMh1q4GoMgJCYLkN31SX6Th3CBbjmP1viPw/LLHbD3qpw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713801229655158.98740689867088; Mon, 22 Apr 2024 08:53:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ryvye-0007FW-Bm; Mon, 22 Apr 2024 11:53:08 -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 1ryvyZ-0007EJ-V9 for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:03 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ryvyX-0007bi-3q for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:03 -0400 Received: from mail-am0eur02lp2233.outbound.protection.outlook.com (HELO EUR02-AM0-obe.outbound.protection.outlook.com) ([104.47.11.233]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2024 17:52:57 +0200 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DU0PR07MB9626.eurprd07.prod.outlook.com (2603:10a6:10:31e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 15:52:55 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 15:52:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1713801181; x=1745337181; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=fNY3Ia8OsIWRUUDly0kC7nl47E5WuYX0I5f9Ly0Fijw=; b=GEeDt+JzpEPh0eqkvaKAc8yx7CG9SGGp5GsDzPSjTRRYyRKTQhqGxSOu jZckAneg28qtL01zOYtdIW/Ti+Wb2mpxmrozrJ38Ki8QSbQjagrg+a/b6 WGY19Ex1xoE29rcPNDywn+7pn2bTybr5oHrZ0Tx4kwtUrWAxekmu7pRmY Dja52SPcGjSEkdNw3nig310t6QNdSDb8tXwTceIjKIprxBTgR1bchaoEr RCP4pOljP1q5Siw1IdL7wFKmefPgiAriow3SBbGl2E8+PmMttm5twd4rh YUcPXaHJqrJREaiRAhp+7iluuB6VC9GmnU6Wdbgx0moIJotcVjjDKvZym w==; X-IronPort-AV: E=Sophos;i="6.07,220,1708383600"; d="scan'208";a="11027671" X-MGA-submission: =?us-ascii?q?MDEyVJbVEVGLSCMCQN1xJzQf8LahFlZ5Ssgp8K?= =?us-ascii?q?Sl6XPAJzXvLLTZ1Newm9/1ywHMhrJhwYUXZyi11EPBKArxjtGrkAkZPQ?= =?us-ascii?q?6RI7arHU2bWUJcoY2294jWG4xleCEmeGRcwr0ApRytwodaZtqYXIe3jB?= =?us-ascii?q?IfagaM8Vg6gM8yUDeeSnJpbg=3D=3D?= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OuXyHfCJay5w4U9Qb7d1bM7IGgeo9gzP+N9JX5CS/vwCPKE5dD+CgoxAvvvczmsTWIJaoYtOsY8ElknZwD4DV5Jv8qHPmgwRWEqbLcwr0BQZoeRarhxBd9KNBMv5itpyj5VzJu9HkrOHDIufzAwnSGRYXB9vzvBXONUP+GVQx5pYpTQoPLJnyD3k0P2euS/tYB5GFMbNJJKorZmK4umCOcpPx+kbu8U+08sjXNBHca+t2bXPorHT0rVfLRioRqr7svP6ZKHaFTnteNUHwr8dDLSDfmrv4uDDumfswJ3AZZW2jQxjfrENsVs7YUKcQAKFS2uqzhUV/AUAwEUC2kIfsg== 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=fNY3Ia8OsIWRUUDly0kC7nl47E5WuYX0I5f9Ly0Fijw=; b=ZORMXz2EwxozIRujVj1qq6cxFQyCOh9XPFjMre4EzDUVfDFTk+NJQX94OaHnGP4DUq/3NoNnfU6TsM9DUAAFHURx9kWW4tnIwkgALHcSZrfwO9EcZIkupddGuQBfmT14P27wlo18eR9nsAZgB4+FV+9q75hyLi2OwGTYs2gZp+5QYf89DX7/ArOgsofS5CDMPIMq7WEJuF+6ESWt4EGo3EwybaFc4jQdaxj5HtbBPzq2PbDZigMO1udlS1gU5N9a0IiGCM6RL0bRiUHe4/GqpPMwMz+LPvIQYn64eVJvqlCe3j1k6+eWUCH/2Er8MAKAR+k+38LqpC+bmwl8lu23HA== 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 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH intel_iommu 5/7] intel_iommu: extract device IOTLB invalidation logic Thread-Topic: [PATCH intel_iommu 5/7] intel_iommu: extract device IOTLB invalidation logic Thread-Index: AQHalM0ih2akMhZuME+ObdSEe3SmSg== Date: Mon, 22 Apr 2024 15:52:53 +0000 Message-ID: <20240422155236.129179-6-clement.mathieu--drif@eviden.com> References: <20240422155236.129179-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240422155236.129179-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_|DU0PR07MB9626:EE_ x-ms-office365-filtering-correlation-id: 13074d7d-bbc4-4444-d600-08dc62e44656 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?utf-8?B?QVViamlYdW05YUpBOFB2emM1S0FiOVI0cE5rUy9mZ0pqRCs0c1UycFVzbzIz?= =?utf-8?B?dTNpSTJsVmFMUzNJRnFQZWllNVMrT0hwZ0RGZEJobE9VZGZoTUR2ZFNhTlJJ?= =?utf-8?B?QVdpTXMzNVFmcWVZSDZ3R1J3MFN0Q1VVN0JOdndBWGxseVRvSnhudUNtL2xm?= =?utf-8?B?MkJmRjdOWXpYVlVBK1VWM0xtdjhvbTF4SGEyMmllKzhQdkJtTDhHclR0dHVX?= =?utf-8?B?RzNOaXBaUGw3TGkxQWVvNkxlejNNOUw3UXVsOVhPR2wzdGhFRW1wT0JLYUxF?= =?utf-8?B?UTNwTGo4NFRkdGZqQjd3V2QxVHpwbitrREY5TzRrWlNwanROUFgvcWdYTU9v?= =?utf-8?B?ZmVSZUMyNThUU3U0MUJOOHN3WHpwRjFwcHR6OE9oUUllQVJZT3NlS3NvM2RR?= =?utf-8?B?aDR3Q2xLeFNRbTl1ZjM2UHVObWd1N1pzQWxKNmd4dlZmL1pXQXV1a0ppRUVy?= =?utf-8?B?bFNMQmlkUTkrbzNtOWlwNmtOOHVOcWdPSXZiUEgwODk0Unl3cW9SMGVDQWZt?= =?utf-8?B?V3pjUEZKYkJyV21PQjVJREZXZEpVRGtodmpLbmV4SXBiMnQ1NGdMV2xSUHFz?= =?utf-8?B?VnVlY2VVaWlhVDBFanBQNDVKYlMzRFNwSFBEeDFuSTdtMFlDeFl4aXJCYmll?= =?utf-8?B?V3BHZk84dER1Zm15SUtjWVlwd2tKSE9VN240ZEpiMmthS0xvbUNlN2d5ZVNq?= =?utf-8?B?djJ2OHh5NzNkNVR5aitYbzFYSTVOUm8vT21pTWprekNKSkcwRkRSSkNLZG9v?= =?utf-8?B?eWpRNUQwYXVzNXo5RlpFSnRubGdXY2JrZjdBbkFIS0Z4c2I5OHJYNkJnbUdL?= =?utf-8?B?VmJmRkZjNjlSNkZ2YThmMDMxb3AzN2d6N3Y4Nm8vUGQ0TmQ1MUtzWTNXRWdG?= =?utf-8?B?Ui8rL1VyVUpVVXdUUHl6YkVwem5XVy95MG1QK3lDT3JSbkVqK1M0S3FEQTdM?= =?utf-8?B?ZVIxNW95RWVjQktENUVib0FBTFRIRkttTWpzR0Y3T3UxcDVwZWNKWlpFRmRq?= =?utf-8?B?d1AxUXRLWXluN09VTWgwdlZUaDFJQ1FaME1PcVRUcnBRK0hUZ3ZHdWhwanps?= =?utf-8?B?UVJEa21ncENnZTZ2NS9XYkdtdWpsVU13bFVEYy8wTnhOeHF0dkFYTFFhL1pm?= =?utf-8?B?LzUwVmF0UHV1eHRWUmt1ZUNDbW5DZ20zUWhPRFBCRm9KaDk5RkVaVXlvVDBu?= =?utf-8?B?ckxybkdFRHRlTGVFNzlUd29NMXA5VEFSL3RQNzBXSXg2WkR4RFpWOVI2UEdJ?= =?utf-8?B?ckhiWHlsUGhjSEJZT0srblIxTm1DbXZybnp5cldjOUR2Qk1wc09MQTJBT1FK?= =?utf-8?B?L0VXM1o5ZGxsNndYTkQxUFBZS3JrU3ZaaEtVcU9mT3Z1TldlNXlZNStGTmhk?= =?utf-8?B?VXpqejFrOXh0eHdHVGNvSURkZWZTQ3Jpd3laQjJQRWZoRzNXNUx0OFBvZ0VW?= =?utf-8?B?a2JmbTFUV1ZrdEtRK09kMWhtVmdvc0ExOTNNc3M4aFdGYzlCc3ZVQXFPbGpI?= =?utf-8?B?VmxCNzBZZlVSQXVGM005ck5hQTNCbEV1TlhkOGdUUWVnRUpHa2Z5alliMnA2?= =?utf-8?B?MFlmSi9GSEluMlNQT3BFUG9zWlZyaFRXOXJhU2JYclZRZTdzSnFKZ1p3eUJL?= =?utf-8?B?blJsV0pBQzNHU29IdTRiZE5JOFN1WXlLbllndDFEOFluOFJBbm82dHRvUVlG?= =?utf-8?B?M1UzaDR1UDlTa3ExT0Y1ZUIyWDlHWkpkS3NyTWtwYUdvZ2NBSW02dGpzVHRS?= =?utf-8?B?UHNaZ3VIQjdCMzJjN0lma1BWSm9BdDN2Y3RHbTNlK29XRlprL2JCdi9GYVdM?= =?utf-8?B?L2RHbVQrTnBmb0xQQnZSdz09?= 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:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YWFPRmRtS2ttaEJiYXM3aDdjblJoa0RseVlUOXRHbVl1bXJrcGJ5c1VhT1pE?= =?utf-8?B?V2gyOFJ6cUI5dkJJdUwwNkJMRk02VkVZMVJtcGFyd0NtMzJtamVWV3hIMzJV?= =?utf-8?B?RVF5ZUE3bEZrZjdqSDRHZ2orT2lEVjdJZWlYVXhmTEVNMTUveTJkWlVDK1Vq?= =?utf-8?B?dmFhRmt6L0kyNWl3V0tWaXFKVmM1RTRsVGJVWFlIdWg2cWZveHpEVENYb2xO?= =?utf-8?B?alEzSlJzUFVkUWNGQ3BmRU9PMTI3NjBmdWREWnZNdmxpQkxXVkhTd3RjVndn?= =?utf-8?B?cXduZktrSDhkVkw3UXg0UHg3aXU1byszZlorbTd0QzQ3MVl0VHpmb3o0d0cr?= =?utf-8?B?REIvMmU1aDZxeWQ2YWVrcXdZdGxpSDVGRkI5WGkvMTU3aUZTTDd1aE1BNnFq?= =?utf-8?B?TWFiSUNQTUdWMlF6amhCRDF2eGJZL2k0Q2dDaXVmMXByeGgzdUQvK1F1ME1Z?= =?utf-8?B?ZXZUb0duQ2ZVSjNMZm1CSW9xbVFtT3VNdmQyV25TQUI2Vjk0TldPdUdCMURN?= =?utf-8?B?ejErcHI3a3ZUdnlJZ0FLTEZqcjdyNGFKNXlOQlJOampYaVV6N1JwTUNTK3pQ?= =?utf-8?B?Qk9HZlFvbVNYZmFJR0VmYjhUOXJ5eVUrMktzbXFKZGtLSVp2b0dYSzhFbjR3?= =?utf-8?B?Y04vbHhUam9Ud25YRnIzTFMzWkJYUVpaVDBwYmE2TGJyQWVZaG4rYlNwbnJV?= =?utf-8?B?aFJvQm0vN1pjRDAzTWVUOUxuaERnbndKOEZ5YWhZakNNMWllZk1IMnU3Ly9R?= =?utf-8?B?WW1RWS9wMzZsRERGRkJBYnJ2TW9jbzhUTW5FbUJURXpNeXRQV2NpZmJ3M0tK?= =?utf-8?B?VEZtc21IMnluVTltdjVZVnF2M3VwVW1wb0VoNks5Ty9xcDVFTzhxWjMvZ0p0?= =?utf-8?B?cVlmdTduYmhlbUN1Q3cxektxRHNqQys5QVowaWdwTXhzTnkrVWoxWWVVMFhU?= =?utf-8?B?ZDdSa0xINWNDVkY1YUZaWWhDdDFhWCtFclc4K1dhYzZzVjZIaXZaejIzSUl4?= =?utf-8?B?MzZWTHZwMGlDK1N1REdzWDc0Skt3aTBTa2FsMzJJbTRsWFZ2MHJFNHdlSXRw?= =?utf-8?B?c29BN0NVM0pEUHRycXk5end0alNTK3ZXR3hJN2ZBWXZFdURsSng3bGxTVG9W?= =?utf-8?B?MVBiYTVYQTdrclZFRjQ4dVJ6ZXV3QW8yc2lRaGM2TTRFcUl0RUZrOUxSdXhp?= =?utf-8?B?MHhlRUhSdWFDallUdzhsMHd6QkxPM3R5WVJNOXBGNVd4OVdZQlM1ZWlLaUI4?= =?utf-8?B?MEc3YURGOU9EaFd3NkNjdzNtNi9VWHcwVW5vclR4QStjSDBQcEdYTXg3b2I0?= =?utf-8?B?ODMwdWlJSVlSQ013cVNQLzlnR3daS2RCZDNhL1NEZXhWaXltRmt2aGZ6K09P?= =?utf-8?B?U3U4MjlqdHpOTzE4T3pzaEV5L3RaZ0UyVE50aE01dE02eERqUzNvQnlWNWdp?= =?utf-8?B?NGFHRFVxRW1nRlpnWm1yWDVnVENqVXVtYldBZVp0K3dudTQ2ZnBLN25XZjFj?= =?utf-8?B?cUROYys3RDhWVFVncTVzR25HR2FUbmluVHZHNUtHTlEyTGJrRnJVZFYrT1k2?= =?utf-8?B?SzdZQlZoZkVRRldCRUJxR0Q5MjcwTE0xRElsODQrRjJUVG5zTkNoYXFERlVK?= =?utf-8?B?R082T2c1NCtpa3dCTkRJZ2ZRUzFJVC9ZeWRtNHE2YjFPM0k2QU4reEU4azNV?= =?utf-8?B?RjkzNmlHTDFvWEZHQVJzNVRQUk9BUnZiRUUrTGZPM002NEQ1VHVwdTJoYzNM?= =?utf-8?B?cWd5T1JncUI0cDgrNDk4bzZ0S0NpZTVFK29tb0p2NEM3VC9iTURsbVc1aVRS?= =?utf-8?B?M0VGTlZ4RjJEV1BDUk1VdkJTNy9DeGVwUzJUeDhEZU1wNUxxaFhZNjVwc1o1?= =?utf-8?B?a1VEUUg1Z1pPN2t3S0xZZllBbncyREhzaUpnMWVvY0l5eW9OdHlSbVJqZjM0?= =?utf-8?B?WmgxZUNTSzE1cHNlT000MzRiZWVFckEvN2grTFA5VXZUNHZMQjlja2JST3Y1?= =?utf-8?B?VGVYRStWNzRPRmRZYmhhbGZjaVlESlVEWHVHV3I2QzVCMC9CbW9iTnV6UkJP?= =?utf-8?B?akIvYU9xWlJGTk9QeXJUcStGNHJHRUlSbW93dEdVdm0zNFc3L2svRjdYbUpX?= =?utf-8?B?b2M4UmdBNmR2azdSQUxFcVMxdGF4T3dORm82WWt6clp6Z3VLVnJteWp6a1lU?= =?utf-8?Q?OiKh2oWX1SHCb2JRW6PoAFE=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <2C9CF632458ECB47AE4B78F9EBB91465@eurprd07.prod.outlook.com> Content-Transfer-Encoding: quoted-printable 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: 13074d7d-bbc4-4444-d600-08dc62e44656 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2024 15:52:53.5768 (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: LpAhdEf799w8Mvfayu0mFSMeLpxS/Tu1sqa4WK0nTjUmSnTQ+/6e2vwOqdiSWKnFadLai1ZfvInv5Z4THlYasMalZX/wSMu7D7tB7GV/wv1AWe24/BkGHuTezl5HWHKm X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR07MB9626 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @eviden.com) X-ZM-MESSAGEID: 1713801230584100001 This piece of code can be shared by both IOTLB invalidation and PASID-based IOTLB invalidation Signed-off-by: Cl=C3=A9ment Mathieu--Drif Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/i386/intel_iommu.c | 57 +++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 3b9f120dec..aaac61bf6a 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2890,13 +2890,42 @@ static bool vtd_process_inv_iec_desc(IntelIOMMUStat= e *s, return true; } =20 +static void do_invalidate_device_tlb(VTDAddressSpace *vtd_dev_as, + bool size, hwaddr addr) +{ + /* + * According to ATS spec table 2.4: + * S =3D 0, bits 15:12 =3D xxxx range size: 4K + * S =3D 1, bits 15:12 =3D xxx0 range size: 8K + * S =3D 1, bits 15:12 =3D xx01 range size: 16K + * S =3D 1, bits 15:12 =3D x011 range size: 32K + * S =3D 1, bits 15:12 =3D 0111 range size: 64K + * ... + */ + + IOMMUTLBEvent event; + uint64_t sz; + + if (size) { + sz =3D (VTD_PAGE_SIZE * 2) << cto64(addr >> VTD_PAGE_SHIFT); + addr &=3D ~(sz - 1); + } else { + sz =3D VTD_PAGE_SIZE; + } + + event.type =3D IOMMU_NOTIFIER_DEVIOTLB_UNMAP; + event.entry.target_as =3D &vtd_dev_as->as; + event.entry.addr_mask =3D sz - 1; + event.entry.iova =3D addr; + event.entry.perm =3D IOMMU_NONE; + event.entry.translated_addr =3D 0; + memory_region_notify_iommu(&vtd_dev_as->iommu, 0, event); +} static bool vtd_process_device_iotlb_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) { VTDAddressSpace *vtd_dev_as; - IOMMUTLBEvent event; hwaddr addr; - uint64_t sz; uint16_t sid; bool size; =20 @@ -2912,6 +2941,7 @@ static bool vtd_process_device_iotlb_desc(IntelIOMMUS= tate *s, return false; } =20 + /* * Using sid is OK since the guest should have finished the * initialization of both the bus and device. @@ -2921,28 +2951,7 @@ static bool vtd_process_device_iotlb_desc(IntelIOMMU= State *s, goto done; } =20 - /* According to ATS spec table 2.4: - * S =3D 0, bits 15:12 =3D xxxx range size: 4K - * S =3D 1, bits 15:12 =3D xxx0 range size: 8K - * S =3D 1, bits 15:12 =3D xx01 range size: 16K - * S =3D 1, bits 15:12 =3D x011 range size: 32K - * S =3D 1, bits 15:12 =3D 0111 range size: 64K - * ... - */ - if (size) { - sz =3D (VTD_PAGE_SIZE * 2) << cto64(addr >> VTD_PAGE_SHIFT); - addr &=3D ~(sz - 1); - } else { - sz =3D VTD_PAGE_SIZE; - } - - event.type =3D IOMMU_NOTIFIER_DEVIOTLB_UNMAP; - event.entry.target_as =3D &vtd_dev_as->as; - event.entry.addr_mask =3D sz - 1; - event.entry.iova =3D addr; - event.entry.perm =3D IOMMU_NONE; - event.entry.translated_addr =3D 0; - memory_region_notify_iommu(&vtd_dev_as->iommu, 0, event); + do_invalidate_device_tlb(vtd_dev_as, size, addr); =20 done: return true; --=20 2.44.0 From nobody Sun May 19 01:43:06 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass(p=reject dis=none) header.from=eviden.com ARC-Seal: i=2; a=rsa-sha256; t=1713801221; cv=pass; d=zohomail.com; s=zohoarc; b=ecDNHZCy2IIwEdh/ycOcY/ICI3miEhUOtNrpfu8jtK+2sSpCdsJKWBtgFgiB+etuNJSe4AZWF+SCPwJ/7Swwh8rzWFrJ60lLi+BeEKR0xmhW5M42OovsMGwfy2+5cv2IZ+vM4/RsBljPkzBkzYt4D0/W3A0MBrzpFRHtqf8k4Zs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713801221; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=liB5/3/LBFtQuwFWwuBS9Ju+8ITpXVCiihZJfH7mZeY=; b=kv4v2DSbZoX43hA9ZtUskVXV08VzOqAmLh3slXdayBuu3+Bp5T68hPyJZ0dLDImUpN+eBQKSy+sfKUbqY721bdX8O7NhLkmS7TNSGGMkVcwkVRit1k6sZqkAlJcSjdMXpZpIEIjN4QWUVSDpvFgHo96DTZf3+kwWO4Y7gDQaAbc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713801221296693.8693702649829; Mon, 22 Apr 2024 08:53:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ryvyi-0007Gm-Oc; Mon, 22 Apr 2024 11:53:12 -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 1ryvyc-0007Em-KQ for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:07 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ryvyZ-0007bS-Fx for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:05 -0400 Received: from mail-am0eur02lp2233.outbound.protection.outlook.com (HELO EUR02-AM0-obe.outbound.protection.outlook.com) ([104.47.11.233]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2024 17:52:57 +0200 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DU0PR07MB9626.eurprd07.prod.outlook.com (2603:10a6:10:31e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 15:52:55 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 15:52:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1713801183; x=1745337183; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=liB5/3/LBFtQuwFWwuBS9Ju+8ITpXVCiihZJfH7mZeY=; b=qhZUrunvONVtrffB2As2wKE9TBDGBp1IgCcTR2zPKl3NDJIeQ3mN7S8R Oev/3LVtmtJ2NDJnj35Jh62yYOecf0QcZcAHCXkzsob8S8LKBJDLDlIOG ZKwVpQQ3gi0gqqwDx088jiNVtCaVk241+TjDJduW+83JXQsrLelUdg/qD YZJIEuD/vZRLeZfX43pqJGtX3lugOB5vGAgkgTgOlZQ0YWe+V2aAnfgJS vZlRhSx5gr6l1hYWphH4JybhVcL7DA5i1KXLk7hampZsqx02n+aUzJqNo 59LMeVpnMVzQHgdt1Lr9nA9rLI0IBbY7ZR5UqQnrNpzjwXuPqUKrBUlFK w==; X-IronPort-AV: E=Sophos;i="6.07,220,1708383600"; d="scan'208";a="11027675" X-MGA-submission: =?us-ascii?q?MDEmgtisbYvx7d4zZunQvzwQeiYVh8l7g9V+2i?= =?us-ascii?q?RKt2d//kZdUMwyXtL+Gf0NFhMMGqu21VHc6IIu71I665/j78F2EF/4zH?= =?us-ascii?q?wfS8I3YGiSHq5vRnYRa63j8Ssh4VDC/mvyG68C/l2F41V+iDbXMVpcIQ?= =?us-ascii?q?iHTTAA5Ev0GthkgUVAp5awPA=3D=3D?= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=arrz6NMmFcqWSBZgRz+pSt9tv5bq6E443SDYjuAShXfR2Ns3YhiLV3ZFhZhAoZ/FQ3jjbMZmRaoj2H6JGmhjHjIaOOsIMPN5SGaVTHVcPbcQtvG4wnuBEBrQIqs/mwvRxMFLqCmmQU981dskc4EB3wEIgXUS1jU2+aqSxEViL6rdD72RKtEwtYUjM2k64HZ2+6obbTXuc1PdJ6bMIX1sR5fvU7iP1B6GLek6kXcv55GiBwFVmcvfiwi+RmbFFShKfc2Y5s6USmuTssXkhg2Y1kwI0A3UNSRrcSeJMP/EFOr8tTsqjWwInXuRwo92Y1MmgYb99CJo0d0gbtObzfB5MQ== 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=liB5/3/LBFtQuwFWwuBS9Ju+8ITpXVCiihZJfH7mZeY=; b=OueahUFXNWu24s+7nDZ+69DugkMuyVcxsua2lNPF/GbhXpSHlXzr0Z65lSiBIGLDOqWr3gKPR7SEufAwwvDNW3UeWRKxjAHJ9ZCTW3IrDdm+lxCHFh0IiN9QjTin+2iB70wUss3+j4Ljytqo0FEq/34ejyI9bkPAiqwOjQs43IXjUAeHymMtcyg4FU2x8jAVT26FWORpJYf3PReli4pcKsd2zh4sQ9+BZ7cKgYcO3Lxnf5/d03oiMUnKvqMZE28ZfFyy9qa4wnJizg2UY/q50JiI3u3cDHDNFCQUPQ4PiWAloVmRomYeBuJxOi/TlZKZapHL18nVZyoN4Rd3tPutfg== 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 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH intel_iommu 6/7] intel_iommu: add PASID-based IOTLB invalidation Thread-Topic: [PATCH intel_iommu 6/7] intel_iommu: add PASID-based IOTLB invalidation Thread-Index: AQHalM0jxDwfRa4+HUShrGVOuKfHWw== Date: Mon, 22 Apr 2024 15:52:53 +0000 Message-ID: <20240422155236.129179-7-clement.mathieu--drif@eviden.com> References: <20240422155236.129179-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240422155236.129179-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_|DU0PR07MB9626:EE_ x-ms-office365-filtering-correlation-id: 8c73af8e-8d57-4f34-a228-08dc62e446a0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?utf-8?B?V1NCSDEyNno4cm9xYTN3OTdsYjI2SXV5N0xNYTFpL1RMZld6Nk5JMmpOUkdq?= =?utf-8?B?ZU5jd0ZVM1hVZHorT1RYT3YvVmlqV2ZjK3hBZ29xZzVNakR0SEFvYnc4M2RH?= =?utf-8?B?anhIWWtuRlo4eHVTSkZPTkp5Y1owbFIwQXN5czdqV3lYejRtc1hKRENXZ1V3?= =?utf-8?B?WVRkK0NhL2ZPVzJTRzY1VFRmcFBvYm1jRWJzTEkyQU9DZ2pUM3EzbXI2VElE?= =?utf-8?B?VUVqTUdicDNhNzlJN3lkRHhXeVFGMTVIOXJnT2Rkd21zMGxRd095NmUzd0d6?= =?utf-8?B?dzBGMmNrM1YwcVc0S1pTWHJUZnJKZVlsRDFGS2xmb1JtQ3ltUTg3WkpFNUgx?= =?utf-8?B?TGVCdGNkZHVVZ01OM3Byc2lQSlR3Y2M5bWs0akl3T2x5TzhSSVZBVFJ1QUhC?= =?utf-8?B?TGpJeDB5bFpBdC9aOS9yd1RjTFVobHVkK3ljbWQ1VVhOdFdoczdjYUx5UXdw?= =?utf-8?B?SXI5U3VjeHY2NjUvR3l3L1lXQ0xVVHFFRVFTN29YVzkrU2JOdHRwRk9LczFj?= =?utf-8?B?S0c3SUExamJhelNOeEczVElGL05FNHRPRXJGM3ZlRGNaTHJmbkEyd3NodExW?= =?utf-8?B?b2lXamJqWnRLd3UyL1NObGZpZ05rWmFjS1B2aXRGczJwdFliSUFqK2xWMEpx?= =?utf-8?B?RVRINS9IU0pRaXpyWVEwamZ6TEdqcHEzOXFkQVlRcDU3K211UU0xZlFqZWFu?= =?utf-8?B?QVJKWjBlQmFUUEdOeldwOGFDRm1ZTWV1UFhXNmRtaVVHQzczaDY5VnY1SXMz?= =?utf-8?B?UGN0bkc3dmVwSjZaU3VMQi9kSXU1ZlpTcXEvcXJsNkVRVFdsRVQyQmF6N29Z?= =?utf-8?B?cUF4UDdFb21UVklaYi84SzdoeUdoZUtMZjF5ZUV1VWVTc2tKSEtPS3hBUU5M?= =?utf-8?B?VzFNb2kwZGw1N0NVMjVxRWg4NXN3MjUwMk9sOFovUkR5UVoxY3VFVjBNZDVp?= =?utf-8?B?YjNZUWZGa05kK21heWRyVkFmdDJUWFB4QXRZUXc0dENiejcxTS9SanRwb3Za?= =?utf-8?B?ZVdIeFlvK0tRTENyUjVLK2t2UzdhYnhLUDVGSVg2bHBTMnlTTEtHVXJuVzN4?= =?utf-8?B?eG9BTjZIRDVwK1VCSjRjUmZWM3QvaExnOWhtNFVTS3BCdVRVMStBUG10NTBO?= =?utf-8?B?WkdHRGk3b1ZUV0dRbHVhRnU1Y1M4YUZUd3ViNXlLMU95NDF0TFU5V291MHRt?= =?utf-8?B?KytzYlhTbmpwVSsrSmtENFYrTUdBUnhxUnBlcDZZN2t2NzdzUllJQmd1TGIr?= =?utf-8?B?S2NBL3ZIVElrTC9wZjlFR082RDczYlJQS20rdCtuZHMvejhQUkozNnF5MEUv?= =?utf-8?B?VWx5NWJvVW04dUlBbElYY2ZURUpXQ0VVY3lLbDh6ejFUT3RaUzNQTDVhbHYw?= =?utf-8?B?QnVaeXBxelZZLy9xQSszZm4xZU8yWkRqK3NvUGViRk1FYVdHWDVlSEJkb092?= =?utf-8?B?ZTlaN0xTN0k5akJyaVM5WVBkeS8wZGZMRDZpcmxzSUFrc05CQm5jOEVDWTI3?= =?utf-8?B?MWJrU2ZkZGlZMnhuM0pmSDhEbTNUM2JrT2RqdkNPVFVZdVFoMDZIemw4M3M3?= =?utf-8?B?Nlg2bWVyd1Z1OWVBVzlBcXkwSFdKWnNZVG5GYjhidXlObERuV0JiWmQyZHlI?= =?utf-8?B?Z291SnhlaEFDMkRZVEpPRU9qb1JHZWp0Znl5SXRScmFxdGpRSXBsZElSTzNN?= =?utf-8?B?MHZHUDRnUm9yQjd4cTF2N3NVc1Q5dE1oT0pUNW96Um9Cb0pTUjFrMy84UU9D?= =?utf-8?B?VHowdFEwaWNwZkpLMCswYXRHSHAxUG83bVFLRFkwS2dzRGRvQ2NIQmlrcEY0?= =?utf-8?B?L2I0OS9IQVNpWUxtKzJKdz09?= 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:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bmg1N0Z1R0ltRzBZT3pjOXFsTEY1Z01oS1FjTm1TRmZEUldrTHBKbzVKSmlK?= =?utf-8?B?NTF2WlNlWVZNRXFQeEdoUWVDYmVGNG9LZ0hqMzBlYklhZ0ROc3djaW9mMW5k?= =?utf-8?B?eDkwQitFeDh1OCtwV1lVS1E4dmpjbUgvbFdpaktyeTE2MG4xNmFpTkVaWVBL?= =?utf-8?B?VnBydFJ2RmttZEM1WGNKOWtYclJVSTlXcjNIR29EMVhmMmVZTmlGT2cxSE5J?= =?utf-8?B?bmtuODkxQzM4dmg5dUEvMUtFbGJYZGdFNEVZMzA5cFpydnhkTWJ0SGJ0MXJH?= =?utf-8?B?NGVSSTZONWhPaTM0TFphZlRTT1dQMGl5WjE3czE3akpvd214NW01blBiTFJD?= =?utf-8?B?aFRHNDdqY1JsUmNjUkpVRWp1dnMwbFd3ckphSUFOVkN1VHlvbjZobmQ2c085?= =?utf-8?B?cTJuL2t0aks2emt5MDR6cERUaWRaeVQzN05YM2xXaHhOQmozWXFUZ3grZVNP?= =?utf-8?B?WFExNnc5UHpuL3pyNW5EUDVSL1BGVHVOUWV1c0xUU3BNYW9mRHU0S0hkUFJB?= =?utf-8?B?L1c4WDkzNy9idzdsMXlhck1nUWt6T0paWHJQR2l4aXF5LzZ3R2ZnWE5qU0wv?= =?utf-8?B?eFBQeVNOZTllaU9XT3R1cHk0a3k4MjFaMWgyeHlUallIemc0UkxCaHQ5MzlV?= =?utf-8?B?QWZTMXlNQ2FyV2ZheG85cUhMdk1rZUNzMUZEWDJVTDk0V2U1RmVlY3ZlN0VU?= =?utf-8?B?cEhYc1NYNVk2ZkpHTUxyMS9hZVduMFNhVjdkNXJjdEl5cHNTVUJHUk4vdXBh?= =?utf-8?B?TnFVOUtwNnlMUU05emlaQ29kWnNwRGRZOTk4QlJLUU9TemFiUjRaR1c0b21s?= =?utf-8?B?YUR2aE5raUVWUktMSzdUa29STDBOdnVvWmtOMHdHdlBvaVBpLzR5WTVtZmxC?= =?utf-8?B?NWg3ZWRPMFF0aGZZTkdQZVNHbitOS0RmVWJNR3NNOFBTNk9ldERvTEoxSXJo?= =?utf-8?B?dFhxZzNpdktDR2pYMWJ3M1lqTDBmcUlRcU5yZHlmbDRqUkpvdks4SWZ1c2J3?= =?utf-8?B?Wk9yWkM3NmNlSW5EN1loOVlmSGZDMFp6QStreFZzVXpuYnZYaDd5dkVZTmlK?= =?utf-8?B?V0FtNWZtNU94M3Vxc0MwWkVvL0tzclJTL1JicEkrc1JUNzNxSG9zYzl2N3di?= =?utf-8?B?Q2lIUERIR2wxbFhKRXh1QXZZcllqamQ1YmcvZTJmYndPcGV2a0pkd1ZOTUJ0?= =?utf-8?B?dFEvZVpWMFoyeVZvSWh5dVpBbTRyclBJVXJ2NGRKNWE3ayt3Q1FHcXRCVzNz?= =?utf-8?B?Y2JIQlptUWFkK0dpNzl1OWczNXR0Qy9TQTE1UEpyQUJNci9YYXNMYzU1bGRk?= =?utf-8?B?VVVEU1lZS2VtVGVOUllSbG9LUTIxMFQ3OHQxRnNWMk1RNGJQdGt1UjJQVnlV?= =?utf-8?B?eHVPSUdOUlZUb1IxalVXRXRJT3dVNlZ3VDR6THpHRDJEdjRFWmJKWFVZTmJG?= =?utf-8?B?UEhWNUVVUkQ3bnNpWWZUMjBMbitpNVgzZDhXTXE1RXlsMGdPV3ZSOFBsVUc0?= =?utf-8?B?QVdwQUdEUHYycTFiMHRyakNyVS9ZOFltM2JZa0ZIZ2M0NTFvSnd0cmRGQnhP?= =?utf-8?B?WFUrOVhIcGNOWXlYTG9uQkFNSVlIZVkvTXpkcjYybm4xeUtzTTloNEV6UGhs?= =?utf-8?B?S2tQY09MMkI3V1hGd2FUcmJFT1JBd2lpckJObzcwM1hiVXNFbC9pVzhiY2JQ?= =?utf-8?B?Q09abFdoZ1JyenR2b1VybWZHRGlvWW83T2NCd3hVNEJibmRnaDV2TGdrZ2Vl?= =?utf-8?B?WmZSMk1wQVJVTWVXaWZ2SVVndW9nTlladEVScXZsaFdxTFNXa1RHR3dPUE9O?= =?utf-8?B?NC9DSGdLazdteEMwZzY1eWgyenlMV09SY2NlN3Z6YTNReTVNcVo1RlBDVEpS?= =?utf-8?B?UG1sbFRQSnBscFdSTnhWUkFidTRnNjJ5bzVPOXZId3F1Z0JIbmhBb0lRZEg5?= =?utf-8?B?SFdkS1RNZ04xOXUxUDMzVTRCNHdFUWRHOEdNYXdzVE9La1hiblhTVzk1OUJ0?= =?utf-8?B?K0xPZGlobXFGN3FOY0Q4RUJYbXlReGttcTJialUrMUZHR1B0M3hITWVXTXhr?= =?utf-8?B?ajVmQ0pTc0k0VGpzTDZPdElENTZoTW1sT0h4NHVMR0JZNGNCR29udXNmK1lq?= =?utf-8?B?eXltMGI1Y2x3Nk81bDBZVUMzWTZsNTdUUERjdFZDRk9INk5vdXZkU25DbnEx?= =?utf-8?Q?kkQbgyBqo7Kx6uTcxbIPQTY=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <1D0AF3F45FD2584CB9B3FF76BA129135@eurprd07.prod.outlook.com> Content-Transfer-Encoding: quoted-printable 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: 8c73af8e-8d57-4f34-a228-08dc62e446a0 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2024 15:52:53.7869 (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: GiZKjh03M7TB2IfANiuOZa+n/m6Ju+bn484FcHuX631oHfUplszFa+y3EvZRSfS45xAl/KXkAybI3QY3/9T9nm2iRqEyca/VNZDRlW/deLZJ29lg7/I/GOYd2K006EGA X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR07MB9626 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @eviden.com) X-ZM-MESSAGEID: 1713801222629100001 Signed-off-by: Cl=C3=A9ment Mathieu--Drif --- hw/i386/intel_iommu.c | 130 ++++++++++++++++++++++++++++++--- hw/i386/intel_iommu_internal.h | 51 +++++++------ 2 files changed, 150 insertions(+), 31 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index aaac61bf6a..4b54a45107 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -277,9 +277,22 @@ static gboolean vtd_hash_remove_by_page(gpointer key, = gpointer value, VTDIOTLBPageInvInfo *info =3D (VTDIOTLBPageInvInfo *)user_data; uint64_t gfn =3D (info->addr >> VTD_PAGE_SHIFT_4K) & info->mask; uint64_t gfn_tlb =3D (info->addr & entry->mask) >> VTD_PAGE_SHIFT_4K; - return (entry->domain_id =3D=3D info->domain_id) && - (((entry->gfn & info->mask) =3D=3D gfn) || - (entry->gfn =3D=3D gfn_tlb)); + return ( + (entry->domain_id =3D=3D info->domain_id) && + (info->pasid =3D=3D entry->pasid) + ) && ( + ((entry->gfn & info->mask) =3D=3D gfn) || + (entry->gfn =3D=3D gfn_tlb) + ); +} + +static gboolean vtd_hash_remove_by_pasid(gpointer key, gpointer value, + gpointer user_data) +{ + VTDIOTLBEntry *entry =3D (VTDIOTLBEntry *)value; + VTDIOTLBPasidEntryInvInfo *info =3D (VTDIOTLBPasidEntryInvInfo *)user_= data; + return ((entry->domain_id =3D=3D info->domain_id) && + (info->pasid =3D=3D entry->pasid)); } =20 /* Reset all the gen of VTDAddressSpace to zero and set the gen of @@ -1287,8 +1300,10 @@ static int vtd_iova_to_pte_sl(IntelIOMMUState *s, V= TDContextEntry *ce, if (ret !=3D 0) { return ret; } + *reads =3D (*reads) && (slpte & VTD_SL_R); *writes =3D (*writes) && (slpte & VTD_SL_W); + if ((slpte & access_right_check) !=3D access_right_check) { error_report_once("%s: detected slpte permission error " "(iova=3D0x%" PRIx64 ", level=3D0x%" PRIx32 = ", " @@ -2484,23 +2499,61 @@ static void vtd_iotlb_page_invalidate_notify(IntelI= OMMUState *s, } } =20 +static VTDIOTLBPageInvInfo vtd_build_tlb_page_inv_info(uint16_t domain_id, + hwaddr addr, uint8_= t am, + uint32_t pasid) +{ + assert(am <=3D VTD_MAMV); + VTDIOTLBPageInvInfo info =3D { + .domain_id =3D domain_id, + .addr =3D addr, + .mask =3D ~((1ULL << am) - 1), + .pasid =3D pasid + }; + return info; +} + static void vtd_iotlb_page_invalidate(IntelIOMMUState *s, uint16_t domain_= id, hwaddr addr, uint8_t am) { - VTDIOTLBPageInvInfo info; + VTDIOTLBPageInvInfo info =3D vtd_build_tlb_page_inv_info(domain_id, ad= dr, + am, PCI_NO_PASI= D); =20 trace_vtd_inv_desc_iotlb_pages(domain_id, addr, am); =20 - assert(am <=3D VTD_MAMV); - info.domain_id =3D domain_id; - info.addr =3D addr; - info.mask =3D ~((1 << am) - 1); vtd_iommu_lock(s); g_hash_table_foreach_remove(s->iotlb, vtd_hash_remove_by_page, &info); vtd_iommu_unlock(s); + vtd_iotlb_page_invalidate_notify(s, domain_id, addr, am, PCI_NO_PASID); } =20 +static void vtd_pasid_based_iotlb_page_invalidate(IntelIOMMUState *s, + uint16_t domain_id, + hwaddr addr, + uint8_t am, uint32_t pas= id) +{ + VTDIOTLBPageInvInfo info =3D vtd_build_tlb_page_inv_info(domain_id, ad= dr, + am, pasid); + vtd_iommu_lock(s); + g_hash_table_foreach_remove(s->iotlb, vtd_hash_remove_by_page, &info); + vtd_iommu_unlock(s); +} + +static void vtd_pasid_based_iotlb_invalidate(IntelIOMMUState *s, + uint16_t domain_id, + uint32_t pasid) +{ + assert(pasid !=3D PCI_NO_PASID); + VTDIOTLBPasidEntryInvInfo info =3D { + .domain_id =3D domain_id, + .pasid =3D pasid + }; + vtd_iommu_lock(s); + g_hash_table_foreach_remove(s->iotlb, vtd_hash_remove_by_pasid, &info); + vtd_iommu_unlock(s); +} + /* Flush IOTLB * Returns the IOTLB Actual Invalidation Granularity. * @val: the content of the IOTLB_REG @@ -2759,7 +2812,7 @@ static bool vtd_get_inv_desc(IntelIOMMUState *s, static bool vtd_process_wait_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) { if ((inv_desc->hi & VTD_INV_DESC_WAIT_RSVD_HI) || - (inv_desc->lo & VTD_INV_DESC_WAIT_RSVD_LO)) { + (inv_desc->lo & VTD_INV_DESC_WAIT_RSVD_LO(s->ecap))) { error_report_once("%s: invalid wait desc: hi=3D%"PRIx64", lo=3D%"P= RIx64 " (reserved nonzero)", __func__, inv_desc->hi, inv_desc->lo); @@ -2785,6 +2838,11 @@ static bool vtd_process_wait_desc(IntelIOMMUState *s= , VTDInvDesc *inv_desc) } else if (inv_desc->lo & VTD_INV_DESC_WAIT_IF) { /* Interrupt flag */ vtd_generate_completion_event(s); + } else if (inv_desc->lo & VTD_INV_DESC_WAIT_FN) { + /* + * SW =3D 0, IF =3D 0, FN =3D 1 + * Nothing to do as we process the events sequentially + */ } else { error_report_once("%s: invalid wait desc: hi=3D%"PRIx64", lo=3D%"P= RIx64 " (unknown type)", __func__, inv_desc->hi, @@ -2957,6 +3015,54 @@ done: return true; } =20 +static bool vtd_process_piotlb_desc(IntelIOMMUState *s, + VTDInvDesc *inv_desc) +{ + uint32_t pasid; + uint16_t domain_id; + hwaddr addr; + uint8_t am; + + if ((inv_desc->lo & VTD_INV_DESC_IOTLB_PASID_RSVD_LO) || + (inv_desc->hi & VTD_INV_DESC_IOTLB_PASID_RSVD_HI)) { + error_report_once("%s: invalid piotlb inv desc: hi=3D0x%"PRIx64 + ", lo=3D0x%"PRIx64" (reserved bits unzero)", + __func__, inv_desc->hi, inv_desc->lo); + return false; + } + + domain_id =3D VTD_INV_DESC_IOTLB_DID(inv_desc->lo); + pasid =3D VTD_INV_DESC_IOTLB_PASID(inv_desc->lo); + addr =3D VTD_INV_DESC_IOTLB_ADDR(inv_desc->hi); + am =3D VTD_INV_DESC_IOTLB_AM(inv_desc->hi); + + switch (inv_desc->lo & VTD_INV_DESC_IOTLB_G) { + case VTD_INV_DESC_IOTLB_PASID_PASID: + vtd_pasid_based_iotlb_invalidate(s, domain_id, pasid); + break; + + case VTD_INV_DESC_IOTLB_PASID_PAGE: + if (am > VTD_MAMV) { + error_report_once("%s: invalid piotlb inv desc: hi=3D0x%"PRIx64 + ", lo=3D0x%"PRIx64" (am=3D%u > VTD_MAMV=3D%u= )", + __func__, inv_desc->hi, inv_desc->lo, + am, (unsigned)VTD_MAMV); + return false; + } + vtd_pasid_based_iotlb_page_invalidate(s, domain_id, addr, am, pasi= d); + break; + + default: + error_report_once("%s: invalid piotlb inv desc: hi=3D0x%"PRIx64 + ", lo=3D0x%"PRIx64" (type mismatch: 0x%llx)", + __func__, inv_desc->hi, inv_desc->lo, + inv_desc->lo & VTD_INV_DESC_IOTLB_G); + return false; + } + + return true; +} + static bool vtd_process_inv_desc(IntelIOMMUState *s) { VTDInvDesc inv_desc; @@ -2988,7 +3094,7 @@ static bool vtd_process_inv_desc(IntelIOMMUState *s) break; =20 /* - * TODO: the entity of below two cases will be implemented in future s= eries. + * TODO: the entity of below case will be implemented in future series. * To make guest (which integrates scalable mode support patch set in * iommu driver) work, just return true is enough so far. */ @@ -2996,6 +3102,10 @@ static bool vtd_process_inv_desc(IntelIOMMUState *s) break; =20 case VTD_INV_DESC_PIOTLB: + trace_vtd_inv_desc("piotlb", inv_desc.hi, inv_desc.lo); + if (!vtd_process_piotlb_desc(s, &inv_desc)) { + return false; + } break; =20 case VTD_INV_DESC_WAIT: diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index ed61979934..4f734ce67b 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -193,6 +193,7 @@ #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_SRS (1ULL << 31) #define VTD_ECAP_PASID (1ULL << 40) +#define VTD_ECAP_PDS (1ULL << 42) #define VTD_ECAP_SMTS (1ULL << 43) #define VTD_ECAP_SLTS (1ULL << 46) #define VTD_ECAP_FLTS (1ULL << 47) @@ -386,12 +387,13 @@ typedef union VTDInvDesc VTDInvDesc; #define VTD_INV_DESC_NONE 0 /* Not an Invalidate Descripto= r */ =20 /* Masks for Invalidation Wait Descriptor*/ -#define VTD_INV_DESC_WAIT_SW (1ULL << 5) -#define VTD_INV_DESC_WAIT_IF (1ULL << 4) -#define VTD_INV_DESC_WAIT_FN (1ULL << 6) -#define VTD_INV_DESC_WAIT_DATA_SHIFT 32 -#define VTD_INV_DESC_WAIT_RSVD_LO 0Xffffff80ULL -#define VTD_INV_DESC_WAIT_RSVD_HI 3ULL +#define VTD_INV_DESC_WAIT_SW (1ULL << 5) +#define VTD_INV_DESC_WAIT_IF (1ULL << 4) +#define VTD_INV_DESC_WAIT_FN (1ULL << 6) +#define VTD_INV_DESC_WAIT_DATA_SHIFT 32 +#define VTD_INV_DESC_WAIT_RSVD_LO(ecap) (0xffffff00ULL | \ + ((ecap & VTD_ECAP_PDS) ? 0 : (1 <= < 7))) +#define VTD_INV_DESC_WAIT_RSVD_HI 3ULL =20 /* Masks for Context-cache Invalidation Descriptor */ #define VTD_INV_DESC_CC_G (3ULL << 4) @@ -404,20 +406,20 @@ typedef union VTDInvDesc VTDInvDesc; #define VTD_INV_DESC_CC_RSVD 0xfffc00000000ffc0ULL =20 /* Masks for IOTLB Invalidate Descriptor */ -#define VTD_INV_DESC_IOTLB_G (3ULL << 4) -#define VTD_INV_DESC_IOTLB_GLOBAL (1ULL << 4) -#define VTD_INV_DESC_IOTLB_DOMAIN (2ULL << 4) -#define VTD_INV_DESC_IOTLB_PAGE (3ULL << 4) -#define VTD_INV_DESC_IOTLB_DID(val) (((val) >> 16) & VTD_DOMAIN_ID_MAS= K) -#define VTD_INV_DESC_IOTLB_ADDR(val) ((val) & ~0xfffULL) -#define VTD_INV_DESC_IOTLB_AM(val) ((val) & 0x3fULL) -#define VTD_INV_DESC_IOTLB_RSVD_LO 0xffffffff0000ff00ULL -#define VTD_INV_DESC_IOTLB_RSVD_HI 0xf80ULL -#define VTD_INV_DESC_IOTLB_PASID_PASID (2ULL << 4) -#define VTD_INV_DESC_IOTLB_PASID_PAGE (3ULL << 4) -#define VTD_INV_DESC_IOTLB_PASID(val) (((val) >> 32) & VTD_PASID_ID_MASK) -#define VTD_INV_DESC_IOTLB_PASID_RSVD_LO 0xfff00000000001c0ULL -#define VTD_INV_DESC_IOTLB_PASID_RSVD_HI 0xf80ULL +#define VTD_INV_DESC_IOTLB_G (3ULL << 4) +#define VTD_INV_DESC_IOTLB_GLOBAL (1ULL << 4) +#define VTD_INV_DESC_IOTLB_DOMAIN (2ULL << 4) +#define VTD_INV_DESC_IOTLB_PAGE (3ULL << 4) +#define VTD_INV_DESC_IOTLB_DID(val) (((val) >> 16) & VTD_DOMAIN_ID= _MASK) +#define VTD_INV_DESC_IOTLB_ADDR(val) ((val) & ~0xfffULL) +#define VTD_INV_DESC_IOTLB_AM(val) ((val) & 0x3fULL) +#define VTD_INV_DESC_IOTLB_RSVD_LO 0xffffffff0000ff00ULL +#define VTD_INV_DESC_IOTLB_RSVD_HI 0xf80ULL +#define VTD_INV_DESC_IOTLB_PASID_PASID (2ULL << 4) +#define VTD_INV_DESC_IOTLB_PASID_PAGE (3ULL << 4) +#define VTD_INV_DESC_IOTLB_PASID(val) (((val) >> 32) & VTD_PASID_ID_= MASK) +#define VTD_INV_DESC_IOTLB_PASID_RSVD_LO 0xfff000000000ffc0ULL +#define VTD_INV_DESC_IOTLB_PASID_RSVD_HI 0xf80ULL =20 /* Mask for Device IOTLB Invalidate Descriptor */ #define VTD_INV_DESC_DEVICE_IOTLB_ADDR(val) ((val) & 0xfffffffffffff000ULL) @@ -471,10 +473,17 @@ struct VTDIOTLBPageInvInfo { uint16_t domain_id; uint32_t pasid; uint64_t addr; - uint8_t mask; + uint64_t mask; }; typedef struct VTDIOTLBPageInvInfo VTDIOTLBPageInvInfo; =20 +/* Information about PASID-selective IOTLB invalidate */ +struct VTDIOTLBPasidEntryInvInfo { + uint16_t domain_id; + uint32_t pasid; +}; +typedef struct VTDIOTLBPasidEntryInvInfo VTDIOTLBPasidEntryInvInfo; + /* Pagesize of VTD paging structures, including root and context tables */ #define VTD_PAGE_SHIFT 12 #define VTD_PAGE_SIZE (1ULL << VTD_PAGE_SHIFT) --=20 2.44.0 From nobody Sun May 19 01:43:06 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass(p=reject dis=none) header.from=eviden.com ARC-Seal: i=2; a=rsa-sha256; t=1713801246; cv=pass; d=zohomail.com; s=zohoarc; b=d3ixw+Sw/6iBBLaV+4Gom60UcS0FB27zbrIOOdY/KTiwBhN/ZCT8+m9hihITN1BnvVPRR/xhTunFX2QtQfSOP4i33B9oTYd2cBEAlpeazMwu9uTeFifDKTEz96aMMQuhzPLJXiBX2kStaD7y3zu4a4t9Rovy5NvwfneQbMgz3PA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1713801246; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+LHzGGTePn0RaqptDHEDrSl1w04MX+QIm9g9KSw5pQc=; b=fLynywtBAUZ+shbV5eDDkVkk2L7/3oel286pnowl2oCGXGQFO1qjjT9v9Pj1UAegwiAd4TizmXPyQWA7IFxjlk52/n75+BYcq56eTDrgCnshuR8U5+g34OC9ANWiPRGxVZkGbdilCnXb02FrJkOJ+BAlL3oXamDHplFA3I4FQSM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass header.i=@eviden.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=eviden.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1713801246018638.5568577884623; Mon, 22 Apr 2024 08:54:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ryvyg-0007GU-2p; Mon, 22 Apr 2024 11:53:10 -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 1ryvyc-0007En-KK for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:07 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ryvya-0007bi-A8 for qemu-devel@nongnu.org; Mon, 22 Apr 2024 11:53:05 -0400 Received: from mail-am0eur02lp2233.outbound.protection.outlook.com (HELO EUR02-AM0-obe.outbound.protection.outlook.com) ([104.47.11.233]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2024 17:52:57 +0200 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DU0PR07MB9626.eurprd07.prod.outlook.com (2603:10a6:10:31e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 15:52:56 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 15:52:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1713801184; x=1745337184; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=+LHzGGTePn0RaqptDHEDrSl1w04MX+QIm9g9KSw5pQc=; b=KmnyE0vNI6+c/bn568bZgrNIUcG9g0L5PsbQwEdTi0aR+Ff6w9Xb02NJ LYdhRRpmd1lIuCKI5DzdnenJOQDCurVrvh/RrcGoJJ8jb5UyBoNX/4Jvx qweGOSUPAOxbrnIIn1bkdOm46jpn525fko1S+6ww5lBHFqxfnI72L5rON L68VYtXujDRKhhJbQRcguOdjY6pOmKXdhkosapmPwe309RAASM6sPEVDx jSBdyxt3q74j6vyJunCIDaTM2z2HgK0NgfnCNamPvdscencx3eNYgsp0s ZU+LJommxAJJcz8Q+da8jklKcdUrH6LlRa/PWnO6cjDlfxAKnQ68h5hnM w==; X-IronPort-AV: E=Sophos;i="6.07,220,1708383600"; d="scan'208";a="11027676" X-MGA-submission: =?us-ascii?q?MDF9dV70uxgRkGjiilNgkvw3ImfiopoTwfS/FU?= =?us-ascii?q?tF847X224Ro7b4qpqXqEDKjGqUJWYM/EFfm7j3EG0N5R8imFoDdqVSIW?= =?us-ascii?q?LN+o5JefLoShLPJ9fErWw4bdqCVAJhDxd4N5IQLSdV+u9/QFvIQmyBVS?= =?us-ascii?q?wSTnJkOmrACO9S9tK2LQGvyw=3D=3D?= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MsZgWHNybD8GTzbjdZcT9/G4Iq/m7dZxj4LIfaaeDp+/tjaw8yB7bK4kGBamBl9DjJ6ofrw+fgK1UxFCIle87qYCYRJMZl92Vt4X46wVyE8/RQip6x04ZgnFzKdsLuqDFK8zMFcqhDPYrd2aJvFp0R2H88fWqu/hduZWMj4TSWbnYNBYdqWSoNUwTr6DCpZRhzYoXJZn39uMqAO3I57tSDj+1TNPR6ulRHwJBQGTLeIEfFx3PYDZl8x1z8sOwLzfk/i6fKLSBqc7iBzyQNkGt9gZ9ZAx4p6Cur8Tt7l4HRl4NXq1e13aqRg1n/7jibKaIr8eIP0Q/KZCSahrNHw1Kw== 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=+LHzGGTePn0RaqptDHEDrSl1w04MX+QIm9g9KSw5pQc=; b=JFzXi9BQhTQ+NYxALULqdpTHYafUtf+N/INn0sneQHi8Ko6NCij52TUvWbqcg/E40W0x4KNm68EfTdipS9Htab1LSmkYIzBVvfW9Vw35ZampKSMbJSre0j+Ryy45uG3R9plWK/AR05udVbVCKELTRWSFexBmg/8Ur2HWb2J6XmTXu4wHb3dZIyXZ37hTbl8M9ZO+BThKnxMluKDprmiTenln7V3vP+n60Q7EWI0mP/PB87tB17wzXl10zu+I1Yw47L2Xr79FgtHcgnJj9mkNOaJ7MfCzKws5xB1xMe+yECNcPB5M1Db/CVRD4QI69ur2LtrZ7d/fNXq5o+xN7UH+hA== 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 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH intel_iommu 7/7] intel_iommu: add a CLI option to enable FLTS Thread-Topic: [PATCH intel_iommu 7/7] intel_iommu: add a CLI option to enable FLTS Thread-Index: AQHalM0jTHnuMRmV0kmlngTXDZeiHg== Date: Mon, 22 Apr 2024 15:52:53 +0000 Message-ID: <20240422155236.129179-8-clement.mathieu--drif@eviden.com> References: <20240422155236.129179-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240422155236.129179-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_|DU0PR07MB9626:EE_ x-ms-office365-filtering-correlation-id: baf614a6-9162-4e33-b458-08dc62e446de x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?utf-8?B?U1hvTnBmMHZRRVRyK3hIV254YWV5dG1VV3ZsNFBSYzdFSG1Fckhlb25oeGdn?= =?utf-8?B?dHdXUlkxUmorbXNuU2lENWl1bFJuY1RFaGplcm9EYkVyajhVRVFoQzhBdmNY?= =?utf-8?B?V2xWREtLUDdTZnVzKzVqK0FsU3VWcE1tSWFHVmxPTzhuZWlFSTR4eFkxUklT?= =?utf-8?B?MUNNQmtjbVkwQWRnOFlMZ2Z1cFpXb3hMak1PVS9oQkdLSzJaL1V6c1dpUzdv?= =?utf-8?B?Qy8xenQzZnRGN29wNUNoSmdzMkJ5V3lGSlZ4Ui9PWUl2MXM5NEpaVFZNckli?= =?utf-8?B?RGlEM1JSVUEwMU9kdk5tRG1vWGRGZ2Y5akhmdUVPVjZ6YTJiTEhGSmJReERk?= =?utf-8?B?ajhDenBiUy9GdjhkNmRRRktkcjZQdmF5cHBRU3ZER0prY2RUWkExY1ZLc2lo?= =?utf-8?B?dFFoQ3JZWkZPanBQT0VsejNWZmJISVJpL1dTRFlpU2NsM0ZPYUxlRlRJQSsw?= =?utf-8?B?Ly9BcjJXalh3NXRrZUNTOEFHMGFzWlhCTCtSMUpqVHArU29vdjk5Y0pSblU2?= =?utf-8?B?RzBBaFhMM0owcFZYNEVBanNoWUVvSFVjSWFZNmFnd0x0TVh0K0IxcUE1aFJs?= =?utf-8?B?MUxudTdydWg0MldBNVYwTjlnaXlDSG9QdG1Tckp6Umx0S2JvcVlCaThMcXp4?= =?utf-8?B?eEdSSHBYUE0xTFJiV2NtdzBybXRMZDZZQTdndkxHa2o4czVnamUxYlliaEt4?= =?utf-8?B?QmFrWGgxZ04xSXowMWVnT3Fib1VHekZnMVp3a1RQelJSSGQ2K0dCVTBFMjJx?= =?utf-8?B?Z3hEVHNjZDE0WDdjajhQbEh3UGUwUW54TngzWDhiRStDY3J4dks1a3VUTEwy?= =?utf-8?B?NFFmZmFMajBFVkhBZlJ3MnI0M2Y2bk54UUw2OEpTUmRQTi9FRCt4cHBvcnli?= =?utf-8?B?N3dqMEZqdXYrSHZtWWlncWJ1T2tKNk5lVkZQMUs4Uzl4TDNuZlhmNFNQdm1I?= =?utf-8?B?djRkeE1hVFVNT1Fxdmw3Q1AxeGpORHVXd2RTT3VueWJHRlhMN3d2bWJGTTBv?= =?utf-8?B?bHo2ZG5lTzRHNStTZUZSRFcvWldSOGdEMmM5MUROZmF0Umk2SyswUGhqbFBm?= =?utf-8?B?VEJTRW4reHBVVjlnSGR2RkM1aUNSZWN2Smg5R1NNL3dnaitJem95L3lyeUhi?= =?utf-8?B?dktTYjhRV3hWVGdFbm5waUFDMlZ0Y3h6U3Z6a3A3TEpQb3VZTGRFVzdPY2FS?= =?utf-8?B?OW8rck5wandRbWdUTmp2TVErLzh4aGFoeS9EQWl6VnIrN1RqbklCQTZTL0ta?= =?utf-8?B?dGJjREpJdVlKL3d0OHlJT0FyWHJlWDBYcE95bE4za3VQNHYxVU9nZExaZVdZ?= =?utf-8?B?TXJyZlh2eWFkRFFjR3FSa21EcEFkVVJHYkYzc0owS2VMd3YvdUw1bDkwdTFL?= =?utf-8?B?MFcwZEMxdmp1c0h0SkNUK1NXUysxRSs4N01pQmxqVVQ3eitxdnpOQUUyTTFI?= =?utf-8?B?U21XWkVtb2V1QW5WSmJaWlV2clF1Ung1VHl1NENKRlYva0N4NEIwTmxDcUg2?= =?utf-8?B?L0V6a0QvYVVNR0FKVTU4ZGpQa2gxQnFkYVdoV1pqbE8zcFF1TDN1Um1GK0xQ?= =?utf-8?B?OXV3MXphSjZzUlo5RXR4ZWlMVUM4c0pYRmRVc0ltUG04WTIwSU5GUFcvYnRT?= =?utf-8?B?VXhLLzlMelg4aG50a2NLaHVoK3JNbnVVblFjWGJQcWdBeFRpK2t1ejVWaFcz?= =?utf-8?B?VE5UOFozS3NRZVF4K0NXODU1eHlXQ2VKa1RuNzhwdXpzL3pKWThHYzR1cEFX?= =?utf-8?B?cUZTR1RnRGxiZWlzeVpnZzJiVWZsQjgyeEZnV1VGaTQvRDV3UVpvVEpPUll1?= =?utf-8?B?bDFrd1NiQVdGdGJvTFpGQT09?= 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:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UkhNZkU4dEFzS0lIMjhIdVNyK2tsc1RBUXpFMlltazlZUGFjRGtWSHlXUEEr?= =?utf-8?B?clRTN2hWN2drWFJ5UFZsc2FxemxJNmNGNVRURFh6ZlFoMXdEUE9NTFJZUUpG?= =?utf-8?B?dzFNNjhML0lZTkx2TWNRbW84eld5Y0hyejdIN24vb0YyekFKL1d5d0xERU90?= =?utf-8?B?TkRKY2dNUEl2UWVGMDc1MWh3SEtDWDAyT3RkSC96Qlc4TUs4UzVzSHBaWDNo?= =?utf-8?B?VWcwTDlMSHdyRlFFUXNvUVdNRERNMWY2Qm5OdmJDcUg1cGttTDZaYlRJVWtG?= =?utf-8?B?TXdxUFJ5eFJZaTdIYUppam56eDI5VTRFRWNYRVBjYWhJSTdUbkx5TGQxZk5t?= =?utf-8?B?Vm45RWhuOSsvQXp6cnB3YnJYdkZQbUpHRm5HZHNPTG4vRlo1TERFVWpTNGd0?= =?utf-8?B?TW5Sd29oMmhVVDA2VnhsL3B0TUZyK21SK2x3MGFPWVFaMy9wVk83cDVCQlZX?= =?utf-8?B?YmZsRFNySDNCVTR0MG1XeiszMkFqNmhjL1c2R1lqM0dkS0NOZE0wS0Y4c3hC?= =?utf-8?B?U3RiY1ZWYWo5QzJMaWVZdjdDZ3hPZFNsaWR1WFJvSGprdnlMdmViOUVLdUVq?= =?utf-8?B?VEtFU3JJdE5PZWFWS0ZvMWRlMVBjdjZib0M4OUk4MVdCanI3UFgrMzlBd3ZV?= =?utf-8?B?bmVOeWw2RTB2cXBJYkJ3TXpLMGlWRk1SVWVNc2RxTUMzWGZGOE1SRTBTYmlw?= =?utf-8?B?QXVISjExZkVEdU93d0xvRnRBR005ZnZ5dGc1SVZPd3MyV1ZGTFNzLzJ3dnQz?= =?utf-8?B?VXpMaGYwUisvWEpobkdNeHFaZXhpTVBUMklJaHIvdFl6OU1iM0U2cWRDQk04?= =?utf-8?B?ai9DR1hlSFJEb1YzYWd6amhTajdLVkRPcEc3cGMrQ0htbHQ4aUR4V0lWMDVG?= =?utf-8?B?aEdqZ2RUanVOTUp3dmVpdnhTOW1IQTJrSHJNNVZSOUFrUmprNnJNdGVXbnhr?= =?utf-8?B?OTYrQndXbkIrUjhGZ1g3VzFwUjRNQ1h4emFyWUZFOSs4QTBVRnFJdThEeWxl?= =?utf-8?B?a2JCeElsWEI1VzgzY3ovTWczdloyRG1sNGhsYnNxYXEyb3Rua3V2VHkrUjJD?= =?utf-8?B?cWtOMlBBNVpRZWtTSWIzc1ljYVBPTitlblhzWkc5M0srZkVUUXYyYTUwOUFT?= =?utf-8?B?RTdsMXBzbTllNTUzTi9iaDhsYXF6UUh6QkJBQ3pIL1VPU1BDMEN0QTJYbzBo?= =?utf-8?B?bk9mVEtKZ09EOSszcnk0ckxZeWk2akZiSWY1NHJwS3hTU0U5aWxFK1l6SzZv?= =?utf-8?B?NTI4dlBBQkpQM01XdFhYRTNuUFpwdDVTSVFHR2xDU25MLzR5ZS9Tb2dMZmNR?= =?utf-8?B?WUIvRURaQUVMMDgxRExmN2xhY0xLMnZTQ0x1U2RKQXBDVWhJWGhvVnhzTEhy?= =?utf-8?B?aFBxMlo4QVhsRW45L1BYRDVEUkMwT1J5Um96QkNKYjVjMHBIcjFqVnVnZi8w?= =?utf-8?B?SEVyK29XMzJXSUthaHVtZEltd0RLVXFZWmVSNEdCaU1mMWNZQkZxRy9wc1l5?= =?utf-8?B?WUhCRVJrY0RLYTVsZkJYd1ZXY3AvVnJxMnRBNys3a25VakRLYmd4dGtDV3Nl?= =?utf-8?B?UzAzM2g3L2NBWUJwZGdjRG9wSHBXUVZOVGtvM1lJeTJ4Q04vVkVLV3NDaTU2?= =?utf-8?B?ZzJmY0llOTN2Z0lSalVQbWFxdVJrdDB1NVRsc0dTd0J0YktwNll2SzRMbjhh?= =?utf-8?B?UE5iRVhKZE1qZlJJK1ZlWkZ3Y1Z5cWp4L0k4OFNrTjlWaTFmQ2g0SWx5aFJ1?= =?utf-8?B?SngxYkt6K25OSWx2V0ZYUlVIRWNFODVQUkVudlZhVE9QSlNmVVIvL3BKWFox?= =?utf-8?B?VHVDVXgyeFVLYkU5TGxYSEdLSDJmeE1CNGc4Z1EzanloeTExb1pYeG9VNVZj?= =?utf-8?B?RUlsd1YxY1p4QmFjSmpDakh5Z2Y4OVY2eUFLU20zdDRyRXNKamN1U1FINndy?= =?utf-8?B?MUVvZFdwNTVTbHErUVN1MDZWcXBsS25zSmE2dGEycTl6YjVZcmVCbkR2Zk5j?= =?utf-8?B?RTNwQzhtUUV0U3c5cnZaazhrN2FIaE9ZZFVjbmloWEYwRWRvL0Voak5yNVBT?= =?utf-8?B?MlJmTHMzbUphSURiMVF5eEkrc2pwb2pxK1J6eWhRZ2pBUzcrbngvc2FyRzVT?= =?utf-8?B?cnNPYmx5TVF1NVVhdWJPOWdLeDlmWUxVWTFlWkRXTk02NUowZ3pKMkFKZGlv?= =?utf-8?Q?YY7Sp8zAqNxPl3UaXHtwemc=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: quoted-printable 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: baf614a6-9162-4e33-b458-08dc62e446de X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2024 15:52:53.9903 (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: jNFH02bBBIs0P2Jhc8nUZotgs4Xn6HPW7LHFwyza29EUxH0aKhIXpyhHnAK6Kfr/1lV5eztAtRGCpM5efh7MdKXU2BkYkU6PAI8w43lecvQaO2+Vj+lC72Gn0iQWaB1n X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR07MB9626 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @eviden.com) X-ZM-MESSAGEID: 1713801246649100001 Signed-off-by: Cl=C3=A9ment Mathieu--Drif --- hw/i386/intel_iommu.c | 6 ++++++ include/hw/i386/intel_iommu.h | 1 + 2 files changed, 7 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 4b54a45107..c35ccc3a98 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3704,6 +3704,7 @@ static Property vtd_properties[] =3D { DEFINE_PROP_BOOL("x-scalable-mode", IntelIOMMUState, scalable_mode, FA= LSE), DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, fals= e), DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false), + DEFINE_PROP_BOOL("flts", IntelIOMMUState, flts, false), DEFINE_PROP_BOOL("dma-drain", IntelIOMMUState, dma_drain, true), DEFINE_PROP_BOOL("dma-translation", IntelIOMMUState, dma_translation, = true), DEFINE_PROP_END_OF_LIST(), @@ -4413,6 +4414,11 @@ static void vtd_init(IntelIOMMUState *s) s->ecap |=3D VTD_ECAP_PASID; } =20 + if (s->flts) { + s->ecap |=3D VTD_ECAP_FLTS; + s->cap |=3D VTD_CAP_FS1GP; + } + vtd_reset_caches(s); =20 /* Define registers with default values and bit semantics */ diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h index b9a01556ec..6ecc8bb8a9 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -263,6 +263,7 @@ struct IntelIOMMUState { bool caching_mode; /* RO - is cap CM enabled? */ bool scalable_mode; /* RO - is Scalable Mode supported? */ bool snoop_control; /* RO - is SNP filed supported? */ + bool flts; /* RO - is FS translation supported? */ =20 dma_addr_t root; /* Current root table pointer */ bool root_scalable; /* Type of root table (scalable or not= ) */ --=20 2.44.0