aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/drm2
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2017-01-28 15:43:19 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2017-01-28 15:43:19 +0000
commit2e8e6c3a4f2da68ae1cf178f0f6eac35f8bc1c5a (patch)
tree3577a9c15a1bbb3614744a71acba94748b37fbcd /sys/dev/drm2
parentf00e79c8470318cef8b419e33daa6c72b43f8fdb (diff)
downloadsrc-2e8e6c3a4f2da68ae1cf178f0f6eac35f8bc1c5a.tar.gz
src-2e8e6c3a4f2da68ae1cf178f0f6eac35f8bc1c5a.zip
Make the drm2 module depend on linuxkpi
Use linux memory allocation to reduce diff with upstream
Notes
Notes: svn path=/head/; revision=312923
Diffstat (limited to 'sys/dev/drm2')
-rw-r--r--sys/dev/drm2/drm_agpsupport.c14
-rw-r--r--sys/dev/drm2/drm_drv.c3
-rw-r--r--sys/dev/drm2/drm_os_freebsd.c2
-rw-r--r--sys/dev/drm2/drm_os_freebsd.h1
-rw-r--r--sys/dev/drm2/drm_stub.c5
5 files changed, 12 insertions, 13 deletions
diff --git a/sys/dev/drm2/drm_agpsupport.c b/sys/dev/drm2/drm_agpsupport.c
index 131a9ad9cc91..025350fc4bb7 100644
--- a/sys/dev/drm2/drm_agpsupport.c
+++ b/sys/dev/drm2/drm_agpsupport.c
@@ -35,6 +35,7 @@
__FBSDID("$FreeBSD$");
#include <dev/drm2/drmP.h>
+#include <linux/slab.h>
#if __OS_HAS_AGP
@@ -208,15 +209,13 @@ int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request)
if (!dev->agp || !dev->agp->acquired)
return -EINVAL;
- if (!(entry = malloc(sizeof(*entry), DRM_MEM_AGPLISTS, M_NOWAIT)))
+ if (!(entry = kzalloc(sizeof(*entry), GFP_KERNEL)))
return -ENOMEM;
- memset(entry, 0, sizeof(*entry));
-
pages = (request->size + PAGE_SIZE - 1) / PAGE_SIZE;
type = (u32) request->type;
if (!(memory = agp_alloc_memory(dev->agp->bridge, type, pages << PAGE_SHIFT))) {
- free(entry, DRM_MEM_AGPLISTS);
+ kfree(entry);
return -ENOMEM;
}
@@ -376,7 +375,7 @@ int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request)
list_del(&entry->head);
drm_free_agp(entry->memory, entry->pages);
- free(entry, DRM_MEM_AGPLISTS);
+ kfree(entry);
return 0;
}
EXPORT_SYMBOL(drm_agp_free);
@@ -404,12 +403,11 @@ struct drm_agp_head *drm_agp_init(struct drm_device *dev)
{
struct drm_agp_head *head = NULL;
- if (!(head = malloc(sizeof(*head), DRM_MEM_AGPLISTS, M_NOWAIT)))
+ if (!(head = kzalloc(sizeof(*head), GFP_KERNEL)))
return NULL;
- memset((void *)head, 0, sizeof(*head));
head->bridge = agp_find_device();
if (!head->bridge) {
- free(head, DRM_MEM_AGPLISTS);
+ kfree(head);
return NULL;
} else {
agp_get_info(head->bridge, &head->agp_info);
diff --git a/sys/dev/drm2/drm_drv.c b/sys/dev/drm2/drm_drv.c
index 9529ac3dfa4b..c220668bdb71 100644
--- a/sys/dev/drm2/drm_drv.c
+++ b/sys/dev/drm2/drm_drv.c
@@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sysent.h>
+#include <linux/slab.h>
#include <dev/drm2/drmP.h>
#include <dev/drm2/drm_core.h>
#include <dev/drm2/drm_global.h>
@@ -211,7 +212,7 @@ int drm_lastclose(struct drm_device * dev)
if (entry->bound)
drm_unbind_agp(entry->memory);
drm_free_agp(entry->memory, entry->pages);
- free(entry, DRM_MEM_AGPLISTS);
+ kfree(entry);
}
INIT_LIST_HEAD(&dev->agp->memory);
diff --git a/sys/dev/drm2/drm_os_freebsd.c b/sys/dev/drm2/drm_os_freebsd.c
index 4ce8081887ba..90d7319a2ea0 100644
--- a/sys/dev/drm2/drm_os_freebsd.c
+++ b/sys/dev/drm2/drm_os_freebsd.c
@@ -24,7 +24,6 @@ MALLOC_DEFINE(DRM_MEM_QUEUES, "drm_queues", "DRM QUEUE Data Structures");
MALLOC_DEFINE(DRM_MEM_CMDS, "drm_cmds", "DRM COMMAND Data Structures");
MALLOC_DEFINE(DRM_MEM_MAPPINGS, "drm_mapping", "DRM MAPPING Data Structures");
MALLOC_DEFINE(DRM_MEM_BUFLISTS, "drm_buflists", "DRM BUFLISTS Data Structures");
-MALLOC_DEFINE(DRM_MEM_AGPLISTS, "drm_agplists", "DRM AGPLISTS Data Structures");
MALLOC_DEFINE(DRM_MEM_CTXBITMAP, "drm_ctxbitmap",
"DRM CTXBITMAP Data Structures");
MALLOC_DEFINE(DRM_MEM_SGLISTS, "drm_sglists", "DRM SGLISTS Data Structures");
@@ -496,4 +495,5 @@ MODULE_VERSION(drmn, 1);
MODULE_DEPEND(drmn, agp, 1, 1, 1);
MODULE_DEPEND(drmn, pci, 1, 1, 1);
MODULE_DEPEND(drmn, mem, 1, 1, 1);
+MODULE_DEPEND(drmn, linuxkpi, 1, 1, 1);
MODULE_DEPEND(drmn, iicbus, 1, 1, 1);
diff --git a/sys/dev/drm2/drm_os_freebsd.h b/sys/dev/drm2/drm_os_freebsd.h
index 11c9feb9b4aa..cedc7a25228d 100644
--- a/sys/dev/drm2/drm_os_freebsd.h
+++ b/sys/dev/drm2/drm_os_freebsd.h
@@ -552,7 +552,6 @@ MALLOC_DECLARE(DRM_MEM_QUEUES);
MALLOC_DECLARE(DRM_MEM_CMDS);
MALLOC_DECLARE(DRM_MEM_MAPPINGS);
MALLOC_DECLARE(DRM_MEM_BUFLISTS);
-MALLOC_DECLARE(DRM_MEM_AGPLISTS);
MALLOC_DECLARE(DRM_MEM_CTXBITMAP);
MALLOC_DECLARE(DRM_MEM_SGLISTS);
MALLOC_DECLARE(DRM_MEM_MM);
diff --git a/sys/dev/drm2/drm_stub.c b/sys/dev/drm2/drm_stub.c
index 06663ac8ef70..54b1a80cb7a1 100644
--- a/sys/dev/drm2/drm_stub.c
+++ b/sys/dev/drm2/drm_stub.c
@@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
#include <dev/drm2/drmP.h>
#include <dev/drm2/drm_core.h>
+#include <linux/slab.h>
#ifdef DRM_DEBUG_DEFAULT_ON
unsigned int drm_debug = (DRM_DEBUGBITS_DEBUG | DRM_DEBUGBITS_KMS |
@@ -315,7 +316,7 @@ void drm_cancel_fill_in_dev(struct drm_device *dev)
DRM_MTRR_WC);
DRM_DEBUG("mtrr_del=%d\n", retval);
}
- free(dev->agp, DRM_MEM_AGPLISTS);
+ kfree(dev->agp);
dev->agp = NULL;
drm_ht_remove(&dev->map_hash);
@@ -467,7 +468,7 @@ void drm_put_dev(struct drm_device *dev)
drm_sysctl_cleanup(dev);
if (drm_core_has_AGP(dev) && dev->agp) {
- free(dev->agp, DRM_MEM_AGPLISTS);
+ kfree(dev->agp);
dev->agp = NULL;
}