[PATCH v2 3/5] ARM: add support for kernel mode NEON
From: Ard Biesheuvel <hidden>
Date: 2013-06-28 10:25:44
On 27 June 2013 17:13, Catalin Marinas [off-list ref] wrote:
On Thu, Jun 27, 2013 at 02:11:27PM +0100, Ard Biesheuvel wrote:quoted
OK, just one more question before I respin the next (hopefully final) version: if a caller does sleep after calling kernel_neon_begin() (and thus receives no warning if he runs a non-PREEMPT build with CONFIG_DEBUG_ATOMIC_SLEEP disabled), he will most likely find the NEON/VFP unit disabled after waking up (as we disable it on a context switch), so any subsequent NEON instructions will trigger the undef handler.Can you check on the VFP context switch path whether kernel_neon_begin() has been called and we are moving away from the task? You could even store the LR in kernel_neon_begin() to give better error information.
I wil take this suggestion for the arm64 case, and propose a new version next week. For arm, I think we should be ok without this, as Will also suggested, because you will always hit the BUG() in vfp_kmode_exception() if you touch the NEON from the kernel after a context switch (there are only two ways to get the NEON enabled, one is through lazy restore, which now only works from userland, and the other is through kernel_neon_begin()) -- Ard.