1*4882a593Smuzhiyun // SPDX-License-Identifier: MIT 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) 2013-2017 Oracle Corporation 4*4882a593Smuzhiyun * This file is based on ast_ttm.c 5*4882a593Smuzhiyun * Copyright 2012 Red Hat Inc. 6*4882a593Smuzhiyun * Authors: Dave Airlie <airlied@redhat.com> 7*4882a593Smuzhiyun * Michael Thayer <michael.thayer@oracle.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun #include <linux/pci.h> 10*4882a593Smuzhiyun #include <drm/drm_file.h> 11*4882a593Smuzhiyun #include "vbox_drv.h" 12*4882a593Smuzhiyun vbox_mm_init(struct vbox_private * vbox)13*4882a593Smuzhiyunint vbox_mm_init(struct vbox_private *vbox) 14*4882a593Smuzhiyun { 15*4882a593Smuzhiyun struct drm_vram_mm *vmm; 16*4882a593Smuzhiyun int ret; 17*4882a593Smuzhiyun struct drm_device *dev = &vbox->ddev; 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun vmm = drm_vram_helper_alloc_mm(dev, pci_resource_start(dev->pdev, 0), 20*4882a593Smuzhiyun vbox->available_vram_size); 21*4882a593Smuzhiyun if (IS_ERR(vmm)) { 22*4882a593Smuzhiyun ret = PTR_ERR(vmm); 23*4882a593Smuzhiyun DRM_ERROR("Error initializing VRAM MM; %d\n", ret); 24*4882a593Smuzhiyun return ret; 25*4882a593Smuzhiyun } 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun vbox->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0), 28*4882a593Smuzhiyun pci_resource_len(dev->pdev, 0)); 29*4882a593Smuzhiyun return 0; 30*4882a593Smuzhiyun } 31*4882a593Smuzhiyun vbox_mm_fini(struct vbox_private * vbox)32*4882a593Smuzhiyunvoid vbox_mm_fini(struct vbox_private *vbox) 33*4882a593Smuzhiyun { 34*4882a593Smuzhiyun arch_phys_wc_del(vbox->fb_mtrr); 35*4882a593Smuzhiyun drm_vram_helper_release_mm(&vbox->ddev); 36*4882a593Smuzhiyun } 37