[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 00/21] accel/tcg: remove implied BQL from cpu_handle_interrupt
From: |
Robert Foley |
Subject: |
[PATCH v1 00/21] accel/tcg: remove implied BQL from cpu_handle_interrupt/exception path |
Date: |
Wed, 5 Aug 2020 14:12:42 -0400 |
The purpose of this change is to set the groundwork
so that an arch could move towards removing
the BQL from the cpu_handle_interrupt/exception paths.
The BQL is a bottleneck in scaling to more cores.
And this cpu_handle_interrupt/exception path is one of
the key BQL users as measured by the QEMU sync profiling (qsp).
We have chosen to break up the process of removing
BQL from this path into two pieces:
1) Changes to the core/common functions of cpu_handle_interrupt/exception
to drop the holding of the BQL. The holding of the BQL is pushed down
to the per-arch implementation code.
This set of changes is handled in this patch.
This approach of pushing the BQL down to the per arch functions was
suggested by Paolo Bonzini.
For reference, here are two key posts in the discussion, explaining
the reasoning/benefits of this approach.
https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg08731.html
https://lists.gnu.org/archive/html/qemu-devel/2020-08/msg00044.html
2) Removing the BQL from the per-arch functions.
Since the arch now has the code that grabs the BQL, each arch can
change its use of the BQL for interrupts independently.
We leave it up to the arch to make the change at the time that makes sense.
It is worth mentioning that we are working on per-arch changes
in line with 2), and plan to submit these.
In other words, we plan to set the groundwork with this
patch series and then will take advantage of it in later series.
This patch series is based on the per-CPU locks patch:
https://lists.gnu.org/archive/html/qemu-devel/2020-06/msg05314.html
Robert Foley (21):
accel/tcg: Change interrupt/exception handling to remove implied BQL
target/alpha: add BQL to do_interrupt and cpu_exec_interrupt
target/arm: add BQL to do_interrupt and cpu_exec_interrupt
target/avr: add BQL to do_interrupt and cpu_exec_interrupt
target/cris: add BQL to do_interrupt and cpu_exec_interrupt
target/hppa: add BQL to do_interrupt and cpu_exec_interrupt
target/i386: add BQL to do_interrupt and cpu_exec_interrupt
target/lm32: add BQL to do_interrupt and cpu_exec_interrupt
target/m68k: add BQL to do_interrupt and cpu_exec_interrupt
target/microblaze: add BQL to do_interrupt and cpu_exec_interrupt
target/mips: add BQL to do_interrupt and cpu_exec_interrupt
target/nios2: add BQL to do_interrupt and cpu_exec_interrupt
target/openrisc: add BQL to do_interrupt and cpu_exec_interrupt
target/ppc: add BQL to do_interrupt and cpu_exec_interrupt
target/riscv: add BQL to do_interrupt and cpu_exec_interrupt
target/rx: add BQL to do_interrupt and cpu_exec_interrupt
target/s390x: add BQL to do_interrupt and cpu_exec_interrupt
target/sh4: add BQL to do_interrupt and cpu_exec_interrupt
target/sparc: add BQL to do_interrupt and cpu_exec_interrupt
target/unicore32: add BQL to do_interrupt and cpu_exec_interrupt
target/xtensa: add BQL to do_interrupt and cpu_exec_interrupt
accel/tcg/cpu-exec.c | 19 +++++++++++--------
target/alpha/helper.c | 15 +++++++++++++--
target/arm/cpu.c | 13 ++++++++++---
target/arm/helper.c | 17 ++++++++++++++++-
target/avr/helper.c | 12 +++++++++++-
target/cris/helper.c | 18 ++++++++++++++++++
target/hppa/int_helper.c | 25 +++++++++++++++++++------
target/i386/seg_helper.c | 7 +++++--
target/lm32/helper.c | 10 ++++++++++
target/m68k/op_helper.c | 5 +++++
target/microblaze/helper.c | 20 ++++++++++++++++++++
target/mips/helper.c | 10 ++++++++++
target/nios2/cpu.c | 3 +++
target/nios2/helper.c | 8 +++++++-
target/openrisc/interrupt.c | 10 ++++++++++
target/ppc/excp_helper.c | 5 +++++
target/riscv/cpu_helper.c | 10 ++++++++++
target/rx/helper.c | 10 ++++++++++
target/s390x/excp_helper.c | 12 +++++++++++-
target/sh4/helper.c | 13 +++++++++++--
target/sparc/cpu.c | 3 +++
target/sparc/int32_helper.c | 13 ++++++++++++-
target/unicore32/helper.c | 3 +++
target/unicore32/softmmu.c | 7 +++++++
target/xtensa/exc_helper.c | 2 ++
25 files changed, 242 insertions(+), 28 deletions(-)
--
2.17.1
- [PATCH v1 00/21] accel/tcg: remove implied BQL from cpu_handle_interrupt/exception path,
Robert Foley <=
- [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Robert Foley, 2020/08/05
- Re: [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Richard Henderson, 2020/08/05
- Re: [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Paolo Bonzini, 2020/08/06
- Re: [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Robert Foley, 2020/08/06
- Re: [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Paolo Bonzini, 2020/08/06
- Re: [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Robert Foley, 2020/08/06
- Re: [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Robert Foley, 2020/08/07
- Re: [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Paolo Bonzini, 2020/08/08
- Re: [PATCH v1 01/21] accel/tcg: Change interrupt/exception handling to remove implied BQL, Robert Foley, 2020/08/10
[PATCH v1 02/21] target/alpha: add BQL to do_interrupt and cpu_exec_interrupt, Robert Foley, 2020/08/05