Thread (21 messages) 21 messages, 4 authors, 2013-06-28
STALE4730d
Revisions (7)
  1. v2 [diff vs current]
  2. v2 [diff vs current]
  3. v2 current
  4. v2 [diff vs current]
  5. v2 [diff vs current]
  6. v2 [diff vs current]
  7. v3 [diff vs current]

[PATCH v2 3/5] ARM: add support for kernel mode NEON

From: Will Deacon <hidden>
Date: 2013-06-26 11:14:30

On Wed, Jun 26, 2013 at 11:55:33AM +0100, Ard Biesheuvel wrote:
Replying to self:

On 25 June 2013 22:24, Ard Biesheuvel [off-list ref] wrote:
quoted
+void kernel_neon_end(void)
+{
+       /* Disable the NEON/VFP unit. */
+       fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN);
+       barrier();
+       dec_preempt_count();
+}
+EXPORT_SYMBOL(kernel_neon_end);
Meh. This is not going to please the RT crowd, as preempt_schedule()
will not be called on PREEMPT builds in this case.

Propose to replace it with

    preempt_enable();
#ifndef CONFIG_PREEMPT_COUNT
    /* in this case, the preempt_enable() right above is just a barrier() */
    dec_preempt_count();
#endif

(and the converse in kernel_neon_begin())
Yuck, that's ugly as sin! How does x86 deal with this? Looking at
kernel_fpu_{begin,end}, they just disable preemption so I guess that they
assume the caller is non-blocking? There's an aside about the use of
preempt-notifiers for KVM, so it does sound like the onus is on the caller
not to shoot themselves in the face.

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help