@@ -94,8 +94,7 @@ struct intel_fbc {
94
94
struct mutex lock ;
95
95
unsigned int busy_bits ;
96
96
97
- struct drm_mm_node compressed_fb ;
98
- struct drm_mm_node compressed_llb ;
97
+ struct i915_stolen_fb compressed_fb , compressed_llb ;
99
98
100
99
enum intel_fbc_id id ;
101
100
@@ -332,15 +331,16 @@ static void i8xx_fbc_program_cfb(struct intel_fbc *fbc)
332
331
{
333
332
struct drm_i915_private * i915 = fbc -> i915 ;
334
333
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 ));
340
340
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 ) );
342
342
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 ) );
344
344
}
345
345
346
346
static const struct intel_fbc_funcs i8xx_fbc_funcs = {
@@ -447,7 +447,8 @@ static void g4x_fbc_program_cfb(struct intel_fbc *fbc)
447
447
{
448
448
struct drm_i915_private * i915 = fbc -> i915 ;
449
449
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 ));
451
452
}
452
453
453
454
static const struct intel_fbc_funcs g4x_fbc_funcs = {
@@ -498,7 +499,8 @@ static void ilk_fbc_program_cfb(struct intel_fbc *fbc)
498
499
{
499
500
struct drm_i915_private * i915 = fbc -> i915 ;
500
501
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 ));
502
504
}
503
505
504
506
static const struct intel_fbc_funcs ilk_fbc_funcs = {
@@ -713,7 +715,7 @@ static u64 intel_fbc_stolen_end(struct drm_i915_private *i915)
713
715
* underruns, even if that range is not reserved by the BIOS. */
714
716
if (IS_BROADWELL (i915 ) ||
715
717
(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 ;
717
719
else
718
720
end = U64_MAX ;
719
721
@@ -770,9 +772,9 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc,
770
772
int ret ;
771
773
772
774
drm_WARN_ON (& i915 -> drm ,
773
- drm_mm_node_allocated (& fbc -> compressed_fb ));
775
+ i915_gem_stolen_node_allocated (& fbc -> compressed_fb ));
774
776
drm_WARN_ON (& i915 -> drm ,
775
- drm_mm_node_allocated (& fbc -> compressed_llb ));
777
+ i915_gem_stolen_node_allocated (& fbc -> compressed_llb ));
776
778
777
779
if (DISPLAY_VER (i915 ) < 5 && !IS_G4X (i915 )) {
778
780
ret = i915_gem_stolen_insert_node (i915 , & fbc -> compressed_llb ,
@@ -792,15 +794,14 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc,
792
794
793
795
drm_dbg_kms (& i915 -> drm ,
794
796
"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 );
797
798
return 0 ;
798
799
799
800
err_llb :
800
- if (drm_mm_node_allocated (& fbc -> compressed_llb ))
801
+ if (i915_gem_stolen_node_allocated (& fbc -> compressed_llb ))
801
802
i915_gem_stolen_remove_node (i915 , & fbc -> compressed_llb );
802
803
err :
803
- if (drm_mm_initialized ( & i915 -> mm . stolen ))
804
+ if (i915_gem_stolen_initialized ( i915 ))
804
805
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 );
805
806
return - ENOSPC ;
806
807
}
@@ -825,9 +826,9 @@ static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
825
826
if (WARN_ON (intel_fbc_hw_is_active (fbc )))
826
827
return ;
827
828
828
- if (drm_mm_node_allocated (& fbc -> compressed_llb ))
829
+ if (i915_gem_stolen_node_allocated (& fbc -> compressed_llb ))
829
830
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 ))
831
832
i915_gem_stolen_remove_node (i915 , & fbc -> compressed_fb );
832
833
}
833
834
@@ -1030,7 +1031,8 @@ static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state)
1030
1031
struct intel_fbc * fbc = plane -> fbc ;
1031
1032
1032
1033
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 );
1034
1036
}
1035
1037
1036
1038
static 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)
1707
1709
{
1708
1710
enum intel_fbc_id fbc_id ;
1709
1711
1710
- if (!drm_mm_initialized ( & i915 -> mm . stolen ))
1712
+ if (!i915_gem_stolen_initialized ( i915 ))
1711
1713
DISPLAY_RUNTIME_INFO (i915 )-> fbc_mask = 0 ;
1712
1714
1713
1715
if (need_fbc_vtd_wa (i915 ))
0 commit comments