public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library
@ 2017-01-13 22:14 Leo Duran
  2017-01-13 22:14 ` [RFC v2 1/6] MdeModulePkg: Add " Leo Duran
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Leo Duran @ 2017-01-13 22:14 UTC (permalink / raw)
  To: edk2-devel
  Cc: lersek, jordan.l.justen, feng.tian, star.zeng, maurice.ma,
	prince.agyeman, ard.biesheuvel, brijesh.singh, Leo Duran

This series provides an abstraction layer for Bus-master DMA operations as
currently implemented by the PciHostBridgeDxe driver. The intent is to then
allow override of this library as may be required by specific hardware
implementations, such as AMD's Secure Encrypted Virtualization (SEV).

Please refer to the RFC discussion for SEV here:
http://marc.info/?l=linux-mm&m=147190814023863&w=2
    
This new (BmDmaLib class) library is cloned from the existing DmaLib with
an additional DmaAbove4GB (BOOLEAN) parameter for the Map and Allocate
interfaces, so that decisions can be made about the need to allocate DMA
buffers below the 4GB boundary.

NOTE: The abstraction layer is intended for Bus-master (DMA capable)
devices, and not restricted to the PCI Root-Bridge use-case. Thus the
rationale for not using EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION types.

Changes since RFC v1:
- Patch 1: Restrict LIBRARY_CLASS to DXE_DRIVER in INF file.
- Patches 2 through 5: 
  Change Subject: XxxPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  Add Reviewed-by: Laszlo Ersek <lersek@redhat.com>
- Add clarifications from RFC discussion to this cover letter.

Leo Duran (6):
  MdeModulePkg: Add DxeBmDmaLib (BmDmaLib class) library
  ArmVirtPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  CorebootPayloadPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  MdeModulePkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  OvmfPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  MdeModulePkg: Modify PciHostBridgeDxe to use new BmDmaLib library

 ArmVirtPkg/ArmVirtQemu.dsc                         |   1 +
 ArmVirtPkg/ArmVirtQemuKernel.dsc                   |   1 +
 CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc      |   1 +
 CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc   |   1 +
 .../Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf  |   1 +
 .../Bus/Pci/PciHostBridgeDxe/PciRootBridge.h       |  13 +-
 .../Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c     | 272 +++++----------------
 MdeModulePkg/MdeModulePkg.dsc                      |   3 +
 OvmfPkg/OvmfPkgIa32.dsc                            |   1 +
 OvmfPkg/OvmfPkgIa32X64.dsc                         |   1 +
 OvmfPkg/OvmfPkgX64.dsc                             |   1 +
 11 files changed, 76 insertions(+), 220 deletions(-)

-- 
1.9.1



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RFC v2 1/6] MdeModulePkg: Add DxeBmDmaLib (BmDmaLib class) library
  2017-01-13 22:14 [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Leo Duran
@ 2017-01-13 22:14 ` Leo Duran
  2017-02-09  1:59   ` Ni, Ruiyu
  2017-01-13 22:14 ` [RFC v2 2/6] ArmVirtPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver Leo Duran
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 10+ messages in thread
From: Leo Duran @ 2017-01-13 22:14 UTC (permalink / raw)
  To: edk2-devel
  Cc: lersek, jordan.l.justen, feng.tian, star.zeng, maurice.ma,
	prince.agyeman, ard.biesheuvel, brijesh.singh, Leo Duran

This patch provides an abstraction layer for Bus-master DMA operations as
currently implemented by the PciHostBridgeDxe driver. The intent is to then
allow override of this library as may be required by specific hardware
implementations, such as AMD's Secure Encrypted Virtualization (SEV).

This new (BmDmaLib class) library is cloned from the existing DmaLib with
an additional DmaAbove4GB (BOOLEAN) parameter for the Map and Allocate
interfaces, so that decisions can be made about the need to allocate DMA
buffers below the 4GB boundary.
---
 MdeModulePkg/MdeModulePkg.dsc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index 5996fe5..311922e 100644
--- a/MdeModulePkg/MdeModulePkg.dsc
+++ b/MdeModulePkg/MdeModulePkg.dsc
@@ -275,6 +275,7 @@ [Components]
   MdeModulePkg/Core/Pei/PeiMain.inf
   MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
 
+  MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
   MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
   MdeModulePkg/Library/UefiMemoryAllocationProfileLib/UefiMemoryAllocationProfileLib.inf
   MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RFC v2 2/6] ArmVirtPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  2017-01-13 22:14 [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Leo Duran
  2017-01-13 22:14 ` [RFC v2 1/6] MdeModulePkg: Add " Leo Duran
@ 2017-01-13 22:14 ` Leo Duran
  2017-01-13 22:14 ` [RFC v2 3/6] CorebootPayloadPkg: " Leo Duran
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Leo Duran @ 2017-01-13 22:14 UTC (permalink / raw)
  To: edk2-devel
  Cc: lersek, jordan.l.justen, feng.tian, star.zeng, maurice.ma,
	prince.agyeman, ard.biesheuvel, brijesh.singh, Leo Duran

This patch adds the new DxeBmDmaLib (BmDmaLib class) library, which
provides an abstraction layer for DMA operations implemented by the
PciHostBridgeDxe driver.

Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Leo Duran  <leo.duran@amd.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
---
 ArmVirtPkg/ArmVirtQemu.dsc       | 1 +
 ArmVirtPkg/ArmVirtQemuKernel.dsc | 1 +
 2 files changed, 2 insertions(+)

diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index 0cae996..fb781ac 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -59,6 +59,7 @@ [LibraryClasses.common]
   TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
   NorFlashPlatformLib|ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.inf
 
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
   UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
diff --git a/ArmVirtPkg/ArmVirtQemuKernel.dsc b/ArmVirtPkg/ArmVirtQemuKernel.dsc
index fe76c22..c03554d 100644
--- a/ArmVirtPkg/ArmVirtQemuKernel.dsc
+++ b/ArmVirtPkg/ArmVirtQemuKernel.dsc
@@ -58,6 +58,7 @@ [LibraryClasses.common]
   TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
   NorFlashPlatformLib|ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.inf
 
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
   UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RFC v2 3/6] CorebootPayloadPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  2017-01-13 22:14 [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Leo Duran
  2017-01-13 22:14 ` [RFC v2 1/6] MdeModulePkg: Add " Leo Duran
  2017-01-13 22:14 ` [RFC v2 2/6] ArmVirtPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver Leo Duran
@ 2017-01-13 22:14 ` Leo Duran
  2017-01-13 22:14 ` [RFC v2 4/6] MdeModulePkg: " Leo Duran
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Leo Duran @ 2017-01-13 22:14 UTC (permalink / raw)
  To: edk2-devel
  Cc: lersek, jordan.l.justen, feng.tian, star.zeng, maurice.ma,
	prince.agyeman, ard.biesheuvel, brijesh.singh, Leo Duran

This patch adds the new DxeBmDmaLib (BmDmaLib class) library, which
provides an abstraction layer for DMA operations implemented by the
PciHostBridgeDxe driver.

Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Leo Duran  <leo.duran@amd.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
---
 CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc    | 1 +
 CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc | 1 +
 2 files changed, 2 insertions(+)

diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc
index cdfcb75..12fcd3f 100644
--- a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc
+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc
@@ -140,6 +140,7 @@ [LibraryClasses]
   PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
   PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
   CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
 
   #
   # UEFI & PI
diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc
index 6b16af6..28e1ffa 100644
--- a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc
+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc
@@ -140,6 +140,7 @@ [LibraryClasses]
   PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
   PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
   CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
 
   #
   # UEFI & PI
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RFC v2 4/6] MdeModulePkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  2017-01-13 22:14 [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Leo Duran
                   ` (2 preceding siblings ...)
  2017-01-13 22:14 ` [RFC v2 3/6] CorebootPayloadPkg: " Leo Duran
@ 2017-01-13 22:14 ` Leo Duran
  2017-01-13 22:14 ` [RFC v2 5/6] OvmfPkg: " Leo Duran
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Leo Duran @ 2017-01-13 22:14 UTC (permalink / raw)
  To: edk2-devel
  Cc: lersek, jordan.l.justen, feng.tian, star.zeng, maurice.ma,
	prince.agyeman, ard.biesheuvel, brijesh.singh, Leo Duran

This patch adds the new DxeBmDmaLib (BmDmaLib class) library, which
provides an abstraction layer for DMA operations implemented by the
PciHostBridgeDxe driver.

Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Leo Duran  <leo.duran@amd.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
---
 MdeModulePkg/MdeModulePkg.dsc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index 311922e..b343c19 100644
--- a/MdeModulePkg/MdeModulePkg.dsc
+++ b/MdeModulePkg/MdeModulePkg.dsc
@@ -48,6 +48,7 @@ [LibraryClasses]
   PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
   PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
   SortLib|MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
   #
   # UEFI & PI
   #
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RFC v2 5/6] OvmfPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
  2017-01-13 22:14 [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Leo Duran
                   ` (3 preceding siblings ...)
  2017-01-13 22:14 ` [RFC v2 4/6] MdeModulePkg: " Leo Duran
@ 2017-01-13 22:14 ` Leo Duran
  2017-01-13 22:14 ` [RFC v2 6/6] MdeModulePkg: Modify PciHostBridgeDxe to use new BmDmaLib library Leo Duran
  2017-01-17 16:06 ` [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Duran, Leo
  6 siblings, 0 replies; 10+ messages in thread
From: Leo Duran @ 2017-01-13 22:14 UTC (permalink / raw)
  To: edk2-devel
  Cc: lersek, jordan.l.justen, feng.tian, star.zeng, maurice.ma,
	prince.agyeman, ard.biesheuvel, brijesh.singh, Leo Duran

This patch adds the new DxeBmDmaLib (BmDmaLib class) library, which
provides an abstraction layer for DMA operations implemented by the
PciHostBridgeDxe driver.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Leo Duran  <leo.duran@amd.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
---
 OvmfPkg/OvmfPkgIa32.dsc    | 1 +
 OvmfPkg/OvmfPkgIa32X64.dsc | 1 +
 OvmfPkg/OvmfPkgX64.dsc     | 1 +
 3 files changed, 3 insertions(+)

diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index e97f7f0..e1cf06a 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -89,6 +89,7 @@ [LibraryClasses]
   UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
   HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
   SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
   UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
   FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index 8e3e04c..711bca8 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -94,6 +94,7 @@ [LibraryClasses]
   UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
   HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
   SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
   UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
   FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 6ec3fe0..bf8bb15 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -94,6 +94,7 @@ [LibraryClasses]
   UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
   HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
   SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
   UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
   FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RFC v2 6/6] MdeModulePkg: Modify PciHostBridgeDxe to use new BmDmaLib library
  2017-01-13 22:14 [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Leo Duran
                   ` (4 preceding siblings ...)
  2017-01-13 22:14 ` [RFC v2 5/6] OvmfPkg: " Leo Duran
@ 2017-01-13 22:14 ` Leo Duran
  2017-01-17 16:06 ` [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Duran, Leo
  6 siblings, 0 replies; 10+ messages in thread
From: Leo Duran @ 2017-01-13 22:14 UTC (permalink / raw)
  To: edk2-devel
  Cc: lersek, jordan.l.justen, feng.tian, star.zeng, maurice.ma,
	prince.agyeman, ard.biesheuvel, brijesh.singh, Leo Duran

Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Leo Duran  <leo.duran@amd.com>
---
 .../Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf  |   1 +
 .../Bus/Pci/PciHostBridgeDxe/PciRootBridge.h       |  13 +-
 .../Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c     | 272 +++++----------------
 MdeModulePkg/MdeModulePkg.dsc                      |   1 +
 4 files changed, 67 insertions(+), 220 deletions(-)

diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
index d8b0439..35bb5c4 100644
--- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
+++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
@@ -42,6 +42,7 @@ [LibraryClasses]
   BaseLib
   PciSegmentLib
   PciHostBridgeLib
+  BmDmaLib
 
 [Protocols]
   gEfiMetronomeArchProtocolGuid                   ## CONSUMES
diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h
index 13185b4..c125fcd 100644
--- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h
+++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h
@@ -34,6 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/UefiBootServicesTableLib.h>
 #include <Library/BaseLib.h>
 #include <Library/PciSegmentLib.h>
+#include <Library/BmDmaLib.h>
 #include "PciHostResource.h"
 
 
@@ -43,17 +44,6 @@ typedef enum {
   PciOperation
 } OPERATION_TYPE;
 
-#define MAP_INFO_SIGNATURE  SIGNATURE_32 ('_', 'm', 'a', 'p')
-typedef struct {
-  UINT32                                    Signature;
-  LIST_ENTRY                                Link;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION Operation;
-  UINTN                                     NumberOfBytes;
-  UINTN                                     NumberOfPages;
-  EFI_PHYSICAL_ADDRESS                      HostAddress;
-  EFI_PHYSICAL_ADDRESS                      MappedHostAddress;
-} MAP_INFO;
-#define MAP_INFO_FROM_LINK(a) CR (a, MAP_INFO, Link, MAP_INFO_SIGNATURE)
 
 #define PCI_ROOT_BRIDGE_SIGNATURE SIGNATURE_32 ('_', 'p', 'r', 'b')
 
@@ -79,7 +69,6 @@ typedef struct {
   EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL   RootBridgeIo;
 
   BOOLEAN                           ResourceSubmitted;
-  LIST_ENTRY                        Maps;
 } PCI_ROOT_BRIDGE_INSTANCE;
 
 #define ROOT_BRIDGE_FROM_THIS(a) CR (a, PCI_ROOT_BRIDGE_INSTANCE, RootBridgeIo, PCI_ROOT_BRIDGE_SIGNATURE)
diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c
index 8af131b..8a74bf6 100644
--- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c
+++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c
@@ -17,7 +17,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include "PciRootBridge.h"
 #include "PciHostResource.h"
 
-#define NO_MAPPING  (VOID *) (UINTN) -1
 
 //
 // Lookup table for increment values based on transfer widths
@@ -55,6 +54,39 @@ UINT8 mOutStride[] = {
   0  // EfiPciWidthFillUint64
 };
 
+
+BM_DMA_OPERATION
+ConvertDmaOperation (
+  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION  RbOperation
+  )
+{
+  BM_DMA_OPERATION BmOperation;
+
+  switch (RbOperation) {
+  case EfiPciOperationBusMasterRead:
+  case EfiPciOperationBusMasterRead64:
+    BmOperation = DmaOperationBusMasterRead;
+    break;
+
+  case EfiPciOperationBusMasterWrite:
+  case EfiPciOperationBusMasterWrite64:
+    BmOperation = DmaOperationBusMasterWrite;
+    break;
+
+  case EfiPciOperationBusMasterCommonBuffer:
+  case EfiPciOperationBusMasterCommonBuffer64:
+    BmOperation = DmaOperationBusMasterCommonBuffer;
+    break;
+
+  default:
+    BmOperation = DmaOperationBusMasterMaximum;
+    break;
+  }
+
+  return BmOperation;
+}
+
+
 /**
   Construct the Pci Root Bridge instance.
 
@@ -168,7 +200,6 @@ CreateRootBridge (
     TypeMax * sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) + sizeof (EFI_ACPI_END_TAG_DESCRIPTOR)
     );
   ASSERT (RootBridge->ConfigBuffer != NULL);
-  InitializeListHead (&RootBridge->Maps);
 
   CopyMem (&RootBridge->Bus, &Bridge->Bus, sizeof (PCI_ROOT_BRIDGE_APERTURE));
   CopyMem (&RootBridge->Io, &Bridge->Io, sizeof (PCI_ROOT_BRIDGE_APERTURE));
@@ -1053,118 +1084,27 @@ RootBridgeIoMap (
   OUT    VOID                                       **Mapping
   )
 {
-  EFI_STATUS                                        Status;
-  PCI_ROOT_BRIDGE_INSTANCE                          *RootBridge;
-  EFI_PHYSICAL_ADDRESS                              PhysicalAddress;
-  MAP_INFO                                          *MapInfo;
-
-  if (HostAddress == NULL || NumberOfBytes == NULL || DeviceAddress == NULL ||
-      Mapping == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // Make sure that Operation is valid
-  //
-  if ((UINT32) Operation >= EfiPciOperationMaximum) {
-    return EFI_INVALID_PARAMETER;
-  }
+  PCI_ROOT_BRIDGE_INSTANCE *RootBridge;
+  BOOLEAN                  DmaAbove4GB;
+  BM_DMA_OPERATION         BmOperation;
 
   RootBridge = ROOT_BRIDGE_FROM_THIS (This);
-
-  PhysicalAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) HostAddress;
-  if ((!RootBridge->DmaAbove4G ||
-       (Operation != EfiPciOperationBusMasterRead64 &&
-        Operation != EfiPciOperationBusMasterWrite64 &&
-        Operation != EfiPciOperationBusMasterCommonBuffer64)) &&
-      ((PhysicalAddress + *NumberOfBytes) > SIZE_4GB)) {
-
-    //
-    // If the root bridge or the device cannot handle performing DMA above
-    // 4GB but any part of the DMA transfer being mapped is above 4GB, then
-    // map the DMA transfer to a buffer below 4GB.
-    //
-
-    if (Operation == EfiPciOperationBusMasterCommonBuffer ||
-        Operation == EfiPciOperationBusMasterCommonBuffer64) {
-      //
-      // Common Buffer operations can not be remapped.  If the common buffer
-      // if above 4GB, then it is not possible to generate a mapping, so return
-      // an error.
-      //
-      return EFI_UNSUPPORTED;
-    }
-
-    //
-    // Allocate a MAP_INFO structure to remember the mapping when Unmap() is
-    // called later.
-    //
-    MapInfo = AllocatePool (sizeof (MAP_INFO));
-    if (MapInfo == NULL) {
-      *NumberOfBytes = 0;
-      return EFI_OUT_OF_RESOURCES;
-    }
-
-    //
-    // Initialize the MAP_INFO structure
-    //
-    MapInfo->Signature         = MAP_INFO_SIGNATURE;
-    MapInfo->Operation         = Operation;
-    MapInfo->NumberOfBytes     = *NumberOfBytes;
-    MapInfo->NumberOfPages     = EFI_SIZE_TO_PAGES (MapInfo->NumberOfBytes);
-    MapInfo->HostAddress       = PhysicalAddress;
-    MapInfo->MappedHostAddress = SIZE_4GB - 1;
-
-    //
-    // Allocate a buffer below 4GB to map the transfer to.
-    //
-    Status = gBS->AllocatePages (
-                    AllocateMaxAddress,
-                    EfiBootServicesData,
-                    MapInfo->NumberOfPages,
-                    &MapInfo->MappedHostAddress
-                    );
-    if (EFI_ERROR (Status)) {
-      FreePool (MapInfo);
-      *NumberOfBytes = 0;
-      return Status;
-    }
-
-    //
-    // If this is a read operation from the Bus Master's point of view,
-    // then copy the contents of the real buffer into the mapped buffer
-    // so the Bus Master can read the contents of the real buffer.
-    //
-    if (Operation == EfiPciOperationBusMasterRead ||
-        Operation == EfiPciOperationBusMasterRead64) {
-      CopyMem (
-        (VOID *) (UINTN) MapInfo->MappedHostAddress,
-        (VOID *) (UINTN) MapInfo->HostAddress,
-        MapInfo->NumberOfBytes
-        );
-    }
-
-    InsertTailList (&RootBridge->Maps, &MapInfo->Link);
-
-    //
-    // The DeviceAddress is the address of the maped buffer below 4GB
-    //
-    *DeviceAddress = MapInfo->MappedHostAddress;
-    //
-    // Return a pointer to the MAP_INFO structure in Mapping
-    //
-    *Mapping       = MapInfo;
-  } else {
-    //
-    // If the root bridge CAN handle performing DMA above 4GB or
-    // the transfer is below 4GB, so the DeviceAddress is simply the
-    // HostAddress
-    //
-    *DeviceAddress = PhysicalAddress;
-    *Mapping       = NO_MAPPING;
-  }
-
-  return EFI_SUCCESS;
+  DmaAbove4GB = RootBridge->DmaAbove4G && (
+                  Operation == EfiPciOperationBusMasterRead64 ||
+                  Operation == EfiPciOperationBusMasterWrite64 ||
+                  Operation == EfiPciOperationBusMasterCommonBuffer64
+                  );
+
+  BmOperation = ConvertDmaOperation (Operation);
+
+  return BmDmaMap (
+           DmaAbove4GB,
+           BmOperation,
+           HostAddress,
+           NumberOfBytes,
+           DeviceAddress,
+           Mapping
+           );
 }
 
 /**
@@ -1191,58 +1131,7 @@ RootBridgeIoUnmap (
   IN VOID                             *Mapping
   )
 {
-  MAP_INFO                 *MapInfo;
-  LIST_ENTRY               *Link;
-  PCI_ROOT_BRIDGE_INSTANCE *RootBridge;
-
-  RootBridge = ROOT_BRIDGE_FROM_THIS (This);
-  //
-  // See if the Map() operation associated with this Unmap() required a mapping
-  // buffer. If a mapping buffer was not required, then this function simply
-  // returns EFI_SUCCESS.
-  //
-  if (Mapping == NO_MAPPING) {
-    return EFI_SUCCESS;
-  }
-
-  MapInfo = NO_MAPPING;
-  for (Link = GetFirstNode (&RootBridge->Maps)
-       ; !IsNull (&RootBridge->Maps, Link)
-       ; Link = GetNextNode (&RootBridge->Maps, Link)
-       ) {
-    MapInfo = MAP_INFO_FROM_LINK (Link);
-    if (MapInfo == Mapping) {
-      break;
-    }
-  }
-  //
-  // Mapping is not a valid value returned by Map()
-  //
-  if (MapInfo != Mapping) {
-    return EFI_INVALID_PARAMETER;
-  }
-  RemoveEntryList (&MapInfo->Link);
-
-  //
-  // If this is a write operation from the Bus Master's point of view,
-  // then copy the contents of the mapped buffer into the real buffer
-  // so the processor can read the contents of the real buffer.
-  //
-  if (MapInfo->Operation == EfiPciOperationBusMasterWrite ||
-      MapInfo->Operation == EfiPciOperationBusMasterWrite64) {
-    CopyMem (
-      (VOID *) (UINTN) MapInfo->HostAddress,
-      (VOID *) (UINTN) MapInfo->MappedHostAddress,
-      MapInfo->NumberOfBytes
-      );
-  }
-
-  //
-  // Free the mapped buffer and the MAP_INFO structure.
-  //
-  gBS->FreePages (MapInfo->MappedHostAddress, MapInfo->NumberOfPages);
-  FreePool (Mapping);
-  return EFI_SUCCESS;
+  return BmDmaUnmap (Mapping);
 }
 
 /**
@@ -1282,56 +1171,23 @@ RootBridgeIoAllocateBuffer (
   IN  UINT64                           Attributes
   )
 {
-  EFI_STATUS                Status;
-  EFI_PHYSICAL_ADDRESS      PhysicalAddress;
-  PCI_ROOT_BRIDGE_INSTANCE  *RootBridge;
-  EFI_ALLOCATE_TYPE         AllocateType;
+  PCI_ROOT_BRIDGE_INSTANCE *RootBridge;
+  BOOLEAN                  DmaAbove4GB;
 
-  //
-  // Validate Attributes
-  //
   if ((Attributes & EFI_PCI_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER) != 0) {
     return EFI_UNSUPPORTED;
   }
 
-  //
-  // Check for invalid inputs
-  //
-  if (HostAddress == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // The only valid memory types are EfiBootServicesData and
-  // EfiRuntimeServicesData
-  //
-  if (MemoryType != EfiBootServicesData &&
-      MemoryType != EfiRuntimeServicesData) {
-    return EFI_INVALID_PARAMETER;
-  }
-
   RootBridge = ROOT_BRIDGE_FROM_THIS (This);
+  DmaAbove4GB = RootBridge->DmaAbove4G &&
+                  (Attributes & EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE) != 0;
 
-  AllocateType = AllocateAnyPages;
-  if (!RootBridge->DmaAbove4G ||
-      (Attributes & EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE) == 0) {
-    //
-    // Limit allocations to memory below 4GB
-    //
-    AllocateType    = AllocateMaxAddress;
-    PhysicalAddress = (EFI_PHYSICAL_ADDRESS) (SIZE_4GB - 1);
-  }
-  Status = gBS->AllocatePages (
-                  AllocateType,
-                  MemoryType,
-                  Pages,
-                  &PhysicalAddress
-                  );
-  if (!EFI_ERROR (Status)) {
-    *HostAddress = (VOID *) (UINTN) PhysicalAddress;
-  }
-
-  return Status;
+  return BmDmaAllocateBuffer (
+           DmaAbove4GB,
+           MemoryType,
+           Pages,
+           HostAddress
+           );
 }
 
 /**
@@ -1356,7 +1212,7 @@ RootBridgeIoFreeBuffer (
   OUT VOID                             *HostAddress
   )
 {
-  return gBS->FreePages ((EFI_PHYSICAL_ADDRESS) (UINTN) HostAddress, Pages);
+  return BmDmaFreeBuffer (Pages, HostAddress);
 }
 
 /**
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index b343c19..47aa9b9 100644
--- a/MdeModulePkg/MdeModulePkg.dsc
+++ b/MdeModulePkg/MdeModulePkg.dsc
@@ -83,6 +83,7 @@ [LibraryClasses]
   PalLib|MdePkg/Library/BasePalLibNull/BasePalLibNull.inf
   CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
   FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf
+  BmDmaLib|MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
   #
   # Misc
   #
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library
  2017-01-13 22:14 [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Leo Duran
                   ` (5 preceding siblings ...)
  2017-01-13 22:14 ` [RFC v2 6/6] MdeModulePkg: Modify PciHostBridgeDxe to use new BmDmaLib library Leo Duran
@ 2017-01-17 16:06 ` Duran, Leo
  6 siblings, 0 replies; 10+ messages in thread
From: Duran, Leo @ 2017-01-17 16:06 UTC (permalink / raw)
  To: edk2-devel@lists.01.org
  Cc: feng.tian@intel.com, star.zeng@intel.com, lersek@redhat.com,
	jordan.l.justen@intel.com, maurice.ma@intel.com,
	prince.agyeman@intel.com, ard.biesheuvel@linaro.org,
	Singh, Brijesh

Feng, Star, et al, 

Any comments, questions or concerns?

Thanks,
Leo.

> -----Original Message-----
> From: Duran, Leo
> Sent: Friday, January 13, 2017 4:14 PM
> To: edk2-devel@lists.01.org
> Cc: lersek@redhat.com; jordan.l.justen@intel.com; feng.tian@intel.com;
> star.zeng@intel.com; maurice.ma@intel.com; prince.agyeman@intel.com;
> ard.biesheuvel@linaro.org; Singh, Brijesh <brijesh.singh@amd.com>; Duran,
> Leo <leo.duran@amd.com>
> Subject: [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library
> 
> This series provides an abstraction layer for Bus-master DMA operations as
> currently implemented by the PciHostBridgeDxe driver. The intent is to then
> allow override of this library as may be required by specific hardware
> implementations, such as AMD's Secure Encrypted Virtualization (SEV).
> 
> Please refer to the RFC discussion for SEV here:
> http://marc.info/?l=linux-mm&m=147190814023863&w=2
> 
> This new (BmDmaLib class) library is cloned from the existing DmaLib with an
> additional DmaAbove4GB (BOOLEAN) parameter for the Map and Allocate
> interfaces, so that decisions can be made about the need to allocate DMA
> buffers below the 4GB boundary.
> 
> NOTE: The abstraction layer is intended for Bus-master (DMA capable)
> devices, and not restricted to the PCI Root-Bridge use-case. Thus the
> rationale for not using EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION
> types.
> 
> Changes since RFC v1:
> - Patch 1: Restrict LIBRARY_CLASS to DXE_DRIVER in INF file.
> - Patches 2 through 5:
>   Change Subject: XxxPkg: Resolve BmDmaLib class for PciHostBridgeDxe
> driver
>   Add Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> - Add clarifications from RFC discussion to this cover letter.
> 
> Leo Duran (6):
>   MdeModulePkg: Add DxeBmDmaLib (BmDmaLib class) library
>   ArmVirtPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
>   CorebootPayloadPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
>   MdeModulePkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
>   OvmfPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver
>   MdeModulePkg: Modify PciHostBridgeDxe to use new BmDmaLib library
> 
>  ArmVirtPkg/ArmVirtQemu.dsc                         |   1 +
>  ArmVirtPkg/ArmVirtQemuKernel.dsc                   |   1 +
>  CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc      |   1 +
>  CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc   |   1 +
>  .../Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf  |   1 +
>  .../Bus/Pci/PciHostBridgeDxe/PciRootBridge.h       |  13 +-
>  .../Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c     | 272 +++++----------------
>  MdeModulePkg/MdeModulePkg.dsc                      |   3 +
>  OvmfPkg/OvmfPkgIa32.dsc                            |   1 +
>  OvmfPkg/OvmfPkgIa32X64.dsc                         |   1 +
>  OvmfPkg/OvmfPkgX64.dsc                             |   1 +
>  11 files changed, 76 insertions(+), 220 deletions(-)
> 
> --
> 1.9.1



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC v2 1/6] MdeModulePkg: Add DxeBmDmaLib (BmDmaLib class) library
  2017-01-13 22:14 ` [RFC v2 1/6] MdeModulePkg: Add " Leo Duran
@ 2017-02-09  1:59   ` Ni, Ruiyu
  2017-02-09 15:10     ` Duran, Leo
  0 siblings, 1 reply; 10+ messages in thread
From: Ni, Ruiyu @ 2017-02-09  1:59 UTC (permalink / raw)
  To: Leo Duran, edk2-devel@lists.01.org
  Cc: Tian, Feng, brijesh.singh@amd.com, ard.biesheuvel@linaro.org,
	Justen, Jordan L, Zeng, Star, lersek@redhat.com, Agyeman, Prince

Leo,
Did you forget to add the BmDmaLib implementation in the patch?

Thanks/Ray

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Leo Duran
> Sent: Saturday, January 14, 2017 6:14 AM
> To: edk2-devel@lists.01.org
> Cc: Tian, Feng <feng.tian@intel.com>; brijesh.singh@amd.com;
> ard.biesheuvel@linaro.org; Justen, Jordan L <jordan.l.justen@intel.com>;
> Leo Duran <leo.duran@amd.com>; Zeng, Star <star.zeng@intel.com>;
> lersek@redhat.com; Agyeman, Prince <prince.agyeman@intel.com>
> Subject: [edk2] [RFC v2 1/6] MdeModulePkg: Add DxeBmDmaLib (BmDmaLib
> class) library
> 
> This patch provides an abstraction layer for Bus-master DMA operations as
> currently implemented by the PciHostBridgeDxe driver. The intent is to then
> allow override of this library as may be required by specific hardware
> implementations, such as AMD's Secure Encrypted Virtualization (SEV).
> 
> This new (BmDmaLib class) library is cloned from the existing DmaLib with an
> additional DmaAbove4GB (BOOLEAN) parameter for the Map and Allocate
> interfaces, so that decisions can be made about the need to allocate DMA
> buffers below the 4GB boundary.
> ---
>  MdeModulePkg/MdeModulePkg.dsc | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/MdeModulePkg/MdeModulePkg.dsc
> b/MdeModulePkg/MdeModulePkg.dsc index 5996fe5..311922e 100644
> --- a/MdeModulePkg/MdeModulePkg.dsc
> +++ b/MdeModulePkg/MdeModulePkg.dsc
> @@ -275,6 +275,7 @@ [Components]
>    MdeModulePkg/Core/Pei/PeiMain.inf
>    MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
> 
> +  MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
>    MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
> 
> MdeModulePkg/Library/UefiMemoryAllocationProfileLib/UefiMemoryAlloca
> tionProfileLib.inf
> 
> MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllo
> cationLib.inf
> --
> 1.9.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC v2 1/6] MdeModulePkg: Add DxeBmDmaLib (BmDmaLib class) library
  2017-02-09  1:59   ` Ni, Ruiyu
@ 2017-02-09 15:10     ` Duran, Leo
  0 siblings, 0 replies; 10+ messages in thread
From: Duran, Leo @ 2017-02-09 15:10 UTC (permalink / raw)
  To: 'Ni, Ruiyu', edk2-devel@lists.01.org
  Cc: Tian, Feng, Singh, Brijesh, ard.biesheuvel@linaro.org,
	Justen, Jordan L, Zeng, Star, lersek@redhat.com, Agyeman, Prince

Hi Ray.
I'll review what I previously sent, and will resend if necessary.
Thanks,
Leo.

> -----Original Message-----
> From: Ni, Ruiyu [mailto:ruiyu.ni@intel.com]
> Sent: Wednesday, February 08, 2017 7:59 PM
> To: Duran, Leo <leo.duran@amd.com>; edk2-devel@lists.01.org
> Cc: Tian, Feng <feng.tian@intel.com>; Singh, Brijesh
> <brijesh.singh@amd.com>; ard.biesheuvel@linaro.org; Justen, Jordan L
> <jordan.l.justen@intel.com>; Zeng, Star <star.zeng@intel.com>;
> lersek@redhat.com; Agyeman, Prince <prince.agyeman@intel.com>
> Subject: RE: [edk2] [RFC v2 1/6] MdeModulePkg: Add DxeBmDmaLib
> (BmDmaLib class) library
> 
> Leo,
> Did you forget to add the BmDmaLib implementation in the patch?
> 
> Thanks/Ray
> 
> > -----Original Message-----
> > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> > Leo Duran
> > Sent: Saturday, January 14, 2017 6:14 AM
> > To: edk2-devel@lists.01.org
> > Cc: Tian, Feng <feng.tian@intel.com>; brijesh.singh@amd.com;
> > ard.biesheuvel@linaro.org; Justen, Jordan L
> > <jordan.l.justen@intel.com>; Leo Duran <leo.duran@amd.com>; Zeng,
> Star
> > <star.zeng@intel.com>; lersek@redhat.com; Agyeman, Prince
> > <prince.agyeman@intel.com>
> > Subject: [edk2] [RFC v2 1/6] MdeModulePkg: Add DxeBmDmaLib
> (BmDmaLib
> > class) library
> >
> > This patch provides an abstraction layer for Bus-master DMA operations
> > as currently implemented by the PciHostBridgeDxe driver. The intent is
> > to then allow override of this library as may be required by specific
> > hardware implementations, such as AMD's Secure Encrypted Virtualization
> (SEV).
> >
> > This new (BmDmaLib class) library is cloned from the existing DmaLib
> > with an additional DmaAbove4GB (BOOLEAN) parameter for the Map and
> > Allocate interfaces, so that decisions can be made about the need to
> > allocate DMA buffers below the 4GB boundary.
> > ---
> >  MdeModulePkg/MdeModulePkg.dsc | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/MdeModulePkg/MdeModulePkg.dsc
> > b/MdeModulePkg/MdeModulePkg.dsc index 5996fe5..311922e 100644
> > --- a/MdeModulePkg/MdeModulePkg.dsc
> > +++ b/MdeModulePkg/MdeModulePkg.dsc
> > @@ -275,6 +275,7 @@ [Components]
> >    MdeModulePkg/Core/Pei/PeiMain.inf
> >    MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
> >
> > +  MdeModulePkg/Library/DxeBmDmaLib/DxeBmDmaLib.inf
> >    MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
> >
> >
> MdeModulePkg/Library/UefiMemoryAllocationProfileLib/UefiMemoryAlloca
> > tionProfileLib.inf
> >
> >
> MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllo
> > cationLib.inf
> > --
> > 1.9.1
> >
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-02-09 15:10 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-13 22:14 [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Leo Duran
2017-01-13 22:14 ` [RFC v2 1/6] MdeModulePkg: Add " Leo Duran
2017-02-09  1:59   ` Ni, Ruiyu
2017-02-09 15:10     ` Duran, Leo
2017-01-13 22:14 ` [RFC v2 2/6] ArmVirtPkg: Resolve BmDmaLib class for PciHostBridgeDxe driver Leo Duran
2017-01-13 22:14 ` [RFC v2 3/6] CorebootPayloadPkg: " Leo Duran
2017-01-13 22:14 ` [RFC v2 4/6] MdeModulePkg: " Leo Duran
2017-01-13 22:14 ` [RFC v2 5/6] OvmfPkg: " Leo Duran
2017-01-13 22:14 ` [RFC v2 6/6] MdeModulePkg: Modify PciHostBridgeDxe to use new BmDmaLib library Leo Duran
2017-01-17 16:06 ` [RFC v2 0/6] DxeBmDmaLib (BmDmaLib class) library Duran, Leo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox