On 03-Apr-01 Bruce Evans wrote:
> On Mon, 2 Apr 2001, John Baldwin wrote:
>
>> On 31-Mar-01 Bruce Evans wrote:
>> > [about i586-optimized copying and bzeroing]
>> > - we start using the FPU on a CPU with a free FPU (we used to free the
>> > FPU in some cases; now we only use optimizations in bcopy/bzero if
>> > the FPU was free to begin with).
>> > - we do a preemptive context switch and come back using a different FPU.
>> >
>> > The different CPU might even be unfree, and that case is now detected.
>> > In other cases, we just corrupt data by using different FPU registers :-(.
>>
>> Ugh. Hrm, then we need to either disable interrupts inside of i586_* or set
>> a
>
> This would break fast interrupts :-).
>
>> hard affinity flag in the process such that all other CPU's will ignore it
>> and
>> only p_lastcpu will run it next.
>
> There are many other possibilities:
> - don't use these routines.
> - don't use these routines for the SMP case.
> - disable preemptive context switching for the CPU that is using the FPU.
> The hard affinity flag could be used for this as a special case.
> - acquire sched_lock so that all sorts of context switching are disabled
> for all CPUs.
> - don't attempt to save the FPU state reentrantly, since this doesn't work
> with preemptive context switchiing unless interrupt handlers also save the
> state reentrantly, which they shouldn't do because it is too wasteful.
> Instead, save the state in the pcb as is already done in copy{in,out}
> so that cpu_switch() handles it. This may be too wasteful too.
> - as in previous possibility, but avoid switching the entire state. For
> the FPU, the entire state must be switched, but for SSE individual
> registers can be saved and restored. Saving and restoring individual
> registers reentrantly would be easy but no longer works for the SMP case.
> Switching a subset of the state would not be so easy.
Hmmmmm. I think I'm liking the next to last. Even if there is additional
overhead, it should still outperform generic_bcopy and friends on the CPU's in
question, right?
> Bruce
--
John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.Baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message