On Tue, Nov 26, 2013 at 04:55:50PM -0800, Ben Widawsky wrote: > If we end up calling the shrinker, which in turn requires the OOM > killer, we may end up infinitely waiting for a process to die if the OOM > chooses. The case that this prevents occurs in execbuf. The forked > variants of gem_evict_everything is a good way to hit it. This is > exacerbated by Daniel's recent patch to give OOM precedence to the GEM > tests. > > It's a twisted form of a deadlock. > > What occurs is the following (assume just 2 procs) > 1. proc A gets to execbuf while out of memory, gets struct_mutex. > 2. OOM killer comes in and chooses proc B > 3. proc B closes it's fds, which requires struct mutex, blocks > 4, OOM killer waits for B to die before killing another process (this > part is speculative) > It appears that by itself, this patch is insufficient to prevent the failure when run in piglit. Before I go on a wild goose chase of finding all allocations, maybe I'll give people a chance to chime in. The symptom is the same always, OOM, procs can't die because struct_mutex is held. > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Ben Widawsky <ben@xxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index fb2d548..a60894d 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -1842,12 +1842,12 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) > BUG_ON(obj->base.read_domains & I915_GEM_GPU_DOMAINS); > BUG_ON(obj->base.write_domain & I915_GEM_GPU_DOMAINS); > > - st = kmalloc(sizeof(*st), GFP_KERNEL); > + st = kmalloc(sizeof(*st), GFP_NOWAIT); > if (st == NULL) > return -ENOMEM; > > page_count = obj->base.size / PAGE_SIZE; > - if (sg_alloc_table(st, page_count, GFP_KERNEL)) { > + if (sg_alloc_table(st, page_count, GFP_NOWAIT)) { > kfree(st); > return -ENOMEM; > } > -- > 1.8.4.2 > -- Ben Widawsky, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx