drm/i915/gt: Flush retire.work timer object on unload
We need to wait until the timer object is marked as deactivated before unloading, so follow up our gentle cancel_delayed_work() with the synchronous variant to ensure it is flushed off a remote cpu before we mark the memory as freed. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111994 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191115150841.880349-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
aeab92e264
commit
dea397e818
@ -397,6 +397,7 @@ void intel_gt_driver_release(struct intel_gt *gt)
|
||||
void intel_gt_driver_late_release(struct intel_gt *gt)
|
||||
{
|
||||
intel_uc_driver_late_release(>->uc);
|
||||
intel_gt_fini_requests(gt);
|
||||
intel_gt_fini_reset(gt);
|
||||
intel_gt_fini_timelines(gt);
|
||||
}
|
||||
|
@ -130,3 +130,9 @@ void intel_gt_unpark_requests(struct intel_gt *gt)
|
||||
schedule_delayed_work(>->requests.retire_work,
|
||||
round_jiffies_up_relative(HZ));
|
||||
}
|
||||
|
||||
void intel_gt_fini_requests(struct intel_gt *gt)
|
||||
{
|
||||
/* Wait until the work is marked as finished before unloading! */
|
||||
cancel_delayed_work_sync(>->requests.retire_work);
|
||||
}
|
||||
|
@ -20,5 +20,6 @@ int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout);
|
||||
void intel_gt_init_requests(struct intel_gt *gt);
|
||||
void intel_gt_park_requests(struct intel_gt *gt);
|
||||
void intel_gt_unpark_requests(struct intel_gt *gt);
|
||||
void intel_gt_fini_requests(struct intel_gt *gt);
|
||||
|
||||
#endif /* INTEL_GT_REQUESTS_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user