[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] use tasklet to handle init/sipi?

On 25/03/2013 06:55, "Zhang, Yang Z" <yang.z.zhang@xxxxxxxxx> wrote:

> Keir Fraser wrote on 2013-03-25:
>> There are deadlock issues around directly locking and resetting a remote
>> vcpu (e.g., buggy/malicious guest vcpu A sends INIT to vcpu B, and B does
>> same to A).
> Can you elaborate it? Does the lock impact hypervisor or just guest?

INIT-handling path takes the domain lock. If two vcpus in same guest try to
INIT each other, one will take the lock and then try to vcpu_pause() the
other. But this will spin forever while that other vcpu itself waits to take
the domain_lock.

This seemed to me a fairly fundamental problem of vcpus directly resetting
each other. Hence the deferral to tasklet context.

 -- Keir

>>  -- Keir
>> On 25/03/2013 05:31, "Zhang, Yang Z" <yang.z.zhang@xxxxxxxxx> wrote:
>>> Hi, Keir,
>>> I am looking into a issue and found cs:17457 changes to use tasklet to
>>> handle
>>> init and sipi. And the comments only said "clean up". I wonder is there any
>>> special reason to use tasklet to handle it? If no, I will send a patch to
>>> call
>>> handler directly instead via tasklet.
>>> The background is that with APICv, it assume all apic write is succeed and
>>> don't care the return value of vlapic_reg_write(). But the above logic need
>>> the caller to check return value. This obviously will break APICv.
>>> # HG changeset patch
>>> # User Keir Fraser <keir.fraser@xxxxxxxxxx>
>>> # Date 1208270873 -3600
>>> # Node ID e15be54059e4bde8f5916269dedff5fc3812686a
>>> # Parent  6691ae150d104127c097fd9f3a6acccc5ce43c52
>>> x86, hvm: Clean up handling of APIC INIT and SIPI messages.
>>> Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
>>> best regards
>>> yang
> Best regards,
> Yang

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.