From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0074.outbound.protection.outlook.com [104.47.40.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B0E4121E49BA5 for ; Wed, 23 Aug 2017 05:20:29 -0700 (PDT) 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=iwOu1K3btjVl5MAaXz4VaRHQpKTu0utFRkKAajcvezE=; b=Lp5HvhhZ5b0597iqVbV5ntawG9OsAc5DjoIe37NwJiROzjjm/6YvsfpH1/WB9uC8ADI6olCm4OkvPZFfPDsprszajSy/AcPXOVXHj7lnOG6eCHjVWHvLlijffzhEU+k0+txMfpb0pgqkLvN3PNawId9OJ5ivZCx4u5aBLEXrLuI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; 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:23:02 +0000 From: Brijesh Singh To: edk2-devel@lists.01.org Cc: Brijesh Singh , Ard Biesheuvel , Jordan Justen , Tom Lendacky , Laszlo Ersek Date: Wed, 23 Aug 2017 08:22:34 -0400 Message-Id: <1503490967-5559-11-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: 09a27489-ebb5-4003-8e98-08d4ea21b30e 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:mg6Qv5dU5a0id5anjknUfbQbLE10+gdNxL6c/kFw1Ikfbm8hrS+8eVAlMudmW8ZuzZ8XvQTSfEgSmiO4AmG0zG+h1sLuCU0Dq4vz6Qup6C3rTkEneEfgwkNb7hi/YLU/pwuJOI5GFHA3t13JaIrro2cWjwompYsRPq56BxnZYIw5boXMOOpKq8I2xRrFAP2YBbgnHHGi/VpYLA6sZjqUXq8NEQfmke9uOVy+owONXAPNExt/B8N3JPwBxcQmEZaX; 25:G+YJLcnj+1aW5ibJyAZW4YcgMxi8UNwtJnzcRjpsifMpOaZdNpRgEbZ4vUCpytFNlKaG6fyByStcj42mGG8B1SNz840stebj9LrkRpvjAQY13k+KXPPRa1AY9i9P07RKBJEMyQDfo+T/vx9aPKGgYlaaK87GhlADhRaw9g3JUW6pp8dgiclqeSczNuthETWKXkUWKAS+hu/TsapGqMlcY+LbDW9MMHSiAEiKfZZocnzH9DRru5rewsFr09iB9iBA/O6ywq68ncnlnW3aUelUN8YxyYsdwDAKcvh4PNKMBz5ssNqTgAMtjIG1/EVpMgub0XsdmfGz13f6F7bZ/Ceg4Q==; 31:hR2mQ+xzpgZPMMgiL6lrid8ZgrhMdgFoJTBujmfAZav5+ZF9z3L9HbShKref1EC2bAvC5Rm4qdZ6dGa8IQUA/suXwImFUlFS0t4+rPfJ1KDROyV2vKNfcwbpyOOHCmMwDi//MsH+u6xPjcYPtWwNfARQCXriT6DDhEu+RWqCHS/7pOK67fVGgu3HyCTPUDtxh8XaL2mqMJ7ryfMyLyBZzbGpvdS0E4tOVndRxV931Jk= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:KFjXzPkn+TE5/TQGFv1okS6q7+3vpFI8Qn6OT01D2V1RnbZqY1QWecXAjHeKE+BB83dPWnbyPYTe2A3y995JruvVO7NA2x44j+vm7+36GY7DqU1c7Ku4edLk1rZ7XwXFTYS7/btZ+QRUiyziY8iAAo4W+i39bIt8TS5EXM9vcnOBxacOAGmEAh/qMc5gggwOj+KevsWeab93oIatx4pyHyPtb1Rc3sfSkHUD5hOWfB3Gl8TchGUXcfcfmxuTDmJDgIYt91q/BU4p2uzfw4BhOUJ/0R4KvS3e1s8Td+8TPtw7CJ7zPgR2o58GnlrYJoox2+6gM2LFAimOO9Wd37gUnYTwCU7qGqL8p/fLGeFBJuzEvIm9eWaXAcsN/D0Gu/wNM66uIGxAYCMUdGWHlGkm5EOHM9fmbf9g5s9CS1jbD5aF9QEgcalialeb+Zf46fpkMHWOWiSR18yLObb4FWjJ7NUoD2D01V//Rfr+yf4sArMMQyAAbgL7dL+7Z3OHJXiq; 4:TbwzX1Q2tdY9oLUHTg5yUaGyL9YpOQjeTU6hOC8qnNi6Rore1R4Zs8d042LYOQbt9uTtHNLHqq7tZY2IUrbHMfAaB/J+3v7Bkk6oXgSkpS1EKt3lx2WhP181eUEe6tuhpExVlTQ5NATfBiGwbVeSGCIEosxVEz0i0U3bVusYbFa4vfJpp7IbfkvSfZ8wF/JIriG0TYRhgy7CnOUgyJFBD6NgoXbQC37kKrDIiGtVJ01BvBkTGnY7BnaLwedcswLdOr7hedR6xM10ds7i4/Z4Ih44CQ1vgTO7or3L/GnVHt/Q8lwFZo/q6ll3FTtLW7jHz65H7naj/3l9tYYvVpY5gA== 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)(39860400002)(189002)(199003)(575784001)(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); 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 (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:4DRwioHH9dOW+RPsYjbEejAyovITtpLJWYKEXL0UN?= =?us-ascii?Q?4kQeG6QYDQtK1f5280A2DsPx+4WfcYh3I08l7Og9QwanSaGORZoElnShBQz2?= =?us-ascii?Q?eBIRfvdMUmRTmuD8J54txV9D6qx8fSKPiQm7bh9AxTeh1iOXe48azH5uX5BX?= =?us-ascii?Q?7NNH9mhSxKteOZgyzRYOzIRgLpzpCv68SO1thIUuOHEFzBqAHxoKA2U9wu90?= =?us-ascii?Q?KQt50SoibPimnviJeSP7Wfk1gz0Cqpl+aCz5QvmqeEPUEI+1WIMU/sPM6TwG?= =?us-ascii?Q?H0eACoNRfuzck0eMuTRXdv+dQPKitIk6PtrhX2LZzPOPcPmz58QbesyB/0If?= =?us-ascii?Q?4KnrcAMkAcwD7I9SKT1w+SUoq5Vgq5x9EBg6NFnUmw5JL6NhYKiCbC96qmmP?= =?us-ascii?Q?X+9pggnkKlbTEGokM+TiU+rJjj0Zpf3uNdWZubqPWW7HaHEC7rgYruqQ5W3i?= =?us-ascii?Q?CboK2wVaeghNl2ROwT/LNL2NUv0Qm7x1iSgwIjRCFQtfJABSFW09X6juUB1g?= =?us-ascii?Q?fOATbQODs4oZdoMW1CNGeNzSs7EULGCHysJgsPsQAf6ATF+pzXQV4/GglnOR?= =?us-ascii?Q?a3OqwxeI/ygINOH3NvuBazBL//tvLdndRUtf35Tu8VAy0o6RE2NLE41Fktf+?= =?us-ascii?Q?eqFyLdi60bMOyEDMiSA8BcqE4awH3rDfNfrrhi3YqWfZEoNfpPleARAK69IX?= =?us-ascii?Q?X4xeZHWUFe/iXY+XlUkx6hi+d47k39+w7/4HRm8lgjkIq+RQErAVYGB5gwmJ?= =?us-ascii?Q?4y9jo+BrWjxn42x64KJYUDY5F68n7CtYVRGTSkED/1jrZcPqbH6V4aHYZyfu?= =?us-ascii?Q?S+LwxZBBqvcsWnNvrYtAbLcrTEGmdnRexMeK21D6azJtlhtqYqE1BoPP0hsU?= =?us-ascii?Q?KWLsY9FNv29HnUk+29J9ZbZbTjswbfml1mGU6+tEwfSzR0N5ZuoQNiTYGNk+?= =?us-ascii?Q?4YIwR+FJ9+ir8mmyV3iuIoRP3rEcut2/a/TunetutILjXKPDegshcKJOMyeM?= =?us-ascii?Q?UcGxZjwDVSTEhGLzxy4ND5V2otU8ltdpxii1HwsJwGNxGqRloxtom/uGlPOw?= =?us-ascii?Q?slMj7+cLI5kEVjHUE4IZAsuf/8YsbcxufXMyhjsQxVibs9TxEi98P5XMS39D?= =?us-ascii?Q?/bA5/rxxzZjtegLGCqEqFFn+SK664nqfGd5A3/nsMW8CjsTOnYjpOk1rHUnJ?= =?us-ascii?Q?b3oph8elXHfeik=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:Av57JXsd4rsO24kEzX2j9qvim8mtdZtkzE5k5uEiqSdVySwrPXNR6oU6y0jJ+uCvkGhvBvEkaLNL5uPCopp8e1VNFN/lDp2k2sXUdMw5azivRcWdxUIbcYVHPA/CKZIoLSj/q5H2V8AXOKb164RZRGny0II4gNgj8uYlg69g4tGqXtWvYbNiRjmQWXac1yddLvkIMeV5JEGK8d5bgTaPt64OPJ8qh1piWBgG5tZ30uhMosN3O/14Yf9uBQF7WrgzrQQ0XHlchdA15bsez/WsXhexYEv7RyeZL9nscej7Cz0B/V7VKWt6fVfFjlhaKOto6L+ODHeXN6Jk1W+TONMvEw==; 5:noF69RJCSnfZ51LE2xmqka/Dst8wZMGmvsqj6gEMy8W134031Sm7RzRFPYlKuLglcc5m0zgxyAxfOGoYbM4T1HxF0FbdMhD0RF5ZSMT1DV30mvwDGz6kgkGY5AM9v9goe6L7UH5kEGPZVZzAvg0uYg==; 24:+yX+KIv7DO+JNJUMTcKl18ekfBy2txctUYN5/VVlX70re5QgQh7gcIg6kG7FHxrTS+9OcRSF+xfaHbjcTyCU7OWfDmeS1GC99vCMQM6gHGg=; 7:AwUH5Jd5UnZM8JPtOJKMv/o2jYV2mX+8sge9sg1cFg6XVjrJ+UjjWn/FlIadAb1w520eO7fIbTXuJ0dTXaWNOsOvZhTPhznxY/+6ngyWGDL6QE56Fm8GdhA/FEiejvtMgm+TN+DTg/U9m/69TsZeGP8cIRFPZH2E/VhZThvsU/bUGE7g4QLYHpSmHu57Mwynv6dx81RkVCI9BZGPC2lgTsBzf5zhOn+OsIC6ecz7nSs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:OuHKJsqgrPukvhQXe3Q9RJwBLBKvhs4IrsKNLwIbr29WHfcbIth3x5cfgemwhVgERJN5INMAIPlX3gxi2U1vkInnMPyqdVCSeVtAcrnIqIBzrCb7qqYR7aoZ+6KzkTPBt68JzlMsMqosn38PRRRnxFaXrWAEJZx+VHC+zWCmsZIVzEITJ5vHWMmebIY28DdnANI/fQSMaq8qmap51V7oPNo8D8/Ff0KNLH2Vqk4V9u6DQf8Ds3/u4km2XHlyJ6bs X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2017 12:23:02.3259 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [PATCH v3 10/23] OvmfPkg/VirtioLib: alloc VRING buffer with 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: , X-List-Received-Date: Wed, 23 Aug 2017 12:20:30 -0000 Content-Type: text/plain The VRING buffer is a communication area between guest and hypervisor. Allocate it using VIRTIO_DEVICE_PROTOCOL.AllocateSharedPages() so that it can be mapped later with VirtioRingMap() for bi-directional access. 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/Library/VirtioLib/VirtioLib.inf | 1 - OvmfPkg/Include/Library/VirtioLib.h | 5 ++--- OvmfPkg/Library/VirtioLib/VirtioLib.c | 22 +++++++++++++------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/OvmfPkg/Library/VirtioLib/VirtioLib.inf b/OvmfPkg/Library/VirtioLib/VirtioLib.inf index fb5897a88ecf..e33856de38c4 100644 --- a/OvmfPkg/Library/VirtioLib/VirtioLib.inf +++ b/OvmfPkg/Library/VirtioLib/VirtioLib.inf @@ -32,5 +32,4 @@ [LibraryClasses] BaseLib BaseMemoryLib DebugLib - MemoryAllocationLib UefiBootServicesTableLib diff --git a/OvmfPkg/Include/Library/VirtioLib.h b/OvmfPkg/Include/Library/VirtioLib.h index 3d9314b3acaf..c3e56ea23b89 100644 --- a/OvmfPkg/Include/Library/VirtioLib.h +++ b/OvmfPkg/Include/Library/VirtioLib.h @@ -42,9 +42,8 @@ @param[out] Ring The virtio ring to set up. - @retval EFI_OUT_OF_RESOURCES AllocatePages() failed to allocate contiguous - pages for the requested QueueSize. Fields of - Ring have indeterminate value. + @retval Status codes propagated from + VirtIo->AllocateSharedPages(). @retval EFI_SUCCESS Allocation and setup successful. Ring->Base (and nothing else) is responsible for diff --git a/OvmfPkg/Library/VirtioLib/VirtioLib.c b/OvmfPkg/Library/VirtioLib/VirtioLib.c index 535635ac0ba8..e5366e385f5d 100644 --- a/OvmfPkg/Library/VirtioLib/VirtioLib.c +++ b/OvmfPkg/Library/VirtioLib/VirtioLib.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include @@ -44,9 +43,8 @@ @param[out] Ring The virtio ring to set up. - @retval EFI_OUT_OF_RESOURCES AllocatePages() failed to allocate contiguous - pages for the requested QueueSize. Fields of - Ring have indeterminate value. + @retval Status codes propagated from + VirtIo->AllocateSharedPages(). @retval EFI_SUCCESS Allocation and setup successful. Ring->Base (and nothing else) is responsible for @@ -61,6 +59,7 @@ VirtioRingInit ( OUT VRING *Ring ) { + EFI_STATUS Status; UINTN RingSize; volatile UINT8 *RingPagesPtr; @@ -79,10 +78,17 @@ VirtioRingInit ( sizeof *Ring->Used.AvailEvent, EFI_PAGE_SIZE); + // + // Allocate a shared ring buffer + // Ring->NumPages = EFI_SIZE_TO_PAGES (RingSize); - Ring->Base = AllocatePages (Ring->NumPages); - if (Ring->Base == NULL) { - return EFI_OUT_OF_RESOURCES; + Status = VirtIo->AllocateSharedPages ( + VirtIo, + Ring->NumPages, + &Ring->Base + ); + if (EFI_ERROR (Status)) { + return Status; } SetMem (Ring->Base, RingSize, 0x00); RingPagesPtr = Ring->Base; @@ -143,7 +149,7 @@ VirtioRingUninit ( IN OUT VRING *Ring ) { - FreePages (Ring->Base, Ring->NumPages); + VirtIo->FreeSharedPages (VirtIo, Ring->NumPages, Ring->Base); SetMem (Ring, sizeof *Ring, 0x00); } -- 2.7.4