Re: [Intel-gfx] [PATCH 11/20] drm/i915/guc: Replace CTB array with explicit members

2021-06-03 Thread Daniel Vetter
On Thu, Jun 03, 2021 at 03:25:29PM +0800, kernel test robot wrote:
> Hi Matthew,
> 
> Thank you for the patch! Yet something to improve:
> 
> [auto build test ERROR on drm-tip/drm-tip]
> [also build test ERROR on drm-exynos/exynos-drm-next 
> tegra-drm/drm/tegra/for-next v5.13-rc4 next-20210602]
> [cannot apply to drm-intel/for-linux-next drm/drm-next]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
> 
> url:
> https://github.com/0day-ci/linux/commits/Matthew-Brost/GuC-CTBs-changes-a-few-misc-patches/20210603-130102
> base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
> config: i386-randconfig-a015-20210603 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
> reproduce (this is a W=1 build):
> # 
> https://github.com/0day-ci/linux/commit/7672d3ecddcd8af3a2a856facac49ca93d4bdf9e
> git remote add linux-review https://github.com/0day-ci/linux
> git fetch --no-tags linux-review 
> Matthew-Brost/GuC-CTBs-changes-a-few-misc-patches/20210603-130102
> git checkout 7672d3ecddcd8af3a2a856facac49ca93d4bdf9e
> # 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 
> 
> All errors (new ones prefixed by >>):
> 
>In file included from include/drm/drm_mm.h:49,
> from include/drm/drm_vma_manager.h:26,
> from include/drm/drm_gem.h:40,
> from drivers/gpu/drm/i915/i915_drv.h:54,
> from drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:6:
>drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c: In function 'intel_guc_ct_init':
> >> drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:34:26: error: format '%lx' 
> >> expects argument of type 'long unsigned int', but argument 5 has type 
> >> 'ptrdiff_t' {aka 'int'} [-Werror=format=]
>   34 |  drm_dbg(ct_to_drm(_ct), "CT: " _fmt, ##__VA_ARGS__)
>  |  ^~
>..
>  215 |ptrdiff(desc, blob), ptrdiff(cmds, blob), cmds_size);
>  |~~~
>  ||
>  |ptrdiff_t {aka int}
>include/drm/drm_print.h:448:56: note: in definition of macro 'drm_dbg'
>  448 |  drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, 
> ##__VA_ARGS__)
>  |^~~
>drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:214:2: note: in expansion of 
> macro 'CT_DEBUG'
>  214 |  CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
>  |  ^~~~
>drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:214:27: note: format string is 
> defined here
>  214 |  CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
>  |~~~^
>  |   |
>  |   long unsigned int

32bit ptrdiff vs 64bit printk modifier. You need something else here.

I've stuffed all the previous patches into drm-intel-gt-next. If you
resend with just this one fixed here I'll continue tomorrow (--in-reply-to
resend I mean).

Thanks, Daniel

>  |%#x
>In file included from include/drm/drm_mm.h:49,
> from include/drm/drm_vma_manager.h:26,
> from include/drm/drm_gem.h:40,
> from drivers/gpu/drm/i915/i915_drv.h:54,
> from drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:6:
>drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:34:26: error: format '%lx' 
> expects argument of type 'long unsigned int', but argument 6 has type 
> 'ptrdiff_t' {aka 'int'} [-Werror=format=]
>   34 |  drm_dbg(ct_to_drm(_ct), "CT: " _fmt, ##__VA_ARGS__)
>  |  ^~
>..
>  215 |ptrdiff(desc, blob), ptrdiff(cmds, blob), cmds_size);
>  | ~~~
>  | |
>  | ptrdiff_t {aka int}
>include/drm/drm_print.h:448:56: note: in definition of macro 'drm_dbg'
>  448 |  drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, 
> ##__VA_ARGS__)
>  |^~~
>drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:214:2: note: in expansion of 
> macro 'CT_DEBUG'
>  214 |  CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
>  |  ^~~~
>drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:214:37: note: format string is 
> defined here
>  214 |  CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
>  |  ~~~^
>  | |
>  | long unsigned int
>  |  %#x
>In 

Re: [Intel-gfx] [PATCH 11/20] drm/i915/guc: Replace CTB array with explicit members

2021-06-03 Thread kernel test robot
Hi Matthew,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-tip/drm-tip]
[also build test ERROR on drm-exynos/exynos-drm-next 
tegra-drm/drm/tegra/for-next v5.13-rc4 next-20210602]
[cannot apply to drm-intel/for-linux-next drm/drm-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:
https://github.com/0day-ci/linux/commits/Matthew-Brost/GuC-CTBs-changes-a-few-misc-patches/20210603-130102
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: i386-randconfig-a015-20210603 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# 
https://github.com/0day-ci/linux/commit/7672d3ecddcd8af3a2a856facac49ca93d4bdf9e
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review 
Matthew-Brost/GuC-CTBs-changes-a-few-misc-patches/20210603-130102
git checkout 7672d3ecddcd8af3a2a856facac49ca93d4bdf9e
# 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 

All errors (new ones prefixed by >>):

   In file included from include/drm/drm_mm.h:49,
from include/drm/drm_vma_manager.h:26,
from include/drm/drm_gem.h:40,
from drivers/gpu/drm/i915/i915_drv.h:54,
from drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:6:
   drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c: In function 'intel_guc_ct_init':
>> drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:34:26: error: format '%lx' expects 
>> argument of type 'long unsigned int', but argument 5 has type 'ptrdiff_t' 
>> {aka 'int'} [-Werror=format=]
  34 |  drm_dbg(ct_to_drm(_ct), "CT: " _fmt, ##__VA_ARGS__)
 |  ^~
   ..
 215 |ptrdiff(desc, blob), ptrdiff(cmds, blob), cmds_size);
 |~~~
 ||
 |ptrdiff_t {aka int}
   include/drm/drm_print.h:448:56: note: in definition of macro 'drm_dbg'
 448 |  drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, 
##__VA_ARGS__)
 |^~~
   drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:214:2: note: in expansion of macro 
'CT_DEBUG'
 214 |  CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
 |  ^~~~
   drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:214:27: note: format string is 
defined here
 214 |  CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
 |~~~^
 |   |
 |   long unsigned int
 |%#x
   In file included from include/drm/drm_mm.h:49,
from include/drm/drm_vma_manager.h:26,
from include/drm/drm_gem.h:40,
from drivers/gpu/drm/i915/i915_drv.h:54,
from drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:6:
   drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:34:26: error: format '%lx' expects 
argument of type 'long unsigned int', but argument 6 has type 'ptrdiff_t' {aka 
'int'} [-Werror=format=]
  34 |  drm_dbg(ct_to_drm(_ct), "CT: " _fmt, ##__VA_ARGS__)
 |  ^~
   ..
 215 |ptrdiff(desc, blob), ptrdiff(cmds, blob), cmds_size);
 | ~~~
 | |
 | ptrdiff_t {aka int}
   include/drm/drm_print.h:448:56: note: in definition of macro 'drm_dbg'
 448 |  drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, 
##__VA_ARGS__)
 |^~~
   drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:214:2: note: in expansion of macro 
'CT_DEBUG'
 214 |  CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
 |  ^~~~
   drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:214:37: note: format string is 
defined here
 214 |  CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
 |  ~~~^
 | |
 | long unsigned int
 |  %#x
   In file included from include/drm/drm_mm.h:49,
from include/drm/drm_vma_manager.h:26,
from include/drm/drm_gem.h:40,
from drivers/gpu/drm/i915/i915_drv.h:54,
from drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:6:
>> drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c:34:26: error: format '%lx' expects 
>> argument of type 'long unsigned int', but argument 5 has type 'ptrdiff_t' 
>> {aka 'int'} [-Werror=format=]
  34 |  

[Intel-gfx] [PATCH 11/20] drm/i915/guc: Replace CTB array with explicit members

2021-06-02 Thread Matthew Brost
From: Michal Wajdeczko 

Upcoming GuC firmware will always require just two CTBs and we
also plan to configure them with different sizes, so definining
them as array is no longer suitable.

Signed-off-by: Michal Wajdeczko 
Signed-off-by: Matthew Brost 
Reviewed-by: Matthew Brost 
---
 drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c | 46 ---
 drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h |  7 +++-
 2 files changed, 30 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
index 34c582105860..6864819b75a9 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
@@ -168,10 +168,10 @@ int intel_guc_ct_init(struct intel_guc_ct *ct)
struct intel_guc *guc = ct_to_guc(ct);
struct guc_ct_buffer_desc *desc;
u32 blob_size;
+   u32 cmds_size;
void *blob;
u32 *cmds;
int err;
-   int i;
 
GEM_BUG_ON(ct->vma);
 
@@ -207,15 +207,23 @@ int intel_guc_ct_init(struct intel_guc_ct *ct)
 
CT_DEBUG(ct, "base=%#x size=%u\n", intel_guc_ggtt_offset(guc, ct->vma), 
blob_size);
 
-   /* store pointers to desc and cmds */
-   for (i = 0; i < ARRAY_SIZE(ct->ctbs); i++) {
-   GEM_BUG_ON((i !=  CTB_SEND) && (i != CTB_RECV));
+   /* store pointers to desc and cmds for send ctb */
+   desc = blob;
+   cmds = blob + PAGE_SIZE / 2;
+   cmds_size = PAGE_SIZE / 4;
+   CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "send",
+ptrdiff(desc, blob), ptrdiff(cmds, blob), cmds_size);
 
-   desc = blob + PAGE_SIZE / 4 * i;
-   cmds = blob + PAGE_SIZE / 4 * i + PAGE_SIZE / 2;
+   guc_ct_buffer_init(>ctbs.send, desc, cmds, cmds_size);
 
-   guc_ct_buffer_init(>ctbs[i], desc, cmds, PAGE_SIZE / 4);
-   }
+   /* store pointers to desc and cmds for recv ctb */
+   desc = blob + PAGE_SIZE / 4;
+   cmds = blob + PAGE_SIZE / 4 + PAGE_SIZE / 2;
+   cmds_size = PAGE_SIZE / 4;
+   CT_DEBUG(ct, "%s desc %#lx cmds %#lx size %u\n", "recv",
+ptrdiff(desc, blob), ptrdiff(cmds, blob), cmds_size);
+
+   guc_ct_buffer_init(>ctbs.recv, desc, cmds, cmds_size);
 
return 0;
 }
@@ -246,7 +254,6 @@ int intel_guc_ct_enable(struct intel_guc_ct *ct)
u32 base, cmds;
void *blob;
int err;
-   int i;
 
GEM_BUG_ON(ct->enabled);
 
@@ -257,28 +264,25 @@ int intel_guc_ct_enable(struct intel_guc_ct *ct)
 
/* blob should start with send descriptor */
blob = __px_vaddr(ct->vma->obj);
-   GEM_BUG_ON(blob != ct->ctbs[CTB_SEND].desc);
+   GEM_BUG_ON(blob != ct->ctbs.send.desc);
 
/* (re)initialize descriptors */
-   for (i = 0; i < ARRAY_SIZE(ct->ctbs); i++) {
-   GEM_BUG_ON((i != CTB_SEND) && (i != CTB_RECV));
+   cmds = base + ptrdiff(ct->ctbs.send.cmds, blob);
+   guc_ct_buffer_reset(>ctbs.send, cmds);
 
-   cmds = base + ptrdiff(ct->ctbs[i].cmds, blob);
-   CT_DEBUG(ct, "%d: cmds addr=%#x\n", i, cmds);
-
-   guc_ct_buffer_reset(>ctbs[i], cmds);
-   }
+   cmds = base + ptrdiff(ct->ctbs.recv.cmds, blob);
+   guc_ct_buffer_reset(>ctbs.recv, cmds);
 
/*
 * Register both CT buffers starting with RECV buffer.
 * Descriptors are in first half of the blob.
 */
-   err = ct_register_buffer(ct, base + ptrdiff(ct->ctbs[CTB_RECV].desc, 
blob),
+   err = ct_register_buffer(ct, base + ptrdiff(ct->ctbs.recv.desc, blob),
 INTEL_GUC_CT_BUFFER_TYPE_RECV);
if (unlikely(err))
goto err_out;
 
-   err = ct_register_buffer(ct, base + ptrdiff(ct->ctbs[CTB_SEND].desc, 
blob),
+   err = ct_register_buffer(ct, base + ptrdiff(ct->ctbs.send.desc, blob),
 INTEL_GUC_CT_BUFFER_TYPE_SEND);
if (unlikely(err))
goto err_deregister;
@@ -341,7 +345,7 @@ static int ct_write(struct intel_guc_ct *ct,
u32 len /* in dwords */,
u32 fence)
 {
-   struct intel_guc_ct_buffer *ctb = >ctbs[CTB_SEND];
+   struct intel_guc_ct_buffer *ctb = >ctbs.send;
struct guc_ct_buffer_desc *desc = ctb->desc;
u32 head = desc->head;
u32 tail = desc->tail;
@@ -557,7 +561,7 @@ static inline bool ct_header_is_response(u32 header)
 
 static int ct_read(struct intel_guc_ct *ct, u32 *data)
 {
-   struct intel_guc_ct_buffer *ctb = >ctbs[CTB_RECV];
+   struct intel_guc_ct_buffer *ctb = >ctbs.recv;
struct guc_ct_buffer_desc *desc = ctb->desc;
u32 head = desc->head;
u32 tail = desc->tail;
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h
index 4009e2dd0de4..fc9486779e87 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h