From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergej Proskurin Subject: [PATCH 15/18] arm/altp2m: Add altp2m paging mechanism. Date: Mon, 4 Jul 2016 13:46:02 +0200 Message-ID: <20160704114605.10086-34-proskurin@sec.in.tum.de> References: <20160704114605.10086-1-proskurin@sec.in.tum.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bK2LF-0008Bf-7X for xen-devel@lists.xenproject.org; Mon, 04 Jul 2016 11:47:09 +0000 In-Reply-To: <20160704114605.10086-1-proskurin@sec.in.tum.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Sergej Proskurin , Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VGhpcyBjb21taXQgYWRkcyB0aGUgZnVuY3Rpb24gcDJtX2FsdHAybV9sYXp5X2NvcHkgaW1wbGVt ZW50aW5nIHRoZQphbHRwMm0gcGFnaW5nIG1lY2hhbmlzbS4gVGhlIGZ1bmN0aW9uIHAybV9hbHRw Mm1fbGF6eV9jb3B5IGxhemlseSBjb3BpZXMKdGhlIGhvc3RwMm0ncyBtYXBwaW5nIGludG8gdGhl IGN1cnJlbnRseSBhY3RpdmUgYWx0cDJtIHZpZXcgb24gMm5kIHN0YWdlCmluc3RydWN0aW9uIG9y IGRhdGEgYWNjZXNzIHZpb2xhdGlvbnMuIEV2ZXJ5IGFsdHAybSB2aW9sYXRpb24gZ2VuZXJhdGVz CmEgdm1fZXZlbnQuCgpTaWduZWQtb2ZmLWJ5OiBTZXJnZWogUHJvc2t1cmluIDxwcm9za3VyaW5A c2VjLmluLnR1bS5kZT4KLS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtl cm5lbC5vcmc+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgotLS0KIHhl bi9hcmNoL2FybS9wMm0uYyAgICAgICAgICAgfCAxMzAgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gvYXJtL3RyYXBzLmMgICAgICAgICB8IDEwMiAr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vYWx0 cDJtLmggfCAgIDQgKy0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmggICAgfCAgMTcgKysrKy0t CiA0IGZpbGVzIGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcDJtLmMgYi94ZW4vYXJjaC9hcm0vcDJtLmMKaW5kZXgg Mzk1ZWEwZi4uOTY4OTJhNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3AybS5jCisrKyBiL3hl bi9hcmNoL2FybS9wMm0uYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPGFzbS9oYXJkaXJx Lmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIAorI2luY2x1ZGUgPGFzbS92bV9ldmVudC5oPgog I2luY2x1ZGUgPGFzbS9hbHRwMm0uaD4KIAogI2lmZGVmIENPTkZJR19BUk1fNjQKQEAgLTE5NTUs NiArMTk1NiwxMiBAQCB2b2lkIF9faW5pdCBzZXR1cF92aXJ0X3BhZ2luZyh2b2lkKQogICAgIHNt cF9jYWxsX2Z1bmN0aW9uKHNldHVwX3ZpcnRfcGFnaW5nX29uZSwgKHZvaWQgKil2YWwsIDEpOwog fQogCit2b2lkIHAybV9hbHRwMm1fY2hlY2soc3RydWN0IHZjcHUgKnYsIHVpbnQxNl90IGlkeCkK K3sKKyAgICBpZiAoIGFsdHAybV9hY3RpdmUodi0+ZG9tYWluKSApCisgICAgICAgIHAybV9zd2l0 Y2hfdmNwdV9hbHRwMm1fYnlfaWQodiwgaWR4KTsKK30KKwogYm9vbF90IHAybV9tZW1fYWNjZXNz X2NoZWNrKHBhZGRyX3QgZ3BhLCB2YWRkcl90IGdsYSwgY29uc3Qgc3RydWN0IG5wZmVjIG5wZmVj KQogewogICAgIGludCByYzsKQEAgLTE5NjIsMTMgKzE5NjksMTQgQEAgYm9vbF90IHAybV9tZW1f YWNjZXNzX2NoZWNrKHBhZGRyX3QgZ3BhLCB2YWRkcl90IGdsYSwgY29uc3Qgc3RydWN0IG5wZmVj IG5wZmVjKQogICAgIHhlbm1lbV9hY2Nlc3NfdCB4bWE7CiAgICAgdm1fZXZlbnRfcmVxdWVzdF90 ICpyZXE7CiAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OwotICAgIHN0cnVjdCBwMm1fZG9t YWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0odi0+ZG9tYWluKTsKKyAgICBzdHJ1Y3QgZG9tYWlu ICpkID0gdi0+ZG9tYWluOworICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBhbHRwMm1fYWN0 aXZlKGQpID8gcDJtX2dldF9hbHRwMm0odikgOiBwMm1fZ2V0X2hvc3RwMm0oZCk7CiAKICAgICAv KiBNZW1fYWNjZXNzIGlzIG5vdCBpbiB1c2UuICovCiAgICAgaWYgKCAhcDJtLT5tZW1fYWNjZXNz X2VuYWJsZWQgKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJjID0gcDJtX2dldF9tZW1f YWNjZXNzKHYtPmRvbWFpbiwgX2dmbihwYWRkcl90b19wZm4oZ3BhKSksICZ4bWEpOworICAgIHJj ID0gcDJtX2dldF9tZW1fYWNjZXNzKGQsIF9nZm4ocGFkZHJfdG9fcGZuKGdwYSkpLCAmeG1hKTsK ICAgICBpZiAoIHJjICkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTIwNzQsNiArMjA4Miwx NCBAQCBib29sX3QgcDJtX21lbV9hY2Nlc3NfY2hlY2socGFkZHJfdCBncGEsIHZhZGRyX3QgZ2xh LCBjb25zdCBzdHJ1Y3QgbnBmZWMgbnBmZWMpCiAgICAgICAgIHJlcS0+dS5tZW1fYWNjZXNzLmZs YWdzIHw9IG5wZmVjLmluc25fZmV0Y2ggICAgID8gTUVNX0FDQ0VTU19YIDogMDsKICAgICAgICAg cmVxLT52Y3B1X2lkID0gdi0+dmNwdV9pZDsKIAorICAgICAgICB2bV9ldmVudF9maWxsX3JlZ3Mo cmVxKTsKKworICAgICAgICBpZiAoIGFsdHAybV9hY3RpdmUodi0+ZG9tYWluKSApCisgICAgICAg IHsKKyAgICAgICAgICAgIHJlcS0+ZmxhZ3MgfD0gVk1fRVZFTlRfRkxBR19BTFRFUk5BVEVfUDJN OworICAgICAgICAgICAgcmVxLT5hbHRwMm1faWR4ID0gdmNwdV9hbHRwMm0odikucDJtaWR4Owor ICAgICAgICB9CisKICAgICAgICAgbWVtX2FjY2Vzc19zZW5kX3JlcSh2LT5kb21haW4sIHJlcSk7 CiAgICAgICAgIHhmcmVlKHJlcSk7CiAgICAgfQpAQCAtMjM1Niw2ICsyMzcyLDExNiBAQCBzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtX2dldF9hbHRwMm0oc3RydWN0IHZjcHUgKnYpCiAgICAgcmV0dXJu IHYtPmRvbWFpbi0+YXJjaC5hbHRwMm1fcDJtW2luZGV4XTsKIH0KIAorYm9vbF90IHAybV9zd2l0 Y2hfdmNwdV9hbHRwMm1fYnlfaWQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpZHgpCit7 CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAgICBib29sX3QgcmMgPSAwOwor CisgICAgaWYgKCBpZHggPj0gTUFYX0FMVFAyTSApCisgICAgICAgIHJldHVybiByYzsKKworICAg IGFsdHAybV9sb2NrKGQpOworCisgICAgaWYgKCBkLT5hcmNoLmFsdHAybV92dHRicltpZHhdICE9 IElOVkFMSURfTUZOICkKKyAgICB7CisgICAgICAgIGlmICggaWR4ICE9IHZjcHVfYWx0cDJtKHYp LnAybWlkeCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGF0b21pY19kZWMoJnAybV9nZXRfYWx0 cDJtKHYpLT5hY3RpdmVfdmNwdXMpOworICAgICAgICAgICAgdmNwdV9hbHRwMm0odikucDJtaWR4 ID0gaWR4OworICAgICAgICAgICAgYXRvbWljX2luYygmcDJtX2dldF9hbHRwMm0odiktPmFjdGl2 ZV92Y3B1cyk7CisgICAgICAgIH0KKyAgICAgICAgcmMgPSAxOworICAgIH0KKworICAgIGFsdHAy bV91bmxvY2soZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBJZiB0aGUgZmF1bHQg aXMgZm9yIGEgbm90IHByZXNlbnQgZW50cnk6CisgKiAgICAgaWYgdGhlIGVudHJ5IGluIHRoZSBo b3N0IHAybSBoYXMgYSB2YWxpZCBtZm4sIGNvcHkgaXQgYW5kIHJldHJ5CisgKiAgICAgZWxzZSBp bmRpY2F0ZSB0aGF0IG91dGVyIGhhbmRsZXIgc2hvdWxkIGhhbmRsZSBmYXVsdAorICoKKyAqIElm IHRoZSBmYXVsdCBpcyBmb3IgYSBwcmVzZW50IGVudHJ5OgorICogICAgIGluZGljYXRlIHRoYXQg b3V0ZXIgaGFuZGxlciBzaG91bGQgaGFuZGxlIGZhdWx0CisgKi8KK2Jvb2xfdCBwMm1fYWx0cDJt X2xhenlfY29weShzdHJ1Y3QgdmNwdSAqdiwgcGFkZHJfdCBncGEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBndmEsIHN0cnVjdCBucGZlYyBucGZlYywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqKmFwMm0pCit7CisgICAg c3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqaHAy bSA9IHAybV9nZXRfaG9zdHAybSh2LT5kb21haW4pOworICAgIHAybV90eXBlX3QgcDJtdDsKKyAg ICB4ZW5tZW1fYWNjZXNzX3QgeG1hOworICAgIHBhZGRyX3QgbWFkZHIsIG1hc2sgPSAwOworICAg IGdmbl90IGdmbiA9IF9nZm4ocGFkZHJfdG9fcGZuKGdwYSkpOworICAgIHVuc2lnbmVkIGludCBs ZXZlbDsKKyAgICB1bnNpZ25lZCBsb25nIG1hdHRyOworICAgIGludCByYyA9IDA7CisKKyAgICBz dGF0aWMgY29uc3QgcDJtX2FjY2Vzc190IG1lbWFjY2Vzc1tdID0geworI2RlZmluZSBBQ0NFU1Mo YWMpIFtYRU5NRU1fYWNjZXNzXyMjYWNdID0gcDJtX2FjY2Vzc18jI2FjCisgICAgICAgIEFDQ0VT UyhuKSwKKyAgICAgICAgQUNDRVNTKHIpLAorICAgICAgICBBQ0NFU1ModyksCisgICAgICAgIEFD Q0VTUyhydyksCisgICAgICAgIEFDQ0VTUyh4KSwKKyAgICAgICAgQUNDRVNTKHJ4KSwKKyAgICAg ICAgQUNDRVNTKHd4KSwKKyAgICAgICAgQUNDRVNTKHJ3eCksCisgICAgICAgIEFDQ0VTUyhyeDJy dyksCisgICAgICAgIEFDQ0VTUyhuMnJ3eCksCisjdW5kZWYgQUNDRVNTCisgICAgfTsKKworICAg ICphcDJtID0gcDJtX2dldF9hbHRwMm0odik7CisgICAgaWYgKCAqYXAybSA9PSBOVUxMKQorICAg ICAgICByZXR1cm4gMDsKKworICAgIC8qIENoZWNrIGlmIGVudHJ5IGlzIHBhcnQgb2YgdGhlIGFs dHAybSB2aWV3ICovCisgICAgc3Bpbl9sb2NrKCYoKmFwMm0pLT5sb2NrKTsKKyAgICBtYWRkciA9 IF9fcDJtX2xvb2t1cCgqYXAybSwgZ3BhLCBOVUxMKTsKKyAgICBzcGluX3VubG9jaygmKCphcDJt KS0+bG9jayk7CisgICAgaWYgKCBtYWRkciAhPSBJTlZBTElEX1BBRERSICkKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICAvKiBDaGVjayBpZiBlbnRyeSBpcyBwYXJ0IG9mIHRoZSBob3N0IHAybSB2 aWV3ICovCisgICAgc3Bpbl9sb2NrKCZocDJtLT5sb2NrKTsKKyAgICBtYWRkciA9IF9fcDJtX2xv b2t1cChocDJtLCBncGEsICZwMm10KTsKKyAgICBpZiAoIG1hZGRyID09IElOVkFMSURfUEFERFIg KQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gX19wMm1fZ2V0X21lbV9hY2Nlc3MoaHAy bSwgZ2ZuLCAmeG1hKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBy YyA9IHAybV9nZXRfZ2ZuX2xldmVsX2FuZF9hdHRyKGhwMm0sIGdwYSwgJmxldmVsLCAmbWF0dHIp OworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKyAgICBzcGluX3VubG9jaygmaHAy bS0+bG9jayk7CisKKyAgICBtYXNrID0gbGV2ZWxfbWFza3NbbGV2ZWxdOworCisgICAgcmMgPSBh cHBseV9wMm1fY2hhbmdlcyhkLCAqYXAybSwgSU5TRVJULAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGZuX3RvX3BhZGRyKGdmbl94KGdmbikpICYgbWFzaywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwZm5fdG9fcGFkZHIoZ2ZuX3goZ2ZuKSkgKyBsZXZlbF9zaXplc1tsZXZlbF0p ICYgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZGRyICYgbWFzaywgbWF0dHIs IDAsIHAybXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1hY2Nlc3NbeG1hXSk7Cisg ICAgaWYgKCByYyApCisgICAgeworICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiZmFpbGVk IHRvIHNldCBlbnRyeSBmb3IgJWx4IC0+ICVseCBwMm0gJWx4XG4iLAorICAgICAgICAgICAgICAg ICh1bnNpZ25lZCBsb25nKXBmbl90b19wYWRkcihnZm5feChnZm4pKSwgKHVuc2lnbmVkIGxvbmcp KG1hZGRyKSwgKHVuc2lnbmVkIGxvbmcpKmFwMm0pOworICAgICAgICBkb21haW5fY3Jhc2goaHAy bS0+ZG9tYWluKTsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKKworb3V0OgorICAgIHNwaW5fdW5s b2NrKCZocDJtLT5sb2NrKTsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgcDJtX2lu aXRfYWx0cDJtX2hlbHBlcihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaSkKIHsKICAg ICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2ldOwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gvYXJtL3RyYXBzLmMgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwppbmRleCA2 OTk1OTcxLi43OGRiMmNmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdHJhcHMuYworKysgYi94 ZW4vYXJjaC9hcm0vdHJhcHMuYwpAQCAtNDgsNiArNDgsOCBAQAogI2luY2x1ZGUgPGFzbS9naWMu aD4KICNpbmNsdWRlIDxhc20vdmdpYy5oPgogCisjaW5jbHVkZSA8YXNtL2FsdHAybS5oPgorCiAv KiBUaGUgYmFzZSBvZiB0aGUgc3RhY2sgbXVzdCBhbHdheXMgYmUgZG91YmxlLXdvcmQgYWxpZ25l ZCwgd2hpY2ggbWVhbnMKICAqIHRoYXQgYm90aCB0aGUga2VybmVsIGhhbGYgb2Ygc3RydWN0IGNw dV91c2VyX3JlZ3MgKHdoaWNoIGlzIHB1c2hlZCBpbgogICogZW50cnkuUykgYW5kIHN0cnVjdCBj cHVfaW5mbyAod2hpY2ggbGl2ZXMgYXQgdGhlIGJvdHRvbSBvZiBhIFhlbgpAQCAtMjM4MywzNSAr MjM4NSw2NCBAQCBzdGF0aWMgdm9pZCBkb190cmFwX2luc3RyX2Fib3J0X2d1ZXN0KHN0cnVjdCBj cHVfdXNlcl9yZWdzICpyZWdzLAogewogICAgIGludCByYzsKICAgICByZWdpc3Rlcl90IGd2YSA9 IFJFQURfU1lTUkVHKEZBUl9FTDIpOworICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKKyAg ICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOworICAgIHN0cnVjdCBwMm1fZG9tYWluICpw Mm0gPSBOVUxMOworICAgIHBhZGRyX3QgZ3BhOworCisgICAgaWYgKCBoc3IuaWFidC5zMXB0dyAp CisgICAgICAgIGdwYSA9IGdldF9mYXVsdGluZ19pcGEoKTsKKyAgICBlbHNlCisgICAgeworICAg ICAgICAvKgorICAgICAgICAgKiBGbHVzaCB0aGUgVExCIHRvIG1ha2Ugc3VyZSB0aGUgRFRMQiBp cyBjbGVhciBiZWZvcmUKKyAgICAgICAgICogZG9pbmcgR1ZBLT5JUEEgdHJhbnNsYXRpb24uIElm IHdlIGdvdCBoZXJlIGJlY2F1c2Ugb2YKKyAgICAgICAgICogYW4gZW50cnkgb25seSBwcmVzZW50 IGluIHRoZSBJVExCLCB0aGlzIHRyYW5zbGF0aW9uIG1heQorICAgICAgICAgKiBzdGlsbCBiZSBp bmFjY3VyYXRlLgorICAgICAgICAgKi8KKyAgICAgICAgZmx1c2hfdGxiX2xvY2FsKCk7CisKKyAg ICAgICAgcmMgPSBndmFfdG9faXBhKGd2YSwgJmdwYSwgR1YyTV9SRUFEKTsKKyAgICAgICAgaWYg KCByYyA9PSAtRUZBVUxUICkKKyAgICAgICAgICAgIGdvdG8gYmFkX2luc25fYWJvcnQ7CisgICAg fQogCiAgICAgc3dpdGNoICggaHNyLmlhYnQuaWZzYyAmIDB4M2YgKQogICAgIHsKKyAgICBjYXNl IEZTQ19GTFRfVFJBTlMgLi4uIEZTQ19GTFRfVFJBTlMgKyAzOgorICAgIHsKKyAgICAgICAgaWYg KCBhbHRwMm1fYWN0aXZlKGQpICkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3RydWN0 IG5wZmVjIG5wZmVjID0geworICAgICAgICAgICAgICAgIC5pbnNuX2ZldGNoID0gMSwKKyAgICAg ICAgICAgICAgICAuZ2xhX3ZhbGlkID0gMSwKKyAgICAgICAgICAgICAgICAua2luZCA9IGhzci5p YWJ0LnMxcHR3ID8gbnBmZWNfa2luZF9pbl9ncHQgOiBucGZlY19raW5kX3dpdGhfZ2xhCisgICAg ICAgICAgICB9OworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogQ29weSB0aGUgZW50 aXJlIHBhZ2Ugb2YgdGhlIGZhaWxpbmcgaW5zdHJ1Y3Rpb24gaW50byB0aGUKKyAgICAgICAgICAg ICAqIGN1cnJlbnRseSBhY3RpdmUgYWx0cDJtIHZpZXcuCisgICAgICAgICAgICAgKi8KKyAgICAg ICAgICAgIGlmICggcDJtX2FsdHAybV9sYXp5X2NvcHkodiwgZ3BhLCBndmEsIG5wZmVjLCAmcDJt KSApCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICByYyA9IHAybV9tZW1f YWNjZXNzX2NoZWNrKGdwYSwgZ3ZhLCBucGZlYyk7CisKKyAgICAgICAgICAgIC8qIFRyYXAgd2Fz IHRyaWdnZXJlZCBieSBtZW1fYWNjZXNzLCB3b3JrIGhlcmUgaXMgZG9uZSAqLworICAgICAgICAg ICAgaWYgKCAhcmMgKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg ICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIEZTQ19GTFRfUEVSTSAuLi4gRlNDX0ZMVF9QRVJN ICsgMzoKICAgICB7Ci0gICAgICAgIHBhZGRyX3QgZ3BhOwogICAgICAgICBjb25zdCBzdHJ1Y3Qg bnBmZWMgbnBmZWMgPSB7CiAgICAgICAgICAgICAuaW5zbl9mZXRjaCA9IDEsCiAgICAgICAgICAg ICAuZ2xhX3ZhbGlkID0gMSwKICAgICAgICAgICAgIC5raW5kID0gaHNyLmlhYnQuczFwdHcgPyBu cGZlY19raW5kX2luX2dwdCA6IG5wZmVjX2tpbmRfd2l0aF9nbGEKICAgICAgICAgfTsKIAotICAg ICAgICBpZiAoIGhzci5pYWJ0LnMxcHR3ICkKLSAgICAgICAgICAgIGdwYSA9IGdldF9mYXVsdGlu Z19pcGEoKTsKLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAvKgotICAgICAg ICAgICAgICogRmx1c2ggdGhlIFRMQiB0byBtYWtlIHN1cmUgdGhlIERUTEIgaXMgY2xlYXIgYmVm b3JlCi0gICAgICAgICAgICAgKiBkb2luZyBHVkEtPklQQSB0cmFuc2xhdGlvbi4gSWYgd2UgZ290 IGhlcmUgYmVjYXVzZSBvZgotICAgICAgICAgICAgICogYW4gZW50cnkgb25seSBwcmVzZW50IGlu IHRoZSBJVExCLCB0aGlzIHRyYW5zbGF0aW9uIG1heQotICAgICAgICAgICAgICogc3RpbGwgYmUg aW5hY2N1cmF0ZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgZmx1c2hfdGxiX2xvY2Fs KCk7Ci0KLSAgICAgICAgICAgIHJjID0gZ3ZhX3RvX2lwYShndmEsICZncGEsIEdWMk1fUkVBRCk7 Ci0gICAgICAgICAgICBpZiAoIHJjID09IC1FRkFVTFQgKQotICAgICAgICAgICAgICAgIGdvdG8g YmFkX2luc25fYWJvcnQ7Ci0gICAgICAgIH0KLQogICAgICAgICByYyA9IHAybV9tZW1fYWNjZXNz X2NoZWNrKGdwYSwgZ3ZhLCBucGZlYyk7CiAKICAgICAgICAgLyogVHJhcCB3YXMgdHJpZ2dlcmVk IGJ5IG1lbV9hY2Nlc3MsIHdvcmsgaGVyZSBpcyBkb25lICovCkBAIC0yNDI5LDYgKzI0NjAsOCBA QCBzdGF0aWMgdm9pZCBkb190cmFwX2RhdGFfYWJvcnRfZ3Vlc3Qoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5p b24gaHNyIGhzcikKIHsKICAgICBjb25zdCBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGhzci5kYWJ0 OworICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKKyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtID0gTlVMTDsKICAgICBpbnQgcmM7CiAgICAgbW1pb19pbmZvX3QgaW5mbzsKIApAQCAtMjQ0 OSw2ICsyNDgyLDEyIEBAIHN0YXRpYyB2b2lkIGRvX3RyYXBfZGF0YV9hYm9ydF9ndWVzdChzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKICAgICAgICAgaW5mby5ncGEgPSBnZXRfZmF1bHRpbmdf aXBhKCk7CiAgICAgZWxzZQogICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogV2hlbiB1c2lu ZyBhbHRwMm0sIHRoaXMgZmx1c2ggaXMgcmVxdWlyZWQgdG8gZ2V0IHJpZCBvZiBvbGQgVExCCisg ICAgICAgICAqIGVudHJpZXMgYW5kIHVzZSB0aGUgbmV3LCBsYXppbHkgY29waWVkLCBhcDJtIGVu dHJpZXMuCisgICAgICAgICAqLworICAgICAgICBmbHVzaF90bGJfbG9jYWwoKTsKKwogICAgICAg ICByYyA9IGd2YV90b19pcGEoaW5mby5ndmEsICZpbmZvLmdwYSwgR1YyTV9SRUFEKTsKICAgICAg ICAgaWYgKCByYyA9PSAtRUZBVUxUICkKICAgICAgICAgICAgIGdvdG8gYmFkX2RhdGFfYWJvcnQ7 CkBAIC0yNDU2LDYgKzI0OTUsMzMgQEAgc3RhdGljIHZvaWQgZG9fdHJhcF9kYXRhX2Fib3J0X2d1 ZXN0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAogCiAgICAgc3dpdGNoICggZGFidC5kZnNj ICYgMHgzZiApCiAgICAgeworICAgIGNhc2UgRlNDX0ZMVF9UUkFOUyAuLi4gRlNDX0ZMVF9UUkFO UyArIDM6CisgICAgeworICAgICAgICBpZiAoIGFsdHAybV9hY3RpdmUoY3VycmVudC0+ZG9tYWlu KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBucGZlYyBucGZlYyA9IHsK KyAgICAgICAgICAgICAgICAucmVhZF9hY2Nlc3MgPSAhZGFidC53cml0ZSwKKyAgICAgICAgICAg ICAgICAud3JpdGVfYWNjZXNzID0gZGFidC53cml0ZSwKKyAgICAgICAgICAgICAgICAuZ2xhX3Zh bGlkID0gMSwKKyAgICAgICAgICAgICAgICAua2luZCA9IGRhYnQuczFwdHcgPyBucGZlY19raW5k X2luX2dwdCA6IG5wZmVjX2tpbmRfd2l0aF9nbGEKKyAgICAgICAgICAgIH07CisKKyAgICAgICAg ICAgIC8qCisgICAgICAgICAgICAgKiBDb3B5IHRoZSBlbnRpcmUgcGFnZSBvZiB0aGUgZmFpbGlu ZyBkYXRhIGFjY2VzcyBpbnRvIHRoZQorICAgICAgICAgICAgICogY3VycmVudGx5IGFjdGl2ZSBh bHRwMm0gdmlldy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBwMm1fYWx0cDJt X2xhenlfY29weSh2LCBpbmZvLmdwYSwgaW5mby5ndmEsIG5wZmVjLCAmcDJtKSApCisgICAgICAg ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICByYyA9IHAybV9tZW1fYWNjZXNzX2NoZWNr KGluZm8uZ3BhLCBpbmZvLmd2YSwgbnBmZWMpOworCisgICAgICAgICAgICAvKiBUcmFwIHdhcyB0 cmlnZ2VyZWQgYnkgbWVtX2FjY2Vzcywgd29yayBoZXJlIGlzIGRvbmUgKi8KKyAgICAgICAgICAg IGlmICggIXJjICkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBGU0NfRkxUX1BFUk0gLi4uIEZTQ19GTFRfUEVSTSAr IDM6CiAgICAgewogICAgICAgICBjb25zdCBzdHJ1Y3QgbnBmZWMgbnBmZWMgPSB7CmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2FsdHAybS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9h bHRwMm0uaAppbmRleCBlYzRhYTA5Li4yYTg3ZDE0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20tYXJtL2FsdHAybS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vYWx0cDJtLmgKQEAgLTMx LDkgKzMxLDcgQEAgc3RhdGljIGlubGluZSBib29sX3QgYWx0cDJtX2FjdGl2ZShjb25zdCBzdHJ1 Y3QgZG9tYWluICpkKQogLyogQWx0ZXJuYXRlIHAybSBWQ1BVICovCiBzdGF0aWMgaW5saW5lIHVp bnQxNl90IGFsdHAybV92Y3B1X2lkeChjb25zdCBzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICAvKiBO b3QgaW1wbGVtZW50ZWQgb24gQVJNLCBzaG91bGQgbm90IGJlIHJlYWNoZWQuICovCi0gICAgQlVH KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHZjcHVfYWx0cDJtKHYpLnAybWlkeDsKIH0K IAogdm9pZCBhbHRwMm1fdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KTsKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5o CmluZGV4IDQ1MWIwOTcuLmI4MmU0YjkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v cDJtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaApAQCAtMTE1LDEyICsxMTUsNiBA QCB2b2lkIHAybV9tZW1fYWNjZXNzX2VtdWxhdGVfY2hlY2soc3RydWN0IHZjcHUgKnYsCiAgICAg LyogTm90IHN1cHBvcnRlZCBvbiBBUk0uICovCiB9CiAKLXN0YXRpYyBpbmxpbmUKLXZvaWQgcDJt X2FsdHAybV9jaGVjayhzdHJ1Y3QgdmNwdSAqdiwgdWludDE2X3QgaWR4KQotewotICAgIC8qIE5v dCBzdXBwb3J0ZWQgb24gQVJNLiAqLwotfQotCiAvKgogICogQWx0ZXJuYXRlIHAybTogc2hhZG93 IHAybSB0YWJsZXMgdXNlZCBmb3IgYWx0ZXJuYXRlIG1lbW9yeSB2aWV3cy4KICAqLwpAQCAtMTMx LDEyICsxMjUsMjMgQEAgdm9pZCBwMm1fYWx0cDJtX2NoZWNrKHN0cnVjdCB2Y3B1ICp2LCB1aW50 MTZfdCBpZHgpCiAvKiBHZXQgY3VycmVudCBhbHRlcm5hdGUgcDJtIHRhYmxlICovCiBzdHJ1Y3Qg cDJtX2RvbWFpbiAqcDJtX2dldF9hbHRwMm0oc3RydWN0IHZjcHUgKnYpOwogCisvKiBTd2l0Y2gg YWx0ZXJuYXRlIHAybSBmb3IgYSBzaW5nbGUgdmNwdSAqLworYm9vbF90IHAybV9zd2l0Y2hfdmNw dV9hbHRwMm1fYnlfaWQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpZHgpOworCisvKiBD aGVjayB0byBzZWUgaWYgdmNwdSBzaG91bGQgYmUgc3dpdGNoZWQgdG8gYSBkaWZmZXJlbnQgcDJt LiAqLwordm9pZCBwMm1fYWx0cDJtX2NoZWNrKHN0cnVjdCB2Y3B1ICp2LCB1aW50MTZfdCBpZHgp OworCiAvKiBGbHVzaCBhbGwgdGhlIGFsdGVybmF0ZSBwMm0ncyBmb3IgYSBkb21haW4gKi8KIHZv aWQgcDJtX2ZsdXNoX2FsdHAybShzdHJ1Y3QgZG9tYWluICpkKTsKIAogLyogTWFrZSBhIHNwZWNp ZmljIGFsdGVybmF0ZSBwMm0gdmFsaWQgKi8KIGludCBwMm1faW5pdF9hbHRwMm1fYnlfaWQoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkeCk7CiAKKy8qIEFsdGVybmF0ZSBwMm0gcGFn aW5nICovCitib29sX3QgcDJtX2FsdHAybV9sYXp5X2NvcHkoc3RydWN0IHZjcHUgKnYsIHBhZGRy X3QgZ3BhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2xhLCBz dHJ1Y3QgbnBmZWMgbnBmZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHAy bV9kb21haW4gKiphcDJtKTsKKwogLyogRmluZCBhbiBhdmFpbGFibGUgYWx0ZXJuYXRlIHAybSBh bmQgbWFrZSBpdCB2YWxpZCAqLwogaW50IHAybV9pbml0X25leHRfYWx0cDJtKHN0cnVjdCBkb21h aW4gKmQsIHVpbnQxNl90ICppZHgpOwogCi0tIAoyLjguMwoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==