All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, mttcg@listserver.greensocs.com,
	peter.maydell@linaro.org, claudio.fontana@huawei.com,
	nikunj@linux.vnet.ibm.com, jan.kiszka@siemens.com,
	mark.burton@greensocs.com, a.rigo@virtualopensystems.com,
	cota@braap.org, serge.fdrv@gmail.com, bobby.prani@gmail.com,
	rth@twiddle.net, fred.konrad@greensocs.com
Subject: Re: [Qemu-devel] [PATCH v3 00/15] A number of fixes for ThreadSanitizer
Date: Mon, 03 Oct 2016 10:43:58 +0100	[thread overview]
Message-ID: <87eg3xu5r5.fsf@linaro.org> (raw)
In-Reply-To: <c59f9d15-43a0-f265-b33a-f9c500eb2922@redhat.com>


Paolo Bonzini <pbonzini@redhat.com> writes:

> On 30/09/2016 23:30, Alex Bennée wrote:
>> Hi,
>>
>> This is v3 of the ThreadSanitizer fixes. Changes from the last
>> version:
>>
>>   - added some more review tags
>>   - made clear C11 undefined behaviour is the main issue
>>   - added two minor fixes to atomic.h
>>   - change type of tb_page_addr_t back to target_ulong
>>   - dropped ui/vnc-enc-tight patch (already picked up an merged)
>>   - dropped the blacklist patch (not needed with gcc)
>>   - fixed a number of remaining issues with:
>>     - TranslationBuffer access
>>     - PageDesc access
>>
>> A number of the patches fix fairly rare race conditions. In fact I had
>> to repeat my test case a number of times to trigger some of them:
>>
>>   retry.py -n 100 -c -- ./arm-linux-user/qemu-arm ./pigz.armhf \
>>     -c -9 linux-4.6.3.tar > /dev/null 2> tsan-user-async.log
>>
>> On a build with a light patch to reduce the size of the translation
>> buffer so we trigger lots of flushes.
>>
>> With this series applied you can enable ThreadSanitizer with the
>> following command line:
>>
>>   ./configure --extra-cflags="-g3 -O0 -fsanitize=thread -D__SANITIZE_THREAD__" \
>>     --with-coroutine=gthread --disable-pie --enable-debug --enable-debug-info
>>
>> breakdown:
>>   -fsanitize=thread - enables sanitizer
>>   --with-coroutine=gthread - tsan chokes on other forms of coroutine
>>   --disable-pie - tsan no longer works with PIE
>>   --enable-debug --enable-debug-info - better backtraces
>>
>> Remaining work:
>>
>> Running make check with the sanitzer enabled flags up a number of
>> warnings. I'm going to leave those for others to investigate as I need
>> to press on with the next MTTCG re-base ;-)
>>
>> Alex Bennée (14):
>>   atomic.h: fix __SANITIZE_THREAD__ build
>>   atomic.h: comment on use of atomic_read/set
>>   exec-all.h: revert tb_page_addr_t to target_ulong
>>   tcg/optimize: move default return out of if statement
>>   qom/object: update class cache atomically
>>   qom/cpu: atomically clear the tb_jmp_cache
>>   cpu: atomically modify cpu->exit_request
>>   util/qht: atomically set b->hashes
>>   linux-user/syscall: extend lock around cpu-list
>>   qga/command: use QEMU atomic primitives
>>   .travis.yml: add gcc sanitizer build
>>   tcg: ensure cpu_tb_exec/tb_gen_code use atomic_read/write
>>   tcg: update remaining TranslationBuffer fields atomically
>>   translate-all: mark updates to PageDesc as atomic
>>
>> Paolo Bonzini (1):
>>   seqlock: use atomic writes for the sequence
>>
>>  .travis.yml             | 45 ++++++++++++++++++++++++++
>>  cpu-exec.c              | 30 ++++++++---------
>>  include/exec/exec-all.h | 13 +++++++-
>>  include/qemu/atomic.h   |  8 ++++-
>>  include/qemu/seqlock.h  |  4 +--
>>  linux-user/syscall.c    |  7 +++-
>>  qga/commands.c          | 17 +++++-----
>>  qom/cpu.c               | 10 ++++--
>>  qom/object.c            | 15 +++++----
>>  tcg/optimize.c          |  3 +-
>>  translate-all.c         | 86 +++++++++++++++++++++++++------------------------
>>  util/qht.c              | 10 +++---
>>  12 files changed, 161 insertions(+), 87 deletions(-)
>>
>
> Queueing patches 1, 2 and 4-12.

OK. We can revisit the rest when we decide what the best plan of action
is for 64-on-32 atomic accesses should be.

--
Alex Bennée

      reply	other threads:[~2016-10-03  9:44 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-30 21:30 [Qemu-devel] [PATCH v3 00/15] A number of fixes for ThreadSanitizer Alex Bennée
2016-09-30 21:30 ` [Qemu-devel] [PATCH v3 01/15] atomic.h: fix __SANITIZE_THREAD__ build Alex Bennée
2016-09-30 21:30 ` [Qemu-devel] [PATCH v3 02/15] atomic.h: comment on use of atomic_read/set Alex Bennée
2016-09-30 21:30 ` [Qemu-devel] [PATCH v3 03/15] exec-all.h: revert tb_page_addr_t to target_ulong Alex Bennée
2016-10-03  8:59   ` Paolo Bonzini
2016-10-03  9:32     ` Alex Bennée
2016-10-03 10:10       ` Paolo Bonzini
2016-10-04 14:08         ` Alex Bennée
2016-10-03 15:31       ` Emilio G. Cota
2016-10-03 16:16         ` Alex Bennée
2016-09-30 21:30 ` [Qemu-devel] [PATCH v3 04/15] tcg/optimize: move default return out of if statement Alex Bennée
2016-09-30 21:30 ` [Qemu-devel] [PATCH v3 05/15] seqlock: use atomic writes for the sequence Alex Bennée
2016-09-30 22:14   ` Jonathan Neuschäfer
2016-09-30 22:45     ` Alex Bennée
2016-09-30 22:58       ` Jonathan Neuschäfer
2016-09-30 21:30 ` [Qemu-devel] [PATCH v3 06/15] qom/object: update class cache atomically Alex Bennée
2016-09-30 21:30 ` [Qemu-devel] [PATCH v3 07/15] qom/cpu: atomically clear the tb_jmp_cache Alex Bennée
2016-09-30 21:30 ` [Qemu-devel] [PATCH v3 08/15] cpu: atomically modify cpu->exit_request Alex Bennée
2016-09-30 21:31 ` [Qemu-devel] [PATCH v3 09/15] util/qht: atomically set b->hashes Alex Bennée
2016-09-30 21:31 ` [Qemu-devel] [PATCH v3 10/15] linux-user/syscall: extend lock around cpu-list Alex Bennée
2016-09-30 21:31 ` [Qemu-devel] [PATCH v3 11/15] qga/command: use QEMU atomic primitives Alex Bennée
2016-09-30 21:31 ` [Qemu-devel] [PATCH v3 12/15] .travis.yml: add gcc sanitizer build Alex Bennée
2016-09-30 21:31 ` [Qemu-devel] [PATCH v3 13/15] tcg: ensure cpu_tb_exec/tb_gen_code use atomic_read/write Alex Bennée
2016-09-30 22:12   ` [Qemu-devel] [PATCH] fixup! " Alex Bennée
2016-10-03  8:43   ` [Qemu-devel] [PATCH v3 13/15] " Paolo Bonzini
2016-10-03  9:48     ` Alex Bennée
2016-10-03  9:53       ` Paolo Bonzini
2016-09-30 21:31 ` [Qemu-devel] [PATCH v3 14/15] tcg: update remaining TranslationBuffer fields atomically Alex Bennée
2016-09-30 21:31 ` [Qemu-devel] [PATCH v3 15/15] translate-all: mark updates to PageDesc as atomic Alex Bennée
2016-10-03  8:50   ` Paolo Bonzini
2016-09-30 21:54 ` [Qemu-devel] [PATCH v3 00/15] A number of fixes for ThreadSanitizer no-reply
2016-09-30 22:06 ` no-reply
2016-10-03  9:25 ` Paolo Bonzini
2016-10-03  9:43   ` Alex Bennée [this message]

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=87eg3xu5r5.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=a.rigo@virtualopensystems.com \
    --cc=bobby.prani@gmail.com \
    --cc=claudio.fontana@huawei.com \
    --cc=cota@braap.org \
    --cc=fred.konrad@greensocs.com \
    --cc=jan.kiszka@siemens.com \
    --cc=mark.burton@greensocs.com \
    --cc=mttcg@listserver.greensocs.com \
    --cc=nikunj@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=serge.fdrv@gmail.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.