QEMU-user doesn't report HWCAP2_MTE

Bug #1926044 reported by Vitaly Buka
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Richard Henderson

Bug Description

Reproducible on ffa090bc56e73e287a63261e70ac02c0970be61a

Host Debian 5.10.24 x86_64 GNU

Configured with "configure --disable-system --enable-linux-user --static"

This one works and prints "OK" as expected:
clang tests/tcg/aarch64/mte-3.c -target aarch64-linux-gnu -fsanitize=memtag -march=armv8+memtag
qemu-aarch64 --cpu max -L /usr/aarch64-linux-gnu ./a.out && echo OK

This one fails and print "0":
cat mytest.c
#include <stdio.h>
#include <sys/auxv.h>

#ifndef HWCAP2_MTE
#define HWCAP2_MTE (1 << 18)
#endif

int main(int ac, char **av)
{
    printf("%d\n", (int)(getauxval(AT_HWCAP2) & HWCAP2_MTE));
}

clang mytest.c -target aarch64-linux-gnu -fsanitize=memtag -march=armv8+memtag
qemu-aarch64 --cpu max -L /usr/aarch64-linux-gnu ./a.out

Revision history for this message
Vitaly Buka (vitalybuka) wrote :

Actually if we make it like this:

#include <stdio.h>
#include <sys/auxv.h>

int main(int ac, char **av)
{
    for (int i = 0; i < 32; ++i)
        if ((int)(getauxval(AT_HWCAP2) & (1 << i)))
            printf("%d\n", i);
}

clang mytest.c -target aarch64-linux-gnu -fsanitize=memtag -march=armv8+memtag
qemu-aarch64 --cpu max -L /usr/aarch64-linux-gnu ./a.out

I see only: HWCAP_FP HWCAP_CRC32 HWCAP_ATOMICS
So no HWCAP2_BTI as well.

Revision history for this message
Vitaly Buka (vitalybuka) wrote :

Sorry, 0 7 8 should be "HWCAP2_DCPODP HWCAP2_FLAGM2 HWCAP2_FRINT"

Peter Maydell (pmaydell)
tags: added: arm
removed: aarch64
Revision history for this message
Richard Henderson (rth) wrote :

Yep, there's a whole bunch that have been missed.

Changed in qemu:
assignee: nobody → Richard Henderson (rth)
status: New → In Progress
Revision history for this message
Richard Henderson (rth) wrote :

https://<email address hidden>/

This has missed 6.0, but should be acceptable to roll into 6.0.1.

Revision history for this message
Vitaly Buka (vitalybuka) wrote : Re: [Bug 1926044] Re: QEMU-user doesn't report HWCAP2_MTE

Thanks for the quick fix!

On Tue, Apr 27, 2021 at 2:55 PM Richard Henderson <
<email address hidden>> wrote:

>
> https://<email address hidden>/
>
> This has missed 6.0, but should be acceptable to roll into 6.0.1.
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1926044
>
> Title:
> QEMU-user doesn't report HWCAP2_MTE
>
> Status in QEMU:
> In Progress
>
> Bug description:
> Reproducible on ffa090bc56e73e287a63261e70ac02c0970be61a
>
> Host Debian 5.10.24 x86_64 GNU
>
> Configured with "configure --disable-system --enable-linux-user
> --static"
>
> This one works and prints "OK" as expected:
> clang tests/tcg/aarch64/mte-3.c -target aarch64-linux-gnu
> -fsanitize=memtag -march=armv8+memtag
> qemu-aarch64 --cpu max -L /usr/aarch64-linux-gnu ./a.out && echo OK
>
>
> This one fails and print "0":
> cat mytest.c
> #include <stdio.h>
> #include <sys/auxv.h>
>
> #ifndef HWCAP2_MTE
> #define HWCAP2_MTE (1 << 18)
> #endif
>
> int main(int ac, char **av)
> {
> printf("%d\n", (int)(getauxval(AT_HWCAP2) & HWCAP2_MTE));
> }
>
>
> clang mytest.c -target aarch64-linux-gnu -fsanitize=memtag
> -march=armv8+memtag
> qemu-aarch64 --cpu max -L /usr/aarch64-linux-gnu ./a.out
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/qemu/+bug/1926044/+subscriptions
>

Thomas Huth (th-huth)
tags: added: linux-user
removed: user
Revision history for this message
Thomas Huth (th-huth) wrote :
Changed in qemu:
status: In Progress → Fix Committed
Thomas Huth (th-huth)
Changed in qemu:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.