|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/2] automation: arm64: Create a test job for testing static shared memory on qemu
On Thu, 2 Mar 2023, jiamei.xie wrote:
> Create a new test job, called qemu-smoke-dom0less-arm64-gcc-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@xxxxxxx>
> ---
> 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 5a9b88477a..f4d36babda 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -149,6 +149,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 4e73857199..fe3a282726 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
all good so far
> if [[ "${test_variant}" == "boot-cpupools" ]]; then
> # Check if domU0 (id=1) is assigned to Pool-1 with null scheduler
> passed="${test_variant} test passed"
> @@ -133,6 +152,16 @@ 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]=\""0x${SHARED_MEM_HOST} 0x${SHARED_MEM_GUEST}
> 0x${SHARED_MEM_SIZE}"\"
> +DOMU_SHARED_MEM_ID[0]="${SHARED_MEM_ID}"
> +DOMU_KERNEL[1]=\"Image\"
> +DOMU_RAMDISK[1]=\"initrd\"
Please move the second domU creation above to the general ImageBuilder
script. It is fine to start 2 dom0less guests for all tests (assuming it
doesn't break anything).
So here under the if [[ "${test_variant}" == "static-shared-mem" ]] we
can keep the setting of DOMU_SHARED_MEM and DOMU_SHARED_MEM_ID. (Or only
DOMU_SHARED_MEM if you follow the suggestion on the other patch.)
> +DOMU_SHARED_MEM[1]=\"0x${SHARED_MEM_HOST} 0x${SHARED_MEM_GUEST}
> 0x${SHARED_MEM_SIZE}\"
> +DOMU_SHARED_MEM_ID[1]=\"${SHARED_MEM_ID}\"" >> 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
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |