@@ -25,10 +25,9 @@ static void xe_sa_bo_manager_fini(struct drm_device *drm, void *arg)
25
25
26
26
drm_suballoc_manager_fini (& sa_manager -> base );
27
27
28
- if (bo -> vmap . is_iomem )
28
+ if (sa_manager -> is_iomem )
29
29
kvfree (sa_manager -> cpu_ptr );
30
30
31
- xe_bo_unpin_map_no_vm (bo );
32
31
sa_manager -> bo = NULL ;
33
32
}
34
33
@@ -47,24 +46,24 @@ struct xe_sa_manager *xe_sa_bo_manager_init(struct xe_tile *tile, u32 size, u32
47
46
48
47
sa_manager -> bo = NULL ;
49
48
50
- bo = xe_bo_create_pin_map (xe , tile , NULL , size , ttm_bo_type_kernel ,
51
- XE_BO_FLAG_VRAM_IF_DGFX (tile ) |
52
- XE_BO_FLAG_GGTT |
53
- XE_BO_FLAG_GGTT_INVALIDATE );
49
+ bo = xe_managed_bo_create_pin_map (xe , tile , size ,
50
+ XE_BO_FLAG_VRAM_IF_DGFX (tile ) |
51
+ XE_BO_FLAG_GGTT |
52
+ XE_BO_FLAG_GGTT_INVALIDATE );
54
53
if (IS_ERR (bo )) {
55
54
drm_err (& xe -> drm , "failed to allocate bo for sa manager: %ld\n" ,
56
55
PTR_ERR (bo ));
57
56
return (struct xe_sa_manager * )bo ;
58
57
}
59
58
sa_manager -> bo = bo ;
59
+ sa_manager -> is_iomem = bo -> vmap .is_iomem ;
60
60
61
61
drm_suballoc_manager_init (& sa_manager -> base , managed_size , align );
62
62
sa_manager -> gpu_addr = xe_bo_ggtt_addr (bo );
63
63
64
64
if (bo -> vmap .is_iomem ) {
65
65
sa_manager -> cpu_ptr = kvzalloc (managed_size , GFP_KERNEL );
66
66
if (!sa_manager -> cpu_ptr ) {
67
- xe_bo_unpin_map_no_vm (sa_manager -> bo );
68
67
sa_manager -> bo = NULL ;
69
68
return ERR_PTR (- ENOMEM );
70
69
}
0 commit comments