svn commit: r312923 - in head/sys: dev/drm2 modules/drm2/drm2

O. Hartmann ohartmann at walstatt.org
Sat Jan 28 16:22:36 UTC 2017


Am Sat, 28 Jan 2017 15:43:19 +0000 (UTC)
Baptiste Daroussin <bapt at FreeBSD.org> schrieb:

> 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
> _______________________________________________
> svn-src-head at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"

This "patch" broke buildkernel:

make[4]: stopped in /usr/src/sys/modules/drm2
.ERROR_TARGET='all_subdir_drm2/radeonkms'


-- 
O. Hartmann

Ich widerspreche der Nutzung oder Übermittlung meiner Daten für
Werbezwecke oder für die Markt- oder Meinungsforschung (§ 28 Abs. 4 BDSG).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 313 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20170128/4099f0c8/attachment.sig>


More information about the svn-src-head mailing list