From nobody Mon Apr 29 10:26:42 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 150542418137234.45140820717165; Thu, 14 Sep 2017 14:23:01 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 9882F21E2BE29; Thu, 14 Sep 2017 14:20:00 -0700 (PDT) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0054.outbound.protection.outlook.com [104.47.38.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5D2A520945C0B for ; Thu, 14 Sep 2017 14:19:59 -0700 (PDT) Received: from ubuntu-010236106000.amd.com (165.204.78.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.20.35.12; Thu, 14 Sep 2017 21:22:56 +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=ZiUMQTmwFDrGjWBAAU3s8ilXSsuUXilrAgr+fl4lWAw=; b=DlsWxRnJjSYnXppVcj5BTJzAMkStOVmBo1fMmUaTNcLx+JvyXMCiy+ep2hPPV/Z9qcO/TsAEg5Lzpc8v514H67bF2Ec9ek/Pf3Iri3v1a/2kdEU/4AQO7ZZfS1V+Ntb6JCTnZtm8sj9FpfR28FY+afHFuHrTCIG9UPSz75BxqUY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Thu, 14 Sep 2017 16:22:40 -0500 Message-Id: <20170914212247.124937-2-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170914212247.124937-1-brijesh.singh@amd.com> References: <20170914212247.124937-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0014.namprd20.prod.outlook.com (2603:10b6:3:93::24) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 79c1817d-dde9-4f37-be69-08d4fbb6c499 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)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:jCCSHUVts1WWDjDpq4XmzXZ0+MsKmuol/2L2UPX3yWqBF+Afri48gS9XvXWz7Y6qgS7q+jrWi0QmU1xZNdnBiGjxJimAj/b273+aXWjq4mNFxqrL0ZbptmfnQDH40kCtV3j4/3vsUG1PCQE2WzbmkEwDsyDgRXRkyNFixoskVhC4KI05nUzG14SIIpZM9CN2Q3PEi4pOIYlQzC3josf06FlxwLUox38qTA8IJMEcxbCwMTw88NT+ILflCKXNEN2J; 25:dZG9Q55wngAsKrZi+ekdLci8P1qokMqr/nebBnJcxw6d1r4O6dxAa0JqPgxlxktBY+FTDmVMKaiEZpbzJCbnzPzFDfU3P/zQrJ0bok2IsmKZWzRDJGlsypP6EAmRmwHWQEcn+tvFTXGys2LV2Gp2ICE9KPXGa/k38ReVCs8MTVaawFnkwx9ccC/peddWwDMBT0b44tYB88pRXf4wXc9wlUNo4j3TOEIaXltzw4mSdn642ymYqbFDavo2WHS3APD2GGzKrQ9/bHdSomnwYnJgv6MxlWTg2oNthPyUofWqcGAxyAJHriePKBNNDl8CefBeyyVFlnIhKqM9tOfhr/3SsA==; 31:iFOB8JPVoL1+tQ6dKrCrjBF46d0Y1M1u7jRqWv5EutBYSDy4ZuVJDZcOHkdEPSr2HTkiWU+FnkNyna42B38zb6A3irusWrh9wU9qb8SlAMkybmb4/GGHX9hZourYxSwFqTsyKoxgJXvcoeXENGobGU2i46rlzkl464hItPyPXxRZ21gcP6LUE5ZAVmVhfRnUItoNqGJNkAhA9A3SRxFMvilMLYcUydqzRxKJ+NJoEWU= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:zkH6XE1AteqTmaSgFhm+9Xnza8AiMMNCgV3ar0fqi+43KNIdYvxXMqQKbHKqC27dx2J9ov7trjV4ECSzidiC5YVnxw9IY3qy/ELDs1ez91tz8f/wSk0cMb7Pexg7uScSYvjJKO+7+EkjboVL271YDXgzHbqKuiA3yBwEHFntjSoBGgad8i374uri+Uz9rELEDJ9K2fwbI0kCXBd78Cj9XST5BNQEXjYXV7eGo0MxVsPH888p/3MndVFyaoK8tbfGC44IUAPPxdXChPcAnxW3bL7hfNQWgB1TohId8FOkVwtyHi6ky7omKqFVzhfX/gwpjp7Rr7tb4TCxH0VYM0B5Y81S349Q3EPZepxI65Q+EEcxn45fWc+mGzVUms29B9HqgXcX6Hmvb1mkmnMFgRVQDWCkHB9BGsazrPu8mQXx/xeYVUVcdM3oMVIuQXVk6H1BtU4k5SMSlXglWPxLIUXD6HQUqoNfhDVsycHrDmuinPnmTtMomw85zE2SoZ/zUlFi; 4:5kkMCQz5e6vFEK+MXYZlYSQYqoDUke9Mcdpc1HAqpiPH5YLvXu0dC62IB8z9btDbNh0ltVIfx0XWuYamQcHhbIOLDYtkCVUUgiyXMadZWwbF4YOKDqcJrt/fNAFqdfNXVXNVEixJVpdg9+AJjf9ImweXP1MbS0zZilegGNB/MSqZ9qY1rzetT9UsKzfSkX7c925VLY8uwRdkjC3oynN35W4IZkSoA+rqJ/cvunBB6QUOEGvoqvgu27TBFPUDhzDwq3OXKvzWVc8YtzQufPnu60bBbPIWfkVW4PZorG5VwmpxhxfzPnfBzjdU7X2XclPzJLIoybWV6iKT+D7y/gV33g== 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)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(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: 0430FA5CB7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(199003)(189002)(53936002)(4326008)(110136004)(50466002)(47776003)(50226002)(81156014)(81166006)(68736007)(54906002)(8676002)(2361001)(66066001)(2950100002)(6916009)(33646002)(2351001)(36756003)(106356001)(105586002)(53416004)(101416001)(48376002)(8936002)(25786009)(6486002)(97736004)(305945005)(7736002)(5660300001)(16526017)(16586007)(2906002)(5003940100001)(1076002)(6116002)(3846002)(316002)(50986999)(6666003)(575784001)(76176999)(86362001)(478600001)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:ubuntu-010236106000.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; DM2PR12MB0155; 23:JE6JxIV6o2rlDAljOaC/pqA/mDlzDxeLnUNYliJl9?= =?us-ascii?Q?OicxKjcKXkzlF0znyrqalo5j4NfVMpv2bYAv2skbkv27uBSt+R/ZMDoNo2xB?= =?us-ascii?Q?oXC/rzux1gNBrUrSMF3sEieISr6z41qWBVVv6gjwxXXiWqvvR4Eyi6Q0JZN/?= =?us-ascii?Q?+GEXCRiQokb2DepDteycoBjWZaFlcj2A21r2IN35j4DPPe1vwTViOxeCNjST?= =?us-ascii?Q?X+qOcCUQVNGOylbe2oy98+r/QAbRHLyJuDj43syNFGvbzVL4dq/2aBRMeVgp?= =?us-ascii?Q?E9cxXEo2CoTfBwGFMPgexdT9ziimQ0D+90CQUg6ZSZwZNPWDHzA9m0DyIFuE?= =?us-ascii?Q?MXtfXgf/2B59PZgFY4d75pbI//t1PiehhtK4UkVLnjIE9RjqKGZXTh7wwgJ9?= =?us-ascii?Q?h8FkvBk3BguTYHtb0WqqNnC3nWVr9o3vXCwFIyi7HKL034X1n+5uGg5aAaAK?= =?us-ascii?Q?0ynFeaDmxmNu5fAVG26G3kit/X8JxU/08vyFFxgX4hvaDCr8bSVoimQOqdYu?= =?us-ascii?Q?T6JWp5yHoSaZbhO5JpxLWehdBweQV1AfPmnpJ17UmMdSttPRtfkJxQkbbBpl?= =?us-ascii?Q?XgHdRJpuA+38YDKmSZDtQVtZl7I1O1DDJIes47pQ9fui5QCS7lfy+j3Z35n5?= =?us-ascii?Q?PrDLE4LXLDhDPn4Gm03r8ozoUt6BYN5Cc1NNUGgY1mLMKx5wHY/UjFTPCgKx?= =?us-ascii?Q?t5pYUM2jqZyAQH5Kju+qbdp+YO8SWx7KCT+hLNHdbfrRN+kXsGG535txPCBy?= =?us-ascii?Q?IpF1mJAbnnk9QJYdl8xtNOfO5JRTiFD29Gcvy2nWOxA5jJ4NWLyvTQkShqxd?= =?us-ascii?Q?H9VFmsaARaAduXiuV58cAGTfhptNXHpl8zPJaML+kI456dUfn3GAqoVrEzaC?= =?us-ascii?Q?6GL3XOiJ4g06gwoxosFtMClx+kM49A/J/JV4Eln/4pkq7OUq3QVpembgtVJa?= =?us-ascii?Q?aM6yl+v0nbqM9hXEwCAycMHFMNl7DHVZDTHxQOomR6MYaehKZNoiC/wEooRu?= =?us-ascii?Q?aPa0GaMeRK/NdwFnEPfVBqrKCJO1oMAqHpIZk5JrB85xL2dW8igoPIij9sKB?= =?us-ascii?Q?3Ip1qf56BH6c78iCOyOc7irhmDiX7zu5uDqTbGN/vJzuzYRmd+j7ATjRm/Uh?= =?us-ascii?Q?Pva6J9N/yHYNy/fD658QBskeYP4YyHU1eRtGPGaaONFPyrcZRigg7m/cprcH?= =?us-ascii?Q?YnXwWNKhfnINYNINWKPWJep+R92/G7lJc2Q?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:QkXheRqnJJKyl+jIgPCHYS5EugyhzlzPwRefTjjfjrAW8lbYxGf8GTDEcJi3pgKs7WQctP6l5vOwi6s9sMjEImxrBrdjG4BPmCbFGCi+yOXsVNS3uB5OUXqqwymBwoVOS/YlYKaGaDS9t5yCl9vcD5IBUsHHPcMcSVRNCyYBeFEzqvte17YbWpTNV5lVBUKBT0WcecAC8RndRBfozgR/agKXIjGZbeCTK9OSNHEFdAa+D3izfGlxCmfXb43Q4pVUpUujz3n/DhKiDpcxw42g3grRrFOxo0zWZj/CSFXOl8rGldVcxGkvM8X1QpAoKxyHUfcqqkoMXm8C3ULiHUayzQ==; 5:0GQJqLliDRkXVuMlLnkafKooIdj0KwqUVJBlbwj7koxEhRjyjxfkyqSI0JpQnU4pznsynlZkG/VXjK6QNP+nRNlvoQJV0KKed23mpKoYXalW44AmpfgxG9/531g1FHhqpPHGEh2UxX0kNxlD2O6M7EaYbd2QgmAWFBGeP+GYvIE=; 24:E24ArFjxUj7tkB2uaz0f1Iax+gsFLyKrJMANbhARECIho7q91GN9hbeboSkRcX/UpkudRNZj8MdNUlYCyJnZGYi6ZLGzkgg6aL3DqFQtLOc=; 7:7t6CnQykvr+SGpmBthSbL3Pspw9j+88LUTf0rGRur7IGc1oqfmZoMo1tZ2Q6JtDeFYqPesJu7FVXzNGYt2T/kVd/rmkGUOYUgJDGOt6JL6iPv54GVh+bt1T7EobT2OG4xlA90q/EBN2TX7W2xkoGWroRHuVlgF+AatC6roiwjgiO26i3sHilO7eKh3zrUJy/r7+68vlApyrNpHrPZB100M0C2N3m3nnVLnjhZGjQcgc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:b1xE6vYi1/VkqCwuYEoXfhqrw3bSxeOlu/DqCXd59MlsBi6aGiJFEPpJ0Ylhr2iSVJiV3HIcE70fmKEX+DVUplbhHkWcjkXAqR0SDjzrum67edvpqAXMZueOb3XtXoIU4Vxk+R776ax18aqkeBzZvsIy8L9IYmEUWjHj655zLLstnDbBOGO1KCorssytm8AmOBf+8U7C8WuPp+31dCBbewEhrHw50boPpIiFqHifBom+rPcGHw8EaCq4UKdiJJ/m X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2017 21:22:56.5081 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v4 1/8] OvmfPkg/VirtioNetDxe: add helper VirtioNetUninitRing() 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 , Brijesh Singh , 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" Consolidate the virtio VRING resource cleanup into VirtioNetUninitRing(). 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 Tested-by: Laszlo Ersek --- OvmfPkg/VirtioNetDxe/VirtioNet.h | 7 +++++++ OvmfPkg/VirtioNetDxe/SnpInitialize.c | 4 ++-- OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c | 16 ++++++++++++++++ OvmfPkg/VirtioNetDxe/SnpShutdown.c | 4 ++-- OvmfPkg/VirtioNetDxe/TechNotes.txt | 5 +++-- 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/VirtioNet.h b/OvmfPkg/VirtioNetDxe/Virtio= Net.h index 710859bc6115..87a0f06e01a4 100644 --- a/OvmfPkg/VirtioNetDxe/VirtioNet.h +++ b/OvmfPkg/VirtioNetDxe/VirtioNet.h @@ -263,6 +263,13 @@ VirtioNetShutdownTx ( IN OUT VNET_DEV *Dev ); =20 +VOID +EFIAPI +VirtioNetUninitRing ( + IN OUT VNET_DEV *Dev, + IN OUT VRING *Ring + ); + // // event callbacks // diff --git a/OvmfPkg/VirtioNetDxe/SnpInitialize.c b/OvmfPkg/VirtioNetDxe/Sn= pInitialize.c index 0ecfe044a977..637c978709fd 100644 --- a/OvmfPkg/VirtioNetDxe/SnpInitialize.c +++ b/OvmfPkg/VirtioNetDxe/SnpInitialize.c @@ -510,10 +510,10 @@ AbortDevice: Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, 0); =20 ReleaseTxRing: - VirtioRingUninit (Dev->VirtIo, &Dev->TxRing); + VirtioNetUninitRing (Dev, &Dev->TxRing); =20 ReleaseRxRing: - VirtioRingUninit (Dev->VirtIo, &Dev->RxRing); + VirtioNetUninitRing (Dev, &Dev->RxRing); =20 DeviceFailed: // diff --git a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c b/OvmfPkg/VirtioNetDxe= /SnpSharedHelpers.c index 9fedb72fdbd4..5b75eabc7a6b 100644 --- a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c +++ b/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c @@ -51,3 +51,19 @@ VirtioNetShutdownTx ( { FreePool (Dev->TxFreeStack); } + +/** + Release TX and RX VRING resources. + + @param[in,out] Dev The VNET_DEV driver instance which was using the ri= ng. + @param[in,out] Ring The virtio ring to clean up. +*/ +VOID +EFIAPI +VirtioNetUninitRing ( + IN OUT VNET_DEV *Dev, + IN OUT VRING *Ring + ) +{ + VirtioRingUninit (Dev->VirtIo, Ring); +} diff --git a/OvmfPkg/VirtioNetDxe/SnpShutdown.c b/OvmfPkg/VirtioNetDxe/SnpS= hutdown.c index 5e84191fbbdd..432e0691d457 100644 --- a/OvmfPkg/VirtioNetDxe/SnpShutdown.c +++ b/OvmfPkg/VirtioNetDxe/SnpShutdown.c @@ -67,8 +67,8 @@ VirtioNetShutdown ( Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, 0); VirtioNetShutdownRx (Dev); VirtioNetShutdownTx (Dev); - VirtioRingUninit (Dev->VirtIo, &Dev->TxRing); - VirtioRingUninit (Dev->VirtIo, &Dev->RxRing); + VirtioNetUninitRing (Dev, &Dev->TxRing); + VirtioNetUninitRing (Dev, &Dev->RxRing); =20 Dev->Snm.State =3D EfiSimpleNetworkStarted; Status =3D EFI_SUCCESS; diff --git a/OvmfPkg/VirtioNetDxe/TechNotes.txt b/OvmfPkg/VirtioNetDxe/Tech= Notes.txt index 9c1dfe6a773e..86b91f561495 100644 --- a/OvmfPkg/VirtioNetDxe/TechNotes.txt +++ b/OvmfPkg/VirtioNetDxe/TechNotes.txt @@ -70,8 +70,9 @@ faithfully indented) that implement the transition. VirtioNetInitialize | | VirtioNetShutdown VirtioNetInitRing {Rx, Tx} | | VirtioNetShutdownRx [SnpSharedHelper= s.c] VirtioRingInit | | VirtioNetShutdownTx [SnpSharedHelper= s.c] - VirtioNetInitTx | | VirtioRingUninit {Tx, Rx} - VirtioNetInitRx | | + VirtioNetInitTx | | VirtioNetUninitRing [SnpSharedHelper= s.c] + VirtioNetInitRx | | {Tx, Rx} + | | VirtioRingUninit v | +-----------------------------+ | EfiSimpleNetworkInitialized | --=20 2.9.5 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Apr 29 10:26:42 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 150542418540962.82646184565067; Thu, 14 Sep 2017 14:23:05 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 2471C21E74910; Thu, 14 Sep 2017 14:20:03 -0700 (PDT) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0054.outbound.protection.outlook.com [104.47.38.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1B6E320945C0B for ; Thu, 14 Sep 2017 14:20:00 -0700 (PDT) Received: from ubuntu-010236106000.amd.com (165.204.78.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.20.35.12; Thu, 14 Sep 2017 21:22:56 +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=HjgMiD/Lj0K9XJ8xH2QsEmRQ0l/tNDQgAWUfPsjgxFA=; b=M7rhJQzqjujFtPtt0ZS2ARV/kDjGO3wJHrgrPjIq93TLOar8DnDOVUaHchUzmeiB1Z6frRnwamOvIhRUJo4UFadE0Vv4wlUrfDc0KUvy3X1KErRQ7k72jS3qqkbVfLvtckEX2rp37+LH/1YMXQ3E73/9JleSIbHBPaTk0w0pK1s= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Thu, 14 Sep 2017 16:22:41 -0500 Message-Id: <20170914212247.124937-3-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170914212247.124937-1-brijesh.singh@amd.com> References: <20170914212247.124937-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0014.namprd20.prod.outlook.com (2603:10b6:3:93::24) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 158b658e-d7d8-46d9-e249-08d4fbb6c4de 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)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:yiLahKGEBp8jqK7wgiGNet3KVk4r1BMIIYYSuHebkTWaJi/EFxvzOHxcDaYmmjxWUVdrDzW+8gwf0CqqzQsASPcpTs1TdKb9b4hZ1B0Poeuh+k05kofgmMUH0rIT2Mnu33fLvFkmLXj9RwOQLfbXM9b32AINjNAiMz40HxPbJVceU919AwjAEpoblKam2elUFWzHpqOdEE5Hcc+vquVG6rNk135bb8SjV6v7xA8x8ySn/mIdL5KKaVYYwgyMukQ6; 25:NUmipIqUpd1v1KPQriC9NWGM/haotpHCD/WaFAMpBwGGW5Xtq2ee6GE4gUo95e1g2DvcEevskKh4ju8+eAIEqz4P/p+da9234nc4ikBm0t8He3M7L5MHrFmHysKIxrNtzL+zU7gzVVjYoEGPrD6YZQb/LGpitnYHeGmsYKwxifid4bLsMGty20FB+7kXOrL5rubqlj2NdKc8L2anwbX2VwpAQcvFbN1uReMfrS1sJn93SecB79+/N6JLPqqJuCV7eg9eHjv2wLYBoY+dG1lhiEJS4d7LJ5ZkSqaE6xWNsfT7FtM2fgdy5H1uNAzusMjhjTycGQM4KakfQMydr3e/oA==; 31:5q1o3WAkGvjFZ4/qXdzYcoo9b9hx/S7oAiSV8R4tNBO41+2udDItE9kdwVU/qfk/odTgsZ4OQEDJzqaWDDLUyYU/HoO7PdenML8jaWXiwSCX5qKWOlhhkmatUnFAXWC7CtFGqh9UzC/ClbFjlem9I1Uhc+1o9Ue2jufnuqsegvA1VwuPNW8Xf2nkgMDqxIGqap+W9BaEmSP2KgfgBV5b2JaAeP5tcmkeUdzpabtugXc= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:zdrNCg9V2HmUUDrIzbPuyHf4hfB5ULd4feytaUabnZZRZxBNNWC5GcO6fFtzgHhOB/1pFdd103FLPqQrwBWTeVwVTdiiOpJVGpajbsVA9LS+4JeKVPZzmVYfcqilSPOn+Ccy2ayPOPIYvwxF/Lc3rRPlEYsmL3aOnA4uWBgyf64JM+tRamuHk71Vx4gWS4fmPf44FX+K6YW4cgJzbWrVqg9MzKxAPr5+dassE431iAcc+/TLCzdWO2tC6jffRwYeMvq5BXUpy2w4DgsavcAnhYut0jiiZUjC5+WrT4aeVKuvF6wGT4xsnDsvjkE1AzgkwaGYGKfwvO8goANcPvz8uEi1P5ovZvX4iQc9UZkmZ2B5seEOS1pkO5CzHdSS4taeYrscXw64xgKnKuEmxlPwKBtFDfMVJ52DYcsoSOM8CYYbsNC9SbLRIijF2rLB6GPCfE/E4tSv9J2455hm5jvGQ6ymGt0M4dI3Ub1wvUBUTTndSBu56eL8BgkYI9e8BYQS; 4:yEajOv/0Zk5YHUDMAirZbnR1gO1G5uRdWKjS9/UMj5YRmPo0xqJS3gjhzgU92NOPYGn5qGDLyBmX7ZPc1cLqtT1KuWEA+GrB1MTs/Fb5+RZrg0qsJW/6DmvHGoi+jI9DlLXvUXnFbPPyU7i7ADijNhY9JDdC62U+1UrCS01b05TsBLkVb5MSS8mRMi6ol0XUS+XmVEDtkhJybhrdZXRPeWoMrqARq+afjsRwWOendVTdV82WRPxS8Zi3cCp1Rt00QXFIMV2Ozu2+gH+c9e6OljLbfz802r+8KAw0bBqyVhhOT65ceUu4u50thG8tPNhP43IyUe0nIQqeVm9I0mu4MfdXqgg5qXNDFIqOs5CND5A= X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699)(17755550239193); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(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: 0430FA5CB7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(51234002)(199003)(189002)(53936002)(4326008)(110136004)(50466002)(47776003)(50226002)(81156014)(81166006)(68736007)(54906002)(8676002)(2361001)(66066001)(2950100002)(6916009)(33646002)(2351001)(36756003)(106356001)(105586002)(53416004)(101416001)(48376002)(8936002)(25786009)(6486002)(97736004)(305945005)(7736002)(5660300001)(16526017)(16586007)(2906002)(5003940100001)(1076002)(6116002)(3846002)(316002)(50986999)(6666003)(575784001)(76176999)(86362001)(478600001)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:ubuntu-010236106000.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; DM2PR12MB0155; 23:ii3CLeBS8TAtLJKkVkXbVprhZPq5uhge/Fb0qRizS?= =?us-ascii?Q?/DVsW8LPcQTG0uPpRc1tOm36nGOpVUBpS+YvwiU5GvnXc1CWbiCQb44hti3S?= =?us-ascii?Q?3o4XKvxR+hv1Oue2POqB3FiHLL/OmFiTWfDTjGVFEPunLHZf157ns831tItL?= =?us-ascii?Q?BzGoGt6QHaTsdbsUtDXwoh7ugJ0yuoWnwrIJ0pTDNSp6ZeWRLf0/L8YPvPd1?= =?us-ascii?Q?Ov/uJbfgTeGGCM+SWACYAGnSpHZD15D8jAkzFDH6uVeF1ra9J+DC2QbMXv0N?= =?us-ascii?Q?rh1ef/ER4Jr6rFYJVNRFZeNVmswSj54YVqJb+iWsFOJElH17MJlqCxhMc0kv?= =?us-ascii?Q?KW41SokQCbOPKIQ8nZi5bl+rUtVh3i0Hqpk6IRtyDz59L83pdM0QpCUyT7LM?= =?us-ascii?Q?aKGt1grwFPKEeAI46xhxHjt9isr//thTc4Uaznb7jdtRgd9C9pMk8OBwX6Ag?= =?us-ascii?Q?7UMzJ+KV3aNw0VjBOT+v0Wb+i06nURi9H4gqXpS3PIyPrKB03US297DWdPE9?= =?us-ascii?Q?QESzh7V+MBwroLzoY6ctrNQcVXVXwiD5n793JdveH5pn3sXTULmgJXJeZYj8?= =?us-ascii?Q?7td9DQFR8Q7tr6xEa38cEvq91DvTMMcgV6E6uRc85K1ma5TEwaCUeFGVsAn6?= =?us-ascii?Q?BSjUjSdvnRELGWtFxIZNMZ3Sw7P6xX9vlgkIVVpA4niE+0hTypfYIS5kKjvf?= =?us-ascii?Q?8/nyaIL/ActJwM5G3qvMKBmIHdosbZ5XilzfLNdm1Cx45/CWt6LG4A6C1AHM?= =?us-ascii?Q?8EC5vOxeGvQ1i3YuXD7LnSrIpOLB2p3zKFLWiaCVLvdq2MHRSFoacUaZe9Xu?= =?us-ascii?Q?pz14gSOT20iZD/KDpCqkcZuqoBRt6DNH4bHX4nCplbCXr4sXFGl4WZAzEKhL?= =?us-ascii?Q?IZXJ1nq4D6MBqmom66O/C7qDWE5ukV0P63hW28uYFceh4OuNUU2pR/kxyLok?= =?us-ascii?Q?P4DYA8GrU10okpVd9Nzkc7zN3Y775XCRH7k6fri5IX+b6ng5sft5WVk7vkw1?= =?us-ascii?Q?yMZHxJeYFkI3hlNRvxm7Dtsv1tFU/0VjdDdrOPLbJ0rNWloJWEAGpseC8XKN?= =?us-ascii?Q?URBpFcamrNHL5S0GKHviTWGwUqqRqQ2MgfYFl93E0FWVr5YHLlpEEapHZi8E?= =?us-ascii?Q?JZj4fcRkYBf/z2Ho/0CIM2sHfoJZjh6sn1rKxkg2CPZAmOa3iewtnV3fIlAh?= =?us-ascii?Q?Y2GgSlaIssaD5F2cGYlE8bQZIBVxkzmezziR9+Xybx0inyrXqIrmcj2mw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:hjPfmZjH2jWspyh+VsdENlOp4EGwb9zetodIvwGxZoSMFLLqUhUoobyOOJI76/rZOn3O+r6KO144JFFRxaK1Rz6rcL9QoSi2Q3tZ0I98vUWRz4HadtZ8sKH45kiHYC/2nGS1SAUimZ+vBEG79AMJrCLf3aHQBk8X3H+vE9Tn7bAvUrKq7U+6Dz8jZU6tk5sEmyuqPxR11dcfOsJa9NJgo7ngRObc6ESR4oz4+GRh1t275DVn3vdhuNS30zhKhcHQkwXPw3oxnTW+dgvZUcBG7GbL1UJjEVctTa9HZ2zSW2pVoBrm+pFtrwF9cKTFlRc8anBRq9bhiFEW7hEdkJR7nA==; 5:LqUWietGkNrAk3IpT3Yo3dcIcJIlQux0kAcIGdg9mKy+phcxUT/Mr5sbeUaQaL6KGFVhXI8VSHIcBKMd13oGVq3L46DwnIJHgyDbr/tvhddVoaolYizZFFDksH78SJ9Bz6LCAchRjmlrS+EAZjXrJozTnYntasexSjFcyeCQq4E=; 24:+8evl35Xh9tt29756PqShFJGLHgqWXXuT4bskJn7d7QQA6FiYimfH2EzXOFFjY77LFEY9CqeOMTbrnnrxvaQVwEejRewgA2/TqAbhXOSCzM=; 7:voi4Wpt2Yh4gwSVuWHQyD22SLuWoAvwji+5W0dIoez9c1J2nmN4QH+4bmxklZ3ZmjeRCCJmO7PG4TytoRNqhJMQChW58BAl0tPNP/0SimTkXwvcmZJor6TXczCprb79nOfiLGmD8CuhdfTxK5x4PcLQiUCKG0nrdDu5ysIIqydY49HPeEGJcB/zcRXpM1/w6AIOCqp661L830Y08lIfpZoblttjCMMvcTre6u5thqF4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:T/4JWVnUvRACy+bzTixUKR41XdPpqKWVeuIUumRBNxyfuBwcf6ojOfTBh7nTvbI6FqqKXW71uL/gW24QrBujBqsTFKDXZ6XQWSd2/UOJW2q8FdRQzifxtB8dAhLjQQ6PfT47nJgnbxp6sSq38i7GfOMncM57byTEuoQdbo4K+D7S3+cNpC6HWA/N8OXelYdh67rL7Tan+Wv8J3O+tUdQn3qP6Q2B2tvpW9dD7z8vRzmr44r1jgh/yzSMDvK+yQqq X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2017 21:22:56.9612 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v4 2/8] OvmfPkg/VirtioNetDxe: map VRINGs using VirtioRingMap() 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 , Brijesh Singh , 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" When device is behind the IOMMU then driver need to pass the device address when programing the bus master. The patch uses VirtioRingMap() to map the VRING system physical address[es] to device address[es]. 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 Tested-by: Laszlo Ersek --- OvmfPkg/VirtioNetDxe/VirtioNet.h | 7 ++- OvmfPkg/VirtioNetDxe/SnpInitialize.c | 50 +++++++++++++++----- OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c | 10 ++-- OvmfPkg/VirtioNetDxe/SnpShutdown.c | 4 +- OvmfPkg/VirtioNetDxe/TechNotes.txt | 5 +- 5 files changed, 57 insertions(+), 19 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/VirtioNet.h b/OvmfPkg/VirtioNetDxe/Virtio= Net.h index 87a0f06e01a4..6762fc9d1d6e 100644 --- a/OvmfPkg/VirtioNetDxe/VirtioNet.h +++ b/OvmfPkg/VirtioNetDxe/VirtioNet.h @@ -82,10 +82,14 @@ typedef struct { EFI_HANDLE MacHandle; // VirtioNetDriverBinding= Start =20 VRING RxRing; // VirtioNetInitRing + VOID *RxRingMap; // VirtioRingMap and + // VirtioNetInitRing UINT8 *RxBuf; // VirtioNetInitRx UINT16 RxLastUsed; // VirtioNetInitRx =20 VRING TxRing; // VirtioNetInitRing + VOID *TxRingMap; // VirtioRingMap and + // VirtioNetInitRing UINT16 TxMaxPending; // VirtioNetInitTx UINT16 TxCurPending; // VirtioNetInitTx UINT16 *TxFreeStack; // VirtioNetInitTx @@ -267,7 +271,8 @@ VOID EFIAPI VirtioNetUninitRing ( IN OUT VNET_DEV *Dev, - IN OUT VRING *Ring + IN OUT VRING *Ring, + IN VOID *RingMap ); =20 // diff --git a/OvmfPkg/VirtioNetDxe/SnpInitialize.c b/OvmfPkg/VirtioNetDxe/Sn= pInitialize.c index 637c978709fd..8eabdbff6f5e 100644 --- a/OvmfPkg/VirtioNetDxe/SnpInitialize.c +++ b/OvmfPkg/VirtioNetDxe/SnpInitialize.c @@ -35,11 +35,13 @@ the network device. @param[out] Ring The virtio-ring inside the VNET_DEV structure, corresponding to Selector. + @param[out] Mapping A resulting token to pass to VirtioNetUninitRin= g() =20 @retval EFI_UNSUPPORTED The queue size reported by the virtio-net devic= e is too small. @return Status codes from VIRTIO_CFG_WRITE(), - VIRTIO_CFG_READ() and VirtioRingInit(). + VIRTIO_CFG_READ(), VirtioRingInit() and + VirtioRingMap(). @retval EFI_SUCCESS Ring initialized. */ =20 @@ -49,11 +51,14 @@ EFIAPI VirtioNetInitRing ( IN OUT VNET_DEV *Dev, IN UINT16 Selector, - OUT VRING *Ring + OUT VRING *Ring, + OUT VOID **Mapping ) { EFI_STATUS Status; UINT16 QueueSize; + UINT64 RingBaseShift; + VOID *MapInfo; =20 // // step 4b -- allocate selected queue @@ -80,29 +85,42 @@ VirtioNetInitRing ( } =20 // + // If anything fails from here on, we must release the ring resources. + // + Status =3D VirtioRingMap (Dev->VirtIo, Ring, &RingBaseShift, &MapInfo); + if (EFI_ERROR (Status)) { + goto ReleaseQueue; + } + + // // Additional steps for MMIO: align the queue appropriately, and set the - // size. If anything fails from here on, we must release the ring resour= ces. + // size. If anything fails from here on, we must unmap the ring resource= s. // Status =3D Dev->VirtIo->SetQueueNum (Dev->VirtIo, QueueSize); if (EFI_ERROR (Status)) { - goto ReleaseQueue; + goto UnmapQueue; } =20 Status =3D Dev->VirtIo->SetQueueAlign (Dev->VirtIo, EFI_PAGE_SIZE); if (EFI_ERROR (Status)) { - goto ReleaseQueue; + goto UnmapQueue; } =20 // // step 4c -- report GPFN (guest-physical frame number) of queue // - Status =3D Dev->VirtIo->SetQueueAddress (Dev->VirtIo, Ring, 0); + Status =3D Dev->VirtIo->SetQueueAddress (Dev->VirtIo, Ring, RingBaseShif= t); if (EFI_ERROR (Status)) { - goto ReleaseQueue; + goto UnmapQueue; } =20 + *Mapping =3D MapInfo; + return EFI_SUCCESS; =20 +UnmapQueue: + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, MapInfo); + ReleaseQueue: VirtioRingUninit (Dev->VirtIo, Ring); =20 @@ -456,12 +474,22 @@ VirtioNetInitialize ( // // step 4b, 4c -- allocate and report virtqueues // - Status =3D VirtioNetInitRing (Dev, VIRTIO_NET_Q_RX, &Dev->RxRing); + Status =3D VirtioNetInitRing ( + Dev, + VIRTIO_NET_Q_RX, + &Dev->RxRing, + &Dev->RxRingMap + ); if (EFI_ERROR (Status)) { goto DeviceFailed; } =20 - Status =3D VirtioNetInitRing (Dev, VIRTIO_NET_Q_TX, &Dev->TxRing); + Status =3D VirtioNetInitRing ( + Dev, + VIRTIO_NET_Q_TX, + &Dev->TxRing, + &Dev->TxRingMap + ); if (EFI_ERROR (Status)) { goto ReleaseRxRing; } @@ -510,10 +538,10 @@ AbortDevice: Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, 0); =20 ReleaseTxRing: - VirtioNetUninitRing (Dev, &Dev->TxRing); + VirtioNetUninitRing (Dev, &Dev->TxRing, Dev->TxRingMap); =20 ReleaseRxRing: - VirtioNetUninitRing (Dev, &Dev->RxRing); + VirtioNetUninitRing (Dev, &Dev->RxRing, Dev->RxRingMap); =20 DeviceFailed: // diff --git a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c b/OvmfPkg/VirtioNetDxe= /SnpSharedHelpers.c index 5b75eabc7a6b..57c7395848bd 100644 --- a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c +++ b/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c @@ -55,15 +55,19 @@ VirtioNetShutdownTx ( /** Release TX and RX VRING resources. =20 - @param[in,out] Dev The VNET_DEV driver instance which was using the ri= ng. - @param[in,out] Ring The virtio ring to clean up. + @param[in,out] Dev The VNET_DEV driver instance which was using + the ring. + @param[in,out] Ring The virtio ring to clean up. + @param[in] RingMap A token return from the VirtioRingMap() */ VOID EFIAPI VirtioNetUninitRing ( IN OUT VNET_DEV *Dev, - IN OUT VRING *Ring + IN OUT VRING *Ring, + IN VOID *RingMap ) { + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, RingMap); VirtioRingUninit (Dev->VirtIo, Ring); } diff --git a/OvmfPkg/VirtioNetDxe/SnpShutdown.c b/OvmfPkg/VirtioNetDxe/SnpS= hutdown.c index 432e0691d457..d8c11f20de61 100644 --- a/OvmfPkg/VirtioNetDxe/SnpShutdown.c +++ b/OvmfPkg/VirtioNetDxe/SnpShutdown.c @@ -67,8 +67,8 @@ VirtioNetShutdown ( Dev->VirtIo->SetDeviceStatus (Dev->VirtIo, 0); VirtioNetShutdownRx (Dev); VirtioNetShutdownTx (Dev); - VirtioNetUninitRing (Dev, &Dev->TxRing); - VirtioNetUninitRing (Dev, &Dev->RxRing); + VirtioNetUninitRing (Dev, &Dev->TxRing, Dev->TxRingMap); + VirtioNetUninitRing (Dev, &Dev->RxRing, Dev->RxRingMap); =20 Dev->Snm.State =3D EfiSimpleNetworkStarted; Status =3D EFI_SUCCESS; diff --git a/OvmfPkg/VirtioNetDxe/TechNotes.txt b/OvmfPkg/VirtioNetDxe/Tech= Notes.txt index 86b91f561495..37250b14a98c 100644 --- a/OvmfPkg/VirtioNetDxe/TechNotes.txt +++ b/OvmfPkg/VirtioNetDxe/TechNotes.txt @@ -70,8 +70,9 @@ faithfully indented) that implement the transition. VirtioNetInitialize | | VirtioNetShutdown VirtioNetInitRing {Rx, Tx} | | VirtioNetShutdownRx [SnpSharedHelper= s.c] VirtioRingInit | | VirtioNetShutdownTx [SnpSharedHelper= s.c] - VirtioNetInitTx | | VirtioNetUninitRing [SnpSharedHelper= s.c] - VirtioNetInitRx | | {Tx, Rx} + VirtioRingMap | | VirtioNetUninitRing [SnpSharedHelper= s.c] + VirtioNetInitTx | | {Tx, Rx} + VirtioNetInitRx | | VirtIo->UnmapSharedBuffer | | VirtioRingUninit v | +-----------------------------+ --=20 2.9.5 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Apr 29 10:26:42 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 1505424190581537.6127001779164; Thu, 14 Sep 2017 14:23:10 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id AC22221E977FF; Thu, 14 Sep 2017 14:20:04 -0700 (PDT) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0054.outbound.protection.outlook.com [104.47.38.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id CB74D21E3EA81 for ; Thu, 14 Sep 2017 14:20:00 -0700 (PDT) Received: from ubuntu-010236106000.amd.com (165.204.78.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.20.35.12; Thu, 14 Sep 2017 21:22:57 +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=lhb8u4CKWsv1Sv0UutfwsAwROsLCFYd5/jN/iwyUghs=; b=b/Izd81Y9GIDjfYToSwZY6B1vWaiv/RIL/yzD+1m8Yw9MTF0p+7P+szFBkIeZB7WOzM9YBlOdkv3T76g2mDnaBRxLEyKi2mVfFzJpPN0PFG4E2aY14YZyerpNjkHfXB3oOUBoe6JCywzHsVsANC44ay6Z+902jgixXtUVej+4HU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Thu, 14 Sep 2017 16:22:42 -0500 Message-Id: <20170914212247.124937-4-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170914212247.124937-1-brijesh.singh@amd.com> References: <20170914212247.124937-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0014.namprd20.prod.outlook.com (2603:10b6:3:93::24) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4c20aeaf-308f-4ef5-7cc7-08d4fbb6c51a 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)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:DVDbqIsgBOS1jVAXRj3rJHIfY6yoHttio96FvH7InY679LuzP2iHRFJ8pU/owtROGSlFq6zCpS/LGlOJwksMIrJqCJQ4OnbDa+H0CNA7X0CYLleazdCpAS/VBBNJH8njzMmIM+bvoBhPO6PqpqmfU7gpi9PxNg+VNb/XlBgHHvT/bRZyUs5jx1MUvhbyYNr7jEVDYOQJ+y87pPOiny9i3ueE9ecg6gTMF0I1i19VMqrEN6cz91WAKtvpb1WRS9Tv; 25:bRtGhcitjjmQyczsjciAj/6IeKMsnRvPg24B5b709wveygwvdU5ypFY3AIP3g1gKdU18FUpAKe8XZiQ8WBsKnjMn0pdBNC1IHeMqSx1btb0Co70azSjyv3b8C/fb0k5e50yJdu875lgiCw1+AIFhOiQBNgSgd0fmck4yVt9x/umWdNKeMT7hkCBCVLBOS1gZFqSos8IwcgR7uVHEVRrMtF49uNDFhZ8jOwBr31QOxzr4vCqPR6zfNyARwRWi8CNho4UGQNuF73aOXhWKB5sntgZmqHJO+lGjQkrs+gdeF5NFeFMg523h0Y97zG8LqXEjKJsWNeW7EkfuQch1iAHhuQ==; 31:R9IWPifv3FN6CTgh0Dk2HDClod24I84pZQXryX7mKnl09NIxGa7Z4FJ1f4YGLU2I+2HgmQyJaeh8JADFRVZLqt27NZUAwSXm/sdwJ7qNhvB/dZyRZmJyeXoj/71ZROutiiGi7IByCLaeNCchE3+2mVc6FSYyeyqPhdp+OFsjFvKb8X+X1t00ycBrQMHqGLlr9oUE9tbUlxbOnXUh9ZouoTkgeWI7B1eMoVvH49frXXY= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:WYDBRW8WWPkvEU/uOABnlRDTtRua02hhZ/c2QzLDtSn1PYQkHSW+iSyk+XBmXgsdZyvs4b2/yjN9AYeIzKLxwjLJYc6Sx2NugC0KgJMnAYWyOZDbpTvPr9vRaXHlr9h86LNirb7zeCRuxl89nrmvKXu+oWkPMjtPTxiLm+pUXeC5LiFDV21LEWkKYvveSr3GMMwpHwlbiDpdxA9nS3s/g/2I8r6zYpu5rcivi8vr2KXKkUQNHRkCMspAFdKRXhWtu/gjPK5F9AmXTHVi345O8KuUS5A7sPTjEtbBjCoNBKq3i/WqnsFYaQE7xpzSPeWtPXKgJIYfWcmE84U9oaRomZtPIh5TnPpO7P34VWUdrhlBakQEylvRCFLx2fYaronT6BNo4dyucrlk+L2mk51Boc0TSQnV96bjmj+1swxbLjzC53OWhI1XbH26LfH0pJyW6TUFsq7s1pcYGUZqVHbsLPfaOGe32QGmqfsmCC30fNiGGD12Af9A2iwpT4WAjeMP; 4:PG/WHWO3H7gYu5cXuC4bBLp9k/qawWxTM8iE90254myA+J4MO5szJbt3XyEFBT8cITAoAYR+D0mLr9BeqXXzvMyd4c4m8BISB/lm4OPI2IjSPv8HjM3bCmXcYFPQddWOejEnu9y682xD4R4Of7XxMX0BjVCfA13CHLvslLwixgRzbPumOMdu7a1kCBj1RY1JNcvQkxwsFjj/GHhR81c+kyaTAJdkJbGpnqf20aMfDdmraYfJs3lqzngiDHB+MDxYLipg1It37ZEPhT4dBWjtTsew6ZjAyyRHhSFa4WAjJVH8p8Zqf61xbGptfRofbD9JH5lHD0abnYDgbGCV4h7Z0g== 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)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(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: 0430FA5CB7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6029001)(6009001)(39860400002)(346002)(376002)(199003)(189002)(53936002)(4326008)(110136004)(50466002)(47776003)(50226002)(81156014)(81166006)(68736007)(54906002)(8676002)(2361001)(66066001)(2950100002)(6916009)(33646002)(2351001)(36756003)(106356001)(105586002)(53416004)(101416001)(48376002)(8936002)(25786009)(6486002)(97736004)(305945005)(7736002)(5660300001)(16526017)(16586007)(2906002)(5003940100001)(1076002)(6116002)(3846002)(316002)(50986999)(6666003)(76176999)(86362001)(478600001)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:ubuntu-010236106000.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; DM2PR12MB0155; 23:Ox3jJlHI/5Qr47NpQ+Dr1y5tazfUTFz/TShD+8uUv?= =?us-ascii?Q?g5nfUx+7Bx9mkpJnlzK75Gu65fpY94WEWSeqeZcHKHftX2cfEFNtdx4ya7xB?= =?us-ascii?Q?a1B/+iSl6rzXTm1pe98v0/VztXWsyHBLEwyPexazjyEQPeMAYBm24ALE1Bh6?= =?us-ascii?Q?dCH4Tws3gk/1YC15RRErUkt8ql+lCKdM4IaolZGaGekMYDInzeQCacP9XYJ0?= =?us-ascii?Q?fDzro1FF1MstmQyjWWrntk4ai/jJP4XLzHe0JAEWge5qTRzTID50gWur9ox+?= =?us-ascii?Q?DjzCIorHr8iAwNviyVOagNJXgf29kyb85RkmK2155VCi8gxxxorefcEtPACu?= =?us-ascii?Q?o+RuTAYYImGRxSigmjPwPE3l9KRem228Rim/qVmWYC0zl8A7+xzHRIIt22kN?= =?us-ascii?Q?E+nh2BF43p07cvLG1Rd/SDA87asbyQWpN3EZZ86+tpKYvk55mMoyHDHFIGE7?= =?us-ascii?Q?T0/qGFn/5SFo5r2EaKUIhyUBwRTCIiqTmE91BR259xL8W2TM/mOwPVnu8ebN?= =?us-ascii?Q?/1hPis0PgLRxYtVtvf8kPNOUyfYz9UiT9Ew5T9eYnCC+3+ZB0zeflpFPGahH?= =?us-ascii?Q?pAhNNruaQQHoz5JqQM6CdHFnZzsWHqwcscICiz2eWWx3UO9/DtSXxDrlT++G?= =?us-ascii?Q?UrsOXXhmJPoESbZBWCKKYZbA26od1C/2exwudobIm+4h4mOuahRwTVY/1kur?= =?us-ascii?Q?jNvPUZtXQ/+LepvfVxnOJTwGblKSmX3ZaFBPevZ5tNQrRYQEMk/oWF483GyD?= =?us-ascii?Q?ZGeVJh39PpZar3fwiDn65HqoJDZCcHHlqnzCiV1YzXF+ey0m8uUD1PvD7fFG?= =?us-ascii?Q?IFd1tvVP8NJML2g8w+jV1WL3cBQP62BnPvJECYPtDzNQWVmVNtWfYljL13Xt?= =?us-ascii?Q?B7md939bIj2Z9UvXRGD0NVY6rtb0kh0ECaQNWIeVq93AtSOAFmmq6c8wZRyP?= =?us-ascii?Q?t/XWbvgUuTQxeeGG0NYBtChL5P6s+/At30/OgXEkq1qc/Y4oI8gt/+4HHSjH?= =?us-ascii?Q?VOUUdJ2DY40NjpGFv0Wenv4064XkrcvdE2EgYelcwJ4J2lYbVXh85BjwgGiZ?= =?us-ascii?Q?y459jRyRLL27tMgQNfXF3FIKeXU2Muxnw7wlzxpUQ7hHC2o5NsH++ayhCOVi?= =?us-ascii?Q?eZ+crmq+Jy20tDyOeP1jxDatGW+rgLrq+gIzr7VoJ8k1t5ftXxOfhJvsE+B+?= =?us-ascii?Q?iW2Sq5ir/5WPCA=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:RQ4Phmz8pAkOmCBptB2vQ3FIA0gRRFOs+AEK1+bX44SRVvzxQ7+TieA41GP/PTU34Vz3DjESHlkPH7ZeQdbdRzlOTL1pXZ1X/KFxOlzGiOE4YO6So39AKjGWIAiOWx247F5X8cnXli717bMFpaG9W5n0ZP8nWOMjh06qTDBaTIi8tljFY/bEjuefi+B+UrUGPm781YQINhQS1nxdUoJpsN7RzLHAwkbUzpgEJUU0/r6dx/4jOv5i5pd2896jn1A8tX0yd5+2RGJNT69VRVtMpnsZYhVlYuNPBw8hkoRxDTiJ3e0F4OCjnsEoPXMLcZhqs3DtpqPlF4gPSIjHAc82JA==; 5:ekCqb8/EloAfNTFg2TblJcl/ZuXHwJ4sZiGbjtHSN9F9bN8/h62C7huU+6/8GQtQiU3oPLaIu7sX3A5pTe9NZ3g6ES0aBzIcth/Yki2IOR2B1gShvj+98O9HsaSD26KObWvuppcZ52RB+qxmuuWzHVixzwV2hbzme6PSXOAz7fo=; 24:K3OOPJz3CMfSszv7Es74iirkiQJg3+V2gMhlx2U7ZlT/84yFFY+hwFajbCRgwBvMPkg1O1o9XHpwvsVOMVBrxtd+58pIgQuwQsw+JivCMvw=; 7:PKP9J7I37ksI80I4gKVIlXUEFuESWeTy4xRATfewEWb8ZdTgvaBY2HPhF45znEsW6qsNNdmzSY++9+qqfSacIKJm71sTw6yma97v3lEG0wydgsfPIV08n8s0wsILpkJERsMRc3DsU9NO8r8UYmA0EdR9aAkDD9pMKlL7r6q25JPPcvAABvaNFSeTUQM+wljbyT0eRi1B/j82Avc2+NFQ4/j0SHOLb1gH5ztdjsGqiFw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:vutrkO/hB9doXCNVFHENOGOsnGVWUFTQogsTNNqyKci+steXwe6rlcvtf6O2Ch1rqujkm3ZYdOIRGNLo/KSBTXPtgRUcB5itqVjFo1rJTLgJAbOOpA6BAsjGzqbKg1bCXOeQbcJnoi7nWawvy0i9STg5unp6bd2pcmjcMPKn2AHA6Fi9otXE1RW4kBr8/akQosbsEG+4W7ZBnfT7fg71sopGTXoapd7b5DK6gVoX3TRsw4zzzGZ4BMSmtLNMqEZc X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2017 21:22:57.3674 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v4 3/8] 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 , Brijesh Singh , 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" When device is behind the IOMMU, VirtioNetDxe is required to use the device address in bus master operations. RxBuf is allocated using AllocatePool() which returns the system physical address. The patch uses VIRTIO_DEVICE_PROTOCOL.AllocateSharedPages() to allocate the RxBuf and map with VirtioMapAllBytesInSharedBuffer() so that we can obtain the device address for RxBuf. 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 Tested-by: Laszlo Ersek --- OvmfPkg/VirtioNetDxe/VirtioNet.h | 4 + OvmfPkg/VirtioNetDxe/SnpInitialize.c | 78 +++++++++++++++----- OvmfPkg/VirtioNetDxe/SnpReceive.c | 5 +- OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c | 7 +- OvmfPkg/VirtioNetDxe/TechNotes.txt | 2 +- 5 files changed, 75 insertions(+), 21 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/VirtioNet.h b/OvmfPkg/VirtioNetDxe/Virtio= Net.h index 6762fc9d1d6e..995593f4b236 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 @@ -86,6 +87,9 @@ typedef struct { // VirtioNetInitRing UINT8 *RxBuf; // VirtioNetInitRx UINT16 RxLastUsed; // VirtioNetInitRx + UINTN RxBufNrPages; // VirtioNetInitRx + EFI_PHYSICAL_ADDRESS RxBufDeviceBase; // VirtioNetInitRx + VOID *RxBufMap; // VirtioNetInitRx =20 VRING TxRing; // VirtioNetInitRing VOID *TxRingMap; // VirtioRingMap and diff --git a/OvmfPkg/VirtioNetDxe/SnpInitialize.c b/OvmfPkg/VirtioNetDxe/Sn= pInitialize.c index 8eabdbff6f5e..b739875d4c01 100644 --- a/OvmfPkg/VirtioNetDxe/SnpInitialize.c +++ b/OvmfPkg/VirtioNetDxe/SnpInitialize.c @@ -242,8 +242,9 @@ VirtioNetInitTx ( @param[in,out] Dev The VNET_DEV driver instance about to enter the EfiSimpleNetworkInitialized state. =20 - @retval EFI_OUT_OF_RESOURCES Failed to allocate RX destination area. - @return Status codes from VIRTIO_CFG_WRITE(). + @return Status codes from VIRTIO_CFG_WRITE() or + VIRTIO_DEVICE_PROTOCOL.AllocateSharedPages= or + VirtioMapAllBytesInSharedBuffer(). @retval EFI_SUCCESS RX setup successful. The device is live an= d may already be writing to the receive area. */ @@ -255,13 +256,15 @@ 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; + UINTN NumBytes; + EFI_PHYSICAL_ADDRESS RxBufDeviceAddress; + VOID *RxBuffer; =20 // // In VirtIo 1.0, the NumBuffers field is mandatory. In 0.9.5, it depend= s on @@ -286,11 +289,39 @@ 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 + // AllocateSharedPages() to allocate this memory region and map it with + // BusMasterCommonBuffer so that it can be accessed by both guest and + // hypervisor. + // + NumBytes =3D RxAlwaysPending * RxBufSize; + Dev->RxBufNrPages =3D EFI_SIZE_TO_PAGES (NumBytes); + Status =3D Dev->VirtIo->AllocateSharedPages ( + Dev->VirtIo, + Dev->RxBufNrPages, + &RxBuffer + ); + if (EFI_ERROR (Status)) { + return Status; } =20 + ZeroMem (RxBuffer, NumBytes); + + Status =3D VirtioMapAllBytesInSharedBuffer ( + Dev->VirtIo, + VirtioOperationBusMasterCommonBuffer, + RxBuffer, + NumBytes, + &Dev->RxBufDeviceBase, + &Dev->RxBufMap + ); + if (EFI_ERROR (Status)) { + goto FreeSharedBuffer; + } + + Dev->RxBuf =3D RxBuffer; + // // virtio-0.9.5, 2.4.2 Receiving Used Buffers From the Device // @@ -310,7 +341,7 @@ VirtioNetInitRx ( // link each chain into (from) the available ring as well // DescIdx =3D 0; - RxPtr =3D Dev->RxBuf; + RxBufDeviceAddress =3D Dev->RxBufDeviceBase; for (PktIdx =3D 0; PktIdx < RxAlwaysPending; ++PktIdx) { // // virtio-0.9.5, 2.4.1.2 Updating the Available Ring @@ -321,16 +352,16 @@ 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 RxBufDeviceAddress; 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; + RxBufDeviceAddress +=3D Dev->RxRing.Desc[DescIdx++].Len; =20 - Dev->RxRing.Desc[DescIdx].Addr =3D (UINTN) RxPtr; + Dev->RxRing.Desc[DescIdx].Addr =3D RxBufDeviceAddress; 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; + RxBufDeviceAddress +=3D Dev->RxRing.Desc[DescIdx++].Len; } =20 // @@ -351,10 +382,21 @@ 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->RxBufNrPages, + RxBuffer + ); + return Status; } =20 =20 diff --git a/OvmfPkg/VirtioNetDxe/SnpReceive.c b/OvmfPkg/VirtioNetDxe/SnpRe= ceive.c index 99abd7ebe454..c42489636ea0 100644 --- a/OvmfPkg/VirtioNetDxe/SnpReceive.c +++ b/OvmfPkg/VirtioNetDxe/SnpReceive.c @@ -82,6 +82,7 @@ VirtioNetReceive ( UINT8 *RxPtr; UINT16 AvailIdx; EFI_STATUS NotifyStatus; + UINTN RxBufOffset; =20 if (This =3D=3D NULL || BufferSize =3D=3D NULL || Buffer =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -143,7 +144,9 @@ VirtioNetReceive ( *HeaderSize =3D Dev->Snm.MediaHeaderSize; } =20 - RxPtr =3D (UINT8 *)(UINTN) Dev->RxRing.Desc[DescIdx + 1].Addr; + RxBufOffset =3D (UINTN)(Dev->RxRing.Desc[DescIdx + 1].Addr - + Dev->RxBufDeviceBase); + RxPtr =3D Dev->RxBuf + RxBufOffset; CopyMem (Buffer, RxPtr, RxLen); =20 if (DestAddr !=3D NULL) { diff --git a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c b/OvmfPkg/VirtioNetDxe= /SnpSharedHelpers.c index 57c7395848bd..ee4f9ed36ecd 100644 --- a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c +++ b/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c @@ -39,7 +39,12 @@ VirtioNetShutdownRx ( IN OUT VNET_DEV *Dev ) { - FreePool (Dev->RxBuf); + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Dev->RxBufMap); + Dev->VirtIo->FreeSharedPages ( + Dev->VirtIo, + Dev->RxBufNrPages, + Dev->RxBuf + ); } =20 =20 diff --git a/OvmfPkg/VirtioNetDxe/TechNotes.txt b/OvmfPkg/VirtioNetDxe/Tech= Notes.txt index 37250b14a98c..fedbaee07ec7 100644 --- a/OvmfPkg/VirtioNetDxe/TechNotes.txt +++ b/OvmfPkg/VirtioNetDxe/TechNotes.txt @@ -247,7 +247,7 @@ In VirtioNetInitRx, the guest allocates the fixed size = Receive Destination Area, which accommodates all packets delivered asynchronously by the host.= To each packet, a slice of this area is dedicated; each slice is further subdivided into virtio-net request header and network packet data. The -(guest-physical) addresses of these sub-slices are denoted with A2, A3, A4= and +(device-physical) addresses of these sub-slices are denoted with A2, A3, A= 4 and so on. Importantly, an even-subscript "A" always belongs to a virtio-net request header, while an odd-subscript "A" always belongs to a packet sub-slice. --=20 2.9.5 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Apr 29 10:26:42 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 150542418807195.14698743106828; Thu, 14 Sep 2017 14:23:08 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 6C48421E7493C; Thu, 14 Sep 2017 14:20:04 -0700 (PDT) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0054.outbound.protection.outlook.com [104.47.38.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6B6F521DFC89E for ; Thu, 14 Sep 2017 14:20:00 -0700 (PDT) Received: from ubuntu-010236106000.amd.com (165.204.78.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.20.35.12; Thu, 14 Sep 2017 21:22:58 +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=YdO4qOI85txjxBPgLKIsvMOVkR/pLg52TlLUFGIHTTA=; b=aUGW5NK4r635D7ZOCsaZ3ZhOx2wTgADZuQMS2JlrfG/JjnJoxt1AMRghymSe4l8Z5MVxYK/8e0G63NKJBQJkFUQ4zkuO9xX9Og0vXUSXPfm2YMyE5jtuS2olJsfpxM3IeltE9SgYdzZGt2/R92xgM8PWI9ChDogQWMhBjhj/o+U= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Thu, 14 Sep 2017 16:22:43 -0500 Message-Id: <20170914212247.124937-5-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170914212247.124937-1-brijesh.singh@amd.com> References: <20170914212247.124937-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0014.namprd20.prod.outlook.com (2603:10b6:3:93::24) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 34540af0-90c7-4790-74d9-08d4fbb6c5b5 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)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:nlUbzEpI/pUlfFMB+1J3QpM8Whmf6a8QISEjNFu/Ohnhjemt5U0C7lNxTFkWajbnVwT5+FYBAiQQXEabZR2sYfnht7U/qJ0U3ga4Pl/N2NgkxjmVnYLY36Wlz+RYKftBgzHMufCmN3eEsDNHr94aRYbFLbgzqNYz4jKmQqxnmv3gyyAr0grhmRJ5Y3jsOBs5PuBT6LcNK5ywB/2xueAKMM0a6/iX42kjlgm37/vhS0Uq5lt9sSpRkQfOlQ5Vg7iM; 25:u/Rs+ou8EfmNH1mrIc6tiGgDoqThfaBNDr82wwRM5pa7mkg4mK00lD60+cNe0GJV7v+hH6YBps27Epy0qORPT9hQqHDTkPEJiUDPQwdfDBQssvbwRdX6uEhxulLjywedUCuLtLEDHSCW3JKu7KOxVNU8HkzJyhvk9di5roQAZ22K+91/oFq3yP/tmIe8KvBcM81XieX36y76zzyf0V7HHTp00vJpqnMf/t9RAUSfuUuOUq9cEbSdudrWqSGhT8nltyfC6pDkQBaiUhedCqc7SyrN8i1wEJuZXwoUidF3nxA06fzqukKM8D9PhVrYMi+RyDeV9Ijmo6Du+e9TZB47aA==; 31:NdYE5MnEH/eCf9Ik4TsF9GlrsLYCOpb96LEmWOHqDbe8yNNYJsLZZtHq5YADbRfXFI7cwnLgBj7NAlhuZsA2m6Brt6OUpHUGS/KrjWkUEULXRXRnCC+Jdz0fnKW1lzwYkxqcU9Dj3Ll7dkAFCIJSJTctfP0Fn9tdBCUOCBrbuXs+I7SMmK/LJMC7ViGqg+nWzK1vG4f3kg8XCWcUY8rPRksKRVd7/GYY+gB+6tmD50Q= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:trE9YDM//5mFgzsGuieLiGA8wbY6iGUPmupn5LUXkZE0Bv6RkS460HoIoigoih1DEEAyTMTmjnNoo/7YezGnsxSGuBFaqBNbjFA0I1WFVwO1sN0OZw9k3adWyhors5D21pumAkPBUaHqMVUCsygOLmgpO3AHcgtFWzL9vm/fgVTyPtQBW5p3GFZSTi955tUfdr/vrUXLDI6Plic1AB+/lth2EmuioXMYKENJOH+z/gf58I1jSSDEi0EqJda0wb2xRz9la84idXc7I7jLn4+wtSjZbHkEQ+wm+6L8mEnDlQfNDE5Weyr3wmH3hu29DXPSHpU7XlXRB4lL8rufy2h+D6vYna/C3PyH/VXabwPp6qdux5eMQLWBrP7eCOkHDNpQzgeVyeFgq/AS6QwSJ1ULlz6TnkfzFTb9gSKhKVMpcj9jtPt8Pllb1zexMm2ONsiteIzwU3R44x41MlYt6I9vSfSH/QrLC5BaICEBr4+JHafNyeHwEvpIkWrBihWClJjA; 4:sA0T46/lFuAOT6Ty7JNZ/dA2NWhzhn2Ef8ZFzzFi4Ti1nXZ9bQsMd7m/l8OZG18lhaKtYCbm1RdGb14r5d06jSxf+P5KdZpWRDaz9gtdbQAD0QCiOaVC+NX8fBPFdi+TxrcI18J1RKn5D6zwZ85vA22IdZnYuzOlk70WbjIIwjY6yU28DaOGGfZXwpTIUBD6nkPYj60EIgjcGQ47IVGqtg5dZ3CoXW1mTcB8+KJmCpe/9vi/rfKEdnNMh4GBHaZ6U39X7uFi4OC+7UaJJ9r/QP0UwOUcliByaV+77FP4XUCY8XCEmsCnGj3D6ZG4GYhkH4eMxGqUe+qaNamcxhv44g== 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)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(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: 0430FA5CB7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(51234002)(199003)(189002)(53936002)(4326008)(110136004)(50466002)(47776003)(50226002)(81156014)(81166006)(68736007)(54906002)(8676002)(2361001)(66066001)(2950100002)(6916009)(33646002)(2351001)(36756003)(106356001)(105586002)(53416004)(101416001)(48376002)(8936002)(25786009)(6486002)(97736004)(305945005)(7736002)(5660300001)(16526017)(16586007)(2906002)(5003940100001)(1076002)(6116002)(3846002)(316002)(50986999)(6666003)(76176999)(86362001)(478600001)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:ubuntu-010236106000.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; DM2PR12MB0155; 23:RzTg1rR5lyp2kDdDF5zTbJ6+FDldwnmenM9ZTpyzO?= =?us-ascii?Q?jmlZJN+c/mST91lxOSKc+see67Q3CDCnhqI42tvGdd17gOsgPBTZHh3X7zwA?= =?us-ascii?Q?AqXSweWlLXeHZ6d26uVRXi2VCZUXtHXV6aZtzYQdMwEw0x9gep6XTusNRsom?= =?us-ascii?Q?SRK61obtjoQMbmiun0DiGoVw5v2763PZ6W5CZ4eQgK9ysEMcseDafyjXz3vL?= =?us-ascii?Q?/uOAmrR8X0WLWmu9WedMyT9xw6OdaxqkRCz/YoGlaC/a9evDySolPiWEMmsn?= =?us-ascii?Q?ic78MM6BUiZuoVjLv2gnHve0U40J+0XzABILYKg6TCj7vvR5+SFKid48FmjC?= =?us-ascii?Q?Hg96zbwmRju0+R+XLLNLIa/pkUytLTNkxJh0bbfMdRF422gBY9VBiYbvpwg/?= =?us-ascii?Q?UUSfqzcNsQu4LwZHYrLICMyQZ6bWGDsbs7bnaU6pg94cnHUHpVKunaI8cY+q?= =?us-ascii?Q?Vk/XKRIECszRqudXogAIx26Fk5XODGbYTWAKHJmnJQ4UhnK83NSsNdYRJ6/c?= =?us-ascii?Q?48yAxOeDUO4PGw48r8WWKiBGLdoutzGn6m7yQYFpLeMG7GHOdYumOv5/S926?= =?us-ascii?Q?RsnzvT0Lq4w14qDwcTiwe9X8ZenERmVvJf2wowUIKyXOywyc6jsGgAyoKMnZ?= =?us-ascii?Q?ldeLifJRmPksR5lff+hdmw8IIHf5qItxK/QPOr5f7KjPumBDLDpSfuZ3Cr36?= =?us-ascii?Q?GQN/edAtwF8ITSwx8hu+gLgxcUiWFYtQjol2XNQO08ALb+aVTdl/YEUKGe6c?= =?us-ascii?Q?2GlC4B1UFE9dJ8JtOAcnV+5arOjxJf4/3wdaI0G3vTTBjX7rj6RsSKs28kAD?= =?us-ascii?Q?k6RQXe8UiCrRMPakGUVoWY9YjKVo8e7nxgWI3Fdfp4x/maxwYP1GHHmg3zr0?= =?us-ascii?Q?SNyZ1PUVoGGVFuAE2i1RCPh6+F/TA968pXyLdkGJoliYNMQAoW0/ezea66Pu?= =?us-ascii?Q?PFE1bB8zWdALAyTKjjWA3/WTVqDdXCzbIyWvmBzrgn5H7gYUhyNn2463wqPN?= =?us-ascii?Q?ZDQ+NGgT9WcfziQCUcjvkYrG088Rh8ny+FUFLwp956iq0vTSuiZ2JEMQE1tg?= =?us-ascii?Q?Sy/svSh7bIsuTI35gNLAMzFHSthRwkq5pqoANihhM185/Lttyji2CnVG1o5f?= =?us-ascii?Q?2b7DkcosMpxuYIA0Tn2lIgl5daW8ESDtPKzSyliCXgSiv0Ni6lgUjb6fSjLd?= =?us-ascii?Q?dgKg4QMFb0lyNgx1ffONKFc9RshKABnwyJD?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:+mRWaDCeKEmFCYmeXcJYY65y1PX3Fqx/oPp4hzEEqF/CtNOruDevTYMFT3K1wEG9c2wJWSU+B4kfx9WzSpmGv6SbkZW9ATBtsTGt+0KRAwaxphBksigk8p0VhQG6pDgpqVlJzgAmAMRf3cSUtz1BkUiHCKMF83OFLESI7cI3ke2UK+y4HZZj4Up44xcnC9FxQidWp5b6kzTPJuiU7LqFqj/nTmO/rH07duVD/sF6TWd/5tl2r8BHfyhubzOyPbvZaVUwBHVAuA0iyBjEBLQ8wic1TrFP25x2s5GNnR2F4pP8A+VSzQEimoOrBAgOHNc5tXeAy0/HzdLAgBpVRaK6RQ==; 5:J143NI4gNFY2okRCHUY1ZEOlDc9MWLgejlYBFQYkLKQD6R1M36oULgb5ODzhOczJnPa5OYFbarjx9X8vBeFnvUOK4edmwugRVaUZxu56T/3YR2QFCDDuHlgv1qXLJmAKWu0arAn2/UTfLBmz3a+pEjUeAaJa9LO2yukKYsjO+gE=; 24:VZSwW27HTi/nljUPz72dEMG2LdoXIC2xohQ8gZvd34l4HHe3iycuXZ2Iq0VmNldxMskr0HiQN7bKfnXpBBFAMxojOTt/MQp49OM4t/ywkc8=; 7:A6j8bR+TPaJW1gEdh+4HRSHRb3OVIHr5MKoTtAitSXJAjDF+QR7ydlNtFHnMXs2pNgqnc4MgRma6AwyeBKpj0bXuMfJFQCVMfecCBtb9VaNpsRtT4duCMIBpc8gwhztr8hiqhfqVGbfTZuvPFfD7J6wFoz+bbrwisFR9R3pisJrWlEfw0kCAotPMAbA/q8TA+YAsP1u45FjTIkE+pHeRB7QBz8vC7qu8YpAYAGiaNwU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:5uG7Nw9nvGo6eMet0UyzXxh9LcdLLBBy7DEgLehXXjFF9pSCC0cu8cgLbJWE6oGfmOzQlCpNuOXJVKyXHTkidzq3i68WZCaUpSMT0op0ZTDU1mmo1AP2c3/TiGY5dK78zBumNIj7h7CLOqdIB0mc+MWbzrU07Ry3S0ayaYNcZ+hUsOh4+CfDho/v6MZDgieHXatu5fHG+8hYUYMPlC7HjSNybyeYVf0NpqnpDy+mSPzkdhVQM8VdMmVtvR0atb2z X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2017 21:22:58.3518 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v4 4/8] OvmfPkg/VirtioNetDxe: dynamically alloc transmit header 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 , Brijesh Singh , 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" Each network packet is submitted for transmission by pushing the head descriptor of a two-part descriptor chain to the Available Ring of the TX queue. VirtioNetInitTx() sets up the the descriptor chains for all queueable packets in advance, and points all the head descriptors to the same shared, never modified, VIRTIO_1_0_NET_REQ header object (or its initial VIRTIO_NET_REQ sub-object, dependent on virtio version). VirtioNetInitTx() currently uses the header object's system physical address for populating the head descriptors. When device is behind the IOMMU, VirtioNet driver is required to provide the device address of VIRTIO_1_0_NET_REQ header. In this patch we dynamically allocate the header using AllocateSharedPages() and map with BusMasterCommonBuffer so that header can be accessed by both processor and the device. We map the header object for CommonBuffer operation because, in order to stick with the current code order, we populate the head descriptors with the header's device address first, and fill in the header itself second. 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 Tested-by: Laszlo Ersek --- OvmfPkg/VirtioNetDxe/VirtioNet.h | 3 +- OvmfPkg/VirtioNetDxe/SnpInitialize.c | 64 +++++++++++++++++--- OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c | 7 +++ 3 files changed, 65 insertions(+), 9 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/VirtioNet.h b/OvmfPkg/VirtioNetDxe/Virtio= Net.h index 995593f4b236..027f75993e8e 100644 --- a/OvmfPkg/VirtioNetDxe/VirtioNet.h +++ b/OvmfPkg/VirtioNetDxe/VirtioNet.h @@ -97,7 +97,8 @@ typedef struct { UINT16 TxMaxPending; // VirtioNetInitTx UINT16 TxCurPending; // VirtioNetInitTx UINT16 *TxFreeStack; // VirtioNetInitTx - VIRTIO_1_0_NET_REQ TxSharedReq; // VirtioNetInitTx + VIRTIO_1_0_NET_REQ *TxSharedReq; // VirtioNetInitTx + VOID *TxSharedReqMap; // VirtioNetInitTx UINT16 TxLastUsed; // VirtioNetInitTx } VNET_DEV; =20 diff --git a/OvmfPkg/VirtioNetDxe/SnpInitialize.c b/OvmfPkg/VirtioNetDxe/Sn= pInitialize.c index b739875d4c01..9621f936d2cb 100644 --- a/OvmfPkg/VirtioNetDxe/SnpInitialize.c +++ b/OvmfPkg/VirtioNetDxe/SnpInitialize.c @@ -18,6 +18,7 @@ **/ =20 #include +#include #include #include =20 @@ -147,6 +148,9 @@ ReleaseQueue: =20 @retval EFI_OUT_OF_RESOURCES Failed to allocate the stack to track the = heads of free descriptor chains. + @return Status codes from VIRTIO_DEVICE_PROTOCOL. + AllocateSharedPages() or + VirtioMapAllBytesInSharedBuffer() @retval EFI_SUCCESS TX setup successful. */ =20 @@ -157,8 +161,11 @@ VirtioNetInitTx ( IN OUT VNET_DEV *Dev ) { - UINTN TxSharedReqSize; - UINTN PktIdx; + UINTN TxSharedReqSize; + UINTN PktIdx; + EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS DeviceAddress; + VOID *TxSharedReqBuffer; =20 Dev->TxMaxPending =3D (UINT16) MIN (Dev->TxRing.QueueSize / 2, VNET_MAX_PENDING); @@ -170,12 +177,42 @@ VirtioNetInitTx ( } =20 // + // Allocate TxSharedReq header and map with BusMasterCommonBuffer so tha= t it + // can be accessed equally by both processor and device. + // + Status =3D Dev->VirtIo->AllocateSharedPages ( + Dev->VirtIo, + EFI_SIZE_TO_PAGES (sizeof *Dev->TxSharedReq), + &TxSharedReqBuffer + ); + if (EFI_ERROR (Status)) { + goto FreeTxFreeStack; + } + + ZeroMem (TxSharedReqBuffer, sizeof *Dev->TxSharedReq); + + Status =3D VirtioMapAllBytesInSharedBuffer ( + Dev->VirtIo, + VirtioOperationBusMasterCommonBuffer, + TxSharedReqBuffer, + sizeof *(Dev->TxSharedReq), + &DeviceAddress, + &Dev->TxSharedReqMap + ); + if (EFI_ERROR (Status)) { + goto FreeTxSharedReqBuffer; + } + + Dev->TxSharedReq =3D TxSharedReqBuffer; + + + // // In VirtIo 1.0, the NumBuffers field is mandatory. In 0.9.5, it depend= s on // VIRTIO_NET_F_MRG_RXBUF, which we never negotiate. // TxSharedReqSize =3D (Dev->VirtIo->Revision < VIRTIO_SPEC_REVISION (1, 0,= 0)) ? - sizeof Dev->TxSharedReq.V0_9_5 : - sizeof Dev->TxSharedReq; + sizeof (Dev->TxSharedReq->V0_9_5) : + sizeof *Dev->TxSharedReq; =20 for (PktIdx =3D 0; PktIdx < Dev->TxMaxPending; ++PktIdx) { UINT16 DescIdx; @@ -187,7 +224,7 @@ VirtioNetInitTx ( // For each possibly pending packet, lay out the descriptor for the co= mmon // (unmodified by the host) virtio-net request header. // - Dev->TxRing.Desc[DescIdx].Addr =3D (UINTN) &Dev->TxSharedReq; + Dev->TxRing.Desc[DescIdx].Addr =3D DeviceAddress; Dev->TxRing.Desc[DescIdx].Len =3D (UINT32) TxSharedReqSize; Dev->TxRing.Desc[DescIdx].Flags =3D VRING_DESC_F_NEXT; Dev->TxRing.Desc[DescIdx].Next =3D (UINT16) (DescIdx + 1); @@ -202,13 +239,13 @@ VirtioNetInitTx ( // // virtio-0.9.5, Appendix C, Packet Transmission // - Dev->TxSharedReq.V0_9_5.Flags =3D 0; - Dev->TxSharedReq.V0_9_5.GsoType =3D VIRTIO_NET_HDR_GSO_NONE; + Dev->TxSharedReq->V0_9_5.Flags =3D 0; + Dev->TxSharedReq->V0_9_5.GsoType =3D VIRTIO_NET_HDR_GSO_NONE; =20 // // For VirtIo 1.0 only -- the field exists, but it is unused // - Dev->TxSharedReq.NumBuffers =3D 0; + Dev->TxSharedReq->NumBuffers =3D 0; =20 // // virtio-0.9.5, 2.4.2 Receiving Used Buffers From the Device @@ -223,6 +260,17 @@ VirtioNetInitTx ( *Dev->TxRing.Avail.Flags =3D (UINT16) VRING_AVAIL_F_NO_INTERRUPT; =20 return EFI_SUCCESS; + +FreeTxSharedReqBuffer: + Dev->VirtIo->FreeSharedPages ( + Dev->VirtIo, + EFI_SIZE_TO_PAGES (sizeof *(Dev->TxSharedReq)), + TxSharedReqBuffer + ); +FreeTxFreeStack: + FreePool (Dev->TxFreeStack); + + return Status; } =20 =20 diff --git a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c b/OvmfPkg/VirtioNetDxe= /SnpSharedHelpers.c index ee4f9ed36ecd..2fce8142d554 100644 --- a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c +++ b/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c @@ -54,6 +54,13 @@ VirtioNetShutdownTx ( IN OUT VNET_DEV *Dev ) { + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Dev->TxSharedReqMap); + Dev->VirtIo->FreeSharedPages ( + Dev->VirtIo, + EFI_SIZE_TO_PAGES (sizeof *(Dev->TxSharedReq)), + Dev->TxSharedReq + ); + FreePool (Dev->TxFreeStack); } =20 --=20 2.9.5 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Apr 29 10:26:42 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 1505424193788124.63028090345995; Thu, 14 Sep 2017 14:23:13 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E6E8D21E97807; Thu, 14 Sep 2017 14:20:04 -0700 (PDT) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0054.outbound.protection.outlook.com [104.47.38.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 27D4821D492EE for ; Thu, 14 Sep 2017 14:20:01 -0700 (PDT) Received: from ubuntu-010236106000.amd.com (165.204.78.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.20.35.12; Thu, 14 Sep 2017 21:22:58 +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=rZk46ixxaQfI64vJR8UjSrncAeRMpBbS9b5s+2A55Jk=; b=HmyrRUc4S6TYyMZruNazt0rPoE/wMGM4iqEiE2OJU7E1lxAbaevSHnlp1RyQjxcGu6Lb3J9zi9WT9fV6w7Z49RMQl08kPOiODiinazoEBx21PP8iN+6YzsNiSSK4bSD8pu9ePLXA1z69dW27VM2DtpyNeBZz0px/V/OtmPustoA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Thu, 14 Sep 2017 16:22:44 -0500 Message-Id: <20170914212247.124937-6-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170914212247.124937-1-brijesh.singh@amd.com> References: <20170914212247.124937-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0014.namprd20.prod.outlook.com (2603:10b6:3:93::24) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f7cbd0f-d202-40fa-8474-08d4fbb6c606 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)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:yP7QAY80LojXkNLemICdLAUK+epVCTwkpXdXJCuTUK7+MJUPw2Q1ILtir5rvqPL8IOlhRQbcR4Iji613Gi+cnI8Ro5S5CO5qsKvxq90S+MdGzS0QxYlaU7BXjcPLcUxgnt2cOyuhO7lnxlqbNMbUn13w16j0TIVjR8LefyuyPiJ6IN1hEL6CPfDQqprzoU0AXISFDwIqOLjkJ+DX7aC8zV8IEbN+YOtwX19G6D0KtXdqpATaSSFLQaQGpq31hkhq; 25:mdonMyBIve4TGq3ojr2iD9yIAfARukwD5kULnUSVx/SLX/6kgRWNSMPNR5l+LvG8UpSQbqtTgIEYjk0W0SA229NiQX7iCReiEfQTh/3lUF1Wi9CQ2EvQtsidyAu+4rIpzQZY0my7zVEqACN5pSQlpWVXAdvBlo7+Nvms/vhBwDpDqJqpJWcrPEAuOIRUhlqgEOe2KY9yUUM0atUuvSSbeMvd+Xu/2vNnNLPnSmnvP+l5Mm8haIYD8Qo0Z1vPSS/SkJlIDrD+83ROyAvQNywe0I/peicKWa/uzhognnNY/tXkM1hOn3+FLY+MWOMOu5h2bvZP+RpeXyXkCCoXAFbcPw==; 31:BnvoFzmH3NCf3Fii87F0xFZbt6+tnqcDnlkIsqObWtwxP2872QYzZo+HStC6RU4NHfi4Y/MXosF21COH5qteO5IJZuCSfI71dcCMzB1FXOnevr3g28l0gv/WHQuPkFeGVfF20OUWS2YoI58iOJ9R8uYuxQDQFkTM/d58m5BkCPuoBARPWI8y+59hnX/hmLTEkso9hIWK1FRyVhlN/kD6NBrmikLrxaEonZrc1yMyR0U= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:9Tp00j42m9eIu9vthkzz2r7pZGR9di3Q5/4jo8LMwjpUyoPYGbUTUjnVvKETc0IsosyL0bk8EzXSwI1rT2zhrn2wL6CUjhHoz5xeTV8t0bVPBLjZ+cucAD/PPGe0qmOIL1zYOhN9kDdCep0Dxj08mYjVWuULvMSEzhBLE2Nkzopin8UD+Pelza3hbJb1dOR1lawZbM+s6kofNybRYjJnMNSZCoMPlqIB9ruSc8vZjCwWVBIrGkZm2edbzKFbwiET5aTEgMDb1kfO3fQ4vXv5kuDlJm9oOVsfgE+3XrRCKCL3hD61kaE/2y+1ktG/Z/3hwHzFVBh35rfd0sV7v+V/hHlm++Y6j07BGHJVU2gS1YkozJJBKtmBpOhX5URgT1b2+cTddTWAa+98Frv7AXOWnMh5m119udbD7EhvDgP/xHHahjElsLxp/KOR8fb3StA4u34uS9QlGwQDlLjRETkWZMTrnOQwn3tBD7axqptQs2TqF0AQT8A3Mpps4Zo7ACtK; 4:a5x22GLD2YpO6V2gZiuWusRgerFmZ4HBgoN3Qjzd2wtlU8SpaHi8EcKk2qaQtlgN80d8l5WwoA9mKYwqbJCJ11ET7O76xZyl8xMpGwcWi1rfv1cqfT/6H7Ja8Fj5yI1Fsyn/eFR3/mDW9RezICtqfb8hpuIWYj182KjGntn728th6nuJbE3cO93n51gO1ZGtKvZL3knjR5ht8aTBWeZrUrz41FxXtQQKtej4sPUr9w89AYkcpDoPsW+m7OsLj2A8w3hROuy39Rc2mF0NxqYTKkpRFRcipvJQkkFHVSpuVdccM6T/iKFDlgsW3At44KY1z3igHC+A9vXz+MpYBweOFAESKUssL6rKDOTGMMK+wD0= X-Exchange-Antispam-Report-Test: UriScan:(20558992708506)(767451399110)(228905959029699); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(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: 0430FA5CB7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(199003)(189002)(53936002)(4326008)(110136004)(50466002)(47776003)(50226002)(81156014)(81166006)(68736007)(54906002)(8676002)(2361001)(66066001)(2950100002)(6916009)(33646002)(2351001)(36756003)(106356001)(105586002)(53416004)(101416001)(48376002)(8936002)(25786009)(6486002)(97736004)(15650500001)(305945005)(7736002)(5660300001)(16526017)(16586007)(2906002)(5003940100001)(1076002)(6116002)(3846002)(316002)(50986999)(6666003)(76176999)(86362001)(478600001)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:ubuntu-010236106000.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; DM2PR12MB0155; 23:2uQsE86xvs/AJaM/zBMbSyjbGKuXN/lmMG8IelXuI?= =?us-ascii?Q?XkctCcgxWll9FaQ+KjpUEbyJUrcVZO2v+oz7vw2/ST4s99lNfu+yCye5QKa4?= =?us-ascii?Q?h3PnBmtMg0o4MKOaJGpFUmJjn8D0PX5e4bf+R2zVNIKJSN78Xi8y3vIPdXBs?= =?us-ascii?Q?e/wiousfvSQvDdJ53eRC67pWdSDqvvMyej4JqqzQI9UwKaLjFoS6iZ2qbc7F?= =?us-ascii?Q?PvWo9EvCjTJXAEwLEO9NKW2p+Q2oECNEw/RoBxaQ2f7UFXQMMjely64NoS+u?= =?us-ascii?Q?5bMt/eHOOvbopBTDCG2FiYkdK1yLpePbYZhXX4/FUW8RBH9Ouk7sfJchUxyb?= =?us-ascii?Q?BEVcjVfigccBRHXqNdDyGF8Rb+CSb0c0UkXZDHVQzpLse9iBlvQ8hUi6ing4?= =?us-ascii?Q?yAMYjkwyWWFDCAaD1X8ojv9U/jNAglfjmzjVQprJdREJMs6adk30e/E/U+Jz?= =?us-ascii?Q?vKz3EHMExyUeJllYjf6fk7ML6dRHA27ihZQMw+TlqgEA7RE+zGjgHA6VN85j?= =?us-ascii?Q?ifQTU5VT0kMDlJx8IKuhn3Oy08fk06yGuzKZbySG1hbqB1xmlVRS4nsZiuo4?= =?us-ascii?Q?N46v6odmoSoP7oq1p7AYYDUN76mmK7cDC4IBSrY7slmV+4Bf4Sfvnh+WTs8k?= =?us-ascii?Q?9rExotG+xu7oVqKVTTX60oXbXogRSne36NfBwRsZEIdMbgn0kXDYc50WIXPa?= =?us-ascii?Q?qVeKpbdOUFAEe0l6FH6ZlUHye+6BNDpbzQfSbAohYPxYWlkdP8S0iXAo2TP4?= =?us-ascii?Q?cwf/VsG0Wwso3b89yF/paN3SOrB8Hw6CleTWN4ieGR26MU814YVPaN9zX4U6?= =?us-ascii?Q?WfOi0Sd7+Bjh6D3WReGIvxRYuHUiEN/ZoV8rc5n8drf6KCeAybk1OHCl9KwI?= =?us-ascii?Q?xu36ydHAtPAuYcNDrvOExY76Wu3VFcpQ4n0RmKYbg7/cTtno6V7Gv+TAS2Na?= =?us-ascii?Q?aVdhs1djJVxcZMVqwfLR8NPwSmA5wPucBeJ2SpINxoq9cvCSC8b6q0dMaHTY?= =?us-ascii?Q?Qk1DJlhcNsARJIbEKlkKsxCwio4mqxne4qgM9vCaBPsXSoCKOmqK7fiZG1Ko?= =?us-ascii?Q?1bR8Ak3N/a0IC1JhZjSetZlrIg2yWOc7J5ieJR80rXbKZsaU9i4W7qJna1a8?= =?us-ascii?Q?V3JxM9q1EJ6WghGL4KO1I1gUaKr40uFf37iXBtnWRv6hhvzgmCOrN1Lcd5Lw?= =?us-ascii?Q?PFfnfLEhqWSxojVFkcMNTx019EZdDB8Wj8e?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:UxsqoDn8LmBujcgHz+YfA2GuNCM7FOHtW9mhCRcJBTIRGUsn7zxFea5vRcY7f+j6qnMx7o5yH/UR9hU9pTk/lMuLlGIpV6Wame8YLR8/7fZRjFiRvvR403ngqcsMDtFsKVuNvxHChQf5A2Z2CoautHaaoimU4swJW0b/eRIum+dxDFK7K34vab+yMqMkXQoFnbLiVDMMM2iuY4UiYMi2REPDSEV50PvSxFoWn+WY9lPwOseh9O1GdeZZyLVjSeA05c1wVsXqtgIJ50F/kmQGzdp3RkoutAl1I1hsDs7LZbxkns4b2pAKzMLF6g1uVLc4eMElaJRTxMpJTtEhu8+7pw==; 5:yBjwK7zjD2VMn+9nFQbRZHAm7rwPJ/JXAzntBuSr673yktypnPOK6opZOJnsMrkj6+TqFx6EObJsKcy/k8EK1a2HT1Oa2IAx9z8GVJiJQu/ErYkizGBX4PClekmnvQU0uJgjlKJt9y+zEZT507BC/pnnq+tYU3y0KN0y3Yz9pQs=; 24:jY3kYnqYi1a8BMX6m7ies3EkuDHBIphJCSXeH5CFuzLuj3rV4CoWaaS30oyueQkuWHpUbYqUgtNlUhlJGe1upvQxBRlIDDTNucE4FlcxpJY=; 7:gDcbmzp2hdwxmwa5ZwqcfD4BfUXu73czL4/OHi9+/wG/wPPxgU1PWZdFjnyznCpAi3QBrComhF4+Vh+1SuyEzNuwzqzuNZBdiZRYqHmgjO0sA/fh97jBmJC/lEvkVhN+DN6IDMLNSEJju9of2nONeCsouZvQS1ApqQ9hm8nUP0EgD+6yBeWLq8PZ1zggsMxypeL49INMHG6Vu9n7OTTUK4TWHSu9sFVMKmYHsYk0ouk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:23UBRnf7mpwe/l+9mrHN55+VnIl4Gk014BnylZCeHMjaOJPqSUnU+twfdpR43YuaHbbjFjsqCwcvZY5r16sCqbcz3bAxDdHrwm8Njv7k9fpwZuTGWWFiRCOYfirl5ycScWqJtVgpzmWfBOPEXUkyGE6lLxh6ZJKBxqktyignYpiYxJvxUYwoBB/ML+NkeH6JUYb/8R0SsW9dqY8sMb76kqjYERM3KtrJjMXI2pvYC5x6zeNEsTlqvd/q/l4Rz3DI X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2017 21:22:58.8830 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v4 5/8] OvmfPkg/VirtioNetDxe: update TechNotes 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 , Brijesh Singh , 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" In next patches we will update Virtio transmit to use the device-mapped address of the caller-supplied packet. The patch documents the new model. 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 Tested-by: Laszlo Ersek --- OvmfPkg/VirtioNetDxe/TechNotes.txt | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/TechNotes.txt b/OvmfPkg/VirtioNetDxe/Tech= Notes.txt index fedbaee07ec7..40a22f66dc22 100644 --- a/OvmfPkg/VirtioNetDxe/TechNotes.txt +++ b/OvmfPkg/VirtioNetDxe/TechNotes.txt @@ -312,10 +312,14 @@ in the following: that is shared by all of the head descriptors. This virtio-net request h= eader is never modified by the host. =20 -- Each tail descriptor is re-pointed to the caller-supplied packet buffer - whenever VirtioNetTransmit places the corresponding head descriptor on t= he - Available Ring. The caller is responsible to hang on to the unmodified b= uffer - until it is reported transmitted by VirtioNetGetStatus. +- Each tail descriptor is re-pointed to the device-mapped address of the + caller-supplied packet buffer whenever VirtioNetTransmit places the + corresponding head descriptor on the Available Ring. A reverse mapping, = from + the device-mapped address to the caller-supplied packet address, is save= d in + an associative data structure that belongs to the driver instance. + +- Per spec, the caller is responsible to hang on to the unmodified packet + buffer until it is reported transmitted by VirtioNetGetStatus. =20 Steps of packet transmission: =20 @@ -338,9 +342,11 @@ Steps of packet transmission: - Client code calls VirtioNetGetStatus. In case the Used Ring is empty, the function reports no Tx completion. Otherwise, a head descriptor's index = is consumed from the Used Ring and recycled to the private stack. The client - code's original packet buffer address is fetched from the tail descriptor - (where it has been stored at VirtioNetTransmit time) and returned to the - caller. + code's original packet buffer address is calculated by fetching the + device-mapped address from the tail descriptor (where it has been stored= at + VirtioNetTransmit time), and by looking up the device-mapped address in = the + associative data structure. The reverse-mapped packet buffer address is + returned to the caller. =20 - The Len field of the Used Ring Element is not checked. The host is assum= ed to have transmitted the entire packet -- VirtioNetTransmit had forced it be= low --=20 2.9.5 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Apr 29 10:26:42 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 1505424196787395.5588035016258; Thu, 14 Sep 2017 14:23:16 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 334AA21E9780E; Thu, 14 Sep 2017 14:20:05 -0700 (PDT) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0070.outbound.protection.outlook.com [104.47.38.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5C65A21D492EE for ; Thu, 14 Sep 2017 14:20:02 -0700 (PDT) Received: from ubuntu-010236106000.amd.com (165.204.78.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.20.35.12; Thu, 14 Sep 2017 21: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=am5yjXF1WNczph3BKTWP8/yMM0FmMEM0qev6bYImO6o=; b=Xfp+BGOcwt1pYJ6pg6cuIjkKqUS5XuboF7yP1p0TH2Y7GBnpZwgoerJEWqO++Fo/zEA16V2jTGAPFGa3JKlARPBQfedztUYTVfiYeYHdueuWNHKYsYH7Ea0QBJOBf+kl9YimHwvIWVIMerxYoohfZ07Me3TxzbLTfEFgU0EBfnY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Thu, 14 Sep 2017 16:22:45 -0500 Message-Id: <20170914212247.124937-7-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170914212247.124937-1-brijesh.singh@amd.com> References: <20170914212247.124937-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0014.namprd20.prod.outlook.com (2603:10b6:3:93::24) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 45df23eb-e5f5-459f-a849-08d4fbb6c64b 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)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:cIWMaM0U2r6YJq64C/6mWzQZ+6PRRPS7Zyd2AHWKiAhEpQx4x+gJVOk/WEIfiEhITbSFCJmQFdyDDGwVNgqaY1lCnuUhKuZBpAxt6ic9rQFdSjIk977kNzDtlJgcLTzv3u3Z7JHwKly7kFMWiQGCDTB5/0S6qnqO4bviN6Skg7g90dnEfJZWii+VctGDG8JjEGZe7TnEUh+SeHCSI/CyxnmTrctqduN2SsRzwsN9E23MLjEFFW5I/MYXpIu1MPG2; 25:WujjjCeMZSHIGhhKNnvHBz37UOQo5obXEW4USySt69L8MMxGqY+2DV4/CZnKx9RO7nmmLjEwz/ZtpWauwH5O/q5FAWt7EJveLOOKOU4tInwjYH/QpGgzg7GYsHuro/6hzw/VtUmCw91yxxHiLuq1XmRJAjOo8GhrNGoaT6lrxVhvR0AittaBvbQoih6Z9+8jNAZiYcIifHHPj0oLLoe/6c9bfsS1frMKlq5OfCSIPD8FhMbFKpFcsN1/FsWWPV4WqToYcreVTyQWRW/gBL7pFWyRKglPc/aeM9UFdFZSM7CYY42cgODJJQVzGT3B1Y08GRmbu/aL074TFbWlc2tpuw==; 31:TuGYJlhfvOCBc3YYwlou4pqHLQLh/Z+ZLfoe72LyL6s/N1i+AfH5gR4NAbbzsKxWzixsv1nASe1Qnia8+3054xlG71d+sYjtTyXqwwWkRTuf27RtSDNID/syHPaYM5Crfj+Ls73tamjQ3oDavzNVPd3fL95PF+u9WWh5nRG4/8EP3QZ906hqRcn46xCn/dnhnUB6vbREhJbMg3/PKCkqxiJElC7IBMpx58sKLlEPFKQ= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:Jj5PrAtI0Ay1JNVPzcRRsAGdSGIxewoxWQBHbLXCqb1sdScV7hN3nSyOGqjJ6j+hVbmPRiJBM8/YQoPe/R9Z98SZ0lDIebCjCGTGnk3mJwucLfaY2n6XDBaw9gc67j4WbOe62Q9rwSmYdx/FSZ97qKjhXDAI6IUqYhyOvYEj9OWoT+0vNxKBb07TjN9Ry602Ic3F7T/ytpQ4sJMS6qHp9Q77Tz31eGZyzxrm9l7PrrjLb2lz4EKPbOd8gGNJVHS0965G37CI7txNDnfbWMtkzlY+XpHT6LTRs33lGHyggKiX3rhGwC0M813jUcl7g3LmRM1ZRcd4MwjXDLs2EH/qJdSwPLO8Es//+sGQpfIpZIiRd+eIW/8yf/ZnWdFsBWUaEvN+KyQpKTpr+F7D4bTl2Ul4iQ+fkksaRi1WygjtCoTiuD2WXf+KCHpLiWFEQxAXNknDQ4+ZCk0Vd/rmfJOufT/H9fh/2QS5XHCZ/BufwapKx9qwYyfzFd8w1D/C77Pq; 4:SbWJxwXzGL5lNS4tuKekNxuzggd9AfEBkQd2lVYzOHnyYKGKqp/X/zTXBasreKblusik2oQh0LZ5psRaMcXlhm5kvHJBV4cN2hcnByIJ+H/BBXECerbkRtZ4w3PrF9hxRYg5/rYntw8U1h2gRTmO9wHc1Ekvi32a9XGltxhB2VLr0f9jt6YogG1OZS19jcpEHWZbTJ3UahwOudwxzC1PnIeLWY81Y5TSfBjAVYIoU5zSTrnllm9aFbFh4YaLe7w1lnhym/JUsRCUAUui6JU0Ak1ajKC7XSwoCSvIwOvkWw/mZ3hNlQl18soezG4ir/jbco8evoSSQO1QvT27XnQ9mw== 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)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(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: 0430FA5CB7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(51234002)(199003)(189002)(53936002)(4326008)(110136004)(50466002)(47776003)(50226002)(81156014)(81166006)(68736007)(54906002)(8676002)(2361001)(66066001)(2950100002)(6916009)(33646002)(2351001)(36756003)(106356001)(105586002)(53416004)(101416001)(48376002)(8936002)(25786009)(6486002)(97736004)(305945005)(7736002)(5660300001)(16526017)(16586007)(2906002)(5003940100001)(1076002)(6116002)(3846002)(316002)(50986999)(6666003)(76176999)(86362001)(478600001)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:ubuntu-010236106000.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; DM2PR12MB0155; 23:qkWbH7XBljyFrmPalq6wNucAyncwluggZ9gwedVaF?= =?us-ascii?Q?KbjOb9qGq8lUUW/M4aNR2O0HFhW6MGk/AkcPHpMueTsELqxycN0rkDVSj+Ra?= =?us-ascii?Q?VTFOe8YzIjCZDjHpyO094zVwv29N3ae+IBkX9/5sA2oYMPwBPpWZ5rU8OHBd?= =?us-ascii?Q?ZA5f5qvUxOFatzgd+TWvUv5/sDA7zoQoYKdZBiV+pp1AsJ3RmKP8p3wyFYQF?= =?us-ascii?Q?phndmp/WUxEEdqvZt9fN9UR52aAvZxGYd1RvxrPEXfu+r4paeGPChgB9ikqX?= =?us-ascii?Q?E5ocwpTSLcpclVmRODYS8j5A9zpRHUTf4y/DAsF8TseKxwE/RvkiCOMMQabQ?= =?us-ascii?Q?34ccWBz9veKe4o5nDcZt0tMqm1OdJ9CpG+6aigomHOQGfEcDoev4Yiz1fIfp?= =?us-ascii?Q?gY5DYkoo9DEi8iI926caIZdHdCoLakGT3qcQAacRyzPA+L6vJnsBX3jC3LKi?= =?us-ascii?Q?IOmpnSc+zd5FLT8RVvZ4CtyA5tuAPNuc1y5rlvxZ68E38uLGwaHl8CbbcEgM?= =?us-ascii?Q?wbuMZi+pe1aw3l0VUie+SNMNsCcIfFqmZ18Y58MypDsHtHlXxR4c7lniV+Ko?= =?us-ascii?Q?aQCG640drIsL5KJZN+j7YbbTIuCOHoxSbEGPaCgbeDGdJ62itEgykox2Nchm?= =?us-ascii?Q?YvT0iGsbwTJ+aGeYLrYNsYv+zxFOGLDE7fsDn5CY7BleQQgu9cRdk4YxPeZc?= =?us-ascii?Q?SZlLLn0jbtoNneRscc6dVy4y+CYNOykC5OCzsfvprHLVDLc5WwhH9N/XOVXs?= =?us-ascii?Q?2PYn3bd9u8b+m6/YVY9wzeiLiXQdRFnehLnmnKQeBuMy8zjEy7F67G7zue/6?= =?us-ascii?Q?I9dkdhMIl6E8P0LIhBWY6FgAnX1I3yv9Jfme49pIy5Q2PNwCOzlCur2PfWRA?= =?us-ascii?Q?XXYxZqusxnsD20TPG1Lk3UQKZIkls5Nad82stl30vmLyyo6uhfK+//00XIUm?= =?us-ascii?Q?qipq6srKuod8Dqx9JiPY7sp3vWqQJnSP+wXjQkDstYp68h9UulzHb+k77lfM?= =?us-ascii?Q?/QXf1x8IBGn1m9kw3K0JYasuHdgqQ303xRNrDBeYCakukbKHe2ZnmvvezM6U?= =?us-ascii?Q?sZHsWrjjjGGDl1f5Hhw0EXm9Grb9t4dl3DhCwq49f5IyPdvyhuYXuKxpeur+?= =?us-ascii?Q?n7E3n7rOR7gm7LKnL0s9xnXGpktX5fv1ZTIHvMQV2HNzJ1pmv8jftvxJjBBN?= =?us-ascii?Q?hELL9yynX636i+fkLIotpWXG2PfkhZMJtb2?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:UOl/lLEMA59b1xz3GMDACZVJ4QLdr6+7fyLi44Jl+raZohlo0OnydUz8fJ0XzKcBhUA/5KLxwNzyL6FPsJgLdPJLCuUApuF81EyuwCQknajat6VfatuspB42EFuUe7l3a6UHZqbooB00VfSssl0HARvdlPQt6Eq9YliY8bFbbPGPZI4iJ36/KVlC0Bn/bN0ruRuYuEIwieQrQwtSEjgjn6dnMk2BNShDW3j3gBi5m6vXTtWhzRTzqqNBZuKJVUEBiGnme5dYGnpsLWjBdMhP+qeTz5cj2bXx4I/ik94+fAnPZNHvKU2I32U5mZf9COZv0vj+8xuM9rUzwPNPlaSgiQ==; 5:4Xt+CiDK4NjXGkthPOlomHQdSn7fYr36gtWJIhuHwZLReenBNxFu3zT3dC5dGV/HXiPV7xLesRTAYCB9Wlr/EbIdpqcsjMWIvbCKWkXwWLIEGd0pxmi8lTub3T1odIKez3sBdYjL13smLLrVOzVzyLmbmdVWAKLPjRfOSd54Ya8=; 24:FAewDQ7IOEHknZZDQ4AFfGEWRktpAWwKeXHovXoUxgY6bFSoxXlxnNT1J/AUL2jKYiDyFtMxHhE2AUe7bODaP4pqavU84cMkZ4/tNPtvPpA=; 7:HnC54sM3W88r/jmNSvUc2qrmv3oELpMddYcomkJS1ScW5URBkrCpJtv2J/LkWHeDSkVtZxHy81ItNPe+7iGfwXJlLznzfAwZys9MFPXZnBQ42Ze/dAGg1pqzNBGCOi/tBE8axGbWpjD5XeKuBamC5ak/wpXgtSbij/MFyK7lacbTZpAdZ11pfQpsfcr41EsRqj72GE4OWQFbhvM2Cr4eS4be+y443c/g+KnG10tsT1w= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:FHLpGoYrvllG7quvp1egsPa3NyfHx5chsMawtZx9DDiZK1XCVf/WjW1dLvajxPP0bE3Cewr6SVcsebYgjZVZe+hAgc7t6B+y7OktFc5BpJfSAuG2ojvwcLk1FS/N7etyj0vAME5VGPqjcUvFedrZoc2I2JUbyMNvIVTpLih85DKzMPVxQWkxQyXE2Ww56c7LPkp3QnbZMBot5GosyozM8SvP/ND3d1izlBqcaDjFrxPVu4gd4Fftk6fmJyOOk0nh X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2017 21:22:59.3361 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v4 6/8] OvmfPkg/VirtioNetDxe: add Tx packet map/unmap helper functions 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 , Brijesh Singh , 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" When device is behind IOMMU, driver is require to pass the device address of TxBuf in the Tx VRING. The patch adds helper functions and data structure to map and unmap the TxBuf system physical address to a device address. Since the TxBuf is returned back to caller from VirtioNetGetStatus() hence we use OrderedCollection interface to save the TxBuf system physical to device address mapping. After the TxBuf is succesfully transmitted VirtioNetUnmapTxBuf() does the reverse lookup in OrderedCollection data structure to get the system physical address of TxBuf for a given device address. 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 Tested-by: Laszlo Ersek --- OvmfPkg/VirtioNetDxe/VirtioNet.inf | 1 + OvmfPkg/VirtioNetDxe/VirtioNet.h | 38 ++++ OvmfPkg/VirtioNetDxe/SnpInitialize.c | 18 +- OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c | 224 ++++++++++++++++++++ 4 files changed, 279 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/VirtioNet.inf b/OvmfPkg/VirtioNetDxe/Virt= ioNet.inf index a855ad4ac154..9ff6d87e6190 100644 --- a/OvmfPkg/VirtioNetDxe/VirtioNet.inf +++ b/OvmfPkg/VirtioNetDxe/VirtioNet.inf @@ -49,6 +49,7 @@ DebugLib DevicePathLib MemoryAllocationLib + OrderedCollectionLib UefiBootServicesTableLib UefiDriverEntryPoint UefiLib diff --git a/OvmfPkg/VirtioNetDxe/VirtioNet.h b/OvmfPkg/VirtioNetDxe/Virtio= Net.h index 027f75993e8e..3fc88cfb790e 100644 --- a/OvmfPkg/VirtioNetDxe/VirtioNet.h +++ b/OvmfPkg/VirtioNetDxe/VirtioNet.h @@ -26,6 +26,7 @@ #include #include #include +#include =20 #define VNET_SIG SIGNATURE_32 ('V', 'N', 'E', 'T') =20 @@ -100,6 +101,7 @@ typedef struct { VIRTIO_1_0_NET_REQ *TxSharedReq; // VirtioNetInitTx VOID *TxSharedReqMap; // VirtioNetInitTx UINT16 TxLastUsed; // VirtioNetInitTx + ORDERED_COLLECTION *TxBufCollection; // VirtioNetInitTx } VNET_DEV; =20 =20 @@ -281,6 +283,42 @@ VirtioNetUninitRing ( ); =20 // +// utility functions to map caller-supplied Tx buffer system physical addr= ess +// to a device address and vice versa +// +EFI_STATUS +EFIAPI +VirtioNetMapTxBuf ( + IN VNET_DEV *Dev, + IN VOID *Buffer, + IN UINTN NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress + ); + +EFI_STATUS +EFIAPI +VirtioNetUnmapTxBuf ( + IN VNET_DEV *Dev, + OUT VOID **Buffer, + IN EFI_PHYSICAL_ADDRESS DeviceAddress + ); + +INTN +EFIAPI +VirtioNetTxBufMapInfoCompare ( + IN CONST VOID *UserStruct1, + IN CONST VOID *UserStruct2 + ); + +INTN +EFIAPI +VirtioNetTxBufDeviceAddressCompare ( + IN CONST VOID *StandaloneKey, + IN CONST VOID *UserStruct + ); + + +// // event callbacks // VOID diff --git a/OvmfPkg/VirtioNetDxe/SnpInitialize.c b/OvmfPkg/VirtioNetDxe/Sn= pInitialize.c index 9621f936d2cb..ffb3deefe00c 100644 --- a/OvmfPkg/VirtioNetDxe/SnpInitialize.c +++ b/OvmfPkg/VirtioNetDxe/SnpInitialize.c @@ -147,7 +147,8 @@ ReleaseQueue: EfiSimpleNetworkInitialized state. =20 @retval EFI_OUT_OF_RESOURCES Failed to allocate the stack to track the = heads - of free descriptor chains. + of free descriptor chains or failed to init + TxBufCollection. @return Status codes from VIRTIO_DEVICE_PROTOCOL. AllocateSharedPages() or VirtioMapAllBytesInSharedBuffer() @@ -176,6 +177,15 @@ VirtioNetInitTx ( return EFI_OUT_OF_RESOURCES; } =20 + Dev->TxBufCollection =3D OrderedCollectionInit ( + VirtioNetTxBufMapInfoCompare, + VirtioNetTxBufDeviceAddressCompare + ); + if (Dev->TxBufCollection =3D=3D NULL) { + Status =3D EFI_OUT_OF_RESOURCES; + goto FreeTxFreeStack; + } + // // Allocate TxSharedReq header and map with BusMasterCommonBuffer so tha= t it // can be accessed equally by both processor and device. @@ -186,7 +196,7 @@ VirtioNetInitTx ( &TxSharedReqBuffer ); if (EFI_ERROR (Status)) { - goto FreeTxFreeStack; + goto UninitTxBufCollection; } =20 ZeroMem (TxSharedReqBuffer, sizeof *Dev->TxSharedReq); @@ -267,6 +277,10 @@ FreeTxSharedReqBuffer: EFI_SIZE_TO_PAGES (sizeof *(Dev->TxSharedReq)), TxSharedReqBuffer ); + +UninitTxBufCollection: + OrderedCollectionUninit (Dev->TxBufCollection); + FreeTxFreeStack: FreePool (Dev->TxFreeStack); =20 diff --git a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c b/OvmfPkg/VirtioNetDxe= /SnpSharedHelpers.c index 2fce8142d554..18dbf1812541 100644 --- a/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c +++ b/OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c @@ -18,6 +18,16 @@ =20 #include "VirtioNet.h" =20 +// +// The user structure for the ordered collection that will track the mappi= ng +// info of the packets queued in TxRing +// +typedef struct { + VOID *Buffer; + EFI_PHYSICAL_ADDRESS DeviceAddress; // lookup key for reverse mapping + VOID *BufMap; +} TX_BUF_MAP_INFO; + /** Release RX and TX resources on the boundary of the EfiSimpleNetworkInitialized state. @@ -54,6 +64,10 @@ VirtioNetShutdownTx ( IN OUT VNET_DEV *Dev ) { + ORDERED_COLLECTION_ENTRY *Entry, *Entry2; + TX_BUF_MAP_INFO *TxBufMapInfo; + VOID *UserStruct; + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Dev->TxSharedReqMap); Dev->VirtIo->FreeSharedPages ( Dev->VirtIo, @@ -61,6 +75,17 @@ VirtioNetShutdownTx ( Dev->TxSharedReq ); =20 + for (Entry =3D OrderedCollectionMin (Dev->TxBufCollection); + Entry !=3D NULL; + Entry =3D Entry2) { + Entry2 =3D OrderedCollectionNext (Entry); + OrderedCollectionDelete (Dev->TxBufCollection, Entry, &UserStruct); + TxBufMapInfo =3D UserStruct; + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, TxBufMapInfo->BufMap); + FreePool (TxBufMapInfo); + } + OrderedCollectionUninit (Dev->TxBufCollection); + FreePool (Dev->TxFreeStack); } =20 @@ -83,3 +108,202 @@ VirtioNetUninitRing ( Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, RingMap); VirtioRingUninit (Dev->VirtIo, Ring); } + + +/** + Map Caller-supplied TxBuf buffer to the device-mapped address + + @param[in] Dev The VNET_DEV driver instance which wants= to + map the Tx packet. + @param[in] Buffer The system physical address of TxBuf + @param[in] NumberOfBytes Number of bytes to map + @param[out] DeviceAddress The resulting device address for the bus + master access. + + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to + a lack of resources. + @return Status codes from + VirtioMapAllBytesInSharedBuffer() + @retval EFI_SUCCESS Caller-supplied buffer is succesfully ma= pped. +*/ +EFI_STATUS +EFIAPI +VirtioNetMapTxBuf ( + IN VNET_DEV *Dev, + IN VOID *Buffer, + IN UINTN NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress + ) +{ + EFI_STATUS Status; + TX_BUF_MAP_INFO *TxBufMapInfo; + EFI_PHYSICAL_ADDRESS Address; + VOID *Mapping; + + TxBufMapInfo =3D AllocatePool (sizeof (*TxBufMapInfo)); + if (TxBufMapInfo =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Status =3D VirtioMapAllBytesInSharedBuffer ( + Dev->VirtIo, + VirtioOperationBusMasterRead, + Buffer, + NumberOfBytes, + &Address, + &Mapping + ); + if (EFI_ERROR (Status)) { + goto FreeTxBufMapInfo; + } + + TxBufMapInfo->Buffer =3D Buffer; + TxBufMapInfo->DeviceAddress =3D Address; + TxBufMapInfo->BufMap =3D Mapping; + + Status =3D OrderedCollectionInsert ( + Dev->TxBufCollection, + NULL, + TxBufMapInfo + ); + switch (Status) { + case EFI_OUT_OF_RESOURCES: + goto UnmapTxBuf; + case EFI_ALREADY_STARTED: + // + // This should never happen: it implies + // + // - an identity-mapping VIRTIO_DEVICE_PROTOCOL.MapSharedBuffer() + // implementation -- which is fine, + // + // - and an SNP client that queues multiple instances of the exact same + // buffer address with SNP.Transmit() -- which is undefined behavior, + // based on the TxBuf language in UEFI-2.7, + // EFI_SIMPLE_NETWORK.GetStatus(). + // + ASSERT (FALSE); + Status =3D EFI_INVALID_PARAMETER; + goto UnmapTxBuf; + default: + ASSERT_EFI_ERROR (Status); + break; + } + + *DeviceAddress =3D Address; + return EFI_SUCCESS; + +UnmapTxBuf: + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, Mapping); + +FreeTxBufMapInfo: + FreePool (TxBufMapInfo); + return Status; +} + +/** + Unmap (aka reverse mapping) device mapped TxBuf buffer to the system + physical address + + @param[in] Dev The VNET_DEV driver instance which wants= to + reverse- and unmap the Tx packet. + @param[out] Buffer The system physical address of TxBuf + @param[in] DeviceAddress The device address for the TxBuf + + @retval EFI_INVALID_PARAMETER The DeviceAddress is not mapped + @retval EFI_SUCCESS The TxBuf at DeviceAddress has been unma= pped, + and Buffer has been set to TxBuf's system + physical address. + +*/ +EFI_STATUS +EFIAPI +VirtioNetUnmapTxBuf ( + IN VNET_DEV *Dev, + OUT VOID **Buffer, + IN EFI_PHYSICAL_ADDRESS DeviceAddress + ) +{ + ORDERED_COLLECTION_ENTRY *Entry; + TX_BUF_MAP_INFO *TxBufMapInfo; + VOID *UserStruct; + + Entry =3D OrderedCollectionFind (Dev->TxBufCollection, &DeviceAddress); + if (Entry =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + OrderedCollectionDelete (Dev->TxBufCollection, Entry, &UserStruct); + + TxBufMapInfo =3D UserStruct; + + *Buffer =3D TxBufMapInfo->Buffer; + Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, TxBufMapInfo->BufMap); + FreePool (TxBufMapInfo); + + return EFI_SUCCESS; +} + +/** + Comparator function for two TX_BUF_MAP_INFO objects. + + @param[in] UserStruct1 Pointer to the first TX_BUF_MAP_INFO object. + + @param[in] UserStruct2 Pointer to the second TX_BUF_MAP_INFO object. + + @retval <0 If UserStruct1 compares less than UserStruct2. + + @retval 0 If UserStruct1 compares equal to UserStruct2. + + @retval >0 If UserStruct1 compares greater than UserStruct2. +*/ +INTN +EFIAPI +VirtioNetTxBufMapInfoCompare ( + IN CONST VOID *UserStruct1, + IN CONST VOID *UserStruct2 + ) +{ + CONST TX_BUF_MAP_INFO *MapInfo1; + CONST TX_BUF_MAP_INFO *MapInfo2; + + MapInfo1 =3D UserStruct1; + MapInfo2 =3D UserStruct2; + + return MapInfo1->DeviceAddress < MapInfo2->DeviceAddress ? -1 : + MapInfo1->DeviceAddress > MapInfo2->DeviceAddress ? 1 : + 0; +} + +/** + Compare a standalone DeviceAddress against a TX_BUF_MAP_INFO object + containing an embedded DeviceAddress. + + @param[in] StandaloneKey Pointer to DeviceAddress, which has type + EFI_PHYSICAL_ADDRESS. + + @param[in] UserStruct Pointer to the TX_BUF_MAP_INFO object with the + embedded DeviceAddress. + + @retval <0 If StandaloneKey compares less than UserStruct's key. + + @retval 0 If StandaloneKey compares equal to UserStruct's key. + + @retval >0 If StandaloneKey compares greater than UserStruct's key. +**/ +INTN +EFIAPI +VirtioNetTxBufDeviceAddressCompare ( + IN CONST VOID *StandaloneKey, + IN CONST VOID *UserStruct + ) +{ + CONST EFI_PHYSICAL_ADDRESS *DeviceAddress; + CONST TX_BUF_MAP_INFO *MapInfo; + + DeviceAddress =3D StandaloneKey; + MapInfo =3D UserStruct; + + return *DeviceAddress < MapInfo->DeviceAddress ? -1 : + *DeviceAddress > MapInfo->DeviceAddress ? 1 : + 0; +} --=20 2.9.5 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Apr 29 10:26:42 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 1505424199698513.7450395115583; Thu, 14 Sep 2017 14:23:19 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 6C75121E97813; Thu, 14 Sep 2017 14:20:05 -0700 (PDT) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0070.outbound.protection.outlook.com [104.47.38.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id CFB1421E3EA81 for ; Thu, 14 Sep 2017 14:20:02 -0700 (PDT) Received: from ubuntu-010236106000.amd.com (165.204.78.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.20.35.12; Thu, 14 Sep 2017 21:23:00 +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=h3v8vycHivgC4/w1PADHLrkPuoeb2TgbS2TuDxtCNbY=; b=k28ZaHqUdlHBGYbuft3QFxFZE7jrJp89Q/e04smZqReR+A8Zw2uuyaumo2dcNshEYE06uLVp8tLgs2jk4fhnVm91qZlRkyX7uPECcpfjB80EUNQRwcaIYdMp/FOnZgc1GLQv3EBzFAOcl9RkkAvPrNtcF3lbJAaIrgDvPJypnbc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Thu, 14 Sep 2017 16:22:46 -0500 Message-Id: <20170914212247.124937-8-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170914212247.124937-1-brijesh.singh@amd.com> References: <20170914212247.124937-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0014.namprd20.prod.outlook.com (2603:10b6:3:93::24) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 217a70b7-1154-472e-045d-08d4fbb6c6ca 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)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:R8lOfhmE2lvOd3PtnlM6WFEUJ7MxpbVPEDyxP9yQCjTBEjS0kv6AFiZ3qk7aHuj1O+m5qHKQTZMX3759S/wU871YwYYAAFQh1o9pv+6cEcmhifL/krIjcfUa13sN4aldidVaA2jdvU4aX8BniN25WNVRHWinJn5g/Ohi+0MPUYh5RtRmJFekBrqLA6MPAAQTbo2J2cYEps4pHMqhaA/Zd6kf9/lNyJnI5kgUQZZ+AN0MYdXQKwDMgJZIGXGEQUKx; 25:NtDBPcpYkvFRuNfSMOtsjmkf00DN5PY7qyoXGdMRnKM77zGF23KkB428FeHFZVmEbsUoeIvL+bMzc4pA3jOOwjEPoPWA3Uhv7kS6JgT66IILSsR86Sv+xNir7g+4JXWjzavj24GH0TttFdbwGSxJd72epCFZN2gl4tr7Fw0osMt0Tyk+HOXjqdgQDYDaqd56G3JJh/XgA4xzOYQYoAjXcDHji1Sn1vRKsbFzYVg8Y5BqZ3RnqB7+/97Y3exgCGHE32kGZWUyKHLt3+5lb35rr/yWrQ0BI8qP+4hBMIzgi8/Y0mCHVu90nXhFsmy38oQlN9WcMlnlUiJGL95xr+87MA==; 31:DbvLnQlDDsYQf3/K86yRk34VZH1ju0YQXjV0ESqR3iW77LUQTlg4qSSW3KOIcECfwAHZTCzTK3Hobb6xMLNyBPatUv0CV0exdvrfuKf0gO0h9mzxMypXqec8G4cufDqwqiT1xOzgmABmRJc0UI337rYdiVy0PXdSVcsJOpgmjqGSfPQI73CGZGw4SB4hmM/3uQUBnqM1ghLxu1nzBOW3kKi5l+l6RaJuicYKOivzHNI= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:9lDvGOhp4VStYN3OsKyWS5Ux37pKC1yE89p+pDDw0Q0Ru/QP7PNpRNZqkSSzAQ8HRNA8oNIjMQygj0PXW0wvWL2zpmoFGCu5YqR/6aJdfdj6kroqmE/6CYsbHwKuYMVFiHYVxTp8Pxxspp9FFeShktlDITyIST8RavXAJPm4iqNSka5fbr7ly4zck80lMTZ03ezKK5RsChICIKjh5J942OrKgRJvL3pDNAXY/MUecoDPVVXZT4HN4LK1Aworg6TRKnFdzhotPgA5KYSXeSTJ0T6um66XQI/hMcMVfvbeJ6cg+FbJNWgp+VT2e3tROpUIOOJxn7ksyH1lda8wfZ8ntWZJmETqh7pMlKGWdzbJMLBwQno5l7flclGN/UBG+duM7Hy6L9Y8UfwK1kyBKKaM2jqy+z6owh3KnIOotFzKskFPpXWJYA3tyqIdq0vAa+7r+D6MKk8tY/glU3Ffd3oojCtc4tAsI5/XzXL0o11Hl10S5EjOb46c/bjLwocb+xB7; 4:AngBwnCwZvErDOABGaYRDcCU4gWYzMNfZYA42eBYoNQ88xI6mOpq8DxdtYSvqF1lX9pdQN6ZP+sE/5pTStGnBulK1pe01U7w6i5o8BHpBFxMaQtjjjiKROgrWqICYO2L721n4yguq5Wrd24uVlBflIUT9O81TwS4SQnuRyrYx3kZHc/Cpq4uQkHEgJFQr18T1AlUDE7vFhOgR6SZHQRNgFUVdk8qWAg0bYqQrWgFzGZpPoWswfb24H2TpTIQD0swZgTUHdWz7TiJpQgx2K/Bc56hscVTaYHjpUHOJiAbRqwkAEqP2nsv6iefDT3fx2bTwggySEdEKYNSLq0NsHq4cA== 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)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(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: 0430FA5CB7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(199003)(189002)(53936002)(4326008)(110136004)(50466002)(47776003)(50226002)(81156014)(81166006)(68736007)(54906002)(8676002)(2361001)(66066001)(2950100002)(6916009)(33646002)(2351001)(36756003)(106356001)(105586002)(53416004)(101416001)(48376002)(8936002)(25786009)(6486002)(97736004)(305945005)(7736002)(5660300001)(16526017)(16586007)(2906002)(5003940100001)(1076002)(6116002)(3846002)(316002)(50986999)(6666003)(76176999)(86362001)(478600001)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:ubuntu-010236106000.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; DM2PR12MB0155; 23:I/SubH+prkYBlFELzcv1S+lrg8OHwetNdb7G4sclW?= =?us-ascii?Q?VrFIf8e/IM/2jFM3GtMxJVJYwvJAYN+xGfSWmBeuR+VDIquWRSZYZZ/2M1SM?= =?us-ascii?Q?OLWtVwomyIrcxtBeQa6allijjl1DdPzx/KXAOkqZuu+pJj6MP4F/U9S+FXjk?= =?us-ascii?Q?T6HDwfe/y+lDmkl3m1oiWbpiKqq5rwECrvnD8yr+KoIeWDKu4QNF7oNjdM4B?= =?us-ascii?Q?HSezq7w/DBSpLEjRUusKXGRAUmV265G4Od0pZbwRpXtE2VxnL8ZJtEW4nNk0?= =?us-ascii?Q?Wx2a1DsTqk7v7sUTxXlelOiXnybCyvJCmXrkMlRz4fIR59v88ZX1u9SvzqsI?= =?us-ascii?Q?YMnwCS9dyta1EBcNOoGNP/nKCfFnpe9OWZnWzkYhxvZHT8OBiYndXpgr9L9B?= =?us-ascii?Q?rNqkN+AOpHNa59cb2LmtfQtBA87kTc3/QG+5uwmOc/40Ot2zmHCFkqR58/9Y?= =?us-ascii?Q?bu1cxXz9qRwr8O7fq4gqH3vabSUrMqECvqyb2Nj10ycvaENLjeUlODn7xIiF?= =?us-ascii?Q?IGFhXK0bspWO7k4KybZFQCNMMc1a8Qggoy8WdYuczp/G07LyIM4QfYixDBZq?= =?us-ascii?Q?j6pHJu3lIIvIXjKCtIhQ+YNYFae7rlRGkjDhMeQsi80BkioSXONfb++AgrOy?= =?us-ascii?Q?P69UJ1yOW9uSCoFc8dP109NgrsthbZDu6Dr+5YS1hw3kpihNIMWuR/Y6xDFj?= =?us-ascii?Q?4ITSYsMpLZgyFRqaw0/+qpdzOCK2jCiK2zLQGHmAq+4eampdIBW71IcjLWsu?= =?us-ascii?Q?avMXDEIiXaC1O0ETljE6Kmx/T9s+uYxJxlHBaIsV48rI0YjN0PkS593tBGNx?= =?us-ascii?Q?AKxbfNsYnbh1c8iwrGVXK1s9TupDfJOYE5shs/M1YjzoiphWh32uXCmoNNCJ?= =?us-ascii?Q?Ox9n2mYQw2xotzqfYgAlL1c7YwhjIh5KAyKeks45TNZhgZs7lrICP12B75HI?= =?us-ascii?Q?mo7Td+QS2YU3AiJzet8AGnBhd3GjqZguBLK1YzFq5vwvGkZA2R891c+5nbSQ?= =?us-ascii?Q?WfFsG2Ma3/sEkXZhraWUHXZGTeFwfUdx/bvCkIIHLpFfPc5ulLqb2X0heWV8?= =?us-ascii?Q?1cazu7PJbkslvu5mJalpFHSCPVHJm8HqiLafhR1aJHu7zOZwGtguZuRudVpB?= =?us-ascii?Q?ApyIWamzKRfHbGHtOP++ReW44n3+ujI2AodnmXSYEv1GHKAW3SM4w=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:YVxk27MJ1UVagnz+Df/RUc85evj9krusVpRCta0UAlXAfkGd28LM8cEpr9qJPJVxhit5rJHNw6OFFIIuuv/e0ZIHbJsUv8q+s7D2RgsKWaRaPTQMUE2t6vSxw+C7EGHX74nFbflA3UnAyoOLaPX0M5z1txSSAczv5h15oc8q1G9lgC1i925cF57IFPcAqlc+U2MgsDzBJwKI/CVKmDKkIoF7T+ki/C5B/w6PaI5UCjwH4f6gznDdax7SDEav9wbXHIrUA26RIX4NSUj83S4tirAANRhSk9b4Nlehp1LFRWVmu+C5xNfzWHyux3m5LdbJ4HBfQutZeE7CvxG4fCOO+A==; 5:LnVt8kan5y5bHxPSBu6B+dmqGPTUqSqMHG7J7+7QZbopM7Q7wOyI7SrRF8DQVHjY6KrjrHFZVd2XPIU+n3YI4WL3NEst4g2gw5as1AsPa7bWzbLfNU1yuZJxCqSw4Hb3vQwcvbYL+TbgIE5COfqS3aJuYajYjSY+FFeccQUS3hs=; 24:PCOkInqkmRhEWJpxdFxdy9sGKOK0rx7PoFdpu3UUG6fmDjb40V1mskCxy1QtB18Isy7dAA9KS7Yx94phwXFzPPIAcHNv09yFnuJFGx2+O00=; 7:s5XBx+zTuHMn4ki77uYPwi/CJI+BTk8NQAK67t0DSCRGgnmP+fy8Wz8ZYwxKWvToe7XZO4RpWlauPI/C16M5K/DU7N+WpZ75JfmgHnxteU5EzDK03xubX5ftACwE9g7D60jJFJnXSwhgvby+4ICjJC/C7qvHYGumkzXGSsXFKB8beuNrxiXwwWIgBufE/MemahUcH1Mydy4CCRR9Zyp2xyU62ea6EmwLxQz4w0EhPNU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:/KCFb+HOf48lIheuf9dQ55/0v4pnxJTiOvqBlXUnyhQNM0IQOL/CNZzIp+EbYYI+LLcg2+ueEgMwcf6vzu9Ewq/rH4Y7y6/VRKZDHJQXPV+uvl+tZc0z9WSKu6mJZPOL0Bz1ohUXM08qxaveZ5N8WeRFfVVMiaVnya8dFIHjtYYx/D1+juW6qtoYdBXSpsHxeobatBMt82+K2mOZb7pE21GEsgUE+7HyuLCSRNQ/s/ujWsVwbdWd4N9GIylZ+C4/ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2017 21:23:00.1330 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v4 7/8] OvmfPkg/VirtioNetDxe: map caller-supplied Tx packet to device-address 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 , Brijesh Singh , 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" When device is behind the IOMMU, driver is require to pass the device address of caller-supplied transmit buffer for the bus master operations. The patch uses VirtioNetMapTxBuf() to map caller-supplied Tx packet to a device-address and enqueue the device address in VRING for transfer and perform the reverse mapping when transfer is completed so that we can return the caller-supplied buffer. 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 Tested-by: Laszlo Ersek --- OvmfPkg/VirtioNetDxe/SnpGetStatus.c | 35 ++++++++++++++++---- OvmfPkg/VirtioNetDxe/SnpTransmit.c | 27 +++++++++++---- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/SnpGetStatus.c b/OvmfPkg/VirtioNetDxe/Snp= GetStatus.c index 694940ea1d97..9b1c352227b3 100644 --- a/OvmfPkg/VirtioNetDxe/SnpGetStatus.c +++ b/OvmfPkg/VirtioNetDxe/SnpGetStatus.c @@ -61,11 +61,12 @@ VirtioNetGetStatus ( OUT VOID **TxBuf OPTIONAL ) { - VNET_DEV *Dev; - EFI_TPL OldTpl; - EFI_STATUS Status; - UINT16 RxCurUsed; - UINT16 TxCurUsed; + VNET_DEV *Dev; + EFI_TPL OldTpl; + EFI_STATUS Status; + UINT16 RxCurUsed; + UINT16 TxCurUsed; + EFI_PHYSICAL_ADDRESS DeviceAddress; =20 if (This =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -141,14 +142,34 @@ VirtioNetGetStatus ( ASSERT (DescIdx < (UINT32) (2 * Dev->TxMaxPending - 1)); =20 // - // report buffer address to caller that has been enqueued by caller + // get the device address that has been enqueued for the caller's + // transmit buffer // - *TxBuf =3D (VOID *)(UINTN) Dev->TxRing.Desc[DescIdx + 1].Addr; + DeviceAddress =3D Dev->TxRing.Desc[DescIdx + 1].Addr; =20 // // now this descriptor can be used again to enqueue a transmit buffer // Dev->TxFreeStack[--Dev->TxCurPending] =3D (UINT16) DescIdx; + + // + // Unmap the device address and perform the reverse mapping to find = the + // caller buffer address. + // + Status =3D VirtioNetUnmapTxBuf ( + Dev, + TxBuf, + DeviceAddress + ); + if (EFI_ERROR (Status)) { + // + // VirtioNetUnmapTxBuf should never fail, if we have reached here + // that means our internal state has been corrupted + // + ASSERT (FALSE); + Status =3D EFI_DEVICE_ERROR; + goto Exit; + } } } =20 diff --git a/OvmfPkg/VirtioNetDxe/SnpTransmit.c b/OvmfPkg/VirtioNetDxe/SnpT= ransmit.c index 7ca40d5d0650..b39226e138b9 100644 --- a/OvmfPkg/VirtioNetDxe/SnpTransmit.c +++ b/OvmfPkg/VirtioNetDxe/SnpTransmit.c @@ -73,11 +73,12 @@ VirtioNetTransmit ( IN UINT16 *Protocol OPTIONAL ) { - VNET_DEV *Dev; - EFI_TPL OldTpl; - EFI_STATUS Status; - UINT16 DescIdx; - UINT16 AvailIdx; + VNET_DEV *Dev; + EFI_TPL OldTpl; + EFI_STATUS Status; + UINT16 DescIdx; + UINT16 AvailIdx; + EFI_PHYSICAL_ADDRESS DeviceAddress; =20 if (This =3D=3D NULL || BufferSize =3D=3D 0 || Buffer =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -144,10 +145,24 @@ VirtioNetTransmit ( } =20 // + // Map the transmit buffer system physical address to device address. + // + Status =3D VirtioNetMapTxBuf ( + Dev, + Buffer, + BufferSize, + &DeviceAddress + ); + if (EFI_ERROR (Status)) { + Status =3D EFI_DEVICE_ERROR; + goto Exit; + } + + // // virtio-0.9.5, 2.4.1 Supplying Buffers to The Device // DescIdx =3D Dev->TxFreeStack[Dev->TxCurPending++]; - Dev->TxRing.Desc[DescIdx + 1].Addr =3D (UINTN) Buffer; + Dev->TxRing.Desc[DescIdx + 1].Addr =3D DeviceAddress; Dev->TxRing.Desc[DescIdx + 1].Len =3D (UINT32) BufferSize; =20 // --=20 2.9.5 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Apr 29 10:26:42 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 1505424202884969.434224016613; Thu, 14 Sep 2017 14:23:22 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A462B21E97818; Thu, 14 Sep 2017 14:20:05 -0700 (PDT) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0070.outbound.protection.outlook.com [104.47.38.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 3D21D21E74922 for ; Thu, 14 Sep 2017 14:20:03 -0700 (PDT) Received: from ubuntu-010236106000.amd.com (165.204.78.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.20.35.12; Thu, 14 Sep 2017 21:23:00 +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=e13vmjhmlYr+r5r3iDawTH0Hk5kk/QFxtyHnxvybTf4=; b=Ia6jxv/S/HJsjFnvjla6BAqByrD2/4CgMg/txwBvsU5MbGeiJOzXB9j3nIQammfjEQgMz2iAGCUaBFyVW6li4hPbS7EPDYoUTRf6LEP/EYaQKBchXDfPfCKz2PbsC8H4OR6vZnLgiC8fIi4tkmnB4PgT/SiwrogEq2zV4iwXmtA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Thu, 14 Sep 2017 16:22:47 -0500 Message-Id: <20170914212247.124937-9-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170914212247.124937-1-brijesh.singh@amd.com> References: <20170914212247.124937-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0014.namprd20.prod.outlook.com (2603:10b6:3:93::24) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 81eea373-f510-40c6-c5dd-08d4fbb6c70c 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)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:Rs1RCvboArJRE9xtT5vUyTq31JKaYdGgRWwGIfNgs9ZZs5/zXuEExeWqNA2sdoq51ND023OCJWHsw9FHl/cnXa5lrty4RofqS2aeet60AR2bnnL84ts42hczIWbDQdYnGHJy8+SUsCRt/QODxgH7vuiZKJ5L8Fa6KGQegHTQzIG2wzD82jnAZM4askEgWq/wkz71/LB/VwF6m0qEcftu6UgaRrndImQH//S9izqMokRKnz80PHamjUwIlskXB1pK; 25:E+WyBuzjD28vLJNWcs8OgaUfZEuFpZWi9nVjuj0Tao4jF0Ryt92wTRXfNT6X0E6XqA12wJUTHcmBudRlezHKTr4Ok7OV9joyvwrg1eyZR/3OoA2n0tgmC2uhuovESvj2XLbKeGB6Iffv9lndcSFDruuMJTXX7QREDZ9cKkP2Qu4U0WoC0dNwpsYopLStl+8Uq9KXvrGTURYnHSbWIaepTKKUiPhBvnPVJAEgbNJSwslSi4urek3m67+oQBJKFW8VJhyeJ4QJqgEdmH3P72qSBrfQNLn8UOpLrfgYT+LMqYxscAnz5ml5Y8XHPbm7UPvcx0ZwmPSI78AFwKofYeQJpA==; 31:o4e6vg4iLlHoZm0hSOEALRTJq0oYe6meYbZDHOFuzNDnJO3IydDDctPWBvblles3n2ot95/QCYmX+2bEU6HBXUOdRZlS6R4dMay/8QoKKBENmSc3f8HPn3v9iuDPGIuoNH6wEpAqfb56qyoblKmVDFjK2idcWS8EncwfNe87P8xXYUtymbvlFZPlRaGU0BX6wO6JeR+Ieiq/fzsc+pMzYurzKExGINSpGS896lzf+18= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:GcHuxG6L3hZw79ILqaNCNU2pNDozeDhzbkxEgHz6QJe/B/QQbWPzJx23EcSY/xEvA5Axk26ogsEh1oQT/SAxkM3KErXnFYoefyuzandDbtkqFckASgaj6FAEsm/Dsr8zCmHV2qAJrBoHk+XmJAWYV4Q+rzEBoAh8MARX5XEWPbNCazyNWXanG2pTwWGTrw7HqDgyz95bs/v4VY8v0n+4CYEHvwm7rU/1jWibSORQQPhjh9KseoGIHLg8PmqjbopDmye+zWz4lz5pyRasQW2QofHQhoK2JitmAgEhlzcOb0u5xsfX7xyN6hYcHlzwvxPXkInkScxF3+eG+5bKpIEUVHvFQbGI2KGs9He6IYtdxAnt1w2IxCNrWp3DUoeOPXgr47G1OQS0F2vqcIGdx8kzmE9nKpL1n2flxJnHkdD8V0foFyj2IdENp5yv9XLzugc9THwLR8+L8AVptl4dFEELOP7v10hn4Otz5MBzb8z24oXmAXXYP/bO+Ffzs++5TNpf; 4:Oel4k3W9Kl/0pNLSe5jGaM7zIbP+W2ci/SiRs5ZC/t4/Sxds9od7XeEHN+hPFxh4vrTTVixHMLvRxrfMMY2JNBnhuAuar0qz8Yo0mB5jOp8ltCI5Pn3KwEWGLZfK3u2GqUnBiAikyhIrj0sb6jKdP6EpmwRh2S3Bt6uKc4m1oLuSDHX/SIwMivOqtgIC/zTZ4j/pq38zx/dNpj7/kyDW8pTRiJPez0KpUzh77RQPzltSp9pXEPazdBLrEBts3dpKRdnbyKg6drqCbb3s4gn9qsNleW0WfpQMxBZVVxzMd4XIX1zCZbBU5O98vGEWN8uqnlHtY9cxqCxl/EWYreDKNQ== 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)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(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: 0430FA5CB7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(199003)(189002)(53936002)(4326008)(110136004)(50466002)(47776003)(50226002)(81156014)(81166006)(68736007)(54906002)(8676002)(2361001)(66066001)(2950100002)(6916009)(33646002)(2351001)(36756003)(106356001)(105586002)(53416004)(101416001)(48376002)(8936002)(25786009)(6486002)(97736004)(305945005)(7736002)(5660300001)(16526017)(16586007)(2906002)(5003940100001)(1076002)(6116002)(3846002)(316002)(50986999)(6666003)(76176999)(86362001)(478600001)(189998001)(344415003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:ubuntu-010236106000.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; DM2PR12MB0155; 23:QcVMQmpXq+BfiEe7B2Nz0GSOEKbFCqjgRBt+T0a4X?= =?us-ascii?Q?0vnLjpssuB/ASEnR/8t3q3QLkRDlwSZAZx/csoDocDeH5ZRRwsEM1ybD0c5j?= =?us-ascii?Q?33MMukT6idxwAGhIHKgRBV91m29taJTAu58fowC2Ujfzop7LQp6HezL5BNri?= =?us-ascii?Q?xGd5NhWA6mSoJ1IwKZVvQ9aawLJUVJgWQtAAhZhrNTCnH9Y37w6/QerpUF0s?= =?us-ascii?Q?iBszvbqKL4JBhEiCga4bnr+TMzusi+nBdIZtWLJMqadDzc+Hi5RaUX9cD/rJ?= =?us-ascii?Q?fM3LZ9o1Gq45leDdKIscz0VHRlNJKZbV44Ybdvg7YGW7NTeiUi/3MjbIgyY7?= =?us-ascii?Q?dT1Yzofbbk7lBDXKp1MdYkMiDwXp6lHrdrnvcuc+DU7RW8afTp66O8PVcDZ0?= =?us-ascii?Q?4X+FHSKTaSJ2BfHTKw9iKFvRwNZffAwfNp/JvPHLpXf6zL1n4YLkx6KW2jgX?= =?us-ascii?Q?AZqAvetivKXxRtV7uRM1TUlj79JIJx4ajo9SVOO0Qpba0bObctwIvML2JG2S?= =?us-ascii?Q?SINYpSVH+CMHAPfCXut1s63UGbpBt7af/CW0tGMb4VDp7VdhYUxbRYp+7yer?= =?us-ascii?Q?MCMPfT/9ilPdPa9LIL7WjxJS4FSUI16gW6mTOrOIXp293oayQmf2UL+LZzPj?= =?us-ascii?Q?rb43v8GmBvbiT6dVIZ0cXp7knFgRr9KzB2wKD5zIgoXP+L/ASwPtRloxJXYY?= =?us-ascii?Q?1QS+cGtBEHFX3uPcOMIsdeaswuvu4GURav+hu7MyAsWiOrNV0bu5HwwiEzTl?= =?us-ascii?Q?XkfS7PkGk5GW5ZdneJR4uMbwD2FZOTelp4nijylaaffs6tLk42BZ1Y1xOe7D?= =?us-ascii?Q?lIf7DNcwWgFxfVz9qvtPqjd4086TVRtCp7jj5ClDlt7zHSanmA0vKpR1DcN3?= =?us-ascii?Q?fyXOI89AKmXa04YDRuH0xY9kJmVXoLhuozaHsz6Wys3LAr4G2Qaq8xCusQPa?= =?us-ascii?Q?Fbux8mfRIQSTA7e27McOqXI+up081XdAx4MOR6sbW/AhWeoTwXbjLBLuRvll?= =?us-ascii?Q?lNtnxkAIDtdzZHKKVu74lzN7JHmB5Uh86f+MhBIXowpc1i7/OkXbuRJ3QeEU?= =?us-ascii?Q?pw9szV0KGSrhA+wjsPji5GAs9jJiifdxZZeYqAwR6ex6sxPsSbVTn6WgJ/hZ?= =?us-ascii?Q?xSh1iIrdyhPXvoxhrylpZpK4ZBpCA3Cb9XMQRUtxQF6FJ3kSaj3u6OCBMKq4?= =?us-ascii?Q?gFI3zYbj1uBMNqntTgFmKwv5PhKeBQOWpDu?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:EgqiFOPjZDMYbjBXlC6PdbU7AOXWCqcIGjm6X6mX7Q8917m3HvAH5VB5r3ytNwMby+0yxEaWkwSzwH9HNZLtg85oGYQmKy39iOHuRC3th1pvF5/BE9qJcbcFHNWIRsfcj8aGCTp4XNkMw5Na/JTlyLQPOpf3RIKQ/Q0WlXyZubvccmpGbrcWbgUBHt8oNn5QaphfF6QlKBg/Y8QfquH5bBaLIODvkHnnmdTYHn6q3CanCV48tOpQw4pHv964lKVU4AQhfe3NV6IKyZ9CLsLKYXRftci6ZxwZ5w+FQDEiB6UKNVOPMYsl64FNnryiQGb8ILCCMdJPr8wGQ2r758tx+w==; 5:Wvol6Hw1vVjDqs5x3zEKDyorJR1cakee9zX7sY+s/NjS/6YCETP1YE7E/y9Tk7ngeWkTbH+vq+0+OGyzxCTl1hEHxhgUmdcVQ95vh7h0v65ngefb8/bJYfAf9Djm9xIkJBsdMDz8B2cNkOmbrDbYwr65PTt2DYgXPmLlVDJN4P4=; 24:9to6dfQZDX5g9gnAFieZGN3Td2tWlTYpQaNiulkSvfBD0DQQ3Ws0QmlymzFivZBhyTizCzEerlRDrnbHaOwzLUUEc2794rXnQtRyg9YcTj4=; 7:pM2Ij+voGaJ0v31IMM1b69CarUNr/2ieyxI32iwSEQvaX9ZEBrBY/HDK+mdcTPGLInP9xrYbKsQgu6WiCjK89vrQaXgHf7GiC1BxLRLVIT4gBmgVGTgFQTuoyUv6fh0LfMsr2zj/yTpG36as+Yq4vtB2quf2lKTlmH9V0V9FMu13BTBRlKnkMqV7FUdchI50o+I8aWtfjVFW1Da5cMfVD9J9UbQMfnVLnBSoHazcfgs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:dTuwDgZzxT+FVMxmIZLJVmwjKQAsX1UEhQDJsti+QSCqzqw5xqI5+68arBd3f+9+zH1lkUlO0LA3zuXyNCVJWrce9D6V+nwhgr3pjlxNpYj8QfXM/hoUQVs2N2sASyDdTDmjwS2nwdKsMXwIgc4hxJSETEbXS2k0f1ZdkpIGj35i2nj4LOl0YimGc6Ehmgjd6P6f3wOWJ7rqku/dprD+ztfG0ckNSIZa6r9FydO9xWJYPh5HaLmbIbWJXxl3rUHG X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2017 21:23:00.6017 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v4 8/8] OvmfPkg/VirtioNetDxe: negotiate VIRTIO_F_IOMMU_PLATFORM 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 , Brijesh Singh , 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" VirtioNetDxe driver has been updated to use IOMMU-like member functions from VIRTIO_DEVICE_PROTOCOL to translate the system physical address to device address. We do not need to do anything special when VIRTIO_F_IOMMU_PLATFORM bit is present hence treat it in parallel with VIRTIO_F_VERSION_1. 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 Tested-by: Laszlo Ersek --- OvmfPkg/VirtioNetDxe/SnpInitialize.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/VirtioNetDxe/SnpInitialize.c b/OvmfPkg/VirtioNetDxe/Sn= pInitialize.c index ffb3deefe00c..9dff04ce6071 100644 --- a/OvmfPkg/VirtioNetDxe/SnpInitialize.c +++ b/OvmfPkg/VirtioNetDxe/SnpInitialize.c @@ -562,7 +562,8 @@ VirtioNetInitialize ( ASSERT (Dev->Snm.MediaPresentSupported =3D=3D !!(Features & VIRTIO_NET_F_STATUS)); =20 - Features &=3D VIRTIO_NET_F_MAC | VIRTIO_NET_F_STATUS | VIRTIO_F_VERSION_= 1; + Features &=3D VIRTIO_NET_F_MAC | VIRTIO_NET_F_STATUS | VIRTIO_F_VERSION_= 1 | + VIRTIO_F_IOMMU_PLATFORM; =20 // // In virtio-1.0, feature negotiation is expected to complete before que= ue @@ -602,7 +603,7 @@ VirtioNetInitialize ( // step 5 -- keep only the features we want // if (Dev->VirtIo->Revision < VIRTIO_SPEC_REVISION (1, 0, 0)) { - Features &=3D ~(UINT64)VIRTIO_F_VERSION_1; + Features &=3D ~(UINT64)(VIRTIO_F_VERSION_1 | VIRTIO_F_IOMMU_PLATFORM); Status =3D Dev->VirtIo->SetGuestFeatures (Dev->VirtIo, Features); if (EFI_ERROR (Status)) { goto ReleaseTxRing; --=20 2.9.5 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel