On 25.05.22 09:47, Florian Bezdeka wrote: > FPU usage in kernel space was allowed / enabled with ipipe, but is no > longer available for dovetail based kernels. That allows us to clean > up the FPU related tests of the switchtest utility. > > fp_kernel_supported() can be removed as all supported architectures > returned 0 already. That allows us to remove the FPU feature test flag > RTTST_SWTEST_USE_FPU as well. > > Signed-off-by: Florian Bezdeka <[email protected]> > --- > include/rtdm/uapi/testing.h | 1 - > .../arch/arm/include/asm/xenomai/fptest.h | 5 ---- > .../arch/arm64/include/asm/xenomai/fptest.h | 5 ---- > .../arch/x86/include/asm/xenomai/fptest.h | 11 --------- > kernel/drivers/testing/switchtest.c | 23 ------------------- > testsuite/switchtest/switchtest.c | 1 - > 6 files changed, 46 deletions(-) > > diff --git a/include/rtdm/uapi/testing.h b/include/rtdm/uapi/testing.h > index f8207b8c7..49f0b7f25 100644 > --- a/include/rtdm/uapi/testing.h > +++ b/include/rtdm/uapi/testing.h > @@ -68,7 +68,6 @@ struct rttst_swtest_task { > > /* Possible values for struct rttst_swtest_task::flags. */ > #define RTTST_SWTEST_FPU 0x1 > -#define RTTST_SWTEST_USE_FPU 0x2 /* Only for kernel-space tasks. */ > #define RTTST_SWTEST_FREEZE 0x4 /* Only for kernel-space tasks. */ > > struct rttst_swtest_dir { > diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/fptest.h > b/kernel/cobalt/arch/arm/include/asm/xenomai/fptest.h > index ca1752206..fc177fcb5 100644 > --- a/kernel/cobalt/arch/arm/include/asm/xenomai/fptest.h > +++ b/kernel/cobalt/arch/arm/include/asm/xenomai/fptest.h > @@ -30,11 +30,6 @@ > > #include <asm/xenomai/uapi/fptest.h> > > -static inline int fp_kernel_supported(void) > -{ > - return 0; > -} > - > static inline int fp_linux_begin(void) > { > return -ENOSYS; > diff --git a/kernel/cobalt/arch/arm64/include/asm/xenomai/fptest.h > b/kernel/cobalt/arch/arm64/include/asm/xenomai/fptest.h > index bc9dc342e..0958d5e2a 100644 > --- a/kernel/cobalt/arch/arm64/include/asm/xenomai/fptest.h > +++ b/kernel/cobalt/arch/arm64/include/asm/xenomai/fptest.h > @@ -13,11 +13,6 @@ > > #define have_fp (ELF_HWCAP & HWCAP_FP) > > -static inline int fp_kernel_supported(void) > -{ > - return 0; > -} > - > static inline int fp_linux_begin(void) > { > return -ENOSYS; > diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/fptest.h > b/kernel/cobalt/arch/x86/include/asm/xenomai/fptest.h > index 83a6413d5..55818f853 100644 > --- a/kernel/cobalt/arch/x86/include/asm/xenomai/fptest.h > +++ b/kernel/cobalt/arch/x86/include/asm/xenomai/fptest.h > @@ -24,17 +24,6 @@ > #include <asm/xenomai/wrappers.h> > #include <asm/xenomai/uapi/fptest.h> > > -/* > - * We do NOT support out-of-band FPU operations in kernel space for a > - * reason: this is a mess. Out-of-band FPU is just fine and makes a > - * lot of sense for many real-time applications, but you have to do > - * that from userland. > - */ > -static inline int fp_kernel_supported(void) > -{ > - return 0; > -} > - > static inline int fp_linux_begin(void) > { > kernel_fpu_begin(); > diff --git a/kernel/drivers/testing/switchtest.c > b/kernel/drivers/testing/switchtest.c > index b5bc256df..9072717d5 100644 > --- a/kernel/drivers/testing/switchtest.c > +++ b/kernel/drivers/testing/switchtest.c > @@ -416,9 +416,6 @@ static void rtswitch_ktask(void *cookie) > rtswitch_pend_rt(ctx, task->base.index); > > while (!rtdm_task_should_stop()) { > - if (task->base.flags & RTTST_SWTEST_USE_FPU) > - fp_regs_set(fp_features, task->base.index + i * 1000); > - > switch(i % 3) { > case 0: > /* to == from means "return to last task" */ > @@ -437,17 +434,6 @@ static void rtswitch_ktask(void *cookie) > rtswitch_to_rt(ctx, task->base.index, to); > } > > - if (task->base.flags & RTTST_SWTEST_USE_FPU) { > - expected = task->base.index + i * 1000; > - fp_val = fp_regs_check(fp_features, expected, report); > - > - if (fp_val != expected) { > - if (task->base.flags & RTTST_SWTEST_FREEZE) > - xntrace_user_freeze(0, 0); > - handle_ktask_error(ctx, fp_val); > - } > - } > - > if (++i == 4000000) > i = 0; > } > @@ -465,15 +451,6 @@ static int rtswitch_create_ktask(struct rtswitch_context > *ctx, > char name[30]; > int err; > > - /* > - * Silently disable FP tests in kernel if FPU is not supported > - * there. Typical case is math emulation support: we can use > - * it from userland as a synthetic FPU, but there is no sane > - * way to use it from kernel-based threads (Xenomai or Linux). > - */ > - if (!fp_kernel_supported()) > - ptask->flags &= ~RTTST_SWTEST_USE_FPU; > - > ptask->flags |= RTSWITCH_KERNEL; > err = rtswitch_register_task(ctx, ptask); > > diff --git a/testsuite/switchtest/switchtest.c > b/testsuite/switchtest/switchtest.c > index f2a5c1601..752671e39 100644 > --- a/testsuite/switchtest/switchtest.c > +++ b/testsuite/switchtest/switchtest.c > @@ -832,7 +832,6 @@ static int task_create(struct cpu_tasks *cpu, > switch(param->type) { > case RTK: > param->swt.flags = (param->fp & AFP ? RTTST_SWTEST_FPU : 0) > - | (param->fp & UFPP ? RTTST_SWTEST_USE_FPU : 0) > | (freeze_on_error ? RTTST_SWTEST_FREEZE : 0); > > err=ioctl(cpu->fd,RTTST_RTIOC_SWTEST_CREATE_KTASK,¶m->swt);
Thanks, applied to next. Jan -- Siemens AG, Technology Competence Center Embedded Linux
