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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox