From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [RFC,v2,1/3] usb: typec: Register a device for every mode From: Heikki Krogerus Message-Id: <20180309151918.22048-2-heikki.krogerus@linux.intel.com> Date: Fri, 9 Mar 2018 18:19:16 +0300 To: Greg Kroah-Hartman , Guenter Roeck , Hans de Goede Cc: Jun Li , "Regupathy, Rajaram" , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: QmVmb3JlIGEgZGV2aWNlIHdhcyBjcmVhdGVkIGZvciBldmVyeSBkaXNjb3ZlcmVkIFNWSUQsIGJ1 dAp0aGlzIHdpbGwgY3JlYXRlIGEgZGV2aWNlIGZvciBldmVyeSBkaXNjb3ZlcmVkIG1vZGUgb2Yg ZXZlcnkKU1ZJRC4gVGhlIGlkZWEgaXMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY3JlYXRlIG1vZGUg c3BlY2lmaWMKZHJpdmVycyBvbmNlIGEgYnVzIGZvciB0aGUgYWx0ZXJuYXRlIG1vZGUgaXMgYWRk ZWQuCgpTaWduZWQtb2ZmLWJ5OiBIZWlra2kgS3JvZ2VydXMgPGhlaWtraS5rcm9nZXJ1c0BsaW51 eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy91c2IvdHlwZWMvY2xhc3MuYyB8IDE2MyArKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3VzYi90eXBl Yy90Y3BtLmMgIHwgIDQ1ICsrKysrKy0tLS0tLS0KIGluY2x1ZGUvbGludXgvdXNiL3R5cGVjLmgg fCAgMzQgKysrLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAxNjMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvY2xhc3MuYyBiL2Ry aXZlcnMvdXNiL3R5cGVjL2NsYXNzLmMKaW5kZXggNTNkZjEwZGYyZjlkLi4yNmVlYWIxNDkxYjcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL2NsYXNzLmMKKysrIGIvZHJpdmVycy91c2Iv dHlwZWMvY2xhc3MuYwpAQCAtMTMsMzEgKzEzLDIwIEBACiAjaW5jbHVkZSA8bGludXgvdXNiL3R5 cGVjLmg+CiAjaW5jbHVkZSA8bGludXgvdXNiL3R5cGVjX211eC5oPgogCi1zdHJ1Y3QgdHlwZWNf bW9kZSB7Ci0JaW50CQkJCWluZGV4Oworc3RydWN0IHR5cGVjX2FsdG1vZGUgeworCXN0cnVjdCBk ZXZpY2UJCQlkZXY7CisJdTE2CQkJCXN2aWQ7CisJdTgJCQkJbW9kZTsKKwogCXUzMgkJCQl2ZG87 CiAJY2hhcgkJCQkqZGVzYzsKIAllbnVtIHR5cGVjX3BvcnRfdHlwZQkJcm9sZXM7Ci0KLQlzdHJ1 Y3QgdHlwZWNfYWx0bW9kZQkJKmFsdF9tb2RlOwotCiAJdW5zaWduZWQgaW50CQkJYWN0aXZlOjE7 CiAKKwlzdHJ1Y3QgYXR0cmlidXRlCQkqYXR0cnNbNV07CiAJY2hhcgkJCQlncm91cF9uYW1lWzZd OwogCXN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAJCWdyb3VwOwotCXN0cnVjdCBhdHRyaWJ1dGUJCSph dHRyc1s1XTsKLQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZQkJdmRvX2F0dHI7Ci0Jc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUJCWRlc2NfYXR0cjsKLQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZQkJYWN0 aXZlX2F0dHI7Ci0Jc3RydWN0IGRldmljZV9hdHRyaWJ1dGUJCXJvbGVzX2F0dHI7Ci19OwotCi1z dHJ1Y3QgdHlwZWNfYWx0bW9kZSB7Ci0Jc3RydWN0IGRldmljZQkJCWRldjsKLQl1MTYJCQkJc3Zp ZDsKLQlpbnQJCQkJbl9tb2RlczsKLQlzdHJ1Y3QgdHlwZWNfbW9kZQkJbW9kZXNbQUxUTU9ERV9N QVhfTU9ERVNdOwotCWNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAJKm1vZGVfZ3JvdXBzW0FM VE1PREVfTUFYX01PREVTXTsKKwljb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwCSpncm91cHNb Ml07CiB9OwogCiBzdHJ1Y3QgdHlwZWNfcGx1ZyB7CkBAIC0xODYsMTMgKzE3NSwxMiBAQCBzdGF0 aWMgdm9pZCB0eXBlY19yZXBvcnRfaWRlbnRpdHkoc3RydWN0IGRldmljZSAqZGV2KQogdm9pZCB0 eXBlY19hbHRtb2RlX3VwZGF0ZV9hY3RpdmUoc3RydWN0IHR5cGVjX2FsdG1vZGUgKmFsdCwgaW50 IG1vZGUsCiAJCQkJIGJvb2wgYWN0aXZlKQogewotCXN0cnVjdCB0eXBlY19tb2RlICptID0gJmFs dC0+bW9kZXNbbW9kZV07CiAJY2hhciBkaXJbNl07CiAKLQlpZiAobS0+YWN0aXZlID09IGFjdGl2 ZSkKKwlpZiAoYWx0LT5hY3RpdmUgPT0gYWN0aXZlKQogCQlyZXR1cm47CiAKLQltLT5hY3RpdmUg PSBhY3RpdmU7CisJYWx0LT5hY3RpdmUgPSBhY3RpdmU7CiAJc25wcmludGYoZGlyLCBzaXplb2Yo ZGlyKSwgIm1vZGUlZCIsIG1vZGUpOwogCXN5c2ZzX25vdGlmeSgmYWx0LT5kZXYua29iaiwgZGly LCAiYWN0aXZlIik7CiAJa29iamVjdF91ZXZlbnQoJmFsdC0+ZGV2LmtvYmosIEtPQkpfQ0hBTkdF KTsKQEAgLTIyMCw0MiArMjA4LDM3IEBAIHN0cnVjdCB0eXBlY19wb3J0ICp0eXBlY19hbHRtb2Rl MnBvcnQoc3RydWN0IHR5cGVjX2FsdG1vZGUgKmFsdCkKIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVj X2FsdG1vZGUycG9ydCk7CiAKIHN0YXRpYyBzc2l6ZV90Ci10eXBlY19hbHRtb2RlX3Zkb19zaG93 KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCi0JCSAg ICAgICBjaGFyICpidWYpCit2ZG9fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7Ci0Jc3RydWN0IHR5cGVjX21vZGUgKm1v ZGUgPSBjb250YWluZXJfb2YoYXR0ciwgc3RydWN0IHR5cGVjX21vZGUsCi0JCQkJCSAgICAgICB2 ZG9fYXR0cik7CisJc3RydWN0IHR5cGVjX2FsdG1vZGUgKmFsdCA9IHRvX2FsdG1vZGUoZGV2KTsK IAotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjB4JTA4eFxuIiwgbW9kZS0+dmRvKTsKKwlyZXR1cm4g c3ByaW50ZihidWYsICIweCUwOHhcbiIsIGFsdC0+dmRvKTsKIH0KK3N0YXRpYyBERVZJQ0VfQVRU Ul9STyh2ZG8pOwogCiBzdGF0aWMgc3NpemVfdAotdHlwZWNfYWx0bW9kZV9kZXNjX3Nob3coc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKLQkJCWNoYXIg KmJ1ZikKK2Rlc2NyaXB0aW9uX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogewotCXN0cnVjdCB0eXBlY19tb2RlICptb2Rl ID0gY29udGFpbmVyX29mKGF0dHIsIHN0cnVjdCB0eXBlY19tb2RlLAotCQkJCQkgICAgICAgZGVz Y19hdHRyKTsKKwlzdHJ1Y3QgdHlwZWNfYWx0bW9kZSAqYWx0ID0gdG9fYWx0bW9kZShkZXYpOwog Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIG1vZGUtPmRlc2MgPyBtb2RlLT5kZXNjIDog IiIpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBhbHQtPmRlc2MgPyBhbHQtPmRlc2Mg OiAiIik7CiB9CitzdGF0aWMgREVWSUNFX0FUVFJfUk8oZGVzY3JpcHRpb24pOwogCiBzdGF0aWMg c3NpemVfdAotdHlwZWNfYWx0bW9kZV9hY3RpdmVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAotCQkJICBjaGFyICpidWYpCithY3RpdmVfc2hv dyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCiB7Ci0Jc3RydWN0IHR5cGVjX21vZGUgKm1vZGUgPSBjb250YWluZXJfb2YoYXR0ciwg c3RydWN0IHR5cGVjX21vZGUsCi0JCQkJCSAgICAgICBhY3RpdmVfYXR0cik7CisJc3RydWN0IHR5 cGVjX2FsdG1vZGUgKmFsdCA9IHRvX2FsdG1vZGUoZGV2KTsKIAotCXJldHVybiBzcHJpbnRmKGJ1 ZiwgIiVzXG4iLCBtb2RlLT5hY3RpdmUgPyAieWVzIiA6ICJubyIpOworCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVzXG4iLCBhbHQtPmFjdGl2ZSA/ICJ5ZXMiIDogIm5vIik7CiB9CiAKIHN0YXRpYyBz c2l6ZV90Ci10eXBlY19hbHRtb2RlX2FjdGl2ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorYWN0aXZlX3N0b3JlKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkgICBjb25zdCBjaGFyICpi dWYsIHNpemVfdCBzaXplKQogewotCXN0cnVjdCB0eXBlY19tb2RlICptb2RlID0gY29udGFpbmVy X29mKGF0dHIsIHN0cnVjdCB0eXBlY19tb2RlLAotCQkJCQkgICAgICAgYWN0aXZlX2F0dHIpOwot CXN0cnVjdCB0eXBlY19wb3J0ICpwb3J0ID0gdHlwZWNfYWx0bW9kZTJwb3J0KG1vZGUtPmFsdF9t b2RlKTsKKwlzdHJ1Y3QgdHlwZWNfYWx0bW9kZSAqYWx0ID0gdG9fYWx0bW9kZShkZXYpOworCXN0 cnVjdCB0eXBlY19wb3J0ICpwb3J0ID0gdHlwZWNfYWx0bW9kZTJwb3J0KGFsdCk7CiAJYm9vbCBh Y3RpdmF0ZTsKIAlpbnQgcmV0OwogCkBAIC0yNjYsMjIgKzI0OSwyMiBAQCB0eXBlY19hbHRtb2Rl X2FjdGl2ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBwb3J0LT5jYXAtPmFj dGl2YXRlX21vZGUocG9ydC0+Y2FwLCBtb2RlLT5pbmRleCwgYWN0aXZhdGUpOworCXJldCA9IHBv cnQtPmNhcC0+YWN0aXZhdGVfbW9kZShwb3J0LT5jYXAsIGFsdC0+bW9kZSwgYWN0aXZhdGUpOwog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlyZXR1cm4gc2l6ZTsKIH0KK3N0YXRpYyBERVZJ Q0VfQVRUUl9SVyhhY3RpdmUpOwogCiBzdGF0aWMgc3NpemVfdAotdHlwZWNfYWx0bW9kZV9yb2xl c19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs Ci0JCQkgY2hhciAqYnVmKQorc3VwcG9ydGVkX3JvbGVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJICAgICBjaGFyICpidWYpCiB7Ci0J c3RydWN0IHR5cGVjX21vZGUgKm1vZGUgPSBjb250YWluZXJfb2YoYXR0ciwgc3RydWN0IHR5cGVj X21vZGUsCi0JCQkJCSAgICAgICByb2xlc19hdHRyKTsKKwlzdHJ1Y3QgdHlwZWNfYWx0bW9kZSAq YWx0ID0gdG9fYWx0bW9kZShkZXYpOwogCXNzaXplX3QgcmV0OwogCi0Jc3dpdGNoIChtb2RlLT5y b2xlcykgeworCXN3aXRjaCAoYWx0LT5yb2xlcykgewogCWNhc2UgVFlQRUNfUE9SVF9TUkM6CiAJ CXJldCA9IHNwcmludGYoYnVmLCAic291cmNlXG4iKTsKIAkJYnJlYWs7CkBAIC0yOTUsNjEgKzI3 OCwxMyBAQCB0eXBlY19hbHRtb2RlX3JvbGVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIAl9CiAJcmV0dXJuIHJldDsKIH0KK3N0YXRpYyBE RVZJQ0VfQVRUUl9STyhzdXBwb3J0ZWRfcm9sZXMpOwogCi1zdGF0aWMgdm9pZCB0eXBlY19pbml0 X21vZGVzKHN0cnVjdCB0eXBlY19hbHRtb2RlICphbHQsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCB0 eXBlY19tb2RlX2Rlc2MgKmRlc2MsIGJvb2wgaXNfcG9ydCkKK3N0YXRpYyB2b2lkIHR5cGVjX2Fs dG1vZGVfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7Ci0JaW50IGk7Ci0KLQlmb3IgKGkg PSAwOyBpIDwgYWx0LT5uX21vZGVzOyBpKyssIGRlc2MrKykgewotCQlzdHJ1Y3QgdHlwZWNfbW9k ZSAqbW9kZSA9ICZhbHQtPm1vZGVzW2ldOwotCi0JCS8qIE5vdCBjb25zaWRlcmluZyB0aGUgaHVt YW4gcmVhZGFibGUgZGVzY3JpcHRpb24gY3JpdGljYWwgKi8KLQkJbW9kZS0+ZGVzYyA9IGtzdHJk dXAoZGVzYy0+ZGVzYywgR0ZQX0tFUk5FTCk7Ci0JCWlmIChkZXNjLT5kZXNjICYmICFtb2RlLT5k ZXNjKQotCQkJZGV2X2VycigmYWx0LT5kZXYsICJmYWlsZWQgdG8gY29weSBtb2RlJWQgZGVzY1xu IiwgaSk7Ci0KLQkJbW9kZS0+YWx0X21vZGUgPSBhbHQ7Ci0JCW1vZGUtPnZkbyA9IGRlc2MtPnZk bzsKLQkJbW9kZS0+cm9sZXMgPSBkZXNjLT5yb2xlczsKLQkJbW9kZS0+aW5kZXggPSBkZXNjLT5p bmRleDsKLQkJc3ByaW50Zihtb2RlLT5ncm91cF9uYW1lLCAibW9kZSVkIiwgZGVzYy0+aW5kZXgp OwotCi0JCXN5c2ZzX2F0dHJfaW5pdCgmbW9kZS0+dmRvX2F0dHIuYXR0cik7Ci0JCW1vZGUtPnZk b19hdHRyLmF0dHIubmFtZSA9ICJ2ZG8iOwotCQltb2RlLT52ZG9fYXR0ci5hdHRyLm1vZGUgPSAw NDQ0OwotCQltb2RlLT52ZG9fYXR0ci5zaG93ID0gdHlwZWNfYWx0bW9kZV92ZG9fc2hvdzsKLQot CQlzeXNmc19hdHRyX2luaXQoJm1vZGUtPmRlc2NfYXR0ci5hdHRyKTsKLQkJbW9kZS0+ZGVzY19h dHRyLmF0dHIubmFtZSA9ICJkZXNjcmlwdGlvbiI7Ci0JCW1vZGUtPmRlc2NfYXR0ci5hdHRyLm1v ZGUgPSAwNDQ0OwotCQltb2RlLT5kZXNjX2F0dHIuc2hvdyA9IHR5cGVjX2FsdG1vZGVfZGVzY19z aG93OwotCi0JCXN5c2ZzX2F0dHJfaW5pdCgmbW9kZS0+YWN0aXZlX2F0dHIuYXR0cik7Ci0JCW1v ZGUtPmFjdGl2ZV9hdHRyLmF0dHIubmFtZSA9ICJhY3RpdmUiOwotCQltb2RlLT5hY3RpdmVfYXR0 ci5hdHRyLm1vZGUgPSAwNjQ0OwotCQltb2RlLT5hY3RpdmVfYXR0ci5zaG93ID0gdHlwZWNfYWx0 bW9kZV9hY3RpdmVfc2hvdzsKLQkJbW9kZS0+YWN0aXZlX2F0dHIuc3RvcmUgPSB0eXBlY19hbHRt b2RlX2FjdGl2ZV9zdG9yZTsKLQotCQltb2RlLT5hdHRyc1swXSA9ICZtb2RlLT52ZG9fYXR0ci5h dHRyOwotCQltb2RlLT5hdHRyc1sxXSA9ICZtb2RlLT5kZXNjX2F0dHIuYXR0cjsKLQkJbW9kZS0+ YXR0cnNbMl0gPSAmbW9kZS0+YWN0aXZlX2F0dHIuYXR0cjsKLQotCQkvKiBXaXRoIHBvcnRzLCBs aXN0IHRoZSByb2xlcyB0aGF0IHRoZSBtb2RlIGlzIHN1cHBvcnRlZCB3aXRoICovCi0JCWlmIChp c19wb3J0KSB7Ci0JCQlzeXNmc19hdHRyX2luaXQoJm1vZGUtPnJvbGVzX2F0dHIuYXR0cik7Ci0J CQltb2RlLT5yb2xlc19hdHRyLmF0dHIubmFtZSA9ICJzdXBwb3J0ZWRfcm9sZXMiOwotCQkJbW9k ZS0+cm9sZXNfYXR0ci5hdHRyLm1vZGUgPSAwNDQ0OwotCQkJbW9kZS0+cm9sZXNfYXR0ci5zaG93 ID0gdHlwZWNfYWx0bW9kZV9yb2xlc19zaG93OwotCi0JCQltb2RlLT5hdHRyc1szXSA9ICZtb2Rl LT5yb2xlc19hdHRyLmF0dHI7Ci0JCX0KLQotCQltb2RlLT5ncm91cC5hdHRycyA9IG1vZGUtPmF0 dHJzOwotCQltb2RlLT5ncm91cC5uYW1lID0gbW9kZS0+Z3JvdXBfbmFtZTsKKwlzdHJ1Y3QgdHlw ZWNfYWx0bW9kZSAqYWx0ID0gdG9fYWx0bW9kZShkZXYpOwogCi0JCWFsdC0+bW9kZV9ncm91cHNb aV0gPSAmbW9kZS0+Z3JvdXA7Ci0JfQorCWtmcmVlKGFsdCk7CiB9CiAKIHN0YXRpYyBzc2l6ZV90 IHN2aWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLApAQCAtMzY3LDE2ICszMDIsNiBAQCBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqdHlwZWNf YWx0bW9kZV9hdHRyc1tdID0gewogfTsKIEFUVFJJQlVURV9HUk9VUFModHlwZWNfYWx0bW9kZSk7 CiAKLXN0YXRpYyB2b2lkIHR5cGVjX2FsdG1vZGVfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYp Ci17Ci0Jc3RydWN0IHR5cGVjX2FsdG1vZGUgKmFsdCA9IHRvX2FsdG1vZGUoZGV2KTsKLQlpbnQg aTsKLQotCWZvciAoaSA9IDA7IGkgPCBhbHQtPm5fbW9kZXM7IGkrKykKLQkJa2ZyZWUoYWx0LT5t b2Rlc1tpXS5kZXNjKTsKLQlrZnJlZShhbHQpOwotfQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRl dmljZV90eXBlIHR5cGVjX2FsdG1vZGVfZGV2X3R5cGUgPSB7CiAJLm5hbWUgPSAidHlwZWNfYWx0 ZXJuYXRlX21vZGUiLAogCS5ncm91cHMgPSB0eXBlY19hbHRtb2RlX2dyb3VwcywKQEAgLTM5NSwx MyArMzIwLDI3IEBAIHR5cGVjX3JlZ2lzdGVyX2FsdG1vZGUoc3RydWN0IGRldmljZSAqcGFyZW50 LAogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAogCWFsdC0+c3ZpZCA9IGRlc2MtPnN2aWQ7 Ci0JYWx0LT5uX21vZGVzID0gZGVzYy0+bl9tb2RlczsKLQl0eXBlY19pbml0X21vZGVzKGFsdCwg ZGVzYy0+bW9kZXMsIGlzX3R5cGVjX3BvcnQocGFyZW50KSk7CisJYWx0LT5tb2RlID0gZGVzYy0+ bW9kZTsKKwlhbHQtPnZkbyA9IGRlc2MtPnZkbzsKKwlhbHQtPnJvbGVzID0gZGVzYy0+cm9sZXM7 CisKKwlhbHQtPmF0dHJzWzBdID0gJmRldl9hdHRyX3Zkby5hdHRyOworCWFsdC0+YXR0cnNbMV0g PSAmZGV2X2F0dHJfZGVzY3JpcHRpb24uYXR0cjsKKwlhbHQtPmF0dHJzWzJdID0gJmRldl9hdHRy X2FjdGl2ZS5hdHRyOworCisJaWYgKGlzX3R5cGVjX3BvcnQocGFyZW50KSkKKwkJYWx0LT5hdHRy c1szXSA9ICZkZXZfYXR0cl9zdXBwb3J0ZWRfcm9sZXMuYXR0cjsKKworCXNwcmludGYoYWx0LT5n cm91cF9uYW1lLCAibW9kZSVkIiwgZGVzYy0+bW9kZSk7CisJYWx0LT5ncm91cC5uYW1lID0gYWx0 LT5ncm91cF9uYW1lOworCWFsdC0+Z3JvdXAuYXR0cnMgPSBhbHQtPmF0dHJzOworCWFsdC0+Z3Jv dXBzWzBdID0gJmFsdC0+Z3JvdXA7CiAKIAlhbHQtPmRldi5wYXJlbnQgPSBwYXJlbnQ7Ci0JYWx0 LT5kZXYuZ3JvdXBzID0gYWx0LT5tb2RlX2dyb3VwczsKKwlhbHQtPmRldi5ncm91cHMgPSBhbHQt Pmdyb3VwczsKIAlhbHQtPmRldi50eXBlID0gJnR5cGVjX2FsdG1vZGVfZGV2X3R5cGU7Ci0JZGV2 X3NldF9uYW1lKCZhbHQtPmRldiwgInN2aWQtJTA0eCIsIGFsdC0+c3ZpZCk7CisJZGV2X3NldF9u YW1lKCZhbHQtPmRldiwgIiVzLSUwNHg6JXUiLCBkZXZfbmFtZShwYXJlbnQpLAorCQkgICAgIGFs dC0+c3ZpZCwgYWx0LT5tb2RlKTsKIAogCXJldCA9IGRldmljZV9yZWdpc3RlcigmYWx0LT5kZXYp OwogCWlmIChyZXQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYyBiL2Ry aXZlcnMvdXNiL3R5cGVjL3RjcG0uYwppbmRleCA0ZTQ0N2UxZTllYzYuLmJmYjg0M2ViZmZhNiAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS5jCisrKyBiL2RyaXZlcnMvdXNiL3R5 cGVjL3RjcG0uYwpAQCAtMjgwLDggKzI4MCw4IEBAIHN0cnVjdCB0Y3BtX3BvcnQgewogCS8qIEFs dGVybmF0ZSBtb2RlIGRhdGEgKi8KIAogCXN0cnVjdCBwZF9tb2RlX2RhdGEgbW9kZV9kYXRhOwot CXN0cnVjdCB0eXBlY19hbHRtb2RlICpwYXJ0bmVyX2FsdG1vZGVbU1ZJRF9ESVNDT1ZFUllfTUFY XTsKLQlzdHJ1Y3QgdHlwZWNfYWx0bW9kZSAqcG9ydF9hbHRtb2RlW1NWSURfRElTQ09WRVJZX01B WF07CisJc3RydWN0IHR5cGVjX2FsdG1vZGUgKnBhcnRuZXJfYWx0bW9kZVtTVklEX0RJU0NPVkVS WV9NQVggKiA2XTsKKwlzdHJ1Y3QgdHlwZWNfYWx0bW9kZSAqcG9ydF9hbHRtb2RlW1NWSURfRElT Q09WRVJZX01BWCAqIDZdOwogCiAJLyogRGVhZGxpbmUgaW4gamlmZmllcyB0byBleGl0IHNyY190 cnlfd2FpdCBzdGF0ZSAqLwogCXVuc2lnbmVkIGxvbmcgbWF4X3dhaXQ7CkBAIC05NjYsNyArOTY2 LDYgQEAgc3RhdGljIHZvaWQgc3ZkbV9jb25zdW1lX21vZGVzKHN0cnVjdCB0Y3BtX3BvcnQgKnBv cnQsIGNvbnN0IF9fbGUzMiAqcGF5bG9hZCwKIHsKIAlzdHJ1Y3QgcGRfbW9kZV9kYXRhICpwbWRh dGEgPSAmcG9ydC0+bW9kZV9kYXRhOwogCXN0cnVjdCB0eXBlY19hbHRtb2RlX2Rlc2MgKnBhbHRt b2RlOwotCXN0cnVjdCB0eXBlY19tb2RlX2Rlc2MgKnBtb2RlOwogCWludCBpOwogCiAJaWYgKHBt ZGF0YS0+YWx0bW9kZXMgPj0gQVJSQVlfU0laRShwb3J0LT5wYXJ0bmVyX2FsdG1vZGUpKSB7CkBA IC05NzQsMzIgKzk3MywyOCBAQCBzdGF0aWMgdm9pZCBzdmRtX2NvbnN1bWVfbW9kZXMoc3RydWN0 IHRjcG1fcG9ydCAqcG9ydCwgY29uc3QgX19sZTMyICpwYXlsb2FkLAogCQlyZXR1cm47CiAJfQog Ci0JcGFsdG1vZGUgPSAmcG1kYXRhLT5hbHRtb2RlX2Rlc2NbcG1kYXRhLT5hbHRtb2Rlc107Ci0J bWVtc2V0KHBhbHRtb2RlLCAwLCBzaXplb2YoKnBhbHRtb2RlKSk7CisJZm9yIChpID0gMTsgaSA8 IGNudDsgaSsrKSB7CisJCXBhbHRtb2RlID0gJnBtZGF0YS0+YWx0bW9kZV9kZXNjW3BtZGF0YS0+ YWx0bW9kZXNdOworCQltZW1zZXQocGFsdG1vZGUsIDAsIHNpemVvZigqcGFsdG1vZGUpKTsKIAot CXBhbHRtb2RlLT5zdmlkID0gcG1kYXRhLT5zdmlkc1twbWRhdGEtPnN2aWRfaW5kZXhdOworCQlw YWx0bW9kZS0+c3ZpZCA9IHBtZGF0YS0+c3ZpZHNbcG1kYXRhLT5zdmlkX2luZGV4XTsKKwkJcGFs dG1vZGUtPm1vZGUgPSBpOworCQlwYWx0bW9kZS0+dmRvID0gbGUzMl90b19jcHUocGF5bG9hZFtp XSk7CiAKLQl0Y3BtX2xvZyhwb3J0LCAiIEFsdGVybmF0ZSBtb2RlICVkOiBTVklEIDB4JTA0eCIs Ci0JCSBwbWRhdGEtPmFsdG1vZGVzLCBwYWx0bW9kZS0+c3ZpZCk7CisJCXRjcG1fbG9nKHBvcnQs ICIgQWx0ZXJuYXRlIG1vZGUgJWQ6IFNWSUQgMHglMDR4LCBWRE8gJWQ6IDB4JTA4eCIsCisJCQkg cG1kYXRhLT5hbHRtb2RlcywgcGFsdG1vZGUtPnN2aWQsCisJCQkgcGFsdG1vZGUtPm1vZGUsIHBh bHRtb2RlLT52ZG8pOwogCi0JZm9yIChpID0gMTsgaSA8IGNudCAmJiBwYWx0bW9kZS0+bl9tb2Rl cyA8IEFMVE1PREVfTUFYX01PREVTOyBpKyspIHsKLQkJcG1vZGUgPSAmcGFsdG1vZGUtPm1vZGVz W3BhbHRtb2RlLT5uX21vZGVzXTsKLQkJbWVtc2V0KHBtb2RlLCAwLCBzaXplb2YoKnBtb2RlKSk7 Ci0JCXBtb2RlLT52ZG8gPSBsZTMyX3RvX2NwdShwYXlsb2FkW2ldKTsKLQkJcG1vZGUtPmluZGV4 ID0gaSAtIDE7Ci0JCXBhbHRtb2RlLT5uX21vZGVzKys7Ci0JCXRjcG1fbG9nKHBvcnQsICIgIFZE TyAlZDogMHglMDh4IiwKLQkJCSBwbW9kZS0+aW5kZXgsIHBtb2RlLT52ZG8pOwotCX0KLQlwb3J0 LT5wYXJ0bmVyX2FsdG1vZGVbcG1kYXRhLT5hbHRtb2Rlc10gPQotCQl0eXBlY19wYXJ0bmVyX3Jl Z2lzdGVyX2FsdG1vZGUocG9ydC0+cGFydG5lciwgcGFsdG1vZGUpOwotCWlmICghcG9ydC0+cGFy dG5lcl9hbHRtb2RlW3BtZGF0YS0+YWx0bW9kZXNdKSB7Ci0JCXRjcG1fbG9nKHBvcnQsCi0JCQkg IkZhaWxlZCB0byByZWdpc3RlciBhbHRlcm5hdGUgbW9kZXMgZm9yIFNWSUQgMHglMDR4IiwKLQkJ CSBwYWx0bW9kZS0+c3ZpZCk7Ci0JCXJldHVybjsKKwkJcG9ydC0+cGFydG5lcl9hbHRtb2RlW3Bt ZGF0YS0+YWx0bW9kZXNdID0KKwkJCXR5cGVjX3BhcnRuZXJfcmVnaXN0ZXJfYWx0bW9kZShwb3J0 LT5wYXJ0bmVyLCBwYWx0bW9kZSk7CisJCWlmICghcG9ydC0+cGFydG5lcl9hbHRtb2RlW3BtZGF0 YS0+YWx0bW9kZXNdKSB7CisJCQl0Y3BtX2xvZyhwb3J0LAorCQkJCSAiRmFpbGVkIHRvIHJlZ2lz dGVyIG1vZGVzIGZvciBTVklEIDB4JTA0eCIsCisJCQkJIHBhbHRtb2RlLT5zdmlkKTsKKwkJCXJl dHVybjsKKwkJfQorCQlwbWRhdGEtPmFsdG1vZGVzKys7CiAJfQotCXBtZGF0YS0+YWx0bW9kZXMr KzsKIH0KIAogI2RlZmluZSBzdXBwb3J0c19tb2RhbChwb3J0KQlQRF9JREhfTU9EQUxfU1VQUCgo cG9ydCktPnBhcnRuZXJfaWRlbnQuaWRfaGVhZGVyKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC91c2IvdHlwZWMuaCBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjLmgKaW5kZXggNjcyYjM5YmIw YWRjLi4yNzhiNmI0MmM3ZWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjLmgK KysrIGIvaW5jbHVkZS9saW51eC91c2IvdHlwZWMuaApAQCAtOTMsNDEgKzkzLDIzIEBAIGludCB0 eXBlY19wYXJ0bmVyX3NldF9pZGVudGl0eShzdHJ1Y3QgdHlwZWNfcGFydG5lciAqcGFydG5lcik7 CiBpbnQgdHlwZWNfY2FibGVfc2V0X2lkZW50aXR5KHN0cnVjdCB0eXBlY19jYWJsZSAqY2FibGUp OwogCiAvKgotICogc3RydWN0IHR5cGVjX21vZGVfZGVzYyAtIEluZGl2aWR1YWwgTW9kZSBvZiBh biBBbHRlcm5hdGUgTW9kZQotICogQGluZGV4OiBJbmRleCBvZiB0aGUgTW9kZSB3aXRoaW4gdGhl IFNWSUQKKyAqIHN0cnVjdCB0eXBlY19hbHRtb2RlX2Rlc2MgLSBVU0IgVHlwZS1DIEFsdGVybmF0 ZSBNb2RlIERlc2NyaXB0b3IKKyAqIEBzdmlkOiBTdGFuZGFyZCBvciBWZW5kb3IgSUQKKyAqIEBt b2RlOiBJbmRleCBvZiB0aGUgTW9kZQogICogQHZkbzogVkRPIHJldHVybmVkIGJ5IERpc2NvdmVy IE1vZGVzIFVTQiBQRCBjb21tYW5kCi0gKiBAZGVzYzogT3B0aW9uYWwgaHVtYW4gcmVhZGFibGUg ZGVzY3JpcHRpb24gb2YgdGhlIG1vZGUKICAqIEByb2xlczogT25seSBmb3IgcG9ydHMuIERSUCBp ZiB0aGUgbW9kZSBpcyBhdmFpbGFibGUgaW4gYm90aCByb2xlcwogICoKLSAqIERlc2NyaXB0aW9u IG9mIGEgbW9kZSBvZiBhbiBBbHRlcm5hdGUgTW9kZSB3aGljaCBhIGNvbm5lY3RvciwgY2FibGUg cGx1ZyBvcgotICogcGFydG5lciBzdXBwb3J0cy4gRXZlcnkgbW9kZSB3aWxsIGhhdmUgaXQncyBv d24gc3lzZnMgZ3JvdXAuIFRoZSBkZXRhaWxzIGFyZQotICogdGhlIFZETyByZXR1cm5lZCBieSBk aXNjb3ZlciBtb2RlcyBjb21tYW5kLCBkZXNjcmlwdGlvbiBmb3IgdGhlIG1vZGUgYW5kCi0gKiBh Y3RpdmUgZmxhZyB0ZWxsaW5nIGhhcyB0aGUgbW9kZSBiZWluZyBlbnRlcmVkIG9yIG5vdC4KKyAq IERlc2NyaXB0aW9uIG9mIGFuIEFsdGVybmF0ZSBNb2RlIHdoaWNoIGEgY29ubmVjdG9yLCBjYWJs ZSBwbHVnIG9yIHBhcnRuZXIKKyAqIHN1cHBvcnRzLgogICovCi1zdHJ1Y3QgdHlwZWNfbW9kZV9k ZXNjIHsKLQlpbnQJCQlpbmRleDsKK3N0cnVjdCB0eXBlY19hbHRtb2RlX2Rlc2MgeworCXUxNgkJ CXN2aWQ7CisJdTgJCQltb2RlOwogCXUzMgkJCXZkbzsKLQljaGFyCQkJKmRlc2M7CiAJLyogT25s eSB1c2VkIHdpdGggcG9ydHMgKi8KIAllbnVtIHR5cGVjX3BvcnRfdHlwZQlyb2xlczsKIH07CiAK LS8qCi0gKiBzdHJ1Y3QgdHlwZWNfYWx0bW9kZV9kZXNjIC0gVVNCIFR5cGUtQyBBbHRlcm5hdGUg TW9kZSBEZXNjcmlwdG9yCi0gKiBAc3ZpZDogU3RhbmRhcmQgb3IgVmVuZG9yIElECi0gKiBAbl9t b2RlczogTnVtYmVyIG9mIG1vZGVzCi0gKiBAbW9kZXM6IEFycmF5IG9mIG1vZGVzIHN1cHBvcnRl ZCBieSB0aGUgQWx0ZXJuYXRlIE1vZGUKLSAqCi0gKiBSZXByZXNlbnRhdGlvbiBvZiBhbiBBbHRl cm5hdGUgTW9kZSB0aGF0IGhhcyBTVklEIGFzc2lnbmVkIGJ5IFVTQi1JRi4gVGhlCi0gKiBhcnJh eSBvZiBtb2RlcyB3aWxsIGxpc3QgdGhlIG1vZGVzIG9mIGEgcGFydGljdWxhciBTVklEIHRoYXQg YXJlIHN1cHBvcnRlZCBieQotICogYSBjb25uZWN0b3IsIHBhcnRuZXIgb2YgYSBjYWJsZSBwbHVn LgotICovCi1zdHJ1Y3QgdHlwZWNfYWx0bW9kZV9kZXNjIHsKLQl1MTYJCQlzdmlkOwotCWludAkJ CW5fbW9kZXM7Ci0Jc3RydWN0IHR5cGVjX21vZGVfZGVzYwltb2Rlc1tBTFRNT0RFX01BWF9NT0RF U107Ci19OwotCiBzdHJ1Y3QgdHlwZWNfYWx0bW9kZQogKnR5cGVjX3BhcnRuZXJfcmVnaXN0ZXJf YWx0bW9kZShzdHJ1Y3QgdHlwZWNfcGFydG5lciAqcGFydG5lciwKIAkJCQljb25zdCBzdHJ1Y3Qg dHlwZWNfYWx0bW9kZV9kZXNjICpkZXNjKTsK