<div dir="ltr"><div>I do not know which list this is.  How can I get these emails to stop?</div><div><br></div><div>Thank you.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 12, 2024 at 3:40 AM Thomas Zimmermann <<a href="mailto:tzimmermann@suse.de">tzimmermann@suse.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Amdgpu and nouveau call vga_switcheroo_process_delayed_switch() from<br>
their lastclose callbacks. Call it from drm_lastclose(), so that the<br>
driver functions can finally be removed. Only PCI devices with enabled<br>
switcheroo do the delayed switching. The call has no effect on other<br>
hardware.<br>
<br>
v2:<br>
- move change to drm_lastclose() (Sima)<br>
- update docs for vga_switcheroo_process_delayed_switch()<br>
<br>
Signed-off-by: Thomas Zimmermann <<a href="mailto:tzimmermann@suse.de" target="_blank">tzimmermann@suse.de</a>><br>
---<br>
 drivers/gpu/drm/drm_file.c       | 4 ++++<br>
 drivers/gpu/vga/vga_switcheroo.c | 3 +--<br>
 2 files changed, 5 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c<br>
index 714e42b05108..513bef816ae9 100644<br>
--- a/drivers/gpu/drm/drm_file.c<br>
+++ b/drivers/gpu/drm/drm_file.c<br>
@@ -38,6 +38,7 @@<br>
 #include <linux/pci.h><br>
 #include <linux/poll.h><br>
 #include <linux/slab.h><br>
+#include <linux/vga_switcheroo.h><br>
<br>
 #include <drm/drm_client.h><br>
 #include <drm/drm_drv.h><br>
@@ -404,6 +405,9 @@ void drm_lastclose(struct drm_device * dev)<br>
        drm_dbg_core(dev, "driver lastclose completed\n");<br>
<br>
        drm_client_dev_restore(dev);<br>
+<br>
+       if (dev_is_pci(dev->dev))<br>
+               vga_switcheroo_process_delayed_switch();<br>
 }<br>
<br>
 /**<br>
diff --git a/drivers/gpu/vga/vga_switcheroo.c b/drivers/gpu/vga/vga_switcheroo.c<br>
index 365e6ddbe90f..18f2c92beff8 100644<br>
--- a/drivers/gpu/vga/vga_switcheroo.c<br>
+++ b/drivers/gpu/vga/vga_switcheroo.c<br>
@@ -926,8 +926,7 @@ static void vga_switcheroo_debugfs_init(struct vgasr_priv *priv)<br>
 /**<br>
  * vga_switcheroo_process_delayed_switch() - helper for delayed switching<br>
  *<br>
- * Process a delayed switch if one is pending. DRM drivers should call this<br>
- * from their ->lastclose callback.<br>
+ * Process a delayed switch if one is pending.<br>
  *<br>
  * Return: 0 on success. -EINVAL if no delayed switch is pending, if the client<br>
  * has unregistered in the meantime or if there are other clients blocking the<br>
-- <br>
2.46.0<br>
<br>
</blockquote></div></div>