All Products
Search
Document Center

Elastic Compute Service:Build a heterogeneous confidential computing environment

Last Updated:Jul 15, 2026

Set up a heterogeneous confidential computing environment on a gn8v-tee instance and verify GPU confidential computing with sample code.

Background

Alibaba Cloud heterogeneous confidential computing instances (gn8v-tee) extend CPU TDX confidential computing instances by incorporating a GPU into the Trusted Execution Environment (TEE). This protects CPU-GPU data transfers and GPU data computation. To build a CPU TDX confidential computing environment and verify remote attestation, see Build a TDX confidential computing environment. To deploy LLM inference on a heterogeneous confidential computing instance, see Build a measured LLM inference environment on a heterogeneous confidential instance.

image

The GPU on a heterogeneous confidential computing instance starts in confidential computing mode. The following mechanisms ensure confidentiality:

  1. TDX prevents the Hypervisor/Host OS from accessing the instance's sensitive registers or memory data.

  2. A PCIe firewall prevents the CPU from accessing the GPU's critical registers and protected video memory. The Hypervisor/Host OS can only perform limited operations such as resetting the GPU, but cannot access sensitive data.

  3. The GPU's NVLink Firewall blocks other GPUs from directly accessing its video memory.

  4. During initialization, the GPU driver and library functions within the CPU TEE establish an encrypted channel with the GPU via the SPDM protocol. After key negotiation, only ciphertext is transmitted over PCIe between the CPU and GPU.

  5. The GPU's remote attestation capability confirms that the GPU is in a secure state.

    Applications in a confidential computing instance can use the Attestation SDK to call the GPU driver and obtain a cryptographic report of the GPU's security status. This report contains cryptographically signed information about the GPU hardware, VBIOS, and hardware status measurements. A relying party can compare these measurements with reference measurements from the GPU vendor to verify the GPU is in a secure confidential computing state.

Usage notes

Heterogeneous confidential computing requires Alibaba Cloud Linux 3 images. If you use a custom image based on Alibaba Cloud Linux 3, ensure the kernel version is 5.10.134-18 or later.

Create a heterogeneous confidential computing instance (gn8v-tee)

Console

Creating a heterogeneous confidential computing instance is similar to creating a standard instance but requires specific configurations. For general configurations, see Create an instance using the wizard.

  1. Go to ECS console - Instances.

  2. In the upper-left corner of the page, select a region and resource group.

  3. Click Create Instance and configure the instance with the following settings.

    Configuration Item

    Description

    Region and Zone

    China (Beijing) Zone L

    Instance Type

    ecs.gn8v-tee.4xlarge or higher.

    Image

    Select the Alibaba Cloud Linux 3.2104 LTS 64-bit image.

    Public IP Address

    Assign Public IPv4 Address. Required to download the NVIDIA driver later.

    Important

    When creating or restarting a confidential instance with 8 GPUs, do not attach additional secondary ENIs or data disks. This can cause a startup failure.

    Cause and solution

    ECS instances with TDX enabled use a non-encrypted memory region, the Software Input Output Translation Lookaside Buffer (SWIOTLB), for peripheral communication. By default, SWIOTLB size is 6% of available memory, with a maximum of 1 GiB.

    Attaching multiple ENIs or data disks to a confidential instance with 8 GPUs can exhaust the SWIOTLB memory, causing a memory allocation failure that prevents startup.

    If the instance fails to start:

    • Solution 1: Stop the instance, unbind additional secondary ENIs, and detach all data disks.

    • Solution 2: Create a new instance with only one primary ENI, no data disks, and only a system disk.

    To add multiple ENIs or data disks to a confidential instance with 8 GPUs, first complete Step 1 to increase the SWIOTLB buffer to 8 GB. Then attach ENIs to the instance and attach data disks.

  4. Complete the instance creation by following the on-screen instructions.

API/CLI

Call the RunInstances operation or use the Alibaba Cloud CLI to create a TDX-enabled ECS instance. Key parameters:

Parameter

Description

Example

RegionId

China (Beijing)

cn-beijing

ZoneId

Zone L

cn-beijing-l

InstanceType

ecs.gn8v-tee.4xlarge or higher.

ecs.gn8v-tee.4xlarge

ImageId

ID of an image that supports confidential computing. Only 64-bit Alibaba Cloud Linux 3.2104 LTS images with kernel version 5.10.134-18.al8.x86_64 or later.

aliyun_3_x64_20G_alibase_20250117.vhd

CLI example:

<SECURITY_GROUP_ID>: security group ID. <VSWITCH_ID>: vSwitch ID. <KEY_PAIR_NAME>: SSH key pair name.
aliyun ecs RunInstances \
  --RegionId cn-beijing \
  --ZoneId cn-beijing-l \
  --SystemDisk.Category cloud_essd \
  --ImageId 'aliyun_3_x64_20G_alibase_20250117.vhd' \
  --InstanceType 'ecs.gn8v-tee.4xlarge' \
  --SecurityGroupId '<SECURITY_GROUP_ID>' \
  --VSwitchId '<VSWITCH_ID>' \
  --KeyPairName <KEY_PAIR_NAME>

Build the heterogeneous confidential computing environment

Step 1: Install the NVIDIA driver and CUDA Toolkit

Important

Heterogeneous confidential computing instances take a long time to initialize. Wait until the instance status is Running and the operating system has fully started.

Installation steps vary by instance type:

  • Single-GPU confidential instances: ecs.gn8v-tee.4xlarge and ecs.gn8v-tee.6xlarge

  • 8-GPU confidential instances: ecs.gn8v-tee-8x.16xlarge and ecs.gn8v-tee-8x.48xlarge

Single-GPU confidential instances

  1. Connect to the confidential computing instance. See Log on to a Linux instance using Workbench.

  2. Set the SWIOTLB buffer to 8 GB.

    sudo grubby --update-kernel=ALL --args="swiotlb=4194304,any"
  3. Restart the instance. See Restart an instance.

  4. Download the NVIDIA driver and CUDA Toolkit.

    Single-GPU confidential instances require driver version 550.144.03 or later. This example uses 550.144.03.
    wget --referer=https://www.nvidia.cn/ https://cn.download.nvidia.cn/tesla/550.144.03/NVIDIA-Linux-x86_64-550.144.03.run
    wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
  5. Install dependencies and disable the CloudMonitor service.

    sudo yum install -y openssl3
    sudo systemctl disable cloudmonitor
    sudo systemctl stop cloudmonitor
  6. Create and configure nvidia-persistenced.service.

    cat > nvidia-persistenced.service << EOF
    [Unit]
    Description=NVIDIA Persistence Daemon
    Wants=syslog.target
    Before=cloudmonitor.service
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/nvidia-persistenced --user root
    ExecStartPost=/usr/bin/nvidia-smi conf-compute -srs 1
    ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    sudo cp nvidia-persistenced.service /usr/lib/systemd/system/nvidia-persistenced.service
  7. Install the NVIDIA driver and CUDA Toolkit.

    sudo bash NVIDIA-Linux-x86_64-550.144.03.run --ui=none --no-questions --accept-license --disable-nouveau --no-cc-version-check --install-libglvnd --kernel-module-build-directory=kernel-open --rebuild-initramfs
    sudo bash cuda_12.4.1_550.54.15_linux.run --silent --toolkit
  8. Start the nvidia-persistenced and CloudMonitor services.

    sudo systemctl start nvidia-persistenced.service
    sudo systemctl enable nvidia-persistenced.service
    sudo systemctl start cloudmonitor
    sudo systemctl enable cloudmonitor

8-GPU confidential instances

  1. Connect to the confidential computing instance. See Log on to a Linux instance using Workbench.

    Important

    Confidential computing instances initialize slowly. Wait for the process to complete before proceeding.

  2. Set the SWIOTLB buffer to 8 GB.

    sudo grubby --update-kernel=ALL --args="swiotlb=4194304,any"
  3. Configure NVIDIA driver loading behavior and regenerate the initramfs.

    sudo bash -c 'cat > /etc/modprobe.d/nvidia-lkca.conf << EOF
    install nvidia /sbin/modprobe ecdsa_generic; /sbin/modprobe ecdh; /sbin/modprobe --ignore-install nvidia
    options nvidia NVreg_RegistryDwords="RmEnableProtectedPcie=0x1"
    EOF'
    
    sudo dracut --regenerate-all -f
  4. Restart the instance. See Restart an instance.

  5. Download the NVIDIA driver and CUDA Toolkit.

    8-GPU confidential computing instances require driver version 570.148.08 or later and the corresponding Fabric Manager. This example uses 570.148.08.
    wget --referer=https://www.nvidia.cn/ https://cn.download.nvidia.cn/tesla/570.148.08/NVIDIA-Linux-x86_64-570.148.08.run
    wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda_12.8.1_570.124.06_linux.run
    wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel8/x86_64/nvidia-fabric-manager-570.148.08-1.x86_64.rpm
  6. Install dependencies and disable the CloudMonitor service.

    sudo yum install -y openssl3
    sudo systemctl disable cloudmonitor
    sudo systemctl stop cloudmonitor
  7. Create and configure nvidia-persistenced.service.

    cat > nvidia-persistenced.service << EOF
    [Unit]
    Description=NVIDIA Persistence Daemon
    Wants=syslog.target
    Before=cloudmonitor.service
    After=nvidia-fabricmanager.service
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/nvidia-persistenced --user root --uvm-persistence-mode --verbose
    ExecStartPost=/usr/bin/nvidia-smi conf-compute -srs 1
    ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced
    TimeoutStartSec=900
    TimeoutStopSec=60
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    sudo cp nvidia-persistenced.service /usr/lib/systemd/system/nvidia-persistenced.service
  8. Install Fabric Manager, the NVIDIA driver, and the CUDA Toolkit.

    sudo rpm -ivh nvidia-fabric-manager-570.148.08-1.x86_64.rpm
    sudo bash NVIDIA-Linux-x86_64-570.148.08.run --ui=none --no-questions --accept-license --disable-nouveau --no-cc-version-check --install-libglvnd --kernel-module-build-directory=kernel-open --rebuild-initramfs
    sudo bash cuda_12.8.1_570.124.06_linux.run --silent --toolkit
  9. Start and enable the nvidia-fabricmanager, nvidia-persistenced, and cloudmonitor services.

    sudo systemctl start nvidia-fabricmanager.service
    sudo systemctl enable nvidia-fabricmanager.service
    sudo systemctl start nvidia-persistenced.service
    sudo systemctl enable nvidia-persistenced.service
    sudo systemctl start cloudmonitor
    sudo systemctl enable cloudmonitor

Step 2: Check the TDX status

This feature relies on TDX. Check the TDX status to verify that the instance is protected.

  1. Check if TDX is enabled.

    lscpu |grep -i tdx_guest

    If the output contains tdx_guest, TDX is enabled.

    [root@iZwzxxxxxxxx:~]# lscpu |grep -i tdx_guest
    Flags:           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc bts rep_good nopl xtopology tsc_known_freq pni pclmulqdq dtes64 ds_cpl ssse3 sdbg fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single sbd ibrs ibpb stibp ibrs_enhanced tdx_guest fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopts clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid bus_lock_detect cldemote movdiri movdir64b _vp2intersect md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities
  2. Check TDX-related driver installation.

    ls -l /dev/tdx_guest

    The following output indicates TDX-related drivers are installed.

    [ ~@iz2ze          ~]# ls -l /dev/tdx_guest
    crw------- 1 root root 10, 125 Jan 30 16:51 /dev/tdx_guest

Step 3: Check the GPU confidential computing feature status

Single-GPU confidential instances

Check the confidential computing status.

nvidia-smi conf-compute -f

CC status: ON indicates confidential computing is enabled. CC status: OFF indicates the feature is disabled due to an instance error. If this occurs, submit a ticket.

8-GPU confidential instances

Check the confidential computing status.

nvidia-smi conf-compute -mgm

Multi-GPU Mode: Protected PCIe indicates multi-GPU confidential computing is enabled. Multi-GPU Mode: None indicates the feature is disabled due to an instance error. If this occurs, submit a ticket.

Note

For 8-GPU confidential instances, nvidia-smi conf-compute -f normally returns CC status: OFF.

Step 4: Verify GPU and NVSwitch trust by using local attestation

Single-GPU confidential instances

  1. Install GPU trust dependencies.

    sudo yum install -y python3.11 python3.11-devel python3.11-pip
    sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 60
    sudo alternatives --set python3 /usr/bin/python3.11
    sudo python3 -m ensurepip --upgrade
    sudo python3 -m pip install --upgrade pip
    
    sudo python3 -m pip install nv_attestation_sdk==2.5.0.post6914366 nv_local_gpu_verifier==2.5.0.post6914366 nv_ppcie_verifier==1.5.0.post6914366 -f https://attest-public-cn-beijing.oss-cn-beijing.aliyuncs.com/repo/pip/attest.html
  2. Verify the GPU trust status.

    python3 -m verifier.cc_admin --user_mode

    The output indicates the GPU is in confidential computing mode and measurements such as the driver and VBIOS match expected values:

    Full output example

    Generating nonce in the local GPU Verifier ..
    Number of GPUs available : 1
    Fetching GPU 0 information from GPU driver.
    All GPU Evidences fetched successfully
    Set OCSP_NONCE_DISABLED to True while using aliyun's OCSP service
    -----------------------------------
    Verifying GPU: GPU-e1e94012-8c7b-f9a2-d712-fc5b014f364c
            Driver version fetched : 550.144.03
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 550.144.03
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 0 with UUID GPU-e1e94012-8c7b-f9a2-d712-fc5b014f364c verified successfully.
    GPU Attestation is Successful.

8-GPU confidential instances

  1. Install GPU trust dependencies.

    sudo yum install -y python3.11 python3.11-devel python3.11-pip
    sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 60
    sudo alternatives --set python3 /usr/bin/python3.11
    sudo python3 -m ensurepip --upgrade
    sudo python3 -m pip install --upgrade pip
    
    sudo python3 -m pip install nv_attestation_sdk==2.5.0.post6914366 nv_local_gpu_verifier==2.5.0.post6914366 nv_ppcie_verifier==1.5.0.post6914366 -f https://attest-public-cn-beijing.oss-cn-beijing.aliyuncs.com/repo/pip/attest.html
  2. Install NVSwitch dependencies.

    wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel8/x86_64/libnvidia-nscq-570-570.148.08-1.x86_64.rpm
    sudo rpm -ivh libnvidia-nscq-570-570.148.08-1.x86_64.rpm
  3. Verify the GPU/NVSwitch trust status.

    python3 -m ppcie.verifier.verification --gpu-attestation-mode=LOCAL --switch-attestation-mode=LOCAL

    The sample code verifies eight GPUs and four NVSwitches. SUCCESS indicates verification passed:

    All nvSwitches Attested Successfully
    ****************************************************
    *    PPCIE: Switch attestation result is True      *
    ****************************************************
    ****************************************************
    *    PPCIE: Switch Attestation Completed           *
    ****************************************************
    ****************************************************
    *          PPCIE: GPU state is READY               *
    ****************************************************
    +-------------------------+----------+
    |        STAGE            |  STATUS  |
    +-------------------------+----------+
    |   GPU Pre-checks        | SUCCESS  |
    |   Switch Pre-checks     | SUCCESS  |
    |   GPU Attestation       | SUCCESS  |
    |   Switch Attestation    | SUCCESS  |
    |   Topology checks       | SUCCESS  |
    +-------------------------+----------+
    ****************************************************
    *    PPCIE: End of PPCIE Verification Tool         *
    ****************************************************

    Full output example

    **************************************************
    *    PPCIE: Starting PPCIE Verification Tool    *
    **************************************************
    **************************************************
    *          PPCIE: Number of GPUs are: 8          *
    **************************************************
    **************************************************
    *       PPCIE: Number of NVSwitches are: 4       *
    **************************************************
    Nonce generated: 006a638b032ae5eed158d6584dd13429de5743ce36498e60b7256703ce6a68ae
    Number of GPUs available : 8
    Fetching GPU 0 information from GPU driver.
    Fetching GPU 1 information from GPU driver.
    Fetching GPU 2 information from GPU driver.
    Fetching GPU 3 information from GPU driver.
    Fetching GPU 4 information from GPU driver.
    Fetching GPU 5 information from GPU driver.
    Fetching GPU 6 information from GPU driver.
    Fetching GPU 7 information from GPU driver.
    All GPU Evidences fetched successfully
    **************************************************
    *           PPCIE: Attesting the GPUs           *
    **************************************************
    Set OCSP_NONCE_DISABLED to True while using aliyun's OCSP service
    -----------------------------------
    Verifying GPU: GPU-db98b8e0-51c7-d188-99ec-6755455abcd9
            Driver version fetched : 570.148.08
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 570.148.08
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 0 with UUID GPU-db98b8e0-51c7-d188-99ec-6755455abcd9 verified successfully.
    -----------------------------------
    Verifying GPU: GPU-d5372674-da51-fe3c-29f7-034c6aad55bd
            Driver version fetched : 570.148.08
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 570.148.08
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 1 with UUID GPU-d5372674-da51-fe3c-29f7-034c6aad55bd verified successfully.
    -----------------------------------
    Verifying GPU: GPU-3865b295-1fd1-a21a-a4d3-07bc47ff31ca
            Driver version fetched : 570.148.08
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 570.148.08
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 2 with UUID GPU-3865b295-1fd1-a21a-a4d3-07bc47ff31ca verified successfully.
    -----------------------------------
    Verifying GPU: GPU-98377e04-ff60-ecac-beb5-28b3e8005c64
            Driver version fetched : 570.148.08
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 570.148.08
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 3 with UUID GPU-98377e04-ff60-ecac-beb5-28b3e8005c64 verified successfully.
    -----------------------------------
    Verifying GPU: GPU-ecab3a2a-0cb3-eebd-6a46-b941338b9e5f
            Driver version fetched : 570.148.08
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 570.148.08
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 4 with UUID GPU-ecab3a2a-0cb3-eebd-6a46-b941338b9e5f verified successfully.
    -----------------------------------
    Verifying GPU: GPU-91acee11-dd57-920c-c2f9-0b67fc4540d6
            Driver version fetched : 570.148.08
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 570.148.08
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 5 with UUID GPU-91acee11-dd57-920c-c2f9-0b67fc4540d6 verified successfully.
    -----------------------------------
    Verifying GPU: GPU-84370594-42f5-cbbe-a71c-b6d22ba45b65
            Driver version fetched : 570.148.08
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 570.148.08
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 6 with UUID GPU-84370594-42f5-cbbe-a71c-b6d22ba45b65 verified successfully.
    -----------------------------------
    Verifying GPU: GPU-4d8767db-a4ed-4ec1-d863-6c7635366dd1
            Driver version fetched : 570.148.08
            VBIOS version fetched : 96.00.cf.00.05
            Validating GPU certificate chains.
                    The firmware ID in the device certificate chain is matching with the one in the attestation report.
                    GPU attestation report certificate chain validation successful.
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    Driver version fetched from the attestation report : 570.148.08
                    VBIOS version fetched from the attestation report : 96.00.cf.00.05
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating Driver RIM
                            Fetching the driver RIM from the RIM service.
                            RIM Schema validation passed.
                            driver RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            driver RIM signature verification successful.
                            Driver RIM verification successful
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    GPU is in expected state.
            GPU 7 with UUID GPU-4d8767db-a4ed-4ec1-d863-6c7635366dd1 verified successfully.
    GPU Attestation is Successful.
    **************************************************
    *      PPCIE: GPU Attestation result: True      *
    **************************************************
    **************************************************
    *        PPCIE: GPU Attestation Completed        *
    **************************************************
    Nonce generated: 2c345829a31f1650d6185413183b6878c578759c2ef9b4f1f0ed313d38f6c7c3
    Getting evidence details for SWX-F6E1D86E-20D5-7BE5-85AD-E5EF52A80504
    Getting evidence details for SWX-C9296F62-ECDB-F271-3C5A-D7F03F733A4C
    Getting evidence details for SWX-15D9CFBE-E466-0EC5-364C-9EAA0671C686
    Getting evidence details for SWX-4D9DEC0E-C8BC-5CC5-F664-96D874434D05
    All nvSwitch Evidences fetched successfully
    **************************************************
    *         PPCIE: Attesting the switches         *
    **************************************************
    Set ocsp_nonce_disabled to True while using aliyun's OCSP service
    -----------------------------------
    Verifying Switch : 0
    NVSwitch info fetched successfully.
            Validating Switch certificate chains.
                    nvSwitch attestation report certificate chain validation successful.
    send_ocsp_request called.
    send_ocsp_request completed successfully
    send_ocsp_request called.
    send_ocsp_request completed successfully
    send_ocsp_request called.
    send_ocsp_request completed successfully
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    VBIOS version fetched from the attestation report : 96.10.6D.00.01
    VBIOS version in attestation report is matching.
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
    fetch_rim_file called.
    fetch_rim_file completed successfully
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
    send_ocsp_request called.
    send_ocsp_request completed successfully
    send_ocsp_request called.
    send_ocsp_request completed successfully
    send_ocsp_request called.
    send_ocsp_request completed successfully
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    Switch is in expected state.
            nvSwitch 0 verified successfully.
    -----------------------------------
    Verifying Switch : 1
    NVSwitch info fetched successfully.
            Validating Switch certificate chains.
                    nvSwitch attestation report certificate chain validation successful.
    send_ocsp_request called.
    send_ocsp_request completed successfully
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    VBIOS version fetched from the attestation report : 96.10.6D.00.01
    VBIOS version in attestation report is matching.
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
    fetch_rim_file called.
    fetch_rim_file completed successfully
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    Switch is in expected state.
            nvSwitch 1 verified successfully.
    -----------------------------------
    Verifying Switch : 2
    NVSwitch info fetched successfully.
            Validating Switch certificate chains.
                    nvSwitch attestation report certificate chain validation successful.
    send_ocsp_request called.
    send_ocsp_request completed successfully
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    VBIOS version fetched from the attestation report : 96.10.6D.00.01
    VBIOS version in attestation report is matching.
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
    fetch_rim_file called.
    fetch_rim_file completed successfully
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    Switch is in expected state.
            nvSwitch 2 verified successfully.
    -----------------------------------
    Verifying Switch : 3
    NVSwitch info fetched successfully.
            Validating Switch certificate chains.
                    nvSwitch attestation report certificate chain validation successful.
    send_ocsp_request called.
    send_ocsp_request completed successfully
                            The certificate chain revocation status verification successful.
            Authenticating attestation report
                    The nonce in the SPDM GET MEASUREMENT request message is matching with the generated nonce.
                    VBIOS version fetched from the attestation report : 96.10.6D.00.01
    VBIOS version in attestation report is matching.
                    Attestation report signature verification successful.
                    Attestation report verification successful.
            Authenticating the RIMs.
                    Authenticating VBIOS RIM.
                            Fetching the VBIOS RIM from the RIM service.
    fetch_rim_file called.
    fetch_rim_file completed successfully
                            RIM Schema validation passed.
                            vbios RIM certificate chain verification successful.
                            The certificate chain revocation status verification successful.
                            vbios RIM signature verification successful.
                            VBIOS RIM verification successful
            Comparing measurements (runtime vs golden)
                            The runtime measurements are matching with the golden measurements.                            
                    Switch is in expected state.
            nvSwitch 3 verified successfully.
    All nvSwitches Attested Successfully
    **************************************************
    *    PPCIE: Switch attestation result is True    *
    **************************************************
    **************************************************
    *      PPCIE: Switch Attestation Completed      *
    **************************************************
    **************************************************
    *           PPCIE: GPU state is READY           *
    **************************************************
    +--------------------+---------+
    |       STAGE        |  STATUS |
    +--------------------+---------+
    |   GPU Pre-checks   | SUCCESS |
    | Switch Pre-checks  | SUCCESS |
    |  GPU Attestation   | SUCCESS |
    | Switch Attestation | SUCCESS |
    |  Topology checks   | SUCCESS |
    +--------------------+---------+
    **************************************************
    *     PPCIE: End of PPCIE Verification Tool     *
    **************************************************

Limitations

  • This feature inherits the limitations of TDX instances.

  • With GPU confidential computing enabled, CPU-GPU data transfers require encryption and decryption, resulting in lower GPU task performance compared to non-confidential heterogeneous instances.

Usage notes

  1. Single-GPU instances use CUDA 12.4. The NVIDIA cuBLAS library has a known issue that may cause errors when running CUDA or LLM tasks. Install a specific cuBLAS version to resolve this.

    pip3 install nvidia-cublas-cu12==12.4.5.8
  2. With GPU confidential computing enabled, initialization is slow, especially for 8-GPU instances. After the guest OS starts, verify that nvidia-persistenced has finished starting before using the GPU with nvidia-smi or other commands. Check the nvidia-persistenced service status:

    systemctl status nvidia-persistenced | grep "Active: "
    • activating (start) — the service is starting.

      Active: activating (start) since Wed 2025-02-19 10:07:54 CST; 2min 20s ago
    • active (running) — the service is running.

      Active: active (running) since Wed 2025-02-19 10:10:28 CST; 22s ago
  3. GPU-dependent auto-start services, such as cloudmonitor.service, nvidia-cdi-refresh.service (from nvidia-container-toolkit-base), or ollama.service, must start after nvidia-persistenced.service.

    Example configuration for /usr/lib/systemd/system/nvidia-persistenced.service:

    [Unit]
    Description=NVIDIA Persistence Daemon
    Wants=syslog.target
    Before=cloudmonitor.service nvidia-cdi-refresh.service ollama.service
    After=nvidia-fabricmanager.service
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/nvidia-persistenced --user root --uvm-persistence-mode --verbose
    ExecStartPost=/usr/bin/nvidia-smi conf-compute -srs 1
    ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced
    TimeoutStartSec=900
    TimeoutStopSec=60
    
    [Install]
    WantedBy=multi-user.target