CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Sat Jun 27 13:41:44 UTC 2020 Modified Files: src/sys/external/bsd/drm2/drm: drmfb.c Log Message: prop_data_create_data+prop_dictionary_set+prop_object_release -> prop_dictionary_set_data To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drmfb.c 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/drmfb.c diff -u src/sys/external/bsd/drm2/drm/drmfb.c:1.7 src/sys/external/bsd/drm2/drm/drmfb.c:1.8 --- src/sys/external/bsd/drm2/drm/drmfb.c:1.7 Fri May 31 20:25:58 2019 +++ src/sys/external/bsd/drm2/drm/drmfb.c Sat Jun 27 13:41:44 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drmfb.c,v 1.7 2019/05/31 20:25:58 jmcneill Exp $ */ +/* $NetBSD: drmfb.c,v 1.8 2020/06/27 13:41:44 jmcneill Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -39,7 +39,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.7 2019/05/31 20:25:58 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.8 2020/06/27 13:41:44 jmcneill Exp $"); #ifdef _KERNEL_OPT #include "vga.h" @@ -141,10 +141,8 @@ drmfb_attach(struct drmfb_softc *sc, con da->da_fb_helper->connector_info[n]->connector; struct drm_property_blob *edid = connector->edid_blob_ptr; if (edid && edid->length) { - prop_data_t edid_data = - prop_data_create_data(edid->data, edid->length); - prop_dictionary_set(dict, "EDID", edid_data); - prop_object_release(edid_data); + prop_dictionary_set_data(dict, "EDID", edid->data, + edid->length); break; } }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jakllsch Date: Mon Dec 9 15:37:26 UTC 2019 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: build drm_panel.c w/ drmkms To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/external/bsd/drm2/drm/files.drmkms 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.32 src/sys/external/bsd/drm2/drm/files.drmkms:1.33 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.32 Mon Nov 18 20:02:09 2019 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Dec 9 15:37:26 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.32 2019/11/18 20:02:09 christos Exp $ +# $NetBSD: files.drmkms,v 1.33 2019/12/09 15:37:26 jakllsch Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -89,6 +89,7 @@ file external/bsd/drm2/drm/drm_memory.c file external/bsd/drm2/dist/drm/drm_mm.c drmkms file external/bsd/drm2/dist/drm/drm_modes.c drmkms file external/bsd/drm2/dist/drm/drm_modeset_lock.c drmkms +file external/bsd/drm2/dist/drm/drm_panel.c drmkms #file external/bsd/drm2/dist/drm/drm_pci.c drmkms # drmkms_pci file external/bsd/drm2/dist/drm/drm_plane_helper.c drmkms #file external/bsd/drm2/dist/drm/drm_platform.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: mrg Date: Fri Mar 8 02:53:22 UTC 2019 Modified Files: src/sys/external/bsd/drm2/drm: drm_gem_cma_helper.c Log Message: drm_gem_cma_fault() is a UVM fault function. return netbsd errnos. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c 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/drm_gem_cma_helper.c diff -u src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.6 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.7 --- src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.6 Mon Aug 27 15:27:43 2018 +++ src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c Fri Mar 8 02:53:22 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_gem_cma_helper.c,v 1.6 2018/08/27 15:27:43 riastradh Exp $ */ +/* $NetBSD: drm_gem_cma_helper.c,v 1.7 2019/03/08 02:53:22 mrg Exp $ */ /*- * Copyright (c) 2015-2017 Jared McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.6 2018/08/27 15:27:43 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.7 2019/03/08 02:53:22 mrg Exp $"); #include #include @@ -194,7 +194,7 @@ drm_gem_cma_fault(struct uvm_faultinfo * vm_prot_t mapprot; if (UVM_ET_ISCOPYONWRITE(entry)) - return -EIO; + return EIO; curr_offset = entry->offset + (vaddr - entry->start); curr_va = vaddr; @@ -210,7 +210,7 @@ drm_gem_cma_fault(struct uvm_faultinfo * mdpgno = bus_dmamem_mmap(obj->dmat, obj->dmasegs, 1, curr_offset, access_type, BUS_DMA_PREFETCHABLE); if (mdpgno == -1) { - retval = -EIO; + retval = EIO; break; } paddr = pmap_phys_address(mdpgno); @@ -222,7 +222,7 @@ drm_gem_cma_fault(struct uvm_faultinfo * pmap_update(ufi->orig_map->pmap); uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj); uvm_wait("drm_gem_cma_fault"); - return -ERESTART; + return ERESTART; } }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Wed Jan 23 19:02:49 UTC 2019 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: skip clflush on aarch64, too To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.12 src/sys/external/bsd/drm2/drm/drm_cache.c:1.13 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.12 Mon Aug 27 15:29:19 2018 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Wed Jan 23 19:02:49 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.12 2018/08/27 15:29:19 riastradh Exp $ */ +/* $NetBSD: drm_cache.c,v 1.13 2019/01/23 19:02:49 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.12 2018/08/27 15:29:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.13 2019/01/23 19:02:49 jmcneill Exp $"); #include #include @@ -42,7 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cache.c, #include -#if !defined(__arm__) +#if !defined(__arm__) && !defined(__aarch64__) #define DRM_CLFLUSH 1 #endif
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: mrg Date: Thu Aug 30 22:39:54 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_agp_hook.c Log Message: if hooks init works, store the hooks in the agp. fixes start up crash on an old radeon laptop. from @riastradh. the console also now works, unlike previous drm2, where eg, the problems from PR#49744 are seen. unfortunately, i got a crash starting X, and no ddb yet, so we can't re-enable the r100/r200 parts here yet. once this is known to be working we can delete the old radeondrm code, and remove the hacks to disable drm2 there. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_agp_hook.c 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/drm_agp_hook.c diff -u src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.2 src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.3 --- src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.2 Thu Aug 30 19:03:14 2018 +++ src/sys/external/bsd/drm2/drm/drm_agp_hook.c Thu Aug 30 22:39:54 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_agp_hook.c,v 1.2 2018/08/30 19:03:14 tnn Exp $ */ +/* $NetBSD: drm_agp_hook.c,v 1.3 2018/08/30 22:39:54 mrg Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_agp_hook.c,v 1.2 2018/08/30 19:03:14 tnn Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_agp_hook.c,v 1.3 2018/08/30 22:39:54 mrg Exp $"); #include #include @@ -145,6 +145,8 @@ drm_agp_init(struct drm_device *dev) agp = hooks->agph_init(dev); if (agp == NULL) drm_agp_hooks_release(hooks); + else + agp->hooks = hooks; return agp; }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: tnn Date: Thu Aug 30 19:03:14 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_agp_hook.c Log Message: initialize error variable To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drm_agp_hook.c 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/drm_agp_hook.c diff -u src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.1 src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.2 --- src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.1 Tue Aug 28 03:41:39 2018 +++ src/sys/external/bsd/drm2/drm/drm_agp_hook.c Thu Aug 30 19:03:14 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_agp_hook.c,v 1.1 2018/08/28 03:41:39 riastradh Exp $ */ +/* $NetBSD: drm_agp_hook.c,v 1.2 2018/08/30 19:03:14 tnn Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_agp_hook.c,v 1.1 2018/08/28 03:41:39 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_agp_hook.c,v 1.2 2018/08/30 19:03:14 tnn Exp $"); #include #include @@ -89,7 +89,7 @@ drm_agp_register(const struct drm_agp_ho int drm_agp_deregister(const struct drm_agp_hooks *hooks) { - int error; + int error = 0; mutex_enter(&agp_hooks.lock); KASSERT(agp_hooks.hooks == hooks);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:32:51 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_module.c Log Message: Make sure to create and destroy the lock too... To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/drm/drm_module.c 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/drm_module.c diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.12 src/sys/external/bsd/drm2/drm/drm_module.c:1.13 --- src/sys/external/bsd/drm2/drm/drm_module.c:1.12 Mon Aug 27 15:31:27 2018 +++ src/sys/external/bsd/drm2/drm/drm_module.c Mon Aug 27 15:32:51 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_module.c,v 1.12 2018/08/27 15:31:27 riastradh Exp $ */ +/* $NetBSD: drm_module.c,v 1.13 2018/08/27 15:32:51 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.12 2018/08/27 15:31:27 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.13 2018/08/27 15:32:51 riastradh Exp $"); #include #include @@ -84,6 +84,7 @@ drm_init(void) spin_lock_init(&drm_minor_lock); idr_init(&drm_minors_idr); linux_mutex_init(&drm_global_mutex); + mutex_init(&set_unique_hook.lock, MUTEX_DEFAULT, IPL_NONE); drm_connector_ida_init(); drm_global_init(); drm_sysctl_init(&drm_def); @@ -113,6 +114,7 @@ drm_fini(void) drm_sysctl_fini(&drm_def); drm_global_release(); drm_connector_ida_destroy(); + mutex_destroy(&set_unique_hook.lock); linux_mutex_destroy(&drm_global_mutex); idr_destroy(&drm_minors_idr); spin_lock_destroy(&drm_minor_lock);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:29:42 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: Unhook upstream drm_pci.c, apparently overridden by files.drmkms_pci. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/sys/external/bsd/drm2/drm/files.drmkms 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.28 src/sys/external/bsd/drm2/drm/files.drmkms:1.29 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.28 Mon Aug 27 15:22:54 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 15:29:42 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.28 2018/08/27 15:22:54 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.29 2018/08/27 15:29:42 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -88,7 +88,7 @@ file external/bsd/drm2/drm/drm_memory.c file external/bsd/drm2/dist/drm/drm_mm.c drmkms file external/bsd/drm2/dist/drm/drm_modes.c drmkms file external/bsd/drm2/dist/drm/drm_modeset_lock.c drmkms -file external/bsd/drm2/dist/drm/drm_pci.c drmkms +#file external/bsd/drm2/dist/drm/drm_pci.c drmkms # drmkms_pci file external/bsd/drm2/dist/drm/drm_plane_helper.c drmkms #file external/bsd/drm2/dist/drm/drm_platform.c drmkms file external/bsd/drm2/dist/drm/drm_prime.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:29:19 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: Draft sparc cache flushing. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.11 src/sys/external/bsd/drm2/drm/drm_cache.c:1.12 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.11 Mon Aug 27 15:24:27 2018 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Mon Aug 27 15:29:19 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.11 2018/08/27 15:24:27 riastradh Exp $ */ +/* $NetBSD: drm_cache.c,v 1.12 2018/08/27 15:29:19 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.11 2018/08/27 15:24:27 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.12 2018/08/27 15:29:19 riastradh Exp $"); #include #include @@ -174,6 +174,65 @@ drm_md_clflush_virt_range(const void *pt asm volatile ("clflush %0" : : "m" (*(const char *)va)); } +#elif defined(__sparc__) || defined(__sparc64__) + +#ifdef __sparc64__ +#include +#else +#include +#endif + +static bool +drm_md_clflush_finegrained_p(void) +{ + return true; +} + +static void +drm_md_clflush_all(void) +{ + panic("don't know how to flush entire cache on sparc64"); +} + +static void +drm_md_clflush_begin(void) +{ + membar_Sync(); /* unsure if needed */ +} + +static void +drm_md_clflush_commit(void) +{ + membar_Sync(); /* unsure if needed */ +} + +static void +drm_md_clflush_page(struct page *page) +{ +#ifdef __sparc64__ + paddr_t pa = VM_PAGE_TO_PHYS(&page->p_vmp); + + cache_flush_phys(pa, PAGE_SIZE, 0); +#else + void *const vaddr = kmap_atomic(page); + + cache_flush(vaddr, PAGE_SIZE); + + kunmap_atomic(vaddr); +#endif +} + +static void +drm_md_clflush_virt_range(const void *ptr, size_t nbytes) +{ +#ifdef __sparc64__ + /* XXX Mega-kludge -- doesn't seem to be a way to flush by vaddr. */ + blast_dcache(); +#else + cache_flush(ptr, nbytes); +#endif +} + #elif defined(__powerpc__) static bool
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:27:43 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_gem_cma_helper.c Log Message: Use dmat, not bus_dmat, to respect drm_limit_dma_space. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c 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/drm_gem_cma_helper.c diff -u src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.5 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.6 --- src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.5 Mon Aug 27 15:27:16 2018 +++ src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c Mon Aug 27 15:27:43 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_gem_cma_helper.c,v 1.5 2018/08/27 15:27:16 riastradh Exp $ */ +/* $NetBSD: drm_gem_cma_helper.c,v 1.6 2018/08/27 15:27:43 riastradh Exp $ */ /*- * Copyright (c) 2015-2017 Jared McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.5 2018/08/27 15:27:16 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.6 2018/08/27 15:27:43 riastradh Exp $"); #include #include @@ -42,7 +42,7 @@ drm_gem_cma_create_internal(struct drm_d int error, nsegs; obj = kmem_zalloc(sizeof(*obj), KM_SLEEP); - obj->dmat = ddev->bus_dmat; + obj->dmat = ddev->dmat; obj->dmasize = size; if (sgt) {
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:27:16 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_gem_cma_helper.c Log Message: drm_gem_cma_create_internal can fail. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c 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/drm_gem_cma_helper.c diff -u src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.4 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.4 Mon Aug 27 15:26:50 2018 +++ src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c Mon Aug 27 15:27:16 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_gem_cma_helper.c,v 1.4 2018/08/27 15:26:50 riastradh Exp $ */ +/* $NetBSD: drm_gem_cma_helper.c,v 1.5 2018/08/27 15:27:16 riastradh Exp $ */ /*- * Copyright (c) 2015-2017 Jared McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.4 2018/08/27 15:26:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.5 2018/08/27 15:27:16 riastradh Exp $"); #include #include @@ -254,6 +254,8 @@ drm_gem_cma_prime_import_sg_table(struct struct drm_gem_cma_object *obj; obj = drm_gem_cma_create_internal(ddev, size, sgt); + if (obj == NULL) + return ERR_PTR(-ENOMEM); return &obj->base; }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:24:27 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: Factor mfence out. Simplify a little. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.10 src/sys/external/bsd/drm2/drm/drm_cache.c:1.11 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.10 Mon Aug 27 15:23:57 2018 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Mon Aug 27 15:24:27 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.10 2018/08/27 15:23:57 riastradh Exp $ */ +/* $NetBSD: drm_cache.c,v 1.11 2018/08/27 15:24:27 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.10 2018/08/27 15:23:57 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.11 2018/08/27 15:24:27 riastradh Exp $"); #include #include @@ -49,6 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cache.c, #if defined(DRM_CLFLUSH) static bool drm_md_clflush_finegrained_p(void); static void drm_md_clflush_all(void); +static void drm_md_clflush_begin(void); static void drm_md_clflush_commit(void); static void drm_md_clflush_page(struct page *); static void drm_md_clflush_virt_range(const void *, size_t); @@ -59,6 +60,7 @@ drm_clflush_pages(struct page **pages, u { #if defined(DRM_CLFLUSH) if (drm_md_clflush_finegrained_p()) { + drm_md_clflush_begin(); while (npages--) drm_md_clflush_page(pages[npages]); drm_md_clflush_commit(); @@ -75,6 +77,7 @@ drm_clflush_pglist(struct pglist *list) if (drm_md_clflush_finegrained_p()) { struct vm_page *page; + drm_md_clflush_begin(); TAILQ_FOREACH(page, list, pageq.queue) drm_md_clflush_page(container_of(page, struct page, p_vmp)); @@ -90,6 +93,7 @@ drm_clflush_page(struct page *page) { #if defined(DRM_CLFLUSH) if (drm_md_clflush_finegrained_p()) { + drm_md_clflush_begin(); drm_md_clflush_page(page); drm_md_clflush_commit(); } else { @@ -103,6 +107,7 @@ drm_clflush_virt_range(const void *vaddr { #if defined(DRM_CLFLUSH) if (drm_md_clflush_finegrained_p()) { + drm_md_clflush_begin(); drm_md_clflush_virt_range(vaddr, nbytes); drm_md_clflush_commit(); } else { @@ -122,19 +127,6 @@ drm_md_clflush_finegrained_p(void) } static void -drm_x86_clflush(const void *vaddr) -{ - asm volatile ("clflush %0" : : "m" (*(const char *)vaddr)); -} - -static size_t -drm_x86_clflush_size(void) -{ - KASSERT(drm_md_clflush_finegrained_p()); - return cpu_info_primary.ci_cflush_lsize; -} - -static void drm_x86_clflush_xc(void *arg0 __unused, void *arg1 __unused) { wbinvd(); @@ -147,8 +139,16 @@ drm_md_clflush_all(void) } static void +drm_md_clflush_begin(void) +{ + /* Support for CLFLUSH implies support for MFENCE. */ + x86_mfence(); +} + +static void drm_md_clflush_commit(void) { + x86_mfence(); } static void @@ -162,37 +162,20 @@ drm_md_clflush_page(struct page *page) } static void -drm_md_clflush_virt_range(const void *vaddr, size_t nbytes) +drm_md_clflush_virt_range(const void *ptr, size_t nbytes) { - const unsigned clflush_size = drm_x86_clflush_size(); - const vaddr_t va = (vaddr_t)vaddr; - const char *const start = (const void *)rounddown(va, clflush_size); - const char *const end = (const void *)roundup(va + nbytes, - clflush_size); - const char *p; + const unsigned clflush_size = cpu_info_primary.ci_cflush_lsize; + const vaddr_t vaddr = (vaddr_t)ptr; + const vaddr_t start = rounddown(vaddr, clflush_size); + const vaddr_t end = roundup(vaddr + nbytes, clflush_size); + vaddr_t va; - /* Support for CLFLUSH implies support for MFENCE. */ - KASSERT(drm_md_clflush_finegrained_p()); - x86_mfence(); - for (p = start; p < end; p += clflush_size) - drm_x86_clflush(p); - x86_mfence(); + for (va = start; va < end; va += clflush_size) + asm volatile ("clflush %0" : : "m" (*(const char *)va)); } #elif defined(__powerpc__) -static void -drm_ppc_dcbf(vaddr_t va, vsize_t off) -{ - asm volatile ("dcbf\t%0,%1" : : "b"(va), "r"(off)); -} - -static void -drm_ppc_sync(void) -{ - asm volatile ("sync" ::: "memory"); -} - static bool drm_md_clflush_finegrained_p(void) { @@ -206,9 +189,14 @@ drm_md_clflush_all(void) } static void +drm_md_clflush_begin(void) +{ +} + +static void drm_md_clflush_commit(void) { - drm_ppc_sync(); + asm volatile ("sync" ::: "memory"); } static void @@ -232,7 +220,7 @@ drm_md_clflush_virt_range(const void *pt vsize_t off; for (off = 0; off < len; off += dcsize) - drm_ppc_dcbf(start, off); + asm volatile ("dcbf\t%0,%1" : : "b"(start), "r"(off)); } #endif
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:23:57 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: Need sync after a series of dcbf's on powerpc. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.9 src/sys/external/bsd/drm2/drm/drm_cache.c:1.10 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.9 Mon Aug 27 15:11:46 2018 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Mon Aug 27 15:23:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.9 2018/08/27 15:11:46 riastradh Exp $ */ +/* $NetBSD: drm_cache.c,v 1.10 2018/08/27 15:23:57 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.9 2018/08/27 15:11:46 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.10 2018/08/27 15:23:57 riastradh Exp $"); #include #include @@ -49,6 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cache.c, #if defined(DRM_CLFLUSH) static bool drm_md_clflush_finegrained_p(void); static void drm_md_clflush_all(void); +static void drm_md_clflush_commit(void); static void drm_md_clflush_page(struct page *); static void drm_md_clflush_virt_range(const void *, size_t); #endif @@ -60,6 +61,7 @@ drm_clflush_pages(struct page **pages, u if (drm_md_clflush_finegrained_p()) { while (npages--) drm_md_clflush_page(pages[npages]); + drm_md_clflush_commit(); } else { drm_md_clflush_all(); } @@ -76,6 +78,7 @@ drm_clflush_pglist(struct pglist *list) TAILQ_FOREACH(page, list, pageq.queue) drm_md_clflush_page(container_of(page, struct page, p_vmp)); + drm_md_clflush_commit(); } else { drm_md_clflush_all(); } @@ -86,10 +89,12 @@ void drm_clflush_page(struct page *page) { #if defined(DRM_CLFLUSH) - if (drm_md_clflush_finegrained_p()) + if (drm_md_clflush_finegrained_p()) { drm_md_clflush_page(page); - else + drm_md_clflush_commit(); + } else { drm_md_clflush_all(); + } #endif } @@ -97,10 +102,12 @@ void drm_clflush_virt_range(const void *vaddr, size_t nbytes) { #if defined(DRM_CLFLUSH) - if (drm_md_clflush_finegrained_p()) + if (drm_md_clflush_finegrained_p()) { drm_md_clflush_virt_range(vaddr, nbytes); - else + drm_md_clflush_commit(); + } else { drm_md_clflush_all(); + } #endif } @@ -140,6 +147,11 @@ drm_md_clflush_all(void) } static void +drm_md_clflush_commit(void) +{ +} + +static void drm_md_clflush_page(struct page *page) { void *const vaddr = kmap_atomic(page); @@ -175,6 +187,12 @@ drm_ppc_dcbf(vaddr_t va, vsize_t off) asm volatile ("dcbf\t%0,%1" : : "b"(va), "r"(off)); } +static void +drm_ppc_sync(void) +{ + asm volatile ("sync" ::: "memory"); +} + static bool drm_md_clflush_finegrained_p(void) { @@ -188,6 +206,12 @@ drm_md_clflush_all(void) } static void +drm_md_clflush_commit(void) +{ + drm_ppc_sync(); +} + +static void drm_md_clflush_page(struct page *page) { void *const vaddr = kmap_atomic(page);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:11:46 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: Implement drm_md_clflush_* for powerpc with dcbf. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.8 src/sys/external/bsd/drm2/drm/drm_cache.c:1.9 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.8 Sat Oct 17 21:11:56 2015 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Mon Aug 27 15:11:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.8 2015/10/17 21:11:56 jmcneill Exp $ */ +/* $NetBSD: drm_cache.c,v 1.9 2018/08/27 15:11:46 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.8 2015/10/17 21:11:56 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.9 2018/08/27 15:11:46 riastradh Exp $"); #include #include @@ -167,4 +167,48 @@ drm_md_clflush_virt_range(const void *va x86_mfence(); } -#endif /* defined(__i386__) || defined(__x86_64__) */ +#elif defined(__powerpc__) + +static void +drm_ppc_dcbf(vaddr_t va, vsize_t off) +{ + asm volatile ("dcbf\t%0,%1" : : "b"(va), "r"(off)); +} + +static bool +drm_md_clflush_finegrained_p(void) +{ + return true; +} + +static void +drm_md_clflush_all(void) +{ + panic("don't know how to flush entire cache on powerpc"); +} + +static void +drm_md_clflush_page(struct page *page) +{ + void *const vaddr = kmap_atomic(page); + + drm_md_clflush_virt_range(vaddr, PAGE_SIZE); + + kunmap_atomic(vaddr); +} + +static void +drm_md_clflush_virt_range(const void *ptr, size_t nbytes) +{ + const unsigned dcsize = curcpu()->ci_ci.dcache_line_size; + vaddr_t va = (vaddr_t)ptr; + vaddr_t start = rounddown(va, dcsize); + vaddr_t end = roundup(va + nbytes, dcsize); + vsize_t len = end - start; + vsize_t off; + + for (off = 0; off < len; off += dcsize) + drm_ppc_dcbf(start, off); +} + +#endif
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:20:11 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: Make sure all of struct drm_file gets initialized. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/drm/drm_fops.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.12 src/sys/external/bsd/drm2/drm/drm_fops.c:1.13 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.12 Mon Aug 27 14:15:24 2018 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 14:20:11 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.12 2018/08/27 14:15:24 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.13 2018/08/27 14:20:11 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.12 2018/08/27 14:15:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.13 2018/08/27 14:20:11 riastradh Exp $"); #include #include @@ -56,6 +56,8 @@ drm_open_file(struct drm_file *file, voi file->is_master = false; file->stereo_allowed = false; file->universal_planes = false; + file->atomic = false; + file->allowed_master = false; file->magic = 0; INIT_LIST_HEAD(&file->lhead); file->minor = minor; @@ -67,10 +69,12 @@ drm_open_file(struct drm_file *file, voi file->master = NULL; INIT_LIST_HEAD(&file->fbs); linux_mutex_init(&file->fbs_lock); + INIT_LIST_HEAD(&file->blobs); DRM_INIT_WAITQUEUE(&file->event_wait, "drmevent"); selinit(&file->event_selq); INIT_LIST_HEAD(&file->event_list); file->event_space = 0x1000; /* XXX cargo-culted from Linux */ + /* file->prime is initialized by drm_prime_init_file_private. */ if (drm_core_check_feature(dev, DRIVER_GEM)) drm_gem_open(dev, file);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:15:13 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: Release the magic before releasing the master. Releasing the master frees the idr into which we are trying to release the magic. Use of magic that has been freed sounds like a dangerous proposition. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/drm2/drm/drm_fops.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.10 src/sys/external/bsd/drm2/drm/drm_fops.c:1.11 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.10 Mon Aug 27 07:53:52 2018 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 14:15:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.10 2018/08/27 07:53:52 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.11 2018/08/27 14:15:12 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.10 2018/08/27 07:53:52 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.11 2018/08/27 14:15:12 riastradh Exp $"); #include #include @@ -214,6 +214,12 @@ drm_close_file(struct drm_file *file) struct drm_minor *const minor = file->minor; struct drm_device *const dev = minor->dev; + mutex_lock(&dev->struct_mutex); + list_del(&file->lhead); + if (file->magic) + idr_remove(&file->master->magic_map, file->magic); + mutex_unlock(&dev->struct_mutex); + if (dev->driver->preclose) (*dev->driver->preclose)(dev, file); @@ -229,12 +235,6 @@ drm_close_file(struct drm_file *file) drm_legacy_ctxbitmap_flush(dev, file); drm_close_file_master(file); - mutex_lock(&dev->struct_mutex); - list_del(&file->lhead); - if (file->magic) - idr_remove(&file->master->magic_map, file->magic); - mutex_unlock(&dev->struct_mutex); - if (dev->driver->postclose) (*dev->driver->postclose)(dev, file); #ifndef __NetBSD__ /* XXX drm prime */
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:15:24 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: Sync drm_close_file: call drm_property_release_user_blobs. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/drm/drm_fops.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.11 src/sys/external/bsd/drm2/drm/drm_fops.c:1.12 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.11 Mon Aug 27 14:15:12 2018 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 14:15:24 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.11 2018/08/27 14:15:12 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.12 2018/08/27 14:15:24 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.11 2018/08/27 14:15:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.12 2018/08/27 14:15:24 riastradh Exp $"); #include #include @@ -228,8 +228,10 @@ drm_close_file(struct drm_file *file) if (drm_core_check_feature(dev, DRIVER_HAVE_DMA)) drm_legacy_reclaim_buffers(dev, file); drm_events_release(file); - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (drm_core_check_feature(dev, DRIVER_MODESET)) { drm_fb_release(file); + drm_property_destroy_user_blobs(dev, file); + } if (drm_core_check_feature(dev, DRIVER_GEM)) drm_gem_release(dev, file); drm_legacy_ctxbitmap_flush(dev, file); @@ -237,12 +239,12 @@ drm_close_file(struct drm_file *file) if (dev->driver->postclose) (*dev->driver->postclose)(dev, file); + #ifndef __NetBSD__ /* XXX drm prime */ if (drm_core_check_feature(dev, DRIVER_PRIME)) drm_prime_destroy_file_private(&file->prime); #endif - seldestroy(&file->event_selq); DRM_DESTROY_WAITQUEUE(&file->event_wait); linux_mutex_destroy(&file->fbs_lock);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:11:04 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cdevsw.c Log Message: Locks are not like negatives: doubles don't cancel out. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/drm/drm_cdevsw.c 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/drm_cdevsw.c diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.9 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.10 --- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.9 Mon Aug 27 07:54:07 2018 +++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 14:11:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cdevsw.c,v 1.9 2018/08/27 07:54:07 riastradh Exp $ */ +/* $NetBSD: drm_cdevsw.c,v 1.10 2018/08/27 14:11:04 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.9 2018/08/27 07:54:07 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.10 2018/08/27 14:11:04 riastradh Exp $"); #include #include @@ -148,7 +148,7 @@ drm_open(dev_t d, int flags, int fmt, st } firstopen = (dev->open_count == 0); dev->open_count++; - mutex_lock(&drm_global_mutex); + mutex_unlock(&drm_global_mutex); if (firstopen) { /* XXX errno Linux->NetBSD */
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:53:20 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: Sort. Put CWARNFLAGS next to source lists. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/sys/external/bsd/drm2/drm/files.drmkms 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.25 src/sys/external/bsd/drm2/drm/files.drmkms:1.26 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.25 Mon Aug 27 07:54:28 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 13:53:20 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.25 2018/08/27 07:54:28 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.26 2018/08/27 13:53:20 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -11,9 +11,14 @@ define drmkms_i2c: drmkms_linux define drmkms: drmkms_linux, drmkms_i2c, linux defflag opt_drmkms.h DRMKMS_DEBUG + +# Overrides first. makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/include" makeoptions drmkms_ttm CPPFLAGS+="-I$S/external/bsd/drm2/include/drm" + makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/common/include" + +# Then upstream. makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist/include" makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist/include/drm" makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist/uapi" @@ -24,31 +29,32 @@ makeoptions drmkms CPPFLAGS+="-I$S/exte # under dist/include/uapi rather than dist/uapi.) makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist" -makeoptions drmkms "CWARNFLAGS.drm_atomic_helper.c"+="-Wno-shadow" -makeoptions drmkms "CWARNFLAGS.drm_crtc.c"+="-Wno-shadow" -makeoptions drmkms "CWARNFLAGS.drm_crtc.c"+="-Wno-missing-field-initializers" -makeoptions drmkms "CWARNFLAGS.drm_edid.c"+="-Wno-shadow" -makeoptions drmkms "CWARNFLAGS.drm_ioctl.c"+="-Wno-shadow" - # XXX Should probably be in a header file. opt_drmkms.h? makeoptions drmkms CPPFLAGS+="-D__KERNEL__" -makeoptions drmkms CPPFLAGS+="-DCONFIG_FB=0" makeoptions drmkms CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE=0" makeoptions drmkms CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE_MODULE=0" +makeoptions drmkms CPPFLAGS+="-DCONFIG_FB=0" +# NetBSD additions. file external/bsd/drm2/drm/drm_cdevsw.c drmkms -file external/bsd/drm2/drm/drm_gem_vm.c drmkms file external/bsd/drm2/drm/drm_gem_cma_helper.c drmkms +file external/bsd/drm2/drm/drm_gem_vm.c drmkms file external/bsd/drm2/drm/drm_module.c drmkms file external/bsd/drm2/drm/drm_sysctl.c drmkms -# Generic, unaccelerated drm-based framebuffer. +# Generic, unaccelerated kms framebuffer. define drmfb: genfb file external/bsd/drm2/drm/drmfb.c drmfb include "external/bsd/drm2/ttm/files.ttm" +makeoptions drmkms "CWARNFLAGS.drm_atomic_helper.c"+="-Wno-shadow" +makeoptions drmkms "CWARNFLAGS.drm_crtc.c"+="-Wno-missing-field-initializers" +makeoptions drmkms "CWARNFLAGS.drm_crtc.c"+="-Wno-shadow" +makeoptions drmkms "CWARNFLAGS.drm_edid.c"+="-Wno-shadow" +makeoptions drmkms "CWARNFLAGS.drm_ioctl.c"+="-Wno-shadow" + #file external/bsd/drm2/dist/drm/ati_pcigart.c drmkms # drmkms_pci #file external/bsd/drm2/dist/drm/drm_agpsupport.c drmkms # drmkms_pci file external/bsd/drm2/dist/drm/drm_atomic.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:53:32 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: Define CONFIG_DRM_FBDEV_EMULATION=1 in generic drmkms code. This was accidentally pulled in by i915drmkms, but we need it generically or else we need to patch upstream differently. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/sys/external/bsd/drm2/drm/files.drmkms 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.26 src/sys/external/bsd/drm2/drm/files.drmkms:1.27 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.26 Mon Aug 27 13:53:20 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 13:53:32 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.26 2018/08/27 13:53:20 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.27 2018/08/27 13:53:32 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -34,6 +34,7 @@ makeoptions drmkms CPPFLAGS+="-D__KERNEL makeoptions drmkms CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE=0" makeoptions drmkms CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE_MODULE=0" +makeoptions drmkms CPPFLAGS+="-DCONFIG_DRM_FBDEV_EMULATION=1" makeoptions drmkms CPPFLAGS+="-DCONFIG_FB=0" # NetBSD additions.
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:54:28 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm2netbsd files.drmkms Log Message: drm_fb_helper.c got lost in the merge, restore it. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drm2netbsd cvs rdiff -u -r1.24 -r1.25 src/sys/external/bsd/drm2/drm/files.drmkms 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/drm2netbsd diff -u src/sys/external/bsd/drm2/drm/drm2netbsd:1.1 src/sys/external/bsd/drm2/drm/drm2netbsd:1.2 --- src/sys/external/bsd/drm2/drm/drm2netbsd:1.1 Mon Aug 27 00:46:32 2018 +++ src/sys/external/bsd/drm2/drm/drm2netbsd Mon Aug 27 07:54:28 2018 @@ -1,6 +1,6 @@ #!/bin/sh -# $NetBSD: drm2netbsd,v 1.1 2018/08/27 00:46:32 riastradh Exp $ +# $NetBSD: drm2netbsd,v 1.2 2018/08/27 07:54:28 riastradh Exp $ # # $ /path/to/drm2netbsd > /path/to/files.drm.new # @@ -16,6 +16,7 @@ drmkms_flag=drmkms env CONFIG_PCI=y \ env CONFIG_AGP=y \ +env CONFIG_DRM_FBDEV_EMULATION=y \ make -f Makefile -V '$(drm-y)' -V '$(drm_kms_helper-y)' \ | tr ' ' '\n' \ | grep -v '^$' \ Index: src/sys/external/bsd/drm2/drm/files.drmkms diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.24 src/sys/external/bsd/drm2/drm/files.drmkms:1.25 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.24 Mon Aug 27 06:50:58 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 07:54:28 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.24 2018/08/27 06:50:58 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.25 2018/08/27 07:54:28 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -67,6 +67,7 @@ file external/bsd/drm2/dist/drm/drm_dp_m file external/bsd/drm2/dist/drm/drm_drv.c drmkms file external/bsd/drm2/dist/drm/drm_edid.c drmkms file external/bsd/drm2/i2c/drm_encoder_slave.c drmkms +file external/bsd/drm2/dist/drm/drm_fb_helper.c drmkms file external/bsd/drm2/dist/drm/drm_flip_work.c drmkms file external/bsd/drm2/drm/drm_fops.c drmkms file external/bsd/drm2/dist/drm/drm_gem.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:54:07 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cdevsw.c Log Message: We don't need drm_legacy_vma_flush. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/drm/drm_cdevsw.c 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/drm_cdevsw.c diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.8 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.9 --- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.8 Mon Aug 27 07:51:06 2018 +++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 07:54:07 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cdevsw.c,v 1.8 2018/08/27 07:51:06 riastradh Exp $ */ +/* $NetBSD: drm_cdevsw.c,v 1.9 2018/08/27 07:54:07 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.8 2018/08/27 07:51:06 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.9 2018/08/27 07:54:07 riastradh Exp $"); #include #include @@ -254,7 +254,6 @@ drm_lastclose(struct drm_device *dev) if (dev->agp) drm_agp_clear_hook(dev); drm_legacy_sg_cleanup(dev); - drm_legacy_vma_flush(dev); drm_legacy_dma_takedown(dev); mutex_unlock(&dev->struct_mutex);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:53:52 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: Implement drm_new_set_master in drm_fops.c and use it. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/drm/drm_fops.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.9 src/sys/external/bsd/drm2/drm/drm_fops.c:1.10 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.9 Mon Aug 27 07:01:15 2018 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 07:53:52 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.9 2018/08/27 07:01:15 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.10 2018/08/27 07:53:52 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.9 2018/08/27 07:01:15 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.10 2018/08/27 07:53:52 riastradh Exp $"); #include #include @@ -114,52 +114,100 @@ fail0: return ret; } -static int -drm_open_file_master(struct drm_file *file) +int +drm_new_set_master(struct drm_device *dev, struct drm_file *file) { - struct drm_device *const dev = file->minor->dev; + struct drm_master *old_master; int ret; - mutex_lock(&dev->master_mutex); - if (file->minor->master != NULL) { - file->master = drm_master_get(file->minor->master); - } else { - file->minor->master = drm_master_create(file->minor); - if (file->minor->master == NULL) { - ret = -ENOMEM; - goto fail0; - } + KASSERT(mutex_is_locked(&dev->master_mutex)); + KASSERT(file->minor->type == DRM_MINOR_LEGACY); + KASSERT(file->minor->master == NULL); + + file->minor->master = drm_master_create(file->minor); + if (file->minor->master == NULL) { + ret = -ENOMEM; + goto fail0; + } - file->is_master = 1; - file->master = drm_master_get(file->minor->master); - file->authenticated = 1; + /* + * Save the old master, to drop a reference later if all goes + * well, and get a reference to the new one. + */ + old_master = file->master; + file->master = drm_master_get(file->minor->master); - if (dev->driver->master_create) { - ret = (*dev->driver->master_create)(dev, - file->minor->master); - if (ret) -goto fail1; - } + /* Invoke the driver callbacks master_create and master_set. */ + if (dev->driver->master_create) { + ret = (*dev->driver->master_create)(dev, file->minor->master); + if (ret) + goto fail1; + } - if (dev->driver->master_set) { - ret = (*dev->driver->master_set)(dev, file, true); - if (ret) -goto fail1; - } + if (dev->driver->master_set) { + ret = (*dev->driver->master_set)(dev, file, true); + if (ret) + goto fail1; } - mutex_unlock(&dev->master_mutex); + + /* + * Mark ourselves as an authenticated master, and allowed to + * set a new master. + */ + file->is_master = 1; + file->allowed_master = 1; + file->authenticated = 1; + + /* If there was an old master, release it now. */ + if (old_master) + drm_master_put(&old_master); /* Success! */ return 0; -fail1: mutex_unlock(&dev->master_mutex); - /* drm_master_put handles calling master_destroy for us. */ +fail1: + /* Release the master we just created. */ drm_master_put(&file->minor->master); + KASSERT(file->minor->master == NULL); + /* Release the reference we just added in the file. */ drm_master_put(&file->master); + KASSERT(file->master == NULL); + /* Restore the old master if there was one. */ + file->master = old_master; fail0: KASSERT(ret); return ret; } +static int +drm_open_file_master(struct drm_file *file) +{ + struct drm_device *const dev = file->minor->dev; + int ret; + + /* If this is not the legacy device, there are no masters. */ + if (file->minor->type != DRM_MINOR_LEGACY) + return 0; + + mutex_lock(&dev->master_mutex); + if (file->minor->master != NULL) { + /* + * If the minor already has a master, get a reference + * to it. + */ + file->master = drm_master_get(file->minor->master); + ret = 0; + } else { + /* + * Otherwise, automatically behave as though we had + * just done setmaster. + */ + ret = drm_new_set_master(dev, file); + } + mutex_unlock(&dev->master_mutex); + + return ret; +} + void drm_close_file(struct drm_file *file) {
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:02:06 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_scatter.c Log Message: drm_sg_* legacy To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_scatter.c 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/drm_scatter.c diff -u src/sys/external/bsd/drm2/drm/drm_scatter.c:1.4 src/sys/external/bsd/drm2/drm/drm_scatter.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_scatter.c:1.4 Wed Feb 7 06:18:46 2018 +++ src/sys/external/bsd/drm2/drm/drm_scatter.c Mon Aug 27 07:02:06 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_scatter.c,v 1.4 2018/02/07 06:18:46 mrg Exp $ */ +/* $NetBSD: drm_scatter.c,v 1.5 2018/08/27 07:02:06 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.4 2018/02/07 06:18:46 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.5 2018/08/27 07:02:06 riastradh Exp $"); #include #include @@ -40,13 +40,15 @@ __KERNEL_RCSID(0, "$NetBSD: drm_scatter. #include #include +#include +#include "../dist/drm/drm_legacy.h" static int drm_sg_alloc_mem(struct drm_device *, size_t, struct drm_sg_mem **); static void drm_sg_free_mem(struct drm_device *, struct drm_sg_mem *); int -drm_sg_alloc(struct drm_device *dev, void *data, +drm_legacy_sg_alloc(struct drm_device *dev, void *data, struct drm_file *file __unused) { struct drm_scatter_gather *const request = data; @@ -88,7 +90,7 @@ drm_sg_alloc(struct drm_device *dev, voi } int -drm_sg_free(struct drm_device *dev, void *data, struct drm_file *file) +drm_legacy_sg_free(struct drm_device *dev, void *data, struct drm_file *file) { struct drm_scatter_gather *const request = data; struct drm_sg_mem *sg;
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:01:15 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: More drm_fops.c updates. Hooray, code deletion! To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/drm/drm_fops.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.8 src/sys/external/bsd/drm2/drm/drm_fops.c:1.9 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.8 Mon Aug 27 06:58:10 2018 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 07:01:15 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.8 2018/08/27 06:58:10 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.9 2018/08/27 07:01:15 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.8 2018/08/27 06:58:10 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.9 2018/08/27 07:01:15 riastradh Exp $"); #include #include @@ -38,12 +38,12 @@ __KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v #include #include #include +#include "../dist/drm/drm_legacy.h" static int drm_open_file_master(struct drm_file *); static void drm_master_release(struct drm_file *); static void drm_events_release(struct drm_file *); -static void drm_close_file_contexts(struct drm_file *); static void drm_close_file_master(struct drm_file *); int @@ -178,7 +178,7 @@ drm_close_file(struct drm_file *file) drm_fb_release(file); if (drm_core_check_feature(dev, DRIVER_GEM)) drm_gem_release(dev, file); - drm_close_file_contexts(file); + drm_legacy_ctxbitmap_flush(dev, file); drm_close_file_master(file); mutex_lock(&dev->struct_mutex); @@ -240,45 +240,12 @@ drm_events_release(struct drm_file *file } static void -drm_close_file_contexts(struct drm_file *file) -{ - struct drm_device *const dev = file->minor->dev; - struct drm_ctx_list *node, *next; - - mutex_lock(&dev->ctxlist_mutex); - if (!list_empty(&dev->ctxlist)) { - list_for_each_entry_safe(node, next, &dev->ctxlist, head) { - if (node->tag != file) -continue; - if (node->handle == DRM_KERNEL_CONTEXT) -continue; - if (dev->driver->context_dtor) -(*dev->driver->context_dtor)(dev, -node->handle); - drm_ctxbitmap_free(dev, node->handle); - list_del(&node->head); - kfree(node); - } - } - mutex_unlock(&dev->ctxlist_mutex); -} - -static void drm_close_file_master(struct drm_file *file) { struct drm_device *const dev = file->minor->dev; mutex_lock(&dev->master_mutex); if (file->is_master) { - struct drm_file *other_file; - - list_for_each_entry(other_file, &dev->filelist, lhead) { - if (other_file == file) -continue; - if (other_file->master != file->master) -continue; - other_file->authenticated = 0; - } if (file->minor->master == file->master) { if (dev->driver->master_drop) (*dev->driver->master_drop)(dev, file, true);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:01:30 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_lock.c Log Message: Need for drm_global_mutex. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_lock.c 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/drm_lock.c diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.6 src/sys/external/bsd/drm2/drm/drm_lock.c:1.7 --- src/sys/external/bsd/drm2/drm/drm_lock.c:1.6 Mon Aug 27 06:57:32 2018 +++ src/sys/external/bsd/drm2/drm/drm_lock.c Mon Aug 27 07:01:30 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_lock.c,v 1.6 2018/08/27 06:57:32 riastradh Exp $ */ +/* $NetBSD: drm_lock.c,v 1.7 2018/08/27 07:01:30 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -46,13 +46,14 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.6 2018/08/27 06:57:32 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.7 2018/08/27 07:01:30 riastradh Exp $"); #include #include #include #include +#include #include "../dist/drm/drm_legacy.h" static bool drm_lock_acquire(struct drm_lock_data *, int);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:00:09 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_sysfs.c Log Message: Internal prototypes from drm_internal.h. Reflect upstream deletions. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_sysfs.c 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/drm_sysfs.c diff -u src/sys/external/bsd/drm2/drm/drm_sysfs.c:1.3 src/sys/external/bsd/drm2/drm/drm_sysfs.c:1.4 --- src/sys/external/bsd/drm2/drm/drm_sysfs.c:1.3 Wed Jul 16 20:56:25 2014 +++ src/sys/external/bsd/drm2/drm/drm_sysfs.c Mon Aug 27 07:00:09 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_sysfs.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $ */ +/* $NetBSD: drm_sysfs.c,v 1.4 2018/08/27 07:00:09 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,9 +30,10 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_sysfs.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_sysfs.c,v 1.4 2018/08/27 07:00:09 riastradh Exp $"); #include +#include int drm_sysfs_connector_add(struct drm_connector *connector __unused) @@ -45,17 +46,6 @@ drm_sysfs_connector_remove(struct drm_co { } -int -drm_sysfs_device_add(struct drm_minor *minor __unused) -{ - return 0; -} - -void -drm_sysfs_device_remove(struct drm_minor *minor __unused) -{ -} - void drm_sysfs_hotplug_event(struct drm_device *dev __unused) {
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:58:20 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_memory.c drm_vm.c Log Message: Get the legacy drm declarations from drm_legacy.h. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/drm/drm_memory.c cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_vm.c 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/drm_memory.c diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.11 src/sys/external/bsd/drm2/drm/drm_memory.c:1.12 --- src/sys/external/bsd/drm2/drm/drm_memory.c:1.11 Mon Aug 27 06:44:15 2018 +++ src/sys/external/bsd/drm2/drm/drm_memory.c Mon Aug 27 06:58:20 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_memory.c,v 1.11 2018/08/27 06:44:15 riastradh Exp $ */ +/* $NetBSD: drm_memory.c,v 1.12 2018/08/27 06:58:20 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.11 2018/08/27 06:44:15 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.12 2018/08/27 06:58:20 riastradh Exp $"); #if defined(__i386__) || defined(__x86_64__) @@ -72,6 +72,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_memory.c #endif #include +#include /* * XXX drm_bus_borrow is a horrible kludge! Index: src/sys/external/bsd/drm2/drm/drm_vm.c diff -u src/sys/external/bsd/drm2/drm/drm_vm.c:1.7 src/sys/external/bsd/drm2/drm/drm_vm.c:1.8 --- src/sys/external/bsd/drm2/drm/drm_vm.c:1.7 Wed Dec 31 08:55:18 2014 +++ src/sys/external/bsd/drm2/drm/drm_vm.c Mon Aug 27 06:58:20 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vm.c,v 1.7 2014/12/31 08:55:18 mrg Exp $ */ +/* $NetBSD: drm_vm.c,v 1.8 2018/08/27 06:58:20 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.7 2014/12/31 08:55:18 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.8 2018/08/27 06:58:20 riastradh Exp $"); #include #include @@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1 #include #include +#include static paddr_t drm_mmap_paddr_locked(struct drm_device *, off_t, int); static paddr_t drm_mmap_dma_paddr(struct drm_device *, off_t, int);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:58:10 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: Apply some more legacy renames. drm magic got replaced by an idr. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_fops.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.7 src/sys/external/bsd/drm2/drm/drm_fops.c:1.8 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.7 Mon Aug 27 06:57:10 2018 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 06:58:10 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.7 2018/08/27 06:57:10 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.8 2018/08/27 06:58:10 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.7 2018/08/27 06:57:10 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.8 2018/08/27 06:58:10 riastradh Exp $"); #include #include @@ -169,12 +169,10 @@ drm_close_file(struct drm_file *file) if (dev->driver->preclose) (*dev->driver->preclose)(dev, file); - if (file->magic) - (void)drm_remove_magic(file->master, file->magic); if (minor->master) drm_master_release(file); if (drm_core_check_feature(dev, DRIVER_HAVE_DMA)) - drm_core_reclaim_buffers(dev, file); + drm_legacy_reclaim_buffers(dev, file); drm_events_release(file); if (drm_core_check_feature(dev, DRIVER_MODESET)) drm_fb_release(file); @@ -185,6 +183,8 @@ drm_close_file(struct drm_file *file) mutex_lock(&dev->struct_mutex); list_del(&file->lhead); + if (file->magic) + idr_remove(&file->master->magic_map, file->magic); mutex_unlock(&dev->struct_mutex); if (dev->driver->postclose) @@ -207,10 +207,10 @@ drm_master_release(struct drm_file *file /* * XXX I think this locking concept is wrong -- we need to hold * file->master->lock.spinlock across the two calls to - * drm_i_have_hw_lock and drm_lock_free. + * drm_legacy_i_have_hw_lock and drm_legacy_lock_free. */ - if (drm_i_have_hw_lock(file->minor->dev, file)) - drm_lock_free(&file->master->lock, + if (drm_legacy_i_have_hw_lock(file->minor->dev, file)) + drm_legacy_lock_free(&file->master->lock, _DRM_LOCKING_CONTEXT(file->master->lock.hw_lock->lock)); }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:57:20 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_gem_vm.c Log Message: Need drm_legacy.h for legacy mmap stuff. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_gem_vm.c 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/drm_gem_vm.c diff -u src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.7 src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.8 --- src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.7 Mon Aug 27 06:56:22 2018 +++ src/sys/external/bsd/drm2/drm/drm_gem_vm.c Mon Aug 27 06:57:20 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_gem_vm.c,v 1.7 2018/08/27 06:56:22 riastradh Exp $ */ +/* $NetBSD: drm_gem_vm.c,v 1.8 2018/08/27 06:57:20 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.7 2018/08/27 06:56:22 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.8 2018/08/27 06:57:20 riastradh Exp $"); #include @@ -38,6 +38,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c #include #include +#include #include static int drm_gem_mmap_object_locked(struct drm_device *, off_t, size_t,
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:56:22 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_gem_vm.c Log Message: Need to use new for GEM stuff. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_gem_vm.c 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/drm_gem_vm.c diff -u src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.6 src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.7 --- src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.6 Mon Mar 9 01:29:40 2015 +++ src/sys/external/bsd/drm2/drm/drm_gem_vm.c Mon Aug 27 06:56:22 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $ */ +/* $NetBSD: drm_gem_vm.c,v 1.7 2018/08/27 06:56:22 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,13 +30,14 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.7 2018/08/27 06:56:22 riastradh Exp $"); #include #include #include +#include #include static int drm_gem_mmap_object_locked(struct drm_device *, off_t, size_t,
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:57:32 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_lock.c Log Message: Rename some drm_* to drm_legacy_*. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_lock.c 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/drm_lock.c diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.5 src/sys/external/bsd/drm2/drm/drm_lock.c:1.6 --- src/sys/external/bsd/drm2/drm/drm_lock.c:1.5 Mon Aug 27 06:06:31 2018 +++ src/sys/external/bsd/drm2/drm/drm_lock.c Mon Aug 27 06:57:32 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_lock.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $ */ +/* $NetBSD: drm_lock.c,v 1.6 2018/08/27 06:57:32 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -46,7 +46,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.6 2018/08/27 06:57:32 riastradh Exp $"); #include #include @@ -66,7 +66,7 @@ static void drm_lock_unblock_signals(str * Take the lock on behalf of userland. */ int -drm_lock(struct drm_device *dev, void *data, struct drm_file *file) +drm_legacy_lock(struct drm_device *dev, void *data, struct drm_file *file) { struct drm_lock *lock_request = data; struct drm_master *master = file->master; @@ -158,7 +158,7 @@ out0: mutex_lock(&drm_global_mutex); * userland's request. Fail if it doesn't actually hold the lock. */ int -drm_unlock(struct drm_device *dev, void *data, struct drm_file *file) +drm_legacy_unlock(struct drm_device *dev, void *data, struct drm_file *file) { struct drm_lock *lock_request = data; struct drm_master *master = file->master; @@ -222,7 +222,7 @@ out0: mutex_lock(&drm_global_mutex); * XXX Should we also unblock signals like drm_unlock does? */ int -drm_lock_free(struct drm_lock_data *lock_data, unsigned int context) +drm_legacy_lock_free(struct drm_lock_data *lock_data, unsigned int context) { spin_lock(&lock_data->spinlock); @@ -238,7 +238,7 @@ drm_lock_free(struct drm_lock_data *lock * anyone else. */ void -drm_idlelock_take(struct drm_lock_data *lock_data) +drm_legacy_idlelock_take(struct drm_lock_data *lock_data) { spin_lock(&lock_data->spinlock); @@ -262,7 +262,7 @@ drm_idlelock_take(struct drm_lock_data * * Release whatever drm_idlelock_take managed to acquire. */ void -drm_idlelock_release(struct drm_lock_data *lock_data) +drm_legacy_idlelock_release(struct drm_lock_data *lock_data) { spin_lock(&lock_data->spinlock); @@ -287,7 +287,7 @@ drm_idlelock_release(struct drm_lock_dat * think we can know what the correct answer is in that case. */ int -drm_i_have_hw_lock(struct drm_device *dev, struct drm_file *file) +drm_legacy_i_have_hw_lock(struct drm_device *dev, struct drm_file *file) { struct drm_lock_data *const lock_data = &file->master->lock; int answer = 0;
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:57:10 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: Fix headers for drm_fops.c. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_fops.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.6 src/sys/external/bsd/drm2/drm/drm_fops.c:1.7 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.6 Mon Aug 27 06:49:12 2018 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 06:57:10 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.6 2018/08/27 06:49:12 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.7 2018/08/27 06:57:10 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,13 +30,14 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.6 2018/08/27 06:49:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.7 2018/08/27 06:57:10 riastradh Exp $"); #include #include #include -#include "../dist/drm/drm_legacy.h" +#include +#include static int drm_open_file_master(struct drm_file *);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:52:35 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cdevsw.c Log Message: Copy body of static drm_legacy_dev_reinit from drm_fops.c to drm_cdevsw.c. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_cdevsw.c 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/drm_cdevsw.c diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.6 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.7 --- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.6 Mon Aug 27 06:51:29 2018 +++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 06:52:34 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $ */ +/* $NetBSD: drm_cdevsw.c,v 1.7 2018/08/27 06:52:34 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.7 2018/08/27 06:52:34 riastradh Exp $"); #include #include @@ -258,7 +258,13 @@ drm_lastclose(struct drm_device *dev) drm_legacy_dma_takedown(dev); mutex_unlock(&dev->struct_mutex); - drm_legacy_dev_reinit(dev); + /* XXX Synchronize with drm_legacy_dev_reinit. */ + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + dev->sigdata.lock = NULL; + dev->context_flag = 0; + dev->last_context = 0; + dev->if_version = 0; + } return 0; }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:51:29 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cdevsw.c Log Message: open_count is protected by drm_global_mutex; count_lock is no more. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_cdevsw.c 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/drm_cdevsw.c diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.5 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.6 --- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.5 Mon Aug 27 06:51:17 2018 +++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 06:51:29 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $ */ +/* $NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $"); #include #include @@ -58,6 +58,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c #include #include +#include #include "../dist/drm/drm_legacy.h" static dev_type_open(drm_open); @@ -139,15 +140,15 @@ drm_open(dev_t d, int flags, int fmt, st goto fail1; } - spin_lock(&dev->count_lock); + mutex_lock(&drm_global_mutex); if (dev->open_count == INT_MAX) { - spin_unlock(&dev->count_lock); + mutex_unlock(&drm_global_mutex); error = EBUSY; goto fail1; } firstopen = (dev->open_count == 0); dev->open_count++; - spin_unlock(&dev->count_lock); + mutex_lock(&drm_global_mutex); if (firstopen) { /* XXX errno Linux->NetBSD */ @@ -174,11 +175,11 @@ drm_open(dev_t d, int flags, int fmt, st fail3: kmem_free(file, sizeof(*file)); fd_abort(curproc, fp, fd); -fail2: spin_lock(&dev->count_lock); +fail2: mutex_lock(&drm_global_mutex); KASSERT(0 < dev->open_count); --dev->open_count; lastclose = (dev->open_count == 0); - spin_unlock(&dev->count_lock); + mutex_unlock(&drm_global_mutex); if (lastclose) (void)drm_lastclose(dev); fail1: drm_minor_release(dminor); @@ -197,11 +198,11 @@ drm_close(struct file *fp) drm_close_file(file); kmem_free(file, sizeof(*file)); - spin_lock(&dev->count_lock); + mutex_lock(&drm_global_mutex); KASSERT(0 < dev->open_count); --dev->open_count; lastclose = (dev->open_count == 0); - spin_unlock(&dev->count_lock); + mutex_unlock(&drm_global_mutex); if (lastclose) (void)drm_lastclose(dev); @@ -255,7 +256,6 @@ drm_lastclose(struct drm_device *dev) drm_legacy_sg_cleanup(dev); drm_legacy_vma_flush(dev); drm_legacy_dma_takedown(dev); - mutex_unlock(&dev->struct_mutex); drm_legacy_dev_reinit(dev);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:51:17 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cdevsw.c Log Message: Actually convert errno as comment suggests. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_cdevsw.c 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/drm_cdevsw.c diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.4 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.4 Mon Aug 27 06:50:58 2018 +++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 06:51:17 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cdevsw.c,v 1.4 2018/08/27 06:50:58 riastradh Exp $ */ +/* $NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.4 2018/08/27 06:50:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $"); #include #include @@ -151,7 +151,7 @@ drm_open(dev_t d, int flags, int fmt, st if (firstopen) { /* XXX errno Linux->NetBSD */ - error = drm_firstopen(dev); + error = -drm_firstopen(dev); if (error) goto fail2; }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:49:12 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: Update always_authenticated -> authenticated. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_fops.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.5 src/sys/external/bsd/drm2/drm/drm_fops.c:1.6 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.5 Mon Aug 27 06:06:31 2018 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 06:49:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.6 2018/08/27 06:49:12 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.6 2018/08/27 06:49:12 riastradh Exp $"); #include #include @@ -51,8 +51,7 @@ drm_open_file(struct drm_file *file, voi struct drm_device *const dev = minor->dev; int ret; - file->always_authenticated = DRM_SUSER(); /* XXX */ - file->always_authenticated = file->always_authenticated; + file->authenticated = DRM_SUSER(); /* XXX */ file->is_master = false; file->stereo_allowed = false; file->universal_planes = false;
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:49:01 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cdevsw.c Log Message: Update DRM_IOCTL_DEF. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_cdevsw.c 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/drm_cdevsw.c diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.2 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.3 --- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.2 Mon Aug 27 06:48:50 2018 +++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 06:49:01 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cdevsw.c,v 1.2 2018/08/27 06:48:50 riastradh Exp $ */ +/* $NetBSD: drm_cdevsw.c,v 1.3 2018/08/27 06:49:01 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.2 2018/08/27 06:48:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.3 2018/08/27 06:49:01 riastradh Exp $"); #include #include @@ -85,7 +85,7 @@ static drm_ioctl_t drm_version; .cmd = (IOCTL), \ .flags = (FLAGS), \ .func = (FUNC), \ - .cmd_drv = 0, \ + .name = #IOCTL, \ } #if __OS_HAS_AGP
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:48:50 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_cdevsw.c Log Message: Make drm_lastclose match upstream. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drm_cdevsw.c 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/drm_cdevsw.c diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.1 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.2 --- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.1 Mon Aug 27 06:31:41 2018 +++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 06:48:50 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cdevsw.c,v 1.1 2018/08/27 06:31:41 riastradh Exp $ */ +/* $NetBSD: drm_cdevsw.c,v 1.2 2018/08/27 06:48:50 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.1 2018/08/27 06:31:41 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.2 2018/08/27 06:48:50 riastradh Exp $"); #include #include @@ -387,7 +387,6 @@ fail0: KASSERT(ret); int drm_lastclose(struct drm_device *dev) { - struct drm_vma_entry *vma, *vma_temp; /* XXX Order is sketchy here... */ if (dev->driver->lastclose) @@ -399,19 +398,12 @@ drm_lastclose(struct drm_device *dev) if (dev->agp) drm_agp_clear_hook(dev); drm_legacy_sg_cleanup(dev); - list_for_each_entry_safe(vma, vma_temp, &dev->vmalist, head) { - list_del(&vma->head); - kfree(vma); - } + drm_legacy_vma_flush(dev); drm_legacy_dma_takedown(dev); + mutex_unlock(&dev->struct_mutex); - if (!drm_core_check_feature(dev, DRIVER_MODESET)) { - dev->sigdata.lock = NULL; - dev->context_flag = 0; - dev->last_context = 0; - dev->if_version = 0; - } + drm_legacy_dev_reinit(dev); return 0; }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:47:51 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: We have a local override for drm_encoder_slave.c. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/external/bsd/drm2/drm/files.drmkms 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.21 src/sys/external/bsd/drm2/drm/files.drmkms:1.22 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.21 Mon Aug 27 06:37:41 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 06:47:51 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.21 2018/08/27 06:37:41 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.22 2018/08/27 06:47:51 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -64,7 +64,7 @@ file external/bsd/drm2/dist/drm/drm_dp_h file external/bsd/drm2/dist/drm/drm_dp_mst_topology.c drmkms file external/bsd/drm2/dist/drm/drm_drv.c drmkms file external/bsd/drm2/dist/drm/drm_edid.c drmkms -file external/bsd/drm2/dist/drm/drm_encoder_slave.c drmkms +file external/bsd/drm2/i2c/drm_encoder_slave.c drmkms file external/bsd/drm2/dist/drm/drm_flip_work.c drmkms file external/bsd/drm2/drm/drm_fops.c drmkms file external/bsd/drm2/dist/drm/drm_gem.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:37:41 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: Reorder header files to avoid drm_legacy.h lossage. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/drm2/drm/files.drmkms 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.20 src/sys/external/bsd/drm2/drm/files.drmkms:1.21 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.20 Mon Aug 27 06:33:08 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 06:37:41 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.20 2018/08/27 06:33:08 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.21 2018/08/27 06:37:41 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -13,11 +13,16 @@ define drmkms: drmkms_linux, drmkms_i2c, defflag opt_drmkms.h DRMKMS_DEBUG makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/include" makeoptions drmkms_ttm CPPFLAGS+="-I$S/external/bsd/drm2/include/drm" -makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist" +makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/common/include" makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist/include" makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist/include/drm" makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist/uapi" -makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/common/include" + +# Must come last because some header file names are repeated in +# dist/drm (I'm looking ta you, drm_legacy.h), while others sometimes +# explicitly write . (Maybe that should have been imported +# under dist/include/uapi rather than dist/uapi.) +makeoptions drmkms CPPFLAGS+="-I$S/external/bsd/drm2/dist" makeoptions drmkms "CWARNFLAGS.drm_crtc.c"+="-Wno-shadow" makeoptions drmkms "CWARNFLAGS.drm_crtc.c"+="-Wno-missing-field-initializers"
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:33:08 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: Restore more locally overridden files. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/drm2/drm/files.drmkms 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.19 src/sys/external/bsd/drm2/drm/files.drmkms:1.20 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.19 Mon Aug 27 06:31:41 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 06:33:08 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.19 2018/08/27 06:31:41 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.20 2018/08/27 06:33:08 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -61,15 +61,15 @@ file external/bsd/drm2/dist/drm/drm_drv. file external/bsd/drm2/dist/drm/drm_edid.c drmkms file external/bsd/drm2/dist/drm/drm_encoder_slave.c drmkms file external/bsd/drm2/dist/drm/drm_flip_work.c drmkms -file external/bsd/drm2/dist/drm/drm_fops.c drmkms +file external/bsd/drm2/drm/drm_fops.c drmkms file external/bsd/drm2/dist/drm/drm_gem.c drmkms file external/bsd/drm2/dist/drm/drm_global.c drmkms file external/bsd/drm2/dist/drm/drm_hashtab.c drmkms #file external/bsd/drm2/dist/drm/drm_info.c drmkms 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_lock.c drmkms -file external/bsd/drm2/dist/drm/drm_memory.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_modes.c drmkms file external/bsd/drm2/dist/drm/drm_modeset_lock.c drmkms @@ -79,8 +79,8 @@ file external/bsd/drm2/dist/drm/drm_plan #file external/bsd/drm2/dist/drm/drm_prime.c drmkms # XXX drm prime file external/bsd/drm2/dist/drm/drm_probe_helper.c drmkms file external/bsd/drm2/dist/drm/drm_rect.c drmkms -file external/bsd/drm2/dist/drm/drm_scatter.c drmkms +file external/bsd/drm2/drm/drm_scatter.c drmkms file external/bsd/drm2/drm/drm_sysfs.c drmkms file external/bsd/drm2/dist/drm/drm_trace_points.c drmkms -file external/bsd/drm2/dist/drm/drm_vm.c drmkms -file external/bsd/drm2/dist/drm/drm_vma_manager.c drmkms +file external/bsd/drm2/drm/drm_vm.c drmkms +file external/bsd/drm2/drm/drm_vma_manager.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:31:41 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Added Files: src/sys/external/bsd/drm2/drm: drm_cdevsw.c Removed Files: src/sys/external/bsd/drm2/drm: drm_drv.c Log Message: Rename drm_drv.c to drm_cdevsw.c. Previously we overrode upstream's drm_drv.c altogether, and used upstream's drm_stub.c subroutines. But upstream deleted drm_drv.c and renamed drm_stub.c to drm_drv.c, so we have to cope with that reshuffle. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/sys/external/bsd/drm2/drm/drm_cdevsw.c cvs rdiff -u -r1.21 -r0 src/sys/external/bsd/drm2/drm/drm_drv.c cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/drm2/drm/files.drmkms 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.18 src/sys/external/bsd/drm2/drm/files.drmkms:1.19 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.18 Mon Aug 27 06:25:59 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 06:31:41 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.18 2018/08/27 06:25:59 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.19 2018/08/27 06:31:41 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -30,6 +30,7 @@ makeoptions drmkms CPPFLAGS+="-DCONFIG_F makeoptions drmkms CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE=0" makeoptions drmkms CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE_MODULE=0" +file external/bsd/drm2/drm/drm_cdevsw.c drmkms file external/bsd/drm2/drm/drm_gem_vm.c drmkms file external/bsd/drm2/drm/drm_gem_cma_helper.c drmkms file external/bsd/drm2/drm/drm_module.c drmkms Added files: Index: src/sys/external/bsd/drm2/drm/drm_cdevsw.c diff -u /dev/null src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.1 --- /dev/null Mon Aug 27 06:31:41 2018 +++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 06:31:41 2018 @@ -0,0 +1,840 @@ +/* $NetBSD: drm_cdevsw.c,v 1.1 2018/08/27 06:31:41 riastradh Exp $ */ + +/*- + * Copyright (c) 2013 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 +__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.1 2018/08/27 06:31:41 riastradh Exp $"); + +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _MODULE +/* XXX Mega-kludge because modules are broken. */ +#include +#endif +#include +#include +#ifndef _MODULE +#include /* XXX drm_init kludge */ +#endif +#include + +#include + +#include + +#include + +#include +#include "../dist/drm/drm_legacy.h" + +static dev_type_open(drm_open); + +static int drm_firstopen(struct drm_device *); + +static int drm_close(struct file *); +static int drm_read(struct file *, off_t *, struct uio *, kauth_cred_t, + int); +static int drm_dequeue_event(struct drm_file *, size_t, + struct drm_pending_event **, int); +static int drm_poll(struct file *, int); +static int drm_kqfilter(struct file *, struct knote *); +static int drm_stat(struct file *, struct stat *); +static int drm_ioctl(struct file *, unsigned long, void *); +static int drm_fop_mmap(struct file *, off_t *, size_t, int, int *, int *, + struct uvm_object **, int *); +static int drm_version_string(char *, size_t *, const char *); +static paddr_t drm_mmap(dev_t, off_t, int); + +static drm_ioctl_t drm_version; + +#define DRM_IOCTL_DEF(IOCTL, FUNC, FLAGS)\ + [DRM_IOCTL_NR(IOCTL
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:25:59 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: Apply locally overridden files. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/drm/files.drmkms 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.17 src/sys/external/bsd/drm2/drm/files.drmkms:1.18 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.17 Mon Aug 27 06:25:48 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 06:25:59 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.17 2018/08/27 06:25:48 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.18 2018/08/27 06:25:59 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -48,7 +48,7 @@ file external/bsd/drm2/dist/drm/drm_atom file external/bsd/drm2/dist/drm/drm_auth.c drmkms file external/bsd/drm2/dist/drm/drm_bridge.c drmkms file external/bsd/drm2/dist/drm/drm_bufs.c drmkms -file external/bsd/drm2/dist/drm/drm_cache.c drmkms +file external/bsd/drm2/drm/drm_cache.c drmkms file external/bsd/drm2/dist/drm/drm_context.c drmkms file external/bsd/drm2/dist/drm/drm_crtc.c drmkms file external/bsd/drm2/dist/drm/drm_crtc_helper.c drmkms @@ -79,7 +79,7 @@ file external/bsd/drm2/dist/drm/drm_plan file external/bsd/drm2/dist/drm/drm_probe_helper.c drmkms file external/bsd/drm2/dist/drm/drm_rect.c drmkms file external/bsd/drm2/dist/drm/drm_scatter.c drmkms -file external/bsd/drm2/dist/drm/drm_sysfs.c drmkms +file external/bsd/drm2/drm/drm_sysfs.c drmkms file external/bsd/drm2/dist/drm/drm_trace_points.c drmkms file external/bsd/drm2/dist/drm/drm_vm.c drmkms file external/bsd/drm2/dist/drm/drm_vma_manager.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:25:48 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: Omit PCI files from files.drmkms. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/drm2/drm/files.drmkms 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.16 src/sys/external/bsd/drm2/drm/files.drmkms:1.17 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.16 Mon Aug 27 06:25:37 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 06:25:48 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.16 2018/08/27 06:25:37 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.17 2018/08/27 06:25:48 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -41,8 +41,8 @@ file external/bsd/drm2/drm/drmfb.c drm include "external/bsd/drm2/ttm/files.ttm" -file external/bsd/drm2/dist/drm/ati_pcigart.c drmkms -file external/bsd/drm2/dist/drm/drm_agpsupport.c drmkms +#file external/bsd/drm2/dist/drm/ati_pcigart.c drmkms # drmkms_pci +#file external/bsd/drm2/dist/drm/drm_agpsupport.c drmkms # drmkms_pci file external/bsd/drm2/dist/drm/drm_atomic.c drmkms file external/bsd/drm2/dist/drm/drm_atomic_helper.c drmkms file external/bsd/drm2/dist/drm/drm_auth.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:25:37 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: regen files.drmkms To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/drm/files.drmkms 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.15 src/sys/external/bsd/drm2/drm/files.drmkms:1.16 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.15 Mon Aug 27 06:25:28 2018 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 06:25:37 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.15 2018/08/27 06:25:28 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.16 2018/08/27 06:25:37 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -41,39 +41,45 @@ file external/bsd/drm2/drm/drmfb.c drm include "external/bsd/drm2/ttm/files.ttm" -file external/bsd/drm2/dist/drm/drm_auth.c drmkms -file external/bsd/drm2/dist/drm/drm_buffer.c drmkms -file external/bsd/drm2/dist/drm/drm_bufs.c drmkms -file external/bsd/drm2/drm/drm_cache.c drmkms +file external/bsd/drm2/dist/drm/ati_pcigart.c drmkms +file external/bsd/drm2/dist/drm/drm_agpsupport.c drmkms +file external/bsd/drm2/dist/drm/drm_atomic.c drmkms +file external/bsd/drm2/dist/drm/drm_atomic_helper.c drmkms +file external/bsd/drm2/dist/drm/drm_auth.c drmkms +file external/bsd/drm2/dist/drm/drm_bridge.c drmkms +file external/bsd/drm2/dist/drm/drm_bufs.c drmkms +file external/bsd/drm2/dist/drm/drm_cache.c drmkms file external/bsd/drm2/dist/drm/drm_context.c drmkms -file external/bsd/drm2/dist/drm/drm_crtc.c drmkms +file external/bsd/drm2/dist/drm/drm_crtc.c drmkms file external/bsd/drm2/dist/drm/drm_crtc_helper.c drmkms -file external/bsd/drm2/dist/drm/drm_dma.c drmkms -file external/bsd/drm2/dist/drm/drm_dp_helper.c drmkms_i2c -file external/bsd/drm2/drm/drm_drv.c drmkms -file external/bsd/drm2/dist/drm/drm_edid.c drmkms_i2c -file external/bsd/drm2/i2c/drm_encoder_slave.c drmkms_i2c -file external/bsd/drm2/dist/drm/drm_fb_helper.c drmkms +file external/bsd/drm2/dist/drm/drm_debugfs.c drmkms +file external/bsd/drm2/dist/drm/drm_dma.c drmkms +file external/bsd/drm2/dist/drm/drm_dp_helper.c drmkms +file external/bsd/drm2/dist/drm/drm_dp_mst_topology.c drmkms +file external/bsd/drm2/dist/drm/drm_drv.c drmkms +file external/bsd/drm2/dist/drm/drm_edid.c drmkms +file external/bsd/drm2/dist/drm/drm_encoder_slave.c drmkms file external/bsd/drm2/dist/drm/drm_flip_work.c drmkms -file external/bsd/drm2/drm/drm_fops.c drmkms -file external/bsd/drm2/dist/drm/drm_gem.c drmkms -file external/bsd/drm2/dist/drm/drm_global.c drmkms +file external/bsd/drm2/dist/drm/drm_fops.c drmkms +file external/bsd/drm2/dist/drm/drm_gem.c drmkms +file external/bsd/drm2/dist/drm/drm_global.c drmkms file external/bsd/drm2/dist/drm/drm_hashtab.c drmkms -#file external/bsd/drm2/dist/drm/drm_info.c drmkms -#file external/bsd/drm2/dist/drm/drm_ioc32.c drmkms -file external/bsd/drm2/dist/drm/drm_ioctl.c drmkms -file external/bsd/drm2/dist/drm/drm_irq.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_modes.c drmkms +#file external/bsd/drm2/dist/drm/drm_info.c drmkms +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_lock.c drmkms +file external/bsd/drm2/dist/drm/drm_memory.c drmkms +file external/bsd/drm2/dist/drm/drm_mm.c drmkms +file external/bsd/drm2/dist/drm/drm_modes.c drmkms +file external/bsd/drm2/dist/drm/drm_modeset_lock.c drmkms +file external/bsd/drm2/dist/drm/drm_pci.c drmkms file external/bsd/drm2/dist/drm/drm_plane_helper.c drmkms #file external/bsd/drm2/dist/drm/drm_platform.c drmkms -#file external/bsd/drm2/dist/drm/drm_prime.c drmkms +#file external/bsd/drm2/dist/drm/drm_prime.c drmkms # XXX drm prime file external/bsd/drm2/dist/drm/drm_probe_helper.c drmkms -file external/bsd/drm2/dist/drm/drm_rect.c drmkms -file external/bsd/drm2/drm/drm_scatter.c drmkms -file external/bsd/drm2/dist/drm/drm_stub.c drmkms -file external/bsd/drm2/drm/drm_sysfs.c drmkms -file external/bsd/drm2/drm/drm_vm.c drmkms -file external/bsd/drm2/drm/drm_vma_manager.c drmkms +file external/bsd/drm2/dist/drm/drm_rect.c drmkms +file external/bsd/drm2/dist/drm/drm_scatter.c drmkms +file external/bsd/drm2/dist/drm/drm_sysfs.c drmkms +file external/bsd/drm2/dist/drm/drm_trace_points.c drmkms +file external/bsd/drm2/dist/drm/drm_vm.c drmkms +file external/bsd/drm2/dist/drm/drm_vma_manager.c drmkms
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:25:28 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: Move local files to the top to make them more visible. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/drm/files.drmkms 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.14 src/sys/external/bsd/drm2/drm/files.drmkms:1.15 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.14 Tue Dec 26 14:53:12 2017 +++ src/sys/external/bsd/drm2/drm/files.drmkms Mon Aug 27 06:25:28 2018 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.14 2017/12/26 14:53:12 jmcneill Exp $ +# $NetBSD: files.drmkms,v 1.15 2018/08/27 06:25:28 riastradh Exp $ include "external/bsd/drm2/linux/files.drmkms_linux" @@ -30,6 +30,17 @@ makeoptions drmkms CPPFLAGS+="-DCONFIG_F makeoptions drmkms CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE=0" makeoptions drmkms CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE_MODULE=0" +file external/bsd/drm2/drm/drm_gem_vm.c drmkms +file external/bsd/drm2/drm/drm_gem_cma_helper.c drmkms +file external/bsd/drm2/drm/drm_module.c drmkms +file external/bsd/drm2/drm/drm_sysctl.c drmkms + +# Generic, unaccelerated drm-based framebuffer. +define drmfb: genfb +file external/bsd/drm2/drm/drmfb.c drmfb + +include "external/bsd/drm2/ttm/files.ttm" + file external/bsd/drm2/dist/drm/drm_auth.c drmkms file external/bsd/drm2/dist/drm/drm_buffer.c drmkms file external/bsd/drm2/dist/drm/drm_bufs.c drmkms @@ -66,14 +77,3 @@ file external/bsd/drm2/dist/drm/drm_stub file external/bsd/drm2/drm/drm_sysfs.c drmkms file external/bsd/drm2/drm/drm_vm.c drmkms file external/bsd/drm2/drm/drm_vma_manager.c drmkms - -file external/bsd/drm2/drm/drm_gem_vm.c drmkms -file external/bsd/drm2/drm/drm_gem_cma_helper.c drmkms -file external/bsd/drm2/drm/drm_module.c drmkms -file external/bsd/drm2/drm/drm_sysctl.c drmkms - -# Generic, unaccelerated drm-based framebuffer. -define drmfb: genfb -file external/bsd/drm2/drm/drmfb.c drmfb - -include "external/bsd/drm2/ttm/files.ttm"
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:06:31 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_fops.c drm_lock.c Log Message: include drm_legacy.h as needed... Author: coypu Committer: Taylor R Campbell To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_fops.c \ src/sys/external/bsd/drm2/drm/drm_lock.c 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/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.4 src/sys/external/bsd/drm2/drm/drm_fops.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.4 Wed Jul 16 20:56:25 2014 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Mon Aug 27 06:06:31 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.4 2014/07/16 20:56:25 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,12 +30,13 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.4 2014/07/16 20:56:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $"); #include #include #include +#include "../dist/drm/drm_legacy.h" static int drm_open_file_master(struct drm_file *); Index: src/sys/external/bsd/drm2/drm/drm_lock.c diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.4 src/sys/external/bsd/drm2/drm/drm_lock.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_lock.c:1.4 Sat Apr 2 22:40:43 2016 +++ src/sys/external/bsd/drm2/drm/drm_lock.c Mon Aug 27 06:06:31 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_lock.c,v 1.4 2016/04/02 22:40:43 riastradh Exp $ */ +/* $NetBSD: drm_lock.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -46,13 +46,14 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.4 2016/04/02 22:40:43 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $"); #include #include #include #include +#include "../dist/drm/drm_legacy.h" static bool drm_lock_acquire(struct drm_lock_data *, int); static void drm_lock_release(struct drm_lock_data *, int);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 00:46:32 UTC 2018 Added Files: src/sys/external/bsd/drm2/drm: drm2netbsd Log Message: New script to generate files.drmkms from Linux Makefile. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/sys/external/bsd/drm2/drm/drm2netbsd Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/sys/external/bsd/drm2/drm/drm2netbsd diff -u /dev/null src/sys/external/bsd/drm2/drm/drm2netbsd:1.1 --- /dev/null Mon Aug 27 00:46:32 2018 +++ src/sys/external/bsd/drm2/drm/drm2netbsd Mon Aug 27 00:46:32 2018 @@ -0,0 +1,26 @@ +#!/bin/sh + +# $NetBSD: drm2netbsd,v 1.1 2018/08/27 00:46:32 riastradh Exp $ +# +# $ /path/to/drm2netbsd > /path/to/files.drm.new +# +# Run from the directory that came from drivers/gpu/drm. + +set -Ceu + +# Location of the DRMKMS sources relative to $NETBSDSRCDIR. +drmkms_top=external/bsd/drm2/dist/drm + +# config(5) flag for the DRMKMS driver. +drmkms_flag=drmkms + +env CONFIG_PCI=y \ +env CONFIG_AGP=y \ +make -f Makefile -V '$(drm-y)' -V '$(drm_kms_helper-y)' \ +| tr ' ' '\n' \ +| grep -v '^$' \ +| sed -e 's,\.o$,.c,' \ +| sort -u \ +| while read f; do + printf 'file\t%s\t%s\n' "$drmkms_top/$f" "$drmkms_flag" +done
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: mrg Date: Wed Feb 7 06:18:46 UTC 2018 Modified Files: src/sys/external/bsd/drm2/drm: drm_scatter.c Log Message: XXX: add a NULL init to avoid a GCC 6 maybe uninit warning. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_scatter.c 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/drm_scatter.c diff -u src/sys/external/bsd/drm2/drm/drm_scatter.c:1.3 src/sys/external/bsd/drm2/drm/drm_scatter.c:1.4 --- src/sys/external/bsd/drm2/drm/drm_scatter.c:1.3 Wed Jul 16 20:56:25 2014 +++ src/sys/external/bsd/drm2/drm/drm_scatter.c Wed Feb 7 06:18:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_scatter.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $ */ +/* $NetBSD: drm_scatter.c,v 1.4 2018/02/07 06:18:46 mrg Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.4 2018/02/07 06:18:46 mrg Exp $"); #include #include @@ -50,7 +50,7 @@ drm_sg_alloc(struct drm_device *dev, voi struct drm_file *file __unused) { struct drm_scatter_gather *const request = data; - struct drm_sg_mem *sg; + struct drm_sg_mem *sg = NULL; int error; /*
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Tue Dec 5 19:13:53 UTC 2017 Modified Files: src/sys/external/bsd/drm2/drm: drm_drv.c Log Message: drm_stat: fix device minor calculation, ok riastradh@ To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/drm2/drm/drm_drv.c 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/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.19 src/sys/external/bsd/drm2/drm/drm_drv.c:1.20 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.19 Thu Nov 30 20:25:55 2017 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Tue Dec 5 19:13:52 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.19 2017/11/30 20:25:55 christos Exp $ */ +/* $NetBSD: drm_drv.c,v 1.20 2017/12/05 19:13:52 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.19 2017/11/30 20:25:55 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.20 2017/12/05 19:13:52 jmcneill Exp $"); #include #include @@ -586,7 +586,7 @@ drm_stat(struct file *fp, struct stat *s struct drm_file *const file = fp->f_data; struct drm_minor *const dminor = file->minor; const dev_t devno = makedev(cdevsw_lookup_major(&drm_cdevsw), - 64*dminor->index + dminor->type); + 64*dminor->type + dminor->index); (void)memset(st, 0, sizeof(*st));
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: maya Date: Sat Nov 19 17:19:59 UTC 2016 Modified Files: src/sys/external/bsd/drm2/drm: drm_vma_manager.c Log Message: Lock the manager and not just the node for inserting/removing nodes should fix/help PR kern/50349: radeondrmkms vt-switching crash ok riastradh To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_vma_manager.c 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/drm_vma_manager.c diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.4 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.4 Tue Apr 19 02:52:29 2016 +++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c Sat Nov 19 17:19:59 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $ */ +/* $NetBSD: drm_vma_manager.c,v 1.5 2016/11/19 17:19:59 maya Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.5 2016/11/19 17:19:59 maya Exp $"); #include #include @@ -180,10 +180,10 @@ drm_vma_offset_add(struct drm_vma_offset node->von_startpage = startpage; node->von_npages = npages; - rw_enter(&node->von_lock, RW_WRITER); + rw_enter(&mgr->vom_lock, RW_WRITER); collision = rb_tree_insert_node(&mgr->vom_nodes, node); KASSERT(collision == node); - rw_exit(&node->von_lock); + rw_exit(&mgr->vom_lock); return 0; } @@ -196,9 +196,9 @@ drm_vma_offset_remove(struct drm_vma_off if (node->von_npages == 0) return; - rw_enter(&node->von_lock, RW_WRITER); + rw_enter(&mgr->vom_lock, RW_WRITER); rb_tree_remove_node(&mgr->vom_nodes, node); - rw_exit(&node->von_lock); + rw_exit(&mgr->vom_lock); vmem_free(mgr->vom_vmem, node->von_startpage, node->von_npages);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Tue Apr 19 02:52:29 UTC 2016 Modified Files: src/sys/external/bsd/drm2/drm: drm_vma_manager.c Log Message: Make sure rbtrees are empty on desctruction. If related to PR kern/51076, might help catch the bug a bit earlier. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_vma_manager.c 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/drm_vma_manager.c diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.3 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.4 --- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.3 Fri Jun 19 22:51:57 2015 +++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c Tue Apr 19 02:52:29 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vma_manager.c,v 1.3 2015/06/19 22:51:57 chs Exp $ */ +/* $NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.3 2015/06/19 22:51:57 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $"); #include #include @@ -120,6 +120,8 @@ drm_vma_offset_manager_destroy(struct dr { vmem_destroy(mgr->vom_vmem); + KASSERTMSG((RB_TREE_MIN(&mgr->vom_nodes) == NULL), + "drm vma offset manager %p not empty", mgr); #if 0 rb_tree_destroy(&mgr->vom_nodes); #endif @@ -143,6 +145,8 @@ void drm_vma_node_destroy(struct drm_vma_offset_node *node) { + KASSERTMSG((RB_TREE_MIN(&node->von_files) == NULL), + "drm vma node %p not empty", node); #if 0 rb_tree_destroy(&node->von_files); #endif
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Sat Apr 2 22:40:43 UTC 2016 Modified Files: src/sys/external/bsd/drm2/drm: drm_lock.c Log Message: Take a stab at implementing drm_idlelock_take/release. Evidently needed by VIA DRM/UMS. Noted and tested by medfly/coypu. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_lock.c 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/drm_lock.c diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.3 src/sys/external/bsd/drm2/drm/drm_lock.c:1.4 --- src/sys/external/bsd/drm2/drm/drm_lock.c:1.3 Wed Jul 16 20:56:25 2014 +++ src/sys/external/bsd/drm2/drm/drm_lock.c Sat Apr 2 22:40:43 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_lock.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $ */ +/* $NetBSD: drm_lock.c,v 1.4 2016/04/02 22:40:43 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -46,7 +46,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.4 2016/04/02 22:40:43 riastradh Exp $"); #include #include @@ -232,28 +232,47 @@ drm_lock_free(struct drm_lock_data *lock } /* - * Take the lock for the kernel's use. - * - * XXX This is unimplemented because it's not clear that the Linux code - * makes sense at all. Linux's drm_idlelock_take never blocks, but it - * doesn't guarantee that the kernel holds the lock on return! For - * now, I'll hope that the code paths relying on this don't matter yet. + * Try to acquire the lock. Whether or not we acquire it, guarantee + * that whoever next releases it relinquishes it to the kernel, not to + * anyone else. */ void -drm_idlelock_take(struct drm_lock_data *lock_data __unused) +drm_idlelock_take(struct drm_lock_data *lock_data) { - KASSERT(mutex_is_locked(&drm_global_mutex)); - panic("drm_idlelock_take is not yet implemented"); /* XXX */ + + spin_lock(&lock_data->spinlock); + KASSERT(!lock_data->idle_has_lock); + KASSERT(lock_data->kernel_waiters < UINT32_MAX); + lock_data->kernel_waiters++; + /* Try to acquire the lock. */ + if (drm_lock_acquire(lock_data, DRM_KERNEL_CONTEXT)) { + lock_data->idle_has_lock = 1; + } else { + /* + * Recording that there are kernel waiters will prevent + * userland from acquiring the lock again when it is + * next released. + */ + } + spin_unlock(&lock_data->spinlock); } /* - * Release the lock from the kernel. + * Release whatever drm_idlelock_take managed to acquire. */ void -drm_idlelock_release(struct drm_lock_data *lock_data __unused) +drm_idlelock_release(struct drm_lock_data *lock_data) { - KASSERT(mutex_is_locked(&drm_global_mutex)); - panic("drm_idlelock_release is not yet implemented"); /* XXX */ + + spin_lock(&lock_data->spinlock); + KASSERT(0 < lock_data->kernel_waiters); + if (--lock_data->kernel_waiters == 0) { + if (lock_data->idle_has_lock) { + /* We did acquire it. Release it. */ + drm_lock_release(lock_data, DRM_KERNEL_CONTEXT); + } + } + spin_unlock(&lock_data->spinlock); } /*
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: mlelstv Date: Sun Mar 6 10:59:56 UTC 2016 Modified Files: src/sys/external/bsd/drm2/drm: drm_memory.c Log Message: Non-x86 doesn't have AGP. This should really be handled by config logic. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/drm/drm_memory.c 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/drm_memory.c diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.9 src/sys/external/bsd/drm2/drm/drm_memory.c:1.10 --- src/sys/external/bsd/drm2/drm/drm_memory.c:1.9 Sat Mar 5 06:48:31 2016 +++ src/sys/external/bsd/drm2/drm/drm_memory.c Sun Mar 6 10:59:56 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_memory.c,v 1.9 2016/03/05 06:48:31 mlelstv Exp $ */ +/* $NetBSD: drm_memory.c,v 1.10 2016/03/06 10:59:56 mlelstv Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,27 +30,33 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.9 2016/03/05 06:48:31 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.10 2016/03/06 10:59:56 mlelstv Exp $"); #if defined(__i386__) || defined(__x86_64__) -#define HAS_AGP_I810 1 + +# ifdef _KERNEL_OPT +# include "agp.h" +# if NAGP > 0 +# include "agp_i810.h" +# else +# define NAGP_I810 0 +# endif +# include "genfb.h" +# else +# define NAGP_I810 1 +# define NGENFB 0 +# endif + #else -#define HAS_AGP_I810 0 -#endif -#ifdef _KERNEL_OPT -# include "agp.h" -# if NAGP == 0 +# ifdef _KERNEL_OPT # define NAGP_I810 0 -# elif HAS_AGP_I810 > 0 -# include "agp_i810.h" +# include "genfb.h" # else # define NAGP_I810 0 +# define NGENFB 0 # endif -# include "genfb.h" -#else -# define NAGP_I810 HAS_AGP_I810 /* XXX WTF? */ -# define NGENFB 0 /* XXX WTF? */ + #endif #include
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: mlelstv Date: Sat Mar 5 06:48:31 UTC 2016 Modified Files: src/sys/external/bsd/drm2/drm: drm_memory.c Log Message: Make agp_i810 also depend on agp so that a 'no agp' build is possible. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/drm/drm_memory.c 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/drm_memory.c diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.8 src/sys/external/bsd/drm2/drm/drm_memory.c:1.9 --- src/sys/external/bsd/drm2/drm/drm_memory.c:1.8 Sat Oct 17 15:13:39 2015 +++ src/sys/external/bsd/drm2/drm/drm_memory.c Sat Mar 5 06:48:31 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_memory.c,v 1.8 2015/10/17 15:13:39 jmcneill Exp $ */ +/* $NetBSD: drm_memory.c,v 1.9 2016/03/05 06:48:31 mlelstv Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.8 2015/10/17 15:13:39 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.9 2016/03/05 06:48:31 mlelstv Exp $"); #if defined(__i386__) || defined(__x86_64__) #define HAS_AGP_I810 1 @@ -39,7 +39,10 @@ __KERNEL_RCSID(0, "$NetBSD: drm_memory.c #endif #ifdef _KERNEL_OPT -# if HAS_AGP_I810 > 0 +# include "agp.h" +# if NAGP == 0 +# define NAGP_I810 0 +# elif HAS_AGP_I810 > 0 # include "agp_i810.h" # else # define NAGP_I810 0
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Mon Nov 9 23:11:18 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drmfb.c Log Message: If the "is_console" property is already specified, do not overwrite it. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drmfb.c 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/drmfb.c diff -u src/sys/external/bsd/drm2/drm/drmfb.c:1.1 src/sys/external/bsd/drm2/drm/drmfb.c:1.2 --- src/sys/external/bsd/drm2/drm/drmfb.c:1.1 Thu Mar 5 17:50:41 2015 +++ src/sys/external/bsd/drm2/drm/drmfb.c Mon Nov 9 23:11:18 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drmfb.c,v 1.1 2015/03/05 17:50:41 riastradh Exp $ */ +/* $NetBSD: drmfb.c,v 1.2 2015/11/09 23:11:18 jmcneill Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -39,7 +39,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.1 2015/03/05 17:50:41 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.2 2015/11/09 23:11:18 jmcneill Exp $"); #ifdef _KERNEL_OPT #include "vga.h" @@ -91,6 +91,7 @@ drmfb_attach(struct drmfb_softc *sc, con static const struct genfb_ops zero_genfb_ops; struct genfb_ops genfb_ops = zero_genfb_ops; enum { CONS_VGA, CONS_GENFB, CONS_NONE } what_was_cons; + bool is_console; int error; /* genfb requires this. */ @@ -113,23 +114,27 @@ drmfb_attach(struct drmfb_softc *sc, con prop_dictionary_set_uint64(dict, "mode_callback", (uint64_t)(uintptr_t)&drmfb_genfb_mode_callback); - /* XXX Whattakludge! */ + if (!prop_dictionary_get_bool(dict, "is_console", &is_console)) { + /* XXX Whattakludge! */ #if NVGA > 0 - if ((da->da_params->dp_is_vga_console != NULL) && - (*da->da_params->dp_is_vga_console)(dev)) { - what_was_cons = CONS_VGA; - prop_dictionary_set_bool(dict, "is_console", true); - vga_cndetach(); - if (da->da_params->dp_disable_vga) - (*da->da_params->dp_disable_vga)(dev); - } else + if ((da->da_params->dp_is_vga_console != NULL) && + (*da->da_params->dp_is_vga_console)(dev)) { + what_was_cons = CONS_VGA; + prop_dictionary_set_bool(dict, "is_console", true); + vga_cndetach(); + if (da->da_params->dp_disable_vga) +(*da->da_params->dp_disable_vga)(dev); + } else #endif - if (genfb_is_console() && genfb_is_enabled()) { - what_was_cons = CONS_GENFB; - prop_dictionary_set_bool(dict, "is_console", true); + if (genfb_is_console() && genfb_is_enabled()) { + what_was_cons = CONS_GENFB; + prop_dictionary_set_bool(dict, "is_console", true); + } else { + what_was_cons = CONS_NONE; + prop_dictionary_set_bool(dict, "is_console", false); + } } else { what_was_cons = CONS_NONE; - prop_dictionary_set_bool(dict, "is_console", false); } sc->sc_genfb.sc_dev = sc->sc_da.da_dev;
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Mon Nov 9 22:04:53 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_drv.c Log Message: only clear agp hook on last close when agp is in use, from riastradh@ To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/drm2/drm/drm_drv.c 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/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.16 src/sys/external/bsd/drm2/drm/drm_drv.c:1.17 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.16 Sat Oct 17 16:19:38 2015 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Mon Nov 9 22:04:53 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.16 2015/10/17 16:19:38 jmcneill Exp $ */ +/* $NetBSD: drm_drv.c,v 1.17 2015/11/09 22:04:53 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.16 2015/10/17 16:19:38 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.17 2015/11/09 22:04:53 jmcneill Exp $"); #include #include @@ -394,7 +394,8 @@ drm_lastclose(struct drm_device *dev) drm_irq_uninstall(dev); mutex_lock(&dev->struct_mutex); - drm_agp_clear_hook(dev); + if (dev->agp) + drm_agp_clear_hook(dev); drm_legacy_sg_cleanup(dev); list_for_each_entry_safe(vma, vma_temp, &dev->vmalist, head) { list_del(&vma->head);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Sat Oct 17 21:11:56 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: skip clflush on arm To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.7 src/sys/external/bsd/drm2/drm/drm_cache.c:1.8 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.7 Sat Oct 17 15:13:19 2015 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Sat Oct 17 21:11:56 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.7 2015/10/17 15:13:19 jmcneill Exp $ */ +/* $NetBSD: drm_cache.c,v 1.8 2015/10/17 21:11:56 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,8 +30,9 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.7 2015/10/17 15:13:19 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.8 2015/10/17 21:11:56 jmcneill Exp $"); +#include #include #include @@ -41,27 +42,34 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cache.c, #include +#if !defined(__arm__) +#define DRM_CLFLUSH 1 +#endif + +#if defined(DRM_CLFLUSH) static bool drm_md_clflush_finegrained_p(void); static void drm_md_clflush_all(void); static void drm_md_clflush_page(struct page *); static void drm_md_clflush_virt_range(const void *, size_t); +#endif void drm_clflush_pages(struct page **pages, unsigned long npages) { - +#if defined(DRM_CLFLUSH) if (drm_md_clflush_finegrained_p()) { while (npages--) drm_md_clflush_page(pages[npages]); } else { drm_md_clflush_all(); } +#endif } void drm_clflush_pglist(struct pglist *list) { - +#if defined(DRM_CLFLUSH) if (drm_md_clflush_finegrained_p()) { struct vm_page *page; @@ -71,26 +79,29 @@ drm_clflush_pglist(struct pglist *list) } else { drm_md_clflush_all(); } +#endif } void drm_clflush_page(struct page *page) { - +#if defined(DRM_CLFLUSH) if (drm_md_clflush_finegrained_p()) drm_md_clflush_page(page); else drm_md_clflush_all(); +#endif } void drm_clflush_virt_range(const void *vaddr, size_t nbytes) { - +#if defined(DRM_CLFLUSH) if (drm_md_clflush_finegrained_p()) drm_md_clflush_virt_range(vaddr, nbytes); else drm_md_clflush_all(); +#endif } #if defined(__i386__) || defined(__x86_64__)
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Sat Oct 17 16:19:38 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_drv.c Log Message: fix __OS_HAS_AGP=0 build To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/drm/drm_drv.c 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/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.15 src/sys/external/bsd/drm2/drm/drm_drv.c:1.16 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.15 Sun Mar 8 23:37:56 2015 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Sat Oct 17 16:19:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.15 2015/03/08 23:37:56 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.16 2015/10/17 16:19:38 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.15 2015/03/08 23:37:56 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.16 2015/10/17 16:19:38 jmcneill Exp $"); #include #include @@ -87,6 +87,7 @@ static drm_ioctl_t drm_version; .cmd_drv = 0, \ } +#if __OS_HAS_AGP /* XXX Kludge for AGP. */ static drm_ioctl_t drm_agp_acquire_hook_ioctl; static drm_ioctl_t drm_agp_release_hook_ioctl; @@ -105,6 +106,7 @@ static drm_ioctl_t drm_agp_unbind_hook_i #define drm_agp_free_ioctl drm_agp_free_hook_ioctl #define drm_agp_bind_ioctl drm_agp_bind_hook_ioctl #define drm_agp_unbind_ioctl drm_agp_unbind_hook_ioctl +#endif /* Table copied verbatim from dist/drm/drm_drv.c. */ static const struct drm_ioctl_desc drm_ioctls[] = { @@ -805,6 +807,8 @@ drm_agp_clear_hook(struct drm_device *de (*hooks->agph_clear)(dev); } +#if __OS_HAS_AGP + #define DEFINE_AGP_HOOK_IOCTL(NAME, HOOK) \ static int \ NAME(struct drm_device *dev, void *data, struct drm_file *file) \ @@ -825,3 +829,5 @@ DEFINE_AGP_HOOK_IOCTL(drm_agp_alloc_hook DEFINE_AGP_HOOK_IOCTL(drm_agp_free_hook_ioctl, agph_free_ioctl) DEFINE_AGP_HOOK_IOCTL(drm_agp_bind_hook_ioctl, agph_bind_ioctl) DEFINE_AGP_HOOK_IOCTL(drm_agp_unbind_hook_ioctl, agph_unbind_ioctl) + +#endif
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Sat Oct 17 15:13:39 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_memory.c Log Message: build on platforms without agp_i810 To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_memory.c 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/drm_memory.c diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.7 src/sys/external/bsd/drm2/drm/drm_memory.c:1.8 --- src/sys/external/bsd/drm2/drm/drm_memory.c:1.7 Wed Apr 29 04:38:55 2015 +++ src/sys/external/bsd/drm2/drm/drm_memory.c Sat Oct 17 15:13:39 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_memory.c,v 1.7 2015/04/29 04:38:55 riastradh Exp $ */ +/* $NetBSD: drm_memory.c,v 1.8 2015/10/17 15:13:39 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,14 +30,24 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.7 2015/04/29 04:38:55 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.8 2015/10/17 15:13:39 jmcneill Exp $"); + +#if defined(__i386__) || defined(__x86_64__) +#define HAS_AGP_I810 1 +#else +#define HAS_AGP_I810 0 +#endif #ifdef _KERNEL_OPT -#include "agp_i810.h" -#include "genfb.h" +# if HAS_AGP_I810 > 0 +# include "agp_i810.h" +# else +# define NAGP_I810 0 +# endif +# include "genfb.h" #else -#define NAGP_I810 1 /* XXX WTF? */ -#define NGENFB 0 /* XXX WTF? */ +# define NAGP_I810 HAS_AGP_I810 /* XXX WTF? */ +# define NGENFB 0 /* XXX WTF? */ #endif #include
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: jmcneill Date: Sat Oct 17 15:13:19 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: machine/cpufunc.h is MD, move it to i386/amd64 block To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.6 src/sys/external/bsd/drm2/drm/drm_cache.c:1.7 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.6 Fri Mar 6 12:24:36 2015 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Sat Oct 17 15:13:19 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.6 2015/03/06 12:24:36 riastradh Exp $ */ +/* $NetBSD: drm_cache.c,v 1.7 2015/10/17 15:13:19 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,15 +30,13 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.6 2015/03/06 12:24:36 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.7 2015/10/17 15:13:19 jmcneill Exp $"); #include #include #include -#include - #include #include @@ -97,6 +95,8 @@ drm_clflush_virt_range(const void *vaddr #if defined(__i386__) || defined(__x86_64__) +#include + static bool drm_md_clflush_finegrained_p(void) {
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Thu Jul 30 04:36:48 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_sysctl.c Log Message: Add $NetBSD$ tag. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_sysctl.c 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/drm_sysctl.c diff -u src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.5 src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.6 --- src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.5 Wed Feb 25 14:00:52 2015 +++ src/sys/external/bsd/drm2/drm/drm_sysctl.c Thu Jul 30 04:36:48 2015 @@ -1,3 +1,5 @@ +/* $NetBSD: drm_sysctl.c,v 1.6 2015/07/30 04:36:48 riastradh Exp $ */ + /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. * All rights reserved. @@ -27,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_sysctl.c,v 1.5 2015/02/25 14:00:52 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_sysctl.c,v 1.6 2015/07/30 04:36:48 riastradh Exp $"); #include #include
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: chs Date: Fri Jun 19 22:51:57 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_vma_manager.c Log Message: plug memory leak in drm_vma_node_revoke(). To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_vma_manager.c 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/drm_vma_manager.c diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.2 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.3 --- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.2 Mon Mar 2 17:34:23 2015 +++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c Fri Jun 19 22:51:57 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vma_manager.c,v 1.2 2015/03/02 17:34:23 riastradh Exp $ */ +/* $NetBSD: drm_vma_manager.c,v 1.3 2015/06/19 22:51:57 chs Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.2 2015/03/02 17:34:23 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.3 2015/06/19 22:51:57 chs Exp $"); #include #include @@ -289,6 +289,8 @@ drm_vma_node_revoke(struct drm_vma_offse if (found != NULL) rb_tree_remove_node(&node->von_files, found); rw_exit(&node->von_lock); + if (found != NULL) + kmem_free(found, sizeof(*found)); } bool
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Mar 9 01:29:40 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_gem_vm.c Log Message: Apply access control to gem mmap. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_gem_vm.c 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/drm_gem_vm.c diff -u src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.5 src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.6 --- src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.5 Sat Jul 26 21:15:45 2014 +++ src/sys/external/bsd/drm2/drm/drm_gem_vm.c Mon Mar 9 01:29:40 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_gem_vm.c,v 1.5 2014/07/26 21:15:45 riastradh Exp $ */ +/* $NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.5 2014/07/26 21:15:45 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $"); #include @@ -95,7 +95,7 @@ drm_gem_mmap_object(struct drm_device *d static int drm_gem_mmap_object_locked(struct drm_device *dev, off_t byte_offset, size_t nbytes, int prot __unused, struct uvm_object **uobjp, -voff_t *uoffsetp, struct file *file __unused) +voff_t *uoffsetp, struct file *file) { const unsigned long startpage = (byte_offset >> PAGE_SHIFT); const unsigned long npages = (nbytes >> PAGE_SHIFT); @@ -118,6 +118,9 @@ drm_gem_mmap_object_locked(struct drm_de return 0; } + if (!drm_vma_node_is_allowed(node, file)) + return -EACCES; + struct drm_gem_object *const obj = container_of(node, struct drm_gem_object, vma_node); KASSERT(obj->dev == dev);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Sun Mar 8 23:37:56 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_drv.c Log Message: Don't return events that are too large and leave them in the list. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/drm/drm_drv.c 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/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.14 src/sys/external/bsd/drm2/drm/drm_drv.c:1.15 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.14 Fri Mar 6 14:02:39 2015 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Sun Mar 8 23:37:56 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.14 2015/03/06 14:02:39 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.15 2015/03/08 23:37:56 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.14 2015/03/06 14:02:39 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.15 2015/03/08 23:37:56 riastradh Exp $"); #include #include @@ -469,6 +469,8 @@ drm_dequeue_event(struct drm_file *file, event = list_first_entry(&file->event_list, struct drm_pending_event, link); if (event->event->length > max_length) { + /* Event is too large, can't return it. */ + event = NULL; ret = 0; goto out; }
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Fri Mar 6 14:02:39 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_drv.c Log Message: Synchronize permission checks with upstream drm_ioctl_permit. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/drm/drm_drv.c 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/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.13 src/sys/external/bsd/drm2/drm/drm_drv.c:1.14 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.13 Thu Jan 1 01:15:42 2015 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Fri Mar 6 14:02:39 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.13 2015/01/01 01:15:42 mrg Exp $ */ +/* $NetBSD: drm_drv.c,v 1.14 2015/03/06 14:02:39 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.13 2015/01/01 01:15:42 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.14 2015/03/06 14:02:39 riastradh Exp $"); #include #include @@ -642,19 +642,28 @@ drm_ioctl(struct file *fp, unsigned long if ((ioctl == NULL) || (ioctl->func == NULL)) return EINVAL; + /* XXX Synchronize with drm_ioctl_permit in upstream drm_drv.c. */ if (ISSET(ioctl->flags, DRM_ROOT_ONLY) && !DRM_SUSER()) return EACCES; - if (ISSET(ioctl->flags, DRM_AUTH) && !file->authenticated) + if (ISSET(ioctl->flags, DRM_AUTH) && + (file->minor->type != DRM_MINOR_RENDER) && + !file->authenticated) return EACCES; - if (ISSET(ioctl->flags, DRM_MASTER) && (file->master == NULL)) + if (ISSET(ioctl->flags, DRM_MASTER) && + (file->master == NULL) && + (file->minor->type != DRM_MINOR_CONTROL)) return EACCES; if (!ISSET(ioctl->flags, DRM_CONTROL_ALLOW) && (file->minor->type == DRM_MINOR_CONTROL)) return EACCES; + if (!ISSET(ioctl->flags, DRM_RENDER_ALLOW) && + (file->minor->type == DRM_MINOR_RENDER)) + return EACCES; + if (!ISSET(ioctl->flags, DRM_UNLOCKED)) mutex_lock(&drm_global_mutex);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Fri Mar 6 12:24:36 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: Remove local definition of wbinvd. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.5 src/sys/external/bsd/drm2/drm/drm_cache.c:1.6 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.5 Fri Mar 6 12:06:35 2015 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Fri Mar 6 12:24:36 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.5 2015/03/06 12:06:35 riastradh Exp $ */ +/* $NetBSD: drm_cache.c,v 1.6 2015/03/06 12:24:36 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.5 2015/03/06 12:06:35 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.6 2015/03/06 12:24:36 riastradh Exp $"); #include #include @@ -104,12 +104,6 @@ drm_md_clflush_finegrained_p(void) } static void -drm_x86_clflush_cpu(void) -{ - asm volatile ("wbinvd"); -} - -static void drm_x86_clflush(const void *vaddr) { asm volatile ("clflush %0" : : "m" (*(const char *)vaddr)); @@ -125,7 +119,7 @@ drm_x86_clflush_size(void) static void drm_x86_clflush_xc(void *arg0 __unused, void *arg1 __unused) { - drm_x86_clflush_cpu(); + wbinvd(); } static void
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Fri Mar 6 12:06:35 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: Use x86_mfence explicitly, not membar_sync, just to be clear. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.4 src/sys/external/bsd/drm2/drm/drm_cache.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.4 Wed Mar 4 18:19:27 2015 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Fri Mar 6 12:06:35 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.4 2015/03/04 18:19:27 riastradh Exp $ */ +/* $NetBSD: drm_cache.c,v 1.5 2015/03/06 12:06:35 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.4 2015/03/04 18:19:27 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.5 2015/03/06 12:06:35 riastradh Exp $"); #include #include @@ -154,11 +154,12 @@ drm_md_clflush_virt_range(const void *va clflush_size); const char *p; + /* Support for CLFLUSH implies support for MFENCE. */ KASSERT(drm_md_clflush_finegrained_p()); - membar_sync(); + x86_mfence(); for (p = start; p < end; p += clflush_size) drm_x86_clflush(p); - membar_sync(); + x86_mfence(); } #endif /* defined(__i386__) || defined(__x86_64__) */
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Wed Mar 4 18:19:27 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_cache.c Log Message: CLFLUSH needs to be surrounded by membars. While here, round everything to a multiple of the cache line size. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_cache.c 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/drm_cache.c diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.3 src/sys/external/bsd/drm2/drm/drm_cache.c:1.4 --- src/sys/external/bsd/drm2/drm/drm_cache.c:1.3 Wed Jul 16 20:56:25 2014 +++ src/sys/external/bsd/drm2/drm/drm_cache.c Wed Mar 4 18:19:27 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $ */ +/* $NetBSD: drm_cache.c,v 1.4 2015/03/04 18:19:27 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.4 2015/03/04 18:19:27 riastradh Exp $"); #include #include @@ -146,15 +146,19 @@ drm_md_clflush_page(struct page *page) static void drm_md_clflush_virt_range(const void *vaddr, size_t nbytes) - { - const char *const start = vaddr, *const end = (start + nbytes); + const unsigned clflush_size = drm_x86_clflush_size(); + const vaddr_t va = (vaddr_t)vaddr; + const char *const start = (const void *)rounddown(va, clflush_size); + const char *const end = (const void *)roundup(va + nbytes, + clflush_size); const char *p; - const unsigned int clflush_size = drm_x86_clflush_size(); KASSERT(drm_md_clflush_finegrained_p()); + membar_sync(); for (p = start; p < end; p += clflush_size) drm_x86_clflush(p); + membar_sync(); } #endif /* defined(__i386__) || defined(__x86_64__) */
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Mar 2 17:34:23 UTC 2015 Modified Files: src/sys/external/bsd/drm2/drm: drm_vma_manager.c Log Message: Don't sleep in the drm_vma allocator. Fail with ENOSPC, not ENOMEM. Caller has dev->struct_mutex locked and will handle ENOSPC anyway. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drm_vma_manager.c 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/drm_vma_manager.c diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.1 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.2 --- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.1 Wed Jul 16 20:56:25 2014 +++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c Mon Mar 2 17:34:23 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vma_manager.c,v 1.1 2014/07/16 20:56:25 riastradh Exp $ */ +/* $NetBSD: drm_vma_manager.c,v 1.2 2015/03/02 17:34:23 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.1 2014/07/16 20:56:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.2 2015/03/02 17:34:23 riastradh Exp $"); #include #include @@ -164,11 +164,14 @@ drm_vma_offset_add(struct drm_vma_offset if (0 < node->von_npages) return 0; - error = vmem_alloc(mgr->vom_vmem, npages, VM_SLEEP|VM_BESTFIT, + error = vmem_alloc(mgr->vom_vmem, npages, VM_NOSLEEP|VM_BESTFIT, &startpage); - if (error) + if (error) { + if (error == ENOMEM) + error = ENOSPC; /* XXX errno NetBSD->Linux */ return -error; + } node->von_startpage = startpage; node->von_npages = npages;
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: mrg Date: Wed Dec 31 08:55:18 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_vm.c Log Message: fix a confusion between dev_t and devmajor_t, and include the primary minor when calling makedev(). To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_vm.c 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/drm_vm.c diff -u src/sys/external/bsd/drm2/drm/drm_vm.c:1.6 src/sys/external/bsd/drm2/drm/drm_vm.c:1.7 --- src/sys/external/bsd/drm2/drm/drm_vm.c:1.6 Sun Dec 14 23:48:58 2014 +++ src/sys/external/bsd/drm2/drm/drm_vm.c Wed Dec 31 08:55:18 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vm.c,v 1.6 2014/12/14 23:48:58 chs Exp $ */ +/* $NetBSD: drm_vm.c,v 1.7 2014/12/31 08:55:18 mrg Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.6 2014/12/14 23:48:58 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.7 2014/12/31 08:55:18 mrg Exp $"); #include #include @@ -49,7 +49,8 @@ int drm_mmap_object(struct drm_device *dev, off_t offset, size_t size, int prot, struct uvm_object **uobjp, voff_t *uoffsetp, struct file *file __unused) { - dev_t devno = cdevsw_lookup_major(&drm_cdevsw); + devmajor_t maj = cdevsw_lookup_major(&drm_cdevsw); + dev_t devno = makedev(maj, dev->primary->index); struct uvm_object *uobj; KASSERT(offset == (offset & ~(PAGE_SIZE-1)));
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: prlw1 Date: Mon Nov 24 17:29:03 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_sysctl.c Log Message: Trivial build fix for no options SYSCTL_INCLUDE_DESCR case, to avoid -Werror. OK christos@ and riastradh@ To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_sysctl.c 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/drm_sysctl.c diff -u src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.3 src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.4 --- src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.3 Wed Nov 12 04:53:13 2014 +++ src/sys/external/bsd/drm2/drm/drm_sysctl.c Mon Nov 24 17:29:02 2014 @@ -27,7 +27,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_sysctl.c,v 1.3 2014/11/12 04:53:13 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_sysctl.c,v 1.4 2014/11/24 17:29:02 prlw1 Exp $"); #include #include @@ -40,6 +40,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_sysctl.c #include +#ifdef SYSCTL_INCLUDE_DESCR static const char * drm_sysctl_get_description(const struct linux_module_param_info *p, const struct drm_sysctl_def *def) @@ -53,6 +54,7 @@ drm_sysctl_get_description(const struct } return NULL; } +#endif #ifdef notyet static uint64_t
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Sun Sep 14 20:08:21 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_module.c Log Message: Fix module build of drmkms. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_module.c 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/drm_module.c diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.7 src/sys/external/bsd/drm2/drm/drm_module.c:1.8 --- src/sys/external/bsd/drm2/drm/drm_module.c:1.7 Thu Jul 17 13:47:19 2014 +++ src/sys/external/bsd/drm2/drm/drm_module.c Sun Sep 14 20:08:21 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $ */ +/* $NetBSD: drm_module.c,v 1.8 2014/09/14 20:08:21 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,9 +30,10 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.8 2014/09/14 20:08:21 riastradh Exp $"); #include +#include #include #include #ifndef _MODULE @@ -50,10 +51,6 @@ __KERNEL_RCSID(0, "$NetBSD: drm_module.c */ MODULE(MODULE_CLASS_DRIVER, drmkms, "iic,drmkms_linux"); -#ifdef _MODULE -#include "ioconf.c" -#endif - struct mutex drm_global_mutex; static int
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Thu Jul 17 13:47:19 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_module.c Log Message: Initialize the drm_global stuff. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_module.c 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/drm_module.c diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.6 src/sys/external/bsd/drm2/drm/drm_module.c:1.7 --- src/sys/external/bsd/drm2/drm/drm_module.c:1.6 Wed Jul 16 20:56:25 2014 +++ src/sys/external/bsd/drm2/drm/drm_module.c Thu Jul 17 13:47:19 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_module.c,v 1.6 2014/07/16 20:56:25 riastradh Exp $ */ +/* $NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.6 2014/07/16 20:56:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $"); #include #include @@ -73,6 +73,7 @@ drm_init(void) idr_init(&drm_minors_idr); linux_mutex_init(&drm_global_mutex); drm_connector_ida_init(); + drm_global_init(); return 0; } @@ -94,6 +95,7 @@ static void drm_fini(void) { + drm_global_release(); drm_connector_ida_destroy(); linux_mutex_destroy(&drm_global_mutex); idr_destroy(&drm_minors_idr);
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Mon Jul 7 20:21:31 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_drv.c Log Message: Hook up drm suspend/resume. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_drv.c 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/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.5 src/sys/external/bsd/drm2/drm/drm_drv.c:1.6 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.5 Fri Jun 13 00:47:08 2014 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Mon Jul 7 20:21:31 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.5 2014/06/13 00:47:08 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.6 2014/07/07 20:21:31 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.5 2014/06/13 00:47:08 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.6 2014/07/07 20:21:31 riastradh Exp $"); #include #include @@ -44,6 +44,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v /* XXX Mega-kludge because modules are broken. */ #include #endif +#include #include #ifndef _MODULE #include /* XXX drm_init kludge */ @@ -54,6 +55,8 @@ __KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v #include +#include + #include #include "ioconf.h" @@ -97,6 +100,9 @@ static int drm_init(void); static ONCE_DECL(drm_init_once); #endif +static bool drm_suspend(device_t, const pmf_qual_t *); +static bool drm_resume(device_t, const pmf_qual_t *); + static void drm_undo_fill_in_dev(struct drm_device *); static struct drm_softc *drm_dev_softc(dev_t); @@ -386,10 +392,22 @@ drm_attach(device_t parent, device_t sel } } + if (!pmf_device_register(parent, NULL, NULL)) { + aprint_error_dev(parent, "unable to establish power handler"); + goto fail2; + } + if (!pmf_device_register(self, &drm_suspend, &drm_resume)) { + aprint_error_dev(self, "unable to establish power handler"); + goto fail3; + } + /* Success! */ sc->sc_initialized = true; return; +fail4: __unused + pmf_device_deregister(self); +fail3: pmf_device_deregister(parent); fail2: if (dev->driver->unload != NULL) (*dev->driver->unload)(dev); fail1: drm_undo_fill_in_dev(dev); @@ -411,6 +429,9 @@ drm_detach(device_t self, int flags) if (sc->sc_opencount != 0) return EBUSY; + pmf_device_deregister(self); + pmf_device_deregister(device_parent(self)); + /* XXX The placement of this is pretty random... */ if (dev->driver->unload != NULL) (*dev->driver->unload)(dev); @@ -509,6 +530,35 @@ drm_undo_fill_in_dev(struct drm_device * spin_lock_destroy(&dev->count_lock); } +static bool +drm_suspend(device_t self, const pmf_qual_t *qual) +{ + struct drm_softc *const sc = device_private(self); + struct drm_device *const dev = sc->sc_drm_dev; + int error; + + error = (*dev->driver->suspend)(dev, + (pm_message_t) { .event = PM_EVENT_SUSPEND }); + if (error) + return false; + + return true; +} + +static bool +drm_resume(device_t self, const pmf_qual_t *qual) +{ + struct drm_softc *const sc = device_private(self); + struct drm_device *const dev = sc->sc_drm_dev; + int error; + + error = (*dev->driver->resume)(dev); + if (error) + return false; + + return true; +} + static struct drm_softc * drm_dev_softc(dev_t d) {
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Tue Jul 1 16:29:57 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_memory.c Log Message: Honour write-combining flag in drm_ioremap. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_memory.c 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/drm_memory.c diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.4 src/sys/external/bsd/drm2/drm/drm_memory.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_memory.c:1.4 Thu Jun 12 15:05:29 2014 +++ src/sys/external/bsd/drm2/drm/drm_memory.c Tue Jul 1 16:29:57 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_memory.c,v 1.4 2014/06/12 15:05:29 riastradh Exp $ */ +/* $NetBSD: drm_memory.c,v 1.5 2014/07/01 16:29:57 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.4 2014/06/12 15:05:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.5 2014/07/01 16:29:57 riastradh Exp $"); #ifdef _KERNEL_OPT #include "agp_i810.h" @@ -85,6 +85,7 @@ drm_ioremap(struct drm_device *dev, stru */ for (unit = 0; unit < dev->bus_nmaps; unit++) { struct drm_bus_map *const bm = &dev->bus_maps[unit]; + int flags = bm->bm_flags; /* Reject maps starting after the request. */ if (map->offset < bm->bm_base) @@ -100,12 +101,16 @@ drm_ioremap(struct drm_device *dev, stru continue; /* Ensure we can map the space into virtual memory. */ - if (!ISSET(bm->bm_flags, BUS_SPACE_MAP_LINEAR)) + if (!ISSET(flags, BUS_SPACE_MAP_LINEAR)) continue; + /* Reflect requested flags in the bus_space map. */ + if (ISSET(map->flags, _DRM_WRITE_COMBINING)) + flags |= BUS_SPACE_MAP_PREFETCHABLE; + /* Map it. */ - if (bus_space_map(bst, map->offset, map->size, - bm->bm_flags, &map->lm_data.bus_space.bsh)) + if (bus_space_map(bst, map->offset, map->size, flags, + &map->lm_data.bus_space.bsh)) break; map->lm_data.bus_space.bus_map = bm;
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Fri Jun 13 00:47:08 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_drv.c Log Message: Destroy, don't leak, events when done with them. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_drv.c 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/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.4 src/sys/external/bsd/drm2/drm/drm_drv.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.4 Thu May 1 15:19:16 2014 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Fri Jun 13 00:47:08 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.4 2014/05/01 15:19:16 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.5 2014/06/13 00:47:08 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.4 2014/05/01 15:19:16 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.5 2014/06/13 00:47:08 riastradh Exp $"); #include #include @@ -638,6 +638,7 @@ drm_read(struct file *fp, off_t *off, st error = uiomove(event->event, event->event->length, uio); if (error) /* XXX Requeue the event? */ break; + (*event->destroy)(event); } /* Success! */
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Wed May 14 04:38:49 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_memory.c Log Message: Fix error branch in drm_limit_dma_space. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_memory.c 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/drm_memory.c diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.2 src/sys/external/bsd/drm2/drm/drm_memory.c:1.3 --- src/sys/external/bsd/drm2/drm/drm_memory.c:1.2 Tue Mar 18 18:20:42 2014 +++ src/sys/external/bsd/drm2/drm/drm_memory.c Wed May 14 04:38:49 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_memory.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $ */ +/* $NetBSD: drm_memory.c,v 1.3 2014/05/14 04:38:49 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.3 2014/05/14 04:38:49 riastradh Exp $"); #ifdef _KERNEL_OPT #include "agp_i810.h" @@ -253,7 +253,7 @@ int drm_limit_dma_space(struct drm_device *dev, resource_size_t min_addr, resource_size_t max_addr) { - int error; + int ret; KASSERT(min_addr <= max_addr); @@ -274,11 +274,13 @@ drm_limit_dma_space(struct drm_device *d * the caller should try to allocate DMA-safe memory on failure * anyway, but...paranoia). */ - error = bus_dmatag_subregion(dev->bus_dmat, min_addr, max_addr, + /* XXX errno NetBSD->Linux */ + ret = -bus_dmatag_subregion(dev->bus_dmat, min_addr, max_addr, &dev->dmat, BUS_DMA_WAITOK); - if (error) { + if (ret) { dev->dmat = dev->bus_dmat; - return error; + dev->dmat_subregion_p = false; + return ret; } /*
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Fri Apr 4 15:16:59 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_drv.c drm_module.c Log Message: Figure drm_debug into the drm_init module kludgerosity. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_drv.c cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_module.c 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/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.2 src/sys/external/bsd/drm2/drm/drm_drv.c:1.3 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.2 Tue Mar 18 18:20:42 2014 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Fri Apr 4 15:16:59 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.3 2014/04/04 15:16:59 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.3 2014/04/04 15:16:59 riastradh Exp $"); #include #include @@ -45,6 +45,9 @@ __KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v #include #endif #include +#ifndef _MODULE +#include /* XXX drm_init kludge */ +#endif #include #include @@ -455,6 +458,9 @@ drm_init(void) linux_suppress_init = 1; linux_mutex_init(&drm_global_mutex); + if (ISSET(boothowto, AB_DEBUG)) + drm_debug = ~(unsigned int)0; + return 0; fail1: linux_kmap_fini(); Index: src/sys/external/bsd/drm2/drm/drm_module.c diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.4 src/sys/external/bsd/drm2/drm/drm_module.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_module.c:1.4 Thu Apr 3 15:16:18 2014 +++ src/sys/external/bsd/drm2/drm/drm_module.c Fri Apr 4 15:16:59 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_module.c,v 1.4 2014/04/03 15:16:18 riastradh Exp $ */ +/* $NetBSD: drm_module.c,v 1.5 2014/04/04 15:16:59 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.4 2014/04/03 15:16:18 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.5 2014/04/04 15:16:59 riastradh Exp $"); #include #include @@ -49,10 +49,12 @@ MODULE(MODULE_CLASS_DRIVER, drmkms, "iic #include "ioconf.c" #endif -#ifndef _MODULE /* * XXX Mega-kludge. See drm_init in drm_drv.c for details. */ +#ifdef _MODULE +static const int linux_suppress_init = 1; +#else extern int linux_suppress_init; #endif @@ -66,10 +68,11 @@ drmkms_modcmd(modcmd_t cmd, void *arg __ switch (cmd) { case MODULE_CMD_INIT: -#ifndef _MODULE - if (!linux_suppress_init) -#endif - linux_mutex_init(&drm_global_mutex); + if (!linux_suppress_init) { + linux_mutex_init(&drm_global_mutex); + if (ISSET(boothowto, AB_DEBUG)) +drm_debug = ~(unsigned int)0; + } #ifdef _MODULE error = config_init_component(cfdriver_ioconf_drmkms, cfattach_ioconf_drmkms, cfdata_ioconf_drmkms); @@ -86,8 +89,6 @@ drmkms_modcmd(modcmd_t cmd, void *arg __ goto init_fail1; } #endif - if (ISSET(boothowto, AB_DEBUG)) - drm_debug = ~(unsigned int)0; return 0; #ifdef _MODULE
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: riastradh Date: Thu Apr 3 15:16:18 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: drm_module.c Log Message: Need for AB_DEBUG. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_module.c 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/drm_module.c diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.3 src/sys/external/bsd/drm2/drm/drm_module.c:1.4 --- src/sys/external/bsd/drm2/drm/drm_module.c:1.3 Thu Apr 3 14:15:05 2014 +++ src/sys/external/bsd/drm2/drm/drm_module.c Thu Apr 3 15:16:18 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_module.c,v 1.3 2014/04/03 14:15:05 riastradh Exp $ */ +/* $NetBSD: drm_module.c,v 1.4 2014/04/03 15:16:18 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,11 +30,12 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.3 2014/04/03 14:15:05 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.4 2014/04/03 15:16:18 riastradh Exp $"); #include #include #include +#include #include #include
CVS commit: src/sys/external/bsd/drm2/drm
Module Name:src Committed By: christos Date: Thu Mar 27 21:21:47 UTC 2014 Modified Files: src/sys/external/bsd/drm2/drm: files.drmkms Log Message: add missing dependencies (Takahiro HAYASHI) To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/files.drmkms 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.2 src/sys/external/bsd/drm2/drm/files.drmkms:1.3 --- src/sys/external/bsd/drm2/drm/files.drmkms:1.2 Tue Mar 18 14:20:42 2014 +++ src/sys/external/bsd/drm2/drm/files.drmkms Thu Mar 27 17:21:47 2014 @@ -1,4 +1,4 @@ -# $NetBSD: files.drmkms,v 1.2 2014/03/18 18:20:42 riastradh Exp $ +# $NetBSD: files.drmkms,v 1.3 2014/03/27 21:21:47 christos Exp $ define drmkmsbus { } @@ -11,7 +11,7 @@ include "external/bsd/drm2/linux/files.d define drmkms_i2c define drmkms -device drmkms: drmkms_linux, drmkms_i2c +device drmkms: drmkms_linux, drmkms_i2c, i2cexec, i2c_bitbang attach drmkms at drmkmsbus defflag opt_drmkms.h DRMKMS_DEBUG