Skip to content

Commit 4f8d9e8

Browse files
committed
Adding prebuilt dpu docker
1 parent fcd8e7d commit 4f8d9e8

File tree

13 files changed

+134
-24
lines changed

13 files changed

+134
-24
lines changed

dockers/docker-orchagent/orchagent.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ elif [ "$platform" == "mellanox" ]; then
6565
elif [ "$platform" == "innovium" ]; then
6666
ORCHAGENT_ARGS+="-m $MAC_ADDRESS"
6767
elif [ "$platform" == "pensando" ]; then
68-
MAC_ADDRESS=$(ip link show oob_mnic0 | grep ether | awk '{print $2}')
68+
MAC_ADDRESS=$(ip link property add dev oob_mnic0 altname eth0; ip link show oob_mnic0 | grep ether | awk '{print $2}')
6969
ORCHAGENT_ARGS+="-m $MAC_ADDRESS"
7070
else
7171
# Should we use the fallback MAC in case it is not found in Device.Metadata

files/build_templates/sonic_debian_extension.j2

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -764,12 +764,6 @@ fi
764764
{% endfor %}
765765

766766
if [[ $CONFIGURED_PLATFORM == pensando ]]; then
767-
#we need to start pciemgrd process soon at the bootup for pci txn to be up.
768-
#if we don't start pciemgrd early pcie timeout happens and server reboots.
769-
#pciemgrd runs as part of dpu docker. So load this at build time itself.
770-
sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker load -i boot/dpu_sw.tar
771-
sudo LANG=C chroot $FILESYSTEM_ROOT rm -f boot/dpu_sw.tar
772-
773767
#Disable rc.local
774768
sudo LANG=C chroot $FILESYSTEM_ROOT chmod -x /etc/rc.local
775769
fi

files/scripts/docker-dpu-base.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#!/bin/bash

platform/pensando/docker-dpu.dep

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
DOCKER_DPU_STEM = docker-dpu
2+
DOCKER_DPU = $(DOCKER_DPU_STEM).gz
3+
DPATH := $($(DOCKER_DPU)_PATH)
4+
DEP_FILES := platform/pensando/docker-dpu.dep platform/pensando/docker-dpu.mk
5+
6+
$(DOCKER_DPU)_CACHE_MODE := none
7+
$(DOCKER_DPU)_DEP_FILES := $(DEP_FILES)

platform/pensando/docker-dpu.mk

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# docker dpu image for load
2+
DOCKER_DPU_STEM = docker-dpu
3+
4+
DOCKER_DPU = $(DOCKER_DPU_STEM).gz
5+
6+
$(DOCKER_DPU)_PATH = $(PLATFORM_PATH)/$(DOCKER_DPU_STEM)
7+
8+
$(DOCKER_DPU)_LOAD_DOCKERS = $(DOCKER_DPU_BASE)
9+
10+
$(DOCKER_DPU)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER)
11+
12+
$(DOCKER_DPU)_DBG_DEPENDS += $($(DOCKER_CONFIG_ENGINE_BUSTER)_DBG_DEPENDS)
13+
14+
$(DOCKER_DPU)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE_BUSTER)_DBG_IMAGE_PACKAGES)
15+
16+
SONIC_DOCKER_IMAGES += $(DOCKER_DPU)
17+
18+
$(DOCKER_DPU)_PACKAGE_NAME = dpu
19+
$(DOCKER_DPU)_CONTAINER_NAME = dpu
20+
$(DOCKER_DPU)_VERSION = 1.0.0
21+
$(DOCKER_DPU)_RUN_OPT += --privileged -t
22+
$(DOCKER_DPU)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
23+
24+
#NIC_MOUNT="-v /dev/shm:/dev/shm -v /boot/nicA/nic_core:/nic -v /boot/nicA/shared/conf/gen:/nic/conf/gen"
25+
$(DOCKER_DPU)_RUN_OPT += --privileged -t
26+
$(DOCKER_DPU)_RUN_OPT += -v /host/dpu/update:/update
27+
$(DOCKER_DPU)_RUN_OPT += -v /host/dpu/sysconfig/config0:/sysconfig/config0
28+
$(DOCKER_DPU)_RUN_OPT += -v /host/dpu/sysconfig/config1:/sysconfig/config1
29+
$(DOCKER_DPU)_RUN_OPT += -v /host/dpu/obfl:/obfl
30+
$(DOCKER_DPU)_RUN_OPT += -v /host/dpu/data:/data
31+
$(DOCKER_DPU)_RUN_OPT += -v /host/dpu/tmpfsshare:/tmp
32+
$(DOCKER_DPU)_RUN_OPT += -v /host/dpu/runfs:/run
33+
$(DOCKER_DPU)_RUN_OPT += -v /host/dpu/logfs:/var/log
34+
$(DOCKER_DPU)_RUN_OPT += -v /sys:/sys
35+
#$(DOCKER_DPU)_RUN_OPT += $NIC_MOUNT
36+
$(DOCKER_DPU)_RUN_OPT += --net=host
37+
$(DOCKER_DPU)_RUN_OPT += docker-dpu:v1
38+
39+
SONIC_BUSTER_DOCKERS += $(DOCKER_DPU)
40+
SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_DPU)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# DOWNLOADED_DOCKER_IMAGES
2+
FROM docker-dpu-base
3+
4+
RUN echo "docker-dpu-base"
5+
6+
ENTRYPOINT ["/nic/tools/sysinit.sh", "classic", "hw", "30"]
7+

platform/pensando/dpu/debian/dpu.init

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#!/bin/bash
2+
3+
# {C} Copyright 2023 AMD Systems Inc. All rights reserved
4+
25
# This script starts/stops dpu sw
36

7+
48
### BEGIN INIT INFO
59
# Provides: load-dpu
610
# Required-Start:
@@ -14,20 +18,26 @@
1418
ACTIVE_FILE="/boot/active.txt"
1519
NIC_MOUNT=""
1620
LOG_FILE="/tmp/active_nic"
21+
TAG="latest"
22+
HOST_DIR=/host/dpu
1723

1824
function start_dpu()
1925
{
20-
mkdir -p /host/dpu/update
21-
mkdir -p /host/dpu/sysconfig/config0
22-
mkdir -p /host/dpu/sysconfig/config1
23-
mkdir -p /host/dpu/obfl
24-
mkdir -p /host/dpu/data
25-
mkdir -p /host/dpu/tmpfsshare
26-
mkdir -p /host/dpu/runfs
27-
mkdir -p /host/dpu/logfs
28-
mount -t tmpfs -o size=20M,mode=1777 tmpfs /host/dpu/tmpfsshare
29-
mount -t tmpfs -o size=20M,mode=0755 runs /host/dpu/runfs
30-
mount -t tmpfs -o size=20M,mode=0755 logfs /host/dpu/logfs
26+
modprobe ionic_mnic
27+
modprobe mnet_uio_pdrv_genirq
28+
modprobe mdev
29+
30+
mkdir -p $HOST_DIR/update
31+
mkdir -p $HOST_DIR/sysconfig/config0
32+
mkdir -p $HOST_DIR/sysconfig/config1
33+
mkdir -p $HOST_DIR/obfl
34+
mkdir -p $HOST_DIR/data
35+
mkdir -p $HOST_DIR/tmpfsshare
36+
mkdir -p $HOST_DIR/runfs
37+
mkdir -p $HOST_DIR/logfs
38+
mount -t tmpfs -o size=20M,mode=1777 tmpfs $HOST_DIR/tmpfsshare
39+
mount -t tmpfs -o size=20M,mode=0755 runs $HOST_DIR/runfs
40+
mount -t tmpfs -o size=20M,mode=0755 logfs $HOST_DIR/logfs
3141

3242
if [ -f "$ACTIVE_FILE" ]; then
3343
ACTIVE_CONTENTS=$(cat "$ACTIVE_FILE")
@@ -41,9 +51,11 @@ function start_dpu()
4151
echo "/boot/active.txt not present" > $LOG_FILE
4252
fi
4353
echo "Active Nic: $ACTIVE_NIC" >> $LOG_FILE
44-
echo "NIC_MOUNT: $NIC_MOUNT" >> $LOG_FILE
54+
echo "NIC_MOUNT: $NIC_MOUNT" >> $LOG_FILE
55+
56+
docker ps -a --format "{{.ID}}\t{{.Image}}" | grep "docker-dpu:latest" | awk '{print $1}' | xargs -I {} docker rm {}
4557

46-
docker run -v /host/dpu/update:/update -v /host/dpu/sysconfig/config0:/sysconfig/config0 -v /host/dpu/sysconfig/config1:/sysconfig/config1 -v /host/dpu/obfl:/obfl -v /host/dpu/data:/data -v /host/dpu/tmpfsshare:/tmp -v /host/dpu/runfs:/run -v /host/dpu/logfs:/var/log -v /sys:/sys $NIC_MOUNT --net=host --privileged dpu:v1
58+
docker run -v $HOST_DIR/update:/update -v $HOST_DIR/sysconfig/config0:/sysconfig/config0 -v $HOST_DIR/sysconfig/config1:/sysconfig/config1 -v $HOST_DIR/obfl:/obfl -v $HOST_DIR/data:/data -v $HOST_DIR/tmpfsshare:/tmp -v $HOST_DIR/runfs:/run -v $HOST_DIR/logfs:/var/log -v /sys:/sys $NIC_MOUNT --net=host --name=docker-dpu --privileged docker-dpu:$TAG
4759
}
4860

4961
case "$1" in
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
systemd/dpu.service lib/systemd/system
2-
image/dpu_sw.tar /boot/

platform/pensando/rules.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
include $(PLATFORM_PATH)/dpu.mk
2+
include $(PLATFORM_PATH)/docker-dpu.mk
23
include $(PLATFORM_PATH)/one-image.mk
34
include $(PLATFORM_PATH)/sdk.mk
45
include $(PLATFORM_PATH)/docker-syncd-pensando.mk

rules/docker-dpu-base.dep

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
DEP_FILES := rules/docker-dpu-base.dep rules/docker-dpu-base.mk
2+
3+
$(DOCKER_DPU_BASE)_CACHE_MODE := none
4+
$(DOCKER_DPU_BASE)_DEP_FILES := $(DEP_FILES)

rules/docker-dpu-base.mk

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# docker dpu image for load
2+
3+
DOCKER_DPU_BASE_STEM = docker-dpu-base
4+
5+
DOCKER_DPU_BASE = $(DOCKER_DPU_BASE_STEM).gz
6+
7+
DOWNLOADED_DOCKER_IMAGES += $(DOCKER_DPU_BASE)
8+

scripts/prepare_docker_buildinfo.sh

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,27 @@ ENV IMAGENAME='${IMAGENAME}'
5555
ENV DISTRO='${DISTRO}'
5656
RUN pre_run_buildinfo '${IMAGENAME}'
5757
'
58+
DOWNLOADED_DOCKER_IMAGES_DOCKERFILE_PRE_SCRIPT='# Auto-Generated for buildinfo
59+
ARG SONIC_VERSION_CACHE
60+
ARG SONIC_VERSION_CONTROL_COMPONENTS
61+
COPY ["buildinfo", "/usr/local/share/buildinfo"]
62+
COPY vcache/ /sonic/target/vcache/'${IMAGENAME}'
63+
COPY ["tmp_extract", "/"]
64+
ENV IMAGENAME='${IMAGENAME}'
65+
ENV DISTRO='${DISTRO}'
66+
RUN pre_run_buildinfo '${IMAGENAME}'
67+
'
5868

5969
# Add the auto-generate code if it is not added in the target Dockerfile
6070
if [ ! -f $DOCKERFILE_TARGET ] || ! grep -q "Auto-Generated for buildinfo" $DOCKERFILE_TARGET; then
6171
# Insert the docker build script before the RUN command
6272
LINE_NUMBER=$(grep -Fn -m 1 'RUN' $DOCKERFILE | cut -d: -f1)
6373
TEMP_FILE=$(mktemp)
64-
awk -v text="${DOCKERFILE_PRE_SCRIPT}" -v linenumber=$LINE_NUMBER 'NR==linenumber{print text}1' $DOCKERFILE > $TEMP_FILE
65-
74+
if ! grep -q "DOWNLOADED_DOCKER_IMAGES" $DOCKERFILE_TARGET; then
75+
awk -v text="${DOCKERFILE_PRE_SCRIPT}" -v linenumber=$LINE_NUMBER 'NR==linenumber{print text}1' $DOCKERFILE > $TEMP_FILE
76+
else
77+
awk -v text="${DOWNLOADED_DOCKER_IMAGES_DOCKERFILE_PRE_SCRIPT}" -v linenumber=$LINE_NUMBER 'NR==linenumber{print text}1' $DOCKERFILE > $TEMP_FILE
78+
fi
6679
# Append the docker build script at the end of the docker file
6780
echo -e "\nRUN post_run_buildinfo ${IMAGENAME} " >> $TEMP_FILE
6881
echo -e "\nRUN post_run_cleanup ${IMAGENAME} " >> $TEMP_FILE
@@ -73,7 +86,13 @@ fi
7386

7487
# Copy the build info config
7588
mkdir -p ${BUILDINFO_PATH}
76-
cp -rf src/sonic-build-hooks/buildinfo/* $BUILDINFO_PATH
89+
if ! grep -q "DOWNLOADED_DOCKER_IMAGES" $DOCKERFILE_TARGET; then
90+
cp -rf src/sonic-build-hooks/buildinfo/* $BUILDINFO_PATH
91+
else
92+
cp -rf src/sonic-build-hooks/buildinfo/* $BUILDINFO_PATH
93+
mkdir -p $DOCKERFILE_PATH/tmp_extract
94+
dpkg --extract $BUILDINFO_PATH/sonic-build-hooks_1.0_all.deb $DOCKERFILE_PATH/tmp_extract
95+
fi
7796

7897
# Generate the version lock files
7998
scripts/versions_manager.py generate -t "$BUILDINFO_VERSION_PATH" -n "$IMAGENAME" -d "$DISTRO" -a "$ARCH"

slave.mk

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,6 +1086,24 @@ $(foreach IMAGE,$(DOCKER_IMAGES), $(eval $(IMAGE)_FILES_PATH := $(FILES_PATH)))
10861086
$(foreach IMAGE,$(DOCKER_DBG_IMAGES), $(eval $(IMAGE)_DEBS_PATH := $(DEBS_PATH)))
10871087
$(foreach IMAGE,$(DOCKER_DBG_IMAGES), $(eval $(IMAGE)_FILES_PATH := $(FILES_PATH)))
10881088

1089+
# Targets for downloaded docker images
1090+
$(addprefix $(TARGET_PATH)/,$(DOWNLOADED_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform \
1091+
$$(%.gz_DEP_FILES)
1092+
$(HEADER)
1093+
1094+
cp files/$(DOWNLOADED_DOCKER_IMAGES) target/$(DOWNLOADED_DOCKER_IMAGES)
1095+
1096+
$(FOOTER)
1097+
1098+
DOCKER_LOAD_DOWNLOADED_TARGETS = $(addsuffix -load,$(addprefix $(TARGET_PATH)/, \
1099+
$(DOWNLOADED_DOCKER_IMAGES)))
1100+
1101+
$(DOCKER_LOAD_DOWNLOADED_TARGETS) : $(TARGET_PATH)/%.gz-load : .platform docker-start $$(TARGET_PATH)/$$*.gz
1102+
$(HEADER)
1103+
$(call docker-image-load,$*)
1104+
$(FOOTER)
1105+
1106+
10891107
# Targets for building docker images
10901108
$(addprefix $(TARGET_PATH)/, $(DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start \
10911109
$$(addprefix $$($$*.gz_DEBS_PATH)/,$$($$*.gz_DEPENDS)) \

0 commit comments

Comments
 (0)