From: Jan Kiszka <jan.kiszka@siemens.com>
To: Glauber Costa <glommer@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"avi@redhat.com" <avi@redhat.com>
Subject: Re: [Qemu-devel] Re: [PATCH v3] introduce on_vcpu
Date: Mon, 31 Aug 2009 14:21:08 +0200 [thread overview]
Message-ID: <4A9BC034.2090101@siemens.com> (raw)
In-Reply-To: <20090831121428.GE30340@mothafucka.localdomain>
Glauber Costa wrote:
> On Mon, Aug 31, 2009 at 01:04:52PM +0100, Jamie Lokier wrote:
>> Glauber Costa wrote:
>>> On Sat, Aug 29, 2009 at 02:22:27AM +0100, Jamie Lokier wrote:
>>>> Anthony Liguori wrote:
>>>>> Glauber Costa wrote:
>>>>> Since we already keep the tid in the vcpu structure, it seems to make
>>>>> more sense to ask "am I this vcpu thread" by doing gettid() == env->tid
>>>>> than by maintaining a new global tls variable.
>>>> Note that a tls variable will be much faster than gettid(). Don't
>>>> know if you're talking about a hot path.
>>> just to be sure, TLS is not supported on all our linux target hosts, right?
>>>
>>> We can probably wrap it into a function that uses gettid on linux (or whatever
>>> in other platforms), and uses a TLS variable where available. (and if needed).
>>>
>>> I can agree with anthony that although TLS is in fact faster, we might not need it.
>>> I doubt that anything that communicates using signals will be the hot path for anything.
>> I was going to say just use pthread_self()! It's fast like TLS on all
>> hosts, and more portable then gettid().
>>
>> But then you mentioned signals. I'm not sure if the code in question
>> is inside signal handlers.
> Signals are just used to wake up the other cpu. I think it is pretty valid
> to rule out usage insigne signal handlers (mention in comments, etc).
>
> I'll propose that switch on qemu-kvm, which already uses tls variables, and see
> what the response is.
>
To my experience, TLS can cause a lot of problems, but only when used
close to inline assembly (gcc is still horribly broken then, clobbering
or "optimizing" register content, specifically on ARM). I do not expect
problems for our standard use cases.
But in case someone still does not feel well about it:
pthread_get/set_specific can serve as a "safer" alternative that is also
syscall-free (where possible).
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2009-08-31 12:21 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-16 21:55 [Qemu-devel] [PATCH v3] introduce on_vcpu Glauber Costa
2009-08-27 17:15 ` [Qemu-devel] " Jan Kiszka
2009-08-27 17:40 ` Glauber Costa
2009-08-27 17:45 ` Jan Kiszka
2009-08-28 1:18 ` Glauber Costa
2009-08-28 1:38 ` Anthony Liguori
2009-08-28 1:58 ` Glauber Costa
2009-08-28 6:18 ` Gleb Natapov
2009-08-29 1:22 ` Jamie Lokier
2009-08-31 11:35 ` Glauber Costa
2009-08-31 12:04 ` Jamie Lokier
2009-08-31 12:14 ` Glauber Costa
2009-08-31 12:21 ` Jan Kiszka [this message]
2009-08-31 22:25 ` Jamie Lokier
2009-08-31 12:57 ` Glauber Costa
2009-09-01 0:55 ` Paolo Bonzini
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=4A9BC034.2090101@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=aliguori@us.ibm.com \
--cc=avi@redhat.com \
--cc=glommer@redhat.com \
--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 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.