[edk2] [PATCH 00/11] Add IOMMU PEI support.

Jiewen Yao posted 11 patches 6 years, 7 months ago
Failed in applying to current master (apply log)
IntelSiliconPkg/Include/IndustryStandard/Vtd.h                             |   6 +
IntelSiliconPkg/Include/Ppi/VtdInfo.h                                      |  40 ++
IntelSiliconPkg/IntelSiliconPkg.dec                                        |   3 +
IntelSiliconPkg/IntelSiliconPkg.dsc                                        |  10 +
IntelSiliconPkg/IntelVTdDxe/VtdReg.c                                       |  51 +-
IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c                               | 314 ++++++++++
IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c                            | 615 ++++++++++++++++++++
IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h                            |  68 +++
IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf                          |  59 ++
IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni                          |  20 +
IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni                     |  20 +
IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c        |  65 +++
IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf      |  51 ++
IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni      |  20 +
IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra.uni |  20 +
MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c                                      | 249 ++++++++
MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c                                    |  55 +-
MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.h                                    |   9 +-
MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c                                     |  55 +-
MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.h                                     | 107 ++++
MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf                                   |   3 +
MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c                                   |  47 +-
MdeModulePkg/Bus/Pci/XhciPei/XhciSched.h                                   |   1 +
MdeModulePkg/Include/Ppi/IoMmu.h                                           | 196 +++++++
MdeModulePkg/MdeModulePkg.dec                                              |   3 +
25 files changed, 2052 insertions(+), 35 deletions(-)
create mode 100644 IntelSiliconPkg/Include/Ppi/VtdInfo.h
create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c
create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c
create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h
create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf
create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni
create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni
create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c
create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf
create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni
create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra.uni
create mode 100644 MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c
create mode 100644 MdeModulePkg/Include/Ppi/IoMmu.h
[edk2] [PATCH 00/11] Add IOMMU PEI support.
Posted by Jiewen Yao 6 years, 7 months ago
This series patch added IOMMU PEI support.
It is also posted to https://github.com/jyao1/edk2/tree/IoMmuPpi.

1) Patch 1 and 2 add EDKII_IOMMU_PPI.
It is similar to EDKII_IOMMU_PROTOCOL.

2) Patch 3 and 4 add Intel VTD PMR register support
for DXE phase IntelVTdDxe.
This is to prepare handle PMR usage in PEI phase.

3) Patch 5 and 6 add EDKII_VTD_INFO_PPI.
This PPI is to provide Intel VTD information in PEI.
In DXE, the VTd driver can get VTD info from ACPI DMAR table.
But in PEI, there is no way to get VTD info before.
VTD_INFO_PPI is added to resolve the problem.

4) Patch 7 and 8 add IntelVTdPmrPei driver.
This driver consumes EDKII_VTD_INFO_PPI and produces IOMMU_PPI.
It enables VTD PMR register to provide DMA protection.
The PMR based DMA protection is a simple solution to
mark 2 regions can be DMA protected.
The IntelVTdPmrPei allocates a small chunk buffer for DMA
and protect the rest memory.

5) Patch 9 and 10 add a sample VTdInfo PEI driver.
It provides a sample to show how to report VTd info in PEI phase.

6) Patch 11 updates XhciPei driver to consume IOMMU_PPI.
If the IOMMU_PPI is present, XhciPei will use IOMMU_PPI to
allocate DMA buffer. Or the XhciPei will still use old way -
PeiServiceAllocatePage to allocate DRAM as DMA buffer.
This is the first PEI device driver consuming IOMMU_PPI to
show the concept. The rest PEI device drivers will be
updated in separated patches.


This series patch is validated on Intel Kabylake Platform.
1) We can use XHCI to do file transfer in PEI phase,
2) We can still use XHCI in DXE phase, such as shell environment.
3) If the device driver does not consume IOMMU_PPI, the DMA fails.

Jiewen Yao (11):
  MdeModulePkg/Include: Add IOMMU_PPI.
  MdeModulePkg/Dec: Add IOMMU_PPI GUID.
  IntelSiliconPkg/Vtd.h: Add definition for PMR.
  IntelSiliconPkg/VTdDxe: Disable PMR
  IntelSiliconPkg/include: Add VTD_INFO PPI.
  IntelSiliconPkg/dec: Add VTD_INFO PPI GUID
  IntelSiliconPkg: Add IntelVTdPmrPei.
  IntelSiliconPkg/dsc: Add IntelVTdPmrPeim.
  IntelSiliconPkg: Add PlatformVTdInfoSamplePei.
  IntelSiliconPkg/dsc: Add PlatformVTdInfoSamplePei.
  MdeModulePkg/XhciPei: Support IoMmu.

 IntelSiliconPkg/Include/IndustryStandard/Vtd.h                             |   6 +
 IntelSiliconPkg/Include/Ppi/VtdInfo.h                                      |  40 ++
 IntelSiliconPkg/IntelSiliconPkg.dec                                        |   3 +
 IntelSiliconPkg/IntelSiliconPkg.dsc                                        |  10 +
 IntelSiliconPkg/IntelVTdDxe/VtdReg.c                                       |  51 +-
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c                               | 314 ++++++++++
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c                            | 615 ++++++++++++++++++++
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h                            |  68 +++
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf                          |  59 ++
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni                          |  20 +
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni                     |  20 +
 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c        |  65 +++
 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf      |  51 ++
 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni      |  20 +
 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra.uni |  20 +
 MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c                                      | 249 ++++++++
 MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c                                    |  55 +-
 MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.h                                    |   9 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c                                     |  55 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.h                                     | 107 ++++
 MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf                                   |   3 +
 MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c                                   |  47 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhciSched.h                                   |   1 +
 MdeModulePkg/Include/Ppi/IoMmu.h                                           | 196 +++++++
 MdeModulePkg/MdeModulePkg.dec                                              |   3 +
 25 files changed, 2052 insertions(+), 35 deletions(-)
 create mode 100644 IntelSiliconPkg/Include/Ppi/VtdInfo.h
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni
 create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c
 create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf
 create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni
 create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra.uni
 create mode 100644 MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c
 create mode 100644 MdeModulePkg/Include/Ppi/IoMmu.h

-- 
2.7.4.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH 00/11] Add IOMMU PEI support.
Posted by Zeng, Star 6 years, 7 months ago
I have been confused by where should new module be put for some time.
When should a new module be put at XXXPkg/Universal? For example, MdeModule/Universal, UefiCpuPkg/Universal, ....
When should a new module be put at XXXPkg/Feature? For example, UefiCpuPkg/Feature.
When should a new module be put at the root of a package folder? For example, UefiCpuPkg/PiSmmCpuDxeSmm, IntelSiliconPkg/IntelVTdDxe, ....

Is it better or not to put IntelVTdDxe, PlatformVTdSampleDxe and new IntelVTdPmrPei, PlatformVTdInfoSamplePei in IntelSiliconPkg/Feature/VTd together?


Thanks,
Star
-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Jiewen Yao
Sent: Friday, September 8, 2017 11:04 PM
To: edk2-devel@lists.01.org
Subject: [edk2] [PATCH 00/11] Add IOMMU PEI support.

This series patch added IOMMU PEI support.
It is also posted to https://github.com/jyao1/edk2/tree/IoMmuPpi.

1) Patch 1 and 2 add EDKII_IOMMU_PPI.
It is similar to EDKII_IOMMU_PROTOCOL.

2) Patch 3 and 4 add Intel VTD PMR register support for DXE phase IntelVTdDxe.
This is to prepare handle PMR usage in PEI phase.

3) Patch 5 and 6 add EDKII_VTD_INFO_PPI.
This PPI is to provide Intel VTD information in PEI.
In DXE, the VTd driver can get VTD info from ACPI DMAR table.
But in PEI, there is no way to get VTD info before.
VTD_INFO_PPI is added to resolve the problem.

4) Patch 7 and 8 add IntelVTdPmrPei driver.
This driver consumes EDKII_VTD_INFO_PPI and produces IOMMU_PPI.
It enables VTD PMR register to provide DMA protection.
The PMR based DMA protection is a simple solution to mark 2 regions can be DMA protected.
The IntelVTdPmrPei allocates a small chunk buffer for DMA and protect the rest memory.

5) Patch 9 and 10 add a sample VTdInfo PEI driver.
It provides a sample to show how to report VTd info in PEI phase.

6) Patch 11 updates XhciPei driver to consume IOMMU_PPI.
If the IOMMU_PPI is present, XhciPei will use IOMMU_PPI to allocate DMA buffer. Or the XhciPei will still use old way - PeiServiceAllocatePage to allocate DRAM as DMA buffer.
This is the first PEI device driver consuming IOMMU_PPI to show the concept. The rest PEI device drivers will be updated in separated patches.


This series patch is validated on Intel Kabylake Platform.
1) We can use XHCI to do file transfer in PEI phase,
2) We can still use XHCI in DXE phase, such as shell environment.
3) If the device driver does not consume IOMMU_PPI, the DMA fails.

Jiewen Yao (11):
  MdeModulePkg/Include: Add IOMMU_PPI.
  MdeModulePkg/Dec: Add IOMMU_PPI GUID.
  IntelSiliconPkg/Vtd.h: Add definition for PMR.
  IntelSiliconPkg/VTdDxe: Disable PMR
  IntelSiliconPkg/include: Add VTD_INFO PPI.
  IntelSiliconPkg/dec: Add VTD_INFO PPI GUID
  IntelSiliconPkg: Add IntelVTdPmrPei.
  IntelSiliconPkg/dsc: Add IntelVTdPmrPeim.
  IntelSiliconPkg: Add PlatformVTdInfoSamplePei.
  IntelSiliconPkg/dsc: Add PlatformVTdInfoSamplePei.
  MdeModulePkg/XhciPei: Support IoMmu.

 IntelSiliconPkg/Include/IndustryStandard/Vtd.h                             |   6 +
 IntelSiliconPkg/Include/Ppi/VtdInfo.h                                      |  40 ++
 IntelSiliconPkg/IntelSiliconPkg.dec                                        |   3 +
 IntelSiliconPkg/IntelSiliconPkg.dsc                                        |  10 +
 IntelSiliconPkg/IntelVTdDxe/VtdReg.c                                       |  51 +-
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c                               | 314 ++++++++++
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c                            | 615 ++++++++++++++++++++
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h                            |  68 +++
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf                          |  59 ++
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni                          |  20 +
 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni                     |  20 +
 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c        |  65 +++
 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf      |  51 ++
 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni      |  20 +
 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra.uni |  20 +
 MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c                                      | 249 ++++++++
 MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c                                    |  55 +-
 MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.h                                    |   9 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c                                     |  55 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.h                                     | 107 ++++
 MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf                                   |   3 +
 MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c                                   |  47 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhciSched.h                                   |   1 +
 MdeModulePkg/Include/Ppi/IoMmu.h                                           | 196 +++++++
 MdeModulePkg/MdeModulePkg.dec                                              |   3 +
 25 files changed, 2052 insertions(+), 35 deletions(-)  create mode 100644 IntelSiliconPkg/Include/Ppi/VtdInfo.h
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni
 create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni
 create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c
 create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf
 create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni
 create mode 100644 IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra.uni
 create mode 100644 MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c
 create mode 100644 MdeModulePkg/Include/Ppi/IoMmu.h

--
2.7.4.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH 00/11] Add IOMMU PEI support.
Posted by Yao, Jiewen 6 years, 7 months ago
Good question.

Yes, I think we can put all VTd related components to IntelSiliconPkg/Feature/VTd.
Once we finished the review, I would submit another patch to move all components to the new location.

Thank you
Yao Jiewen


> -----Original Message-----
> From: Zeng, Star
> Sent: Wednesday, September 13, 2017 6:14 PM
> To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
> Cc: Zeng, Star <star.zeng@intel.com>
> Subject: RE: [edk2] [PATCH 00/11] Add IOMMU PEI support.
> 
> I have been confused by where should new module be put for some time.
> When should a new module be put at XXXPkg/Universal? For example,
> MdeModule/Universal, UefiCpuPkg/Universal, ....
> When should a new module be put at XXXPkg/Feature? For example,
> UefiCpuPkg/Feature.
> When should a new module be put at the root of a package folder? For example,
> UefiCpuPkg/PiSmmCpuDxeSmm, IntelSiliconPkg/IntelVTdDxe, ....
> 
> Is it better or not to put IntelVTdDxe, PlatformVTdSampleDxe and new
> IntelVTdPmrPei, PlatformVTdInfoSamplePei in IntelSiliconPkg/Feature/VTd
> together?
> 
> 
> Thanks,
> Star
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Jiewen
> Yao
> Sent: Friday, September 8, 2017 11:04 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [PATCH 00/11] Add IOMMU PEI support.
> 
> This series patch added IOMMU PEI support.
> It is also posted to https://github.com/jyao1/edk2/tree/IoMmuPpi.
> 
> 1) Patch 1 and 2 add EDKII_IOMMU_PPI.
> It is similar to EDKII_IOMMU_PROTOCOL.
> 
> 2) Patch 3 and 4 add Intel VTD PMR register support for DXE phase IntelVTdDxe.
> This is to prepare handle PMR usage in PEI phase.
> 
> 3) Patch 5 and 6 add EDKII_VTD_INFO_PPI.
> This PPI is to provide Intel VTD information in PEI.
> In DXE, the VTd driver can get VTD info from ACPI DMAR table.
> But in PEI, there is no way to get VTD info before.
> VTD_INFO_PPI is added to resolve the problem.
> 
> 4) Patch 7 and 8 add IntelVTdPmrPei driver.
> This driver consumes EDKII_VTD_INFO_PPI and produces IOMMU_PPI.
> It enables VTD PMR register to provide DMA protection.
> The PMR based DMA protection is a simple solution to mark 2 regions can be
> DMA protected.
> The IntelVTdPmrPei allocates a small chunk buffer for DMA and protect the rest
> memory.
> 
> 5) Patch 9 and 10 add a sample VTdInfo PEI driver.
> It provides a sample to show how to report VTd info in PEI phase.
> 
> 6) Patch 11 updates XhciPei driver to consume IOMMU_PPI.
> If the IOMMU_PPI is present, XhciPei will use IOMMU_PPI to allocate DMA
> buffer. Or the XhciPei will still use old way - PeiServiceAllocatePage to allocate
> DRAM as DMA buffer.
> This is the first PEI device driver consuming IOMMU_PPI to show the concept.
> The rest PEI device drivers will be updated in separated patches.
> 
> 
> This series patch is validated on Intel Kabylake Platform.
> 1) We can use XHCI to do file transfer in PEI phase,
> 2) We can still use XHCI in DXE phase, such as shell environment.
> 3) If the device driver does not consume IOMMU_PPI, the DMA fails.
> 
> Jiewen Yao (11):
>   MdeModulePkg/Include: Add IOMMU_PPI.
>   MdeModulePkg/Dec: Add IOMMU_PPI GUID.
>   IntelSiliconPkg/Vtd.h: Add definition for PMR.
>   IntelSiliconPkg/VTdDxe: Disable PMR
>   IntelSiliconPkg/include: Add VTD_INFO PPI.
>   IntelSiliconPkg/dec: Add VTD_INFO PPI GUID
>   IntelSiliconPkg: Add IntelVTdPmrPei.
>   IntelSiliconPkg/dsc: Add IntelVTdPmrPeim.
>   IntelSiliconPkg: Add PlatformVTdInfoSamplePei.
>   IntelSiliconPkg/dsc: Add PlatformVTdInfoSamplePei.
>   MdeModulePkg/XhciPei: Support IoMmu.
> 
>  IntelSiliconPkg/Include/IndustryStandard/Vtd.h
> |   6 +
>  IntelSiliconPkg/Include/Ppi/VtdInfo.h
> |  40 ++
>  IntelSiliconPkg/IntelSiliconPkg.dec
> |   3 +
>  IntelSiliconPkg/IntelSiliconPkg.dsc
> |  10 +
>  IntelSiliconPkg/IntelVTdDxe/VtdReg.c
> |  51 +-
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c
> | 314 ++++++++++
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c
> | 615 ++++++++++++++++++++
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h
> |  68 +++
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf
> |  59 ++
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni
> |  20 +
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni
> |  20 +
>  IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c
> |  65 +++
>  IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf
> |  51 ++
>  IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni
> |  20 +
>  IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra.uni
> |  20 +
>  MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c
> | 249 ++++++++
>  MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c
> |  55 +-
>  MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.h
> |   9 +-
>  MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c
> |  55 +-
>  MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.h
> | 107 ++++
>  MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
> |   3 +
>  MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c
> |  47 +-
>  MdeModulePkg/Bus/Pci/XhciPei/XhciSched.h
> |   1 +
>  MdeModulePkg/Include/Ppi/IoMmu.h
> | 196 +++++++
>  MdeModulePkg/MdeModulePkg.dec
> |   3 +
>  25 files changed, 2052 insertions(+), 35 deletions(-)  create mode 100644
> IntelSiliconPkg/Include/Ppi/VtdInfo.h
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni
>  create mode 100644
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c
>  create mode 100644
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf
>  create mode 100644
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni
>  create mode 100644
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra.uni
>  create mode 100644 MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c
>  create mode 100644 MdeModulePkg/Include/Ppi/IoMmu.h
> 
> --
> 2.7.4.windows.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH 00/11] Add IOMMU PEI support.
Posted by Zeng, Star 6 years, 7 months ago
Reviewed-by: Star Zeng <star.zeng@intel.com>

-----Original Message-----
From: Yao, Jiewen 
Sent: Wednesday, September 13, 2017 6:19 PM
To: Zeng, Star <star.zeng@intel.com>; edk2-devel@lists.01.org
Subject: RE: [edk2] [PATCH 00/11] Add IOMMU PEI support.

Good question.

Yes, I think we can put all VTd related components to IntelSiliconPkg/Feature/VTd.
Once we finished the review, I would submit another patch to move all components to the new location.

Thank you
Yao Jiewen


> -----Original Message-----
> From: Zeng, Star
> Sent: Wednesday, September 13, 2017 6:14 PM
> To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
> Cc: Zeng, Star <star.zeng@intel.com>
> Subject: RE: [edk2] [PATCH 00/11] Add IOMMU PEI support.
> 
> I have been confused by where should new module be put for some time.
> When should a new module be put at XXXPkg/Universal? For example, 
> MdeModule/Universal, UefiCpuPkg/Universal, ....
> When should a new module be put at XXXPkg/Feature? For example, 
> UefiCpuPkg/Feature.
> When should a new module be put at the root of a package folder? For 
> example, UefiCpuPkg/PiSmmCpuDxeSmm, IntelSiliconPkg/IntelVTdDxe, ....
> 
> Is it better or not to put IntelVTdDxe, PlatformVTdSampleDxe and new 
> IntelVTdPmrPei, PlatformVTdInfoSamplePei in 
> IntelSiliconPkg/Feature/VTd together?
> 
> 
> Thanks,
> Star
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of 
> Jiewen Yao
> Sent: Friday, September 8, 2017 11:04 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [PATCH 00/11] Add IOMMU PEI support.
> 
> This series patch added IOMMU PEI support.
> It is also posted to https://github.com/jyao1/edk2/tree/IoMmuPpi.
> 
> 1) Patch 1 and 2 add EDKII_IOMMU_PPI.
> It is similar to EDKII_IOMMU_PROTOCOL.
> 
> 2) Patch 3 and 4 add Intel VTD PMR register support for DXE phase IntelVTdDxe.
> This is to prepare handle PMR usage in PEI phase.
> 
> 3) Patch 5 and 6 add EDKII_VTD_INFO_PPI.
> This PPI is to provide Intel VTD information in PEI.
> In DXE, the VTd driver can get VTD info from ACPI DMAR table.
> But in PEI, there is no way to get VTD info before.
> VTD_INFO_PPI is added to resolve the problem.
> 
> 4) Patch 7 and 8 add IntelVTdPmrPei driver.
> This driver consumes EDKII_VTD_INFO_PPI and produces IOMMU_PPI.
> It enables VTD PMR register to provide DMA protection.
> The PMR based DMA protection is a simple solution to mark 2 regions 
> can be DMA protected.
> The IntelVTdPmrPei allocates a small chunk buffer for DMA and protect 
> the rest memory.
> 
> 5) Patch 9 and 10 add a sample VTdInfo PEI driver.
> It provides a sample to show how to report VTd info in PEI phase.
> 
> 6) Patch 11 updates XhciPei driver to consume IOMMU_PPI.
> If the IOMMU_PPI is present, XhciPei will use IOMMU_PPI to allocate 
> DMA buffer. Or the XhciPei will still use old way - 
> PeiServiceAllocatePage to allocate DRAM as DMA buffer.
> This is the first PEI device driver consuming IOMMU_PPI to show the concept.
> The rest PEI device drivers will be updated in separated patches.
> 
> 
> This series patch is validated on Intel Kabylake Platform.
> 1) We can use XHCI to do file transfer in PEI phase,
> 2) We can still use XHCI in DXE phase, such as shell environment.
> 3) If the device driver does not consume IOMMU_PPI, the DMA fails.
> 
> Jiewen Yao (11):
>   MdeModulePkg/Include: Add IOMMU_PPI.
>   MdeModulePkg/Dec: Add IOMMU_PPI GUID.
>   IntelSiliconPkg/Vtd.h: Add definition for PMR.
>   IntelSiliconPkg/VTdDxe: Disable PMR
>   IntelSiliconPkg/include: Add VTD_INFO PPI.
>   IntelSiliconPkg/dec: Add VTD_INFO PPI GUID
>   IntelSiliconPkg: Add IntelVTdPmrPei.
>   IntelSiliconPkg/dsc: Add IntelVTdPmrPeim.
>   IntelSiliconPkg: Add PlatformVTdInfoSamplePei.
>   IntelSiliconPkg/dsc: Add PlatformVTdInfoSamplePei.
>   MdeModulePkg/XhciPei: Support IoMmu.
> 
>  IntelSiliconPkg/Include/IndustryStandard/Vtd.h
> |   6 +
>  IntelSiliconPkg/Include/Ppi/VtdInfo.h
> |  40 ++
>  IntelSiliconPkg/IntelSiliconPkg.dec
> |   3 +
>  IntelSiliconPkg/IntelSiliconPkg.dsc
> |  10 +
>  IntelSiliconPkg/IntelVTdDxe/VtdReg.c
> |  51 +-
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c
> | 314 ++++++++++
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c
> | 615 ++++++++++++++++++++
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h
> |  68 +++
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf
> |  59 ++
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni
> |  20 +
>  IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni
> |  20 +
>  IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c
> |  65 +++
>  IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf
> |  51 ++
>  IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni
> |  20 +
>  
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra
> .uni
> |  20 +
>  MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c
> | 249 ++++++++
>  MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c
> |  55 +-
>  MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.h
> |   9 +-
>  MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c
> |  55 +-
>  MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.h
> | 107 ++++
>  MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
> |   3 +
>  MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c
> |  47 +-
>  MdeModulePkg/Bus/Pci/XhciPei/XhciSched.h
> |   1 +
>  MdeModulePkg/Include/Ppi/IoMmu.h
> | 196 +++++++
>  MdeModulePkg/MdeModulePkg.dec
> |   3 +
>  25 files changed, 2052 insertions(+), 35 deletions(-)  create mode 
> 100644 IntelSiliconPkg/Include/Ppi/VtdInfo.h
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmr.c
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.c
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.h
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.inf
>  create mode 100644 IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPei.uni
>  create mode 100644 
> IntelSiliconPkg/IntelVTdPmrPei/IntelVTdPmrPeiExtra.uni
>  create mode 100644
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.c
>  create mode 100644
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.inf
>  create mode 100644
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePei.uni
>  create mode 100644
> IntelSiliconPkg/PlatformVTdInfoSamplePei/PlatformVTdInfoSamplePeiExtra
> .uni  create mode 100644 MdeModulePkg/Bus/Pci/XhciPei/DmaMem.c
>  create mode 100644 MdeModulePkg/Include/Ppi/IoMmu.h
> 
> --
> 2.7.4.windows.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel