@@ -556,23 +556,12 @@ pvr_vm_create_context(struct pvr_device *pvr_dev, bool is_userspace_context)
556556 if (!vm_ctx )
557557 return ERR_PTR (- ENOMEM );
558558
559- drm_gem_private_object_init (& pvr_dev -> base , & vm_ctx -> dummy_gem , 0 );
560-
561559 vm_ctx -> pvr_dev = pvr_dev ;
562- kref_init (& vm_ctx -> ref_count );
563- mutex_init (& vm_ctx -> lock );
564-
565- drm_gpuvm_init (& vm_ctx -> gpuvm_mgr ,
566- is_userspace_context ? "PowerVR-user-VM" : "PowerVR-FW-VM" ,
567- 0 , & pvr_dev -> base , & vm_ctx -> dummy_gem ,
568- 0 , 1ULL << device_addr_bits , 0 , 0 , & pvr_vm_gpuva_ops );
569560
570561 vm_ctx -> mmu_ctx = pvr_mmu_context_create (pvr_dev );
571- err = PTR_ERR_OR_ZERO (& vm_ctx -> mmu_ctx );
572- if (err ) {
573- vm_ctx -> mmu_ctx = NULL ;
574- goto err_put_ctx ;
575- }
562+ err = PTR_ERR_OR_ZERO (vm_ctx -> mmu_ctx );
563+ if (err )
564+ goto err_free ;
576565
577566 if (is_userspace_context ) {
578567 err = pvr_fw_object_create (pvr_dev , sizeof (struct rogue_fwif_fwmemcontext ),
@@ -583,13 +572,22 @@ pvr_vm_create_context(struct pvr_device *pvr_dev, bool is_userspace_context)
583572 goto err_page_table_destroy ;
584573 }
585574
575+ drm_gem_private_object_init (& pvr_dev -> base , & vm_ctx -> dummy_gem , 0 );
576+ drm_gpuvm_init (& vm_ctx -> gpuvm_mgr ,
577+ is_userspace_context ? "PowerVR-user-VM" : "PowerVR-FW-VM" ,
578+ 0 , & pvr_dev -> base , & vm_ctx -> dummy_gem ,
579+ 0 , 1ULL << device_addr_bits , 0 , 0 , & pvr_vm_gpuva_ops );
580+
581+ mutex_init (& vm_ctx -> lock );
582+ kref_init (& vm_ctx -> ref_count );
583+
586584 return vm_ctx ;
587585
588586err_page_table_destroy :
589587 pvr_mmu_context_destroy (vm_ctx -> mmu_ctx );
590588
591- err_put_ctx :
592- pvr_vm_context_put (vm_ctx );
589+ err_free :
590+ kfree (vm_ctx );
593591
594592 return ERR_PTR (err );
595593}
0 commit comments