minix/kernel/system
Ben Gras 2f892aca91 kernel fpu context switching: fix race condition
There seems to have been a broken assumption in the fpu context
restoring code.  It restores the context of the running process, without
guarantee that the current process is the one that will be scheduled.
This caused fpu saving for a different process to be triggered without
fpu hardware being enabled, causing an fpu exception in the kernel. This
practically only shows up with DEBUG_RACE on. Fix my thruby+me.

The fix
 . is to only set the fpu-in-use-by-this-process flag in the
   exception handler, and then take care of fpu restoring when
   actually returning to userspace

And the patch
 . translates fpu saving and restoring to c in arch_system.c,
   getting rid of a juicy chunk of assembly
 . makes osfxsr_feature private to arch_system.c
 . removes most of the arch dependent code from do_sigsend
2010-06-03 11:32:22 +00:00
..
do_abort.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_clear.c kernel/vm: change pde table info from single buffer to explicit per-process. 2010-05-12 08:31:05 +00:00
do_copy.c KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00
do_cprofile.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_devio.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_endksig.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_exec.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_exit.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_fork.c kernel/vm: change pde table info from single buffer to explicit per-process. 2010-05-12 08:31:05 +00:00
do_getinfo.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_getksig.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_irqctl.c KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00
do_kill.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_mcontext.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_memset.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_newmap.c Oops, last commit included more than was intended 2010-05-20 08:07:47 +00:00
do_privctl.c reset alarm timer on PRIVCTL 2010-05-26 07:10:28 +00:00
do_profbuf.c KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00
do_runctl.c RTS_SYS_LOCK and do_runctl() 2010-04-06 11:18:04 +00:00
do_safecopy.c do_safecopy split 2010-06-01 08:51:37 +00:00
do_safemap.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_schedctl.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_schedule.c scheduling - time quantum in miliseconds 2010-05-25 08:06:14 +00:00
do_segctl.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_setalarm.c KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00
do_setgrant.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_sigreturn.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_sigsend.c kernel fpu context switching: fix race condition 2010-06-03 11:32:22 +00:00
do_sprofile.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_statectl.c Driver refactory for live update and crash recovery. 2010-04-08 13:41:35 +00:00
do_stime.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_sysctl.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_times.c KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00
do_trace.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_umap.c Convert kernel over to bsdmake 2010-04-01 22:22:33 +00:00
do_update.c Driver refactory for live update and crash recovery. 2010-04-08 13:41:35 +00:00
do_vdevio.c KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00
do_vmctl.c KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00
do_vtimer.c KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00
Makefile.inc KCall methods do not depend on m_source and m_type fields 2010-06-01 08:54:31 +00:00