From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 5DDCDD802F3 for ; Mon, 29 Jan 2024 19:30:41 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=Umzs0CuJcAQf0ZCY0SawfZCCNk17j2B66qtq++0SblA=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:Message-ID:Date:User-Agent:Subject:To:Cc:References:From:Autocrypt:In-Reply-To:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1706556640; v=1; b=PQMqjk2gMKPoycjOM0cF9qQq5ffOnHmOcAW0Y5p5v58cy3kM7B2z6EU9Wdz74M3xZkqZiIi7 EmWQeq098SPtqmRLY0tkF8EseFKk1cn4x4jA6lBmDExEpggo/UmUDRqxNTjuwlA1c2kDO/QcWni LyDOFGhLWicW0eRz0cGh7VUI= X-Received: by 127.0.0.2 with SMTP id maRqYY7687511xkUheSdCQk1; Mon, 29 Jan 2024 11:30:40 -0800 X-Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.83]) by mx.groups.io with SMTP id smtpd.web11.4592.1706556639208219519 for ; Mon, 29 Jan 2024 11:30:39 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LHqb6Biey9lp6KJhVAjac+oLVrbBEUo5APJRe+EOequseRZRmfVHxfLR/sbNRsK9z48yGA2jzJr8Z4NZ7tUug8iEOHzuPkerak787AZxO0eqRxJq42dyPbrsUO5YNKZ0YRdSi+oosUZrHqpINg6gziG8T9gP+qZcW4py35doDt+2VgUPgsGziQkcb3Dl7iBapomrimif/JihfFCLJG2yMo3KRswZQ6a0+hDIqkHhHFAH4jYBMAN73N+0MReDAz0qhOG85ciS+5dXQW4x4nTesly1qDFi7AGK4zpdqBELl/AFTC3a3ZE5LfsUuYVAUqJXEu3VAYiFktMdGOXhlA5row== 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=1ZRuvD3/Mwv2imPLGTwLa/qdwFZk6sQdItbtistiLXA=; b=Woq9+x/EgVIcKQPFlYxsBj0VcAJbQxioPvWdXsT5Nvh7FfOD8klJzQMbze+3VWBeyfsfj5HUzekIRBIZq920LdZcZuGnDVrupJuFt12glV6kLFFljLZkR8/XyMgtzVcaWpwwK2D4nwjjpm3uKfroOacin8I1MJzIVaDkin8JEysuSgvKinGNQMt/IvgytGnKSV7sVOR5X3js6RMyliG9ppDsOAVbNL+j4KFtZnGa91f2couDQt0VvQxCOuDLJMPdoZ4l39KoIizYKvZBvaNTrmOmzLuKopl9e9RTyG/fIZeJRKjVYC1WwwZGlU2/W2NqdfKjiiiel36BOEvn083NJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none X-Received: from BL1PR12MB5732.namprd12.prod.outlook.com (2603:10b6:208:387::17) by IA1PR12MB7640.namprd12.prod.outlook.com (2603:10b6:208:424::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32; Mon, 29 Jan 2024 19:30:36 +0000 X-Received: from BL1PR12MB5732.namprd12.prod.outlook.com ([fe80::200:c1d0:b9aa:e16c]) by BL1PR12MB5732.namprd12.prod.outlook.com ([fe80::200:c1d0:b9aa:e16c%4]) with mapi id 15.20.7228.029; Mon, 29 Jan 2024 19:30:36 +0000 Message-ID: <3474f3a1-f90e-4e61-a7fc-5c659ce150c6@amd.com> Date: Mon, 29 Jan 2024 13:30:34 -0600 User-Agent: Mozilla Thunderbird Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/PciBusDxe: Add feedback status for PciIoMap To: Laszlo Ersek , devel@edk2.groups.io, w.sheng@intel.com, "Xu, Min M" Cc: Ray Ni , Huang Jenny , Chiang Chris References: <20240122064706.2059-1-w.sheng@intel.com> <686c8bd7-c0de-9429-1577-f436c347c314@amd.com> <451fee11-e982-802f-c30b-1b90b2251d70@redhat.com> From: "Lendacky, Thomas via groups.io" Autocrypt: addr=thomas.lendacky@amd.com; keydata= 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 vFkWitqCJg== In-Reply-To: <451fee11-e982-802f-c30b-1b90b2251d70@redhat.com> X-ClientProxiedBy: DS7PR05CA0097.namprd05.prod.outlook.com (2603:10b6:8:56::26) To BL1PR12MB5732.namprd12.prod.outlook.com (2603:10b6:208:387::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL1PR12MB5732:EE_|IA1PR12MB7640:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c45f444-c9d8-47bb-b98d-08dc2100c4ca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: IaRKsqoXjr9HfHggSy7871htdsGBp0FWOhwV4RkfMKLrIwNzXIfj5sGuY6UWmOwKMqeQsWiimzRbp+JWIH4qlqm8kqJTULCrZPK1fHrJLnAn2f86QNvtRGbEaeY3h5zvAiwnP1LfumeQfMaec4YfQOhRhdJyo0GZvV7gcw5rAS7BnzMlZijXh1Z0NGS/bZd27r9Bvc7rfdUuHRQONTHJ+3T/v8ZBfNo5WAotQQFnW3iiO5ZR4F9twAJ9m80wyZMvOsvytM9pKucq+Wg5eq9XNZ0p7AYWrk7I8VxJ4O1wTiHjXXmdXn46K0RmhATdibmREpV4yJiGrTQe93YeHEVu6njjKjgq8ZJev0UL7lga7uJM8NLKA0kv7b/0ZkNlrzkWCkF6hf/x1RLOu0gjBw2xW7rWMXnrJc0mwjsyCL71p1YWMO90uwNG/1vBfy4L/H2wZrrqIWNydG2DfF4bSMgrUEPp1TDvJ+v4aOcfdM2EVkevzIAQOBMO3HlSqthEEHEvuoZs18nCIKQEzP63NXAdBg4Njo3c3flJpuN6Pae5sO6kRNQg6CqRyx3/66pkp6rg0tmeUX7I9/Hkl7Hto8HuKSYYEUfbtSnFzg8uYwNVvBgqHGkUfRNkM5ld0Go8m7cNiWOkBuvX/NzzYEFo8cdPyw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?V3Y1aWdGV2YyRHYwZWdNQ1JvZG11b0t0a3dBUDFXZk5CUjJHdkhMekd5MndE?= =?utf-8?B?N2s1QjVkL1hsbTM5byt4SFRrdWthU1ZNdmM2VGVxZmI5dnlVcXZ1UFZhcEVG?= =?utf-8?B?N2tNWXVoOGF6RWRxUHUxSXZERUpyOHJOR1BCTTBFWUNsZ0psQzYwMkNxTEJi?= =?utf-8?B?NFhCQlBTNExzYUY0MHBPRGc2WUYzWmRzUXZ5L3JJaWhMUTBQMlBMOVN4UVoz?= =?utf-8?B?NXNPcnZSaU5yS3JRM0xpUGNhSkhYaVV1NkZHNjlmemYxc0hSTWVETmNKakd5?= =?utf-8?B?WWJPUjVzSXhKTDdBbWVZYUloSXNSSkY5VWN3YkQrYWlNYllNRjRFNllyd3RG?= =?utf-8?B?MjRwTklWcEZCSjcyM24yT0hMTjdYbExNUEVyMDRIMTQ3YjVYTDBiVDFmUlRP?= =?utf-8?B?eFNINWV6U2JmMlVYQVlLZEluVXJjanVBNXQ4M0ZNamM5d1RBREorZDFiZndp?= =?utf-8?B?NktLeVl2cjg4Z0s0VHdSZkFlaTR3d2FwZE1JTWVDUkZ3M0tsdVU4VzhQenVN?= =?utf-8?B?ZjNvYnF4L1poTHJOVlpWNXo3Ti8wS1prck5Kc0JCclVFeUtxYmhEYXcrNnh6?= =?utf-8?B?ci95T3IvSUQ3NGxJRys0WGlqTSt4N2c5MG5abVFna0pKNkYvOTZ1M0ZxemNv?= =?utf-8?B?aDNSWnREZDNZZ1VoOERjREcySHhETUlyemY4M0JFeXNET2RUUE56UHBHU2Fh?= =?utf-8?B?ajNvT3pJbWp1dGM4SEtvc05CUVZhR2VrUnB5VWhUdVhmbmJYaHJUeTdGWlEx?= =?utf-8?B?QW1jUEdiWk1VdndlZ1gwQVA5RFVQbStEVFlNNXM0ektDNUpvWnVKTXU3RUNH?= =?utf-8?B?Yy9pcVNpRDhDUkN0OXZweC9yMlNxdHk2K0RSdTVSVVNiVkg4bDQvMlBoMlBJ?= =?utf-8?B?dlQxVlJGNVpjUm9GaytlWHNlMXNnelArMzJhUElFa1ZocGdJRTdNN3daWWNH?= =?utf-8?B?NzQ3ZlZ3VSswNk5mbkdiNkJTOENNYnlGdS9PMWRTQllpMzg5ZmJhMUlCWjhZ?= =?utf-8?B?Ymp1eENvbnczWkdmUlYzL3hsZVl1cDJFaEgwZlUrRFN1UzFwckswM1FINFEz?= =?utf-8?B?NWRjZFlvVTM3OTl1dkRKb0dFMGJ3V3oxeHdHMCttOTV5bFFBQTNHd2xESncy?= =?utf-8?B?OUxXbjN0R1Jrcit4WXg0UVZldE1pQjF4VnJHQUFlbXdmd0ZQNDhrTmx0dXcz?= =?utf-8?B?ZHJnY2hLVU1sNkdWUzQ2bElrRm01WW1ma3BZWXlXZWg4MmhFVGNUZzNrYkxj?= =?utf-8?B?MFVSbXdueGpzenBycWs2ejFoNE9zcmNjcllBQUhPTmZFdXhJaVRsb2VrR01m?= =?utf-8?B?dUUxUmFPWG9Na2ErZmxHOFBRZllsNUJZclJLRU1rSTFwZVdOWTl5Yy9WeUdR?= =?utf-8?B?L0JnVGM0NWViSmh5SjVXZWsvbnoyTmYxd3VKNnAva3dnN0hiZzl2dTJvR0Rx?= =?utf-8?B?R2g5d2VuYWRTbWwyYlJFUGVGbm1BUCtVOWtPYWhHazR2Qkh3UE1KWHlGWE1y?= =?utf-8?B?R3hNdi94VWdxZHlTWHc4L1hXU1ZBSE5rd3ZDK0JSU3FHTUhvSUtDUlMzbktL?= =?utf-8?B?cjBDb2ZuSlcxQ0xLeUdkUk5HOXFPZUNraUZ4a2F3eUZkT1B6YjdXVUhFZXNH?= =?utf-8?B?OVV5MXFPUitWT2xpT2kxRWlRSWE1NHVXdHN0TmFoZVF0MXZTNXBnb2VpWGU0?= =?utf-8?B?Tk1nTk4xaGJxRGtMd2NoajVhWU5YSnMvNHhva1ZOTVJXaWVxa29ZZW1QSTdJ?= =?utf-8?B?Q3g0cGlQOEoyR3NaOWQrWUVLcTBBS0ZsQXVSNGVtbi9BOGl2bEpDZmhLdUxB?= =?utf-8?B?bGpJMVUxRnl5SytVSTA5d3ozRW5XYVdlVVhQM1JsZC9PRFUwdzRRaFFRWEN5?= =?utf-8?B?cGhlL1F2b1hQK0FUQk1OdVlaOFgwQ1dYYmVBRXM1dUQ0aXhFL2huclQybTJw?= =?utf-8?B?RHZoZ3duOFllZzhMb1BmZUdMVGNzd0N0STZTZmE0bUEybXV3Y051dU5SeXZW?= =?utf-8?B?RkRab0FKMEREc0pBMENVQTlSS2RhQ1B2cnRwdHovQ3hlbUpvcnhYQWdTbWVz?= =?utf-8?B?OVBpQTZqMUJIbVpIN2VkTEp5eUo1TENsTXJKeE9GQVl3c3V3OCtNY3J3byt6?= =?utf-8?Q?bn5ut8vbQdkHcKSVEEJyz78oh?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c45f444-c9d8-47bb-b98d-08dc2100c4ca X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5732.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2024 19:30:36.6438 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GOQKP+W/DVwwN3ZZ3DlI/ZiTo7rZ1gh3uTdz5iVPt4SuG71jvvjd/USRMqimTz04kY2ftHmCGv4XJvOYlRQ/cA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7640 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,thomas.lendacky@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 40FGBP0TykBhUjI7dyp0gqO9x7686176AA= Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=PQMqjk2g; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=none; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") On 1/29/24 11:20, Laszlo Ersek wrote: > On 1/26/24 18:56, Lendacky, Thomas via groups.io wrote: >> On 1/26/24 11:38, Tom Lendacky wrote: >>> +Min >>> >>> Adding Min to see if TDX is also experiencing issues around this >>> recent change. >>> >>> Thanks, >>> Tom >>> >>> On 1/26/24 11:21, Tom Lendacky wrote: >>>> On 1/22/24 00:47, Sheng Wei via groups.io wrote: >>>>> PciIoMap () need to feedback the status of >>>>> mIoMmuProtocol->SetAttribute () return value. >>>>> >>>>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4652 >>>> >>>> I'm still investigating, but this commit breaks booting all types of >>>> SEV guests. Without this patch, there is a boot device mapping and >>>> the Grub menu is displayed. But with this patch, I receive: >>>> >>>> map: No mapping found. >>>> Press ESC in 1 seconds to skip startup.nsh or any other key to continu= e. >>>> >>>> and then drop to the shell prompt. >> >> The IOMMU protocol is installed under OVMF when either SEV or TDX is >> active. The SetAttribute() function of this implementation has always >> returned EFI_UNSUPPORTED, which is now being passed pack to the caller >> of PciIoMap() and thus causing a failure. >> >> Should the SetAttribute() function in OvmfPkg/IoMmuDxe/CcIoMmu.c return >> success by default? >=20 > I don't understand why the EDKII_IOMMU_PROTOCOL.SetAttribute() member > function exists in the first place. The documentation on > EDKII_IOMMU_SET_ATTRIBUTE says that having specified BusMasterRead > earlier as Operation for Map() corresponds to EDKII_IOMMU_ACCESS_READ, > BusMasterWrite to EDKII_IOMMU_ACCESS_WRITE, and BusMasterCommonBuffer to > EDKII_IOMMU_ACCESS_READ|EDKII_IOMMU_ACCESS_WRITE. This makes no sense to > me because (a) these settings carry zero new information related to the > earlier Map() call, and (b) the Map() call will have set up the > IOMMU/memory config already, based on Operation. >=20 > In PciIoMap() [MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c], there is first a > call to RootBridgeIoMap() > [MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c], which in turn > calls Map() on the IOMMU protocol. Thus, I don't see why PciBusDxe has > to do anything extra here, in the first place. I wouldn't call > EDKII_IOMMU_PROTOCOL.SetAttribute(); what's more, I'd argue that > EDKII_IOMMU_PROTOCOL.SetAttribute() itself is mostly useless. (Not sure > about "ACPI" devices; i.e. not PCI(e)). >=20 > Yet more confusion is that in the documentation of > EDKII_IOMMU_SET_ATTRIBUTE [MdeModulePkg/Include/Protocol/IoMmu.h], the > EFI_SUCCESS return status is described as "The IoMmuAccess is set for > the memory range specified by DeviceAddress and Length" -- but there > aren't even parameters called "DeviceAddress" and "Length"! >=20 > Then *even more* problems: EFI_INVALID_PARAMETER is supposed to be > returned for DeviceHandle being invalid, EFI_UNSUPPORTED is supposed to > be reutrned for DeviceHandle being unknown. So not only does the IOMMU > driver have to recognize handles it doesn't know about, it even has to > *distinguish* "plain unknown" from "invalid". That makes no sense at > all. The IOMMU protocol has no use for a DeviceHandle anywhere else in > the first place. >=20 > Either way, the right thing to do in OvmfPkg/IoMmuDxe should be: >=20 > - in IoMmuMap() [OvmfPkg/IoMmuDxe/CcIoMmu.c], we already save the > requested operation in MapInfo->Operation (note that this is not > EFI_PCI_IO_PROTOCOL_OPERATION, but EDKII_IOMMU_OPERATION: the former is > mapped to the latter in the root bridge protocol impl., IIRC, but the > latter also encodes 32-bit vs. 64-bit in the enum!) >=20 > - therefore in IoMmuSetAttribute() [OvmfPkg/IoMmuDxe/CcIoMmu.c], we > should just ignore DeviceHandle, cast Mapping back to MAP_INFO (we could > make an attempt to look it up first in "mMapInfos", but that's a total > waste of time: just don't pass in crap, and then you won't get undefined > behavior), and then compare MapInfo->Operation against IoMmuAccess. >=20 > For operations Read and Read64, accept EDKII_IOMMU_ACCESS_READ. >=20 > For operations Write and Write64, accept EDKII_IOMMU_ACCESS_WRITE. >=20 > For operations CommonBuffer and CommonBuffer64, accept > EDKII_IOMMU_ACCESS_READ|EDKII_IOMMU_ACCESS_WRITE. >=20 > Always accept 0 as IoMmuAccess, too [*]. >=20 > "Accept" means do nothing, and return EFI_SUCCESS. >=20 > Reject anything else with EFI_INVALID_PARAMETER or EFI_UNSUPPORTED. Laszlo, if you mean something like this, I'll submit it as a proper patch: OvmfPkg/IoMmuDxe: Provide an implementation for SetAttribute From: Tom Lendacky A recent change to the PciIoMap() function now propagates the return code from the IoMmu protocol SetAttribute() operation. The implementation of this operation in OvmfPkg/IoMmuDxe/CcIoMmu.c returns EFI_UNSUPPORTED, resulting in a failure to boot the guest. Provide an implementation for SetAttribute() that validates that the IoMmu access method being requested against the IoMmu mapping operation. Signed-off-by: Tom Lendacky --- OvmfPkg/IoMmuDxe/CcIoMmu.c | 50 +++++++++++++++++++++++++++++++++++++++= ++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/IoMmuDxe/CcIoMmu.c b/OvmfPkg/IoMmuDxe/CcIoMmu.c index b83a9690062b..8bd95bfc6b90 100644 --- a/OvmfPkg/IoMmuDxe/CcIoMmu.c +++ b/OvmfPkg/IoMmuDxe/CcIoMmu.c @@ -751,7 +751,55 @@ IoMmuSetAttribute ( IN UINT64 IoMmuAccess ) { - return EFI_UNSUPPORTED; + MAP_INFO *MapInfo; + EFI_STATUS Status; + + DEBUG ((DEBUG_VERBOSE, "%a: Mapping=3D0x%p Access=3D%ld\n", __func__, Ma= pping, IoMmuAccess)); + + if (Mapping =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + Status =3D EFI_SUCCESS; + + // + // An IoMmuAccess value of 0 is always accepted, validate any non-zero v= alue. + // + if (IoMmuAccess !=3D 0) { + MapInfo =3D (MAP_INFO *)Mapping; + + // + // The mapping operation already implied the access mode. Validate tha= t + // the supplied access mode matches operation access mode. + // + switch (MapInfo->Operation) { + case EdkiiIoMmuOperationBusMasterRead: + case EdkiiIoMmuOperationBusMasterRead64: + if (IoMmuAccess !=3D EDKII_IOMMU_ACCESS_READ) { + Status =3D EFI_INVALID_PARAMETER; + } + break; + + case EdkiiIoMmuOperationBusMasterWrite: + case EdkiiIoMmuOperationBusMasterWrite64: + if (IoMmuAccess !=3D EDKII_IOMMU_ACCESS_WRITE) { + Status =3D EFI_INVALID_PARAMETER; + } + break; + + case EdkiiIoMmuOperationBusMasterCommonBuffer: + case EdkiiIoMmuOperationBusMasterCommonBuffer64: + if (IoMmuAccess !=3D (EDKII_IOMMU_ACCESS_READ | EDKII_IOMMU_ACCESS= _WRITE)) { + Status =3D EFI_INVALID_PARAMETER; + } + break; + + default: + Status =3D EFI_UNSUPPORTED; + } + } + + return Status; } =20 EDKII_IOMMU_PROTOCOL mIoMmu =3D { >=20 > This would at least allow for a superficial consistency check, without > (a) incurring large performance penalty (such as list walking) and (b) > turning the SetAttribute() member function into a total joke. (Really, > IMO it should not even exist at the protocol specification level!) >=20 > [*] OK, you might want to know why we should accept 0 too. Here's why: > we have *another* mIoMmuProtocol->SetAttribute() call, namely in > PciIoUnmap() [MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c]. It passes in > IoMmuAccess=3D0. >=20 > Here's the sad bit: while this patch -- now commit 049695a0b1e2 -- > propagates the return status of mIoMmuProtocol->SetAttribute() out of > PciIoMap(), the patch doesn't do the same for the other such call in > PciIoUnmap(). That seems like a bug (omission) itself, but once that one > gets fixed, we'll need to permit IoMmuAccess=3D0 too in OVMF's IOMMU driv= er. >=20 > I guess I could live with OVMF's IoMmuMap () doing nothing, > successfully, rather than doing nothing, unsuccessfully, *if* > EDKII_IOMMU_PROTOCOL.SetAttribute() had some public documentation rooted > in reality, *and* if PciBusDxe called that function with proper error > checking everywhere. Otherwise it's just another terrible, mis-specified > API, that platforms must route around. >=20 > Wow I didn't expect to be worked up this much about it, but here I am. I > dunno, seeing crap interfaces just makes me unreasonably irate. >=20 > Laszlo >=20 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114738): https://edk2.groups.io/g/devel/message/114738 Mute This Topic: https://groups.io/mt/103881889/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-