@@ -996,10 +996,8 @@ int msm_gem_new_handle(struct drm_device *dev, struct drm_file *file,
996
996
997
997
static int msm_gem_new_impl (struct drm_device * dev ,
998
998
uint32_t size , uint32_t flags ,
999
- struct drm_gem_object * * obj ,
1000
- bool struct_mutex_locked )
999
+ struct drm_gem_object * * obj )
1001
1000
{
1002
- struct msm_drm_private * priv = dev -> dev_private ;
1003
1001
struct msm_gem_object * msm_obj ;
1004
1002
1005
1003
switch (flags & MSM_BO_CACHE_MASK ) {
@@ -1025,15 +1023,6 @@ static int msm_gem_new_impl(struct drm_device *dev,
1025
1023
INIT_LIST_HEAD (& msm_obj -> submit_entry );
1026
1024
INIT_LIST_HEAD (& msm_obj -> vmas );
1027
1025
1028
- if (struct_mutex_locked ) {
1029
- WARN_ON (!mutex_is_locked (& dev -> struct_mutex ));
1030
- list_add_tail (& msm_obj -> mm_list , & priv -> inactive_list );
1031
- } else {
1032
- mutex_lock (& dev -> struct_mutex );
1033
- list_add_tail (& msm_obj -> mm_list , & priv -> inactive_list );
1034
- mutex_unlock (& dev -> struct_mutex );
1035
- }
1036
-
1037
1026
* obj = & msm_obj -> base ;
1038
1027
1039
1028
return 0 ;
@@ -1043,6 +1032,7 @@ static struct drm_gem_object *_msm_gem_new(struct drm_device *dev,
1043
1032
uint32_t size , uint32_t flags , bool struct_mutex_locked )
1044
1033
{
1045
1034
struct msm_drm_private * priv = dev -> dev_private ;
1035
+ struct msm_gem_object * msm_obj ;
1046
1036
struct drm_gem_object * obj = NULL ;
1047
1037
bool use_vram = false;
1048
1038
int ret ;
@@ -1063,14 +1053,15 @@ static struct drm_gem_object *_msm_gem_new(struct drm_device *dev,
1063
1053
if (size == 0 )
1064
1054
return ERR_PTR (- EINVAL );
1065
1055
1066
- ret = msm_gem_new_impl (dev , size , flags , & obj , struct_mutex_locked );
1056
+ ret = msm_gem_new_impl (dev , size , flags , & obj );
1067
1057
if (ret )
1068
1058
goto fail ;
1069
1059
1060
+ msm_obj = to_msm_bo (obj );
1061
+
1070
1062
if (use_vram ) {
1071
1063
struct msm_gem_vma * vma ;
1072
1064
struct page * * pages ;
1073
- struct msm_gem_object * msm_obj = to_msm_bo (obj );
1074
1065
1075
1066
mutex_lock (& msm_obj -> lock );
1076
1067
@@ -1105,6 +1096,15 @@ static struct drm_gem_object *_msm_gem_new(struct drm_device *dev,
1105
1096
mapping_set_gfp_mask (obj -> filp -> f_mapping , GFP_HIGHUSER );
1106
1097
}
1107
1098
1099
+ if (struct_mutex_locked ) {
1100
+ WARN_ON (!mutex_is_locked (& dev -> struct_mutex ));
1101
+ list_add_tail (& msm_obj -> mm_list , & priv -> inactive_list );
1102
+ } else {
1103
+ mutex_lock (& dev -> struct_mutex );
1104
+ list_add_tail (& msm_obj -> mm_list , & priv -> inactive_list );
1105
+ mutex_unlock (& dev -> struct_mutex );
1106
+ }
1107
+
1108
1108
return obj ;
1109
1109
1110
1110
fail :
@@ -1127,6 +1127,7 @@ struct drm_gem_object *msm_gem_new(struct drm_device *dev,
1127
1127
struct drm_gem_object * msm_gem_import (struct drm_device * dev ,
1128
1128
struct dma_buf * dmabuf , struct sg_table * sgt )
1129
1129
{
1130
+ struct msm_drm_private * priv = dev -> dev_private ;
1130
1131
struct msm_gem_object * msm_obj ;
1131
1132
struct drm_gem_object * obj ;
1132
1133
uint32_t size ;
@@ -1140,7 +1141,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
1140
1141
1141
1142
size = PAGE_ALIGN (dmabuf -> size );
1142
1143
1143
- ret = msm_gem_new_impl (dev , size , MSM_BO_WC , & obj , false );
1144
+ ret = msm_gem_new_impl (dev , size , MSM_BO_WC , & obj );
1144
1145
if (ret )
1145
1146
goto fail ;
1146
1147
@@ -1165,6 +1166,11 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
1165
1166
}
1166
1167
1167
1168
mutex_unlock (& msm_obj -> lock );
1169
+
1170
+ mutex_lock (& dev -> struct_mutex );
1171
+ list_add_tail (& msm_obj -> mm_list , & priv -> inactive_list );
1172
+ mutex_unlock (& dev -> struct_mutex );
1173
+
1168
1174
return obj ;
1169
1175
1170
1176
fail :
0 commit comments