Messages in this thread | | | Date | Wed, 21 Jul 2021 07:58:10 +0100 | From | Christoph Hellwig <> | Subject | Re: [RFC v2 1/2] ppc/fpu: Add generic FPU api similar to x86 |
| |
> + > +/* > + * Use kernel_fpu_begin/end() if you intend to use FPU in kernel context. It > + * disables preemption so be careful if you intend to use it for long periods > + * of time. > + * TODO: If you intend to use the FPU in irq/softirq you need to check first with > + * irq_fpu_usable() if it is possible.
Please avoid the overly lone lines comments.
> +extern bool kernel_fpu_enabled(void); > +extern void kernel_fpu_begin(void); > +extern void kernel_fpu_end(void);
No need for the externs.
> +/* > + * Track whether the kernel is using the FPU state > + * currently.
This all fits on a single line.
> +static bool fpu_support(void) > +{ > + if (cpu_has_feature(CPU_FTR_VSX_COMP)) { > + return true; > + } else if (cpu_has_feature(CPU_FTR_ALTIVEC_COMP)) { > + return true; > + } else if (!cpu_has_feature(CPU_FTR_FPU_UNAVAILABLE)) { > + return true; > + }
No need for the braces, or else after a return. In fact this could be simplified down to:
return cpu_has_feature(CPU_FTR_VSX_COMP) || cpu_has_feature(CPU_FTR_ALTIVEC_COMP) || cpu_has_feature(CPU_FTR_FPU_UNAVAILABLE));
> + preempt_disable(); > + > +#ifdef CONFIG_VSX > + if (cpu_has_feature(CPU_FTR_VSX_COMP)) { > + enable_kernel_vsx(); > + return; > + } > +#endif > + > +#ifdef CONFIG_ALTIVEC > + if (cpu_has_feature(CPU_FTR_ALTIVEC_COMP)) { > + enable_kernel_altivec(); > + return; > + } > +#endif > + > +#ifdef CONFIG_PPC_FPU > + if (!cpu_has_feature(CPU_FTR_FPU_UNAVAILABLE)) { > + enable_kernel_fp(); > + return; > + } > +#endif
All the features are defined away if not supported (and we already rely on that in fpu_support()). So this could become:
if (cpu_has_feature(CPU_FTR_VSX_COMP)) enable_kernel_vsx(); else if (cpu_has_feature(CPU_FTR_ALTIVEC_COMP)) enable_kernel_altivec(); else if (!cpu_has_feature(CPU_FTR_FPU_UNAVAILABLE)) enable_kernel_fp();
Same for the disable path.
| |