qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paul Brook <paul@codesourcery.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH]ish NPTL support.
Date: Wed, 13 Dec 2006 18:07:52 +0000	[thread overview]
Message-ID: <200612131807.53555.paul@codesourcery.com> (raw)
In-Reply-To: <1166032256.5253.766.camel@pmac.infradead.org>

> - 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

  reply	other threads:[~2006-12-13 18:08 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 [this message]
2006-12-13 18:44               ` Fabrice Bellard
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=200612131807.53555.paul@codesourcery.com \
    --to=paul@codesourcery.com \
    --cc=dwmw2@infradead.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).