[PATCH] riscv: virt: avoid RISCVCPU copy in PMU FDT setup

Mohamed Ayman posted 1 patch 3 weeks, 5 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260503180252.1122776-1-mohamedaymanworkspace@gmail.com
Maintainers: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Weiwei Li <liwei1518@gmail.com>, Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, Chao Liu <chao.liu.zevorn@gmail.com>
hw/riscv/virt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] riscv: virt: avoid RISCVCPU copy in PMU FDT setup
Posted by Mohamed Ayman 3 weeks, 5 days ago
Use a pointer to the hart instead of copying RISCVCPU when
passing pmu_avail_ctrs to riscv_pmu_generate_fdt_node().

Signed-off-by: Mohamed Ayman <mohamedaymanworkspace@gmail.com>
---
 hw/riscv/virt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
index a1c323e66d..085971eedc 100644
--- a/hw/riscv/virt.c
+++ b/hw/riscv/virt.c
@@ -722,11 +722,11 @@ static void create_fdt_pmu(RISCVVirtState *s)
 {
     g_autofree char *pmu_name = g_strdup_printf("/pmu");
     MachineState *ms = MACHINE(s);
-    RISCVCPU hart = s->soc[0].harts[0];
+    RISCVCPU *hart = &s->soc[0].harts[0];
 
     qemu_fdt_add_subnode(ms->fdt, pmu_name);
     qemu_fdt_setprop_string(ms->fdt, pmu_name, "compatible", "riscv,pmu");
-    riscv_pmu_generate_fdt_node(ms->fdt, hart.pmu_avail_ctrs, pmu_name);
+    riscv_pmu_generate_fdt_node(ms->fdt, hart->pmu_avail_ctrs, pmu_name);
 }
 
 static void create_fdt_sockets(RISCVVirtState *s,
-- 
2.34.1
Re: [PATCH] riscv: virt: avoid RISCVCPU copy in PMU FDT setup
Posted by Alistair Francis 3 weeks, 1 day ago
On Mon, May 4, 2026 at 4:04 AM Mohamed Ayman
<mohamedaymanworkspace@gmail.com> wrote:
>
> Use a pointer to the hart instead of copying RISCVCPU when
> passing pmu_avail_ctrs to riscv_pmu_generate_fdt_node().
>
> Signed-off-by: Mohamed Ayman <mohamedaymanworkspace@gmail.com>

Thanks!

Applied to riscv-to-apply.next

Alistair

> ---
>  hw/riscv/virt.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> index a1c323e66d..085971eedc 100644
> --- a/hw/riscv/virt.c
> +++ b/hw/riscv/virt.c
> @@ -722,11 +722,11 @@ static void create_fdt_pmu(RISCVVirtState *s)
>  {
>      g_autofree char *pmu_name = g_strdup_printf("/pmu");
>      MachineState *ms = MACHINE(s);
> -    RISCVCPU hart = s->soc[0].harts[0];
> +    RISCVCPU *hart = &s->soc[0].harts[0];
>
>      qemu_fdt_add_subnode(ms->fdt, pmu_name);
>      qemu_fdt_setprop_string(ms->fdt, pmu_name, "compatible", "riscv,pmu");
> -    riscv_pmu_generate_fdt_node(ms->fdt, hart.pmu_avail_ctrs, pmu_name);
> +    riscv_pmu_generate_fdt_node(ms->fdt, hart->pmu_avail_ctrs, pmu_name);
>  }
>
>  static void create_fdt_sockets(RISCVVirtState *s,
> --
> 2.34.1
>
>
Re: [PATCH] riscv: virt: avoid RISCVCPU copy in PMU FDT setup
Posted by Alistair Francis 3 weeks, 1 day ago
On Mon, May 4, 2026 at 4:04 AM Mohamed Ayman
<mohamedaymanworkspace@gmail.com> wrote:
>
> Use a pointer to the hart instead of copying RISCVCPU when
> passing pmu_avail_ctrs to riscv_pmu_generate_fdt_node().
>
> Signed-off-by: Mohamed Ayman <mohamedaymanworkspace@gmail.com>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  hw/riscv/virt.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> index a1c323e66d..085971eedc 100644
> --- a/hw/riscv/virt.c
> +++ b/hw/riscv/virt.c
> @@ -722,11 +722,11 @@ static void create_fdt_pmu(RISCVVirtState *s)
>  {
>      g_autofree char *pmu_name = g_strdup_printf("/pmu");
>      MachineState *ms = MACHINE(s);
> -    RISCVCPU hart = s->soc[0].harts[0];
> +    RISCVCPU *hart = &s->soc[0].harts[0];
>
>      qemu_fdt_add_subnode(ms->fdt, pmu_name);
>      qemu_fdt_setprop_string(ms->fdt, pmu_name, "compatible", "riscv,pmu");
> -    riscv_pmu_generate_fdt_node(ms->fdt, hart.pmu_avail_ctrs, pmu_name);
> +    riscv_pmu_generate_fdt_node(ms->fdt, hart->pmu_avail_ctrs, pmu_name);
>  }
>
>  static void create_fdt_sockets(RISCVVirtState *s,
> --
> 2.34.1
>
>