On 08/23/17 14:22, Brijesh Singh wrote: > virtio drivers use VIRTIO_DEVICE_PROTOCOL.MapSharedBuffer() to map the > ring buffer host address to a device address. If an IOMMU is present then > RingBaseShift contains the offset from the host address. > > Suggested-by: Laszlo Ersek <[email protected]> > Cc: Ard Biesheuvel <[email protected]> > Cc: Jordan Justen <[email protected]> > Cc: Tom Lendacky <[email protected]> > Cc: Laszlo Ersek <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Brijesh Singh <[email protected]> > --- > OvmfPkg/Virtio10Dxe/Virtio10.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-)
Reviewed-by: Laszlo Ersek <[email protected]> Thanks! Laszlo > diff --git a/OvmfPkg/Virtio10Dxe/Virtio10.c b/OvmfPkg/Virtio10Dxe/Virtio10.c > index ef9a00710668..e9b50b6e437b 100644 > --- a/OvmfPkg/Virtio10Dxe/Virtio10.c > +++ b/OvmfPkg/Virtio10Dxe/Virtio10.c > @@ -498,11 +498,10 @@ Virtio10SetQueueAddress ( > UINT64 Address; > UINT16 Enable; > > - ASSERT (RingBaseShift == 0); > - > Dev = VIRTIO_1_0_FROM_VIRTIO_DEVICE (This); > > Address = (UINTN)Ring->Desc; > + Address += RingBaseShift; > Status = Virtio10Transfer (Dev->PciIo, &Dev->CommonConfig, TRUE, > OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueDesc), > sizeof Address, &Address); > @@ -511,6 +510,7 @@ Virtio10SetQueueAddress ( > } > > Address = (UINTN)Ring->Avail.Flags; > + Address += RingBaseShift; > Status = Virtio10Transfer (Dev->PciIo, &Dev->CommonConfig, TRUE, > OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueAvail), > sizeof Address, &Address); > @@ -519,6 +519,7 @@ Virtio10SetQueueAddress ( > } > > Address = (UINTN)Ring->Used.Flags; > + Address += RingBaseShift; > Status = Virtio10Transfer (Dev->PciIo, &Dev->CommonConfig, TRUE, > OFFSET_OF (VIRTIO_PCI_COMMON_CFG, QueueUsed), > sizeof Address, &Address); > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

