Re: [PATCH v7 37/39] kselftest/arm64: Add a GCS stress test

From: Thiago Jung Bauermann
Date: Tue Dec 12 2023 - 21:45:15 EST



I'm going a bit out-of-order to report a build failure in a test:

Mark Brown <broonie@xxxxxxxxxx> writes:

> +// Recurse x20 times
> +.macro recurse id

I get an assembler error here:

gcc -nostdlib gcs-stress-thread.S -o /home/thiago.bauermann/src/linux/tools/testing/selftests/arm64/gcs/gcs-stress-thread
gcs-stress-thread.S: Assembler messages:
gcs-stress-thread.S:236: Error: unexpected end of file in macro `recurse' definition
make[2]: *** [Makefile:24: /home/thiago.bauermann/src/linux/tools/testing/selftests/arm64/gcs/gcs-stress-thread] Error 1

This is with gas from Ubuntu 22.04, which ships binutils 2.38.

> +function recurse\id
> + stp x29, x30, [sp, #-16]!
> + mov x29, sp
> +
> + cmp x20, 0
> + beq 1f
> + sub x20, x20, 1
> + bl recurse\id
> +
> +1:
> + ldp x29, x30, [sp], #16
> +
> + // Do a syscall immediately prior to returning to try to provoke
> + // scheduling and migration at a point where coherency issues
> + // might trigger.
> + mov x8, #__NR_getpid
> + svc #0
> +
> + ret
> +endfunction
> +.endmacro
> +
> +// Generate and use two copies so we're changing the GCS contents
> +recurse 1
> +recurse 2

--
Thiago