[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v4 12/23] cpus: push BQL lock to qemu_*_wait
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [RFC PATCH v4 12/23] cpus: push BQL lock to qemu_*_wait_io_event |
Date: |
Fri, 19 Jan 2018 09:55:08 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 |
On 19/01/2018 09:44, Pavel Dovgalyuk wrote:
> static void qemu_wait_io_event(CPUState *cpu)
> {
> + qemu_mutex_lock_iothread();
> +
> while (cpu_thread_is_idle(cpu)) {
> qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex);
> }
This function locks the iothread and never unlocks it. Please test your
patches better.
> @@ -1190,6 +1194,8 @@ static void *qemu_kvm_cpu_thread_fn(void *arg)
>
> /* signal CPU creation */
> cpu->created = true;
> + qemu_mutex_unlock_iothread();
> +
> qemu_cond_signal(&qemu_cpu_cond);
>
> do {
This function calls qemu_wait_io_event with BQL not taken.
> @@ -1232,10 +1238,10 @@ static void *qemu_dummy_cpu_thread_fn(void *arg)
>
> /* signal CPU creation */
> cpu->created = true;
> + qemu_mutex_unlock_iothread();
> qemu_cond_signal(&qemu_cpu_cond);
>
> while (1) {
> - qemu_mutex_unlock_iothread();
> do {
> int sig;
> r = sigwait(&waitset, &sig);
> @@ -1246,6 +1252,7 @@ static void *qemu_dummy_cpu_thread_fn(void *arg)
> }
> qemu_mutex_lock_iothread();
> qemu_wait_io_event(cpu);
> + qemu_mutex_unlock_iothread();
This function calls it with BQL taken.
Even without the mistakes, these changes are hard to follow. If
possible, please separate the hax_vcpu_hax_exec and kvm_cpu_exec changes
to a separate patch.
Paolo
- [Qemu-devel] [RFC PATCH v4 03/23] blkreplay: create temporary overlay for underlaying devices, (continued)
- [Qemu-devel] [RFC PATCH v4 03/23] blkreplay: create temporary overlay for underlaying devices, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 04/23] replay: disable default snapshot for record/replay, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 05/23] replay: fix processing async events, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 06/23] replay: fixed replay_enable_events, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 07/23] replay: fix save/load vm for non-empty queue, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 08/23] replay: added replay log format description, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 09/23] replay: make safe vmstop at record/replay, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 10/23] replay: save prior value of the host clock, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 11/23] target/arm/arm-powertctl: drop BQL assertions, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 12/23] cpus: push BQL lock to qemu_*_wait_io_event, Pavel Dovgalyuk, 2018/01/19
- Re: [Qemu-devel] [RFC PATCH v4 12/23] cpus: push BQL lock to qemu_*_wait_io_event,
Paolo Bonzini <=
- [Qemu-devel] [RFC PATCH v4 14/23] replay/replay.c: bump REPLAY_VERSION again, Pavel Dovgalyuk, 2018/01/19
- [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads, Pavel Dovgalyuk, 2018/01/19
- Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads, Paolo Bonzini, 2018/01/19
- Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads, Pavel Dovgalyuk, 2018/01/19
- Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads, Paolo Bonzini, 2018/01/19
- Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads, Pavel Dovgalyuk, 2018/01/19
- Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads, Paolo Bonzini, 2018/01/19
- Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads, Pavel Dovgalyuk, 2018/01/19
- Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads, Pavel Dovgalyuk, 2018/01/19