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

[Xen-devel] spinlock wakeup



Looking at

void _spin_lock(spinlock_t *lock)
{
    spinlock_tickets_t tickets = SPINLOCK_TICKET_INC;
    LOCK_PROFILE_VAR;

    check_lock(&lock->debug);
    tickets.head_tail = arch_fetch_and_add(&lock->tickets.head_tail,
                                           tickets.head_tail);
    while ( tickets.tail != observe_head(&lock->tickets) )
    {
        LOCK_PROFILE_BLOCK;
        arch_lock_relax();
    }
    LOCK_PROFILE_GOT;
    preempt_disable();
    arch_lock_acquire_barrier();
}

If the lock is dropped during LOCK_PROFILE_BLOCK, isn't there a chance
that we are never woken up from arch_lock_relax()? (This would only be
an issue on ARM which IIUIC sleeps there).

-boris


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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