Module Name: src Committed By: riastradh Date: Sun Dec 19 00:26:09 UTC 2021
Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Added Files: src/sys/external/bsd/drm2/drm: drm_lease.c src/sys/external/bsd/drm2/include/drm: drm_lease.h Log Message: Unfinished local implementation of GPL drm_lease.c. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/sys/external/bsd/drm2/drm/drm_lease.c cvs rdiff -u -r1.37 -r1.38 src/sys/external/bsd/drm2/drm/files.drmkms cvs rdiff -u -r0 -r1.1 src/sys/external/bsd/drm2/include/drm/drm_lease.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/drm/files.drmkms diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.37 src/sys/external/bsd/drm2/drm/files.drmkms:1.38 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.37 Sun Dec 19 00:25:53 2021 +++ src/sys/external/bsd/drm2/drm/files.drmkms Sun Dec 19 00:26:09 2021 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.37 2021/12/19 00:25:53 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.38 2021/12/19 00:26:09 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -101,8 +101,9 @@ file external/bsd/drm2/dist/drm/drm_hdcp file external/bsd/drm2/dist/drm/drm_ioctl.c drmkms file external/bsd/drm2/dist/drm/drm_irq.c drmkms file external/bsd/drm2/dist/drm/drm_kms_helper_common.c drmkms -file external/bsd/drm2/dist/drm/drm_lease.c drmkms -file external/bsd/drm2/dist/drm/drm_memory.c drmkms +file external/bsd/drm2/drm/drm_lease.c drmkms +file external/bsd/drm2/drm/drm_lock.c drmkms +file external/bsd/drm2/drm/drm_memory.c drmkms file external/bsd/drm2/dist/drm/drm_mm.c drmkms file external/bsd/drm2/dist/drm/drm_mode_config.c drmkms file external/bsd/drm2/dist/drm/drm_mode_object.c drmkms @@ -129,6 +130,7 @@ file external/bsd/drm2/dist/drm/drm_writ file external/bsd/drm2/drm/drm_cache.c drmkms file external/bsd/drm2/drm/drm_fops.c drmkms file external/bsd/drm2/drm/drm_gem_framebuffer_helper.c drmkms +file external/bsd/drm2/drm/drm_lease.c drmkms file external/bsd/drm2/drm/drm_lock.c drmkms file external/bsd/drm2/drm/drm_memory.c drmkms file external/bsd/drm2/drm/drm_scatter.c drmkms Added files: Index: src/sys/external/bsd/drm2/drm/drm_lease.c diff -u /dev/null src/sys/external/bsd/drm2/drm/drm_lease.c:1.1 --- /dev/null Sun Dec 19 00:26:09 2021 +++ src/sys/external/bsd/drm2/drm/drm_lease.c Sun Dec 19 00:26:09 2021 @@ -0,0 +1,171 @@ +/* $NetBSD: drm_lease.c,v 1.1 2021/12/19 00:26:09 riastradh Exp $ */ + +/*- + * Copyright (c) 2018 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Taylor R. Campbell. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__KERNEL_RCSID(0, "$NetBSD: drm_lease.c,v 1.1 2021/12/19 00:26:09 riastradh Exp $"); + +#include <drm/drm_lease.h> + +/* + * drm_lease_owner(master) + * + * Return the root of the lease tree, following parent pointers up + * from master. + */ +struct drm_master * +drm_lease_owner(struct drm_master *master) +{ + struct drm_master *lessor; + + while ((lessor = master->lessor) != NULL) + master = lessor; + + return master; +} + +/* + * drm_lease_held(file, id) + * + * XXX + */ +bool +drm_lease_held(struct drm_file *file, int id) +{ + struct drm_master *master; + bool held; + + if (file == NULL || (master = file->master) == NULL) + return true; + + mutex_lock(&master->dev->mode_config.idr_mutex); + held = _drm_lease_held(file, id); + mutex_unlock(&master->dev->mode_config.idr_mutex); + + return held; +} + +/* + * _drm_lease_held(file, id) + * + * Same as drm_lease_held but caller must hold file's root + * master's dev->mode_config.idr_mutex. + */ +bool +_drm_lease_held(struct drm_file *file, int id) +{ + panic("%s: not yet implemented", __func__); +} + +/* + * drm_lease_revoke(master) + * + * XXX + */ +void +drm_lease_revoke(struct drm_master *master) +{ + panic("%s: not yet implemented", __func__); +} + +/* + * drm_lease_filter_crtcs(file, crtcs) + * + * XXX + */ +uint32_t +drm_lease_filter_crtcs(struct drm_file *file, uint32_t crtcs) +{ + panic("%s: not yet implemented", __func__); +} + +/* + * drm_mode_create_lease_ioctl(dev, data, file) + * + * DRM_IOCTL_MODE_CREATE_LEASE(struct drm_mode_create_lease) ioctl + * implementation. + */ +int +drm_mode_create_lease_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_mode_create_lease *args __unused = data; + + /* XXX not yet implemented */ + return -ENODEV; +} + +/* + * drm_mode_get_lease_ioctl(dev, data, file) + * + * DRM_IOCTL_MODE_GET_LEASE(struct drm_mode_get_lease) ioctl + * implementation. + */ +int +drm_mode_get_lease_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_mode_get_lease *args __unused = data; + + /* XXX not yet implemented */ + return -ENODEV; +} + +/* + * drm_mode_list_leases_ioctl(dev, data, file) + * + * DRM_IOCTL_MODE_LIST_LEASES(struct drm_mode_list_leases) ioctl + * implementation. + */ +int +drm_mode_list_leases_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_mode_list_leases *args __unused = data; + + /* XXX not yet implemented */ + return -ENODEV; +} + +/* + * drm_mode_revoke_lease_ioctl(dev, data, file) + * + * DRM_IOCTL_MODE_REVOKE_LEASE(struct drm_mode_revoke_lease) ioctl + * implementation. + */ +int +drm_mode_revoke_lease_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_mode_revoke_lease *args __unused = data; + + /* XXX not yet implemented */ + return -ENODEV; +} Index: src/sys/external/bsd/drm2/include/drm/drm_lease.h diff -u /dev/null src/sys/external/bsd/drm2/include/drm/drm_lease.h:1.1 --- /dev/null Sun Dec 19 00:26:09 2021 +++ src/sys/external/bsd/drm2/include/drm/drm_lease.h Sun Dec 19 00:26:09 2021 @@ -0,0 +1,56 @@ +/* $NetBSD: drm_lease.h,v 1.1 2021/12/19 00:26:09 riastradh Exp $ */ + +/*- + * Copyright (c) 2018 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Taylor R. Campbell. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _DRM_DRM_LEASE_H_ +#define _DRM_DRM_LEASE_H_ + +#include <sys/types.h> + +struct drm_device; +struct drm_file; +struct drm_master; + +int drm_mode_create_lease_ioctl(struct drm_device *, void *, + struct drm_file *); +int drm_mode_get_lease_ioctl(struct drm_device *, void *, + struct drm_file *); +int drm_mode_list_leases_ioctl(struct drm_device *, void *, + struct drm_file *); +int drm_mode_revoke_lease_ioctl(struct drm_device *, void *, + struct drm_file *); + +struct drm_master *drm_lease_owner(struct drm_master *); +bool drm_lease_held(struct drm_file *, int); +bool _drm_lease_held(struct drm_file *, int); +void drm_lease_revoke(struct drm_master *); +uint32_t drm_lease_filter_crtcs(struct drm_file *, uint32_t); + +#endif /* _DRM_DRM_LEASE_H_ */