From: Alistair Francis <alistair.francis@wdc.com>
As per the device tree specification let's set the clock-frequency for
the virt CPUs.
QEMU doesn't really have an exact clock, so let's just 1000000 as it's a
nice round number and matches the sifive_u CLINT_TIMEBASE_FREQ.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/472 (RISC-V virt)
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
---
hw/riscv/virt.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
index 3af074148e..41a85cfc60 100644
--- a/hw/riscv/virt.c
+++ b/hw/riscv/virt.c
@@ -202,6 +202,7 @@ static void create_fdt_socket_cpus(RISCVVirtState *s, int socket,
qemu_fdt_setprop_cell(mc->fdt, cpu_name, "reg",
s->soc[socket].hartid_base + cpu);
qemu_fdt_setprop_string(mc->fdt, cpu_name, "device_type", "cpu");
+ qemu_fdt_setprop_cell(mc->fdt, cpu_name, "clock-frequency", 1000000);
riscv_socket_fdt_write_id(mc, mc->fdt, cpu_name, socket);
qemu_fdt_setprop_cell(mc->fdt, cpu_name, "phandle", cpu_phandle);
--
2.31.1
On Thu, Dec 16, 2021 at 12:55 PM Alistair Francis
<alistair.francis@opensource.wdc.com> wrote:
>
> From: Alistair Francis <alistair.francis@wdc.com>
>
> As per the device tree specification let's set the clock-frequency for
> the virt CPUs.
>
> QEMU doesn't really have an exact clock, so let's just 1000000 as it's a
> nice round number and matches the sifive_u CLINT_TIMEBASE_FREQ.
>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/472 (RISC-V virt)
I tend to think this issue is not valid, as the comment in the issue
says the value should reflect the running frequency.
Note the "clock-frequency" was once in the codes but was intentionally
removed before because it is not needed:
See commit 7ae05377b85f (" riscv: hw: Drop "clock-frequency" property
of cpu nodes")
> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
> ---
> hw/riscv/virt.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> index 3af074148e..41a85cfc60 100644
> --- a/hw/riscv/virt.c
> +++ b/hw/riscv/virt.c
> @@ -202,6 +202,7 @@ static void create_fdt_socket_cpus(RISCVVirtState *s, int socket,
> qemu_fdt_setprop_cell(mc->fdt, cpu_name, "reg",
> s->soc[socket].hartid_base + cpu);
> qemu_fdt_setprop_string(mc->fdt, cpu_name, "device_type", "cpu");
> + qemu_fdt_setprop_cell(mc->fdt, cpu_name, "clock-frequency", 1000000);
> riscv_socket_fdt_write_id(mc, mc->fdt, cpu_name, socket);
> qemu_fdt_setprop_cell(mc->fdt, cpu_name, "phandle", cpu_phandle);
Regards,
Bin
On Mon, Dec 20, 2021 at 5:52 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> On Thu, Dec 16, 2021 at 12:55 PM Alistair Francis
> <alistair.francis@opensource.wdc.com> wrote:
> >
> > From: Alistair Francis <alistair.francis@wdc.com>
> >
> > As per the device tree specification let's set the clock-frequency for
> > the virt CPUs.
> >
> > QEMU doesn't really have an exact clock, so let's just 1000000 as it's a
> > nice round number and matches the sifive_u CLINT_TIMEBASE_FREQ.
> >
> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/472 (RISC-V virt)
>
> I tend to think this issue is not valid, as the comment in the issue
> says the value should reflect the running frequency.
>
> Note the "clock-frequency" was once in the codes but was intentionally
> removed before because it is not needed:
>
> See commit 7ae05377b85f (" riscv: hw: Drop "clock-frequency" property
> of cpu nodes")
Hmmm... Good point.
But if the device tree spec says it's required then I think we should
include it. Even if it isn't super relevant for us
Alistair
>
> > Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
> > ---
> > hw/riscv/virt.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> > index 3af074148e..41a85cfc60 100644
> > --- a/hw/riscv/virt.c
> > +++ b/hw/riscv/virt.c
> > @@ -202,6 +202,7 @@ static void create_fdt_socket_cpus(RISCVVirtState *s, int socket,
> > qemu_fdt_setprop_cell(mc->fdt, cpu_name, "reg",
> > s->soc[socket].hartid_base + cpu);
> > qemu_fdt_setprop_string(mc->fdt, cpu_name, "device_type", "cpu");
> > + qemu_fdt_setprop_cell(mc->fdt, cpu_name, "clock-frequency", 1000000);
> > riscv_socket_fdt_write_id(mc, mc->fdt, cpu_name, socket);
> > qemu_fdt_setprop_cell(mc->fdt, cpu_name, "phandle", cpu_phandle);
>
> Regards,
> Bin
On Tue, Dec 21, 2021 at 2:32 PM Alistair Francis <alistair23@gmail.com> wrote:
>
> On Mon, Dec 20, 2021 at 5:52 PM Bin Meng <bmeng.cn@gmail.com> wrote:
> >
> > On Thu, Dec 16, 2021 at 12:55 PM Alistair Francis
> > <alistair.francis@opensource.wdc.com> wrote:
> > >
> > > From: Alistair Francis <alistair.francis@wdc.com>
> > >
> > > As per the device tree specification let's set the clock-frequency for
> > > the virt CPUs.
> > >
> > > QEMU doesn't really have an exact clock, so let's just 1000000 as it's a
> > > nice round number and matches the sifive_u CLINT_TIMEBASE_FREQ.
> > >
> > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/472 (RISC-V virt)
> >
> > I tend to think this issue is not valid, as the comment in the issue
> > says the value should reflect the running frequency.
> >
> > Note the "clock-frequency" was once in the codes but was intentionally
> > removed before because it is not needed:
> >
> > See commit 7ae05377b85f (" riscv: hw: Drop "clock-frequency" property
> > of cpu nodes")
>
> Hmmm... Good point.
>
> But if the device tree spec says it's required then I think we should
> include it. Even if it isn't super relevant for us
The Linux kernel upstream RISC-V DTS files also don't have
"clock-frequency" properties. I doubt there is benefit to provide one.
Regards,
Bin
On Tue, 21 Dec 2021 at 06:35, Alistair Francis <alistair23@gmail.com> wrote:
>
> On Mon, Dec 20, 2021 at 5:52 PM Bin Meng <bmeng.cn@gmail.com> wrote:
> >
> > On Thu, Dec 16, 2021 at 12:55 PM Alistair Francis
> > <alistair.francis@opensource.wdc.com> wrote:
> > >
> > > From: Alistair Francis <alistair.francis@wdc.com>
> > >
> > > As per the device tree specification let's set the clock-frequency for
> > > the virt CPUs.
> > >
> > > QEMU doesn't really have an exact clock, so let's just 1000000 as it's a
> > > nice round number and matches the sifive_u CLINT_TIMEBASE_FREQ.
> > >
> > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/472 (RISC-V virt)
> >
> > I tend to think this issue is not valid, as the comment in the issue
> > says the value should reflect the running frequency.
> >
> > Note the "clock-frequency" was once in the codes but was intentionally
> > removed before because it is not needed:
> >
> > See commit 7ae05377b85f (" riscv: hw: Drop "clock-frequency" property
> > of cpu nodes")
>
> Hmmm... Good point.
>
> But if the device tree spec says it's required then I think we should
> include it. Even if it isn't super relevant for us
I talked with one of the device tree spec maintainers, and he said
that the "required" note on this property in the spec is a leftover
from the spec text for PPC ePAPR, and it isn't actually required
these days. Many DTs for real-hardware Arm boards don't set the
property, and it's not marked as required in the devicetree
yaml schema for the cpu node:
https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/cpus.yaml#L63
thanks
-- PMM
On Thu, Dec 16, 2021 at 10:31 AM Alistair Francis <alistair.francis@opensource.wdc.com> wrote: > > From: Alistair Francis <alistair.francis@wdc.com> > > As per the device tree specification let's set the clock-frequency for > the virt CPUs. > > QEMU doesn't really have an exact clock, so let's just 1000000 as it's a > nice round number and matches the sifive_u CLINT_TIMEBASE_FREQ. > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/472 (RISC-V virt) > Signed-off-by: Alistair Francis <alistair.francis@wdc.com> > --- > hw/riscv/virt.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index 3af074148e..41a85cfc60 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -202,6 +202,7 @@ static void create_fdt_socket_cpus(RISCVVirtState *s, int socket, > qemu_fdt_setprop_cell(mc->fdt, cpu_name, "reg", > s->soc[socket].hartid_base + cpu); > qemu_fdt_setprop_string(mc->fdt, cpu_name, "device_type", "cpu"); > + qemu_fdt_setprop_cell(mc->fdt, cpu_name, "clock-frequency", 1000000); Instead of hard-coding, please use the same define used for timebase-frequency (i.e. RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ) Regards, Anup > riscv_socket_fdt_write_id(mc, mc->fdt, cpu_name, socket); > qemu_fdt_setprop_cell(mc->fdt, cpu_name, "phandle", cpu_phandle); > > -- > 2.31.1 > >
© 2016 - 2026 Red Hat, Inc.