From nobody Fri Dec 27 03:47:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1503491002261952.3872606382515; Wed, 23 Aug 2017 05:23:22 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 6476521E49BA5; Wed, 23 Aug 2017 05:20:33 -0700 (PDT) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0071.outbound.protection.outlook.com [104.47.40.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 14C4021D2E633 for ; Wed, 23 Aug 2017 05:20:28 -0700 (PDT) Received: from brijesh-build-machine.amd.com (165.204.77.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18; Wed, 23 Aug 2017 12:22:59 +0000 X-Original-To: edk2-devel@lists.01.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=CvA43yYOr0PgDKMJ7uYbn386lOh1+JVZEX/McJOaGTk=; b=mojRUYst95x8A+4T2L81DAVInVlpJola1NTvlZ0FToR5E5aXqneOG1Hf3HOo4LVrX+a8jvYWvolTwsz1PBvRcJvuJw4g90JSHUQuOEOpFgjDhAYushtyKAjrF56GtXBOiE65Tt5BO2w2jJzfM34BUYcxbor/89x5he8HPY2C2Yw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Wed, 23 Aug 2017 08:22:29 -0400 Message-Id: <1503490967-5559-6-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1503490967-5559-1-git-send-email-brijesh.singh@amd.com> References: <1503490967-5559-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR12CA0069.namprd12.prod.outlook.com (2603:10b6:3:103::31) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 16a60458-2883-4312-dba7-08d4ea21b195 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:wwpTuem/qwtyj1ZuXFF4U+A04SVmK3PC8KVJrWAzNhxwSCeGs/sc+w01roHYqcVgI3NzE/2tF0ziNVG8n2i2eQnuY+9kX2DT2Rtc9mJSXDtE7tTHW/+ASjUKqvS1vv3FVHZwpUSBnCWc/tmALHJksFutkEl7WnOVj6r9ZjP7SN+eQggxQsRjH/iZYyC3o5l1s+bsP5qNo/il0bxVifnJ2JsiutIrlr60VK5hhjHVsS3GlvbLNz5ZuykjwOlRCLGb; 25:yi9Uo4v0KqUsS5rUPOqx1WOorFZKhCH5bPn9ISK+ppcR+y6gSHwEcbJ2zB8IyJjMDeX2V9kmCL2hbgXWzgfhP3WBpQ9LTyR7t2CeM9WwOoy7d9BEzW00BJMrds+VHzEgQOvYpIXi/gFHhxEceXf3f8A9B6gwSlRTX0UUwPaVSV6xNKLlP7+tpNpQX03JNyJwBqHCyrWsqKfw/l89ZC+MMjO+3cJXC07t8DeaRg7nwuWkvY9o2NYYaJZsJcg0CzSva4btNnbAgNYNYCyVG/MJdVnTLa+x2p2Xoaig6WvHZG73sP47mjNO37ZEb9Og/8XYgDU3AwiOlqTq8Ves1xJOeA==; 31:uxHitBF38bKidKtAonzDIPZqm9Mgoc/w3cVhmbL1YMKRwUha+8UaqaduZeCOEU+ByVz+NaHgq65hYZk2elbBcc4lJhH54VLC4h0rTexkDwNi4WAEfn2YJnr4ChugAe03QSy71bD1rvc6IXfUXPbHIcFSkO1kyDqnG78Unhltnb7rv1MiYZUbfRZBVJ44+1K7bXlE+u/3Lxxa9GKdcMZRV8/ScgLM1AwdXhCszZiUHJs= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:aG5ZYIDmjf9Rq2SBbxHQTYFi6ANIfnX1jIcQgbFdcaTVDeBHUeSXDVcZZ2hdF8iGT8mjO0Ct8ZiKi3ikuQazo1VYgInXnSTMDxzaYYJCsQVBwEh0ORxjpBwcXVhHS8yT09s/pzQIVh//L4sBe446kItEAkr7byz35ArwistR3tApxRSs5OUkgao/rnMbZZgR9TYwbzUV3xecE7L9RkZGACHF6HHYHBlrlFmqBzg8SXH+17lEj4mGip7OxxFtgtyhKTj1p4WBxf2E5KAmSAu7umVAXDavHyWfaLTNmgsUIiglW2D3ebRfsSXRcfYkMD/fg3YKN05/hDONf/3cMnpq6B0fIICftSA35L6tzLpGmCliJnyOg7kMPqjUJBRLC5KDvU6tWEdU2XOWpOr4CdTzYVQtF/8hG1ZDUL2yGrJshrR7hLcApmuAjVnkjeaLzv4P0tBAEm8HHKkckexRQiPjSZgKmTxFBOoi7ixqDuNBprX+KchGD8w0734+Du+6SG5K; 4:xxYvbVAyvfze6QA8b7Gd625gtnsfUodGzZOVmmiot7MDn7DWE9blHOsHq8ZJiFK1wYQ6W+Cu5oFRHCz7cjqX++xFN19uUeMcWcRYoPE8bjprdI3z6wDYSZgp0oB2E2uqA5IHa5JX/Rx8wZ2zcX1beaLIlPrr/9PgRmp/MJsuFOQJ5oPZkimT4WaMdTy3DEspkETNuKy9v/0zSMbFxTRwLaeu7RYZ+wUJgLupqsbr4qGbju29hQhi+9/GPPt2EVqGp6nHO7ruQbmRvFsYGtuY4Wfv6450/WyK3RVW0pX9ofM35iV7rcROC/WyMYwzBpLSmjMjLFIVeip1dpU3ktuiTw== X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(6055026)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123564025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM2PR12MB0155; X-Forefront-PRVS: 040866B734 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(6029001)(39860400002)(189002)(199003)(305945005)(47776003)(97736004)(101416001)(110136004)(6666003)(189998001)(478600001)(7736002)(3846002)(66066001)(5003940100001)(6116002)(6486002)(48376002)(86362001)(105586002)(2950100002)(4326008)(106356001)(36756003)(6916009)(50466002)(2906002)(50226002)(42186005)(2351001)(33646002)(53416004)(25786009)(7350300001)(81156014)(76176999)(5660300001)(68736007)(54906002)(8676002)(53936002)(50986999)(81166006)(2361001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:brijesh-build-machine.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:84l4bnszt6gRIUX/rtwfAtFKjK65lIu//3HbSx39x?= =?us-ascii?Q?sP//4vyu0GgOZy0QZat7hhMJkN7ewpGb3IUBTriOhss9unfn43AOxJmkcO2w?= =?us-ascii?Q?Bt8532ymZprSAtpgUyxr8GaBceTn6ChtPHTMAsftPvf8hPKLgUi3Hh6DOFLx?= =?us-ascii?Q?lMkAHBYyteRnxX/1T2MykEHlxNRKjLAw6IvYLVKHfhary+KXsqDpbpDUxxqI?= =?us-ascii?Q?xIvWMdHqG6lqMBPsqwm56Zfcx4zlD6EAY6eaWd+T7/VtACHbDkcHM4Mx8FhR?= =?us-ascii?Q?HrPsK6jLXOcVwYuFV0VsMq0DU23J49Y6cgOkW9oJ1Jf43CRwzfVqMXhxPOD2?= =?us-ascii?Q?mVq30hJFvVRPw6YYaycX1re42/GQtqcKIjhMy1u1T/j+Ff0l48kYnx+sFb1N?= =?us-ascii?Q?qxucSh10UUYkszaE5ZY7FgUnemk9+qOHZUBf0zRkvbX5kyVzXk9O9lw8EAnb?= =?us-ascii?Q?qZ2dKbdpzAZJUfLf8fxZg2BsSF4I6ki+k+Wkkj8Tuna9G3aFzAiUhcAWSaqm?= =?us-ascii?Q?J4JUm4gXqDy5pRcKih9fHwOjuInNAmjr2qhSQ2tfRY2HG7idaLb6fT43spGG?= =?us-ascii?Q?Xfku+qQr2HjS1hsRHsCHjO83FhiLvu10fOl2vXHxxAc1PqzntRagxoZS6zAL?= =?us-ascii?Q?+w6nkrQ4CIYsiZKWb8zCeoy/XKdcEkQhWIIlqrcAolmUjum3p+CxqEA/Krtf?= =?us-ascii?Q?xXwslyH1HeSeD4OCZh1JVdV8IlA0tK4AVhHZ6pg84EILje9ODZmz3ghH1s2J?= =?us-ascii?Q?iqfhzzuWklkYJrY6FQmaXP7emPsYY+zknBqMEd5aT47YkFZRE6OndbmXju34?= =?us-ascii?Q?ZcXWAWnyGCYYMLzKjQ7jzA/vvpsyd+Y834uhttANyNpdq+V7DO6F4YwcDEgF?= =?us-ascii?Q?pfN2fSsJClZIpMtWw63rMzVkhNbu/w0KvAQE8HPJ8eOowPUFh33wCqTmKA10?= =?us-ascii?Q?fcr09l763Cgclv7KVwXDl3yLIvtLtX9utDp2iPwuE8j/KaPt1wY3fm6RZ7SU?= =?us-ascii?Q?RK84BL3E8NRWmHmVel5/w5Gri52OJo1TC/eHM41/3hF3F92tycwL2owscOzJ?= =?us-ascii?Q?mfZpbZmJptpZTpGFV5WflA1ppduI11srDu9at5kJ42k7SJzV/bAINMsycUMK?= =?us-ascii?Q?uDBoq7B38i+EjKfrimiGJvcirLy+dKWP0WsA8wqWrLV5rVwIOAEuFir9Rako?= =?us-ascii?Q?QWQWeqVWnH9Rz08FKQ4S3Y16mgfc73fSxEz?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:QiEZWgtJb+81dmNo2s6+1TfahLh38IjRRPmravtVnpcAVa7viVTA2cfFonuxZQsSo+7GtXduto+nWLJVvZHY8Sy2t2Sf9JzT1hNNYTyQ0Tj1iv82yktT2ZVW9XudknmvN9q3KNVFGTsKlel4Fcv21fBGmMZv8fIlz0OsIkRqpE8H1GXUCqvGf+oM3uytWzCDR7ZkFGMZ2IvckAj/nxX+a/xd8qodiF362zr1gkBdrsXJL3TFJ17mHdkkQhH4nCeh4R1kD+awI3vYAoTia/vmpm+cE6mWHd3woPieagFdEpurM2SG0gfCJ/Ks5lh3+2mCYcl3nrJygUfqYETfYa2u/A==; 5:QP5TGSwFR760Nm2GLr8kQWMQRmMBlRY5I4GoRiAZKj+Bu02hBOzABGLK7w0HmpkqQigmb/jMOM/6MGEztEx6vOT2w7m9Gbo4u4JP2jlQuJ0syLmE8CoX/IWest8bRzeSVpVnpvyRanelJCwTNBCI1g==; 24:X+kOLT5vH1E2tAadWM8OP95IbfyKYcwwwuoZqLY8ijlWNgfRrw2cuW9uGh0l8PX2Hbp8VZKkZIvko19qaHBsnCY8UfyB4m8gF+8KnE7Tiyc=; 7:/8/oMeS45iexcbu9QXBp7MTRs/eqDumpmRXoPGZOlN7U+IEK3+22gbCQPTfywxk76RtM0n8MOt5o4vU/sMup920IzDqZ+mfHVlbJbcc2eR42/bgRmyz5b5h+TrstbxX6p8QKwRcjxnJWvvha/A9JOTQo9c7VTmC30yrY3BfaN7ddqYgnAGOgIXfTxtTmqLA2mK7uwaOap2OEF8qZ076Vk0gGFxvGPL3e0SsJYL5AVAM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:ewway70kjKUXJDWvvxk679pX5K7X9OdCw0CdNizK3nP1+nrTgyhOm4AXA87cBCPFxrHtSXceT8Q/gIxFNCYwdqZxDFyfhfZN5IjuPOHoLB+KLTK7/maW2FnGgB4k0S51U57uydvABHiho+jRgvitf+3S32jBNbxehoZEH3PgW+1WnndXJCUoM7L+i/HB6eVcvF+gXO+r+MBeYMcBVSfHVZbC0D2YnX9sFCHBSOSvJHgUtEq9QZsERzr4JV52zjIH X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2017 12:22:59.8572 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v3 05/23] OvmfPkg/VirtioLib: add VirtioMapAllBytesInSharedBuffer() helper function X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jordan Justen , Tom Lendacky , Laszlo Ersek , Ard Biesheuvel Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The function can be used for mapping the system physical address to virtio device address using VIRTIO_DEVICE_PROTOCOL.MapSharedBuffer (). The function helps with centralizing error handling, and it allows the caller to pass in constant or other evaluated expressions for NumberOfBytes. Cc: Ard Biesheuvel Cc: Jordan Justen Cc: Tom Lendacky Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Brijesh Singh Reviewed-by: Laszlo Ersek --- OvmfPkg/Include/Library/VirtioLib.h | 52 ++++++++++++ OvmfPkg/Library/VirtioLib/VirtioLib.c | 85 ++++++++++++++++++++ 2 files changed, 137 insertions(+) diff --git a/OvmfPkg/Include/Library/VirtioLib.h b/OvmfPkg/Include/Library/= VirtioLib.h index 5badfb32917f..9ec9b91b59bb 100644 --- a/OvmfPkg/Include/Library/VirtioLib.h +++ b/OvmfPkg/Include/Library/VirtioLib.h @@ -3,6 +3,7 @@ Declarations of utility functions used by virtio device drivers. =20 Copyright (C) 2012-2016, Red Hat, Inc. + Copyright (C) 2017, AMD Inc, All rights reserved.
=20 This program and the accompanying materials are licensed and made availa= ble under the terms and conditions of the BSD License which accompanies this @@ -235,4 +236,55 @@ Virtio10WriteFeatures ( IN OUT UINT8 *DeviceStatus ); =20 +/** + Provides the virtio device address required to access system memory from= a + DMA bus master. + + The interface follows the same usage pattern as defined in UEFI spec 2.6 + (Section 13.2 PCI Root Bridge I/O Protocol) + + The VirtioMapAllBytesInSharedBuffer() is similar to VIRTIO_MAP_SHARED + with exception that NumberOfBytes is IN-only parameter. The function + maps all the bytes specified in NumberOfBytes param in one consecutive + range. + + @param[in] This The virtio device for which the mapping = is + requested. + + @param[in] Operation Indicates if the bus master is going to + read or write to system memory. + + @param[in] HostAddress The system memory address to map to shar= ed + buffer address. + + @param[in] NumberOfBytes Number of bytes to map. + + @param[out] DeviceAddress The resulting shared map address for the + bus master to access the hosts HostAddre= ss. + + @param[out] Mapping A resulting token to pass to + VIRTIO_UNMAP_SHARED. + + + @retval EFI_SUCCESS The NumberOfBytes is succesfully mapped. + @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a + common buffer. + @retval EFI_INVALID_PARAMETER One or more parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to + a lack of resources. This includes the c= ase + when NumberOfBytes bytes cannot be mapped + in one consecutive range. + @retval EFI_DEVICE_ERROR The system hardware could not map the + requested address. +**/ +EFI_STATUS +EFIAPI +VirtioMapAllBytesInSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *VirtIo, + IN VIRTIO_MAP_OPERATION Operation, + IN VOID *HostAddress, + IN UINTN NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ); #endif // _VIRTIO_LIB_H_ diff --git a/OvmfPkg/Library/VirtioLib/VirtioLib.c b/OvmfPkg/Library/Virtio= Lib/VirtioLib.c index 845f206369a3..c85cd8dba569 100644 --- a/OvmfPkg/Library/VirtioLib/VirtioLib.c +++ b/OvmfPkg/Library/VirtioLib/VirtioLib.c @@ -4,6 +4,7 @@ =20 Copyright (C) 2012-2016, Red Hat, Inc. Portion of Copyright (C) 2013, ARM Ltd. + Copyright (C) 2017, AMD Inc, All rights reserved.
=20 This program and the accompanying materials are licensed and made availa= ble under the terms and conditions of the BSD License which accompanies this @@ -414,3 +415,87 @@ Virtio10WriteFeatures ( =20 return Status; } + +/** + Provides the virtio device address required to access system memory from= a + DMA bus master. + + The interface follows the same usage pattern as defined in UEFI spec 2.6 + (Section 13.2 PCI Root Bridge I/O Protocol) + + The VirtioMapAllBytesInSharedBuffer() is similar to VIRTIO_MAP_SHARED + with exception that NumberOfBytes is IN-only parameter. The function + maps all the bytes specified in NumberOfBytes param in one consecutive + range. + + @param[in] This The virtio device for which the mapping = is + requested. + + @param[in] Operation Indicates if the bus master is going to + read or write to system memory. + + @param[in] HostAddress The system memory address to map to shar= ed + buffer address. + + @param[in] NumberOfBytes Number of bytes to map. + + @param[out] DeviceAddress The resulting shared map address for the + bus master to access the hosts HostAddre= ss. + + @param[out] Mapping A resulting token to pass to + VIRTIO_UNMAP_SHARED. + + + @retval EFI_SUCCESS The NumberOfBytes is succesfully mapped. + @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a + common buffer. + @retval EFI_INVALID_PARAMETER One or more parameters are invalid. + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to + a lack of resources. This includes the c= ase + when NumberOfBytes bytes cannot be mapped + in one consecutive range. + @retval EFI_DEVICE_ERROR The system hardware could not map the + requested address. +**/ +EFI_STATUS +EFIAPI +VirtioMapAllBytesInSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *VirtIo, + IN VIRTIO_MAP_OPERATION Operation, + IN VOID *HostAddress, + IN UINTN NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ) +{ + EFI_STATUS Status; + VOID *MapInfo; + UINTN Size; + EFI_PHYSICAL_ADDRESS PhysicalAddress; + + Size =3D NumberOfBytes; + Status =3D VirtIo->MapSharedBuffer ( + VirtIo, + Operation, + HostAddress, + &Size, + &PhysicalAddress, + &MapInfo + ); + if (EFI_ERROR (Status)) { + return Status; + } + + if (Size < NumberOfBytes) { + goto Failed; + } + + *Mapping =3D MapInfo; + *DeviceAddress =3D PhysicalAddress; + + return EFI_SUCCESS; + +Failed: + VirtIo->UnmapSharedBuffer (VirtIo, MapInfo); + return EFI_OUT_OF_RESOURCES; +} --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel