From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KreV0-0003IS-VZ for qemu-devel@nongnu.org; Sun, 19 Oct 2008 16:03:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KreUz-0003H0-03 for qemu-devel@nongnu.org; Sun, 19 Oct 2008 16:03:38 -0400 Received: from [199.232.76.173] (port=33324 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KreUy-0003Gs-Qr for qemu-devel@nongnu.org; Sun, 19 Oct 2008 16:03:36 -0400 Received: from smtp7-g19.free.fr ([212.27.42.64]:47376) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KreUx-0002en-V5 for qemu-devel@nongnu.org; Sun, 19 Oct 2008 16:03:36 -0400 Received: from smtp7-g19.free.fr (localhost [127.0.0.1]) by smtp7-g19.free.fr (Postfix) with ESMTP id 18E68B015C for ; Sun, 19 Oct 2008 22:03:35 +0200 (CEST) Received: from [192.168.0.32] (rob92-10-88-171-126-33.fbx.proxad.net [88.171.126.33]) by smtp7-g19.free.fr (Postfix) with ESMTP id 06E5EB0130 for ; Sun, 19 Oct 2008 22:03:33 +0200 (CEST) Message-ID: <48FB9246.4030708@reactos.org> Date: Sun, 19 Oct 2008 22:02:14 +0200 From: =?ISO-8859-1?Q?Herv=E9_Poussineau?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010608030406020700060902" Subject: [Qemu-devel] [PATCH] MIPS: DMA support for RC4030 chipset 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@nongnu.org This is a multi-part message in MIME format. --------------010608030406020700060902 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Hi, Attached patch implements DMA support to RC4030 chipset and simplifies=20 jazz IO part (at 0xf0000000), where registers contain 16 bit values. The patch also wires DMA for the SCSI adapter in the Jazz emulation=20 (Mips Magnum 4000 and Acer Pica 61). Please apply Herv=E9 --------------010608030406020700060902 Content-Type: plain/text; name="rc4030-dma.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="rc4030-dma.diff" 77u/ZGV4OiBody9taXBzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBody9taXBzLmgJKHJldmlz aW9uIDU0OTkpDQorKysgaHcvbWlwcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiArMjcs OCBAQA0KIGV4dGVybiB2b2lkIGNwdV9taXBzX2Nsb2NrX2luaXQoQ1BVU3RhdGUgKik7CiAK IC8qIHJjNDAzMC5jICovCi1xZW11X2lycSAqcmM0MDMwX2luaXQocWVtdV9pcnEgdGltZXIs IHFlbXVfaXJxIGphenpfYnVzKTsKK3R5cGVkZWYgdm9pZCAoKmRtYV9mdW5jdGlvbikodm9p ZCAqb3BhcXVlLCBpbnQgY2hhbm5lbCwgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNf d3JpdGUpOworcWVtdV9pcnEgKnJjNDAzMF9pbml0KHFlbXVfaXJxIHRpbWVyLCBxZW11X2ly cSBqYXp6X2J1cywgdm9pZCAqKmRtYV9vcGFxdWUsCisgICAgICAgICAgICAgICAgICAgICAg ZG1hX2Z1bmN0aW9uICpkbWFfZnVuYyk7CiAKICNlbmRpZgpJbmRleDogaHcvbWlwc19qYXp6 LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCi0tLSBody9taXBzX2phenouYwkocmV2aXNpb24gNTQ5OSkN CisrKyBody9taXBzX2phenouYwkod29ya2luZyBjb3B5KQ0KQEAgLTEsNyArMSw3IEBADQog LyoKICAqIFFFTVUgTUlQUyBKYXp6IHN1cHBvcnQKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIw MDctMjAwOCBIZXJ2w6kgUG91c3NpbmVhdQorICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDgg SGVydmUgUG91c3NpbmVhdQogICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICAqIG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLCB0byBkZWFsCkBAIC00NSw2ICs0NSwxMyBAQA0KICAgICBKQVpaX1BJ Q0E2MSwKIH07CiAKK3R5cGVkZWYgc3RydWN0IGphenpTdGF0ZQoreworICAgIC8qIERNQSAq LworICAgIHZvaWQgKmRtYV9vcGFxdWU7CisgICAgZG1hX2Z1bmN0aW9uIGRtYV9mdW5jOwor fSBqYXp6U3RhdGU7CisKIHN0YXRpYyB2b2lkIG1haW5fY3B1X3Jlc2V0KHZvaWQgKm9wYXF1 ZSkKIHsKICAgICBDUFVTdGF0ZSAqZW52ID0gb3BhcXVlOwpAQCAtMTAyLDE0ICsxMDksMTcg QEANCiB9CiAjZW5kaWYKIAorI2RlZmluZSBKQVpaX1NDU0lfRE1BIDAKIHZvaWQgZXNwZG1h X21lbW9yeV9yZWFkKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqYnVmLCBpbnQgbGVuKQogewot ICAgIHByaW50ZigiZXNwZG1hX21lbW9yeV9yZWFkKGJ1ZiAlcCwgbGVuICVkKSBub3QgaW1w bGVtZW50ZWRcbiIsIGJ1ZiwgbGVuKTsKKyAgICBqYXp6U3RhdGUgKnMgPSBvcGFxdWU7Cisg ICAgKCpzLT5kbWFfZnVuYykocy0+ZG1hX29wYXF1ZSwgSkFaWl9TQ1NJX0RNQSwgYnVmLCBs ZW4sIDApOwogfQogCiB2b2lkIGVzcGRtYV9tZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLCB1 aW50OF90ICpidWYsIGludCBsZW4pCiB7Ci0gICAgcHJpbnRmKCJlc3BkbWFfbWVtb3J5X3dy aXRlKGJ1ZiAlcCwgbGVuICVkKSBub3QgaW1wbGVtZW50ZWRcbiIsIGJ1ZiwgbGVuKTsKKyAg ICBqYXp6U3RhdGUgKnMgPSBvcGFxdWU7CisgICAgKCpzLT5kbWFfZnVuYykocy0+ZG1hX29w YXF1ZSwgSkFaWl9TQ1NJX0RNQSwgYnVmLCBsZW4sIDEpOwogfQogCiAjZGVmaW5lIE1BR05V TV9CSU9TX1NJWkVfTUFYIDB4N2UwMDAKQEAgLTEzMSw3ICsxNDEsMTMgQEANCiAgICAgUElU U3RhdGUgKnBpdDsKICAgICBCbG9ja0RyaXZlclN0YXRlICpmZHNbTUFYX0ZEXTsKICAgICBx ZW11X2lycSBlc3BfcmVzZXQ7CisgICAgamF6elN0YXRlICpzOwogCisgICAgLyogYWxsb2Nh dGUgc3RhdGUgKi8KKyAgICBzID0gcWVtdV9tYWxsb2N6KHNpemVvZihqYXp6U3RhdGUpKTsK KyAgICBpZiAoIXMpCisgICAgICAgIHJldHVybjsKKwogICAgIC8qIGluaXQgQ1BVcyAqLwog ICAgIGlmIChjcHVfbW9kZWwgPT0gTlVMTCkgewogI2lmZGVmIFRBUkdFVF9NSVBTNjQKQEAg LTE1Myw3ICsxNjksOSBAQA0KIAogICAgIC8qIGxvYWQgdGhlIEJJT1MgaW1hZ2UuICovCiAg ICAgYmlvc19vZmZzZXQgPSByYW1fc2l6ZSArIHZnYV9yYW1fc2l6ZTsKLSAgICBzbnByaW50 ZihidWYsIHNpemVvZihidWYpLCAiJXMvJXMiLCBiaW9zX2RpciwgQklPU19GSUxFTkFNRSk7 CisgICAgaWYgKGJpb3NfbmFtZSA9PSBOVUxMKQorICAgICAgICBiaW9zX25hbWUgPSBCSU9T X0ZJTEVOQU1FOworICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcy8lcyIsIGJp b3NfZGlyLCBiaW9zX25hbWUpOwogICAgIGJpb3Nfc2l6ZSA9IGxvYWRfaW1hZ2UoYnVmLCBw aHlzX3JhbV9iYXNlICsgYmlvc19vZmZzZXQpOwogICAgIGlmIChiaW9zX3NpemUgPCAwIHx8 IGJpb3Nfc2l6ZSA+IE1BR05VTV9CSU9TX1NJWkUpIHsKICAgICAgICAgZnByaW50ZihzdGRl cnIsICJxZW11OiBDb3VsZCBub3QgbG9hZCBNSVBTIGJpb3MgJyVzJ1xuIiwKQEAgLTE3MSw3 ICsxODksOCBAQA0KICAgICBjcHVfbWlwc19jbG9ja19pbml0KGVudik7CiAKICAgICAvKiBD aGlwc2V0ICovCi0gICAgcmM0MDMwID0gcmM0MDMwX2luaXQoZW52LT5pcnFbNl0sIGVudi0+ aXJxWzNdKTsKKyAgICByYzQwMzAgPSByYzQwMzBfaW5pdChlbnYtPmlycVs2XSwgZW52LT5p cnFbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJnMtPmRtYV9vcGFxdWUsICZzLT5k bWFfZnVuYyk7CiAKICAgICAvKiBJU0EgZGV2aWNlcyAqLwogICAgIGk4MjU5ID0gaTgyNTlf aW5pdChlbnYtPmlycVs0XSk7CkBAIC0yMDAsNyArMjE5LDcgQEANCiAKICAgICAvKiBTQ1NJ IGFkYXB0ZXIgKi8KICAgICBzY3NpX2hiYSA9IGVzcF9pbml0KDB4ODAwMDIwMDAsIDAsCi0g ICAgICAgICAgICAgICAgICAgICAgICBlc3BkbWFfbWVtb3J5X3JlYWQsIGVzcGRtYV9tZW1v cnlfd3JpdGUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICBlc3BkbWFfbWVtb3J5 X3JlYWQsIGVzcGRtYV9tZW1vcnlfd3JpdGUsIHMsCiAgICAgICAgICAgICAgICAgICAgICAg ICByYzQwMzBbNV0sICZlc3BfcmVzZXQpOwogICAgIGZvciAobiA9IDA7IG4gPCBFU1BfTUFY X0RFVlM7IG4rKykgewogICAgICAgICBoZCA9IGRyaXZlX2dldF9pbmRleChJRl9TQ1NJLCAw LCBuKTsKQEAgLTI3OCw2ICsyOTcsNyBAQA0KICAgICAuaW5pdCA9IG1pcHNfbWFnbnVtX2lu aXQsCiAgICAgLnJhbV9yZXF1aXJlID0gTUFHTlVNX0JJT1NfU0laRSArIFZHQV9SQU1fU0la RSwKICAgICAubm9kaXNrX29rID0gMSwKKyAgICAudXNlX3Njc2kgPSAxLAogICAgIC5tYXhf Y3B1cyA9IDEsCiB9OwogCkBAIC0yODcsNSArMzA3LDYgQEANCiAgICAgLmluaXQgPSBtaXBz X3BpY2E2MV9pbml0LAogICAgIC5yYW1fcmVxdWlyZSA9IE1BR05VTV9CSU9TX1NJWkUgKyBW R0FfUkFNX1NJWkUsCiAgICAgLm5vZGlza19vayA9IDEsCisgICAgLnVzZV9zY3NpID0gMSwK ICAgICAubWF4X2NwdXMgPSAxLAogfTsKSW5kZXg6IGh3L3JjNDAzMC5jDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQotLS0gaHcvcmM0MDMwLmMJKHJldmlzaW9uIDU0OTkpDQorKysgaHcvcmM0MDMwLmMJ KHdvcmtpbmcgY29weSkNCkBAIC0xLDcgKzEsNyBAQA0KIC8qCiAgKiBRRU1VIEpBWlogUkM0 MDMwIGNoaXBzZXQKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOCBIZXJ2w6kgUG91 c3NpbmVhdQorICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDggSGVydmUgUG91c3NpbmVhdQog ICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICAqIG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBk ZWFsCkBAIC0yMywxNSArMjMsNDMgQEANCiAgKi8KIAogI2luY2x1ZGUgImh3LmgiCisjaW5j bHVkZSAibWlwcy5oIgogI2luY2x1ZGUgInFlbXUtdGltZXIuaCIKIAorLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogZGVi dWcgcmM0MDMwICovCisKIC8vI2RlZmluZSBERUJVR19SQzQwMzAKKy8vI2RlZmluZSBERUJV R19SQzQwMzBfRE1BCiAKICNpZmRlZiBERUJVR19SQzQwMzAKKyNkZWZpbmUgRFBSSU5URihm bXQsIGFyZ3MuLi4pIFwKK2RvIHsgcHJpbnRmKCJyYzQwMzA6ICIgZm10ICwgIyNhcmdzKTsg fSB3aGlsZSAoMCkKIHN0YXRpYyBjb25zdCBjaGFyKiBpcnFfbmFtZXNbXSA9IHsgInBhcmFs bGVsIiwgImZsb3BweSIsICJzb3VuZCIsICJ2aWRlbyIsCiAgICAgICAgICAgICAibmV0d29y ayIsICJzY3NpIiwgImtleWJvYXJkIiwgIm1vdXNlIiwgInNlcmlhbDAiLCAic2VyaWFsMSIg fTsKKyNlbHNlCisjZGVmaW5lIERQUklOVEYoZm10LCBhcmdzLi4uKQogI2VuZGlmCiAKKyNk ZWZpbmUgUkM0MDMwX0VSUk9SKGZtdCwgYXJncy4uLikgXAorZG8geyBwcmludGYoInJjNDAz MCBFUlJPUjogJXM6ICIgZm10LCBfX2Z1bmNfXyAsICMjYXJncyk7IH0gd2hpbGUgKDApCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKy8qIHJjNDAzMCBlbXVsYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKi8KKwordHlwZWRlZiBzdHJ1Y3QgZG1hX3BhZ2V0YWJsZV9lbnRyeSB7Cisg ICAgaW50MzJfdCBmcmFtZTsKKyAgICBpbnQzMl90IG93bmVyOworfSBfX2F0dHJpYnV0ZV9f KChwYWNrZWQpKSBkbWFfcGFnZXRhYmxlX2VudHJ5OworCisjZGVmaW5lIERNQV9QQUdFU0la RSAgICA0MDk2CisjZGVmaW5lIERNQV9SRUdfRU5BQkxFICAxCisjZGVmaW5lIERNQV9SRUdf Q09VTlQgICAyCisjZGVmaW5lIERNQV9SRUdfQUREUkVTUyAzCisKKyNkZWZpbmUgRE1BX0ZM QUdfRU5BQkxFICAgICAweDEKKyNkZWZpbmUgRE1BX0ZMQUdfTUVNX1RPX0RFViAweDIKKwog dHlwZWRlZiBzdHJ1Y3QgcmM0MDMwU3RhdGUKIHsKICAgICB1aW50MzJfdCBjb25maWc7IC8q IDB4MDAwMDogUkM0MDMwIGNvbmZpZyByZWdpc3RlciAqLwpAQCAtMzksOCArNjcsMTAgQEAN CiAKICAgICAvKiBETUEgKi8KICAgICB1aW50MzJfdCBkbWFfcmVnc1s4XVs0XTsKLSAgICB1 aW50MzJfdCBkbWFfdGxfYmFzZTsgLyogMHgwMDE4OiBETUEgdHJhbnNsLiB0YWJsZSBiYXNl ICovCisgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGRtYV90bF9iYXNlOyAvKiAweDAwMTg6IERN QSB0cmFuc2wuIHRhYmxlIGJhc2UgKi8KICAgICB1aW50MzJfdCBkbWFfdGxfbGltaXQ7IC8q IDB4MDAyMDogRE1BIHRyYW5zbC4gdGFibGUgbGltaXQgKi8KKyAgICBkbWFfcGFnZXRhYmxl X2VudHJ5ICpkbWFfdGFibGU7CisgICAgdWludDMyX3QgZG1hX3RhYmxlX2NvdW50OwogCiAg ICAgLyogY2FjaGUgKi8KICAgICB1aW50MzJfdCByZW1vdGVfZmFpbGVkX2FkZHJlc3M7IC8q IDB4MDAzODogUmVtb3RlIEZhaWxlZCBBZGRyZXNzICovCkBAIC01MCw3ICs4MCw2IEBADQog ICAgIHVpbnQzMl90IGNhY2hlX2JtYXNrOyAvKiAweDAwNTg6IEkvTyBDYWNoZSBCeXRlIE1h c2sgKi8KICAgICB1aW50MzJfdCBjYWNoZV9id2luOyAvKiAweDAwNjA6IEkvTyBDYWNoZSBC dWZmZXIgV2luZG93ICovCiAKLSAgICB1aW50MzJfdCBvZmZzZXQyMDg7CiAgICAgdWludDMy X3Qgb2Zmc2V0MjEwOwogICAgIHVpbnQzMl90IG52cmFtX3Byb3RlY3Q7IC8qIDB4MDIyMDog TlYgcmFtIHByb3RlY3QgcmVnaXN0ZXIgKi8KICAgICB1aW50MzJfdCBvZmZzZXQyMzg7CkBA IC02MiwxMSArOTEsMzMgQEANCiAgICAgUUVNVVRpbWVyICpwZXJpb2RpY190aW1lcjsKICAg ICB1aW50MzJfdCBpdHI7IC8qIEludGVydmFsIHRpbWVyIHJlbG9hZCAqLwogCi0gICAgdWlu dDMyX3QgZHVtbXkzMjsKICAgICBxZW11X2lycSB0aW1lcl9pcnE7CiAgICAgcWVtdV9pcnEg amF6el9idXNfaXJxOwogfSByYzQwMzBTdGF0ZTsKIAorc3RhdGljIHZvaWQgcmVsb2FkX2Rt YV90YWJsZShyYzQwMzBTdGF0ZSAqcykKK3sKKyAgICAvKiBETUEgdHJhbnNsLiB0YWJsZSBp cyBpbiBtZW1vcnkgYXQgdmlydHVhbCBhZGRyZXNzCisgICAgICogZG1hX3RsX2Jhc2UsIGFu ZCBpcyBkbWFfdGxfbGltaXQgYnl0ZXMgbG9uZyAqLworCisgICAgdGFyZ2V0X3BoeXNfYWRk cl90IGFkZHIgPSBzLT5kbWFfdGxfYmFzZTsKKworI2lmZGVmIERFQlVHX1JDNDAzMF9ETUEK KyAgICBwcmludGYoInJjNDAzMCBkbWE6IFJlYWRpbmcgRE1BIHRhYmxlIGF0ICIgVEFSR0VU X0ZNVF9seCAiLCBzaXplIGlzICV1IGJ5dGVzXG4iLAorICAgICAgICBzLT5kbWFfdGxfYmFz ZSwgcy0+ZG1hX3RsX2xpbWl0KTsKKyNlbmRpZgorCisgICAgaWYgKHMtPmRtYV90YWJsZSkK KyAgICAgICAgcWVtdV9mcmVlKHMtPmRtYV90YWJsZSk7CisKKyAgICBzLT5kbWFfdGFibGUg PSBxZW11X21hbGxvYyhzLT5kbWFfdGxfbGltaXQpOworICAgIGlmICghcy0+ZG1hX3RhYmxl KQorICAgICAgICByZXR1cm47CisgICAgcy0+ZG1hX3RhYmxlX2NvdW50ID0gcy0+ZG1hX3Rs X2xpbWl0IC8gc2l6ZW9mKGRtYV9wYWdldGFibGVfZW50cnkpOworCisgICAgY3B1X21lbW9y eV9yd19kZWJ1ZyhjcHVfc2luZ2xlX2VudiwgYWRkciwgKHVpbnQ4X3QgKilzLT5kbWFfdGFi bGUsIHMtPmRtYV90bF9saW1pdCwgMCk7Cit9CisKIHN0YXRpYyB2b2lkIHNldF9uZXh0X3Rp Y2socmM0MDMwU3RhdGUgKnMpCiB7CiAgICAgcWVtdV9pcnFfbG93ZXIocy0+dGltZXJfaXJx KTsKQEAgLTE2NCw3ICsyMTUsNyBAQA0KICAgICBjYXNlIDB4MDFkMDoKICAgICBjYXNlIDB4 MDFkODoKICAgICBjYXNlIDB4MDFlMDoKLSAgICBjYXNlIDB4MWU4OgorICAgIGNhc2UgMHgw MWU4OgogICAgIGNhc2UgMHgwMWYwOgogICAgIGNhc2UgMHgwMWY4OgogICAgICAgICB7CkBA IC0xNzUsNyArMjI2LDcgQEANCiAgICAgICAgIGJyZWFrOwogICAgIC8qIE9mZnNldCAweDAy MDggKi8KICAgICBjYXNlIDB4MDIwODoKLSAgICAgICAgdmFsID0gcy0+b2Zmc2V0MjA4Owor ICAgICAgICB2YWwgPSAwOwogICAgICAgICBicmVhazsKICAgICAvKiBPZmZzZXQgMHgwMjEw ICovCiAgICAgY2FzZSAweDAyMTA6CkBAIC0xODcsNyArMjM4LDcgQEANCiAgICAgICAgIGJy ZWFrOwogICAgIC8qIEludGVydmFsIHRpbWVyIGNvdW50ICovCiAgICAgY2FzZSAweDAyMzA6 Ci0gICAgICAgIHZhbCA9IHMtPmR1bW15MzI7CisgICAgICAgIHZhbCA9IDA7CiAgICAgICAg IHFlbXVfaXJxX2xvd2VyKHMtPnRpbWVyX2lycSk7CiAgICAgICAgIGJyZWFrOwogICAgIC8q IE9mZnNldCAweDAyMzggKi8KQEAgLTE5NSwxNyArMjQ2LDEzIEBADQogICAgICAgICB2YWwg PSBzLT5vZmZzZXQyMzg7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0jaWZkZWYg REVCVUdfUkM0MDMwCi0gICAgICAgIHByaW50ZigicmM0MDMwOiBpbnZhbGlkIHJlYWQgWyIg VEFSR0VUX0ZNVF9seCAiXVxuIiwgYWRkcik7Ci0jZW5kaWYKKyAgICAgICAgUkM0MDMwX0VS Uk9SKCJpbnZhbGlkIHJlYWQgWyIgVEFSR0VUX0ZNVF9seCAiXVxuIiwgYWRkcik7CiAgICAg ICAgIHZhbCA9IDA7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotI2lmZGVmIERFQlVHX1JD NDAzMAogICAgIGlmICgoYWRkciAmIH4zKSAhPSAweDIzMCkKLSAgICAgICAgcHJpbnRmKCJy YzQwMzA6IHJlYWQgMHglMDJ4IGF0ICIgVEFSR0VUX0ZNVF9seCAiXG4iLCB2YWwsIGFkZHIp OwotI2VuZGlmCisgICAgICAgIERQUklOVEYoInJlYWQgMHglMDJ4IGF0ICIgVEFSR0VUX0ZN VF9seCAiXG4iLCB2YWwsIGFkZHIpOwogCiAgICAgcmV0dXJuIHZhbDsKIH0KQEAgLTIzMCw5 ICsyNzcsNyBAQA0KICAgICByYzQwMzBTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICBhZGRyICY9 IDB4M2ZmZjsKIAotI2lmZGVmIERFQlVHX1JDNDAzMAotICAgIHByaW50ZigicmM0MDMwOiB3 cml0ZSAweCUwMnggYXQgIiBUQVJHRVRfRk1UX2x4ICJcbiIsIHZhbCwgYWRkcik7Ci0jZW5k aWYKKyAgICBEUFJJTlRGKCJ3cml0ZSAweCUwMnggYXQgIiBUQVJHRVRfRk1UX2x4ICJcbiIs IHZhbCwgYWRkcik7CiAKICAgICBzd2l0Y2ggKGFkZHIgJiB+MHgzKSB7CiAgICAgLyogR2xv YmFsIGNvbmZpZyByZWdpc3RlciAqLwpAQCAtMjQxLDEyICsyODYsMjAgQEANCiAgICAgICAg IGJyZWFrOwogICAgIC8qIERNQSB0cmFuc2wuIHRhYmxlIGJhc2UgKi8KICAgICBjYXNlIDB4 MDAxODoKLSAgICAgICAgcy0+ZG1hX3RsX2Jhc2UgPSB2YWw7CisgICAgICAgIHMtPmRtYV90 bF9iYXNlID0gKGludDMyX3QpdmFsOwogICAgICAgICBicmVhazsKICAgICAvKiBETUEgdHJh bnNsLiB0YWJsZSBsaW1pdCAqLwogICAgIGNhc2UgMHgwMDIwOgogICAgICAgICBzLT5kbWFf dGxfbGltaXQgPSB2YWw7CiAgICAgICAgIGJyZWFrOworICAgIC8qIERNQSB0cmFuc2wuIHRh YmxlIGludmFsaWRhdGVkICovCisgICAgY2FzZSAweDAwMjg6CisgICAgICAgIHJlbG9hZF9k bWFfdGFibGUocyk7CisgICAgICAgIGJyZWFrOworICAgIC8qIENhY2hlIE1haW50ZW5hbmNl ICovCisgICAgY2FzZSAweDAwMzA6CisgICAgICAgIFJDNDAzMF9FUlJPUigiQ2FjaGUgbWFp bnRlbmFuY2Ugbm90IGhhbmRsZWQgeWV0ICh2YWwgMHglMDJ4KVxuIiwgdmFsKTsKKyAgICAg ICAgYnJlYWs7CiAgICAgLyogSS9PIENhY2hlIFBoeXNpY2FsIFRhZyAqLwogICAgIGNhc2Ug MHgwMDQ4OgogICAgICAgICBzLT5jYWNoZV9wdGFnID0gdmFsOwpAQCAtMzIxLDcgKzM3NCw3 IEBADQogICAgIGNhc2UgMHgwMWQwOgogICAgIGNhc2UgMHgwMWQ4OgogICAgIGNhc2UgMHgw MWUwOgotICAgIGNhc2UgMHgxZTg6CisgICAgY2FzZSAweDAxZTg6CiAgICAgY2FzZSAweDAx ZjA6CiAgICAgY2FzZSAweDAxZjg6CiAgICAgICAgIHsKQEAgLTM0MSw5ICszOTQsNyBAQA0K ICAgICAgICAgc2V0X25leHRfdGljayhzKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs dDoKLSNpZmRlZiBERUJVR19SQzQwMzAKLSAgICAgICAgcHJpbnRmKCJyYzQwMzA6IGludmFs aWQgd3JpdGUgb2YgMHglMDJ4IGF0IFsiIFRBUkdFVF9GTVRfbHggIl1cbiIsIHZhbCwgYWRk cik7Ci0jZW5kaWYKKyAgICAgICAgUkM0MDMwX0VSUk9SKCJpbnZhbGlkIHdyaXRlIG9mIDB4 JTAyeCBhdCBbIiBUQVJHRVRfRk1UX2x4ICJdXG4iLCB2YWwsIGFkZHIpOwogICAgICAgICBi cmVhazsKICAgICB9CiB9CkBAIC00MDEsNyArNDUyLDcgQEANCiAjaWZkZWYgREVCVUdfUkM0 MDMwCiAgICAgaWYgKHMtPmlzcl9qYXp6ICE9IDApIHsKICAgICAgICAgdWludDMyX3QgaXJx ID0gMDsKLSAgICAgICAgcHJpbnRmKCJqYXp6IHBlbmRpbmc6Iik7CisgICAgICAgIERQUklO VEYoInBlbmRpbmcgaXJxczoiKTsKICAgICAgICAgZm9yIChpcnEgPSAwOyBpcnEgPCBzaXpl b2YoaXJxX25hbWVzKS9zaXplb2YoaXJxX25hbWVzWzBdKTsgaXJxKyspIHsKICAgICAgICAg ICAgIGlmIChzLT5pc3JfamF6eiAmICgxIDw8IGlycSkpIHsKICAgICAgICAgICAgICAgICBw cmludGYoIiAlcyIsIGlycV9uYW1lc1tpcnFdKTsKQEAgLTQ0MSw3ICs0OTIsNyBAQA0KICAg ICBxZW11X2lycV9yYWlzZShzLT50aW1lcl9pcnEpOwogfQogCi1zdGF0aWMgdWludDMyX3Qg aW50X3JlYWRiKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCitzdGF0 aWMgdWludDMyX3QgamF6emlvX3JlYWR3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRk cl90IGFkZHIpCiB7CiAgICAgcmM0MDMwU3RhdGUgKnMgPSBvcGFxdWU7CiAgICAgdWludDMy X3QgdmFsOwpAQCAtNDQ5LDE0ICs1MDAsMTQgQEANCiAgICAgYWRkciAmPSAweGZmZjsKIAog ICAgIHN3aXRjaCAoYWRkcikgeworICAgIC8qIExvY2FsIGJ1cyBpbnQgc291cmNlICovCiAg ICAgY2FzZSAweDAwOiB7Ci0gICAgICAgIC8qIExvY2FsIGJ1cyBpbnQgc291cmNlICovCiAg ICAgICAgIHVpbnQzMl90IHBlbmRpbmcgPSBzLT5pc3JfamF6eiAmIHMtPmltcl9qYXp6Owog ICAgICAgICB2YWwgPSAwOwogICAgICAgICBpcnEgPSAwOwogICAgICAgICB3aGlsZSAocGVu ZGluZykgewogICAgICAgICAgICAgaWYgKHBlbmRpbmcgJiAxKSB7Ci0gICAgICAgICAgICAg ICAgLy9wcmludGYoInJldHVybmluZyBpcnEgJXNcbiIsIGlycV9uYW1lc1tpcnFdKTsKKyAg ICAgICAgICAgICAgICBEUFJJTlRGKCJyZXR1cm5pbmcgaXJxICVzXG4iLCBpcnFfbmFtZXNb aXJxXSk7CiAgICAgICAgICAgICAgICAgdmFsID0gKGlycSArIDEpIDw8IDI7CiAgICAgICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00NjUsMTAwICs1MTYsOTMgQEAN CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIC8qIExvY2FsIGJ1cyBp bnQgZW5hYmxlIG1hc2sgKi8KKyAgICBjYXNlIDB4MDI6CisgICAgICAgIHZhbCA9IHMtPmlt cl9qYXp6OworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotI2lmZGVmIERFQlVHX1JD NDAzMAotICAgICAgICAgICAgcHJpbnRmKCJyYzQwMzA6IChpbnRlcnJ1cHQgY29udHJvbGxl cikgaW52YWxpZCByZWFkIFsiIFRBUkdFVF9GTVRfbHggIl1cbiIsIGFkZHIpOwotI2VuZGlm Ci0gICAgICAgICAgICB2YWwgPSAwOworICAgICAgICBSQzQwMzBfRVJST1IoIihqYXp6IGlv IGNvbnRyb2xsZXIpIGludmFsaWQgcmVhZCBbIiBUQVJHRVRfRk1UX2x4ICJdXG4iLCBhZGRy KTsKKyAgICAgICAgdmFsID0gMDsKICAgICB9CiAKLSNpZmRlZiBERUJVR19SQzQwMzAKLSAg ICBwcmludGYoInJjNDAzMDogKGludGVycnVwdCBjb250cm9sbGVyKSByZWFkIDB4JTAyeCBh dCAiIFRBUkdFVF9GTVRfbHggIlxuIiwgdmFsLCBhZGRyKTsKLSNlbmRpZgorICAgIERQUklO VEYoIihqYXp6IGlvIGNvbnRyb2xsZXIpIHJlYWQgMHglMDR4IGF0ICIgVEFSR0VUX0ZNVF9s eCAiXG4iLCB2YWwsIGFkZHIpOwogCiAgICAgcmV0dXJuIHZhbDsKIH0KIAotc3RhdGljIHVp bnQzMl90IGludF9yZWFkdyh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRy KQorc3RhdGljIHVpbnQzMl90IGphenppb19yZWFkYih2b2lkICpvcGFxdWUsIHRhcmdldF9w aHlzX2FkZHJfdCBhZGRyKQogewogICAgIHVpbnQzMl90IHY7Ci0gICAgdiA9IGludF9yZWFk YihvcGFxdWUsIGFkZHIpOwotICAgIHYgfD0gaW50X3JlYWRiKG9wYXF1ZSwgYWRkciArIDEp IDw8IDg7Ci0gICAgcmV0dXJuIHY7CisgICAgdiA9IGphenppb19yZWFkdyhvcGFxdWUsIGFk ZHIgJiB+MHgxKTsKKyAgICByZXR1cm4gKHYgPj4gKDggKiAoYWRkciAmIDB4MSkpKSAmIDB4 ZmY7CiB9CiAKLXN0YXRpYyB1aW50MzJfdCBpbnRfcmVhZGwodm9pZCAqb3BhcXVlLCB0YXJn ZXRfcGh5c19hZGRyX3QgYWRkcikKK3N0YXRpYyB1aW50MzJfdCBqYXp6aW9fcmVhZGwodm9p ZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKIHsKICAgICB1aW50MzJfdCB2 OwotICAgIHYgPSBpbnRfcmVhZGIob3BhcXVlLCBhZGRyKTsKLSAgICB2IHw9IGludF9yZWFk YihvcGFxdWUsIGFkZHIgKyAxKSA8PCA4OwotICAgIHYgfD0gaW50X3JlYWRiKG9wYXF1ZSwg YWRkciArIDIpIDw8IDE2OwotICAgIHYgfD0gaW50X3JlYWRiKG9wYXF1ZSwgYWRkciArIDMp IDw8IDI0OworICAgIHYgPSBqYXp6aW9fcmVhZHcob3BhcXVlLCBhZGRyKTsKKyAgICB2IHw9 IGphenppb19yZWFkdyhvcGFxdWUsIGFkZHIgKyAyKSA8PCAxNjsKICAgICByZXR1cm4gdjsK IH0KIAotc3RhdGljIHZvaWQgaW50X3dyaXRlYih2b2lkICpvcGFxdWUsIHRhcmdldF9waHlz X2FkZHJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCitzdGF0aWMgdm9pZCBqYXp6aW9fd3JpdGV3 KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90IHZhbCkK IHsKICAgICByYzQwMzBTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICBhZGRyICY9IDB4ZmZmOwog Ci0jaWZkZWYgREVCVUdfUkM0MDMwCi0gICAgcHJpbnRmKCJyYzQwMzA6IChpbnRlcnJ1cHQg Y29udHJvbGxlcikgd3JpdGUgMHglMDJ4IGF0ICIgVEFSR0VUX0ZNVF9seCAiXG4iLCB2YWws IGFkZHIpOwotI2VuZGlmCisgICAgRFBSSU5URigiKGphenogaW8gY29udHJvbGxlcikgd3Jp dGUgMHglMDR4IGF0ICIgVEFSR0VUX0ZNVF9seCAiXG4iLCB2YWwsIGFkZHIpOwogCiAgICAg c3dpdGNoIChhZGRyKSB7CiAgICAgLyogTG9jYWwgYnVzIGludCBlbmFibGUgbWFzayAqLwog ICAgIGNhc2UgMHgwMjoKLSAgICAgICAgcy0+aW1yX2phenogPSAocy0+aW1yX2phenogJiAw eGZmMDApIHwgKHZhbCA8PCAwKTsgdXBkYXRlX2phenpfaXJxKHMpOworICAgICAgICBzLT5p bXJfamF6eiA9IHZhbDsKKyAgICAgICAgdXBkYXRlX2phenpfaXJxKHMpOwogICAgICAgICBi cmVhazsKLSAgICBjYXNlIDB4MDM6Ci0gICAgICAgIHMtPmltcl9qYXp6ID0gKHMtPmltcl9q YXp6ICYgMHgwMGZmKSB8ICh2YWwgPDwgOCk7IHVwZGF0ZV9qYXp6X2lycShzKTsKLSAgICAg ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSNpZmRlZiBERUJVR19SQzQwMzAKLSAgICAgICAg cHJpbnRmKCJyYzQwMzA6IChpbnRlcnJ1cHQgY29udHJvbGxlcikgaW52YWxpZCB3cml0ZSBv ZiAweCUwMnggYXQgWyIgVEFSR0VUX0ZNVF9seCAiXVxuIiwgdmFsLCBhZGRyKTsKLSNlbmRp ZgorICAgICAgICBSQzQwMzBfRVJST1IoIihqYXp6IGlvIGNvbnRyb2xsZXIpIGludmFsaWQg d3JpdGUgb2YgMHglMDR4IGF0IFsiIFRBUkdFVF9GTVRfbHggIl1cbiIsIHZhbCwgYWRkcik7 CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgaW50X3dyaXRldyh2 b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCitz dGF0aWMgdm9pZCBqYXp6aW9fd3JpdGViKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRk cl90IGFkZHIsIHVpbnQzMl90IHZhbCkKIHsKLSAgICBpbnRfd3JpdGViKG9wYXF1ZSwgYWRk ciwgdmFsICYgMHhmZik7Ci0gICAgaW50X3dyaXRlYihvcGFxdWUsIGFkZHIgKyAxLCAodmFs ID4+IDgpICYgMHhmZik7CisgICAgdWludDMyX3Qgb2xkX3ZhbCA9IGphenppb19yZWFkdyhv cGFxdWUsIGFkZHIgJiB+MHgxKTsKKworICAgIHN3aXRjaCAoYWRkciAmIDEpIHsKKyAgICBj YXNlIDA6CisgICAgICAgIHZhbCA9IHZhbCB8IChvbGRfdmFsICYgMHhmZjAwKTsKKyAgICAg ICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICB2YWwgPSAodmFsIDw8IDgpIHwgKG9s ZF92YWwgJiAweDAwZmYpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgamF6emlvX3dy aXRldyhvcGFxdWUsIGFkZHIgJiB+MHgxLCB2YWwpOwogfQogCi1zdGF0aWMgdm9pZCBpbnRf d3JpdGVsKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90 IHZhbCkKK3N0YXRpYyB2b2lkIGphenppb193cml0ZWwodm9pZCAqb3BhcXVlLCB0YXJnZXRf cGh5c19hZGRyX3QgYWRkciwgdWludDMyX3QgdmFsKQogewotICAgIGludF93cml0ZWIob3Bh cXVlLCBhZGRyLCB2YWwgJiAweGZmKTsKLSAgICBpbnRfd3JpdGViKG9wYXF1ZSwgYWRkciAr IDEsICh2YWwgPj4gOCkgJiAweGZmKTsKLSAgICBpbnRfd3JpdGViKG9wYXF1ZSwgYWRkciAr IDIsICh2YWwgPj4gMTYpICYgMHhmZik7Ci0gICAgaW50X3dyaXRlYihvcGFxdWUsIGFkZHIg KyAzLCAodmFsID4+IDI0KSAmIDB4ZmYpOworICAgIGphenppb193cml0ZXcob3BhcXVlLCBh ZGRyLCB2YWwgJiAweGZmZmYpOworICAgIGphenppb193cml0ZXcob3BhcXVlLCBhZGRyICsg MiwgKHZhbCA+PiAxNikgJiAweGZmZmYpOwogfQogCi1zdGF0aWMgQ1BVUmVhZE1lbW9yeUZ1 bmMgKmludF9yZWFkWzNdID0gewotICAgIGludF9yZWFkYiwKLSAgICBpbnRfcmVhZHcsCi0g ICAgaW50X3JlYWRsLAorc3RhdGljIENQVVJlYWRNZW1vcnlGdW5jICpqYXp6aW9fcmVhZFsz XSA9IHsKKyAgICBqYXp6aW9fcmVhZGIsCisgICAgamF6emlvX3JlYWR3LAorICAgIGphenpp b19yZWFkbCwKIH07CiAKLXN0YXRpYyBDUFVXcml0ZU1lbW9yeUZ1bmMgKmludF93cml0ZVsz XSA9IHsKLSAgICBpbnRfd3JpdGViLAotICAgIGludF93cml0ZXcsCi0gICAgaW50X3dyaXRl bCwKK3N0YXRpYyBDUFVXcml0ZU1lbW9yeUZ1bmMgKmphenppb193cml0ZVszXSA9IHsKKyAg ICBqYXp6aW9fd3JpdGViLAorICAgIGphenppb193cml0ZXcsCisgICAgamF6emlvX3dyaXRl bCwKIH07CiAKLSNkZWZpbmUgRzM2NF81MTJLQl9SQU0gKDB4MCkKLSNkZWZpbmUgRzM2NF8y TUJfUkFNICAgKDB4MSkKLSNkZWZpbmUgRzM2NF84TUJfUkFNICAgKDB4MikKLSNkZWZpbmUg RzM2NF8zMk1CX1JBTSAgKDB4MykKLQogc3RhdGljIHZvaWQgcmM0MDMwX3Jlc2V0KHZvaWQg Km9wYXF1ZSkKIHsKICAgICByYzQwMzBTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICBpbnQgaTsK IAotICAgIHMtPmNvbmZpZyA9IChHMzY0XzJNQl9SQU0gPDwgOCkgfCAweDA0OworICAgIHMt PmNvbmZpZyA9IDB4MTA0OwogICAgIHMtPmludmFsaWRfYWRkcmVzc19yZWdpc3RlciA9IDA7 CiAKICAgICBtZW1zZXQocy0+ZG1hX3JlZ3MsIDAsIHNpemVvZihzLT5kbWFfcmVncykpOwpA QCAtNTY4LDcgKzYxMiw2IEBADQogICAgIHMtPmNhY2hlX3B0YWcgPSBzLT5jYWNoZV9sdGFn ID0gMDsKICAgICBzLT5jYWNoZV9ibWFzayA9IHMtPmNhY2hlX2J3aW4gPSAwOwogCi0gICAg cy0+b2Zmc2V0MjA4ID0gMDsKICAgICBzLT5vZmZzZXQyMTAgPSAweDE4MTg2OwogICAgIHMt Pm52cmFtX3Byb3RlY3QgPSA3OwogICAgIHMtPm9mZnNldDIzOCA9IDc7CkBAIC01NzcsMjEg KzYyMCw2NiBAQA0KICAgICBzLT5pbXJfamF6eiA9IHMtPmlzcl9qYXp6ID0gMDsKIAogICAg IHMtPml0ciA9IDA7Ci0gICAgcy0+ZHVtbXkzMiA9IDA7CiAKICAgICBxZW11X2lycV9sb3dl cihzLT50aW1lcl9pcnEpOwogICAgIHFlbXVfaXJxX2xvd2VyKHMtPmphenpfYnVzX2lycSk7 CiB9CiAKLXFlbXVfaXJxICpyYzQwMzBfaW5pdChxZW11X2lycSB0aW1lciwgcWVtdV9pcnEg amF6el9idXMpCitzdGF0aWMgdm9pZCByYzQwMzBfbWVtb3J5X2RtYV9ydyh2b2lkICpvcGFx dWUsIGludCBjaGFubmVsLCB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBpc193cml0ZSkK IHsKKyAgICByYzQwMzBTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAgICB0YXJnZXRfcGh5c19hZGRy X3QgYWRkcjsKKyAgICBkbWFfcGFnZXRhYmxlX2VudHJ5ICplbnRyeTsKKyAgICBpbnQgaW5k ZXg7CisKKyAgICAvKiBYWFg6IHJldHVybiBlcnJvcnMgdG8gdGhlIGNhbGxlcj8gKi8KKwor ICAgIC8qIENoZWNrIERNQSBjaGFubmVsIGNvbnNpc3RlbmN5ICovCisgICAgaWYgKCEocy0+ ZG1hX3JlZ3NbY2hhbm5lbF1bRE1BX1JFR19FTkFCTEVdICYgRE1BX0ZMQUdfRU5BQkxFKSkg cmV0dXJuOworICAgIGlmIChpc193cml0ZSAmJiAocy0+ZG1hX3JlZ3NbY2hhbm5lbF1bRE1B X1JFR19FTkFCTEVdICYgRE1BX0ZMQUdfTUVNX1RPX0RFVikpIHJldHVybjsKKyAgICBpZiAo IWlzX3dyaXRlICYmICEocy0+ZG1hX3JlZ3NbY2hhbm5lbF1bRE1BX1JFR19FTkFCTEVdICYg RE1BX0ZMQUdfTUVNX1RPX0RFVikpIHJldHVybjsKKyAgICBpZiAobGVuID4gcy0+ZG1hX3Jl Z3NbY2hhbm5lbF1bRE1BX1JFR19DT1VOVF0pIGxlbiA9IHMtPmRtYV9yZWdzW2NoYW5uZWxd W0RNQV9SRUdfQ09VTlRdOworCisgICAgLyogR2V0IERNQSB0cmFuc2xhdGlvbiB0YWJsZSBl bnRyeSAqLworICAgIGlmICghcy0+ZG1hX3RhYmxlKSByZXR1cm47CisgICAgaW5kZXggPSBz LT5kbWFfcmVnc1tjaGFubmVsXVtETUFfUkVHX0FERFJFU1NdIC8gRE1BX1BBR0VTSVpFOwor ICAgIGlmIChpbmRleCA+IHMtPmRtYV90YWJsZV9jb3VudCkgcmV0dXJuOworICAgIGVudHJ5 ID0gJnMtPmRtYV90YWJsZVtpbmRleF07CisKKyAgICAvKiBSZWFkL3dyaXRlIGRhdGEgYXQg cmlnaHQgcGxhY2UgKi8KKyAgICBhZGRyID0gZW50cnktPmZyYW1lICsgKHMtPmRtYV9yZWdz W2NoYW5uZWxdW0RNQV9SRUdfQUREUkVTU10gJiAoRE1BX1BBR0VTSVpFIC0gMSkpOworICAg IGNwdV9waHlzaWNhbF9tZW1vcnlfcncoYWRkciwgYnVmLCBsZW4sIGlzX3dyaXRlKTsKKyAg ICBzLT5kbWFfcmVnc1tjaGFubmVsXVtETUFfUkVHX0NPVU5UXSAtPSBsZW47CisKKyNpZmRl ZiBERUJVR19SQzQwMzBfRE1BCisgICAgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaWYg KGlzX3dyaXRlKQorICAgICAgICAgICAgcHJpbnRmKCJyYzQwMzAgZG1hOiBDb3B5aW5nICVk IGJ5dGVzIGZyb20gaG9zdCAlcCB0byBndWVzdCAiIFRBUkdFVF9GTVRfbHggIlxuIiwKKyAg ICAgICAgICAgICAgICBsZW4sIGJ1ZiwgYWRkcik7CisgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIHByaW50ZigicmM0MDMwIGRtYTogQ29weWluZyAlZCBieXRlcyBmcm9tIGd1ZXN0ICIg VEFSR0VUX0ZNVF9seCAiIHRvIGhvc3QgJXBcbiIsCisgICAgICAgICAgICAgICAgbGVuLCBh ZGRyLCBidWYpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAg ICAgICBwcmludGYoIiVjIiwgaXNwcmludChidWZbaV0pID8gYnVmW2ldIDogJy4nKTsKKyAg ICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KKyNlbmRpZgorfQorCitxZW11X2lycSAqcmM0 MDMwX2luaXQocWVtdV9pcnEgdGltZXIsIHFlbXVfaXJxIGphenpfYnVzLCB2b2lkICoqZG1h X29wYXF1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBkbWFfZnVuY3Rpb24gKmRtYV9mdW5j KQorewogICAgIHJjNDAzMFN0YXRlICpzOwotICAgIGludCBzX2NoaXBzZXQsIHNfaW50Owor ICAgIGludCBzX2NoaXBzZXQsIHNfamF6emlvOwogCiAgICAgcyA9IHFlbXVfbWFsbG9jeihz aXplb2YocmM0MDMwU3RhdGUpKTsKICAgICBpZiAoIXMpCiAgICAgICAgIHJldHVybiBOVUxM OwogCisgICAgKmRtYV9vcGFxdWUgPSBzOworICAgICpkbWFfZnVuYyA9IHJjNDAzMF9tZW1v cnlfZG1hX3J3OworCiAgICAgcy0+cGVyaW9kaWNfdGltZXIgPSBxZW11X25ld190aW1lcih2 bV9jbG9jaywgcmM0MDMwX3BlcmlvZGljX3RpbWVyLCBzKTsKICAgICBzLT50aW1lcl9pcnEg PSB0aW1lcjsKICAgICBzLT5qYXp6X2J1c19pcnEgPSBqYXp6X2J1czsKQEAgLTYwMSw4ICs2 ODksOCBAQA0KIAogICAgIHNfY2hpcHNldCA9IGNwdV9yZWdpc3Rlcl9pb19tZW1vcnkoMCwg cmM0MDMwX3JlYWQsIHJjNDAzMF93cml0ZSwgcyk7CiAgICAgY3B1X3JlZ2lzdGVyX3BoeXNp Y2FsX21lbW9yeSgweDgwMDAwMDAwLCAweDMwMCwgc19jaGlwc2V0KTsKLSAgICBzX2ludCA9 IGNwdV9yZWdpc3Rlcl9pb19tZW1vcnkoMCwgaW50X3JlYWQsIGludF93cml0ZSwgcyk7Ci0g ICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeSgweGYwMDAwMDAwLCAweDAwMDAxMDAw LCBzX2ludCk7CisgICAgc19qYXp6aW8gPSBjcHVfcmVnaXN0ZXJfaW9fbWVtb3J5KDAsIGph enppb19yZWFkLCBqYXp6aW9fd3JpdGUsIHMpOworICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNh bF9tZW1vcnkoMHhmMDAwMDAwMCwgMHgwMDAwMTAwMCwgc19qYXp6aW8pOwogCiAgICAgcmV0 dXJuIHFlbXVfYWxsb2NhdGVfaXJxcyhyYzQwMzBfaXJxX2phenpfcmVxdWVzdCwgcywgMTYp OwogfQo= --------------010608030406020700060902--