From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915/debugfs: Add i915_hpd_storm_ctl Date: Tue, 07 Feb 2017 15:41:16 +0200 Message-ID: <87tw86unib.fsf@intel.com> References: <20170204022901.24758-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170204022901.24758-1-lyude@redhat.com> 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: Lyude , David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gU2F0LCAwNCBGZWIgMjAxNywgTHl1ZGUgPGx5dWRlQHJlZGhhdC5jb20+IHdyb3RlOgo+IFRo aXMgYWRkcyBhIGZpbGUgaW4gaTkxNSdzIGRlYnVnZnMgZGlyZWN0b3J5IHRoYXQgYWxsb3dzIHVz ZXJzcGFjZSB0bwo+IG1hbnVhbGx5IGNvbnRyb2wgSFBEIHN0b3JtIGRldGVjdGlvbi4gVGhpcyBp cyBtYWlubHkgZm9yIGhvdHBsdWdnaW5nCj4gdGVzdHMsIHdoZXJlIHdlIG1pZ2h0IHdhbnQgdG8g dGVzdCBIUEQgc3Rvcm0gZnVuY3Rpb25hbGl0eSBvciBkaXNhYmxlCj4gc3Rvcm0gZGV0ZWN0aW9u IHRvIHNwZWVkIHVwIGhvdHBsdWdnaW5nIHRlc3RzIHdpdGhvdXQgYnJlYWtpbmcgYW55dGhpbmcu Cj4KPiBTaWduZWQtb2ZmLWJ5OiBMeXVkZSA8bHl1ZGVAcmVkaGF0LmNvbT4KPiBDYzogVG9tZXUg Vml6b3NvIDx0b21ldUB0b21ldXZpem9zby5uZXQ+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jICB8IDEwMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDIgKwo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMgfCAgIDMgKy0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAx MDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCj4gaW5kZXggM2FlMDY1Ni4uYjk4NWM3YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gQEAgLTQ2MjQsNiArNDYyNCwxMDUgQEAgc3RhdGljIGludCBpOTE1 X2ZvcmNld2FrZV9jcmVhdGUoc3RydWN0IGRlbnRyeSAqcm9vdCwgc3RydWN0IGRybV9taW5vciAq bWlub3IpCj4gIAlyZXR1cm4gZHJtX2FkZF9mYWtlX2luZm9fbm9kZShtaW5vciwgZW50LCAmaTkx NV9mb3JjZXdha2VfZm9wcyk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgaTkxNV9ocGRfc3Rvcm1f Y3RsX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ICsKPiArCWlmIChkZWxh eWVkX3dvcmtfcGVuZGluZygmZGV2X3ByaXYtPmhvdHBsdWcucmVlbmFibGVfd29yaykpCj4gKwkJ c2VxX3ByaW50ZihtLCAiZGV0ZWN0ZWRcbiIpOwo+ICsJZWxzZSBpZiAoZGV2X3ByaXYtPmhvdHBs dWcuaHBkX3N0b3JtX2RldGVjdF9lbmFibGVkKQo+ICsJCXNlcV9wcmludGYobSwgIm9uXG4iKTsK PiArCWVsc2UKPiArCQlzZXFfcHJpbnRmKG0sICJvZmZcbiIpOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1X2hwZF9zdG9ybV9yZXNldChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCWludCBpOwo+ICsKPiArCXNwaW5fbG9ja19p cnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShk ZXZfcHJpdi0+aG90cGx1Zy5zdGF0cyk7IGkrKykgewo+ICsJCWRldl9wcml2LT5ob3RwbHVnLnN0 YXRzW2ldLmNvdW50ID0gMDsKPiArCQlkZXZfcHJpdi0+aG90cGx1Zy5zdGF0c1tpXS5sYXN0X2pp ZmZpZXMgPSBqaWZmaWVzOwo+ICsJfQo+ICsJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJx X2xvY2spOwo+ICsKPiArCWlmIChkZWxheWVkX3dvcmtfcGVuZGluZygmZGV2X3ByaXYtPmhvdHBs dWcucmVlbmFibGVfd29yaykpCj4gKwkJZmx1c2hfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+aG90 cGx1Zy5yZWVuYWJsZV93b3JrKTsKPiArCWVsc2UKPiArCQlzY2hlZHVsZV9kZWxheWVkX3dvcmso JmRldl9wcml2LT5ob3RwbHVnLnJlZW5hYmxlX3dvcmssIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMg c3NpemVfdCBpOTE1X2hwZF9zdG9ybV9jdGxfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCj4gKwkJ CQkJY29uc3QgY2hhciBfX3VzZXIgKnVidWYsIHNpemVfdCBsZW4sCj4gKwkJCQkJbG9mZl90ICpv ZmZwKQo+ICt7Cj4gKwlzdHJ1Y3Qgc2VxX2ZpbGUgKm0gPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ICsJc3Ry dWN0IGk5MTVfaG90cGx1ZyAqaG90cGx1ZyA9ICZkZXZfcHJpdi0+aG90cGx1ZzsKPiArCWNoYXIg dG1wWzE2XTsKPiArCWVudW0gewo+ICsJCUhQRF9TVE9STV9ESVNBQkxFID0gMCwKPiArCQlIUERf U1RPUk1fRU5BQkxFLAo+ICsJCUhQRF9TVE9STV9SRVNFVAo+ICsJfSBhY3Rpb247Cj4gKwo+ICsJ aWYgKGxlbiA+PSBzaXplb2YodG1wKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAo Y29weV9mcm9tX3VzZXIodG1wLCB1YnVmLCBsZW4pKQo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsK PiArCXRtcFtsZW5dID0gJ1wwJzsKPiArCj4gKwlpZiAoc3RyY21wKHRtcCwgIm9mZiIpID09IDAg fHwgc3RyY21wKHRtcCwgIm9mZlxuIikgPT0gMCkKPiArCQlhY3Rpb24gPSBIUERfU1RPUk1fRElT QUJMRTsKPiArCWVsc2UgaWYgKHN0cmNtcCh0bXAsICJvbiIpID09IDAgfHwgc3RyY21wKHRtcCwg Im9uXG4iKSA9PSAwKQo+ICsJCWFjdGlvbiA9IEhQRF9TVE9STV9FTkFCTEU7Cj4gKwllbHNlIGlm IChzdHJjbXAodG1wLCAicmVzZXQiKSA9PSAwIHx8IHN0cmNtcCh0bXAsICJyZXNldFxuIikgPT0g MCkKPiArCQlhY3Rpb24gPSBIUERfU1RPUk1fUkVTRVQ7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsJc3dpdGNoIChhY3Rpb24pIHsKPiArCQljYXNlIEhQRF9TVE9STV9ESVNB QkxFOgo+ICsJCQlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgSFBEIHN0b3JtIGRldGVjdGlvblxu Iik7Cj4gKwo+ICsJCQlXUklURV9PTkNFKGhvdHBsdWctPmhwZF9zdG9ybV9kZXRlY3RfZW5hYmxl ZCwgZmFsc2UpOwo+ICsJCQlpOTE1X2hwZF9zdG9ybV9yZXNldChkZXZfcHJpdik7Cj4gKwkJCWJy ZWFrOwo+ICsJCWNhc2UgSFBEX1NUT1JNX0VOQUJMRToKPiArCQkJRFJNX0RFQlVHX0tNUygiRW5h YmxpbmcgSFBEIHN0b3JtIGRldGVjdGlvblxuIik7Cj4gKwo+ICsJCQlpOTE1X2hwZF9zdG9ybV9y ZXNldChkZXZfcHJpdik7Cj4gKwkJCWhvdHBsdWctPmhwZF9zdG9ybV9kZXRlY3RfZW5hYmxlZCA9 IHRydWU7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgSFBEX1NUT1JNX1JFU0VUOgo+ICsJCQlEUk1f REVCVUdfS01TKCJSZXNldHRpbmcgSFBEIHN0b3JtIHN0YXRzXG4iKTsKPiArCj4gKwkJCWk5MTVf aHBkX3N0b3JtX3Jlc2V0KGRldl9wcml2KTsKPiArCQkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmV0 dXJuIGxlbjsKPiArfQo+ICsKPiArc3RhdGljIGludCBpOTE1X2hwZF9zdG9ybV9jdGxfb3Blbihz dHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiArewo+ICsJcmV0dXJuIHNp bmdsZV9vcGVuKGZpbGUsIGk5MTVfaHBkX3N0b3JtX2N0bF9zaG93LCBpbm9kZS0+aV9wcml2YXRl KTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9o cGRfc3Rvcm1fY3RsX2ZvcHMgPSB7Cj4gKwkub3duZXIgPSBUSElTX01PRFVMRSwKPiArCS5vcGVu ID0gaTkxNV9ocGRfc3Rvcm1fY3RsX29wZW4sCj4gKwkucmVhZCA9IHNlcV9yZWFkLAo+ICsJLmxs c2VlayA9IHNlcV9sc2VlaywKPiArCS5yZWxlYXNlID0gc2luZ2xlX3JlbGVhc2UsCj4gKwkud3Jp dGUgPSBpOTE1X2hwZF9zdG9ybV9jdGxfd3JpdGUKPiArfTsKPiArCj4gIHN0YXRpYyBpbnQgaTkx NV9kZWJ1Z2ZzX2NyZWF0ZShzdHJ1Y3QgZGVudHJ5ICpyb290LAo+ICAJCQkgICAgICAgc3RydWN0 IGRybV9taW5vciAqbWlub3IsCj4gIAkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAo+IEBAIC00 NzE3LDcgKzQ4MTYsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfZGVidWdmc19maWxlcyB7 Cj4gIAl7Imk5MTVfZHBfdGVzdF9kYXRhIiwgJmk5MTVfZGlzcGxheXBvcnRfdGVzdF9kYXRhX2Zv cHN9LAo+ICAJeyJpOTE1X2RwX3Rlc3RfdHlwZSIsICZpOTE1X2Rpc3BsYXlwb3J0X3Rlc3RfdHlw ZV9mb3BzfSwKPiAgCXsiaTkxNV9kcF90ZXN0X2FjdGl2ZSIsICZpOTE1X2Rpc3BsYXlwb3J0X3Rl c3RfYWN0aXZlX2ZvcHN9LAo+IC0JeyJpOTE1X2d1Y19sb2dfY29udHJvbCIsICZpOTE1X2d1Y19s b2dfY29udHJvbF9mb3BzfQo+ICsJeyJpOTE1X2d1Y19sb2dfY29udHJvbCIsICZpOTE1X2d1Y19s b2dfY29udHJvbF9mb3BzfSwKPiArCXsiaTkxNV9ocGRfc3Rvcm1fY3RsIiwgJmk5MTVfaHBkX3N0 b3JtX2N0bF9mb3BzfQo+ICB9Owo+ICAKPiAgaW50IGk5MTVfZGVidWdmc19yZWdpc3RlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g aW5kZXggYmQ1YTM4Yi4uYjExNTk2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBA IC00MDcsNiArNDA3LDggQEAgc3RydWN0IGk5MTVfaG90cGx1ZyB7Cj4gIAlzdHJ1Y3Qgd29ya19z dHJ1Y3QgcG9sbF9pbml0X3dvcms7Cj4gIAlib29sIHBvbGxfZW5hYmxlZDsKPiAgCj4gKwlib29s IGhwZF9zdG9ybV9kZXRlY3RfZW5hYmxlZDsKPiArCj4gIAkvKgo+ICAJICogaWYgd2UgZ2V0IGEg SFBEIGlycSBmcm9tIERQIGFuZCBhIEhQRCBpcnEgZnJvbSBub24tRFAKPiAgCSAqIHRoZSBub24t RFAgSFBEIGNvdWxkIGJsb2NrIHRoZSB3b3JrcXVldWUgb24gYSBtb2RlIGNvbmZpZwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IDA1OWQ2NmIuLmVkMzI5MmQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaXJxLmMKPiBAQCAtNDIyNSw2ICs0MjI1LDggQEAgdm9pZCBpbnRlbF9pcnFfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoIUlTX0dFTjIoZGV2 X3ByaXYpKQo+ICAJCWRldi0+dmJsYW5rX2Rpc2FibGVfaW1tZWRpYXRlID0gdHJ1ZTsKPiAgCj4g KwlkZXZfcHJpdi0+aG90cGx1Zy5ocGRfc3Rvcm1fZGV0ZWN0X2VuYWJsZWQgPSB0cnVlOwo+ICsK PiAgCWRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX3RpbWVzdGFtcCA9IGk5MTVfZ2V0X3ZibGFua190 aW1lc3RhbXA7Cj4gIAlkZXYtPmRyaXZlci0+Z2V0X3NjYW5vdXRfcG9zaXRpb24gPSBpOTE1X2dl dF9jcnRjX3NjYW5vdXRwb3M7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ob3RwbHVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMK PiBpbmRleCBiNjJlM2Y4Li5jMWUzN2RkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hvdHBsdWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hv dHBsdWcuYwo+IEBAIC0xMjksNyArMTI5LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfaHBkX2lycV9z dG9ybV9kZXRlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCWRldl9w cml2LT5ob3RwbHVnLnN0YXRzW3Bpbl0ubGFzdF9qaWZmaWVzID0gamlmZmllczsKPiAgCQlkZXZf cHJpdi0+aG90cGx1Zy5zdGF0c1twaW5dLmNvdW50ID0gMDsKPiAgCQlEUk1fREVCVUdfS01TKCJS ZWNlaXZlZCBIUEQgaW50ZXJydXB0IG9uIFBJTiAlZCAtIGNudDogMFxuIiwgcGluKTsKPiAtCX0g ZWxzZSBpZiAoZGV2X3ByaXYtPmhvdHBsdWcuc3RhdHNbcGluXS5jb3VudCA+IEhQRF9TVE9STV9U SFJFU0hPTEQpIHsKPiArCX0gZWxzZSBpZiAoZGV2X3ByaXYtPmhvdHBsdWcuc3RhdHNbcGluXS5j b3VudCA+IEhQRF9TVE9STV9USFJFU0hPTEQgJiYKPiArCQkgICBkZXZfcHJpdi0+aG90cGx1Zy5o cGRfc3Rvcm1fZGV0ZWN0X2VuYWJsZWQpIHsKCkhvdyBhYm91dCBtYWtpbmcgdGhlIHRocmVzaG9s ZCBjb25maWd1cmFibGUsIHdpdGggMCBiZWluZyBvZmY/CgpCUiwKSmFuaS4KCgpQUy4gSSBkbyB3 b25kZXIgaWYgYW55b25lIGJlc2lkZXMgRWdiZXJ0IGhhcyByZWFsbHkgc2VlbiB0aGlzIG11Y2gg aW4KdGhlIHdpbGQuLi4KCgo+ICAJCWRldl9wcml2LT5ob3RwbHVnLnN0YXRzW3Bpbl0uc3RhdGUg PSBIUERfTUFSS19ESVNBQkxFRDsKPiAgCQlEUk1fREVCVUdfS01TKCJIUEQgaW50ZXJydXB0IHN0 b3JtIGRldGVjdGVkIG9uIFBJTiAlZFxuIiwgcGluKTsKPiAgCQlzdG9ybSA9IHRydWU7CgotLSAK SmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754532AbdBGNlV (ORCPT ); Tue, 7 Feb 2017 08:41:21 -0500 Received: from mga07.intel.com ([134.134.136.100]:65062 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754472AbdBGNlU (ORCPT ); Tue, 7 Feb 2017 08:41:20 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,346,1477983600"; d="scan'208";a="818051548" From: Jani Nikula To: Lyude , intel-gfx@lists.freedesktop.org Cc: Lyude , Tomeu Vizoso , Daniel Vetter , David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm/i915/debugfs: Add i915_hpd_storm_ctl In-Reply-To: <20170204022901.24758-1-lyude@redhat.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20170204022901.24758-1-lyude@redhat.com> Date: Tue, 07 Feb 2017 15:41:16 +0200 Message-ID: <87tw86unib.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, 04 Feb 2017, Lyude wrote: > This adds a file in i915's debugfs directory that allows userspace to > manually control HPD storm detection. This is mainly for hotplugging > tests, where we might want to test HPD storm functionality or disable > storm detection to speed up hotplugging tests without breaking anything. > > Signed-off-by: Lyude > Cc: Tomeu Vizoso > --- > drivers/gpu/drm/i915/i915_debugfs.c | 102 ++++++++++++++++++++++++++++++++++- > drivers/gpu/drm/i915/i915_drv.h | 2 + > drivers/gpu/drm/i915/i915_irq.c | 2 + > drivers/gpu/drm/i915/intel_hotplug.c | 3 +- > 4 files changed, 107 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index 3ae0656..b985c7b 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -4624,6 +4624,105 @@ static int i915_forcewake_create(struct dentry *root, struct drm_minor *minor) > return drm_add_fake_info_node(minor, ent, &i915_forcewake_fops); > } > > +static int i915_hpd_storm_ctl_show(struct seq_file *m, void *data) > +{ > + struct drm_i915_private *dev_priv = m->private; > + > + if (delayed_work_pending(&dev_priv->hotplug.reenable_work)) > + seq_printf(m, "detected\n"); > + else if (dev_priv->hotplug.hpd_storm_detect_enabled) > + seq_printf(m, "on\n"); > + else > + seq_printf(m, "off\n"); > + > + return 0; > +} > + > +static void i915_hpd_storm_reset(struct drm_i915_private *dev_priv) > +{ > + int i; > + > + spin_lock_irq(&dev_priv->irq_lock); > + for (i = 0; i < ARRAY_SIZE(dev_priv->hotplug.stats); i++) { > + dev_priv->hotplug.stats[i].count = 0; > + dev_priv->hotplug.stats[i].last_jiffies = jiffies; > + } > + spin_unlock_irq(&dev_priv->irq_lock); > + > + if (delayed_work_pending(&dev_priv->hotplug.reenable_work)) > + flush_delayed_work(&dev_priv->hotplug.reenable_work); > + else > + schedule_delayed_work(&dev_priv->hotplug.reenable_work, 0); > +} > + > +static ssize_t i915_hpd_storm_ctl_write(struct file *file, > + const char __user *ubuf, size_t len, > + loff_t *offp) > +{ > + struct seq_file *m = file->private_data; > + struct drm_i915_private *dev_priv = m->private; > + struct i915_hotplug *hotplug = &dev_priv->hotplug; > + char tmp[16]; > + enum { > + HPD_STORM_DISABLE = 0, > + HPD_STORM_ENABLE, > + HPD_STORM_RESET > + } action; > + > + if (len >= sizeof(tmp)) > + return -EINVAL; > + > + if (copy_from_user(tmp, ubuf, len)) > + return -EFAULT; > + > + tmp[len] = '\0'; > + > + if (strcmp(tmp, "off") == 0 || strcmp(tmp, "off\n") == 0) > + action = HPD_STORM_DISABLE; > + else if (strcmp(tmp, "on") == 0 || strcmp(tmp, "on\n") == 0) > + action = HPD_STORM_ENABLE; > + else if (strcmp(tmp, "reset") == 0 || strcmp(tmp, "reset\n") == 0) > + action = HPD_STORM_RESET; > + else > + return -EINVAL; > + > + switch (action) { > + case HPD_STORM_DISABLE: > + DRM_DEBUG_KMS("Disabling HPD storm detection\n"); > + > + WRITE_ONCE(hotplug->hpd_storm_detect_enabled, false); > + i915_hpd_storm_reset(dev_priv); > + break; > + case HPD_STORM_ENABLE: > + DRM_DEBUG_KMS("Enabling HPD storm detection\n"); > + > + i915_hpd_storm_reset(dev_priv); > + hotplug->hpd_storm_detect_enabled = true; > + break; > + case HPD_STORM_RESET: > + DRM_DEBUG_KMS("Resetting HPD storm stats\n"); > + > + i915_hpd_storm_reset(dev_priv); > + break; > + } > + > + return len; > +} > + > +static int i915_hpd_storm_ctl_open(struct inode *inode, struct file *file) > +{ > + return single_open(file, i915_hpd_storm_ctl_show, inode->i_private); > +} > + > +static const struct file_operations i915_hpd_storm_ctl_fops = { > + .owner = THIS_MODULE, > + .open = i915_hpd_storm_ctl_open, > + .read = seq_read, > + .llseek = seq_lseek, > + .release = single_release, > + .write = i915_hpd_storm_ctl_write > +}; > + > static int i915_debugfs_create(struct dentry *root, > struct drm_minor *minor, > const char *name, > @@ -4717,7 +4816,8 @@ static const struct i915_debugfs_files { > {"i915_dp_test_data", &i915_displayport_test_data_fops}, > {"i915_dp_test_type", &i915_displayport_test_type_fops}, > {"i915_dp_test_active", &i915_displayport_test_active_fops}, > - {"i915_guc_log_control", &i915_guc_log_control_fops} > + {"i915_guc_log_control", &i915_guc_log_control_fops}, > + {"i915_hpd_storm_ctl", &i915_hpd_storm_ctl_fops} > }; > > int i915_debugfs_register(struct drm_i915_private *dev_priv) > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index bd5a38b..b11596f 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -407,6 +407,8 @@ struct i915_hotplug { > struct work_struct poll_init_work; > bool poll_enabled; > > + bool hpd_storm_detect_enabled; > + > /* > * if we get a HPD irq from DP and a HPD irq from non-DP > * the non-DP HPD could block the workqueue on a mode config > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 059d66b..ed3292d 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -4225,6 +4225,8 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > if (!IS_GEN2(dev_priv)) > dev->vblank_disable_immediate = true; > > + dev_priv->hotplug.hpd_storm_detect_enabled = true; > + > dev->driver->get_vblank_timestamp = i915_get_vblank_timestamp; > dev->driver->get_scanout_position = i915_get_crtc_scanoutpos; > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c > index b62e3f8..c1e37dd 100644 > --- a/drivers/gpu/drm/i915/intel_hotplug.c > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > @@ -129,7 +129,8 @@ static bool intel_hpd_irq_storm_detect(struct drm_i915_private *dev_priv, > dev_priv->hotplug.stats[pin].last_jiffies = jiffies; > dev_priv->hotplug.stats[pin].count = 0; > DRM_DEBUG_KMS("Received HPD interrupt on PIN %d - cnt: 0\n", pin); > - } else if (dev_priv->hotplug.stats[pin].count > HPD_STORM_THRESHOLD) { > + } else if (dev_priv->hotplug.stats[pin].count > HPD_STORM_THRESHOLD && > + dev_priv->hotplug.hpd_storm_detect_enabled) { How about making the threshold configurable, with 0 being off? BR, Jani. PS. I do wonder if anyone besides Egbert has really seen this much in the wild... > dev_priv->hotplug.stats[pin].state = HPD_MARK_DISABLED; > DRM_DEBUG_KMS("HPD interrupt storm detected on PIN %d\n", pin); > storm = true; -- Jani Nikula, Intel Open Source Technology Center