From: Igor Mammedov <imammedo@redhat.com>
To: Andrew Jones <drjones@redhat.com>
Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org,
qemu-devel@nongnu.org, eric.auger@redhat.com
Subject: Re: [Qemu-arm] [RFC PATCH 3/6] hw/arm/virt: DT: add cpu-map
Date: Mon, 23 Jul 2018 15:10:10 +0200 [thread overview]
Message-ID: <20180723151010.7b4bfd8c@redhat.com> (raw)
In-Reply-To: <20180704124923.32483-4-drjones@redhat.com>
On Wed, 4 Jul 2018 14:49:20 +0200
Andrew Jones <drjones@redhat.com> wrote:
> Support devicetree CPU topology descriptions.
>
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
> hw/arm/virt.c | 35 +++++++++++++++++++++++++++++++++++
> include/hw/arm/virt.h | 1 +
> 2 files changed, 36 insertions(+)
>
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index 880441275031..6c5fecdd61df 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -40,6 +40,7 @@
> #include "hw/devices.h"
> #include "net/net.h"
> #include "sysemu/device_tree.h"
> +#include "sysemu/cpus.h"
> #include "sysemu/numa.h"
> #include "sysemu/sysemu.h"
> #include "sysemu/kvm.h"
> @@ -302,6 +303,7 @@ static void fdt_add_cpu_nodes(const VirtMachineState *vms)
> int cpu;
> int addr_cells = 1;
> const MachineState *ms = MACHINE(vms);
> + VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
>
> /*
> * From Documentation/devicetree/bindings/arm/cpus.txt
> @@ -358,8 +360,38 @@ static void fdt_add_cpu_nodes(const VirtMachineState *vms)
> ms->possible_cpus->cpus[cs->cpu_index].props.node_id);
> }
>
> + qemu_fdt_setprop_cell(vms->fdt, nodename, "phandle",
> + qemu_fdt_alloc_phandle(vms->fdt));
it's not obvious how this hunk is related to patch
(also it affects ignore_cpu_topology = true which probably isn't intended)
> g_free(nodename);
> }
> +
> + if (!vmc->ignore_cpu_topology) {
> + /* From Documentation/devicetree/bindings/arm/topology.txt
> + */
> + qemu_fdt_add_subnode(vms->fdt, "/cpus/cpu-map");
> +
> + for (cpu = vms->smp_cpus - 1; cpu >= 0; cpu--) {
I'd iterate over possible_cpus array instead
> + char *cpu_path = g_strdup_printf("/cpus/cpu@%d", cpu);
> + char *map_path;
> +
> + if (smp_threads > 1) {
> + map_path = g_strdup_printf(
> + "/cpus/cpu-map/%s%d/%s%d/%s%d",
> + "cluster", cpu / (smp_cores * smp_threads),
> + "core", (cpu / smp_threads) % smp_cores,
> + "thread", cpu % smp_threads);
> + } else {
> + map_path = g_strdup_printf(
> + "/cpus/cpu-map/%s%d/%s%d",
> + "cluster", cpu / smp_cores,
> + "core", cpu % smp_cores);
> + }
not sure about direct calculation of numbers here,
do they relate in any way to ms->possible_cpus->cpus[].props.(socket|core|thread-id) ?
> + qemu_fdt_add_path(vms->fdt, map_path);
> + qemu_fdt_setprop_phandle(vms->fdt, map_path, "cpu", cpu_path);
> + g_free(map_path);
> + g_free(cpu_path);
> + }
> + }
> }
>
> static void fdt_add_its_gic_node(VirtMachineState *vms)
> @@ -1839,7 +1871,10 @@ static void virt_3_0_instance_init(Object *obj)
>
> static void virt_machine_3_0_options(MachineClass *mc)
> {
> + VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
> +
> virt_machine_3_1_options(mc);
> + vmc->ignore_cpu_topology = true;
> }
> DEFINE_VIRT_MACHINE(3, 0)
>
> diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
> index 9a870ccb6a57..deb8bee72cda 100644
> --- a/include/hw/arm/virt.h
> +++ b/include/hw/arm/virt.h
> @@ -94,6 +94,7 @@ typedef struct MemMapEntry {
> typedef struct {
> MachineClass parent;
> bool disallow_affinity_adjustment;
> + bool ignore_cpu_topology;
missing doc comment for the knob
> bool no_its;
> bool no_pmu;
> bool claim_edge_triggered_timers;
WARNING: multiple messages have this Message-ID (diff)
From: Igor Mammedov <imammedo@redhat.com>
To: Andrew Jones <drjones@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-arm@nongnu.org,
peter.maydell@linaro.org, eric.auger@redhat.com, wei@redhat.com
Subject: Re: [Qemu-devel] [RFC PATCH 3/6] hw/arm/virt: DT: add cpu-map
Date: Mon, 23 Jul 2018 15:10:10 +0200 [thread overview]
Message-ID: <20180723151010.7b4bfd8c@redhat.com> (raw)
In-Reply-To: <20180704124923.32483-4-drjones@redhat.com>
On Wed, 4 Jul 2018 14:49:20 +0200
Andrew Jones <drjones@redhat.com> wrote:
> Support devicetree CPU topology descriptions.
>
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
> hw/arm/virt.c | 35 +++++++++++++++++++++++++++++++++++
> include/hw/arm/virt.h | 1 +
> 2 files changed, 36 insertions(+)
>
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index 880441275031..6c5fecdd61df 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -40,6 +40,7 @@
> #include "hw/devices.h"
> #include "net/net.h"
> #include "sysemu/device_tree.h"
> +#include "sysemu/cpus.h"
> #include "sysemu/numa.h"
> #include "sysemu/sysemu.h"
> #include "sysemu/kvm.h"
> @@ -302,6 +303,7 @@ static void fdt_add_cpu_nodes(const VirtMachineState *vms)
> int cpu;
> int addr_cells = 1;
> const MachineState *ms = MACHINE(vms);
> + VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
>
> /*
> * From Documentation/devicetree/bindings/arm/cpus.txt
> @@ -358,8 +360,38 @@ static void fdt_add_cpu_nodes(const VirtMachineState *vms)
> ms->possible_cpus->cpus[cs->cpu_index].props.node_id);
> }
>
> + qemu_fdt_setprop_cell(vms->fdt, nodename, "phandle",
> + qemu_fdt_alloc_phandle(vms->fdt));
it's not obvious how this hunk is related to patch
(also it affects ignore_cpu_topology = true which probably isn't intended)
> g_free(nodename);
> }
> +
> + if (!vmc->ignore_cpu_topology) {
> + /* From Documentation/devicetree/bindings/arm/topology.txt
> + */
> + qemu_fdt_add_subnode(vms->fdt, "/cpus/cpu-map");
> +
> + for (cpu = vms->smp_cpus - 1; cpu >= 0; cpu--) {
I'd iterate over possible_cpus array instead
> + char *cpu_path = g_strdup_printf("/cpus/cpu@%d", cpu);
> + char *map_path;
> +
> + if (smp_threads > 1) {
> + map_path = g_strdup_printf(
> + "/cpus/cpu-map/%s%d/%s%d/%s%d",
> + "cluster", cpu / (smp_cores * smp_threads),
> + "core", (cpu / smp_threads) % smp_cores,
> + "thread", cpu % smp_threads);
> + } else {
> + map_path = g_strdup_printf(
> + "/cpus/cpu-map/%s%d/%s%d",
> + "cluster", cpu / smp_cores,
> + "core", cpu % smp_cores);
> + }
not sure about direct calculation of numbers here,
do they relate in any way to ms->possible_cpus->cpus[].props.(socket|core|thread-id) ?
> + qemu_fdt_add_path(vms->fdt, map_path);
> + qemu_fdt_setprop_phandle(vms->fdt, map_path, "cpu", cpu_path);
> + g_free(map_path);
> + g_free(cpu_path);
> + }
> + }
> }
>
> static void fdt_add_its_gic_node(VirtMachineState *vms)
> @@ -1839,7 +1871,10 @@ static void virt_3_0_instance_init(Object *obj)
>
> static void virt_machine_3_0_options(MachineClass *mc)
> {
> + VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
> +
> virt_machine_3_1_options(mc);
> + vmc->ignore_cpu_topology = true;
> }
> DEFINE_VIRT_MACHINE(3, 0)
>
> diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
> index 9a870ccb6a57..deb8bee72cda 100644
> --- a/include/hw/arm/virt.h
> +++ b/include/hw/arm/virt.h
> @@ -94,6 +94,7 @@ typedef struct MemMapEntry {
> typedef struct {
> MachineClass parent;
> bool disallow_affinity_adjustment;
> + bool ignore_cpu_topology;
missing doc comment for the knob
> bool no_its;
> bool no_pmu;
> bool claim_edge_triggered_timers;
next prev parent reply other threads:[~2018-07-23 13:10 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-04 12:49 [Qemu-arm] [RFC PATCH 0/6] hw/arm/virt: Introduce cpu topology support Andrew Jones
2018-07-04 12:49 ` [Qemu-devel] " Andrew Jones
2018-07-04 12:49 ` [Qemu-arm] [RFC PATCH 1/6] hw/arm/virt: Add virt-3.1 machine type Andrew Jones
2018-07-04 12:49 ` [Qemu-devel] " Andrew Jones
2018-07-23 12:22 ` [Qemu-arm] " Igor Mammedov
2018-07-23 12:22 ` [Qemu-devel] " Igor Mammedov
2018-08-17 14:55 ` Peter Maydell
2018-08-17 14:55 ` Peter Maydell
2018-07-04 12:49 ` [Qemu-arm] [RFC PATCH 2/6] device_tree: add qemu_fdt_add_path Andrew Jones
2018-07-04 12:49 ` [Qemu-devel] " Andrew Jones
2018-07-23 12:42 ` [Qemu-arm] " Igor Mammedov
2018-07-23 12:42 ` [Qemu-devel] " Igor Mammedov
2018-08-17 15:00 ` [Qemu-arm] " Andrew Jones
2018-08-17 15:00 ` Andrew Jones
2018-07-04 12:49 ` [Qemu-arm] [RFC PATCH 3/6] hw/arm/virt: DT: add cpu-map Andrew Jones
2018-07-04 12:49 ` [Qemu-devel] " Andrew Jones
2018-07-23 13:10 ` Igor Mammedov [this message]
2018-07-23 13:10 ` Igor Mammedov
2018-07-04 12:49 ` [Qemu-arm] [RFC PATCH 4/6] hw/arm/virt-acpi-build: distinguish possible and present cpus Andrew Jones
2018-07-04 12:49 ` [Qemu-devel] " Andrew Jones
2018-07-23 13:28 ` [Qemu-arm] " Igor Mammedov
2018-07-23 13:28 ` Igor Mammedov
2018-07-04 12:49 ` [Qemu-devel] [RFC PATCH 5/6] virt-acpi-build: add PPTT table Andrew Jones
2018-07-04 12:49 ` Andrew Jones
2018-07-11 12:51 ` [Qemu-arm] " Andrew Jones
2018-07-11 12:51 ` [Qemu-devel] " Andrew Jones
2018-07-23 14:00 ` [Qemu-arm] " Igor Mammedov
2018-07-23 14:00 ` [Qemu-devel] " Igor Mammedov
2018-07-04 12:49 ` [Qemu-arm] [RFC PATCH 6/6] hw/arm/virt: cpu topology: don't allow threads Andrew Jones
2018-07-04 12:49 ` [Qemu-devel] " Andrew Jones
2019-12-09 2:14 ` [Qemu-devel] [RFC PATCH 0/6] hw/arm/virt: Introduce cpu topology support Zengtao (B)
2019-12-10 10:13 ` Andrew Jones
2019-12-10 10:13 ` Andrew Jones
2019-12-11 11:10 ` Zengtao (B)
2019-12-11 11:10 ` Zengtao (B)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180723151010.7b4bfd8c@redhat.com \
--to=imammedo@redhat.com \
--cc=drjones@redhat.com \
--cc=eric.auger@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.