From: Thomas Zimmermann <tzimmermann@suse.de>
To: airlied@gmail.com, daniel@ffwll.ch,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
javierm@redhat.com
Cc: linux-samsung-soc@vger.kernel.org, linux-arm-msm@vger.kernel.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
linux-tegra@vger.kernel.org, freedreno@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 02/10] drm/client: Add hotplug_failed flag
Date: Tue, 24 Jan 2023 14:40:02 +0100 [thread overview]
Message-ID: <20230124134010.30263-3-tzimmermann@suse.de> (raw)
In-Reply-To: <20230124134010.30263-1-tzimmermann@suse.de>
Signal failed hotplugging with a flag in struct drm_client_dev. If set,
the client helpers will not further try to set up the fbdev display.
This used to be signalled with a combination of cleared pointers in
struct drm_fb_helper, which prevents us from initializing these pointers
early after allocation.
The change also harmonizes behavior among DRM clients. Additional DRM
clients will now handle failed hotplugging like fbdev does.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/drm_client.c | 5 +++++
drivers/gpu/drm/drm_fbdev_generic.c | 4 ----
include/drm/drm_client.h | 8 ++++++++
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c
index 09ac191c202d..009e7b10455c 100644
--- a/drivers/gpu/drm/drm_client.c
+++ b/drivers/gpu/drm/drm_client.c
@@ -208,8 +208,13 @@ void drm_client_dev_hotplug(struct drm_device *dev)
if (!client->funcs || !client->funcs->hotplug)
continue;
+ if (client->hotplug_failed)
+ continue;
+
ret = client->funcs->hotplug(client);
drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
+ if (ret)
+ client->hotplug_failed = true;
}
mutex_unlock(&dev->clientlist_mutex);
}
diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c
index 3d455a2e3fb5..135d58b8007b 100644
--- a/drivers/gpu/drm/drm_fbdev_generic.c
+++ b/drivers/gpu/drm/drm_fbdev_generic.c
@@ -382,10 +382,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
struct drm_device *dev = client->dev;
int ret;
- /* Setup is not retried if it has failed */
- if (!fb_helper->dev && fb_helper->funcs)
- return 0;
-
if (dev->fb_helper)
return drm_fb_helper_hotplug_event(dev->fb_helper);
diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
index 4fc8018eddda..39482527a775 100644
--- a/include/drm/drm_client.h
+++ b/include/drm/drm_client.h
@@ -106,6 +106,14 @@ struct drm_client_dev {
* @modesets: CRTC configurations
*/
struct drm_mode_set *modesets;
+
+ /**
+ * @hotplug failed:
+ *
+ * Set by client hotplug helpers if the hotplugging failed
+ * before. It is usually not tried again.
+ */
+ bool hotplug_failed;
};
int drm_client_init(struct drm_device *dev, struct drm_client_dev *client,
--
2.39.0
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: airlied@gmail.com, daniel@ffwll.ch,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
javierm@redhat.com
Cc: linux-samsung-soc@vger.kernel.org, linux-arm-msm@vger.kernel.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
linux-tegra@vger.kernel.org, freedreno@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org
Subject: [Intel-gfx] [PATCH v2 02/10] drm/client: Add hotplug_failed flag
Date: Tue, 24 Jan 2023 14:40:02 +0100 [thread overview]
Message-ID: <20230124134010.30263-3-tzimmermann@suse.de> (raw)
In-Reply-To: <20230124134010.30263-1-tzimmermann@suse.de>
Signal failed hotplugging with a flag in struct drm_client_dev. If set,
the client helpers will not further try to set up the fbdev display.
This used to be signalled with a combination of cleared pointers in
struct drm_fb_helper, which prevents us from initializing these pointers
early after allocation.
The change also harmonizes behavior among DRM clients. Additional DRM
clients will now handle failed hotplugging like fbdev does.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/drm_client.c | 5 +++++
drivers/gpu/drm/drm_fbdev_generic.c | 4 ----
include/drm/drm_client.h | 8 ++++++++
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c
index 09ac191c202d..009e7b10455c 100644
--- a/drivers/gpu/drm/drm_client.c
+++ b/drivers/gpu/drm/drm_client.c
@@ -208,8 +208,13 @@ void drm_client_dev_hotplug(struct drm_device *dev)
if (!client->funcs || !client->funcs->hotplug)
continue;
+ if (client->hotplug_failed)
+ continue;
+
ret = client->funcs->hotplug(client);
drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
+ if (ret)
+ client->hotplug_failed = true;
}
mutex_unlock(&dev->clientlist_mutex);
}
diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c
index 3d455a2e3fb5..135d58b8007b 100644
--- a/drivers/gpu/drm/drm_fbdev_generic.c
+++ b/drivers/gpu/drm/drm_fbdev_generic.c
@@ -382,10 +382,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
struct drm_device *dev = client->dev;
int ret;
- /* Setup is not retried if it has failed */
- if (!fb_helper->dev && fb_helper->funcs)
- return 0;
-
if (dev->fb_helper)
return drm_fb_helper_hotplug_event(dev->fb_helper);
diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
index 4fc8018eddda..39482527a775 100644
--- a/include/drm/drm_client.h
+++ b/include/drm/drm_client.h
@@ -106,6 +106,14 @@ struct drm_client_dev {
* @modesets: CRTC configurations
*/
struct drm_mode_set *modesets;
+
+ /**
+ * @hotplug failed:
+ *
+ * Set by client hotplug helpers if the hotplugging failed
+ * before. It is usually not tried again.
+ */
+ bool hotplug_failed;
};
int drm_client_init(struct drm_device *dev, struct drm_client_dev *client,
--
2.39.0
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: airlied@gmail.com, daniel@ffwll.ch,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
javierm@redhat.com
Cc: dri-devel@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org,
intel-gfx@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
freedreno@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
linux-tegra@vger.kernel.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v2 02/10] drm/client: Add hotplug_failed flag
Date: Tue, 24 Jan 2023 14:40:02 +0100 [thread overview]
Message-ID: <20230124134010.30263-3-tzimmermann@suse.de> (raw)
In-Reply-To: <20230124134010.30263-1-tzimmermann@suse.de>
Signal failed hotplugging with a flag in struct drm_client_dev. If set,
the client helpers will not further try to set up the fbdev display.
This used to be signalled with a combination of cleared pointers in
struct drm_fb_helper, which prevents us from initializing these pointers
early after allocation.
The change also harmonizes behavior among DRM clients. Additional DRM
clients will now handle failed hotplugging like fbdev does.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/drm_client.c | 5 +++++
drivers/gpu/drm/drm_fbdev_generic.c | 4 ----
include/drm/drm_client.h | 8 ++++++++
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c
index 09ac191c202d..009e7b10455c 100644
--- a/drivers/gpu/drm/drm_client.c
+++ b/drivers/gpu/drm/drm_client.c
@@ -208,8 +208,13 @@ void drm_client_dev_hotplug(struct drm_device *dev)
if (!client->funcs || !client->funcs->hotplug)
continue;
+ if (client->hotplug_failed)
+ continue;
+
ret = client->funcs->hotplug(client);
drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
+ if (ret)
+ client->hotplug_failed = true;
}
mutex_unlock(&dev->clientlist_mutex);
}
diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c
index 3d455a2e3fb5..135d58b8007b 100644
--- a/drivers/gpu/drm/drm_fbdev_generic.c
+++ b/drivers/gpu/drm/drm_fbdev_generic.c
@@ -382,10 +382,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
struct drm_device *dev = client->dev;
int ret;
- /* Setup is not retried if it has failed */
- if (!fb_helper->dev && fb_helper->funcs)
- return 0;
-
if (dev->fb_helper)
return drm_fb_helper_hotplug_event(dev->fb_helper);
diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
index 4fc8018eddda..39482527a775 100644
--- a/include/drm/drm_client.h
+++ b/include/drm/drm_client.h
@@ -106,6 +106,14 @@ struct drm_client_dev {
* @modesets: CRTC configurations
*/
struct drm_mode_set *modesets;
+
+ /**
+ * @hotplug failed:
+ *
+ * Set by client hotplug helpers if the hotplugging failed
+ * before. It is usually not tried again.
+ */
+ bool hotplug_failed;
};
int drm_client_init(struct drm_device *dev, struct drm_client_dev *client,
--
2.39.0
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: airlied@gmail.com, daniel@ffwll.ch,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
javierm@redhat.com
Cc: dri-devel@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org,
intel-gfx@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
freedreno@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
linux-tegra@vger.kernel.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v2 02/10] drm/client: Add hotplug_failed flag
Date: Tue, 24 Jan 2023 14:40:02 +0100 [thread overview]
Message-ID: <20230124134010.30263-3-tzimmermann@suse.de> (raw)
In-Reply-To: <20230124134010.30263-1-tzimmermann@suse.de>
Signal failed hotplugging with a flag in struct drm_client_dev. If set,
the client helpers will not further try to set up the fbdev display.
This used to be signalled with a combination of cleared pointers in
struct drm_fb_helper, which prevents us from initializing these pointers
early after allocation.
The change also harmonizes behavior among DRM clients. Additional DRM
clients will now handle failed hotplugging like fbdev does.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/drm_client.c | 5 +++++
drivers/gpu/drm/drm_fbdev_generic.c | 4 ----
include/drm/drm_client.h | 8 ++++++++
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c
index 09ac191c202d..009e7b10455c 100644
--- a/drivers/gpu/drm/drm_client.c
+++ b/drivers/gpu/drm/drm_client.c
@@ -208,8 +208,13 @@ void drm_client_dev_hotplug(struct drm_device *dev)
if (!client->funcs || !client->funcs->hotplug)
continue;
+ if (client->hotplug_failed)
+ continue;
+
ret = client->funcs->hotplug(client);
drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
+ if (ret)
+ client->hotplug_failed = true;
}
mutex_unlock(&dev->clientlist_mutex);
}
diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c
index 3d455a2e3fb5..135d58b8007b 100644
--- a/drivers/gpu/drm/drm_fbdev_generic.c
+++ b/drivers/gpu/drm/drm_fbdev_generic.c
@@ -382,10 +382,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
struct drm_device *dev = client->dev;
int ret;
- /* Setup is not retried if it has failed */
- if (!fb_helper->dev && fb_helper->funcs)
- return 0;
-
if (dev->fb_helper)
return drm_fb_helper_hotplug_event(dev->fb_helper);
diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
index 4fc8018eddda..39482527a775 100644
--- a/include/drm/drm_client.h
+++ b/include/drm/drm_client.h
@@ -106,6 +106,14 @@ struct drm_client_dev {
* @modesets: CRTC configurations
*/
struct drm_mode_set *modesets;
+
+ /**
+ * @hotplug failed:
+ *
+ * Set by client hotplug helpers if the hotplugging failed
+ * before. It is usually not tried again.
+ */
+ bool hotplug_failed;
};
int drm_client_init(struct drm_device *dev, struct drm_client_dev *client,
--
2.39.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-01-24 13:41 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-24 13:40 [PATCH v2 00/10] drm/fb-helper: Various cleanups Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-24 13:40 ` [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 8:30 ` Javier Martinez Canillas
2023-01-25 8:30 ` Javier Martinez Canillas
2023-01-25 8:30 ` Javier Martinez Canillas
2023-01-25 8:30 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-25 14:04 ` Thomas Zimmermann
2023-01-25 14:04 ` Thomas Zimmermann
2023-01-25 14:04 ` Thomas Zimmermann
2023-01-25 14:04 ` [Intel-gfx] " Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann [this message]
2023-01-24 13:40 ` [PATCH v2 02/10] drm/client: Add hotplug_failed flag Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 9:05 ` Javier Martinez Canillas
2023-01-25 9:05 ` Javier Martinez Canillas
2023-01-25 9:05 ` Javier Martinez Canillas
2023-01-25 9:05 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-24 13:40 ` [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 9:18 ` Javier Martinez Canillas
2023-01-25 9:18 ` Javier Martinez Canillas
2023-01-25 9:18 ` Javier Martinez Canillas
2023-01-25 9:18 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-25 14:11 ` Thomas Zimmermann
2023-01-25 14:11 ` Thomas Zimmermann
2023-01-25 14:11 ` Thomas Zimmermann
2023-01-25 14:11 ` [Intel-gfx] " Thomas Zimmermann
2023-01-24 13:40 ` [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 9:25 ` Javier Martinez Canillas
2023-01-25 9:25 ` Javier Martinez Canillas
2023-01-25 9:25 ` Javier Martinez Canillas
2023-01-25 9:25 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-24 13:40 ` [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 9:31 ` Javier Martinez Canillas
2023-01-25 9:31 ` Javier Martinez Canillas
2023-01-25 9:31 ` Javier Martinez Canillas
2023-01-25 9:31 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-24 13:40 ` [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 4:51 ` kernel test robot
2023-01-25 4:51 ` kernel test robot
2023-01-25 4:51 ` kernel test robot
2023-01-25 9:41 ` Javier Martinez Canillas
2023-01-25 9:41 ` Javier Martinez Canillas
2023-01-25 9:41 ` Javier Martinez Canillas
2023-01-25 9:41 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-25 12:12 ` kernel test robot
2023-01-25 12:12 ` kernel test robot
2023-01-25 12:12 ` kernel test robot
2023-01-24 13:40 ` [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 9:44 ` Javier Martinez Canillas
2023-01-25 9:44 ` Javier Martinez Canillas
2023-01-25 9:44 ` Javier Martinez Canillas
2023-01-25 9:44 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-24 13:40 ` [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 9:50 ` Javier Martinez Canillas
2023-01-25 9:50 ` Javier Martinez Canillas
2023-01-25 9:50 ` Javier Martinez Canillas
2023-01-25 9:50 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-24 13:40 ` [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 9:52 ` Javier Martinez Canillas
2023-01-25 9:52 ` Javier Martinez Canillas
2023-01-25 9:52 ` Javier Martinez Canillas
2023-01-25 9:52 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-24 13:40 ` [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` Thomas Zimmermann
2023-01-24 13:40 ` [Intel-gfx] " Thomas Zimmermann
2023-01-25 9:54 ` Javier Martinez Canillas
2023-01-25 9:54 ` Javier Martinez Canillas
2023-01-25 9:54 ` Javier Martinez Canillas
2023-01-25 9:54 ` [Intel-gfx] " Javier Martinez Canillas
2023-01-24 19:42 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/fb-helper: Various cleanups (rev2) Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230124134010.30263-3-tzimmermann@suse.de \
--to=tzimmermann@suse.de \
--cc=airlied@gmail.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.