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 071B2CD4F21 for ; Tue, 12 May 2026 20:03:58 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 50DB410E29D; Tue, 12 May 2026 20:03:58 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="KIjIl6aj"; dkim-atps=neutral Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id A4C0610E29D; Tue, 12 May 2026 20:03:57 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 45E4F43C71; Tue, 12 May 2026 20:03:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C8DC1C2BCC7; Tue, 12 May 2026 20:03:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778616237; bh=9/k+ifoFJCSYgHDLHTPvrEH83i7caXwmllATzwMZCGk=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=KIjIl6ajl6Il1Ptse3PkNF9XpGJXTQrmQvDPgaQe9vG3W42EMOoLKhK6wKqMofeNd NOtKGXFooWolpacmD0F1RL0hXEilE0Ng0pO12E0bWYVfJgOpntpuU5v259SUySMC5M EDR+a1L8zzS4BdwxxKr6iKNLCnTepOUjoBh196ahEI0L6439NtCNgYTjFR0DSaR7Lx ospQ/0xxuZCJVW3NgMNryKT65N+VoMvT6/SdMiOMQuij30uUKJTaSuuRbT4nh3P++j 8b6kd8mYGKBKWY1TlS/3FZ0z3/6J+87OLQ3Mo+YWA9yrhJrMAiQjNDS93BVwHGcgt7 veU/NhWWzrRCw== Message-ID: <26479389-459b-4cc4-914d-e7d29d5e5cc9@kernel.org> Date: Tue, 12 May 2026 22:03:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/2] mm/shmem: add shmem_insert_folio() To: =?UTF-8?Q?Thomas_Hellstr=C3=B6m?= , intel-xe@lists.freedesktop.org Cc: Andrew Morton , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Christian Koenig , Huang Rui , Matthew Auld , Matthew Brost , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20260512110339.6244-1-thomas.hellstrom@linux.intel.com> <20260512110339.6244-2-thomas.hellstrom@linux.intel.com> From: "David Hildenbrand (Arm)" Content-Language: en-US Autocrypt: addr=david@kernel.org; keydata= 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 qIws/H2t In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 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: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gNS8xMi8yNiAxMzozMSwgVGhvbWFzIEhlbGxzdHLDtm0gd3JvdGU6Cj4gSGkgRGF2aWQsCj4g Cj4gVGhhbmtzIGZvciBoYXZpbmcgYSBsb29rLgo+IAo+IE9uIFR1ZSwgMjAyNi0wNS0xMiBhdCAx MzowNyArMDIwMCwgRGF2aWQgSGlsZGVuYnJhbmQgKEFybSkgd3JvdGU6Cj4+Cj4+PiDCoAo+Pj4g Ky8qKgo+Pj4gKyAqIHVuZG9fY29tcG91bmRfcGFnZSgpIC0gUmV2ZXJzZSB0aGUgZWZmZWN0IG9m Cj4+PiBwcmVwX2NvbXBvdW5kX3BhZ2UoKS4KPj4+ICsgKiBAcGFnZTogVGhlIGhlYWQgcGFnZSBv ZiBhIGNvbXBvdW5kIHBhZ2UgdG8gZGVtb3RlLgo+Pj4gKyAqCj4+PiArICogUmV0dXJucyB0aGUg cGFnZXMgdG8gbm9uLWNvbXBvdW5kIHN0YXRlIGFzIGlmCj4+PiBwcmVwX2NvbXBvdW5kX3BhZ2Uo KQo+Pj4gKyAqIGhhZCBuZXZlciBiZWVuIGNhbGxlZC7CoCBzcGxpdF9wYWdlKCkgbXVzdCBOT1Qg aGF2ZSBiZWVuIGNhbGxlZAo+Pj4gb24KPj4+ICsgKiB0aGUgY29tcG91bmQgcGFnZTsgdGFpbCBy ZWZjb3VudHMgbXVzdCBiZSAwLsKgIFRoZSBjYWxsZXIgbXVzdAo+Pj4gZW5zdXJlCj4+PiArICog bm8gb3RoZXIgdXNlcnMgaG9sZCByZWZlcmVuY2VzIHRvIHRoZSBjb21wb3VuZCBwYWdlLgo+Pj4g KyAqLwo+Pj4gK3ZvaWQgdW5kb19jb21wb3VuZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQo+Pj4g K3sKPj4+ICsJdW5zaWduZWQgaW50IGksIG5yID0gMVUgPDwgY29tcG91bmRfb3JkZXIocGFnZSk7 Cj4+PiArCj4+PiArCXBhZ2VbMV0uZmxhZ3MuZiAmPSB+UEFHRV9GTEFHU19TRUNPTkQ7Cj4+PiAr CWZvciAoaSA9IDE7IGkgPCBucjsgaSsrKSB7Cj4+PiArCQlwYWdlW2ldLm1hcHBpbmcgPSBOVUxM Owo+Pj4gKwkJY2xlYXJfY29tcG91bmRfaGVhZCgmcGFnZVtpXSk7Cj4+PiArCX0KPj4+ICsJQ2xl YXJQYWdlSGVhZChwYWdlKTsKPj4+ICt9Cj4+PiArCj4+PiDCoHN0YXRpYyBpbmxpbmUgdm9pZCBz ZXRfYnVkZHlfb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludAo+Pj4gb3JkZXIp Cj4+PiDCoHsKPj4+IMKgCXNldF9wYWdlX3ByaXZhdGUocGFnZSwgb3JkZXIpOwo+Pj4gZGlmZiAt LWdpdCBhL21tL3NobWVtLmMgYi9tbS9zaG1lbS5jCj4+PiBpbmRleCAzYjVkYzIxYjMyM2MuLjQ1 ZTgwYTc0Zjc3YyAxMDA2NDQKPj4+IC0tLSBhL21tL3NobWVtLmMKPj4+ICsrKyBiL21tL3NobWVt LmMKPj4+IEBAIC05MzcsNiArOTM3LDExMSBAQCBpbnQgc2htZW1fYWRkX3RvX3BhZ2VfY2FjaGUo c3RydWN0IGZvbGlvCj4+PiAqZm9saW8sCj4+PiDCoAlyZXR1cm4gMDsKPj4+IMKgfQo+Pj4gwqAK Pj4+ICsvKioKPj4+ICsgKiBzaG1lbV9pbnNlcnRfZm9saW8oKSAtIEluc2VydCBhbiBpc29sYXRl ZCBmb2xpbyBpbnRvIGEgc2htZW0KPj4+IGZpbGUuCj4+PiArICogQGZpbGU6IFRoZSBzaG1lbSBm aWxlIGNyZWF0ZWQgd2l0aCBzaG1lbV9maWxlX3NldHVwKCkuCj4+PiArICogQGZvbGlvOiBUaGUg Zm9saW8gdG8gaW5zZXJ0LiBNdXN0IGJlIGlzb2xhdGVkIChub3Qgb24gTFJVKSwKPj4+IHVubG9j a2VkLAo+Pj4gKyAqwqDCoMKgwqDCoMKgwqDCoCBoYXZlIGV4YWN0bHkgb25lIHJlZmVyZW5jZSAo dGhlIGNhbGxlcidzKSwgaGF2ZSBubwo+Pj4gcGFnZS10YWJsZQo+Pj4gKyAqwqDCoMKgwqDCoMKg wqDCoCBtYXBwaW5ncywgYW5kIGhhdmUgZm9saW8tPm1hcHBpbmcgPT0gTlVMTC4KPj4+ICsgKiBA b3JkZXI6IFRoZSBhbGxvY2F0aW9uIG9yZGVyIG9mIEBmb2xpby7CoCBJZiBAb3JkZXIgPiAwIGFu ZAo+Pj4gQGZvbGlvIGlzCj4+PiArICrCoMKgwqDCoMKgwqDCoMKgIG5vdCBhbHJlYWR5IGEgbGFy Z2UgKGNvbXBvdW5kKSBmb2xpbywgaXQgd2lsbCBiZQo+Pj4gcHJvbW90ZWQgdG8gYQo+Pj4gKyAq wqDCoMKgwqDCoMKgwqDCoCBjb21wb3VuZCBmb2xpbyBvZiB0aGlzIG9yZGVyIGluc2lkZSB0aGlz IGZ1bmN0aW9uLsKgCj4+PiBUaGlzIHJlcXVpcmVzCj4+PiArICrCoMKgwqDCoMKgwqDCoMKgIHRo ZSBzdGFuZGFyZCBwb3N0LWFsbG9jIHN0YXRlOiBoZWFkIHJlZmNvdW50ID09IDEsIHRhaWwKPj4+ ICsgKsKgwqDCoMKgwqDCoMKgwqAgcmVmY291bnRzID09IDAgKGkuZS4gc3BsaXRfcGFnZSgpIG11 c3QgTk9UIGhhdmUgYmVlbgo+Pj4gY2FsbGVkKS4KPj4+ICsgKsKgwqDCoMKgwqDCoMKgwqAgT24g ZmFpbHVyZSB0aGUgcHJvbW90aW9uIGlzIHJldmVyc2VkIGFuZCB0aGUgZm9saW8gaXMKPj4+IHJl dHVybmVkCj4+PiArICrCoMKgwqDCoMKgwqDCoMKgIHRvIGl0cyBvcmlnaW5hbCBub24tY29tcG91 bmQgc3RhdGUuCj4+PiArICogQGluZGV4OiBQYWdlLWNhY2hlIGluZGV4IGF0IHdoaWNoIHRvIGlu c2VydC4gTXVzdCBiZSBhbGlnbmVkIHRvCj4+PiArICrCoMKgwqDCoMKgwqDCoMKgICgxIDw8IEBv cmRlcikgYW5kIHdpdGhpbiB0aGUgZmlsZSdzIHNpemUuCj4+PiArICogQHdyaXRlYmFjazogSWYg dHJ1ZSwgYXR0ZW1wdCBpbW1lZGlhdGUgd3JpdGViYWNrIHRvIHN3YXAgYWZ0ZXIKPj4+IGluc2Vy dGlvbi4KPj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCZXN0LWVmZm9ydDsgZmFpbHVy ZSBpcyBzaWxlbnRseSBpZ25vcmVkLgo+Pj4gKyAqIEBmb2xpb19nZnA6IFRoZSBHRlAgZmxhZ3Mg dG8gdXNlIGZvciBtZW1vcnktY2dyb3VwIGNoYXJnaW5nLgo+Pj4gKyAqCj4+PiArICogVGhlIGZv bGlvIGlzIGluc2VydGVkIHplcm8tY29weSBpbnRvIHRoZSBzaG1lbSBwYWdlIGNhY2hlIGFuZAo+ Pj4gcGxhY2VkIG9uCj4+PiArICogdGhlIGFub24gTFJVLCB3aGVyZSBpdCBwYXJ0aWNpcGF0ZXMg aW4gbm9ybWFsIGtlcm5lbCByZWNsYWltCj4+PiAod3JpdHRlbiB0bwo+Pj4gKyAqIHN3YXAgdW5k ZXIgbWVtb3J5IHByZXNzdXJlKS7CoCBBbnkgcHJldmlvdXMgY29udGVudCBhdCBAaW5kZXggaXMK Pj4+IGRpc2NhcmRlZC4KPj4+ICsgKiBPbiBzdWNjZXNzIHRoZSBjYWxsZXIgc2hvdWxkIHJlbGVh c2UgdGhlaXIgcmVmZXJlbmNlIHdpdGgKPj4+IGZvbGlvX3B1dCgpIGFuZAo+Pj4gKyAqIHRyYWNr IHRoZSAoQGZpbGUsIEBpbmRleCkgcGFpciBmb3IgbGF0ZXIgcmVjb3ZlcnkgdmlhCj4+PiBzaG1l bV9yZWFkX2ZvbGlvKCkKPj4+ICsgKiBhbmQgcmVsZWFzZSB2aWEgc2htZW1fdHJ1bmNhdGVfcmFu Z2UoKS4KPj4+ICsgKgo+Pj4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLsKgIE9uIGZhaWx1cmUg dGhlIGZvbGlvIGlzIHJldHVybmVkIHRvIGl0cwo+Pj4gb3JpZ2luYWwKPj4+ICsgKiBzdGF0ZSBh bmQgdGhlIGNhbGxlciByZXRhaW5zIG93bmVyc2hpcC4KPj4+ICsgKi8KPj4+ICtpbnQgc2htZW1f aW5zZXJ0X2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLAo+Pj4g dW5zaWduZWQgaW50IG9yZGVyLAo+Pj4gKwkJwqDCoMKgwqDCoMKgIHBnb2ZmX3QgaW5kZXgsIGJv b2wgd3JpdGViYWNrLCBnZnBfdAo+Pj4gZm9saW9fZ2ZwKQo+Pj4gK3sKPj4+ICsJc3RydWN0IGFk ZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlLT5mX21hcHBpbmc7Cj4+PiArCXN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBtYXBwaW5nLT5ob3N0Owo+Pj4gKwlib29sIHByb21vdGVkOwo+Pj4gKwlsb25n IG5yX3BhZ2VzOwo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlwcm9tb3RlZCA9IG9yZGVyID4g MCAmJiAhZm9saW9fdGVzdF9sYXJnZShmb2xpbyk7Cj4+PiArCWlmIChwcm9tb3RlZCkKPj4+ICsJ CXByZXBfY29tcG91bmRfcGFnZSgmZm9saW8tPnBhZ2UsIG9yZGVyKTsKPj4+ICsJbnJfcGFnZXMg PSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7Cj4+PiArCj4+PiArCVZNX0JVR19PTl9GT0xJTyhmb2xp b190ZXN0X2xydShmb2xpbyksIGZvbGlvKTsKPj4+ICsJVk1fQlVHX09OX0ZPTElPKGZvbGlvX21h cHBlZChmb2xpbyksIGZvbGlvKTsKPj4+ICsJVk1fQlVHX09OX0ZPTElPKGZvbGlvX3Rlc3Rfc3dh cGNhY2hlKGZvbGlvKSwgZm9saW8pOwo+Pj4gKwlWTV9CVUdfT05fRk9MSU8oZm9saW8tPm1hcHBp bmcsIGZvbGlvKTsKPj4+ICsJVk1fQlVHX09OKGluZGV4ICE9IHJvdW5kX2Rvd24oaW5kZXgsIG5y X3BhZ2VzKSk7Cj4+Cj4+IE5vIG5ldyBWTV9CVUdfT05fRk9MSU8gZXRjLgo+IAo+IE9LLCBjYW4g ZWxpbWluYXRlIHRob3NlLiBJcyBWTV9XQVJOX09OX0ZPTElPKCkgcHJlZmVycmVkLAo+IG9yIGFu eSBvdGhlciB0eXBlIG9mIGFzc2VydD8KClZNX1dBUk5fT05fRk9MSU8oKSBpcyB1c3VhbGx5IHdo YXQgeW91IHdhbnQsIG9yIFZNX1dBUk5fT05fT05DRSgpLgoKPiAKPj4KPj4gQnV0IGluIGdlbmVy YWwsIHB1c2hpbmcgaW4gcmFuZG9tIGFsbG9jYXRlZCBwYWdlcyBpbnRvIHNobWVtLAo+PiBjb252 ZXJ0aW5nIHRoZW0gdG8KPj4gZm9saW9zIGlzIG5vdCBzb21ldGhpbmcgSSBwYXJ0aWN1bGFybHkg ZW5qb3kgc2VlaW5nLgo+Pgo+IAo+IE9LLCBsZXQgbWUgdW5kZXJzdGFuZCB0aGUgY29uY2Vybi4g VGhlIHBhZ2VzIGFyZSBhbGxvY2F0ZWQgYXMgbXVsdGktCj4gcGFnZSBmb2xpb3MgdXNpbmcgYWxs b2NfcGFnZXMoZ2ZwLCBvcmRlciksIGJ1dCB0eXBpY2FsbHkgbm90IHByb21vdGVkCj4gdG8gY29t cG91bmQgcGFnZXMsIHVudGlsIGluc2VydGVkIGhlcmUuIElzIGl0IHRoYXQgcHJvbW90aW9uIHRo YXQgaXMgb2YKPiBjb25jZXJuIG9yIGluc2VydGluZyBwYWdlcyBvZiB1bmtub3duIG9yaWdpbiBp bnRvIHNobWVtPyBBbnl0aGluZyB3ZQo+IGNhbiBkbyB0byBhbGxldmlhdGUgdGhhdCBjb25jZXJu PwoKSXQncyBhbGwgcmF0aGVyIHF1ZXN0aW9uYWJsZS4KCkEgY291cGxlIG9mIHBvaW50czoKCmEp IFRoZSBwYWdlcyBhcmUgYWxsb2NhdGVkIHRvIGJlIHVubW92YWJsZSwgYnV0IGFkZGluZyB0aGVt IHRvIHNobWVtIGVmZmVjdGl2ZWx5CiAgIHR1cm5zIHRoZW0gbW92YWJsZS4gTm93IHlvdSBpbnRl cmZlcmUgd2l0aCB0aGUgcGFnZSBhbGxvY2F0b3IgbG9naWMgb2YKICAgcGxhY2luZyBtb3ZhYmxl IGFuZCB1bm1vdmFibGUgcGFnZXMgYSByZWFzb25hYmxlIHdheSBpbnRvCiAgIHBhZ2VibG9ja3Mg dGhhdCBncm91cCBhbGxvY2F0aW9ucyBvZiBzaW1pbGFyIHR5cGVzLgoKYikgQSBkcml2ZXIgaXMg bm90IHN1cHBvc2VkIHRvIGRlY2lkZSB3aGljaCBmb2xpbyBzaXplIHdpbGwgYmUgYWxsb2NhdGVk IGZvcgogICBzaG1lbS4gSSBhbSBub3QgZXZlbiBzdXJlIGlmIHRoZXJlIGlzIGEgZmVuY2luZyBv bgogICBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0Ugc29tZXdoZXJlIHdoZW4gZW5kaW5nIHVw IHdpdGggbGFyZ2UgZm9saW9zLiBvcmRlcgogICA+IFBNRF9PUkRFUiBpcyBjdXJyZW50bHkgZXNz ZW50aWFsbHkgdW5zdXBwb3J0ZWQsIGFuZCBJIHN1c3BlY3QgeW91ciBjb2RlCiAgIHdvdWxkICBl dmVuIGFsbG93IGZvciB0aGF0IChsb29raW5nIGF0IHR0bV9wb29sX2FsbG9jX2ZpbmRfb3JkZXIp LgoKICAgV2UgYWxzbyBoYXZlIHNvbWUgcHJvYmxlbXMgd2l0aCB0aGUgcGFnZWNhY2hlIG5vdCBh Y3R1YWxseSBzdXBwb3J0aW5nIGFsbAogICBNQVhfUEFHRV9PUkRFUiBvcmRlcnMgKHNlZSBNQVhf UEFHRUNBQ0hFX09SREVSKS4KCiAgIFlvdSBhcmUgYnlwYXNzaW5nIHNobWVtIGxvZ2ljIHRvIGRl Y2lkZSBvbiB0aGF0IGNvbXBsZXRlbHkuCgogICBXaGlsZSB0aGVzZSB0aGluZ3MgbWlnaHQgbm90 IGFjdHVhbGx5IGNhdXNlIGhhcm0gZm9yIHlvdSB0b2RheSAoYWx0aG91Z2ggSQogICBzdXNwZWN0 IHNvbWUgb2YgdGhlbSBtaWdodCBpbiBzaG1lbSBzd2Fwb3V0IGNvZGUpLCB3ZSBkb24ndCB3YW50 IGRyaXZlcnMgdG8KICAgbWFrZSBvdXIgbGlmZSBoYXJkZXIgYnkgZG9pbmcgY29tcGxldGVseSB1 bmV4cGVjdGVkIHRoaW5ncy4KCmMpIFlvdSBwYXNzIGZvbGlvICsgb3JkZXIsIHdoaWNoIGlzIGp1 c3QgdGhlIHJlZCBmbGFnIHRoYXQgeW91IGFyZSBkb2luZwogICBzb21ldGhpbmcgZXh0cmVtZWx5 IGRvZGd5LgoKICAgWW91IGp1c3QgY2FzdCBzb21ldGhpbmcgdGhhdCBpcyBub3QgYSBmb2xpbywg YW5kIHdhcyBub3QgYWxsb2NhdGVkIHRvIGJlIGEKICAgZm9saW8gdG8gYSBmb2xpbyB0aHJvdWdo IHBhZ2VfZm9saW8ocGFnZSkuIFRoYXQgd2lsbCBzdG9wIHdvcmtpbmcgY29tcGxldGVseQogICBp biB0aGUgZnV0dXJlIG9uY2Ugd2UgZGVjb3VwbGUgc3RydWN0IHBhZ2UgZnJvbSBzdHJ1Y3QgZm9s aW8uCgogICBJZiBpdCdzIG5vdCBhIGZvbGlvIHdpdGggYSBwcm9wZXIgc2V0IG9yZGVyLCB5b3Ug c2hvdWxkIGJlIHBhc3NpbmcgcGFnZSArCiAgIG9yZGVyLgoKZCkgV2UgYXJlIG9uY2UgbW9yZSBv cGVuLWNvZGluZyBjcmVhdGlvbiBvZiBhIGZvbGlvLCBieSBoYW5kLWNyYWZ0aW5nIGl0CiAgIG91 cnNlbHZlcy4KCiAgIFdlIGhhdmUgZm9saW9fYWxsb2MoKSBhbmQgZnJpZW5kcyBmb3IgYSByZWFz b24uIFdoZXJlIHdlLCBmb3IgZXhhbXBsZSwgZG8gYQogICBwYWdlX3JtYXBwYWJsZV9mb2xpbygp LgoKICAgSSBhbSBwcmV0dHkgc3VyZSB0aGF0IHlvdSBhcmUgbWlzc2luZyBhIGNhbGwgdG8gcGFn ZV9ybWFwcGFibGVfZm9saW8oKSwKICAgcmVzdWx0aW5nIGluIHRoZSBsYXJnZSBmb2xpb3Mgbm90 IGdldHRpbmcgZm9saW9fc2V0X2xhcmdlX3JtYXBwYWJsZSgpIHNldC4KCmUpIHVuZG9fY29tcG91 bmRfcGFnZSgpLiBObyB3b3Jkcy4KCgoKKm1heWJlKiBpdCB3b3VsZCBiZSBhIGxpdHRsZSBsZXNz IGJhZCBpZiB5b3Ugd291bGQganVzdCBhbGxvY2F0ZSBhIGNvbXBvdW5kIHBhZ2UKaW4geW91ciBk cml2ZXIgYW5kIHVzZSBwYWdlX3JtYXBwYWJsZV9mb2xpbygpIGluIHRoZXJlLgoKVGhhdCB3b3Vs ZG4ndCBjaGFuZ2UgYSkgb3IgYiksIHRob3VnaC4KCgo+IAo+IEdpdmVuIHRoZSBwcm9ibGVtIHN0 YXRlbWVudCBpbiB0aGUgY292ZXItbGV0dGVyLCB3b3VsZCB0aGVyZSBiZSBhCj4gYmV0dGVyIGRp cmVjdGlvbiB0byB0YWtlIGhlcmU/IFdlIGNvdWxkLCBmb3IgZXhhbXBsZSwgYnlwYXNzIHNobWVt IGFuZAo+IGluc2VydCB0aGUgZm9saW9zIGRpcmVjdGx5IGludG8gdGhlIHN3YXAtY2FjaGUsIChh bHRob3VnaCB0aGVyZSBpcyBhbgo+IGlzc3VlIHdpdGggdGhlIHN3YXAtY2FjaGUgd2hlbiB0aGUg bnVtYmVyIG9mIHN3YXBfZW50cmllcyBhcmUgY2xvc2UgdG8KPiBiZWluZyBkZXBsZXRlZCkuCgpH b29kIHF1ZXN0aW9uLgpXZSdkIGhhdmUgdG8ga2VlcCBzd2Fwb2ZmIGFuZCBhbGwgb2YgdGhhdCB3 b3JraW5nLiBGb3IgZXhhbXBsZSwgaW4KdHJ5X3RvX3VudXNlKCksIHdlIHNwZWNpYWwtY2FzZSBz aG1lbV91bnVzZSgpIHRvIGhhbmRsZSBub24tYW5vbnltb3VzIHBhZ2VzLgoKQnV0IHRoZW4sIHRo ZSB3aG9sZSBzd2FwY2FjaGUgb3BlcmF0ZXMgb24gZm9saW9zIC4uLiBzbyBJIGFtIG5vdCBzdXJl IGlmIHRoZXJlCmlzIGEgbG90IHRvIGJlIHdvbiBieSByZS1pbXBsZW1lbnRpbmcgd2hhdCBzaG1l bSBhbHJlYWR5IGRvZXM/CgotLSAKQ2hlZXJzLAoKRGF2aWQK