[PATCH v8] drm/lima: driver for ARM Mali4xx GPUs

Qiang Yu yuq825 at gmail.com
Sun Mar 10 02:40:38 UTC 2019


Hi,

This patch should be applied to the drm-misc-next branch:
https://github.com/freedesktop/drm-misc/tree/drm-misc-next

Regards,
Qiang

On Sun, Mar 10, 2019 at 10:00 AM kbuild test robot <lkp at intel.com> wrote:
>
> Hi Qiang,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on linus/master]
> [also build test ERROR on v5.0 next-20190306]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url:    https://github.com/0day-ci/linux/commits/Qiang-Yu/drm-lima-driver-for-ARM-Mali4xx-GPUs/20190310-073206
> config: arm-allmodconfig (attached as .config)
> compiler: arm-linux-gnueabi-gcc (Debian 8.2.0-11) 8.2.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         GCC_VERSION=8.2.0 make.cross ARCH=arm
>
> All errors (new ones prefixed by >>):
>
>    In file included from drivers/gpu/drm/lima/lima_gem.c:17:
>    drivers/gpu/drm/lima/lima_object.h:31:18: warning: 'struct reservation_object' declared inside parameter list will not be visible outside of this definition or declaration
>               struct reservation_object *resv);
>                      ^~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_gem.c: In function 'lima_gem_sync_bo':
>    drivers/gpu/drm/lima/lima_gem.c:138:9: error: implicit declaration of function 'reservation_object_reserve_shared' [-Werror=implicit-function-declaration]
>       err = reservation_object_reserve_shared(bo->gem.resv, 1);
>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_gem.c:138:51: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>       err = reservation_object_reserve_shared(bo->gem.resv, 1);
>                                                       ^~~~
>                                                       dev
>    drivers/gpu/drm/lima/lima_gem.c:153:9: error: implicit declaration of function 'reservation_object_get_fences_rcu' [-Werror=implicit-function-declaration]
>       err = reservation_object_get_fences_rcu(
>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_gem.c:154:12: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>        bo->gem.resv, NULL, &nr_fences, &fences);
>                ^~~~
>                dev
> >> drivers/gpu/drm/lima/lima_gem.c:168:3: error: implicit declaration of function 'kfree'; did you mean 'vfree'? [-Werror=implicit-function-declaration]
>       kfree(fences);
>       ^~~~~
>       vfree
>    drivers/gpu/drm/lima/lima_gem.c:172:11: error: implicit declaration of function 'reservation_object_get_excl_rcu' [-Werror=implicit-function-declaration]
>       fence = reservation_object_get_excl_rcu(bo->gem.resv);
>               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_gem.c:172:51: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>       fence = reservation_object_get_excl_rcu(bo->gem.resv);
>                                                       ^~~~
>                                                       dev
>    drivers/gpu/drm/lima/lima_gem.c: In function 'lima_gem_lock_bos':
>    drivers/gpu/drm/lima/lima_gem.c:188:24: error: 'reservation_ww_class' undeclared (first use in this function)
>      ww_acquire_init(ctx, &reservation_ww_class);
>                            ^~~~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_gem.c:188:24: note: each undeclared identifier is reported only once for each function it appears in
>    drivers/gpu/drm/lima/lima_gem.c:197:50: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>       ret = ww_mutex_lock_interruptible(&bos[i]->gem.resv->lock, ctx);
>                                                      ^~~~
>                                                      dev
>    drivers/gpu/drm/lima/lima_gem.c:209:32: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>       ww_mutex_unlock(&bos[i]->gem.resv->lock);
>                                    ^~~~
>                                    dev
>    drivers/gpu/drm/lima/lima_gem.c:212:42: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>       ww_mutex_unlock(&bos[slow_locked]->gem.resv->lock);
>                                              ^~~~
>                                              dev
>    drivers/gpu/drm/lima/lima_gem.c:217:25: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>        &bos[contended]->gem.resv->lock, ctx);
>                             ^~~~
>                             dev
>    drivers/gpu/drm/lima/lima_gem.c: In function 'lima_gem_unlock_bos':
>    drivers/gpu/drm/lima/lima_gem.c:234:32: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>       ww_mutex_unlock(&bos[i]->gem.resv->lock);
>                                    ^~~~
>                                    dev
>    drivers/gpu/drm/lima/lima_gem.c: In function 'lima_gem_submit':
>    drivers/gpu/drm/lima/lima_gem.c:331:4: error: implicit declaration of function 'reservation_object_add_excl_fence' [-Werror=implicit-function-declaration]
>        reservation_object_add_excl_fence(bos[i]->gem.resv, fence);
>        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_gem.c:331:50: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>        reservation_object_add_excl_fence(bos[i]->gem.resv, fence);
>                                                      ^~~~
>                                                      dev
>    drivers/gpu/drm/lima/lima_gem.c:333:4: error: implicit declaration of function 'reservation_object_add_shared_fence' [-Werror=implicit-function-declaration]
>        reservation_object_add_shared_fence(bos[i]->gem.resv, fence);
>        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_gem.c:333:52: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>        reservation_object_add_shared_fence(bos[i]->gem.resv, fence);
>                                                        ^~~~
>                                                        dev
>    drivers/gpu/drm/lima/lima_gem.c: In function 'lima_gem_wait':
>    drivers/gpu/drm/lima/lima_gem.c:374:12: error: implicit declaration of function 'drm_timeout_abs_to_jiffies'; did you mean 'timeval_to_jiffies'? [-Werror=implicit-function-declaration]
>      timeout = drm_timeout_abs_to_jiffies(timeout_ns);
>                ^~~~~~~~~~~~~~~~~~~~~~~~~~
>                timeval_to_jiffies
>    drivers/gpu/drm/lima/lima_gem.c:376:8: error: implicit declaration of function 'drm_gem_reservation_object_wait'; did you mean 'drm_gem_private_object_init'? [-Werror=implicit-function-declaration]
>      ret = drm_gem_reservation_object_wait(file, handle, write, timeout);
>            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>            drm_gem_private_object_init
>    cc1: some warnings being treated as errors
> --
>    In file included from drivers/gpu/drm/lima/lima_object.c:8:
>    drivers/gpu/drm/lima/lima_object.h:31:18: warning: 'struct reservation_object' declared inside parameter list will not be visible outside of this definition or declaration
>               struct reservation_object *resv);
>                      ^~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_object.c: In function 'lima_bo_destroy':
>    drivers/gpu/drm/lima/lima_object.c:13:3: error: implicit declaration of function 'kfree'; did you mean 'vfree'? [-Werror=implicit-function-declaration]
>       kfree(bo->pages);
>       ^~~~~
>       vfree
>    drivers/gpu/drm/lima/lima_object.c: At top level:
>    drivers/gpu/drm/lima/lima_object.c:37:18: warning: 'struct reservation_object' declared inside parameter list will not be visible outside of this definition or declaration
>               struct reservation_object *resv)
>                      ^~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_object.c: In function 'lima_bo_create_struct':
>    drivers/gpu/drm/lima/lima_object.c:44:7: error: implicit declaration of function 'kzalloc'; did you mean 'vzalloc'? [-Werror=implicit-function-declaration]
>      bo = kzalloc(sizeof(*bo), GFP_KERNEL);
>           ^~~~~~~
>           vzalloc
>    drivers/gpu/drm/lima/lima_object.c:44:5: warning: assignment to 'struct lima_bo *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
>      bo = kzalloc(sizeof(*bo), GFP_KERNEL);
>         ^
>    drivers/gpu/drm/lima/lima_object.c:50:10: error: 'struct drm_gem_object' has no member named 'resv'; did you mean 'dev'?
>      bo->gem.resv = resv;
>              ^~~~
>              dev
>    drivers/gpu/drm/lima/lima_object.c: At top level:
>    drivers/gpu/drm/lima/lima_object.c:63:18: warning: 'struct reservation_object' declared inside parameter list will not be visible outside of this definition or declaration
>               struct reservation_object *resv)
>                      ^~~~~~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_object.c:61:17: error: conflicting types for 'lima_bo_create'
>     struct lima_bo *lima_bo_create(struct lima_device *dev, u32 size,
>                     ^~~~~~~~~~~~~~
>    In file included from drivers/gpu/drm/lima/lima_object.c:8:
>    drivers/gpu/drm/lima/lima_object.h:29:17: note: previous declaration of 'lima_bo_create' was here
>     struct lima_bo *lima_bo_create(struct lima_device *dev, u32 size,
>                     ^~~~~~~~~~~~~~
>    drivers/gpu/drm/lima/lima_object.c: In function 'lima_bo_create':
>    drivers/gpu/drm/lima/lima_object.c:69:47: error: passing argument 4 of 'lima_bo_create_struct' from incompatible pointer type [-Werror=incompatible-pointer-types]
>      bo = lima_bo_create_struct(dev, size, flags, resv);
>                                                   ^~~~
>    drivers/gpu/drm/lima/lima_object.c:37:38: note: expected 'struct reservation_object *' but argument is of type 'struct reservation_object *'
>               struct reservation_object *resv)
>               ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
> >> drivers/gpu/drm/lima/lima_object.c:75:23: error: implicit declaration of function 'kcalloc'; did you mean 'kvcalloc'? [-Werror=implicit-function-declaration]
>      bo->pages_dma_addr = kcalloc(npages, sizeof(dma_addr_t), GFP_KERNEL);
>                           ^~~~~~~
>                           kvcalloc
>    drivers/gpu/drm/lima/lima_object.c:75:21: warning: assignment to 'dma_addr_t *' {aka 'unsigned int *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
>      bo->pages_dma_addr = kcalloc(npages, sizeof(dma_addr_t), GFP_KERNEL);
>                         ^
>    drivers/gpu/drm/lima/lima_object.c:84:13: warning: assignment to 'struct page **' from 'int' makes pointer from integer without a cast [-Wint-conversion]
>       bo->pages = kcalloc(npages, sizeof(*bo->pages), GFP_KERNEL);
>                 ^
>    cc1: some warnings being treated as errors
>
> vim +168 drivers/gpu/drm/lima/lima_gem.c
>
>    131
>    132  static int lima_gem_sync_bo(struct lima_sched_task *task, struct lima_bo *bo,
>    133                              bool write, bool explicit)
>    134  {
>    135          int err = 0;
>    136
>    137          if (!write) {
>    138                  err = reservation_object_reserve_shared(bo->gem.resv, 1);
>    139                  if (err)
>    140                          return err;
>    141          }
>    142
>    143          /* explicit sync use user passed dep fence */
>    144          if (explicit)
>    145                  return 0;
>    146
>    147          /* implicit sync use bo fence in resv obj */
>    148          if (write) {
>    149                  unsigned nr_fences;
>    150                  struct dma_fence **fences;
>    151                  int i;
>    152
>  > 153                  err = reservation_object_get_fences_rcu(
>    154                          bo->gem.resv, NULL, &nr_fences, &fences);
>    155                  if (err || !nr_fences)
>    156                          return err;
>    157
>    158                  for (i = 0; i < nr_fences; i++) {
>    159                          err = lima_sched_task_add_dep(task, fences[i]);
>    160                          if (err)
>    161                                  break;
>    162                  }
>    163
>    164                  /* for error case free remaining fences */
>    165                  for ( ; i < nr_fences; i++)
>    166                          dma_fence_put(fences[i]);
>    167
>  > 168                  kfree(fences);
>    169          } else {
>    170                  struct dma_fence *fence;
>    171
>    172                  fence = reservation_object_get_excl_rcu(bo->gem.resv);
>    173                  if (fence) {
>    174                          err = lima_sched_task_add_dep(task, fence);
>    175                          if (err)
>    176                                  dma_fence_put(fence);
>    177                  }
>    178          }
>    179
>    180          return err;
>    181  }
>    182
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation


More information about the dri-devel mailing list