[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 02/13] exec: Remove cpu from cpus list during
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH v7 02/13] exec: Remove cpu from cpus list during cpu_exec_exit() |
Date: |
Thu, 28 Jan 2016 17:19:33 -0200 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Thu, Jan 28, 2016 at 11:19:44AM +0530, Bharata B Rao wrote:
> CPUState *cpu gets added to the cpus list during cpu_exec_init(). It
> should be removed from cpu_exec_exit().
>
> cpu_exec_init() is called from generic CPU::instance_finalize and some
> archs like PowerPC call it from CPU unrealizefn. So ensure that we
> dequeue the cpu only once.
>
> Now -1 value for cpu->cpu_index indicates that we have already dequeued
> the cpu for CONFIG_USER_ONLY case also.
>
> Signed-off-by: Bharata B Rao <address@hidden>
> Reviewed-by: David Gibson <address@hidden>
> ---
> exec.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/exec.c b/exec.c
> index 7115403..c8da9d4 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -596,6 +596,7 @@ void cpu_exec_exit(CPUState *cpu)
> return;
> }
>
> + QTAILQ_REMOVE(&cpus, cpu, node);
> bitmap_clear(cpu_index_map, cpu->cpu_index, 1);
> cpu->cpu_index = -1;
> }
> @@ -614,6 +615,15 @@ static int cpu_get_free_index(Error **errp)
>
> void cpu_exec_exit(CPUState *cpu)
> {
> + cpu_list_lock();
> + if (cpu->cpu_index == -1) {
> + cpu_list_unlock();
> + return;
> + }
> +
> + QTAILQ_REMOVE(&cpus, cpu, node);
> + cpu->cpu_index = -1;
> + cpu_list_unlock();
With this, the only differences between the two cpu_exec_exit()
implementations are:
* cpu_list_lock()/cpu_list_unlock() functions.
* We can add !CONFIG_USER_ONLY stubs for them.
* The bitmap_clear() call.
* It can be abstracted away in a cpu_release_index() function,
just like we already have a CONFIG_USER_ONLY version of
cpu_get_free_index().
* I was going to suggest using cpu_index_map on
CONFIG_USER_ONLY too, but I assume we don't want to limit
the number of threads in *-user to MAX_CPUMASK_BITS.
This way we won't need to duplicate cpu_exec_exit() code.
--
Eduardo
- [Qemu-devel] [PATCH v7 00/13] sPAPR CPU hotplug, Bharata B Rao, 2016/01/28
- [Qemu-devel] [PATCH v7 03/13] exec: Do vmstate unregistration from cpu_exec_exit(), Bharata B Rao, 2016/01/28
- [Qemu-devel] [PATCH v7 02/13] exec: Remove cpu from cpus list during cpu_exec_exit(), Bharata B Rao, 2016/01/28
- Re: [Qemu-devel] [PATCH v7 02/13] exec: Remove cpu from cpus list during cpu_exec_exit(),
Eduardo Habkost <=
- [Qemu-devel] [PATCH v7 01/13] machine: Don't allow CPU toplogies with partially filled cores, Bharata B Rao, 2016/01/28
- Re: [Qemu-devel] [PATCH v7 01/13] machine: Don't allow CPU toplogies with partially filled cores, Eduardo Habkost, 2016/01/28
- Re: [Qemu-devel] [PATCH v7 01/13] machine: Don't allow CPU toplogies with partially filled cores, David Gibson, 2016/01/28
- Re: [Qemu-devel] [PATCH v7 01/13] machine: Don't allow CPU toplogies with partially filled cores, Eduardo Habkost, 2016/01/29
- Re: [Qemu-devel] [PATCH v7 01/13] machine: Don't allow CPU toplogies with partially filled cores, Igor Mammedov, 2016/01/29
- Re: [Qemu-devel] [PATCH v7 01/13] machine: Don't allow CPU toplogies with partially filled cores, Eduardo Habkost, 2016/01/29
- Re: [Qemu-devel] [PATCH v7 01/13] machine: Don't allow CPU toplogies with partially filled cores, Igor Mammedov, 2016/01/29
- Re: [Qemu-devel] [PATCH v7 01/13] machine: Don't allow CPU toplogies with partially filled cores, Eduardo Habkost, 2016/01/29
[Qemu-devel] [PATCH v7 04/13] cpu: Don't realize CPU from cpu_generic_init(), Bharata B Rao, 2016/01/28