From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Z1tJA-0007ww-IQ for mharc-grub-devel@gnu.org; Mon, 08 Jun 2015 05:25:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35323) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z1tJ5-0007wn-AB for grub-devel@gnu.org; Mon, 08 Jun 2015 05:25:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z1tJ0-0000er-5C for grub-devel@gnu.org; Mon, 08 Jun 2015 05:25:23 -0400 Received: from mail-wi0-f174.google.com ([209.85.212.174]:34519) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z1tIz-0000eh-OJ for grub-devel@gnu.org; Mon, 08 Jun 2015 05:25:18 -0400 Received: by wibut5 with SMTP id ut5so79270268wib.1 for ; Mon, 08 Jun 2015 02:25:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=FG7+KaBu+5V+qa27gDm6p2XAXIQrjdcSjQQgWscXeIg=; b=mY0bF5hJcDFAnY+rwTUsKQE5a4JpyWR7SvETaUFviGLu6MjN55vt3G2zWSo4e/8zbR hpeymaN/geFZrWtFy/N4NW/9LQeun3SRpA0G6We1NKTxIVbT4cAgbXRQSQiQL2wVI7n1 FbFdlB9YckiUQNBHEMGxZtycgmy/zsDdIcoG9d22OsZvKIlFuYH/kXTp5XpGQ/EHHd3u 7hIl0GfKxddIfiL3duNx/xXsa3LfG8jrTcpM/586N1xipvExEk4YMtz92M0IPi0Sy9AQ v8gCzbNLVB43Zb+FTKzsLjuhaIRD2221jj2aJ3XveHOLRF4d28LdncaVtzY/gPaIv8xf KwIw== X-Gm-Message-State: ALoCoQkkxtA8sqB6Vxu6+f4z2H/OI54Qi6/O9VnZEAK/JXz83bcgwtFVe1DU+yk27JM51lhZQUrV MIME-Version: 1.0 X-Received: by 10.194.7.97 with SMTP id i1mr30999952wja.107.1433755516982; Mon, 08 Jun 2015 02:25:16 -0700 (PDT) Received: by 10.194.125.20 with HTTP; Mon, 8 Jun 2015 02:25:16 -0700 (PDT) X-Originating-IP: [107.170.230.69] Date: Mon, 8 Jun 2015 17:25:16 +0800 Message-ID: Subject: [PATCH 1/2] MIPS: Loongson: Add support for Loongson3. From: Heiher To: The development of GNU GRUB Content-Type: multipart/mixed; boundary=047d7b5d86a54965cc0517fe38a6 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.212.174 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Jun 2015 09:25:27 -0000 --047d7b5d86a54965cc0517fe38a6 Content-Type: multipart/alternative; boundary=047d7b5d86a54965c80517fe38a4 --047d7b5d86a54965c80517fe38a4 Content-Type: text/plain; charset=UTF-8 Hi, I have two patches to add support for Loongson 3A/3B. The Loongson 3A/3B use a new boot interface like UEFI. Theses patches tested on Yeeloong 8089(Loongson 2F), Loongson3A ITX and Loongson3B server. -- Best regards! Heiher http://hev.cc --047d7b5d86a54965c80517fe38a4 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

I have two patches to add support fo= r Loongson 3A/3B. The Loongson 3A/3B use a new boot interface like UEFI. Th= eses patches tested on Yeeloong 8089(Loongson 2F), Loongson3A ITX and Loong= son3B server.

--
Best regards!
Heiher
http://hev.cc
--047d7b5d86a54965c80517fe38a4-- --047d7b5d86a54965cc0517fe38a6 Content-Type: text/plain; charset=US-ASCII; name="0001-MIPS-Loongson-Add-support-for-Loongson3.diff" Content-Disposition: attachment; filename="0001-MIPS-Loongson-Add-support-for-Loongson3.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ianp1f140 RnJvbSBmZGYwNTBkNWZiZjZmZWIxNDZkZmVmYzE2NTFmOGRhZmUwZmQ3ZjdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWloZXIgPHJAaGV2LmNjPgpEYXRlOiBGcmksIDEgTWF5IDIw MTUgMjE6NDY6MzkgKzA4MDAKU3ViamVjdDogW1BBVENIIDEvMl0gTUlQUzogTG9vbmdzb246IEFk ZCBzdXBwb3J0IGZvciBMb29uZ3NvbjMuCgotLS0KIGdydWItY29yZS9ib290L21pcHMvc3RhcnR1 cF9yYXcuUyAgICB8ICAxMiArKwogZ3J1Yi1jb3JlL2J1cy9ib25pdG8uYyAgICAgICAgICAgICAg IHwgIDIwICsrLQogZ3J1Yi1jb3JlL2J1cy9wY2kuYyAgICAgICAgICAgICAgICAgIHwgICAyICst CiBncnViLWNvcmUva2Vybi9taXBzL2xvb25nc29uL2luaXQuYyAgfCAgNjYgKysrKysrKy0tLQog Z3J1Yi1jb3JlL2tlcm4vbWlwcy9zdGFydHVwLlMgICAgICAgIHwgICAzICsKIGdydWItY29yZS9s aWIvbWlwcy9sb29uZ3Nvbi9yZWJvb3QuYyB8ICAxNSArKy0KIGdydWItY29yZS9sb2FkZXIvbWlw cy9saW51eC5jICAgICAgICB8IDEyMCArKysrKysrKysrLS0tLS0tLS0KIGdydWItY29yZS90ZXJt L3NlcmlhbC5jICAgICAgICAgICAgICB8ICAgMyArLQogaW5jbHVkZS9ncnViL21pcHMvbG9vbmdz b24uaCAgICAgICAgIHwgICA2ICsKIGluY2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29uL2Jvb3QuaCAg ICB8IDIzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9ncnVi L21pcHMvbG9vbmdzb24va2VybmVsLmggIHwgICAzICstCiBpbmNsdWRlL2dydWIvbWlwcy9sb29u Z3Nvbi9wY2kuaCAgICAgfCAgMjQgKysrLQogaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24vc2Vy aWFsLmggIHwgICA0ICstCiAxMyBmaWxlcyBjaGFuZ2VkLCA0MzAgaW5zZXJ0aW9ucygrKSwgODQg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ncnViL21pcHMvbG9vbmdz b24vYm9vdC5oCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Jvb3QvbWlwcy9zdGFydHVwX3Jhdy5T IGIvZ3J1Yi1jb3JlL2Jvb3QvbWlwcy9zdGFydHVwX3Jhdy5TCmluZGV4IGZkOTVjMzEuLjMzMTYy MzIgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9ib290L21pcHMvc3RhcnR1cF9yYXcuUworKysgYi9n cnViLWNvcmUvYm9vdC9taXBzL3N0YXJ0dXBfcmF3LlMKQEAgLTIzLDYgKzIzLDkgQEAKICNpbmNs dWRlIDxncnViL21hY2hpbmUva2VybmVsLmg+CiAjaW5jbHVkZSA8Z3J1Yi9jcHUva2VybmVsLmg+ CiAjaW5jbHVkZSA8Z3J1Yi9vZmZzZXRzLmg+CisjaWZkZWYgR1JVQl9NQUNISU5FX01JUFNfTE9P TkdTT04KKyNpbmNsdWRlIDxncnViL2NwdS9sb29uZ3Nvbi5oPgorI2VuZGlmCiAKICNkZWZpbmUg QkFTRV9BRERSIDgKIApAQCAtODIsNiArODUsMTUgQEAgY29kZXN0YXJ0OgogCW1vdmUgJHM1LCAk emVybwogCW1vdmUgJHM3LCAkemVybwogCisJLyogVGhlIExvb25nc29uIDNBLzNCIGhhcyBhIG5l dyBib290IGludGVyZmFjZSBhbmQKKwkgICBub3QgY29tcGF0aWFibGUgd2l0aCAyRSBvciAyRi4g Ki8KKwltZmMwICR0MCwgR1JVQl9DUFVfTE9PTkdTT05fQ09QMF9QUklECisJbGkgJHQxLCBHUlVC X0NQVV9MT09OR1NPTl9QUklEX0xPT05HU09OM0EKKwlsaSAkczcsIEdSVUJfQVJDSF9NQUNISU5F X1lFRUxPT05HXzNYCisJc2x0ICR0MCwgJHQwLCAkdDEKKwliZXF6ICR0MCwgY21kbGluZWRvbmUK KwkgbW92ZSAkczUsICRhMgorCiAJLyogJGEyIGhhcyB0aGUgZW52aXJvbm1lbnQuICAqLwogCWFk ZGl1ICR0MCwgJHplcm8sIC0weDEwCiAJYW5kICR0MSwgJGEyLCAkdDAKZGlmZiAtLWdpdCBhL2dy dWItY29yZS9idXMvYm9uaXRvLmMgYi9ncnViLWNvcmUvYnVzL2Jvbml0by5jCmluZGV4IDlhNjNm MDcuLjAwMjMwMzYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9idXMvYm9uaXRvLmMKKysrIGIvZ3J1 Yi1jb3JlL2J1cy9ib25pdG8uYwpAQCAtNDUsOSArNDUsOSBAQCBjb25maWdfYWRkciAoZ3J1Yl9w Y2lfYWRkcmVzc190IGFkZHIpCiAgICAgewogCiAgICAgICBpZiAoYWRkciA+PiAxNikKLQlyZXR1 cm4gKHZvbGF0aWxlIHZvaWQgKikgKEdSVUJfTUFDSElORV9QQ0lfQ09ORlNQQUNFXzNBX0VYVCB8 IGFkZHIpOworCXJldHVybiAodm9sYXRpbGUgdm9pZCAqKSAoR1JVQl9NQUNISU5FX1BDSV9DT05G U1BBQ0VfM1hfRVhUIHwgYWRkcik7CiAgICAgICBlbHNlCi0JcmV0dXJuICh2b2xhdGlsZSB2b2lk ICopIChHUlVCX01BQ0hJTkVfUENJX0NPTkZTUEFDRV8zQSB8IGFkZHIpOworCXJldHVybiAodm9s YXRpbGUgdm9pZCAqKSAoR1JVQl9NQUNISU5FX1BDSV9DT05GU1BBQ0VfM1ggfCBhZGRyKTsKICAg ICB9CiB9CiAKQEAgLTEzMiw2ICsxMzIsMTkgQEAgZ3J1Yl9wY2lfZGV2aWNlX21hcF9yYW5nZSAo Z3J1Yl9wY2lfZGV2aWNlX3QgZGV2IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKIAkgIH0KICAg ICAgIGdydWJfZmF0YWwgKCJPdXQgb2YgUENJIHdpbmRvd3MuIik7CiAgICAgfQorICBlbHNlIGlm IChncnViX2Jvbml0b190eXBlID09IEdSVUJfQk9OSVRPXzNYKQorICAgIHsKKyAgICAgIGlmIChH UlVCX01BQ0hJTkVfUENJX01FTV9CQVNFMF8zWCA8PSBiYXNlICYmCisgICAgICAgICAgR1JVQl9N QUNISU5FX1BDSV9NRU1fQkFTRTBfM1ggKyBHUlVCX01BQ0hJTkVfUENJX01FTV9TSVpFMF8zWCA+ IGJhc2UgKyBzaXplKQorICAgICAgICByZXR1cm4gKHZvaWQgKikgKEdSVUJfTUFDSElORV9QQ0lf TUVNX0FERFIwXzNYIHwgYmFzZSk7CisgICAgICBlbHNlIGlmIChHUlVCX01BQ0hJTkVfUENJX01F TV9CQVNFMV8zWCA8PSBiYXNlICYmCisgICAgICAgICAgR1JVQl9NQUNISU5FX1BDSV9NRU1fQkFT RTFfM1ggKyBHUlVCX01BQ0hJTkVfUENJX01FTV9TSVpFMV8zWCA+IGJhc2UgKyBzaXplKQorICAg ICAgICByZXR1cm4gKHZvaWQgKikgKEdSVUJfTUFDSElORV9QQ0lfTUVNX0FERFIxXzNYIHwgYmFz ZSk7CisgICAgICBlbHNlIGlmIChHUlVCX01BQ0hJTkVfUENJX01FTV9CQVNFMl8zWCA8PSBiYXNl ICYmCisgICAgICAgICAgR1JVQl9NQUNISU5FX1BDSV9NRU1fQkFTRTJfM1ggKyBHUlVCX01BQ0hJ TkVfUENJX01FTV9TSVpFMl8zWCA+IGJhc2UgKyBzaXplKQorICAgICAgICByZXR1cm4gKHZvaWQg KikgKEdSVUJfTUFDSElORV9QQ0lfTUVNX0FERFIyXzNYIHwgYmFzZSk7CisgICAgICBncnViX2Zh dGFsICgiT3V0IG9mIFBDSSB3aW5kb3dzLiIpOworICAgIH0KICAgZWxzZQogICAgIHsKICAgICAg IGludCByZWdpb24gPSAwOwpAQCAtMTczLDQgKzE4Niw3IEBAIGdydWJfcGNpX2RldmljZV91bm1h cF9yYW5nZSAoZ3J1Yl9wY2lfZGV2aWNlX3QgZGV2IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwK IAkgIH0KICAgICAgIGdydWJfZmF0YWwgKCJUcmllZCB0byB1bm1hcCBub3QgbWFwcGVkIHJlZ2lv biIpOwogICAgIH0KKyAgZWxzZSBpZiAoZ3J1Yl9ib25pdG9fdHlwZSA9PSBHUlVCX0JPTklUT18z WCkKKyAgICB7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2J1cy9wY2kuYyBiL2dy dWItY29yZS9idXMvcGNpLmMKaW5kZXggYjM4OGNlNS4uODJkNzg3MCAxMDA2NDQKLS0tIGEvZ3J1 Yi1jb3JlL2J1cy9wY2kuYworKysgYi9ncnViLWNvcmUvYnVzL3BjaS5jCkBAIC03Miw3ICs3Miw3 IEBAIGdydWJfZG1hX2dldF92aXJ0IChzdHJ1Y3QgZ3J1Yl9wY2lfZG1hX2NodW5rICpjaCkKIGdy dWJfdWludDMyX3QKIGdydWJfZG1hX2dldF9waHlzIChzdHJ1Y3QgZ3J1Yl9wY2lfZG1hX2NodW5r ICpjaCkKIHsKLSAgcmV0dXJuICgoKGdydWJfdWludDMyX3QpIGNoKSAmIDB4MWZmZmZmZmYpIHwg MHg4MDAwMDAwMDsKKyAgcmV0dXJuICgoKGdydWJfdWludDMyX3QpIGNoKSAmIDB4MWZmZmZmZmYp OwogfQogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9sb29uZ3Nvbi9p bml0LmMgYi9ncnViLWNvcmUva2Vybi9taXBzL2xvb25nc29uL2luaXQuYwppbmRleCA3Yjk2NTMx Li4yZGY4ZGZiIDEwMDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9taXBzL2xvb25nc29uL2luaXQu YworKysgYi9ncnViLWNvcmUva2Vybi9taXBzL2xvb25nc29uL2luaXQuYwpAQCAtMjYsNiArMjYs NyBAQAogI2luY2x1ZGUgPGdydWIvbWFjaGluZS90aW1lLmg+CiAjaW5jbHVkZSA8Z3J1Yi9tYWNo aW5lL2tlcm5lbC5oPgogI2luY2x1ZGUgPGdydWIvbWFjaGluZS9tZW1vcnkuaD4KKyNpbmNsdWRl IDxncnViL21hY2hpbmUvYm9vdC5oPgogI2luY2x1ZGUgPGdydWIvbWVtb3J5Lmg+CiAjaW5jbHVk ZSA8Z3J1Yi9taXBzL2xvb25nc29uLmg+CiAjaW5jbHVkZSA8Z3J1Yi9jczU1MzYuaD4KQEAgLTQ0 LDggKzQ1LDkgQEAgZ3J1Yl9tYWNoaW5lX21tYXBfaXRlcmF0ZSAoZ3J1Yl9tZW1vcnlfaG9va190 IGhvb2ssIHZvaWQgKmhvb2tfZGF0YSkKIHsKICAgaG9vayAoR1JVQl9BUkNIX0xPV01FTVBTVEFS VCwgZ3J1Yl9hcmNoX21lbXNpemUgPDwgMjAsCiAJR1JVQl9NRU1PUllfQVZBSUxBQkxFLCBob29r X2RhdGEpOwotICBob29rIChHUlVCX0FSQ0hfSElHSE1FTVBTVEFSVCwgZ3J1Yl9hcmNoX2hpZ2ht ZW1zaXplIDw8IDIwLAotCUdSVUJfTUVNT1JZX0FWQUlMQUJMRSwgaG9va19kYXRhKTsKKyAgaWYg KGdydWJfYm9uaXRvX3R5cGUgIT0gR1JVQl9CT05JVE9fM1gpCisgICAgaG9vayAoR1JVQl9BUkNI X0hJR0hNRU1QU1RBUlQsIGdydWJfYXJjaF9oaWdobWVtc2l6ZSA8PCAyMCwKKwkgIEdSVUJfTUVN T1JZX0FWQUlMQUJMRSwgaG9va19kYXRhKTsKICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CiB9CiAK QEAgLTEyNywyMSArMTI5LDIzIEBAIGdydWJfbWFjaGluZV9pbml0ICh2b2lkKQogICBzd2l0Y2gg KHByaWQpCiAgICAgewogICAgICAgLyogTG9vbmdzb24gMkUuICAqLwotICAgIGNhc2UgMHg2MzAy OgorICAgIGNhc2UgR1JVQl9DUFVfTE9PTkdTT05fUFJJRF9MT09OR1NPTjJFOgogICAgICAgZ3J1 Yl9hcmNoX21hY2hpbmUgPSBHUlVCX0FSQ0hfTUFDSElORV9GVUxPT05HMkU7CiAgICAgICBncnVi X2Jvbml0b190eXBlID0gR1JVQl9CT05JVE9fMkY7CiAgICAgICBicmVhazsKICAgICAgIC8qIExv b25nc29uIDJGLiAgKi8KLSAgICBjYXNlIDB4NjMwMzoKKyAgICBjYXNlIEdSVUJfQ1BVX0xPT05H U09OX1BSSURfTE9PTkdTT04yRjoKICAgICAgIGlmIChncnViX2FyY2hfbWFjaGluZSAhPSBHUlVC X0FSQ0hfTUFDSElORV9GVUxPT05HMkYKIAkgICYmIGdydWJfYXJjaF9tYWNoaW5lICE9IEdSVUJf QVJDSF9NQUNISU5FX1lFRUxPT05HKQogCWdydWJfYXJjaF9tYWNoaW5lID0gR1JVQl9BUkNIX01B Q0hJTkVfWUVFTE9PTkc7CiAgICAgICBncnViX2Jvbml0b190eXBlID0gR1JVQl9CT05JVE9fMkY7 CiAgICAgICBicmVhazsKLSAgICAgIC8qIExvb25nc29uIDNBLiAqLwotICAgIGNhc2UgMHg2MzA1 OgotICAgICAgZ3J1Yl9hcmNoX21hY2hpbmUgPSBHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09OR18z QTsKLSAgICAgIGdydWJfYm9uaXRvX3R5cGUgPSBHUlVCX0JPTklUT18zQTsKKyAgICAgIC8qIExv b25nc29uIDNBLzNCLiAqLworICAgIGNhc2UgR1JVQl9DUFVfTE9PTkdTT05fUFJJRF9MT09OR1NP TjNBOgorICAgIGNhc2UgR1JVQl9DUFVfTE9PTkdTT05fUFJJRF9MT09OR1NPTjNCUjE6CisgICAg Y2FzZSBHUlVCX0NQVV9MT09OR1NPTl9QUklEX0xPT05HU09OM0JSMjoKKyAgICAgIGdydWJfYXJj aF9tYWNoaW5lID0gR1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkdfM1g7CisgICAgICBncnViX2Jv bml0b190eXBlID0gR1JVQl9CT05JVE9fM1g7CiAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1 MCwxMCArMTU0LDQwIEBAIGdydWJfbWFjaGluZV9pbml0ICh2b2lkKQogICAgIHsKICAgICAgIGdy dWJfYXJjaF9idXNjbG9jayA9IDY2MDAwMDAwOwogICAgICAgZ3J1Yl9hcmNoX2NwdWNsb2NrID0g Nzk3MDAwMDAwOworCisgICAgICBpZiAoZ3J1Yl9ib25pdG9fdHlwZSA9PSBHUlVCX0JPTklUT18z WCkKKyAgICAgICAgeworICAgICAgICAgIHN0cnVjdCBlZmlfY3B1aW5mb19sb29uZ3NvbiAqY3B1 aW5mbzsKKworICAgICAgICAgIGNwdWluZm8gPSBncnViX21pcHNfbG9vbmdzb25fcGFyYW1zX2dl dF9jcHUgKGdydWJfYXJjaF9sZWZpKTsKKyAgICAgICAgICBncnViX2FyY2hfY3B1Y2xvY2sgPSBj cHVpbmZvLT5jcHVfY2xvY2tfZnJlcTsKKyAgICAgICAgfQogICAgIH0KIAogICBncnViX2luc3Rh bGxfZ2V0X3RpbWVfbXMgKGdydWJfcnRjX2dldF90aW1lX21zKTsKIAorICBpZiAoZ3J1Yl9ib25p dG9fdHlwZSA9PSBHUlVCX0JPTklUT18zWCkKKyAgICB7CisgICAgICBncnViX3VpbnQzMl90IGk7 CisgICAgICBzdHJ1Y3QgZWZpX21lbW9yeV9tYXBfbG9vbmdzb24gKm1tYXA7CisKKyAgICAgIG1t YXAgPSBncnViX21pcHNfbG9vbmdzb25fcGFyYW1zX2dldF9tZW1vcnkgKGdydWJfYXJjaF9sZWZp KTsKKyAgICAgIGZvciAoaT0wOyBpPG1tYXAtPm5yX21hcDsgaSsrKQorICAgICAgICB7CisgICAg ICAgICAgaWYgKFNZU1RFTV9SQU1fTE9XID09IG1tYXAtPm1hcFtpXS5tZW1fdHlwZSkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgZ3J1Yl9hcmNoX21lbXNpemUgPSBtbWFwLT5tYXBbaV0u bWVtX3NpemU7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgICBpZiAoZ3J1Yl9hcmNoX21lbXNpemUgPT0gMCkKKwlncnViX2ZhdGFsICgiTm8gbWVt b3J5IG1hcCBmb3VuZFxuIik7CisKKyAgICAgIC8qIFdvcmthcm91bmRzIGZvciBvbGQgQklPUywg dGhlIGJvb3QgcGFyYW1zIHN0YXJ0IGF0CisgICAgICAgKiBzeXN0ZW0gcmFtIGxvdyBlbmQgYWRk cmVzcyAtIDUxMmsgKi8KKyAgICAgIGlmIChncnViX3Z0b3AgKCh2b2lkICopIGdydWJfYXJjaF9s ZWZpKSA8IChncnViX2FyY2hfbWVtc2l6ZSA8PCAyMCkpCisgICAgICAgIGdydWJfYXJjaF9tZW1z aXplIC09IDE7CisgICAgfQogICBpZiAoZ3J1Yl9hcmNoX21lbXNpemUgPT0gMCkKICAgICB7CiAg ICAgICBncnViX3BvcnRfdCBzbWJiYXNlOwpAQCAtMjE2LDcgKzI1MCw3IEBAIGdydWJfbWFjaGlu ZV9pbml0ICh2b2lkKQogCiAgIGdydWJfa2V5bGF5b3V0c19pbml0ICgpOwogICBpZiAoZ3J1Yl9h cmNoX21hY2hpbmUgPT0gR1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkcKLSAgICAgIHx8IGdydWJf YXJjaF9tYWNoaW5lID09IEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNBKQorICAgICAgfHwg Z3J1Yl9hcmNoX21hY2hpbmUgPT0gR1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkdfM1gpCiAgICAg Z3J1Yl9hdF9rZXlib2FyZF9pbml0ICgpOwogCiAgIGdydWJfdGVybWluZm9faW5pdCAoKTsKQEAg LTI4OSwxMiArMzIzLDE0IEBAIGdydWJfaGFsdCAodm9pZCkKIAkJICYgfkdSVUJfQ1BVX1lFRUxP T05HX1NIVVRET1dOX0dQSU8sIEdSVUJfQ1BVX0xPT05HU09OX0dQSU9DRkcpOwogICAgICAgZ3J1 Yl9taWxsaXNsZWVwICgxNTAwKTsKICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1JVQl9BUkNIX01B Q0hJTkVfWUVFTE9PTkdfM0E6Ci0gICAgICBncnViX21pbGxpc2xlZXAgKDEpOwotICAgICAgZ3J1 Yl9vdXRiICgweDRlLCBHUlVCX01BQ0hJTkVfUENJX0lPX0JBU0VfM0EgfCAweDY2KTsKLSAgICAg IGdydWJfbWlsbGlzbGVlcCAoMSk7Ci0gICAgICBncnViX291dGIgKDIsIEdSVUJfTUFDSElORV9Q Q0lfSU9fQkFTRV8zQSB8IDB4NjIpOwotICAgICAgZ3J1Yl9taWxsaXNsZWVwICg1MDAwKTsKKyAg ICBjYXNlIEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNYOgorICAgICAgeworCXN0cnVjdCBi b290X3BhcmFtcyAqYnAgPSAoc3RydWN0IGJvb3RfcGFyYW1zICopIGdydWJfYXJjaF9sZWZpOwor ICAgICAgICB2b2lkICgqc2h1dGRvd24pICh2b2lkKSA9ICh2b2lkICopIChsb25nKSBicC0+cmVz ZXRfc3lzdGVtLlNodXRkb3duOworCWlmIChzaHV0ZG93bikKKyAgICAgICAgICBzaHV0ZG93biAo KTsKKwlncnViX21pbGxpc2xlZXAgKDUwMDApOworICAgICAgfQogICAgICAgYnJlYWs7CiAgICAg fQogCmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9taXBzL3N0YXJ0dXAuUyBiL2dydWItY29y ZS9rZXJuL21pcHMvc3RhcnR1cC5TCmluZGV4IDMzN2FjYTkuLjNiMWM3YTkgMTAwNjQ0Ci0tLSBh L2dydWItY29yZS9rZXJuL21pcHMvc3RhcnR1cC5TCisrKyBiL2dydWItY29yZS9rZXJuL21pcHMv c3RhcnR1cC5TCkBAIC00OCw2ICs0OCw5IEBAIFZBUklBQkxFIChncnViX2FyY2hfY3B1Y2xvY2sp CiAJLmxvbmcgMAogVkFSSUFCTEUgKGdydWJfYXJjaF9tZW1zaXplKQogCS5sb25nIDAKKyNpZmRl ZiBHUlVCX01BQ0hJTkVfTUlQU19MT09OR1NPTgorVkFSSUFCTEUgKGdydWJfYXJjaF9sZWZpKQor I2VuZGlmCiBWQVJJQUJMRSAoZ3J1Yl9hcmNoX2hpZ2htZW1zaXplKQogCS5sb25nIDAKICNpZmRl ZiBHUlVCX01BQ0hJTkVfTUlQU19MT09OR1NPTgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9t aXBzL2xvb25nc29uL3JlYm9vdC5jIGIvZ3J1Yi1jb3JlL2xpYi9taXBzL2xvb25nc29uL3JlYm9v dC5jCmluZGV4IGEyMGU1NzQuLmFmYjMwYjYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9saWIvbWlw cy9sb29uZ3Nvbi9yZWJvb3QuYworKysgYi9ncnViLWNvcmUvbGliL21pcHMvbG9vbmdzb24vcmVi b290LmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlIDxncnViL21hY2hpbmUvZWMuaD4KICNp bmNsdWRlIDxncnViL21hY2hpbmUva2VybmVsLmg+CiAjaW5jbHVkZSA8Z3J1Yi9tYWNoaW5lL21l bW9yeS5oPgorI2luY2x1ZGUgPGdydWIvbWFjaGluZS9ib290Lmg+CiAjaW5jbHVkZSA8Z3J1Yi9t aXNjLmg+CiAjaW5jbHVkZSA8Z3J1Yi9wY2kuaD4KICNpbmNsdWRlIDxncnViL2NzNTUzNi5oPgpA QCAtNDksMTIgKzUwLDE0IEBAIGdydWJfcmVib290ICh2b2lkKQogICAgIGNhc2UgR1JVQl9BUkNI X01BQ0hJTkVfWUVFTE9PTkc6CiAgICAgICBncnViX3dyaXRlX2VjIChHUlVCX01BQ0hJTkVfRUNf Q09NTUFORF9SRUJPT1QpOwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUlVCX0FSQ0hfTUFDSElO RV9ZRUVMT09OR18zQToKLSAgICAgIGdydWJfbWlsbGlzbGVlcCAoMSk7Ci0gICAgICBncnViX291 dGIgKDB4NGUsIEdSVUJfTUFDSElORV9QQ0lfSU9fQkFTRV8zQSB8IDB4NjYpOwotICAgICAgZ3J1 Yl9taWxsaXNsZWVwICgxKTsKLSAgICAgIGdydWJfb3V0YiAoMSwgR1JVQl9NQUNISU5FX1BDSV9J T19CQVNFXzNBIHwgMHg2Mik7Ci0gICAgICBncnViX21pbGxpc2xlZXAgKDUwMDApOworICAgIGNh c2UgR1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkdfM1g6CisgICAgICB7CisJc3RydWN0IGJvb3Rf cGFyYW1zICpicCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMgKikgZ3J1Yl9hcmNoX2xlZmk7CisgICAg ICAgIHZvaWQgKCpyZWJvb3QpICh2b2lkKSA9ICh2b2lkICopIChsb25nKSBicC0+cmVzZXRfc3lz dGVtLlJlc2V0V2FybTsKKwlpZiAocmVib290KQorICAgICAgICAgIHJlYm9vdCAoKTsKKwlncnVi X21pbGxpc2xlZXAgKDUwMDApOworICAgICAgfQogICAgIH0KICAgZ3J1Yl9taWxsaXNsZWVwICgx NTAwKTsKIApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xvYWRlci9taXBzL2xpbnV4LmMgYi9ncnVi LWNvcmUvbG9hZGVyL21pcHMvbGludXguYwppbmRleCA1ZjM4M2JlLi5iOWU0MjAzIDEwMDY0NAot LS0gYS9ncnViLWNvcmUvbG9hZGVyL21pcHMvbGludXguYworKysgYi9ncnViLWNvcmUvbG9hZGVy L21pcHMvbGludXguYwpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgZ3J1Yl9kbF90IG15X21vZDsK IAogc3RhdGljIGludCBsb2FkZWQ7CiAKLXN0YXRpYyBncnViX3NpemVfdCBsaW51eF9zaXplOwor c3RhdGljIGdydWJfc2l6ZV90IGxpbnV4X3NpemUsIGNtZGxpbmVfc2l6ZTsKIAogc3RhdGljIHN0 cnVjdCBncnViX3JlbG9jYXRvciAqcmVsb2NhdG9yOwogc3RhdGljIGdydWJfdWludDhfdCAqcGxh eWdyb3VuZDsKQEAgLTEwNiw3ICsxMDYsMTAgQEAgZ3J1Yl9saW51eF9ib290ICh2b2lkKQogICBz dGF0ZS5ncHJbNF0gPSBsaW51eF9hcmdjOwogICBzdGF0ZS5ncHJbNV0gPSB0YXJnZXRfYWRkciAr IGFyZ3Zfb2ZmOwogI2lmZGVmIEdSVUJfTUFDSElORV9NSVBTX0xPT05HU09OCi0gIHN0YXRlLmdw cls2XSA9IHRhcmdldF9hZGRyICsgZW52cF9vZmY7CisgIGlmIChHUlVCX0FSQ0hfTUFDSElORV9Z RUVMT09OR18zWCA9PSBncnViX2FyY2hfbWFjaGluZSkKKyAgICBzdGF0ZS5ncHJbNl0gPSBncnVi X2FyY2hfbGVmaTsKKyAgZWxzZQorICAgIHN0YXRlLmdwcls2XSA9IHRhcmdldF9hZGRyICsgZW52 cF9vZmY7CiAjZWxzZQogICBzdGF0ZS5ncHJbNl0gPSAwOwogI2VuZGlmCkBAIC0xMzksNyArMTQy LDYgQEAgZ3J1Yl9saW51eF9sb2FkMzIgKGdydWJfZWxmX3QgZWxmLCBjb25zdCBjaGFyICpmaWxl bmFtZSwKIAkJICAgdm9pZCAqKmV4dHJhX21lbSwgZ3J1Yl9zaXplX3QgZXh0cmFfc2l6ZSkKIHsK ICAgRWxmMzJfQWRkciBiYXNlOwotICBpbnQgZXh0cmFvZmY7CiAgIGdydWJfZXJyX3QgZXJyOwog CiAgIC8qIExpbnV4J3MgZW50cnkgcG9pbnQgaW5jb3JyZWN0bHkgY29udGFpbnMgYSB2aXJ0dWFs IGFkZHJlc3MuICAqLwpAQCAtMTUyLDggKzE1NCw2IEBAIGdydWJfbGludXhfbG9hZDMyIChncnVi X2VsZl90IGVsZiwgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAgIC8qIFBhZCBpdDsgdGhlIGtlcm5l bCBzY3JpYmJsZXMgb3ZlciBtZW1vcnkgYmV5b25kIGl0cyBsb2FkIGFkZHJlc3MuICAqLwogICBs aW51eF9zaXplICs9IDB4MTAwMDAwOwogICBsaW51eF9zaXplID0gQUxJR05fVVAgKGJhc2UgKyBs aW51eF9zaXplLCA0KSAtIGJhc2U7Ci0gIGV4dHJhb2ZmID0gbGludXhfc2l6ZTsKLSAgbGludXhf c2l6ZSArPSBleHRyYV9zaXplOwogCiAgIHJlbG9jYXRvciA9IGdydWJfcmVsb2NhdG9yX25ldyAo KTsKICAgaWYgKCFyZWxvY2F0b3IpCkBAIC0xNjcsOSArMTY3LDE0IEBAIGdydWJfbGludXhfbG9h ZDMyIChncnViX2VsZl90IGVsZiwgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAgICAgaWYgKGVycikK ICAgICAgIHJldHVybiBlcnI7CiAgICAgcGxheWdyb3VuZCA9IGdldF92aXJ0dWFsX2N1cnJlbnRf YWRkcmVzcyAoY2gpOwotICB9CiAKLSAgKmV4dHJhX21lbSA9IHBsYXlncm91bmQgKyBleHRyYW9m ZjsKKyAgICBlcnIgPSBncnViX3JlbG9jYXRvcl9hbGxvY19jaHVua19hZGRyIChyZWxvY2F0b3Is ICZjaCwKKwkJCQkJICAgZ3J1Yl9tbWFwX2dldF9sb3dlciAoKSAtIGV4dHJhX3NpemUsCisJCQkJ CSAgIGV4dHJhX3NpemUpOworICAgIGlmIChlcnIpCisgICAgICByZXR1cm4gZXJyOworICAgICpl eHRyYV9tZW0gPSBnZXRfdmlydHVhbF9jdXJyZW50X2FkZHJlc3MgKGNoKTsKKyAgfQogCiAgIC8q IE5vdyBsb2FkIHRoZSBzZWdtZW50cyBpbnRvIHRoZSBhcmVhIHdlIGNsYWltZWQuICAqLwogICBy ZXR1cm4gZ3J1Yl9lbGYzMl9sb2FkIChlbGYsIGZpbGVuYW1lLCBwbGF5Z3JvdW5kIC0gYmFzZSwg R1JVQl9FTEZfTE9BRF9GTEFHU19OT05FLCAwLCAwKTsKQEAgLTE4MCw3ICsxODUsNiBAQCBncnVi X2xpbnV4X2xvYWQ2NCAoZ3J1Yl9lbGZfdCBlbGYsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAogCQkg ICB2b2lkICoqZXh0cmFfbWVtLCBncnViX3NpemVfdCBleHRyYV9zaXplKQogewogICBFbGY2NF9B ZGRyIGJhc2U7Ci0gIGludCBleHRyYW9mZjsKICAgZ3J1Yl9lcnJfdCBlcnI7CiAKICAgLyogTGlu dXgncyBlbnRyeSBwb2ludCBpbmNvcnJlY3RseSBjb250YWlucyBhIHZpcnR1YWwgYWRkcmVzcy4g ICovCkBAIC0xOTMsOCArMTk3LDYgQEAgZ3J1Yl9saW51eF9sb2FkNjQgKGdydWJfZWxmX3QgZWxm LCBjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgLyogUGFkIGl0OyB0aGUga2VybmVsIHNjcmliYmxl cyBvdmVyIG1lbW9yeSBiZXlvbmQgaXRzIGxvYWQgYWRkcmVzcy4gICovCiAgIGxpbnV4X3NpemUg Kz0gMHgxMDAwMDA7CiAgIGxpbnV4X3NpemUgPSBBTElHTl9VUCAoYmFzZSArIGxpbnV4X3NpemUs IDQpIC0gYmFzZTsKLSAgZXh0cmFvZmYgPSBsaW51eF9zaXplOwotICBsaW51eF9zaXplICs9IGV4 dHJhX3NpemU7CiAKICAgcmVsb2NhdG9yID0gZ3J1Yl9yZWxvY2F0b3JfbmV3ICgpOwogICBpZiAo IXJlbG9jYXRvcikKQEAgLTIwOCw5ICsyMTAsMTQgQEAgZ3J1Yl9saW51eF9sb2FkNjQgKGdydWJf ZWxmX3QgZWxmLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICBpZiAoZXJyKQogICAgICAgcmV0 dXJuIGVycjsKICAgICBwbGF5Z3JvdW5kID0gZ2V0X3ZpcnR1YWxfY3VycmVudF9hZGRyZXNzIChj aCk7Ci0gIH0KIAotICAqZXh0cmFfbWVtID0gcGxheWdyb3VuZCArIGV4dHJhb2ZmOworICAgIGVy ciA9IGdydWJfcmVsb2NhdG9yX2FsbG9jX2NodW5rX2FkZHIgKHJlbG9jYXRvciwgJmNoLAorCQkJ CQkgICBncnViX21tYXBfZ2V0X2xvd2VyICgpIC0gZXh0cmFfc2l6ZSwKKwkJCQkJICAgZXh0cmFf c2l6ZSk7CisgICAgaWYgKGVycikKKyAgICAgIHJldHVybiBlcnI7CisgICAgKmV4dHJhX21lbSA9 IGdldF92aXJ0dWFsX2N1cnJlbnRfYWRkcmVzcyAoY2gpOworICB9CiAKICAgLyogTm93IGxvYWQg dGhlIHNlZ21lbnRzIGludG8gdGhlIGFyZWEgd2UgY2xhaW1lZC4gICovCiAgIHJldHVybiBncnVi X2VsZjY0X2xvYWQgKGVsZiwgZmlsZW5hbWUsIHBsYXlncm91bmQgLSBiYXNlLCBHUlVCX0VMRl9M T0FEX0ZMQUdTX05PTkUsIDAsIDApOwpAQCAtMjU4LDcgKzI2NSw4IEBAIGdydWJfY21kX2xpbnV4 IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogICAvKiBGb3Ig YXJndW1lbnRzLiAgKi8KICAgbGludXhfYXJnYyA9IGFyZ2M7CiAjaWZkZWYgR1JVQl9NQUNISU5F X01JUFNfTE9PTkdTT04KLSAgbGludXhfYXJnYysrOworICBpZiAoR1JVQl9BUkNIX01BQ0hJTkVf WUVFTE9PTkdfM1ggIT0gZ3J1Yl9hcmNoX21hY2hpbmUpCisgICAgbGludXhfYXJnYysrOwogI2Vu ZGlmCiAgIC8qIE1haW4gYXJndW1lbnRzLiAgKi8KICAgc2l6ZSA9IChsaW51eF9hcmdjKSAqIHNp emVvZiAoZ3J1Yl91aW50MzJfdCk7IApAQCAtMjczLDcgKzI4MSw4IEBAIGdydWJfY21kX2xpbnV4 IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogICBmb3IgKGkg PSAxOyBpIDwgYXJnYzsgaSsrKQogICAgIHNpemUgKz0gQUxJR05fVVAgKGdydWJfc3RybGVuIChh cmd2W2ldKSArIDEsIDQpOwogI2lmZGVmIEdSVUJfTUFDSElORV9NSVBTX0xPT05HU09OCi0gIHNp emUgKz0gQUxJR05fVVAgKHNpemVvZiAobG9vbmdzb25fbWFjaHR5cGVzWzBdKSwgNCk7CisgIGlm IChHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09OR18zWCAhPSBncnViX2FyY2hfbWFjaGluZSkKKyAg ICBzaXplICs9IEFMSUdOX1VQIChzaXplb2YgKGxvb25nc29uX21hY2h0eXBlc1swXSksIDQpOwog I2VuZGlmCiAKICAgLyogcmQgYXJndW1lbnRzLiAgKi8KQEAgLTI4MSwxMiArMjkwLDE1IEBAIGdy dWJfY21kX2xpbnV4IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkp LAogICBzaXplICs9IEFMSUdOX1VQIChzaXplb2YgKCJyZF9zaXplPTB4WFhYWFhYWFhYWFhYWFhY WCIpLCA0KTsKIAogICAvKiBGb3IgdGhlIGVudmlyb25tZW50LiAgKi8KLSAgc2l6ZSArPSBzaXpl b2YgKGdydWJfdWludDMyX3QpOwotICBzaXplICs9IDQgKiBzaXplb2YgKGdydWJfdWludDMyX3Qp OwotICBzaXplICs9IEFMSUdOX1VQIChzaXplb2YgKCJtZW1zaXplPVhYWFhYWFhYWFhYWFhYWFhY WFhYIiksIDQpCi0gICAgKyBBTElHTl9VUCAoc2l6ZW9mICgiaGlnaG1lbXNpemU9WFhYWFhYWFhY WFhYWFhYWFhYWFgiKSwgNCkKLSAgICArIEFMSUdOX1VQIChzaXplb2YgKCJidXNjbG9jaz1YWFhY WFhYWFhYIiksIDQpCi0gICAgKyBBTElHTl9VUCAoc2l6ZW9mICgiY3B1Y2xvY2s9WFhYWFhYWFhY WCIpLCA0KTsKKyAgaWYgKEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNYICE9IGdydWJfYXJj aF9tYWNoaW5lKQorICAgIHsKKyAgICAgIHNpemUgKz0gc2l6ZW9mIChncnViX3VpbnQzMl90KTsK KyAgICAgIHNpemUgKz0gNCAqIHNpemVvZiAoZ3J1Yl91aW50MzJfdCk7CisgICAgICBzaXplICs9 IEFMSUdOX1VQIChzaXplb2YgKCJtZW1zaXplPVhYWFhYWFhYWFhYWFhYWFhYWFhYIiksIDQpCisg ICAgICAgICsgQUxJR05fVVAgKHNpemVvZiAoImhpZ2htZW1zaXplPVhYWFhYWFhYWFhYWFhYWFhY WFhYIiksIDQpCisgICAgICAgICsgQUxJR05fVVAgKHNpemVvZiAoImJ1c2Nsb2NrPVhYWFhYWFhY WFgiKSwgNCkKKyAgICAgICAgKyBBTElHTl9VUCAoc2l6ZW9mICgiY3B1Y2xvY2s9WFhYWFhYWFhY WCIpLCA0KTsKKyAgICB9CiAjZW5kaWYKIAogICBpZiAoZ3J1Yl9lbGZfaXNfZWxmMzIgKGVsZikp CkBAIC0zMjgsNiArMzQwLDcgQEAgZ3J1Yl9jbWRfbGludXggKGdydWJfY29tbWFuZF90IGNtZCBf X2F0dHJpYnV0ZV9fICgodW51c2VkKSksCiAgIGxpbnV4X2FyZ3MgKz0gQUxJR05fVVAgKHNpemVv ZiAoImEwIiksIDQpOwogCiAjaWZkZWYgR1JVQl9NQUNISU5FX01JUFNfTE9PTkdTT04KKyAgaWYg KEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNYICE9IGdydWJfYXJjaF9tYWNoaW5lKQogICB7 CiAgICAgdW5zaWduZWQgbXR5cGUgPSBncnViX2FyY2hfbWFjaGluZTsKICAgICBpZiAobXR5cGUg Pj0gQVJSQVlfU0laRSAobG9vbmdzb25fbWFjaHR5cGVzKSkKQEAgLTM2OCwzNiArMzgxLDQwIEBA IGdydWJfY21kX2xpbnV4IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpLAogICBleHRyYSA9IGxpbnV4X2FyZ3M7CiAKICNpZmRlZiBHUlVCX01BQ0hJTkVfTUlQU19M T09OR1NPTgotICBsaW51eF9lbnZwID0gZXh0cmE7Ci0gIGVudnBfb2ZmID0gKGdydWJfdWludDhf dCAqKSBsaW51eF9lbnZwIC0gKGdydWJfdWludDhfdCAqKSBwbGF5Z3JvdW5kOwotICBsaW51eF9l bnZzID0gKGNoYXIgKikgKGxpbnV4X2VudnAgKyA1KTsKLSAgZ3J1Yl9zbnByaW50ZiAobGludXhf ZW52cywgc2l6ZW9mICgibWVtc2l6ZT1YWFhYWFhYWFhYWFhYWFhYWFhYWCIpLAotCQkgIm1lbXNp emU9JWxsZCIsCi0JCSAodW5zaWduZWQgbG9uZyBsb25nKSBncnViX21tYXBfZ2V0X2xvd2VyICgp ID4+IDIwKTsKLSAgbGludXhfZW52cFswXSA9IChncnViX3VpbnQ4X3QgKikgbGludXhfZW52cyAt IChncnViX3VpbnQ4X3QgKikgcGxheWdyb3VuZAotICAgICsgdGFyZ2V0X2FkZHI7Ci0gIGxpbnV4 X2VudnMgKz0gQUxJR05fVVAgKGdydWJfc3RybGVuIChsaW51eF9lbnZzKSArIDEsIDQpOwotICBn cnViX3NucHJpbnRmIChsaW51eF9lbnZzLCBzaXplb2YgKCJoaWdobWVtc2l6ZT1YWFhYWFhYWFhY WFhYWFhYWFhYWCIpLAotCQkgImhpZ2htZW1zaXplPSVsbGQiLAotCQkgKHVuc2lnbmVkIGxvbmcg bG9uZykgZ3J1Yl9tbWFwX2dldF91cHBlciAoKSA+PiAyMCk7Ci0gIGxpbnV4X2VudnBbMV0gPSAo Z3J1Yl91aW50OF90ICopIGxpbnV4X2VudnMgLSAoZ3J1Yl91aW50OF90ICopIHBsYXlncm91bmQK LSAgICArIHRhcmdldF9hZGRyOwotICBsaW51eF9lbnZzICs9IEFMSUdOX1VQIChncnViX3N0cmxl biAobGludXhfZW52cykgKyAxLCA0KTsKLQotICBncnViX3NucHJpbnRmIChsaW51eF9lbnZzLCBz aXplb2YgKCJidXNjbG9jaz1YWFhYWFhYWFhYIiksCi0JCSAiYnVzY2xvY2s9JWQiLCBncnViX2Fy Y2hfYnVzY2xvY2spOwotICBsaW51eF9lbnZwWzJdID0gKGdydWJfdWludDhfdCAqKSBsaW51eF9l bnZzIC0gKGdydWJfdWludDhfdCAqKSBwbGF5Z3JvdW5kCi0gICAgKyB0YXJnZXRfYWRkcjsKLSAg bGludXhfZW52cyArPSBBTElHTl9VUCAoZ3J1Yl9zdHJsZW4gKGxpbnV4X2VudnMpICsgMSwgNCk7 Ci0gIGdydWJfc25wcmludGYgKGxpbnV4X2VudnMsIHNpemVvZiAoImNwdWNsb2NrPVhYWFhYWFhY WFgiKSwKLQkJICJjcHVjbG9jaz0lZCIsIGdydWJfYXJjaF9jcHVjbG9jayk7Ci0gIGxpbnV4X2Vu dnBbM10gPSAoZ3J1Yl91aW50OF90ICopIGxpbnV4X2VudnMgLSAoZ3J1Yl91aW50OF90ICopIHBs YXlncm91bmQKLSAgICArIHRhcmdldF9hZGRyOwotICBsaW51eF9lbnZzICs9IEFMSUdOX1VQIChn cnViX3N0cmxlbiAobGludXhfZW52cykgKyAxLCA0KTsKLQotICBsaW51eF9lbnZwWzRdID0gMDsK KyAgaWYgKEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNYICE9IGdydWJfYXJjaF9tYWNoaW5l KQorICAgIHsKKyAgICAgIGxpbnV4X2VudnAgPSBleHRyYTsKKyAgICAgIGVudnBfb2ZmID0gKGdy dWJfdWludDhfdCAqKSBsaW51eF9lbnZwIC0gKGdydWJfdWludDhfdCAqKSBwbGF5Z3JvdW5kOwor ICAgICAgbGludXhfZW52cyA9IChjaGFyICopIChsaW51eF9lbnZwICsgNSk7CisgICAgICBncnVi X3NucHJpbnRmIChsaW51eF9lbnZzLCBzaXplb2YgKCJtZW1zaXplPVhYWFhYWFhYWFhYWFhYWFhY WFhYIiksCisgICAgCQkgIm1lbXNpemU9JWxsZCIsCisgICAgCQkgKHVuc2lnbmVkIGxvbmcgbG9u ZykgZ3J1Yl9tbWFwX2dldF9sb3dlciAoKSA+PiAyMCk7CisgICAgICBsaW51eF9lbnZwWzBdID0g KGdydWJfdWludDhfdCAqKSBsaW51eF9lbnZzIC0gKGdydWJfdWludDhfdCAqKSBwbGF5Z3JvdW5k CisgICAgICAgICsgdGFyZ2V0X2FkZHI7CisgICAgICBsaW51eF9lbnZzICs9IEFMSUdOX1VQIChn cnViX3N0cmxlbiAobGludXhfZW52cykgKyAxLCA0KTsKKyAgICAgIGdydWJfc25wcmludGYgKGxp bnV4X2VudnMsIHNpemVvZiAoImhpZ2htZW1zaXplPVhYWFhYWFhYWFhYWFhYWFhYWFhYIiksCisg ICAgCQkgImhpZ2htZW1zaXplPSVsbGQiLAorICAgIAkJICh1bnNpZ25lZCBsb25nIGxvbmcpIGdy dWJfbW1hcF9nZXRfdXBwZXIgKCkgPj4gMjApOworICAgICAgbGludXhfZW52cFsxXSA9IChncnVi X3VpbnQ4X3QgKikgbGludXhfZW52cyAtIChncnViX3VpbnQ4X3QgKikgcGxheWdyb3VuZAorICAg ICAgICArIHRhcmdldF9hZGRyOworICAgICAgbGludXhfZW52cyArPSBBTElHTl9VUCAoZ3J1Yl9z dHJsZW4gKGxpbnV4X2VudnMpICsgMSwgNCk7CisKKyAgICAgIGdydWJfc25wcmludGYgKGxpbnV4 X2VudnMsIHNpemVvZiAoImJ1c2Nsb2NrPVhYWFhYWFhYWFgiKSwKKyAgICAJCSAiYnVzY2xvY2s9 JWQiLCBncnViX2FyY2hfYnVzY2xvY2spOworICAgICAgbGludXhfZW52cFsyXSA9IChncnViX3Vp bnQ4X3QgKikgbGludXhfZW52cyAtIChncnViX3VpbnQ4X3QgKikgcGxheWdyb3VuZAorICAgICAg ICArIHRhcmdldF9hZGRyOworICAgICAgbGludXhfZW52cyArPSBBTElHTl9VUCAoZ3J1Yl9zdHJs ZW4gKGxpbnV4X2VudnMpICsgMSwgNCk7CisgICAgICBncnViX3NucHJpbnRmIChsaW51eF9lbnZz LCBzaXplb2YgKCJjcHVjbG9jaz1YWFhYWFhYWFhYIiksCisgICAgCQkgImNwdWNsb2NrPSVkIiwg Z3J1Yl9hcmNoX2NwdWNsb2NrKTsKKyAgICAgIGxpbnV4X2VudnBbM10gPSAoZ3J1Yl91aW50OF90 ICopIGxpbnV4X2VudnMgLSAoZ3J1Yl91aW50OF90ICopIHBsYXlncm91bmQKKyAgICAgICAgKyB0 YXJnZXRfYWRkcjsKKyAgICAgIGxpbnV4X2VudnMgKz0gQUxJR05fVVAgKGdydWJfc3RybGVuIChs aW51eF9lbnZzKSArIDEsIDQpOworCisgICAgICBsaW51eF9lbnZwWzRdID0gMDsKKyAgICB9CiAj ZW5kaWYKICNlbmRpZgorICBjbWRsaW5lX3NpemUgPSBzaXplOwogCiAgIGdydWJfbG9hZGVyX3Nl dCAoZ3J1Yl9saW51eF9ib290LCBncnViX2xpbnV4X3VubG9hZCwgMSk7CiAgIGluaXRyZF9sb2Fk ZWQgPSAwOwpAQCAtNDMyLDEyICs0NDksMTMgQEAgZ3J1Yl9jbWRfaW5pdHJkIChncnViX2NvbW1h bmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogICBzaXplID0gZ3J1Yl9nZXRfaW5p dHJkX3NpemUgKCZpbml0cmRfY3R4KTsKIAogICB7CisgICAgZ3J1Yl91aW50NjRfdCBzdGFydF9h ZGRyOwogICAgIGdydWJfcmVsb2NhdG9yX2NodW5rX3QgY2g7CiAKKyAgICBzdGFydF9hZGRyID0g Z3J1Yl9tbWFwX2dldF9sb3dlciAoKSAtIGNtZGxpbmVfc2l6ZSAtIHNpemU7CiAgICAgZXJyID0g Z3J1Yl9yZWxvY2F0b3JfYWxsb2NfY2h1bmtfYWxpZ24gKHJlbG9jYXRvciwgJmNoLAotCQkJCQkg ICAgKHRhcmdldF9hZGRyICYgMHgxZmZmZmZmZikKLQkJCQkJICAgICsgbGludXhfc2l6ZSArIDB4 MTAwMDAsCi0JCQkJCSAgICAoMHgxMDAwMDAwMCAtIHNpemUpLAorCQkJCQkgICAgc3RhcnRfYWRk ciAtIDB4ZjAwMDAwLAorCQkJCQkgICAgc3RhcnRfYWRkciAtIDB4ODAwMDAwLAogCQkJCQkgICAg c2l6ZSwgMHgxMDAwMCwKIAkJCQkJICAgIEdSVUJfUkVMT0NBVE9SX1BSRUZFUkVOQ0VfTk9ORSwg MCk7CiAKZGlmZiAtLWdpdCBhL2dydWItY29yZS90ZXJtL3NlcmlhbC5jIGIvZ3J1Yi1jb3JlL3Rl cm0vc2VyaWFsLmMKaW5kZXggZGI4MGIzYi4uZmNhZWRiYiAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3Jl L3Rlcm0vc2VyaWFsLmMKKysrIGIvZ3J1Yi1jb3JlL3Rlcm0vc2VyaWFsLmMKQEAgLTMxMSw3ICsz MTEsOCBAQCBjb25zdCBjaGFyIGxvb25nc29uX2RlZnNlcmlhbFtdWzZdID0KICAgewogICAgIFtH UlVCX0FSQ0hfTUFDSElORV9ZRUVMT09OR10gPSAiY29tMCIsCiAgICAgW0dSVUJfQVJDSF9NQUNI SU5FX0ZVTE9PTkcyRl0gID0gImNvbTIiLAotICAgIFtHUlVCX0FSQ0hfTUFDSElORV9GVUxPT05H MkVdICA9ICJjb20xIgorICAgIFtHUlVCX0FSQ0hfTUFDSElORV9GVUxPT05HMkVdICA9ICJjb20x IiwKKyAgICBbR1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkdfM1hdID0gImNvbTMiCiAgIH07CiAj ZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24uaCBiL2luY2x1 ZGUvZ3J1Yi9taXBzL2xvb25nc29uLmgKaW5kZXggZTZmMDI0MS4uNzg0YjUxNiAxMDA2NDQKLS0t IGEvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24uaAorKysgYi9pbmNsdWRlL2dydWIvbWlwcy9s b29uZ3Nvbi5oCkBAIC03MCw2ICs3MCwxMiBAQAogI2RlZmluZSBHUlVCX0NQVV9MT09OR1NPTl9D T1AwX0NBQ0hFX1RBR0xPIEdSVUJfQ1BVX1JFR0lTVEVSX1dSQVAoJDI4KQogI2RlZmluZSBHUlVC X0NQVV9MT09OR1NPTl9DT1AwX0NBQ0hFX1RBR0hJIEdSVUJfQ1BVX1JFR0lTVEVSX1dSQVAoJDI5 KQogCisjZGVmaW5lIEdSVUJfQ1BVX0xPT05HU09OX1BSSURfTE9PTkdTT04yRSAweDYzMDIKKyNk ZWZpbmUgR1JVQl9DUFVfTE9PTkdTT05fUFJJRF9MT09OR1NPTjJGIDB4NjMwMworI2RlZmluZSBH UlVCX0NQVV9MT09OR1NPTl9QUklEX0xPT05HU09OM0EgMHg2MzA1CisjZGVmaW5lIEdSVUJfQ1BV X0xPT05HU09OX1BSSURfTE9PTkdTT04zQlIxIDB4NjMwNgorI2RlZmluZSBHUlVCX0NQVV9MT09O R1NPTl9QUklEX0xPT05HU09OM0JSMiAweDYzMDcKKwogI2RlZmluZSBHUlVCX0NQVV9MT09OR1NP Tl9MSU9DRkcgICAweGJmZTAwMTA4CiAjZGVmaW5lIEdSVUJfQ1BVX0xPT05HU09OX1JPTV9ERUxB WV9PRkZTRVQgMgogI2RlZmluZSBHUlVCX0NQVV9MT09OR1NPTl9ST01fREVMQVlfTUFTSyAweDFm CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvbWlwcy9sb29uZ3Nvbi9ib290LmggYi9pbmNsdWRl L2dydWIvbWlwcy9sb29uZ3Nvbi9ib290LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMzgyYTNkYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZ3J1Yi9taXBzL2xvb25n c29uL2Jvb3QuaApAQCAtMCwwICsxLDIzNiBAQAorLyoKKyAqICBHUlVCICAtLSAgR1JhbmQgVW5p ZmllZCBCb290bG9hZGVyCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1ICBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyAqCisgKiAgR1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIEdSVUJf TUFDSElORV9CT09UX0gKKyNkZWZpbmUgR1JVQl9NQUNISU5FX0JPT1RfSAorCisjaW5jbHVkZSA8 Z3J1Yi90eXBlcy5oPgorCisjZGVmaW5lIFNZU1RFTV9SQU1fTE9XCQkxCisjZGVmaW5lIFNZU1RF TV9SQU1fSElHSAkJMgorI2RlZmluZSBNRU1fUkVTRVJWRUkJCTMKKyNkZWZpbmUgUENJX0lPCQkJ NAorI2RlZmluZSBQQ0lfTUVNCQkJNQorI2RlZmluZSBMT09OR1NPTl9DRkdfUkVHCTYKKyNkZWZp bmUgVklERU9fUk9NCQk3CisjZGVmaW5lIEFEQVBURVJfUk9NCQk4CisjZGVmaW5lIEFDUElfVEFC TEUJCTkKKyNkZWZpbmUgU01CSU9TX1RBQkxFCQkxMAorI2RlZmluZSBNQVhfTUVNT1JZX1RZUEUJ CTExCisKKyNkZWZpbmUgTUFYX1VBUlRTCQk2NAorCisjZGVmaW5lIE1BWF9TRU5TT1JTCQk2NAor I2RlZmluZSBTRU5TT1JfVEVNUEVSCQkweDAwMDAwMDAxCisjZGVmaW5lIFNFTlNPUl9WT0xUQUdF CQkweDAwMDAwMDAyCisjZGVmaW5lIFNFTlNPUl9GQU4JCTB4MDAwMDAwMDQKKworI2RlZmluZSBD T05TVEFOVF9TUEVFRF9QT0xJQ1kJMAkvKiBhdCBjb25zdGVudCBzcGVlZCAqLworI2RlZmluZSBT VEVQX1NQRUVEX1BPTElDWQkxCS8qIHVzZSB1cC9kb3duIGFycmF5cyB0byBkZXNjcmliZSBwb2xp Y3kgKi8KKyNkZWZpbmUgS0VSTkVMX0hFTFBFUl9QT0xJQ1kJMgkvKiBrZXJuZWwgYXMgYSBoZWxw ZXIgdG8gZmFuIGNvbnRyb2wgKi8KKworI2RlZmluZSBMT09OR1NPTjNfQk9PVF9NRU1fTUFQX01B WAkxMjgKKyNkZWZpbmUgTUFYX1JFU09VUkNFX05VTUJFUgkJMTI4CisKKyNkZWZpbmUgV09SS0FS T1VORF9DUFVGUkVRCTB4MDAwMDAwMDEKKyNkZWZpbmUgV09SS0FST1VORF9DUFVIT1RQTFVHCTB4 MDAwMDAwMDIKKyNkZWZpbmUgV09SS0FST1VORF9MVkRTX0VDIAkweDAwMDAwMDA0CisjZGVmaW5l IFdPUktBUk9VTkRfTFZEU19HUElPCTB4MDAwMDAwMDgKKyNkZWZpbmUgV09SS0FST1VORF9VU0Jf VE1DUwkweDAwMDAwMDEwCisjZGVmaW5lIFdPUktBUk9VTkRfUENJRV9ETUEgMHgwMDAwMDAyMAor CitleHRlcm4gZ3J1Yl91aW50NjRfdCBsb29uZ3Nvbl93b3JrYXJvdW5kczsKKworc3RydWN0IGVm aV9tZW1vcnlfbWFwX2xvb25nc29ueworCWdydWJfdWludDE2X3QgdmVyczsJLyogdmVyc2lvbiBv ZiBlZmlfbWVtb3J5X21hcCAqLworCWdydWJfdWludDMyX3QgbnJfbWFwOwkvKiBudW1iZXIgb2Yg bWVtb3J5X21hcHMgKi8KKwlncnViX3VpbnQzMl90IG1lbV9mcmVxOwkvKiBtZW1vcnkgZnJlcXVl bmNlICovCisJc3RydWN0IG1lbV9tYXB7CisJCWdydWJfdWludDMyX3Qgbm9kZV9pZDsJLyogbm9k ZV9pZCB3aGljaCBtZW1vcnkgYXR0YWNoZWQgdG8gKi8KKwkJZ3J1Yl91aW50MzJfdCBtZW1fdHlw ZTsJLyogc3lzdGVtIG1lbW9yeSwgcGNpIG1lbW9yeSwgcGNpIGlvLCBldGMuICovCisJCWdydWJf dWludDY0X3QgbWVtX3N0YXJ0OwkvKiBtZW1vcnkgbWFwIHN0YXJ0IGFkZHJlc3MgKi8KKwkJZ3J1 Yl91aW50MzJfdCBtZW1fc2l6ZTsJLyogZWFjaCBtZW1vcnlfbWFwIHNpemUsIG5vdCB0aGUgdG90 YWwgc2l6ZSAqLworCX1tYXBbTE9PTkdTT04zX0JPT1RfTUVNX01BUF9NQVhdOworIH1fX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKKworZW51bSBsb29uZ3Nvbl9jcHVfdHlwZQoreworCUxvb25nc29u XzJGLAorCUxvb25nc29uXzJFLAorCUxvb25nc29uXzNBLAorCUxvb25nc29uXzNCLAorCUxvb25n c29uXzFBLAorCUxvb25nc29uXzFCCit9OworCisvKgorKiBDYXBhYmlsaXR5IGFuZCBmZWF0dXJl IGRlc2NyaXB0b3Igc3RydWN0dXJlIGZvciBNSVBTIENQVQorKi8KK3N0cnVjdCBlZmlfY3B1aW5m b19sb29uZ3NvbiB7CisJZ3J1Yl91aW50MTZfdCB2ZXJzOwkvKiB2ZXJzaW9uIG9mIGVmaV9jcHVp bmZvX2xvb25nc29uICovCisJZ3J1Yl91aW50MzJfdCBwcm9jZXNzb3JfaWQ7CS8qIFBSSUQsIGUu Zy4gNjMwNSwgNjMwNiAqLworCWVudW0gbG9vbmdzb25fY3B1X3R5cGUgY3B1dHlwZTsgCS8qIDNB LCAzQiAsZXRjLiAqLworCWdydWJfdWludDMyX3QgdG90YWxfbm9kZTsgICAJLyogbnVtIG9mIHRv dGFsIG51bWEgbm9kZXMgKi8KKwlncnViX3VpbnQxNl90IGNwdV9zdGFydHVwX2NvcmVfaWQ7CS8q IENvcmUgaWQgKi8KKwlncnViX3VpbnQxNl90IHJlc2VydmVkX2NvcmVzX21hc2s7CS8qIHJlc2Vy dmVkIGNvcmVzIG1hc2sgKi8KKwlncnViX3VpbnQzMl90IGNwdV9jbG9ja19mcmVxOwkvKiBjcHVf Y2xvY2sgKi8KKwlncnViX3VpbnQzMl90IG5yX2NwdXM7Cit9X19hdHRyaWJ1dGVfXygocGFja2Vk KSk7CisKK3N0cnVjdCB1YXJ0X2RldmljZSB7CisJZ3J1Yl91aW50MzJfdCBpb3R5cGU7IC8qIHNl ZSBpbmNsdWRlL2xpbnV4L3NlcmlhbF9jb3JlLmggKi8KKwlncnViX3VpbnQzMl90IHVhcnRjbGs7 CisJZ3J1Yl91aW50MzJfdCBpbnRfb2Zmc2V0OworCWdydWJfdWludDY0X3QgdWFydF9iYXNlOwor fV9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3Qgc2Vuc29yX2RldmljZSB7CisJY2hh ciBuYW1lWzMyXTsgIC8qIGEgZm9ybWFsIG5hbWUgKi8KKwljaGFyIGxhYmVsWzY0XTsgLyogYSBm bGV4aWJsZSBkZXNjcmlwdGlvbiAqLworCWdydWJfdWludDMyX3QgdHlwZTsgICAgICAgLyogU0VO U09SXyogKi8KKwlncnViX3VpbnQzMl90IGlkOyAgICAgICAgIC8qIGluc3RhbmNlIGlkIG9mIGEg c2Vuc29yLWNsYXNzICovCisJZ3J1Yl91aW50MzJfdCBmYW5fcG9saWN5OyAvKiBzZWUgYXJjaC9t aXBzL2luY2x1ZGUvYXNtL21hY2gtbG9vbmdzb24vbG9vbmdzb25faHdtb24uaCAqLworCWdydWJf dWludDMyX3QgZmFuX3BlcmNlbnQ7Lyogb25seSBmb3IgY29uc3RhbnQgc3BlZWQgcG9saWN5ICov CisJZ3J1Yl91aW50NjRfdCBiYXNlX2FkZHI7ICAvKiBiYXNlIGFkZHJlc3Mgb2YgZGV2aWNlIHJl Z2lzdGVycyAqLworfV9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisKK3N0cnVjdCBzeXN0ZW1f bG9vbmdzb257CisJZ3J1Yl91aW50MTZfdCB2ZXJzOyAgICAgLyogdmVyc2lvbiBvZiBzeXN0ZW1f bG9vbmdzb24gKi8KKwlncnViX3VpbnQzMl90IGNjbnVtYV9zbXA7IC8qIDA6IG5vIG51bWE7IDE6 IGhhcyBudW1hICovCisJZ3J1Yl91aW50MzJfdCBzaW5nX2RvdWJsZV9jaGFubmVsOyAvKiAxOnNp bmdsZTsgMjpkb3VibGUgKi8KKwlncnViX3VpbnQzMl90IG5yX3VhcnRzOworCXN0cnVjdCB1YXJ0 X2RldmljZSB1YXJ0c1tNQVhfVUFSVFNdOworCWdydWJfdWludDMyX3QgbnJfc2Vuc29yczsKKwlz dHJ1Y3Qgc2Vuc29yX2RldmljZSBzZW5zb3JzW01BWF9TRU5TT1JTXTsKKwljaGFyIGhhc19lYzsK KwljaGFyIGVjX25hbWVbMzJdOworCWdydWJfdWludDY0X3QgZWNfYmFzZV9hZGRyOworCWNoYXIg aGFzX3RjbTsKKwljaGFyIHRjbV9uYW1lWzMyXTsKKwlncnViX3VpbnQ2NF90IHRjbV9iYXNlX2Fk ZHI7CisJZ3J1Yl91aW50NjRfdCB3b3JrYXJvdW5kczsgLyogc2VlIHdvcmthcm91bmRzLmggKi8K K31fX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGlycV9zb3VyY2Vfcm91dGluZ190 YWJsZSB7CisJZ3J1Yl91aW50MTZfdCB2ZXJzOworCWdydWJfdWludDE2X3Qgc2l6ZTsKKwlncnVi X3VpbnQxNl90IHJ0cl9idXM7CisJZ3J1Yl91aW50MTZfdCBydHJfZGV2Zm47CisJZ3J1Yl91aW50 MzJfdCB2ZW5kb3I7CisJZ3J1Yl91aW50MzJfdCBkZXZpY2U7CisJZ3J1Yl91aW50MzJfdCBQSUNf dHlwZTsgICAvKiBjb25mb3JtIHVzZSBIVCBvciBQQ0kgdG8gcm91dGUgdG8gQ1BVLVBJQyAqLwor CWdydWJfdWludDY0X3QgaHRfaW50X2JpdDsgLyogM0E6IDE8PDI0OyAzQjogMTw8MTYgKi8KKwln cnViX3VpbnQ2NF90IGh0X2VuYWJsZTsgIC8qIGlycXMgdXNlZCBpbiB0aGlzIFBJQyAqLworCWdy dWJfdWludDMyX3Qgbm9kZV9pZDsgICAgLyogbm9kZSBpZDogMHgwLTA7IDB4MS0xOyAweDEwLTI7 IDB4MTEtMyAqLworCWdydWJfdWludDY0X3QgcGNpX21lbV9zdGFydF9hZGRyOworCWdydWJfdWlu dDY0X3QgcGNpX21lbV9lbmRfYWRkcjsKKwlncnViX3VpbnQ2NF90IHBjaV9pb19zdGFydF9hZGRy OworCWdydWJfdWludDY0X3QgcGNpX2lvX2VuZF9hZGRyOworCWdydWJfdWludDY0X3QgcGNpX2Nv bmZpZ19hZGRyOworCWdydWJfdWludDMyX3QgZG1hX21hc2tfYml0czsKK31fX2F0dHJpYnV0ZV9f KChwYWNrZWQpKTsKKworc3RydWN0IGludGVyZmFjZV9pbmZveworCWdydWJfdWludDE2X3QgdmVy czsgLyogdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNpdGlvbiAqLworCWdydWJfdWludDE2X3Qgc2l6 ZTsKKwlncnViX3VpbnQ4X3QgIGZsYWc7CisJY2hhciBkZXNjcmlwdGlvbls2NF07Cit9X19hdHRy aWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCByZXNvdXJjZV9sb29uZ3NvbiB7CisJZ3J1Yl91 aW50NjRfdCBzdGFydDsgLyogcmVzb3VyY2Ugc3RhcnQgYWRkcmVzcyAqLworCWdydWJfdWludDY0 X3QgZW5kOyAgIC8qIHJlc291cmNlIGVuZCBhZGRyZXNzICovCisJY2hhciBuYW1lWzY0XTsKKwln cnViX3VpbnQzMl90IGZsYWdzOworfTsKKworc3RydWN0IGFyY2hkZXZfZGF0YSB7fTsJLyogYXJj aCBzcGVjaWZpYyBhZGRpdGlvbnMgKi8KKworc3RydWN0IGJvYXJkX2RldmljZXN7CisJY2hhciBu YW1lWzY0XTsgICAgLyogaG9sZCB0aGUgZGV2aWNlIG5hbWUgKi8KKwlncnViX3VpbnQzMl90IG51 bV9yZXNvdXJjZXM7IC8qIG51bWJlciBvZiBkZXZpY2VfcmVzb3VyY2UgKi8KKwlzdHJ1Y3QgcmVz b3VyY2VfbG9vbmdzb24gcmVzb3VyY2VbTUFYX1JFU09VUkNFX05VTUJFUl07IC8qIGZvciBlYWNo IGRldmljZSdzIHJlc291cmNlICovCisJLyogYXJjaCBzcGVjaWZpYyBhZGRpdGlvbnMgKi8KKwlz dHJ1Y3QgYXJjaGRldl9kYXRhIGFyY2hkYXRhOworfTsKKworc3RydWN0IGxvb25nc29uX3NwZWNp YWxfYXR0cmlidXRleworCWdydWJfdWludDE2X3QgdmVyczsgICAgIC8qIHZlcnNpb24gb2YgdGhp cyBzcGVjaWFsICovCisJY2hhciBzcGVjaWFsX25hbWVbNjRdOyAvKiBzcGVjaWFsX2F0cmlidXRl X25hbWUgKi8KKwlncnViX3VpbnQzMl90IGxvb25nc29uX3NwZWNpYWxfdHlwZTsgLyogdHlwZSBv ZiBzcGVjaWFsIGRldmljZSAqLworCXN0cnVjdCByZXNvdXJjZV9sb29uZ3NvbiByZXNvdXJjZVtN QVhfUkVTT1VSQ0VfTlVNQkVSXTsgLyogZm9yIGVhY2ggZGV2aWNlJ3MgcmVzb3VyY2UgKi8KK307 CisKK3N0cnVjdCBsb29uZ3Nvbl9wYXJhbXN7CisJZ3J1Yl91aW50NjRfdCBtZW1vcnlfb2Zmc2V0 OwkvKiBlZmlfbWVtb3J5X21hcF9sb29uZ3NvbiBzdHJ1Y3Qgb2Zmc2V0ICovCisJZ3J1Yl91aW50 NjRfdCBjcHVfb2Zmc2V0OwkJLyogZWZpX2NwdWluZm9fbG9vbmdzb24gc3RydWN0IG9mZnNldCAq LworCWdydWJfdWludDY0X3Qgc3lzdGVtX29mZnNldDsgIAkvKiBzeXN0ZW1fbG9vbmdzb24gc3Ry dWN0IG9mZnNldCAqLworCWdydWJfdWludDY0X3QgaXJxX29mZnNldDsgIAkvKiBpcnFfc291cmNl X3JvdXRpbmdfdGFibGUgc3RydWN0IG9mZnNldCAqLworCWdydWJfdWludDY0X3QgaW50ZXJmYWNl X29mZnNldDsgIAkvKiBpbnRlcmZhY2VfaW5mbyBzdHJ1Y3Qgb2Zmc2V0ICovCisJZ3J1Yl91aW50 NjRfdCBzcGVjaWFsX29mZnNldDsgIAkvKiBsb29uZ3Nvbl9zcGVjaWFsX2F0dHJpYnV0ZSBzdHJ1 Y3Qgb2Zmc2V0ICovCisJZ3J1Yl91aW50NjRfdCBib2FyZGRldl90YWJsZV9vZmZzZXQ7ICAvKiBi b2FyZF9kZXZpY2VzIG9mZnNldCAqLworfTsKKworc3RydWN0IHNtYmlvc190YWJsZXMgeworCWdy dWJfdWludDE2X3QgdmVyczsgICAgIC8qIHZlcnNpb24gb2Ygc21iaW9zICovCisJZ3J1Yl91aW50 NjRfdCB2Z2FfYmlvczsgLyogdmdhX2Jpb3MgYWRkcmVzcyAqLworCXN0cnVjdCBsb29uZ3Nvbl9w YXJhbXMgbHA7Cit9OworCitzdHJ1Y3QgZWZpX3Jlc2V0X3N5c3RlbV90eworCWdydWJfdWludDY0 X3QgUmVzZXRDb2xkOworCWdydWJfdWludDY0X3QgUmVzZXRXYXJtOworCWdydWJfdWludDY0X3Qg UmVzZXRUeXBlOworCWdydWJfdWludDY0X3QgU2h1dGRvd247CisJZ3J1Yl91aW50NjRfdCBEb1N1 c3BlbmQ7IC8qIE5VTEwgaWYgbm90IHN1cHBvcnQgKi8KK307CisKK3N0cnVjdCBlZmlfbG9vbmdz b24geworCWdydWJfdWludDY0X3QgbXBzOwkvKiBNUFMgdGFibGUgKi8KKwlncnViX3VpbnQ2NF90 IGFjcGk7CS8qIEFDUEkgdGFibGUgKElBNjQgZXh0IDAuNzEpICovCisJZ3J1Yl91aW50NjRfdCBh Y3BpMjA7CS8qIEFDUEkgdGFibGUgKEFDUEkgMi4wKSAqLworCXN0cnVjdCBzbWJpb3NfdGFibGVz IHNtYmlvczsJLyogU00gQklPUyB0YWJsZSAqLworCWdydWJfdWludDY0X3Qgc2FsX3N5c3RhYjsJ LyogU0FMIHN5c3RlbSB0YWJsZSAqLworCWdydWJfdWludDY0X3QgYm9vdF9pbmZvOwkvKiBib290 IGluZm8gdGFibGUgKi8KK307CisKK3N0cnVjdCBib290X3BhcmFtc3sKKwlzdHJ1Y3QgZWZpX2xv b25nc29uIGVmaTsKKwlzdHJ1Y3QgZWZpX3Jlc2V0X3N5c3RlbV90IHJlc2V0X3N5c3RlbTsKK307 CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGVmaV9tZW1vcnlfbWFwX2xvb25nc29uICoKK2dydWJf bWlwc19sb29uZ3Nvbl9wYXJhbXNfZ2V0X21lbW9yeSAoZ3J1Yl9hZGRyX3QgbGVmaSkKK3sKKyAg ICAgICAgc3RydWN0IGJvb3RfcGFyYW1zICpicCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMgKikgbGVm aTsKKyAgICAgICAgc3RydWN0IGxvb25nc29uX3BhcmFtcyAqbHAgPSAmYnAtPmVmaS5zbWJpb3Mu bHA7CisKKyAgICAgICAgcmV0dXJuICh2b2lkICopICgobG9uZykgbHAgKyAobG9uZykgbHAtPm1l bW9yeV9vZmZzZXQpOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBlZmlfY3B1aW5mb19sb29u Z3NvbiAqCitncnViX21pcHNfbG9vbmdzb25fcGFyYW1zX2dldF9jcHUgKGdydWJfYWRkcl90IGxl ZmkpCit7CisgICAgICAgIHN0cnVjdCBib290X3BhcmFtcyAqYnAgPSAoc3RydWN0IGJvb3RfcGFy YW1zICopIGxlZmk7CisgICAgICAgIHN0cnVjdCBsb29uZ3Nvbl9wYXJhbXMgKmxwID0gJmJwLT5l Zmkuc21iaW9zLmxwOworCisgICAgICAgIHJldHVybiAodm9pZCAqKSAoKGxvbmcpIGxwICsgKGxv bmcpIGxwLT5jcHVfb2Zmc2V0KTsKK30KKworI2VuZGlmIC8qIEdSVUJfTUFDSElORV9CT09UX0gg Ki8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29uL2tlcm5lbC5oIGIvaW5j bHVkZS9ncnViL21pcHMvbG9vbmdzb24va2VybmVsLmgKaW5kZXggMDU4NzE5MS4uMjlhZDAwNyAx MDA2NDQKLS0tIGEvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24va2VybmVsLmgKKysrIGIvaW5j bHVkZS9ncnViL21pcHMvbG9vbmdzb24va2VybmVsLmgKQEAgLTI1LDExICsyNSwxMiBAQAogI2Rl ZmluZSBHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09ORyAwCiAjZGVmaW5lIEdSVUJfQVJDSF9NQUNI SU5FX0ZVTE9PTkcyRiAxCiAjZGVmaW5lIEdSVUJfQVJDSF9NQUNISU5FX0ZVTE9PTkcyRSAyCi0j ZGVmaW5lIEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNBIDMKKyNkZWZpbmUgR1JVQl9BUkNI X01BQ0hJTkVfWUVFTE9PTkdfM1ggMwogCiAjaWZuZGVmIEFTTV9GSUxFCiAKIGV4dGVybiBncnVi X3VpbnQzMl90IEVYUE9SVF9WQVIgKGdydWJfYXJjaF9tYWNoaW5lKSBfX2F0dHJpYnV0ZV9fICgo c2VjdGlvbigiLnRleHQiKSkpOworZXh0ZXJuIGdydWJfYWRkcl90IEVYUE9SVF9WQVIgKGdydWJf YXJjaF9sZWZpKSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbigiLnRleHQiKSkpOwogCiAjZW5kaWYK IApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24vcGNpLmggYi9pbmNsdWRl L2dydWIvbWlwcy9sb29uZ3Nvbi9wY2kuaAppbmRleCBiMzI3MmU5Li43MTc3NzMzIDEwMDY0NAot LS0gYS9pbmNsdWRlL2dydWIvbWlwcy9sb29uZ3Nvbi9wY2kuaAorKysgYi9pbmNsdWRlL2dydWIv bWlwcy9sb29uZ3Nvbi9wY2kuaApAQCAtMjgsMTAgKzI4LDEwIEBACiAjZGVmaW5lIEdSVUJfTE9P TkdTT05fRUhDSV9QQ0lJRCAweDAwZTAxMDMzCiAKICNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9J T19CQVNFXzJGICAgICAgICAweGJmZDAwMDAwCi0jZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfSU9f QkFTRV8zQSAgICAgICAgMHhiODAwMDAwMAorI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX0lPX0JB U0VfM1ggICAgICAgIDB4YjgwMDAwMDAKICNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9DT05GU1BB Q0VfMkYgICAgICAweGJmZTgwMDAwCi0jZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfQ09ORlNQQUNF XzNBICAgICAgMHhiYTAwMDAwMAotI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX0NPTkZTUEFDRV8z QV9FWFQgIDB4YmIwMDAwMDAKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9DT05GU1BBQ0VfM1gg ICAgICAweGJhMDAwMDAwCisjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfQ09ORlNQQUNFXzNYX0VY VCAgMHhiYjAwMDAwMAogI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX0NPTlRST0xMRVJfSEVBREVS IDB4YmZlMDAwMDAKIAogI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX0NPTkZfQ1RSTF9SRUdfQURE Ul8yRiAweGJmZTAwMTE4CkBAIC00MCw3ICs0MCw3IEBACiAKICNpZm5kZWYgQVNNX0ZJTEUKIAot dHlwZWRlZiBlbnVtIHsgR1JVQl9CT05JVE9fMkYsIEdSVUJfQk9OSVRPXzNBIH0gZ3J1Yl9ib25p dG9fdHlwZV90OwordHlwZWRlZiBlbnVtIHsgR1JVQl9CT05JVE9fMkYsIEdSVUJfQk9OSVRPXzNY IH0gZ3J1Yl9ib25pdG9fdHlwZV90OwogZXh0ZXJuIGdydWJfYm9uaXRvX3R5cGVfdCBFWFBPUlRf VkFSIChncnViX2Jvbml0b190eXBlKTsKIAogI2RlZmluZSBHUlVCX1BDSV9OVU1fREVWSUNFUyAg ICAoZ3J1Yl9ib25pdG9fdHlwZSA/IDMyIFwKQEAgLTQ4LDEzICs0OCwxMyBAQCBleHRlcm4gZ3J1 Yl9ib25pdG9fdHlwZV90IEVYUE9SVF9WQVIgKGdydWJfYm9uaXRvX3R5cGUpOwogI2RlZmluZSBH UlVCX1BDSV9OVU1fQlVTICAgICAgICAoZ3J1Yl9ib25pdG9fdHlwZSA/IDI1NiA6IDEpCiAKICNk ZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9JT19CQVNFCShncnViX2Jvbml0b190eXBlIFwKLQkJCQkJ ID8gR1JVQl9NQUNISU5FX1BDSV9JT19CQVNFXzNBIFwKKwkJCQkJID8gR1JVQl9NQUNISU5FX1BD SV9JT19CQVNFXzNYIFwKIAkJCQkJIDogR1JVQl9NQUNISU5FX1BDSV9JT19CQVNFXzJGKQogCiAj ZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfQ09ORl9DVFJMX1JFR18yRiAgICAoKih2b2xhdGlsZSBn cnViX3VpbnQzMl90ICopIFwKIAkJCQkJICAgR1JVQl9NQUNISU5FX1BDSV9DT05GX0NUUkxfUkVH X0FERFJfMkYpCiAjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfSU9fQ1RSTF9SRUdfMkYgICAgICAo Kih2b2xhdGlsZSBncnViX3VpbnQzMl90ICopIDB4YmZlMDAxMTApCi0jZGVmaW5lIEdSVUJfTUFD SElORV9QQ0lfQ09ORl9DVFJMX1JFR18zQSAgICAoKih2b2xhdGlsZSBncnViX3VpbnQzMl90ICop IFwKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9DT05GX0NUUkxfUkVHXzNYICAgICgqKHZvbGF0 aWxlIGdydWJfdWludDMyX3QgKikgXAogCQkJCQkgICAgICAweGJmZTAwMTE4KQogCiAjZW5kaWYK QEAgLTc1LDYgKzc1LDE4IEBAIGV4dGVybiBncnViX2Jvbml0b190eXBlX3QgRVhQT1JUX1ZBUiAo Z3J1Yl9ib25pdG9fdHlwZSk7CiAjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfV0lOMl9BRERSICAg ICAgICAweGI0MDAwMDAwCiAjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfV0lOM19BRERSICAgICAg ICAweGI4MDAwMDAwCiAKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9NRU1fQkFTRTBfM1ggICAg IDB4MTAwMDAwMDB1CisjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfTUVNX0FERFIwXzNYICAgICAw eGIwMDAwMDAwdQorI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX01FTV9TSVpFMF8zWCAgICAgMHg4 MDAwMDAwdQorCisjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfTUVNX0JBU0UxXzNYICAgICAweDFj MDAwMDAwdQorI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX01FTV9BRERSMV8zWCAgICAgMHhiYzAw MDAwMHUKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9NRU1fU0laRTFfM1ggICAgIDB4MjAwMDAw MHUKKworI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX01FTV9CQVNFMl8zWCAgICAgMHg0MDAwMDAw MHUKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9NRU1fQUREUjJfM1ggICAgIDB4YzAwMDAwMDB1 CisjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfTUVNX1NJWkUyXzNYICAgICAweDQwMDAwMDAwdQor CiAjaWZuZGVmIEFTTV9GSUxFCiBncnViX3VpbnQzMl90CiBFWFBPUlRfRlVOQyAoZ3J1Yl9wY2lf cmVhZCkgKGdydWJfcGNpX2FkZHJlc3NfdCBhZGRyKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1 Yi9taXBzL2xvb25nc29uL3NlcmlhbC5oIGIvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24vc2Vy aWFsLmgKaW5kZXggNDVlNmQ4NC4uNGVlNWU5ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnViL21p cHMvbG9vbmdzb24vc2VyaWFsLmgKKysrIGIvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24vc2Vy aWFsLmgKQEAgLTIxLDEyICsyMSwxNCBAQAogCiAjZGVmaW5lIEdSVUJfTUFDSElORV9TRVJJQUxf UE9SVDBfRElWSVNPUl8xMTUyMDAgMgogI2RlZmluZSBHUlVCX01BQ0hJTkVfU0VSSUFMX1BPUlQy X0RJVklTT1JfMTE1MjAwIDEKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1NFUklBTF9QT1JUM19ESVZJ U09SXzExNTIwMCAxCiAjZGVmaW5lIEdSVUJfTUFDSElORV9TRVJJQUxfUE9SVDAgIDB4YmZmMDAz ZjgKICNkZWZpbmUgR1JVQl9NQUNISU5FX1NFUklBTF9QT1JUMSAgMHhiZmQwMDNmOAogI2RlZmlu ZSBHUlVCX01BQ0hJTkVfU0VSSUFMX1BPUlQyICAweGJmZDAwMmY4CisjZGVmaW5lIEdSVUJfTUFD SElORV9TRVJJQUxfUE9SVDMgIDB4YmZlMDAxZTAKIAogI2lmbmRlZiBBU01fRklMRQotI2RlZmlu ZSBHUlVCX01BQ0hJTkVfU0VSSUFMX1BPUlRTIHsgR1JVQl9NQUNISU5FX1NFUklBTF9QT1JUMCwg R1JVQl9NQUNISU5FX1NFUklBTF9QT1JUMSwgR1JVQl9NQUNISU5FX1NFUklBTF9QT1JUMiB9Cisj ZGVmaW5lIEdSVUJfTUFDSElORV9TRVJJQUxfUE9SVFMgeyBHUlVCX01BQ0hJTkVfU0VSSUFMX1BP UlQwLCBHUlVCX01BQ0hJTkVfU0VSSUFMX1BPUlQxLCBHUlVCX01BQ0hJTkVfU0VSSUFMX1BPUlQy LCBHUlVCX01BQ0hJTkVfU0VSSUFMX1BPUlQzIH0KICNlbHNlCiAjZW5kaWYKIAotLSAKMi40LjIK Cg== --047d7b5d86a54965cc0517fe38a6-- From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Z3Ln0-0004Cv-Ec for mharc-grub-devel@gnu.org; Fri, 12 Jun 2015 06:02:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56520) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3Lmx-0004B6-GV for grub-devel@gnu.org; Fri, 12 Jun 2015 06:02:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z3Lmr-000371-Ep for grub-devel@gnu.org; Fri, 12 Jun 2015 06:02:15 -0400 Received: from mail-lb0-x234.google.com ([2a00:1450:4010:c04::234]:34367) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3Lmr-00036x-8B for grub-devel@gnu.org; Fri, 12 Jun 2015 06:02:09 -0400 Received: by lbcmx3 with SMTP id mx3so17011005lbc.1 for ; Fri, 12 Jun 2015 03:02:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=V/A9B/VYOcGThKr+w/Yetgi7X7v9esAKPwM1AEpdT9g=; b=0GB2aUME10C0JuZ0D89C4BDfFHikdGYOCTCjN2L/QrP+stR9gO+5tGKBBVz2w2zH6q jJKDypvuyOs4k5v+Vj8HXGXrqMNgCkobBByBKz9L0SJudCq6eIGHrzcGzYRJNg+nuWu2 sAQINWRs9U8sViHKjwVoA/iupPE+ExM2YiA8mJ22GOqS2sik4ou9iASm5sfryO7D0b/5 NXQOVmw5TDw75anyUWw0Kqil2e+MbeqpSxOggMY/egXR3u44mNDWcIUsSSncBEW97WAV 8EpTq+5mD8Nzg75YMzZE+XBc1vo+RyRCrlWuqTVAmI7uHmx4ivDmouUqgE4KJ4VzR/lg kecQ== X-Received: by 10.112.48.68 with SMTP id j4mr14094492lbn.60.1434103328309; Fri, 12 Jun 2015 03:02:08 -0700 (PDT) Received: from opensuse.site (ppp91-76-14-38.pppoe.mtu-net.ru. [91.76.14.38]) by mx.google.com with ESMTPSA id zf3sm739109lbb.2.2015.06.12.03.02.07 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Jun 2015 03:02:07 -0700 (PDT) Date: Fri, 12 Jun 2015 13:02:07 +0300 From: Andrei Borzenkov To: Heiher Subject: Re: [PATCH 1/2] MIPS: Loongson: Add support for Loongson3. Message-ID: <20150612130207.4708fb9f@opensuse.site> In-Reply-To: References: X-Mailer: Claws Mail 3.11.0 (GTK+ 2.24.28; x86_64-suse-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c04::234 Cc: The development of GNU GRUB X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jun 2015 10:02:16 -0000 =D0=92 Mon, 8 Jun 2015 17:25:16 +0800 Heiher =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > --- a/grub-core/bus/pci.c > +++ b/grub-core/bus/pci.c > @@ -72,7 +72,7 @@ grub_dma_get_virt (struct grub_pci_dma_chunk *ch) > grub_uint32_t > grub_dma_get_phys (struct grub_pci_dma_chunk *ch) > { > - return (((grub_uint32_t) ch) & 0x1fffffff) | 0x80000000; > + return (((grub_uint32_t) ch) & 0x1fffffff); I do not have experience with hardware but that does not look right. Either this chunk breaks existing hardware or this part was not needed in the first place. I suspect the former because later you re-add the same code in subsequent patch. This makes it hard to bisect later as it leaves some commits in non-functional state. Could you please rearrange your patches so that they do not impact existing platforms? From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Z3NVq-00011u-EB for mharc-grub-devel@gnu.org; Fri, 12 Jun 2015 07:52:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56246) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3NVn-00011J-Eg for grub-devel@gnu.org; Fri, 12 Jun 2015 07:52:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z3NVi-0001Lx-Dc for grub-devel@gnu.org; Fri, 12 Jun 2015 07:52:39 -0400 Received: from mail-wi0-f174.google.com ([209.85.212.174]:37361) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3NVi-0001LR-54 for grub-devel@gnu.org; Fri, 12 Jun 2015 07:52:34 -0400 Received: by wifx6 with SMTP id x6so15100730wif.0 for ; Fri, 12 Jun 2015 04:52:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=n8Z2QisBKK+vL3qBDDwW+zFsVvemnfVbAbMVjMsyJ8w=; b=RjNn2WO8342RAdb3d8IGeDOFzM42pfo0/OGlPIHDSwMlVpg6fVxHpYdKFcD7Wcblaw 0DlKn6MeLWGZzof6R0/1/GHSFWqa+NTnmBtWp/WIq0ee3c07osQuyMc9JhWkW5HpHh7j RTG9Fix+FfeGq9GtGImimjN9OyHVqrxSmLTn/s6BEd7iEtXzAargBLwblDhoxZHbpvYw +cGVOh1TGwAbla668WTlEG7PjJs0W0AXUbsxuPspyPAsL1+GidG3Zj7hWkrMnRv1iNX8 fj6h4BLiVe1/EjBwNYJ6SMnDGukx0UvXtj4V4v/9NEc0/eFNabPBbSkemfdUQd1Dq0cc zzIg== X-Gm-Message-State: ALoCoQlw9CemgR4VYQ978mRzWcsfbaxzB6tkFePQhIDqcuo97ndBusOgQSdud1qVYH6QIojGBU8E MIME-Version: 1.0 X-Received: by 10.194.192.98 with SMTP id hf2mr26146504wjc.23.1434109952054; Fri, 12 Jun 2015 04:52:32 -0700 (PDT) Received: by 10.194.125.20 with HTTP; Fri, 12 Jun 2015 04:52:31 -0700 (PDT) X-Originating-IP: [107.170.230.69] In-Reply-To: <20150612130207.4708fb9f@opensuse.site> References: <20150612130207.4708fb9f@opensuse.site> Date: Fri, 12 Jun 2015 19:52:31 +0800 Message-ID: Subject: Re: [PATCH 1/2] MIPS: Loongson: Add support for Loongson3. From: Heiher To: Andrei Borzenkov Content-Type: multipart/alternative; boundary=047d7bae426c42f023051850beeb X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.212.174 Cc: The development of GNU GRUB X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jun 2015 11:52:40 -0000 --047d7bae426c42f023051850beeb Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, Thanks for reivew. On Fri, Jun 12, 2015 at 6:02 PM, Andrei Borzenkov wrote: > =D0=92 Mon, 8 Jun 2015 17:25:16 +0800 > Heiher =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > > > --- a/grub-core/bus/pci.c > > +++ b/grub-core/bus/pci.c > > @@ -72,7 +72,7 @@ grub_dma_get_virt (struct grub_pci_dma_chunk *ch) > > grub_uint32_t > > grub_dma_get_phys (struct grub_pci_dma_chunk *ch) > > { > > - return (((grub_uint32_t) ch) & 0x1fffffff) | 0x80000000; > > + return (((grub_uint32_t) ch) & 0x1fffffff); > > I do not have experience with hardware but that does not look right. > Either this chunk breaks existing hardware or this part was not needed > in the first place. I suspect the former because later you re-add the > same code in subsequent patch. > I think this is a old mistake that caused grub on loongson3 broken. The dma chunk address (ch & 0x1fffffff) is physical address. and it or 0x80000000 is cached virtual address. My next subsequent patch fixed grub_dma_get_virt (not grub_dma_get_phys) function, because the Loongson 3B has a dma cached coherent issue, just only access memory by uncached for dma. so i add a grub_dma_coherent flag to control grub_dma_get_virt return cached virtual address or uncached. > > This makes it hard to bisect later as it leaves some commits in > non-functional state. > > Could you please rearrange your patches so that they do not impact > existing platforms? > I have tested on Loongson 2F and Loongson 3A, 3B platforms. I have not tested on qemu mips, and i will do that next. thanks! --=20 Best regards! Heiher http://hev.cc --047d7bae426c42f023051850beeb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Thanks for reivew.

On Fri, Jun 12, 2015 = at 6:02 PM, Andrei Borzenkov <arvidjaar@gmail.com> wrote:<= br>
=D0=92 Mon, 8 Jun 2015= 17:25:16 +0800
Heiher <r@hev.cc> =D0=BF=D0=B8=D1=88=D0=B5=D1=82:

> --- a/grub-core/bus/pci.c
> +++ b/grub-core/bus/pci.c
> @@ -72,7 +72,7 @@ grub_dma_get_virt (struct grub_pci_dma_chunk *ch) >=C2=A0 grub_uint32_t
>=C2=A0 grub_dma_get_phys (struct grub_pci_dma_chunk *ch)
>=C2=A0 {
> -=C2=A0 return (((grub_uint32_t) ch) & 0x1fffffff) | 0x80000000; > +=C2=A0 return (((grub_uint32_t) ch) & 0x1fffffff);

I do not have experience with hardware but that does not look right.
Either this chunk breaks existing hardware or this part was not needed
in the first place. I suspect the former because later you re-add the
same code in subsequent patch.

I think = this is a old mistake that caused grub on loongson3 broken. The dma chunk a= ddress (ch & 0x1fffffff) is physical address. and it or 0x80000000 is c= ached virtual address.

My next subsequent patch fixed gru= b_dma_get_virt (not grub_dma_get_phys) function,=C2=A0 because the Loongson= 3B has a dma cached coherent issue, just only access memory by uncached fo= r dma. so i add a grub_dma_coherent flag to control grub_dma_get_virt retur= n cached virtual address or uncached.
=C2=A0

This makes it hard to bisect later as it leaves some commits in
non-functional state.

Could you please rearrange your patches so that they do not impact
existing platforms?

I have tested on Lo= ongson 2F and Loongson 3A, 3B platforms. I have not tested on qemu mips, an= d i will do that next. thanks!

--
Best regards!
Heiher
= http://hev.cc
--047d7bae426c42f023051850beeb-- From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Z3NaM-0003M3-54 for mharc-grub-devel@gnu.org; Fri, 12 Jun 2015 07:57:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57584) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3NaH-0003GH-7T for grub-devel@gnu.org; Fri, 12 Jun 2015 07:57:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z3NaA-0003gl-S1 for grub-devel@gnu.org; Fri, 12 Jun 2015 07:57:17 -0400 Received: from mail-la0-x22e.google.com ([2a00:1450:4010:c03::22e]:33554) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3NaA-0003gW-KG for grub-devel@gnu.org; Fri, 12 Jun 2015 07:57:10 -0400 Received: by lacdj3 with SMTP id dj3so237031lac.0 for ; Fri, 12 Jun 2015 04:57:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=xbFylYWu4aRv6kn7hbWQrkZ5TRy/fpFoT889oq80ptA=; b=Ax7ESHsgLhXxseX149Sca2neMPOqvUtPMNgcI1Dfs9exEPXLN+/qBskypRluE0SWo6 3xN+ckQOtEQ3T80fbkV13k0wz8ILvw3fFeJ0l+PGLWpq1wYYaw8f5bEGeoPZm1KNu6mg XXTJA2WcoReHeHAYTRUXnMOMPMfrcLn+Wobcn12vsvJjahNGpt8Sh6t6CCQZAWLVmZg5 uU+5xdb1xiLKG2spEEKwV4urkeWlWLAVmf8B3PkqlHH+AzXa1Qo+/4DxlLkOPAkdNHT7 1/KX+OdZ2fEChu5ox8y/8t1cONpgFXBnQv6+/AvC00eFz8kFFpsxxQkE2ZS+zD2F8eeF u/JQ== X-Received: by 10.153.7.133 with SMTP id dc5mr6743212lad.17.1434110229615; Fri, 12 Jun 2015 04:57:09 -0700 (PDT) Received: from opensuse.site (ppp91-76-14-38.pppoe.mtu-net.ru. [91.76.14.38]) by mx.google.com with ESMTPSA id jw8sm794417lbc.39.2015.06.12.04.57.09 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Jun 2015 04:57:09 -0700 (PDT) Date: Fri, 12 Jun 2015 14:57:08 +0300 From: Andrei Borzenkov To: Heiher Subject: Re: [PATCH 1/2] MIPS: Loongson: Add support for Loongson3. Message-ID: <20150612145708.64143663@opensuse.site> In-Reply-To: References: <20150612130207.4708fb9f@opensuse.site> X-Mailer: Claws Mail 3.11.0 (GTK+ 2.24.28; x86_64-suse-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::22e Cc: The development of GNU GRUB X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jun 2015 11:57:19 -0000 =D0=92 Fri, 12 Jun 2015 19:52:31 +0800 Heiher =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > Hi, >=20 > Thanks for reivew. >=20 > On Fri, Jun 12, 2015 at 6:02 PM, Andrei Borzenkov > wrote: >=20 > > =D0=92 Mon, 8 Jun 2015 17:25:16 +0800 > > Heiher =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > > > > > --- a/grub-core/bus/pci.c > > > +++ b/grub-core/bus/pci.c > > > @@ -72,7 +72,7 @@ grub_dma_get_virt (struct grub_pci_dma_chunk *ch) > > > grub_uint32_t > > > grub_dma_get_phys (struct grub_pci_dma_chunk *ch) > > > { > > > - return (((grub_uint32_t) ch) & 0x1fffffff) | 0x80000000; > > > + return (((grub_uint32_t) ch) & 0x1fffffff); > > > > I do not have experience with hardware but that does not look right. > > Either this chunk breaks existing hardware or this part was not needed > > in the first place. I suspect the former because later you re-add the > > same code in subsequent patch. > > >=20 > I think this is a old mistake that caused grub on loongson3 broken. The d= ma > chunk address (ch & 0x1fffffff) is physical address. and it or 0x80000000 > is cached virtual address. >=20 So if this is not needed for existing platforms please make it separate patch to make it obvious and facilitate regression search. Do not hide it inside additional platform support. > My next subsequent patch fixed grub_dma_get_virt (not grub_dma_get_phys) > function, because the Loongson 3B has a dma cached coherent issue, just > only access memory by uncached for dma. so i add a grub_dma_coherent flag > to control grub_dma_get_virt return cached virtual address or uncached. >=20 >=20 > > > > This makes it hard to bisect later as it leaves some commits in > > non-functional state. > > > > Could you please rearrange your patches so that they do not impact > > existing platforms? > > >=20 > I have tested on Loongson 2F and Loongson 3A, 3B platforms. I have not > tested on qemu mips, and i will do that next. thanks! >=20 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Z3NbZ-000447-A0 for mharc-grub-devel@gnu.org; Fri, 12 Jun 2015 07:58:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57924) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3NbW-00040m-JK for grub-devel@gnu.org; Fri, 12 Jun 2015 07:58:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z3NbQ-0003wC-JW for grub-devel@gnu.org; Fri, 12 Jun 2015 07:58:34 -0400 Received: from mail-wi0-f180.google.com ([209.85.212.180]:36689) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3NbQ-0003vu-Ay for grub-devel@gnu.org; Fri, 12 Jun 2015 07:58:28 -0400 Received: by wigg3 with SMTP id g3so15090042wig.1 for ; Fri, 12 Jun 2015 04:58:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=SC/O7sjU9qdp/XRUm9npXzrNSxxUr8GN2LyXEXPBWUg=; b=nKJ8ER3qp3/YxtUeEuH6yYFBhwJR1cWimbpnOBWAIgsD5Q9BGqS3AMETcrzwn40bru oZABbyC5+KbtOjdhWHPM5IXMH5DLf6NHjQog7KozxI1DtEB84b0ggZsVSxqskE04B3DE cTkNkwnweLwL60I9lgp2Ub8lB3QynAs/dJXlvfX927rnqp+AyFoTf9UUGx/2S/ZTiB8X 841+yVV8BXQV9VZVErqcorXyXpvgVOV/3n0ThDpAXtZ4AwgJ2fItjQGq5JNkVAesIh89 DDYemBvuDVvZbX1vDiwZ87RlwRYHpioAuZk4iHUb5w2x3FkCVN0NMmzITgvIVZ5D8fCZ epUQ== X-Gm-Message-State: ALoCoQn4kF7p0YtOtUTMOh3SYMmRVsdWlQ1+GvT2gwvv2P99hM6IC/5qdIpaGbpNQrFwNS30siex MIME-Version: 1.0 X-Received: by 10.194.7.97 with SMTP id i1mr26228717wja.107.1434110307630; Fri, 12 Jun 2015 04:58:27 -0700 (PDT) Received: by 10.194.125.20 with HTTP; Fri, 12 Jun 2015 04:58:27 -0700 (PDT) X-Originating-IP: [107.170.230.69] Received: by 10.194.125.20 with HTTP; Fri, 12 Jun 2015 04:58:27 -0700 (PDT) In-Reply-To: <20150612145708.64143663@opensuse.site> References: <20150612130207.4708fb9f@opensuse.site> <20150612145708.64143663@opensuse.site> Date: Fri, 12 Jun 2015 19:58:27 +0800 Message-ID: Subject: Re: [PATCH 1/2] MIPS: Loongson: Add support for Loongson3. From: Heiher To: Andrei Borzenkov Content-Type: multipart/alternative; boundary=047d7b5d86a5749708051850d320 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.212.180 Cc: The development of GNU GRUB X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jun 2015 11:58:35 -0000 --047d7b5d86a5749708051850d320 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, Ok, you are right. On Jun 12, 2015 7:57 PM, "Andrei Borzenkov" wrote: > =D0=92 Fri, 12 Jun 2015 19:52:31 +0800 > Heiher =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > > > Hi, > > > > Thanks for reivew. > > > > On Fri, Jun 12, 2015 at 6:02 PM, Andrei Borzenkov > > wrote: > > > > > =D0=92 Mon, 8 Jun 2015 17:25:16 +0800 > > > Heiher =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > > > > > > > --- a/grub-core/bus/pci.c > > > > +++ b/grub-core/bus/pci.c > > > > @@ -72,7 +72,7 @@ grub_dma_get_virt (struct grub_pci_dma_chunk *ch) > > > > grub_uint32_t > > > > grub_dma_get_phys (struct grub_pci_dma_chunk *ch) > > > > { > > > > - return (((grub_uint32_t) ch) & 0x1fffffff) | 0x80000000; > > > > + return (((grub_uint32_t) ch) & 0x1fffffff); > > > > > > I do not have experience with hardware but that does not look right. > > > Either this chunk breaks existing hardware or this part was not neede= d > > > in the first place. I suspect the former because later you re-add the > > > same code in subsequent patch. > > > > > > > I think this is a old mistake that caused grub on loongson3 broken. The > dma > > chunk address (ch & 0x1fffffff) is physical address. and it or 0x800000= 00 > > is cached virtual address. > > > > So if this is not needed for existing platforms please make it separate > patch to make it obvious and facilitate regression search. Do not hide > it inside additional platform support. > > > My next subsequent patch fixed grub_dma_get_virt (not grub_dma_get_phys= ) > > function, because the Loongson 3B has a dma cached coherent issue, jus= t > > only access memory by uncached for dma. so i add a grub_dma_coherent fl= ag > > to control grub_dma_get_virt return cached virtual address or uncached. > > > > > > > > > > This makes it hard to bisect later as it leaves some commits in > > > non-functional state. > > > > > > Could you please rearrange your patches so that they do not impact > > > existing platforms? > > > > > > > I have tested on Loongson 2F and Loongson 3A, 3B platforms. I have not > > tested on qemu mips, and i will do that next. thanks! > > > > --047d7b5d86a5749708051850d320 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Hi,

Ok, you are right.

On Jun 12, 2015 7:57 PM, "Andrei Borzenkov&= quot; <arvidjaar@gmail.com>= ; wrote:
=D0=92 Fri,= 12 Jun 2015 19:52:31 +0800
Heiher <r@hev.cc> =D0=BF=D0=B8=D1=88=D0=B5=D1=82:

> Hi,
>
> Thanks for reivew.
>
> On Fri, Jun 12, 2015 at 6:02 PM, Andrei Borzenkov <arvidjaar@gmail.com>
> wrote:
>
> > =D0=92 Mon, 8 Jun 2015 17:25:16 +0800
> > Heiher <r@hev.cc> =D0=BF=D0=B8=D1=88=D0=B5=D1=82:
> >
> > > --- a/grub-core/bus/pci.c
> > > +++ b/grub-core/bus/pci.c
> > > @@ -72,7 +72,7 @@ grub_dma_get_virt (struct grub_pci_dma_chu= nk *ch)
> > >=C2=A0 grub_uint32_t
> > >=C2=A0 grub_dma_get_phys (struct grub_pci_dma_chunk *ch)
> > >=C2=A0 {
> > > -=C2=A0 return (((grub_uint32_t) ch) & 0x1fffffff) | 0x8= 0000000;
> > > +=C2=A0 return (((grub_uint32_t) ch) & 0x1fffffff);
> >
> > I do not have experience with hardware but that does not look rig= ht.
> > Either this chunk breaks existing hardware or this part was not n= eeded
> > in the first place. I suspect the former because later you re-add= the
> > same code in subsequent patch.
> >
>
> I think this is a old mistake that caused grub on loongson3 broken. Th= e dma
> chunk address (ch & 0x1fffffff) is physical address. and it or 0x8= 0000000
> is cached virtual address.
>

So if this is not needed for existing platforms please make it separate
patch to make it obvious and facilitate regression search. Do not hide
it inside additional platform support.

> My next subsequent patch fixed grub_dma_get_virt (not grub_dma_get_phy= s)
> function,=C2=A0 because the Loongson 3B has a dma cached coherent issu= e, just
> only access memory by uncached for dma. so i add a grub_dma_coherent f= lag
> to control grub_dma_get_virt return cached virtual address or uncached= .
>
>
> >
> > This makes it hard to bisect later as it leaves some commits in > > non-functional state.
> >
> > Could you please rearrange your patches so that they do not impac= t
> > existing platforms?
> >
>
> I have tested on Loongson 2F and Loongson 3A, 3B platforms. I have not=
> tested on qemu mips, and i will do that next. thanks!
>

--047d7b5d86a5749708051850d320-- From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Z3Ny2-0002nu-9c for mharc-grub-devel@gnu.org; Fri, 12 Jun 2015 08:21:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37256) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3Nxw-0002nH-LX for grub-devel@gnu.org; Fri, 12 Jun 2015 08:21:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z3Nxs-00078I-1C for grub-devel@gnu.org; Fri, 12 Jun 2015 08:21:44 -0400 Received: from mail-wi0-f172.google.com ([209.85.212.172]:34205) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z3Nxr-00077T-Kf for grub-devel@gnu.org; Fri, 12 Jun 2015 08:21:39 -0400 Received: by wibut5 with SMTP id ut5so17002622wib.1 for ; Fri, 12 Jun 2015 05:21:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=GoTzCoegS+cNBaheO+qq+GaIE+MRcon8qJ3L+2qFKGU=; b=If1P0iWwzD1lV2VBKX+mTNnzSuL4YwqJx7wGvRemsHnQ/JeK9Rx78w4HIzKlxUBeq5 l5XWqQ1Z/yZce7grKzn3rq48HekJFmdzWOIt6i6qNL6NViGWNDyz2lxTf016NMh9ueai 2fUeiVYGui7l0chhoyxjXW/SciaZljWG12qFuACBAXhvP48c35Ufj6shc6tLpImWZD1i KHpy+Ik6lXtoKUI6UYjZrmZbWvOGPpVd38VObSj43Xlx5dk+ut37EI/WwNLlUvyY1SH2 0Pp0BLshXoToGWlu9Yl4tLTdXNCRg/22dLmYN1k2bSmpKXO/TRQTKvjvH/8mkoFnkggz +7QA== X-Gm-Message-State: ALoCoQlZTz/9BG3ApNj4g792t0Mn6uXgu7VeLtQmH29IM6jJphifodiIzJ4M2Gfj0OwOoo+r0vQL MIME-Version: 1.0 X-Received: by 10.194.192.98 with SMTP id hf2mr26371622wjc.23.1434111696277; Fri, 12 Jun 2015 05:21:36 -0700 (PDT) Received: by 10.194.125.20 with HTTP; Fri, 12 Jun 2015 05:21:36 -0700 (PDT) X-Originating-IP: [107.170.230.69] In-Reply-To: References: <20150612130207.4708fb9f@opensuse.site> <20150612145708.64143663@opensuse.site> Date: Fri, 12 Jun 2015 20:21:36 +0800 Message-ID: Subject: Re: [PATCH 1/2] MIPS: Loongson: Add support for Loongson3. From: Heiher To: Andrei Borzenkov Content-Type: multipart/mixed; boundary=047d7bae426c39bbc205185126c3 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.212.172 Cc: The development of GNU GRUB X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jun 2015 12:21:48 -0000 --047d7bae426c39bbc205185126c3 Content-Type: multipart/alternative; boundary=047d7bae426c39bbbb05185126c1 --047d7bae426c39bbbb05185126c1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, Update v2: Split fix get dma physical address for loongson. The mips-qemu_mips looks like a mips big endian platform. I have not a mips big endian toolchains to build and test it. Is there anyone can help? thanks! On Fri, Jun 12, 2015 at 7:58 PM, Heiher wrote: > Hi, > > Ok, you are right. > On Jun 12, 2015 7:57 PM, "Andrei Borzenkov" wrote: > >> =D0=92 Fri, 12 Jun 2015 19:52:31 +0800 >> Heiher =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >> >> > Hi, >> > >> > Thanks for reivew. >> > >> > On Fri, Jun 12, 2015 at 6:02 PM, Andrei Borzenkov >> > wrote: >> > >> > > =D0=92 Mon, 8 Jun 2015 17:25:16 +0800 >> > > Heiher =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >> > > >> > > > --- a/grub-core/bus/pci.c >> > > > +++ b/grub-core/bus/pci.c >> > > > @@ -72,7 +72,7 @@ grub_dma_get_virt (struct grub_pci_dma_chunk *ch= ) >> > > > grub_uint32_t >> > > > grub_dma_get_phys (struct grub_pci_dma_chunk *ch) >> > > > { >> > > > - return (((grub_uint32_t) ch) & 0x1fffffff) | 0x80000000; >> > > > + return (((grub_uint32_t) ch) & 0x1fffffff); >> > > >> > > I do not have experience with hardware but that does not look right. >> > > Either this chunk breaks existing hardware or this part was not need= ed >> > > in the first place. I suspect the former because later you re-add th= e >> > > same code in subsequent patch. >> > > >> > >> > I think this is a old mistake that caused grub on loongson3 broken. Th= e >> dma >> > chunk address (ch & 0x1fffffff) is physical address. and it or >> 0x80000000 >> > is cached virtual address. >> > >> >> So if this is not needed for existing platforms please make it separate >> patch to make it obvious and facilitate regression search. Do not hide >> it inside additional platform support. >> >> > My next subsequent patch fixed grub_dma_get_virt (not grub_dma_get_phy= s) >> > function, because the Loongson 3B has a dma cached coherent issue, ju= st >> > only access memory by uncached for dma. so i add a grub_dma_coherent >> flag >> > to control grub_dma_get_virt return cached virtual address or uncached= . >> > >> > >> > > >> > > This makes it hard to bisect later as it leaves some commits in >> > > non-functional state. >> > > >> > > Could you please rearrange your patches so that they do not impact >> > > existing platforms? >> > > >> > >> > I have tested on Loongson 2F and Loongson 3A, 3B platforms. I have not >> > tested on qemu mips, and i will do that next. thanks! >> > >> >> --=20 Best regards! Heiher http://hev.cc --047d7bae426c39bbbb05185126c1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Update v2: Split fix get dma ph= ysical address for loongson.

The mips-qemu_mips looks like a m= ips big endian platform. I have not a mips big endian toolchains to build a= nd test it. Is there anyone can help? thanks!

On Fri, Jun 12, 2015 at 7:58 PM, Heih= er <r@he= v.cc> wrote:

Hi,

Ok, you are right.

On Jun 12, 2015 7:57 PM, "Andrei Borzenkov&= quot; <arvidjaa= r@gmail.com> wrote:
=D0=92 Fri, 12 Jun 2015 19:52:31 +0800
Heiher <r@hev.cc> =D0=BF=D0=B8=D1=88=D0=B5=D1=82:

> Hi,
>
> Thanks for reivew.
>
> On Fri, Jun 12, 2015 at 6:02 PM, Andrei Borzenkov <arvidjaar@gmail.com>
> wrote:
>
> > =D0=92 Mon, 8 Jun 2015 17:25:16 +0800
> > Heiher <r@hev.cc> =D0=BF=D0=B8=D1=88=D0=B5=D1=82:
> >
> > > --- a/grub-core/bus/pci.c
> > > +++ b/grub-core/bus/pci.c
> > > @@ -72,7 +72,7 @@ grub_dma_get_virt (struct grub_pci_dma_chu= nk *ch)
> > >=C2=A0 grub_uint32_t
> > >=C2=A0 grub_dma_get_phys (struct grub_pci_dma_chunk *ch)
> > >=C2=A0 {
> > > -=C2=A0 return (((grub_uint32_t) ch) & 0x1fffffff) | 0x8= 0000000;
> > > +=C2=A0 return (((grub_uint32_t) ch) & 0x1fffffff);
> >
> > I do not have experience with hardware but that does not look rig= ht.
> > Either this chunk breaks existing hardware or this part was not n= eeded
> > in the first place. I suspect the former because later you re-add= the
> > same code in subsequent patch.
> >
>
> I think this is a old mistake that caused grub on loongson3 broken. Th= e dma
> chunk address (ch & 0x1fffffff) is physical address. and it or 0x8= 0000000
> is cached virtual address.
>

So if this is not needed for existing platforms please make it separate
patch to make it obvious and facilitate regression search. Do not hide
it inside additional platform support.

> My next subsequent patch fixed grub_dma_get_virt (not grub_dma_get_phy= s)
> function,=C2=A0 because the Loongson 3B has a dma cached coherent issu= e, just
> only access memory by uncached for dma. so i add a grub_dma_coherent f= lag
> to control grub_dma_get_virt return cached virtual address or uncached= .
>
>
> >
> > This makes it hard to bisect later as it leaves some commits in > > non-functional state.
> >
> > Could you please rearrange your patches so that they do not impac= t
> > existing platforms?
> >
>
> I have tested on Loongson 2F and Loongson 3A, 3B platforms. I have not=
> tested on qemu mips, and i will do that next. thanks!
>




--
Best regards!
Heiher
http://hev.cc
--047d7bae426c39bbbb05185126c1-- --047d7bae426c39bbc205185126c3 Content-Type: text/plain; charset=US-ASCII; name="0001-MIPS-Loongson-Add-support-for-Loongson3.diff" Content-Disposition: attachment; filename="0001-MIPS-Loongson-Add-support-for-Loongson3.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iatl2grk0 RnJvbSA5NmUxYjVjNTJkMDZmNTE1ZjM5ODA5ZDFiYTU4ZDUwN2VjZjllNzliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWloZXIgPHJAaGV2LmNjPgpEYXRlOiBGcmksIDEgTWF5IDIw MTUgMjE6NDY6MzkgKzA4MDAKU3ViamVjdDogW1BBVENIIDEvMl0gTUlQUzogTG9vbmdzb246IEFk ZCBzdXBwb3J0IGZvciBMb29uZ3NvbjMuCgotLS0KIGdydWItY29yZS9ib290L21pcHMvc3RhcnR1 cF9yYXcuUyAgICB8ICAxMiArKwogZ3J1Yi1jb3JlL2J1cy9ib25pdG8uYyAgICAgICAgICAgICAg IHwgIDIwICsrLQogZ3J1Yi1jb3JlL2tlcm4vbWlwcy9sb29uZ3Nvbi9pbml0LmMgIHwgIDY2ICsr KysrKystLS0KIGdydWItY29yZS9rZXJuL21pcHMvc3RhcnR1cC5TICAgICAgICB8ICAgMyArCiBn cnViLWNvcmUvbGliL21pcHMvbG9vbmdzb24vcmVib290LmMgfCAgMTUgKystCiBncnViLWNvcmUv bG9hZGVyL21pcHMvbGludXguYyAgICAgICAgfCAxMjAgKysrKysrKysrKy0tLS0tLS0tCiBncnVi LWNvcmUvdGVybS9zZXJpYWwuYyAgICAgICAgICAgICAgfCAgIDMgKy0KIGluY2x1ZGUvZ3J1Yi9t aXBzL2xvb25nc29uLmggICAgICAgICB8ICAgNiArCiBpbmNsdWRlL2dydWIvbWlwcy9sb29uZ3Nv bi9ib290LmggICAgfCAyMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGlu Y2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29uL2tlcm5lbC5oICB8ICAgMyArLQogaW5jbHVkZS9ncnVi L21pcHMvbG9vbmdzb24vcGNpLmggICAgIHwgIDI0ICsrKy0KIGluY2x1ZGUvZ3J1Yi9taXBzL2xv b25nc29uL3NlcmlhbC5oICB8ICAgNCArLQogMTIgZmlsZXMgY2hhbmdlZCwgNDI5IGluc2VydGlv bnMoKyksIDgzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZ3J1Yi9t aXBzL2xvb25nc29uL2Jvb3QuaAoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9ib290L21pcHMvc3Rh cnR1cF9yYXcuUyBiL2dydWItY29yZS9ib290L21pcHMvc3RhcnR1cF9yYXcuUwppbmRleCBmZDk1 YzMxLi4zMzE2MjMyIDEwMDY0NAotLS0gYS9ncnViLWNvcmUvYm9vdC9taXBzL3N0YXJ0dXBfcmF3 LlMKKysrIGIvZ3J1Yi1jb3JlL2Jvb3QvbWlwcy9zdGFydHVwX3Jhdy5TCkBAIC0yMyw2ICsyMyw5 IEBACiAjaW5jbHVkZSA8Z3J1Yi9tYWNoaW5lL2tlcm5lbC5oPgogI2luY2x1ZGUgPGdydWIvY3B1 L2tlcm5lbC5oPgogI2luY2x1ZGUgPGdydWIvb2Zmc2V0cy5oPgorI2lmZGVmIEdSVUJfTUFDSElO RV9NSVBTX0xPT05HU09OCisjaW5jbHVkZSA8Z3J1Yi9jcHUvbG9vbmdzb24uaD4KKyNlbmRpZgog CiAjZGVmaW5lIEJBU0VfQUREUiA4CiAKQEAgLTgyLDYgKzg1LDE1IEBAIGNvZGVzdGFydDoKIAlt b3ZlICRzNSwgJHplcm8KIAltb3ZlICRzNywgJHplcm8KIAorCS8qIFRoZSBMb29uZ3NvbiAzQS8z QiBoYXMgYSBuZXcgYm9vdCBpbnRlcmZhY2UgYW5kCisJICAgbm90IGNvbXBhdGlhYmxlIHdpdGgg MkUgb3IgMkYuICovCisJbWZjMCAkdDAsIEdSVUJfQ1BVX0xPT05HU09OX0NPUDBfUFJJRAorCWxp ICR0MSwgR1JVQl9DUFVfTE9PTkdTT05fUFJJRF9MT09OR1NPTjNBCisJbGkgJHM3LCBHUlVCX0FS Q0hfTUFDSElORV9ZRUVMT09OR18zWAorCXNsdCAkdDAsICR0MCwgJHQxCisJYmVxeiAkdDAsIGNt ZGxpbmVkb25lCisJIG1vdmUgJHM1LCAkYTIKKwogCS8qICRhMiBoYXMgdGhlIGVudmlyb25tZW50 LiAgKi8KIAlhZGRpdSAkdDAsICR6ZXJvLCAtMHgxMAogCWFuZCAkdDEsICRhMiwgJHQwCmRpZmYg LS1naXQgYS9ncnViLWNvcmUvYnVzL2Jvbml0by5jIGIvZ3J1Yi1jb3JlL2J1cy9ib25pdG8uYwpp bmRleCA5YTYzZjA3Li4wMDIzMDM2IDEwMDY0NAotLS0gYS9ncnViLWNvcmUvYnVzL2Jvbml0by5j CisrKyBiL2dydWItY29yZS9idXMvYm9uaXRvLmMKQEAgLTQ1LDkgKzQ1LDkgQEAgY29uZmlnX2Fk ZHIgKGdydWJfcGNpX2FkZHJlc3NfdCBhZGRyKQogICAgIHsKIAogICAgICAgaWYgKGFkZHIgPj4g MTYpCi0JcmV0dXJuICh2b2xhdGlsZSB2b2lkICopIChHUlVCX01BQ0hJTkVfUENJX0NPTkZTUEFD RV8zQV9FWFQgfCBhZGRyKTsKKwlyZXR1cm4gKHZvbGF0aWxlIHZvaWQgKikgKEdSVUJfTUFDSElO RV9QQ0lfQ09ORlNQQUNFXzNYX0VYVCB8IGFkZHIpOwogICAgICAgZWxzZQotCXJldHVybiAodm9s YXRpbGUgdm9pZCAqKSAoR1JVQl9NQUNISU5FX1BDSV9DT05GU1BBQ0VfM0EgfCBhZGRyKTsKKwly ZXR1cm4gKHZvbGF0aWxlIHZvaWQgKikgKEdSVUJfTUFDSElORV9QQ0lfQ09ORlNQQUNFXzNYIHwg YWRkcik7CiAgICAgfQogfQogCkBAIC0xMzIsNiArMTMyLDE5IEBAIGdydWJfcGNpX2RldmljZV9t YXBfcmFuZ2UgKGdydWJfcGNpX2RldmljZV90IGRldiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSks CiAJICB9CiAgICAgICBncnViX2ZhdGFsICgiT3V0IG9mIFBDSSB3aW5kb3dzLiIpOwogICAgIH0K KyAgZWxzZSBpZiAoZ3J1Yl9ib25pdG9fdHlwZSA9PSBHUlVCX0JPTklUT18zWCkKKyAgICB7Cisg ICAgICBpZiAoR1JVQl9NQUNISU5FX1BDSV9NRU1fQkFTRTBfM1ggPD0gYmFzZSAmJgorICAgICAg ICAgIEdSVUJfTUFDSElORV9QQ0lfTUVNX0JBU0UwXzNYICsgR1JVQl9NQUNISU5FX1BDSV9NRU1f U0laRTBfM1ggPiBiYXNlICsgc2l6ZSkKKyAgICAgICAgcmV0dXJuICh2b2lkICopIChHUlVCX01B Q0hJTkVfUENJX01FTV9BRERSMF8zWCB8IGJhc2UpOworICAgICAgZWxzZSBpZiAoR1JVQl9NQUNI SU5FX1BDSV9NRU1fQkFTRTFfM1ggPD0gYmFzZSAmJgorICAgICAgICAgIEdSVUJfTUFDSElORV9Q Q0lfTUVNX0JBU0UxXzNYICsgR1JVQl9NQUNISU5FX1BDSV9NRU1fU0laRTFfM1ggPiBiYXNlICsg c2l6ZSkKKyAgICAgICAgcmV0dXJuICh2b2lkICopIChHUlVCX01BQ0hJTkVfUENJX01FTV9BRERS MV8zWCB8IGJhc2UpOworICAgICAgZWxzZSBpZiAoR1JVQl9NQUNISU5FX1BDSV9NRU1fQkFTRTJf M1ggPD0gYmFzZSAmJgorICAgICAgICAgIEdSVUJfTUFDSElORV9QQ0lfTUVNX0JBU0UyXzNYICsg R1JVQl9NQUNISU5FX1BDSV9NRU1fU0laRTJfM1ggPiBiYXNlICsgc2l6ZSkKKyAgICAgICAgcmV0 dXJuICh2b2lkICopIChHUlVCX01BQ0hJTkVfUENJX01FTV9BRERSMl8zWCB8IGJhc2UpOworICAg ICAgZ3J1Yl9mYXRhbCAoIk91dCBvZiBQQ0kgd2luZG93cy4iKTsKKyAgICB9CiAgIGVsc2UKICAg ICB7CiAgICAgICBpbnQgcmVnaW9uID0gMDsKQEAgLTE3Myw0ICsxODYsNyBAQCBncnViX3BjaV9k ZXZpY2VfdW5tYXBfcmFuZ2UgKGdydWJfcGNpX2RldmljZV90IGRldiBfX2F0dHJpYnV0ZV9fICgo dW51c2VkKSksCiAJICB9CiAgICAgICBncnViX2ZhdGFsICgiVHJpZWQgdG8gdW5tYXAgbm90IG1h cHBlZCByZWdpb24iKTsKICAgICB9CisgIGVsc2UgaWYgKGdydWJfYm9uaXRvX3R5cGUgPT0gR1JV Ql9CT05JVE9fM1gpCisgICAgeworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJu L21pcHMvbG9vbmdzb24vaW5pdC5jIGIvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9sb29uZ3Nvbi9pbml0 LmMKaW5kZXggN2I5NjUzMS4uMmRmOGRmYiAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vbWlw cy9sb29uZ3Nvbi9pbml0LmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9sb29uZ3Nvbi9pbml0 LmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxncnViL21hY2hpbmUvdGltZS5oPgogI2lu Y2x1ZGUgPGdydWIvbWFjaGluZS9rZXJuZWwuaD4KICNpbmNsdWRlIDxncnViL21hY2hpbmUvbWVt b3J5Lmg+CisjaW5jbHVkZSA8Z3J1Yi9tYWNoaW5lL2Jvb3QuaD4KICNpbmNsdWRlIDxncnViL21l bW9yeS5oPgogI2luY2x1ZGUgPGdydWIvbWlwcy9sb29uZ3Nvbi5oPgogI2luY2x1ZGUgPGdydWIv Y3M1NTM2Lmg+CkBAIC00NCw4ICs0NSw5IEBAIGdydWJfbWFjaGluZV9tbWFwX2l0ZXJhdGUgKGdy dWJfbWVtb3J5X2hvb2tfdCBob29rLCB2b2lkICpob29rX2RhdGEpCiB7CiAgIGhvb2sgKEdSVUJf QVJDSF9MT1dNRU1QU1RBUlQsIGdydWJfYXJjaF9tZW1zaXplIDw8IDIwLAogCUdSVUJfTUVNT1JZ X0FWQUlMQUJMRSwgaG9va19kYXRhKTsKLSAgaG9vayAoR1JVQl9BUkNIX0hJR0hNRU1QU1RBUlQs IGdydWJfYXJjaF9oaWdobWVtc2l6ZSA8PCAyMCwKLQlHUlVCX01FTU9SWV9BVkFJTEFCTEUsIGhv b2tfZGF0YSk7CisgIGlmIChncnViX2Jvbml0b190eXBlICE9IEdSVUJfQk9OSVRPXzNYKQorICAg IGhvb2sgKEdSVUJfQVJDSF9ISUdITUVNUFNUQVJULCBncnViX2FyY2hfaGlnaG1lbXNpemUgPDwg MjAsCisJICBHUlVCX01FTU9SWV9BVkFJTEFCTEUsIGhvb2tfZGF0YSk7CiAgIHJldHVybiBHUlVC X0VSUl9OT05FOwogfQogCkBAIC0xMjcsMjEgKzEyOSwyMyBAQCBncnViX21hY2hpbmVfaW5pdCAo dm9pZCkKICAgc3dpdGNoIChwcmlkKQogICAgIHsKICAgICAgIC8qIExvb25nc29uIDJFLiAgKi8K LSAgICBjYXNlIDB4NjMwMjoKKyAgICBjYXNlIEdSVUJfQ1BVX0xPT05HU09OX1BSSURfTE9PTkdT T04yRToKICAgICAgIGdydWJfYXJjaF9tYWNoaW5lID0gR1JVQl9BUkNIX01BQ0hJTkVfRlVMT09O RzJFOwogICAgICAgZ3J1Yl9ib25pdG9fdHlwZSA9IEdSVUJfQk9OSVRPXzJGOwogICAgICAgYnJl YWs7CiAgICAgICAvKiBMb29uZ3NvbiAyRi4gICovCi0gICAgY2FzZSAweDYzMDM6CisgICAgY2Fz ZSBHUlVCX0NQVV9MT09OR1NPTl9QUklEX0xPT05HU09OMkY6CiAgICAgICBpZiAoZ3J1Yl9hcmNo X21hY2hpbmUgIT0gR1JVQl9BUkNIX01BQ0hJTkVfRlVMT09ORzJGCiAJICAmJiBncnViX2FyY2hf bWFjaGluZSAhPSBHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09ORykKIAlncnViX2FyY2hfbWFjaGlu ZSA9IEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HOwogICAgICAgZ3J1Yl9ib25pdG9fdHlwZSA9 IEdSVUJfQk9OSVRPXzJGOwogICAgICAgYnJlYWs7Ci0gICAgICAvKiBMb29uZ3NvbiAzQS4gKi8K LSAgICBjYXNlIDB4NjMwNToKLSAgICAgIGdydWJfYXJjaF9tYWNoaW5lID0gR1JVQl9BUkNIX01B Q0hJTkVfWUVFTE9PTkdfM0E7Ci0gICAgICBncnViX2Jvbml0b190eXBlID0gR1JVQl9CT05JVE9f M0E7CisgICAgICAvKiBMb29uZ3NvbiAzQS8zQi4gKi8KKyAgICBjYXNlIEdSVUJfQ1BVX0xPT05H U09OX1BSSURfTE9PTkdTT04zQToKKyAgICBjYXNlIEdSVUJfQ1BVX0xPT05HU09OX1BSSURfTE9P TkdTT04zQlIxOgorICAgIGNhc2UgR1JVQl9DUFVfTE9PTkdTT05fUFJJRF9MT09OR1NPTjNCUjI6 CisgICAgICBncnViX2FyY2hfbWFjaGluZSA9IEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNY OworICAgICAgZ3J1Yl9ib25pdG9fdHlwZSA9IEdSVUJfQk9OSVRPXzNYOwogICAgICAgYnJlYWs7 CiAgICAgfQogCkBAIC0xNTAsMTAgKzE1NCw0MCBAQCBncnViX21hY2hpbmVfaW5pdCAodm9pZCkK ICAgICB7CiAgICAgICBncnViX2FyY2hfYnVzY2xvY2sgPSA2NjAwMDAwMDsKICAgICAgIGdydWJf YXJjaF9jcHVjbG9jayA9IDc5NzAwMDAwMDsKKworICAgICAgaWYgKGdydWJfYm9uaXRvX3R5cGUg PT0gR1JVQl9CT05JVE9fM1gpCisgICAgICAgIHsKKyAgICAgICAgICBzdHJ1Y3QgZWZpX2NwdWlu Zm9fbG9vbmdzb24gKmNwdWluZm87CisKKyAgICAgICAgICBjcHVpbmZvID0gZ3J1Yl9taXBzX2xv b25nc29uX3BhcmFtc19nZXRfY3B1IChncnViX2FyY2hfbGVmaSk7CisgICAgICAgICAgZ3J1Yl9h cmNoX2NwdWNsb2NrID0gY3B1aW5mby0+Y3B1X2Nsb2NrX2ZyZXE7CisgICAgICAgIH0KICAgICB9 CiAKICAgZ3J1Yl9pbnN0YWxsX2dldF90aW1lX21zIChncnViX3J0Y19nZXRfdGltZV9tcyk7CiAK KyAgaWYgKGdydWJfYm9uaXRvX3R5cGUgPT0gR1JVQl9CT05JVE9fM1gpCisgICAgeworICAgICAg Z3J1Yl91aW50MzJfdCBpOworICAgICAgc3RydWN0IGVmaV9tZW1vcnlfbWFwX2xvb25nc29uICpt bWFwOworCisgICAgICBtbWFwID0gZ3J1Yl9taXBzX2xvb25nc29uX3BhcmFtc19nZXRfbWVtb3J5 IChncnViX2FyY2hfbGVmaSk7CisgICAgICBmb3IgKGk9MDsgaTxtbWFwLT5ucl9tYXA7IGkrKykK KyAgICAgICAgeworICAgICAgICAgIGlmIChTWVNURU1fUkFNX0xPVyA9PSBtbWFwLT5tYXBbaV0u bWVtX3R5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGdydWJfYXJjaF9tZW1zaXpl ID0gbW1hcC0+bWFwW2ldLm1lbV9zaXplOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgICAgaWYgKGdydWJfYXJjaF9tZW1zaXplID09IDApCisJZ3J1 Yl9mYXRhbCAoIk5vIG1lbW9yeSBtYXAgZm91bmRcbiIpOworCisgICAgICAvKiBXb3JrYXJvdW5k cyBmb3Igb2xkIEJJT1MsIHRoZSBib290IHBhcmFtcyBzdGFydCBhdAorICAgICAgICogc3lzdGVt IHJhbSBsb3cgZW5kIGFkZHJlc3MgLSA1MTJrICovCisgICAgICBpZiAoZ3J1Yl92dG9wICgodm9p ZCAqKSBncnViX2FyY2hfbGVmaSkgPCAoZ3J1Yl9hcmNoX21lbXNpemUgPDwgMjApKQorICAgICAg ICBncnViX2FyY2hfbWVtc2l6ZSAtPSAxOworICAgIH0KICAgaWYgKGdydWJfYXJjaF9tZW1zaXpl ID09IDApCiAgICAgewogICAgICAgZ3J1Yl9wb3J0X3Qgc21iYmFzZTsKQEAgLTIxNiw3ICsyNTAs NyBAQCBncnViX21hY2hpbmVfaW5pdCAodm9pZCkKIAogICBncnViX2tleWxheW91dHNfaW5pdCAo KTsKICAgaWYgKGdydWJfYXJjaF9tYWNoaW5lID09IEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05H Ci0gICAgICB8fCBncnViX2FyY2hfbWFjaGluZSA9PSBHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09O R18zQSkKKyAgICAgIHx8IGdydWJfYXJjaF9tYWNoaW5lID09IEdSVUJfQVJDSF9NQUNISU5FX1lF RUxPT05HXzNYKQogICAgIGdydWJfYXRfa2V5Ym9hcmRfaW5pdCAoKTsKIAogICBncnViX3Rlcm1p bmZvX2luaXQgKCk7CkBAIC0yODksMTIgKzMyMywxNCBAQCBncnViX2hhbHQgKHZvaWQpCiAJCSAm IH5HUlVCX0NQVV9ZRUVMT09OR19TSFVURE9XTl9HUElPLCBHUlVCX0NQVV9MT09OR1NPTl9HUElP Q0ZHKTsKICAgICAgIGdydWJfbWlsbGlzbGVlcCAoMTUwMCk7CiAgICAgICBicmVhazsKLSAgICBj YXNlIEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNBOgotICAgICAgZ3J1Yl9taWxsaXNsZWVw ICgxKTsKLSAgICAgIGdydWJfb3V0YiAoMHg0ZSwgR1JVQl9NQUNISU5FX1BDSV9JT19CQVNFXzNB IHwgMHg2Nik7Ci0gICAgICBncnViX21pbGxpc2xlZXAgKDEpOwotICAgICAgZ3J1Yl9vdXRiICgy LCBHUlVCX01BQ0hJTkVfUENJX0lPX0JBU0VfM0EgfCAweDYyKTsKLSAgICAgIGdydWJfbWlsbGlz bGVlcCAoNTAwMCk7CisgICAgY2FzZSBHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09OR18zWDoKKyAg ICAgIHsKKwlzdHJ1Y3QgYm9vdF9wYXJhbXMgKmJwID0gKHN0cnVjdCBib290X3BhcmFtcyAqKSBn cnViX2FyY2hfbGVmaTsKKyAgICAgICAgdm9pZCAoKnNodXRkb3duKSAodm9pZCkgPSAodm9pZCAq KSAobG9uZykgYnAtPnJlc2V0X3N5c3RlbS5TaHV0ZG93bjsKKwlpZiAoc2h1dGRvd24pCisgICAg ICAgICAgc2h1dGRvd24gKCk7CisJZ3J1Yl9taWxsaXNsZWVwICg1MDAwKTsKKyAgICAgIH0KICAg ICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9zdGFy dHVwLlMgYi9ncnViLWNvcmUva2Vybi9taXBzL3N0YXJ0dXAuUwppbmRleCAzMzdhY2E5Li4zYjFj N2E5IDEwMDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9taXBzL3N0YXJ0dXAuUworKysgYi9ncnVi LWNvcmUva2Vybi9taXBzL3N0YXJ0dXAuUwpAQCAtNDgsNiArNDgsOSBAQCBWQVJJQUJMRSAoZ3J1 Yl9hcmNoX2NwdWNsb2NrKQogCS5sb25nIDAKIFZBUklBQkxFIChncnViX2FyY2hfbWVtc2l6ZSkK IAkubG9uZyAwCisjaWZkZWYgR1JVQl9NQUNISU5FX01JUFNfTE9PTkdTT04KK1ZBUklBQkxFIChn cnViX2FyY2hfbGVmaSkKKyNlbmRpZgogVkFSSUFCTEUgKGdydWJfYXJjaF9oaWdobWVtc2l6ZSkK IAkubG9uZyAwCiAjaWZkZWYgR1JVQl9NQUNISU5FX01JUFNfTE9PTkdTT04KZGlmZiAtLWdpdCBh L2dydWItY29yZS9saWIvbWlwcy9sb29uZ3Nvbi9yZWJvb3QuYyBiL2dydWItY29yZS9saWIvbWlw cy9sb29uZ3Nvbi9yZWJvb3QuYwppbmRleCBhMjBlNTc0Li5hZmIzMGI2IDEwMDY0NAotLS0gYS9n cnViLWNvcmUvbGliL21pcHMvbG9vbmdzb24vcmVib290LmMKKysrIGIvZ3J1Yi1jb3JlL2xpYi9t aXBzL2xvb25nc29uL3JlYm9vdC5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8Z3J1Yi9t YWNoaW5lL2VjLmg+CiAjaW5jbHVkZSA8Z3J1Yi9tYWNoaW5lL2tlcm5lbC5oPgogI2luY2x1ZGUg PGdydWIvbWFjaGluZS9tZW1vcnkuaD4KKyNpbmNsdWRlIDxncnViL21hY2hpbmUvYm9vdC5oPgog I2luY2x1ZGUgPGdydWIvbWlzYy5oPgogI2luY2x1ZGUgPGdydWIvcGNpLmg+CiAjaW5jbHVkZSA8 Z3J1Yi9jczU1MzYuaD4KQEAgLTQ5LDEyICs1MCwxNCBAQCBncnViX3JlYm9vdCAodm9pZCkKICAg ICBjYXNlIEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HOgogICAgICAgZ3J1Yl93cml0ZV9lYyAo R1JVQl9NQUNISU5FX0VDX0NPTU1BTkRfUkVCT09UKTsKICAgICAgIGJyZWFrOwotICAgIGNhc2Ug R1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkdfM0E6Ci0gICAgICBncnViX21pbGxpc2xlZXAgKDEp OwotICAgICAgZ3J1Yl9vdXRiICgweDRlLCBHUlVCX01BQ0hJTkVfUENJX0lPX0JBU0VfM0EgfCAw eDY2KTsKLSAgICAgIGdydWJfbWlsbGlzbGVlcCAoMSk7Ci0gICAgICBncnViX291dGIgKDEsIEdS VUJfTUFDSElORV9QQ0lfSU9fQkFTRV8zQSB8IDB4NjIpOwotICAgICAgZ3J1Yl9taWxsaXNsZWVw ICg1MDAwKTsKKyAgICBjYXNlIEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNYOgorICAgICAg eworCXN0cnVjdCBib290X3BhcmFtcyAqYnAgPSAoc3RydWN0IGJvb3RfcGFyYW1zICopIGdydWJf YXJjaF9sZWZpOworICAgICAgICB2b2lkICgqcmVib290KSAodm9pZCkgPSAodm9pZCAqKSAobG9u ZykgYnAtPnJlc2V0X3N5c3RlbS5SZXNldFdhcm07CisJaWYgKHJlYm9vdCkKKyAgICAgICAgICBy ZWJvb3QgKCk7CisJZ3J1Yl9taWxsaXNsZWVwICg1MDAwKTsKKyAgICAgIH0KICAgICB9CiAgIGdy dWJfbWlsbGlzbGVlcCAoMTUwMCk7CiAKZGlmZiAtLWdpdCBhL2dydWItY29yZS9sb2FkZXIvbWlw cy9saW51eC5jIGIvZ3J1Yi1jb3JlL2xvYWRlci9taXBzL2xpbnV4LmMKaW5kZXggNWYzODNiZS4u YjllNDIwMyAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2xvYWRlci9taXBzL2xpbnV4LmMKKysrIGIv Z3J1Yi1jb3JlL2xvYWRlci9taXBzL2xpbnV4LmMKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGdy dWJfZGxfdCBteV9tb2Q7CiAKIHN0YXRpYyBpbnQgbG9hZGVkOwogCi1zdGF0aWMgZ3J1Yl9zaXpl X3QgbGludXhfc2l6ZTsKK3N0YXRpYyBncnViX3NpemVfdCBsaW51eF9zaXplLCBjbWRsaW5lX3Np emU7CiAKIHN0YXRpYyBzdHJ1Y3QgZ3J1Yl9yZWxvY2F0b3IgKnJlbG9jYXRvcjsKIHN0YXRpYyBn cnViX3VpbnQ4X3QgKnBsYXlncm91bmQ7CkBAIC0xMDYsNyArMTA2LDEwIEBAIGdydWJfbGludXhf Ym9vdCAodm9pZCkKICAgc3RhdGUuZ3ByWzRdID0gbGludXhfYXJnYzsKICAgc3RhdGUuZ3ByWzVd ID0gdGFyZ2V0X2FkZHIgKyBhcmd2X29mZjsKICNpZmRlZiBHUlVCX01BQ0hJTkVfTUlQU19MT09O R1NPTgotICBzdGF0ZS5ncHJbNl0gPSB0YXJnZXRfYWRkciArIGVudnBfb2ZmOworICBpZiAoR1JV Ql9BUkNIX01BQ0hJTkVfWUVFTE9PTkdfM1ggPT0gZ3J1Yl9hcmNoX21hY2hpbmUpCisgICAgc3Rh dGUuZ3ByWzZdID0gZ3J1Yl9hcmNoX2xlZmk7CisgIGVsc2UKKyAgICBzdGF0ZS5ncHJbNl0gPSB0 YXJnZXRfYWRkciArIGVudnBfb2ZmOwogI2Vsc2UKICAgc3RhdGUuZ3ByWzZdID0gMDsKICNlbmRp ZgpAQCAtMTM5LDcgKzE0Miw2IEBAIGdydWJfbGludXhfbG9hZDMyIChncnViX2VsZl90IGVsZiwg Y29uc3QgY2hhciAqZmlsZW5hbWUsCiAJCSAgIHZvaWQgKipleHRyYV9tZW0sIGdydWJfc2l6ZV90 IGV4dHJhX3NpemUpCiB7CiAgIEVsZjMyX0FkZHIgYmFzZTsKLSAgaW50IGV4dHJhb2ZmOwogICBn cnViX2Vycl90IGVycjsKIAogICAvKiBMaW51eCdzIGVudHJ5IHBvaW50IGluY29ycmVjdGx5IGNv bnRhaW5zIGEgdmlydHVhbCBhZGRyZXNzLiAgKi8KQEAgLTE1Miw4ICsxNTQsNiBAQCBncnViX2xp bnV4X2xvYWQzMiAoZ3J1Yl9lbGZfdCBlbGYsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAogICAvKiBQ YWQgaXQ7IHRoZSBrZXJuZWwgc2NyaWJibGVzIG92ZXIgbWVtb3J5IGJleW9uZCBpdHMgbG9hZCBh ZGRyZXNzLiAgKi8KICAgbGludXhfc2l6ZSArPSAweDEwMDAwMDsKICAgbGludXhfc2l6ZSA9IEFM SUdOX1VQIChiYXNlICsgbGludXhfc2l6ZSwgNCkgLSBiYXNlOwotICBleHRyYW9mZiA9IGxpbnV4 X3NpemU7Ci0gIGxpbnV4X3NpemUgKz0gZXh0cmFfc2l6ZTsKIAogICByZWxvY2F0b3IgPSBncnVi X3JlbG9jYXRvcl9uZXcgKCk7CiAgIGlmICghcmVsb2NhdG9yKQpAQCAtMTY3LDkgKzE2NywxNCBA QCBncnViX2xpbnV4X2xvYWQzMiAoZ3J1Yl9lbGZfdCBlbGYsIGNvbnN0IGNoYXIgKmZpbGVuYW1l LAogICAgIGlmIChlcnIpCiAgICAgICByZXR1cm4gZXJyOwogICAgIHBsYXlncm91bmQgPSBnZXRf dmlydHVhbF9jdXJyZW50X2FkZHJlc3MgKGNoKTsKLSAgfQogCi0gICpleHRyYV9tZW0gPSBwbGF5 Z3JvdW5kICsgZXh0cmFvZmY7CisgICAgZXJyID0gZ3J1Yl9yZWxvY2F0b3JfYWxsb2NfY2h1bmtf YWRkciAocmVsb2NhdG9yLCAmY2gsCisJCQkJCSAgIGdydWJfbW1hcF9nZXRfbG93ZXIgKCkgLSBl eHRyYV9zaXplLAorCQkJCQkgICBleHRyYV9zaXplKTsKKyAgICBpZiAoZXJyKQorICAgICAgcmV0 dXJuIGVycjsKKyAgICAqZXh0cmFfbWVtID0gZ2V0X3ZpcnR1YWxfY3VycmVudF9hZGRyZXNzIChj aCk7CisgIH0KIAogICAvKiBOb3cgbG9hZCB0aGUgc2VnbWVudHMgaW50byB0aGUgYXJlYSB3ZSBj bGFpbWVkLiAgKi8KICAgcmV0dXJuIGdydWJfZWxmMzJfbG9hZCAoZWxmLCBmaWxlbmFtZSwgcGxh eWdyb3VuZCAtIGJhc2UsIEdSVUJfRUxGX0xPQURfRkxBR1NfTk9ORSwgMCwgMCk7CkBAIC0xODAs NyArMTg1LDYgQEAgZ3J1Yl9saW51eF9sb2FkNjQgKGdydWJfZWxmX3QgZWxmLCBjb25zdCBjaGFy ICpmaWxlbmFtZSwKIAkJICAgdm9pZCAqKmV4dHJhX21lbSwgZ3J1Yl9zaXplX3QgZXh0cmFfc2l6 ZSkKIHsKICAgRWxmNjRfQWRkciBiYXNlOwotICBpbnQgZXh0cmFvZmY7CiAgIGdydWJfZXJyX3Qg ZXJyOwogCiAgIC8qIExpbnV4J3MgZW50cnkgcG9pbnQgaW5jb3JyZWN0bHkgY29udGFpbnMgYSB2 aXJ0dWFsIGFkZHJlc3MuICAqLwpAQCAtMTkzLDggKzE5Nyw2IEBAIGdydWJfbGludXhfbG9hZDY0 IChncnViX2VsZl90IGVsZiwgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAgIC8qIFBhZCBpdDsgdGhl IGtlcm5lbCBzY3JpYmJsZXMgb3ZlciBtZW1vcnkgYmV5b25kIGl0cyBsb2FkIGFkZHJlc3MuICAq LwogICBsaW51eF9zaXplICs9IDB4MTAwMDAwOwogICBsaW51eF9zaXplID0gQUxJR05fVVAgKGJh c2UgKyBsaW51eF9zaXplLCA0KSAtIGJhc2U7Ci0gIGV4dHJhb2ZmID0gbGludXhfc2l6ZTsKLSAg bGludXhfc2l6ZSArPSBleHRyYV9zaXplOwogCiAgIHJlbG9jYXRvciA9IGdydWJfcmVsb2NhdG9y X25ldyAoKTsKICAgaWYgKCFyZWxvY2F0b3IpCkBAIC0yMDgsOSArMjEwLDE0IEBAIGdydWJfbGlu dXhfbG9hZDY0IChncnViX2VsZl90IGVsZiwgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAgICAgaWYg KGVycikKICAgICAgIHJldHVybiBlcnI7CiAgICAgcGxheWdyb3VuZCA9IGdldF92aXJ0dWFsX2N1 cnJlbnRfYWRkcmVzcyAoY2gpOwotICB9CiAKLSAgKmV4dHJhX21lbSA9IHBsYXlncm91bmQgKyBl eHRyYW9mZjsKKyAgICBlcnIgPSBncnViX3JlbG9jYXRvcl9hbGxvY19jaHVua19hZGRyIChyZWxv Y2F0b3IsICZjaCwKKwkJCQkJICAgZ3J1Yl9tbWFwX2dldF9sb3dlciAoKSAtIGV4dHJhX3NpemUs CisJCQkJCSAgIGV4dHJhX3NpemUpOworICAgIGlmIChlcnIpCisgICAgICByZXR1cm4gZXJyOwor ICAgICpleHRyYV9tZW0gPSBnZXRfdmlydHVhbF9jdXJyZW50X2FkZHJlc3MgKGNoKTsKKyAgfQog CiAgIC8qIE5vdyBsb2FkIHRoZSBzZWdtZW50cyBpbnRvIHRoZSBhcmVhIHdlIGNsYWltZWQuICAq LwogICByZXR1cm4gZ3J1Yl9lbGY2NF9sb2FkIChlbGYsIGZpbGVuYW1lLCBwbGF5Z3JvdW5kIC0g YmFzZSwgR1JVQl9FTEZfTE9BRF9GTEFHU19OT05FLCAwLCAwKTsKQEAgLTI1OCw3ICsyNjUsOCBA QCBncnViX2NtZF9saW51eCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVz ZWQpKSwKICAgLyogRm9yIGFyZ3VtZW50cy4gICovCiAgIGxpbnV4X2FyZ2MgPSBhcmdjOwogI2lm ZGVmIEdSVUJfTUFDSElORV9NSVBTX0xPT05HU09OCi0gIGxpbnV4X2FyZ2MrKzsKKyAgaWYgKEdS VUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNYICE9IGdydWJfYXJjaF9tYWNoaW5lKQorICAgIGxp bnV4X2FyZ2MrKzsKICNlbmRpZgogICAvKiBNYWluIGFyZ3VtZW50cy4gICovCiAgIHNpemUgPSAo bGludXhfYXJnYykgKiBzaXplb2YgKGdydWJfdWludDMyX3QpOyAKQEAgLTI3Myw3ICsyODEsOCBA QCBncnViX2NtZF9saW51eCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVz ZWQpKSwKICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKICAgICBzaXplICs9IEFMSUdOX1VQ IChncnViX3N0cmxlbiAoYXJndltpXSkgKyAxLCA0KTsKICNpZmRlZiBHUlVCX01BQ0hJTkVfTUlQ U19MT09OR1NPTgotICBzaXplICs9IEFMSUdOX1VQIChzaXplb2YgKGxvb25nc29uX21hY2h0eXBl c1swXSksIDQpOworICBpZiAoR1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkdfM1ggIT0gZ3J1Yl9h cmNoX21hY2hpbmUpCisgICAgc2l6ZSArPSBBTElHTl9VUCAoc2l6ZW9mIChsb29uZ3Nvbl9tYWNo dHlwZXNbMF0pLCA0KTsKICNlbmRpZgogCiAgIC8qIHJkIGFyZ3VtZW50cy4gICovCkBAIC0yODEs MTIgKzI5MCwxNSBAQCBncnViX2NtZF9saW51eCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSwKICAgc2l6ZSArPSBBTElHTl9VUCAoc2l6ZW9mICgicmRfc2l6ZT0w eFhYWFhYWFhYWFhYWFhYWFgiKSwgNCk7CiAKICAgLyogRm9yIHRoZSBlbnZpcm9ubWVudC4gICov Ci0gIHNpemUgKz0gc2l6ZW9mIChncnViX3VpbnQzMl90KTsKLSAgc2l6ZSArPSA0ICogc2l6ZW9m IChncnViX3VpbnQzMl90KTsKLSAgc2l6ZSArPSBBTElHTl9VUCAoc2l6ZW9mICgibWVtc2l6ZT1Y WFhYWFhYWFhYWFhYWFhYWFhYWCIpLCA0KQotICAgICsgQUxJR05fVVAgKHNpemVvZiAoImhpZ2ht ZW1zaXplPVhYWFhYWFhYWFhYWFhYWFhYWFhYIiksIDQpCi0gICAgKyBBTElHTl9VUCAoc2l6ZW9m ICgiYnVzY2xvY2s9WFhYWFhYWFhYWCIpLCA0KQotICAgICsgQUxJR05fVVAgKHNpemVvZiAoImNw dWNsb2NrPVhYWFhYWFhYWFgiKSwgNCk7CisgIGlmIChHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09O R18zWCAhPSBncnViX2FyY2hfbWFjaGluZSkKKyAgICB7CisgICAgICBzaXplICs9IHNpemVvZiAo Z3J1Yl91aW50MzJfdCk7CisgICAgICBzaXplICs9IDQgKiBzaXplb2YgKGdydWJfdWludDMyX3Qp OworICAgICAgc2l6ZSArPSBBTElHTl9VUCAoc2l6ZW9mICgibWVtc2l6ZT1YWFhYWFhYWFhYWFhY WFhYWFhYWCIpLCA0KQorICAgICAgICArIEFMSUdOX1VQIChzaXplb2YgKCJoaWdobWVtc2l6ZT1Y WFhYWFhYWFhYWFhYWFhYWFhYWCIpLCA0KQorICAgICAgICArIEFMSUdOX1VQIChzaXplb2YgKCJi dXNjbG9jaz1YWFhYWFhYWFhYIiksIDQpCisgICAgICAgICsgQUxJR05fVVAgKHNpemVvZiAoImNw dWNsb2NrPVhYWFhYWFhYWFgiKSwgNCk7CisgICAgfQogI2VuZGlmCiAKICAgaWYgKGdydWJfZWxm X2lzX2VsZjMyIChlbGYpKQpAQCAtMzI4LDYgKzM0MCw3IEBAIGdydWJfY21kX2xpbnV4IChncnVi X2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogICBsaW51eF9hcmdzICs9 IEFMSUdOX1VQIChzaXplb2YgKCJhMCIpLCA0KTsKIAogI2lmZGVmIEdSVUJfTUFDSElORV9NSVBT X0xPT05HU09OCisgIGlmIChHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09OR18zWCAhPSBncnViX2Fy Y2hfbWFjaGluZSkKICAgewogICAgIHVuc2lnbmVkIG10eXBlID0gZ3J1Yl9hcmNoX21hY2hpbmU7 CiAgICAgaWYgKG10eXBlID49IEFSUkFZX1NJWkUgKGxvb25nc29uX21hY2h0eXBlcykpCkBAIC0z NjgsMzYgKzM4MSw0MCBAQCBncnViX2NtZF9saW51eCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSwKICAgZXh0cmEgPSBsaW51eF9hcmdzOwogCiAjaWZkZWYgR1JV Ql9NQUNISU5FX01JUFNfTE9PTkdTT04KLSAgbGludXhfZW52cCA9IGV4dHJhOwotICBlbnZwX29m ZiA9IChncnViX3VpbnQ4X3QgKikgbGludXhfZW52cCAtIChncnViX3VpbnQ4X3QgKikgcGxheWdy b3VuZDsKLSAgbGludXhfZW52cyA9IChjaGFyICopIChsaW51eF9lbnZwICsgNSk7Ci0gIGdydWJf c25wcmludGYgKGxpbnV4X2VudnMsIHNpemVvZiAoIm1lbXNpemU9WFhYWFhYWFhYWFhYWFhYWFhY WFgiKSwKLQkJICJtZW1zaXplPSVsbGQiLAotCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgZ3J1Yl9t bWFwX2dldF9sb3dlciAoKSA+PiAyMCk7Ci0gIGxpbnV4X2VudnBbMF0gPSAoZ3J1Yl91aW50OF90 ICopIGxpbnV4X2VudnMgLSAoZ3J1Yl91aW50OF90ICopIHBsYXlncm91bmQKLSAgICArIHRhcmdl dF9hZGRyOwotICBsaW51eF9lbnZzICs9IEFMSUdOX1VQIChncnViX3N0cmxlbiAobGludXhfZW52 cykgKyAxLCA0KTsKLSAgZ3J1Yl9zbnByaW50ZiAobGludXhfZW52cywgc2l6ZW9mICgiaGlnaG1l bXNpemU9WFhYWFhYWFhYWFhYWFhYWFhYWFgiKSwKLQkJICJoaWdobWVtc2l6ZT0lbGxkIiwKLQkJ ICh1bnNpZ25lZCBsb25nIGxvbmcpIGdydWJfbW1hcF9nZXRfdXBwZXIgKCkgPj4gMjApOwotICBs aW51eF9lbnZwWzFdID0gKGdydWJfdWludDhfdCAqKSBsaW51eF9lbnZzIC0gKGdydWJfdWludDhf dCAqKSBwbGF5Z3JvdW5kCi0gICAgKyB0YXJnZXRfYWRkcjsKLSAgbGludXhfZW52cyArPSBBTElH Tl9VUCAoZ3J1Yl9zdHJsZW4gKGxpbnV4X2VudnMpICsgMSwgNCk7Ci0KLSAgZ3J1Yl9zbnByaW50 ZiAobGludXhfZW52cywgc2l6ZW9mICgiYnVzY2xvY2s9WFhYWFhYWFhYWCIpLAotCQkgImJ1c2Ns b2NrPSVkIiwgZ3J1Yl9hcmNoX2J1c2Nsb2NrKTsKLSAgbGludXhfZW52cFsyXSA9IChncnViX3Vp bnQ4X3QgKikgbGludXhfZW52cyAtIChncnViX3VpbnQ4X3QgKikgcGxheWdyb3VuZAotICAgICsg dGFyZ2V0X2FkZHI7Ci0gIGxpbnV4X2VudnMgKz0gQUxJR05fVVAgKGdydWJfc3RybGVuIChsaW51 eF9lbnZzKSArIDEsIDQpOwotICBncnViX3NucHJpbnRmIChsaW51eF9lbnZzLCBzaXplb2YgKCJj cHVjbG9jaz1YWFhYWFhYWFhYIiksCi0JCSAiY3B1Y2xvY2s9JWQiLCBncnViX2FyY2hfY3B1Y2xv Y2spOwotICBsaW51eF9lbnZwWzNdID0gKGdydWJfdWludDhfdCAqKSBsaW51eF9lbnZzIC0gKGdy dWJfdWludDhfdCAqKSBwbGF5Z3JvdW5kCi0gICAgKyB0YXJnZXRfYWRkcjsKLSAgbGludXhfZW52 cyArPSBBTElHTl9VUCAoZ3J1Yl9zdHJsZW4gKGxpbnV4X2VudnMpICsgMSwgNCk7Ci0KLSAgbGlu dXhfZW52cFs0XSA9IDA7CisgIGlmIChHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09OR18zWCAhPSBn cnViX2FyY2hfbWFjaGluZSkKKyAgICB7CisgICAgICBsaW51eF9lbnZwID0gZXh0cmE7CisgICAg ICBlbnZwX29mZiA9IChncnViX3VpbnQ4X3QgKikgbGludXhfZW52cCAtIChncnViX3VpbnQ4X3Qg KikgcGxheWdyb3VuZDsKKyAgICAgIGxpbnV4X2VudnMgPSAoY2hhciAqKSAobGludXhfZW52cCAr IDUpOworICAgICAgZ3J1Yl9zbnByaW50ZiAobGludXhfZW52cywgc2l6ZW9mICgibWVtc2l6ZT1Y WFhYWFhYWFhYWFhYWFhYWFhYWCIpLAorICAgIAkJICJtZW1zaXplPSVsbGQiLAorICAgIAkJICh1 bnNpZ25lZCBsb25nIGxvbmcpIGdydWJfbW1hcF9nZXRfbG93ZXIgKCkgPj4gMjApOworICAgICAg bGludXhfZW52cFswXSA9IChncnViX3VpbnQ4X3QgKikgbGludXhfZW52cyAtIChncnViX3VpbnQ4 X3QgKikgcGxheWdyb3VuZAorICAgICAgICArIHRhcmdldF9hZGRyOworICAgICAgbGludXhfZW52 cyArPSBBTElHTl9VUCAoZ3J1Yl9zdHJsZW4gKGxpbnV4X2VudnMpICsgMSwgNCk7CisgICAgICBn cnViX3NucHJpbnRmIChsaW51eF9lbnZzLCBzaXplb2YgKCJoaWdobWVtc2l6ZT1YWFhYWFhYWFhY WFhYWFhYWFhYWCIpLAorICAgIAkJICJoaWdobWVtc2l6ZT0lbGxkIiwKKyAgICAJCSAodW5zaWdu ZWQgbG9uZyBsb25nKSBncnViX21tYXBfZ2V0X3VwcGVyICgpID4+IDIwKTsKKyAgICAgIGxpbnV4 X2VudnBbMV0gPSAoZ3J1Yl91aW50OF90ICopIGxpbnV4X2VudnMgLSAoZ3J1Yl91aW50OF90ICop IHBsYXlncm91bmQKKyAgICAgICAgKyB0YXJnZXRfYWRkcjsKKyAgICAgIGxpbnV4X2VudnMgKz0g QUxJR05fVVAgKGdydWJfc3RybGVuIChsaW51eF9lbnZzKSArIDEsIDQpOworCisgICAgICBncnVi X3NucHJpbnRmIChsaW51eF9lbnZzLCBzaXplb2YgKCJidXNjbG9jaz1YWFhYWFhYWFhYIiksCisg ICAgCQkgImJ1c2Nsb2NrPSVkIiwgZ3J1Yl9hcmNoX2J1c2Nsb2NrKTsKKyAgICAgIGxpbnV4X2Vu dnBbMl0gPSAoZ3J1Yl91aW50OF90ICopIGxpbnV4X2VudnMgLSAoZ3J1Yl91aW50OF90ICopIHBs YXlncm91bmQKKyAgICAgICAgKyB0YXJnZXRfYWRkcjsKKyAgICAgIGxpbnV4X2VudnMgKz0gQUxJ R05fVVAgKGdydWJfc3RybGVuIChsaW51eF9lbnZzKSArIDEsIDQpOworICAgICAgZ3J1Yl9zbnBy aW50ZiAobGludXhfZW52cywgc2l6ZW9mICgiY3B1Y2xvY2s9WFhYWFhYWFhYWCIpLAorICAgIAkJ ICJjcHVjbG9jaz0lZCIsIGdydWJfYXJjaF9jcHVjbG9jayk7CisgICAgICBsaW51eF9lbnZwWzNd ID0gKGdydWJfdWludDhfdCAqKSBsaW51eF9lbnZzIC0gKGdydWJfdWludDhfdCAqKSBwbGF5Z3Jv dW5kCisgICAgICAgICsgdGFyZ2V0X2FkZHI7CisgICAgICBsaW51eF9lbnZzICs9IEFMSUdOX1VQ IChncnViX3N0cmxlbiAobGludXhfZW52cykgKyAxLCA0KTsKKworICAgICAgbGludXhfZW52cFs0 XSA9IDA7CisgICAgfQogI2VuZGlmCiAjZW5kaWYKKyAgY21kbGluZV9zaXplID0gc2l6ZTsKIAog ICBncnViX2xvYWRlcl9zZXQgKGdydWJfbGludXhfYm9vdCwgZ3J1Yl9saW51eF91bmxvYWQsIDEp OwogICBpbml0cmRfbG9hZGVkID0gMDsKQEAgLTQzMiwxMiArNDQ5LDEzIEBAIGdydWJfY21kX2lu aXRyZCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKICAgc2l6 ZSA9IGdydWJfZ2V0X2luaXRyZF9zaXplICgmaW5pdHJkX2N0eCk7CiAKICAgeworICAgIGdydWJf dWludDY0X3Qgc3RhcnRfYWRkcjsKICAgICBncnViX3JlbG9jYXRvcl9jaHVua190IGNoOwogCisg ICAgc3RhcnRfYWRkciA9IGdydWJfbW1hcF9nZXRfbG93ZXIgKCkgLSBjbWRsaW5lX3NpemUgLSBz aXplOwogICAgIGVyciA9IGdydWJfcmVsb2NhdG9yX2FsbG9jX2NodW5rX2FsaWduIChyZWxvY2F0 b3IsICZjaCwKLQkJCQkJICAgICh0YXJnZXRfYWRkciAmIDB4MWZmZmZmZmYpCi0JCQkJCSAgICAr IGxpbnV4X3NpemUgKyAweDEwMDAwLAotCQkJCQkgICAgKDB4MTAwMDAwMDAgLSBzaXplKSwKKwkJ CQkJICAgIHN0YXJ0X2FkZHIgLSAweGYwMDAwMCwKKwkJCQkJICAgIHN0YXJ0X2FkZHIgLSAweDgw MDAwMCwKIAkJCQkJICAgIHNpemUsIDB4MTAwMDAsCiAJCQkJCSAgICBHUlVCX1JFTE9DQVRPUl9Q UkVGRVJFTkNFX05PTkUsIDApOwogCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvdGVybS9zZXJpYWwu YyBiL2dydWItY29yZS90ZXJtL3NlcmlhbC5jCmluZGV4IGRiODBiM2IuLmZjYWVkYmIgMTAwNjQ0 Ci0tLSBhL2dydWItY29yZS90ZXJtL3NlcmlhbC5jCisrKyBiL2dydWItY29yZS90ZXJtL3Nlcmlh bC5jCkBAIC0zMTEsNyArMzExLDggQEAgY29uc3QgY2hhciBsb29uZ3Nvbl9kZWZzZXJpYWxbXVs2 XSA9CiAgIHsKICAgICBbR1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkddID0gImNvbTAiLAogICAg IFtHUlVCX0FSQ0hfTUFDSElORV9GVUxPT05HMkZdICA9ICJjb20yIiwKLSAgICBbR1JVQl9BUkNI X01BQ0hJTkVfRlVMT09ORzJFXSAgPSAiY29tMSIKKyAgICBbR1JVQl9BUkNIX01BQ0hJTkVfRlVM T09ORzJFXSAgPSAiY29tMSIsCisgICAgW0dSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNYXSA9 ICJjb20zIgogICB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9taXBzL2xv b25nc29uLmggYi9pbmNsdWRlL2dydWIvbWlwcy9sb29uZ3Nvbi5oCmluZGV4IGU2ZjAyNDEuLjc4 NGI1MTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29uLmgKKysrIGIvaW5j bHVkZS9ncnViL21pcHMvbG9vbmdzb24uaApAQCAtNzAsNiArNzAsMTIgQEAKICNkZWZpbmUgR1JV Ql9DUFVfTE9PTkdTT05fQ09QMF9DQUNIRV9UQUdMTyBHUlVCX0NQVV9SRUdJU1RFUl9XUkFQKCQy OCkKICNkZWZpbmUgR1JVQl9DUFVfTE9PTkdTT05fQ09QMF9DQUNIRV9UQUdISSBHUlVCX0NQVV9S RUdJU1RFUl9XUkFQKCQyOSkKIAorI2RlZmluZSBHUlVCX0NQVV9MT09OR1NPTl9QUklEX0xPT05H U09OMkUgMHg2MzAyCisjZGVmaW5lIEdSVUJfQ1BVX0xPT05HU09OX1BSSURfTE9PTkdTT04yRiAw eDYzMDMKKyNkZWZpbmUgR1JVQl9DUFVfTE9PTkdTT05fUFJJRF9MT09OR1NPTjNBIDB4NjMwNQor I2RlZmluZSBHUlVCX0NQVV9MT09OR1NPTl9QUklEX0xPT05HU09OM0JSMSAweDYzMDYKKyNkZWZp bmUgR1JVQl9DUFVfTE9PTkdTT05fUFJJRF9MT09OR1NPTjNCUjIgMHg2MzA3CisKICNkZWZpbmUg R1JVQl9DUFVfTE9PTkdTT05fTElPQ0ZHICAgMHhiZmUwMDEwOAogI2RlZmluZSBHUlVCX0NQVV9M T09OR1NPTl9ST01fREVMQVlfT0ZGU0VUIDIKICNkZWZpbmUgR1JVQl9DUFVfTE9PTkdTT05fUk9N X0RFTEFZX01BU0sgMHgxZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24v Ym9vdC5oIGIvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24vYm9vdC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MmEzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRl L2dydWIvbWlwcy9sb29uZ3Nvbi9ib290LmgKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiAgR1JV QiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcgorICogIENvcHlyaWdodCAoQykgMjAxNSAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKgorICogIEdSVUIgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorICoKKyAqICBHUlVCIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRo IEdSVUIuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8K KworI2lmbmRlZiBHUlVCX01BQ0hJTkVfQk9PVF9ICisjZGVmaW5lIEdSVUJfTUFDSElORV9CT09U X0gKKworI2luY2x1ZGUgPGdydWIvdHlwZXMuaD4KKworI2RlZmluZSBTWVNURU1fUkFNX0xPVwkJ MQorI2RlZmluZSBTWVNURU1fUkFNX0hJR0gJCTIKKyNkZWZpbmUgTUVNX1JFU0VSVkVJCQkzCisj ZGVmaW5lIFBDSV9JTwkJCTQKKyNkZWZpbmUgUENJX01FTQkJCTUKKyNkZWZpbmUgTE9PTkdTT05f Q0ZHX1JFRwk2CisjZGVmaW5lIFZJREVPX1JPTQkJNworI2RlZmluZSBBREFQVEVSX1JPTQkJOAor I2RlZmluZSBBQ1BJX1RBQkxFCQk5CisjZGVmaW5lIFNNQklPU19UQUJMRQkJMTAKKyNkZWZpbmUg TUFYX01FTU9SWV9UWVBFCQkxMQorCisjZGVmaW5lIE1BWF9VQVJUUwkJNjQKKworI2RlZmluZSBN QVhfU0VOU09SUwkJNjQKKyNkZWZpbmUgU0VOU09SX1RFTVBFUgkJMHgwMDAwMDAwMQorI2RlZmlu ZSBTRU5TT1JfVk9MVEFHRQkJMHgwMDAwMDAwMgorI2RlZmluZSBTRU5TT1JfRkFOCQkweDAwMDAw MDA0CisKKyNkZWZpbmUgQ09OU1RBTlRfU1BFRURfUE9MSUNZCTAJLyogYXQgY29uc3RlbnQgc3Bl ZWQgKi8KKyNkZWZpbmUgU1RFUF9TUEVFRF9QT0xJQ1kJMQkvKiB1c2UgdXAvZG93biBhcnJheXMg dG8gZGVzY3JpYmUgcG9saWN5ICovCisjZGVmaW5lIEtFUk5FTF9IRUxQRVJfUE9MSUNZCTIJLyog a2VybmVsIGFzIGEgaGVscGVyIHRvIGZhbiBjb250cm9sICovCisKKyNkZWZpbmUgTE9PTkdTT04z X0JPT1RfTUVNX01BUF9NQVgJMTI4CisjZGVmaW5lIE1BWF9SRVNPVVJDRV9OVU1CRVIJCTEyOAor CisjZGVmaW5lIFdPUktBUk9VTkRfQ1BVRlJFUQkweDAwMDAwMDAxCisjZGVmaW5lIFdPUktBUk9V TkRfQ1BVSE9UUExVRwkweDAwMDAwMDAyCisjZGVmaW5lIFdPUktBUk9VTkRfTFZEU19FQyAJMHgw MDAwMDAwNAorI2RlZmluZSBXT1JLQVJPVU5EX0xWRFNfR1BJTwkweDAwMDAwMDA4CisjZGVmaW5l IFdPUktBUk9VTkRfVVNCX1RNQ1MJMHgwMDAwMDAxMAorI2RlZmluZSBXT1JLQVJPVU5EX1BDSUVf RE1BIDB4MDAwMDAwMjAKKworZXh0ZXJuIGdydWJfdWludDY0X3QgbG9vbmdzb25fd29ya2Fyb3Vu ZHM7CisKK3N0cnVjdCBlZmlfbWVtb3J5X21hcF9sb29uZ3NvbnsKKwlncnViX3VpbnQxNl90IHZl cnM7CS8qIHZlcnNpb24gb2YgZWZpX21lbW9yeV9tYXAgKi8KKwlncnViX3VpbnQzMl90IG5yX21h cDsJLyogbnVtYmVyIG9mIG1lbW9yeV9tYXBzICovCisJZ3J1Yl91aW50MzJfdCBtZW1fZnJlcTsJ LyogbWVtb3J5IGZyZXF1ZW5jZSAqLworCXN0cnVjdCBtZW1fbWFweworCQlncnViX3VpbnQzMl90 IG5vZGVfaWQ7CS8qIG5vZGVfaWQgd2hpY2ggbWVtb3J5IGF0dGFjaGVkIHRvICovCisJCWdydWJf dWludDMyX3QgbWVtX3R5cGU7CS8qIHN5c3RlbSBtZW1vcnksIHBjaSBtZW1vcnksIHBjaSBpbywg ZXRjLiAqLworCQlncnViX3VpbnQ2NF90IG1lbV9zdGFydDsJLyogbWVtb3J5IG1hcCBzdGFydCBh ZGRyZXNzICovCisJCWdydWJfdWludDMyX3QgbWVtX3NpemU7CS8qIGVhY2ggbWVtb3J5X21hcCBz aXplLCBub3QgdGhlIHRvdGFsIHNpemUgKi8KKwl9bWFwW0xPT05HU09OM19CT09UX01FTV9NQVBf TUFYXTsKKyB9X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK2VudW0gbG9vbmdzb25fY3B1X3R5 cGUKK3sKKwlMb29uZ3Nvbl8yRiwKKwlMb29uZ3Nvbl8yRSwKKwlMb29uZ3Nvbl8zQSwKKwlMb29u Z3Nvbl8zQiwKKwlMb29uZ3Nvbl8xQSwKKwlMb29uZ3Nvbl8xQgorfTsKKworLyoKKyogQ2FwYWJp bGl0eSBhbmQgZmVhdHVyZSBkZXNjcmlwdG9yIHN0cnVjdHVyZSBmb3IgTUlQUyBDUFUKKyovCitz dHJ1Y3QgZWZpX2NwdWluZm9fbG9vbmdzb24geworCWdydWJfdWludDE2X3QgdmVyczsJLyogdmVy c2lvbiBvZiBlZmlfY3B1aW5mb19sb29uZ3NvbiAqLworCWdydWJfdWludDMyX3QgcHJvY2Vzc29y X2lkOwkvKiBQUklELCBlLmcuIDYzMDUsIDYzMDYgKi8KKwllbnVtIGxvb25nc29uX2NwdV90eXBl IGNwdXR5cGU7IAkvKiAzQSwgM0IgLGV0Yy4gKi8KKwlncnViX3VpbnQzMl90IHRvdGFsX25vZGU7 ICAgCS8qIG51bSBvZiB0b3RhbCBudW1hIG5vZGVzICovCisJZ3J1Yl91aW50MTZfdCBjcHVfc3Rh cnR1cF9jb3JlX2lkOwkvKiBDb3JlIGlkICovCisJZ3J1Yl91aW50MTZfdCByZXNlcnZlZF9jb3Jl c19tYXNrOwkvKiByZXNlcnZlZCBjb3JlcyBtYXNrICovCisJZ3J1Yl91aW50MzJfdCBjcHVfY2xv Y2tfZnJlcTsJLyogY3B1X2Nsb2NrICovCisJZ3J1Yl91aW50MzJfdCBucl9jcHVzOworfV9fYXR0 cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgdWFydF9kZXZpY2UgeworCWdydWJfdWludDMy X3QgaW90eXBlOyAvKiBzZWUgaW5jbHVkZS9saW51eC9zZXJpYWxfY29yZS5oICovCisJZ3J1Yl91 aW50MzJfdCB1YXJ0Y2xrOworCWdydWJfdWludDMyX3QgaW50X29mZnNldDsKKwlncnViX3VpbnQ2 NF90IHVhcnRfYmFzZTsKK31fX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IHNlbnNv cl9kZXZpY2UgeworCWNoYXIgbmFtZVszMl07ICAvKiBhIGZvcm1hbCBuYW1lICovCisJY2hhciBs YWJlbFs2NF07IC8qIGEgZmxleGlibGUgZGVzY3JpcHRpb24gKi8KKwlncnViX3VpbnQzMl90IHR5 cGU7ICAgICAgIC8qIFNFTlNPUl8qICovCisJZ3J1Yl91aW50MzJfdCBpZDsgICAgICAgICAvKiBp bnN0YW5jZSBpZCBvZiBhIHNlbnNvci1jbGFzcyAqLworCWdydWJfdWludDMyX3QgZmFuX3BvbGlj eTsgLyogc2VlIGFyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWxvb25nc29uL2xvb25nc29uX2h3 bW9uLmggKi8KKwlncnViX3VpbnQzMl90IGZhbl9wZXJjZW50Oy8qIG9ubHkgZm9yIGNvbnN0YW50 IHNwZWVkIHBvbGljeSAqLworCWdydWJfdWludDY0X3QgYmFzZV9hZGRyOyAgLyogYmFzZSBhZGRy ZXNzIG9mIGRldmljZSByZWdpc3RlcnMgKi8KK31fX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKwor CitzdHJ1Y3Qgc3lzdGVtX2xvb25nc29ueworCWdydWJfdWludDE2X3QgdmVyczsgICAgIC8qIHZl cnNpb24gb2Ygc3lzdGVtX2xvb25nc29uICovCisJZ3J1Yl91aW50MzJfdCBjY251bWFfc21wOyAv KiAwOiBubyBudW1hOyAxOiBoYXMgbnVtYSAqLworCWdydWJfdWludDMyX3Qgc2luZ19kb3VibGVf Y2hhbm5lbDsgLyogMTpzaW5nbGU7IDI6ZG91YmxlICovCisJZ3J1Yl91aW50MzJfdCBucl91YXJ0 czsKKwlzdHJ1Y3QgdWFydF9kZXZpY2UgdWFydHNbTUFYX1VBUlRTXTsKKwlncnViX3VpbnQzMl90 IG5yX3NlbnNvcnM7CisJc3RydWN0IHNlbnNvcl9kZXZpY2Ugc2Vuc29yc1tNQVhfU0VOU09SU107 CisJY2hhciBoYXNfZWM7CisJY2hhciBlY19uYW1lWzMyXTsKKwlncnViX3VpbnQ2NF90IGVjX2Jh c2VfYWRkcjsKKwljaGFyIGhhc190Y207CisJY2hhciB0Y21fbmFtZVszMl07CisJZ3J1Yl91aW50 NjRfdCB0Y21fYmFzZV9hZGRyOworCWdydWJfdWludDY0X3Qgd29ya2Fyb3VuZHM7IC8qIHNlZSB3 b3JrYXJvdW5kcy5oICovCit9X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCBpcnFf c291cmNlX3JvdXRpbmdfdGFibGUgeworCWdydWJfdWludDE2X3QgdmVyczsKKwlncnViX3VpbnQx Nl90IHNpemU7CisJZ3J1Yl91aW50MTZfdCBydHJfYnVzOworCWdydWJfdWludDE2X3QgcnRyX2Rl dmZuOworCWdydWJfdWludDMyX3QgdmVuZG9yOworCWdydWJfdWludDMyX3QgZGV2aWNlOworCWdy dWJfdWludDMyX3QgUElDX3R5cGU7ICAgLyogY29uZm9ybSB1c2UgSFQgb3IgUENJIHRvIHJvdXRl IHRvIENQVS1QSUMgKi8KKwlncnViX3VpbnQ2NF90IGh0X2ludF9iaXQ7IC8qIDNBOiAxPDwyNDsg M0I6IDE8PDE2ICovCisJZ3J1Yl91aW50NjRfdCBodF9lbmFibGU7ICAvKiBpcnFzIHVzZWQgaW4g dGhpcyBQSUMgKi8KKwlncnViX3VpbnQzMl90IG5vZGVfaWQ7ICAgIC8qIG5vZGUgaWQ6IDB4MC0w OyAweDEtMTsgMHgxMC0yOyAweDExLTMgKi8KKwlncnViX3VpbnQ2NF90IHBjaV9tZW1fc3RhcnRf YWRkcjsKKwlncnViX3VpbnQ2NF90IHBjaV9tZW1fZW5kX2FkZHI7CisJZ3J1Yl91aW50NjRfdCBw Y2lfaW9fc3RhcnRfYWRkcjsKKwlncnViX3VpbnQ2NF90IHBjaV9pb19lbmRfYWRkcjsKKwlncnVi X3VpbnQ2NF90IHBjaV9jb25maWdfYWRkcjsKKwlncnViX3VpbnQzMl90IGRtYV9tYXNrX2JpdHM7 Cit9X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCBpbnRlcmZhY2VfaW5mb3sKKwln cnViX3VpbnQxNl90IHZlcnM7IC8qIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljaXRpb24gKi8KKwln cnViX3VpbnQxNl90IHNpemU7CisJZ3J1Yl91aW50OF90ICBmbGFnOworCWNoYXIgZGVzY3JpcHRp b25bNjRdOworfV9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgcmVzb3VyY2VfbG9v bmdzb24geworCWdydWJfdWludDY0X3Qgc3RhcnQ7IC8qIHJlc291cmNlIHN0YXJ0IGFkZHJlc3Mg Ki8KKwlncnViX3VpbnQ2NF90IGVuZDsgICAvKiByZXNvdXJjZSBlbmQgYWRkcmVzcyAqLworCWNo YXIgbmFtZVs2NF07CisJZ3J1Yl91aW50MzJfdCBmbGFnczsKK307CisKK3N0cnVjdCBhcmNoZGV2 X2RhdGEge307CS8qIGFyY2ggc3BlY2lmaWMgYWRkaXRpb25zICovCisKK3N0cnVjdCBib2FyZF9k ZXZpY2VzeworCWNoYXIgbmFtZVs2NF07ICAgIC8qIGhvbGQgdGhlIGRldmljZSBuYW1lICovCisJ Z3J1Yl91aW50MzJfdCBudW1fcmVzb3VyY2VzOyAvKiBudW1iZXIgb2YgZGV2aWNlX3Jlc291cmNl ICovCisJc3RydWN0IHJlc291cmNlX2xvb25nc29uIHJlc291cmNlW01BWF9SRVNPVVJDRV9OVU1C RVJdOyAvKiBmb3IgZWFjaCBkZXZpY2UncyByZXNvdXJjZSAqLworCS8qIGFyY2ggc3BlY2lmaWMg YWRkaXRpb25zICovCisJc3RydWN0IGFyY2hkZXZfZGF0YSBhcmNoZGF0YTsKK307CisKK3N0cnVj dCBsb29uZ3Nvbl9zcGVjaWFsX2F0dHJpYnV0ZXsKKwlncnViX3VpbnQxNl90IHZlcnM7ICAgICAv KiB2ZXJzaW9uIG9mIHRoaXMgc3BlY2lhbCAqLworCWNoYXIgc3BlY2lhbF9uYW1lWzY0XTsgLyog c3BlY2lhbF9hdHJpYnV0ZV9uYW1lICovCisJZ3J1Yl91aW50MzJfdCBsb29uZ3Nvbl9zcGVjaWFs X3R5cGU7IC8qIHR5cGUgb2Ygc3BlY2lhbCBkZXZpY2UgKi8KKwlzdHJ1Y3QgcmVzb3VyY2VfbG9v bmdzb24gcmVzb3VyY2VbTUFYX1JFU09VUkNFX05VTUJFUl07IC8qIGZvciBlYWNoIGRldmljZSdz IHJlc291cmNlICovCit9OworCitzdHJ1Y3QgbG9vbmdzb25fcGFyYW1zeworCWdydWJfdWludDY0 X3QgbWVtb3J5X29mZnNldDsJLyogZWZpX21lbW9yeV9tYXBfbG9vbmdzb24gc3RydWN0IG9mZnNl dCAqLworCWdydWJfdWludDY0X3QgY3B1X29mZnNldDsJCS8qIGVmaV9jcHVpbmZvX2xvb25nc29u IHN0cnVjdCBvZmZzZXQgKi8KKwlncnViX3VpbnQ2NF90IHN5c3RlbV9vZmZzZXQ7ICAJLyogc3lz dGVtX2xvb25nc29uIHN0cnVjdCBvZmZzZXQgKi8KKwlncnViX3VpbnQ2NF90IGlycV9vZmZzZXQ7 ICAJLyogaXJxX3NvdXJjZV9yb3V0aW5nX3RhYmxlIHN0cnVjdCBvZmZzZXQgKi8KKwlncnViX3Vp bnQ2NF90IGludGVyZmFjZV9vZmZzZXQ7ICAJLyogaW50ZXJmYWNlX2luZm8gc3RydWN0IG9mZnNl dCAqLworCWdydWJfdWludDY0X3Qgc3BlY2lhbF9vZmZzZXQ7ICAJLyogbG9vbmdzb25fc3BlY2lh bF9hdHRyaWJ1dGUgc3RydWN0IG9mZnNldCAqLworCWdydWJfdWludDY0X3QgYm9hcmRkZXZfdGFi bGVfb2Zmc2V0OyAgLyogYm9hcmRfZGV2aWNlcyBvZmZzZXQgKi8KK307CisKK3N0cnVjdCBzbWJp b3NfdGFibGVzIHsKKwlncnViX3VpbnQxNl90IHZlcnM7ICAgICAvKiB2ZXJzaW9uIG9mIHNtYmlv cyAqLworCWdydWJfdWludDY0X3QgdmdhX2Jpb3M7IC8qIHZnYV9iaW9zIGFkZHJlc3MgKi8KKwlz dHJ1Y3QgbG9vbmdzb25fcGFyYW1zIGxwOworfTsKKworc3RydWN0IGVmaV9yZXNldF9zeXN0ZW1f dHsKKwlncnViX3VpbnQ2NF90IFJlc2V0Q29sZDsKKwlncnViX3VpbnQ2NF90IFJlc2V0V2FybTsK KwlncnViX3VpbnQ2NF90IFJlc2V0VHlwZTsKKwlncnViX3VpbnQ2NF90IFNodXRkb3duOworCWdy dWJfdWludDY0X3QgRG9TdXNwZW5kOyAvKiBOVUxMIGlmIG5vdCBzdXBwb3J0ICovCit9OworCitz dHJ1Y3QgZWZpX2xvb25nc29uIHsKKwlncnViX3VpbnQ2NF90IG1wczsJLyogTVBTIHRhYmxlICov CisJZ3J1Yl91aW50NjRfdCBhY3BpOwkvKiBBQ1BJIHRhYmxlIChJQTY0IGV4dCAwLjcxKSAqLwor CWdydWJfdWludDY0X3QgYWNwaTIwOwkvKiBBQ1BJIHRhYmxlIChBQ1BJIDIuMCkgKi8KKwlzdHJ1 Y3Qgc21iaW9zX3RhYmxlcyBzbWJpb3M7CS8qIFNNIEJJT1MgdGFibGUgKi8KKwlncnViX3VpbnQ2 NF90IHNhbF9zeXN0YWI7CS8qIFNBTCBzeXN0ZW0gdGFibGUgKi8KKwlncnViX3VpbnQ2NF90IGJv b3RfaW5mbzsJLyogYm9vdCBpbmZvIHRhYmxlICovCit9OworCitzdHJ1Y3QgYm9vdF9wYXJhbXN7 CisJc3RydWN0IGVmaV9sb29uZ3NvbiBlZmk7CisJc3RydWN0IGVmaV9yZXNldF9zeXN0ZW1fdCBy ZXNldF9zeXN0ZW07Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBlZmlfbWVtb3J5X21hcF9s b29uZ3NvbiAqCitncnViX21pcHNfbG9vbmdzb25fcGFyYW1zX2dldF9tZW1vcnkgKGdydWJfYWRk cl90IGxlZmkpCit7CisgICAgICAgIHN0cnVjdCBib290X3BhcmFtcyAqYnAgPSAoc3RydWN0IGJv b3RfcGFyYW1zICopIGxlZmk7CisgICAgICAgIHN0cnVjdCBsb29uZ3Nvbl9wYXJhbXMgKmxwID0g JmJwLT5lZmkuc21iaW9zLmxwOworCisgICAgICAgIHJldHVybiAodm9pZCAqKSAoKGxvbmcpIGxw ICsgKGxvbmcpIGxwLT5tZW1vcnlfb2Zmc2V0KTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3Qg ZWZpX2NwdWluZm9fbG9vbmdzb24gKgorZ3J1Yl9taXBzX2xvb25nc29uX3BhcmFtc19nZXRfY3B1 IChncnViX2FkZHJfdCBsZWZpKQoreworICAgICAgICBzdHJ1Y3QgYm9vdF9wYXJhbXMgKmJwID0g KHN0cnVjdCBib290X3BhcmFtcyAqKSBsZWZpOworICAgICAgICBzdHJ1Y3QgbG9vbmdzb25fcGFy YW1zICpscCA9ICZicC0+ZWZpLnNtYmlvcy5scDsKKworICAgICAgICByZXR1cm4gKHZvaWQgKikg KChsb25nKSBscCArIChsb25nKSBscC0+Y3B1X29mZnNldCk7Cit9CisKKyNlbmRpZiAvKiBHUlVC X01BQ0hJTkVfQk9PVF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvbWlwcy9sb29uZ3Nv bi9rZXJuZWwuaCBiL2luY2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29uL2tlcm5lbC5oCmluZGV4IDA1 ODcxOTEuLjI5YWQwMDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29uL2tl cm5lbC5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29uL2tlcm5lbC5oCkBAIC0yNSwx MSArMjUsMTIgQEAKICNkZWZpbmUgR1JVQl9BUkNIX01BQ0hJTkVfWUVFTE9PTkcgMAogI2RlZmlu ZSBHUlVCX0FSQ0hfTUFDSElORV9GVUxPT05HMkYgMQogI2RlZmluZSBHUlVCX0FSQ0hfTUFDSElO RV9GVUxPT05HMkUgMgotI2RlZmluZSBHUlVCX0FSQ0hfTUFDSElORV9ZRUVMT09OR18zQSAzCisj ZGVmaW5lIEdSVUJfQVJDSF9NQUNISU5FX1lFRUxPT05HXzNYIDMKIAogI2lmbmRlZiBBU01fRklM RQogCiBleHRlcm4gZ3J1Yl91aW50MzJfdCBFWFBPUlRfVkFSIChncnViX2FyY2hfbWFjaGluZSkg X19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24oIi50ZXh0IikpKTsKK2V4dGVybiBncnViX2FkZHJfdCBF WFBPUlRfVkFSIChncnViX2FyY2hfbGVmaSkgX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24oIi50ZXh0 IikpKTsKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29u L3BjaS5oIGIvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24vcGNpLmgKaW5kZXggYjMyNzJlOS4u NzE3NzczMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24vcGNpLmgKKysr IGIvaW5jbHVkZS9ncnViL21pcHMvbG9vbmdzb24vcGNpLmgKQEAgLTI4LDEwICsyOCwxMCBAQAog I2RlZmluZSBHUlVCX0xPT05HU09OX0VIQ0lfUENJSUQgMHgwMGUwMTAzMwogCiAjZGVmaW5lIEdS VUJfTUFDSElORV9QQ0lfSU9fQkFTRV8yRiAgICAgICAgMHhiZmQwMDAwMAotI2RlZmluZSBHUlVC X01BQ0hJTkVfUENJX0lPX0JBU0VfM0EgICAgICAgIDB4YjgwMDAwMDAKKyNkZWZpbmUgR1JVQl9N QUNISU5FX1BDSV9JT19CQVNFXzNYICAgICAgICAweGI4MDAwMDAwCiAjZGVmaW5lIEdSVUJfTUFD SElORV9QQ0lfQ09ORlNQQUNFXzJGICAgICAgMHhiZmU4MDAwMAotI2RlZmluZSBHUlVCX01BQ0hJ TkVfUENJX0NPTkZTUEFDRV8zQSAgICAgIDB4YmEwMDAwMDAKLSNkZWZpbmUgR1JVQl9NQUNISU5F X1BDSV9DT05GU1BBQ0VfM0FfRVhUICAweGJiMDAwMDAwCisjZGVmaW5lIEdSVUJfTUFDSElORV9Q Q0lfQ09ORlNQQUNFXzNYICAgICAgMHhiYTAwMDAwMAorI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJ X0NPTkZTUEFDRV8zWF9FWFQgIDB4YmIwMDAwMDAKICNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9D T05UUk9MTEVSX0hFQURFUiAweGJmZTAwMDAwCiAKICNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9D T05GX0NUUkxfUkVHX0FERFJfMkYgMHhiZmUwMDExOApAQCAtNDAsNyArNDAsNyBAQAogCiAjaWZu ZGVmIEFTTV9GSUxFCiAKLXR5cGVkZWYgZW51bSB7IEdSVUJfQk9OSVRPXzJGLCBHUlVCX0JPTklU T18zQSB9IGdydWJfYm9uaXRvX3R5cGVfdDsKK3R5cGVkZWYgZW51bSB7IEdSVUJfQk9OSVRPXzJG LCBHUlVCX0JPTklUT18zWCB9IGdydWJfYm9uaXRvX3R5cGVfdDsKIGV4dGVybiBncnViX2Jvbml0 b190eXBlX3QgRVhQT1JUX1ZBUiAoZ3J1Yl9ib25pdG9fdHlwZSk7CiAKICNkZWZpbmUgR1JVQl9Q Q0lfTlVNX0RFVklDRVMgICAgKGdydWJfYm9uaXRvX3R5cGUgPyAzMiBcCkBAIC00OCwxMyArNDgs MTMgQEAgZXh0ZXJuIGdydWJfYm9uaXRvX3R5cGVfdCBFWFBPUlRfVkFSIChncnViX2Jvbml0b190 eXBlKTsKICNkZWZpbmUgR1JVQl9QQ0lfTlVNX0JVUyAgICAgICAgKGdydWJfYm9uaXRvX3R5cGUg PyAyNTYgOiAxKQogCiAjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfSU9fQkFTRQkoZ3J1Yl9ib25p dG9fdHlwZSBcCi0JCQkJCSA/IEdSVUJfTUFDSElORV9QQ0lfSU9fQkFTRV8zQSBcCisJCQkJCSA/ IEdSVUJfTUFDSElORV9QQ0lfSU9fQkFTRV8zWCBcCiAJCQkJCSA6IEdSVUJfTUFDSElORV9QQ0lf SU9fQkFTRV8yRikKIAogI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX0NPTkZfQ1RSTF9SRUdfMkYg ICAgKCoodm9sYXRpbGUgZ3J1Yl91aW50MzJfdCAqKSBcCiAJCQkJCSAgIEdSVUJfTUFDSElORV9Q Q0lfQ09ORl9DVFJMX1JFR19BRERSXzJGKQogI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX0lPX0NU UkxfUkVHXzJGICAgICAgKCoodm9sYXRpbGUgZ3J1Yl91aW50MzJfdCAqKSAweGJmZTAwMTEwKQot I2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX0NPTkZfQ1RSTF9SRUdfM0EgICAgKCoodm9sYXRpbGUg Z3J1Yl91aW50MzJfdCAqKSBcCisjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfQ09ORl9DVFJMX1JF R18zWCAgICAoKih2b2xhdGlsZSBncnViX3VpbnQzMl90ICopIFwKIAkJCQkJICAgICAgMHhiZmUw MDExOCkKIAogI2VuZGlmCkBAIC03NSw2ICs3NSwxOCBAQCBleHRlcm4gZ3J1Yl9ib25pdG9fdHlw ZV90IEVYUE9SVF9WQVIgKGdydWJfYm9uaXRvX3R5cGUpOwogI2RlZmluZSBHUlVCX01BQ0hJTkVf UENJX1dJTjJfQUREUiAgICAgICAgMHhiNDAwMDAwMAogI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJ X1dJTjNfQUREUiAgICAgICAgMHhiODAwMDAwMAogCisjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lf TUVNX0JBU0UwXzNYICAgICAweDEwMDAwMDAwdQorI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX01F TV9BRERSMF8zWCAgICAgMHhiMDAwMDAwMHUKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9NRU1f U0laRTBfM1ggICAgIDB4ODAwMDAwMHUKKworI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX01FTV9C QVNFMV8zWCAgICAgMHgxYzAwMDAwMHUKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9NRU1fQURE UjFfM1ggICAgIDB4YmMwMDAwMDB1CisjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfTUVNX1NJWkUx XzNYICAgICAweDIwMDAwMDB1CisKKyNkZWZpbmUgR1JVQl9NQUNISU5FX1BDSV9NRU1fQkFTRTJf M1ggICAgIDB4NDAwMDAwMDB1CisjZGVmaW5lIEdSVUJfTUFDSElORV9QQ0lfTUVNX0FERFIyXzNY ICAgICAweGMwMDAwMDAwdQorI2RlZmluZSBHUlVCX01BQ0hJTkVfUENJX01FTV9TSVpFMl8zWCAg ICAgMHg0MDAwMDAwMHUKKwogI2lmbmRlZiBBU01fRklMRQogZ3J1Yl91aW50MzJfdAogRVhQT1JU X0ZVTkMgKGdydWJfcGNpX3JlYWQpIChncnViX3BjaV9hZGRyZXNzX3QgYWRkcik7CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2dydWIvbWlwcy9sb29uZ3Nvbi9zZXJpYWwuaCBiL2luY2x1ZGUvZ3J1Yi9t aXBzL2xvb25nc29uL3NlcmlhbC5oCmluZGV4IDQ1ZTZkODQuLjRlZTVlOWQgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZ3J1Yi9taXBzL2xvb25nc29uL3NlcmlhbC5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9t aXBzL2xvb25nc29uL3NlcmlhbC5oCkBAIC0yMSwxMiArMjEsMTQgQEAKIAogI2RlZmluZSBHUlVC X01BQ0hJTkVfU0VSSUFMX1BPUlQwX0RJVklTT1JfMTE1MjAwIDIKICNkZWZpbmUgR1JVQl9NQUNI SU5FX1NFUklBTF9QT1JUMl9ESVZJU09SXzExNTIwMCAxCisjZGVmaW5lIEdSVUJfTUFDSElORV9T RVJJQUxfUE9SVDNfRElWSVNPUl8xMTUyMDAgMQogI2RlZmluZSBHUlVCX01BQ0hJTkVfU0VSSUFM X1BPUlQwICAweGJmZjAwM2Y4CiAjZGVmaW5lIEdSVUJfTUFDSElORV9TRVJJQUxfUE9SVDEgIDB4 YmZkMDAzZjgKICNkZWZpbmUgR1JVQl9NQUNISU5FX1NFUklBTF9QT1JUMiAgMHhiZmQwMDJmOAor I2RlZmluZSBHUlVCX01BQ0hJTkVfU0VSSUFMX1BPUlQzICAweGJmZTAwMWUwCiAKICNpZm5kZWYg QVNNX0ZJTEUKLSNkZWZpbmUgR1JVQl9NQUNISU5FX1NFUklBTF9QT1JUUyB7IEdSVUJfTUFDSElO RV9TRVJJQUxfUE9SVDAsIEdSVUJfTUFDSElORV9TRVJJQUxfUE9SVDEsIEdSVUJfTUFDSElORV9T RVJJQUxfUE9SVDIgfQorI2RlZmluZSBHUlVCX01BQ0hJTkVfU0VSSUFMX1BPUlRTIHsgR1JVQl9N QUNISU5FX1NFUklBTF9QT1JUMCwgR1JVQl9NQUNISU5FX1NFUklBTF9QT1JUMSwgR1JVQl9NQUNI SU5FX1NFUklBTF9QT1JUMiwgR1JVQl9NQUNISU5FX1NFUklBTF9QT1JUMyB9CiAjZWxzZQogI2Vu ZGlmCiAKLS0gCjIuNC4zCgo= --047d7bae426c39bbc205185126c3--