• Bruce Chang's avatar
    drm/i915: Avoid atomic context for error capture · 48715f70
    Bruce Chang authored
    io_mapping_map_atomic/kmap_atomic are occasionally taken in error capture
    (if there is no aperture preallocated for the use of error capture), but
    the error capture and compression routines are now run in normal
    context:
    
    <3> [113.316247] BUG: sleeping function called from invalid context at mm/page_alloc.c:4653
    <3> [113.318190] in_atomic(): 1, irqs_disabled(): 0, pid: 678, name: debugfs_test
    <4> [113.319900] no locks held by debugfs_test/678.
    <3> [113.321002] Preemption disabled at:
    <4> [113.321130] [<ffffffffa02506d4>] i915_error_object_create+0x494/0x610 [i915]
    <4> [113.327259] Call Trace:
    <4> [113.327871] dump_stack+0x67/0x9b
    <4> [113.328683] ___might_sleep+0x167/0x250
    <4> [113.329618] __alloc_pages_nodemask+0x26b/0x1110
    <4> [113.334614] pool_alloc.constprop.19+0x14/0x60 [i915]
    <4> [113.335951] compress_page+0x7c/0x100 [i915]
    <4> [113.337110] i915_error_object_create+0x4bd/0x610 [i915]
    <4> [113.338515] i915_capture_gpu_state+0x384/0x1680 [i915]
    
    However, it is not a good idea to run the slow compression inside atomic
    context, so we choose not to.
    
    Fixes: 895d8ebe ("drm/i915: error capture with no ggtt slot")
    Signed-off-by: default avatarBruce Chang <yu.bruce.chang@intel.com>
    Reviewed-by: default avatarBrian Welty <brian.welty@intel.com>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191113231104.24208-1-yu.bruce.chang@intel.com
    48715f70
i915_gpu_error.c 46.2 KB