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 X-Spam-Level: X-Spam-Status: No, score=-11.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 1089CC433E3 for ; Tue, 14 Jul 2020 06:57:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 D9DDF221ED for ; Tue, 14 Jul 2020 06:57:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="hBpeOCRq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D9DDF221ED Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CC9066E8D9; Tue, 14 Jul 2020 06:57:01 +0000 (UTC) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2041.outbound.protection.outlook.com [40.107.92.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5E4976E8D3; Tue, 14 Jul 2020 06:57:00 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gkY5fancl1WyBBFWIhfQd4s2kNfdqV7DRg9pXg7rbIt98KeoF2ys9R8ilUWMCntqJLn2jYvaspLQuK6vh+0eTH1muKydje+lM2mp+QtznNyC8uN2FtNdF7DWyMNHpWEuv6N9jqcetVHX13hAzjzaDUF9VHU2OgEuqGfQqdTzBTfqkMvxj7LlqAL2Qucs84gNM4CbPNWy6qu/2mKCKqmkWKpq154nXzvTBguvjd0oWvCXtASSlqxvV0pPCqi/nAzs7+WA84HfSb9dstWckRMuucRoGqoSOA3GLEJ/AVIsNWhKVkxkdsgGC1pVPz+dBDQQ5vrLgl7oz3BmIPIjUfr10A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qpBnSPfiRBiDlb/PUmWku9a3hPU3X/Y5IXkoSA14fCQ=; b=H/FlPkw9MUgkT2kxLbANM0Pv4MleSQeE5fdHETPW2yaySSnJuLWj7oDPNoUfGGmyB5bUSwjVqCpZKWF5egY5f9jXN9MBV51VOLqYtcY+wKCCYkdMCqG3piTn89Zp/hCcrhA5BMWzEVP5F33TUA58/M25rDF2G6kIc8rlxK5h7S9x7Mvmj0etwssBCb/uV4DcafBeJFlhVMIDu7Izb1NHm2I+n/A8ez8V9o/C+OQ6QLflQ3gp6Zaqwa1XMqJo3inWTsWgsV4pPgPjdH5Sounubp09k4vaJilCzf6ghJVAVC7YbkRUK08o9BrScx/tARUn0XIDmAnNZvaMIRvXw+5/dQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qpBnSPfiRBiDlb/PUmWku9a3hPU3X/Y5IXkoSA14fCQ=; b=hBpeOCRqWgdGmZWc8nU3Ardel7e+AFoU5rtUYvRHc3WxaZIunkHBku9ti7CYrs+TL7XF1aNyKC9AtjcT9EiOblqSrpfhEtURekVzLklE3ibQR+nx3C6ty7ekGluzqGn5otuwYUjGiSXSYObVOeJAnZ8WGMgtF0nM6nQCK2moaBQ= Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=amd.com; Received: from DM5PR12MB2407.namprd12.prod.outlook.com (2603:10b6:4:b4::24) by DM5PR1201MB0153.namprd12.prod.outlook.com (2603:10b6:4:57::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.21; Tue, 14 Jul 2020 06:56:57 +0000 Received: from DM5PR12MB2407.namprd12.prod.outlook.com ([fe80::9c20:aa3e:1b50:7ce5]) by DM5PR12MB2407.namprd12.prod.outlook.com ([fe80::9c20:aa3e:1b50:7ce5%4]) with mapi id 15.20.3174.026; Tue, 14 Jul 2020 06:56:57 +0000 Subject: Re: [PATCH 1/1] drm/amdkfd: Add IPC API To: "Li, Dennis" , "amd-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" References: <20200714031435.13362-1-Felix.Kuehling@amd.com> <20200714031435.13362-2-Felix.Kuehling@amd.com> From: Felix Kuehling Message-ID: <34b60e89-9dae-e3ec-c28e-bb1d42670eb2@amd.com> Date: Tue, 14 Jul 2020 02:56:55 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 In-Reply-To: Content-Language: en-US X-ClientProxiedBy: YQBPR0101CA0029.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00::42) To DM5PR12MB2407.namprd12.prod.outlook.com (2603:10b6:4:b4::24) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.2.100] (142.117.53.25) by YQBPR0101CA0029.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.21 via Frontend Transport; Tue, 14 Jul 2020 06:56:56 +0000 X-Originating-IP: [142.117.53.25] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ca160eec-ae2e-42b0-ae54-08d827c31940 X-MS-TrafficTypeDiagnostic: DM5PR1201MB0153: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DqoqKryzF6MUVLZ8PJX+28Mj5FwYVvRtfEZrh+PYdmOyv99mBAsJ9UgpZJKqTJ8hk3LGE8msXosxlce+nsRUeX0ycWSJz53iE80VC/1nrsbNZ2wqdQakQMRtgdgI9RwVuiJs/H/YxMC4qBJ57TWqrV5z4TDVYtBeTVkde34yDBbLwyiTvCc8U9ucNWYlg9V3/85qqQfH6UlQlzxF3pYYGX/uveImELXNcGiPV2gPpjOEMKHVDpqrJfylRsvDGlY0AxKIvfWHsl48cP9Zrg03MQNW6tkWuzecPHUSgktW+mBIS/yvu79iD2gddgk+Rq7zw3nP57AnLyN4QvDJnXXIjmyyvlprXh1EMxxIITxqAbM3wP4C0qa33sYgcR+eZBYWwE1WrqQ43ZOwEfavff9470ye7ENPmm69mS1VQjc9zy0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM5PR12MB2407.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(136003)(39860400002)(376002)(366004)(346002)(396003)(2616005)(31696002)(956004)(2906002)(30864003)(110136005)(478600001)(316002)(66556008)(5660300002)(83380400001)(66476007)(66946007)(86362001)(54906003)(16576012)(4326008)(26005)(8676002)(8936002)(186003)(16526019)(44832011)(31686004)(36756003)(53546011)(52116002)(6486002)(966005)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: ijMu9Gw3OQBBUq90jTayRZETxv1qWY/9Dh/7IRfHx0oNL6yYXWCi70PFvQU+a6iB0RJXjWK628zKZ0fdFBhWaJa2JSnjvL9jQlpOSSY24QrXC2CDLMBGfOL+398KMspyquZBNncU67mtCaYiktrjksv/wfdQdylRHwAQlkDoy0cCuhZ9jEJZg9GWObJFLKXVlJ2cOqrrobX/IVyH6wj0Sh6K2SQEiVbEXX0fFlGhdfIeGHItU3HCxCS/hKprnnH52vP+XPtODjltxlsOfrT2XNrtNSDNuYnQT8Dddc2fxzYSZmfylfEjXkCAPI08bxPv9LtbkN9E12572O3DIJhj5asHjYMzHPO4lyCh/FUAQXll3l+UtZ9FwQWKRDQOkhx1pMW152cU/0D2MeUF2/161RqL0g84CSW/2sPMkYWOMdDA/+jBQoUCLLR3EQd5Nb5K+cIqbDwSv+Whx2zKsImAy3e1upQkrTdAvCcmwQz1xiskNB830181lc36Y9HO82E2 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: ca160eec-ae2e-42b0-ae54-08d827c31940 X-MS-Exchange-CrossTenant-AuthSource: DM5PR12MB2407.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2020 06:56:57.1438 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mG7fG6vkuF3vVq4JcdUF/fi7/JB45jqqTOrm7QDiugvIZQMKJ9kvEhBbfzhFWFduv+XrOyE6hWE2hhm3eiGkyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1201MB0153 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Deucher, Alexander" , "daniel.vetter@ffwll.ch" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QW0gMjAyMC0wNy0xNCB1bSAxOjA1IGEubS4gc2NocmllYiBMaSwgRGVubmlzOgo+IFtBTUQgT2Zm aWNpYWwgVXNlIE9ubHkgLSBJbnRlcm5hbCBEaXN0cmlidXRpb24gT25seV0KPgo+IEhpLCBGZWxp eCwKPiAgICAgICBhbWRncHVfZ2VtX3ByaW1lX2V4cG9ydCBoYXMgZGlmZmVyZW50IGRlZmluZSBp biB0aGUgb2xkIGRyaXZlci4gSSBhZGRlZCBzb21lIGNvbW1lbnQgaW4gdGhlIGJlbG93IGNvZGVz LiAKPgo+IEJlc3QgUmVnYXJkcwo+IERlbm5pcyBMaQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tCj4gRnJvbTogYW1kLWdmeCA8YW1kLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zz4gT24gQmVoYWxmIE9mIEZlbGl4IEt1ZWhsaW5nCj4gU2VudDogVHVlc2RheSwgSnVseSAxNCwg MjAyMCAxMToxNSBBTQo+IFRvOiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IENjOiBEZXVjaGVyLCBBbGV4YW5kZXIgPEFsZXhh bmRlci5EZXVjaGVyQGFtZC5jb20+OyBkYW5pZWwudmV0dGVyQGZmd2xsLmNoOyBhaXJsaWVkQGdt YWlsLmNvbQo+IFN1YmplY3Q6IFtQQVRDSCAxLzFdIGRybS9hbWRrZmQ6IEFkZCBJUEMgQVBJCj4K PiBUaGlzIGFsbG93cyBleHBvcnRpbmcgYW5kIGltcG9ydGluZyBidWZmZXJzLiBUaGUgQVBJIGdl bmVyYXRlcyBoYW5kbGVzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgSElQIElQQyBBUEksIGku ZS4gYmlnIG51bWJlcnMgcmF0aGVyIHRoYW4gZmlsZSBkZXNjcmlwdG9ycy4KPgo+IFNpZ25lZC1v ZmYtYnk6IEZlbGl4IEt1ZWhsaW5nIDxGZWxpeC5LdWVobGluZ0BhbWQuY29tPgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmggICAgfCAgIDUgKwo+ICAu Li4vZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyAgfCAgNTYgKysrLQo+ ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9NYWtlZmlsZSAgICAgICAgICAgfCAgIDMgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYyAgICAgIHwgIDc0ICsr LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9pcGMuYyAgICAgICAgICB8IDI2 MyArKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2lw Yy5oICAgICAgICAgIHwgIDU1ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X21vZHVsZS5jICAgICAgIHwgICA1ICsKPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X3ByaXYuaCAgICAgICAgIHwgICA1ICsKPiAgaW5jbHVkZS91YXBpL2xpbnV4L2tmZF9pb2N0bC5o ICAgICAgICAgICAgICAgIHwgIDYyICsrKystCj4gIDkgZmlsZXMgY2hhbmdlZCwgNDg4IGluc2Vy dGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKSAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9pcGMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2lwYy5oCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2FtZGtmZC5oCj4gaW5kZXggM2YyYjY5NWNmMTllLi4wZjhkYzRjNGY5MjQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oCj4gQEAgLTQ5 LDYgKzQ5LDcgQEAgc3RydWN0IGtmZF9ib192YV9saXN0IHsgIHN0cnVjdCBrZ2RfbWVtIHsKPiAg CXN0cnVjdCBtdXRleCBsb2NrOwo+ICAJc3RydWN0IGFtZGdwdV9ibyAqYm87Cj4gKwlzdHJ1Y3Qg a2ZkX2lwY19vYmogKmlwY19vYmo7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGJvX3ZhX2xpc3Q7Cj4g IAkvKiBwcm90ZWN0ZWQgYnkgYW1ka2ZkX3Byb2Nlc3NfaW5mby5sb2NrICovCj4gIAlzdHJ1Y3Qg dHRtX3ZhbGlkYXRlX2J1ZmZlciB2YWxpZGF0ZV9saXN0OyBAQCAtMjQwLDkgKzI0MSwxMyBAQCBp bnQgYW1kZ3B1X2FtZGtmZF9ncHV2bV9nZXRfdm1fZmF1bHRfaW5mbyhzdHJ1Y3Qga2dkX2RldiAq a2dkLAo+ICAKPiAgaW50IGFtZGdwdV9hbWRrZmRfZ3B1dm1faW1wb3J0X2RtYWJ1ZihzdHJ1Y3Qg a2dkX2RldiAqa2dkLAo+ICAJCQkJICAgICAgc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiArCQkJ CSAgICAgIHN0cnVjdCBrZmRfaXBjX29iaiAqaXBjX29iaiwKPiAgCQkJCSAgICAgIHVpbnQ2NF90 IHZhLCB2b2lkICp2bSwKPiAgCQkJCSAgICAgIHN0cnVjdCBrZ2RfbWVtICoqbWVtLCB1aW50NjRf dCAqc2l6ZSwKPiAgCQkJCSAgICAgIHVpbnQ2NF90ICptbWFwX29mZnNldCk7Cj4gK2ludCBhbWRn cHVfYW1ka2ZkX2dwdXZtX2V4cG9ydF9pcGNfb2JqKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQg KnZtLAo+ICsJCQkJICAgICAgIHN0cnVjdCBrZ2RfbWVtICptZW0sCj4gKwkJCQkgICAgICAgc3Ry dWN0IGtmZF9pcGNfb2JqICoqaXBjX29iaik7Cj4gIAo+ICB2b2lkIGFtZGdwdV9hbWRrZmRfZ3B1 dm1faW5pdF9tZW1fbGltaXRzKHZvaWQpOwo+ICB2b2lkIGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZl X21lbW9yeV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMKPiBpbmRleCBjNDA4OTM2ZThmOTgu LmNkNWYyM2MwYzJjYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYW1ka2ZkX2dwdXZtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYW1ka2ZkX2dwdXZtLmMKPiBAQCAtMjksNiArMjksNyBAQAo+ICAjaW5jbHVkZSAiYW1k Z3B1X3ZtLmgiCj4gICNpbmNsdWRlICJhbWRncHVfYW1ka2ZkLmgiCj4gICNpbmNsdWRlICJhbWRn cHVfZG1hX2J1Zi5oIgo+ICsjaW5jbHVkZSAia2ZkX2lwYy5oIgo+ICAjaW5jbHVkZSA8dWFwaS9s aW51eC9rZmRfaW9jdGwuaD4KPiAgCj4gIC8qIEJPIGZsYWcgdG8gaW5kaWNhdGUgYSBLRkQgdXNl cnB0ciBCTyAqLyBAQCAtMTM1Myw2ICsxMzU0LDkgQEAgaW50IGFtZGdwdV9hbWRrZmRfZ3B1dm1f ZnJlZV9tZW1vcnlfb2ZfZ3B1KAo+ICAJCQkqc2l6ZSA9IDA7Cj4gIAl9Cj4gIAo+ICsJLyogVW5y ZWZlcmVuY2UgdGhlIGlwY19vYmogaWYgYXBwbGljYWJsZSAqLwo+ICsJa2ZkX2lwY19vYmpfcHV0 KCZtZW0tPmlwY19vYmopOwo+ICsKPiAgCS8qIEZyZWUgdGhlIEJPKi8KPiAgCWRybV9nZW1fb2Jq ZWN0X3B1dF91bmxvY2tlZCgmbWVtLT5iby0+dGJvLmJhc2UpOwo+ICAJbXV0ZXhfZGVzdHJveSgm bWVtLT5sb2NrKTsKPiBAQCAtMTY1Niw2ICsxNjYwLDcgQEAgaW50IGFtZGdwdV9hbWRrZmRfZ3B1 dm1fZ2V0X3ZtX2ZhdWx0X2luZm8oc3RydWN0IGtnZF9kZXYgKmtnZCwKPiAgCj4gIGludCBhbWRn cHVfYW1ka2ZkX2dwdXZtX2ltcG9ydF9kbWFidWYoc3RydWN0IGtnZF9kZXYgKmtnZCwKPiAgCQkJ CSAgICAgIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ICsJCQkJICAgICAgc3RydWN0IGtmZF9p cGNfb2JqICppcGNfb2JqLAo+ICAJCQkJICAgICAgdWludDY0X3QgdmEsIHZvaWQgKnZtLAo+ICAJ CQkJICAgICAgc3RydWN0IGtnZF9tZW0gKiptZW0sIHVpbnQ2NF90ICpzaXplLAo+ICAJCQkJICAg ICAgdWludDY0X3QgKm1tYXBfb2Zmc2V0KQo+IEBAIC0xNjkyLDE1ICsxNjk3LDE4IEBAIGludCBh bWRncHVfYW1ka2ZkX2dwdXZtX2ltcG9ydF9kbWFidWYoc3RydWN0IGtnZF9kZXYgKmtnZCwKPiAg Cj4gIAlJTklUX0xJU1RfSEVBRCgmKCptZW0pLT5ib192YV9saXN0KTsKPiAgCW11dGV4X2luaXQo JigqbWVtKS0+bG9jayk7Cj4gLQkKPiAtCSgqbWVtKS0+YWxsb2NfZmxhZ3MgPQo+IC0JCSgoYm8t PnByZWZlcnJlZF9kb21haW5zICYgQU1ER1BVX0dFTV9ET01BSU5fVlJBTSkgPwo+IC0JCUtGRF9J T0NfQUxMT0NfTUVNX0ZMQUdTX1ZSQU0gOiBLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19HVFQpCj4g LQkJfCBLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19XUklUQUJMRQo+IC0JCXwgS0ZEX0lPQ19BTExP Q19NRU1fRkxBR1NfRVhFQ1VUQUJMRTsKPiArCWlmIChiby0+a2ZkX2JvKQo+ICsJCSgqbWVtKS0+ YWxsb2NfZmxhZ3MgPSBiby0+a2ZkX2JvLT5hbGxvY19mbGFnczsKPiArCWVsc2UKPiArCQkoKm1l bSktPmFsbG9jX2ZsYWdzID0KPiArCQkJKChiby0+cHJlZmVycmVkX2RvbWFpbnMgJiBBTURHUFVf R0VNX0RPTUFJTl9WUkFNKSA/Cj4gKwkJCUtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1ZSQU0gOiBL RkRfSU9DX0FMTE9DX01FTV9GTEFHU19HVFQpCj4gKwkJCXwgS0ZEX0lPQ19BTExPQ19NRU1fRkxB R1NfV1JJVEFCTEUKPiArCQkJfCBLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19FWEVDVVRBQkxFOwo+ ICAKPiAgCWRybV9nZW1fb2JqZWN0X2dldCgmYm8tPnRiby5iYXNlKTsKPiAgCSgqbWVtKS0+Ym8g PSBibzsKPiArCSgqbWVtKS0+aXBjX29iaiA9IGlwY19vYmo7Cj4gIAkoKm1lbSktPnZhID0gdmE7 Cj4gIAkoKm1lbSktPmRvbWFpbiA9IChiby0+cHJlZmVycmVkX2RvbWFpbnMgJiBBTURHUFVfR0VN X0RPTUFJTl9WUkFNKSA/Cj4gIAkJQU1ER1BVX0dFTV9ET01BSU5fVlJBTSA6IEFNREdQVV9HRU1f RE9NQUlOX0dUVDsgQEAgLTE3MTMsNiArMTcyMSw0MiBAQCBpbnQgYW1kZ3B1X2FtZGtmZF9ncHV2 bV9pbXBvcnRfZG1hYnVmKHN0cnVjdCBrZ2RfZGV2ICprZ2QsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ ICAKPiAraW50IGFtZGdwdV9hbWRrZmRfZ3B1dm1fZXhwb3J0X2lwY19vYmooc3RydWN0IGtnZF9k ZXYgKmtnZCwgdm9pZCAqdm0sCj4gKwkJCQkgICAgICAgc3RydWN0IGtnZF9tZW0gKm1lbSwKPiAr CQkJCSAgICAgICBzdHJ1Y3Qga2ZkX2lwY19vYmogKippcGNfb2JqKSB7Cj4gKwlzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiA9IE5VTEw7Cj4gKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+ICsJ aW50IHIgPSAwOwo+ICsKPiArCWlmICgha2dkIHx8ICF2bSB8fCAhbWVtKQo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsKPiArCWFkZXYgPSBnZXRfYW1kZ3B1X2RldmljZShrZ2QpOwo+ICsJbXV0ZXhf bG9jaygmbWVtLT5sb2NrKTsKPiArCj4gKwlpZiAobWVtLT5pcGNfb2JqKSB7Cj4gKwkJKmlwY19v YmogPSBtZW0tPmlwY19vYmo7Cj4gKwkJZ290byB1bmxvY2tfb3V0Owo+ICsJfQo+ICsKPiArCWRt YWJ1ZiA9IGFtZGdwdV9nZW1fcHJpbWVfZXhwb3J0KCZtZW0tPmJvLT50Ym8uYmFzZSwgMCk7Cj4K PiBbRGVubmlzIExpXSBJdCBtYXkgYmUgY2hhbmdlZCBhcyB0aGUgZm9sbG93aW5nIHRvIG1ha2Ug c3VyZSBpdCBhbHNvIHdvcmsgd2VsbCBpbiBvbGQga2VybmVsLiAKPiAjaWZkZWYgSEFWRV9EUk1f RFJWX0dFTV9QUklNRV9FWFBPUlRfUEkKPiAJZG1hYnVmID0gYW1kZ3B1X2dlbV9wcmltZV9leHBv cnQoJm1lbS0+Ym8tPnRiby5iYXNlLCAwKTsKPiAjZWxzZQo+IAlkbWFidWYgPSBhbWRncHVfZ2Vt X3ByaW1lX2V4cG9ydChhZGV2LT5kZGV2ICwgJm1lbS0+Ym8tPnRiby5iYXNlLCAwKTsKPiAjZW5k aWYKCkkga25vdywgdGhpcyBpcyB3aGF0IHRoaXMgY29kZSBsb29rcyBsaWtlIG9uIHRoZSBES01T IGJyYW5jaCB0aGF0IG5lZWRzCnRvIGJ1aWxkIGFnYWluc3Qgb2xkIGtlcm5lbCB2ZXJzaW9ucy4g QnV0IHRoaXMgY2hhbmdlIGlzIG1lYW50IGZvcgp1cHN0cmVhbS4gSXQgZG9lc24ndCBuZWVkIHRv IHdvcmsgd2l0aCBvbGQga2VybmVscywgb25seSB3aXRoIHRoZQpjdXJyZW50IG9uZS4KClJlZ2Fy ZHMsCsKgIEZlbGl4CgoKPgo+ICsJaWYgKElTX0VSUihkbWFidWYpKSB7Cj4gKwkJciA9IFBUUl9F UlIoZG1hYnVmKTsKPiArCQlnb3RvIHVubG9ja19vdXQ7Cj4gKwl9Cj4gKwo+ICsJciA9IGtmZF9p cGNfc3RvcmVfaW5zZXJ0KGRtYWJ1ZiwgJm1lbS0+aXBjX29iaik7Cj4gKwlpZiAocikKPiArCQlk bWFfYnVmX3B1dChkbWFidWYpOwo+ICsJZWxzZQo+ICsJCSppcGNfb2JqID0gbWVtLT5pcGNfb2Jq Owo+ICsKPiArdW5sb2NrX291dDoKPiArCW11dGV4X3VubG9jaygmbWVtLT5sb2NrKTsKPiArCXJl dHVybiByOwo+ICt9Cj4gKwo+ICAvKiBFdmljdCBhIHVzZXJwdHIgQk8gYnkgc3RvcHBpbmcgdGhl IHF1ZXVlcyBpZiBuZWNlc3NhcnkKPiAgICoKPiAgICogUnVucyBpbiBNTVUgbm90aWZpZXIsIG1h eSBiZSBpbiBSRUNMQUlNX0ZTIGNvbnRleHQuIFRoaXMgbWVhbnMgaXQgZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQvTWFrZWZpbGUKPiBpbmRleCBlMWU0MTE1ZGNmNzguLjgxNWQ5YTllN2EzYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL01ha2VmaWxlCj4gQEAgLTU0LDcgKzU0LDggQEAgQU1ES0ZE X0ZJTEVTCTo9ICQoQU1ES0ZEX1BBVEgpL2tmZF9tb2R1bGUubyBcCj4gIAkJJChBTURLRkRfUEFU SCkva2ZkX2RiZ2Rldi5vIFwKPiAgCQkkKEFNREtGRF9QQVRIKS9rZmRfZGJnbWdyLm8gXAo+ICAJ CSQoQU1ES0ZEX1BBVEgpL2tmZF9zbWlfZXZlbnRzLm8gXAo+IC0JCSQoQU1ES0ZEX1BBVEgpL2tm ZF9jcmF0Lm8KPiArCQkkKEFNREtGRF9QQVRIKS9rZmRfY3JhdC5vIFwKPiArCQkkKEFNREtGRF9Q QVRIKS9rZmRfaXBjLm8KPiAgCj4gIGlmbmVxICgkKENPTkZJR19BTURfSU9NTVVfVjIpLCkKPiAg QU1ES0ZEX0ZJTEVTICs9ICQoQU1ES0ZEX1BBVEgpL2tmZF9pb21tdS5vIGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYwo+IGluZGV4IGU5Yjk2YWQzZDlhNS4uZTdkMTVmYTAy YjVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jCj4gQEAg LTM4LDYgKzM4LDcgQEAKPiAgI2luY2x1ZGUgImtmZF9wcml2LmgiCj4gICNpbmNsdWRlICJrZmRf ZGV2aWNlX3F1ZXVlX21hbmFnZXIuaCIKPiAgI2luY2x1ZGUgImtmZF9kYmdtZ3IuaCIKPiArI2lu Y2x1ZGUgImtmZF9pcGMuaCIKPiAgI2luY2x1ZGUgImFtZGdwdV9hbWRrZmQuaCIKPiAgI2luY2x1 ZGUgImtmZF9zbWlfZXZlbnRzLmgiCj4gIAo+IEBAIC0xNjkxLDUzICsxNjkyLDU4IEBAIHN0YXRp YyBpbnQga2ZkX2lvY3RsX2ltcG9ydF9kbWFidWYoc3RydWN0IGZpbGUgKmZpbGVwLAo+ICAJCQkJ ICAgc3RydWN0IGtmZF9wcm9jZXNzICpwLCB2b2lkICpkYXRhKSAgewo+ICAJc3RydWN0IGtmZF9p b2N0bF9pbXBvcnRfZG1hYnVmX2FyZ3MgKmFyZ3MgPSBkYXRhOwo+IC0Jc3RydWN0IGtmZF9wcm9j ZXNzX2RldmljZSAqcGRkOwo+IC0Jc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsKPiAgCXN0cnVjdCBr ZmRfZGV2ICpkZXY7Cj4gLQlpbnQgaWRyX2hhbmRsZTsKPiAtCXVpbnQ2NF90IHNpemU7Cj4gLQl2 b2lkICptZW07Cj4gIAlpbnQgcjsKPiAgCj4gIAlkZXYgPSBrZmRfZGV2aWNlX2J5X2lkKGFyZ3Mt PmdwdV9pZCk7Cj4gIAlpZiAoIWRldikKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQlkbWFi dWYgPSBkbWFfYnVmX2dldChhcmdzLT5kbWFidWZfZmQpOwo+IC0JaWYgKElTX0VSUihkbWFidWYp KQo+IC0JCXJldHVybiBQVFJfRVJSKGRtYWJ1Zik7Cj4gKwlyID0ga2ZkX2lwY19pbXBvcnRfZG1h YnVmKGRldiwgcCwgYXJncy0+ZG1hYnVmX2ZkLAo+ICsJCQkJICBhcmdzLT52YV9hZGRyLCAmYXJn cy0+aGFuZGxlLCBOVUxMKTsKPiArCWlmIChyKQo+ICsJCXByX2VycigiRmFpbGVkIHRvIGltcG9y dCBkbWFidWZcbiIpOwo+ICAKPiAtCW11dGV4X2xvY2soJnAtPm11dGV4KTsKPiArCXJldHVybiBy Owo+ICt9Cj4gIAo+IC0JcGRkID0ga2ZkX2JpbmRfcHJvY2Vzc190b19kZXZpY2UoZGV2LCBwKTsK PiAtCWlmIChJU19FUlIocGRkKSkgewo+IC0JCXIgPSBQVFJfRVJSKHBkZCk7Cj4gLQkJZ290byBl cnJfdW5sb2NrOwo+IC0JfQo+ICtzdGF0aWMgaW50IGtmZF9pb2N0bF9pcGNfZXhwb3J0X2hhbmRs ZShzdHJ1Y3QgZmlsZSAqZmlsZXAsCj4gKwkJCQkgICAgICAgc3RydWN0IGtmZF9wcm9jZXNzICpw LAo+ICsJCQkJICAgICAgIHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBrZmRfaW9jdGxfaXBj X2V4cG9ydF9oYW5kbGVfYXJncyAqYXJncyA9IGRhdGE7Cj4gKwlzdHJ1Y3Qga2ZkX2RldiAqZGV2 Owo+ICsJaW50IHI7Cj4gKwo+ICsJZGV2ID0ga2ZkX2RldmljZV9ieV9pZChhcmdzLT5ncHVfaWQp Owo+ICsJaWYgKCFkZXYpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JciA9IGFtZGdwdV9h bWRrZmRfZ3B1dm1faW1wb3J0X2RtYWJ1ZihkZXYtPmtnZCwgZG1hYnVmLAo+IC0JCQkJCSAgICAg IGFyZ3MtPnZhX2FkZHIsIHBkZC0+dm0sCj4gLQkJCQkJICAgICAgKHN0cnVjdCBrZ2RfbWVtICoq KSZtZW0sICZzaXplLAo+IC0JCQkJCSAgICAgIE5VTEwpOwo+ICsJciA9IGtmZF9pcGNfZXhwb3J0 X2FzX2hhbmRsZShkZXYsIHAsIGFyZ3MtPmhhbmRsZSwgCj4gK2FyZ3MtPnNoYXJlX2hhbmRsZSk7 Cj4gIAlpZiAocikKPiAtCQlnb3RvIGVycl91bmxvY2s7Cj4gKwkJcHJfZXJyKCJGYWlsZWQgdG8g ZXhwb3J0IElQQyBoYW5kbGVcbiIpOwo+ICAKPiAtCWlkcl9oYW5kbGUgPSBrZmRfcHJvY2Vzc19k ZXZpY2VfY3JlYXRlX29ial9oYW5kbGUocGRkLCBtZW0pOwo+IC0JaWYgKGlkcl9oYW5kbGUgPCAw KSB7Cj4gLQkJciA9IC1FRkFVTFQ7Cj4gLQkJZ290byBlcnJfZnJlZTsKPiAtCX0KPiArCXJldHVy biByOwo+ICt9Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZwLT5tdXRleCk7Cj4gK3N0YXRpYyBpbnQg a2ZkX2lvY3RsX2lwY19pbXBvcnRfaGFuZGxlKHN0cnVjdCBmaWxlICpmaWxlcCwKPiArCQkJCSAg ICAgICBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsCj4gKwkJCQkgICAgICAgdm9pZCAqZGF0YSkKPiAr ewo+ICsJc3RydWN0IGtmZF9pb2N0bF9pcGNfaW1wb3J0X2hhbmRsZV9hcmdzICphcmdzID0gZGF0 YTsKPiArCXN0cnVjdCBrZmRfZGV2ICpkZXYgPSBOVUxMOwo+ICsJaW50IHI7Cj4gIAo+IC0JYXJn cy0+aGFuZGxlID0gTUFLRV9IQU5ETEUoYXJncy0+Z3B1X2lkLCBpZHJfaGFuZGxlKTsKPiArCWRl diA9IGtmZF9kZXZpY2VfYnlfaWQoYXJncy0+Z3B1X2lkKTsKPiArCWlmICghZGV2KQo+ICsJCXJl dHVybiAtRUlOVkFMOwo+ICAKPiAtCXJldHVybiAwOwo+ICsJciA9IGtmZF9pcGNfaW1wb3J0X2hh bmRsZShwLCBhcmdzLT5zaGFyZV9oYW5kbGUsIGFyZ3MtPnZhX2FkZHIsCj4gKwkJCQkgICZhcmdz LT5oYW5kbGUsICZhcmdzLT5ncHVfaWQsCj4gKwkJCQkgICZhcmdzLT5tbWFwX29mZnNldCk7Cj4g KwlpZiAocikKPiArCQlwcl9lcnIoIkZhaWxlZCB0byBpbXBvcnQgSVBDIGhhbmRsZVxuIik7Cj4g IAo+IC1lcnJfZnJlZToKPiAtCWFtZGdwdV9hbWRrZmRfZ3B1dm1fZnJlZV9tZW1vcnlfb2ZfZ3B1 KGRldi0+a2dkLCAoc3RydWN0IGtnZF9tZW0gKiltZW0sIE5VTEwpOwo+IC1lcnJfdW5sb2NrOgo+ IC0JbXV0ZXhfdW5sb2NrKCZwLT5tdXRleCk7Cj4gIAlyZXR1cm4gcjsKPiAgfQo+ICAKPiBAQCAt MTg1Myw2ICsxODU5LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1ka2ZkX2lvY3RsX2Rlc2Mg YW1ka2ZkX2lvY3Rsc1tdID0gewo+ICAKPiAgCUFNREtGRF9JT0NUTF9ERUYoQU1ES0ZEX0lPQ19T TUlfRVZFTlRTLAo+ICAJCQlrZmRfaW9jdGxfc21pX2V2ZW50cywgMCksCj4gKwo+ICsJQU1ES0ZE X0lPQ1RMX0RFRihBTURLRkRfSU9DX0lQQ19JTVBPUlRfSEFORExFLAo+ICsJCQkJa2ZkX2lvY3Rs X2lwY19pbXBvcnRfaGFuZGxlLCAwKSwKPiArCj4gKwlBTURLRkRfSU9DVExfREVGKEFNREtGRF9J T0NfSVBDX0VYUE9SVF9IQU5ETEUsCj4gKwkJCQlrZmRfaW9jdGxfaXBjX2V4cG9ydF9oYW5kbGUs IDApLAo+ICB9Owo+ICAKPiAgI2RlZmluZSBBTURLRkRfQ09SRV9JT0NUTF9DT1VOVAlBUlJBWV9T SVpFKGFtZGtmZF9pb2N0bHMpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9pcGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9pcGMuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zZGU4ZDc4MjZmMDcKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2lwYy5j Cj4gQEAgLTAsMCArMSwyNjMgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTQgQWR2YW5jZWQg TWljcm8gRGV2aWNlcywgSW5jLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiAKPiArb2J0YWluaW5nIGEKPiArICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAKPiArIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IAo+ICtsaW1pdGF0aW9uCj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCAKPiArc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gCj4gK3RoZQo+ICsgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ogo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSBzaGFsbCBiZSAKPiAraW5jbHVkZWQgaW4KPiArICogYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCAK PiArRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIAo+ICtNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCAK PiArU0hBTEwKPiArICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCAKPiArREFNQUdFUyBPUgo+ICsgKiBPVEhFUiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIAo+ICtPVEhFUldJU0Us Cj4gKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSAKPiArT1IKPiArICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRX QVJFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9yYW5kb20uaD4KPiArCj4gKyNpbmNsdWRlICJrZmRfaXBjLmgiCj4gKyNpbmNsdWRlICJr ZmRfcHJpdi5oIgo+ICsjaW5jbHVkZSAiYW1kZ3B1X2FtZGtmZC5oIgo+ICsKPiArI2RlZmluZSBL RkRfSVBDX0hBU0hfVEFCTEVfU0laRV9TSElGVCA0ICNkZWZpbmUgCj4gK0tGRF9JUENfSEFTSF9U QUJMRV9TSVpFX01BU0sgKCgxIDw8IEtGRF9JUENfSEFTSF9UQUJMRV9TSVpFX1NISUZUKSAtIDEp Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGtmZF9pcGNfaGFuZGxlcyB7Cj4gKwlERUNMQVJFX0hBU0hU QUJMRShoYW5kbGVzLCBLRkRfSVBDX0hBU0hfVEFCTEVfU0laRV9TSElGVCk7Cj4gKwlzdHJ1Y3Qg bXV0ZXggbG9jazsKPiArfSBrZmRfaXBjX2hhbmRsZXM7Cj4gKwo+ICsvKiBTaW5jZSwgaGFuZGxl cyBhcmUgcmFuZG9tIG51bWJlcnMsIGl0IGNhbiBiZSB1c2VkIGRpcmVjdGx5IGFzIGhhc2hpbmcg a2V5Lgo+ICsgKiBUaGUgbGVhc3QgNCBiaXRzIG9mIHRoZSBoYW5kbGUgYXJlIHVzZWQgYXMga2V5 LiBIb3dldmVyLCBkdXJpbmcgCj4gK2ltcG9ydCBhbGwKPiArICogMTI4IGJpdHMgb2YgdGhlIGhh bmRsZSBhcmUgY2hlY2tlZCB0byBwcmV2ZW50IGhhbmRsZSBzbm9vcGluZy4KPiArICovCj4gKyNk ZWZpbmUgSEFORExFX1RPX0tFWShzaCkgKCgqKHVpbnQ2NF90ICopc2gpICYgCj4gK0tGRF9JUENf SEFTSF9UQUJMRV9TSVpFX01BU0spCj4gKwo+ICtpbnQga2ZkX2lwY19zdG9yZV9pbnNlcnQoc3Ry dWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGtmZF9pcGNfb2JqIAo+ICsqKmlwY19vYmopIHsK PiArCXN0cnVjdCBrZmRfaXBjX29iaiAqb2JqOwo+ICsKPiArCW9iaiA9IGttYWxsb2Moc2l6ZW9m KCpvYmopLCBHRlBfS0VSTkVMKTsKPiArCWlmICghb2JqKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ ICsKPiArCS8qIFRoZSBpbml0aWFsIHJlZiBiZWxvbmdzIHRvIHRoZSBhbGxvY2F0b3IgcHJvY2Vz cy4KPiArCSAqIFRoZSBJUEMgb2JqZWN0IHN0b3JlIGl0c2VsZiBkb2VzIG5vdCBob2xkIGEgcmVm IHNpbmNlCj4gKwkgKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBtb21lbnQgaW4gdGltZSB3aGVyZSB0 aGF0IHJlZiBzaG91bGQKPiArCSAqIGJlIGRyb3BwZWQsIGV4Y2VwdCAid2hlbiB0aGVyZSBhcmUg bm8gbW9yZSB1c2Vyc3BhY2UgcHJvY2Vzc2VzCj4gKwkgKiBob2xkaW5nIGEgcmVmIHRvIHRoZSBv YmplY3QiLiBUaGVyZWZvcmUgdGhlIHJlbW92YWwgZnJvbSBJUEMKPiArCSAqIHN0b3JhZ2UgaGFw cGVucyBhdCBpcGNfb2JqIHJlbGVhc2UgdGltZS4KPiArCSAqLwo+ICsJa3JlZl9pbml0KCZvYmot PnJlZik7Cj4gKwlvYmotPmRtYWJ1ZiA9IGRtYWJ1ZjsKPiArCWdldF9yYW5kb21fYnl0ZXMob2Jq LT5zaGFyZV9oYW5kbGUsIHNpemVvZihvYmotPnNoYXJlX2hhbmRsZSkpOwo+ICsKPiArCW11dGV4 X2xvY2soJmtmZF9pcGNfaGFuZGxlcy5sb2NrKTsKPiArCWhsaXN0X2FkZF9oZWFkKCZvYmotPm5v ZGUsCj4gKwkJJmtmZF9pcGNfaGFuZGxlcy5oYW5kbGVzW0hBTkRMRV9UT19LRVkob2JqLT5zaGFy ZV9oYW5kbGUpXSk7Cj4gKwltdXRleF91bmxvY2soJmtmZF9pcGNfaGFuZGxlcy5sb2NrKTsKPiAr Cj4gKwlpZiAoaXBjX29iaikKPiArCQkqaXBjX29iaiA9IG9iajsKPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgaXBjX29ial9yZWxlYXNlKHN0cnVjdCBrcmVmICpyKSB7 Cj4gKwlzdHJ1Y3Qga2ZkX2lwY19vYmogKm9iajsKPiArCj4gKwlvYmogPSBjb250YWluZXJfb2Yo ciwgc3RydWN0IGtmZF9pcGNfb2JqLCByZWYpOwo+ICsKPiArCW11dGV4X2xvY2soJmtmZF9pcGNf aGFuZGxlcy5sb2NrKTsKPiArCWhhc2hfZGVsKCZvYmotPm5vZGUpOwo+ICsJbXV0ZXhfdW5sb2Nr KCZrZmRfaXBjX2hhbmRsZXMubG9jayk7Cj4gKwo+ICsJZG1hX2J1Zl9wdXQob2JqLT5kbWFidWYp Owo+ICsJa2ZyZWUob2JqKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBrZmRfaXBjX29iaiAq aXBjX29ial9nZXQoc3RydWN0IGtmZF9pcGNfb2JqICpvYmopIHsKPiArCWlmIChrcmVmX2dldF91 bmxlc3NfemVybygmb2JqLT5yZWYpKQo+ICsJCXJldHVybiBvYmo7Cj4gKwlyZXR1cm4gTlVMTDsK PiArfQo+ICsKPiArdm9pZCBrZmRfaXBjX29ial9wdXQoc3RydWN0IGtmZF9pcGNfb2JqICoqb2Jq KSB7Cj4gKwlpZiAoKm9iaikgewo+ICsJCWtyZWZfcHV0KCYoKm9iaiktPnJlZiwgaXBjX29ial9y ZWxlYXNlKTsKPiArCQkqb2JqID0gTlVMTDsKPiArCX0KPiArfQo+ICsKPiAraW50IGtmZF9pcGNf aW5pdCh2b2lkKQo+ICt7Cj4gKwltdXRleF9pbml0KCZrZmRfaXBjX2hhbmRsZXMubG9jayk7Cj4g KwloYXNoX2luaXQoa2ZkX2lwY19oYW5kbGVzLmhhbmRsZXMpOwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQga2ZkX2ltcG9ydF9kbWFidWZfY3JlYXRlX2tmZF9ibyhzdHJ1Y3Qg a2ZkX2RldiAqZGV2LAo+ICsJCQkJCSAgIHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKPiArCQkJCQkg ICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+ICsJCQkJCSAgIHN0cnVjdCBrZmRfaXBjX29iaiAq aXBjX29iaiwKPiArCQkJCQkgICB1aW50NjRfdCB2YV9hZGRyLCB1aW50NjRfdCAqaGFuZGxlLAo+ ICsJCQkJCSAgIHVpbnQ2NF90ICptbWFwX29mZnNldCkKPiArewo+ICsJaW50IHI7Cj4gKwl2b2lk ICptZW07Cj4gKwl1aW50NjRfdCBzaXplOwo+ICsJaW50IGlkcl9oYW5kbGU7Cj4gKwlzdHJ1Y3Qg a2ZkX3Byb2Nlc3NfZGV2aWNlICpwZGQgPSBOVUxMOwo+ICsKPiArCWlmICghaGFuZGxlKQo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmICghZGV2KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ ICsKPiArCW11dGV4X2xvY2soJnAtPm11dGV4KTsKPiArCj4gKwlwZGQgPSBrZmRfYmluZF9wcm9j ZXNzX3RvX2RldmljZShkZXYsIHApOwo+ICsJaWYgKElTX0VSUihwZGQpKSB7Cj4gKwkJciA9IFBU Ul9FUlIocGRkKTsKPiArCQlnb3RvIGVycl91bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJciA9IGFtZGdw dV9hbWRrZmRfZ3B1dm1faW1wb3J0X2RtYWJ1ZihkZXYtPmtnZCwgZG1hYnVmLCBpcGNfb2JqLAo+ ICsJCQkJCXZhX2FkZHIsIHBkZC0+dm0sCj4gKwkJCQkJKHN0cnVjdCBrZ2RfbWVtICoqKSZtZW0s ICZzaXplLAo+ICsJCQkJCW1tYXBfb2Zmc2V0KTsKPiArCWlmIChyKQo+ICsJCWdvdG8gZXJyX3Vu bG9jazsKPiArCj4gKwlpZHJfaGFuZGxlID0ga2ZkX3Byb2Nlc3NfZGV2aWNlX2NyZWF0ZV9vYmpf aGFuZGxlKHBkZCwgbWVtKTsKPiArCWlmIChpZHJfaGFuZGxlIDwgMCkgewo+ICsJCXIgPSAtRUZB VUxUOwo+ICsJCWdvdG8gZXJyX2ZyZWU7Cj4gKwl9Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZwLT5t dXRleCk7Cj4gKwo+ICsJKmhhbmRsZSA9IE1BS0VfSEFORExFKGRldi0+aWQsIGlkcl9oYW5kbGUp Owo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX2ZyZWU6Cj4gKwlhbWRncHVfYW1ka2ZkX2dw dXZtX2ZyZWVfbWVtb3J5X29mX2dwdShkZXYtPmtnZCwgKHN0cnVjdCBrZ2RfbWVtICopbWVtLAo+ ICsJCQkJCSAgICAgICBOVUxMKTsKPiArZXJyX3VubG9jazoKPiArCW11dGV4X3VubG9jaygmcC0+ bXV0ZXgpOwo+ICsJcmV0dXJuIHI7Cj4gK30KPiArCj4gK2ludCBrZmRfaXBjX2ltcG9ydF9kbWFi dWYoc3RydWN0IGtmZF9kZXYgKmRldiwgc3RydWN0IGtmZF9wcm9jZXNzICpwLAo+ICsJCQkgIGlu dCBkbWFidWZfZmQsIHVpbnQ2NF90IHZhX2FkZHIsCj4gKwkJCSAgdWludDY0X3QgKmhhbmRsZSwg dWludDY0X3QgKm1tYXBfb2Zmc2V0KSB7Cj4gKwlpbnQgcjsKPiArCXN0cnVjdCBkbWFfYnVmICpk bWFidWYgPSBkbWFfYnVmX2dldChkbWFidWZfZmQpOwo+ICsKPiArCWlmICghZG1hYnVmKQo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXIgPSBrZmRfaW1wb3J0X2RtYWJ1Zl9jcmVhdGVfa2Zk X2JvKGRldiwgcCwgZG1hYnVmLCBOVUxMLAo+ICsJCQkJCSAgICB2YV9hZGRyLCBoYW5kbGUsIG1t YXBfb2Zmc2V0KTsKPiArCWRtYV9idWZfcHV0KGRtYWJ1Zik7Cj4gKwlyZXR1cm4gcjsKPiArfQo+ ICsKPiAraW50IGtmZF9pcGNfaW1wb3J0X2hhbmRsZShzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsCj4g KwkJCSAgdWludDMyX3QgKnNoYXJlX2hhbmRsZSwgdWludDY0X3QgdmFfYWRkciwKPiArCQkJICB1 aW50NjRfdCAqaGFuZGxlLCB1aW50MzJfdCAqZ3B1X2lkLAo+ICsJCQkgIHVpbnQ2NF90ICptbWFw X29mZnNldCkKPiArewo+ICsJc3RydWN0IGtmZF9kZXYgKmRldjsKPiArCWludCByOwo+ICsJc3Ry dWN0IGtmZF9pcGNfb2JqICplbnRyeSwgKmZvdW5kID0gTlVMTDsKPiArCj4gKwltdXRleF9sb2Nr KCZrZmRfaXBjX2hhbmRsZXMubG9jayk7Cj4gKwkvKiBDb252ZXJ0IHRoZSB1c2VyIHByb3ZpZGVk IGhhbmRsZSB0byBoYXNoIGtleSBhbmQgc2VhcmNoIG9ubHkgaW4gdGhhdAo+ICsJICogYnVja2V0 Cj4gKwkgKi8KPiArCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LAo+ICsJCSZrZmRfaXBjX2hh bmRsZXMuaGFuZGxlc1tIQU5ETEVfVE9fS0VZKHNoYXJlX2hhbmRsZSldLCBub2RlKSB7Cj4gKwkJ aWYgKCFtZW1jbXAoZW50cnktPnNoYXJlX2hhbmRsZSwgc2hhcmVfaGFuZGxlLAo+ICsJCQkgICAg c2l6ZW9mKGVudHJ5LT5zaGFyZV9oYW5kbGUpKSkgewo+ICsJCQlmb3VuZCA9IGlwY19vYmpfZ2V0 KGVudHJ5KTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsJbXV0ZXhfdW5sb2NrKCZrZmRf aXBjX2hhbmRsZXMubG9jayk7Cj4gKwo+ICsJaWYgKCFmb3VuZCkKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCj4gKwlwcl9kZWJ1ZygiRm91bmQgaXBjX2RtYV9idWY6ICVwXG4iLCBmb3VuZC0+ZG1h YnVmKTsKPiArCj4gKwlkZXYgPSBrZmRfZGV2aWNlX2J5X2lkKGZvdW5kLT5ncHVfaWQpOwo+ICsJ aWYgKCFkZXYpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJciA9IGtmZF9pbXBvcnRfZG1h YnVmX2NyZWF0ZV9rZmRfYm8oZGV2LCBwLCBmb3VuZC0+ZG1hYnVmLCBmb3VuZCwKPiArCQkJCQkg ICAgdmFfYWRkciwgaGFuZGxlLCBtbWFwX29mZnNldCk7Cj4gKwlpZiAocikKPiArCQlnb3RvIGVy cm9yX3VucmVmOwo+ICsKPiArCSpncHVfaWQgPSBmb3VuZC0+Z3B1X2lkOwo+ICsKPiArCXJldHVy biByOwo+ICsKPiArZXJyb3JfdW5yZWY6Cj4gKwlrZmRfaXBjX29ial9wdXQoJmZvdW5kKTsKPiAr CXJldHVybiByOwo+ICt9Cj4gKwo+ICtpbnQga2ZkX2lwY19leHBvcnRfYXNfaGFuZGxlKHN0cnVj dCBrZmRfZGV2ICpkZXYsIHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKPiArCQkJICAgICB1aW50NjRf dCBoYW5kbGUsIHVpbnQzMl90ICppcGNfaGFuZGxlKSB7Cj4gKwlzdHJ1Y3Qga2ZkX3Byb2Nlc3Nf ZGV2aWNlICpwZGQgPSBOVUxMOwo+ICsJc3RydWN0IGtmZF9pcGNfb2JqICppcGNfb2JqOwo+ICsJ c3RydWN0IGtnZF9tZW0gKm1lbTsKPiArCWludCByOwo+ICsKPiArCWlmICghZGV2IHx8ICFpcGNf aGFuZGxlKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCW11dGV4X2xvY2soJnAtPm11dGV4 KTsKPiArCXBkZCA9IGtmZF9iaW5kX3Byb2Nlc3NfdG9fZGV2aWNlKGRldiwgcCk7Cj4gKwlpZiAo SVNfRVJSKHBkZCkpIHsKPiArCQltdXRleF91bmxvY2soJnAtPm11dGV4KTsKPiArCQlwcl9lcnIo IkZhaWxlZCB0byBnZXQgcGRkXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihwZGQpOwo+ICsJfQo+ ICsKPiArCW1lbSA9IGtmZF9wcm9jZXNzX2RldmljZV90cmFuc2xhdGVfaGFuZGxlKHBkZCwgR0VU X0lEUl9IQU5ETEUoaGFuZGxlKSk7Cj4gKwltdXRleF91bmxvY2soJnAtPm11dGV4KTsKPiArCj4g KwlpZiAoIW1lbSkgewo+ICsJCXByX2VycigiRmFpbGVkIHRvIGdldCBibyIpOwo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXIgPSBhbWRncHVfYW1ka2ZkX2dwdXZtX2V4cG9ydF9p cGNfb2JqKGRldi0+a2dkLCBwZGQtPnZtLCBtZW0sCj4gKwkJCQkJICAgICAgICZpcGNfb2JqKTsK PiArCWlmIChyKQo+ICsJCXJldHVybiByOwo+ICsKPiArCWlwY19vYmotPmdwdV9pZCA9IGRldi0+ aWQ7Cj4gKwltZW1jcHkoaXBjX2hhbmRsZSwgaXBjX29iai0+c2hhcmVfaGFuZGxlLAo+ICsJICAg ICAgIHNpemVvZihpcGNfb2JqLT5zaGFyZV9oYW5kbGUpKTsKPiArCj4gKwlyZXR1cm4gcjsKPiAr fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfaXBjLmggYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfaXBjLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTQ1MGE2Njc5MThlCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9pcGMuaAo+IEBAIC0wLDAgKzEsNTUg QEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTQgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5j Lgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiAKPiArb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAKPiArIlNvZnR3YXJl IiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IAo+ICtsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCAKPiArc3VibGljZW5zZSwK PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gCj4gK3RoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi ZSAKPiAraW5jbHVkZWQgaW4KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCAKPiArRVhQUkVTUyBPUgo+ICsg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IAo+ICtNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCAKPiArU0hBTEwKPiArICogVEhF IENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCAKPiArREFNQUdFUyBPUgo+ICsgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIAo+ICtPVEhFUldJU0UsCj4gKyAqIEFSSVNJTkcgRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSAK PiArT1IKPiArICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8K PiArCj4gKyNpZm5kZWYgS0ZEX0lQQ19IXwo+ICsjZGVmaW5lIEtGRF9JUENfSF8KPiArCj4gKyNp bmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ICsK PiArLyogYXZvaWQgaW5jbHVkaW5nIGtmZF9wcml2LmggKi8KPiArc3RydWN0IGtmZF9kZXY7Cj4g K3N0cnVjdCBrZmRfcHJvY2VzczsKPiArCj4gK3N0cnVjdCBrZmRfaXBjX29iaiB7Cj4gKwlzdHJ1 Y3QgaGxpc3Rfbm9kZSBub2RlOwo+ICsJc3RydWN0IGtyZWYgcmVmOwo+ICsJc3RydWN0IGRtYV9i dWYgKmRtYWJ1ZjsKPiArCXVpbnQzMl90IHNoYXJlX2hhbmRsZVs0XTsKPiArCXVpbnQzMl90IGdw dV9pZDsKPiArfTsKPiArCj4gK2ludCBrZmRfaXBjX2ltcG9ydF9oYW5kbGUoc3RydWN0IGtmZF9w cm9jZXNzICpwLAo+ICsJCQkgIHVpbnQzMl90ICpzaGFyZV9oYW5kbGUsIHVpbnQ2NF90IHZhX2Fk ZHIsCj4gKwkJCSAgdWludDY0X3QgKmhhbmRsZSwgdWludDMyX3QgKmdwdV9pZCwKPiArCQkJICB1 aW50NjRfdCAqbW1hcF9vZmZzZXQpOwo+ICtpbnQga2ZkX2lwY19pbXBvcnRfZG1hYnVmKHN0cnVj dCBrZmRfZGV2ICprZmQsIHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKPiArCQkJICBpbnQgZG1hYnVm X2ZkLCB1aW50NjRfdCB2YV9hZGRyLAo+ICsJCQkgIHVpbnQ2NF90ICpoYW5kbGUsIHVpbnQ2NF90 ICptbWFwX29mZnNldCk7IGludCAKPiAra2ZkX2lwY19leHBvcnRfYXNfaGFuZGxlKHN0cnVjdCBr ZmRfZGV2ICpkZXYsIHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKPiArCQkJICAgICB1aW50NjRfdCBo YW5kbGUsIHVpbnQzMl90ICppcGNfaGFuZGxlKTsKPiArCj4gK2ludCBrZmRfaXBjX3N0b3JlX2lu c2VydChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3Qga2ZkX2lwY19vYmogCj4gKyoqaXBj X29iaik7IHZvaWQga2ZkX2lwY19vYmpfcHV0KHN0cnVjdCBrZmRfaXBjX29iaiAqKm9iaik7Cj4g Kwo+ICsjZW5kaWYgLyogS0ZEX0lQQ19IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfbW9kdWxlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfbW9kdWxlLmMKPiBpbmRleCBmNGI3ZjdlNmM0MGUuLjA5NDZkNTY5MjY5MiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbW9kdWxlLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbW9kdWxlLmMKPiBAQCAtNTIsNiArNTIsMTAgQEAg c3RhdGljIGludCBrZmRfaW5pdCh2b2lkKQo+ICAJaWYgKGVyciA8IDApCj4gIAkJZ290byBlcnJf dG9wb2xvZ3k7Cj4gIAo+ICsJZXJyID0ga2ZkX2lwY19pbml0KCk7Cj4gKwlpZiAoZXJyIDwgMCkK PiArCQlnb3RvIGVycl9pcGM7Cj4gKwo+ICAJZXJyID0ga2ZkX3Byb2Nlc3NfY3JlYXRlX3dxKCk7 Cj4gIAlpZiAoZXJyIDwgMCkKPiAgCQlnb3RvIGVycl9jcmVhdGVfd3E7Cj4gQEAgLTY2LDYgKzcw LDcgQEAgc3RhdGljIGludCBrZmRfaW5pdCh2b2lkKQo+ICAJcmV0dXJuIDA7Cj4gIAo+ICBlcnJf Y3JlYXRlX3dxOgo+ICtlcnJfaXBjOgo+ICAJa2ZkX3RvcG9sb2d5X3NodXRkb3duKCk7Cj4gIGVy cl90b3BvbG9neToKPiAgCWtmZF9jaGFyZGV2X2V4aXQoKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9wcml2LmgKPiBpbmRleCA1MWJhMjAyMDczMmUuLjE1ODhiMmI0NWEzMiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaAo+IEBAIC0zMjEsNiArMzIxLDggQEAg c3RydWN0IGtmZF9kZXYgewo+ICAJc3BpbmxvY2tfdCBzbWlfbG9jazsKPiAgfTsKPiAgCj4gK3N0 cnVjdCBrZmRfaXBjX29iajsKPiArCj4gIGVudW0ga2ZkX21lbXBvb2wgewo+ICAJS0ZEX01FTVBP T0xfU1lTVEVNX0NBQ0hFQUJMRSA9IDEsCj4gIAlLRkRfTUVNUE9PTF9TWVNURU1fV1JJVEVDT01C SU5FID0gMiwKPiBAQCAtMTA4Nyw2ICsxMDg5LDkgQEAgaW50IGRiZ2Rldl93YXZlX3Jlc2V0X3dh dmVmcm9udHMoc3RydWN0IGtmZF9kZXYgKmRldiwgc3RydWN0IGtmZF9wcm9jZXNzICpwKTsKPiAg Cj4gIGJvb2wga2ZkX2lzX2xvY2tlZCh2b2lkKTsKPiAgCj4gKy8qIElQQyBTdXBwb3J0ICovCj4g K2ludCBrZmRfaXBjX2luaXQodm9pZCk7Cj4gKwo+ICAvKiBDb21wdXRlIHByb2ZpbGUgKi8KPiAg dm9pZCBrZmRfaW5jX2NvbXB1dGVfYWN0aXZlKHN0cnVjdCBrZmRfZGV2ICpkZXYpOyAgdm9pZCBr ZmRfZGVjX2NvbXB1dGVfYWN0aXZlKHN0cnVjdCBrZmRfZGV2ICpkZXYpOyBkaWZmIC0tZ2l0IGEv aW5jbHVkZS91YXBpL2xpbnV4L2tmZF9pb2N0bC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2tmZF9p b2N0bC5oIGluZGV4IGY3MzhjM2I1M2Y0ZS4uOTBmZjMzNGUyYjViIDEwMDY0NAo+IC0tLSBhL2lu Y2x1ZGUvdWFwaS9saW51eC9rZmRfaW9jdGwuaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9r ZmRfaW9jdGwuaAo+IEBAIC0yOSw5ICsyOSwxMCBAQAo+ICAvKgo+ICAgKiAtIDEuMSAtIGluaXRp YWwgdmVyc2lvbgo+ICAgKiAtIDEuMyAtIEFkZCBTTUkgZXZlbnRzIHN1cHBvcnQKPiArICogLSAx LjQgLSBBZGQgSVBDIGV4cG9ydC9pbXBvcnQKPiAgICovCj4gICNkZWZpbmUgS0ZEX0lPQ1RMX01B Sk9SX1ZFUlNJT04gMQo+IC0jZGVmaW5lIEtGRF9JT0NUTF9NSU5PUl9WRVJTSU9OIDMKPiArI2Rl ZmluZSBLRkRfSU9DVExfTUlOT1JfVkVSU0lPTiA0Cj4gIAo+ICBzdHJ1Y3Qga2ZkX2lvY3RsX2dl dF92ZXJzaW9uX2FyZ3Mgewo+ICAJX191MzIgbWFqb3JfdmVyc2lvbjsJLyogZnJvbSBLRkQgKi8K PiBAQCAtNDY0LDYgKzQ2NSw1NyBAQCBlbnVtIGtmZF9tbWlvX3JlbWFwIHsKPiAgCUtGRF9NTUlP X1JFTUFQX0hEUF9SRUdfRkxVU0hfQ05UTCA9IDQsICB9Owo+ICAKPiArLyogRXhwb3J0IElQQyBo YW5kbGUKPiArICoKPiArICogQGhhbmRsZVtpbl06ICAgICAgICAgYnVmZmVyIGhhbmRsZSBvZiB0 aGUgQk8gdG8gZXhwb3J0Cj4gKyAqIEBncHVfaWRbaW5dOiAgICAgICAgIEdQVSBJRCB3aGVyZSBA aGFuZGxlIHdhcyBhbGxvY2F0ZWQKPiArICogQHNoYXJlX2hhbmRsZVtvdXRdOiAgc2hhcmUgaGFu ZGxlIHRoYXQgY2FuIGJlIHVzZWQgd2l0aAo+ICsgKiAgICAgICAgICAgICAgICAgICAgICBAa2Zk X2lvY3RsX2lwY19pbXBvcnRfaGFuZGxlX2FyZ3MKPiArICoKPiArICogQHNoYXJlX2hhbmRsZSBp cyBhIDEyOCBiaXQgcmFuZG9tIG51bWJlciBnZW5lcmF0ZWQgd2l0aAo+ICsgKiBAZ2V0X3JhbmRv bV9ieXRlcy4gVGhpcyBudW1iZXIgc2hvdWxkIGJlIHZlcnkgaGFyZCB0byBndWVzcy4KPiArICog S25vd2xlZGdlIG9mIHRoZSBAc2hhcmVfaGFuZGxlIGltcGxpZXMgYXV0aG9yaXphdGlvbiB0byBh Y2Nlc3MKPiArICogdGhlIHNoYXJlZCBtZW1vcnkuIFVzZXIgbW9kZSBzaG91bGQgdHJlYXQgaXQg bGlrZSBhIHNlY3JldCBrZXkuCj4gKyAqIEl0IGNhbiBiZSB1c2VkIHRvIGltcG9ydCB0aGlzIEJP IGluIGEgZGlmZmVyZW50IHByb2Nlc3MgY29udGV4dAo+ICsgKiBmb3IgSVBDIGJ1ZmZlciBzaGFy aW5nLiBUaGUgaGFuZGxlIHdpbGwgYmUgdmFsaWQgYXMgbG9uZyBhcyB0aGUKPiArICogdW5kZXJs eWluZyBCTyBleGlzdHMuIElmIHRoZSBzYW1lIEJPIGlzIGV4cG9ydGVkIG11bHRpcGxlIHRpbWVz LAo+ICsgKiB0aGUgc2FtZSBoYW5kbGUgd2lsbCBiZSByZXR1cm5lZC4KPiArICoKPiArICogUmV0 dXJuIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZXJyb3JzLgo+ICsgKi8KPiArc3Ry dWN0IGtmZF9pb2N0bF9pcGNfZXhwb3J0X2hhbmRsZV9hcmdzIHsKPiArCV9fdTY0IGhhbmRsZTsJ CS8qIHRvIEtGRCAqLwo+ICsJX191MzIgc2hhcmVfaGFuZGxlWzRdOwkvKiBmcm9tIEtGRCAqLwo+ ICsJX191MzIgZ3B1X2lkOwkJLyogdG8gS0ZEICovCj4gKwlfX3UzMiBwYWQ7Cj4gK307Cj4gKwo+ ICsvKiBJbXBvcnQgSVBDIGhhbmRsZQo+ICsgKgo+ICsgKiBAc2hhcmVfaGFuZGxlW2luXTogIHNo YXJlIGhhbmRsZSBmcm9tIEBrZmRfaW9jdGxfaXBjX2V4cG9ydF9oYW5kbGVfYXJncwo+ICsgKiBA dmFfYWRkcltpbl06ICAgICAgIHZpcnR1YWwgYWRkcmVzcyBhdCB3aGljaCB0byBpbXBvcnQgdGhl IEJPCj4gKyAqIEBoYW5kbGVbb3V0XTogICAgICAgYnVmZmVyIGhhbmRsZSBvZiB0aGUgaW1wb3J0 ZWQgQk8KPiArICogQGdwdV9pZFtvdXRdOiAgICAgICBkZXZpY2UgaW4gd2hpY2ggdGhlIHNoYXJl ZCBCTyB3YXMgY3JlYXRlZAo+ICsgKiBAbW1hcF9vZmZzZXRbb3V0XTogIG1tYXAgb2Zmc2V0IGZv ciBDUFUtbWFwcGluZyB0aGUgQk8KPiArICoKPiArICogQGhhbmRsZSByZXByZXNlbnRzIGEgbmV3 IHJlZmVyZW5jZSB0byB0aGUgc2hhcmVkIEJPLiBUaGlzIHJlZmVyZW5jZQo+ICsgKiBtdXN0IGJl IHJlbGVhc2VkIHdpdGgga2ZkX2lvY3RsX2ZyZWVfbWVtb3J5X29mX2dwdV9hcmdzLgo+ICsgKgo+ ICsgKiBUaGUgQk8gY2FuIGJlIG1hcHBlZCBmb3IgR1BVIGFjY2VzcyB3aXRoIEBrZmRfaW9jdGxf bWFwX21lbW9yeV90b19ncHVfYXJncy4KPiArICoKPiArICogSXQgY2FuIGJlIG1hcHBlZCBmb3Ig Q1BVIGFjY2VzcyB1c2luZyB0aGUgQG1tYXBfb2Zmc2V0Lgo+ICsgKgo+ICsgKiBSZXR1cm4gMCBv biBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBlcnJvcnMuCj4gKyAqLwo+ICtzdHJ1Y3Qga2Zk X2lvY3RsX2lwY19pbXBvcnRfaGFuZGxlX2FyZ3Mgewo+ICsJX191NjQgaGFuZGxlOwkJLyogZnJv bSBLRkQgKi8KPiArCV9fdTY0IHZhX2FkZHI7CQkvKiB0byBLRkQgKi8KPiArCV9fdTY0IG1tYXBf b2Zmc2V0OwkvKiBmcm9tIEtGRCAqLwo+ICsJX191MzIgc2hhcmVfaGFuZGxlWzRdOwkvKiB0byBL RkQgKi8KPiArCV9fdTMyIGdwdV9pZDsJCS8qIGZyb20gS0ZEICovCj4gKwlfX3UzMiBwYWQ7Cj4g K307Cj4gKwo+ICAjZGVmaW5lIEFNREtGRF9JT0NUTF9CQVNFICdLJwo+ICAjZGVmaW5lIEFNREtG RF9JTyhucikJCQlfSU8oQU1ES0ZEX0lPQ1RMX0JBU0UsIG5yKQo+ICAjZGVmaW5lIEFNREtGRF9J T1IobnIsIHR5cGUpCQlfSU9SKEFNREtGRF9JT0NUTF9CQVNFLCBuciwgdHlwZSkKPiBAQCAtNTY0 LDcgKzYxNiwxMyBAQCBlbnVtIGtmZF9tbWlvX3JlbWFwIHsKPiAgI2RlZmluZSBBTURLRkRfSU9D X1NNSV9FVkVOVFMJCQlcCj4gIAkJQU1ES0ZEX0lPV1IoMHgxRiwgc3RydWN0IGtmZF9pb2N0bF9z bWlfZXZlbnRzX2FyZ3MpCj4gIAo+ICsjZGVmaW5lIEFNREtGRF9JT0NfSVBDX0lNUE9SVF9IQU5E TEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKwkJQU1ES0ZEX0lPV1Io MHgyMCwgc3RydWN0IGtmZF9pb2N0bF9pcGNfaW1wb3J0X2hhbmRsZV9hcmdzKQo+ICsKPiArI2Rl ZmluZSBBTURLRkRfSU9DX0lQQ19FWFBPUlRfSEFORExFCQlcCj4gKwkJQU1ES0ZEX0lPV1IoMHgy MSwgc3RydWN0IGtmZF9pb2N0bF9pcGNfZXhwb3J0X2hhbmRsZV9hcmdzKQo+ICsKPiAgI2RlZmlu ZSBBTURLRkRfQ09NTUFORF9TVEFSVAkJMHgwMQo+IC0jZGVmaW5lIEFNREtGRF9DT01NQU5EX0VO RAkJMHgyMAo+ICsjZGVmaW5lIEFNREtGRF9DT01NQU5EX0VORAkJMHgyMgo+ICAKPiAgI2VuZGlm Cj4gLS0KPiAyLjI3LjAKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v YW1kLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK