From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f194.google.com ([209.85.128.194]:35467 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750817AbdBOJG6 (ORCPT ); Wed, 15 Feb 2017 04:06:58 -0500 Received: by mail-wr0-f194.google.com with SMTP id o16so30414173wra.2 for ; Wed, 15 Feb 2017 01:06:57 -0800 (PST) From: Chris Wilson To: intel-gfx@lists.freedesktop.org Cc: Chris Wilson , Lyude , Daniel Vetter , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Hans de Goede , stable@vger.kernel.org Subject: [PATCH] drm/i915: Only enable hotplug interrupts if the display interrupts are enabled Date: Wed, 15 Feb 2017 09:06:53 +0000 Message-Id: <20170215090653.28740-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: In order to prevent accessing the hpd registers outside of the display power wells, we should refrain from writing to the registers before the display interrupts are enabled. [ 4.740136] WARNING: CPU: 1 PID: 221 at drivers/gpu/drm/i915/intel_uncore.c:795 __unclaimed_reg_debug+0x44/0x50 [i915] [ 4.740155] Unclaimed read from register 0x1e1110 [ 4.740168] Modules linked in: i915(+) intel_gtt drm_kms_helper prime_numbers [ 4.740190] CPU: 1 PID: 221 Comm: systemd-udevd Not tainted 4.10.0-rc6+ #384 [ 4.740203] Hardware name: / , BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015 [ 4.740220] Call Trace: [ 4.740236] dump_stack+0x4d/0x6f [ 4.740251] __warn+0xc1/0xe0 [ 4.740265] warn_slowpath_fmt+0x4a/0x50 [ 4.740281] ? insert_work+0x77/0xc0 [ 4.740355] ? fwtable_write32+0x90/0x130 [i915] [ 4.740431] __unclaimed_reg_debug+0x44/0x50 [i915] [ 4.740507] fwtable_read32+0xd8/0x130 [i915] [ 4.740575] i915_hpd_irq_setup+0xa5/0x100 [i915] [ 4.740649] intel_hpd_init+0x68/0x80 [i915] [ 4.740716] i915_driver_load+0xe19/0x1380 [i915] [ 4.740784] i915_pci_probe+0x32/0x90 [i915] [ 4.740799] pci_device_probe+0x8b/0xf0 [ 4.740815] driver_probe_device+0x2b6/0x450 [ 4.740828] __driver_attach+0xda/0xe0 [ 4.740841] ? driver_probe_device+0x450/0x450 [ 4.740853] bus_for_each_dev+0x5b/0x90 [ 4.740865] driver_attach+0x19/0x20 [ 4.740878] bus_add_driver+0x166/0x260 [ 4.740892] driver_register+0x5b/0xd0 [ 4.740906] ? 0xffffffffa0166000 [ 4.740920] __pci_register_driver+0x47/0x50 [ 4.740985] i915_init+0x5c/0x5e [i915] [ 4.740999] do_one_initcall+0x3e/0x160 [ 4.741015] ? __vunmap+0x7c/0xc0 [ 4.741029] ? kmem_cache_alloc+0xcf/0x120 [ 4.741045] do_init_module+0x55/0x1c4 [ 4.741060] load_module+0x1f3f/0x25b0 [ 4.741073] ? __symbol_put+0x40/0x40 [ 4.741086] ? kernel_read_file+0x100/0x190 [ 4.741100] SYSC_finit_module+0xbc/0xf0 [ 4.741112] SyS_finit_module+0x9/0x10 [ 4.741125] entry_SYSCALL_64_fastpath+0x17/0x98 [ 4.741135] RIP: 0033:0x7f8559a140f9 [ 4.741145] RSP: 002b:00007fff7509a3e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 [ 4.741161] RAX: ffffffffffffffda RBX: 00007f855aba02d1 RCX: 00007f8559a140f9 [ 4.741172] RDX: 0000000000000000 RSI: 000055b6db0914f0 RDI: 0000000000000011 [ 4.741183] RBP: 0000000000020000 R08: 0000000000000000 R09: 000000000000000e [ 4.741193] R10: 0000000000000011 R11: 0000000000000246 R12: 000055b6db0854d0 [ 4.741204] R13: 000055b6db091150 R14: 0000000000000000 R15: 000055b6db035924 Fixes: 19625e85c6ec ("drm/i915: Enable polling when we don't have hpd") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97798 Suggested-by: Ville Syrjälä Signed-off-by: Chris Wilson Cc: Lyude Cc: Daniel Vetter Cc: Ville Syrjälä Cc: Hans de Goede Cc: stable@vger.kernel.org --- drivers/gpu/drm/i915/intel_hotplug.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c index 6a9c16508ab5..bad4f14858e3 100644 --- a/drivers/gpu/drm/i915/intel_hotplug.c +++ b/drivers/gpu/drm/i915/intel_hotplug.c @@ -224,7 +224,7 @@ static void intel_hpd_irq_storm_reenable_work(struct work_struct *work) } } } - if (dev_priv->display.hpd_irq_setup) + if (dev_priv->display_irqs_enabled && dev_priv->display.hpd_irq_setup) dev_priv->display.hpd_irq_setup(dev_priv); spin_unlock_irq(&dev_priv->irq_lock); @@ -430,7 +430,7 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv, } } - if (storm_detected) + if (storm_detected && dev_priv->display_irqs_enabled) dev_priv->display.hpd_irq_setup(dev_priv); spin_unlock(&dev_priv->irq_lock); @@ -476,10 +476,11 @@ 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) + if (dev_priv->display_irqs_enabled && dev_priv->display.hpd_irq_setup) { + spin_lock_irq(&dev_priv->irq_lock); dev_priv->display.hpd_irq_setup(dev_priv); - spin_unlock_irq(&dev_priv->irq_lock); + spin_unlock_irq(&dev_priv->irq_lock); + } } static void i915_hpd_poll_init_work(struct work_struct *work) -- 2.11.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH] drm/i915: Only enable hotplug interrupts if the display interrupts are enabled Date: Wed, 15 Feb 2017 09:06:53 +0000 Message-ID: <20170215090653.28740-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 28E8E6E1F5 for ; Wed, 15 Feb 2017 09:06:58 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id i10so30417536wrb.0 for ; Wed, 15 Feb 2017 01:06:58 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Hans de Goede , Daniel Vetter , stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org SW4gb3JkZXIgdG8gcHJldmVudCBhY2Nlc3NpbmcgdGhlIGhwZCByZWdpc3RlcnMgb3V0c2lkZSBv ZiB0aGUgZGlzcGxheQpwb3dlciB3ZWxscywgd2Ugc2hvdWxkIHJlZnJhaW4gZnJvbSB3cml0aW5n IHRvIHRoZSByZWdpc3RlcnMgYmVmb3JlIHRoZQpkaXNwbGF5IGludGVycnVwdHMgYXJlIGVuYWJs ZWQuCgpbICAgIDQuNzQwMTM2XSBXQVJOSU5HOiBDUFU6IDEgUElEOiAyMjEgYXQgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmM6Nzk1IF9fdW5jbGFpbWVkX3JlZ19kZWJ1ZysweDQ0 LzB4NTAgW2k5MTVdClsgICAgNC43NDAxNTVdIFVuY2xhaW1lZCByZWFkIGZyb20gcmVnaXN0ZXIg MHgxZTExMTAKWyAgICA0Ljc0MDE2OF0gTW9kdWxlcyBsaW5rZWQgaW46IGk5MTUoKykgaW50ZWxf Z3R0IGRybV9rbXNfaGVscGVyIHByaW1lX251bWJlcnMKWyAgICA0Ljc0MDE5MF0gQ1BVOiAxIFBJ RDogMjIxIENvbW06IHN5c3RlbWQtdWRldmQgTm90IHRhaW50ZWQgNC4xMC4wLXJjNisgIzM4NApb ICAgIDQuNzQwMjAzXSBIYXJkd2FyZSBuYW1lOiAgICAgICAgICAgICAgICAgIC8gICAgICAgICwg QklPUyBQWUJTV0NFTC44NkEuMDAyNy4yMDE1LjA1MDcuMTc1OCAwNS8wNy8yMDE1ClsgICAgNC43 NDAyMjBdIENhbGwgVHJhY2U6ClsgICAgNC43NDAyMzZdICBkdW1wX3N0YWNrKzB4NGQvMHg2Zgpb ICAgIDQuNzQwMjUxXSAgX193YXJuKzB4YzEvMHhlMApbICAgIDQuNzQwMjY1XSAgd2Fybl9zbG93 cGF0aF9mbXQrMHg0YS8weDUwClsgICAgNC43NDAyODFdICA/IGluc2VydF93b3JrKzB4NzcvMHhj MApbICAgIDQuNzQwMzU1XSAgPyBmd3RhYmxlX3dyaXRlMzIrMHg5MC8weDEzMCBbaTkxNV0KWyAg ICA0Ljc0MDQzMV0gIF9fdW5jbGFpbWVkX3JlZ19kZWJ1ZysweDQ0LzB4NTAgW2k5MTVdClsgICAg NC43NDA1MDddICBmd3RhYmxlX3JlYWQzMisweGQ4LzB4MTMwIFtpOTE1XQpbICAgIDQuNzQwNTc1 XSAgaTkxNV9ocGRfaXJxX3NldHVwKzB4YTUvMHgxMDAgW2k5MTVdClsgICAgNC43NDA2NDldICBp bnRlbF9ocGRfaW5pdCsweDY4LzB4ODAgW2k5MTVdClsgICAgNC43NDA3MTZdICBpOTE1X2RyaXZl cl9sb2FkKzB4ZTE5LzB4MTM4MCBbaTkxNV0KWyAgICA0Ljc0MDc4NF0gIGk5MTVfcGNpX3Byb2Jl KzB4MzIvMHg5MCBbaTkxNV0KWyAgICA0Ljc0MDc5OV0gIHBjaV9kZXZpY2VfcHJvYmUrMHg4Yi8w eGYwClsgICAgNC43NDA4MTVdICBkcml2ZXJfcHJvYmVfZGV2aWNlKzB4MmI2LzB4NDUwClsgICAg NC43NDA4MjhdICBfX2RyaXZlcl9hdHRhY2grMHhkYS8weGUwClsgICAgNC43NDA4NDFdICA/IGRy aXZlcl9wcm9iZV9kZXZpY2UrMHg0NTAvMHg0NTAKWyAgICA0Ljc0MDg1M10gIGJ1c19mb3JfZWFj aF9kZXYrMHg1Yi8weDkwClsgICAgNC43NDA4NjVdICBkcml2ZXJfYXR0YWNoKzB4MTkvMHgyMApb ICAgIDQuNzQwODc4XSAgYnVzX2FkZF9kcml2ZXIrMHgxNjYvMHgyNjAKWyAgICA0Ljc0MDg5Ml0g IGRyaXZlcl9yZWdpc3RlcisweDViLzB4ZDAKWyAgICA0Ljc0MDkwNl0gID8gMHhmZmZmZmZmZmEw MTY2MDAwClsgICAgNC43NDA5MjBdICBfX3BjaV9yZWdpc3Rlcl9kcml2ZXIrMHg0Ny8weDUwClsg ICAgNC43NDA5ODVdICBpOTE1X2luaXQrMHg1Yy8weDVlIFtpOTE1XQpbICAgIDQuNzQwOTk5XSAg ZG9fb25lX2luaXRjYWxsKzB4M2UvMHgxNjAKWyAgICA0Ljc0MTAxNV0gID8gX192dW5tYXArMHg3 Yy8weGMwClsgICAgNC43NDEwMjldICA/IGttZW1fY2FjaGVfYWxsb2MrMHhjZi8weDEyMApbICAg IDQuNzQxMDQ1XSAgZG9faW5pdF9tb2R1bGUrMHg1NS8weDFjNApbICAgIDQuNzQxMDYwXSAgbG9h ZF9tb2R1bGUrMHgxZjNmLzB4MjViMApbICAgIDQuNzQxMDczXSAgPyBfX3N5bWJvbF9wdXQrMHg0 MC8weDQwClsgICAgNC43NDEwODZdICA/IGtlcm5lbF9yZWFkX2ZpbGUrMHgxMDAvMHgxOTAKWyAg ICA0Ljc0MTEwMF0gIFNZU0NfZmluaXRfbW9kdWxlKzB4YmMvMHhmMApbICAgIDQuNzQxMTEyXSAg U3lTX2Zpbml0X21vZHVsZSsweDkvMHgxMApbICAgIDQuNzQxMTI1XSAgZW50cnlfU1lTQ0FMTF82 NF9mYXN0cGF0aCsweDE3LzB4OTgKWyAgICA0Ljc0MTEzNV0gUklQOiAwMDMzOjB4N2Y4NTU5YTE0 MGY5ClsgICAgNC43NDExNDVdIFJTUDogMDAyYjowMDAwN2ZmZjc1MDlhM2U4IEVGTEFHUzogMDAw MDAyNDYgT1JJR19SQVg6IDAwMDAwMDAwMDAwMDAxMzkKWyAgICA0Ljc0MTE2MV0gUkFYOiBmZmZm ZmZmZmZmZmZmZmRhIFJCWDogMDAwMDdmODU1YWJhMDJkMSBSQ1g6IDAwMDA3Zjg1NTlhMTQwZjkK WyAgICA0Ljc0MTE3Ml0gUkRYOiAwMDAwMDAwMDAwMDAwMDAwIFJTSTogMDAwMDU1YjZkYjA5MTRm MCBSREk6IDAwMDAwMDAwMDAwMDAwMTEKWyAgICA0Ljc0MTE4M10gUkJQOiAwMDAwMDAwMDAwMDIw MDAwIFIwODogMDAwMDAwMDAwMDAwMDAwMCBSMDk6IDAwMDAwMDAwMDAwMDAwMGUKWyAgICA0Ljc0 MTE5M10gUjEwOiAwMDAwMDAwMDAwMDAwMDExIFIxMTogMDAwMDAwMDAwMDAwMDI0NiBSMTI6IDAw MDA1NWI2ZGIwODU0ZDAKWyAgICA0Ljc0MTIwNF0gUjEzOiAwMDAwNTViNmRiMDkxMTUwIFIxNDog MDAwMDAwMDAwMDAwMDAwMCBSMTU6IDAwMDA1NWI2ZGIwMzU5MjQKCkZpeGVzOiAxOTYyNWU4NWM2 ZWMgKCJkcm0vaTkxNTogRW5hYmxlIHBvbGxpbmcgd2hlbiB3ZSBkb24ndCBoYXZlIGhwZCIpCkJ1 Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzc5 OApTdWdnZXN0ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgpDYzogTHl1ZGUgPGNwYXVsQHJlZGhhdC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KQ2M6IEhhbnMgZGUgR29lZGUgPGp3cmRlZ29lZGVAZmVkb3JhcHJvamVj dC5vcmc+CkNjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaG90cGx1Zy5jIHwgMTEgKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGlu c2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaG90cGx1Zy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1 Zy5jCmluZGV4IDZhOWMxNjUwOGFiNS4uYmFkNGYxNDg1OGUzIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaG90cGx1Zy5jCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaHBk X2lycV9zdG9ybV9yZWVuYWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCX0K IAkJfQogCX0KLQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCkKKwlpZiAoZGV2 X3ByaXYtPmRpc3BsYXlfaXJxc19lbmFibGVkICYmIGRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFf c2V0dXApCiAJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAoZGV2X3ByaXYpOwogCXNw aW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIApAQCAtNDMwLDcgKzQzMCw3IEBA IHZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAkJfQogCX0KIAotCWlmIChzdG9ybV9kZXRlY3RlZCkKKwlpZiAoc3Rvcm1fZGV0ZWN0 ZWQgJiYgZGV2X3ByaXYtPmRpc3BsYXlfaXJxc19lbmFibGVkKQogCQlkZXZfcHJpdi0+ZGlzcGxh eS5ocGRfaXJxX3NldHVwKGRldl9wcml2KTsKIAlzcGluX3VubG9jaygmZGV2X3ByaXYtPmlycV9s b2NrKTsKIApAQCAtNDc2LDEwICs0NzYsMTEgQEAgdm9pZCBpbnRlbF9ocGRfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogSW50ZXJydXB0IHNldHVwIGlzIGFscmVh ZHkgZ3VhcmFudGVlZCB0byBiZSBzaW5nbGUtdGhyZWFkZWQsIHRoaXMgaXMKIAkgKiBqdXN0IHRv IG1ha2UgdGhlIGFzc2VydF9zcGluX2xvY2tlZCBjaGVja3MgaGFwcHkuCiAJICovCi0Jc3Bpbl9s b2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKLQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaHBk X2lycV9zZXR1cCkKKwlpZiAoZGV2X3ByaXYtPmRpc3BsYXlfaXJxc19lbmFibGVkICYmIGRldl9w cml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXApIHsKKwkJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYt PmlycV9sb2NrKTsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cChkZXZfcHJpdik7 Ci0Jc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOworCQlzcGluX3VubG9ja19p cnEoJmRldl9wcml2LT5pcnFfbG9jayk7CisJfQogfQogCiBzdGF0aWMgdm9pZCBpOTE1X2hwZF9w b2xsX2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCi0tIAoyLjExLjAKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=