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 BA35FCD4F21 for ; Tue, 12 May 2026 11:04:19 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 16C3D10EA2B; Tue, 12 May 2026 11:04:19 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="SMi1J4y1"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7904E10EA33; Tue, 12 May 2026 11:04:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1778583857; x=1810119857; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MSH2boMJr1nmtEanV/SvdOBNmmUx2sB8SsWmTowAyfM=; b=SMi1J4y1bRSHS6gRY0kBMUABfrIeX408nQZaHnNJ1t+5iU1NnEzWVon5 QAsf4J+1MLkMavkN2JAy25KEk5yN5SqAh7gnSj20Qvl6o2L7099BEzfEE aoBtve+0pkw3XZ/V1DaOpZK8UJUCcTpWtnjaWGWDyhkn7e807C+s0g0Nf UwnhDeUEZFI4uESd/i+pCOouoTSWQquYj26T0EPYJNUMCghlyNE2S2OFU IiE2qkh2AJRD4hBp4w/03nP1ELlUJ1UTIeNc6SgAFu4u0wcZB4Jr2gVTV B/HPrnPDDZ5BPLpncwNbw+soGK9zSOOwDnvzQySgxbCpNQqMWIxZNxeKp w==; X-CSE-ConnectionGUID: 6x7TugalRmqol08DxKj6ug== X-CSE-MsgGUID: sM5a3oJJTNqce7kI6llXCA== X-IronPort-AV: E=McAfee;i="6800,10657,11783"; a="104944486" X-IronPort-AV: E=Sophos;i="6.23,230,1770624000"; d="scan'208";a="104944486" 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:17 -0700 X-CSE-ConnectionGUID: Qs88e5KCQ2eVbu9ppWPW6g== X-CSE-MsgGUID: cHhEi+iXQ46g602I48OnPw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,230,1770624000"; d="scan'208";a="231339495" 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:11 -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 2/2] drm/ttm: Use ttm_backup_insert_folio() for zero-copy swapout Date: Tue, 12 May 2026 13:03:39 +0200 Message-ID: <20260512110339.6244-3-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" QWRkIHR0bV9iYWNrdXBfaW5zZXJ0X2ZvbGlvKCksIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBzaG1l bV9pbnNlcnRfZm9saW8oKQp0aGF0IHJldHVybnMgYSBoYW5kbGUsIGZvciB1c2UgYnkgZHJpdmVy cyB3aXRoIGxhcmdlIGlzb2xhdGVkIGZvbGlvcy4KClJlcGxhY2UgdGhlIGFsbG9jK2NvcHkgdHRt X2JhY2t1cF9iYWNrdXBfcGFnZSgpIHBhdGggaW4gdHRtX3Bvb2xfYmFja3VwKCkKd2l0aCB0aGUg emVyby1jb3B5IHR0bV9iYWNrdXBfaW5zZXJ0X2ZvbGlvKCkgcGF0aC4KCk9uIHN1Y2Nlc3MgTlJf R1BVX0FDVElWRSBpcyBkZWNyZW1lbnRlZCBhbmQgdGhlIGNhbGxlcidzIHJlZmVyZW5jZSBpcwpy ZWxlYXNlZDsgc2htZW0gdGFrZXMgb3duZXJzaGlwLiAgVGhlIGFsbG9jX2dmcCBhcmd1bWVudCB1 c2VkIGZvcgphbGxvY2F0aW5nIHNobWVtIGJhY2tpbmcgcGFnZXMgaXMgbm8gbG9uZ2VyIG5lZWRl ZC4KCklmIGluc2VydGlvbiBmYWlscyBmb3IgYSBoaWdoZXItb3JkZXIgcGFnZSwgaXQgaXMgc3Bs aXQgaW50byBvcmRlci0wCnBhZ2VzIHdpdGggdHRtX3Bvb2xfc3BsaXRfZm9yX3N3YXAoKSBhbmQg dGhlIGxvb3AgcmV0cmllcyBlYWNoIHBhZ2UKaW5kaXZpZHVhbGx5LgoKQXNzaXN0ZWQtYnk6IEdp dEh1Yl9Db3BpbG90OmNsYXVkZS1zb25uZXQtNC42ClNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxs c3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vdHRtL3R0bV9iYWNrdXAuYyB8IDkyICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9wb29sLmMgICB8IDY3ICsrKysrKysrKysrKysr KystLS0tLS0tCiBpbmNsdWRlL2RybS90dG0vdHRtX2JhY2t1cC5oICAgICB8IDExICsrLS0KIDMg ZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgODMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYmFja3VwLmMgYi9kcml2ZXJzL2dwdS9kcm0v dHRtL3R0bV9iYWNrdXAuYwppbmRleCA4MWRmNGNiNTYwNmIuLmEzN2U5NDA0Yjg5NSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYmFja3VwLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3R0bS90dG1fYmFja3VwLmMKQEAgLTYsNyArNiw2IEBACiAjaW5jbHVkZSA8ZHJtL3R0bS90 dG1fYmFja3VwLmg+CiAKICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KLSNpbmNsdWRlIDxsaW51 eC9wYWdlLWZsYWdzLmg+CiAjaW5jbHVkZSA8bGludXgvc3dhcC5oPgogCiAvKgpAQCAtNjgsNzMg KzY3LDUwIEBAIGludCB0dG1fYmFja3VwX2NvcHlfcGFnZShzdHJ1Y3QgZmlsZSAqYmFja3VwLCBz dHJ1Y3QgcGFnZSAqZHN0LAogfQogCiAvKioKLSAqIHR0bV9iYWNrdXBfYmFja3VwX3BhZ2UoKSAt IEJhY2t1cCBhIHBhZ2UKKyAqIHR0bV9iYWNrdXBfaW5zZXJ0X2ZvbGlvKCkgLSBaZXJvLWNvcHkg aW5zZXJ0IG9mIGFuIGlzb2xhdGVkIGZvbGlvIGludG8gYmFja3VwLgogICogQGJhY2t1cDogVGhl IHN0cnVjdCBiYWNrdXAgcG9pbnRlciB0byB1c2UuCi0gKiBAcGFnZTogVGhlIHBhZ2UgdG8gYmFj ayB1cC4KLSAqIEB3cml0ZWJhY2s6IFdoZXRoZXIgdG8gcGVyZm9ybSBpbW1lZGlhdGUgd3JpdGVi YWNrIG9mIHRoZSBwYWdlLgotICogVGhpcyBtYXkgaGF2ZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlv bnMuCi0gKiBAaWR4OiBBIHVuaXF1ZSBpbnRlZ2VyIGZvciBlYWNoIHBhZ2UgYW5kIGVhY2ggc3Ry dWN0IGJhY2t1cC4KLSAqIFRoaXMgYWxsb3dzIHRoZSBiYWNrdXAgaW1wbGVtZW50YXRpb24gdG8g YXZvaWQgbWFuYWdpbmcKLSAqIGl0cyBhZGRyZXNzIHNwYWNlIHNlcGFyYXRlbHkuCi0gKiBAcGFn ZV9nZnA6IFRoZSBnZnAgdmFsdWUgdXNlZCB3aGVuIHRoZSBwYWdlIHdhcyBhbGxvY2F0ZWQuCi0g KiBUaGlzIGlzIHVzZWQgZm9yIGFjY291bnRpbmcgcHVycG9zZXMuCi0gKiBAYWxsb2NfZ2ZwOiBU aGUgZ2ZwIHRvIGJlIHVzZWQgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeS4KKyAqIEBmb2xpbzogVGhl IGZvbGlvIHRvIGluc2VydC4gTXVzdCBiZSBpc29sYXRlZCAobm90IG9uIExSVSksIHVubG9ja2Vk LAorICogICAgICAgICBoYXZlIGV4YWN0bHkgb25lIHJlZmVyZW5jZSAodGhlIGNhbGxlcidzKSwg YW5kIGhhdmUgbm8gcGFnZS10YWJsZQorICogICAgICAgICBtYXBwaW5ncy4gIFRoZSBmb2xpbyBt dXN0IG5vdCBiZSBzd2FwYmFja2VkIG9yIGluIHRoZSBzd2FwY2FjaGUsCisgKiAgICAgICAgIGFu ZCBmb2xpby0+cHJpdmF0ZSBtdXN0IGhhdmUgYmVlbiBjbGVhcmVkIGJ5IHRoZSBjYWxsZXIuCisg KiBAb3JkZXI6IFRoZSBhbGxvY2F0aW9uIG9yZGVyIG9mIEBmb2xpby4gIElmIEBvcmRlciA+IDAg YW5kIEBmb2xpbyBpcyBub3QKKyAqICAgICAgICAgYWxyZWFkeSBhIGxhcmdlIGZvbGlvLCBpdCBp cyBwcm9tb3RlZCB0byBhIGNvbXBvdW5kIGZvbGlvIG9mIHRoaXMKKyAqICAgICAgICAgb3JkZXIg KHNlZSBzaG1lbV9pbnNlcnRfZm9saW8oKSkuICBzcGxpdF9wYWdlKCkgbXVzdCBOT1QgaGF2ZSBi ZWVuCisgKiAgICAgICAgIGNhbGxlZDsgdGFpbC1wYWdlIHJlZmNvdW50cyBtdXN0IGJlIDAuCisg KiBAd3JpdGViYWNrOiBXaGV0aGVyIHRvIGF0dGVtcHQgaW1tZWRpYXRlIHdyaXRlYmFjayB0byBz d2FwIGFmdGVyIGluc2VydGlvbi4KKyAqICAgICAgICAgICAgIEJlc3QtZWZmb3J0OyBmYWlsdXJl IGlzIHNpbGVudGx5IGlnbm9yZWQuCisgKiBAaWR4OiBQYWdlLWNhY2hlIGluZGV4IHdpdGhpbiBA YmFja3VwLiAgTXVzdCBiZSBhbGlnbmVkIHRvICgxIDw8IEBvcmRlcikuCisgKiBAZm9saW9fZ2Zw OiBUaGUgZ2ZwIHZhbHVlIHVzZWQgd2hlbiB0aGUgZm9saW8gd2FzIGFsbG9jYXRlZC4KKyAqICAg ICAgICAgICAgIFVzZWQgZm9yIG1lbW9yeS1jZ3JvdXAgY2hhcmdpbmcuCiAgKgotICogQ29udGV4 dDogSWYgY2FsbGVkIGZyb20gcmVjbGFpbSBjb250ZXh0LCB0aGUgY2FsbGVyIG5lZWRzIHRvCi0g KiBhc3NlcnQgdGhhdCB0aGUgc2hyaW5rZXIgZ2ZwIGhhcyBfX0dGUF9GUyBzZXQsIHRvIGF2b2lk Ci0gKiBkZWFkbG9ja2luZyBvbiBsb2NrX3BhZ2UoKS4gSWYgQHdyaXRlYmFjayBpcyBzZXQgdG8g dHJ1ZSBhbmQKLSAqIGNhbGxlZCBmcm9tIHJlY2xhaW0gY29udGV4dCwgdGhlIGNhbGxlciBhbHNv IG5lZWRzIHRvIGFzc2VydAotICogdGhhdCB0aGUgc2hyaW5rZXIgZ2ZwIGhhcyBfX0dGUF9JTyBz ZXQsIHNpbmNlIHdpdGhvdXQgaXQsCi0gKiB3ZSdyZSBub3QgYWxsb3dlZCB0byBzdGFydCBiYWNr dXAgSU8uCisgKiBDb250ZXh0OiBNYXkgYmUgY2FsbGVkIGZyb20gcmVjbGFpbSBjb250ZXh0LiAg SWYgQHdyaXRlYmFjayBpcyB0cnVlLCB0aGUKKyAqIGNhbGxlciBtdXN0IGFzc2VydCB0aGF0IHRo ZSBzaHJpbmtlciBnZnAgaGFzIF9fR0ZQX0lPIHNldC4KICAqCi0gKiBSZXR1cm46IEEgaGFuZGxl IG9uIHN1Y2Nlc3MuIE5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqIFRoZSBmb2xp byBpcyB0cmFuc2ZlcnJlZCB6ZXJvLWNvcHkgaW50byB0aGUgc2htZW0gcGFnZSBjYWNoZS4gIE9u IHN1Y2Nlc3MKKyAqIHRoZSBjYWxsZXIgc2hvdWxkIHJlbGVhc2UgdGhlaXIgcmVmZXJlbmNlIHdp dGggZm9saW9fcHV0KCkgYW5kIHRyYWNrIHRoZQorICogaGFuZGxlIGZvciBsYXRlciByZWNvdmVy eSB2aWEgdHRtX2JhY2t1cF9jb3B5X3BhZ2UoKSBhbmQgcmVsZWFzZSB2aWEKKyAqIHR0bV9iYWNr dXBfZHJvcCgpLiAgSGFuZGxlcyBmb3Igc3ViLXBhZ2VzIG9mIGEgY29tcG91bmQgZm9saW8gZm9s bG93CisgKiBzZXF1ZW50aWFsbHk6IGhhbmRsZSArIGogYWRkcmVzc2VzIHN1Yi1wYWdlIGouCiAg KgotICogTm90ZTogVGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBleHRlbmRlZCB0byBiYWNrIHVwIGEg Zm9saW8gYW5kCi0gKiBpbXBsZW1lbnRhdGlvbnMgd291bGQgdGhlbiBzcGxpdCB0aGUgZm9saW8g aW50ZXJuYWxseSBpZiBuZWVkZWQuCi0gKiBEcmF3YmFjayBpcyB0aGF0IHRoZSBjYWxsZXIgd291 bGQgdGhlbiBoYXZlIHRvIGtlZXAgdHJhY2sgb2YKLSAqIHRoZSBmb2xpbyBzaXplLSBhbmQgdXNh Z2UuCisgKiBSZXR1cm46IEEgcG9zaXRpdmUgaGFuZGxlIG9uIHN1Y2Nlc3MuIE5lZ2F0aXZlIGVy cm9yIGNvZGUgb24gZmFpbHVyZTsKKyAqICAgICAgICAgdGhlIGZvbGlvIGlzIHJldHVybmVkIHRv IGl0cyBvcmlnaW5hbCBub24tY29tcG91bmQgc3RhdGUgYW5kIHRoZQorICogICAgICAgICBjYWxs ZXIgcmV0YWlucyBvd25lcnNoaXAuCiAgKi8KIHM2NAotdHRtX2JhY2t1cF9iYWNrdXBfcGFnZShz dHJ1Y3QgZmlsZSAqYmFja3VwLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKLQkJICAgICAgIGJvb2wgd3Jp dGViYWNrLCBwZ29mZl90IGlkeCwgZ2ZwX3QgcGFnZV9nZnAsCi0JCSAgICAgICBnZnBfdCBhbGxv Y19nZnApCit0dG1fYmFja3VwX2luc2VydF9mb2xpbyhzdHJ1Y3QgZmlsZSAqYmFja3VwLCBzdHJ1 Y3QgZm9saW8gKmZvbGlvLAorCQkJdW5zaWduZWQgaW50IG9yZGVyLCBib29sIHdyaXRlYmFjaywg cGdvZmZfdCBpZHgsCisJCQlnZnBfdCBmb2xpb19nZnApCiB7Ci0Jc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcgPSBiYWNrdXAtPmZfbWFwcGluZzsKLQl1bnNpZ25lZCBsb25nIGhhbmRsZSA9 IDA7Ci0Jc3RydWN0IGZvbGlvICp0b19mb2xpbzsKIAlpbnQgcmV0OwogCi0JdG9fZm9saW8gPSBz aG1lbV9yZWFkX2ZvbGlvX2dmcChtYXBwaW5nLCBpZHgsIGFsbG9jX2dmcCk7Ci0JaWYgKElTX0VS Uih0b19mb2xpbykpCi0JCXJldHVybiBQVFJfRVJSKHRvX2ZvbGlvKTsKLQotCWZvbGlvX21hcmtf YWNjZXNzZWQodG9fZm9saW8pOwotCWZvbGlvX2xvY2sodG9fZm9saW8pOwotCWZvbGlvX21hcmtf ZGlydHkodG9fZm9saW8pOwotCWNvcHlfaGlnaHBhZ2UoZm9saW9fZmlsZV9wYWdlKHRvX2ZvbGlv LCBpZHgpLCBwYWdlKTsKLQloYW5kbGUgPSB0dG1fYmFja3VwX3NobWVtX2lkeF90b19oYW5kbGUo aWR4KTsKLQotCWlmICh3cml0ZWJhY2sgJiYgIWZvbGlvX21hcHBlZCh0b19mb2xpbykgJiYKLQkg ICAgZm9saW9fY2xlYXJfZGlydHlfZm9yX2lvKHRvX2ZvbGlvKSkgewotCQlmb2xpb19zZXRfcmVj bGFpbSh0b19mb2xpbyk7Ci0JCXJldCA9IHNobWVtX3dyaXRlb3V0KHRvX2ZvbGlvLCBOVUxMLCBO VUxMKTsKLQkJaWYgKCFmb2xpb190ZXN0X3dyaXRlYmFjayh0b19mb2xpbykpCi0JCQlmb2xpb19j bGVhcl9yZWNsYWltKHRvX2ZvbGlvKTsKLQkJLyoKLQkJICogSWYgd3JpdGVvdXQgc3VjY2VlZHMs IGl0IHVubG9ja3MgdGhlIGZvbGlvLgllcnJvcnMKLQkJICogYXJlIG90aGVyd2lzZSBkcm9wcGVk LCBzaW5jZSB3cml0ZW91dCBpcyBvbmx5IGJlc3QKLQkJICogZWZmb3J0IGhlcmUuCi0JCSAqLwot CQlpZiAocmV0KQotCQkJZm9saW9fdW5sb2NrKHRvX2ZvbGlvKTsKLQl9IGVsc2UgewotCQlmb2xp b191bmxvY2sodG9fZm9saW8pOwotCX0KLQotCWZvbGlvX3B1dCh0b19mb2xpbyk7Ci0KLQlyZXR1 cm4gaGFuZGxlOworCVdBUk5fT05fT05DRShmb2xpb19nZXRfcHJpdmF0ZShmb2xpbykpOworCXJl dCA9IHNobWVtX2luc2VydF9mb2xpbyhiYWNrdXAsIGZvbGlvLCBvcmRlciwgaWR4LCB3cml0ZWJh Y2ssIGZvbGlvX2dmcCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiB0dG1f YmFja3VwX3NobWVtX2lkeF90b19oYW5kbGUoaWR4KTsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHR0 bV9iYWNrdXBfaW5zZXJ0X2ZvbGlvKTsKIAogLyoqCiAgKiB0dG1fYmFja3VwX2ZpbmkoKSAtIEZy ZWUgdGhlIHN0cnVjdCBiYWNrdXAgcmVzb3VyY2VzIGFmdGVyIGxhc3QgdXNlLgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fcG9vbC5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90 dG1fcG9vbC5jCmluZGV4IGQzODBhM2M3ZmU0MC4uOGVhM2ExMjVjNDY1IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9wb29sLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90 dG1fcG9vbC5jCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIHZvaWQgdHRtX3Bvb2xfc3BsaXRf Zm9yX3N3YXAoc3RydWN0IHR0bV9wb29sICpwb29sLCBzdHJ1Y3QgcGFnZSAqcCkKIC8qKgogICog RE9DOiBQYXJ0aWFsIGJhY2t1cCBhbmQgcmVzdG9yYXRpb24gb2YgYSBzdHJ1Y3QgdHRtX3R0Lgog ICoKLSAqIFN3YXBvdXQgdXNpbmcgdHRtX2JhY2t1cF9iYWNrdXBfcGFnZSgpIGFuZCBzd2FwaW4g dXNpbmcKKyAqIFN3YXBvdXQgdXNpbmcgdHRtX2JhY2t1cF9pbnNlcnRfZm9saW8oKSBhbmQgc3dh cGluIHVzaW5nCiAgKiB0dG1fYmFja3VwX2NvcHlfcGFnZSgpIG1heSBmYWlsLgogICogVGhlIGZv cm1lciBtb3N0IGxpa2VseSBkdWUgdG8gbGFjayBvZiBzd2FwLXNwYWNlIG9yIG1lbW9yeSwgdGhl IGxhdHRlciBkdWUKICAqIHRvIGxhY2sgb2YgbWVtb3J5IG9yIGJlY2F1c2Ugb2Ygc2lnbmFsIGlu dGVycnVwdGlvbiBkdXJpbmcgd2FpdHMuCkBAIC0xMDQ1LDEyICsxMDQ1LDExIEBAIGxvbmcgdHRt X3Bvb2xfYmFja3VwKHN0cnVjdCB0dG1fcG9vbCAqcG9vbCwgc3RydWN0IHR0bV90dCAqdHQsCiB7 CiAJc3RydWN0IGZpbGUgKmJhY2t1cCA9IHR0LT5iYWNrdXA7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7 Ci0JdW5zaWduZWQgbG9uZyBoYW5kbGU7Ci0JZ2ZwX3QgYWxsb2NfZ2ZwOwogCWdmcF90IGdmcDsK IAlpbnQgcmV0ID0gMDsKIAlwZ29mZl90IHNocnVua2VuID0gMDsKLQlwZ29mZl90IGksIG51bV9w YWdlczsKKwlwZ29mZl90IGksIG51bV9wYWdlcywgbnBhZ2VzOworCXVuc2lnbmVkIGxvbmcgajsK IAogCWlmIChXQVJOX09OKHR0bV90dF9pc19iYWNrZWRfdXAodHQpKSkKIAkJcmV0dXJuIC1FSU5W QUw7CkBAIC0xMDcwLDcgKzEwNjksOCBAQCBsb25nIHR0bV9wb29sX2JhY2t1cChzdHJ1Y3QgdHRt X3Bvb2wgKnBvb2wsIHN0cnVjdCB0dG1fdHQgKnR0LAogCQkJdW5zaWduZWQgaW50IG9yZGVyOwog CiAJCQlwYWdlID0gdHQtPnBhZ2VzW2ldOwotCQkJaWYgKHVubGlrZWx5KCFwYWdlKSkgeworCQkJ aWYgKHVubGlrZWx5KCFwYWdlIHx8CisJCQkJICAgICB0dG1fYmFja3VwX3BhZ2VfcHRyX2lzX2hh bmRsZShwYWdlKSkpIHsKIAkJCQludW1fcGFnZXMgPSAxOwogCQkJCWNvbnRpbnVlOwogCQkJfQpA QCAtMTA5OCwzNCArMTA5OCw2MyBAQCBsb25nIHR0bV9wb29sX2JhY2t1cChzdHJ1Y3QgdHRtX3Bv b2wgKnBvb2wsIHN0cnVjdCB0dG1fdHQgKnR0LAogCWVsc2UKIAkJZ2ZwID0gR0ZQX0hJR0hVU0VS OwogCi0JYWxsb2NfZ2ZwID0gR0ZQX0tFUk5FTCB8IF9fR0ZQX0hJR0ggfCBfX0dGUF9OT1dBUk4g fCBfX0dGUF9SRVRSWV9NQVlGQUlMOwotCiAJbnVtX3BhZ2VzID0gdHQtPm51bV9wYWdlczsKIAog CS8qIFByZXRlbmQgZG9pbmcgZmF1bHQgaW5qZWN0aW9uIGJ5IHNocmlua2luZyBvbmx5IGhhbGYg b2YgdGhlIHBhZ2VzLiAqLwogCWlmIChJU19FTkFCTEVEKENPTkZJR19GQVVMVF9JTkpFQ1RJT04p ICYmIHNob3VsZF9mYWlsKCZiYWNrdXBfZmF1bHRfaW5qZWN0LCAxKSkKIAkJbnVtX3BhZ2VzID0g RElWX1JPVU5EX1VQKG51bV9wYWdlcywgMik7CiAKLQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhZ2Vz OyArK2kpIHsKLQkJczY0IHNoYW5kbGU7CisJZm9yIChpID0gMDsgaSA8IG51bV9wYWdlczsgaSAr PSBucGFnZXMpIHsKKwkJdW5zaWduZWQgaW50IG9yZGVyOworCQlzNjQgaGFuZGxlOwogCisJCW5w YWdlcyA9IDE7CiAJCXBhZ2UgPSB0dC0+cGFnZXNbaV07CiAJCWlmICh1bmxpa2VseSghcGFnZSkp CiAJCQljb250aW51ZTsKIAotCQl0dG1fcG9vbF9zcGxpdF9mb3Jfc3dhcChwb29sLCBwYWdlKTsK KwkJLyogQWxyZWFkeS1oYW5kbGVkIGVudHJ5IGZyb20gYSBwcmV2aW91cyBhdHRlbXB0LiAqLwor CQlpZiAodW5saWtlbHkodHRtX2JhY2t1cF9wYWdlX3B0cl9pc19oYW5kbGUocGFnZSkpKQorCQkJ Y29udGludWU7CisKKwkJb3JkZXIgPSB0dG1fcG9vbF9wYWdlX29yZGVyKHBvb2wsIHBhZ2UpOwor CQlucGFnZXMgPSAxVUwgPDwgb3JkZXI7CiAKLQkJc2hhbmRsZSA9IHR0bV9iYWNrdXBfYmFja3Vw X3BhZ2UoYmFja3VwLCBwYWdlLCBmbGFncy0+d3JpdGViYWNrLCBpLAotCQkJCQkJIGdmcCwgYWxs b2NfZ2ZwKTsKLQkJaWYgKHNoYW5kbGUgPCAwKSB7Ci0JCQkvKiBXZSBhbGxvdyBwYXJ0aWFsbHkg c2hydW5rZW4gdHRzICovCi0JCQlyZXQgPSBzaGFuZGxlOworCQkvKgorCQkgKiBJZiBmYXVsdCBp bmplY3Rpb24gdHJ1bmNhdGVkIG51bV9wYWdlcyBtaWQtY29tcG91bmQsIHNraXAKKwkJICogdGhl IHBhcnRpYWwgdGFpbCByYXRoZXIgdGhhbiBpbnNlcnRpbmcgaXQuCisJCSAqLworCQlpZiAodW5s aWtlbHkoaSArIG5wYWdlcyA+IG51bV9wYWdlcykpCisJCQlicmVhazsKKworCQkvKgorCQkgKiBU cmFuc2ZlciB0aGlzIHBhZ2UgemVyby1jb3B5IGludG8gc2htZW0uICBwYWdlLT5wcml2YXRlCisJ CSAqIHN0b3JlcyB0aGUgVFRNIG9yZGVyOyBjbGVhciBpdCBiZWZvcmUgaW5zZXJ0aW5nLgorCQkg Ki8KKwkJcGFnZS0+cHJpdmF0ZSA9IDA7CisJCWhhbmRsZSA9IHR0bV9iYWNrdXBfaW5zZXJ0X2Zv bGlvKGJhY2t1cCwgcGFnZV9mb2xpbyhwYWdlKSwKKwkJCQkJCSBvcmRlciwgZmxhZ3MtPndyaXRl YmFjaywKKwkJCQkJCSBpLCBnZnApOworCQlpZiAodW5saWtlbHkoaGFuZGxlIDwgMCkpIHsKKwkJ CWlmIChvcmRlcikgeworCQkJCXBhZ2UtPnByaXZhdGUgPSBvcmRlcjsKKwkJCQl0dG1fcG9vbF9z cGxpdF9mb3Jfc3dhcChwb29sLCBwYWdlKTsKKwkJCQlucGFnZXMgPSAwOworCQkJCWNvbnRpbnVl OworCQkJfQorCQkJcmV0ID0gKGludCloYW5kbGU7CiAJCQlicmVhazsKIAkJfQotCQloYW5kbGUg PSBzaGFuZGxlOwotCQl0dC0+cGFnZXNbaV0gPSB0dG1fYmFja3VwX2hhbmRsZV90b19wYWdlX3B0 cihoYW5kbGUpOwotCQlfX2ZyZWVfcGFnZXNfZ3B1X2FjY291bnQocGFnZSwgMCwgZmFsc2UpOwot CQlzaHJ1bmtlbisrOworCisJCS8qCisJCSAqIE5SX0dQVV9BQ1RJVkUgaXMgbm9kZS1vbmx5OyB1 c2UgbW9kX25vZGVfcGFnZV9zdGF0ZSgpCisJCSAqIGRpcmVjdGx5IGFmdGVyIHRoZSBmb2xpbyBi ZWNvbWVzIG1lbWNnLWNoYXJnZWQuCisJCSAqLworCQltb2Rfbm9kZV9wYWdlX3N0YXRlKHBhZ2Vf cGdkYXQocGFnZSksIE5SX0dQVV9BQ1RJVkUsIC0oMSA8PCBvcmRlcikpOworCQlmb2xpb19wdXQo cGFnZV9mb2xpbyhwYWdlKSk7CisJCWZvciAoaiA9IDA7IGogPCBucGFnZXM7IGorKykKKwkJCXR0 LT5wYWdlc1tpICsgal0gPSB0dG1fYmFja3VwX2hhbmRsZV90b19wYWdlX3B0cihoYW5kbGUgKyBq KTsKKwkJc2hydW5rZW4gKz0gbnBhZ2VzOwogCX0KIAogCXJldHVybiBzaHJ1bmtlbiA/IHNocnVu a2VuIDogcmV0OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9iYWNrdXAuaCBiL2lu Y2x1ZGUvZHJtL3R0bS90dG1fYmFja3VwLmgKaW5kZXggMjliOWM4NTVhZjc3Li4wYzJmZWVkMGJm ZmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYmFja3VwLmgKKysrIGIvaW5jbHVk ZS9kcm0vdHRtL3R0bV9iYWNrdXAuaApAQCAtMTMsOSArMTMsOCBAQAogICogdHRtX2JhY2t1cF9o YW5kbGVfdG9fcGFnZV9wdHIoKSAtIENvbnZlcnQgaGFuZGxlIHRvIHN0cnVjdCBwYWdlIHBvaW50 ZXIKICAqIEBoYW5kbGU6IFRoZSBoYW5kbGUgdG8gY29udmVydC4KICAqCi0gKiBDb252ZXJ0cyBh biBvcGFxdWUgaGFuZGxlIHJlY2VpdmVkIGZyb20gdGhlCi0gKiB0dG1fYmFja3VwX2JhY2t1cF9w YWdlKCkgZnVuY3Rpb24gdG8gYW4gKGludmFsaWQpCi0gKiBzdHJ1Y3QgcGFnZSBwb2ludGVyIHN1 aXRhYmxlIGZvciBhIHN0cnVjdCBwYWdlIGFycmF5LgorICogQ29udmVydHMgYW4gb3BhcXVlIGhh bmRsZSByZWNlaXZlZCBmcm9tIHR0bV9iYWNrdXBfaW5zZXJ0X2ZvbGlvKCkKKyAqIGZ1bmN0aW9u IHRvIGFuIChpbnZhbGlkKSBzdHJ1Y3QgcGFnZSBwb2ludGVyIHN1aXRhYmxlIGZvciBhIHN0cnVj dCBwYWdlIGFycmF5LgogICoKICAqIFJldHVybjogQW4gKGludmFsaWQpIHN0cnVjdCBwYWdlIHBv aW50ZXIuCiAgKi8KQEAgLTU5LDkgKzU4LDkgQEAgaW50IHR0bV9iYWNrdXBfY29weV9wYWdlKHN0 cnVjdCBmaWxlICpiYWNrdXAsIHN0cnVjdCBwYWdlICpkc3QsCiAJCQkgcGdvZmZfdCBoYW5kbGUs IGJvb2wgaW50ciwgZ2ZwX3QgYWRkaXRpb25hbF9nZnApOwogCiBzNjQKLXR0bV9iYWNrdXBfYmFj a3VwX3BhZ2Uoc3RydWN0IGZpbGUgKmJhY2t1cCwgc3RydWN0IHBhZ2UgKnBhZ2UsCi0JCSAgICAg ICBib29sIHdyaXRlYmFjaywgcGdvZmZfdCBpZHgsIGdmcF90IHBhZ2VfZ2ZwLAotCQkgICAgICAg Z2ZwX3QgYWxsb2NfZ2ZwKTsKK3R0bV9iYWNrdXBfaW5zZXJ0X2ZvbGlvKHN0cnVjdCBmaWxlICpi YWNrdXAsIHN0cnVjdCBmb2xpbyAqZm9saW8sCisJCQl1bnNpZ25lZCBpbnQgb3JkZXIsIGJvb2wg d3JpdGViYWNrLCBwZ29mZl90IGlkeCwKKwkJCWdmcF90IGZvbGlvX2dmcCk7CiAKIHZvaWQgdHRt X2JhY2t1cF9maW5pKHN0cnVjdCBmaWxlICpiYWNrdXApOwogCi0tIAoyLjU0LjAKCg==