From nobody Wed Jul 16 04:26:10 2025 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 1502710668443670.6367762253209; Mon, 14 Aug 2017 04:37:48 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 1296921D0A243; Mon, 14 Aug 2017 04:34:56 -0700 (PDT) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0076.outbound.protection.outlook.com [104.47.40.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 9AB2821D0A251 for ; Mon, 14 Aug 2017 04:34:54 -0700 (PDT) Received: from brijesh-build-machine.amd.com (165.204.77.1) by BY2PR12MB0145.namprd12.prod.outlook.com (10.162.82.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1341.21; Mon, 14 Aug 2017 11:37:15 +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=L2M1R/jaYsd5XNiYEJ2+gsYbuV395Nbq6Kx4lKuVTd8=; b=WsMSAuwB0H29vMx8Z5YKKcZjjXXqv14NVFaFbTU1+dBR67PunORCOW3sKhcZhCOTUFknfGOT29sWLe86cdljaMEOKK+AcfJn6f/9X5G2bkr6BB8xbINKCEs1fT7qTbYz1IR9fiV2o2hyeVdUx9w6HDncmOlV1fQbYerE6+2w+vo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Mon, 14 Aug 2017 07:36:32 -0400 Message-Id: <1502710605-8058-11-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502710605-8058-1-git-send-email-brijesh.singh@amd.com> References: <1502710605-8058-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR15CA0043.namprd15.prod.outlook.com (10.173.226.157) To BY2PR12MB0145.namprd12.prod.outlook.com (10.162.82.18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 690804ef-0ec6-4a74-524e-08d4e308d043 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:BY2PR12MB0145; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 3:kJXyLEgCtOkzPe6i5QRkH8P3axXMT1E5ixFgDeWJo+9hEvryw6AnCETWHjz9jd7XVHm/sbUG4PDBrJ1wwc0UOR10rZRccQqpvz1E5/MZovNi3YhgTEibIZvMTxDFuVIcQif5Lj5bKNCUqiqW65DgqW/vOq2rJVr7cRWMgUg1TVxJK9iLEVGqxt6C7czYTfjLbWO8QTUUPaTXn3C7nLmnVd+8IHq8ckeDFFDhB1m1ZAlmOIVwWMjoEUGCtgIwztF0; 25:0G7IOLy8jMw3ffg27tV6LN5E0h90eT05YUNoSo9zoRqTYV72sRZ2+znLI6Yn2YhZh+lzvU2W36qMp8/Qei0Bewgc9feVIQC6Qf16SfzB20IeeGSFdNjAdj0oowvOSP19mf3qa6M3jyf+6WsPRzzSSV9YK7GHz5or0cC2xtGvl8cfje/yT4m9WL4ye/zgYfJSEFZ44RZ/I07HD3i6QQgGRsTbwptGxci3AzjunAKXwetUMVUIfAtp0XlXT+axAs2um6ma3YkwDbCSsMHa+KjjdCTIm3LLBj26ugeMISECESqorD60bRL5bneNVeMucAf18EUusvXrzE/lNg8Wl0PMJg==; 31:jqTsnHg9cExAVi/HlqQyxkb3R9HGkQv5Ogr91OsGgj6ABQbWhOqHd1/Yi/pc1zQaB8cdY1eSU8lKoDCAO7F7YjkeeuQyOf6ipTvKk3rKH19l7n6ySNTqZK+L0ud6vq/4A+FnncyVUqglma77g350yzyTUh4wyMQx4gdW+ESXzjtCoaPK3xlWU/GrmrC2+k68SMAbg1MJhgHZmJCVEs7MStuelu2eFk45ZIfcFQujQBg= X-MS-TrafficTypeDiagnostic: BY2PR12MB0145: X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 20:tRWhPwfFZDg1L/4kimbs31x0b60gOc7OUukp2wvP31lr6fiQ97v3wDuyskYA4JLtwdTyrXqvnjkxNGrM7s7lIsrq3GYsQy1/r/9gvBY+jNWTHAJvmLJfl4jqzt/ex60XBStZWxxvvLFEo4STCqq22oOMt1uokcikfHMm1nEpbahan/pUFJSHoyCKqvk/HOfkii7qf56Sm+4SmwRVUTJsB6+DEBTVSng9lGBYZuvyty1lwmPj+T4exHDlxtGF2dooMUy4RPQA1M3hQKKqExcFcDlWpAztWiVBab9dEiB6BL3dzw7C8R0EgCpIKu/+r4ZjLJBoFoEM/ZIUcH1/KHZp5meKuCH0zNtUyY2INK0ynXhgZjfTzRW0NwFXgDCxHQFeyhnV0JGj+y3sXkJGvIKTbtoRcOWYqkd5IzT4W2PKEFVVnVgjEfXO95fi5tI1yXfAHyFIZCGYJi1Z7YeJhGaR27v/ZZZjY/rnIRMMzAAYG2KWT8VCWQ3QWJjKXnl109b8; 4:9fMeupoIbW47aFGrgTMbB5h9stzKMDqx6A4VMrYpO9Jji1mZtpo8GE96O8QSiR6TshFWIqAhjdO5mQ16fW9NlT3CkV1WFj3hC/2Hs3OWfbkFVmtcEMJrf4JIStth6Rp89O0YqltcAPMddpWRkNI2dEZ2m9KQ6QRHxnkOFJW5fU8Zo8pIyCNaX72YYdFWFvLuNejVA5Gq3HZqYphzzORKy9uCgb41fjS0BWApUSzdvJkAG8wXjmaiMQEvpCvXLxszGLfdax1MBCfFvY7Atv/73l/GDfOjICtuEcBT3EPkG0qqkpdiUU76pOqwUwFjozowwmShnMbQlcFb+HPA5ZfGfw== 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)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6055026)(6041248)(20161123558100)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR12MB0145; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR12MB0145; X-Forefront-PRVS: 039975700A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6029001)(6009001)(39860400002)(199003)(189002)(54906002)(5003940100001)(6116002)(3846002)(53936002)(97736004)(575784001)(86362001)(36756003)(81156014)(81166006)(110136004)(8676002)(189998001)(50986999)(76176999)(5660300001)(2361001)(25786009)(2351001)(50226002)(4326008)(7350300001)(33646002)(478600001)(53416004)(42186005)(2906002)(105586002)(7736002)(305945005)(106356001)(48376002)(50466002)(47776003)(66066001)(6486002)(6916009)(2950100002)(6666003)(68736007)(101416001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0145; H:brijesh-build-machine.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; BY2PR12MB0145; 23:dCXaXZVJcqFaW0xH9WpGfbpoOlKhjc/vD5nKlEZCx?= =?us-ascii?Q?r725p0Ks42UmWQayUHk8v71kxFh/KOERAeoZwWumgID9F2YkZkpDCnf5pbJS?= =?us-ascii?Q?NrQAoFVuzsWPhAi1SxnHmSZZjMtQspo9/evZlV/Ys/MXMuIFLJ2wfkkHbtE3?= =?us-ascii?Q?FErN5X80kQE8bySnnbVF1mp1EoGL1xCMqoJtUOBugMRGvbMw3dDnC8v3jRnT?= =?us-ascii?Q?uUUVvexva440uwI9NxJedvHAoaauS1Rud33p9je1GAAt11aBVUmrG09Vcwf/?= =?us-ascii?Q?XLJ8aaLq2ME48nOZU8QA1wWNQjLGHymC1TM1KzaoPhywLhANjdM/ufbigA1z?= =?us-ascii?Q?fiymEKT5QpGzh53GYK+qsUSAtDPC3nGk4Tp5DeypmNmTv/Fr8r5CWf0Vijvx?= =?us-ascii?Q?7cxRGdi1djUzoyAGc5lb1vZps1RUFF5QRceUXG2EC+fedt9KON20G3rOq/2U?= =?us-ascii?Q?lNMZ31ENxQ781Pa1DhC24yitJttg/3s36qQXKg/ruJTOoACcSrIW5gz6yq/p?= =?us-ascii?Q?/Z7lGs9BtybwvdyYhhYVxR8K+t2ig1/U44h8I1Ckm2L9qIH7FfXxgiDdk56e?= =?us-ascii?Q?pFVS7J+3U0Gis1PpNRaRH7vnZEKSHoIeXnY3gNP5hDVzmZ6XWPx8aSIbqjEq?= =?us-ascii?Q?wTPzWaI/ZoN++nlRqhDS2Lpi94bKA51gfCjLbmXC5EYYB4OTYxPivxyskjEz?= =?us-ascii?Q?fbX7bxzdA5sUS1nQdsLCgahKz2xm0ZrxsyBPBPhl7GaxDQVw2FKNcHzmDAWy?= =?us-ascii?Q?Z+fJOllRw50IMmYycMx1Tl+tGSUlbbJOwiCX+ORJk4sfwYsZR2CYP8p2oU7j?= =?us-ascii?Q?j76G/bDHOXQHrS1SzImlJxKmtqx1Wxuq8u4Yq03oBwFea1QB2jaMqv8Id1TP?= =?us-ascii?Q?ScALTyZrOJj5iyh/J+IcUNx1KeQwfV1IZBEeoU25bLnmU7s+Aia7xzv9ec7b?= =?us-ascii?Q?+QJE7bxvRaovayFRgbcrMByEop9ab0/2LH1mhzVkLAkDtOjYbd9AWTNonCR3?= =?us-ascii?Q?TVpJ90s4jv+5CZwpdW4WPEfTRTKSY+7OOYsGu28U/x5jLxqLhcwS6Dz48p9J?= =?us-ascii?Q?J0++SdTLLqBeD6v85/c1XFAiXpl328KgMM6CkhcPhM9P/fZh7dOQffJcEk9l?= =?us-ascii?Q?X2u/rMk7yCdjQ6eLhK0cXh0uyE1ZAFWrb7CUeI6UBT6S/UCCLxhQUklvfdx7?= =?us-ascii?Q?5GXG5iyjDP9kalavzZcOPBlVRcvvFUpK0ZA2cYwbEzj9yRGl3TQwPq2sQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 6:38P2xo+c2OBcXEKgOKHSobdYArkozilyiB4cUE6OE8EOlUP5aPdzDGeNnvxn5yjKeJJ9bq0cyFQekeV+PQWuQYI9rWYsIgAfKVWLoDH2GmjkF56OhGEocFGzfnjOGw8hpHNmmVqwvrmTgdLHIHcBkCYAbJvX/Y733J5EPuFy/SwhExQQ442th0mWDZSorZlo6SaZbls+IPDI7sUKFdOfbMIznWIvfk5nQ2QUR8uGEJiGa/TI+GIfUfC1XirNUMk2qE9pnZoeQcYyQHiJQrJ3AuOFFJo85eZIEU8nJ7AR6i0h831d6RRaZ1kVnFrMApahKGk0VSWNBmnXcSZsdiHGkw==; 5:lF6WYGElSSHI8wuKdFywPJgulxTDpNlg1IMa6mo7EwUqBdxvJWQHbNybnkKGFmuPeWR32eSf6yWvzXOeGCv61pyCWvIQOdl/2TBIcTOQ1HXj4YmA4zWXBCNg0MZH3lY469qGhV/2V+cIdYFndbMCUw==; 24:sfkse1Lng6aYN7si9KAMJw6jLgHBm05jcJbTsUZth0VbbQsWnjgqTBrSrTpy47aYUUQZTPm34jVSF7yNwUT5MTHVYoVGp6XV/Ge3AChMdSQ=; 7:IrTlKMd47bRw9DAscpcHa8vj+r27wc/I8k2kFwVAetnVWmbOMyEKbtaPjb/7Lj9y32YbvC7QU7P8jPaWjaUFz/uPW7NrvtjZPEBR2qQuu2qNlUVP1l6XYN0f9WNME+kHTm0Arpr8mM3cHlCoTwyRuEw6mExwjUw+1bJaTs5bUN3gcfWSFevhqqHgsfCFd8FB7Oi0cSq6OFXEJISVpUBkLRr5tC2cK3b0v+6AGkLSLCk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 20:V5i+7nP5ddbwbePIJCgdtYoo/1zintDCqPYkB1N0aUuPQV66XFom1LNKk08gRYBzILjbB20eCoEDLk7jb3WA7h6t1CJLeUYcebxpt0LOF0fk7/a4Oloa6OEoWF3AvR1rqUecvTZ85DcXuo7IxohIDW0UMk1VvdIrNVaDCaFqDZd0X3E7XkqIOvdMdn2CswSSUeQNlfsMEEhiUQ6e/Iw9uukjrXdwozOWRlaW++ypfmEy6ODldaSicg7GhnDHPNht X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2017 11:37:15.3305 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0145 Subject: [edk2] [PATCH v2 10/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 centralizing error handling, and it allows caller to pass in constant or other evaluated expression 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 --- OvmfPkg/Include/Library/VirtioLib.h | 44 +++++++++++ OvmfPkg/Library/VirtioLib/VirtioLib.c | 78 ++++++++++++++++++++ 2 files changed, 122 insertions(+) diff --git a/OvmfPkg/Include/Library/VirtioLib.h b/OvmfPkg/Include/Library/= VirtioLib.h index 5badfb32917f..d8f24a5d68b1 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,47 @@ Virtio10WriteFeatures ( IN OUT UINT8 *DeviceStatus ); =20 +/** + Provides the virtio device address required to access system memory from= a + DMA bus master. + + @param[in] This The protocol instance pointer. + + @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,out] NumberOfBytes On input the number of bytes to map. + On output the number of bytes that were + mapped. + + @param[out] DeviceAddress The resulting shared map address for the + bus master to access the hosts HostAddre= ss. + + @param[out] Mapping A resulting taken to pass to + VIRTIO_UNMAP_SHARED. + + + @retval EFI_SUCCESS The range was mapped for the returned + NumberOfBytes. + @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. + @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..ac0ae97f3692 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,80 @@ Virtio10WriteFeatures ( =20 return Status; } + +/** + Provides the virtio device address required to access system memory from= a + DMA bus master. + + @param[in] This The protocol instance pointer. + + @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,out] NumberOfBytes On input the number of bytes to map. + On output the number of bytes that were + mapped. + + @param[out] DeviceAddress The resulting shared map address for the + bus master to access the hosts HostAddre= ss. + + @param[out] Mapping A resulting taken to pass to + VIRTIO_UNMAP_SHARED. + + + @retval EFI_SUCCESS The range was mapped for the returned + NumberOfBytes. + @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. + @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); + *Mapping =3D NULL; + 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