* [PATCH 1/2] linux-user/riscv: Add Zicboz extensions to hwprobe
2024-02-07 11:59 [PATCH 0/2] linux-user/riscv: Sync hwprobe keys with kernel Christoph Müllner
@ 2024-02-07 11:59 ` Christoph Müllner
2024-02-14 13:26 ` Daniel Henrique Barboza
2024-02-07 11:59 ` [PATCH 2/2] linux-user/riscv: Sync hwprobe keys with Linux Christoph Müllner
2024-02-15 9:54 ` [PATCH 0/2] linux-user/riscv: Sync hwprobe keys with kernel Alistair Francis
2 siblings, 1 reply; 8+ messages in thread
From: Christoph Müllner @ 2024-02-07 11:59 UTC (permalink / raw)
To: qemu-riscv, qemu-devel, Alistair Francis, Bin Meng,
Philipp Tomsich, Palmer Dabbelt, Richard Henderson,
Daniel Henrique Barboza, Andrew Jones
Cc: Christoph Müllner, Laurent Vivier
Upstream Linux recently added RISC-V Zicboz support to the hwprobe API.
This patch introduces this for QEMU's user space emulator.
Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
---
linux-user/syscall.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index e384e14248..43467c9707 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8799,6 +8799,7 @@ static int do_getdents64(abi_long dirfd, abi_long arg2, abi_long count)
#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
+#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
#define RISCV_HWPROBE_KEY_CPUPERF_0 5
#define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
@@ -8857,6 +8858,8 @@ static void risc_hwprobe_fill_pairs(CPURISCVState *env,
RISCV_HWPROBE_EXT_ZBB : 0;
value |= cfg->ext_zbs ?
RISCV_HWPROBE_EXT_ZBS : 0;
+ value |= cfg->ext_zicboz ?
+ RISCV_HWPROBE_EXT_ZICBOZ : 0;
__put_user(value, &pair->value);
break;
case RISCV_HWPROBE_KEY_CPUPERF_0:
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] linux-user/riscv: Add Zicboz extensions to hwprobe
2024-02-07 11:59 ` [PATCH 1/2] linux-user/riscv: Add Zicboz extensions to hwprobe Christoph Müllner
@ 2024-02-14 13:26 ` Daniel Henrique Barboza
0 siblings, 0 replies; 8+ messages in thread
From: Daniel Henrique Barboza @ 2024-02-14 13:26 UTC (permalink / raw)
To: Christoph Müllner, qemu-riscv, qemu-devel, Alistair Francis,
Bin Meng, Philipp Tomsich, Palmer Dabbelt, Richard Henderson,
Andrew Jones
Cc: Laurent Vivier
On 2/7/24 08:59, Christoph Müllner wrote:
> Upstream Linux recently added RISC-V Zicboz support to the hwprobe API.
> This patch introduces this for QEMU's user space emulator.
>
> Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
> ---
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
> linux-user/syscall.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index e384e14248..43467c9707 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -8799,6 +8799,7 @@ static int do_getdents64(abi_long dirfd, abi_long arg2, abi_long count)
> #define RISCV_HWPROBE_EXT_ZBA (1 << 3)
> #define RISCV_HWPROBE_EXT_ZBB (1 << 4)
> #define RISCV_HWPROBE_EXT_ZBS (1 << 5)
> +#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
>
> #define RISCV_HWPROBE_KEY_CPUPERF_0 5
> #define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
> @@ -8857,6 +8858,8 @@ static void risc_hwprobe_fill_pairs(CPURISCVState *env,
> RISCV_HWPROBE_EXT_ZBB : 0;
> value |= cfg->ext_zbs ?
> RISCV_HWPROBE_EXT_ZBS : 0;
> + value |= cfg->ext_zicboz ?
> + RISCV_HWPROBE_EXT_ZICBOZ : 0;
> __put_user(value, &pair->value);
> break;
> case RISCV_HWPROBE_KEY_CPUPERF_0:
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] linux-user/riscv: Sync hwprobe keys with Linux
2024-02-07 11:59 [PATCH 0/2] linux-user/riscv: Sync hwprobe keys with kernel Christoph Müllner
2024-02-07 11:59 ` [PATCH 1/2] linux-user/riscv: Add Zicboz extensions to hwprobe Christoph Müllner
@ 2024-02-07 11:59 ` Christoph Müllner
2024-02-14 13:26 ` Daniel Henrique Barboza
2024-03-08 4:22 ` Alistair Francis
2024-02-15 9:54 ` [PATCH 0/2] linux-user/riscv: Sync hwprobe keys with kernel Alistair Francis
2 siblings, 2 replies; 8+ messages in thread
From: Christoph Müllner @ 2024-02-07 11:59 UTC (permalink / raw)
To: qemu-riscv, qemu-devel, Alistair Francis, Bin Meng,
Philipp Tomsich, Palmer Dabbelt, Richard Henderson,
Daniel Henrique Barboza, Andrew Jones
Cc: Christoph Müllner, Laurent Vivier
Upstream Linux recently added many additional keys to the hwprobe API.
This patch adds support for all of them with the exception of Ztso,
which is currently not supported in QEMU.
Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
---
linux-user/syscall.c | 98 ++++++++++++++++++++++++++++++++++++++++----
1 file changed, 91 insertions(+), 7 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 43467c9707..3ba20f99ad 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8793,13 +8793,41 @@ static int do_getdents64(abi_long dirfd, abi_long arg2, abi_long count)
#define RISCV_HWPROBE_BASE_BEHAVIOR_IMA (1 << 0)
#define RISCV_HWPROBE_KEY_IMA_EXT_0 4
-#define RISCV_HWPROBE_IMA_FD (1 << 0)
-#define RISCV_HWPROBE_IMA_C (1 << 1)
-#define RISCV_HWPROBE_IMA_V (1 << 2)
-#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
-#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
-#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
-#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
+#define RISCV_HWPROBE_IMA_FD (1 << 0)
+#define RISCV_HWPROBE_IMA_C (1 << 1)
+#define RISCV_HWPROBE_IMA_V (1 << 2)
+#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
+#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
+#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
+#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
+#define RISCV_HWPROBE_EXT_ZBC (1 << 7)
+#define RISCV_HWPROBE_EXT_ZBKB (1 << 8)
+#define RISCV_HWPROBE_EXT_ZBKC (1 << 9)
+#define RISCV_HWPROBE_EXT_ZBKX (1 << 10)
+#define RISCV_HWPROBE_EXT_ZKND (1 << 11)
+#define RISCV_HWPROBE_EXT_ZKNE (1 << 12)
+#define RISCV_HWPROBE_EXT_ZKNH (1 << 13)
+#define RISCV_HWPROBE_EXT_ZKSED (1 << 14)
+#define RISCV_HWPROBE_EXT_ZKSH (1 << 15)
+#define RISCV_HWPROBE_EXT_ZKT (1 << 16)
+#define RISCV_HWPROBE_EXT_ZVBB (1 << 17)
+#define RISCV_HWPROBE_EXT_ZVBC (1 << 18)
+#define RISCV_HWPROBE_EXT_ZVKB (1 << 19)
+#define RISCV_HWPROBE_EXT_ZVKG (1 << 20)
+#define RISCV_HWPROBE_EXT_ZVKNED (1 << 21)
+#define RISCV_HWPROBE_EXT_ZVKNHA (1 << 22)
+#define RISCV_HWPROBE_EXT_ZVKNHB (1 << 23)
+#define RISCV_HWPROBE_EXT_ZVKSED (1 << 24)
+#define RISCV_HWPROBE_EXT_ZVKSH (1 << 25)
+#define RISCV_HWPROBE_EXT_ZVKT (1 << 26)
+#define RISCV_HWPROBE_EXT_ZFH (1 << 27)
+#define RISCV_HWPROBE_EXT_ZFHMIN (1 << 28)
+#define RISCV_HWPROBE_EXT_ZIHINTNTL (1 << 29)
+#define RISCV_HWPROBE_EXT_ZVFH (1 << 30)
+#define RISCV_HWPROBE_EXT_ZVFHMIN (1 << 31)
+#define RISCV_HWPROBE_EXT_ZFA (1ULL << 32)
+#define RISCV_HWPROBE_EXT_ZACAS (1ULL << 34)
+#define RISCV_HWPROBE_EXT_ZICOND (1ULL << 35)
#define RISCV_HWPROBE_KEY_CPUPERF_0 5
#define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
@@ -8860,6 +8888,62 @@ static void risc_hwprobe_fill_pairs(CPURISCVState *env,
RISCV_HWPROBE_EXT_ZBS : 0;
value |= cfg->ext_zicboz ?
RISCV_HWPROBE_EXT_ZICBOZ : 0;
+ value |= cfg->ext_zbc ?
+ RISCV_HWPROBE_EXT_ZBC : 0;
+ value |= cfg->ext_zbkb ?
+ RISCV_HWPROBE_EXT_ZBKB : 0;
+ value |= cfg->ext_zbkc ?
+ RISCV_HWPROBE_EXT_ZBKC : 0;
+ value |= cfg->ext_zbkx ?
+ RISCV_HWPROBE_EXT_ZBKX : 0;
+ value |= cfg->ext_zknd ?
+ RISCV_HWPROBE_EXT_ZKND : 0;
+ value |= cfg->ext_zkne ?
+ RISCV_HWPROBE_EXT_ZKNE : 0;
+ value |= cfg->ext_zknh ?
+ RISCV_HWPROBE_EXT_ZKNH : 0;
+ value |= cfg->ext_zksed ?
+ RISCV_HWPROBE_EXT_ZKSED : 0;
+ value |= cfg->ext_zksh ?
+ RISCV_HWPROBE_EXT_ZKSH : 0;
+ value |= cfg->ext_zkt ?
+ RISCV_HWPROBE_EXT_ZKT : 0;
+ value |= cfg->ext_zvbb ?
+ RISCV_HWPROBE_EXT_ZVBB : 0;
+ value |= cfg->ext_zvbc ?
+ RISCV_HWPROBE_EXT_ZVBC : 0;
+ value |= cfg->ext_zvkb ?
+ RISCV_HWPROBE_EXT_ZVKB : 0;
+ value |= cfg->ext_zvkg ?
+ RISCV_HWPROBE_EXT_ZVKG : 0;
+ value |= cfg->ext_zvkned ?
+ RISCV_HWPROBE_EXT_ZVKNED : 0;
+ value |= cfg->ext_zvknha ?
+ RISCV_HWPROBE_EXT_ZVKNHA : 0;
+ value |= cfg->ext_zvknhb ?
+ RISCV_HWPROBE_EXT_ZVKNHB : 0;
+ value |= cfg->ext_zvksed ?
+ RISCV_HWPROBE_EXT_ZVKSED : 0;
+ value |= cfg->ext_zvksh ?
+ RISCV_HWPROBE_EXT_ZVKSH : 0;
+ value |= cfg->ext_zvkt ?
+ RISCV_HWPROBE_EXT_ZVKT : 0;
+ value |= cfg->ext_zfh ?
+ RISCV_HWPROBE_EXT_ZFH : 0;
+ value |= cfg->ext_zfhmin ?
+ RISCV_HWPROBE_EXT_ZFHMIN : 0;
+ value |= cfg->ext_zihintntl ?
+ RISCV_HWPROBE_EXT_ZIHINTNTL : 0;
+ value |= cfg->ext_zvfh ?
+ RISCV_HWPROBE_EXT_ZVFH : 0;
+ value |= cfg->ext_zvfhmin ?
+ RISCV_HWPROBE_EXT_ZVFHMIN : 0;
+ value |= cfg->ext_zfa ?
+ RISCV_HWPROBE_EXT_ZFA : 0;
+ value |= cfg->ext_zacas ?
+ RISCV_HWPROBE_EXT_ZACAS : 0;
+ value |= cfg->ext_zicond ?
+ RISCV_HWPROBE_EXT_ZICOND : 0;
__put_user(value, &pair->value);
break;
case RISCV_HWPROBE_KEY_CPUPERF_0:
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] linux-user/riscv: Sync hwprobe keys with Linux
2024-02-07 11:59 ` [PATCH 2/2] linux-user/riscv: Sync hwprobe keys with Linux Christoph Müllner
@ 2024-02-14 13:26 ` Daniel Henrique Barboza
2024-03-08 4:22 ` Alistair Francis
1 sibling, 0 replies; 8+ messages in thread
From: Daniel Henrique Barboza @ 2024-02-14 13:26 UTC (permalink / raw)
To: Christoph Müllner, qemu-riscv, qemu-devel, Alistair Francis,
Bin Meng, Philipp Tomsich, Palmer Dabbelt, Richard Henderson,
Andrew Jones
Cc: Laurent Vivier
On 2/7/24 08:59, Christoph Müllner wrote:
> Upstream Linux recently added many additional keys to the hwprobe API.
> This patch adds support for all of them with the exception of Ztso,
> which is currently not supported in QEMU.
>
> Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
> ---
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
> linux-user/syscall.c | 98 ++++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 91 insertions(+), 7 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 43467c9707..3ba20f99ad 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -8793,13 +8793,41 @@ static int do_getdents64(abi_long dirfd, abi_long arg2, abi_long count)
> #define RISCV_HWPROBE_BASE_BEHAVIOR_IMA (1 << 0)
>
> #define RISCV_HWPROBE_KEY_IMA_EXT_0 4
> -#define RISCV_HWPROBE_IMA_FD (1 << 0)
> -#define RISCV_HWPROBE_IMA_C (1 << 1)
> -#define RISCV_HWPROBE_IMA_V (1 << 2)
> -#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
> -#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
> -#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
> -#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
> +#define RISCV_HWPROBE_IMA_FD (1 << 0)
> +#define RISCV_HWPROBE_IMA_C (1 << 1)
> +#define RISCV_HWPROBE_IMA_V (1 << 2)
> +#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
> +#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
> +#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
> +#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
> +#define RISCV_HWPROBE_EXT_ZBC (1 << 7)
> +#define RISCV_HWPROBE_EXT_ZBKB (1 << 8)
> +#define RISCV_HWPROBE_EXT_ZBKC (1 << 9)
> +#define RISCV_HWPROBE_EXT_ZBKX (1 << 10)
> +#define RISCV_HWPROBE_EXT_ZKND (1 << 11)
> +#define RISCV_HWPROBE_EXT_ZKNE (1 << 12)
> +#define RISCV_HWPROBE_EXT_ZKNH (1 << 13)
> +#define RISCV_HWPROBE_EXT_ZKSED (1 << 14)
> +#define RISCV_HWPROBE_EXT_ZKSH (1 << 15)
> +#define RISCV_HWPROBE_EXT_ZKT (1 << 16)
> +#define RISCV_HWPROBE_EXT_ZVBB (1 << 17)
> +#define RISCV_HWPROBE_EXT_ZVBC (1 << 18)
> +#define RISCV_HWPROBE_EXT_ZVKB (1 << 19)
> +#define RISCV_HWPROBE_EXT_ZVKG (1 << 20)
> +#define RISCV_HWPROBE_EXT_ZVKNED (1 << 21)
> +#define RISCV_HWPROBE_EXT_ZVKNHA (1 << 22)
> +#define RISCV_HWPROBE_EXT_ZVKNHB (1 << 23)
> +#define RISCV_HWPROBE_EXT_ZVKSED (1 << 24)
> +#define RISCV_HWPROBE_EXT_ZVKSH (1 << 25)
> +#define RISCV_HWPROBE_EXT_ZVKT (1 << 26)
> +#define RISCV_HWPROBE_EXT_ZFH (1 << 27)
> +#define RISCV_HWPROBE_EXT_ZFHMIN (1 << 28)
> +#define RISCV_HWPROBE_EXT_ZIHINTNTL (1 << 29)
> +#define RISCV_HWPROBE_EXT_ZVFH (1 << 30)
> +#define RISCV_HWPROBE_EXT_ZVFHMIN (1 << 31)
> +#define RISCV_HWPROBE_EXT_ZFA (1ULL << 32)
> +#define RISCV_HWPROBE_EXT_ZACAS (1ULL << 34)
> +#define RISCV_HWPROBE_EXT_ZICOND (1ULL << 35)
>
> #define RISCV_HWPROBE_KEY_CPUPERF_0 5
> #define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
> @@ -8860,6 +8888,62 @@ static void risc_hwprobe_fill_pairs(CPURISCVState *env,
> RISCV_HWPROBE_EXT_ZBS : 0;
> value |= cfg->ext_zicboz ?
> RISCV_HWPROBE_EXT_ZICBOZ : 0;
> + value |= cfg->ext_zbc ?
> + RISCV_HWPROBE_EXT_ZBC : 0;
> + value |= cfg->ext_zbkb ?
> + RISCV_HWPROBE_EXT_ZBKB : 0;
> + value |= cfg->ext_zbkc ?
> + RISCV_HWPROBE_EXT_ZBKC : 0;
> + value |= cfg->ext_zbkx ?
> + RISCV_HWPROBE_EXT_ZBKX : 0;
> + value |= cfg->ext_zknd ?
> + RISCV_HWPROBE_EXT_ZKND : 0;
> + value |= cfg->ext_zkne ?
> + RISCV_HWPROBE_EXT_ZKNE : 0;
> + value |= cfg->ext_zknh ?
> + RISCV_HWPROBE_EXT_ZKNH : 0;
> + value |= cfg->ext_zksed ?
> + RISCV_HWPROBE_EXT_ZKSED : 0;
> + value |= cfg->ext_zksh ?
> + RISCV_HWPROBE_EXT_ZKSH : 0;
> + value |= cfg->ext_zkt ?
> + RISCV_HWPROBE_EXT_ZKT : 0;
> + value |= cfg->ext_zvbb ?
> + RISCV_HWPROBE_EXT_ZVBB : 0;
> + value |= cfg->ext_zvbc ?
> + RISCV_HWPROBE_EXT_ZVBC : 0;
> + value |= cfg->ext_zvkb ?
> + RISCV_HWPROBE_EXT_ZVKB : 0;
> + value |= cfg->ext_zvkg ?
> + RISCV_HWPROBE_EXT_ZVKG : 0;
> + value |= cfg->ext_zvkned ?
> + RISCV_HWPROBE_EXT_ZVKNED : 0;
> + value |= cfg->ext_zvknha ?
> + RISCV_HWPROBE_EXT_ZVKNHA : 0;
> + value |= cfg->ext_zvknhb ?
> + RISCV_HWPROBE_EXT_ZVKNHB : 0;
> + value |= cfg->ext_zvksed ?
> + RISCV_HWPROBE_EXT_ZVKSED : 0;
> + value |= cfg->ext_zvksh ?
> + RISCV_HWPROBE_EXT_ZVKSH : 0;
> + value |= cfg->ext_zvkt ?
> + RISCV_HWPROBE_EXT_ZVKT : 0;
> + value |= cfg->ext_zfh ?
> + RISCV_HWPROBE_EXT_ZFH : 0;
> + value |= cfg->ext_zfhmin ?
> + RISCV_HWPROBE_EXT_ZFHMIN : 0;
> + value |= cfg->ext_zihintntl ?
> + RISCV_HWPROBE_EXT_ZIHINTNTL : 0;
> + value |= cfg->ext_zvfh ?
> + RISCV_HWPROBE_EXT_ZVFH : 0;
> + value |= cfg->ext_zvfhmin ?
> + RISCV_HWPROBE_EXT_ZVFHMIN : 0;
> + value |= cfg->ext_zfa ?
> + RISCV_HWPROBE_EXT_ZFA : 0;
> + value |= cfg->ext_zacas ?
> + RISCV_HWPROBE_EXT_ZACAS : 0;
> + value |= cfg->ext_zicond ?
> + RISCV_HWPROBE_EXT_ZICOND : 0;
> __put_user(value, &pair->value);
> break;
> case RISCV_HWPROBE_KEY_CPUPERF_0:
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] linux-user/riscv: Sync hwprobe keys with Linux
2024-02-07 11:59 ` [PATCH 2/2] linux-user/riscv: Sync hwprobe keys with Linux Christoph Müllner
2024-02-14 13:26 ` Daniel Henrique Barboza
@ 2024-03-08 4:22 ` Alistair Francis
2024-03-08 13:15 ` Christoph Müllner
1 sibling, 1 reply; 8+ messages in thread
From: Alistair Francis @ 2024-03-08 4:22 UTC (permalink / raw)
To: Christoph Müllner
Cc: qemu-riscv, qemu-devel, Alistair Francis, Bin Meng,
Philipp Tomsich, Palmer Dabbelt, Richard Henderson,
Daniel Henrique Barboza, Andrew Jones, Laurent Vivier
On Wed, Feb 7, 2024 at 10:00 PM Christoph Müllner
<christoph.muellner@vrull.eu> wrote:
>
> Upstream Linux recently added many additional keys to the hwprobe API.
> This patch adds support for all of them with the exception of Ztso,
> which is currently not supported in QEMU.
>
> Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
> ---
> linux-user/syscall.c | 98 ++++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 91 insertions(+), 7 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 43467c9707..3ba20f99ad 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -8793,13 +8793,41 @@ static int do_getdents64(abi_long dirfd, abi_long arg2, abi_long count)
> #define RISCV_HWPROBE_BASE_BEHAVIOR_IMA (1 << 0)
>
> #define RISCV_HWPROBE_KEY_IMA_EXT_0 4
> -#define RISCV_HWPROBE_IMA_FD (1 << 0)
> -#define RISCV_HWPROBE_IMA_C (1 << 1)
> -#define RISCV_HWPROBE_IMA_V (1 << 2)
> -#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
> -#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
> -#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
> -#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
> +#define RISCV_HWPROBE_IMA_FD (1 << 0)
> +#define RISCV_HWPROBE_IMA_C (1 << 1)
> +#define RISCV_HWPROBE_IMA_V (1 << 2)
> +#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
> +#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
> +#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
> +#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
> +#define RISCV_HWPROBE_EXT_ZBC (1 << 7)
> +#define RISCV_HWPROBE_EXT_ZBKB (1 << 8)
> +#define RISCV_HWPROBE_EXT_ZBKC (1 << 9)
> +#define RISCV_HWPROBE_EXT_ZBKX (1 << 10)
> +#define RISCV_HWPROBE_EXT_ZKND (1 << 11)
> +#define RISCV_HWPROBE_EXT_ZKNE (1 << 12)
> +#define RISCV_HWPROBE_EXT_ZKNH (1 << 13)
> +#define RISCV_HWPROBE_EXT_ZKSED (1 << 14)
> +#define RISCV_HWPROBE_EXT_ZKSH (1 << 15)
> +#define RISCV_HWPROBE_EXT_ZKT (1 << 16)
> +#define RISCV_HWPROBE_EXT_ZVBB (1 << 17)
> +#define RISCV_HWPROBE_EXT_ZVBC (1 << 18)
> +#define RISCV_HWPROBE_EXT_ZVKB (1 << 19)
> +#define RISCV_HWPROBE_EXT_ZVKG (1 << 20)
> +#define RISCV_HWPROBE_EXT_ZVKNED (1 << 21)
> +#define RISCV_HWPROBE_EXT_ZVKNHA (1 << 22)
> +#define RISCV_HWPROBE_EXT_ZVKNHB (1 << 23)
> +#define RISCV_HWPROBE_EXT_ZVKSED (1 << 24)
> +#define RISCV_HWPROBE_EXT_ZVKSH (1 << 25)
> +#define RISCV_HWPROBE_EXT_ZVKT (1 << 26)
> +#define RISCV_HWPROBE_EXT_ZFH (1 << 27)
> +#define RISCV_HWPROBE_EXT_ZFHMIN (1 << 28)
> +#define RISCV_HWPROBE_EXT_ZIHINTNTL (1 << 29)
> +#define RISCV_HWPROBE_EXT_ZVFH (1 << 30)
> +#define RISCV_HWPROBE_EXT_ZVFHMIN (1 << 31)
> +#define RISCV_HWPROBE_EXT_ZFA (1ULL << 32)
> +#define RISCV_HWPROBE_EXT_ZACAS (1ULL << 34)
> +#define RISCV_HWPROBE_EXT_ZICOND (1ULL << 35)
This fails to pass checkpatch
Alistair
>
> #define RISCV_HWPROBE_KEY_CPUPERF_0 5
> #define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
> @@ -8860,6 +8888,62 @@ static void risc_hwprobe_fill_pairs(CPURISCVState *env,
> RISCV_HWPROBE_EXT_ZBS : 0;
> value |= cfg->ext_zicboz ?
> RISCV_HWPROBE_EXT_ZICBOZ : 0;
> + value |= cfg->ext_zbc ?
> + RISCV_HWPROBE_EXT_ZBC : 0;
> + value |= cfg->ext_zbkb ?
> + RISCV_HWPROBE_EXT_ZBKB : 0;
> + value |= cfg->ext_zbkc ?
> + RISCV_HWPROBE_EXT_ZBKC : 0;
> + value |= cfg->ext_zbkx ?
> + RISCV_HWPROBE_EXT_ZBKX : 0;
> + value |= cfg->ext_zknd ?
> + RISCV_HWPROBE_EXT_ZKND : 0;
> + value |= cfg->ext_zkne ?
> + RISCV_HWPROBE_EXT_ZKNE : 0;
> + value |= cfg->ext_zknh ?
> + RISCV_HWPROBE_EXT_ZKNH : 0;
> + value |= cfg->ext_zksed ?
> + RISCV_HWPROBE_EXT_ZKSED : 0;
> + value |= cfg->ext_zksh ?
> + RISCV_HWPROBE_EXT_ZKSH : 0;
> + value |= cfg->ext_zkt ?
> + RISCV_HWPROBE_EXT_ZKT : 0;
> + value |= cfg->ext_zvbb ?
> + RISCV_HWPROBE_EXT_ZVBB : 0;
> + value |= cfg->ext_zvbc ?
> + RISCV_HWPROBE_EXT_ZVBC : 0;
> + value |= cfg->ext_zvkb ?
> + RISCV_HWPROBE_EXT_ZVKB : 0;
> + value |= cfg->ext_zvkg ?
> + RISCV_HWPROBE_EXT_ZVKG : 0;
> + value |= cfg->ext_zvkned ?
> + RISCV_HWPROBE_EXT_ZVKNED : 0;
> + value |= cfg->ext_zvknha ?
> + RISCV_HWPROBE_EXT_ZVKNHA : 0;
> + value |= cfg->ext_zvknhb ?
> + RISCV_HWPROBE_EXT_ZVKNHB : 0;
> + value |= cfg->ext_zvksed ?
> + RISCV_HWPROBE_EXT_ZVKSED : 0;
> + value |= cfg->ext_zvksh ?
> + RISCV_HWPROBE_EXT_ZVKSH : 0;
> + value |= cfg->ext_zvkt ?
> + RISCV_HWPROBE_EXT_ZVKT : 0;
> + value |= cfg->ext_zfh ?
> + RISCV_HWPROBE_EXT_ZFH : 0;
> + value |= cfg->ext_zfhmin ?
> + RISCV_HWPROBE_EXT_ZFHMIN : 0;
> + value |= cfg->ext_zihintntl ?
> + RISCV_HWPROBE_EXT_ZIHINTNTL : 0;
> + value |= cfg->ext_zvfh ?
> + RISCV_HWPROBE_EXT_ZVFH : 0;
> + value |= cfg->ext_zvfhmin ?
> + RISCV_HWPROBE_EXT_ZVFHMIN : 0;
> + value |= cfg->ext_zfa ?
> + RISCV_HWPROBE_EXT_ZFA : 0;
> + value |= cfg->ext_zacas ?
> + RISCV_HWPROBE_EXT_ZACAS : 0;
> + value |= cfg->ext_zicond ?
> + RISCV_HWPROBE_EXT_ZICOND : 0;
> __put_user(value, &pair->value);
> break;
> case RISCV_HWPROBE_KEY_CPUPERF_0:
> --
> 2.43.0
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] linux-user/riscv: Sync hwprobe keys with Linux
2024-03-08 4:22 ` Alistair Francis
@ 2024-03-08 13:15 ` Christoph Müllner
0 siblings, 0 replies; 8+ messages in thread
From: Christoph Müllner @ 2024-03-08 13:15 UTC (permalink / raw)
To: Alistair Francis
Cc: qemu-riscv, qemu-devel, Alistair Francis, Bin Meng,
Philipp Tomsich, Palmer Dabbelt, Richard Henderson,
Daniel Henrique Barboza, Andrew Jones, Laurent Vivier
On Fri, Mar 8, 2024 at 5:23 AM Alistair Francis <alistair23@gmail.com> wrote:
>
> On Wed, Feb 7, 2024 at 10:00 PM Christoph Müllner
> <christoph.muellner@vrull.eu> wrote:
> >
> > Upstream Linux recently added many additional keys to the hwprobe API.
> > This patch adds support for all of them with the exception of Ztso,
> > which is currently not supported in QEMU.
> >
> > Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
> > ---
> > linux-user/syscall.c | 98 ++++++++++++++++++++++++++++++++++++++++----
> > 1 file changed, 91 insertions(+), 7 deletions(-)
> >
> > diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> > index 43467c9707..3ba20f99ad 100644
> > --- a/linux-user/syscall.c
> > +++ b/linux-user/syscall.c
> > @@ -8793,13 +8793,41 @@ static int do_getdents64(abi_long dirfd, abi_long arg2, abi_long count)
> > #define RISCV_HWPROBE_BASE_BEHAVIOR_IMA (1 << 0)
> >
> > #define RISCV_HWPROBE_KEY_IMA_EXT_0 4
> > -#define RISCV_HWPROBE_IMA_FD (1 << 0)
> > -#define RISCV_HWPROBE_IMA_C (1 << 1)
> > -#define RISCV_HWPROBE_IMA_V (1 << 2)
> > -#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
> > -#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
> > -#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
> > -#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
> > +#define RISCV_HWPROBE_IMA_FD (1 << 0)
> > +#define RISCV_HWPROBE_IMA_C (1 << 1)
> > +#define RISCV_HWPROBE_IMA_V (1 << 2)
> > +#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
> > +#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
> > +#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
> > +#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
> > +#define RISCV_HWPROBE_EXT_ZBC (1 << 7)
> > +#define RISCV_HWPROBE_EXT_ZBKB (1 << 8)
> > +#define RISCV_HWPROBE_EXT_ZBKC (1 << 9)
> > +#define RISCV_HWPROBE_EXT_ZBKX (1 << 10)
> > +#define RISCV_HWPROBE_EXT_ZKND (1 << 11)
> > +#define RISCV_HWPROBE_EXT_ZKNE (1 << 12)
> > +#define RISCV_HWPROBE_EXT_ZKNH (1 << 13)
> > +#define RISCV_HWPROBE_EXT_ZKSED (1 << 14)
> > +#define RISCV_HWPROBE_EXT_ZKSH (1 << 15)
> > +#define RISCV_HWPROBE_EXT_ZKT (1 << 16)
> > +#define RISCV_HWPROBE_EXT_ZVBB (1 << 17)
> > +#define RISCV_HWPROBE_EXT_ZVBC (1 << 18)
> > +#define RISCV_HWPROBE_EXT_ZVKB (1 << 19)
> > +#define RISCV_HWPROBE_EXT_ZVKG (1 << 20)
> > +#define RISCV_HWPROBE_EXT_ZVKNED (1 << 21)
> > +#define RISCV_HWPROBE_EXT_ZVKNHA (1 << 22)
> > +#define RISCV_HWPROBE_EXT_ZVKNHB (1 << 23)
> > +#define RISCV_HWPROBE_EXT_ZVKSED (1 << 24)
> > +#define RISCV_HWPROBE_EXT_ZVKSH (1 << 25)
> > +#define RISCV_HWPROBE_EXT_ZVKT (1 << 26)
> > +#define RISCV_HWPROBE_EXT_ZFH (1 << 27)
> > +#define RISCV_HWPROBE_EXT_ZFHMIN (1 << 28)
> > +#define RISCV_HWPROBE_EXT_ZIHINTNTL (1 << 29)
> > +#define RISCV_HWPROBE_EXT_ZVFH (1 << 30)
> > +#define RISCV_HWPROBE_EXT_ZVFHMIN (1 << 31)
> > +#define RISCV_HWPROBE_EXT_ZFA (1ULL << 32)
> > +#define RISCV_HWPROBE_EXT_ZACAS (1ULL << 34)
> > +#define RISCV_HWPROBE_EXT_ZICOND (1ULL << 35)
>
> This fails to pass checkpatch
I copied 1:1 from the kernel, so I guess it is the tabs.
Sorry for this! And as you have already fixed that: thanks!
>
> Alistair
>
> >
> > #define RISCV_HWPROBE_KEY_CPUPERF_0 5
> > #define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
> > @@ -8860,6 +8888,62 @@ static void risc_hwprobe_fill_pairs(CPURISCVState *env,
> > RISCV_HWPROBE_EXT_ZBS : 0;
> > value |= cfg->ext_zicboz ?
> > RISCV_HWPROBE_EXT_ZICBOZ : 0;
> > + value |= cfg->ext_zbc ?
> > + RISCV_HWPROBE_EXT_ZBC : 0;
> > + value |= cfg->ext_zbkb ?
> > + RISCV_HWPROBE_EXT_ZBKB : 0;
> > + value |= cfg->ext_zbkc ?
> > + RISCV_HWPROBE_EXT_ZBKC : 0;
> > + value |= cfg->ext_zbkx ?
> > + RISCV_HWPROBE_EXT_ZBKX : 0;
> > + value |= cfg->ext_zknd ?
> > + RISCV_HWPROBE_EXT_ZKND : 0;
> > + value |= cfg->ext_zkne ?
> > + RISCV_HWPROBE_EXT_ZKNE : 0;
> > + value |= cfg->ext_zknh ?
> > + RISCV_HWPROBE_EXT_ZKNH : 0;
> > + value |= cfg->ext_zksed ?
> > + RISCV_HWPROBE_EXT_ZKSED : 0;
> > + value |= cfg->ext_zksh ?
> > + RISCV_HWPROBE_EXT_ZKSH : 0;
> > + value |= cfg->ext_zkt ?
> > + RISCV_HWPROBE_EXT_ZKT : 0;
> > + value |= cfg->ext_zvbb ?
> > + RISCV_HWPROBE_EXT_ZVBB : 0;
> > + value |= cfg->ext_zvbc ?
> > + RISCV_HWPROBE_EXT_ZVBC : 0;
> > + value |= cfg->ext_zvkb ?
> > + RISCV_HWPROBE_EXT_ZVKB : 0;
> > + value |= cfg->ext_zvkg ?
> > + RISCV_HWPROBE_EXT_ZVKG : 0;
> > + value |= cfg->ext_zvkned ?
> > + RISCV_HWPROBE_EXT_ZVKNED : 0;
> > + value |= cfg->ext_zvknha ?
> > + RISCV_HWPROBE_EXT_ZVKNHA : 0;
> > + value |= cfg->ext_zvknhb ?
> > + RISCV_HWPROBE_EXT_ZVKNHB : 0;
> > + value |= cfg->ext_zvksed ?
> > + RISCV_HWPROBE_EXT_ZVKSED : 0;
> > + value |= cfg->ext_zvksh ?
> > + RISCV_HWPROBE_EXT_ZVKSH : 0;
> > + value |= cfg->ext_zvkt ?
> > + RISCV_HWPROBE_EXT_ZVKT : 0;
> > + value |= cfg->ext_zfh ?
> > + RISCV_HWPROBE_EXT_ZFH : 0;
> > + value |= cfg->ext_zfhmin ?
> > + RISCV_HWPROBE_EXT_ZFHMIN : 0;
> > + value |= cfg->ext_zihintntl ?
> > + RISCV_HWPROBE_EXT_ZIHINTNTL : 0;
> > + value |= cfg->ext_zvfh ?
> > + RISCV_HWPROBE_EXT_ZVFH : 0;
> > + value |= cfg->ext_zvfhmin ?
> > + RISCV_HWPROBE_EXT_ZVFHMIN : 0;
> > + value |= cfg->ext_zfa ?
> > + RISCV_HWPROBE_EXT_ZFA : 0;
> > + value |= cfg->ext_zacas ?
> > + RISCV_HWPROBE_EXT_ZACAS : 0;
> > + value |= cfg->ext_zicond ?
> > + RISCV_HWPROBE_EXT_ZICOND : 0;
> > __put_user(value, &pair->value);
> > break;
> > case RISCV_HWPROBE_KEY_CPUPERF_0:
> > --
> > 2.43.0
> >
> >
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] linux-user/riscv: Sync hwprobe keys with kernel
2024-02-07 11:59 [PATCH 0/2] linux-user/riscv: Sync hwprobe keys with kernel Christoph Müllner
2024-02-07 11:59 ` [PATCH 1/2] linux-user/riscv: Add Zicboz extensions to hwprobe Christoph Müllner
2024-02-07 11:59 ` [PATCH 2/2] linux-user/riscv: Sync hwprobe keys with Linux Christoph Müllner
@ 2024-02-15 9:54 ` Alistair Francis
2 siblings, 0 replies; 8+ messages in thread
From: Alistair Francis @ 2024-02-15 9:54 UTC (permalink / raw)
To: Christoph Müllner
Cc: qemu-riscv, qemu-devel, Alistair Francis, Bin Meng,
Philipp Tomsich, Palmer Dabbelt, Richard Henderson,
Daniel Henrique Barboza, Andrew Jones
On Wed, Feb 7, 2024 at 10:00 PM Christoph Müllner
<christoph.muellner@vrull.eu> wrote:
>
> This series syncs the hwprobe keys with those available in the upstream
> kernel repository with the exception of Ztso, which is not supported in
> QEMU as of now.
>
> The first patch is a resend (sent on Nov 27), as it should have been
> picked up on Dec 6, but seems to got lost.
>
> Christoph Müllner (2):
> linux-user/riscv: Add Zicboz extensions to hwprobe
> linux-user/riscv: Sync hwprobe keys with Linux
Thanks!
Applied to riscv-to-apply.next
Alistair
>
> linux-user/syscall.c | 99 +++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 93 insertions(+), 6 deletions(-)
>
> --
> 2.43.0
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread