From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v4 19/23] xen/arm: Allow vpl011 to be used by DomU Date: Fri, 5 Oct 2018 11:47:27 -0700 Message-ID: <1538765251-25256-19-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 , 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 Z25lZC1vZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub3NAeGlsaW54LmNvbT4KLS0t CkNoYW5nZXMgaW4gdjQ6Ci0gY29kZSBzdHlsZQoKQ2hhbmdlcyBpbiB2MzoKLSBhZGQgaW4tY29k ZSBjb21tZW50cwotIGltcHJvdmUgZXhpc3RpbmcgY29tbWVudHMKLSByZW1vdmUgaWZkZWYgYXJv dW5kIGRvbWFpbl92cGwwMTFfaW5pdCBpbiBjb25zdHJ1Y3RfZG9tVQotIGFkZCBBU1NFUlQKLSB1 c2UgU0JTQV9VQVJUX0ZJRk9fU0laRSBmb3IgaW4gYnVmZmVyIHNpemUKLSByZW5hbWUgcmluZ19l bmFibGUgdG8gYmFja2VuZF9pbl9kb21haW4KLSByZW5hbWUgc3RydWN0IHhlbmNvbnNfaW4gdG8g c3RydWN0IHZwbDAxMV94ZW5fYmFja2VuZAotIHJlbmFtZSBpbnJpbmcgZmllbGQgdG8geGVuCi0g cmVuYW1lIGhlbHBlciBmdW5jdGlvbnMgYWNjb3JkaW5nbHkKLSByZW1vdmUgdW5uZWNlc3Nhcnkg c3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB2cGwwMTFfcnhfY2hhcgotIG1vdmUgdnBsMDExX3J4X2No YXJfeGVuIHdpdGhpbiB0aGUgZmlsZSB0byBhdm9pZCB0aGUgbmVlZCBvZiBhIGZvcndhcmQKICBk ZWNsYXJhdGlvbiBvZiB2cGwwMTFfZGF0YV9hdmFpbAotIGZpeCBzbWFsbCBidWcgaW4gdnBsMDEx X3J4X2NoYXJfeGVuOiBpbmNyZW1lbnQgaW5fcHJvZCBiZWZvcmUgdXNpbmcgaXQKICB0byBjaGVj ayB4ZW5jb25zX3F1ZXVlZC4KCkNoYW5nZXMgaW4gdjI6Ci0gb25seSBpbml0IGlmIHZwbDAxMQot IHJlbmFtZSB2cGwwMTFfcmVhZF9jaGFyIHRvIHZwbDAxMV9yeF9jaGFyCi0gcmVtb3ZlIHNwdXJp b3VzIGNoYW5nZQotIGZpeCBjb2Rpbmcgc3R5bGUKLSB1c2UgZGlmZmVyZW50IHJpbmcgc3RydWN0 Ci0gbW92ZSB0aGUgd3JpdGVfZGF0YSBjaGFuZ2VzIHRvIHRoZWlyIG93biBmdW5jdGlvbgogICh2 cGwwMTFfd3JpdGVfZGF0YV9ub3JpbmcpCi0gZHVwbGljYXRlIHZwbDAxMV9yZWFkX2RhdGEKLS0t CiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgIHwgICA5ICstCiB4ZW4vYXJjaC9hcm0vdnBs MDExLmMgICAgICAgIHwgMjAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmggfCAgIDggKysKIDMgZmlsZXMgY2hh bmdlZCwgMTkyIGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwpp bmRleCAwNDlhYjg0Li40Mzc5NTM4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1 aWxkLmMKKysrIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCkBAIC0yNjE4LDcgKzI2MTgs MTQgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbVUoc3RydWN0IGRvbWFpbiAqZCwK ICAgICBpZiAoIHJjIDwgMCApCiAgICAgICAgIHJldHVybiByYzsKIAotICAgIHJldHVybiBfX2Nv bnN0cnVjdF9kb21haW4oZCwgJmtpbmZvKTsKKyAgICByYyA9IF9fY29uc3RydWN0X2RvbWFpbihk LCAma2luZm8pOworICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAg aWYgKCBraW5mby52cGwwMTEgKQorICAgICAgICByYyA9IGRvbWFpbl92cGwwMTFfaW5pdChkLCBO VUxMKTsKKworICAgIHJldHVybiByYzsKIH0KIAogdm9pZCBfX2luaXQgY3JlYXRlX2RvbVVzKHZv aWQpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMgYi94ZW4vYXJjaC9hcm0vdnBs MDExLmMKaW5kZXggNjg0NTJhOC4uMTMxNTA3ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3Zw bDAxMS5jCisrKyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwpAQCAtNzcsNiArNzcsOTEgQEAgc3Rh dGljIHZvaWQgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKHN0cnVjdCBkb21haW4gKmQp CiAjZW5kaWYKIH0KIAorLyoKKyAqIHZwbDAxMV93cml0ZV9kYXRhX3hlbiB3cml0ZXMgY2hhcnMg ZnJvbSB0aGUgdnBsMDExIG91dCBidWZmZXIgdG8gdGhlCisgKiBjb25zb2xlLiBPbmx5IHRvIGJl IHVzZWQgd2hlbiB0aGUgYmFja2VuZCBpcyBYZW4uCisgKi8KK3N0YXRpYyB2b2lkIHZwbDAxMV93 cml0ZV9kYXRhX3hlbihzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IGRhdGEpCit7CisgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKKyAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52 cGwwMTE7CisKKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisKKyAgICBwcmludGsoIiVjIiwg ZGF0YSk7CisgICAgaWYgKGRhdGEgPT0gJ1xuJykKKyAgICAgICAgcHJpbnRrKCJET00ldTogIiwg ZC0+ZG9tYWluX2lkKTsKKworICAgIHZwbDAxMS0+dWFydHJpcyB8PSBUWEk7CisgICAgdnBsMDEx LT51YXJ0ZnIgJj0gflRYRkU7CisgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKGQp OworCisgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7Cit9CisKKy8qCisgKiB2cGwwMTFfcmVh ZF9kYXRhX3hlbiByZWFkcyBkYXRhIHdoZW4gdGhlIGJhY2tlbmQgaXMgeGVuLiBDaGFyYWN0ZXJz CisgKiBhcmUgYWRkZWQgdG8gdGhlIHZwbDAxMSByZWNlaXZlIGJ1ZmZlciBieSB2cGwwMTFfcnhf Y2hhcl94ZW4uCisgKi8KK3N0YXRpYyB1aW50OF90IHZwbDAxMV9yZWFkX2RhdGFfeGVuKHN0cnVj dCBkb21haW4gKmQpCit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICB1aW50OF90IGRh dGEgPSAwOworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAg ICBzdHJ1Y3QgdnBsMDExX3hlbl9iYWNrZW5kICppbnRmID0gdnBsMDExLT5iYWNrZW5kLnhlbjsK KyAgICBYRU5DT05TX1JJTkdfSURYIGluX2NvbnMsIGluX3Byb2Q7CisKKyAgICBWUEwwMTFfTE9D SyhkLCBmbGFncyk7CisKKyAgICBpbl9jb25zID0gaW50Zi0+aW5fY29uczsKKyAgICBpbl9wcm9k ID0gaW50Zi0+aW5fcHJvZDsKKworICAgIHNtcF9ybWIoKTsKKworICAgIC8qCisgICAgICogSXQg aXMgZXhwZWN0ZWQgdGhhdCB0aGVyZSB3aWxsIGJlIGRhdGEgaW4gdGhlIHJpbmcgYnVmZmVyIHdo ZW4gdGhpcworICAgICAqIGZ1bmN0aW9uIGlzIGNhbGxlZCBzaW5jZSB0aGUgZ3Vlc3QgaXMgZXhw ZWN0ZWQgdG8gcmVhZCB0aGUgZGF0YSByZWdpc3RlcgorICAgICAqIG9ubHkgaWYgdGhlIFRYRkUg ZmxhZyBpcyBub3Qgc2V0LgorICAgICAqIElmIHRoZSBndWVzdCBzdGlsbCBkb2VzIHJlYWQgd2hl biBUWEZFIGJpdCBpcyBzZXQgdGhlbiAwIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICovCisgICAg aWYgKCB4ZW5jb25zX3F1ZXVlZChpbl9wcm9kLCBpbl9jb25zLCBzaXplb2YoaW50Zi0+aW4pKSA+ IDAgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGZpZm9fbGV2ZWw7CisKKyAgICAgICAg ZGF0YSA9IGludGYtPmluW3hlbmNvbnNfbWFzayhpbl9jb25zLCBzaXplb2YoaW50Zi0+aW4pKV07 CisgICAgICAgIGluX2NvbnMgKz0gMTsKKyAgICAgICAgc21wX21iKCk7CisgICAgICAgIGludGYt PmluX2NvbnMgPSBpbl9jb25zOworCisgICAgICAgIGZpZm9fbGV2ZWwgPSB4ZW5jb25zX3F1ZXVl ZChpbl9wcm9kLCBpbl9jb25zLCBzaXplb2YoaW50Zi0+aW4pKTsKKworICAgICAgICAvKiBJZiB0 aGUgRklGTyBpcyBub3cgZW1wdHksIHdlIGNsZWFyIHRoZSByZWNlaXZlIHRpbWVvdXQgaW50ZXJy dXB0LiAqLworICAgICAgICBpZiAoIGZpZm9fbGV2ZWwgPT0gMCApCisgICAgICAgIHsKKyAgICAg ICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IFJYRkU7CisgICAgICAgICAgICB2cGwwMTEtPnVhcnRy aXMgJj0gflJUSTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIElmIHRoZSBGSUZPIGlzIG1vcmUg dGhhbiBoYWxmIGVtcHR5LCB3ZSBjbGVhciB0aGUgUlggaW50ZXJydXB0LiAqLworICAgICAgICBp ZiAoIGZpZm9fbGV2ZWwgPCBzaXplb2YoaW50Zi0+aW4pIC0gU0JTQV9VQVJUX0ZJRk9fTEVWRUwg KQorICAgICAgICAgICAgdnBsMDExLT51YXJ0cmlzICY9IH5SWEk7CisKKyAgICAgICAgdnBsMDEx X3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKGQpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGdw cmludGsoWEVOTE9HX0VSUiwgInZwbDAxMTogVW5leHBlY3RlZCBJTiByaW5nIGJ1ZmZlciBlbXB0 eVxuIik7CisKKyAgICAvKgorICAgICAqIFdlIGhhdmUgY29uc3VtZWQgYSBjaGFyYWN0ZXIgb3Ig dGhlIEZJRk8gd2FzIGVtcHR5LCBzbyBjbGVhciB0aGUKKyAgICAgKiAiRklGTyBmdWxsIiBiaXQu CisgICAgICovCisgICAgdnBsMDExLT51YXJ0ZnIgJj0gflJYRkY7CisKKyAgICBWUEwwMTFfVU5M T0NLKGQsIGZsYWdzKTsKKworICAgIHJldHVybiBkYXRhOworfQorCiBzdGF0aWMgdWludDhfdCB2 cGwwMTFfcmVhZF9kYXRhKHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKQEAgLTI0MCw3ICszMjUsMTAgQEAgc3RhdGljIGludCB2cGwwMTFfbW1pb19yZWFkKHN0 cnVjdCB2Y3B1ICp2LAogICAgIGNhc2UgRFI6CiAgICAgICAgIGlmICggIXZwbDAxMV9yZWczMl9j aGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKIAotICAgICAgICAqciA9IHZyZWdf cmVnMzJfZXh0cmFjdCh2cGwwMTFfcmVhZF9kYXRhKGQpLCBpbmZvKTsKKyAgICAgICAgaWYgKCB2 cGwwMTEtPmJhY2tlbmRfaW5fZG9tYWluICkKKyAgICAgICAgICAgICpyID0gdnJlZ19yZWczMl9l eHRyYWN0KHZwbDAxMV9yZWFkX2RhdGEoZCksIGluZm8pOworICAgICAgICBlbHNlCisgICAgICAg ICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTFfcmVhZF9kYXRhX3hlbihkKSwgaW5m byk7CiAgICAgICAgIHJldHVybiAxOwogCiAgICAgY2FzZSBSU1I6CkBAIC0zMjUsNyArNDEzLDEw IEBAIHN0YXRpYyBpbnQgdnBsMDExX21taW9fd3JpdGUoc3RydWN0IHZjcHUgKnYsCiAKICAgICAg ICAgdnJlZ19yZWczMl91cGRhdGUoJmRhdGEsIHIsIGluZm8pOwogICAgICAgICBkYXRhICY9IDB4 RkY7Ci0gICAgICAgIHZwbDAxMV93cml0ZV9kYXRhKHYtPmRvbWFpbiwgZGF0YSk7CisgICAgICAg IGlmICggdnBsMDExLT5iYWNrZW5kX2luX2RvbWFpbiApCisgICAgICAgICAgICB2cGwwMTFfd3Jp dGVfZGF0YSh2LT5kb21haW4sIGRhdGEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2cGww MTFfd3JpdGVfZGF0YV94ZW4odi0+ZG9tYWluLCBkYXRhKTsKICAgICAgICAgcmV0dXJuIDE7CiAg ICAgfQogCkBAIC00MzAsNiArNTIxLDM5IEBAIHN0YXRpYyB2b2lkIHZwbDAxMV9kYXRhX2F2YWls KHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IFRYRkU7CiB9CiAK Ky8qCisgKiB2cGwwMTFfcnhfY2hhcl94ZW4gYWRkcyBhIGNoYXIgdG8gYSBkb21haW4ncyB2cGww MTEgcmVjZWl2ZSBidWZmZXIuCisgKiBJdCBpcyBvbmx5IHVzZWQgd2hlbiB0aGUgdnBsMDExIGJh Y2tlbmQgaXMgaW4gWGVuLgorICovCit2b2lkIHZwbDAxMV9yeF9jaGFyX3hlbihzdHJ1Y3QgZG9t YWluICpkLCBjaGFyIGMpCit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBzdHJ1Y3Qg dnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CisgICAgc3RydWN0IHZwbDAxMV94ZW5f YmFja2VuZCAqaW50ZiA9IHZwbDAxMS0+YmFja2VuZC54ZW47CisgICAgWEVOQ09OU19SSU5HX0lE WCBpbl9jb25zLCBpbl9wcm9kLCBpbl9maWZvX2xldmVsOworCisgICAgQVNTRVJUKCF2cGwwMTEt PmJhY2tlbmRfaW5fZG9tYWluKTsKKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisKKyAgICBp bl9jb25zID0gaW50Zi0+aW5fY29uczsKKyAgICBpbl9wcm9kID0gaW50Zi0+aW5fcHJvZDsKKyAg ICBpZiAoIHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikp ID09IHNpemVvZihpbnRmLT5pbikgKQorICAgIHsKKyAgICAgICAgVlBMMDExX1VOTE9DSyhkLCBm bGFncyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnRmLT5pblt4ZW5jb25zX21h c2soaW5fcHJvZCwgc2l6ZW9mKGludGYtPmluKSldID0gYzsKKyAgICBpbnRmLT5pbl9wcm9kID0g Kytpbl9wcm9kOworCisgICAgaW5fZmlmb19sZXZlbCA9IHhlbmNvbnNfcXVldWVkKGluX3Byb2Qs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2NvbnMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbnRmLT5pbikpOworCisgICAgdnBsMDEx X2RhdGFfYXZhaWwoZCwgaW5fZmlmb19sZXZlbCwgc2l6ZW9mKGludGYtPmluKSwgMCwgU0JTQV9V QVJUX0ZJRk9fU0laRSk7CisgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7Cit9CisKIHN0YXRp YyB2b2lkIHZwbDAxMV9ub3RpZmljYXRpb24oc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBw b3J0KQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC00NzAsMjcgKzU5NCw0NyBAQCBp bnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2cGwwMTFfaW5p dF9pbmZvICppbmZvKQogICAgIGlmICggdnBsMDExLT5iYWNrZW5kLmRvbS5yaW5nX2J1ZiApCiAg ICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgLyogTWFwIHRoZSBndWVzdCBQRk4gdG8gWGVu IGFkZHJlc3Mgc3BhY2UuICovCi0gICAgcmMgPSAgcHJlcGFyZV9yaW5nX2Zvcl9oZWxwZXIoZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChpbmZvLT5nZm4pLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cGwwMTEtPmJhY2tlbmQuZG9tLnJpbmdf cGFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5iYWNrZW5k LmRvbS5yaW5nX2J1Zik7Ci0gICAgaWYgKCByYyA8IDAgKQotICAgICAgICBnb3RvIG91dDsKKyAg ICAvKgorICAgICAqIGluZm8gaXMgTlVMTCB3aGVuIHRoZSBiYWNrZW5kIGlzIGluIFhlbi4KKyAg ICAgKiBpbmZvIGlzICE9IE5VTEwgd2hlbiB0aGUgYmFja2VuZCBpcyBpbiBhIGRvbWFpbi4KKyAg ICAgKi8KKyAgICBpZiAoIGluZm8gIT0gTlVMTCApCisgICAgeworICAgICAgICB2cGwwMTEtPmJh Y2tlbmRfaW5fZG9tYWluID0gdHJ1ZTsKKworICAgICAgICAvKiBNYXAgdGhlIGd1ZXN0IFBGTiB0 byBYZW4gYWRkcmVzcyBzcGFjZS4gKi8KKyAgICAgICAgcmMgPSAgcHJlcGFyZV9yaW5nX2Zvcl9o ZWxwZXIoZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3goaW5m by0+Z2ZuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwbDAxMS0+ YmFja2VuZC5kb20ucmluZ19wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmdnBsMDExLT5iYWNrZW5kLmRvbS5yaW5nX2J1Zik7CisgICAgICAgIGlmICggcmMgPCAw ICkKKyAgICAgICAgICAgIGdvdG8gb3V0OworCisgICAgICAgIHJjID0gYWxsb2NfdW5ib3VuZF94 ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBpbmZvLT5jb25zb2xlX2RvbWlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnBsMDExX25vdGlmaWNhdGlvbik7Cisg ICAgICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgICAgIGdvdG8gb3V0MTsKKworICAgICAgICB2 cGwwMTEtPmV2dGNobiA9IGluZm8tPmV2dGNobiA9IHJjOworICAgIH0KKyAgICBlbHNlCisgICAg eworICAgICAgICB2cGwwMTEtPmJhY2tlbmRfaW5fZG9tYWluID0gZmFsc2U7CisKKyAgICAgICAg dnBsMDExLT5iYWNrZW5kLnhlbiA9IHh6YWxsb2Moc3RydWN0IHZwbDAxMV94ZW5fYmFja2VuZCk7 CisgICAgICAgIGlmICggdnBsMDExLT5iYWNrZW5kLnhlbiA9PSBOVUxMICkKKyAgICAgICAgewor ICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICAgICAgZ290byBvdXQxOworICAgICAg ICB9CisgICAgfQogCiAgICAgcmMgPSB2Z2ljX3Jlc2VydmVfdmlycShkLCBHVUVTVF9WUEwwMTFf U1BJKTsKICAgICBpZiAoICFyYyApCiAgICAgewogICAgICAgICByYyA9IC1FSU5WQUw7Ci0gICAg ICAgIGdvdG8gb3V0MTsKLSAgICB9Ci0KLSAgICByYyA9IGFsbG9jX3VuYm91bmRfeGVuX2V2ZW50 X2NoYW5uZWwoZCwgMCwgaW5mby0+Y29uc29sZV9kb21pZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdnBsMDExX25vdGlmaWNhdGlvbik7Ci0gICAgaWYgKCByYyA8 IDAgKQogICAgICAgICBnb3RvIG91dDI7Ci0KLSAgICB2cGwwMTEtPmV2dGNobiA9IGluZm8tPmV2 dGNobiA9IHJjOworICAgIH0KIAogICAgIHNwaW5fbG9ja19pbml0KCZ2cGwwMTEtPmxvY2spOwog CkBAIC01MDMsOCArNjQ3LDExIEBAIG91dDI6CiAgICAgdmdpY19mcmVlX3ZpcnEoZCwgR1VFU1Rf VlBMMDExX1NQSSk7CiAKIG91dDE6Ci0gICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxwZXIoJnZwbDAx MS0+YmFja2VuZC5kb20ucmluZ19idWYsCi0JCQkgICAgICAgICAgICAgICAgdnBsMDExLT5iYWNr ZW5kLmRvbS5yaW5nX3BhZ2UpOworICAgIGlmICggdnBsMDExLT5iYWNrZW5kX2luX2RvbWFpbiAp CisgICAgICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2cGwwMTEtPmJhY2tlbmQuZG9tLnJp bmdfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cGwwMTEtPmJhY2tlbmQu ZG9tLnJpbmdfcGFnZSk7CisgICAgZWxzZQorICAgICAgICB4ZnJlZSh2cGwwMTEtPmJhY2tlbmQu eGVuKTsKIAogb3V0OgogICAgIHJldHVybiByYzsKQEAgLTUxNCwxMiArNjYxLDE3IEBAIHZvaWQg ZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1Y3QgdnBs MDExICp2cGwwMTEgPSAmZC0+YXJjaC52cGwwMTE7CiAKLSAgICBpZiAoICF2cGwwMTEtPmJhY2tl bmQuZG9tLnJpbmdfYnVmICkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICggdnBsMDExLT5iYWNr ZW5kX2luX2RvbWFpbiApCisgICAgeworICAgICAgICBpZiAoICF2cGwwMTEtPmJhY2tlbmQuZG9t LnJpbmdfYnVmICkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGZyZWVfeGVuX2V2ZW50X2No YW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOwotICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2 cGwwMTEtPmJhY2tlbmQuZG9tLnJpbmdfYnVmLAotCQkJICAgICAgICAgICAgICAgIHZwbDAxMS0+ YmFja2VuZC5kb20ucmluZ19wYWdlKTsKKyAgICAgICAgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbChk LCB2cGwwMTEtPmV2dGNobik7CisgICAgICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2cGww MTEtPmJhY2tlbmQuZG9tLnJpbmdfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2cGwwMTEtPmJhY2tlbmQuZG9tLnJpbmdfcGFnZSk7CisgICAgfQorICAgIGVsc2UKKyAgICAg ICAgeGZyZWUodnBsMDExLT5iYWNrZW5kLnhlbik7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaApp bmRleCA0MmQ3YTI0Li41ZWI2ZDI1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL3Zw bDAxMS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgKQEAgLTIxLDYgKzIxLDcg QEAKIAogI2luY2x1ZGUgPHB1YmxpYy9kb21jdGwuaD4KICNpbmNsdWRlIDxwdWJsaWMvaW8vcmlu Zy5oPgorI2luY2x1ZGUgPHB1YmxpYy9pby9jb25zb2xlLmg+CiAjaW5jbHVkZSA8YXNtL3ZyZWcu aD4KICNpbmNsdWRlIDx4ZW4vbW0uaD4KIApAQCAtMjksMTMgKzMwLDE5IEBACiAjZGVmaW5lIFZQ TDAxMV9VTkxPQ0soZCxmbGFncykgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmKGQpLT5hcmNoLnZw bDAxMS5sb2NrLCBmbGFncykKIAogI2RlZmluZSBTQlNBX1VBUlRfRklGT19TSVpFIDMyCitzdHJ1 Y3QgdnBsMDExX3hlbl9iYWNrZW5kIHsKKyAgICBjaGFyIGluW1NCU0FfVUFSVF9GSUZPX1NJWkVd OworICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5fcHJvZDsKK307CiAKIHN0cnVjdCB2 cGwwMTEgeworICAgIGJvb2wgYmFja2VuZF9pbl9kb21haW47CiAgICAgdW5pb24gewogICAgICAg ICBzdHJ1Y3QgewogICAgICAgICAgICAgdm9pZCAqcmluZ19idWY7CiAgICAgICAgICAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpyaW5nX3BhZ2U7CiAgICAgICAgIH0gZG9tOworICAgICAgICBzdHJ1Y3Qg dnBsMDExX3hlbl9iYWNrZW5kICp4ZW47CiAgICAgfSBiYWNrZW5kOwogICAgIHVpbnQzMl90ICAg IHVhcnRmcjsgICAgICAgICAvKiBGbGFnIHJlZ2lzdGVyICovCiAgICAgdWludDMyX3QgICAgdWFy dGNyOyAgICAgICAgIC8qIENvbnRyb2wgcmVnaXN0ZXIgKi8KQEAgLTU3LDYgKzY0LDcgQEAgc3Ry dWN0IHZwbDAxMV9pbml0X2luZm8gewogaW50IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9t YWluICpkLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdnBsMDExX2luaXRfaW5mbyAq aW5mbyk7CiB2b2lkIGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpOwordm9p ZCB2cGwwMTFfcnhfY2hhcl94ZW4oc3RydWN0IGRvbWFpbiAqZCwgY2hhciBjKTsKICNlbHNlCiBz dGF0aWMgaW5saW5lIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdnBsMDExX2luaXRfaW5m byAqaW5mbykKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==