Print this page
13902 Fix for 13717 may break 8-disk raidz2

*** 1386,1405 **** fp_save(&pl->lwp_pcb.pcb_fpu); pl->lwp_pcb.pcb_fpu.fpu_flags |= FPU_KERNEL; kpreempt_enable(); } - /* - * Set the context operations for kernel FPU usage. Note that this - * cannot be done with pre-emption and interrupts disabled, since - * installctx does a sleeping allocation. We haven't finished - * initializing our kernel FPU state yet, but in the rare case that we - * happen to save/restore before that, no harm is done. - */ - installctx(curthread, kfpu, kernel_fpu_ctx_save, kernel_fpu_ctx_restore, - NULL, NULL, NULL, NULL); - curthread->t_flag |= T_KFPU; if ((flags & KFPU_USE_LWP) == KFPU_USE_LWP) { /* * For pure kernel threads with an LWP, we can use the LWP's --- 1386,1395 ----
*** 1418,1427 **** --- 1408,1427 ---- pf->fpu_flags = FPU_EN | FPU_KERNEL; } else { /* initialize the kfpu state */ kernel_fpu_ctx_restore(kfpu); } + + /* + * Set the context operations for kernel FPU usage. Note that this + * cannot be done with pre-emption and interrupts disabled, since + * installctx does a sleeping allocation. We haven't finished + * initializing our kernel FPU state yet, but in the rare case that we + * happen to save/restore before that, no harm is done. + */ + installctx(curthread, kfpu, kernel_fpu_ctx_save, kernel_fpu_ctx_restore, + NULL, NULL, NULL, NULL); } void kernel_fpu_end(kfpu_state_t *kfpu, uint_t flags) {