From: joserz@linux.vnet.ibm.com
To: Paul Mackerras <paulus@ozlabs.org>
Cc: linuxppc-dev@lists.ozlabs.org, agraf@suse.com
Subject: Re: [PATCH RFC] powerpc: Implements MMIO emulation for lvx/stvx instructions
Date: Wed, 30 Aug 2017 20:53:19 -0300 [thread overview]
Message-ID: <20170830235319.GA12553@pacoca> (raw)
In-Reply-To: <20170830094517.GA12592@fergus.ozlabs.ibm.com>
On Wed, Aug 30, 2017 at 07:45:17PM +1000, Paul Mackerras wrote:
> On Tue, Aug 29, 2017 at 07:18:01PM -0300, Jose Ricardo Ziviani wrote:
> > Hello!
> >
> > This patch implements MMIO emulation for two instructions: lvx and stvx. I started to implement other instructions but I'd like to have this reviewed beforehand because this is my first patch here and I'll certainly have some rework/fixes :-).
> >
> > Note: stvx is only storing 8 bytes, for some reason the code "vcpu->arch.paddr_accessed += run->mmio.len;", which adds the 8-byte offset after the first write is not making any difference (interesting that it works for load operations). I'm still investigating it but any idea about it will be appreciated.
>
> The run structure is mmapped by userspace (i.e. QEMU) and can be
> written by userspace between the first and the second exits to
> userspace (you have to do two exits to userspace because you can only
> transfer 8 bytes on each exit). It's possible that userspace might be
> clearing run->mmio.len. In general it's better not to rely on
> anything in *run (except of course the mmio_data for a MMIO read) when
> we come in from userspace to the kernel.
>
> Paul.
>
Hello Paul,
My bad, actually it works. I was mmap'ping an address that doesn't allow 16-byte writing access. After mmap'ping a higher address (of the same device) I was able to perform 16-byte read/write.
== before stvx ==
(gdb) info registers vr0
vr0 {uint128 = 0x000000001234567800000000abcdef09, ...}
(gdb) info registers r9
r9 0x3fffb7c90010
(gdb) x /4wx 0x3fffb7c90010
0x3fffb7c90010: 0x00000000 0x00000000 0x00000000 0x00000000
(gdb) info registers r28
r28 0x0
stvx v0,r28,r9
== after stvx ==
(gdb) x /4wx 0x3fffb7c90010
0x3fffb7c90010: 0x12345678 0x00000000 0xabcdef09 0x00000000
== before lvx ==
(gdb) info registers vr10
vr10 {uint128 = 0x00000000000000000000000000000000,...}
lvx v10,r28,r9
== after lvx ==
(gdb) info registers vr10
vr10 {uint128 = 0x000000001234567800000000abcdef09,...}
If you think it's ok I'll submit this patch without the RFC.
Thank you very much!
Ziviani
prev parent reply other threads:[~2017-08-30 23:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-29 22:18 [PATCH RFC] powerpc: Implements MMIO emulation for lvx/stvx instructions Jose Ricardo Ziviani
2017-08-29 22:18 ` [PATCH RFC] KVM: PPC: Book3S: Add MMIO emulation for VMX instructions Jose Ricardo Ziviani
2017-09-01 10:38 ` Paul Mackerras
2017-08-30 9:45 ` [PATCH RFC] powerpc: Implements MMIO emulation for lvx/stvx instructions Paul Mackerras
2017-08-30 23:53 ` joserz [this message]
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=20170830235319.GA12553@pacoca \
--to=joserz@linux.vnet.ibm.com \
--cc=agraf@suse.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@ozlabs.org \
/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).