mirror of
https://github.com/torvalds/linux.git
synced 2026-10-16 12:50:02 +02:00
Commit8da2a88383("rv: Add KUnit tests for some DA/HA monitors") introduced a division of a 64-bit value by 1000 in the nomiss KUnit test. This does not compile on 32-bit systems, as standard division of 64-bit values leads to an undefined reference to __udivdi3. Fix the build on 32-bit systems by using div_u64(). Fixes:8da2a88383("rv: Add KUnit tests for some DA/HA monitors") Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202608020311.hYjqOG5k-lkp@intel.com Reviewed-by: Nam Cao <namcao@linutronix.de> Link: https://lore.kernel.org/r/20260803150622.322806-1-gmonaco@redhat.com Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include <linux/kernel.h>
|
|
#include <linux/rv.h>
|
|
#include <rv/kunit.h>
|
|
#include <trace/events/sched.h>
|
|
#include "nomiss_kunit.h"
|
|
|
|
#if IS_REACHABLE(CONFIG_RV_MON_NOMISS)
|
|
|
|
static void rv_test_nomiss(struct kunit *test)
|
|
{
|
|
struct task_struct *target = rv_kunit_alloc_mock_task(test);
|
|
struct task_struct *other = rv_kunit_alloc_mock_task(test);
|
|
struct rv_kunit_ctx *ctx = test->priv;
|
|
|
|
prepare_test(test, &rv_nomiss_ops.mon);
|
|
|
|
target->pid = 99;
|
|
target->policy = SCHED_DEADLINE;
|
|
target->dl.runtime = 10000;
|
|
target->dl.dl_deadline = 20000;
|
|
|
|
rv_nomiss_ops.handle_newtask(NULL, target, 0);
|
|
|
|
/* Task gets preempted and can't terminate before deadline */
|
|
rv_nomiss_ops.handle_sched_switch(NULL, 0, other, target, TASK_RUNNING);
|
|
rv_nomiss_ops.handle_dl_replenish(NULL, &target->dl, 0, DL_TASK);
|
|
udelay(10);
|
|
rv_nomiss_ops.handle_sched_switch(NULL, 0, target, other, TASK_RUNNING);
|
|
RV_KUNIT_EXPECT_REACTION_HERE(test, ctx) {
|
|
udelay(15 + div_u64(*rv_nomiss_ops.deadline_thresh, 1000));
|
|
rv_nomiss_ops.handle_sched_switch(NULL, 0, other, target, TASK_RUNNING);
|
|
}
|
|
}
|
|
|
|
#else
|
|
#define rv_test_nomiss rv_test_stub
|
|
#endif
|