Bug 98255

Summary: [bsw] unclaimed read/write to PORT_HOTPLUG_EN during init
Product: DRI Reporter: Chris Wilson <chris>
Component: DRM/IntelAssignee: Intel GFX Bugs mailing list <intel-gfx-bugs>
Status: CLOSED DUPLICATE QA Contact: Intel GFX Bugs mailing list <intel-gfx-bugs>
Severity: normal    
Priority: medium CC: intel-gfx-bugs
Version: XOrg git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: BSW/CHT i915 features: display/Other

Description Chris Wilson 2016-10-14 12:40:48 UTC
[    4.990273] ------------[ cut here ]------------
[    4.990351] WARNING: CPU: 1 PID: 192 at drivers/gpu/drm/i915/intel_uncore.c:818 __unclaimed_reg_debug+0x40/0x50 [i915]
[    4.990364] Unclaimed read from register 0x1e1110
[    4.990372] Modules linked in: i915(+) nls_utf8 nls_cp437 vfat fat crct10dif_pclmul crc32c_intel aesni_intel aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd intel_gtt drm_kms_helper
[    4.990425] CPU: 1 PID: 192 Comm: systemd-udevd Not tainted 4.8.0+ #118
[    4.990433] Hardware name:                  /        , BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015
[    4.990445]  0000000000000000 ffff880275a0f9b8 ffffffff8124a0ce ffff880275a0fa08
[    4.990464]  0000000000000000 ffff880275a0f9f8 ffffffff8104e501 0000033281070494
[    4.990482]  ffff880276308000 00000000001e1110 ffff880276308720 0000000000000006
[    4.990499] Call Trace:
[    4.990512]  [<ffffffff8124a0ce>] dump_stack+0x4d/0x6f
[    4.990523]  [<ffffffff8104e501>] __warn+0xc1/0xe0
[    4.990533]  [<ffffffff8104e56a>] warn_slowpath_fmt+0x4a/0x50
[    4.990544]  [<ffffffff810630e7>] ? insert_work+0x77/0xc0
[    4.990592]  [<ffffffffa010d170>] __unclaimed_reg_debug+0x40/0x50 [i915]
[    4.990640]  [<ffffffffa010ed78>] fwtable_read32+0xd8/0x130 [i915]
[    4.990684]  [<ffffffffa00c3740>] i915_hpd_irq_setup+0xa0/0xf0 [i915]
[    4.990732]  [<ffffffffa0140120>] intel_hpd_init+0x70/0x90 [i915]
[    4.990775]  [<ffffffffa00bd668>] i915_driver_load+0xcd8/0x1280 [i915]
[    4.990893]  [<ffffffffa00c8248>] i915_pci_probe+0x28/0x40 [i915]
[    4.990905]  [<ffffffff8128218b>] pci_device_probe+0x8b/0xf0
[    4.990916]  [<ffffffff81328afe>] driver_probe_device+0x21e/0x430
[    4.990925]  [<ffffffff81328dea>] __driver_attach+0xda/0xe0
[    4.990935]  [<ffffffff81328d10>] ? driver_probe_device+0x430/0x430
[    4.990944]  [<ffffffff8132686b>] bus_for_each_dev+0x5b/0x90
[    4.990953]  [<ffffffff81328289>] driver_attach+0x19/0x20
[    4.990962]  [<ffffffff81327d06>] bus_add_driver+0x166/0x260
[    4.990970]  [<ffffffffa01ca000>] ? 0xffffffffa01ca000
[    4.990979]  [<ffffffff8132950b>] driver_register+0x5b/0xd0
[    4.990987]  [<ffffffffa01ca000>] ? 0xffffffffa01ca000
[    4.990997]  [<ffffffff81280f57>] __pci_register_driver+0x47/0x50
[    4.991039]  [<ffffffffa01ca043>] i915_init+0x43/0x1000 [i915]
[    4.991050]  [<ffffffff8100044b>] do_one_initcall+0x4b/0x170
[    4.991060]  [<ffffffff8149d46f>] ? preempt_schedule_common+0x1f/0x40
[    4.991069]  [<ffffffff8149d4a7>] ? _cond_resched+0x17/0x20
[    4.991080]  [<ffffffff810deeb4>] do_init_module+0x55/0x1e1
[    4.991089]  [<ffffffff810b5c22>] load_module+0x24a2/0x2880
[    4.991098]  [<ffffffff810b28c0>] ? __symbol_put+0x40/0x40
[    4.991108]  [<ffffffff81145d86>] ? vfs_read+0x116/0x130
[    4.991118]  [<ffffffff810b620c>] SYSC_finit_module+0xbc/0xf0
[    4.991127]  [<ffffffff810b6259>] SyS_finit_module+0x9/0x10
[    4.991136]  [<ffffffff814a125f>] entry_SYSCALL_64_fastpath+0x17/0x93
[    4.991144] ---[ end trace 6710c23cc2cabc84 ]---
Comment 1 Chris Wilson 2016-10-14 12:47:19 UTC
Food for thought:

diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 334d47b..2fe29d8 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -219,8 +219,10 @@ static void intel_hpd_irq_storm_reenable_work(struct work_struct *work)
                        }
                }
        }
-       if (dev_priv->display.hpd_irq_setup)
-               dev_priv->display.hpd_irq_setup(dev_priv);
+       if (dev_priv->display_irqs_enabled) {
+               if (dev_priv->display.hpd_irq_setup)
+                       dev_priv->display.hpd_irq_setup(dev_priv);
+       }
        spin_unlock_irq(&dev_priv->irq_lock);
 
        intel_runtime_pm_put(dev_priv);
@@ -425,8 +427,10 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
                }
        }
 
-       if (storm_detected)
-               dev_priv->display.hpd_irq_setup(dev_priv);
+       if (dev_priv->display_irqs_enabled) {
+               if (storm_detected)
+                       dev_priv->display.hpd_irq_setup(dev_priv);
+       }
        spin_unlock(&dev_priv->irq_lock);
 
        /*
@@ -471,10 +475,16 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
         * Interrupt setup is already guaranteed to be single-threaded, this is
         * just to make the assert_spin_locked checks happy.
         */
-       spin_lock_irq(&dev_priv->irq_lock);
-       if (dev_priv->display.hpd_irq_setup)
-               dev_priv->display.hpd_irq_setup(dev_priv);
-       spin_unlock_irq(&dev_priv->irq_lock);
+       if (dev_priv->display_irqs_enabled) {
+               intel_runtime_pm_get(dev_priv);
+
+               spin_lock_irq(&dev_priv->irq_lock);
+               if (dev_priv->display.hpd_irq_setup)
+                       dev_priv->display.hpd_irq_setup(dev_priv);
+               spin_unlock_irq(&dev_priv->irq_lock);
+
+               intel_runtime_pm_put(dev_priv);
+       }
 }
Comment 2 Jari Tahvanainen 2017-02-08 08:30:39 UTC

*** This bug has been marked as a duplicate of bug 97798 ***

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.