Re: Question about qspinlock nest

From: Waiman Long
Date: Thu Jan 10 2019 - 09:44:00 EST


On 01/10/2019 03:02 AM, Zhenzhong Duan wrote:
> Hi Maintainer,
>
>
> There is a question confused me for days. Appreciate an answer.
>
> In below code, the comment says we never have more than 4 nested
> contexts.
>
> What happen if debug and mce exceptions nest with the four, or we
> ensure it never happen?
>
>
> /*
> Â* Per-CPU queue node structures; we can never have more than 4 nested
> Â* contexts: task, softirq, hardirq, nmi.
> Â*
> Â* Exactly fits one 64-byte cacheline on a 64-bit architecture.
> Â*
> Â* PV doubles the storage and uses the second cacheline for PV state.
> Â*/
> static DEFINE_PER_CPU_ALIGNED(struct qnode, qnodes[MAX_NODES]);
>
Yes, both debug and mce exceptions are some kind of NMIs. So
theoretically, it is possible to have more than four. Are you aware of
any debug and MCE exception handlers that need to take a spinlock for
synchronization?

Cheers,
Longman