Patch 4 - 10

Reviewed-by: Brijesh Singh <brijesh.si...@amd.com>
Tested-by: Brijesh Singh <brijesh.si...@amd.com>

Thank you Laszlo! I will work to finish virtio-net next week.

-Brijesh


On 09/07/2017 05:41 PM, Laszlo Ersek wrote:
Repo:   https://github.com/lersek/edk2.git
Branch: iommu_exit_boot

This series is the result of the discussion under

   [edk2] [PATCH 0/4] MdeModulePkg: some PCI HC drivers: unmap common
                      buffers at ExitBootServices()
   https://lists.01.org/pipermail/edk2-devel/2017-September/014099.html

At ExitBootServices(), PCI and VirtIo drivers should only care about
aborting pending DMA on the devices. Cleaning up PciIo mappings (which
ultimately boil down to IOMMU mappings) for those aborted DMA operations
should be the job of the IOMMU driver.

Patches 01 through 03 clean up the AtaAtapiPassThru driver in
MdeModulePkg a little bit, because at present, (a) it unmaps the buffers
and disables BMDMA in the wrong order in its DriverBindingStop()
function, (b) it doesn't abort pending DMA at ExitBootServices().

This subset can be treated separately from the rest of the series, but I
thought they belonged loosely together (given that AtaAtapiPassThru is
used on QEMU's Q35 machine type).

Patches 04 through 07 remove VIRTIO_DEVICE_PROTOCOL.UnmapSharedBuffer()
calls from the VirtIo drivers' ExitBootServices() handlers.

(The conversion of VirtioNetDxe to device addresses is still in progress
-- Brijesh, when you submit v2 of that, under this approach, there is no
need to change VirtioNetExitBoot() relative to current upstream, and you
can use VirtioOperationBusMasterRead to map outgoing packets.)

Patches 08 through 10 make OvmfPkg/IoMmuDxe track all mappings, and
unmap all mappings (Read, Write, CommonBuffer) that are in effect when
ExitBootServices() is called. It is ensured that PCI and VirtIo drivers
abort pending DMA first, and IoMmuDxe clean up the mappings last.

Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
Cc: Brijesh Singh <brijesh.si...@amd.com>
Cc: Eric Dong <eric.d...@intel.com>
Cc: Jiewen Yao <jiewen....@intel.com>
Cc: Jordan Justen <jordan.l.jus...@intel.com>
Cc: Star Zeng <star.z...@intel.com>

Thanks
Laszlo

Laszlo Ersek (10):
   MdeModulePkg/AtaAtapiPassThru: cache EnabledPciAttributes
   MdeModulePkg/AtaAtapiPassThru: unmap DMA buffers after disabling BM
     DMA
   MdeModulePkg/AtaAtapiPassThru: disable the device at
     ExitBootServices()
   OvmfPkg/VirtioBlkDxe: don't unmap VRING at ExitBootServices()
   OvmfPkg/VirtioGpuDxe: don't unmap VRING & BackingStore at
     ExitBootServices
   OvmfPkg/VirtioRngDxe: don't unmap VRING at ExitBootServices()
   OvmfPkg/VirtioScsiDxe: don't unmap VRING at ExitBootServices()
   OvmfPkg/IoMmuDxe: track all mappings
   OvmfPkg/IoMmuDxe: generalize IoMmuUnmap() to IoMmuUnmapWorker()
   OvmfPkg/IoMmuDxe: unmap all IOMMU mappings at ExitBootServices()

  MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.c | 103 +++++---
  MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.h |   7 +
  OvmfPkg/IoMmuDxe/AmdSevIoMmu.c                           | 246 
+++++++++++++++++---
  OvmfPkg/VirtioBlkDxe/VirtioBlk.c                         |   7 +-
  OvmfPkg/VirtioGpuDxe/Commands.c                          |  23 +-
  OvmfPkg/VirtioRngDxe/VirtioRng.c                         |   7 +-
  OvmfPkg/VirtioScsiDxe/VirtioScsi.c                       |   7 +-
  7 files changed, 299 insertions(+), 101 deletions(-)

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to