[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 1/3] cputlb: ensure tbl_set_dirty1 updates ad
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v1 1/3] cputlb: ensure tbl_set_dirty1 updates addr_write atomically |
Date: |
Mon, 20 Mar 2017 16:43:26 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 |
On 20/03/2017 16:34, Alex Bennée wrote:
> static inline void tlb_set_dirty1(CPUTLBEntry *tlb_entry, target_ulong vaddr)
> {
> +#if TCG_OVERSIZED_GUEST
> if (tlb_entry->addr_write == (vaddr | TLB_NOTDIRTY)) {
> tlb_entry->addr_write = vaddr;
> }
> +#else
> + uintptr_t orig_addr = atomic_mb_read(&tlb_entry->addr_write);
atomic_read is enough, since we don't care at all about cases where the
address doesn't match. Otherwise
Reviewed-by: Paolo Bonzini <address@hidden>
Paolo
> + if (orig_addr == (vaddr | TLB_NOTDIRTY)) {
> + atomic_cmpxchg(&tlb_entry->addr_write, orig_addr, vaddr);
> + }
> +#endif
> }