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
 

Reply via email to