Date: Sat, 28 Jan 2017 15:43:19 +0000 (UTC) From: Baptiste Daroussin <bapt@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r312923 - in head/sys: dev/drm2 modules/drm2/drm2 Message-ID: <201701281543.v0SFhJL9046997@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bapt Date: Sat Jan 28 15:43:19 2017 New Revision: 312923 URL: https://svnweb.freebsd.org/changeset/base/312923 Log: Make the drm2 module depend on linuxkpi Use linux memory allocation to reduce diff with upstream Modified: head/sys/dev/drm2/drm_agpsupport.c head/sys/dev/drm2/drm_drv.c head/sys/dev/drm2/drm_os_freebsd.c head/sys/dev/drm2/drm_os_freebsd.h head/sys/dev/drm2/drm_stub.c head/sys/modules/drm2/drm2/Makefile Modified: head/sys/dev/drm2/drm_agpsupport.c ============================================================================== --- head/sys/dev/drm2/drm_agpsupport.c Sat Jan 28 13:25:06 2017 (r312922) +++ head/sys/dev/drm2/drm_agpsupport.c Sat Jan 28 15:43:19 2017 (r312923) @@ -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 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, 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 { 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); Modified: head/sys/dev/drm2/drm_drv.c ============================================================================== --- head/sys/dev/drm2/drm_drv.c Sat Jan 28 13:25:06 2017 (r312922) +++ head/sys/dev/drm2/drm_drv.c Sat Jan 28 15:43:19 2017 (r312923) @@ -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 * de 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); Modified: head/sys/dev/drm2/drm_os_freebsd.c ============================================================================== --- head/sys/dev/drm2/drm_os_freebsd.c Sat Jan 28 13:25:06 2017 (r312922) +++ head/sys/dev/drm2/drm_os_freebsd.c Sat Jan 28 15:43:19 2017 (r312923) @@ -24,7 +24,6 @@ MALLOC_DEFINE(DRM_MEM_QUEUES, "drm_queue 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); Modified: head/sys/dev/drm2/drm_os_freebsd.h ============================================================================== --- head/sys/dev/drm2/drm_os_freebsd.h Sat Jan 28 13:25:06 2017 (r312922) +++ head/sys/dev/drm2/drm_os_freebsd.h Sat Jan 28 15:43:19 2017 (r312923) @@ -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); Modified: head/sys/dev/drm2/drm_stub.c ============================================================================== --- head/sys/dev/drm2/drm_stub.c Sat Jan 28 13:25:06 2017 (r312922) +++ head/sys/dev/drm2/drm_stub.c Sat Jan 28 15:43:19 2017 (r312923) @@ -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_d 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; } Modified: head/sys/modules/drm2/drm2/Makefile ============================================================================== --- head/sys/modules/drm2/drm2/Makefile Sat Jan 28 13:25:06 2017 (r312922) +++ head/sys/modules/drm2/drm2/Makefile Sat Jan 28 15:43:19 2017 (r312923) @@ -48,6 +48,8 @@ SRCS = \ ati_pcigart.c #ttm_page_alloc_dma.c +CFLAGS+= -I${.CURDIR}/../../../compat/linuxkpi/common/include + .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_ARCH} == "powerpc64" SRCS += drm_ioc32.c .endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701281543.v0SFhJL9046997>