Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drm-intel-next-fixes-2017-09-07' of git://anongit.freedesktop.org/git/drm-intel

Pull i916 drm fixes from Rodrigo Vivi:
"Since Dave is on paternity leave we are sending drm/i915 fixes for
v4.14-rc1 directly to you as he had asked us to do.

The most critical ones are the GPU reset fix for gen2-4 and GVT fix
for a regression that is blocking gvt init to work on your tree.

The rest is general fixes for patches coming from drm-next"

Acked-by: Dave Airlie <airlied@redhat.com>

* tag 'drm-intel-next-fixes-2017-09-07' of git://anongit.freedesktop.org/git/drm-intel:
drm/i915: Re-enable GTT following a device reset
drm/i915: Annotate user relocs with __user
drm/i915: Silence sparse by using gfp_t
drm/i915: Add __rcu to radix tree slot pointer
drm/i915: Fix the missing PPAT cache attributes on CNL
drm/i915/gvt: Remove one duplicated MMIO
drm/i915: Fix enum pipe vs. enum transcoder for the PCH transcoder
drm/i915: Make i2c lock ops static
drm/i915: Make i9xx_load_ycbcr_conversion_matrix() static
drm/i915/edp: Increase T12 panel delay to 900 ms to fix DP AUX CH timeouts
drm/i915: Ignore duplicate VMA stored within the per-object handle LUT
drm/i915: Skip fence alignemnt check for the CCS plane
drm/i915: Treat fb->offsets[] as a raw byte offset instead of a linear offset
drm/i915: Always wake the device to flush the GTT
drm/i915: Recreate vmapping even when the object is pinned
drm/i915: Quietly cancel FBC activation if CRTC is turned off before worker

+130 -85
-1
drivers/gpu/drm/i915/gvt/handlers.c
··· 2659 2659 MMIO_D(HSW_PWR_WELL_CTL_BIOS(SKL_DISP_PW_MISC_IO), D_SKL_PLUS); 2660 2660 MMIO_DH(HSW_PWR_WELL_CTL_DRIVER(SKL_DISP_PW_MISC_IO), D_SKL_PLUS, NULL, 2661 2661 skl_power_well_ctl_write); 2662 - MMIO_DH(GEN6_PCODE_MAILBOX, D_SKL_PLUS, NULL, mailbox_write); 2663 2662 2664 2663 MMIO_D(0xa210, D_SKL_PLUS); 2665 2664 MMIO_D(GEN9_MEDIA_PG_IDLE_HYSTERESIS, D_SKL_PLUS);
+1 -1
drivers/gpu/drm/i915/i915_cmd_parser.c
··· 1073 1073 goto unpin_src; 1074 1074 } 1075 1075 1076 - dst = i915_gem_object_pin_map(dst_obj, I915_MAP_WB); 1076 + dst = i915_gem_object_pin_map(dst_obj, I915_MAP_FORCE_WB); 1077 1077 if (IS_ERR(dst)) 1078 1078 goto unpin_dst; 1079 1079
+9 -3
drivers/gpu/drm/i915/i915_drv.c
··· 1891 1891 1892 1892 /* 1893 1893 * Everything depends on having the GTT running, so we need to start 1894 - * there. Fortunately we don't need to do this unless we reset the 1895 - * chip at a PCI level. 1896 - * 1894 + * there. 1895 + */ 1896 + ret = i915_ggtt_enable_hw(i915); 1897 + if (ret) { 1898 + DRM_ERROR("Failed to re-enable GGTT following reset %d\n", ret); 1899 + goto error; 1900 + } 1901 + 1902 + /* 1897 1903 * Next we need to restore the context, but we don't use those 1898 1904 * yet either... 1899 1905 *
+3
drivers/gpu/drm/i915/i915_drv.h
··· 3479 3479 enum i915_map_type { 3480 3480 I915_MAP_WB = 0, 3481 3481 I915_MAP_WC, 3482 + #define I915_MAP_OVERRIDE BIT(31) 3483 + I915_MAP_FORCE_WB = I915_MAP_WB | I915_MAP_OVERRIDE, 3484 + I915_MAP_FORCE_WC = I915_MAP_WC | I915_MAP_OVERRIDE, 3482 3485 }; 3483 3486 3484 3487 /**
+19 -9
drivers/gpu/drm/i915/i915_gem.c
··· 695 695 switch (obj->base.write_domain) { 696 696 case I915_GEM_DOMAIN_GTT: 697 697 if (INTEL_GEN(dev_priv) >= 6 && !HAS_LLC(dev_priv)) { 698 - if (intel_runtime_pm_get_if_in_use(dev_priv)) { 699 - spin_lock_irq(&dev_priv->uncore.lock); 700 - POSTING_READ_FW(RING_ACTHD(dev_priv->engine[RCS]->mmio_base)); 701 - spin_unlock_irq(&dev_priv->uncore.lock); 702 - intel_runtime_pm_put(dev_priv); 703 - } 698 + intel_runtime_pm_get(dev_priv); 699 + spin_lock_irq(&dev_priv->uncore.lock); 700 + POSTING_READ_FW(RING_ACTHD(dev_priv->engine[RCS]->mmio_base)); 701 + spin_unlock_irq(&dev_priv->uncore.lock); 702 + intel_runtime_pm_put(dev_priv); 704 703 } 705 704 706 705 intel_fb_obj_flush(obj, ··· 2212 2213 static void __i915_gem_object_reset_page_iter(struct drm_i915_gem_object *obj) 2213 2214 { 2214 2215 struct radix_tree_iter iter; 2215 - void **slot; 2216 + void __rcu **slot; 2216 2217 2217 2218 radix_tree_for_each_slot(slot, &obj->mm.get_page.radix, &iter, 0) 2218 2219 radix_tree_delete(&obj->mm.get_page.radix, iter.index); ··· 2552 2553 GEM_BUG_ON(i != n_pages); 2553 2554 2554 2555 switch (type) { 2556 + default: 2557 + MISSING_CASE(type); 2558 + /* fallthrough to use PAGE_KERNEL anyway */ 2555 2559 case I915_MAP_WB: 2556 2560 pgprot = PAGE_KERNEL; 2557 2561 break; ··· 2585 2583 if (ret) 2586 2584 return ERR_PTR(ret); 2587 2585 2588 - pinned = true; 2586 + pinned = !(type & I915_MAP_OVERRIDE); 2587 + type &= ~I915_MAP_OVERRIDE; 2588 + 2589 2589 if (!atomic_inc_not_zero(&obj->mm.pages_pin_count)) { 2590 2590 if (unlikely(IS_ERR_OR_NULL(obj->mm.pages))) { 2591 2591 ret = ____i915_gem_object_get_pages(obj); ··· 3262 3258 3263 3259 vma = radix_tree_delete(&ctx->handles_vma, lut->handle); 3264 3260 3265 - if (!i915_vma_is_ggtt(vma)) 3261 + GEM_BUG_ON(vma->obj != obj); 3262 + 3263 + /* We allow the process to have multiple handles to the same 3264 + * vma, in the same fd namespace, by virtue of flink/open. 3265 + */ 3266 + GEM_BUG_ON(!vma->open_count); 3267 + if (!--vma->open_count && !i915_vma_is_ggtt(vma)) 3266 3268 i915_vma_close(vma); 3267 3269 3268 3270 list_del(&lut->obj_link);
+6 -3
drivers/gpu/drm/i915/i915_gem_execbuffer.c
··· 285 285 * direct lookup. 286 286 */ 287 287 do { 288 - unsigned int flags; 288 + gfp_t flags; 289 289 290 290 /* While we can still reduce the allocation size, don't 291 291 * raise a warning and allow the allocation to fail. ··· 720 720 goto err_obj; 721 721 } 722 722 723 + vma->open_count++; 723 724 list_add(&lut->obj_link, &obj->lut_list); 724 725 list_add(&lut->ctx_link, &eb->ctx->handles_list); 725 726 lut->ctx = eb->ctx; ··· 1071 1070 return PTR_ERR(obj); 1072 1071 1073 1072 cmd = i915_gem_object_pin_map(obj, 1074 - cache->has_llc ? I915_MAP_WB : I915_MAP_WC); 1073 + cache->has_llc ? 1074 + I915_MAP_FORCE_WB : 1075 + I915_MAP_FORCE_WC); 1075 1076 i915_gem_object_unpin_pages(obj); 1076 1077 if (IS_ERR(cmd)) 1077 1078 return PTR_ERR(cmd); ··· 1529 1526 min_t(u64, BIT_ULL(31), size - copied); 1530 1527 1531 1528 if (__copy_from_user((char *)relocs + copied, 1532 - (char *)urelocs + copied, 1529 + (char __user *)urelocs + copied, 1533 1530 len)) { 1534 1531 kvfree(relocs); 1535 1532 err = -EFAULT;
+4 -4
drivers/gpu/drm/i915/i915_gem_gtt.c
··· 2754 2754 I915_WRITE(GEN10_PAT_INDEX(1), GEN8_PPAT_WC | GEN8_PPAT_LLCELLC); 2755 2755 I915_WRITE(GEN10_PAT_INDEX(2), GEN8_PPAT_WT | GEN8_PPAT_LLCELLC); 2756 2756 I915_WRITE(GEN10_PAT_INDEX(3), GEN8_PPAT_UC); 2757 - I915_WRITE(GEN10_PAT_INDEX(4), GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(0)); 2758 - I915_WRITE(GEN10_PAT_INDEX(5), GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(1)); 2759 - I915_WRITE(GEN10_PAT_INDEX(6), GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(2)); 2760 - I915_WRITE(GEN10_PAT_INDEX(7), GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(3)); 2757 + I915_WRITE(GEN10_PAT_INDEX(4), GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(0)); 2758 + I915_WRITE(GEN10_PAT_INDEX(5), GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(1)); 2759 + I915_WRITE(GEN10_PAT_INDEX(6), GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(2)); 2760 + I915_WRITE(GEN10_PAT_INDEX(7), GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(3)); 2761 2761 } 2762 2762 2763 2763 /* The GGTT and PPGTT need a private PPAT setup in order to handle cacheability
+2 -2
drivers/gpu/drm/i915/i915_trace.h
··· 38 38 ); 39 39 40 40 TRACE_EVENT(intel_pch_fifo_underrun, 41 - TP_PROTO(struct drm_i915_private *dev_priv, enum transcoder pch_transcoder), 41 + TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pch_transcoder), 42 42 TP_ARGS(dev_priv, pch_transcoder), 43 43 44 44 TP_STRUCT__entry( ··· 48 48 ), 49 49 50 50 TP_fast_assign( 51 - enum pipe pipe = (enum pipe)pch_transcoder; 51 + enum pipe pipe = pch_transcoder; 52 52 __entry->pipe = pipe; 53 53 __entry->frame = dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, pipe); 54 54 __entry->scanline = intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, pipe));
+6
drivers/gpu/drm/i915/i915_vma.h
··· 59 59 u32 fence_size; 60 60 u32 fence_alignment; 61 61 62 + /** 63 + * Count of the number of times this vma has been opened by different 64 + * handles (but same file) for execbuf, i.e. the number of aliases 65 + * that exist in the ctx->handle_vmas LUT for this vma. 66 + */ 67 + unsigned int open_count; 62 68 unsigned int flags; 63 69 /** 64 70 * How many users have pinned this object in GTT space. The following
+1 -1
drivers/gpu/drm/i915/intel_color.c
··· 107 107 } 108 108 } 109 109 110 - void i9xx_load_ycbcr_conversion_matrix(struct intel_crtc *intel_crtc) 110 + static void i9xx_load_ycbcr_conversion_matrix(struct intel_crtc *intel_crtc) 111 111 { 112 112 int pipe = intel_crtc->pipe; 113 113 struct drm_i915_private *dev_priv = to_i915(intel_crtc->base.dev);
+65 -45
drivers/gpu/drm/i915/intel_display.c
··· 2288 2288 } 2289 2289 } 2290 2290 2291 - /* 2292 - * Input tile dimensions and pitch must already be 2293 - * rotated to match x and y, and in pixel units. 2294 - */ 2295 - static u32 _intel_adjust_tile_offset(int *x, int *y, 2296 - unsigned int tile_width, 2297 - unsigned int tile_height, 2298 - unsigned int tile_size, 2299 - unsigned int pitch_tiles, 2300 - u32 old_offset, 2301 - u32 new_offset) 2291 + static u32 __intel_adjust_tile_offset(int *x, int *y, 2292 + unsigned int tile_width, 2293 + unsigned int tile_height, 2294 + unsigned int tile_size, 2295 + unsigned int pitch_tiles, 2296 + u32 old_offset, 2297 + u32 new_offset) 2302 2298 { 2303 2299 unsigned int pitch_pixels = pitch_tiles * tile_width; 2304 2300 unsigned int tiles; ··· 2315 2319 return new_offset; 2316 2320 } 2317 2321 2318 - /* 2319 - * Adjust the tile offset by moving the difference into 2320 - * the x/y offsets. 2321 - */ 2322 - static u32 intel_adjust_tile_offset(int *x, int *y, 2323 - const struct intel_plane_state *state, int plane, 2324 - u32 old_offset, u32 new_offset) 2322 + static u32 _intel_adjust_tile_offset(int *x, int *y, 2323 + const struct drm_framebuffer *fb, int plane, 2324 + unsigned int rotation, 2325 + u32 old_offset, u32 new_offset) 2325 2326 { 2326 - const struct drm_i915_private *dev_priv = to_i915(state->base.plane->dev); 2327 - const struct drm_framebuffer *fb = state->base.fb; 2327 + const struct drm_i915_private *dev_priv = to_i915(fb->dev); 2328 2328 unsigned int cpp = fb->format->cpp[plane]; 2329 - unsigned int rotation = state->base.rotation; 2330 2329 unsigned int pitch = intel_fb_pitch(fb, plane, rotation); 2331 2330 2332 2331 WARN_ON(new_offset > old_offset); ··· 2340 2349 pitch_tiles = pitch / (tile_width * cpp); 2341 2350 } 2342 2351 2343 - _intel_adjust_tile_offset(x, y, tile_width, tile_height, 2344 - tile_size, pitch_tiles, 2345 - old_offset, new_offset); 2352 + __intel_adjust_tile_offset(x, y, tile_width, tile_height, 2353 + tile_size, pitch_tiles, 2354 + old_offset, new_offset); 2346 2355 } else { 2347 2356 old_offset += *y * pitch + *x * cpp; 2348 2357 ··· 2351 2360 } 2352 2361 2353 2362 return new_offset; 2363 + } 2364 + 2365 + /* 2366 + * Adjust the tile offset by moving the difference into 2367 + * the x/y offsets. 2368 + */ 2369 + static u32 intel_adjust_tile_offset(int *x, int *y, 2370 + const struct intel_plane_state *state, int plane, 2371 + u32 old_offset, u32 new_offset) 2372 + { 2373 + return _intel_adjust_tile_offset(x, y, state->base.fb, plane, 2374 + state->base.rotation, 2375 + old_offset, new_offset); 2354 2376 } 2355 2377 2356 2378 /* ··· 2417 2413 offset = (tile_rows * pitch_tiles + tiles) * tile_size; 2418 2414 offset_aligned = offset & ~alignment; 2419 2415 2420 - _intel_adjust_tile_offset(x, y, tile_width, tile_height, 2421 - tile_size, pitch_tiles, 2422 - offset, offset_aligned); 2416 + __intel_adjust_tile_offset(x, y, tile_width, tile_height, 2417 + tile_size, pitch_tiles, 2418 + offset, offset_aligned); 2423 2419 } else { 2424 2420 offset = *y * pitch + *x * cpp; 2425 2421 offset_aligned = offset & ~alignment; ··· 2451 2447 rotation, alignment); 2452 2448 } 2453 2449 2454 - /* Convert the fb->offset[] linear offset into x/y offsets */ 2455 - static void intel_fb_offset_to_xy(int *x, int *y, 2456 - const struct drm_framebuffer *fb, int plane) 2450 + /* Convert the fb->offset[] into x/y offsets */ 2451 + static int intel_fb_offset_to_xy(int *x, int *y, 2452 + const struct drm_framebuffer *fb, int plane) 2457 2453 { 2458 - unsigned int cpp = fb->format->cpp[plane]; 2459 - unsigned int pitch = fb->pitches[plane]; 2460 - u32 linear_offset = fb->offsets[plane]; 2454 + struct drm_i915_private *dev_priv = to_i915(fb->dev); 2461 2455 2462 - *y = linear_offset / pitch; 2463 - *x = linear_offset % pitch / cpp; 2456 + if (fb->modifier != DRM_FORMAT_MOD_LINEAR && 2457 + fb->offsets[plane] % intel_tile_size(dev_priv)) 2458 + return -EINVAL; 2459 + 2460 + *x = 0; 2461 + *y = 0; 2462 + 2463 + _intel_adjust_tile_offset(x, y, 2464 + fb, plane, DRM_MODE_ROTATE_0, 2465 + fb->offsets[plane], 0); 2466 + 2467 + return 0; 2464 2468 } 2465 2469 2466 2470 static unsigned int intel_fb_modifier_to_tiling(uint64_t fb_modifier) ··· 2535 2523 unsigned int cpp, size; 2536 2524 u32 offset; 2537 2525 int x, y; 2526 + int ret; 2538 2527 2539 2528 cpp = fb->format->cpp[i]; 2540 2529 width = drm_framebuffer_plane_width(fb->width, fb, i); 2541 2530 height = drm_framebuffer_plane_height(fb->height, fb, i); 2542 2531 2543 - intel_fb_offset_to_xy(&x, &y, fb, i); 2532 + ret = intel_fb_offset_to_xy(&x, &y, fb, i); 2533 + if (ret) { 2534 + DRM_DEBUG_KMS("bad fb plane %d offset: 0x%x\n", 2535 + i, fb->offsets[i]); 2536 + return ret; 2537 + } 2544 2538 2545 2539 if ((fb->modifier == I915_FORMAT_MOD_Y_TILED_CCS || 2546 2540 fb->modifier == I915_FORMAT_MOD_Yf_TILED_CCS) && i == 1) { ··· 2557 2539 int ccs_x, ccs_y; 2558 2540 2559 2541 intel_tile_dims(fb, i, &tile_width, &tile_height); 2542 + tile_width *= hsub; 2543 + tile_height *= vsub; 2560 2544 2561 - ccs_x = (x * hsub) % (tile_width * hsub); 2562 - ccs_y = (y * vsub) % (tile_height * vsub); 2563 - main_x = intel_fb->normal[0].x % (tile_width * hsub); 2564 - main_y = intel_fb->normal[0].y % (tile_height * vsub); 2545 + ccs_x = (x * hsub) % tile_width; 2546 + ccs_y = (y * vsub) % tile_height; 2547 + main_x = intel_fb->normal[0].x % tile_width; 2548 + main_y = intel_fb->normal[0].y % tile_height; 2565 2549 2566 2550 /* 2567 2551 * CCS doesn't have its own x/y offset register, so the intra CCS tile ··· 2589 2569 * fb layout agrees with the fence layout. We already check that the 2590 2570 * fb stride matches the fence stride elsewhere. 2591 2571 */ 2592 - if (i915_gem_object_is_tiled(intel_fb->obj) && 2572 + if (i == 0 && i915_gem_object_is_tiled(intel_fb->obj) && 2593 2573 (x + width) * cpp > fb->pitches[i]) { 2594 2574 DRM_DEBUG_KMS("bad fb plane %d offset: 0x%x\n", 2595 2575 i, fb->offsets[i]); ··· 2652 2632 * We only keep the x/y offsets, so push all of the 2653 2633 * gtt offset into the x/y offsets. 2654 2634 */ 2655 - _intel_adjust_tile_offset(&x, &y, 2656 - tile_width, tile_height, 2657 - tile_size, pitch_tiles, 2658 - gtt_offset_rotated * tile_size, 0); 2635 + __intel_adjust_tile_offset(&x, &y, 2636 + tile_width, tile_height, 2637 + tile_size, pitch_tiles, 2638 + gtt_offset_rotated * tile_size, 0); 2659 2639 2660 2640 gtt_offset_rotated += rot_info->plane[i].width * rot_info->plane[i].height; 2661 2641
+1 -1
drivers/gpu/drm/i915/intel_dp.c
··· 5273 5273 * seems sufficient to avoid this problem. 5274 5274 */ 5275 5275 if (dev_priv->quirks & QUIRK_INCREASE_T12_DELAY) { 5276 - vbt.t11_t12 = max_t(u16, vbt.t11_t12, 800 * 10); 5276 + vbt.t11_t12 = max_t(u16, vbt.t11_t12, 900 * 10); 5277 5277 DRM_DEBUG_KMS("Increasing T12 panel delay as per the quirk to %d\n", 5278 5278 vbt.t11_t12); 5279 5279 }
+1 -3
drivers/gpu/drm/i915/intel_fbc.c
··· 406 406 struct drm_vblank_crtc *vblank = &dev_priv->drm.vblank[crtc->pipe]; 407 407 408 408 if (drm_crtc_vblank_get(&crtc->base)) { 409 - DRM_ERROR("vblank not available for FBC on pipe %c\n", 410 - pipe_name(crtc->pipe)); 411 - 409 + /* CRTC is now off, leave FBC deactivated */ 412 410 mutex_lock(&fbc->lock); 413 411 work->scheduled = false; 414 412 mutex_unlock(&fbc->lock);
+10 -10
drivers/gpu/drm/i915/intel_fifo_underrun.c
··· 187 187 } 188 188 189 189 static void ibx_set_fifo_underrun_reporting(struct drm_device *dev, 190 - enum transcoder pch_transcoder, 190 + enum pipe pch_transcoder, 191 191 bool enable) 192 192 { 193 193 struct drm_i915_private *dev_priv = to_i915(dev); 194 - uint32_t bit = (pch_transcoder == TRANSCODER_A) ? 194 + uint32_t bit = (pch_transcoder == PIPE_A) ? 195 195 SDE_TRANSA_FIFO_UNDER : SDE_TRANSB_FIFO_UNDER; 196 196 197 197 if (enable) ··· 203 203 static void cpt_check_pch_fifo_underruns(struct intel_crtc *crtc) 204 204 { 205 205 struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); 206 - enum transcoder pch_transcoder = (enum transcoder) crtc->pipe; 206 + enum pipe pch_transcoder = crtc->pipe; 207 207 uint32_t serr_int = I915_READ(SERR_INT); 208 208 209 209 lockdep_assert_held(&dev_priv->irq_lock); ··· 215 215 POSTING_READ(SERR_INT); 216 216 217 217 trace_intel_pch_fifo_underrun(dev_priv, pch_transcoder); 218 - DRM_ERROR("pch fifo underrun on pch transcoder %s\n", 219 - transcoder_name(pch_transcoder)); 218 + DRM_ERROR("pch fifo underrun on pch transcoder %c\n", 219 + pipe_name(pch_transcoder)); 220 220 } 221 221 222 222 static void cpt_set_fifo_underrun_reporting(struct drm_device *dev, 223 - enum transcoder pch_transcoder, 223 + enum pipe pch_transcoder, 224 224 bool enable, bool old) 225 225 { 226 226 struct drm_i915_private *dev_priv = to_i915(dev); ··· 238 238 239 239 if (old && I915_READ(SERR_INT) & 240 240 SERR_INT_TRANS_FIFO_UNDERRUN(pch_transcoder)) { 241 - DRM_ERROR("uncleared pch fifo underrun on pch transcoder %s\n", 242 - transcoder_name(pch_transcoder)); 241 + DRM_ERROR("uncleared pch fifo underrun on pch transcoder %c\n", 242 + pipe_name(pch_transcoder)); 243 243 } 244 244 } 245 245 } ··· 395 395 if (intel_set_pch_fifo_underrun_reporting(dev_priv, pch_transcoder, 396 396 false)) { 397 397 trace_intel_pch_fifo_underrun(dev_priv, pch_transcoder); 398 - DRM_ERROR("PCH transcoder %s FIFO underrun\n", 399 - transcoder_name(pch_transcoder)); 398 + DRM_ERROR("PCH transcoder %c FIFO underrun\n", 399 + pipe_name(pch_transcoder)); 400 400 } 401 401 } 402 402
+1 -1
drivers/gpu/drm/i915/intel_i2c.c
··· 649 649 mutex_unlock(&dev_priv->gmbus_mutex); 650 650 } 651 651 652 - const struct i2c_lock_operations gmbus_lock_ops = { 652 + static const struct i2c_lock_operations gmbus_lock_ops = { 653 653 .lock_bus = gmbus_lock_bus, 654 654 .trylock_bus = gmbus_trylock_bus, 655 655 .unlock_bus = gmbus_unlock_bus,
+1 -1
drivers/gpu/drm/i915/intel_sdvo.c
··· 2980 2980 sdvo->i2c->lock_ops->unlock_bus(sdvo->i2c, flags); 2981 2981 } 2982 2982 2983 - const struct i2c_lock_operations proxy_lock_ops = { 2983 + static const struct i2c_lock_operations proxy_lock_ops = { 2984 2984 .lock_bus = proxy_lock_bus, 2985 2985 .trylock_bus = proxy_trylock_bus, 2986 2986 .unlock_bus = proxy_unlock_bus,