Message ID | 20230427120553.18088-3-michal.orzel@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | automation: xilinx: GEM passthrough | expand |
On Thu, 27 Apr 2023, Michal Orzel wrote: > Being able to access a real board with real resources gives a great > opportunity to finally test passthroughing devices to guests. Therefore, > create a new Xilinx job to test GEM (Gigabit Ethernet MAC) controller > passthrough to a dom0less domU. > > By passing "gem-passthrough" as a test variant, the test will instruct > the ImageBuilder to use "eth0.dtb" (passthrough dtb stored under tftp > server root) as a guest dtb and to add "xen,passthrough" dtb property to > "/amba/ethernet@ff0e0000" node. The guest itself will try to bringup > the network interface, obtain dynamically IP address and ping the default > gateway. > > Signed-off-by: Michal Orzel <michal.orzel@amd.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > Example job: > https://gitlab.com/xen-project/people/sstabellini/xen/-/jobs/4189922473 > --- > automation/gitlab-ci/test.yaml | 8 ++++++ > .../scripts/xilinx-smoke-dom0less-arm64.sh | 25 +++++++++++++++++++ > 2 files changed, 33 insertions(+) > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > index d68c584269dd..3409d704a7eb 100644 > --- a/automation/gitlab-ci/test.yaml > +++ b/automation/gitlab-ci/test.yaml > @@ -131,6 +131,14 @@ xilinx-smoke-dom0less-arm64-gcc: > - *arm64-test-needs > - alpine-3.12-gcc-arm64 > > +xilinx-smoke-dom0less-arm64-gcc-gem-passthrough: > + extends: .xilinx-arm64 > + script: > + - ./automation/scripts/xilinx-smoke-dom0less-arm64.sh gem-passthrough 2>&1 | tee ${LOGFILE} > + needs: > + - *arm64-test-needs > + - alpine-3.12-gcc-arm64 > + > adl-smoke-x86-64-gcc-debug: > extends: .adl-x86-64 > script: > diff --git a/automation/scripts/xilinx-smoke-dom0less-arm64.sh b/automation/scripts/xilinx-smoke-dom0less-arm64.sh > index 73ba251f4cc1..075305241c8d 100755 > --- a/automation/scripts/xilinx-smoke-dom0less-arm64.sh > +++ b/automation/scripts/xilinx-smoke-dom0less-arm64.sh > @@ -22,6 +22,22 @@ echo \"${passed}\" > " > fi > > +if [[ "${test_variant}" == "gem-passthrough" ]]; then > + passed="${test_variant} test passed" > + > + # For a passthroughed GEM: > + # - bring up the network interface > + # - dynamically assign IP > + # - ping the default gateway > + domU_check=" > +set -ex > +ifconfig eth0 up > +udhcpc -i eth0 -n > +ping -c 10 \$(ip route | awk '/^default/ {print \$3}') > +echo \"${passed}\" > +" > +fi > + > # DomU > mkdir -p rootfs > cd rootfs > @@ -96,6 +112,15 @@ cp -f binaries/domU-rootfs.cpio.gz $TFTP/ > # export dtb to artifacts > cp $TFTP/mpsoc_smmu.dtb . > > +if [[ "${test_variant}" == "gem-passthrough" ]]; then > + echo " > + DOMU_PASSTHROUGH_DTB[0]=\"eth0.dtb\" > + DOMU_PASSTHROUGH_PATHS[0]=\"/amba/ethernet@ff0e0000\"" >> $TFTP/config > + > + # export passthrough dtb to artifacts > + cp $TFTP/eth0.dtb . > +fi > + > rm -rf imagebuilder > git clone https://gitlab.com/ViryaOS/imagebuilder > bash imagebuilder/scripts/uboot-script-gen -t tftp -d $TFTP/ -c $TFTP/config > -- > 2.25.1 >
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index d68c584269dd..3409d704a7eb 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -131,6 +131,14 @@ xilinx-smoke-dom0less-arm64-gcc: - *arm64-test-needs - alpine-3.12-gcc-arm64 +xilinx-smoke-dom0less-arm64-gcc-gem-passthrough: + extends: .xilinx-arm64 + script: + - ./automation/scripts/xilinx-smoke-dom0less-arm64.sh gem-passthrough 2>&1 | tee ${LOGFILE} + needs: + - *arm64-test-needs + - alpine-3.12-gcc-arm64 + adl-smoke-x86-64-gcc-debug: extends: .adl-x86-64 script: diff --git a/automation/scripts/xilinx-smoke-dom0less-arm64.sh b/automation/scripts/xilinx-smoke-dom0less-arm64.sh index 73ba251f4cc1..075305241c8d 100755 --- a/automation/scripts/xilinx-smoke-dom0less-arm64.sh +++ b/automation/scripts/xilinx-smoke-dom0less-arm64.sh @@ -22,6 +22,22 @@ echo \"${passed}\" " fi +if [[ "${test_variant}" == "gem-passthrough" ]]; then + passed="${test_variant} test passed" + + # For a passthroughed GEM: + # - bring up the network interface + # - dynamically assign IP + # - ping the default gateway + domU_check=" +set -ex +ifconfig eth0 up +udhcpc -i eth0 -n +ping -c 10 \$(ip route | awk '/^default/ {print \$3}') +echo \"${passed}\" +" +fi + # DomU mkdir -p rootfs cd rootfs @@ -96,6 +112,15 @@ cp -f binaries/domU-rootfs.cpio.gz $TFTP/ # export dtb to artifacts cp $TFTP/mpsoc_smmu.dtb . +if [[ "${test_variant}" == "gem-passthrough" ]]; then + echo " + DOMU_PASSTHROUGH_DTB[0]=\"eth0.dtb\" + DOMU_PASSTHROUGH_PATHS[0]=\"/amba/ethernet@ff0e0000\"" >> $TFTP/config + + # export passthrough dtb to artifacts + cp $TFTP/eth0.dtb . +fi + rm -rf imagebuilder git clone https://gitlab.com/ViryaOS/imagebuilder bash imagebuilder/scripts/uboot-script-gen -t tftp -d $TFTP/ -c $TFTP/config
Being able to access a real board with real resources gives a great opportunity to finally test passthroughing devices to guests. Therefore, create a new Xilinx job to test GEM (Gigabit Ethernet MAC) controller passthrough to a dom0less domU. By passing "gem-passthrough" as a test variant, the test will instruct the ImageBuilder to use "eth0.dtb" (passthrough dtb stored under tftp server root) as a guest dtb and to add "xen,passthrough" dtb property to "/amba/ethernet@ff0e0000" node. The guest itself will try to bringup the network interface, obtain dynamically IP address and ping the default gateway. Signed-off-by: Michal Orzel <michal.orzel@amd.com> --- Example job: https://gitlab.com/xen-project/people/sstabellini/xen/-/jobs/4189922473 --- automation/gitlab-ci/test.yaml | 8 ++++++ .../scripts/xilinx-smoke-dom0less-arm64.sh | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+)