From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v6 23/26] xen/arm: Allow vpl011 to be used by DomU Date: Fri, 2 Nov 2018 16:45:15 -0700 Message-ID: <1541202318-9840-23-git-send-email-sstabellini@kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: julien.grall@arm.com Cc: Stefano Stabellini , Achin.Gupta@arm.com, sstabellini@kernel.org, andrii_anisov@epam.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org TWFrZSB2cGwwMTEgYmVpbmcgYWJsZSB0byBiZSB1c2VkIHdpdGhvdXQgYSB1c2Vyc3BhY2UgY29t cG9uZW50IGluIERvbTAuCkluIHRoYXQgY2FzZSwgb3V0cHV0IGlzIHByaW50ZWQgdG8gdGhlIFhl biBzZXJpYWwgYW5kIGlucHV0IGlzIHJlY2VpdmVkCmZyb20gdGhlIFhlbiBzZXJpYWwgb25lIGNo YXJhY3RlciBhdCBhIHRpbWUuCgpDYWxsIGRvbWFpbl92cGwwMTFfaW5pdCBkdXJpbmcgY29uc3Ry dWN0X2RvbVUgaWYgdnBsMDExIGlzIGVuYWJsZWQuCgpJbnRyb2R1Y2UgYSBuZXcgcmluZyBzdHJ1 Y3Qgd2l0aCBvbmx5IHRoZSByaW5nIGFycmF5IHRvIGF2b2lkIGEgd2FzdGUgb2YKbWVtb3J5LiBJ bnRyb2R1Y2Ugc2VwYXJhdGUgcmVhZF9kYXRhIGFuZCB3cml0ZV9kYXRhIGZ1bmN0aW9ucyBmb3IK aW5pdGlhbCBkb21haW5zOiB2cGwwMTFfd3JpdGVfZGF0YV94ZW4gaXMgdmVyeSBzaW1wbGUgYW5k IGp1c3Qgd3JpdGVzCnRvIHRoZSBjb25zb2xlLCB3aGlsZSB2cGwwMTFfcmVhZF9kYXRhX3hlbiBp cyBhIGR1cGxpY2F0ZSBvZgp2cGwwMTFfcmVhZF9kYXRhLiBBbHRob3VnaCB0ZXh0dWFsbHkgYWxt b3N0IGlkZW50aWNhbCwgd2UgYXJlIGZvcmNlZCB0bwpkdXBsaWNhdGUgdGhlIGZ1bmN0aW9ucyBi ZWNhdXNlIHRoZSBzdHJ1Y3QgbGF5b3V0IGlzIGRpZmZlcmVudC4KCk91dHB1dCBjaGFyYWN0ZXJz IGFyZSBwcmludGVkIG9uZSBieSBvbmUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8KaW50ZXJtaXhl ZCBvdXRwdXQgb2YgZGlmZmVyZW50IGRvbWFpbnMgb24gdGhlIGNvbnNvbGUuIEEgZm9sbG93LXVw IHBhdGNoCndpbGwgc29sdmUgdGhlIGlzc3VlIGJ5IGludHJvZHVjaW5nIGJ1ZmZlcmluZy4KClNp Z25lZC1vZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub3NAeGlsaW54LmNvbT4KQWNr ZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Ci0tLQpDaGFuZ2VzIGlu IHY1OgotIHJlbmFibGUgY2FsbCB0byB2cGwwMTFfcnhfY2hhcl94ZW4gZnJvbSBjb25zb2xlLmMK CkNoYW5nZXMgaW4gdjQ6Ci0gY29kZSBzdHlsZQoKQ2hhbmdlcyBpbiB2MzoKLSBhZGQgaW4tY29k ZSBjb21tZW50cwotIGltcHJvdmUgZXhpc3RpbmcgY29tbWVudHMKLSByZW1vdmUgaWZkZWYgYXJv dW5kIGRvbWFpbl92cGwwMTFfaW5pdCBpbiBjb25zdHJ1Y3RfZG9tVQotIGFkZCBBU1NFUlQKLSB1 c2UgU0JTQV9VQVJUX0ZJRk9fU0laRSBmb3IgaW4gYnVmZmVyIHNpemUKLSByZW5hbWUgcmluZ19l bmFibGUgdG8gYmFja2VuZF9pbl9kb21haW4KLSByZW5hbWUgc3RydWN0IHhlbmNvbnNfaW4gdG8g c3RydWN0IHZwbDAxMV94ZW5fYmFja2VuZAotIHJlbmFtZSBpbnJpbmcgZmllbGQgdG8geGVuCi0g cmVuYW1lIGhlbHBlciBmdW5jdGlvbnMgYWNjb3JkaW5nbHkKLSByZW1vdmUgdW5uZWNlc3Nhcnkg c3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB2cGwwMTFfcnhfY2hhcgotIG1vdmUgdnBsMDExX3J4X2No YXJfeGVuIHdpdGhpbiB0aGUgZmlsZSB0byBhdm9pZCB0aGUgbmVlZCBvZiBhIGZvcndhcmQKICBk ZWNsYXJhdGlvbiBvZiB2cGwwMTFfZGF0YV9hdmFpbAotIGZpeCBzbWFsbCBidWcgaW4gdnBsMDEx X3J4X2NoYXJfeGVuOiBpbmNyZW1lbnQgaW5fcHJvZCBiZWZvcmUgdXNpbmcgaXQKICB0byBjaGVj ayB4ZW5jb25zX3F1ZXVlZC4KCkNoYW5nZXMgaW4gdjI6Ci0gb25seSBpbml0IGlmIHZwbDAxMQot IHJlbmFtZSB2cGwwMTFfcmVhZF9jaGFyIHRvIHZwbDAxMV9yeF9jaGFyCi0gcmVtb3ZlIHNwdXJp b3VzIGNoYW5nZQotIGZpeCBjb2Rpbmcgc3R5bGUKLSB1c2UgZGlmZmVyZW50IHJpbmcgc3RydWN0 Ci0gbW92ZSB0aGUgd3JpdGVfZGF0YSBjaGFuZ2VzIHRvIHRoZWlyIG93biBmdW5jdGlvbgogICh2 cGwwMTFfd3JpdGVfZGF0YV9ub3JpbmcpCi0gZHVwbGljYXRlIHZwbDAxMV9yZWFkX2RhdGEKLS0t CiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgIHwgICA5ICstCiB4ZW4vYXJjaC9hcm0vdnBs MDExLmMgICAgICAgIHwgMjAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0KIHhlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5jICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRl L2FzbS1hcm0vdnBsMDExLmggfCAgIDggKysKIDQgZmlsZXMgY2hhbmdlZCwgMTkzIGluc2VydGlv bnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW5f YnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwppbmRleCBkODFlYzUzLi43NjFh Y2NiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKKysrIGIveGVuL2Fy Y2gvYXJtL2RvbWFpbl9idWlsZC5jCkBAIC0yNjMyLDcgKzI2MzIsMTQgQEAgc3RhdGljIGludCBf X2luaXQgY29uc3RydWN0X2RvbVUoc3RydWN0IGRvbWFpbiAqZCwKICAgICBpZiAoIHJjIDwgMCAp CiAgICAgICAgIHJldHVybiByYzsKIAotICAgIHJldHVybiBjb25zdHJ1Y3RfZG9tYWluKGQsICZr aW5mbyk7CisgICAgcmMgPSBjb25zdHJ1Y3RfZG9tYWluKGQsICZraW5mbyk7CisgICAgaWYgKCBy YyA8IDAgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBpZiAoIGtpbmZvLnZwbDAxMSApCisg ICAgICAgIHJjID0gZG9tYWluX3ZwbDAxMV9pbml0KGQsIE5VTEwpOworCisgICAgcmV0dXJuIHJj OwogfQogCiB2b2lkIF9faW5pdCBjcmVhdGVfZG9tVXModm9pZCkKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS92cGwwMTEuYyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwppbmRleCA2ODQ1MmE4Li4x MzE1MDdlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMKKysrIGIveGVuL2FyY2gv YXJtL3ZwbDAxMS5jCkBAIC03Nyw2ICs3Nyw5MSBAQCBzdGF0aWMgdm9pZCB2cGwwMTFfdXBkYXRl X2ludGVycnVwdF9zdGF0dXMoc3RydWN0IGRvbWFpbiAqZCkKICNlbmRpZgogfQogCisvKgorICog dnBsMDExX3dyaXRlX2RhdGFfeGVuIHdyaXRlcyBjaGFycyBmcm9tIHRoZSB2cGwwMTEgb3V0IGJ1 ZmZlciB0byB0aGUKKyAqIGNvbnNvbGUuIE9ubHkgdG8gYmUgdXNlZCB3aGVuIHRoZSBiYWNrZW5k IGlzIFhlbi4KKyAqLworc3RhdGljIHZvaWQgdnBsMDExX3dyaXRlX2RhdGFfeGVuKHN0cnVjdCBk b21haW4gKmQsIHVpbnQ4X3QgZGF0YSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAg IHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKworICAgIFZQTDAxMV9M T0NLKGQsIGZsYWdzKTsKKworICAgIHByaW50aygiJWMiLCBkYXRhKTsKKyAgICBpZiAoZGF0YSA9 PSAnXG4nKQorICAgICAgICBwcmludGsoIkRPTSV1OiAiLCBkLT5kb21haW5faWQpOworCisgICAg dnBsMDExLT51YXJ0cmlzIHw9IFRYSTsKKyAgICB2cGwwMTEtPnVhcnRmciAmPSB+VFhGRTsKKyAg ICB2cGwwMTFfdXBkYXRlX2ludGVycnVwdF9zdGF0dXMoZCk7CisKKyAgICBWUEwwMTFfVU5MT0NL KGQsIGZsYWdzKTsKK30KKworLyoKKyAqIHZwbDAxMV9yZWFkX2RhdGFfeGVuIHJlYWRzIGRhdGEg d2hlbiB0aGUgYmFja2VuZCBpcyB4ZW4uIENoYXJhY3RlcnMKKyAqIGFyZSBhZGRlZCB0byB0aGUg dnBsMDExIHJlY2VpdmUgYnVmZmVyIGJ5IHZwbDAxMV9yeF9jaGFyX3hlbi4KKyAqLworc3RhdGlj IHVpbnQ4X3QgdnBsMDExX3JlYWRfZGF0YV94ZW4oc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICB1 bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHVpbnQ4X3QgZGF0YSA9IDA7CisgICAgc3RydWN0IHZw bDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOworICAgIHN0cnVjdCB2cGwwMTFfeGVuX2Jh Y2tlbmQgKmludGYgPSB2cGwwMTEtPmJhY2tlbmQueGVuOworICAgIFhFTkNPTlNfUklOR19JRFgg aW5fY29ucywgaW5fcHJvZDsKKworICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIGlu X2NvbnMgPSBpbnRmLT5pbl9jb25zOworICAgIGluX3Byb2QgPSBpbnRmLT5pbl9wcm9kOworCisg ICAgc21wX3JtYigpOworCisgICAgLyoKKyAgICAgKiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZXJl IHdpbGwgYmUgZGF0YSBpbiB0aGUgcmluZyBidWZmZXIgd2hlbiB0aGlzCisgICAgICogZnVuY3Rp b24gaXMgY2FsbGVkIHNpbmNlIHRoZSBndWVzdCBpcyBleHBlY3RlZCB0byByZWFkIHRoZSBkYXRh IHJlZ2lzdGVyCisgICAgICogb25seSBpZiB0aGUgVFhGRSBmbGFnIGlzIG5vdCBzZXQuCisgICAg ICogSWYgdGhlIGd1ZXN0IHN0aWxsIGRvZXMgcmVhZCB3aGVuIFRYRkUgYml0IGlzIHNldCB0aGVu IDAgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBpZiAoIHhlbmNvbnNfcXVldWVkKGlu X3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpID4gMCApCisgICAgeworICAgICAgICB1 bnNpZ25lZCBpbnQgZmlmb19sZXZlbDsKKworICAgICAgICBkYXRhID0gaW50Zi0+aW5beGVuY29u c19tYXNrKGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpXTsKKyAgICAgICAgaW5fY29ucyArPSAx OworICAgICAgICBzbXBfbWIoKTsKKyAgICAgICAgaW50Zi0+aW5fY29ucyA9IGluX2NvbnM7CisK KyAgICAgICAgZmlmb19sZXZlbCA9IHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNp emVvZihpbnRmLT5pbikpOworCisgICAgICAgIC8qIElmIHRoZSBGSUZPIGlzIG5vdyBlbXB0eSwg d2UgY2xlYXIgdGhlIHJlY2VpdmUgdGltZW91dCBpbnRlcnJ1cHQuICovCisgICAgICAgIGlmICgg Zmlmb19sZXZlbCA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIg fD0gUlhGRTsKKyAgICAgICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+UlRJOworICAgICAgICB9 CisKKyAgICAgICAgLyogSWYgdGhlIEZJRk8gaXMgbW9yZSB0aGFuIGhhbGYgZW1wdHksIHdlIGNs ZWFyIHRoZSBSWCBpbnRlcnJ1cHQuICovCisgICAgICAgIGlmICggZmlmb19sZXZlbCA8IHNpemVv ZihpbnRmLT5pbikgLSBTQlNBX1VBUlRfRklGT19MRVZFTCApCisgICAgICAgICAgICB2cGwwMTEt PnVhcnRyaXMgJj0gflJYSTsKKworICAgICAgICB2cGwwMTFfdXBkYXRlX2ludGVycnVwdF9zdGF0 dXMoZCk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBs MDExOiBVbmV4cGVjdGVkIElOIHJpbmcgYnVmZmVyIGVtcHR5XG4iKTsKKworICAgIC8qCisgICAg ICogV2UgaGF2ZSBjb25zdW1lZCBhIGNoYXJhY3RlciBvciB0aGUgRklGTyB3YXMgZW1wdHksIHNv IGNsZWFyIHRoZQorICAgICAqICJGSUZPIGZ1bGwiIGJpdC4KKyAgICAgKi8KKyAgICB2cGwwMTEt PnVhcnRmciAmPSB+UlhGRjsKKworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAg cmV0dXJuIGRhdGE7Cit9CisKIHN0YXRpYyB1aW50OF90IHZwbDAxMV9yZWFkX2RhdGEoc3RydWN0 IGRvbWFpbiAqZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtMjQwLDcgKzMyNSwx MCBAQCBzdGF0aWMgaW50IHZwbDAxMV9tbWlvX3JlYWQoc3RydWN0IHZjcHUgKnYsCiAgICAgY2Fz ZSBEUjoKICAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdv dG8gYmFkX3dpZHRoOwogCi0gICAgICAgICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMV9y ZWFkX2RhdGEoZCksIGluZm8pOworICAgICAgICBpZiAoIHZwbDAxMS0+YmFja2VuZF9pbl9kb21h aW4gKQorICAgICAgICAgICAgKnIgPSB2cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExX3JlYWRfZGF0 YShkKSwgaW5mbyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpyID0gdnJlZ19yZWczMl9l eHRyYWN0KHZwbDAxMV9yZWFkX2RhdGFfeGVuKGQpLCBpbmZvKTsKICAgICAgICAgcmV0dXJuIDE7 CiAKICAgICBjYXNlIFJTUjoKQEAgLTMyNSw3ICs0MTMsMTAgQEAgc3RhdGljIGludCB2cGwwMTFf bW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwKIAogICAgICAgICB2cmVnX3JlZzMyX3VwZGF0ZSgm ZGF0YSwgciwgaW5mbyk7CiAgICAgICAgIGRhdGEgJj0gMHhGRjsKLSAgICAgICAgdnBsMDExX3dy aXRlX2RhdGEodi0+ZG9tYWluLCBkYXRhKTsKKyAgICAgICAgaWYgKCB2cGwwMTEtPmJhY2tlbmRf aW5fZG9tYWluICkKKyAgICAgICAgICAgIHZwbDAxMV93cml0ZV9kYXRhKHYtPmRvbWFpbiwgZGF0 YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZwbDAxMV93cml0ZV9kYXRhX3hlbih2LT5k b21haW4sIGRhdGEpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKQEAgLTQzMCw2ICs1MjEs MzkgQEAgc3RhdGljIHZvaWQgdnBsMDExX2RhdGFfYXZhaWwoc3RydWN0IGRvbWFpbiAqZCwKICAg ICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gVFhGRTsKIH0KIAorLyoKKyAqIHZwbDAxMV9yeF9jaGFy X3hlbiBhZGRzIGEgY2hhciB0byBhIGRvbWFpbidzIHZwbDAxMSByZWNlaXZlIGJ1ZmZlci4KKyAq IEl0IGlzIG9ubHkgdXNlZCB3aGVuIHRoZSB2cGwwMTEgYmFja2VuZCBpcyBpbiBYZW4uCisgKi8K K3ZvaWQgdnBsMDExX3J4X2NoYXJfeGVuKHN0cnVjdCBkb21haW4gKmQsIGNoYXIgYykKK3sKKyAg ICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5h cmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgdnBsMDExX3hlbl9iYWNrZW5kICppbnRmID0gdnBsMDEx LT5iYWNrZW5kLnhlbjsKKyAgICBYRU5DT05TX1JJTkdfSURYIGluX2NvbnMsIGluX3Byb2QsIGlu X2ZpZm9fbGV2ZWw7CisKKyAgICBBU1NFUlQoIXZwbDAxMS0+YmFja2VuZF9pbl9kb21haW4pOwor ICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIGluX2NvbnMgPSBpbnRmLT5pbl9jb25z OworICAgIGluX3Byb2QgPSBpbnRmLT5pbl9wcm9kOworICAgIGlmICggeGVuY29uc19xdWV1ZWQo aW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSkgPT0gc2l6ZW9mKGludGYtPmluKSAp CisgICAgeworICAgICAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAgcmV0dXJu OworICAgIH0KKworICAgIGludGYtPmluW3hlbmNvbnNfbWFzayhpbl9wcm9kLCBzaXplb2YoaW50 Zi0+aW4pKV0gPSBjOworICAgIGludGYtPmluX3Byb2QgPSArK2luX3Byb2Q7CisKKyAgICBpbl9m aWZvX2xldmVsID0geGVuY29uc19xdWV1ZWQoaW5fcHJvZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5fY29ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZW9mKGludGYtPmluKSk7CisKKyAgICB2cGwwMTFfZGF0YV9hdmFpbChkLCBpbl9maWZv X2xldmVsLCBzaXplb2YoaW50Zi0+aW4pLCAwLCBTQlNBX1VBUlRfRklGT19TSVpFKTsKKyAgICBW UEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKK30KKwogc3RhdGljIHZvaWQgdnBsMDExX25vdGlmaWNh dGlvbihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHBvcnQpCiB7CiAgICAgdW5zaWduZWQg bG9uZyBmbGFnczsKQEAgLTQ3MCwyNyArNTk0LDQ3IEBAIGludCBkb21haW5fdnBsMDExX2luaXQo c3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pCiAgICAgaWYg KCB2cGwwMTEtPmJhY2tlbmQuZG9tLnJpbmdfYnVmICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CiAKLSAgICAvKiBNYXAgdGhlIGd1ZXN0IFBGTiB0byBYZW4gYWRkcmVzcyBzcGFjZS4gKi8KLSAg ICByYyA9ICBwcmVwYXJlX3JpbmdfZm9yX2hlbHBlcihkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdmbl94KGluZm8tPmdmbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19wYWdlLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZ2cGwwMTEtPmJhY2tlbmQuZG9tLnJpbmdfYnVmKTsKLSAgICBp ZiAoIHJjIDwgMCApCi0gICAgICAgIGdvdG8gb3V0OworICAgIC8qCisgICAgICogaW5mbyBpcyBO VUxMIHdoZW4gdGhlIGJhY2tlbmQgaXMgaW4gWGVuLgorICAgICAqIGluZm8gaXMgIT0gTlVMTCB3 aGVuIHRoZSBiYWNrZW5kIGlzIGluIGEgZG9tYWluLgorICAgICAqLworICAgIGlmICggaW5mbyAh PSBOVUxMICkKKyAgICB7CisgICAgICAgIHZwbDAxMS0+YmFja2VuZF9pbl9kb21haW4gPSB0cnVl OworCisgICAgICAgIC8qIE1hcCB0aGUgZ3Vlc3QgUEZOIHRvIFhlbiBhZGRyZXNzIHNwYWNlLiAq LworICAgICAgICByYyA9ICBwcmVwYXJlX3JpbmdfZm9yX2hlbHBlcihkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChpbmZvLT5nZm4pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5iYWNrZW5kLmRvbS5yaW5nX3BhZ2Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cGwwMTEtPmJhY2tlbmQu ZG9tLnJpbmdfYnVmKTsKKyAgICAgICAgaWYgKCByYyA8IDAgKQorICAgICAgICAgICAgZ290byBv dXQ7CisKKyAgICAgICAgcmMgPSBhbGxvY191bmJvdW5kX3hlbl9ldmVudF9jaGFubmVsKGQsIDAs IGluZm8tPmNvbnNvbGVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2cGwwMTFfbm90aWZpY2F0aW9uKTsKKyAgICAgICAgaWYgKCByYyA8IDAgKQor ICAgICAgICAgICAgZ290byBvdXQxOworCisgICAgICAgIHZwbDAxMS0+ZXZ0Y2huID0gaW5mby0+ ZXZ0Y2huID0gcmM7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHZwbDAxMS0+YmFj a2VuZF9pbl9kb21haW4gPSBmYWxzZTsKKworICAgICAgICB2cGwwMTEtPmJhY2tlbmQueGVuID0g eHphbGxvYyhzdHJ1Y3QgdnBsMDExX3hlbl9iYWNrZW5kKTsKKyAgICAgICAgaWYgKCB2cGwwMTEt PmJhY2tlbmQueGVuID09IE5VTEwgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FSU5W QUw7CisgICAgICAgICAgICBnb3RvIG91dDE7CisgICAgICAgIH0KKyAgICB9CiAKICAgICByYyA9 IHZnaWNfcmVzZXJ2ZV92aXJxKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOwogICAgIGlmICggIXJjICkK ICAgICB7CiAgICAgICAgIHJjID0gLUVJTlZBTDsKLSAgICAgICAgZ290byBvdXQxOwotICAgIH0K LQotICAgIHJjID0gYWxsb2NfdW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBpbmZvLT5j b25zb2xlX2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 cGwwMTFfbm90aWZpY2F0aW9uKTsKLSAgICBpZiAoIHJjIDwgMCApCiAgICAgICAgIGdvdG8gb3V0 MjsKLQotICAgIHZwbDAxMS0+ZXZ0Y2huID0gaW5mby0+ZXZ0Y2huID0gcmM7CisgICAgfQogCiAg ICAgc3Bpbl9sb2NrX2luaXQoJnZwbDAxMS0+bG9jayk7CiAKQEAgLTUwMyw4ICs2NDcsMTEgQEAg b3V0MjoKICAgICB2Z2ljX2ZyZWVfdmlycShkLCBHVUVTVF9WUEwwMTFfU1BJKTsKIAogb3V0MToK LSAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBlcigmdnBsMDExLT5iYWNrZW5kLmRvbS5yaW5nX2J1 ZiwKLQkJCSAgICAgICAgICAgICAgICB2cGwwMTEtPmJhY2tlbmQuZG9tLnJpbmdfcGFnZSk7Cisg ICAgaWYgKCB2cGwwMTEtPmJhY2tlbmRfaW5fZG9tYWluICkKKyAgICAgICAgZGVzdHJveV9yaW5n X2Zvcl9oZWxwZXIoJnZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19idWYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19wYWdlKTsKKyAgICBl bHNlCisgICAgICAgIHhmcmVlKHZwbDAxMS0+YmFja2VuZC54ZW4pOwogCiBvdXQ6CiAgICAgcmV0 dXJuIHJjOwpAQCAtNTE0LDEyICs2NjEsMTcgQEAgdm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChz dHJ1Y3QgZG9tYWluICpkKQogewogICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNo LnZwbDAxMTsKIAotICAgIGlmICggIXZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19idWYgKQotICAg ICAgICByZXR1cm47CisgICAgaWYgKCB2cGwwMTEtPmJhY2tlbmRfaW5fZG9tYWluICkKKyAgICB7 CisgICAgICAgIGlmICggIXZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19idWYgKQorICAgICAgICAg ICAgcmV0dXJuOwogCi0gICAgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNo bik7Ci0gICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+YmFja2VuZC5kb20ucmlu Z19idWYsCi0JCQkgICAgICAgICAgICAgICAgdnBsMDExLT5iYWNrZW5kLmRvbS5yaW5nX3BhZ2Up OworICAgICAgICBmcmVlX3hlbl9ldmVudF9jaGFubmVsKGQsIHZwbDAxMS0+ZXZ0Y2huKTsKKyAg ICAgICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19i dWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwbDAxMS0+YmFja2VuZC5kb20u cmluZ19wYWdlKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICB4ZnJlZSh2cGwwMTEtPmJhY2tl bmQueGVuKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5j IGIveGVuL2RyaXZlcnMvY2hhci9jb25zb2xlLmMKaW5kZXggOGEwMWE0My4uNjVmZDQwNiAxMDA2 NDQKLS0tIGEveGVuL2RyaXZlcnMvY2hhci9jb25zb2xlLmMKKysrIGIveGVuL2RyaXZlcnMvY2hh ci9jb25zb2xlLmMKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBzdGF0aWMgdm9pZCBfX3NlcmlhbF9yeChj aGFyIGMsIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICBzZW5kX2dsb2JhbF92 aXJxKFZJUlFfQ09OU09MRSk7CiAgICAgICAgIGJyZWFrOwogCi0jaWYgMAorI2lmZGVmIENPTkZJ R19TQlNBX1ZVQVJUX0NPTlNPTEUKICAgICBkZWZhdWx0OgogICAgIHsKICAgICAgICAgc3RydWN0 IGRvbWFpbiAqZCA9IHJjdV9sb2NrX2RvbWFpbl9ieV9hbnlfaWQoY29uc29sZV9yeCAtIDEpOwpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaCBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vdnBsMDExLmgKaW5kZXggNDJkN2EyNC4uNWViNmQyNSAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLWFybS92cGwwMTEuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5o CkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+CiAjaW5jbHVk ZSA8cHVibGljL2lvL3JpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvaW8vY29uc29sZS5oPgogI2lu Y2x1ZGUgPGFzbS92cmVnLmg+CiAjaW5jbHVkZSA8eGVuL21tLmg+CiAKQEAgLTI5LDEzICszMCwx OSBAQAogI2RlZmluZSBWUEwwMTFfVU5MT0NLKGQsZmxhZ3MpIHNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJihkKS0+YXJjaC52cGwwMTEubG9jaywgZmxhZ3MpCiAKICNkZWZpbmUgU0JTQV9VQVJUX0ZJ Rk9fU0laRSAzMgorc3RydWN0IHZwbDAxMV94ZW5fYmFja2VuZCB7CisgICAgY2hhciBpbltTQlNB X1VBUlRfRklGT19TSVpFXTsKKyAgICBYRU5DT05TX1JJTkdfSURYIGluX2NvbnMsIGluX3Byb2Q7 Cit9OwogCiBzdHJ1Y3QgdnBsMDExIHsKKyAgICBib29sIGJhY2tlbmRfaW5fZG9tYWluOwogICAg IHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIHZvaWQgKnJpbmdfYnVmOwog ICAgICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcmluZ19wYWdlOwogICAgICAgICB9IGRvbTsK KyAgICAgICAgc3RydWN0IHZwbDAxMV94ZW5fYmFja2VuZCAqeGVuOwogICAgIH0gYmFja2VuZDsK ICAgICB1aW50MzJfdCAgICB1YXJ0ZnI7ICAgICAgICAgLyogRmxhZyByZWdpc3RlciAqLwogICAg IHVpbnQzMl90ICAgIHVhcnRjcjsgICAgICAgICAvKiBDb250cm9sIHJlZ2lzdGVyICovCkBAIC01 Nyw2ICs2NCw3IEBAIHN0cnVjdCB2cGwwMTFfaW5pdF9pbmZvIHsKIGludCBkb21haW5fdnBsMDEx X2luaXQoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZw bDAxMV9pbml0X2luZm8gKmluZm8pOwogdm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3Qg ZG9tYWluICpkKTsKK3ZvaWQgdnBsMDExX3J4X2NoYXJfeGVuKHN0cnVjdCBkb21haW4gKmQsIGNo YXIgYyk7CiAjZWxzZQogc3RhdGljIGlubGluZSBpbnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVj dCBkb21haW4gKmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHZwbDAxMV9pbml0X2luZm8gKmluZm8pCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=