On Fri, Jul 21, 2017 at 06:17:15AM -0500, Brijesh Singh wrote:
On 7/20/17 10:24 PM, Jason Wang wrote:
On 2017年07月20日 06:09, Brijesh Singh wrote:
I have found that OVMF fails to detect the disk when iommu_platform is set from qemu cli. The failure occurs during the feature bit negotiation.
Recently, EDKII introduced IOMMU protocol d1fddc4533bf. SEV patch series introduced a IoMmu protocol driver f9d129e68a45 to set a DMA access attribute and methods to allocate, free, map and unmap the DMA memory for the master bus devices
In this patch series, I have tried to enable the IOMMU_PLATFORM feature for VirtioBlkDevice. I am sending this as RFC to seek feedback before I extend the support for other Virtio devices. The patch has been tested in SEV guest - mainly because IoMmuDxe driver installs the IOMMU protocol for SEV guest only. If needed, I can extend the IoMmuDxe driver to install IOMMU protocol for non SEV guests.
qemu cli used for testing:
# $QEMU \ ... -drive file=${HDA_FILE},if=none,id=disk0,format=qcow2 \ -device virtio-blk-pci,drive=disk0,disable-legacy=on,iommu_platform=true,disable-modern=off,scsi=off ...
Cc: Jordan Justen jordan.l.justen@intel.com Cc: Laszlo Ersek lersek@redhat.com Cc: Jason Wang jasowang@redhat.com Cc: Michael S. Tsirkin mst@redhat.com Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Brijesh Singh brijesh.singh@amd.com
Brijesh Singh (3): OvmfPkg/Include/Virtio10: Define VIRTIO_F_IOMMU_PLATFORM feature bit OvmfPkg/VirtioLib: Add IOMMU_PLATFORM support OvmfPkg/VirtioBlkDxe: Add VIRITO_F_IOMMU_PLATFORM support
Hi, do we need change virtio-scsi driver as well?
I see that OVMF has the following virtio drivers, we need to update them all:
VirtioBlkDxe VirtioGpuDxe VirtioNetDxe VirtioRngDxe VirtioScsiDxe
I will wait for Laszlo and Jordan's initial feedback before changing other drivers.
I'm not sure about the GPU. Cc relevant maintainers - can virtio GPU work from behind an IOMMU?
Thanks
OvmfPkg/Library/VirtioLib/VirtioLib.inf | 1 + OvmfPkg/VirtioBlkDxe/VirtioBlk.inf | 5 + OvmfPkg/VirtioGpuDxe/VirtioGpu.inf | 1 + OvmfPkg/VirtioNetDxe/VirtioNet.inf | 1 + OvmfPkg/VirtioRngDxe/VirtioRng.inf | 1 + OvmfPkg/VirtioScsiDxe/VirtioScsi.inf | 1 + OvmfPkg/Include/IndustryStandard/Virtio095.h | 1 + OvmfPkg/Include/IndustryStandard/Virtio10.h | 5 + OvmfPkg/Include/Library/VirtioLib.h | 20 ++++ OvmfPkg/Library/VirtioLib/VirtioLib.c | 96 ++++++++++++++- OvmfPkg/VirtioBlkDxe/VirtioBlk.c | 125 ++++++++++++++++++-- 11 files changed, 244 insertions(+), 13 deletions(-)