Summary: | [CI][SHARDS] igt@i915_selftest@live_evict - incomplete - RIP: \d+:__queue_work | ||
---|---|---|---|
Product: | DRI | Reporter: | Martin Peres <martin.peres> |
Component: | DRM/Intel | Assignee: | Intel GFX Bugs mailing list <intel-gfx-bugs> |
Status: | RESOLVED FIXED | QA Contact: | Intel GFX Bugs mailing list <intel-gfx-bugs> |
Severity: | normal | ||
Priority: | high | CC: | intel-gfx-bugs |
Version: | XOrg git | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | ReadyForDev | ||
i915 platform: | SKL | i915 features: | GEM/Other |
Description
Martin Peres
2019-04-26 06:22:45 UTC
The CI Bug Log issue associated to this bug has been updated. ### New filters associated * SKL: igt@i915_selftest@live_evict - incomplete - RIP: \d+:__queue_work - https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_5990/shard-skl2/igt@i915_selftest@live_evict.html That's a secondary bug from the previous failure. We left state dangling which then exploded when it ran at the wrong time. commit dc76e5764a46ffb2e7f502a86b3288b5edcce191 (HEAD -> drm-intel-next-queued, drm-intel/drm-intel-next-queued) Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed May 1 14:57:51 2019 +0100 drm/i915: Complete both freed-object passes before draining the workqueue The workqueue code complains viciously if we try to queue more work onto the queue while attampting to drain it. As we asynchronously free objects and defer their enqueuing with RCU, it is quite tricky to quiesce the system before attempting to drain the workqueue. Yet drain we must to ensure that the worker is idle before unloading the module. Give the freed object drain 3 whole passes with multiple rcu_barrier() to give the defer freeing of several levels each protected by RCU and needing a grace period before its parent can be freed, ultimately resulting in a GEM object being freed after another RCU period. A consequence is that it will make module unload even slower. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110550 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190501135753.8711-1-chris@chris-wilson.co.uk (In reply to Chris Wilson from comment #3) > commit dc76e5764a46ffb2e7f502a86b3288b5edcce191 (HEAD -> > drm-intel-next-queued, drm-intel/drm-intel-next-queued) > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Wed May 1 14:57:51 2019 +0100 > > drm/i915: Complete both freed-object passes before draining the workqueue > > The workqueue code complains viciously if we try to queue more work onto > the queue while attampting to drain it. As we asynchronously free > objects and defer their enqueuing with RCU, it is quite tricky to > quiesce the system before attempting to drain the workqueue. Yet drain > we must to ensure that the worker is idle before unloading the module. > > Give the freed object drain 3 whole passes with multiple rcu_barrier() > to give the defer freeing of several levels each protected by RCU and > needing a grace period before its parent can be freed, ultimately > resulting in a GEM object being freed after another RCU period. > > A consequence is that it will make module unload even slower. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110550 > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Reviewed-by: Matthew Auld <matthew.auld@intel.com> > Link: > https://patchwork.freedesktop.org/patch/msgid/20190501135753.8711-1- > chris@chris-wilson.co.uk Thanks, it did the trick! The CI Bug Log issue associated to this bug has been archived. New failures matching the above filters will not be associated to this bug anymore. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.