[Intel-gfx] [PULL] gvt-next

2020-09-09 Thread Zhenyu Wang

Hi,

As we split pull request for 5.10 this time, here's gvt-next pull
for 5.10. For gvt ww lock fix, Zhi would send another pull based
on gem-next.

This includes current command access flag cleanup for
handlers which would be used for next refined cmd scan. And also
two more recent fixes on workaround cmd access and MIA reset state.

Thanks
--
The following changes since commit ced026e959bec5046afa310d6474e147b6294da2:

  drm/i915: Update DRIVER_DATE to 20200824 (2020-08-24 14:26:38 -0400)

are available in the Git repository at:

  https://github.com/intel/gvt-linux tags/gvt-next-2020-09-10

for you to fetch changes up to df398e33b8fd3ac28b3c7166de555e38d26e7391:

  drm/i915/gvt: Init vreg GUC_STATUS to GS_MIA_IN_RESET (2020-09-10 13:49:05 
+0800)


gvt-next-2020-09-10

- Cleanup command access flag (Yan)
- New workaround cmd access fix (Colin)
- MIA reset state fix (Colin)


Colin Xu (2):
  drm/i915/gvt: Add F_CMD_ACCESS for some GEN9 SKU WA MMIO access
  drm/i915/gvt: Init vreg GUC_STATUS to GS_MIA_IN_RESET

Yan Zhao (4):
  drm/i915/gvt: rename F_IN_CTX flag to F_SR_IN_CTX
  drm/i915/gvt: remove flag F_CMD_ACCESSED
  drm/i915/gvt: add/modify interfaces for flag F_CMD_ACCESS
  drm/i915/gvt: remove F_CMD_ACCESS flag for some registers

 drivers/gpu/drm/i915/gvt/cmd_parser.c   |  6 ++---
 drivers/gpu/drm/i915/gvt/gvt.h  | 44 +++--
 drivers/gpu/drm/i915/gvt/handlers.c | 32 +---
 drivers/gpu/drm/i915/gvt/mmio.c |  3 +++
 drivers/gpu/drm/i915/gvt/mmio_context.c |  2 +-
 5 files changed, 49 insertions(+), 38 deletions(-)

-- 

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827


signature.asc
Description: PGP signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PULL] drm-misc-fixes

2020-09-09 Thread Maarten Lankhorst
drm-misc-fixes-2020-09-09:
drm-misc-fixes for v5.9-rc5:
- Fix double free in virtio.
- Add missing put_device in sun4i, and other fixes.
- Small ingenic fixes.
- Handle sun4i alpha on lowest plane correctly.
- Remove output->enabled from virtio, as it should use crtc_state.
- Fix tve200 enable/disable.
- Documentation fix.
- Fix virtio unblank.
The following changes since commit 7fd5b25499bcec157dd4de9a713425efcf4571cd:

  drm/omap: fix incorrect lock state (2020-08-25 12:05:15 +0300)

are available in the Git repository at:

  git://anongit.freedesktop.org/drm/drm-misc tags/drm-misc-fixes-2020-09-09

for you to fetch changes up to fc7f148feb8975784bd40e41fff875d33f698be8:

  drm/virtio: drop virtio_gpu_output->enabled (2020-09-04 13:11:32 +0200)


drm-misc-fixes for v5.9-rc5:
- Fix double free in virtio.
- Add missing put_device in sun4i, and other fixes.
- Small ingenic fixes.
- Handle sun4i alpha on lowest plane correctly.
- Remove output->enabled from virtio, as it should use crtc_state.
- Fix tve200 enable/disable.
- Documentation fix.
- Fix virtio unblank.


Gerd Hoffmann (2):
  drm/virtio: fix unblank
  drm/virtio: drop virtio_gpu_output->enabled

Gurchetan Singh (1):
  drm/virtio: Revert "drm/virtio: Call the right shmem helpers"

Jernej Skrabec (1):
  drm/sun4i: Fix DE2 YVU handling

Krzysztof Kozlowski (2):
  dma-buf: Fix kerneldoc of dma_buf_set_name()
  dma-buf: fence-chain: Document missing dma_fence_chain_init() parameter 
in kerneldoc

Linus Walleij (1):
  drm/tve200: Stabilize enable/disable

Maxime Ripard (2):
  drm/sun4i: backend: Support alpha property on lowest plane
  drm/sun4i: backend: Disable alpha on the lowest plane on the A20

Ondrej Jirman (1):
  drm/sun4i: Fix dsi dcs long write function

Paul Cercueil (2):
  drm/ingenic: Fix leak of device_node pointer
  drm/ingenic: Fix driver not probing when IPU port is missing

Randy Dunlap (1):
  Documentation: fix dma-buf.rst underline length warning

Yu Kuai (1):
  drm/sun4i: add missing put_device() call in sun8i_r40_tcon_tv_set_mux()

 Documentation/driver-api/dma-buf.rst  |  2 +-
 drivers/dma-buf/dma-buf.c |  6 +++---
 drivers/dma-buf/dma-fence-chain.c |  1 +
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 20 
 drivers/gpu/drm/sun4i/sun4i_backend.c |  4 +---
 drivers/gpu/drm/sun4i/sun4i_tcon.c|  8 ++--
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c|  4 ++--
 drivers/gpu/drm/sun4i/sun8i_vi_layer.c|  2 +-
 drivers/gpu/drm/tve200/tve200_display.c   | 22 +-
 drivers/gpu/drm/virtio/virtgpu_display.c  | 15 +++
 drivers/gpu/drm/virtio/virtgpu_drv.h  |  2 +-
 drivers/gpu/drm/virtio/virtgpu_object.c   |  8 +++-
 drivers/gpu/drm/virtio/virtgpu_plane.c|  6 --
 13 files changed, 71 insertions(+), 29 deletions(-)
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] linux-next: manual merge of the extcon tree with the drm-misc tree

2020-09-09 Thread Stephen Rothwell
Hi all,

Today's linux-next merge of the extcon tree got a conflict in:

  MAINTAINERS

between commit:

  f61249dddecc ("MAINTAINERS: Add entry for i.MX 8MQ DCSS driver")

from the drm-misc tree and commit:

  d0e3c25150dd ("MAINTAINERS: Add entry for NXP PTN5150A CC driver")

from the extcon tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc MAINTAINERS
index 623c53ab5bd5,da94c9b12f1b..
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@@ -12496,14 -12430,13 +12496,21 @@@ F:
drivers/iio/gyro/fxas21002c_core.
  F:drivers/iio/gyro/fxas21002c_i2c.c
  F:drivers/iio/gyro/fxas21002c_spi.c
  
 +NXP i.MX 8MQ DCSS DRIVER
 +M:Laurentiu Palcu 
 +R:Lucas Stach 
 +L:dri-de...@lists.freedesktop.org
 +S:Maintained
 +F:Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
 +F:drivers/gpu/drm/imx/dcss/
 +
+ NXP PTN5150A CC LOGIC AND EXTCON DRIVER
+ M:Krzysztof Kozlowski 
+ L:linux-ker...@vger.kernel.org
+ S:Maintained
+ F:Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml
+ F:drivers/extcon/extcon-ptn5150.c
+ 
  NXP SGTL5000 DRIVER
  M:Fabio Estevam 
  L:alsa-de...@alsa-project.org (moderated for non-subscribers)


pgp9dYrGNQgIQ.pgp
Description: OpenPGP digital signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/dp: DP PHY compliance for JSL (rev11)

2020-09-09 Thread Patchwork
== Series Details ==

Series: drm/i915/dp: DP PHY compliance for JSL (rev11)
URL   : https://patchwork.freedesktop.org/series/77977/
State : failure

== Summary ==

Applying: drm/i915/dp: DP PHY compliance for EHL/JSL
error: sha1 information is lacking or useless 
(drivers/gpu/drm/i915/display/intel_dp.c).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 drm/i915/dp: DP PHY compliance for EHL/JSL
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] [RFC] drm/i915/dp: DP PHY compliance for EHL/JSL

2020-09-09 Thread Vidya Srinivas
Please Note: Comment from Ville could not be addressed
as his comments are with respect to base implementation
(design) which are already merged. We need JSL changes
for compliance. Hence pushing the required changes
on top of existing design. Apoligies for that.

v2: Rebased patch on top of Khaled's (yet to be merged):
https://patchwork.freedesktop.org/series/79779/
Fixed phy patterns for JSL/EHL
Add TPS4 support for JSL/EHL

Signed-off-by: Khaled Almahallawy 
Signed-off-by: Vidya Srinivas 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 106 +++-
 drivers/gpu/drm/i915/i915_reg.h |  18 +-
 2 files changed, 92 insertions(+), 32 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index a8a3ffcef5dc..0a535932ed18 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5404,26 +5404,37 @@ static void intel_dp_phy_pattern_update(struct intel_dp 
*intel_dp)
struct intel_crtc *crtc = to_intel_crtc(dig_port->base.base.crtc);
enum pipe pipe = crtc->pipe;
u32 pattern_val, dp_tp_ctl;
+   i915_reg_t dp_tp_reg, dp_comp_reg;
+
+   if (IS_ELKHARTLAKE(dev_priv))
+   dp_tp_reg = DP_TP_CTL(dig_port->base.port);
+   else if (IS_TIGERLAKE(dev_priv))
+   dp_tp_reg = TGL_DP_TP_CTL(pipe);
+
+   if (IS_ELKHARTLAKE(dev_priv))
+   dp_comp_reg = EHL_DDI_DP_COMP_CTL(dig_port->base.port);
+   else if (IS_TIGERLAKE(dev_priv))
+   dp_comp_reg = DDI_DP_COMP_CTL(pipe);
 
switch (data->phy_pattern) {
case DP_PHY_TEST_PATTERN_NONE:
DRM_DEBUG_KMS("Disable Phy Test Pattern\n");
-   intel_de_write(dev_priv, DDI_DP_COMP_CTL(pipe), 0x0);
+   intel_de_write(dev_priv, dp_comp_reg, 0x0);
break;
case DP_PHY_TEST_PATTERN_D10_2:
DRM_DEBUG_KMS("Set D10.2 Phy Test Pattern\n");
-   intel_de_write(dev_priv, DDI_DP_COMP_CTL(pipe),
+   intel_de_write(dev_priv, dp_comp_reg,
   DDI_DP_COMP_CTL_ENABLE | DDI_DP_COMP_CTL_D10_2);
break;
case DP_PHY_TEST_PATTERN_ERROR_COUNT:
DRM_DEBUG_KMS("Set Error Count Phy Test Pattern\n");
-   intel_de_write(dev_priv, DDI_DP_COMP_CTL(pipe),
+   intel_de_write(dev_priv, dp_comp_reg,
   DDI_DP_COMP_CTL_ENABLE |
   DDI_DP_COMP_CTL_SCRAMBLED_0);
break;
case DP_PHY_TEST_PATTERN_PRBS7:
DRM_DEBUG_KMS("Set PRBS7 Phy Test Pattern\n");
-   intel_de_write(dev_priv, DDI_DP_COMP_CTL(pipe),
+   intel_de_write(dev_priv, dp_comp_reg,
   DDI_DP_COMP_CTL_ENABLE | DDI_DP_COMP_CTL_PRBS7);
break;
case DP_PHY_TEST_PATTERN_80BIT_CUSTOM:
@@ -5432,14 +5443,27 @@ static void intel_dp_phy_pattern_update(struct intel_dp 
*intel_dp)
 * current firmware of DPR-100 could not set it, so hardcoding
 * now for complaince test.
 */
-   DRM_DEBUG_KMS("Set 80Bit Custom Phy Test Pattern 0x3e0f83e0 
0x0f83e0f8 0xf83e\n");
+   DRM_DEBUG_KMS("Set 80Bit Custom Phy Test Pattern \
+ 0x3e0f83e0 0x0f83e0f8 0xf83e\n");
pattern_val = 0x3e0f83e0;
-   intel_de_write(dev_priv, DDI_DP_COMP_PAT(pipe, 0), pattern_val);
+   if (IS_ELKHARTLAKE(dev_priv))
+   intel_de_write(dev_priv, 
EHL_DDI_DP_COMP_PAT(dig_port->base.port, 0),
+  pattern_val);
+   else
+   intel_de_write(dev_priv, DDI_DP_COMP_PAT(pipe, 0), 
pattern_val);
pattern_val = 0x0f83e0f8;
-   intel_de_write(dev_priv, DDI_DP_COMP_PAT(pipe, 1), pattern_val);
+   if (IS_ELKHARTLAKE(dev_priv))
+   intel_de_write(dev_priv, 
EHL_DDI_DP_COMP_PAT(dig_port->base.port, 1),
+  pattern_val);
+   else
+   intel_de_write(dev_priv, DDI_DP_COMP_PAT(pipe, 1), 
pattern_val);
pattern_val = 0xf83e;
-   intel_de_write(dev_priv, DDI_DP_COMP_PAT(pipe, 2), pattern_val);
-   intel_de_write(dev_priv, DDI_DP_COMP_CTL(pipe),
+   if (IS_ELKHARTLAKE(dev_priv))
+   intel_de_write(dev_priv, 
EHL_DDI_DP_COMP_PAT(dig_port->base.port, 2),
+  pattern_val);
+   else
+   intel_de_write(dev_priv, DDI_DP_COMP_PAT(pipe, 2), 
pattern_val);
+   intel_de_write(dev_priv, dp_comp_reg,
   DDI_DP_COMP_CTL_ENABLE |
   DDI_DP_COMP_CTL_CUSTOM80);
break;
@@ -5451,20 

Re: [Intel-gfx] [PATCH 01/24] drm/armada: Use devm_drm_dev_alloc

2020-09-09 Thread Dave Airlie
For the two armada patches.

Reviewed-by: Dave Airlie 

On Sat, 5 Sep 2020 at 00:40, Daniel Vetter  wrote:
>
> Also remove the now no longer needed build bug on since that's already
> not needed anymore with drmm_add_final_kfree. Conversion to managed
> drm_device cleanup is easy, the final drm_dev_put() is already the
> last thing in both the bind unbind as in the unbind flow.
>
> Also, this relies on component.c correctly wrapping bind in
> separate devres groups, which it does.
>
> Signed-off-by: Daniel Vetter 
> Cc: Russell King 
> ---
>  drivers/gpu/drm/armada/armada_drv.c | 26 ++
>  1 file changed, 6 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/armada/armada_drv.c 
> b/drivers/gpu/drm/armada/armada_drv.c
> index 5fc25c3f445c..a8d5908b3922 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -87,24 +87,13 @@ static int armada_drm_bind(struct device *dev)
>  "armada-drm"))
> return -EBUSY;
>
> -   priv = kzalloc(sizeof(*priv), GFP_KERNEL);
> -   if (!priv)
> -   return -ENOMEM;
> -
> -   /*
> -* The drm_device structure must be at the start of
> -* armada_private for drm_dev_put() to work correctly.
> -*/
> -   BUILD_BUG_ON(offsetof(struct armada_private, drm) != 0);
> -
> -   ret = drm_dev_init(>drm, _drm_driver, dev);
> -   if (ret) {
> -   dev_err(dev, "[" DRM_NAME ":%s] drm_dev_init failed: %d\n",
> -   __func__, ret);
> -   kfree(priv);
> -   return ret;
> +   priv = devm_drm_dev_alloc(dev, _drm_driver,
> + struct armada_private, drm);
> +   if (IS_ERR(priv)) {
> +   dev_err(dev, "[" DRM_NAME ":%s] devm_drm_dev_alloc failed: 
> %li\n",
> +   __func__, PTR_ERR(priv));
> +   return PTR_ERR(priv);
> }
> -   drmm_add_final_kfree(>drm, priv);
>
> /* Remove early framebuffers */
> ret = drm_fb_helper_remove_conflicting_framebuffers(NULL,
> @@ -174,7 +163,6 @@ static int armada_drm_bind(struct device *dev)
>   err_kms:
> drm_mode_config_cleanup(>drm);
> drm_mm_takedown(>linear);
> -   drm_dev_put(>drm);
> return ret;
>  }
>
> @@ -194,8 +182,6 @@ static void armada_drm_unbind(struct device *dev)
>
> drm_mode_config_cleanup(>drm);
> drm_mm_takedown(>linear);
> -
> -   drm_dev_put(>drm);
>  }
>
>  static int compare_of(struct device *dev, void *data)
> --
> 2.28.0
>
> ___
> dri-devel mailing list
> dri-de...@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/tgl: Make Wa_1606700617/22010271021 permanent

2020-09-09 Thread Souza, Jose
On Wed, 2020-09-09 at 12:14 -0700, Swathi Dhanavanthri wrote:
> This workaround now applies to all TGL steppings.
> 
> Signed-off-by: Swathi Dhanavanthri <
> swathi.dhanavant...@intel.com
> >
> ---
>  drivers/gpu/drm/i915/gt/intel_workarounds.c | 7 ---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c 
> b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 39817c5a7058..f2225f065799 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -1729,10 +1729,11 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, 
> struct i915_wa_list *wal)
>GEN6_RC_SLEEP_PSMI_CONTROL,
>GEN12_WAIT_FOR_EVENT_POWER_DOWN_DISABLE |
>GEN8_RC_SEMA_IDLE_MSG_DISABLE);
> - }
>  
> - if (IS_TGL_U(i915) || IS_TGL_Y(i915)) {
> - /* Wa_1606700617:tgl */
> + /*
> +  * Wa_1606700617:tgl
> +  * Wa_22010271021:tgl
> +  */

this is extending the wa to RKL too.

>   wa_masked_en(wal,
>GEN9_CS_DEBUG_MODE1,
>FF_DOP_CLOCK_GATE_DISABLE);
> 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [trivial PATCH] treewide: Convert switch/case fallthrough; to break;

2020-09-09 Thread Joe Perches
On Wed, 2020-09-09 at 19:36 -0300, Jason Gunthorpe wrote:
> On Wed, Sep 09, 2020 at 01:06:39PM -0700, Joe Perches wrote:
> > fallthrough to a separate case/default label break; isn't very readable.
> > 
> > Convert pseudo-keyword fallthrough; statements to a simple break; when
> > the next label is case or default and the only statement in the next
> > label block is break;
> > 
> > Found using:
> > 
> > $ grep-2.5.4 -rP --include=*.[ch] -n 
> > "fallthrough;(\s*(case\s+\w+|default)\s*:\s*){1,7}break;" *
> > 
> > Miscellanea:
> > 
> > o Move or coalesce a couple label blocks above a default: block.
> > 
> > Signed-off-by: Joe Perches 
> > ---
> > 
> > Compiled allyesconfig x86-64 only.
> > A few files for other arches were not compiled.
> 
> IB part looks OK, I prefer it like this
> 
> You could do the same for continue as well, I saw a few of those..

I saw some continue uses as well but wasn't sure
and didn't look to see if the switch/case with
continue was in a for/while loop.


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Reduce INTEL_DISPLAY_ENABLED to just removing the outputs

2020-09-09 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915: Reduce INTEL_DISPLAY_ENABLED to 
just removing the outputs
URL   : https://patchwork.freedesktop.org/series/81507/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8992 -> Patchwork_18463


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_18463 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_18463, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/index.html

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_18463:

### IGT changes ###

 Possible regressions 

  * igt@i915_pm_rpm@module-reload:
- fi-byt-j1900:   [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-byt-j1900/igt@i915_pm_...@module-reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-byt-j1900/igt@i915_pm_...@module-reload.html

  * igt@i915_selftest@live@workarounds:
- fi-blb-e6850:   [PASS][3] -> [INCOMPLETE][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-blb-e6850/igt@i915_selftest@l...@workarounds.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-blb-e6850/igt@i915_selftest@l...@workarounds.html

  
Known issues


  Here are the changes found in Patchwork_18463 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_gttfill@basic:
- fi-bdw-5557u:   [PASS][5] -> [INCOMPLETE][6] ([i915#2439])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-bdw-5557u/igt@gem_exec_gttf...@basic.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-bdw-5557u/igt@gem_exec_gttf...@basic.html
- fi-kbl-7500u:   [PASS][7] -> [INCOMPLETE][8] ([i915#2439])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-kbl-7500u/igt@gem_exec_gttf...@basic.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-kbl-7500u/igt@gem_exec_gttf...@basic.html
- fi-elk-e7500:   [PASS][9] -> [INCOMPLETE][10] ([i915#2439] / 
[i915#66])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-elk-e7500/igt@gem_exec_gttf...@basic.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-elk-e7500/igt@gem_exec_gttf...@basic.html
- fi-ilk-650: [PASS][11] -> [INCOMPLETE][12] ([i915#2439])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-ilk-650/igt@gem_exec_gttf...@basic.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-ilk-650/igt@gem_exec_gttf...@basic.html

  * igt@gem_tiled_fence_blits@basic:
- fi-snb-2600:[PASS][13] -> [DMESG-WARN][14] ([i915#2439])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-snb-2600/igt@gem_tiled_fence_bl...@basic.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-snb-2600/igt@gem_tiled_fence_bl...@basic.html

  * igt@i915_selftest@live@gem_execbuf:
- fi-byt-j1900:   [PASS][15] -> [INCOMPLETE][16] ([i915#2439])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-byt-j1900/igt@i915_selftest@live@gem_execbuf.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-byt-j1900/igt@i915_selftest@live@gem_execbuf.html

  * igt@i915_selftest@live@workarounds:
- fi-pnv-d510:[PASS][17] -> [INCOMPLETE][18] ([i915#299])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-pnv-d510/igt@i915_selftest@l...@workarounds.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-pnv-d510/igt@i915_selftest@l...@workarounds.html
- fi-gdg-551: [PASS][19] -> [INCOMPLETE][20] ([i915#172])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-gdg-551/igt@i915_selftest@l...@workarounds.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-gdg-551/igt@i915_selftest@l...@workarounds.html

  
 Possible fixes 

  * igt@gem_exec_gttfill@basic:
- fi-kbl-r:   [INCOMPLETE][21] ([i915#2439]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-kbl-r/igt@gem_exec_gttf...@basic.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-kbl-r/igt@gem_exec_gttf...@basic.html
- fi-apl-guc: [INCOMPLETE][23] ([i915#1635] / [i915#2439]) -> 
[PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-apl-guc/igt@gem_exec_gttf...@basic.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18463/fi-apl-guc/igt@gem_exec_gttf...@basic.html
- {fi-ehl-1}: [INCOMPLETE][25] ([CI#80] / [i915#2439]) -> [PASS][26]
   [25]: 

[Intel-gfx] [PATCH 1/2] drm/i915: Reduce INTEL_DISPLAY_ENABLED to just removing the outputs

2020-09-09 Thread Ville Syrjala
From: Ville Syrjälä 

Having a mode where the display hardware is present but we try
to pretend it isn't just leads to massive headaches when trying
to reason what the fallout might be from skipping some random
bits of programming.

Let's just neuter INTEL_DISPLAY_ENABLED so that we treat the
hardware as fully present, except we just don't register any
outputs. That's still rather sketchy if the outputs are already
enabled when the driver is loaded. I think the simplest solution
would be to probe everything as normal and just return
disconnected" from all .detect() hooks. That would avoid anything
automagically enabling those outputs, but the driver could then
shut things down using the normal codepaths.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/intel_bios.c| 2 +-
 drivers/gpu/drm/i915/display/intel_display.c | 8 
 drivers/gpu/drm/i915/display/intel_fbdev.c   | 3 +--
 drivers/gpu/drm/i915/display/intel_gmbus.c   | 2 +-
 drivers/gpu/drm/i915/i915_drv.c  | 4 ++--
 5 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c 
b/drivers/gpu/drm/i915/display/intel_bios.c
index a0a41ec5c341..c110cd9e8a73 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2133,7 +2133,7 @@ void intel_bios_init(struct drm_i915_private *dev_priv)
 
INIT_LIST_HEAD(_priv->vbt.display_devices);
 
-   if (!HAS_DISPLAY(dev_priv) || !INTEL_DISPLAY_ENABLED(dev_priv)) {
+   if (!HAS_DISPLAY(dev_priv)) {
drm_dbg_kms(_priv->drm,
"Skipping VBT init due to disabled display.\n");
return;
diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index ec148a8da2c2..bacaf713eed4 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -17882,7 +17882,7 @@ int intel_modeset_init_noirq(struct drm_i915_private 
*i915)
if (i915_inject_probe_failure(i915))
return -ENODEV;
 
-   if (HAS_DISPLAY(i915) && INTEL_DISPLAY_ENABLED(i915)) {
+   if (HAS_DISPLAY(i915)) {
ret = drm_vblank_init(>drm,
  INTEL_NUM_PIPES(i915));
if (ret)
@@ -17956,7 +17956,7 @@ int intel_modeset_init_nogem(struct drm_i915_private 
*i915)
INTEL_NUM_PIPES(i915),
INTEL_NUM_PIPES(i915) > 1 ? "s" : "");
 
-   if (HAS_DISPLAY(i915) && INTEL_DISPLAY_ENABLED(i915)) {
+   if (HAS_DISPLAY(i915)) {
for_each_pipe(i915, pipe) {
ret = intel_crtc_init(i915, pipe);
if (ret) {
@@ -18045,7 +18045,7 @@ int intel_modeset_init(struct drm_i915_private *i915)
 
intel_overlay_setup(i915);
 
-   if (!HAS_DISPLAY(i915) || !INTEL_DISPLAY_ENABLED(i915))
+   if (!HAS_DISPLAY(i915))
return 0;
 
ret = intel_fbdev_init(>drm);
@@ -19018,7 +19018,7 @@ intel_display_capture_error_state(struct 
drm_i915_private *dev_priv)
 
BUILD_BUG_ON(ARRAY_SIZE(transcoders) != ARRAY_SIZE(error->transcoder));
 
-   if (!HAS_DISPLAY(dev_priv) || !INTEL_DISPLAY_ENABLED(dev_priv))
+   if (!HAS_DISPLAY(dev_priv))
return NULL;
 
error = kzalloc(sizeof(*error), GFP_ATOMIC);
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c 
b/drivers/gpu/drm/i915/display/intel_fbdev.c
index bd39eb6a21b8..842c04e63214 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -451,8 +451,7 @@ int intel_fbdev_init(struct drm_device *dev)
struct intel_fbdev *ifbdev;
int ret;
 
-   if (drm_WARN_ON(dev, !HAS_DISPLAY(dev_priv) ||
-   !INTEL_DISPLAY_ENABLED(dev_priv)))
+   if (drm_WARN_ON(dev, !HAS_DISPLAY(dev_priv)))
return -ENODEV;
 
ifbdev = kzalloc(sizeof(struct intel_fbdev), GFP_KERNEL);
diff --git a/drivers/gpu/drm/i915/display/intel_gmbus.c 
b/drivers/gpu/drm/i915/display/intel_gmbus.c
index a8d119b6b45c..e6b8d6dfb598 100644
--- a/drivers/gpu/drm/i915/display/intel_gmbus.c
+++ b/drivers/gpu/drm/i915/display/intel_gmbus.c
@@ -834,7 +834,7 @@ int intel_gmbus_setup(struct drm_i915_private *dev_priv)
unsigned int pin;
int ret;
 
-   if (!HAS_DISPLAY(dev_priv) || !INTEL_DISPLAY_ENABLED(dev_priv))
+   if (!HAS_DISPLAY(dev_priv))
return 0;
 
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d66fe09d337e..9b35af2cf225 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -693,7 +693,7 @@ static void i915_driver_register(struct drm_i915_private 
*dev_priv)
drm_err(_priv->drm,
"Failed to register driver for userspace access!\n");

[Intel-gfx] [PATCH 2/2] drm/i915: Reduce INTEL_DISPLAY_ENABLED to just treat outputs as disconnected

2020-09-09 Thread Ville Syrjala
From: Ville Syrjälä 

Since the display hardware is all there even when INTEL_DISPLAY_ENABLED
return false we have to be capable of shutting it down cleanly so
as to not anger the hw. To that end let's reduce the effect of
!INTEL_DISPLAY_ENABLE to just treating all outputs as disconnected.
Should prevent anyone from automagically enabling any of them, while
still allowing us to cleanly shut them down.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/icl_dsi.c   |  1 +
 drivers/gpu/drm/i915/display/intel_crt.c |  3 +++
 drivers/gpu/drm/i915/display/intel_display.c |  2 +-
 drivers/gpu/drm/i915/display/intel_dp.c  |  3 +++
 drivers/gpu/drm/i915/display/intel_dp_mst.c  |  4 
 drivers/gpu/drm/i915/display/intel_dvo.c |  6 ++
 drivers/gpu/drm/i915/display/intel_hdmi.c|  3 +++
 drivers/gpu/drm/i915/display/intel_lvds.c|  8 +---
 drivers/gpu/drm/i915/display/intel_panel.c   | 11 +++
 drivers/gpu/drm/i915/display/intel_panel.h   |  2 ++
 drivers/gpu/drm/i915/display/intel_sdvo.c|  6 +-
 drivers/gpu/drm/i915/display/intel_tv.c  |  3 +++
 drivers/gpu/drm/i915/display/vlv_dsi.c   |  1 +
 13 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c 
b/drivers/gpu/drm/i915/display/icl_dsi.c
index f4053dd6bde9..520715b7d5b5 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -1646,6 +1646,7 @@ static const struct drm_encoder_funcs 
gen11_dsi_encoder_funcs = {
 };
 
 static const struct drm_connector_funcs gen11_dsi_connector_funcs = {
+   .detect = intel_panel_detect,
.late_register = intel_connector_register,
.early_unregister = intel_connector_unregister,
.destroy = intel_connector_destroy,
diff --git a/drivers/gpu/drm/i915/display/intel_crt.c 
b/drivers/gpu/drm/i915/display/intel_crt.c
index 5b4510ce5693..a4f83ab60f23 100644
--- a/drivers/gpu/drm/i915/display/intel_crt.c
+++ b/drivers/gpu/drm/i915/display/intel_crt.c
@@ -557,6 +557,9 @@ static bool intel_crt_detect_hotplug(struct drm_connector 
*connector)
bool ret = false;
int i, tries = 0;
 
+   if (!INTEL_DISPLAY_ENABLED(dev_priv))
+   return connector_status_disconnected;
+
if (HAS_PCH_SPLIT(dev_priv))
return ilk_crt_detect_hotplug(connector);
 
diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index bacaf713eed4..5611a3d95594 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -16893,7 +16893,7 @@ static void intel_setup_outputs(struct drm_i915_private 
*dev_priv)
 
intel_pps_init(dev_priv);
 
-   if (!HAS_DISPLAY(dev_priv) || !INTEL_DISPLAY_ENABLED(dev_priv))
+   if (!HAS_DISPLAY(dev_priv))
return;
 
if (IS_ROCKETLAKE(dev_priv)) {
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 8a673d0d7051..1a8185f8fb8e 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6103,6 +6103,9 @@ intel_dp_detect(struct drm_connector *connector,
drm_WARN_ON(_priv->drm,

!drm_modeset_is_locked(_priv->drm.mode_config.connection_mutex));
 
+   if (!INTEL_DISPLAY_ENABLED(dev_priv))
+   return connector_status_disconnected;
+
/* Can't disconnect eDP */
if (intel_dp_is_edp(intel_dp))
status = edp_detect(intel_dp);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c 
b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index b6424bf5d544..64d885539e94 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -719,9 +719,13 @@ static int
 intel_dp_mst_detect(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx, bool force)
 {
+   struct drm_i915_private *i915 = to_i915(connector->dev);
struct intel_connector *intel_connector = to_intel_connector(connector);
struct intel_dp *intel_dp = intel_connector->mst_port;
 
+   if (!INTEL_DISPLAY_ENABLED(i915))
+   return connector_status_disconnected;
+
if (drm_connector_is_unregistered(connector))
return connector_status_disconnected;
 
diff --git a/drivers/gpu/drm/i915/display/intel_dvo.c 
b/drivers/gpu/drm/i915/display/intel_dvo.c
index 307ed8ae9a19..237dbb1ba0ee 100644
--- a/drivers/gpu/drm/i915/display/intel_dvo.c
+++ b/drivers/gpu/drm/i915/display/intel_dvo.c
@@ -313,9 +313,15 @@ static void intel_dvo_pre_enable(struct intel_atomic_state 
*state,
 static enum drm_connector_status
 intel_dvo_detect(struct drm_connector *connector, bool force)
 {
+   struct drm_i915_private *i915 = to_i915(connector->dev);
struct intel_dvo *intel_dvo = 
intel_attached_dvo(to_intel_connector(connector));
+

Re: [Intel-gfx] [trivial PATCH] treewide: Convert switch/case fallthrough; to break;

2020-09-09 Thread Gustavo A. R. Silva



On 9/9/20 15:06, Joe Perches wrote:
> fallthrough to a separate case/default label break; isn't very readable.
> 
> Convert pseudo-keyword fallthrough; statements to a simple break; when
> the next label is case or default and the only statement in the next
> label block is break;
> 
> Found using:
> 
> $ grep-2.5.4 -rP --include=*.[ch] -n 
> "fallthrough;(\s*(case\s+\w+|default)\s*:\s*){1,7}break;" *
> 
> Miscellanea:
> 
> o Move or coalesce a couple label blocks above a default: block.
> 
> Signed-off-by: Joe Perches 

Acked-by: Gustavo A. R. Silva 

Thanks
--
Gustavo

> ---
> 
> Compiled allyesconfig x86-64 only.
> A few files for other arches were not compiled.
> 
>  arch/arm/mach-mmp/pm-pxa910.c |  2 +-
>  arch/arm64/kvm/handle_exit.c  |  2 +-
>  arch/mips/kernel/cpu-probe.c  |  2 +-
>  arch/mips/math-emu/cp1emu.c   |  2 +-
>  arch/s390/pci/pci.c   |  2 +-
>  crypto/tcrypt.c   |  4 ++--
>  drivers/ata/sata_mv.c |  2 +-
>  drivers/atm/lanai.c   |  2 +-
>  drivers/gpu/drm/i915/display/intel_sprite.c   |  2 +-
>  drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.c   |  2 +-
>  drivers/hid/wacom_wac.c   |  2 +-
>  drivers/i2c/busses/i2c-i801.c |  2 +-
>  drivers/infiniband/ulp/rtrs/rtrs-clt.c| 14 +++---
>  drivers/infiniband/ulp/rtrs/rtrs-srv.c|  6 +++---
>  drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c   |  2 +-
>  drivers/irqchip/irq-vic.c |  4 ++--
>  drivers/md/dm.c   |  2 +-
>  drivers/media/dvb-frontends/drxd_hard.c   |  2 +-
>  drivers/media/i2c/ov5640.c|  2 +-
>  drivers/media/i2c/ov6650.c|  5 ++---
>  drivers/media/i2c/smiapp/smiapp-core.c|  2 +-
>  drivers/media/i2c/tvp5150.c   |  2 +-
>  drivers/media/pci/ddbridge/ddbridge-core.c|  2 +-
>  drivers/media/usb/cpia2/cpia2_core.c  |  2 +-
>  drivers/mfd/iqs62x.c  |  3 +--
>  drivers/mmc/host/atmel-mci.c  |  2 +-
>  drivers/mtd/nand/raw/nandsim.c|  2 +-
>  drivers/net/ethernet/intel/e1000e/phy.c   |  2 +-
>  drivers/net/ethernet/intel/fm10k/fm10k_pf.c   |  2 +-
>  drivers/net/ethernet/intel/i40e/i40e_adminq.c |  2 +-
>  drivers/net/ethernet/intel/i40e/i40e_txrx.c   |  2 +-
>  drivers/net/ethernet/intel/iavf/iavf_txrx.c   |  2 +-
>  drivers/net/ethernet/intel/igb/e1000_phy.c|  2 +-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c|  2 +-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  2 +-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c|  2 +-
>  drivers/net/ethernet/intel/ixgbevf/vf.c   |  2 +-
>  drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c |  2 +-
>  drivers/net/ethernet/qlogic/qed/qed_mcp.c |  2 +-
>  drivers/net/ethernet/sfc/falcon/farch.c   |  2 +-
>  drivers/net/ethernet/sfc/farch.c  |  2 +-
>  drivers/net/phy/adin.c|  3 +--
>  drivers/net/usb/pegasus.c |  4 ++--
>  drivers/net/usb/usbnet.c  |  2 +-
>  drivers/net/wireless/ath/ath5k/eeprom.c   |  2 +-
>  drivers/net/wireless/mediatek/mt7601u/dma.c   |  8 
>  drivers/nvme/host/core.c  | 12 ++--
>  drivers/pcmcia/db1xxx_ss.c|  4 ++--
>  drivers/power/supply/abx500_chargalg.c|  2 +-
>  drivers/power/supply/charger-manager.c|  2 +-
>  drivers/rtc/rtc-pcf85063.c|  2 +-
>  drivers/s390/scsi/zfcp_fsf.c  |  2 +-
>  drivers/scsi/aic7xxx/aic79xx_core.c   |  4 ++--
>  drivers/scsi/aic94xx/aic94xx_tmf.c|  2 +-
>  drivers/scsi/lpfc/lpfc_sli.c  |  2 +-
>  drivers/scsi/smartpqi/smartpqi_init.c |  2 +-
>  drivers/scsi/sr.c |  2 +-
>  drivers/tty/serial/sunsu.c|  2 +-
>  drivers/tty/serial/sunzilog.c |  2 +-
>  drivers/tty/vt/vt_ioctl.c |  2 +-
>  drivers/usb/dwc3/core.c   |  2 +-
>  drivers/usb/gadget/legacy/inode.c | 

[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/tgl: Make Wa_1606700617/22010271021 permanent

2020-09-09 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Make Wa_1606700617/22010271021 permanent
URL   : https://patchwork.freedesktop.org/series/81502/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8992_full -> Patchwork_18461_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_18461_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_18461_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_18461_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_exec_reloc@basic-spin@vcs1:
- shard-iclb: [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-iclb4/igt@gem_exec_reloc@basic-s...@vcs1.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-iclb2/igt@gem_exec_reloc@basic-s...@vcs1.html

  
Known issues


  Here are the changes found in Patchwork_18461_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@legacy-engines-mixed-process@blt:
- shard-skl:  [PASS][3] -> [FAIL][4] ([i915#2374])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-skl9/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@blt.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-skl1/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@blt.html

  * igt@gem_exec_reloc@basic-cpu-wc-active:
- shard-tglb: [PASS][5] -> [INCOMPLETE][6] ([i915#2439]) +2 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-tglb5/igt@gem_exec_re...@basic-cpu-wc-active.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-tglb5/igt@gem_exec_re...@basic-cpu-wc-active.html

  * igt@gem_exec_reloc@basic-gtt-cpu-active:
- shard-glk:  [PASS][7] -> [INCOMPLETE][8] ([i915#2439])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-glk9/igt@gem_exec_re...@basic-gtt-cpu-active.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-glk6/igt@gem_exec_re...@basic-gtt-cpu-active.html

  * igt@gem_exec_reloc@basic-gtt-read-active:
- shard-apl:  [PASS][9] -> [INCOMPLETE][10] ([i915#1635] / 
[i915#2439]) +1 similar issue
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-apl7/igt@gem_exec_re...@basic-gtt-read-active.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-apl6/igt@gem_exec_re...@basic-gtt-read-active.html

  * igt@gem_exec_reloc@basic-spin@vcs0:
- shard-snb:  [PASS][11] -> [INCOMPLETE][12] ([i915#2439] / 
[i915#82]) +3 similar issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-snb6/igt@gem_exec_reloc@basic-s...@vcs0.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-snb6/igt@gem_exec_reloc@basic-s...@vcs0.html
- shard-iclb: [PASS][13] -> [DMESG-FAIL][14] ([i915#2439])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-iclb4/igt@gem_exec_reloc@basic-s...@vcs0.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-iclb2/igt@gem_exec_reloc@basic-s...@vcs0.html

  * igt@gem_exec_reloc@basic-wc-read-active:
- shard-kbl:  [PASS][15] -> [INCOMPLETE][16] ([i915#2439]) +2 
similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-kbl7/igt@gem_exec_re...@basic-wc-read-active.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-kbl3/igt@gem_exec_re...@basic-wc-read-active.html

  * igt@gem_exec_reloc@basic-write-gtt-active:
- shard-iclb: [PASS][17] -> [INCOMPLETE][18] ([i915#2439]) +1 
similar issue
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-iclb3/igt@gem_exec_re...@basic-write-gtt-active.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-iclb2/igt@gem_exec_re...@basic-write-gtt-active.html

  * igt@gem_exec_whisper@basic-contexts-forked-all:
- shard-skl:  [PASS][19] -> [INCOMPLETE][20] ([i915#2439]) +2 
similar issues
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-skl4/igt@gem_exec_whis...@basic-contexts-forked-all.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/shard-skl3/igt@gem_exec_whis...@basic-contexts-forked-all.html

  * igt@i915_selftest@mock@requests:
- shard-apl:  [PASS][21] -> [INCOMPLETE][22] ([i915#1635] / 
[i915#2278])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/shard-apl6/igt@i915_selftest@m...@requests.html
   [22]: 

[Intel-gfx] ✗ Fi.CI.BUILD: failure for treewide: Convert switch/case fallthrough; to break;

2020-09-09 Thread Patchwork
== Series Details ==

Series: treewide: Convert switch/case fallthrough; to break;
URL   : https://patchwork.freedesktop.org/series/81504/
State : failure

== Summary ==

Applying: treewide: Convert switch/case fallthrough; to break;
error: sha1 information is lacking or useless (crypto/tcrypt.c).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 treewide: Convert switch/case fallthrough; to break;
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [trivial PATCH] treewide: Convert switch/case fallthrough; to break;

2020-09-09 Thread Joe Perches
fallthrough to a separate case/default label break; isn't very readable.

Convert pseudo-keyword fallthrough; statements to a simple break; when
the next label is case or default and the only statement in the next
label block is break;

Found using:

$ grep-2.5.4 -rP --include=*.[ch] -n 
"fallthrough;(\s*(case\s+\w+|default)\s*:\s*){1,7}break;" *

Miscellanea:

o Move or coalesce a couple label blocks above a default: block.

Signed-off-by: Joe Perches 
---

Compiled allyesconfig x86-64 only.
A few files for other arches were not compiled.

 arch/arm/mach-mmp/pm-pxa910.c |  2 +-
 arch/arm64/kvm/handle_exit.c  |  2 +-
 arch/mips/kernel/cpu-probe.c  |  2 +-
 arch/mips/math-emu/cp1emu.c   |  2 +-
 arch/s390/pci/pci.c   |  2 +-
 crypto/tcrypt.c   |  4 ++--
 drivers/ata/sata_mv.c |  2 +-
 drivers/atm/lanai.c   |  2 +-
 drivers/gpu/drm/i915/display/intel_sprite.c   |  2 +-
 drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.c   |  2 +-
 drivers/hid/wacom_wac.c   |  2 +-
 drivers/i2c/busses/i2c-i801.c |  2 +-
 drivers/infiniband/ulp/rtrs/rtrs-clt.c| 14 +++---
 drivers/infiniband/ulp/rtrs/rtrs-srv.c|  6 +++---
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c   |  2 +-
 drivers/irqchip/irq-vic.c |  4 ++--
 drivers/md/dm.c   |  2 +-
 drivers/media/dvb-frontends/drxd_hard.c   |  2 +-
 drivers/media/i2c/ov5640.c|  2 +-
 drivers/media/i2c/ov6650.c|  5 ++---
 drivers/media/i2c/smiapp/smiapp-core.c|  2 +-
 drivers/media/i2c/tvp5150.c   |  2 +-
 drivers/media/pci/ddbridge/ddbridge-core.c|  2 +-
 drivers/media/usb/cpia2/cpia2_core.c  |  2 +-
 drivers/mfd/iqs62x.c  |  3 +--
 drivers/mmc/host/atmel-mci.c  |  2 +-
 drivers/mtd/nand/raw/nandsim.c|  2 +-
 drivers/net/ethernet/intel/e1000e/phy.c   |  2 +-
 drivers/net/ethernet/intel/fm10k/fm10k_pf.c   |  2 +-
 drivers/net/ethernet/intel/i40e/i40e_adminq.c |  2 +-
 drivers/net/ethernet/intel/i40e/i40e_txrx.c   |  2 +-
 drivers/net/ethernet/intel/iavf/iavf_txrx.c   |  2 +-
 drivers/net/ethernet/intel/igb/e1000_phy.c|  2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c|  2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c|  2 +-
 drivers/net/ethernet/intel/ixgbevf/vf.c   |  2 +-
 drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c |  2 +-
 drivers/net/ethernet/qlogic/qed/qed_mcp.c |  2 +-
 drivers/net/ethernet/sfc/falcon/farch.c   |  2 +-
 drivers/net/ethernet/sfc/farch.c  |  2 +-
 drivers/net/phy/adin.c|  3 +--
 drivers/net/usb/pegasus.c |  4 ++--
 drivers/net/usb/usbnet.c  |  2 +-
 drivers/net/wireless/ath/ath5k/eeprom.c   |  2 +-
 drivers/net/wireless/mediatek/mt7601u/dma.c   |  8 
 drivers/nvme/host/core.c  | 12 ++--
 drivers/pcmcia/db1xxx_ss.c|  4 ++--
 drivers/power/supply/abx500_chargalg.c|  2 +-
 drivers/power/supply/charger-manager.c|  2 +-
 drivers/rtc/rtc-pcf85063.c|  2 +-
 drivers/s390/scsi/zfcp_fsf.c  |  2 +-
 drivers/scsi/aic7xxx/aic79xx_core.c   |  4 ++--
 drivers/scsi/aic94xx/aic94xx_tmf.c|  2 +-
 drivers/scsi/lpfc/lpfc_sli.c  |  2 +-
 drivers/scsi/smartpqi/smartpqi_init.c |  2 +-
 drivers/scsi/sr.c |  2 +-
 drivers/tty/serial/sunsu.c|  2 +-
 drivers/tty/serial/sunzilog.c |  2 +-
 drivers/tty/vt/vt_ioctl.c |  2 +-
 drivers/usb/dwc3/core.c   |  2 +-
 drivers/usb/gadget/legacy/inode.c |  2 +-
 drivers/usb/gadget/udc/pxa25x_udc.c   |  4 ++--
 drivers/usb/host/ohci-hcd.c   |  2 +-
 drivers/usb/isp1760/isp1760-hcd.c |  2 +-
 drivers/usb/musb/cppi_dma.c

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/tgl: Make Wa_1606700617/22010271021 permanent

2020-09-09 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Make Wa_1606700617/22010271021 permanent
URL   : https://patchwork.freedesktop.org/series/81502/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8992 -> Patchwork_18461


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/index.html

Known issues


  Here are the changes found in Patchwork_18461 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_gttfill@basic:
- fi-bdw-5557u:   [PASS][1] -> [INCOMPLETE][2] ([i915#2439])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-bdw-5557u/igt@gem_exec_gttf...@basic.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-bdw-5557u/igt@gem_exec_gttf...@basic.html
- fi-kbl-7500u:   [PASS][3] -> [INCOMPLETE][4] ([i915#2439])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-kbl-7500u/igt@gem_exec_gttf...@basic.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-kbl-7500u/igt@gem_exec_gttf...@basic.html
- fi-byt-j1900:   [PASS][5] -> [INCOMPLETE][6] ([i915#2439])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-byt-j1900/igt@gem_exec_gttf...@basic.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-byt-j1900/igt@gem_exec_gttf...@basic.html
- fi-elk-e7500:   [PASS][7] -> [INCOMPLETE][8] ([i915#2439] / [i915#66])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-elk-e7500/igt@gem_exec_gttf...@basic.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-elk-e7500/igt@gem_exec_gttf...@basic.html
- fi-ilk-650: [PASS][9] -> [INCOMPLETE][10] ([i915#2439])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-ilk-650/igt@gem_exec_gttf...@basic.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-ilk-650/igt@gem_exec_gttf...@basic.html

  * igt@i915_selftest@live@coherency:
- fi-gdg-551: [PASS][11] -> [DMESG-FAIL][12] ([i915#1748])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-gdg-551/igt@i915_selftest@l...@coherency.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-gdg-551/igt@i915_selftest@l...@coherency.html

  * igt@i915_selftest@live@gem_execbuf:
- fi-snb-2520m:   [PASS][13] -> [INCOMPLETE][14] ([i915#2439])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-snb-2520m/igt@i915_selftest@live@gem_execbuf.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-snb-2520m/igt@i915_selftest@live@gem_execbuf.html

  
 Possible fixes 

  * igt@gem_exec_gttfill@basic:
- fi-tgl-y:   [INCOMPLETE][15] ([i915#2439]) -> [PASS][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-tgl-y/igt@gem_exec_gttf...@basic.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-tgl-y/igt@gem_exec_gttf...@basic.html
- fi-cfl-8109u:   [INCOMPLETE][17] ([i915#2439]) -> [PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-cfl-8109u/igt@gem_exec_gttf...@basic.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-cfl-8109u/igt@gem_exec_gttf...@basic.html
- fi-skl-6600u:   [INCOMPLETE][19] ([i915#2439]) -> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-skl-6600u/igt@gem_exec_gttf...@basic.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-skl-6600u/igt@gem_exec_gttf...@basic.html
- fi-apl-guc: [INCOMPLETE][21] ([i915#1635] / [i915#2439]) -> 
[PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-apl-guc/igt@gem_exec_gttf...@basic.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-apl-guc/igt@gem_exec_gttf...@basic.html

  * igt@gem_exec_parallel@engines@basic:
- fi-bsw-n3050:   [INCOMPLETE][23] ([i915#2439]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-bsw-n3050/igt@gem_exec_parallel@engi...@basic.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-bsw-n3050/igt@gem_exec_parallel@engi...@basic.html
- fi-bsw-kefka:   [INCOMPLETE][25] ([i915#2439]) -> [PASS][26]
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-bsw-kefka/igt@gem_exec_parallel@engi...@basic.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-bsw-kefka/igt@gem_exec_parallel@engi...@basic.html

  * igt@i915_module_load@reload:
- fi-kbl-soraka:  [DMESG-WARN][27] ([i915#1982]) -> [PASS][28]
   [27]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8992/fi-kbl-soraka/igt@i915_module_l...@reload.html
   [28]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/fi-kbl-soraka/igt@i915_module_l...@reload.html

  
 Warnings 

  * 

Re: [Intel-gfx] [PATCH] drm/i915: Fix DMA mapped scatterlist walks

2020-09-09 Thread Logan Gunthorpe



On 2020-09-09 6:44 a.m., Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin 
> 
> When walking DMA mapped scatterlists sg_dma_len has to be used since it
> can be different (coalesced) from the backing store entry.
> 
> This also means we have to end the walk when encountering a zero length
> DMA entry and cannot rely on the normal sg list end marker.
> 
> Both issues were there in theory for some time but were hidden by the fact
> Intel IOMMU driver was never coalescing entries. As there are ongoing
> efforts to change this we need to start handling it.
> 
> Signed-off-by: Tvrtko Ursulin 
> References: 85d1225ec066 ("drm/i915: Introduce & use new lightweight SGL 
> iterators")
> References: b31144c0daa8 ("drm/i915: Micro-optimise 
> gen6_ppgtt_insert_entries()")
> Reported-by: Tom Murphy 
> Suggested-by: Tom Murphy  # __sgt_iter
> Suggested-by: Logan Gunthorpe  # __sgt_iter
> Cc: Joonas Lahtinen 
> Cc: Chris Wilson 
> Cc: Matthew Auld 
> Cc: Lu Baolu 
> ---
>  drivers/gpu/drm/i915/gt/gen6_ppgtt.c|  6 +++---
>  drivers/gpu/drm/i915/gt/gen8_ppgtt.c| 17 ++---
>  drivers/gpu/drm/i915/gt/intel_gtt.h |  2 +-
>  drivers/gpu/drm/i915/i915_scatterlist.h | 12 
>  4 files changed, 22 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/gen6_ppgtt.c 
> b/drivers/gpu/drm/i915/gt/gen6_ppgtt.c
> index fd0d24d28763..c0d17f87b00f 100644
> --- a/drivers/gpu/drm/i915/gt/gen6_ppgtt.c
> +++ b/drivers/gpu/drm/i915/gt/gen6_ppgtt.c
> @@ -131,17 +131,17 @@ static void gen6_ppgtt_insert_entries(struct 
> i915_address_space *vm,
>  
>   vaddr = kmap_atomic_px(i915_pt_entry(pd, act_pt));
>   do {
> - GEM_BUG_ON(iter.sg->length < I915_GTT_PAGE_SIZE);
> + GEM_BUG_ON(sg_dma_len(iter.sg) < I915_GTT_PAGE_SIZE);
>   vaddr[act_pte] = pte_encode | GEN6_PTE_ADDR_ENCODE(iter.dma);
>  
>   iter.dma += I915_GTT_PAGE_SIZE;
>   if (iter.dma == iter.max) {
>   iter.sg = __sg_next(iter.sg);
> - if (!iter.sg)
> + if (!iter.sg || sg_dma_len(iter.sg) == 0)
>   break;
>  
>   iter.dma = sg_dma_address(iter.sg);
> - iter.max = iter.dma + iter.sg->length;
> + iter.max = iter.dma + sg_dma_len(iter.sg);
>   }
>  
>   if (++act_pte == GEN6_PTES) {
> diff --git a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c 
> b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
> index eb64f474a78c..0361b3dfdc72 100644
> --- a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
> +++ b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
> @@ -372,19 +372,19 @@ gen8_ppgtt_insert_pte(struct i915_ppgtt *ppgtt,
>   pd = i915_pd_entry(pdp, gen8_pd_index(idx, 2));
>   vaddr = kmap_atomic_px(i915_pt_entry(pd, gen8_pd_index(idx, 1)));
>   do {
> - GEM_BUG_ON(iter->sg->length < I915_GTT_PAGE_SIZE);
> + GEM_BUG_ON(sg_dma_len(iter->sg) < I915_GTT_PAGE_SIZE);
>   vaddr[gen8_pd_index(idx, 0)] = pte_encode | iter->dma;
>  
>   iter->dma += I915_GTT_PAGE_SIZE;
>   if (iter->dma >= iter->max) {
>   iter->sg = __sg_next(iter->sg);
> - if (!iter->sg) {
> + if (!iter->sg || sg_dma_len(iter->sg) == 0) {
>   idx = 0;
>   break;
>   }
>  
>   iter->dma = sg_dma_address(iter->sg);
> - iter->max = iter->dma + iter->sg->length;
> + iter->max = iter->dma + sg_dma_len(iter->sg);
>   }
>  
>   if (gen8_pd_index(++idx, 0) == 0) {
> @@ -414,7 +414,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
>  {
>   const gen8_pte_t pte_encode = gen8_pte_encode(0, cache_level, flags);
>   u64 start = vma->node.start;
> - dma_addr_t rem = iter->sg->length;
> + dma_addr_t rem = sg_dma_len(iter->sg);

Seems a little odd to me to be storing a length in a dma_addr_t. But
besides that small nit, this all makes sense to me.

Reviewed-by: Logan Gunthorpe 

Thanks,

Logan
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915/tgl: Make Wa_1606700617/22010271021 permanent

2020-09-09 Thread Swathi Dhanavanthri
This workaround now applies to all TGL steppings.

Signed-off-by: Swathi Dhanavanthri 
---
 drivers/gpu/drm/i915/gt/intel_workarounds.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c 
b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 39817c5a7058..f2225f065799 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -1729,10 +1729,11 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, 
struct i915_wa_list *wal)
 GEN6_RC_SLEEP_PSMI_CONTROL,
 GEN12_WAIT_FOR_EVENT_POWER_DOWN_DISABLE |
 GEN8_RC_SEMA_IDLE_MSG_DISABLE);
-   }
 
-   if (IS_TGL_U(i915) || IS_TGL_Y(i915)) {
-   /* Wa_1606700617:tgl */
+   /*
+* Wa_1606700617:tgl
+* Wa_22010271021:tgl
+*/
wa_masked_en(wal,
 GEN9_CS_DEBUG_MODE1,
 FF_DOP_CLOCK_GATE_DISABLE);
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [11/12] drm/i915: Introduce intel_hpd_hotplug_irqs()

2020-09-09 Thread Ville Syrjälä
On Wed, Sep 09, 2020 at 12:46:56AM +, Souza, Jose wrote:
> On Wed, 2020-07-01 at 00:56 +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä <
> > ville.syrj...@linux.intel.com
> > >
> > 
> > Introduce intel_hpd_hotplug_irqs() as a partner to
> > intel_hpd_enabled_irqs(). There's no need to care about the
> > encoders which we're not exposing, so we can avoid hardocoding
> 
> hard-coding
> 
> > the masks in various places.
> 
> Pretty nice patch, you only missed to do this change in the irq_handlers so 
> we could nuke the SDE_DDI_MASKs, or are you planning to do this in a
> follow up patch? If later consider this

I didn't decide yet how to do that part. One option is to compute the
mask there too, but the other option to just use the full mask there
and rely on the fact that the IMR will keep the unused bits clear
in the IIR. Not sure if the latter approach is quite as scalable though.
Eg. in theory some new PCH type might repurpose some of the bits for
some totally different use.

> 
> Reviewed-by: José Roberto de Souza 
> 
> > 
> > Signed-off-by: Ville Syrjälä <
> > ville.syrj...@linux.intel.com
> > >
> > ---
> >  drivers/gpu/drm/i915/i915_irq.c | 50 +++--
> >  1 file changed, 23 insertions(+), 27 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_irq.c 
> > b/drivers/gpu/drm/i915/i915_irq.c
> > index 95ab4432a87d..b8a6a21f4c54 100644
> > --- a/drivers/gpu/drm/i915/i915_irq.c
> > +++ b/drivers/gpu/drm/i915/i915_irq.c
> > @@ -2943,6 +2943,18 @@ static u32 intel_hpd_enabled_irqs(struct 
> > drm_i915_private *dev_priv,
> > return enabled_irqs;
> >  }
> >  
> > +static u32 intel_hpd_hotplug_irqs(struct drm_i915_private *dev_priv,
> > + const u32 hpd[HPD_NUM_PINS])
> > +{
> > +   struct intel_encoder *encoder;
> > +   u32 hotplug_irqs = 0;
> > +
> > +   for_each_intel_encoder(_priv->drm, encoder)
> > +   hotplug_irqs |= hpd[encoder->hpd_pin];
> > +
> > +   return hotplug_irqs;
> > +}
> > +
> >  static void ibx_hpd_detection_setup(struct drm_i915_private *dev_priv)
> >  {
> > u32 hotplug;
> > @@ -2972,12 +2984,8 @@ static void ibx_hpd_irq_setup(struct 
> > drm_i915_private *dev_priv)
> >  {
> > u32 hotplug_irqs, enabled_irqs;
> >  
> > -   if (HAS_PCH_IBX(dev_priv))
> > -   hotplug_irqs = SDE_HOTPLUG_MASK;
> > -   else
> > -   hotplug_irqs = SDE_HOTPLUG_MASK_CPT;
> > -
> > enabled_irqs = intel_hpd_enabled_irqs(dev_priv, 
> > dev_priv->hotplug.pch_hpd);
> > +   hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, 
> > dev_priv->hotplug.pch_hpd);
> >  
> > ibx_display_interrupt_update(dev_priv, hotplug_irqs, enabled_irqs);
> >  
> > @@ -3005,13 +3013,12 @@ static void icp_tc_hpd_detection_setup(struct 
> > drm_i915_private *dev_priv,
> >  }
> >  
> >  static void icp_hpd_irq_setup(struct drm_i915_private *dev_priv,
> > - u32 sde_ddi_mask, u32 sde_tc_mask,
> >   u32 ddi_enable_mask, u32 tc_enable_mask)
> >  {
> > u32 hotplug_irqs, enabled_irqs;
> >  
> > -   hotplug_irqs = sde_ddi_mask | sde_tc_mask;
> > enabled_irqs = intel_hpd_enabled_irqs(dev_priv, 
> > dev_priv->hotplug.pch_hpd);
> > +   hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, 
> > dev_priv->hotplug.pch_hpd);
> >  
> > I915_WRITE(SHPD_FILTER_CNT, SHPD_FILTER_CNT_500_ADJ);
> >  
> > @@ -3029,7 +3036,6 @@ static void icp_hpd_irq_setup(struct drm_i915_private 
> > *dev_priv,
> >  static void mcc_hpd_irq_setup(struct drm_i915_private *dev_priv)
> >  {
> > icp_hpd_irq_setup(dev_priv,
> > - SDE_DDI_MASK_ICP, SDE_TC_HOTPLUG_ICP(PORT_TC1),
> >   ICP_DDI_HPD_ENABLE_MASK, ICP_TC_HPD_ENABLE(PORT_TC1));
> >  }
> >  
> > @@ -3041,7 +3047,6 @@ static void mcc_hpd_irq_setup(struct drm_i915_private 
> > *dev_priv)
> >  static void jsp_hpd_irq_setup(struct drm_i915_private *dev_priv)
> >  {
> > icp_hpd_irq_setup(dev_priv,
> > - SDE_DDI_MASK_TGP, 0,
> >   TGP_DDI_HPD_ENABLE_MASK, 0);
> >  }
> >  
> > @@ -3074,7 +3079,7 @@ static void gen11_hpd_irq_setup(struct 
> > drm_i915_private *dev_priv)
> > u32 val;
> >  
> > enabled_irqs = intel_hpd_enabled_irqs(dev_priv, dev_priv->hotplug.hpd);
> > -   hotplug_irqs = GEN11_DE_TC_HOTPLUG_MASK | GEN11_DE_TBT_HOTPLUG_MASK;
> > +   hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, dev_priv->hotplug.hpd);
> >  
> > val = I915_READ(GEN11_DE_HPD_IMR);
> > val &= ~hotplug_irqs;
> > @@ -3085,10 +3090,10 @@ static void gen11_hpd_irq_setup(struct 
> > drm_i915_private *dev_priv)
> > gen11_hpd_detection_setup(dev_priv);
> >  
> > if (INTEL_PCH_TYPE(dev_priv) >= PCH_TGP)
> > -   icp_hpd_irq_setup(dev_priv, SDE_DDI_MASK_TGP, SDE_TC_MASK_TGP,
> > +   icp_hpd_irq_setup(dev_priv,
> >   TGP_DDI_HPD_ENABLE_MASK, 
> > TGP_TC_HPD_ENABLE_MASK);
> > else if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP)
> > -   

Re: [Intel-gfx] [PATCH 04/24] drm/vgem: Use devm_drm_dev_alloc

2020-09-09 Thread Melissa Wen
On 09/09, Daniel Vetter wrote:
> On Wed, Sep 9, 2020 at 1:01 PM Melissa Wen  wrote:
> >
> > Hi Daniel,
> >
> > looks good to me, just a few things inline.
> >
> > On 09/04, Daniel Vetter wrote:
> > > This means we also need to slightly restructure the exit code, so that
> > > final cleanup of the drm_device is triggered by unregistering the
> > > platform device. Note that devres is both clean up when the driver is
> > > unbound (not the case for vgem, we don't bind), and also when 
> > > unregistering
> > > the device (very much the case for vgem). Therefore we can rely on devres
> > > even though vgem isn't a proper platform device driver.
> > >
> > > This also somewhat untangles the load code, since the drm and platform 
> > > device
> > > setup are no longer interleaved, but two distinct steps.
> > >
> > > v2: use devres_open/release_group so we can use devm without real
> > > hacks in the driver core or having to create an entire fake bus for
> > > testing drivers. Might want to extract this into helpers eventually,
> > > maybe as a mock_drm_dev_alloc or test_drm_dev_alloc.
> > >
> > > Signed-off-by: Daniel Vetter 
> > > Cc: Daniel Vetter 
> > > Cc: Emil Velikov 
> > > Cc: Sean Paul 
> > > Cc: Chris Wilson 
> > > Cc: Sam Ravnborg 
> > > Cc: Rob Clark 
> > > ---
> > >  drivers/gpu/drm/vgem/vgem_drv.c | 55 ++---
> > >  1 file changed, 24 insertions(+), 31 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c 
> > > b/drivers/gpu/drm/vgem/vgem_drv.c
> > > index 313339bbff90..f95537627463 100644
> > > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > > @@ -401,16 +401,8 @@ static int vgem_prime_mmap(struct drm_gem_object 
> > > *obj,
> > >   return 0;
> > >  }
> > >
> > > -static void vgem_release(struct drm_device *dev)
> > > -{
> > > - struct vgem_device *vgem = container_of(dev, typeof(*vgem), drm);
> > > -
> > > - platform_device_unregister(vgem->platform);
> > > -}
> > > -
> > >  static struct drm_driver vgem_driver = {
> > >   .driver_features= DRIVER_GEM | DRIVER_RENDER,
> > > - .release= vgem_release,
> > >   .open   = vgem_open,
> > >   .postclose  = vgem_postclose,
> > >   .gem_free_object_unlocked   = vgem_gem_free_object,
> > > @@ -442,48 +434,49 @@ static struct drm_driver vgem_driver = {
> > >  static int __init vgem_init(void)
> > >  {
> > >   int ret;
> > > + struct platform_device *pdev;
> > >
> > > - vgem_device = kzalloc(sizeof(*vgem_device), GFP_KERNEL);
> > > - if (!vgem_device)
> > > - return -ENOMEM;
> > > + pdev = platform_device_register_simple("vgem", -1, NULL, 0);
> > > + if (IS_ERR(pdev))
> > > + return PTR_ERR(vgem_device->platform);
> > I caught this line right above.
> > It should be: return PTR_ERR (pdev), right?
> 
> Yes I will fix.
> 
> > > - vgem_device->platform =
> > > - platform_device_register_simple("vgem", -1, NULL, 0);
> > > - if (IS_ERR(vgem_device->platform)) {
> > > - ret = PTR_ERR(vgem_device->platform);
> > > - goto out_free;
> > > + if (!devres_open_group(>dev, NULL, GFP_KERNEL)) {
> > > + ret = -ENOMEM;
> > > + goto out_unregister;
> > >   }
> > >
> > > - dma_coerce_mask_and_coherent(_device->platform->dev,
> > > + dma_coerce_mask_and_coherent(>dev,
> > >DMA_BIT_MASK(64));
> > > - ret = drm_dev_init(_device->drm, _driver,
> > > -_device->platform->dev);
> > > - if (ret)
> > > - goto out_unregister;
> > > - drmm_add_final_kfree(_device->drm, vgem_device);
> > > +
> > > + vgem_device = devm_drm_dev_alloc(>dev, _driver,
> > > +  struct vgem_device, drm);
> > > + if (IS_ERR(vgem_device)) {
> > > + ret = PTR_ERR(vgem_device);
> > > + goto out_devres;
> > > + }
> > > + vgem_device->platform = pdev;
> > >
> > >   /* Final step: expose the device/driver to userspace */
> > >   ret = drm_dev_register(_device->drm, 0);
> > >   if (ret)
> > > - goto out_put;
> > > + goto out_devres;
> > >
> > >   return 0;
> > >
> > > -out_put:
> > > - drm_dev_put(_device->drm);
> > > - platform_device_unregister(vgem_device->platform);
> > > - return ret;
> > > +out_devres:
> > > + devres_release_group(>dev, NULL);
> > >  out_unregister:
> > > - platform_device_unregister(vgem_device->platform);
> > > -out_free:
> > > - kfree(vgem_device);
> > > + platform_device_unregister(pdev);
> > >   return ret;
> > >  }
> > >
> > >  static void __exit vgem_exit(void)
> > >  {
> > > + struct platform_device *pdev = vgem_device->platform;
> > > +
> > Well, there has never been a check for a null vgem_device here before,
> > as in vkms. 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Fix DMA mapped scatterlist walks

2020-09-09 Thread Patchwork
== Series Details ==

Series: drm/i915: Fix DMA mapped scatterlist walks
URL   : https://patchwork.freedesktop.org/series/81497/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8990_full -> Patchwork_18460_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_18460_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_eio@in-flight-suspend:
- shard-kbl:  [PASS][1] -> [DMESG-WARN][2] ([i915#180])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-kbl3/igt@gem_...@in-flight-suspend.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-kbl6/igt@gem_...@in-flight-suspend.html

  * igt@gem_exec_reloc@basic-cpu-gtt-active:
- shard-apl:  [PASS][3] -> [INCOMPLETE][4] ([i915#1635] / 
[i915#2439])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-apl6/igt@gem_exec_re...@basic-cpu-gtt-active.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-apl4/igt@gem_exec_re...@basic-cpu-gtt-active.html

  * igt@gem_exec_reloc@basic-cpu-read-active:
- shard-glk:  [PASS][5] -> [INCOMPLETE][6] ([i915#2439]) +4 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-glk9/igt@gem_exec_re...@basic-cpu-read-active.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-glk9/igt@gem_exec_re...@basic-cpu-read-active.html

  * igt@gem_exec_reloc@basic-gtt-active:
- shard-skl:  [PASS][7] -> [INCOMPLETE][8] ([i915#2439]) +2 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-skl8/igt@gem_exec_re...@basic-gtt-active.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-skl10/igt@gem_exec_re...@basic-gtt-active.html

  * igt@gem_exec_reloc@basic-gtt-cpu-active:
- shard-iclb: [PASS][9] -> [INCOMPLETE][10] ([i915#2439]) +3 
similar issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-iclb6/igt@gem_exec_re...@basic-gtt-cpu-active.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-iclb8/igt@gem_exec_re...@basic-gtt-cpu-active.html

  * igt@gem_exec_reloc@basic-gtt-read-active:
- shard-tglb: [PASS][11] -> [INCOMPLETE][12] ([i915#2439])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-tglb1/igt@gem_exec_re...@basic-gtt-read-active.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-tglb2/igt@gem_exec_re...@basic-gtt-read-active.html

  * igt@gem_exec_reloc@basic-gtt-wc-active:
- shard-snb:  [PASS][13] -> [INCOMPLETE][14] ([i915#2439] / 
[i915#82]) +3 similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-snb5/igt@gem_exec_re...@basic-gtt-wc-active.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-snb2/igt@gem_exec_re...@basic-gtt-wc-active.html

  * igt@gem_exec_reloc@basic-wc-read-active:
- shard-kbl:  [PASS][15] -> [INCOMPLETE][16] ([i915#2439]) +1 
similar issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-kbl7/igt@gem_exec_re...@basic-wc-read-active.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-kbl3/igt@gem_exec_re...@basic-wc-read-active.html

  * igt@gem_exec_whisper@basic-queues-forked:
- shard-glk:  [PASS][17] -> [DMESG-WARN][18] ([i915#118] / 
[i915#95])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-glk5/igt@gem_exec_whis...@basic-queues-forked.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-glk2/igt@gem_exec_whis...@basic-queues-forked.html

  * igt@gem_userptr_blits@unsync-unmap-cycles:
- shard-skl:  [PASS][19] -> [TIMEOUT][20] ([i915#1958])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-skl9/igt@gem_userptr_bl...@unsync-unmap-cycles.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-skl7/igt@gem_userptr_bl...@unsync-unmap-cycles.html

  * igt@i915_suspend@debugfs-reader:
- shard-skl:  [PASS][21] -> [INCOMPLETE][22] ([i915#198])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-skl4/igt@i915_susp...@debugfs-reader.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-skl1/igt@i915_susp...@debugfs-reader.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size:
- shard-tglb: [PASS][23] -> [DMESG-WARN][24] ([i915#1982])
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/shard-tglb5/igt@kms_cursor_leg...@basic-flip-before-cursor-varying-size.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/shard-tglb5/igt@kms_cursor_leg...@basic-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@short-flip-before-cursor-atomic-transitions:

Re: [Intel-gfx] [PATCH] drm/i915: Fix DMA mapped scatterlist walks

2020-09-09 Thread Tvrtko Ursulin



On 09/09/2020 14:03, Chris Wilson wrote:

Quoting Tvrtko Ursulin (2020-09-09 13:44:57)

From: Tvrtko Ursulin 

When walking DMA mapped scatterlists sg_dma_len has to be used since it
can be different (coalesced) from the backing store entry.

This also means we have to end the walk when encountering a zero length
DMA entry and cannot rely on the normal sg list end marker.

Both issues were there in theory for some time but were hidden by the fact
Intel IOMMU driver was never coalescing entries. As there are ongoing
efforts to change this we need to start handling it.


Does this change anything if we were already feeding in coalesced
entries? I doubt we made all sg generators compact the lists though.


I don't think so. My takeaway from this was a realization that page and 
dma coalescing can be completely different (more so once the iommu 
patches get in). I did not think of any other problems as long as the 
dma remapping fits into the number of available sg table entries we 
allocated. It is just a bit weird, this duality of sg_table "views".



The change looks reasonable, it seems you have kept the dma and page
iterators distinct, which was the only worry that occurred to me.


It surprised me we have two iterators, well one and a half. The sgt_dma 
one being the half of an iterator. :)


Regards,

Tvrtko

P.S. Well as I was writing this reply full test results came in and 
something is still broken, so scratch that..

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Fix DMA mapped scatterlist walks

2020-09-09 Thread Patchwork
== Series Details ==

Series: drm/i915: Fix DMA mapped scatterlist walks
URL   : https://patchwork.freedesktop.org/series/81497/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8990 -> Patchwork_18460


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/index.html

Known issues


  Here are the changes found in Patchwork_18460 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_gttfill@basic:
- fi-cfl-8109u:   [PASS][1] -> [INCOMPLETE][2] ([i915#2439])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-cfl-8109u/igt@gem_exec_gttf...@basic.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-cfl-8109u/igt@gem_exec_gttf...@basic.html
- fi-kbl-7500u:   [PASS][3] -> [INCOMPLETE][4] ([i915#2439])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-kbl-7500u/igt@gem_exec_gttf...@basic.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-kbl-7500u/igt@gem_exec_gttf...@basic.html
- fi-skl-6600u:   [PASS][5] -> [INCOMPLETE][6] ([i915#2439])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-skl-6600u/igt@gem_exec_gttf...@basic.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-skl-6600u/igt@gem_exec_gttf...@basic.html
- fi-skl-lmem:[PASS][7] -> [INCOMPLETE][8] ([i915#2439])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-skl-lmem/igt@gem_exec_gttf...@basic.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-skl-lmem/igt@gem_exec_gttf...@basic.html
- fi-cml-s:   [PASS][9] -> [INCOMPLETE][10] ([i915#2439])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-cml-s/igt@gem_exec_gttf...@basic.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-cml-s/igt@gem_exec_gttf...@basic.html

  * igt@gem_exec_parallel@engines@basic:
- fi-bsw-kefka:   [PASS][11] -> [INCOMPLETE][12] ([i915#2439])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-bsw-kefka/igt@gem_exec_parallel@engi...@basic.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-bsw-kefka/igt@gem_exec_parallel@engi...@basic.html

  * igt@gem_tiled_fence_blits@basic:
- fi-bsw-nick:[PASS][13] -> [INCOMPLETE][14] ([i915#2439])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-bsw-nick/igt@gem_tiled_fence_bl...@basic.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-bsw-nick/igt@gem_tiled_fence_bl...@basic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- fi-bsw-n3050:   [PASS][15] -> [DMESG-WARN][16] ([i915#1982])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-bsw-n3050/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-atomic.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-bsw-n3050/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-atomic.html

  
 Possible fixes 

  * igt@debugfs_test@read_all_entries:
- {fi-kbl-7560u}: [INCOMPLETE][17] ([i915#2417]) -> [PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-kbl-7560u/igt@debugfs_test@read_all_entries.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-kbl-7560u/igt@debugfs_test@read_all_entries.html

  * igt@gem_exec_gttfill@basic:
- fi-icl-y:   [INCOMPLETE][19] ([i915#2439]) -> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-icl-y/igt@gem_exec_gttf...@basic.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-icl-y/igt@gem_exec_gttf...@basic.html
- fi-kbl-r:   [INCOMPLETE][21] ([i915#2439]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-kbl-r/igt@gem_exec_gttf...@basic.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-kbl-r/igt@gem_exec_gttf...@basic.html

  * igt@gem_tiled_fence_blits@basic:
- fi-byt-j1900:   [INCOMPLETE][23] ([i915#2439]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-byt-j1900/igt@gem_tiled_fence_bl...@basic.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-byt-j1900/igt@gem_tiled_fence_bl...@basic.html

  * igt@i915_selftest@live@gem_execbuf:
- fi-gdg-551: [INCOMPLETE][25] ([i915#172] / [i915#2440]) -> 
[PASS][26]
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-gdg-551/igt@i915_selftest@live@gem_execbuf.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18460/fi-gdg-551/igt@i915_selftest@live@gem_execbuf.html
- fi-pnv-d510:[INCOMPLETE][27] ([i915#2440] / [i915#299]) -> 
[PASS][28]
   [27]: 

Re: [Intel-gfx] [PATCH] drm/i915/pll: Centralize PLL_ENABLE register lookup

2020-09-09 Thread Vivi, Rodrigo


> On Sep 8, 2020, at 4:39 PM, Srivatsa, Anusha  
> wrote:
> 
> We currenty check for platform at multiple parts in the driver
> to grab the correct PLL. Let us begin to centralize it through a
> helper function.
> 
> v2: s/intel_get_pll_enable_reg()/intel_combo_pll_enable_reg() (Ville)
> 
> v3: Clean up combo_pll_disable() (Rodrigo)
> 
> Suggested-by: Matt Roper 
> Cc: Ville Syrjälä 
> Cc: Matt Roper 
> Signed-off-by: Anusha Srivatsa 
> Reviewed-by: Rodrigo Vivi 
> ---
> drivers/gpu/drm/i915/display/intel_dpll_mgr.c | 29 +++
> 1 file changed, 17 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c 
> b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
> index c9013f8f766f..441b6f52e808 100644
> --- a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
> +++ b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
> @@ -147,6 +147,18 @@ void assert_shared_dpll(struct drm_i915_private 
> *dev_priv,
>   pll->info->name, onoff(state), onoff(cur_state));
> }
> 
> +static
> +i915_reg_t intel_combo_pll_enable_reg(struct drm_i915_private *dev_priv,
> + struct intel_shared_dpll *pll)
> +{
> +
> + if (IS_ELKHARTLAKE(dev_priv) && (pll->info->id == DPLL_ID_EHL_DPLL4))
> + return MG_PLL_ENABLE(0);
> +
> + return CNL_DPLL_ENABLE(pll->info->id);
> +
> +
> +}
> /**
>  * intel_prepare_shared_dpll - call a dpll's prepare hook
>  * @crtc_state: CRTC, and its state, which has a shared dpll
> @@ -3842,12 +3854,7 @@ static bool combo_pll_get_hw_state(struct 
> drm_i915_private *dev_priv,
>  struct intel_shared_dpll *pll,
>  struct intel_dpll_hw_state *hw_state)
> {
> - i915_reg_t enable_reg = CNL_DPLL_ENABLE(pll->info->id);
> -
> - if (IS_ELKHARTLAKE(dev_priv) &&
> - pll->info->id == DPLL_ID_EHL_DPLL4) {
> - enable_reg = MG_PLL_ENABLE(0);
> - }
> + i915_reg_t enable_reg = intel_combo_pll_enable_reg(dev_priv, pll);
> 
>   return icl_pll_get_hw_state(dev_priv, pll, hw_state, enable_reg);
> }
> @@ -4045,11 +4052,10 @@ static void icl_pll_enable(struct drm_i915_private 
> *dev_priv,
> static void combo_pll_enable(struct drm_i915_private *dev_priv,
>struct intel_shared_dpll *pll)
> {
> - i915_reg_t enable_reg = CNL_DPLL_ENABLE(pll->info->id);
> + i915_reg_t enable_reg = intel_combo_pll_enable_reg(dev_priv, pll);
> 
>   if (IS_ELKHARTLAKE(dev_priv) &&
>   pll->info->id == DPLL_ID_EHL_DPLL4) {
> - enable_reg = MG_PLL_ENABLE(0);
> 
>   /*
>* We need to disable DC states when this DPLL is enabled.
> @@ -4157,19 +4163,18 @@ static void icl_pll_disable(struct drm_i915_private 
> *dev_priv,
> static void combo_pll_disable(struct drm_i915_private *dev_priv,
> struct intel_shared_dpll *pll)
> {
> - i915_reg_t enable_reg = CNL_DPLL_ENABLE(pll->info->id);
> + i915_reg_t enable_reg = intel_combo_pll_enable_reg(dev_priv, pll);
> +
> + icl_pll_disable(dev_priv, pll, enable_reg);
> 
>   if (IS_ELKHARTLAKE(dev_priv) &&
>   pll->info->id == DPLL_ID_EHL_DPLL4) {
> - enable_reg = MG_PLL_ENABLE(0);
> - icl_pll_disable(dev_priv, pll, enable_reg);
> 
>   intel_display_power_put(dev_priv, POWER_DOMAIN_DPLL_DC_OFF,
>   pll->wakeref);
>   return;

this return can also be removed

>   }
> 
> - icl_pll_disable(dev_priv, pll, enable_reg);
> }
> 
> static void tbt_pll_disable(struct drm_i915_private *dev_priv,
> -- 
> 2.25.0
> 

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: Fix DMA mapped scatterlist walks

2020-09-09 Thread Chris Wilson
Quoting Tvrtko Ursulin (2020-09-09 13:44:57)
> From: Tvrtko Ursulin 
> 
> When walking DMA mapped scatterlists sg_dma_len has to be used since it
> can be different (coalesced) from the backing store entry.
> 
> This also means we have to end the walk when encountering a zero length
> DMA entry and cannot rely on the normal sg list end marker.
> 
> Both issues were there in theory for some time but were hidden by the fact
> Intel IOMMU driver was never coalescing entries. As there are ongoing
> efforts to change this we need to start handling it.

Does this change anything if we were already feeding in coalesced
entries? I doubt we made all sg generators compact the lists though.

The change looks reasonable, it seems you have kept the dma and page
iterators distinct, which was the only worry that occurred to me.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 0/8] Convert the intel iommu driver to the dma-iommu api

2020-09-09 Thread Tvrtko Ursulin


On 09/09/2020 10:16, Tvrtko Ursulin wrote:

On 08/09/2020 23:43, Tom Murphy wrote:

On Tue, 8 Sep 2020 at 16:56, Tvrtko Ursulin
 wrote:

On 08/09/2020 16:44, Logan Gunthorpe wrote:

On 2020-09-08 9:28 a.m., Tvrtko Ursulin wrote:


diff --git a/drivers/gpu/drm/i915/i915_scatterlist.h
b/drivers/gpu/drm/i915/i915
index b7b59328cb76..9367ac801f0c 100644
--- a/drivers/gpu/drm/i915/i915_scatterlist.h
+++ b/drivers/gpu/drm/i915/i915_scatterlist.h
@@ -27,13 +27,19 @@ static __always_inline struct sgt_iter {
    } __sgt_iter(struct scatterlist *sgl, bool dma) {
   struct sgt_iter s = { .sgp = sgl };

+   if (sgl && !sg_dma_len(s.sgp))


I'd extend the condition to be, just to be safe:
  if (dma && sgl && !sg_dma_len(s.sgp))



Right, good catch, that's definitely necessary.


+   s.sgp = NULL;
+
   if (s.sgp) {
   s.max = s.curr = s.sgp->offset;
-   s.max += s.sgp->length;
-   if (dma)
+
+   if (dma) {
+   s.max += sg_dma_len(s.sgp);
   s.dma = sg_dma_address(s.sgp);
-   else
+   } else {
+   s.max += s.sgp->length;
   s.pfn = page_to_pfn(sg_page(s.sgp));
+   }


Otherwise has this been tested or alternatively how to test it? 
(How to

repro the issue.)


It has not been tested. To test it, you need Tom's patch set without 
the

last "DO NOT MERGE" patch:

https://lkml.kernel.org/lkml/20200907070035.ga25...@infradead.org/T/


Tom, do you have a branch somewhere I could pull from? (Just being lazy
about downloading a bunch of messages from the archives.)


I don't unfortunately. I'm working locally with poor internet.



What GPU is in your Lenovo x1 carbon 5th generation and what
graphical/desktop setup I need to repro?



Is this enough info?:

$ lspci -vnn | grep VGA -A 12
00:02.0 VGA compatible controller [0300]: Intel Corporation HD
Graphics 620 [8086:5916] (rev 02) (prog-if 00 [VGA controller])
 Subsystem: Lenovo ThinkPad X1 Carbon 5th Gen [17aa:224f]
 Flags: bus master, fast devsel, latency 0, IRQ 148
 Memory at eb00 (64-bit, non-prefetchable) [size=16M]
 Memory at 6000 (64-bit, prefetchable) [size=256M]
 I/O ports at e000 [size=64]
 [virtual] Expansion ROM at 000c [disabled] [size=128K]
 Capabilities: [40] Vendor Specific Information: Len=0c 
 Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
 Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
 Capabilities: [d0] Power Management version 2
 Capabilities: [100] Process Address Space ID (PASID)
 Capabilities: [200] Address Translation Service (ATS)


Works for a start. What about the steps to repro? Any desktop 
environment and it is just visual corruption, no hangs/stalls or such?


I've submitted a series consisting of what I understood are the patches 
needed to repro the issue to our automated CI here:


https://patchwork.freedesktop.org/series/81489/

So will see if it will catch something, or more targeted testing will be 
required. Hopefully it does trip over in which case I can add the patch 
suggested by Logan on top and see if that fixes it. Or I'll need to 
write a new test case.


If you could glance over my series to check I identified the patches 
correctly it would be appreciated.


Our CI was more than capable at catching the breakage so I've copied you 
on a patch (https://patchwork.freedesktop.org/series/81497/) which has a 
good potential to fix this. (Or improve the robustness of our sg walks, 
depends how you look at it.)


Would you be able to test it in your environment by any chance? If it 
works I understand it unblocks your IOMMU work, right?


Regards,

Tvrtko
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 00/29] treewide: Convert comma separated statements

2020-09-09 Thread Martin K. Petersen
On Mon, 24 Aug 2020 21:55:57 -0700, Joe Perches wrote:

> There are many comma separated statements in the kernel.
> See:https://lore.kernel.org/lkml/alpine.DEB.2.22.394.2008201856110.2524@hadrien/
> 
> Convert the comma separated statements that are in if/do/while blocks
> to use braces and semicolons.
> 
> Many comma separated statements still exist but those are changes for
> another day.
> 
> [...]

Applied to 5.10/scsi-queue, thanks!

[01/29] coding-style.rst: Avoid comma statements
(no commit info)
[02/29] alpha: Avoid comma separated statements
(no commit info)
[03/29] ia64: Avoid comma separated statements
(no commit info)
[04/29] sparc: Avoid comma separated statements
(no commit info)
[05/29] ata: Avoid comma separated statements
(no commit info)
[06/29] drbd: Avoid comma separated statements
(no commit info)
[07/29] lp: Avoid comma separated statements
(no commit info)
[08/29] dma-buf: Avoid comma separated statements
(no commit info)
[09/29] drm/gma500: Avoid comma separated statements
(no commit info)
[10/29] drm/i915: Avoid comma separated statements
(no commit info)
[11/29] hwmon: (scmi-hwmon): Avoid comma separated statements
(no commit info)
[12/29] Input: MT - Avoid comma separated statements
(no commit info)
[13/29] bcache: Avoid comma separated statements
(no commit info)
[14/29] media: Avoid comma separated statements
(no commit info)
[15/29] mtd: Avoid comma separated statements
(no commit info)
[16/29] 8390: Avoid comma separated statements
(no commit info)
[17/29] fs_enet: Avoid comma separated statements
(no commit info)
[18/29] wan: sbni: Avoid comma separated statements
(no commit info)
[19/29] s390/tty3270: Avoid comma separated statements
(no commit info)
[20/29] scsi: arm: Avoid comma separated statements
https://git.kernel.org/mkp/scsi/c/a08a07326510
[21/29] media: atomisp: Avoid comma separated statements
(no commit info)
[22/29] video: fbdev: Avoid comma separated statements
(no commit info)
[23/29] fuse: Avoid comma separated statements
(no commit info)
[24/29] reiserfs: Avoid comma separated statements
(no commit info)
[25/29] lib/zlib: Avoid comma separated statements
(no commit info)
[26/29] lib: zstd: Avoid comma separated statements
(no commit info)
[27/29] ipv6: fib6: Avoid comma separated statements
(no commit info)
[28/29] sunrpc: Avoid comma separated statements
(no commit info)
[29/29] tools: Avoid comma separated statements
(no commit info)

-- 
Martin K. Petersen  Oracle Linux Engineering
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915: Fix DMA mapped scatterlist walks

2020-09-09 Thread Tvrtko Ursulin
From: Tvrtko Ursulin 

When walking DMA mapped scatterlists sg_dma_len has to be used since it
can be different (coalesced) from the backing store entry.

This also means we have to end the walk when encountering a zero length
DMA entry and cannot rely on the normal sg list end marker.

Both issues were there in theory for some time but were hidden by the fact
Intel IOMMU driver was never coalescing entries. As there are ongoing
efforts to change this we need to start handling it.

Signed-off-by: Tvrtko Ursulin 
References: 85d1225ec066 ("drm/i915: Introduce & use new lightweight SGL 
iterators")
References: b31144c0daa8 ("drm/i915: Micro-optimise 
gen6_ppgtt_insert_entries()")
Reported-by: Tom Murphy 
Suggested-by: Tom Murphy  # __sgt_iter
Suggested-by: Logan Gunthorpe  # __sgt_iter
Cc: Joonas Lahtinen 
Cc: Chris Wilson 
Cc: Matthew Auld 
Cc: Lu Baolu 
---
 drivers/gpu/drm/i915/gt/gen6_ppgtt.c|  6 +++---
 drivers/gpu/drm/i915/gt/gen8_ppgtt.c| 17 ++---
 drivers/gpu/drm/i915/gt/intel_gtt.h |  2 +-
 drivers/gpu/drm/i915/i915_scatterlist.h | 12 
 4 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/gen6_ppgtt.c 
b/drivers/gpu/drm/i915/gt/gen6_ppgtt.c
index fd0d24d28763..c0d17f87b00f 100644
--- a/drivers/gpu/drm/i915/gt/gen6_ppgtt.c
+++ b/drivers/gpu/drm/i915/gt/gen6_ppgtt.c
@@ -131,17 +131,17 @@ static void gen6_ppgtt_insert_entries(struct 
i915_address_space *vm,
 
vaddr = kmap_atomic_px(i915_pt_entry(pd, act_pt));
do {
-   GEM_BUG_ON(iter.sg->length < I915_GTT_PAGE_SIZE);
+   GEM_BUG_ON(sg_dma_len(iter.sg) < I915_GTT_PAGE_SIZE);
vaddr[act_pte] = pte_encode | GEN6_PTE_ADDR_ENCODE(iter.dma);
 
iter.dma += I915_GTT_PAGE_SIZE;
if (iter.dma == iter.max) {
iter.sg = __sg_next(iter.sg);
-   if (!iter.sg)
+   if (!iter.sg || sg_dma_len(iter.sg) == 0)
break;
 
iter.dma = sg_dma_address(iter.sg);
-   iter.max = iter.dma + iter.sg->length;
+   iter.max = iter.dma + sg_dma_len(iter.sg);
}
 
if (++act_pte == GEN6_PTES) {
diff --git a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c 
b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
index eb64f474a78c..0361b3dfdc72 100644
--- a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
+++ b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
@@ -372,19 +372,19 @@ gen8_ppgtt_insert_pte(struct i915_ppgtt *ppgtt,
pd = i915_pd_entry(pdp, gen8_pd_index(idx, 2));
vaddr = kmap_atomic_px(i915_pt_entry(pd, gen8_pd_index(idx, 1)));
do {
-   GEM_BUG_ON(iter->sg->length < I915_GTT_PAGE_SIZE);
+   GEM_BUG_ON(sg_dma_len(iter->sg) < I915_GTT_PAGE_SIZE);
vaddr[gen8_pd_index(idx, 0)] = pte_encode | iter->dma;
 
iter->dma += I915_GTT_PAGE_SIZE;
if (iter->dma >= iter->max) {
iter->sg = __sg_next(iter->sg);
-   if (!iter->sg) {
+   if (!iter->sg || sg_dma_len(iter->sg) == 0) {
idx = 0;
break;
}
 
iter->dma = sg_dma_address(iter->sg);
-   iter->max = iter->dma + iter->sg->length;
+   iter->max = iter->dma + sg_dma_len(iter->sg);
}
 
if (gen8_pd_index(++idx, 0) == 0) {
@@ -414,7 +414,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
 {
const gen8_pte_t pte_encode = gen8_pte_encode(0, cache_level, flags);
u64 start = vma->node.start;
-   dma_addr_t rem = iter->sg->length;
+   dma_addr_t rem = sg_dma_len(iter->sg);
 
GEM_BUG_ON(!i915_vm_is_4lvl(vma->vm));
 
@@ -456,7 +456,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
}
 
do {
-   GEM_BUG_ON(iter->sg->length < page_size);
+   GEM_BUG_ON(sg_dma_len(iter->sg) < page_size);
vaddr[index++] = encode | iter->dma;
 
start += page_size;
@@ -467,7 +467,10 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
if (!iter->sg)
break;
 
-   rem = iter->sg->length;
+   rem = sg_dma_len(iter->sg);
+   if (!rem)
+   break;
+
iter->dma = sg_dma_address(iter->sg);
iter->max = iter->dma + rem;
 
@@ -525,7 +528,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
}
 
vma->page_sizes.gtt |= page_size;
-   } while (iter->sg);
+   } while (iter->sg && 

Re: [Intel-gfx] [PATCH 0/8] Convert the intel iommu driver to the dma-iommu api

2020-09-09 Thread Tom Murphy
On Tue, 8 Sep 2020 at 16:56, Tvrtko Ursulin
 wrote:
>
>
> On 08/09/2020 16:44, Logan Gunthorpe wrote:
> > On 2020-09-08 9:28 a.m., Tvrtko Ursulin wrote:
> >>>
> >>> diff --git a/drivers/gpu/drm/i915/i915_scatterlist.h
> >>> b/drivers/gpu/drm/i915/i915
> >>> index b7b59328cb76..9367ac801f0c 100644
> >>> --- a/drivers/gpu/drm/i915/i915_scatterlist.h
> >>> +++ b/drivers/gpu/drm/i915/i915_scatterlist.h
> >>> @@ -27,13 +27,19 @@ static __always_inline struct sgt_iter {
> >>>} __sgt_iter(struct scatterlist *sgl, bool dma) {
> >>>   struct sgt_iter s = { .sgp = sgl };
> >>>
> >>> +   if (sgl && !sg_dma_len(s.sgp))
> >>
> >> I'd extend the condition to be, just to be safe:
> >>  if (dma && sgl && !sg_dma_len(s.sgp))
> >>
> >
> > Right, good catch, that's definitely necessary.
> >
> >>> +   s.sgp = NULL;
> >>> +
> >>>   if (s.sgp) {
> >>>   s.max = s.curr = s.sgp->offset;
> >>> -   s.max += s.sgp->length;
> >>> -   if (dma)
> >>> +
> >>> +   if (dma) {
> >>> +   s.max += sg_dma_len(s.sgp);
> >>>   s.dma = sg_dma_address(s.sgp);
> >>> -   else
> >>> +   } else {
> >>> +   s.max += s.sgp->length;
> >>>   s.pfn = page_to_pfn(sg_page(s.sgp));
> >>> +   }
> >>
> >> Otherwise has this been tested or alternatively how to test it? (How to
> >> repro the issue.)
> >
> > It has not been tested. To test it, you need Tom's patch set without the
> > last "DO NOT MERGE" patch:
> >
> > https://lkml.kernel.org/lkml/20200907070035.ga25...@infradead.org/T/
>
> Tom, do you have a branch somewhere I could pull from? (Just being lazy
> about downloading a bunch of messages from the archives.)

I don't unfortunately. I'm working locally with poor internet.

>
> What GPU is in your Lenovo x1 carbon 5th generation and what
> graphical/desktop setup I need to repro?


Is this enough info?:

$ lspci -vnn | grep VGA -A 12
00:02.0 VGA compatible controller [0300]: Intel Corporation HD
Graphics 620 [8086:5916] (rev 02) (prog-if 00 [VGA controller])
Subsystem: Lenovo ThinkPad X1 Carbon 5th Gen [17aa:224f]
Flags: bus master, fast devsel, latency 0, IRQ 148
Memory at eb00 (64-bit, non-prefetchable) [size=16M]
Memory at 6000 (64-bit, prefetchable) [size=256M]
I/O ports at e000 [size=64]
[virtual] Expansion ROM at 000c [disabled] [size=128K]
Capabilities: [40] Vendor Specific Information: Len=0c 
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [100] Process Address Space ID (PASID)
Capabilities: [200] Address Translation Service (ATS)


>
> Regards,
>
> Tvrtko
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH V2 5/5] DO NOT MERGE: iommu: disable list appending in dma-iommu

2020-09-09 Thread Christoph Hellwig
On Wed, Sep 09, 2020 at 09:43:09AM +0800, Lu Baolu wrote:
> +   /*
> +* The Intel graphic device driver is used to assume that the
> returned
> +* sg list is not combound. This blocks the efforts of converting
> the

This adds pointless overly long lines.

> +* Intel IOMMU driver to dma-iommu api's. Add this quirk to make the
> +* device driver work and should be removed once it's fixed in i915
> +* driver.
> +*/
> +   if (dev_is_pci(dev) &&
> +   to_pci_dev(dev)->vendor == PCI_VENDOR_ID_INTEL &&
> +   (to_pci_dev(dev)->class >> 16) == PCI_BASE_CLASS_DISPLAY) {
> +   for_each_sg(sg, s, nents, i) {
> +   unsigned int s_iova_off = sg_dma_address(s);
> +   unsigned int s_length = sg_dma_len(s);
> +   unsigned int s_iova_len = s->length;
> +
> +   s->offset += s_iova_off;
> +   s->length = s_length;
> +   sg_dma_address(s) = dma_addr + s_iova_off;
> +   sg_dma_len(s) = s_length;
> +   dma_addr += s_iova_len;
> +   }
> +
> +   return nents;
> +   }

This wants an IS_ENABLED() check.  And probably a pr_once reminding
of the workaround.
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/xlnx: Use devm_drm_dev_alloc

2020-09-09 Thread Hyun Kwon
Hi Daniel,

On Mon, Sep 07, 2020 at 01:22:25AM -0700, Daniel Vetter wrote:
> Gets rid of drmm_add_final_kfree, which I want to unexport so that it
> stops confusion people about this transitional state of rolling drm
> managed memory out.
> 
> This also fixes the missing drm_dev_put in the error path of the probe
> code.
> 
> v2: Drop the misplaced drm_dev_put from zynqmp_dpsub_drm_init (all
> other paths leaked on error, this should have been in
> zynqmp_dpsub_probe), now that subsumed by the auto-cleanup of
> devm_drm_dev_alloc.
> 
> Signed-off-by: Daniel Vetter 
> Cc: Hyun Kwon 
> Cc: Laurent Pinchart 
> Cc: Michal Simek 
> Cc: linux-arm-ker...@lists.infradead.org

Looks correct to me.

Reviewed-by: Hyun Kwon 

Thanks!

-hyun

> ---
>  drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 27 ++-
>  1 file changed, 6 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c 
> b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> index 26328c76305b..8e69303aad3f 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
> @@ -111,7 +111,7 @@ static int zynqmp_dpsub_drm_init(struct zynqmp_dpsub 
> *dpsub)
>   /* Initialize mode config, vblank and the KMS poll helper. */
>   ret = drmm_mode_config_init(drm);
>   if (ret < 0)
> - goto err_dev_put;
> + return ret;
>  
>   drm->mode_config.funcs = _dpsub_mode_config_funcs;
>   drm->mode_config.min_width = 0;
> @@ -121,7 +121,7 @@ static int zynqmp_dpsub_drm_init(struct zynqmp_dpsub 
> *dpsub)
>  
>   ret = drm_vblank_init(drm, 1);
>   if (ret)
> - goto err_dev_put;
> + return ret;
>  
>   drm->irq_enabled = 1;
>  
> @@ -154,8 +154,6 @@ static int zynqmp_dpsub_drm_init(struct zynqmp_dpsub 
> *dpsub)
>  
>  err_poll_fini:
>   drm_kms_helper_poll_fini(drm);
> -err_dev_put:
> - drm_dev_put(drm);
>   return ret;
>  }
>  
> @@ -208,27 +206,16 @@ static int zynqmp_dpsub_probe(struct platform_device 
> *pdev)
>   int ret;
>  
>   /* Allocate private data. */
> - dpsub = kzalloc(sizeof(*dpsub), GFP_KERNEL);
> - if (!dpsub)
> - return -ENOMEM;
> + dpsub = devm_drm_dev_alloc(>dev, _dpsub_drm_driver,
> +struct zynqmp_dpsub, drm);
> + if (IS_ERR(dpsub))
> + return PTR_ERR(dpsub);
>  
>   dpsub->dev = >dev;
>   platform_set_drvdata(pdev, dpsub);
>  
>   dma_set_mask(dpsub->dev, DMA_BIT_MASK(ZYNQMP_DISP_MAX_DMA_BIT));
>  
> - /*
> -  * Initialize the DRM device early, as the DRM core mandates usage of
> -  * the managed memory helpers tied to the DRM device.
> -  */
> - ret = drm_dev_init(>drm, _dpsub_drm_driver, >dev);
> - if (ret < 0) {
> - kfree(dpsub);
> - return ret;
> - }
> -
> - drmm_add_final_kfree(>drm, dpsub);
> -
>   /* Try the reserved memory. Proceed if there's none. */
>   of_reserved_mem_device_init(>dev);
>  
> @@ -286,8 +273,6 @@ static int zynqmp_dpsub_remove(struct platform_device 
> *pdev)
>   clk_disable_unprepare(dpsub->apb_clk);
>   of_reserved_mem_device_release(>dev);
>  
> - drm_dev_put(drm);
> -
>   return 0;
>  }
>  
> -- 
> 2.28.0
> 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [RFC PATCH] drm/i915/dsi: gen11_dsi_te_interrupt_handler() can be static

2020-09-09 Thread kernel test robot


Signed-off-by: kernel test robot 
---
 i915_irq.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index f8398c5cbd4a60..3e150c9179f7ca 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2299,8 +2299,8 @@ gen8_de_misc_irq_handler(struct drm_i915_private 
*dev_priv, u32 iir)
drm_err(_priv->drm, "Unexpected DE Misc interrupt\n");
 }
 
-void gen11_dsi_te_interrupt_handler(struct drm_i915_private *dev_priv,
-   u32 te_trigger)
+static void gen11_dsi_te_interrupt_handler(struct drm_i915_private *dev_priv,
+  u32 te_trigger)
 {
enum pipe pipe = INVALID_PIPE;
enum transcoder dsi_trans;
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [V9 3/4] drm/i915/dsi: Add TE handler for dsi cmd mode.

2020-09-09 Thread kernel test robot
Hi Vandita,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[also build test WARNING on v5.9-rc4 next-20200908]
[cannot apply to drm-intel/for-linux-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/Vandita-Kulkarni/Add-support-for-mipi-dsi-cmd-mode/20200909-165807
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: i386-randconfig-s002-20200909 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-191-g10164920-dirty
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot 

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/i915/i915_irq.c:2302:6: warning: no previous prototype for 
>> 'gen11_dsi_te_interrupt_handler' [-Wmissing-prototypes]
2302 | void gen11_dsi_te_interrupt_handler(struct drm_i915_private 
*dev_priv,
 |  ^~

sparse warnings: (new ones prefixed by >>)

>> drivers/gpu/drm/i915/i915_irq.c:2302:6: sparse: sparse: symbol 
>> 'gen11_dsi_te_interrupt_handler' was not declared. Should it be static?

Please review and possibly fold the followup patch.

# 
https://github.com/0day-ci/linux/commit/3b071e8b378aa99a24cedbc6d3525a17f8e203e5
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review 
Vandita-Kulkarni/Add-support-for-mipi-dsi-cmd-mode/20200909-165807
git checkout 3b071e8b378aa99a24cedbc6d3525a17f8e203e5
vim +/gen11_dsi_te_interrupt_handler +2302 drivers/gpu/drm/i915/i915_irq.c

  2301  
> 2302  void gen11_dsi_te_interrupt_handler(struct drm_i915_private *dev_priv,
  2303  u32 te_trigger)
  2304  {
  2305  enum pipe pipe = INVALID_PIPE;
  2306  enum transcoder dsi_trans;
  2307  enum port port;
  2308  u32 val, tmp;
  2309  
  2310  /*
  2311   * Incase of dual link, TE comes from DSI_1
  2312   * this is to check if dual link is enabled
  2313   */
  2314  val = I915_READ(TRANS_DDI_FUNC_CTL2(TRANSCODER_DSI_0));
  2315  val &= PORT_SYNC_MODE_ENABLE;
  2316  
  2317  /*
  2318   * if dual link is enabled, then read DSI_0
  2319   * transcoder registers
  2320   */
  2321  port = ((te_trigger & DSI1_TE && val) || (te_trigger & 
DSI0_TE)) ?
  2322PORT_A : PORT_B;
  2323  dsi_trans = (port == PORT_A) ? TRANSCODER_DSI_0 : 
TRANSCODER_DSI_1;
  2324  
  2325  /* Check if DSI configured in command mode */
  2326  val = I915_READ(DSI_TRANS_FUNC_CONF(dsi_trans));
  2327  val = val & OP_MODE_MASK;
  2328  
  2329  if ((val != CMD_MODE_NO_GATE) && (val != CMD_MODE_TE_GATE)) {
  2330  drm_err(_priv->drm, "DSI trancoder not configured 
in command mode\n");
  2331  return;
  2332  }
  2333  
  2334  /* Get PIPE for handling VBLANK event */
  2335  val = I915_READ(TRANS_DDI_FUNC_CTL(dsi_trans));
  2336  switch (val & TRANS_DDI_EDP_INPUT_MASK) {
  2337  case TRANS_DDI_EDP_INPUT_A_ON:
  2338  pipe = PIPE_A;
  2339  break;
  2340  case TRANS_DDI_EDP_INPUT_B_ONOFF:
  2341  pipe = PIPE_B;
  2342  break;
  2343  case TRANS_DDI_EDP_INPUT_C_ONOFF:
  2344  pipe = PIPE_C;
  2345  break;
  2346  default:
  2347  drm_err(_priv->drm, "Invalid PIPE\n");
  2348  return;
  2349  }
  2350  
  2351  intel_handle_vblank(dev_priv, pipe);
  2352  
  2353  /* clear TE in dsi IIR */
  2354  port = (te_trigger & DSI1_TE) ? PORT_B : PORT_A;
  2355  tmp = I915_READ(DSI_INTR_IDENT_REG(port));
  2356  I915_WRITE(DSI_INTR_IDENT_REG(port), tmp);
  2357  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org


.config.gz
Description: application/gzip
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.BUILD: failure for drm_managed, leftovers (rev4)

2020-09-09 Thread Patchwork
== Series Details ==

Series: drm_managed, leftovers (rev4)
URL   : https://patchwork.freedesktop.org/series/81371/
State : failure

== Summary ==

CALLscripts/checksyscalls.sh
  CALLscripts/atomic/check-atomics.sh
  DESCEND  objtool
  CHK include/generated/compile.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c: In function ‘amdgpu_pci_probe’:
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c:1152:8: error: implicit declaration of 
function ‘drm_dev_init’; did you mean ‘drm_dev_exit’? 
[-Werror=implicit-function-declaration]
  ret = drm_dev_init(ddev, _driver, >dev);
^~~~
drm_dev_exit
cc1: some warnings being treated as errors
scripts/Makefile.build:283: recipe for target 
'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o' failed
make[4]: *** [drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o] Error 1
scripts/Makefile.build:500: recipe for target 'drivers/gpu/drm/amd/amdgpu' 
failed
make[3]: *** [drivers/gpu/drm/amd/amdgpu] Error 2
scripts/Makefile.build:500: recipe for target 'drivers/gpu/drm' failed
make[2]: *** [drivers/gpu/drm] Error 2
scripts/Makefile.build:500: recipe for target 'drivers/gpu' failed
make[1]: *** [drivers/gpu] Error 2
Makefile:1784: recipe for target 'drivers' failed
make: *** [drivers] Error 2


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/vgem: Use devm_drm_dev_alloc

2020-09-09 Thread Daniel Vetter
This means we also need to slightly restructure the exit code, so that
final cleanup of the drm_device is triggered by unregistering the
platform device. Note that devres is both clean up when the driver is
unbound (not the case for vgem, we don't bind), and also when unregistering
the device (very much the case for vgem). Therefore we can rely on devres
even though vgem isn't a proper platform device driver.

This also somewhat untangles the load code, since the drm and platform device
setup are no longer interleaved, but two distinct steps.

v2: use devres_open/release_group so we can use devm without real
hacks in the driver core or having to create an entire fake bus for
testing drivers. Might want to extract this into helpers eventually,
maybe as a mock_drm_dev_alloc or test_drm_dev_alloc.

v3: Fix error code handling (Melissa)

Cc: Melissa Wen 
Reviewed-by: Melissa Wen 
Signed-off-by: Daniel Vetter 
Cc: Daniel Vetter 
Cc: Emil Velikov 
Cc: Sean Paul 
Cc: Chris Wilson 
Cc: Sam Ravnborg 
Cc: Rob Clark 
---
 drivers/gpu/drm/vgem/vgem_drv.c | 55 ++---
 1 file changed, 24 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index 15dd41e67de3..cb884c890065 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -401,16 +401,8 @@ static int vgem_prime_mmap(struct drm_gem_object *obj,
return 0;
 }
 
-static void vgem_release(struct drm_device *dev)
-{
-   struct vgem_device *vgem = container_of(dev, typeof(*vgem), drm);
-
-   platform_device_unregister(vgem->platform);
-}
-
 static struct drm_driver vgem_driver = {
.driver_features= DRIVER_GEM | DRIVER_RENDER,
-   .release= vgem_release,
.open   = vgem_open,
.postclose  = vgem_postclose,
.gem_free_object_unlocked   = vgem_gem_free_object,
@@ -442,48 +434,49 @@ static struct drm_driver vgem_driver = {
 static int __init vgem_init(void)
 {
int ret;
+   struct platform_device *pdev;
 
-   vgem_device = kzalloc(sizeof(*vgem_device), GFP_KERNEL);
-   if (!vgem_device)
-   return -ENOMEM;
+   pdev = platform_device_register_simple("vgem", -1, NULL, 0);
+   if (IS_ERR(pdev))
+   return PTR_ERR(pdev);
 
-   vgem_device->platform =
-   platform_device_register_simple("vgem", -1, NULL, 0);
-   if (IS_ERR(vgem_device->platform)) {
-   ret = PTR_ERR(vgem_device->platform);
-   goto out_free;
+   if (!devres_open_group(>dev, NULL, GFP_KERNEL)) {
+   ret = -ENOMEM;
+   goto out_unregister;
}
 
-   dma_coerce_mask_and_coherent(_device->platform->dev,
+   dma_coerce_mask_and_coherent(>dev,
 DMA_BIT_MASK(64));
-   ret = drm_dev_init(_device->drm, _driver,
-  _device->platform->dev);
-   if (ret)
-   goto out_unregister;
-   drmm_add_final_kfree(_device->drm, vgem_device);
+
+   vgem_device = devm_drm_dev_alloc(>dev, _driver,
+struct vgem_device, drm);
+   if (IS_ERR(vgem_device)) {
+   ret = PTR_ERR(vgem_device);
+   goto out_devres;
+   }
+   vgem_device->platform = pdev;
 
/* Final step: expose the device/driver to userspace */
ret = drm_dev_register(_device->drm, 0);
if (ret)
-   goto out_put;
+   goto out_devres;
 
return 0;
 
-out_put:
-   drm_dev_put(_device->drm);
-   platform_device_unregister(vgem_device->platform);
-   return ret;
+out_devres:
+   devres_release_group(>dev, NULL);
 out_unregister:
-   platform_device_unregister(vgem_device->platform);
-out_free:
-   kfree(vgem_device);
+   platform_device_unregister(pdev);
return ret;
 }
 
 static void __exit vgem_exit(void)
 {
+   struct platform_device *pdev = vgem_device->platform;
+
drm_dev_unregister(_device->drm);
-   drm_dev_put(_device->drm);
+   devres_release_group(>dev, NULL);
+   platform_device_unregister(pdev);
 }
 
 module_init(vgem_init);
-- 
2.28.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 04/24] drm/vgem: Use devm_drm_dev_alloc

2020-09-09 Thread Daniel Vetter
On Wed, Sep 9, 2020 at 1:01 PM Melissa Wen  wrote:
>
> Hi Daniel,
>
> looks good to me, just a few things inline.
>
> On 09/04, Daniel Vetter wrote:
> > This means we also need to slightly restructure the exit code, so that
> > final cleanup of the drm_device is triggered by unregistering the
> > platform device. Note that devres is both clean up when the driver is
> > unbound (not the case for vgem, we don't bind), and also when unregistering
> > the device (very much the case for vgem). Therefore we can rely on devres
> > even though vgem isn't a proper platform device driver.
> >
> > This also somewhat untangles the load code, since the drm and platform 
> > device
> > setup are no longer interleaved, but two distinct steps.
> >
> > v2: use devres_open/release_group so we can use devm without real
> > hacks in the driver core or having to create an entire fake bus for
> > testing drivers. Might want to extract this into helpers eventually,
> > maybe as a mock_drm_dev_alloc or test_drm_dev_alloc.
> >
> > Signed-off-by: Daniel Vetter 
> > Cc: Daniel Vetter 
> > Cc: Emil Velikov 
> > Cc: Sean Paul 
> > Cc: Chris Wilson 
> > Cc: Sam Ravnborg 
> > Cc: Rob Clark 
> > ---
> >  drivers/gpu/drm/vgem/vgem_drv.c | 55 ++---
> >  1 file changed, 24 insertions(+), 31 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c 
> > b/drivers/gpu/drm/vgem/vgem_drv.c
> > index 313339bbff90..f95537627463 100644
> > --- a/drivers/gpu/drm/vgem/vgem_drv.c
> > +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> > @@ -401,16 +401,8 @@ static int vgem_prime_mmap(struct drm_gem_object *obj,
> >   return 0;
> >  }
> >
> > -static void vgem_release(struct drm_device *dev)
> > -{
> > - struct vgem_device *vgem = container_of(dev, typeof(*vgem), drm);
> > -
> > - platform_device_unregister(vgem->platform);
> > -}
> > -
> >  static struct drm_driver vgem_driver = {
> >   .driver_features= DRIVER_GEM | DRIVER_RENDER,
> > - .release= vgem_release,
> >   .open   = vgem_open,
> >   .postclose  = vgem_postclose,
> >   .gem_free_object_unlocked   = vgem_gem_free_object,
> > @@ -442,48 +434,49 @@ static struct drm_driver vgem_driver = {
> >  static int __init vgem_init(void)
> >  {
> >   int ret;
> > + struct platform_device *pdev;
> >
> > - vgem_device = kzalloc(sizeof(*vgem_device), GFP_KERNEL);
> > - if (!vgem_device)
> > - return -ENOMEM;
> > + pdev = platform_device_register_simple("vgem", -1, NULL, 0);
> > + if (IS_ERR(pdev))
> > + return PTR_ERR(vgem_device->platform);
> I caught this line right above.
> It should be: return PTR_ERR (pdev), right?

Yes I will fix.

> > - vgem_device->platform =
> > - platform_device_register_simple("vgem", -1, NULL, 0);
> > - if (IS_ERR(vgem_device->platform)) {
> > - ret = PTR_ERR(vgem_device->platform);
> > - goto out_free;
> > + if (!devres_open_group(>dev, NULL, GFP_KERNEL)) {
> > + ret = -ENOMEM;
> > + goto out_unregister;
> >   }
> >
> > - dma_coerce_mask_and_coherent(_device->platform->dev,
> > + dma_coerce_mask_and_coherent(>dev,
> >DMA_BIT_MASK(64));
> > - ret = drm_dev_init(_device->drm, _driver,
> > -_device->platform->dev);
> > - if (ret)
> > - goto out_unregister;
> > - drmm_add_final_kfree(_device->drm, vgem_device);
> > +
> > + vgem_device = devm_drm_dev_alloc(>dev, _driver,
> > +  struct vgem_device, drm);
> > + if (IS_ERR(vgem_device)) {
> > + ret = PTR_ERR(vgem_device);
> > + goto out_devres;
> > + }
> > + vgem_device->platform = pdev;
> >
> >   /* Final step: expose the device/driver to userspace */
> >   ret = drm_dev_register(_device->drm, 0);
> >   if (ret)
> > - goto out_put;
> > + goto out_devres;
> >
> >   return 0;
> >
> > -out_put:
> > - drm_dev_put(_device->drm);
> > - platform_device_unregister(vgem_device->platform);
> > - return ret;
> > +out_devres:
> > + devres_release_group(>dev, NULL);
> >  out_unregister:
> > - platform_device_unregister(vgem_device->platform);
> > -out_free:
> > - kfree(vgem_device);
> > + platform_device_unregister(pdev);
> >   return ret;
> >  }
> >
> >  static void __exit vgem_exit(void)
> >  {
> > + struct platform_device *pdev = vgem_device->platform;
> > +
> Well, there has never been a check for a null vgem_device here before,
> as in vkms. Should?

I think it should, but that's kinda a separate patch. Want to type it?
-Daniel

> >   drm_dev_unregister(_device->drm);
> > - drm_dev_put(_device->drm);
> > + devres_release_group(>dev, NULL);
> > + platform_device_unregister(pdev);
> >  }
> >
> >  module_init(vgem_init);
> > 

[Intel-gfx] ✗ Fi.CI.IGT: failure for Add support for mipi dsi cmd mode (rev9)

2020-09-09 Thread Patchwork
== Series Details ==

Series: Add support for mipi dsi cmd mode (rev9)
URL   : https://patchwork.freedesktop.org/series/69290/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8989_full -> Patchwork_18457_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_18457_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_18457_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_18457_full:

### IGT changes ###

 Possible regressions 

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-skl:  [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-skl1/igt@kms_cursor_leg...@flip-vs-cursor-atomic-transitions.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-skl2/igt@kms_cursor_leg...@flip-vs-cursor-atomic-transitions.html

  
Known issues


  Here are the changes found in Patchwork_18457_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_reloc@basic-cpu-gtt-active:
- shard-snb:  [PASS][3] -> [INCOMPLETE][4] ([i915#2439] / 
[i915#82]) +2 similar issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-snb4/igt@gem_exec_re...@basic-cpu-gtt-active.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-snb1/igt@gem_exec_re...@basic-cpu-gtt-active.html

  * igt@gem_exec_reloc@basic-gtt-active:
- shard-skl:  [PASS][5] -> [INCOMPLETE][6] ([i915#2439]) +1 similar 
issue
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-skl10/igt@gem_exec_re...@basic-gtt-active.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-skl10/igt@gem_exec_re...@basic-gtt-active.html
- shard-apl:  [PASS][7] -> [INCOMPLETE][8] ([i915#1635] / 
[i915#2439]) +1 similar issue
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-apl3/igt@gem_exec_re...@basic-gtt-active.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-apl6/igt@gem_exec_re...@basic-gtt-active.html

  * igt@gem_exec_reloc@basic-gtt-cpu-active:
- shard-skl:  [PASS][9] -> [DMESG-FAIL][10] ([i915#2439])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-skl9/igt@gem_exec_re...@basic-gtt-cpu-active.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-skl6/igt@gem_exec_re...@basic-gtt-cpu-active.html

  * igt@gem_exec_reloc@basic-wc-cpu-active:
- shard-kbl:  [PASS][11] -> [INCOMPLETE][12] ([i915#2439])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-kbl3/igt@gem_exec_re...@basic-wc-cpu-active.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-kbl7/igt@gem_exec_re...@basic-wc-cpu-active.html

  * igt@gem_exec_whisper@basic-queues-all:
- shard-glk:  [PASS][13] -> [INCOMPLETE][14] ([i915#2439]) +2 
similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-glk4/igt@gem_exec_whis...@basic-queues-all.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-glk7/igt@gem_exec_whis...@basic-queues-all.html
- shard-iclb: [PASS][15] -> [INCOMPLETE][16] ([i915#2439])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-iclb6/igt@gem_exec_whis...@basic-queues-all.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-iclb5/igt@gem_exec_whis...@basic-queues-all.html

  * igt@gem_exec_whisper@basic-queues-forked:
- shard-tglb: [PASS][17] -> [INCOMPLETE][18] ([i915#2439]) +6 
similar issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-tglb8/igt@gem_exec_whis...@basic-queues-forked.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-tglb2/igt@gem_exec_whis...@basic-queues-forked.html

  * igt@gen9_exec_parse@allowed-single:
- shard-skl:  [PASS][19] -> [DMESG-WARN][20] ([i915#1436] / 
[i915#716])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-skl8/igt@gen9_exec_pa...@allowed-single.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-skl3/igt@gen9_exec_pa...@allowed-single.html

  * igt@kms_big_fb@linear-64bpp-rotate-0:
- shard-glk:  [PASS][21] -> [DMESG-WARN][22] ([i915#1982])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/shard-glk6/igt@kms_big...@linear-64bpp-rotate-0.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/shard-glk6/igt@kms_big...@linear-64bpp-rotate-0.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-180:
- 

Re: [Intel-gfx] [PATCH 04/24] drm/vgem: Use devm_drm_dev_alloc

2020-09-09 Thread Melissa Wen
Hi Daniel,

looks good to me, just a few things inline.

On 09/04, Daniel Vetter wrote:
> This means we also need to slightly restructure the exit code, so that
> final cleanup of the drm_device is triggered by unregistering the
> platform device. Note that devres is both clean up when the driver is
> unbound (not the case for vgem, we don't bind), and also when unregistering
> the device (very much the case for vgem). Therefore we can rely on devres
> even though vgem isn't a proper platform device driver.
> 
> This also somewhat untangles the load code, since the drm and platform device
> setup are no longer interleaved, but two distinct steps.
> 
> v2: use devres_open/release_group so we can use devm without real
> hacks in the driver core or having to create an entire fake bus for
> testing drivers. Might want to extract this into helpers eventually,
> maybe as a mock_drm_dev_alloc or test_drm_dev_alloc.
> 
> Signed-off-by: Daniel Vetter 
> Cc: Daniel Vetter 
> Cc: Emil Velikov 
> Cc: Sean Paul 
> Cc: Chris Wilson 
> Cc: Sam Ravnborg 
> Cc: Rob Clark 
> ---
>  drivers/gpu/drm/vgem/vgem_drv.c | 55 ++---
>  1 file changed, 24 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index 313339bbff90..f95537627463 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -401,16 +401,8 @@ static int vgem_prime_mmap(struct drm_gem_object *obj,
>   return 0;
>  }
>  
> -static void vgem_release(struct drm_device *dev)
> -{
> - struct vgem_device *vgem = container_of(dev, typeof(*vgem), drm);
> -
> - platform_device_unregister(vgem->platform);
> -}
> -
>  static struct drm_driver vgem_driver = {
>   .driver_features= DRIVER_GEM | DRIVER_RENDER,
> - .release= vgem_release,
>   .open   = vgem_open,
>   .postclose  = vgem_postclose,
>   .gem_free_object_unlocked   = vgem_gem_free_object,
> @@ -442,48 +434,49 @@ static struct drm_driver vgem_driver = {
>  static int __init vgem_init(void)
>  {
>   int ret;
> + struct platform_device *pdev;
>  
> - vgem_device = kzalloc(sizeof(*vgem_device), GFP_KERNEL);
> - if (!vgem_device)
> - return -ENOMEM;
> + pdev = platform_device_register_simple("vgem", -1, NULL, 0);
> + if (IS_ERR(pdev))
> + return PTR_ERR(vgem_device->platform);
I caught this line right above.
It should be: return PTR_ERR (pdev), right?
>  
> - vgem_device->platform =
> - platform_device_register_simple("vgem", -1, NULL, 0);
> - if (IS_ERR(vgem_device->platform)) {
> - ret = PTR_ERR(vgem_device->platform);
> - goto out_free;
> + if (!devres_open_group(>dev, NULL, GFP_KERNEL)) {
> + ret = -ENOMEM;
> + goto out_unregister;
>   }
>  
> - dma_coerce_mask_and_coherent(_device->platform->dev,
> + dma_coerce_mask_and_coherent(>dev,
>DMA_BIT_MASK(64));
> - ret = drm_dev_init(_device->drm, _driver,
> -_device->platform->dev);
> - if (ret)
> - goto out_unregister;
> - drmm_add_final_kfree(_device->drm, vgem_device);
> +
> + vgem_device = devm_drm_dev_alloc(>dev, _driver,
> +  struct vgem_device, drm);
> + if (IS_ERR(vgem_device)) {
> + ret = PTR_ERR(vgem_device);
> + goto out_devres;
> + }
> + vgem_device->platform = pdev;
>  
>   /* Final step: expose the device/driver to userspace */
>   ret = drm_dev_register(_device->drm, 0);
>   if (ret)
> - goto out_put;
> + goto out_devres;
>  
>   return 0;
>  
> -out_put:
> - drm_dev_put(_device->drm);
> - platform_device_unregister(vgem_device->platform);
> - return ret;
> +out_devres:
> + devres_release_group(>dev, NULL);
>  out_unregister:
> - platform_device_unregister(vgem_device->platform);
> -out_free:
> - kfree(vgem_device);
> + platform_device_unregister(pdev);
>   return ret;
>  }
>  
>  static void __exit vgem_exit(void)
>  {
> + struct platform_device *pdev = vgem_device->platform;
> +
Well, there has never been a check for a null vgem_device here before,
as in vkms. Should?
>   drm_dev_unregister(_device->drm);
> - drm_dev_put(_device->drm);
> + devres_release_group(>dev, NULL);
> + platform_device_unregister(pdev);
>  }
>  
>  module_init(vgem_init);
> -- 
> 2.28.0

Apart from these two points,

Reviewed-by: Melissa Wen 

Thanks!
> 
> ___
> dri-devel mailing list
> dri-de...@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org

[Intel-gfx] ✓ Fi.CI.BAT: success for Add support for mipi dsi cmd mode (rev9)

2020-09-09 Thread Patchwork
== Series Details ==

Series: Add support for mipi dsi cmd mode (rev9)
URL   : https://patchwork.freedesktop.org/series/69290/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8989 -> Patchwork_18457


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/index.html

Known issues


  Here are the changes found in Patchwork_18457 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_gttfill@basic:
- fi-kbl-r:   [PASS][1] -> [INCOMPLETE][2] ([i915#2439])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-kbl-r/igt@gem_exec_gttf...@basic.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-kbl-r/igt@gem_exec_gttf...@basic.html
- fi-bdw-5557u:   [PASS][3] -> [INCOMPLETE][4] ([i915#2439])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-bdw-5557u/igt@gem_exec_gttf...@basic.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-bdw-5557u/igt@gem_exec_gttf...@basic.html
- fi-skl-6600u:   [PASS][5] -> [INCOMPLETE][6] ([i915#2439])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-skl-6600u/igt@gem_exec_gttf...@basic.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-skl-6600u/igt@gem_exec_gttf...@basic.html
- fi-byt-j1900:   [PASS][7] -> [INCOMPLETE][8] ([i915#2439])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-byt-j1900/igt@gem_exec_gttf...@basic.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-byt-j1900/igt@gem_exec_gttf...@basic.html
- fi-skl-lmem:[PASS][9] -> [INCOMPLETE][10] ([i915#2439])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-skl-lmem/igt@gem_exec_gttf...@basic.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-skl-lmem/igt@gem_exec_gttf...@basic.html
- fi-ilk-650: [PASS][11] -> [INCOMPLETE][12] ([i915#2439])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-ilk-650/igt@gem_exec_gttf...@basic.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-ilk-650/igt@gem_exec_gttf...@basic.html

  * igt@gem_exec_parallel@engines@basic:
- fi-bsw-n3050:   [PASS][13] -> [INCOMPLETE][14] ([i915#2439])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-bsw-n3050/igt@gem_exec_parallel@engi...@basic.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-bsw-n3050/igt@gem_exec_parallel@engi...@basic.html

  * igt@gem_tiled_fence_blits@basic:
- fi-bsw-kefka:   [PASS][15] -> [INCOMPLETE][16] ([i915#2439])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-bsw-kefka/igt@gem_tiled_fence_bl...@basic.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-bsw-kefka/igt@gem_tiled_fence_bl...@basic.html

  * igt@i915_selftest@live@gem_execbuf:
- fi-snb-2520m:   [PASS][17] -> [INCOMPLETE][18] ([i915#2440])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-snb-2520m/igt@i915_selftest@live@gem_execbuf.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-snb-2520m/igt@i915_selftest@live@gem_execbuf.html
- fi-pnv-d510:[PASS][19] -> [INCOMPLETE][20] ([i915#2440] / 
[i915#299])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-pnv-d510/igt@i915_selftest@live@gem_execbuf.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-pnv-d510/igt@i915_selftest@live@gem_execbuf.html

  
 Possible fixes 

  * igt@debugfs_test@read_all_entries:
- {fi-kbl-7560u}: [INCOMPLETE][21] ([i915#2417]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-kbl-7560u/igt@debugfs_test@read_all_entries.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-kbl-7560u/igt@debugfs_test@read_all_entries.html

  * igt@gem_exec_gttfill@basic:
- fi-kbl-7500u:   [INCOMPLETE][23] ([i915#2439]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-kbl-7500u/igt@gem_exec_gttf...@basic.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-kbl-7500u/igt@gem_exec_gttf...@basic.html
- fi-elk-e7500:   [INCOMPLETE][25] ([i915#2439] / [i915#66]) -> 
[PASS][26]
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-elk-e7500/igt@gem_exec_gttf...@basic.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-elk-e7500/igt@gem_exec_gttf...@basic.html

  * igt@gem_exec_parallel@engines@basic:
- fi-bdw-gvtdvm:  [INCOMPLETE][27] ([i915#2439]) -> [PASS][28]
   [27]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8989/fi-bdw-gvtdvm/igt@gem_exec_parallel@engi...@basic.html
   [28]: 

[Intel-gfx] ✗ Fi.CI.BUILD: failure for drm_managed, leftovers (rev3)

2020-09-09 Thread Patchwork
== Series Details ==

Series: drm_managed, leftovers (rev3)
URL   : https://patchwork.freedesktop.org/series/81371/
State : failure

== Summary ==

CALLscripts/checksyscalls.sh
  CALLscripts/atomic/check-atomics.sh
  DESCEND  objtool
  CHK include/generated/compile.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c: In function ‘amdgpu_pci_probe’:
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c:1152:8: error: implicit declaration of 
function ‘drm_dev_init’; did you mean ‘drm_dev_exit’? 
[-Werror=implicit-function-declaration]
  ret = drm_dev_init(ddev, _driver, >dev);
^~~~
drm_dev_exit
cc1: some warnings being treated as errors
scripts/Makefile.build:283: recipe for target 
'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o' failed
make[4]: *** [drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o] Error 1
scripts/Makefile.build:500: recipe for target 'drivers/gpu/drm/amd/amdgpu' 
failed
make[3]: *** [drivers/gpu/drm/amd/amdgpu] Error 2
scripts/Makefile.build:500: recipe for target 'drivers/gpu/drm' failed
make[2]: *** [drivers/gpu/drm] Error 2
scripts/Makefile.build:500: recipe for target 'drivers/gpu' failed
make[1]: *** [drivers/gpu] Error 2
Makefile:1784: recipe for target 'drivers' failed
make: *** [drivers] Error 2


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.SPARSE: warning for Add support for mipi dsi cmd mode (rev9)

2020-09-09 Thread Patchwork
== Series Details ==

Series: Add support for mipi dsi cmd mode (rev9)
URL   : https://patchwork.freedesktop.org/series/69290/
State : warning

== Summary ==

$ dim sparse --fast origin/drm-tip
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/i915_irq.c:2302:6: warning: symbol 
'gen11_dsi_te_interrupt_handler' was not declared. Should it be static?


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Add support for mipi dsi cmd mode (rev9)

2020-09-09 Thread Patchwork
== Series Details ==

Series: Add support for mipi dsi cmd mode (rev9)
URL   : https://patchwork.freedesktop.org/series/69290/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
5e85a0c24d65 drm/i915/dsi: Add details about TE in get_config
afc7ad4c92cd i915/dsi: Configure TE interrupt for cmd mode
4ef5ce3428d7 drm/i915/dsi: Add TE handler for dsi cmd mode.
-:59: CHECK:UNNECESSARY_PARENTHESES: Unnecessary parentheses around 'val != 
CMD_MODE_NO_GATE'
#59: FILE: drivers/gpu/drm/i915/i915_irq.c:2329:
+   if ((val != CMD_MODE_NO_GATE) && (val != CMD_MODE_TE_GATE)) {

-:59: CHECK:UNNECESSARY_PARENTHESES: Unnecessary parentheses around 'val != 
CMD_MODE_TE_GATE'
#59: FILE: drivers/gpu/drm/i915/i915_irq.c:2329:
+   if ((val != CMD_MODE_NO_GATE) && (val != CMD_MODE_TE_GATE)) {

-:88: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#88: FILE: drivers/gpu/drm/i915/i915_irq.c:2358:
+
+}

total: 0 errors, 0 warnings, 3 checks, 78 lines checked
bfde9ee264dc drm/i915/dsi: Initiate fame request in cmd mode
-:85: CHECK:LINE_SPACING: Please don't use multiple blank lines
#85: FILE: drivers/gpu/drm/i915/display/intel_display.c:15641:
 
+

total: 0 errors, 0 warnings, 1 checks, 66 lines checked


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/vkms: Use devm_drm_dev_alloc

2020-09-09 Thread Melissa Wen
On 09/09, Daniel Vetter wrote:
> This means we also need to slightly restructure the exit code, so that
> final cleanup of the drm_device is triggered by unregistering the
> platform device. Note that devres is both clean up when the driver is
> unbound (not the case for vkms, we don't bind), and also when unregistering
> the device (very much the case for vkms). Therefore we can rely on devres
> even though vkms isn't a proper platform device driver.
> 
> This also somewhat untangles the load code, since the drm and platform device
> setup are no longer interleaved, but two distinct steps.
> 
> v2: use devres_open/release_group so we can use devm without real
> hacks in the driver core or having to create an entire fake bus for
> testing drivers. Might want to extract this into helpers eventually,
> maybe as a mock_drm_dev_alloc or test_drm_dev_alloc.
> 
> v3: Only deref vkms_device after checking it (Melissa)
Thanks :)
> 
> Cc: Melissa Wen 
> Signed-off-by: Daniel Vetter 
> Cc: Rodrigo Siqueira 
> Cc: Haneen Mohammed 
> Cc: Daniel Vetter 
> ---
>  drivers/gpu/drm/vkms/vkms_drv.c | 56 -
>  1 file changed, 28 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
> index 83dd5567de8b..cb0b6230c22c 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -61,9 +61,6 @@ static void vkms_release(struct drm_device *dev)
>  {
>   struct vkms_device *vkms = container_of(dev, struct vkms_device, drm);
>  
> - platform_device_unregister(vkms->platform);
> - drm_atomic_helper_shutdown(>drm);
> - drm_mode_config_cleanup(>drm);
>   destroy_workqueue(vkms->output.composer_workq);
>  }
>  
> @@ -144,30 +141,31 @@ static int vkms_modeset_init(struct vkms_device 
> *vkmsdev)
>  static int __init vkms_init(void)
>  {
>   int ret;
> + struct platform_device *pdev;
>  
> - vkms_device = kzalloc(sizeof(*vkms_device), GFP_KERNEL);
> - if (!vkms_device)
> - return -ENOMEM;
> + pdev = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0);
> + if (IS_ERR(pdev))
> + return PTR_ERR(pdev);
>  
> - vkms_device->platform =
> - platform_device_register_simple(DRIVER_NAME, -1, NULL, 0);
> - if (IS_ERR(vkms_device->platform)) {
> - ret = PTR_ERR(vkms_device->platform);
> - goto out_free;
> + if (!devres_open_group(>dev, NULL, GFP_KERNEL)) {
> + ret = -ENOMEM;
> + goto out_unregister;
>   }
>  
> - ret = drm_dev_init(_device->drm, _driver,
> -_device->platform->dev);
> - if (ret)
> - goto out_unregister;
> - drmm_add_final_kfree(_device->drm, vkms_device);
> + vkms_device = devm_drm_dev_alloc(>dev, _driver,
> +  struct vkms_device, drm);
> + if (IS_ERR(vkms_device)) {
> + ret = PTR_ERR(vkms_device);
> + goto out_devres;
> + }
> + vkms_device->platform = pdev;
>  
>   ret = dma_coerce_mask_and_coherent(vkms_device->drm.dev,
>  DMA_BIT_MASK(64));
>  
>   if (ret) {
>   DRM_ERROR("Could not initialize DMA support\n");
> - goto out_put;
> + goto out_devres;
>   }
>  
>   vkms_device->drm.irq_enabled = true;
> @@ -175,39 +173,41 @@ static int __init vkms_init(void)
>   ret = drm_vblank_init(_device->drm, 1);
>   if (ret) {
>   DRM_ERROR("Failed to vblank\n");
> - goto out_put;
> + goto out_devres;
>   }
>  
>   ret = vkms_modeset_init(vkms_device);
>   if (ret)
> - goto out_put;
> + goto out_devres;
>  
>   ret = drm_dev_register(_device->drm, 0);
>   if (ret)
> - goto out_put;
> + goto out_devres;
>  
>   return 0;
>  
> -out_put:
> - drm_dev_put(_device->drm);
> - platform_device_unregister(vkms_device->platform);
> - return ret;
> +out_devres:
> + devres_release_group(>dev, NULL);
>  out_unregister:
> - platform_device_unregister(vkms_device->platform);
> -out_free:
> - kfree(vkms_device);
> + platform_device_unregister(pdev);
>   return ret;
>  }
>  
>  static void __exit vkms_exit(void)
>  {
> + struct platform_device *pdev;
> +
>   if (!vkms_device) {
>   DRM_INFO("vkms_device is NULL.\n");
>   return;
>   }
>  
> + pdev = vkms_device->platform;
> +
>   drm_dev_unregister(_device->drm);
> - drm_dev_put(_device->drm);
> + drm_atomic_helper_shutdown(_device->drm);
> + devres_release_group(>dev, NULL);
> + platform_device_unregister(pdev);
>  }
>  
>  module_init(vkms_init);
> -- 
> 2.28.0
> 

Reviewed-by: Melissa Wen 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org

[Intel-gfx] [PATCH] drm/vkms: Use devm_drm_dev_alloc

2020-09-09 Thread Daniel Vetter
This means we also need to slightly restructure the exit code, so that
final cleanup of the drm_device is triggered by unregistering the
platform device. Note that devres is both clean up when the driver is
unbound (not the case for vkms, we don't bind), and also when unregistering
the device (very much the case for vkms). Therefore we can rely on devres
even though vkms isn't a proper platform device driver.

This also somewhat untangles the load code, since the drm and platform device
setup are no longer interleaved, but two distinct steps.

v2: use devres_open/release_group so we can use devm without real
hacks in the driver core or having to create an entire fake bus for
testing drivers. Might want to extract this into helpers eventually,
maybe as a mock_drm_dev_alloc or test_drm_dev_alloc.

v3: Only deref vkms_device after checking it (Melissa)

Cc: Melissa Wen 
Signed-off-by: Daniel Vetter 
Cc: Rodrigo Siqueira 
Cc: Haneen Mohammed 
Cc: Daniel Vetter 
---
 drivers/gpu/drm/vkms/vkms_drv.c | 56 -
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 83dd5567de8b..cb0b6230c22c 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -61,9 +61,6 @@ static void vkms_release(struct drm_device *dev)
 {
struct vkms_device *vkms = container_of(dev, struct vkms_device, drm);
 
-   platform_device_unregister(vkms->platform);
-   drm_atomic_helper_shutdown(>drm);
-   drm_mode_config_cleanup(>drm);
destroy_workqueue(vkms->output.composer_workq);
 }
 
@@ -144,30 +141,31 @@ static int vkms_modeset_init(struct vkms_device *vkmsdev)
 static int __init vkms_init(void)
 {
int ret;
+   struct platform_device *pdev;
 
-   vkms_device = kzalloc(sizeof(*vkms_device), GFP_KERNEL);
-   if (!vkms_device)
-   return -ENOMEM;
+   pdev = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0);
+   if (IS_ERR(pdev))
+   return PTR_ERR(pdev);
 
-   vkms_device->platform =
-   platform_device_register_simple(DRIVER_NAME, -1, NULL, 0);
-   if (IS_ERR(vkms_device->platform)) {
-   ret = PTR_ERR(vkms_device->platform);
-   goto out_free;
+   if (!devres_open_group(>dev, NULL, GFP_KERNEL)) {
+   ret = -ENOMEM;
+   goto out_unregister;
}
 
-   ret = drm_dev_init(_device->drm, _driver,
-  _device->platform->dev);
-   if (ret)
-   goto out_unregister;
-   drmm_add_final_kfree(_device->drm, vkms_device);
+   vkms_device = devm_drm_dev_alloc(>dev, _driver,
+struct vkms_device, drm);
+   if (IS_ERR(vkms_device)) {
+   ret = PTR_ERR(vkms_device);
+   goto out_devres;
+   }
+   vkms_device->platform = pdev;
 
ret = dma_coerce_mask_and_coherent(vkms_device->drm.dev,
   DMA_BIT_MASK(64));
 
if (ret) {
DRM_ERROR("Could not initialize DMA support\n");
-   goto out_put;
+   goto out_devres;
}
 
vkms_device->drm.irq_enabled = true;
@@ -175,39 +173,41 @@ static int __init vkms_init(void)
ret = drm_vblank_init(_device->drm, 1);
if (ret) {
DRM_ERROR("Failed to vblank\n");
-   goto out_put;
+   goto out_devres;
}
 
ret = vkms_modeset_init(vkms_device);
if (ret)
-   goto out_put;
+   goto out_devres;
 
ret = drm_dev_register(_device->drm, 0);
if (ret)
-   goto out_put;
+   goto out_devres;
 
return 0;
 
-out_put:
-   drm_dev_put(_device->drm);
-   platform_device_unregister(vkms_device->platform);
-   return ret;
+out_devres:
+   devres_release_group(>dev, NULL);
 out_unregister:
-   platform_device_unregister(vkms_device->platform);
-out_free:
-   kfree(vkms_device);
+   platform_device_unregister(pdev);
return ret;
 }
 
 static void __exit vkms_exit(void)
 {
+   struct platform_device *pdev;
+
if (!vkms_device) {
DRM_INFO("vkms_device is NULL.\n");
return;
}
 
+   pdev = vkms_device->platform;
+
drm_dev_unregister(_device->drm);
-   drm_dev_put(_device->drm);
+   drm_atomic_helper_shutdown(_device->drm);
+   devres_release_group(>dev, NULL);
+   platform_device_unregister(pdev);
 }
 
 module_init(vkms_init);
-- 
2.28.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 0/8] Convert the intel iommu driver to the dma-iommu api

2020-09-09 Thread Tvrtko Ursulin



On 08/09/2020 23:43, Tom Murphy wrote:

On Tue, 8 Sep 2020 at 16:56, Tvrtko Ursulin
 wrote:



On 08/09/2020 16:44, Logan Gunthorpe wrote:

On 2020-09-08 9:28 a.m., Tvrtko Ursulin wrote:


diff --git a/drivers/gpu/drm/i915/i915_scatterlist.h
b/drivers/gpu/drm/i915/i915
index b7b59328cb76..9367ac801f0c 100644
--- a/drivers/gpu/drm/i915/i915_scatterlist.h
+++ b/drivers/gpu/drm/i915/i915_scatterlist.h
@@ -27,13 +27,19 @@ static __always_inline struct sgt_iter {
} __sgt_iter(struct scatterlist *sgl, bool dma) {
   struct sgt_iter s = { .sgp = sgl };

+   if (sgl && !sg_dma_len(s.sgp))


I'd extend the condition to be, just to be safe:
  if (dma && sgl && !sg_dma_len(s.sgp))



Right, good catch, that's definitely necessary.


+   s.sgp = NULL;
+
   if (s.sgp) {
   s.max = s.curr = s.sgp->offset;
-   s.max += s.sgp->length;
-   if (dma)
+
+   if (dma) {
+   s.max += sg_dma_len(s.sgp);
   s.dma = sg_dma_address(s.sgp);
-   else
+   } else {
+   s.max += s.sgp->length;
   s.pfn = page_to_pfn(sg_page(s.sgp));
+   }


Otherwise has this been tested or alternatively how to test it? (How to
repro the issue.)


It has not been tested. To test it, you need Tom's patch set without the
last "DO NOT MERGE" patch:

https://lkml.kernel.org/lkml/20200907070035.ga25...@infradead.org/T/


Tom, do you have a branch somewhere I could pull from? (Just being lazy
about downloading a bunch of messages from the archives.)


I don't unfortunately. I'm working locally with poor internet.



What GPU is in your Lenovo x1 carbon 5th generation and what
graphical/desktop setup I need to repro?



Is this enough info?:

$ lspci -vnn | grep VGA -A 12
00:02.0 VGA compatible controller [0300]: Intel Corporation HD
Graphics 620 [8086:5916] (rev 02) (prog-if 00 [VGA controller])
 Subsystem: Lenovo ThinkPad X1 Carbon 5th Gen [17aa:224f]
 Flags: bus master, fast devsel, latency 0, IRQ 148
 Memory at eb00 (64-bit, non-prefetchable) [size=16M]
 Memory at 6000 (64-bit, prefetchable) [size=256M]
 I/O ports at e000 [size=64]
 [virtual] Expansion ROM at 000c [disabled] [size=128K]
 Capabilities: [40] Vendor Specific Information: Len=0c 
 Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
 Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
 Capabilities: [d0] Power Management version 2
 Capabilities: [100] Process Address Space ID (PASID)
 Capabilities: [200] Address Translation Service (ATS)


Works for a start. What about the steps to repro? Any desktop 
environment and it is just visual corruption, no hangs/stalls or such?


I've submitted a series consisting of what I understood are the patches 
needed to repro the issue to our automated CI here:


https://patchwork.freedesktop.org/series/81489/

So will see if it will catch something, or more targeted testing will be 
required. Hopefully it does trip over in which case I can add the patch 
suggested by Logan on top and see if that fixes it. Or I'll need to 
write a new test case.


If you could glance over my series to check I identified the patches 
correctly it would be appreciated.


Regards,

Tvrtko
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] 5.9-rc1: graphics regression moved from -next to mainline

2020-09-09 Thread Pavel Machek
On Tue 2020-09-01 13:57:55, Harald Arnesen wrote:
> Still (rc3) doesn't work without the three reverts.
> 
> I'm not sure how to proceed, I cannot capture any oops, and see nothing
> obvious in any logs.

I believe this is the place when you ask Linus for reverts...

Best regards,

Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


signature.asc
Description: Digital signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [V9 3/4] drm/i915/dsi: Add TE handler for dsi cmd mode.

2020-09-09 Thread Vandita Kulkarni
In case of dual link, we get the TE on slave.
So clear the TE on slave DSI IIR.

If we are operating in TE_GATE mode, after we do
a frame update, the transcoder will send the frame data
to the panel, after it receives a TE. Whereas if we
are operating in NO_GATE mode then the transcoder will
immediately send the frame data to the panel.
We are not dealing with the periodic command mode here.

v2: Pass only relevant masked bits to the handler (Jani)

v3: Fix the check for cmd mode in TE handler function.

v4: Use intel_handle_vblank instead of drm_handle_vblank (Jani)

Signed-off-by: Vandita Kulkarni 
---
 drivers/gpu/drm/i915/i915_irq.c | 66 +
 1 file changed, 66 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index de540194ce67..f8398c5cbd4a 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2299,6 +2299,64 @@ gen8_de_misc_irq_handler(struct drm_i915_private 
*dev_priv, u32 iir)
drm_err(_priv->drm, "Unexpected DE Misc interrupt\n");
 }
 
+void gen11_dsi_te_interrupt_handler(struct drm_i915_private *dev_priv,
+   u32 te_trigger)
+{
+   enum pipe pipe = INVALID_PIPE;
+   enum transcoder dsi_trans;
+   enum port port;
+   u32 val, tmp;
+
+   /*
+* Incase of dual link, TE comes from DSI_1
+* this is to check if dual link is enabled
+*/
+   val = I915_READ(TRANS_DDI_FUNC_CTL2(TRANSCODER_DSI_0));
+   val &= PORT_SYNC_MODE_ENABLE;
+
+   /*
+* if dual link is enabled, then read DSI_0
+* transcoder registers
+*/
+   port = ((te_trigger & DSI1_TE && val) || (te_trigger & DSI0_TE)) ?
+ PORT_A : PORT_B;
+   dsi_trans = (port == PORT_A) ? TRANSCODER_DSI_0 : TRANSCODER_DSI_1;
+
+   /* Check if DSI configured in command mode */
+   val = I915_READ(DSI_TRANS_FUNC_CONF(dsi_trans));
+   val = val & OP_MODE_MASK;
+
+   if ((val != CMD_MODE_NO_GATE) && (val != CMD_MODE_TE_GATE)) {
+   drm_err(_priv->drm, "DSI trancoder not configured in 
command mode\n");
+   return;
+   }
+
+   /* Get PIPE for handling VBLANK event */
+   val = I915_READ(TRANS_DDI_FUNC_CTL(dsi_trans));
+   switch (val & TRANS_DDI_EDP_INPUT_MASK) {
+   case TRANS_DDI_EDP_INPUT_A_ON:
+   pipe = PIPE_A;
+   break;
+   case TRANS_DDI_EDP_INPUT_B_ONOFF:
+   pipe = PIPE_B;
+   break;
+   case TRANS_DDI_EDP_INPUT_C_ONOFF:
+   pipe = PIPE_C;
+   break;
+   default:
+   drm_err(_priv->drm, "Invalid PIPE\n");
+   return;
+   }
+
+   intel_handle_vblank(dev_priv, pipe);
+
+   /* clear TE in dsi IIR */
+   port = (te_trigger & DSI1_TE) ? PORT_B : PORT_A;
+   tmp = I915_READ(DSI_INTR_IDENT_REG(port));
+   I915_WRITE(DSI_INTR_IDENT_REG(port), tmp);
+
+}
+
 static irqreturn_t
 gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
 {
@@ -2363,6 +2421,14 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, 
u32 master_ctl)
found = true;
}
 
+   if (INTEL_GEN(dev_priv) >= 11) {
+   tmp_mask = iir & (DSI0_TE | DSI1_TE);
+   if (tmp_mask) {
+   
gen11_dsi_te_interrupt_handler(dev_priv, tmp_mask);
+   found = true;
+   }
+   }
+
if (!found)
drm_err(_priv->drm,
"Unexpected DE Port interrupt\n");
-- 
2.21.0.5.gaeb582a

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [V9 2/4] i915/dsi: Configure TE interrupt for cmd mode

2020-09-09 Thread Vandita Kulkarni
Configure TE interrupt as part of the vblank
enable call flow.

v2: Hide the private flags check inside configure_te (Jani)

v3: Fix the position of masking de_port_masked for DSI_TE.

v4: Simplify the caller of configure_te (Jani)

v5: Clear IIR, remove the usage of private_flags

Signed-off-by: Vandita Kulkarni 
---
 drivers/gpu/drm/i915/i915_irq.c | 51 +++--
 1 file changed, 49 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index f113fe44572b..de540194ce67 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -40,6 +40,7 @@
 #include "display/intel_hotplug.h"
 #include "display/intel_lpe_audio.h"
 #include "display/intel_psr.h"
+#include "display/intel_dsi.h"
 
 #include "gt/intel_breadcrumbs.h"
 #include "gt/intel_gt.h"
@@ -2692,12 +2693,47 @@ int ilk_enable_vblank(struct drm_crtc *crtc)
return 0;
 }
 
+static bool gen11_dsi_configure_te(struct intel_crtc *intel_crtc,
+  bool enable)
+{
+   struct drm_i915_private *dev_priv = to_i915(intel_crtc->base.dev);
+   enum port port;
+   u32 tmp;
+
+   if (!(intel_crtc->mode_flags &
+   (I915_MODE_FLAG_DSI_USE_TE1 | I915_MODE_FLAG_DSI_USE_TE0)))
+   return false;
+
+   /* for dual link cases we consider TE from slave */
+   if (intel_crtc->mode_flags & I915_MODE_FLAG_DSI_USE_TE1)
+   port = PORT_B;
+   else
+   port = PORT_A;
+
+   tmp =  I915_READ(DSI_INTR_MASK_REG(port));
+   if (enable)
+   tmp &= ~DSI_TE_EVENT;
+   else
+   tmp |= DSI_TE_EVENT;
+
+   I915_WRITE(DSI_INTR_MASK_REG(port), tmp);
+
+   tmp = I915_READ(DSI_INTR_IDENT_REG(port));
+   I915_WRITE(DSI_INTR_IDENT_REG(port), tmp);
+
+   return true;
+}
+
 int bdw_enable_vblank(struct drm_crtc *crtc)
 {
struct drm_i915_private *dev_priv = to_i915(crtc->dev);
-   enum pipe pipe = to_intel_crtc(crtc)->pipe;
+   struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+   enum pipe pipe = intel_crtc->pipe;
unsigned long irqflags;
 
+   if (gen11_dsi_configure_te(intel_crtc, true))
+   return 0;
+
spin_lock_irqsave(_priv->irq_lock, irqflags);
bdw_enable_pipe_irq(dev_priv, pipe, GEN8_PIPE_VBLANK);
spin_unlock_irqrestore(_priv->irq_lock, irqflags);
@@ -2763,9 +2799,13 @@ void ilk_disable_vblank(struct drm_crtc *crtc)
 void bdw_disable_vblank(struct drm_crtc *crtc)
 {
struct drm_i915_private *dev_priv = to_i915(crtc->dev);
-   enum pipe pipe = to_intel_crtc(crtc)->pipe;
+   struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+   enum pipe pipe = intel_crtc->pipe;
unsigned long irqflags;
 
+   if (gen11_dsi_configure_te(intel_crtc, false))
+   return;
+
spin_lock_irqsave(_priv->irq_lock, irqflags);
bdw_disable_pipe_irq(dev_priv, pipe, GEN8_PIPE_VBLANK);
spin_unlock_irqrestore(_priv->irq_lock, irqflags);
@@ -3456,6 +3496,13 @@ static void gen8_de_irq_postinstall(struct 
drm_i915_private *dev_priv)
if (IS_GEN9_LP(dev_priv))
de_port_masked |= BXT_DE_PORT_GMBUS;
 
+   if (INTEL_GEN(dev_priv) >= 11) {
+   enum port port;
+
+   if (intel_bios_is_dsi_present(dev_priv, ))
+   de_port_masked |= DSI0_TE | DSI1_TE;
+   }
+
de_pipe_enables = de_pipe_masked | GEN8_PIPE_VBLANK |
   GEN8_PIPE_FIFO_UNDERRUN;
 
-- 
2.21.0.5.gaeb582a

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [V9 1/4] drm/i915/dsi: Add details about TE in get_config

2020-09-09 Thread Vandita Kulkarni
We need details about enabling TE on which port
before we enable TE through vblank enable path.
This is based on the configuration that we receive
from the VBT wrt ports, dual_link.

Signed-off-by: Vandita Kulkarni 
---
 drivers/gpu/drm/i915/display/icl_dsi.c | 30 +++---
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c 
b/drivers/gpu/drm/i915/display/icl_dsi.c
index f4053dd6bde9..ee3c5c085cd3 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -1447,6 +1447,18 @@ static bool gen11_dsi_is_periodic_cmd_mode(struct 
intel_dsi *intel_dsi)
return (val & DSI_PERIODIC_FRAME_UPDATE_ENABLE);
 }
 
+static void gen11_dsi_get_cmd_mode_config(struct intel_dsi *intel_dsi,
+ struct intel_crtc_state *pipe_config)
+{
+   if (intel_dsi->ports == (BIT(PORT_B) | BIT(PORT_A)))
+   pipe_config->mode_flags |= I915_MODE_FLAG_DSI_USE_TE1 |
+   I915_MODE_FLAG_DSI_USE_TE0;
+   else if (intel_dsi->ports == BIT(PORT_B))
+   pipe_config->mode_flags |= I915_MODE_FLAG_DSI_USE_TE1;
+   else
+   pipe_config->mode_flags |= I915_MODE_FLAG_DSI_USE_TE0;
+}
+
 static void gen11_dsi_get_config(struct intel_encoder *encoder,
 struct intel_crtc_state *pipe_config)
 {
@@ -1468,6 +1480,10 @@ static void gen11_dsi_get_config(struct intel_encoder 
*encoder,
pipe_config->output_types |= BIT(INTEL_OUTPUT_DSI);
pipe_config->pipe_bpp = bdw_get_pipemisc_bpp(crtc);
 
+   /* Get the details on which TE should be enabled */
+   if (is_cmd_mode(intel_dsi))
+   gen11_dsi_get_cmd_mode_config(intel_dsi, pipe_config);
+
if (gen11_dsi_is_periodic_cmd_mode(intel_dsi))
pipe_config->mode_flags |= I915_MODE_FLAG_DSI_PERIODIC_CMD_MODE;
 }
@@ -1562,18 +1578,8 @@ static int gen11_dsi_compute_config(struct intel_encoder 
*encoder,
 * receive TE from the slave if
 * dual link is enabled
 */
-   if (is_cmd_mode(intel_dsi)) {
-   if (intel_dsi->ports == (BIT(PORT_B) | BIT(PORT_A)))
-   pipe_config->mode_flags |=
-   I915_MODE_FLAG_DSI_USE_TE1 |
-   I915_MODE_FLAG_DSI_USE_TE0;
-   else if (intel_dsi->ports == BIT(PORT_B))
-   pipe_config->mode_flags |=
-   I915_MODE_FLAG_DSI_USE_TE1;
-   else
-   pipe_config->mode_flags |=
-   I915_MODE_FLAG_DSI_USE_TE0;
-   }
+   if (is_cmd_mode(intel_dsi))
+   gen11_dsi_get_cmd_mode_config(intel_dsi, pipe_config);
 
return 0;
 }
-- 
2.21.0.5.gaeb582a

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [V9 4/4] drm/i915/dsi: Initiate fame request in cmd mode

2020-09-09 Thread Vandita Kulkarni
In TE Gate mode or TE NO_GATE mode on every flip
we need to set the frame update request bit.
After this  bit is set transcoder hardware will
automatically send the frame data to the panel
in case of TE NO_GATE mode, where it sends after
it receives the TE event in case of TE_GATE mode.
Once the frame data is sent to the panel, we see
the frame counter updating.

v2: Use intel_de_read/write

v3: remove the usage of private_flags

Signed-off-by: Vandita Kulkarni 
---
 drivers/gpu/drm/i915/display/icl_dsi.c   | 26 
 drivers/gpu/drm/i915/display/intel_display.c | 13 ++
 drivers/gpu/drm/i915/display/intel_dsi.h |  3 +++
 3 files changed, 42 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c 
b/drivers/gpu/drm/i915/display/icl_dsi.c
index ee3c5c085cd3..cdc9d8874945 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -205,6 +205,32 @@ static int dsi_send_pkt_payld(struct intel_dsi_host *host,
return 0;
 }
 
+void gen11_dsi_frame_update(struct intel_crtc_state *crtc_state)
+{
+   struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
+   u32 tmp, flags;
+   enum port port;
+
+   flags = crtc->mode_flags;
+
+   /*
+* case 1 also covers dual link
+* In case of dual link, frame update should be set on
+* DSI_0
+*/
+   if (flags & I915_MODE_FLAG_DSI_USE_TE0)
+   port = PORT_A;
+   else if (flags & I915_MODE_FLAG_DSI_USE_TE1)
+   port = PORT_B;
+   else
+   return;
+
+   tmp = intel_de_read(dev_priv, DSI_CMD_FRMCTL(port));
+   tmp |= DSI_FRAME_UPDATE_REQUEST;
+   intel_de_write(dev_priv, DSI_CMD_FRMCTL(port), tmp);
+}
+
 static void dsi_program_swing_and_deemphasis(struct intel_encoder *encoder)
 {
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index ec148a8da2c2..cd852c24d3bc 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -15615,6 +15615,18 @@ static void intel_atomic_commit_tail(struct 
intel_atomic_state *state)
intel_set_cdclk_post_plane_update(state);
}
 
+   /*
+* Incase of mipi dsi command mode, we need to set frame update
+* for every commit
+*/
+   for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
+   if ((INTEL_GEN(dev_priv) >= 11) &&
+   (intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI))) {
+   if (new_crtc_state->hw.active)
+   gen11_dsi_frame_update(new_crtc_state);
+   }
+   }
+
/* FIXME: We should call drm_atomic_helper_commit_hw_done() here
 * already, but still need the state for the delayed optimization. To
 * fix this:
@@ -15626,6 +15638,7 @@ static void intel_atomic_commit_tail(struct 
intel_atomic_state *state)
 */
drm_atomic_helper_wait_for_flip_done(dev, >base);
 
+
for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
if (new_crtc_state->hw.active &&
!needs_modeset(new_crtc_state) &&
diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h 
b/drivers/gpu/drm/i915/display/intel_dsi.h
index 19f78a4022d3..08f1f586eefb 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.h
+++ b/drivers/gpu/drm/i915/display/intel_dsi.h
@@ -205,6 +205,9 @@ u32 bxt_dsi_get_pclk(struct intel_encoder *encoder,
 struct intel_crtc_state *config);
 void bxt_dsi_reset_clocks(struct intel_encoder *encoder, enum port port);
 
+/* icl_dsi.c */
+void gen11_dsi_frame_update(struct intel_crtc_state *crtc_state);
+
 /* intel_dsi_vbt.c */
 bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id);
 void intel_dsi_vbt_gpio_init(struct intel_dsi *intel_dsi, bool panel_is_on);
-- 
2.21.0.5.gaeb582a

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [V9 0/4] Add support for mipi dsi cmd mode

2020-09-09 Thread Vandita Kulkarni
This series contain interrupt handling part of cmd mode.
Configuration patches were merged already.

Vandita Kulkarni (4):
  drm/i915/dsi: Add details about TE in get_config
  i915/dsi: Configure TE interrupt for cmd mode
  drm/i915/dsi: Add TE handler for dsi cmd mode.
  drm/i915/dsi: Initiate fame request in cmd mode

 drivers/gpu/drm/i915/display/icl_dsi.c   |  56 +++--
 drivers/gpu/drm/i915/display/intel_display.c |  13 +++
 drivers/gpu/drm/i915/display/intel_dsi.h |   3 +
 drivers/gpu/drm/i915/i915_irq.c  | 117 ++-
 4 files changed, 175 insertions(+), 14 deletions(-)

-- 
2.21.0.5.gaeb582a

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 24/24] drm/arc: Move to drm/tiny

2020-09-09 Thread Thomas Zimmermann


Am 04.09.20 um 16:39 schrieb Daniel Vetter:
> Because it is.

Absolutely.

Acked-by: Thomas Zimmermann 

> 
> v2: Delete now unused crtc funcs (0day)
> 
> Cc: Eugeniy Paltsev 
> Signed-off-by: Daniel Vetter 
> Cc: Alexey Brodkin 
> ---
>  MAINTAINERS |  2 +-
>  drivers/gpu/drm/Kconfig |  2 --
>  drivers/gpu/drm/Makefile|  1 -
>  drivers/gpu/drm/arc/Kconfig | 10 --
>  drivers/gpu/drm/arc/Makefile|  3 ---
>  drivers/gpu/drm/tiny/Kconfig| 10 ++
>  drivers/gpu/drm/tiny/Makefile   |  1 +
>  drivers/gpu/drm/{arc/arcpgu_drv.c => tiny/arcpgu.c} |  0
>  8 files changed, 12 insertions(+), 17 deletions(-)
>  delete mode 100644 drivers/gpu/drm/arc/Kconfig
>  delete mode 100644 drivers/gpu/drm/arc/Makefile
>  rename drivers/gpu/drm/{arc/arcpgu_drv.c => tiny/arcpgu.c} (100%)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index f92035bfbbcd..b16e80c4d669 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1334,7 +1334,7 @@ ARC PGU DRM DRIVER
>  M:   Alexey Brodkin 
>  S:   Supported
>  F:   Documentation/devicetree/bindings/display/snps,arcpgu.txt
> -F:   drivers/gpu/drm/arc/
> +F:   drivers/gpu/drm/tiny/arcpgu.c
>  
>  ARCNET NETWORK LAYER
>  M:   Michael Grzeschik 
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index 147d61b9674e..9efb82caaa87 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -354,8 +354,6 @@ source "drivers/gpu/drm/vc4/Kconfig"
>  
>  source "drivers/gpu/drm/etnaviv/Kconfig"
>  
> -source "drivers/gpu/drm/arc/Kconfig"
> -
>  source "drivers/gpu/drm/hisilicon/Kconfig"
>  
>  source "drivers/gpu/drm/mediatek/Kconfig"
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 2f31579f91d4..6c15ef9b04d6 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -109,7 +109,6 @@ obj-y += panel/
>  obj-y+= bridge/
>  obj-$(CONFIG_DRM_FSL_DCU) += fsl-dcu/
>  obj-$(CONFIG_DRM_ETNAVIV) += etnaviv/
> -obj-$(CONFIG_DRM_ARCPGU)+= arc/
>  obj-y+= hisilicon/
>  obj-$(CONFIG_DRM_ZTE)+= zte/
>  obj-$(CONFIG_DRM_MXSFB)  += mxsfb/
> diff --git a/drivers/gpu/drm/arc/Kconfig b/drivers/gpu/drm/arc/Kconfig
> deleted file mode 100644
> index e8f3d63e0b91..
> --- a/drivers/gpu/drm/arc/Kconfig
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0-only
> -config DRM_ARCPGU
> - tristate "ARC PGU"
> - depends on DRM && OF
> - select DRM_KMS_CMA_HELPER
> - select DRM_KMS_HELPER
> - help
> -   Choose this option if you have an ARC PGU controller.
> -
> -   If M is selected the module will be called arcpgu.
> diff --git a/drivers/gpu/drm/arc/Makefile b/drivers/gpu/drm/arc/Makefile
> deleted file mode 100644
> index b26f2495c532..
> --- a/drivers/gpu/drm/arc/Makefile
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0-only
> -arcpgu-y := arcpgu_drv.o
> -obj-$(CONFIG_DRM_ARCPGU) += arcpgu.o
> diff --git a/drivers/gpu/drm/tiny/Kconfig b/drivers/gpu/drm/tiny/Kconfig
> index 2b6414f0fa75..9bbaa1a69050 100644
> --- a/drivers/gpu/drm/tiny/Kconfig
> +++ b/drivers/gpu/drm/tiny/Kconfig
> @@ -1,5 +1,15 @@
>  # SPDX-License-Identifier: GPL-2.0-only
>  
> +config DRM_ARCPGU
> + tristate "ARC PGU"
> + depends on DRM && OF
> + select DRM_KMS_CMA_HELPER
> + select DRM_KMS_HELPER
> + help
> +   Choose this option if you have an ARC PGU controller.
> +
> +   If M is selected the module will be called arcpgu.
> +
>  config DRM_CIRRUS_QEMU
>   tristate "Cirrus driver for QEMU emulated device"
>   depends on DRM && PCI && MMU
> diff --git a/drivers/gpu/drm/tiny/Makefile b/drivers/gpu/drm/tiny/Makefile
> index 6ae4e9e5a35f..bef6780bdd6f 100644
> --- a/drivers/gpu/drm/tiny/Makefile
> +++ b/drivers/gpu/drm/tiny/Makefile
> @@ -1,5 +1,6 @@
>  # SPDX-License-Identifier: GPL-2.0-only
>  
> +obj-$(CONFIG_DRM_ARCPGU) += arcpgu.o
>  obj-$(CONFIG_DRM_CIRRUS_QEMU)+= cirrus.o
>  obj-$(CONFIG_DRM_GM12U320)   += gm12u320.o
>  obj-$(CONFIG_TINYDRM_HX8357D)+= hx8357d.o
> diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/tiny/arcpgu.c
> similarity index 100%
> rename from drivers/gpu/drm/arc/arcpgu_drv.c
> rename to drivers/gpu/drm/tiny/arcpgu.c
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer



signature.asc
Description: OpenPGP digital signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 4/5] drm_dp_cec: add plumbing in preparation for MST support

2020-09-09 Thread Sam McNally
On Tue, 8 Sep 2020 at 18:41, Hans Verkuil  wrote:
>
> On 01/09/2020 08:22, Sam McNally wrote:
> > From: Hans Verkuil 
> >
> > Signed-off-by: Hans Verkuil 
> > [sa...@chromium.org:
> >  - rebased
> >  - removed polling-related changes
> >  - moved the calls to drm_dp_cec_(un)set_edid() into the next patch
> > ]
> > Signed-off-by: Sam McNally 
> > ---
> >
> >  .../display/amdgpu_dm/amdgpu_dm_mst_types.c   |  2 +-
> >  drivers/gpu/drm/drm_dp_cec.c  | 22 ++-
> >  drivers/gpu/drm/i915/display/intel_dp.c   |  2 +-
> >  drivers/gpu/drm/nouveau/nouveau_connector.c   |  2 +-
> >  include/drm/drm_dp_helper.h   |  6 +++--
> >  5 files changed, 19 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c 
> > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > index 461fa4da0a34..6e7075893ec9 100644
> > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > @@ -419,7 +419,7 @@ void amdgpu_dm_initialize_dp_connector(struct 
> > amdgpu_display_manager *dm,
> >
> >   drm_dp_aux_init(>dm_dp_aux.aux);
> >   drm_dp_cec_register_connector(>dm_dp_aux.aux,
> > -   >base);
> > +   >base, false);
> >
> >   if (aconnector->base.connector_type == DRM_MODE_CONNECTOR_eDP)
> >   return;
> > diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
> > index 3ab2609f9ec7..04ab7b88055c 100644
> > --- a/drivers/gpu/drm/drm_dp_cec.c
> > +++ b/drivers/gpu/drm/drm_dp_cec.c
> > @@ -14,6 +14,7 @@
> >  #include 
> >  #include 
> >  #include 
> > +#include 
> >
> >  /*
> >   * Unfortunately it turns out that we have a chicken-and-egg situation
> > @@ -338,8 +339,6 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const 
> > struct edid *edid)
> >   if (aux->cec.adap) {
> >   if (aux->cec.adap->capabilities == cec_caps &&
> >   aux->cec.adap->available_log_addrs == num_las) {
> > - /* Unchanged, so just set the phys addr */
> > - cec_s_phys_addr_from_edid(aux->cec.adap, edid);
> >   goto unlock;
> >   }
> >   /*
> > @@ -364,15 +363,16 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, 
> > const struct edid *edid)
> >   if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
> >   cec_delete_adapter(aux->cec.adap);
> >   aux->cec.adap = NULL;
> > - } else {
> > - /*
> > -  * Update the phys addr for the new CEC adapter. When called
> > -  * from drm_dp_cec_register_connector() edid == NULL, so in
> > -  * that case the phys addr is just invalidated.
> > -  */
> > - cec_s_phys_addr_from_edid(aux->cec.adap, edid);
> >   }
> >  unlock:
> > + /*
> > +  * Update the phys addr for the new CEC adapter. When called
> > +  * from drm_dp_cec_register_connector() edid == NULL, so in
> > +  * that case the phys addr is just invalidated.
> > +  */
>
> The comment is no longer in sync with the code: if EDID == NULL, then
> nothing is done due to the edid check in the 'if' below.
>
> > + if (aux->cec.adap && edid) {
>
> I think this should just be: if (aux->cec.adap)
>
> Also, the {} aren't necessary here.
>
> > + cec_s_phys_addr_from_edid(aux->cec.adap, edid);
> > + }
> >   mutex_unlock(>cec.lock);
> >  }
> >  EXPORT_SYMBOL(drm_dp_cec_set_edid);
>
> Frankly, the changes to this function should be dropped completely, from
> what I can see they are not necessary. It was done in my original patch
> because of the way I handled mst, but you did it differently (and I think
> better), so these changes are no longer needed.
>
> I know I am actually commenting on my old patch, but that patch was from a
> work-in-progress git branch and was never meant as a 'proper' patch.
>
> However, what complicates matters is that after digging a bit more I 
> discovered
> that commit 732300154980 ("drm: Do not call drm_dp_cec_set_edid() while 
> registering
> DP connectors") changed drm_dp_cec_register_connector() so that it no longer
> calls drm_dp_cec_set_edid(), but the comments there and in this function were
> not updated. It would be nice if you can add a patch fixing these outdated
> comments.
>
> Regardless of that change in commit 732300154980, the edid pointer can still 
> be
> NULL and the existing behavior should be kept (i.e. create a CEC device, but 
> with
> an invalid physical address since there is no EDID for some reason).
>
> Regards,
>
> Hans
>

Thanks. Leaving drm_dp_cec_set_edid() unchanged combined with Lyude's
suggestion to use aux->is_remote removes the need for this patch
entirely.

> > @@ -418,6 +418,7 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
> >   * 

Re: [Intel-gfx] [PATCH 4/5] drm_dp_cec: add plumbing in preparation for MST support

2020-09-09 Thread Sam McNally
On Wed, 2 Sep 2020 at 04:12, Lyude Paul  wrote:
>
> Super minor nitpicks:
>
> On Tue, 2020-09-01 at 16:22 +1000, Sam McNally wrote:
> > From: Hans Verkuil 
> >
> > Signed-off-by: Hans Verkuil 
> > [sa...@chromium.org:
> >  - rebased
> >  - removed polling-related changes
> >  - moved the calls to drm_dp_cec_(un)set_edid() into the next patch
> > ]
> > Signed-off-by: Sam McNally 
> > ---
> >
> >  .../display/amdgpu_dm/amdgpu_dm_mst_types.c   |  2 +-
> >  drivers/gpu/drm/drm_dp_cec.c  | 22 ++-
> >  drivers/gpu/drm/i915/display/intel_dp.c   |  2 +-
> >  drivers/gpu/drm/nouveau/nouveau_connector.c   |  2 +-
> >  include/drm/drm_dp_helper.h   |  6 +++--
> >  5 files changed, 19 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > index 461fa4da0a34..6e7075893ec9 100644
> > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > @@ -419,7 +419,7 @@ void amdgpu_dm_initialize_dp_connector(struct
> > amdgpu_display_manager *dm,
> >
> >   drm_dp_aux_init(>dm_dp_aux.aux);
> >   drm_dp_cec_register_connector(>dm_dp_aux.aux,
> > -   >base);
> > +   >base, false);
> >
> >   if (aconnector->base.connector_type == DRM_MODE_CONNECTOR_eDP)
> >   return;
> > diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
> > index 3ab2609f9ec7..04ab7b88055c 100644
> > --- a/drivers/gpu/drm/drm_dp_cec.c
> > +++ b/drivers/gpu/drm/drm_dp_cec.c
> > @@ -14,6 +14,7 @@
> >  #include 
> >  #include 
> >  #include 
> > +#include 
> >
> >  /*
> >   * Unfortunately it turns out that we have a chicken-and-egg situation
> > @@ -338,8 +339,6 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const
> > struct edid *edid)
> >   if (aux->cec.adap) {
> >   if (aux->cec.adap->capabilities == cec_caps &&
> >   aux->cec.adap->available_log_addrs == num_las) {
> > - /* Unchanged, so just set the phys addr */
> > - cec_s_phys_addr_from_edid(aux->cec.adap, edid);
> >   goto unlock;
> >   }
>
> May as well drop the braces here
>
> >   /*
> > @@ -364,15 +363,16 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const
> > struct edid *edid)
> >   if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
> >   cec_delete_adapter(aux->cec.adap);
> >   aux->cec.adap = NULL;
> > - } else {
> > - /*
> > -  * Update the phys addr for the new CEC adapter. When called
> > -  * from drm_dp_cec_register_connector() edid == NULL, so in
> > -  * that case the phys addr is just invalidated.
> > -  */
> > - cec_s_phys_addr_from_edid(aux->cec.adap, edid);
> >   }
> >  unlock:
> > + /*
> > +  * Update the phys addr for the new CEC adapter. When called
> > +  * from drm_dp_cec_register_connector() edid == NULL, so in
> > +  * that case the phys addr is just invalidated.
> > +  */
> > + if (aux->cec.adap && edid) {
> > + cec_s_phys_addr_from_edid(aux->cec.adap, edid);
> > + }
>
> And here
>
> >   mutex_unlock(>cec.lock);
> >  }
> >  EXPORT_SYMBOL(drm_dp_cec_set_edid);
> > @@ -418,6 +418,7 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
> >   * drm_dp_cec_register_connector() - register a new connector
> >   * @aux: DisplayPort AUX channel
> >   * @connector: drm connector
> > + * @is_mst: set to true if this is an MST branch
> >   *
> >   * A new connector was registered with associated CEC adapter name and
> >   * CEC adapter parent device. After registering the name and parent
> > @@ -425,12 +426,13 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
> >   * CEC and to register a CEC adapter if that is the case.
> >   */
> >  void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> > -struct drm_connector *connector)
> > +struct drm_connector *connector, bool 
> > is_mst)
> >  {
> >   WARN_ON(aux->cec.adap);
> >   if (WARN_ON(!aux->transfer))
> >   return;
> >   aux->cec.connector = connector;
> > + aux->cec.is_mst = is_mst;
>
> Also JFYI, you can also check aux->is_remote, but maybe you've got another
> reason for copying this here
>

I think this was just an artefact of this patch originally being
written before aux->is_remote was added. Switching to it mostly
removes the need for this patch, and leaving drm_dp_cec_set_edid()
unchanged, as Hans suggests, removes the rest.

> Either way:
>
> Reviewed-by: Lyude Paul 
>
> ...Also, maybe this is just a coincidence - but do I know your name from
> somewhere? Perhaps an IRC community from long ago?
>

Not that I can