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 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.