Re: [kvm-unit-tests PATCH v3 3/3] s390x/spec_ex: Add test of EXECUTE with odd target address

Thomas Huth
2023-03-17T14:10:21Z

On 15/03/2023 16.54, Nina Schoetterl-Glausch wrote:
> The EXECUTE instruction executes the instruction at the given target
> address. This address must be halfword aligned, otherwise a
> specification exception occurs.
> Add a test for this.
>
> Signed-off-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
> ---
> s390x/spec_ex.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/s390x/spec_ex.c b/s390x/spec_ex.c
> index 83b8c58e..5fa05dba 100644
> --- a/s390x/spec_ex.c
> +++ b/s390x/spec_ex.c
> @@ -177,6 +177,30 @@ static int short_psw_bit_12_is_0(void)
> return 0;
> }
>
> +static int odd_ex_target(void)
> +{
> + uint64_t pre_target_addr;
> + int to = 0, from = 0x0dd;
> +
> + asm volatile ( ".pushsection .text.ex_odd\n"
> + " .balign 2\n"
> + "pre_odd_ex_target:\n"
> + " . = . + 1\n"
> + " lr %[to],%[from]\n"
> + " .popsection\n"
> +
> + " larl %[pre_target_addr],pre_odd_ex_target\n"
> + " ex 0,1(%[pre_target_addr])\n"
> + : [pre_target_addr] "=&a" (pre_target_addr),
> + [to] "+d" (to)
> + : [from] "d" (from)
> + );
> +
> + assert((pre_target_addr + 1) & 1);
> + report(to != from, "did not perform ex with odd target");
> + return 0;
> +}

Can this be triggered with KVM, or is this just a test for TCG?
In the latter case, Ilya also added a test for this to QEMU's TCG test suite:

https://lists.gnu.org/archive/html/qemu-devel/2023-03/msg04872.html

... so if this is only about TCG, it should already be covered there.

Thomas