All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Emilio G. Cota" <cota@braap.org>
Cc: Richard Henderson <richard.henderson@linaro.org>,
	qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 00/17] tcg: tb_lock removal redux v3
Date: Thu, 14 Jun 2018 19:34:39 +0100	[thread overview]
Message-ID: <87r2l9z074.fsf@linaro.org> (raw)
In-Reply-To: <87vab1zip9.fsf@linaro.org>


Alex Bennée <alex.bennee@linaro.org> writes:

> Emilio G. Cota <cota@braap.org> writes:
>
>> On Wed, May 30, 2018 at 16:05:14 -0700, Richard Henderson wrote:
>>> On 05/30/2018 03:46 PM, Richard Henderson wrote:
>>> > Thanks.  Queued to tcg-next.
>>> Hmph.  Unqueued, at least for now.
>>>
>>> ERROR:/home/rth/work/qemu/qemu/accel/tcg/translate-all.c:615:page_unlock__debug:
>>> assertion failed: (page_is_locked(pd))
>>
>> Gaah, sorry. In v3 forgot to call the lock__debug function from
>> a successful trylock. I tested v3 on aarch64, which explains why
>> I didn't catch the bug. Fixed now:
>>
>> --- a/accel/tcg/translate-all.c
>> +++ b/accel/tcg/translate-all.c
>> @@ -704,6 +704,7 @@ static bool page_entry_trylock(struct page_entry *pe)
>>      if (!busy) {
>>          g_assert(!pe->locked);
>>          pe->locked = true;
>> +        page_lock__debug(pe->pd);
>>      }
>>      return busy;
>>  }
>>
>> I also added the following, which cannot hurt:
>>
>> diff --git a/exec.c b/exec.c
>> index afc37e0..e874d67 100644
>> --- a/exec.c
>> +++ b/exec.c
>> @@ -2493,6 +2493,7 @@ void memory_notdirty_write_complete(NotDirtyInfo *ndi)
>>  {
>>      if (ndi->pages) {
>>          page_collection_unlock(ndi->pages);
>> +        ndi->pages = NULL;
>>      }
>>
>> (Note that calling page_collection_unlock twice on that pointer
>> would blow up.)
>>
>> The above two one-liners are the only code changes between v3 and v4.
>> I also added Alex's R-b tag for the qht patch.
>>
>> I've boot-tested v4 on aarch64, arm, x86_64-softmmu, riscv64, sh4,
>> sparc, s390x, ppc64 and or1k, with and without TCG debug.
>>
>> You can fetch v4 from:
>>   https://github.com/cota/qemu/tree/tb-lock-removal-redux-v4
>
> I've just spun up v4 and it still works on aarch64 and now also passes
> the coldfire test rich passed me. So have a:
>
> Tested-by: Alex Bennée <alex.bennee@linaro.org>
>
> For those two.


Ping, Richard are you happy with the fix?

>
>>
>> Thanks,
>>
>> 		Emilio


--
Alex Bennée

  reply	other threads:[~2018-06-14 18:34 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-21 23:39 [Qemu-devel] [PATCH v3 00/17] tcg: tb_lock removal redux v3 Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 01/17] qht: require a default comparison function Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 02/17] qht: return existing entry when qht_insert fails Emilio G. Cota
2018-05-31 10:43   ` Alex Bennée
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 03/17] tcg: track TBs with per-region BST's Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 04/17] tcg: move tb_ctx.tb_phys_invalidate_count to tcg_ctx Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 05/17] translate-all: iterate over TBs in a page with PAGE_FOR_EACH_TB Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 06/17] translate-all: make l1_map lockless Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 07/17] translate-all: remove hole in PageDesc Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 08/17] translate-all: work page-by-page in tb_invalidate_phys_range_1 Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 09/17] translate-all: move tb_invalidate_phys_page_range up in the file Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 10/17] translate-all: use per-page locking in !user-mode Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 11/17] translate-all: add page_locked assertions Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 12/17] translate-all: introduce assert_no_pages_locked Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 13/17] translate-all: discard TB when tb_link_page returns an existing matching TB Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 14/17] translate-all: protect TB jumps with a per-destination-TB lock Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 15/17] cputlb: remove tb_lock from tlb_flush functions Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 16/17] translate-all: remove tb_lock mention from cpu_restore_state_from_tb Emilio G. Cota
2018-05-21 23:39 ` [Qemu-devel] [PATCH v3 17/17] tcg: remove tb_lock Emilio G. Cota
2018-05-30 22:46 ` [Qemu-devel] [PATCH v3 00/17] tcg: tb_lock removal redux v3 Richard Henderson
2018-05-30 23:05   ` Richard Henderson
2018-06-01  9:32     ` Alex Bennée
2018-06-01 14:55       ` Richard Henderson
2018-06-02  0:29     ` Emilio G. Cota
2018-06-02  8:38       ` Alex Bennée
2018-06-14 18:34         ` Alex Bennée [this message]
2018-06-14 19:36           ` Richard Henderson
2018-06-01 15:38 ` Alex Bennée

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=87r2l9z074.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=cota@braap.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.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.