From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v5 22/25] xen/arm: Allow vpl011 to be used by DomU Date: Mon, 22 Oct 2018 19:03:01 -0700 Message-ID: <1540260184-11294-22-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 YnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwppbmRleCA2MDI2Yjc3Li45ZmZk OTE5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKKysrIGIveGVuL2Fy Y2gvYXJtL2RvbWFpbl9idWlsZC5jCkBAIC0yNjI5LDcgKzI2MjksMTQgQEAgc3RhdGljIGludCBf 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 IGIveGVuL2RyaXZlcnMvY2hhci9jb25zb2xlLmMKaW5kZXggNzUxNzJlNy4uOTkwYzUxYyAxMDA2 NDQKLS0tIGEveGVuL2RyaXZlcnMvY2hhci9jb25zb2xlLmMKKysrIGIveGVuL2RyaXZlcnMvY2hh ci9jb25zb2xlLmMKQEAgLTQ0NCw3ICs0NDQsNyBAQCBzdGF0aWMgdm9pZCBfX3NlcmlhbF9yeChj aGFyIGMsIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICBzZW5kX2dsb2JhbF92 aXJxKFZJUlFfQ09OU09MRSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSNpZiAwCisjaWZkZWYg Q09ORklHX1NCU0FfVlVBUlRfQ09OU09MRQogICAgIGRlZmF1bHQ6CiAgICAgewogICAgICAgICBz dHJ1Y3QgZG9tYWluICpkID0gcmN1X2xvY2tfZG9tYWluX2J5X2FueV9pZChjb25zb2xlX3J4IC0g MSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oIGIveGVuL2luY2x1 ZGUvYXNtLWFybS92cGwwMTEuaAppbmRleCA0MmQ3YTI0Li41ZWI2ZDI1IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBs MDExLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgPHB1YmxpYy9kb21jdGwuaD4KICNp bmNsdWRlIDxwdWJsaWMvaW8vcmluZy5oPgorI2luY2x1ZGUgPHB1YmxpYy9pby9jb25zb2xlLmg+ CiAjaW5jbHVkZSA8YXNtL3ZyZWcuaD4KICNpbmNsdWRlIDx4ZW4vbW0uaD4KIApAQCAtMjksMTMg KzMwLDE5IEBACiAjZGVmaW5lIFZQTDAxMV9VTkxPQ0soZCxmbGFncykgc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmKGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBmbGFncykKIAogI2RlZmluZSBTQlNBX1VB UlRfRklGT19TSVpFIDMyCitzdHJ1Y3QgdnBsMDExX3hlbl9iYWNrZW5kIHsKKyAgICBjaGFyIGlu W1NCU0FfVUFSVF9GSUZPX1NJWkVdOworICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5f cHJvZDsKK307CiAKIHN0cnVjdCB2cGwwMTEgeworICAgIGJvb2wgYmFja2VuZF9pbl9kb21haW47 CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgdm9pZCAqcmluZ19i dWY7CiAgICAgICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpyaW5nX3BhZ2U7CiAgICAgICAgIH0g ZG9tOworICAgICAgICBzdHJ1Y3QgdnBsMDExX3hlbl9iYWNrZW5kICp4ZW47CiAgICAgfSBiYWNr ZW5kOwogICAgIHVpbnQzMl90ICAgIHVhcnRmcjsgICAgICAgICAvKiBGbGFnIHJlZ2lzdGVyICov CiAgICAgdWludDMyX3QgICAgdWFydGNyOyAgICAgICAgIC8qIENvbnRyb2wgcmVnaXN0ZXIgKi8K QEAgLTU3LDYgKzY0LDcgQEAgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gewogaW50IGRvbWFpbl92 cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdnBsMDExX2luaXRfaW5mbyAqaW5mbyk7CiB2b2lkIGRvbWFpbl92cGwwMTFfZGVpbml0KHN0 cnVjdCBkb21haW4gKmQpOwordm9pZCB2cGwwMTFfcnhfY2hhcl94ZW4oc3RydWN0IGRvbWFpbiAq ZCwgY2hhciBjKTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIGludCBkb21haW5fdnBsMDExX2luaXQo c3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdnBsMDExX2luaXRfaW5mbyAqaW5mbykKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==