1683N/A * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved. 1494N/A * Permission is hereby granted, free of charge, to any person obtaining a 1494N/A * copy of this software and associated documentation files (the "Software"), 1494N/A * to deal in the Software without restriction, including without limitation 1494N/A * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1494N/A * and/or sell copies of the Software, and to permit persons to whom the 1494N/A * Software is furnished to do so, subject to the following conditions: 1494N/A * The above copyright notice and this permission notice (including the next 1494N/A * paragraph) shall be included in all copies or substantial portions of the 1494N/A * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1494N/A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1494N/A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1494N/A * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1494N/A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1494N/A * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 1494N/A * DEALINGS IN THE SOFTWARE. 1494N/A * Copyright (c) 2012, 2013 Intel Corporation. All rights reserved. 1494N/A * Common misc module interfaces of DRM under Solaris 1494N/A * This module calls into gfx and agpmaster misc modules respectively 1494N/A * for generic graphics operations and AGP master device support. 1494N/A/* Identifier of this driver */ 1494N/A * This driver only supports MAP_SHARED, 1494N/A * and doesn't support MAP_PRIVATE 1683N/A /* FIXME: dh_cookie should not be released here. */ 1683N/A // gfxp_umem_cookie_destroy(dhp->dh_cookie); 1494N/A "memory before AGP support is enabled");
1494N/A "mapsize=0x%lx, len=0x%lx",
1494N/A * No operations for VGA & AGP mater devices, always return OK. 1494N/A * Drm driver implements a software lock to serialize access 1494N/A * to graphics hardware based on per-process granulation. Before 1494N/A * operating graphics hardware, all clients, including kernel 1494N/A * and applications, must acquire this lock via DRM_IOCTL_LOCK 1494N/A * ioctl, and release it via DRM_IOCTL_UNLOCK after finishing 1494N/A * operations. Drm driver will grant r/w permission to the 1494N/A * process which acquires this lock (Kernel is assumed to have 1494N/A * A process might be terminated without releasing drm lock, in 1494N/A * this case, drm driver is responsible for clearing the holding. 1494N/A * To be informed of process exiting, drm driver uses clone open 1494N/A * to guarantee that each call to open(9e) have one corresponding 1494N/A * call to close(9e). In most cases, a process will close drm 1494N/A * during process termination, so that drm driver could have a 1494N/A * chance to release drm lock. 1494N/A * In fact, a driver cannot know exactly when a process exits. 1494N/A * Clone open doesn't address this issue completely: Because of 1494N/A * inheritance, child processes inherit file descriptors from 1494N/A * their parent. As a result, if the parent exits before its 1494N/A * children, drm close(9e) entrypoint won't be called until all 1494N/A * of its children terminate. 1494N/A * Another issue brought up by inhertance is the process PID 1494N/A * that calls the drm close() entry point may not be the same 1494N/A * as the one who called open(). Per-process struct is allocated 1494N/A * when a process first open() drm, and released when the process 1494N/A * last close() drm. Since open()/close() may be not the same 1494N/A * process, PID cannot be used for key to lookup per-process 1494N/A * struct. So, we associate minor number with per-process struct 1494N/A * during open()'ing, and find corresponding process struct 1494N/A * via minor number when close() is called. 1494N/A * No operations for VGA & AGP mater devices, always return OK. 1494N/A * No operations for VGA & AGP master devices, always return OK. 1494N/A * No operations for VGA & AGP master devices, always return OK. 1494N/A * Common device operations structure for all DRM drivers