From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0057.outbound.protection.outlook.com [104.47.33.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B0CA321DF37CB for ; Mon, 7 Aug 2017 04:57:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=NU26z/guiW9xkne2GabWR8IPa/z25YxCjB6YXO+1Ugc=; b=o/Zb/EB3O+c07kGRfDsb2NGhFfvgYauaie10djgE4SmW796IlT4hLahjUx+We7xEcWLaPZ/8EaxEEXKBEHdXC7PdUC4jD7AUU0PovCT7Ouf3iX+fomgBPmynidu0Nn3VrgXH4cB/2InoV915E9vyrNtKqiTTK1699z71vFoDMbo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from brijesh-build-machine.amd.com (165.204.77.1) by SN1PR12MB0159.namprd12.prod.outlook.com (10.162.3.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1320.16; Mon, 7 Aug 2017 11:59:23 +0000 From: Brijesh Singh To: edk2-devel@lists.01.org Cc: Brijesh Singh , Ard Biesheuvel , Jordan Justen , Tom Lendacky , Laszlo Ersek Date: Mon, 7 Aug 2017 07:58:48 -0400 Message-Id: <1502107139-412-4-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502107139-412-1-git-send-email-brijesh.singh@amd.com> References: <1502107139-412-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR04CA0033.namprd04.prod.outlook.com (10.172.133.19) To SN1PR12MB0159.namprd12.prod.outlook.com (10.162.3.146) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5c06853c-5f26-4d8e-7c5b-08d4dd8bbeda X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:SN1PR12MB0159; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0159; 3:m4VTUrYEYshk7YZx/8MAa7pTRdtN4v8Fel5TM+UD/v/CnLjJPJlgrIypaQcY9xnHAguGcmnZZQ4kcB8cEC+BSm07Y43ozCjOz0O/Og2VKmavkN7u6UN2pnEmrdWZFSGWNYCXGIccqH5rSNOSzOrsRtbffjjSKKOAUo67MTz5BEZhTnLKax5IgO0X/+oJy6OS3urxI6ti5zSCmevjDkCDfKLIzADPftkJzPhnZStJ54/e6BgjnQo28/SYVxAD8HiR; 25:6phf8VX4LLEynAzUZcz+OZSgkWNh42DZKw+YnN7NhNE1KogWhDgLXONetV9mMLh6SdLf/1BgFYlcPHJ3S4a93zurXElcEOlbM3wubewrXcKdEn8awF7zIRjn/fGnOIlbVE1raSpbbiPf6L3lf3lSBXPJx+OSW2MGrieAp7edKXsVbkEMonaEh0LI4TSofDy7aMoFeQEebLwIGtVfTr7A6/wOnq7JYvnZK9YY5PFmiT3QkLA79XR2WIQXNucnmoxvcyuqUheZDOqLrT787MzR/2RwkbVZ/FZLw4XinAyIH7X54NqNK2YWtnlGdn6UBtDNmSDlwoHnilqGhlC06zIc/g==; 31:mBUsrZ3XCIPgiQjyiKVchgm5rmXpoWmpZQRmXDZ7G+05v85rSk3WB5ZWn2LAxmqWQ1L43i+SJTrtEoAHjQak57LiQxEnZ9/2JO7AEdgX8Cf8z3vKpEidmms8sDLZ0IKRvQxyirvpEk65dGB+Y7whj7BEEMolODkeZ9KIjCh9zuP96ra9kSNI+oVL6ma3qWUt+uvakar4qjLPGbeWSLJxdFnzeHzwGG05yb72UC5QxJw= X-MS-TrafficTypeDiagnostic: SN1PR12MB0159: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0159; 20:xa7Y0tEgaiLKwMR9PID9N6FkRcOwtapIea/V8qlXjjkbtXrGnfTC6y0AQ0eQDsCk4LBf/mZa/iNhCid1Z4o9hDC1mbgGrK9jHDdXFhyz10RGjPxpsHl1XK3QMbIjWaxP/hRnOmqeCTY+oRx2FZSyqsRGJHkEb4OEuLvhKy4nieuvBGj1sc/0BVb7zZp/VCueI7HEBVGeN0XA4cbTcjP+hs30yGTD90WEMOwjgdmBv6prQL1xFIP3bSLxSTfMTvHzVicGWfzt30RZDMRd8khev7BkR0kDJkQHCkmpsMni2HrcXQCPij8nVVbiIk79EF2eK5uRbhFj9HArfRDBkhKRBW4hgGHHgd3oLCf4FIazNvdmFhACJ6NvBGlqCXOA+HGmVkfrwxXvy6/iSQZyy6Vh8AT8lFMddkycHpPz4EuaCjxXXBrbsNdpG1dNUSssl9UdpdtvLhqZfPyZ7s5Z8I8F09j1fCyxLDrILGDdLvNVQnMJCEL6W8+PQFenrclKVC9v; 4:R9MZjvZrPU9yUmZHB2AYjn7r9EUVbn7SUV8qNfr7X6buYhArOGFXLYWozGxGpeKUOCO+QEHd/WsvVfuvKGWnAB+zBl/4xzC61maxile/FFQuFUbGwJkyP+QD/wjLXpWquuxMAephY9ljmAzbOPC+Bsr59yFhsR6AL+dUv7YaVhMN2B6j1VCfb30ZtsyI8hBdIM16ZWZTek9EevH2nyc2xGnrETdR7OHppGd5rIjKjKevsnNuCulsNbv1t67nSkWoKy+9HemAMuZ9qcBpn/Ml0Kp6X8/PP8zo/R82NrgdOe0RgyWFG5jYNPPvwuLXpbmDbOAYTwYuvjJeykCjUfCBEw== X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123560025)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN1PR12MB0159; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN1PR12MB0159; X-Forefront-PRVS: 0392679D18 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6009001)(39400400002)(39850400002)(39450400003)(39410400002)(39840400002)(39860400002)(199003)(189002)(3846002)(6116002)(5660300001)(81156014)(81166006)(54906002)(8676002)(68736007)(50466002)(53936002)(53416004)(106356001)(2950100002)(105586002)(2351001)(42186005)(86362001)(6666003)(5003940100001)(36756003)(189998001)(33646002)(6916009)(97736004)(25786009)(2906002)(478600001)(110136004)(47776003)(38730400002)(76176999)(50986999)(66066001)(4326008)(2361001)(305945005)(50226002)(48376002)(7350300001)(101416001)(6486002)(7736002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0159; H:brijesh-build-machine.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR12MB0159; 23:pm26TtF5lJdK4Y3Feri9woJf4eMNweyUnXSI12UiT?= =?us-ascii?Q?yhcF2OLKmb+nPFc2EqKAemjgz426PMB8QCDhXtQXCqVK2MIV9+iXJr+/jaOT?= =?us-ascii?Q?DcOcH6cLNzWhzUIhWMwagx53yNd9TzlyrszRRwFEA95Pz6UXzjR+ckkPYBJL?= =?us-ascii?Q?YBJ4Vtiop54WYbwZA18gPFfhpAgmRENBqnJBh//OrqzEuLkK036VVx3+2QWA?= =?us-ascii?Q?FJTQTEQB+AojD6VRrKENY6HjEP3TpEBlsff9C6IcGPh5lC/r2DGp2f4OiWOE?= =?us-ascii?Q?tH63v6l3J9DvaBbWHV2tMtmjDz9XHutT1xrrkOIW3aBjDtMPNyzPml1ezoke?= =?us-ascii?Q?5cefwdXKy0dPex3oqzsKW/ClykPHBWFEq3AWzGfyhuZvWLTcUU1NXWfZU1sw?= =?us-ascii?Q?boBzfE5OfMgYVs0ArxiRx/qljZKIbbRqiOdf2vppme1hRgRw60XwIv/ucUqF?= =?us-ascii?Q?ljhuL7Bx7RZ/dzXb6vQmnJuwlScOztuE1N+UZQr66zCB1dHpK+uJiTp5e7M5?= =?us-ascii?Q?jqDlgUvHFelpjpbm3UdJa9/aMu62SWxiqZ6tsDjVm3O8tBNyer8W3rtj+e1a?= =?us-ascii?Q?L+IxTsRXNSxrdz6qS5SUqfqmidJPVLqw5SCQWuu6IkHDw8bwP471wPPcZiYm?= =?us-ascii?Q?FfHCj0h6HYOrHHKDjDvTJnRlcbZDQd839l/lcVJzfTplaZ3Vxkn0Rz7Yrjdr?= =?us-ascii?Q?Ul1q8HHTiK4xaAfKFCYnJAUOWfCAP9qGYLGRuJEs2y2J6jKt77aJIckN5c2P?= =?us-ascii?Q?72lB6nqExgKAL0yq2FVSv3P541i9V4ODsd01eC6ssvCZPK/a6g7RNCCzBWeB?= =?us-ascii?Q?kXq4FlGu/OBrufwW3dleoC3TFSqHvC1hfyNZqUr0iaOsEnCuwZFXp1ZTlPl5?= =?us-ascii?Q?1q1Wdnx2sL/lHlqQN7Ptf08JYNjll/RUvW+XeqVy4CWBgoS7ggQWdDGnfLyw?= =?us-ascii?Q?J6hLqki9+j7AomcxiDTYXPTSntNRkX23O9ZfSM4TNMFHtnVTAQpw+Nq1dvfT?= =?us-ascii?Q?cj38JZMZVH+sKyyYHVLzc7wnEBbH9E0Yc1k1HZ5QpsUQ7T7qjZuRtbMjfNlP?= =?us-ascii?Q?uZDWC+3R0lGpDg41JBGPuXmOlhGJAqpuNeuUYehxWgwaoEPoLlbJxft2hHCN?= =?us-ascii?Q?2jMCB9O51L6rt2RFi6CrQM0XpGVLDea+ScXEZmnIHOLYl5D3fcoKVsOAiVR/?= =?us-ascii?Q?7MGnf6p9EjDAD2iw4oztbpYaEl2pyhNwwpknoIRO04YHATdn7r03MEIkmuj2?= =?us-ascii?Q?ouEGzDT4MRNbjEQr50YczYtIAbXfyVVhhVjfcnLVuqtkQJUZz0LwvIMtTlS5?= =?us-ascii?Q?Kfo0m4f+RrI6TZ78yw3lrw=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0159; 6:RQamcfc0L1IPxyUnry7W2iZ7bwZ8njIOU5gYMZ6zafa5x0l3kcI4IxmDofScGuOyssGiTHVAZ+xxT63ZFOsbVd9egVRbw0RVpadPXbDBEdAeHUJQJ1R1e4cjcbd8wF6WlJdLaXvMcZx/8cq02MBp2uHyIN2/aUxeCH/6iJ/MBHtahBGvLa1UenNS2PtAXiKg4L9v+EeVbk9yQXNgRbN9vIb7huohPov+d1ny1bL2L+b1ZLSe3N/YHzpfxUae7Ys34VHuiLwW9yFatvvJu7dSUAXBXaWt8YxuaAq1IYRKtq257FcvH1BypVz5W7NqoIcHIIp2ikyHzqBHBU+yas3TfA==; 5:qEJZj4ieLJ36kUUASETemNfdD0NFtR299ghp/i/SxXQVOPnyPTM9v2dc/bB/SfVkHhbgkTV+46FiVFH067zSkMcUKelPnJjGzh2ICs0inBeNvT75Jv2/iPM6uL3cTyhpAXd01tMDSuTxJcbFaudW6w==; 24:cqm+V7U6dnk+MJ5sWr0irHzA5AfuJtV2m0RAn1NUEV7u8IriE9/keDh60dMGTvJ3RzPsxqdzaPu3nagjRe/C4gg9F78yaPScMsKEQkd9wts=; 7:rf7W0dma9V1F0YoXkWwegNR4Pf9l7X81iyMdpQwYqq7jJ7MsXiSJlxzXCRL70YBgrQRR4Ve3EV1ACUUPdPOEoRBHDd7H454K0AnQnnOUgsGu7Dn/JjSL5pmy3czJvuxECMcHSt/KbbBvWdzOrAWHEFoTELBuzJyu2jwfcssPmW74ugZuvjpmANhjtY7lUgNKBegb8nkN7zuyVSHmt4D/hfeUcmKFklA3ivXYd70YiNg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0159; 20:DEvyOQ2HUbNoamAD8cfQFXSD3p37egpVlvxtHG5+o1lHZzYXkuuY4905wTd7wNqABOV1EYXzmQERGfKVthyPX2swYYjags1W9/QGarI37Md8Vnd4WHbGX0nXKaGVGG2iGKERopL9fHtULUxLJZrQs/2DHYbzN3In2Ml8pcSl17yK/IfIR5dlodDWhbfYAM0gtrshiMhAH4ZGd6ZGGWe6ZH0u+UbRzlI40dhd+EkF75AGtEnXyV3FZJGCVE69nWKD X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2017 11:59:23.4204 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0159 Subject: [PATCH v1 03/14] OvmfPkg/VirtioPciDeviceDxe: Implement new member 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: , X-List-Received-Date: Mon, 07 Aug 2017 11:57:09 -0000 Content-Type: text/plain The patch implements the newly added member functions by respectively delegating the job to: - MemoryApplicationLib.AllocatePages () -- with BootServicesData - MemoryApplicationLib.FreePages () - no-op (host address is same as device DMA address) - no-op Suggested-by: Laszlo Ersek Cc: Ard Biesheuvel Cc: Jordan Justen Cc: Tom Lendacky Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Brijesh Singh --- OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h | 34 ++++++++++ OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c | 7 ++- OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c | 66 ++++++++++++++++++++ 3 files changed, 106 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h b/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h index 8f17a16c88f5..da98de123000 100644 --- a/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h +++ b/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h @@ -3,6 +3,7 @@ Internal definitions for the VirtIo PCI Device driver Copyright (C) 2013, ARM Ltd + Copyright (c) 2017, AMD Inc, All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this @@ -156,4 +157,37 @@ VirtioPciSetDeviceStatus ( UINT8 DeviceStatus ); +EFI_STATUS +EFIAPI +VirtioPciAllocateSharedPages ( + VIRTIO_DEVICE_PROTOCOL *This, + UINTN NumPages, + VOID **HostAddress + ); + +VOID +EFIAPI +VirtioPciFreeSharedPages ( + VIRTIO_DEVICE_PROTOCOL *This, + UINTN NumPages, + VOID *HostAddress + ); + +EFI_STATUS +EFIAPI +VirtioPciMapSharedBuffer ( + VIRTIO_DEVICE_PROTOCOL *This, + VIRTIO_MAP_OPERATION Operation, + VOID *HostAddress, + UINTN *NumberOfBytes, + EFI_PHYSICAL_ADDRESS *DeviceAddress, + VOID **Mapping + ); + +EFI_STATUS +EFIAPI +VirtioPciUnmapSharedBuffer ( + VIRTIO_DEVICE_PROTOCOL *This, + VOID *Mapping + ); #endif // _VIRTIO_PCI_DEVICE_DXE_H_ diff --git a/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c b/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c index bc4f6fe8bfa3..4e4e21d9a477 100644 --- a/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c +++ b/OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c @@ -5,6 +5,7 @@ Copyright (C) 2012, Red Hat, Inc. Copyright (c) 2012 - 2016, Intel Corporation. All rights reserved.
Copyright (C) 2013, ARM Ltd. + Copyright (C) 2017, AMD Inc, All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this @@ -40,7 +41,11 @@ STATIC VIRTIO_DEVICE_PROTOCOL mDeviceProtocolTemplate = { VirtioPciGetDeviceStatus, // GetDeviceStatus VirtioPciSetDeviceStatus, // SetDeviceStatus VirtioPciDeviceWrite, // WriteDevice - VirtioPciDeviceRead // ReadDevice + VirtioPciDeviceRead, // ReadDevice + VirtioPciAllocateSharedPages, // AllocateSharedPages + VirtioPciFreeSharedPages, // FreeSharedPages + VirtioPciMapSharedBuffer, // MapSharedBuffer + VirtioPciUnmapSharedBuffer, // UnmapSharedBuffer }; /** diff --git a/OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c b/OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c index 243aa14c2421..1c587e184311 100644 --- a/OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c +++ b/OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c @@ -5,6 +5,7 @@ Copyright (C) 2012, Red Hat, Inc. Copyright (c) 2012, Intel Corporation. All rights reserved.
Copyright (C) 2013, ARM Ltd. + Copyright (C) 2017, AMD Inc, All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this @@ -271,3 +272,68 @@ VirtioPciSetDeviceStatus ( return VirtioPciIoWrite (Dev, VIRTIO_PCI_OFFSET_QUEUE_DEVICE_STATUS, sizeof (UINT8), DeviceStatus); } + +EFI_STATUS +EFIAPI +VirtioPciAllocateSharedPages ( + VIRTIO_DEVICE_PROTOCOL *This, + UINTN NumPages, + VOID **HostAddress + ) +{ + EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS PhysicalAddress; + + Status = gBS->AllocatePages ( + AllocateAnyPages, + EfiBootServicesData, + NumPages, + &PhysicalAddress + ); + if (!EFI_ERROR (Status)) { + *HostAddress = (VOID *) (UINTN) PhysicalAddress; + } + + return Status; +} + +VOID +EFIAPI +VirtioPciFreeSharedPages ( + VIRTIO_DEVICE_PROTOCOL *This, + UINTN NumPages, + VOID *HostAddress + ) +{ + gBS->FreePages ((EFI_PHYSICAL_ADDRESS) (UINTN)HostAddress, NumPages); +} + +EFI_STATUS +EFIAPI +VirtioPciMapSharedBuffer ( + VIRTIO_DEVICE_PROTOCOL *This, + VIRTIO_MAP_OPERATION Operation, + VOID *HostAddress, + UINTN *NumberOfBytes, + EFI_PHYSICAL_ADDRESS *DeviceAddress, + VOID **Mapping + ) +{ + EFI_PHYSICAL_ADDRESS PhysicalAddress; + + PhysicalAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) HostAddress; + + *DeviceAddress = PhysicalAddress; + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +VirtioPciUnmapSharedBuffer ( + VIRTIO_DEVICE_PROTOCOL *This, + VOID *Mapping + ) +{ + return EFI_SUCCESS; +} -- 2.7.4