sched_pin() versus PCPU_GET
jhb at freebsd.org
Thu Aug 5 17:11:43 UTC 2010
On Thursday, August 05, 2010 12:01:22 pm mdf at freebsd.org wrote:
> On Wed, Aug 4, 2010 at 9:20 AM, <mdf at freebsd.org> wrote:
> > On Wed, Aug 4, 2010 at 2:26 PM, John Baldwin <jhb at freebsd.org> wrote:
> >> Actually, I would beg to differ in that case. If PCPU_GET(spinlocks)
> >> returns non-NULL, then it means that you hold a spin lock,
> > ll_count is 0 for the "correct" pc_spinlocks and non-zero for the
> > "wrong" one, though. So I think it can be non-NULL but the current
> > thread/CPU doesn't hold a spinlock.
> > I don't believe we have any code in the NMI handler. I'm on vacation
> > today so I'll check tomorrow.
> I checked and ipi_nmi_handler() doesn't appear to have any local
> changes. I assume that's where I should look?
The tricky bits are all in the assembly rather than in C, probably in
exception.S. However, if %gs were corrupt I would not expect it to point to
another CPU's data, but garbage from userland.
More information about the freebsd-hackers