From mboxrd@z Thu Jan 1 00:00:00 1970 From: Akshay Adiga Subject: [PATCH v2] cpufreq: powernv: Replacing pstate_id with frequency table index Date: Thu, 30 Jun 2016 11:53:07 +0530 Message-ID: <1467267787-2622-1-git-send-email-akshay.adiga@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" To: rjw@rjwysocki.net, viresh.kumar@linaro.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: ego@linux.vnet.ibm.com, Akshay Adiga List-Id: linux-pm@vger.kernel.org UmVmYWN0b3JpbmcgY29kZSB0byB1c2UgZnJlcXVlbmN5IHRhYmxlIGluZGV4IGluc3RlYWQgb2Yg cHN0YXRlX2lkLgpUaGlzIGFic3RyYWN0aW9uIHdpbGwgbWFrZSB0aGUgY29kZSBpbmRlcGVuZGVu dCBvZiB0aGUgcHN0YXRlIHZhbHVlcy4KCi0gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzCi0gVGhlIGhp Z2hlc3QgZnJlcXVlbmN5IGlzIGF0IGZyZXF1ZW5jeSB0YWJsZSBpbmRleCAwIGFuZCB0aGUgZnJl cXVlbmN5CiAgZGVjcmVhc2VzIGFzIHRoZSBpbmRleCBpbmNyZWFzZXMuCi0gTWFjcm9zIHBzdGF0 ZXNfdG9faWR4KCkgYW5kIGlkeF90b19wc3RhdGUoKSBjYW4gYmUgdXNlZCBmb3IgY29udmVyc2lv bgogIGJldHdlZW4gcHN0YXRlX2lkIGFuZCBpbmRleC4KLSBwb3dlcm52X3BzdGF0ZV9pbmZvIG5v dyBjb250YWlucyBmcmVxdWVuY3kgdGFibGUgaW5kZXggdG8gbWluLCBtYXggYW5kCiAgbm9taW5h bCBmcmVxdWVuY3kgKGluc3RlYWQgb2YgcHN0YXRlX2lkcykKLSBnbG9iYWxfcHN0YXRlX2luZm8g bmV3IHN0b3JlcyBpbmRleCB2YWx1ZXMgaW5zdGVhZCBwc3RhdGUgaWRzLgotIHZhcmlhYmxlcyBy ZW5hbWVkIGFzICpfaWR4IHdoaWNoIG5vdyBzdG9yZSBpbmRleCBpbnN0ZWFkIG9mIHBzdGF0ZQoK U2lnbmVkLW9mZi1ieTogQWtzaGF5IEFkaWdhIDxha3NoYXkuYWRpZ2FAbGludXgudm5ldC5pYm0u Y29tPgpSZXZpZXdlZC1ieTogR2F1dGhhbSBSLiBTaGVub3kgPGVnb0BsaW51eC52bmV0LmlibS5j b20+Ci0tLQpDaGFuZ2VzIGZyb20gdjE6CiAgLSBjaGFuZ2VkIG1hY3JvIG5hbWVzIGZyb20gZ2V0 X3BzdGF0ZSgpLyBnZXRfaW5kZXgoKSB0byAKaWR4X3RvX3BzdGF0ZSgpLyBwc3RhdGVfdG9faWR4 KCkKICAtIFJlbmFtZWQgdmFyaWFibGVzIHRoYXQgc3RvcmUgaW5kZXggaW5zdGVhZCBvZiBwc3Rh dGVfaWQgdG8gKl9pZHgKICAtIFJldGFpbmVkIHByZXZpb3VzIHByaW50aydzIAoKdjEgOiBodHRw Oi8vbWFyYy5pbmZvLz9sPWxpbnV4LXBtJm09MTQ2Njc3NzAxNTAxMjI1Jnc9MQoKIGRyaXZlcnMv Y3B1ZnJlcS9wb3dlcm52LWNwdWZyZXEuYyB8IDE3NyArKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCA3NSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvcG93ZXJudi1jcHVmcmVxLmMg Yi9kcml2ZXJzL2NwdWZyZXEvcG93ZXJudi1jcHVmcmVxLmMKaW5kZXggYjI5YzVjMi4uNzJjOTFk OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcHVmcmVxL3Bvd2VybnYtY3B1ZnJlcS5jCisrKyBiL2Ry aXZlcnMvY3B1ZnJlcS9wb3dlcm52LWNwdWZyZXEuYwpAQCAtNjQsMTIgKzY0LDE0IEBACiAvKioK ICAqIHN0cnVjdCBnbG9iYWxfcHN0YXRlX2luZm8gLQlQZXIgcG9saWN5IGRhdGEgc3RydWN0dXJl IHRvIG1haW50YWluIGhpc3Rvcnkgb2YKICAqCQkJCWdsb2JhbCBwc3RhdGVzCi0gKiBAaGlnaGVz dF9scHN0YXRlOgkJVGhlIGxvY2FsIHBzdGF0ZSBmcm9tIHdoaWNoIHdlIGFyZSByYW1waW5nIGRv d24KKyAqIEBoaWdoZXN0X2xwc3RhdGVfaWR4OglUaGUgbG9jYWwgcHN0YXRlIGluZGV4IGZyb20g d2hpY2ggd2UgYXJlCisgKgkJCQlyYW1waW5nIGRvd24KICAqIEBlbGFwc2VkX3RpbWU6CQlUaW1l IGluIG1zIHNwZW50IGluIHJhbXBpbmcgZG93biBmcm9tCi0gKgkJCQloaWdoZXN0X2xwc3RhdGUK KyAqCQkJCWhpZ2hlc3RfbHBzdGF0ZV9pZHgKICAqIEBsYXN0X3NhbXBsZWRfdGltZToJCVRpbWUg ZnJvbSBib290IGluIG1zIHdoZW4gZ2xvYmFsIHBzdGF0ZXMgd2VyZQogICoJCQkJbGFzdCBzZXQK LSAqIEBsYXN0X2xwc3RhdGUsbGFzdF9ncHN0YXRlOglMYXN0IHNldCB2YWx1ZXMgZm9yIGxvY2Fs IGFuZCBnbG9iYWwgcHN0YXRlcworICogQGxhc3RfbHBzdGF0ZV9pZHgsCQlMYXN0IHNldCB2YWx1 ZSBvZiBsb2NhbCBwc3RhdGUgYW5kIGdsb2JhbAorICogbGFzdF9ncHN0YXRlX2lkeAkJcHN0YXRl IGluIHRlcm1zIG9mIGNwdWZyZXEgdGFibGUgaW5kZXgKICAqIEB0aW1lcjoJCQlJcyB1c2VkIGZv ciByYW1waW5nIGRvd24gaWYgY3B1IGdvZXMgaWRsZSBmb3IKICAqCQkJCWEgbG9uZyB0aW1lIHdp dGggZ2xvYmFsIHBzdGF0ZSBoZWxkIGhpZ2gKICAqIEBncHN0YXRlX2xvY2s6CQlBIHNwaW5sb2Nr IHRvIG1haW50YWluIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuCkBAIC03NywxMSArNzksMTEgQEAK ICAqCQkJCWdvdmVybmVyJ3MgdGFyZ2V0X2luZGV4IGNhbGxzCiAgKi8KIHN0cnVjdCBnbG9iYWxf cHN0YXRlX2luZm8gewotCWludCBoaWdoZXN0X2xwc3RhdGU7CisJaW50IGhpZ2hlc3RfbHBzdGF0 ZV9pZHg7CiAJdW5zaWduZWQgaW50IGVsYXBzZWRfdGltZTsKIAl1bnNpZ25lZCBpbnQgbGFzdF9z YW1wbGVkX3RpbWU7Ci0JaW50IGxhc3RfbHBzdGF0ZTsKLQlpbnQgbGFzdF9ncHN0YXRlOworCWlu dCBsYXN0X2xwc3RhdGVfaWR4OworCWludCBsYXN0X2dwc3RhdGVfaWR4OwogCXNwaW5sb2NrX3Qg Z3BzdGF0ZV9sb2NrOwogCXN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwogfTsKQEAgLTEyNCwyOSAr MTI2LDQ3IEBAIHN0YXRpYyBpbnQgbnJfY2hpcHM7CiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3Ry dWN0IGNoaXAgKiwgY2hpcF9pbmZvKTsKIAogLyoKLSAqIE5vdGU6IFRoZSBzZXQgb2YgcHN0YXRl cyBjb25zaXN0cyBvZiBjb250aWd1b3VzIGludGVnZXJzLCB0aGUKLSAqIHNtYWxsZXN0IG9mIHdo aWNoIGlzIGluZGljYXRlZCBieSBwb3dlcm52X3BzdGF0ZV9pbmZvLm1pbiwgdGhlCi0gKiBsYXJn ZXN0IG9mIHdoaWNoIGlzIGluZGljYXRlZCBieSBwb3dlcm52X3BzdGF0ZV9pbmZvLm1heC4KKyAq IE5vdGU6CisgKiBUaGUgc2V0IG9mIHBzdGF0ZXMgY29uc2lzdHMgb2YgY29udGlndW91cyBpbnRl Z2Vycy4KKyAqIHBvd2VybnZfcHN0YXRlX2luZm8gc3RvcmVzIHRoZSBpbmRleCBvZiB0aGUgZnJl cXVlbmN5IHRhYmxlIGZvcgorICogbWF4LCBtaW4gYW5kIG5vbWluYWwgZnJlcXVlbmNpZXMuIEl0 IGFsc28gc3RvcmVzIG51bWJlciBvZgorICogYXZhaWxhYmxlIGZyZXF1ZW5jaWVzLgogICoKLSAq IFRoZSBub21pbmFsIHBzdGF0ZSBpcyB0aGUgaGlnaGVzdCBub24tdHVyYm8gcHN0YXRlIGluIHRo aXMKLSAqIHBsYXRmb3JtLiBUaGlzIGlzIGluZGljYXRlZCBieSBwb3dlcm52X3BzdGF0ZV9pbmZv Lm5vbWluYWwuCisgKiBwb3dlcm52X3BzdGF0ZV9pbmZvLm5vbWluYWwgaW5kaWNhdGVzIHRoZSBp bmRleCB0byB0aGUgaGlnaGVzdAorICogbm9uLXR1cmJvIGZyZXF1ZW5jeS4KICAqLwogc3RhdGlj IHN0cnVjdCBwb3dlcm52X3BzdGF0ZV9pbmZvIHsKLQlpbnQgbWluOwotCWludCBtYXg7Ci0JaW50 IG5vbWluYWw7Ci0JaW50IG5yX3BzdGF0ZXM7CisJdW5zaWduZWQgaW50IG1pbjsKKwl1bnNpZ25l ZCBpbnQgbWF4OworCXVuc2lnbmVkIGludCBub21pbmFsOworCXVuc2lnbmVkIGludCBucl9wc3Rh dGVzOwogfSBwb3dlcm52X3BzdGF0ZV9pbmZvOwogCisvKiBVc2UgZm9sbG93aW5nIG1hY3JvcyBm b3IgY29udmVyc2lvbnMgYmV0d2VlbiBwc3RhdGVfaWQgYW5kIGluZGV4ICovCitzdGF0aWMgaW5s aW5lIGludCBpZHhfdG9fcHN0YXRlKHVuc2lnbmVkIGludCBpKQoreworCXJldHVybiBwb3dlcm52 X2ZyZXFzW2ldLmRyaXZlcl9kYXRhOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBw c3RhdGVfdG9faWR4KGludCBwc3RhdGUpCit7CisJLyoKKwkgKiBhYnMoKSBpcyBkZWxpYmVyYXRl bHkgdXNlZCBzbyB0aGF0IGlzIHdvcmtzIHdpdGgKKwkgKiBib3RoIG1vbm90b25pY2FsbHkgaW5j cmVhc2luZyBhbmQgZGVjcmVhc2luZworCSAqIHBzdGF0ZSB2YWx1ZXMKKwkgKi8KKwlyZXR1cm4g YWJzKHBzdGF0ZSAtIGlkeF90b19wc3RhdGUocG93ZXJudl9wc3RhdGVfaW5mby5tYXgpKTsKK30K Kwogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2dwc3RhdGVzKHN0cnVjdCBjcHVmcmVxX3BvbGlj eSAqcG9saWN5KQogewogCXN0cnVjdCBnbG9iYWxfcHN0YXRlX2luZm8gKmdwc3RhdGVzID0gcG9s aWN5LT5kcml2ZXJfZGF0YTsKIAotCWdwc3RhdGVzLT5oaWdoZXN0X2xwc3RhdGUgPSAwOworCWdw c3RhdGVzLT5oaWdoZXN0X2xwc3RhdGVfaWR4ID0gMDsKIAlncHN0YXRlcy0+ZWxhcHNlZF90aW1l ID0gMDsKIAlncHN0YXRlcy0+bGFzdF9zYW1wbGVkX3RpbWUgPSAwOwotCWdwc3RhdGVzLT5sYXN0 X2xwc3RhdGUgPSAwOwotCWdwc3RhdGVzLT5sYXN0X2dwc3RhdGUgPSAwOworCWdwc3RhdGVzLT5s YXN0X2xwc3RhdGVfaWR4ID0gMDsKKwlncHN0YXRlcy0+bGFzdF9ncHN0YXRlX2lkeCA9IDA7CiB9 CiAKIC8qCkBAIC0xNTYsOSArMTc2LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9ncHN0 YXRlcyhzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSkKIHN0YXRpYyBpbnQgaW5pdF9wb3dl cm52X3BzdGF0ZXModm9pZCkKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvd2VyX21ndDsKLQlp bnQgaSwgcHN0YXRlX21pbiwgcHN0YXRlX21heCwgcHN0YXRlX25vbWluYWwsIG5yX3BzdGF0ZXMg PSAwOworCWludCBpLCBucl9wc3RhdGVzID0gMDsKIAljb25zdCBfX2JlMzIgKnBzdGF0ZV9pZHMs ICpwc3RhdGVfZnJlcXM7CiAJdTMyIGxlbl9pZHMsIGxlbl9mcmVxczsKKwl1MzIgcHN0YXRlX21p biwgcHN0YXRlX21heCwgcHN0YXRlX25vbWluYWw7CiAKIAlwb3dlcl9tZ3QgPSBvZl9maW5kX25v ZGVfYnlfcGF0aCgiL2libSxvcGFsL3Bvd2VyLW1ndCIpOwogCWlmICghcG93ZXJfbWd0KSB7CkBA IC0yMDgsNiArMjI5LDcgQEAgc3RhdGljIGludCBpbml0X3Bvd2VybnZfcHN0YXRlcyh2b2lkKQog CQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKKwlwb3dlcm52X3BzdGF0ZV9pbmZvLm5yX3BzdGF0ZXMg PSBucl9wc3RhdGVzOwogCXByX2RlYnVnKCJOUiBQU3RhdGVzICVkXG4iLCBucl9wc3RhdGVzKTsK IAlmb3IgKGkgPSAwOyBpIDwgbnJfcHN0YXRlczsgaSsrKSB7CiAJCXUzMiBpZCA9IGJlMzJfdG9f Y3B1KHBzdGF0ZV9pZHNbaV0pOwpAQCAtMjE2LDE1ICsyMzgsMTcgQEAgc3RhdGljIGludCBpbml0 X3Bvd2VybnZfcHN0YXRlcyh2b2lkKQogCQlwcl9kZWJ1ZygiUFN0YXRlIGlkICVkIGZyZXEgJWQg TUh6XG4iLCBpZCwgZnJlcSk7CiAJCXBvd2VybnZfZnJlcXNbaV0uZnJlcXVlbmN5ID0gZnJlcSAq IDEwMDA7IC8qIGtIeiAqLwogCQlwb3dlcm52X2ZyZXFzW2ldLmRyaXZlcl9kYXRhID0gaWQ7CisK KwkJaWYgKGlkID09IHBzdGF0ZV9tYXgpCisJCQlwb3dlcm52X3BzdGF0ZV9pbmZvLm1heCA9IGk7 CisJCWVsc2UgaWYgKGlkID09IHBzdGF0ZV9ub21pbmFsKQorCQkJcG93ZXJudl9wc3RhdGVfaW5m by5ub21pbmFsID0gaTsKKwkJZWxzZSBpZiAoaWQgPT0gcHN0YXRlX21pbikKKwkJCXBvd2VybnZf cHN0YXRlX2luZm8ubWluID0gaTsKIAl9CisKIAkvKiBFbmQgb2YgbGlzdCBtYXJrZXIgZW50cnkg Ki8KIAlwb3dlcm52X2ZyZXFzW2ldLmZyZXF1ZW5jeSA9IENQVUZSRVFfVEFCTEVfRU5EOwotCi0J cG93ZXJudl9wc3RhdGVfaW5mby5taW4gPSBwc3RhdGVfbWluOwotCXBvd2VybnZfcHN0YXRlX2lu Zm8ubWF4ID0gcHN0YXRlX21heDsKLQlwb3dlcm52X3BzdGF0ZV9pbmZvLm5vbWluYWwgPSBwc3Rh dGVfbm9taW5hbDsKLQlwb3dlcm52X3BzdGF0ZV9pbmZvLm5yX3BzdGF0ZXMgPSBucl9wc3RhdGVz OwotCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTIzMywxMiArMjU3LDEyIEBAIHN0YXRpYyB1bnNpZ25l ZCBpbnQgcHN0YXRlX2lkX3RvX2ZyZXEoaW50IHBzdGF0ZV9pZCkKIHsKIAlpbnQgaTsKIAotCWkg PSBwb3dlcm52X3BzdGF0ZV9pbmZvLm1heCAtIHBzdGF0ZV9pZDsKKwlpID0gcHN0YXRlX3RvX2lk eChwc3RhdGVfaWQpOwogCWlmIChpID49IHBvd2VybnZfcHN0YXRlX2luZm8ubnJfcHN0YXRlcyB8 fCBpIDwgMCkgewogCQlwcl93YXJuKCJQU3RhdGUgaWQgJWQgb3V0c2lkZSBvZiBQU3RhdGUgdGFi bGUsICIKIAkJCSJyZXBvcnRpbmcgbm9taW5hbCBpZCAlZCBpbnN0ZWFkXG4iLAotCQkJcHN0YXRl X2lkLCBwb3dlcm52X3BzdGF0ZV9pbmZvLm5vbWluYWwpOwotCQlpID0gcG93ZXJudl9wc3RhdGVf aW5mby5tYXggLSBwb3dlcm52X3BzdGF0ZV9pbmZvLm5vbWluYWw7CisJCQlwc3RhdGVfaWQsIGlk eF90b19wc3RhdGUocG93ZXJudl9wc3RhdGVfaW5mby5ub21pbmFsKSk7CisJCWkgPSBwb3dlcm52 X3BzdGF0ZV9pbmZvLm5vbWluYWw7CiAJfQogCiAJcmV0dXJuIHBvd2VybnZfZnJlcXNbaV0uZnJl cXVlbmN5OwpAQCAtMjUyLDcgKzI3Niw3IEBAIHN0YXRpYyBzc2l6ZV90IGNwdWluZm9fbm9taW5h bF9mcmVxX3Nob3coc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3ksCiAJCQkJCWNoYXIgKmJ1 ZikKIHsKIAlyZXR1cm4gc3ByaW50ZihidWYsICIldVxuIiwKLQkJcHN0YXRlX2lkX3RvX2ZyZXEo cG93ZXJudl9wc3RhdGVfaW5mby5ub21pbmFsKSk7CisJCXBvd2VybnZfZnJlcXNbcG93ZXJudl9w c3RhdGVfaW5mby5ub21pbmFsXS5mcmVxdWVuY3kpOwogfQogCiBzdHJ1Y3QgZnJlcV9hdHRyIGNw dWZyZXFfZnJlcV9hdHRyX2NwdWluZm9fbm9taW5hbF9mcmVxID0KQEAgLTQyNiw3ICs0NTAsNyBA QCBzdGF0aWMgdm9pZCBzZXRfcHN0YXRlKHZvaWQgKmRhdGEpCiAgKi8KIHN0YXRpYyBpbmxpbmUg dW5zaWduZWQgaW50IGdldF9ub21pbmFsX2luZGV4KHZvaWQpCiB7Ci0JcmV0dXJuIHBvd2VybnZf cHN0YXRlX2luZm8ubWF4IC0gcG93ZXJudl9wc3RhdGVfaW5mby5ub21pbmFsOworCXJldHVybiBw b3dlcm52X3BzdGF0ZV9pbmZvLm5vbWluYWw7CiB9CiAKIHN0YXRpYyB2b2lkIHBvd2VybnZfY3B1 ZnJlcV90aHJvdHRsZV9jaGVjayh2b2lkICpkYXRhKQpAQCAtNDM1LDIwICs0NTksMjIgQEAgc3Rh dGljIHZvaWQgcG93ZXJudl9jcHVmcmVxX3Rocm90dGxlX2NoZWNrKHZvaWQgKmRhdGEpCiAJdW5z aWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKIAl1bnNpZ25lZCBsb25nIHBtc3I7 CiAJaW50IHBtc3JfcG1heDsKKwl1bnNpZ25lZCBpbnQgcG1zcl9wbWF4X2lkeDsKIAogCXBtc3Ig PSBnZXRfcG1zcHIoU1BSTl9QTVNSKTsKIAljaGlwID0gdGhpc19jcHVfcmVhZChjaGlwX2luZm8p OwogCiAJLyogQ2hlY2sgZm9yIFBtYXggQ2FwcGluZyAqLwogCXBtc3JfcG1heCA9IChzOClQTVNS X01BWChwbXNyKTsKLQlpZiAocG1zcl9wbWF4ICE9IHBvd2VybnZfcHN0YXRlX2luZm8ubWF4KSB7 CisJcG1zcl9wbWF4X2lkeCA9IHBzdGF0ZV90b19pZHgocG1zcl9wbWF4KTsKKwlpZiAocG1zcl9w bWF4X2lkeCAhPSBwb3dlcm52X3BzdGF0ZV9pbmZvLm1heCkgewogCQlpZiAoY2hpcC0+dGhyb3R0 bGVkKQogCQkJZ290byBuZXh0OwogCQljaGlwLT50aHJvdHRsZWQgPSB0cnVlOwotCQlpZiAocG1z cl9wbWF4IDwgcG93ZXJudl9wc3RhdGVfaW5mby5ub21pbmFsKSB7Ci0JCQlwcl93YXJuX29uY2Uo IkNQVSAlZCBvbiBDaGlwICV1IGhhcyBQbWF4IHJlZHVjZWQgYmVsb3cgbm9taW5hbCBmcmVxdWVu Y3kgKCVkIDwgJWQpXG4iLAorCQlpZiAocG1zcl9wbWF4X2lkeCA+IHBvd2VybnZfcHN0YXRlX2lu Zm8ubm9taW5hbCkgeworCQkJcHJfd2Fybl9vbmNlKCJDUFUgJWQgb24gQ2hpcCAldSBoYXMgUG1h eCglZCkgcmVkdWNlZCBiZWxvdyBub21pbmFsIGZyZXF1ZW5jeSglZClcbiIsCiAJCQkJICAgICBj cHUsIGNoaXAtPmlkLCBwbXNyX3BtYXgsCi0JCQkJICAgICBwb3dlcm52X3BzdGF0ZV9pbmZvLm5v bWluYWwpOworCQkJCSAgICAgaWR4X3RvX3BzdGF0ZShwb3dlcm52X3BzdGF0ZV9pbmZvLm5vbWlu YWwpKTsKIAkJCWNoaXAtPnRocm90dGxlX3N1Yl90dXJibysrOwogCQl9IGVsc2UgewogCQkJY2hp cC0+dGhyb3R0bGVfdHVyYm8rKzsKQEAgLTQ4NCwzNCArNTEwLDM1IEBAIG5leHQ6CiAKIC8qKgog ICogY2FsY19nbG9iYWxfcHN0YXRlIC0gQ2FsY3VsYXRlIGdsb2JhbCBwc3RhdGUKLSAqIEBlbGFw c2VkX3RpbWU6CUVsYXBzZWQgdGltZSBpbiBtaWxsaXNlY29uZHMKLSAqIEBsb2NhbF9wc3RhdGU6 CU5ldyBsb2NhbCBwc3RhdGUKLSAqIEBoaWdoZXN0X2xwc3RhdGU6CXBzdGF0ZSBmcm9tIHdoaWNo IGl0cyByYW1waW5nIGRvd24KKyAqIEBlbGFwc2VkX3RpbWU6CQlFbGFwc2VkIHRpbWUgaW4gbWls bGlzZWNvbmRzCisgKiBAbG9jYWxfcHN0YXRlX2lkeDoJCU5ldyBsb2NhbCBwc3RhdGUKKyAqIEBo aWdoZXN0X2xwc3RhdGVfaWR4Oglwc3RhdGUgZnJvbSB3aGljaCBpdHMgcmFtcGluZyBkb3duCiAg KgogICogRmluZHMgdGhlIGFwcHJvcHJpYXRlIGdsb2JhbCBwc3RhdGUgYmFzZWQgb24gdGhlIHBz dGF0ZSBmcm9tIHdoaWNoIGl0cwogICogcmFtcGluZyBkb3duIGFuZCB0aGUgdGltZSBlbGFwc2Vk IGluIHJhbXBpbmcgZG93bi4gSXQgZm9sbG93cyBhIHF1YWRyYXRpYwogICogZXF1YXRpb24gd2hp Y2ggZW5zdXJlcyB0aGF0IGl0IHJlYWNoZXMgcmFtcGluZyBkb3duIHRvIHBtaW4gaW4gNXNlYy4K ICAqLwogc3RhdGljIGlubGluZSBpbnQgY2FsY19nbG9iYWxfcHN0YXRlKHVuc2lnbmVkIGludCBl bGFwc2VkX3RpbWUsCi0JCQkJICAgICBpbnQgaGlnaGVzdF9scHN0YXRlLCBpbnQgbG9jYWxfcHN0 YXRlKQorCQkJCSAgICAgaW50IGhpZ2hlc3RfbHBzdGF0ZV9pZHgsCisJCQkJICAgICBpbnQgbG9j YWxfcHN0YXRlX2lkeCkKIHsKLQlpbnQgcHN0YXRlX2RpZmY7CisJaW50IGluZGV4X2RpZmY7CiAK IAkvKgogCSAqIFVzaW5nIHJhbXBfZG93bl9wZXJjZW50IHdlIGdldCB0aGUgcGVyY2VudGFnZSBv ZiByYW1wZG93bgogCSAqIHRoYXQgd2UgYXJlIGV4cGVjdGluZyB0byBiZSBkcm9wcGluZy4gRGlm ZmVyZW5jZSBiZXR3ZWVuCi0JICogaGlnaGVzdF9scHN0YXRlIGFuZCBwb3dlcm52X3BzdGF0ZV9p bmZvLm1pbiB3aWxsIGdpdmUgYSBhYnNvbHV0ZQorCSAqIGhpZ2hlc3RfbHBzdGF0ZV9pZHggYW5k IHBvd2VybnZfcHN0YXRlX2luZm8ubWluIHdpbGwgZ2l2ZSBhIGFic29sdXRlCiAJICogbnVtYmVy IG9mIGhvdyBtYW55IHBzdGF0ZXMgd2Ugd2lsbCBkcm9wIGV2ZW50dWFsbHkgYnkgdGhlIGVuZCBv ZgogCSAqIDUgc2Vjb25kcywgdGhlbiBqdXN0IHNjYWxlIGl0IGdldCB0aGUgbnVtYmVyIHBzdGF0 ZXMgdG8gYmUgZHJvcHBlZC4KIAkgKi8KLQlwc3RhdGVfZGlmZiA9ICAoKGludClyYW1wX2Rvd25f cGVyY2VudChlbGFwc2VkX3RpbWUpICoKLQkJCShoaWdoZXN0X2xwc3RhdGUgLSBwb3dlcm52X3Bz dGF0ZV9pbmZvLm1pbikpIC8gMTAwOworCWluZGV4X2RpZmYgPSAgKChpbnQpcmFtcF9kb3duX3Bl cmNlbnQoZWxhcHNlZF90aW1lKSAqCisJCQkocG93ZXJudl9wc3RhdGVfaW5mby5taW4gLSBoaWdo ZXN0X2xwc3RhdGVfaWR4KSkgLyAxMDA7CiAKIAkvKiBFbnN1cmUgdGhhdCBnbG9iYWwgcHN0YXRl IGlzID49IHRvIGxvY2FsIHBzdGF0ZSAqLwotCWlmIChoaWdoZXN0X2xwc3RhdGUgLSBwc3RhdGVf ZGlmZiA8IGxvY2FsX3BzdGF0ZSkKLQkJcmV0dXJuIGxvY2FsX3BzdGF0ZTsKKwlpZiAoaGlnaGVz dF9scHN0YXRlX2lkeCArIGluZGV4X2RpZmYgPj0gbG9jYWxfcHN0YXRlX2lkeCkKKwkJcmV0dXJu IGxvY2FsX3BzdGF0ZV9pZHg7CiAJZWxzZQotCQlyZXR1cm4gaGlnaGVzdF9scHN0YXRlIC0gcHN0 YXRlX2RpZmY7CisJCXJldHVybiBoaWdoZXN0X2xwc3RhdGVfaWR4ICsgaW5kZXhfZGlmZjsKIH0K IAogc3RhdGljIGlubGluZSB2b2lkICBxdWV1ZV9ncHN0YXRlX3RpbWVyKHN0cnVjdCBnbG9iYWxf cHN0YXRlX2luZm8gKmdwc3RhdGVzKQpAQCAtNTQ3LDcgKzU3NCw3IEBAIHZvaWQgZ3BzdGF0ZV90 aW1lcl9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIHsKIAlzdHJ1Y3QgY3B1ZnJlcV9wb2xp Y3kgKnBvbGljeSA9IChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKilkYXRhOwogCXN0cnVjdCBnbG9i YWxfcHN0YXRlX2luZm8gKmdwc3RhdGVzID0gcG9saWN5LT5kcml2ZXJfZGF0YTsKLQlpbnQgZ3Bz dGF0ZV9pZDsKKwlpbnQgZ3BzdGF0ZV9pZHg7CiAJdW5zaWduZWQgaW50IHRpbWVfZGlmZiA9IGpp ZmZpZXNfdG9fbXNlY3MoamlmZmllcykKIAkJCQkJLSBncHN0YXRlcy0+bGFzdF9zYW1wbGVkX3Rp bWU7CiAJc3RydWN0IHBvd2VybnZfc21wX2NhbGxfZGF0YSBmcmVxX2RhdGE7CkBAIC01NTcsMjkg KzU4NCwyOSBAQCB2b2lkIGdwc3RhdGVfdGltZXJfaGFuZGxlcih1bnNpZ25lZCBsb25nIGRhdGEp CiAKIAlncHN0YXRlcy0+bGFzdF9zYW1wbGVkX3RpbWUgKz0gdGltZV9kaWZmOwogCWdwc3RhdGVz LT5lbGFwc2VkX3RpbWUgKz0gdGltZV9kaWZmOwotCWZyZXFfZGF0YS5wc3RhdGVfaWQgPSBncHN0 YXRlcy0+bGFzdF9scHN0YXRlOworCWZyZXFfZGF0YS5wc3RhdGVfaWQgPSBpZHhfdG9fcHN0YXRl KGdwc3RhdGVzLT5sYXN0X2xwc3RhdGVfaWR4KTsKIAotCWlmICgoZ3BzdGF0ZXMtPmxhc3RfZ3Bz dGF0ZSA9PSBmcmVxX2RhdGEucHN0YXRlX2lkKSB8fAorCWlmICgoZ3BzdGF0ZXMtPmxhc3RfZ3Bz dGF0ZV9pZHggPT0gZ3BzdGF0ZXMtPmxhc3RfbHBzdGF0ZV9pZHgpIHx8CiAJICAgIChncHN0YXRl cy0+ZWxhcHNlZF90aW1lID4gTUFYX1JBTVBfRE9XTl9USU1FKSkgewotCQlncHN0YXRlX2lkID0g ZnJlcV9kYXRhLnBzdGF0ZV9pZDsKKwkJZ3BzdGF0ZV9pZHggPSBwc3RhdGVfdG9faWR4KGZyZXFf ZGF0YS5wc3RhdGVfaWQpOwogCQlyZXNldF9ncHN0YXRlcyhwb2xpY3kpOwotCQlncHN0YXRlcy0+ aGlnaGVzdF9scHN0YXRlID0gZnJlcV9kYXRhLnBzdGF0ZV9pZDsKKwkJZ3BzdGF0ZXMtPmhpZ2hl c3RfbHBzdGF0ZV9pZHggPSBncHN0YXRlX2lkeDsKIAl9IGVsc2UgewotCQlncHN0YXRlX2lkID0g Y2FsY19nbG9iYWxfcHN0YXRlKGdwc3RhdGVzLT5lbGFwc2VkX3RpbWUsCi0JCQkJCQlncHN0YXRl cy0+aGlnaGVzdF9scHN0YXRlLAotCQkJCQkJZnJlcV9kYXRhLnBzdGF0ZV9pZCk7CisJCWdwc3Rh dGVfaWR4ID0gY2FsY19nbG9iYWxfcHN0YXRlKGdwc3RhdGVzLT5lbGFwc2VkX3RpbWUsCisJCQkJ CQkgZ3BzdGF0ZXMtPmhpZ2hlc3RfbHBzdGF0ZV9pZHgsCisJCQkJCQkgZnJlcV9kYXRhLnBzdGF0 ZV9pZCk7CiAJfQogCiAJLyoKIAkgKiBJZiBsb2NhbCBwc3RhdGUgaXMgZXF1YWwgdG8gZ2xvYmFs IHBzdGF0ZSwgcmFtcGRvd24gaXMgb3ZlcgogCSAqIFNvIHRpbWVyIGlzIG5vdCByZXF1aXJlZCB0 byBiZSBxdWV1ZWQuCiAJICovCi0JaWYgKGdwc3RhdGVfaWQgIT0gZnJlcV9kYXRhLnBzdGF0ZV9p ZCkKKwlpZiAoZ3BzdGF0ZV9pZHggIT0gZ3BzdGF0ZXMtPmxhc3RfbHBzdGF0ZV9pZHgpCiAJCXF1 ZXVlX2dwc3RhdGVfdGltZXIoZ3BzdGF0ZXMpOwogCi0JZnJlcV9kYXRhLmdwc3RhdGVfaWQgPSBn cHN0YXRlX2lkOwotCWdwc3RhdGVzLT5sYXN0X2dwc3RhdGUgPSBmcmVxX2RhdGEuZ3BzdGF0ZV9p ZDsKLQlncHN0YXRlcy0+bGFzdF9scHN0YXRlID0gZnJlcV9kYXRhLnBzdGF0ZV9pZDsKKwlmcmVx X2RhdGEuZ3BzdGF0ZV9pZCA9IGlkeF90b19wc3RhdGUoZ3BzdGF0ZV9pZHgpOworCWdwc3RhdGVz LT5sYXN0X2dwc3RhdGVfaWR4ID0gcHN0YXRlX3RvX2lkeChmcmVxX2RhdGEuZ3BzdGF0ZV9pZCk7 CisJZ3BzdGF0ZXMtPmxhc3RfbHBzdGF0ZV9pZHggPSBwc3RhdGVfdG9faWR4KGZyZXFfZGF0YS5w c3RhdGVfaWQpOwogCiAJc3Bpbl91bmxvY2soJmdwc3RhdGVzLT5ncHN0YXRlX2xvY2spOwogCkBA IC01OTYsNyArNjIzLDcgQEAgc3RhdGljIGludCBwb3dlcm52X2NwdWZyZXFfdGFyZ2V0X2luZGV4 KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LAogCQkJCQl1bnNpZ25lZCBpbnQgbmV3X2lu ZGV4KQogewogCXN0cnVjdCBwb3dlcm52X3NtcF9jYWxsX2RhdGEgZnJlcV9kYXRhOwotCXVuc2ln bmVkIGludCBjdXJfbXNlYywgZ3BzdGF0ZV9pZDsKKwl1bnNpZ25lZCBpbnQgY3VyX21zZWMsIGdw c3RhdGVfaWR4OwogCXN0cnVjdCBnbG9iYWxfcHN0YXRlX2luZm8gKmdwc3RhdGVzID0gcG9saWN5 LT5kcml2ZXJfZGF0YTsKIAogCWlmICh1bmxpa2VseShyZWJvb3RpbmcpICYmIG5ld19pbmRleCAh PSBnZXRfbm9taW5hbF9pbmRleCgpKQpAQCAtNjA4LDE1ICs2MzUsMTUgQEAgc3RhdGljIGludCBw b3dlcm52X2NwdWZyZXFfdGFyZ2V0X2luZGV4KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5 LAogCWN1cl9tc2VjID0gamlmZmllc190b19tc2VjcyhnZXRfamlmZmllc182NCgpKTsKIAogCXNw aW5fbG9jaygmZ3BzdGF0ZXMtPmdwc3RhdGVfbG9jayk7Ci0JZnJlcV9kYXRhLnBzdGF0ZV9pZCA9 IHBvd2VybnZfZnJlcXNbbmV3X2luZGV4XS5kcml2ZXJfZGF0YTsKKwlmcmVxX2RhdGEucHN0YXRl X2lkID0gaWR4X3RvX3BzdGF0ZShuZXdfaW5kZXgpOwogCiAJaWYgKCFncHN0YXRlcy0+bGFzdF9z YW1wbGVkX3RpbWUpIHsKLQkJZ3BzdGF0ZV9pZCA9IGZyZXFfZGF0YS5wc3RhdGVfaWQ7Ci0JCWdw c3RhdGVzLT5oaWdoZXN0X2xwc3RhdGUgPSBmcmVxX2RhdGEucHN0YXRlX2lkOworCQlncHN0YXRl X2lkeCA9IG5ld19pbmRleDsKKwkJZ3BzdGF0ZXMtPmhpZ2hlc3RfbHBzdGF0ZV9pZHggPSBuZXdf aW5kZXg7CiAJCWdvdG8gZ3BzdGF0ZXNfZG9uZTsKIAl9CiAKLQlpZiAoZ3BzdGF0ZXMtPmxhc3Rf Z3BzdGF0ZSA+IGZyZXFfZGF0YS5wc3RhdGVfaWQpIHsKKwlpZiAoZ3BzdGF0ZXMtPmxhc3RfZ3Bz dGF0ZV9pZHggPCBuZXdfaW5kZXgpIHsKIAkJZ3BzdGF0ZXMtPmVsYXBzZWRfdGltZSArPSBjdXJf bXNlYyAtCiAJCQkJCQkgZ3BzdGF0ZXMtPmxhc3Rfc2FtcGxlZF90aW1lOwogCkBAIC02MjcsMzQg KzY1NCwzNCBAQCBzdGF0aWMgaW50IHBvd2VybnZfY3B1ZnJlcV90YXJnZXRfaW5kZXgoc3RydWN0 IGNwdWZyZXFfcG9saWN5ICpwb2xpY3ksCiAJCSAqLwogCQlpZiAoZ3BzdGF0ZXMtPmVsYXBzZWRf dGltZSA+IE1BWF9SQU1QX0RPV05fVElNRSkgewogCQkJcmVzZXRfZ3BzdGF0ZXMocG9saWN5KTsK LQkJCWdwc3RhdGVzLT5oaWdoZXN0X2xwc3RhdGUgPSBmcmVxX2RhdGEucHN0YXRlX2lkOwotCQkJ Z3BzdGF0ZV9pZCA9IGZyZXFfZGF0YS5wc3RhdGVfaWQ7CisJCQlncHN0YXRlcy0+aGlnaGVzdF9s cHN0YXRlX2lkeCA9IG5ld19pbmRleDsKKwkJCWdwc3RhdGVfaWR4ID0gbmV3X2luZGV4OwogCQl9 IGVsc2UgewogCQkvKiBFbGFzcHNlZF90aW1lIGlzIGxlc3MgdGhhbiA1IHNlY29uZHMsIGNvbnRp bnVlIHRvIHJhbXBkb3duICovCi0JCQlncHN0YXRlX2lkID0gY2FsY19nbG9iYWxfcHN0YXRlKGdw c3RhdGVzLT5lbGFwc2VkX3RpbWUsCi0JCQkJCQkJZ3BzdGF0ZXMtPmhpZ2hlc3RfbHBzdGF0ZSwK LQkJCQkJCQlmcmVxX2RhdGEucHN0YXRlX2lkKTsKKwkJCWdwc3RhdGVfaWR4ID0gY2FsY19nbG9i YWxfcHN0YXRlKGdwc3RhdGVzLT5lbGFwc2VkX3RpbWUsCisJCQkJCQkJIGdwc3RhdGVzLT5oaWdo ZXN0X2xwc3RhdGVfaWR4LAorCQkJCQkJCSBuZXdfaW5kZXgpOwogCQl9CiAJfSBlbHNlIHsKIAkJ cmVzZXRfZ3BzdGF0ZXMocG9saWN5KTsKLQkJZ3BzdGF0ZXMtPmhpZ2hlc3RfbHBzdGF0ZSA9IGZy ZXFfZGF0YS5wc3RhdGVfaWQ7Ci0JCWdwc3RhdGVfaWQgPSBmcmVxX2RhdGEucHN0YXRlX2lkOwor CQlncHN0YXRlcy0+aGlnaGVzdF9scHN0YXRlX2lkeCA9IG5ld19pbmRleDsKKwkJZ3BzdGF0ZV9p ZHggPSBuZXdfaW5kZXg7CiAJfQogCiAJLyoKIAkgKiBJZiBsb2NhbCBwc3RhdGUgaXMgZXF1YWwg dG8gZ2xvYmFsIHBzdGF0ZSwgcmFtcGRvd24gaXMgb3ZlcgogCSAqIFNvIHRpbWVyIGlzIG5vdCBy ZXF1aXJlZCB0byBiZSBxdWV1ZWQuCiAJICovCi0JaWYgKGdwc3RhdGVfaWQgIT0gZnJlcV9kYXRh LnBzdGF0ZV9pZCkKKwlpZiAoZ3BzdGF0ZV9pZHggIT0gbmV3X2luZGV4KQogCQlxdWV1ZV9ncHN0 YXRlX3RpbWVyKGdwc3RhdGVzKTsKIAllbHNlCiAJCWRlbF90aW1lcl9zeW5jKCZncHN0YXRlcy0+ dGltZXIpOwogCiBncHN0YXRlc19kb25lOgotCWZyZXFfZGF0YS5ncHN0YXRlX2lkID0gZ3BzdGF0 ZV9pZDsKKwlmcmVxX2RhdGEuZ3BzdGF0ZV9pZCA9IGlkeF90b19wc3RhdGUoZ3BzdGF0ZV9pZHgp OwogCWdwc3RhdGVzLT5sYXN0X3NhbXBsZWRfdGltZSA9IGN1cl9tc2VjOwotCWdwc3RhdGVzLT5s YXN0X2dwc3RhdGUgPSBmcmVxX2RhdGEuZ3BzdGF0ZV9pZDsKLQlncHN0YXRlcy0+bGFzdF9scHN0 YXRlID0gZnJlcV9kYXRhLnBzdGF0ZV9pZDsKKwlncHN0YXRlcy0+bGFzdF9ncHN0YXRlX2lkeCA9 IGdwc3RhdGVfaWR4OworCWdwc3RhdGVzLT5sYXN0X2xwc3RhdGVfaWR4ID0gbmV3X2luZGV4Owog CiAJc3Bpbl91bmxvY2soJmdwc3RhdGVzLT5ncHN0YXRlX2xvY2spOwogCkBAIC04NDcsOCArODc0 LDggQEAgc3RhdGljIHZvaWQgcG93ZXJudl9jcHVmcmVxX3N0b3BfY3B1KHN0cnVjdCBjcHVmcmVx X3BvbGljeSAqcG9saWN5KQogCXN0cnVjdCBwb3dlcm52X3NtcF9jYWxsX2RhdGEgZnJlcV9kYXRh OwogCXN0cnVjdCBnbG9iYWxfcHN0YXRlX2luZm8gKmdwc3RhdGVzID0gcG9saWN5LT5kcml2ZXJf ZGF0YTsKIAotCWZyZXFfZGF0YS5wc3RhdGVfaWQgPSBwb3dlcm52X3BzdGF0ZV9pbmZvLm1pbjsK LQlmcmVxX2RhdGEuZ3BzdGF0ZV9pZCA9IHBvd2VybnZfcHN0YXRlX2luZm8ubWluOworCWZyZXFf ZGF0YS5wc3RhdGVfaWQgPSBpZHhfdG9fcHN0YXRlKHBvd2VybnZfcHN0YXRlX2luZm8ubWluKTsK KwlmcmVxX2RhdGEuZ3BzdGF0ZV9pZCA9IGlkeF90b19wc3RhdGUocG93ZXJudl9wc3RhdGVfaW5m by5taW4pOwogCXNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShwb2xpY3ktPmNwdSwgc2V0X3BzdGF0 ZSwgJmZyZXFfZGF0YSwgMSk7CiAJZGVsX3RpbWVyX3N5bmMoJmdwc3RhdGVzLT50aW1lcik7CiB9 Ci0tIAoyLjUuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KTGludXhwcGMtZGV2IG1haWxpbmcgbGlzdApMaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9y ZwpodHRwczovL2xpc3RzLm96bGFicy5vcmcvbGlzdGluZm8vbGludXhwcGMtZGV2