@@ -94,8 +94,7 @@ struct intel_fbc {
9494 struct mutex lock ;
9595 unsigned int busy_bits ;
9696
97- struct drm_mm_node compressed_fb ;
98- struct drm_mm_node compressed_llb ;
97+ struct i915_stolen_fb compressed_fb , compressed_llb ;
9998
10099 enum intel_fbc_id id ;
101100
@@ -332,15 +331,16 @@ static void i8xx_fbc_program_cfb(struct intel_fbc *fbc)
332331{
333332 struct drm_i915_private * i915 = fbc -> i915 ;
334333
335- GEM_BUG_ON (range_overflows_end_t (u64 , i915 -> dsm .stolen .start ,
336- fbc -> compressed_fb .start , U32_MAX ));
337- GEM_BUG_ON (range_overflows_end_t (u64 , i915 -> dsm .stolen .start ,
338- fbc -> compressed_llb .start , U32_MAX ));
339-
334+ GEM_BUG_ON (range_overflows_end_t (u64 , i915_gem_stolen_area_address (i915 ),
335+ i915_gem_stolen_node_offset (& fbc -> compressed_fb ),
336+ U32_MAX ));
337+ GEM_BUG_ON (range_overflows_end_t (u64 , i915_gem_stolen_area_address (i915 ),
338+ i915_gem_stolen_node_offset (& fbc -> compressed_llb ),
339+ U32_MAX ));
340340 intel_de_write (i915 , FBC_CFB_BASE ,
341- i915 -> dsm . stolen . start + fbc -> compressed_fb . start );
341+ i915_gem_stolen_node_address ( i915 , & fbc -> compressed_fb ) );
342342 intel_de_write (i915 , FBC_LL_BASE ,
343- i915 -> dsm . stolen . start + fbc -> compressed_llb . start );
343+ i915_gem_stolen_node_address ( i915 , & fbc -> compressed_llb ) );
344344}
345345
346346static const struct intel_fbc_funcs i8xx_fbc_funcs = {
@@ -447,7 +447,8 @@ static void g4x_fbc_program_cfb(struct intel_fbc *fbc)
447447{
448448 struct drm_i915_private * i915 = fbc -> i915 ;
449449
450- intel_de_write (i915 , DPFC_CB_BASE , fbc -> compressed_fb .start );
450+ intel_de_write (i915 , DPFC_CB_BASE ,
451+ i915_gem_stolen_node_offset (& fbc -> compressed_fb ));
451452}
452453
453454static const struct intel_fbc_funcs g4x_fbc_funcs = {
@@ -498,7 +499,8 @@ static void ilk_fbc_program_cfb(struct intel_fbc *fbc)
498499{
499500 struct drm_i915_private * i915 = fbc -> i915 ;
500501
501- intel_de_write (i915 , ILK_DPFC_CB_BASE (fbc -> id ), fbc -> compressed_fb .start );
502+ intel_de_write (i915 , ILK_DPFC_CB_BASE (fbc -> id ),
503+ i915_gem_stolen_node_offset (& fbc -> compressed_fb ));
502504}
503505
504506static const struct intel_fbc_funcs ilk_fbc_funcs = {
@@ -713,7 +715,7 @@ static u64 intel_fbc_stolen_end(struct drm_i915_private *i915)
713715 * underruns, even if that range is not reserved by the BIOS. */
714716 if (IS_BROADWELL (i915 ) ||
715717 (DISPLAY_VER (i915 ) == 9 && !IS_BROXTON (i915 )))
716- end = resource_size ( & i915 -> dsm . stolen ) - 8 * 1024 * 1024 ;
718+ end = i915_gem_stolen_area_size ( i915 ) - 8 * 1024 * 1024 ;
717719 else
718720 end = U64_MAX ;
719721
@@ -770,9 +772,9 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc,
770772 int ret ;
771773
772774 drm_WARN_ON (& i915 -> drm ,
773- drm_mm_node_allocated (& fbc -> compressed_fb ));
775+ i915_gem_stolen_node_allocated (& fbc -> compressed_fb ));
774776 drm_WARN_ON (& i915 -> drm ,
775- drm_mm_node_allocated (& fbc -> compressed_llb ));
777+ i915_gem_stolen_node_allocated (& fbc -> compressed_llb ));
776778
777779 if (DISPLAY_VER (i915 ) < 5 && !IS_G4X (i915 )) {
778780 ret = i915_gem_stolen_insert_node (i915 , & fbc -> compressed_llb ,
@@ -792,15 +794,14 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc,
792794
793795 drm_dbg_kms (& i915 -> drm ,
794796 "reserved %llu bytes of contiguous stolen space for FBC, limit: %d\n" ,
795- fbc -> compressed_fb .size , fbc -> limit );
796-
797+ i915_gem_stolen_node_size (& fbc -> compressed_fb ), fbc -> limit );
797798 return 0 ;
798799
799800err_llb :
800- if (drm_mm_node_allocated (& fbc -> compressed_llb ))
801+ if (i915_gem_stolen_node_allocated (& fbc -> compressed_llb ))
801802 i915_gem_stolen_remove_node (i915 , & fbc -> compressed_llb );
802803err :
803- if (drm_mm_initialized ( & i915 -> mm . stolen ))
804+ if (i915_gem_stolen_initialized ( i915 ))
804805 drm_info_once (& i915 -> drm , "not enough stolen space for compressed buffer (need %d more bytes), disabling. Hint: you may be able to increase stolen memory size in the BIOS to avoid this.\n" , size );
805806 return - ENOSPC ;
806807}
@@ -825,9 +826,9 @@ static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
825826 if (WARN_ON (intel_fbc_hw_is_active (fbc )))
826827 return ;
827828
828- if (drm_mm_node_allocated (& fbc -> compressed_llb ))
829+ if (i915_gem_stolen_node_allocated (& fbc -> compressed_llb ))
829830 i915_gem_stolen_remove_node (i915 , & fbc -> compressed_llb );
830- if (drm_mm_node_allocated (& fbc -> compressed_fb ))
831+ if (i915_gem_stolen_node_allocated (& fbc -> compressed_fb ))
831832 i915_gem_stolen_remove_node (i915 , & fbc -> compressed_fb );
832833}
833834
@@ -1030,7 +1031,8 @@ static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state)
10301031 struct intel_fbc * fbc = plane -> fbc ;
10311032
10321033 return intel_fbc_min_limit (plane_state ) <= fbc -> limit &&
1033- intel_fbc_cfb_size (plane_state ) <= fbc -> compressed_fb .size * fbc -> limit ;
1034+ intel_fbc_cfb_size (plane_state ) <= fbc -> limit *
1035+ i915_gem_stolen_node_size (& fbc -> compressed_fb );
10341036}
10351037
10361038static bool intel_fbc_is_ok (const struct intel_plane_state * plane_state )
@@ -1707,7 +1709,7 @@ void intel_fbc_init(struct drm_i915_private *i915)
17071709{
17081710 enum intel_fbc_id fbc_id ;
17091711
1710- if (!drm_mm_initialized ( & i915 -> mm . stolen ))
1712+ if (!i915_gem_stolen_initialized ( i915 ))
17111713 DISPLAY_RUNTIME_INFO (i915 )-> fbc_mask = 0 ;
17121714
17131715 if (need_fbc_vtd_wa (i915 ))
0 commit comments