PERFORCE change 75366 for review
John Baldwin
jhb at FreeBSD.org
Tue Apr 26 11:30:05 PDT 2005
On Tuesday 26 April 2005 09:36 am, David Xu wrote:
> John Baldwin wrote:
> > On Apr 17, 2005, at 6:42 AM, David Xu wrote:
> >> http://perforce.freebsd.org/chv.cgi?CH=75366
> >>
> >> Change 75366 by davidxu at davidxu_alona on 2005/04/17 10:42:05
> >>
> >> Implement cpu_set_user_tls for sparc64.
> >>
> >> Affected files ...
> >>
> >> ..
> >> //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/vm_machdep.c#6
> >> edit
> >>
> >> Differences ...
> >>
> >> ====
> >> //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/vm_machdep.c#6
> >> (text+ko) ====
> >>
> >> @@ -194,6 +194,15 @@
> >> td->td_retval[1] = tf->tf_out[1];
> >> }
> >>
> >> +void
> >> +cpu_set_user_tls(struct thread *td, void *tls_base, size_t tls_size,
> >> + int tls_seg __unused)
> >> +{
> >> + if (td == curthread)
> >> + flushw();
> >> + td->td_frame->tf_global[7] = tls_base;
> >> +}
> >> +
> >
> > I think for at least this one and Alpha you might want a critical
> > section in the curthread case like you do on i386 and amd64 since
> > calling the Alpha PAL and setting tls_base + flushw() are more than
> > one instruction long.
>
> If this is true, why don't set_mcontext on sparc64 and alpha enter
> critical region ?
Bugs. :) Actually, sparc64 is probably ok, but alpha_pal_wrunique() on Alpha
is basically the same as wrmsr() on x86. You might be ok without a critical
section on Alpha but I'm not sure. Actually, I think you are fine. The
thread can't get out into userland without resuming and finishing this
function first.
> I enter critical region on i386 and amd64, because I have to write
> global register (amd64 MSR) or gdt on i386, if thread is preempted,
> then it may be in intermediate state, for example on amd64:
> td->td_pcb->pcb_fsbase = (register_t)tls_base;
> --->
> wrmsr(MSR_FSBASE, td->td_pcb->pcb_fsbase);
>
> if thread is preempted at ---->, a rdmsr in cpu_switch() will overwrite
> the value I set before I can write it into MSR_FSBASE register.
>
> David Xu
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the p4-projects
mailing list