Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add SMMU Dxe Driver #320

Merged
merged 7 commits into from
Jan 14, 2025
Merged

Add SMMU Dxe Driver #320

merged 7 commits into from
Jan 14, 2025

Conversation

eeshanl
Copy link
Contributor

@eeshanl eeshanl commented Dec 13, 2024

Description

Adds SMMUV3 DXE driver to enable DMA remapping through the IOMMU protocol.

  • Consume SMMU config HOB
  • Add IORT
  • Configure SMMU, stream table, cmd/event queues
  • Configure SMMU page tables
  • Add IoMmu protocol
  • Enable SMMU for stage 2 translation & DMA remapping

For details on how to complete these options and their meaning refer to CONTRIBUTING.md.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?
  • Backport to release branch?

How This Was Tested

Tested in Qemu with mu_tiano_platforms:

  • Tested UEFI functionality with SMMU/IOMMU enabled.
  • Booted to OS while SMMU/IOMMU enabled.

Integration Instructions

To integrate with mu_tiano_platforms the following is also required:

@github-actions github-actions bot added the impact:non-functional Does not have a functional impact label Dec 13, 2024
@eeshanl
Copy link
Contributor Author

eeshanl commented Dec 13, 2024

@microsoft-github-policy-service agree company="Microsoft"

@github-actions github-actions bot added the type:documentation Improvements or additions to documentation label Dec 13, 2024
@eeshanl eeshanl force-pushed the smmuv3 branch 4 times, most recently from dd63e44 to e4c4375 Compare December 14, 2024 00:04
@github-actions github-actions bot added the impact:security Has a security impact label Dec 14, 2024
@eeshanl eeshanl force-pushed the smmuv3 branch 2 times, most recently from b719805 to e46b7b5 Compare December 14, 2024 01:01
@eeshanl eeshanl marked this pull request as ready for review December 14, 2024 01:20
ArmPkg/ArmPkg.dec Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3Util.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3Util.c Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3Util.c Outdated Show resolved Hide resolved
Copy link
Member

@spbrogan spbrogan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will do more review when time permits.

ArmPkg/Include/Guid/SmmuConfig.h Outdated Show resolved Hide resolved
ArmPkg/Include/Guid/SmmuConfig.h Show resolved Hide resolved
ArmPkg/Include/Guid/SmmuConfig.h Show resolved Hide resolved
ArmPkg/Include/Guid/SmmuConfig.h Outdated Show resolved Hide resolved
ArmPkg/Include/Guid/SmmuConfig.h Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3.h Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.inf Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.inf Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.c Outdated Show resolved Hide resolved
@eeshanl eeshanl self-assigned this Dec 17, 2024
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.c Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3.h Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3Registers.h Outdated Show resolved Hide resolved
ArmPkg/Include/Guid/SmmuConfig.h Outdated Show resolved Hide resolved
@eeshanl eeshanl removed the impact:non-functional Does not have a functional impact label Dec 18, 2024
ArmPkg/ArmPkg.dec Outdated Show resolved Hide resolved
Copy link
Contributor

@os-d os-d left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good, I would recommend adding ASSERTs to more failure cases here, this is intricate logic and catching failures at the source would be good.

ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/IoMmu.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.inf Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.inf Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3Util.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3Util.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuV3Util.c Outdated Show resolved Hide resolved
@eeshanl eeshanl force-pushed the smmuv3 branch 4 times, most recently from 6a23951 to 83df39b Compare December 21, 2024 22:44
ArmPkg/Drivers/SmmuDxe/SmmuDxe.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/README.md Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.c Outdated Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/README.md Show resolved Hide resolved
ArmPkg/Drivers/SmmuDxe/SmmuDxe.c Outdated Show resolved Hide resolved
@eeshanl eeshanl force-pushed the smmuv3 branch 2 times, most recently from f51f510 to 1cb65eb Compare January 8, 2025 09:48
- Consume SMMU config HOB
- Add IORT
- Configure Smmu, stream table, cmd/event queues
- Configure SMMU page tables
- Add IoMmu protocol
- Enable SMMU for stage 2 translation & dma remapping
@eeshanl eeshanl merged commit bba6299 into microsoft:dev/202405 Jan 14, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
impact:security Has a security impact type:documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants