qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [RFC v3 0/4] QEMU cpus.c refactoring
@ 2020-05-25 14:54 Claudio Fontana
  2020-05-25 14:54 ` [RFC v3 1/4] softmmu: move softmmu only files from root Claudio Fontana
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: Claudio Fontana @ 2020-05-25 14:54 UTC (permalink / raw)
  To: Paolo Bonzini, Thomas Huth, Alex Bennée, Peter Maydell,
	Philippe Mathieu-Daudé
  Cc: Laurent Vivier, Eduardo Habkost, Marcelo Tosatti, qemu-devel,
	Roman Bolshakov, Colin Xu, Wenchao Wang, haxm-team,
	Sunil Muthuswamy, Richard Henderson, Claudio Fontana

Motivation and higher level steps:

https://lists.gnu.org/archive/html/qemu-devel/2020-05/msg04628.html

--------

v2 -> v3:

* turned into a 4 patch series, adding a first patch moving
  softmmu code currently in top_srcdir to softmmu/

* cpu-throttle: moved to softmmu/

* cpu-timers, icount:

  - moved to softmmu/

  - fixed assumption of qtest_enabled() => icount_enabled()
  causing the failure of check-qtest-arm goal, in test-arm-mptimer.c

  Fix is in hw/core/ptimer.c,

  where the artificial timeout rate limit should not be applied
  under qtest_enabled(), in a similar way to how it is not applied
  for icount_enabled().

* CpuAccelInterface: no change.


--------


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

*** BLURB HERE ***

Claudio Fontana (4):
  softmmu: move softmmu only files from root
  cpu-throttle: new module, extracted from cpus.c
  cpu-timers, icount: new modules
  cpus: extract out accel-specific code to each accel

 MAINTAINERS                                  |   14 +-
 Makefile.target                              |    7 +-
 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                                |   88 +-
 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 +-
 cpus.c                                       | 2290 --------------------------
 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                         |   22 +-
 include/sysemu/cpu-throttle.h                |   50 +
 include/sysemu/cpu-timers.h                  |   72 +
 include/sysemu/cpus.h                        |   44 +-
 include/sysemu/hvf.h                         |    1 -
 include/sysemu/hw_accel.h                    |   57 +-
 include/sysemu/kvm.h                         |    2 +-
 include/sysemu/qtest.h                       |    2 +
 include/sysemu/replay.h                      |    4 +-
 migration/migration.c                        |    1 +
 migration/ram.c                              |    1 +
 replay/replay.c                              |    6 +-
 softmmu/Makefile.objs                        |   13 +
 arch_init.c => softmmu/arch_init.c           |    0
 balloon.c => softmmu/balloon.c               |    0
 softmmu/cpu-throttle.c                       |  122 ++
 softmmu/cpu-timers.c                         |  267 +++
 softmmu/cpus.c                               |  741 +++++++++
 softmmu/icount.c                             |  496 ++++++
 ioport.c => softmmu/ioport.c                 |    0
 memory.c => softmmu/memory.c                 |    0
 memory_mapping.c => softmmu/memory_mapping.c |    0
 qtest.c => softmmu/qtest.c                   |   34 +-
 softmmu/timers-state.h                       |   45 +
 softmmu/vl.c                                 |    8 +-
 stubs/Makefile.objs                          |    4 +-
 stubs/clock-warp.c                           |    4 +-
 stubs/cpu-get-clock.c                        |    3 +-
 stubs/cpu-get-icount.c                       |   21 -
 stubs/cpu-synchronize-state.c                |   15 +
 stubs/icount.c                               |   22 +
 stubs/qemu-timer-notify-cb.c                 |    8 +
 stubs/qtest.c                                |    5 +
 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         |   92 ++
 target/i386/hvf/hvf-cpus-interface.h         |    8 +
 target/i386/hvf/hvf.c                        |    5 +-
 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                    |    7 +-
 tests/test-timed-average.c                   |    2 +-
 util/main-loop.c                             |    4 +-
 util/qemu-timer.c                            |   12 +-
 78 files changed, 3136 insertions(+), 2517 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
 delete mode 100644 cpus.c
 create mode 100644 include/sysemu/cpu-throttle.h
 create mode 100644 include/sysemu/cpu-timers.h
 rename arch_init.c => softmmu/arch_init.c (100%)
 rename balloon.c => softmmu/balloon.c (100%)
 create mode 100644 softmmu/cpu-throttle.c
 create mode 100644 softmmu/cpu-timers.c
 create mode 100644 softmmu/cpus.c
 create mode 100644 softmmu/icount.c
 rename ioport.c => softmmu/ioport.c (100%)
 rename memory.c => softmmu/memory.c (100%)
 rename memory_mapping.c => softmmu/memory_mapping.c (100%)
 rename qtest.c => softmmu/qtest.c (95%)
 create mode 100644 softmmu/timers-state.h
 delete mode 100644 stubs/cpu-get-icount.c
 create mode 100644 stubs/cpu-synchronize-state.c
 create mode 100644 stubs/icount.c
 create mode 100644 stubs/qemu-timer-notify-cb.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



^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2020-05-27 13:43 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-25 14:54 [RFC v3 0/4] QEMU cpus.c refactoring Claudio Fontana
2020-05-25 14:54 ` [RFC v3 1/4] softmmu: move softmmu only files from root Claudio Fontana
2020-05-25 15:12   ` Philippe Mathieu-Daudé
2020-05-25 15:37     ` Claudio Fontana
2020-05-25 17:32       ` Philippe Mathieu-Daudé
2020-05-25 14:54 ` [RFC v3 2/4] cpu-throttle: new module, extracted from cpus.c Claudio Fontana
2020-05-25 15:14   ` Philippe Mathieu-Daudé
2020-05-25 15:42     ` Claudio Fontana
2020-05-25 14:54 ` [RFC v3 3/4] cpu-timers, icount: new modules Claudio Fontana
2020-05-25 15:16   ` Philippe Mathieu-Daudé
2020-05-25 15:43     ` Claudio Fontana
2020-05-25 14:54 ` [RFC v3 4/4] cpus: extract out accel-specific code to each accel Claudio Fontana
2020-05-25 15:22   ` Philippe Mathieu-Daudé
2020-05-25 15:37     ` Claudio Fontana
2020-05-26 19:16   ` Roman Bolshakov
2020-05-27 13:42     ` Claudio Fontana
2020-05-25 22:58 ` [RFC v3 0/4] QEMU cpus.c refactoring no-reply
2020-05-26 12:57   ` Claudio Fontana

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).