From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:58707) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TlLcG-0005Gk-PM for qemu-devel@nongnu.org; Wed, 19 Dec 2012 10:31:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TlLcF-0000bh-2a for qemu-devel@nongnu.org; Wed, 19 Dec 2012 10:31:28 -0500 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Wed, 19 Dec 2012 16:31:07 +0100 Message-Id: <1355931071-22100-4-git-send-email-afaerber@suse.de> In-Reply-To: <1355931071-22100-1-git-send-email-afaerber@suse.de> References: <1355931071-22100-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH qom-cpu 3/7] cpu: Move numa_node field to CPUState List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Markus Armbruster , Alexander Graf , Luiz Capitulino , "open list:sPAPR" , =?UTF-8?q?Andreas=20F=C3=A4rber?= , David Gibson Signed-off-by: Andreas F=C3=A4rber --- cpu-defs.h | 1 - cpus.c | 4 +++- exec.c | 4 +--- hw/spapr.c | 4 +++- include/qemu/cpu.h | 2 ++ monitor.c | 4 +++- 6 Dateien ge=C3=A4ndert, 12 Zeilen hinzugef=C3=BCgt(+), 7 Zeilen entfern= t(-) diff --git a/cpu-defs.h b/cpu-defs.h index 548f616..4e1d2df 100644 --- a/cpu-defs.h +++ b/cpu-defs.h @@ -195,7 +195,6 @@ typedef struct CPUWatchpoint { CPUArchState *next_cpu; /* next CPU sharing TB cache */ = \ int cpu_index; /* CPU index (informative) */ = \ uint32_t host_tid; /* host thread ID */ = \ - int numa_node; /* NUMA node this cpu is belonging to */ = \ int running; /* Nonzero if cpu is currently running(usermode). */ = \ /* user data */ = \ void *opaque; = \ diff --git a/cpus.c b/cpus.c index 045e501..2b599e8 100644 --- a/cpus.c +++ b/cpus.c @@ -1160,12 +1160,14 @@ static void tcg_exec_all(void) void set_numa_modes(void) { CPUArchState *env; + CPUState *cpu; int i; =20 for (env =3D first_cpu; env !=3D NULL; env =3D env->next_cpu) { + cpu =3D ENV_GET_CPU(env); for (i =3D 0; i < nb_numa_nodes; i++) { if (test_bit(env->cpu_index, node_cpumask[i])) { - env->numa_node =3D i; + cpu->numa_node =3D i; } } } diff --git a/exec.c b/exec.c index 4c1246a..fc9326f 100644 --- a/exec.c +++ b/exec.c @@ -259,9 +259,7 @@ CPUArchState *qemu_get_cpu(int cpu) =20 void cpu_exec_init(CPUArchState *env) { -#ifndef CONFIG_USER_ONLY CPUState *cpu =3D ENV_GET_CPU(env); -#endif CPUArchState **penv; int cpu_index; =20 @@ -276,7 +274,7 @@ void cpu_exec_init(CPUArchState *env) cpu_index++; } env->cpu_index =3D cpu_index; - env->numa_node =3D 0; + cpu->numa_node =3D 0; QTAILQ_INIT(&env->breakpoints); QTAILQ_INIT(&env->watchpoints); #ifndef CONFIG_USER_ONLY diff --git a/hw/spapr.c b/hw/spapr.c index 341f0b9..084209e 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -139,6 +139,7 @@ static int spapr_fixup_cpu_dt(void *fdt, sPAPREnviron= ment *spapr) { int ret =3D 0, offset; CPUPPCState *env; + CPUState *cpu; char cpu_model[32]; int smt =3D kvmppc_smt_threads(); uint32_t pft_size_prop[] =3D {0, cpu_to_be32(spapr->htab_shift)}; @@ -146,11 +147,12 @@ static int spapr_fixup_cpu_dt(void *fdt, sPAPREnvir= onment *spapr) assert(spapr->cpu_model); =20 for (env =3D first_cpu; env !=3D NULL; env =3D env->next_cpu) { + cpu =3D ENV_GET_CPU(env); uint32_t associativity[] =3D {cpu_to_be32(0x5), cpu_to_be32(0x0), cpu_to_be32(0x0), cpu_to_be32(0x0), - cpu_to_be32(env->numa_node), + cpu_to_be32(cpu->numa_node), cpu_to_be32(env->cpu_index)}; =20 if ((env->cpu_index % smt) !=3D 0) { diff --git a/include/qemu/cpu.h b/include/qemu/cpu.h index 03faaab..3146ccf 100644 --- a/include/qemu/cpu.h +++ b/include/qemu/cpu.h @@ -59,6 +59,7 @@ struct kvm_run; * CPUState: * @nr_cores: Number of cores within this CPU package. * @nr_threads: Number of threads within this CPU. + * @numa_node: NUMA node this CPU is belonging to. * @created: Indicates whether the CPU thread has been successfully crea= ted. * @stop: Indicates a pending stop request. * @stopped: Indicates the CPU has been artificially stopped. @@ -73,6 +74,7 @@ struct CPUState { =20 int nr_cores; int nr_threads; + int numa_node; =20 struct QemuThread *thread; #ifdef _WIN32 diff --git a/monitor.c b/monitor.c index c0e32d6..3c177ec 100644 --- a/monitor.c +++ b/monitor.c @@ -1782,12 +1782,14 @@ static void do_info_numa(Monitor *mon) { int i; CPUArchState *env; + CPUState *cpu; =20 monitor_printf(mon, "%d nodes\n", nb_numa_nodes); for (i =3D 0; i < nb_numa_nodes; i++) { monitor_printf(mon, "node %d cpus:", i); for (env =3D first_cpu; env !=3D NULL; env =3D env->next_cpu) { - if (env->numa_node =3D=3D i) { + cpu =3D ENV_GET_CPU(env); + if (cpu->numa_node =3D=3D i) { monitor_printf(mon, " %d", env->cpu_index); } } --=20 1.7.10.4