mirror of https://github.com/acidanthera/audk.git
OvmfPkg/VirtioLib: change the parameter of VirtioAppendDesc() to UINT64
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 bus master device addresses, 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> [lersek@redhat.com: clarify commit message] [lersek@redhat.com: balance parens in VirtioAppendDesc() comment blocks] Reviewed-by: Laszlo Ersek <lersek@redhat.com> Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
b0338c5329
commit
4b725858de
|
@ -151,33 +151,34 @@ VirtioPrepare (
|
||||||
The caller is responsible for initializing *Indices with VirtioPrepare()
|
The caller is responsible for initializing *Indices with VirtioPrepare()
|
||||||
first.
|
first.
|
||||||
|
|
||||||
@param[in,out] Ring The virtio ring to append the buffer to, as a
|
@param[in,out] Ring The virtio ring to append the buffer to,
|
||||||
descriptor.
|
as a descriptor.
|
||||||
|
|
||||||
@param[in] BufferPhysAddr (Guest pseudo-physical) start address of the
|
@param[in] BufferDeviceAddress (Bus master device) start address of the
|
||||||
transmit / receive buffer.
|
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
|
@param[in] Flags A bitmask of VRING_DESC_F_* flags. The
|
||||||
computes this mask dependent on further buffers to
|
caller computes this mask dependent on
|
||||||
append and transfer direction.
|
further buffers to append and transfer
|
||||||
VRING_DESC_F_INDIRECT is unsupported. The
|
direction. VRING_DESC_F_INDIRECT is
|
||||||
VRING_DESC.Next field is always set, but the host
|
unsupported. The VRING_DESC.Next field is
|
||||||
only interprets it dependent on VRING_DESC_F_NEXT.
|
always set, but the host only interprets
|
||||||
|
it dependent on VRING_DESC_F_NEXT.
|
||||||
|
|
||||||
@param[in,out] Indices Indices->HeadDescIdx is not accessed.
|
@param[in,out] Indices Indices->HeadDescIdx is not accessed.
|
||||||
On input, Indices->NextDescIdx identifies the next
|
On input, Indices->NextDescIdx identifies
|
||||||
descriptor to carry the buffer. On output,
|
the next descriptor to carry the buffer.
|
||||||
Indices->NextDescIdx is incremented by one, modulo
|
On output, Indices->NextDescIdx is
|
||||||
2^16.
|
incremented by one, modulo 2^16.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
VirtioAppendDesc (
|
VirtioAppendDesc (
|
||||||
IN OUT VRING *Ring,
|
IN OUT VRING *Ring,
|
||||||
IN UINTN BufferPhysAddr,
|
IN UINT64 BufferDeviceAddress,
|
||||||
IN UINT32 BufferSize,
|
IN UINT32 BufferSize,
|
||||||
IN UINT16 Flags,
|
IN UINT16 Flags,
|
||||||
IN OUT DESC_INDICES *Indices
|
IN OUT DESC_INDICES *Indices
|
||||||
|
|
|
@ -189,7 +189,6 @@ VirtioPrepare (
|
||||||
Indices->NextDescIdx = Indices->HeadDescIdx;
|
Indices->NextDescIdx = Indices->HeadDescIdx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
Append a contiguous buffer for transmission / reception via the virtio ring.
|
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()
|
The caller is responsible for initializing *Indices with VirtioPrepare()
|
||||||
first.
|
first.
|
||||||
|
|
||||||
@param[in,out] Ring The virtio ring to append the buffer to, as a
|
@param[in,out] Ring The virtio ring to append the buffer to,
|
||||||
descriptor.
|
as a descriptor.
|
||||||
|
|
||||||
@param[in] BufferPhysAddr (Guest pseudo-physical) start address of the
|
@param[in] BufferDeviceAddress (Bus master device) start address of the
|
||||||
transmit / receive buffer.
|
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
|
@param[in] Flags A bitmask of VRING_DESC_F_* flags. The
|
||||||
computes this mask dependent on further buffers to
|
caller computes this mask dependent on
|
||||||
append and transfer direction.
|
further buffers to append and transfer
|
||||||
VRING_DESC_F_INDIRECT is unsupported. The
|
direction. VRING_DESC_F_INDIRECT is
|
||||||
VRING_DESC.Next field is always set, but the host
|
unsupported. The VRING_DESC.Next field is
|
||||||
only interprets it dependent on VRING_DESC_F_NEXT.
|
always set, but the host only interprets
|
||||||
|
it dependent on VRING_DESC_F_NEXT.
|
||||||
|
|
||||||
@param[in,out] Indices Indices->HeadDescIdx is not accessed.
|
@param[in,out] Indices Indices->HeadDescIdx is not accessed.
|
||||||
On input, Indices->NextDescIdx identifies the next
|
On input, Indices->NextDescIdx identifies
|
||||||
descriptor to carry the buffer. On output,
|
the next descriptor to carry the buffer.
|
||||||
Indices->NextDescIdx is incremented by one, modulo
|
On output, Indices->NextDescIdx is
|
||||||
2^16.
|
incremented by one, modulo 2^16.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
VirtioAppendDesc (
|
VirtioAppendDesc (
|
||||||
IN OUT VRING *Ring,
|
IN OUT VRING *Ring,
|
||||||
IN UINTN BufferPhysAddr,
|
IN UINT64 BufferDeviceAddress,
|
||||||
IN UINT32 BufferSize,
|
IN UINT32 BufferSize,
|
||||||
IN UINT16 Flags,
|
IN UINT16 Flags,
|
||||||
IN OUT DESC_INDICES *Indices
|
IN OUT DESC_INDICES *Indices
|
||||||
|
@ -240,7 +240,7 @@ VirtioAppendDesc (
|
||||||
volatile VRING_DESC *Desc;
|
volatile VRING_DESC *Desc;
|
||||||
|
|
||||||
Desc = &Ring->Desc[Indices->NextDescIdx++ % Ring->QueueSize];
|
Desc = &Ring->Desc[Indices->NextDescIdx++ % Ring->QueueSize];
|
||||||
Desc->Addr = BufferPhysAddr;
|
Desc->Addr = BufferDeviceAddress;
|
||||||
Desc->Len = BufferSize;
|
Desc->Len = BufferSize;
|
||||||
Desc->Flags = Flags;
|
Desc->Flags = Flags;
|
||||||
Desc->Next = Indices->NextDescIdx % Ring->QueueSize;
|
Desc->Next = Indices->NextDescIdx % Ring->QueueSize;
|
||||||
|
|
Loading…
Reference in New Issue