[radeon-alex:amd-19.50 2031/2704] include/kcl/kcl_mm.h:60:21: error: redefinition of 'kvmalloc'
kbuild test robot
lkp at intel.com
Wed Jan 22 03:47:47 UTC 2020
Hi changzhu,
FYI, the error/warning still remains.
tree: git://people.freedesktop.org/~agd5f/linux.git amd-19.50
head: 1f30c089d757f6d88703676d913f06d8a5ef4353
commit: f12f9b802b6dd80fdee0b7c601b8b9d59a967556 [2031/2704] drm/amdkcl: Test if linux/overflow.h and struct_size exists
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Debian 7.5.0-3) 7.5.0
reproduce:
git checkout f12f9b802b6dd80fdee0b7c601b8b9d59a967556
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>
All errors (new ones prefixed by >>):
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_plane.h:713:5: note: declared here
int drm_universal_plane_init(struct drm_device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h: In function 'kcl_drm_gem_object_lookup':
include/kcl/kcl_drm.h:252:32: error: passing argument 1 of 'drm_gem_object_lookup' from incompatible pointer type [-Werror=incompatible-pointer-types]
return drm_gem_object_lookup(dev, filp, handle);
^~~
In file included from include/kcl/kcl_drm.h:9:0,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_gem.h:386:24: note: expected 'struct drm_file *' but argument is of type 'struct drm_device *'
struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle);
^~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h:252:37: warning: passing argument 2 of 'drm_gem_object_lookup' makes integer from pointer without a cast [-Wint-conversion]
return drm_gem_object_lookup(dev, filp, handle);
^~~~
In file included from include/kcl/kcl_drm.h:9:0,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_gem.h:386:24: note: expected 'u32 {aka unsigned int}' but argument is of type 'struct drm_file *'
struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle);
^~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h:252:10: error: too many arguments to function 'drm_gem_object_lookup'
return drm_gem_object_lookup(dev, filp, handle);
^~~~~~~~~~~~~~~~~~~~~
In file included from include/kcl/kcl_drm.h:9:0,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_gem.h:386:24: note: declared here
struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle);
^~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h: At top level:
include/kcl/kcl_drm.h:295:8: error: redefinition of 'struct drm_format_name_buf'
struct drm_format_name_buf {
^~~~~~~~~~~~~~~~~~~
In file included from include/drm/drmP.h:69:0,
from include/kcl/kcl_drm.h:6,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_fourcc.h:142:8: note: originally defined here
struct drm_format_name_buf {
^~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h: In function 'kcl_drm_gem_object_put_unlocked':
include/kcl/kcl_drm.h:327:9: error: implicit declaration of function 'drm_gem_object_unreference_unlocked'; did you mean 'drm_gem_object_put_unlocked'? [-Werror=implicit-function-declaration]
return drm_gem_object_unreference_unlocked(obj);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drm_gem_object_put_unlocked
include/kcl/kcl_drm.h:327:9: warning: 'return' with a value, in function returning void
return drm_gem_object_unreference_unlocked(obj);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/kcl/kcl_drm.h:324:20: note: declared here
static inline void kcl_drm_gem_object_put_unlocked(struct drm_gem_object *obj)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/kcl/kcl_drm.h: In function 'kcl_drm_atomic_get_old_crtc_state_before_commit':
include/kcl/kcl_drm.h:351:43: error: invalid type argument of '->' (have 'struct __drm_crtcs_state')
return state->crtcs[drm_crtc_index(crtc)]->state;
^~
include/kcl/kcl_drm.h: In function 'kcl_drm_atomic_get_new_crtc_state_after_commit':
include/kcl/kcl_drm.h:386:43: error: invalid type argument of '->' (have 'struct __drm_crtcs_state')
return state->crtcs[drm_crtc_index(crtc)]->state;
^~
include/kcl/kcl_drm.h: At top level:
include/kcl/kcl_drm.h:491:8: error: redefinition of 'struct drm_printer'
struct drm_printer {
^~~~~~~~~~~
In file included from include/drm/drm_mm.h:49:0,
from include/drm/drm_vma_manager.h:26,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/drm/drm_print.h:70:8: note: originally defined here
struct drm_printer {
^~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h:497:6: error: conflicting types for 'drm_printf'
void drm_printf(struct drm_printer *p, const char *f, ...);
^~~~~~~~~~
In file included from include/drm/drm_mm.h:49:0,
from include/drm/drm_vma_manager.h:26,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/drm/drm_print.h:86:6: note: previous declaration of 'drm_printf' was here
void drm_printf(struct drm_printer *p, const char *f, ...);
^~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:60:21: error: redefinition of 'kvmalloc'
static inline void *kvmalloc(size_t size, gfp_t flags)
^~~~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:635:21: note: previous definition of 'kvmalloc' was here
static inline void *kvmalloc(size_t size, gfp_t flags)
^~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:70:21: error: redefinition of 'kvzalloc'
static inline void *kvzalloc(size_t size, gfp_t flags)
^~~~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:643:21: note: previous definition of 'kvzalloc' was here
static inline void *kvzalloc(size_t size, gfp_t flags)
^~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:80:20: error: static declaration of 'kvfree' follows non-static declaration
static inline void kvfree(const void *addr)
^~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:663:13: note: previous declaration of 'kvfree' was here
extern void kvfree(const void *addr);
^~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:100:21: error: redefinition of 'kvmalloc_array'
static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
^~~~~~~~~~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:648:21: note: previous definition of 'kvmalloc_array' was here
static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
^~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:113:21: error: redefinition of 'kvcalloc'
static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
^~~~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:658:21: note: previous definition of 'kvcalloc' was here
static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
^~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:9:0,
from <command-line>:0:
include/kcl/kcl_fence.h: In function 'kcl_fence_get_rcu_safe':
include/kcl/kcl_fence.h:124:32: error: passing argument 1 of 'dma_fence_get_rcu_safe' from incompatible pointer type [-Werror=incompatible-pointer-types]
return dma_fence_get_rcu_safe(fencep);
^~~~~~
In file included from include/drm/drmP.h:58:0,
from include/kcl/kcl_drm.h:6,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/linux/dma-fence.h:315:1: note: expected 'struct dma_fence **' but argument is of type 'struct fence **'
dma_fence_get_rcu_safe(struct dma_fence __rcu **fencep)
^~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:9:0,
from <command-line>:0:
include/kcl/kcl_fence.h:124:9: error: return from incompatible pointer type [-Werror=incompatible-pointer-types]
return dma_fence_get_rcu_safe(fencep);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/kcl/kcl_fence.h: At top level:
include/kcl/kcl_fence.h:129:20: error: redefinition of 'dma_fence_set_error'
static inline void dma_fence_set_error(struct dma_fence *fence,
^~~~~~~~~~~~~~~~~~~
In file included from include/drm/drmP.h:58:0,
from include/kcl/kcl_drm.h:6,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/linux/dma-fence.h:517:20: note: previous definition of 'dma_fence_set_error' was here
static inline void dma_fence_set_error(struct dma_fence *fence,
^~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:9:0,
from <command-line>:0:
include/kcl/kcl_fence.h: In function 'dma_fence_set_error':
include/kcl/kcl_fence.h:135:7: error: 'struct dma_fence' has no member named 'status'
fence->status = error;
^~
cc1: some warnings being treated as errors
--
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_plane.h:713:5: note: declared here
int drm_universal_plane_init(struct drm_device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h: In function 'kcl_drm_gem_object_lookup':
include/kcl/kcl_drm.h:252:32: error: passing argument 1 of 'drm_gem_object_lookup' from incompatible pointer type [-Werror=incompatible-pointer-types]
return drm_gem_object_lookup(dev, filp, handle);
^~~
In file included from include/kcl/kcl_drm.h:9:0,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_gem.h:386:24: note: expected 'struct drm_file *' but argument is of type 'struct drm_device *'
struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle);
^~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h:252:37: warning: passing argument 2 of 'drm_gem_object_lookup' makes integer from pointer without a cast [-Wint-conversion]
return drm_gem_object_lookup(dev, filp, handle);
^~~~
In file included from include/kcl/kcl_drm.h:9:0,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_gem.h:386:24: note: expected 'u32 {aka unsigned int}' but argument is of type 'struct drm_file *'
struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle);
^~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h:252:10: error: too many arguments to function 'drm_gem_object_lookup'
return drm_gem_object_lookup(dev, filp, handle);
^~~~~~~~~~~~~~~~~~~~~
In file included from include/kcl/kcl_drm.h:9:0,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_gem.h:386:24: note: declared here
struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle);
^~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h: At top level:
include/kcl/kcl_drm.h:295:8: error: redefinition of 'struct drm_format_name_buf'
struct drm_format_name_buf {
^~~~~~~~~~~~~~~~~~~
In file included from include/drm/drmP.h:69:0,
from include/kcl/kcl_drm.h:6,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/drm/drm_fourcc.h:142:8: note: originally defined here
struct drm_format_name_buf {
^~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h: In function 'kcl_drm_gem_object_put_unlocked':
include/kcl/kcl_drm.h:327:9: error: implicit declaration of function 'drm_gem_object_unreference_unlocked'; did you mean 'drm_gem_object_put_unlocked'? [-Werror=implicit-function-declaration]
return drm_gem_object_unreference_unlocked(obj);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drm_gem_object_put_unlocked
include/kcl/kcl_drm.h:327:9: warning: 'return' with a value, in function returning void
return drm_gem_object_unreference_unlocked(obj);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/kcl/kcl_drm.h:324:20: note: declared here
static inline void kcl_drm_gem_object_put_unlocked(struct drm_gem_object *obj)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/kcl/kcl_drm.h: In function 'kcl_drm_atomic_get_old_crtc_state_before_commit':
include/kcl/kcl_drm.h:351:43: error: invalid type argument of '->' (have 'struct __drm_crtcs_state')
return state->crtcs[drm_crtc_index(crtc)]->state;
^~
include/kcl/kcl_drm.h: In function 'kcl_drm_atomic_get_new_crtc_state_after_commit':
include/kcl/kcl_drm.h:386:43: error: invalid type argument of '->' (have 'struct __drm_crtcs_state')
return state->crtcs[drm_crtc_index(crtc)]->state;
^~
include/kcl/kcl_drm.h: At top level:
include/kcl/kcl_drm.h:491:8: error: redefinition of 'struct drm_printer'
struct drm_printer {
^~~~~~~~~~~
In file included from include/drm/drm_mm.h:49:0,
from include/drm/drm_vma_manager.h:26,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/drm/drm_print.h:70:8: note: originally defined here
struct drm_printer {
^~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:6:0,
from <command-line>:0:
include/kcl/kcl_drm.h:497:6: error: conflicting types for 'drm_printf'
void drm_printf(struct drm_printer *p, const char *f, ...);
^~~~~~~~~~
In file included from include/drm/drm_mm.h:49:0,
from include/drm/drm_vma_manager.h:26,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/drm/drm_print.h:86:6: note: previous declaration of 'drm_printf' was here
void drm_printf(struct drm_printer *p, const char *f, ...);
^~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:60:21: error: redefinition of 'kvmalloc'
static inline void *kvmalloc(size_t size, gfp_t flags)
^~~~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:635:21: note: previous definition of 'kvmalloc' was here
static inline void *kvmalloc(size_t size, gfp_t flags)
^~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:70:21: error: redefinition of 'kvzalloc'
static inline void *kvzalloc(size_t size, gfp_t flags)
^~~~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:643:21: note: previous definition of 'kvzalloc' was here
static inline void *kvzalloc(size_t size, gfp_t flags)
^~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:80:20: error: static declaration of 'kvfree' follows non-static declaration
static inline void kvfree(const void *addr)
^~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:663:13: note: previous declaration of 'kvfree' was here
extern void kvfree(const void *addr);
^~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:100:21: error: redefinition of 'kvmalloc_array'
static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
^~~~~~~~~~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:648:21: note: previous definition of 'kvmalloc_array' was here
static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
^~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:8:0,
from <command-line>:0:
>> include/kcl/kcl_mm.h:113:21: error: redefinition of 'kvcalloc'
static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
^~~~~~~~
In file included from include/drm/drm_vma_manager.h:27:0,
from include/kcl/kcl_drm_vma_manager.h:8,
from drivers/gpu/drm/ttm/backport/backport.h:5,
from <command-line>:0:
include/linux/mm.h:658:21: note: previous definition of 'kvcalloc' was here
static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
^~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:9:0,
from <command-line>:0:
include/kcl/kcl_fence.h: In function 'kcl_fence_get_rcu_safe':
include/kcl/kcl_fence.h:124:32: error: passing argument 1 of 'dma_fence_get_rcu_safe' from incompatible pointer type [-Werror=incompatible-pointer-types]
return dma_fence_get_rcu_safe(fencep);
^~~~~~
In file included from include/drm/drmP.h:58:0,
from include/kcl/kcl_drm.h:6,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/linux/dma-fence.h:315:1: note: expected 'struct dma_fence **' but argument is of type 'struct fence **'
dma_fence_get_rcu_safe(struct dma_fence __rcu **fencep)
^~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:9:0,
from <command-line>:0:
include/kcl/kcl_fence.h:124:9: error: return from incompatible pointer type [-Werror=incompatible-pointer-types]
return dma_fence_get_rcu_safe(fencep);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/kcl/kcl_fence.h: At top level:
include/kcl/kcl_fence.h:129:20: error: redefinition of 'dma_fence_set_error'
static inline void dma_fence_set_error(struct dma_fence *fence,
^~~~~~~~~~~~~~~~~~~
In file included from include/drm/drmP.h:58:0,
from include/kcl/kcl_drm.h:6,
from drivers/gpu/drm/ttm/backport/backport.h:6,
from <command-line>:0:
include/linux/dma-fence.h:517:20: note: previous definition of 'dma_fence_set_error' was here
static inline void dma_fence_set_error(struct dma_fence *fence,
^~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/ttm/backport/backport.h:9:0,
from <command-line>:0:
include/kcl/kcl_fence.h: In function 'dma_fence_set_error':
include/kcl/kcl_fence.h:135:7: error: 'struct dma_fence' has no member named 'status'
fence->status = error;
^~
drivers/gpu/drm/ttm/ttm_bo.c: In function 'ttm_bo_mem_space_debug':
drivers/gpu/drm/ttm/ttm_bo.c:101:25: error: invalid initializer
struct drm_printer p = drm_debug_printer(TTM_PFX);
^~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
..
vim +/kvmalloc +60 include/kcl/kcl_mm.h
b4f7d254be169a Junwei Zhang 2016-12-23 58
b8a1520bda5b72 Flora Cui 2019-08-19 59 #ifndef HAVE_KVZALLOC_KVMALLOC
b8a1520bda5b72 Flora Cui 2019-08-19 @60 static inline void *kvmalloc(size_t size, gfp_t flags)
b8a1520bda5b72 Flora Cui 2019-08-19 61 {
b8a1520bda5b72 Flora Cui 2019-08-19 62 void *out;
b4f7d254be169a Junwei Zhang 2016-12-23 63
b8a1520bda5b72 Flora Cui 2019-08-19 64 if (size > PAGE_SIZE)
b8a1520bda5b72 Flora Cui 2019-08-19 65 out = __vmalloc(size, flags, PAGE_KERNEL);
b8a1520bda5b72 Flora Cui 2019-08-19 66 else
b8a1520bda5b72 Flora Cui 2019-08-19 67 out = kmalloc(size, flags);
b8a1520bda5b72 Flora Cui 2019-08-19 68 return out;
b8a1520bda5b72 Flora Cui 2019-08-19 69 }
b8a1520bda5b72 Flora Cui 2019-08-19 @70 static inline void *kvzalloc(size_t size, gfp_t flags)
b8a1520bda5b72 Flora Cui 2019-08-19 71 {
b8a1520bda5b72 Flora Cui 2019-08-19 72 return kvmalloc(size, flags | __GFP_ZERO);
b8a1520bda5b72 Flora Cui 2019-08-19 73 }
b8a1520bda5b72 Flora Cui 2019-08-19 74 #endif /* HAVE_KVZALLOC_KVMALLOC */
b4f7d254be169a Junwei Zhang 2016-12-23 75
b8a1520bda5b72 Flora Cui 2019-08-19 76 #ifndef HAVE_KVFREE
b8a1520bda5b72 Flora Cui 2019-08-19 77 #ifdef HAVE_DRM_FREE_LARGE
b8a1520bda5b72 Flora Cui 2019-08-19 78 #define kvfree drm_free_large
b8a1520bda5b72 Flora Cui 2019-08-19 79 #else
b8a1520bda5b72 Flora Cui 2019-08-19 @80 static inline void kvfree(const void *addr)
b8a1520bda5b72 Flora Cui 2019-08-19 81 {
b8a1520bda5b72 Flora Cui 2019-08-19 82 if (is_vmalloc_addr(addr))
b8a1520bda5b72 Flora Cui 2019-08-19 83 vfree(addr);
b8a1520bda5b72 Flora Cui 2019-08-19 84 else
b8a1520bda5b72 Flora Cui 2019-08-19 85 kfree(addr);
b8a1520bda5b72 Flora Cui 2019-08-19 86 }
b8a1520bda5b72 Flora Cui 2019-08-19 87 #endif /* HAVE_DRM_FREE_LARGE */
b8a1520bda5b72 Flora Cui 2019-08-19 88 #endif /* HAVE_KVFREE */
b8a1520bda5b72 Flora Cui 2019-08-19 89
b8a1520bda5b72 Flora Cui 2019-08-19 90 #ifndef HAVE_KVMALLOC_ARRAY
b8a1520bda5b72 Flora Cui 2019-08-19 91 #if defined(HAVE_DRM_MALLOC_AB) && defined(HAVE_DRM_CALLOC_LARGE)
b8a1520bda5b72 Flora Cui 2019-08-19 92 static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
b8a1520bda5b72 Flora Cui 2019-08-19 93 {
b8a1520bda5b72 Flora Cui 2019-08-19 94 if (flags & __GFP_ZERO)
b8a1520bda5b72 Flora Cui 2019-08-19 95 return drm_calloc_large(n, size);
b8a1520bda5b72 Flora Cui 2019-08-19 96 else
b8a1520bda5b72 Flora Cui 2019-08-19 97 return drm_malloc_ab(n, size);
b8a1520bda5b72 Flora Cui 2019-08-19 98 }
b8a1520bda5b72 Flora Cui 2019-08-19 99 #else
b8a1520bda5b72 Flora Cui 2019-08-19 @100 static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
b8a1520bda5b72 Flora Cui 2019-08-19 101 {
b8a1520bda5b72 Flora Cui 2019-08-19 102 size_t bytes;
b8a1520bda5b72 Flora Cui 2019-08-19 103
b8a1520bda5b72 Flora Cui 2019-08-19 104 if (unlikely(check_mul_overflow(n, size, &bytes)))
b8a1520bda5b72 Flora Cui 2019-08-19 105 return NULL;
b8a1520bda5b72 Flora Cui 2019-08-19 106
b8a1520bda5b72 Flora Cui 2019-08-19 107 return kvmalloc(bytes, flags);
b8a1520bda5b72 Flora Cui 2019-08-19 108 }
b8a1520bda5b72 Flora Cui 2019-08-19 109 #endif /* HAVE_DRM_MALLOC_AB && HAVE_DRM_CALLOC_LARGE */
b8a1520bda5b72 Flora Cui 2019-08-19 110 #endif /* HAVE_KVMALLOC_ARRAY */
b4f7d254be169a Junwei Zhang 2016-12-23 111
b8a1520bda5b72 Flora Cui 2019-08-19 112 #ifndef HAVE_KVCALLOC
b8a1520bda5b72 Flora Cui 2019-08-19 @113 static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
b8a1520bda5b72 Flora Cui 2019-08-19 114 {
b8a1520bda5b72 Flora Cui 2019-08-19 115 return kvmalloc_array(n, size, flags | __GFP_ZERO);
b8a1520bda5b72 Flora Cui 2019-08-19 116 }
b8a1520bda5b72 Flora Cui 2019-08-19 117 #endif /* HAVE_KVCALLOC */
b4f7d254be169a Junwei Zhang 2016-12-23 118
:::::: The code at line 60 was first introduced by commit
:::::: b8a1520bda5b7226ae5b5a132e61d3a96231de0b drm/amdkcl: test whether memory alloc and free functions are available
:::::: TO: Flora Cui <flora.cui at amd.com>
:::::: CC: Flora Cui <flora.cui at amd.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 68191 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20200122/27cc3de3/attachment-0001.gz>
More information about the dri-devel
mailing list