[PATCH v2 00/10] tcg: breakpoint reorg

Richard Henderson posted 10 patches 3 years, 8 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210712154004.1410832-1-richard.henderson@linaro.org
Maintainers: Laurent Vivier <laurent@vivier.eu>, Eduardo Habkost <ehabkost@redhat.com>, Aurelien Jarno <aurelien@aurel32.net>, Cornelia Huck <cohuck@redhat.com>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, Bin Meng <bin.meng@windriver.com>, David Hildenbrand <david@redhat.com>, Thomas Huth <thuth@redhat.com>, Marek Vasut <marex@denx.de>, Bastian Koppelmann <kbastian@mail.uni-paderborn.de>, Michael Rolnik <mrolnik@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Alistair Francis <alistair.francis@wdc.com>, Greg Kurz <groug@kaod.org>, Richard Henderson <richard.henderson@linaro.org>, Max Filippov <jcmvbkbc@gmail.com>, Taylor Simpson <tsimpson@quicinc.com>, Palmer Dabbelt <palmer@dabbelt.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, Chris Wulff <crwulff@gmail.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Jiaxun Yang <jiaxun.yang@flygoat.com>, Stafford Horne <shorne@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, David Gibson <david@gibson.dropbear.id.au>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>
There is a newer version of this series
include/exec/exec-all.h       |  30 +++++---
include/exec/translator.h     |  17 +++--
accel/tcg/cpu-exec.c          | 130 ++++++++++++++++++++++++++++------
accel/tcg/translate-all.c     |   7 +-
accel/tcg/translator.c        |  79 ++++++++++++++-------
cpu.c                         |  24 -------
target/alpha/translate.c      |  12 +---
target/arm/translate-a64.c    |  14 ++--
target/arm/translate.c        |  20 +++---
target/avr/translate.c        |   6 +-
target/cris/translate.c       |  14 ++--
target/hexagon/translate.c    |  13 +---
target/hppa/translate.c       |   7 +-
target/i386/tcg/translate.c   |  15 ++--
target/m68k/translate.c       |  14 +---
target/microblaze/translate.c |  14 +---
target/mips/tcg/translate.c   |  14 ++--
target/nios2/translate.c      |  13 +---
target/openrisc/translate.c   |  11 +--
target/ppc/translate.c        |  13 +---
target/riscv/translate.c      |  11 +--
target/rx/translate.c         |   8 +--
target/s390x/translate.c      |  12 ++--
target/sh4/translate.c        |  12 ++--
target/sparc/translate.c      |   9 ++-
target/tricore/translate.c    |  13 +---
target/xtensa/translate.c     |  12 ++--
tcg/tcg-op.c                  |  28 ++++----
28 files changed, 280 insertions(+), 292 deletions(-)
[PATCH v2 00/10] tcg: breakpoint reorg
Posted by Richard Henderson 3 years, 8 months ago
This is fixing #404 ("windows xp boot takes much longer...")
and several other similar reports.

For v2, all prerequisites and 7 of the patches from v1 with
reviews are now upstream.

Mark Cave-Ayland reported success with WinXP with v1, with
this patch set being even faster than b55f54bc~1.  Which was
a bit of a surprise, but I'll take it.  It means that it's
probably not worth making the breakpoint detection scheme
any more complicated.

I'd still like some more feedback.  Given this is fixing a
regression from qemu 5.2 I feel comfortable delaying this
past soft freeze, but not past hard freeze on the 20th.


r~


Richard Henderson (10):
  accel/tcg: Reduce CF_COUNT_MASK to match TCG_MAX_INSNS
  accel/tcg: Move curr_cflags into cpu-exec.c
  accel/tcg: Add CF_NO_GOTO_TB and CF_NO_GOTO_PTR
  accel/tcg: Drop CF_NO_GOTO_PTR from -d nochain
  accel/tcg: Handle -singlestep in curr_cflags
  accel/tcg: Use CF_NO_GOTO_{TB,PTR} in cpu_exec_step_atomic
  accel/tcg: Move cflags lookup into tb_find
  accel/tcg: Adjust interface of TranslatorOps.breakpoint_check
  accel/tcg: Hoist tb_cflags to a local in translator_loop
  accel/tcg: Encode breakpoint info into tb->cflags

 include/exec/exec-all.h       |  30 +++++---
 include/exec/translator.h     |  17 +++--
 accel/tcg/cpu-exec.c          | 130 ++++++++++++++++++++++++++++------
 accel/tcg/translate-all.c     |   7 +-
 accel/tcg/translator.c        |  79 ++++++++++++++-------
 cpu.c                         |  24 -------
 target/alpha/translate.c      |  12 +---
 target/arm/translate-a64.c    |  14 ++--
 target/arm/translate.c        |  20 +++---
 target/avr/translate.c        |   6 +-
 target/cris/translate.c       |  14 ++--
 target/hexagon/translate.c    |  13 +---
 target/hppa/translate.c       |   7 +-
 target/i386/tcg/translate.c   |  15 ++--
 target/m68k/translate.c       |  14 +---
 target/microblaze/translate.c |  14 +---
 target/mips/tcg/translate.c   |  14 ++--
 target/nios2/translate.c      |  13 +---
 target/openrisc/translate.c   |  11 +--
 target/ppc/translate.c        |  13 +---
 target/riscv/translate.c      |  11 +--
 target/rx/translate.c         |   8 +--
 target/s390x/translate.c      |  12 ++--
 target/sh4/translate.c        |  12 ++--
 target/sparc/translate.c      |   9 ++-
 target/tricore/translate.c    |  13 +---
 target/xtensa/translate.c     |  12 ++--
 tcg/tcg-op.c                  |  28 ++++----
 28 files changed, 280 insertions(+), 292 deletions(-)

-- 
2.25.1


Re: [PATCH v2 00/10] tcg: breakpoint reorg
Posted by Mark Cave-Ayland 3 years, 8 months ago
On 12/07/2021 16:39, Richard Henderson wrote:

> This is fixing #404 ("windows xp boot takes much longer...")
> and several other similar reports.
> 
> For v2, all prerequisites and 7 of the patches from v1 with
> reviews are now upstream.
> 
> Mark Cave-Ayland reported success with WinXP with v1, with
> this patch set being even faster than b55f54bc~1.  Which was
> a bit of a surprise, but I'll take it.  It means that it's
> probably not worth making the breakpoint detection scheme
> any more complicated.
> 
> I'd still like some more feedback.  Given this is fixing a
> regression from qemu 5.2 I feel comfortable delaying this
> past soft freeze, but not past hard freeze on the 20th.
> 
> 
> r~
> 
> 
> Richard Henderson (10):
>    accel/tcg: Reduce CF_COUNT_MASK to match TCG_MAX_INSNS
>    accel/tcg: Move curr_cflags into cpu-exec.c
>    accel/tcg: Add CF_NO_GOTO_TB and CF_NO_GOTO_PTR
>    accel/tcg: Drop CF_NO_GOTO_PTR from -d nochain
>    accel/tcg: Handle -singlestep in curr_cflags
>    accel/tcg: Use CF_NO_GOTO_{TB,PTR} in cpu_exec_step_atomic
>    accel/tcg: Move cflags lookup into tb_find
>    accel/tcg: Adjust interface of TranslatorOps.breakpoint_check
>    accel/tcg: Hoist tb_cflags to a local in translator_loop
>    accel/tcg: Encode breakpoint info into tb->cflags
> 
>   include/exec/exec-all.h       |  30 +++++---
>   include/exec/translator.h     |  17 +++--
>   accel/tcg/cpu-exec.c          | 130 ++++++++++++++++++++++++++++------
>   accel/tcg/translate-all.c     |   7 +-
>   accel/tcg/translator.c        |  79 ++++++++++++++-------
>   cpu.c                         |  24 -------
>   target/alpha/translate.c      |  12 +---
>   target/arm/translate-a64.c    |  14 ++--
>   target/arm/translate.c        |  20 +++---
>   target/avr/translate.c        |   6 +-
>   target/cris/translate.c       |  14 ++--
>   target/hexagon/translate.c    |  13 +---
>   target/hppa/translate.c       |   7 +-
>   target/i386/tcg/translate.c   |  15 ++--
>   target/m68k/translate.c       |  14 +---
>   target/microblaze/translate.c |  14 +---
>   target/mips/tcg/translate.c   |  14 ++--
>   target/nios2/translate.c      |  13 +---
>   target/openrisc/translate.c   |  11 +--
>   target/ppc/translate.c        |  13 +---
>   target/riscv/translate.c      |  11 +--
>   target/rx/translate.c         |   8 +--
>   target/s390x/translate.c      |  12 ++--
>   target/sh4/translate.c        |  12 ++--
>   target/sparc/translate.c      |   9 ++-
>   target/tricore/translate.c    |  13 +---
>   target/xtensa/translate.c     |  12 ++--
>   tcg/tcg-op.c                  |  28 ++++----
>   28 files changed, 280 insertions(+), 292 deletions(-)

FWIW I've just tested this v2 patchset on top of git master (bd38ae26ce) and I still 
see the same improvement i.e. WinXP boot to the login screen goes down from 2m 38s to 
25s so:

Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>


ATB,

Mark.

Re: [PATCH v2 00/10] tcg: breakpoint reorg
Posted by Richard Henderson 3 years, 8 months ago
Ping.  A Tested-by is nice, but Reviewed-by is better,
and time is running out, even for bug fixes.

r~

On 7/12/21 8:39 AM, Richard Henderson wrote:
> This is fixing #404 ("windows xp boot takes much longer...")
> and several other similar reports.
> 
> For v2, all prerequisites and 7 of the patches from v1 with
> reviews are now upstream.
> 
> Mark Cave-Ayland reported success with WinXP with v1, with
> this patch set being even faster than b55f54bc~1.  Which was
> a bit of a surprise, but I'll take it.  It means that it's
> probably not worth making the breakpoint detection scheme
> any more complicated.
> 
> I'd still like some more feedback.  Given this is fixing a
> regression from qemu 5.2 I feel comfortable delaying this
> past soft freeze, but not past hard freeze on the 20th.
> 
> 
> r~
> 
> 
> Richard Henderson (10):
>    accel/tcg: Reduce CF_COUNT_MASK to match TCG_MAX_INSNS
>    accel/tcg: Move curr_cflags into cpu-exec.c
>    accel/tcg: Add CF_NO_GOTO_TB and CF_NO_GOTO_PTR
>    accel/tcg: Drop CF_NO_GOTO_PTR from -d nochain
>    accel/tcg: Handle -singlestep in curr_cflags
>    accel/tcg: Use CF_NO_GOTO_{TB,PTR} in cpu_exec_step_atomic
>    accel/tcg: Move cflags lookup into tb_find
>    accel/tcg: Adjust interface of TranslatorOps.breakpoint_check
>    accel/tcg: Hoist tb_cflags to a local in translator_loop
>    accel/tcg: Encode breakpoint info into tb->cflags
> 
>   include/exec/exec-all.h       |  30 +++++---
>   include/exec/translator.h     |  17 +++--
>   accel/tcg/cpu-exec.c          | 130 ++++++++++++++++++++++++++++------
>   accel/tcg/translate-all.c     |   7 +-
>   accel/tcg/translator.c        |  79 ++++++++++++++-------
>   cpu.c                         |  24 -------
>   target/alpha/translate.c      |  12 +---
>   target/arm/translate-a64.c    |  14 ++--
>   target/arm/translate.c        |  20 +++---
>   target/avr/translate.c        |   6 +-
>   target/cris/translate.c       |  14 ++--
>   target/hexagon/translate.c    |  13 +---
>   target/hppa/translate.c       |   7 +-
>   target/i386/tcg/translate.c   |  15 ++--
>   target/m68k/translate.c       |  14 +---
>   target/microblaze/translate.c |  14 +---
>   target/mips/tcg/translate.c   |  14 ++--
>   target/nios2/translate.c      |  13 +---
>   target/openrisc/translate.c   |  11 +--
>   target/ppc/translate.c        |  13 +---
>   target/riscv/translate.c      |  11 +--
>   target/rx/translate.c         |   8 +--
>   target/s390x/translate.c      |  12 ++--
>   target/sh4/translate.c        |  12 ++--
>   target/sparc/translate.c      |   9 ++-
>   target/tricore/translate.c    |  13 +---
>   target/xtensa/translate.c     |  12 ++--
>   tcg/tcg-op.c                  |  28 ++++----
>   28 files changed, 280 insertions(+), 292 deletions(-)
>