[freescale-fslc:pr/296 15408/17782] drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c:79:17: error: no previous prototype for 'viv_gem_prime_export'
by kernel test robot
Hi Xianzhong,
FYI, the error/warning still remains.
tree: https://github.com/Freescale/linux-fslc pr/296
head: bf2acf9f711d9c0ffcee228f6772f4c00be626b8
commit: 0cbc4419bd2f810d1689d81f24884bb527bbe5fd [15408/17782] MGS-4929 [#imx-2382] enable vivante drm for linux build
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.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/0cbc4419bd2f810d1689d81f24...
git remote add freescale-fslc https://github.com/Freescale/linux-fslc
git fetch --no-tags freescale-fslc pr/296
git checkout 0cbc4419bd2f810d1689d81f24884bb527bbe5fd
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)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(a)nxp.com>
:::::: CC: Xianzhong <xianzhong.li(a)nxp.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1948:12: warning: stack frame size of 1048 bytes in function 'stmmac_tx_clean'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 84196390620ac0e5070ae36af84c137c6216a7dc
commit: aa042f60e4961d4bec57e3268624df1f3a6befa4 net: stmmac: Add support to Ethtool get/set ring parameters
date: 6 months ago
config: mips-randconfig-r023-20210322 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 14696baaf4c43fe53f738bc292bbe169eed93d5d)
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
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout aa042f60e4961d4bec57e3268624df1f3a6befa4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3677:12: warning: stack frame size of 1664 bytes in function 'stmmac_rx' [-Wframe-larger-than=]
static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
^
>> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1948:12: warning: stack frame size of 1048 bytes in function 'stmmac_tx_clean' [-Wframe-larger-than=]
static int stmmac_tx_clean(struct stmmac_priv *priv, int budget, u32 queue)
^
2 warnings generated.
vim +/stmmac_tx_clean +1948 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1941
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1942 /**
732fdf0e5253e9 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2014-11-18 1943 * stmmac_tx_clean - to manage the transmission completion
32ceabcad3c8ab drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2013-04-08 1944 * @priv: driver private structure
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 1945 * @queue: TX queue index
732fdf0e5253e9 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2014-11-18 1946 * Description: it reclaims the transmit resources after transmission completes.
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1947 */
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 @1948 static int stmmac_tx_clean(struct stmmac_priv *priv, int budget, u32 queue)
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1949 {
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 1950 struct stmmac_tx_queue *tx_q = &priv->tx_queue[queue];
3897957494d979 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Beniamino Galvani 2015-01-21 1951 unsigned int bytes_compl = 0, pkts_compl = 0;
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 1952 unsigned int entry, count = 0;
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1953
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 1954 __netif_tx_lock_bh(netdev_get_tx_queue(priv->dev, queue));
a9097a9666fd7b drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2011-10-18 1955
9125cdd1be1199 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2012-11-25 1956 priv->xstats.tx_clean++;
9125cdd1be1199 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2012-11-25 1957
8d5f4b07174976 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Bernd Edlinger 2017-10-21 1958 entry = tx_q->dirty_tx;
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 1959 while ((entry != tx_q->cur_tx) && (count < budget)) {
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 1960 struct sk_buff *skb = tx_q->tx_skbuff[entry];
c24602ef866493 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2013-03-26 1961 struct dma_desc *p;
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1962 int status;
c24602ef866493 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2013-03-26 1963
c24602ef866493 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2013-03-26 1964 if (priv->extend_desc)
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 1965 p = (struct dma_desc *)(tx_q->dma_etx + entry);
579a25a854d482 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2020-01-13 1966 else if (tx_q->tbs & STMMAC_TBS_AVAIL)
579a25a854d482 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2020-01-13 1967 p = &tx_q->dma_entx[entry].basic;
c24602ef866493 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2013-03-26 1968 else
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 1969 p = tx_q->dma_tx + entry;
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1970
42de047d60bc5d drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-04-16 1971 status = stmmac_tx_status(priv, &priv->dev->stats,
42de047d60bc5d drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-04-16 1972 &priv->xstats, p, priv->ioaddr);
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1973 /* Check if the descriptor is owned by the DMA */
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1974 if (unlikely(status & tx_dma_own))
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1975 break;
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1976
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 1977 count++;
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 1978
a6b25da5e7ba21 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Niklas Cassel 2018-02-26 1979 /* Make sure descriptor fields are read after reading
a6b25da5e7ba21 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Niklas Cassel 2018-02-26 1980 * the own bit.
a6b25da5e7ba21 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Niklas Cassel 2018-02-26 1981 */
a6b25da5e7ba21 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Niklas Cassel 2018-02-26 1982 dma_rmb();
a6b25da5e7ba21 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Niklas Cassel 2018-02-26 1983
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1984 /* Just consider the last segment and ...*/
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1985 if (likely(!(status & tx_not_ls))) {
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1986 /* ... verify the status error condition */
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1987 if (unlikely(status & tx_err)) {
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1988 priv->dev->stats.tx_errors++;
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1989 } else {
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1990 priv->dev->stats.tx_packets++;
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1991 priv->xstats.tx_pkt_n++;
c363b6586cd424 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Fabrice Gasnier 2016-02-29 1992 }
ba1ffd74df74a9 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2016-11-14 1993 stmmac_get_tx_hwtstamp(priv, p, skb);
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1994 }
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 1995
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 1996 if (likely(tx_q->tx_skbuff_dma[entry].buf)) {
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 1997 if (tx_q->tx_skbuff_dma[entry].map_as_page)
362b37be01edc7 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2014-08-27 1998 dma_unmap_page(priv->device,
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 1999 tx_q->tx_skbuff_dma[entry].buf,
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2000 tx_q->tx_skbuff_dma[entry].len,
362b37be01edc7 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2014-08-27 2001 DMA_TO_DEVICE);
362b37be01edc7 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2014-08-27 2002 else
cf32deec16e4e8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Rayagond Kokatanur 2013-03-26 2003 dma_unmap_single(priv->device,
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2004 tx_q->tx_skbuff_dma[entry].buf,
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2005 tx_q->tx_skbuff_dma[entry].len,
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2006 DMA_TO_DEVICE);
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2007 tx_q->tx_skbuff_dma[entry].buf = 0;
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2008 tx_q->tx_skbuff_dma[entry].len = 0;
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2009 tx_q->tx_skbuff_dma[entry].map_as_page = false;
cf32deec16e4e8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Rayagond Kokatanur 2013-03-26 2010 }
f748be531d7012 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Alexandre TORGUE 2016-04-01 2011
2c520b1c9cfa7d drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-04-16 2012 stmmac_clean_desc3(priv, tx_q, p);
f748be531d7012 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Alexandre TORGUE 2016-04-01 2013
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2014 tx_q->tx_skbuff_dma[entry].last_segment = false;
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2015 tx_q->tx_skbuff_dma[entry].is_jumbo = false;
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2016
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2017 if (likely(skb != NULL)) {
3897957494d979 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Beniamino Galvani 2015-01-21 2018 pkts_compl++;
3897957494d979 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Beniamino Galvani 2015-01-21 2019 bytes_compl += skb->len;
7c565c33464798 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Eric W. Biederman 2014-03-15 2020 dev_consume_skb_any(skb);
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2021 tx_q->tx_skbuff[entry] = NULL;
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2022 }
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2023
42de047d60bc5d drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-04-16 2024 stmmac_release_tx_desc(priv, p, priv->mode);
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2025
aa042f60e4961d drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Song, Yoong Siang 2020-09-16 2026 entry = STMMAC_GET_ENTRY(entry, priv->dma_tx_size);
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2027 }
ce736788e8a92c drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2028 tx_q->dirty_tx = entry;
3897957494d979 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Beniamino Galvani 2015-01-21 2029
c22a3f48ef99ea drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2030 netdev_tx_completed_queue(netdev_get_tx_queue(priv->dev, queue),
c22a3f48ef99ea drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2031 pkts_compl, bytes_compl);
c22a3f48ef99ea drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2032
c22a3f48ef99ea drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2033 if (unlikely(netif_tx_queue_stopped(netdev_get_tx_queue(priv->dev,
c22a3f48ef99ea drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2034 queue))) &&
aa042f60e4961d drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Song, Yoong Siang 2020-09-16 2035 stmmac_tx_avail(priv, queue) > STMMAC_TX_THRESH(priv)) {
3897957494d979 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Beniamino Galvani 2015-01-21 2036
b3e51069627e2b drivers/net/ethernet/stmicro/stmmac/stmmac_main.c LABBE Corentin 2016-11-16 2037 netif_dbg(priv, tx_done, priv->dev,
b3e51069627e2b drivers/net/ethernet/stmicro/stmmac/stmmac_main.c LABBE Corentin 2016-11-16 2038 "%s: restart transmit\n", __func__);
c22a3f48ef99ea drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Joao Pinto 2017-04-06 2039 netif_tx_wake_queue(netdev_get_tx_queue(priv->dev, queue));
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2040 }
d765955d2ae0b8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2012-06-27 2041
d765955d2ae0b8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2012-06-27 2042 if ((priv->eee_enabled) && (!priv->tx_path_in_lpi_mode)) {
d765955d2ae0b8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2012-06-27 2043 stmmac_enable_eee_mode(priv);
f5351ef73e476d drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2013-06-18 2044 mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(eee_timer));
d765955d2ae0b8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Giuseppe CAVALLARO 2012-06-27 2045 }
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 2046
4ccb45857c2c07 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2019-02-19 2047 /* We still have pending packets, let's call for a new scheduling */
4ccb45857c2c07 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2019-02-19 2048 if (tx_q->dirty_tx != tx_q->cur_tx)
3755b21b04b096 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2019-12-18 2049 mod_timer(&tx_q->txtimer, STMMAC_COAL_TIMER(priv->tx_coal_timer));
4ccb45857c2c07 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2019-02-19 2050
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 2051 __netif_tx_unlock_bh(netdev_get_tx_queue(priv->dev, queue));
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 2052
8fce3331702316 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c Jose Abreu 2018-09-17 2053 return count;
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2054 }
47dd7a540b8a0c drivers/net/stmmac/stmmac_main.c Giuseppe Cavallaro 2009-10-14 2055
:::::: The code at line 1948 was first introduced by commit
:::::: 8fce3331702316d4bcfeb0771c09ac75d2192bbc net: stmmac: Rework coalesce timer and fix multi-queue races
:::::: TO: Jose Abreu <Jose.Abreu(a)synopsys.com>
:::::: CC: David S. Miller <davem(a)davemloft.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
[linux-next:master 4765/6512] drivers/iommu/sprd-iommu.c:456:42: sparse: sparse: Using plain integer as NULL pointer
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: d949689e7383cd5271470f2b99dbe2fd3199bffd
commit: b23e4fc4e3faed0b8b604079c44a244da3ec941a [4765/6512] iommu: add Unisoc IOMMU basic driver
config: m68k-randconfig-s032-20210323 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-277-gc089cd2d-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commi...
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout b23e4fc4e3faed0b8b604079c44a244da3ec941a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/iommu/sprd-iommu.c:456:42: sparse: sparse: Using plain integer as NULL pointer
drivers/iommu/sprd-iommu.c: note: in included file (through arch/m68k/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:299:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int volatile [usertype] @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:299:9: sparse: expected unsigned int volatile [usertype]
include/asm-generic/io.h:299:9: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:299:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int volatile [usertype] @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:299:9: sparse: expected unsigned int volatile [usertype]
include/asm-generic/io.h:299:9: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:299:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int volatile [usertype] @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:299:9: sparse: expected unsigned int volatile [usertype]
include/asm-generic/io.h:299:9: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:299:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int volatile [usertype] @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:299:9: sparse: expected unsigned int volatile [usertype]
include/asm-generic/io.h:299:9: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:299:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int volatile [usertype] @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:299:9: sparse: expected unsigned int volatile [usertype]
include/asm-generic/io.h:299:9: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:299:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int volatile [usertype] @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:299:9: sparse: expected unsigned int volatile [usertype]
include/asm-generic/io.h:299:9: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:299:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int volatile [usertype] @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:299:9: sparse: expected unsigned int volatile [usertype]
include/asm-generic/io.h:299:9: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:299:9: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int volatile [usertype] @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:299:9: sparse: expected unsigned int volatile [usertype]
include/asm-generic/io.h:299:9: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:267:16: sparse: sparse: cast to restricted __le32
vim +456 drivers/iommu/sprd-iommu.c
446
447 /*
448 * Clock is not required, access to some of IOMMUs is controlled by gate
449 * clk, enabled clocks for that kind of IOMMUs before accessing.
450 * Return 0 for success or no clocks found.
451 */
452 static int sprd_iommu_clk_enable(struct sprd_iommu_device *sdev)
453 {
454 struct clk *eb;
455
> 456 eb = clk_get_optional(sdev->dev, 0);
457 if (!eb)
458 return 0;
459
460 if (IS_ERR(eb))
461 return PTR_ERR(eb);
462
463 sdev->eb = eb;
464 return clk_prepare_enable(eb);
465 }
466
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
[freescale-fslc:pr/296 12427/17782] drivers/usb/dwc3/core.c:340: undefined reference to `__udivdi3'
by kernel test robot
tree: https://github.com/Freescale/linux-fslc pr/296
head: bf2acf9f711d9c0ffcee228f6772f4c00be626b8
commit: fef46455683f097673cd4eef816b185baf141dce [12427/17782] MLK-24206-3 usb: dwc3: core: add fladj setting if SOFITPSYNC used
config: i386-randconfig-a003-20210322 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/Freescale/linux-fslc/commit/fef46455683f097673cd4eef81...
git remote add freescale-fslc https://github.com/Freescale/linux-fslc
git fetch --no-tags freescale-fslc pr/296
git checkout fef46455683f097673cd4eef816b185baf141dce
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
ld: drivers/usb/dwc3/core.o: in function `dwc3_frame_length_adjustment':
>> drivers/usb/dwc3/core.c:340: undefined reference to `__udivdi3'
>> ld: drivers/usb/dwc3/core.c:341: undefined reference to `__udivdi3'
ld: drivers/usb/cdns3/gadget.o: in function `cdns3_ep_run_transfer':
drivers/usb/cdns3/gadget.c:752: undefined reference to `__udivdi3'
ld: drivers/usb/cdns3/gadget.o: in function `cdns3_request_handled':
drivers/usb/cdns3/gadget.c:889: undefined reference to `__udivdi3'
vim +340 drivers/usb/dwc3/core.c
304
305 /*
306 * dwc3_frame_length_adjustment - Adjusts frame length if required
307 * @dwc3: Pointer to our controller context structure
308 */
309 static void dwc3_frame_length_adjustment(struct dwc3 *dwc)
310 {
311 u32 reg;
312 u32 dft;
313
314 /*
315 * if GCTL.SOFITPSYNC is set to '1':
316 * FLADJ_REF_CLK_FLADJ=
317 * ((125000/ref_clk_period_integer)-(125000/ref_clk_period)) *
318 * ref_clk_period
319 * where
320 * - the ref_clk_period_integer is the integer value of
321 * the ref_clk period got by truncating the decimal (fractional)
322 * value that is programmed in the GUCTL.REF_CLK_PERIOD field.
323 * - the ref_clk_period is the ref_clk period including the fractional
324 * value.
325 */
326 if (dwc->soft_itp_sync_quirk) {
327 u32 ref_clk_hz, ref_clk_period_integer;
328 u64 temp;
329
330 reg = dwc3_readl(dwc->regs, DWC3_GFLADJ);
331 ref_clk_hz = clk_get_rate(dwc->clks[0].clk);
332 if (ref_clk_hz == 0) {
333 dev_err(dwc->dev, "ref clk is 0, can't set fladj\n");
334 return;
335 }
336
337 /* nano seconds the period of ref_clk */
338 ref_clk_period_integer = 1000000000 / ref_clk_hz;
339 temp = 125000L * 1000000000L;
> 340 temp = temp / ref_clk_hz;
> 341 temp = temp / ref_clk_period_integer;
342 temp = temp - 125000;
343 temp = temp << GFLADJ_REFCLK_FLADJ_SHIFT;
344 reg &= ~GFLADJ_REFCLK_FLADJ_MASK;
345 reg |= temp;
346 dwc3_writel(dwc->regs, DWC3_GFLADJ, reg);
347
348 reg = dwc3_readl(dwc->regs, DWC3_GUCTL);
349 reg &= ~DWC3_GUCTL_REFCLKPER_MASK;
350 reg |= ref_clk_period_integer << DWC3_GUCTL_REFCLKPER_SHIFT;
351 dwc3_writel(dwc->regs, DWC3_GUCTL, reg);
352 }
353
354 if (dwc->revision < DWC3_REVISION_250A)
355 return;
356
357 if (dwc->fladj == 0)
358 return;
359
360 reg = dwc3_readl(dwc->regs, DWC3_GFLADJ);
361 dft = reg & DWC3_GFLADJ_30MHZ_MASK;
362 if (dft != dwc->fladj) {
363 reg &= ~DWC3_GFLADJ_30MHZ_MASK;
364 reg |= DWC3_GFLADJ_30MHZ_SDBND_SEL | dwc->fladj;
365 dwc3_writel(dwc->regs, DWC3_GFLADJ, reg);
366 }
367 }
368
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
fs/buffer.c:2259:5: warning: stack frame size of 2144 bytes in function 'block_read_full_page'
by kernel test robot
Hi Christophe,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 84196390620ac0e5070ae36af84c137c6216a7dc
commit: 4eeef098b43242ed145c83fba9989d586d707589 powerpc/44x: Remove STDBINUTILS kconfig option
date: 7 weeks ago
config: powerpc64-randconfig-r036-20210322 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 14696baaf4c43fe53f738bc292bbe169eed93d5d)
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
# install powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 4eeef098b43242ed145c83fba9989d586d707589
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> fs/buffer.c:2259:5: warning: stack frame size of 2144 bytes in function 'block_read_full_page' [-Wframe-larger-than=]
int block_read_full_page(struct page *page, get_block_t *get_block)
^
1 warning generated.
--
>> fs/ext4/move_extent.c:247:1: warning: stack frame size of 2240 bytes in function 'move_extent_per_page' [-Wframe-larger-than=]
move_extent_per_page(struct file *o_filp, struct inode *donor_inode,
^
1 warning generated.
--
>> fs/fat/dir.c:1133:5: warning: stack frame size of 2112 bytes in function 'fat_alloc_new_dir' [-Wframe-larger-than=]
int fat_alloc_new_dir(struct inode *dir, struct timespec64 *ts)
^
>> fs/fat/dir.c:1281:5: warning: stack frame size of 2224 bytes in function 'fat_add_entries' [-Wframe-larger-than=]
int fat_add_entries(struct inode *dir, void *slots, int nr_slots,
^
2 warnings generated.
--
>> fs/fat/fatent.c:464:5: warning: stack frame size of 2240 bytes in function 'fat_alloc_clusters' [-Wframe-larger-than=]
int fat_alloc_clusters(struct inode *inode, int *cluster, int nr_cluster)
^
>> fs/fat/fatent.c:552:5: warning: stack frame size of 2176 bytes in function 'fat_free_clusters' [-Wframe-larger-than=]
int fat_free_clusters(struct inode *inode, int cluster)
^
2 warnings generated.
--
>> fs/ntfs/aops.c:378:12: warning: stack frame size of 2208 bytes in function 'ntfs_readpage' [-Wframe-larger-than=]
static int ntfs_readpage(struct file *file, struct page *page)
^
fs/ntfs/aops.c:899:12: warning: stack frame size of 4320 bytes in function 'ntfs_write_mst_block' [-Wframe-larger-than=]
static int ntfs_write_mst_block(struct page *page,
^
2 warnings generated.
--
>> fs/ntfs/mft.c:454:5: warning: stack frame size of 2192 bytes in function 'ntfs_sync_mft_mirror' [-Wframe-larger-than=]
int ntfs_sync_mft_mirror(ntfs_volume *vol, const unsigned long mft_no,
^
>> fs/ntfs/mft.c:660:5: warning: stack frame size of 2192 bytes in function 'write_mft_record_nolock' [-Wframe-larger-than=]
int write_mft_record_nolock(ntfs_inode *ni, MFT_RECORD *m, int sync)
^
2 warnings generated.
vim +/block_read_full_page +2259 fs/buffer.c
8ab22b9abb5c55 Hisashi Hifumi 2008-07-28 2251
^1da177e4c3f41 Linus Torvalds 2005-04-16 2252 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 2253 * Generic "read page" function for block devices that have the normal
^1da177e4c3f41 Linus Torvalds 2005-04-16 2254 * get_block functionality. This is most of the block device filesystems.
^1da177e4c3f41 Linus Torvalds 2005-04-16 2255 * Reads the page asynchronously --- the unlock_buffer() and
^1da177e4c3f41 Linus Torvalds 2005-04-16 2256 * set/clear_buffer_uptodate() functions propagate buffer state into the
^1da177e4c3f41 Linus Torvalds 2005-04-16 2257 * page struct once IO has completed.
^1da177e4c3f41 Linus Torvalds 2005-04-16 2258 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 @2259 int block_read_full_page(struct page *page, get_block_t *get_block)
^1da177e4c3f41 Linus Torvalds 2005-04-16 2260 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 2261 struct inode *inode = page->mapping->host;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2262 sector_t iblock, lblock;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2263 struct buffer_head *bh, *head, *arr[MAX_BUF_PER_PAGE];
45bce8f3e3436b Linus Torvalds 2012-11-29 2264 unsigned int blocksize, bbits;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2265 int nr, i;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2266 int fully_mapped = 1;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2267
45bce8f3e3436b Linus Torvalds 2012-11-29 2268 head = create_page_buffers(page, inode, 0);
45bce8f3e3436b Linus Torvalds 2012-11-29 2269 blocksize = head->b_size;
45bce8f3e3436b Linus Torvalds 2012-11-29 2270 bbits = block_size_bits(blocksize);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2271
09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 2272 iblock = (sector_t)page->index << (PAGE_SHIFT - bbits);
45bce8f3e3436b Linus Torvalds 2012-11-29 2273 lblock = (i_size_read(inode)+blocksize-1) >> bbits;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2274 bh = head;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2275 nr = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2276 i = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2277
^1da177e4c3f41 Linus Torvalds 2005-04-16 2278 do {
^1da177e4c3f41 Linus Torvalds 2005-04-16 2279 if (buffer_uptodate(bh))
^1da177e4c3f41 Linus Torvalds 2005-04-16 2280 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2281
^1da177e4c3f41 Linus Torvalds 2005-04-16 2282 if (!buffer_mapped(bh)) {
c64610ba585fab Andrew Morton 2005-05-16 2283 int err = 0;
c64610ba585fab Andrew Morton 2005-05-16 2284
^1da177e4c3f41 Linus Torvalds 2005-04-16 2285 fully_mapped = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2286 if (iblock < lblock) {
b0cf2321c65991 Badari Pulavarty 2006-03-26 2287 WARN_ON(bh->b_size != blocksize);
c64610ba585fab Andrew Morton 2005-05-16 2288 err = get_block(inode, iblock, bh, 0);
c64610ba585fab Andrew Morton 2005-05-16 2289 if (err)
^1da177e4c3f41 Linus Torvalds 2005-04-16 2290 SetPageError(page);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2291 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 2292 if (!buffer_mapped(bh)) {
eebd2aa355692a Christoph Lameter 2008-02-04 2293 zero_user(page, i * blocksize, blocksize);
c64610ba585fab Andrew Morton 2005-05-16 2294 if (!err)
^1da177e4c3f41 Linus Torvalds 2005-04-16 2295 set_buffer_uptodate(bh);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2296 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2297 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 2298 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 2299 * get_block() might have updated the buffer
^1da177e4c3f41 Linus Torvalds 2005-04-16 2300 * synchronously
^1da177e4c3f41 Linus Torvalds 2005-04-16 2301 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 2302 if (buffer_uptodate(bh))
^1da177e4c3f41 Linus Torvalds 2005-04-16 2303 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2304 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 2305 arr[nr++] = bh;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2306 } while (i++, iblock++, (bh = bh->b_this_page) != head);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2307
^1da177e4c3f41 Linus Torvalds 2005-04-16 2308 if (fully_mapped)
^1da177e4c3f41 Linus Torvalds 2005-04-16 2309 SetPageMappedToDisk(page);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2310
^1da177e4c3f41 Linus Torvalds 2005-04-16 2311 if (!nr) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 2312 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 2313 * All buffers are uptodate - we can set the page uptodate
^1da177e4c3f41 Linus Torvalds 2005-04-16 2314 * as well. But not if get_block() returned an error.
^1da177e4c3f41 Linus Torvalds 2005-04-16 2315 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 2316 if (!PageError(page))
^1da177e4c3f41 Linus Torvalds 2005-04-16 2317 SetPageUptodate(page);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2318 unlock_page(page);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2319 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2320 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 2321
^1da177e4c3f41 Linus Torvalds 2005-04-16 2322 /* Stage two: lock the buffers */
^1da177e4c3f41 Linus Torvalds 2005-04-16 2323 for (i = 0; i < nr; i++) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 2324 bh = arr[i];
^1da177e4c3f41 Linus Torvalds 2005-04-16 2325 lock_buffer(bh);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2326 mark_buffer_async_read(bh);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2327 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 2328
^1da177e4c3f41 Linus Torvalds 2005-04-16 2329 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 2330 * Stage 3: start the IO. Check for uptodateness
^1da177e4c3f41 Linus Torvalds 2005-04-16 2331 * inside the buffer lock in case another process reading
^1da177e4c3f41 Linus Torvalds 2005-04-16 2332 * the underlying blockdev brought it uptodate (the sct fix).
^1da177e4c3f41 Linus Torvalds 2005-04-16 2333 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 2334 for (i = 0; i < nr; i++) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 2335 bh = arr[i];
^1da177e4c3f41 Linus Torvalds 2005-04-16 2336 if (buffer_uptodate(bh))
^1da177e4c3f41 Linus Torvalds 2005-04-16 2337 end_buffer_async_read(bh, 1);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2338 else
2a222ca992c35a Mike Christie 2016-06-05 2339 submit_bh(REQ_OP_READ, 0, bh);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2340 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 2341 return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2342 }
1fe72eaa0f46a0 H Hartley Sweeten 2009-09-22 2343 EXPORT_SYMBOL(block_read_full_page);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2344
:::::: The code at line 2259 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds(a)ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds(a)ppc970.osdl.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
drivers/opp/of.c:959:12: warning: stack frame size of 1056 bytes in function '_of_add_table_indexed'
by kernel test robot
Hi Viresh,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 84196390620ac0e5070ae36af84c137c6216a7dc
commit: 406e47652161d4f0d9bc4cd6237b36c51497ec75 opp: Create _of_add_table_indexed() to reduce code duplication
date: 7 weeks ago
config: powerpc64-randconfig-r023-20210323 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 14696baaf4c43fe53f738bc292bbe169eed93d5d)
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
# install powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 406e47652161d4f0d9bc4cd6237b36c51497ec75
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> drivers/opp/of.c:959:12: warning: stack frame size of 1056 bytes in function '_of_add_table_indexed' [-Wframe-larger-than=]
static int _of_add_table_indexed(struct device *dev, int index)
^
1 warning generated.
vim +/_of_add_table_indexed +959 drivers/opp/of.c
958
> 959 static int _of_add_table_indexed(struct device *dev, int index)
960 {
961 struct opp_table *opp_table;
962 int ret, count;
963
964 if (index) {
965 /*
966 * If only one phandle is present, then the same OPP table
967 * applies for all index requests.
968 */
969 count = of_count_phandle_with_args(dev->of_node,
970 "operating-points-v2", NULL);
971 if (count == 1)
972 index = 0;
973 }
974
975 opp_table = _add_opp_table_indexed(dev, index);
976 if (IS_ERR(opp_table))
977 return PTR_ERR(opp_table);
978
979 /*
980 * OPPs have two version of bindings now. Also try the old (v1)
981 * bindings for backward compatibility with older dtbs.
982 */
983 if (opp_table->np)
984 ret = _of_add_opp_table_v2(dev, opp_table);
985 else
986 ret = _of_add_opp_table_v1(dev, opp_table);
987
988 if (ret)
989 dev_pm_opp_put_opp_table(opp_table);
990
991 return ret;
992 }
993
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
drivers/net/ethernet/chelsio/cxgb4/sge.c:2396:13: warning: stack frame size of 1168 bytes in function 'ethofld_xmit'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 84196390620ac0e5070ae36af84c137c6216a7dc
commit: 97e4910232fa1f81e806aa60c25a0450276d99a2 linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP*
date: 9 days ago
config: mips-randconfig-r023-20210322 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 78a65cd945d006ff02f9d24d9cc20a302ed93b08)
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
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 97e4910232fa1f81e806aa60c25a0450276d99a2
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/net/ethernet/chelsio/cxgb4/sge.c:814:28: warning: unused function 'calc_tx_descs' [-Wunused-function]
static inline unsigned int calc_tx_descs(const struct sk_buff *skb,
^
>> drivers/net/ethernet/chelsio/cxgb4/sge.c:2396:13: warning: stack frame size of 1168 bytes in function 'ethofld_xmit' [-Wframe-larger-than=]
static void ethofld_xmit(struct net_device *dev, struct sge_eosw_txq *eosw_txq)
^
2 warnings generated.
vim +/ethofld_xmit +2396 drivers/net/ethernet/chelsio/cxgb4/sge.c
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2395
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 @2396 static void ethofld_xmit(struct net_device *dev, struct sge_eosw_txq *eosw_txq)
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2397 {
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2398 struct sk_buff *skb;
4f1d97262d58e0 Rahul Lakkireddy 2020-05-15 2399 int pktcount, ret;
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2400
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2401 switch (eosw_txq->state) {
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2402 case CXGB4_EO_STATE_ACTIVE:
0e395b3cb1fb82 Rahul Lakkireddy 2019-11-07 2403 case CXGB4_EO_STATE_FLOWC_OPEN_SEND:
0e395b3cb1fb82 Rahul Lakkireddy 2019-11-07 2404 case CXGB4_EO_STATE_FLOWC_CLOSE_SEND:
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2405 pktcount = eosw_txq->pidx - eosw_txq->last_pidx;
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2406 if (pktcount < 0)
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2407 pktcount += eosw_txq->ndesc;
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2408 break;
0e395b3cb1fb82 Rahul Lakkireddy 2019-11-07 2409 case CXGB4_EO_STATE_FLOWC_OPEN_REPLY:
0e395b3cb1fb82 Rahul Lakkireddy 2019-11-07 2410 case CXGB4_EO_STATE_FLOWC_CLOSE_REPLY:
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2411 case CXGB4_EO_STATE_CLOSED:
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2412 default:
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2413 return;
272630feb4c0d2 Rahul Lakkireddy 2019-11-19 2414 }
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2415
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2416 while (pktcount--) {
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2417 skb = eosw_txq_peek(eosw_txq);
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2418 if (!skb) {
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2419 eosw_txq_advance_index(&eosw_txq->last_pidx, 1,
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2420 eosw_txq->ndesc);
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2421 continue;
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2422 }
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2423
4f1d97262d58e0 Rahul Lakkireddy 2020-05-15 2424 ret = ethofld_hard_xmit(dev, eosw_txq);
4f1d97262d58e0 Rahul Lakkireddy 2020-05-15 2425 if (ret)
4f1d97262d58e0 Rahul Lakkireddy 2020-05-15 2426 break;
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2427 }
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2428 }
4846d5330dafc8 Rahul Lakkireddy 2019-11-07 2429
:::::: The code at line 2396 was first introduced by commit
:::::: 4846d5330dafc82990be7ffe1d1b383157268bd9 cxgb4: add Tx and Rx path for ETHOFLD traffic
:::::: TO: Rahul Lakkireddy <rahul.lakkireddy(a)chelsio.com>
:::::: CC: David S. Miller <davem(a)davemloft.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
drivers/net/wan/fsl_ucc_hdlc.c:305:57: sparse: sparse: incorrect type in argument 2 (different address spaces)
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 84196390620ac0e5070ae36af84c137c6216a7dc
commit: 894fa235eb4ca0bfa692dbe4932c2f940cdc8c1e powerpc: inline iomap accessors
date: 4 months ago
config: powerpc64-randconfig-s032-20210323 (attached as .config)
compiler: powerpc-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-277-gc089cd2d-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 894fa235eb4ca0bfa692dbe4932c2f940cdc8c1e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/wan/fsl_ucc_hdlc.c:305:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:305:57: sparse: expected void [noderef] __iomem *addr
drivers/net/wan/fsl_ucc_hdlc.c:305:57: sparse: got restricted __be16 *
>> drivers/net/wan/fsl_ucc_hdlc.c:307:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:307:46: sparse: expected void [noderef] __iomem *addr
drivers/net/wan/fsl_ucc_hdlc.c:307:46: sparse: got restricted __be32 *
drivers/net/wan/fsl_ucc_hdlc.c:316:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:316:57: sparse: expected void [noderef] __iomem *addr
drivers/net/wan/fsl_ucc_hdlc.c:316:57: sparse: got restricted __be16 *
drivers/net/wan/fsl_ucc_hdlc.c:318:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:318:46: sparse: expected void [noderef] __iomem *addr
drivers/net/wan/fsl_ucc_hdlc.c:318:46: sparse: got restricted __be32 *
drivers/net/wan/fsl_ucc_hdlc.c:368:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] @@ got restricted __be16 [usertype] @@
drivers/net/wan/fsl_ucc_hdlc.c:368:29: sparse: expected unsigned short [usertype]
drivers/net/wan/fsl_ucc_hdlc.c:368:29: sparse: got restricted __be16 [usertype]
drivers/net/wan/fsl_ucc_hdlc.c:375:36: sparse: sparse: restricted __be16 degrades to integer
drivers/net/wan/fsl_ucc_hdlc.c:398:12: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct qe_bd [noderef] __iomem *bd @@ got struct qe_bd *curtx_bd @@
drivers/net/wan/fsl_ucc_hdlc.c:398:12: sparse: expected struct qe_bd [noderef] __iomem *bd
drivers/net/wan/fsl_ucc_hdlc.c:398:12: sparse: got struct qe_bd *curtx_bd
drivers/net/wan/fsl_ucc_hdlc.c:421:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct qe_bd [noderef] __iomem *[assigned] bd @@ got struct qe_bd *tx_bd_base @@
drivers/net/wan/fsl_ucc_hdlc.c:421:20: sparse: expected struct qe_bd [noderef] __iomem *[assigned] bd
drivers/net/wan/fsl_ucc_hdlc.c:421:20: sparse: got struct qe_bd *tx_bd_base
drivers/net/wan/fsl_ucc_hdlc.c:423:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
drivers/net/wan/fsl_ucc_hdlc.c:423:16: sparse: struct qe_bd [noderef] __iomem *
drivers/net/wan/fsl_ucc_hdlc.c:423:16: sparse: struct qe_bd *
>> drivers/net/wan/fsl_ucc_hdlc.c:458:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:502:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:524:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:548:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:592:67: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:607:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:631:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/wan/fsl_ucc_hdlc.c:631:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/wan/fsl_ucc_hdlc.c:850:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct qe_mux *qe_mux_reg @@ got struct qe_mux [noderef] __iomem * @@
drivers/net/wan/fsl_ucc_hdlc.c:853:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:854:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:857:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:860:37: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const volatile [noderef] __iomem *s @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:865:38: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct qe_mux *qe_mux_reg @@ got struct qe_mux [noderef] __iomem * @@
drivers/net/wan/fsl_ucc_hdlc.c:867:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *d @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:869:40: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:870:40: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:872:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:992:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:994:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:1003:57: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be16 * @@
drivers/net/wan/fsl_ucc_hdlc.c:1005:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got restricted __be32 * @@
drivers/net/wan/fsl_ucc_hdlc.c:408:35: sparse: sparse: dereference of noderef expression
drivers/net/wan/fsl_ucc_hdlc.c:723:29: sparse: sparse: dereference of noderef expression
drivers/net/wan/fsl_ucc_hdlc.c:814:21: sparse: sparse: dereference of noderef expression
drivers/net/wan/fsl_ucc_hdlc.c:1020:29: sparse: sparse: dereference of noderef expression
vim +305 drivers/net/wan/fsl_ucc_hdlc.c
c19b6d246a3562 Zhao Qiang 2016-06-06 77
c19b6d246a3562 Zhao Qiang 2016-06-06 78 static int uhdlc_init(struct ucc_hdlc_private *priv)
c19b6d246a3562 Zhao Qiang 2016-06-06 79 {
c19b6d246a3562 Zhao Qiang 2016-06-06 80 struct ucc_tdm_info *ut_info;
c19b6d246a3562 Zhao Qiang 2016-06-06 81 struct ucc_fast_info *uf_info;
c19b6d246a3562 Zhao Qiang 2016-06-06 82 u32 cecr_subblock;
c19b6d246a3562 Zhao Qiang 2016-06-06 83 u16 bd_status;
c19b6d246a3562 Zhao Qiang 2016-06-06 84 int ret, i;
c19b6d246a3562 Zhao Qiang 2016-06-06 85 void *bd_buffer;
c19b6d246a3562 Zhao Qiang 2016-06-06 86 dma_addr_t bd_dma_addr;
be2e9415f8b366 Rasmus Villemoes 2019-11-28 87 s32 riptr;
be2e9415f8b366 Rasmus Villemoes 2019-11-28 88 s32 tiptr;
c19b6d246a3562 Zhao Qiang 2016-06-06 89 u32 gumr;
c19b6d246a3562 Zhao Qiang 2016-06-06 90
c19b6d246a3562 Zhao Qiang 2016-06-06 91 ut_info = priv->ut_info;
c19b6d246a3562 Zhao Qiang 2016-06-06 92 uf_info = &ut_info->uf_info;
c19b6d246a3562 Zhao Qiang 2016-06-06 93
c19b6d246a3562 Zhao Qiang 2016-06-06 94 if (priv->tsa) {
c19b6d246a3562 Zhao Qiang 2016-06-06 95 uf_info->tsa = 1;
c19b6d246a3562 Zhao Qiang 2016-06-06 96 uf_info->ctsp = 1;
040b7c94e4ec58 David Gounaris 2018-09-03 97 uf_info->cds = 1;
040b7c94e4ec58 David Gounaris 2018-09-03 98 uf_info->ctss = 1;
040b7c94e4ec58 David Gounaris 2018-09-03 99 } else {
040b7c94e4ec58 David Gounaris 2018-09-03 100 uf_info->cds = 0;
040b7c94e4ec58 David Gounaris 2018-09-03 101 uf_info->ctsp = 0;
040b7c94e4ec58 David Gounaris 2018-09-03 102 uf_info->ctss = 0;
c19b6d246a3562 Zhao Qiang 2016-06-06 103 }
067bb938dad61e Holger Brunck 2017-05-17 104
067bb938dad61e Holger Brunck 2017-05-17 105 /* This sets HPM register in CMXUCR register which configures a
067bb938dad61e Holger Brunck 2017-05-17 106 * open drain connected HDLC bus
067bb938dad61e Holger Brunck 2017-05-17 107 */
067bb938dad61e Holger Brunck 2017-05-17 108 if (priv->hdlc_bus)
067bb938dad61e Holger Brunck 2017-05-17 109 uf_info->brkpt_support = 1;
067bb938dad61e Holger Brunck 2017-05-17 110
c19b6d246a3562 Zhao Qiang 2016-06-06 111 uf_info->uccm_mask = ((UCC_HDLC_UCCE_RXB | UCC_HDLC_UCCE_RXF |
c19b6d246a3562 Zhao Qiang 2016-06-06 112 UCC_HDLC_UCCE_TXB) << 16);
c19b6d246a3562 Zhao Qiang 2016-06-06 113
c19b6d246a3562 Zhao Qiang 2016-06-06 114 ret = ucc_fast_init(uf_info, &priv->uccf);
c19b6d246a3562 Zhao Qiang 2016-06-06 115 if (ret) {
c19b6d246a3562 Zhao Qiang 2016-06-06 116 dev_err(priv->dev, "Failed to init uccf.");
c19b6d246a3562 Zhao Qiang 2016-06-06 117 return ret;
c19b6d246a3562 Zhao Qiang 2016-06-06 118 }
c19b6d246a3562 Zhao Qiang 2016-06-06 119
c19b6d246a3562 Zhao Qiang 2016-06-06 120 priv->uf_regs = priv->uccf->uf_regs;
c19b6d246a3562 Zhao Qiang 2016-06-06 121 ucc_fast_disable(priv->uccf, COMM_DIR_RX | COMM_DIR_TX);
c19b6d246a3562 Zhao Qiang 2016-06-06 122
c19b6d246a3562 Zhao Qiang 2016-06-06 123 /* Loopback mode */
c19b6d246a3562 Zhao Qiang 2016-06-06 124 if (priv->loopback) {
c19b6d246a3562 Zhao Qiang 2016-06-06 125 dev_info(priv->dev, "Loopback Mode\n");
54e9e0874938ba Holger Brunck 2017-05-17 126 /* use the same clock when work in loopback */
54e9e0874938ba Holger Brunck 2017-05-17 127 qe_setbrg(ut_info->uf_info.rx_clock, 20000000, 1);
54e9e0874938ba Holger Brunck 2017-05-17 128
c19b6d246a3562 Zhao Qiang 2016-06-06 129 gumr = ioread32be(&priv->uf_regs->gumr);
c19b6d246a3562 Zhao Qiang 2016-06-06 130 gumr |= (UCC_FAST_GUMR_LOOPBACK | UCC_FAST_GUMR_CDS |
c19b6d246a3562 Zhao Qiang 2016-06-06 131 UCC_FAST_GUMR_TCI);
c19b6d246a3562 Zhao Qiang 2016-06-06 132 gumr &= ~(UCC_FAST_GUMR_CTSP | UCC_FAST_GUMR_RSYN);
c19b6d246a3562 Zhao Qiang 2016-06-06 133 iowrite32be(gumr, &priv->uf_regs->gumr);
c19b6d246a3562 Zhao Qiang 2016-06-06 134 }
c19b6d246a3562 Zhao Qiang 2016-06-06 135
c19b6d246a3562 Zhao Qiang 2016-06-06 136 /* Initialize SI */
c19b6d246a3562 Zhao Qiang 2016-06-06 137 if (priv->tsa)
c19b6d246a3562 Zhao Qiang 2016-06-06 138 ucc_tdm_init(priv->utdm, priv->ut_info);
c19b6d246a3562 Zhao Qiang 2016-06-06 139
c19b6d246a3562 Zhao Qiang 2016-06-06 140 /* Write to QE CECR, UCCx channel to Stop Transmission */
c19b6d246a3562 Zhao Qiang 2016-06-06 141 cecr_subblock = ucc_fast_get_qe_cr_subblock(uf_info->ucc_num);
c19b6d246a3562 Zhao Qiang 2016-06-06 142 ret = qe_issue_cmd(QE_STOP_TX, cecr_subblock,
c19b6d246a3562 Zhao Qiang 2016-06-06 143 QE_CR_PROTOCOL_UNSPECIFIED, 0);
c19b6d246a3562 Zhao Qiang 2016-06-06 144
c19b6d246a3562 Zhao Qiang 2016-06-06 145 /* Set UPSMR normal mode (need fixed)*/
c19b6d246a3562 Zhao Qiang 2016-06-06 146 iowrite32be(0, &priv->uf_regs->upsmr);
c19b6d246a3562 Zhao Qiang 2016-06-06 147
067bb938dad61e Holger Brunck 2017-05-17 148 /* hdlc_bus mode */
067bb938dad61e Holger Brunck 2017-05-17 149 if (priv->hdlc_bus) {
067bb938dad61e Holger Brunck 2017-05-17 150 u32 upsmr;
067bb938dad61e Holger Brunck 2017-05-17 151
067bb938dad61e Holger Brunck 2017-05-17 152 dev_info(priv->dev, "HDLC bus Mode\n");
067bb938dad61e Holger Brunck 2017-05-17 153 upsmr = ioread32be(&priv->uf_regs->upsmr);
067bb938dad61e Holger Brunck 2017-05-17 154
067bb938dad61e Holger Brunck 2017-05-17 155 /* bus mode and retransmit enable, with collision window
067bb938dad61e Holger Brunck 2017-05-17 156 * set to 8 bytes
067bb938dad61e Holger Brunck 2017-05-17 157 */
067bb938dad61e Holger Brunck 2017-05-17 158 upsmr |= UCC_HDLC_UPSMR_RTE | UCC_HDLC_UPSMR_BUS |
067bb938dad61e Holger Brunck 2017-05-17 159 UCC_HDLC_UPSMR_CW8;
067bb938dad61e Holger Brunck 2017-05-17 160 iowrite32be(upsmr, &priv->uf_regs->upsmr);
067bb938dad61e Holger Brunck 2017-05-17 161
067bb938dad61e Holger Brunck 2017-05-17 162 /* explicitly disable CDS & CTSP */
067bb938dad61e Holger Brunck 2017-05-17 163 gumr = ioread32be(&priv->uf_regs->gumr);
067bb938dad61e Holger Brunck 2017-05-17 164 gumr &= ~(UCC_FAST_GUMR_CDS | UCC_FAST_GUMR_CTSP);
067bb938dad61e Holger Brunck 2017-05-17 165 /* set automatic sync to explicitly ignore CD signal */
067bb938dad61e Holger Brunck 2017-05-17 166 gumr |= UCC_FAST_GUMR_SYNL_AUTO;
067bb938dad61e Holger Brunck 2017-05-17 167 iowrite32be(gumr, &priv->uf_regs->gumr);
067bb938dad61e Holger Brunck 2017-05-17 168 }
067bb938dad61e Holger Brunck 2017-05-17 169
c19b6d246a3562 Zhao Qiang 2016-06-06 170 priv->rx_ring_size = RX_BD_RING_LEN;
c19b6d246a3562 Zhao Qiang 2016-06-06 171 priv->tx_ring_size = TX_BD_RING_LEN;
c19b6d246a3562 Zhao Qiang 2016-06-06 172 /* Alloc Rx BD */
c19b6d246a3562 Zhao Qiang 2016-06-06 173 priv->rx_bd_base = dma_alloc_coherent(priv->dev,
5b8aad93c52bdd Holger Brunck 2017-05-17 174 RX_BD_RING_LEN * sizeof(struct qe_bd),
c19b6d246a3562 Zhao Qiang 2016-06-06 175 &priv->dma_rx_bd, GFP_KERNEL);
c19b6d246a3562 Zhao Qiang 2016-06-06 176
c19b6d246a3562 Zhao Qiang 2016-06-06 177 if (!priv->rx_bd_base) {
c19b6d246a3562 Zhao Qiang 2016-06-06 178 dev_err(priv->dev, "Cannot allocate MURAM memory for RxBDs\n");
c19b6d246a3562 Zhao Qiang 2016-06-06 179 ret = -ENOMEM;
1efb597d8bf56c Zhao Qiang 2016-07-15 180 goto free_uccf;
c19b6d246a3562 Zhao Qiang 2016-06-06 181 }
c19b6d246a3562 Zhao Qiang 2016-06-06 182
c19b6d246a3562 Zhao Qiang 2016-06-06 183 /* Alloc Tx BD */
c19b6d246a3562 Zhao Qiang 2016-06-06 184 priv->tx_bd_base = dma_alloc_coherent(priv->dev,
5b8aad93c52bdd Holger Brunck 2017-05-17 185 TX_BD_RING_LEN * sizeof(struct qe_bd),
c19b6d246a3562 Zhao Qiang 2016-06-06 186 &priv->dma_tx_bd, GFP_KERNEL);
c19b6d246a3562 Zhao Qiang 2016-06-06 187
c19b6d246a3562 Zhao Qiang 2016-06-06 188 if (!priv->tx_bd_base) {
c19b6d246a3562 Zhao Qiang 2016-06-06 189 dev_err(priv->dev, "Cannot allocate MURAM memory for TxBDs\n");
c19b6d246a3562 Zhao Qiang 2016-06-06 190 ret = -ENOMEM;
1efb597d8bf56c Zhao Qiang 2016-07-15 191 goto free_rx_bd;
c19b6d246a3562 Zhao Qiang 2016-06-06 192 }
c19b6d246a3562 Zhao Qiang 2016-06-06 193
c19b6d246a3562 Zhao Qiang 2016-06-06 194 /* Alloc parameter ram for ucc hdlc */
85deed56032b6c Holger Brunck 2017-05-22 195 priv->ucc_pram_offset = qe_muram_alloc(sizeof(struct ucc_hdlc_param),
c19b6d246a3562 Zhao Qiang 2016-06-06 196 ALIGNMENT_OF_UCC_HDLC_PRAM);
c19b6d246a3562 Zhao Qiang 2016-06-06 197
be2e9415f8b366 Rasmus Villemoes 2019-11-28 198 if (priv->ucc_pram_offset < 0) {
24a24d07d688a4 Colin Ian King 2016-08-28 199 dev_err(priv->dev, "Can not allocate MURAM for hdlc parameter.\n");
c19b6d246a3562 Zhao Qiang 2016-06-06 200 ret = -ENOMEM;
1efb597d8bf56c Zhao Qiang 2016-07-15 201 goto free_tx_bd;
c19b6d246a3562 Zhao Qiang 2016-06-06 202 }
c19b6d246a3562 Zhao Qiang 2016-06-06 203
6396bb221514d2 Kees Cook 2018-06-12 204 priv->rx_skbuff = kcalloc(priv->rx_ring_size,
6396bb221514d2 Kees Cook 2018-06-12 205 sizeof(*priv->rx_skbuff),
c19b6d246a3562 Zhao Qiang 2016-06-06 206 GFP_KERNEL);
c19b6d246a3562 Zhao Qiang 2016-06-06 207 if (!priv->rx_skbuff)
1efb597d8bf56c Zhao Qiang 2016-07-15 208 goto free_ucc_pram;
c19b6d246a3562 Zhao Qiang 2016-06-06 209
6396bb221514d2 Kees Cook 2018-06-12 210 priv->tx_skbuff = kcalloc(priv->tx_ring_size,
6396bb221514d2 Kees Cook 2018-06-12 211 sizeof(*priv->tx_skbuff),
c19b6d246a3562 Zhao Qiang 2016-06-06 212 GFP_KERNEL);
c19b6d246a3562 Zhao Qiang 2016-06-06 213 if (!priv->tx_skbuff)
1efb597d8bf56c Zhao Qiang 2016-07-15 214 goto free_rx_skbuff;
c19b6d246a3562 Zhao Qiang 2016-06-06 215
c19b6d246a3562 Zhao Qiang 2016-06-06 216 priv->skb_curtx = 0;
c19b6d246a3562 Zhao Qiang 2016-06-06 217 priv->skb_dirtytx = 0;
c19b6d246a3562 Zhao Qiang 2016-06-06 218 priv->curtx_bd = priv->tx_bd_base;
c19b6d246a3562 Zhao Qiang 2016-06-06 219 priv->dirty_tx = priv->tx_bd_base;
c19b6d246a3562 Zhao Qiang 2016-06-06 220 priv->currx_bd = priv->rx_bd_base;
c19b6d246a3562 Zhao Qiang 2016-06-06 221 priv->currx_bdnum = 0;
c19b6d246a3562 Zhao Qiang 2016-06-06 222
c19b6d246a3562 Zhao Qiang 2016-06-06 223 /* init parameter base */
c19b6d246a3562 Zhao Qiang 2016-06-06 224 cecr_subblock = ucc_fast_get_qe_cr_subblock(uf_info->ucc_num);
c19b6d246a3562 Zhao Qiang 2016-06-06 225 ret = qe_issue_cmd(QE_ASSIGN_PAGE_TO_DEVICE, cecr_subblock,
c19b6d246a3562 Zhao Qiang 2016-06-06 226 QE_CR_PROTOCOL_UNSPECIFIED, priv->ucc_pram_offset);
c19b6d246a3562 Zhao Qiang 2016-06-06 227
c19b6d246a3562 Zhao Qiang 2016-06-06 228 priv->ucc_pram = (struct ucc_hdlc_param __iomem *)
c19b6d246a3562 Zhao Qiang 2016-06-06 229 qe_muram_addr(priv->ucc_pram_offset);
c19b6d246a3562 Zhao Qiang 2016-06-06 230
c19b6d246a3562 Zhao Qiang 2016-06-06 231 /* Zero out parameter ram */
c19b6d246a3562 Zhao Qiang 2016-06-06 232 memset_io(priv->ucc_pram, 0, sizeof(struct ucc_hdlc_param));
c19b6d246a3562 Zhao Qiang 2016-06-06 233
c19b6d246a3562 Zhao Qiang 2016-06-06 234 /* Alloc riptr, tiptr */
c19b6d246a3562 Zhao Qiang 2016-06-06 235 riptr = qe_muram_alloc(32, 32);
be2e9415f8b366 Rasmus Villemoes 2019-11-28 236 if (riptr < 0) {
c19b6d246a3562 Zhao Qiang 2016-06-06 237 dev_err(priv->dev, "Cannot allocate MURAM mem for Receive internal temp data pointer\n");
c19b6d246a3562 Zhao Qiang 2016-06-06 238 ret = -ENOMEM;
1efb597d8bf56c Zhao Qiang 2016-07-15 239 goto free_tx_skbuff;
c19b6d246a3562 Zhao Qiang 2016-06-06 240 }
c19b6d246a3562 Zhao Qiang 2016-06-06 241
c19b6d246a3562 Zhao Qiang 2016-06-06 242 tiptr = qe_muram_alloc(32, 32);
be2e9415f8b366 Rasmus Villemoes 2019-11-28 243 if (tiptr < 0) {
c19b6d246a3562 Zhao Qiang 2016-06-06 244 dev_err(priv->dev, "Cannot allocate MURAM mem for Transmit internal temp data pointer\n");
c19b6d246a3562 Zhao Qiang 2016-06-06 245 ret = -ENOMEM;
1efb597d8bf56c Zhao Qiang 2016-07-15 246 goto free_riptr;
c19b6d246a3562 Zhao Qiang 2016-06-06 247 }
148587a59f6b85 Rasmus Villemoes 2019-11-28 248 if (riptr != (u16)riptr || tiptr != (u16)tiptr) {
148587a59f6b85 Rasmus Villemoes 2019-11-28 249 dev_err(priv->dev, "MURAM allocation out of addressable range\n");
148587a59f6b85 Rasmus Villemoes 2019-11-28 250 ret = -ENOMEM;
148587a59f6b85 Rasmus Villemoes 2019-11-28 251 goto free_tiptr;
148587a59f6b85 Rasmus Villemoes 2019-11-28 252 }
c19b6d246a3562 Zhao Qiang 2016-06-06 253
c19b6d246a3562 Zhao Qiang 2016-06-06 254 /* Set RIPTR, TIPTR */
c19b6d246a3562 Zhao Qiang 2016-06-06 255 iowrite16be(riptr, &priv->ucc_pram->riptr);
c19b6d246a3562 Zhao Qiang 2016-06-06 256 iowrite16be(tiptr, &priv->ucc_pram->tiptr);
c19b6d246a3562 Zhao Qiang 2016-06-06 257
c19b6d246a3562 Zhao Qiang 2016-06-06 258 /* Set MRBLR */
c19b6d246a3562 Zhao Qiang 2016-06-06 259 iowrite16be(MAX_RX_BUF_LENGTH, &priv->ucc_pram->mrblr);
c19b6d246a3562 Zhao Qiang 2016-06-06 260
c19b6d246a3562 Zhao Qiang 2016-06-06 261 /* Set RBASE, TBASE */
c19b6d246a3562 Zhao Qiang 2016-06-06 262 iowrite32be(priv->dma_rx_bd, &priv->ucc_pram->rbase);
c19b6d246a3562 Zhao Qiang 2016-06-06 263 iowrite32be(priv->dma_tx_bd, &priv->ucc_pram->tbase);
c19b6d246a3562 Zhao Qiang 2016-06-06 264
c19b6d246a3562 Zhao Qiang 2016-06-06 265 /* Set RSTATE, TSTATE */
c19b6d246a3562 Zhao Qiang 2016-06-06 266 iowrite32be(BMR_GBL | BMR_BIG_ENDIAN, &priv->ucc_pram->rstate);
c19b6d246a3562 Zhao Qiang 2016-06-06 267 iowrite32be(BMR_GBL | BMR_BIG_ENDIAN, &priv->ucc_pram->tstate);
c19b6d246a3562 Zhao Qiang 2016-06-06 268
c19b6d246a3562 Zhao Qiang 2016-06-06 269 /* Set C_MASK, C_PRES for 16bit CRC */
c19b6d246a3562 Zhao Qiang 2016-06-06 270 iowrite32be(CRC_16BIT_MASK, &priv->ucc_pram->c_mask);
c19b6d246a3562 Zhao Qiang 2016-06-06 271 iowrite32be(CRC_16BIT_PRES, &priv->ucc_pram->c_pres);
c19b6d246a3562 Zhao Qiang 2016-06-06 272
c19b6d246a3562 Zhao Qiang 2016-06-06 273 iowrite16be(MAX_FRAME_LENGTH, &priv->ucc_pram->mflr);
c19b6d246a3562 Zhao Qiang 2016-06-06 274 iowrite16be(DEFAULT_RFTHR, &priv->ucc_pram->rfthr);
c19b6d246a3562 Zhao Qiang 2016-06-06 275 iowrite16be(DEFAULT_RFTHR, &priv->ucc_pram->rfcnt);
045f77baf6b429 David Gounaris 2018-09-03 276 iowrite16be(priv->hmask, &priv->ucc_pram->hmask);
c19b6d246a3562 Zhao Qiang 2016-06-06 277 iowrite16be(DEFAULT_HDLC_ADDR, &priv->ucc_pram->haddr1);
c19b6d246a3562 Zhao Qiang 2016-06-06 278 iowrite16be(DEFAULT_HDLC_ADDR, &priv->ucc_pram->haddr2);
c19b6d246a3562 Zhao Qiang 2016-06-06 279 iowrite16be(DEFAULT_HDLC_ADDR, &priv->ucc_pram->haddr3);
c19b6d246a3562 Zhao Qiang 2016-06-06 280 iowrite16be(DEFAULT_HDLC_ADDR, &priv->ucc_pram->haddr4);
c19b6d246a3562 Zhao Qiang 2016-06-06 281
c19b6d246a3562 Zhao Qiang 2016-06-06 282 /* Get BD buffer */
750afb08ca7131 Luis Chamberlain 2019-01-04 283 bd_buffer = dma_alloc_coherent(priv->dev,
750afb08ca7131 Luis Chamberlain 2019-01-04 284 (RX_BD_RING_LEN + TX_BD_RING_LEN) * MAX_RX_BUF_LENGTH,
c19b6d246a3562 Zhao Qiang 2016-06-06 285 &bd_dma_addr, GFP_KERNEL);
c19b6d246a3562 Zhao Qiang 2016-06-06 286
c19b6d246a3562 Zhao Qiang 2016-06-06 287 if (!bd_buffer) {
c19b6d246a3562 Zhao Qiang 2016-06-06 288 dev_err(priv->dev, "Could not allocate buffer descriptors\n");
c19b6d246a3562 Zhao Qiang 2016-06-06 289 ret = -ENOMEM;
1efb597d8bf56c Zhao Qiang 2016-07-15 290 goto free_tiptr;
c19b6d246a3562 Zhao Qiang 2016-06-06 291 }
c19b6d246a3562 Zhao Qiang 2016-06-06 292
c19b6d246a3562 Zhao Qiang 2016-06-06 293 priv->rx_buffer = bd_buffer;
c19b6d246a3562 Zhao Qiang 2016-06-06 294 priv->tx_buffer = bd_buffer + RX_BD_RING_LEN * MAX_RX_BUF_LENGTH;
c19b6d246a3562 Zhao Qiang 2016-06-06 295
c19b6d246a3562 Zhao Qiang 2016-06-06 296 priv->dma_rx_addr = bd_dma_addr;
c19b6d246a3562 Zhao Qiang 2016-06-06 297 priv->dma_tx_addr = bd_dma_addr + RX_BD_RING_LEN * MAX_RX_BUF_LENGTH;
c19b6d246a3562 Zhao Qiang 2016-06-06 298
c19b6d246a3562 Zhao Qiang 2016-06-06 299 for (i = 0; i < RX_BD_RING_LEN; i++) {
c19b6d246a3562 Zhao Qiang 2016-06-06 300 if (i < (RX_BD_RING_LEN - 1))
c19b6d246a3562 Zhao Qiang 2016-06-06 301 bd_status = R_E_S | R_I_S;
c19b6d246a3562 Zhao Qiang 2016-06-06 302 else
c19b6d246a3562 Zhao Qiang 2016-06-06 303 bd_status = R_E_S | R_I_S | R_W_S;
c19b6d246a3562 Zhao Qiang 2016-06-06 304
c19b6d246a3562 Zhao Qiang 2016-06-06 @305 iowrite16be(bd_status, &priv->rx_bd_base[i].status);
c19b6d246a3562 Zhao Qiang 2016-06-06 306 iowrite32be(priv->dma_rx_addr + i * MAX_RX_BUF_LENGTH,
c19b6d246a3562 Zhao Qiang 2016-06-06 @307 &priv->rx_bd_base[i].buf);
c19b6d246a3562 Zhao Qiang 2016-06-06 308 }
c19b6d246a3562 Zhao Qiang 2016-06-06 309
c19b6d246a3562 Zhao Qiang 2016-06-06 310 for (i = 0; i < TX_BD_RING_LEN; i++) {
c19b6d246a3562 Zhao Qiang 2016-06-06 311 if (i < (TX_BD_RING_LEN - 1))
c19b6d246a3562 Zhao Qiang 2016-06-06 312 bd_status = T_I_S | T_TC_S;
c19b6d246a3562 Zhao Qiang 2016-06-06 313 else
c19b6d246a3562 Zhao Qiang 2016-06-06 314 bd_status = T_I_S | T_TC_S | T_W_S;
c19b6d246a3562 Zhao Qiang 2016-06-06 315
c19b6d246a3562 Zhao Qiang 2016-06-06 316 iowrite16be(bd_status, &priv->tx_bd_base[i].status);
c19b6d246a3562 Zhao Qiang 2016-06-06 317 iowrite32be(priv->dma_tx_addr + i * MAX_RX_BUF_LENGTH,
c19b6d246a3562 Zhao Qiang 2016-06-06 318 &priv->tx_bd_base[i].buf);
c19b6d246a3562 Zhao Qiang 2016-06-06 319 }
c19b6d246a3562 Zhao Qiang 2016-06-06 320
c19b6d246a3562 Zhao Qiang 2016-06-06 321 return 0;
c19b6d246a3562 Zhao Qiang 2016-06-06 322
1efb597d8bf56c Zhao Qiang 2016-07-15 323 free_tiptr:
c19b6d246a3562 Zhao Qiang 2016-06-06 324 qe_muram_free(tiptr);
1efb597d8bf56c Zhao Qiang 2016-07-15 325 free_riptr:
c19b6d246a3562 Zhao Qiang 2016-06-06 326 qe_muram_free(riptr);
1efb597d8bf56c Zhao Qiang 2016-07-15 327 free_tx_skbuff:
c19b6d246a3562 Zhao Qiang 2016-06-06 328 kfree(priv->tx_skbuff);
1efb597d8bf56c Zhao Qiang 2016-07-15 329 free_rx_skbuff:
c19b6d246a3562 Zhao Qiang 2016-06-06 330 kfree(priv->rx_skbuff);
1efb597d8bf56c Zhao Qiang 2016-07-15 331 free_ucc_pram:
c19b6d246a3562 Zhao Qiang 2016-06-06 332 qe_muram_free(priv->ucc_pram_offset);
1efb597d8bf56c Zhao Qiang 2016-07-15 333 free_tx_bd:
c19b6d246a3562 Zhao Qiang 2016-06-06 334 dma_free_coherent(priv->dev,
5b8aad93c52bdd Holger Brunck 2017-05-17 335 TX_BD_RING_LEN * sizeof(struct qe_bd),
c19b6d246a3562 Zhao Qiang 2016-06-06 336 priv->tx_bd_base, priv->dma_tx_bd);
1efb597d8bf56c Zhao Qiang 2016-07-15 337 free_rx_bd:
c19b6d246a3562 Zhao Qiang 2016-06-06 338 dma_free_coherent(priv->dev,
5b8aad93c52bdd Holger Brunck 2017-05-17 339 RX_BD_RING_LEN * sizeof(struct qe_bd),
c19b6d246a3562 Zhao Qiang 2016-06-06 340 priv->rx_bd_base, priv->dma_rx_bd);
1efb597d8bf56c Zhao Qiang 2016-07-15 341 free_uccf:
c19b6d246a3562 Zhao Qiang 2016-06-06 342 ucc_fast_free(priv->uccf);
c19b6d246a3562 Zhao Qiang 2016-06-06 343
c19b6d246a3562 Zhao Qiang 2016-06-06 344 return ret;
c19b6d246a3562 Zhao Qiang 2016-06-06 345 }
c19b6d246a3562 Zhao Qiang 2016-06-06 346
c19b6d246a3562 Zhao Qiang 2016-06-06 347 static netdev_tx_t ucc_hdlc_tx(struct sk_buff *skb, struct net_device *dev)
c19b6d246a3562 Zhao Qiang 2016-06-06 348 {
c19b6d246a3562 Zhao Qiang 2016-06-06 349 hdlc_device *hdlc = dev_to_hdlc(dev);
c19b6d246a3562 Zhao Qiang 2016-06-06 350 struct ucc_hdlc_private *priv = (struct ucc_hdlc_private *)hdlc->priv;
c19b6d246a3562 Zhao Qiang 2016-06-06 351 struct qe_bd __iomem *bd;
c19b6d246a3562 Zhao Qiang 2016-06-06 352 u16 bd_status;
c19b6d246a3562 Zhao Qiang 2016-06-06 353 unsigned long flags;
c19b6d246a3562 Zhao Qiang 2016-06-06 354 u16 *proto_head;
c19b6d246a3562 Zhao Qiang 2016-06-06 355
c19b6d246a3562 Zhao Qiang 2016-06-06 356 switch (dev->type) {
c19b6d246a3562 Zhao Qiang 2016-06-06 357 case ARPHRD_RAWHDLC:
c19b6d246a3562 Zhao Qiang 2016-06-06 358 if (skb_headroom(skb) < HDLC_HEAD_LEN) {
c19b6d246a3562 Zhao Qiang 2016-06-06 359 dev->stats.tx_dropped++;
c19b6d246a3562 Zhao Qiang 2016-06-06 360 dev_kfree_skb(skb);
c19b6d246a3562 Zhao Qiang 2016-06-06 361 netdev_err(dev, "No enough space for hdlc head\n");
c19b6d246a3562 Zhao Qiang 2016-06-06 362 return -ENOMEM;
c19b6d246a3562 Zhao Qiang 2016-06-06 363 }
c19b6d246a3562 Zhao Qiang 2016-06-06 364
c19b6d246a3562 Zhao Qiang 2016-06-06 365 skb_push(skb, HDLC_HEAD_LEN);
c19b6d246a3562 Zhao Qiang 2016-06-06 366
c19b6d246a3562 Zhao Qiang 2016-06-06 367 proto_head = (u16 *)skb->data;
c19b6d246a3562 Zhao Qiang 2016-06-06 368 *proto_head = htons(DEFAULT_HDLC_HEAD);
c19b6d246a3562 Zhao Qiang 2016-06-06 369
c19b6d246a3562 Zhao Qiang 2016-06-06 370 dev->stats.tx_bytes += skb->len;
c19b6d246a3562 Zhao Qiang 2016-06-06 371 break;
c19b6d246a3562 Zhao Qiang 2016-06-06 372
c19b6d246a3562 Zhao Qiang 2016-06-06 373 case ARPHRD_PPP:
c19b6d246a3562 Zhao Qiang 2016-06-06 374 proto_head = (u16 *)skb->data;
c19b6d246a3562 Zhao Qiang 2016-06-06 375 if (*proto_head != htons(DEFAULT_PPP_HEAD)) {
c19b6d246a3562 Zhao Qiang 2016-06-06 376 dev->stats.tx_dropped++;
c19b6d246a3562 Zhao Qiang 2016-06-06 377 dev_kfree_skb(skb);
c19b6d246a3562 Zhao Qiang 2016-06-06 378 netdev_err(dev, "Wrong ppp header\n");
c19b6d246a3562 Zhao Qiang 2016-06-06 379 return -ENOMEM;
c19b6d246a3562 Zhao Qiang 2016-06-06 380 }
c19b6d246a3562 Zhao Qiang 2016-06-06 381
c19b6d246a3562 Zhao Qiang 2016-06-06 382 dev->stats.tx_bytes += skb->len;
c19b6d246a3562 Zhao Qiang 2016-06-06 383 break;
c19b6d246a3562 Zhao Qiang 2016-06-06 384
8978ca7c8b7b07 David Gounaris 2018-09-03 385 case ARPHRD_ETHER:
8978ca7c8b7b07 David Gounaris 2018-09-03 386 dev->stats.tx_bytes += skb->len;
8978ca7c8b7b07 David Gounaris 2018-09-03 387 break;
8978ca7c8b7b07 David Gounaris 2018-09-03 388
c19b6d246a3562 Zhao Qiang 2016-06-06 389 default:
c19b6d246a3562 Zhao Qiang 2016-06-06 390 dev->stats.tx_dropped++;
c19b6d246a3562 Zhao Qiang 2016-06-06 391 dev_kfree_skb(skb);
c19b6d246a3562 Zhao Qiang 2016-06-06 392 return -ENOMEM;
c19b6d246a3562 Zhao Qiang 2016-06-06 393 }
2e7ad56aa54778 Mathias Thore 2018-11-07 394 netdev_sent_queue(dev, skb->len);
c19b6d246a3562 Zhao Qiang 2016-06-06 395 spin_lock_irqsave(&priv->lock, flags);
c19b6d246a3562 Zhao Qiang 2016-06-06 396
c19b6d246a3562 Zhao Qiang 2016-06-06 397 /* Start from the next BD that should be filled */
c19b6d246a3562 Zhao Qiang 2016-06-06 398 bd = priv->curtx_bd;
c19b6d246a3562 Zhao Qiang 2016-06-06 399 bd_status = ioread16be(&bd->status);
c19b6d246a3562 Zhao Qiang 2016-06-06 400 /* Save the skb pointer so we can free it later */
c19b6d246a3562 Zhao Qiang 2016-06-06 401 priv->tx_skbuff[priv->skb_curtx] = skb;
c19b6d246a3562 Zhao Qiang 2016-06-06 402
c19b6d246a3562 Zhao Qiang 2016-06-06 403 /* Update the current skb pointer (wrapping if this was the last) */
c19b6d246a3562 Zhao Qiang 2016-06-06 404 priv->skb_curtx =
c19b6d246a3562 Zhao Qiang 2016-06-06 405 (priv->skb_curtx + 1) & TX_RING_MOD_MASK(TX_BD_RING_LEN);
c19b6d246a3562 Zhao Qiang 2016-06-06 406
c19b6d246a3562 Zhao Qiang 2016-06-06 407 /* copy skb data to tx buffer for sdma processing */
c19b6d246a3562 Zhao Qiang 2016-06-06 408 memcpy(priv->tx_buffer + (be32_to_cpu(bd->buf) - priv->dma_tx_addr),
c19b6d246a3562 Zhao Qiang 2016-06-06 409 skb->data, skb->len);
c19b6d246a3562 Zhao Qiang 2016-06-06 410
c19b6d246a3562 Zhao Qiang 2016-06-06 411 /* set bd status and length */
c19b6d246a3562 Zhao Qiang 2016-06-06 412 bd_status = (bd_status & T_W_S) | T_R_S | T_I_S | T_L_S | T_TC_S;
c19b6d246a3562 Zhao Qiang 2016-06-06 413
c19b6d246a3562 Zhao Qiang 2016-06-06 414 iowrite16be(skb->len, &bd->length);
02bb56ddc67116 Zhao Qiang 2017-03-14 415 iowrite16be(bd_status, &bd->status);
c19b6d246a3562 Zhao Qiang 2016-06-06 416
c19b6d246a3562 Zhao Qiang 2016-06-06 417 /* Move to next BD in the ring */
c19b6d246a3562 Zhao Qiang 2016-06-06 418 if (!(bd_status & T_W_S))
c19b6d246a3562 Zhao Qiang 2016-06-06 419 bd += 1;
c19b6d246a3562 Zhao Qiang 2016-06-06 420 else
c19b6d246a3562 Zhao Qiang 2016-06-06 421 bd = priv->tx_bd_base;
c19b6d246a3562 Zhao Qiang 2016-06-06 422
c19b6d246a3562 Zhao Qiang 2016-06-06 423 if (bd == priv->dirty_tx) {
c19b6d246a3562 Zhao Qiang 2016-06-06 424 if (!netif_queue_stopped(dev))
c19b6d246a3562 Zhao Qiang 2016-06-06 425 netif_stop_queue(dev);
c19b6d246a3562 Zhao Qiang 2016-06-06 426 }
c19b6d246a3562 Zhao Qiang 2016-06-06 427
c19b6d246a3562 Zhao Qiang 2016-06-06 428 priv->curtx_bd = bd;
c19b6d246a3562 Zhao Qiang 2016-06-06 429
c19b6d246a3562 Zhao Qiang 2016-06-06 430 spin_unlock_irqrestore(&priv->lock, flags);
c19b6d246a3562 Zhao Qiang 2016-06-06 431
c19b6d246a3562 Zhao Qiang 2016-06-06 432 return NETDEV_TX_OK;
c19b6d246a3562 Zhao Qiang 2016-06-06 433 }
c19b6d246a3562 Zhao Qiang 2016-06-06 434
ba59d5705825fb Mathias Thore 2018-10-22 435 static int hdlc_tx_restart(struct ucc_hdlc_private *priv)
ba59d5705825fb Mathias Thore 2018-10-22 436 {
ba59d5705825fb Mathias Thore 2018-10-22 437 u32 cecr_subblock;
ba59d5705825fb Mathias Thore 2018-10-22 438
ba59d5705825fb Mathias Thore 2018-10-22 439 cecr_subblock =
ba59d5705825fb Mathias Thore 2018-10-22 440 ucc_fast_get_qe_cr_subblock(priv->ut_info->uf_info.ucc_num);
ba59d5705825fb Mathias Thore 2018-10-22 441
ba59d5705825fb Mathias Thore 2018-10-22 442 qe_issue_cmd(QE_RESTART_TX, cecr_subblock,
ba59d5705825fb Mathias Thore 2018-10-22 443 QE_CR_PROTOCOL_UNSPECIFIED, 0);
ba59d5705825fb Mathias Thore 2018-10-22 444 return 0;
ba59d5705825fb Mathias Thore 2018-10-22 445 }
ba59d5705825fb Mathias Thore 2018-10-22 446
c19b6d246a3562 Zhao Qiang 2016-06-06 447 static int hdlc_tx_done(struct ucc_hdlc_private *priv)
c19b6d246a3562 Zhao Qiang 2016-06-06 448 {
c19b6d246a3562 Zhao Qiang 2016-06-06 449 /* Start from the next BD that should be filled */
c19b6d246a3562 Zhao Qiang 2016-06-06 450 struct net_device *dev = priv->ndev;
2e7ad56aa54778 Mathias Thore 2018-11-07 451 unsigned int bytes_sent = 0;
2e7ad56aa54778 Mathias Thore 2018-11-07 452 int howmany = 0;
c19b6d246a3562 Zhao Qiang 2016-06-06 453 struct qe_bd *bd; /* BD pointer */
c19b6d246a3562 Zhao Qiang 2016-06-06 454 u16 bd_status;
ba59d5705825fb Mathias Thore 2018-10-22 455 int tx_restart = 0;
c19b6d246a3562 Zhao Qiang 2016-06-06 456
c19b6d246a3562 Zhao Qiang 2016-06-06 457 bd = priv->dirty_tx;
c19b6d246a3562 Zhao Qiang 2016-06-06 @458 bd_status = ioread16be(&bd->status);
c19b6d246a3562 Zhao Qiang 2016-06-06 459
c19b6d246a3562 Zhao Qiang 2016-06-06 460 /* Normal processing. */
c19b6d246a3562 Zhao Qiang 2016-06-06 461 while ((bd_status & T_R_S) == 0) {
c19b6d246a3562 Zhao Qiang 2016-06-06 462 struct sk_buff *skb;
c19b6d246a3562 Zhao Qiang 2016-06-06 463
ba59d5705825fb Mathias Thore 2018-10-22 464 if (bd_status & T_UN_S) { /* Underrun */
ba59d5705825fb Mathias Thore 2018-10-22 465 dev->stats.tx_fifo_errors++;
ba59d5705825fb Mathias Thore 2018-10-22 466 tx_restart = 1;
ba59d5705825fb Mathias Thore 2018-10-22 467 }
ba59d5705825fb Mathias Thore 2018-10-22 468 if (bd_status & T_CT_S) { /* Carrier lost */
ba59d5705825fb Mathias Thore 2018-10-22 469 dev->stats.tx_carrier_errors++;
ba59d5705825fb Mathias Thore 2018-10-22 470 tx_restart = 1;
ba59d5705825fb Mathias Thore 2018-10-22 471 }
ba59d5705825fb Mathias Thore 2018-10-22 472
c19b6d246a3562 Zhao Qiang 2016-06-06 473 /* BD contains already transmitted buffer. */
c19b6d246a3562 Zhao Qiang 2016-06-06 474 /* Handle the transmitted buffer and release */
c19b6d246a3562 Zhao Qiang 2016-06-06 475 /* the BD to be used with the current frame */
c19b6d246a3562 Zhao Qiang 2016-06-06 476
c19b6d246a3562 Zhao Qiang 2016-06-06 477 skb = priv->tx_skbuff[priv->skb_dirtytx];
c19b6d246a3562 Zhao Qiang 2016-06-06 478 if (!skb)
c19b6d246a3562 Zhao Qiang 2016-06-06 479 break;
2e7ad56aa54778 Mathias Thore 2018-11-07 480 howmany++;
2e7ad56aa54778 Mathias Thore 2018-11-07 481 bytes_sent += skb->len;
c19b6d246a3562 Zhao Qiang 2016-06-06 482 dev->stats.tx_packets++;
c19b6d246a3562 Zhao Qiang 2016-06-06 483 memset(priv->tx_buffer +
c19b6d246a3562 Zhao Qiang 2016-06-06 484 (be32_to_cpu(bd->buf) - priv->dma_tx_addr),
c19b6d246a3562 Zhao Qiang 2016-06-06 485 0, skb->len);
7c3850adbcccc2 Yang Wei 2019-02-06 486 dev_consume_skb_irq(skb);
c19b6d246a3562 Zhao Qiang 2016-06-06 487
c19b6d246a3562 Zhao Qiang 2016-06-06 488 priv->tx_skbuff[priv->skb_dirtytx] = NULL;
c19b6d246a3562 Zhao Qiang 2016-06-06 489 priv->skb_dirtytx =
c19b6d246a3562 Zhao Qiang 2016-06-06 490 (priv->skb_dirtytx +
c19b6d246a3562 Zhao Qiang 2016-06-06 491 1) & TX_RING_MOD_MASK(TX_BD_RING_LEN);
c19b6d246a3562 Zhao Qiang 2016-06-06 492
c19b6d246a3562 Zhao Qiang 2016-06-06 493 /* We freed a buffer, so now we can restart transmission */
c19b6d246a3562 Zhao Qiang 2016-06-06 494 if (netif_queue_stopped(dev))
c19b6d246a3562 Zhao Qiang 2016-06-06 495 netif_wake_queue(dev);
c19b6d246a3562 Zhao Qiang 2016-06-06 496
c19b6d246a3562 Zhao Qiang 2016-06-06 497 /* Advance the confirmation BD pointer */
c19b6d246a3562 Zhao Qiang 2016-06-06 498 if (!(bd_status & T_W_S))
c19b6d246a3562 Zhao Qiang 2016-06-06 499 bd += 1;
c19b6d246a3562 Zhao Qiang 2016-06-06 500 else
c19b6d246a3562 Zhao Qiang 2016-06-06 501 bd = priv->tx_bd_base;
c19b6d246a3562 Zhao Qiang 2016-06-06 502 bd_status = ioread16be(&bd->status);
c19b6d246a3562 Zhao Qiang 2016-06-06 503 }
c19b6d246a3562 Zhao Qiang 2016-06-06 504 priv->dirty_tx = bd;
c19b6d246a3562 Zhao Qiang 2016-06-06 505
ba59d5705825fb Mathias Thore 2018-10-22 506 if (tx_restart)
ba59d5705825fb Mathias Thore 2018-10-22 507 hdlc_tx_restart(priv);
ba59d5705825fb Mathias Thore 2018-10-22 508
2e7ad56aa54778 Mathias Thore 2018-11-07 509 netdev_completed_queue(dev, howmany, bytes_sent);
c19b6d246a3562 Zhao Qiang 2016-06-06 510 return 0;
c19b6d246a3562 Zhao Qiang 2016-06-06 511 }
c19b6d246a3562 Zhao Qiang 2016-06-06 512
:::::: The code at line 305 was first introduced by commit
:::::: c19b6d246a35627c3a69b2fa6bdece212b48214b drivers/net: support hdlc function for QE-UCC
:::::: TO: Zhao Qiang <qiang.zhao(a)nxp.com>
:::::: CC: David S. Miller <davem(a)davemloft.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
[frank-w-bpi-r2-4.14:5.12-rc 6/21] cc1: error: arch/arm/mach-mt7623//dct/dct: No such file or directory
by kernel test robot
tree: https://github.com/frank-w/BPI-R2-4.14 5.12-rc
head: f2db06115616ed84e25d2b054619fed88b456871
commit: db1f3efbe988d250ba9fce86d1fde4a2225b7e73 [6/21] mt6625l: include wifi-code
config: arm-randconfig-r002-20210322 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.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/frank-w/BPI-R2-4.14/commit/db1f3efbe988d250ba9fce86d1f...
git remote add frank-w-bpi-r2-4.14 https://github.com/frank-w/BPI-R2-4.14
git fetch --no-tags frank-w-bpi-r2-4.14 5.12-rc
git checkout db1f3efbe988d250ba9fce86d1fde4a2225b7e73
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
In file included from drivers/misc/mediatek/btif/common/plat_inc/btif_pub.h:17,
from drivers/misc/mediatek/btif/common/inc/mtk_btif.h:37,
from drivers/misc/mediatek/btif/common/mtk_btif_exp.c:20:
drivers/misc/mediatek/btif/common/plat_inc/plat_common.h: In function 'hal_log_print':
>> drivers/misc/mediatek/btif/common/plat_inc/plat_common.h:64:2: warning: function 'hal_log_print' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
64 | vsnprintf(temp_sring, DBG_LOG_STR_SIZE, str, args);
| ^~~~~~~~~
--
In file included from drivers/misc/mediatek/btif/common/plat_inc/btif_pub.h:17,
from drivers/misc/mediatek/btif/common/mtk_btif.c:37:
drivers/misc/mediatek/btif/common/plat_inc/plat_common.h: In function 'hal_log_print':
>> drivers/misc/mediatek/btif/common/plat_inc/plat_common.h:64:2: warning: function 'hal_log_print' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
64 | vsnprintf(temp_sring, DBG_LOG_STR_SIZE, str, args);
| ^~~~~~~~~
drivers/misc/mediatek/btif/common/mtk_btif.c: In function 'mtk_btif_restore_noirq':
>> drivers/misc/mediatek/btif/common/mtk_btif.c:379:6: warning: variable 'i_ret' set but not used [-Wunused-but-set-variable]
379 | int i_ret = 0;
| ^~~~~
drivers/misc/mediatek/btif/common/mtk_btif.c: In function 'flag_store':
>> drivers/misc/mediatek/btif/common/mtk_btif.c:773:6: warning: variable 'result' set but not used [-Wunused-but-set-variable]
773 | int result = 0;
| ^~~~~~
drivers/misc/mediatek/btif/common/mtk_btif.c: In function 'btif_log_buf_dmp_out':
>> drivers/misc/mediatek/btif/common/mtk_btif.c:3029:17: warning: variable 'p_buf' set but not used [-Wunused-but-set-variable]
3029 | unsigned char *p_buf = NULL;
| ^~~~~
--
In file included from drivers/misc/mediatek/btif/common/plat_inc/btif_dma_pub.h:19,
from drivers/misc/mediatek/btif/common/plat_inc/btif_dma_priv.h:18,
from drivers/misc/mediatek/btif/common/btif_dma_plat.c:22:
drivers/misc/mediatek/btif/common/plat_inc/plat_common.h: In function 'hal_log_print':
>> drivers/misc/mediatek/btif/common/plat_inc/plat_common.h:64:2: warning: function 'hal_log_print' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
64 | vsnprintf(temp_sring, DBG_LOG_STR_SIZE, str, args);
| ^~~~~~~~~
drivers/misc/mediatek/btif/common/btif_dma_plat.c: In function 'hal_dma_pm_ops':
>> drivers/misc/mediatek/btif/common/btif_dma_plat.c:1313:17: warning: variable 'flag' set but not used [-Wunused-but-set-variable]
1313 | unsigned int flag = 0;
| ^~~~
--
In file included from drivers/misc/mediatek/btif/common/plat_inc/btif_pub.h:17,
from drivers/misc/mediatek/btif/common/btif_plat.c:21:
drivers/misc/mediatek/btif/common/plat_inc/plat_common.h: In function 'hal_log_print':
>> drivers/misc/mediatek/btif/common/plat_inc/plat_common.h:64:2: warning: function 'hal_log_print' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
64 | vsnprintf(temp_sring, DBG_LOG_STR_SIZE, str, args);
| ^~~~~~~~~
drivers/misc/mediatek/btif/common/btif_plat.c: In function 'hal_btif_pm_ops':
>> drivers/misc/mediatek/btif/common/btif_plat.c:1343:17: warning: variable 'flag' set but not used [-Wunused-but-set-variable]
1343 | unsigned int flag = 0;
| ^~~~
--
>> cc1: error: arch/arm/mach-mt7623//dct/dct: No such file or directory [-Werror=missing-include-dirs]
cc1: all warnings being treated as errors
--
>> cc1: error: arch/arm/mach-mt7623//dct/dct: No such file or directory [-Werror=missing-include-dirs]
>> drivers/misc/mediatek/connectivity/common/common_detect/wmt_detect_pwr.c:51:5: error: no previous prototype for '_wmt_detect_output_low' [-Werror=missing-prototypes]
51 | int _wmt_detect_output_low(unsigned int id)
| ^~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
--
>> cc1: warning: drivers/misc/mediatek/base/power/include: No such file or directory [-Wmissing-include-dirs]
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/include/mgmt/scan.h:269,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:237,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/dump.c:47:
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:152:1: warning: 'lstats_vendor_test_policy' defined but not used [-Wunused-const-variable=]
152 | lstats_vendor_test_policy[LSTATS_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:140:1: warning: 'rtt_vendor_test_policy' defined but not used [-Wunused-const-variable=]
140 | rtt_vendor_test_policy[RTT_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:120:1: warning: 'gscan_vendor_test_policy' defined but not used [-Wunused-const-variable=]
120 | gscan_vendor_test_policy[GSCAN_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:93:1: warning: 'wifi_vendor_test_policy' defined but not used [-Wunused-const-variable=]
93 | wifi_vendor_test_policy[WIFI_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h:543,
from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_os.h:594,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:171,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/dump.c:47:
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:935:21: warning: 'aucRateTableSize' defined but not used [-Wunused-const-variable=]
935 | static const UINT_8 aucRateTableSize[PREAMBLE_OPTION_NUM] = {
| ^~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:878:21: warning: 'aucRateIndex2RateCode' defined but not used [-Wunused-const-variable=]
878 | static const UINT_8 aucRateIndex2RateCode[PREAMBLE_OPTION_NUM][RATE_NUM] = {
| ^~~~~~~~~~~~~~~~~~~~~
--
>> cc1: warning: drivers/misc/mediatek/base/power/include: No such file or directory [-Wmissing-include-dirs]
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c: In function 'wlanSendCommand':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c:2004:14: warning: variable 'prTxCtrl' set but not used [-Wunused-but-set-variable]
2004 | P_TX_CTRL_T prTxCtrl;
| ^~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c: In function 'wlanSendNicPowerCtrlCmd':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c:2575:16: warning: variable 'prGlueInfo' set but not used [-Wunused-but-set-variable]
2575 | P_GLUE_INFO_T prGlueInfo;
| ^~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c: In function 'wlanProcessQueuedSwRfb':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c:3270:14: warning: variable 'prRxCtrl' set but not used [-Wunused-but-set-variable]
3270 | P_RX_CTRL_T prRxCtrl;
| ^~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c:3269:14: warning: variable 'prTxCtrl' set but not used [-Wunused-but-set-variable]
3269 | P_TX_CTRL_T prTxCtrl;
| ^~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c: At top level:
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c:5431:1: warning: no previous prototype for 'wlanoidQueryACSChannelList' [-Wmissing-prototypes]
5431 | wlanoidQueryACSChannelList(IN P_ADAPTER_T prAdapter,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/include/mgmt/scan.h:269,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:237,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c:967:
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:152:1: warning: 'lstats_vendor_test_policy' defined but not used [-Wunused-const-variable=]
152 | lstats_vendor_test_policy[LSTATS_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:140:1: warning: 'rtt_vendor_test_policy' defined but not used [-Wunused-const-variable=]
140 | rtt_vendor_test_policy[RTT_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:120:1: warning: 'gscan_vendor_test_policy' defined but not used [-Wunused-const-variable=]
120 | gscan_vendor_test_policy[GSCAN_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:93:1: warning: 'wifi_vendor_test_policy' defined but not used [-Wunused-const-variable=]
93 | wifi_vendor_test_policy[WIFI_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h:543,
from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_os.h:594,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:171,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_lib.c:967:
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:935:21: warning: 'aucRateTableSize' defined but not used [-Wunused-const-variable=]
935 | static const UINT_8 aucRateTableSize[PREAMBLE_OPTION_NUM] = {
| ^~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:878:21: warning: 'aucRateIndex2RateCode' defined but not used [-Wunused-const-variable=]
878 | static const UINT_8 aucRateIndex2RateCode[PREAMBLE_OPTION_NUM][RATE_NUM] = {
| ^~~~~~~~~~~~~~~~~~~~~
--
>> cc1: warning: drivers/misc/mediatek/base/power/include: No such file or directory [-Wmissing-include-dirs]
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidQueryBssidList':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:1384:16: warning: variable 'prGlueInfo' set but not used [-Wunused-but-set-variable]
1384 | P_GLUE_INFO_T prGlueInfo;
| ^~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidSetBssid':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:1704:9: warning: variable 'i4Idx' set but not used [-Wunused-but-set-variable]
1704 | INT_32 i4Idx = -1;
| ^~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidSetSsid':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:1963:9: warning: variable 'i4Idx' set but not used [-Wunused-but-set-variable]
1963 | INT_32 i4Idx = -1, i4MaxRSSI = INT_MIN;
| ^~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidSetInfrastructureMode':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:2218:16: warning: variable 'prGlueInfo' set but not used [-Wunused-but-set-variable]
2218 | P_GLUE_INFO_T prGlueInfo;
| ^~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidSetAuthMode':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:2388:16: warning: variable 'prGlueInfo' set but not used [-Wunused-but-set-variable]
2388 | P_GLUE_INFO_T prGlueInfo;
| ^~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidSetEncryptionStatus':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:3496:16: warning: variable 'prGlueInfo' set but not used [-Wunused-but-set-variable]
3496 | P_GLUE_INFO_T prGlueInfo;
| ^~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidSetSwCtrlWrite':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:5428:16: warning: variable 'prGlueInfo' set but not used [-Wunused-but-set-variable]
5428 | P_GLUE_INFO_T prGlueInfo;
| ^~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidSetWapiKey':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:8180:10: warning: variable 'pc' set but not used [-Wunused-but-set-variable]
8180 | PUINT_8 pc;
| ^~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c: In function 'wlanoidSetGSCNAction':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:10356:16: warning: variable 'prScanInfo' set but not used [-Wunused-but-set-variable]
10356 | P_SCAN_INFO_T prScanInfo;
| ^~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/include/mgmt/scan.h:269,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:237,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:1061:
At top level:
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:152:1: warning: 'lstats_vendor_test_policy' defined but not used [-Wunused-const-variable=]
152 | lstats_vendor_test_policy[LSTATS_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:140:1: warning: 'rtt_vendor_test_policy' defined but not used [-Wunused-const-variable=]
140 | rtt_vendor_test_policy[RTT_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:120:1: warning: 'gscan_vendor_test_policy' defined but not used [-Wunused-const-variable=]
120 | gscan_vendor_test_policy[GSCAN_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:93:1: warning: 'wifi_vendor_test_policy' defined but not used [-Wunused-const-variable=]
93 | wifi_vendor_test_policy[WIFI_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h:543,
from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_os.h:594,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:171,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_oid.c:1061:
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:935:21: warning: 'aucRateTableSize' defined but not used [-Wunused-const-variable=]
935 | static const UINT_8 aucRateTableSize[PREAMBLE_OPTION_NUM] = {
| ^~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:878:21: warning: 'aucRateIndex2RateCode' defined but not used [-Wunused-const-variable=]
878 | static const UINT_8 aucRateIndex2RateCode[PREAMBLE_OPTION_NUM][RATE_NUM] = {
| ^~~~~~~~~~~~~~~~~~~~~
--
>> cc1: warning: drivers/misc/mediatek/base/power/include: No such file or directory [-Wmissing-include-dirs]
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowCmdReadRSSI':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:997:18: warning: variable 'prBowReadRSSI' set but not used [-Wunused-but-set-variable]
997 | P_BOW_READ_RSSI prBowReadRSSI;
| ^~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowCmdReadLinkQuality':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:1029:26: warning: variable 'prBowReadLinkQuality' set but not used [-Wunused-but-set-variable]
1029 | P_BOW_READ_LINK_QUALITY prBowReadLinkQuality;
| ^~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'wlanbowCmdEventLinkDisconnected':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:1439:41: warning: cast between incompatible function types from 'VOID (*)(struct _ADAPTER_T *, struct _MSDU_INFO_T *, ENUM_TX_RESULT_CODE_T)' {aka 'void (*)(struct _ADAPTER_T *, struct _MSDU_INFO_T *, enum _ENUM_TX_RESULT_CODE_T)'} to 'WLAN_STATUS (*)(struct _ADAPTER_T *, struct _MSDU_INFO_T *, ENUM_TX_RESULT_CODE_T)' {aka 'unsigned int (*)(struct _ADAPTER_T *, struct _MSDU_INFO_T *, enum _ENUM_TX_RESULT_CODE_T)'} [-Wcast-function-type]
1439 | REASON_CODE_DEAUTH_LEAVING_BSS, (PFN_TX_DONE_HANDLER) bowDisconnectLink);
| ^
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'wlanbowCmdEventSetSetupConnection':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:1492:19: warning: variable 'prBowFsmInfo' set but not used [-Wunused-but-set-variable]
1492 | P_BOW_FSM_INFO_T prBowFsmInfo;
| ^~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowStopping':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:1650:15: warning: variable 'prBowBssInfo' set but not used [-Wunused-but-set-variable]
1650 | P_BSS_INFO_T prBowBssInfo;
| ^~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:1649:19: warning: variable 'prBowFsmInfo' set but not used [-Wunused-but-set-variable]
1649 | P_BOW_FSM_INFO_T prBowFsmInfo;
| ^~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowValidateProbeReq':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:1953:19: warning: variable 'prBowFsmInfo' set but not used [-Wunused-but-set-variable]
1953 | P_BOW_FSM_INFO_T prBowFsmInfo;
| ^~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowResponderScan':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:2051:15: warning: variable 'prBssInfo' set but not used [-Wunused-but-set-variable]
2051 | P_BSS_INFO_T prBssInfo;
| ^~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowFsmRunEventJoinComplete':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:2356:15: warning: variable 'prBssInfo' set but not used [-Wunused-but-set-variable]
2356 | P_BSS_INFO_T prBssInfo;
| ^~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowRunEventAAAComplete':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:2617:19: warning: variable 'prBowFsmInfo' set but not used [-Wunused-but-set-variable]
2617 | P_BOW_FSM_INFO_T prBowFsmInfo;
| ^~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowRunEventRxDeAuth':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:2656:15: warning: variable 'prBowBssInfo' set but not used [-Wunused-but-set-variable]
2656 | P_BSS_INFO_T prBowBssInfo;
| ^~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowRunEventChGrant':
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:2971:15: warning: variable 'prBowBssInfo' set but not used [-Wunused-but-set-variable]
2971 | P_BSS_INFO_T prBowBssInfo;
| ^~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c: In function 'bowGetBowTableContent':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:3266:100: warning: parameter 'prBowTable' set but not used [-Wunused-but-set-parameter]
3266 | BOOLEAN bowGetBowTableContent(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBowTableIdx, OUT P_BOW_TABLE_T prBowTable)
| ~~~~~~~~~~~~~~^~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/include/mgmt/scan.h:269,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:237,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:319:
At top level:
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:152:1: warning: 'lstats_vendor_test_policy' defined but not used [-Wunused-const-variable=]
152 | lstats_vendor_test_policy[LSTATS_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:140:1: warning: 'rtt_vendor_test_policy' defined but not used [-Wunused-const-variable=]
140 | rtt_vendor_test_policy[RTT_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:120:1: warning: 'gscan_vendor_test_policy' defined but not used [-Wunused-const-variable=]
120 | gscan_vendor_test_policy[GSCAN_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:93:1: warning: 'wifi_vendor_test_policy' defined but not used [-Wunused-const-variable=]
93 | wifi_vendor_test_policy[WIFI_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h:543,
from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_os.h:594,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:171,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_bow.c:319:
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:935:21: warning: 'aucRateTableSize' defined but not used [-Wunused-const-variable=]
935 | static const UINT_8 aucRateTableSize[PREAMBLE_OPTION_NUM] = {
| ^~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:878:21: warning: 'aucRateIndex2RateCode' defined but not used [-Wunused-const-variable=]
878 | static const UINT_8 aucRateIndex2RateCode[PREAMBLE_OPTION_NUM][RATE_NUM] = {
| ^~~~~~~~~~~~~~~~~~~~~
--
>> cc1: warning: drivers/misc/mediatek/base/power/include: No such file or directory [-Wmissing-include-dirs]
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_p2p.c:218:
>> drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_p2p_ioctl.h:570:2: error: #error "Please ENABLE kernel config (CONFIG_NL80211_TESTMODE) to support Wi-Fi Direct"
570 | #error "Please ENABLE kernel config (CONFIG_NL80211_TESTMODE) to support Wi-Fi Direct"
| ^~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_p2p.c: In function 'wlanoidSetRemoveP2PKey':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_p2p.c:487:3: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
487 | ; /* return WLAN_STATUS_NOT_ACCEPTED; */
| ^
drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_p2p.c: In function 'wlanoidSetP2pSupplicantVersion':
>> drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_p2p.c:1527:9: warning: variable 'ucVersionNum' set but not used [-Wunused-but-set-variable]
1527 | UINT_8 ucVersionNum;
| ^~~~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/include/mgmt/scan.h:269,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:237,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_p2p.c:217:
At top level:
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:152:1: warning: 'lstats_vendor_test_policy' defined but not used [-Wunused-const-variable=]
152 | lstats_vendor_test_policy[LSTATS_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:140:1: warning: 'rtt_vendor_test_policy' defined but not used [-Wunused-const-variable=]
140 | rtt_vendor_test_policy[RTT_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:120:1: warning: 'gscan_vendor_test_policy' defined but not used [-Wunused-const-variable=]
120 | gscan_vendor_test_policy[GSCAN_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_vendor.h:93:1: warning: 'wifi_vendor_test_policy' defined but not used [-Wunused-const-variable=]
93 | wifi_vendor_test_policy[WIFI_SUBCMD_MAX + 1] = {
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_kal.h:543,
from drivers/misc/mediatek/connectivity/wlan/gen2/os/linux/include/gl_os.h:594,
from drivers/misc/mediatek/connectivity/wlan/gen2/include/precomp.h:171,
from drivers/misc/mediatek/connectivity/wlan/gen2/common/wlan_p2p.c:217:
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:935:21: warning: 'aucRateTableSize' defined but not used [-Wunused-const-variable=]
935 | static const UINT_8 aucRateTableSize[PREAMBLE_OPTION_NUM] = {
| ^~~~~~~~~~~~~~~~
drivers/misc/mediatek/connectivity/wlan/gen2/include/nic/wlan_def.h:878:21: warning: 'aucRateIndex2RateCode' defined but not used [-Wunused-const-variable=]
878 | static const UINT_8 aucRateIndex2RateCode[PREAMBLE_OPTION_NUM][RATE_NUM] = {
| ^~~~~~~~~~~~~~~~~~~~~
..
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for WIRELESS_EXT
Depends on NET && WIRELESS
Selected by
- MTK_COMBO_WIFI && ARM && MTK_COMBO
WARNING: unmet direct dependencies detected for WEXT_PRIV
Depends on NET && WIRELESS
Selected by
- MTK_COMBO_WIFI && ARM && MTK_COMBO
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months