---
apiVersion: nfd.k8s-sigs.io/v1alpha1
kind: NodeFeatureRule
metadata:
  name: intel-dp-devices
  namespace: node-feature-discovery
spec:
  rules:
    - name: "intel.dlb"
      labels:
        "intel.feature.node.kubernetes.io/dlb": "true"
      matchFeatures:
        - feature: pci.device
          matchExpressions:
            vendor: {op: In, value: ["8086"]}
            device: {op: In, value: ["2710"]}
            class: {op: In, value: ["0b40"]}
        - feature: kernel.loadedmodule
          matchExpressions:
            dlb2: {op: Exists}

    - name: "intel.dsa"
      labels:
        "intel.feature.node.kubernetes.io/dsa": "true"
      matchFeatures:
        - feature: pci.device
          matchExpressions:
            vendor: {op: In, value: ["8086"]}
            device: {op: In, value: ["0b25", "11fb", "1212"]}
            class: {op: In, value: ["0880"]}
        - feature: kernel.loadedmodule
          matchExpressions:
            idxd: {op: Exists}

    - name: "intel.fpga-arria10"
      labels:
        "intel.feature.node.kubernetes.io/fpga-arria10": "true"
      matchFeatures:
        - feature: pci.device
          matchExpressions:
            vendor: {op: In, value: ["8086"]}
            device: {op: In, value: ["09c4"]}
            class: {op: In, value: ["1200"]}
      matchAny:
        - matchFeatures:
            - feature: kernel.loadedmodule
              matchExpressions:
                dfl_pci: {op: Exists}
        - matchFeatures:
            - feature: kernel.loadedmodule
              matchExpressions:
                intel_fpga_pci: {op: Exists}

    - name: "intel.gpu"
      labels:
        "intel.feature.node.kubernetes.io/gpu": "true"
      matchFeatures:
        - feature: pci.device
          matchExpressions:
            vendor: {op: In, value: ["8086"]}
            class: {op: In, value: ["0300", "0380"]}
      matchAny:
        - matchFeatures:
            - feature: kernel.loadedmodule
              matchExpressions:
                i915: {op: Exists}
        - matchFeatures:
            - feature: kernel.enabledmodule
              matchExpressions:
                i915: {op: Exists}
        - matchFeatures:
            - feature: kernel.loadedmodule
              matchExpressions:
                xe: {op: Exists}
        - matchFeatures:
            - feature: kernel.enabledmodule
              matchExpressions:
                xe: {op: Exists}

    - name: "intel.iaa"
      labels:
        "intel.feature.node.kubernetes.io/iaa": "true"
      matchFeatures:
        - feature: pci.device
          matchExpressions:
            vendor: {op: In, value: ["8086"]}
            device: {op: In, value: ["0cfe", "1216"]}
            class: {op: In, value: ["0880"]}
        - feature: kernel.loadedmodule
          matchExpressions:
            idxd: {op: Exists}

    - name: "intel.qat"
      labels:
        "intel.feature.node.kubernetes.io/qat": "true"
      matchFeatures:
        - feature: pci.device
          matchExpressions:
            vendor: {op: In, value: ["8086"]}
            device: {op: In, value: ["37c8", "4940", "4942", "4944", "4946", "4948"]}
            class: {op: In, value: ["0b40"]}
        - feature: kernel.loadedmodule
          matchExpressions:
            intel_qat: {op: Exists}
      matchAny:
        - matchFeatures:
            - feature: kernel.loadedmodule
              matchExpressions:
                vfio_pci: {op: Exists}
        - matchFeatures:
            - feature: kernel.enabledmodule
              matchExpressions:
                vfio-pci: {op: Exists}

    - name: "intel.sgx"
      labels:
        "intel.feature.node.kubernetes.io/sgx": "true"
      extendedResources:
        sgx.intel.com/epc: "@cpu.security.sgx.epc"
      matchFeatures:
        - feature: cpu.cpuid
          matchExpressions:
            SGX: {op: Exists}
            SGXLC: {op: Exists}
        - feature: cpu.security
          matchExpressions:
            sgx.enabled: {op: IsTrue}
        - feature: kernel.config
          matchExpressions:
            X86_SGX: {op: Exists}

    - name: "intel.npu"
      labels:
        "intel.feature.node.kubernetes.io/npu": "true"
      matchFeatures:
        - feature: pci.device
          matchExpressions:
            vendor: {op: In, value: ["8086"]}
            class: {op: In, value: ["1200"]}
            device: {
              op: In,
              value: ["7e4c", "643e", "ad1d", "7d1d"]
            }
      matchAny:
        - matchFeatures:
            - feature: kernel.loadedmodule
              matchExpressions:
                intel_vpu: {op: Exists}
        - matchFeatures:
            - feature: kernel.enabledmodule
              matchExpressions:
                intel_vpu: {op: Exists}
