[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Doubt with qemu_cpu_is_self (non-KVM)
From: |
Andreas Färber |
Subject: |
Re: [Qemu-devel] Doubt with qemu_cpu_is_self (non-KVM) |
Date: |
Mon, 25 Feb 2013 21:20:32 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130215 Thunderbird/17.0.3 |
Am 25.02.2013 20:07, schrieb Alex Barcelo:
> I'm struggling with the code to understand the "duty and soul" of the
> "qemu_cpu_is_self" function (@cpus.c), and I quite not get it.
>
> I see that this function is called from some points. E.g., from
> tcg_hangle_interrupt and run_on_cpu. Amongst others.
>
> Sometimes, seems to me that this function duty is "returns if the
> actual thread is an VCPU thread" and sometimes the duty is "return if
> the actual thread is specifically this VCPU thread".
>
> On non-KVM QEMU vanilla, this makes no difference because of a unique
> VCPU thread. But imagine that there is an emulation thread which
> controls multiple VCPU threads...
>
> ... then I'm stuck. Somebody can enlighten me? The in-code comments
> don't help me anymore, and I'm a little thick following the code
> logic.
Quite simply, TCG is not multi-threaded except for NPTL today. (And at
least some such linux-user use cases are known broken.)
Xen and qtest don't actually use the CPU AFAIK.
The function should give you two hints, "self" and CPUState *cpu.
The implementation further checks against a per-CPUState variable.
So if you are changing TCG code to multi-threaded and run into wrong
assumptions there, then you will need to fix them. According to my own
commit message there was a qemu_in_vcpu_thread() function introduced ~Q2
2012.
Regards,
Andreas
http://git.qemu.org/?p=qemu.git;a=commit;h=b7680cb6078bd7294a3dd86473d3f2fdee991dd0
http://git.qemu.org/?p=qemu.git;a=commit;h=60e82579c75068cb49af95595aa99d727e657a0a
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg