[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [PATCH 00/35] exec: drop BQL from interrupt handling
From: |
Emilio G. Cota |
Subject: |
[Qemu-arm] [PATCH 00/35] exec: drop BQL from interrupt handling |
Date: |
Mon, 17 Sep 2018 12:30:28 -0400 |
This series comes originally from a series of patches that Paolo
sent to me a long time ago. I have kept most of his S-o-b tags,
but I have done the forward port of the patches to the current
QEMU code base, so please blame all possible bugs on me, not him.
The goal of this series is to push the BQL out of interrupt
handling wherever possible. Many targets do not need the BQL
to handle interrupts, so for those targets we get rid of the
BQL in interrupt handling. In TCG mode, this by itself does
not yield measurable performance gains. However, it is a
necessary first step before tackling BQL contention when
managing CPU states (i.e. exiting the exec loop always
involves taking the BQL, which does not scale).
The patches:
- Patch 0 accesses icount_decr.u16 consistently with atomics.
This is important because we use it across threads to signal
that an interrupt is pending.
- 2-28: convert direct callers of cpu->interrupt_request
to use atomic accesses or CPU helper functions that use atomics.
I have broken these up into individual patches to ease review.
Note that in some cases I have added many atomic_reads, most
of which are probably unnecessary. However, I'd leave this up
to the maintainers, since I do not want to break things by
doing a single atomic_read(&cpu->interrupt_request) at the
beginning of a function and then miss subsequent updates to
cpu->interrupt_request.
- 29-31: drop the BQL requirement when handling cpu->interrupt_request
- 32-33: drop now unnecessary BQL acquisitions in i386 and ppc
- 34-35: push down the BQL acquisition to cpu->do_interrupt
and cpu->cpu_exec_interrupt. Here I am Cc'ing everyone so that
we can make sure I am not missing any target that requires
the BQL on either do_interrupt or cpu_exec_interrupt.
This series is checkpatch-clean, and can be fetched from:
https://github.com/cota/qemu/tree/cpu-lock
Note that the series applies on top of patches that are
already on the qemu-devel list and will hopefully soon
be upstream. This series begins after commit
4ece0cbd74 ("cpus: access .qemu_icount_bias with atomic64")
in that tree.
Thanks,
Emilio
- [Qemu-arm] [PATCH 00/35] exec: drop BQL from interrupt handling,
Emilio G. Cota <=
- [Qemu-arm] [PATCH 08/35] target/arm: access cpu->interrupt_request with atomics, Emilio G. Cota, 2018/09/17
- [Qemu-arm] [PATCH 35/35] exec: push BQL down to cpu->cpu_exec_interrupt, Emilio G. Cota, 2018/09/17
- [Qemu-arm] [PATCH 34/35] exec: push BQL down to cpu->do_interrupt, Emilio G. Cota, 2018/09/17
- Re: [Qemu-arm] [PATCH 00/35] exec: drop BQL from interrupt handling, David Hildenbrand, 2018/09/18
- Re: [Qemu-arm] [PATCH 00/35] exec: drop BQL from interrupt handling, Mark Cave-Ayland, 2018/09/20