All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: Thomas Zimmermann <tzimmermann@suse.de>
Cc: alexander.deucher@amd.com, christian.koenig@amd.com,
	Xinhui.Pan@amd.com, airlied@gmail.com, daniel@ffwll.ch,
	maarten.lankhorst@linux.intel.com, mripard@kernel.org,
	kherbst@redhat.com, lyude@redhat.com, dakr@redhat.com,
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	nouveau@lists.freedesktop.org
Subject: Re: [PATCH v2 1/9] drm: Do delayed switcheroo in drm_lastclose()
Date: Mon, 12 Aug 2024 11:23:44 +0200	[thread overview]
Message-ID: <ZrnUoPuYv0v-yx79@phenom.ffwll.local> (raw)
In-Reply-To: <20240812083000.337744-2-tzimmermann@suse.de>

On Mon, Aug 12, 2024 at 10:28:22AM +0200, Thomas Zimmermann wrote:
> Amdgpu and nouveau call vga_switcheroo_process_delayed_switch() from
> their lastclose callbacks. Call it from drm_lastclose(), so that the
> driver functions can finally be removed. Only PCI devices with enabled
> switcheroo do the delayed switching. The call has no effect on other
> hardware.
> 
> v2:
> - move change to drm_lastclose() (Sima)
> - update docs for vga_switcheroo_process_delayed_switch()
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

A bit an aside: The entire vgaswitcheroo code is still a midlayer mess,
where the locking is at the wrong layers resulting in the can_switch check
potentially being racy. But that's a different can of worms.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> ---
>  drivers/gpu/drm/drm_file.c       | 4 ++++
>  drivers/gpu/vga/vga_switcheroo.c | 3 +--
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> index 714e42b05108..513bef816ae9 100644
> --- a/drivers/gpu/drm/drm_file.c
> +++ b/drivers/gpu/drm/drm_file.c
> @@ -38,6 +38,7 @@
>  #include <linux/pci.h>
>  #include <linux/poll.h>
>  #include <linux/slab.h>
> +#include <linux/vga_switcheroo.h>
>  
>  #include <drm/drm_client.h>
>  #include <drm/drm_drv.h>
> @@ -404,6 +405,9 @@ void drm_lastclose(struct drm_device * dev)
>  	drm_dbg_core(dev, "driver lastclose completed\n");
>  
>  	drm_client_dev_restore(dev);
> +
> +	if (dev_is_pci(dev->dev))
> +		vga_switcheroo_process_delayed_switch();
>  }
>  
>  /**
> diff --git a/drivers/gpu/vga/vga_switcheroo.c b/drivers/gpu/vga/vga_switcheroo.c
> index 365e6ddbe90f..18f2c92beff8 100644
> --- a/drivers/gpu/vga/vga_switcheroo.c
> +++ b/drivers/gpu/vga/vga_switcheroo.c
> @@ -926,8 +926,7 @@ static void vga_switcheroo_debugfs_init(struct vgasr_priv *priv)
>  /**
>   * vga_switcheroo_process_delayed_switch() - helper for delayed switching
>   *
> - * Process a delayed switch if one is pending. DRM drivers should call this
> - * from their ->lastclose callback.
> + * Process a delayed switch if one is pending.
>   *
>   * Return: 0 on success. -EINVAL if no delayed switch is pending, if the client
>   * has unregistered in the meantime or if there are other clients blocking the
> -- 
> 2.46.0
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

  reply	other threads:[~2024-08-12  9:23 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-12  8:28 [PATCH v2 0/9] drm/{amdgpu,nouveau}: Remove old fbdev hooks Thomas Zimmermann
2024-08-12  8:28 ` [PATCH v2 1/9] drm: Do delayed switcheroo in drm_lastclose() Thomas Zimmermann
2024-08-12  9:23   ` Daniel Vetter [this message]
2024-08-12 10:18     ` Daniel Vetter
2024-08-12 10:41       ` Thomas Zimmermann
2024-08-12 14:40         ` Daniel Vetter
2024-08-12 18:47           ` Alex Deucher
2024-08-12 19:05   ` Alex Deucher
2024-08-19 15:33   ` Getting off this list Blake McBride
2024-08-20 20:56     ` Lyude Paul
2024-08-12  8:28 ` [PATCH v2 2/9] drm/amdgpu: Do not set struct drm_driver.lastclose Thomas Zimmermann
2024-08-12  9:24   ` Daniel Vetter
2024-08-12 19:05   ` Alex Deucher
2024-08-12 19:07     ` Alex Deucher
2024-08-12  8:28 ` [PATCH v2 3/9] drm/nouveau: " Thomas Zimmermann
2024-08-12  9:24   ` Daniel Vetter
2024-08-12 12:02   ` Danilo Krummrich
2024-08-12  8:28 ` [PATCH v2 4/9] drm/nouveau: Do not set struct drm_mode_config_funcs.output_poll_changed Thomas Zimmermann
2024-08-12 12:11   ` Danilo Krummrich
2024-08-12  8:28 ` [PATCH v2 5/9] drm/nouveau: Implement switcheroo reprobe with drm_client_dev_hotplug() Thomas Zimmermann
2024-08-12 12:17   ` Danilo Krummrich
2024-08-12 12:34     ` Thomas Zimmermann
2024-08-12 18:55       ` Danilo Krummrich
2024-08-12  8:28 ` [PATCH v2 6/9] drm/fbdev-helper: Update documentation on obsolete callbacks Thomas Zimmermann
2024-08-12  9:25   ` Daniel Vetter
2024-08-12  8:28 ` [PATCH v2 7/9] drm/fbdev-helper: Remove drm_fb_helper_output_poll_changed() Thomas Zimmermann
2024-08-12  9:25   ` Daniel Vetter
2024-08-12  8:28 ` [PATCH v2 8/9] drm: Remove struct drm_driver.lastclose Thomas Zimmermann
2024-08-12  8:28 ` [PATCH v2 9/9] drm: Remove struct drm_mode_config_funcs.output_poll_changed Thomas Zimmermann

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=ZrnUoPuYv0v-yx79@phenom.ffwll.local \
    --to=daniel.vetter@ffwll.ch \
    --cc=Xinhui.Pan@amd.com \
    --cc=airlied@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=christian.koenig@amd.com \
    --cc=dakr@redhat.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kherbst@redhat.com \
    --cc=lyude@redhat.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --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.