From nobody Fri Dec 27 03:41:50 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 1503490989732107.8097467257985; Wed, 23 Aug 2017 05:23:09 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A7F8821D2E646; Wed, 23 Aug 2017 05:20:28 -0700 (PDT) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0072.outbound.protection.outlook.com [104.47.40.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 7D37F2095B9F4 for ; Wed, 23 Aug 2017 05:20:26 -0700 (PDT) Received: from brijesh-build-machine.amd.com (165.204.77.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18; Wed, 23 Aug 2017 12: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=jXyNXcTomLuFaOFpl2SIr8bcH3JRcPUc5li8DCu6M0Y=; b=KoSPpdVs6rx4ayHs4mzGznU54d9G0kiV55Obkl/zaitIBZYLvK8Gabmf6f3bijz6er5HjmFkC1GbdRWBAR17po7XEkLvhVDuy7TjTRBgExM90ciEcYwmO0hE3D9fjHTz2OwSBHBIGYtcdYydOLt1qgEKmzZAN0MwlgednnkrgA8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Wed, 23 Aug 2017 08:22:26 -0400 Message-Id: <1503490967-5559-3-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1503490967-5559-1-git-send-email-brijesh.singh@amd.com> References: <1503490967-5559-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR12CA0069.namprd12.prod.outlook.com (2603:10b6:3:103::31) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1d56a2b0-3774-418e-bef7-08d4ea21b0b5 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:CXJwAGj31fiN1+FTYQmOgUB+ZSnEbELB6qDmCshnZlAcKWXwDcAR5GnFE75x41IanVBldc9w4lyDNIvSTpcRRuswg1jLBWxKnzEmdYS29kZbvpAMuu42edZpxrpYRn484WJq9ibMc5hm/q2sZ33hXjEqxqvDrA0luWjEdJz3/OzCWI8GR1Dy/yfiQ05qzp2jB0HQTJXW1YGdo7HKgtR9WZUb1oK6HGADsqA/EDrN37JcgWfeYUVKJp/k3DPiwnMd; 25:Okv0wFjtNSYx8VrQRno9cknbBsF462pcoDQBN9h5hZhgWJN2lQLM4J5ksm9d1pnihbAX0D5KtLbYNGDnw5+ouAgkdonCxy0dHUqExZT6wJw6Vzle27o6PV3BDZNPQuVvs4semoK0rtYW6SKyjbIVsyTE8JkFye1VeTyb6DoihyMhHvl6NmkoKDmLC+sHgxGYVowPjM7NJ7ssvBg9yQGM/UpLqtYtBg2cps+B8Ma+nPZLa/rDu5zh61KYwI6M1dhLik4g0sGqwYXksCeQj+ANlHgcY6j6TIjUfQKQ57I6na59irEdgS/5mvlsFgs25MG0TpqPbqkrHp7Ux3XXJjpmPw==; 31:VTSr5blViy8x0vYq2I8ETsAEu6SAFRJR+/H7OtqlT7iNNPsJAkWjhDqrBhwYI4MXOBypgdFQtEIwd6e99saYrvlA1x1VuaGqpFkTiWyUblquB/CsypJDnpidI7NReKvQd3kq8f0v91fqZDfR/a4l2hh0UxshmlESkXmnbCpCFFIZP9DWi/3PeOBGvG16A6FgRLeTiDd4Dp2+iKlsZrFiGRcQLW83oCfndj8iDQ19wFs= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:nUw+/2fAswe6evy1ILlum84BPtyKWpVEBOLSVKHfDEtBdG4sSt+XbNrii7gg1iWXMqdO8y6AS7ikr0NnU2qtZvECg3oS5/ma3m+aVSD7SuyKbmnjQoCyZTUPQyeFYr5R4D8XN8SVuQM9xH4TtJPLU3owh2Jd/EkQ9blTHD/ufNiMQnvJ/uKyADIzu6eh+X+c/pdLkEiskdQva4Jebh8hMjn241fxlAGJXt4nwtN4m+VBloZMZfkStq25XPaaNkkC0w8hx5IMPf9h7sylOwIyWTaythC+byR4rBYFpqMmsWuz2cr0ktKTd/j+/OyX8EDDf9kKcKQuq/gw8DI2AIGeQC/lCuRykF79Xd0vFSnKXy2kId7gHAeCs2uVmGJ640WZ8SQCD4fsWVFdknMCC9V4c5s4FHH43TUMJoCdJEb9NuYF1pPeOmJf95mULavgMJ1VzhAgjSrwH1xPHcMRAwoCm0K9DEkJM/BF0BtJHlJOnYv9JFcLrbSD8bYwkc0BbfkH; 4:l+7h8BHajPcJMlfOFfJWgK+YmHv+9t4m5zVDHSUMjYEP8x8WeDZMPyIS0RXZrg8J2Rars4U7vLTGZSuWEmWiUcjsTKZWVwFO7f71VTC4aSdSxzZ0BLUY/1q6h9eQ38scVFTUerq/Phgpxu07/0RqQCAeueS4XuUftt/WDoRXaJKqjAIxmcJ1O4vDV5TmiOw1J9XTH2n0oL2csEYJrSov7iyuxe1w9lI1Mk9HSXAKiO7qYTyJev1EycE9a6ryyHyMokICIHc/7yXLv93LF0qtlGt2dcawNWbpUA5Ge5NIyZ48AdyTvnj0USdVjnnDpmj8zJd4klhQzoWbQYBpQlkD/w== X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(6055026)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123564025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM2PR12MB0155; X-Forefront-PRVS: 040866B734 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(39860400002)(189002)(199003)(305945005)(47776003)(97736004)(101416001)(110136004)(6666003)(189998001)(478600001)(7736002)(3846002)(66066001)(5003940100001)(6116002)(6486002)(48376002)(86362001)(105586002)(2950100002)(4326008)(106356001)(36756003)(6916009)(50466002)(2906002)(50226002)(42186005)(2351001)(33646002)(53416004)(25786009)(7350300001)(81156014)(76176999)(5660300001)(68736007)(54906002)(8676002)(53936002)(50986999)(81166006)(2361001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:brijesh-build-machine.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: none (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:axrQ57j4sdhuDTn1vC+VTgDACY+ilJiyNbQ5jHPez?= =?us-ascii?Q?GWlLjxVyTM57DoAfe/435JF/npw9HAk7lj1CBZnV+f9ZvmOpfMAL+1FHOjFy?= =?us-ascii?Q?O+jTQ/sD834ZzpAxsIbCxhVIsgR/eLgfO4P5xeCALYddx8wz6iGrjPxRwKqs?= =?us-ascii?Q?xhiuVbaqIIcEUFmV5h+K1EcRpgBzHDQaS8uQnX0WiZ9G/zoySQgtwYz2kg2X?= =?us-ascii?Q?FVK8Icw5dZXony+8FmuoDzSrLe9rM+gFJtlmcaTvWAhCAI4rJir2GsN/mF4h?= =?us-ascii?Q?6SE/ifPINfIvqLv10NFFLKIz5lYGCmSyfZhJB2ouesu3uHYMD9ouecHn1meo?= =?us-ascii?Q?sYkajQDROsG1zp3xnA2MXJ9nAOis4CvxdnXMtwbRFbGr1r+dKzwY+PyiGSou?= =?us-ascii?Q?yJnL/g6JQCBX7zMxJSwjt0D7CUcaYyFT+JltWMBdWrj4/QwxmwAuV2WDN6NR?= =?us-ascii?Q?BMR+7eK1u3L+kD34CzYOe/nhvHV+FjTkOrhWJ2VOkXlo4hIkdPYmZweVVams?= =?us-ascii?Q?HZ+BFulLHEXorKZnaWLMrdmIikiPDU6cgkQiFoD9vVry7972YyLD8xS+Gfh9?= =?us-ascii?Q?Byk+oAljev06y7dp/uc4nCat0u7GORP+9MtN8O17IRoE58J4yhecIFb61gNS?= =?us-ascii?Q?R8fKRabd3IEUkyHxltJjCZjCAEsUOCuiAtHwErja3TUBDmAqVpQykpaCNdpS?= =?us-ascii?Q?Z1vE9WC5wGclZaGdDC8O2kTABsdO7BO4zoDdjTcx9VVw6f4i1K/vg93blLI5?= =?us-ascii?Q?+PiV+tRwHRsgpFNYvV/QP9aksAT2up9EczvbMpG6jdXSoMjCUvRoT3BaHfCn?= =?us-ascii?Q?WhvRq2aUYNyVdXx1RrvvabrtHn2b/yaZwRtiVYWWZrwR4XouRXP4urXzNf3K?= =?us-ascii?Q?3U5TvBfaZ7ETtA+xqZTCRzHSaCET9WZr6mJLrn8TQJLJwY1ApqK9JO9m4NHa?= =?us-ascii?Q?gG9dQEdKnHWQUhGDKJRrORG1iXgCEmQUnrodqhvO+DZbjGPyZBlBm+45rs1G?= =?us-ascii?Q?RXSqYK5YtXLT54qutPdM1rRzXwejt4/tfVZMtLIUsVjcQbFQtuLP+Yuu5sso?= =?us-ascii?Q?5O+NfmEvvKw+E8QpBy2Ks1if45s9fBArubMgF+SL9z0imLB6ZSAPDuy023Ea?= =?us-ascii?Q?j5hOLkrREF6DkzC0Z9kcqx1qJQlCB5zUIKz5Vefch59hiKuN35jZ4kXWZnW7?= =?us-ascii?Q?op3X9N/F/8eXAk=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:2SgiRFdEkja9NV6wvU7m/dS9GRcqrNycd0n8UoN5Sf1ZRnDm4wm1qVPy6sg8dNAqYJnWjWA9DWZFzBXrWfXdOMpVS+ju7cnhKTWt8GIWhiTfEBmi6JYUcQA+7ygwUz7d2lWP1cDsItMR1Di/Ord5Noxh+frRUNV4dQcBxmOiZTAQHdsOQGHBwi/fC4PVbsPixftJLNAN5PJMti7Gesuh731cne/YYwOedHnURjOzA6xq5h3oGdXimjl4UxJQglgpj9zDZx6qOVpTFtJwzh8mAc3kPGCxPW2aVz8G/60WpFm3CD5furPT4Tc8EpFeJfINLaTnpXRivTkW08/w1UqhGg==; 5:vh09pk6Og3lt21AFABrBALfy6iCdsqpLPo1frTEX/yM28BY0qE+jIGFozPLqus2pDiuqz/ISk8TT2hQra7qwA8nm7ep/aiHE05FMumzKpJ/tWQXuVgv7RGFH5EWImMfCs5j6RF3SqEhuaAbPPm3kzg==; 24:qZa3Z15RUH9y20VOjjATGquoeAq46PSbj9uoVIjD2n6LE3tdNffoK+Dca8E5SoEVX5/+m88u9H0fCrxaW/kQweBmVP3XpSxIAL0v8V1cZOU=; 7:AS2854Q6wNb9K0QIp6G7W7dkCP0CaY5/jcyU00m5z4NXWhMZRmadDPjXNmBFPvaMaqlYne++GbBb9Dt+9QOR/hw+GL9zYGcruoO2Ho2iWx3X6uQe1YiwmGA0wRwQtubaLmZB2JjWB0WgxuVWag2dMQO1tIoCBZZsw3IsRuBb5+yxTgXqiu9sKXRgc7b62biJrCTsu6EK/faeFwMz+J6QV7kLnnjj0x+BLwgF8sO+a4A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:NdgXPlt5YSWemN/K/iCN/IudPVVakhekBYLZl9aMv7lTPYwaPM9MbQnnS1FWBqGA9/JCVlTi0lDIx4l1nJuUV2neXOXnJ/3ioo5+7zq82cIhHEnrGZByoJVrkozeSC41pzehD5u/38yBqboHgC2eu3nXMRVsE7DsTx2O7KlUPe53zUIDZoaiP6MbVJ13PtdTPbmDxteHiT7fihWPFu3lWd2qL/DEXf+VwVM1VaUphNUe7J5e9r8aJAP4DSwe0fMc X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2017 12:22:58.3885 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 Subject: [edk2] [PATCH v3 02/23] OvmfPkg/Virtio10Dxe: implement IOMMU-like 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: , Cc: Jordan Justen , Tom Lendacky , Laszlo Ersek , Ard Biesheuvel Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The patch implements the newly added IOMMU-like member functions by respectively delegating the job to: - VIRTIO_DEVICE_PROTOCOL.AllocateSharedPages() -> EFI_PCI_IO_PROTOCOL.AllocateBuffer() - VIRTIO_DEVICE_PROTOCOL.FreeSharedPages() -> EFI_PCI_IO_PROTOCOL.FreeBuffer() - VIRTIO_DEVICE_PROTOCOL.MapSharedBuffer() -> EFI_PCI_IO_PROTOCOL.Map() - VIRTIO_DEVICE_PROTOCOL.UnmapSharedBuffer() -> EFI_PCI_IO_PROTOCOL.Unmap() 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 Reviewed-by: Laszlo Ersek --- OvmfPkg/Virtio10Dxe/Virtio10.c | 122 +++++++++++++++++++- 1 file changed, 120 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/Virtio10Dxe/Virtio10.c b/OvmfPkg/Virtio10Dxe/Virtio10.c index d7ea4432bcb6..89ccac8c1c04 100644 --- a/OvmfPkg/Virtio10Dxe/Virtio10.c +++ b/OvmfPkg/Virtio10Dxe/Virtio10.c @@ -2,6 +2,7 @@ A non-transitional driver for VirtIo 1.0 PCI devices. =20 Copyright (C) 2016, Red Hat, Inc. + Copyright (C) 2017, AMD Inc, All rights reserved.
=20 This program and the accompanying materials are licensed and made availa= ble under the terms and conditions of the BSD License which accompanies this @@ -15,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -772,6 +774,117 @@ Virtio10ReadDevice ( return Status; } =20 +STATIC +EFI_STATUS +EFIAPI +Virtio10AllocateSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN Pages, + IN OUT VOID **HostAddress + ) +{ + VIRTIO_1_0_DEV *Dev; + EFI_STATUS Status; + + Dev =3D VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Status =3D Dev->PciIo->AllocateBuffer ( + Dev->PciIo, + AllocateAnyPages, + EfiBootServicesData, + Pages, + HostAddress, + EFI_PCI_ATTRIBUTE_MEMORY_CACHED + ); + return Status; +} + +STATIC +VOID +EFIAPI +Virtio10FreeSharedPages ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN UINTN Pages, + IN VOID *HostAddress + ) +{ + VIRTIO_1_0_DEV *Dev; + + Dev =3D VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Dev->PciIo->FreeBuffer ( + Dev->PciIo, + Pages, + HostAddress + ); +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10MapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VIRTIO_MAP_OPERATION Operation, + IN VOID *HostAddress, + IN OUT UINTN *NumberOfBytes, + OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, + OUT VOID **Mapping + ) +{ + EFI_STATUS Status; + VIRTIO_1_0_DEV *Dev; + EFI_PCI_IO_PROTOCOL_OPERATION PciIoOperation; + + Dev =3D VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + // + // Map VIRTIO_MAP_OPERATION to EFI_PCI_IO_PROTOCOL_OPERATION + // + switch (Operation) { + case VirtioOperationBusMasterRead: + PciIoOperation =3D EfiPciIoOperationBusMasterRead; + break; + case VirtioOperationBusMasterWrite: + PciIoOperation =3D EfiPciIoOperationBusMasterWrite; + break; + case VirtioOperationBusMasterCommonBuffer: + PciIoOperation =3D EfiPciIoOperationBusMasterCommonBuffer; + break; + default: + return EFI_INVALID_PARAMETER; + } + + Status =3D Dev->PciIo->Map ( + Dev->PciIo, + PciIoOperation, + HostAddress, + NumberOfBytes, + DeviceAddress, + Mapping + ); + return Status; +} + +STATIC +EFI_STATUS +EFIAPI +Virtio10UnmapSharedBuffer ( + IN VIRTIO_DEVICE_PROTOCOL *This, + IN VOID *Mapping + ) +{ + EFI_STATUS Status; + VIRTIO_1_0_DEV *Dev; + + Dev =3D VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); + + Status =3D Dev->PciIo->Unmap ( + Dev->PciIo, + Mapping + ); + + return Status; +} =20 STATIC CONST VIRTIO_DEVICE_PROTOCOL mVirtIoTemplate =3D { VIRTIO_SPEC_REVISION (1, 0, 0), @@ -788,7 +901,11 @@ STATIC CONST VIRTIO_DEVICE_PROTOCOL mVirtIoTemplate = =3D { Virtio10GetDeviceStatus, Virtio10SetDeviceStatus, Virtio10WriteDevice, - Virtio10ReadDevice + Virtio10ReadDevice, + Virtio10AllocateSharedPages, + Virtio10FreeSharedPages, + Virtio10MapSharedBuffer, + Virtio10UnmapSharedBuffer }; =20 =20 @@ -906,7 +1023,8 @@ Virtio10BindingStart ( goto ClosePciIo; } =20 - SetAttributes =3D EFI_PCI_IO_ATTRIBUTE_BUS_MASTER; + SetAttributes =3D (EFI_PCI_IO_ATTRIBUTE_BUS_MASTER | + EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE); UpdateAttributes (&Device->CommonConfig, &SetAttributes); UpdateAttributes (&Device->NotifyConfig, &SetAttributes); UpdateAttributes (&Device->SpecificConfig, &SetAttributes); --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel