1. 20 7月, 2020 1 次提交
    • P
      drm/imx: fix use after free · ba807c94
      Philipp Zabel 提交于
      Component driver structures allocated with devm_kmalloc() in bind() are
      freed automatically after unbind(). Since the contained drm structures
      are accessed afterwards in drm_mode_config_cleanup(), move the
      allocation into probe() to extend the driver structure's lifetime to the
      lifetime of the device. This should eventually be changed to use drm
      resource managed allocations with lifetime of the drm device.
      
      We also need to ensure that all componets are available during the
      unbind() so we need to call component_unbind_all() before we free
      non-devres resources like planes.
      
      Note this patch fixes the the use after free bug but introduces a
      possible boot loop issue. The issue is triggered if the HDMI support is
      enabled and a component driver always return -EPROBE_DEFER, see
      discussion [1] for more details.
      
      [1] https://lkml.org/lkml/2020/3/24/1467
      
      Fixes: 17b5001b ("imx-drm: convert to componentised device support")
      Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
      [m.felsch@pengutronix: fix imx_tve_probe()]
      [m.felsch@pengutronix: resort component_unbind_all())
      [m.felsch@pengutronix: adapt commit message]
      Signed-off-by: NMarco Felsch <m.felsch@pengutronix.de>
      Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
      ba807c94
  2. 02 4月, 2020 1 次提交
  3. 26 2月, 2020 1 次提交
    • L
      drm/bridge: Extend bridge API to disable connector creation · a25b988f
      Laurent Pinchart 提交于
      Most bridge drivers create a DRM connector to model the connector at the
      output of the bridge. This model is historical and has worked pretty
      well so far, but causes several issues:
      
      - It prevents supporting more complex display pipelines where DRM
      connector operations are split over multiple components. For instance a
      pipeline with a bridge connected to the DDC signals to read EDID data,
      and another one connected to the HPD signal to detect connection and
      disconnection, will not be possible to support through this model.
      
      - It requires every bridge driver to implement similar connector
      handling code, resulting in code duplication.
      
      - It assumes that a bridge will either be wired to a connector or to
      another bridge, but doesn't support bridges that can be used in both
      positions very well (although there is some ad-hoc support for this in
      the analogix_dp bridge driver).
      
      In order to solve these issues, ownership of the connector should be
      moved to the display controller driver (where it can be implemented
      using helpers provided by the core).
      
      Extend the bridge API to allow disabling connector creation in bridge
      drivers as a first step towards the new model. The new flags argument to
      the bridge .attach() operation allows instructing the bridge driver to
      skip creating a connector. Unconditionally set the new flags argument to
      0 for now to keep the existing behaviour, and modify all existing bridge
      drivers to return an error when connector creation is not requested as
      they don't support this feature yet.
      
      The change is based on the following semantic patch, with manual review
      and edits.
      
      @ rule1 @
      identifier funcs;
      identifier fn;
      @@
       struct drm_bridge_funcs funcs = {
       	...,
       	.attach = fn
       };
      
      @ depends on rule1 @
      identifier rule1.fn;
      identifier bridge;
      statement S, S1;
      @@
       int fn(
       	struct drm_bridge *bridge
      +	, enum drm_bridge_attach_flags flags
       )
       {
       	... when != S
      +	if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) {
      +		DRM_ERROR("Fix bridge driver to make connector optional!");
      +		return -EINVAL;
      +	}
      +
       	S1
       	...
       }
      
      @ depends on rule1 @
      identifier rule1.fn;
      identifier bridge, flags;
      expression E1, E2, E3;
      @@
       int fn(
       	struct drm_bridge *bridge,
       	enum drm_bridge_attach_flags flags
       ) {
       <...
       drm_bridge_attach(E1, E2, E3
      +	, flags
       )
       ...>
       }
      
      @@
      expression E1, E2, E3;
      @@
       drm_bridge_attach(E1, E2, E3
      +	, 0
       )
      Signed-off-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: NBoris Brezillon <boris.brezillon@collabora.com>
      Acked-by: NSam Ravnborg <sam@ravnborg.org>
      Reviewed-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Tested-by: NSebastian Reichel <sebastian.reichel@collabora.com>
      Reviewed-by: NSebastian Reichel <sebastian.reichel@collabora.com>
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200226112514.12455-10-laurent.pinchart@ideasonboard.com
      a25b988f
  4. 31 1月, 2020 1 次提交
    • B
      drm/imx: pd: Use bus format/flags provided by the bridge when available · fe141ced
      Boris Brezillon 提交于
      Now that bridges can expose the bus format/flags they expect, we can
      use those instead of the relying on the display_info provided by the
      connector (which is only valid if the encoder is directly connected
      to bridge element driving the panel/display).
      
      We also explicitly expose the bus formats supported by our encoder by
      filling encoder->output_bus_caps with proper info.
      
      v10:
      * Add changelog to the commit message
      * Use kmalloc() instead of kcalloc()
      * Add a dev_warn() when unsupported flags are requested
      
      v8 -> v9:
      * No changes
      
      v7:
      * Add an imx_pd_format_supported() helper (suggested by Philipp)
      * Simplify imx_pd_bridge_atomic_get_output_bus_fmts() (suggested by Philipp)
      * Simplify imx_pd_bridge_atomic_get_input_bus_fmts()
      * Explicitly set the duplicate/destro_state() and reset() hooks
      
      v4 -> v6:
      * Patch was not part of the series
      
      v3 (all suggested by Philipp):
      * Adjust to match core changes
      * Propagate output format to input format
      * Pick a default value when output_fmt = _FIXED
      * Add missing BGR888 and GBR888 fmts to imx_pd_bus_fmts[]
      
      v2:
      * Adjust things to match the new bus-format negotiation infra
      Signed-off-by: NBoris Brezillon <boris.brezillon@collabora.com>
      Reviewed-by: NPhilipp Zabel <p.zabel@pengutronix.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200128135514.108171-8-boris.brezillon@collabora.com
      fe141ced
  5. 10 12月, 2019 1 次提交
    • S
      drm/panel: decouple connector from drm_panel · 06c4a9c2
      Sam Ravnborg 提交于
      To facilitate moving connector creation to display drivers,
      decouple the drm_connector from drm_panel.
      
      This patch adds a connector argument to drm_panel_get_modes().
      
      All users of drm_panel_get_modes() already had the connector
      available, so updating users was trivial.
      
      With this patch drm_panel no longer keeps a reference to the drm_connector.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: NLinus Walleij <linus.walleij@linaro.org>
      Acked-by: NJeffrey Hugo <jeffrey.l.hugo@gmail.com>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Neil Armstrong <narmstrong@baylibre.com>
      Cc: Jonas Karlman <jonas@kwiboo.se>
      Cc: Jernej Skrabec <jernej.skrabec@siol.net>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Maxime Ripard <mripard@kernel.org>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Inki Dae <inki.dae@samsung.com>
      Cc: Joonyoung Shim <jy0922.shim@samsung.com>
      Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Cc: Kukjin Kim <kgene@kernel.org>
      Cc: Krzysztof Kozlowski <krzk@kernel.org>
      Cc: Stefan Agner <stefan@agner.ch>
      Cc: Alison Wang <alison.wang@nxp.com>
      Cc: Philipp Zabel <p.zabel@pengutronix.de>
      Cc: Shawn Guo <shawnguo@kernel.org>
      Cc: Sascha Hauer <s.hauer@pengutronix.de>
      Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
      Cc: Fabio Estevam <festevam@gmail.com>
      Cc: NXP Linux Team <linux-imx@nxp.com>
      Cc: CK Hu <ck.hu@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Marek Vasut <marex@denx.de>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
      Cc: Sandy Huang <hjc@rock-chips.com>
      Cc: "Heiko Stübner" <heiko@sntech.de>
      Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
      Cc: Vincent Abriou <vincent.abriou@st.com>
      Cc: Chen-Yu Tsai <wens@csie.org>
      Cc: Jonathan Hunter <jonathanh@nvidia.com>
      Cc: Torsten Duwe <duwe@lst.de>
      Cc: Vasily Khoruzhick <anarsoul@gmail.com>
      Cc: Icenowy Zheng <icenowy@aosc.io>
      Cc: Sean Paul <seanpaul@chromium.org>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Hariprasad Kelam <hariprasad.kelam@gmail.com>
      Cc: Alexios Zavras <alexios.zavras@intel.com>
      Cc: Brian Masney <masneyb@onstation.org>
      Cc: Rob Clark <robdclark@chromium.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Allison Randal <allison@lohutok.net>
      Cc: Shayenne Moura <shayenneluzmoura@gmail.com>
      Cc: Abhinav Kumar <abhinavk@codeaurora.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-samsung-soc@vger.kernel.org
      Cc: linux-mediatek@lists.infradead.org
      Cc: linux-renesas-soc@vger.kernel.org
      Cc: linux-rockchip@lists.infradead.org
      Cc: linux-tegra@vger.kernel.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20191207140353.23967-7-sam@ravnborg.org
      06c4a9c2
  6. 29 8月, 2019 1 次提交
  7. 10 8月, 2019 1 次提交
  8. 17 7月, 2019 1 次提交
  9. 24 1月, 2019 1 次提交
  10. 05 11月, 2018 1 次提交
  11. 14 7月, 2018 2 次提交
  12. 02 10月, 2017 1 次提交
  13. 08 8月, 2017 1 次提交
    • D
      drm: Nuke drm_atomic_helper_connector_dpms · 7d902c05
      Daniel Vetter 提交于
      It's dead code, the core handles all this directly now.
      
      The only special case is nouveau and tda988x which used one function
      for both legacy modeset code and -nv50 atomic world instead of 2
      vtables. But amounts to exactly the same.
      
      v2: Rebase over the panel/brideg refactorings in stm/ltdc.
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Cc: Archit Taneja <architt@codeaurora.org>
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
      Cc: Peter Senna Tschudin <peter.senna@collabora.com>
      Cc: Martin Donnelly <martin.donnelly@ge.com>
      Cc: Martyn Welch <martyn.welch@collabora.co.uk>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Sean Paul <seanpaul@chromium.org>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Inki Dae <inki.dae@samsung.com>
      Cc: Joonyoung Shim <jy0922.shim@samsung.com>
      Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Cc: Kukjin Kim <kgene@kernel.org>
      Cc: Krzysztof Kozlowski <krzk@kernel.org>
      Cc: Stefan Agner <stefan@agner.ch>
      Cc: Alison Wang <alison.wang@freescale.com>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Philipp Zabel <p.zabel@pengutronix.de>
      Cc: CK Hu <ck.hu@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Neil Armstrong <narmstrong@baylibre.com>
      Cc: Carlo Caione <carlo@caione.org>
      Cc: Kevin Hilman <khilman@baylibre.com>
      Cc: Marek Vasut <marex@denx.de>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Mark Yao <mark.yao@rock-chips.com>
      Cc: Heiko Stuebner <heiko@sntech.de>
      Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
      Cc: Vincent Abriou <vincent.abriou@st.com>
      Cc: Yannick Fertre <yannick.fertre@st.com>
      Cc: Philippe Cornu <philippe.cornu@st.com>
      Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
      Cc: Chen-Yu Tsai <wens@csie.org>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Jonathan Hunter <jonathanh@nvidia.com>
      Cc: Jyri Sarha <jsarha@ti.com>
      Cc: Gerd Hoffmann <kraxel@redhat.com>
      Cc: Shawn Guo <shawnguo@kernel.org>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Lars-Peter Clausen <lars@metafoo.de>
      Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Cc: Jeffy Chen <jeffy.chen@rock-chips.com>
      Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
      Cc: Yakir Yang <kuankuan.y@gmail.com>
      Cc: Marek Szyprowski <m.szyprowski@samsung.com>
      Cc: Jose Abreu <Jose.Abreu@synopsys.com>
      Cc: Romain Perier <romain.perier@collabora.com>
      Cc: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
      Cc: Xinliang Liu <z.liuxinliang@hisilicon.com>
      Cc: Alexey Brodkin <abrodkin@synopsys.com>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Rongrong Zou <zourongrong@gmail.com>
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Hai Li <hali@codeaurora.org>
      Cc: "Noralf Trønnes" <noralf@tronnes.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-samsung-soc@vger.kernel.org
      Cc: intel-gfx@lists.freedesktop.org
      Cc: linux-mediatek@lists.infradead.org
      Cc: linux-amlogic@lists.infradead.org
      Cc: nouveau@lists.freedesktop.org
      Cc: linux-renesas-soc@vger.kernel.org
      Cc: linux-rockchip@lists.infradead.org
      Cc: linux-tegra@vger.kernel.org
      Cc: virtualization@lists.linux-foundation.org
      Cc: zain wang <wzz@rock-chips.com>
      Cc: Baoyou Xie <baoyou.xie@linaro.org>
      Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
      Reviewed-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170725080122.20548-8-daniel.vetter@ffwll.chAcked-by: NNeil Armstrong <narmstrong@baylibre.com>
      Reviewed-by: NNeil Armstrong <narmstrong@baylibre.com>
      Acked-by: NPhilipp Zabel <p.zabel@pengutronix.de>
      Acked-by: NArchit Taneja <architt@codeaurora.org>
      Tested-by: Philippe Cornu <philippe.cornu@st.com> (on stm)
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Acked-by: NShawn Guo <shawnguo@kernel.org>
      Acked-by: NShawn Guo <shawnguo@kernel.org>
      Acked-by: NNoralf Trønnes <noralf@tronnes.org>
      Acked-by: NVincent Abriou <vincent.abriou@st.com>
      7d902c05
  14. 17 7月, 2017 1 次提交
  15. 07 4月, 2017 1 次提交
  16. 18 12月, 2016 2 次提交
  17. 01 12月, 2016 1 次提交
  18. 29 8月, 2016 2 次提交
  19. 08 8月, 2016 1 次提交
  20. 14 7月, 2016 1 次提交
  21. 13 7月, 2016 7 次提交
  22. 30 5月, 2016 3 次提交
  23. 16 2月, 2016 1 次提交
  24. 13 1月, 2016 1 次提交
  25. 15 12月, 2015 1 次提交
  26. 11 12月, 2015 1 次提交
  27. 24 11月, 2015 1 次提交
  28. 10 7月, 2015 1 次提交
  29. 31 3月, 2015 1 次提交