public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Brijesh Singh <brijesh.singh@amd.com>
To: edk2-devel@lists.01.org
Cc: Brijesh Singh <brijesh.singh@amd.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Jordan Justen <jordan.l.justen@intel.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	Laszlo Ersek <lersek@redhat.com>
Subject: [PATCH v3 11/23] OvmfPkg/VirtioLib: change the parameter of VirtioAppendDesc() to UINT64
Date: Wed, 23 Aug 2017 08:22:35 -0400	[thread overview]
Message-ID: <1503490967-5559-12-git-send-email-brijesh.singh@amd.com> (raw)
In-Reply-To: <1503490967-5559-1-git-send-email-brijesh.singh@amd.com>

The patch change the "BufferPhysAddr" parameter of VirtioAppendDesc()
from type UINTN to UINT64.

UINTN is appropriate as long as we pass system memory references. After
the introduction of this feature, that's no longer the case in general.
Should we implement "real" IOMMU support at some point, UINTN could
break in 32-bit builds of OVMF.

Suggested-by: Laszlo Ersek <lersek@redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
---
 OvmfPkg/Include/Library/VirtioLib.h   | 35 +++++++++---------
 OvmfPkg/Library/VirtioLib/VirtioLib.c | 38 ++++++++++----------
 2 files changed, 37 insertions(+), 36 deletions(-)

diff --git a/OvmfPkg/Include/Library/VirtioLib.h b/OvmfPkg/Include/Library/VirtioLib.h
index c3e56ea23b89..a966311ac941 100644
--- a/OvmfPkg/Include/Library/VirtioLib.h
+++ b/OvmfPkg/Include/Library/VirtioLib.h
@@ -151,33 +151,34 @@ VirtioPrepare (
   The caller is responsible for initializing *Indices with VirtioPrepare()
   first.
 
-  @param[in,out] Ring        The virtio ring to append the buffer to, as a
-                             descriptor.
+  @param[in,out] Ring               The virtio ring to append the buffer to,
+                                    as a descriptor.
 
-  @param[in] BufferPhysAddr  (Guest pseudo-physical) start address of the
-                             transmit / receive buffer.
+  @param[in] BufferDeviceAddress    (Bus master device)) start address of the
+                                    transmit / receive buffer.
 
-  @param[in] BufferSize      Number of bytes to transmit or receive.
+  @param[in] BufferSize             Number of bytes to transmit or receive.
 
-  @param[in] Flags           A bitmask of VRING_DESC_F_* flags. The caller
-                             computes this mask dependent on further buffers to
-                             append and transfer direction.
-                             VRING_DESC_F_INDIRECT is unsupported. The
-                             VRING_DESC.Next field is always set, but the host
-                             only interprets it dependent on VRING_DESC_F_NEXT.
+  @param[in] Flags                  A bitmask of VRING_DESC_F_* flags. The
+                                    caller computes this mask dependent on
+                                    further buffers to append and transfer
+                                    direction. VRING_DESC_F_INDIRECT is
+                                    unsupported. The VRING_DESC.Next field is
+                                    always set, but the host only interprets
+                                    it dependent on VRING_DESC_F_NEXT.
 
-  @param[in,out] Indices     Indices->HeadDescIdx is not accessed.
-                             On input, Indices->NextDescIdx identifies the next
-                             descriptor to carry the buffer. On output,
-                             Indices->NextDescIdx is incremented by one, modulo
-                             2^16.
+  @param[in,out] Indices            Indices->HeadDescIdx is not accessed.
+                                    On input, Indices->NextDescIdx identifies
+                                    the next descriptor to carry the buffer.
+                                    On output, Indices->NextDescIdx is
+                                    incremented by one, modulo 2^16.
 
 **/
 VOID
 EFIAPI
 VirtioAppendDesc (
   IN OUT VRING        *Ring,
-  IN     UINTN        BufferPhysAddr,
+  IN     UINT64       BufferDeviceAddress,
   IN     UINT32       BufferSize,
   IN     UINT16       Flags,
   IN OUT DESC_INDICES *Indices
diff --git a/OvmfPkg/Library/VirtioLib/VirtioLib.c b/OvmfPkg/Library/VirtioLib/VirtioLib.c
index e5366e385f5d..fcd484fffada 100644
--- a/OvmfPkg/Library/VirtioLib/VirtioLib.c
+++ b/OvmfPkg/Library/VirtioLib/VirtioLib.c
@@ -189,7 +189,6 @@ VirtioPrepare (
   Indices->NextDescIdx = Indices->HeadDescIdx;
 }
 
-
 /**
 
   Append a contiguous buffer for transmission / reception via the virtio ring.
@@ -205,33 +204,34 @@ VirtioPrepare (
   The caller is responsible for initializing *Indices with VirtioPrepare()
   first.
 
-  @param[in,out] Ring        The virtio ring to append the buffer to, as a
-                             descriptor.
+  @param[in,out] Ring               The virtio ring to append the buffer to,
+                                    as a descriptor.
 
-  @param[in] BufferPhysAddr  (Guest pseudo-physical) start address of the
-                             transmit / receive buffer.
+  @param[in] BufferDeviceAddress    (Bus master device)) start address of the
+                                    transmit / receive buffer.
 
-  @param[in] BufferSize      Number of bytes to transmit or receive.
+  @param[in] BufferSize             Number of bytes to transmit or receive.
 
-  @param[in] Flags           A bitmask of VRING_DESC_F_* flags. The caller
-                             computes this mask dependent on further buffers to
-                             append and transfer direction.
-                             VRING_DESC_F_INDIRECT is unsupported. The
-                             VRING_DESC.Next field is always set, but the host
-                             only interprets it dependent on VRING_DESC_F_NEXT.
+  @param[in] Flags                  A bitmask of VRING_DESC_F_* flags. The
+                                    caller computes this mask dependent on
+                                    further buffers to append and transfer
+                                    direction. VRING_DESC_F_INDIRECT is
+                                    unsupported. The VRING_DESC.Next field is
+                                    always set, but the host only interprets
+                                    it dependent on VRING_DESC_F_NEXT.
 
-  @param[in,out] Indices     Indices->HeadDescIdx is not accessed.
-                             On input, Indices->NextDescIdx identifies the next
-                             descriptor to carry the buffer. On output,
-                             Indices->NextDescIdx is incremented by one, modulo
-                             2^16.
+  @param[in,out] Indices            Indices->HeadDescIdx is not accessed.
+                                    On input, Indices->NextDescIdx identifies
+                                    the next descriptor to carry the buffer.
+                                    On output, Indices->NextDescIdx is
+                                    incremented by one, modulo 2^16.
 
 **/
 VOID
 EFIAPI
 VirtioAppendDesc (
   IN OUT VRING        *Ring,
-  IN     UINTN        BufferPhysAddr,
+  IN     UINT64       BufferDeviceAddress,
   IN     UINT32       BufferSize,
   IN     UINT16       Flags,
   IN OUT DESC_INDICES *Indices
@@ -240,7 +240,7 @@ VirtioAppendDesc (
   volatile VRING_DESC *Desc;
 
   Desc        = &Ring->Desc[Indices->NextDescIdx++ % Ring->QueueSize];
-  Desc->Addr  = BufferPhysAddr;
+  Desc->Addr  = BufferDeviceAddress;
   Desc->Len   = BufferSize;
   Desc->Flags = Flags;
   Desc->Next  = Indices->NextDescIdx % Ring->QueueSize;
-- 
2.7.4



  parent reply	other threads:[~2017-08-23 12:20 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-23 12:22 [PATCH v3 00/21] OvmfPkg/Virtio: introduce IOMMU-like member functions Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 01/23] OvmfPkg: introduce IOMMU-like member functions to VIRTIO_DEVICE_PROTOCOL Brijesh Singh
2017-08-23 19:04   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 02/23] OvmfPkg/Virtio10Dxe: implement IOMMU-like member functions Brijesh Singh
2017-08-23 19:13   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 03/23] OvmfPkg/VirtioPciDeviceDxe: " Brijesh Singh
2017-08-23 19:16   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 04/23] OvmfPkg/VirtioMmioDeviceLib: " Brijesh Singh
2017-08-23 19:26   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 05/23] OvmfPkg/VirtioLib: add VirtioMapAllBytesInSharedBuffer() helper function Brijesh Singh
2017-08-23 19:45   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 06/23] OvmfPkg/VirtioLib: take VirtIo instance in VirtioRingInit/VirtioRingUninit Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 07/23] OvmfPkg/Virtio: take RingBaseShift in SetQueueAddress() Brijesh Singh
2017-08-23 20:41   ` Laszlo Ersek
2017-08-23 20:43     ` Laszlo Ersek
2017-08-23 20:50       ` Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 08/23] OvmfPkg/Virtio10Dxe: add the RingBaseShift offset Brijesh Singh
2017-08-23 20:51   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 09/23] OvmfPkg/VirtioLib: add function to map VRING Brijesh Singh
2017-08-23 20:10   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 10/23] OvmfPkg/VirtioLib: alloc VRING buffer with AllocateSharedPages() Brijesh Singh
2017-08-23 21:18   ` Laszlo Ersek
2017-08-23 12:22 ` Brijesh Singh [this message]
2017-08-23 21:38   ` [PATCH v3 11/23] OvmfPkg/VirtioLib: change the parameter of VirtioAppendDesc() to UINT64 Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 12/23] OvmfPkg/VirtioRngDxe: map host address to device address Brijesh Singh
2017-08-23 22:54   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 13/23] OvmfPkg/VirtioBlkDxe: " Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 14/23] OvmfPkg/VirtioScsiDxe: " Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 15/23] OvmfPkg/VirtioNetDxe: alloc Tx and Rx rings using AllocateSharedPage() Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 16/23] OvmfPkg/VirtioNetDxe: alloc RxBuf using AllocateSharedPages() Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 17/23] OvmfPkg/VirtioNetDxe: dynamically alloc transmit header Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 18/23] OvmfPkg/VirtioNetDxe: map transmit buffer host address to device address Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 19/23] OvmfPkg/Virtio10: define VIRITO_F_IOMMU_PLATFORM feature bit Brijesh Singh
2017-08-23 23:04   ` Laszlo Ersek
2017-08-23 12:22 ` [PATCH v3 20/23] OvmfPkg/VirtioRngDxe: negotiate VIRITO_F_IOMMU_PLATFORM Brijesh Singh
2017-08-23 23:21   ` Laszlo Ersek
2017-08-23 23:24     ` Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 21/23] OvmfPkg/VirtioBlkDxe: " Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 22/23] OvmfPkg/VirtioScsiDxe: " Brijesh Singh
2017-08-23 12:22 ` [PATCH v3 23/23] OvmfPkg/VirtioNetDxe: " Brijesh Singh
2017-08-24  0:26 ` [PATCH v3 00/21] OvmfPkg/Virtio: introduce IOMMU-like member functions Laszlo Ersek
2017-08-24  0:54   ` Brijesh Singh
2017-08-24  1:22     ` Laszlo Ersek
2017-08-24  2:06       ` Brijesh Singh
2017-08-24 10:07         ` Laszlo Ersek
2017-08-25  8:58   ` Laszlo Ersek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1503490967-5559-12-git-send-email-brijesh.singh@amd.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox