VM Passthrough with the NPU DRA Driver¶
Complete the sandboxed workload setup, then use the NPU DRA Driver to attach an NPU through a ResourceClaim. Select NPUs by product or topology.
VMs use the vfio-npu.rebellions.ai DeviceClass. For allocation through extended resources instead, see Sandbox Device Plugin.
Operator Configuration¶
For a VM-only cluster, use the DRA tab in KubeVirt VM passthrough. For a mixed container and VM cluster, use the same tab in the Helm settings for mixed container and VM workloads.
Installation Verification¶
Check the pod status and the NPU resources available to VMs.
Pod Status¶
Check the VFIO Manager and DRA kubelet plugin pods:
$ export VM_NODE='<VM_NODE_NAME>'
$ kubectl get pods -n rbln-system --field-selector "spec.nodeName=$VM_NODE" \
-l 'app.kubernetes.io/component in (vfio-manager,dra-kubelet-plugin)'
NAME READY STATUS RESTARTS AGE
rbln-dra-kubelet-plugin-z72sz 1/1 Running 0 115s
rbln-vfio-manager-zx4tx 1/1 Running 0 2m1s
The VFIO Manager and DRA kubelet plugin pods should be running.
NPU Resources¶
Check the DeviceClasses and the devices published for each node. The inventory columns show the pool, device count and first device name:
Both npu.rebellions.ai and vfio-npu.rebellions.ai must be listed. The pool of each passthrough node must list devices with the vfio- prefix, such as vfio-0000-27-00-0. Inventory refresh is periodic; if a newly bound node is missing, wait for the next scan and repeat the query.
Resource Naming¶
| Identifier | Naming rule | Example |
|---|---|---|
DeviceClass | vfio-<driverName> | vfio-npu.rebellions.ai |
ResourceSlice.spec.devices[].name | vfio-<PCI_ADDRESS>; lowercase, : and . → - | 0000:27:00.0 → vfio-0000-27-00-0 |
The following table lists device identifiers for each product.
| Product | Card model (SKU) | PCI device ID (PF) | productName |
|---|---|---|---|
| Rebel100™ | RBLN-CR13 | 2130 | RBLN-CR13 |
| ATOM™+ | RBLN-CA22 | 1220 | RBLN-CA22 |
| ATOM™-Max | RBLN-CA25 | 1250 | RBLN-CA25 |
Passthrough Device Attributes¶
The following device attributes can be used in CEL selectors.
| Name | Type | Example Value | Description |
|---|---|---|---|
type | string | vfio | Device type |
iommuGroup | int | 42 | IOMMU group ID |
pciDeviceID | string | 2130 | PCI device ID without the 0x prefix |
productName | string | RBLN-CR13 | NPU product name |
vf | bool | false | Whether the device is an SR-IOV Virtual Function |
resource.kubernetes.io/pciBusID | string | 0000:27:00.0 | PCI bus address |
resource.kubernetes.io/pcieRoot | string | pci0000:20 | PCIe root complex |
resource.kubernetes.io/numaNode | int | 0 | NUMA node ID; omitted when unavailable |
dra.net/numaNode | int | 0 | Same value as resource.kubernetes.io/numaNode |