From: Aurelien Jarno <aurelien@aurel32.net>
To: Richard Henderson <rth@twiddle.net>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/2] cputlb: Use memset when flushing entries
Date: Sun, 22 Dec 2013 19:04:48 +0100 [thread overview]
Message-ID: <20131222180448.GF4326@ohm.rr44.fr> (raw)
In-Reply-To: <1386366292-5340-1-git-send-email-rth@twiddle.net>
On Sat, Dec 07, 2013 at 10:44:51AM +1300, Richard Henderson wrote:
> The size of tlb_table is 4k on a 64-bit host. For overwriting
> memory at this size, cacheline tricks can help.
>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
> cputlb.c | 19 ++-----------------
> 1 file changed, 2 insertions(+), 17 deletions(-)
>
> diff --git a/cputlb.c b/cputlb.c
> index fff0afb..d2da404 100644
> --- a/cputlb.c
> +++ b/cputlb.c
> @@ -33,13 +33,6 @@
> /* statistics */
> int tlb_flush_count;
>
> -static const CPUTLBEntry s_cputlb_empty_entry = {
> - .addr_read = -1,
> - .addr_write = -1,
> - .addr_code = -1,
> - .addend = -1,
> -};
> -
> /* NOTE:
> * If flush_global is true (the usual case), flush all tlb entries.
> * If flush_global is false, flush (at least) all tlb entries not
> @@ -55,7 +48,6 @@ static const CPUTLBEntry s_cputlb_empty_entry = {
> void tlb_flush(CPUArchState *env, int flush_global)
> {
> CPUState *cpu = ENV_GET_CPU(env);
> - int i;
>
> #if defined(DEBUG_TLB)
> printf("tlb_flush:\n");
> @@ -64,14 +56,7 @@ void tlb_flush(CPUArchState *env, int flush_global)
> links while we are modifying them */
> cpu->current_tb = NULL;
>
> - for (i = 0; i < CPU_TLB_SIZE; i++) {
> - int mmu_idx;
> -
> - for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) {
> - env->tlb_table[mmu_idx][i] = s_cputlb_empty_entry;
> - }
> - }
> -
> + memset(env->tlb_table, -1, sizeof(env->tlb_table));
> memset(env->tb_jmp_cache, 0, TB_JMP_CACHE_SIZE * sizeof (void *));
>
> env->tlb_flush_addr = -1;
> @@ -87,7 +72,7 @@ static inline void tlb_flush_entry(CPUTLBEntry *tlb_entry, target_ulong addr)
> (TARGET_PAGE_MASK | TLB_INVALID_MASK)) ||
> addr == (tlb_entry->addr_code &
> (TARGET_PAGE_MASK | TLB_INVALID_MASK))) {
> - *tlb_entry = s_cputlb_empty_entry;
> + memset(tlb_entry, -1, sizeof(*tlb_entry));
> }
> }
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
next prev parent reply other threads:[~2013-12-22 18:05 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-06 21:44 [Qemu-devel] [PATCH 1/2] cputlb: Use memset when flushing entries Richard Henderson
2013-12-06 21:44 ` [Qemu-devel] [PATCH 2/2] cputlb: Tidy memset of arrays Richard Henderson
2013-12-22 18:04 ` Aurelien Jarno
2013-12-22 18:04 ` Aurelien Jarno [this message]
2013-12-23 14:37 ` [Qemu-devel] [PATCH 1/2] cputlb: Use memset when flushing entries Andreas Färber
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=20131222180448.GF4326@ohm.rr44.fr \
--to=aurelien@aurel32.net \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.