On Mon, Dec 15, 2008 at 11:38:01PM +1100, Herbert Xu wrote: > On Mon, Dec 15, 2008 at 04:21:06PM +1100, Herbert Xu wrote: > > > > > a. Do not touch SSE state in soft_irq > > > b. Disable/restore soft_irq in kernel_fpu_begin/kernel_fpu_end > > > c. Use a per-CPU data structure to save kernel FPU state during > > > soft_irq. > Here's another option > > d. When we're in interrupt context, schedule a task to perform > the encryption asynchronously. We can also hybridise b. and d.: e. When we're in interrupt context, if TS is clear, then we defer the operation to a thread. Otherwise if user-space has touched the FPU we save the state, if not then we simply clear TS. In either case we perform the operation immediately and then reset TS if user-space didn't touch the FPU. This is based on the fact that it should be fairly rare for us to interrupt a kernel FPU/SSE operation. The common case would be interrupting a user process or a kernel context which is not engaging in any kernel FPU operations. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html