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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 26B0BC433F5 for ; Wed, 30 Mar 2022 06:24:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3D10A10E230; Wed, 30 Mar 2022 06:24:30 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9253110E230 for ; Wed, 30 Mar 2022 06:24:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648621469; x=1680157469; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=+1CmyCDN0e4cBlf6tLF+oYf6GBFff1nMY8r21N1il1o=; b=KnKAwviWfQEH1zpsMXeuMShLvNL9b/rX7R629J70smIFSUi1RKEdsjaP pwX7MJfajy/3PKsLxItemaoMS7ylpWXpls7erz1V1CurRZ2CgcdunNPBm B2j09TduudK2ojm3YXQjlNYOHkgJ/zHjNucycqSUgHUmWbaSJytmIxFNI +nWNrhaobcdSGUz3GZuWepnj/1F80swQsrsoo0Ew2D0l0JvqV+xtaE90V BAZPV2imzsp5Jzjn7+K/aCkix7nhzH5gnRlOIjLYn/old9O7mmpATYlVm t2dzEOfK3Ohg8RGqcV59hWXfNqv+Upc0PBhWmIh0irMaPcUNcwkkpF4lf A==; X-IronPort-AV: E=McAfee;i="6200,9189,10301"; a="345893416" X-IronPort-AV: E=Sophos;i="5.90,221,1643702400"; d="scan'208";a="345893416" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2022 23:24:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,221,1643702400"; d="scan'208";a="565322509" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga008.jf.intel.com with ESMTP; 29 Mar 2022 23:24:28 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 29 Mar 2022 23:23:39 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 29 Mar 2022 23:23:38 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 29 Mar 2022 23:23:38 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.173) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Tue, 29 Mar 2022 23:23:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TeD46NJbAKVFcNjZf0jnUVE4suQXRRUiB2vMkvjAu+nOK/h4hy2Fto4o/x64ZLnpZZrdWQ+0w0XNurA4b8bNoWqNR5etW2fCcQQx1c3KRstN+s+Idu22QLdmhP7131254Ftf+m2gd3B91V1x7pVKTajPVVqPIssjgCS3OM8/1awr31F18dgCSWk0+oHH/Y5sARD+3g36lMaiHJ/0KbCIsoCK0P2m+RypCyCW25enahkoF7wo0nN5kOsSqsP71MIDhKHtCyQJngaxiyDUO+tx1oGHQhvVPp2o3rKKcfbTgUBmmAQ18+3AK0LdBrCEmC/te1FQysy0MtWXwfemok4Liw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+1CmyCDN0e4cBlf6tLF+oYf6GBFff1nMY8r21N1il1o=; b=jZlCA0WGoxMNTmcd/NhzuEngECB2R+FUYaOFyVjxctI19KU/BaCAXDT8Du1hBGxXhCWEP3pfBH9yeg4fwAoK96RxwfS4sBzXgPRr3QvW9vPfOIqwAGMH0gxIR9S2N10Qnr9eRRGBsAsJAnOaKzaBEr+8NcrNjqzrSsgV3+iUrHXQpDgxO7qIjN8K9FpHJBRBmU9HrxPtBanenQBADc6bxYarNTIkxk42XWnEfCTF1Y2eZ0un9pimPAJK1In+vM8yCNoOpEII7roh+XKXuLq+bwUZHD3WPCX0pmNFNAvykdR9zHLSsOEosUre02E9KpMjaYDianQh7dyvKkROsVru7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM4PR11MB6019.namprd11.prod.outlook.com (2603:10b6:8:60::5) by MN2PR11MB4269.namprd11.prod.outlook.com (2603:10b6:208:190::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Wed, 30 Mar 2022 06:23:36 +0000 Received: from DM4PR11MB6019.namprd11.prod.outlook.com ([fe80::ac5e:2fe2:3bc6:fe36]) by DM4PR11MB6019.namprd11.prod.outlook.com ([fe80::ac5e:2fe2:3bc6:fe36%7]) with mapi id 15.20.5102.022; Wed, 30 Mar 2022 06:23:36 +0000 From: "Hogander, Jouni" To: "intel-gfx@lists.freedesktop.org" , "Souza, Jose" Thread-Topic: [PATCH 2/2] drm/i915/display/psr: Use continuos full frame to handle frontbuffer invalidations Thread-Index: AQHYP6rEzWduipoIukKh2xCfMKdPl6zQJ9kAgAAG+gCAB08yAA== Date: Wed, 30 Mar 2022 06:23:36 +0000 Message-ID: <66e2183adfabad077e634c5cb97fe66552149e10.camel@intel.com> References: <20220324181347.129378-1-jose.souza@intel.com> <20220324181347.129378-2-jose.souza@intel.com> <05e19d47486bb5356fe50ee48fcc285140bc486a.camel@intel.com> <5d67a3bbfa7d669361e016cca444364274e19315.camel@intel.com> In-Reply-To: <5d67a3bbfa7d669361e016cca444364274e19315.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ac2344b4-8245-46d4-2967-08da1215d27c x-ms-traffictypediagnostic: MN2PR11MB4269:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TffeBac0F4pn1eium/DwHwH4uBsUMffELJct3iKkbH3Re4ZLPfzcXcNvGfxO44o91EnNa8hpNuyVjtZahky53lBFJf8eDHyfUTC4jdodWjYuX/b5CmnMukrJ8ceWOR1kuFQrwfGqonfVrmfmV8gt1d7bGra27Npqsd6PXMylaB0v0fyKSHpgYv65D5Z5/QJ8Eq2R/knHPUoqFoyOL57pN7HKPrOzdbSfBo2U79gyJesqo2rbFJhaiz9mJid0GvJ9rfwd5djIE+or0WKivQhdgdB/vgzpHhF5z6u2/9UmCjF4ajOswepysfhkDYkm8Rwvv4JvCgpFNTxmc8kipDCXxpWgg7kQonvecwo746n3HIg28tNdJfmlLTenBo7wqX0hm3kHHqdQUANS9INX73KX9IEsdqrkKnOUIszDRZ8nQkN1XZQ5jzTYBbNZnHY1YCXD+xN/i/25XGcvsT2rOWj2Sw1v7kkqokk9orGCOaecM7Oa6CWi5mVeFzEccU6ReS7zG3UhkhjtefdAYYzEprJFf8LDQnPq2dH2A44TCIcgLvtWKlvGOnFi58nmwRhZ3QItJrtLt8D9IA4D5ij2Dp5WdsbA1GkAlAv1QuojOvuPl+ZjIYFN+JShM/wYeAiu3D/uKnBvze5GTZHRRrlk0phWQGUu/zPLiIVdrcmOZlFVy5gG/5b9ff44nVoDgTbiduM3EXkMnZW2fzP3jZk9tOzhuA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB6019.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(110136005)(54906003)(86362001)(82960400001)(6636002)(508600001)(6506007)(122000001)(6512007)(107886003)(71200400001)(6486002)(2616005)(26005)(186003)(316002)(66574015)(38100700002)(66446008)(8676002)(66556008)(66476007)(76116006)(66946007)(4326008)(64756008)(36756003)(91956017)(5660300002)(8936002)(38070700005)(2906002)(30864003)(83380400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Si9BYTIxR2phcGFDRDFXRCthRHpGMGZLU29QYS9NaHZzVU0wL0Fqc3A5VjRU?= =?utf-8?B?MVlqSkFNL0xOUHYwRE5STWZpYnJqbVNDa25McG0wMkc1d3JNTGwyblFhakFk?= =?utf-8?B?czMzVG1aOTNvY0FrRFk1aVF4VTUwUkVhMU1sbWw3SEc1dE9PS0J5ajFlWnZW?= =?utf-8?B?N0tPT1lpeURSZ29lYjFoY2tzTXZoRmQ2cUYvaUFXN0JtM2JUeEpvM0lJWk1J?= =?utf-8?B?OUtkZG4vN0xPV1psN1UvQWJSQzN6Q3didzI5UHl4bk9uL2ZkdWF6YTBLNjZj?= =?utf-8?B?ZWtOUVRPRC9LTTJMc2N4ekRhYmJOS09SR3JLSm5zVkljZGs0ZWRUaUFxNmVl?= =?utf-8?B?cEFTUFQ4UHJiYSsyVGxzWjRNQ2Q1YVFOOUZWTTh2SklrOXY5Qk9BMGN4ZERB?= =?utf-8?B?YTJlTGtyTWN1TlVyUGVsS0JZUGNQTVp0aXphangyb3NPdGh1NkxQUUd2TG1K?= =?utf-8?B?QWpRZGNyWHpvR01lNFFOZDBZZSs4NDJuOHg5a0VhbHF4bG9hZC83b3lHeE16?= =?utf-8?B?L3phYVl1RTdCT09qM2R1dVEvQmVqcDBBSFFndnFwRTdQYVpYdTZHZFB6aUJv?= =?utf-8?B?eWROVGdFM3pYWUZpZC9PU1pMbHBaMkxkR1BkendWWDdxUTFLbENub3Z2UGg0?= =?utf-8?B?NVRsQVM2cTFGaFdONDJPdTdZWExaVldSWStQYitraDhNLzRrNHhZZTMyR2o2?= =?utf-8?B?Z0M4TnUxMVBKZ3BsRXBSNDVxNmNjeThZOW9vUGttUkZlRjR1aEZyRk5DSHR1?= =?utf-8?B?aHB3YmI0WEkvaEN2elFkSldXNEpvb01tVUZHRHA3b250K29ZaXppRXdMdEJm?= =?utf-8?B?REZtbEVJY25wSFB1dE9oWFZpbys1Q2V1SC8xcGhhamIxQVJVeGlsRTBWb3ZZ?= =?utf-8?B?N2RWb3lMSTZFR0lhV2E4WEJwZ0puaE9HL3cxVzYyTHBaVU9ZUE1pWHpxMnNM?= =?utf-8?B?czdEektQWlgrZ0o1R3FMZ1JzZSs5bitkRkJXVmFZRDRBR0p1bkdqcG05M1ZT?= =?utf-8?B?NS9ic3oreVhJUDhtVUFCc2szcEU0MW41UTJVblRMdDRxRzJteDBPTHRYSUhH?= =?utf-8?B?ZUoyUGd5amZsS2phU1RBcTFjS3BCVWVwYUVMaVg5M2dIZjR4SXh1RUpUUzlR?= =?utf-8?B?Z3NKSkdkSWJQZk83QnYwU0JVSEdLL2FTc3dLb2JJVG03b2k1OU4vM3ZSUHRC?= =?utf-8?B?STk0Qkw3SmNkc1F5NUFTVytEMGZxclk5b3kzd0dKRDdJMUlZSk02VmlvazNh?= =?utf-8?B?U1FjQk9YNXZld0hHclA0OHB3cjhrYVF4VXBES1hpeUJQc1VJN2E1SkJVYktZ?= =?utf-8?B?SklSY1k4VzIzL29lSFZtVVk5QTdBUzQ0K0hQVk5nSFczYnJYaDdUc0Z2Qmtp?= =?utf-8?B?KzhxWVFXckw2RW5IMVpiSTRUMTZrNG0wa0xncXdwS25xZUh4RlczcnAyeWZU?= =?utf-8?B?ZHR5UkUrOXk3R3lldTBUQ1B6UWtvRllPTHQveGtIOXFBMWhheWNRN2x4MlZ6?= =?utf-8?B?TXNYMTRiTHhGcDdJV2RWNFVrZ3FXOHBRbjFURUp5TDlwc21EN1hyUitpM3ho?= =?utf-8?B?eDdLSEtsckg2QjA4VklVdnZsQVp4Q1IzeE4vS2x3NE1aNDdzRko0aHR4Y2pN?= =?utf-8?B?RGNISG1QdThFeW1VSm5wMjlNMjNwS0E1ay8xbnFTUm9jSFFRQ2RFcDZML1BQ?= =?utf-8?B?LzNIMGFDVjJLZGlyUC91L1A2a0h5T012U2twMFJnSEs1MGN5NDQ2WURWcWRK?= =?utf-8?B?VEkvVEpHNVlENjEvdjJyLzJ6MnBYd21sQmxSdmtadE1aRjBtdTg1YmpRNXVw?= =?utf-8?B?NUhmQk04L0ZQcmNPZDd5U3Q5bU53eWR2cDFldDdEM1dFWDJYbUNPNUF3RFJx?= =?utf-8?B?eGhXZnJHaUErTGhlUnMrV3FhNGZReGpoSWlFOStoTURnTDZBeEV0KzBKek92?= =?utf-8?B?dW5vTlR4K1RWL0hxdnRwd1J3TGZUMUQ1TGZJYTBGU29iZlk4VVExeVFDSHNQ?= =?utf-8?B?UWhlLzY0em9vdGVjdEJ5Q1l6a1F2a1E5ZTBBcUdXbnBSUnM5WFgySkJTeWwy?= =?utf-8?B?d1FpOGNKNTRyd2E2SitSajZKZmliOE9palpkcFdyTDY1czNLZU5SZlFkVCtN?= =?utf-8?B?VnowT3M2OVk5RjMxR0UzM09zZi9qMHU2Y2duRmFOLzdpb0p6cE1kT0RLa2E5?= =?utf-8?B?MjBnMDQ0SDFnc2ZTL1hpdWU1c1pXbk9RUkdmZGRNalVucTIwWnJuS2hKT0FG?= =?utf-8?B?Zktja1VDMVZrUzJnbHAvbVQ2Nk1TbnpiaFBDc3dqcDROMHh4VU9ndENSS3dh?= =?utf-8?B?ZWNEOGIzWmRkWkRFMGV6ZHdoWnUzNGd1bXpaZnUxdDRmaUNqclBqNUVXMU5N?= =?utf-8?Q?QlipdkEQ7lX6t4zYnUxSlSzDqAeburjgzwnlh?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB6019.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac2344b4-8245-46d4-2967-08da1215d27c X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Mar 2022 06:23:36.0218 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NevEUFnOo9tlnAasifANL8affsUWQZAi+L50sKyfX65AuEnb1MIYCJuB8bSRw+sV+AlTMBShLgEobq94yOEfj5756gxMjm9inBghQT5oxnc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4269 X-OriginatorOrg: intel.com Subject: Re: [Intel-gfx] [PATCH 2/2] drm/i915/display/psr: Use continuos full frame to handle frontbuffer invalidations X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SGVsbG8gSm9zZSwNCg0KVGhhbmsgeW91IGZvciB5b3VyIHJlc3BvbnNlLiBJJ20gc29ycnkgZm9y IHRoZSBkZWxheSBvbiBteSBzaWRlLiBTZWUgbXkNCmNvbW1lbnQgYmVsb3cuDQogDQpPbiBGcmks IDIwMjItMDMtMjUgYXQgMTQ6NDYgKzAwMDAsIFNvdXphLCBKb3NlIHdyb3RlOg0KPiBPbiBGcmks IDIwMjItMDMtMjUgYXQgMTQ6MjEgKzAwMDAsIEhvZ2FuZGVyLCBKb3VuaSB3cm90ZToNCj4gPiBI ZWxsbyBKb3NlLA0KPiA+IA0KPiA+IFNlZSBteSBjb21tZW50cyBiZWxvdy4NCj4gPiANCj4gPiBP biBUaHUsIDIwMjItMDMtMjQgYXQgMTE6MTMgLTA3MDAsIEpvc8OpIFJvYmVydG8gZGUgU291emEg d3JvdGU6DQo+ID4gPiBJbnN0ZWFkIG9mIGV4aXQgUFNSIHdoZW4gYSBmcm9udGJ1ZmZlciBpbnZh bGlkYXRpb24gaGFwcGVucywgd2UNCj4gPiA+IGNhbg0KPiA+ID4gZW5hYmxlIHRoZSBQU1IyIHNl bGVjdGl2ZSBmZXRjaCBjb250aW51b3VzIGZ1bGwgZnJhbWUsIHRoYXQgd2lsbA0KPiA+ID4ga2Vl cA0KPiA+ID4gdGhlIHBhbmVsIHVwZGF0ZWQgbGlrZSBQU1Igd2FzIGRpc2FibGVkIGJ1dCB3aXRo b3V0IGtlZXBpbmcgUFNSDQo+ID4gPiBhY3RpdmUuDQo+ID4gDQo+ID4gd2l0aCBrZWVwaW5nIFBT UiBhY3RpdmU/IEkgZG9uJ3QgdGhpbmsgaXQncyBsaWtlIFBTUiB3YXMgZGlzYWJsZWQuDQo+ID4g TmV3DQo+ID4gZnVsbCBmcmFtZSBpcyB1cGRhdGVkIG9ubHkgdmlhIGF0b21pYyBjb21taXQuIEhh dmluZyBQU1IgZGlzYWJsZWQNCj4gPiBuZXcNCj4gPiBmdWxsIGZyYW1lIGlzIHVwZGF0ZWQgYWxs IHRoZSB0aW1lIGFzIFBTUiB3YXNuJ3QgZXhpc3RpbmcgYXQgYWxsLg0KPiA+IA0KPiA+ID4gU28g YXMgc29vbiBhcyB0aGUgZnJvbnRidWZmZXIgZmx1c2ggaGFwcGVucyB3ZSBjYW4gZGlzYWJsZSB0 aGUNCj4gPiA+IGNvbnRpbnVvdXMgZnVsbCBmcmFtZSBhbmQgc3RhcnQgdG8gZG8gc2VsZWN0aXZl IGZldGNoZXMgbXVjaA0KPiA+ID4gcXVpY2tlcg0KPiA+ID4gdGhhbiB0aGUgcGF0aCB0aGF0IHdv dWxkIGVuYWJsZSBQU1IsIHRoYXQgd2lsbCB3YWl0IGEgZmV3IGZyYW1lcw0KPiA+ID4gdG8gYWN0 dWFsbHkgYWN0aXZhdGUgUFNSLg0KPiA+ID4gDQo+ID4gPiBBbHNvIHRoaXMgYXBwcm9hY2ggaGFz IHByb3ZlbiB0byBmaXggc29tZSBnbGl0Y2hlcyBmb3VuZCBpbg0KPiA+ID4gQWxkZXJsYWtlLVAN Cj4gPiA+IHdoZW4gdGhlcmUgYXJlIGEgbG90IG9mIGludmFsaWRhdGlvbnMgaGFwcGVuaW5nIHRv Z2V0aGVyIHdpdGgNCj4gPiA+IHBhZ2UNCj4gPiA+IGZsaXBzLg0KPiA+ID4gDQo+ID4gPiBTb21l IG1heSBhc2sgd2h5IGl0IGlzIHdyaXRpbmcgdG8gQ1VSU1VSRkxJVkUoKSwgaXQgaXMgYmVjYXVz ZQ0KPiA+ID4gdGhhdCBpcyB0aGUgd2F5IHRoYXQgaGFyZHdhcmUgdGVhbSBwcm92aWRlZCB1cyB0 byBwb2tlIGRpc3BsYXkgdG8NCj4gPiA+IGhhbmRsZSBQU1IgdXBkYXRlcywgYW5kIGl0IGlzIGJl aW5nIHVzZWQgc2luY2UgZGlzcGxheSA5Lg0KPiA+IA0KPiA+IEdlbmVyaWMgY29tbWVudHM6DQo+ ID4gDQo+ID4gQ3VycmVudCBsb2dpYyBpcyB0byBkaXNhYmxlIHBzcjIgaW4gaW52YWxpZGF0ZSBj YWxsYmFjayBhbmQgc3RhcnQNCj4gPiBzZW5kaW5nIGZ1bGxmcmFtZSB1cGRhdGVzIG9uIGV2ZXJ5 IHZibGFuayBwZXJpb2QuIFRoaXMgaXMgZG9uZQ0KPiA+IHVudGlsDQo+ID4gZmx1c2ggY2FsbGJh Y2sgd2hlcmUgcHNyMiBpcyByZS1lbmFibGVkLiBJbnRlbnRpb24gaXMgdG8gdXBkYXRlDQo+ID4g cG9zc2libGUgZnJvbnRidWZmZXIgd3JpdGVzIGJldHdlZW4gaW52YWxpZGF0ZS9mbHVzaCBpbnN0 YW50bHkuDQo+ID4gDQo+ID4gTm93IHlvdSBhcmUgY2hhbmdpbmcgdGhlIGxvZ2ljIHRvIHVwZGF0 ZSBvbmUgZnVsbCBmcmFtZSB3aGVuDQo+IA0KPiBJdCBpcyBub3QgZW5hYmxpbmcgdGhlIG9uZSBm dWxsIGZyYW1lLCBpdCBpcyBlbmFibGluZyB0aGUgY29udGludW91cw0KPiBmdWxsIGZyYW1lIHNv IGF0IGV2ZXJ5IHZibGFuayBwYW5lbCB3aWxsIGJlIHVwZGF0ZWQgdW50aWwgdGhpcyBiaXQNCj4g Y2xlYXJlZC4NCg0KVGhlcmUgaXMgY29tbWVudCBpbiBic3BlYyBzdGF0aW5nIG90aGVyd2lzZSAo NTUyMjkpLiBJIHRoaW5rIGl0IGlzDQppbXBvcnRhbnQgdG8gY2xhcmlmeSBzbyB0aGF0IHdlIHJl YWxseSB1bmRlcnN0YW5kIHdoYXQgdGhpcyBXQSBpcyBkb2luZw0KYW5kIHRvIGF2b2lkIGhpZGlu ZyB0aGUgaXNzdWUganVzdCBmb3IgdGhpcyBzcGVjaWZpYyBjYXNlLg0KDQpDdXJyZW50bHkgSSdt IHN1c3BlY3RpbmcgdGhhdCAiU0YgQ29udGludW91cyBGdWxsIEZyYW1lIiBqdXN0DQpjb25maWd1 cmVzIG5leHQgc2VsZWN0aXZlIHVwZGF0ZSB0byBmdWxsIGZyYW1lIGFuZCB0aGVuIHdyaXRlIHRv DQpDVVJTVVJGTElWRSB0cmlnZ2VycyBmbGlwIHdoaWNoIGlzIHNlbmRpbmcgdGhhdCBmdWxsIGZy YW1lIChvbmx5IG9uZQ0KZnJhbWUpLiBVcGRhdGVzIGJldHdlZW4gaW52YWxpZGF0ZSBhbmQgZmx1 c2ggYXJlIGp1c3QgZGVwZW5kaW5nIGlmDQp0aGVyZSBhcmUgZmxpcHMgaW4gYmV0d2Vlbi4gQWZ0 ZXIgZ2V0dGluZyB0aGlzIGNsYXJpZmllZCB3ZSBjYW4NCnByb3Blcmx5IHJldmlldyB0aGlzIFdB IHBhdGNoLg0KDQo+IA0KPiA+IGZyb250YnVmZmVyIHdyaXRlIHN0YXJ0cyAoX3Bzcl9pbnZhbGlk YXRlX2hhbmRsZSkgYW5kIGFub3RoZXIgb25lDQo+ID4gd2hlbg0KPiA+IGl0IHN0b3BzIChfcHNy X2ZsdXNoX2hhbmRsZSkgd2l0aG91dCBkaXNhYmxpbmcgcHNyIGF0IGFsbC4gSGF2ZSBJDQo+ID4g dW5kZXJzdG9vZCB5b3VyIHBhdGNoIGNvcnJlY3RseT8NCj4gPiANCj4gPiBQcm9wYWJseSB3ZSB3 b250IG5vdGljZSB0aGlzIGNoYW5nZSBhcyB3ZSBoYXZlIHRoZXNlDQo+ID4gaW52YWxpZGF0ZS9m bHVzaA0KPiA+IGNhbGxzIHNjYXR0ZXJlZCBhcm91bmQgaW4gdGhlIGNvZGUuIEFsc28gcGFyYWxs ZWwgYXRvbWljIGNvbW1pdHMNCj4gPiBhcmUNCj4gPiB0cmlnZ2VyaW5nIHVwZGF0ZXMuIEluIHRo ZW9yeSB3ZSBjb3VsZCBvYnNlcnZlIGxhdGVuY3kgaW4gdXBkYXRlcw0KPiA+IGJldHdlZW4gaW52 YWxpZGF0ZS9mbHVzaD8gRG8gd2UgY2FyZT8gV2hhdCBkbyB5b3UgdGhpbms/DQo+ID4gDQo+ID4g RG8gd2UgbmVlZCB0byBzZW5kIHVwZGF0ZSBpbiBpbnZhbGlkYXRlIGF0IGFsbD8gSXNuJ3QgdGhh dCB1c3VhbGx5DQo+ID4gY2FsbGVkIGJlZm9yZSBkb2luZyBhbnkgZnJvbnRidWZmZXIgd3JpdGlu Zz8gSS5lLiB3ZSB3b3VsZCBiZQ0KPiA+IHNlbmRpbmcNCj4gPiBmcmFtZSB0aGF0IGlzIGFscmVh ZHkgaW4gUkZCPw0KPiA+IA0KPiA+ID4gQ2M6IEtoYWxlZCBBbG1haGFsbGF3eSA8a2hhbGVkLmFs bWFoYWxsYXd5QGludGVsLmNvbT4NCj4gPiA+IENjOiBTaGF3biBDIExlZSA8c2hhd24uYy5sZWVA aW50ZWwuY29tPg0KPiA+ID4gQ2M6IEpvdW5pIEjDtmdhbmRlciA8am91bmkuaG9nYW5kZXJAaW50 ZWwuY29tPg0KPiA+ID4gQ2M6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+DQo+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGlu dGVsLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfcHNyLmMgfCAxMDkNCj4gPiA+ICsrKysrKysrKysrKysrKysrKysrLQ0KPiA+ID4gLS0N Cj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0p DQo+ID4gPiANCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Bzci5jDQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf cHNyLmMNCj4gPiA+IGluZGV4IGQ4N2IzNTc4MDZjOTEuLmY3YjdiMzc0Mzc0YjEgMTAwNjQ0DQo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jDQo+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jDQo+ID4gPiBA QCAtMTQ1MCw2ICsxNDUwLDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyDQo+ID4gPiBtYW5fdHJrX2N0 bF9wYXJ0aWFsX2ZyYW1lX2JpdF9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldg0KPiA+ ID4gICAgICAgICAgICAgIFBTUjJfTUFOX1RSS19DVExfU0ZfUEFSVElBTF9GUkFNRV9VUERBVEU7 DQo+ID4gPiAgfQ0KPiA+ID4gDQo+ID4gPiArc3RhdGljIGlubGluZSB1MzIgbWFuX3Rya19jdGxf Y29udGludW9zX2Z1bGxfZnJhbWUoc3RydWN0DQo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikNCj4gPiA+ICt7DQo+ID4gPiArICAgICByZXR1cm4gSVNfQUxERVJMQUtFX1AoZGV2X3By aXYpID8NCj4gPiA+ICsgICAgICAgICAgICBBRExQX1BTUjJfTUFOX1RSS19DVExfU0ZfQ09OVElO VU9TX0ZVTExfRlJBTUUgOg0KPiA+ID4gKyAgICAgICAgICAgIFBTUjJfTUFOX1RSS19DVExfU0Zf Q09OVElOVU9TX0ZVTExfRlJBTUU7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBp bmxpbmUgdTMyIG1hbl90cmtfY3RsX3N1X3JlZ2lvbl9zdGFydF9lbmRfbWFzayhzdHJ1Y3QNCj4g PiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ID4gK3sNCj4gPiA+ICsgICAgIGlm IChJU19BTERFUkxBS0VfUChkZXZfcHJpdikpDQo+ID4gPiArICAgICAgICAgICAgIHJldHVybg0K PiA+ID4gQURMUF9QU1IyX01BTl9UUktfQ1RMX1NVX1JFR0lPTl9TVEFSVF9BRERSX01BU0sNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgIEFETFBfUFNSMl9NQU5fVFJLX0NUTF9TVV9SRUdJT05f RU5EX0FERFJfTUFTDQo+ID4gPiBLOw0KPiA+ID4gKyAgICAgcmV0dXJuIFBTUjJfTUFOX1RSS19D VExfU1VfUkVHSU9OX1NUQVJUX0FERFJfTUFTSyB8DQo+ID4gPiArICAgICAgICAgICAgUFNSMl9N QU5fVFJLX0NUTF9TVV9SRUdJT05fRU5EX0FERFJfTUFTSzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ ID4gPiAgc3RhdGljIHZvaWQgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0IGludGVs X2RwDQo+ID4gPiAqaW50ZWxfZHApDQo+ID4gPiAgew0KPiA+ID4gICAgICAgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4gPiBAQCAt MTU0Niw4ICsxNTYyLDkgQEAgdm9pZA0KPiA+ID4gaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21h bl90cmtfY3RsKGNvbnN0DQo+ID4gPiBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdA0K PiA+ID4gICAgICAgaWYgKCFjcnRjX3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2gpDQo+ID4g PiAgICAgICAgICAgICAgIHJldHVybjsNCj4gPiA+IA0KPiA+ID4gLSAgICAgaW50ZWxfZGVfd3Jp dGUoZGV2X3ByaXYsIFBTUjJfTUFOX1RSS19DVEwoY3J0Y19zdGF0ZS0NCj4gPiA+ID4gY3B1X3Ry YW5zY29kZXIpLA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgY3J0Y19zdGF0ZS0+cHNyMl9t YW5fdHJhY2tfY3RsKTsNCj4gPiA+ICsgICAgIGludGVsX2RlX3JtdyhkZXZfcHJpdiwgUFNSMl9N QU5fVFJLX0NUTChjcnRjX3N0YXRlLQ0KPiA+ID4gPiBjcHVfdHJhbnNjb2RlciksDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgbWFuX3Rya19jdGxfc3VfcmVnaW9uX3N0YXJ0X2VuZF9tYXNrKGRl dl9wcml2KQ0KPiA+ID4gLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgIGNydGNfc3RhdGUtPnBz cjJfbWFuX3RyYWNrX2N0bCk7DQo+ID4gDQo+ID4gU2hvdWxkIHdlIGFjdHVhbGx5IG5vdyBjb25z aWRlciB0YWtpbmcgcHNyLT5sb2NrIGhlcmU/DQo+IA0KPiBJIGRvbid0IHRoaW5rIHdlIG5lZWQu IG1taW8gd3JpdGVzIGFyZSBzeW5jcm9uaXplZCwgdGhpcyB3aWxsIG5ldmVyDQo+IHNldCBjb250 aW51b3VzIGZ1bGwgZnJhbWUgYW5kIHdpbGwgb25seSBjbGVhciBzdSByZWdpb24gc3RhcnQgYW5k DQo+IGVuZC4NCj4gQWxzbyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGEgdGltZSBzZW5z aXRpdmUgc2VjdGlvbiBpZiB3ZQ0KPiBzcGVuZCB0b28gbXVjaCB0aW1lIGhlcmUgaXQgd2lsbCBj YXVzZSB2YmxhbmsgZXZhc2lvbiB3YXJuaW5ncy4NCj4gDQoNCk9rLCBob3cgYWJvdXQgaGl0dGlu ZyBmbHVzaC9pbnZhbGlkYXRlIGluIGJldHdlZW4gcmVhZC93cml0ZSBpbg0KaW50ZWxfZGVfcm13 PyBJcyB0aGF0IHBvc3NpYmxlPw0KDQo+ID4gPiAgfQ0KPiA+ID4gDQo+ID4gPiAgc3RhdGljIHZv aWQgcHNyMl9tYW5fdHJrX2N0bF9jYWxjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ID4gPiAq Y3J0Y19zdGF0ZSwNCj4gPiA+IEBAIC0yMTI3LDYgKzIxNDQsMjYgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcHNyX3dvcmsoc3RydWN0DQo+ID4gPiB3b3JrX3N0cnVjdA0KPiA+ID4gKndvcmspDQo+ID4g PiAgICAgICBtdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPiAgfQ0KPiA+ ID4gDQo+ID4gPiArc3RhdGljIHZvaWQgX3Bzcl9pbnZhbGlkYXRlX2hhbmRsZShzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50DQo+ID4gPiBwcmV2X2J1c3lfZnJvbnRidWZmZXJfYml0cykNCj4gPiA+ICt7 DQo+ID4gPiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19p OTE1KGludGVsX2RwKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIGlmIChpbnRlbF9kcC0+cHNyLnBz cjJfc2VsX2ZldGNoX2VuYWJsZWQpIHsNCj4gPiA+ICsgICAgICAgICAgICAgdTMyIHZhbCA9DQo+ ID4gPiBtYW5fdHJrX2N0bF9jb250aW51b3NfZnVsbF9mcmFtZShkZXZfcHJpdikgfA0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgbWFuX3Rya19jdGxfcGFydGlhbF9mcmFtZV9iaXRfZ2V0 KGRldl9wcmkNCj4gPiA+IHYpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgICAgICAvKiBjb250 aW51b3MgZnVsbCBmcmFtZSBpcyBhbHJlYWR5IGVuYWJsZWQgKi8NCj4gPiA+ICsgICAgICAgICAg ICAgaWYgKHByZXZfYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybjsNCj4gPiANCj4gPiBTaG91bGQgd2Ugc3RpbGwgdHJpZ2dlciB0aGUgdXBk YXRlIHVzaW5nIENVUlNVUkZMSVZFPyBPciBkbyB3ZSBuZWVkDQo+ID4gdGhhdCBhdCBhbGwgaW4g dGhlIGZpcnN0IHBsYWNlPw0KPiANCj4gKmNvbnRpbnVvcyBmdWxsIGZyYW1lKg0KPiANCj4gPiA+ ICsNCj4gPiA+ICsgICAgICAgICAgICAgaW50ZWxfZGVfcm13KGRldl9wcml2LCBQU1IyX01BTl9U UktfQ1RMKGludGVsX2RwLQ0KPiA+ID4gPiBwc3IudHJhbnNjb2RlciksIDAsIHZhbCk7DQo+ID4g PiArICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCBDVVJTVVJGTElWRShpbnRl bF9kcC0NCj4gPiA+ID4gcHNyLnBpcGUpLCAwKTsNCj4gPiANCj4gPiBTbyB0aGVzZSB0d28gcmVn aXN0ZXIgd3JpdGVzIGhlcmUgYXJlIHRyaWdnZXJpbmcgb25lIGZ1bGwgZnJhbWUNCj4gPiB1cGRh dGUuDQo+ID4gYW5kIGxlYXZpbmcgZnVsbCBmcmFtZSB1cGRhdGUgYml0IHNldCBzbyB0aGF0IGNv bWluZyB1cGRhdGVzIGFyZQ0KPiA+IGFsc28NCj4gPiBmdWxsIGZyYW1lLiBEaWQgSSB1bmRlcnN0 b29kIGl0IGNvcnJlY3RseT8NCj4gDQo+ICpjb250aW51b3MgZnVsbCBmcmFtZSoNCj4gDQo+ID4g QXMgaW52YWxpZGF0ZSBpcyBjYWxsZWQgYmVmb3JlIGZyb250YnVmZmVyIGlzIHdyaXRlbjogSXNu J3QgaXQNCj4gPiBhY3R1YWxseQ0KPiA+IHJlLXVwZGF0aW5nIHNhbWUgZnJhbWUgd2hpY2ggaXMg YWxyZWFkeSBzdXBwb3NlZCB0byBiZSBpbiBwYW5lbA0KPiA+IFJGQj8NCj4gPiANCj4gPiA+ICsg ICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgICAgICAgIGludGVsX3Bzcl9leGl0KGludGVsX2Rw KTsNCj4gPiA+ICsgICAgIH0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAgLyoqDQo+ID4gPiAg ICogaW50ZWxfcHNyX2ludmFsaWRhdGUgLSBJbnZhbGlkYWRlIFBTUg0KPiA+ID4gICAqIEBkZXZf cHJpdjogaTkxNSBkZXZpY2UNCj4gPiA+IEBAIC0yMTUxLDYgKzIxODgsNyBAQCB2b2lkIGludGVs X3Bzcl9pbnZhbGlkYXRlKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs DQo+ID4gPiAgICAgICBmb3JfZWFjaF9pbnRlbF9lbmNvZGVyX3dpdGhfcHNyKCZkZXZfcHJpdi0+ ZHJtLCBlbmNvZGVyKSB7DQo+ID4gPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwaXBlX2Zy b250YnVmZmVyX2JpdHMgPQ0KPiA+ID4gZnJvbnRidWZmZXJfYml0czsNCj4gPiA+ICAgICAgICAg ICAgICAgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9DQo+ID4gPiBlbmNfdG9faW50ZWxfZHAo ZW5jb2Rlcik7DQo+ID4gPiArICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwcmV2X2J1c3lfZnJv bnRidWZmZXJfYml0czsNCj4gPiA+IA0KPiA+ID4gICAgICAgICAgICAgICBtdXRleF9sb2NrKCZp bnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ID4gICAgICAgICAgICAgICBpZiAoIWludGVsX2RwLT5w c3IuZW5hYmxlZCkgew0KPiA+ID4gQEAgLTIxNTgsMTIgKzIxOTYsMTMgQEAgdm9pZCBpbnRlbF9w c3JfaW52YWxpZGF0ZShzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0K PiA+ID4gICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gICAgICAgICAgICAg ICB9DQo+ID4gPiANCj4gPiA+ICsgICAgICAgICAgICAgcHJldl9idXN5X2Zyb250YnVmZmVyX2Jp dHMgPSBpbnRlbF9kcC0NCj4gPiA+ID4gcHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0czsNCj4gPiA+ ICAgICAgICAgICAgICAgcGlwZV9mcm9udGJ1ZmZlcl9iaXRzICY9DQo+ID4gPiAgICAgICAgICAg ICAgICAgICAgICAgSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0soaW50ZWxfZHAtDQo+ID4gPiA+ cHNyLnBpcGUpOw0KPiA+ID4gICAgICAgICAgICAgICBpbnRlbF9kcC0+cHNyLmJ1c3lfZnJvbnRi dWZmZXJfYml0cyB8PQ0KPiA+ID4gcGlwZV9mcm9udGJ1ZmZlcl9iaXRzOw0KPiA+ID4gDQo+ID4g PiAgICAgICAgICAgICAgIGlmIChwaXBlX2Zyb250YnVmZmVyX2JpdHMpDQo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOw0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIF9wc3JfaW52YWxpZGF0ZV9oYW5kbGUoaW50ZWxfZHAsDQo+ID4gPiBwcmV2 X2J1c3lfZnJvbnRidWZmZXJfYml0cyk7DQo+ID4gPiANCj4gPiA+ICAgICAgICAgICAgICAgbXV0 ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ID4gICAgICAgfQ0KPiA+ID4gQEAg LTIxOTUsNiArMjIzNCw0OSBAQCB0Z2xfZGMzY29fZmx1c2hfbG9ja2VkKHN0cnVjdCBpbnRlbF9k cA0KPiA+ID4gKmludGVsX2RwLCB1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0cywNCj4gPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfZHAtPnBzci5kYzNjb19leGl0X2RlbGF5KTsN Cj4gPiA+ICB9DQo+ID4gPiANCj4gPiA+ICtzdGF0aWMgdm9pZCBfcHNyX2ZsdXNoX2hhbmRsZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludA0KPiA+ID4gcHJldl9idXN5X2Zyb250YnVmZmVyX2JpdHMpDQo+ID4g PiArew0KPiA+ID4gKyAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBf dG9faTkxNShpbnRlbF9kcCk7DQo+ID4gPiArDQo+ID4gPiArICAgICBpZiAoaW50ZWxfZHAtPnBz ci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkKSB7DQo+ID4gPiArICAgICAgICAgICAgIC8qIGlzIGNv bnRpbnVvcyBmdWxsIGZyYW1lIGVuYWJsZWQ/ICovDQo+ID4gPiArICAgICAgICAgICAgIGlmIChw cmV2X2J1c3lfZnJvbnRidWZmZXJfYml0cykgew0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IC8qIGl0IGlzLCBjYW4gd2UgdHVybiBpdCBvZmY/ICovDQo+ID4gDQo+ID4gQXMgeW91IGFyZSB1 c2luZyB0aGlzIHByZXZfYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIG9ubHkgdG8gY2hlY2sgaWYNCj4g PiAiY29udGludW9zIGZ1bGwgZnJhbWUiIGlzIGVuYWJsZWQgYW5kIG5vdGhpbmcgZWxzZTogTWF5 YmUgeW91IGNvdWxkDQo+ID4ganVzdCBuYW1lIGl0IGFzIGl0IGlzIGUuZy4gYm9vbCBjZmZfZW5h YmxlZCBvciBib29sDQo+ID4gY29udGludW91c19mdWxsX2ZyYW1lIG9yLi4uc2FtZSBjb21tZW50 IGluIF9wc3JfaW52YWxpZGF0ZV9oYW5kbGUuDQo+ID4gVGhpcw0KPiA+IHdvdWxkIGFsbG93IHlv dSB0byBkcm9wIGNvdXBsZSBvZiBjb21tZW50cy4NCj4gDQo+IHByZXZfYnVzeV9mcm9udGJ1ZmZl cl9iaXRzIG9yIGEgYm9vbCBhbnl3YXkgd29ya3MgZm9yIG1lLCBpZiB5b3UNCj4gdGhpbmsgaXMg ZWFzaWVyIHRvIHVuZGVyc3RhbmQgSSBjYW4gY2hhbmdlIHRvIGJvb2wuDQoNClRvIG15IG9waW5p b24gaXQgYWN0dWFsbHkgaGVscHMgdW5kZXJzdGFuZGluZyB0aGUgY29kZS4gVGhpcyB3YXMganVz dA0KaWRlYS4gSSdtIG5vdCBpbnNpc3RpbmcgdG8gY2hhbmdlIGlmIHlvdSB0aGluayBjdXJyZW50 IG9uZSBpcyBiZXR0ZXIuDQoNCj4gDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGlu dGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzID09DQo+ID4gPiAwKSB7DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgY2xlYXIgPQ0KPiA+ID4gbWFuX3Rya19j dGxfY29udGludW9zX2Z1bGxfZnJhbWUoZGV2X3ByaXYpOw0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdTMyIHNldCA9DQo+ID4gPiBtYW5fdHJrX2N0bF9zaW5nbGVfZnVsbF9m cmFtZV9iaXRfZ2V0KGRldl9wcml2KSB8DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWFuX3Rya19jdGxfcGFydGlhbF9mcmFtZQ0KPiA+ID4gX2JpdA0KPiA+ ID4gX2dldChkZXZfcHJpdik7DQo+ID4gPiArDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdHVybiBj b250aW51b3MgZnVsbCBmcmFtZSBvZmYNCj4gPiA+IGFuZCBkbw0KPiA+ID4gYSBzaW5nbGUNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZ1bGwgZnJhbWUNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50ZWxfZGVfcm13KGRldl9wcml2LA0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUjJfTUFOX1RSS19DVEwoaW50ZWwNCj4gPiA+ IF9kcC0NCj4gPiA+ID4gcHNyLnRyYW5zY29kZXIpLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyLCBzZXQpOw0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+ID4gPiBDVVJTVVJG TElWRShpbnRlbF9kcC0+cHNyLnBpcGUpLCAwKTsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICB9DQo+ID4gPiArICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgLyoNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKiBjb250aW51b3MgZnVsbCBm cmFtZSBpcyBkaXNhYmxlZCwgb25seSBhDQo+ID4gPiBzaW5nbGUgZnVsbA0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAqIGZyYW1lIGlzIHJlcXVpcmVkDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICovDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcHNyX2ZvcmNlX2h3X3Ry YWNraW5nX2V4aXQoaW50ZWxfZHApOw0KPiA+ID4gKyAgICAgICAgICAgICB9DQo+ID4gPiArICAg ICB9IGVsc2Ugew0KPiA+ID4gKyAgICAgICAgICAgICAvKg0KPiA+ID4gKyAgICAgICAgICAgICAg KiBpZiBwcmV2X2J1c3lfZnJvbnRidWZmZXJfYml0cyBpcyBzZXQsIGl0IG1lYW5zDQo+ID4gPiB0 aGF0DQo+ID4gPiBQU1IgaXMNCj4gPiA+ICsgICAgICAgICAgICAgICogaW5hY3RpdmUNCj4gPiA+ ICsgICAgICAgICAgICAgICovDQo+ID4gPiArICAgICAgICAgICAgIGlmIChwcmV2X2J1c3lfZnJv bnRidWZmZXJfYml0cyA9PSAwKQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHBzcl9mb3Jj ZV9od190cmFja2luZ19leGl0KGludGVsX2RwKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAg ICAgaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSAmJiAhaW50ZWxfZHAtDQo+ID4gPiA+IHBzci5i dXN5X2Zyb250YnVmZmVyX2JpdHMpDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgc2NoZWR1 bGVfd29yaygmaW50ZWxfZHAtPnBzci53b3JrKTsNCj4gPiA+ICsgICAgIH0NCj4gPiA+ICt9DQo+ ID4gPiArDQo+ID4gPiAgLyoqDQo+ID4gPiAgICogaW50ZWxfcHNyX2ZsdXNoIC0gRmx1c2ggUFNS DQo+ID4gPiAgICogQGRldl9wcml2OiBpOTE1IGRldmljZQ0KPiA+ID4gQEAgLTIyMTYsNiArMjI5 OCw3IEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdA0KPiA+ID4gZHJtX2k5MTVfcHJpdmF0 ZQ0KPiA+ID4gKmRldl9wcml2LA0KPiA+ID4gICAgICAgZm9yX2VhY2hfaW50ZWxfZW5jb2Rlcl93 aXRoX3BzcigmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgew0KPiA+ID4gICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgcGlwZV9mcm9udGJ1ZmZlcl9iaXRzID0NCj4gPiA+IGZyb250YnVmZmVyX2Jp dHM7DQo+ID4gPiAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQ0KPiA+ ID4gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOw0KPiA+ID4gKyAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgcHJldl9idXN5X2Zyb250YnVmZmVyX2JpdHM7DQo+ID4gPiANCj4gPiA+ICAgICAgICAg ICAgICAgbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiA+ICAgICAgICAgICAg ICAgaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpIHsNCj4gPiA+IEBAIC0yMjIzLDYgKzIzMDYs NyBAQCB2b2lkIGludGVsX3Bzcl9mbHVzaChzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUN Cj4gPiA+ICpkZXZfcHJpdiwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsN Cj4gPiA+ICAgICAgICAgICAgICAgfQ0KPiA+ID4gDQo+ID4gPiArICAgICAgICAgICAgIHByZXZf YnVzeV9mcm9udGJ1ZmZlcl9iaXRzID0gaW50ZWxfZHAtDQo+ID4gPiA+IHBzci5idXN5X2Zyb250 YnVmZmVyX2JpdHM7DQo+ID4gPiAgICAgICAgICAgICAgIHBpcGVfZnJvbnRidWZmZXJfYml0cyAm PQ0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgIElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNL KGludGVsX2RwLQ0KPiA+ID4gPnBzci5waXBlKTsNCj4gPiA+ICAgICAgICAgICAgICAgaW50ZWxf ZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgJj0NCj4gPiA+IH5waXBlX2Zyb250YnVmZmVy X2JpdHM7DQo+ID4gPiBAQCAtMjIzMiwyNSArMjMxNiwyMiBAQCB2b2lkIGludGVsX3Bzcl9mbHVz aChzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ICpkZXZfcHJpdiwNCj4gPiA+ ICAgICAgICAgICAgICAgICogd2UgaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGUgUFNSIGlzIG5vdCBh Y3RpdmF0ZWQNCj4gPiA+IHVudGlsDQo+ID4gPiAgICAgICAgICAgICAgICAqIGludGVsX3Bzcl9y ZXN1bWUoKSBpcyBjYWxsZWQuDQo+ID4gPiAgICAgICAgICAgICAgICAqLw0KPiA+ID4gLSAgICAg ICAgICAgICBpZiAoaW50ZWxfZHAtPnBzci5wYXVzZWQpIHsNCj4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICBtdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gPiAtICAgICAgICAgICAgIH0NCj4gPiA+ICsg ICAgICAgICAgICAgaWYgKGludGVsX2RwLT5wc3IucGF1c2VkKQ0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgIGdvdG8gZXhpdDsNCj4gPiA+IA0KPiA+ID4gICAgICAgICAgICAgICBpZiAob3Jp Z2luID09IE9SSUdJTl9GTElQIHx8DQo+ID4gPiAgICAgICAgICAgICAgICAgICAob3JpZ2luID09 IE9SSUdJTl9DVVJTT1JfVVBEQVRFICYmDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgIWludGVs X2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCkpIHsNCj4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICB0Z2xfZGMzY29fZmx1c2hfbG9ja2VkKGludGVsX2RwLA0KPiA+ID4gZnJvbnRidWZm ZXJfYml0cywgb3JpZ2luKTsNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBtdXRleF91bmxv Y2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgY29u dGludWU7DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0Ow0KPiA+ID4gICAg ICAgICAgICAgICB9DQo+ID4gPiANCj4gPiA+IC0gICAgICAgICAgICAgLyogQnkgZGVmaW5pdGlv biBmbHVzaCA9IGludmFsaWRhdGUgKyBmbHVzaCAqLw0KPiA+ID4gLSAgICAgICAgICAgICBpZiAo cGlwZV9mcm9udGJ1ZmZlcl9iaXRzKQ0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIHBzcl9m b3JjZV9od190cmFja2luZ19leGl0KGludGVsX2RwKTsNCj4gPiA+ICsgICAgICAgICAgICAgaWYg KHBpcGVfZnJvbnRidWZmZXJfYml0cyA9PSAwKQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IGdvdG8gZXhpdDsNCj4gPiA+IA0KPiA+ID4gLSAgICAgICAgICAgICBpZiAoIWludGVsX2RwLT5w c3IuYWN0aXZlICYmICFpbnRlbF9kcC0NCj4gPiA+ID4gcHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0 cykNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZV93b3JrKCZpbnRlbF9kcC0+ cHNyLndvcmspOw0KPiA+ID4gKyAgICAgICAgICAgICAvKiBCeSBkZWZpbml0aW9uIGZsdXNoID0g aW52YWxpZGF0ZSArIGZsdXNoICovDQo+ID4gPiArICAgICAgICAgICAgIF9wc3JfZmx1c2hfaGFu ZGxlKGludGVsX2RwLA0KPiA+ID4gcHJldl9idXN5X2Zyb250YnVmZmVyX2JpdHMpOw0KPiA+ID4g K2V4aXQ6DQo+ID4gDQo+ID4gSSB0aGluayB5b3Ugc2hvdWxkIG5hbWUgaXQgYXMgdW5sb2NrLg0K PiA+IA0KPiA+ID4gICAgICAgICAgICAgICBtdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9j ayk7DQo+ID4gPiAgICAgICB9DQo+ID4gPiAgfQ0KPiA+IA0KPiA+IEJSLA0KPiA+IA0KPiA+IEpv dW5pIEjDtmdhbmRlcg0KPiA+IA0KDQo=