qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Fabrice Bellard <fabrice@bellard.org>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH]ish NPTL support.
Date: Wed, 13 Dec 2006 19:44:58 +0100	[thread overview]
Message-ID: <45804A2A.9090103@bellard.org> (raw)
In-Reply-To: <200612131807.53555.paul@codesourcery.com>

Paul Brook wrote:
>>- sys_set_tid_address():
>>- clone(CLONE_CHILD_CLEARTID):
>>
>>We _could_ manage to do this in qemu for controlled thread exit -- it
>>would be hard for uncontrolled exit though. But I don't see any harm in
>>just letting the kernel do it either. I don't mind too much, but if we
>>can let the kernel do it I'm happier that way.
> 
> 
> The harm occurs if the host libc had per-thread state (eg. it has thread local 
> variables). If we bypass the host thread library then libc doesn't have 
> chance to initialize it's per-thread structures for that new thread, and bad 
> things are liable to happen then that thread uses libc functions.
> 
> 
>>We need endianness-mangling on these so we have to get involved somehow.
>>But I think we do need to use the kernel's support and then marshal the
>>result back to the guest's memory.
> 
> 
> Once you start proxying things to convert endianness I'd expect it to be 
> easier to just emulate everything.
> 
> 
> Even when you implement all the syscalls qemu still won't work reliably. In 
> particular loads and stores will not be atomic. On real hardware a word 
> aligned load or store is guaranteed to complete atomically. qemu sometimes 
> splits these into multiple byte accesses, so the guest could see a partial 
> access. There are also memory ordering issues (x86 has comparatively strong 
> memory ordering guarantees, other hosts require a memory barrier to enforce 
> proper ordering). I've seen both these cause failures in in real 
> applications.
> 
> Paul

Another point is that the dynamic translator itself is not thread safe 
(I tried to implement thread safety a long time ago, but it is not 
finished).

Using the pthreads may not be necessary provided we assume the host 
kernel supports NPTL. I don't think it is worth to spend time on the 
case where the host kernel does not support NPTL.

Fabrice.

  reply	other threads:[~2006-12-13 20:02 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-09 22:38 [Qemu-devel] [PATCH]ish NPTL support David Woodhouse
2006-12-13 16:02 ` Mulyadi Santosa
2006-12-13 17:01   ` David Woodhouse
2006-12-13 17:22     ` Paul Brook
2006-12-13 17:32       ` David Woodhouse
2006-12-13 17:42         ` Paul Brook
2006-12-13 17:50           ` David Woodhouse
2006-12-13 18:07             ` Paul Brook
2006-12-13 18:44               ` Fabrice Bellard [this message]
2006-12-14  2:16             ` Jamie Lokier
2006-12-16 13:26               ` David Woodhouse
2006-12-16 15:17                 ` Paul Brook
2006-12-16 18:48                 ` Jamie Lokier
2006-12-13 17:35     ` Thiemo Seufer

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=45804A2A.9090103@bellard.org \
    --to=fabrice@bellard.org \
    --cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).