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 81CBCCD4851 for ; Tue, 12 May 2026 11:04:13 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CF78410EA2E; Tue, 12 May 2026 11:04:12 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="E5+G1AQK"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) by gabe.freedesktop.org (Postfix) with ESMTPS id B26EA10EA2E; Tue, 12 May 2026 11:04:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1778583852; x=1810119852; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0/h+ElM/jcg5vY60EU0F+b8mrK8INiKreVM7Lv+pmWY=; b=E5+G1AQKmdraoZ4ONWQfjblN3CUGCtNy4crjYfs5CZKzWsNXem/PCakk Dmat+m+eEn2rutzgcIQEaCOqrNDk0lUz3vrKkHOo0e6vDUfTG/P2Jjiz6 xQ4HJMDy4Abq1e/1Fp0n2jWaAzS4GQ6fbEkPO65jF8JAseLKrbTazqgEG WzNyH5JgwmEgchNC3BFj8hd6QyiwJ9T42tDD5leHeJdKGQL0uD4A+yL5l IxZsVtJP0Zlr0Q0jVi/R+33lDcdPyxumYw5+XYmB9FpHevO3F8lfNdFm7 s3svaOgUDqF9yjn7zt5h5MRpfzQaggmnNFG/xw/JAAt/w/3ZHzVdBGiL+ g==; X-CSE-ConnectionGUID: v921f8mXSMyiluQ/PUnsqQ== X-CSE-MsgGUID: 84768Sk/Q6ytU1ssZ/dD/Q== X-IronPort-AV: E=McAfee;i="6800,10657,11783"; a="104944467" X-IronPort-AV: E=Sophos;i="6.23,230,1770624000"; d="scan'208";a="104944467" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2026 04:04:11 -0700 X-CSE-ConnectionGUID: JvmgcqrwRb+j0gZOdoRRXw== X-CSE-MsgGUID: 1Z5CXpMuSzO6E8CS8mSylg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,230,1770624000"; d="scan'208";a="231339484" Received: from vpanait-mobl.ger.corp.intel.com (HELO fedora) ([10.245.245.172]) by fmviesa009-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2026 04:04:05 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-xe@lists.freedesktop.org Cc: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Andrew Morton , David Hildenbrand , 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 Subject: [PATCH 1/2] mm/shmem: add shmem_insert_folio() Date: Tue, 12 May 2026 13:03:38 +0200 Message-ID: <20260512110339.6244-2-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260512110339.6244-1-thomas.hellstrom@linux.intel.com> References: <20260512110339.6244-1-thomas.hellstrom@linux.intel.com> MIME-Version: 1.0 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" SW50cm9kdWNlIHNobWVtX2luc2VydF9mb2xpbygpLCB3aGljaCB0cmFuc2ZlcnMgYW4gaXNvbGF0 ZWQgZm9saW8KemVyby1jb3B5IGludG8gYSBzaG1lbSBmaWxlJ3MgcGFnZSBjYWNoZS4gIFRoZSBm b2xpbyBpcyBjaGFyZ2VkIHRvCm1lbWNnLCBpbnNlcnRlZCBpbnRvIHRoZSBhZGRyZXNzIHNwYWNl LCBhbmQgcGxhY2VkIG9uIHRoZSBhbm9uIExSVQpmb3Igbm9ybWFsIHJlY2xhaW0uICBBbiBvcHRp b25hbCB3cml0ZWJhY2sgcGFyYW1ldGVyIHJlcXVlc3RzCmltbWVkaWF0ZSBzd2FwIHdyaXRlYmFj ay4KCkhpZ2hlci1vcmRlciBmb2xpb3MgYXJlIHByb21vdGVkIHRvIGNvbXBvdW5kIGJlZm9yZSBp bnNlcnRpb24sCmVuYWJsaW5nIFRIUC1zaXplZCBzd2FwIGVudHJpZXMgd2l0aCBDT05GSUdfVEhQ X1NXQVA9eS4gIE9uIGZhaWx1cmUKdGhlIGZvbGlvIGlzIHJldHVybmVkIHRvIGl0cyBvcmlnaW5h bCBzdGF0ZSBhbmQgdGhlIGNhbGxlciByZXRhaW5zCm93bmVyc2hpcC4KCkFzc2lzdGVkLWJ5OiBH aXRIdWJfQ29waWxvdDpjbGF1ZGUtc29ubmV0LTQuNgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgSGVs bHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+Ci0tLQogaW5jbHVkZS9s aW51eC9tbS5oICAgICAgIHwgICAxICsKIGluY2x1ZGUvbGludXgvc2htZW1fZnMuaCB8ICAgMiAr CiBtbS9wYWdlX2FsbG9jLmMgICAgICAgICAgfCAgMjEgKysrKysrKysKIG1tL3NobWVtLmMgICAg ICAgICAgICAgICB8IDEwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDQgZmlsZXMgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggYWYyMzQ1M2U5ZGJkLi5lMmU3 YjBjMDk5OGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xp bnV4L21tLmgKQEAgLTE2NzYsNiArMTY3Niw3IEBAIHN0cnVjdCBtbXVfZ2F0aGVyOwogc3RydWN0 IGlub2RlOwogCiBleHRlcm4gdm9pZCBwcmVwX2NvbXBvdW5kX3BhZ2Uoc3RydWN0IHBhZ2UgKnBh Z2UsIHVuc2lnbmVkIGludCBvcmRlcik7CitleHRlcm4gdm9pZCB1bmRvX2NvbXBvdW5kX3BhZ2Uo c3RydWN0IHBhZ2UgKnBhZ2UpOwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBmb2xpb19s YXJnZV9vcmRlcihjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQogewpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9zaG1lbV9mcy5oIGIvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oCmluZGV4IDkz YTBiYTg3MmViZS4uMmRjOTM1NTc1N2ZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NobWVt X2ZzLmgKKysrIGIvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oCkBAIC0xNzUsNiArMTc1LDggQEAg aW50IHNobWVtX2dldF9mb2xpbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90IGluZGV4LCBs b2ZmX3Qgd3JpdGVfZW5kLAogCQlzdHJ1Y3QgZm9saW8gKipmb2xpb3AsIGVudW0gc2dwX3R5cGUg c2dwKTsKIHN0cnVjdCBmb2xpbyAqc2htZW1fcmVhZF9mb2xpb19nZnAoc3RydWN0IGFkZHJlc3Nf c3BhY2UgKm1hcHBpbmcsCiAJCXBnb2ZmX3QgaW5kZXgsIGdmcF90IGdmcCk7CitpbnQgc2htZW1f aW5zZXJ0X2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNp Z25lZCBpbnQgb3JkZXIsCisJCSAgICAgICBwZ29mZl90IGluZGV4LCBib29sIHdyaXRlYmFjaywg Z2ZwX3QgZm9saW9fZ2ZwKTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKnNobWVtX3Jl YWRfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCXBnb2ZmX3QgaW5kZXgp CmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmMKaW5kZXggMjI3 ZDU4ZGMzZGU2Li5kYjgyODI1YTMzNDggMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfYWxsb2MuYworKysg Yi9tbS9wYWdlX2FsbG9jLmMKQEAgLTcwNSw2ICs3MDUsMjcgQEAgdm9pZCBwcmVwX2NvbXBvdW5k X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcikKIAlwcmVwX2NvbXBv dW5kX2hlYWQocGFnZSwgb3JkZXIpOwogfQogCisvKioKKyAqIHVuZG9fY29tcG91bmRfcGFnZSgp IC0gUmV2ZXJzZSB0aGUgZWZmZWN0IG9mIHByZXBfY29tcG91bmRfcGFnZSgpLgorICogQHBhZ2U6 IFRoZSBoZWFkIHBhZ2Ugb2YgYSBjb21wb3VuZCBwYWdlIHRvIGRlbW90ZS4KKyAqCisgKiBSZXR1 cm5zIHRoZSBwYWdlcyB0byBub24tY29tcG91bmQgc3RhdGUgYXMgaWYgcHJlcF9jb21wb3VuZF9w YWdlKCkKKyAqIGhhZCBuZXZlciBiZWVuIGNhbGxlZC4gIHNwbGl0X3BhZ2UoKSBtdXN0IE5PVCBo YXZlIGJlZW4gY2FsbGVkIG9uCisgKiB0aGUgY29tcG91bmQgcGFnZTsgdGFpbCByZWZjb3VudHMg bXVzdCBiZSAwLiAgVGhlIGNhbGxlciBtdXN0IGVuc3VyZQorICogbm8gb3RoZXIgdXNlcnMgaG9s ZCByZWZlcmVuY2VzIHRvIHRoZSBjb21wb3VuZCBwYWdlLgorICovCit2b2lkIHVuZG9fY29tcG91 bmRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKKwl1bnNpZ25lZCBpbnQgaSwgbnIgPSAxVSA8 PCBjb21wb3VuZF9vcmRlcihwYWdlKTsKKworCXBhZ2VbMV0uZmxhZ3MuZiAmPSB+UEFHRV9GTEFH U19TRUNPTkQ7CisJZm9yIChpID0gMTsgaSA8IG5yOyBpKyspIHsKKwkJcGFnZVtpXS5tYXBwaW5n ID0gTlVMTDsKKwkJY2xlYXJfY29tcG91bmRfaGVhZCgmcGFnZVtpXSk7CisJfQorCUNsZWFyUGFn ZUhlYWQocGFnZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYnVkZHlfb3JkZXIoc3Ry dWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcikKIHsKIAlzZXRfcGFnZV9wcml2YXRl KHBhZ2UsIG9yZGVyKTsKZGlmZiAtLWdpdCBhL21tL3NobWVtLmMgYi9tbS9zaG1lbS5jCmluZGV4 IDNiNWRjMjFiMzIzYy4uNDVlODBhNzRmNzdjIDEwMDY0NAotLS0gYS9tbS9zaG1lbS5jCisrKyBi L21tL3NobWVtLmMKQEAgLTkzNyw2ICs5MzcsMTExIEBAIGludCBzaG1lbV9hZGRfdG9fcGFnZV9j YWNoZShzdHJ1Y3QgZm9saW8gKmZvbGlvLAogCXJldHVybiAwOwogfQogCisvKioKKyAqIHNobWVt X2luc2VydF9mb2xpbygpIC0gSW5zZXJ0IGFuIGlzb2xhdGVkIGZvbGlvIGludG8gYSBzaG1lbSBm aWxlLgorICogQGZpbGU6IFRoZSBzaG1lbSBmaWxlIGNyZWF0ZWQgd2l0aCBzaG1lbV9maWxlX3Nl dHVwKCkuCisgKiBAZm9saW86IFRoZSBmb2xpbyB0byBpbnNlcnQuIE11c3QgYmUgaXNvbGF0ZWQg KG5vdCBvbiBMUlUpLCB1bmxvY2tlZCwKKyAqICAgICAgICAgaGF2ZSBleGFjdGx5IG9uZSByZWZl cmVuY2UgKHRoZSBjYWxsZXIncyksIGhhdmUgbm8gcGFnZS10YWJsZQorICogICAgICAgICBtYXBw aW5ncywgYW5kIGhhdmUgZm9saW8tPm1hcHBpbmcgPT0gTlVMTC4KKyAqIEBvcmRlcjogVGhlIGFs bG9jYXRpb24gb3JkZXIgb2YgQGZvbGlvLiAgSWYgQG9yZGVyID4gMCBhbmQgQGZvbGlvIGlzCisg KiAgICAgICAgIG5vdCBhbHJlYWR5IGEgbGFyZ2UgKGNvbXBvdW5kKSBmb2xpbywgaXQgd2lsbCBi ZSBwcm9tb3RlZCB0byBhCisgKiAgICAgICAgIGNvbXBvdW5kIGZvbGlvIG9mIHRoaXMgb3JkZXIg aW5zaWRlIHRoaXMgZnVuY3Rpb24uICBUaGlzIHJlcXVpcmVzCisgKiAgICAgICAgIHRoZSBzdGFu ZGFyZCBwb3N0LWFsbG9jIHN0YXRlOiBoZWFkIHJlZmNvdW50ID09IDEsIHRhaWwKKyAqICAgICAg ICAgcmVmY291bnRzID09IDAgKGkuZS4gc3BsaXRfcGFnZSgpIG11c3QgTk9UIGhhdmUgYmVlbiBj YWxsZWQpLgorICogICAgICAgICBPbiBmYWlsdXJlIHRoZSBwcm9tb3Rpb24gaXMgcmV2ZXJzZWQg YW5kIHRoZSBmb2xpbyBpcyByZXR1cm5lZAorICogICAgICAgICB0byBpdHMgb3JpZ2luYWwgbm9u LWNvbXBvdW5kIHN0YXRlLgorICogQGluZGV4OiBQYWdlLWNhY2hlIGluZGV4IGF0IHdoaWNoIHRv IGluc2VydC4gTXVzdCBiZSBhbGlnbmVkIHRvCisgKiAgICAgICAgICgxIDw8IEBvcmRlcikgYW5k IHdpdGhpbiB0aGUgZmlsZSdzIHNpemUuCisgKiBAd3JpdGViYWNrOiBJZiB0cnVlLCBhdHRlbXB0 IGltbWVkaWF0ZSB3cml0ZWJhY2sgdG8gc3dhcCBhZnRlciBpbnNlcnRpb24uCisgKiAgICAgICAg ICAgICBCZXN0LWVmZm9ydDsgZmFpbHVyZSBpcyBzaWxlbnRseSBpZ25vcmVkLgorICogQGZvbGlv X2dmcDogVGhlIEdGUCBmbGFncyB0byB1c2UgZm9yIG1lbW9yeS1jZ3JvdXAgY2hhcmdpbmcuCisg KgorICogVGhlIGZvbGlvIGlzIGluc2VydGVkIHplcm8tY29weSBpbnRvIHRoZSBzaG1lbSBwYWdl IGNhY2hlIGFuZCBwbGFjZWQgb24KKyAqIHRoZSBhbm9uIExSVSwgd2hlcmUgaXQgcGFydGljaXBh dGVzIGluIG5vcm1hbCBrZXJuZWwgcmVjbGFpbSAod3JpdHRlbiB0bworICogc3dhcCB1bmRlciBt ZW1vcnkgcHJlc3N1cmUpLiAgQW55IHByZXZpb3VzIGNvbnRlbnQgYXQgQGluZGV4IGlzIGRpc2Nh cmRlZC4KKyAqIE9uIHN1Y2Nlc3MgdGhlIGNhbGxlciBzaG91bGQgcmVsZWFzZSB0aGVpciByZWZl cmVuY2Ugd2l0aCBmb2xpb19wdXQoKSBhbmQKKyAqIHRyYWNrIHRoZSAoQGZpbGUsIEBpbmRleCkg cGFpciBmb3IgbGF0ZXIgcmVjb3ZlcnkgdmlhIHNobWVtX3JlYWRfZm9saW8oKQorICogYW5kIHJl bGVhc2UgdmlhIHNobWVtX3RydW5jYXRlX3JhbmdlKCkuCisgKgorICogUmV0dXJuOiAwIG9uIHN1 Y2Nlc3MuICBPbiBmYWlsdXJlIHRoZSBmb2xpbyBpcyByZXR1cm5lZCB0byBpdHMgb3JpZ2luYWwK KyAqIHN0YXRlIGFuZCB0aGUgY2FsbGVyIHJldGFpbnMgb3duZXJzaGlwLgorICovCitpbnQgc2ht ZW1faW5zZXJ0X2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1 bnNpZ25lZCBpbnQgb3JkZXIsCisJCSAgICAgICBwZ29mZl90IGluZGV4LCBib29sIHdyaXRlYmFj aywgZ2ZwX3QgZm9saW9fZ2ZwKQoreworCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0g ZmlsZS0+Zl9tYXBwaW5nOworCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBtYXBwaW5nLT5ob3N0Owor CWJvb2wgcHJvbW90ZWQ7CisJbG9uZyBucl9wYWdlczsKKwlpbnQgcmV0OworCisJcHJvbW90ZWQg PSBvcmRlciA+IDAgJiYgIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pOworCWlmIChwcm9tb3RlZCkK KwkJcHJlcF9jb21wb3VuZF9wYWdlKCZmb2xpby0+cGFnZSwgb3JkZXIpOworCW5yX3BhZ2VzID0g Zm9saW9fbnJfcGFnZXMoZm9saW8pOworCisJVk1fQlVHX09OX0ZPTElPKGZvbGlvX3Rlc3RfbHJ1 KGZvbGlvKSwgZm9saW8pOworCVZNX0JVR19PTl9GT0xJTyhmb2xpb19tYXBwZWQoZm9saW8pLCBm b2xpbyk7CisJVk1fQlVHX09OX0ZPTElPKGZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSwgZm9s aW8pOworCVZNX0JVR19PTl9GT0xJTyhmb2xpby0+bWFwcGluZywgZm9saW8pOworCVZNX0JVR19P TihpbmRleCAhPSByb3VuZF9kb3duKGluZGV4LCBucl9wYWdlcykpOworCisJZm9saW9fbG9jayhm b2xpbyk7CisJX19mb2xpb19zZXRfc3dhcGJhY2tlZChmb2xpbyk7CisJZm9saW9fbWFya191cHRv ZGF0ZShmb2xpbyk7CisKKwlmb2xpb19nZnAgJj0gR0ZQX1JFQ0xBSU1fTUFTSzsKKwlyZXQgPSBt ZW1fY2dyb3VwX2NoYXJnZShmb2xpbywgTlVMTCwgZm9saW9fZ2ZwKTsKKwlpZiAocmV0KQorCQln b3RvIGVycl91bmxvY2s7CisKKwlyZXQgPSBzaG1lbV9hZGRfdG9fcGFnZV9jYWNoZShmb2xpbywg bWFwcGluZywgaW5kZXgsIE5VTEwsIGZvbGlvX2dmcCk7CisJaWYgKHJldCA9PSAtRUVYSVNUKSB7 CisJCXNobWVtX3RydW5jYXRlX3JhbmdlKGlub2RlLAorCQkJCSAgICAgKGxvZmZfdClpbmRleCA8 PCBQQUdFX1NISUZULAorCQkJCSAgICAgKChsb2ZmX3QpKGluZGV4ICsgbnJfcGFnZXMpIDw8IFBB R0VfU0hJRlQpIC0gMSk7CisJCXJldCA9IHNobWVtX2FkZF90b19wYWdlX2NhY2hlKGZvbGlvLCBt YXBwaW5nLCBpbmRleCwgTlVMTCwKKwkJCQkJICAgICAgZm9saW9fZ2ZwKTsKKwl9CisJaWYgKHJl dCkKKwkJZ290byBlcnJfdW5jaGFyZ2U7CisKKwlmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKKwor CXJldCA9IHNobWVtX2lub2RlX2FjY3RfYmxvY2tzKGlub2RlLCBucl9wYWdlcyk7CisJaWYgKHJl dCkgeworCQlmaWxlbWFwX3JlbW92ZV9mb2xpbyhmb2xpbyk7CisJCWdvdG8gZXJyX3VuY2hhcmdl OworCX0KKworCXNobWVtX3JlY2FsY19pbm9kZShpbm9kZSwgbnJfcGFnZXMsIDApOworCisJaWYg KHdyaXRlYmFjaykgeworCQlyZXQgPSBzaG1lbV93cml0ZW91dChmb2xpbywgTlVMTCwgTlVMTCk7 CisJCWlmIChyZXQgPT0gQU9QX1dSSVRFUEFHRV9BQ1RJVkFURSkgeworCQkJLyogTm8gc3dhcCBz bG90IGF2YWlsYWJsZTsgcmVjbGFpbSB3aWxsIHJldHJ5LiAqLworCQkJZm9saW9fYWRkX2xydShm b2xpbyk7CisJCQlmb2xpb191bmxvY2soZm9saW8pOworCQl9CisJCS8qIHJldCA9PSAwIG9yIHJl dCA8IDA6IGZvbGlvIHVubG9ja2VkIGJ5IHNobWVtX3dyaXRlb3V0ICovCisJfSBlbHNlIHsKKwkJ Zm9saW9fYWRkX2xydShmb2xpbyk7CisJCWZvbGlvX3VubG9jayhmb2xpbyk7CisJfQorCisJcmV0 dXJuIDA7CisKK2Vycl91bmNoYXJnZToKKwltZW1fY2dyb3VwX3VuY2hhcmdlKGZvbGlvKTsKK2Vy cl91bmxvY2s6CisJX19mb2xpb19jbGVhcl9zd2FwYmFja2VkKGZvbGlvKTsKKwlmb2xpb191bmxv Y2soZm9saW8pOworCWlmIChwcm9tb3RlZCkKKwkJdW5kb19jb21wb3VuZF9wYWdlKCZmb2xpby0+ cGFnZSk7CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHNobWVtX2luc2VydF9m b2xpbyk7CisKIC8qCiAgKiBTb21ld2hhdCBsaWtlIGZpbGVtYXBfcmVtb3ZlX2ZvbGlvLCBidXQg c3Vic3RpdHV0ZXMgc3dhcCBmb3IgQGZvbGlvLgogICovCi0tIAoyLjU0LjAKCg==