[for-5.0 PATCH 0/3] cpu: Clarify overloading of reset QOM methods

Greg Kurz posted 3 patches 4 years, 4 months ago
Test asan passed
Test checkpatch passed
Test FreeBSD passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/157565782864.3897844.627720481210693346.stgit@bahia.lan
Maintainers: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Bastian Koppelmann <kbastian@mail.uni-paderborn.de>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Sagar Karandikar <sagark@eecs.berkeley.edu>, Artyom Tarasenko <atar4qemu@gmail.com>, Cornelia Huck <cohuck@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>, Palmer Dabbelt <palmer@dabbelt.com>, Stafford Horne <shorne@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>, Aurelien Jarno <aurelien@aurel32.net>, Marek Vasut <marex@denx.de>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Chris Wulff <crwulff@gmail.com>, Richard Henderson <rth@twiddle.net>, Alistair Francis <Alistair.Francis@wdc.com>, Laurent Vivier <laurent@vivier.eu>, Anthony Green <green@moxielogic.com>, David Gibson <david@gibson.dropbear.id.au>, David Hildenbrand <david@redhat.com>, Aleksandar Markovic <amarkovic@wavecomp.com>, Michael Walle <michael@walle.cc>, Max Filippov <jcmvbkbc@gmail.com>, Peter Maydell <peter.maydell@linaro.org>
There is a newer version of this series
hw/core/cpu.c                   |    8 ++++++++
include/hw/core/cpu.h           |    8 +++++++-
target/alpha/cpu-qom.h          |    2 +-
target/arm/cpu-qom.h            |    2 +-
target/arm/cpu.c                |    3 +--
target/cris/cpu-qom.h           |    2 +-
target/cris/cpu.c               |    3 +--
target/hppa/cpu-qom.h           |    2 +-
target/i386/cpu-qom.h           |    2 +-
target/i386/cpu.c               |    3 +--
target/lm32/cpu-qom.h           |    2 +-
target/lm32/cpu.c               |    3 +--
target/m68k/cpu-qom.h           |    2 +-
target/m68k/cpu.c               |    3 +--
target/microblaze/cpu-qom.h     |    2 +-
target/microblaze/cpu.c         |    3 +--
target/mips/cpu-qom.h           |    2 +-
target/mips/cpu.c               |    3 +--
target/moxie/cpu.c              |    3 +--
target/moxie/cpu.h              |    2 +-
target/nios2/cpu.c              |    3 +--
target/nios2/cpu.h              |    2 +-
target/openrisc/cpu.c           |    3 +--
target/openrisc/cpu.h           |    2 +-
target/ppc/cpu-qom.h            |    2 +-
target/ppc/translate_init.inc.c |    3 +--
target/riscv/cpu.c              |    3 +--
target/riscv/cpu.h              |    2 +-
target/s390x/cpu-qom.h          |    2 +-
target/s390x/cpu.c              |    3 +--
target/sh4/cpu-qom.h            |    2 +-
target/sh4/cpu.c                |    3 +--
target/sparc/cpu-qom.h          |    2 +-
target/sparc/cpu.c              |    3 +--
target/tilegx/cpu.c             |    3 +--
target/tilegx/cpu.h             |    2 +-
target/tricore/cpu-qom.h        |    2 +-
target/tricore/cpu.c            |    3 +--
target/xtensa/cpu-qom.h         |    2 +-
target/xtensa/cpu.c             |    3 +--
40 files changed, 53 insertions(+), 57 deletions(-)
[for-5.0 PATCH 0/3] cpu: Clarify overloading of reset QOM methods
Posted by Greg Kurz 4 years, 4 months ago
Each cpu subclass overloads the reset method of its parent class with
its own. But since it needs to call the parent method as well, it keeps
a parent_reset pointer to do so. This causes the same not very explicit
boiler plate to be duplicated all around the place:

    pcc->parent_reset = cc->reset;
    cc->reset = ppc_cpu_reset;

A similar concern was addressed some time back by Philippe Mathieu-Daudé
in qdev, with the addition of device_class_set_parent_reset() and friends:

https://git.qemu.org/?p=qemu.git;a=commit;h=46795cf2e2f6
https://git.qemu.org/?p=qemu.git;a=commit;h=bf853881690d

Follow the same approach with cpus.

--
Greg

---

Greg Kurz (3):
      cpu: Introduce CPUReset callback typedef
      cpu: Introduce cpu_class_set_parent_reset()
      cpu: Use cpu_class_set_parent_reset()


 hw/core/cpu.c                   |    8 ++++++++
 include/hw/core/cpu.h           |    8 +++++++-
 target/alpha/cpu-qom.h          |    2 +-
 target/arm/cpu-qom.h            |    2 +-
 target/arm/cpu.c                |    3 +--
 target/cris/cpu-qom.h           |    2 +-
 target/cris/cpu.c               |    3 +--
 target/hppa/cpu-qom.h           |    2 +-
 target/i386/cpu-qom.h           |    2 +-
 target/i386/cpu.c               |    3 +--
 target/lm32/cpu-qom.h           |    2 +-
 target/lm32/cpu.c               |    3 +--
 target/m68k/cpu-qom.h           |    2 +-
 target/m68k/cpu.c               |    3 +--
 target/microblaze/cpu-qom.h     |    2 +-
 target/microblaze/cpu.c         |    3 +--
 target/mips/cpu-qom.h           |    2 +-
 target/mips/cpu.c               |    3 +--
 target/moxie/cpu.c              |    3 +--
 target/moxie/cpu.h              |    2 +-
 target/nios2/cpu.c              |    3 +--
 target/nios2/cpu.h              |    2 +-
 target/openrisc/cpu.c           |    3 +--
 target/openrisc/cpu.h           |    2 +-
 target/ppc/cpu-qom.h            |    2 +-
 target/ppc/translate_init.inc.c |    3 +--
 target/riscv/cpu.c              |    3 +--
 target/riscv/cpu.h              |    2 +-
 target/s390x/cpu-qom.h          |    2 +-
 target/s390x/cpu.c              |    3 +--
 target/sh4/cpu-qom.h            |    2 +-
 target/sh4/cpu.c                |    3 +--
 target/sparc/cpu-qom.h          |    2 +-
 target/sparc/cpu.c              |    3 +--
 target/tilegx/cpu.c             |    3 +--
 target/tilegx/cpu.h             |    2 +-
 target/tricore/cpu-qom.h        |    2 +-
 target/tricore/cpu.c            |    3 +--
 target/xtensa/cpu-qom.h         |    2 +-
 target/xtensa/cpu.c             |    3 +--
 40 files changed, 53 insertions(+), 57 deletions(-)