From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E89A4A0545 for ; Thu, 23 Jun 2022 04:50:34 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C5AD34069D; Thu, 23 Jun 2022 04:50:34 +0200 (CEST) Received: from mail-ot1-f99.google.com (mail-ot1-f99.google.com [209.85.210.99]) by mails.dpdk.org (Postfix) with ESMTP id 9EBB24069C for ; Thu, 23 Jun 2022 04:50:33 +0200 (CEST) Received: by mail-ot1-f99.google.com with SMTP id s20-20020a056830439400b0060c3e43b548so14474913otv.7 for ; Wed, 22 Jun 2022 19:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=mime-version:subject:from:to:cc:message-id:date; bh=rSFfhVG4zbHlUDhsjuG7ld+1VrZnZkEIS31Nri1MAlk=; b=TdCpcMrJPRSf0QbSy+VTcCzi2Kz3s5Yl9sv/gAPtVVZHZaefaIxeiykgzkNi/SuSIt raS/KJ8mClbnV2+sEnIJkcoIKQOlUjOpiheU5FwtXawfsR6ITbyVh+bYbY83Sw+3vSQq uz3XXQiqyZQ6LxForkxg4qsncMNTYeDRuBrdU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:to:cc:message-id:date; bh=rSFfhVG4zbHlUDhsjuG7ld+1VrZnZkEIS31Nri1MAlk=; b=TcYYW/hgTg78HsWu4ovwhvjDwreeCIU+8YM1+BfScc9UwqjYVMEI7ccW4uIWUzViuA pqZIfqd2NLLXIB64pQk0fMlKr7ymcMNkH4Y2FFc10AqW7mlMH8Mw+twmLIRyckZ6h0Pv YL71lwpc8ALXpNguNx6RMzZMWm6r/y/bDLsH7eT6ry4/H0EHEn2mZVxuZu36f6yYfRl9 gSjBiI7EbpuFgXdg7N83zyP37UxWdkqujWkxOlOAyptrA2+kVqvOSb4liXCusqnIfFAx JidcMZ+xo/926Ma89sjSjjFMsPnbqLBWHj7WX9C7nMSgW85vKFZYWSR7VUmAdzeUZNZd wE8g== X-Gm-Message-State: AJIora9k2uV72rhvT/+x9xwKMs7dEh8a/XPrBUCr3otVaNzElTrjQOUD wCcIXmuSVJQrXCM1Ho71pg71Yf4CzA5qucjlFovHu5l9lNvGH8ahm775GakFUMiu7Q== X-Google-Smtp-Source: AGRyM1se1tLbiSo9K3R9AIJn43WNXvdj/j1ZVgRGL6VFwKPWqTPQWdL8AY4GcHFlpqos7ciPVt7LrdS6ATSn X-Received: by 2002:a05:6830:115:b0:60c:614f:7122 with SMTP id i21-20020a056830011500b0060c614f7122mr2876553otp.132.1655952632792; Wed, 22 Jun 2022 19:50:32 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [2606:4100:3880:1234::84]) by smtp-relay.gmail.com with ESMTPS id x22-20020a9d6d96000000b00606aab2aef9sm1714789otp.2.2022.06.22.19.50.32 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Jun 2022 19:50:32 -0700 (PDT) X-Relaying-Domain: iol.unh.edu Received: from noxus.dpdklab.iol.unh.edu (unknown [IPv6:2606:4100:3880:1722::4]) by postal.iol.unh.edu (Postfix) with ESMTP id E0DAB605247D; Wed, 22 Jun 2022 22:50:31 -0400 (EDT) Received: from noxus.dpdklab.iol.unh.edu (localhost [IPv6:::1]) by noxus.dpdklab.iol.unh.edu (Postfix) with ESMTP id ECFC54AC; Wed, 22 Jun 2022 22:50:31 -0400 (EDT) Content-Type: multipart/mixed; boundary="===============3027382795917371175==" MIME-Version: 1.0 Subject: |WARNING| pw113282-113294 [PATCH] [v4, 13/13] net/nfp: modify RSS logic From: dpdklab@iol.unh.edu To: test-report@dpdk.org Cc: dpdk-test-reports@iol.unh.edu Message-Id: <20220623025031.ECFC54AC@noxus.dpdklab.iol.unh.edu> Date: Wed, 22 Jun 2022 22:50:31 -0400 (EDT) X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org --===============3027382795917371175== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogaW9sLXRlc3RpbmcKVGVzdC1TdGF0dXM6IFdBUk5JTkcKaHR0cDovL2RwZGsu b3JnL3BhdGNoLzExMzI4MgoKX2FwcGx5IHBhdGNoIGZhaWx1cmVfCgpTdWJtaXR0ZXI6IEppbiBM aXUgPGppbi5saXVAY29yaWdpbmUuY29tPgpEYXRlOiBUaHVyc2RheSwgSnVuZSAyMyAyMDIyIDAy OjI2OjE1IApBcHBsaWVkIG9uOiBDb21taXRJRDo2OTAzM2UzYjg0M2M4MWM3NGJjZGQ1ZTY3OGM4 OTZjMWZlMTUzNWVmCkFwcGx5IHBhdGNoIHNldCAxMTMyODItMTEzMjk0IGZhaWxlZDoKCkNoZWNr aW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CgoJLyogdW5yZWdpc3RlciBjYWxsYmFjayBmdW5jIGZyb20gZWFsIGxpYiAq LwoJcnRlX2ludHJfY2FsbGJhY2tfdW5yZWdpc3RlcihwY2lfZGV2LT5pbnRyX2hhbmRsZSwKCQkJ CSAgICAgbmZwX25ldF9kZXZfaW50ZXJydXB0X2hhbmRsZXIsCgkJCQkgICAgICh2b2lkICopZGV2 KTsKCgkvKgoJICogVGhlIGl4Z2JlIFBNRCBkaXNhYmxlcyB0aGUgcGNpZSBtYXN0ZXIgb24gdGhl CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjM0MApl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXY7Cglz dHJ1Y3QgbmZwX25ldF9odyAqaHc7CglzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKnRtcF9ldGhlcl9h ZGRyOwoKCXVpbnQ2NF90IHR4X2Jhcl9vZmYgPSAwLCByeF9iYXJfb2ZmID0gMDsKCXVpbnQzMl90 IHN0YXJ0X3E7CglpbnQgc3RyaWRlID0gNDsKCWludCBwb3J0ID0gMDsKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6Mzg4CmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoKCS8qIE5GUCBjYW4gbm90IGhhbmRsZSBETUEgYWRkcmVzc2VzIHJlcXVpcmlu ZyBtb3JlIHRoYW4gNDAgYml0cyAqLwoJaWYgKHJ0ZV9tZW1fY2hlY2tfZG1hX21hc2soNDApKSB7 CgkJUlRFX0xPRyhFUlIsIFBNRCwgImRldmljZSAlcyBjYW4gbm90IGJlIHVzZWQ6IiwKCQkJCSAg IHBjaV9kZXYtPmRldmljZS5uYW1lKTsKCQlSVEVfTE9HKEVSUiwgUE1ELCAiXHRyZXN0cmljdGVk IGRtYSBtYXNrIHRvIDQwIGJpdHMhXG4iKTsKCQlyZXR1cm4gLUVOT0RFVjsKCX07CgoJcG9ydCA9 ICgoc3RydWN0IG5mcF9uZXRfaHcgKilldGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSktPmlkeDsK CWlmIChwb3J0IDwgMCB8fCBwb3J0ID4gNykgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvbmZwL25mcF9ldGhkZXYuYzo0MDQKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJ cmV0dXJuIC1FTk9ERVY7Cgl9CgoJLyogVXNlIFBGIGFycmF5IG9mIHBoeXNpY2FsIHBvcnRzIHRv IGdldCBwb2ludGVyIHRvCgkgKiB0aGlzIHNwZWNpZmljIHBvcnQKCSAqLwoJaHcgPSBwZl9kZXYt PnBvcnRzW3BvcnRdOwoKCVBNRF9JTklUX0xPRyhERUJVRywgIldvcmtpbmcgd2l0aCBwaHlzaWNh bCBwb3J0IG51bWJlcjogJWQsICIKCQkJICAgICJORlAgaW50ZXJuYWwgcG9ydCBudW1iZXI6ICVk IiwKCQkJICAgIHBvcnQsIGh3LT5uZnBfaWR4KTsKCglldGhfZGV2LT5kZXZfb3BzID0gJm5mcF9u ZXRfZXRoX2Rldl9vcHM7CglldGhfZGV2LT5yeF9xdWV1ZV9jb3VudCA9IG5mcF9uZXRfcnhfcXVl dWVfY291bnQ7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRl di5jOjQxNgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCWlmIChwb3J0ID09IDApIHsKCQlo dy0+Y3RybF9iYXIgPSBwZl9kZXYtPmN0cmxfYmFyOwoJfSBlbHNlIHsKCQlpZiAoIXBmX2Rldi0+ Y3RybF9iYXIpCgkJCXJldHVybiAtRU5PREVWOwoJCS8qIFVzZSBwb3J0IG9mZnNldCBpbiBwZiBj dHJsX2JhciBmb3IgdGhpcwoJCSAqIHBvcnRzIGNvbnRyb2wgYmFyCgkJICovCgkJaHctPmN0cmxf YmFyID0gcGZfZGV2LT5jdHJsX2JhciArCgkJCSAgICAgICAocG9ydCAqIE5GUF9QRl9DU1JfU0xJ Q0VfU0laRSk7Cgl9CgoJUE1EX0lOSVRfTE9HKERFQlVHLCAiY3RybCBiYXI6ICVwIiwgaHctPmN0 cmxfYmFyKTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2 LmM6NDU2CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCXRtcF9ldGhlcl9hZGRyID0gKHN0 cnVjdCBydGVfZXRoZXJfYWRkciAqKSZody0+bWFjX2FkZHI7CglpZiAoIXJ0ZV9pc192YWxpZF9h c3NpZ25lZF9ldGhlcl9hZGRyKHRtcF9ldGhlcl9hZGRyKSkgewoJCVBNRF9JTklUX0xPRyhJTkZP LCAiVXNpbmcgcmFuZG9tIG1hYyBhZGRyZXNzIGZvciBwb3J0ICVkIiwKCQkJCSAgIHBvcnQpOwoJ CS8qIFVzaW5nIHJhbmRvbSBtYWMgYWRkcmVzc2VzIGZvciBWRnMgKi8KCQlydGVfZXRoX3JhbmRv bV9hZGRyKCZody0+bWFjX2FkZHJbMF0pOwoJCW5mcF9uZXRfd3JpdGVfbWFjKGh3LCAodWludDhf dCAqKSZody0+bWFjX2FkZHIpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZw L25mcF9ldGhkZXYuYzo1NTcKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglpZiAocnRlX2Vh bF9wcm9jZXNzX3R5cGUoKSA9PSBSVEVfUFJPQ19QUklNQVJZKSB7CgkJLyogUmVnaXN0ZXJpbmcg TFNDIGludGVycnVwdCBoYW5kbGVyICovCgkJcnRlX2ludHJfY2FsbGJhY2tfcmVnaXN0ZXIocGNp X2Rldi0+aW50cl9oYW5kbGUsCgkJCQkJICAgbmZwX25ldF9kZXZfaW50ZXJydXB0X2hhbmRsZXIs CgkJCQkJICAgKHZvaWQgKilldGhfZGV2KTsKCQkvKiBUZWxsaW5nIHRoZSBmaXJtd2FyZSBhYm91 dCB0aGUgTFNDIGludGVycnVwdCBlbnRyeSAqLwoJCW5uX2NmZ193cml0ZWIoaHcsIE5GUF9ORVRf Q0ZHX0xTQywgTkZQX05FVF9JUlFfTFNDX0lEWCk7CgkJLyogUmVjb3JkaW5nIGN1cnJlbnQgc3Rh dHMgY291bnRlcnMgdmFsdWVzICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9u ZnAvbmZwX2V0aGRldi5jOjU4MwplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfQoKc3RhdGlj IGludApuZnBfZndfc2V0dXAoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpkZXYsIHN0cnVjdCBuZnBf Y3BwICpjcHAsCgkgICAgIHN0cnVjdCBuZnBfZXRoX3RhYmxlICpuZnBfZXRoX3RhYmxlLCBzdHJ1 Y3QgbmZwX2h3aW5mbyAqaHdpbmZvKQp7CglzdHJ1Y3QgbmZwX25zcCAqbnNwOwoJY29uc3QgY2hh ciAqbmZwX2Z3X21vZGVsOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25m cF9ldGhkZXYuYzo2NTYKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJaWYgKG5mcF9ldGhf dGFibGUtPmNvdW50ID09IDAgfHwgbmZwX2V0aF90YWJsZS0+Y291bnQgPiA4KSB7CgkJUE1EX0RS Vl9MT0coRVJSLCAiTkZQIGV0aGVybmV0IHRhYmxlIHJlcG9ydHMgd3JvbmcgcG9ydHM6ICV1IiwK CQkgICAgICAgbmZwX2V0aF90YWJsZS0+Y291bnQpOwoJCXJldHVybiAtRUlPOwoJfQoKCVBNRF9E UlZfTE9HKElORk8sICJORlAgZXRoZXJuZXQgcG9ydCB0YWJsZSByZXBvcnRzICV1IHBvcnRzIiwK CQkJICAgbmZwX2V0aF90YWJsZS0+Y291bnQpOwoKCVBNRF9EUlZfTE9HKElORk8sICJQb3J0IHNw ZWVkOiAldSIsIG5mcF9ldGhfdGFibGUtPnBvcnRzWzBdLnNwZWVkKTsKCgplcnJvcjogcGF0Y2gg ZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjY3NQplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKCQkJbmZwX2V0aF90YWJsZS0+cG9ydHNbMF0uc3BlZWQgLyAxMDAwKTsKCglu c3AgPSBuZnBfbnNwX29wZW4oY3BwKTsKCWlmICghbnNwKSB7CgkJUE1EX0RSVl9MT0coRVJSLCAi TkZQIGVycm9yIHdoZW4gb2J0YWluaW5nIE5TUCBoYW5kbGUiKTsKCQlyZXR1cm4gLUVJTzsKCX0K CmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6Njg5CmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIGVycjsKfQoKc3RhdGljIGludCBuZnBf aW5pdF9waHlwb3J0cyhzdHJ1Y3QgbmZwX3BmX2RldiAqcGZfZGV2KQp7CglzdHJ1Y3QgbmZwX25l dF9odyAqaHc7CglzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXY7CglzdHJ1Y3QgbmZwX2V0aF90 YWJsZSAqbmZwX2V0aF90YWJsZSA9IE5VTEw7CglpbnQgcmV0ID0gMDsKCWludCBpOwoKCW5mcF9l dGhfdGFibGUgPSBuZnBfZXRoX3JlYWRfcG9ydHMocGZfZGV2LT5jcHApOwoJaWYgKCFuZnBfZXRo X3RhYmxlKSB7CgkJUE1EX0lOSVRfTE9HKEVSUiwgIkVycm9yIHJlYWRpbmcgTkZQIGV0aGVybmV0 IHRhYmxlIik7CgkJcmV0ID0gLUVJTzsKCQlnb3RvIGVycm9yOwoJfQoKCS8qIExvb3AgdGhyb3Vn aCBhbGwgcGh5c2ljYWwgcG9ydHMgb24gUEYgKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6NzAxCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoK CQkvKiBBbGxvY2F0ZSBhIGV0aF9kZXYgZm9yIHRoaXMgcGh5cG9ydCAqLwoJCWV0aF9kZXYgPSBy dGVfZXRoX2Rldl9hbGxvY2F0ZShwb3J0X25hbWUpOwoJCWlmICghZXRoX2RldikgewoJCQlyZXQg PSAtRU5PREVWOwoJCQlnb3RvIHBvcnRfY2xlYW51cDsKCQl9CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjcyNgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKCQkvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoaXMgcGh5cG9ydCAqLwoJCWV0aF9kZXYt PmRhdGEtPmRldl9wcml2YXRlID0KCQkJcnRlX3ptYWxsb2Nfc29ja2V0KHBvcnRfbmFtZSwgc2l6 ZW9mKHN0cnVjdCBuZnBfbmV0X2h3KSwKCQkJCQkgICBSVEVfQ0FDSEVfTElORV9TSVpFLCBudW1h X25vZGUpOwoJCWlmICghZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpIHsKCQkJcmV0ID0gLUVO T01FTTsKCQkJcnRlX2V0aF9kZXZfcmVsZWFzZV9wb3J0KGV0aF9kZXYpOwoJCQlnb3RvIHBvcnRf Y2xlYW51cDsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2 LmM6NzM0CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCSAqIG5mcF9uZXRfaW5pdAoJCSAq LwoJCXJldCA9IG5mcF9uZXRfaW5pdChldGhfZGV2KTsKCgkJaWYgKHJldCkgewoJCQlyZXQgPSAt RU5PREVWOwoJCQlnb3RvIHBvcnRfY2xlYW51cDsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6NzU5CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJ fQpldGhfdGFibGVfY2xlYW51cDoKCWZyZWUobmZwX2V0aF90YWJsZSk7CmVycm9yOgoJcmV0dXJu IHJldDsKfQoKc3RhdGljIGludCBuZnBfcGZfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBj aV9kZXYpCnsKCXN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXYgPSBOVUxMOwoJc3RydWN0IG5mcF9j cHAgKmNwcDsKCXN0cnVjdCBuZnBfaHdpbmZvICpod2luZm87CglzdHJ1Y3QgbmZwX3J0c3ltX3Rh YmxlICpzeW1fdGJsOwoJc3RydWN0IG5mcF9ldGhfdGFibGUgKm5mcF9ldGhfdGFibGUgPSBOVUxM OwoJY2hhciBuYW1lW1JURV9FVEhfTkFNRV9NQVhfTEVOXTsKCWludCB0b3RhbF9wb3J0czsKCWlu dCByZXQgPSAtRU5PREVWOwoJaW50IGVycjsKCglpZiAoIXBjaV9kZXYpCgkJcmV0dXJuIHJldDsK CgkvKgoJICogV2hlbiBkZXZpY2UgYm91bmQgdG8gVUlPLCB0aGUgZGV2aWNlIGNvdWxkIGJlIHVz ZWQsIGJ5IG1pc3Rha2UsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZw X2V0aGRldi5jOjc4MgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCWVsc2UKCQljcHAgPSBu ZnBfY3BwX2Zyb21fZGV2aWNlX25hbWUocGNpX2RldiwgMSk7CgoJaWYgKCFjcHApIHsKCQlQTURf SU5JVF9MT0coRVJSLCAiQSBDUFAgaGFuZGxlIGNhbiBub3QgYmUgb2J0YWluZWQiKTsKCQlyZXQg PSAtRUlPOwoJCWdvdG8gZXJyb3I7Cgl9CgoJaHdpbmZvID0gbmZwX2h3aW5mb19yZWFkKGNwcCk7 CglpZiAoIWh3aW5mbykgewoJCVBNRF9JTklUX0xPRyhFUlIsICJFcnJvciByZWFkaW5nIGh3aW5m byB0YWJsZSIpOwoJCXJldCA9IC1FSU87CgkJZ290byBlcnJvcjsKCX0KCgluZnBfZXRoX3RhYmxl ID0gbmZwX2V0aF9yZWFkX3BvcnRzKGNwcCk7CglpZiAoIW5mcF9ldGhfdGFibGUpIHsKCQlQTURf SU5JVF9MT0coRVJSLCAiRXJyb3IgcmVhZGluZyBORlAgZXRoZXJuZXQgdGFibGUiKTsKCQlyZXQg PSAtRUlPOwoJCWdvdG8gaHdpbmZvX2NsZWFudXA7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjgxMwplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CgkvKiBOb3cgdGhlIHN5bWJvbCB0YWJsZSBzaG91bGQgYmUgdGhlcmUgKi8KCXN5bV90YmwgPSBu ZnBfcnRzeW1fdGFibGVfcmVhZChjcHApOwoJaWYgKCFzeW1fdGJsKSB7CgkJUE1EX0lOSVRfTE9H KEVSUiwgIlNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBmaXJtd2FyZSIKCQkJCSIgc3ltYm9s IHRhYmxlIik7CgkJcmV0ID0gLUVJTzsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L25mcC9uZnBfZXRoZGV2LmM6ODQxCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJLyogQWxs b2NhdGUgbWVtb3J5IGZvciB0aGUgUEYgImRldmljZSIgKi8KCXNucHJpbnRmKG5hbWUsIHNpemVv ZihuYW1lKSwgIm5mcF9wZiVkIiwgMCk7CglwZl9kZXYgPSBydGVfem1hbGxvYyhuYW1lLCBzaXpl b2YoKnBmX2RldiksIDApOwoJaWYgKCFwZl9kZXYpIHsKCQlyZXQgPSAtRU5PTUVNOwoJCWdvdG8g c3ltX3RibF9jbGVhbnVwOwoJfQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZw L25mcF9ldGhkZXYuYzo4NjUKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJLyogTWFwIHRo ZSBzeW1ib2wgdGFibGUgKi8KCXBmX2Rldi0+Y3RybF9iYXIgPSBuZnBfcnRzeW1fbWFwKHBmX2Rl di0+c3ltX3RibCwgIl9wZjBfbmV0X2JhcjAiLAoJCQkJICAgICBwZl9kZXYtPnRvdGFsX3BoeXBv cnRzICogMzI3NjgsCgkJCQkgICAgICZwZl9kZXYtPmN0cmxfYXJlYSk7CglpZiAoIXBmX2Rldi0+ Y3RybF9iYXIpIHsKCQlQTURfSU5JVF9MT0coRVJSLCAibmZwX3J0c3ltX21hcCBmYWlscyBmb3Ig X3BmMF9uZXRfY3RybF9iYXIiKTsKCQlyZXQgPSAtRUlPOwoJCWdvdG8gcGZfY2xlYW51cDsKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6ODgzCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCS8qIGNvbmZpZ3VyZSBhY2Nlc3MgdG8gdHgvcnggdk5J QyBCQVJzICovCglwZl9kZXYtPmh3X3F1ZXVlcyA9IG5mcF9jcHBfbWFwX2FyZWEocGZfZGV2LT5j cHAsIDAsIDAsCgkJCQkJICAgICAgTkZQX1BDSUVfUVVFVUUoMCksCgkJCQkJICAgICAgTkZQX1FD UF9RVUVVRV9BUkVBX1NaLAoJCQkJCSAgICAgICZwZl9kZXYtPmh3cXVldWVzX2FyZWEpOwoJaWYg KCFwZl9kZXYtPmh3X3F1ZXVlcykgewoJCVBNRF9JTklUX0xPRyhFUlIsICJuZnBfcnRzeW1fbWFw IGZhaWxzIGZvciBuZXQucWMiKTsKCQlyZXQgPSAtRUlPOwoJCWdvdG8gY3RybF9hcmVhX2NsZWFu dXA7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjg5 NQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglQTURfSU5JVF9MT0coREVCVUcsICJ0eC9y eCBiYXIgYWRkcmVzczogMHglcCIsIHBmX2Rldi0+aHdfcXVldWVzKTsKCgkvKiBJbml0aWFsaXpl IGFuZCBwcmVwIHBoeXNpY2FsIHBvcnRzIG5vdwoJICogVGhpcyB3aWxsIGxvb3AgdGhyb3VnaCBh bGwgcGh5c2ljYWwgcG9ydHMKCSAqLwoJcmV0ID0gbmZwX2luaXRfcGh5cG9ydHMocGZfZGV2KTsK CmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6OTA2CmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiBpcyBubyBuZWVkIHRvIGluaXRpYWxpc2UgdGhl IFBGIGFnYWluLiBPbmx5IG1pbmltYWwgd29yayBpcyByZXF1aXJlZAogKiBoZXJlCiAqLwpzdGF0 aWMgaW50IG5mcF9wZl9zZWNvbmRhcnlfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9k ZXYpCnsKCXN0cnVjdCBuZnBfY3BwICpjcHA7CglzdHJ1Y3QgbmZwX3J0c3ltX3RhYmxlICpzeW1f dGJsOwoJaW50IHRvdGFsX3BvcnRzOwoJaW50IGk7CglpbnQgZXJyOwoKCWlmICghcGNpX2RldikK CQlyZXR1cm4gLUVOT0RFVjsKCgkvKgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv bmZwL25mcF9ldGhkZXYuYzo5NDEKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgllbHNlCgkJ Y3BwID0gbmZwX2NwcF9mcm9tX2RldmljZV9uYW1lKHBjaV9kZXYsIDEpOwoKCWlmICghY3BwKSB7 CgkJUE1EX0lOSVRfTE9HKEVSUiwgIkEgQ1BQIGhhbmRsZSBjYW4gbm90IGJlIG9idGFpbmVkIik7 CgkJcmV0dXJuIC1FSU87Cgl9CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAv bmZwX2V0aGRldi5jOjk2NAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCSAqIGhlcmUgc28g d2UgaGF2ZSB0byByZWFkIHRoZSBudW1iZXIgb2YgcG9ydHMgZnJvbSBmaXJtd2FyZQoJICovCglz eW1fdGJsID0gbmZwX3J0c3ltX3RhYmxlX3JlYWQoY3BwKTsKCWlmICghc3ltX3RibCkgewoJCVBN RF9JTklUX0xPRyhFUlIsICJTb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgZmlybXdhcmUiCgkJ CQkiIHN5bWJvbCB0YWJsZSIpOwoJCXJldHVybiAtRUlPOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYzo5NzQKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CgkJc25wcmludGYocG9ydF9uYW1lLCBzaXplb2YocG9ydF9uYW1lKSwgIiVzX3BvcnQlZCIs CgkJCSBwY2lfZGV2LT5kZXZpY2UubmFtZSwgaSk7CgoJCVBNRF9EUlZfTE9HKERFQlVHLCAiU2Vj b25kYXJ5IGF0dGFjaGluZyB0byBwb3J0ICVzIiwKCQkgICAgcG9ydF9uYW1lKTsKCQlldGhfZGV2 ID0gcnRlX2V0aF9kZXZfYXR0YWNoX3NlY29uZGFyeShwb3J0X25hbWUpOwoJCWlmICghZXRoX2Rl dikgewoJCQlSVEVfTE9HKEVSUiwgRUFMLAoJCQkic2Vjb25kYXJ5IHByb2Nlc3MgYXR0YWNoIGZh aWxlZCwgIgoJCQkiZXRoZGV2IGRvZXNuJ3QgZXhpc3QiKTsKCQkJcmV0dXJuIC1FTk9ERVY7CgkJ fQoJCWV0aF9kZXYtPnByb2Nlc3NfcHJpdmF0ZSA9IGNwcDsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6OTg5CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQgbmZwX3BmX3BjaV9wcm9iZShzdHJ1Y3QgcnRl X3BjaV9kcml2ZXIgKnBjaV9kcnYgX19ydGVfdW51c2VkLAoJCQkgICAgc3RydWN0IHJ0ZV9wY2lf ZGV2aWNlICpkZXYpCnsKCWlmIChydGVfZWFsX3Byb2Nlc3NfdHlwZSgpID09IFJURV9QUk9DX1BS SU1BUlkpCgkJcmV0dXJuIG5mcF9wZl9pbml0KGRldik7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBk cml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjEwMTIKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6Cgl9LAp9OwoKc3RhdGljIGludCBuZnBfcGNpX3VuaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmV0aF9kZXYpCnsKCXN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2RldjsKCXVpbnQxNl90IHBv cnRfaWQ7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5j OjEwMzUKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gLUVOT1RTVVA7Cn0KCnN0 YXRpYyBpbnQgZXRoX25mcF9wY2lfcmVtb3ZlKHN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2Rl dikKewoJcmV0dXJuIHJ0ZV9ldGhfZGV2X3BjaV9nZW5lcmljX3JlbW92ZShwY2lfZGV2LCBuZnBf cGNpX3VuaW5pdCk7Cn0KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBf ZXRoZGV2LmM6MTA1MgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92 Zi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCS8qIE5GUCBjYW4gbm90IGhhbmRs ZSBETUEgYWRkcmVzc2VzIHJlcXVpcmluZyBtb3JlIHRoYW4gNDAgYml0cyAqLwoJaWYgKHJ0ZV9t ZW1fY2hlY2tfZG1hX21hc2soNDApKSB7CgkJUlRFX0xPRyhFUlIsIFBNRCwgImRldmljZSAlcyBj YW4gbm90IGJlIHVzZWQ6IiwKCQkJCSAgIHBjaV9kZXYtPmRldmljZS5uYW1lKTsKCQlSVEVfTE9H KEVSUiwgUE1ELCAiXHRyZXN0cmljdGVkIGRtYSBtYXNrIHRvIDQwIGJpdHMhXG4iKTsKCQlyZXR1 cm4gLUVOT0RFVjsKCX07CgoJaHcgPSBORlBfTkVUX0RFVl9QUklWQVRFX1RPX0hXKGV0aF9kZXYt PmRhdGEtPmRldl9wcml2YXRlKTsKCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9u ZnAvbmZwX2V0aGRldl92Zi5jOjI5NgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZw X2V0aGRldi5jIHdpdGggMjggcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBo dW5rICMyLgpSZWplY3RlZCBodW5rICMzLgpSZWplY3RlZCBodW5rICM0LgpSZWplY3RlZCBodW5r ICM1LgpSZWplY3RlZCBodW5rICM2LgpSZWplY3RlZCBodW5rICM3LgpSZWplY3RlZCBodW5rICM4 LgpSZWplY3RlZCBodW5rICM5LgpSZWplY3RlZCBodW5rICMxMC4KUmVqZWN0ZWQgaHVuayAjMTEu ClJlamVjdGVkIGh1bmsgIzEyLgpSZWplY3RlZCBodW5rICMxMy4KUmVqZWN0ZWQgaHVuayAjMTQu ClJlamVjdGVkIGh1bmsgIzE1LgpSZWplY3RlZCBodW5rICMxNi4KUmVqZWN0ZWQgaHVuayAjMTcu ClJlamVjdGVkIGh1bmsgIzE4LgpSZWplY3RlZCBodW5rICMxOS4KUmVqZWN0ZWQgaHVuayAjMjAu ClJlamVjdGVkIGh1bmsgIzIxLgpSZWplY3RlZCBodW5rICMyMi4KUmVqZWN0ZWQgaHVuayAjMjMu ClJlamVjdGVkIGh1bmsgIzI0LgpSZWplY3RlZCBodW5rICMyNS4KUmVqZWN0ZWQgaHVuayAjMjYu ClJlamVjdGVkIGh1bmsgIzI3LgpSZWplY3RlZCBodW5rICMyOC4KQXBwbHlpbmcgcGF0Y2ggZHJp dmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYyB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1 bmsgIzEuCmRpZmYgYS9kcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jIGIvZHJpdmVycy9uZXQv bmZwL25mcF9ldGhkZXYuYwkocmVqZWN0ZWQgaHVua3MpCkBAIC0zNDAsOCArMzQwLDcgQEAgbmZw X25ldF9jbG9zZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKIAogCS8qIHVucmVnaXN0ZXIgY2Fs bGJhY2sgZnVuYyBmcm9tIGVhbCBsaWIgKi8KIAlydGVfaW50cl9jYWxsYmFja191bnJlZ2lzdGVy KHBjaV9kZXYtPmludHJfaGFuZGxlLAotCQkJCSAgICAgbmZwX25ldF9kZXZfaW50ZXJydXB0X2hh bmRsZXIsCi0JCQkJICAgICAodm9pZCAqKWRldik7CisJCQluZnBfbmV0X2Rldl9pbnRlcnJ1cHRf aGFuZGxlciwgKHZvaWQgKilkZXYpOwogCiAJLyoKIAkgKiBUaGUgaXhnYmUgUE1EIGRpc2FibGVz IHRoZSBwY2llIG1hc3RlciBvbiB0aGUKQEAgLTM4OCw4ICszODcsOCBAQCBuZnBfbmV0X2luaXQo c3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQogCXN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXY7 CiAJc3RydWN0IG5mcF9uZXRfaHcgKmh3OwogCXN0cnVjdCBydGVfZXRoZXJfYWRkciAqdG1wX2V0 aGVyX2FkZHI7Ci0KLQl1aW50NjRfdCB0eF9iYXJfb2ZmID0gMCwgcnhfYmFyX29mZiA9IDA7CisJ dWludDY0X3QgcnhfYmFyX29mZiA9IDA7CisJdWludDY0X3QgdHhfYmFyX29mZiA9IDA7CiAJdWlu dDMyX3Qgc3RhcnRfcTsKIAlpbnQgc3RyaWRlID0gNDsKIAlpbnQgcG9ydCA9IDA7CkBAIC00MDQs MTEgKzQwMywxMSBAQCBuZnBfbmV0X2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQog CiAJLyogTkZQIGNhbiBub3QgaGFuZGxlIERNQSBhZGRyZXNzZXMgcmVxdWlyaW5nIG1vcmUgdGhh biA0MCBiaXRzICovCiAJaWYgKHJ0ZV9tZW1fY2hlY2tfZG1hX21hc2soNDApKSB7Ci0JCVJURV9M T0coRVJSLCBQTUQsICJkZXZpY2UgJXMgY2FuIG5vdCBiZSB1c2VkOiIsCi0JCQkJICAgcGNpX2Rl di0+ZGV2aWNlLm5hbWUpOwotCQlSVEVfTE9HKEVSUiwgUE1ELCAiXHRyZXN0cmljdGVkIGRtYSBt YXNrIHRvIDQwIGJpdHMhXG4iKTsKKwkJUlRFX0xPRyhFUlIsIFBNRCwKKwkJCSJkZXZpY2UgJXMg Y2FuIG5vdCBiZSB1c2VkOiByZXN0cmljdGVkIGRtYSBtYXNrIHRvIDQwIGJpdHMhXG4iLAorCQkJ cGNpX2Rldi0+ZGV2aWNlLm5hbWUpOwogCQlyZXR1cm4gLUVOT0RFVjsKLQl9OworCX0KIAogCXBv cnQgPSAoKHN0cnVjdCBuZnBfbmV0X2h3ICopZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpLT5p ZHg7CiAJaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiA3KSB7CkBAIC00MTYsMTQgKzQxNSwxNCBAQCBu ZnBfbmV0X2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQogCQlyZXR1cm4gLUVOT0RF VjsKIAl9CiAKLQkvKiBVc2UgUEYgYXJyYXkgb2YgcGh5c2ljYWwgcG9ydHMgdG8gZ2V0IHBvaW50 ZXIgdG8KKwkvKgorCSAqIFVzZSBQRiBhcnJheSBvZiBwaHlzaWNhbCBwb3J0cyB0byBnZXQgcG9p bnRlciB0bwogCSAqIHRoaXMgc3BlY2lmaWMgcG9ydAogCSAqLwogCWh3ID0gcGZfZGV2LT5wb3J0 c1twb3J0XTsKIAogCVBNRF9JTklUX0xPRyhERUJVRywgIldvcmtpbmcgd2l0aCBwaHlzaWNhbCBw b3J0IG51bWJlcjogJWQsICIKLQkJCSAgICAiTkZQIGludGVybmFsIHBvcnQgbnVtYmVyOiAlZCIs Ci0JCQkgICAgcG9ydCwgaHctPm5mcF9pZHgpOworCQkJIk5GUCBpbnRlcm5hbCBwb3J0IG51bWJl cjogJWQiLCBwb3J0LCBody0+bmZwX2lkeCk7CiAKIAlldGhfZGV2LT5kZXZfb3BzID0gJm5mcF9u ZXRfZXRoX2Rldl9vcHM7CiAJZXRoX2Rldi0+cnhfcXVldWVfY291bnQgPSBuZnBfbmV0X3J4X3F1 ZXVlX2NvdW50OwpAQCAtNDU2LDEzICs0NTUsMTAgQEAgbmZwX25ldF9pbml0KHN0cnVjdCBydGVf ZXRoX2RldiAqZXRoX2RldikKIAlpZiAocG9ydCA9PSAwKSB7CiAJCWh3LT5jdHJsX2JhciA9IHBm X2Rldi0+Y3RybF9iYXI7CiAJfSBlbHNlIHsKLQkJaWYgKCFwZl9kZXYtPmN0cmxfYmFyKQorCQlp ZiAocGZfZGV2LT5jdHJsX2JhciA9PSBOVUxMKQogCQkJcmV0dXJuIC1FTk9ERVY7Ci0JCS8qIFVz ZSBwb3J0IG9mZnNldCBpbiBwZiBjdHJsX2JhciBmb3IgdGhpcwotCQkgKiBwb3J0cyBjb250cm9s IGJhcgotCQkgKi8KLQkJaHctPmN0cmxfYmFyID0gcGZfZGV2LT5jdHJsX2JhciArCi0JCQkgICAg ICAgKHBvcnQgKiBORlBfUEZfQ1NSX1NMSUNFX1NJWkUpOworCQkvKiBVc2UgcG9ydCBvZmZzZXQg aW4gcGYgY3RybF9iYXIgZm9yIHRoaXMgcG9ydHMgY29udHJvbCBiYXIgKi8KKwkJaHctPmN0cmxf YmFyID0gcGZfZGV2LT5jdHJsX2JhciArIChwb3J0ICogTkZQX1BGX0NTUl9TTElDRV9TSVpFKTsK IAl9CiAKIAlQTURfSU5JVF9MT0coREVCVUcsICJjdHJsIGJhcjogJXAiLCBody0+Y3RybF9iYXIp OwpAQCAtNTU3LDggKzU1Myw3IEBAIG5mcF9uZXRfaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0 aF9kZXYpCiAKIAl0bXBfZXRoZXJfYWRkciA9IChzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKikmaHct Pm1hY19hZGRyOwogCWlmICghcnRlX2lzX3ZhbGlkX2Fzc2lnbmVkX2V0aGVyX2FkZHIodG1wX2V0 aGVyX2FkZHIpKSB7Ci0JCVBNRF9JTklUX0xPRyhJTkZPLCAiVXNpbmcgcmFuZG9tIG1hYyBhZGRy ZXNzIGZvciBwb3J0ICVkIiwKLQkJCQkgICBwb3J0KTsKKwkJUE1EX0lOSVRfTE9HKElORk8sICJV c2luZyByYW5kb20gbWFjIGFkZHJlc3MgZm9yIHBvcnQgJWQiLCBwb3J0KTsKIAkJLyogVXNpbmcg cmFuZG9tIG1hYyBhZGRyZXNzZXMgZm9yIFZGcyAqLwogCQlydGVfZXRoX3JhbmRvbV9hZGRyKCZo dy0+bWFjX2FkZHJbMF0pOwogCQluZnBfbmV0X3dyaXRlX21hYyhodywgKHVpbnQ4X3QgKikmaHct Pm1hY19hZGRyKTsKQEAgLTU4Myw4ICs1NzgsNyBAQCBuZnBfbmV0X2luaXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpldGhfZGV2KQogCWlmIChydGVfZWFsX3Byb2Nlc3NfdHlwZSgpID09IFJURV9QUk9D X1BSSU1BUlkpIHsKIAkJLyogUmVnaXN0ZXJpbmcgTFNDIGludGVycnVwdCBoYW5kbGVyICovCiAJ CXJ0ZV9pbnRyX2NhbGxiYWNrX3JlZ2lzdGVyKHBjaV9kZXYtPmludHJfaGFuZGxlLAotCQkJCQkg ICBuZnBfbmV0X2Rldl9pbnRlcnJ1cHRfaGFuZGxlciwKLQkJCQkJICAgKHZvaWQgKilldGhfZGV2 KTsKKwkJCQluZnBfbmV0X2Rldl9pbnRlcnJ1cHRfaGFuZGxlciwgKHZvaWQgKilldGhfZGV2KTsK IAkJLyogVGVsbGluZyB0aGUgZmlybXdhcmUgYWJvdXQgdGhlIExTQyBpbnRlcnJ1cHQgZW50cnkg Ki8KIAkJbm5fY2ZnX3dyaXRlYihodywgTkZQX05FVF9DRkdfTFNDLCBORlBfTkVUX0lSUV9MU0Nf SURYKTsKIAkJLyogUmVjb3JkaW5nIGN1cnJlbnQgc3RhdHMgY291bnRlcnMgdmFsdWVzICovCkBA IC02NTYsOCArNjUwLDEwIEBAIG5mcF9md191cGxvYWQoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpk ZXYsIHN0cnVjdCBuZnBfbnNwICpuc3AsIGNoYXIgKmNhcmQpCiB9CiAKIHN0YXRpYyBpbnQKLW5m cF9md19zZXR1cChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKmRldiwgc3RydWN0IG5mcF9jcHAgKmNw cCwKLQkgICAgIHN0cnVjdCBuZnBfZXRoX3RhYmxlICpuZnBfZXRoX3RhYmxlLCBzdHJ1Y3QgbmZw X2h3aW5mbyAqaHdpbmZvKQorbmZwX2Z3X3NldHVwKHN0cnVjdCBydGVfcGNpX2RldmljZSAqZGV2 LAorCQlzdHJ1Y3QgbmZwX2NwcCAqY3BwLAorCQlzdHJ1Y3QgbmZwX2V0aF90YWJsZSAqbmZwX2V0 aF90YWJsZSwKKwkJc3RydWN0IG5mcF9od2luZm8gKmh3aW5mbykKIHsKIAlzdHJ1Y3QgbmZwX25z cCAqbnNwOwogCWNvbnN0IGNoYXIgKm5mcF9md19tb2RlbDsKQEAgLTY3NSwxMiArNjcxLDEyIEBA IG5mcF9md19zZXR1cChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKmRldiwgc3RydWN0IG5mcF9jcHAg KmNwcCwKIAogCWlmIChuZnBfZXRoX3RhYmxlLT5jb3VudCA9PSAwIHx8IG5mcF9ldGhfdGFibGUt PmNvdW50ID4gOCkgewogCQlQTURfRFJWX0xPRyhFUlIsICJORlAgZXRoZXJuZXQgdGFibGUgcmVw b3J0cyB3cm9uZyBwb3J0czogJXUiLAotCQkgICAgICAgbmZwX2V0aF90YWJsZS0+Y291bnQpOwor CQkJbmZwX2V0aF90YWJsZS0+Y291bnQpOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAKIAlQTURfRFJW X0xPRyhJTkZPLCAiTkZQIGV0aGVybmV0IHBvcnQgdGFibGUgcmVwb3J0cyAldSBwb3J0cyIsCi0J CQkgICBuZnBfZXRoX3RhYmxlLT5jb3VudCk7CisJCQluZnBfZXRoX3RhYmxlLT5jb3VudCk7CiAK IAlQTURfRFJWX0xPRyhJTkZPLCAiUG9ydCBzcGVlZDogJXUiLCBuZnBfZXRoX3RhYmxlLT5wb3J0 c1swXS5zcGVlZCk7CiAKQEAgLTY4OSw3ICs2ODUsNyBAQCBuZnBfZndfc2V0dXAoc3RydWN0IHJ0 ZV9wY2lfZGV2aWNlICpkZXYsIHN0cnVjdCBuZnBfY3BwICpjcHAsCiAJCQluZnBfZXRoX3RhYmxl LT5wb3J0c1swXS5zcGVlZCAvIDEwMDApOwogCiAJbnNwID0gbmZwX25zcF9vcGVuKGNwcCk7Ci0J aWYgKCFuc3ApIHsKKwlpZiAobnNwID09IE5VTEwpIHsKIAkJUE1EX0RSVl9MT0coRVJSLCAiTkZQ IGVycm9yIHdoZW4gb2J0YWluaW5nIE5TUCBoYW5kbGUiKTsKIAkJcmV0dXJuIC1FSU87CiAJfQpA QCAtNzAxLDE5ICs2OTcsMTkgQEAgbmZwX2Z3X3NldHVwKHN0cnVjdCBydGVfcGNpX2RldmljZSAq ZGV2LCBzdHJ1Y3QgbmZwX2NwcCAqY3BwLAogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQg bmZwX2luaXRfcGh5cG9ydHMoc3RydWN0IG5mcF9wZl9kZXYgKnBmX2RldikKK3N0YXRpYyBpbnQK K25mcF9pbml0X3BoeXBvcnRzKHN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXYpCiB7CisJaW50IGk7 CisJaW50IHJldCA9IDA7CiAJc3RydWN0IG5mcF9uZXRfaHcgKmh3OwogCXN0cnVjdCBydGVfZXRo X2RldiAqZXRoX2RldjsKLQlzdHJ1Y3QgbmZwX2V0aF90YWJsZSAqbmZwX2V0aF90YWJsZSA9IE5V TEw7Ci0JaW50IHJldCA9IDA7Ci0JaW50IGk7CisJc3RydWN0IG5mcF9ldGhfdGFibGUgKm5mcF9l dGhfdGFibGU7CiAKIAluZnBfZXRoX3RhYmxlID0gbmZwX2V0aF9yZWFkX3BvcnRzKHBmX2Rldi0+ Y3BwKTsKLQlpZiAoIW5mcF9ldGhfdGFibGUpIHsKKwlpZiAobmZwX2V0aF90YWJsZSA9PSBOVUxM KSB7CiAJCVBNRF9JTklUX0xPRyhFUlIsICJFcnJvciByZWFkaW5nIE5GUCBldGhlcm5ldCB0YWJs ZSIpOwotCQlyZXQgPSAtRUlPOwotCQlnb3RvIGVycm9yOworCQlyZXR1cm4gLUVJTzsKIAl9CiAK IAkvKiBMb29wIHRocm91Z2ggYWxsIHBoeXNpY2FsIHBvcnRzIG9uIFBGICovCkBAIC03MjYsNyAr NzIyLDcgQEAgc3RhdGljIGludCBuZnBfaW5pdF9waHlwb3J0cyhzdHJ1Y3QgbmZwX3BmX2RldiAq cGZfZGV2KQogCiAJCS8qIEFsbG9jYXRlIGEgZXRoX2RldiBmb3IgdGhpcyBwaHlwb3J0ICovCiAJ CWV0aF9kZXYgPSBydGVfZXRoX2Rldl9hbGxvY2F0ZShwb3J0X25hbWUpOwotCQlpZiAoIWV0aF9k ZXYpIHsKKwkJaWYgKGV0aF9kZXYgPT0gTlVMTCkgewogCQkJcmV0ID0gLUVOT0RFVjsKIAkJCWdv dG8gcG9ydF9jbGVhbnVwOwogCQl9CkBAIC03MzQsOCArNzMwLDggQEAgc3RhdGljIGludCBuZnBf aW5pdF9waHlwb3J0cyhzdHJ1Y3QgbmZwX3BmX2RldiAqcGZfZGV2KQogCQkvKiBBbGxvY2F0ZSBt ZW1vcnkgZm9yIHRoaXMgcGh5cG9ydCAqLwogCQlldGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSA9 CiAJCQlydGVfem1hbGxvY19zb2NrZXQocG9ydF9uYW1lLCBzaXplb2Yoc3RydWN0IG5mcF9uZXRf aHcpLAotCQkJCQkgICBSVEVfQ0FDSEVfTElORV9TSVpFLCBudW1hX25vZGUpOwotCQlpZiAoIWV0 aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlKSB7CisJCQkJUlRFX0NBQ0hFX0xJTkVfU0laRSwgbnVt YV9ub2RlKTsKKwkJaWYgKGV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlID09IE5VTEwpIHsKIAkJ CXJldCA9IC1FTk9NRU07CiAJCQlydGVfZXRoX2Rldl9yZWxlYXNlX3BvcnQoZXRoX2Rldik7CiAJ CQlnb3RvIHBvcnRfY2xlYW51cDsKQEAgLTc1OSw3ICs3NTUsNiBAQCBzdGF0aWMgaW50IG5mcF9p bml0X3BoeXBvcnRzKHN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXYpCiAJCSAqIG5mcF9uZXRfaW5p dAogCQkgKi8KIAkJcmV0ID0gbmZwX25ldF9pbml0KGV0aF9kZXYpOwotCiAJCWlmIChyZXQpIHsK IAkJCXJldCA9IC1FTk9ERVY7CiAJCQlnb3RvIHBvcnRfY2xlYW51cDsKQEAgLTc4MiwyNCArNzc3 LDI1IEBAIHN0YXRpYyBpbnQgbmZwX2luaXRfcGh5cG9ydHMoc3RydWN0IG5mcF9wZl9kZXYgKnBm X2RldikKIAl9CiBldGhfdGFibGVfY2xlYW51cDoKIAlmcmVlKG5mcF9ldGhfdGFibGUpOwotZXJy b3I6CisKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IG5mcF9wZl9pbml0KHN0cnVjdCBy dGVfcGNpX2RldmljZSAqcGNpX2RldikKK3N0YXRpYyBpbnQKK25mcF9wZl9pbml0KHN0cnVjdCBy dGVfcGNpX2RldmljZSAqcGNpX2RldikKIHsKLQlzdHJ1Y3QgbmZwX3BmX2RldiAqcGZfZGV2ID0g TlVMTDsKKwlpbnQgZXJyOworCWludCByZXQgPSAwOworCWludCB0b3RhbF9wb3J0czsKIAlzdHJ1 Y3QgbmZwX2NwcCAqY3BwOworCXN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXY7CiAJc3RydWN0IG5m cF9od2luZm8gKmh3aW5mbzsKLQlzdHJ1Y3QgbmZwX3J0c3ltX3RhYmxlICpzeW1fdGJsOwotCXN0 cnVjdCBuZnBfZXRoX3RhYmxlICpuZnBfZXRoX3RhYmxlID0gTlVMTDsKIAljaGFyIG5hbWVbUlRF X0VUSF9OQU1FX01BWF9MRU5dOwotCWludCB0b3RhbF9wb3J0czsKLQlpbnQgcmV0ID0gLUVOT0RF VjsKLQlpbnQgZXJyOworCXN0cnVjdCBuZnBfcnRzeW1fdGFibGUgKnN5bV90Ymw7CisJc3RydWN0 IG5mcF9ldGhfdGFibGUgKm5mcF9ldGhfdGFibGU7CiAKLQlpZiAoIXBjaV9kZXYpCi0JCXJldHVy biByZXQ7CisJaWYgKHBjaV9kZXYgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9ERVY7CiAKIAkvKgog CSAqIFdoZW4gZGV2aWNlIGJvdW5kIHRvIFVJTywgdGhlIGRldmljZSBjb3VsZCBiZSB1c2VkLCBi eSBtaXN0YWtlLApAQCAtODEzLDIxICs4MDksMjEgQEAgc3RhdGljIGludCBuZnBfcGZfaW5pdChz dHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpCiAJZWxzZQogCQljcHAgPSBuZnBfY3BwX2Zy b21fZGV2aWNlX25hbWUocGNpX2RldiwgMSk7CiAKLQlpZiAoIWNwcCkgeworCWlmIChjcHAgPT0g TlVMTCkgewogCQlQTURfSU5JVF9MT0coRVJSLCAiQSBDUFAgaGFuZGxlIGNhbiBub3QgYmUgb2J0 YWluZWQiKTsKIAkJcmV0ID0gLUVJTzsKIAkJZ290byBlcnJvcjsKIAl9CiAKIAlod2luZm8gPSBu ZnBfaHdpbmZvX3JlYWQoY3BwKTsKLQlpZiAoIWh3aW5mbykgeworCWlmIChod2luZm8gPT0gTlVM TCkgewogCQlQTURfSU5JVF9MT0coRVJSLCAiRXJyb3IgcmVhZGluZyBod2luZm8gdGFibGUiKTsK IAkJcmV0ID0gLUVJTzsKIAkJZ290byBlcnJvcjsKIAl9CiAKIAluZnBfZXRoX3RhYmxlID0gbmZw X2V0aF9yZWFkX3BvcnRzKGNwcCk7Ci0JaWYgKCFuZnBfZXRoX3RhYmxlKSB7CisJaWYgKG5mcF9l dGhfdGFibGUgPT0gTlVMTCkgewogCQlQTURfSU5JVF9MT0coRVJSLCAiRXJyb3IgcmVhZGluZyBO RlAgZXRoZXJuZXQgdGFibGUiKTsKIAkJcmV0ID0gLUVJTzsKIAkJZ290byBod2luZm9fY2xlYW51 cDsKQEAgLTg0MSw3ICs4MzcsNyBAQCBzdGF0aWMgaW50IG5mcF9wZl9pbml0KHN0cnVjdCBydGVf cGNpX2RldmljZSAqcGNpX2RldikKIAogCS8qIE5vdyB0aGUgc3ltYm9sIHRhYmxlIHNob3VsZCBi ZSB0aGVyZSAqLwogCXN5bV90YmwgPSBuZnBfcnRzeW1fdGFibGVfcmVhZChjcHApOwotCWlmICgh c3ltX3RibCkgeworCWlmIChzeW1fdGJsID09IE5VTEwpIHsKIAkJUE1EX0lOSVRfTE9HKEVSUiwg IlNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBmaXJtd2FyZSIKIAkJCQkiIHN5bWJvbCB0YWJs ZSIpOwogCQlyZXQgPSAtRUlPOwpAQCAtODY1LDcgKzg2MSw3IEBAIHN0YXRpYyBpbnQgbmZwX3Bm X2luaXQoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2KQogCS8qIEFsbG9jYXRlIG1lbW9y eSBmb3IgdGhlIFBGICJkZXZpY2UiICovCiAJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAi bmZwX3BmJWQiLCAwKTsKIAlwZl9kZXYgPSBydGVfem1hbGxvYyhuYW1lLCBzaXplb2YoKnBmX2Rl diksIDApOwotCWlmICghcGZfZGV2KSB7CisJaWYgKHBmX2RldiA9PSBOVUxMKSB7CiAJCXJldCA9 IC1FTk9NRU07CiAJCWdvdG8gc3ltX3RibF9jbGVhbnVwOwogCX0KQEAgLTg4Myw5ICs4NzksOCBA QCBzdGF0aWMgaW50IG5mcF9wZl9pbml0KHN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2RldikK IAogCS8qIE1hcCB0aGUgc3ltYm9sIHRhYmxlICovCiAJcGZfZGV2LT5jdHJsX2JhciA9IG5mcF9y dHN5bV9tYXAocGZfZGV2LT5zeW1fdGJsLCAiX3BmMF9uZXRfYmFyMCIsCi0JCQkJICAgICBwZl9k ZXYtPnRvdGFsX3BoeXBvcnRzICogMzI3NjgsCi0JCQkJICAgICAmcGZfZGV2LT5jdHJsX2FyZWEp OwotCWlmICghcGZfZGV2LT5jdHJsX2JhcikgeworCQkJcGZfZGV2LT50b3RhbF9waHlwb3J0cyAq IDMyNzY4LCAmcGZfZGV2LT5jdHJsX2FyZWEpOworCWlmIChwZl9kZXYtPmN0cmxfYmFyID09IE5V TEwpIHsKIAkJUE1EX0lOSVRfTE9HKEVSUiwgIm5mcF9ydHN5bV9tYXAgZmFpbHMgZm9yIF9wZjBf bmV0X2N0cmxfYmFyIik7CiAJCXJldCA9IC1FSU87CiAJCWdvdG8gcGZfY2xlYW51cDsKQEAgLTg5 NSwxMCArODkwLDkgQEAgc3RhdGljIGludCBuZnBfcGZfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZp Y2UgKnBjaV9kZXYpCiAKIAkvKiBjb25maWd1cmUgYWNjZXNzIHRvIHR4L3J4IHZOSUMgQkFScyAq LwogCXBmX2Rldi0+aHdfcXVldWVzID0gbmZwX2NwcF9tYXBfYXJlYShwZl9kZXYtPmNwcCwgMCwg MCwKLQkJCQkJICAgICAgTkZQX1BDSUVfUVVFVUUoMCksCi0JCQkJCSAgICAgIE5GUF9RQ1BfUVVF VUVfQVJFQV9TWiwKLQkJCQkJICAgICAgJnBmX2Rldi0+aHdxdWV1ZXNfYXJlYSk7Ci0JaWYgKCFw Zl9kZXYtPmh3X3F1ZXVlcykgeworCQkJTkZQX1BDSUVfUVVFVUUoMCksIE5GUF9RQ1BfUVVFVUVf QVJFQV9TWiwKKwkJCSZwZl9kZXYtPmh3cXVldWVzX2FyZWEpOworCWlmIChwZl9kZXYtPmh3X3F1 ZXVlcyA9PSBOVUxMKSB7CiAJCVBNRF9JTklUX0xPRyhFUlIsICJuZnBfcnRzeW1fbWFwIGZhaWxz IGZvciBuZXQucWMiKTsKIAkJcmV0ID0gLUVJTzsKIAkJZ290byBjdHJsX2FyZWFfY2xlYW51cDsK QEAgLTkwNiw3ICs5MDAsOCBAQCBzdGF0aWMgaW50IG5mcF9wZl9pbml0KHN0cnVjdCBydGVfcGNp X2RldmljZSAqcGNpX2RldikKIAogCVBNRF9JTklUX0xPRyhERUJVRywgInR4L3J4IGJhciBhZGRy ZXNzOiAweCVwIiwgcGZfZGV2LT5od19xdWV1ZXMpOwogCi0JLyogSW5pdGlhbGl6ZSBhbmQgcHJl cCBwaHlzaWNhbCBwb3J0cyBub3cKKwkvKgorCSAqIEluaXRpYWxpemUgYW5kIHByZXAgcGh5c2lj YWwgcG9ydHMgbm93CiAJICogVGhpcyB3aWxsIGxvb3AgdGhyb3VnaCBhbGwgcGh5c2ljYWwgcG9y dHMKIAkgKi8KIAlyZXQgPSBuZnBfaW5pdF9waHlwb3J0cyhwZl9kZXYpOwpAQCAtOTQxLDE1ICs5 MzYsMTYgQEAgc3RhdGljIGludCBuZnBfcGZfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBj aV9kZXYpCiAgKiBpcyBubyBuZWVkIHRvIGluaXRpYWxpc2UgdGhlIFBGIGFnYWluLiBPbmx5IG1p bmltYWwgd29yayBpcyByZXF1aXJlZAogICogaGVyZQogICovCi1zdGF0aWMgaW50IG5mcF9wZl9z ZWNvbmRhcnlfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpCitzdGF0aWMgaW50 CituZnBfcGZfc2Vjb25kYXJ5X2luaXQoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2KQog ewotCXN0cnVjdCBuZnBfY3BwICpjcHA7Ci0Jc3RydWN0IG5mcF9ydHN5bV90YWJsZSAqc3ltX3Ri bDsKLQlpbnQgdG90YWxfcG9ydHM7CiAJaW50IGk7CiAJaW50IGVycjsKKwlpbnQgdG90YWxfcG9y dHM7CisJc3RydWN0IG5mcF9jcHAgKmNwcDsKKwlzdHJ1Y3QgbmZwX3J0c3ltX3RhYmxlICpzeW1f dGJsOwogCi0JaWYgKCFwY2lfZGV2KQorCWlmIChwY2lfZGV2ID09IE5VTEwpCiAJCXJldHVybiAt RU5PREVWOwogCiAJLyoKQEAgLTk2NCw3ICs5NjAsNyBAQCBzdGF0aWMgaW50IG5mcF9wZl9zZWNv bmRhcnlfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpCiAJZWxzZQogCQljcHAg PSBuZnBfY3BwX2Zyb21fZGV2aWNlX25hbWUocGNpX2RldiwgMSk7CiAKLQlpZiAoIWNwcCkgewor CWlmIChjcHAgPT0gTlVMTCkgewogCQlQTURfSU5JVF9MT0coRVJSLCAiQSBDUFAgaGFuZGxlIGNh biBub3QgYmUgb2J0YWluZWQiKTsKIAkJcmV0dXJuIC1FSU87CiAJfQpAQCAtOTc0LDcgKzk3MCw3 IEBAIHN0YXRpYyBpbnQgbmZwX3BmX3NlY29uZGFyeV9pbml0KHN0cnVjdCBydGVfcGNpX2Rldmlj ZSAqcGNpX2RldikKIAkgKiBoZXJlIHNvIHdlIGhhdmUgdG8gcmVhZCB0aGUgbnVtYmVyIG9mIHBv cnRzIGZyb20gZmlybXdhcmUKIAkgKi8KIAlzeW1fdGJsID0gbmZwX3J0c3ltX3RhYmxlX3JlYWQo Y3BwKTsKLQlpZiAoIXN5bV90YmwpIHsKKwlpZiAoc3ltX3RibCA9PSBOVUxMKSB7CiAJCVBNRF9J TklUX0xPRyhFUlIsICJTb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgZmlybXdhcmUiCiAJCQkJ IiBzeW1ib2wgdGFibGUiKTsKIAkJcmV0dXJuIC1FSU87CkBAIC05ODksMTMgKzk4NSwxMSBAQCBz dGF0aWMgaW50IG5mcF9wZl9zZWNvbmRhcnlfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBj aV9kZXYpCiAJCXNucHJpbnRmKHBvcnRfbmFtZSwgc2l6ZW9mKHBvcnRfbmFtZSksICIlc19wb3J0 JWQiLAogCQkJIHBjaV9kZXYtPmRldmljZS5uYW1lLCBpKTsKIAotCQlQTURfRFJWX0xPRyhERUJV RywgIlNlY29uZGFyeSBhdHRhY2hpbmcgdG8gcG9ydCAlcyIsCi0JCSAgICBwb3J0X25hbWUpOwor CQlQTURfRFJWX0xPRyhERUJVRywgIlNlY29uZGFyeSBhdHRhY2hpbmcgdG8gcG9ydCAlcyIsIHBv cnRfbmFtZSk7CiAJCWV0aF9kZXYgPSBydGVfZXRoX2Rldl9hdHRhY2hfc2Vjb25kYXJ5KHBvcnRf bmFtZSk7Ci0JCWlmICghZXRoX2RldikgeworCQlpZiAoZXRoX2RldiA9PSBOVUxMKSB7CiAJCQlS VEVfTE9HKEVSUiwgRUFMLAotCQkJInNlY29uZGFyeSBwcm9jZXNzIGF0dGFjaCBmYWlsZWQsICIK LQkJCSJldGhkZXYgZG9lc24ndCBleGlzdCIpOworCQkJCSJzZWNvbmRhcnkgcHJvY2VzcyBhdHRh Y2ggZmFpbGVkLCBldGhkZXYgZG9lc24ndCBleGlzdCIpOwogCQkJcmV0dXJuIC1FTk9ERVY7CiAJ CX0KIAkJZXRoX2Rldi0+cHJvY2Vzc19wcml2YXRlID0gY3BwOwpAQCAtMTAxMiw4ICsxMDA2LDkg QEAgc3RhdGljIGludCBuZnBfcGZfc2Vjb25kYXJ5X2luaXQoc3RydWN0IHJ0ZV9wY2lfZGV2aWNl ICpwY2lfZGV2KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IG5mcF9wZl9wY2lfcHJvYmUo c3RydWN0IHJ0ZV9wY2lfZHJpdmVyICpwY2lfZHJ2IF9fcnRlX3VudXNlZCwKLQkJCSAgICBzdHJ1 Y3QgcnRlX3BjaV9kZXZpY2UgKmRldikKK3N0YXRpYyBpbnQKK25mcF9wZl9wY2lfcHJvYmUoc3Ry dWN0IHJ0ZV9wY2lfZHJpdmVyICpwY2lfZHJ2IF9fcnRlX3VudXNlZCwKKwkJc3RydWN0IHJ0ZV9w Y2lfZGV2aWNlICpkZXYpCiB7CiAJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgPT0gUlRFX1BS T0NfUFJJTUFSWSkKIAkJcmV0dXJuIG5mcF9wZl9pbml0KGRldik7CkBAIC0xMDM1LDcgKzEwMzAs OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0ZV9wY2lfaWQgcGNpX2lkX25mcF9wZl9uZXRfbWFw W10gPSB7CiAJfSwKIH07CiAKLXN0YXRpYyBpbnQgbmZwX3BjaV91bmluaXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpldGhfZGV2KQorc3RhdGljIGludAorbmZwX3BjaV91bmluaXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpldGhfZGV2KQogewogCXN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2RldjsKIAl1 aW50MTZfdCBwb3J0X2lkOwpAQCAtMTA1Miw3ICsxMDQ4LDggQEAgc3RhdGljIGludCBuZnBfcGNp X3VuaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpCiAJcmV0dXJuIC1FTk9UU1VQOwog fQogCi1zdGF0aWMgaW50IGV0aF9uZnBfcGNpX3JlbW92ZShzdHJ1Y3QgcnRlX3BjaV9kZXZpY2Ug KnBjaV9kZXYpCitzdGF0aWMgaW50CitldGhfbmZwX3BjaV9yZW1vdmUoc3RydWN0IHJ0ZV9wY2lf ZGV2aWNlICpwY2lfZGV2KQogewogCXJldHVybiBydGVfZXRoX2Rldl9wY2lfZ2VuZXJpY19yZW1v dmUocGNpX2RldiwgbmZwX3BjaV91bmluaXQpOwogfQpkaWZmIGEvZHJpdmVycy9uZXQvbmZwL25m cF9ldGhkZXZfdmYuYyBiL2RyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMJKHJlamVjdGVk IGh1bmtzKQpAQCAtMjk2LDExICsyOTYsMTEgQEAgbmZwX25ldHZmX2luaXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpldGhfZGV2KQogCiAJLyogTkZQIGNhbiBub3QgaGFuZGxlIERNQSBhZGRyZXNzZXMg cmVxdWlyaW5nIG1vcmUgdGhhbiA0MCBiaXRzICovCiAJaWYgKHJ0ZV9tZW1fY2hlY2tfZG1hX21h c2soNDApKSB7Ci0JCVJURV9MT0coRVJSLCBQTUQsICJkZXZpY2UgJXMgY2FuIG5vdCBiZSB1c2Vk OiIsCi0JCQkJICAgcGNpX2Rldi0+ZGV2aWNlLm5hbWUpOwotCQlSVEVfTE9HKEVSUiwgUE1ELCAi XHRyZXN0cmljdGVkIGRtYSBtYXNrIHRvIDQwIGJpdHMhXG4iKTsKKwkJUlRFX0xPRyhFUlIsIFBN RCwKKwkJCSJkZXZpY2UgJXMgY2FuIG5vdCBiZSB1c2VkOiByZXN0cmljdGVkIGRtYSBtYXNrIHRv IDQwIGJpdHMhXG4iLAorCQkJcGNpX2Rldi0+ZGV2aWNlLm5hbWUpOwogCQlyZXR1cm4gLUVOT0RF VjsKLQl9OworCX0KIAogCWh3ID0gTkZQX05FVF9ERVZfUFJJVkFURV9UT19IVyhldGhfZGV2LT5k YXRhLT5kZXZfcHJpdmF0ZSk7CiAKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9l dGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKI2luY2x1ZGUgIm5mcF9jdHJs LmgiCiNpbmNsdWRlICJuZnBfY3BwX2JyaWRnZS5oIgoKCnN0YXRpYyBpbnQgbmZwX25ldF9wZl9y ZWFkX21hYyhzdHJ1Y3QgbmZwX3BmX2RldiAqcGZfZGV2LCBpbnQgcG9ydCk7CnN0YXRpYyBpbnQg bmZwX25ldF9zdGFydChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7CnN0YXRpYyBpbnQgbmZwX25l dF9zdG9wKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKc3RhdGljIGludCBuZnBfbmV0X3NldF9s aW5rX3VwKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKc3RhdGljIGludCBuZnBfbmV0X3NldF9s aW5rX2Rvd24oc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwpzdGF0aWMgaW50IG5mcF9uZXRfY2xv c2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwpzdGF0aWMgaW50IG5mcF9uZXRfaW5pdChzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpOwpzdGF0aWMgaW50IG5mcF9md191cGxvYWQoc3RydWN0 IHJ0ZV9wY2lfZGV2aWNlICpkZXYsCgkJCSBzdHJ1Y3QgbmZwX25zcCAqbnNwLCBjaGFyICpjYXJk KTsKc3RhdGljIGludCBuZnBfZndfc2V0dXAoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpkZXYsCgkJ CXN0cnVjdCBuZnBfY3BwICpjcHAsCgkJCXN0cnVjdCBuZnBfZXRoX3RhYmxlICpuZnBfZXRoX3Rh YmxlLAoJCQlzdHJ1Y3QgbmZwX2h3aW5mbyAqaHdpbmZvKTsKc3RhdGljIGludCBuZnBfaW5pdF9w aHlwb3J0cyhzdHJ1Y3QgbmZwX3BmX2RldiAqcGZfZGV2KTsKc3RhdGljIGludCBuZnBfcGZfaW5p dChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpOwpzdGF0aWMgaW50IG5mcF9wZl9zZWNv bmRhcnlfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpOwpzdGF0aWMgaW50IG5m cF9wZl9wY2lfcHJvYmUoc3RydWN0IHJ0ZV9wY2lfZHJpdmVyICpwY2lfZHJ2IF9fcnRlX3VudXNl ZCwKCQkJICAgIHN0cnVjdCBydGVfcGNpX2RldmljZSAqZGV2KTsKc3RhdGljIGludCBuZnBfcGNp X3VuaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpOwpzdGF0aWMgaW50IGV0aF9uZnBf cGNpX3JlbW92ZShzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpOwoKc3RhdGljIGludApu ZnBfbmV0X3BmX3JlYWRfbWFjKHN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXYsIGludCBwb3J0KQp7 CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjM4CkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMuLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CiNpbmNsdWRlICJuZnBfbG9ncy5oIgojaW5jbHVkZSAibmZwX2N0 cmwuaCIKCnN0YXRpYyB2b2lkIG5mcF9uZXR2Zl9yZWFkX21hYyhzdHJ1Y3QgbmZwX25ldF9odyAq aHcpOwpzdGF0aWMgaW50IG5mcF9uZXR2Zl9zdGFydChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7 CnN0YXRpYyBpbnQgbmZwX25ldHZmX3N0b3Aoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwpzdGF0 aWMgaW50IG5mcF9uZXR2Zl9zZXRfbGlua191cChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7CnN0 YXRpYyBpbnQgbmZwX25ldHZmX3NldF9saW5rX2Rvd24oc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYp OwpzdGF0aWMgaW50IG5mcF9uZXR2Zl9jbG9zZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7CnN0 YXRpYyBpbnQgbmZwX25ldHZmX2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KTsKc3Rh dGljIGludCBuZnBfdmZfcGNpX3VuaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpOwpz dGF0aWMgaW50IGV0aF9uZnBfdmZfcGNpX3Byb2JlKHN0cnVjdCBydGVfcGNpX2RyaXZlciAqcGNp X2RydiBfX3J0ZV91bnVzZWQsCglzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpOwpzdGF0 aWMgaW50IGV0aF9uZnBfdmZfcGNpX3JlbW92ZShzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9k ZXYpOwoKc3RhdGljIHZvaWQKbmZwX25ldHZmX3JlYWRfbWFjKHN0cnVjdCBuZnBfbmV0X2h3ICpo dykKewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYu YzoyMwpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX3J4dHguYy4uLgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKI2luY2x1ZGUgIm5mcF9sb2dzLmgiCiNpbmNsdWRlICJuZnBf Y3RybC5oIgoKLyogUHJvdG90eXBlcyAqLwpzdGF0aWMgaW50IG5mcF9uZXRfcnhfZmlsbF9mcmVl bGlzdChzdHJ1Y3QgbmZwX25ldF9yeHEgKnJ4cSk7CnN0YXRpYyBpbmxpbmUgdm9pZCBuZnBfbmV0 X21idWZfYWxsb2NfZmFpbGVkKHN0cnVjdCBuZnBfbmV0X3J4cSAqcnhxKTsKc3RhdGljIGlubGlu ZSB2b2lkIG5mcF9uZXRfc2V0X2hhc2goc3RydWN0IG5mcF9uZXRfcnhxICpyeHEsCgkJCQkgICAg c3RydWN0IG5mcF9uZXRfcnhfZGVzYyAqcnhkLAoJCQkJICAgIHN0cnVjdCBydGVfbWJ1ZiAqbWJ1 Zik7CnN0YXRpYyBpbmxpbmUgdm9pZCBuZnBfbmV0X3J4X2Nrc3VtKHN0cnVjdCBuZnBfbmV0X3J4 cSAqcnhxLAoJCQkJICAgIHN0cnVjdCBuZnBfbmV0X3J4X2Rlc2MgKnJ4ZCwKCQkJCSAgICBzdHJ1 Y3QgcnRlX21idWYgKm1iKTsKc3RhdGljIHZvaWQgbmZwX25ldF9yeF9xdWV1ZV9yZWxlYXNlX21i dWZzKHN0cnVjdCBuZnBfbmV0X3J4cSAqcnhxKTsKc3RhdGljIGludCBuZnBfbmV0X3R4X2ZyZWVf YnVmcyhzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cSk7CnN0YXRpYyB2b2lkIG5mcF9uZXRfdHhfcXVl dWVfcmVsZWFzZV9tYnVmcyhzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cSk7CnN0YXRpYyBpbmxpbmUg dWludDMyX3QgbmZwX2ZyZWVfdHhfZGVzYyhzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cSk7CnN0YXRp YyBpbmxpbmUgdWludDMyX3QgbmZwX25ldF90eHFfZnVsbChzdHJ1Y3QgbmZwX25ldF90eHEgKnR4 cSk7CnN0YXRpYyBpbmxpbmUgdm9pZCBuZnBfbmV0X3R4X3RzbyhzdHJ1Y3QgbmZwX25ldF90eHEg KnR4cSwKCQkJCSAgc3RydWN0IG5mcF9uZXRfdHhfZGVzYyAqdHhkLAoJCQkJICBzdHJ1Y3QgcnRl X21idWYgKm1iKTsKc3RhdGljIGlubGluZSB2b2lkIG5mcF9uZXRfdHhfY2tzdW0oc3RydWN0IG5m cF9uZXRfdHhxICp0eHEsCgkJCQkgICAgc3RydWN0IG5mcF9uZXRfdHhfZGVzYyAqdHhkLAoJCQkJ ICAgIHN0cnVjdCBydGVfbWJ1ZiAqbWIpOwoKc3RhdGljIGludApuZnBfbmV0X3J4X2ZpbGxfZnJl ZWxpc3Qoc3RydWN0IG5mcF9uZXRfcnhxICpyeHEpCnsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L25mcC9uZnBfcnh0eC5jOjIxCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L25m cC9uZnBfZXRoZGV2LmMgd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBseWlu ZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5jIHdpdGggMSByZWplY3QuLi4K UmVqZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4 LmMgd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpkaWZmIGEvZHJpdmVycy9uZXQv bmZwL25mcF9ldGhkZXYuYyBiL2RyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmMJKHJlamVjdGVk IGh1bmtzKQpAQCAtMzgsMjggKzM4LDYgQEAKICNpbmNsdWRlICJuZnBfY3RybC5oIgogI2luY2x1 ZGUgIm5mcF9jcHBfYnJpZGdlLmgiCiAKLQotc3RhdGljIGludCBuZnBfbmV0X3BmX3JlYWRfbWFj KHN0cnVjdCBuZnBfcGZfZGV2ICpwZl9kZXYsIGludCBwb3J0KTsKLXN0YXRpYyBpbnQgbmZwX25l dF9zdGFydChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7Ci1zdGF0aWMgaW50IG5mcF9uZXRfc3Rv cChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7Ci1zdGF0aWMgaW50IG5mcF9uZXRfc2V0X2xpbmtf dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwotc3RhdGljIGludCBuZnBfbmV0X3NldF9saW5r X2Rvd24oc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwotc3RhdGljIGludCBuZnBfbmV0X2Nsb3Nl KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKLXN0YXRpYyBpbnQgbmZwX25ldF9pbml0KHN0cnVj dCBydGVfZXRoX2RldiAqZXRoX2Rldik7Ci1zdGF0aWMgaW50IG5mcF9md191cGxvYWQoc3RydWN0 IHJ0ZV9wY2lfZGV2aWNlICpkZXYsCi0JCQkgc3RydWN0IG5mcF9uc3AgKm5zcCwgY2hhciAqY2Fy ZCk7Ci1zdGF0aWMgaW50IG5mcF9md19zZXR1cChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKmRldiwK LQkJCXN0cnVjdCBuZnBfY3BwICpjcHAsCi0JCQlzdHJ1Y3QgbmZwX2V0aF90YWJsZSAqbmZwX2V0 aF90YWJsZSwKLQkJCXN0cnVjdCBuZnBfaHdpbmZvICpod2luZm8pOwotc3RhdGljIGludCBuZnBf aW5pdF9waHlwb3J0cyhzdHJ1Y3QgbmZwX3BmX2RldiAqcGZfZGV2KTsKLXN0YXRpYyBpbnQgbmZw X3BmX2luaXQoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2KTsKLXN0YXRpYyBpbnQgbmZw X3BmX3NlY29uZGFyeV9pbml0KHN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2Rldik7Ci1zdGF0 aWMgaW50IG5mcF9wZl9wY2lfcHJvYmUoc3RydWN0IHJ0ZV9wY2lfZHJpdmVyICpwY2lfZHJ2IF9f cnRlX3VudXNlZCwKLQkJCSAgICBzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKmRldik7Ci1zdGF0aWMg aW50IG5mcF9wY2lfdW5pbml0KHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2Rldik7Ci1zdGF0aWMg aW50IGV0aF9uZnBfcGNpX3JlbW92ZShzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpOwot CiBzdGF0aWMgaW50CiBuZnBfbmV0X3BmX3JlYWRfbWFjKHN0cnVjdCBuZnBfcGZfZGV2ICpwZl9k ZXYsIGludCBwb3J0KQogewpkaWZmIGEvZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYyBi L2RyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMjMs MTggKzIzLDYgQEAKICNpbmNsdWRlICJuZnBfbG9ncy5oIgogI2luY2x1ZGUgIm5mcF9jdHJsLmgi CiAKLXN0YXRpYyB2b2lkIG5mcF9uZXR2Zl9yZWFkX21hYyhzdHJ1Y3QgbmZwX25ldF9odyAqaHcp Owotc3RhdGljIGludCBuZnBfbmV0dmZfc3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwot c3RhdGljIGludCBuZnBfbmV0dmZfc3RvcChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7Ci1zdGF0 aWMgaW50IG5mcF9uZXR2Zl9zZXRfbGlua191cChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7Ci1z dGF0aWMgaW50IG5mcF9uZXR2Zl9zZXRfbGlua19kb3duKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 KTsKLXN0YXRpYyBpbnQgbmZwX25ldHZmX2Nsb3NlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsK LXN0YXRpYyBpbnQgbmZwX25ldHZmX2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KTsK LXN0YXRpYyBpbnQgbmZwX3ZmX3BjaV91bmluaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2 KTsKLXN0YXRpYyBpbnQgZXRoX25mcF92Zl9wY2lfcHJvYmUoc3RydWN0IHJ0ZV9wY2lfZHJpdmVy ICpwY2lfZHJ2IF9fcnRlX3VudXNlZCwKLQlzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYp Owotc3RhdGljIGludCBldGhfbmZwX3ZmX3BjaV9yZW1vdmUoc3RydWN0IHJ0ZV9wY2lfZGV2aWNl ICpwY2lfZGV2KTsKLQogc3RhdGljIHZvaWQKIG5mcF9uZXR2Zl9yZWFkX21hYyhzdHJ1Y3QgbmZw X25ldF9odyAqaHcpCiB7CmRpZmYgYS9kcml2ZXJzL25ldC9uZnAvbmZwX3J4dHguYyBiL2RyaXZl cnMvbmV0L25mcC9uZnBfcnh0eC5jCShyZWplY3RlZCBodW5rcykKQEAgLTIxLDI3ICsyMSw2IEBA CiAjaW5jbHVkZSAibmZwX2xvZ3MuaCIKICNpbmNsdWRlICJuZnBfY3RybC5oIgogCi0vKiBQcm90 b3R5cGVzICovCi1zdGF0aWMgaW50IG5mcF9uZXRfcnhfZmlsbF9mcmVlbGlzdChzdHJ1Y3QgbmZw X25ldF9yeHEgKnJ4cSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgbmZwX25ldF9tYnVmX2FsbG9jX2Zh aWxlZChzdHJ1Y3QgbmZwX25ldF9yeHEgKnJ4cSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgbmZwX25l dF9zZXRfaGFzaChzdHJ1Y3QgbmZwX25ldF9yeHEgKnJ4cSwKLQkJCQkgICAgc3RydWN0IG5mcF9u ZXRfcnhfZGVzYyAqcnhkLAotCQkJCSAgICBzdHJ1Y3QgcnRlX21idWYgKm1idWYpOwotc3RhdGlj IGlubGluZSB2b2lkIG5mcF9uZXRfcnhfY2tzdW0oc3RydWN0IG5mcF9uZXRfcnhxICpyeHEsCi0J CQkJICAgIHN0cnVjdCBuZnBfbmV0X3J4X2Rlc2MgKnJ4ZCwKLQkJCQkgICAgc3RydWN0IHJ0ZV9t YnVmICptYik7Ci1zdGF0aWMgdm9pZCBuZnBfbmV0X3J4X3F1ZXVlX3JlbGVhc2VfbWJ1ZnMoc3Ry dWN0IG5mcF9uZXRfcnhxICpyeHEpOwotc3RhdGljIGludCBuZnBfbmV0X3R4X2ZyZWVfYnVmcyhz dHJ1Y3QgbmZwX25ldF90eHEgKnR4cSk7Ci1zdGF0aWMgdm9pZCBuZnBfbmV0X3R4X3F1ZXVlX3Jl bGVhc2VfbWJ1ZnMoc3RydWN0IG5mcF9uZXRfdHhxICp0eHEpOwotc3RhdGljIGlubGluZSB1aW50 MzJfdCBuZnBfZnJlZV90eF9kZXNjKHN0cnVjdCBuZnBfbmV0X3R4cSAqdHhxKTsKLXN0YXRpYyBp bmxpbmUgdWludDMyX3QgbmZwX25ldF90eHFfZnVsbChzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cSk7 Ci1zdGF0aWMgaW5saW5lIHZvaWQgbmZwX25ldF90eF90c28oc3RydWN0IG5mcF9uZXRfdHhxICp0 eHEsCi0JCQkJICBzdHJ1Y3QgbmZwX25ldF90eF9kZXNjICp0eGQsCi0JCQkJICBzdHJ1Y3QgcnRl X21idWYgKm1iKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBuZnBfbmV0X3R4X2Nrc3VtKHN0cnVjdCBu ZnBfbmV0X3R4cSAqdHhxLAotCQkJCSAgICBzdHJ1Y3QgbmZwX25ldF90eF9kZXNjICp0eGQsCi0J CQkJICAgIHN0cnVjdCBydGVfbWJ1ZiAqbWIpOwotCiBzdGF0aWMgaW50CiBuZnBfbmV0X3J4X2Zp bGxfZnJlZWxpc3Qoc3RydWN0IG5mcF9uZXRfcnhxICpyeHEpCiB7CkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 Ci8qIFRoZSBvZmZzZXQgb2YgdGhlIHF1ZXVlIGNvbnRyb2xsZXIgcXVldWVzIGluIHRoZSBQQ0ll IFRhcmdldCAqLwojZGVmaW5lIE5GUF9QQ0lFX1FVRVVFKF9xKSAoMHg4MDAwMCArIChORlBfUUNQ X1FVRVVFX0FERFJfU1ogKiAoKF9xKSAmIDB4ZmYpKSkKCi8qIE1heGltdW0gdmFsdWUgd2hpY2gg Y2FuIGJlIGFkZGVkIHRvIGEgcXVldWUgd2l0aCBvbmUgdHJhbnNhY3Rpb24gKi8KI2RlZmluZSBO RlBfUUNQX01BWF9BREQJMHg3ZgoKLyogSW50ZXJydXB0IGRlZmluaXRpb25zICovCiNkZWZpbmUg TkZQX05FVF9JUlFfTFNDX0lEWCAgICAgICAgICAgICAwCgoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24uaDo0NAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKICogQHE6IEJhc2UgYWRkcmVzcyBmb3IgcXVldWUgc3RydWN0dXJlCiAqIEBwdHI6IEFkZCB0 byB0aGUgUmVhZCBvciBXcml0ZSBwb2ludGVyCiAqIEB2YWw6IFZhbHVlIHRvIGFkZCB0byB0aGUg cXVldWUgcG9pbnRlcgogKgogKiBJZiBAdmFsIGlzIGdyZWF0ZXIgdGhhbiBATkZQX1FDUF9NQVhf QUREIG11bHRpcGxlIHdyaXRlcyBhcmUgcGVyZm9ybWVkLgogKi8Kc3RhdGljIGlubGluZSB2b2lk Cm5mcF9xY3BfcHRyX2FkZCh1aW50OF90ICpxLCBlbnVtIG5mcF9xY3BfcHRyIHB0ciwgdWludDMy X3QgdmFsKQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24u aDozMDcKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgllbHNlCgkJb2ZmID0gTkZQX1FDUF9R VUVVRV9BRERfV1BUUjsKCgl3aGlsZSAodmFsID4gTkZQX1FDUF9NQVhfQUREKSB7CgkJbm5fd3Jp dGVsKHJ0ZV9jcHVfdG9fbGVfMzIoTkZQX1FDUF9NQVhfQUREKSwgcSArIG9mZik7CgkJdmFsIC09 IE5GUF9RQ1BfTUFYX0FERDsKfQoKbm5fd3JpdGVsKHJ0ZV9jcHVfdG9fbGVfMzIodmFsKSwgcSAr IG9mZik7Cn0KCi8qCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2Nv bW1vbi5oOjMyMApBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5oIHdp dGggMyByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuClJlamVj dGVkIGh1bmsgIzMuCmRpZmYgYS9kcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5oIGIvZHJpdmVy cy9uZXQvbmZwL25mcF9jb21tb24uaAkocmVqZWN0ZWQgaHVua3MpCkBAIC00NCw5ICs0NCw2IEBA IHN0cnVjdCBuZnBfbmV0X2FkYXB0ZXI7CiAvKiBUaGUgb2Zmc2V0IG9mIHRoZSBxdWV1ZSBjb250 cm9sbGVyIHF1ZXVlcyBpbiB0aGUgUENJZSBUYXJnZXQgKi8KICNkZWZpbmUgTkZQX1BDSUVfUVVF VUUoX3EpICgweDgwMDAwICsgKE5GUF9RQ1BfUVVFVUVfQUREUl9TWiAqICgoX3EpICYgMHhmZikp KQogCi0vKiBNYXhpbXVtIHZhbHVlIHdoaWNoIGNhbiBiZSBhZGRlZCB0byBhIHF1ZXVlIHdpdGgg b25lIHRyYW5zYWN0aW9uICovCi0jZGVmaW5lIE5GUF9RQ1BfTUFYX0FERAkweDdmCi0KIC8qIElu dGVycnVwdCBkZWZpbml0aW9ucyAqLwogI2RlZmluZSBORlBfTkVUX0lSUV9MU0NfSURYICAgICAg ICAgICAgIDAKIApAQCAtMzA3LDggKzMwNCw2IEBAIG5uX2NmZ193cml0ZXEoc3RydWN0IG5mcF9u ZXRfaHcgKmh3LCBpbnQgb2ZmLCB1aW50NjRfdCB2YWwpCiAgKiBAcTogQmFzZSBhZGRyZXNzIGZv ciBxdWV1ZSBzdHJ1Y3R1cmUKICAqIEBwdHI6IEFkZCB0byB0aGUgUmVhZCBvciBXcml0ZSBwb2lu dGVyCiAgKiBAdmFsOiBWYWx1ZSB0byBhZGQgdG8gdGhlIHF1ZXVlIHBvaW50ZXIKLSAqCi0gKiBJ ZiBAdmFsIGlzIGdyZWF0ZXIgdGhhbiBATkZQX1FDUF9NQVhfQUREIG11bHRpcGxlIHdyaXRlcyBh cmUgcGVyZm9ybWVkLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKIG5mcF9xY3BfcHRyX2FkZCh1 aW50OF90ICpxLCBlbnVtIG5mcF9xY3BfcHRyIHB0ciwgdWludDMyX3QgdmFsKQpAQCAtMzIwLDEy ICszMTUsNyBAQCBuZnBfcWNwX3B0cl9hZGQodWludDhfdCAqcSwgZW51bSBuZnBfcWNwX3B0ciBw dHIsIHVpbnQzMl90IHZhbCkKIAllbHNlCiAJCW9mZiA9IE5GUF9RQ1BfUVVFVUVfQUREX1dQVFI7 CiAKLQl3aGlsZSAodmFsID4gTkZQX1FDUF9NQVhfQUREKSB7Ci0JCW5uX3dyaXRlbChydGVfY3B1 X3RvX2xlXzMyKE5GUF9RQ1BfTUFYX0FERCksIHEgKyBvZmYpOwotCQl2YWwgLT0gTkZQX1FDUF9N QVhfQUREOwotfQotCi1ubl93cml0ZWwocnRlX2NwdV90b19sZV8zMih2YWwpLCBxICsgb2ZmKTsK Kwlubl93cml0ZWwocnRlX2NwdV90b19sZV8zMih2YWwpLCBxICsgb2ZmKTsKIH0KIAogLyoKQ2hl Y2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24uYy4uLgplcnJvcjogd2hpbGUg c2VhcmNoaW5nIGZvcjoKfQoKaW50Cm5mcF9zZXRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsIHN0cnVjdCBydGVfZXRoZXJfYWRkciAqbWFjX2FkZHIpCnsKCXN0cnVjdCBuZnBfbmV0 X2h3ICpodzsKCXVpbnQzMl90IHVwZGF0ZSwgY3RybDsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmM6Mjc0CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L25mcC9uZnBfY29tbW9uLmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnZvaWQgbmZw X25ldF9wYXJhbXNfc2V0dXAoc3RydWN0IG5mcF9uZXRfaHcgKmh3KTsKdm9pZCBuZnBfZXRoX2Nv cHlfbWFjKHVpbnQ4X3QgKmRzdCwgY29uc3QgdWludDhfdCAqc3JjKTsKdm9pZCBuZnBfbmV0X3dy aXRlX21hYyhzdHJ1Y3QgbmZwX25ldF9odyAqaHcsIHVpbnQ4X3QgKm1hYyk7CmludCBuZnBfc2V0 X21hY19hZGRyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIg Km1hY19hZGRyKTsKaW50IG5mcF9jb25maWd1cmVfcnhfaW50ZXJydXB0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LAoJCQkgICAgICAgc3RydWN0IHJ0ZV9pbnRyX2hhbmRsZSAqaW50cl9oYW5kbGUp Owp1aW50MzJfdCBuZnBfY2hlY2tfb2ZmbG9hZHMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24uaDozNTAKQ2hl Y2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUg c2VhcmNoaW5nIGZvcjoKCS5kZXZfaW5mb3NfZ2V0CQk9IG5mcF9uZXRfaW5mb3NfZ2V0LAoJLmRl dl9zdXBwb3J0ZWRfcHR5cGVzX2dldCA9IG5mcF9uZXRfc3VwcG9ydGVkX3B0eXBlc19nZXQsCgku bXR1X3NldAkJPSBuZnBfbmV0X2Rldl9tdHVfc2V0LAoJLm1hY19hZGRyX3NldCAgICAgICAgICAg PSBuZnBfc2V0X21hY19hZGRyLAoJLnZsYW5fb2ZmbG9hZF9zZXQJPSBuZnBfbmV0X3ZsYW5fb2Zm bG9hZF9zZXQsCgkucmV0YV91cGRhdGUJCT0gbmZwX25ldF9yZXRhX3VwZGF0ZSwKCS5yZXRhX3F1 ZXJ5CQk9IG5mcF9uZXRfcmV0YV9xdWVyeSwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L25mcC9uZnBfZXRoZGV2LmM6MzQ0CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9u ZnBfZXRoZGV2X3ZmLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkuZGV2X2luZm9z X2dldAkJPSBuZnBfbmV0X2luZm9zX2dldCwKCS5kZXZfc3VwcG9ydGVkX3B0eXBlc19nZXQgPSBu ZnBfbmV0X3N1cHBvcnRlZF9wdHlwZXNfZ2V0LAoJLm10dV9zZXQJCT0gbmZwX25ldF9kZXZfbXR1 X3NldCwKCS5tYWNfYWRkcl9zZXQgICAgICAgICAgID0gbmZwX3NldF9tYWNfYWRkciwKCS52bGFu X29mZmxvYWRfc2V0CT0gbmZwX25ldF92bGFuX29mZmxvYWRfc2V0LAoJLnJldGFfdXBkYXRlCQk9 IG5mcF9uZXRfcmV0YV91cGRhdGUsCgkucmV0YV9xdWVyeQkJPSBuZnBfbmV0X3JldGFfcXVlcnks CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5jOjI1 MQpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5jIHdpdGggMSByZWpl Y3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25m cF9jb21tb24uaCB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCkFwcGx5aW5nIHBh dGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmMgd2l0aCAxIHJlamVjdC4uLgpSZWplY3Rl ZCBodW5rICMxLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5j IHdpdGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KZGlmZiBhL2RyaXZlcnMvbmV0L25m cC9uZnBfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5jCShyZWplY3RlZCBo dW5rcykKQEAgLTI3NCw3ICsyNzQsNyBAQCBuZnBfbmV0X3dyaXRlX21hYyhzdHJ1Y3QgbmZwX25l dF9odyAqaHcsIHVpbnQ4X3QgKm1hYykKIH0KIAogaW50Ci1uZnBfc2V0X21hY19hZGRyKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKm1hY19hZGRyKQorbmZw X25ldF9zZXRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBydGVfZXRo ZXJfYWRkciAqbWFjX2FkZHIpCiB7CiAJc3RydWN0IG5mcF9uZXRfaHcgKmh3OwogCXVpbnQzMl90 IHVwZGF0ZSwgY3RybDsKZGlmZiBhL2RyaXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmggYi9kcml2 ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5oCShyZWplY3RlZCBodW5rcykKQEAgLTM1MCw3ICszNTAs NyBAQCB2b2lkIG5mcF9uZXRfZGlzYWJsZV9xdWV1ZXMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYp Owogdm9pZCBuZnBfbmV0X3BhcmFtc19zZXR1cChzdHJ1Y3QgbmZwX25ldF9odyAqaHcpOwogdm9p ZCBuZnBfZXRoX2NvcHlfbWFjKHVpbnQ4X3QgKmRzdCwgY29uc3QgdWludDhfdCAqc3JjKTsKIHZv aWQgbmZwX25ldF93cml0ZV9tYWMoc3RydWN0IG5mcF9uZXRfaHcgKmh3LCB1aW50OF90ICptYWMp OwotaW50IG5mcF9zZXRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBy dGVfZXRoZXJfYWRkciAqbWFjX2FkZHIpOworaW50IG5mcF9uZXRfc2V0X21hY19hZGRyKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKm1hY19hZGRyKTsKIGlu dCBuZnBfY29uZmlndXJlX3J4X2ludGVycnVwdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKIAkJ CSAgICAgICBzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlICppbnRyX2hhbmRsZSk7CiB1aW50MzJfdCBu ZnBfY2hlY2tfb2ZmbG9hZHMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwpkaWZmIGEvZHJpdmVy cy9uZXQvbmZwL25mcF9ldGhkZXYuYyBiL2RyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmMJKHJl amVjdGVkIGh1bmtzKQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRo X2Rldl9vcHMgbmZwX25ldF9ldGhfZGV2X29wcyA9IHsKIAkuZGV2X2luZm9zX2dldAkJPSBuZnBf bmV0X2luZm9zX2dldCwKIAkuZGV2X3N1cHBvcnRlZF9wdHlwZXNfZ2V0ID0gbmZwX25ldF9zdXBw b3J0ZWRfcHR5cGVzX2dldCwKIAkubXR1X3NldAkJPSBuZnBfbmV0X2Rldl9tdHVfc2V0LAotCS5t YWNfYWRkcl9zZXQgICAgICAgICAgID0gbmZwX3NldF9tYWNfYWRkciwKKwkubWFjX2FkZHJfc2V0 CQk9IG5mcF9uZXRfc2V0X21hY19hZGRyLAogCS52bGFuX29mZmxvYWRfc2V0CT0gbmZwX25ldF92 bGFuX29mZmxvYWRfc2V0LAogCS5yZXRhX3VwZGF0ZQkJPSBuZnBfbmV0X3JldGFfdXBkYXRlLAog CS5yZXRhX3F1ZXJ5CQk9IG5mcF9uZXRfcmV0YV9xdWVyeSwKZGlmZiBhL2RyaXZlcnMvbmV0L25m cC9uZnBfZXRoZGV2X3ZmLmMgYi9kcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5jCShyZWpl Y3RlZCBodW5rcykKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aF9k ZXZfb3BzIG5mcF9uZXR2Zl9ldGhfZGV2X29wcyA9IHsKIAkuZGV2X2luZm9zX2dldAkJPSBuZnBf bmV0X2luZm9zX2dldCwKIAkuZGV2X3N1cHBvcnRlZF9wdHlwZXNfZ2V0ID0gbmZwX25ldF9zdXBw b3J0ZWRfcHR5cGVzX2dldCwKIAkubXR1X3NldAkJPSBuZnBfbmV0X2Rldl9tdHVfc2V0LAotCS5t YWNfYWRkcl9zZXQgICAgICAgICAgID0gbmZwX3NldF9tYWNfYWRkciwKKwkubWFjX2FkZHJfc2V0 CQk9IG5mcF9uZXRfc2V0X21hY19hZGRyLAogCS52bGFuX29mZmxvYWRfc2V0CT0gbmZwX25ldF92 bGFuX29mZmxvYWRfc2V0LAogCS5yZXRhX3VwZGF0ZQkJPSBuZnBfbmV0X3JldGFfdXBkYXRlLAog CS5yZXRhX3F1ZXJ5CQk9IG5mcF9uZXRfcmV0YV9xdWVyeSwKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9uZXQvbmZwL25mcF9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfQoK LyogSW5pdGlhbGlzZSBhbmQgcmVnaXN0ZXIgZHJpdmVyIHdpdGggRFBESyBBcHBsaWNhdGlvbiAq LwpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzIG5mcF9uZXRfZXRoX2Rldl9vcHMgPSB7 CgkuZGV2X2NvbmZpZ3VyZQkJPSBuZnBfbmV0X2NvbmZpZ3VyZSwKCS5kZXZfc3RhcnQJCT0gbmZw X25ldF9zdGFydCwKCS5kZXZfc3RvcAkJPSBuZnBfbmV0X3N0b3AsCgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjMyOQplcnJvcjogd2hpbGUgc2VhcmNo aW5nIGZvcjoKCS5yc3NfaGFzaF9jb25mX2dldAk9IG5mcF9uZXRfcnNzX2hhc2hfY29uZl9nZXQs CgkucnhfcXVldWVfc2V0dXAJCT0gbmZwX25ldF9yeF9xdWV1ZV9zZXR1cCwKCS5yeF9xdWV1ZV9y ZWxlYXNlCT0gbmZwX25ldF9yeF9xdWV1ZV9yZWxlYXNlLAoJLnR4X3F1ZXVlX3NldHVwCQk9IG5m cF9uZXRfdHhfcXVldWVfc2V0dXAsCgkudHhfcXVldWVfcmVsZWFzZQk9IG5mcF9uZXRfdHhfcXVl dWVfcmVsZWFzZSwKCS5yeF9xdWV1ZV9pbnRyX2VuYWJsZSAgID0gbmZwX3J4X3F1ZXVlX2ludHJf ZW5hYmxlLAoJLnJ4X3F1ZXVlX2ludHJfZGlzYWJsZSAgPSBuZnBfcnhfcXVldWVfaW50cl9kaXNh YmxlLAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYzoz NTIKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglQTURfSU5JVF9MT0coREVCVUcsICJXb3Jr aW5nIHdpdGggcGh5c2ljYWwgcG9ydCBudW1iZXI6ICVkLCAiCgkJCSJORlAgaW50ZXJuYWwgcG9y dCBudW1iZXI6ICVkIiwgcG9ydCwgaHctPm5mcF9pZHgpOwoKCWV0aF9kZXYtPmRldl9vcHMgPSAm bmZwX25ldF9ldGhfZGV2X29wczsKCWV0aF9kZXYtPnJ4X3F1ZXVlX2NvdW50ID0gbmZwX25ldF9y eF9xdWV1ZV9jb3VudDsKCWV0aF9kZXYtPnJ4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3JlY3ZfcGt0 czsKCWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3htaXRfcGt0czsKCgkvKiBGb3Ig c2Vjb25kYXJ5IHByb2Nlc3NlcywgdGhlIHByaW1hcnkgaGFzIGRvbmUgYWxsIHRoZSB3b3JrICov CglpZiAocnRlX2VhbF9wcm9jZXNzX3R5cGUoKSAhPSBSVEVfUFJPQ19QUklNQVJZKQoKZXJyb3I6 IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYzo0MDIKZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CgkJCXJldHVybiAtRU5PREVWOwoJCX0KCQlldGhfZGV2LT5wcm9j ZXNzX3ByaXZhdGUgPSBjcHA7CgkJZXRoX2Rldi0+ZGV2X29wcyA9ICZuZnBfbmV0X2V0aF9kZXZf b3BzOwoJCWV0aF9kZXYtPnJ4X3F1ZXVlX2NvdW50ID0gbmZwX25ldF9yeF9xdWV1ZV9jb3VudDsK CQlldGhfZGV2LT5yeF9wa3RfYnVyc3QgPSAmbmZwX25ldF9yZWN2X3BrdHM7CgkJZXRoX2Rldi0+ dHhfcGt0X2J1cnN0ID0gJm5mcF9uZXRfeG1pdF9wa3RzOwoJCXJ0ZV9ldGhfZGV2X3Byb2Jpbmdf ZmluaXNoKGV0aF9kZXYpOwoJfQoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25m cC9uZnBfZXRoZGV2LmM6OTcxCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfZXRo ZGV2X3ZmLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Cn0KCi8qIEluaXRpYWxpc2Ug YW5kIHJlZ2lzdGVyIFZGIGRyaXZlciB3aXRoIERQREsgQXBwbGljYXRpb24gKi8Kc3RhdGljIGNv bnN0IHN0cnVjdCBldGhfZGV2X29wcyBuZnBfbmV0dmZfZXRoX2Rldl9vcHMgPSB7CgkuZGV2X2Nv bmZpZ3VyZQkJPSBuZnBfbmV0X2NvbmZpZ3VyZSwKCS5kZXZfc3RhcnQJCT0gbmZwX25ldHZmX3N0 YXJ0LAoJLmRldl9zdG9wCQk9IG5mcF9uZXR2Zl9zdG9wLAoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYzoyMzYKZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CgkucnNzX2hhc2hfY29uZl9nZXQJPSBuZnBfbmV0X3Jzc19oYXNoX2NvbmZfZ2V0LAoJ LnJ4X3F1ZXVlX3NldHVwCQk9IG5mcF9uZXRfcnhfcXVldWVfc2V0dXAsCgkucnhfcXVldWVfcmVs ZWFzZQk9IG5mcF9uZXRfcnhfcXVldWVfcmVsZWFzZSwKCS50eF9xdWV1ZV9zZXR1cAkJPSBuZnBf bmV0X3R4X3F1ZXVlX3NldHVwLAoJLnR4X3F1ZXVlX3JlbGVhc2UJPSBuZnBfbmV0X3R4X3F1ZXVl X3JlbGVhc2UsCgkucnhfcXVldWVfaW50cl9lbmFibGUgICA9IG5mcF9yeF9xdWV1ZV9pbnRyX2Vu YWJsZSwKCS5yeF9xdWV1ZV9pbnRyX2Rpc2FibGUgID0gbmZwX3J4X3F1ZXVlX2ludHJfZGlzYWJs ZSwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmM6 MjU5CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCWh3ID0gTkZQX05FVF9ERVZfUFJJVkFU RV9UT19IVyhldGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7CgoJZXRoX2Rldi0+ZGV2X29wcyA9 ICZuZnBfbmV0dmZfZXRoX2Rldl9vcHM7CglldGhfZGV2LT5yeF9xdWV1ZV9jb3VudCA9IG5mcF9u ZXRfcnhfcXVldWVfY291bnQ7CglldGhfZGV2LT5yeF9wa3RfYnVyc3QgPSAmbmZwX25ldF9yZWN2 X3BrdHM7CglldGhfZGV2LT50eF9wa3RfYnVyc3QgPSAmbmZwX25ldF94bWl0X3BrdHM7CgoJLyog Rm9yIHNlY29uZGFyeSBwcm9jZXNzZXMsIHRoZSBwcmltYXJ5IGhhcyBkb25lIGFsbCB0aGUgd29y ayAqLwoJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgIT0gUlRFX1BST0NfUFJJTUFSWSkKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmM6MjkyCkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5jLi4uCmVycm9yOiB3aGlsZSBz ZWFyY2hpbmcgZm9yOgp9CgppbnQKbmZwX25ldF90eF9xdWV1ZV9zZXR1cChzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWR4LAoJCSAgICAgICB1aW50MTZfdCBuYl9kZXNj LCB1bnNpZ25lZCBpbnQgc29ja2V0X2lkLAoJCSAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2V0aF90 eGNvbmYgKnR4X2NvbmYpCnsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9u ZnBfcnh0eC5jOjY1NQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCVBNRF9JTklUX0ZVTkNf VFJBQ0UoKTsKCgkvKiBWYWxpZGF0aW5nIG51bWJlciBvZiBkZXNjcmlwdG9ycyAqLwoJdHhfZGVz Y19zeiA9IG5iX2Rlc2MgKiBzaXplb2Yoc3RydWN0IG5mcF9uZXRfdHhfZGVzYyk7CglpZiAodHhf ZGVzY19zeiAlIE5GUF9BTElHTl9SSU5HX0RFU0MgIT0gMCB8fAoJICAgIG5iX2Rlc2MgPiBORlBf TkVUX01BWF9UWF9ERVNDIHx8CgkgICAgbmJfZGVzYyA8IE5GUF9ORVRfTUlOX1RYX0RFU0MpIHsK CmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5jOjY3MAplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCSAqIHJlc2l6aW5nIGluIGxhdGVyIGNhbGxzIHRvIHRo ZSBxdWV1ZSBzZXR1cCBmdW5jdGlvbi4KCSAqLwoJdHogPSBydGVfZXRoX2RtYV96b25lX3Jlc2Vy dmUoZGV2LCAidHhfcmluZyIsIHF1ZXVlX2lkeCwKCQkJCSAgIHNpemVvZihzdHJ1Y3QgbmZwX25l dF90eF9kZXNjKSAqCgkJCQkgICBORlBfTkVUX01BWF9UWF9ERVNDLCBORlBfTUVNWk9ORV9BTElH TiwKCQkJCSAgIHNvY2tldF9pZCk7CglpZiAodHogPT0gTlVMTCkgewoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmM6NzE4CmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgoKCS8qIFNhdmluZyBwaHlzaWNhbCBhbmQgdmlydHVhbCBhZGRyZXNzZXMgZm9yIHRo ZSBUWCByaW5nICovCgl0eHEtPmRtYSA9ICh1aW50NjRfdCl0ei0+aW92YTsKCXR4cS0+dHhkcyA9 IChzdHJ1Y3QgbmZwX25ldF90eF9kZXNjICopdHotPmFkZHI7CgoJLyogbWJ1ZiBwb2ludGVycyBh cnJheSBmb3IgcmVmZXJlbmNpbmcgbWJ1ZnMgbGlua2VkIHRvIFRYIGRlc2NyaXB0b3JzICovCgl0 eHEtPnR4YnVmcyA9IHJ0ZV96bWFsbG9jX3NvY2tldCgidHhxLT50eGJ1ZnMiLAoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmM6NzQzCmVycm9yOiB3aGlsZSBz ZWFyY2hpbmcgZm9yOgoKLyogTGVhdmluZyBhbHdheXMgZnJlZSBkZXNjcmlwdG9ycyBmb3IgYXZv aWRpbmcgd3JhcHBpbmcgY29uZnVzaW9uICovCnN0YXRpYyBpbmxpbmUKdWludDMyX3QgbmZwX2Zy ZWVfdHhfZGVzYyhzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cSkKewoJaWYgKHR4cS0+d3JfcCA+PSB0 eHEtPnJkX3ApCgkJcmV0dXJuIHR4cS0+dHhfY291bnQgLSAodHhxLT53cl9wIC0gdHhxLT5yZF9w KSAtIDg7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX3J4dHguYzo3 NzMKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUg aG9zdCBjb3B5KiBvZiByZWFkL3dyaXRlIHBvaW50ZXJzCiAqLwpzdGF0aWMgaW5saW5lCnVpbnQz Ml90IG5mcF9uZXRfdHhxX2Z1bGwoc3RydWN0IG5mcF9uZXRfdHhxICp0eHEpCnsKCXJldHVybiAo bmZwX2ZyZWVfdHhfZGVzYyh0eHEpIDwgdHhxLT50eF9mcmVlX3RocmVzaCk7Cn0KCi8qIG5mcF9u ZXRfdHhfdHNvIC0gU2V0IFRYIGRlc2NyaXB0b3IgZm9yIFRTTyAqLwpzdGF0aWMgaW5saW5lIHZv aWQKbmZwX25ldF90eF90c28oc3RydWN0IG5mcF9uZXRfdHhxICp0eHEsIHN0cnVjdCBuZnBfbmV0 X3R4X2Rlc2MgKnR4ZCwKCSAgICAgICBzdHJ1Y3QgcnRlX21idWYgKm1iKQp7Cgl1aW50NjRfdCBv bF9mbGFnczsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5j Ojc5MAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCi8qIG5mcF9uZXRfdHhfY2tzdW0gLSBT ZXQgVFggQ1NVTSBvZmZsb2FkIGZsYWdzIGluIFRYIGRlc2NyaXB0b3IgKi8Kc3RhdGljIGlubGlu ZSB2b2lkCm5mcF9uZXRfdHhfY2tzdW0oc3RydWN0IG5mcF9uZXRfdHhxICp0eHEsIHN0cnVjdCBu ZnBfbmV0X3R4X2Rlc2MgKnR4ZCwKCQkgc3RydWN0IHJ0ZV9tYnVmICptYikKewoJdWludDY0X3Qg b2xfZmxhZ3M7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX3J4dHgu Yzo4MjgKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Cn0KCnVpbnQxNl90Cm5mcF9uZXRfeG1p dF9wa3RzKHZvaWQgKnR4X3F1ZXVlLCBzdHJ1Y3QgcnRlX21idWYgKip0eF9wa3RzLCB1aW50MTZf dCBuYl9wa3RzKQp7CglzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cTsKCXN0cnVjdCBuZnBfbmV0X2h3 ICpodzsKCXN0cnVjdCBuZnBfbmV0X3R4X2Rlc2MgKnR4ZHMsIHR4ZDsKCXN0cnVjdCBydGVfbWJ1 ZiAqcGt0OwoJdWludDY0X3QgZG1hX2FkZHI7CglpbnQgcGt0X3NpemUsIGRtYV9zaXplOwoKZXJy b3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmM6ODU3CmVycm9yOiB3 aGlsZSBzZWFyY2hpbmcgZm9yOgoJUE1EX1RYX0xPRyhERUJVRywgIndvcmtpbmcgZm9yIHF1ZXVl ICV1IGF0IHBvcyAlZCBhbmQgJXUgcGFja2V0cyIsCgkJICAgdHhxLT5xaWR4LCB0eHEtPndyX3As IG5iX3BrdHMpOwoKCWlmICgobmZwX2ZyZWVfdHhfZGVzYyh0eHEpIDwgbmJfcGt0cykgfHwgKG5m cF9uZXRfdHhxX2Z1bGwodHhxKSkpCgkJbmZwX25ldF90eF9mcmVlX2J1ZnModHhxKTsKCglmcmVl X2Rlc2NzID0gKHVpbnQxNl90KW5mcF9mcmVlX3R4X2Rlc2ModHhxKTsKCWlmICh1bmxpa2VseShm cmVlX2Rlc2NzID09IDApKQoJCXJldHVybiAwOwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L25mcC9uZnBfcnh0eC5jOjg3NgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkg KiBtdWx0aXNlZ21lbnQgcGFja2V0LCBidXQgVFNPIGluZm8gbmVlZHMgdG8gYmUgaW4gYWxsIG9m IHRoZW0uCgkJICovCgkJdHhkLmRhdGFfbGVuID0gcGt0LT5wa3RfbGVuOwoJCW5mcF9uZXRfdHhf dHNvKHR4cSwgJnR4ZCwgcGt0KTsKCQluZnBfbmV0X3R4X2Nrc3VtKHR4cSwgJnR4ZCwgcGt0KTsK CgkJaWYgKChwa3QtPm9sX2ZsYWdzICYgUlRFX01CVUZfRl9UWF9WTEFOKSAmJgoJCSAgICAoaHct PmNhcCAmIE5GUF9ORVRfQ0ZHX0NUUkxfVFhWTEFOKSkgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmM6OTEzCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L25mcC9uZnBfcnh0eC5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojZGVmaW5lIFBD SUVfREVTQ19UWF9FTkNBUF9WWExBTiAgICAgICAgKDEgPDwgMSkKI2RlZmluZSBQQ0lFX0RFU0Nf VFhfRU5DQVBfR1JFICAgICAgICAgICgxIDw8IDApCgpzdHJ1Y3QgbmZwX25ldF90eF9kZXNjIHsK CXVuaW9uIHsKCQlzdHJ1Y3QgewoJCQl1aW50OF90IGRtYV9hZGRyX2hpOyAvKiBIaWdoIGJpdHMg b2YgaG9zdCBidWYgYWRkcmVzcyAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv bmZwL25mcF9yeHR4Lmg6NTMKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkgKiBvZiB0aGUg cXVldWUgYW5kIEBzaXplIGlzIHRoZSBzaXplIGluIGJ5dGVzIGZvciB0aGUgcXVldWUKCSAqIChu ZWVkZWQgZm9yIGZyZWUpCgkgKi8KCXN0cnVjdCBuZnBfbmV0X3R4X2Rlc2MgKnR4ZHM7CgoJLyoK CSAqIEF0IHRoaXMgcG9pbnQgNDggYnl0ZXMgaGF2ZSBiZWVuIHVzZWQgZm9yIGFsbCB0aGUgZmll bGRzIGluIHRoZQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4 Lmg6MTI0CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkJICBzdHJ1Y3QgcnRlX21lbXBv b2wgKm1wKTsKdm9pZCBuZnBfbmV0X3R4X3F1ZXVlX3JlbGVhc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsIHVpbnQxNl90IHF1ZXVlX2lkeCk7CnZvaWQgbmZwX25ldF9yZXNldF90eF9xdWV1ZShz dHJ1Y3QgbmZwX25ldF90eHEgKnR4cSk7CmludCBuZnBfbmV0X3R4X3F1ZXVlX3NldHVwKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZHgsCgkJCQkgIHVpbnQxNl90IG5i X2Rlc2MsIHVuc2lnbmVkIGludCBzb2NrZXRfaWQsCgkJCQkgIGNvbnN0IHN0cnVjdCBydGVfZXRo X3R4Y29uZiAqdHhfY29uZik7CnVpbnQxNl90IG5mcF9uZXRfeG1pdF9wa3RzKHZvaWQgKnR4X3F1 ZXVlLCBzdHJ1Y3QgcnRlX21idWYgKip0eF9wa3RzLAoJCQkJICB1aW50MTZfdCBuYl9wa3RzKTsK CiNlbmRpZiAvKiBfTkZQX1JYVFhfSF8gKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L25mcC9uZnBfcnh0eC5oOjI4NgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZw X2V0aGRldi5jIHdpdGggNCByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJlamVjdGVkIGh1 bmsgIzIuClJlamVjdGVkIGh1bmsgIzMuClJlamVjdGVkIGh1bmsgIzQuCkFwcGx5aW5nIHBhdGNo IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMgd2l0aCAzIHJlamVjdHMuLi4KUmVqZWN0 ZWQgaHVuayAjMS4KUmVqZWN0ZWQgaHVuayAjMi4KUmVqZWN0ZWQgaHVuayAjMy4KQXBwbHlpbmcg cGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmMgd2l0aCAxMCByZWplY3RzLi4uClJlamVj dGVkIGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuClJlamVjdGVkIGh1bmsgIzMuClJlamVjdGVk IGh1bmsgIzQuClJlamVjdGVkIGh1bmsgIzUuClJlamVjdGVkIGh1bmsgIzYuClJlamVjdGVkIGh1 bmsgIzcuClJlamVjdGVkIGh1bmsgIzguClJlamVjdGVkIGh1bmsgIzkuClJlamVjdGVkIGh1bmsg IzEwLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX3J4dHguaCB3aXRoIDMgcmVq ZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBodW5rICMyLgpSZWplY3RlZCBodW5r ICMzLgpkaWZmIGEvZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYyBiL2RyaXZlcnMvbmV0L25m cC9uZnBfZXRoZGV2LmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMzI5LDcgKzMyOSw3IEBAIG5mcF9u ZXRfY2xvc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiB9CiAKIC8qIEluaXRpYWxpc2UgYW5k IHJlZ2lzdGVyIGRyaXZlciB3aXRoIERQREsgQXBwbGljYXRpb24gKi8KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgZXRoX2Rldl9vcHMgbmZwX25ldF9ldGhfZGV2X29wcyA9IHsKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZXRoX2Rldl9vcHMgbmZwX25ldF9uZmQzX2V0aF9kZXZfb3BzID0gewogCS5kZXZfY29u ZmlndXJlCQk9IG5mcF9uZXRfY29uZmlndXJlLAogCS5kZXZfc3RhcnQJCT0gbmZwX25ldF9zdGFy dCwKIAkuZGV2X3N0b3AJCT0gbmZwX25ldF9zdG9wLApAQCAtMzUyLDcgKzM1Miw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgbmZwX25ldF9ldGhfZGV2X29wcyA9IHsKIAkucnNz X2hhc2hfY29uZl9nZXQJPSBuZnBfbmV0X3Jzc19oYXNoX2NvbmZfZ2V0LAogCS5yeF9xdWV1ZV9z ZXR1cAkJPSBuZnBfbmV0X3J4X3F1ZXVlX3NldHVwLAogCS5yeF9xdWV1ZV9yZWxlYXNlCT0gbmZw X25ldF9yeF9xdWV1ZV9yZWxlYXNlLAotCS50eF9xdWV1ZV9zZXR1cAkJPSBuZnBfbmV0X3R4X3F1 ZXVlX3NldHVwLAorCS50eF9xdWV1ZV9zZXR1cAkJPSBuZnBfbmV0X25mZDNfdHhfcXVldWVfc2V0 dXAsCiAJLnR4X3F1ZXVlX3JlbGVhc2UJPSBuZnBfbmV0X3R4X3F1ZXVlX3JlbGVhc2UsCiAJLnJ4 X3F1ZXVlX2ludHJfZW5hYmxlICAgPSBuZnBfcnhfcXVldWVfaW50cl9lbmFibGUsCiAJLnJ4X3F1 ZXVlX2ludHJfZGlzYWJsZSAgPSBuZnBfcnhfcXVldWVfaW50cl9kaXNhYmxlLApAQCAtNDAyLDEw ICs0MDIsMTAgQEAgbmZwX25ldF9pbml0KHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldikKIAlQ TURfSU5JVF9MT0coREVCVUcsICJXb3JraW5nIHdpdGggcGh5c2ljYWwgcG9ydCBudW1iZXI6ICVk LCAiCiAJCQkiTkZQIGludGVybmFsIHBvcnQgbnVtYmVyOiAlZCIsIHBvcnQsIGh3LT5uZnBfaWR4 KTsKIAotCWV0aF9kZXYtPmRldl9vcHMgPSAmbmZwX25ldF9ldGhfZGV2X29wczsKKwlldGhfZGV2 LT5kZXZfb3BzID0gJm5mcF9uZXRfbmZkM19ldGhfZGV2X29wczsKIAlldGhfZGV2LT5yeF9xdWV1 ZV9jb3VudCA9IG5mcF9uZXRfcnhfcXVldWVfY291bnQ7CiAJZXRoX2Rldi0+cnhfcGt0X2J1cnN0 ID0gJm5mcF9uZXRfcmVjdl9wa3RzOwotCWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9ICZuZnBfbmV0 X3htaXRfcGt0czsKKwlldGhfZGV2LT50eF9wa3RfYnVyc3QgPSAmbmZwX25ldF9uZmQzX3htaXRf cGt0czsKIAogCS8qIEZvciBzZWNvbmRhcnkgcHJvY2Vzc2VzLCB0aGUgcHJpbWFyeSBoYXMgZG9u ZSBhbGwgdGhlIHdvcmsgKi8KIAlpZiAocnRlX2VhbF9wcm9jZXNzX3R5cGUoKSAhPSBSVEVfUFJP Q19QUklNQVJZKQpAQCAtOTcxLDEwICs5NzEsMTAgQEAgbmZwX3BmX3NlY29uZGFyeV9pbml0KHN0 cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2RldikKIAkJCXJldHVybiAtRU5PREVWOwogCQl9CiAJ CWV0aF9kZXYtPnByb2Nlc3NfcHJpdmF0ZSA9IGNwcDsKLQkJZXRoX2Rldi0+ZGV2X29wcyA9ICZu ZnBfbmV0X2V0aF9kZXZfb3BzOworCQlldGhfZGV2LT5kZXZfb3BzID0gJm5mcF9uZXRfbmZkM19l dGhfZGV2X29wczsKIAkJZXRoX2Rldi0+cnhfcXVldWVfY291bnQgPSBuZnBfbmV0X3J4X3F1ZXVl X2NvdW50OwogCQlldGhfZGV2LT5yeF9wa3RfYnVyc3QgPSAmbmZwX25ldF9yZWN2X3BrdHM7Ci0J CWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3htaXRfcGt0czsKKwkJZXRoX2Rldi0+ dHhfcGt0X2J1cnN0ID0gJm5mcF9uZXRfbmZkM194bWl0X3BrdHM7CiAJCXJ0ZV9ldGhfZGV2X3By b2JpbmdfZmluaXNoKGV0aF9kZXYpOwogCX0KIApkaWZmIGEvZHJpdmVycy9uZXQvbmZwL25mcF9l dGhkZXZfdmYuYyBiL2RyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMJKHJlamVjdGVkIGh1 bmtzKQpAQCAtMjM2LDcgKzIzNiw3IEBAIG5mcF9uZXR2Zl9jbG9zZShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldikKIH0KIAogLyogSW5pdGlhbGlzZSBhbmQgcmVnaXN0ZXIgVkYgZHJpdmVyIHdpdGgg RFBESyBBcHBsaWNhdGlvbiAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29wcyBuZnBf bmV0dmZfZXRoX2Rldl9vcHMgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzIG5m cF9uZXR2Zl9uZmQzX2V0aF9kZXZfb3BzID0gewogCS5kZXZfY29uZmlndXJlCQk9IG5mcF9uZXRf Y29uZmlndXJlLAogCS5kZXZfc3RhcnQJCT0gbmZwX25ldHZmX3N0YXJ0LAogCS5kZXZfc3RvcAkJ PSBuZnBfbmV0dmZfc3RvcCwKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGV0aF9kZXZfb3BzIG5mcF9uZXR2Zl9ldGhfZGV2X29wcyA9IHsKIAkucnNzX2hhc2hfY29uZl9n ZXQJPSBuZnBfbmV0X3Jzc19oYXNoX2NvbmZfZ2V0LAogCS5yeF9xdWV1ZV9zZXR1cAkJPSBuZnBf bmV0X3J4X3F1ZXVlX3NldHVwLAogCS5yeF9xdWV1ZV9yZWxlYXNlCT0gbmZwX25ldF9yeF9xdWV1 ZV9yZWxlYXNlLAotCS50eF9xdWV1ZV9zZXR1cAkJPSBuZnBfbmV0X3R4X3F1ZXVlX3NldHVwLAor CS50eF9xdWV1ZV9zZXR1cAkJPSBuZnBfbmV0X25mZDNfdHhfcXVldWVfc2V0dXAsCiAJLnR4X3F1 ZXVlX3JlbGVhc2UJPSBuZnBfbmV0X3R4X3F1ZXVlX3JlbGVhc2UsCiAJLnJ4X3F1ZXVlX2ludHJf ZW5hYmxlICAgPSBuZnBfcnhfcXVldWVfaW50cl9lbmFibGUsCiAJLnJ4X3F1ZXVlX2ludHJfZGlz YWJsZSAgPSBuZnBfcnhfcXVldWVfaW50cl9kaXNhYmxlLApAQCAtMjkyLDEwICsyOTIsMTAgQEAg bmZwX25ldHZmX2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQogCiAJaHcgPSBORlBf TkVUX0RFVl9QUklWQVRFX1RPX0hXKGV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKIAotCWV0 aF9kZXYtPmRldl9vcHMgPSAmbmZwX25ldHZmX2V0aF9kZXZfb3BzOworCWV0aF9kZXYtPmRldl9v cHMgPSAmbmZwX25ldHZmX25mZDNfZXRoX2Rldl9vcHM7CiAJZXRoX2Rldi0+cnhfcXVldWVfY291 bnQgPSBuZnBfbmV0X3J4X3F1ZXVlX2NvdW50OwogCWV0aF9kZXYtPnJ4X3BrdF9idXJzdCA9ICZu ZnBfbmV0X3JlY3ZfcGt0czsKLQlldGhfZGV2LT50eF9wa3RfYnVyc3QgPSAmbmZwX25ldF94bWl0 X3BrdHM7CisJZXRoX2Rldi0+dHhfcGt0X2J1cnN0ID0gJm5mcF9uZXRfbmZkM194bWl0X3BrdHM7 CiAKIAkvKiBGb3Igc2Vjb25kYXJ5IHByb2Nlc3NlcywgdGhlIHByaW1hcnkgaGFzIGRvbmUgYWxs IHRoZSB3b3JrICovCiAJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgIT0gUlRFX1BST0NfUFJJ TUFSWSkKZGlmZiBhL2RyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5jIGIvZHJpdmVycy9uZXQvbmZw L25mcF9yeHR4LmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtNjU1LDcgKzY1NSw3IEBAIG5mcF9uZXRf cmVzZXRfdHhfcXVldWUoc3RydWN0IG5mcF9uZXRfdHhxICp0eHEpCiB9CiAKIGludAotbmZwX25l dF90eF9xdWV1ZV9zZXR1cChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVf aWR4LAorbmZwX25ldF9uZmQzX3R4X3F1ZXVlX3NldHVwKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LCB1aW50MTZfdCBxdWV1ZV9pZHgsCiAJCSAgICAgICB1aW50MTZfdCBuYl9kZXNjLCB1bnNpZ25l ZCBpbnQgc29ja2V0X2lkLAogCQkgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9ldGhfdHhjb25mICp0 eF9jb25mKQogewpAQCAtNjcwLDcgKzY3MCw3IEBAIG5mcF9uZXRfdHhfcXVldWVfc2V0dXAoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHF1ZXVlX2lkeCwKIAlQTURfSU5JVF9GVU5D X1RSQUNFKCk7CiAKIAkvKiBWYWxpZGF0aW5nIG51bWJlciBvZiBkZXNjcmlwdG9ycyAqLwotCXR4 X2Rlc2Nfc3ogPSBuYl9kZXNjICogc2l6ZW9mKHN0cnVjdCBuZnBfbmV0X3R4X2Rlc2MpOworCXR4 X2Rlc2Nfc3ogPSBuYl9kZXNjICogc2l6ZW9mKHN0cnVjdCBuZnBfbmV0X25mZDNfdHhfZGVzYyk7 CiAJaWYgKHR4X2Rlc2Nfc3ogJSBORlBfQUxJR05fUklOR19ERVNDICE9IDAgfHwKIAkgICAgbmJf ZGVzYyA+IE5GUF9ORVRfTUFYX1RYX0RFU0MgfHwKIAkgICAgbmJfZGVzYyA8IE5GUF9ORVRfTUlO X1RYX0RFU0MpIHsKQEAgLTcxOCw3ICs3MTgsNyBAQCBuZnBfbmV0X3R4X3F1ZXVlX3NldHVwKHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZHgsCiAJICogcmVzaXppbmcg aW4gbGF0ZXIgY2FsbHMgdG8gdGhlIHF1ZXVlIHNldHVwIGZ1bmN0aW9uLgogCSAqLwogCXR6ID0g cnRlX2V0aF9kbWFfem9uZV9yZXNlcnZlKGRldiwgInR4X3JpbmciLCBxdWV1ZV9pZHgsCi0JCQkJ ICAgc2l6ZW9mKHN0cnVjdCBuZnBfbmV0X3R4X2Rlc2MpICoKKwkJCQkgICBzaXplb2Yoc3RydWN0 IG5mcF9uZXRfbmZkM190eF9kZXNjKSAqCiAJCQkJICAgTkZQX05FVF9NQVhfVFhfREVTQywgTkZQ X01FTVpPTkVfQUxJR04sCiAJCQkJICAgc29ja2V0X2lkKTsKIAlpZiAodHogPT0gTlVMTCkgewpA QCAtNzQzLDcgKzc0Myw3IEBAIG5mcF9uZXRfdHhfcXVldWVfc2V0dXAoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsIHVpbnQxNl90IHF1ZXVlX2lkeCwKIAogCS8qIFNhdmluZyBwaHlzaWNhbCBhbmQg dmlydHVhbCBhZGRyZXNzZXMgZm9yIHRoZSBUWCByaW5nICovCiAJdHhxLT5kbWEgPSAodWludDY0 X3QpdHotPmlvdmE7Ci0JdHhxLT50eGRzID0gKHN0cnVjdCBuZnBfbmV0X3R4X2Rlc2MgKil0ei0+ YWRkcjsKKwl0eHEtPnR4ZHMgPSAoc3RydWN0IG5mcF9uZXRfbmZkM190eF9kZXNjICopdHotPmFk ZHI7CiAKIAkvKiBtYnVmIHBvaW50ZXJzIGFycmF5IGZvciByZWZlcmVuY2luZyBtYnVmcyBsaW5r ZWQgdG8gVFggZGVzY3JpcHRvcnMgKi8KIAl0eHEtPnR4YnVmcyA9IHJ0ZV96bWFsbG9jX3NvY2tl dCgidHhxLT50eGJ1ZnMiLApAQCAtNzczLDcgKzc3Myw3IEBAIG5mcF9uZXRfdHhfcXVldWVfc2V0 dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHF1ZXVlX2lkeCwKIAogLyogTGVh dmluZyBhbHdheXMgZnJlZSBkZXNjcmlwdG9ycyBmb3IgYXZvaWRpbmcgd3JhcHBpbmcgY29uZnVz aW9uICovCiBzdGF0aWMgaW5saW5lCi11aW50MzJfdCBuZnBfZnJlZV90eF9kZXNjKHN0cnVjdCBu ZnBfbmV0X3R4cSAqdHhxKQordWludDMyX3QgbmZwX25ldF9uZmQzX2ZyZWVfdHhfZGVzYyhzdHJ1 Y3QgbmZwX25ldF90eHEgKnR4cSkKIHsKIAlpZiAodHhxLT53cl9wID49IHR4cS0+cmRfcCkKIAkJ cmV0dXJuIHR4cS0+dHhfY291bnQgLSAodHhxLT53cl9wIC0gdHhxLT5yZF9wKSAtIDg7CkBAIC03 OTAsMTQgKzc5MCwxNCBAQCB1aW50MzJfdCBuZnBfZnJlZV90eF9kZXNjKHN0cnVjdCBuZnBfbmV0 X3R4cSAqdHhxKQogICogVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBob3N0IGNvcHkqIG9mIHJlYWQv d3JpdGUgcG9pbnRlcnMKICAqLwogc3RhdGljIGlubGluZQotdWludDMyX3QgbmZwX25ldF90eHFf ZnVsbChzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cSkKK3VpbnQzMl90IG5mcF9uZXRfbmZkM190eHFf ZnVsbChzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cSkKIHsKLQlyZXR1cm4gKG5mcF9mcmVlX3R4X2Rl c2ModHhxKSA8IHR4cS0+dHhfZnJlZV90aHJlc2gpOworCXJldHVybiAobmZwX25ldF9uZmQzX2Zy ZWVfdHhfZGVzYyh0eHEpIDwgdHhxLT50eF9mcmVlX3RocmVzaCk7CiB9CiAKIC8qIG5mcF9uZXRf dHhfdHNvIC0gU2V0IFRYIGRlc2NyaXB0b3IgZm9yIFRTTyAqLwogc3RhdGljIGlubGluZSB2b2lk Ci1uZnBfbmV0X3R4X3RzbyhzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cSwgc3RydWN0IG5mcF9uZXRf dHhfZGVzYyAqdHhkLAorbmZwX25ldF9uZmQzX3R4X3RzbyhzdHJ1Y3QgbmZwX25ldF90eHEgKnR4 cSwgc3RydWN0IG5mcF9uZXRfbmZkM190eF9kZXNjICp0eGQsCiAJICAgICAgIHN0cnVjdCBydGVf bWJ1ZiAqbWIpCiB7CiAJdWludDY0X3Qgb2xfZmxhZ3M7CkBAIC04MjgsNyArODI4LDcgQEAgbmZw X25ldF90eF90c28oc3RydWN0IG5mcF9uZXRfdHhxICp0eHEsIHN0cnVjdCBuZnBfbmV0X3R4X2Rl c2MgKnR4ZCwKIAogLyogbmZwX25ldF90eF9ja3N1bSAtIFNldCBUWCBDU1VNIG9mZmxvYWQgZmxh Z3MgaW4gVFggZGVzY3JpcHRvciAqLwogc3RhdGljIGlubGluZSB2b2lkCi1uZnBfbmV0X3R4X2Nr c3VtKHN0cnVjdCBuZnBfbmV0X3R4cSAqdHhxLCBzdHJ1Y3QgbmZwX25ldF90eF9kZXNjICp0eGQs CituZnBfbmV0X25mZDNfdHhfY2tzdW0oc3RydWN0IG5mcF9uZXRfdHhxICp0eHEsIHN0cnVjdCBu ZnBfbmV0X25mZDNfdHhfZGVzYyAqdHhkLAogCQkgc3RydWN0IHJ0ZV9tYnVmICptYikKIHsKIAl1 aW50NjRfdCBvbF9mbGFnczsKQEAgLTg1NywxMSArODU3LDExIEBAIG5mcF9uZXRfdHhfY2tzdW0o c3RydWN0IG5mcF9uZXRfdHhxICp0eHEsIHN0cnVjdCBuZnBfbmV0X3R4X2Rlc2MgKnR4ZCwKIH0K IAogdWludDE2X3QKLW5mcF9uZXRfeG1pdF9wa3RzKHZvaWQgKnR4X3F1ZXVlLCBzdHJ1Y3QgcnRl X21idWYgKip0eF9wa3RzLCB1aW50MTZfdCBuYl9wa3RzKQorbmZwX25ldF9uZmQzX3htaXRfcGt0 cyh2b2lkICp0eF9xdWV1ZSwgc3RydWN0IHJ0ZV9tYnVmICoqdHhfcGt0cywgdWludDE2X3QgbmJf cGt0cykKIHsKIAlzdHJ1Y3QgbmZwX25ldF90eHEgKnR4cTsKIAlzdHJ1Y3QgbmZwX25ldF9odyAq aHc7Ci0Jc3RydWN0IG5mcF9uZXRfdHhfZGVzYyAqdHhkcywgdHhkOworCXN0cnVjdCBuZnBfbmV0 X25mZDNfdHhfZGVzYyAqdHhkcywgdHhkOwogCXN0cnVjdCBydGVfbWJ1ZiAqcGt0OwogCXVpbnQ2 NF90IGRtYV9hZGRyOwogCWludCBwa3Rfc2l6ZSwgZG1hX3NpemU7CkBAIC04NzYsMTAgKzg3Niwx MCBAQCBuZnBfbmV0X3htaXRfcGt0cyh2b2lkICp0eF9xdWV1ZSwgc3RydWN0IHJ0ZV9tYnVmICoq dHhfcGt0cywgdWludDE2X3QgbmJfcGt0cykKIAlQTURfVFhfTE9HKERFQlVHLCAid29ya2luZyBm b3IgcXVldWUgJXUgYXQgcG9zICVkIGFuZCAldSBwYWNrZXRzIiwKIAkJICAgdHhxLT5xaWR4LCB0 eHEtPndyX3AsIG5iX3BrdHMpOwogCi0JaWYgKChuZnBfZnJlZV90eF9kZXNjKHR4cSkgPCBuYl9w a3RzKSB8fCAobmZwX25ldF90eHFfZnVsbCh0eHEpKSkKKwlpZiAoKG5mcF9uZXRfbmZkM19mcmVl X3R4X2Rlc2ModHhxKSA8IG5iX3BrdHMpIHx8IChuZnBfbmV0X25mZDNfdHhxX2Z1bGwodHhxKSkp CiAJCW5mcF9uZXRfdHhfZnJlZV9idWZzKHR4cSk7CiAKLQlmcmVlX2Rlc2NzID0gKHVpbnQxNl90 KW5mcF9mcmVlX3R4X2Rlc2ModHhxKTsKKwlmcmVlX2Rlc2NzID0gKHVpbnQxNl90KW5mcF9uZXRf bmZkM19mcmVlX3R4X2Rlc2ModHhxKTsKIAlpZiAodW5saWtlbHkoZnJlZV9kZXNjcyA9PSAwKSkK IAkJcmV0dXJuIDA7CiAKQEAgLTkxMyw4ICs5MTMsOCBAQCBuZnBfbmV0X3htaXRfcGt0cyh2b2lk ICp0eF9xdWV1ZSwgc3RydWN0IHJ0ZV9tYnVmICoqdHhfcGt0cywgdWludDE2X3QgbmJfcGt0cykK IAkJICogbXVsdGlzZWdtZW50IHBhY2tldCwgYnV0IFRTTyBpbmZvIG5lZWRzIHRvIGJlIGluIGFs bCBvZiB0aGVtLgogCQkgKi8KIAkJdHhkLmRhdGFfbGVuID0gcGt0LT5wa3RfbGVuOwotCQluZnBf bmV0X3R4X3Rzbyh0eHEsICZ0eGQsIHBrdCk7Ci0JCW5mcF9uZXRfdHhfY2tzdW0odHhxLCAmdHhk LCBwa3QpOworCQluZnBfbmV0X25mZDNfdHhfdHNvKHR4cSwgJnR4ZCwgcGt0KTsKKwkJbmZwX25l dF9uZmQzX3R4X2Nrc3VtKHR4cSwgJnR4ZCwgcGt0KTsKIAogCQlpZiAoKHBrdC0+b2xfZmxhZ3Mg JiBSVEVfTUJVRl9GX1RYX1ZMQU4pICYmCiAJCSAgICAoaHctPmNhcCAmIE5GUF9ORVRfQ0ZHX0NU UkxfVFhWTEFOKSkgewpkaWZmIGEvZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmggYi9kcml2ZXJz L25ldC9uZnAvbmZwX3J4dHguaAkocmVqZWN0ZWQgaHVua3MpCkBAIC01Myw3ICs1Myw3IEBACiAj ZGVmaW5lIFBDSUVfREVTQ19UWF9FTkNBUF9WWExBTiAgICAgICAgKDEgPDwgMSkKICNkZWZpbmUg UENJRV9ERVNDX1RYX0VOQ0FQX0dSRSAgICAgICAgICAoMSA8PCAwKQogCi1zdHJ1Y3QgbmZwX25l dF90eF9kZXNjIHsKK3N0cnVjdCBuZnBfbmV0X25mZDNfdHhfZGVzYyB7CiAJdW5pb24gewogCQlz dHJ1Y3QgewogCQkJdWludDhfdCBkbWFfYWRkcl9oaTsgLyogSGlnaCBiaXRzIG9mIGhvc3QgYnVm IGFkZHJlc3MgKi8KQEAgLTEyNCw3ICsxMjQsNyBAQCBzdHJ1Y3QgbmZwX25ldF90eHEgewogCSAq IG9mIHRoZSBxdWV1ZSBhbmQgQHNpemUgaXMgdGhlIHNpemUgaW4gYnl0ZXMgZm9yIHRoZSBxdWV1 ZQogCSAqIChuZWVkZWQgZm9yIGZyZWUpCiAJICovCi0Jc3RydWN0IG5mcF9uZXRfdHhfZGVzYyAq dHhkczsKKwlzdHJ1Y3QgbmZwX25ldF9uZmQzX3R4X2Rlc2MgKnR4ZHM7CiAKIAkvKgogCSAqIEF0 IHRoaXMgcG9pbnQgNDggYnl0ZXMgaGF2ZSBiZWVuIHVzZWQgZm9yIGFsbCB0aGUgZmllbGRzIGlu IHRoZQpAQCAtMjg2LDEwICsyODYsMTAgQEAgaW50IG5mcF9uZXRfcnhfcXVldWVfc2V0dXAoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHF1ZXVlX2lkeCwKIAkJCQkgIHN0cnVjdCBy dGVfbWVtcG9vbCAqbXApOwogdm9pZCBuZnBfbmV0X3R4X3F1ZXVlX3JlbGVhc2Uoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHF1ZXVlX2lkeCk7CiB2b2lkIG5mcF9uZXRfcmVzZXRf dHhfcXVldWUoc3RydWN0IG5mcF9uZXRfdHhxICp0eHEpOwotaW50IG5mcF9uZXRfdHhfcXVldWVf c2V0dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHF1ZXVlX2lkeCwKK2ludCBu ZnBfbmV0X25mZDNfdHhfcXVldWVfc2V0dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQx Nl90IHF1ZXVlX2lkeCwKIAkJCQkgIHVpbnQxNl90IG5iX2Rlc2MsIHVuc2lnbmVkIGludCBzb2Nr ZXRfaWQsCiAJCQkJICBjb25zdCBzdHJ1Y3QgcnRlX2V0aF90eGNvbmYgKnR4X2NvbmYpOwotdWlu dDE2X3QgbmZwX25ldF94bWl0X3BrdHModm9pZCAqdHhfcXVldWUsIHN0cnVjdCBydGVfbWJ1ZiAq KnR4X3BrdHMsCit1aW50MTZfdCBuZnBfbmV0X25mZDNfeG1pdF9wa3RzKHZvaWQgKnR4X3F1ZXVl LCBzdHJ1Y3QgcnRlX21idWYgKip0eF9wa3RzLAogCQkJCSAgdWludDE2X3QgbmJfcGt0cyk7CiAK ICNlbmRpZiAvKiBfTkZQX1JYVFhfSF8gKi8KQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNz L25mcC5yc3QuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgpUaGlzIGRvY3VtZW50IGV4 cGxhaW5zIGhvdyB0byB1c2UgRFBESyB3aXRoIHRoZSBOZXRyb25vbWUgUG9sbCBNb2RlCkRyaXZl ciAoUE1EKSBzdXBwb3J0aW5nIE5ldHJvbm9tZSdzIE5ldHdvcmsgRmxvdyBQcm9jZXNzb3IgNnh4 eAooTkZQLTZ4eHgpIGFuZCBOZXRyb25vbWUncyBGbG93IFByb2Nlc3NvciA0eHh4IChORlAtNHh4 eCkuCgpORlAgaXMgYSBTUklPViBjYXBhYmxlIGRldmljZSBhbmQgdGhlIFBNRCBzdXBwb3J0cyB0 aGUgcGh5c2ljYWwKZnVuY3Rpb24gKFBGKSBhbmQgdGhlIHZpcnR1YWwgZnVuY3Rpb25zIChWRnMp LgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZG9jL2d1aWRlcy9uaWNzL25mcC5yc3Q6MTIKQ2hlY2tp bmcgcGF0Y2ggZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8wNy5yc3QuLi4KZXJyb3I6 IHdoaWxlIHNlYXJjaGluZyBmb3I6CiAgKiBBZGRlZCBzdXBwb3J0IGZvciBNVFUgb24gV2luZG93 cy4KICAqIEFkZGVkIG1hdGNoaW5nIGFuZCBSU1Mgb24gSVBzZWMgRVNQLgoKKiAqKlVwZGF0ZWQg Vk13YXJlIHZteG5ldDMgbmV0d29ya2luZyBkcml2ZXIuKioKCiAgKiBBZGRlZCB2ZXJzaW9uIDUg c3VwcG9ydC4KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVh c2VfMjJfMDcucnN0OjEwOApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1v bi5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKI2RlZmluZSBORlBfTkVUX1BNRF9W RVJTSU9OICIwLjEiCiNkZWZpbmUgUENJX1ZFTkRPUl9JRF9ORVRST05PTUUgICAgICAgICAweDE5 ZWUKI2RlZmluZSBQQ0lfREVWSUNFX0lEX05GUDQwMDBfUEZfTklDICAgIDB4NDAwMAojZGVmaW5l IFBDSV9ERVZJQ0VfSURfTkZQNjAwMF9QRl9OSUMgICAgMHg2MDAwCiNkZWZpbmUgUENJX0RFVklD RV9JRF9ORlA2MDAwX1ZGX05JQyAgICAweDYwMDMKCi8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8K c3RydWN0IG5mcF9uZXRfYWRhcHRlcjsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L25mcC9uZnBfY29tbW9uLmg6MTYKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNkZWZpbmUg TkZQX1FDUF9RVUVVRV9TVFNfSEkgICAgICAgICAgICAgICAgICAgIDB4MDAwYwojZGVmaW5lIE5G UF9RQ1BfUVVFVUVfU1RTX0hJX1dSSVRFUFRSX21hc2sgICAgKDB4M2ZmZmYpCgovKiBUaGUgb2Zm c2V0IG9mIHRoZSBxdWV1ZSBjb250cm9sbGVyIHF1ZXVlcyBpbiB0aGUgUENJZSBUYXJnZXQgKi8K I2RlZmluZSBORlBfUENJRV9RVUVVRShfcSkgKDB4ODAwMDAgKyAoTkZQX1FDUF9RVUVVRV9BRERS X1NaICogKChfcSkgJiAweGZmKSkpCgovKiBJbnRlcnJ1cHQgZGVmaW5pdGlvbnMgKi8KI2RlZmlu ZSBORlBfTkVUX0lSUV9MU0NfSURYICAgICAgICAgICAgIDAKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmg6NDEKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CgkJcmV0dXJuIHZhbCAmIE5GUF9RQ1BfUVVFVUVfU1RTX0hJX1dSSVRFUFRSX21hc2s7Cn0K Ci8qIFByb3RvdHlwZXMgZm9yIGNvbW1vbiBORlAgZnVuY3Rpb25zICovCmludCBuZnBfbmV0X3Jl Y29uZmlnKHN0cnVjdCBuZnBfbmV0X2h3ICpodywgdWludDMyX3QgY3RybCwgdWludDMyX3QgdXBk YXRlKTsKaW50IG5mcF9uZXRfY29uZmlndXJlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmg6MzQyCkNoZWNr aW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CgoJLyogV29yayBvdXQgd2hlcmUgaW4gdGhlIEJBUiB0aGUgcXVldWVzIHN0 YXJ0LiAqLwoJc3dpdGNoIChwY2lfZGV2LT5pZC5kZXZpY2VfaWQpIHsKCWNhc2UgUENJX0RFVklD RV9JRF9ORlA0MDAwX1BGX05JQzoKCWNhc2UgUENJX0RFVklDRV9JRF9ORlA2MDAwX1BGX05JQzoK CQlzdGFydF9xID0gbm5fY2ZnX3JlYWRsKGh3LCBORlBfTkVUX0NGR19TVEFSVF9UWFEpOwoJCXR4 X2Jhcl9vZmYgPSAodWludDY0X3Qpc3RhcnRfcSAqIE5GUF9RQ1BfUVVFVUVfQUREUl9TWjsKCQlz dGFydF9xID0gbm5fY2ZnX3JlYWRsKGh3LCBORlBfTkVUX0NGR19TVEFSVF9SWFEpOwoJCXJ4X2Jh cl9vZmYgPSAodWludDY0X3Qpc3RhcnRfcSAqIE5GUF9RQ1BfUVVFVUVfQUREUl9TWjsKCQlicmVh azsKCWRlZmF1bHQ6CgkJUE1EX0RSVl9MT0coRVJSLCAibmZwX25ldDogbm8gZGV2aWNlIElEIG1h dGNoaW5nIik7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRl di5jOjQ0NgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKewoJaW50IGVycjsKCWludCByZXQg PSAwOwoJaW50IHRvdGFsX3BvcnRzOwoJc3RydWN0IG5mcF9jcHAgKmNwcDsKCXN0cnVjdCBuZnBf cGZfZGV2ICpwZl9kZXY7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZw X2V0aGRldi5jOjc2NAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCVBNRF9JTklUX0xPRyhE RUJVRywgImN0cmwgYmFyOiAlcCIsIHBmX2Rldi0+Y3RybF9iYXIpOwoKCS8qIGNvbmZpZ3VyZSBh Y2Nlc3MgdG8gdHgvcnggdk5JQyBCQVJzICovCglwZl9kZXYtPmh3X3F1ZXVlcyA9IG5mcF9jcHBf bWFwX2FyZWEocGZfZGV2LT5jcHAsIDAsIDAsCgkJCU5GUF9QQ0lFX1FVRVVFKDApLCBORlBfUUNQ X1FVRVVFX0FSRUFfU1osCgkJCSZwZl9kZXYtPmh3cXVldWVzX2FyZWEpOwoJaWYgKHBmX2Rldi0+ aHdfcXVldWVzID09IE5VTEwpIHsKCQlQTURfSU5JVF9MT0coRVJSLCAibmZwX3J0c3ltX21hcCBm YWlscyBmb3IgbmV0LnFjIik7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAv bmZwX2V0aGRldi5jOjg2NwplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfQoKc3RhdGljIGNv bnN0IHN0cnVjdCBydGVfcGNpX2lkIHBjaV9pZF9uZnBfcGZfbmV0X21hcFtdID0gewoJewoJCVJU RV9QQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTkVUUk9OT01FLAoJCQkgICAgICAgUENJX0RFVklD RV9JRF9ORlA0MDAwX1BGX05JQykKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25m cC9uZnBfZXRoZGV2LmM6OTk1CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfZXRo ZGV2X3ZmLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJLyogV29yayBvdXQgd2hl cmUgaW4gdGhlIEJBUiB0aGUgcXVldWVzIHN0YXJ0LiAqLwoJc3dpdGNoIChwY2lfZGV2LT5pZC5k ZXZpY2VfaWQpIHsKCWNhc2UgUENJX0RFVklDRV9JRF9ORlA2MDAwX1ZGX05JQzoKCQlzdGFydF9x ID0gbm5fY2ZnX3JlYWRsKGh3LCBORlBfTkVUX0NGR19TVEFSVF9UWFEpOwoJCXR4X2Jhcl9vZmYg PSAodWludDY0X3Qpc3RhcnRfcSAqIE5GUF9RQ1BfUVVFVUVfQUREUl9TWjsKCQlzdGFydF9xID0g bm5fY2ZnX3JlYWRsKGh3LCBORlBfTkVUX0NGR19TVEFSVF9SWFEpOwoJCXJ4X2Jhcl9vZmYgPSAo dWludDY0X3Qpc3RhcnRfcSAqIE5GUF9RQ1BfUVVFVUVfQUREUl9TWjsKCQlicmVhazsKCWRlZmF1 bHQ6CgkJUE1EX0RSVl9MT0coRVJSLCAibmZwX25ldDogbm8gZGV2aWNlIElEIG1hdGNoaW5nIik7 CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5jOjMy NwplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfQoKc3RhdGljIGNvbnN0IHN0cnVjdCBydGVf cGNpX2lkIHBjaV9pZF9uZnBfdmZfbmV0X21hcFtdID0gewoJewoJCVJURV9QQ0lfREVWSUNFKFBD SV9WRU5ET1JfSURfTkVUUk9OT01FLAoJCQkgICAgICAgUENJX0RFVklDRV9JRF9ORlA2MDAwX1ZG X05JQykKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3Zm LmM6NDU2CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBjb3JlL25mcF9jcHAuaC4u LgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICogQHJldHVybgkJdHJ1ZSBpZiBtb2RlbCBp cyBpbiB0aGUgTkZQNjAwMCBmYW1pbHksIGZhbHNlIG90aGVyd2lzZS4KICovCiNkZWZpbmUgTkZQ X0NQUF9NT0RFTF9JU182MDAwKG1vZGVsKQkJICAgICBcCgkJKChORlBfQ1BQX01PREVMX0NISVBf b2YobW9kZWwpID49IDB4NDAwMCkgJiYgXAoJCShORlBfQ1BQX01PREVMX0NISVBfb2YobW9kZWwp IDwgMHg3MDAwKSkKCi8qCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZw Y29yZS9uZnBfY3BwLmg6MjE0CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBjb3Jl L25mcF9uc3BfZXRoLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglzdHJ1Y3QgbmZw X2V0aF90YWJsZSAqdGFibGU7Cgl1aW50MzJfdCB0YWJsZV9zejsKCWludCBpLCBqLCByZXQsIGNu dCA9IDA7CgoJZW50cmllcyA9IG1hbGxvYyhOU1BfRVRIX1RBQkxFX1NJWkUpOwoJaWYgKCFlbnRy aWVzKQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcGNvcmUvbmZwX25z cF9ldGguYzoyNjYKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJZ290byBlcnI7Cgl9CgoJ Zm9yIChpID0gMDsgaSA8IE5TUF9FVEhfTUFYX0NPVU5UOyBpKyspCgkJaWYgKGVudHJpZXNbaV0u cG9ydCAmIE5TUF9FVEhfUE9SVF9MQU5FU19NQVNLKQoJCQljbnQrKzsKCgkvKiBTb21lIHZlcnNp b25zIG9mIGZsYXNoIHdpbGwgZ2l2ZSB1cyAwIGluc3RlYWQgb2YgcG9ydCBjb3VudC4gRm9yCgkg KiB0aG9zZSB0aGF0IGdpdmUgYSBwb3J0IGNvdW50LCB2ZXJpZnkgaXQgYWdhaW5zdCB0aGUgdmFs dWUgY2FsY3VsYXRlZAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcGNv cmUvbmZwX25zcF9ldGguYzoyNzgKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJbWVtc2V0 KHRhYmxlLCAwLCB0YWJsZV9zeik7Cgl0YWJsZS0+Y291bnQgPSBjbnQ7Cglmb3IgKGkgPSAwLCBq ID0gMDsgaSA8IE5TUF9FVEhfTUFYX0NPVU5UOyBpKyspCgkJaWYgKGVudHJpZXNbaV0ucG9ydCAm IE5TUF9FVEhfUE9SVF9MQU5FU19NQVNLKQoJCQluZnBfZXRoX3BvcnRfdHJhbnNsYXRlKG5zcCwg JmVudHJpZXNbaV0sIGksCgkJCQkJICAgICAgICZ0YWJsZS0+cG9ydHNbaisrXSk7CgoJbmZwX2V0 aF9jYWxjX3BvcnRfZ2VvbWV0cnkodGFibGUpOwoJZm9yIChpID0gMDsgaSA8IChpbnQpdGFibGUt PmNvdW50OyBpKyspCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwY29y ZS9uZnBfbnNwX2V0aC5jOjI5OQpBcHBseWluZyBwYXRjaCBkb2MvZ3VpZGVzL25pY3MvbmZwLnJz dCB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCkFwcGx5aW5nIHBhdGNoIGRvYy9n dWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMDcucnN0IHdpdGggMSByZWplY3QuLi4KUmVqZWN0 ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24uaCB3 aXRoIDMgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBodW5rICMyLgpSZWpl Y3RlZCBodW5rICMzLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5j IHdpdGggNCByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuClJl amVjdGVkIGh1bmsgIzMuClJlamVjdGVkIGh1bmsgIzQuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMv bmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMgd2l0aCAyIHJlamVjdHMuLi4KUmVqZWN0ZWQgaHVuayAj MS4KUmVqZWN0ZWQgaHVuayAjMi4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcGNv cmUvbmZwX2NwcC5oIHdpdGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcg cGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcGNvcmUvbmZwX25zcF9ldGguYyB3aXRoIDMgcmVqZWN0 cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBodW5rICMyLgpSZWplY3RlZCBodW5rICMz LgpkaWZmIGEvZG9jL2d1aWRlcy9uaWNzL25mcC5yc3QgYi9kb2MvZ3VpZGVzL25pY3MvbmZwLnJz dAkocmVqZWN0ZWQgaHVua3MpCkBAIC0xMiw3ICsxMiw4IEBAIHVwIHRvIDQwMC1HYi9zLgogCiBU aGlzIGRvY3VtZW50IGV4cGxhaW5zIGhvdyB0byB1c2UgRFBESyB3aXRoIHRoZSBOZXRyb25vbWUg UG9sbCBNb2RlCiBEcml2ZXIgKFBNRCkgc3VwcG9ydGluZyBOZXRyb25vbWUncyBOZXR3b3JrIEZs b3cgUHJvY2Vzc29yIDZ4eHgKLShORlAtNnh4eCkgYW5kIE5ldHJvbm9tZSdzIEZsb3cgUHJvY2Vz c29yIDR4eHggKE5GUC00eHh4KS4KKyhORlAtNnh4eCksIE5ldHJvbm9tZSdzIE5ldHdvcmsgRmxv dyBQcm9jZXNzb3IgNHh4eCAoTkZQLTR4eHgpIGFuZAorTmV0cm9ub21lJ3MgTmV0d29yayBGbG93 IFByb2Nlc3NvciAzOHh4IChORlAtMzh4eCkuCiAKIE5GUCBpcyBhIFNSSU9WIGNhcGFibGUgZGV2 aWNlIGFuZCB0aGUgUE1EIHN1cHBvcnRzIHRoZSBwaHlzaWNhbAogZnVuY3Rpb24gKFBGKSBhbmQg dGhlIHZpcnR1YWwgZnVuY3Rpb25zIChWRnMpLgpkaWZmIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMv cmVsZWFzZV8yMl8wNy5yc3QgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzA3LnJz dAkocmVqZWN0ZWQgaHVua3MpCkBAIC0xMDgsNiArMTA4LDEwIEBAIE5ldyBGZWF0dXJlcwogICAq IEFkZGVkIHN1cHBvcnQgZm9yIE1UVSBvbiBXaW5kb3dzLgogICAqIEFkZGVkIG1hdGNoaW5nIGFu ZCBSU1Mgb24gSVBzZWMgRVNQLgogCisqICoqVXBkYXRlZCBOZXRyb25vbWUgbmZwIGRyaXZlci4q KgorCisgICogQWRkZWQgc3VwcG9ydCBmb3IgTkZQMzgwMCBOSUMuCisKICogKipVcGRhdGVkIFZN d2FyZSB2bXhuZXQzIG5ldHdvcmtpbmcgZHJpdmVyLioqCiAKICAgKiBBZGRlZCB2ZXJzaW9uIDUg c3VwcG9ydC4KZGlmZiBhL2RyaXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmggYi9kcml2ZXJzL25l dC9uZnAvbmZwX2NvbW1vbi5oCShyZWplY3RlZCBodW5rcykKQEAgLTE2LDkgKzE2LDExIEBACiAK ICNkZWZpbmUgTkZQX05FVF9QTURfVkVSU0lPTiAiMC4xIgogI2RlZmluZSBQQ0lfVkVORE9SX0lE X05FVFJPTk9NRSAgICAgICAgIDB4MTllZQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX05GUDM4MDBf UEZfTklDICAgIDB4MzgwMAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX05GUDM4MDBfVkZfTklDICAg IDB4MzgwMwogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05GUDQwMDBfUEZfTklDICAgIDB4NDAwMAog I2RlZmluZSBQQ0lfREVWSUNFX0lEX05GUDYwMDBfUEZfTklDICAgIDB4NjAwMAotI2RlZmluZSBQ Q0lfREVWSUNFX0lEX05GUDYwMDBfVkZfTklDICAgIDB4NjAwMworI2RlZmluZSBQQ0lfREVWSUNF X0lEX05GUDYwMDBfVkZfTklDICAgIDB4NjAwMyAgLyogSW5jbHVkZSBORlA0MDAwVkYgKi8KIAog LyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLwogc3RydWN0IG5mcF9uZXRfYWRhcHRlcjsKQEAgLTQx LDggKzQzLDE2IEBAIHN0cnVjdCBuZnBfbmV0X2FkYXB0ZXI7CiAjZGVmaW5lIE5GUF9RQ1BfUVVF VUVfU1RTX0hJICAgICAgICAgICAgICAgICAgICAweDAwMGMKICNkZWZpbmUgTkZQX1FDUF9RVUVV RV9TVFNfSElfV1JJVEVQVFJfbWFzayAgICAoMHgzZmZmZikKIAorI2RlZmluZSBORlBfUENJRV9R Q1BfTkZQMzgwMF9PRkZTRVQgICAgICAgICAgICAweDQwMDAwMAorI2RlZmluZSBORlBfUENJRV9R Q1BfTkZQNjAwMF9PRkZTRVQgICAgICAgICAgICAweDgwMDAwCisjZGVmaW5lIE5GUF9QQ0lFX1FV RVVFX05GUDM4MDBfTUFTSyAgICAgICAgICAgIDB4MWZmCisjZGVmaW5lIE5GUF9QQ0lFX1FVRVVF X05GUDYwMDBfTUFTSyAgICAgICAgICAgIDB4ZmYKKyNkZWZpbmUgTkZQX1BDSUVfUUNQX1BGX09G RlNFVCAgICAgICAgICAgICAgICAgMHgwCisjZGVmaW5lIE5GUF9QQ0lFX1FDUF9WRl9PRkZTRVQg ICAgICAgICAgICAgICAgIDB4MAorCiAvKiBUaGUgb2Zmc2V0IG9mIHRoZSBxdWV1ZSBjb250cm9s bGVyIHF1ZXVlcyBpbiB0aGUgUENJZSBUYXJnZXQgKi8KLSNkZWZpbmUgTkZQX1BDSUVfUVVFVUUo X3EpICgweDgwMDAwICsgKE5GUF9RQ1BfUVVFVUVfQUREUl9TWiAqICgoX3EpICYgMHhmZikpKQor I2RlZmluZSBORlBfUENJRV9RVUVVRShfb2Zmc2V0LCBfcSwgX21hc2spICAgIFwKKwkJKChfb2Zm c2V0KSArIChORlBfUUNQX1FVRVVFX0FERFJfU1ogKiAoKF9xKSAmIChfbWFzaykpKSkKIAogLyog SW50ZXJydXB0IGRlZmluaXRpb25zICovCiAjZGVmaW5lIE5GUF9ORVRfSVJRX0xTQ19JRFggICAg ICAgICAgICAgMApAQCAtMzQyLDYgKzM1MiwyNiBAQCBuZnBfcWNwX3JlYWQodWludDhfdCAqcSwg ZW51bSBuZnBfcWNwX3B0ciBwdHIpCiAJCXJldHVybiB2YWwgJiBORlBfUUNQX1FVRVVFX1NUU19I SV9XUklURVBUUl9tYXNrOwogfQogCitzdGF0aWMgaW5saW5lIHVpbnQzMl90CituZnBfcGNpX3F1 ZXVlKHN0cnVjdCBydGVfcGNpX2RldmljZSAqcGRldiwgdWludDE2X3QgcXVldWUpCit7CisJc3dp dGNoIChwZGV2LT5pZC5kZXZpY2VfaWQpIHsKKwljYXNlIFBDSV9ERVZJQ0VfSURfTkZQNDAwMF9Q Rl9OSUM6CisJY2FzZSBQQ0lfREVWSUNFX0lEX05GUDYwMDBfUEZfTklDOgorCQlyZXR1cm4gTkZQ X1BDSUVfUVVFVUUoTkZQX1BDSUVfUUNQX1BGX09GRlNFVCwgcXVldWUsCisJCQkJTkZQX1BDSUVf UVVFVUVfTkZQNjAwMF9NQVNLKTsKKwljYXNlIFBDSV9ERVZJQ0VfSURfTkZQMzgwMF9WRl9OSUM6 CisJCXJldHVybiBORlBfUENJRV9RVUVVRShORlBfUENJRV9RQ1BfVkZfT0ZGU0VULCBxdWV1ZSwK KwkJCQlORlBfUENJRV9RVUVVRV9ORlAzODAwX01BU0spOworCWNhc2UgUENJX0RFVklDRV9JRF9O RlA2MDAwX1ZGX05JQzoKKwkJcmV0dXJuIE5GUF9QQ0lFX1FVRVVFKE5GUF9QQ0lFX1FDUF9WRl9P RkZTRVQsIHF1ZXVlLAorCQkJCU5GUF9QQ0lFX1FVRVVFX05GUDYwMDBfTUFTSyk7CisJZGVmYXVs dDoKKwkJcmV0dXJuIE5GUF9QQ0lFX1FVRVVFKE5GUF9QQ0lFX1FDUF9QRl9PRkZTRVQsIHF1ZXVl LAorCQkJCU5GUF9QQ0lFX1FVRVVFX05GUDM4MDBfTUFTSyk7CisJfQorfQorCiAvKiBQcm90b3R5 cGVzIGZvciBjb21tb24gTkZQIGZ1bmN0aW9ucyAqLwogaW50IG5mcF9uZXRfcmVjb25maWcoc3Ry dWN0IG5mcF9uZXRfaHcgKmh3LCB1aW50MzJfdCBjdHJsLCB1aW50MzJfdCB1cGRhdGUpOwogaW50 IG5mcF9uZXRfY29uZmlndXJlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKZGlmZiBhL2RyaXZl cnMvbmV0L25mcC9uZnBfZXRoZGV2LmMgYi9kcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jCShy ZWplY3RlZCBodW5rcykKQEAgLTQ0NiwxMiArNDQ2LDEzIEBAIG5mcF9uZXRfaW5pdChzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmV0aF9kZXYpCiAKIAkvKiBXb3JrIG91dCB3aGVyZSBpbiB0aGUgQkFSIHRo ZSBxdWV1ZXMgc3RhcnQuICovCiAJc3dpdGNoIChwY2lfZGV2LT5pZC5kZXZpY2VfaWQpIHsKKwlj YXNlIFBDSV9ERVZJQ0VfSURfTkZQMzgwMF9QRl9OSUM6CiAJY2FzZSBQQ0lfREVWSUNFX0lEX05G UDQwMDBfUEZfTklDOgogCWNhc2UgUENJX0RFVklDRV9JRF9ORlA2MDAwX1BGX05JQzoKIAkJc3Rh cnRfcSA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfU1RBUlRfVFhRKTsKLQkJdHhfYmFy X29mZiA9ICh1aW50NjRfdClzdGFydF9xICogTkZQX1FDUF9RVUVVRV9BRERSX1NaOworCQl0eF9i YXJfb2ZmID0gbmZwX3BjaV9xdWV1ZShwY2lfZGV2LCBzdGFydF9xKTsKIAkJc3RhcnRfcSA9IG5u X2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfU1RBUlRfUlhRKTsKLQkJcnhfYmFyX29mZiA9ICh1 aW50NjRfdClzdGFydF9xICogTkZQX1FDUF9RVUVVRV9BRERSX1NaOworCQlyeF9iYXJfb2ZmID0g bmZwX3BjaV9xdWV1ZShwY2lfZGV2LCBzdGFydF9xKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJ UE1EX0RSVl9MT0coRVJSLCAibmZwX25ldDogbm8gZGV2aWNlIElEIG1hdGNoaW5nIik7CkBAIC03 NjQsNiArNzY1LDcgQEAgbmZwX3BmX2luaXQoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2 KQogewogCWludCBlcnI7CiAJaW50IHJldCA9IDA7CisJdWludDY0X3QgYWRkcjsKIAlpbnQgdG90 YWxfcG9ydHM7CiAJc3RydWN0IG5mcF9jcHAgKmNwcDsKIAlzdHJ1Y3QgbmZwX3BmX2RldiAqcGZf ZGV2OwpAQCAtODY3LDggKzg2OSwyNCBAQCBuZnBfcGZfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZp Y2UgKnBjaV9kZXYpCiAJUE1EX0lOSVRfTE9HKERFQlVHLCAiY3RybCBiYXI6ICVwIiwgcGZfZGV2 LT5jdHJsX2Jhcik7CiAKIAkvKiBjb25maWd1cmUgYWNjZXNzIHRvIHR4L3J4IHZOSUMgQkFScyAq LworCXN3aXRjaCAocGNpX2Rldi0+aWQuZGV2aWNlX2lkKSB7CisJY2FzZSBQQ0lfREVWSUNFX0lE X05GUDM4MDBfUEZfTklDOgorCQlhZGRyID0gTkZQX1BDSUVfUVVFVUUoTkZQX1BDSUVfUUNQX05G UDM4MDBfT0ZGU0VULAorCQkJCQkwLCBORlBfUENJRV9RVUVVRV9ORlAzODAwX01BU0spOworCQli cmVhazsKKwljYXNlIFBDSV9ERVZJQ0VfSURfTkZQNDAwMF9QRl9OSUM6CisJY2FzZSBQQ0lfREVW SUNFX0lEX05GUDYwMDBfUEZfTklDOgorCQlhZGRyID0gTkZQX1BDSUVfUVVFVUUoTkZQX1BDSUVf UUNQX05GUDYwMDBfT0ZGU0VULAorCQkJCQkwLCBORlBfUENJRV9RVUVVRV9ORlA2MDAwX01BU0sp OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlQTURfSU5JVF9MT0coRVJSLCAibmZwX25ldDogbm8g ZGV2aWNlIElEIG1hdGNoaW5nIik7CisJCWVyciA9IC1FTk9ERVY7CisJCWdvdG8gY3RybF9hcmVh X2NsZWFudXA7CisJfQorCiAJcGZfZGV2LT5od19xdWV1ZXMgPSBuZnBfY3BwX21hcF9hcmVhKHBm X2Rldi0+Y3BwLCAwLCAwLAotCQkJTkZQX1BDSUVfUVVFVUUoMCksIE5GUF9RQ1BfUVVFVUVfQVJF QV9TWiwKKwkJCWFkZHIsIE5GUF9RQ1BfUVVFVUVfQVJFQV9TWiwKIAkJCSZwZl9kZXYtPmh3cXVl dWVzX2FyZWEpOwogCWlmIChwZl9kZXYtPmh3X3F1ZXVlcyA9PSBOVUxMKSB7CiAJCVBNRF9JTklU X0xPRyhFUlIsICJuZnBfcnRzeW1fbWFwIGZhaWxzIGZvciBuZXQucWMiKTsKQEAgLTk5NSw2ICsx MDEzLDEwIEBAIG5mcF9wZl9wY2lfcHJvYmUoc3RydWN0IHJ0ZV9wY2lfZHJpdmVyICpwY2lfZHJ2 IF9fcnRlX3VudXNlZCwKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBydGVfcGNpX2lkIHBjaV9p ZF9uZnBfcGZfbmV0X21hcFtdID0geworCXsKKwkJUlRFX1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9J RF9ORVRST05PTUUsCisJCQkgICAgICAgUENJX0RFVklDRV9JRF9ORlAzODAwX1BGX05JQykKKwl9 LAogCXsKIAkJUlRFX1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9ORVRST05PTUUsCiAJCQkgICAg ICAgUENJX0RFVklDRV9JRF9ORlA0MDAwX1BGX05JQykKZGlmZiBhL2RyaXZlcnMvbmV0L25mcC9u ZnBfZXRoZGV2X3ZmLmMgYi9kcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5jCShyZWplY3Rl ZCBodW5rcykKQEAgLTMyNywxMSArMzI3LDEyIEBAIG5mcF9uZXR2Zl9pbml0KHN0cnVjdCBydGVf ZXRoX2RldiAqZXRoX2RldikKIAogCS8qIFdvcmsgb3V0IHdoZXJlIGluIHRoZSBCQVIgdGhlIHF1 ZXVlcyBzdGFydC4gKi8KIAlzd2l0Y2ggKHBjaV9kZXYtPmlkLmRldmljZV9pZCkgeworCWNhc2Ug UENJX0RFVklDRV9JRF9ORlAzODAwX1ZGX05JQzoKIAljYXNlIFBDSV9ERVZJQ0VfSURfTkZQNjAw MF9WRl9OSUM6CiAJCXN0YXJ0X3EgPSBubl9jZmdfcmVhZGwoaHcsIE5GUF9ORVRfQ0ZHX1NUQVJU X1RYUSk7Ci0JCXR4X2Jhcl9vZmYgPSAodWludDY0X3Qpc3RhcnRfcSAqIE5GUF9RQ1BfUVVFVUVf QUREUl9TWjsKKwkJdHhfYmFyX29mZiA9IG5mcF9wY2lfcXVldWUocGNpX2Rldiwgc3RhcnRfcSk7 CiAJCXN0YXJ0X3EgPSBubl9jZmdfcmVhZGwoaHcsIE5GUF9ORVRfQ0ZHX1NUQVJUX1JYUSk7Ci0J CXJ4X2Jhcl9vZmYgPSAodWludDY0X3Qpc3RhcnRfcSAqIE5GUF9RQ1BfUVVFVUVfQUREUl9TWjsK KwkJcnhfYmFyX29mZiA9IG5mcF9wY2lfcXVldWUocGNpX2Rldiwgc3RhcnRfcSk7CiAJCWJyZWFr OwogCWRlZmF1bHQ6CiAJCVBNRF9EUlZfTE9HKEVSUiwgIm5mcF9uZXQ6IG5vIGRldmljZSBJRCBt YXRjaGluZyIpOwpAQCAtNDU2LDYgKzQ1NywxMCBAQCBuZnBfbmV0dmZfaW5pdChzdHJ1Y3QgcnRl X2V0aF9kZXYgKmV0aF9kZXYpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRlX3BjaV9pZCBw Y2lfaWRfbmZwX3ZmX25ldF9tYXBbXSA9IHsKKwl7CisJCVJURV9QQ0lfREVWSUNFKFBDSV9WRU5E T1JfSURfTkVUUk9OT01FLAorCQkJICAgICAgIFBDSV9ERVZJQ0VfSURfTkZQMzgwMF9WRl9OSUMp CisJfSwKIAl7CiAJCVJURV9QQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTkVUUk9OT01FLAogCQkJ ICAgICAgIFBDSV9ERVZJQ0VfSURfTkZQNjAwMF9WRl9OSUMpCmRpZmYgYS9kcml2ZXJzL25ldC9u ZnAvbmZwY29yZS9uZnBfY3BwLmggYi9kcml2ZXJzL25ldC9uZnAvbmZwY29yZS9uZnBfY3BwLmgJ KHJlamVjdGVkIGh1bmtzKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgbmZwX2NwcF9mcmVlKHN0 cnVjdCBuZnBfY3BwICpjcHApOwogICogQHJldHVybgkJdHJ1ZSBpZiBtb2RlbCBpcyBpbiB0aGUg TkZQNjAwMCBmYW1pbHksIGZhbHNlIG90aGVyd2lzZS4KICAqLwogI2RlZmluZSBORlBfQ1BQX01P REVMX0lTXzYwMDAobW9kZWwpCQkgICAgIFwKLQkJKChORlBfQ1BQX01PREVMX0NISVBfb2YobW9k ZWwpID49IDB4NDAwMCkgJiYgXAorCQkoKE5GUF9DUFBfTU9ERUxfQ0hJUF9vZihtb2RlbCkgPj0g MHgzODAwKSAmJiBcCiAJCShORlBfQ1BQX01PREVMX0NISVBfb2YobW9kZWwpIDwgMHg3MDAwKSkK IAogLyoKZGlmZiBhL2RyaXZlcnMvbmV0L25mcC9uZnBjb3JlL25mcF9uc3BfZXRoLmMgYi9kcml2 ZXJzL25ldC9uZnAvbmZwY29yZS9uZnBfbnNwX2V0aC5jCShyZWplY3RlZCBodW5rcykKQEAgLTI2 Niw2ICsyNjYsNyBAQCBfX25mcF9ldGhfcmVhZF9wb3J0cyhzdHJ1Y3QgbmZwX25zcCAqbnNwKQog CXN0cnVjdCBuZnBfZXRoX3RhYmxlICp0YWJsZTsKIAl1aW50MzJfdCB0YWJsZV9zejsKIAlpbnQg aSwgaiwgcmV0LCBjbnQgPSAwOworCWNvbnN0IHN0cnVjdCBydGVfZXRoZXJfYWRkciAqbWFjOwog CiAJZW50cmllcyA9IG1hbGxvYyhOU1BfRVRIX1RBQkxFX1NJWkUpOwogCWlmICghZW50cmllcykK QEAgLTI3OCw5ICsyNzksMTUgQEAgX19uZnBfZXRoX3JlYWRfcG9ydHMoc3RydWN0IG5mcF9uc3Ag Km5zcCkKIAkJZ290byBlcnI7CiAJfQogCi0JZm9yIChpID0gMDsgaSA8IE5TUF9FVEhfTUFYX0NP VU5UOyBpKyspCi0JCWlmIChlbnRyaWVzW2ldLnBvcnQgJiBOU1BfRVRIX1BPUlRfTEFORVNfTUFT SykKKwkvKiBUaGUgTkZQMzgwMCBOSUMgc3VwcG9ydCA4IHBvcnRzLCBidXQgb25seSAyIHBvcnRz IGFyZSB2YWxpZCwKKwkgKiB0aGUgcmVzdCA2IHBvcnRzIG1hYyBhcmUgYWxsIDAsIGVuc3VyZSB3 ZSBkb24ndCB1c2UgdGhlc2UgcG9ydAorCSAqLworCWZvciAoaSA9IDA7IGkgPCBOU1BfRVRIX01B WF9DT1VOVDsgaSsrKSB7CisJCW1hYyA9IChjb25zdCBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKill bnRyaWVzW2ldLm1hY19hZGRyOworCQlpZiAoKGVudHJpZXNbaV0ucG9ydCAmIE5TUF9FVEhfUE9S VF9MQU5FU19NQVNLKSAmJgorCQkJCSghcnRlX2lzX3plcm9fZXRoZXJfYWRkcihtYWMpKSkKIAkJ CWNudCsrOworCX0KIAogCS8qIFNvbWUgdmVyc2lvbnMgb2YgZmxhc2ggd2lsbCBnaXZlIHVzIDAg aW5zdGVhZCBvZiBwb3J0IGNvdW50LiBGb3IKIAkgKiB0aG9zZSB0aGF0IGdpdmUgYSBwb3J0IGNv dW50LCB2ZXJpZnkgaXQgYWdhaW5zdCB0aGUgdmFsdWUgY2FsY3VsYXRlZApAQCAtMjk5LDEwICsz MDYsMTMgQEAgX19uZnBfZXRoX3JlYWRfcG9ydHMoc3RydWN0IG5mcF9uc3AgKm5zcCkKIAogCW1l bXNldCh0YWJsZSwgMCwgdGFibGVfc3opOwogCXRhYmxlLT5jb3VudCA9IGNudDsKLQlmb3IgKGkg PSAwLCBqID0gMDsgaSA8IE5TUF9FVEhfTUFYX0NPVU5UOyBpKyspCi0JCWlmIChlbnRyaWVzW2ld LnBvcnQgJiBOU1BfRVRIX1BPUlRfTEFORVNfTUFTSykKKwlmb3IgKGkgPSAwLCBqID0gMDsgaSA8 IE5TUF9FVEhfTUFYX0NPVU5UOyBpKyspIHsKKwkJbWFjID0gKGNvbnN0IHN0cnVjdCBydGVfZXRo ZXJfYWRkciAqKWVudHJpZXNbaV0ubWFjX2FkZHI7CisJCWlmICgoZW50cmllc1tpXS5wb3J0ICYg TlNQX0VUSF9QT1JUX0xBTkVTX01BU0spICYmCisJCQkJKCFydGVfaXNfemVyb19ldGhlcl9hZGRy KG1hYykpKQogCQkJbmZwX2V0aF9wb3J0X3RyYW5zbGF0ZShuc3AsICZlbnRyaWVzW2ldLCBpLAot CQkJCQkgICAgICAgJnRhYmxlLT5wb3J0c1tqKytdKTsKKwkJCQkJJnRhYmxlLT5wb3J0c1tqKytd KTsKKwl9CiAKIAluZnBfZXRoX2NhbGNfcG9ydF9nZW9tZXRyeSh0YWJsZSk7CiAJZm9yIChpID0g MDsgaSA8IChpbnQpdGFibGUtPmNvdW50OyBpKyspCkNoZWNraW5nIHBhdGNoIGRvYy9ndWlkZXMv bmljcy9uZnAucnN0Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpkaWZmZXJlbnQgZmly bXdhcmUgdG8gZWFjaCBTbWFydE5JQy4KCiAgIC4uIE5vdGU6OgogICAgICBDdXJyZW50bHkgdGhl IE5GUCBQTUQgc3VwcG9ydHMgdXNpbmcgdGhlIFBGIHdpdGggQWdpbGlvIEJhc2ljIEZpcm13YXJl LiBTZWUKICAgICAgaHR0cHM6Ly9oZWxwLm5ldHJvbm9tZS5jb20vc3VwcG9ydC9zb2x1dGlvbnMg Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlCiAgICAgIHZhcmlvdXMgZmlybXdhcmVzIHN1cHBv cnRlZCBieSB0aGUgTmV0cm9ub21lIEFnaWxpbyBDWCBzbWFydE5JQy4KClBGIG11bHRpcG9ydCBz dXBwb3J0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkb2MvZ3Vp ZGVzL25pY3MvbmZwLnJzdDoxMDAKQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1aWRlcy9yZWxfbm90ZXMv cmVsZWFzZV8yMl8wNy5yc3QuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiogKipVcGRh dGVkIE5ldHJvbm9tZSBuZnAgZHJpdmVyLioqCgogICogQWRkZWQgc3VwcG9ydCBmb3IgTkZQMzgw MCBOSUMuCgoqICoqVXBkYXRlZCBWTXdhcmUgdm14bmV0MyBuZXR3b3JraW5nIGRyaXZlci4qKgoK CmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMDcu cnN0OjExMQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2N0cmwuaC4uLgplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICogLSBkZWZpbmUgbW9yZSBTVFMgYml0cwogKi8KI2Rl ZmluZSBORlBfTkVUX0NGR19WRVJTSU9OICAgICAgICAgICAgIDB4MDAzMAojZGVmaW5lICAgTkZQ X05FVF9DRkdfVkVSU0lPTl9SRVNFUlZFRF9NQVNLCSgweGZmIDw8IDI0KQojZGVmaW5lICAgTkZQ X05FVF9DRkdfVkVSU0lPTl9DTEFTU19NQVNLICAoMHhmZiA8PCAxNikKI2RlZmluZSAgIE5GUF9O RVRfQ0ZHX1ZFUlNJT05fQ0xBU1MoeCkgICAgKCgoeCkgJiAweGZmKSA8PCAxNikKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfY3RybC5oOjEzNQpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgoJLnJ4X3F1ZXVlX2ludHJfZGlzYWJsZSAgPSBuZnBfcnhfcXVldWVfaW50cl9kaXNhYmxl LAp9OwoKc3RhdGljIGludApuZnBfbmV0X2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2 KQp7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjM1 OAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCVBNRF9JTklUX0xPRyhERUJVRywgIldvcmtp bmcgd2l0aCBwaHlzaWNhbCBwb3J0IG51bWJlcjogJWQsICIKCQkJIk5GUCBpbnRlcm5hbCBwb3J0 IG51bWJlcjogJWQiLCBwb3J0LCBody0+bmZwX2lkeCk7CgoJZXRoX2Rldi0+ZGV2X29wcyA9ICZu ZnBfbmV0X25mZDNfZXRoX2Rldl9vcHM7CglldGhfZGV2LT5yeF9xdWV1ZV9jb3VudCA9IG5mcF9u ZXRfcnhfcXVldWVfY291bnQ7CglldGhfZGV2LT5yeF9wa3RfYnVyc3QgPSAmbmZwX25ldF9yZWN2 X3BrdHM7CglldGhfZGV2LT50eF9wa3RfYnVyc3QgPSAmbmZwX25ldF9uZmQzX3htaXRfcGt0czsK CgkvKiBGb3Igc2Vjb25kYXJ5IHByb2Nlc3NlcywgdGhlIHByaW1hcnkgaGFzIGRvbmUgYWxsIHRo ZSB3b3JrICovCglpZiAocnRlX2VhbF9wcm9jZXNzX3R5cGUoKSAhPSBSVEVfUFJPQ19QUklNQVJZ KQoJCXJldHVybiAwOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9l dGhkZXYuYzo0MDIKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJUE1EX0lOSVRfTE9HKERF QlVHLCAiY3RybCBiYXI6ICVwIiwgaHctPmN0cmxfYmFyKTsKCglody0+bWF4X3J4X3F1ZXVlcyA9 IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfTUFYX1JYUklOR1MpOwoJaHctPm1heF90eF9x dWV1ZXMgPSBubl9jZmdfcmVhZGwoaHcsIE5GUF9ORVRfQ0ZHX01BWF9UWFJJTkdTKTsKCgplcnJv cjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjQ0MQplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKCW5mcF9uZXRfY2ZnX3F1ZXVlX3NldHVwKGh3KTsKCgkvKiBH ZXQgc29tZSBvZiB0aGUgcmVhZC1vbmx5IGZpZWxkcyBmcm9tIHRoZSBjb25maWcgQkFSICovCglo dy0+dmVyID0gbm5fY2ZnX3JlYWRsKGh3LCBORlBfTkVUX0NGR19WRVJTSU9OKTsKCWh3LT5jYXAg PSBubl9jZmdfcmVhZGwoaHcsIE5GUF9ORVRfQ0ZHX0NBUCk7Cglody0+bWF4X210dSA9IG5uX2Nm Z19yZWFkbChodywgTkZQX05FVF9DRkdfTUFYX01UVSk7Cglody0+bXR1ID0gUlRFX0VUSEVSX01U VTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6NDcz CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJaW50IGVycjsKCWludCB0b3RhbF9wb3J0czsK CXN0cnVjdCBuZnBfY3BwICpjcHA7CglzdHJ1Y3QgbmZwX3J0c3ltX3RhYmxlICpzeW1fdGJsOwoK CWlmIChwY2lfZGV2ID09IE5VTEwpCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9u ZnAvbmZwX2V0aGRldi5jOjkzOQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJCSJzZWNv bmRhcnkgcHJvY2VzcyBhdHRhY2ggZmFpbGVkLCBldGhkZXYgZG9lc24ndCBleGlzdCIpOwoJCQly ZXR1cm4gLUVOT0RFVjsKCQl9CgkJZXRoX2Rldi0+cHJvY2Vzc19wcml2YXRlID0gY3BwOwoJCWV0 aF9kZXYtPmRldl9vcHMgPSAmbmZwX25ldF9uZmQzX2V0aF9kZXZfb3BzOwoJCWV0aF9kZXYtPnJ4 X3F1ZXVlX2NvdW50ID0gbmZwX25ldF9yeF9xdWV1ZV9jb3VudDsKCQlldGhfZGV2LT5yeF9wa3Rf YnVyc3QgPSAmbmZwX25ldF9yZWN2X3BrdHM7CgkJZXRoX2Rldi0+dHhfcGt0X2J1cnN0ID0gJm5m cF9uZXRfbmZkM194bWl0X3BrdHM7CgkJcnRlX2V0aF9kZXZfcHJvYmluZ19maW5pc2goZXRoX2Rl dik7Cgl9CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYu Yzo5ODgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYy4uLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCS5yeF9xdWV1ZV9pbnRyX2Rpc2FibGUgID0gbmZw X3J4X3F1ZXVlX2ludHJfZGlzYWJsZSwKfTsKCnN0YXRpYyBpbnQKbmZwX25ldHZmX2luaXQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQp7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJz L25ldC9uZnAvbmZwX2V0aGRldl92Zi5jOjI2NQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CglodyA9IE5GUF9ORVRfREVWX1BSSVZBVEVfVE9fSFcoZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZh dGUpOwoKCWV0aF9kZXYtPmRldl9vcHMgPSAmbmZwX25ldHZmX25mZDNfZXRoX2Rldl9vcHM7Cgll dGhfZGV2LT5yeF9xdWV1ZV9jb3VudCA9IG5mcF9uZXRfcnhfcXVldWVfY291bnQ7CglldGhfZGV2 LT5yeF9wa3RfYnVyc3QgPSAmbmZwX25ldF9yZWN2X3BrdHM7CglldGhfZGV2LT50eF9wa3RfYnVy c3QgPSAmbmZwX25ldF9uZmQzX3htaXRfcGt0czsKCgkvKiBGb3Igc2Vjb25kYXJ5IHByb2Nlc3Nl cywgdGhlIHByaW1hcnkgaGFzIGRvbmUgYWxsIHRoZSB3b3JrICovCglpZiAocnRlX2VhbF9wcm9j ZXNzX3R5cGUoKSAhPSBSVEVfUFJPQ19QUklNQVJZKQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYzoyOTIKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CgkJICAgICBwY2lfZGV2LT5hZGRyLmRvbWFpbiwgcGNpX2Rldi0+YWRkci5idXMsCgkJICAg ICBwY2lfZGV2LT5hZGRyLmRldmlkLCBwY2lfZGV2LT5hZGRyLmZ1bmN0aW9uKTsKCglody0+Y3Ry bF9iYXIgPSAodWludDhfdCAqKXBjaV9kZXYtPm1lbV9yZXNvdXJjZVswXS5hZGRyOwoJaWYgKGh3 LT5jdHJsX2JhciA9PSBOVUxMKSB7CgkJUE1EX0RSVl9MT0coRVJSLAoJCQkiaHctPmN0cmxfYmFy IGlzIE5VTEwuIEJBUjAgbm90IGNvbmZpZ3VyZWQiKTsKCQlyZXR1cm4gLUVOT0RFVjsKCX0KCglQ TURfSU5JVF9MT0coREVCVUcsICJjdHJsIGJhcjogJXAiLCBody0+Y3RybF9iYXIpOwoKCWh3LT5t YXhfcnhfcXVldWVzID0gbm5fY2ZnX3JlYWRsKGh3LCBORlBfTkVUX0NGR19NQVhfUlhSSU5HUyk7 Cglody0+bWF4X3R4X3F1ZXVlcyA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfTUFYX1RY UklOR1MpOwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2 X3ZmLmM6MzEzCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJbmZwX25ldF9jZmdfcXVldWVf c2V0dXAoaHcpOwoKCS8qIEdldCBzb21lIG9mIHRoZSByZWFkLW9ubHkgZmllbGRzIGZyb20gdGhl IGNvbmZpZyBCQVIgKi8KCWh3LT52ZXIgPSBubl9jZmdfcmVhZGwoaHcsIE5GUF9ORVRfQ0ZHX1ZF UlNJT04pOwoJaHctPmNhcCA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfQ0FQKTsKCWh3 LT5tYXhfbXR1ID0gbm5fY2ZnX3JlYWRsKGh3LCBORlBfTkVUX0NGR19NQVhfTVRVKTsKCWh3LT5t dHUgPSBSVEVfRVRIRVJfTVRVOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZw L25mcF9ldGhkZXZfdmYuYzozNTQKQXBwbHlpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNzL25mcC5y c3Qgd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBseWluZyBwYXRjaCBkb2Mv Z3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzA3LnJzdCB3aXRoIDEgcmVqZWN0Li4uClJlamVj dGVkIGh1bmsgIzEuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfY3RybC5oIHdp dGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvbmZwL25mcF9ldGhkZXYuYyB3aXRoIDYgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpS ZWplY3RlZCBodW5rICMyLgpSZWplY3RlZCBodW5rICMzLgpSZWplY3RlZCBodW5rICM0LgpSZWpl Y3RlZCBodW5rICM1LgpSZWplY3RlZCBodW5rICM2LgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25l dC9uZnAvbmZwX2V0aGRldl92Zi5jIHdpdGggNCByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEu ClJlamVjdGVkIGh1bmsgIzIuClJlamVjdGVkIGh1bmsgIzMuClJlamVjdGVkIGh1bmsgIzQuCmRp ZmYgYS9kb2MvZ3VpZGVzL25pY3MvbmZwLnJzdCBiL2RvYy9ndWlkZXMvbmljcy9uZnAucnN0CShy ZWplY3RlZCBodW5rcykKQEAgLTEwMCw5ICsxMDAsMTAgQEAgbW9yZSB0aGFuIG9uZSBTbWFydE5J Qywgc2FtZSB0eXBlIG9mIFNtYXJ0TklDIG9yIGRpZmZlcmVudCBvbmVzLCBhbmQgdG8gdXBsb2Fk IGEKIGRpZmZlcmVudCBmaXJtd2FyZSB0byBlYWNoIFNtYXJ0TklDLgogCiAgICAuLiBOb3RlOjoK LSAgICAgIEN1cnJlbnRseSB0aGUgTkZQIFBNRCBzdXBwb3J0cyB1c2luZyB0aGUgUEYgd2l0aCBB Z2lsaW8gQmFzaWMgRmlybXdhcmUuIFNlZQotICAgICAgaHR0cHM6Ly9oZWxwLm5ldHJvbm9tZS5j b20vc3VwcG9ydC9zb2x1dGlvbnMgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlCi0gICAgICB2 YXJpb3VzIGZpcm13YXJlcyBzdXBwb3J0ZWQgYnkgdGhlIE5ldHJvbm9tZSBBZ2lsaW8gQ1ggc21h cnROSUMuCisgICAgICBDdXJyZW50bHkgdGhlIE5GUCBQTUQgc3VwcG9ydHMgdXNpbmcgdGhlIFBG IHdpdGggQWdpbGlvIEZpcm13YXJlIHdpdGggTkZEMworICAgICAgYW5kIEFnaWxpbyBGaXJtd2Fy ZSB3aXRoIE5GRGsuIFNlZSBodHRwczovL2hlbHAubmV0cm9ub21lLmNvbS9zdXBwb3J0L3NvbHV0 aW9ucworICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHZhcmlvdXMgZmlybXdhcmVz IHN1cHBvcnRlZCBieSB0aGUgTmV0cm9ub21lCisgICAgICBBZ2lsaW8gQ1ggc21hcnROSUMuCiAK IFBGIG11bHRpcG9ydCBzdXBwb3J0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIGEvZG9jL2d1 aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8wNy5yc3QgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9y ZWxlYXNlXzIyXzA3LnJzdAkocmVqZWN0ZWQgaHVua3MpCkBAIC0xMTEsNiArMTExLDcgQEAgTmV3 IEZlYXR1cmVzCiAqICoqVXBkYXRlZCBOZXRyb25vbWUgbmZwIGRyaXZlci4qKgogCiAgICogQWRk ZWQgc3VwcG9ydCBmb3IgTkZQMzgwMCBOSUMuCisgICogQWRkZWQgc3VwcG9ydCBmb3IgZmlybXdh cmUgd2l0aCBORkRrLgogCiAqICoqVXBkYXRlZCBWTXdhcmUgdm14bmV0MyBuZXR3b3JraW5nIGRy aXZlci4qKgogCmRpZmYgYS9kcml2ZXJzL25ldC9uZnAvbmZwX2N0cmwuaCBiL2RyaXZlcnMvbmV0 L25mcC9uZnBfY3RybC5oCShyZWplY3RlZCBodW5rcykKQEAgLTEzNSw2ICsxMzUsOCBAQAogICog LSBkZWZpbmUgbW9yZSBTVFMgYml0cwogICovCiAjZGVmaW5lIE5GUF9ORVRfQ0ZHX1ZFUlNJT04g ICAgICAgICAgICAgMHgwMDMwCisjZGVmaW5lICAgTkZQX05FVF9DRkdfVkVSU0lPTl9EUF9ORkQz ICAgMAorI2RlZmluZSAgIE5GUF9ORVRfQ0ZHX1ZFUlNJT05fRFBfTkZESyAgIDEKICNkZWZpbmUg ICBORlBfTkVUX0NGR19WRVJTSU9OX1JFU0VSVkVEX01BU0sJKDB4ZmYgPDwgMjQpCiAjZGVmaW5l ICAgTkZQX05FVF9DRkdfVkVSU0lPTl9DTEFTU19NQVNLICAoMHhmZiA8PCAxNikKICNkZWZpbmUg ICBORlBfTkVUX0NGR19WRVJTSU9OX0NMQVNTKHgpICAgICgoKHgpICYgMHhmZikgPDwgMTYpCmRp ZmYgYS9kcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jIGIvZHJpdmVycy9uZXQvbmZwL25mcF9l dGhkZXYuYwkocmVqZWN0ZWQgaHVua3MpCkBAIC0zNTgsNiArMzU4LDMyIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZXRoX2Rldl9vcHMgbmZwX25ldF9uZmQzX2V0aF9kZXZfb3BzID0gewogCS5yeF9x dWV1ZV9pbnRyX2Rpc2FibGUgID0gbmZwX3J4X3F1ZXVlX2ludHJfZGlzYWJsZSwKIH07CiAKK3N0 YXRpYyBpbmxpbmUgaW50CituZnBfbmV0X2V0aGRldl9vcHNfbW91bnQoc3RydWN0IG5mcF9uZXRf aHcgKmh3LCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpCit7CisJc3dpdGNoIChORkRfQ0ZH X0NMQVNTX1ZFUl9vZihody0+dmVyKSkgeworCWNhc2UgTkZQX05FVF9DRkdfVkVSU0lPTl9EUF9O RkQzOgorCQlicmVhazsKKwljYXNlIE5GUF9ORVRfQ0ZHX1ZFUlNJT05fRFBfTkZESzoKKwkJaWYg KE5GRF9DRkdfTUFKT1JfVkVSU0lPTl9vZihody0+dmVyKSA8IDUpIHsKKwkJCVBNRF9EUlZfTE9H KEVSUiwgIk5GREsgbXVzdCB1c2UgQUJJIDUgb3IgbmV3ZXIsIGZvdW5kOiAlZCIsCisJCQkJTkZE X0NGR19NQUpPUl9WRVJTSU9OX29mKGh3LT52ZXIpKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCVBNRF9EUlZfTE9HKEVSUiwgIlRoZSB2ZXJzaW9uIG9m IGZpcm13YXJlIGlzIG5vdCBjb3JyZWN0LiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwll dGhfZGV2LT5kZXZfb3BzID0gJm5mcF9uZXRfbmZkM19ldGhfZGV2X29wczsKKwlldGhfZGV2LT5y eF9xdWV1ZV9jb3VudCA9IG5mcF9uZXRfcnhfcXVldWVfY291bnQ7CisJZXRoX2Rldi0+cnhfcGt0 X2J1cnN0ID0gJm5mcF9uZXRfcmVjdl9wa3RzOworCWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9ICZu ZnBfbmV0X25mZDNfeG1pdF9wa3RzOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQKIG5m cF9uZXRfaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpCiB7CkBAIC00MDIsMTEgKzQy OCw2IEBAIG5mcF9uZXRfaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpCiAJUE1EX0lO SVRfTE9HKERFQlVHLCAiV29ya2luZyB3aXRoIHBoeXNpY2FsIHBvcnQgbnVtYmVyOiAlZCwgIgog CQkJIk5GUCBpbnRlcm5hbCBwb3J0IG51bWJlcjogJWQiLCBwb3J0LCBody0+bmZwX2lkeCk7CiAK LQlldGhfZGV2LT5kZXZfb3BzID0gJm5mcF9uZXRfbmZkM19ldGhfZGV2X29wczsKLQlldGhfZGV2 LT5yeF9xdWV1ZV9jb3VudCA9IG5mcF9uZXRfcnhfcXVldWVfY291bnQ7Ci0JZXRoX2Rldi0+cnhf cGt0X2J1cnN0ID0gJm5mcF9uZXRfcmVjdl9wa3RzOwotCWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9 ICZuZnBfbmV0X25mZDNfeG1pdF9wa3RzOwotCiAJLyogRm9yIHNlY29uZGFyeSBwcm9jZXNzZXMs IHRoZSBwcmltYXJ5IGhhcyBkb25lIGFsbCB0aGUgd29yayAqLwogCWlmIChydGVfZWFsX3Byb2Nl c3NfdHlwZSgpICE9IFJURV9QUk9DX1BSSU1BUlkpCiAJCXJldHVybiAwOwpAQCAtNDQxLDYgKzQ2 MiwxMSBAQCBuZnBfbmV0X2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQogCiAJUE1E X0lOSVRfTE9HKERFQlVHLCAiY3RybCBiYXI6ICVwIiwgaHctPmN0cmxfYmFyKTsKIAorCWh3LT52 ZXIgPSBubl9jZmdfcmVhZGwoaHcsIE5GUF9ORVRfQ0ZHX1ZFUlNJT04pOworCisJaWYgKG5mcF9u ZXRfZXRoZGV2X29wc19tb3VudChodywgZXRoX2RldikpCisJCXJldHVybiAtRUlOVkFMOworCiAJ aHctPm1heF9yeF9xdWV1ZXMgPSBubl9jZmdfcmVhZGwoaHcsIE5GUF9ORVRfQ0ZHX01BWF9SWFJJ TkdTKTsKIAlody0+bWF4X3R4X3F1ZXVlcyA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdf TUFYX1RYUklOR1MpOwogCkBAIC00NzMsNyArNDk5LDYgQEAgbmZwX25ldF9pbml0KHN0cnVjdCBy dGVfZXRoX2RldiAqZXRoX2RldikKIAluZnBfbmV0X2NmZ19xdWV1ZV9zZXR1cChodyk7CiAKIAkv KiBHZXQgc29tZSBvZiB0aGUgcmVhZC1vbmx5IGZpZWxkcyBmcm9tIHRoZSBjb25maWcgQkFSICov Ci0JaHctPnZlciA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfVkVSU0lPTik7CiAJaHct PmNhcCA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfQ0FQKTsKIAlody0+bWF4X210dSA9 IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfTUFYX01UVSk7CiAJaHctPm10dSA9IFJURV9F VEhFUl9NVFU7CkBAIC05MzksNiArOTY0LDcgQEAgbmZwX3BmX3NlY29uZGFyeV9pbml0KHN0cnVj dCBydGVfcGNpX2RldmljZSAqcGNpX2RldikKIAlpbnQgZXJyOwogCWludCB0b3RhbF9wb3J0czsK IAlzdHJ1Y3QgbmZwX2NwcCAqY3BwOworCXN0cnVjdCBuZnBfbmV0X2h3ICpodzsKIAlzdHJ1Y3Qg bmZwX3J0c3ltX3RhYmxlICpzeW1fdGJsOwogCiAJaWYgKHBjaV9kZXYgPT0gTlVMTCkKQEAgLTk4 OCwxMSArMTAxNCwxNCBAQCBuZnBfcGZfc2Vjb25kYXJ5X2luaXQoc3RydWN0IHJ0ZV9wY2lfZGV2 aWNlICpwY2lfZGV2KQogCQkJCSJzZWNvbmRhcnkgcHJvY2VzcyBhdHRhY2ggZmFpbGVkLCBldGhk ZXYgZG9lc24ndCBleGlzdCIpOwogCQkJcmV0dXJuIC1FTk9ERVY7CiAJCX0KKworCQlodyA9IE5G UF9ORVRfREVWX1BSSVZBVEVfVE9fSFcoZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOworCisJ CWlmIChuZnBfbmV0X2V0aGRldl9vcHNfbW91bnQoaHcsIGV0aF9kZXYpKQorCQkJcmV0dXJuIC1F SU5WQUw7CisKIAkJZXRoX2Rldi0+cHJvY2Vzc19wcml2YXRlID0gY3BwOwotCQlldGhfZGV2LT5k ZXZfb3BzID0gJm5mcF9uZXRfbmZkM19ldGhfZGV2X29wczsKLQkJZXRoX2Rldi0+cnhfcXVldWVf Y291bnQgPSBuZnBfbmV0X3J4X3F1ZXVlX2NvdW50OwotCQlldGhfZGV2LT5yeF9wa3RfYnVyc3Qg PSAmbmZwX25ldF9yZWN2X3BrdHM7Ci0JCWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9ICZuZnBfbmV0 X25mZDNfeG1pdF9wa3RzOworCiAJCXJ0ZV9ldGhfZGV2X3Byb2JpbmdfZmluaXNoKGV0aF9kZXYp OwogCX0KIApkaWZmIGEvZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYyBiL2RyaXZlcnMv bmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMjY1LDYgKzI2NSwz MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzIG5mcF9uZXR2Zl9uZmQzX2V0aF9k ZXZfb3BzID0gewogCS5yeF9xdWV1ZV9pbnRyX2Rpc2FibGUgID0gbmZwX3J4X3F1ZXVlX2ludHJf ZGlzYWJsZSwKIH07CiAKK3N0YXRpYyBpbmxpbmUgaW50CituZnBfbmV0dmZfZXRoZGV2X29wc19t b3VudChzdHJ1Y3QgbmZwX25ldF9odyAqaHcsIHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldikK K3sKKwlzd2l0Y2ggKE5GRF9DRkdfQ0xBU1NfVkVSX29mKGh3LT52ZXIpKSB7CisJY2FzZSBORlBf TkVUX0NGR19WRVJTSU9OX0RQX05GRDM6CisJCWJyZWFrOworCWNhc2UgTkZQX05FVF9DRkdfVkVS U0lPTl9EUF9ORkRLOgorCQlpZiAoTkZEX0NGR19NQUpPUl9WRVJTSU9OX29mKGh3LT52ZXIpIDwg NSkgeworCQkJUE1EX0RSVl9MT0coRVJSLCAiTkZESyBtdXN0IHVzZSBBQkkgNSBvciBuZXdlciwg Zm91bmQ6ICVkIiwKKwkJCQlORkRfQ0ZHX01BSk9SX1ZFUlNJT05fb2YoaHctPnZlcikpOworCQkJ cmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJUE1EX0RSVl9MT0co RVJSLCAiVGhlIHZlcnNpb24gb2YgZmlybXdhcmUgaXMgbm90IGNvcnJlY3QuIik7CisJCXJldHVy biAtRUlOVkFMOworCX0KKworCWV0aF9kZXYtPmRldl9vcHMgPSAmbmZwX25ldHZmX25mZDNfZXRo X2Rldl9vcHM7CisJZXRoX2Rldi0+cnhfcXVldWVfY291bnQgPSBuZnBfbmV0X3J4X3F1ZXVlX2Nv dW50OworCWV0aF9kZXYtPnJ4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3JlY3ZfcGt0czsKKwlldGhf ZGV2LT50eF9wa3RfYnVyc3QgPSAmbmZwX25ldF9uZmQzX3htaXRfcGt0czsKKworCXJldHVybiAw OworfQorCiBzdGF0aWMgaW50CiBuZnBfbmV0dmZfaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0 aF9kZXYpCiB7CkBAIC0yOTIsMTAgKzMxOCwxOSBAQCBuZnBfbmV0dmZfaW5pdChzdHJ1Y3QgcnRl X2V0aF9kZXYgKmV0aF9kZXYpCiAKIAlodyA9IE5GUF9ORVRfREVWX1BSSVZBVEVfVE9fSFcoZXRo X2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwogCi0JZXRoX2Rldi0+ZGV2X29wcyA9ICZuZnBfbmV0 dmZfbmZkM19ldGhfZGV2X29wczsKLQlldGhfZGV2LT5yeF9xdWV1ZV9jb3VudCA9IG5mcF9uZXRf cnhfcXVldWVfY291bnQ7Ci0JZXRoX2Rldi0+cnhfcGt0X2J1cnN0ID0gJm5mcF9uZXRfcmVjdl9w a3RzOwotCWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9ICZuZnBfbmV0X25mZDNfeG1pdF9wa3RzOwor CWh3LT5jdHJsX2JhciA9ICh1aW50OF90ICopcGNpX2Rldi0+bWVtX3Jlc291cmNlWzBdLmFkZHI7 CisJaWYgKGh3LT5jdHJsX2JhciA9PSBOVUxMKSB7CisJCVBNRF9EUlZfTE9HKEVSUiwKKwkJCSJo dy0+Y3RybF9iYXIgaXMgTlVMTC4gQkFSMCBub3QgY29uZmlndXJlZCIpOworCQlyZXR1cm4gLUVO T0RFVjsKKwl9CisKKwlQTURfSU5JVF9MT0coREVCVUcsICJjdHJsIGJhcjogJXAiLCBody0+Y3Ry bF9iYXIpOworCisJaHctPnZlciA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfVkVSU0lP Tik7CisKKwlpZiAobmZwX25ldHZmX2V0aGRldl9vcHNfbW91bnQoaHcsIGV0aF9kZXYpKQorCQly ZXR1cm4gLUVJTlZBTDsKIAogCS8qIEZvciBzZWNvbmRhcnkgcHJvY2Vzc2VzLCB0aGUgcHJpbWFy eSBoYXMgZG9uZSBhbGwgdGhlIHdvcmsgKi8KIAlpZiAocnRlX2VhbF9wcm9jZXNzX3R5cGUoKSAh PSBSVEVfUFJPQ19QUklNQVJZKQpAQCAtMzEzLDE1ICszNDgsNiBAQCBuZnBfbmV0dmZfaW5pdChz dHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpCiAJCSAgICAgcGNpX2Rldi0+YWRkci5kb21haW4s IHBjaV9kZXYtPmFkZHIuYnVzLAogCQkgICAgIHBjaV9kZXYtPmFkZHIuZGV2aWQsIHBjaV9kZXYt PmFkZHIuZnVuY3Rpb24pOwogCi0JaHctPmN0cmxfYmFyID0gKHVpbnQ4X3QgKilwY2lfZGV2LT5t ZW1fcmVzb3VyY2VbMF0uYWRkcjsKLQlpZiAoaHctPmN0cmxfYmFyID09IE5VTEwpIHsKLQkJUE1E X0RSVl9MT0coRVJSLAotCQkJImh3LT5jdHJsX2JhciBpcyBOVUxMLiBCQVIwIG5vdCBjb25maWd1 cmVkIik7Ci0JCXJldHVybiAtRU5PREVWOwotCX0KLQotCVBNRF9JTklUX0xPRyhERUJVRywgImN0 cmwgYmFyOiAlcCIsIGh3LT5jdHJsX2Jhcik7Ci0KIAlody0+bWF4X3J4X3F1ZXVlcyA9IG5uX2Nm Z19yZWFkbChodywgTkZQX05FVF9DRkdfTUFYX1JYUklOR1MpOwogCWh3LT5tYXhfdHhfcXVldWVz ID0gbm5fY2ZnX3JlYWRsKGh3LCBORlBfTkVUX0NGR19NQVhfVFhSSU5HUyk7CiAKQEAgLTM1NCw3 ICszODAsNiBAQCBuZnBfbmV0dmZfaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpCiAJ bmZwX25ldF9jZmdfcXVldWVfc2V0dXAoaHcpOwogCiAJLyogR2V0IHNvbWUgb2YgdGhlIHJlYWQt b25seSBmaWVsZHMgZnJvbSB0aGUgY29uZmlnIEJBUiAqLwotCWh3LT52ZXIgPSBubl9jZmdfcmVh ZGwoaHcsIE5GUF9ORVRfQ0ZHX1ZFUlNJT04pOwogCWh3LT5jYXAgPSBubl9jZmdfcmVhZGwoaHcs IE5GUF9ORVRfQ0ZHX0NBUCk7CiAJaHctPm1heF9tdHUgPSBubl9jZmdfcmVhZGwoaHcsIE5GUF9O RVRfQ0ZHX01BWF9NVFUpOwogCWh3LT5tdHUgPSBSVEVfRVRIRVJfTVRVOwpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9uZnAvbmZwX3J4dHguaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKI2RlZmluZSBQQ0lFX0RFU0NfVFhfRU5DQVBfVlhMQU4gICAgICAgICgxIDw8IDEpCiNkZWZp bmUgUENJRV9ERVNDX1RYX0VOQ0FQX0dSRSAgICAgICAgICAoMSA8PCAwKQoKc3RydWN0IG5mcF9u ZXRfbmZkM190eF9kZXNjIHsKCXVuaW9uIHsKCQlzdHJ1Y3QgewoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4Lmg6NTMKSHVuayAjMiBzdWNjZWVkZWQgYXQgMTM2 IChvZmZzZXQgMjcgbGluZXMpLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCSAqIG9mIHRo ZSBxdWV1ZSBhbmQgQHNpemUgaXMgdGhlIHNpemUgaW4gYnl0ZXMgZm9yIHRoZSBxdWV1ZQoJICog KG5lZWRlZCBmb3IgZnJlZSkKCSAqLwoJc3RydWN0IG5mcF9uZXRfbmZkM190eF9kZXNjICp0eGRz OwoKCS8qCgkgKiBBdCB0aGlzIHBvaW50IDQ4IGJ5dGVzIGhhdmUgYmVlbiB1c2VkIGZvciBhbGwg dGhlIGZpZWxkcyBpbiB0aGUKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9u ZnBfcnh0eC5oOjEyNAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXVpbnQzMl90IHR4X2h0 aHJlc2g7ICAgLyogbm90IHVzZWQgYnkgbm93LiBGdXR1cmU/ICovCgl1aW50MzJfdCB0eF93dGhy ZXNoOyAgIC8qIG5vdCB1c2VkIGJ5IG5vdy4gRnV0dXJlPyAqLwoJdWludDE2X3QgcG9ydF9pZDsK CWludCBxaWR4OwoJaW50IHR4X3FjaWR4OwoJX19sZTY0IGRtYTsKCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5oOjEzNwpBcHBseWluZyBwYXRjaCBkcml2ZXJz L25ldC9uZnAvbmZwX3J4dHguaCB3aXRoIDMgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpI dW5rICMyIGFwcGxpZWQgY2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjMy4KUmVqZWN0ZWQgaHVuayAj NC4KZGlmZiBhL2RyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5oIGIvZHJpdmVycy9uZXQvbmZwL25m cF9yeHR4LmgJKHJlamVjdGVkIGh1bmtzKQpAQCAtNTMsNiArNTMsMzEgQEAKICNkZWZpbmUgUENJ RV9ERVNDX1RYX0VOQ0FQX1ZYTEFOICAgICAgICAoMSA8PCAxKQogI2RlZmluZSBQQ0lFX0RFU0Nf VFhfRU5DQVBfR1JFICAgICAgICAgICgxIDw8IDApCiAKKyNkZWZpbmUgTkZES19UWF9NQVhfREFU QV9QRVJfSEVBRCAgICAgICAweDAwMDAxMDAwCisjZGVmaW5lIE5GREtfREVTQ19UWF9ETUFfTEVO X0hFQUQgICAgICAgMHgwZmZmCisjZGVmaW5lIE5GREtfREVTQ19UWF9UWVBFX0hFQUQgICAgICAg ICAgMHhmMDAwCisjZGVmaW5lIE5GREtfREVTQ19UWF9ETUFfTEVOICAgICAgICAgICAgMHgzZmZm CisjZGVmaW5lIE5GREtfVFhfREVTQ19QRVJfU0lNUExFX1BLVCAgICAgMgorI2RlZmluZSBORkRL X0RFU0NfVFhfVFlQRV9UU08gICAgICAgICAgIDIKKyNkZWZpbmUgTkZES19ERVNDX1RYX1RZUEVf U0lNUExFICAgICAgICA4CisjZGVmaW5lIE5GREtfREVTQ19UWF9UWVBFX0dBVEhFUiAgICAgICAg MQorI2RlZmluZSBORkRLX0RFU0NfVFhfRU9QICAgICAgICAgICAgICAgIEJJVCgxNCkKKyNkZWZp bmUgTkZES19ERVNDX1RYX0w0X0NTVU0gICAgICAgICAgICBCSVQoMSkKKyNkZWZpbmUgTkZES19E RVNDX1RYX0wzX0NTVU0gICAgICAgICAgICBCSVQoMCkKKworI2RlZmluZSBORkRLX1RYX01BWF9E QVRBX1BFUl9ERVNDICAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBORkRLX1RYX0RFU0NfR0FUSEVS X01BWCAgICAgICAgMTcKKyNkZWZpbmUgRElWX1JPVU5EX1VQKG4sIGQpICAgICAgICAgICAgICgo KG4pICsgKGQpIC0gMSkgLyAoZCkpCisjZGVmaW5lIE5GREtfVFhfREVTQ19CTE9DS19TWiAgICAg ICAgICAyNTYKKyNkZWZpbmUgTkZES19UWF9ERVNDX0JMT0NLX0NOVCAgICAgICAgIChORkRLX1RY X0RFU0NfQkxPQ0tfU1ogLyAgICAgICAgIFwKKwkJCQkJc2l6ZW9mKHN0cnVjdCBuZnBfbmV0X25m ZGtfdHhfZGVzYykpCisjZGVmaW5lIE5GREtfVFhfREVTQ19TVE9QX0NOVCAgICAgICAgICAoTkZE S19UWF9ERVNDX0JMT0NLX0NOVCAqICAgICAgICBcCisJCQkJCU5GREtfVFhfREVTQ19QRVJfU0lN UExFX1BLVCkKKyNkZWZpbmUgTkZES19UWF9NQVhfREFUQV9QRVJfQkxPQ0sgICAgIDB4MDAwMTAw MDAKKyNkZWZpbmUgRF9CTE9DS19DUEwoaWR4KSAgICAgICAgICAgICAgIChORkRLX1RYX0RFU0Nf QkxPQ0tfQ05UIC0gICAgICAgIFwKKwkJCQkJKGlkeCkgJSBORkRLX1RYX0RFU0NfQkxPQ0tfQ05U KQorI2RlZmluZSBEX0lEWChyaW5nLCBpZHgpICAgICAgICAgICAgICAgKChpZHgpICYgKChyaW5n KS0+dHhfY291bnQgLSAxKSkKKwogc3RydWN0IG5mcF9uZXRfbmZkM190eF9kZXNjIHsKIAl1bmlv biB7CiAJCXN0cnVjdCB7CkBAIC0xMjQsNyArMTc2LDEwIEBAIHN0cnVjdCBuZnBfbmV0X3R4cSB7 CiAJICogb2YgdGhlIHF1ZXVlIGFuZCBAc2l6ZSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBmb3IgdGhl IHF1ZXVlCiAJICogKG5lZWRlZCBmb3IgZnJlZSkKIAkgKi8KLQlzdHJ1Y3QgbmZwX25ldF9uZmQz X3R4X2Rlc2MgKnR4ZHM7CisJdW5pb24geworCQlzdHJ1Y3QgbmZwX25ldF9uZmQzX3R4X2Rlc2Mg KnR4ZHM7CisJCXN0cnVjdCBuZnBfbmV0X25mZGtfdHhfZGVzYyAqa3R4ZHM7CisJfTsKIAogCS8q CiAJICogQXQgdGhpcyBwb2ludCA0OCBieXRlcyBoYXZlIGJlZW4gdXNlZCBmb3IgYWxsIHRoZSBm aWVsZHMgaW4gdGhlCkBAIC0xMzcsNiArMTkyLDcgQEAgc3RydWN0IG5mcF9uZXRfdHhxIHsKIAl1 aW50MzJfdCB0eF9odGhyZXNoOyAgIC8qIG5vdCB1c2VkIGJ5IG5vdy4gRnV0dXJlPyAqLwogCXVp bnQzMl90IHR4X3d0aHJlc2g7ICAgLyogbm90IHVzZWQgYnkgbm93LiBGdXR1cmU/ICovCiAJdWlu dDE2X3QgcG9ydF9pZDsKKwl1aW50MTZfdCBkYXRhX3BlbmRpbmc7IC8qIHVzZWQgYnkgbmZkayBv bmx5ICovCiAJaW50IHFpZHg7CiAJaW50IHR4X3FjaWR4OwogCV9fbGU2NCBkbWE7CkNoZWNraW5n IHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJj aGluZyBmb3I6CgkucnhfcXVldWVfaW50cl9kaXNhYmxlICA9IG5mcF9yeF9xdWV1ZV9pbnRyX2Rp c2FibGUsCn07CgpzdGF0aWMgaW5saW5lIGludApuZnBfbmV0X2V0aGRldl9vcHNfbW91bnQoc3Ry dWN0IG5mcF9uZXRfaHcgKmh3LCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpCnsKCXN3aXRj aCAoTkZEX0NGR19DTEFTU19WRVJfb2YoaHctPnZlcikpIHsKCWNhc2UgTkZQX05FVF9DRkdfVkVS U0lPTl9EUF9ORkQzOgoJCWJyZWFrOwoJY2FzZSBORlBfTkVUX0NGR19WRVJTSU9OX0RQX05GREs6 CgkJaWYgKE5GRF9DRkdfTUFKT1JfVkVSU0lPTl9vZihody0+dmVyKSA8IDUpIHsKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6MzU4CmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoJCQkJTkZEX0NGR19NQUpPUl9WRVJTSU9OX29mKGh3LT52ZXIpKTsK CQkJcmV0dXJuIC1FSU5WQUw7CgkJfQoJCWJyZWFrOwoJZGVmYXVsdDoKCQlQTURfRFJWX0xPRyhF UlIsICJUaGUgdmVyc2lvbiBvZiBmaXJtd2FyZSBpcyBub3QgY29ycmVjdC4iKTsKCQlyZXR1cm4g LUVJTlZBTDsKCX0KCglldGhfZGV2LT5kZXZfb3BzID0gJm5mcF9uZXRfbmZkM19ldGhfZGV2X29w czsKCWV0aF9kZXYtPnJ4X3F1ZXVlX2NvdW50ID0gbmZwX25ldF9yeF9xdWV1ZV9jb3VudDsKCWV0 aF9kZXYtPnJ4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3JlY3ZfcGt0czsKCWV0aF9kZXYtPnR4X3Br dF9idXJzdCA9ICZuZnBfbmV0X25mZDNfeG1pdF9wa3RzOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYzozNzAKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvbmZwL25mcF9ldGhkZXZfdmYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCS5y eF9xdWV1ZV9pbnRyX2Rpc2FibGUgID0gbmZwX3J4X3F1ZXVlX2ludHJfZGlzYWJsZSwKfTsKCnN0 YXRpYyBpbmxpbmUgaW50Cm5mcF9uZXR2Zl9ldGhkZXZfb3BzX21vdW50KHN0cnVjdCBuZnBfbmV0 X2h3ICpodywgc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQp7Cglzd2l0Y2ggKE5GRF9DRkdf Q0xBU1NfVkVSX29mKGh3LT52ZXIpKSB7CgljYXNlIE5GUF9ORVRfQ0ZHX1ZFUlNJT05fRFBfTkZE MzoKCQlicmVhazsKCWNhc2UgTkZQX05FVF9DRkdfVkVSU0lPTl9EUF9ORkRLOgoJCWlmIChORkRf Q0ZHX01BSk9SX1ZFUlNJT05fb2YoaHctPnZlcikgPCA1KSB7CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5jOjI2NQplcnJvcjogd2hpbGUgc2VhcmNo aW5nIGZvcjoKCQkJCU5GRF9DRkdfTUFKT1JfVkVSU0lPTl9vZihody0+dmVyKSk7CgkJCXJldHVy biAtRUlOVkFMOwoJCX0KCQlicmVhazsKCWRlZmF1bHQ6CgkJUE1EX0RSVl9MT0coRVJSLCAiVGhl IHZlcnNpb24gb2YgZmlybXdhcmUgaXMgbm90IGNvcnJlY3QuIik7CgkJcmV0dXJuIC1FSU5WQUw7 Cgl9CgoJZXRoX2Rldi0+ZGV2X29wcyA9ICZuZnBfbmV0dmZfbmZkM19ldGhfZGV2X29wczsKCWV0 aF9kZXYtPnJ4X3F1ZXVlX2NvdW50ID0gbmZwX25ldF9yeF9xdWV1ZV9jb3VudDsKCWV0aF9kZXYt PnJ4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3JlY3ZfcGt0czsKCWV0aF9kZXYtPnR4X3BrdF9idXJz dCA9ICZuZnBfbmV0X25mZDNfeG1pdF9wa3RzOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYzoyNzcKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQv bmZwL25mcF9yeHR4LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJcmV0dXJuIGk7 Cn0KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5jOjk4NwpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX3J4dHguaC4uLgplcnJvcjogZHJpdmVy cy9uZXQvbmZwL25mcF9yeHR4Lmg6IGRvZXMgbm90IG1hdGNoIGluZGV4CkFwcGx5aW5nIHBhdGNo IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmMgd2l0aCAyIHJlamVjdHMuLi4KUmVqZWN0ZWQg aHVuayAjMS4KUmVqZWN0ZWQgaHVuayAjMi4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZw L25mcF9ldGhkZXZfdmYuYyB3aXRoIDIgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWpl Y3RlZCBodW5rICMyLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX3J4dHguYyB3 aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCmRpZmYgYS9kcml2ZXJzL25ldC9uZnAv bmZwX2V0aGRldi5jIGIvZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYwkocmVqZWN0ZWQgaHVu a3MpCkBAIC0zNTgsMTEgKzM1OCw0MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aF9kZXZfb3Bz IG5mcF9uZXRfbmZkM19ldGhfZGV2X29wcyA9IHsKIAkucnhfcXVldWVfaW50cl9kaXNhYmxlICA9 IG5mcF9yeF9xdWV1ZV9pbnRyX2Rpc2FibGUsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGV0 aF9kZXZfb3BzIG5mcF9uZXRfbmZka19ldGhfZGV2X29wcyA9IHsKKwkuZGV2X2NvbmZpZ3VyZQkJ PSBuZnBfbmV0X2NvbmZpZ3VyZSwKKwkuZGV2X3N0YXJ0CQk9IG5mcF9uZXRfc3RhcnQsCisJLmRl dl9zdG9wCQk9IG5mcF9uZXRfc3RvcCwKKwkuZGV2X3NldF9saW5rX3VwCT0gbmZwX25ldF9zZXRf bGlua191cCwKKwkuZGV2X3NldF9saW5rX2Rvd24JPSBuZnBfbmV0X3NldF9saW5rX2Rvd24sCisJ LmRldl9jbG9zZQkJPSBuZnBfbmV0X2Nsb3NlLAorCS5wcm9taXNjdW91c19lbmFibGUJPSBuZnBf bmV0X3Byb21pc2NfZW5hYmxlLAorCS5wcm9taXNjdW91c19kaXNhYmxlCT0gbmZwX25ldF9wcm9t aXNjX2Rpc2FibGUsCisJLmxpbmtfdXBkYXRlCQk9IG5mcF9uZXRfbGlua191cGRhdGUsCisJLnN0 YXRzX2dldAkJPSBuZnBfbmV0X3N0YXRzX2dldCwKKwkuc3RhdHNfcmVzZXQJCT0gbmZwX25ldF9z dGF0c19yZXNldCwKKwkuZGV2X2luZm9zX2dldAkJPSBuZnBfbmV0X2luZm9zX2dldCwKKwkuZGV2 X3N1cHBvcnRlZF9wdHlwZXNfZ2V0ID0gbmZwX25ldF9zdXBwb3J0ZWRfcHR5cGVzX2dldCwKKwku bXR1X3NldAkJPSBuZnBfbmV0X2Rldl9tdHVfc2V0LAorCS5tYWNfYWRkcl9zZXQJCT0gbmZwX25l dF9zZXRfbWFjX2FkZHIsCisJLnZsYW5fb2ZmbG9hZF9zZXQJPSBuZnBfbmV0X3ZsYW5fb2ZmbG9h ZF9zZXQsCisJLnJldGFfdXBkYXRlCQk9IG5mcF9uZXRfcmV0YV91cGRhdGUsCisJLnJldGFfcXVl cnkJCT0gbmZwX25ldF9yZXRhX3F1ZXJ5LAorCS5yc3NfaGFzaF91cGRhdGUJPSBuZnBfbmV0X3Jz c19oYXNoX3VwZGF0ZSwKKwkucnNzX2hhc2hfY29uZl9nZXQJPSBuZnBfbmV0X3Jzc19oYXNoX2Nv bmZfZ2V0LAorCS5yeF9xdWV1ZV9zZXR1cAkJPSBuZnBfbmV0X3J4X3F1ZXVlX3NldHVwLAorCS5y eF9xdWV1ZV9yZWxlYXNlCT0gbmZwX25ldF9yeF9xdWV1ZV9yZWxlYXNlLAorCS50eF9xdWV1ZV9z ZXR1cAkJPSBuZnBfbmV0X25mZGtfdHhfcXVldWVfc2V0dXAsCisJLnR4X3F1ZXVlX3JlbGVhc2UJ PSBuZnBfbmV0X3R4X3F1ZXVlX3JlbGVhc2UsCisJLnJ4X3F1ZXVlX2ludHJfZW5hYmxlICAgPSBu ZnBfcnhfcXVldWVfaW50cl9lbmFibGUsCisJLnJ4X3F1ZXVlX2ludHJfZGlzYWJsZSAgPSBuZnBf cnhfcXVldWVfaW50cl9kaXNhYmxlLAorfTsKKwogc3RhdGljIGlubGluZSBpbnQKIG5mcF9uZXRf ZXRoZGV2X29wc19tb3VudChzdHJ1Y3QgbmZwX25ldF9odyAqaHcsIHN0cnVjdCBydGVfZXRoX2Rl diAqZXRoX2RldikKIHsKIAlzd2l0Y2ggKE5GRF9DRkdfQ0xBU1NfVkVSX29mKGh3LT52ZXIpKSB7 CiAJY2FzZSBORlBfTkVUX0NGR19WRVJTSU9OX0RQX05GRDM6CisJCWV0aF9kZXYtPmRldl9vcHMg PSAmbmZwX25ldF9uZmQzX2V0aF9kZXZfb3BzOwogCQlicmVhazsKIAljYXNlIE5GUF9ORVRfQ0ZH X1ZFUlNJT05fRFBfTkZESzoKIAkJaWYgKE5GRF9DRkdfTUFKT1JfVkVSU0lPTl9vZihody0+dmVy KSA8IDUpIHsKQEAgLTM3MCwxMyArNDAwLDEzIEBAIG5mcF9uZXRfZXRoZGV2X29wc19tb3VudChz dHJ1Y3QgbmZwX25ldF9odyAqaHcsIHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldikKIAkJCQlO RkRfQ0ZHX01BSk9SX1ZFUlNJT05fb2YoaHctPnZlcikpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJ CX0KKwkJZXRoX2Rldi0+ZGV2X29wcyA9ICZuZnBfbmV0X25mZGtfZXRoX2Rldl9vcHM7CiAJCWJy ZWFrOwogCWRlZmF1bHQ6CiAJCVBNRF9EUlZfTE9HKEVSUiwgIlRoZSB2ZXJzaW9uIG9mIGZpcm13 YXJlIGlzIG5vdCBjb3JyZWN0LiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlldGhfZGV2 LT5kZXZfb3BzID0gJm5mcF9uZXRfbmZkM19ldGhfZGV2X29wczsKIAlldGhfZGV2LT5yeF9xdWV1 ZV9jb3VudCA9IG5mcF9uZXRfcnhfcXVldWVfY291bnQ7CiAJZXRoX2Rldi0+cnhfcGt0X2J1cnN0 ID0gJm5mcF9uZXRfcmVjdl9wa3RzOwogCWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9ICZuZnBfbmV0 X25mZDNfeG1pdF9wa3RzOwpkaWZmIGEvZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYyBi L2RyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMjY1 LDExICsyNjUsNDEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29wcyBuZnBfbmV0dmZf bmZkM19ldGhfZGV2X29wcyA9IHsKIAkucnhfcXVldWVfaW50cl9kaXNhYmxlICA9IG5mcF9yeF9x dWV1ZV9pbnRyX2Rpc2FibGUsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGV0aF9kZXZfb3Bz IG5mcF9uZXR2Zl9uZmRrX2V0aF9kZXZfb3BzID0geworCS5kZXZfY29uZmlndXJlCQk9IG5mcF9u ZXRfY29uZmlndXJlLAorCS5kZXZfc3RhcnQJCT0gbmZwX25ldHZmX3N0YXJ0LAorCS5kZXZfc3Rv cAkJPSBuZnBfbmV0dmZfc3RvcCwKKwkuZGV2X3NldF9saW5rX3VwCT0gbmZwX25ldHZmX3NldF9s aW5rX3VwLAorCS5kZXZfc2V0X2xpbmtfZG93bgk9IG5mcF9uZXR2Zl9zZXRfbGlua19kb3duLAor CS5kZXZfY2xvc2UJCT0gbmZwX25ldHZmX2Nsb3NlLAorCS5wcm9taXNjdW91c19lbmFibGUJPSBu ZnBfbmV0X3Byb21pc2NfZW5hYmxlLAorCS5wcm9taXNjdW91c19kaXNhYmxlCT0gbmZwX25ldF9w cm9taXNjX2Rpc2FibGUsCisJLmxpbmtfdXBkYXRlCQk9IG5mcF9uZXRfbGlua191cGRhdGUsCisJ LnN0YXRzX2dldAkJPSBuZnBfbmV0X3N0YXRzX2dldCwKKwkuc3RhdHNfcmVzZXQJCT0gbmZwX25l dF9zdGF0c19yZXNldCwKKwkuZGV2X2luZm9zX2dldAkJPSBuZnBfbmV0X2luZm9zX2dldCwKKwku ZGV2X3N1cHBvcnRlZF9wdHlwZXNfZ2V0ID0gbmZwX25ldF9zdXBwb3J0ZWRfcHR5cGVzX2dldCwK KwkubXR1X3NldAkJPSBuZnBfbmV0X2Rldl9tdHVfc2V0LAorCS5tYWNfYWRkcl9zZXQJCT0gbmZw X25ldF9zZXRfbWFjX2FkZHIsCisJLnZsYW5fb2ZmbG9hZF9zZXQJPSBuZnBfbmV0X3ZsYW5fb2Zm bG9hZF9zZXQsCisJLnJldGFfdXBkYXRlCQk9IG5mcF9uZXRfcmV0YV91cGRhdGUsCisJLnJldGFf cXVlcnkJCT0gbmZwX25ldF9yZXRhX3F1ZXJ5LAorCS5yc3NfaGFzaF91cGRhdGUJPSBuZnBfbmV0 X3Jzc19oYXNoX3VwZGF0ZSwKKwkucnNzX2hhc2hfY29uZl9nZXQJPSBuZnBfbmV0X3Jzc19oYXNo X2NvbmZfZ2V0LAorCS5yeF9xdWV1ZV9zZXR1cAkJPSBuZnBfbmV0X3J4X3F1ZXVlX3NldHVwLAor CS5yeF9xdWV1ZV9yZWxlYXNlCT0gbmZwX25ldF9yeF9xdWV1ZV9yZWxlYXNlLAorCS50eF9xdWV1 ZV9zZXR1cAkJPSBuZnBfbmV0X25mZGtfdHhfcXVldWVfc2V0dXAsCisJLnR4X3F1ZXVlX3JlbGVh c2UJPSBuZnBfbmV0X3R4X3F1ZXVlX3JlbGVhc2UsCisJLnJ4X3F1ZXVlX2ludHJfZW5hYmxlICAg PSBuZnBfcnhfcXVldWVfaW50cl9lbmFibGUsCisJLnJ4X3F1ZXVlX2ludHJfZGlzYWJsZSAgPSBu ZnBfcnhfcXVldWVfaW50cl9kaXNhYmxlLAorfTsKKwogc3RhdGljIGlubGluZSBpbnQKIG5mcF9u ZXR2Zl9ldGhkZXZfb3BzX21vdW50KHN0cnVjdCBuZnBfbmV0X2h3ICpodywgc3RydWN0IHJ0ZV9l dGhfZGV2ICpldGhfZGV2KQogewogCXN3aXRjaCAoTkZEX0NGR19DTEFTU19WRVJfb2YoaHctPnZl cikpIHsKIAljYXNlIE5GUF9ORVRfQ0ZHX1ZFUlNJT05fRFBfTkZEMzoKKwkJZXRoX2Rldi0+ZGV2 X29wcyA9ICZuZnBfbmV0dmZfbmZkM19ldGhfZGV2X29wczsKIAkJYnJlYWs7CiAJY2FzZSBORlBf TkVUX0NGR19WRVJTSU9OX0RQX05GREs6CiAJCWlmIChORkRfQ0ZHX01BSk9SX1ZFUlNJT05fb2Yo aHctPnZlcikgPCA1KSB7CkBAIC0yNzcsMTMgKzMwNywxMyBAQCBuZnBfbmV0dmZfZXRoZGV2X29w c19tb3VudChzdHJ1Y3QgbmZwX25ldF9odyAqaHcsIHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2Rl dikKIAkJCQlORkRfQ0ZHX01BSk9SX1ZFUlNJT05fb2YoaHctPnZlcikpOwogCQkJcmV0dXJuIC1F SU5WQUw7CiAJCX0KKwkJZXRoX2Rldi0+ZGV2X29wcyA9ICZuZnBfbmV0dmZfbmZka19ldGhfZGV2 X29wczsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJUE1EX0RSVl9MT0coRVJSLCAiVGhlIHZlcnNp b24gb2YgZmlybXdhcmUgaXMgbm90IGNvcnJlY3QuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0K IAotCWV0aF9kZXYtPmRldl9vcHMgPSAmbmZwX25ldHZmX25mZDNfZXRoX2Rldl9vcHM7CiAJZXRo X2Rldi0+cnhfcXVldWVfY291bnQgPSBuZnBfbmV0X3J4X3F1ZXVlX2NvdW50OwogCWV0aF9kZXYt PnJ4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3JlY3ZfcGt0czsKIAlldGhfZGV2LT50eF9wa3RfYnVy c3QgPSAmbmZwX25ldF9uZmQzX3htaXRfcGt0czsKZGlmZiBhL2RyaXZlcnMvbmV0L25mcC9uZnBf cnh0eC5jIGIvZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmMJKHJlamVjdGVkIGh1bmtzKQpAQCAt OTg3LDMgKzk4NywxMjAgQEAgbmZwX25ldF9uZmQzX3htaXRfcGt0cyh2b2lkICp0eF9xdWV1ZSwg c3RydWN0IHJ0ZV9tYnVmICoqdHhfcGt0cywgdWludDE2X3QgbmJfcGsKIAogCXJldHVybiBpOwog fQorCitpbnQKK25mcF9uZXRfbmZka190eF9xdWV1ZV9zZXR1cChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwKKwkJdWludDE2X3QgcXVldWVfaWR4LAorCQl1aW50MTZfdCBuYl9kZXNjLAorCQl1bnNp Z25lZCBpbnQgc29ja2V0X2lkLAorCQljb25zdCBzdHJ1Y3QgcnRlX2V0aF90eGNvbmYgKnR4X2Nv bmYpCit7CisJY29uc3Qgc3RydWN0IHJ0ZV9tZW16b25lICp0ejsKKwlzdHJ1Y3QgbmZwX25ldF90 eHEgKnR4cTsKKwl1aW50MTZfdCB0eF9mcmVlX3RocmVzaDsKKwlzdHJ1Y3QgbmZwX25ldF9odyAq aHc7CisJdWludDMyX3QgdHhfZGVzY19zejsKKworCWh3ID0gTkZQX05FVF9ERVZfUFJJVkFURV9U T19IVyhkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKKworCVBNRF9JTklUX0ZVTkNfVFJBQ0UoKTsK KworCS8qIFZhbGlkYXRpbmcgbnVtYmVyIG9mIGRlc2NyaXB0b3JzICovCisJdHhfZGVzY19zeiA9 IG5iX2Rlc2MgKiBzaXplb2Yoc3RydWN0IG5mcF9uZXRfbmZka190eF9kZXNjKTsKKwlpZiAoKChO RkRLX1RYX0RFU0NfUEVSX1NJTVBMRV9QS1QgKiB0eF9kZXNjX3N6KSAlIE5GUF9BTElHTl9SSU5H X0RFU0MpICE9IDAgfHwKKwkgICAgKChORkRLX1RYX0RFU0NfUEVSX1NJTVBMRV9QS1QgKiBuYl9k ZXNjKSAlIE5GREtfVFhfREVTQ19CTE9DS19DTlQpICE9IDAgfHwKKwkgICAgICBuYl9kZXNjID4g TkZQX05FVF9NQVhfVFhfREVTQyB8fCBuYl9kZXNjIDwgTkZQX05FVF9NSU5fVFhfREVTQykgewor CQlQTURfRFJWX0xPRyhFUlIsICJXcm9uZyBuYl9kZXNjIHZhbHVlIik7CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCXR4X2ZyZWVfdGhyZXNoID0gKHVpbnQxNl90KSgodHhfY29uZi0+dHhfZnJl ZV90aHJlc2gpID8KKwkJCQl0eF9jb25mLT50eF9mcmVlX3RocmVzaCA6CisJCQkJREVGQVVMVF9U WF9GUkVFX1RIUkVTSCk7CisKKwlpZiAodHhfZnJlZV90aHJlc2ggPiAobmJfZGVzYykpIHsKKwkJ UE1EX0RSVl9MT0coRVJSLAorCQkJInR4X2ZyZWVfdGhyZXNoIG11c3QgYmUgbGVzcyB0aGFuIHRo ZSBudW1iZXIgb2YgVFggIgorCQkJImRlc2NyaXB0b3JzLiAodHhfZnJlZV90aHJlc2g9JXUgcG9y dD0lZCAiCisJCQkicXVldWU9JWQpIiwgKHVuc2lnbmVkIGludCl0eF9mcmVlX3RocmVzaCwKKwkJ CWRldi0+ZGF0YS0+cG9ydF9pZCwgKGludClxdWV1ZV9pZHgpOworCQlyZXR1cm4gLShFSU5WQUwp OworCX0KKworCS8qCisJICogRnJlZSBtZW1vcnkgcHJpb3IgdG8gcmUtYWxsb2NhdGlvbiBpZiBu ZWVkZWQuIFRoaXMgaXMgdGhlIGNhc2UgYWZ0ZXIKKwkgKiBjYWxsaW5nIG5mcF9uZXRfc3RvcAor CSAqLworCWlmIChkZXYtPmRhdGEtPnR4X3F1ZXVlc1txdWV1ZV9pZHhdKSB7CisJCVBNRF9UWF9M T0coREVCVUcsICJGcmVlaW5nIG1lbW9yeSBwcmlvciB0byByZS1hbGxvY2F0aW9uICVkIiwKKwkJ CQlxdWV1ZV9pZHgpOworCQluZnBfbmV0X3R4X3F1ZXVlX3JlbGVhc2UoZGV2LCBxdWV1ZV9pZHgp OworCQlkZXYtPmRhdGEtPnR4X3F1ZXVlc1txdWV1ZV9pZHhdID0gTlVMTDsKKwl9CisKKwkvKiBB bGxvY2F0aW5nIHR4IHF1ZXVlIGRhdGEgc3RydWN0dXJlICovCisJdHhxID0gcnRlX3ptYWxsb2Nf c29ja2V0KCJldGhkZXYgVFggcXVldWUiLCBzaXplb2Yoc3RydWN0IG5mcF9uZXRfdHhxKSwKKwkJ CVJURV9DQUNIRV9MSU5FX1NJWkUsIHNvY2tldF9pZCk7CisJaWYgKHR4cSA9PSBOVUxMKSB7CisJ CVBNRF9EUlZfTE9HKEVSUiwgIkVycm9yIGFsbG9jYXRpbmcgdHggZG1hIik7CisJCXJldHVybiAt RU5PTUVNOworCX0KKworCS8qCisJICogQWxsb2NhdGUgVFggcmluZyBoYXJkd2FyZSBkZXNjcmlw dG9ycy4gQSBtZW16b25lIGxhcmdlIGVub3VnaCB0bworCSAqIGhhbmRsZSB0aGUgbWF4aW11bSBy aW5nIHNpemUgaXMgYWxsb2NhdGVkIGluIG9yZGVyIHRvIGFsbG93IGZvcgorCSAqIHJlc2l6aW5n IGluIGxhdGVyIGNhbGxzIHRvIHRoZSBxdWV1ZSBzZXR1cCBmdW5jdGlvbi4KKwkgKi8KKwl0eiA9 IHJ0ZV9ldGhfZG1hX3pvbmVfcmVzZXJ2ZShkZXYsICJ0eF9yaW5nIiwgcXVldWVfaWR4LAorCQkJ CXNpemVvZihzdHJ1Y3QgbmZwX25ldF9uZmRrX3R4X2Rlc2MpICoKKwkJCQlORkRLX1RYX0RFU0Nf UEVSX1NJTVBMRV9QS1QgKgorCQkJCU5GUF9ORVRfTUFYX1RYX0RFU0MsIE5GUF9NRU1aT05FX0FM SUdOLAorCQkJCXNvY2tldF9pZCk7CisJaWYgKHR6ID09IE5VTEwpIHsKKwkJUE1EX0RSVl9MT0co RVJSLCAiRXJyb3IgYWxsb2NhdGluZyB0eCBkbWEiKTsKKwkJbmZwX25ldF90eF9xdWV1ZV9yZWxl YXNlKGRldiwgcXVldWVfaWR4KTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJdHhxLT50eF9j b3VudCA9IG5iX2Rlc2MgKiBORkRLX1RYX0RFU0NfUEVSX1NJTVBMRV9QS1Q7CisJdHhxLT50eF9m cmVlX3RocmVzaCA9IHR4X2ZyZWVfdGhyZXNoOworCXR4cS0+dHhfcHRocmVzaCA9IHR4X2NvbmYt PnR4X3RocmVzaC5wdGhyZXNoOworCXR4cS0+dHhfaHRocmVzaCA9IHR4X2NvbmYtPnR4X3RocmVz aC5odGhyZXNoOworCXR4cS0+dHhfd3RocmVzaCA9IHR4X2NvbmYtPnR4X3RocmVzaC53dGhyZXNo OworCisJLyogcXVldWUgbWFwcGluZyBiYXNlZCBvbiBmaXJtd2FyZSBjb25maWd1cmF0aW9uICov CisJdHhxLT5xaWR4ID0gcXVldWVfaWR4OworCXR4cS0+dHhfcWNpZHggPSBxdWV1ZV9pZHggKiBo dy0+c3RyaWRlX3R4OworCXR4cS0+cWNwX3EgPSBody0+dHhfYmFyICsgTkZQX1FDUF9RVUVVRV9P RkYodHhxLT50eF9xY2lkeCk7CisKKwl0eHEtPnBvcnRfaWQgPSBkZXYtPmRhdGEtPnBvcnRfaWQ7 CisKKwkvKiBTYXZpbmcgcGh5c2ljYWwgYW5kIHZpcnR1YWwgYWRkcmVzc2VzIGZvciB0aGUgVFgg cmluZyAqLworCXR4cS0+ZG1hID0gKHVpbnQ2NF90KXR6LT5pb3ZhOworCXR4cS0+a3R4ZHMgPSAo c3RydWN0IG5mcF9uZXRfbmZka190eF9kZXNjICopdHotPmFkZHI7CisKKwkvKiBtYnVmIHBvaW50 ZXJzIGFycmF5IGZvciByZWZlcmVuY2luZyBtYnVmcyBsaW5rZWQgdG8gVFggZGVzY3JpcHRvcnMg Ki8KKwl0eHEtPnR4YnVmcyA9IHJ0ZV96bWFsbG9jX3NvY2tldCgidHhxLT50eGJ1ZnMiLAorCQkJ CXNpemVvZigqdHhxLT50eGJ1ZnMpICogdHhxLT50eF9jb3VudCwKKwkJCQlSVEVfQ0FDSEVfTElO RV9TSVpFLCBzb2NrZXRfaWQpOworCisJaWYgKHR4cS0+dHhidWZzID09IE5VTEwpIHsKKwkJbmZw X25ldF90eF9xdWV1ZV9yZWxlYXNlKGRldiwgcXVldWVfaWR4KTsKKwkJcmV0dXJuIC1FTk9NRU07 CisJfQorCVBNRF9UWF9MT0coREVCVUcsICJ0eGJ1ZnM9JXAgaHdfcmluZz0lcCBkbWFfYWRkcj0w eCUiIFBSSXg2NCwKKwkJdHhxLT50eGJ1ZnMsIHR4cS0+a3R4ZHMsICh1bnNpZ25lZCBsb25nKXR4 cS0+ZG1hKTsKKworCW5mcF9uZXRfcmVzZXRfdHhfcXVldWUodHhxKTsKKworCWRldi0+ZGF0YS0+ dHhfcXVldWVzW3F1ZXVlX2lkeF0gPSB0eHE7CisJdHhxLT5odyA9IGh3OworCS8qCisJICogVGVs bGluZyB0aGUgSFcgYWJvdXQgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFRYIHJpbmcgYW5k IG51bWJlcgorCSAqIG9mIGRlc2NyaXB0b3JzIGluIGxvZzIgZm9ybWF0CisJICovCisJbm5fY2Zn X3dyaXRlcShodywgTkZQX05FVF9DRkdfVFhSX0FERFIocXVldWVfaWR4KSwgdHhxLT5kbWEpOwor CW5uX2NmZ193cml0ZWIoaHcsIE5GUF9ORVRfQ0ZHX1RYUl9TWihxdWV1ZV9pZHgpLCBydGVfbG9n Ml91MzIodHhxLT50eF9jb3VudCkpOworCisJcmV0dXJuIDA7Cit9CkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CglyZXR1cm4gcmV0Owp9CgpSVEVfTE9HX1JFR0lTVEVSX1NVRkZJWChuZnBfbG9ndHlwZV9pbml0 LCBpbml0LCBOT1RJQ0UpOwpSVEVfTE9HX1JFR0lTVEVSX1NVRkZJWChuZnBfbG9ndHlwZV9kcml2 ZXIsIGRyaXZlciwgTk9USUNFKTsKLyoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L25mcC9uZnBfY29tbW9uLmM6MTMyMApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZw X2NvbW1vbi5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgppbnQgbmZwX25ldF9yc3Nf aGFzaF9jb25mX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJICAgICAgc3RydWN0IHJ0 ZV9ldGhfcnNzX2NvbmYgKnJzc19jb25mKTsKaW50IG5mcF9uZXRfcnNzX2NvbmZpZ19kZWZhdWx0 KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKCiNkZWZpbmUgTkZQX05FVF9ERVZfUFJJVkFURV9U T19IVyhhZGFwdGVyKVwKCSgmKChzdHJ1Y3QgbmZwX25ldF9hZGFwdGVyICopYWRhcHRlciktPmh3 KQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24uaDo0MTMK Q2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKc3RhdGljIGludApuZnBfbmV0X3N0b3Aoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYpCnsKCWludCBpOwoJc3RydWN0IG5mcF9uZXRfaHcgKmh3OwoJc3RydWN0IG5mcF9u ZXRfdHhxICp0aGlzX3R4X3E7CglzdHJ1Y3QgbmZwX25ldF9yeHEgKnRoaXNfcnhfcTsKCglQTURf SU5JVF9MT0coREVCVUcsICJTdG9wIik7CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9u ZXQvbmZwL25mcF9ldGhkZXYuYzoxODEKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgluZnBf bmV0X2Rpc2FibGVfcXVldWVzKGRldik7CgoJLyogQ2xlYXIgcXVldWVzICovCglmb3IgKGkgPSAw OyBpIDwgZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXM7IGkrKykgewoJCXRoaXNfdHhfcSA9IChzdHJ1 Y3QgbmZwX25ldF90eHEgKilkZXYtPmRhdGEtPnR4X3F1ZXVlc1tpXTsKCQluZnBfbmV0X3Jlc2V0 X3R4X3F1ZXVlKHRoaXNfdHhfcSk7Cgl9CgoJZm9yIChpID0gMDsgaSA8IGRldi0+ZGF0YS0+bmJf cnhfcXVldWVzOyBpKyspIHsKCQl0aGlzX3J4X3EgPSAoc3RydWN0IG5mcF9uZXRfcnhxICopZGV2 LT5kYXRhLT5yeF9xdWV1ZXNbaV07CgkJbmZwX25ldF9yZXNldF9yeF9xdWV1ZSh0aGlzX3J4X3Ep OwoJfQoKCWlmIChydGVfZWFsX3Byb2Nlc3NfdHlwZSgpID09IFJURV9QUk9DX1BSSU1BUlkpCgkJ LyogQ29uZmlndXJlIHRoZSBwaHlzaWNhbCBwb3J0IGRvd24gKi8KCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmM6MTkzCmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgoJc3RydWN0IG5mcF9uZXRfaHcgKmh3OwoJc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpw Y2lfZGV2OwoJc3RydWN0IG5mcF9wZl9kZXYgKnBmX2RldjsKCXN0cnVjdCBuZnBfbmV0X3R4cSAq dGhpc190eF9xOwoJc3RydWN0IG5mcF9uZXRfcnhxICp0aGlzX3J4X3E7CglpbnQgaTsKCglpZiAo cnRlX2VhbF9wcm9jZXNzX3R5cGUoKSAhPSBSVEVfUFJPQ19QUklNQVJZKQoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYzoyNTYKZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CgluZnBfbmV0X2Rpc2FibGVfcXVldWVzKGRldik7CgoJLyogQ2xlYXIgcXVl dWVzICovCglmb3IgKGkgPSAwOyBpIDwgZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXM7IGkrKykgewoJ CXRoaXNfdHhfcSA9IChzdHJ1Y3QgbmZwX25ldF90eHEgKilkZXYtPmRhdGEtPnR4X3F1ZXVlc1tp XTsKCQluZnBfbmV0X3Jlc2V0X3R4X3F1ZXVlKHRoaXNfdHhfcSk7CgkJbmZwX25ldF90eF9xdWV1 ZV9yZWxlYXNlKGRldiwgaSk7Cgl9CgoJZm9yIChpID0gMDsgaSA8IGRldi0+ZGF0YS0+bmJfcnhf cXVldWVzOyBpKyspIHsKCQl0aGlzX3J4X3EgPSAoc3RydWN0IG5mcF9uZXRfcnhxICopZGV2LT5k YXRhLT5yeF9xdWV1ZXNbaV07CgkJbmZwX25ldF9yZXNldF9yeF9xdWV1ZSh0aGlzX3J4X3EpOwoJ CW5mcF9uZXRfcnhfcXVldWVfcmVsZWFzZShkZXYsIGkpOwoJfQoKCS8qIENhbmNlbCBwb3NzaWJs ZSBpbXBlbmRpbmcgTFNDIHdvcmsgaGVyZSBiZWZvcmUgcmVsZWFzaW5nIHRoZSBwb3J0Ki8KCXJ0 ZV9lYWxfYWxhcm1fY2FuY2VsKG5mcF9uZXRfZGV2X2ludGVycnVwdF9kZWxheWVkX2hhbmRsZXIs CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5jOjI3NwpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5jLi4uCmVycm9yOiB3 aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0aWMgaW50Cm5mcF9uZXR2Zl9zdG9wKHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2KQp7CglzdHJ1Y3QgbmZwX25ldF90eHEgKnRoaXNfdHhfcTsKCXN0cnVjdCBu ZnBfbmV0X3J4cSAqdGhpc19yeF9xOwoJaW50IGk7CgoJUE1EX0lOSVRfTE9HKERFQlVHLCAiU3Rv cCIpOwoKCW5mcF9uZXRfZGlzYWJsZV9xdWV1ZXMoZGV2KTsKCgkvKiBDbGVhciBxdWV1ZXMgKi8K CWZvciAoaSA9IDA7IGkgPCBkZXYtPmRhdGEtPm5iX3R4X3F1ZXVlczsgaSsrKSB7CgkJdGhpc190 eF9xID0gKHN0cnVjdCBuZnBfbmV0X3R4cSAqKWRldi0+ZGF0YS0+dHhfcXVldWVzW2ldOwoJCW5m cF9uZXRfcmVzZXRfdHhfcXVldWUodGhpc190eF9xKTsKCX0KCglmb3IgKGkgPSAwOyBpIDwgZGV2 LT5kYXRhLT5uYl9yeF9xdWV1ZXM7IGkrKykgewoJCXRoaXNfcnhfcSA9IChzdHJ1Y3QgbmZwX25l dF9yeHEgKilkZXYtPmRhdGEtPnJ4X3F1ZXVlc1tpXTsKCQluZnBfbmV0X3Jlc2V0X3J4X3F1ZXVl KHRoaXNfcnhfcSk7Cgl9CgoJcmV0dXJuIDA7Cn0KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L25mcC9uZnBfZXRoZGV2X3ZmLmM6MTQ1CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgpuZnBfbmV0dmZfY2xvc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCnsKCXN0cnVjdCBydGVf cGNpX2RldmljZSAqcGNpX2RldjsKCXN0cnVjdCBuZnBfbmV0X3R4cSAqdGhpc190eF9xOwoJc3Ry dWN0IG5mcF9uZXRfcnhxICp0aGlzX3J4X3E7CglpbnQgaTsKCglpZiAocnRlX2VhbF9wcm9jZXNz X3R5cGUoKSAhPSBSVEVfUFJPQ19QUklNQVJZKQoJCXJldHVybiAwOwoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYzoxODUKZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CgluZnBfbmV0X2Rpc2FibGVfcXVldWVzKGRldik7CgoJLyogQ2xlYXIgcXVl dWVzICovCglmb3IgKGkgPSAwOyBpIDwgZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXM7IGkrKykgewoJ CXRoaXNfdHhfcSA9ICAoc3RydWN0IG5mcF9uZXRfdHhxICopZGV2LT5kYXRhLT50eF9xdWV1ZXNb aV07CgkJbmZwX25ldF9yZXNldF90eF9xdWV1ZSh0aGlzX3R4X3EpOwoJCW5mcF9uZXRfdHhfcXVl dWVfcmVsZWFzZShkZXYsIGkpOwoJfQoKCWZvciAoaSA9IDA7IGkgPCBkZXYtPmRhdGEtPm5iX3J4 X3F1ZXVlczsgaSsrKSB7CgkJdGhpc19yeF9xID0gIChzdHJ1Y3QgbmZwX25ldF9yeHEgKilkZXYt PmRhdGEtPnJ4X3F1ZXVlc1tpXTsKCQluZnBfbmV0X3Jlc2V0X3J4X3F1ZXVlKHRoaXNfcnhfcSk7 CgkJbmZwX25ldF9yeF9xdWV1ZV9yZWxlYXNlKGRldiwgaSk7Cgl9CgoJcnRlX2ludHJfZGlzYWJs ZShwY2lfZGV2LT5pbnRyX2hhbmRsZSk7CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9u ZXQvbmZwL25mcF9ldGhkZXZfdmYuYzoyMDQKQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZw L25mcF9jb21tb24uYyB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCkFwcGx5aW5n IHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmggd2l0aCAxIHJlamVjdC4uLgpSZWpl Y3RlZCBodW5rICMxLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldi5j IHdpdGggNCByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuClJl amVjdGVkIGh1bmsgIzMuClJlamVjdGVkIGh1bmsgIzQuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMv bmV0L25mcC9uZnBfZXRoZGV2X3ZmLmMgd2l0aCAzIHJlamVjdHMuLi4KUmVqZWN0ZWQgaHVuayAj MS4KUmVqZWN0ZWQgaHVuayAjMi4KUmVqZWN0ZWQgaHVuayAjMy4KZGlmZiBhL2RyaXZlcnMvbmV0 L25mcC9uZnBfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5jCShyZWplY3Rl ZCBodW5rcykKQEAgLTEzMjAsNiArMTMyMCw1NiBAQCBuZnBfbmV0X3Jzc19jb25maWdfZGVmYXVs dChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKIAlyZXR1cm4gcmV0OwogfQogCit2b2lkCituZnBf bmV0X3N0b3BfcnhfcXVldWUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCit7CisJdWludDE2X3Qg aTsKKwlzdHJ1Y3QgbmZwX25ldF9yeHEgKnRoaXNfcnhfcTsKKworCWZvciAoaSA9IDA7IGkgPCBk ZXYtPmRhdGEtPm5iX3J4X3F1ZXVlczsgaSsrKSB7CisJCXRoaXNfcnhfcSA9IChzdHJ1Y3QgbmZw X25ldF9yeHEgKilkZXYtPmRhdGEtPnJ4X3F1ZXVlc1tpXTsKKwkJbmZwX25ldF9yZXNldF9yeF9x dWV1ZSh0aGlzX3J4X3EpOworCX0KK30KKwordm9pZAorbmZwX25ldF9jbG9zZV9yeF9xdWV1ZShz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKK3sKKwl1aW50MTZfdCBpOworCXN0cnVjdCBuZnBfbmV0 X3J4cSAqdGhpc19yeF9xOworCisJZm9yIChpID0gMDsgaSA8IGRldi0+ZGF0YS0+bmJfcnhfcXVl dWVzOyBpKyspIHsKKwkJdGhpc19yeF9xID0gKHN0cnVjdCBuZnBfbmV0X3J4cSAqKWRldi0+ZGF0 YS0+cnhfcXVldWVzW2ldOworCQluZnBfbmV0X3Jlc2V0X3J4X3F1ZXVlKHRoaXNfcnhfcSk7CisJ CW5mcF9uZXRfcnhfcXVldWVfcmVsZWFzZShkZXYsIGkpOworCX0KK30KKwordm9pZAorbmZwX25l dF9zdG9wX3R4X3F1ZXVlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQoreworCXVpbnQxNl90IGk7 CisJc3RydWN0IG5mcF9uZXRfdHhxICp0aGlzX3R4X3E7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGV2 LT5kYXRhLT5uYl90eF9xdWV1ZXM7IGkrKykgeworCQl0aGlzX3R4X3EgPSAoc3RydWN0IG5mcF9u ZXRfdHhxICopZGV2LT5kYXRhLT50eF9xdWV1ZXNbaV07CisJCW5mcF9uZXRfcmVzZXRfdHhfcXVl dWUodGhpc190eF9xKTsKKwl9Cit9CisKK3ZvaWQKK25mcF9uZXRfY2xvc2VfdHhfcXVldWUoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCit7CisJdWludDE2X3QgaTsKKwlzdHJ1Y3QgbmZwX25ldF90 eHEgKnRoaXNfdHhfcTsKKworCWZvciAoaSA9IDA7IGkgPCBkZXYtPmRhdGEtPm5iX3R4X3F1ZXVl czsgaSsrKSB7CisJCXRoaXNfdHhfcSA9IChzdHJ1Y3QgbmZwX25ldF90eHEgKilkZXYtPmRhdGEt PnR4X3F1ZXVlc1tpXTsKKwkJbmZwX25ldF9yZXNldF90eF9xdWV1ZSh0aGlzX3R4X3EpOworCQlu ZnBfbmV0X3R4X3F1ZXVlX3JlbGVhc2UoZGV2LCBpKTsKKwl9Cit9CisKIFJURV9MT0dfUkVHSVNU RVJfU1VGRklYKG5mcF9sb2d0eXBlX2luaXQsIGluaXQsIE5PVElDRSk7CiBSVEVfTE9HX1JFR0lT VEVSX1NVRkZJWChuZnBfbG9ndHlwZV9kcml2ZXIsIGRyaXZlciwgTk9USUNFKTsKIC8qCmRpZmYg YS9kcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvbmZwL25mcF9jb21t b24uaAkocmVqZWN0ZWQgaHVua3MpCkBAIC00MTMsNiArNDEzLDEwIEBAIGludCBuZnBfbmV0X3Jz c19oYXNoX3VwZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKIGludCBuZnBfbmV0X3Jzc19o YXNoX2NvbmZfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAogCQkJICAgICAgc3RydWN0IHJ0 ZV9ldGhfcnNzX2NvbmYgKnJzc19jb25mKTsKIGludCBuZnBfbmV0X3Jzc19jb25maWdfZGVmYXVs dChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7Cit2b2lkIG5mcF9uZXRfc3RvcF9yeF9xdWV1ZShz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7Cit2b2lkIG5mcF9uZXRfY2xvc2VfcnhfcXVldWUoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwordm9pZCBuZnBfbmV0X3N0b3BfdHhfcXVldWUoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYpOwordm9pZCBuZnBfbmV0X2Nsb3NlX3R4X3F1ZXVlKHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2KTsKIAogI2RlZmluZSBORlBfTkVUX0RFVl9QUklWQVRFX1RPX0hXKGFk YXB0ZXIpXAogCSgmKChzdHJ1Y3QgbmZwX25ldF9hZGFwdGVyICopYWRhcHRlciktPmh3KQpkaWZm IGEvZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYyBiL2RyaXZlcnMvbmV0L25mcC9uZnBfZXRo ZGV2LmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMTgxLDEwICsxODEsNyBAQCBuZnBfbmV0X3N0YXJ0 KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQogc3RhdGljIGludAogbmZwX25ldF9zdG9wKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2KQogewotCWludCBpOwogCXN0cnVjdCBuZnBfbmV0X2h3ICpodzsK LQlzdHJ1Y3QgbmZwX25ldF90eHEgKnRoaXNfdHhfcTsKLQlzdHJ1Y3QgbmZwX25ldF9yeHEgKnRo aXNfcnhfcTsKIAogCVBNRF9JTklUX0xPRyhERUJVRywgIlN0b3AiKTsKIApAQCAtMTkzLDE1ICsx OTAsOSBAQCBuZnBfbmV0X3N0b3Aoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiAJbmZwX25ldF9k aXNhYmxlX3F1ZXVlcyhkZXYpOwogCiAJLyogQ2xlYXIgcXVldWVzICovCi0JZm9yIChpID0gMDsg aSA8IGRldi0+ZGF0YS0+bmJfdHhfcXVldWVzOyBpKyspIHsKLQkJdGhpc190eF9xID0gKHN0cnVj dCBuZnBfbmV0X3R4cSAqKWRldi0+ZGF0YS0+dHhfcXVldWVzW2ldOwotCQluZnBfbmV0X3Jlc2V0 X3R4X3F1ZXVlKHRoaXNfdHhfcSk7Ci0JfQorCW5mcF9uZXRfc3RvcF90eF9xdWV1ZShkZXYpOwog Ci0JZm9yIChpID0gMDsgaSA8IGRldi0+ZGF0YS0+bmJfcnhfcXVldWVzOyBpKyspIHsKLQkJdGhp c19yeF9xID0gKHN0cnVjdCBuZnBfbmV0X3J4cSAqKWRldi0+ZGF0YS0+cnhfcXVldWVzW2ldOwot CQluZnBfbmV0X3Jlc2V0X3J4X3F1ZXVlKHRoaXNfcnhfcSk7Ci0JfQorCW5mcF9uZXRfc3RvcF9y eF9xdWV1ZShkZXYpOwogCiAJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgPT0gUlRFX1BST0Nf UFJJTUFSWSkKIAkJLyogQ29uZmlndXJlIHRoZSBwaHlzaWNhbCBwb3J0IGRvd24gKi8KQEAgLTI1 Niw4ICsyNDcsNiBAQCBuZnBfbmV0X2Nsb3NlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQogCXN0 cnVjdCBuZnBfbmV0X2h3ICpodzsKIAlzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXY7CiAJ c3RydWN0IG5mcF9wZl9kZXYgKnBmX2RldjsKLQlzdHJ1Y3QgbmZwX25ldF90eHEgKnRoaXNfdHhf cTsKLQlzdHJ1Y3QgbmZwX25ldF9yeHEgKnRoaXNfcnhfcTsKIAlpbnQgaTsKIAogCWlmIChydGVf ZWFsX3Byb2Nlc3NfdHlwZSgpICE9IFJURV9QUk9DX1BSSU1BUlkpCkBAIC0yNzcsMTcgKzI2Niw5 IEBAIG5mcF9uZXRfY2xvc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiAJbmZwX25ldF9kaXNh YmxlX3F1ZXVlcyhkZXYpOwogCiAJLyogQ2xlYXIgcXVldWVzICovCi0JZm9yIChpID0gMDsgaSA8 IGRldi0+ZGF0YS0+bmJfdHhfcXVldWVzOyBpKyspIHsKLQkJdGhpc190eF9xID0gKHN0cnVjdCBu ZnBfbmV0X3R4cSAqKWRldi0+ZGF0YS0+dHhfcXVldWVzW2ldOwotCQluZnBfbmV0X3Jlc2V0X3R4 X3F1ZXVlKHRoaXNfdHhfcSk7Ci0JCW5mcF9uZXRfdHhfcXVldWVfcmVsZWFzZShkZXYsIGkpOwot CX0KKwluZnBfbmV0X2Nsb3NlX3R4X3F1ZXVlKGRldik7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZGV2 LT5kYXRhLT5uYl9yeF9xdWV1ZXM7IGkrKykgewotCQl0aGlzX3J4X3EgPSAoc3RydWN0IG5mcF9u ZXRfcnhxICopZGV2LT5kYXRhLT5yeF9xdWV1ZXNbaV07Ci0JCW5mcF9uZXRfcmVzZXRfcnhfcXVl dWUodGhpc19yeF9xKTsKLQkJbmZwX25ldF9yeF9xdWV1ZV9yZWxlYXNlKGRldiwgaSk7Ci0JfQor CW5mcF9uZXRfY2xvc2VfcnhfcXVldWUoZGV2KTsKIAogCS8qIENhbmNlbCBwb3NzaWJsZSBpbXBl bmRpbmcgTFNDIHdvcmsgaGVyZSBiZWZvcmUgcmVsZWFzaW5nIHRoZSBwb3J0Ki8KIAlydGVfZWFs X2FsYXJtX2NhbmNlbChuZnBfbmV0X2Rldl9pbnRlcnJ1cHRfZGVsYXllZF9oYW5kbGVyLApkaWZm IGEvZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYyBiL2RyaXZlcnMvbmV0L25mcC9uZnBf ZXRoZGV2X3ZmLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMTQ1LDI0ICsxNDUsMTQgQEAgbmZwX25l dHZmX3N0YXJ0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQogc3RhdGljIGludAogbmZwX25ldHZm X3N0b3Aoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiB7Ci0Jc3RydWN0IG5mcF9uZXRfdHhxICp0 aGlzX3R4X3E7Ci0Jc3RydWN0IG5mcF9uZXRfcnhxICp0aGlzX3J4X3E7Ci0JaW50IGk7Ci0KIAlQ TURfSU5JVF9MT0coREVCVUcsICJTdG9wIik7CiAKIAluZnBfbmV0X2Rpc2FibGVfcXVldWVzKGRl dik7CiAKIAkvKiBDbGVhciBxdWV1ZXMgKi8KLQlmb3IgKGkgPSAwOyBpIDwgZGV2LT5kYXRhLT5u Yl90eF9xdWV1ZXM7IGkrKykgewotCQl0aGlzX3R4X3EgPSAoc3RydWN0IG5mcF9uZXRfdHhxICop ZGV2LT5kYXRhLT50eF9xdWV1ZXNbaV07Ci0JCW5mcF9uZXRfcmVzZXRfdHhfcXVldWUodGhpc190 eF9xKTsKLQl9CisJbmZwX25ldF9zdG9wX3R4X3F1ZXVlKGRldik7CiAKLQlmb3IgKGkgPSAwOyBp IDwgZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXM7IGkrKykgewotCQl0aGlzX3J4X3EgPSAoc3RydWN0 IG5mcF9uZXRfcnhxICopZGV2LT5kYXRhLT5yeF9xdWV1ZXNbaV07Ci0JCW5mcF9uZXRfcmVzZXRf cnhfcXVldWUodGhpc19yeF9xKTsKLQl9CisJbmZwX25ldF9zdG9wX3J4X3F1ZXVlKGRldik7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTE4NSw5ICsxNzUsNiBAQCBzdGF0aWMgaW50CiBuZnBfbmV0dmZf Y2xvc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiB7CiAJc3RydWN0IHJ0ZV9wY2lfZGV2aWNl ICpwY2lfZGV2OwotCXN0cnVjdCBuZnBfbmV0X3R4cSAqdGhpc190eF9xOwotCXN0cnVjdCBuZnBf bmV0X3J4cSAqdGhpc19yeF9xOwotCWludCBpOwogCiAJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBl KCkgIT0gUlRFX1BST0NfUFJJTUFSWSkKIAkJcmV0dXJuIDA7CkBAIC0yMDQsMTcgKzE5MSw5IEBA IG5mcF9uZXR2Zl9jbG9zZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKIAluZnBfbmV0X2Rpc2Fi bGVfcXVldWVzKGRldik7CiAKIAkvKiBDbGVhciBxdWV1ZXMgKi8KLQlmb3IgKGkgPSAwOyBpIDwg ZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXM7IGkrKykgewotCQl0aGlzX3R4X3EgPSAgKHN0cnVjdCBu ZnBfbmV0X3R4cSAqKWRldi0+ZGF0YS0+dHhfcXVldWVzW2ldOwotCQluZnBfbmV0X3Jlc2V0X3R4 X3F1ZXVlKHRoaXNfdHhfcSk7Ci0JCW5mcF9uZXRfdHhfcXVldWVfcmVsZWFzZShkZXYsIGkpOwot CX0KKwluZnBfbmV0X2Nsb3NlX3R4X3F1ZXVlKGRldik7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZGV2 LT5kYXRhLT5uYl9yeF9xdWV1ZXM7IGkrKykgewotCQl0aGlzX3J4X3EgPSAgKHN0cnVjdCBuZnBf bmV0X3J4cSAqKWRldi0+ZGF0YS0+cnhfcXVldWVzW2ldOwotCQluZnBfbmV0X3Jlc2V0X3J4X3F1 ZXVlKHRoaXNfcnhfcSk7Ci0JCW5mcF9uZXRfcnhfcXVldWVfcmVsZWFzZShkZXYsIGkpOwotCX0K KwluZnBfbmV0X2Nsb3NlX3J4X3F1ZXVlKGRldik7CiAKIAlydGVfaW50cl9kaXNhYmxlKHBjaV9k ZXYtPmludHJfaGFuZGxlKTsKIApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwY29y ZS9uZnBfcnRzeW0uYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVybiBydGJs Owp9CgovKgogKiBUaGlzIGxvb2tzIG1vcmUgY29tcGxleCB0aGFuIGl0IHNob3VsZCBiZS4gQnV0 IHdlIG5lZWQgdG8gZ2V0IHRoZSB0eXBlIGZvcgogKiB0aGUgfiByaWdodCBpbiByb3VuZF9kb3du IChpdCBuZWVkcyB0byBiZSBhcyB3aWRlIGFzIHRoZSByZXN1bHQhKSwgYW5kIHdlCiAqIHdhbnQg dG8gZXZhbHVhdGUgdGhlIG1hY3JvIGFyZ3VtZW50cyBqdXN0IG9uY2UgZWFjaC4KICovCiNkZWZp bmUgX19yb3VuZF9tYXNrKHgsIHkpICgoX190eXBlb2ZfXyh4KSkoKHkpIC0gMSkpCgojZGVmaW5l IHJvdW5kX3VwKHgsIHkpIFwKCShfX2V4dGVuc2lvbl9fICh7IFwKCQl0eXBlb2YoeCkgX3ggPSAo eCk7IFwKCQkoKCgoX3gpIC0gMSkgfCBfX3JvdW5kX21hc2soX3gsIHkpKSArIDEpOyBcCgl9KSkK CiNkZWZpbmUgcm91bmRfZG93bih4LCB5KSBcCgkoX19leHRlbnNpb25fXyAoeyBcCgkJdHlwZW9m KHgpIF94ID0gKHgpOyBcCgkJKChfeCkgJiB+X19yb3VuZF9tYXNrKF94LCB5KSk7IFwKCX0pKQoK c3RydWN0IG5mcF9ydHN5bV90YWJsZSAqCl9fbmZwX3J0c3ltX3RhYmxlX3JlYWQoc3RydWN0IG5m cF9jcHAgKmNwcCwgY29uc3Qgc3RydWN0IG5mcF9taXAgKm1pcCkKewoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvbmZwL25mcGNvcmUvbmZwX3J0c3ltLmM6OTQKQ2hlY2tpbmcgcGF0 Y2ggZHJpdmVycy9uZXQvbmZwL25mcGNvcmUvbmZwX3J0c3ltLmguLi4KZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CiNkZWZpbmUgTkZQX1JUU1lNX1RBUkdFVF9MTUVNICAgICAgICAgICAtMQoj ZGVmaW5lIE5GUF9SVFNZTV9UQVJHRVRfRU1VX0NBQ0hFICAgICAgLTcKCi8qCiAqIFN0cnVjdHVy ZSBkZXNjcmliaW5nIGEgcnVuLXRpbWUgTkZQIHN5bWJvbC4KICoKCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBjb3JlL25mcF9ydHN5bS5oOjE1CkFwcGx5aW5nIHBhdGNo IGRyaXZlcnMvbmV0L25mcC9uZnBjb3JlL25mcF9ydHN5bS5jIHdpdGggMSByZWplY3QuLi4KUmVq ZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcGNvcmUvbmZw X3J0c3ltLmggd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpkaWZmIGEvZHJpdmVy cy9uZXQvbmZwL25mcGNvcmUvbmZwX3J0c3ltLmMgYi9kcml2ZXJzL25ldC9uZnAvbmZwY29yZS9u ZnBfcnRzeW0uYwkocmVqZWN0ZWQgaHVua3MpCkBAIC05NCwyNSArOTQsNiBAQCBuZnBfcnRzeW1f dGFibGVfcmVhZChzdHJ1Y3QgbmZwX2NwcCAqY3BwKQogCXJldHVybiBydGJsOwogfQogCi0vKgot ICogVGhpcyBsb29rcyBtb3JlIGNvbXBsZXggdGhhbiBpdCBzaG91bGQgYmUuIEJ1dCB3ZSBuZWVk IHRvIGdldCB0aGUgdHlwZSBmb3IKLSAqIHRoZSB+IHJpZ2h0IGluIHJvdW5kX2Rvd24gKGl0IG5l ZWRzIHRvIGJlIGFzIHdpZGUgYXMgdGhlIHJlc3VsdCEpLCBhbmQgd2UKLSAqIHdhbnQgdG8gZXZh bHVhdGUgdGhlIG1hY3JvIGFyZ3VtZW50cyBqdXN0IG9uY2UgZWFjaC4KLSAqLwotI2RlZmluZSBf X3JvdW5kX21hc2soeCwgeSkgKChfX3R5cGVvZl9fKHgpKSgoeSkgLSAxKSkKLQotI2RlZmluZSBy b3VuZF91cCh4LCB5KSBcCi0JKF9fZXh0ZW5zaW9uX18gKHsgXAotCQl0eXBlb2YoeCkgX3ggPSAo eCk7IFwKLQkJKCgoKF94KSAtIDEpIHwgX19yb3VuZF9tYXNrKF94LCB5KSkgKyAxKTsgXAotCX0p KQotCi0jZGVmaW5lIHJvdW5kX2Rvd24oeCwgeSkgXAotCShfX2V4dGVuc2lvbl9fICh7IFwKLQkJ dHlwZW9mKHgpIF94ID0gKHgpOyBcCi0JCSgoX3gpICYgfl9fcm91bmRfbWFzayhfeCwgeSkpOyBc Ci0JfSkpCi0KIHN0cnVjdCBuZnBfcnRzeW1fdGFibGUgKgogX19uZnBfcnRzeW1fdGFibGVfcmVh ZChzdHJ1Y3QgbmZwX2NwcCAqY3BwLCBjb25zdCBzdHJ1Y3QgbmZwX21pcCAqbWlwKQogewpkaWZm IGEvZHJpdmVycy9uZXQvbmZwL25mcGNvcmUvbmZwX3J0c3ltLmggYi9kcml2ZXJzL25ldC9uZnAv bmZwY29yZS9uZnBfcnRzeW0uaAkocmVqZWN0ZWQgaHVua3MpCkBAIC0xNSw2ICsxNSwyNSBAQAog I2RlZmluZSBORlBfUlRTWU1fVEFSR0VUX0xNRU0gICAgICAgICAgIC0xCiAjZGVmaW5lIE5GUF9S VFNZTV9UQVJHRVRfRU1VX0NBQ0hFICAgICAgLTcKIAorLyoKKyAqIFRoaXMgbG9va3MgbW9yZSBj b21wbGV4IHRoYW4gaXQgc2hvdWxkIGJlLiBCdXQgd2UgbmVlZCB0byBnZXQgdGhlIHR5cGUgZm9y CisgKiB0aGUgfiByaWdodCBpbiByb3VuZF9kb3duIChpdCBuZWVkcyB0byBiZSBhcyB3aWRlIGFz IHRoZSByZXN1bHQhKSwgYW5kIHdlCisgKiB3YW50IHRvIGV2YWx1YXRlIHRoZSBtYWNybyBhcmd1 bWVudHMganVzdCBvbmNlIGVhY2guCisgKi8KKyNkZWZpbmUgX19yb3VuZF9tYXNrKHgsIHkpICgo X190eXBlb2ZfXyh4KSkoKHkpIC0gMSkpCisKKyNkZWZpbmUgcm91bmRfdXAoeCwgeSkgXAorCShf X2V4dGVuc2lvbl9fICh7IFwKKwkJdHlwZW9mKHgpIF94ID0gKHgpOyBcCisJCSgoKChfeCkgLSAx KSB8IF9fcm91bmRfbWFzayhfeCwgeSkpICsgMSk7IFwKKwl9KSkKKworI2RlZmluZSByb3VuZF9k b3duKHgsIHkpIFwKKwkoX19leHRlbnNpb25fXyAoeyBcCisJCXR5cGVvZih4KSBfeCA9ICh4KTsg XAorCQkoKF94KSAmIH5fX3JvdW5kX21hc2soX3gsIHkpKTsgXAorCX0pKQorCiAvKgogICogU3Ry dWN0dXJlIGRlc2NyaWJpbmcgYSBydW4tdGltZSBORlAgc3ltYm9sLgogICoKQ2hlY2tpbmcgcGF0 Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYy4uLgpIdW5rICMxIHN1Y2NlZWRlZCBhdCAz NzcgKG9mZnNldCAzIGxpbmVzKS4KSHVuayAjMiBzdWNjZWVkZWQgYXQgMzg2IChvZmZzZXQgMyBs aW5lcykuCkh1bmsgIzMgc3VjY2VlZGVkIGF0IDM5NSAob2Zmc2V0IDMgbGluZXMpLgpDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRldl92Zi5jLi4uCkh1bmsgIzEgc3VjY2Vl ZGVkIGF0IDI4MiAob2Zmc2V0IDMgbGluZXMpLgpIdW5rICMyIHN1Y2NlZWRlZCBhdCAyOTEgKG9m ZnNldCAzIGxpbmVzKS4KSHVuayAjMyBzdWNjZWVkZWQgYXQgMzAwIChvZmZzZXQgMyBsaW5lcyku CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5jLi4uCkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5oLi4uCmVycm9yOiBkcml2ZXJzL25ldC9uZnAv bmZwX3J4dHguaDogZG9lcyBub3QgbWF0Y2ggaW5kZXgKQXBwbGllZCBwYXRjaCBkcml2ZXJzL25l dC9uZnAvbmZwX2V0aGRldi5jIGNsZWFubHkuCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvbmZw L25mcF9ldGhkZXZfdmYuYyBjbGVhbmx5LgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9u ZnBfcnh0eC5jIGNsZWFubHkuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfY29t bW9uLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJLyogQ2hlY2tpbmcgUlggbW9k ZSAqLwoJaWYgKHJ4bW9kZS0+bXFfbW9kZSAmIFJURV9FVEhfTVFfUlhfUlNTICYmCgkgICAgISho dy0+Y2FwICYgTkZQX05FVF9DRkdfQ1RSTF9SU1MpKSB7CgkJUE1EX0lOSVRfTE9HKElORk8sICJS U1Mgbm90IHN1cHBvcnRlZCIpOwoJCXJldHVybiAtRUlOVkFMOwoJfQoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24uYzoxNzEKZXJyb3I6IHdoaWxlIHNlYXJj aGluZyBmb3I6CgkJLm5iX210dV9zZWdfbWF4ID0gTkZQX1RYX01BWF9NVFVfU0VHLAoJfTsKCglp ZiAoaHctPmNhcCAmIE5GUF9ORVRfQ0ZHX0NUUkxfUlNTKSB7CgkJZGV2X2luZm8tPnJ4X29mZmxv YWRfY2FwYSB8PSBSVEVfRVRIX1JYX09GRkxPQURfUlNTX0hBU0g7CgoJCWRldl9pbmZvLT5mbG93 X3R5cGVfcnNzX29mZmxvYWRzID0gUlRFX0VUSF9SU1NfSVBWNCB8CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5jOjc2OQplcnJvcjogd2hpbGUgc2VhcmNo aW5nIGZvcjoKCXVpbnQzMl90IHVwZGF0ZTsKCWludCByZXQ7CgoJaWYgKCEoaHctPmN0cmwgJiBO RlBfTkVUX0NGR19DVFJMX1JTUykpCgkJcmV0dXJuIC1FSU5WQUw7CgoJcmV0ID0gbmZwX25ldF9y c3NfcmV0YV93cml0ZShkZXYsIHJldGFfY29uZiwgcmV0YV9zaXplKTsKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGRyaXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmM6MTA4MAplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKCglodyA9IE5GUF9ORVRfREVWX1BSSVZBVEVfVE9fSFcoZGV2LT5kYXRhLT5k ZXZfcHJpdmF0ZSk7CgoJaWYgKCEoaHctPmN0cmwgJiBORlBfTkVUX0NGR19DVFJMX1JTUykpCgkJ cmV0dXJuIC1FSU5WQUw7CgoJaWYgKHJldGFfc2l6ZSAhPSBORlBfTkVUX0NGR19SU1NfSVRCTF9T WikgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24uYzox MTA4CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcnNzX2hmID0gcnNzX2NvbmYtPnJzc19o ZjsKCgkvKiBDaGVja2luZyBpZiBSU1MgaXMgZW5hYmxlZCAqLwoJaWYgKCEoaHctPmN0cmwgJiBO RlBfTkVUX0NGR19DVFJMX1JTUykpIHsKCQlpZiAocnNzX2hmICE9IDApIHsgLyogRW5hYmxlIFJT Uz8gKi8KCQkJUE1EX0RSVl9MT0coRVJSLCAiUlNTIHVuc3VwcG9ydGVkIik7CgkJCXJldHVybiAt RUlOVkFMOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24u YzoxMjA2CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCWh3ID0gTkZQX05FVF9ERVZfUFJJ VkFURV9UT19IVyhkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKCglpZiAoIShody0+Y3RybCAmIE5G UF9ORVRfQ0ZHX0NUUkxfUlNTKSkKCQlyZXR1cm4gLUVJTlZBTDsKCglyc3NfaGYgPSByc3NfY29u Zi0+cnNzX2hmOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbmZwL25mcF9jb21t b24uYzoxMjQxCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfY3RybC5oLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojZGVmaW5lIE5GUF9ORVRfQ0ZHX01BQ0FERFIgICAg ICAgICAgICAgMHgwMDI0CgojZGVmaW5lIE5GUF9ORVRfQ0ZHX0NUUkxfTFNPX0FOWSAoTkZQX05F VF9DRkdfQ1RSTF9MU08gfCBORlBfTkVUX0NGR19DVFJMX0xTTzIpCgovKgogKiBSZWFkLW9ubHkg d29yZHMgKDB4MDAzMCAtIDB4MDA1MCk6CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25l dC9uZnAvbmZwX2N0cmwuaDoxMTkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9l dGhkZXYuYy4uLgplcnJvcjogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYzogZG9lcyBub3Qg bWF0Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYu Yy4uLgplcnJvcjogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXZfdmYuYzogZG9lcyBub3QgbWF0 Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmMuLi4KZXJy b3I6IGRyaXZlcnMvbmV0L25mcC9uZnBfcnh0eC5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApBcHBs eWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5jIHdpdGggNiByZWplY3RzLi4u ClJlamVjdGVkIGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuClJlamVjdGVkIGh1bmsgIzMuClJl amVjdGVkIGh1bmsgIzQuClJlamVjdGVkIGh1bmsgIzUuClJlamVjdGVkIGh1bmsgIzYuCkFwcGx5 aW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfY3RybC5oIHdpdGggMSByZWplY3QuLi4KUmVq ZWN0ZWQgaHVuayAjMS4KZGlmZiBhL2RyaXZlcnMvbmV0L25mcC9uZnBfY29tbW9uLmMgYi9kcml2 ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5jCShyZWplY3RlZCBodW5rcykKQEAgLTE3MSw3ICsxNzEs NyBAQCBuZnBfbmV0X2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKIAogCS8qIENo ZWNraW5nIFJYIG1vZGUgKi8KIAlpZiAocnhtb2RlLT5tcV9tb2RlICYgUlRFX0VUSF9NUV9SWF9S U1MgJiYKLQkgICAgIShody0+Y2FwICYgTkZQX05FVF9DRkdfQ1RSTF9SU1MpKSB7CisJICAgICEo aHctPmNhcCAmIE5GUF9ORVRfQ0ZHX0NUUkxfUlNTX0FOWSkpIHsKIAkJUE1EX0lOSVRfTE9HKElO Rk8sICJSU1Mgbm90IHN1cHBvcnRlZCIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC03Njks NyArNzY5LDcgQEAgbmZwX25ldF9pbmZvc19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0 cnVjdCBydGVfZXRoX2Rldl9pbmZvICpkZXZfaW5mbykKIAkJLm5iX210dV9zZWdfbWF4ID0gTkZQ X1RYX01BWF9NVFVfU0VHLAogCX07CiAKLQlpZiAoaHctPmNhcCAmIE5GUF9ORVRfQ0ZHX0NUUkxf UlNTKSB7CisJaWYgKGh3LT5jYXAgJiBORlBfTkVUX0NGR19DVFJMX1JTU19BTlkpIHsKIAkJZGV2 X2luZm8tPnJ4X29mZmxvYWRfY2FwYSB8PSBSVEVfRVRIX1JYX09GRkxPQURfUlNTX0hBU0g7CiAK IAkJZGV2X2luZm8tPmZsb3dfdHlwZV9yc3Nfb2ZmbG9hZHMgPSBSVEVfRVRIX1JTU19JUFY0IHwK QEAgLTEwODAsNyArMTA4MCw3IEBAIG5mcF9uZXRfcmV0YV91cGRhdGUoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsCiAJdWludDMyX3QgdXBkYXRlOwogCWludCByZXQ7CiAKLQlpZiAoIShody0+Y3Ry bCAmIE5GUF9ORVRfQ0ZHX0NUUkxfUlNTKSkKKwlpZiAoIShody0+Y3RybCAmIE5GUF9ORVRfQ0ZH X0NUUkxfUlNTX0FOWSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJcmV0ID0gbmZwX25ldF9yc3Nf cmV0YV93cml0ZShkZXYsIHJldGFfY29uZiwgcmV0YV9zaXplKTsKQEAgLTExMDgsNyArMTEwOCw3 IEBAIG5mcF9uZXRfcmV0YV9xdWVyeShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKIAogCWh3ID0g TkZQX05FVF9ERVZfUFJJVkFURV9UT19IVyhkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKIAotCWlm ICghKGh3LT5jdHJsICYgTkZQX05FVF9DRkdfQ1RSTF9SU1MpKQorCWlmICghKGh3LT5jdHJsICYg TkZQX05FVF9DRkdfQ1RSTF9SU1NfQU5ZKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAocmV0 YV9zaXplICE9IE5GUF9ORVRfQ0ZHX1JTU19JVEJMX1NaKSB7CkBAIC0xMjA2LDcgKzEyMDYsNyBA QCBuZnBfbmV0X3Jzc19oYXNoX3VwZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKIAlyc3Nf aGYgPSByc3NfY29uZi0+cnNzX2hmOwogCiAJLyogQ2hlY2tpbmcgaWYgUlNTIGlzIGVuYWJsZWQg Ki8KLQlpZiAoIShody0+Y3RybCAmIE5GUF9ORVRfQ0ZHX0NUUkxfUlNTKSkgeworCWlmICghKGh3 LT5jdHJsICYgTkZQX05FVF9DRkdfQ1RSTF9SU1NfQU5ZKSkgewogCQlpZiAocnNzX2hmICE9IDAp IHsgLyogRW5hYmxlIFJTUz8gKi8KIAkJCVBNRF9EUlZfTE9HKEVSUiwgIlJTUyB1bnN1cHBvcnRl ZCIpOwogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBuZnBfbmV0X3Jz c19oYXNoX2NvbmZfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAogCiAJaHcgPSBORlBfTkVU X0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwogCi0JaWYgKCEoaHct PmN0cmwgJiBORlBfTkVUX0NGR19DVFJMX1JTUykpCisJaWYgKCEoaHctPmN0cmwgJiBORlBfTkVU X0NGR19DVFJMX1JTU19BTlkpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXJzc19oZiA9IHJzc19j b25mLT5yc3NfaGY7CmRpZmYgYS9kcml2ZXJzL25ldC9uZnAvbmZwX2N0cmwuaCBiL2RyaXZlcnMv bmV0L25mcC9uZnBfY3RybC5oCShyZWplY3RlZCBodW5rcykKQEAgLTExOSw2ICsxMTksNyBAQAog I2RlZmluZSBORlBfTkVUX0NGR19NQUNBRERSICAgICAgICAgICAgIDB4MDAyNAogCiAjZGVmaW5l IE5GUF9ORVRfQ0ZHX0NUUkxfTFNPX0FOWSAoTkZQX05FVF9DRkdfQ1RSTF9MU08gfCBORlBfTkVU X0NGR19DVFJMX0xTTzIpCisjZGVmaW5lIE5GUF9ORVRfQ0ZHX0NUUkxfUlNTX0FOWSAoTkZQX05F VF9DRkdfQ1RSTF9SU1MgfCBORlBfTkVUX0NGR19DVFJMX1JTUzIpCiAKIC8qCiAgKiBSZWFkLW9u bHkgd29yZHMgKDB4MDAzMCAtIDB4MDA1MCk6CgpodHRwczovL2xhYi5kcGRrLm9yZy9yZXN1bHRz L2Rhc2hib2FyZC9wYXRjaHNldHMvMjI3NjIvCgpVTkgtSU9MIERQREsgQ29tbXVuaXR5IExhYgo= --===============3027382795917371175==--