Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/1] xhci: Prevent bus suspend if a port connect change or polling state is detected From: Mathias Nyman Message-Id: <1542274721-18565-2-git-send-email-mathias.nyman@linux.intel.com> Date: Thu, 15 Nov 2018 11:38:41 +0200 To: gregkh@linuxfoundation.org Cc: linux-usb@vger.kernel.org, Mathias Nyman , stable@vger.kernel.org List-ID: VVNCMyByb290aHViIG1pZ2h0IGF1dG9zdXNwZW5kIGJlZm9yZSBhIHBsdWdnZWQgVVNCMyBkZXZp Y2UgaXMgZGV0ZWN0ZWQsCmNhdXNpbmcgVVNCMyBkZXZpY2UgZW51bWVyYXRpb24gZmFpbHVyZS4K ClVTQjMgZGV2aWNlcyBkb24ndCBzaG93IHVwIGFzIGNvbm5lY3RlZCBhbmQgZW5hYmxlZCB1bnRp bCBVU0IzIGxpbmsgdHJhaW5pZwpjb21wbGV0ZXMuIE9uIGEgZmFzdCBib290aW5nIHBsYXRmb3Jt IHdpdGggYSBzbG93IFVTQjMgbGluayB0cmFpbmluZyB0aGUKbGluayBtaWdodCByZWFjaCB0aGUg Y29ubmVjdGVkIGVuYWJsZWQgc3RhdGUganVzdCBhcyB0aGUgYnVzIGlzIHN1c3BlbmRpbmcuCgpJ ZiB0aGlzIGRldmljZSBpcyBkaXNjb3ZlcmVkIGZpcnN0IHRpbWUgYnkgdGhlIHhoY2lfYnVzX3N1 c3BlbmQoKSByb3V0aW5lCml0IHdpbGwgYmUgcHV0IHRvIFUzIHN1c3BlbmRlZCBzdGF0ZSBsaWtl IHRoZSBvdGhlciBwb3J0cyB3aGljaCBmYWlsZWQgdG8Kc3VzcGVuZCBlYXJsaWVyLgoKVGhlIGh1 YiB0aHJlYWQgd2lsbCBub3RpY2UgdGhlIGNvbm5lY3QgY2hhbmdlIGFuZCByZXN1bWUgdGhlIGJ1 cywKbW92aW5nIHRoZSBwb3J0IGJhY2sgdG8gVTAKClRoaXMgVTAgLT4gVTMgLT4gVTAgdHJhbnNp dGlvbiByaWdodCBhZnRlciBiZWluZyBjb25uZWN0ZWQgc2VlbXMgdG8gYmUKdG9vIG11Y2ggZm9y IHNvbWUgZGV2aWNlcywgY2F1c2luZyB0aGVtIHRvIGZpcnN0IGdvIHRvIFNTLkluYWN0aXZlIHN0 YXRlLAphbmQgZmluYWxseSBlbmQgdXAgc3R1Y2sgaW4gYSBwb2xsaW5nIHN0YXRlIHdpdGggcmVz ZXQgYXNzZXJ0ZWQKCkZpeCB0aGlzIGJ5IGZhaWxpbmcgdGhlIGJ1cyBzdXNwZW5kIGlmIGEgcG9y dCBoYXMgYSBjb25uZWN0IGNoYW5nZSBvciBpcwppbiBhIHBvbGxpbmcgc3RhdGUgaW4geGhjaV9i dXNfc3VzcGVuZCgpLgoKRG9uJ3QgZG8gYW55IHBvcnQgY2hhbmdlcyB1bnRpbCBhbGwgcG9ydHMg YXJlIGNoZWNrZWQsIGJ1ZmZlciBhbGwgcG9ydApjaGFuZ2VzIGFuZCBvbmx5IHdyaXRlIHRoZW0g aW4gdGhlIGVuZCBpZiBzdXNwZW5kIGNhbiBwcm9jZWVkCgpDYzogc3RhYmxlQHZnZXIua2VybmVs Lm9yZwpTaWduZWQtb2ZmLWJ5OiBNYXRoaWFzIE55bWFuIDxtYXRoaWFzLm55bWFuQGxpbnV4Lmlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL3VzYi9ob3N0L3hoY2ktaHViLmMgfCA2MCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NiBp bnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9o b3N0L3hoY2ktaHViLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktaHViLmMKaW5kZXggZGE5OGEx MS4uOTRhY2ExYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC94aGNpLWh1Yi5jCisrKyBi L2RyaXZlcnMvdXNiL2hvc3QveGhjaS1odWIuYwpAQCAtMTQ3NCwxNSArMTQ3NCwxOCBAQCBpbnQg eGhjaV9idXNfc3VzcGVuZChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQogCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CiAJc3RydWN0IHhoY2lfaHViICpyaHViOwogCXN0cnVjdCB4aGNpX3BvcnQgKipwb3J0czsK Kwl1MzIgcG9ydHNjX2J1ZltVU0JfTUFYQ0hJTERSRU5dOworCWJvb2wgd2FrZV9lbmFibGVkOwog CiAJcmh1YiA9IHhoY2lfZ2V0X3JodWIoaGNkKTsKIAlwb3J0cyA9IHJodWItPnBvcnRzOwogCW1h eF9wb3J0cyA9IHJodWItPm51bV9wb3J0czsKIAlidXNfc3RhdGUgPSAmeGhjaS0+YnVzX3N0YXRl W2hjZF9pbmRleChoY2QpXTsKKwl3YWtlX2VuYWJsZWQgPSBoY2QtPnNlbGYucm9vdF9odWItPmRv X3JlbW90ZV93YWtldXA7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmeGhjaS0+bG9jaywgZmxhZ3Mp OwogCi0JaWYgKGhjZC0+c2VsZi5yb290X2h1Yi0+ZG9fcmVtb3RlX3dha2V1cCkgeworCWlmICh3 YWtlX2VuYWJsZWQpIHsKIAkJaWYgKGJ1c19zdGF0ZS0+cmVzdW1pbmdfcG9ydHMgfHwJLyogVVNC MiAqLwogCQkgICAgYnVzX3N0YXRlLT5wb3J0X3JlbW90ZV93YWtldXApIHsJLyogVVNCMyAqLwog CQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmeGhjaS0+bG9jaywgZmxhZ3MpOwpAQCAtMTQ5MCwy NiArMTQ5MywzNiBAQCBpbnQgeGhjaV9idXNfc3VzcGVuZChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQog CQkJcmV0dXJuIC1FQlVTWTsKIAkJfQogCX0KLQotCXBvcnRfaW5kZXggPSBtYXhfcG9ydHM7CisJ LyoKKwkgKiBQcmVwYXJlIHBvcnRzIGZvciBzdXNwZW5kLCBidXQgZG9uJ3Qgd3JpdGUgYW55dGhp bmcgYmVmb3JlIGFsbCBwb3J0cworCSAqIGFyZSBjaGVja2VkIGFuZCB3ZSBrbm93IGJ1cyBzdXNw ZW5kIGNhbiBwcm9jZWVkCisJICovCiAJYnVzX3N0YXRlLT5idXNfc3VzcGVuZGVkID0gMDsKKwlw b3J0X2luZGV4ID0gbWF4X3BvcnRzOwogCXdoaWxlIChwb3J0X2luZGV4LS0pIHsKLQkJLyogc3Vz cGVuZCB0aGUgcG9ydCBpZiB0aGUgcG9ydCBpcyBub3Qgc3VzcGVuZGVkICovCiAJCXUzMiB0MSwg dDI7Ci0JCWludCBzbG90X2lkOwogCiAJCXQxID0gcmVhZGwocG9ydHNbcG9ydF9pbmRleF0tPmFk ZHIpOwogCQl0MiA9IHhoY2lfcG9ydF9zdGF0ZV90b19uZXV0cmFsKHQxKTsKKwkJcG9ydHNjX2J1 Zltwb3J0X2luZGV4XSA9IDA7CiAKLQkJaWYgKCh0MSAmIFBPUlRfUEUpICYmICEodDEgJiBQT1JU X1BMU19NQVNLKSkgewotCQkJeGhjaV9kYmcoeGhjaSwgInBvcnQgJWQgbm90IHN1c3BlbmRlZFxu IiwgcG9ydF9pbmRleCk7Ci0JCQlzbG90X2lkID0geGhjaV9maW5kX3Nsb3RfaWRfYnlfcG9ydCho Y2QsIHhoY2ksCi0JCQkJCXBvcnRfaW5kZXggKyAxKTsKLQkJCWlmIChzbG90X2lkKSB7CisJCS8q IEJhaWwgb3V0IGlmIGEgVVNCMyBwb3J0IGhhcyBhIG5ldyBkZXZpY2UgaW4gbGluayB0cmFpbmlu ZyAqLworCQlpZiAoKHQxICYgUE9SVF9QTFNfTUFTSykgPT0gWERFVl9QT0xMSU5HKSB7CisJCQli dXNfc3RhdGUtPmJ1c19zdXNwZW5kZWQgPSAwOworCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm eGhjaS0+bG9jaywgZmxhZ3MpOworCQkJeGhjaV9kYmcoeGhjaSwgIkJ1cyBzdXNwZW5kIGJhaWxv dXQsIHBvcnQgaW4gcG9sbGluZ1xuIik7CisJCQlyZXR1cm4gLUVCVVNZOworCQl9CisKKwkJLyog c3VzcGVuZCBwb3J0cyBpbiBVMCwgb3IgYmFpbCBvdXQgZm9yIG5ldyBjb25uZWN0IGNoYW5nZXMg Ki8KKwkJaWYgKCh0MSAmIFBPUlRfUEUpICYmICh0MSAmIFBPUlRfUExTX01BU0spID09IFhERVZf VTApIHsKKwkJCWlmICgodDEgJiBQT1JUX0NTQykgJiYgd2FrZV9lbmFibGVkKSB7CisJCQkJYnVz X3N0YXRlLT5idXNfc3VzcGVuZGVkID0gMDsKIAkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ4 aGNpLT5sb2NrLCBmbGFncyk7Ci0JCQkJeGhjaV9zdG9wX2RldmljZSh4aGNpLCBzbG90X2lkLCAx KTsKLQkJCQlzcGluX2xvY2tfaXJxc2F2ZSgmeGhjaS0+bG9jaywgZmxhZ3MpOworCQkJCXhoY2lf ZGJnKHhoY2ksICJCdXMgc3VzcGVuZCBiYWlsb3V0LCBwb3J0IGNvbm5lY3QgY2hhbmdlXG4iKTsK KwkJCQlyZXR1cm4gLUVCVVNZOwogCQkJfQorCQkJeGhjaV9kYmcoeGhjaSwgInBvcnQgJWQgbm90 IHN1c3BlbmRlZFxuIiwgcG9ydF9pbmRleCk7CiAJCQl0MiAmPSB+UE9SVF9QTFNfTUFTSzsKIAkJ CXQyIHw9IFBPUlRfTElOS19TVFJPQkUgfCBYREVWX1UzOwogCQkJc2V0X2JpdChwb3J0X2luZGV4 LCAmYnVzX3N0YXRlLT5idXNfc3VzcGVuZGVkKTsKQEAgLTE1MTgsNyArMTUzMSw3IEBAIGludCB4 aGNpX2J1c19zdXNwZW5kKHN0cnVjdCB1c2JfaGNkICpoY2QpCiAJCSAqIGluY2x1ZGluZyB0aGUg VVNCIDMuMCByb290aHViLCBidXQgb25seSBpZiBDT05GSUdfUE0KIAkJICogaXMgZW5hYmxlZCwg c28gYWxzbyBlbmFibGUgcmVtb3RlIHdha2UgaGVyZS4KIAkJICovCi0JCWlmIChoY2QtPnNlbGYu cm9vdF9odWItPmRvX3JlbW90ZV93YWtldXApIHsKKwkJaWYgKHdha2VfZW5hYmxlZCkgewogCQkJ aWYgKHQxICYgUE9SVF9DT05ORUNUKSB7CiAJCQkJdDIgfD0gUE9SVF9XS09DX0UgfCBQT1JUX1dL RElTQ19FOwogCQkJCXQyICY9IH5QT1JUX1dLQ09OTl9FOwpAQCAtMTUzOCw3ICsxNTUxLDI2IEBA IGludCB4aGNpX2J1c19zdXNwZW5kKHN0cnVjdCB1c2JfaGNkICpoY2QpCiAKIAkJdDEgPSB4aGNp X3BvcnRfc3RhdGVfdG9fbmV1dHJhbCh0MSk7CiAJCWlmICh0MSAhPSB0MikKLQkJCXdyaXRlbCh0 MiwgcG9ydHNbcG9ydF9pbmRleF0tPmFkZHIpOworCQkJcG9ydHNjX2J1Zltwb3J0X2luZGV4XSA9 IHQyOworCX0KKworCS8qIHdyaXRlIHBvcnQgc2V0dGluZ3MsIHN0b3BwaW5nIGFuZCBzdXNwZW5k aW5nIHBvcnRzIGlmIG5lZWRlZCAqLworCXBvcnRfaW5kZXggPSBtYXhfcG9ydHM7CisJd2hpbGUg KHBvcnRfaW5kZXgtLSkgeworCQlpZiAoIXBvcnRzY19idWZbcG9ydF9pbmRleF0pCisJCQljb250 aW51ZTsKKwkJaWYgKHRlc3RfYml0KHBvcnRfaW5kZXgsICZidXNfc3RhdGUtPmJ1c19zdXNwZW5k ZWQpKSB7CisJCQlpbnQgc2xvdF9pZDsKKworCQkJc2xvdF9pZCA9IHhoY2lfZmluZF9zbG90X2lk X2J5X3BvcnQoaGNkLCB4aGNpLAorCQkJCQkJCSAgICBwb3J0X2luZGV4ICsgMSk7CisJCQlpZiAo c2xvdF9pZCkgeworCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnhoY2ktPmxvY2ssIGZsYWdz KTsKKwkJCQl4aGNpX3N0b3BfZGV2aWNlKHhoY2ksIHNsb3RfaWQsIDEpOworCQkJCXNwaW5fbG9j a19pcnFzYXZlKCZ4aGNpLT5sb2NrLCBmbGFncyk7CisJCQl9CisJCX0KKwkJd3JpdGVsKHBvcnRz Y19idWZbcG9ydF9pbmRleF0sIHBvcnRzW3BvcnRfaW5kZXhdLT5hZGRyKTsKIAl9CiAJaGNkLT5z dGF0ZSA9IEhDX1NUQVRFX1NVU1BFTkRFRDsKIAlidXNfc3RhdGUtPm5leHRfc3RhdGVjaGFuZ2Ug PSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcygxMCk7Cg==