Module Name: src Committed By: riastradh Date: Sat Nov 22 19:18:08 UTC 2014
Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_agpsupport.c drm_pci.c drm_stub.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h drm_agpsupport.h src/sys/external/bsd/drm2/drm: drm_drv.c src/sys/external/bsd/drm2/pci: drm_pci.c drm_pci_module.c src/sys/modules/drmkms: Makefile src/sys/modules/drmkms_pci: Makefile Log Message: Move all PCI/AGP code back to drmkms_pci module where it belongs. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_pci.c cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/drm_stub.c cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/include/drm/drmP.h cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/drm2/drm/drm_drv.c cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/pci/drm_pci.c cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/pci/drm_pci_module.c cvs rdiff -u -r1.6 -r1.7 src/sys/modules/drmkms/Makefile cvs rdiff -u -r1.3 -r1.4 src/sys/modules/drmkms_pci/Makefile 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/dist/drm/drm_agpsupport.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.5 Tue Nov 11 02:33:28 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c Sat Nov 22 19:18:07 2014 @@ -518,16 +518,6 @@ void drm_agp_clear(struct drm_device *de dev->agp->enabled = 0; } -void drm_agp_destroy(struct drm_device *dev) -{ - if (dev->agp) { - arch_phys_wc_del(dev->agp->agp_mtrr); - drm_agp_clear(dev); - kfree(dev->agp); - dev->agp = NULL; - } -} - #ifndef __NetBSD__ /* XXX Dead code that doesn't make sense... */ /** * Binds a collection of pages into AGP memory at the given offset, returning Index: src/sys/external/bsd/drm2/dist/drm/drm_pci.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_pci.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_pci.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_pci.c:1.4 Tue Nov 11 02:33:28 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_pci.c Sat Nov 22 19:18:07 2014 @@ -277,7 +277,12 @@ static void drm_pci_agp_init(struct drm_ void drm_pci_agp_destroy(struct drm_device *dev) { - drm_agp_destroy(dev); + if (dev->agp) { + arch_phys_wc_del(dev->agp->agp_mtrr); + drm_agp_clear(dev); + kfree(dev->agp); + dev->agp = NULL; + } } static struct drm_bus drm_pci_bus = { Index: src/sys/external/bsd/drm2/dist/drm/drm_stub.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.6 Tue Nov 11 02:33:28 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_stub.c Sat Nov 22 19:18:07 2014 @@ -848,8 +848,10 @@ void drm_dev_unregister(struct drm_devic if (dev->driver->unload) dev->driver->unload(dev); +#ifndef __NetBSD__ /* Moved to drm_pci. */ if (dev->agp) - drm_agp_destroy(dev); + drm_pci_agp_destroy(dev); +#endif drm_vblank_cleanup(dev); Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.7 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.8 --- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.7 Sat Jul 26 21:15:45 2014 +++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Sat Nov 22 19:18:07 2014 @@ -1607,9 +1607,11 @@ struct drm_agp_hooks { drm_ioctl_t *agph_bind_ioctl; drm_ioctl_t *agph_unbind_ioctl; int (*agph_release)(struct drm_device *); + void (*agph_clear)(struct drm_device *); }; extern int drm_agp_release_hook(struct drm_device *); +extern void drm_agp_clear_hook(struct drm_device *); extern int drm_agp_register(const struct drm_agp_hooks *); extern void drm_agp_deregister(const struct drm_agp_hooks *); Index: src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h:1.3 src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h:1.4 --- src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h:1.3 Tue Nov 11 02:49:16 2014 +++ src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h Sat Nov 22 19:18:07 2014 @@ -27,7 +27,6 @@ struct agp_memory *drm_agp_bind_pages(st struct drm_agp_head *drm_agp_init(struct drm_device *dev); void drm_agp_clear(struct drm_device *dev); -void drm_agp_destroy(struct drm_device *dev); int drm_agp_acquire(struct drm_device *dev); int drm_agp_acquire_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); Index: src/sys/external/bsd/drm2/drm/drm_drv.c diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.10 src/sys/external/bsd/drm2/drm/drm_drv.c:1.11 --- src/sys/external/bsd/drm2/drm/drm_drv.c:1.10 Tue Nov 4 11:27:31 2014 +++ src/sys/external/bsd/drm2/drm/drm_drv.c Sat Nov 22 19:18:07 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.10 2014/11/04 11:27:31 jmcneill Exp $ */ +/* $NetBSD: drm_drv.c,v 1.11 2014/11/22 19:18:07 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.10 2014/11/04 11:27:31 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.11 2014/11/22 19:18:07 riastradh Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -393,7 +393,7 @@ drm_lastclose(struct drm_device *dev) drm_irq_uninstall(dev); mutex_lock(&dev->struct_mutex); - drm_agp_clear(dev); + 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); @@ -806,25 +806,39 @@ drm_agp_deregister(const struct drm_agp_ hooks, drm_current_agp_hooks); } +static void __dead +drm_noagp_panic(struct drm_device *dev) +{ + if ((dev != NULL) && + (dev->control != NULL) && + (dev->control->kdev != NULL)) + panic("%s: no agp loaded", device_xname(dev->control->kdev)); + else + panic("drm_device %p: no agp loaded", dev); +} + int drm_agp_release_hook(struct drm_device *dev) { const struct drm_agp_hooks *const hooks = drm_current_agp_hooks; - if (hooks == NULL) { - if ((dev != NULL) && - (dev->control != NULL) && - (dev->control->kdev != NULL)) - panic("drm_agp_release(%s): no agp loaded", - device_xname(dev->control->kdev)); - else - panic("drm_agp_release(drm_device %p): no agp loaded", - dev); - } + if (hooks == NULL) + drm_noagp_panic(dev); membar_consumer(); return (*hooks->agph_release)(dev); } +void +drm_agp_clear_hook(struct drm_device *dev) +{ + const struct drm_agp_hooks *const hooks = drm_current_agp_hooks; + + if (hooks == NULL) + drm_noagp_panic(dev); + membar_consumer(); + (*hooks->agph_clear)(dev); +} + #define DEFINE_AGP_HOOK_IOCTL(NAME, HOOK) \ static int \ NAME(struct drm_device *dev, void *data, struct drm_file *file) \ Index: src/sys/external/bsd/drm2/pci/drm_pci.c diff -u src/sys/external/bsd/drm2/pci/drm_pci.c:1.7 src/sys/external/bsd/drm2/pci/drm_pci.c:1.8 --- src/sys/external/bsd/drm2/pci/drm_pci.c:1.7 Tue Nov 4 11:27:31 2014 +++ src/sys/external/bsd/drm2/pci/drm_pci.c Sat Nov 22 19:18:07 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_pci.c,v 1.7 2014/11/04 11:27:31 jmcneill Exp $ */ +/* $NetBSD: drm_pci.c,v 1.8 2014/11/22 19:18:07 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_pci.c,v 1.7 2014/11/04 11:27:31 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_pci.c,v 1.8 2014/11/22 19:18:07 riastradh Exp $"); #include <sys/types.h> #include <sys/errno.h> @@ -181,12 +181,7 @@ drm_pci_detach(struct drm_device *dev, i drm_dev_unregister(dev); /* Tear down AGP stuff if necessary. */ - if (dev->agp) { - arch_phys_wc_del(dev->agp->agp_mtrr); - drm_agp_clear(dev); - kfree(dev->agp); /* XXX Should go in drm_agp_clear... */ - dev->agp = NULL; - } + drm_pci_agp_destroy(dev); /* Free the record of available bus space mappings. */ dev->bus_nmaps = 0; Index: src/sys/external/bsd/drm2/pci/drm_pci_module.c diff -u src/sys/external/bsd/drm2/pci/drm_pci_module.c:1.2 src/sys/external/bsd/drm2/pci/drm_pci_module.c:1.3 --- src/sys/external/bsd/drm2/pci/drm_pci_module.c:1.2 Tue Mar 18 18:20:43 2014 +++ src/sys/external/bsd/drm2/pci/drm_pci_module.c Sat Nov 22 19:18:07 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_pci_module.c,v 1.2 2014/03/18 18:20:43 riastradh Exp $ */ +/* $NetBSD: drm_pci_module.c,v 1.3 2014/11/22 19:18:07 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_pci_module.c,v 1.2 2014/03/18 18:20:43 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_pci_module.c,v 1.3 2014/11/22 19:18:07 riastradh Exp $"); #include <sys/module.h> @@ -48,6 +48,7 @@ const struct drm_agp_hooks drmkms_pci_ag .agph_bind_ioctl = &drm_agp_bind_ioctl, .agph_unbind_ioctl = &drm_agp_unbind_ioctl, .agph_release = &drm_agp_release, + .agph_clear = &drm_agp_clear, }; static int Index: src/sys/modules/drmkms/Makefile diff -u src/sys/modules/drmkms/Makefile:1.6 src/sys/modules/drmkms/Makefile:1.7 --- src/sys/modules/drmkms/Makefile:1.6 Wed Nov 12 03:03:01 2014 +++ src/sys/modules/drmkms/Makefile Sat Nov 22 19:18:07 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.6 2014/11/12 03:03:01 christos Exp $ +# $NetBSD: Makefile,v 1.7 2014/11/22 19:18:07 riastradh Exp $ .include "../Makefile.inc" .include "Makefile.inc" @@ -12,7 +12,7 @@ KMOD= drmkms # Upstream source files. #SRCS+= ati_pcigart.c # Moved to drmkms_pci module. -SRCS+= drm_agpsupport.c # Moved to drmkms_pci module. +#SRCS+= drm_agpsupport.c # Moved to drmkms_pci module. SRCS+= drm_auth.c SRCS+= drm_buffer.c SRCS+= drm_bufs.c Index: src/sys/modules/drmkms_pci/Makefile diff -u src/sys/modules/drmkms_pci/Makefile:1.3 src/sys/modules/drmkms_pci/Makefile:1.4 --- src/sys/modules/drmkms_pci/Makefile:1.3 Wed Nov 12 02:14:17 2014 +++ src/sys/modules/drmkms_pci/Makefile Sat Nov 22 19:18:08 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.3 2014/11/12 02:14:17 christos Exp $ +# $NetBSD: Makefile,v 1.4 2014/11/22 19:18:08 riastradh Exp $ .include "../Makefile.inc" .include "../drmkms/Makefile.inc" @@ -9,7 +9,7 @@ KMOD= drmkms_pci #SRCS+= ati_pcigart.c # XXX Restore for ATI support. -#SRCS+= drm_agpsupport.c +SRCS+= drm_agpsupport.c SRCS+= drm_pci.c SRCS+= drm_pci_module.c