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 B0A5221DF37A1 for ; Mon, 7 Aug 2017 04:57:07 -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=dIv3D5qP9YcKMGCeJovAdyezF0xZPOjdQbf9NF47sTc=; b=i5J4UA92pIa6uuorQGdw5jG4d3XeZvWyt7mOws6AZOiYDNsAvsZeCYkYjGWMe7pxCbB8nUFj1rmJczQ+x8yr+4tOmQeHsR2VMLegUzX3e/nc7bSGkjkFXBf8FWOx9wMaHSdOvPIpm/55APCKSYU7pa04+phCEaqwrWj57gxpzKM= 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:21 +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:45 -0400 Message-Id: <1502107139-412-1-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 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: 024e470c-0b3f-4871-fc12-08d4dd8bbd93 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:pV00Gcxq+lm8Ysqn8f9fH3SunDLWU2xCyq5340+0kom24V2WEQcbb3T5stxRGHo8nGA/Z9HjMvLOXbwDHyt2bqnlg+iBHl1LdCWSmsn1ocQ6kzWBTFepLvxf/qHLcv41AyK2n7/kDyT03l2gX2ljvirIJk0KjmgHfVAESJULXpLadUhJyoZZPs9WjeMYX02x6DKyLGm+dDvRB38qOjIVflxlrqwyN05twWW7mLJ9IgaVLdVqhyp6L+tzSxdee2ip; 25:uAgKSjklzSZqiAesq+GcO9Jr0Z9sLXglOvHwh0NwN9JlQ15LUORka3bsJGDQe0AdbydeUSthnfhe8ncNDDXKz3NioqT4tK6Bj+iNN1fnn2bOiGRtPK9fnBOXZAUeNIIxGRDANY/mgQ0IsJANIMiVatITAhhlWu4+XuFTtWuHC1yG//MMXJeapGoWHYu74bJQ6xIDGqjutDpxkvpj8X1CdgaoUTQdtgf3XwKzmIR78mqCnlQVDJRk5uusY3DPN5AGvaULXPG44bwN0czEFAJQReOdB8Cz0YtiR+Rq7lQ5EiBi4UxmoUmNWR8tcyT1Pxa1L7sIpVq7NPAnI5CBaWXMCQ==; 31:nRELdz1RJMVk4VRuuJVeGsTJVKKlueGy9tgsx7OQ5nnT3es2bLVFgh8h6YqKcBvIu3zUYO3IHonSp4jX71hwGjJXgfFnV9/C4iBoJd6crBrRbksfvQxvw9xVvQzZshNje/08YkZOFaU1x8fxL5qTwHz0f7z+FAyzhiOb4NXREyH2yXJc69KG3zf/01D1ZMxFvH7W0HhPhrw2+tUNrMoxVILBF+5AySq3RUv2ETtCLWc= X-MS-TrafficTypeDiagnostic: SN1PR12MB0159: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0159; 20:bk5FJDOYsML3LtlfReABqvFaoRHXj+MUgGUzLw8QqsE9RUQCZ8jkf5gvxdtcwdjStKvOa3PCe6qKC2R+ZXFiovD+t7juZpEsXx3D2ze2Y6V8dFW0tXAyWMoapUUtKsUTJjmGujoc1aCC/hvcbrM9tbO05DZrujjpokOapPnsCOzcDeF1Qd68WMeWpkX/KYUU7J7mVuAL4DfRiWwaovuNpZsLYLG2KqNAppiXJLZQ0de+8CCU4XyoogZ7D6mom0VGTD4pJGtcn7718kOBwODMU1MCVDEbzZx4QFeNukzJJJFFZRHz9u98jqi+rcFlJ6eEGjri/v7Hmu3XyE+OOAkqp8ZEvE+lFolTrUWcsBhQD/Ipt/1EYdAvaIND/etY+JQHrfpszpbj4sT447GUfZ4WzJ9xQDhg3wJhEjYvBFbqEjSuosVZ8UBh2j7xvV283CTN1GuwvDt0CqwHeFaF/Kk9f7LahF+DfwZi1zdtGAhum+oNTDrXFvnkQkO3bMCQujwu; 4:vABmqK8fnQDmMjQ35Yv7h3UpDeKwoBdm3oHjMYlrJ1Wx0KMiH3y5ceuItMEXglmhGateOzJTX1GSWixhiH6d4Rx9wSGLmgINzEDDFn99SZw4ic8dtoMrpfcU+FlIZMFWgENPkz7KgxQ/LjhajGanjvN4jnOtuFB1qUxym0W5xrMudMeNUh+c9RfMBQ1rSO7K/ncSfsZI4h7pSfY6ctQuJuiyCccVx4vq7JTeg2D4FgqH9Wy7maYJNSLcnHyJc66wFHw1HGJaYuP+LSl6NYVbuJCwyd7bXYIF0HzmKcG3dnRDAj2BWC2fTsGDKdrzzpXflZWW4HWDil6v6rU/nk5kjLYJ+nPp8YFuJItCyY5bwLk= X-Exchange-Antispam-Report-Test: UriScan:(166708455590820)(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)(6306002)(53416004)(106356001)(966005)(105586002)(2351001)(42186005)(86362001)(6666003)(5003940100001)(36756003)(189998001)(33646002)(6916009)(97736004)(25786009)(2906002)(478600001)(110136004)(47776003)(38730400002)(50986999)(66066001)(4326008)(2361001)(305945005)(50226002)(48376002)(7350300001)(101416001)(6486002)(7736002)(19627235001); 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:D2UduCeiHi+ZioSU67tb160HWVOlaqN/75NxjXaP1?= =?us-ascii?Q?H3maZlMZCSvSKEdLbXQWF+f/Vt7hi5QzqX36+6UjyQZAk7qlOLAus1gtY7UJ?= =?us-ascii?Q?sCppf/fF33M9OZoFQjj+ayzggwMoGhjvpJQtUS9+lc1ql+wxTa1xDfQtLR6G?= =?us-ascii?Q?unxu5cKyOgSdU2Vk5QJJPzkKzt3/toD/YeWhuIUDqKG8oWjEh/Esx3iNCn+f?= =?us-ascii?Q?3s4Td3CIJ0pxMFDP1AwD6n54bh4M18MyjB/8BA1JuZnAV89zGGOmSl/xdygf?= =?us-ascii?Q?w811lyk/dB9cQ8ulqoK+AtcRl7b04FMxWdX7Rr95UkXHTf9itLu5pQSiQnFe?= =?us-ascii?Q?gGxP13hNTCRHLdK6Yr9ZYaqcaL6YsOMYlYwypo2Q4fWTqJC4WUcQOzxF+3YX?= =?us-ascii?Q?qRKoeVEo9Spr92GSFxAxBGpX/rI6QvuI0WSmh8NANp1AXxDuixtPrjrIV9zm?= =?us-ascii?Q?YU7XxQMkiEwpfEO0LTdQIT1khQn0kb9+QVbjba7Zts2eNNNn7UqOSOIh9SVd?= =?us-ascii?Q?lVGkcnpjQggwJtjegbOIFqxJhMNGEvJQpEC98Kw2DnZMq7W7rleGWqKEJu0s?= =?us-ascii?Q?bxGU24Nf88YBIRDXiyukYZufq1ILAwSFcKlugsmZBrC0sW9ncWibUC2yLzGC?= =?us-ascii?Q?N1Ju3v6gquOwYw9j//WCHte2F8nnqcdTejnGyX+88cnNavRB5FfBYga69Jgp?= =?us-ascii?Q?cpqyzo7xYyi6YRyH62jro0puWjhBaiqc/erxD55rwkOUOFWC3tOG5Afmgcch?= =?us-ascii?Q?HrNhDs+XHL+LpcUiLxwto7/5Kred1nWkJDfeCqCP8weNhFwIdsiBe19cgNGK?= =?us-ascii?Q?v29oHRAMID4zjIJCTcECvUx9yG4cmedTIsFw8bpk89p+ACFMM8jFv9EYenB4?= =?us-ascii?Q?MZOgd6eIBG5C0xxBBSWP74tAi1JVDTqKWZQeQFiakiA6N5I9lvATWzIh+9m9?= =?us-ascii?Q?yoaqbgNYWYA8JpGfSLVZHJVjyzdv8wkeggCp+zJNJOoTEGLr7x6jxHxZO7ZF?= =?us-ascii?Q?GeYyuaFbY8b/5O8DQA8jJ7nsEqdHeYwKlE3a87JZydSrDNYHRpcixY+8zTwE?= =?us-ascii?Q?83fnfvxcWADToKDOXv4Z8ODLJo7IMoyNjDmp3ggYTRWSoCF5hGxcrc+0S8r2?= =?us-ascii?Q?pFQRLxMPOcxDxUFfKg2slkSZLFqqmkETBcmd5uqv8t6gMp11xe0gH/6Giskf?= =?us-ascii?Q?AO2rSd0wL3InQjK0FKfP1vwuBDgg4Lo4+BXQxOaKqer9d/Xc/L2DbhrtI3Ow?= =?us-ascii?Q?yJoUYeP5cVDbVyuFOj1euvzZ15sA1V6aobH27t+b9rcauuOq5p/nmaMZ8vWX?= =?us-ascii?Q?ZO3xkTFiiStVSgtmjGOToRISk04ObkqiWEBQdsYQiQ3?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0159; 6:tdPx/L+JuHmvmCNn0sJrKUbJB4UryFdyziBNDczmpOpBSP8Mxh8A/OzUbmBabTwchAJP9AxhfbFShGY+URd5rwfi8odrdyHNn7yeMbf5E+4JwJzcmFs8lN6LmUk1nF7cGNJN5Gfy3j+1XJPkO7DZURSnlNoQ+LbKhH7xGA2Bq3mEVFvvfC4XLsZO/ZvPYGzmkoyte1V7emmURg7vGuyzUgA6S0KFQ/pOHucThlbsKIfZedsOYdRGu9gyEhmK8/pkf06UbKXwNtoRUSvwUFIa1NG2JMdOtNMH6+ibbdrMhrpxHTNhKPeeAxonYUGQ2Sj0wUNuY5Wsz9OpGWDLI/ArTw==; 5:H9ToTbEF97tNOCJgEFeEn0afHMFWhJATkLUAYWEVbujyDmC9dfl67IcOy8ixU9cAosCVpeCDZDLPkxZDofZs0fS+OziP1hFMRuIQ69TN/zDxm0HO9AAvF+S2SCvB5Wiuu9HVXMMI8AfLqcrj54qEGw==; 24:9Ecl1e5FpOogkF7cd05xvyoBFAraT1M8bwH3b7197O/N7MbRyY8FLnVRzT1L2d9G7bwxcbPzZVqsTTrUvw0CxNICiY1OHwLSboMuOY1mzvw=; 7:+yvkUrcY0Maw8wEoostwoeKSt8+QUncyR0Ukcvb9d4gOh/uAUWomXCuhUtzc1X/1IM9W+mkFOtWx+fHmoQOTtLDqRFv/f96HR/r299NnqBSDKBOktQm3gm2Pvi51kF1qGQtmvOuLQMSdzB9AdZxYosFEIIdAit+ZPKxQsDGSQDlYdpxN5AdSeIBjhk9AkgC/9oa0WYdJt7UGN3Ret0l6Ps6GZbW2GNC03LbpZsu+jbM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0159; 20:oSEhcpPOae0hA0r0vAQJyfUU2MYjTLXa2yN+2BKyUqG++M+MhgVY/pGLVLH/GZ2geehLKH9SEQs/SXzLRmn4iIjV9zAhgtwWX3TI5hSwdqRql7Cr2nR0TdDM1qVGv2r2Gm7NXYo47e1v30dEjm7HVrTFq6Cyqes0esvsHKvKAwexVLyY8X8kctjgkG+XZbgUGWdRn/1DaqBGGCjNTG9Ow1k20HT16YLDWheqZskatb9RkmGVET/VuQBL18U30Jsf X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2017 11:59:21.2650 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0159 Subject: [PATCH v1 00/14] OvmfPkg/Virtio: Add APIs to map system physical 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: , X-List-Received-Date: Mon, 07 Aug 2017 11:57:08 -0000 Content-Type: text/plain Currently, virtio drivers provides the system physical address to the device. However, some systems may feature an IOMMU that requires the drivers to pass the device addresses to the device - which are then translated by the IOMMU into physical addresses in memory. The patch series introduces new member functions in VIRTIO_DEVICE_PROTOCOL which can be used for mapping a system physical address to device address. The approach that this patch series takes is to maps the system physical address to device address for buffers (including rings, device specifc request and response pointed by vring descriptor, and any further memory reference by those request and response). Patch 1 - 3: Defines and implements new member functions to map a system physical address to device address. The patch implements Laszlo's suggestion [1]. Patch 4 - 7: Allocates the vring buffer using newly added member functions and provides some helper functions. Patch 8: Update the virtio-blk driver to use newly added member functions to map the addresses. Verified using the following qemu cli # $QEMU \ -drive file=${IMAGE},if=none,id=disk0 \ -device virtio-blk-pci,drive=disk0 # $QEMU \ -drive file=${IMAGE},if=none,id=disk0 \ -device virtio-blk-pci,drive=disk0,disable-legacy=on Patch 9: Update the virtio-scsi driver to use newly added member functions to map the addresses. Verified using the following qemu cli # $QEMU \ -drive file=${IMAGE},if=none,id=disk0 \ -device scsi-hd,drive=disk0 -device virtio-scsi-pci,id=scsi \ # $QEMU \ -drive file=${IMAGE},if=none,id=disk0 \ -device scsi-hd,drive=disk0 \ -device virtio-scsi-pci,id=scsi,disable-legacy=on \ Patch 10 - 13: Update the virtio-net driver to use newly added member functions to map the addresses. Verified using the following qemu cli # $QEMU \ -netdev type=tap,id=net0 \ -device virtio-net-pci,netdev=net0,romfile= # $QEMU \ -netdev type=tap,id=net0 \ -device virtio-net-pci,netdev=net0,disable-legacy=on,romfile= Patch 14: Update the virtio-rng driver to use newly added member functions to map the addresses. Verified using the following qemu cli # $QEMU \ -device virtio-rng-pci # $QEMU \ -device virtio-rng-pci,disable-legacy=on And succesfully ran RngTest.efi from SecurityPkg/Application Repo: https://github.com/codomania/edk2 Branch: virtio-support Cc: Ard Biesheuvel Cc: Jordan Justen Cc: Tom Lendacky Cc: Laszlo Ersek Brijesh Singh (14): OvmfPkg/Virtio: Introduce new member functions in VIRTIO_DEVICE_PROTOCOL OvmfPkg/Virtio10Dxe: Implement new member functions OvmfPkg/VirtioPciDeviceDxe: Implement new member functions OvmfPkg/VirtioLib: Add SharedBuffer helper functions OvmfPkg/VirtioLib: Pass VirtIo instance in VringInit/Uinit() OvmfPkg/VirtioLib: Add functions to map/unmap VRING OvmfPkg/VirtioLib: Use AllocateShared() to allocate vring buffer OvmfPkg/VirtioBlkDxe: Use DeviceAddresses in vring descriptors OvmfPkg/VirtioScsiDxe: Use DeviceAddresses in vring descriptors OvmfPkg/VirtioNetDxe: Allocate Tx and Rx ring using AllocateSharedPage() OvmfPkg/VirtioNetDxe: Allocate RxBuf using AllocateSharedPages() OvmfPkg/VirtioNetDxe: Dynamically allocate transmit header OvmfPkg/VirtioNetDxe: Use DeviceAddress in transmit vring descriptors OvmfPkg/VirtioRngDxe: Use DeviceAddresses in vring descriptors OvmfPkg/Include/Library/VirtioLib.h | 198 ++++++++++++- OvmfPkg/Include/Protocol/VirtioDevice.h | 121 ++++++++ OvmfPkg/VirtioBlkDxe/VirtioBlk.h | 1 + OvmfPkg/VirtioNetDxe/VirtioNet.h | 25 +- OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h | 34 +++ OvmfPkg/VirtioRngDxe/VirtioRng.h | 1 + OvmfPkg/VirtioScsiDxe/VirtioScsi.h | 1 + OvmfPkg/Library/VirtioLib/VirtioLib.c | 296 +++++++++++++++++++- OvmfPkg/Virtio10Dxe/Virtio10.c | 114 +++++++- OvmfPkg/VirtioBlkDxe/VirtioBlk.c | 104 ++++++- OvmfPkg/VirtioGpuDxe/Commands.c | 7 +- OvmfPkg/VirtioNetDxe/Events.c | 24 ++ OvmfPkg/VirtioNetDxe/SnpGetStatus.c | 19 +- OvmfPkg/VirtioNetDxe/SnpInitialize.c | 102 +++++-- OvmfPkg/VirtioNetDxe/SnpSharedHelpers.c | 119 +++++++- OvmfPkg/VirtioNetDxe/SnpShutdown.c | 16 +- OvmfPkg/VirtioNetDxe/SnpTransmit.c | 22 +- OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c | 7 +- OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c | 66 +++++ OvmfPkg/VirtioRngDxe/VirtioRng.c | 54 +++- OvmfPkg/VirtioScsiDxe/VirtioScsi.c | 121 +++++++- 21 files changed, 1378 insertions(+), 74 deletions(-) -- 2.7.4