Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8411CA9EA0 for ; Fri, 18 Oct 2019 13:51:38 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9EAD3222BD for ; Fri, 18 Oct 2019 13:51:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9EAD3222BD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iLSf7-0006Yx-QW; Fri, 18 Oct 2019 13:51:25 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iLSf6-0006YA-9j for xen-devel@lists.xenproject.org; Fri, 18 Oct 2019 13:51:24 +0000 X-Inumbo-ID: 5eba40b8-f1ae-11e9-93f5-12813bfff9fa Received: from mx1.redhat.com (unknown [209.132.183.28]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 5eba40b8-f1ae-11e9-93f5-12813bfff9fa; Fri, 18 Oct 2019 13:51:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 24C753090FEE; Fri, 18 Oct 2019 13:51:23 +0000 (UTC) Received: from x1w.redhat.com (unknown [10.40.205.74]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 434FB60BF1; Fri, 18 Oct 2019 13:51:11 +0000 (UTC) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Date: Fri, 18 Oct 2019 15:47:52 +0200 Message-Id: <20191018134754.16362-19-philmd@redhat.com> In-Reply-To: <20191018134754.16362-1-philmd@redhat.com> References: <20191018134754.16362-1-philmd@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.43]); Fri, 18 Oct 2019 13:51:23 +0000 (UTC) Subject: [Xen-devel] [PATCH v2 18/20] hw/pci-host/piix: Extract PIIX3 functions to hw/isa/piix3.c X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Marcel Apfelbaum , "Michael S. Tsirkin" , Paul Durrant , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Aleksandar Markovic , Igor Mammedov , Anthony Perard , xen-devel@lists.xenproject.org, Aleksandar Rikalo , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno , Eduardo Habkost Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" RnJvbTogUGhpbGlwcGUgTWF0aGlldS1EYXVkw6kgPGY0YnVnQGFtc2F0Lm9yZz4KCk1vdmUgYWxs IHRoZSBQSUlYMyBmdW5jdGlvbnMgdG8gYSBuZXcgZmlsZTogaHcvaXNhL3BpaXgzLmMuCgpSZXZp ZXdlZC1ieTogQWxla3NhbmRhciBNYXJrb3ZpYyA8YW1hcmtvdmljQHdhdmVjb21wLmNvbT4KU2ln bmVkLW9mZi1ieTogUGhpbGlwcGUgTWF0aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPgot LS0KQ2hlY2twYXRjaCB3YXJuaW5nOgoKIEVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRo YXQgJyonIChjdHg6VnhWKQogIzMxMjogRklMRTogaHcvaXNhL3BpaXgzLmM6MjQ4OgogKyAgICAu c3Vic2VjdGlvbnMgPSAoY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uKltdKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0tLQogTUFJTlRBSU5FUlMgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogaHcvaTM4Ni9LY29uZmlnICAgICAgICAgICAgICAgfCAg IDEgKwogaHcvaXNhL0tjb25maWcgICAgICAgICAgICAgICAgfCAgIDQgKwogaHcvaXNhL01ha2Vm aWxlLm9ianMgICAgICAgICAgfCAgIDEgKwogaHcvaXNhL3BpaXgzLmMgICAgICAgICAgICAgICAg fCAzOTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBody9wY2ktaG9zdC9LY29u ZmlnICAgICAgICAgICB8ICAgMSAtCiBody9wY2ktaG9zdC9waWl4LmMgICAgICAgICAgICB8IDQw MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2h3L3NvdXRoYnJp ZGdlL3BpaXguaCB8ICAzNiArKysKIDggZmlsZXMgY2hhbmdlZCwgNDQyIGluc2VydGlvbnMoKyks IDQwMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBody9pc2EvcGlpeDMuYwoKZGlm ZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggYWRmMDU5YTE2NC4uNDg0 NWY0N2Q5MyAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTEy MzEsNiArMTIzMSw3IEBAIEY6IGh3L3BjaS1ob3N0L3BhbS5jCiBGOiBpbmNsdWRlL2h3L3BjaS1o b3N0L2k0NDBmeC5oCiBGOiBpbmNsdWRlL2h3L3BjaS1ob3N0L3EzNS5oCiBGOiBpbmNsdWRlL2h3 L3BjaS1ob3N0L3BhbS5oCitGOiBody9pc2EvcGlpeDMuYwogRjogaHcvaXNhL2xwY19pY2g5LmMK IEY6IGh3L2kyYy9zbWJ1c19pY2g5LmMKIEY6IGh3L2FjcGkvcGlpeDQuYwpkaWZmIC0tZ2l0IGEv aHcvaTM4Ni9LY29uZmlnIGIvaHcvaTM4Ni9LY29uZmlnCmluZGV4IGM1YzlkNDkwMGUuLjU4OWQ3 NWUyNmEgMTAwNjQ0Ci0tLSBhL2h3L2kzODYvS2NvbmZpZworKysgYi9ody9pMzg2L0tjb25maWcK QEAgLTYxLDYgKzYxLDcgQEAgY29uZmlnIEk0NDBGWAogICAgIHNlbGVjdCBQQ19BQ1BJCiAgICAg c2VsZWN0IEFDUElfU01CVVMKICAgICBzZWxlY3QgUENJX1BJSVgKKyAgICBzZWxlY3QgUElJWDMK ICAgICBzZWxlY3QgSURFX1BJSVgKICAgICBzZWxlY3QgRElNTQogICAgIHNlbGVjdCBTTUJJT1MK ZGlmZiAtLWdpdCBhL2h3L2lzYS9LY29uZmlnIGIvaHcvaXNhL0tjb25maWcKaW5kZXggOThhMjg5 OTU3ZS4uOGEzODgxM2NjMSAxMDA2NDQKLS0tIGEvaHcvaXNhL0tjb25maWcKKysrIGIvaHcvaXNh L0tjb25maWcKQEAgLTI5LDYgKzI5LDEwIEBAIGNvbmZpZyBQQzg3MzEyCiAgICAgc2VsZWN0IEZE QwogICAgIHNlbGVjdCBJREVfSVNBCiAKK2NvbmZpZyBQSUlYMworICAgIGJvb2wKKyAgICBzZWxl Y3QgSVNBX0JVUworCiBjb25maWcgUElJWDQKICAgICBib29sCiAgICAgIyBGb3IgaGlzdG9yaWNh bCByZWFzb25zLCBTdXBlcklPIGRldmljZXMgYXJlIGNyZWF0ZWQgaW4gdGhlIGJvYXJkCmRpZmYg LS1naXQgYS9ody9pc2EvTWFrZWZpbGUub2JqcyBiL2h3L2lzYS9NYWtlZmlsZS5vYmpzCmluZGV4 IGZmOTc0ODU1MDQuLjhlNzM5NjBhNzUgMTAwNjQ0Ci0tLSBhL2h3L2lzYS9NYWtlZmlsZS5vYmpz CisrKyBiL2h3L2lzYS9NYWtlZmlsZS5vYmpzCkBAIC0zLDYgKzMsNyBAQCBjb21tb24tb2JqLSQo Q09ORklHX0lTQV9TVVBFUklPKSArPSBpc2Etc3VwZXJpby5vCiBjb21tb24tb2JqLSQoQ09ORklH X0FQTSkgKz0gYXBtLm8KIGNvbW1vbi1vYmotJChDT05GSUdfSTgyMzc4KSArPSBpODIzNzgubwog Y29tbW9uLW9iai0kKENPTkZJR19QQzg3MzEyKSArPSBwYzg3MzEyLm8KK2NvbW1vbi1vYmotJChD T05GSUdfUElJWDMpICs9IHBpaXgzLm8KIGNvbW1vbi1vYmotJChDT05GSUdfUElJWDQpICs9IHBp aXg0Lm8KIGNvbW1vbi1vYmotJChDT05GSUdfVlQ4MkM2ODYpICs9IHZ0ODJjNjg2Lm8KIGNvbW1v bi1vYmotJChDT05GSUdfU01DMzdDNjY5KSArPSBzbWMzN2M2Njktc3VwZXJpby5vCmRpZmYgLS1n aXQgYS9ody9pc2EvcGlpeDMuYyBiL2h3L2lzYS9waWl4My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLmZkMWM3ODg3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9ody9pc2Ev cGlpeDMuYwpAQCAtMCwwICsxLDM5OSBAQAorLyoKKyAqIFFFTVUgUElJWCBQQ0kgSVNBIEJyaWRn ZSBFbXVsYXRpb24KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgRmFicmljZSBCZWxsYXJkCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKyAqIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uIHRoZSByaWdodHMKKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor ICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorICogVEhFIFNP RlRXQVJFLgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVkZSAicWVtdS9y YW5nZS5oIgorI2luY2x1ZGUgImh3L3NvdXRoYnJpZGdlL3BpaXguaCIKKyNpbmNsdWRlICJody9p cnEuaCIKKyNpbmNsdWRlICJody9pc2EvaXNhLmgiCisjaW5jbHVkZSAiaHcveGVuL3hlbi5oIgor I2luY2x1ZGUgInN5c2VtdS9zeXNlbXUuaCIKKyNpbmNsdWRlICJzeXNlbXUvcmVzZXQuaCIKKyNp bmNsdWRlICJzeXNlbXUvcnVuc3RhdGUuaCIKKyNpbmNsdWRlICJtaWdyYXRpb24vdm1zdGF0ZS5o IgorCisjZGVmaW5lIFhFTl9QSUlYX05VTV9QSVJRUyAgICAgIDEyOFVMTAorCisjZGVmaW5lIFRZ UEVfUElJWDNfUENJX0RFVklDRSAicGNpLXBpaXgzIgorI2RlZmluZSBQSUlYM19QQ0lfREVWSUNF KG9iaikgXAorICAgIE9CSkVDVF9DSEVDSyhQSUlYM1N0YXRlLCAob2JqKSwgVFlQRV9QSUlYM19Q Q0lfREVWSUNFKQorCisjZGVmaW5lIFRZUEVfUElJWDNfREVWSUNFICJQSUlYMyIKKyNkZWZpbmUg VFlQRV9QSUlYM19YRU5fREVWSUNFICJQSUlYMy14ZW4iCisKK3N0YXRpYyB2b2lkIHBpaXgzX3Nl dF9pcnFfcGljKFBJSVgzU3RhdGUgKnBpaXgzLCBpbnQgcGljX2lycSkKK3sKKyAgICBxZW11X3Nl dF9pcnEocGlpeDMtPnBpY1twaWNfaXJxXSwKKyAgICAgICAgICAgICAgICAgISEocGlpeDMtPnBp Y19sZXZlbHMgJgorICAgICAgICAgICAgICAgICAgICAoKCgxVUxMIDw8IFBJSVhfTlVNX1BJUlFT KSAtIDEpIDw8CisgICAgICAgICAgICAgICAgICAgICAocGljX2lycSAqIFBJSVhfTlVNX1BJUlFT KSkpKTsKK30KKworc3RhdGljIHZvaWQgcGlpeDNfc2V0X2lycV9sZXZlbF9pbnRlcm5hbChQSUlY M1N0YXRlICpwaWl4MywgaW50IHBpcnEsIGludCBsZXZlbCkKK3sKKyAgICBpbnQgcGljX2lycTsK KyAgICB1aW50NjRfdCBtYXNrOworCisgICAgcGljX2lycSA9IHBpaXgzLT5kZXYuY29uZmlnW1BJ SVhfUElSUUNBICsgcGlycV07CisgICAgaWYgKHBpY19pcnEgPj0gUElJWF9OVU1fUElDX0lSUVMp IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1hc2sgPSAxVUxMIDw8ICgocGljX2ly cSAqIFBJSVhfTlVNX1BJUlFTKSArIHBpcnEpOworICAgIHBpaXgzLT5waWNfbGV2ZWxzICY9IH5t YXNrOworICAgIHBpaXgzLT5waWNfbGV2ZWxzIHw9IG1hc2sgKiAhIWxldmVsOworfQorCitzdGF0 aWMgdm9pZCBwaWl4M19zZXRfaXJxX2xldmVsKFBJSVgzU3RhdGUgKnBpaXgzLCBpbnQgcGlycSwg aW50IGxldmVsKQoreworICAgIGludCBwaWNfaXJxOworCisgICAgcGljX2lycSA9IHBpaXgzLT5k ZXYuY29uZmlnW1BJSVhfUElSUUNBICsgcGlycV07CisgICAgaWYgKHBpY19pcnEgPj0gUElJWF9O VU1fUElDX0lSUVMpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBpaXgzX3NldF9p cnFfbGV2ZWxfaW50ZXJuYWwocGlpeDMsIHBpcnEsIGxldmVsKTsKKworICAgIHBpaXgzX3NldF9p cnFfcGljKHBpaXgzLCBwaWNfaXJxKTsKK30KKworc3RhdGljIHZvaWQgcGlpeDNfc2V0X2lycSh2 b2lkICpvcGFxdWUsIGludCBwaXJxLCBpbnQgbGV2ZWwpCit7CisgICAgUElJWDNTdGF0ZSAqcGlp eDMgPSBvcGFxdWU7CisgICAgcGlpeDNfc2V0X2lycV9sZXZlbChwaWl4MywgcGlycSwgbGV2ZWwp OworfQorCitzdGF0aWMgUENJSU5UeFJvdXRlIHBpaXgzX3JvdXRlX2ludHhfcGluX3RvX2lycSh2 b2lkICpvcGFxdWUsIGludCBwaW4pCit7CisgICAgUElJWDNTdGF0ZSAqcGlpeDMgPSBvcGFxdWU7 CisgICAgaW50IGlycSA9IHBpaXgzLT5kZXYuY29uZmlnW1BJSVhfUElSUUNBICsgcGluXTsKKyAg ICBQQ0lJTlR4Um91dGUgcm91dGU7CisKKyAgICBpZiAoaXJxIDwgUElJWF9OVU1fUElDX0lSUVMp IHsKKyAgICAgICAgcm91dGUubW9kZSA9IFBDSV9JTlRYX0VOQUJMRUQ7CisgICAgICAgIHJvdXRl LmlycSA9IGlycTsKKyAgICB9IGVsc2UgeworICAgICAgICByb3V0ZS5tb2RlID0gUENJX0lOVFhf RElTQUJMRUQ7CisgICAgICAgIHJvdXRlLmlycSA9IC0xOworICAgIH0KKyAgICByZXR1cm4gcm91 dGU7Cit9CisKKy8qIGlycSByb3V0aW5nIGlzIGNoYW5nZWQuIHNvIHJlYnVpbGQgYml0bWFwICov CitzdGF0aWMgdm9pZCBwaWl4M191cGRhdGVfaXJxX2xldmVscyhQSUlYM1N0YXRlICpwaWl4MykK K3sKKyAgICBQQ0lCdXMgKmJ1cyA9IHBjaV9nZXRfYnVzKCZwaWl4My0+ZGV2KTsKKyAgICBpbnQg cGlycTsKKworICAgIHBpaXgzLT5waWNfbGV2ZWxzID0gMDsKKyAgICBmb3IgKHBpcnEgPSAwOyBw aXJxIDwgUElJWF9OVU1fUElSUVM7IHBpcnErKykgeworICAgICAgICBwaWl4M19zZXRfaXJxX2xl dmVsKHBpaXgzLCBwaXJxLCBwY2lfYnVzX2dldF9pcnFfbGV2ZWwoYnVzLCBwaXJxKSk7CisgICAg fQorfQorCitzdGF0aWMgdm9pZCBwaWl4M193cml0ZV9jb25maWcoUENJRGV2aWNlICpkZXYsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkcmVzcywgdWludDMyX3Qg dmFsLCBpbnQgbGVuKQoreworICAgIHBjaV9kZWZhdWx0X3dyaXRlX2NvbmZpZyhkZXYsIGFkZHJl c3MsIHZhbCwgbGVuKTsKKyAgICBpZiAocmFuZ2VzX292ZXJsYXAoYWRkcmVzcywgbGVuLCBQSUlY X1BJUlFDQSwgNCkpIHsKKyAgICAgICAgUElJWDNTdGF0ZSAqcGlpeDMgPSBQSUlYM19QQ0lfREVW SUNFKGRldik7CisgICAgICAgIGludCBwaWNfaXJxOworCisgICAgICAgIHBjaV9idXNfZmlyZV9p bnR4X3JvdXRpbmdfbm90aWZpZXIocGNpX2dldF9idXMoJnBpaXgzLT5kZXYpKTsKKyAgICAgICAg cGlpeDNfdXBkYXRlX2lycV9sZXZlbHMocGlpeDMpOworICAgICAgICBmb3IgKHBpY19pcnEgPSAw OyBwaWNfaXJxIDwgUElJWF9OVU1fUElDX0lSUVM7IHBpY19pcnErKykgeworICAgICAgICAgICAg cGlpeDNfc2V0X2lycV9waWMocGlpeDMsIHBpY19pcnEpOworICAgICAgICB9CisgICAgfQorfQor CitzdGF0aWMgdm9pZCBwaWl4M193cml0ZV9jb25maWdfeGVuKFBDSURldmljZSAqZGV2LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyZXNzLCB1aW50MzJf dCB2YWwsIGludCBsZW4pCit7CisgICAgeGVuX3BpaXhfcGNpX3dyaXRlX2NvbmZpZ19jbGllbnQo YWRkcmVzcywgdmFsLCBsZW4pOworICAgIHBpaXgzX3dyaXRlX2NvbmZpZyhkZXYsIGFkZHJlc3Ms IHZhbCwgbGVuKTsKK30KKworc3RhdGljIHZvaWQgcGlpeDNfcmVzZXQodm9pZCAqb3BhcXVlKQor eworICAgIFBJSVgzU3RhdGUgKmQgPSBvcGFxdWU7CisgICAgdWludDhfdCAqcGNpX2NvbmYgPSBk LT5kZXYuY29uZmlnOworCisgICAgcGNpX2NvbmZbMHgwNF0gPSAweDA3OyAvKiBtYXN0ZXIsIG1l bW9yeSBhbmQgSS9PICovCisgICAgcGNpX2NvbmZbMHgwNV0gPSAweDAwOworICAgIHBjaV9jb25m WzB4MDZdID0gMHgwMDsKKyAgICBwY2lfY29uZlsweDA3XSA9IDB4MDI7IC8qIFBDSV9zdGF0dXNf ZGV2c2VsX21lZGl1bSAqLworICAgIHBjaV9jb25mWzB4NGNdID0gMHg0ZDsKKyAgICBwY2lfY29u ZlsweDRlXSA9IDB4MDM7CisgICAgcGNpX2NvbmZbMHg0Zl0gPSAweDAwOworICAgIHBjaV9jb25m WzB4NjBdID0gMHg4MDsKKyAgICBwY2lfY29uZlsweDYxXSA9IDB4ODA7CisgICAgcGNpX2NvbmZb MHg2Ml0gPSAweDgwOworICAgIHBjaV9jb25mWzB4NjNdID0gMHg4MDsKKyAgICBwY2lfY29uZlsw eDY5XSA9IDB4MDI7CisgICAgcGNpX2NvbmZbMHg3MF0gPSAweDgwOworICAgIHBjaV9jb25mWzB4 NzZdID0gMHgwYzsKKyAgICBwY2lfY29uZlsweDc3XSA9IDB4MGM7CisgICAgcGNpX2NvbmZbMHg3 OF0gPSAweDAyOworICAgIHBjaV9jb25mWzB4NzldID0gMHgwMDsKKyAgICBwY2lfY29uZlsweDgw XSA9IDB4MDA7CisgICAgcGNpX2NvbmZbMHg4Ml0gPSAweDAwOworICAgIHBjaV9jb25mWzB4YTBd ID0gMHgwODsKKyAgICBwY2lfY29uZlsweGEyXSA9IDB4MDA7CisgICAgcGNpX2NvbmZbMHhhM10g PSAweDAwOworICAgIHBjaV9jb25mWzB4YTRdID0gMHgwMDsKKyAgICBwY2lfY29uZlsweGE1XSA9 IDB4MDA7CisgICAgcGNpX2NvbmZbMHhhNl0gPSAweDAwOworICAgIHBjaV9jb25mWzB4YTddID0g MHgwMDsKKyAgICBwY2lfY29uZlsweGE4XSA9IDB4MGY7CisgICAgcGNpX2NvbmZbMHhhYV0gPSAw eDAwOworICAgIHBjaV9jb25mWzB4YWJdID0gMHgwMDsKKyAgICBwY2lfY29uZlsweGFjXSA9IDB4 MDA7CisgICAgcGNpX2NvbmZbMHhhZV0gPSAweDAwOworCisgICAgZC0+cGljX2xldmVscyA9IDA7 CisgICAgZC0+cmNyID0gMDsKK30KKworc3RhdGljIGludCBwaWl4M19wb3N0X2xvYWQodm9pZCAq b3BhcXVlLCBpbnQgdmVyc2lvbl9pZCkKK3sKKyAgICBQSUlYM1N0YXRlICpwaWl4MyA9IG9wYXF1 ZTsKKyAgICBpbnQgcGlycTsKKworICAgIC8qCisgICAgICogQmVjYXVzZSB0aGUgaTgyNTkgaGFz IG5vdCBiZWVuIGRlc2VyaWFsaXplZCB5ZXQsIHFlbXVfaXJxX3JhaXNlCisgICAgICogbWlnaHQg YnJpbmcgdGhlIHN5c3RlbSB0byBhIGRpZmZlcmVudCBzdGF0ZSB0aGFuIHRoZSBzYXZlZCBvbmU7 CisgICAgICogZm9yIGV4YW1wbGUsIHRoZSBpbnRlcnJ1cHQgY291bGQgYmUgbWFza2VkIGJ1dCB0 aGUgaTgyNTkgd291bGQKKyAgICAgKiBub3Qga25vdyB0aGF0IHlldCBhbmQgd291bGQgdHJpZ2dl ciBhbiBpbnRlcnJ1cHQgaW4gdGhlIENQVS4KKyAgICAgKgorICAgICAqIEhlcmUsIHdlIHVwZGF0 ZSBpcnEgbGV2ZWxzIHdpdGhvdXQgcmFpc2luZyB0aGUgaW50ZXJydXB0LgorICAgICAqIEludGVy cnVwdCBzdGF0ZSB3aWxsIGJlIGRlc2VyaWFsaXplZCBzZXBhcmF0ZWx5IHRocm91Z2ggdGhlIGk4 MjU5LgorICAgICAqLworICAgIHBpaXgzLT5waWNfbGV2ZWxzID0gMDsKKyAgICBmb3IgKHBpcnEg PSAwOyBwaXJxIDwgUElJWF9OVU1fUElSUVM7IHBpcnErKykgeworICAgICAgICBwaWl4M19zZXRf aXJxX2xldmVsX2ludGVybmFsKHBpaXgzLCBwaXJxLAorICAgICAgICAgICAgcGNpX2J1c19nZXRf aXJxX2xldmVsKHBjaV9nZXRfYnVzKCZwaWl4My0+ZGV2KSwgcGlycSkpOworICAgIH0KKyAgICBy ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwaWl4M19wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCit7 CisgICAgaW50IGk7CisgICAgUElJWDNTdGF0ZSAqcGlpeDMgPSBvcGFxdWU7CisKKyAgICBmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShwaWl4My0+cGNpX2lycV9sZXZlbHNfdm1zdGF0ZSk7IGkr KykgeworICAgICAgICBwaWl4My0+cGNpX2lycV9sZXZlbHNfdm1zdGF0ZVtpXSA9CisgICAgICAg ICAgICBwY2lfYnVzX2dldF9pcnFfbGV2ZWwocGNpX2dldF9idXMoJnBpaXgzLT5kZXYpLCBpKTsK KyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGJvb2wgcGlpeDNfcmNyX25lZWRl ZCh2b2lkICpvcGFxdWUpCit7CisgICAgUElJWDNTdGF0ZSAqcGlpeDMgPSBvcGFxdWU7CisKKyAg ICByZXR1cm4gKHBpaXgzLT5yY3IgIT0gMCk7Cit9CisKK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVz Y3JpcHRpb24gdm1zdGF0ZV9waWl4M19yY3IgPSB7CisgICAgLm5hbWUgPSAiUElJWDMvcmNyIiwK KyAgICAudmVyc2lvbl9pZCA9IDEsCisgICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDEsCisgICAg Lm5lZWRlZCA9IHBpaXgzX3Jjcl9uZWVkZWQsCisgICAgLmZpZWxkcyA9IChWTVN0YXRlRmllbGRb XSkgeworICAgICAgICBWTVNUQVRFX1VJTlQ4KHJjciwgUElJWDNTdGF0ZSksCisgICAgICAgIFZN U1RBVEVfRU5EX09GX0xJU1QoKQorICAgIH0KK307CisKK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVz Y3JpcHRpb24gdm1zdGF0ZV9waWl4MyA9IHsKKyAgICAubmFtZSA9ICJQSUlYMyIsCisgICAgLnZl cnNpb25faWQgPSAzLAorICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAyLAorICAgIC5wb3N0X2xv YWQgPSBwaWl4M19wb3N0X2xvYWQsCisgICAgLnByZV9zYXZlID0gcGlpeDNfcHJlX3NhdmUsCisg ICAgLmZpZWxkcyA9IChWTVN0YXRlRmllbGRbXSkgeworICAgICAgICBWTVNUQVRFX1BDSV9ERVZJ Q0UoZGV2LCBQSUlYM1N0YXRlKSwKKyAgICAgICAgVk1TVEFURV9JTlQzMl9BUlJBWV9WKHBjaV9p cnFfbGV2ZWxzX3Ztc3RhdGUsIFBJSVgzU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQSUlYX05VTV9QSVJRUywgMyksCisgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQor ICAgIH0sCisgICAgLnN1YnNlY3Rpb25zID0gKGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbipbXSkg eworICAgICAgICAmdm1zdGF0ZV9waWl4M19yY3IsCisgICAgICAgIE5VTEwKKyAgICB9Cit9Owor CisKK3N0YXRpYyB2b2lkIHJjcl93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLCB1aW50 NjRfdCB2YWwsIHVuc2lnbmVkIGxlbikKK3sKKyAgICBQSUlYM1N0YXRlICpkID0gb3BhcXVlOwor CisgICAgaWYgKHZhbCAmIDQpIHsKKyAgICAgICAgcWVtdV9zeXN0ZW1fcmVzZXRfcmVxdWVzdChT SFVURE9XTl9DQVVTRV9HVUVTVF9SRVNFVCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg ZC0+cmNyID0gdmFsICYgMjsgLyoga2VlcCBTeXN0ZW0gUmVzZXQgdHlwZSBvbmx5ICovCit9CisK K3N0YXRpYyB1aW50NjRfdCByY3JfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLCB1bnNp Z25lZCBsZW4pCit7CisgICAgUElJWDNTdGF0ZSAqZCA9IG9wYXF1ZTsKKworICAgIHJldHVybiBk LT5yY3I7Cit9CisKK3N0YXRpYyBjb25zdCBNZW1vcnlSZWdpb25PcHMgcmNyX29wcyA9IHsKKyAg ICAucmVhZCA9IHJjcl9yZWFkLAorICAgIC53cml0ZSA9IHJjcl93cml0ZSwKKyAgICAuZW5kaWFu bmVzcyA9IERFVklDRV9MSVRUTEVfRU5ESUFOCit9OworCitzdGF0aWMgdm9pZCBwaWl4M19yZWFs aXplKFBDSURldmljZSAqZGV2LCBFcnJvciAqKmVycnApCit7CisgICAgUElJWDNTdGF0ZSAqZCA9 IFBJSVgzX1BDSV9ERVZJQ0UoZGV2KTsKKworICAgIGlmICghaXNhX2J1c19uZXcoREVWSUNFKGQp LCBnZXRfc3lzdGVtX21lbW9yeSgpLAorICAgICAgICAgICAgICAgICAgICAgcGNpX2FkZHJlc3Nf c3BhY2VfaW8oZGV2KSwgZXJycCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1l bW9yeV9yZWdpb25faW5pdF9pbygmZC0+cmNyX21lbSwgT0JKRUNUKGRldiksICZyY3Jfb3BzLCBk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAicGlpeDMtcmVzZXQtY29udHJvbCIsIDEpOwor ICAgIG1lbW9yeV9yZWdpb25fYWRkX3N1YnJlZ2lvbl9vdmVybGFwKHBjaV9hZGRyZXNzX3NwYWNl X2lvKGRldiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElJWF9S Q1JfSU9QT1JULCAmZC0+cmNyX21lbSwgMSk7CisKKyAgICBxZW11X3JlZ2lzdGVyX3Jlc2V0KHBp aXgzX3Jlc2V0LCBkKTsKK30KKworc3RhdGljIHZvaWQgcGNpX3BpaXgzX2NsYXNzX2luaXQoT2Jq ZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQoreworICAgIERldmljZUNsYXNzICpkYyA9IERF VklDRV9DTEFTUyhrbGFzcyk7CisgICAgUENJRGV2aWNlQ2xhc3MgKmsgPSBQQ0lfREVWSUNFX0NM QVNTKGtsYXNzKTsKKworICAgIGRjLT5kZXNjICAgICAgICA9ICJJU0EgYnJpZGdlIjsKKyAgICBk Yy0+dm1zZCAgICAgICAgPSAmdm1zdGF0ZV9waWl4MzsKKyAgICBkYy0+aG90cGx1Z2dhYmxlICAg PSBmYWxzZTsKKyAgICBrLT5yZWFsaXplICAgICAgPSBwaWl4M19yZWFsaXplOworICAgIGstPnZl bmRvcl9pZCAgICA9IFBDSV9WRU5ET1JfSURfSU5URUw7CisgICAgLyogODIzNzFTQiBQSUlYMyBQ Q0ktdG8tSVNBIGJyaWRnZSAoU3RlcCBBMSkgKi8KKyAgICBrLT5kZXZpY2VfaWQgICAgPSBQQ0lf REVWSUNFX0lEX0lOVEVMXzgyMzcxU0JfMDsKKyAgICBrLT5jbGFzc19pZCAgICAgPSBQQ0lfQ0xB U1NfQlJJREdFX0lTQTsKKyAgICAvKgorICAgICAqIFJlYXNvbjogcGFydCBvZiBQSUlYMyBzb3V0 aGJyaWRnZSwgbmVlZHMgdG8gYmUgd2lyZWQgdXAgYnkKKyAgICAgKiBwY19waWl4LmMncyBwY19p bml0MSgpCisgICAgICovCisgICAgZGMtPnVzZXJfY3JlYXRhYmxlID0gZmFsc2U7Cit9CisKK3N0 YXRpYyBjb25zdCBUeXBlSW5mbyBwaWl4M19wY2lfdHlwZV9pbmZvID0geworICAgIC5uYW1lID0g VFlQRV9QSUlYM19QQ0lfREVWSUNFLAorICAgIC5wYXJlbnQgPSBUWVBFX1BDSV9ERVZJQ0UsCisg ICAgLmluc3RhbmNlX3NpemUgPSBzaXplb2YoUElJWDNTdGF0ZSksCisgICAgLmFic3RyYWN0ID0g dHJ1ZSwKKyAgICAuY2xhc3NfaW5pdCA9IHBjaV9waWl4M19jbGFzc19pbml0LAorICAgIC5pbnRl cmZhY2VzID0gKEludGVyZmFjZUluZm9bXSkgeworICAgICAgICB7IElOVEVSRkFDRV9DT05WRU5U SU9OQUxfUENJX0RFVklDRSB9LAorICAgICAgICB7IH0sCisgICAgfSwKK307CisKK3N0YXRpYyB2 b2lkIHBpaXgzX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQorewor ICAgIFBDSURldmljZUNsYXNzICprID0gUENJX0RFVklDRV9DTEFTUyhrbGFzcyk7CisKKyAgICBr LT5jb25maWdfd3JpdGUgPSBwaWl4M193cml0ZV9jb25maWc7Cit9CisKK3N0YXRpYyBjb25zdCBU eXBlSW5mbyBwaWl4M19pbmZvID0geworICAgIC5uYW1lICAgICAgICAgID0gVFlQRV9QSUlYM19E RVZJQ0UsCisgICAgLnBhcmVudCAgICAgICAgPSBUWVBFX1BJSVgzX1BDSV9ERVZJQ0UsCisgICAg LmNsYXNzX2luaXQgICAgPSBwaWl4M19jbGFzc19pbml0LAorfTsKKworc3RhdGljIHZvaWQgcGlp eDNfeGVuX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQoreworICAg IFBDSURldmljZUNsYXNzICprID0gUENJX0RFVklDRV9DTEFTUyhrbGFzcyk7CisKKyAgICBrLT5j b25maWdfd3JpdGUgPSBwaWl4M193cml0ZV9jb25maWdfeGVuOworfTsKKworc3RhdGljIGNvbnN0 IFR5cGVJbmZvIHBpaXgzX3hlbl9pbmZvID0geworICAgIC5uYW1lICAgICAgICAgID0gVFlQRV9Q SUlYM19YRU5fREVWSUNFLAorICAgIC5wYXJlbnQgICAgICAgID0gVFlQRV9QSUlYM19QQ0lfREVW SUNFLAorICAgIC5jbGFzc19pbml0ICAgID0gcGlpeDNfeGVuX2NsYXNzX2luaXQsCit9OworCitz dGF0aWMgdm9pZCBwaWl4M19yZWdpc3Rlcl90eXBlcyh2b2lkKQoreworICAgIHR5cGVfcmVnaXN0 ZXJfc3RhdGljKCZwaWl4M19wY2lfdHlwZV9pbmZvKTsKKyAgICB0eXBlX3JlZ2lzdGVyX3N0YXRp YygmcGlpeDNfaW5mbyk7CisgICAgdHlwZV9yZWdpc3Rlcl9zdGF0aWMoJnBpaXgzX3hlbl9pbmZv KTsKK30KKwordHlwZV9pbml0KHBpaXgzX3JlZ2lzdGVyX3R5cGVzKQorCisvKgorICogUmV0dXJu IHRoZSBnbG9iYWwgaXJxIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4gZGV2aWNlIGly cQorICogcGluLiBXZSBjb3VsZCBhbHNvIHVzZSB0aGUgYnVzIG51bWJlciB0byBoYXZlIGEgbW9y ZSBwcmVjaXNlIG1hcHBpbmcuCisgKi8KK3N0YXRpYyBpbnQgcGNpX3Nsb3RfZ2V0X3BpcnEoUENJ RGV2aWNlICpwY2lfZGV2LCBpbnQgcGNpX2ludHgpCit7CisgICAgaW50IHNsb3RfYWRkZW5kOwor ICAgIHNsb3RfYWRkZW5kID0gKHBjaV9kZXYtPmRldmZuID4+IDMpIC0gMTsKKyAgICByZXR1cm4g KHBjaV9pbnR4ICsgc2xvdF9hZGRlbmQpICYgMzsKK30KKworUElJWDNTdGF0ZSAqcGlpeDNfY3Jl YXRlKFBDSUJ1cyAqcGNpX2J1cywgSVNBQnVzICoqaXNhX2J1cykKK3sKKyAgICBQSUlYM1N0YXRl ICpwaWl4MzsKKyAgICBQQ0lEZXZpY2UgKnBjaV9kZXY7CisKKyAgICAvKgorICAgICAqIFhlbiBz dXBwb3J0cyBhZGRpdGlvbmFsIGludGVycnVwdCByb3V0ZXMgZnJvbSB0aGUgUENJIGRldmljZXMg dG8KKyAgICAgKiB0aGUgSU9BUElDOiB0aGUgZm91ciBwaW5zIG9mIGVhY2ggUENJIGRldmljZSBv biB0aGUgYnVzIGFyZSBhbHNvCisgICAgICogY29ubmVjdGVkIHRvIHRoZSBJT0FQSUMgZGlyZWN0 bHkuCisgICAgICogVGhlc2UgYWRkaXRpb25hbCByb3V0ZXMgY2FuIGJlIGRpc2NvdmVyZWQgdGhy b3VnaCBBQ1BJLgorICAgICAqLworICAgIGlmICh4ZW5fZW5hYmxlZCgpKSB7CisgICAgICAgIHBj aV9kZXYgPSBwY2lfY3JlYXRlX3NpbXBsZV9tdWx0aWZ1bmN0aW9uKHBjaV9idXMsIC0xLCB0cnVl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUWVBF X1BJSVgzX1hFTl9ERVZJQ0UpOworICAgICAgICBwaWl4MyA9IFBJSVgzX1BDSV9ERVZJQ0UocGNp X2Rldik7CisgICAgICAgIHBjaV9idXNfaXJxcyhwY2lfYnVzLCB4ZW5fcGlpeDNfc2V0X2lycSwg eGVuX3BjaV9zbG90X2dldF9waXJxLAorICAgICAgICAgICAgICAgICAgICAgcGlpeDMsIFhFTl9Q SUlYX05VTV9QSVJRUyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGNpX2RldiA9IHBjaV9jcmVh dGVfc2ltcGxlX211bHRpZnVuY3Rpb24ocGNpX2J1cywgLTEsIHRydWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfUElJWDNfREVWSUNFKTsK KyAgICAgICAgcGlpeDMgPSBQSUlYM19QQ0lfREVWSUNFKHBjaV9kZXYpOworICAgICAgICBwY2lf YnVzX2lycXMocGNpX2J1cywgcGlpeDNfc2V0X2lycSwgcGNpX3Nsb3RfZ2V0X3BpcnEsCisgICAg ICAgICAgICAgICAgICAgICBwaWl4MywgUElJWF9OVU1fUElSUVMpOworICAgICAgICBwY2lfYnVz X3NldF9yb3V0ZV9pcnFfZm4ocGNpX2J1cywgcGlpeDNfcm91dGVfaW50eF9waW5fdG9faXJxKTsK KyAgICB9CisgICAgKmlzYV9idXMgPSBJU0FfQlVTKHFkZXZfZ2V0X2NoaWxkX2J1cyhERVZJQ0Uo cGlpeDMpLCAiaXNhLjAiKSk7CisKKyAgICByZXR1cm4gcGlpeDM7Cit9CmRpZmYgLS1naXQgYS9o dy9wY2ktaG9zdC9LY29uZmlnIGIvaHcvcGNpLWhvc3QvS2NvbmZpZwppbmRleCAxZWRjMWEzMWQ0 Li4zOTcwNDNiMjg5IDEwMDY0NAotLS0gYS9ody9wY2ktaG9zdC9LY29uZmlnCisrKyBiL2h3L3Bj aS1ob3N0L0tjb25maWcKQEAgLTMyLDcgKzMyLDYgQEAgY29uZmlnIFBDSV9QSUlYCiAgICAgYm9v bAogICAgIHNlbGVjdCBQQ0kKICAgICBzZWxlY3QgUEFNCi0gICAgc2VsZWN0IElTQV9CVVMKIAog Y29uZmlnIFBDSV9FWFBSRVNTX1EzNQogICAgIGJvb2wKZGlmZiAtLWdpdCBhL2h3L3BjaS1ob3N0 L3BpaXguYyBiL2h3L3BjaS1ob3N0L3BpaXguYwppbmRleCAxNTQ0YzQ3MjZiLi43OWVjZDU4YTJi IDEwMDY0NAotLS0gYS9ody9wY2ktaG9zdC9waWl4LmMKKysrIGIvaHcvcGNpLWhvc3QvcGlpeC5j CkBAIC0yNCwyMiArMjQsMTUgQEAKIAogI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKICNpbmNsdWRl ICJody9pMzg2L3BjLmgiCi0jaW5jbHVkZSAiaHcvaXJxLmgiCiAjaW5jbHVkZSAiaHcvcGNpL3Bj aS5oIgogI2luY2x1ZGUgImh3L3BjaS9wY2lfaG9zdC5oIgogI2luY2x1ZGUgImh3L3BjaS1ob3N0 L2k0NDBmeC5oIgogI2luY2x1ZGUgImh3L3NvdXRoYnJpZGdlL3BpaXguaCIKICNpbmNsdWRlICJo dy9xZGV2LXByb3BlcnRpZXMuaCIKLSNpbmNsdWRlICJody9pc2EvaXNhLmgiCiAjaW5jbHVkZSAi aHcvc3lzYnVzLmgiCiAjaW5jbHVkZSAicWFwaS9lcnJvci5oIgotI2luY2x1ZGUgInFlbXUvcmFu Z2UuaCIKLSNpbmNsdWRlICJody94ZW4veGVuLmgiCiAjaW5jbHVkZSAibWlncmF0aW9uL3Ztc3Rh dGUuaCIKICNpbmNsdWRlICJody9wY2ktaG9zdC9wYW0uaCIKLSNpbmNsdWRlICJzeXNlbXUvcmVz ZXQuaCIKLSNpbmNsdWRlICJzeXNlbXUvcnVuc3RhdGUuaCIKLSNpbmNsdWRlICJody9pMzg2L2lv YXBpYy5oIgogI2luY2x1ZGUgInFhcGkvdmlzaXRvci5oIgogI2luY2x1ZGUgInFlbXUvZXJyb3It cmVwb3J0LmgiCiAKQEAgLTU5LDQ5ICs1Miw5IEBAIHR5cGVkZWYgc3RydWN0IEk0NDBGWFN0YXRl IHsKICAgICB1aW50MzJfdCBzaG9ydF9yb290X2J1czsKIH0gSTQ0MEZYU3RhdGU7CiAKLSNkZWZp bmUgUElJWF9OVU1fUElDX0lSUVMgICAgICAgMTYgICAgICAvKiBpODI1OSAqIDIgKi8KLSNkZWZp bmUgUElJWF9OVU1fUElSUVMgICAgICAgICAgNFVMTCAgICAvKiBQSVJRW0EtRF0gKi8KLSNkZWZp bmUgWEVOX1BJSVhfTlVNX1BJUlFTICAgICAgMTI4VUxMCi0KLXR5cGVkZWYgc3RydWN0IFBJSVgz U3RhdGUgewotICAgIFBDSURldmljZSBkZXY7Ci0KLSAgICAvKgotICAgICAqIGJpdG1hcCB0byB0 cmFjayBwaWMgbGV2ZWxzLgotICAgICAqIFRoZSBwaWMgbGV2ZWwgaXMgdGhlIGxvZ2ljYWwgT1Ig b2YgYWxsIHRoZSBQQ0kgaXJxcyBtYXBwZWQgdG8gaXQKLSAgICAgKiBTbyBvbmUgUElDIGxldmVs IGlzIHRyYWNrZWQgYnkgUElJWF9OVU1fUElSUVMgYml0cy4KLSAgICAgKgotICAgICAqIFBJUlEg aXMgbWFwcGVkIHRvIFBJQyBwaW5zLCB3ZSB0cmFjayBpdCBieQotICAgICAqIFBJSVhfTlVNX1BJ UlFTICogUElJWF9OVU1fUElDX0lSUVMgPSA2NCBiaXRzIHdpdGgKLSAgICAgKiBwaWNfaXJxICog UElJWF9OVU1fUElSUVMgKyBwaXJxCi0gICAgICovCi0jaWYgUElJWF9OVU1fUElDX0lSUVMgKiBQ SUlYX05VTV9QSVJRUyA+IDY0Ci0jZXJyb3IgInVuYWJsZSB0byBlbmNvZGUgcGljIHN0YXRlIGlu IDY0Yml0IGluIHBpY19sZXZlbHMuIgotI2VuZGlmCi0gICAgdWludDY0X3QgcGljX2xldmVsczsK LQotICAgIHFlbXVfaXJxICpwaWM7Ci0KLSAgICAvKiBUaGlzIG1lbWJlciBpc24ndCB1c2VkLiBK dXN0IGZvciBzYXZlL2xvYWQgY29tcGF0aWJpbGl0eSAqLwotICAgIGludDMyX3QgcGNpX2lycV9s ZXZlbHNfdm1zdGF0ZVtQSUlYX05VTV9QSVJRU107Ci0KLSAgICAvKiBSZXNldCBDb250cm9sIFJl Z2lzdGVyIGNvbnRlbnRzICovCi0gICAgdWludDhfdCByY3I7Ci0KLSAgICAvKiBJTyBtZW1vcnkg cmVnaW9uIGZvciBSZXNldCBDb250cm9sIFJlZ2lzdGVyIChQSUlYX1JDUl9JT1BPUlQpICovCi0g ICAgTWVtb3J5UmVnaW9uIHJjcl9tZW07Ci19IFBJSVgzU3RhdGU7Ci0KLSNkZWZpbmUgVFlQRV9Q SUlYM19QQ0lfREVWSUNFICJwY2ktcGlpeDMiCi0jZGVmaW5lIFBJSVgzX1BDSV9ERVZJQ0Uob2Jq KSBcCi0gICAgT0JKRUNUX0NIRUNLKFBJSVgzU3RhdGUsIChvYmopLCBUWVBFX1BJSVgzX1BDSV9E RVZJQ0UpCi0KICNkZWZpbmUgSTQ0MEZYX1BDSV9ERVZJQ0Uob2JqKSBcCiAgICAgT0JKRUNUX0NI RUNLKFBDSUk0NDBGWFN0YXRlLCAob2JqKSwgVFlQRV9JNDQwRlhfUENJX0RFVklDRSkKIAotI2Rl ZmluZSBUWVBFX1BJSVgzX0RFVklDRSAiUElJWDMiCi0jZGVmaW5lIFRZUEVfUElJWDNfWEVOX0RF VklDRSAiUElJWDMteGVuIgotCiBzdHJ1Y3QgUENJSTQ0MEZYU3RhdGUgewogICAgIC8qPCBwcml2 YXRlID4qLwogICAgIFBDSURldmljZSBwYXJlbnRfb2JqOwpAQCAtMTI4LDIyICs4MSw2IEBAIHN0 cnVjdCBQQ0lJNDQwRlhTdGF0ZSB7CiAgKi8KICNkZWZpbmUgSTQ0MEZYX0NPUkVCT09UX1JBTV9T SVpFIDB4NTcKIAotc3RhdGljIHZvaWQgcGlpeDNfc2V0X2lycSh2b2lkICpvcGFxdWUsIGludCBw aXJxLCBpbnQgbGV2ZWwpOwotc3RhdGljIFBDSUlOVHhSb3V0ZSBwaWl4M19yb3V0ZV9pbnR4X3Bp bl90b19pcnEodm9pZCAqb3BhcXVlLCBpbnQgcGNpX2ludHgpOwotc3RhdGljIHZvaWQgcGlpeDNf d3JpdGVfY29uZmlnX3hlbihQQ0lEZXZpY2UgKmRldiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBhZGRyZXNzLCB1aW50MzJfdCB2YWwsIGludCBsZW4pOwotCi0vKgot ICogUmV0dXJuIHRoZSBnbG9iYWwgaXJxIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4g ZGV2aWNlIGlycQotICogcGluLiBXZSBjb3VsZCBhbHNvIHVzZSB0aGUgYnVzIG51bWJlciB0byBo YXZlIGEgbW9yZSBwcmVjaXNlIG1hcHBpbmcuCi0gKi8KLXN0YXRpYyBpbnQgcGNpX3Nsb3RfZ2V0 X3BpcnEoUENJRGV2aWNlICpwY2lfZGV2LCBpbnQgcGNpX2ludHgpCi17Ci0gICAgaW50IHNsb3Rf YWRkZW5kOwotICAgIHNsb3RfYWRkZW5kID0gKHBjaV9kZXYtPmRldmZuID4+IDMpIC0gMTsKLSAg ICByZXR1cm4gKHBjaV9pbnR4ICsgc2xvdF9hZGRlbmQpICYgMzsKLX0KLQogc3RhdGljIHZvaWQg aTQ0MGZ4X3VwZGF0ZV9tZW1vcnlfbWFwcGluZ3MoUENJSTQ0MEZYU3RhdGUgKmQpCiB7CiAgICAg aW50IGk7CkBAIC0zMzMsMzYgKzI3MCw2IEBAIHN0YXRpYyB2b2lkIGk0NDBmeF9yZWFsaXplKFBD SURldmljZSAqZGV2LCBFcnJvciAqKmVycnApCiAgICAgfQogfQogCi1zdGF0aWMgUElJWDNTdGF0 ZSAqcGlpeDNfY3JlYXRlKFBDSUJ1cyAqcGNpX2J1cywgSVNBQnVzICoqaXNhX2J1cykKLXsKLSAg ICBQSUlYM1N0YXRlICpwaWl4MzsKLSAgICBQQ0lEZXZpY2UgKnBjaV9kZXY7Ci0KLSAgICAvKgot ICAgICAqIFhlbiBzdXBwb3J0cyBhZGRpdGlvbmFsIGludGVycnVwdCByb3V0ZXMgZnJvbSB0aGUg UENJIGRldmljZXMgdG8KLSAgICAgKiB0aGUgSU9BUElDOiB0aGUgZm91ciBwaW5zIG9mIGVhY2gg UENJIGRldmljZSBvbiB0aGUgYnVzIGFyZSBhbHNvCi0gICAgICogY29ubmVjdGVkIHRvIHRoZSBJ T0FQSUMgZGlyZWN0bHkuCi0gICAgICogVGhlc2UgYWRkaXRpb25hbCByb3V0ZXMgY2FuIGJlIGRp c2NvdmVyZWQgdGhyb3VnaCBBQ1BJLgotICAgICAqLwotICAgIGlmICh4ZW5fZW5hYmxlZCgpKSB7 Ci0gICAgICAgIHBjaV9kZXYgPSBwY2lfY3JlYXRlX3NpbXBsZV9tdWx0aWZ1bmN0aW9uKHBjaV9i dXMsIC0xLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUWVBFX1BJSVgzX1hFTl9ERVZJQ0UpOwotICAgICAgICBwaWl4MyA9IFBJSVgzX1BD SV9ERVZJQ0UocGNpX2Rldik7Ci0gICAgICAgIHBjaV9idXNfaXJxcyhwY2lfYnVzLCB4ZW5fcGlp eDNfc2V0X2lycSwgeGVuX3BjaV9zbG90X2dldF9waXJxLAotICAgICAgICAgICAgICAgICAgICAg cGlpeDMsIFhFTl9QSUlYX05VTV9QSVJRUyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGNpX2Rl diA9IHBjaV9jcmVhdGVfc2ltcGxlX211bHRpZnVuY3Rpb24ocGNpX2J1cywgLTEsIHRydWUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfUElJ WDNfREVWSUNFKTsKLSAgICAgICAgcGlpeDMgPSBQSUlYM19QQ0lfREVWSUNFKHBjaV9kZXYpOwot ICAgICAgICBwY2lfYnVzX2lycXMocGNpX2J1cywgcGlpeDNfc2V0X2lycSwgcGNpX3Nsb3RfZ2V0 X3BpcnEsCi0gICAgICAgICAgICAgICAgICAgICBwaWl4MywgUElJWF9OVU1fUElSUVMpOwotICAg ICAgICBwY2lfYnVzX3NldF9yb3V0ZV9pcnFfZm4ocGNpX2J1cywgcGlpeDNfcm91dGVfaW50eF9w aW5fdG9faXJxKTsKLSAgICB9Ci0gICAgKmlzYV9idXMgPSBJU0FfQlVTKHFkZXZfZ2V0X2NoaWxk X2J1cyhERVZJQ0UocGlpeDMpLCAiaXNhLjAiKSk7Ci0KLSAgICByZXR1cm4gcGlpeDM7Ci19Ci0K IFBDSUJ1cyAqaTQ0MGZ4X2luaXQoY29uc3QgY2hhciAqaG9zdF90eXBlLCBjb25zdCBjaGFyICpw Y2lfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgUENJSTQ0MEZYU3RhdGUgKipwaTQ0MGZ4X3N0 YXRlLAogICAgICAgICAgICAgICAgICAgICBpbnQgKnBpaXgzX2RldmZuLApAQCAtNDU1LDMxMiAr MzYyLDYgQEAgUENJQnVzICpmaW5kX2k0NDBmeCh2b2lkKQogICAgIHJldHVybiBzID8gcy0+YnVz IDogTlVMTDsKIH0KIAotLyogUElJWDMgUENJIHRvIElTQSBicmlkZ2UgKi8KLXN0YXRpYyB2b2lk IHBpaXgzX3NldF9pcnFfcGljKFBJSVgzU3RhdGUgKnBpaXgzLCBpbnQgcGljX2lycSkKLXsKLSAg ICBxZW11X3NldF9pcnEocGlpeDMtPnBpY1twaWNfaXJxXSwKLSAgICAgICAgICAgICAgICAgISEo cGlpeDMtPnBpY19sZXZlbHMgJgotICAgICAgICAgICAgICAgICAgICAoKCgxVUxMIDw8IFBJSVhf TlVNX1BJUlFTKSAtIDEpIDw8Ci0gICAgICAgICAgICAgICAgICAgICAocGljX2lycSAqIFBJSVhf TlVNX1BJUlFTKSkpKTsKLX0KLQotc3RhdGljIHZvaWQgcGlpeDNfc2V0X2lycV9sZXZlbF9pbnRl cm5hbChQSUlYM1N0YXRlICpwaWl4MywgaW50IHBpcnEsIGludCBsZXZlbCkKLXsKLSAgICBpbnQg cGljX2lycTsKLSAgICB1aW50NjRfdCBtYXNrOwotCi0gICAgcGljX2lycSA9IHBpaXgzLT5kZXYu Y29uZmlnW1BJSVhfUElSUUNBICsgcGlycV07Ci0gICAgaWYgKHBpY19pcnEgPj0gUElJWF9OVU1f UElDX0lSUVMpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1hc2sgPSAxVUxMIDw8 ICgocGljX2lycSAqIFBJSVhfTlVNX1BJUlFTKSArIHBpcnEpOwotICAgIHBpaXgzLT5waWNfbGV2 ZWxzICY9IH5tYXNrOwotICAgIHBpaXgzLT5waWNfbGV2ZWxzIHw9IG1hc2sgKiAhIWxldmVsOwot fQotCi1zdGF0aWMgdm9pZCBwaWl4M19zZXRfaXJxX2xldmVsKFBJSVgzU3RhdGUgKnBpaXgzLCBp bnQgcGlycSwgaW50IGxldmVsKQotewotICAgIGludCBwaWNfaXJxOwotCi0gICAgcGljX2lycSA9 IHBpaXgzLT5kZXYuY29uZmlnW1BJSVhfUElSUUNBICsgcGlycV07Ci0gICAgaWYgKHBpY19pcnEg Pj0gUElJWF9OVU1fUElDX0lSUVMpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBp aXgzX3NldF9pcnFfbGV2ZWxfaW50ZXJuYWwocGlpeDMsIHBpcnEsIGxldmVsKTsKLQotICAgIHBp aXgzX3NldF9pcnFfcGljKHBpaXgzLCBwaWNfaXJxKTsKLX0KLQotc3RhdGljIHZvaWQgcGlpeDNf c2V0X2lycSh2b2lkICpvcGFxdWUsIGludCBwaXJxLCBpbnQgbGV2ZWwpCi17Ci0gICAgUElJWDNT dGF0ZSAqcGlpeDMgPSBvcGFxdWU7Ci0gICAgcGlpeDNfc2V0X2lycV9sZXZlbChwaWl4MywgcGly cSwgbGV2ZWwpOwotfQotCi1zdGF0aWMgUENJSU5UeFJvdXRlIHBpaXgzX3JvdXRlX2ludHhfcGlu X3RvX2lycSh2b2lkICpvcGFxdWUsIGludCBwaW4pCi17Ci0gICAgUElJWDNTdGF0ZSAqcGlpeDMg PSBvcGFxdWU7Ci0gICAgaW50IGlycSA9IHBpaXgzLT5kZXYuY29uZmlnW1BJSVhfUElSUUNBICsg cGluXTsKLSAgICBQQ0lJTlR4Um91dGUgcm91dGU7Ci0KLSAgICBpZiAoaXJxIDwgUElJWF9OVU1f UElDX0lSUVMpIHsKLSAgICAgICAgcm91dGUubW9kZSA9IFBDSV9JTlRYX0VOQUJMRUQ7Ci0gICAg ICAgIHJvdXRlLmlycSA9IGlycTsKLSAgICB9IGVsc2UgewotICAgICAgICByb3V0ZS5tb2RlID0g UENJX0lOVFhfRElTQUJMRUQ7Ci0gICAgICAgIHJvdXRlLmlycSA9IC0xOwotICAgIH0KLSAgICBy ZXR1cm4gcm91dGU7Ci19Ci0KLS8qIGlycSByb3V0aW5nIGlzIGNoYW5nZWQuIHNvIHJlYnVpbGQg Yml0bWFwICovCi1zdGF0aWMgdm9pZCBwaWl4M191cGRhdGVfaXJxX2xldmVscyhQSUlYM1N0YXRl ICpwaWl4MykKLXsKLSAgICBQQ0lCdXMgKmJ1cyA9IHBjaV9nZXRfYnVzKCZwaWl4My0+ZGV2KTsK LSAgICBpbnQgcGlycTsKLQotICAgIHBpaXgzLT5waWNfbGV2ZWxzID0gMDsKLSAgICBmb3IgKHBp cnEgPSAwOyBwaXJxIDwgUElJWF9OVU1fUElSUVM7IHBpcnErKykgewotICAgICAgICBwaWl4M19z ZXRfaXJxX2xldmVsKHBpaXgzLCBwaXJxLCBwY2lfYnVzX2dldF9pcnFfbGV2ZWwoYnVzLCBwaXJx KSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBwaWl4M193cml0ZV9jb25maWcoUENJRGV2aWNl ICpkZXYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkcmVzcywg dWludDMyX3QgdmFsLCBpbnQgbGVuKQotewotICAgIHBjaV9kZWZhdWx0X3dyaXRlX2NvbmZpZyhk ZXYsIGFkZHJlc3MsIHZhbCwgbGVuKTsKLSAgICBpZiAocmFuZ2VzX292ZXJsYXAoYWRkcmVzcywg bGVuLCBQSUlYX1BJUlFDQSwgNCkpIHsKLSAgICAgICAgUElJWDNTdGF0ZSAqcGlpeDMgPSBQSUlY M19QQ0lfREVWSUNFKGRldik7Ci0gICAgICAgIGludCBwaWNfaXJxOwotCi0gICAgICAgIHBjaV9i dXNfZmlyZV9pbnR4X3JvdXRpbmdfbm90aWZpZXIocGNpX2dldF9idXMoJnBpaXgzLT5kZXYpKTsK LSAgICAgICAgcGlpeDNfdXBkYXRlX2lycV9sZXZlbHMocGlpeDMpOwotICAgICAgICBmb3IgKHBp Y19pcnEgPSAwOyBwaWNfaXJxIDwgUElJWF9OVU1fUElDX0lSUVM7IHBpY19pcnErKykgewotICAg ICAgICAgICAgcGlpeDNfc2V0X2lycV9waWMocGlpeDMsIHBpY19pcnEpOwotICAgICAgICB9Ci0g ICAgfQotfQotCi1zdGF0aWMgdm9pZCBwaWl4M193cml0ZV9jb25maWdfeGVuKFBDSURldmljZSAq ZGV2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHJlc3MsIHVp bnQzMl90IHZhbCwgaW50IGxlbikKLXsKLSAgICB4ZW5fcGlpeF9wY2lfd3JpdGVfY29uZmlnX2Ns aWVudChhZGRyZXNzLCB2YWwsIGxlbik7Ci0gICAgcGlpeDNfd3JpdGVfY29uZmlnKGRldiwgYWRk cmVzcywgdmFsLCBsZW4pOwotfQotCi1zdGF0aWMgdm9pZCBwaWl4M19yZXNldCh2b2lkICpvcGFx dWUpCi17Ci0gICAgUElJWDNTdGF0ZSAqZCA9IG9wYXF1ZTsKLSAgICB1aW50OF90ICpwY2lfY29u ZiA9IGQtPmRldi5jb25maWc7Ci0KLSAgICBwY2lfY29uZlsweDA0XSA9IDB4MDc7IC8qIG1hc3Rl ciwgbWVtb3J5IGFuZCBJL08gKi8KLSAgICBwY2lfY29uZlsweDA1XSA9IDB4MDA7Ci0gICAgcGNp X2NvbmZbMHgwNl0gPSAweDAwOwotICAgIHBjaV9jb25mWzB4MDddID0gMHgwMjsgLyogUENJX3N0 YXR1c19kZXZzZWxfbWVkaXVtICovCi0gICAgcGNpX2NvbmZbMHg0Y10gPSAweDRkOwotICAgIHBj aV9jb25mWzB4NGVdID0gMHgwMzsKLSAgICBwY2lfY29uZlsweDRmXSA9IDB4MDA7Ci0gICAgcGNp X2NvbmZbMHg2MF0gPSAweDgwOwotICAgIHBjaV9jb25mWzB4NjFdID0gMHg4MDsKLSAgICBwY2lf Y29uZlsweDYyXSA9IDB4ODA7Ci0gICAgcGNpX2NvbmZbMHg2M10gPSAweDgwOwotICAgIHBjaV9j b25mWzB4NjldID0gMHgwMjsKLSAgICBwY2lfY29uZlsweDcwXSA9IDB4ODA7Ci0gICAgcGNpX2Nv bmZbMHg3Nl0gPSAweDBjOwotICAgIHBjaV9jb25mWzB4NzddID0gMHgwYzsKLSAgICBwY2lfY29u ZlsweDc4XSA9IDB4MDI7Ci0gICAgcGNpX2NvbmZbMHg3OV0gPSAweDAwOwotICAgIHBjaV9jb25m WzB4ODBdID0gMHgwMDsKLSAgICBwY2lfY29uZlsweDgyXSA9IDB4MDA7Ci0gICAgcGNpX2NvbmZb MHhhMF0gPSAweDA4OwotICAgIHBjaV9jb25mWzB4YTJdID0gMHgwMDsKLSAgICBwY2lfY29uZlsw eGEzXSA9IDB4MDA7Ci0gICAgcGNpX2NvbmZbMHhhNF0gPSAweDAwOwotICAgIHBjaV9jb25mWzB4 YTVdID0gMHgwMDsKLSAgICBwY2lfY29uZlsweGE2XSA9IDB4MDA7Ci0gICAgcGNpX2NvbmZbMHhh N10gPSAweDAwOwotICAgIHBjaV9jb25mWzB4YThdID0gMHgwZjsKLSAgICBwY2lfY29uZlsweGFh XSA9IDB4MDA7Ci0gICAgcGNpX2NvbmZbMHhhYl0gPSAweDAwOwotICAgIHBjaV9jb25mWzB4YWNd ID0gMHgwMDsKLSAgICBwY2lfY29uZlsweGFlXSA9IDB4MDA7Ci0KLSAgICBkLT5waWNfbGV2ZWxz ID0gMDsKLSAgICBkLT5yY3IgPSAwOwotfQotCi1zdGF0aWMgaW50IHBpaXgzX3Bvc3RfbG9hZCh2 b2lkICpvcGFxdWUsIGludCB2ZXJzaW9uX2lkKQotewotICAgIFBJSVgzU3RhdGUgKnBpaXgzID0g b3BhcXVlOwotICAgIGludCBwaXJxOwotCi0gICAgLyogQmVjYXVzZSB0aGUgaTgyNTkgaGFzIG5v dCBiZWVuIGRlc2VyaWFsaXplZCB5ZXQsIHFlbXVfaXJxX3JhaXNlCi0gICAgICogbWlnaHQgYnJp bmcgdGhlIHN5c3RlbSB0byBhIGRpZmZlcmVudCBzdGF0ZSB0aGFuIHRoZSBzYXZlZCBvbmU7Ci0g ICAgICogZm9yIGV4YW1wbGUsIHRoZSBpbnRlcnJ1cHQgY291bGQgYmUgbWFza2VkIGJ1dCB0aGUg aTgyNTkgd291bGQKLSAgICAgKiBub3Qga25vdyB0aGF0IHlldCBhbmQgd291bGQgdHJpZ2dlciBh biBpbnRlcnJ1cHQgaW4gdGhlIENQVS4KLSAgICAgKgotICAgICAqIEhlcmUsIHdlIHVwZGF0ZSBp cnEgbGV2ZWxzIHdpdGhvdXQgcmFpc2luZyB0aGUgaW50ZXJydXB0LgotICAgICAqIEludGVycnVw dCBzdGF0ZSB3aWxsIGJlIGRlc2VyaWFsaXplZCBzZXBhcmF0ZWx5IHRocm91Z2ggdGhlIGk4MjU5 LgotICAgICAqLwotICAgIHBpaXgzLT5waWNfbGV2ZWxzID0gMDsKLSAgICBmb3IgKHBpcnEgPSAw OyBwaXJxIDwgUElJWF9OVU1fUElSUVM7IHBpcnErKykgewotICAgICAgICBwaWl4M19zZXRfaXJx X2xldmVsX2ludGVybmFsKHBpaXgzLCBwaXJxLAotICAgICAgICAgICAgcGNpX2J1c19nZXRfaXJx X2xldmVsKHBjaV9nZXRfYnVzKCZwaWl4My0+ZGV2KSwgcGlycSkpOwotICAgIH0KLSAgICByZXR1 cm4gMDsKLX0KLQotc3RhdGljIGludCBwaWl4M19wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi17Ci0g ICAgaW50IGk7Ci0gICAgUElJWDNTdGF0ZSAqcGlpeDMgPSBvcGFxdWU7Ci0KLSAgICBmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShwaWl4My0+cGNpX2lycV9sZXZlbHNfdm1zdGF0ZSk7IGkrKykg ewotICAgICAgICBwaWl4My0+cGNpX2lycV9sZXZlbHNfdm1zdGF0ZVtpXSA9Ci0gICAgICAgICAg ICBwY2lfYnVzX2dldF9pcnFfbGV2ZWwocGNpX2dldF9idXMoJnBpaXgzLT5kZXYpLCBpKTsKLSAg ICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGJvb2wgcGlpeDNfcmNyX25lZWRlZCh2 b2lkICpvcGFxdWUpCi17Ci0gICAgUElJWDNTdGF0ZSAqcGlpeDMgPSBvcGFxdWU7Ci0KLSAgICBy ZXR1cm4gKHBpaXgzLT5yY3IgIT0gMCk7Ci19Ci0KLXN0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3Jp cHRpb24gdm1zdGF0ZV9waWl4M19yY3IgPSB7Ci0gICAgLm5hbWUgPSAiUElJWDMvcmNyIiwKLSAg ICAudmVyc2lvbl9pZCA9IDEsCi0gICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDEsCi0gICAgLm5l ZWRlZCA9IHBpaXgzX3Jjcl9uZWVkZWQsCi0gICAgLmZpZWxkcyA9IChWTVN0YXRlRmllbGRbXSkg ewotICAgICAgICBWTVNUQVRFX1VJTlQ4KHJjciwgUElJWDNTdGF0ZSksCi0gICAgICAgIFZNU1RB VEVfRU5EX09GX0xJU1QoKQotICAgIH0KLX07Ci0KLXN0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3Jp cHRpb24gdm1zdGF0ZV9waWl4MyA9IHsKLSAgICAubmFtZSA9ICJQSUlYMyIsCi0gICAgLnZlcnNp b25faWQgPSAzLAotICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAyLAotICAgIC5wb3N0X2xvYWQg PSBwaWl4M19wb3N0X2xvYWQsCi0gICAgLnByZV9zYXZlID0gcGlpeDNfcHJlX3NhdmUsCi0gICAg LmZpZWxkcyA9IChWTVN0YXRlRmllbGRbXSkgewotICAgICAgICBWTVNUQVRFX1BDSV9ERVZJQ0Uo ZGV2LCBQSUlYM1N0YXRlKSwKLSAgICAgICAgVk1TVEFURV9JTlQzMl9BUlJBWV9WKHBjaV9pcnFf bGV2ZWxzX3Ztc3RhdGUsIFBJSVgzU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQSUlYX05VTV9QSVJRUywgMyksCi0gICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQotICAg IH0sCi0gICAgLnN1YnNlY3Rpb25zID0gKGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbipbXSkgewot ICAgICAgICAmdm1zdGF0ZV9waWl4M19yY3IsCi0gICAgICAgIE5VTEwKLSAgICB9Ci19OwotCi0K LXN0YXRpYyB2b2lkIHJjcl93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLCB1aW50NjRf dCB2YWwsIHVuc2lnbmVkIGxlbikKLXsKLSAgICBQSUlYM1N0YXRlICpkID0gb3BhcXVlOwotCi0g ICAgaWYgKHZhbCAmIDQpIHsKLSAgICAgICAgcWVtdV9zeXN0ZW1fcmVzZXRfcmVxdWVzdChTSFVU RE9XTl9DQVVTRV9HVUVTVF9SRVNFVCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZC0+ cmNyID0gdmFsICYgMjsgLyoga2VlcCBTeXN0ZW0gUmVzZXQgdHlwZSBvbmx5ICovCi19Ci0KLXN0 YXRpYyB1aW50NjRfdCByY3JfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLCB1bnNpZ25l ZCBsZW4pCi17Ci0gICAgUElJWDNTdGF0ZSAqZCA9IG9wYXF1ZTsKLQotICAgIHJldHVybiBkLT5y Y3I7Ci19Ci0KLXN0YXRpYyBjb25zdCBNZW1vcnlSZWdpb25PcHMgcmNyX29wcyA9IHsKLSAgICAu cmVhZCA9IHJjcl9yZWFkLAotICAgIC53cml0ZSA9IHJjcl93cml0ZSwKLSAgICAuZW5kaWFubmVz cyA9IERFVklDRV9MSVRUTEVfRU5ESUFOCi19OwotCi1zdGF0aWMgdm9pZCBwaWl4M19yZWFsaXpl KFBDSURldmljZSAqZGV2LCBFcnJvciAqKmVycnApCi17Ci0gICAgUElJWDNTdGF0ZSAqZCA9IFBJ SVgzX1BDSV9ERVZJQ0UoZGV2KTsKLQotICAgIGlmICghaXNhX2J1c19uZXcoREVWSUNFKGQpLCBn ZXRfc3lzdGVtX21lbW9yeSgpLAotICAgICAgICAgICAgICAgICAgICAgcGNpX2FkZHJlc3Nfc3Bh Y2VfaW8oZGV2KSwgZXJycCkpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1lbW9y eV9yZWdpb25faW5pdF9pbygmZC0+cmNyX21lbSwgT0JKRUNUKGRldiksICZyY3Jfb3BzLCBkLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAicGlpeDMtcmVzZXQtY29udHJvbCIsIDEpOwotICAg IG1lbW9yeV9yZWdpb25fYWRkX3N1YnJlZ2lvbl9vdmVybGFwKHBjaV9hZGRyZXNzX3NwYWNlX2lv KGRldiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElJWF9SQ1Jf SU9QT1JULCAmZC0+cmNyX21lbSwgMSk7Ci0KLSAgICBxZW11X3JlZ2lzdGVyX3Jlc2V0KHBpaXgz X3Jlc2V0LCBkKTsKLX0KLQotc3RhdGljIHZvaWQgcGNpX3BpaXgzX2NsYXNzX2luaXQoT2JqZWN0 Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotewotICAgIERldmljZUNsYXNzICpkYyA9IERFVklD RV9DTEFTUyhrbGFzcyk7Ci0gICAgUENJRGV2aWNlQ2xhc3MgKmsgPSBQQ0lfREVWSUNFX0NMQVNT KGtsYXNzKTsKLQotICAgIGRjLT5kZXNjICAgICAgICA9ICJJU0EgYnJpZGdlIjsKLSAgICBkYy0+ dm1zZCAgICAgICAgPSAmdm1zdGF0ZV9waWl4MzsKLSAgICBkYy0+aG90cGx1Z2dhYmxlICAgPSBm YWxzZTsKLSAgICBrLT5yZWFsaXplICAgICAgPSBwaWl4M19yZWFsaXplOwotICAgIGstPnZlbmRv cl9pZCAgICA9IFBDSV9WRU5ET1JfSURfSU5URUw7Ci0gICAgLyogODIzNzFTQiBQSUlYMyBQQ0kt dG8tSVNBIGJyaWRnZSAoU3RlcCBBMSkgKi8KLSAgICBrLT5kZXZpY2VfaWQgICAgPSBQQ0lfREVW SUNFX0lEX0lOVEVMXzgyMzcxU0JfMDsKLSAgICBrLT5jbGFzc19pZCAgICAgPSBQQ0lfQ0xBU1Nf QlJJREdFX0lTQTsKLSAgICAvKgotICAgICAqIFJlYXNvbjogcGFydCBvZiBQSUlYMyBzb3V0aGJy aWRnZSwgbmVlZHMgdG8gYmUgd2lyZWQgdXAgYnkKLSAgICAgKiBwY19waWl4LmMncyBwY19pbml0 MSgpCi0gICAgICovCi0gICAgZGMtPnVzZXJfY3JlYXRhYmxlID0gZmFsc2U7Ci19Ci0KLXN0YXRp YyBjb25zdCBUeXBlSW5mbyBwaWl4M19wY2lfdHlwZV9pbmZvID0gewotICAgIC5uYW1lID0gVFlQ RV9QSUlYM19QQ0lfREVWSUNFLAotICAgIC5wYXJlbnQgPSBUWVBFX1BDSV9ERVZJQ0UsCi0gICAg Lmluc3RhbmNlX3NpemUgPSBzaXplb2YoUElJWDNTdGF0ZSksCi0gICAgLmFic3RyYWN0ID0gdHJ1 ZSwKLSAgICAuY2xhc3NfaW5pdCA9IHBjaV9waWl4M19jbGFzc19pbml0LAotICAgIC5pbnRlcmZh Y2VzID0gKEludGVyZmFjZUluZm9bXSkgewotICAgICAgICB7IElOVEVSRkFDRV9DT05WRU5USU9O QUxfUENJX0RFVklDRSB9LAotICAgICAgICB7IH0sCi0gICAgfSwKLX07Ci0KLXN0YXRpYyB2b2lk IHBpaXgzX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotewotICAg IFBDSURldmljZUNsYXNzICprID0gUENJX0RFVklDRV9DTEFTUyhrbGFzcyk7Ci0KLSAgICBrLT5j b25maWdfd3JpdGUgPSBwaWl4M193cml0ZV9jb25maWc7Ci19Ci0KLXN0YXRpYyBjb25zdCBUeXBl SW5mbyBwaWl4M19pbmZvID0gewotICAgIC5uYW1lICAgICAgICAgID0gVFlQRV9QSUlYM19ERVZJ Q0UsCi0gICAgLnBhcmVudCAgICAgICAgPSBUWVBFX1BJSVgzX1BDSV9ERVZJQ0UsCi0gICAgLmNs YXNzX2luaXQgICAgPSBwaWl4M19jbGFzc19pbml0LAotfTsKLQotc3RhdGljIHZvaWQgcGlpeDNf eGVuX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotewotICAgIFBD SURldmljZUNsYXNzICprID0gUENJX0RFVklDRV9DTEFTUyhrbGFzcyk7Ci0KLSAgICBrLT5jb25m aWdfd3JpdGUgPSBwaWl4M193cml0ZV9jb25maWdfeGVuOwotfTsKLQotc3RhdGljIGNvbnN0IFR5 cGVJbmZvIHBpaXgzX3hlbl9pbmZvID0gewotICAgIC5uYW1lICAgICAgICAgID0gVFlQRV9QSUlY M19YRU5fREVWSUNFLAotICAgIC5wYXJlbnQgICAgICAgID0gVFlQRV9QSUlYM19QQ0lfREVWSUNF LAotICAgIC5jbGFzc19pbml0ICAgID0gcGlpeDNfeGVuX2NsYXNzX2luaXQsCi19OwotCiBzdGF0 aWMgdm9pZCBpNDQwZnhfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqa2xhc3MsIHZvaWQgKmRhdGEp CiB7CiAgICAgRGV2aWNlQ2xhc3MgKmRjID0gREVWSUNFX0NMQVNTKGtsYXNzKTsKQEAgLTkyMiw5 ICs1MjMsNiBAQCBzdGF0aWMgdm9pZCBpNDQwZnhfcmVnaXN0ZXJfdHlwZXModm9pZCkKIHsKICAg ICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmaTQ0MGZ4X2luZm8pOwogICAgIHR5cGVfcmVnaXN0ZXJf c3RhdGljKCZpZ2RfcGFzc3Rocm91Z2hfaTQ0MGZ4X2luZm8pOwotICAgIHR5cGVfcmVnaXN0ZXJf c3RhdGljKCZwaWl4M19wY2lfdHlwZV9pbmZvKTsKLSAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygm cGlpeDNfaW5mbyk7Ci0gICAgdHlwZV9yZWdpc3Rlcl9zdGF0aWMoJnBpaXgzX3hlbl9pbmZvKTsK ICAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmaTQ0MGZ4X3BjaWhvc3RfaW5mbyk7CiB9CiAKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvaHcvc291dGhicmlkZ2UvcGlpeC5oIGIvaW5jbHVkZS9ody9zb3V0 aGJyaWRnZS9waWl4LmgKaW5kZXggMDk0NTA4YjkyOC4uMTUyNjI4YzZkOSAxMDA2NDQKLS0tIGEv aW5jbHVkZS9ody9zb3V0aGJyaWRnZS9waWl4LmgKKysrIGIvaW5jbHVkZS9ody9zb3V0aGJyaWRn ZS9waWl4LmgKQEAgLTEyLDYgKzEyLDggQEAKICNpZm5kZWYgSFdfU09VVEhCUklER0VfUElJWF9I CiAjZGVmaW5lIEhXX1NPVVRIQlJJREdFX1BJSVhfSAogCisjaW5jbHVkZSAiaHcvcGNpL3BjaS5o IgorCiAjZGVmaW5lIFRZUEVfUElJWDRfUE0gIlBJSVg0X1BNIgogCiBJMkNCdXMgKnBpaXg0X3Bt X2luaXQoUENJQnVzICpidXMsIGludCBkZXZmbiwgdWludDMyX3Qgc21iX2lvX2Jhc2UsCkBAIC0z MCw4ICszMiw0MiBAQCBJMkNCdXMgKnBpaXg0X3BtX2luaXQoUENJQnVzICpidXMsIGludCBkZXZm biwgdWludDMyX3Qgc21iX2lvX2Jhc2UsCiAgKi8KICNkZWZpbmUgUElJWF9SQ1JfSU9QT1JUIDB4 Y2Y5CiAKKyNkZWZpbmUgUElJWF9OVU1fUElDX0lSUVMgICAgICAgMTYgICAgICAvKiBpODI1OSAq IDIgKi8KKyNkZWZpbmUgUElJWF9OVU1fUElSUVMgICAgICAgICAgNFVMTCAgICAvKiBQSVJRW0Et RF0gKi8KKwordHlwZWRlZiBzdHJ1Y3QgUElJWFN0YXRlIHsKKyAgICBQQ0lEZXZpY2UgZGV2Owor CisgICAgLyoKKyAgICAgKiBiaXRtYXAgdG8gdHJhY2sgcGljIGxldmVscy4KKyAgICAgKiBUaGUg cGljIGxldmVsIGlzIHRoZSBsb2dpY2FsIE9SIG9mIGFsbCB0aGUgUENJIGlycXMgbWFwcGVkIHRv IGl0CisgICAgICogU28gb25lIFBJQyBsZXZlbCBpcyB0cmFja2VkIGJ5IFBJSVhfTlVNX1BJUlFT IGJpdHMuCisgICAgICoKKyAgICAgKiBQSVJRIGlzIG1hcHBlZCB0byBQSUMgcGlucywgd2UgdHJh Y2sgaXQgYnkKKyAgICAgKiBQSUlYX05VTV9QSVJRUyAqIFBJSVhfTlVNX1BJQ19JUlFTID0gNjQg Yml0cyB3aXRoCisgICAgICogcGljX2lycSAqIFBJSVhfTlVNX1BJUlFTICsgcGlycQorICAgICAq LworI2lmIFBJSVhfTlVNX1BJQ19JUlFTICogUElJWF9OVU1fUElSUVMgPiA2NAorI2Vycm9yICJ1 bmFibGUgdG8gZW5jb2RlIHBpYyBzdGF0ZSBpbiA2NGJpdCBpbiBwaWNfbGV2ZWxzLiIKKyNlbmRp ZgorICAgIHVpbnQ2NF90IHBpY19sZXZlbHM7CisKKyAgICBxZW11X2lycSAqcGljOworCisgICAg LyogVGhpcyBtZW1iZXIgaXNuJ3QgdXNlZC4gSnVzdCBmb3Igc2F2ZS9sb2FkIGNvbXBhdGliaWxp dHkgKi8KKyAgICBpbnQzMl90IHBjaV9pcnFfbGV2ZWxzX3Ztc3RhdGVbUElJWF9OVU1fUElSUVNd OworCisgICAgLyogUmVzZXQgQ29udHJvbCBSZWdpc3RlciBjb250ZW50cyAqLworICAgIHVpbnQ4 X3QgcmNyOworCisgICAgLyogSU8gbWVtb3J5IHJlZ2lvbiBmb3IgUmVzZXQgQ29udHJvbCBSZWdp c3RlciAoUElJWF9SQ1JfSU9QT1JUKSAqLworICAgIE1lbW9yeVJlZ2lvbiByY3JfbWVtOworfSBQ SUlYM1N0YXRlOworCiBleHRlcm4gUENJRGV2aWNlICpwaWl4NF9kZXY7CiAKK1BJSVgzU3RhdGUg KnBpaXgzX2NyZWF0ZShQQ0lCdXMgKnBjaV9idXMsIElTQUJ1cyAqKmlzYV9idXMpOworCiBEZXZp Y2VTdGF0ZSAqcGlpeDRfY3JlYXRlKFBDSUJ1cyAqcGNpX2J1cywgSVNBQnVzICoqaXNhX2J1cywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDQnVzICoqc21idXMsIHNpemVfdCBpZGVfYnVz ZXMpOwogCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9q ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVu LWRldmVs