From: Aurelien Jarno <aurelien@aurel32.net>
To: Richard Henderson <rth@twiddle.net>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
qemu-devel@nongnu.org, "Alexander Graf" <agraf@suse.de>,
"Yongbok Kim" <yongbok.kim@imgtec.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Leon Alrae" <leon.alrae@imgtec.com>,
"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH RFC 3/5] softmmu: add a tlb_vaddr_to_host_fill function
Date: Wed, 3 Jun 2015 17:11:13 +0200 [thread overview]
Message-ID: <20150603151113.GA10311@aurel32.net> (raw)
In-Reply-To: <556E17F6.2060306@twiddle.net>
On 2015-06-02 13:54, Richard Henderson wrote:
> On 06/02/2015 04:26 AM, Aurelien Jarno wrote:
> > int index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
> > - CPUTLBEntry *tlbentry = &env->tlb_table[mmu_idx][index];
> > + CPUTLBEntry *tlbentry;
> > target_ulong tlb_addr;
> > uintptr_t haddr;
> >
> > +again:
> > + tlbentry = &env->tlb_table[mmu_idx][index];
> > +
> > switch (access_type) {
> > - case 0:
> > + case MMU_DATA_LOAD:
> > tlb_addr = tlbentry->addr_read;
> > break;
> > - case 1:
> > + case MMU_DATA_STORE:
> > tlb_addr = tlbentry->addr_write;
> > break;
> > - case 2:
> > + case MMU_INST_FETCH:
> > tlb_addr = tlbentry->addr_code;
> > break;
> > default:
> > @@ -347,10 +350,14 @@ static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr,
> > if ((addr & TARGET_PAGE_MASK)
> > != (tlb_addr & (TARGET_PAGE_MASK | TLB_INVALID_MASK))) {
> > /* TLB entry is for a different page */
> > + if (fill) {
> > + tlb_fill(ENV_GET_CPU(env), addr, access_type, mmu_idx, retaddr);
> > + goto again;
> > + }
> > return NULL;
> > }
>
> To properly perform a fill, you also ought to check the victim cache.
> There's a macro to do that in softmmu_template.h, which is why I
> placed probe_write there. It's not so convenient to use with a
> variable type though.
>
Unfortunately that means we can't cleanly provide a probe_write function
doing nothing for the user-mode case. That would allow to avoid to many
#ifdef in the helper code. For me the softmmu_template.h is supposed to
only contain the code called by the helpers or by the glue in
cpu_ldst*.h
That also means the current tlb_vaddr_to_host code doesn't look in the
victim cache and that there is no easy way to fix that, though that's
less problematic.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net
next prev parent reply other threads:[~2015-06-03 15:11 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-02 11:26 [Qemu-devel] [PATCH RFC 0/5] softmmu and s390x memory helper improvements Aurelien Jarno
2015-06-02 11:26 ` [Qemu-devel] [PATCH RFC 1/5] target-s390x: add a cpu_mmu_idx_to_asc function Aurelien Jarno
2015-06-02 11:26 ` [Qemu-devel] [PATCH RFC 2/5] target-390x: support non current ASC in s390_cpu_handle_mmu_fault Aurelien Jarno
2015-06-02 11:26 ` [Qemu-devel] [PATCH RFC 3/5] softmmu: add a tlb_vaddr_to_host_fill function Aurelien Jarno
2015-06-02 20:10 ` Aurelien Jarno
2015-06-02 20:58 ` Richard Henderson
2015-06-02 21:11 ` Peter Maydell
2015-06-03 15:18 ` Aurelien Jarno
2015-06-02 20:54 ` Richard Henderson
2015-06-03 15:11 ` Aurelien Jarno [this message]
2015-06-02 11:26 ` [Qemu-devel] [PATCH RFC 4/5] target-s390x: function to adjust the length wrt page boundary Aurelien Jarno
2015-06-02 11:26 ` [Qemu-devel] [PATCH RFC 5/5] target-s390x: use softmmu host addr function for mvcp/mvcs Aurelien Jarno
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=20150603151113.GA10311@aurel32.net \
--to=aurelien@aurel32.net \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=leon.alrae@imgtec.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=yongbok.kim@imgtec.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.