From: Greg Kurz <groug@kaod.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Thomas Huth" <thuth@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Cornelia Huck" <cohuck@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
qemu-devel@nongnu.org, qemu-s390x@nongnu.org,
qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
"Claudio Fontana" <cfontana@suse.de>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Laurent Vivier" <laurent@vivier.eu>
Subject: Re: [PATCH v4 03/28] cpu: Introduce cpu_virtio_is_big_endian()
Date: Thu, 4 Mar 2021 08:51:42 +0100 [thread overview]
Message-ID: <20210304085142.34e960af@bahia.lan> (raw)
In-Reply-To: <20210303170743-mutt-send-email-mst@kernel.org>
On Wed, 3 Mar 2021 17:08:32 -0500
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Wed, Mar 03, 2021 at 10:46:43PM +0100, Philippe Mathieu-Daudé wrote:
> > Introduce the cpu_virtio_is_big_endian() generic helper to avoid
> > calling CPUClass internal virtio_is_big_endian() one.
> >
> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
> Using virtio in the name here probably because virtio wants this?
> That doesn't sound like a good naming strategy, name should
> tell us what function does not how it's used.
>
I tend to agree but there was a consensus to deliberately put
virtio in the name when this was first introduced, so that
nobody else ever try to use it, as recorded in the commit log.
commit bf7663c4bd8f8f619d6dbb5780025d92ace250a8
Author: Greg Kurz <groug@kaod.org>
Date: Tue Jun 24 19:33:21 2014 +0200
cpu: introduce CPUClass::virtio_is_big_endian()
If we want to support targets that can change endianness (modern PPC and
ARM for the moment), we need to add a per-CPU class method to be called
from the virtio code. The virtio_ prefix in the name is a hint for people
to avoid misusage (aka. anywhere but from the virtio code).
The default behaviour is to return the compile-time default target
endianness.
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Is there something new on this front ? I'm not convinced that anything
but legacy virtio en POWER (or any other target that can change endian
at runtime) needs this. The next step I see for this is_big_endian()
stuff is deprecation and removal. In the meantime, I think we should
keep the virtio wording to prevent additional users for this.
> > ---
> > include/hw/core/cpu.h | 9 +++++++++
> > hw/core/cpu.c | 8 ++++++--
> > hw/virtio/virtio.c | 4 +---
> > 3 files changed, 16 insertions(+), 5 deletions(-)
> >
> > diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> > index 2d43f78819f..b12028c3c03 100644
> > --- a/include/hw/core/cpu.h
> > +++ b/include/hw/core/cpu.h
> > @@ -602,6 +602,15 @@ hwaddr cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
> > */
> > int cpu_asidx_from_attrs(CPUState *cpu, MemTxAttrs attrs);
> >
> > +/**
> > + * cpu_virtio_is_big_endian:
> > + * @cpu: CPU
> > +
> > + * Returns %true if a CPU which supports runtime configurable endianness
> > + * is currently big-endian.
> > + */
> > +bool cpu_virtio_is_big_endian(CPUState *cpu);
> > +
> > #endif /* CONFIG_USER_ONLY */
> >
> > /**
> > diff --git a/hw/core/cpu.c b/hw/core/cpu.c
> > index 4dce35f832f..daaff56a79e 100644
> > --- a/hw/core/cpu.c
> > +++ b/hw/core/cpu.c
> > @@ -218,8 +218,13 @@ static int cpu_common_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg)
> > return 0;
> > }
> >
> > -static bool cpu_common_virtio_is_big_endian(CPUState *cpu)
> > +bool cpu_virtio_is_big_endian(CPUState *cpu)
> > {
> > + CPUClass *cc = CPU_GET_CLASS(cpu);
> > +
> > + if (cc->virtio_is_big_endian) {
> > + return cc->virtio_is_big_endian(cpu);
> > + }
> > return target_words_bigendian();
> > }
> >
> > @@ -438,7 +443,6 @@ static void cpu_class_init(ObjectClass *klass, void *data)
> > k->write_elf64_note = cpu_common_write_elf64_note;
> > k->gdb_read_register = cpu_common_gdb_read_register;
> > k->gdb_write_register = cpu_common_gdb_write_register;
> > - k->virtio_is_big_endian = cpu_common_virtio_is_big_endian;
> > set_bit(DEVICE_CATEGORY_CPU, dc->categories);
> > dc->realize = cpu_common_realizefn;
> > dc->unrealize = cpu_common_unrealizefn;
> > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> > index 1fd1917ca0f..fe6a4be99e4 100644
> > --- a/hw/virtio/virtio.c
> > +++ b/hw/virtio/virtio.c
> > @@ -1973,9 +1973,7 @@ static enum virtio_device_endian virtio_default_endian(void)
> >
> > static enum virtio_device_endian virtio_current_cpu_endian(void)
> > {
> > - CPUClass *cc = CPU_GET_CLASS(current_cpu);
> > -
> > - if (cc->virtio_is_big_endian(current_cpu)) {
> > + if (cpu_virtio_is_big_endian(current_cpu)) {
> > return VIRTIO_DEVICE_ENDIAN_BIG;
> > } else {
> > return VIRTIO_DEVICE_ENDIAN_LITTLE;
> > --
> > 2.26.2
>
>
next prev parent reply other threads:[~2021-03-04 7:53 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-03 21:46 [PATCH v4 00/28] cpu: Introduce SysemuCPUOps structure, remove watchpoints from usermode Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 01/28] target: Set CPUClass::vmsd instead of DeviceClass::vmsd Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 02/28] cpu: Un-inline cpu_get_phys_page_debug and cpu_asidx_from_attrs Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 03/28] cpu: Introduce cpu_virtio_is_big_endian() Philippe Mathieu-Daudé
2021-03-03 22:08 ` Michael S. Tsirkin
2021-03-03 22:15 ` Michael S. Tsirkin
2021-03-03 22:18 ` Richard Henderson
2021-03-03 22:24 ` Richard Henderson
2021-03-04 7:51 ` Greg Kurz [this message]
2021-04-22 10:33 ` Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 04/28] cpu: Directly use cpu_write_elf*() fallback handlers in place Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 05/28] cpu: Directly use get_paging_enabled() " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 06/28] cpu: Directly use get_memory_mapping() " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 07/28] cpu: Introduce SysemuCPUOps structure Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 08/28] cpu: Move CPUClass::vmsd to SysemuCPUOps Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 09/28] cpu: Move CPUClass::virtio_is_big_endian " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 10/28] cpu: Move CPUClass::get_crash_info " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 11/28] cpu: Move CPUClass::write_elf* " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 12/28] cpu: Move CPUClass::asidx_from_attrs " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 13/28] cpu: Move CPUClass::get_phys_page_debug " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 14/28] cpu: Move CPUClass::get_memory_mapping " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 15/28] cpu: Move CPUClass::get_paging_enabled " Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 16/28] cpu: Restrict "hw/core/sysemu-cpu-ops.h" to target/cpu.c Philippe Mathieu-Daudé
2021-03-03 22:27 ` Taylor Simpson
2021-03-03 21:46 ` [PATCH v4 17/28] linux-user: Remove dead code Philippe Mathieu-Daudé
2021-05-15 19:25 ` Laurent Vivier
2021-03-03 21:46 ` [PATCH v4 18/28] gdbstub: Remove watchpoint dead code in gdbserver_fork() Philippe Mathieu-Daudé
2021-03-03 21:46 ` [PATCH v4 19/28] target/arm/internals: Fix code style for checkpatch.pl Philippe Mathieu-Daudé
2021-03-03 21:47 ` [PATCH v4 20/28] target/arm: Move code blocks around Philippe Mathieu-Daudé
2021-03-03 21:47 ` [PATCH v4 21/28] target/arm: Refactor some function bodies Philippe Mathieu-Daudé
2021-03-03 21:47 ` [PATCH v4 22/28] target/arm: Restrict watchpoint code to system emulation Philippe Mathieu-Daudé
2021-03-03 22:40 ` Richard Henderson
2021-03-03 21:47 ` [PATCH v4 23/28] target/i386: " Philippe Mathieu-Daudé
2021-03-03 21:47 ` [PATCH v4 24/28] target/xtensa: " Philippe Mathieu-Daudé
2021-03-03 21:47 ` [PATCH v4 25/28] accel/tcg/cpu-exec: " Philippe Mathieu-Daudé
2021-03-03 21:47 ` [PATCH v4 26/28] cpu: Remove watchpoint stubs for user emulation Philippe Mathieu-Daudé
2021-03-03 23:28 ` Richard Henderson
2021-03-03 21:47 ` [PATCH v4 27/28] cpu: Fix code style for checkpatch.pl Philippe Mathieu-Daudé
2021-03-03 21:47 ` [PATCH v4 28/28] cpu: Move sysemu specific declarations to 'sysemu-cpu-ops.h' Philippe Mathieu-Daudé
2021-03-04 1:52 ` [PATCH v4 00/28] cpu: Introduce SysemuCPUOps structure, remove watchpoints from usermode Richard Henderson
2021-04-22 10:39 ` Philippe Mathieu-Daudé
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=20210304085142.34e960af@bahia.lan \
--to=groug@kaod.org \
--cc=alex.bennee@linaro.org \
--cc=cfontana@suse.de \
--cc=cohuck@redhat.com \
--cc=ehabkost@redhat.com \
--cc=f4bug@amsat.org \
--cc=laurent@vivier.eu \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.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).