Hi changzhu, FYI, the error/warning still remains. tree: git://people.freedesktop.org/~agd5f/linux.git amd-19.50 head: f981f76437edab0861f3721c27f1c3cec5903dcc commit: f12f9b802b6dd80fdee0b7c601b8b9d59a967556 [2031/2680] 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@xxxxxxxxx> 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@xxxxxxx> :::::: CC: Flora Cui <flora.cui@xxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx Intel Corporation
Attachment:
.config.gz
Description: application/gzip
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel