From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AC1C6C83F01 for ; Wed, 30 Aug 2023 16:17:56 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qbNsu-0005xN-3K; Wed, 30 Aug 2023 12:17:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qbNqv-0003SL-6T; Wed, 30 Aug 2023 12:15:43 -0400 Received: from smtp-fw-52004.amazon.com ([52.119.213.154]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qbNqo-0003vr-FI; Wed, 30 Aug 2023 12:15:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1693412127; x=1724948127; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=m4YuPq/6IfPEweBu7RjQadCXUGMwuPtUwK/3gsWRNGc=; b=rPyHi3Z9Vle9886d6PQ6VtaBpOSnkRTFeH+nPGTqBRspezS2XLp8Gsz5 lgcnzB0MZP/XWJuT8i8faGV70JXlTQc4vXjQEkdOiaoQ07UnzqixzpqC+ FUkUC3NzJz2Fg76K85/L195y4u0KWgQSsRyChbPV6/Ro/5TrQ2pMJ/Zwr g=; X-IronPort-AV: E=Sophos;i="6.02,214,1688428800"; d="scan'208";a="151694850" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-iad-1a-m6i4x-bbc6e425.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-52004.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Aug 2023 16:15:26 +0000 Received: from EX19MTAUWB001.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan3.iad.amazon.com [10.40.163.38]) by email-inbound-relay-iad-1a-m6i4x-bbc6e425.us-east-1.amazon.com (Postfix) with ESMTPS id 6E54C80DE1; Wed, 30 Aug 2023 16:15:20 +0000 (UTC) Received: from EX19D020UWC004.ant.amazon.com (10.13.138.149) by EX19MTAUWB001.ant.amazon.com (10.250.64.248) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.37; Wed, 30 Aug 2023 16:15:07 +0000 Received: from dev-dsk-graf-1a-5ce218e4.eu-west-1.amazon.com (10.253.83.51) by EX19D020UWC004.ant.amazon.com (10.13.138.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.37; Wed, 30 Aug 2023 16:15:04 +0000 From: Alexander Graf To: CC: , , Cameron Esfahani , Stefan Hajnoczi , "Michael S . Tsirkin" , Kevin Wolf , Hanna Reitz , Marcel Apfelbaum , "Paolo Bonzini" , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mads Ynddal , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Bernhard Beschow , Gerd Hoffmann Subject: [PATCH v2 12/12] hw/vmapple/vmapple: Add vmapple machine type Date: Wed, 30 Aug 2023 16:14:25 +0000 Message-ID: <20230830161425.91946-13-graf@amazon.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230830161425.91946-1-graf@amazon.com> References: <20230830161425.91946-1-graf@amazon.com> MIME-Version: 1.0 X-Originating-IP: [10.253.83.51] X-ClientProxiedBy: EX19D038UWC001.ant.amazon.com (10.13.139.213) To EX19D020UWC004.ant.amazon.com (10.13.138.149) Precedence: Bulk Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=52.119.213.154; envelope-from=prvs=599fd62c5=graf@amazon.de; helo=smtp-fw-52004.amazon.com X-Spam_score_int: -39 X-Spam_score: -4.0 X-Spam_bar: ---- X-Spam_report: (-4.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org QXBwbGUgZGVmaW5lcyBhIG5ldyAidm1hcHBsZSIgbWFjaGluZSB0eXBlIGFzIHBhcnQgb2YgaXRz IHByb3ByaWV0YXJ5Cm1hY09TIFZpcnR1YWxpemF0aW9uLkZyYW1ld29yayB2bW0uIFRoaXMgbWFj aGluZSB0eXBlIGlzIHNpbWlsYXIgdG8gdGhlCnZpcnQgb25lLCBidXQgd2l0aCBzdWJ0bGUgZGlm ZmVyZW5jZXMgaW4gYmFzZSBkZXZpY2VzLCBhIGZldyBzcGVjaWFsCnZtYXBwbGUgZGV2aWNlIGFk ZGl0aW9ucyBhbmQgYSB2YXN0bHkgZGlmZmVyZW50IGJvb3QgY2hhaW4uCgpUaGlzIHBhdGNoIHJl aW1wbGVtZW50cyB0aGlzIG1hY2hpbmUgdHlwZSBpbiBRRU1VLiBUbyB1c2UgaXQsIHlvdQpoYXZl IHRvIGhhdmUgYSByZWFkaWx5IGluc3RhbGxlZCB2ZXJzaW9uIG9mIG1hY09TIGZvciBWTUFwcGxl LApydW4gb24gbWFjT1Mgd2l0aCAtYWNjZWwgaHZmLCBwYXNzIHRoZSBWaXJ0dWFsaXphdGlvbi5G cmFtZXdvcmsKYm9vdCByb20gKEFWUEJvb3RlcikgaW4gdmlhIC1iaW9zLCBwYXNzIHRoZSBhdXgg YW5kIHJvb3Qgdm9sdW1lIGFzIHBmbGFzaAphbmQgcGFzcyBhdXggYW5kIHJvb3Qgdm9sdW1lIGFz IHZpcnRpbyBkcml2ZXMuIEluIGFkZGl0aW9uLCB5b3UgYWxzbwpuZWVkIHRvIGZpbmQgdGhlIG1h Y2hpbmUgVVVJRCBhbmQgcGFzcyB0aGF0IGFzIC1NIHZtYXBwbGUsdXVpZD0gcGFyYW1ldGVyOgoK JCBxZW11LXN5c3RlbS1hYXJjaDY0IC1hY2NlbCBodmYgLU0gdm1hcHBsZSx1dWlkPTB4MTIzNCAt bSA0RyBcCiAgICAtYmlvcyAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9WaXJ0dWFsaXphdGlv bi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvQVZQQm9vdGVyLnZtYXBwbGUyLmJpbgog ICAgLWRyaXZlIGZpbGU9YXV4LGlmPXBmbGFzaCxmb3JtYXQ9cmF3IFwKICAgIC1kcml2ZSBmaWxl PXJvb3QsaWY9cGZsYXNoLGZvcm1hdD1yYXcgXAogICAgLWRyaXZlIGZpbGU9YXV4LGlmPW5vbmUs aWQ9YXV4LGZvcm1hdD1yYXcgXAogICAgLWRldmljZSB2bWFwcGxlLXZpcnRpby1hdXgsZHJpdmU9 YXV4IFwKICAgIC1kcml2ZSBmaWxlPXJvb3QsaWY9bm9uZSxpZD1yb290LGZvcm1hdD1yYXcgXAog ICAgLWRldmljZSB2bWFwcGxlLXZpcnRpby1yb290LGRyaXZlPXJvb3QKCldpdGggYWxsIHRoZXNl IGluIHBsYWNlLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gc2VlIG1hY09TIGJvb3RpbmcKc3VjY2Vz c2Z1bGx5LgoKU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEdyYWYgPGdyYWZAYW1hem9uLmNvbT4K Ci0tLQoKdjEgLT4gdjI6CgogIC0gQWRhcHQgdG8gc3lzdGVtX3NzIG1lc29uLmJ1aWxkIHRhcmdl dAogIC0gQWRkIGRvY3VtZW50YXRpb24KLS0tCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAg fCAgIDEgKwogZG9jcy9zeXN0ZW0vYXJtL3ZtYXBwbGUucnN0IHwgIDYzICsrKysKIGRvY3Mvc3lz dGVtL3RhcmdldC1hcm0ucnN0ICB8ICAgMSArCiBody92bWFwcGxlL3ZtYXBwbGUuYyAgICAgICAg fCA2NjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBody92bWFwcGxlL0tj b25maWcgICAgICAgICAgfCAgMTkgKysKIGh3L3ZtYXBwbGUvbWVzb24uYnVpbGQgICAgICB8ICAg MSArCiA2IGZpbGVzIGNoYW5nZWQsIDc0NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZG9jcy9zeXN0ZW0vYXJtL3ZtYXBwbGUucnN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgaHcvdm1h cHBsZS92bWFwcGxlLmMKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmlu ZGV4IDMxMDRlNThlZmYuLjFkM2IxZTAwMzQgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBi L01BSU5UQUlORVJTCkBAIC0yNTc4LDYgKzI1NzgsNyBAQCBNOiBBbGV4YW5kZXIgR3JhZiA8YWdy YWZAY3NncmFmLmRlPgogUzogTWFpbnRhaW5lZAogRjogaHcvdm1hcHBsZS8qCiBGOiBpbmNsdWRl L2h3L3ZtYXBwbGUvKgorRjogZG9jcy9zeXN0ZW0vYXJtL3ZtYXBwbGUucnN0CiAKIFN1YnN5c3Rl bXMKIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RvY3Mvc3lzdGVtL2FybS92bWFwcGxlLnJzdCBi L2RvY3Mvc3lzdGVtL2FybS92bWFwcGxlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi5jNzQ4NmIyMWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zeXN0ZW0vYXJt L3ZtYXBwbGUucnN0CkBAIC0wLDAgKzEsNjMgQEAKK1ZNQXBwbGUgbWFjaGluZSBlbXVsYXRpb24K Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVk1BcHBsZSBpcyB0aGUgZGV2aWNl IG1vZGVsIHRoYXQgdGhlIG1hY09TIGJ1aWx0LWluIGh5cGVydmlzb3IgY2FsbGVkICJWaXJ0dWFs aXphdGlvbi5mcmFtZXdvcmsiCitleHBvc2VzIHRvIEFwcGxlIFNpbGljb24gbWFjT1MgZ3Vlc3Rz LiBUaGUgInZtYXBwbGUiIG1hY2hpbmUgbW9kZWwgaW4gUUVNVSBpbXBsZW1lbnRzIHRoZSBzYW1l CitkZXZpY2UgbW9kZWwsIGJ1dCBkb2VzIG5vdCB1c2UgYW55IGNvZGUgZnJvbSBWaXJ0dWFsaXph dGlvbi5GcmFtZXdvcmsuCisKK1ByZXJlcXVpc2l0ZXMKKy0tLS0tLS0tLS0tLS0KKworVG8gcnVu IHRoZSB2bWFwcGxlIG1hY2hpbmUgbW9kZWwsIHlvdSBuZWVkIHRvCisKKyAqIFJ1biBvbiBBcHBs ZSBTaWxpY29uCisgKiBSdW4gb24gbWFjT1MgMTIuMCBvciBhYm92ZQorICogSGF2ZSBhbiBhbHJl YWR5IGluc3RhbGxlZCBjb3B5IG9mIGEgVmlydHVhbGl6YXRpb24uRnJhbWV3b3JrIG1hY09TIHZp cnR1YWwgbWFjaGluZS4gSSB3aWxsCisgICBhc3N1bWUgdGhhdCB5b3UgaW5zdGFsbGVkIGl0IHVz aW5nIHRoZSBtYWNvc3ZtIENMSS4KKworRmlyc3QsIHdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgVVVJ RCBmcm9tIHRoZSB2aXJ0dWFsIG1hY2hpbmUgdGhhdCB5b3UgaW5zdGFsbGVkLiBZb3UgY2FuIGRv IHRoaXMKK2J5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBzaGVsbCBzY3JpcHQ6CisKKy4uIGNvZGUt YmxvY2s6OiBiYXNoCisgIDpjYXB0aW9uOiB1dWlkLnNoIHNjcmlwdCB0byBleHRyYWN0IHRoZSBV VUlEIGZyb20gYSBtYWNvc3ZtLmpzb24gZmlsZQorCisgICMhL2Jpbi9iYXNoCisKKyAgTUlEPSQo Y2F0ICIkMSIgfMKgcHl0aG9uMyAtYyAnaW1wb3J0IGpzb24sc3lzO29iaj1qc29uLmxvYWQoc3lz LnN0ZGluKTtwcmludChvYmpbIm1hY2hpbmVJZCJdKTsnKQorICBlY2hvICIkTUlEIiB8IGJhc2U2 NCAtZCB8IHBsdXRpbCAtZXh0cmFjdCBFQ0lEIHJhdyAtCisKK05vdyB3ZSBhbHNvIG5lZWQgdG8g dHJpbSB0aGUgYXV4IHBhcnRpdGlvbi4gSXQgY29udGFpbnMgbWV0YWRhdGEgdGhhdCB3ZSBjYW4g anVzdCBkaXNjYXJkOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAorICA6Y2FwdGlvbjogQ29tbWFu ZCB0byB0cmltIHRoZSBhdXggZmlsZQorCisgICQgZGQgaWY9ImF1eC5pbWciIG9mPSJhdXguaW1n LnRyaW1tZWQiIGJzPSQoKCAweDQwMDAgKSkgc2tpcD0xCisKK0hvdyB0byBydW4KKy0tLS0tLS0t LS0KKworVGhlbiwgd2UgY2FuIGxhdW5jaCBRRU1VIHdpdGggdGhlIFZpcnR1YWxpemF0aW9uLkZy YW1ld29yayBwcmUtYm9vdCBlbnZpcm9ubWVudCBhbmQgdGhlIHJlYWRpbHkKK2luc3RhbGxlZCB0 YXJnZXQgZGlzayBpbWFnZXMuIEkgcmVjb21tZW5kIHRvIHBvcnQgZm9yd2FyZCB0aGUgVk0ncyBz c2ggYW5kIHZuYyBwb3J0cyB0byB0aGUgaG9zdAordG8gZ2V0IGJldHRlciBpbnRlcmFjdGl2ZSBh Y2Nlc3MgaW50byB0aGUgdGFyZ2V0IHN5c3RlbToKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKyAg OmNhcHRpb246IEV4YW1wbGUgZXhlY3V0aW9uIGNvbW1hbmQgbGluZQorCisgICQgVVVJRD0kKHV1 aWQuc2ggbWFjb3N2bS5qc29uKQorICAkIEFWUEJPT1RFUj0vU3lzdGVtL0xpYnJhcnkvRnJhbWV3 b3Jrcy9WaXJ0dWFsaXphdGlvbi5mcmFtZXdvcmsvUmVzb3VyY2VzL0FWUEJvb3Rlci52bWFwcGxl Mi5iaW4KKyAgJCBBVVg9YXV4LmltZy50cmltbWVkCisgICQgRElTSz1kaXNrLmltZworICAkIHFl bXUtc3lzdGVtLWFhcmNoNjQgXAorICAJLXNlcmlhbCBtb246c3RkaW8gXAorICAJLW0gNEcgXAor ICAJLWFjY2VsIGh2ZiBcCisgIAktTSB2bWFwcGxlLHV1aWQ9JFVVSUQgXAorICAJLWJpb3MgJEFW UEJPT1RFUiBcCisgICAgICAgIC1kcml2ZSBmaWxlPSIkQVVYIixpZj1wZmxhc2gsZm9ybWF0PXJh dyBcCisgICAgICAgIC1kcml2ZSBmaWxlPSIkRElTSyIsaWY9cGZsYXNoLGZvcm1hdD1yYXcgXAor ICAJLWRyaXZlIGZpbGU9IiRBVVgiLGlmPW5vbmUsaWQ9YXV4LGZvcm1hdD1yYXcgXAorICAJLWRy aXZlIGZpbGU9IiRESVNLIixpZj1ub25lLGlkPXJvb3QsZm9ybWF0PXJhdyBcCisgIAktZGV2aWNl IHZtYXBwbGUtdmlydGlvLWF1eCxkcml2ZT1hdXggXAorICAJLWRldmljZSB2bWFwcGxlLXZpcnRp by1yb290LGRyaXZlPXJvb3QgXAorICAJLW5ldCB1c2VyLGlwdjY9b2ZmLGhvc3Rmd2Q9dGNwOjoy MjIyLToyMixob3N0ZndkPXRjcDo6NTkwMS06NTkwMCBcCisgIAktbmV0IG5pYyxtb2RlbD12aXJ0 aW8gXApkaWZmIC0tZ2l0IGEvZG9jcy9zeXN0ZW0vdGFyZ2V0LWFybS5yc3QgYi9kb2NzL3N5c3Rl bS90YXJnZXQtYXJtLnJzdAppbmRleCA3OTBhYzFiOGEyLi5iZjY2M2RmNGE2IDEwMDY0NAotLS0g YS9kb2NzL3N5c3RlbS90YXJnZXQtYXJtLnJzdAorKysgYi9kb2NzL3N5c3RlbS90YXJnZXQtYXJt LnJzdApAQCAtMTA2LDYgKzEwNiw3IEBAIHVuZG9jdW1lbnRlZDsgeW91IGNhbiBnZXQgYSBjb21w bGV0ZSBsaXN0IGJ5IHJ1bm5pbmcKICAgIGFybS9zdGVsbGFyaXMKICAgIGFybS9zdG0zMgogICAg YXJtL3ZpcnQKKyAgIGFybS92bWFwcGxlCiAgICBhcm0veGxueC12ZXJzYWwtdmlydAogICAgYXJt L3hlbnB2aAogCmRpZmYgLS1naXQgYS9ody92bWFwcGxlL3ZtYXBwbGUuYyBiL2h3L3ZtYXBwbGUv dm1hcHBsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVkM2ZlNTRi OTYKLS0tIC9kZXYvbnVsbAorKysgYi9ody92bWFwcGxlL3ZtYXBwbGUuYwpAQCAtMCwwICsxLDY2 MSBAQAorLyoKKyAqIFZNQXBwbGUgbWFjaGluZSBlbXVsYXRpb24KKyAqCisgKiBDb3B5cmlnaHQg wqkgMjAyMyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJl c2VydmVkLgorICoKKyAqIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHUEwsIHZlcnNpb24gMiBvciBsYXRlci4KKyAqIFNlZSB0aGUgQ09QWUlORyBmaWxl IGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICoKKyAqIFZNQXBwbGUgaXMgdGhlIGRldmlj ZSBtb2RlbCB0aGF0IHRoZSBtYWNPUyBidWlsdC1pbiBoeXBlcnZpc29yIGNhbGxlZAorICogIlZp cnR1YWxpemF0aW9uLmZyYW1ld29yayIgZXhwb3NlcyB0byBBcHBsZSBTaWxpY29uIG1hY09TIGd1 ZXN0cy4gVGhlCisgKiBtYWNoaW5lIG1vZGVsIGluIHRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBz YW1lIGRldmljZSBtb2RlbCBpbiBRRU1VLCBidXQKKyAqIGRvZXMgbm90IHVzZSBhbnkgY29kZSBm cm9tIFZpcnR1YWxpemF0aW9uLkZyYW1ld29yay4KKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2Rl cC5oIgorI2luY2x1ZGUgInFlbXUvaGVscC10ZXh0cy5oIgorI2luY2x1ZGUgInFlbXUvZGF0YWRp ci5oIgorI2luY2x1ZGUgInFlbXUvdW5pdHMuaCIKKyNpbmNsdWRlICJxZW11L29wdGlvbi5oIgor I2luY2x1ZGUgIm1vbml0b3IvcWRldi5oIgorI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKKyNpbmNs dWRlICJody9zeXNidXMuaCIKKyNpbmNsdWRlICJody9hcm0vYm9vdC5oIgorI2luY2x1ZGUgImh3 L2FybS9wcmltZWNlbGwuaCIKKyNpbmNsdWRlICJody9ib2FyZHMuaCIKKyNpbmNsdWRlICJuZXQv bmV0LmgiCisjaW5jbHVkZSAic3lzZW11L3N5c2VtdS5oIgorI2luY2x1ZGUgInN5c2VtdS9ydW5z dGF0ZS5oIgorI2luY2x1ZGUgInN5c2VtdS9rdm0uaCIKKyNpbmNsdWRlICJzeXNlbXUvaHZmLmgi CisjaW5jbHVkZSAiaHcvbG9hZGVyLmgiCisjaW5jbHVkZSAicWFwaS9lcnJvci5oIgorI2luY2x1 ZGUgInFlbXUvYml0b3BzLmgiCisjaW5jbHVkZSAicWVtdS9lcnJvci1yZXBvcnQuaCIKKyNpbmNs dWRlICJxZW11L21vZHVsZS5oIgorI2luY2x1ZGUgImh3L3BjaS1ob3N0L2dwZXguaCIKKyNpbmNs dWRlICJody92aXJ0aW8vdmlydGlvLXBjaS5oIgorI2luY2x1ZGUgImh3L3FkZXYtcHJvcGVydGll cy5oIgorI2luY2x1ZGUgImh3L2ludGMvYXJtX2dpYy5oIgorI2luY2x1ZGUgImh3L2ludGMvYXJt X2dpY3YzX2NvbW1vbi5oIgorI2luY2x1ZGUgImh3L2lycS5oIgorI2luY2x1ZGUgInFhcGkvdmlz aXRvci5oIgorI2luY2x1ZGUgInFhcGkvcWFwaS12aXNpdC1jb21tb24uaCIKKyNpbmNsdWRlICJz dGFuZGFyZC1oZWFkZXJzL2xpbnV4L2lucHV0LmgiCisjaW5jbHVkZSAidGFyZ2V0L2FybS9pbnRl cm5hbHMuaCIKKyNpbmNsdWRlICJ0YXJnZXQvYXJtL2t2bV9hcm0uaCIKKyNpbmNsdWRlICJody9j aGFyL3BsMDExLmgiCisjaW5jbHVkZSAicWVtdS9ndWVzdC1yYW5kb20uaCIKKyNpbmNsdWRlICJz eXNlbXUvcmVzZXQuaCIKKyNpbmNsdWRlICJxZW11L2xvZy5oIgorI2luY2x1ZGUgImh3L3ZtYXBw bGUvY2ZnLmgiCisjaW5jbHVkZSAiaHcvbWlzYy9wdnBhbmljLmgiCisjaW5jbHVkZSAiaHcvdm1h cHBsZS9iZGlmLmgiCisKK3N0cnVjdCBWTUFwcGxlTWFjaGluZUNsYXNzIHsKKyAgICBNYWNoaW5l Q2xhc3MgcGFyZW50OworfTsKKworc3RydWN0IFZNQXBwbGVNYWNoaW5lU3RhdGUgeworICAgIE1h Y2hpbmVTdGF0ZSBwYXJlbnQ7CisgICAgTm90aWZpZXIgbWFjaGluZV9kb25lOworICAgIHN0cnVj dCBhcm1fYm9vdF9pbmZvIGJvb3RpbmZvOworICAgIE1lbU1hcEVudHJ5ICptZW1tYXA7CisgICAg Y29uc3QgaW50ICppcnFtYXA7CisgICAgRGV2aWNlU3RhdGUgKmdpYzsKKyAgICBEZXZpY2VTdGF0 ZSAqY2ZnOworICAgIE5vdGlmaWVyIHBvd2VyZG93bl9ub3RpZmllcjsKKyAgICBQQ0lCdXMgKmJ1 czsKKyAgICBNZW1vcnlSZWdpb24gZndfbXI7CisgICAgdWludDY0X3QgdXVpZDsKK307CisKKyNk ZWZpbmUgREVGSU5FX1ZNQVBQTEVfTUFDSElORV9MQVRFU1QobWFqb3IsIG1pbm9yLCBsYXRlc3Qp IFwKKyAgICBzdGF0aWMgdm9pZCB2bWFwcGxlIyNtYWpvciMjXyMjbWlub3IjI19jbGFzc19pbml0 KE9iamVjdENsYXNzICpvYywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpIFwKKyAgICB7IFwKKyAgICAgICAgTWFjaGluZUNs YXNzICptYyA9IE1BQ0hJTkVfQ0xBU1Mob2MpOyBcCisgICAgICAgIHZtYXBwbGVfbWFjaGluZV8j I21ham9yIyNfIyNtaW5vciMjX29wdGlvbnMobWMpOyBcCisgICAgICAgIG1jLT5kZXNjID0gIlFF TVUgIiAjIG1ham9yICIuIiAjIG1pbm9yICIgQXBwbGUgVmlydHVhbCBNYWNoaW5lIjsgXAorICAg ICAgICBpZiAobGF0ZXN0KSB7IFwKKyAgICAgICAgICAgIG1jLT5hbGlhcyA9ICJ2bWFwcGxlIjsg XAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBzdGF0aWMgY29uc3QgVHlwZUluZm8gbWFjaHZt YXBwbGUjI21ham9yIyNfIyNtaW5vciMjX2luZm8gPSB7IFwKKyAgICAgICAgLm5hbWUgPSBNQUNI SU5FX1RZUEVfTkFNRSgidm1hcHBsZS0iICMgbWFqb3IgIi4iICMgbWlub3IpLCBcCisgICAgICAg IC5wYXJlbnQgPSBUWVBFX1ZNQVBQTEVfTUFDSElORSwgXAorICAgICAgICAuY2xhc3NfaW5pdCA9 IHZtYXBwbGUjI21ham9yIyNfIyNtaW5vciMjX2NsYXNzX2luaXQsIFwKKyAgICB9OyBcCisgICAg c3RhdGljIHZvaWQgbWFjaHZtYXBwbGVfbWFjaGluZV8jI21ham9yIyNfIyNtaW5vciMjX2luaXQo dm9pZCkgXAorICAgIHsgXAorICAgICAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmbWFjaHZtYXBw bGUjI21ham9yIyNfIyNtaW5vciMjX2luZm8pOyBcCisgICAgfSBcCisgICAgdHlwZV9pbml0KG1h Y2h2bWFwcGxlX21hY2hpbmVfIyNtYWpvciMjXyMjbWlub3IjI19pbml0KTsKKworI2RlZmluZSBE RUZJTkVfVk1BUFBMRV9NQUNISU5FX0FTX0xBVEVTVChtYWpvciwgbWlub3IpIFwKKyAgICBERUZJ TkVfVk1BUFBMRV9NQUNISU5FX0xBVEVTVChtYWpvciwgbWlub3IsIHRydWUpCisjZGVmaW5lIERF RklORV9WTUFQUExFX01BQ0hJTkUobWFqb3IsIG1pbm9yKSBcCisgICAgREVGSU5FX1ZNQVBQTEVf TUFDSElORV9MQVRFU1QobWFqb3IsIG1pbm9yLCBmYWxzZSkKKworI2RlZmluZSBUWVBFX1ZNQVBQ TEVfTUFDSElORSAgIE1BQ0hJTkVfVFlQRV9OQU1FKCJ2bWFwcGxlIikKK09CSkVDVF9ERUNMQVJF X1RZUEUoVk1BcHBsZU1hY2hpbmVTdGF0ZSwgVk1BcHBsZU1hY2hpbmVDbGFzcywgVk1BUFBMRV9N QUNISU5FKQorCisvKiBOdW1iZXIgb2YgZXh0ZXJuYWwgaW50ZXJydXB0IGxpbmVzIHRvIGNvbmZp Z3VyZSB0aGUgR0lDIHdpdGggKi8KKyNkZWZpbmUgTlVNX0lSUVMgMjU2CisKK2VudW0geworICAg IFZNQVBQTEVfRklSTVdBUkUsCisgICAgVk1BUFBMRV9DT05GSUcsCisgICAgVk1BUFBMRV9NRU0s CisgICAgVk1BUFBMRV9HSUNfRElTVCwKKyAgICBWTUFQUExFX0dJQ19SRURJU1QsCisgICAgVk1B UFBMRV9VQVJULAorICAgIFZNQVBQTEVfUlRDLAorICAgIFZNQVBQTEVfUENJRSwKKyAgICBWTUFQ UExFX1BDSUVfTU1JTywKKyAgICBWTUFQUExFX1BDSUVfRUNBTSwKKyAgICBWTUFQUExFX0dQSU8s CisgICAgVk1BUFBMRV9QVlBBTklDLAorICAgIFZNQVBQTEVfQVBWX0dGWCwKKyAgICBWTUFQUExF X0FQVl9JT1NGQywKKyAgICBWTUFQUExFX0FFU18xLAorICAgIFZNQVBQTEVfQUVTXzIsCisgICAg Vk1BUFBMRV9CRE9PUiwKKyAgICBWTUFQUExFX01FTU1BUF9MQVNULAorfTsKKworc3RhdGljIE1l bU1hcEVudHJ5IG1lbW1hcFtdID0geworICAgIFtWTUFQUExFX0ZJUk1XQVJFXSA9ICAgICAgICAg ICB7IDB4MDAxMDAwMDAsIDB4MDAxMDAwMDAgfSwKKyAgICBbVk1BUFBMRV9DT05GSUddID0gICAg ICAgICAgICAgeyAweDAwNDAwMDAwLCAweDAwMDEwMDAwIH0sCisKKyAgICBbVk1BUFBMRV9HSUNf RElTVF0gPSAgICAgICAgICAgeyAweDEwMDAwMDAwLCAweDAwMDEwMDAwIH0sCisgICAgW1ZNQVBQ TEVfR0lDX1JFRElTVF0gPSAgICAgICAgIHsgMHgxMDAxMDAwMCwgMHgwMDQwMDAwMCB9LAorCisg ICAgW1ZNQVBQTEVfVUFSVF0gPSAgICAgICAgICAgICAgIHsgMHgyMDAxMDAwMCwgMHgwMDAxMDAw MCB9LAorICAgIFtWTUFQUExFX1JUQ10gPSAgICAgICAgICAgICAgICB7IDB4MjAwNTAwMDAsIDB4 MDAwMDEwMDAgfSwKKyAgICBbVk1BUFBMRV9HUElPXSA9ICAgICAgICAgICAgICAgeyAweDIwMDYw MDAwLCAweDAwMDAxMDAwIH0sCisgICAgW1ZNQVBQTEVfUFZQQU5JQ10gPSAgICAgICAgICAgIHsg MHgyMDA3MDAwMCwgMHgwMDAwMDAwMiB9LAorICAgIFtWTUFQUExFX0JET09SXSA9ICAgICAgICAg ICAgICB7IDB4MzAwMDAwMDAsIDB4MDAyMDAwMDAgfSwKKyAgICBbVk1BUFBMRV9BUFZfR0ZYXSA9 ICAgICAgICAgICAgeyAweDMwMjAwMDAwLCAweDAwMDEwMDAwIH0sCisgICAgW1ZNQVBQTEVfQVBW X0lPU0ZDXSA9ICAgICAgICAgIHsgMHgzMDIxMDAwMCwgMHgwMDAxMDAwMCB9LAorICAgIFtWTUFQ UExFX0FFU18xXSA9ICAgICAgICAgICAgICB7IDB4MzAyMjAwMDAsIDB4MDAwMDQwMDAgfSwKKyAg ICBbVk1BUFBMRV9BRVNfMl0gPSAgICAgICAgICAgICAgeyAweDMwMjMwMDAwLCAweDAwMDA0MDAw IH0sCisgICAgW1ZNQVBQTEVfUENJRV9FQ0FNXSA9ICAgICAgICAgIHsgMHg0MDAwMDAwMCwgMHgx MDAwMDAwMCB9LAorICAgIFtWTUFQUExFX1BDSUVfTU1JT10gPSAgICAgICAgICB7IDB4NTAwMDAw MDAsIDB4MWZmZjAwMDAgfSwKKworICAgIC8qIEFjdHVhbCBSQU0gc2l6ZSBkZXBlbmRzIG9uIGNv bmZpZ3VyYXRpb24gKi8KKyAgICBbVk1BUFBMRV9NRU1dID0gICAgICAgICAgICAgICAgeyAweDcw MDAwMDAwVUxMLCBHaUJ9LAorfTsKKworc3RhdGljIGNvbnN0IGludCBpcnFtYXBbXSA9IHsKKyAg ICBbVk1BUFBMRV9VQVJUXSA9IDEsCisgICAgW1ZNQVBQTEVfUlRDXSA9IDIsCisgICAgW1ZNQVBQ TEVfR1BJT10gPSAweDUsCisgICAgW1ZNQVBQTEVfQVBWX0lPU0ZDXSA9IDB4MTAsCisgICAgW1ZN QVBQTEVfQVBWX0dGWF0gPSAweDExLAorICAgIFtWTUFQUExFX0FFU18xXSA9IDB4MTIsCisgICAg W1ZNQVBQTEVfUENJRV0gPSAweDIwLAorfTsKKworI2RlZmluZSBHUEVYX05VTV9JUlFTIDE2CisK K3N0YXRpYyB2b2lkIGNyZWF0ZV9iZGlmKFZNQXBwbGVNYWNoaW5lU3RhdGUgKnZtcywgTWVtb3J5 UmVnaW9uICptZW0pCit7CisgICAgRGV2aWNlU3RhdGUgKmJkaWY7CisgICAgU3lzQnVzRGV2aWNl ICpiZGlmX3NiOworICAgIERyaXZlSW5mbyAqZGlfYXV4ID0gZHJpdmVfZ2V0KElGX1BGTEFTSCwg MCwgMCk7CisgICAgRHJpdmVJbmZvICpkaV9yb290ID0gZHJpdmVfZ2V0KElGX1BGTEFTSCwgMCwg MSk7CisKKyAgICBpZiAoIWRpX2F1eCkgeworICAgICAgICBlcnJvcl9yZXBvcnQoIk5vIEFVWCBk ZXZpY2UgZm91bmQuIFBsZWFzZSBzcGVjaWZ5IG9uZSBhcyBwZmxhc2ggZHJpdmUiKTsKKyAgICAg ICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBpZiAoIWRpX3Jvb3QpIHsKKyAgICAgICAgLyogRmFs bCBiYWNrIHRvIHRoZSBmaXJzdCBJRl9WSVJUSU8gZGV2aWNlIGFzIHJvb3QgZGV2aWNlICovCisg ICAgICAgIGRpX3Jvb3QgPSBkcml2ZV9nZXQoSUZfVklSVElPLCAwLCAwKTsKKyAgICB9CisKKyAg ICBpZiAoIWRpX3Jvb3QpIHsKKyAgICAgICAgZXJyb3JfcmVwb3J0KCJObyByb290IGRldmljZSBm b3VuZC4gUGxlYXNlIHNwZWNpZnkgb25lIGFzIHZpcnRpbyBkcml2ZSIpOworICAgICAgICBleGl0 KDEpOworICAgIH0KKworICAgIC8qIFBWIGJhY2tkb29yIGRldmljZSAqLworICAgIGJkaWYgPSBx ZGV2X25ldyhUWVBFX1ZNQVBQTEVfQkRJRik7CisgICAgYmRpZl9zYiA9IFNZU19CVVNfREVWSUNF KGJkaWYpOworICAgIHN5c2J1c19tbWlvX21hcChiZGlmX3NiLCAwLCB2bXMtPm1lbW1hcFtWTUFQ UExFX0JET09SXS5iYXNlKTsKKworICAgIHFkZXZfcHJvcF9zZXRfZHJpdmUoREVWSUNFKGJkaWYp LCAiYXV4IiwgYmxrX2J5X2xlZ2FjeV9kaW5mbyhkaV9hdXgpKTsKKyAgICBxZGV2X3Byb3Bfc2V0 X2RyaXZlKERFVklDRShiZGlmKSwgInJvb3QiLCBibGtfYnlfbGVnYWN5X2RpbmZvKGRpX3Jvb3Qp KTsKKworICAgIHN5c2J1c19yZWFsaXplX2FuZF91bnJlZihiZGlmX3NiLCAmZXJyb3JfZmF0YWwp OworfQorCitzdGF0aWMgdm9pZCBjcmVhdGVfcHZwYW5pYyhWTUFwcGxlTWFjaGluZVN0YXRlICp2 bXMsIE1lbW9yeVJlZ2lvbiAqbWVtKQoreworICAgIFN5c0J1c0RldmljZSAqY2ZnOworCisgICAg dm1zLT5jZmcgPSBxZGV2X25ldyhUWVBFX1BWUEFOSUNfTU1JT19ERVZJQ0UpOworICAgIGNmZyA9 IFNZU19CVVNfREVWSUNFKHZtcy0+Y2ZnKTsKKyAgICBzeXNidXNfbW1pb19tYXAoY2ZnLCAwLCB2 bXMtPm1lbW1hcFtWTUFQUExFX1BWUEFOSUNdLmJhc2UpOworCisgICAgc3lzYnVzX3JlYWxpemVf YW5kX3VucmVmKGNmZywgJmVycm9yX2ZhdGFsKTsKK30KKworc3RhdGljIHZvaWQgY3JlYXRlX2Nm ZyhWTUFwcGxlTWFjaGluZVN0YXRlICp2bXMsIE1lbW9yeVJlZ2lvbiAqbWVtKQoreworICAgIFN5 c0J1c0RldmljZSAqY2ZnOworICAgIE1hY2hpbmVTdGF0ZSAqbWFjaGluZSA9IE1BQ0hJTkUodm1z KTsKKyAgICB1aW50MzJfdCBybmQgPSAxOworCisgICAgdm1zLT5jZmcgPSBxZGV2X25ldyhUWVBF X1ZNQVBQTEVfQ0ZHKTsKKyAgICBjZmcgPSBTWVNfQlVTX0RFVklDRSh2bXMtPmNmZyk7CisgICAg c3lzYnVzX21taW9fbWFwKGNmZywgMCwgdm1zLT5tZW1tYXBbVk1BUFBMRV9DT05GSUddLmJhc2Up OworCisgICAgcWVtdV9ndWVzdF9nZXRyYW5kb21fbm9mYWlsKCZybmQsIHNpemVvZihybmQpKTsK KworICAgIHFkZXZfcHJvcF9zZXRfdWludDMyKHZtcy0+Y2ZnLCAibnItY3B1cyIsIG1hY2hpbmUt PnNtcC5jcHVzKTsKKyAgICBxZGV2X3Byb3Bfc2V0X3VpbnQ2NCh2bXMtPmNmZywgImVjaWQiLCB2 bXMtPnV1aWQpOworICAgIHFkZXZfcHJvcF9zZXRfdWludDY0KHZtcy0+Y2ZnLCAicmFtLXNpemUi LCBtYWNoaW5lLT5yYW1fc2l6ZSk7CisgICAgcWRldl9wcm9wX3NldF91aW50MzIodm1zLT5jZmcs ICJybmQiLCBybmQpOworCisgICAgc3lzYnVzX3JlYWxpemVfYW5kX3VucmVmKGNmZywgJmVycm9y X2ZhdGFsKTsKK30KKworc3RhdGljIHZvaWQgY3JlYXRlX2dmeChWTUFwcGxlTWFjaGluZVN0YXRl ICp2bXMsIE1lbW9yeVJlZ2lvbiAqbWVtKQoreworICAgIGludCBpcnFfZ2Z4ID0gdm1zLT5pcnFt YXBbVk1BUFBMRV9BUFZfR0ZYXTsKKyAgICBpbnQgaXJxX2lvc2ZjID0gdm1zLT5pcnFtYXBbVk1B UFBMRV9BUFZfSU9TRkNdOworICAgIFN5c0J1c0RldmljZSAqYWVzOworCisgICAgYWVzID0gU1lT X0JVU19ERVZJQ0UocWRldl9uZXcoImFwcGxlLWdmeCIpKTsKKyAgICBzeXNidXNfbW1pb19tYXAo YWVzLCAwLCB2bXMtPm1lbW1hcFtWTUFQUExFX0FQVl9HRlhdLmJhc2UpOworICAgIHN5c2J1c19t bWlvX21hcChhZXMsIDEsIHZtcy0+bWVtbWFwW1ZNQVBQTEVfQVBWX0lPU0ZDXS5iYXNlKTsKKyAg ICBzeXNidXNfY29ubmVjdF9pcnEoYWVzLCAwLCBxZGV2X2dldF9ncGlvX2luKHZtcy0+Z2ljLCBp cnFfZ2Z4KSk7CisgICAgc3lzYnVzX2Nvbm5lY3RfaXJxKGFlcywgMSwgcWRldl9nZXRfZ3Bpb19p bih2bXMtPmdpYywgaXJxX2lvc2ZjKSk7CisgICAgc3lzYnVzX3JlYWxpemVfYW5kX3VucmVmKGFl cywgJmVycm9yX2ZhdGFsKTsKK30KKworc3RhdGljIHZvaWQgY3JlYXRlX2FlcyhWTUFwcGxlTWFj aGluZVN0YXRlICp2bXMsIE1lbW9yeVJlZ2lvbiAqbWVtKQoreworICAgIGludCBpcnEgPSB2bXMt PmlycW1hcFtWTUFQUExFX0FFU18xXTsKKyAgICBTeXNCdXNEZXZpY2UgKmFlczsKKworICAgIGFl cyA9IFNZU19CVVNfREVWSUNFKHFkZXZfbmV3KCJhcHBsZS1hZXMiKSk7CisgICAgc3lzYnVzX21t aW9fbWFwKGFlcywgMCwgdm1zLT5tZW1tYXBbVk1BUFBMRV9BRVNfMV0uYmFzZSk7CisgICAgc3lz YnVzX21taW9fbWFwKGFlcywgMSwgdm1zLT5tZW1tYXBbVk1BUFBMRV9BRVNfMl0uYmFzZSk7Cisg ICAgc3lzYnVzX2Nvbm5lY3RfaXJxKGFlcywgMCwgcWRldl9nZXRfZ3Bpb19pbih2bXMtPmdpYywg aXJxKSk7CisgICAgc3lzYnVzX3JlYWxpemVfYW5kX3VucmVmKGFlcywgJmVycm9yX2ZhdGFsKTsK K30KKworc3RhdGljIGlubGluZSBpbnQgYXJtX2dpY19wcGlfaW5kZXgoaW50IGNwdV9uciwgaW50 IHBwaV9pbmRleCkKK3sKKyAgICByZXR1cm4gTlVNX0lSUVMgKyBjcHVfbnIgKiBHSUNfSU5URVJO QUwgKyBwcGlfaW5kZXg7Cit9CisKK3N0YXRpYyB2b2lkIGNyZWF0ZV9naWMoVk1BcHBsZU1hY2hp bmVTdGF0ZSAqdm1zLCBNZW1vcnlSZWdpb24gKm1lbSkKK3sKKyAgICBNYWNoaW5lU3RhdGUgKm1z ID0gTUFDSElORSh2bXMpOworICAgIC8qIFdlIGNyZWF0ZSBhIHN0YW5kYWxvbmUgR0lDICovCisg ICAgU3lzQnVzRGV2aWNlICpnaWNidXNkZXY7CisgICAgaW50IGk7CisgICAgdW5zaWduZWQgaW50 IHNtcF9jcHVzID0gbXMtPnNtcC5jcHVzOworCisgICAgdm1zLT5naWMgPSBxZGV2X25ldyhnaWN2 M19jbGFzc19uYW1lKCkpOworICAgIHFkZXZfcHJvcF9zZXRfdWludDMyKHZtcy0+Z2ljLCAicmV2 aXNpb24iLCAzKTsKKyAgICBxZGV2X3Byb3Bfc2V0X3VpbnQzMih2bXMtPmdpYywgIm51bS1jcHUi LCBzbXBfY3B1cyk7CisgICAgLyoKKyAgICAgKiBOb3RlIHRoYXQgdGhlIG51bS1pcnEgcHJvcGVy dHkgY291bnRzIGJvdGggaW50ZXJuYWwgYW5kIGV4dGVybmFsCisgICAgICogaW50ZXJydXB0czsg dGhlcmUgYXJlIGFsd2F5cyAzMiBvZiB0aGUgZm9ybWVyIChtYW5kYXRlZCBieSBHSUMgc3BlYyku CisgICAgICovCisgICAgcWRldl9wcm9wX3NldF91aW50MzIodm1zLT5naWMsICJudW0taXJxIiwg TlVNX0lSUVMgKyAzMik7CisKKyAgICB1aW50MzJfdCByZWRpc3QwX2NhcGFjaXR5ID0KKyAgICAg ICAgICAgICAgICB2bXMtPm1lbW1hcFtWTUFQUExFX0dJQ19SRURJU1RdLnNpemUgLyBHSUNWM19S RURJU1RfU0laRTsKKyAgICB1aW50MzJfdCByZWRpc3QwX2NvdW50ID0gTUlOKHNtcF9jcHVzLCBy ZWRpc3QwX2NhcGFjaXR5KTsKKworICAgIHFkZXZfcHJvcF9zZXRfdWludDMyKHZtcy0+Z2ljLCAi bGVuLXJlZGlzdC1yZWdpb24tY291bnQiLCAxKTsKKyAgICBxZGV2X3Byb3Bfc2V0X3VpbnQzMih2 bXMtPmdpYywgInJlZGlzdC1yZWdpb24tY291bnRbMF0iLCByZWRpc3QwX2NvdW50KTsKKworICAg IGdpY2J1c2RldiA9IFNZU19CVVNfREVWSUNFKHZtcy0+Z2ljKTsKKyAgICBzeXNidXNfcmVhbGl6 ZV9hbmRfdW5yZWYoZ2ljYnVzZGV2LCAmZXJyb3JfZmF0YWwpOworICAgIHN5c2J1c19tbWlvX21h cChnaWNidXNkZXYsIDAsIHZtcy0+bWVtbWFwW1ZNQVBQTEVfR0lDX0RJU1RdLmJhc2UpOworICAg IHN5c2J1c19tbWlvX21hcChnaWNidXNkZXYsIDEsIHZtcy0+bWVtbWFwW1ZNQVBQTEVfR0lDX1JF RElTVF0uYmFzZSk7CisKKyAgICAvKgorICAgICAqIFdpcmUgdGhlIG91dHB1dHMgZnJvbSBlYWNo IENQVSdzIGdlbmVyaWMgdGltZXIgYW5kIHRoZSBHSUN2MworICAgICAqIG1haW50ZW5hbmNlIGlu dGVycnVwdCBzaWduYWwgdG8gdGhlIGFwcHJvcHJpYXRlIEdJQyBQUEkgaW5wdXRzLAorICAgICAq IGFuZCB0aGUgR0lDJ3MgSVJRL0ZJUS9WSVJRL1ZGSVEgaW50ZXJydXB0IG91dHB1dHMgdG8gdGhl IENQVSdzIGlucHV0cy4KKyAgICAgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgc21wX2NwdXM7IGkr KykgeworICAgICAgICBEZXZpY2VTdGF0ZSAqY3B1ZGV2ID0gREVWSUNFKHFlbXVfZ2V0X2NwdShp KSk7CisKKyAgICAgICAgLyogTWFwIHRoZSB2aXJ0IHRpbWVyIHRvIFBQSSAyNyAqLworICAgICAg ICBxZGV2X2Nvbm5lY3RfZ3Bpb19vdXQoY3B1ZGV2LCBHVElNRVJfVklSVCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHFkZXZfZ2V0X2dwaW9faW4odm1zLT5naWMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybV9naWNfcHBpX2luZGV4KGks IDI3KSkpOworCisgICAgICAgIC8qIE1hcCB0aGUgR0lDIElSUSBhbmQgRklRIGxpbmVzIHRvIENQ VSAqLworICAgICAgICBzeXNidXNfY29ubmVjdF9pcnEoZ2ljYnVzZGV2LCBpLCBxZGV2X2dldF9n cGlvX2luKGNwdWRldiwgQVJNX0NQVV9JUlEpKTsKKyAgICAgICAgc3lzYnVzX2Nvbm5lY3RfaXJx KGdpY2J1c2RldiwgaSArIHNtcF9jcHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcWRl dl9nZXRfZ3Bpb19pbihjcHVkZXYsIEFSTV9DUFVfRklRKSk7CisgICAgfQorfQorCitzdGF0aWMg dm9pZCBjcmVhdGVfdWFydChjb25zdCBWTUFwcGxlTWFjaGluZVN0YXRlICp2bXMsIGludCB1YXJ0 LAorICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5UmVnaW9uICptZW0sIENoYXJkZXYgKmNo cikKK3sKKyAgICBod2FkZHIgYmFzZSA9IHZtcy0+bWVtbWFwW3VhcnRdLmJhc2U7CisgICAgaW50 IGlycSA9IHZtcy0+aXJxbWFwW3VhcnRdOworICAgIERldmljZVN0YXRlICpkZXYgPSBxZGV2X25l dyhUWVBFX1BMMDExKTsKKyAgICBTeXNCdXNEZXZpY2UgKnMgPSBTWVNfQlVTX0RFVklDRShkZXYp OworCisgICAgcWRldl9wcm9wX3NldF9jaHIoZGV2LCAiY2hhcmRldiIsIGNocik7CisgICAgc3lz YnVzX3JlYWxpemVfYW5kX3VucmVmKFNZU19CVVNfREVWSUNFKGRldiksICZlcnJvcl9mYXRhbCk7 CisgICAgbWVtb3J5X3JlZ2lvbl9hZGRfc3VicmVnaW9uKG1lbSwgYmFzZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3lzYnVzX21taW9fZ2V0X3JlZ2lvbihzLCAwKSk7CisgICAg c3lzYnVzX2Nvbm5lY3RfaXJxKHMsIDAsIHFkZXZfZ2V0X2dwaW9faW4odm1zLT5naWMsIGlycSkp OworfQorCitzdGF0aWMgdm9pZCBjcmVhdGVfcnRjKGNvbnN0IFZNQXBwbGVNYWNoaW5lU3RhdGUg KnZtcykKK3sKKyAgICBod2FkZHIgYmFzZSA9IHZtcy0+bWVtbWFwW1ZNQVBQTEVfUlRDXS5iYXNl OworICAgIGludCBpcnEgPSB2bXMtPmlycW1hcFtWTUFQUExFX1JUQ107CisKKyAgICBzeXNidXNf Y3JlYXRlX3NpbXBsZSgicGwwMzEiLCBiYXNlLCBxZGV2X2dldF9ncGlvX2luKHZtcy0+Z2ljLCBp cnEpKTsKK30KKworc3RhdGljIERldmljZVN0YXRlICpncGlvX2tleV9kZXY7CitzdGF0aWMgdm9p ZCB2bWFwcGxlX3Bvd2VyZG93bl9yZXEoTm90aWZpZXIgKm4sIHZvaWQgKm9wYXF1ZSkKK3sKKyAg ICAvKiB1c2UgZ3BpbyBQaW4gMyBmb3IgcG93ZXIgYnV0dG9uIGV2ZW50ICovCisgICAgcWVtdV9z ZXRfaXJxKHFkZXZfZ2V0X2dwaW9faW4oZ3Bpb19rZXlfZGV2LCAwKSwgMSk7Cit9CisKK3N0YXRp YyB2b2lkIGNyZWF0ZV9ncGlvX2RldmljZXMoY29uc3QgVk1BcHBsZU1hY2hpbmVTdGF0ZSAqdm1z LCBpbnQgZ3BpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5UmVnaW9u ICptZW0pCit7CisgICAgRGV2aWNlU3RhdGUgKnBsMDYxX2RldjsKKyAgICBod2FkZHIgYmFzZSA9 IHZtcy0+bWVtbWFwW2dwaW9dLmJhc2U7CisgICAgaW50IGlycSA9IHZtcy0+aXJxbWFwW2dwaW9d OworICAgIFN5c0J1c0RldmljZSAqczsKKworICAgIHBsMDYxX2RldiA9IHFkZXZfbmV3KCJwbDA2 MSIpOworICAgIC8qIFB1bGwgbGluZXMgZG93biB0byAwIGlmIG5vdCBkcml2ZW4gYnkgdGhlIFBM MDYxICovCisgICAgcWRldl9wcm9wX3NldF91aW50MzIocGwwNjFfZGV2LCAicHVsbHVwcyIsIDAp OworICAgIHFkZXZfcHJvcF9zZXRfdWludDMyKHBsMDYxX2RldiwgInB1bGxkb3ducyIsIDB4ZmYp OworICAgIHMgPSBTWVNfQlVTX0RFVklDRShwbDA2MV9kZXYpOworICAgIHN5c2J1c19yZWFsaXpl X2FuZF91bnJlZihzLCAmZXJyb3JfZmF0YWwpOworICAgIG1lbW9yeV9yZWdpb25fYWRkX3N1YnJl Z2lvbihtZW0sIGJhc2UsIHN5c2J1c19tbWlvX2dldF9yZWdpb24ocywgMCkpOworICAgIHN5c2J1 c19jb25uZWN0X2lycShzLCAwLCBxZGV2X2dldF9ncGlvX2luKHZtcy0+Z2ljLCBpcnEpKTsKKyAg ICBncGlvX2tleV9kZXYgPSBzeXNidXNfY3JlYXRlX3NpbXBsZSgiZ3Bpby1rZXkiLCAtMSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxZGV2X2dldF9ncGlvX2luKHBs MDYxX2RldiwgMykpOworfQorCitzdGF0aWMgdm9pZCB2bWFwcGxlX2Zpcm13YXJlX2luaXQoVk1B cHBsZU1hY2hpbmVTdGF0ZSAqdm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1lbW9yeVJlZ2lvbiAqc3lzbWVtKQoreworICAgIGh3YWRkciBzaXplID0gdm1zLT5tZW1tYXBb Vk1BUFBMRV9GSVJNV0FSRV0uc2l6ZTsKKyAgICBod2FkZHIgYmFzZSA9IHZtcy0+bWVtbWFwW1ZN QVBQTEVfRklSTVdBUkVdLmJhc2U7CisgICAgY29uc3QgY2hhciAqYmlvc19uYW1lOworICAgIGlu dCBpbWFnZV9zaXplOworICAgIGNoYXIgKmZuYW1lOworCisgICAgYmlvc19uYW1lID0gTUFDSElO RSh2bXMpLT5maXJtd2FyZTsKKyAgICBpZiAoIWJpb3NfbmFtZSkgeworICAgICAgICBlcnJvcl9y ZXBvcnQoIk5vIGZpcm13YXJlIHNwZWNpZmllZCIpOworICAgICAgICBleGl0KDEpOworICAgIH0K KworICAgIGZuYW1lID0gcWVtdV9maW5kX2ZpbGUoUUVNVV9GSUxFX1RZUEVfQklPUywgYmlvc19u YW1lKTsKKyAgICBpZiAoIWZuYW1lKSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgiQ291bGQgbm90 IGZpbmQgUk9NIGltYWdlICclcyciLCBiaW9zX25hbWUpOworICAgICAgICBleGl0KDEpOworICAg IH0KKworICAgIG1lbW9yeV9yZWdpb25faW5pdF9yYW0oJnZtcy0+ZndfbXIsIE5VTEwsICJmaXJt d2FyZSIsIHNpemUsIE5VTEwpOworICAgIGltYWdlX3NpemUgPSBsb2FkX2ltYWdlX21yKGZuYW1l LCAmdm1zLT5md19tcik7CisKKyAgICBnX2ZyZWUoZm5hbWUpOworICAgIGlmIChpbWFnZV9zaXpl IDwgMCkgeworICAgICAgICBlcnJvcl9yZXBvcnQoIkNvdWxkIG5vdCBsb2FkIFJPTSBpbWFnZSAn JXMnIiwgYmlvc19uYW1lKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBtZW1vcnlf cmVnaW9uX2FkZF9zdWJyZWdpb24oZ2V0X3N5c3RlbV9tZW1vcnkoKSwgYmFzZSwgJnZtcy0+Zndf bXIpOworfQorCitzdGF0aWMgdm9pZCBjcmVhdGVfcGNpZShWTUFwcGxlTWFjaGluZVN0YXRlICp2 bXMpCit7CisgICAgaHdhZGRyIGJhc2VfbW1pbyA9IHZtcy0+bWVtbWFwW1ZNQVBQTEVfUENJRV9N TUlPXS5iYXNlOworICAgIGh3YWRkciBzaXplX21taW8gPSB2bXMtPm1lbW1hcFtWTUFQUExFX1BD SUVfTU1JT10uc2l6ZTsKKyAgICBod2FkZHIgYmFzZV9lY2FtID0gdm1zLT5tZW1tYXBbVk1BUFBM RV9QQ0lFX0VDQU1dLmJhc2U7CisgICAgaHdhZGRyIHNpemVfZWNhbSA9IHZtcy0+bWVtbWFwW1ZN QVBQTEVfUENJRV9FQ0FNXS5zaXplOworICAgIGludCBpcnEgPSB2bXMtPmlycW1hcFtWTUFQUExF X1BDSUVdOworICAgIE1lbW9yeVJlZ2lvbiAqbW1pb19hbGlhczsKKyAgICBNZW1vcnlSZWdpb24g Km1taW9fcmVnOworICAgIE1lbW9yeVJlZ2lvbiAqZWNhbV9hbGlhczsKKyAgICBNZW1vcnlSZWdp b24gKmVjYW1fcmVnOworICAgIERldmljZVN0YXRlICpkZXY7CisgICAgaW50IGk7CisgICAgUENJ SG9zdFN0YXRlICpwY2k7CisgICAgRGV2aWNlU3RhdGUgKnZpcnRpb190YWJsZXQ7CisgICAgRGV2 aWNlU3RhdGUgKnZpcnRpb19rZXlib2FyZDsKKworICAgIGRldiA9IHFkZXZfbmV3KFRZUEVfR1BF WF9IT1NUKTsKKyAgICBxZGV2X3Byb3Bfc2V0X3VpbnQzMihkZXYsICJuci1pcnFzIiwgR1BFWF9O VU1fSVJRUyk7CisgICAgc3lzYnVzX3JlYWxpemVfYW5kX3VucmVmKFNZU19CVVNfREVWSUNFKGRl diksICZlcnJvcl9mYXRhbCk7CisKKyAgICAvKiBNYXAgb25seSB0aGUgZmlyc3Qgc2l6ZV9lY2Ft IGJ5dGVzIG9mIEVDQU0gc3BhY2UgKi8KKyAgICBlY2FtX2FsaWFzID0gZ19uZXcwKE1lbW9yeVJl Z2lvbiwgMSk7CisgICAgZWNhbV9yZWcgPSBzeXNidXNfbW1pb19nZXRfcmVnaW9uKFNZU19CVVNf REVWSUNFKGRldiksIDApOworICAgIG1lbW9yeV9yZWdpb25faW5pdF9hbGlhcyhlY2FtX2FsaWFz LCBPQkpFQ1QoZGV2KSwgInBjaWUtZWNhbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVjYW1fcmVnLCAwLCBzaXplX2VjYW0pOworICAgIG1lbW9yeV9yZWdpb25fYWRkX3N1YnJlZ2lv bihnZXRfc3lzdGVtX21lbW9yeSgpLCBiYXNlX2VjYW0sIGVjYW1fYWxpYXMpOworCisgICAgLyoK KyAgICAgKiBNYXAgdGhlIE1NSU8gd2luZG93IGZyb20gWzB4NTAwMDAwMDAtMHg3ZmZmMDAwMF0g aW4gUENJIHNwYWNlIGludG8KKyAgICAgKiBzeXN0ZW0gYWRkcmVzcyBzcGFjZSBhdCBbMHg1MDAw MDAwMC0weDdmZmYwMDAwXS4KKyAgICAgKi8KKyAgICBtbWlvX2FsaWFzID0gZ19uZXcwKE1lbW9y eVJlZ2lvbiwgMSk7CisgICAgbW1pb19yZWcgPSBzeXNidXNfbW1pb19nZXRfcmVnaW9uKFNZU19C VVNfREVWSUNFKGRldiksIDEpOworICAgIG1lbW9yeV9yZWdpb25faW5pdF9hbGlhcyhtbWlvX2Fs aWFzLCBPQkpFQ1QoZGV2KSwgInBjaWUtbW1pbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1taW9fcmVnLCBiYXNlX21taW8sIHNpemVfbW1pbyk7CisgICAgbWVtb3J5X3JlZ2lvbl9h ZGRfc3VicmVnaW9uKGdldF9zeXN0ZW1fbWVtb3J5KCksIGJhc2VfbW1pbywgbW1pb19hbGlhcyk7 CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgR1BFWF9OVU1fSVJRUzsgaSsrKSB7CisgICAgICAgIHN5 c2J1c19jb25uZWN0X2lycShTWVNfQlVTX0RFVklDRShkZXYpLCBpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgcWRldl9nZXRfZ3Bpb19pbih2bXMtPmdpYywgaXJxICsgaSkpOworICAgICAg ICBncGV4X3NldF9pcnFfbnVtKEdQRVhfSE9TVChkZXYpLCBpLCBpcnEgKyBpKTsKKyAgICB9CisK KyAgICBwY2kgPSBQQ0lfSE9TVF9CUklER0UoZGV2KTsKKyAgICB2bXMtPmJ1cyA9IHBjaS0+YnVz OworICAgIGlmICh2bXMtPmJ1cykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfbmljczsg aSsrKSB7CisgICAgICAgICAgICBOSUNJbmZvICpuZCA9ICZuZF90YWJsZVtpXTsKKworICAgICAg ICAgICAgaWYgKCFuZC0+bW9kZWwpIHsKKyAgICAgICAgICAgICAgICBuZC0+bW9kZWwgPSBnX3N0 cmR1cCgidmlydGlvIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBjaV9uaWNfaW5p dF9ub2ZhaWwobmQsIHBjaS0+YnVzLCBuZC0+bW9kZWwsIE5VTEwpOworICAgICAgICB9CisgICAg fQorCisgICAgdmlydGlvX3RhYmxldCA9IHFkZXZfbmV3KCJ2aXJ0aW8tdGFibGV0LXBjaSIpOwor ICAgIHFkZXZfcmVhbGl6ZSh2aXJ0aW9fdGFibGV0LCBCVVMocGNpLT5idXMpLCAmZXJyb3JfZmF0 YWwpOworICAgIG9iamVjdF91bnJlZih2aXJ0aW9fdGFibGV0KTsKKworICAgIHZpcnRpb19rZXli b2FyZCA9IHFkZXZfbmV3KCJ2aXJ0aW8ta2V5Ym9hcmQtcGNpIik7CisgICAgcWRldl9yZWFsaXpl KHZpcnRpb19rZXlib2FyZCwgQlVTKHBjaS0+YnVzKSwgJmVycm9yX2ZhdGFsKTsKKyAgICBvYmpl Y3RfdW5yZWYodmlydGlvX2tleWJvYXJkKTsKK30KKworc3RhdGljIHZvaWQgdm1hcHBsZV9yZXNl dCh2b2lkICpvcGFxdWUpCit7CisgICAgVk1BcHBsZU1hY2hpbmVTdGF0ZSAqdm1zID0gb3BhcXVl OworICAgIGh3YWRkciBiYXNlID0gdm1zLT5tZW1tYXBbVk1BUFBMRV9GSVJNV0FSRV0uYmFzZTsK KworICAgIGNwdV9zZXRfcGMoZmlyc3RfY3B1LCBiYXNlKTsKK30KKworc3RhdGljIHZvaWQgbWFj aF92bWFwcGxlX2luaXQoTWFjaGluZVN0YXRlICptYWNoaW5lKQoreworICAgIFZNQXBwbGVNYWNo aW5lU3RhdGUgKnZtcyA9IFZNQVBQTEVfTUFDSElORShtYWNoaW5lKTsKKyAgICBNYWNoaW5lQ2xh c3MgKm1jID0gTUFDSElORV9HRVRfQ0xBU1MobWFjaGluZSk7CisgICAgY29uc3QgQ1BVQXJjaElk TGlzdCAqcG9zc2libGVfY3B1czsKKyAgICBNZW1vcnlSZWdpb24gKnN5c21lbSA9IGdldF9zeXN0 ZW1fbWVtb3J5KCk7CisgICAgaW50IG47CisgICAgdW5zaWduZWQgaW50IHNtcF9jcHVzID0gbWFj aGluZS0+c21wLmNwdXM7CisgICAgdW5zaWduZWQgaW50IG1heF9jcHVzID0gbWFjaGluZS0+c21w Lm1heF9jcHVzOworCisgICAgdm1zLT5tZW1tYXAgPSBtZW1tYXA7CisKKyAgICBwb3NzaWJsZV9j cHVzID0gbWMtPnBvc3NpYmxlX2NwdV9hcmNoX2lkcyhtYWNoaW5lKTsKKyAgICBhc3NlcnQocG9z c2libGVfY3B1cy0+bGVuID09IG1heF9jcHVzKTsKKyAgICBmb3IgKG4gPSAwOyBuIDwgcG9zc2li bGVfY3B1cy0+bGVuOyBuKyspIHsKKyAgICAgICAgT2JqZWN0ICpjcHU7CisgICAgICAgIENQVVN0 YXRlICpjczsKKworICAgICAgICBpZiAobiA+PSBzbXBfY3B1cykgeworICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIH0KKworICAgICAgICBjcHUgPSBvYmplY3RfbmV3KHBvc3NpYmxlX2NwdXMt PmNwdXNbbl0udHlwZSk7CisgICAgICAgIG9iamVjdF9wcm9wZXJ0eV9zZXRfaW50KGNwdSwgIm1w LWFmZmluaXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfY3B1 cy0+Y3B1c1tuXS5hcmNoX2lkLCBOVUxMKTsKKworICAgICAgICBjcyA9IENQVShjcHUpOworICAg ICAgICBjcy0+Y3B1X2luZGV4ID0gbjsKKworICAgICAgICBudW1hX2NwdV9wcmVfcGx1ZygmcG9z c2libGVfY3B1cy0+Y3B1c1tjcy0+Y3B1X2luZGV4XSwgREVWSUNFKGNwdSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICZlcnJvcl9mYXRhbCk7CisKKyAgICAgICAgb2JqZWN0X3Byb3BlcnR5 X3NldF9ib29sKGNwdSwgImhhc19lbDMiLCBmYWxzZSwgTlVMTCk7CisgICAgICAgIG9iamVjdF9w cm9wZXJ0eV9zZXRfYm9vbChjcHUsICJoYXNfZWwyIiwgZmFsc2UsIE5VTEwpOworICAgICAgICBv YmplY3RfcHJvcGVydHlfc2V0X2ludChjcHUsICJwc2NpLWNvbmR1aXQiLCBRRU1VX1BTQ0lfQ09O RFVJVF9IVkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAg ICAgIC8qIFNlY29uZGFyeSBDUFVzIHN0YXJ0IGluIFBTQ0kgcG93ZXJlZC1kb3duIHN0YXRlICov CisgICAgICAgIGlmIChuID4gMCkgeworICAgICAgICAgICAgb2JqZWN0X3Byb3BlcnR5X3NldF9i b29sKGNwdSwgInN0YXJ0LXBvd2VyZWQtb2ZmIiwgdHJ1ZSwgTlVMTCk7CisgICAgICAgIH0KKwor ICAgICAgICBvYmplY3RfcHJvcGVydHlfc2V0X2xpbmsoY3B1LCAibWVtb3J5IiwgT0JKRUNUKHN5 c21lbSksICZlcnJvcl9hYm9ydCk7CisgICAgICAgIHFkZXZfcmVhbGl6ZShERVZJQ0UoY3B1KSwg TlVMTCwgJmVycm9yX2ZhdGFsKTsKKyAgICAgICAgb2JqZWN0X3VucmVmKGNwdSk7CisgICAgfQor CisgICAgbWVtb3J5X3JlZ2lvbl9hZGRfc3VicmVnaW9uKHN5c21lbSwgdm1zLT5tZW1tYXBbVk1B UFBMRV9NRU1dLmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUt PnJhbSk7CisKKyAgICBjcmVhdGVfZ2ljKHZtcywgc3lzbWVtKTsKKyAgICBjcmVhdGVfYmRpZih2 bXMsIHN5c21lbSk7CisgICAgY3JlYXRlX3B2cGFuaWModm1zLCBzeXNtZW0pOworICAgIGNyZWF0 ZV9hZXModm1zLCBzeXNtZW0pOworICAgIGNyZWF0ZV9nZngodm1zLCBzeXNtZW0pOworICAgIGNy ZWF0ZV91YXJ0KHZtcywgVk1BUFBMRV9VQVJULCBzeXNtZW0sIHNlcmlhbF9oZCgwKSk7CisgICAg Y3JlYXRlX3J0Yyh2bXMpOworICAgIGNyZWF0ZV9wY2llKHZtcyk7CisKKyAgICBjcmVhdGVfZ3Bp b19kZXZpY2VzKHZtcywgVk1BUFBMRV9HUElPLCBzeXNtZW0pOworCisgICAgdm1hcHBsZV9maXJt d2FyZV9pbml0KHZtcywgc3lzbWVtKTsKKyAgICBjcmVhdGVfY2ZnKHZtcywgc3lzbWVtKTsKKwor ICAgIC8qIGNvbm5lY3QgcG93ZXJkb3duIHJlcXVlc3QgKi8KKyAgICB2bXMtPnBvd2VyZG93bl9u b3RpZmllci5ub3RpZnkgPSB2bWFwcGxlX3Bvd2VyZG93bl9yZXE7CisgICAgcWVtdV9yZWdpc3Rl cl9wb3dlcmRvd25fbm90aWZpZXIoJnZtcy0+cG93ZXJkb3duX25vdGlmaWVyKTsKKworICAgIHZt cy0+Ym9vdGluZm8ucmFtX3NpemUgPSBtYWNoaW5lLT5yYW1fc2l6ZTsKKyAgICB2bXMtPmJvb3Rp bmZvLmJvYXJkX2lkID0gLTE7CisgICAgdm1zLT5ib290aW5mby5sb2FkZXJfc3RhcnQgPSB2bXMt Pm1lbW1hcFtWTUFQUExFX01FTV0uYmFzZTsKKyAgICB2bXMtPmJvb3RpbmZvLnNraXBfZHRiX2F1 dG9sb2FkID0gdHJ1ZTsKKyAgICB2bXMtPmJvb3RpbmZvLmZpcm13YXJlX2xvYWRlZCA9IHRydWU7 CisgICAgYXJtX2xvYWRfa2VybmVsKEFSTV9DUFUoZmlyc3RfY3B1KSwgbWFjaGluZSwgJnZtcy0+ Ym9vdGluZm8pOworCisgICAgcWVtdV9yZWdpc3Rlcl9yZXNldCh2bWFwcGxlX3Jlc2V0LCB2bXMp OworfQorCitzdGF0aWMgQ3B1SW5zdGFuY2VQcm9wZXJ0aWVzCit2bWFwcGxlX2NwdV9pbmRleF90 b19wcm9wcyhNYWNoaW5lU3RhdGUgKm1zLCB1bnNpZ25lZCBjcHVfaW5kZXgpCit7CisgICAgTWFj aGluZUNsYXNzICptYyA9IE1BQ0hJTkVfR0VUX0NMQVNTKG1zKTsKKyAgICBjb25zdCBDUFVBcmNo SWRMaXN0ICpwb3NzaWJsZV9jcHVzID0gbWMtPnBvc3NpYmxlX2NwdV9hcmNoX2lkcyhtcyk7CisK KyAgICBhc3NlcnQoY3B1X2luZGV4IDwgcG9zc2libGVfY3B1cy0+bGVuKTsKKyAgICByZXR1cm4g cG9zc2libGVfY3B1cy0+Y3B1c1tjcHVfaW5kZXhdLnByb3BzOworfQorCisKK3N0YXRpYyBpbnQ2 NF90IHZtYXBwbGVfZ2V0X2RlZmF1bHRfY3B1X25vZGVfaWQoY29uc3QgTWFjaGluZVN0YXRlICpt cywgaW50IGlkeCkKK3sKKyAgICByZXR1cm4gaWR4ICUgbXMtPm51bWFfc3RhdGUtPm51bV9ub2Rl czsKK30KKworc3RhdGljIGNvbnN0IENQVUFyY2hJZExpc3QgKnZtYXBwbGVfcG9zc2libGVfY3B1 X2FyY2hfaWRzKE1hY2hpbmVTdGF0ZSAqbXMpCit7CisgICAgaW50IG47CisgICAgdW5zaWduZWQg aW50IG1heF9jcHVzID0gbXMtPnNtcC5tYXhfY3B1czsKKworICAgIGlmIChtcy0+cG9zc2libGVf Y3B1cykgeworICAgICAgICBhc3NlcnQobXMtPnBvc3NpYmxlX2NwdXMtPmxlbiA9PSBtYXhfY3B1 cyk7CisgICAgICAgIHJldHVybiBtcy0+cG9zc2libGVfY3B1czsKKyAgICB9CisKKyAgICBtcy0+ cG9zc2libGVfY3B1cyA9IGdfbWFsbG9jMChzaXplb2YoQ1BVQXJjaElkTGlzdCkgKworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDUFVBcmNoSWQpICogbWF4X2NwdXMp OworICAgIG1zLT5wb3NzaWJsZV9jcHVzLT5sZW4gPSBtYXhfY3B1czsKKyAgICBmb3IgKG4gPSAw OyBuIDwgbXMtPnBvc3NpYmxlX2NwdXMtPmxlbjsgbisrKSB7CisgICAgICAgIG1zLT5wb3NzaWJs ZV9jcHVzLT5jcHVzW25dLnR5cGUgPSBtcy0+Y3B1X3R5cGU7CisgICAgICAgIG1zLT5wb3NzaWJs ZV9jcHVzLT5jcHVzW25dLmFyY2hfaWQgPQorICAgICAgICAgICAgYXJtX2NwdV9tcF9hZmZpbml0 eShuLCBHSUNWM19UQVJHRVRMSVNUX0JJVFMpOworICAgICAgICBtcy0+cG9zc2libGVfY3B1cy0+ Y3B1c1tuXS5wcm9wcy5oYXNfdGhyZWFkX2lkID0gdHJ1ZTsKKyAgICAgICAgbXMtPnBvc3NpYmxl X2NwdXMtPmNwdXNbbl0ucHJvcHMudGhyZWFkX2lkID0gbjsKKyAgICB9CisgICAgcmV0dXJuIG1z LT5wb3NzaWJsZV9jcHVzOworfQorCitzdGF0aWMgdm9pZCB2bWFwcGxlX2dldF91dWlkKE9iamVj dCAqb2JqLCBWaXNpdG9yICp2LCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICpvcGFxdWUsIEVycm9yICoqZXJycCkKK3sKKyAgICBWTUFwcGxlTWFj aGluZVN0YXRlICp2bXMgPSBWTUFQUExFX01BQ0hJTkUob2JqKTsKKyAgICB1aW50NjRfdCB2YWx1 ZSA9IGJlNjRfdG9fY3B1KHZtcy0+dXVpZCk7CisKKyAgICB2aXNpdF90eXBlX3VpbnQ2NCh2LCBu YW1lLCAmdmFsdWUsIGVycnApOworfQorCitzdGF0aWMgdm9pZCB2bWFwcGxlX3NldF91dWlkKE9i amVjdCAqb2JqLCBWaXNpdG9yICp2LCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICpvcGFxdWUsIEVycm9yICoqZXJycCkKK3sKKyAgICBWTUFwcGxl TWFjaGluZVN0YXRlICp2bXMgPSBWTUFQUExFX01BQ0hJTkUob2JqKTsKKyAgICBFcnJvciAqZXJy b3IgPSBOVUxMOworICAgIHVpbnQ2NF90IHZhbHVlOworCisgICAgdmlzaXRfdHlwZV91aW50NjQo diwgbmFtZSwgJnZhbHVlLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBlcnJv cl9wcm9wYWdhdGUoZXJycCwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg dm1zLT51dWlkID0gY3B1X3RvX2JlNjQodmFsdWUpOworfQorCitzdGF0aWMgdm9pZCB2bWFwcGxl X21hY2hpbmVfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqb2MsIHZvaWQgKmRhdGEpCit7CisgICAg TWFjaGluZUNsYXNzICptYyA9IE1BQ0hJTkVfQ0xBU1Mob2MpOworCisgICAgbWMtPmluaXQgPSBt YWNoX3ZtYXBwbGVfaW5pdDsKKyAgICBtYy0+bWF4X2NwdXMgPSAzMjsKKyAgICBtYy0+YmxvY2tf ZGVmYXVsdF90eXBlID0gSUZfVklSVElPOworICAgIG1jLT5ub19jZHJvbSA9IDE7CisgICAgbWMt PnBjaV9hbGxvd18wX2FkZHJlc3MgPSB0cnVlOworICAgIG1jLT5taW5pbXVtX3BhZ2VfYml0cyA9 IDEyOworICAgIG1jLT5wb3NzaWJsZV9jcHVfYXJjaF9pZHMgPSB2bWFwcGxlX3Bvc3NpYmxlX2Nw dV9hcmNoX2lkczsKKyAgICBtYy0+Y3B1X2luZGV4X3RvX2luc3RhbmNlX3Byb3BzID0gdm1hcHBs ZV9jcHVfaW5kZXhfdG9fcHJvcHM7CisgICAgaWYgKGh2Zl9lbmFibGVkKCkpIHsKKyAgICAgICAg bWMtPmRlZmF1bHRfY3B1X3R5cGUgPSBBUk1fQ1BVX1RZUEVfTkFNRSgiaG9zdCIpOworICAgIH0g ZWxzZSB7CisgICAgICAgIG1jLT5kZWZhdWx0X2NwdV90eXBlID0gQVJNX0NQVV9UWVBFX05BTUUo Im1heCIpOworICAgIH0KKyAgICBtYy0+Z2V0X2RlZmF1bHRfY3B1X25vZGVfaWQgPSB2bWFwcGxl X2dldF9kZWZhdWx0X2NwdV9ub2RlX2lkOworICAgIG1jLT5kZWZhdWx0X3JhbV9pZCA9ICJtYWNo LXZtYXBwbGUucmFtIjsKKworICAgIG9iamVjdF9yZWdpc3Rlcl9zdWdhcl9wcm9wKFRZUEVfVklS VElPX1BDSSwgImRpc2FibGUtbGVnYWN5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAib24iLCB0cnVlKTsKKworICAgIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9hZGQob2MsICJ1dWlk IiwgInVpbnQ2NCIsIHZtYXBwbGVfZ2V0X3V1aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2bWFwcGxlX3NldF91dWlkLCBOVUxMLCBOVUxMKTsKKyAgICBvYmplY3RfY2xhc3NfcHJv cGVydHlfc2V0X2Rlc2NyaXB0aW9uKG9jLCAidXVpZCIsICJNYWNoaW5lIFVVSUQgKFNET00pIik7 Cit9CisKK3N0YXRpYyB2b2lkIHZtYXBwbGVfaW5zdGFuY2VfaW5pdChPYmplY3QgKm9iaikKK3sK KyAgICBWTUFwcGxlTWFjaGluZVN0YXRlICp2bXMgPSBWTUFQUExFX01BQ0hJTkUob2JqKTsKKwor ICAgIHZtcy0+aXJxbWFwID0gaXJxbWFwOworfQorCitzdGF0aWMgY29uc3QgVHlwZUluZm8gdm1h cHBsZV9tYWNoaW5lX2luZm8gPSB7CisgICAgLm5hbWUgICAgICAgICAgPSBUWVBFX1ZNQVBQTEVf TUFDSElORSwKKyAgICAucGFyZW50ICAgICAgICA9IFRZUEVfTUFDSElORSwKKyAgICAuYWJzdHJh Y3QgICAgICA9IHRydWUsCisgICAgLmluc3RhbmNlX3NpemUgPSBzaXplb2YoVk1BcHBsZU1hY2hp bmVTdGF0ZSksCisgICAgLmNsYXNzX3NpemUgICAgPSBzaXplb2YoVk1BcHBsZU1hY2hpbmVDbGFz cyksCisgICAgLmNsYXNzX2luaXQgICAgPSB2bWFwcGxlX21hY2hpbmVfY2xhc3NfaW5pdCwKKyAg ICAuaW5zdGFuY2VfaW5pdCA9IHZtYXBwbGVfaW5zdGFuY2VfaW5pdCwKK307CisKK3N0YXRpYyB2 b2lkIG1hY2h2bWFwcGxlX21hY2hpbmVfaW5pdCh2b2lkKQoreworICAgIHR5cGVfcmVnaXN0ZXJf c3RhdGljKCZ2bWFwcGxlX21hY2hpbmVfaW5mbyk7Cit9Cit0eXBlX2luaXQobWFjaHZtYXBwbGVf bWFjaGluZV9pbml0KTsKKworc3RhdGljIHZvaWQgdm1hcHBsZV9tYWNoaW5lXzhfMV9vcHRpb25z KE1hY2hpbmVDbGFzcyAqbWMpCit7Cit9CitERUZJTkVfVk1BUFBMRV9NQUNISU5FX0FTX0xBVEVT VCg4LCAxKQorCmRpZmYgLS1naXQgYS9ody92bWFwcGxlL0tjb25maWcgYi9ody92bWFwcGxlL0tj b25maWcKaW5kZXggZjA2ZWFlODAzOS4uOTIwYjU5MDU2MSAxMDA2NDQKLS0tIGEvaHcvdm1hcHBs ZS9LY29uZmlnCisrKyBiL2h3L3ZtYXBwbGUvS2NvbmZpZwpAQCAtMTIsMyArMTIsMjIgQEAgY29u ZmlnIFZNQVBQTEVfUFZHCiAKIGNvbmZpZyBWTUFQUExFX1ZJUlRJT19CTEsKICAgICBib29sCisK K2NvbmZpZyBWTUFQUExFCisgICAgYm9vbAorICAgIGRlcGVuZHMgb24gQVJNICYmIEhWRgorICAg IGRlZmF1bHQgeSBpZiBBUk0gJiYgSFZGCisgICAgaW1wbHkgUENJX0RFVklDRVMKKyAgICBzZWxl Y3QgQVJNX0dJQworICAgIHNlbGVjdCBQTEFURk9STV9CVVMKKyAgICBzZWxlY3QgUENJX0VYUFJF U1MKKyAgICBzZWxlY3QgUENJX0VYUFJFU1NfR0VORVJJQ19CUklER0UKKyAgICBzZWxlY3QgUEww MTEgIyBVQVJUCisgICAgc2VsZWN0IFBMMDMxICMgUlRDCisgICAgc2VsZWN0IFBMMDYxICMgR1BJ TworICAgIHNlbGVjdCBHUElPX1BXUgorICAgIHNlbGVjdCBQVlBBTklDX01NSU8KKyAgICBzZWxl Y3QgVk1BUFBMRV9BRVMKKyAgICBzZWxlY3QgVk1BUFBMRV9CRElGCisgICAgc2VsZWN0IFZNQVBQ TEVfQ0ZHCisgICAgc2VsZWN0IFZNQVBQTEVfUFZHCmRpZmYgLS1naXQgYS9ody92bWFwcGxlL21l c29uLmJ1aWxkIGIvaHcvdm1hcHBsZS9tZXNvbi5idWlsZAppbmRleCAzYjRhMTZmNjE5Li40NTIw MWNiZGU1IDEwMDY0NAotLS0gYS9ody92bWFwcGxlL21lc29uLmJ1aWxkCisrKyBiL2h3L3ZtYXBw bGUvbWVzb24uYnVpbGQKQEAgLTMsMyArMyw0IEBAIHN5c3RlbV9zcy5hZGQod2hlbjogJ0NPTkZJ R19WTUFQUExFX0JESUYnLCBpZl90cnVlOiBmaWxlcygnYmRpZi5jJykpCiBzeXN0ZW1fc3MuYWRk KHdoZW46ICdDT05GSUdfVk1BUFBMRV9DRkcnLCAgaWZfdHJ1ZTogZmlsZXMoJ2NmZy5jJykpCiBz eXN0ZW1fc3MuYWRkKHdoZW46ICdDT05GSUdfVk1BUFBMRV9QVkcnLCAgaWZfdHJ1ZTogW2ZpbGVz KCdhcHBsZS1nZngubScpLCBwdmcsIG1ldGFsXSkKIHN5c3RlbV9zcy5hZGQod2hlbjogJ0NPTkZJ R19WTUFQUExFX1ZJUlRJT19CTEsnLCAgaWZfdHJ1ZTogZmlsZXMoJ3ZpcnRpby1ibGsuYycpKQor c3BlY2lmaWNfc3MuYWRkKHdoZW46ICdDT05GSUdfVk1BUFBMRScsICAgICBpZl90cnVlOiBmaWxl cygndm1hcHBsZS5jJykpCi0tIAoyLjM5LjIgKEFwcGxlIEdpdC0xNDMpCgoKCgpBbWF6b24gRGV2 ZWxvcG1lbnQgQ2VudGVyIEdlcm1hbnkgR21iSApLcmF1c2Vuc3RyLiAzOAoxMDExNyBCZXJsaW4K R2VzY2hhZWZ0c2Z1ZWhydW5nOiBDaHJpc3RpYW4gU2NobGFlZ2VyLCBKb25hdGhhbiBXZWlzcwpF aW5nZXRyYWdlbiBhbSBBbXRzZ2VyaWNodCBDaGFybG90dGVuYnVyZyB1bnRlciBIUkIgMTQ5MTcz IEIKU2l0ejogQmVybGluClVzdC1JRDogREUgMjg5IDIzNyA4NzkKCgo=