[Intel-gfx] [PATCH] drm/i915: Release the forgotten connector reference
Chris Wilson
chris at chris-wilson.co.uk
Wed Feb 1 19:58:31 UTC 2017
The reference was gained in
intel_modeset_update_connector_atomic_state() [called from
intel_modeset_setup_hw_state()] and is never lost if no client ever
performs a modeset.
[ 649.836069] WARNING: CPU: 6 PID: 8865 at drivers/gpu/drm/drm_mode_config.c:424 drm_mode_config_cleanup+0x21b/0x290 [drm]
[ 649.836078] Modules linked in: i915(-) intel_gtt drm_kms_helper cfbfillrect syscopyarea cfbimgblt sysfillrect sysimgblt fb_sys_fops cfbcopyarea drm
[ 649.836099] CPU: 6 PID: 8865 Comm: drv_selftest Not tainted 4.10.0-rc6+ #908
[ 649.836106] Hardware name: Intel Corporation 2012 Client Platform/Emerald Lake 2, BIOS ACRVMBY1.86C.0078.P00.1201161002 01/16/2012
[ 649.836114] Call Trace:
[ 649.836125] dump_stack+0x4d/0x6f
[ 649.836136] __warn+0xc1/0xe0
[ 649.836144] warn_slowpath_null+0x18/0x20
[ 649.836163] drm_mode_config_cleanup+0x21b/0x290 [drm]
[ 649.836213] intel_modeset_cleanup+0x59/0xa0 [i915]
[ 649.836242] i915_driver_unload+0x84/0x170 [i915]
[ 649.836277] i915_pci_remove+0x14/0x20 [i915]
[ 649.836287] pci_device_remove+0x28/0x60
[ 649.836301] device_release_driver_internal+0x132/0x1d0
[ 649.836313] driver_detach+0x3a/0x80
[ 649.836324] bus_remove_driver+0x47/0xa0
[ 649.836335] driver_unregister+0x27/0x50
[ 649.836344] pci_unregister_driver+0x34/0xa0
[ 649.836387] i915_exit+0x1a/0x71 [i915]
[ 649.836401] SyS_delete_module+0x173/0x1c0
[ 649.836413] entry_SYSCALL_64_fastpath+0x17/0x98
[ 649.836422] RIP: 0033:0x7f8d5a841ee7
[ 649.836432] RSP: 002b:00007fff89161a28 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
[ 649.836448] RAX: ffffffffffffffda RBX: 000055f6cd1db5c0 RCX: 00007f8d5a841ee7
[ 649.836458] RDX: 0000000000000000 RSI: 0000000000000800 RDI: 000055f6cd1da7b8
[ 649.836467] RBP: 00007f8d5aaee440 R08: 0000000000000000 R09: 00007fff89161a58
[ 649.836476] R10: 0000000000000062 R11: 0000000000000206 R12: 0000000000000000
[ 649.836486] R13: 000055f6cd1d9010 R14: 000000000000003a R15: 00007fff891609f0
[ 649.836514] ---[ end trace 0e529da316e2a3d1 ]---
[ 649.836536] [drm:drm_mode_config_cleanup [drm]] *ERROR* connector VGA-1 leaked!
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
drivers/gpu/drm/i915/intel_display.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index b44e9466d394..801ff845a2f3 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -17301,10 +17301,18 @@ void intel_connector_unregister(struct drm_connector *connector)
void intel_modeset_cleanup(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = to_i915(dev);
+ struct intel_connector *connector;
flush_work(&dev_priv->atomic_helper.free_work);
WARN_ON(!llist_empty(&dev_priv->atomic_helper.free_list));
+ for_each_intel_connector(dev, connector) {
+ if (connector->base.state->crtc) {
+ drm_connector_unreference(&connector->base);
+ connector->base.state->crtc = NULL;
+ }
+ }
+
intel_disable_gt_powersave(dev_priv);
/*
--
2.11.0
More information about the Intel-gfx
mailing list