On Fri, Jul 17, 2026 at 02:49:53PM +0100, Peter Maydell wrote: > On Fri, 17 Jul 2026 at 14:24, Michael S. Tsirkin <[email protected]> wrote: > > > > On Thu, Jul 09, 2026 at 07:52:12PM +1000, Gavin Shan wrote: > > > Hi Michael and Peter, > > > > > > > Could you help to confirm if the conclusion is to have unified > > > qemu_ram_{copy, move}() > > > for all architectures? In qemu_ram_{copy, move}(), the fixed sized > > > accesses like > > > 1/2/4/8 bytes are handled by __builtin_{memcpy, memmove}() and fall back > > > to > > > memcpy/memmove() for other sized accesses. It's basically what was > > > proposed by > > > Michael :-) > > > > No. __builtin_ and memcpy/memmove are same on modern linuxes. > > > > I'd say as a 1st step, on x86 hosts we can do a fixed size > > memmove for 1/2/4/8, on other hosts > > *aligned* 1/2/4/8 bytes can do > > __atomic_store ... __ATOMIC_RELAXED > > and the rest can hobble along on memmove > > and hope for the best. > > I don't think we should be doing something that's x86-host specific, > as I've mentioned previously. > > -- PMM
Shrug. Of course we already have arch specific code in asm. But we can make the unaligned 1/2/4/8 for x86 host a separate optimization on top. They are unlikely to be common. -- MST
