[Intel-gfx] [PULL] gvt-next
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
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
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)
== 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
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 +5475,2
Re: [Intel-gfx] [PATCH 01/24] drm/armada: Use devm_drm_dev_alloc
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&unbind 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(&priv->drm, &armada_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, &armada_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(&priv->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(&priv->drm); > drm_mm_takedown(&priv->linear); > - drm_dev_put(&priv->drm); > return ret; > } > > @@ -194,8 +182,6 @@ static void armada_drm_unbind(struct device *dev) > > drm_mode_config_cleanup(&priv->drm); > drm_mm_takedown(&priv->linear); > - > - drm_dev_put(&priv->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
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;
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
== 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
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(&dev_priv->vbt.display_devices); - if (!HAS_DISPLAY(dev_priv) || !INTEL_DISPLAY_ENABLED(dev_priv)) { + if (!HAS_DISPLAY(dev_priv)) { drm_dbg_kms(&dev_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(&i915->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(&i915->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(&dev_priv->drm, "Failed to register driver for
[Intel-gfx] [PATCH 2/2] drm/i915: Reduce INTEL_DISPLAY_ENABLED to just treat outputs as disconnected
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(&dev_priv->drm, !drm_modeset_is_locked(&dev_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)); + DRM_DEBUG_KMS
Re: [Intel-gfx] [trivial PATCH] treewide: Convert switch/case fallthrough; to break;
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
== 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]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18461/sha
[Intel-gfx] ✗ Fi.CI.BUILD: failure for treewide: Convert switch/case fallthrough; to break;
== 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;
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
== 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 * igt@i915_selfte
Re: [Intel-gfx] [PATCH] drm/i915: Fix DMA mapped scatterlist walks
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
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()
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(&dev_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) > > - icp_hpd_irq_set
Re: [Intel-gfx] [PATCH 04/24] drm/vgem: Use devm_drm_dev_alloc
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(&pdev->dev, NULL, GFP_KERNEL)) { > > > + ret = -ENOMEM; > > > + goto out_unregister; > > > } > > > > > > - dma_coerce_mask_and_coherent(&vgem_device->platform->dev, > > > + dma_coerce_mask_and_coherent(&pdev->dev, > > >DMA_BIT_MASK(64)); > > > - ret = drm_dev_init(&vgem_device->drm, &vgem_driver, > > > -&vgem_device->platform->dev); > > > - if (ret) > > > - goto out_unregister; > > > - drmm_add_final_kfree(&vgem_device->drm, vgem_device); > > > + > > > + vgem_device = devm_drm_dev_alloc(&pdev->dev, &vgem_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(&vgem_device->drm, 0); > > > if (ret) > > > - goto out_put; > > > + goto out_devres; > > > > > > return 0; > > > > > > -out_put: > > > - drm_dev_put(&vgem_device->drm); > > > - platform_device_unregister(vgem_device->platform); > > > - return ret; > > > +out_devres: > > > + devres_release_group(&pdev->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
[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Fix DMA mapped scatterlist walks
== 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
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
== 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]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8990/fi-pnv-d510/igt@i915_selftest@live@gem_execbuf.html
Re: [Intel-gfx] [PATCH] drm/i915/pll: Centralize PLL_ENABLE register lookup
> 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
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
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
[Intel-gfx] [PATCH] drm/i915: Fix DMA mapped scatterlist walks
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 && sg_dma_len(
Re: [Intel-gfx] [PATCH 00/29] treewide: Convert comma separated statements
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
Re: [Intel-gfx] [PATCH 0/8] Convert the intel iommu driver to the dma-iommu api
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
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
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 = &zynqmp_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(&pdev->dev, &zynqmp_dpsub_drm_driver, > +struct zynqmp_dpsub, drm); > + if (IS_ERR(dpsub)) > + return PTR_ERR(dpsub); > > dpsub->dev = &pdev->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(&dpsub->drm, &zynqmp_dpsub_drm_driver, &pdev->dev); > - if (ret < 0) { > - kfree(dpsub); > - return ret; > - } > - > - drmm_add_final_kfree(&dpsub->drm, dpsub); > - > /* Try the reserved memory. Proceed if there's none. */ > of_reserved_mem_device_init(&pdev->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(&pdev->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
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(&dev_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.
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(&dev_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(&dev_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)
== 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, &kms_driver, &pdev->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
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(&pdev->dev, NULL, GFP_KERNEL)) { + ret = -ENOMEM; + goto out_unregister; } - dma_coerce_mask_and_coherent(&vgem_device->platform->dev, + dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); - ret = drm_dev_init(&vgem_device->drm, &vgem_driver, - &vgem_device->platform->dev); - if (ret) - goto out_unregister; - drmm_add_final_kfree(&vgem_device->drm, vgem_device); + + vgem_device = devm_drm_dev_alloc(&pdev->dev, &vgem_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(&vgem_device->drm, 0); if (ret) - goto out_put; + goto out_devres; return 0; -out_put: - drm_dev_put(&vgem_device->drm); - platform_device_unregister(vgem_device->platform); - return ret; +out_devres: + devres_release_group(&pdev->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(&vgem_device->drm); - drm_dev_put(&vgem_device->drm); + devres_release_group(&pdev->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
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(&pdev->dev, NULL, GFP_KERNEL)) { > > + ret = -ENOMEM; > > + goto out_unregister; > > } > > > > - dma_coerce_mask_and_coherent(&vgem_device->platform->dev, > > + dma_coerce_mask_and_coherent(&pdev->dev, > >DMA_BIT_MASK(64)); > > - ret = drm_dev_init(&vgem_device->drm, &vgem_driver, > > -&vgem_device->platform->dev); > > - if (ret) > > - goto out_unregister; > > - drmm_add_final_kfree(&vgem_device->drm, vgem_device); > > + > > + vgem_device = devm_drm_dev_alloc(&pdev->dev, &vgem_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(&vgem_device->drm, 0); > > if (ret) > > - goto out_put; > > + goto out_devres; > > > > return 0; > > > > -out_put: > > - drm_dev_put(&vgem_device->drm); > > - platform_device_unregister(vgem_device->platform); > > - return ret; > > +out_devres: > > + devres_release_group(&pdev->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(&vgem_device->drm); > > - drm_dev_put(&vgem_device->drm); > > + devres_release_group(&pdev->dev, NULL); > > +
[Intel-gfx] ✗ Fi.CI.IGT: failure for Add support for mipi dsi cmd mode (rev9)
== 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: - shard
Re: [Intel-gfx] [PATCH 04/24] drm/vgem: Use devm_drm_dev_alloc
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(&pdev->dev, NULL, GFP_KERNEL)) { > + ret = -ENOMEM; > + goto out_unregister; > } > > - dma_coerce_mask_and_coherent(&vgem_device->platform->dev, > + dma_coerce_mask_and_coherent(&pdev->dev, >DMA_BIT_MASK(64)); > - ret = drm_dev_init(&vgem_device->drm, &vgem_driver, > -&vgem_device->platform->dev); > - if (ret) > - goto out_unregister; > - drmm_add_final_kfree(&vgem_device->drm, vgem_device); > + > + vgem_device = devm_drm_dev_alloc(&pdev->dev, &vgem_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(&vgem_device->drm, 0); > if (ret) > - goto out_put; > + goto out_devres; > > return 0; > > -out_put: > - drm_dev_put(&vgem_device->drm); > - platform_device_unregister(vgem_device->platform); > - return ret; > +out_devres: > + devres_release_group(&pdev->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(&vgem_device->drm); > - drm_dev_put(&vgem_device->drm); > + devres_release_group(&pdev->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
[Intel-gfx] ✓ Fi.CI.BAT: success for Add support for mipi dsi cmd mode (rev9)
== 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]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18457/fi-bdw-gvtdvm/igt@gem_exec_parallel
[Intel-gfx] ✗ Fi.CI.BUILD: failure for drm_managed, leftovers (rev3)
== 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, &kms_driver, &pdev->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)
== 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)
== 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
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(&vkms->drm); > - drm_mode_config_cleanup(&vkms->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(&pdev->dev, NULL, GFP_KERNEL)) { > + ret = -ENOMEM; > + goto out_unregister; > } > > - ret = drm_dev_init(&vkms_device->drm, &vkms_driver, > -&vkms_device->platform->dev); > - if (ret) > - goto out_unregister; > - drmm_add_final_kfree(&vkms_device->drm, vkms_device); > + vkms_device = devm_drm_dev_alloc(&pdev->dev, &vkms_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(&vkms_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(&vkms_device->drm, 0); > if (ret) > - goto out_put; > + goto out_devres; > > return 0; > > -out_put: > - drm_dev_put(&vkms_device->drm); > - platform_device_unregister(vkms_device->platform); > - return ret; > +out_devres: > + devres_release_group(&pdev->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(&vkms_device->drm); > - drm_dev_put(&vkms_device->drm); > + drm_atomic_helper_shutdown(&vkms_device->drm); > + devres_release_group(&pdev->dev, NULL); > + platform_device_unregister(pdev); > } > > module_init(vkms_init); > -- > 2.28.0 > Reviewed-by: Melissa Wen __
[Intel-gfx] [PATCH] drm/vkms: Use devm_drm_dev_alloc
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(&vkms->drm); - drm_mode_config_cleanup(&vkms->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(&pdev->dev, NULL, GFP_KERNEL)) { + ret = -ENOMEM; + goto out_unregister; } - ret = drm_dev_init(&vkms_device->drm, &vkms_driver, - &vkms_device->platform->dev); - if (ret) - goto out_unregister; - drmm_add_final_kfree(&vkms_device->drm, vkms_device); + vkms_device = devm_drm_dev_alloc(&pdev->dev, &vkms_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(&vkms_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(&vkms_device->drm, 0); if (ret) - goto out_put; + goto out_devres; return 0; -out_put: - drm_dev_put(&vkms_device->drm); - platform_device_unregister(vkms_device->platform); - return ret; +out_devres: + devres_release_group(&pdev->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(&vkms_device->drm); - drm_dev_put(&vkms_device->drm); + drm_atomic_helper_shutdown(&vkms_device->drm); + devres_release_group(&pdev->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
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
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.
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(&dev_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(&dev_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(&dev_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(&dev_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
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(&dev_priv->irq_lock, irqflags); bdw_enable_pipe_irq(dev_priv, pipe, GEN8_PIPE_VBLANK); spin_unlock_irqrestore(&dev_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(&dev_priv->irq_lock, irqflags); bdw_disable_pipe_irq(dev_priv, pipe, GEN8_PIPE_VBLANK); spin_unlock_irqrestore(&dev_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, &port)) + 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
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
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, &state->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
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
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
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(&aconnector->dm_dp_aux.aux); > > drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux, > > - &aconnector->base); > > + &aconnector->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(&aux->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_SYMB
Re: [Intel-gfx] [PATCH 4/5] drm_dp_cec: add plumbing in preparation for MST support
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(&aconnector->dm_dp_aux.aux); > > drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux, > > - &aconnector->base); > > + &aconnector->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(&aux->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