* [PATCH v2 00/10] drm/fb-helper: Various cleanups @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Add various cleanups and changes to DRM's fbdev helpers and the generic fbdev emulation. There's no clear theme here, just lots of small things that need to be updated. In the end, the code will better reflect which parts are in the DRM client, which is fbdev emulation, and which are shared fbdev helpers. v2: * cleanups in drm_fbdev_fb_destroy() (Sam) * fix declaration of drm_fb_helper_unprepare() Thomas Zimmermann (10): drm/client: Test for connectors before sending hotplug event drm/client: Add hotplug_failed flag drm/fb-helper: Introduce drm_fb_helper_unprepare() drm/fbdev-generic: Initialize fb-helper structure in generic setup drm/fb-helper: Remove preferred_bpp parameter from fbdev internals drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function drm/fbdev-generic: Minimize hotplug error handling drm/fbdev-generic: Minimize client unregistering drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' drivers/gpu/drm/armada/armada_fbdev.c | 4 +- drivers/gpu/drm/drm_client.c | 10 ++ drivers/gpu/drm/drm_fb_helper.c | 58 ++++++--- drivers/gpu/drm/drm_fbdev_generic.c | 131 ++++++++------------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 +- drivers/gpu/drm/gma500/framebuffer.c | 4 +- drivers/gpu/drm/i915/display/intel_fbdev.c | 11 +- drivers/gpu/drm/msm/msm_fbdev.c | 4 +- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 +- drivers/gpu/drm/radeon/radeon_fb.c | 4 +- drivers/gpu/drm/tegra/fb.c | 7 +- include/drm/drm_client.h | 8 ++ include/drm/drm_fb_helper.h | 8 +- 13 files changed, 134 insertions(+), 123 deletions(-) base-commit: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 -- 2.39.0 ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 00/10] drm/fb-helper: Various cleanups @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Add various cleanups and changes to DRM's fbdev helpers and the generic fbdev emulation. There's no clear theme here, just lots of small things that need to be updated. In the end, the code will better reflect which parts are in the DRM client, which is fbdev emulation, and which are shared fbdev helpers. v2: * cleanups in drm_fbdev_fb_destroy() (Sam) * fix declaration of drm_fb_helper_unprepare() Thomas Zimmermann (10): drm/client: Test for connectors before sending hotplug event drm/client: Add hotplug_failed flag drm/fb-helper: Introduce drm_fb_helper_unprepare() drm/fbdev-generic: Initialize fb-helper structure in generic setup drm/fb-helper: Remove preferred_bpp parameter from fbdev internals drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function drm/fbdev-generic: Minimize hotplug error handling drm/fbdev-generic: Minimize client unregistering drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' drivers/gpu/drm/armada/armada_fbdev.c | 4 +- drivers/gpu/drm/drm_client.c | 10 ++ drivers/gpu/drm/drm_fb_helper.c | 58 ++++++--- drivers/gpu/drm/drm_fbdev_generic.c | 131 ++++++++------------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 +- drivers/gpu/drm/gma500/framebuffer.c | 4 +- drivers/gpu/drm/i915/display/intel_fbdev.c | 11 +- drivers/gpu/drm/msm/msm_fbdev.c | 4 +- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 +- drivers/gpu/drm/radeon/radeon_fb.c | 4 +- drivers/gpu/drm/tegra/fb.c | 7 +- include/drm/drm_client.h | 8 ++ include/drm/drm_fb_helper.h | 8 +- 13 files changed, 134 insertions(+), 123 deletions(-) base-commit: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 00/10] drm/fb-helper: Various cleanups @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Add various cleanups and changes to DRM's fbdev helpers and the generic fbdev emulation. There's no clear theme here, just lots of small things that need to be updated. In the end, the code will better reflect which parts are in the DRM client, which is fbdev emulation, and which are shared fbdev helpers. v2: * cleanups in drm_fbdev_fb_destroy() (Sam) * fix declaration of drm_fb_helper_unprepare() Thomas Zimmermann (10): drm/client: Test for connectors before sending hotplug event drm/client: Add hotplug_failed flag drm/fb-helper: Introduce drm_fb_helper_unprepare() drm/fbdev-generic: Initialize fb-helper structure in generic setup drm/fb-helper: Remove preferred_bpp parameter from fbdev internals drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function drm/fbdev-generic: Minimize hotplug error handling drm/fbdev-generic: Minimize client unregistering drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' drivers/gpu/drm/armada/armada_fbdev.c | 4 +- drivers/gpu/drm/drm_client.c | 10 ++ drivers/gpu/drm/drm_fb_helper.c | 58 ++++++--- drivers/gpu/drm/drm_fbdev_generic.c | 131 ++++++++------------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 +- drivers/gpu/drm/gma500/framebuffer.c | 4 +- drivers/gpu/drm/i915/display/intel_fbdev.c | 11 +- drivers/gpu/drm/msm/msm_fbdev.c | 4 +- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 +- drivers/gpu/drm/radeon/radeon_fb.c | 4 +- drivers/gpu/drm/tegra/fb.c | 7 +- include/drm/drm_client.h | 8 ++ include/drm/drm_fb_helper.h | 8 +- 13 files changed, 134 insertions(+), 123 deletions(-) base-commit: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 -- 2.39.0 ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 00/10] drm/fb-helper: Various cleanups @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Add various cleanups and changes to DRM's fbdev helpers and the generic fbdev emulation. There's no clear theme here, just lots of small things that need to be updated. In the end, the code will better reflect which parts are in the DRM client, which is fbdev emulation, and which are shared fbdev helpers. v2: * cleanups in drm_fbdev_fb_destroy() (Sam) * fix declaration of drm_fb_helper_unprepare() Thomas Zimmermann (10): drm/client: Test for connectors before sending hotplug event drm/client: Add hotplug_failed flag drm/fb-helper: Introduce drm_fb_helper_unprepare() drm/fbdev-generic: Initialize fb-helper structure in generic setup drm/fb-helper: Remove preferred_bpp parameter from fbdev internals drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function drm/fbdev-generic: Minimize hotplug error handling drm/fbdev-generic: Minimize client unregistering drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' drivers/gpu/drm/armada/armada_fbdev.c | 4 +- drivers/gpu/drm/drm_client.c | 10 ++ drivers/gpu/drm/drm_fb_helper.c | 58 ++++++--- drivers/gpu/drm/drm_fbdev_generic.c | 131 ++++++++------------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 +- drivers/gpu/drm/gma500/framebuffer.c | 4 +- drivers/gpu/drm/i915/display/intel_fbdev.c | 11 +- drivers/gpu/drm/msm/msm_fbdev.c | 4 +- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 +- drivers/gpu/drm/radeon/radeon_fb.c | 4 +- drivers/gpu/drm/tegra/fb.c | 7 +- include/drm/drm_client.h | 8 ++ include/drm/drm_fb_helper.h | 8 +- 13 files changed, 134 insertions(+), 123 deletions(-) base-commit: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 -- 2.39.0 ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Test for connectors in the client code and remove a similar test from the generic fbdev emulation. Do nothing if the test fails. Not having connectors indicates a driver bug. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_client.c | 5 +++++ drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c index 262ec64d4397..09ac191c202d 100644 --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -198,6 +198,11 @@ void drm_client_dev_hotplug(struct drm_device *dev) if (!drm_core_check_feature(dev, DRIVER_MODESET)) return; + if (!dev->mode_config.num_connector) { + drm_dbg_kms(dev, "No connectors found, will not send hotplug events!\n"); + return; + } + mutex_lock(&dev->clientlist_mutex); list_for_each_entry(client, &dev->clientlist, list) { if (!client->funcs || !client->funcs->hotplug) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 0a4c160e0e58..3d455a2e3fb5 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (dev->fb_helper) return drm_fb_helper_hotplug_event(dev->fb_helper); - if (!dev->mode_config.num_connector) { - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); - return 0; - } - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); ret = drm_fb_helper_init(dev, fb_helper); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Test for connectors in the client code and remove a similar test from the generic fbdev emulation. Do nothing if the test fails. Not having connectors indicates a driver bug. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_client.c | 5 +++++ drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c index 262ec64d4397..09ac191c202d 100644 --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -198,6 +198,11 @@ void drm_client_dev_hotplug(struct drm_device *dev) if (!drm_core_check_feature(dev, DRIVER_MODESET)) return; + if (!dev->mode_config.num_connector) { + drm_dbg_kms(dev, "No connectors found, will not send hotplug events!\n"); + return; + } + mutex_lock(&dev->clientlist_mutex); list_for_each_entry(client, &dev->clientlist, list) { if (!client->funcs || !client->funcs->hotplug) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 0a4c160e0e58..3d455a2e3fb5 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (dev->fb_helper) return drm_fb_helper_hotplug_event(dev->fb_helper); - if (!dev->mode_config.num_connector) { - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); - return 0; - } - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); ret = drm_fb_helper_init(dev, fb_helper); -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Test for connectors in the client code and remove a similar test from the generic fbdev emulation. Do nothing if the test fails. Not having connectors indicates a driver bug. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_client.c | 5 +++++ drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c index 262ec64d4397..09ac191c202d 100644 --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -198,6 +198,11 @@ void drm_client_dev_hotplug(struct drm_device *dev) if (!drm_core_check_feature(dev, DRIVER_MODESET)) return; + if (!dev->mode_config.num_connector) { + drm_dbg_kms(dev, "No connectors found, will not send hotplug events!\n"); + return; + } + mutex_lock(&dev->clientlist_mutex); list_for_each_entry(client, &dev->clientlist, list) { if (!client->funcs || !client->funcs->hotplug) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 0a4c160e0e58..3d455a2e3fb5 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (dev->fb_helper) return drm_fb_helper_hotplug_event(dev->fb_helper); - if (!dev->mode_config.num_connector) { - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); - return 0; - } - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); ret = drm_fb_helper_init(dev, fb_helper); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Test for connectors in the client code and remove a similar test from the generic fbdev emulation. Do nothing if the test fails. Not having connectors indicates a driver bug. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_client.c | 5 +++++ drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c index 262ec64d4397..09ac191c202d 100644 --- a/drivers/gpu/drm/drm_client.c +++ b/drivers/gpu/drm/drm_client.c @@ -198,6 +198,11 @@ void drm_client_dev_hotplug(struct drm_device *dev) if (!drm_core_check_feature(dev, DRIVER_MODESET)) return; + if (!dev->mode_config.num_connector) { + drm_dbg_kms(dev, "No connectors found, will not send hotplug events!\n"); + return; + } + mutex_lock(&dev->clientlist_mutex); list_for_each_entry(client, &dev->clientlist, list) { if (!client->funcs || !client->funcs->hotplug) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 0a4c160e0e58..3d455a2e3fb5 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (dev->fb_helper) return drm_fb_helper_hotplug_event(dev->fb_helper); - if (!dev->mode_config.num_connector) { - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); - return 0; - } - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); ret = drm_fb_helper_init(dev, fb_helper); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 8:30 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 8:30 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel Hello Thomas, On 1/24/23 14:40, Thomas Zimmermann wrote: > Test for connectors in the client code and remove a similar test > from the generic fbdev emulation. Do nothing if the test fails. > Not having connectors indicates a driver bug. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> but I've a question below. > drivers/gpu/drm/drm_client.c | 5 +++++ > drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- > 2 files changed, 5 insertions(+), 5 deletions(-) [...] > --- a/drivers/gpu/drm/drm_fbdev_generic.c > +++ b/drivers/gpu/drm/drm_fbdev_generic.c > @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) > if (dev->fb_helper) > return drm_fb_helper_hotplug_event(dev->fb_helper); > > - if (!dev->mode_config.num_connector) { > - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); > - return 0; > - } > - What about the following code snippet: if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); that seems to be something that should be in the core client dev hotplug as well, since it isn't specific to the fbdev emulation client ? -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-25 8:30 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 8:30 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra Hello Thomas, On 1/24/23 14:40, Thomas Zimmermann wrote: > Test for connectors in the client code and remove a similar test > from the generic fbdev emulation. Do nothing if the test fails. > Not having connectors indicates a driver bug. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> but I've a question below. > drivers/gpu/drm/drm_client.c | 5 +++++ > drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- > 2 files changed, 5 insertions(+), 5 deletions(-) [...] > --- a/drivers/gpu/drm/drm_fbdev_generic.c > +++ b/drivers/gpu/drm/drm_fbdev_generic.c > @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) > if (dev->fb_helper) > return drm_fb_helper_hotplug_event(dev->fb_helper); > > - if (!dev->mode_config.num_connector) { > - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); > - return 0; > - } > - What about the following code snippet: if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); that seems to be something that should be in the core client dev hotplug as well, since it isn't specific to the fbdev emulation client ? -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-25 8:30 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 8:30 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel Hello Thomas, On 1/24/23 14:40, Thomas Zimmermann wrote: > Test for connectors in the client code and remove a similar test > from the generic fbdev emulation. Do nothing if the test fails. > Not having connectors indicates a driver bug. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> but I've a question below. > drivers/gpu/drm/drm_client.c | 5 +++++ > drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- > 2 files changed, 5 insertions(+), 5 deletions(-) [...] > --- a/drivers/gpu/drm/drm_fbdev_generic.c > +++ b/drivers/gpu/drm/drm_fbdev_generic.c > @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) > if (dev->fb_helper) > return drm_fb_helper_hotplug_event(dev->fb_helper); > > - if (!dev->mode_config.num_connector) { > - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); > - return 0; > - } > - What about the following code snippet: if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); that seems to be something that should be in the core client dev hotplug as well, since it isn't specific to the fbdev emulation client ? -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-25 8:30 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 8:30 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra Hello Thomas, On 1/24/23 14:40, Thomas Zimmermann wrote: > Test for connectors in the client code and remove a similar test > from the generic fbdev emulation. Do nothing if the test fails. > Not having connectors indicates a driver bug. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> but I've a question below. > drivers/gpu/drm/drm_client.c | 5 +++++ > drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- > 2 files changed, 5 insertions(+), 5 deletions(-) [...] > --- a/drivers/gpu/drm/drm_fbdev_generic.c > +++ b/drivers/gpu/drm/drm_fbdev_generic.c > @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) > if (dev->fb_helper) > return drm_fb_helper_hotplug_event(dev->fb_helper); > > - if (!dev->mode_config.num_connector) { > - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); > - return 0; > - } > - What about the following code snippet: if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); that seems to be something that should be in the core client dev hotplug as well, since it isn't specific to the fbdev emulation client ? -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event 2023-01-25 8:30 ` Javier Martinez Canillas (?) (?) @ 2023-01-25 14:04 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-25 14:04 UTC (permalink / raw) To: Javier Martinez Canillas, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 1834 bytes --] Hi Am 25.01.23 um 09:30 schrieb Javier Martinez Canillas: > Hello Thomas, > > On 1/24/23 14:40, Thomas Zimmermann wrote: >> Test for connectors in the client code and remove a similar test >> from the generic fbdev emulation. Do nothing if the test fails. >> Not having connectors indicates a driver bug. >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > > but I've a question below. > >> drivers/gpu/drm/drm_client.c | 5 +++++ >> drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- >> 2 files changed, 5 insertions(+), 5 deletions(-) > > [...] > >> --- a/drivers/gpu/drm/drm_fbdev_generic.c >> +++ b/drivers/gpu/drm/drm_fbdev_generic.c >> @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) >> if (dev->fb_helper) >> return drm_fb_helper_hotplug_event(dev->fb_helper); >> >> - if (!dev->mode_config.num_connector) { >> - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); >> - return 0; >> - } >> - > > What about the following code snippet: > > if (!drm_drv_uses_atomic_modeset(dev)) > drm_helper_disable_unused_functions(dev); > > that seems to be something that should be in the core client dev hotplug > as well, since it isn't specific to the fbdev emulation client ? That's in the middle of the initial probing code and disables pipeline elements in non-atomic modesetting. TBH I don't dare to move it around. If we ever have other clients, we can attempt the put it into the client. Best regards Thomas > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-25 14:04 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-25 14:04 UTC (permalink / raw) To: Javier Martinez Canillas, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel [-- Attachment #1.1.1: Type: text/plain, Size: 1834 bytes --] Hi Am 25.01.23 um 09:30 schrieb Javier Martinez Canillas: > Hello Thomas, > > On 1/24/23 14:40, Thomas Zimmermann wrote: >> Test for connectors in the client code and remove a similar test >> from the generic fbdev emulation. Do nothing if the test fails. >> Not having connectors indicates a driver bug. >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > > but I've a question below. > >> drivers/gpu/drm/drm_client.c | 5 +++++ >> drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- >> 2 files changed, 5 insertions(+), 5 deletions(-) > > [...] > >> --- a/drivers/gpu/drm/drm_fbdev_generic.c >> +++ b/drivers/gpu/drm/drm_fbdev_generic.c >> @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) >> if (dev->fb_helper) >> return drm_fb_helper_hotplug_event(dev->fb_helper); >> >> - if (!dev->mode_config.num_connector) { >> - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); >> - return 0; >> - } >> - > > What about the following code snippet: > > if (!drm_drv_uses_atomic_modeset(dev)) > drm_helper_disable_unused_functions(dev); > > that seems to be something that should be in the core client dev hotplug > as well, since it isn't specific to the fbdev emulation client ? That's in the middle of the initial probing code and disables pipeline elements in non-atomic modesetting. TBH I don't dare to move it around. If we ever have other clients, we can attempt the put it into the client. Best regards Thomas > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] [-- Attachment #2: Type: text/plain, Size: 176 bytes --] _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-25 14:04 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-25 14:04 UTC (permalink / raw) To: Javier Martinez Canillas, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, amd-gfx, dri-devel, linux-tegra, freedreno, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 1834 bytes --] Hi Am 25.01.23 um 09:30 schrieb Javier Martinez Canillas: > Hello Thomas, > > On 1/24/23 14:40, Thomas Zimmermann wrote: >> Test for connectors in the client code and remove a similar test >> from the generic fbdev emulation. Do nothing if the test fails. >> Not having connectors indicates a driver bug. >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > > but I've a question below. > >> drivers/gpu/drm/drm_client.c | 5 +++++ >> drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- >> 2 files changed, 5 insertions(+), 5 deletions(-) > > [...] > >> --- a/drivers/gpu/drm/drm_fbdev_generic.c >> +++ b/drivers/gpu/drm/drm_fbdev_generic.c >> @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) >> if (dev->fb_helper) >> return drm_fb_helper_hotplug_event(dev->fb_helper); >> >> - if (!dev->mode_config.num_connector) { >> - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); >> - return 0; >> - } >> - > > What about the following code snippet: > > if (!drm_drv_uses_atomic_modeset(dev)) > drm_helper_disable_unused_functions(dev); > > that seems to be something that should be in the core client dev hotplug > as well, since it isn't specific to the fbdev emulation client ? That's in the middle of the initial probing code and disables pipeline elements in non-atomic modesetting. TBH I don't dare to move it around. If we ever have other clients, we can attempt the put it into the client. Best regards Thomas > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 01/10] drm/client: Test for connectors before sending hotplug event @ 2023-01-25 14:04 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-25 14:04 UTC (permalink / raw) To: Javier Martinez Canillas, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, amd-gfx, dri-devel, linux-tegra, freedreno, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 1834 bytes --] Hi Am 25.01.23 um 09:30 schrieb Javier Martinez Canillas: > Hello Thomas, > > On 1/24/23 14:40, Thomas Zimmermann wrote: >> Test for connectors in the client code and remove a similar test >> from the generic fbdev emulation. Do nothing if the test fails. >> Not having connectors indicates a driver bug. >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > > but I've a question below. > >> drivers/gpu/drm/drm_client.c | 5 +++++ >> drivers/gpu/drm/drm_fbdev_generic.c | 5 ----- >> 2 files changed, 5 insertions(+), 5 deletions(-) > > [...] > >> --- a/drivers/gpu/drm/drm_fbdev_generic.c >> +++ b/drivers/gpu/drm/drm_fbdev_generic.c >> @@ -389,11 +389,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) >> if (dev->fb_helper) >> return drm_fb_helper_hotplug_event(dev->fb_helper); >> >> - if (!dev->mode_config.num_connector) { >> - drm_dbg_kms(dev, "No connectors found, will not create framebuffer!\n"); >> - return 0; >> - } >> - > > What about the following code snippet: > > if (!drm_drv_uses_atomic_modeset(dev)) > drm_helper_disable_unused_functions(dev); > > that seems to be something that should be in the core client dev hotplug > as well, since it isn't specific to the fbdev emulation client ? That's in the middle of the initial probing code and disables pipeline elements in non-atomic modesetting. TBH I don't dare to move it around. If we ever have other clients, we can attempt the put it into the client. Best regards Thomas > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 02/10] drm/client: Add hotplug_failed flag 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann 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 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 02/10] drm/client: Add hotplug_failed flag @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann 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 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 02/10] drm/client: Add hotplug_failed flag @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel 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 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 02/10] drm/client: Add hotplug_failed flag @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel 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 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 02/10] drm/client: Add hotplug_failed flag 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:05 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:05 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > 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> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 02/10] drm/client: Add hotplug_failed flag @ 2023-01-25 9:05 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:05 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > 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> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 02/10] drm/client: Add hotplug_failed flag @ 2023-01-25 9:05 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:05 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > 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> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 02/10] drm/client: Add hotplug_failed flag @ 2023-01-25 9:05 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:05 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > 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> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No functional changes. v2: * declare as static inline (kernel test robot) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- include/drm/drm_fb_helper.h | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index c5c13e192b64..4379bcd7718b 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, } EXPORT_SYMBOL(drm_fb_helper_prepare); +/** + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure + * @fb_helper: driver-allocated fbdev helper structure to set up + * + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). + */ +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) +{ + mutex_destroy(&fb_helper->lock); +} +EXPORT_SYMBOL(drm_fb_helper_unprepare); + /** * drm_fb_helper_init - initialize a &struct drm_fb_helper * @dev: drm device @@ -561,7 +573,7 @@ void drm_fb_helper_fini(struct drm_fb_helper *fb_helper) } mutex_unlock(&kernel_fb_helper_lock); - mutex_destroy(&fb_helper->lock); + drm_fb_helper_unprepare(fb_helper); if (!fb_helper->client.funcs) drm_client_release(&fb_helper->client); diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index f443e1f11654..39710c570a04 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, const struct drm_fb_helper_funcs *funcs); +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); void drm_fb_helper_fini(struct drm_fb_helper *helper); int drm_fb_helper_blank(int blank, struct fb_info *info); @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, { } +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) +{ +} + static inline int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper) { -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No functional changes. v2: * declare as static inline (kernel test robot) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- include/drm/drm_fb_helper.h | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index c5c13e192b64..4379bcd7718b 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, } EXPORT_SYMBOL(drm_fb_helper_prepare); +/** + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure + * @fb_helper: driver-allocated fbdev helper structure to set up + * + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). + */ +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) +{ + mutex_destroy(&fb_helper->lock); +} +EXPORT_SYMBOL(drm_fb_helper_unprepare); + /** * drm_fb_helper_init - initialize a &struct drm_fb_helper * @dev: drm device @@ -561,7 +573,7 @@ void drm_fb_helper_fini(struct drm_fb_helper *fb_helper) } mutex_unlock(&kernel_fb_helper_lock); - mutex_destroy(&fb_helper->lock); + drm_fb_helper_unprepare(fb_helper); if (!fb_helper->client.funcs) drm_client_release(&fb_helper->client); diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index f443e1f11654..39710c570a04 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, const struct drm_fb_helper_funcs *funcs); +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); void drm_fb_helper_fini(struct drm_fb_helper *helper); int drm_fb_helper_blank(int blank, struct fb_info *info); @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, { } +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) +{ +} + static inline int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper) { -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No functional changes. v2: * declare as static inline (kernel test robot) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- include/drm/drm_fb_helper.h | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index c5c13e192b64..4379bcd7718b 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, } EXPORT_SYMBOL(drm_fb_helper_prepare); +/** + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure + * @fb_helper: driver-allocated fbdev helper structure to set up + * + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). + */ +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) +{ + mutex_destroy(&fb_helper->lock); +} +EXPORT_SYMBOL(drm_fb_helper_unprepare); + /** * drm_fb_helper_init - initialize a &struct drm_fb_helper * @dev: drm device @@ -561,7 +573,7 @@ void drm_fb_helper_fini(struct drm_fb_helper *fb_helper) } mutex_unlock(&kernel_fb_helper_lock); - mutex_destroy(&fb_helper->lock); + drm_fb_helper_unprepare(fb_helper); if (!fb_helper->client.funcs) drm_client_release(&fb_helper->client); diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index f443e1f11654..39710c570a04 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, const struct drm_fb_helper_funcs *funcs); +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); void drm_fb_helper_fini(struct drm_fb_helper *helper); int drm_fb_helper_blank(int blank, struct fb_info *info); @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, { } +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) +{ +} + static inline int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper) { -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No functional changes. v2: * declare as static inline (kernel test robot) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- include/drm/drm_fb_helper.h | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index c5c13e192b64..4379bcd7718b 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, } EXPORT_SYMBOL(drm_fb_helper_prepare); +/** + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure + * @fb_helper: driver-allocated fbdev helper structure to set up + * + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). + */ +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) +{ + mutex_destroy(&fb_helper->lock); +} +EXPORT_SYMBOL(drm_fb_helper_unprepare); + /** * drm_fb_helper_init - initialize a &struct drm_fb_helper * @dev: drm device @@ -561,7 +573,7 @@ void drm_fb_helper_fini(struct drm_fb_helper *fb_helper) } mutex_unlock(&kernel_fb_helper_lock); - mutex_destroy(&fb_helper->lock); + drm_fb_helper_unprepare(fb_helper); if (!fb_helper->client.funcs) drm_client_release(&fb_helper->client); diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index f443e1f11654..39710c570a04 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, const struct drm_fb_helper_funcs *funcs); +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); void drm_fb_helper_fini(struct drm_fb_helper *helper); int drm_fb_helper_blank(int blank, struct fb_info *info); @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, { } +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) +{ +} + static inline int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper) { -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:18 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:18 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, amd-gfx, dri-devel, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No > functional changes. > > v2: > * declare as static inline (kernel test robot) > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- > include/drm/drm_fb_helper.h | 5 +++++ > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index c5c13e192b64..4379bcd7718b 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, > } > EXPORT_SYMBOL(drm_fb_helper_prepare); > > +/** > + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure > + * @fb_helper: driver-allocated fbdev helper structure to set up > + * > + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). > + */ > +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) > +{ > + mutex_destroy(&fb_helper->lock); > +} I like that we have an _unprepare that is the inverse of the _prepare, but since is only destroying the mutex, maybe is an unneeded indirection level? Or do you plan to add more cleanup to that _unprepare function? Otherwise I would just make it an inline function. > +EXPORT_SYMBOL(drm_fb_helper_unprepare); > + Does it have to be an exported symbol? AFAICT the only user for now is the drm_fb_helper_fini() function, so the function could be a static inline. [...] > diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h > index f443e1f11654..39710c570a04 100644 > --- a/include/drm/drm_fb_helper.h > +++ b/include/drm/drm_fb_helper.h > @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) > #ifdef CONFIG_DRM_FBDEV_EMULATION > void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, > const struct drm_fb_helper_funcs *funcs); > +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); > int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); > void drm_fb_helper_fini(struct drm_fb_helper *helper); > int drm_fb_helper_blank(int blank, struct fb_info *info); > @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, > { > } > > +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) > +{ > +} > + And you should be able to remove this stub if you limit the scope of the helper. No strong opinion though. So if you prefer to keep it as is, feel free to add: Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-25 9:18 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:18 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, amd-gfx, dri-devel, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No > functional changes. > > v2: > * declare as static inline (kernel test robot) > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- > include/drm/drm_fb_helper.h | 5 +++++ > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index c5c13e192b64..4379bcd7718b 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, > } > EXPORT_SYMBOL(drm_fb_helper_prepare); > > +/** > + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure > + * @fb_helper: driver-allocated fbdev helper structure to set up > + * > + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). > + */ > +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) > +{ > + mutex_destroy(&fb_helper->lock); > +} I like that we have an _unprepare that is the inverse of the _prepare, but since is only destroying the mutex, maybe is an unneeded indirection level? Or do you plan to add more cleanup to that _unprepare function? Otherwise I would just make it an inline function. > +EXPORT_SYMBOL(drm_fb_helper_unprepare); > + Does it have to be an exported symbol? AFAICT the only user for now is the drm_fb_helper_fini() function, so the function could be a static inline. [...] > diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h > index f443e1f11654..39710c570a04 100644 > --- a/include/drm/drm_fb_helper.h > +++ b/include/drm/drm_fb_helper.h > @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) > #ifdef CONFIG_DRM_FBDEV_EMULATION > void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, > const struct drm_fb_helper_funcs *funcs); > +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); > int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); > void drm_fb_helper_fini(struct drm_fb_helper *helper); > int drm_fb_helper_blank(int blank, struct fb_info *info); > @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, > { > } > > +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) > +{ > +} > + And you should be able to remove this stub if you limit the scope of the helper. No strong opinion though. So if you prefer to keep it as is, feel free to add: Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-25 9:18 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:18 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No > functional changes. > > v2: > * declare as static inline (kernel test robot) > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- > include/drm/drm_fb_helper.h | 5 +++++ > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index c5c13e192b64..4379bcd7718b 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, > } > EXPORT_SYMBOL(drm_fb_helper_prepare); > > +/** > + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure > + * @fb_helper: driver-allocated fbdev helper structure to set up > + * > + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). > + */ > +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) > +{ > + mutex_destroy(&fb_helper->lock); > +} I like that we have an _unprepare that is the inverse of the _prepare, but since is only destroying the mutex, maybe is an unneeded indirection level? Or do you plan to add more cleanup to that _unprepare function? Otherwise I would just make it an inline function. > +EXPORT_SYMBOL(drm_fb_helper_unprepare); > + Does it have to be an exported symbol? AFAICT the only user for now is the drm_fb_helper_fini() function, so the function could be a static inline. [...] > diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h > index f443e1f11654..39710c570a04 100644 > --- a/include/drm/drm_fb_helper.h > +++ b/include/drm/drm_fb_helper.h > @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) > #ifdef CONFIG_DRM_FBDEV_EMULATION > void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, > const struct drm_fb_helper_funcs *funcs); > +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); > int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); > void drm_fb_helper_fini(struct drm_fb_helper *helper); > int drm_fb_helper_blank(int blank, struct fb_info *info); > @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, > { > } > > +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) > +{ > +} > + And you should be able to remove this stub if you limit the scope of the helper. No strong opinion though. So if you prefer to keep it as is, feel free to add: Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-25 9:18 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:18 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No > functional changes. > > v2: > * declare as static inline (kernel test robot) > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- > include/drm/drm_fb_helper.h | 5 +++++ > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index c5c13e192b64..4379bcd7718b 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, > } > EXPORT_SYMBOL(drm_fb_helper_prepare); > > +/** > + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure > + * @fb_helper: driver-allocated fbdev helper structure to set up > + * > + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). > + */ > +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) > +{ > + mutex_destroy(&fb_helper->lock); > +} I like that we have an _unprepare that is the inverse of the _prepare, but since is only destroying the mutex, maybe is an unneeded indirection level? Or do you plan to add more cleanup to that _unprepare function? Otherwise I would just make it an inline function. > +EXPORT_SYMBOL(drm_fb_helper_unprepare); > + Does it have to be an exported symbol? AFAICT the only user for now is the drm_fb_helper_fini() function, so the function could be a static inline. [...] > diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h > index f443e1f11654..39710c570a04 100644 > --- a/include/drm/drm_fb_helper.h > +++ b/include/drm/drm_fb_helper.h > @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) > #ifdef CONFIG_DRM_FBDEV_EMULATION > void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, > const struct drm_fb_helper_funcs *funcs); > +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); > int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); > void drm_fb_helper_fini(struct drm_fb_helper *helper); > int drm_fb_helper_blank(int blank, struct fb_info *info); > @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, > { > } > > +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) > +{ > +} > + And you should be able to remove this stub if you limit the scope of the helper. No strong opinion though. So if you prefer to keep it as is, feel free to add: Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() 2023-01-25 9:18 ` Javier Martinez Canillas (?) (?) @ 2023-01-25 14:11 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-25 14:11 UTC (permalink / raw) To: Javier Martinez Canillas, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, amd-gfx, dri-devel, linux-tegra, freedreno, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 3600 bytes --] Hi Am 25.01.23 um 10:18 schrieb Javier Martinez Canillas: > On 1/24/23 14:40, Thomas Zimmermann wrote: >> Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No >> functional changes. >> >> v2: >> * declare as static inline (kernel test robot) >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- >> drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- >> include/drm/drm_fb_helper.h | 5 +++++ >> 2 files changed, 18 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c >> index c5c13e192b64..4379bcd7718b 100644 >> --- a/drivers/gpu/drm/drm_fb_helper.c >> +++ b/drivers/gpu/drm/drm_fb_helper.c >> @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, >> } >> EXPORT_SYMBOL(drm_fb_helper_prepare); >> >> +/** >> + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure >> + * @fb_helper: driver-allocated fbdev helper structure to set up >> + * >> + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). >> + */ >> +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) >> +{ >> + mutex_destroy(&fb_helper->lock); >> +} > > I like that we have an _unprepare that is the inverse of the _prepare, but > since is only destroying the mutex, maybe is an unneeded indirection level? > > Or do you plan to add more cleanup to that _unprepare function? Otherwise I > would just make it an inline function. There could possibly be more; not sure yet. With patch 04, the call is being invoked from drm_fbdev_generic.c. And I have prototype patches that convert a number of driver-internal fbdevs to use struct drm_client. They all follow the same design/structure/pattern that is being layed out in generic-fbdev in this patchset. In the end drm_fb_helper_unprepare will definitely be a public interface of the fbdev helpers. Best regards Thomas > >> +EXPORT_SYMBOL(drm_fb_helper_unprepare); >> + > > Does it have to be an exported symbol? AFAICT the only user for now is the > drm_fb_helper_fini() function, so the function could be a static inline. > > [...] > >> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h >> index f443e1f11654..39710c570a04 100644 >> --- a/include/drm/drm_fb_helper.h >> +++ b/include/drm/drm_fb_helper.h >> @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) >> #ifdef CONFIG_DRM_FBDEV_EMULATION >> void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, >> const struct drm_fb_helper_funcs *funcs); >> +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); >> int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); >> void drm_fb_helper_fini(struct drm_fb_helper *helper); >> int drm_fb_helper_blank(int blank, struct fb_info *info); >> @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, >> { >> } >> >> +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) >> +{ >> +} >> + > > And you should be able to remove this stub if you limit the scope of the helper. > > No strong opinion though. So if you prefer to keep it as is, feel free to add: > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-25 14:11 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-25 14:11 UTC (permalink / raw) To: Javier Martinez Canillas, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 3600 bytes --] Hi Am 25.01.23 um 10:18 schrieb Javier Martinez Canillas: > On 1/24/23 14:40, Thomas Zimmermann wrote: >> Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No >> functional changes. >> >> v2: >> * declare as static inline (kernel test robot) >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- >> drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- >> include/drm/drm_fb_helper.h | 5 +++++ >> 2 files changed, 18 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c >> index c5c13e192b64..4379bcd7718b 100644 >> --- a/drivers/gpu/drm/drm_fb_helper.c >> +++ b/drivers/gpu/drm/drm_fb_helper.c >> @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, >> } >> EXPORT_SYMBOL(drm_fb_helper_prepare); >> >> +/** >> + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure >> + * @fb_helper: driver-allocated fbdev helper structure to set up >> + * >> + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). >> + */ >> +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) >> +{ >> + mutex_destroy(&fb_helper->lock); >> +} > > I like that we have an _unprepare that is the inverse of the _prepare, but > since is only destroying the mutex, maybe is an unneeded indirection level? > > Or do you plan to add more cleanup to that _unprepare function? Otherwise I > would just make it an inline function. There could possibly be more; not sure yet. With patch 04, the call is being invoked from drm_fbdev_generic.c. And I have prototype patches that convert a number of driver-internal fbdevs to use struct drm_client. They all follow the same design/structure/pattern that is being layed out in generic-fbdev in this patchset. In the end drm_fb_helper_unprepare will definitely be a public interface of the fbdev helpers. Best regards Thomas > >> +EXPORT_SYMBOL(drm_fb_helper_unprepare); >> + > > Does it have to be an exported symbol? AFAICT the only user for now is the > drm_fb_helper_fini() function, so the function could be a static inline. > > [...] > >> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h >> index f443e1f11654..39710c570a04 100644 >> --- a/include/drm/drm_fb_helper.h >> +++ b/include/drm/drm_fb_helper.h >> @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) >> #ifdef CONFIG_DRM_FBDEV_EMULATION >> void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, >> const struct drm_fb_helper_funcs *funcs); >> +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); >> int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); >> void drm_fb_helper_fini(struct drm_fb_helper *helper); >> int drm_fb_helper_blank(int blank, struct fb_info *info); >> @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, >> { >> } >> >> +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) >> +{ >> +} >> + > > And you should be able to remove this stub if you limit the scope of the helper. > > No strong opinion though. So if you prefer to keep it as is, feel free to add: > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-25 14:11 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-25 14:11 UTC (permalink / raw) To: Javier Martinez Canillas, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, amd-gfx, dri-devel, linux-tegra, freedreno, linux-arm-kernel [-- Attachment #1.1.1: Type: text/plain, Size: 3600 bytes --] Hi Am 25.01.23 um 10:18 schrieb Javier Martinez Canillas: > On 1/24/23 14:40, Thomas Zimmermann wrote: >> Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No >> functional changes. >> >> v2: >> * declare as static inline (kernel test robot) >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- >> drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- >> include/drm/drm_fb_helper.h | 5 +++++ >> 2 files changed, 18 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c >> index c5c13e192b64..4379bcd7718b 100644 >> --- a/drivers/gpu/drm/drm_fb_helper.c >> +++ b/drivers/gpu/drm/drm_fb_helper.c >> @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, >> } >> EXPORT_SYMBOL(drm_fb_helper_prepare); >> >> +/** >> + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure >> + * @fb_helper: driver-allocated fbdev helper structure to set up >> + * >> + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). >> + */ >> +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) >> +{ >> + mutex_destroy(&fb_helper->lock); >> +} > > I like that we have an _unprepare that is the inverse of the _prepare, but > since is only destroying the mutex, maybe is an unneeded indirection level? > > Or do you plan to add more cleanup to that _unprepare function? Otherwise I > would just make it an inline function. There could possibly be more; not sure yet. With patch 04, the call is being invoked from drm_fbdev_generic.c. And I have prototype patches that convert a number of driver-internal fbdevs to use struct drm_client. They all follow the same design/structure/pattern that is being layed out in generic-fbdev in this patchset. In the end drm_fb_helper_unprepare will definitely be a public interface of the fbdev helpers. Best regards Thomas > >> +EXPORT_SYMBOL(drm_fb_helper_unprepare); >> + > > Does it have to be an exported symbol? AFAICT the only user for now is the > drm_fb_helper_fini() function, so the function could be a static inline. > > [...] > >> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h >> index f443e1f11654..39710c570a04 100644 >> --- a/include/drm/drm_fb_helper.h >> +++ b/include/drm/drm_fb_helper.h >> @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) >> #ifdef CONFIG_DRM_FBDEV_EMULATION >> void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, >> const struct drm_fb_helper_funcs *funcs); >> +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); >> int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); >> void drm_fb_helper_fini(struct drm_fb_helper *helper); >> int drm_fb_helper_blank(int blank, struct fb_info *info); >> @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, >> { >> } >> >> +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) >> +{ >> +} >> + > > And you should be able to remove this stub if you limit the scope of the helper. > > No strong opinion though. So if you prefer to keep it as is, feel free to add: > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] [-- Attachment #2: Type: text/plain, Size: 176 bytes --] _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 03/10] drm/fb-helper: Introduce drm_fb_helper_unprepare() @ 2023-01-25 14:11 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-25 14:11 UTC (permalink / raw) To: Javier Martinez Canillas, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 3600 bytes --] Hi Am 25.01.23 um 10:18 schrieb Javier Martinez Canillas: > On 1/24/23 14:40, Thomas Zimmermann wrote: >> Move the fb-helper clean-up code into drm_fb_helper_unprepare(). No >> functional changes. >> >> v2: >> * declare as static inline (kernel test robot) >> >> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> >> --- >> drivers/gpu/drm/drm_fb_helper.c | 14 +++++++++++++- >> include/drm/drm_fb_helper.h | 5 +++++ >> 2 files changed, 18 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c >> index c5c13e192b64..4379bcd7718b 100644 >> --- a/drivers/gpu/drm/drm_fb_helper.c >> +++ b/drivers/gpu/drm/drm_fb_helper.c >> @@ -435,6 +435,18 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, >> } >> EXPORT_SYMBOL(drm_fb_helper_prepare); >> >> +/** >> + * drm_fb_helper_unprepare - clean up a drm_fb_helper structure >> + * @fb_helper: driver-allocated fbdev helper structure to set up >> + * >> + * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare(). >> + */ >> +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) >> +{ >> + mutex_destroy(&fb_helper->lock); >> +} > > I like that we have an _unprepare that is the inverse of the _prepare, but > since is only destroying the mutex, maybe is an unneeded indirection level? > > Or do you plan to add more cleanup to that _unprepare function? Otherwise I > would just make it an inline function. There could possibly be more; not sure yet. With patch 04, the call is being invoked from drm_fbdev_generic.c. And I have prototype patches that convert a number of driver-internal fbdevs to use struct drm_client. They all follow the same design/structure/pattern that is being layed out in generic-fbdev in this patchset. In the end drm_fb_helper_unprepare will definitely be a public interface of the fbdev helpers. Best regards Thomas > >> +EXPORT_SYMBOL(drm_fb_helper_unprepare); >> + > > Does it have to be an exported symbol? AFAICT the only user for now is the > drm_fb_helper_fini() function, so the function could be a static inline. > > [...] > >> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h >> index f443e1f11654..39710c570a04 100644 >> --- a/include/drm/drm_fb_helper.h >> +++ b/include/drm/drm_fb_helper.h >> @@ -230,6 +230,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) >> #ifdef CONFIG_DRM_FBDEV_EMULATION >> void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, >> const struct drm_fb_helper_funcs *funcs); >> +void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); >> int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); >> void drm_fb_helper_fini(struct drm_fb_helper *helper); >> int drm_fb_helper_blank(int blank, struct fb_info *info); >> @@ -296,6 +297,10 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, >> { >> } >> >> +static inline void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper) >> +{ >> +} >> + > > And you should be able to remove this stub if you limit the scope of the helper. > > No strong opinion though. So if you prefer to keep it as is, feel free to add: > > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Initialize the fb-helper structure immediately after its allocation in drm_fbdev_generic_setup(). That will make it easier to fill it with driver-specific values, such as the preferred BPP. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 135d58b8007b..63f66325a8a5 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -385,8 +385,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (dev->fb_helper) return drm_fb_helper_hotplug_event(dev->fb_helper); - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); - ret = drm_fb_helper_init(dev, fb_helper); if (ret) goto err; @@ -456,12 +454,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs); if (ret) { - kfree(fb_helper); drm_err(dev, "Failed to register client: %d\n", ret); - return; + goto err_drm_client_init; } /* @@ -484,5 +482,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); drm_client_register(&fb_helper->client); + + return; + +err_drm_client_init: + drm_fb_helper_unprepare(fb_helper); + kfree(fb_helper); + return; } EXPORT_SYMBOL(drm_fbdev_generic_setup); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Initialize the fb-helper structure immediately after its allocation in drm_fbdev_generic_setup(). That will make it easier to fill it with driver-specific values, such as the preferred BPP. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 135d58b8007b..63f66325a8a5 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -385,8 +385,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (dev->fb_helper) return drm_fb_helper_hotplug_event(dev->fb_helper); - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); - ret = drm_fb_helper_init(dev, fb_helper); if (ret) goto err; @@ -456,12 +454,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs); if (ret) { - kfree(fb_helper); drm_err(dev, "Failed to register client: %d\n", ret); - return; + goto err_drm_client_init; } /* @@ -484,5 +482,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); drm_client_register(&fb_helper->client); + + return; + +err_drm_client_init: + drm_fb_helper_unprepare(fb_helper); + kfree(fb_helper); + return; } EXPORT_SYMBOL(drm_fbdev_generic_setup); -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Initialize the fb-helper structure immediately after its allocation in drm_fbdev_generic_setup(). That will make it easier to fill it with driver-specific values, such as the preferred BPP. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 135d58b8007b..63f66325a8a5 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -385,8 +385,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (dev->fb_helper) return drm_fb_helper_hotplug_event(dev->fb_helper); - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); - ret = drm_fb_helper_init(dev, fb_helper); if (ret) goto err; @@ -456,12 +454,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs); if (ret) { - kfree(fb_helper); drm_err(dev, "Failed to register client: %d\n", ret); - return; + goto err_drm_client_init; } /* @@ -484,5 +482,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); drm_client_register(&fb_helper->client); + + return; + +err_drm_client_init: + drm_fb_helper_unprepare(fb_helper); + kfree(fb_helper); + return; } EXPORT_SYMBOL(drm_fbdev_generic_setup); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Initialize the fb-helper structure immediately after its allocation in drm_fbdev_generic_setup(). That will make it easier to fill it with driver-specific values, such as the preferred BPP. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 135d58b8007b..63f66325a8a5 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -385,8 +385,6 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (dev->fb_helper) return drm_fb_helper_hotplug_event(dev->fb_helper); - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); - ret = drm_fb_helper_init(dev, fb_helper); if (ret) goto err; @@ -456,12 +454,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs); if (ret) { - kfree(fb_helper); drm_err(dev, "Failed to register client: %d\n", ret); - return; + goto err_drm_client_init; } /* @@ -484,5 +482,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); drm_client_register(&fb_helper->client); + + return; + +err_drm_client_init: + drm_fb_helper_unprepare(fb_helper); + kfree(fb_helper); + return; } EXPORT_SYMBOL(drm_fbdev_generic_setup); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:25 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:25 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Initialize the fb-helper structure immediately after its allocation > in drm_fbdev_generic_setup(). That will make it easier to fill it with > driver-specific values, such as the preferred BPP. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- [...] > @@ -456,12 +454,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, > fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); > if (!fb_helper) > return; Maybe add a new line here? > + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup @ 2023-01-25 9:25 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:25 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > Initialize the fb-helper structure immediately after its allocation > in drm_fbdev_generic_setup(). That will make it easier to fill it with > driver-specific values, such as the preferred BPP. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- [...] > @@ -456,12 +454,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, > fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); > if (!fb_helper) > return; Maybe add a new line here? > + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup @ 2023-01-25 9:25 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:25 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > Initialize the fb-helper structure immediately after its allocation > in drm_fbdev_generic_setup(). That will make it easier to fill it with > driver-specific values, such as the preferred BPP. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- [...] > @@ -456,12 +454,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, > fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); > if (!fb_helper) > return; Maybe add a new line here? > + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 04/10] drm/fbdev-generic: Initialize fb-helper structure in generic setup @ 2023-01-25 9:25 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:25 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Initialize the fb-helper structure immediately after its allocation > in drm_fbdev_generic_setup(). That will make it easier to fill it with > driver-specific values, such as the preferred BPP. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- [...] > @@ -456,12 +454,12 @@ void drm_fbdev_generic_setup(struct drm_device *dev, > fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); > if (!fb_helper) > return; Maybe add a new line here? > + drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); > Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Store the console's preferred BPP value in struct drm_fb_helper and remove the respective function parameters from the internal fbdev code. The BPP value is only required as a fallback and will now always be available in the fb-helper instance. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 4379bcd7718b..258103d317ac 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1786,7 +1786,7 @@ static uint32_t drm_fb_helper_find_color_mode_format(struct drm_fb_helper *fb_he return drm_fb_helper_find_format(fb_helper, formats, format_count, bpp, depth); } -static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferred_bpp, +static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes) { struct drm_client_dev *client = &fb_helper->client; @@ -1831,7 +1831,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int prefe surface_format = drm_fb_helper_find_color_mode_format(fb_helper, plane->format_types, plane->format_count, - preferred_bpp); + fb_helper->preferred_bpp); if (surface_format != DRM_FORMAT_INVALID) break; /* found supported format */ } @@ -1903,7 +1903,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int prefe return 0; } -static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferred_bpp, +static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes) { struct drm_client_dev *client = &fb_helper->client; @@ -1912,7 +1912,7 @@ static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferr int ret; mutex_lock(&client->modeset_mutex); - ret = __drm_fb_helper_find_sizes(fb_helper, preferred_bpp, sizes); + ret = __drm_fb_helper_find_sizes(fb_helper, sizes); mutex_unlock(&client->modeset_mutex); if (ret) @@ -1934,15 +1934,14 @@ static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferr * Allocates the backing storage and sets up the fbdev info structure through * the ->fb_probe callback. */ -static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper, - int preferred_bpp) +static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper) { struct drm_client_dev *client = &fb_helper->client; struct drm_device *dev = fb_helper->dev; struct drm_fb_helper_surface_size sizes; int ret; - ret = drm_fb_helper_find_sizes(fb_helper, preferred_bpp, &sizes); + ret = drm_fb_helper_find_sizes(fb_helper, &sizes); if (ret) { /* First time: disable all crtc's.. */ if (!fb_helper->deferred_setup) @@ -2125,8 +2124,7 @@ static void drm_setup_crtcs_fb(struct drm_fb_helper *fb_helper) /* Note: Drops fb_helper->lock before returning. */ static int -__drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper, - int bpp_sel) +__drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) { struct drm_device *dev = fb_helper->dev; struct fb_info *info; @@ -2137,10 +2135,9 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper, height = dev->mode_config.max_height; drm_client_modeset_probe(&fb_helper->client, width, height); - ret = drm_fb_helper_single_fb_probe(fb_helper, bpp_sel); + ret = drm_fb_helper_single_fb_probe(fb_helper); if (ret < 0) { if (ret == -EAGAIN) { - fb_helper->preferred_bpp = bpp_sel; fb_helper->deferred_setup = true; ret = 0; } @@ -2231,8 +2228,10 @@ int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel) if (!drm_fbdev_emulation) return 0; + fb_helper->preferred_bpp = bpp_sel; + mutex_lock(&fb_helper->lock); - ret = __drm_fb_helper_initial_config_and_unlock(fb_helper, bpp_sel); + ret = __drm_fb_helper_initial_config_and_unlock(fb_helper); return ret; } @@ -2268,8 +2267,7 @@ int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper) mutex_lock(&fb_helper->lock); if (fb_helper->deferred_setup) { - err = __drm_fb_helper_initial_config_and_unlock(fb_helper, - fb_helper->preferred_bpp); + err = __drm_fb_helper_initial_config_and_unlock(fb_helper); return err; } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Store the console's preferred BPP value in struct drm_fb_helper and remove the respective function parameters from the internal fbdev code. The BPP value is only required as a fallback and will now always be available in the fb-helper instance. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 4379bcd7718b..258103d317ac 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1786,7 +1786,7 @@ static uint32_t drm_fb_helper_find_color_mode_format(struct drm_fb_helper *fb_he return drm_fb_helper_find_format(fb_helper, formats, format_count, bpp, depth); } -static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferred_bpp, +static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes) { struct drm_client_dev *client = &fb_helper->client; @@ -1831,7 +1831,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int prefe surface_format = drm_fb_helper_find_color_mode_format(fb_helper, plane->format_types, plane->format_count, - preferred_bpp); + fb_helper->preferred_bpp); if (surface_format != DRM_FORMAT_INVALID) break; /* found supported format */ } @@ -1903,7 +1903,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int prefe return 0; } -static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferred_bpp, +static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes) { struct drm_client_dev *client = &fb_helper->client; @@ -1912,7 +1912,7 @@ static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferr int ret; mutex_lock(&client->modeset_mutex); - ret = __drm_fb_helper_find_sizes(fb_helper, preferred_bpp, sizes); + ret = __drm_fb_helper_find_sizes(fb_helper, sizes); mutex_unlock(&client->modeset_mutex); if (ret) @@ -1934,15 +1934,14 @@ static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferr * Allocates the backing storage and sets up the fbdev info structure through * the ->fb_probe callback. */ -static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper, - int preferred_bpp) +static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper) { struct drm_client_dev *client = &fb_helper->client; struct drm_device *dev = fb_helper->dev; struct drm_fb_helper_surface_size sizes; int ret; - ret = drm_fb_helper_find_sizes(fb_helper, preferred_bpp, &sizes); + ret = drm_fb_helper_find_sizes(fb_helper, &sizes); if (ret) { /* First time: disable all crtc's.. */ if (!fb_helper->deferred_setup) @@ -2125,8 +2124,7 @@ static void drm_setup_crtcs_fb(struct drm_fb_helper *fb_helper) /* Note: Drops fb_helper->lock before returning. */ static int -__drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper, - int bpp_sel) +__drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) { struct drm_device *dev = fb_helper->dev; struct fb_info *info; @@ -2137,10 +2135,9 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper, height = dev->mode_config.max_height; drm_client_modeset_probe(&fb_helper->client, width, height); - ret = drm_fb_helper_single_fb_probe(fb_helper, bpp_sel); + ret = drm_fb_helper_single_fb_probe(fb_helper); if (ret < 0) { if (ret == -EAGAIN) { - fb_helper->preferred_bpp = bpp_sel; fb_helper->deferred_setup = true; ret = 0; } @@ -2231,8 +2228,10 @@ int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel) if (!drm_fbdev_emulation) return 0; + fb_helper->preferred_bpp = bpp_sel; + mutex_lock(&fb_helper->lock); - ret = __drm_fb_helper_initial_config_and_unlock(fb_helper, bpp_sel); + ret = __drm_fb_helper_initial_config_and_unlock(fb_helper); return ret; } @@ -2268,8 +2267,7 @@ int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper) mutex_lock(&fb_helper->lock); if (fb_helper->deferred_setup) { - err = __drm_fb_helper_initial_config_and_unlock(fb_helper, - fb_helper->preferred_bpp); + err = __drm_fb_helper_initial_config_and_unlock(fb_helper); return err; } -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Store the console's preferred BPP value in struct drm_fb_helper and remove the respective function parameters from the internal fbdev code. The BPP value is only required as a fallback and will now always be available in the fb-helper instance. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 4379bcd7718b..258103d317ac 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1786,7 +1786,7 @@ static uint32_t drm_fb_helper_find_color_mode_format(struct drm_fb_helper *fb_he return drm_fb_helper_find_format(fb_helper, formats, format_count, bpp, depth); } -static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferred_bpp, +static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes) { struct drm_client_dev *client = &fb_helper->client; @@ -1831,7 +1831,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int prefe surface_format = drm_fb_helper_find_color_mode_format(fb_helper, plane->format_types, plane->format_count, - preferred_bpp); + fb_helper->preferred_bpp); if (surface_format != DRM_FORMAT_INVALID) break; /* found supported format */ } @@ -1903,7 +1903,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int prefe return 0; } -static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferred_bpp, +static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes) { struct drm_client_dev *client = &fb_helper->client; @@ -1912,7 +1912,7 @@ static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferr int ret; mutex_lock(&client->modeset_mutex); - ret = __drm_fb_helper_find_sizes(fb_helper, preferred_bpp, sizes); + ret = __drm_fb_helper_find_sizes(fb_helper, sizes); mutex_unlock(&client->modeset_mutex); if (ret) @@ -1934,15 +1934,14 @@ static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferr * Allocates the backing storage and sets up the fbdev info structure through * the ->fb_probe callback. */ -static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper, - int preferred_bpp) +static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper) { struct drm_client_dev *client = &fb_helper->client; struct drm_device *dev = fb_helper->dev; struct drm_fb_helper_surface_size sizes; int ret; - ret = drm_fb_helper_find_sizes(fb_helper, preferred_bpp, &sizes); + ret = drm_fb_helper_find_sizes(fb_helper, &sizes); if (ret) { /* First time: disable all crtc's.. */ if (!fb_helper->deferred_setup) @@ -2125,8 +2124,7 @@ static void drm_setup_crtcs_fb(struct drm_fb_helper *fb_helper) /* Note: Drops fb_helper->lock before returning. */ static int -__drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper, - int bpp_sel) +__drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) { struct drm_device *dev = fb_helper->dev; struct fb_info *info; @@ -2137,10 +2135,9 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper, height = dev->mode_config.max_height; drm_client_modeset_probe(&fb_helper->client, width, height); - ret = drm_fb_helper_single_fb_probe(fb_helper, bpp_sel); + ret = drm_fb_helper_single_fb_probe(fb_helper); if (ret < 0) { if (ret == -EAGAIN) { - fb_helper->preferred_bpp = bpp_sel; fb_helper->deferred_setup = true; ret = 0; } @@ -2231,8 +2228,10 @@ int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel) if (!drm_fbdev_emulation) return 0; + fb_helper->preferred_bpp = bpp_sel; + mutex_lock(&fb_helper->lock); - ret = __drm_fb_helper_initial_config_and_unlock(fb_helper, bpp_sel); + ret = __drm_fb_helper_initial_config_and_unlock(fb_helper); return ret; } @@ -2268,8 +2267,7 @@ int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper) mutex_lock(&fb_helper->lock); if (fb_helper->deferred_setup) { - err = __drm_fb_helper_initial_config_and_unlock(fb_helper, - fb_helper->preferred_bpp); + err = __drm_fb_helper_initial_config_and_unlock(fb_helper); return err; } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Store the console's preferred BPP value in struct drm_fb_helper and remove the respective function parameters from the internal fbdev code. The BPP value is only required as a fallback and will now always be available in the fb-helper instance. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fb_helper.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 4379bcd7718b..258103d317ac 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1786,7 +1786,7 @@ static uint32_t drm_fb_helper_find_color_mode_format(struct drm_fb_helper *fb_he return drm_fb_helper_find_format(fb_helper, formats, format_count, bpp, depth); } -static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferred_bpp, +static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes) { struct drm_client_dev *client = &fb_helper->client; @@ -1831,7 +1831,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int prefe surface_format = drm_fb_helper_find_color_mode_format(fb_helper, plane->format_types, plane->format_count, - preferred_bpp); + fb_helper->preferred_bpp); if (surface_format != DRM_FORMAT_INVALID) break; /* found supported format */ } @@ -1903,7 +1903,7 @@ static int __drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int prefe return 0; } -static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferred_bpp, +static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes) { struct drm_client_dev *client = &fb_helper->client; @@ -1912,7 +1912,7 @@ static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferr int ret; mutex_lock(&client->modeset_mutex); - ret = __drm_fb_helper_find_sizes(fb_helper, preferred_bpp, sizes); + ret = __drm_fb_helper_find_sizes(fb_helper, sizes); mutex_unlock(&client->modeset_mutex); if (ret) @@ -1934,15 +1934,14 @@ static int drm_fb_helper_find_sizes(struct drm_fb_helper *fb_helper, int preferr * Allocates the backing storage and sets up the fbdev info structure through * the ->fb_probe callback. */ -static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper, - int preferred_bpp) +static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper) { struct drm_client_dev *client = &fb_helper->client; struct drm_device *dev = fb_helper->dev; struct drm_fb_helper_surface_size sizes; int ret; - ret = drm_fb_helper_find_sizes(fb_helper, preferred_bpp, &sizes); + ret = drm_fb_helper_find_sizes(fb_helper, &sizes); if (ret) { /* First time: disable all crtc's.. */ if (!fb_helper->deferred_setup) @@ -2125,8 +2124,7 @@ static void drm_setup_crtcs_fb(struct drm_fb_helper *fb_helper) /* Note: Drops fb_helper->lock before returning. */ static int -__drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper, - int bpp_sel) +__drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) { struct drm_device *dev = fb_helper->dev; struct fb_info *info; @@ -2137,10 +2135,9 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper, height = dev->mode_config.max_height; drm_client_modeset_probe(&fb_helper->client, width, height); - ret = drm_fb_helper_single_fb_probe(fb_helper, bpp_sel); + ret = drm_fb_helper_single_fb_probe(fb_helper); if (ret < 0) { if (ret == -EAGAIN) { - fb_helper->preferred_bpp = bpp_sel; fb_helper->deferred_setup = true; ret = 0; } @@ -2231,8 +2228,10 @@ int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel) if (!drm_fbdev_emulation) return 0; + fb_helper->preferred_bpp = bpp_sel; + mutex_lock(&fb_helper->lock); - ret = __drm_fb_helper_initial_config_and_unlock(fb_helper, bpp_sel); + ret = __drm_fb_helper_initial_config_and_unlock(fb_helper); return ret; } @@ -2268,8 +2267,7 @@ int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper) mutex_lock(&fb_helper->lock); if (fb_helper->deferred_setup) { - err = __drm_fb_helper_initial_config_and_unlock(fb_helper, - fb_helper->preferred_bpp); + err = __drm_fb_helper_initial_config_and_unlock(fb_helper); return err; } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:31 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:31 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > Store the console's preferred BPP value in struct drm_fb_helper > and remove the respective function parameters from the internal > fbdev code. > > The BPP value is only required as a fallback and will now always > be available in the fb-helper instance. > > No functional changes. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- That's much better indeed. Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals @ 2023-01-25 9:31 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:31 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > Store the console's preferred BPP value in struct drm_fb_helper > and remove the respective function parameters from the internal > fbdev code. > > The BPP value is only required as a fallback and will now always > be available in the fb-helper instance. > > No functional changes. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- That's much better indeed. Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals @ 2023-01-25 9:31 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:31 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Store the console's preferred BPP value in struct drm_fb_helper > and remove the respective function parameters from the internal > fbdev code. > > The BPP value is only required as a fallback and will now always > be available in the fb-helper instance. > > No functional changes. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- That's much better indeed. Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 05/10] drm/fb-helper: Remove preferred_bpp parameter from fbdev internals @ 2023-01-25 9:31 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:31 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Store the console's preferred BPP value in struct drm_fb_helper > and remove the respective function parameters from the internal > fbdev code. > > The BPP value is only required as a fallback and will now always > be available in the fb-helper instance. > > No functional changes. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- That's much better indeed. Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Initialize the fb-helper's preferred_bpp field early from within drm_fb_helper_prepare(); instead of the later client hot-plugging callback. This simplifies the generic fbdev setup function. No real changes, but all drivers' fbdev code has to be adapted. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/armada/armada_fbdev.c | 4 ++-- drivers/gpu/drm/drm_fb_helper.c | 22 ++++++++++++++++++---- drivers/gpu/drm/drm_fbdev_generic.c | 19 ++----------------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 ++-- drivers/gpu/drm/gma500/framebuffer.c | 4 ++-- drivers/gpu/drm/i915/display/intel_fbdev.c | 11 ++++++----- drivers/gpu/drm/msm/msm_fbdev.c | 4 ++-- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 ++-- drivers/gpu/drm/radeon/radeon_fb.c | 4 ++-- drivers/gpu/drm/tegra/fb.c | 7 +++---- include/drm/drm_fb_helper.h | 3 ++- 11 files changed, 43 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c index 584cee123bd8..07e410c62b7a 100644 --- a/drivers/gpu/drm/armada/armada_fbdev.c +++ b/drivers/gpu/drm/armada/armada_fbdev.c @@ -129,7 +129,7 @@ int armada_fbdev_init(struct drm_device *dev) priv->fbdev = fbh; - drm_fb_helper_prepare(dev, fbh, &armada_fb_helper_funcs); + drm_fb_helper_prepare(dev, fbh, 32, &armada_fb_helper_funcs); ret = drm_fb_helper_init(dev, fbh); if (ret) { @@ -137,7 +137,7 @@ int armada_fbdev_init(struct drm_device *dev) goto err_fb_helper; } - ret = drm_fb_helper_initial_config(fbh, 32); + ret = drm_fb_helper_initial_config(fbh); if (ret) { DRM_ERROR("failed to set initial config\n"); goto err_fb_setup; diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 258103d317ac..28c428e9c530 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -416,14 +416,30 @@ static void drm_fb_helper_damage_work(struct work_struct *work) * drm_fb_helper_prepare - setup a drm_fb_helper structure * @dev: DRM device * @helper: driver-allocated fbdev helper structure to set up + * @preferred_bpp: Preferred bits per pixel for the device. * @funcs: pointer to structure of functions associate with this helper * * Sets up the bare minimum to make the framebuffer helper usable. This is * useful to implement race-free initialization of the polling helpers. */ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, + unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs) { + /* + * Pick a preferred bpp of 32 if no value has been given. This + * will select XRGB8888 for the framebuffer formats. All drivers + * have to support XRGB8888 for backwards compatibility with legacy + * userspace, so it's the safe choice here. + * + * TODO: Replace struct drm_mode_config.preferred_depth and this + * bpp value with a preferred format that is given as struct + * drm_format_info. Then derive all other values from the + * format. + */ + if (!preferred_bpp) + preferred_bpp = 32; + INIT_LIST_HEAD(&helper->kernel_fb_list); spin_lock_init(&helper->damage_lock); INIT_WORK(&helper->resume_work, drm_fb_helper_resume_worker); @@ -432,6 +448,7 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, mutex_init(&helper->lock); helper->funcs = funcs; helper->dev = dev; + helper->preferred_bpp = preferred_bpp; } EXPORT_SYMBOL(drm_fb_helper_prepare); @@ -2183,7 +2200,6 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) /** * drm_fb_helper_initial_config - setup a sane initial connector configuration * @fb_helper: fb_helper device struct - * @bpp_sel: bpp value to use for the framebuffer configuration * * Scans the CRTCs and connectors and tries to put together an initial setup. * At the moment, this is a cloned configuration across all heads with @@ -2221,15 +2237,13 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) * RETURNS: * Zero if everything went ok, nonzero otherwise. */ -int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel) +int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper) { int ret; if (!drm_fbdev_emulation) return 0; - fb_helper->preferred_bpp = bpp_sel; - mutex_lock(&fb_helper->lock); ret = __drm_fb_helper_initial_config_and_unlock(fb_helper); diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 63f66325a8a5..6ae014040df3 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -392,7 +392,7 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); - ret = drm_fb_helper_initial_config(fb_helper, fb_helper->preferred_bpp); + ret = drm_fb_helper_initial_config(fb_helper); if (ret) goto err_cleanup; @@ -454,7 +454,7 @@ void drm_fbdev_generic_setup(struct drm_device *dev, fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); + drm_fb_helper_prepare(dev, fb_helper, preferred_bpp, &drm_fb_helper_generic_funcs); ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs); if (ret) { @@ -462,21 +462,6 @@ void drm_fbdev_generic_setup(struct drm_device *dev, goto err_drm_client_init; } - /* - * Pick a preferred bpp of 32 if no value has been given. This - * will select XRGB8888 for the framebuffer formats. All drivers - * have to support XRGB8888 for backwards compatibility with legacy - * userspace, so it's the safe choice here. - * - * TODO: Replace struct drm_mode_config.preferred_depth and this - * bpp value with a preferred format that is given as struct - * drm_format_info. Then derive all other values from the - * format. - */ - if (!preferred_bpp) - preferred_bpp = 32; - fb_helper->preferred_bpp = preferred_bpp; - ret = drm_fbdev_client_hotplug(&fb_helper->client); if (ret) drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 55c92372fca0..b89e33af8da8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -163,7 +163,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev) private->fb_helper = helper = &fbdev->drm_fb_helper; - drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, PREFERRED_BPP, &exynos_drm_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret < 0) { @@ -172,7 +172,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev) goto err_init; } - ret = drm_fb_helper_initial_config(helper, PREFERRED_BPP); + ret = drm_fb_helper_initial_config(helper); if (ret < 0) { DRM_DEV_ERROR(dev->dev, "failed to set up hw configuration.\n"); diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index 52ae3ade9a61..1f04c07ee180 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c @@ -409,7 +409,7 @@ int psb_fbdev_init(struct drm_device *dev) dev_priv->fb_helper = fb_helper; - drm_fb_helper_prepare(dev, fb_helper, &psb_fb_helper_funcs); + drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); ret = drm_fb_helper_init(dev, fb_helper); if (ret) @@ -418,7 +418,7 @@ int psb_fbdev_init(struct drm_device *dev) /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(dev); - ret = drm_fb_helper_initial_config(fb_helper, 32); + ret = drm_fb_helper_initial_config(fb_helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index 19f3b5d92a55..ed197db5861d 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -520,10 +520,12 @@ int intel_fbdev_init(struct drm_device *dev) return -ENOMEM; mutex_init(&ifbdev->hpd_lock); - drm_fb_helper_prepare(dev, &ifbdev->helper, &intel_fb_helper_funcs); + drm_fb_helper_prepare(dev, &ifbdev->helper, 32, &intel_fb_helper_funcs); - if (!intel_fbdev_init_bios(dev, ifbdev)) - ifbdev->preferred_bpp = 32; + if (intel_fbdev_init_bios(dev, ifbdev)) + ifbdev->helper.preferred_bpp = ifbdev->preferred_bpp; + else + ifbdev->preferred_bpp = ifbdev->helper.preferred_bpp; ret = drm_fb_helper_init(dev, &ifbdev->helper); if (ret) { @@ -542,8 +544,7 @@ static void intel_fbdev_initial_config(void *data, async_cookie_t cookie) struct intel_fbdev *ifbdev = data; /* Due to peculiar init order wrt to hpd handling this is separate. */ - if (drm_fb_helper_initial_config(&ifbdev->helper, - ifbdev->preferred_bpp)) + if (drm_fb_helper_initial_config(&ifbdev->helper)) intel_fbdev_unregister(to_i915(ifbdev->helper.dev)); } diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c index 31e1e30cb52a..915b213f3a5c 100644 --- a/drivers/gpu/drm/msm/msm_fbdev.c +++ b/drivers/gpu/drm/msm/msm_fbdev.c @@ -146,7 +146,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) helper = &fbdev->base; - drm_fb_helper_prepare(dev, helper, &msm_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, 32, &msm_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret) { @@ -159,7 +159,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) if (ret) goto fini; - ret = drm_fb_helper_initial_config(helper, 32); + ret = drm_fb_helper_initial_config(helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c index 98d8758048fc..fc5f52d567c6 100644 --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c @@ -239,13 +239,13 @@ void omap_fbdev_init(struct drm_device *dev) helper = &fbdev->base; - drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, 32, &omap_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret) goto fail; - ret = drm_fb_helper_initial_config(helper, 32); + ret = drm_fb_helper_initial_config(helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index fe4087bfdb3c..6e5eed0e157c 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c @@ -348,7 +348,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) rfbdev->rdev = rdev; rdev->mode_info.rfbdev = rfbdev; - drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, + drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, bpp_sel, &radeon_fb_helper_funcs); ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper); @@ -358,7 +358,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(rdev->ddev); - ret = drm_fb_helper_initial_config(&rfbdev->helper, bpp_sel); + ret = drm_fb_helper_initial_config(&rfbdev->helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index a900300ae5bd..153c39c32c71 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c @@ -308,7 +308,7 @@ static struct tegra_fbdev *tegra_fbdev_create(struct drm_device *drm) return ERR_PTR(-ENOMEM); } - drm_fb_helper_prepare(drm, &fbdev->base, &tegra_fb_helper_funcs); + drm_fb_helper_prepare(drm, &fbdev->base, 32, &tegra_fb_helper_funcs); return fbdev; } @@ -319,7 +319,6 @@ static void tegra_fbdev_free(struct tegra_fbdev *fbdev) } static int tegra_fbdev_init(struct tegra_fbdev *fbdev, - unsigned int preferred_bpp, unsigned int num_crtc, unsigned int max_connectors) { @@ -333,7 +332,7 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev, return err; } - err = drm_fb_helper_initial_config(&fbdev->base, preferred_bpp); + err = drm_fb_helper_initial_config(&fbdev->base); if (err < 0) { dev_err(drm->dev, "failed to set initial configuration: %d\n", err); @@ -396,7 +395,7 @@ int tegra_drm_fb_init(struct drm_device *drm) struct tegra_drm *tegra = drm->dev_private; int err; - err = tegra_fbdev_init(tegra->fbdev, 32, drm->mode_config.num_crtc, + err = tegra_fbdev_init(tegra->fbdev, drm->mode_config.num_crtc, drm->mode_config.num_connector); if (err < 0) return err; diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 39710c570a04..9604e67c2838 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -229,6 +229,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, + unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs); void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); @@ -284,7 +285,7 @@ int drm_fb_helper_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg); int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper); -int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel); +int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper); int drm_fb_helper_debug_enter(struct fb_info *info); int drm_fb_helper_debug_leave(struct fb_info *info); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Initialize the fb-helper's preferred_bpp field early from within drm_fb_helper_prepare(); instead of the later client hot-plugging callback. This simplifies the generic fbdev setup function. No real changes, but all drivers' fbdev code has to be adapted. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/armada/armada_fbdev.c | 4 ++-- drivers/gpu/drm/drm_fb_helper.c | 22 ++++++++++++++++++---- drivers/gpu/drm/drm_fbdev_generic.c | 19 ++----------------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 ++-- drivers/gpu/drm/gma500/framebuffer.c | 4 ++-- drivers/gpu/drm/i915/display/intel_fbdev.c | 11 ++++++----- drivers/gpu/drm/msm/msm_fbdev.c | 4 ++-- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 ++-- drivers/gpu/drm/radeon/radeon_fb.c | 4 ++-- drivers/gpu/drm/tegra/fb.c | 7 +++---- include/drm/drm_fb_helper.h | 3 ++- 11 files changed, 43 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c index 584cee123bd8..07e410c62b7a 100644 --- a/drivers/gpu/drm/armada/armada_fbdev.c +++ b/drivers/gpu/drm/armada/armada_fbdev.c @@ -129,7 +129,7 @@ int armada_fbdev_init(struct drm_device *dev) priv->fbdev = fbh; - drm_fb_helper_prepare(dev, fbh, &armada_fb_helper_funcs); + drm_fb_helper_prepare(dev, fbh, 32, &armada_fb_helper_funcs); ret = drm_fb_helper_init(dev, fbh); if (ret) { @@ -137,7 +137,7 @@ int armada_fbdev_init(struct drm_device *dev) goto err_fb_helper; } - ret = drm_fb_helper_initial_config(fbh, 32); + ret = drm_fb_helper_initial_config(fbh); if (ret) { DRM_ERROR("failed to set initial config\n"); goto err_fb_setup; diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 258103d317ac..28c428e9c530 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -416,14 +416,30 @@ static void drm_fb_helper_damage_work(struct work_struct *work) * drm_fb_helper_prepare - setup a drm_fb_helper structure * @dev: DRM device * @helper: driver-allocated fbdev helper structure to set up + * @preferred_bpp: Preferred bits per pixel for the device. * @funcs: pointer to structure of functions associate with this helper * * Sets up the bare minimum to make the framebuffer helper usable. This is * useful to implement race-free initialization of the polling helpers. */ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, + unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs) { + /* + * Pick a preferred bpp of 32 if no value has been given. This + * will select XRGB8888 for the framebuffer formats. All drivers + * have to support XRGB8888 for backwards compatibility with legacy + * userspace, so it's the safe choice here. + * + * TODO: Replace struct drm_mode_config.preferred_depth and this + * bpp value with a preferred format that is given as struct + * drm_format_info. Then derive all other values from the + * format. + */ + if (!preferred_bpp) + preferred_bpp = 32; + INIT_LIST_HEAD(&helper->kernel_fb_list); spin_lock_init(&helper->damage_lock); INIT_WORK(&helper->resume_work, drm_fb_helper_resume_worker); @@ -432,6 +448,7 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, mutex_init(&helper->lock); helper->funcs = funcs; helper->dev = dev; + helper->preferred_bpp = preferred_bpp; } EXPORT_SYMBOL(drm_fb_helper_prepare); @@ -2183,7 +2200,6 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) /** * drm_fb_helper_initial_config - setup a sane initial connector configuration * @fb_helper: fb_helper device struct - * @bpp_sel: bpp value to use for the framebuffer configuration * * Scans the CRTCs and connectors and tries to put together an initial setup. * At the moment, this is a cloned configuration across all heads with @@ -2221,15 +2237,13 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) * RETURNS: * Zero if everything went ok, nonzero otherwise. */ -int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel) +int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper) { int ret; if (!drm_fbdev_emulation) return 0; - fb_helper->preferred_bpp = bpp_sel; - mutex_lock(&fb_helper->lock); ret = __drm_fb_helper_initial_config_and_unlock(fb_helper); diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 63f66325a8a5..6ae014040df3 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -392,7 +392,7 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); - ret = drm_fb_helper_initial_config(fb_helper, fb_helper->preferred_bpp); + ret = drm_fb_helper_initial_config(fb_helper); if (ret) goto err_cleanup; @@ -454,7 +454,7 @@ void drm_fbdev_generic_setup(struct drm_device *dev, fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); + drm_fb_helper_prepare(dev, fb_helper, preferred_bpp, &drm_fb_helper_generic_funcs); ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs); if (ret) { @@ -462,21 +462,6 @@ void drm_fbdev_generic_setup(struct drm_device *dev, goto err_drm_client_init; } - /* - * Pick a preferred bpp of 32 if no value has been given. This - * will select XRGB8888 for the framebuffer formats. All drivers - * have to support XRGB8888 for backwards compatibility with legacy - * userspace, so it's the safe choice here. - * - * TODO: Replace struct drm_mode_config.preferred_depth and this - * bpp value with a preferred format that is given as struct - * drm_format_info. Then derive all other values from the - * format. - */ - if (!preferred_bpp) - preferred_bpp = 32; - fb_helper->preferred_bpp = preferred_bpp; - ret = drm_fbdev_client_hotplug(&fb_helper->client); if (ret) drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 55c92372fca0..b89e33af8da8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -163,7 +163,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev) private->fb_helper = helper = &fbdev->drm_fb_helper; - drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, PREFERRED_BPP, &exynos_drm_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret < 0) { @@ -172,7 +172,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev) goto err_init; } - ret = drm_fb_helper_initial_config(helper, PREFERRED_BPP); + ret = drm_fb_helper_initial_config(helper); if (ret < 0) { DRM_DEV_ERROR(dev->dev, "failed to set up hw configuration.\n"); diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index 52ae3ade9a61..1f04c07ee180 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c @@ -409,7 +409,7 @@ int psb_fbdev_init(struct drm_device *dev) dev_priv->fb_helper = fb_helper; - drm_fb_helper_prepare(dev, fb_helper, &psb_fb_helper_funcs); + drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); ret = drm_fb_helper_init(dev, fb_helper); if (ret) @@ -418,7 +418,7 @@ int psb_fbdev_init(struct drm_device *dev) /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(dev); - ret = drm_fb_helper_initial_config(fb_helper, 32); + ret = drm_fb_helper_initial_config(fb_helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index 19f3b5d92a55..ed197db5861d 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -520,10 +520,12 @@ int intel_fbdev_init(struct drm_device *dev) return -ENOMEM; mutex_init(&ifbdev->hpd_lock); - drm_fb_helper_prepare(dev, &ifbdev->helper, &intel_fb_helper_funcs); + drm_fb_helper_prepare(dev, &ifbdev->helper, 32, &intel_fb_helper_funcs); - if (!intel_fbdev_init_bios(dev, ifbdev)) - ifbdev->preferred_bpp = 32; + if (intel_fbdev_init_bios(dev, ifbdev)) + ifbdev->helper.preferred_bpp = ifbdev->preferred_bpp; + else + ifbdev->preferred_bpp = ifbdev->helper.preferred_bpp; ret = drm_fb_helper_init(dev, &ifbdev->helper); if (ret) { @@ -542,8 +544,7 @@ static void intel_fbdev_initial_config(void *data, async_cookie_t cookie) struct intel_fbdev *ifbdev = data; /* Due to peculiar init order wrt to hpd handling this is separate. */ - if (drm_fb_helper_initial_config(&ifbdev->helper, - ifbdev->preferred_bpp)) + if (drm_fb_helper_initial_config(&ifbdev->helper)) intel_fbdev_unregister(to_i915(ifbdev->helper.dev)); } diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c index 31e1e30cb52a..915b213f3a5c 100644 --- a/drivers/gpu/drm/msm/msm_fbdev.c +++ b/drivers/gpu/drm/msm/msm_fbdev.c @@ -146,7 +146,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) helper = &fbdev->base; - drm_fb_helper_prepare(dev, helper, &msm_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, 32, &msm_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret) { @@ -159,7 +159,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) if (ret) goto fini; - ret = drm_fb_helper_initial_config(helper, 32); + ret = drm_fb_helper_initial_config(helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c index 98d8758048fc..fc5f52d567c6 100644 --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c @@ -239,13 +239,13 @@ void omap_fbdev_init(struct drm_device *dev) helper = &fbdev->base; - drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, 32, &omap_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret) goto fail; - ret = drm_fb_helper_initial_config(helper, 32); + ret = drm_fb_helper_initial_config(helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index fe4087bfdb3c..6e5eed0e157c 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c @@ -348,7 +348,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) rfbdev->rdev = rdev; rdev->mode_info.rfbdev = rfbdev; - drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, + drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, bpp_sel, &radeon_fb_helper_funcs); ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper); @@ -358,7 +358,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(rdev->ddev); - ret = drm_fb_helper_initial_config(&rfbdev->helper, bpp_sel); + ret = drm_fb_helper_initial_config(&rfbdev->helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index a900300ae5bd..153c39c32c71 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c @@ -308,7 +308,7 @@ static struct tegra_fbdev *tegra_fbdev_create(struct drm_device *drm) return ERR_PTR(-ENOMEM); } - drm_fb_helper_prepare(drm, &fbdev->base, &tegra_fb_helper_funcs); + drm_fb_helper_prepare(drm, &fbdev->base, 32, &tegra_fb_helper_funcs); return fbdev; } @@ -319,7 +319,6 @@ static void tegra_fbdev_free(struct tegra_fbdev *fbdev) } static int tegra_fbdev_init(struct tegra_fbdev *fbdev, - unsigned int preferred_bpp, unsigned int num_crtc, unsigned int max_connectors) { @@ -333,7 +332,7 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev, return err; } - err = drm_fb_helper_initial_config(&fbdev->base, preferred_bpp); + err = drm_fb_helper_initial_config(&fbdev->base); if (err < 0) { dev_err(drm->dev, "failed to set initial configuration: %d\n", err); @@ -396,7 +395,7 @@ int tegra_drm_fb_init(struct drm_device *drm) struct tegra_drm *tegra = drm->dev_private; int err; - err = tegra_fbdev_init(tegra->fbdev, 32, drm->mode_config.num_crtc, + err = tegra_fbdev_init(tegra->fbdev, drm->mode_config.num_crtc, drm->mode_config.num_connector); if (err < 0) return err; diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 39710c570a04..9604e67c2838 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -229,6 +229,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, + unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs); void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); @@ -284,7 +285,7 @@ int drm_fb_helper_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg); int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper); -int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel); +int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper); int drm_fb_helper_debug_enter(struct fb_info *info); int drm_fb_helper_debug_leave(struct fb_info *info); -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Initialize the fb-helper's preferred_bpp field early from within drm_fb_helper_prepare(); instead of the later client hot-plugging callback. This simplifies the generic fbdev setup function. No real changes, but all drivers' fbdev code has to be adapted. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/armada/armada_fbdev.c | 4 ++-- drivers/gpu/drm/drm_fb_helper.c | 22 ++++++++++++++++++---- drivers/gpu/drm/drm_fbdev_generic.c | 19 ++----------------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 ++-- drivers/gpu/drm/gma500/framebuffer.c | 4 ++-- drivers/gpu/drm/i915/display/intel_fbdev.c | 11 ++++++----- drivers/gpu/drm/msm/msm_fbdev.c | 4 ++-- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 ++-- drivers/gpu/drm/radeon/radeon_fb.c | 4 ++-- drivers/gpu/drm/tegra/fb.c | 7 +++---- include/drm/drm_fb_helper.h | 3 ++- 11 files changed, 43 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c index 584cee123bd8..07e410c62b7a 100644 --- a/drivers/gpu/drm/armada/armada_fbdev.c +++ b/drivers/gpu/drm/armada/armada_fbdev.c @@ -129,7 +129,7 @@ int armada_fbdev_init(struct drm_device *dev) priv->fbdev = fbh; - drm_fb_helper_prepare(dev, fbh, &armada_fb_helper_funcs); + drm_fb_helper_prepare(dev, fbh, 32, &armada_fb_helper_funcs); ret = drm_fb_helper_init(dev, fbh); if (ret) { @@ -137,7 +137,7 @@ int armada_fbdev_init(struct drm_device *dev) goto err_fb_helper; } - ret = drm_fb_helper_initial_config(fbh, 32); + ret = drm_fb_helper_initial_config(fbh); if (ret) { DRM_ERROR("failed to set initial config\n"); goto err_fb_setup; diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 258103d317ac..28c428e9c530 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -416,14 +416,30 @@ static void drm_fb_helper_damage_work(struct work_struct *work) * drm_fb_helper_prepare - setup a drm_fb_helper structure * @dev: DRM device * @helper: driver-allocated fbdev helper structure to set up + * @preferred_bpp: Preferred bits per pixel for the device. * @funcs: pointer to structure of functions associate with this helper * * Sets up the bare minimum to make the framebuffer helper usable. This is * useful to implement race-free initialization of the polling helpers. */ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, + unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs) { + /* + * Pick a preferred bpp of 32 if no value has been given. This + * will select XRGB8888 for the framebuffer formats. All drivers + * have to support XRGB8888 for backwards compatibility with legacy + * userspace, so it's the safe choice here. + * + * TODO: Replace struct drm_mode_config.preferred_depth and this + * bpp value with a preferred format that is given as struct + * drm_format_info. Then derive all other values from the + * format. + */ + if (!preferred_bpp) + preferred_bpp = 32; + INIT_LIST_HEAD(&helper->kernel_fb_list); spin_lock_init(&helper->damage_lock); INIT_WORK(&helper->resume_work, drm_fb_helper_resume_worker); @@ -432,6 +448,7 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, mutex_init(&helper->lock); helper->funcs = funcs; helper->dev = dev; + helper->preferred_bpp = preferred_bpp; } EXPORT_SYMBOL(drm_fb_helper_prepare); @@ -2183,7 +2200,6 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) /** * drm_fb_helper_initial_config - setup a sane initial connector configuration * @fb_helper: fb_helper device struct - * @bpp_sel: bpp value to use for the framebuffer configuration * * Scans the CRTCs and connectors and tries to put together an initial setup. * At the moment, this is a cloned configuration across all heads with @@ -2221,15 +2237,13 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) * RETURNS: * Zero if everything went ok, nonzero otherwise. */ -int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel) +int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper) { int ret; if (!drm_fbdev_emulation) return 0; - fb_helper->preferred_bpp = bpp_sel; - mutex_lock(&fb_helper->lock); ret = __drm_fb_helper_initial_config_and_unlock(fb_helper); diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 63f66325a8a5..6ae014040df3 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -392,7 +392,7 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); - ret = drm_fb_helper_initial_config(fb_helper, fb_helper->preferred_bpp); + ret = drm_fb_helper_initial_config(fb_helper); if (ret) goto err_cleanup; @@ -454,7 +454,7 @@ void drm_fbdev_generic_setup(struct drm_device *dev, fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); + drm_fb_helper_prepare(dev, fb_helper, preferred_bpp, &drm_fb_helper_generic_funcs); ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs); if (ret) { @@ -462,21 +462,6 @@ void drm_fbdev_generic_setup(struct drm_device *dev, goto err_drm_client_init; } - /* - * Pick a preferred bpp of 32 if no value has been given. This - * will select XRGB8888 for the framebuffer formats. All drivers - * have to support XRGB8888 for backwards compatibility with legacy - * userspace, so it's the safe choice here. - * - * TODO: Replace struct drm_mode_config.preferred_depth and this - * bpp value with a preferred format that is given as struct - * drm_format_info. Then derive all other values from the - * format. - */ - if (!preferred_bpp) - preferred_bpp = 32; - fb_helper->preferred_bpp = preferred_bpp; - ret = drm_fbdev_client_hotplug(&fb_helper->client); if (ret) drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 55c92372fca0..b89e33af8da8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -163,7 +163,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev) private->fb_helper = helper = &fbdev->drm_fb_helper; - drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, PREFERRED_BPP, &exynos_drm_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret < 0) { @@ -172,7 +172,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev) goto err_init; } - ret = drm_fb_helper_initial_config(helper, PREFERRED_BPP); + ret = drm_fb_helper_initial_config(helper); if (ret < 0) { DRM_DEV_ERROR(dev->dev, "failed to set up hw configuration.\n"); diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index 52ae3ade9a61..1f04c07ee180 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c @@ -409,7 +409,7 @@ int psb_fbdev_init(struct drm_device *dev) dev_priv->fb_helper = fb_helper; - drm_fb_helper_prepare(dev, fb_helper, &psb_fb_helper_funcs); + drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); ret = drm_fb_helper_init(dev, fb_helper); if (ret) @@ -418,7 +418,7 @@ int psb_fbdev_init(struct drm_device *dev) /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(dev); - ret = drm_fb_helper_initial_config(fb_helper, 32); + ret = drm_fb_helper_initial_config(fb_helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index 19f3b5d92a55..ed197db5861d 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -520,10 +520,12 @@ int intel_fbdev_init(struct drm_device *dev) return -ENOMEM; mutex_init(&ifbdev->hpd_lock); - drm_fb_helper_prepare(dev, &ifbdev->helper, &intel_fb_helper_funcs); + drm_fb_helper_prepare(dev, &ifbdev->helper, 32, &intel_fb_helper_funcs); - if (!intel_fbdev_init_bios(dev, ifbdev)) - ifbdev->preferred_bpp = 32; + if (intel_fbdev_init_bios(dev, ifbdev)) + ifbdev->helper.preferred_bpp = ifbdev->preferred_bpp; + else + ifbdev->preferred_bpp = ifbdev->helper.preferred_bpp; ret = drm_fb_helper_init(dev, &ifbdev->helper); if (ret) { @@ -542,8 +544,7 @@ static void intel_fbdev_initial_config(void *data, async_cookie_t cookie) struct intel_fbdev *ifbdev = data; /* Due to peculiar init order wrt to hpd handling this is separate. */ - if (drm_fb_helper_initial_config(&ifbdev->helper, - ifbdev->preferred_bpp)) + if (drm_fb_helper_initial_config(&ifbdev->helper)) intel_fbdev_unregister(to_i915(ifbdev->helper.dev)); } diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c index 31e1e30cb52a..915b213f3a5c 100644 --- a/drivers/gpu/drm/msm/msm_fbdev.c +++ b/drivers/gpu/drm/msm/msm_fbdev.c @@ -146,7 +146,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) helper = &fbdev->base; - drm_fb_helper_prepare(dev, helper, &msm_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, 32, &msm_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret) { @@ -159,7 +159,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) if (ret) goto fini; - ret = drm_fb_helper_initial_config(helper, 32); + ret = drm_fb_helper_initial_config(helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c index 98d8758048fc..fc5f52d567c6 100644 --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c @@ -239,13 +239,13 @@ void omap_fbdev_init(struct drm_device *dev) helper = &fbdev->base; - drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, 32, &omap_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret) goto fail; - ret = drm_fb_helper_initial_config(helper, 32); + ret = drm_fb_helper_initial_config(helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index fe4087bfdb3c..6e5eed0e157c 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c @@ -348,7 +348,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) rfbdev->rdev = rdev; rdev->mode_info.rfbdev = rfbdev; - drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, + drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, bpp_sel, &radeon_fb_helper_funcs); ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper); @@ -358,7 +358,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(rdev->ddev); - ret = drm_fb_helper_initial_config(&rfbdev->helper, bpp_sel); + ret = drm_fb_helper_initial_config(&rfbdev->helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index a900300ae5bd..153c39c32c71 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c @@ -308,7 +308,7 @@ static struct tegra_fbdev *tegra_fbdev_create(struct drm_device *drm) return ERR_PTR(-ENOMEM); } - drm_fb_helper_prepare(drm, &fbdev->base, &tegra_fb_helper_funcs); + drm_fb_helper_prepare(drm, &fbdev->base, 32, &tegra_fb_helper_funcs); return fbdev; } @@ -319,7 +319,6 @@ static void tegra_fbdev_free(struct tegra_fbdev *fbdev) } static int tegra_fbdev_init(struct tegra_fbdev *fbdev, - unsigned int preferred_bpp, unsigned int num_crtc, unsigned int max_connectors) { @@ -333,7 +332,7 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev, return err; } - err = drm_fb_helper_initial_config(&fbdev->base, preferred_bpp); + err = drm_fb_helper_initial_config(&fbdev->base); if (err < 0) { dev_err(drm->dev, "failed to set initial configuration: %d\n", err); @@ -396,7 +395,7 @@ int tegra_drm_fb_init(struct drm_device *drm) struct tegra_drm *tegra = drm->dev_private; int err; - err = tegra_fbdev_init(tegra->fbdev, 32, drm->mode_config.num_crtc, + err = tegra_fbdev_init(tegra->fbdev, drm->mode_config.num_crtc, drm->mode_config.num_connector); if (err < 0) return err; diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 39710c570a04..9604e67c2838 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -229,6 +229,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, + unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs); void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); @@ -284,7 +285,7 @@ int drm_fb_helper_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg); int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper); -int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel); +int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper); int drm_fb_helper_debug_enter(struct fb_info *info); int drm_fb_helper_debug_leave(struct fb_info *info); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Initialize the fb-helper's preferred_bpp field early from within drm_fb_helper_prepare(); instead of the later client hot-plugging callback. This simplifies the generic fbdev setup function. No real changes, but all drivers' fbdev code has to be adapted. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/armada/armada_fbdev.c | 4 ++-- drivers/gpu/drm/drm_fb_helper.c | 22 ++++++++++++++++++---- drivers/gpu/drm/drm_fbdev_generic.c | 19 ++----------------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 ++-- drivers/gpu/drm/gma500/framebuffer.c | 4 ++-- drivers/gpu/drm/i915/display/intel_fbdev.c | 11 ++++++----- drivers/gpu/drm/msm/msm_fbdev.c | 4 ++-- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 ++-- drivers/gpu/drm/radeon/radeon_fb.c | 4 ++-- drivers/gpu/drm/tegra/fb.c | 7 +++---- include/drm/drm_fb_helper.h | 3 ++- 11 files changed, 43 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c index 584cee123bd8..07e410c62b7a 100644 --- a/drivers/gpu/drm/armada/armada_fbdev.c +++ b/drivers/gpu/drm/armada/armada_fbdev.c @@ -129,7 +129,7 @@ int armada_fbdev_init(struct drm_device *dev) priv->fbdev = fbh; - drm_fb_helper_prepare(dev, fbh, &armada_fb_helper_funcs); + drm_fb_helper_prepare(dev, fbh, 32, &armada_fb_helper_funcs); ret = drm_fb_helper_init(dev, fbh); if (ret) { @@ -137,7 +137,7 @@ int armada_fbdev_init(struct drm_device *dev) goto err_fb_helper; } - ret = drm_fb_helper_initial_config(fbh, 32); + ret = drm_fb_helper_initial_config(fbh); if (ret) { DRM_ERROR("failed to set initial config\n"); goto err_fb_setup; diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 258103d317ac..28c428e9c530 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -416,14 +416,30 @@ static void drm_fb_helper_damage_work(struct work_struct *work) * drm_fb_helper_prepare - setup a drm_fb_helper structure * @dev: DRM device * @helper: driver-allocated fbdev helper structure to set up + * @preferred_bpp: Preferred bits per pixel for the device. * @funcs: pointer to structure of functions associate with this helper * * Sets up the bare minimum to make the framebuffer helper usable. This is * useful to implement race-free initialization of the polling helpers. */ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, + unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs) { + /* + * Pick a preferred bpp of 32 if no value has been given. This + * will select XRGB8888 for the framebuffer formats. All drivers + * have to support XRGB8888 for backwards compatibility with legacy + * userspace, so it's the safe choice here. + * + * TODO: Replace struct drm_mode_config.preferred_depth and this + * bpp value with a preferred format that is given as struct + * drm_format_info. Then derive all other values from the + * format. + */ + if (!preferred_bpp) + preferred_bpp = 32; + INIT_LIST_HEAD(&helper->kernel_fb_list); spin_lock_init(&helper->damage_lock); INIT_WORK(&helper->resume_work, drm_fb_helper_resume_worker); @@ -432,6 +448,7 @@ void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, mutex_init(&helper->lock); helper->funcs = funcs; helper->dev = dev; + helper->preferred_bpp = preferred_bpp; } EXPORT_SYMBOL(drm_fb_helper_prepare); @@ -2183,7 +2200,6 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) /** * drm_fb_helper_initial_config - setup a sane initial connector configuration * @fb_helper: fb_helper device struct - * @bpp_sel: bpp value to use for the framebuffer configuration * * Scans the CRTCs and connectors and tries to put together an initial setup. * At the moment, this is a cloned configuration across all heads with @@ -2221,15 +2237,13 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) * RETURNS: * Zero if everything went ok, nonzero otherwise. */ -int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel) +int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper) { int ret; if (!drm_fbdev_emulation) return 0; - fb_helper->preferred_bpp = bpp_sel; - mutex_lock(&fb_helper->lock); ret = __drm_fb_helper_initial_config_and_unlock(fb_helper); diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 63f66325a8a5..6ae014040df3 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -392,7 +392,7 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); - ret = drm_fb_helper_initial_config(fb_helper, fb_helper->preferred_bpp); + ret = drm_fb_helper_initial_config(fb_helper); if (ret) goto err_cleanup; @@ -454,7 +454,7 @@ void drm_fbdev_generic_setup(struct drm_device *dev, fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; - drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs); + drm_fb_helper_prepare(dev, fb_helper, preferred_bpp, &drm_fb_helper_generic_funcs); ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs); if (ret) { @@ -462,21 +462,6 @@ void drm_fbdev_generic_setup(struct drm_device *dev, goto err_drm_client_init; } - /* - * Pick a preferred bpp of 32 if no value has been given. This - * will select XRGB8888 for the framebuffer formats. All drivers - * have to support XRGB8888 for backwards compatibility with legacy - * userspace, so it's the safe choice here. - * - * TODO: Replace struct drm_mode_config.preferred_depth and this - * bpp value with a preferred format that is given as struct - * drm_format_info. Then derive all other values from the - * format. - */ - if (!preferred_bpp) - preferred_bpp = 32; - fb_helper->preferred_bpp = preferred_bpp; - ret = drm_fbdev_client_hotplug(&fb_helper->client); if (ret) drm_dbg_kms(dev, "client hotplug ret=%d\n", ret); diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 55c92372fca0..b89e33af8da8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -163,7 +163,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev) private->fb_helper = helper = &fbdev->drm_fb_helper; - drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, PREFERRED_BPP, &exynos_drm_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret < 0) { @@ -172,7 +172,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev) goto err_init; } - ret = drm_fb_helper_initial_config(helper, PREFERRED_BPP); + ret = drm_fb_helper_initial_config(helper); if (ret < 0) { DRM_DEV_ERROR(dev->dev, "failed to set up hw configuration.\n"); diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index 52ae3ade9a61..1f04c07ee180 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c @@ -409,7 +409,7 @@ int psb_fbdev_init(struct drm_device *dev) dev_priv->fb_helper = fb_helper; - drm_fb_helper_prepare(dev, fb_helper, &psb_fb_helper_funcs); + drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); ret = drm_fb_helper_init(dev, fb_helper); if (ret) @@ -418,7 +418,7 @@ int psb_fbdev_init(struct drm_device *dev) /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(dev); - ret = drm_fb_helper_initial_config(fb_helper, 32); + ret = drm_fb_helper_initial_config(fb_helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index 19f3b5d92a55..ed197db5861d 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -520,10 +520,12 @@ int intel_fbdev_init(struct drm_device *dev) return -ENOMEM; mutex_init(&ifbdev->hpd_lock); - drm_fb_helper_prepare(dev, &ifbdev->helper, &intel_fb_helper_funcs); + drm_fb_helper_prepare(dev, &ifbdev->helper, 32, &intel_fb_helper_funcs); - if (!intel_fbdev_init_bios(dev, ifbdev)) - ifbdev->preferred_bpp = 32; + if (intel_fbdev_init_bios(dev, ifbdev)) + ifbdev->helper.preferred_bpp = ifbdev->preferred_bpp; + else + ifbdev->preferred_bpp = ifbdev->helper.preferred_bpp; ret = drm_fb_helper_init(dev, &ifbdev->helper); if (ret) { @@ -542,8 +544,7 @@ static void intel_fbdev_initial_config(void *data, async_cookie_t cookie) struct intel_fbdev *ifbdev = data; /* Due to peculiar init order wrt to hpd handling this is separate. */ - if (drm_fb_helper_initial_config(&ifbdev->helper, - ifbdev->preferred_bpp)) + if (drm_fb_helper_initial_config(&ifbdev->helper)) intel_fbdev_unregister(to_i915(ifbdev->helper.dev)); } diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c index 31e1e30cb52a..915b213f3a5c 100644 --- a/drivers/gpu/drm/msm/msm_fbdev.c +++ b/drivers/gpu/drm/msm/msm_fbdev.c @@ -146,7 +146,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) helper = &fbdev->base; - drm_fb_helper_prepare(dev, helper, &msm_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, 32, &msm_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret) { @@ -159,7 +159,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) if (ret) goto fini; - ret = drm_fb_helper_initial_config(helper, 32); + ret = drm_fb_helper_initial_config(helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c index 98d8758048fc..fc5f52d567c6 100644 --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c @@ -239,13 +239,13 @@ void omap_fbdev_init(struct drm_device *dev) helper = &fbdev->base; - drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs); + drm_fb_helper_prepare(dev, helper, 32, &omap_fb_helper_funcs); ret = drm_fb_helper_init(dev, helper); if (ret) goto fail; - ret = drm_fb_helper_initial_config(helper, 32); + ret = drm_fb_helper_initial_config(helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index fe4087bfdb3c..6e5eed0e157c 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c @@ -348,7 +348,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) rfbdev->rdev = rdev; rdev->mode_info.rfbdev = rfbdev; - drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, + drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, bpp_sel, &radeon_fb_helper_funcs); ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper); @@ -358,7 +358,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(rdev->ddev); - ret = drm_fb_helper_initial_config(&rfbdev->helper, bpp_sel); + ret = drm_fb_helper_initial_config(&rfbdev->helper); if (ret) goto fini; diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index a900300ae5bd..153c39c32c71 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c @@ -308,7 +308,7 @@ static struct tegra_fbdev *tegra_fbdev_create(struct drm_device *drm) return ERR_PTR(-ENOMEM); } - drm_fb_helper_prepare(drm, &fbdev->base, &tegra_fb_helper_funcs); + drm_fb_helper_prepare(drm, &fbdev->base, 32, &tegra_fb_helper_funcs); return fbdev; } @@ -319,7 +319,6 @@ static void tegra_fbdev_free(struct tegra_fbdev *fbdev) } static int tegra_fbdev_init(struct tegra_fbdev *fbdev, - unsigned int preferred_bpp, unsigned int num_crtc, unsigned int max_connectors) { @@ -333,7 +332,7 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev, return err; } - err = drm_fb_helper_initial_config(&fbdev->base, preferred_bpp); + err = drm_fb_helper_initial_config(&fbdev->base); if (err < 0) { dev_err(drm->dev, "failed to set initial configuration: %d\n", err); @@ -396,7 +395,7 @@ int tegra_drm_fb_init(struct drm_device *drm) struct tegra_drm *tegra = drm->dev_private; int err; - err = tegra_fbdev_init(tegra->fbdev, 32, drm->mode_config.num_crtc, + err = tegra_fbdev_init(tegra->fbdev, drm->mode_config.num_crtc, drm->mode_config.num_connector); if (err < 0) return err; diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 39710c570a04..9604e67c2838 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -229,6 +229,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, + unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs); void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper); int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); @@ -284,7 +285,7 @@ int drm_fb_helper_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg); int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper); -int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel); +int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper); int drm_fb_helper_debug_enter(struct fb_info *info); int drm_fb_helper_debug_leave(struct fb_info *info); -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function 2023-01-24 13:40 ` Thomas Zimmermann (?) @ 2023-01-25 4:51 ` kernel test robot -1 siblings, 0 replies; 99+ messages in thread From: kernel test robot @ 2023-01-25 4:51 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard, javierm Cc: llvm, oe-kbuild-all, linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Hi Thomas, I love your patch! Yet something to improve: [auto build test ERROR on 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570] url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 base: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 patch link: https://lore.kernel.org/r/20230124134010.30263-7-tzimmermann%40suse.de patch subject: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function config: riscv-randconfig-r042-20230123 (https://download.01.org/0day-ci/archive/20230125/202301251250.eyIn4zjn-lkp@intel.com/config) compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://github.com/intel-lab-lkp/linux/commit/70e38534e74e4d12bb02b3b352bba2aed417f541 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 git checkout 70e38534e74e4d12bb02b3b352bba2aed417f541 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/gpu/drm/radeon/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> drivers/gpu/drm/radeon/radeon_fb.c:352:10: error: too many arguments to function call, expected 3, have 4 &radeon_fb_helper_funcs); ^~~~~~~~~~~~~~~~~~~~~~~ include/drm/drm_fb_helper.h:295:20: note: 'drm_fb_helper_prepare' declared here static inline void drm_fb_helper_prepare(struct drm_device *dev, ^ >> drivers/gpu/drm/radeon/radeon_fb.c:361:52: error: too few arguments to function call, expected 2, have 1 ret = drm_fb_helper_initial_config(&rfbdev->helper); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ include/drm/drm_fb_helper.h:459:19: note: 'drm_fb_helper_initial_config' declared here static inline int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, ^ 2 errors generated. vim +352 drivers/gpu/drm/radeon/radeon_fb.c 386516744ba45d Dave Airlie 2010-03-30 326 386516744ba45d Dave Airlie 2010-03-30 327 int radeon_fbdev_init(struct radeon_device *rdev) 386516744ba45d Dave Airlie 2010-03-30 328 { 8be48d924c307e Dave Airlie 2010-03-30 329 struct radeon_fbdev *rfbdev; 4abe35204af82a Dave Airlie 2010-03-30 330 int bpp_sel = 32; 5a79395b2791cc Chris Wilson 2010-06-06 331 int ret; 4abe35204af82a Dave Airlie 2010-03-30 332 e5f243bd2edd95 Alex Deucher 2016-03-10 333 /* don't enable fbdev if no connectors */ e5f243bd2edd95 Alex Deucher 2016-03-10 334 if (list_empty(&rdev->ddev->mode_config.connector_list)) e5f243bd2edd95 Alex Deucher 2016-03-10 335 return 0; e5f243bd2edd95 Alex Deucher 2016-03-10 336 7b8bd6bb4298ac Egbert Eich 2017-07-18 337 /* select 8 bpp console on 8MB cards, or 16 bpp on RN50 or 32MB */ 7b8bd6bb4298ac Egbert Eich 2017-07-18 338 if (rdev->mc.real_vram_size <= (8*1024*1024)) 4abe35204af82a Dave Airlie 2010-03-30 339 bpp_sel = 8; 7b8bd6bb4298ac Egbert Eich 2017-07-18 340 else if (ASIC_IS_RN50(rdev) || 7b8bd6bb4298ac Egbert Eich 2017-07-18 341 rdev->mc.real_vram_size <= (32*1024*1024)) 7b8bd6bb4298ac Egbert Eich 2017-07-18 342 bpp_sel = 16; 8be48d924c307e Dave Airlie 2010-03-30 343 8be48d924c307e Dave Airlie 2010-03-30 344 rfbdev = kzalloc(sizeof(struct radeon_fbdev), GFP_KERNEL); 8be48d924c307e Dave Airlie 2010-03-30 345 if (!rfbdev) 8be48d924c307e Dave Airlie 2010-03-30 346 return -ENOMEM; 771fe6b912fca5 Jerome Glisse 2009-06-05 347 8be48d924c307e Dave Airlie 2010-03-30 348 rfbdev->rdev = rdev; 8be48d924c307e Dave Airlie 2010-03-30 349 rdev->mode_info.rfbdev = rfbdev; 10a231026574f9 Thierry Reding 2014-06-27 350 70e38534e74e4d Thomas Zimmermann 2023-01-24 351 drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, bpp_sel, 10a231026574f9 Thierry Reding 2014-06-27 @352 &radeon_fb_helper_funcs); 785b93ef8c3097 Dave Airlie 2009-08-28 353 2dea2d1182179e Pankaj Bharadiya 2020-03-05 354 ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 355 if (ret) 01934c2a691882 Thierry Reding 2014-12-19 356 goto free; 5a79395b2791cc Chris Wilson 2010-06-06 357 76a39dbfb2d1bc Daniel Vetter 2013-01-20 358 /* disable all the possible outputs/crtcs before entering KMS mode */ 76a39dbfb2d1bc Daniel Vetter 2013-01-20 359 drm_helper_disable_unused_functions(rdev->ddev); 76a39dbfb2d1bc Daniel Vetter 2013-01-20 360 70e38534e74e4d Thomas Zimmermann 2023-01-24 @361 ret = drm_fb_helper_initial_config(&rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 362 if (ret) 01934c2a691882 Thierry Reding 2014-12-19 363 goto fini; 01934c2a691882 Thierry Reding 2014-12-19 364 771fe6b912fca5 Jerome Glisse 2009-06-05 365 return 0; 01934c2a691882 Thierry Reding 2014-12-19 366 01934c2a691882 Thierry Reding 2014-12-19 367 fini: 01934c2a691882 Thierry Reding 2014-12-19 368 drm_fb_helper_fini(&rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 369 free: 01934c2a691882 Thierry Reding 2014-12-19 370 kfree(rfbdev); 01934c2a691882 Thierry Reding 2014-12-19 371 return ret; 386516744ba45d Dave Airlie 2010-03-30 372 } 386516744ba45d Dave Airlie 2010-03-30 373 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-25 4:51 ` kernel test robot 0 siblings, 0 replies; 99+ messages in thread From: kernel test robot @ 2023-01-25 4:51 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard, javierm Cc: llvm, oe-kbuild-all, linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Hi Thomas, I love your patch! Yet something to improve: [auto build test ERROR on 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570] url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 base: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 patch link: https://lore.kernel.org/r/20230124134010.30263-7-tzimmermann%40suse.de patch subject: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function config: riscv-randconfig-r042-20230123 (https://download.01.org/0day-ci/archive/20230125/202301251250.eyIn4zjn-lkp@intel.com/config) compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://github.com/intel-lab-lkp/linux/commit/70e38534e74e4d12bb02b3b352bba2aed417f541 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 git checkout 70e38534e74e4d12bb02b3b352bba2aed417f541 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/gpu/drm/radeon/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> drivers/gpu/drm/radeon/radeon_fb.c:352:10: error: too many arguments to function call, expected 3, have 4 &radeon_fb_helper_funcs); ^~~~~~~~~~~~~~~~~~~~~~~ include/drm/drm_fb_helper.h:295:20: note: 'drm_fb_helper_prepare' declared here static inline void drm_fb_helper_prepare(struct drm_device *dev, ^ >> drivers/gpu/drm/radeon/radeon_fb.c:361:52: error: too few arguments to function call, expected 2, have 1 ret = drm_fb_helper_initial_config(&rfbdev->helper); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ include/drm/drm_fb_helper.h:459:19: note: 'drm_fb_helper_initial_config' declared here static inline int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, ^ 2 errors generated. vim +352 drivers/gpu/drm/radeon/radeon_fb.c 386516744ba45d Dave Airlie 2010-03-30 326 386516744ba45d Dave Airlie 2010-03-30 327 int radeon_fbdev_init(struct radeon_device *rdev) 386516744ba45d Dave Airlie 2010-03-30 328 { 8be48d924c307e Dave Airlie 2010-03-30 329 struct radeon_fbdev *rfbdev; 4abe35204af82a Dave Airlie 2010-03-30 330 int bpp_sel = 32; 5a79395b2791cc Chris Wilson 2010-06-06 331 int ret; 4abe35204af82a Dave Airlie 2010-03-30 332 e5f243bd2edd95 Alex Deucher 2016-03-10 333 /* don't enable fbdev if no connectors */ e5f243bd2edd95 Alex Deucher 2016-03-10 334 if (list_empty(&rdev->ddev->mode_config.connector_list)) e5f243bd2edd95 Alex Deucher 2016-03-10 335 return 0; e5f243bd2edd95 Alex Deucher 2016-03-10 336 7b8bd6bb4298ac Egbert Eich 2017-07-18 337 /* select 8 bpp console on 8MB cards, or 16 bpp on RN50 or 32MB */ 7b8bd6bb4298ac Egbert Eich 2017-07-18 338 if (rdev->mc.real_vram_size <= (8*1024*1024)) 4abe35204af82a Dave Airlie 2010-03-30 339 bpp_sel = 8; 7b8bd6bb4298ac Egbert Eich 2017-07-18 340 else if (ASIC_IS_RN50(rdev) || 7b8bd6bb4298ac Egbert Eich 2017-07-18 341 rdev->mc.real_vram_size <= (32*1024*1024)) 7b8bd6bb4298ac Egbert Eich 2017-07-18 342 bpp_sel = 16; 8be48d924c307e Dave Airlie 2010-03-30 343 8be48d924c307e Dave Airlie 2010-03-30 344 rfbdev = kzalloc(sizeof(struct radeon_fbdev), GFP_KERNEL); 8be48d924c307e Dave Airlie 2010-03-30 345 if (!rfbdev) 8be48d924c307e Dave Airlie 2010-03-30 346 return -ENOMEM; 771fe6b912fca5 Jerome Glisse 2009-06-05 347 8be48d924c307e Dave Airlie 2010-03-30 348 rfbdev->rdev = rdev; 8be48d924c307e Dave Airlie 2010-03-30 349 rdev->mode_info.rfbdev = rfbdev; 10a231026574f9 Thierry Reding 2014-06-27 350 70e38534e74e4d Thomas Zimmermann 2023-01-24 351 drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, bpp_sel, 10a231026574f9 Thierry Reding 2014-06-27 @352 &radeon_fb_helper_funcs); 785b93ef8c3097 Dave Airlie 2009-08-28 353 2dea2d1182179e Pankaj Bharadiya 2020-03-05 354 ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 355 if (ret) 01934c2a691882 Thierry Reding 2014-12-19 356 goto free; 5a79395b2791cc Chris Wilson 2010-06-06 357 76a39dbfb2d1bc Daniel Vetter 2013-01-20 358 /* disable all the possible outputs/crtcs before entering KMS mode */ 76a39dbfb2d1bc Daniel Vetter 2013-01-20 359 drm_helper_disable_unused_functions(rdev->ddev); 76a39dbfb2d1bc Daniel Vetter 2013-01-20 360 70e38534e74e4d Thomas Zimmermann 2023-01-24 @361 ret = drm_fb_helper_initial_config(&rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 362 if (ret) 01934c2a691882 Thierry Reding 2014-12-19 363 goto fini; 01934c2a691882 Thierry Reding 2014-12-19 364 771fe6b912fca5 Jerome Glisse 2009-06-05 365 return 0; 01934c2a691882 Thierry Reding 2014-12-19 366 01934c2a691882 Thierry Reding 2014-12-19 367 fini: 01934c2a691882 Thierry Reding 2014-12-19 368 drm_fb_helper_fini(&rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 369 free: 01934c2a691882 Thierry Reding 2014-12-19 370 kfree(rfbdev); 01934c2a691882 Thierry Reding 2014-12-19 371 return ret; 386516744ba45d Dave Airlie 2010-03-30 372 } 386516744ba45d Dave Airlie 2010-03-30 373 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-25 4:51 ` kernel test robot 0 siblings, 0 replies; 99+ messages in thread From: kernel test robot @ 2023-01-25 4:51 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, llvm, dri-devel, amd-gfx, Thomas Zimmermann, oe-kbuild-all, linux-tegra, freedreno, linux-arm-kernel Hi Thomas, I love your patch! Yet something to improve: [auto build test ERROR on 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570] url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 base: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 patch link: https://lore.kernel.org/r/20230124134010.30263-7-tzimmermann%40suse.de patch subject: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function config: riscv-randconfig-r042-20230123 (https://download.01.org/0day-ci/archive/20230125/202301251250.eyIn4zjn-lkp@intel.com/config) compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://github.com/intel-lab-lkp/linux/commit/70e38534e74e4d12bb02b3b352bba2aed417f541 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 git checkout 70e38534e74e4d12bb02b3b352bba2aed417f541 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/gpu/drm/radeon/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> drivers/gpu/drm/radeon/radeon_fb.c:352:10: error: too many arguments to function call, expected 3, have 4 &radeon_fb_helper_funcs); ^~~~~~~~~~~~~~~~~~~~~~~ include/drm/drm_fb_helper.h:295:20: note: 'drm_fb_helper_prepare' declared here static inline void drm_fb_helper_prepare(struct drm_device *dev, ^ >> drivers/gpu/drm/radeon/radeon_fb.c:361:52: error: too few arguments to function call, expected 2, have 1 ret = drm_fb_helper_initial_config(&rfbdev->helper); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ include/drm/drm_fb_helper.h:459:19: note: 'drm_fb_helper_initial_config' declared here static inline int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, ^ 2 errors generated. vim +352 drivers/gpu/drm/radeon/radeon_fb.c 386516744ba45d Dave Airlie 2010-03-30 326 386516744ba45d Dave Airlie 2010-03-30 327 int radeon_fbdev_init(struct radeon_device *rdev) 386516744ba45d Dave Airlie 2010-03-30 328 { 8be48d924c307e Dave Airlie 2010-03-30 329 struct radeon_fbdev *rfbdev; 4abe35204af82a Dave Airlie 2010-03-30 330 int bpp_sel = 32; 5a79395b2791cc Chris Wilson 2010-06-06 331 int ret; 4abe35204af82a Dave Airlie 2010-03-30 332 e5f243bd2edd95 Alex Deucher 2016-03-10 333 /* don't enable fbdev if no connectors */ e5f243bd2edd95 Alex Deucher 2016-03-10 334 if (list_empty(&rdev->ddev->mode_config.connector_list)) e5f243bd2edd95 Alex Deucher 2016-03-10 335 return 0; e5f243bd2edd95 Alex Deucher 2016-03-10 336 7b8bd6bb4298ac Egbert Eich 2017-07-18 337 /* select 8 bpp console on 8MB cards, or 16 bpp on RN50 or 32MB */ 7b8bd6bb4298ac Egbert Eich 2017-07-18 338 if (rdev->mc.real_vram_size <= (8*1024*1024)) 4abe35204af82a Dave Airlie 2010-03-30 339 bpp_sel = 8; 7b8bd6bb4298ac Egbert Eich 2017-07-18 340 else if (ASIC_IS_RN50(rdev) || 7b8bd6bb4298ac Egbert Eich 2017-07-18 341 rdev->mc.real_vram_size <= (32*1024*1024)) 7b8bd6bb4298ac Egbert Eich 2017-07-18 342 bpp_sel = 16; 8be48d924c307e Dave Airlie 2010-03-30 343 8be48d924c307e Dave Airlie 2010-03-30 344 rfbdev = kzalloc(sizeof(struct radeon_fbdev), GFP_KERNEL); 8be48d924c307e Dave Airlie 2010-03-30 345 if (!rfbdev) 8be48d924c307e Dave Airlie 2010-03-30 346 return -ENOMEM; 771fe6b912fca5 Jerome Glisse 2009-06-05 347 8be48d924c307e Dave Airlie 2010-03-30 348 rfbdev->rdev = rdev; 8be48d924c307e Dave Airlie 2010-03-30 349 rdev->mode_info.rfbdev = rfbdev; 10a231026574f9 Thierry Reding 2014-06-27 350 70e38534e74e4d Thomas Zimmermann 2023-01-24 351 drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, bpp_sel, 10a231026574f9 Thierry Reding 2014-06-27 @352 &radeon_fb_helper_funcs); 785b93ef8c3097 Dave Airlie 2009-08-28 353 2dea2d1182179e Pankaj Bharadiya 2020-03-05 354 ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 355 if (ret) 01934c2a691882 Thierry Reding 2014-12-19 356 goto free; 5a79395b2791cc Chris Wilson 2010-06-06 357 76a39dbfb2d1bc Daniel Vetter 2013-01-20 358 /* disable all the possible outputs/crtcs before entering KMS mode */ 76a39dbfb2d1bc Daniel Vetter 2013-01-20 359 drm_helper_disable_unused_functions(rdev->ddev); 76a39dbfb2d1bc Daniel Vetter 2013-01-20 360 70e38534e74e4d Thomas Zimmermann 2023-01-24 @361 ret = drm_fb_helper_initial_config(&rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 362 if (ret) 01934c2a691882 Thierry Reding 2014-12-19 363 goto fini; 01934c2a691882 Thierry Reding 2014-12-19 364 771fe6b912fca5 Jerome Glisse 2009-06-05 365 return 0; 01934c2a691882 Thierry Reding 2014-12-19 366 01934c2a691882 Thierry Reding 2014-12-19 367 fini: 01934c2a691882 Thierry Reding 2014-12-19 368 drm_fb_helper_fini(&rfbdev->helper); 01934c2a691882 Thierry Reding 2014-12-19 369 free: 01934c2a691882 Thierry Reding 2014-12-19 370 kfree(rfbdev); 01934c2a691882 Thierry Reding 2014-12-19 371 return ret; 386516744ba45d Dave Airlie 2010-03-30 372 } 386516744ba45d Dave Airlie 2010-03-30 373 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:41 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:41 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Initialize the fb-helper's preferred_bpp field early from within > drm_fb_helper_prepare(); instead of the later client hot-plugging > callback. This simplifies the generic fbdev setup function. > > No real changes, but all drivers' fbdev code has to be adapted. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-25 9:41 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:41 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > Initialize the fb-helper's preferred_bpp field early from within > drm_fb_helper_prepare(); instead of the later client hot-plugging > callback. This simplifies the generic fbdev setup function. > > No real changes, but all drivers' fbdev code has to be adapted. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-25 9:41 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:41 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > Initialize the fb-helper's preferred_bpp field early from within > drm_fb_helper_prepare(); instead of the later client hot-plugging > callback. This simplifies the generic fbdev setup function. > > No real changes, but all drivers' fbdev code has to be adapted. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-25 9:41 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:41 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Initialize the fb-helper's preferred_bpp field early from within > drm_fb_helper_prepare(); instead of the later client hot-plugging > callback. This simplifies the generic fbdev setup function. > > No real changes, but all drivers' fbdev code has to be adapted. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function 2023-01-24 13:40 ` Thomas Zimmermann (?) @ 2023-01-25 12:12 ` kernel test robot -1 siblings, 0 replies; 99+ messages in thread From: kernel test robot @ 2023-01-25 12:12 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard, javierm Cc: llvm, oe-kbuild-all, linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Hi Thomas, I love your patch! Yet something to improve: [auto build test ERROR on 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570] url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 base: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 patch link: https://lore.kernel.org/r/20230124134010.30263-7-tzimmermann%40suse.de patch subject: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function config: x86_64-randconfig-a014-20230123 (https://download.01.org/0day-ci/archive/20230125/202301252016.vm7ksFra-lkp@intel.com/config) compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/70e38534e74e4d12bb02b3b352bba2aed417f541 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 git checkout 70e38534e74e4d12bb02b3b352bba2aed417f541 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/gma500/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> drivers/gpu/drm/gma500/framebuffer.c:412:44: error: too many arguments to function call, expected 3, have 4 drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); ~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~ include/drm/drm_fb_helper.h:295:20: note: 'drm_fb_helper_prepare' declared here static inline void drm_fb_helper_prepare(struct drm_device *dev, ^ >> drivers/gpu/drm/gma500/framebuffer.c:421:46: error: too few arguments to function call, expected 2, have 1 ret = drm_fb_helper_initial_config(fb_helper); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ include/drm/drm_fb_helper.h:459:19: note: 'drm_fb_helper_initial_config' declared here static inline int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, ^ 2 errors generated. vim +412 drivers/gpu/drm/gma500/framebuffer.c 397 398 int psb_fbdev_init(struct drm_device *dev) 399 { 400 struct drm_fb_helper *fb_helper; 401 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 402 int ret; 403 404 fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); 405 if (!fb_helper) { 406 dev_err(dev->dev, "no memory\n"); 407 return -ENOMEM; 408 } 409 410 dev_priv->fb_helper = fb_helper; 411 > 412 drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); 413 414 ret = drm_fb_helper_init(dev, fb_helper); 415 if (ret) 416 goto free; 417 418 /* disable all the possible outputs/crtcs before entering KMS mode */ 419 drm_helper_disable_unused_functions(dev); 420 > 421 ret = drm_fb_helper_initial_config(fb_helper); 422 if (ret) 423 goto fini; 424 425 return 0; 426 427 fini: 428 drm_fb_helper_fini(fb_helper); 429 free: 430 kfree(fb_helper); 431 return ret; 432 } 433 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-25 12:12 ` kernel test robot 0 siblings, 0 replies; 99+ messages in thread From: kernel test robot @ 2023-01-25 12:12 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard, javierm Cc: llvm, oe-kbuild-all, linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Hi Thomas, I love your patch! Yet something to improve: [auto build test ERROR on 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570] url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 base: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 patch link: https://lore.kernel.org/r/20230124134010.30263-7-tzimmermann%40suse.de patch subject: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function config: x86_64-randconfig-a014-20230123 (https://download.01.org/0day-ci/archive/20230125/202301252016.vm7ksFra-lkp@intel.com/config) compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/70e38534e74e4d12bb02b3b352bba2aed417f541 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 git checkout 70e38534e74e4d12bb02b3b352bba2aed417f541 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/gma500/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> drivers/gpu/drm/gma500/framebuffer.c:412:44: error: too many arguments to function call, expected 3, have 4 drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); ~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~ include/drm/drm_fb_helper.h:295:20: note: 'drm_fb_helper_prepare' declared here static inline void drm_fb_helper_prepare(struct drm_device *dev, ^ >> drivers/gpu/drm/gma500/framebuffer.c:421:46: error: too few arguments to function call, expected 2, have 1 ret = drm_fb_helper_initial_config(fb_helper); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ include/drm/drm_fb_helper.h:459:19: note: 'drm_fb_helper_initial_config' declared here static inline int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, ^ 2 errors generated. vim +412 drivers/gpu/drm/gma500/framebuffer.c 397 398 int psb_fbdev_init(struct drm_device *dev) 399 { 400 struct drm_fb_helper *fb_helper; 401 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 402 int ret; 403 404 fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); 405 if (!fb_helper) { 406 dev_err(dev->dev, "no memory\n"); 407 return -ENOMEM; 408 } 409 410 dev_priv->fb_helper = fb_helper; 411 > 412 drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); 413 414 ret = drm_fb_helper_init(dev, fb_helper); 415 if (ret) 416 goto free; 417 418 /* disable all the possible outputs/crtcs before entering KMS mode */ 419 drm_helper_disable_unused_functions(dev); 420 > 421 ret = drm_fb_helper_initial_config(fb_helper); 422 if (ret) 423 goto fini; 424 425 return 0; 426 427 fini: 428 drm_fb_helper_fini(fb_helper); 429 free: 430 kfree(fb_helper); 431 return ret; 432 } 433 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function @ 2023-01-25 12:12 ` kernel test robot 0 siblings, 0 replies; 99+ messages in thread From: kernel test robot @ 2023-01-25 12:12 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, llvm, dri-devel, amd-gfx, Thomas Zimmermann, oe-kbuild-all, linux-tegra, freedreno, linux-arm-kernel Hi Thomas, I love your patch! Yet something to improve: [auto build test ERROR on 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570] url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 base: 7d3e7f64a42d66ba8da6e7b66a8d85457ef84570 patch link: https://lore.kernel.org/r/20230124134010.30263-7-tzimmermann%40suse.de patch subject: [Intel-gfx] [PATCH v2 06/10] drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function config: x86_64-randconfig-a014-20230123 (https://download.01.org/0day-ci/archive/20230125/202301252016.vm7ksFra-lkp@intel.com/config) compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/70e38534e74e4d12bb02b3b352bba2aed417f541 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Thomas-Zimmermann/drm-client-Test-for-connectors-before-sending-hotplug-event/20230124-214220 git checkout 70e38534e74e4d12bb02b3b352bba2aed417f541 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/gma500/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> drivers/gpu/drm/gma500/framebuffer.c:412:44: error: too many arguments to function call, expected 3, have 4 drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); ~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~ include/drm/drm_fb_helper.h:295:20: note: 'drm_fb_helper_prepare' declared here static inline void drm_fb_helper_prepare(struct drm_device *dev, ^ >> drivers/gpu/drm/gma500/framebuffer.c:421:46: error: too few arguments to function call, expected 2, have 1 ret = drm_fb_helper_initial_config(fb_helper); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ include/drm/drm_fb_helper.h:459:19: note: 'drm_fb_helper_initial_config' declared here static inline int drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, ^ 2 errors generated. vim +412 drivers/gpu/drm/gma500/framebuffer.c 397 398 int psb_fbdev_init(struct drm_device *dev) 399 { 400 struct drm_fb_helper *fb_helper; 401 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 402 int ret; 403 404 fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); 405 if (!fb_helper) { 406 dev_err(dev->dev, "no memory\n"); 407 return -ENOMEM; 408 } 409 410 dev_priv->fb_helper = fb_helper; 411 > 412 drm_fb_helper_prepare(dev, fb_helper, 32, &psb_fb_helper_funcs); 413 414 ret = drm_fb_helper_init(dev, fb_helper); 415 if (ret) 416 goto free; 417 418 /* disable all the possible outputs/crtcs before entering KMS mode */ 419 drm_helper_disable_unused_functions(dev); 420 > 421 ret = drm_fb_helper_initial_config(fb_helper); 422 if (ret) 423 goto fini; 424 425 return 0; 426 427 fini: 428 drm_fb_helper_fini(fb_helper); 429 free: 430 kfree(fb_helper); 431 return ret; 432 } 433 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Call drm_fb_helper_init() in the generic-fbdev hotplug helper to revert the effects of drm_fb_helper_init(). No full cleanup is required. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 6ae014040df3..dd8be5e0f271 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -387,25 +387,21 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) ret = drm_fb_helper_init(dev, fb_helper); if (ret) - goto err; + goto err_drm_err; if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); ret = drm_fb_helper_initial_config(fb_helper); if (ret) - goto err_cleanup; + goto err_drm_fb_helper_fini; return 0; -err_cleanup: - drm_fbdev_cleanup(fb_helper); -err: - fb_helper->dev = NULL; - fb_helper->info = NULL; - +err_drm_fb_helper_fini: + drm_fb_helper_fini(fb_helper); +err_drm_err: drm_err(dev, "fbdev: Failed to setup generic emulation (ret=%d)\n", ret); - return ret; } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann Call drm_fb_helper_init() in the generic-fbdev hotplug helper to revert the effects of drm_fb_helper_init(). No full cleanup is required. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 6ae014040df3..dd8be5e0f271 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -387,25 +387,21 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) ret = drm_fb_helper_init(dev, fb_helper); if (ret) - goto err; + goto err_drm_err; if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); ret = drm_fb_helper_initial_config(fb_helper); if (ret) - goto err_cleanup; + goto err_drm_fb_helper_fini; return 0; -err_cleanup: - drm_fbdev_cleanup(fb_helper); -err: - fb_helper->dev = NULL; - fb_helper->info = NULL; - +err_drm_fb_helper_fini: + drm_fb_helper_fini(fb_helper); +err_drm_err: drm_err(dev, "fbdev: Failed to setup generic emulation (ret=%d)\n", ret); - return ret; } -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Call drm_fb_helper_init() in the generic-fbdev hotplug helper to revert the effects of drm_fb_helper_init(). No full cleanup is required. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 6ae014040df3..dd8be5e0f271 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -387,25 +387,21 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) ret = drm_fb_helper_init(dev, fb_helper); if (ret) - goto err; + goto err_drm_err; if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); ret = drm_fb_helper_initial_config(fb_helper); if (ret) - goto err_cleanup; + goto err_drm_fb_helper_fini; return 0; -err_cleanup: - drm_fbdev_cleanup(fb_helper); -err: - fb_helper->dev = NULL; - fb_helper->info = NULL; - +err_drm_fb_helper_fini: + drm_fb_helper_fini(fb_helper); +err_drm_err: drm_err(dev, "fbdev: Failed to setup generic emulation (ret=%d)\n", ret); - return ret; } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel Call drm_fb_helper_init() in the generic-fbdev hotplug helper to revert the effects of drm_fb_helper_init(). No full cleanup is required. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 6ae014040df3..dd8be5e0f271 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -387,25 +387,21 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client) ret = drm_fb_helper_init(dev, fb_helper); if (ret) - goto err; + goto err_drm_err; if (!drm_drv_uses_atomic_modeset(dev)) drm_helper_disable_unused_functions(dev); ret = drm_fb_helper_initial_config(fb_helper); if (ret) - goto err_cleanup; + goto err_drm_fb_helper_fini; return 0; -err_cleanup: - drm_fbdev_cleanup(fb_helper); -err: - fb_helper->dev = NULL; - fb_helper->info = NULL; - +err_drm_fb_helper_fini: + drm_fb_helper_fini(fb_helper); +err_drm_err: drm_err(dev, "fbdev: Failed to setup generic emulation (ret=%d)\n", ret); - return ret; } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:44 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:44 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Call drm_fb_helper_init() in the generic-fbdev hotplug helper drm_fb_helper_fini() > to revert the effects of drm_fb_helper_init(). No full cleanup > is required. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling @ 2023-01-25 9:44 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:44 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > Call drm_fb_helper_init() in the generic-fbdev hotplug helper drm_fb_helper_fini() > to revert the effects of drm_fb_helper_init(). No full cleanup > is required. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling @ 2023-01-25 9:44 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:44 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > Call drm_fb_helper_init() in the generic-fbdev hotplug helper drm_fb_helper_fini() > to revert the effects of drm_fb_helper_init(). No full cleanup > is required. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 07/10] drm/fbdev-generic: Minimize hotplug error handling @ 2023-01-25 9:44 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:44 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > Call drm_fb_helper_init() in the generic-fbdev hotplug helper drm_fb_helper_fini() > to revert the effects of drm_fb_helper_init(). No full cleanup > is required. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann For uninitialized framebuffers, only release the DRM client and free the fbdev memory. Do not attempt to clean up the framebuffer. DRM fbdev clients have a two-step initialization: first create the DRM client; then create the framebuffer device on the first successful hotplug event. In cases where the client never creates the framebuffer, only the client state needs to be released. We can detect which case it is, full or client-only cleanup, be looking at the presence of fb_helper's info field. v2: * remove test for (fbi != NULL) in drm_fbdev_cleanup() (Sam) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index dd8be5e0f271..9fe37903e3eb 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -51,12 +51,10 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) if (!fb_helper->dev) return; - if (fbi) { - if (fbi->fbdefio) - fb_deferred_io_cleanup(fbi); - if (drm_fbdev_use_shadow_fb(fb_helper)) - shadow = fbi->screen_buffer; - } + if (fbi->fbdefio) + fb_deferred_io_cleanup(fbi); + if (drm_fbdev_use_shadow_fb(fb_helper)) + shadow = fbi->screen_buffer; drm_fb_helper_fini(fb_helper); @@ -362,11 +360,13 @@ static void drm_fbdev_client_unregister(struct drm_client_dev *client) { struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client); - if (fb_helper->info) - /* drm_fbdev_fb_destroy() takes care of cleanup */ + if (fb_helper->info) { drm_fb_helper_unregister_info(fb_helper); - else - drm_fbdev_release(fb_helper); + } else { + drm_fb_helper_unprepare(fb_helper); + drm_client_release(&fb_helper->client); + kfree(fb_helper); + } } static int drm_fbdev_client_restore(struct drm_client_dev *client) -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann For uninitialized framebuffers, only release the DRM client and free the fbdev memory. Do not attempt to clean up the framebuffer. DRM fbdev clients have a two-step initialization: first create the DRM client; then create the framebuffer device on the first successful hotplug event. In cases where the client never creates the framebuffer, only the client state needs to be released. We can detect which case it is, full or client-only cleanup, be looking at the presence of fb_helper's info field. v2: * remove test for (fbi != NULL) in drm_fbdev_cleanup() (Sam) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index dd8be5e0f271..9fe37903e3eb 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -51,12 +51,10 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) if (!fb_helper->dev) return; - if (fbi) { - if (fbi->fbdefio) - fb_deferred_io_cleanup(fbi); - if (drm_fbdev_use_shadow_fb(fb_helper)) - shadow = fbi->screen_buffer; - } + if (fbi->fbdefio) + fb_deferred_io_cleanup(fbi); + if (drm_fbdev_use_shadow_fb(fb_helper)) + shadow = fbi->screen_buffer; drm_fb_helper_fini(fb_helper); @@ -362,11 +360,13 @@ static void drm_fbdev_client_unregister(struct drm_client_dev *client) { struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client); - if (fb_helper->info) - /* drm_fbdev_fb_destroy() takes care of cleanup */ + if (fb_helper->info) { drm_fb_helper_unregister_info(fb_helper); - else - drm_fbdev_release(fb_helper); + } else { + drm_fb_helper_unprepare(fb_helper); + drm_client_release(&fb_helper->client); + kfree(fb_helper); + } } static int drm_fbdev_client_restore(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 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel For uninitialized framebuffers, only release the DRM client and free the fbdev memory. Do not attempt to clean up the framebuffer. DRM fbdev clients have a two-step initialization: first create the DRM client; then create the framebuffer device on the first successful hotplug event. In cases where the client never creates the framebuffer, only the client state needs to be released. We can detect which case it is, full or client-only cleanup, be looking at the presence of fb_helper's info field. v2: * remove test for (fbi != NULL) in drm_fbdev_cleanup() (Sam) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index dd8be5e0f271..9fe37903e3eb 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -51,12 +51,10 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) if (!fb_helper->dev) return; - if (fbi) { - if (fbi->fbdefio) - fb_deferred_io_cleanup(fbi); - if (drm_fbdev_use_shadow_fb(fb_helper)) - shadow = fbi->screen_buffer; - } + if (fbi->fbdefio) + fb_deferred_io_cleanup(fbi); + if (drm_fbdev_use_shadow_fb(fb_helper)) + shadow = fbi->screen_buffer; drm_fb_helper_fini(fb_helper); @@ -362,11 +360,13 @@ static void drm_fbdev_client_unregister(struct drm_client_dev *client) { struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client); - if (fb_helper->info) - /* drm_fbdev_fb_destroy() takes care of cleanup */ + if (fb_helper->info) { drm_fb_helper_unregister_info(fb_helper); - else - drm_fbdev_release(fb_helper); + } else { + drm_fb_helper_unprepare(fb_helper); + drm_client_release(&fb_helper->client); + kfree(fb_helper); + } } static int drm_fbdev_client_restore(struct drm_client_dev *client) -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel For uninitialized framebuffers, only release the DRM client and free the fbdev memory. Do not attempt to clean up the framebuffer. DRM fbdev clients have a two-step initialization: first create the DRM client; then create the framebuffer device on the first successful hotplug event. In cases where the client never creates the framebuffer, only the client state needs to be released. We can detect which case it is, full or client-only cleanup, be looking at the presence of fb_helper's info field. v2: * remove test for (fbi != NULL) in drm_fbdev_cleanup() (Sam) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index dd8be5e0f271..9fe37903e3eb 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -51,12 +51,10 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) if (!fb_helper->dev) return; - if (fbi) { - if (fbi->fbdefio) - fb_deferred_io_cleanup(fbi); - if (drm_fbdev_use_shadow_fb(fb_helper)) - shadow = fbi->screen_buffer; - } + if (fbi->fbdefio) + fb_deferred_io_cleanup(fbi); + if (drm_fbdev_use_shadow_fb(fb_helper)) + shadow = fbi->screen_buffer; drm_fb_helper_fini(fb_helper); @@ -362,11 +360,13 @@ static void drm_fbdev_client_unregister(struct drm_client_dev *client) { struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client); - if (fb_helper->info) - /* drm_fbdev_fb_destroy() takes care of cleanup */ + if (fb_helper->info) { drm_fb_helper_unregister_info(fb_helper); - else - drm_fbdev_release(fb_helper); + } else { + drm_fb_helper_unprepare(fb_helper); + drm_client_release(&fb_helper->client); + kfree(fb_helper); + } } static int drm_fbdev_client_restore(struct drm_client_dev *client) -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:50 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:50 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > For uninitialized framebuffers, only release the DRM client and > free the fbdev memory. Do not attempt to clean up the framebuffer. > > DRM fbdev clients have a two-step initialization: first create > the DRM client; then create the framebuffer device on the first > successful hotplug event. In cases where the client never creates > the framebuffer, only the client state needs to be released. We > can detect which case it is, full or client-only cleanup, be s/be/by > looking at the presence of fb_helper's info field. > > v2: > * remove test for (fbi != NULL) in drm_fbdev_cleanup() (Sam) > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering @ 2023-01-25 9:50 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:50 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > For uninitialized framebuffers, only release the DRM client and > free the fbdev memory. Do not attempt to clean up the framebuffer. > > DRM fbdev clients have a two-step initialization: first create > the DRM client; then create the framebuffer device on the first > successful hotplug event. In cases where the client never creates > the framebuffer, only the client state needs to be released. We > can detect which case it is, full or client-only cleanup, be s/be/by > looking at the presence of fb_helper's info field. > > v2: > * remove test for (fbi != NULL) in drm_fbdev_cleanup() (Sam) > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering @ 2023-01-25 9:50 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:50 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > For uninitialized framebuffers, only release the DRM client and > free the fbdev memory. Do not attempt to clean up the framebuffer. > > DRM fbdev clients have a two-step initialization: first create > the DRM client; then create the framebuffer device on the first > successful hotplug event. In cases where the client never creates > the framebuffer, only the client state needs to be released. We > can detect which case it is, full or client-only cleanup, be s/be/by > looking at the presence of fb_helper's info field. > > v2: > * remove test for (fbi != NULL) in drm_fbdev_cleanup() (Sam) > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 08/10] drm/fbdev-generic: Minimize client unregistering @ 2023-01-25 9:50 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:50 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > For uninitialized framebuffers, only release the DRM client and > free the fbdev memory. Do not attempt to clean up the framebuffer. > > DRM fbdev clients have a two-step initialization: first create > the DRM client; then create the framebuffer device on the first > successful hotplug event. In cases where the client never creates > the framebuffer, only the client state needs to be released. We > can detect which case it is, full or client-only cleanup, be s/be/by > looking at the presence of fb_helper's info field. > > v2: > * remove test for (fbi != NULL) in drm_fbdev_cleanup() (Sam) > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann The fbdev framebuffer cleanup in drm_fbdev_fb_destroy() calls drm_fbdev_release() and drm_fbdev_cleanup(). Inline both into the caller. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 9fe37903e3eb..13b31a95d434 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -43,8 +43,9 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user) return 0; } -static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) +static void drm_fbdev_fb_destroy(struct fb_info *info) { + struct drm_fb_helper *fb_helper = info->par; struct fb_info *fbi = fb_helper->info; void *shadow = NULL; @@ -64,24 +65,10 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) drm_client_buffer_vunmap(fb_helper->buffer); drm_client_framebuffer_delete(fb_helper->buffer); -} - -static void drm_fbdev_release(struct drm_fb_helper *fb_helper) -{ - drm_fbdev_cleanup(fb_helper); drm_client_release(&fb_helper->client); kfree(fb_helper); } -/* - * fb_ops.fb_destroy is called by the last put_fb_info() call at the end of - * unregister_framebuffer() or fb_release(). - */ -static void drm_fbdev_fb_destroy(struct fb_info *info) -{ - drm_fbdev_release(info->par); -} - static int drm_fbdev_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) { struct drm_fb_helper *fb_helper = info->par; -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann The fbdev framebuffer cleanup in drm_fbdev_fb_destroy() calls drm_fbdev_release() and drm_fbdev_cleanup(). Inline both into the caller. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 9fe37903e3eb..13b31a95d434 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -43,8 +43,9 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user) return 0; } -static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) +static void drm_fbdev_fb_destroy(struct fb_info *info) { + struct drm_fb_helper *fb_helper = info->par; struct fb_info *fbi = fb_helper->info; void *shadow = NULL; @@ -64,24 +65,10 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) drm_client_buffer_vunmap(fb_helper->buffer); drm_client_framebuffer_delete(fb_helper->buffer); -} - -static void drm_fbdev_release(struct drm_fb_helper *fb_helper) -{ - drm_fbdev_cleanup(fb_helper); drm_client_release(&fb_helper->client); kfree(fb_helper); } -/* - * fb_ops.fb_destroy is called by the last put_fb_info() call at the end of - * unregister_framebuffer() or fb_release(). - */ -static void drm_fbdev_fb_destroy(struct fb_info *info) -{ - drm_fbdev_release(info->par); -} - static int drm_fbdev_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) { struct drm_fb_helper *fb_helper = info->par; -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel The fbdev framebuffer cleanup in drm_fbdev_fb_destroy() calls drm_fbdev_release() and drm_fbdev_cleanup(). Inline both into the caller. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 9fe37903e3eb..13b31a95d434 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -43,8 +43,9 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user) return 0; } -static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) +static void drm_fbdev_fb_destroy(struct fb_info *info) { + struct drm_fb_helper *fb_helper = info->par; struct fb_info *fbi = fb_helper->info; void *shadow = NULL; @@ -64,24 +65,10 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) drm_client_buffer_vunmap(fb_helper->buffer); drm_client_framebuffer_delete(fb_helper->buffer); -} - -static void drm_fbdev_release(struct drm_fb_helper *fb_helper) -{ - drm_fbdev_cleanup(fb_helper); drm_client_release(&fb_helper->client); kfree(fb_helper); } -/* - * fb_ops.fb_destroy is called by the last put_fb_info() call at the end of - * unregister_framebuffer() or fb_release(). - */ -static void drm_fbdev_fb_destroy(struct fb_info *info) -{ - drm_fbdev_release(info->par); -} - static int drm_fbdev_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) { struct drm_fb_helper *fb_helper = info->par; -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel The fbdev framebuffer cleanup in drm_fbdev_fb_destroy() calls drm_fbdev_release() and drm_fbdev_cleanup(). Inline both into the caller. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 9fe37903e3eb..13b31a95d434 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -43,8 +43,9 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user) return 0; } -static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) +static void drm_fbdev_fb_destroy(struct fb_info *info) { + struct drm_fb_helper *fb_helper = info->par; struct fb_info *fbi = fb_helper->info; void *shadow = NULL; @@ -64,24 +65,10 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper) drm_client_buffer_vunmap(fb_helper->buffer); drm_client_framebuffer_delete(fb_helper->buffer); -} - -static void drm_fbdev_release(struct drm_fb_helper *fb_helper) -{ - drm_fbdev_cleanup(fb_helper); drm_client_release(&fb_helper->client); kfree(fb_helper); } -/* - * fb_ops.fb_destroy is called by the last put_fb_info() call at the end of - * unregister_framebuffer() or fb_release(). - */ -static void drm_fbdev_fb_destroy(struct fb_info *info) -{ - drm_fbdev_release(info->par); -} - static int drm_fbdev_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) { struct drm_fb_helper *fb_helper = info->par; -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:52 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:52 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > The fbdev framebuffer cleanup in drm_fbdev_fb_destroy() calls > drm_fbdev_release() and drm_fbdev_cleanup(). Inline both into the > caller. No functional changes. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() @ 2023-01-25 9:52 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:52 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > The fbdev framebuffer cleanup in drm_fbdev_fb_destroy() calls > drm_fbdev_release() and drm_fbdev_cleanup(). Inline both into the > caller. No functional changes. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() @ 2023-01-25 9:52 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:52 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > The fbdev framebuffer cleanup in drm_fbdev_fb_destroy() calls > drm_fbdev_release() and drm_fbdev_cleanup(). Inline both into the > caller. No functional changes. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 09/10] drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() @ 2023-01-25 9:52 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:52 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > The fbdev framebuffer cleanup in drm_fbdev_fb_destroy() calls > drm_fbdev_release() and drm_fbdev_cleanup(). Inline both into the > caller. No functional changes. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-24 13:40 ` Thomas Zimmermann -1 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann The generic fbdev emulation names variables of type struct fb_info both 'fbi' and 'info'. The latter seems to be more common in fbdev code, so name fbi accordingly. Also replace the duplicate variable in drm_fbdev_fb_destroy(). Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 47 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 13b31a95d434..b6565c1e3531 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -46,16 +46,15 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user) static void drm_fbdev_fb_destroy(struct fb_info *info) { struct drm_fb_helper *fb_helper = info->par; - struct fb_info *fbi = fb_helper->info; void *shadow = NULL; if (!fb_helper->dev) return; - if (fbi->fbdefio) - fb_deferred_io_cleanup(fbi); + if (info->fbdefio) + fb_deferred_io_cleanup(info); if (drm_fbdev_use_shadow_fb(fb_helper)) - shadow = fbi->screen_buffer; + shadow = info->screen_buffer; drm_fb_helper_fini(fb_helper); @@ -171,7 +170,7 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, struct drm_device *dev = fb_helper->dev; struct drm_client_buffer *buffer; struct drm_framebuffer *fb; - struct fb_info *fbi; + struct fb_info *info; u32 format; struct iosys_map map; int ret; @@ -190,35 +189,35 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, fb_helper->fb = buffer->fb; fb = buffer->fb; - fbi = drm_fb_helper_alloc_info(fb_helper); - if (IS_ERR(fbi)) - return PTR_ERR(fbi); + info = drm_fb_helper_alloc_info(fb_helper); + if (IS_ERR(info)) + return PTR_ERR(info); - fbi->fbops = &drm_fbdev_fb_ops; - fbi->screen_size = sizes->surface_height * fb->pitches[0]; - fbi->fix.smem_len = fbi->screen_size; - fbi->flags = FBINFO_DEFAULT; + info->fbops = &drm_fbdev_fb_ops; + info->screen_size = sizes->surface_height * fb->pitches[0]; + info->fix.smem_len = info->screen_size; + info->flags = FBINFO_DEFAULT; - drm_fb_helper_fill_info(fbi, fb_helper, sizes); + drm_fb_helper_fill_info(info, fb_helper, sizes); if (drm_fbdev_use_shadow_fb(fb_helper)) { - fbi->screen_buffer = vzalloc(fbi->screen_size); - if (!fbi->screen_buffer) + info->screen_buffer = vzalloc(info->screen_size); + if (!info->screen_buffer) return -ENOMEM; - fbi->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; + info->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; - fbi->fbdefio = &drm_fbdev_defio; - fb_deferred_io_init(fbi); + info->fbdefio = &drm_fbdev_defio; + fb_deferred_io_init(info); } else { /* buffer is mapped for HW framebuffer */ ret = drm_client_buffer_vmap(fb_helper->buffer, &map); if (ret) return ret; if (map.is_iomem) { - fbi->screen_base = map.vaddr_iomem; + info->screen_base = map.vaddr_iomem; } else { - fbi->screen_buffer = map.vaddr; - fbi->flags |= FBINFO_VIRTFB; + info->screen_buffer = map.vaddr; + info->flags |= FBINFO_VIRTFB; } /* @@ -227,10 +226,10 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, * case. */ #if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM) - if (fb_helper->hint_leak_smem_start && fbi->fix.smem_start == 0 && + if (fb_helper->hint_leak_smem_start && info->fix.smem_start == 0 && !drm_WARN_ON_ONCE(dev, map.is_iomem)) - fbi->fix.smem_start = - page_to_phys(virt_to_page(fbi->screen_buffer)); + info->fix.smem_start = + page_to_phys(virt_to_page(info->screen_buffer)); #endif } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra, Thomas Zimmermann The generic fbdev emulation names variables of type struct fb_info both 'fbi' and 'info'. The latter seems to be more common in fbdev code, so name fbi accordingly. Also replace the duplicate variable in drm_fbdev_fb_destroy(). Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 47 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 13b31a95d434..b6565c1e3531 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -46,16 +46,15 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user) static void drm_fbdev_fb_destroy(struct fb_info *info) { struct drm_fb_helper *fb_helper = info->par; - struct fb_info *fbi = fb_helper->info; void *shadow = NULL; if (!fb_helper->dev) return; - if (fbi->fbdefio) - fb_deferred_io_cleanup(fbi); + if (info->fbdefio) + fb_deferred_io_cleanup(info); if (drm_fbdev_use_shadow_fb(fb_helper)) - shadow = fbi->screen_buffer; + shadow = info->screen_buffer; drm_fb_helper_fini(fb_helper); @@ -171,7 +170,7 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, struct drm_device *dev = fb_helper->dev; struct drm_client_buffer *buffer; struct drm_framebuffer *fb; - struct fb_info *fbi; + struct fb_info *info; u32 format; struct iosys_map map; int ret; @@ -190,35 +189,35 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, fb_helper->fb = buffer->fb; fb = buffer->fb; - fbi = drm_fb_helper_alloc_info(fb_helper); - if (IS_ERR(fbi)) - return PTR_ERR(fbi); + info = drm_fb_helper_alloc_info(fb_helper); + if (IS_ERR(info)) + return PTR_ERR(info); - fbi->fbops = &drm_fbdev_fb_ops; - fbi->screen_size = sizes->surface_height * fb->pitches[0]; - fbi->fix.smem_len = fbi->screen_size; - fbi->flags = FBINFO_DEFAULT; + info->fbops = &drm_fbdev_fb_ops; + info->screen_size = sizes->surface_height * fb->pitches[0]; + info->fix.smem_len = info->screen_size; + info->flags = FBINFO_DEFAULT; - drm_fb_helper_fill_info(fbi, fb_helper, sizes); + drm_fb_helper_fill_info(info, fb_helper, sizes); if (drm_fbdev_use_shadow_fb(fb_helper)) { - fbi->screen_buffer = vzalloc(fbi->screen_size); - if (!fbi->screen_buffer) + info->screen_buffer = vzalloc(info->screen_size); + if (!info->screen_buffer) return -ENOMEM; - fbi->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; + info->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; - fbi->fbdefio = &drm_fbdev_defio; - fb_deferred_io_init(fbi); + info->fbdefio = &drm_fbdev_defio; + fb_deferred_io_init(info); } else { /* buffer is mapped for HW framebuffer */ ret = drm_client_buffer_vmap(fb_helper->buffer, &map); if (ret) return ret; if (map.is_iomem) { - fbi->screen_base = map.vaddr_iomem; + info->screen_base = map.vaddr_iomem; } else { - fbi->screen_buffer = map.vaddr; - fbi->flags |= FBINFO_VIRTFB; + info->screen_buffer = map.vaddr; + info->flags |= FBINFO_VIRTFB; } /* @@ -227,10 +226,10 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, * case. */ #if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM) - if (fb_helper->hint_leak_smem_start && fbi->fix.smem_start == 0 && + if (fb_helper->hint_leak_smem_start && info->fix.smem_start == 0 && !drm_WARN_ON_ONCE(dev, map.is_iomem)) - fbi->fix.smem_start = - page_to_phys(virt_to_page(fbi->screen_buffer)); + info->fix.smem_start = + page_to_phys(virt_to_page(info->screen_buffer)); #endif } -- 2.39.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [Intel-gfx] [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel The generic fbdev emulation names variables of type struct fb_info both 'fbi' and 'info'. The latter seems to be more common in fbdev code, so name fbi accordingly. Also replace the duplicate variable in drm_fbdev_fb_destroy(). Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 47 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 13b31a95d434..b6565c1e3531 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -46,16 +46,15 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user) static void drm_fbdev_fb_destroy(struct fb_info *info) { struct drm_fb_helper *fb_helper = info->par; - struct fb_info *fbi = fb_helper->info; void *shadow = NULL; if (!fb_helper->dev) return; - if (fbi->fbdefio) - fb_deferred_io_cleanup(fbi); + if (info->fbdefio) + fb_deferred_io_cleanup(info); if (drm_fbdev_use_shadow_fb(fb_helper)) - shadow = fbi->screen_buffer; + shadow = info->screen_buffer; drm_fb_helper_fini(fb_helper); @@ -171,7 +170,7 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, struct drm_device *dev = fb_helper->dev; struct drm_client_buffer *buffer; struct drm_framebuffer *fb; - struct fb_info *fbi; + struct fb_info *info; u32 format; struct iosys_map map; int ret; @@ -190,35 +189,35 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, fb_helper->fb = buffer->fb; fb = buffer->fb; - fbi = drm_fb_helper_alloc_info(fb_helper); - if (IS_ERR(fbi)) - return PTR_ERR(fbi); + info = drm_fb_helper_alloc_info(fb_helper); + if (IS_ERR(info)) + return PTR_ERR(info); - fbi->fbops = &drm_fbdev_fb_ops; - fbi->screen_size = sizes->surface_height * fb->pitches[0]; - fbi->fix.smem_len = fbi->screen_size; - fbi->flags = FBINFO_DEFAULT; + info->fbops = &drm_fbdev_fb_ops; + info->screen_size = sizes->surface_height * fb->pitches[0]; + info->fix.smem_len = info->screen_size; + info->flags = FBINFO_DEFAULT; - drm_fb_helper_fill_info(fbi, fb_helper, sizes); + drm_fb_helper_fill_info(info, fb_helper, sizes); if (drm_fbdev_use_shadow_fb(fb_helper)) { - fbi->screen_buffer = vzalloc(fbi->screen_size); - if (!fbi->screen_buffer) + info->screen_buffer = vzalloc(info->screen_size); + if (!info->screen_buffer) return -ENOMEM; - fbi->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; + info->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; - fbi->fbdefio = &drm_fbdev_defio; - fb_deferred_io_init(fbi); + info->fbdefio = &drm_fbdev_defio; + fb_deferred_io_init(info); } else { /* buffer is mapped for HW framebuffer */ ret = drm_client_buffer_vmap(fb_helper->buffer, &map); if (ret) return ret; if (map.is_iomem) { - fbi->screen_base = map.vaddr_iomem; + info->screen_base = map.vaddr_iomem; } else { - fbi->screen_buffer = map.vaddr; - fbi->flags |= FBINFO_VIRTFB; + info->screen_buffer = map.vaddr; + info->flags |= FBINFO_VIRTFB; } /* @@ -227,10 +226,10 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, * case. */ #if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM) - if (fb_helper->hint_leak_smem_start && fbi->fix.smem_start == 0 && + if (fb_helper->hint_leak_smem_start && info->fix.smem_start == 0 && !drm_WARN_ON_ONCE(dev, map.is_iomem)) - fbi->fix.smem_start = - page_to_phys(virt_to_page(fbi->screen_buffer)); + info->fix.smem_start = + page_to_phys(virt_to_page(info->screen_buffer)); #endif } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' @ 2023-01-24 13:40 ` Thomas Zimmermann 0 siblings, 0 replies; 99+ messages in thread From: Thomas Zimmermann @ 2023-01-24 13:40 UTC (permalink / raw) To: airlied, daniel, maarten.lankhorst, mripard, javierm Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, Thomas Zimmermann, linux-tegra, freedreno, linux-arm-kernel The generic fbdev emulation names variables of type struct fb_info both 'fbi' and 'info'. The latter seems to be more common in fbdev code, so name fbi accordingly. Also replace the duplicate variable in drm_fbdev_fb_destroy(). Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/drm_fbdev_generic.c | 47 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index 13b31a95d434..b6565c1e3531 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -46,16 +46,15 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user) static void drm_fbdev_fb_destroy(struct fb_info *info) { struct drm_fb_helper *fb_helper = info->par; - struct fb_info *fbi = fb_helper->info; void *shadow = NULL; if (!fb_helper->dev) return; - if (fbi->fbdefio) - fb_deferred_io_cleanup(fbi); + if (info->fbdefio) + fb_deferred_io_cleanup(info); if (drm_fbdev_use_shadow_fb(fb_helper)) - shadow = fbi->screen_buffer; + shadow = info->screen_buffer; drm_fb_helper_fini(fb_helper); @@ -171,7 +170,7 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, struct drm_device *dev = fb_helper->dev; struct drm_client_buffer *buffer; struct drm_framebuffer *fb; - struct fb_info *fbi; + struct fb_info *info; u32 format; struct iosys_map map; int ret; @@ -190,35 +189,35 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, fb_helper->fb = buffer->fb; fb = buffer->fb; - fbi = drm_fb_helper_alloc_info(fb_helper); - if (IS_ERR(fbi)) - return PTR_ERR(fbi); + info = drm_fb_helper_alloc_info(fb_helper); + if (IS_ERR(info)) + return PTR_ERR(info); - fbi->fbops = &drm_fbdev_fb_ops; - fbi->screen_size = sizes->surface_height * fb->pitches[0]; - fbi->fix.smem_len = fbi->screen_size; - fbi->flags = FBINFO_DEFAULT; + info->fbops = &drm_fbdev_fb_ops; + info->screen_size = sizes->surface_height * fb->pitches[0]; + info->fix.smem_len = info->screen_size; + info->flags = FBINFO_DEFAULT; - drm_fb_helper_fill_info(fbi, fb_helper, sizes); + drm_fb_helper_fill_info(info, fb_helper, sizes); if (drm_fbdev_use_shadow_fb(fb_helper)) { - fbi->screen_buffer = vzalloc(fbi->screen_size); - if (!fbi->screen_buffer) + info->screen_buffer = vzalloc(info->screen_size); + if (!info->screen_buffer) return -ENOMEM; - fbi->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; + info->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; - fbi->fbdefio = &drm_fbdev_defio; - fb_deferred_io_init(fbi); + info->fbdefio = &drm_fbdev_defio; + fb_deferred_io_init(info); } else { /* buffer is mapped for HW framebuffer */ ret = drm_client_buffer_vmap(fb_helper->buffer, &map); if (ret) return ret; if (map.is_iomem) { - fbi->screen_base = map.vaddr_iomem; + info->screen_base = map.vaddr_iomem; } else { - fbi->screen_buffer = map.vaddr; - fbi->flags |= FBINFO_VIRTFB; + info->screen_buffer = map.vaddr; + info->flags |= FBINFO_VIRTFB; } /* @@ -227,10 +226,10 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, * case. */ #if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM) - if (fb_helper->hint_leak_smem_start && fbi->fix.smem_start == 0 && + if (fb_helper->hint_leak_smem_start && info->fix.smem_start == 0 && !drm_WARN_ON_ONCE(dev, map.is_iomem)) - fbi->fix.smem_start = - page_to_phys(virt_to_page(fbi->screen_buffer)); + info->fix.smem_start = + page_to_phys(virt_to_page(info->screen_buffer)); #endif } -- 2.39.0 ^ permalink raw reply related [flat|nested] 99+ messages in thread
* Re: [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' 2023-01-24 13:40 ` Thomas Zimmermann (?) (?) @ 2023-01-25 9:54 ` Javier Martinez Canillas -1 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:54 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > The generic fbdev emulation names variables of type struct fb_info > both 'fbi' and 'info'. The latter seems to be more common in fbdev > code, so name fbi accordingly. > > Also replace the duplicate variable in drm_fbdev_fb_destroy(). > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' @ 2023-01-25 9:54 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:54 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > The generic fbdev emulation names variables of type struct fb_info > both 'fbi' and 'info'. The latter seems to be more common in fbdev > code, so name fbi accordingly. > > Also replace the duplicate variable in drm_fbdev_fb_destroy(). > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' @ 2023-01-25 9:54 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:54 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: dri-devel, linux-arm-kernel, linux-samsung-soc, intel-gfx, linux-arm-msm, freedreno, amd-gfx, linux-tegra On 1/24/23 14:40, Thomas Zimmermann wrote: > The generic fbdev emulation names variables of type struct fb_info > both 'fbi' and 'info'. The latter seems to be more common in fbdev > code, so name fbi accordingly. > > Also replace the duplicate variable in drm_fbdev_fb_destroy(). > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* Re: [Intel-gfx] [PATCH v2 10/10] drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' @ 2023-01-25 9:54 ` Javier Martinez Canillas 0 siblings, 0 replies; 99+ messages in thread From: Javier Martinez Canillas @ 2023-01-25 9:54 UTC (permalink / raw) To: Thomas Zimmermann, airlied, daniel, maarten.lankhorst, mripard Cc: linux-samsung-soc, linux-arm-msm, intel-gfx, dri-devel, amd-gfx, linux-tegra, freedreno, linux-arm-kernel On 1/24/23 14:40, Thomas Zimmermann wrote: > The generic fbdev emulation names variables of type struct fb_info > both 'fbi' and 'info'. The latter seems to be more common in fbdev > code, so name fbi accordingly. > > Also replace the duplicate variable in drm_fbdev_fb_destroy(). > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat ^ permalink raw reply [flat|nested] 99+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/fb-helper: Various cleanups (rev2) 2023-01-24 13:40 ` Thomas Zimmermann ` (12 preceding siblings ...) (?) @ 2023-01-24 19:42 ` Patchwork -1 siblings, 0 replies; 99+ messages in thread From: Patchwork @ 2023-01-24 19:42 UTC (permalink / raw) To: Thomas Zimmermann; +Cc: intel-gfx == Series Details == Series: drm/fb-helper: Various cleanups (rev2) URL : https://patchwork.freedesktop.org/series/113220/ State : failure == Summary == Error: patch https://patchwork.freedesktop.org/api/1.0/series/113220/revisions/2/mbox/ not applied Applying: drm/client: Test for connectors before sending hotplug event Applying: drm/client: Add hotplug_failed flag Applying: drm/fb-helper: Introduce drm_fb_helper_unprepare() Applying: drm/fbdev-generic: Initialize fb-helper structure in generic setup Applying: drm/fb-helper: Remove preferred_bpp parameter from fbdev internals Applying: drm/fb-helper: Initialize fb-helper's preferred BPP in prepare function Applying: drm/fbdev-generic: Minimize hotplug error handling Applying: drm/fbdev-generic: Minimize client unregistering Applying: drm/fbdev-generic: Inline clean-up helpers into drm_fbdev_fb_destroy() Applying: drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' error: sha1 information is lacking or useless (drivers/gpu/drm/drm_fbdev_generic.c). error: could not build fake ancestor hint: Use 'git am --show-current-patch=diff' to see the failed patch Patch failed at 0010 drm/fbdev-generic: Rename struct fb_info 'fbi' to 'info' 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". ^ permalink raw reply [flat|nested] 99+ messages in thread
end of thread, other threads:[~2023-01-25 14:12 UTC | newest] Thread overview: 99+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` Thomas Zimmermann 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 8:30 ` Javier Martinez Canillas 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-25 14:04 ` Thomas Zimmermann 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-24 13:40 ` Thomas Zimmermann 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-25 9:05 ` 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` Thomas Zimmermann 2023-01-25 9:18 ` Javier Martinez Canillas 2023-01-25 9:18 ` [Intel-gfx] " Javier Martinez Canillas 2023-01-25 9:18 ` Javier Martinez Canillas 2023-01-25 9:18 ` Javier Martinez Canillas 2023-01-25 14:11 ` Thomas Zimmermann 2023-01-25 14:11 ` [Intel-gfx] " Thomas Zimmermann 2023-01-25 14:11 ` Thomas Zimmermann 2023-01-25 14:11 ` 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` Thomas Zimmermann 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-25 9:31 ` 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` Thomas Zimmermann 2023-01-25 4:51 ` [Intel-gfx] " 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 ` Javier Martinez Canillas 2023-01-25 12:12 ` [Intel-gfx] " 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` Thomas Zimmermann 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-25 9:50 ` 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` 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 ` [Intel-gfx] " Thomas Zimmermann 2023-01-24 13:40 ` 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
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.