Summary
Podman's own CDI resolution (ExtractCDIDevices/isCDIDevice in pkg/specgen/generate/container_create.go) already handles rootless GPU device injection transparently — confirmed with @elezar. The podman driver's LinuxDevice { path } construction requires no rootless-specific branching; CDI-qualified device strings route identically regardless of rootless/rootful. This is no longer a driver code gap.
Updated Scope
The confirmed, real gap is CI/test coverage — there is no test or CI job exercising GPU device injection combined with rootless Podman:
- Every GPU-related test in
driver.rs/container.rs constructs the driver with rootless: false.
.github/workflows/e2e-gpu-test.yaml ("E2E Docker GPU") only covers Docker, no Podman variant.
- The README's rootless-adaptations section doesn't mention GPU/CDI.
Known Rootless-Specific Prerequisites (host/operator config, not driver code)
Rootless CDI GPU access has documented real-world friction (podman-container-tools/podman#17539), caused by host configuration rather than driver logic:
- NVIDIA Container Toolkit needs
no-cgroups = true set for rootless mode.
- The CDI spec (e.g.
/etc/cdi/nvidia.yaml) must be readable by the rootless user — /etc/cdi isn't rootless-writable, so it typically needs to live in a user-owned directory instead.
Any CI coverage added here should validate these prerequisites too, not just that CDI strings pass through the driver.
Acceptance Criteria
Explicitly Out of Scope
- Any change to
container.rs's device-injection code path — confirmed not needed.
- Docker driver GPU issues (tracked separately).
- Extending CDI/GPU support to Kubernetes or VM drivers.
Summary
Podman's own CDI resolution (
ExtractCDIDevices/isCDIDeviceinpkg/specgen/generate/container_create.go) already handles rootless GPU device injection transparently — confirmed with @elezar. The podman driver'sLinuxDevice { path }construction requires no rootless-specific branching; CDI-qualified device strings route identically regardless of rootless/rootful. This is no longer a driver code gap.Updated Scope
The confirmed, real gap is CI/test coverage — there is no test or CI job exercising GPU device injection combined with rootless Podman:
driver.rs/container.rsconstructs the driver withrootless: false..github/workflows/e2e-gpu-test.yaml("E2E Docker GPU") only covers Docker, no Podman variant.Known Rootless-Specific Prerequisites (host/operator config, not driver code)
Rootless CDI GPU access has documented real-world friction (podman-container-tools/podman#17539), caused by host configuration rather than driver logic:
no-cgroups = trueset for rootless mode./etc/cdi/nvidia.yaml) must be readable by the rootless user —/etc/cdiisn't rootless-writable, so it typically needs to live in a user-owned directory instead.Any CI coverage added here should validate these prerequisites too, not just that CDI strings pass through the driver.
Acceptance Criteria
no-cgroups, CDI spec location) documented for rootless deployments.Explicitly Out of Scope
container.rs's device-injection code path — confirmed not needed.