Message ID | 20230316091224.338620-3-jiamei.xie@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | automation: introduce static heap and shared memory tests | expand |
On Thu, 16 Mar 2023, jiamei.xie wrote: > Create 2 new test jobs, called qemu-smoke-dom0less-arm64-gcc-static-shared-mem > and qemu-smoke-dom0less-arm64-gcc-debug-static-shared-mem. > > Adjust qemu-smoke-dom0less-arm64.sh script to accomodate the static > shared memory test as a new test variant. The test variant is determined > based on the first argument passed to the script. For testing static > shared memory, the argument is 'static-shared-mem'. > > The test configures two dom0less DOMUs with a static shared memory > region and adds a check in the init script. > > The check consists in comparing the contents of the /proc/device-tree/reserved-memory > xen-shmem entry with the static shared memory range and id with which > DOMUs were configured. If the memory layout is correct, a message gets > printed by DOMU. > > At the end of the qemu run, the script searches for the specific message > in the logs and fails if not found. > > Signed-off-by: jiamei.xie <jiamei.xie@arm.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > Changes from v1: > - Move the second domU creation to the general ImageBuilder script. > --- > automation/gitlab-ci/build.yaml | 18 ++++++++++++ > automation/gitlab-ci/test.yaml | 16 ++++++++++ > .../scripts/qemu-smoke-dom0less-arm64.sh | 29 +++++++++++++++++++ > 3 files changed, 63 insertions(+) > > diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml > index 38bb22d860..820cc0af83 100644 > --- a/automation/gitlab-ci/build.yaml > +++ b/automation/gitlab-ci/build.yaml > @@ -623,6 +623,24 @@ alpine-3.12-gcc-debug-arm64-staticmem: > CONFIG_UNSUPPORTED=y > CONFIG_STATIC_MEMORY=y > > +alpine-3.12-gcc-arm64-static-shared-mem: > + extends: .gcc-arm64-build > + variables: > + CONTAINER: alpine:3.12-arm64v8 > + EXTRA_XEN_CONFIG: | > + CONFIG_UNSUPPORTED=y > + CONFIG_STATIC_MEMORY=y > + CONFIG_STATIC_SHM=y > + > +alpine-3.12-gcc-debug-arm64-static-shared-mem: > + extends: .gcc-arm64-build-debug > + variables: > + CONTAINER: alpine:3.12-arm64v8 > + EXTRA_XEN_CONFIG: | > + CONFIG_UNSUPPORTED=y > + CONFIG_STATIC_MEMORY=y > + CONFIG_STATIC_SHM=y > + > alpine-3.12-gcc-arm64-boot-cpupools: > extends: .gcc-arm64-build > variables: > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > index 37465305ff..d75662358f 100644 > --- a/automation/gitlab-ci/test.yaml > +++ b/automation/gitlab-ci/test.yaml > @@ -174,6 +174,22 @@ qemu-smoke-dom0less-arm64-gcc-debug-staticheap: > - *arm64-test-needs > - alpine-3.12-gcc-debug-arm64 > > +qemu-smoke-dom0less-arm64-gcc-static-shared-mem: > + extends: .qemu-arm64 > + script: > + - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-shared-mem 2>&1 | tee ${LOGFILE} > + needs: > + - *arm64-test-needs > + - alpine-3.12-gcc-arm64-static-shared-mem > + > +qemu-smoke-dom0less-arm64-gcc-debug-static-shared-mem: > + extends: .qemu-arm64 > + script: > + - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-shared-mem 2>&1 | tee ${LOGFILE} > + needs: > + - *arm64-test-needs > + - alpine-3.12-gcc-debug-arm64-static-shared-mem > + > qemu-smoke-dom0less-arm64-gcc-boot-cpupools: > extends: .qemu-arm64 > script: > diff --git a/automation/scripts/qemu-smoke-dom0less-arm64.sh b/automation/scripts/qemu-smoke-dom0less-arm64.sh > index 2d69d976ea..75f575424a 100755 > --- a/automation/scripts/qemu-smoke-dom0less-arm64.sh > +++ b/automation/scripts/qemu-smoke-dom0less-arm64.sh > @@ -32,6 +32,25 @@ if [[ "${test_variant}" == "static-heap" ]]; then > domU_check="echo \"${passed}\"" > fi > > + > +if [[ "${test_variant}" == "static-shared-mem" ]]; then > + passed="${test_variant} test passed" > + SHARED_MEM_HOST="50000000" > + SHARED_MEM_GUEST="4000000" > + SHARED_MEM_SIZE="10000000" > + SHARED_MEM_ID="my-shared-mem-0" > + > + domU_check=" > +current_id=\$(cat /proc/device-tree/reserved-memory/xen-shmem@4000000/xen,id 2>/dev/null) > +expected_id=\"\$(echo ${SHARED_MEM_ID})\" > +current_reg=\$(hexdump -e '16/1 \"%02x\"' /proc/device-tree/reserved-memory/xen-shmem@4000000/reg 2>/dev/null) > +expected_reg=$(printf \"%016x%016x\" 0x${SHARED_MEM_GUEST} 0x${SHARED_MEM_SIZE}) > +if [[ \"\${expected_reg}\" == \"\${current_reg}\" && \"\${current_id}\" == \"\${expected_id}\" ]]; then > + echo \"${passed}\" > +fi > + " > +fi > + > if [[ "${test_variant}" == "boot-cpupools" ]]; then > # Check if domU0 (id=1) is assigned to Pool-1 with null scheduler > passed="${test_variant} test passed" > @@ -124,6 +143,9 @@ NUM_DOMUS=1 > DOMU_KERNEL[0]="Image" > DOMU_RAMDISK[0]="initrd" > DOMU_MEM[0]="256" > +DOMU_KERNEL[1]="Image" > +DOMU_RAMDISK[1]="initrd" > +DOMU_MEM[1]="256" > > LOAD_CMD="tftpb" > UBOOT_SOURCE="boot.source" > @@ -133,6 +155,13 @@ if [[ "${test_variant}" == "static-mem" ]]; then > echo -e "\nDOMU_STATIC_MEM[0]=\"${domu_base} ${domu_size}\"" >> binaries/config > fi > > +if [[ "${test_variant}" == "static-shared-mem" ]]; then > +echo " > +NUM_DOMUS=2 > +DOMU_SHARED_MEM[0]=\"${SHARED_MEM_ID} 0x${SHARED_MEM_HOST} 0x${SHARED_MEM_GUEST} 0x${SHARED_MEM_SIZE}\" > +DOMU_SHARED_MEM[1]=\"${SHARED_MEM_ID} 0x${SHARED_MEM_HOST} 0x${SHARED_MEM_GUEST} 0x${SHARED_MEM_SIZE}\"" >> binaries/config > +fi > + > if [[ "${test_variant}" == "static-heap" ]]; then > # ImageBuilder uses the config file to create the uboot script. Devicetree > # will be set via the generated uboot script. > -- > 2.25.1 >
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml index 38bb22d860..820cc0af83 100644 --- a/automation/gitlab-ci/build.yaml +++ b/automation/gitlab-ci/build.yaml @@ -623,6 +623,24 @@ alpine-3.12-gcc-debug-arm64-staticmem: CONFIG_UNSUPPORTED=y CONFIG_STATIC_MEMORY=y +alpine-3.12-gcc-arm64-static-shared-mem: + extends: .gcc-arm64-build + variables: + CONTAINER: alpine:3.12-arm64v8 + EXTRA_XEN_CONFIG: | + CONFIG_UNSUPPORTED=y + CONFIG_STATIC_MEMORY=y + CONFIG_STATIC_SHM=y + +alpine-3.12-gcc-debug-arm64-static-shared-mem: + extends: .gcc-arm64-build-debug + variables: + CONTAINER: alpine:3.12-arm64v8 + EXTRA_XEN_CONFIG: | + CONFIG_UNSUPPORTED=y + CONFIG_STATIC_MEMORY=y + CONFIG_STATIC_SHM=y + alpine-3.12-gcc-arm64-boot-cpupools: extends: .gcc-arm64-build variables: diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 37465305ff..d75662358f 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -174,6 +174,22 @@ qemu-smoke-dom0less-arm64-gcc-debug-staticheap: - *arm64-test-needs - alpine-3.12-gcc-debug-arm64 +qemu-smoke-dom0less-arm64-gcc-static-shared-mem: + extends: .qemu-arm64 + script: + - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-shared-mem 2>&1 | tee ${LOGFILE} + needs: + - *arm64-test-needs + - alpine-3.12-gcc-arm64-static-shared-mem + +qemu-smoke-dom0less-arm64-gcc-debug-static-shared-mem: + extends: .qemu-arm64 + script: + - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-shared-mem 2>&1 | tee ${LOGFILE} + needs: + - *arm64-test-needs + - alpine-3.12-gcc-debug-arm64-static-shared-mem + qemu-smoke-dom0less-arm64-gcc-boot-cpupools: extends: .qemu-arm64 script: diff --git a/automation/scripts/qemu-smoke-dom0less-arm64.sh b/automation/scripts/qemu-smoke-dom0less-arm64.sh index 2d69d976ea..75f575424a 100755 --- a/automation/scripts/qemu-smoke-dom0less-arm64.sh +++ b/automation/scripts/qemu-smoke-dom0less-arm64.sh @@ -32,6 +32,25 @@ if [[ "${test_variant}" == "static-heap" ]]; then domU_check="echo \"${passed}\"" fi + +if [[ "${test_variant}" == "static-shared-mem" ]]; then + passed="${test_variant} test passed" + SHARED_MEM_HOST="50000000" + SHARED_MEM_GUEST="4000000" + SHARED_MEM_SIZE="10000000" + SHARED_MEM_ID="my-shared-mem-0" + + domU_check=" +current_id=\$(cat /proc/device-tree/reserved-memory/xen-shmem@4000000/xen,id 2>/dev/null) +expected_id=\"\$(echo ${SHARED_MEM_ID})\" +current_reg=\$(hexdump -e '16/1 \"%02x\"' /proc/device-tree/reserved-memory/xen-shmem@4000000/reg 2>/dev/null) +expected_reg=$(printf \"%016x%016x\" 0x${SHARED_MEM_GUEST} 0x${SHARED_MEM_SIZE}) +if [[ \"\${expected_reg}\" == \"\${current_reg}\" && \"\${current_id}\" == \"\${expected_id}\" ]]; then + echo \"${passed}\" +fi + " +fi + if [[ "${test_variant}" == "boot-cpupools" ]]; then # Check if domU0 (id=1) is assigned to Pool-1 with null scheduler passed="${test_variant} test passed" @@ -124,6 +143,9 @@ NUM_DOMUS=1 DOMU_KERNEL[0]="Image" DOMU_RAMDISK[0]="initrd" DOMU_MEM[0]="256" +DOMU_KERNEL[1]="Image" +DOMU_RAMDISK[1]="initrd" +DOMU_MEM[1]="256" LOAD_CMD="tftpb" UBOOT_SOURCE="boot.source" @@ -133,6 +155,13 @@ if [[ "${test_variant}" == "static-mem" ]]; then echo -e "\nDOMU_STATIC_MEM[0]=\"${domu_base} ${domu_size}\"" >> binaries/config fi +if [[ "${test_variant}" == "static-shared-mem" ]]; then +echo " +NUM_DOMUS=2 +DOMU_SHARED_MEM[0]=\"${SHARED_MEM_ID} 0x${SHARED_MEM_HOST} 0x${SHARED_MEM_GUEST} 0x${SHARED_MEM_SIZE}\" +DOMU_SHARED_MEM[1]=\"${SHARED_MEM_ID} 0x${SHARED_MEM_HOST} 0x${SHARED_MEM_GUEST} 0x${SHARED_MEM_SIZE}\"" >> binaries/config +fi + if [[ "${test_variant}" == "static-heap" ]]; then # ImageBuilder uses the config file to create the uboot script. Devicetree # will be set via the generated uboot script.
Create 2 new test jobs, called qemu-smoke-dom0less-arm64-gcc-static-shared-mem and qemu-smoke-dom0less-arm64-gcc-debug-static-shared-mem. Adjust qemu-smoke-dom0less-arm64.sh script to accomodate the static shared memory test as a new test variant. The test variant is determined based on the first argument passed to the script. For testing static shared memory, the argument is 'static-shared-mem'. The test configures two dom0less DOMUs with a static shared memory region and adds a check in the init script. The check consists in comparing the contents of the /proc/device-tree/reserved-memory xen-shmem entry with the static shared memory range and id with which DOMUs were configured. If the memory layout is correct, a message gets printed by DOMU. At the end of the qemu run, the script searches for the specific message in the logs and fails if not found. Signed-off-by: jiamei.xie <jiamei.xie@arm.com> --- Changes from v1: - Move the second domU creation to the general ImageBuilder script. --- automation/gitlab-ci/build.yaml | 18 ++++++++++++ automation/gitlab-ci/test.yaml | 16 ++++++++++ .../scripts/qemu-smoke-dom0less-arm64.sh | 29 +++++++++++++++++++ 3 files changed, 63 insertions(+)