Skip to content

IOMMU: IOMMU backend support#559

Merged
midnightveil merged 5 commits into
seL4:mainfrom
au-ts:callumb_and_cheng/iommu_microkit_backend
Jul 15, 2026
Merged

IOMMU: IOMMU backend support#559
midnightveil merged 5 commits into
seL4:mainfrom
au-ts:callumb_and_cheng/iommu_microkit_backend

Conversation

@cazb2

@cazb2 cazb2 commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Adds logic for the creation of the IOMMU Capdl spec objects.
Adds an example demonstrating the use of the IOMMU.
Enables the IOMMU in the build_sdk.

cazb2 added 4 commits July 15, 2026 16:08
Update microkit to use rust-sel4 with the new x86 IOMMU capdl support.

Signed-off-by: Callum <c.berry@student.unsw.edu.au>
This commit adds a helper to extract the io page table index
bits from the config. This currently only supports a IOMMU
build on x86.

Signed-off-by: Callum <c.berry@student.unsw.edu.au>
This commit implements support for the x86 IOMMU Capdl spec.

The memory module is extended to allow for the construction of
IOMMU address spaces.

The Capdl spec refers to the IOSpace object as the IODevice object and
the IO Page tables as IOPTs. Within microkit we use IOSpace to refer to
the whole IO address space.

It also provides an example using the qemu dma capable test device,
demonstrating the use of the IOMMU. Note we did not need to provide
physical memory addresses for any dma buffers, proving the IOMMU
correctly translated our requests.

Signed-off-by: Callum <c.berry@student.unsw.edu.au>
While seL4 does not support large pages to be used by the IOMMU,
we will raise an error at the SDF parsing stage.

Signed-off-by: Callum <c.berry@student.unsw.edu.au>
@cazb2
cazb2 force-pushed the callumb_and_cheng/iommu_microkit_backend branch from 1b6af52 to 0f708aa Compare July 15, 2026 06:09
@midnightveil

Copy link
Copy Markdown
Collaborator

Some reviews: au-ts#8

Integrate the new IOMMU support from the rust-sel4 capdl initialiser.

Integrate the rust-sel4 PCI structure to avoid repeating definitions to
improve code maintainability. The traits that we implement on the
wrapper struct, make it easy to use the wrapper without having to worry
about accessing the underyling type.

Signed-off-by: Callum <c.berry@student.unsw.edu.au>
@cazb2
cazb2 force-pushed the callumb_and_cheng/iommu_microkit_backend branch from 0f708aa to ba6cf23 Compare July 15, 2026 06:25
@midnightveil
midnightveil merged commit 4f62412 into seL4:main Jul 15, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants