File drm-link_drm_into_nouveau.diff of Package nouveau
--- drm/linux-core/Makefile.kernel
+++ drm/linux-core/Makefile.kernel
@@ -52,7 +52,9 @@
xgi-objs += xgi_ioc32.o
endif
-obj-m += drm.o
+# Changed to not build drm.ko but link drm into nouveau.ko:
+nouveau-objs += $(drm-objs)
+
obj-$(CONFIG_DRM_TDFX) += tdfx.o
obj-$(CONFIG_DRM_R128) += r128.o
obj-$(CONFIG_DRM_RADEON)+= radeon.o
--- drm/linux-core/drm_drv.c
+++ drm/linux-core/drm_drv.c
@@ -462,7 +462,7 @@
.open = drm_stub_open
};
-static int __init drm_core_init(void)
+int __init drm_core_init(void)
{
int ret;
struct sysinfo si;
@@ -525,7 +525,7 @@
return ret;
}
-static void __exit drm_core_exit(void)
+void __exit drm_core_exit(void)
{
remove_proc_entry("dri", NULL);
drm_sysfs_destroy();
@@ -535,8 +535,6 @@
idr_destroy(&drm_minors_idr);
}
-module_init(drm_core_init);
-module_exit(drm_core_exit);
/**
* Get version information
--- drm/linux-core/nouveau_drv.c
+++ drm/linux-core/nouveau_drv.c
@@ -101,8 +101,14 @@
return drm_get_dev(pdev, ent, &driver);
}
+int __init drm_core_init(void);
+void __exit drm_core_exit(void);
+
static int __init nouveau_init(void)
{
+ int ret = drm_core_init();
+ if (ret)
+ return ret;
driver.num_ioctls = nouveau_max_ioctl;
return drm_init(&driver, pciidlist);
}
@@ -110,6 +116,7 @@
static void __exit nouveau_exit(void)
{
drm_exit(&driver);
+ drm_core_exit();
}
module_init(nouveau_init);