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=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 61787C6377A for ; Wed, 21 Jul 2021 20:28:03 +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 1078A61222 for ; Wed, 21 Jul 2021 20:28:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1078A61222 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=jlekstrand.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 92AC86E98B; Wed, 21 Jul 2021 20:28:02 +0000 (UTC) Received: from mail-yb1-xb33.google.com (mail-yb1-xb33.google.com [IPv6:2607:f8b0:4864:20::b33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 136CD6E98B for ; Wed, 21 Jul 2021 20:28:01 +0000 (UTC) Received: by mail-yb1-xb33.google.com with SMTP id p22so5030918yba.7 for ; Wed, 21 Jul 2021 13:28:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jlekstrand-net.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=upuSMfXKDZhE1IRVL7CXE+rPq8mnLnLf/0ybQcb2Q0s=; b=thGxgDZIsqhhVOgeWUOFjJtHGJBHvrczNrQhd5RR4Bv91L3ctqlN2mxOly7so9AlX8 /qAbSrQwxq/WtWC5Reox2C1SEL/OSeF+Meyckdan3uNrXsqJEnViTTd+EWYClh577y+H da3/kQomVHhNSVjk/PeP6Vv3teAY7V+TfNBXA2Z3R3lgHi8I5f1MM5/CPiEGCIgEl6Uc 61NXEl6cjWSqZlmBzsax9LJb1JmKa8cQdh7m7VICSSdZppdW2+D4ZANv34Gth7g3mtPE xY7Wt0/rW/dWI0dISpOV5UbfqANqxpttL48fd2tO+3fZ59HYGI10cm8g8kwDKQ2p20CT unmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=upuSMfXKDZhE1IRVL7CXE+rPq8mnLnLf/0ybQcb2Q0s=; b=DYbML9IShZ3lt2/X2wPfPwne1/ZJuw1ea3r3pdmVKUfPV/dWYvnz1G+WFJ6z7LqXdz Pvee7f9PKTyxHvEC8L9B/qGIpCOcBkHVh/mRFh2RlV0uB/ALIgGhVV5YqVPyvJf4fULy ++Sy8dzbKqcK/Eg7JixBVrDiGWkcHtPepMB2GShswT18vNGkGTX8fyiNRBPKQ6KDPD// FzO6lHWXyVdq9xop47tGCNlLX9/KGzf2mEQb7ROXWDENYzrU83RYEwI4JgA/FdUCbmg0 0XkQQKy99T+zY6nT/744cf//R8joxQnyMxHV44aPyKGPvlznZg5JY53FbDrP3fRVUw/H ItEg== X-Gm-Message-State: AOAM530GG6ATlyt6nRn5FjV5cUEvJvzkn7bWE7oyzDHVrRZLn5oIuLx/ w7NALViso7T1EM8whIG+6qT+FyTI+aN7iMHXUmAoyw== X-Google-Smtp-Source: ABdhPJyBj8zNUtcKy34p1qrEGTQieMHkkNIk8vNWVUC5B1V9crnFMrTtHMyxeS5ePY9kq4ALBqOubsXRmaOTGFd9nLw= X-Received: by 2002:a25:2345:: with SMTP id j66mr43855267ybj.287.1626899280132; Wed, 21 Jul 2021 13:28:00 -0700 (PDT) MIME-Version: 1.0 References: <20210715101536.2606307-1-matthew.auld@intel.com> <20210715101536.2606307-4-matthew.auld@intel.com> In-Reply-To: <20210715101536.2606307-4-matthew.auld@intel.com> From: Jason Ekstrand Date: Wed, 21 Jul 2021 15:27:48 -0500 Message-ID: To: Matthew Auld Subject: Re: [Intel-gfx] [PATCH 3/4] drm/i915/userptr: Probe existence of backing struct pages upon creation 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: , Cc: =?UTF-8?Q?Thomas_Hellstr=C3=B6m?= , Intel GFX , Maling list - DRI developers , Chris Wilson , Kenneth Graunke , Daniel Vetter Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVGh1LCBKdWwgMTUsIDIwMjEgYXQgNToxNiBBTSBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVs ZEBpbnRlbC5jb20+IHdyb3RlOgo+Cj4gRnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Cj4KPiBKYXNvbiBFa3N0cmFuZCByZXF1ZXN0ZWQgYSBtb3JlIGVmZmljaWVu dCBtZXRob2QgdGhhbiB1c2VycHRyK3NldC1kb21haW4KPiB0byBkZXRlcm1pbmUgaWYgdGhlIHVz ZXJwdHIgb2JqZWN0IHdhcyBiYWNrZWQgYnkgYSBjb21wbGV0ZSBzZXQgb2YgcGFnZXMKPiB1cG9u IGNyZWF0aW9uLiBUbyBiZSBtb3JlIGVmZmljaWVudCB0aGFuIHNpbXBseSBwb3B1bGF0aW5nIHRo ZSB1c2VycHRyCj4gdXNpbmcgZ2V0X3VzZXJfcGFnZXMoKSAoYXMgZG9uZSBieSB0aGUgY2FsbCB0 byBzZXQtZG9tYWluIG9yIGV4ZWNidWYpLAo+IHdlIGNhbiB3YWxrIHRoZSB0cmVlIG9mIHZtX2Fy ZWFfc3RydWN0IGFuZCBjaGVjayBmb3IgZ2FwcyBvciB2bWEgbm90Cj4gYmFja2VkIGJ5IHN0cnVj dCBwYWdlIChWTV9QRk5NQVApLiBUaGUgcXVlc3Rpb24gaXMgaG93IHRvIGhhbmRsZQo+IFZNX01J WEVETUFQIHdoaWNoIG1heSBiZSBlaXRoZXIgc3RydWN0IHBhZ2Ugb3IgcGZuIGJhY2tlZC4uLgo+ Cj4gV2l0aCBkaXNjcmV0ZSBhcmUgZ29pbmcgdG8gZHJvcCBzdXBwb3J0IGZvciBzZXRfZG9tYWlu KCksIHNvIG9mZmVyaW5nIGEKPiB3YXkgdG8gcHJvYmUgdGhlIHBhZ2VzLCB3aXRob3V0IGhhdmlu ZyB0byByZXNvcnQgdG8gZHVtbXkgYmF0Y2hlcyBoYXMKPiBiZWVuIHJlcXVlc3RlZC4KPgo+IHYy Ogo+IC0gYWRkIG5ldyBxdWVyeSBwYXJhbSBmb3IgdGhlIFBST1BCRSBmbGFnLCBzbyB1c2Vyc3Bh Y2UgY2FuIGVhc2lseQo+ICAgY2hlY2sgaWYgdGhlIGtlcm5lbCBzdXBwb3J0cyBpdChKYXNvbiku Cj4gLSB1c2UgbW1hcF9yZWFkX3tsb2NrLCB1bmxvY2t9Lgo+IC0gYWRkIHNvbWUga2VybmVsLWRv Yy4KPgo+IFRlc3RjYXNlOiBpZ3QvZ2VtX3VzZXJwdHJfYmxpdHMvcHJvYmUKPiBTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBTaWduZWQtb2Zm LWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+Cj4gQ2M6IFRob21hcyBI ZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNvbT4KPiBDYzogTWFhcnRl biBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBDYzogVHZy dGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KPiBDYzogSm9yZGFu IEp1c3RlbiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4KPiBDYzogS2VubmV0aCBHcmF1bmtl IDxrZW5uZXRoQHdoaXRlY2FwZS5vcmc+Cj4gQ2M6IEphc29uIEVrc3RyYW5kIDxqYXNvbkBqbGVr c3RyYW5kLm5ldD4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4K PiBDYzogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jIHwgNDAgKysrKysrKysrKysr KysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2V0cGFyYW0uYyAgICAgICAg fCAgMyArKwo+ICBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgICAgIHwg MTggKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fdXNlcnB0ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIu Ywo+IGluZGV4IDU2ZWRmZWZmOGMwMi4uZmQ2ODgwMzI4NTk2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jCj4gQEAgLTQyMiw2ICs0MjIsMzMgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV91c2Vy cHRyX29wcyA9IHsKPgo+ICAjZW5kaWYKPgo+ICtzdGF0aWMgaW50Cj4gK3Byb2JlX3JhbmdlKHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVu KQo+ICt7Cj4gKyAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGVuZCA9IGFkZHIgKyBsZW47Cj4g KyAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKPiArICAgICAgIGludCByZXQgPSAt RUZBVUxUOwo+ICsKPiArICAgICAgIG1tYXBfcmVhZF9sb2NrKG1tKTsKPiArICAgICAgIGZvciAo dm1hID0gZmluZF92bWEobW0sIGFkZHIpOyB2bWE7IHZtYSA9IHZtYS0+dm1fbmV4dCkgewo+ICsg ICAgICAgICAgICAgICBpZiAodm1hLT52bV9zdGFydCA+IGFkZHIpCgpXaHkgaXNuJ3QgdGhpcyA+ IGVuZD8gIEFyZSB3ZSBzb21laG93IGd1YXJhbnRlZWQgdGhhdCBvbmUgdm1hIGNvdmVycwp0aGUg ZW50aXJlIHJhbmdlPwoKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArCj4gKyAg ICAgICAgICAgICAgIGlmICh2bWEtPnZtX2ZsYWdzICYgKFZNX1BGTk1BUCB8IFZNX01JWEVETUFQ KSkKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgICAg IGlmICh2bWEtPnZtX2VuZCA+PSBlbmQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICByZXQg PSAwOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICB9 Cj4gKwo+ICsgICAgICAgICAgICAgICBhZGRyID0gdm1hLT52bV9lbmQ7Cj4gKyAgICAgICB9Cj4g KyAgICAgICBtbWFwX3JlYWRfdW5sb2NrKG1tKTsKPiArCj4gKyAgICAgICByZXR1cm4gcmV0Owo+ ICt9Cj4gKwo+ICAvKgo+ICAgKiBDcmVhdGVzIGEgbmV3IG1tIG9iamVjdCB0aGF0IHdyYXBzIHNv bWUgbm9ybWFsIG1lbW9yeSBmcm9tIHRoZSBwcm9jZXNzCj4gICAqIGNvbnRleHQgLSB1c2VyIG1l bW9yeS4KPiBAQCAtNDc3LDcgKzUwNCw4IEBAIGk5MTVfZ2VtX3VzZXJwdHJfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgICAgICAgIH0KPgo+ICAgICAgICAgaWYgKGFyZ3MtPmZsYWdz ICYgfihJOTE1X1VTRVJQVFJfUkVBRF9PTkxZIHwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgSTkxNV9VU0VSUFRSX1VOU1lOQ0hST05JWkVEKSkKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgSTkxNV9VU0VSUFRSX1VOU1lOQ0hST05JWkVEIHwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgSTkxNV9VU0VSUFRSX1BST0JFKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4KPiAgICAgICAgIGlmIChpOTE1X2dlbV9vYmplY3Rfc2l6ZV8yYmlnKGFyZ3MtPnVz ZXJfc2l6ZSkpCj4gQEAgLTUwNCw2ICs1MzIsMTYgQEAgaTkxNV9nZW1fdXNlcnB0cl9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RU5PREVWOwo+ICAgICAgICAgfQo+Cj4gKyAgICAgICBpZiAoYXJncy0+ZmxhZ3MgJiBJOTE1X1VT RVJQVFJfUFJPQkUpIHsKPiArICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICog Q2hlY2sgdGhhdCB0aGUgcmFuZ2UgcG9pbnRlZCB0byByZXByZXNlbnRzIHJlYWwgc3RydWN0Cj4g KyAgICAgICAgICAgICAgICAqIHBhZ2VzIGFuZCBub3QgaW9tYXBwaW5ncyAoYXQgdGhpcyBtb21l bnQgaW4gdGltZSEpCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICByZXQg PSBwcm9iZV9yYW5nZShjdXJyZW50LT5tbSwgYXJncy0+dXNlcl9wdHIsIGFyZ3MtPnVzZXJfc2l6 ZSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpCj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gICNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVS Cj4gICAgICAgICBvYmogPSBpOTE1X2dlbV9vYmplY3RfYWxsb2MoKTsKPiAgICAgICAgIGlmIChv YmogPT0gTlVMTCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZXRw YXJhbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZXRwYXJhbS5jCj4gaW5kZXggMjRl MTgyMTllYjUwLi5kNmQyZTFhMTBkMTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZXRwYXJhbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZXRw YXJhbS5jCj4gQEAgLTE2Myw2ICsxNjMsOSBAQCBpbnQgaTkxNV9nZXRwYXJhbV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgICAgICAgY2FzZSBJOTE1X1BBUkFN X1BFUkZfUkVWSVNJT046Cj4gICAgICAgICAgICAgICAgIHZhbHVlID0gaTkxNV9wZXJmX2lvY3Rs X3ZlcnNpb24oKTsKPiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEk5MTVf UEFSQU1fSEFTX1VTRVJQVFJfUFJPQkU6Cj4gKyAgICAgICAgICAgICAgIHZhbHVlID0gdHJ1ZTsK PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICBkZWZhdWx0Ogo+ICAgICAgICAgICAg ICAgICBEUk1fREVCVUcoIlVua25vd24gcGFyYW1ldGVyICVkXG4iLCBwYXJhbS0+cGFyYW0pOwo+ ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gaW5kZXgg ZTIwZWVlY2E3YTFjLi4yZTQxMTJiZjRkMzggMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gQEAgLTY3 NCw2ICs2NzQsOSBAQCB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9pcnFfd2FpdCB7Cj4gICAqLwo+ ICAjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0VYRUNfVElNRUxJTkVfRkVOQ0VTIDU1Cj4KPiArLyog UXVlcnkgaWYgdGhlIGtlcm5lbCBzdXBwb3J0cyB0aGUgSTkxNV9VU0VSUFRSX1BST0JFIGZsYWcu ICovCj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfVVNFUlBUUl9QUk9CRSA1Ngo+ICsKPiAgLyog TXVzdCBiZSBrZXB0IGNvbXBhY3QgLS0gbm8gaG9sZXMgYW5kIHdlbGwgZG9jdW1lbnRlZCAqLwo+ Cj4gIHR5cGVkZWYgc3RydWN0IGRybV9pOTE1X2dldHBhcmFtIHsKPiBAQCAtMjE3OCwxMiArMjE4 MSwyNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3VzZXJwdHIgewo+ICAgICAgICAgICogdGhyb3Vn aCB0aGUgR1RULiBJZiB0aGUgSFcgY2FuJ3Qgc3VwcG9ydCByZWFkb25seSBhY2Nlc3MsIGFuIGVy cm9yIGlzCj4gICAgICAgICAgKiByZXR1cm5lZC4KPiAgICAgICAgICAqCj4gKyAgICAgICAgKiBJ OTE1X1VTRVJQVFJfUFJPQkU6Cj4gKyAgICAgICAgKgo+ICsgICAgICAgICogUHJvYmUgdGhlIHBy b3ZpZGVkIEB1c2VyX3B0ciByYW5nZSBhbmQgdmFsaWRhdGUgdGhhdCB0aGUgQHVzZXJfcHRyIGlz Cj4gKyAgICAgICAgKiBpbmRlZWQgcG9pbnRpbmcgdG8gbm9ybWFsIG1lbW9yeSBhbmQgdGhhdCB0 aGUgcmFuZ2UgaXMgYWxzbyB2YWxpZC4KPiArICAgICAgICAqIEZvciBleGFtcGxlIGlmIHNvbWUg Z2FyYmFnZSBhZGRyZXNzIGlzIGdpdmVuIHRvIHRoZSBrZXJuZWwsIHRoZW4gdGhpcwo+ICsgICAg ICAgICogc2hvdWxkIGNvbXBsYWluLgo+ICsgICAgICAgICoKPiArICAgICAgICAqIFJldHVybnMg LUVGQVVMVCBpZiB0aGUgcHJvYmUgZmFpbGVkLgo+ICsgICAgICAgICoKPiArICAgICAgICAqIE5v dGUgdGhhdCB0aGlzIGRvZXNuJ3QgcG9wdWxhdGUgdGhlIGJhY2tpbmcgcGFnZXMuCj4gKyAgICAg ICAgKgo+ICsgICAgICAgICogVGhlIGtlcm5lbCBzdXBwb3J0cyB0aGlzIGZlYXR1cmUgaWYgSTkx NV9QQVJBTV9IQVNfVVNFUlBUUl9QUk9CRQo+ICsgICAgICAgICogcmV0dXJucyBhIG5vbi16ZXJv IHZhbHVlLgo+ICsgICAgICAgICoKPiAgICAgICAgICAqIEk5MTVfVVNFUlBUUl9VTlNZTkNIUk9O SVpFRDoKPiAgICAgICAgICAqCj4gICAgICAgICAgKiBOT1QgVVNFRC4gU2V0dGluZyB0aGlzIGZs YWcgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IuCj4gICAgICAgICAgKi8KPiAgICAgICAgIF9fdTMy IGZsYWdzOwo+ICAjZGVmaW5lIEk5MTVfVVNFUlBUUl9SRUFEX09OTFkgMHgxCj4gKyNkZWZpbmUg STkxNV9VU0VSUFRSX1BST0JFIDB4Mgo+ICAjZGVmaW5lIEk5MTVfVVNFUlBUUl9VTlNZTkNIUk9O SVpFRCAweDgwMDAwMDAwCj4gICAgICAgICAvKioKPiAgICAgICAgICAqIEBoYW5kbGU6IFJldHVy bmVkIGhhbmRsZSBmb3IgdGhlIG9iamVjdC4KPiAtLQo+IDIuMjYuMwo+Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=