From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [freescale-fslc:pr/416 15408/20667] drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:79:17: error: no previous prototype for 'viv_gem_prime_export'
Date: Tue, 17 Aug 2021 20:27:29 +0800 [thread overview]
Message-ID: <202108172018.ucTOwgCC-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 16753 bytes --]
Hi Xianzhong,
FYI, the error/warning still remains.
tree: https://github.com/Freescale/linux-fslc pr/416
head: 915e71b823c877d351de1cbe650344ef6eace94b
commit: 0cbc4419bd2f810d1689d81f24884bb527bbe5fd [15408/20667] MGS-4929 [#imx-2382] enable vivante drm for linux build
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/Freescale/linux-fslc/commit/0cbc4419bd2f810d1689d81f24884bb527bbe5fd
git remote add freescale-fslc https://github.com/Freescale/linux-fslc
git fetch --no-tags freescale-fslc pr/416
git checkout 0cbc4419bd2f810d1689d81f24884bb527bbe5fd
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
cc1: error: arch/arm/mm: No such file or directory [-Werror=missing-include-dirs]
>> drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:79:17: error: no previous prototype for 'viv_gem_prime_export' [-Werror=missing-prototypes]
79 | struct dma_buf *viv_gem_prime_export(struct drm_gem_object *gem_obj,
| ^~~~~~~~~~~~~~~~~~~~
>> drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:103:24: error: no previous prototype for 'viv_gem_prime_import' [-Werror=missing-prototypes]
103 | struct drm_gem_object *viv_gem_prime_import(struct drm_device *drm,
| ^~~~~~~~~~~~~~~~~~~~
>> drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:145:6: error: no previous prototype for 'viv_gem_free_object' [-Werror=missing-prototypes]
145 | void viv_gem_free_object(struct drm_gem_object *gem_obj)
| ^~~~~~~~~~~~~~~~~~~
drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c: In function 'viv_ioctl_gem_create':
>> drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:166:9: error: variable 'ret' set but not used [-Werror=unused-but-set-variable]
166 | int ret = 0;
| ^~~
drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c: At top level:
>> drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:739:5: error: no previous prototype for 'viv_drm_open' [-Werror=missing-prototypes]
739 | int viv_drm_open(struct drm_device *drm, struct drm_file *file)
| ^~~~~~~~~~~~
>> drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:759:6: error: no previous prototype for 'viv_drm_postclose' [-Werror=missing-prototypes]
759 | void viv_drm_postclose(struct drm_device *drm, struct drm_file *file)
| ^~~~~~~~~~~~~~~~~
>> drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:814:5: error: no previous prototype for 'viv_drm_probe' [-Werror=missing-prototypes]
814 | int viv_drm_probe(struct device *dev)
| ^~~~~~~~~~~~~
>> drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:856:5: error: no previous prototype for 'viv_drm_remove' [-Werror=missing-prototypes]
856 | int viv_drm_remove(struct device *dev)
| ^~~~~~~~~~~~~~
cc1: all warnings being treated as errors
vim +/viv_gem_prime_export +79 drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c
30638182fdab7c Xianzhong 2019-01-29 77
9821cda5105e7d Richard Liu 2019-12-25 78 #if LINUX_VERSION_CODE >= KERNEL_VERSION(5,4,0)
9821cda5105e7d Richard Liu 2019-12-25 @79 struct dma_buf *viv_gem_prime_export(struct drm_gem_object *gem_obj,
9821cda5105e7d Richard Liu 2019-12-25 80 int flags)
9821cda5105e7d Richard Liu 2019-12-25 81 {
9821cda5105e7d Richard Liu 2019-12-25 82 struct drm_device *drm = gem_obj->dev;
9821cda5105e7d Richard Liu 2019-12-25 83 #else
30638182fdab7c Xianzhong 2019-01-29 84 struct dma_buf *viv_gem_prime_export(struct drm_device *drm,
30638182fdab7c Xianzhong 2019-01-29 85 struct drm_gem_object *gem_obj,
30638182fdab7c Xianzhong 2019-01-29 86 int flags)
30638182fdab7c Xianzhong 2019-01-29 87 {
9821cda5105e7d Richard Liu 2019-12-25 88 #endif
30638182fdab7c Xianzhong 2019-01-29 89 struct viv_gem_object *viv_obj = container_of(gem_obj, struct viv_gem_object, base);
30638182fdab7c Xianzhong 2019-01-29 90 struct dma_buf *dmabuf = gcvNULL;
30638182fdab7c Xianzhong 2019-01-29 91 gckGALDEVICE gal_dev = (gckGALDEVICE)drm->dev_private;
30638182fdab7c Xianzhong 2019-01-29 92
30638182fdab7c Xianzhong 2019-01-29 93 if (gal_dev)
30638182fdab7c Xianzhong 2019-01-29 94 {
30638182fdab7c Xianzhong 2019-01-29 95 gckKERNEL kernel = gal_dev->device->map[gal_dev->device->defaultHwType].kernels[0];
e9371a70921300 Minjie Zhuang 2019-09-23 96 gcmkVERIFY_OK(gckVIDMEM_NODE_Export(kernel, viv_obj->node_object, flags,
30638182fdab7c Xianzhong 2019-01-29 97 (gctPOINTER*)&dmabuf, gcvNULL));
30638182fdab7c Xianzhong 2019-01-29 98 }
30638182fdab7c Xianzhong 2019-01-29 99
30638182fdab7c Xianzhong 2019-01-29 100 return dmabuf;
30638182fdab7c Xianzhong 2019-01-29 101 }
30638182fdab7c Xianzhong 2019-01-29 102
30638182fdab7c Xianzhong 2019-01-29 @103 struct drm_gem_object *viv_gem_prime_import(struct drm_device *drm,
30638182fdab7c Xianzhong 2019-01-29 104 struct dma_buf *dmabuf)
30638182fdab7c Xianzhong 2019-01-29 105 {
30638182fdab7c Xianzhong 2019-01-29 106 struct drm_gem_object *gem_obj = gcvNULL;
30638182fdab7c Xianzhong 2019-01-29 107 struct viv_gem_object *viv_obj;
30638182fdab7c Xianzhong 2019-01-29 108
30638182fdab7c Xianzhong 2019-01-29 109 gcsHAL_INTERFACE iface;
30638182fdab7c Xianzhong 2019-01-29 110 gckGALDEVICE gal_dev;
30638182fdab7c Xianzhong 2019-01-29 111 gckKERNEL kernel;
30638182fdab7c Xianzhong 2019-01-29 112 gctUINT32 processID;
30638182fdab7c Xianzhong 2019-01-29 113 gckVIDMEM_NODE nodeObject;
30638182fdab7c Xianzhong 2019-01-29 114 gceSTATUS status = gcvSTATUS_OK;
30638182fdab7c Xianzhong 2019-01-29 115
30638182fdab7c Xianzhong 2019-01-29 116 gal_dev = (gckGALDEVICE)drm->dev_private;
30638182fdab7c Xianzhong 2019-01-29 117 if (!gal_dev)
30638182fdab7c Xianzhong 2019-01-29 118 {
30638182fdab7c Xianzhong 2019-01-29 119 gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT);
30638182fdab7c Xianzhong 2019-01-29 120 }
30638182fdab7c Xianzhong 2019-01-29 121
30638182fdab7c Xianzhong 2019-01-29 122 gckOS_ZeroMemory(&iface, sizeof(iface));
30638182fdab7c Xianzhong 2019-01-29 123 iface.command = gcvHAL_WRAP_USER_MEMORY;
30638182fdab7c Xianzhong 2019-01-29 124 iface.hardwareType = gal_dev->device->defaultHwType;
30638182fdab7c Xianzhong 2019-01-29 125 iface.u.WrapUserMemory.desc.flag = gcvALLOC_FLAG_DMABUF;
30638182fdab7c Xianzhong 2019-01-29 126 iface.u.WrapUserMemory.desc.handle = -1;
30638182fdab7c Xianzhong 2019-01-29 127 iface.u.WrapUserMemory.desc.dmabuf = gcmPTR_TO_UINT64(dmabuf);
30638182fdab7c Xianzhong 2019-01-29 128 gcmkONERROR(gckDEVICE_Dispatch(gal_dev->device, &iface));
30638182fdab7c Xianzhong 2019-01-29 129
30638182fdab7c Xianzhong 2019-01-29 130 kernel = gal_dev->device->map[gal_dev->device->defaultHwType].kernels[0];
30638182fdab7c Xianzhong 2019-01-29 131 gcmkONERROR(gckOS_GetProcessID(&processID));
30638182fdab7c Xianzhong 2019-01-29 132 gcmkONERROR(gckVIDMEM_HANDLE_Lookup(kernel, processID, iface.u.WrapUserMemory.node, &nodeObject));
30638182fdab7c Xianzhong 2019-01-29 133
30638182fdab7c Xianzhong 2019-01-29 134 /* ioctl output */
30638182fdab7c Xianzhong 2019-01-29 135 gem_obj = kzalloc(sizeof(struct viv_gem_object), GFP_KERNEL);
30638182fdab7c Xianzhong 2019-01-29 136 drm_gem_private_object_init(drm, gem_obj, dmabuf->size);
30638182fdab7c Xianzhong 2019-01-29 137 viv_obj = container_of(gem_obj, struct viv_gem_object, base);
30638182fdab7c Xianzhong 2019-01-29 138 viv_obj->node_handle = iface.u.WrapUserMemory.node;
30638182fdab7c Xianzhong 2019-01-29 139 viv_obj->node_object = nodeObject;
30638182fdab7c Xianzhong 2019-01-29 140
30638182fdab7c Xianzhong 2019-01-29 141 OnError:
30638182fdab7c Xianzhong 2019-01-29 142 return gem_obj;
30638182fdab7c Xianzhong 2019-01-29 143 }
30638182fdab7c Xianzhong 2019-01-29 144
30638182fdab7c Xianzhong 2019-01-29 @145 void viv_gem_free_object(struct drm_gem_object *gem_obj)
30638182fdab7c Xianzhong 2019-01-29 146 {
30638182fdab7c Xianzhong 2019-01-29 147 struct viv_gem_object *viv_obj = container_of(gem_obj, struct viv_gem_object, base);
30638182fdab7c Xianzhong 2019-01-29 148 struct drm_device *drm = gem_obj->dev;
30638182fdab7c Xianzhong 2019-01-29 149
30638182fdab7c Xianzhong 2019-01-29 150 gcsHAL_INTERFACE iface;
30638182fdab7c Xianzhong 2019-01-29 151 gckGALDEVICE gal_dev = (gckGALDEVICE)drm->dev_private;
30638182fdab7c Xianzhong 2019-01-29 152
30638182fdab7c Xianzhong 2019-01-29 153 gckOS_ZeroMemory(&iface, sizeof(iface));
30638182fdab7c Xianzhong 2019-01-29 154 iface.command = gcvHAL_RELEASE_VIDEO_MEMORY;
30638182fdab7c Xianzhong 2019-01-29 155 iface.hardwareType = gal_dev->device->defaultHwType;
30638182fdab7c Xianzhong 2019-01-29 156 iface.u.ReleaseVideoMemory.node = viv_obj->node_handle;
30638182fdab7c Xianzhong 2019-01-29 157 gcmkVERIFY_OK(gckDEVICE_Dispatch(gal_dev->device, &iface));
30638182fdab7c Xianzhong 2019-01-29 158
30638182fdab7c Xianzhong 2019-01-29 159 drm_gem_object_release(gem_obj);
30638182fdab7c Xianzhong 2019-01-29 160 kfree(gem_obj);
30638182fdab7c Xianzhong 2019-01-29 161 }
30638182fdab7c Xianzhong 2019-01-29 162
30638182fdab7c Xianzhong 2019-01-29 163 static int viv_ioctl_gem_create(struct drm_device *drm, void *data,
30638182fdab7c Xianzhong 2019-01-29 164 struct drm_file *file)
30638182fdab7c Xianzhong 2019-01-29 165 {
30638182fdab7c Xianzhong 2019-01-29 @166 int ret = 0;
30638182fdab7c Xianzhong 2019-01-29 167 struct drm_viv_gem_create *args = (struct drm_viv_gem_create*)data;
30638182fdab7c Xianzhong 2019-01-29 168 struct drm_gem_object *gem_obj = gcvNULL;
30638182fdab7c Xianzhong 2019-01-29 169 struct viv_gem_object *viv_obj = gcvNULL;
30638182fdab7c Xianzhong 2019-01-29 170
30638182fdab7c Xianzhong 2019-01-29 171 gcsHAL_INTERFACE iface;
30638182fdab7c Xianzhong 2019-01-29 172 gckGALDEVICE gal_dev;
30638182fdab7c Xianzhong 2019-01-29 173 gckKERNEL kernel;
30638182fdab7c Xianzhong 2019-01-29 174 gctUINT32 processID;
30638182fdab7c Xianzhong 2019-01-29 175 gckVIDMEM_NODE nodeObject;
30638182fdab7c Xianzhong 2019-01-29 176 gctUINT32 flags = gcvALLOC_FLAG_DMABUF_EXPORTABLE;
30638182fdab7c Xianzhong 2019-01-29 177 gceSTATUS status = gcvSTATUS_OK;
e9371a70921300 Minjie Zhuang 2019-09-23 178 gctUINT64 alignSize = PAGE_ALIGN(args->size);
30638182fdab7c Xianzhong 2019-01-29 179
30638182fdab7c Xianzhong 2019-01-29 180 gal_dev = (gckGALDEVICE)drm->dev_private;
30638182fdab7c Xianzhong 2019-01-29 181 if (!gal_dev)
30638182fdab7c Xianzhong 2019-01-29 182 {
30638182fdab7c Xianzhong 2019-01-29 183 gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT);
30638182fdab7c Xianzhong 2019-01-29 184 }
30638182fdab7c Xianzhong 2019-01-29 185
30638182fdab7c Xianzhong 2019-01-29 186 if (args->flags & DRM_VIV_GEM_CONTIGUOUS)
30638182fdab7c Xianzhong 2019-01-29 187 {
30638182fdab7c Xianzhong 2019-01-29 188 flags |= gcvALLOC_FLAG_CONTIGUOUS;
30638182fdab7c Xianzhong 2019-01-29 189 }
30638182fdab7c Xianzhong 2019-01-29 190 if (args->flags & DRM_VIV_GEM_CACHED)
30638182fdab7c Xianzhong 2019-01-29 191 {
30638182fdab7c Xianzhong 2019-01-29 192 flags |= gcvALLOC_FLAG_CACHEABLE;
30638182fdab7c Xianzhong 2019-01-29 193 }
30638182fdab7c Xianzhong 2019-01-29 194 if (args->flags & DRM_VIV_GEM_SECURE)
30638182fdab7c Xianzhong 2019-01-29 195 {
30638182fdab7c Xianzhong 2019-01-29 196 flags |= gcvALLOC_FLAG_SECURITY;
30638182fdab7c Xianzhong 2019-01-29 197 }
30638182fdab7c Xianzhong 2019-01-29 198 if (args->flags & DRM_VIV_GEM_CMA_LIMIT)
30638182fdab7c Xianzhong 2019-01-29 199 {
30638182fdab7c Xianzhong 2019-01-29 200 flags |= gcvALLOC_FLAG_CMA_LIMIT;
30638182fdab7c Xianzhong 2019-01-29 201 }
30638182fdab7c Xianzhong 2019-01-29 202
30638182fdab7c Xianzhong 2019-01-29 203 gckOS_ZeroMemory(&iface, sizeof(iface));
30638182fdab7c Xianzhong 2019-01-29 204 iface.command = gcvHAL_ALLOCATE_LINEAR_VIDEO_MEMORY;
30638182fdab7c Xianzhong 2019-01-29 205 iface.hardwareType = gal_dev->device->defaultHwType;
e9371a70921300 Minjie Zhuang 2019-09-23 206 iface.u.AllocateLinearVideoMemory.bytes = alignSize;
30638182fdab7c Xianzhong 2019-01-29 207 iface.u.AllocateLinearVideoMemory.alignment = 256;
e9371a70921300 Minjie Zhuang 2019-09-23 208 iface.u.AllocateLinearVideoMemory.type = gcvVIDMEM_TYPE_GENERIC;
30638182fdab7c Xianzhong 2019-01-29 209 iface.u.AllocateLinearVideoMemory.flag = flags;
e9371a70921300 Minjie Zhuang 2019-09-23 210 iface.u.AllocateLinearVideoMemory.pool = gcvPOOL_DEFAULT;
30638182fdab7c Xianzhong 2019-01-29 211 gcmkONERROR(gckDEVICE_Dispatch(gal_dev->device, &iface));
30638182fdab7c Xianzhong 2019-01-29 212
30638182fdab7c Xianzhong 2019-01-29 213 kernel = gal_dev->device->map[gal_dev->device->defaultHwType].kernels[0];
30638182fdab7c Xianzhong 2019-01-29 214 gcmkONERROR(gckOS_GetProcessID(&processID));
30638182fdab7c Xianzhong 2019-01-29 215 gcmkONERROR(gckVIDMEM_HANDLE_Lookup(kernel, processID, iface.u.AllocateLinearVideoMemory.node, &nodeObject));
30638182fdab7c Xianzhong 2019-01-29 216
30638182fdab7c Xianzhong 2019-01-29 217 /* ioctl output */
30638182fdab7c Xianzhong 2019-01-29 218 gem_obj = kzalloc(sizeof(struct viv_gem_object), GFP_KERNEL);
e9371a70921300 Minjie Zhuang 2019-09-23 219 drm_gem_private_object_init(drm, gem_obj, (size_t)alignSize);
30638182fdab7c Xianzhong 2019-01-29 220 ret = drm_gem_handle_create(file, gem_obj, &args->handle);
30638182fdab7c Xianzhong 2019-01-29 221
30638182fdab7c Xianzhong 2019-01-29 222 viv_obj = container_of(gem_obj, struct viv_gem_object, base);
30638182fdab7c Xianzhong 2019-01-29 223 viv_obj->node_handle = iface.u.AllocateLinearVideoMemory.node;
30638182fdab7c Xianzhong 2019-01-29 224 viv_obj->node_object = nodeObject;
30638182fdab7c Xianzhong 2019-01-29 225 viv_obj->cacheable = flags & gcvALLOC_FLAG_CACHEABLE;
30638182fdab7c Xianzhong 2019-01-29 226
30638182fdab7c Xianzhong 2019-01-29 227 /* drop reference from allocate - handle holds it now */
30638182fdab7c Xianzhong 2019-01-29 228 drm_gem_object_unreference_unlocked(gem_obj);
30638182fdab7c Xianzhong 2019-01-29 229
30638182fdab7c Xianzhong 2019-01-29 230 OnError:
30638182fdab7c Xianzhong 2019-01-29 231 return gcmIS_ERROR(status) ? -ENOTTY : 0;
30638182fdab7c Xianzhong 2019-01-29 232 }
30638182fdab7c Xianzhong 2019-01-29 233
:::::: The code at line 79 was first introduced by commit
:::::: 9821cda5105e7d6bf026a4f21f927745a3f6b931 MA-16168 [#imx-1903] Fix GPU driver build error and not work issue on 5.4 kernel
:::::: TO: Richard Liu <xuegang.liu@nxp.com>
:::::: CC: Xianzhong <xianzhong.li@nxp.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 50147 bytes --]
reply other threads:[~2021-08-17 12:27 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202108172018.ucTOwgCC-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.