This code was introduced with SMP support in commit 6a00d60127,
later commit 296af7c952 moved CPU parts to cpus.c but forgot this
code. Move now and simplify ifdef'ry.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
cpus.c | 18 ++++++++++++++++++
exec.c | 22 ----------------------
2 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/cpus.c b/cpus.c
index 41d1c5099f..472686cbbc 100644
--- a/cpus.c
+++ b/cpus.c
@@ -92,6 +92,11 @@ static unsigned int throttle_percentage;
#define CPU_THROTTLE_PCT_MAX 99
#define CPU_THROTTLE_TIMESLICE_NS 10000000
+CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus);
+
+/* current CPU in the current thread. It is only valid inside cpu_exec() */
+__thread CPUState *current_cpu;
+
bool cpu_is_stopped(CPUState *cpu)
{
return cpu->stopped || !runstate_is_running();
@@ -134,6 +139,19 @@ static bool all_cpu_threads_idle(void)
return true;
}
+CPUState *qemu_get_cpu(int index)
+{
+ CPUState *cpu;
+
+ CPU_FOREACH(cpu) {
+ if (cpu->cpu_index == index) {
+ return cpu;
+ }
+ }
+
+ return NULL;
+}
+
/***********************************************************/
/* guest cycle counter */
diff --git a/exec.c b/exec.c
index 21926dc9c7..997b7db15f 100644
--- a/exec.c
+++ b/exec.c
@@ -98,12 +98,6 @@ AddressSpace address_space_memory;
static MemoryRegion io_mem_unassigned;
#endif
-CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus);
-
-/* current CPU in the current thread. It is only valid inside
- cpu_exec() */
-__thread CPUState *current_cpu;
-
uintptr_t qemu_host_page_size;
intptr_t qemu_host_page_mask;
@@ -832,22 +826,6 @@ const VMStateDescription vmstate_cpu_common = {
}
};
-#endif
-
-CPUState *qemu_get_cpu(int index)
-{
- CPUState *cpu;
-
- CPU_FOREACH(cpu) {
- if (cpu->cpu_index == index) {
- return cpu;
- }
- }
-
- return NULL;
-}
-
-#if !defined(CONFIG_USER_ONLY)
void cpu_address_space_init(CPUState *cpu, int asidx,
const char *prefix, MemoryRegion *mr)
{
--
2.21.3
On 7/1/20 10:54 AM, Philippe Mathieu-Daudé wrote: > This code was introduced with SMP support in commit 6a00d60127, > later commit 296af7c952 moved CPU parts to cpus.c but forgot this > code. Move now and simplify ifdef'ry. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > cpus.c | 18 ++++++++++++++++++ > exec.c | 22 ---------------------- > 2 files changed, 18 insertions(+), 22 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
Philippe Mathieu-Daudé <philmd@redhat.com> writes: > This code was introduced with SMP support in commit 6a00d60127, > later commit 296af7c952 moved CPU parts to cpus.c but forgot this > code. Move now and simplify ifdef'ry. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> -- Alex Bennée
On 01/07/20 19:54, Philippe Mathieu-Daudé wrote: > This code was introduced with SMP support in commit 6a00d60127, > later commit 296af7c952 moved CPU parts to cpus.c but forgot this > code. Move now and simplify ifdef'ry. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > cpus.c | 18 ++++++++++++++++++ > exec.c | 22 ---------------------- > 2 files changed, 18 insertions(+), 22 deletions(-) > > diff --git a/cpus.c b/cpus.c > index 41d1c5099f..472686cbbc 100644 > --- a/cpus.c > +++ b/cpus.c > @@ -92,6 +92,11 @@ static unsigned int throttle_percentage; > #define CPU_THROTTLE_PCT_MAX 99 > #define CPU_THROTTLE_TIMESLICE_NS 10000000 > > +CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); > + > +/* current CPU in the current thread. It is only valid inside cpu_exec() */ > +__thread CPUState *current_cpu; > + > bool cpu_is_stopped(CPUState *cpu) > { > return cpu->stopped || !runstate_is_running(); > @@ -134,6 +139,19 @@ static bool all_cpu_threads_idle(void) > return true; > } > > +CPUState *qemu_get_cpu(int index) > +{ > + CPUState *cpu; > + > + CPU_FOREACH(cpu) { > + if (cpu->cpu_index == index) { > + return cpu; > + } > + } > + > + return NULL; > +} > + > /***********************************************************/ > /* guest cycle counter */ > > diff --git a/exec.c b/exec.c > index 21926dc9c7..997b7db15f 100644 > --- a/exec.c > +++ b/exec.c > @@ -98,12 +98,6 @@ AddressSpace address_space_memory; > static MemoryRegion io_mem_unassigned; > #endif > > -CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); > - > -/* current CPU in the current thread. It is only valid inside > - cpu_exec() */ > -__thread CPUState *current_cpu; > - > uintptr_t qemu_host_page_size; > intptr_t qemu_host_page_mask; > > @@ -832,22 +826,6 @@ const VMStateDescription vmstate_cpu_common = { > } > }; > > -#endif > - > -CPUState *qemu_get_cpu(int index) > -{ > - CPUState *cpu; > - > - CPU_FOREACH(cpu) { > - if (cpu->cpu_index == index) { > - return cpu; > - } > - } > - > - return NULL; > -} > - > -#if !defined(CONFIG_USER_ONLY) > void cpu_address_space_init(CPUState *cpu, int asidx, > const char *prefix, MemoryRegion *mr) > { > Queued, thanks. Paolo
On 02/07/20 11:38, Paolo Bonzini wrote: > On 01/07/20 19:54, Philippe Mathieu-Daudé wrote: >> This code was introduced with SMP support in commit 6a00d60127, >> later commit 296af7c952 moved CPU parts to cpus.c but forgot this >> code. Move now and simplify ifdef'ry. >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> >> --- >> cpus.c | 18 ++++++++++++++++++ >> exec.c | 22 ---------------------- >> 2 files changed, 18 insertions(+), 22 deletions(-) >> >> diff --git a/cpus.c b/cpus.c >> index 41d1c5099f..472686cbbc 100644 >> --- a/cpus.c >> +++ b/cpus.c >> @@ -92,6 +92,11 @@ static unsigned int throttle_percentage; >> #define CPU_THROTTLE_PCT_MAX 99 >> #define CPU_THROTTLE_TIMESLICE_NS 10000000 >> >> +CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); >> + >> +/* current CPU in the current thread. It is only valid inside cpu_exec() */ >> +__thread CPUState *current_cpu; >> + >> bool cpu_is_stopped(CPUState *cpu) >> { >> return cpu->stopped || !runstate_is_running(); >> @@ -134,6 +139,19 @@ static bool all_cpu_threads_idle(void) >> return true; >> } >> >> +CPUState *qemu_get_cpu(int index) >> +{ >> + CPUState *cpu; >> + >> + CPU_FOREACH(cpu) { >> + if (cpu->cpu_index == index) { >> + return cpu; >> + } >> + } >> + >> + return NULL; >> +} >> + >> /***********************************************************/ >> /* guest cycle counter */ >> >> diff --git a/exec.c b/exec.c >> index 21926dc9c7..997b7db15f 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -98,12 +98,6 @@ AddressSpace address_space_memory; >> static MemoryRegion io_mem_unassigned; >> #endif >> >> -CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); >> - >> -/* current CPU in the current thread. It is only valid inside >> - cpu_exec() */ >> -__thread CPUState *current_cpu; >> - >> uintptr_t qemu_host_page_size; >> intptr_t qemu_host_page_mask; >> >> @@ -832,22 +826,6 @@ const VMStateDescription vmstate_cpu_common = { >> } >> }; >> >> -#endif >> - >> -CPUState *qemu_get_cpu(int index) >> -{ >> - CPUState *cpu; >> - >> - CPU_FOREACH(cpu) { >> - if (cpu->cpu_index == index) { >> - return cpu; >> - } >> - } >> - >> - return NULL; >> -} >> - >> -#if !defined(CONFIG_USER_ONLY) >> void cpu_address_space_init(CPUState *cpu, int asidx, >> const char *prefix, MemoryRegion *mr) >> { >> > > Queued, thanks. > > Paolo > > Wait... this is in exec.c because cpus.c is not linked into user-mode emulators. Paolo
On 7/2/20 12:21 PM, Paolo Bonzini wrote: > On 02/07/20 11:38, Paolo Bonzini wrote: >> On 01/07/20 19:54, Philippe Mathieu-Daudé wrote: >>> This code was introduced with SMP support in commit 6a00d60127, >>> later commit 296af7c952 moved CPU parts to cpus.c but forgot this >>> code. Move now and simplify ifdef'ry. >>> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> >>> --- >>> cpus.c | 18 ++++++++++++++++++ >>> exec.c | 22 ---------------------- >>> 2 files changed, 18 insertions(+), 22 deletions(-) >>> >>> diff --git a/cpus.c b/cpus.c >>> index 41d1c5099f..472686cbbc 100644 >>> --- a/cpus.c >>> +++ b/cpus.c >>> @@ -92,6 +92,11 @@ static unsigned int throttle_percentage; >>> #define CPU_THROTTLE_PCT_MAX 99 >>> #define CPU_THROTTLE_TIMESLICE_NS 10000000 >>> >>> +CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); >>> + >>> +/* current CPU in the current thread. It is only valid inside cpu_exec() */ >>> +__thread CPUState *current_cpu; >>> + >>> bool cpu_is_stopped(CPUState *cpu) >>> { >>> return cpu->stopped || !runstate_is_running(); >>> @@ -134,6 +139,19 @@ static bool all_cpu_threads_idle(void) >>> return true; >>> } >>> >>> +CPUState *qemu_get_cpu(int index) >>> +{ >>> + CPUState *cpu; >>> + >>> + CPU_FOREACH(cpu) { >>> + if (cpu->cpu_index == index) { >>> + return cpu; >>> + } >>> + } >>> + >>> + return NULL; >>> +} >>> + >>> /***********************************************************/ >>> /* guest cycle counter */ >>> >>> diff --git a/exec.c b/exec.c >>> index 21926dc9c7..997b7db15f 100644 >>> --- a/exec.c >>> +++ b/exec.c >>> @@ -98,12 +98,6 @@ AddressSpace address_space_memory; >>> static MemoryRegion io_mem_unassigned; >>> #endif >>> >>> -CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); >>> - >>> -/* current CPU in the current thread. It is only valid inside >>> - cpu_exec() */ >>> -__thread CPUState *current_cpu; >>> - >>> uintptr_t qemu_host_page_size; >>> intptr_t qemu_host_page_mask; >>> >>> @@ -832,22 +826,6 @@ const VMStateDescription vmstate_cpu_common = { >>> } >>> }; >>> >>> -#endif >>> - >>> -CPUState *qemu_get_cpu(int index) >>> -{ >>> - CPUState *cpu; >>> - >>> - CPU_FOREACH(cpu) { >>> - if (cpu->cpu_index == index) { >>> - return cpu; >>> - } >>> - } >>> - >>> - return NULL; >>> -} >>> - >>> -#if !defined(CONFIG_USER_ONLY) >>> void cpu_address_space_init(CPUState *cpu, int asidx, >>> const char *prefix, MemoryRegion *mr) >>> { >>> >> >> Queued, thanks. >> >> Paolo >> >> > > Wait... this is in exec.c because cpus.c is not linked into user-mode > emulators. Oops sorry. This should be moved to cpus-common.c then. Will respin.
Paolo Bonzini <pbonzini@redhat.com> writes: > On 02/07/20 11:38, Paolo Bonzini wrote: >> On 01/07/20 19:54, Philippe Mathieu-Daudé wrote: >>> This code was introduced with SMP support in commit 6a00d60127, >>> later commit 296af7c952 moved CPU parts to cpus.c but forgot this >>> code. Move now and simplify ifdef'ry. >>> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> >>> --- >>> cpus.c | 18 ++++++++++++++++++ >>> exec.c | 22 ---------------------- >>> 2 files changed, 18 insertions(+), 22 deletions(-) >>> >>> diff --git a/cpus.c b/cpus.c >>> index 41d1c5099f..472686cbbc 100644 >>> --- a/cpus.c >>> +++ b/cpus.c >>> @@ -92,6 +92,11 @@ static unsigned int throttle_percentage; >>> #define CPU_THROTTLE_PCT_MAX 99 >>> #define CPU_THROTTLE_TIMESLICE_NS 10000000 >>> >>> +CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); >>> + >>> +/* current CPU in the current thread. It is only valid inside cpu_exec() */ >>> +__thread CPUState *current_cpu; >>> + >>> bool cpu_is_stopped(CPUState *cpu) >>> { >>> return cpu->stopped || !runstate_is_running(); >>> @@ -134,6 +139,19 @@ static bool all_cpu_threads_idle(void) >>> return true; >>> } >>> >>> +CPUState *qemu_get_cpu(int index) >>> +{ >>> + CPUState *cpu; >>> + >>> + CPU_FOREACH(cpu) { >>> + if (cpu->cpu_index == index) { >>> + return cpu; >>> + } >>> + } >>> + >>> + return NULL; >>> +} >>> + >>> /***********************************************************/ >>> /* guest cycle counter */ >>> >>> diff --git a/exec.c b/exec.c >>> index 21926dc9c7..997b7db15f 100644 >>> --- a/exec.c >>> +++ b/exec.c >>> @@ -98,12 +98,6 @@ AddressSpace address_space_memory; >>> static MemoryRegion io_mem_unassigned; >>> #endif >>> >>> -CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); >>> - >>> -/* current CPU in the current thread. It is only valid inside >>> - cpu_exec() */ >>> -__thread CPUState *current_cpu; >>> - >>> uintptr_t qemu_host_page_size; >>> intptr_t qemu_host_page_mask; >>> >>> @@ -832,22 +826,6 @@ const VMStateDescription vmstate_cpu_common = { >>> } >>> }; >>> >>> -#endif >>> - >>> -CPUState *qemu_get_cpu(int index) >>> -{ >>> - CPUState *cpu; >>> - >>> - CPU_FOREACH(cpu) { >>> - if (cpu->cpu_index == index) { >>> - return cpu; >>> - } >>> - } >>> - >>> - return NULL; >>> -} >>> - >>> -#if !defined(CONFIG_USER_ONLY) >>> void cpu_address_space_init(CPUState *cpu, int asidx, >>> const char *prefix, MemoryRegion *mr) >>> { >>> >> >> Queued, thanks. >> >> Paolo >> >> > > Wait... this is in exec.c because cpus.c is not linked into user-mode > emulators. cpus-common then? -- Alex Bennée
© 2016 - 2024 Red Hat, Inc.