From: "Michael S. Tsirkin" <mst@redhat.com>
To: Gavin Shan <gshan@redhat.com>
Cc: Richard Henderson <richard.henderson@linaro.org>,
Peter Maydell <peter.maydell@linaro.org>,
qemu-arm@nongnu.org, qemu-devel@nongnu.org, peterx@redhat.com,
alex@shazbot.org, berrange@redhat.com, philmd@oss.qualcomm.com,
philmd@mailo.com, david@kernel.org, clg@redhat.com,
pbonzini@redhat.com, phrdina@redhat.com, jugraham@redhat.com,
liugang24219@sangfor.com.cn, dinghui@sangfor.com.cn,
shan.gavin@gmail.com
Subject: Re: [PATCH v2 1/2] system/memory: Use qemu_ram_{copy, move}() in ram device region accessors
Date: Tue, 16 Jun 2026 01:25:55 -0400 [thread overview]
Message-ID: <20260616011744-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <081a9e18-6504-4a13-a3c6-47e94be63f7c@redhat.com>
On Tue, Jun 16, 2026 at 03:07:27PM +1000, Gavin Shan wrote:
> On 6/16/26 2:59 PM, Michael S. Tsirkin wrote:
> > On Mon, Jun 15, 2026 at 09:48:00PM -0700, Richard Henderson wrote:
> > > On 6/15/26 21:23, Michael S. Tsirkin wrote:
> > > > B. Also on x86, I do not see why we should not use memcpy for large
> > > > accesses if we can. Better perf.
> > >
> > > We have an example where memcpy writes to the same location 3 times.
> > > This is not appropriate for any host.
> > >
> > >
> > > r~
> >
> > Ah, checked libc and sure enough, it does it. E.g. it uses 2 overlapping SSE
> > stores to do a 17 byte write. Not sure how we get 3 but whatevs.
> >
> >
> > But just to clarify, I am talking about DMA accesses, that are not
> > initiated by the VCPU. I am not so sure we care about multiple stores
> > in this instance? Do we? We do care about speed, for sure.
> >
>
> In current implementation, qemu_ram_copy/move are differentiated on x86
> and other architectures. Do we need to unify the implementations (qemu_ram_copy/move)
> on all architectures to avoid using memcpy() and memmove()?
I am not sure for anything outside 1,2,4,8 bytes the issues are not
theoretical.
I'd be care
> Maybe it's time for me to post (v3) for a new round of discussions.
>
> Thanks,
> Gavin
maybe start a toppost with the list of issues and solutions first of
all.
Let's add more to the list:
10. on x86 memcpy will sometimes do multiple overlapping stores when
size is not a power of 2. for example, a 15 byte write is done with
2 8-byte stores. This is theoretically an issue
if guest does something super clever with ordering,
but does not seem to be in practice.
10. on non-x86 memcpy will do multiple overlapping stores even
for single byte writes. E.g. it does it to avoid extra branches.
This is causing issues in practice.
--
MST
next prev parent reply other threads:[~2026-06-16 5:26 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-15 10:01 [PATCH v2 0/2] system/memory: Make ram device region directly accessible Gavin Shan
2026-06-15 10:01 ` [PATCH v2 1/2] system/memory: Use qemu_ram_{copy, move}() in ram device region accessors Gavin Shan
2026-06-15 10:57 ` Peter Maydell
2026-06-15 14:48 ` Michael S. Tsirkin
2026-06-15 14:56 ` Michael S. Tsirkin
2026-06-15 15:12 ` Peter Maydell
2026-06-15 19:24 ` Gavin Shan
2026-06-15 19:42 ` Michael S. Tsirkin
2026-06-15 21:31 ` Gavin Shan
2026-06-16 4:22 ` Gavin Shan
2026-06-16 4:36 ` Michael S. Tsirkin
2026-06-16 4:23 ` Michael S. Tsirkin
2026-06-16 4:48 ` Richard Henderson
2026-06-16 4:49 ` Michael S. Tsirkin
2026-06-16 4:55 ` Gavin Shan
2026-06-16 5:17 ` Michael S. Tsirkin
2026-06-16 5:21 ` Gavin Shan
2026-06-16 5:32 ` Michael S. Tsirkin
2026-06-16 4:59 ` Michael S. Tsirkin
2026-06-16 5:07 ` Gavin Shan
2026-06-16 5:25 ` Michael S. Tsirkin [this message]
2026-06-15 19:52 ` Michael S. Tsirkin
2026-06-15 15:17 ` Richard Henderson
2026-06-15 16:33 ` Gavin Shan
2026-06-15 17:03 ` Richard Henderson
2026-06-15 18:09 ` Gavin Shan
2026-06-15 18:33 ` Richard Henderson
2026-06-15 19:40 ` Michael S. Tsirkin
2026-06-16 4:18 ` Gavin Shan
2026-06-15 16:35 ` Michael S. Tsirkin
2026-06-15 16:37 ` Michael S. Tsirkin
2026-06-15 17:05 ` Richard Henderson
2026-06-15 10:01 ` [PATCH v2 2/2] system/memory: Make ram device region directly accessible Gavin Shan
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=20260616011744-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=alex@shazbot.org \
--cc=berrange@redhat.com \
--cc=clg@redhat.com \
--cc=david@kernel.org \
--cc=dinghui@sangfor.com.cn \
--cc=gshan@redhat.com \
--cc=jugraham@redhat.com \
--cc=liugang24219@sangfor.com.cn \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=philmd@mailo.com \
--cc=philmd@oss.qualcomm.com \
--cc=phrdina@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=shan.gavin@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.