From nobody Mon Feb 9 15:30:08 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 15027106575541003.0354152876017; Mon, 14 Aug 2017 04:37:37 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 57BA42095E01C; Mon, 14 Aug 2017 04:34:53 -0700 (PDT) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0046.outbound.protection.outlook.com [104.47.40.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 883D921D0A242 for ; Mon, 14 Aug 2017 04:34:51 -0700 (PDT) Received: from brijesh-build-machine.amd.com (165.204.77.1) by BY2PR12MB0145.namprd12.prod.outlook.com (10.162.82.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1341.21; Mon, 14 Aug 2017 11:37:12 +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=t0OUvlY+0NHBYeHnhh1BKX9snhqZro5fHkxO3GHNXEA=; b=om5zk1ZAdIekP6R82dZD61NJ/OHRu1lYYCAeowMK4D8cIpHVtlhS437/huUXakChESMU71JfxMho/fhWxb/eAr44MbnMD+1l7/Pz7GQHtFUmZ6DB/+LQ1VAGHWSVvVKqV4J+LqKYRnG4Ej/w9mlJKm345qqtviQgOduofjYz45A= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: edk2-devel@lists.01.org Date: Mon, 14 Aug 2017 07:36:29 -0400 Message-Id: <1502710605-8058-8-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502710605-8058-1-git-send-email-brijesh.singh@amd.com> References: <1502710605-8058-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR15CA0043.namprd15.prod.outlook.com (10.173.226.157) To BY2PR12MB0145.namprd12.prod.outlook.com (10.162.82.18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c24a384c-6a22-48e6-cac7-08d4e308ce55 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BY2PR12MB0145; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 3:gf4iDTm8Vrij18Lyabku0ujCM640bckUsEpQ/srLzCMH4kh7FRGESI3RhrZzD3WLE02WllEBPXSqBPmNh+nVJDPfjhPS6K6ziAyOU8dazMJynSuPUdmkANCfYHntRgaQ79B8NTmqOfHVztbrN1wPSgFSyQE8IsezkfQHW0e7GBVQQtTBKKos63zLZdPSqjUcaoDmRQy7qgjLl0Otmzl+joif+Jvt7KhwaPEIUw2GhkB75MzrpmuZn2h9/B29W/Rq; 25:fNNanbmwk3caLGu7a7CQsfXi8aWcFPndcRnUus+jFWxSECcSWn9motSDC/mKba3bfMAUqLzg8bJCl/RZBVwKWWZGH6uO2nlkgzon/Pf3UW6JkBK13B54sjSy3XyTcR4LO9dTHAQixuuNX2dYM92mD3VD+uVmWhBVaSs63IbKMwM61nuDiQ4zqlE+47NTQCouWcKNJnTWLnUpSqmu5km14xMx+c+eJUKNbes3sN1A6hJPYGD6RCZ5hR3h7BOQfY5zVORMp2hpw2TD63DVObfqOa1hIJJCoPJFxNhv50G3LAz40ubVLO815Ek8Lq4zw7WsQ3vnacwCLBdYzXmclEZyPQ==; 31:36XGQFiiJNdWtms55TA6xtVSdKBkyQjLWp5hbPnInYJCsAab5Y4BwSSCp8SwXZHKeJQVtXH14dX+dJk6rpiHpgzmTud4h/OEnPCG4f/JlI3fWfc+XVcwLMBHnolgt0aofaf9XHDsgRc1ek/O9IUlsz0yrZ6UAYNTMNWeAng97/f4Dk51OjexTrACYXC2vBPdm6cel8yBKLNej65E+LP9WvajzSLc8X0BlYzA4xrv36s= X-MS-TrafficTypeDiagnostic: BY2PR12MB0145: X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 20:OzZLQCZhuyr6RIyTZVExDRgJmACh1qSS4R1iEXiHk/+zhp8I7dRkjNdby91s3pKT6oFH7L6SxmP+lTHfhPKAv2TgEbLHODjVYdHaRs08MzPJMcCpEIfyWfJ1SXXBtD6CdG2XtG6GxhM2OVfCTEBfItk1mzUndKroyCQy098eI772wSiedeZswbp5+u9xzJNqX0MwzBmDPhwuaGEBDtYur8JjilxrprqpByyU0QUQrbvJImL6uvNSJJ0bfgVEVLb+CUkgso8XNc4BIcq+i5c8bzUQM+lJmOKZ9FeGT86M1cbbGuQDAKRzHELo7ZMCAZci+yuMWBeno2mbFNs+FhAi8OtM0KCCTeFFu8PzWATVJVMHGvI/s3Igtz7L4MkMT0jaMUj4RSZ4jqfPkkgaZuPz3rviY8BBq2YrxomymtsFzFvGVgPNKroBbDLmYSyMuS2DANJiXxbmkT+C1q7y0t/UgLIuI3dSCLNwLlJnQrGN9CZFWrm/2Qx8IWIZl69OoTzx; 4:VS7C5SN9js2qtpYSEXaz5T9J0JtYNU1WYM49QGaB/Zd8LihaTH/rvbZ9Zr8VHuSXv8uYW3FCtzvmE6pOT2onuLfw2ZVW4e518jKKKHOuwElgD7E1fDGE61xnbfJSet0D2ocTHF1FKk/2LeSXtjWeTJV86ULea0C6jBaOXvaOfT5pwRX0sHkLz9KHxRLBKhyY4lBJWBG1tHK5gGa5lY7nQuQFS1TvxY4dgDdEFENYqXFUQogAwP/jd7wDigSGQB2H402hseJ1qbFVjBIrVQvZy0xluogMdHhVmLIMXMuZR9hq6Ib35o/dTwZNmK1Uegk54J+AZFnh0wpogBYHVueMAg== X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6055026)(6041248)(20161123558100)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR12MB0145; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR12MB0145; X-Forefront-PRVS: 039975700A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(39860400002)(199003)(189002)(54906002)(5003940100001)(6116002)(3846002)(53936002)(97736004)(86362001)(36756003)(81156014)(81166006)(110136004)(8676002)(189998001)(50986999)(76176999)(5660300001)(2361001)(25786009)(2351001)(50226002)(4326008)(7350300001)(33646002)(478600001)(53416004)(42186005)(2906002)(105586002)(7736002)(305945005)(106356001)(48376002)(50466002)(47776003)(66066001)(6486002)(6916009)(2950100002)(6666003)(68736007)(101416001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0145; H:brijesh-build-machine.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR12MB0145; 23:tuOi90aCeTXaBUhO4mzZo5zh6nv967JM/Q92RJP7W?= =?us-ascii?Q?G9/ixLh00aw3AQbkEBLXEfDl/yInGrFuIj7JmclyWZXJlR44zeqRZ8dhkF+u?= =?us-ascii?Q?I7xJ70TUuYngLBrwjDfTxmOTWDMmEAvtDvYNb7MOp+5HEjo4NF4Pbx+WRHEn?= =?us-ascii?Q?HLPd3myPWuqnYN4e6LC0CrNDBsSXlyHGf5JzdP4sHPs0+eHrnSblv24t67pv?= =?us-ascii?Q?GD8DP0o0dmGe6Bt1ZMuuxVUTZxcg8zXwqaMGkD58r0fyvOhN5Tspm5M/fwTQ?= =?us-ascii?Q?PlXcG1OtZTOzAtit4tr9srNXisyrKfqZWbd4KW150gGQ7Wdor+PkOjoQlZZ3?= =?us-ascii?Q?eK6JWz9SaXWiftXCWUidVWOP7+o68mTi5QSJwwf6++MOSxUHnY68t+vSOgOI?= =?us-ascii?Q?yQxgDubhXfIvCq93Ee3ijmRZObBXniHacphVf3WfQpg2CdtRXZsMhgSp1Vlh?= =?us-ascii?Q?W5u0IctVKOktKHSegQzjwcP3+F9SlqdnoXZ52r+ODC3RcbF0NAJcuWwDGaLx?= =?us-ascii?Q?wsitcgQwlsTrtRsbL/ZMD1iuyzYIMKWweZtLHt/bZBqBoZImnVFwYcU0m2Sa?= =?us-ascii?Q?m7AOeXTK+ACQeUpB4raI0KL1fcIooq+UH2J8zbRFR7zsOH0IeiQAAbVU4TCy?= =?us-ascii?Q?MIsG4lwsKcdEfFYMGWFG5yDBVTJ3HqWswYIfOeL9OvQqDbtKxNFLaB3N0nBT?= =?us-ascii?Q?pCKpZsAXgZf2lLIAZidusKkL7Z/ilW1YLEPQVObEXCD0H0vONtjZJkMGiqzh?= =?us-ascii?Q?gHqlFuzfBrO3gdIcs1Y3lxSqlKy3pk9QoKzZyuI0/lLIt3qg3QZwAph53URI?= =?us-ascii?Q?8FHeXqkXWcAoMGmlRTzA+PAOm0aEYwNXsOSEcqJNJ8VucjohdWJnza9KMcHx?= =?us-ascii?Q?oXtluMew+0uD03j8sIH1ypB3Yi+g21b6JjffEjUkkCZyQOY6s5h+r/5WZ9Z4?= =?us-ascii?Q?BfyXYfxFH1X5plILS/GjSEDKzkNBTj90sRIF5/8BGm0+VAtwT70M7LrUe054?= =?us-ascii?Q?qrJAvTLd3EREk0/pNsDL39XsEYSFgygXNXTECm+Tux/giEpJxAFB+HsPmshd?= =?us-ascii?Q?EX5ZA1Z4dotxeEI+9k+xPNLaxSSiqMkxnCQzIaZmc79nfpbWuHseCYlsjYNG?= =?us-ascii?Q?yoBFaon2H14J1nXJ7zuU6FqO3QW9zvOw/VwOlgdxucFygI2gc2HFa3jXf46c?= =?us-ascii?Q?/VOxEk++JQU2xk=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 6:rC2k+cOkzdnwzXqkWTmK4Z0x7IoAEgjDEf0iJNsv4+HkzlgwZ3fyQIE9QQ2/+pJY1POPtN7yn6ChQ7mmmPi8Ddw3tStMcwVF7EkXmXXhHprpVifCVXpzcyNRE4DTdrVVg7je8U7pnpCThlmF5eGtpaT2CilVsRVXNudhv1aMRr5P6isf2M0prRatmTqTS9pL013H6T9iYdqPH9jgUT5lMDoOLeSKDWACU224ZGS8Z2LDwMfj27lD7t5XQO+84+IxqY264dnpm/faZXZ7EsvqE1Imb9QRW3BaYqkZR3JkfVaPE7qxu1ke9xp/NcRCdFvIl8hkKSFn27BBbqdXQaxHbA==; 5:zVAO4wrDwVmUHdA/HSzv/PkNBxcEnSSgX3kk7jiW/eBI2kg7ReK7hLvvamIivH9wU524z70XAUN0OkOb5JaRvIeUG0mcra0iRlOblJ7++n5LHL+/GyF+qlb4EfBrmQ98h/AHLgo9rUpj2lRFJ/wsEw==; 24:BY3fFGDJg4WVY88FgQ64PctL7fUqSBd0IpaWDCRilWdTH/zvAUUTdZtPTvx2rKl5Am7bxviaY2fPeyCSPfpHjDp187uDb0uCxRkTEX31S5Q=; 7:Q0/bi7s5DnTf690bDf4tB6LflKXLMKImlVahxs8bG+pv64ZwiVtUFv82QKf5fgJ5BRO1OSVZBqRqKNbGlrYz1/unyppZMWnEAbXuI6ZJ0+hDoDCEWcdLEeGxYejEdz5JM5QTI984UMcI23lwpbEgom0c68H58evV5zAd7JPN7ftvm7ih7OV8kB/tSuylaWpBB5IfBSvvZes23HVO2L9Yxm/6JKpXvUvKyXty9pCBs7Y= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 20:IjhyE83s2QLnGzXxx0QPosGryqFhCaeuwHKMBKMl5Wz7Gc/Zvo12bT98USe48K8r6E5soRYil68/wItfXJlxtxLW0JR9xWOD5PQd34hCMsEj7aIAxqbycWQkoBxrXcmaVAeEkWetsAKT15I771hWGJBPU4hQHdFWDAyEyzdGgjUj4Srds+8TF5k0nmicQf6brDiJ/QBzXzaDf0svVGwBmRgcL5b3p4vcfAaTtWOXs7h31h0rdPEZ8AXiVD89vI+Y X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2017 11:37:12.0961 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0145 Subject: [edk2] [PATCH v2 07/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 --- OvmfPkg/Virtio10Dxe/Virtio10.c | 121 +++++++++++++++++++- 1 file changed, 119 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/Virtio10Dxe/Virtio10.c b/OvmfPkg/Virtio10Dxe/Virtio10.c index 43dcfd7cb2a4..413ffa06cf35 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,7 @@ Virtio10BindingStart ( goto ClosePciIo; } =20 - SetAttributes =3D EFI_PCI_IO_ATTRIBUTE_BUS_MASTER; + SetAttributes =3D 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