static void fetch_rt_cpuinfo(void) { if (!rt_info_done) { compel_cpuid(&rt_info); rt_info_done = true; } }
int cpu_init(void) { if (compel_cpuid(&rt_cpu_info)) return -1; BUILD_BUG_ON(sizeof(struct xsave_struct) != XSAVE_SIZE); BUILD_BUG_ON(sizeof(struct i387_fxsave_struct) != FXSAVE_SIZE); /* * Make sure that at least FPU is onboard * and fxsave is supported. */ if (cpu_has_feature(X86_FEATURE_FPU)) { if (!cpu_has_feature(X86_FEATURE_FXSR)) { pr_err("missing support fxsave/restore insns\n"); return -1; } } pr_debug("fpu:%d fxsr:%d xsave:%d\n", !!cpu_has_feature(X86_FEATURE_FPU), !!cpu_has_feature(X86_FEATURE_FXSR), !!cpu_has_feature(X86_FEATURE_XSAVE)); return 0; }
bool cpu_has_feature(unsigned int feature) { if (!rt_info_done) { compel_cpuid(&rt_info); rt_info_done = true; } return compel_test_cpu_cap(&rt_info, feature); }
int cpu_init(void) { return compel_cpuid(&rt_cpuinfo); }