qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug 1906536] Re: Unable to set SVE VL to 1024 bits or above since 7b6a2


From: Philippe Mathieu-Daudé
Subject: [Bug 1906536] Re: Unable to set SVE VL to 1024 bits or above since 7b6a2198
Date: Wed, 02 Dec 2020 17:05:42 -0000

Hi Alex,

This commit mentions:

    The Linux kernel chooses the default of 64 bytes for SVE registers on
    the basis that it is the largest size on known hardware that won't
    grow the signal frame. We still honour the sve-max-vq property and
    userspace can expand the number of lanes by calling PR_SVE_SET_VL.

Expand the number of lanes by calling PR_SVE_SET_VL works for me:

 .global _start
_start:
  mov x0, 50 // PR_SVE_SET_VL
  mov x1, 256 // 16 lanes
  mov x8, #167 // prctl
  svc #0

  rdvl x0, #1
  asr x0, x0, #4
  mov x8, #93 // exit
  svc #0

$ for vl in 1 2 4 8 16; do qemu-aarch64 -strace -cpu max,sve-max-vq=$vl a.out; 
echo $?; done
1383321 prctl(50,256,0,0,0,0) = 16
1383321 exit(1)
1
1383323 prctl(50,256,0,0,0,0) = 32
1383323 exit(2)
2
1383325 prctl(50,256,0,0,0,0) = 64
1383325 exit(4)
4
1383327 prctl(50,256,0,0,0,0) = 128
1383327 exit(8)
8
1383329 prctl(50,256,0,0,0,0) = 256
1383329 exit(16)
16

** Changed in: qemu
       Status: New => Invalid

** Tags added: arm linux-user

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1906536

Title:
  Unable to set SVE VL to 1024 bits or above since 7b6a2198

Status in QEMU:
  Invalid

Bug description:
  Prior to 7b6a2198e71794c851f39ac7a92d39692c786820, the QEMU option
  sve-max-vq could be used to set the vector length of the
  implementation. This is useful (among other reasons) for testing
  software compiled with a fixed SVE vector length. Since this commit,
  the vector length is capped at 512 bits.

  To reproduce the issue:

  $ cat rdvl.s
  .global _start
  _start:
    rdvl x0, #1
    asr x0, x0, #4
    mov x8, #93 // exit
    svc #0
  $ aarch64-linux-gnu-as -march=armv8.2-a+sve rdvl.s -o rdvl.o
  $ aarch64-linux-gnu-ld rdvl.o
  $ for vl in 1 2 4 8 16; do ../build-qemu/aarch64-linux-user/qemu-aarch64 -cpu 
max,sve-max-vq=$vl a.out; echo $?; done
  1
  2
  4
  4
  4

  For a QEMU built prior to the above revision, we get the output:
  1
  2
  4
  8
  16

  as expected. It seems that either the old behavior should be restored,
  or there should be an option to force a higher vector length?

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1906536/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]