Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1667257 > unrolled thread
| Started by | Eric Anholt <eric@anholt.net> |
|---|---|
| First post | 2017-06-15 22:50 +0200 |
| Last post | 2017-06-16 16:50 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 1/7] drm/bridge: Support hotplugging panel-bridge. Eric Anholt <eric@anholt.net> - 2017-06-15 22:50 +0200
Re: [PATCH 1/7] drm/bridge: Support hotplugging panel-bridge. Archit Taneja <architt@codeaurora.org> - 2017-06-16 07:50 +0200
Re: [PATCH 1/7] drm/bridge: Support hotplugging panel-bridge. Eric Anholt <eric@anholt.net> - 2017-06-16 16:50 +0200
| From | Eric Anholt <eric@anholt.net> |
|---|---|
| Date | 2017-06-15 22:50 +0200 |
| Subject | [PATCH 1/7] drm/bridge: Support hotplugging panel-bridge. |
| Message-ID | <tSJSh-7i5-11@gated-at.bofh.it> |
If the panel-bridge is being set up after the drm_mode_config_reset(), then the connector's state would never get initialized, and we'd dereference the NULL in the hotplug path. We also need to register the connector, so that userspace can get at it. Signed-off-by: Eric Anholt <eric@anholt.net> --- drivers/gpu/drm/bridge/panel.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index 67fe19e5a9c6..8ed8a70799c7 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -82,11 +82,14 @@ static int panel_bridge_attach(struct drm_bridge *bridge) drm_mode_connector_attach_encoder(&panel_bridge->connector, bridge->encoder); + drm_atomic_helper_connector_reset(&panel_bridge->connector); ret = drm_panel_attach(panel_bridge->panel, &panel_bridge->connector); if (ret < 0) return ret; + drm_connector_register(&panel_bridge->connector); + return 0; } -- 2.11.0
[toc] | [next] | [standalone]
| From | Archit Taneja <architt@codeaurora.org> |
|---|---|
| Date | 2017-06-16 07:50 +0200 |
| Message-ID | <tSSiR-4jS-1@gated-at.bofh.it> |
| In reply to | #1667257 |
On 06/16/2017 02:11 AM, Eric Anholt wrote: > If the panel-bridge is being set up after the drm_mode_config_reset(), > then the connector's state would never get initialized, and we'd > dereference the NULL in the hotplug path. We also need to register > the connector, so that userspace can get at it. > Shouldn't the KMS driver make sure the panel-bridge is set up before drm_mode_config_reset? Is it the case when we're inserting the panel-bridge driver as a module? All the connectors that have been added are registered automatically when drm_dev_register() is called by the KMS driver. Registering a connector in the middle of setting up our driver is prone to race conditions if the userspace decides to use them immediately. Thanks, Archit > Signed-off-by: Eric Anholt <eric@anholt.net> > --- > drivers/gpu/drm/bridge/panel.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c > index 67fe19e5a9c6..8ed8a70799c7 100644 > --- a/drivers/gpu/drm/bridge/panel.c > +++ b/drivers/gpu/drm/bridge/panel.c > @@ -82,11 +82,14 @@ static int panel_bridge_attach(struct drm_bridge *bridge) > > drm_mode_connector_attach_encoder(&panel_bridge->connector, > bridge->encoder); > + drm_atomic_helper_connector_reset(&panel_bridge->connector); > > ret = drm_panel_attach(panel_bridge->panel, &panel_bridge->connector); > if (ret < 0) > return ret; > > + drm_connector_register(&panel_bridge->connector); > + > return 0; > } > > -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
[toc] | [prev] | [next] | [standalone]
| From | Eric Anholt <eric@anholt.net> |
|---|---|
| Date | 2017-06-16 16:50 +0200 |
| Message-ID | <tT0Jr-1ld-7@gated-at.bofh.it> |
| In reply to | #1667430 |
[Multipart message — attachments visible in raw view] — view raw
Archit Taneja <architt@codeaurora.org> writes: > On 06/16/2017 02:11 AM, Eric Anholt wrote: >> If the panel-bridge is being set up after the drm_mode_config_reset(), >> then the connector's state would never get initialized, and we'd >> dereference the NULL in the hotplug path. We also need to register >> the connector, so that userspace can get at it. >> > > Shouldn't the KMS driver make sure the panel-bridge is set up before > drm_mode_config_reset? Is it the case when we're inserting the > panel-bridge driver as a module? > > > All the connectors that have been added are registered automatically > when drm_dev_register() is called by the KMS driver. Registering a > connector in the middle of setting up our driver is prone to race > conditions if the userspace decides to use them immediately. Yeah, this is fixing initializing panel_bridge at DSI host_attach time, which in the case of a panel module that creates the DSI device (adv7533-style, like you said I should use as a reference) will be after drm_mode_config_reset() and drm_dev_register().
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web