From: Claudio Fontana <cfontana@suse.de>
To: "Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>,
Thomas Huth <thuth@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
qemu-devel@nongnu.org, Roman Bolshakov <r.bolshakov@yadro.com>,
Wenchao Wang <wenchao.wang@intel.com>,
Colin Xu <colin.xu@intel.com>, Claudio Fontana <cfontana@suse.de>,
haxm-team@intel.com, Sunil Muthuswamy <sunilmut@microsoft.com>,
Richard Henderson <rth@twiddle.net>
Subject: [RFC v2 0/3] QEMU cpus.c refactoring
Date: Fri, 22 May 2020 19:10:10 +0200 [thread overview]
Message-ID: <20200522171013.27597-1-cfontana@suse.de> (raw)
Motivation and higher level steps:
https://lists.gnu.org/archive/html/qemu-devel/2020-05/msg04628.html
v1 -> v2:
* 1/3 (cpu-throttle): provide a description in the commit message
* 2/3 (cpu-timers, icount): in this v2 separate icount from cpu-timers,
as icount is actually TCG-specific. Only build it under CONFIG_TCG.
To do this, qtest had to be detached from icount. To this end, a
trivial global counter for qtest has been introduced.
* 3/3 (CpuAccelInterface): provided a description.
This is point 8) in that plan. The idea is to extract the unrelated parts
in cpus, and register interfaces from each single accelerator to the main
cpus module (cpus.c).
While doing this RFC, I noticed some assumptions about Windows being
either TCG or HAX (not considering WHPX) that might need to be revisited.
I added a comment there.
The thing builds successfully based on Linux cross-compilations for
windows/hax, windows/whpx, and I got a good build on Darwin/hvf.
Tests run successully for tcg and kvm configurations, but did not test on
windows or darwin.
Welcome your feedback and help on this,
Claudio
Claudio Fontana (3):
cpu-throttle: new module, extracted from cpus.c
cpu-timers: new module extracted from cpus.c
cpus: implement cpus interfaces for per-accelerator threads
MAINTAINERS | 3 +
Makefile.target | 9 +-
accel/kvm/Makefile.objs | 2 +
accel/kvm/kvm-all.c | 15 +-
accel/kvm/kvm-cpus-interface.c | 94 ++
accel/kvm/kvm-cpus-interface.h | 8 +
accel/qtest.c | 85 +-
accel/stubs/kvm-stub.c | 3 +-
accel/tcg/Makefile.objs | 1 +
accel/tcg/cpu-exec.c | 43 +-
accel/tcg/tcg-all.c | 19 +-
accel/tcg/tcg-cpus-interface.c | 523 +++++++++
accel/tcg/tcg-cpus-interface.h | 8 +
accel/tcg/translate-all.c | 3 +-
cpu-throttle.c | 122 ++
cpu-timers.c | 776 +++++++++++++
cpus.c | 2015 ++++------------------------------
docs/replay.txt | 6 +-
exec.c | 4 -
hw/core/cpu.c | 1 +
hw/core/ptimer.c | 6 +-
hw/i386/x86.c | 1 +
include/exec/cpu-all.h | 4 +
include/exec/exec-all.h | 4 +-
include/hw/core/cpu.h | 37 -
include/qemu/main-loop.h | 5 +
include/qemu/timer.h | 20 -
include/sysemu/cpu-throttle.h | 50 +
include/sysemu/cpu-timers.h | 73 ++
include/sysemu/cpus.h | 56 +-
include/sysemu/hw_accel.h | 57 +-
include/sysemu/kvm.h | 2 +-
include/sysemu/replay.h | 4 +-
migration/migration.c | 1 +
migration/ram.c | 1 +
qtest.c | 2 +-
replay/replay.c | 6 +-
softmmu/vl.c | 8 +-
stubs/Makefile.objs | 1 +
stubs/clock-warp.c | 4 +-
stubs/cpu-get-clock.c | 2 +-
stubs/cpu-get-icount.c | 14 +-
stubs/cpu-synchronize-state.c | 15 +
target/alpha/translate.c | 3 +-
target/arm/helper.c | 7 +-
target/i386/Makefile.objs | 7 +-
target/i386/hax-all.c | 6 +-
target/i386/hax-cpus-interface.c | 85 ++
target/i386/hax-cpus-interface.h | 8 +
target/i386/hax-i386.h | 2 +
target/i386/hax-posix.c | 12 +
target/i386/hax-windows.c | 20 +
target/i386/hvf/Makefile.objs | 2 +-
target/i386/hvf/hvf-cpus-interface.c | 83 ++
target/i386/hvf/hvf-cpus-interface.h | 8 +
target/i386/hvf/hvf.c | 5 +-
target/i386/kvm.c | 4 +-
target/i386/whpx-all.c | 3 +
target/i386/whpx-cpus-interface.c | 96 ++
target/i386/whpx-cpus-interface.h | 8 +
target/riscv/csr.c | 8 +-
tests/ptimer-test-stubs.c | 6 +
tests/test-timed-average.c | 2 +-
util/main-loop.c | 4 +-
util/qemu-timer.c | 9 +-
65 files changed, 2524 insertions(+), 1977 deletions(-)
create mode 100644 accel/kvm/kvm-cpus-interface.c
create mode 100644 accel/kvm/kvm-cpus-interface.h
create mode 100644 accel/tcg/tcg-cpus-interface.c
create mode 100644 accel/tcg/tcg-cpus-interface.h
create mode 100644 cpu-throttle.c
create mode 100644 cpu-timers.c
create mode 100644 include/sysemu/cpu-throttle.h
create mode 100644 include/sysemu/cpu-timers.h
create mode 100644 stubs/cpu-synchronize-state.c
create mode 100644 target/i386/hax-cpus-interface.c
create mode 100644 target/i386/hax-cpus-interface.h
create mode 100644 target/i386/hvf/hvf-cpus-interface.c
create mode 100644 target/i386/hvf/hvf-cpus-interface.h
create mode 100644 target/i386/whpx-cpus-interface.c
create mode 100644 target/i386/whpx-cpus-interface.h
--
2.16.4
next reply other threads:[~2020-05-22 17:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-22 17:10 Claudio Fontana [this message]
2020-05-22 17:10 ` [RFC v2 1/3] cpu-throttle: new module, extracted from cpus.c Claudio Fontana
2020-05-25 8:44 ` Thomas Huth
2020-05-25 9:45 ` Claudio Fontana
2020-05-22 17:10 ` [RFC v2 2/3] cpu-timers, icount: new modules Claudio Fontana
2020-05-24 11:32 ` Claudio Fontana
2020-05-22 17:10 ` [RFC v2 3/3] cpus: extract out accel-specific code to each accel Claudio Fontana
2020-05-24 15:07 ` Claudio Fontana
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200522171013.27597-1-cfontana@suse.de \
--to=cfontana@suse.de \
--cc=alex.bennee@linaro.org \
--cc=colin.xu@intel.com \
--cc=ehabkost@redhat.com \
--cc=haxm-team@intel.com \
--cc=lvivier@redhat.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=r.bolshakov@yadro.com \
--cc=rth@twiddle.net \
--cc=sunilmut@microsoft.com \
--cc=thuth@redhat.com \
--cc=wenchao.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).