[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping t
From: |
Pavel Dovgalyuk |
Subject: |
Re: [Qemu-devel] [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads |
Date: |
Fri, 19 Jan 2018 16:20:52 +0300 |
Pavel Dovgalyuk
> -----Original Message-----
> From: Pavel Dovgalyuk [mailto:address@hidden
> Sent: Friday, January 19, 2018 3:37 PM
> To: 'Paolo Bonzini'; 'Pavel Dovgalyuk'; address@hidden
> Cc: address@hidden; address@hidden; address@hidden; address@hidden;
> address@hidden; address@hidden; address@hidden; address@hidden;
> address@hidden; address@hidden
> Subject: RE: [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads
>
> > From: Paolo Bonzini [mailto:address@hidden
> > Sent: Friday, January 19, 2018 3:26 PM
> > To: Pavel Dovgalyuk; 'Pavel Dovgalyuk'; address@hidden
> > Cc: address@hidden; address@hidden; address@hidden; address@hidden;
> > address@hidden; address@hidden; address@hidden; address@hidden;
> > address@hidden; address@hidden
> > Subject: Re: [RFC PATCH v4 13/23] cpus: only take BQL for sleeping threads
> >
> > On 19/01/2018 13:25, Pavel Dovgalyuk wrote:
> > >>> It means, that I'll have to fix all the has_work function to avoid
> > >>> races,
> > >>> because x86_cpu_has_work may have them?
> > >> Why only x86_cpu_has_work?
> > >>
> > >> Even reading cs->interrupt_request outside the mutex is unsafe.
> > > All the vcpu function that access interrupt controller or peripheral
> > > state may be unsafe?
> > > How can it work safely then?
> >
> > They do it inside the big QEMU lock.
>
> Right. Without these patches.
Ah, I forgot about unlocking in tcg_cpu_exec.
Now I see, that vcpu is taking the lock when trying to access the peripherals.
Therefore, I have to fix all *_cpu_has_work, right?
> They are within the replay lock. And BQL is not covering vcpu execution with
> these patches.
> Therefore RR will be ok and regular execution may encounter races?
> It means that I missed something in Alex ideas, because he prepared the
> initial patches.
>
> > But here you're calling cpu_has_work (via all_cpu_threads_idle) outside the
> > lock.
>
> Yes, I see, but what we have to do?
Pavel Dovgalyuk
- Re: [Qemu-devel] [RFC PATCH v4 12/23] cpus: push BQL lock to qemu_*_wait_io_event, (continued)
- [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 <=
- 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/22
[Qemu-devel] [RFC PATCH v4 15/23] replay/replay-internal.c: track holding of replay_lock, Pavel Dovgalyuk, 2018/01/19
[Qemu-devel] [RFC PATCH v4 16/23] replay: make locking visible outside replay code, Pavel Dovgalyuk, 2018/01/19
[Qemu-devel] [RFC PATCH v4 17/23] replay: push replay_mutex_lock up the call tree, Pavel Dovgalyuk, 2018/01/19
[Qemu-devel] [RFC PATCH v4 18/23] replay: don't destroy mutex at exit, Pavel Dovgalyuk, 2018/01/19
[Qemu-devel] [RFC PATCH v4 20/23] replay: avoid recursive call of checkpoints, Pavel Dovgalyuk, 2018/01/19
[Qemu-devel] [RFC PATCH v4 19/23] replay: check return values of fwrite, Pavel Dovgalyuk, 2018/01/19
[Qemu-devel] [RFC PATCH v4 21/23] scripts/replay-dump.py: replay log dumper, Pavel Dovgalyuk, 2018/01/19
[Qemu-devel] [RFC PATCH v4 22/23] replay: don't process async events when warping the clock, Pavel Dovgalyuk, 2018/01/19