Chris Wilson [26.08.2020 15:27]: > On 32b, highmem uses a finite set of indirect PTE (i.e. vmap) to provide > virtual mappings of the high pages. As these are finite, map_new_virtual() > must wait for some other kmap() to finish when it runs out. If we map a > large number of objects, there is no method for it to tell us to release > the mappings, and we deadlock. > > However, if we make an explicit vmap of the page, that uses a larger > vmalloc arena, and also has the ability to tell us to release unwanted > mappings. Most importantly, it will fail and propagate an error instead > of waiting forever. > > Fixes: fb8621d3bee8 ("drm/i915: Avoid allocating a vmap arena for a single page") #x86-32 > References: e87666b52f00 ("drm/i915/shrinker: Hook up vmap allocation failure notifier") > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Harald Arnesen <harald@xxxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> # v4.7+ Sorry, doesn't help on my machine (Thinkpad T520). -- Hilsen Harald