Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp4508137rwb; Wed, 17 Aug 2022 00:48:12 -0700 (PDT) X-Google-Smtp-Source: AA6agR6gSnCxTO70n9bDS/frBmIzYvNZg/reVcTi6xTFUSr5kbddFOfqvmp7uZeMtgwt4UdoNlIT X-Received: by 2002:a05:6402:f25:b0:43d:e499:e32e with SMTP id i37-20020a0564020f2500b0043de499e32emr1574052eda.2.1660722491739; Wed, 17 Aug 2022 00:48:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660722491; cv=none; d=google.com; s=arc-20160816; b=KSZG+xSQBEmVbYCEvCTI5g+Y8bhtMjJfgvYceNZQ0OuK4dY5Gz009gFV530mpCXSG4 ZYQQLWW6w2D0UVcpn4LKEXzdCgQ3cngRp7ks4saJKhj9Xc5EqDYxIWBI54ZATU+sL0p4 domBBJ0AlEosyeqzsZZrGmSW0aa+zFNlnA9N9548EXUeiwt1TmLrOqCfykhygKT3/yzX Qn5K5B/FV8C4gbRJtdtwBPBo0EFlHgINngZlrCacILvH0mRsGNiYWfIgJdnXZUSLm47T 0mZ9dVP99c/K5JiuHAqMYSx7Dr//5a6WBP92kSlj/1WXm5asEev4iGFk7mvGFGxoFEyq 8Efg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:organization:references:in-reply-to:date :cc:to:from:subject:message-id:dkim-signature; bh=cbxpU/raWOKvEQ98A79iZrIgRaxLlpfVle7uDaueNXk=; b=Wzsh+FRM0rx9Be/ZNCkfwXYGWwQz4dJr6am9w4Y8ybfuOf82AqKYQjScXNKyeP463B 5NIKcXxt4TYEMx4lXbtZ6ojlg2rZKIuTME9KlcZMX5snYQeEI5iA7N1xSu/leE04xd3N bvqu1Rz6gBZyLzK1+HzhM/tD6UfT1++6scW3gFxXi4LE9okUYbhXsgr+L1WWF2qMvlgk Rgp0bMo4opibA5v5BARGx/XXjWX6cRNemkvvfMQWbqplB6gKZRtAEPGNXaDlqejGUVk1 FW2Z/ZLe4thzwsV/rqyTJpYpz1dGkhK6QG2RquQzBfJG0D2B4sBlkd1NVDfO6UYL/lC6 NmBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=kxG6xr5O; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i20-20020a0564020f1400b0043bbb93fd28si11663709eda.102.2022.08.17.00.47.45; Wed, 17 Aug 2022 00:48:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=kxG6xr5O; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231256AbiHQHfS (ORCPT + 99 others); Wed, 17 Aug 2022 03:35:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50176 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232206AbiHQHfD (ORCPT ); Wed, 17 Aug 2022 03:35:03 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 024E16D57B for ; Wed, 17 Aug 2022 00:34:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1660721697; x=1692257697; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=cbxpU/raWOKvEQ98A79iZrIgRaxLlpfVle7uDaueNXk=; b=kxG6xr5OEGAxG4sIekN8DNNyf7ewuVKKfIsWtVUwBAOvQP2hcCCx0rbL YjIbRfikITLU+gHYAB7LKj0MWGhb/UO7K0BOKC3XWuDpZAY2q2cMQg06X ahA7SMEbBMKdtPvcI/0mP2SgX3mRoJkcRTfqbsQnm0Q31reVelFrjxeyH /LmUUjSRDj5250V/P2RTA0L3QTAlAdj+YO+yJNr9Q1NhM9ydyGc4mjHRS DRZRypxhqMS/f+5uHOwtiLlJu2eUJ4fKeo5lsRDAJ+JWttHFtaG27f5bz e4azC7RDt2QQIy88RMEcichuU35XHHMHXIFpFxLo4JsbVGxa3snmjmxVj w==; X-IronPort-AV: E=McAfee;i="6400,9594,10441"; a="292424393" X-IronPort-AV: E=Sophos;i="5.93,242,1654585200"; d="scan'208";a="292424393" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Aug 2022 00:34:57 -0700 X-IronPort-AV: E=Sophos;i="5.93,242,1654585200"; d="scan'208";a="558016792" Received: from flayounx-mobl.ger.corp.intel.com (HELO [10.249.254.101]) ([10.249.254.101]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Aug 2022 00:34:54 -0700 Message-ID: <49c1adc00bdd7aba3d3ffd1ed5e53de2d7d5f1a1.camel@linux.intel.com> Subject: Re: [PATCH] drm/i915: Fix random -ENOSPC eviction errors due to locked vma objects From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Sviatoslav Peleshko Cc: Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Daniel Vetter , Maarten Lankhorst , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Date: Wed, 17 Aug 2022 09:34:40 +0200 In-Reply-To: <20220817065541.30101-1-sviatoslav.peleshko@globallogic.com> References: <20220817065541.30101-1-sviatoslav.peleshko@globallogic.com> Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 (3.44.4-1.fc36) MIME-Version: 1.0 X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_HI,SPF_HELO_NONE, SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIyLTA4LTE3IGF0IDA5OjU1ICswMzAwLCBTdmlhdG9zbGF2IFBlbGVzaGtvIHdy b3RlOgo+IFRoZSBpOTE1X2dlbV9vYmplY3RfdHJ5bG9jayB3ZSBoYWQgaW4gdGhlIGdyYWJfdm1h KCkgbWFrZXMgaXQgcmV0dXJuCj4gZmFsc2UKPiB3aGVuIHRoZSB2bWEtPm9iaiBpcyBhbHJlYWR5 IGxvY2tlZC4gSW4gdGhpcyBjYXNlIHdlJ2xsIHNraXAgdGhpcyB2bWEKPiBkdXJpbmcgZXZpY3Rp b24sIGFuZCBldmVudHVhbGx5IG1pZ2h0IGJlIGZvcmNlZCB0byByZXR1cm4gLUVOT1NQQwo+IGV2 ZW4KPiB0aG91Z2ggd2UgY291bGQndmUgZXZpY3RlZCB0aGlzIHZtYSBpZiB3ZSB3YWl0ZWQgZm9y IHRoZSBsb2NrIGEgYml0Lgo+IAo+IFRvIGZpeCB0aGlzLCByZXBsYWNlIHRoZSBpOTE1X2dlbV9v YmplY3RfdHJ5bG9jayB3aXRoCj4gaTkxNV9nZW1fb2JqZWN0X2xvY2suCj4gQW5kIGJlY2F1c2Ug d2UgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGUgcG90ZW50aWFsIGRlYWRsb2NrIG5vdywKPiBidWJi bGUtdXAKPiB0aGUgZXJyb3IgY29kZSwgc28gaXQgd2lsbCBiZSBjb3JyZWN0bHkgaGFuZGxlZCBi eSB0aGUgV1cgbWVjaGFuaXNtLgo+IAo+IFRoaXMgZml4ZXMgdGhlIGlzc3VlCj4gaHR0cHM6Ly9n aXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9pbnRlbC8tL2lzc3Vlcy82NTY0Cj4gCj4gRml4ZXM6 IDdlMDA4OTdiZThiZiAoImRybS9pOTE1OiBBZGQgb2JqZWN0IGxvY2tpbmcgdG8KPiBpOTE1X2dl bV9ldmljdF9mb3Jfbm9kZSBhbmQgaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nLCB2Mi4iKQo+IFNp Z25lZC1vZmYtYnk6IFN2aWF0b3NsYXYgUGVsZXNoa28KPiA8c3ZpYXRvc2xhdi5wZWxlc2hrb0Bn bG9iYWxsb2dpYy5jb20+Cj4gLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l dmljdC5jIHwgNjkgKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+IC0tCj4gwqAxIGZpbGUgY2hh bmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiBpbmRleCBmMDI1ZWU0ZmE1MjYuLjlkNDNmMjEzZjY4 ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+IEBAIC01NSw0OSAr NTUsNTggQEAgc3RhdGljIGludCBnZ3R0X2ZsdXNoKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiBpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBNQVhfU0NIRURV TEVfVElNRU9VVCk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGJvb2wgZ3JhYl92bWEoc3RydWN0IGk5 MTVfdm1hICp2bWEsIHN0cnVjdCBpOTE1X2dlbV93d19jdHgKPiAqd3cpCj4gK3N0YXRpYyBpbnQg Z3JhYl92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBpOTE1X2dlbV93d19jdHgKPiAq d3cpCj4gwqB7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IHJldCA9IDA7Cj4gKwo+IMKgwqDCoMKgwqDC oMKgwqAvKgo+IMKgwqDCoMKgwqDCoMKgwqAgKiBXZSBhZGQgdGhlIGV4dHJhIHJlZmNvdW50IHNv IHRoZSBvYmplY3QgZG9lc24ndCBkcm9wIHRvCj4gemVybyB1bnRpbAo+IMKgwqDCoMKgwqDCoMKg wqAgKiBhZnRlciB1bmdyYWJfdm1hKCksIHRoaXMgd2F5IHRyeWxvY2sgaXMgYWx3YXlzIHBhaXJl ZCB3aXRoCj4gdW5sb2NrLgo+IMKgwqDCoMKgwqDCoMKgwqAgKi8KPiDCoMKgwqDCoMKgwqDCoMKg aWYgKGk5MTVfZ2VtX29iamVjdF9nZXRfcmN1KHZtYS0+b2JqKSkgewo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoIWk5MTVfZ2VtX29iamVjdF90cnlsb2NrKHZtYS0+b2JqLCB3 dykpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X2xvY2sodm1hLT5vYmosIHd3KTsKCklzbid0IHRoZSB2bS0+bXV0ZXggaGVsZCBoZXJlPyBJ ZiBzbywgdGhlbiB0aGlzIHdvdWxkIGJlIGEgbG9ja2RlcAp2aW9sYXRpb24uCgovVGhvbWFzCgoK Cgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGk5MTVfZ2VtX29iamVjdF9wdXQo dm1hLT5vYmopOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIGZhbHNlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDC oMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBEZWFkIG9iamVjdHMgZG9uJ3QgbmVlZCBwaW5zICovCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBhdG9taWNfYW5kKH5JOTE1X1ZNQV9QSU5fTUFTSywgJnZtYS0+ZmxhZ3MpOwo+ IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gdHJ1ZTsKPiAr wqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIHVuZ3Jh Yl92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK3N0YXRpYyB2b2lkIHVuZ3JhYl92bWEoc3Ry dWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBpOTE1X2dlbV93d19jdHgKPiAqd3cpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoGlmIChkeWluZ192bWEodm1hKSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybjsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGk5MTVfZ2VtX29iamVj dF91bmxvY2sodm1hLT5vYmopOwo+ICvCoMKgwqDCoMKgwqDCoGlmICghd3cpCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGk5MTVfZ2VtX29iamVjdF91bmxvY2sodm1hLT5vYmopOwo+ ICsKPiDCoMKgwqDCoMKgwqDCoMKgaTkxNV9nZW1fb2JqZWN0X3B1dCh2bWEtPm9iaik7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGJvb2wKPiArc3RhdGljIGludAo+IMKgbWFya19mcmVlKHN0cnVjdCBk cm1fbW1fc2NhbiAqc2NhbiwKPiDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGk5MTVfZ2VtX3d3 X2N0eCAqd3csCj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+IMKg wqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgZmxhZ3MsCj4gwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBsaXN0X2hlYWQgKnVud2luZCkKPiDCoHsKPiArwqDCoMKgwqDCoMKgwqBpbnQgZXJy Owo+ICsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEpKQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5PU1BDOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKg aWYgKCFncmFiX3ZtYSh2bWEsIHd3KSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIGZhbHNlOwo+ICvCoMKgwqDCoMKgwqDCoGVyciA9IGdyYWJfdm1hKHZtYSwgd3cpOwo+ ICvCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiBlcnI7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbGlzdF9hZGQoJnZtYS0+ZXZpY3Rf bGluaywgdW53aW5kKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gZHJtX21tX3NjYW5fYWRkX2Js b2NrKHNjYW4sICZ2bWEtPm5vZGUpOwo+ICvCoMKgwqDCoMKgwqDCoGlmICghZHJtX21tX3NjYW5f YWRkX2Jsb2NrKHNjYW4sICZ2bWEtPm5vZGUpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gLUVOT1NQQzsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBib29sIGRlZmVyX2V2aWN0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ IEBAIC0xNTAsNiArMTU5LDcgQEAgaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHN0cnVjdAo+IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gwqDCoMKgwqDCoMKgwqDCoGVudW0gZHJtX21tX2luc2Vy dF9tb2RlIG1vZGU7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpOTE1X3ZtYSAqYWN0aXZlOwo+ IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ICvCoMKgwqDCoMKgwqDCoGludCBlcnIgPSAwOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtLT5tdXRleCk7Cj4g wqDCoMKgwqDCoMKgwqDCoHRyYWNlX2k5MTVfZ2VtX2V2aWN0KHZtLCBtaW5fc2l6ZSwgYWxpZ25t ZW50LCBmbGFncyk7Cj4gQEAgLTIxMCwxNyArMjIwLDIzIEBAIGk5MTVfZ2VtX2V2aWN0X3NvbWV0 aGluZyhzdHJ1Y3QKPiBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChtYXJrX2ZyZWUoJnNjYW4sIHd3LCB2bWEsIGZsYWdzLCAmZXZpY3Rpb25fbGlzdCkpCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IG1hcmtfZnJlZSgmc2Nhbiwgd3cs IHZtYSwgZmxhZ3MsCj4gJmV2aWN0aW9uX2xpc3QpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoIWVycikKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIGZvdW5kOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoZXJyID09IC1FREVBRExLKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYnJlYWs7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqAvKiBOb3RoaW5nIGZvdW5kLCBjbGVhbiB1cCBhbmQgYmFpbCBvdXQhICovCj4gwqDCoMKg wqDCoMKgwqDCoGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIG5leHQsICZldmljdGlvbl9s aXN0LAo+IGV2aWN0X2xpbmspIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dCA9IGRybV9tbV9zY2FuX3JlbW92ZV9ibG9jaygmc2NhbiwgJnZtYS0+bm9kZSk7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCVUdfT04ocmV0KTsKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdW5ncmFiX3ZtYSh2bWEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB1bmdyYWJfdm1hKHZtYSwgd3cpOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiAr wqDCoMKgwqDCoMKgwqBpZiAoZXJyID09IC1FREVBRExLKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+ICsKPiDCoMKgwqDCoMKgwqDCoMKgLyoKPiDCoMKgwqDC oMKgwqDCoMKgICogQ2FuIHdlIHVucGluIHNvbWUgb2JqZWN0cyBzdWNoIGFzIGlkbGUgaHcgY29u dGVudHMsCj4gwqDCoMKgwqDCoMKgwqDCoCAqIG9yIHBlbmRpbmcgZmxpcHM/IEJ1dCBzaW5jZSBv bmx5IHRoZSBHR1RUIGhhcyBnbG9iYWwKPiBlbnRyaWVzCj4gQEAgLTI2Nyw3ICsyODMsNyBAQCBp OTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0Cj4gaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBfX2k5MTVf dm1hX3Bpbih2bWEpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsaXN0X2Rl bCgmdm1hLT5ldmljdF9saW5rKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHVuZ3JhYl92bWEodm1hKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuZ3JhYl92bWEodm1hLCB3dyk7Cj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IEBAIC0yNzcs MTcgKzI5MywyMSBAQCBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0Cj4gaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9faTkxNV92 bWFfdW5waW4odm1hKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQg PT0gMCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZXQgPSBfX2k5MTVfdm1hX3VuYmluZCh2bWEpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB1bmdyYWJfdm1hKHZtYSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVu Z3JhYl92bWEodm1hLCB3dyk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqB3aGlsZSAocmV0ID09IDAgJiYgKG5vZGUgPSBkcm1fbW1fc2Nhbl9jb2xvcl9ldmljdCgm c2NhbikpKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2bWEgPSBjb250YWlu ZXJfb2Yobm9kZSwgc3RydWN0IGk5MTVfdm1hLCBub2RlKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyogSWYgd2UgZmluZCBhbnkgbm9uLW9iamVjdHMgKCF2bWEpLCB3 ZSBjYW5ub3QgZXZpY3QKPiB0aGVtICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmICh2bWEtPm5vZGUuY29sb3IgIT0gSTkxNV9DT0xPUl9VTkVWSUNUQUJMRSAmJgo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ3JhYl92bWEodm1hLCB3dykpIHsKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IF9faTkx NV92bWFfdW5iaW5kKHZtYSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB1bmdyYWJfdm1hKHZtYSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh2bWEtPm5vZGUuY29sb3IgIT0gSTkxNV9DT0xPUl9VTkVWSUNUQUJMRSkgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gZ3JhYl92 bWEodm1hLCB3dyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIXJldCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IF9faTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdW5ncmFiX3ZtYSh2bWEsIHd3KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAocmV0ICE9IC1FREVBRExLKSB7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0ID0gLUVOT1NQQzsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gLUVOT1NQ QzsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiBAQCAtMzgyLDggKzQwMiwx MSBAQCBpbnQgaTkxNV9nZW1fZXZpY3RfZm9yX25vZGUoc3RydWN0Cj4gaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBicmVhazsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWdyYWJfdm1hKHZtYSwgd3cpKSB7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSAtRU5PU1BD Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBncmFiX3ZtYSh2bWEsIHd3 KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkgewo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCAhPSAtRURFQURM SykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXQgPSAtRU5PU1BDOwo+ICsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiDCoAo+IEBAIC00MDUsNyArNDI4LDcgQEAgaW50IGk5MTVfZ2VtX2V2aWN0X2Zv cl9ub2RlKHN0cnVjdAo+IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0ID09IDApCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gX19pOTE1X3ZtYV91bmJpbmQodm1hKTsKPiDC oAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bmdyYWJfdm1hKHZtYSk7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuZ3JhYl92bWEodm1hLCB3dyk7Cj4gwqDCoMKg wqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0OwoK