Skip to content

Commit dacca45

Browse files
author
CKI KWF Bot
committed
Merge: RHEL 9.8: DRM Main Backport (6.17)
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/7329 ## Overview The DRM backport's goal is to backport all the changes in the DRM subsystem to the kernel target version, with the biggest value being that we get the upstream hardware enablement (and bug fixes) into RHEL. The first step of the DRM backport is identifying dependencies of the DRM backport outside of `drivers/gpu`. Done in https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/7327 for kernel 6.17. This MR is the second step: Backporting the changes in the DRM subsystem. ## Dependencies: This MR depends on the 6.16 dependencies and main backports and the 6.17 dependencies backport: Depends: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/7321 Depends: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/7322 Depends: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/7327 ## Omitted fixes: #### Non applicable changes: MSM, omapdrm and Mediatek drivers are not supported: \ Omitted-fix: 08c5b42 \ Omitted-fix: 42464c5 \ Omitted-fix: de651b6 \ Omitted-fix: f4ca529 \ Omitted-fix: f8f6e72 \ Omitted-fix: f5b1819 \ Omitted-fix: 86404a9 ("drm/msm: make sure last_fence is always updated") \ Omitted-fix: 00d5f09 ("drm/msm: Ensure vm is created in VM_BIND ioctl") \ Omitted-fix: c34e08b ("drm/msm: Fix GEM free for imported dma-bufs") \ Omitted-fix: c34e08b ("drm/msm: Fix GEM free for imported dma-bufs") Non Applicable: \ Omitted-fix: 7463755 \ Omitted-fix: e1bf212 \ Omitted-fix: e1bf212 To be included in the 6.18 backport: \ Omitted-fix: 476a4e1 \ Omitted-fix: 92e34a5 \ Omitted-fix: 2650bc4 \ Omitted-fix: 92e34a5 \ Omitted-fix: 278f890 \ Omitted-fix: 3a3bef6 \ Omitted-fix: 1cf1205 \ Omitted-fix: 6ec4b94 \ Omitted-fix: 0a51bf3 \ Omitted-fix: 4d22db6 \ Omitted-fix: 0a6e9e0 \ Omitted-fix: bbfe987 \ Omitted-fix: bba9aa4 \ Omitted-fix: 33f8f32 \ Omitted-fix: 4aa8961 \ Omitted-fix: 20a8e04 \ Omitted-fix: 7413e9f \ Omitted-fix: 1af59cd \ Omitted-fix: ff780f4 \ Omitted-fix: 1f22fcb \ Omitted-fix: 357d90b \ Omitted-fix: 0335594 ("dma-fence: Fix safe access wrapper to call timeline name method") \ Omitted-fix: dc8aa0c ("drm/i915/dmc: Clear HRR EVT_CTL/HTP to zero on ADL-S") \ Omitted-fix: 3257bd1 ("drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API") \ Omitted-fix: 3257bd1 ("drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API") ## Other: JIRA: https://issues.redhat.com/browse/RHEL-113577 Signed-off-by: José Expósito <jexposit@redhat.com> Approved-by: Jan Stancek <jstancek@redhat.com> Approved-by: Jocelyn Falempe <jfalempe@redhat.com> Approved-by: Anusha Srivatsa <asrivats@redhat.com> Approved-by: Eder Zulian <ezulian@redhat.com> Approved-by: David Airlie <airlied@redhat.com> Approved-by: Enric Balletbo i Serra <eballetbo@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: CKI GitLab Kmaint Pipeline Bot <26919896-cki-kmaint-pipeline-bot@users.noreply.gitlab.com>
2 parents c3d5212 + c53a17d commit dacca45

File tree

1,271 files changed

+44273
-22197
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,271 files changed

+44273
-22197
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ NAME = Opossums on Parade
88
# DRM backport version
99
#
1010
RHEL_DRM_VERSION = 6
11-
RHEL_DRM_PATCHLEVEL = 16
11+
RHEL_DRM_PATCHLEVEL = 17
1212
RHEL_DRM_SUBLEVEL =
1313

1414
# *DOCUMENTATION*

drivers/accel/drm_accel.c

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020

2121
DEFINE_XARRAY_ALLOC(accel_minors_xa);
2222

23-
static struct dentry *accel_debugfs_root;
24-
2523
static const struct device_type accel_sysfs_device_minor = {
2624
.name = "accel_minor"
2725
};
@@ -73,17 +71,6 @@ static const struct drm_info_list accel_debugfs_list[] = {
7371
};
7472
#define ACCEL_DEBUGFS_ENTRIES ARRAY_SIZE(accel_debugfs_list)
7573

76-
/**
77-
* accel_debugfs_init() - Initialize debugfs for device
78-
* @dev: Pointer to the device instance.
79-
*
80-
* This function creates a root directory for the device in debugfs.
81-
*/
82-
void accel_debugfs_init(struct drm_device *dev)
83-
{
84-
drm_debugfs_dev_init(dev, accel_debugfs_root);
85-
}
86-
8774
/**
8875
* accel_debugfs_register() - Register debugfs for device
8976
* @dev: Pointer to the device instance.
@@ -194,7 +181,6 @@ static const struct file_operations accel_stub_fops = {
194181
void accel_core_exit(void)
195182
{
196183
unregister_chrdev(ACCEL_MAJOR, "accel");
197-
debugfs_remove(accel_debugfs_root);
198184
accel_sysfs_destroy();
199185
WARN_ON(!xa_empty(&accel_minors_xa));
200186
}
@@ -209,8 +195,6 @@ int __init accel_core_init(void)
209195
goto error;
210196
}
211197

212-
accel_debugfs_root = debugfs_create_dir("accel", NULL);
213-
214198
ret = register_chrdev(ACCEL_MAJOR, "accel", &accel_stub_fops);
215199
if (ret < 0)
216200
DRM_ERROR("Cannot register ACCEL major: %d\n", ret);

drivers/accel/ivpu/ivpu_drv.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ static void ivpu_bo_unbind_all_user_contexts(struct ivpu_device *vdev)
677677
static void ivpu_dev_fini(struct ivpu_device *vdev)
678678
{
679679
ivpu_jobs_abort_all(vdev);
680-
ivpu_pm_cancel_recovery(vdev);
680+
ivpu_pm_disable_recovery(vdev);
681681
ivpu_pm_disable(vdev);
682682
ivpu_prepare_for_reset(vdev);
683683
ivpu_shutdown(vdev);
@@ -704,6 +704,7 @@ static struct pci_device_id ivpu_pci_ids[] = {
704704
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_ARL) },
705705
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_LNL) },
706706
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_PTL_P) },
707+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_WCL) },
707708
{ }
708709
};
709710
MODULE_DEVICE_TABLE(pci, ivpu_pci_ids);

drivers/accel/ivpu/ivpu_drv.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* SPDX-License-Identifier: GPL-2.0-only */
22
/*
3-
* Copyright (C) 2020-2024 Intel Corporation
3+
* Copyright (C) 2020-2025 Intel Corporation
44
*/
55

66
#ifndef __IVPU_DRV_H__
@@ -26,6 +26,7 @@
2626
#define PCI_DEVICE_ID_ARL 0xad1d
2727
#define PCI_DEVICE_ID_LNL 0x643e
2828
#define PCI_DEVICE_ID_PTL_P 0xb03e
29+
#define PCI_DEVICE_ID_WCL 0xfd3e
2930

3031
#define IVPU_HW_IP_37XX 37
3132
#define IVPU_HW_IP_40XX 40
@@ -165,6 +166,7 @@ struct ivpu_device {
165166
int boot;
166167
int jsm;
167168
int tdr;
169+
int inference;
168170
int autosuspend;
169171
int d0i3_entry_msg;
170172
int state_dump_msg;
@@ -207,10 +209,11 @@ extern bool ivpu_force_snoop;
207209
#define IVPU_TEST_MODE_D0I3_MSG_ENABLE BIT(5)
208210
#define IVPU_TEST_MODE_MIP_DISABLE BIT(6)
209211
#define IVPU_TEST_MODE_DISABLE_TIMEOUTS BIT(8)
210-
#define IVPU_TEST_MODE_TURBO BIT(9)
211-
#define IVPU_TEST_MODE_CLK_RELINQ_DISABLE BIT(10)
212-
#define IVPU_TEST_MODE_CLK_RELINQ_ENABLE BIT(11)
213-
#define IVPU_TEST_MODE_D0I2_DISABLE BIT(12)
212+
#define IVPU_TEST_MODE_TURBO_ENABLE BIT(9)
213+
#define IVPU_TEST_MODE_TURBO_DISABLE BIT(10)
214+
#define IVPU_TEST_MODE_CLK_RELINQ_DISABLE BIT(11)
215+
#define IVPU_TEST_MODE_CLK_RELINQ_ENABLE BIT(12)
216+
#define IVPU_TEST_MODE_D0I2_DISABLE BIT(13)
214217
extern int ivpu_test_mode;
215218

216219
struct ivpu_file_priv *ivpu_file_priv_get(struct ivpu_file_priv *file_priv);
@@ -240,6 +243,7 @@ static inline int ivpu_hw_ip_gen(struct ivpu_device *vdev)
240243
case PCI_DEVICE_ID_LNL:
241244
return IVPU_HW_IP_40XX;
242245
case PCI_DEVICE_ID_PTL_P:
246+
case PCI_DEVICE_ID_WCL:
243247
return IVPU_HW_IP_50XX;
244248
default:
245249
dump_stack();
@@ -256,6 +260,7 @@ static inline int ivpu_hw_btrs_gen(struct ivpu_device *vdev)
256260
return IVPU_HW_BTRS_MTL;
257261
case PCI_DEVICE_ID_LNL:
258262
case PCI_DEVICE_ID_PTL_P:
263+
case PCI_DEVICE_ID_WCL:
259264
return IVPU_HW_BTRS_LNL;
260265
default:
261266
dump_stack();

drivers/accel/ivpu/ivpu_hw.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,26 +94,30 @@ static void timeouts_init(struct ivpu_device *vdev)
9494
vdev->timeout.boot = -1;
9595
vdev->timeout.jsm = -1;
9696
vdev->timeout.tdr = -1;
97+
vdev->timeout.inference = -1;
9798
vdev->timeout.autosuspend = -1;
9899
vdev->timeout.d0i3_entry_msg = -1;
99100
} else if (ivpu_is_fpga(vdev)) {
100101
vdev->timeout.boot = 50;
101102
vdev->timeout.jsm = 15000;
102103
vdev->timeout.tdr = 30000;
104+
vdev->timeout.inference = 900000;
103105
vdev->timeout.autosuspend = -1;
104106
vdev->timeout.d0i3_entry_msg = 500;
105107
vdev->timeout.state_dump_msg = 10000;
106108
} else if (ivpu_is_simics(vdev)) {
107109
vdev->timeout.boot = 50;
108110
vdev->timeout.jsm = 500;
109111
vdev->timeout.tdr = 10000;
112+
vdev->timeout.inference = 300000;
110113
vdev->timeout.autosuspend = 100;
111114
vdev->timeout.d0i3_entry_msg = 100;
112115
vdev->timeout.state_dump_msg = 10;
113116
} else {
114117
vdev->timeout.boot = 1000;
115118
vdev->timeout.jsm = 500;
116119
vdev->timeout.tdr = 2000;
120+
vdev->timeout.inference = 60000;
117121
if (ivpu_hw_ip_gen(vdev) == IVPU_HW_IP_37XX)
118122
vdev->timeout.autosuspend = 10;
119123
else

drivers/accel/ivpu/ivpu_hw_ip.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,7 @@ static void pwr_island_delay_set(struct ivpu_device *vdev)
683683
return;
684684

685685
switch (ivpu_device_id(vdev)) {
686+
case PCI_DEVICE_ID_WCL:
686687
case PCI_DEVICE_ID_PTL_P:
687688
post = high ? 18 : 0;
688689
post1 = 0;

drivers/accel/ivpu/ivpu_job.c

Lines changed: 53 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// SPDX-License-Identifier: GPL-2.0-only
22
/*
3-
* Copyright (C) 2020-2024 Intel Corporation
3+
* Copyright (C) 2020-2025 Intel Corporation
44
*/
55

66
#include <drm/drm_file.h>
@@ -100,15 +100,51 @@ static struct ivpu_cmdq *ivpu_cmdq_alloc(struct ivpu_file_priv *file_priv)
100100
return NULL;
101101
}
102102

103+
/**
104+
* ivpu_cmdq_get_entry_count - Calculate the number of entries in the command queue.
105+
* @cmdq: Pointer to the command queue structure.
106+
*
107+
* Returns the number of entries that can fit in the command queue memory.
108+
*/
109+
static inline u32 ivpu_cmdq_get_entry_count(struct ivpu_cmdq *cmdq)
110+
{
111+
size_t size = ivpu_bo_size(cmdq->mem) - sizeof(struct vpu_job_queue_header);
112+
113+
return size / sizeof(struct vpu_job_queue_entry);
114+
}
115+
116+
/**
117+
* ivpu_cmdq_get_flags - Get command queue flags based on input flags and test mode.
118+
* @vdev: Pointer to the ivpu device structure.
119+
* @flags: Input flags to determine the command queue flags.
120+
*
121+
* Returns the calculated command queue flags, considering both the input flags
122+
* and the current test mode settings.
123+
*/
124+
static u32 ivpu_cmdq_get_flags(struct ivpu_device *vdev, u32 flags)
125+
{
126+
u32 cmdq_flags = 0;
127+
128+
if ((flags & DRM_IVPU_CMDQ_FLAG_TURBO) && (ivpu_hw_ip_gen(vdev) >= IVPU_HW_IP_40XX))
129+
cmdq_flags |= VPU_JOB_QUEUE_FLAGS_TURBO_MODE;
130+
131+
/* Test mode can override the TURBO flag coming from the application */
132+
if (ivpu_test_mode & IVPU_TEST_MODE_TURBO_ENABLE)
133+
cmdq_flags |= VPU_JOB_QUEUE_FLAGS_TURBO_MODE;
134+
if (ivpu_test_mode & IVPU_TEST_MODE_TURBO_DISABLE)
135+
cmdq_flags &= ~VPU_JOB_QUEUE_FLAGS_TURBO_MODE;
136+
137+
return cmdq_flags;
138+
}
139+
103140
static void ivpu_cmdq_free(struct ivpu_file_priv *file_priv, struct ivpu_cmdq *cmdq)
104141
{
105142
ivpu_preemption_buffers_free(file_priv->vdev, file_priv, cmdq);
106143
ivpu_bo_free(cmdq->mem);
107144
kfree(cmdq);
108145
}
109146

110-
static struct ivpu_cmdq *ivpu_cmdq_create(struct ivpu_file_priv *file_priv, u8 priority,
111-
bool is_legacy)
147+
static struct ivpu_cmdq *ivpu_cmdq_create(struct ivpu_file_priv *file_priv, u8 priority, u32 flags)
112148
{
113149
struct ivpu_device *vdev = file_priv->vdev;
114150
struct ivpu_cmdq *cmdq = NULL;
@@ -121,18 +157,22 @@ static struct ivpu_cmdq *ivpu_cmdq_create(struct ivpu_file_priv *file_priv, u8 p
121157
ivpu_err(vdev, "Failed to allocate command queue\n");
122158
return NULL;
123159
}
124-
125-
cmdq->priority = priority;
126-
cmdq->is_legacy = is_legacy;
127-
128160
ret = xa_alloc_cyclic(&file_priv->cmdq_xa, &cmdq->id, cmdq, file_priv->cmdq_limit,
129161
&file_priv->cmdq_id_next, GFP_KERNEL);
130162
if (ret < 0) {
131163
ivpu_err(vdev, "Failed to allocate command queue ID: %d\n", ret);
132164
goto err_free_cmdq;
133165
}
134166

135-
ivpu_dbg(vdev, JOB, "Command queue %d created, ctx %d\n", cmdq->id, file_priv->ctx.id);
167+
cmdq->entry_count = ivpu_cmdq_get_entry_count(cmdq);
168+
cmdq->priority = priority;
169+
170+
cmdq->jobq = (struct vpu_job_queue *)ivpu_bo_vaddr(cmdq->mem);
171+
cmdq->jobq->header.engine_idx = VPU_ENGINE_COMPUTE;
172+
cmdq->jobq->header.flags = ivpu_cmdq_get_flags(vdev, flags);
173+
174+
ivpu_dbg(vdev, JOB, "Command queue %d created, ctx %d, flags 0x%08x\n",
175+
cmdq->id, file_priv->ctx.id, cmdq->jobq->header.flags);
136176
return cmdq;
137177

138178
err_free_cmdq:
@@ -188,27 +228,14 @@ static int ivpu_register_db(struct ivpu_file_priv *file_priv, struct ivpu_cmdq *
188228
return ret;
189229
}
190230

191-
static void ivpu_cmdq_jobq_init(struct ivpu_device *vdev, struct vpu_job_queue *jobq)
231+
static void ivpu_cmdq_jobq_reset(struct ivpu_device *vdev, struct vpu_job_queue *jobq)
192232
{
193-
jobq->header.engine_idx = VPU_ENGINE_COMPUTE;
194233
jobq->header.head = 0;
195234
jobq->header.tail = 0;
196235

197-
if (ivpu_test_mode & IVPU_TEST_MODE_TURBO) {
198-
ivpu_dbg(vdev, JOB, "Turbo mode enabled");
199-
jobq->header.flags = VPU_JOB_QUEUE_FLAGS_TURBO_MODE;
200-
}
201-
202236
wmb(); /* Flush WC buffer for jobq->header */
203237
}
204238

205-
static inline u32 ivpu_cmdq_get_entry_count(struct ivpu_cmdq *cmdq)
206-
{
207-
size_t size = ivpu_bo_size(cmdq->mem) - sizeof(struct vpu_job_queue_header);
208-
209-
return size / sizeof(struct vpu_job_queue_entry);
210-
}
211-
212239
static int ivpu_cmdq_register(struct ivpu_file_priv *file_priv, struct ivpu_cmdq *cmdq)
213240
{
214241
struct ivpu_device *vdev = file_priv->vdev;
@@ -219,10 +246,7 @@ static int ivpu_cmdq_register(struct ivpu_file_priv *file_priv, struct ivpu_cmdq
219246
if (cmdq->db_id)
220247
return 0;
221248

222-
cmdq->entry_count = ivpu_cmdq_get_entry_count(cmdq);
223-
cmdq->jobq = (struct vpu_job_queue *)ivpu_bo_vaddr(cmdq->mem);
224-
225-
ivpu_cmdq_jobq_init(vdev, cmdq->jobq);
249+
ivpu_cmdq_jobq_reset(vdev, cmdq->jobq);
226250

227251
if (vdev->fw->sched_mode == VPU_SCHEDULING_MODE_HW) {
228252
ret = ivpu_hws_cmdq_init(file_priv, cmdq, VPU_ENGINE_COMPUTE, cmdq->priority);
@@ -291,9 +315,10 @@ static struct ivpu_cmdq *ivpu_cmdq_acquire_legacy(struct ivpu_file_priv *file_pr
291315
break;
292316

293317
if (!cmdq) {
294-
cmdq = ivpu_cmdq_create(file_priv, priority, true);
318+
cmdq = ivpu_cmdq_create(file_priv, priority, 0);
295319
if (!cmdq)
296320
return NULL;
321+
cmdq->is_legacy = true;
297322
}
298323

299324
return cmdq;
@@ -891,7 +916,7 @@ int ivpu_cmdq_create_ioctl(struct drm_device *dev, void *data, struct drm_file *
891916

892917
mutex_lock(&file_priv->lock);
893918

894-
cmdq = ivpu_cmdq_create(file_priv, ivpu_job_to_jsm_priority(args->priority), false);
919+
cmdq = ivpu_cmdq_create(file_priv, ivpu_job_to_jsm_priority(args->priority), args->flags);
895920
if (cmdq)
896921
args->cmdq_id = cmdq->id;
897922

drivers/accel/ivpu/ivpu_pm.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,11 @@ static unsigned long ivpu_tdr_timeout_ms;
3333
module_param_named(tdr_timeout_ms, ivpu_tdr_timeout_ms, ulong, 0644);
3434
MODULE_PARM_DESC(tdr_timeout_ms, "Timeout for device hang detection, in milliseconds, 0 - default");
3535

36+
static unsigned long ivpu_inference_timeout_ms;
37+
module_param_named(inference_timeout_ms, ivpu_inference_timeout_ms, ulong, 0644);
38+
MODULE_PARM_DESC(inference_timeout_ms, "Inference maximum duration, in milliseconds, 0 - default");
39+
3640
#define PM_RESCHEDULE_LIMIT 5
37-
#define PM_TDR_HEARTBEAT_LIMIT 30
3841

3942
static void ivpu_pm_prepare_cold_boot(struct ivpu_device *vdev)
4043
{
@@ -191,15 +194,21 @@ static void ivpu_job_timeout_work(struct work_struct *work)
191194
{
192195
struct ivpu_pm_info *pm = container_of(work, struct ivpu_pm_info, job_timeout_work.work);
193196
struct ivpu_device *vdev = pm->vdev;
197+
unsigned long timeout_ms = ivpu_tdr_timeout_ms ? ivpu_tdr_timeout_ms : vdev->timeout.tdr;
198+
unsigned long inference_timeout_ms = ivpu_inference_timeout_ms ? ivpu_inference_timeout_ms :
199+
vdev->timeout.inference;
200+
u64 inference_max_retries;
194201
u64 heartbeat;
195202

196203
if (ivpu_jsm_get_heartbeat(vdev, 0, &heartbeat) || heartbeat <= vdev->fw->last_heartbeat) {
197204
ivpu_err(vdev, "Job timeout detected, heartbeat not progressed\n");
198205
goto recovery;
199206
}
200207

201-
if (atomic_fetch_inc(&vdev->job_timeout_counter) > PM_TDR_HEARTBEAT_LIMIT) {
202-
ivpu_err(vdev, "Job timeout detected, heartbeat limit exceeded\n");
208+
inference_max_retries = DIV_ROUND_UP(inference_timeout_ms, timeout_ms);
209+
if (atomic_fetch_inc(&vdev->job_timeout_counter) >= inference_max_retries) {
210+
ivpu_err(vdev, "Job timeout detected, heartbeat limit (%lld) exceeded\n",
211+
inference_max_retries);
203212
goto recovery;
204213
}
205214

@@ -408,10 +417,10 @@ void ivpu_pm_init(struct ivpu_device *vdev)
408417
ivpu_dbg(vdev, PM, "Autosuspend delay = %d\n", delay);
409418
}
410419

411-
void ivpu_pm_cancel_recovery(struct ivpu_device *vdev)
420+
void ivpu_pm_disable_recovery(struct ivpu_device *vdev)
412421
{
413422
drm_WARN_ON(&vdev->drm, delayed_work_pending(&vdev->pm->job_timeout_work));
414-
cancel_work_sync(&vdev->pm->recovery_work);
423+
disable_work_sync(&vdev->pm->recovery_work);
415424
}
416425

417426
void ivpu_pm_enable(struct ivpu_device *vdev)

drivers/accel/ivpu/ivpu_pm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ struct ivpu_pm_info {
2525
void ivpu_pm_init(struct ivpu_device *vdev);
2626
void ivpu_pm_enable(struct ivpu_device *vdev);
2727
void ivpu_pm_disable(struct ivpu_device *vdev);
28-
void ivpu_pm_cancel_recovery(struct ivpu_device *vdev);
28+
void ivpu_pm_disable_recovery(struct ivpu_device *vdev);
2929

3030
int ivpu_pm_suspend_cb(struct device *dev);
3131
int ivpu_pm_resume_cb(struct device *dev);

drivers/dma-buf/Kconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ config UDMABUF
3636
depends on DMA_SHARED_BUFFER
3737
depends on MEMFD_CREATE || COMPILE_TEST
3838
depends on MMU
39-
select VMAP_PFN
4039
help
4140
A driver to let userspace turn memfd regions into dma-bufs.
4241
Qemu can use this to create host dmabufs for guest framebuffers.

0 commit comments

Comments
 (0)