diff options
author | Dave Airlie <airlied@redhat.com> | 2018-09-27 19:37:51 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-09-27 19:37:55 -0400 |
commit | db9825c95498280718c4687fcf712016f5b6f5f6 (patch) | |
tree | 01661a811bcd16a7b6f3ee9790e77da75fd178b0 /drivers/gpu/drm/i915/i915_gpu_error.c | |
parent | 156e60bc71aa31a3b42b1d66a822c2999bd0994c (diff) | |
parent | 448626103dad54ec5d06722e955586b5d557625d (diff) |
Merge tag 'drm-intel-next-2018-09-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
Driver Changes:
- Bugzilla 107600: Fix stuttering video playback on MythTV on old hardware (Chris)
- Avoid black screen when using CSC coefficient matrix (Raviraj)
- Hammer PDs on Baytrail to make sure they reload (Chris)
- Capture some objects if unable to capture all, on error (Chris)
- Add W/A for 16 GB DIMMs on SKL+ (Mahesh)
- Only enable IPC for symmetric memory configurations on KBL+ (Mahesh)
- Assume pipe A to have maximum stride limits (Ville)
- Always update update OA contexts via context image (Tvrtko)
- Icelake enabling patches (Madhav, Dhinakaran)
- Add Icelake DMC firmware (Anusha)
- Fixes for CI found corner cases (Chris)
- Limit the backpressure for request allocation (Chris)
- Park GPU on module load so usage starts from known state (Chris)
- Flush tasklet when checking for idle (Chris)
- Use coherent write into the context image on BSW+ (Chris)
- Fix possible integer overflow for framebuffers that get aligned past 4GiB (Ville)
- Downgrade fence timeout from warn to notice and add debug hint (Chris)
- Fixes to multi function encoder code (Ville)
- Fix sprite plane check logic (Dan, Ville)
- PAGE_SIZE vs. I915_GTT_PAGE_SIZE fixes (Ville)
- Decode memory bandwidth and parameters for BXT and SKL+ (Mahesh)
- Overwrite BIOS set IPC value from KMS (Mahesh)
- Multiple pipe handling code cleanups/restructurings/optimizations (Ville)
- Spare low 4G address for non-48bit objects (Chris)
- Free context_setparam of struct_mutex (Chris)
- Delay updating ring register state on resume (Chris)
- Avoid unnecessarily copying overlay IOCTL parameters (Chris)
- Update GuC power domain states even without submission (Michal)
- Restore GuC preempt-context across S3/S4 (Chris)
- Add kernel selftest for rapid context switching (Chris)
- Keep runtime power management ref for live selftests (Chris)
- GEM code cleanups (Matt)
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180927095933.GA11458@jlahtine-desk.ger.corp.intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gpu_error.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gpu_error.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c index f7f2aa71d8d9..2835cacd0d08 100644 --- a/drivers/gpu/drm/i915/i915_gpu_error.c +++ b/drivers/gpu/drm/i915/i915_gpu_error.c | |||
@@ -1365,15 +1365,20 @@ static void request_record_user_bo(struct i915_request *request, | |||
1365 | { | 1365 | { |
1366 | struct i915_capture_list *c; | 1366 | struct i915_capture_list *c; |
1367 | struct drm_i915_error_object **bo; | 1367 | struct drm_i915_error_object **bo; |
1368 | long count; | 1368 | long count, max; |
1369 | 1369 | ||
1370 | count = 0; | 1370 | max = 0; |
1371 | for (c = request->capture_list; c; c = c->next) | 1371 | for (c = request->capture_list; c; c = c->next) |
1372 | count++; | 1372 | max++; |
1373 | if (!max) | ||
1374 | return; | ||
1373 | 1375 | ||
1374 | bo = NULL; | 1376 | bo = kmalloc_array(max, sizeof(*bo), GFP_ATOMIC); |
1375 | if (count) | 1377 | if (!bo) { |
1376 | bo = kcalloc(count, sizeof(*bo), GFP_ATOMIC); | 1378 | /* If we can't capture everything, try to capture something. */ |
1379 | max = min_t(long, max, PAGE_SIZE / sizeof(*bo)); | ||
1380 | bo = kmalloc_array(max, sizeof(*bo), GFP_ATOMIC); | ||
1381 | } | ||
1377 | if (!bo) | 1382 | if (!bo) |
1378 | return; | 1383 | return; |
1379 | 1384 | ||
@@ -1382,7 +1387,8 @@ static void request_record_user_bo(struct i915_request *request, | |||
1382 | bo[count] = i915_error_object_create(request->i915, c->vma); | 1387 | bo[count] = i915_error_object_create(request->i915, c->vma); |
1383 | if (!bo[count]) | 1388 | if (!bo[count]) |
1384 | break; | 1389 | break; |
1385 | count++; | 1390 | if (++count == max) |
1391 | break; | ||
1386 | } | 1392 | } |
1387 | 1393 | ||
1388 | ee->user_bo = bo; | 1394 | ee->user_bo = bo; |