]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
accel/ivpu: Disallow setting sched mode OS starting from NPU6
authorKarol Wachowski <karol.wachowski@linux.intel.com>
Wed, 29 Oct 2025 20:15:54 +0000 (21:15 +0100)
committerKarol Wachowski <karol.wachowski@linux.intel.com>
Thu, 30 Oct 2025 07:58:21 +0000 (08:58 +0100)
OS scheduling mode gets deprecated starting from NPU6 onward.
Print warning and fallback to HW scheduling mode if OS mode is
explicitly selected with sched_mode parameter.

Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com>
Link: https://patch.msgid.link/20251029201554.257708-1-karol.wachowski@linux.intel.com
drivers/accel/ivpu/ivpu_drv.c
drivers/accel/ivpu/ivpu_fw.c

index ca68730dee88d0c35e9514f322675ec24fd7ae8a..b305effcf003a7d985b6f47179396c2d73ede4d4 100644 (file)
@@ -57,7 +57,7 @@ MODULE_PARM_DESC(pll_max_ratio, "Maximum PLL ratio used to set NPU frequency");
 
 int ivpu_sched_mode = IVPU_SCHED_MODE_AUTO;
 module_param_named(sched_mode, ivpu_sched_mode, int, 0444);
-MODULE_PARM_DESC(sched_mode, "Scheduler mode: -1 - Use default scheduler, 0 - Use OS scheduler, 1 - Use HW scheduler");
+MODULE_PARM_DESC(sched_mode, "Scheduler mode: -1 - Use default scheduler, 0 - Use OS scheduler (supported on 27XX - 50XX), 1 - Use HW scheduler");
 
 bool ivpu_disable_mmu_cont_pages;
 module_param_named(disable_mmu_cont_pages, ivpu_disable_mmu_cont_pages, bool, 0444);
index aa032b39dbe30b5ab110dee8c97ae91501bc0806..48386d2cddbb2caf46ed5bbb493600285e08bc59 100644 (file)
@@ -144,6 +144,12 @@ bool ivpu_is_within_range(u64 addr, size_t size, struct ivpu_addr_range *range)
 static u32
 ivpu_fw_sched_mode_select(struct ivpu_device *vdev, const struct vpu_firmware_header *fw_hdr)
 {
+       if (ivpu_hw_ip_gen(vdev) >= IVPU_HW_IP_60XX &&
+           ivpu_sched_mode == VPU_SCHEDULING_MODE_OS) {
+               ivpu_warn(vdev, "OS sched mode is not supported, using HW mode\n");
+               return VPU_SCHEDULING_MODE_HW;
+       }
+
        if (ivpu_sched_mode != IVPU_SCHED_MODE_AUTO)
                return ivpu_sched_mode;