> On Sep 20, 2018, at 9:30 PM, Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> wrote: > >> On 20 September 2018 at 21:15, Jason A. Donenfeld <Jason@xxxxxxxxx> wrote: >> Hi Andy, >> >>> On Fri, Sep 21, 2018 at 5:23 AM Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote: >>> At the risk on suggesting something awful: on x86_64, since we turn preemption off for simd, it wouldn’t be *completely* insane to do the crypto on the irq stack. It would look like: >>> >>> kernel_fpu_call(func, arg); >>> >>> And this helper would disable preemption, enable FPU, switch to the irq stack, call func(arg), disable FPU, enable preemption, and return. And we can have large IRQ stacks. >>> >>> I refuse to touch this with a ten-foot pole until the lazy FPU restore patches land. >> >> Haha. That's fun, and maybe we'll do that at some point, but I have >> some other reasons too for being on a workqueue now. >> > > Kernel mode crypto is callable from any context, and SIMD can be used > in softirq context on arm64 (and on x86, even from hardirq context > IIRC if the interrupt is taken from userland), in which case we'd > already be on the irq stack. The x86_64 irq stack handles nesting already.