From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IL2N8-0007eG-F0 for qemu-devel@nongnu.org; Tue, 14 Aug 2007 15:48:10 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IL2N7-0007dG-0B for qemu-devel@nongnu.org; Tue, 14 Aug 2007 15:48:10 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IL2N6-0007dD-MA for qemu-devel@nongnu.org; Tue, 14 Aug 2007 15:48:08 -0400 Received: from nf-out-0910.google.com ([64.233.182.184]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IL2N5-0000dJ-Sl for qemu-devel@nongnu.org; Tue, 14 Aug 2007 15:48:08 -0400 Received: by nf-out-0910.google.com with SMTP id 30so739679nfu for ; Tue, 14 Aug 2007 12:48:06 -0700 (PDT) Message-ID: Date: Tue, 14 Aug 2007 22:48:05 +0300 From: "Blue Swirl" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_171363_284151.1187120885899" Subject: [Qemu-devel] PATCH, RFC: Generic DMA framework Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel ------=_Part_171363_284151.1187120885899 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, The first patch implements a simple generic DMA framework. The next patches convert first Sparc32 IOMMU and then ESP and Lance. Would the framework need any changes to support other targets? Comments welcome. ------=_Part_171363_284151.1187120885899 Content-Type: text/x-diff; name=gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5ct0x1e Content-Disposition: attachment; filename="gdma.diff" SW5kZXg6IHFlbXUvdmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwuaAkyMDA3LTA4LTE0 IDE5OjI1OjUyLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5oCTIwMDctMDgtMTQgMTk6MjY6 MzQuMDAwMDAwMDAwICswMDAwCkBAIC03MzQsNiArNzM0LDUwIEBACiAKICNpbmNsdWRlICJody9p cnEuaCIKIAorLyogR2VuZXJpYyBETUEgQVBJICovCit0eXBlZGVmIHZvaWQgKCpxZW11X2RtYV9o YW5kbGVyKSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3Jp dGUpOworCit0eXBlZGVmIHN0cnVjdCBRRU1VRE1BU3RhdGUgeworICAgIHFlbXVfZG1hX2hhbmRs ZXIgaGFuZGxlcjsKKyAgICB2b2lkICpvcGFxdWU7Cit9IHFlbXVfZG1hOworCitzdGF0aWMgaW5s aW5lIHZvaWQgZG1hX21lbW9yeV9yZWFkKHFlbXVfZG1hICpkbWFfb3BhcXVlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuKQorewor ICAgIGlmIChkbWFfb3BhcXVlKQorICAgICAgICBkbWFfb3BhcXVlLT5oYW5kbGVyKGRtYV9vcGFx dWUtPm9wYXF1ZSwgYWRkciwgYnVmLCBsZW4sIDApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg ZG1hX21lbW9yeV93cml0ZShxZW11X2RtYSAqZG1hX29wYXF1ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuKQoreworICAgIGlm IChkbWFfb3BhcXVlKQorICAgICAgICBkbWFfb3BhcXVlLT5oYW5kbGVyKGRtYV9vcGFxdWUtPm9w YXF1ZSwgYWRkciwgYnVmLCBsZW4sIDEpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZG1hX21l bW9yeV9ydyhxZW11X2RtYSAqZG1hX29wYXF1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3JpdGUpCit7CisgICAgaWYg KGRtYV9vcGFxdWUpCisgICAgICAgIGRtYV9vcGFxdWUtPmhhbmRsZXIoZG1hX29wYXF1ZS0+b3Bh cXVlLCBhZGRyLCBidWYsIGxlbiwgaXNfd3JpdGUpOworfQorCitzdGF0aWMgaW5saW5lIHFlbXVf ZG1hICpxZW11X2luaXRfZG1hKHFlbXVfZG1hX2hhbmRsZXIgaGFuZGxlciwgdm9pZCAqb3BhcXVl KQoreworICAgIHFlbXVfZG1hICpzOworCisgICAgcyA9IChxZW11X2RtYSAqKXFlbXVfbWFsbG9j eihzaXplb2YocWVtdV9kbWEpKTsKKyAgICBzLT5oYW5kbGVyID0gaGFuZGxlcjsKKyAgICBzLT5v cGFxdWUgPSBvcGFxdWU7CisKKyAgICByZXR1cm4gczsKK30KKwogLyogSVNBIGJ1cyAqLwogCiBl eHRlcm4gdGFyZ2V0X3BoeXNfYWRkcl90IGlzYV9tZW1fYmFzZTsK ------=_Part_171363_284151.1187120885899 Content-Type: text/x-diff; name=sparc_gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5ct2m9n Content-Disposition: attachment; filename="sparc_gdma.diff" SW5kZXg6IHFlbXUvaHcvc3VuNG0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNG0u YwkyMDA3LTA4LTE0IDE5OjI2OjU2LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9zdW40bS5j CTIwMDctMDgtMTQgMTk6Mzc6MjAuMDAwMDAwMDAwICswMDAwCkBAIC0yODksNiArMjg5LDEyIEBA CiAgICAgc2xhdmlvX3NldF9wb3dlcl9mYWlsKHNsYXZpb19taXNjLCAxKTsKIH0KIAorc3RhdGlj IHZvaWQgc3BhcmNfZG1hX21lbW9yeV9ydyh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJf dCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGlu dCBsZW4sIGludCBpc193cml0ZSkKK3sKKyAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3J3KGFkZHIs IGJ1ZiwgbGVuLCBpc193cml0ZSk7Cit9CisKIHN0YXRpYyB2b2lkIG1haW5fY3B1X3Jlc2V0KHZv aWQgKm9wYXF1ZSkKIHsKICAgICBDUFVTdGF0ZSAqZW52ID0gb3BhcXVlOwpAQCAtMzE1LDYgKzMy MSw3IEBACiAgICAgY29uc3Qgc3BhcmNfZGVmX3QgKmRlZjsKICAgICBxZW11X2lycSAqY3B1X2ly cXNbTUFYX0NQVVNdLCAqc2xhdmlvX2lycSwgKnNsYXZpb19jcHVfaXJxLAogICAgICAgICAqZXNw ZG1hX2lycSwgKmxlZG1hX2lycTsKKyAgICBxZW11X2RtYSAqcGh5c2ljYWxfZG1hLCAqZHZtYTsK IAogICAgIC8qIGluaXQgQ1BVcyAqLwogICAgIHNwYXJjX2ZpbmRfYnlfbmFtZShjcHVfbW9kZWws ICZkZWYpOwpAQCAtMzQzLDcgKzM1MCwxMCBAQAogICAgIC8qIGFsbG9jYXRlIFJBTSAqLwogICAg IGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoMCwgUkFNX3NpemUsIDApOwogCi0gICAgaW9t bXUgPSBpb21tdV9pbml0KGh3ZGVmLT5pb21tdV9iYXNlKTsKKyAgICBwaHlzaWNhbF9kbWEgPSBx ZW11X2luaXRfZG1hKHNwYXJjX2RtYV9tZW1vcnlfcncsIE5VTEwpOworCisgICAgaW9tbXUgPSBp b21tdV9pbml0KGh3ZGVmLT5pb21tdV9iYXNlLCBwaHlzaWNhbF9kbWEsICZkdm1hKTsKKwogICAg IHNsYXZpb19pbnRjdGwgPSBzbGF2aW9faW50Y3RsX2luaXQoaHdkZWYtPmludGN0bF9iYXNlLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdkZWYtPmludGN0bF9iYXNl ICsgMHgxMDAwMFVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZo d2RlZi0+aW50Yml0X3RvX2xldmVsWzBdLApJbmRleDogcWVtdS9ody9pb21tdS5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9ody9pb21tdS5jCTIwMDctMDgtMTQgMTk6Mjc6MzUuMDAwMDAwMDAw ICswMDAwCisrKyBxZW11L2h3L2lvbW11LmMJMjAwNy0wOC0xNCAxOTozNjozMy4wMDAwMDAwMDAg KzAwMDAKQEAgLTEwNCw2ICsxMDQsNyBAQAogICAgIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyOwog ICAgIHVpbnQzMl90IHJlZ3NbSU9NTVVfTlJFR1NdOwogICAgIHRhcmdldF9waHlzX2FkZHJfdCBp b3N0YXJ0OworICAgIHFlbXVfZG1hICpwYXJlbnRfZG1hOwogfSBJT01NVVN0YXRlOwogCiBzdGF0 aWMgdWludDMyX3QgaW9tbXVfbWVtX3JlYWR3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRk cl90IGFkZHIpCkBAIC0yNDUsNiArMjQ2LDcgQEAKIHZvaWQgc3BhcmNfaW9tbXVfbWVtb3J5X3J3 KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBpc193cml0ZSkKIHsKKyAgICBJ T01NVVN0YXRlICpzID0gb3BhcXVlOwogICAgIGludCBsOwogICAgIHVpbnQzMl90IGZsYWdzOwog ICAgIHRhcmdldF9waHlzX2FkZHJfdCBwYWdlLCBwaHlzX2FkZHI7CkBAIC0yNjUsMTAgKzI2Nyw4 IEBACiAgICAgICAgICAgICAgICAgaW9tbXVfYmFkX2FkZHIob3BhcXVlLCBwYWdlLCBpc193cml0 ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg Y3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZShwaHlzX2FkZHIsIGJ1ZiwgbGVuKTsKLSAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChwaHlzX2FkZHIs IGJ1ZiwgbGVuKTsKICAgICAgICAgfQorICAgICAgICBkbWFfbWVtb3J5X3J3KHMtPnBhcmVudF9k bWEsIHBoeXNfYWRkciwgYnVmLCBsZW4sIGlzX3dyaXRlKTsKICAgICAgICAgbGVuIC09IGw7CiAg ICAgICAgIGJ1ZiArPSBsOwogICAgICAgICBhZGRyICs9IGw7CkBAIC0zMDksNyArMzA5LDggQEAK ICAgICBzLT5yZWdzW0lPTU1VX0NUUkxdID0gSU9NTVVfVkVSU0lPTjsKIH0KIAotdm9pZCAqaW9t bXVfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKK3ZvaWQgKmlvbW11X2luaXQodGFyZ2V0 X3BoeXNfYWRkcl90IGFkZHIsIHFlbXVfZG1hICpwYXJlbnRfZG1hLAorICAgICAgICAgICAgICAg ICBxZW11X2RtYSAqKmR2bWEpCiB7CiAgICAgSU9NTVVTdGF0ZSAqczsKICAgICBpbnQgaW9tbXVf aW9fbWVtb3J5OwpAQCAtMzIyLDcgKzMyMywxMCBAQAogCiAgICAgaW9tbXVfaW9fbWVtb3J5ID0g Y3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBpb21tdV9tZW1fcmVhZCwgaW9tbXVfbWVtX3dyaXRl LCBzKTsKICAgICBjcHVfcmVnaXN0ZXJfcGh5c2ljYWxfbWVtb3J5KGFkZHIsIElPTU1VX05SRUdT ICogNCwgaW9tbXVfaW9fbWVtb3J5KTsKLSAgICAKKworICAgIHMtPnBhcmVudF9kbWEgPSBwYXJl bnRfZG1hOworICAgICpkdm1hID0gcWVtdV9pbml0X2RtYShzcGFyY19pb21tdV9tZW1vcnlfcncs IHMpOworCiAgICAgcmVnaXN0ZXJfc2F2ZXZtKCJpb21tdSIsIGFkZHIsIDIsIGlvbW11X3NhdmUs IGlvbW11X2xvYWQsIHMpOwogICAgIHFlbXVfcmVnaXN0ZXJfcmVzZXQoaW9tbXVfcmVzZXQsIHMp OwogICAgIHJldHVybiBzOwpJbmRleDogcWVtdS92bC5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3Jp Zy92bC5oCTIwMDctMDgtMTQgMTk6Mjc6MzUuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3ZsLmgJ MjAwNy0wOC0xNCAxOTozNjo1NC4wMDAwMDAwMDAgKzAwMDAKQEAgLTEyNjMsNyArMTI2Myw4IEBA CiBleHRlcm4gUUVNVU1hY2hpbmUgc3M1X21hY2hpbmUsIHNzMTBfbWFjaGluZTsKIAogLyogaW9t bXUuYyAqLwotdm9pZCAqaW9tbXVfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYWRkcik7Cit2b2lk ICppb21tdV9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCBxZW11X2RtYSAqcGFyZW50X2Rt YSwKKyAgICAgICAgICAgICAgICAgcWVtdV9kbWEgKipkdm1hKTsKIHZvaWQgc3BhcmNfaW9tbXVf bWVtb3J5X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBpc193 cml0ZSk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc3BhcmNfaW9tbXVfbWVtb3J5X3JlYWQodm9pZCAq b3BhcXVlLAo= ------=_Part_171363_284151.1187120885899 Content-Type: text/x-diff; name=sparc32_dma_esp_le_to_gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5ct2t2b Content-Disposition: attachment; filename="sparc32_dma_esp_le_to_gdma.diff" SW5kZXg6IHFlbXUvaHcvc3BhcmMzMl9kbWEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcv c3BhcmMzMl9kbWEuYwkyMDA3LTA4LTE0IDE5OjI1OjQyLjAwMDAwMDAwMCArMDAwMAorKysgcWVt dS9ody9zcGFyYzMyX2RtYS5jCTIwMDctMDgtMTQgMTk6Mzk6MTEuMDAwMDAwMDAwICswMDAwCkBA IC01OCw2MyArNTgsMTIgQEAKIHN0cnVjdCBETUFTdGF0ZSB7CiAgICAgdWludDMyX3QgZG1hcmVn c1tETUFfUkVHU107CiAgICAgcWVtdV9pcnEgaXJxOwotICAgIHZvaWQgKmlvbW11LCAqZGV2X29w YXF1ZTsKKyAgICB2b2lkICpkZXZfb3BhcXVlOwogICAgIHZvaWQgKCpkZXZfcmVzZXQpKHZvaWQg KmRldl9vcGFxdWUpOwogICAgIHFlbXVfaXJxICpwaWM7CisgICAgcWVtdV9kbWEgKmRtYTsKIH07 CiAKLS8qIE5vdGU6IG9uIHNwYXJjLCB0aGUgbGFuY2UgMTYgYml0IGJ1cyBpcyBzd2FwcGVkICov Ci12b2lkIGxlZG1hX21lbW9yeV9yZWFkKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90 IGFkZHIsIAotICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGlu dCBkb19ic3dhcCkKLXsKLSAgICBETUFTdGF0ZSAqcyA9IG9wYXF1ZTsKLSAgICBpbnQgaTsKLQot ICAgIERQUklOVEYoIkRNQSB3cml0ZSwgZGlyZWN0aW9uOiAlYywgYWRkciAweCU4Ljh4XG4iLAot ICAgICAgICAgICAgcy0+ZG1hcmVnc1swXSAmIERNQV9XUklURV9NRU0gPyAndyc6ICdyJywgcy0+ ZG1hcmVnc1sxXSk7Ci0gICAgYWRkciB8PSBzLT5kbWFyZWdzWzNdOwotICAgIGlmIChkb19ic3dh cCkgewotICAgICAgICBzcGFyY19pb21tdV9tZW1vcnlfcmVhZChzLT5pb21tdSwgYWRkciwgYnVm LCBsZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFkZHIgJj0gfjE7Ci0gICAgICAgIGxlbiAm PSB+MTsKLSAgICAgICAgc3BhcmNfaW9tbXVfbWVtb3J5X3JlYWQocy0+aW9tbXUsIGFkZHIsIGJ1 ZiwgbGVuKTsKLSAgICAgICAgZm9yKGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHsKLSAgICAgICAg ICAgIGJzd2FwMTZzKCh1aW50MTZfdCAqKShidWYgKyBpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19 Ci0KLXZvaWQgbGVkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRk cl90IGFkZHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVu LCBpbnQgZG9fYnN3YXApCi17Ci0gICAgRE1BU3RhdGUgKnMgPSBvcGFxdWU7Ci0gICAgaW50IGws IGk7Ci0gICAgdWludDE2X3QgdG1wX2J1ZlszMl07Ci0KLSAgICBEUFJJTlRGKCJETUEgcmVhZCwg ZGlyZWN0aW9uOiAlYywgYWRkciAweCU4Ljh4XG4iLAotICAgICAgICAgICAgcy0+ZG1hcmVnc1sw XSAmIERNQV9XUklURV9NRU0gPyAndyc6ICdyJywgcy0+ZG1hcmVnc1sxXSk7Ci0gICAgYWRkciB8 PSBzLT5kbWFyZWdzWzNdOwotICAgIGlmIChkb19ic3dhcCkgewotICAgICAgICBzcGFyY19pb21t dV9tZW1vcnlfd3JpdGUocy0+aW9tbXUsIGFkZHIsIGJ1ZiwgbGVuKTsKLSAgICB9IGVsc2Ugewot ICAgICAgICBhZGRyICY9IH4xOwotICAgICAgICBsZW4gJj0gfjE7Ci0gICAgICAgIHdoaWxlIChs ZW4gPiAwKSB7Ci0gICAgICAgICAgICBsID0gbGVuOwotICAgICAgICAgICAgaWYgKGwgPiBzaXpl b2YodG1wX2J1ZikpCi0gICAgICAgICAgICAgICAgbCA9IHNpemVvZih0bXBfYnVmKTsKLSAgICAg ICAgICAgIGZvcihpID0gMDsgaSA8IGw7IGkgKz0gMikgewotICAgICAgICAgICAgICAgIHRtcF9i dWZbaSA+PiAxXSA9IGJzd2FwMTYoKih1aW50MTZfdCAqKShidWYgKyBpKSk7Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgICBzcGFyY19pb21tdV9tZW1vcnlfd3JpdGUocy0+aW9tbXUsIGFkZHIs ICh1aW50OF90ICopdG1wX2J1ZiwgbCk7Ci0gICAgICAgICAgICBsZW4gLT0gbDsKLSAgICAgICAg ICAgIGJ1ZiArPSBsOwotICAgICAgICAgICAgYWRkciArPSBsOwotICAgICAgICB9Ci0gICAgfQot fQotCiBzdGF0aWMgdm9pZCBkbWFfc2V0X2lycSh2b2lkICpvcGFxdWUsIGludCBpcnEsIGludCBs ZXZlbCkKIHsKICAgICBETUFTdGF0ZSAqcyA9IG9wYXF1ZTsKQEAgLTEyOSwyNCArNzgsMjkgQEAK ICAgICB9CiB9CiAKLXZvaWQgZXNwZG1hX21lbW9yeV9yZWFkKHZvaWQgKm9wYXF1ZSwgdWludDhf dCAqYnVmLCBpbnQgbGVuKQorc3RhdGljIHZvaWQgbGVkbWFfbWVtb3J5X3J3KHZvaWQgKm9wYXF1 ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3JpdGUpCiB7CiAgICAgRE1BU3RhdGUgKnMg PSBvcGFxdWU7CiAKLSAgICBEUFJJTlRGKCJETUEgcmVhZCwgZGlyZWN0aW9uOiAlYywgYWRkciAw eCU4Ljh4XG4iLAotICAgICAgICAgICAgcy0+ZG1hcmVnc1swXSAmIERNQV9XUklURV9NRU0gPyAn dyc6ICdyJywgcy0+ZG1hcmVnc1sxXSk7Ci0gICAgc3BhcmNfaW9tbXVfbWVtb3J5X3JlYWQocy0+ aW9tbXUsIHMtPmRtYXJlZ3NbMV0sIGJ1ZiwgbGVuKTsKLSAgICBzLT5kbWFyZWdzWzBdIHw9IERN QV9JTlRSOwotICAgIHMtPmRtYXJlZ3NbMV0gKz0gbGVuOworICAgIERQUklOVEYoIkRNQSAlcywg ZGlyZWN0aW9uOiAlYywgYWRkciAweCU4Ljh4XG4iLAorICAgICAgICAgICAgaXNfd3JpdGUgPyAi d3JpdGUiIDogInJlYWQiLAorICAgICAgICAgICAgcy0+ZG1hcmVnc1swXSAmIERNQV9XUklURV9N RU0gPyAndyc6ICdyJywgYWRkcik7CisgICAgYWRkciB8PSBzLT5kbWFyZWdzWzNdOworICAgIGFk ZHIgJj0gfjE7CisgICAgbGVuICY9IH4xOworICAgIGRtYV9tZW1vcnlfcncocy0+ZG1hLCBhZGRy LCBidWYsIGxlbiwgaXNfd3JpdGUpOwogfQogCi12b2lkIGVzcGRtYV9tZW1vcnlfd3JpdGUodm9p ZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4pCitzdGF0aWMgdm9pZCBlc3BkbWFfbWVt b3J5X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGlzX3dyaXRlKQog ewogICAgIERNQVN0YXRlICpzID0gb3BhcXVlOwogCi0gICAgRFBSSU5URigiRE1BIHdyaXRlLCBk aXJlY3Rpb246ICVjLCBhZGRyIDB4JTguOHhcbiIsCisgICAgRFBSSU5URigiRE1BICVzLCBkaXJl Y3Rpb246ICVjLCBhZGRyIDB4JTguOHhcbiIsCisgICAgICAgICAgICBpc193cml0ZSA/ICJ3cml0 ZSIgOiAicmVhZCIsCiAgICAgICAgICAgICBzLT5kbWFyZWdzWzBdICYgRE1BX1dSSVRFX01FTSA/ ICd3JzogJ3InLCBzLT5kbWFyZWdzWzFdKTsKLSAgICBzcGFyY19pb21tdV9tZW1vcnlfd3JpdGUo cy0+aW9tbXUsIHMtPmRtYXJlZ3NbMV0sIGJ1ZiwgbGVuKTsKKyAgICBkbWFfbWVtb3J5X3J3KHMt PmRtYSwgcy0+ZG1hcmVnc1sxXSwgYnVmLCBsZW4sIGlzX3dyaXRlKTsKICAgICBzLT5kbWFyZWdz WzBdIHw9IERNQV9JTlRSOwogICAgIHMtPmRtYXJlZ3NbMV0gKz0gbGVuOwogfQpAQCAtMjM4LDcg KzE5Miw4IEBACiB9CiAKIHZvaWQgKnNwYXJjMzJfZG1hX2luaXQodGFyZ2V0X3BoeXNfYWRkcl90 IGRhZGRyLCBxZW11X2lycSBwYXJlbnRfaXJxLAotICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICppb21tdSwgcWVtdV9pcnEgKipkZXZfaXJxKQorICAgICAgICAgICAgICAgICAgICAgICBxZW11 X2lycSAqKmRldl9pcnEsIHFlbXVfZG1hICpwYXJlbnRfZG1hLAorICAgICAgICAgICAgICAgICAg ICAgICBxZW11X2RtYSAqKmRldl9kbWEsIGludCBpc19lc3BkbWEpCiB7CiAgICAgRE1BU3RhdGUg KnM7CiAgICAgaW50IGRtYV9pb19tZW1vcnk7CkBAIC0yNDgsNyArMjAzLDcgQEAKICAgICAgICAg cmV0dXJuIE5VTEw7CiAKICAgICBzLT5pcnEgPSBwYXJlbnRfaXJxOwotICAgIHMtPmlvbW11ID0g aW9tbXU7CisgICAgcy0+ZG1hID0gcGFyZW50X2RtYTsKIAogICAgIGRtYV9pb19tZW1vcnkgPSBj cHVfcmVnaXN0ZXJfaW9fbWVtb3J5KDAsIGRtYV9tZW1fcmVhZCwgZG1hX21lbV93cml0ZSwgcyk7 CiAgICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeShkYWRkciwgRE1BX1NJWkUsIGRtYV9p b19tZW1vcnkpOwpAQCAtMjU3LDYgKzIxMiwxMSBAQAogICAgIHFlbXVfcmVnaXN0ZXJfcmVzZXQo ZG1hX3Jlc2V0LCBzKTsKICAgICAqZGV2X2lycSA9IHFlbXVfYWxsb2NhdGVfaXJxcyhkbWFfc2V0 X2lycSwgcywgMSk7CiAKKyAgICBpZiAoaXNfZXNwZG1hKQorICAgICAgICAqZGV2X2RtYSA9IHFl bXVfaW5pdF9kbWEoZXNwZG1hX21lbW9yeV9ydywgcyk7CisgICAgZWxzZQorICAgICAgICAqZGV2 X2RtYSA9IHFlbXVfaW5pdF9kbWEobGVkbWFfbWVtb3J5X3J3LCBzKTsKKwogICAgIHJldHVybiBz OwogfQogCkluZGV4OiBxZW11L2h3L3N1bjRtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3 L3N1bjRtLmMJMjAwNy0wOC0xNCAxOTozNzoyMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcv c3VuNG0uYwkyMDA3LTA4LTE0IDE5OjM5OjExLjAwMDAwMDAwMCArMDAwMApAQCAtMzIxLDcgKzMy MSw3IEBACiAgICAgY29uc3Qgc3BhcmNfZGVmX3QgKmRlZjsKICAgICBxZW11X2lycSAqY3B1X2ly cXNbTUFYX0NQVVNdLCAqc2xhdmlvX2lycSwgKnNsYXZpb19jcHVfaXJxLAogICAgICAgICAqZXNw ZG1hX2lycSwgKmxlZG1hX2lycTsKLSAgICBxZW11X2RtYSAqcGh5c2ljYWxfZG1hLCAqZHZtYTsK KyAgICBxZW11X2RtYSAqcGh5c2ljYWxfZG1hLCAqZHZtYSwgKmVzcF9kdm1hLCAqbGVfZHZtYTsK IAogICAgIC8qIGluaXQgQ1BVcyAqLwogICAgIHNwYXJjX2ZpbmRfYnlfbmFtZShjcHVfbW9kZWws ICZkZWYpOwpAQCAtMzYyLDkgKzM2MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaHdkZWYtPmNsb2NrX2lycSk7CiAKICAgICBlc3BkbWEgPSBzcGFyYzMyX2Rt YV9pbml0KGh3ZGVmLT5kbWFfYmFzZSwgc2xhdmlvX2lycVtod2RlZi0+ZXNwX2lycV0sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpb21tdSwgJmVzcGRtYV9pcnEpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmVzcGRtYV9pcnEsIGR2bWEsICZlc3BfZHZtYSwgMSk7CisK ICAgICBsZWRtYSA9IHNwYXJjMzJfZG1hX2luaXQoaHdkZWYtPmRtYV9iYXNlICsgMTZVTEwsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZpb19pcnFbaHdkZWYtPmxlX2lycV0sIGlv bW11LCAmbGVkbWFfaXJxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmlvX2ly cVtod2RlZi0+bGVfaXJxXSwgJmxlZG1hX2lycSwgZHZtYSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmxlX2R2bWEsIDApOwogCiAgICAgaWYgKGdyYXBoaWNfZGVwdGggIT0gOCAmJiBn cmFwaGljX2RlcHRoICE9IDI0KSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogVW5z dXBwb3J0ZWQgZGVwdGg6ICVkXG4iLCBncmFwaGljX2RlcHRoKTsKQEAgLTM3NSw3ICszNzcsNyBA QAogCiAgICAgaWYgKG5kX3RhYmxlWzBdLm1vZGVsID09IE5VTEwKICAgICAgICAgfHwgc3RyY21w KG5kX3RhYmxlWzBdLm1vZGVsLCAibGFuY2UiKSA9PSAwKSB7Ci0gICAgICAgIGxhbmNlX2luaXQo Jm5kX3RhYmxlWzBdLCBod2RlZi0+bGVfYmFzZSwgbGVkbWEsICpsZWRtYV9pcnEpOworICAgICAg ICBsYW5jZV9pbml0KCZuZF90YWJsZVswXSwgaHdkZWYtPmxlX2Jhc2UsIGxlZG1hLCAqbGVkbWFf aXJxLCBsZV9kdm1hKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuZF90YWJsZVswXS5tb2RlbCwg Ij8iKSA9PSAwKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogU3VwcG9ydGVkIE5J Q3M6IGxhbmNlXG4iKTsKICAgICAgICAgZXhpdCAoMSk7CkBAIC0zOTksNyArNDAxLDkgQEAKICAg ICBzbGF2aW9fc2VyaWFsX2luaXQoaHdkZWYtPnNlcmlhbF9iYXNlLCBzbGF2aW9faXJxW2h3ZGVm LT5zZXJfaXJxXSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsX2hkc1sxXSwgc2VyaWFs X2hkc1swXSk7CiAgICAgZmRjdHJsX2luaXQoc2xhdmlvX2lycVtod2RlZi0+ZmRfaXJxXSwgMCwg MSwgaHdkZWYtPmZkX2Jhc2UsIGZkX3RhYmxlKTsKLSAgICBtYWluX2VzcCA9IGVzcF9pbml0KGJz X3RhYmxlLCBod2RlZi0+ZXNwX2Jhc2UsIGVzcGRtYSwgKmVzcGRtYV9pcnEpOworCisgICAgbWFp bl9lc3AgPSBlc3BfaW5pdChic190YWJsZSwgaHdkZWYtPmVzcF9iYXNlLCBlc3BkbWEsICplc3Bk bWFfaXJxLAorICAgICAgICAgICAgICAgICAgICAgICAgZXNwX2R2bWEpOwogCiAgICAgZm9yIChp ID0gMDsgaSA8IE1BWF9ESVNLUzsgaSsrKSB7CiAgICAgICAgIGlmIChic190YWJsZVtpXSkgewpJ bmRleDogcWVtdS92bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy92bC5oCTIwMDctMDgtMTQg MTk6MzY6NTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3ZsLmgJMjAwNy0wOC0xNCAxOTozOTo0 NS4wMDAwMDAwMDAgKzAwMDAKQEAgLTEwOTgsNyArMTA5OCw3IEBACiAKIHZvaWQgcGNpX3BjbmV0 X2luaXQoUENJQnVzICpidXMsIE5JQ0luZm8gKm5kLCBpbnQgZGV2Zm4pOwogdm9pZCBsYW5jZV9p bml0KE5JQ0luZm8gKm5kLCB0YXJnZXRfcGh5c19hZGRyX3QgbGVhZGRyLCB2b2lkICpkbWFfb3Bh cXVlLAotICAgICAgICAgICAgICAgICBxZW11X2lycSBpcnEpOworICAgICAgICAgICAgICAgIHFl bXVfaXJxIGlycSwgcWVtdV9kbWEgKnBhcmVudF9kbWEpOwogCiAvKiB2bW1vdXNlLmMgKi8KIHZv aWQgKnZtbW91c2VfaW5pdCh2b2lkICptKTsKQEAgLTEyNjUsMjEgKzEyNjUsNiBAQAogLyogaW9t bXUuYyAqLwogdm9pZCAqaW9tbXVfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgcWVtdV9k bWEgKnBhcmVudF9kbWEsCiAgICAgICAgICAgICAgICAgIHFlbXVfZG1hICoqZHZtYSk7Ci12b2lk IHNwYXJjX2lvbW11X21lbW9yeV9ydyh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBh ZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQg bGVuLCBpbnQgaXNfd3JpdGUpOwotc3RhdGljIGlubGluZSB2b2lkIHNwYXJjX2lvbW11X21lbW9y eV9yZWFkKHZvaWQgKm9wYXF1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4pCi17Ci0gICAgc3BhcmNf aW9tbXVfbWVtb3J5X3J3KG9wYXF1ZSwgYWRkciwgYnVmLCBsZW4sIDApOwotfQotCi1zdGF0aWMg aW5saW5lIHZvaWQgc3BhcmNfaW9tbXVfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1ZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BoeXNfYWRkcl90 IGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4 X3QgKmJ1ZiwgaW50IGxlbikKLXsKLSAgICBzcGFyY19pb21tdV9tZW1vcnlfcncob3BhcXVlLCBh ZGRyLCBidWYsIGxlbiwgMSk7Ci19CiAKIC8qIHRjeC5jICovCiB2b2lkIHRjeF9pbml0KERpc3Bs YXlTdGF0ZSAqZHMsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCB1aW50OF90ICp2cmFtX2Jhc2Us CkBAIC0xMzE4LDE3ICsxMzAzLDEyIEBACiAvKiBlc3AuYyAqLwogdm9pZCBlc3Bfc2NzaV9hdHRh Y2godm9pZCAqb3BhcXVlLCBCbG9ja0RyaXZlclN0YXRlICpiZCwgaW50IGlkKTsKIHZvaWQgKmVz cF9pbml0KEJsb2NrRHJpdmVyU3RhdGUgKipiZCwgdGFyZ2V0X3BoeXNfYWRkcl90IGVzcGFkZHIs Ci0gICAgICAgICAgICAgICB2b2lkICpkbWFfb3BhcXVlLCBxZW11X2lycSBpcnEpOworICAgICAg ICAgICAgICAgdm9pZCAqZG1hX29wYXF1ZSwgcWVtdV9pcnEgaXJxLCBxZW11X2RtYSAqcGFyZW50 X2RtYSk7CiAKIC8qIHNwYXJjMzJfZG1hLmMgKi8KIHZvaWQgKnNwYXJjMzJfZG1hX2luaXQodGFy Z2V0X3BoeXNfYWRkcl90IGRhZGRyLCBxZW11X2lycSBwYXJlbnRfaXJxLAotICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICppb21tdSwgcWVtdV9pcnEgKipkZXZfaXJxKTsKLXZvaWQgbGVkbWFf bWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgCi0gICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2FwKTsK LXZvaWQgbGVkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90 IGFkZHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBp bnQgZG9fYnN3YXApOwotdm9pZCBlc3BkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB1aW50 OF90ICpidWYsIGludCBsZW4pOwotdm9pZCBlc3BkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1 ZSwgdWludDhfdCAqYnVmLCBpbnQgbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9p cnEgKipkZXZfaXJxLCBxZW11X2RtYSAqcGFyZW50X2RtYSwKKyAgICAgICAgICAgICAgICAgICAg ICAgcWVtdV9kbWEgKipkZXZfZG1hLCBpbnQgaXNfZXNwZG1hKTsKIHZvaWQgc3BhcmMzMl9kbWFf c2V0X3Jlc2V0X2RhdGEodm9pZCAqb3BhcXVlLCB2b2lkICgqZGV2X3Jlc2V0KSh2b2lkICpvcGFx dWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkZXZfb3BhcXVlKTsK IApJbmRleDogcWVtdS9ody9lc3AuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvZXNwLmMJ MjAwNy0wOC0xNCAxOToyNTo0Mi4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvZXNwLmMJMjAw Ny0wOC0xNCAxOTozOToxMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTUyLDYgKzUyLDcgQEAKIAogc3Ry dWN0IEVTUFN0YXRlIHsKICAgICBxZW11X2lycSBpcnE7CisgICAgcWVtdV9kbWEgKnBhcmVudF9k bWE7CiAgICAgQmxvY2tEcml2ZXJTdGF0ZSAqKmJkOwogICAgIHVpbnQ4X3QgcnJlZ3NbRVNQX1JF R1NdOwogICAgIHVpbnQ4X3Qgd3JlZ3NbRVNQX1JFR1NdOwpAQCAtNzMsNyArNzQsNiBAQAogICAg IHVpbnQzMl90IGRtYV9jb3VudGVyOwogICAgIHVpbnQ4X3QgKmFzeW5jX2J1ZjsKICAgICB1aW50 MzJfdCBhc3luY19sZW47Ci0gICAgdm9pZCAqZG1hX29wYXF1ZTsKIH07CiAKICNkZWZpbmUgU1RB VF9ETyAweDAwCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICB0YXJnZXQgPSBzLT53cmVnc1s0XSAm IDc7CiAgICAgRFBSSU5URigiZ2V0X2NtZDogbGVuICVkIHRhcmdldCAlZFxuIiwgZG1hbGVuLCB0 YXJnZXQpOwogICAgIGlmIChzLT5kbWEpIHsKLSAgICAgICAgZXNwZG1hX21lbW9yeV9yZWFkKHMt PmRtYV9vcGFxdWUsIGJ1ZiwgZG1hbGVuKTsKKyAgICAgICAgZG1hX21lbW9yeV9yZWFkKHMtPnBh cmVudF9kbWEsIDAsIGJ1ZiwgZG1hbGVuKTsKICAgICB9IGVsc2UgewogCWJ1ZlswXSA9IDA7CiAJ bWVtY3B5KCZidWZbMV0sIHMtPnRpX2J1ZiwgZG1hbGVuKTsKQEAgLTE4OSw3ICsxODksNyBAQAog ICAgIHMtPnRpX2J1ZlswXSA9IHMtPnNlbnNlOwogICAgIHMtPnRpX2J1ZlsxXSA9IDA7CiAgICAg aWYgKHMtPmRtYSkgewotICAgICAgICBlc3BkbWFfbWVtb3J5X3dyaXRlKHMtPmRtYV9vcGFxdWUs IHMtPnRpX2J1ZiwgMik7CisgICAgICAgIGRtYV9tZW1vcnlfd3JpdGUocy0+cGFyZW50X2RtYSwg MCwgcy0+dGlfYnVmLCAyKTsKIAlzLT5ycmVnc1s0XSA9IFNUQVRfSU4gfCBTVEFUX1RDIHwgU1RB VF9TVDsKIAlzLT5ycmVnc1s1XSA9IElOVFJfQlMgfCBJTlRSX0ZDOwogCXMtPnJyZWdzWzZdID0g U0VRX0NEOwpAQCAtMjIyLDcgKzIyMiw3IEBACiAgICAgbGVuID0gcy0+ZG1hX2xlZnQ7CiAgICAg aWYgKHMtPmRvX2NtZCkgewogICAgICAgICBEUFJJTlRGKCJjb21tYW5kIGxlbiAlZCArICVkXG4i LCBzLT5jbWRsZW4sIGxlbik7Ci0gICAgICAgIGVzcGRtYV9tZW1vcnlfcmVhZChzLT5kbWFfb3Bh cXVlLCAmcy0+Y21kYnVmW3MtPmNtZGxlbl0sIGxlbik7CisgICAgICAgIGRtYV9tZW1vcnlfcmVh ZChzLT5wYXJlbnRfZG1hLCAwLCAmcy0+Y21kYnVmW3MtPmNtZGxlbl0sIGxlbik7CiAgICAgICAg IHMtPnRpX3NpemUgPSAwOwogICAgICAgICBzLT5jbWRsZW4gPSAwOwogICAgICAgICBzLT5kb19j bWQgPSAwOwpAQCAtMjM3LDkgKzIzNyw5IEBACiAgICAgICAgIGxlbiA9IHMtPmFzeW5jX2xlbjsK ICAgICB9CiAgICAgaWYgKHRvX2RldmljZSkgewotICAgICAgICBlc3BkbWFfbWVtb3J5X3JlYWQo cy0+ZG1hX29wYXF1ZSwgcy0+YXN5bmNfYnVmLCBsZW4pOworICAgICAgICBkbWFfbWVtb3J5X3Jl YWQocy0+cGFyZW50X2RtYSwgMCwgcy0+YXN5bmNfYnVmLCBsZW4pOwogICAgIH0gZWxzZSB7Ci0g ICAgICAgIGVzcGRtYV9tZW1vcnlfd3JpdGUocy0+ZG1hX29wYXF1ZSwgcy0+YXN5bmNfYnVmLCBs ZW4pOworICAgICAgICBkbWFfbWVtb3J5X3dyaXRlKHMtPnBhcmVudF9kbWEsIDAsIHMtPmFzeW5j X2J1ZiwgbGVuKTsKICAgICB9CiAgICAgcy0+ZG1hX2xlZnQgLT0gbGVuOwogICAgIHMtPmFzeW5j X2J1ZiArPSBsZW47CkBAIC01NjksNyArNTY5LDcgQEAKIH0KIAogdm9pZCAqZXNwX2luaXQoQmxv Y2tEcml2ZXJTdGF0ZSAqKmJkLCB0YXJnZXRfcGh5c19hZGRyX3QgZXNwYWRkciwKLSAgICAgICAg ICAgICAgIHZvaWQgKmRtYV9vcGFxdWUsIHFlbXVfaXJxIGlycSkKKyAgICAgICAgICAgICAgIHZv aWQgKmRtYV9vcGFxdWUsIHFlbXVfaXJxIGlycSwgcWVtdV9kbWEgKnBhcmVudF9kbWEpCiB7CiAg ICAgRVNQU3RhdGUgKnM7CiAgICAgaW50IGVzcF9pb19tZW1vcnk7CkBAIC01ODAsNyArNTgwLDcg QEAKIAogICAgIHMtPmJkID0gYmQ7CiAgICAgcy0+aXJxID0gaXJxOwotICAgIHMtPmRtYV9vcGFx dWUgPSBkbWFfb3BhcXVlOworICAgIHMtPnBhcmVudF9kbWEgPSBwYXJlbnRfZG1hOwogICAgIHNw YXJjMzJfZG1hX3NldF9yZXNldF9kYXRhKGRtYV9vcGFxdWUsIGVzcF9yZXNldCwgcyk7CiAKICAg ICBlc3BfaW9fbWVtb3J5ID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBlc3BfbWVtX3JlYWQs IGVzcF9tZW1fd3JpdGUsIHMpOwpJbmRleDogcWVtdS9ody9wY25ldC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy9ody9wY25ldC5jCTIwMDctMDgtMTQgMTk6MjU6NDIuMDAwMDAwMDAwICswMDAw CisrKyBxZW11L2h3L3BjbmV0LmMJMjAwNy0wOC0xNCAxOTozOToxMS4wMDAwMDAwMDAgKzAwMDAK QEAgLTc1LDYgKzc1LDcgQEAKICAgICB2b2lkICgqcGh5c19tZW1fd3JpdGUpKHZvaWQgKmRtYV9v cGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCk7CiAgICAgdm9pZCAqZG1hX29w YXF1ZTsKKyAgICBxZW11X2RtYSAqcGFyZW50X2RtYTsKIH07CiAKIHN0cnVjdCBxZW11X2V0aGVy X2hlYWRlciB7CkBAIC0yMDExLDYgKzIwMTIsNDYgQEAKIAogI2lmIGRlZmluZWQgKFRBUkdFVF9T UEFSQykgJiYgIWRlZmluZWQoVEFSR0VUX1NQQVJDNjQpIC8vIEF2b2lkIGNvbXBpbGUgZmFpbHVy ZQogCisvKiBOb3RlOiBvbiBzcGFyYywgdGhlIGxhbmNlIDE2IGJpdCBidXMgaXMgc3dhcHBlZCAq Lworc3RhdGljIHZvaWQgbGVkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1 ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2FwKQoreworICAgIGludCBpOworCisgICAgaWYgKGRvX2Jz d2FwKSB7CisgICAgICAgIGRtYV9tZW1vcnlfcmVhZChvcGFxdWUsIGFkZHIsIGJ1ZiwgbGVuKTsK KyAgICB9IGVsc2UgeworICAgICAgICBkbWFfbWVtb3J5X3JlYWQob3BhcXVlLCBhZGRyLCBidWYs IGxlbik7CisgICAgICAgIGZvcihpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7CisgICAgICAgICAg ICBic3dhcDE2cygodWludDE2X3QgKikoYnVmICsgaSkpOworICAgICAgICB9CisgICAgfQorfQor CitzdGF0aWMgdm9pZCBsZWRtYV9tZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpi dWYsIGludCBsZW4sIGludCBkb19ic3dhcCkKK3sKKyAgICBpbnQgbCwgaTsKKyAgICB1aW50MTZf dCB0bXBfYnVmWzMyXTsKKworICAgIGlmIChkb19ic3dhcCkgeworICAgICAgICBkbWFfbWVtb3J5 X3dyaXRlKG9wYXF1ZSwgYWRkciwgYnVmLCBsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHdo aWxlIChsZW4gPiAwKSB7CisgICAgICAgICAgICBsID0gbGVuOworICAgICAgICAgICAgaWYgKGwg PiBzaXplb2YodG1wX2J1ZikpCisgICAgICAgICAgICAgICAgbCA9IHNpemVvZih0bXBfYnVmKTsK KyAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IGw7IGkgKz0gMikgeworICAgICAgICAgICAgICAg IHRtcF9idWZbaSA+PiAxXSA9IGJzd2FwMTYoKih1aW50MTZfdCAqKShidWYgKyBpKSk7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICBkbWFfbWVtb3J5X3dyaXRlKG9wYXF1ZSwgYWRkciwgKHVp bnQ4X3QgKil0bXBfYnVmLCBsKTsKKyAgICAgICAgICAgIGxlbiAtPSBsOworICAgICAgICAgICAg YnVmICs9IGw7CisgICAgICAgICAgICBhZGRyICs9IGw7CisgICAgICAgIH0KKyAgICB9Cit9CisK IHN0YXRpYyB2b2lkIGxhbmNlX21lbV93cml0ZXcodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19h ZGRyX3QgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsKQog ewpAQCAtMjA0Nyw3ICsyMDg4LDcgQEAKIH07CiAKIHZvaWQgbGFuY2VfaW5pdChOSUNJbmZvICpu ZCwgdGFyZ2V0X3BoeXNfYWRkcl90IGxlYWRkciwgdm9pZCAqZG1hX29wYXF1ZSwKLSAgICAgICAg ICAgICAgICAgcWVtdV9pcnEgaXJxKQorICAgICAgICAgICAgICAgIHFlbXVfaXJxIGlycSwgcWVt dV9kbWEgKnBhcmVudF9kbWEpCiB7CiAgICAgUENOZXRTdGF0ZSAqZDsKICAgICBpbnQgbGFuY2Vf aW9fbWVtb3J5OwpAQCAtMjA1OSw3ICsyMTAwLDcgQEAKICAgICBsYW5jZV9pb19tZW1vcnkgPQog ICAgICAgICBjcHVfcmVnaXN0ZXJfaW9fbWVtb3J5KDAsIGxhbmNlX21lbV9yZWFkLCBsYW5jZV9t ZW1fd3JpdGUsIGQpOwogCi0gICAgZC0+ZG1hX29wYXF1ZSA9IGRtYV9vcGFxdWU7CisgICAgZC0+ ZG1hX29wYXF1ZSA9IHBhcmVudF9kbWE7CiAgICAgc3BhcmMzMl9kbWFfc2V0X3Jlc2V0X2RhdGEo ZG1hX29wYXF1ZSwgcGNuZXRfaF9yZXNldCwgZCk7CiAKICAgICBjcHVfcmVnaXN0ZXJfcGh5c2lj YWxfbWVtb3J5KGxlYWRkciwgNCwgbGFuY2VfaW9fbWVtb3J5KTsK ------=_Part_171363_284151.1187120885899--