Skip to main content
Redhat Developers  Logo
  • Products

    Featured

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat OpenShift AI
      Red Hat OpenShift AI
    • Red Hat Enterprise Linux AI
      Linux icon inside of a brain
    • Image mode for Red Hat Enterprise Linux
      RHEL image mode
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • Red Hat Developer Hub
      Developer Hub
    • View All Red Hat Products
    • Linux

      • Red Hat Enterprise Linux
      • Image mode for Red Hat Enterprise Linux
      • Red Hat Universal Base Images (UBI)
    • Java runtimes & frameworks

      • JBoss Enterprise Application Platform
      • Red Hat build of OpenJDK
    • Kubernetes

      • Red Hat OpenShift
      • Microsoft Azure Red Hat OpenShift
      • Red Hat OpenShift Virtualization
      • Red Hat OpenShift Lightspeed
    • Integration & App Connectivity

      • Red Hat Build of Apache Camel
      • Red Hat Service Interconnect
      • Red Hat Connectivity Link
    • AI/ML

      • Red Hat OpenShift AI
      • Red Hat Enterprise Linux AI
    • Automation

      • Red Hat Ansible Automation Platform
      • Red Hat Ansible Lightspeed
    • Developer tools

      • Red Hat Trusted Software Supply Chain
      • Podman Desktop
      • Red Hat OpenShift Dev Spaces
    • Developer Sandbox

      Developer Sandbox
      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Openshift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • View All Technologies
    • Programming Languages & Frameworks

      • Java
      • Python
      • JavaScript
    • System Design & Architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer Productivity

      • Developer productivity
      • Developer Tools
      • GitOps
    • Secure Development & Architectures

      • Security
      • Secure coding
    • Platform Engineering

      • DevOps
      • DevSecOps
      • Ansible automation for applications and services
    • Automated Data Processing

      • AI/ML
      • Data Science
      • Apache Kafka on Kubernetes
      • View All Technologies
    • Start exploring in the Developer Sandbox for free

      sandbox graphic
      Try Red Hat's products and technologies without setup or configuration.
    • Try at no cost
  • Learn

    Featured

    • Kubernetes & Cloud Native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • Java
      Java icon
    • AI/ML
      AI/ML Icon
    • View All Learning Resources

    E-Books

    • GitOps Cookbook
    • Podman in Action
    • Kubernetes Operators
    • The Path to GitOps
    • View All E-books

    Cheat Sheets

    • Linux Commands
    • Bash Commands
    • Git
    • systemd Commands
    • View All Cheat Sheets

    Documentation

    • API Catalog
    • Product Documentation
    • Legacy Documentation
    • Red Hat Learning

      Learning image
      Boost your technical skills to expert-level with the help of interactive lessons offered by various Red Hat Learning programs.
    • Explore Red Hat Learning
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

How to install RHEL on the Marvell Octeon 10 DPU

February 26, 2024
William Zhao
Related topics:
Linux
Related products:
Red Hat Enterprise Linux

Share:

    The surge in networking demands and cost has piqued interest in data processing units (DPUs). The Marvell Octeon 10 DPU addresses these challenges with their hardware solution. Red Hat Enterprise Linux (RHEL) excels at running everywhere from the public cloud to the edge. Bringing RHEL onto the Marvell Octeon 10 DPU is the first step in realizing and building a vibrant ecosystem for open source collaboration in solving these challenges. Red Hat along with its ecosystem partners can plan and bring their solutions onto the Marvell Octeon 10 DPU.

    Installing RHEL on Marvell Octeon 10

    Welcome to this guide to installing Red Hat Enterprise Linux on the Marvell Octeon 10 DPU. This article will guide you through the process of setting up RHEL on the Marvell Octeon 10 using the 10G management interface and a PXE server on the host machine.

     

    Info alert: Note

    Important: Please note that it is assumed that the UEFI Bootloader is flashed correctly onto the secondary SPI memory device. If not, please contact your Marvell FAE to be given the instructions to do so. You only need to flash the UEFI Bootloader once unless there are bug fixes or improvements provided by Marvell.

    Overview of the setup

    When it comes to installing RHEL on the Marvell Octeon 10, a PXE server can be set up either on the network or on the host machine itself. The advantage of choosing the latter is that the management network is looped back to the host itself. Also the host will have access to the serial terminal via USB. This self-contained approach simplifies the provisioning process, making it more accessible and user-friendly for small scale deployments (typically one node). Figure 1 shows the setup.

    Host and Marvell Octeon 10 setup diagram.
    Figure 1: Host and Marvell Octeon 10 setup diagram.

    Components of the setup:

    • UEFI Bootloader flashed on the Marvell Octeon 10
    • RHEL installation on x86 host with minicom
    • RHEL iso (downloaded through your Red Hat subscription)
    • Custom GRUB configuration
    • Custom kickstart configuration
    • TFTP server
    • DHCP server
    • HTTP server

    Setting up DHCP

    The DHCP server for the purposes of this document of installing RHEL will be used to give the UEFI bootloader an IP address when attempting to PXE boot the ISO image through TFTP. (Note: This DHCP server can also be used by U-Boot to burn the UEFI bootloader onto the secondary SPI memory device on the Marvell Octeon 10).

    Start by installing the DHCP server for RHEL on the host:

    dnf install -y dhcp-server

    For the interface directly connected to the 10G management port on the Marvell Octeon 10, assign the ip address "172.131.100.1/24" to it

    # E.g. $IF_NAME = eno4
    
    ip addr add 172.131.100.1/24 dev $IF_NAME

    Create/change the dhcpd config at /etc/dhcp/dhcpd.conf to the following. Please replace the DNS servers and domain with your own:

    option space pxelinux;
    option pxelinux.magic code 208 = string;
    option pxelinux.configfile code 209 = text;
    option pxelinux.pathprefix code 210 = text;
    option pxelinux.reboottime code 211 = unsigned integer 32;
    option architecture-type code 93 = unsigned integer 16;
    
    allow booting;
    allow bootp;
    
    next-server 172.131.100.1;
    always-broadcast on;
    
    subnet 172.131.100.0 netmask 255.255.255.0 {
        range 172.131.100.10 172.131.100.20;
        option broadcast-address 172.131.100.255;
        option routers 172.131.100.1;
        option domain-name-servers <INSERT COMMA SEPARATED LIST OF DNS SERVERS HERE>;
        option domain-search "<INSERT DOMAIN HERE>";
        option dhcp-client-identifier = option dhcp-client-identifier;
        class "pxeclients" {
            match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
            filename "/grubaa64.efi";
        }
    }

    Restart DHCPD with the following command:

    systemctl restart dhcpd

    After restarting, make sure that DHCPD is running properly:

    systemctl status dhcpd

    Setting up TFTP

    The DHCP server for the purposes of this document of installing RHEL will be used to provide the Linux kernel, Init RAM disk, GRUB EFI, and the custom GRUB config to the UEFI Bootloader.

    Start by installing the TFTP server for RHEL on the host:

    dnf -y install tftp tftp-server
    systemctl enable tftp.service --now
    firewall-cmd --permanent --add-service=tftp
    firewall-cmd --reload
    mkdir -p /etc/systemd/system/tftp.service.d

    Unfortunately the TFTP client in the UEFI bootloader does not support options properly thus we need to modify the TFTP server on the host with the -B option in the file /usr/lib/systemd/system/tftp.service:

    Change the ExecStart line from:

    ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot

    To:

    ExecStart=/usr/sbin/in.tftpd -B 1468 -s /var/lib/tftpboot

    Then restart the TFTP server service file:

    systemctl daemon-reload
    systemctl restart tftp

    After restarting, make sure that TFTP is running properly:

    systemctl status tftp

    Setting up the mandatory PXE files

    Please make sure that the DHCP and TFTP servers are running correctly. Following the steps above.

    Firstly, download the RHEL iso from your RH subscription. Note that you need the AARCH version of the RHEL ISO since the Marvell Octeon 10 uses the ARM architecture. Mount the ISO:

    # E.g. $ISO_PATH = ~/RHEL-9.2.0-aarch64-dvd1.iso
    #      $MNT_ISO_PATH = /mnt/rhel
    mount -t iso9660 -o loop $ISO_PATH $MNT_ISO_PATH

    Create a TFTP boot directory and copy the necessary files:

    mkdir /var/lib/tftpboot/
    mkdir /var/lib/tftpboot/pxelinux
    cp $MNT_ISO_PATH/images/pxeboot/vmlinuz /var/lib/tftpboot/pxelinux
    cp $MNT_ISO_PATH/images/pxeboot/initrd.img /var/lib/tftpboot/pxelinux
    cp $MNT_ISO_PATH/EFI/BOOT/grubaa64.efi /var/lib/tftpboot/
    chmod 744 /var/lib/tftpboot/grubaa64.efi

    Create a custom GRUB configuration at /var/lib/tftpboot/grub.cfg where 172.131.100.1 is the IP of the host interface connected to the 10G management port of the Octeon 10 DPU. Firstly the Grub EFI (grubaa64.efi) is loaded via the PXE options from DHCP. Then the GRUB config is read and the Linux kernel (vmlinuz) and Init RAM disk (initrd.img) is loaded from TFTP.

    set timeout=10
    
    menuentry 'Install' {
        linux pxelinux/vmlinuz ip=dhcp inst.repo=http://172.131.100.1/rhel_iso/ inst.ks=http://172.131.100.1/kickstart.ks
        initrd pxelinux/initrd.img
    }

    This GRUB configuration references where the repo and kickstart files would be found via an HTTP webserver. The vmlinuz and initrd.img are made available already from the TFTP boot directory (/var/lib/tftpboot/pxelinux).

    We will be using Python's HTTP server for convenient start and stop of the webserver. Please make sure Python is installed:

    dnf -y install python

    Now let's prepare the files for HTTP. We will create a /www webserver directory and statically link the mounted ISO to the webserver directory. The mounted ISO being statically linked to the webserver will provide the RHEL installer with additional packages.

    mkdir /www
    ln -s $MNT_ISO_PATH /www
    

    Create a new kickstart file under /www/kickstart.ks:

    # Root Password
    rootpw myrootpassword
    
    # System language
    lang en_US.UTF-8
    
    # System timezone
    timezone America/New_York --utc
    
    # Use text mode install
    text
    
    # Accept the license
    eula --agreed
    
    # Disable firewall
    firewall --disabled
    
    # Do not configure the X Window System
    skipx
    
    # Disable the Setup Agent on first boot
    firstboot --disabled
    
    # Network information
    network --bootproto=dhcp --hostname=marvell-soc.redhat --device=enP2p6s0 --activate
    
    ignoredisk --only-use=nvme0n1
    # System bootloader configuration
    bootloader --append="crashkernel=1G-4G:256M,4G-64G:320M,64G-:576M" --location=mbr --boot-drive=nvme0n1
    autopart
    # Partition clearing information
    clearpart --all --initlabel --drives=nvme0n1
    
    # Reboot after installation
    reboot
    
    %packages --ignoremissing
    @base
    @core
    @Development Tools
    python3-devel
    atk
    cairo
    dhclient
    tcl
    tk
    nfs-utils
    chrony
    vim
    ethtool
    git
    grubby
    xterm
    NetworkManager-config-server
    %end

    Note that the interface enP2p6s0 should be the 10G management port. Change myrootpassword with your own desired root password. Also this will install on the NVME drive. This must be populated prior to the card being seated into the server.

     

    Info alert: Note

    Optional: A useful tool called ksvalidator can be used to validate the kickstart.ks file:

    dnf install pykickstart
    ksvalidator /www/kickstart.ks

    Now we can start the HTTP server.

    cd /www
    python -m http.server 80

    Installing via UEFI PXE boot on the 10G management port

    The steps above should have prepared the necessary files and servers running to PXE boot. Make sure all the steps above are performed and the DHCP, TFTP, and HTTP servers are running.

    First, you should install minicom:

    dnf install -y minicom

    Find which USB devices from the Marvell Octeon 10 are connected to the HOST:

    dmesg | grep ttyU
    [1033246.599230] usb 1-13: cp210x converter now attached to ttyUSB0
    [1033246.617773] usb 1-13: cp210x converter now attached to ttyUSB1

    From this output, ttyUSB0 and ttyUSB1 are associated with the Marvell Octeon 10. The ttyUSB1 device is used to reset the Marvell Octeon 10 in the case of failure. The ttyUSB0 device is the serial terminal to the Marvell Octeon 10. This will be the device we will use to launch PXE Boot from UEFI.

    minicom -D /dev/ttyUSB0
     

    Warning alert: Warning

    Important: The Marvell Octeon 10 has issues with the Hardware Flow Control. Make sure this option is set to No via “O - cOnfigure Minicom -> Serial port setup -> F - Hardware Flow Control : No”. Also make sure the baud rate “E - Bps/Par/Bits : 115200 8N1” is set correctly.

    Reboot the Marvell Octeon 10 via ttyUSB1 or by typing reboot in the BuildRoot OS.

    When you see Press 'B' within 10 seconds for boot menu, press the B key immediately.

    Then choose 2) Boot from Secondary Boot Device:

    =================================
    Boot Options
    =================================
    1) Boot from Primary Boot Device
    2) Boot from Secondary Boot Device
    N) Boot Normally
    S) Enter Setup
    D) Enter DRAM Diagnostics
    K) Burn boot flash using Kermit
    U) Change baud rate and flow control
    R) Reboot
    
    Choice: 2

    When the UEFI Bootloader is running, hit the <ESC> key when you see the following message:

    Press ESCAPE for boot options ..

    The following menu should now be visible:

     crb106-pcie
     A8                                                  2.50 GHz
     SDK12.23.10                                         40960 MB RAM
    
    
    
       Select Language            <Standard English>         This is the option
                                                             one adjusts to change
     > Device Manager                                        the language for the
     > Boot Manager                                          current system
     > Boot Maintenance Manager
    
       Continue
       Reset
    
    
    
    
    
    
    
      ^v=Move Highlight       <Enter>=Select Entry

    Move to the Boot Manager and press <ENTER>. Then move through the menu until you hit an interface with the MAC address 80AA9988776A and the UEFI PXEv4 option.

    /------------------------------------------------------------------------------\
    |                                Boot Manager                                  |
    \------------------------------------------------------------------------------/
                                                           ^
       UEFI HTTPv6 (MAC:80AA99887767)                        Device Path :
       UEFI PXEv4 (MAC:80AA99887768)                         PciRoot(0x2)/Pci(0x5,0
       UEFI PXEv6 (MAC:80AA99887768)                         x0)/Pci(0x0,0x0)/MAC(8
       UEFI HTTPv4 (MAC:80AA99887768)                        0AA9988776A,0x1)/IPv4(
       UEFI HTTPv6 (MAC:80AA99887768)                        0.0.0.0,0x0,DHCP,0.0.0
       UEFI PXEv4 (MAC:80AA99887769)                         .0,0.0.0.0,0.0.0.0)
       UEFI PXEv6 (MAC:80AA99887769)
       UEFI HTTPv4 (MAC:80AA99887769)
       UEFI HTTPv6 (MAC:80AA99887769)
       UEFI PXEv4 (MAC:80AA9988776A)
       UEFI PXEv6 (MAC:80AA9988776A)
       UEFI HTTPv4 (MAC:80AA9988776A)
       UEFI HTTPv6 (MAC:80AA9988776A)
       UEFI Shell
    
                                                           v
    /------------------------------------------------------------------------------\
    |                                                                              |
    | ^v=Move Highlight       <Enter>=Select Entry      Esc=Exit                   |
    \------------------------------------------------------------------------------/
    

    When this option is selected by pressing <ENTER>, the installation of RHEL should start.

    Conclusion

    The Marvell Octeon 10 will reboot into the fresh RHEL environment after the installation completes.

    Demo of RHEL running on the DPU

    Showing the CPU information:

    lscpu
    Architecture:          aarch64
      CPU op-mode(s):      32-bit, 64-bit
      Byte Order:          Little Endian
    CPU(s):                24
      On-line CPU(s) list: 0-23
    Vendor ID:             ARM
      BIOS Vendor ID:      Marvell
      BIOS Model name:     A8
      Model:               0
      Thread(s) per core:  1
      Core(s) per socket:  1
      Socket(s):           24
      Stepping:            r0p0
      BogoMIPS:            2000.00
      Flags:               fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp a
                           simdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4
                            asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm ssbs
                           sb dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4
                           flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng
    Caches (sum of all):
      L1d:                 1.5 MiB (24 instances)
      L1i:                 1.5 MiB (24 instances)
      L2:                  24 MiB (24 instances)
    NUMA:
      NUMA node(s):        1
      NUMA node0 CPU(s):   0-23
    Vulnerabilities:
      Itlb multihit:       Not affected
      L1tf:                Not affected
      Mds:                 Not affected
      Meltdown:            Not affected
      Mmio stale data:     Not affected
      Retbleed:            Not affected
      Spec store bypass:   Mitigation; Speculative Store Bypass disabled via prctl
      Spectre v1:          Mitigation; __user pointer sanitization
      Spectre v2:          Mitigation; CSV2, BHB
      Srbds:               Not affected
      Tsx async abort:     Not affected
    

    We can install ARM packages using dnf:

    dnf install dhclient
    Updating Subscription Management repositories.
    Waiting for process with pid 6150 to finish.
    Red Hat Enterprise Linux 9 for ARM 64 - AppStre  13 MB/s |  25 MB     00:01
    Red Hat Enterprise Linux 9 for ARM 64 - BaseOS  8.6 MB/s |  15 MB     00:01
    Red Hat Enterprise Linux 9 for ARM 64 - BaseOS  7.4 MB/s |  15 MB     00:01
    Red Hat Enterprise Linux 9 for ARM 64 - AppStre  11 MB/s |  25 MB     00:02
    Dependencies resolved.
    ========================================================================================
     Package            Arch     Version            Repository                          Size
    ========================================================================================
    Installing:
     dhcp-client        aarch64  12:4.4.2-19.b1.el9 rhel-9-for-aarch64-baseos-rpms     770 k
    Installing dependencies:
     dhcp-common        noarch   12:4.4.2-19.b1.el9 rhel-9-for-aarch64-baseos-rpms     131 k
     ipcalc             aarch64  1.0.0-5.el9        rhel-9-for-aarch64-baseos-rpms      43 k
    Installing weak dependencies:
     geolite2-city      noarch   20191217-6.el9     rhel-9-for-aarch64-appstream-rpms   23 M
     geolite2-country   noarch   20191217-6.el9     rhel-9-for-aarch64-appstream-rpms  1.6 M
    
    Transaction Summary
    ========================================================================================
    Install  5 Packages
    
    Total download size: 25 M
    Installed size: 66 M
    Is this ok [y/N]: y
    Downloading Packages:
    (1/5): ipcalc-1.0.0-5.el9.aarch64.rpm            58 kB/s |  43 kB     00:00
    (2/5): geolite2-country-20191217-6.el9.noarch.r 1.6 MB/s | 1.6 MB     00:00
    (3/5): dhcp-common-4.4.2-19.b1.el9.noarch.rpm   179 kB/s | 131 kB     00:00
    (4/5): dhcp-client-4.4.2-19.b1.el9.aarch64.rpm  779 kB/s | 770 kB     00:00
    (5/5): geolite2-city-20191217-6.el9.noarch.rpm   11 MB/s |  23 MB     00:02
    --------------------------------------------------------------------------------
    Total                                            12 MB/s |  25 MB     00:02
    Red Hat Enterprise Linux 9 for ARM 64 - AppStre 3.5 MB/s | 3.6 kB     00:00
    ...
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transaction
      Preparing        :                                                        1/1
      Installing       : dhcp-common-12:4.4.2-19.b1.el9.noarch                  1/5
      Installing       : geolite2-country-20191217-6.el9.noarch                 2/5
      Installing       : geolite2-city-20191217-6.el9.noarch                    3/5
      Installing       : ipcalc-1.0.0-5.el9.aarch64                             4/5
      Installing       : dhcp-client-12:4.4.2-19.b1.el9.aarch64                 5/5
      Running scriptlet: dhcp-client-12:4.4.2-19.b1.el9.aarch64                 5/5
      Verifying        : geolite2-city-20191217-6.el9.noarch                    1/5
      Verifying        : geolite2-country-20191217-6.el9.noarch                 2/5
      Verifying        : ipcalc-1.0.0-5.el9.aarch64                             3/5
      Verifying        : dhcp-client-12:4.4.2-19.b1.el9.aarch64                 4/5
      Verifying        : dhcp-common-12:4.4.2-19.b1.el9.noarch                  5/5
    Installed products updated.
    
    Installed:
      dhcp-client-12:4.4.2-19.b1.el9.aarch64 dhcp-common-12:4.4.2-19.b1.el9.noarch
      geolite2-city-20191217-6.el9.noarch    geolite2-country-20191217-6.el9.noarch
      ipcalc-1.0.0-5.el9.aarch64
    
    Complete!

    We can see the available interfaces (including PF and VF) on the DPU:

    ip link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: enP2p1s0v0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 0e:09:6f:36:73:59 brd ff:ff:ff:ff:ff:ff
    3: enP2p1s0v4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 42:d3:57:af:16:04 brd ff:ff:ff:ff:ff:ff
    4: enP2p5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
        link/ether 06:af:ab:c5:1b:10 brd ff:ff:ff:ff:ff:ff
    5: enP2p1s0v1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 4e:57:77:1f:48:13 brd ff:ff:ff:ff:ff:ff
    6: enP2p6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether ee:4f:3a:a6:da:76 brd ff:ff:ff:ff:ff:ff
    7: enP2p1s0v5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 8e:96:75:71:d6:17 brd ff:ff:ff:ff:ff:ff
    8: enP2p1s0v2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 52:08:cb:d6:91:66 brd ff:ff:ff:ff:ff:ff
    9: enP2p1s0v6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether be:d3:df:42:65:23 brd ff:ff:ff:ff:ff:ff
    10: enP2p1s0v3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 26:9f:7e:1f:09:11 brd ff:ff:ff:ff:ff:ff
    11: enP2p1s0v7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 9e:79:bf:4f:22:7b brd ff:ff:ff:ff:ff:ff
    12: enP2p1s0v8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 4e:f9:62:f2:05:95 brd ff:ff:ff:ff:ff:ff
    13: enP2p1s0v9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 22:a9:e6:1a:20:11 brd ff:ff:ff:ff:ff:ff
    14: enP2p2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
        link/ether b6:76:37:b3:b9:dc brd ff:ff:ff:ff:ff:ff
    15: enP2p3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
        link/ether 02:23:d8:58:41:7c brd ff:ff:ff:ff:ff:ff
    16: enP2p1s0v10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 52:ac:78:34:cd:b3 brd ff:ff:ff:ff:ff:ff
    17: enP2p4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
        link/ether 7e:ca:a9:5f:a5:5a brd ff:ff:ff:ff:ff:ff
    18: enP2p1s0v11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 66:a6:76:5e:e5:9f brd ff:ff:ff:ff:ff:ff
    19: enP2p1s0v12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 5a:ca:c8:50:65:2a brd ff:ff:ff:ff:ff:ff
    20: enP2p1s0v13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 0e:d5:9b:6d:92:4d brd ff:ff:ff:ff:ff:ff
    21: enP2p1s0v14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether e2:69:8d:9a:7e:76 brd ff:ff:ff:ff:ff:ff
    22: enP2p1s0v15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 5a:9a:51:6c:ab:46 brd ff:ff:ff:ff:ff:ff
    

    Running ethtool on some interfaces to show PFs and VFs available on the DPU:

    ethtool -i enP2p6s0
    driver: rvu-nicpf
    version: 5.14.0-284.11.1.el9_2.aarch64
    firmware-version:
    expansion-rom-version:
    bus-info: 0002:06:00.0
    supports-statistics: yes
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags: no
    
    ethtool -i enP2p2s0
    driver: rvu-nicpf
    version: 5.14.0-284.11.1.el9_2.aarch64
    firmware-version:
    expansion-rom-version:
    bus-info: 0002:02:00.0
    supports-statistics: yes
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags: no
    
    ethtool -i enP2p1s0v0
    driver: rvu-nicvf
    version: 5.14.0-284.11.1.el9_2.aarch64
    firmware-version:
    expansion-rom-version:
    bus-info: 0002:01:00.1
    supports-statistics: yes
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags: no

    Appendix 1: Resetting the Marvell Octeon 10 DPU

    Enter the other USB device for the Marvell Octeon 10 DPU:

    minicom -D /dev/ttyUSB1
     

    Warning alert: Warning

    Important: The Marvell Octeon 10 has issues with the Hardware Flow Control. Make sure this option is set to No via “O - cOnfigure Minicom -> Serial port setup -> F - Hardware Flow Control : No”. Also make sure the baud rate “E - Bps/Par/Bits : 115200 8N1” is set correctly.

    Enter the M) Management commands:

    ===================================
    SCP Main Menu
    ===================================
    P) Power Control commands
    M) Management commands
    
    Choice:  M

    Enter the r) Chip reset to reset the Marvell Octeon 10 DPU.

    ===================================
    SCP Management Menu
    ===================================
    r) Chip reset
    (blank line returns to Main Menu)
    
    Choice:  r

    Related Posts

    • How to install multiple versions of Python on Red Hat Enterprise Linux

    • How to install Python Flask on Red Hat Enterprise Linux 7

    • How to install and configure Jenkins to build .NET apps on Red Hat Enterprise Linux

    • Exploring x86-64-v3 for Red Hat Enterprise Linux 10

    • Getting started with RHEL on WSL

    • Install GCC and build a Hello World application on RHEL 9

    Recent Posts

    • Meet the Red Hat Node.js team at PowerUP 2025

    • How to use pipelines for AI/ML automation at the edge

    • What's new in network observability 1.8

    • LLM Compressor: Optimize LLMs for low-latency deployments

    • How to set up NVIDIA NIM on Red Hat OpenShift AI

    What’s up next?

    <p>Users and administrators query and control systemd behavior through the systemctl command. The systemd Commands Cheat Sheet presents the most common uses of systemctl, along with journalctl for displaying information about systemd activities from its logs.</p>

    Get the cheat sheet
    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Products

    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform

    Build

    • Developer Sandbox
    • Developer Tools
    • Interactive Tutorials
    • API Catalog

    Quicklinks

    • Learning Resources
    • E-books
    • Cheat Sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site Status Dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue