]> git.proxmox.com Git - mirror_edk2.git/commit - OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSec.c
OvmfPkg/QemuFwCfgLib: Use BusMasterCommonBuffer to map FW_CFG_DMA_ACCESS
authorBrijesh Singh <brijesh.singh@amd.com>
Wed, 2 Aug 2017 22:12:48 +0000 (18:12 -0400)
committerLaszlo Ersek <lersek@redhat.com>
Sat, 5 Aug 2017 00:54:33 +0000 (02:54 +0200)
commitf6c909ae5d659733b679ad0f77983dcc5d87d641
treee87b89b851de9b94bfb3595521dc5dfcec30d566
parentd0c9afea42a07c95613d0a33433ecefef824fcf3
OvmfPkg/QemuFwCfgLib: Use BusMasterCommonBuffer to map FW_CFG_DMA_ACCESS

Commit 09719a01b11b (OvmfPkg/QemuFwCfgLib: Implement SEV internal function
for Dxe phase) uses IOMMU protocol to allocate and free FW_CFG_DMA_ACCESS
buffer when SEV is active. During initial commits we made assumption that
IOMMU.AllocateBuffer() will provide PlainTextAddress (i.e C-bit cleared).
This assumption was wrong, the AllocateBuffer() protocol member is not
expected to produce a buffer that is immediatly usable, and client is
required to call Map() uncondtionally with BusMasterCommonBuffer[64] to
get a mapping which is accessable by both host and device.

The patch refactors code a bit and add the support to Map()
FW_CFG_DMA_ACCESS buffer using BusMasterCommonBuffer operation after
allocation and Unamp() before free.

The complete discussion about this and recommendation from Laszlo can be
found here [1]

[1] https://lists.01.org/pipermail/edk2-devel/2017-July/012652.html

Suggested-by: Laszlo Ersek <lersek@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
[lersek@redhat.com: convert pointers to UINTN before converting to UINT64]
[lersek@redhat.com: fix argument indentation in multi-line function call]
[lersek@redhat.com: explicitly compare pointers to NULL]
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxe.c
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLibInternal.h
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgPei.c
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSec.c