NVIDIA / NVIDIA/OpenShell

fix(gpu): derive CUDA-required Jetson sysfs policy

Open
#3,348 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

state:triage-needed
Dominant language
Rust
Stars
8.7k
Forks
1.3k
Avg merge
2d 11h
Merged PRs (30d)
253

Description

Problem

Native Docker CDI can inject the Jetson GPU devices, libraries, and supplemental groups correctly, but the OpenShell supervisor's inner Landlock policy still prevents non-root CUDA initialization on NVIDIA Jetson AGX Thor.

This was isolated while validating the CDI stack in #1606 through #2775, #2776, #2265, and #2846 for NVIDIA/NemoClaw#7610 / NVIDIA/NemoClaw#8910:

host                                      cuInit(0)=0
plain Docker CDI                          cuInit(0)=0
same container and non-root UID/GIDs      cuInit(0)=0
OpenShell native CDI without sysfs access cuInit(0)=801
OpenShell native CDI with read-only /sys  cuInit(0)=0

The successful run used a qualification-only broad read-only /sys grant. That proves the missing boundary but is not an acceptable production fix. OpenShell remains the owner of CDI-derived hardware policy; downstream consumers must not guess or trust arbitrary additive paths.

Expected behavior

For a supported Jetson CDI device, OpenShell derives or supplies the minimum CUDA-required read-only sysfs contract and the non-root sandbox user can initialize CUDA. Non-GPU sandboxes receive no additional sysfs access. Missing, malformed, or unsafe hardware requirements fail closed with an actionable diagnostic.

Acceptance

  • Identify and document the minimum sysfs paths required by Jetson OpenRM; do not grant broad /sys by default.
  • Represent the requirement through a stable OpenShell-owned CDI/policy contract rather than a downstream static allowlist.
  • Preserve the current rejection of unsafe broad CDI-derived paths from #1606.
  • Add hardware-free policy tests for the derived/approved paths, unsafe paths, missing metadata, and the non-GPU negative case.
  • On exact released commits, complete full onboarding with exit 0 and prove non-root nvidia-smi, /proc/<pid>/task/<tid>/comm write, and cuInit(0)=0 on both AGX Thor and IGX Orin.
  • Prove CUDA remains usable after supported restart, resume, and rebuild lifecycles.

Current evidence

  • NVIDIA/OpenShell#2846#issuecomment-5684128551 records the AGX Thor A/B result and the qualification-only workaround.
  • NVIDIA/NemoClaw#8910#issuecomment-5684731268 records the accepted downstream ownership, compatibility, security, and validation decision.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the existing CDI-derived hardware policy and the rejection behavior from #1606, then review the evidence in #2846 and #8910. Define the minimum Jetson OpenRM sysfs contract, add hardware-free tests for approved, unsafe, missing, and non-GPU cases, and validate the required CUDA, onboarding, and lifecycle behavior on AGX Thor and IGX Orin.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, rust
Domain
infrastructure, security
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.