From nobody Tue Feb 10 00:58:36 2026 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 1502710716792820.1067570112906; Mon, 14 Aug 2017 04:38:36 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A3BB521D0A27E; Mon, 14 Aug 2017 04:35:06 -0700 (PDT) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0069.outbound.protection.outlook.com [104.47.40.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6F10221DFC88C for ; Mon, 14 Aug 2017 04:35:04 -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:25 +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=KksIGPtCcAIaP75hcZIFXBQ5igkYj2dU6PJKij4zii8=; b=j0MePgu9p6y8CTatU6n2rvNuuN0jjrJOqwXyToarbg3rjcX3WgHln3oqcixGqbfbXY0X2M6DnOeBHRolpBxCb6az/SRRxiXFrB9tgtJnqEUrAFmbXsPswG5AZtCTiMxFUY09Ta1yJ7ritpx5hNZZux9X5kAHGFnZoeYarDb2GjA= 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:42 -0400 Message-Id: <1502710605-8058-21-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: 09640648-08b8-4be0-36ed-08d4e308d61a 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:pXsz4BwuCaabipk/KrBLNu0DvO4wk1cmHXjfKHAwOGmNm8YtJjliFvIKOEzexCKZL6J732KnyM5xqGJC4JezNK7QwLSMDQ020yvpOPLSJCGZ4uX8z/OURx/G0hFRFZj/i/ZpCOSAmC/AMD28hnovb3yLgw7h8R00rAzuhl9Fl2k/K/IONxu1Vli/mrAUCyR0MnwdME5f1mVRmtpBUB28QUASjW2mV97AWFadX8Uhx84WiTUb+dveqUIktCqgvj3G; 25:SjP4TxGFyFrA8xUtdy054g9x2+2UYhYA2rD24smT0Vz9/klmGLMDl6u93adT5qWY5MW+mdS7zjARn5lFYfzGg34af6fSWfub7Y1+JsaRxP1vIxc11qoOkmTDbvwxyqjizaRZNiibxJNTrDIzkob28WdhlJrQsSuLU92olzhD7DHau0oDzh5BT5Lj8H62iYP288HkOzREFXE8mHBsf3N2HnOnHUnUdmVe/KqTI6k6aOdsxrihA0sBLzgZ9iJPz+xCHMbkKIPm9+0lFnHCcd744vHjYo2d2AFar9oLVbSX3JLhKKqI21UgD05IOsXLqi0SBP3SsvTJET0QTQWx378s3A==; 31:+v17unEIEjz7Xe/zq3dj1Q3FYpay7Fs3kqfdHjLKyeJ3dsAI1V6P3ZxlLTDhLEv5I4C9LZpCw2VSIfN79kOIWkM7nOD/JOuCJCbsTxXsOKTR7e30FyPgqWXjXhNnA7hmmT5rm7+9YfDLsygR2xeWiAxZLUHIYF8Oh+++84UhsxaCgtg/uYbVIHno75WkI0aBLFyoh5Ujm5zof+NIUtTMmsWWNdrE+QY9hVW0ho1OAos= X-MS-TrafficTypeDiagnostic: BY2PR12MB0145: X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 20:PWDgNYwYy/jjyz9HARukf0xIxhybmmm7URP+VELLjDuIc6Ap+UmTfMLVlbQsYFTSAFV6m1iAf4fHXfL4CbJwNNReUJ+8jOG2eStwaT/LAE1QG49Fi50KMikYDPJxLzri4fCv/NXIp/jkdmyf9z5y3aRvoIGLEkQwMCa/oaKguCsPIAcsIgmK02/XE3/WiTkK4xHmLITeimOCIe+pg+2Kle0i5+oTkYH89P6GeBtnbtcj3a84tKipvrWj8qYUlkuFM53fduk/mwZ8Mlvr5I9lNo5jYGL9RFyDBV5fp8UAogt4c6HnnxQrqYscumv9ahMCz8s/TPZFy2szmQuoPg6fKVNXMGpLbZ7oHrqPmdGAPFyvNiYLOJD9r9YwLLAxThzv/Z2kMFp3uNfZeBH3YI1rsxIlHshDJX8UTRum4CvoFt1FvL/c23y+pEraRWNvaZ/3ghjyPB9kgARDWXSwo+TjvEOrjtBnu6xluUyv+Osoq+T4TY7RuSB/DyP+fi1QJR35; 4:l00g/Ma6hXxR9Xi/2mI7gjyKQWhjFaOwCmwoIPx8p12yzTGj0RDSR7syOCqCQVhMfzq/HRBnR77bvUflxqdStdoghgt3pAQ2LTFx4SmVMX7BCVyQy5ujWwAiv4M0+UoMJoOmISYtKcCmF7hjcuhk/7g1hPGyw6+9ilkiKAPufLVLf5Jg7cZhsM3jaslEMTRedHAWUCP6wpV2v1Tqm3ltnA7VuvCLtF8T73EnlzfOPmudb+kGEVOd7oGUDH68r4U9izCKY/TPCkuHlLbesuXj90RZ4L0Lq6EocgZv2uaUJMmZtA54+Jhd8yqbAQwrkX6AEYgw/6rD5PzBGXNMrR4OyA== 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)(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); 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:M8GNU9MsAO2gYeDa0wwgJOzm0xmolduA8P381/low?= =?us-ascii?Q?1Xyvuafwssjd7VGY0SW6dZwylDh0i5+BkZEDtDGez5jJ2GzXQox1ABShLLb7?= =?us-ascii?Q?vwh7KRHz5zt9Q3Edgfz4Sri/u8wZjhTOswmHsXLlK8GYgGeooqKj23oC15eV?= =?us-ascii?Q?L8xdSha9tBDRN5Agkno62qBChEf34986wIoSgyk1ybWEd9y2SNzfbwaSGWh/?= =?us-ascii?Q?zFxaXC3kovcpeDVVi0PFNxoIVyVsQBE56PtzuWknYRfAqzWlwcSaTW//OSzO?= =?us-ascii?Q?AG6hxDS8Yz2zwyV+ThQXIVq3jiyyBP17Q0MQW9veg/gOiUPI7YMjcJu6WqH4?= =?us-ascii?Q?Gnbfboo0btUow42Rg18hBrF12mbac4rVR+fURwPX2fEfB8t2u3/saGVsUVCS?= =?us-ascii?Q?9tCQlwW67poG6u8XVKnBOnKGvI0iUDQIV7Ubpygq+livsuJNcblt+1y6p9RP?= =?us-ascii?Q?bCNJiX1u15r82Oe1E/8VAdAaZVa4qMT5EdrHVYkATBJ8W2B0cbFA4JS0fyAe?= =?us-ascii?Q?iiVM7lkp/x+8x1WSWYr+dXv9D4RbDEpywL163Hsu1GnNSUCJvBtIBjcOH0aK?= =?us-ascii?Q?UPIvQAim5F7sRULmS7TkAu6Cs1hkDdLghJedPx/EiZal+GFn4u5+xVsij/bq?= =?us-ascii?Q?3J3cQfyrrPNuGqKtAK/3/1vudqo51nOEDgsCc+LmHkueilROqiD8uRI2ZblM?= =?us-ascii?Q?MbH8upJg6rTBFw0MNE/pJaAD4v14QzIVFDY685zoR4JJrz9huHSl0jTG92Rb?= =?us-ascii?Q?NcwRV5mnuxfpbxdFvzER2FHgQ8eQPEunQpVRZOcOhGiB3fylaq72LBqZjrfk?= =?us-ascii?Q?ryCYYv98oed/SvhmGxhdZgwUOuOfBBxh3fl3+X+8VnolpPRYo6Ip6WlzLB2e?= =?us-ascii?Q?h/T2t6WZKRILqQnHl2WoqMSAAzMjNftwQp81HCKnOT6sCOCItZXjVCuVGCO0?= =?us-ascii?Q?lb1rUoSxR4j3aDg/TdF633jerqjkdjLXAAQIu5Ugx85b4qozzE7XcKAUedOa?= =?us-ascii?Q?+trqUxTMcsIJtKDHAQJJlCxYIfxh9Zm58d8EPwaKX1z0zg/WM8omPDTBSnHv?= =?us-ascii?Q?rOiixquYDOAq1y5ewg0uMshyzb7M+4QTsBq9BeX3urNL4y8LlpxyhXRfQQWF?= =?us-ascii?Q?eXY+pM6Bo6Y7GLIxqNjAqi7H06sx2G1w2p6X+dKOSA3Yhdm951dTQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 6:d/t9AHluUO1ZM+t/5t0LSd8z7VEe2o8CYqHpqVi6uU0OzOmrA3a2FEanhQn1nIs7tAfej14AeogFD/Z08ifIhGeMrWaHP5/sAfnbbuVDSFGGJC0flRUXPeXIaoW5ukV5yWA6m9YKzkt93t+adLZje9ZYQzJ9WXa7C3XvUj8x9MNxBLGXDCHzdmGZPNVmdkYkD2/688oZic9HYBwaXYuwOov1k7HvFSHPk8FAlvXmdkzBi9j6eRz9tay0VCqHPmmmhNtHqNDq6f5nFgV0/IKu533nnwOZ1QVcZsu/esOD/p53xOjJercRzn3y6PcSzkLsGpksNNLX04C53rhjfQbvAA==; 5:iyxcsUJeUCWxrYL4HhRn34OIK0/4QCS0gKLuEh47uGNgm7noIqrLnLlwhYbg1wNtSJkiNVLqtgGrFrmzI5lEII6gEmH9jzo/U6BdRwxXBr2fuOctC+HQwkDTaIq9rpSoRX2GofddzEUNJlgoJJwJwA==; 24:MN3vmWX1JrOyAVne3TkwzaprN1zG95P9MJQIsimcXil/9fYAdIrhAEvIFkO/5V534yeBTFtkcqbbqcp12EPh/MkZg18tsWqRkSBiV2sfGj8=; 7:WVJnOaZzEc7BIGx9igAoQk3qMqHzVybG74YFHojMBYJSyUbGjio5zohDZMQ11jcaNzKXB8DXt0ComIpgCtnwHCgQMWFDmoVFxJtLJAaw29ZHSctHoRbu+ALhOK/yGNZJ67xnUwmJRZp2M9evBUaEv6zUvljp8L4kxVp6t43BhrwTCQdnQE8nykap0DbpWggAJw21dSPlFSnSn8eUM51ET2qiX+qUKYOO0X8xygHG3UY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 20:4ACCcHZTgIn/XIifJIvuNgjW/n6DrovzZjxU3BQZ8dlMjWxN+jvief80CP7jRxC2gH7t5sBCpnUANSYNx85S/1mscYKEVo+/c6YPe7rtbZxARnWwhvLZP3f9BpdRwzl9LaynsoVGLE73KOQ3DlI6OaJ9543X7n2qvHoQYVSrVcChY7i4AwfubTA2E+zfp2mQ8dY5GurpqBqH3KU3vDnt0DCTs+u1NbpobnP+W68TqZbdbsQoJtwVB9Ih7BbjPALf X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2017 11:37:25.1274 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0145 Subject: [edk2] [PATCH v2 20/23] OvmfPkg/VirtioNetDxe: alloc RxBuf using AllocateSharedPages() 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" RxBuf is shared between guest and hypervisor, use AllocateSharedPages() to allocate this memory region and map it with BusMasterCommonBuffer operation so that it can be accessed by guest and hypervisor. 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/VirtioNetDxe/VirtioNet.h | 3 + OvmfPkg/VirtioNetDxe/Events.c | 6 ++ OvmfPkg/VirtioNetDxe/SnpInitialize.c | 68 ++++++++++++++++---- OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c | 6 +- 4 files changed, 69 insertions(+), 14 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/VirtioNet.h b/OvmfPkg/VirtioNetDxe/Virtio= Net.h index 2964c946e26e..a4661bd5d2fe 100644 --- a/OvmfPkg/VirtioNetDxe/VirtioNet.h +++ b/OvmfPkg/VirtioNetDxe/VirtioNet.h @@ -4,6 +4,7 @@ Protocol instances for virtio-net devices. =20 Copyright (C) 2013, 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 @@ -85,6 +86,8 @@ typedef struct { VOID *RxRingMap; // VirtioNetInitRing UINT8 *RxBuf; // VirtioNetInitRx UINT16 RxLastUsed; // VirtioNetInitRx + UINTN RxBufNoPages; // VirtioNetInitRx + VOID *RxBufMap; // VirtioNetInitRx =20 VRING TxRing; // VirtioNetInitRing VOID *TxRingMap; // VirtioNetInitRing diff --git a/OvmfPkg/VirtioNetDxe/Events.c b/OvmfPkg/VirtioNetDxe/Events.c index e832d40f7be4..2f61da6aece4 100644 --- a/OvmfPkg/VirtioNetDxe/Events.c +++ b/OvmfPkg/VirtioNetDxe/Events.c @@ -95,4 +95,10 @@ VirtioNetExitBoot ( // Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Dev->TxRingMap); Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Dev->RxRingMap); + + // + // Unmap Rx buffer so that hypervisor can not get readable data after + // device is reset. + // + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Dev->RxBufMap); } diff --git a/OvmfPkg/VirtioNetDxe/SnpInitialize.c b/OvmfPkg/VirtioNetDxe/Sn= pInitialize.c index be2761d3d068..db2314446bbb 100644 --- a/OvmfPkg/VirtioNetDxe/SnpInitialize.c +++ b/OvmfPkg/VirtioNetDxe/SnpInitialize.c @@ -247,13 +247,16 @@ VirtioNetInitRx ( IN OUT VNET_DEV *Dev ) { - EFI_STATUS Status; - UINTN VirtioNetReqSize; - UINTN RxBufSize; - UINT16 RxAlwaysPending; - UINTN PktIdx; - UINT16 DescIdx; - UINT8 *RxPtr; + EFI_STATUS Status; + UINTN VirtioNetReqSize; + UINTN RxBufSize; + UINT16 RxAlwaysPending; + UINTN PktIdx; + UINT16 DescIdx; + UINT8 *RxPtr; + UINTN NumBytes; + EFI_PHYSICAL_ADDRESS DeviceAddress; + UINT64 BufBaseShift; =20 // // In VirtIo 1.0, the NumBuffers field is mandatory. In 0.9.5, it depend= s on @@ -278,11 +281,37 @@ VirtioNetInitRx ( // RxAlwaysPending =3D (UINT16) MIN (Dev->RxRing.QueueSize / 2, VNET_MAX_PE= NDING); =20 - Dev->RxBuf =3D AllocatePool (RxAlwaysPending * RxBufSize); - if (Dev->RxBuf =3D=3D NULL) { - return EFI_OUT_OF_RESOURCES; + // + // The RxBuf is shared between guest and hypervisor, use SharedPages() to + // allocate this memory region and Map() it using BusMasterCommonBuffer + // operation so that it can be accessed equally by both guest and + // hypervisor. + // + NumBytes =3D RxAlwaysPending * RxBufSize; + Dev->RxBufNoPages =3D EFI_SIZE_TO_PAGES (NumBytes); + Status =3D Dev->VirtIo->AllocateSharedPages ( + Dev->VirtIo, + Dev->RxBufNoPages, + (VOID *) &Dev->RxBuf + ); + if (EFI_ERROR (Status)) { + return Status; } =20 + Status =3D VirtioMapAllBytesInSharedBuffer ( + Dev->VirtIo, + VirtioOperationBusMasterCommonBuffer, + Dev->RxBuf, + NumBytes, + &DeviceAddress, + &Dev->RxBufMap + ); + if (EFI_ERROR (Status)) { + goto FreeSharedBuffer; + } + + BufBaseShift =3D (UINT64) (UINTN)Dev->RxBuf - (UINT64) DeviceAddress; + // // virtio-0.9.5, 2.4.2 Receiving Used Buffers From the Device // @@ -304,6 +333,11 @@ VirtioNetInitRx ( DescIdx =3D 0; RxPtr =3D Dev->RxBuf; for (PktIdx =3D 0; PktIdx < RxAlwaysPending; ++PktIdx) { + UINT64 Address; + + Address =3D (UINTN) RxPtr; + Address +=3D BufBaseShift; + // // virtio-0.9.5, 2.4.1.2 Updating the Available Ring // invisible to the host until we update the Index Field @@ -313,13 +347,13 @@ VirtioNetInitRx ( // // virtio-0.9.5, 2.4.1.1 Placing Buffers into the Descriptor Table // - Dev->RxRing.Desc[DescIdx].Addr =3D (UINTN) RxPtr; + Dev->RxRing.Desc[DescIdx].Addr =3D (UINTN) Address; Dev->RxRing.Desc[DescIdx].Len =3D (UINT32) VirtioNetReqSize; Dev->RxRing.Desc[DescIdx].Flags =3D VRING_DESC_F_WRITE | VRING_DESC_F_= NEXT; Dev->RxRing.Desc[DescIdx].Next =3D (UINT16) (DescIdx + 1); RxPtr +=3D Dev->RxRing.Desc[DescIdx++].Len; =20 - Dev->RxRing.Desc[DescIdx].Addr =3D (UINTN) RxPtr; + Dev->RxRing.Desc[DescIdx].Addr =3D (UINTN) Address; Dev->RxRing.Desc[DescIdx].Len =3D (UINT32) (RxBufSize - VirtioNetReq= Size); Dev->RxRing.Desc[DescIdx].Flags =3D VRING_DESC_F_WRITE; RxPtr +=3D Dev->RxRing.Desc[DescIdx++].Len; @@ -343,10 +377,18 @@ VirtioNetInitRx ( Status =3D Dev->VirtIo->SetQueueNotify (Dev->VirtIo, VIRTIO_NET_Q_RX); if (EFI_ERROR (Status)) { Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, 0); - FreePool (Dev->RxBuf); + goto UnmapSharedBuffer; } =20 return Status; + +UnmapSharedBuffer: + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Dev->RxBufMap); + +FreeSharedBuffer: + Dev->VirtIo->FreeSharedPages (Dev->VirtIo, Dev->RxBufNoPages, + (VOID *) Dev->RxBuf); + return Status; } =20 =20 diff --git a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c b/OvmfPkg/VirtioNetDxe= /SnpSharedHelpers.c index 9fedb72fdbd4..ec8e63ebdc32 100644 --- a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c +++ b/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c @@ -39,7 +39,11 @@ VirtioNetShutdownRx ( IN OUT VNET_DEV *Dev ) { - FreePool (Dev->RxBuf); + Dev->VirtIo->FreeSharedPages ( + Dev->VirtIo, + Dev->RxBufNoPages, + (VOID *) Dev->RxBuf + ); } =20 =20 --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel