[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash
From: |
Emilio G. Cota |
Subject: |
Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs |
Date: |
Mon, 17 Jul 2017 20:27:00 -0400 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Mon, Jul 17, 2017 at 12:55:03 -1000, Richard Henderson wrote:
> On 07/16/2017 10:03 AM, Emilio G. Cota wrote:
> >@@ -1073,13 +1073,17 @@ void tb_phys_invalidate(TranslationBlock *tb,
> >tb_page_addr_t page_addr)
> > assert_tb_locked();
> >- atomic_set(&tb->invalid, true);
> >-
> > /* remove the TB from the hash list */
> > phys_pc = tb->page_addr[0] + (tb->pc & ~TARGET_PAGE_MASK);
> > h = tb_hash_func(phys_pc, tb->pc, tb->flags, tb->trace_vcpu_dstate);
> > qht_remove(&tcg_ctx.tb_ctx.htable, tb, h);
> >+ /*
> >+ * Mark the TB as invalid *after* it's been removed from tb_hash, which
> >+ * eliminates the need to check this bit on lookups.
> >+ */
> >+ tb->invalid = true;
>
> I believe you need atomic_store_release here. Previously we were relying on
> the lock acquisition in qht_remove to provide the required memory barrier.
>
> We definitely need to make sure this reaches memory before we zap the TB in
> the CPU_FOREACH loop.
After this patch tb->invalid is only read/set with tb_lock held, so no need for
atomics while accessing it.
E.
- [Qemu-devel] [PATCH v2 39/45] osdep: move qemu_real_host_page_size/mask to osdep, (continued)
- [Qemu-devel] [PATCH v2 39/45] osdep: move qemu_real_host_page_size/mask to osdep, Emilio G. Cota, 2017/07/16
- [Qemu-devel] [PATCH v2 37/45] tcg: introduce **tcg_ctxs to keep track of all TCGContext's, Emilio G. Cota, 2017/07/16
- [Qemu-devel] [PATCH v2 40/45] osdep: introduce qemu_mprotect_rwx/none, Emilio G. Cota, 2017/07/16
- [Qemu-devel] [PATCH v2 32/45] tcg: take tb_ctx out of TCGContext, Emilio G. Cota, 2017/07/16
- [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs, Emilio G. Cota, 2017/07/16
- Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs, Richard Henderson, 2017/07/17
- Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs,
Emilio G. Cota <=
- Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs, Richard Henderson, 2017/07/17
- Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs, Emilio G. Cota, 2017/07/18
- Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs, Richard Henderson, 2017/07/18
- Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs, Emilio G. Cota, 2017/07/18
- Re: [Qemu-devel] [PATCH v2 10/45] translate-all: guarantee that tb_hash only holds valid TBs, Richard Henderson, 2017/07/18
[Qemu-devel] [PATCH v2 29/45] exec-all: rename tb_free to tb_remove, Emilio G. Cota, 2017/07/16
[Qemu-devel] [PATCH v2 14/45] tcg: define CF_PARALLEL and use it for TB hashing, Emilio G. Cota, 2017/07/16
[Qemu-devel] [PATCH v2 35/45] gen-icount: fold exitreq_label into TCGContext, Emilio G. Cota, 2017/07/16