From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1M0H47-00081e-8c for qemu-devel@nongnu.org; Sat, 02 May 2009 11:23:47 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1M0H45-00081B-QS for qemu-devel@nongnu.org; Sat, 02 May 2009 11:23:45 -0400 Received: from [199.232.76.173] (port=36238 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M0H45-000818-KT for qemu-devel@nongnu.org; Sat, 02 May 2009 11:23:45 -0400 Received: from fg-out-1718.google.com ([72.14.220.153]:3375) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1M0H44-00021T-Qx for qemu-devel@nongnu.org; Sat, 02 May 2009 11:23:45 -0400 Received: by fg-out-1718.google.com with SMTP id l27so234393fgb.8 for ; Sat, 02 May 2009 08:23:42 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <200905020057.23902.paul@codesourcery.com> References: <49EDB109.5010009@earthlink.net> <49FB1302.4090904@earthlink.net> <49FB88C8.9060906@earthlink.net> <200905020057.23902.paul@codesourcery.com> Date: Sat, 2 May 2009 18:23:42 +0300 Message-ID: Subject: Re: [Qemu-devel] [PATCH] 64 bit I/O support v7 From: Blue Swirl Content-Type: multipart/mixed; boundary=000e0cd24e22af08810468ef83f9 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paul Brook Cc: qemu-devel@nongnu.org, Robert Reif --000e0cd24e22af08810468ef83f9 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 5/2/09, Paul Brook wrote: > > Should a new intermediate bus layer also do byte swapping? > > > Yes, though a bus layer isn't actually a necessary prerequisite. > > As I mentioned in the recent "Smarter compilation for target devices" > thread[1], having individual devices do byteswapping is bogus. A while ago I > reworked the TLB handling, so there should now be spare bits that can be used > for things like byteswapping. This version does the byte swapping and width translation in exec.c. Sparc32 OpenBIOS/Linux does not use the wrong sized accesses, so that part may be untested. Some problems: - Small writes cause a read-modify-write cycle, but I think that may happen with real devices too. Another solution is to write zero in other byte lanes without reading. - The LE/BE distinction does not seem to be very obvious for devices. I think the board should give the is_le value to the device. - There is a small performance hit for the native access case. This could be avoided by extending io_mem_opaque to cover all sizes. --000e0cd24e22af08810468ef83f9 Content-Type: application/mbox; name="Emulate_non_native_widths.patch" Content-Disposition: attachment; filename="Emulate_non_native_widths.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fu8gdzvt RW11bGF0ZSBub24tbmF0aXZlIHdpZHRocyBhbmQgb3B0aW9uYWxseSBieXRlIHN3YXAKCkZyb206 IEJsdWUgU3dpcmwgPGJsYXV3aXJiZWxAZ21haWwuY29tPgoKQ3VycmVudGx5IHRoZSBkZXZpY2Vz IGhhbmRsZSBub24tbmF0aXZlIEkvTyBhY2Nlc3NlcyBieSB0aGVtc2VsdmVzLiBIYW5kbGUKdGhl bSBhdCBoaWdoZXIgbGV2ZWwsIHNvIGRldmljZSBjb2RlIGNhbiBiZSBzaW1wbGlmaWVkLgoKU2ln bmVkLW9mZi1ieTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+Ci0tLQoKIGNwdS1h bGwuaCB8ICAgMTggKysKIGV4ZWMuYyAgICB8ICA3MTMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA3 MzEgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCgpkaWZmIC0tZ2l0IGEvY3B1LWFsbC5o IGIvY3B1LWFsbC5oCmluZGV4IDBkZjU0YjYuLmQzMDQyOTYgMTAwNjQ0Ci0tLSBhL2NwdS1hbGwu aAorKysgYi9jcHUtYWxsLmgKQEAgLTkxOCw2ICs5MTgsMjQgQEAgaW50IGNwdV9yZWdpc3Rlcl9p b19tZW1vcnkoaW50IGlvX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq b3BhcXVlKTsKIHZvaWQgY3B1X3VucmVnaXN0ZXJfaW9fbWVtb3J5KGludCB0YWJsZV9hZGRyZXNz KTsKIAorLyogUmVnaXN0ZXIgSU8gbWVtb3J5IHdpdGggb3B0aW9uYWwgZW11bGF0aW9uIGZvciBv dGhlciBidXMgd2lkdGhzCisgICB0aGFuIG5hdGl2ZSwgb3B0aW9uYWxseSBieXRlIHN3YXBwZWQg Ki8KK2ludCBjcHVfcmVnaXN0ZXJfOGJpdF9pb19tZW1vcnkoaW50IGlvX2luZGV4LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVSZWFkTWVtb3J5RnVuYyAqbWVtX3JlYWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVdyaXRlTWVtb3J5RnVuYyAqbWVtX3dy aXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUsIGludCBl bXVsYXRlX290aGVyX3dpZHRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGlzX2xlKTsKK2ludCBjcHVfcmVnaXN0ZXJfMTZiaXRfaW9fbWVtb3J5KGludCBpb19pbmRleCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVJlYWRNZW1vcnlGdW5jICptZW1f cmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVdyaXRlTWVtb3J5RnVu YyAqbWVtX3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3Bh cXVlLCBpbnQgZW11bGF0ZV9vdGhlcl93aWR0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgaXNfbGUpOworaW50IGNwdV9yZWdpc3Rlcl8zMmJpdF9pb19tZW1vcnkoaW50 IGlvX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVUmVhZE1lbW9y eUZ1bmMgKm1lbV9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVV3Jp dGVNZW1vcnlGdW5jICptZW1fd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpvcGFxdWUsIGludCBlbXVsYXRlX290aGVyX3dpZHRocywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBpc19sZSk7CisKIHZvaWQgY3B1X3BoeXNpY2FsX21lbW9y eV9ydyh0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDhfdCAqYnVmLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBsZW4sIGludCBpc193cml0ZSk7CiBzdGF0aWMgaW5saW5lIHZv aWQgY3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLApkaWZm IC0tZ2l0IGEvZXhlYy5jIGIvZXhlYy5jCmluZGV4IGM2NDkzODEuLjJlYWUwNzcgMTAwNjQ0Ci0t LSBhL2V4ZWMuYworKysgYi9leGVjLmMKQEAgLTU0LDYgKzU0LDcgQEAKIAogLy8jZGVmaW5lIERF QlVHX0lPUE9SVAogLy8jZGVmaW5lIERFQlVHX1NVQlBBR0UKKy8vI2RlZmluZSBERUJVR19FTVVM QVRFRF9JTwogCiAjaWYgIWRlZmluZWQoQ09ORklHX1VTRVJfT05MWSkKIC8qIFRCIGNvbnNpc3Rl bmN5IGNoZWNrcyBvbmx5IGltcGxlbWVudGVkIGZvciB1c2VybW9kZSBlbXVsYXRpb24uICAqLwpA QCAtMjA5LDYgKzIxMCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBzdWJwYWdlX3QgewogICAgIHJhbV9h ZGRyX3QgcmVnaW9uX29mZnNldFtUQVJHRVRfUEFHRV9TSVpFXVsyXVs0XTsKIH0gc3VicGFnZV90 OwogCit0eXBlZGVmIHN0cnVjdCBlbXVsYXRlZF9pbyB7CisgICAgQ1BVUmVhZE1lbW9yeUZ1bmMg Km1lbV9yZWFkOworICAgIENQVVdyaXRlTWVtb3J5RnVuYyAqbWVtX3dyaXRlOworICAgIHZvaWQg Km9wYXF1ZTsKK30gZW11bGF0ZWRfaW87CisKICNpZmRlZiBfV0lOMzIKIHN0YXRpYyB2b2lkIG1h cF9leGVjKHZvaWQgKmFkZHIsIGxvbmcgc2l6ZSkKIHsKQEAgLTI5OTYsNiArMzAwMyw3MTIgQEAg c3RhdGljIGludCBnZXRfZnJlZV9pb19tZW1faWR4KHZvaWQpCiAgICAgcmV0dXJuIC0xOwogfQog CisvKiBFbXVsYXRpb24gZm9yIG5vbi1uYXRpdmUgYWNjZXNzZXMgZm9yIDggYml0IGRldmljZXMg Ki8KK3N0YXRpYyB1aW50MzJfdCBlbXVsYXRlZF9yZWFkYl9iKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0 X3BoeXNfYWRkcl90IGFkZHIpCit7CisgICAgZW11bGF0ZWRfaW8gKnMgPSBvcGFxdWU7CisgICAg dWludDMyX3QgcmV0OworCisgICAgcmV0ID0gcy0+bWVtX3JlYWQocy0+b3BhcXVlLCBhZGRyKTsK KyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBU QVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0KTsKKyNlbmRp ZgorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGVtdWxhdGVkX3dyaXRlYl9iKHZv aWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCB2YWwpCit7CisgICAgZW11bGF0ZWRfaW8gKnMgPSBvcGFxdWU7 CisKKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIg IiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgdmFsKTsKKyNl bmRpZgorICAgIHMtPm1lbV93cml0ZShzLT5vcGFxdWUsIGFkZHIsIHZhbCk7Cit9CisKK3N0YXRp YyB1aW50MzJfdCBlbXVsYXRlZF9yZWFkd19iX2xlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNf YWRkcl90IGFkZHIpCit7CisgICAgZW11bGF0ZWRfaW8gKnMgPSBvcGFxdWU7CisgICAgdWludDMy X3QgcmV0OworCisgICAgcmV0ID0gcy0+bWVtX3JlYWQocy0+b3BhcXVlLCBhZGRyKTsKKyAgICBy ZXQgfD0gcy0+bWVtX3JlYWQocy0+b3BhcXVlLCBhZGRyICsgMSkgPDwgODsKKyNpZiBkZWZpbmVk KERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3Bs eCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0KTsKKyNlbmRpZgorICAgIHJldHVy biByZXQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBlbXVsYXRlZF9yZWFkd19iX2JlKHZvaWQgKm9w YXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7CisgICAgZW11bGF0ZWRfaW8gKnMgPSBv cGFxdWU7CisgICAgdWludDMyX3QgcmV0OworCisgICAgcmV0ID0gcy0+bWVtX3JlYWQocy0+b3Bh cXVlLCBhZGRyKSA8PCA4OworICAgIHJldCB8PSBzLT5tZW1fcmVhZChzLT5vcGFxdWUsIGFkZHIg KyAxKTsKKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFk ZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0KTsK KyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGVtdWxhdGVkX3dyaXRl d19iX2xlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwpCit7CisgICAgZW11bGF0ZWRfaW8g KnMgPSBvcGFxdWU7CisKKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50 ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRk ciwgdmFsKTsKKyNlbmRpZgorICAgIHMtPm1lbV93cml0ZShzLT5vcGFxdWUsIGFkZHIsIHZhbCk7 CisgICAgcy0+bWVtX3dyaXRlKHMtPm9wYXF1ZSwgYWRkciArIDEsIHZhbCA+PiA4KTsKK30KKwor c3RhdGljIHZvaWQgZW11bGF0ZWRfd3JpdGV3X2JfYmUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IHZhbCkKK3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9IG9wYXF1ZTsKKworI2lmIGRlZmluZWQoREVC VUdfRU1VTEFURURfSU8pCisgICAgcHJpbnRmKCIlczogYWRkciAiIFRBUkdFVF9GTVRfcGx4ICIg dmFsICUwOHhcbiIsIF9fZnVuY19fLCBhZGRyLCB2YWwpOworI2VuZGlmCisgICAgcy0+bWVtX3dy aXRlKHMtPm9wYXF1ZSwgYWRkciwgdmFsID4+IDgpOworICAgIHMtPm1lbV93cml0ZShzLT5vcGFx dWUsIGFkZHIgKyAxLCB2YWwpOworfQorCitzdGF0aWMgdWludDMyX3QgZW11bGF0ZWRfcmVhZGxf Yl9sZSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQoreworICAgIGVtdWxh dGVkX2lvICpzID0gb3BhcXVlOworICAgIHVpbnQzMl90IHJldDsKKworICAgIHJldCA9IHMtPm1l bV9yZWFkKHMtPm9wYXF1ZSwgYWRkcik7CisgICAgcmV0IHw9IHMtPm1lbV9yZWFkKHMtPm9wYXF1 ZSwgYWRkciArIDEpIDw8IDg7CisgICAgcmV0IHw9IHMtPm1lbV9yZWFkKHMtPm9wYXF1ZSwgYWRk ciArIDIpIDw8IDE2OworICAgIHJldCB8PSBzLT5tZW1fcmVhZChzLT5vcGFxdWUsIGFkZHIgKyAz KSA8PCAyNDsKKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6 IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0 KTsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBlbXVsYXRl ZF9yZWFkbF9iX2JlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7Cisg ICAgZW11bGF0ZWRfaW8gKnMgPSBvcGFxdWU7CisgICAgdWludDMyX3QgcmV0OworCisgICAgcmV0 ID0gcy0+bWVtX3JlYWQocy0+b3BhcXVlLCBhZGRyKSA8PCAyNDsKKyAgICByZXQgfD0gcy0+bWVt X3JlYWQocy0+b3BhcXVlLCBhZGRyICsgMSkgPDwgMTY7CisgICAgcmV0IHw9IHMtPm1lbV9yZWFk KHMtPm9wYXF1ZSwgYWRkciArIDIpIDw8IDg7CisgICAgcmV0IHw9IHMtPm1lbV9yZWFkKHMtPm9w YXF1ZSwgYWRkciArIDMpOworI2lmIGRlZmluZWQoREVCVUdfRU1VTEFURURfSU8pCisgICAgcHJp bnRmKCIlczogYWRkciAiIFRBUkdFVF9GTVRfcGx4ICIgdmFsICUwOHhcbiIsIF9fZnVuY19fLCBh ZGRyLCByZXQpOworI2VuZGlmCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgZW11 bGF0ZWRfd3JpdGVsX2JfbGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCkKK3sKKyAgICBl bXVsYXRlZF9pbyAqcyA9IG9wYXF1ZTsKKworI2lmIGRlZmluZWQoREVCVUdfRU1VTEFURURfSU8p CisgICAgcHJpbnRmKCIlczogYWRkciAiIFRBUkdFVF9GTVRfcGx4ICIgdmFsICUwOHhcbiIsIF9f ZnVuY19fLCBhZGRyLCB2YWwpOworI2VuZGlmCisgICAgcy0+bWVtX3dyaXRlKHMtPm9wYXF1ZSwg YWRkciwgdmFsKTsKKyAgICBzLT5tZW1fd3JpdGUocy0+b3BhcXVlLCBhZGRyICsgMSwgdmFsID4+ IDgpOworICAgIHMtPm1lbV93cml0ZShzLT5vcGFxdWUsIGFkZHIgKyAyLCB2YWwgPj4gMTYpOwor ICAgIHMtPm1lbV93cml0ZShzLT5vcGFxdWUsIGFkZHIgKyAzLCB2YWwgPj4gMjQpOworfQorCitz dGF0aWMgdm9pZCBlbXVsYXRlZF93cml0ZWxfYl9iZSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlz X2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg dmFsKQoreworICAgIGVtdWxhdGVkX2lvICpzID0gb3BhcXVlOworCisjaWYgZGVmaW5lZChERUJV R19FTVVMQVRFRF9JTykKKyAgICBwcmludGYoIiVzOiBhZGRyICIgVEFSR0VUX0ZNVF9wbHggIiB2 YWwgJTA4eFxuIiwgX19mdW5jX18sIGFkZHIsIHZhbCk7CisjZW5kaWYKKyAgICBzLT5tZW1fd3Jp dGUocy0+b3BhcXVlLCBhZGRyLCB2YWwgPj4gMjQpOworICAgIHMtPm1lbV93cml0ZShzLT5vcGFx dWUsIGFkZHIgKyAxLCB2YWwgPj4gMTYpOworICAgIHMtPm1lbV93cml0ZShzLT5vcGFxdWUsIGFk ZHIgKyAyLCB2YWwgPj4gOCk7CisgICAgcy0+bWVtX3dyaXRlKHMtPm9wYXF1ZSwgYWRkciArIDMs IHZhbCk7Cit9CisKK2ludCBjcHVfcmVnaXN0ZXJfOGJpdF9pb19tZW1vcnkoaW50IGlvX2luZGV4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVSZWFkTWVtb3J5RnVuYyAqbWVt X3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVdyaXRlTWVtb3J5RnVu YyAqbWVtX3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcGFx dWUsIGludCBlbXVsYXRlX290aGVyX3dpZHRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGlzX2xlKQoreworICAgIGlmIChpb19pbmRleCA8PSAwKSB7CisgICAgICAgIGlv X2luZGV4ID0gZ2V0X2ZyZWVfaW9fbWVtX2lkeCgpOworICAgICAgICBpZiAoaW9faW5kZXggPT0g LTEpCisgICAgICAgICAgICByZXR1cm4gaW9faW5kZXg7CisgICAgfSBlbHNlIHsKKyAgICAgICAg aWYgKGlvX2luZGV4ID49IElPX01FTV9OQl9FTlRSSUVTKQorICAgICAgICAgICAgcmV0dXJuIC0x OworICAgIH0KKworCisgICAgaWYgKGVtdWxhdGVfb3RoZXJfd2lkdGhzKSB7CisgICAgICAgIGVt dWxhdGVkX2lvICpzOworCisgICAgICAgIHMgPSBxZW11X21hbGxvY3ooc2l6ZW9mKGVtdWxhdGVk X2lvKSk7CisKKyAgICAgICAgaW9fbWVtX3JlYWRbaW9faW5kZXhdWzBdID0gZW11bGF0ZWRfcmVh ZGJfYjsKKyAgICAgICAgaW9fbWVtX3dyaXRlW2lvX2luZGV4XVswXSA9IGVtdWxhdGVkX3dyaXRl Yl9iOworCisgICAgICAgIGlmIChpc19sZSkgeworICAgICAgICAgICAgaW9fbWVtX3JlYWRbaW9f aW5kZXhdWzFdID0gZW11bGF0ZWRfcmVhZHdfYl9sZTsKKyAgICAgICAgICAgIGlvX21lbV93cml0 ZVtpb19pbmRleF1bMV0gPSBlbXVsYXRlZF93cml0ZXdfYl9sZTsKKyAgICAgICAgICAgIGlvX21l bV9yZWFkW2lvX2luZGV4XVsyXSA9IGVtdWxhdGVkX3JlYWRsX2JfbGU7CisgICAgICAgICAgICBp b19tZW1fd3JpdGVbaW9faW5kZXhdWzJdID0gZW11bGF0ZWRfd3JpdGVsX2JfbGU7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICBpb19tZW1fcmVhZFtpb19pbmRleF1bMV0gPSBlbXVsYXRl ZF9yZWFkd19iX2JlOworICAgICAgICAgICAgaW9fbWVtX3dyaXRlW2lvX2luZGV4XVsxXSA9IGVt dWxhdGVkX3dyaXRld19iX2JlOworICAgICAgICAgICAgaW9fbWVtX3JlYWRbaW9faW5kZXhdWzJd ID0gZW11bGF0ZWRfcmVhZGxfYl9iZTsKKyAgICAgICAgICAgIGlvX21lbV93cml0ZVtpb19pbmRl eF1bMl0gPSBlbXVsYXRlZF93cml0ZWxfYl9iZTsKKyAgICAgICAgfQorICAgICAgICBzLT5vcGFx dWUgPSBvcGFxdWU7CisgICAgICAgIHMtPm1lbV9yZWFkID0gbWVtX3JlYWQ7CisgICAgICAgIHMt Pm1lbV93cml0ZSA9IG1lbV93cml0ZTsKKyAgICAgICAgaW9fbWVtX29wYXF1ZVtpb19pbmRleF0g PSBzOworICAgIH0gZWxzZSB7CisgICAgICAgIGlvX21lbV9yZWFkW2lvX2luZGV4XVswXSA9IG1l bV9yZWFkOworICAgICAgICBpb19tZW1fd3JpdGVbaW9faW5kZXhdWzBdID0gbWVtX3dyaXRlOwor ICAgICAgICBpb19tZW1fb3BhcXVlW2lvX2luZGV4XSA9IG9wYXF1ZTsKKyAgICB9CisKKyAgICBy ZXR1cm4gaW9faW5kZXggPDwgSU9fTUVNX1NISUZUOworfQorCisvKiBFbXVsYXRpb24gZm9yIG5v bi1uYXRpdmUgYWNjZXNzZXMgZm9yIDE2IGJpdCBkZXZpY2VzICovCitzdGF0aWMgdWludDMyX3Qg ZW11bGF0ZWRfcmVhZGJfd19sZSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRy KQoreworICAgIGVtdWxhdGVkX2lvICpzID0gb3BhcXVlOworICAgIHVpbnQzMl90IHJldDsKKwor ICAgIHJldCA9IHMtPm1lbV9yZWFkKHMtPm9wYXF1ZSwgYWRkciAmIH4xKTsKKyAgICBzd2l0Y2gg KGFkZHIgJiAxKSB7CisgICAgY2FzZSAwOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6Cisg ICAgICAgIHJldCA+Pj0gODsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2lmIGRlZmluZWQoREVC VUdfRU1VTEFURURfSU8pCisgICAgcHJpbnRmKCIlczogYWRkciAiIFRBUkdFVF9GTVRfcGx4ICIg dmFsICUwOHhcbiIsIF9fZnVuY19fLCBhZGRyLCByZXQpOworI2VuZGlmCisgICAgcmV0dXJuIHJl dDsKK30KKworc3RhdGljIHVpbnQzMl90IGVtdWxhdGVkX3JlYWRiX3dfYmUodm9pZCAqb3BhcXVl LCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKK3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9IG9wYXF1 ZTsKKyAgICB1aW50MzJfdCByZXQ7CisKKyAgICByZXQgPSBzLT5tZW1fcmVhZChzLT5vcGFxdWUs IGFkZHIgJiB+MSk7CisgICAgc3dpdGNoIChhZGRyICYgMSkgeworICAgIGNhc2UgMDoKKyAgICAg ICAgcmV0ID4+PSA4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIGJyZWFr OworICAgIH0KKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6 IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0 KTsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGVtdWxhdGVkX3dy aXRlYl93X2xlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwpCit7CisgICAgZW11bGF0ZWRf aW8gKnMgPSBvcGFxdWU7CisgICAgdWludDMyX3Qgb3JpZ192YWw7CisKKyAgICBvcmlnX3ZhbCA9 IHMtPm1lbV9yZWFkKHMtPm9wYXF1ZSwgYWRkciAmIH4xKTsKKyNpZiBkZWZpbmVkKERFQlVHX0VN VUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIG9yaWdf dmFsICUwOHggPT4gdmFsICUwOHhcbiIsIF9fZnVuY19fLAorICAgICAgICAgICBhZGRyLCBvcmln X3ZhbCwgdmFsKTsKKyNlbmRpZgorICAgIHN3aXRjaCAoYWRkciAmIDEpIHsKKyAgICBjYXNlIDA6 CisgICAgICAgIG9yaWdfdmFsICY9IDB4ZmYwMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAx OgorICAgICAgICBvcmlnX3ZhbCAmPSAweDAwZmY7CisgICAgICAgIHZhbCA8PD0gODsKKyAgICAg ICAgYnJlYWs7CisgICAgfQorICAgIHZhbCB8PSBvcmlnX3ZhbDsKKyAgICBzLT5tZW1fd3JpdGUo cy0+b3BhcXVlLCBhZGRyICYgfjEsIHZhbCk7Cit9CisKK3N0YXRpYyB2b2lkIGVtdWxhdGVkX3dy aXRlYl93X2JlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwpCit7CisgICAgZW11bGF0ZWRf aW8gKnMgPSBvcGFxdWU7CisgICAgdWludDMyX3Qgb3JpZ192YWw7CisKKyAgICBvcmlnX3ZhbCA9 IHMtPm1lbV9yZWFkKHMtPm9wYXF1ZSwgYWRkciAmIH4xKTsKKyNpZiBkZWZpbmVkKERFQlVHX0VN VUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIG9yaWdf dmFsICUwOHggPT4gdmFsICUwOHhcbiIsIF9fZnVuY19fLAorICAgICAgICAgICBhZGRyLCBvcmln X3ZhbCwgdmFsKTsKKyNlbmRpZgorICAgIHN3aXRjaCAoYWRkciAmIDEpIHsKKyAgICBjYXNlIDA6 CisgICAgICAgIG9yaWdfdmFsICY9IDB4MDBmZjsKKyAgICAgICAgdmFsIDw8PSA4OworICAgICAg ICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIG9yaWdfdmFsICY9IDB4ZmYwMDsKKyAgICAg ICAgYnJlYWs7CisgICAgfQorICAgIHZhbCB8PSBvcmlnX3ZhbDsKKyAgICBzLT5tZW1fd3JpdGUo cy0+b3BhcXVlLCBhZGRyICYgfjEsIHZhbCk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBlbXVsYXRl ZF9yZWFkd193X2xlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7Cisg ICAgZW11bGF0ZWRfaW8gKnMgPSBvcGFxdWU7CisgICAgdWludDMyX3QgcmV0OworCisgICAgcmV0 ID0gY3B1X3RvX2xlMTYocy0+bWVtX3JlYWQocy0+b3BhcXVlLCBhZGRyICYgfjEpKTsKKyNpZiBk ZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRf Rk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0KTsKKyNlbmRpZgorICAg IHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBlbXVsYXRlZF9yZWFkd193X2JlKHZv aWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7CisgICAgZW11bGF0ZWRfaW8g KnMgPSBvcGFxdWU7CisgICAgdWludDMyX3QgcmV0OworCisgICAgcmV0ID0gY3B1X3RvX2JlMTYo cy0+bWVtX3JlYWQocy0+b3BhcXVlLCBhZGRyICYgfjEpKTsKKyNpZiBkZWZpbmVkKERFQlVHX0VN VUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAl MDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0KTsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyB2b2lkIGVtdWxhdGVkX3dyaXRld193X2xlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0 X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCB2YWwpCit7CisgICAgZW11bGF0ZWRfaW8gKnMgPSBvcGFxdWU7CisKKyNpZiBkZWZpbmVk KERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3Bs eCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgdmFsKTsKKyNlbmRpZgorICAgIHMtPm1l bV93cml0ZShzLT5vcGFxdWUsIGFkZHIsIGxlMTZfdG9fY3B1KHZhbCkpOworfQorCitzdGF0aWMg dm9pZCBlbXVsYXRlZF93cml0ZXdfd19iZSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJf dCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsKQor eworICAgIGVtdWxhdGVkX2lvICpzID0gb3BhcXVlOworCisjaWYgZGVmaW5lZChERUJVR19FTVVM QVRFRF9JTykKKyAgICBwcmludGYoIiVzOiBhZGRyICIgVEFSR0VUX0ZNVF9wbHggIiB2YWwgJTA4 eFxuIiwgX19mdW5jX18sIGFkZHIsIHZhbCk7CisjZW5kaWYKKyAgICBzLT5tZW1fd3JpdGUocy0+ b3BhcXVlLCBhZGRyLCBiZTE2X3RvX2NwdSh2YWwpKTsKK30KKworc3RhdGljIHVpbnQzMl90IGVt dWxhdGVkX3JlYWRsX3dfbGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikK K3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9IG9wYXF1ZTsKKyAgICB1aW50MzJfdCByZXQ7CisKKyAg ICByZXQgPSBzLT5tZW1fcmVhZChzLT5vcGFxdWUsIGFkZHIgJiAxKTsKKyAgICByZXQgfD0gcy0+ bWVtX3JlYWQocy0+b3BhcXVlLCAoYWRkciAmIDEpICsgMikgPDwgMTY7CisjaWYgZGVmaW5lZChE RUJVR19FTVVMQVRFRF9JTykKKyAgICBwcmludGYoIiVzOiBhZGRyICIgVEFSR0VUX0ZNVF9wbHgg IiB2YWwgJTA4eFxuIiwgX19mdW5jX18sIGFkZHIsIHJldCk7CisjZW5kaWYKKyAgICByZXR1cm4g cmV0OworfQorCitzdGF0aWMgdWludDMyX3QgZW11bGF0ZWRfcmVhZGxfd19iZSh2b2lkICpvcGFx dWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQoreworICAgIGVtdWxhdGVkX2lvICpzID0gb3Bh cXVlOworICAgIHVpbnQzMl90IHJldDsKKworICAgIHJldCA9IHMtPm1lbV9yZWFkKHMtPm9wYXF1 ZSwgYWRkciAmIDEpIDw8IDE2OworICAgIHJldCB8PSBzLT5tZW1fcmVhZChzLT5vcGFxdWUsIChh ZGRyICYgMSkgKyAyKTsKKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50 ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRk ciwgcmV0KTsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGVtdWxh dGVkX3dyaXRlbF93X2xlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwpCit7CisgICAgZW11 bGF0ZWRfaW8gKnMgPSBvcGFxdWU7CisKKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQor ICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1 bmNfXywgYWRkciwgdmFsKTsKKyNlbmRpZgorICAgIHMtPm1lbV93cml0ZShzLT5vcGFxdWUsIChh ZGRyICYgMSksIHZhbCk7CisgICAgcy0+bWVtX3dyaXRlKHMtPm9wYXF1ZSwgKGFkZHIgJiAxKSAr IDIsIHZhbCA+PiAxNik7Cit9CisKK3N0YXRpYyB2b2lkIGVtdWxhdGVkX3dyaXRlbF93X2JlKHZv aWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCB2YWwpCit7CisgICAgZW11bGF0ZWRfaW8gKnMgPSBvcGFx dWU7CisKKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFk ZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgdmFsKTsK KyNlbmRpZgorICAgIHMtPm1lbV93cml0ZShzLT5vcGFxdWUsIChhZGRyICYgMSksIHZhbCA+PiAx Nik7CisgICAgcy0+bWVtX3dyaXRlKHMtPm9wYXF1ZSwgKGFkZHIgJiAxKSArIDIsIHZhbCk7Cit9 CisKK2ludCBjcHVfcmVnaXN0ZXJfMTZiaXRfaW9fbWVtb3J5KGludCBpb19pbmRleCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVJlYWRNZW1vcnlGdW5jICptZW1fcmVhZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVdyaXRlTWVtb3J5RnVuYyAqbWVt X3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlLCBp bnQgZW11bGF0ZV9vdGhlcl93aWR0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgaXNfbGUpCit7CisgICAgaWYgKGlvX2luZGV4IDw9IDApIHsKKyAgICAgICAgaW9faW5k ZXggPSBnZXRfZnJlZV9pb19tZW1faWR4KCk7CisgICAgICAgIGlmIChpb19pbmRleCA9PSAtMSkK KyAgICAgICAgICAgIHJldHVybiBpb19pbmRleDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo aW9faW5kZXggPj0gSU9fTUVNX05CX0VOVFJJRVMpCisgICAgICAgICAgICByZXR1cm4gLTE7Cisg ICAgfQorCisKKyAgICBpZiAoZW11bGF0ZV9vdGhlcl93aWR0aHMpIHsKKyAgICAgICAgZW11bGF0 ZWRfaW8gKnM7CisKKyAgICAgICAgcyA9IHFlbXVfbWFsbG9jeihzaXplb2YoZW11bGF0ZWRfaW8p KTsKKworICAgICAgICBpZiAoaXNfbGUpIHsKKyAgICAgICAgICAgIGlvX21lbV9yZWFkW2lvX2lu ZGV4XVswXSA9IGVtdWxhdGVkX3JlYWRiX3dfbGU7CisgICAgICAgICAgICBpb19tZW1fd3JpdGVb aW9faW5kZXhdWzBdID0gZW11bGF0ZWRfd3JpdGViX3dfbGU7CisgICAgICAgICAgICBpb19tZW1f cmVhZFtpb19pbmRleF1bMV0gPSBlbXVsYXRlZF9yZWFkd193X2xlOworICAgICAgICAgICAgaW9f bWVtX3dyaXRlW2lvX2luZGV4XVsxXSA9IGVtdWxhdGVkX3dyaXRld193X2xlOworICAgICAgICAg ICAgaW9fbWVtX3JlYWRbaW9faW5kZXhdWzJdID0gZW11bGF0ZWRfcmVhZGxfd19sZTsKKyAgICAg ICAgICAgIGlvX21lbV93cml0ZVtpb19pbmRleF1bMl0gPSBlbXVsYXRlZF93cml0ZWxfd19sZTsK KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlvX21lbV9yZWFkW2lvX2luZGV4XVswXSA9 IGVtdWxhdGVkX3JlYWRiX3dfYmU7CisgICAgICAgICAgICBpb19tZW1fd3JpdGVbaW9faW5kZXhd WzBdID0gZW11bGF0ZWRfd3JpdGViX3dfYmU7CisgICAgICAgICAgICBpb19tZW1fcmVhZFtpb19p bmRleF1bMV0gPSBlbXVsYXRlZF9yZWFkd193X2JlOworICAgICAgICAgICAgaW9fbWVtX3dyaXRl W2lvX2luZGV4XVsxXSA9IGVtdWxhdGVkX3dyaXRld193X2JlOworICAgICAgICAgICAgaW9fbWVt X3JlYWRbaW9faW5kZXhdWzJdID0gZW11bGF0ZWRfcmVhZGxfd19iZTsKKyAgICAgICAgICAgIGlv X21lbV93cml0ZVtpb19pbmRleF1bMl0gPSBlbXVsYXRlZF93cml0ZWxfd19iZTsKKyAgICAgICAg fQorICAgICAgICBzLT5vcGFxdWUgPSBvcGFxdWU7CisgICAgICAgIHMtPm1lbV9yZWFkID0gbWVt X3JlYWQ7CisgICAgICAgIHMtPm1lbV93cml0ZSA9IG1lbV93cml0ZTsKKyAgICAgICAgaW9fbWVt X29wYXF1ZVtpb19pbmRleF0gPSBzOworICAgIH0gZWxzZSB7CisgICAgICAgIGlvX21lbV9yZWFk W2lvX2luZGV4XVsxXSA9IG1lbV9yZWFkOworICAgICAgICBpb19tZW1fd3JpdGVbaW9faW5kZXhd WzFdID0gbWVtX3dyaXRlOworICAgICAgICBpb19tZW1fb3BhcXVlW2lvX2luZGV4XSA9IG9wYXF1 ZTsKKyAgICB9CisKKyAgICByZXR1cm4gaW9faW5kZXggPDwgSU9fTUVNX1NISUZUOworfQorCisv KiBFbXVsYXRpb24gZm9yIG5vbi1uYXRpdmUgYWNjZXNzZXMgZm9yIDMyIGJpdCBkZXZpY2VzICov CitzdGF0aWMgdWludDMyX3QgZW11bGF0ZWRfcmVhZGJfbF9sZSh2b2lkICpvcGFxdWUsIHRhcmdl dF9waHlzX2FkZHJfdCBhZGRyKQoreworICAgIGVtdWxhdGVkX2lvICpzID0gb3BhcXVlOworICAg IHVpbnQzMl90IHJldDsKKworICAgIHJldCA9IHMtPm1lbV9yZWFkKHMtPm9wYXF1ZSwgYWRkciAm IH4zKTsKKyAgICBzd2l0Y2ggKGFkZHIgJiAzKSB7CisgICAgY2FzZSAwOgorICAgICAgICBicmVh azsKKyAgICBjYXNlIDE6CisgICAgICAgIHJldCA+Pj0gODsKKyAgICAgICAgYnJlYWs7CisgICAg Y2FzZSAyOgorICAgICAgICByZXQgPj49IDE2OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6 CisgICAgICAgIHJldCA+Pj0gMjQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyNpZiBkZWZpbmVk KERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3Bs eCAiIHZhbCAlMDh4XG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0KTsKKyNlbmRpZgorICAgIHJldHVy biByZXQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBlbXVsYXRlZF9yZWFkYl9sX2JlKHZvaWQgKm9w YXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7CisgICAgZW11bGF0ZWRfaW8gKnMgPSBv cGFxdWU7CisgICAgdWludDMyX3QgcmV0OworCisgICAgcmV0ID0gcy0+bWVtX3JlYWQocy0+b3Bh cXVlLCBhZGRyICYgfjMpOworICAgIHN3aXRjaCAoYWRkciAmIDMpIHsKKyAgICBjYXNlIDA6Cisg ICAgICAgIHJldCA+Pj0gMjQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAg cmV0ID4+PSAxNjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICByZXQgPj49 IDg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgYnJlYWs7CisgICAgfQor I2lmIGRlZmluZWQoREVCVUdfRU1VTEFURURfSU8pCisgICAgcHJpbnRmKCIlczogYWRkciAiIFRB UkdFVF9GTVRfcGx4ICIgdmFsICUwOHhcbiIsIF9fZnVuY19fLCBhZGRyLCByZXQpOworI2VuZGlm CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgZW11bGF0ZWRfd3JpdGViX2xfbGUo dm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCkKK3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9IG9w YXF1ZTsKKyAgICB1aW50MzJfdCBvcmlnX3ZhbDsKKworICAgIG9yaWdfdmFsID0gcy0+bWVtX3Jl YWQocy0+b3BhcXVlLCBhZGRyICYgfjMpOworICAgIHN3aXRjaCAoYWRkciAmIDMpIHsKKyAgICBj YXNlIDA6CisgICAgICAgIG9yaWdfdmFsICY9IDB4ZmZmZmZmMDA7CisgICAgICAgIGJyZWFrOwor ICAgIGNhc2UgMToKKyAgICAgICAgb3JpZ192YWwgJj0gMHhmZmZmMDBmZjsKKyAgICAgICAgdmFs IDw8PSA4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIG9yaWdfdmFsICY9 IDB4ZmYwMGZmZmY7CisgICAgICAgIHZhbCA8PD0gMTY7CisgICAgICAgIGJyZWFrOworICAgIGNh c2UgMzoKKyAgICAgICAgb3JpZ192YWwgJj0gMHgwMGZmZmZmZjsKKyAgICAgICAgdmFsIDw8PSAy NDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHZhbCB8PSBvcmlnX3ZhbDsKKyNpZiBkZWZp bmVkKERFQlVHX0VNVUxBVEVEX0lPKQorICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1U X3BseCAiIG9yaWdfdmFsICUwOHggPT4gdmFsICUwOHhcbiIsIF9fZnVuY19fLAorICAgICAgICAg ICBhZGRyLCBvcmlnX3ZhbCwgdmFsKTsKKyNlbmRpZgorICAgIHMtPm1lbV93cml0ZShzLT5vcGFx dWUsIGFkZHIgJiB+MywgdmFsKTsKK30KKworc3RhdGljIHZvaWQgZW11bGF0ZWRfd3JpdGViX2xf YmUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCkKK3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9 IG9wYXF1ZTsKKyAgICB1aW50MzJfdCBvcmlnX3ZhbDsKKworICAgIG9yaWdfdmFsID0gcy0+bWVt X3JlYWQocy0+b3BhcXVlLCBhZGRyICYgfjEpOworI2lmIGRlZmluZWQoREVCVUdfRU1VTEFURURf SU8pCisgICAgcHJpbnRmKCIlczogYWRkciAiIFRBUkdFVF9GTVRfcGx4ICIgb3JpZ192YWwgJTA4 eCA9PiB2YWwgJTA4eFxuIiwgX19mdW5jX18sCisgICAgICAgICAgIGFkZHIsIG9yaWdfdmFsLCB2 YWwpOworI2VuZGlmCisgICAgc3dpdGNoIChhZGRyICYgMykgeworICAgIGNhc2UgMDoKKyAgICAg ICAgb3JpZ192YWwgJj0gMHgwMGZmZmZmZjsKKyAgICAgICAgdmFsIDw8PSAyNDsKKyAgICAgICAg YnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICBvcmlnX3ZhbCAmPSAweGZmMDBmZmZmOworICAg ICAgICB2YWwgPDw9IDE2OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIG9y aWdfdmFsICY9IDB4ZmZmZjAwZmY7CisgICAgICAgIHZhbCA8PD0gODsKKyAgICAgICAgYnJlYWs7 CisgICAgY2FzZSAzOgorICAgICAgICBvcmlnX3ZhbCAmPSAweGZmZmZmZjAwOworICAgICAgICBi cmVhazsKKyAgICB9CisgICAgdmFsIHw9IG9yaWdfdmFsOworICAgIHMtPm1lbV93cml0ZShzLT5v cGFxdWUsIGFkZHIgJiB+MSwgdmFsKTsKK30KKworc3RhdGljIHVpbnQzMl90IGVtdWxhdGVkX3Jl YWR3X2xfbGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKK3sKKyAgICBl bXVsYXRlZF9pbyAqcyA9IG9wYXF1ZTsKKyAgICB1aW50MzJfdCByZXQ7CisKKyAgICByZXQgPSBj cHVfdG9fbGUzMihzLT5tZW1fcmVhZChzLT5vcGFxdWUsIGFkZHIgJiB+MykpOworICAgIHN3aXRj aCAoYWRkciAmIDIpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoK KyAgICAgICAgcmV0ID4+PSAxNjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2lmIGRlZmluZWQo REVCVUdfRU1VTEFURURfSU8pCisgICAgcHJpbnRmKCIlczogYWRkciAiIFRBUkdFVF9GTVRfcGx4 ICIgdmFsICUwOHhcbiIsIF9fZnVuY19fLCBhZGRyLCByZXQpOworI2VuZGlmCisgICAgcmV0dXJu IHJldDsKK30KKworc3RhdGljIHVpbnQzMl90IGVtdWxhdGVkX3JlYWR3X2xfYmUodm9pZCAqb3Bh cXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKK3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9IG9w YXF1ZTsKKyAgICB1aW50MzJfdCByZXQ7CisKKyAgICByZXQgPSBjcHVfdG9fbGUzMihzLT5tZW1f cmVhZChzLT5vcGFxdWUsIGFkZHIgJiB+MykpOworICAgIHN3aXRjaCAoYWRkciAmIDIpIHsKKyAg ICBjYXNlIDA6CisgICAgICAgIHJldCA+Pj0gMTY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug MjoKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2lmIGRlZmluZWQoREVCVUdfRU1VTEFURURfSU8p CisgICAgcHJpbnRmKCIlczogYWRkciAiIFRBUkdFVF9GTVRfcGx4ICIgdmFsICUwOHhcbiIsIF9f ZnVuY19fLCBhZGRyLCByZXQpOworI2VuZGlmCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGlj IHZvaWQgZW11bGF0ZWRfd3JpdGV3X2xfbGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRy X3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCkK K3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9IG9wYXF1ZTsKKyAgICB1aW50MzJfdCBvcmlnX3ZhbDsK KworICAgIG9yaWdfdmFsID0gcy0+bWVtX3JlYWQocy0+b3BhcXVlLCBhZGRyICYgfjMpOworICAg IHN3aXRjaCAoYWRkciAmIDIpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIG9yaWdfdmFsICY9IDB4 ZmZmZjAwMDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgb3JpZ192YWwg Jj0gMHgwMDAwZmZmZjsKKyAgICAgICAgdmFsIDw8PSAxNjsKKyAgICAgICAgYnJlYWs7CisgICAg fQorICAgIHZhbCB8PSBvcmlnX3ZhbDsKKyNpZiBkZWZpbmVkKERFQlVHX0VNVUxBVEVEX0lPKQor ICAgIHByaW50ZigiJXM6IGFkZHIgIiBUQVJHRVRfRk1UX3BseCAiIHZhbCAlMDh4XG4iLCBfX2Z1 bmNfXywgYWRkciwgdmFsKTsKKyNlbmRpZgorICAgIHMtPm1lbV93cml0ZShzLT5vcGFxdWUsIGFk ZHIsIGxlMzJfdG9fY3B1KHZhbCkpOworfQorCitzdGF0aWMgdm9pZCBlbXVsYXRlZF93cml0ZXdf bF9iZSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsKQoreworICAgIGVtdWxhdGVkX2lvICpz ID0gb3BhcXVlOworICAgIHVpbnQzMl90IG9yaWdfdmFsOworCisgICAgb3JpZ192YWwgPSBzLT5t ZW1fcmVhZChzLT5vcGFxdWUsIGFkZHIgJiB+Myk7CisgICAgc3dpdGNoIChhZGRyICYgMikgewor ICAgIGNhc2UgMDoKKyAgICAgICAgb3JpZ192YWwgJj0gMHgwMDAwZmZmZjsKKyAgICAgICAgdmFs IDw8PSAxNjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBvcmlnX3ZhbCAm PSAweGZmZmYwMDAwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgdmFsIHw9IG9yaWdfdmFs OworI2lmIGRlZmluZWQoREVCVUdfRU1VTEFURURfSU8pCisgICAgcHJpbnRmKCIlczogYWRkciAi IFRBUkdFVF9GTVRfcGx4ICIgdmFsICUwOHhcbiIsIF9fZnVuY19fLCBhZGRyLCB2YWwpOworI2Vu ZGlmCisgICAgcy0+bWVtX3dyaXRlKHMtPm9wYXF1ZSwgYWRkciwgYmUzMl90b19jcHUodmFsKSk7 Cit9CisKK3N0YXRpYyB1aW50MzJfdCBlbXVsYXRlZF9yZWFkbF9sX2xlKHZvaWQgKm9wYXF1ZSwg dGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7CisgICAgZW11bGF0ZWRfaW8gKnMgPSBvcGFxdWU7 CisgICAgdWludDMyX3QgcmV0OworCisgICAgcmV0ID0gY3B1X3RvX2xlMzIocy0+bWVtX3JlYWQo cy0+b3BhcXVlLCBhZGRyICYgMykpOworI2lmIGRlZmluZWQoREVCVUdfRU1VTEFURURfSU8pCisg ICAgcHJpbnRmKCIlczogYWRkciAiIFRBUkdFVF9GTVRfcGx4ICIgdmFsICUwOHhcbiIsIF9fZnVu Y19fLCBhZGRyLCByZXQpOworI2VuZGlmCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHVp bnQzMl90IGVtdWxhdGVkX3JlYWRsX2xfYmUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRy X3QgYWRkcikKK3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9IG9wYXF1ZTsKKyAgICB1aW50MzJfdCBy ZXQ7CisKKyAgICByZXQgPSBjcHVfdG9fYmUzMihzLT5tZW1fcmVhZChzLT5vcGFxdWUsIGFkZHIg JiAzKSk7CisjaWYgZGVmaW5lZChERUJVR19FTVVMQVRFRF9JTykKKyAgICBwcmludGYoIiVzOiBh ZGRyICIgVEFSR0VUX0ZNVF9wbHggIiB2YWwgJTA4eFxuIiwgX19mdW5jX18sIGFkZHIsIHJldCk7 CisjZW5kaWYKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBlbXVsYXRlZF93cml0 ZWxfbF9sZSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsKQoreworICAgIGVtdWxhdGVkX2lv ICpzID0gb3BhcXVlOworCisjaWYgZGVmaW5lZChERUJVR19FTVVMQVRFRF9JTykKKyAgICBwcmlu dGYoIiVzOiBhZGRyICIgVEFSR0VUX0ZNVF9wbHggIiB2YWwgJTA4eFxuIiwgX19mdW5jX18sIGFk ZHIsIHZhbCk7CisjZW5kaWYKKyAgICBzLT5tZW1fd3JpdGUocy0+b3BhcXVlLCAoYWRkciAmIDMp LCBsZTMyX3RvX2NwdSh2YWwpKTsKK30KKworc3RhdGljIHZvaWQgZW11bGF0ZWRfd3JpdGVsX2xf YmUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCkKK3sKKyAgICBlbXVsYXRlZF9pbyAqcyA9 IG9wYXF1ZTsKKworI2lmIGRlZmluZWQoREVCVUdfRU1VTEFURURfSU8pCisgICAgcHJpbnRmKCIl czogYWRkciAiIFRBUkdFVF9GTVRfcGx4ICIgdmFsICUwOHhcbiIsIF9fZnVuY19fLCBhZGRyLCB2 YWwpOworI2VuZGlmCisgICAgcy0+bWVtX3dyaXRlKHMtPm9wYXF1ZSwgKGFkZHIgJiAzKSwgYmUz Ml90b19jcHUodmFsKSk7Cit9CisKK2ludCBjcHVfcmVnaXN0ZXJfMzJiaXRfaW9fbWVtb3J5KGlu dCBpb19pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVJlYWRNZW1v cnlGdW5jICptZW1fcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVVdy aXRlTWVtb3J5RnVuYyAqbWVtX3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdm9pZCAqb3BhcXVlLCBpbnQgZW11bGF0ZV9vdGhlcl93aWR0aHMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgaXNfbGUpCit7CisgICAgaWYgKGlvX2luZGV4IDw9IDAp IHsKKyAgICAgICAgaW9faW5kZXggPSBnZXRfZnJlZV9pb19tZW1faWR4KCk7CisgICAgICAgIGlm IChpb19pbmRleCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBpb19pbmRleDsKKyAgICB9IGVs c2UgeworICAgICAgICBpZiAoaW9faW5kZXggPj0gSU9fTUVNX05CX0VOVFJJRVMpCisgICAgICAg ICAgICByZXR1cm4gLTE7CisgICAgfQorCisKKyAgICBpZiAoZW11bGF0ZV9vdGhlcl93aWR0aHMp IHsKKyAgICAgICAgZW11bGF0ZWRfaW8gKnM7CisKKyAgICAgICAgcyA9IHFlbXVfbWFsbG9jeihz aXplb2YoZW11bGF0ZWRfaW8pKTsKKworICAgICAgICBpZiAoaXNfbGUpIHsKKyAgICAgICAgICAg IGlvX21lbV9yZWFkW2lvX2luZGV4XVswXSA9IGVtdWxhdGVkX3JlYWRiX2xfbGU7CisgICAgICAg ICAgICBpb19tZW1fd3JpdGVbaW9faW5kZXhdWzBdID0gZW11bGF0ZWRfd3JpdGViX2xfbGU7Cisg ICAgICAgICAgICBpb19tZW1fcmVhZFtpb19pbmRleF1bMV0gPSBlbXVsYXRlZF9yZWFkd19sX2xl OworICAgICAgICAgICAgaW9fbWVtX3dyaXRlW2lvX2luZGV4XVsxXSA9IGVtdWxhdGVkX3dyaXRl d19sX2xlOworICAgICAgICAgICAgaW9fbWVtX3JlYWRbaW9faW5kZXhdWzJdID0gZW11bGF0ZWRf cmVhZGxfbF9sZTsKKyAgICAgICAgICAgIGlvX21lbV93cml0ZVtpb19pbmRleF1bMl0gPSBlbXVs YXRlZF93cml0ZWxfbF9sZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlvX21lbV9y ZWFkW2lvX2luZGV4XVswXSA9IGVtdWxhdGVkX3JlYWRiX2xfYmU7CisgICAgICAgICAgICBpb19t ZW1fd3JpdGVbaW9faW5kZXhdWzBdID0gZW11bGF0ZWRfd3JpdGViX2xfYmU7CisgICAgICAgICAg ICBpb19tZW1fcmVhZFtpb19pbmRleF1bMV0gPSBlbXVsYXRlZF9yZWFkd19sX2JlOworICAgICAg ICAgICAgaW9fbWVtX3dyaXRlW2lvX2luZGV4XVsxXSA9IGVtdWxhdGVkX3dyaXRld19sX2JlOwor ICAgICAgICAgICAgaW9fbWVtX3JlYWRbaW9faW5kZXhdWzJdID0gZW11bGF0ZWRfcmVhZGxfbF9i ZTsKKyAgICAgICAgICAgIGlvX21lbV93cml0ZVtpb19pbmRleF1bMl0gPSBlbXVsYXRlZF93cml0 ZWxfbF9iZTsKKyAgICAgICAgfQorICAgICAgICBzLT5vcGFxdWUgPSBvcGFxdWU7CisgICAgICAg IHMtPm1lbV9yZWFkID0gbWVtX3JlYWQ7CisgICAgICAgIHMtPm1lbV93cml0ZSA9IG1lbV93cml0 ZTsKKyAgICAgICAgaW9fbWVtX29wYXF1ZVtpb19pbmRleF0gPSBzOworICAgIH0gZWxzZSB7Cisg ICAgICAgIGlvX21lbV9yZWFkW2lvX2luZGV4XVsyXSA9IG1lbV9yZWFkOworICAgICAgICBpb19t ZW1fd3JpdGVbaW9faW5kZXhdWzJdID0gbWVtX3dyaXRlOworICAgICAgICBpb19tZW1fb3BhcXVl W2lvX2luZGV4XSA9IG9wYXF1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gaW9faW5kZXggPDwgSU9f TUVNX1NISUZUOworfQorCiBzdGF0aWMgdm9pZCBpb19tZW1faW5pdCh2b2lkKQogewogICAgIGlu dCBpOwo= --000e0cd24e22af08810468ef83f9 Content-Type: application/mbox; name="Use_new_registration_functions.patch" Content-Disposition: attachment; filename="Use_new_registration_functions.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fu8ge89t VXNlIG5ldyBJTyByZWdpc3RyYXRpb24gZnVuY3Rpb25zCgpGcm9tOiBCbHVlIFN3aXJsIDxibGF1 d2lyYmVsQGdtYWlsLmNvbT4KClNpZ25lZC1vZmYtYnk6IEJsdWUgU3dpcmwgPGJsYXV3aXJiZWxA Z21haWwuY29tPgotLS0KCiBody9tNDh0NTkuYyAgICAgIHwgICA1NiArKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGh3L3BjbmV0LmMgICAgICAg fCAgIDE1ICsrLS0tLS0tLS0tLS0tCiBody9zcGFyYzMyX2RtYS5jIHwgICAxNSArKy0tLS0tLS0t LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQoK CmRpZmYgLS1naXQgYS9ody9tNDh0NTkuYyBiL2h3L200OHQ1OS5jCmluZGV4IDBjZmRhYjMuLjE3 Y2MzNjMgMTAwNjQ0Ci0tLSBhL2h3L200OHQ1OS5jCisrKyBiL2h3L200OHQ1OS5jCkBAIC01MTYs MjQgKzUxNiw2IEBAIHN0YXRpYyB2b2lkIG52cmFtX3dyaXRlYiAodm9pZCAqb3BhcXVlLCB0YXJn ZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDMyX3QgdmFsdWUpCiAgICAgbTQ4dDU5X3dyaXRlKE5W UkFNLCBhZGRyLCB2YWx1ZSAmIDB4ZmYpOwogfQogCi1zdGF0aWMgdm9pZCBudnJhbV93cml0ZXcg KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90IHZhbHVlKQot ewotICAgIG00OHQ1OV90ICpOVlJBTSA9IG9wYXF1ZTsKLQotICAgIG00OHQ1OV93cml0ZShOVlJB TSwgYWRkciwgKHZhbHVlID4+IDgpICYgMHhmZik7Ci0gICAgbTQ4dDU5X3dyaXRlKE5WUkFNLCBh ZGRyICsgMSwgdmFsdWUgJiAweGZmKTsKLX0KLQotc3RhdGljIHZvaWQgbnZyYW1fd3JpdGVsICh2 b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCB1aW50MzJfdCB2YWx1ZSkKLXsK LSAgICBtNDh0NTlfdCAqTlZSQU0gPSBvcGFxdWU7Ci0KLSAgICBtNDh0NTlfd3JpdGUoTlZSQU0s IGFkZHIsICh2YWx1ZSA+PiAyNCkgJiAweGZmKTsKLSAgICBtNDh0NTlfd3JpdGUoTlZSQU0sIGFk ZHIgKyAxLCAodmFsdWUgPj4gMTYpICYgMHhmZik7Ci0gICAgbTQ4dDU5X3dyaXRlKE5WUkFNLCBh ZGRyICsgMiwgKHZhbHVlID4+IDgpICYgMHhmZik7Ci0gICAgbTQ4dDU5X3dyaXRlKE5WUkFNLCBh ZGRyICsgMywgdmFsdWUgJiAweGZmKTsKLX0KLQogc3RhdGljIHVpbnQzMl90IG52cmFtX3JlYWRi ICh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewogICAgIG00OHQ1OV90 ICpOVlJBTSA9IG9wYXF1ZTsKQEAgLTU0Myw0MCArNTI1LDYgQEAgc3RhdGljIHVpbnQzMl90IG52 cmFtX3JlYWRiICh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogICAgIHJl dHVybiByZXR2YWw7CiB9CiAKLXN0YXRpYyB1aW50MzJfdCBudnJhbV9yZWFkdyAodm9pZCAqb3Bh cXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKLXsKLSAgICBtNDh0NTlfdCAqTlZSQU0gPSBv cGFxdWU7Ci0gICAgdWludDMyX3QgcmV0dmFsOwotCi0gICAgcmV0dmFsID0gbTQ4dDU5X3JlYWQo TlZSQU0sIGFkZHIpIDw8IDg7Ci0gICAgcmV0dmFsIHw9IG00OHQ1OV9yZWFkKE5WUkFNLCBhZGRy ICsgMSk7Ci0gICAgcmV0dXJuIHJldHZhbDsKLX0KLQotc3RhdGljIHVpbnQzMl90IG52cmFtX3Jl YWRsICh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQotewotICAgIG00OHQ1 OV90ICpOVlJBTSA9IG9wYXF1ZTsKLSAgICB1aW50MzJfdCByZXR2YWw7Ci0KLSAgICByZXR2YWwg PSBtNDh0NTlfcmVhZChOVlJBTSwgYWRkcikgPDwgMjQ7Ci0gICAgcmV0dmFsIHw9IG00OHQ1OV9y ZWFkKE5WUkFNLCBhZGRyICsgMSkgPDwgMTY7Ci0gICAgcmV0dmFsIHw9IG00OHQ1OV9yZWFkKE5W UkFNLCBhZGRyICsgMikgPDwgODsKLSAgICByZXR2YWwgfD0gbTQ4dDU5X3JlYWQoTlZSQU0sIGFk ZHIgKyAzKTsKLSAgICByZXR1cm4gcmV0dmFsOwotfQotCi1zdGF0aWMgQ1BVV3JpdGVNZW1vcnlG dW5jICpudnJhbV93cml0ZVtdID0gewotICAgICZudnJhbV93cml0ZWIsCi0gICAgJm52cmFtX3dy aXRldywKLSAgICAmbnZyYW1fd3JpdGVsLAotfTsKLQotc3RhdGljIENQVVJlYWRNZW1vcnlGdW5j ICpudnJhbV9yZWFkW10gPSB7Ci0gICAgJm52cmFtX3JlYWRiLAotICAgICZudnJhbV9yZWFkdywK LSAgICAmbnZyYW1fcmVhZGwsCi19OwotCiBzdGF0aWMgdm9pZCBtNDh0NTlfc2F2ZShRRU1VRmls ZSAqZiwgdm9pZCAqb3BhcXVlKQogewogICAgIG00OHQ1OV90ICpzID0gb3BhcXVlOwpAQCAtNjMy LDcgKzU4MCw5IEBAIG00OHQ1OV90ICptNDh0NTlfaW5pdCAocWVtdV9pcnEgSVJRLCB0YXJnZXRf cGh5c19hZGRyX3QgbWVtX2Jhc2UsCiAgICAgICAgIHJlZ2lzdGVyX2lvcG9ydF93cml0ZShpb19i YXNlLCAweDA0LCAxLCBOVlJBTV93cml0ZWIsIHMpOwogICAgIH0KICAgICBpZiAobWVtX2Jhc2Ug IT0gMCkgewotICAgICAgICBzLT5tZW1faW5kZXggPSBjcHVfcmVnaXN0ZXJfaW9fbWVtb3J5KDAs IG52cmFtX3JlYWQsIG52cmFtX3dyaXRlLCBzKTsKKyAgICAgICAgcy0+bWVtX2luZGV4ID0gY3B1 X3JlZ2lzdGVyXzhiaXRfaW9fbWVtb3J5KDAsIG52cmFtX3JlYWRiLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZyYW1fd3JpdGViLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgMSwgMSk7CiAg ICAgICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkobWVtX2Jhc2UsIHNpemUsIHMtPm1l bV9pbmRleCk7CiAgICAgfQogICAgIGlmICh0eXBlID09IDU5KSB7CmRpZmYgLS1naXQgYS9ody9w Y25ldC5jIGIvaHcvcGNuZXQuYwppbmRleCA2NTQzNDBiLi5jNjljNDUxIDEwMDY0NAotLS0gYS9o dy9wY25ldC5jCisrKyBiL2h3L3BjbmV0LmMKQEAgLTIxMDAsMTggKzIxMDAsNiBAQCBzdGF0aWMg dWludDMyX3QgbGFuY2VfbWVtX3JlYWR3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90 IGFkZHIpCiAgICAgcmV0dXJuIHZhbCAmIDB4ZmZmZjsKIH0KIAotc3RhdGljIENQVVJlYWRNZW1v cnlGdW5jICpsYW5jZV9tZW1fcmVhZFszXSA9IHsKLSAgICBOVUxMLAotICAgIGxhbmNlX21lbV9y ZWFkdywKLSAgICBOVUxMLAotfTsKLQotc3RhdGljIENQVVdyaXRlTWVtb3J5RnVuYyAqbGFuY2Vf bWVtX3dyaXRlWzNdID0gewotICAgIE5VTEwsCi0gICAgbGFuY2VfbWVtX3dyaXRldywKLSAgICBO VUxMLAotfTsKLQogc3RhdGljIHZvaWQgbGFuY2VfY2xlYW51cChWTEFOQ2xpZW50U3RhdGUgKnZj KQogewogICAgIFBDTmV0U3RhdGUgKmQgPSB2Yy0+b3BhcXVlOwpAQCAtMjEzNSw3ICsyMTIzLDgg QEAgdm9pZCBsYW5jZV9pbml0KE5JQ0luZm8gKm5kLCB0YXJnZXRfcGh5c19hZGRyX3QgbGVhZGRy LCB2b2lkICpkbWFfb3BhcXVlLAogICAgIGQgPSBxZW11X21hbGxvY3ooc2l6ZW9mKFBDTmV0U3Rh dGUpKTsKIAogICAgIGQtPm1taW9faW5kZXggPQotICAgICAgICBjcHVfcmVnaXN0ZXJfaW9fbWVt b3J5KDAsIGxhbmNlX21lbV9yZWFkLCBsYW5jZV9tZW1fd3JpdGUsIGQpOworICAgICAgICBjcHVf cmVnaXN0ZXJfMTZiaXRfaW9fbWVtb3J5KDAsIGxhbmNlX21lbV9yZWFkdywgbGFuY2VfbWVtX3dy aXRldywgZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7CiAK ICAgICBkLT5kbWFfb3BhcXVlID0gZG1hX29wYXF1ZTsKIApkaWZmIC0tZ2l0IGEvaHcvc3BhcmMz Ml9kbWEuYyBiL2h3L3NwYXJjMzJfZG1hLmMKaW5kZXggYjE0OTVkZC4uNzU3ZjdlZiAxMDA2NDQK LS0tIGEvaHcvc3BhcmMzMl9kbWEuYworKysgYi9ody9zcGFyYzMyX2RtYS5jCkBAIC0xOTksMTgg KzE5OSw2IEBAIHN0YXRpYyB2b2lkIGRtYV9tZW1fd3JpdGVsKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0 X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90IHZhbCkKICAgICBzLT5kbWFyZWdzW3NhZGRyXSA9 IHZhbDsKIH0KIAotc3RhdGljIENQVVJlYWRNZW1vcnlGdW5jICpkbWFfbWVtX3JlYWRbM10gPSB7 Ci0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIGRtYV9tZW1fcmVhZGwsCi19OwotCi1zdGF0aWMg Q1BVV3JpdGVNZW1vcnlGdW5jICpkbWFfbWVtX3dyaXRlWzNdID0gewotICAgIE5VTEwsCi0gICAg TlVMTCwKLSAgICBkbWFfbWVtX3dyaXRlbCwKLX07Ci0KIHN0YXRpYyB2b2lkIGRtYV9yZXNldCh2 b2lkICpvcGFxdWUpCiB7CiAgICAgRE1BU3RhdGUgKnMgPSBvcGFxdWU7CkBAIC0yNTIsNyArMjQw LDggQEAgdm9pZCAqc3BhcmMzMl9kbWFfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgZGFkZHIsIHFl bXVfaXJxIHBhcmVudF9pcnEsCiAgICAgcy0+aXJxID0gcGFyZW50X2lycTsKICAgICBzLT5pb21t dSA9IGlvbW11OwogCi0gICAgZG1hX2lvX21lbW9yeSA9IGNwdV9yZWdpc3Rlcl9pb19tZW1vcnko MCwgZG1hX21lbV9yZWFkLCBkbWFfbWVtX3dyaXRlLCBzKTsKKyAgICBkbWFfaW9fbWVtb3J5ID0g Y3B1X3JlZ2lzdGVyXzMyYml0X2lvX21lbW9yeSgwLCBkbWFfbWVtX3JlYWRsLCBkbWFfbWVtX3dy aXRlbCwgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs IDEpOwogICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoZGFkZHIsIERNQV9TSVpFLCBk bWFfaW9fbWVtb3J5KTsKIAogICAgIHJlZ2lzdGVyX3NhdmV2bSgic3BhcmMzMl9kbWEiLCBkYWRk ciwgMiwgZG1hX3NhdmUsIGRtYV9sb2FkLCBzKTsK --000e0cd24e22af08810468ef83f9--