> This asserts that if we spin on a lock after interrupting another spin,
> and interrupts are enabled, we must be in a softirq.

Looking at the bottom of the same file drivers/xen/core/spinlock.c:

void xen_spin_kick(raw_spinlock_t *lock, unsigned int token)
{
        unsigned int cpu;

        token &= (1U << TICKET_SHIFT) - 1;
        for_each_online_cpu(cpu) {
                if (spinning(&per_cpu(spinning, cpu), cpu, lock, token))
                        return;
                if (in_interrupt()
                    && spinning(&per_cpu(spinning_bh, cpu), cpu, lock, token))
                        return;
                if (raw_irqs_disabled()
                    && spinning(&per_cpu(spinning_irq, cpu), cpu, lock, token))
                        return;
        }
}
EXPORT_SYMBOL(xen_spin_kick);

... I may guess that line 74 should check for in_interrupt() instead of 
in_softirq().

However it is just a guess based on analogy.
I don't currently understand the logic of that code.


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to