From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: Thomas Zimmermann <tzimmermann@suse.de>,
daniel@ffwll.ch, airlied@gmail.com, jfalempe@redhat.com,
javierm@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
nouveau@lists.freedesktop.org,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Tvrtko Ursulin" <tursulin@ursulin.net>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>
Subject: Re: [82/86] drm/i915: Move custom hotplug code into separate callback
Date: Tue, 20 Aug 2024 18:39:29 +0800 [thread overview]
Message-ID: <59e832ae-dd0e-4746-ad9c-327b997e992b@linux.dev> (raw)
In-Reply-To: <a48a5538-b4a9-4e01-9930-b1538325b9e3@suse.de>
Hi,
On 2024/8/20 15:39, Thomas Zimmermann wrote:
> Hi
>
> Am 19.08.24 um 10:52 schrieb Sui Jingfeng:
>> Hi, Thomas
>>
>>
>> I love your patch, yet ...
>>
>>
>> On 2024/8/16 20:23, Thomas Zimmermann wrote:
>>> i915's fbdev contains additional code for hotplugging a display that
>>> cannot be ported to the common fbdev client. Introduce the callback
>>> struct drm_fb_helper.fb_hotplug and implement it for i915. The fbdev
>>> helpers invoke the callback before handing the hotplug event.
>>>
>>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>>> Cc: Jani Nikula <jani.nikula@linux.intel.com>
>>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>>> Cc: Tvrtko Ursulin <tursulin@ursulin.net>
>>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>> Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
>>> ---
>>> drivers/gpu/drm/drm_fb_helper.c | 6 +++
>>> drivers/gpu/drm/i915/display/intel_fbdev.c | 43
>>> ++++++++++++----------
>>> include/drm/drm_fb_helper.h | 13 +++++++
>>> 3 files changed, 42 insertions(+), 20 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/drm_fb_helper.c
>>> b/drivers/gpu/drm/drm_fb_helper.c
>>> index d9e539b0fd1a..92926cb02dfb 100644
>>> --- a/drivers/gpu/drm/drm_fb_helper.c
>>> +++ b/drivers/gpu/drm/drm_fb_helper.c
>>> @@ -1938,6 +1938,12 @@ int drm_fb_helper_hotplug_event(struct
>>> drm_fb_helper *fb_helper)
>>> if (!drm_fbdev_emulation || !fb_helper)
>>> return 0;
>>> + if (fb_helper->funcs->fb_hotplug) {
>>
>> We seems need to check the existence on the 'fb_helper->funcs' here,
>>
>> For example:
>>
>>
>> if (fb_helper->funcs && fb_helper->funcs->fb_hotplug) {
>>
>> Otherwise, it will de-reference NULL pointer.
>> Can be observed on a trivial driver though,
>> with no monitor(display) connected.
>
> Indeed. That needs to be fixed. Thank you for noting.
>
Thanks for you efforts then.
> To give some context: I was hoping to remove drm_fb_helper_funcs at
> some point.
Yeah, too many helper functions may make peoples daze.
> fb_probe is now gone with these patches and fb_dirty can certainly be
> replaced as well. (I once had prototype patches to do that).
Well, the grammar of "ret = (*fb_helper->funcs->fb_probe)(fb_helper, &sizes);" looks strange,
It's lengthy and I observed you have cleaned it up at the last patch.
Which also eliminates one pair "if and else" clause, the codes looks
more fluent now.
> This leaves the new callbacks for 915, for which I don't have a good
> alternative solution. So it seems that drm_fb_helper_funcs will only
> be used by i915/xe in the long term.
>
Well, since it is a DRM client now, maybe we could try to drop it into struct drm_driver.
Just like the '.fbdev_probe' callback, this may help to achieve a 100% DRM-based console/logger IMO.
Besides, a lot of DRM driver instances has the DMA/2D acceleration hardware, promote it
into drm_driver structure may has the potential to utilize hardware acceleration. Drivers
will more easily to have custom implementation. I'm not 100% sure if it will only be used
by i915 in the future.
Best regards,
Sui
next prev parent reply other threads:[~2024-08-20 12:55 UTC|newest]
Thread overview: 134+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-16 12:22 [PATCH 00/86] drm: Provide client setup helper and convert drivers Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 01/86] drm/fbdev-helper: Move color-mode lookup into 4CC format helper Thomas Zimmermann
2024-08-18 19:22 ` Laurent Pinchart
2024-08-16 12:22 ` [PATCH 02/86] drm/fbdev-helper: Set and clear VGA switcheroo client from fb_info Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 03/86] drm/fbdev: Add memory-agnostic fbdev client Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 04/86] drm: Add client-agnostic setup helper Thomas Zimmermann
2024-08-18 20:07 ` Laurent Pinchart
2024-08-20 7:22 ` Thomas Zimmermann
2024-08-20 7:40 ` Laurent Pinchart
2024-08-20 7:53 ` Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 05/86] drm/fbdev-dma: Support struct drm_driver.fbdev_probe Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 06/86] drm/arcgpu: Run DRM default client setup Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 07/86] drm/arm/komeda: " Thomas Zimmermann
2024-08-16 14:15 ` Liviu Dudau
2024-08-16 12:22 ` [PATCH 08/86] drm/arm/hdlcd: " Thomas Zimmermann
2024-08-16 14:15 ` Liviu Dudau
2024-08-16 12:22 ` [PATCH 09/86] drm/arm/malidp: " Thomas Zimmermann
2024-08-16 14:16 ` Liviu Dudau
2024-08-16 12:22 ` [PATCH 10/86] drm/aspeed: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 11/86] drm/atmel-hdlcd: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 12/86] drm/fsl-dcu: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 13/86] drm/hisilicon/kirin: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 14/86] drm/hx8357d: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 15/86] drm/ili9163: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 16/86] drm/ili9225: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 17/86] drm/ili9341: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 18/86] drm/ili9486: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 19/86] drm/imx/dcss: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 20/86] drm/imx/ipuv3: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 21/86] drm/imx/lcdc: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 22/86] drm/ingenic: " Thomas Zimmermann
2024-08-17 20:54 ` Paul Cercueil
2024-08-16 12:22 ` [PATCH 23/86] drm/kmb: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 24/86] drm/logicvc: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 25/86] drm/mcde: " Thomas Zimmermann
2024-08-18 8:51 ` Linus Walleij
2024-08-16 12:22 ` [PATCH 26/86] drm/mediatek: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 27/86] drm/meson: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 28/86] drm/mi0283qt: " Thomas Zimmermann
2024-08-16 16:01 ` Noralf Trønnes
2024-08-20 7:30 ` Thomas Zimmermann
2024-08-20 8:25 ` Noralf Trønnes
2024-08-16 12:22 ` [PATCH 29/86] drm/mxsfb/lcdif: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 30/86] drm/msxfb: " Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 31/86] drm/panel/ili9341: " Thomas Zimmermann
2024-08-19 15:37 ` Neil Armstrong
2024-08-19 15:39 ` Neil Armstrong
2024-08-20 7:33 ` Thomas Zimmermann
2024-08-16 12:22 ` [PATCH 32/86] drm/panel-mipi-dbi: " Thomas Zimmermann
2024-08-20 8:26 ` Noralf Trønnes
2024-08-16 12:22 ` [PATCH 33/86] drm/pl111: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 34/86] drm/renesas/rcar-du: " Thomas Zimmermann
2024-08-18 20:12 ` Laurent Pinchart
2024-08-16 12:23 ` [PATCH 35/86] drm/renesas/rz-du: " Thomas Zimmermann
2024-08-19 9:50 ` Biju Das
2024-08-16 12:23 ` [PATCH 36/86] drm/renesas/shmobile: " Thomas Zimmermann
2024-08-18 20:17 ` Laurent Pinchart
2024-08-16 12:23 ` [PATCH 37/86] drm/repaper: " Thomas Zimmermann
2024-08-20 8:26 ` Noralf Trønnes
2024-08-16 12:23 ` [PATCH 38/86] drm/rockchip: " Thomas Zimmermann
2024-08-16 13:34 ` Heiko Stübner
2024-08-16 12:23 ` [PATCH 39/86] drm/sti: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 40/86] drm/stm: " Thomas Zimmermann
2024-08-20 11:57 ` Raphael Gallais-Pou
2024-08-16 12:23 ` [PATCH 41/86] drm/sun4i: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 42/86] drm/tidss: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 43/86] drm/tilcdc: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 44/86] drm/st7586: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 45/86] drm/st7735r: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 46/86] drm/tve200: " Thomas Zimmermann
2024-08-18 8:51 ` Linus Walleij
2024-08-16 12:23 ` [PATCH 47/86] drm/vc4: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 48/86] drm/xlnx: " Thomas Zimmermann
2024-08-18 20:19 ` Laurent Pinchart
2024-08-20 7:52 ` Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 49/86] drm/fbdev-dma: Remove obsolete setup function Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 50/86] drm/fbdev-shmem: Support struct drm_driver.fbdev_probe Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 51/86] drm/ast: Run DRM default client setup Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 52/86] drm/cirrus: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 53/86] drm/gm12u320: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 54/86] drm/gud: " Thomas Zimmermann
2024-08-20 8:27 ` Noralf Trønnes
2024-08-16 12:23 ` [PATCH 55/86] drm/hyperv_drm: " Thomas Zimmermann
2024-08-16 15:36 ` Deepak Rawat
2024-08-16 12:23 ` [PATCH 56/86] drm/mgag200: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 57/86] drm/ofdrm: Use " Thomas Zimmermann
2024-08-19 16:40 ` Javier Martinez Canillas
2024-08-16 12:23 ` [PATCH 58/86] drm/simpledrm: Run " Thomas Zimmermann
2024-08-19 16:41 ` Javier Martinez Canillas
2024-08-16 12:23 ` [PATCH 59/86] drm/solomon: " Thomas Zimmermann
2024-08-19 16:42 ` Javier Martinez Canillas
2024-08-16 12:23 ` [PATCH 60/86] drm/udl: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 61/86] drm/virtgpu: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 62/86] drm/vkms: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 63/86] drm/fbdev-shmem: Remove obsolete setup function Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 64/86] drm/fbdev-ttm: Support struct drm_driver.fbdev_probe Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 65/86] drm/amdgpu: Run DRM default client setup Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 66/86] drm/bochs: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 67/86] drm/hisilicon/hibmc: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 68/86] drm/loongson: " Thomas Zimmermann
2024-08-19 9:00 ` [68/86] " Sui Jingfeng
2024-08-16 12:23 ` [PATCH 69/86] drm/nouveau: " Thomas Zimmermann
2024-08-16 13:59 ` Danilo Krummrich
2024-08-16 12:23 ` [PATCH 70/86] drm/qxl: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 71/86] drm/vboxvideo: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 72/86] drm/vmwgfx: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 73/86] drm/fbdev-ttm: Remove obsolete setup function Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 74/86] drm/armada: Run DRM default client setup Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 75/86] drm/exynos-drm: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 76/86] drm/gma500: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 77/86] drm/msm: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 78/86] drm/radeon: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 79/86] drm/tegra: " Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 80/86] drm/i915: Remove struct drm_fb_helper from struct intel_fbdev Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 81/86] drm/i915: Move custom restore code into separate callback Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 82/86] drm/i915: Move custom hotplug " Thomas Zimmermann
2024-08-19 8:52 ` [82/86] " Sui Jingfeng
2024-08-20 7:39 ` Thomas Zimmermann
2024-08-20 10:39 ` Sui Jingfeng [this message]
2024-08-20 12:42 ` Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 83/86] drm/{i915,xe}: Run DRM default client setup Thomas Zimmermann
2024-08-16 13:18 ` Jani Nikula
2024-08-16 13:34 ` Thomas Zimmermann
2024-08-17 10:14 ` kernel test robot
2024-08-17 12:07 ` kernel test robot
2024-08-16 12:23 ` [PATCH 84/86] drm/omapdrm: Remove struct drm_fb_helper from struct omap_fbdev Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 85/86] drm/omapdrm: Run DRM default client setup Thomas Zimmermann
2024-08-16 12:23 ` [PATCH 86/86] drm/fb-helper: Remove struct drm_fb_helper.fb_probe Thomas Zimmermann
2024-08-16 13:02 ` ✓ CI.Patch_applied: success for drm: Provide client setup helper and convert drivers Patchwork
2024-08-16 13:04 ` ✗ CI.checkpatch: warning " Patchwork
2024-08-16 13:04 ` ✗ CI.KUnit: failure " Patchwork
2024-08-16 14:19 ` ✗ Fi.CI.CHECKPATCH: warning " Patchwork
2024-08-16 14:19 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-08-16 14:35 ` ✗ Fi.CI.BAT: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=59e832ae-dd0e-4746-ad9c-327b997e992b@linux.dev \
--to=sui.jingfeng@linux.dev \
--cc=airlied@gmail.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=javierm@redhat.com \
--cc=jfalempe@redhat.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=lucas.demarchi@intel.com \
--cc=nouveau@lists.freedesktop.org \
--cc=rodrigo.vivi@intel.com \
--cc=thomas.hellstrom@linux.intel.com \
--cc=tursulin@ursulin.net \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.