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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 62B75C43331 for ; Tue, 24 Mar 2020 20:12:01 +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 34AED208CA for ; Tue, 24 Mar 2020 20:12:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=shipmail.org header.i=@shipmail.org header.b="aGnl1qRj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 34AED208CA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AB7716E0C1; Tue, 24 Mar 2020 20:12:00 +0000 (UTC) Received: from ste-pvt-msa2.bahnhof.se (ste-pvt-msa2.bahnhof.se [213.80.101.71]) by gabe.freedesktop.org (Postfix) with ESMTPS id 169616E0AD for ; Tue, 24 Mar 2020 20:11:51 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa2.bahnhof.se (Postfix) with ESMTP id B42C33FA29; Tue, 24 Mar 2020 21:11:49 +0100 (CET) Authentication-Results: ste-pvt-msa2.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=aGnl1qRj; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Authentication-Results: ste-ftg-msa2.bahnhof.se (amavisd-new); dkim=pass (1024-bit key) header.d=shipmail.org Received: from ste-pvt-msa2.bahnhof.se ([127.0.0.1]) by localhost (ste-ftg-msa2.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dG-WdQBn6G7G; Tue, 24 Mar 2020 21:11:48 +0100 (CET) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by ste-pvt-msa2.bahnhof.se (Postfix) with ESMTPA id B18193F5ED; Tue, 24 Mar 2020 21:11:48 +0100 (CET) Received: from localhost.localdomain.localdomain (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) by mail1.shipmail.org (Postfix) with ESMTPSA id BDBD83602F7; Tue, 24 Mar 2020 21:11:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1585080708; bh=ICnMxQO8AWTMGFNwU/4R+fitgxvcpR1YFeDQ+n3kUi0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aGnl1qRjEuO4GYz2CK4zzRa68Jn4I9uxil6PkVuhUmgfJUfm2fbEXKlpCgUgg23cH oEp5tJu1/o4tGVywGKjHOOk7b/EfeNblyLC8CM+lf3IWwX0E5ZH/Dz/EYEKbYkBOqC MSNQpZOm26qF+PCfHckzkf/KSqBPYw5m2dW4DXc0= From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m=20=28VMware=29?= To: linux-mm@kvack.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 5/9] drm/ttm, drm/vmwgfx: Support huge TTM pagefaults Date: Tue, 24 Mar 2020 21:11:19 +0100 Message-Id: <20200324201123.3118-6-thomas_os@shipmail.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200324201123.3118-1-thomas_os@shipmail.org> References: <20200324201123.3118-1-thomas_os@shipmail.org> MIME-Version: 1.0 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: , Cc: Ralph Campbell , Michal Hocko , pv-drivers@vmware.com, Roland Scheidegger , "Thomas Hellstrom \(VMware\)" , Dan Williams , "Matthew Wilcox \(Oracle\)" , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , linux-graphics-maintainer@vmware.com, Andrew Morton , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Kirill A. Shutemov" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogIlRob21hcyBIZWxsc3Ryb20gKFZNd2FyZSkiIDx0aG9tYXNfb3NAc2hpcG1haWwub3Jn PgoKU3VwcG9ydCBodWdlIChQTUQtc2l6ZSBhbmQgUFVELXNpemUpIHBhZ2UtdGFibGUgZW50cmll cyBieSBwcm92aWRpbmcgYQpodWdlX2ZhdWx0KCkgY2FsbGJhY2suCldlIHN0aWxsIHN1cHBvcnQg cHJpdmF0ZSBtYXBwaW5ncyBhbmQgd3JpdGUtbm90aWZ5IGJ5IHNwbGl0dGluZyB0aGUgaHVnZQpw YWdlLXRhYmxlIGVudHJpZXMgb24gd3JpdGUtYWNjZXNzLgoKTm90ZSB0aGF0IGZvciBodWdlIHBh Z2UtZmF1bHRzIHRvIG9jY3VyLCBlaXRoZXIgdGhlIGtlcm5lbCBuZWVkcyB0byBiZQpjb21waWxl ZCB3aXRoIHRyYW5zLWh1Z2UtcGFnZXMgYWx3YXlzIGVuYWJsZWQsIG9yIHRoZSBrZXJuZWwgbmVl ZHMgdG8gYmUKY29tcGlsZWQgd2l0aCB0cmFucy1odWdlLXBhZ2VzIGVuYWJsZWQgdXNpbmcgbWFk dmlzZSwgYW5kIHRoZSB1c2VyLXNwYWNlCmFwcCBuZWVkcyB0byBjYWxsIG1hZHZpc2UoKSB0byBl bmFibGUgdHJhbnMtaHVnZSBwYWdlcyBvbiBhIHBlci1tYXBwaW5nCmJhc2lzLgoKRnVydGhlcm1v cmUgaHVnZSBwYWdlLWZhdWx0cyB3aWxsIG5vdCBzdWNjZWVkIHVubGVzcyBidWZmZXIgb2JqZWN0 cyBhbmQKdXNlci1zcGFjZSBhZGRyZXNzZXMgYXJlIGFsaWduZWQgb24gaHVnZSBwYWdlIHNpemUg Ym91bmRhcmllcy4KCkNjOiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3Jn PgpDYzogTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+CkNjOiAiTWF0dGhldyBXaWxjb3gg KE9yYWNsZSkiIDx3aWxseUBpbmZyYWRlYWQub3JnPgpDYzogIktpcmlsbCBBLiBTaHV0ZW1vdiIg PGtpcmlsbC5zaHV0ZW1vdkBsaW51eC5pbnRlbC5jb20+CkNjOiBSYWxwaCBDYW1wYmVsbCA8cmNh bXBiZWxsQG52aWRpYS5jb20+CkNjOiAiSsOpcsO0bWUgR2xpc3NlIiA8amdsaXNzZUByZWRoYXQu Y29tPgpDYzogIkNocmlzdGlhbiBLw7ZuaWciIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+CkNj OiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTog VGhvbWFzIEhlbGxzdHJvbSAoVk13YXJlKSA8dGhvbWFzX29zQHNoaXBtYWlsLm9yZz4KUmV2aWV3 ZWQtYnk6IFJvbGFuZCBTY2hlaWRlZ2dlciA8c3JvbGFuZEB2bXdhcmUuY29tPgpSZXZpZXdlZC1i eTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMgICAgICAgICAgICB8IDE2MSArKysrKysrKysrKysr KysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyB8ICAg MiArLQogaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaCAgICAgICAgICAgICAgIHwgICAzICst CiAzIGZpbGVzIGNoYW5nZWQsIDE2MSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMgYi9kcml2ZXJzL2dwdS9k cm0vdHRtL3R0bV9ib192bS5jCmluZGV4IDM4OTEyOGI4YzRkZC4uMGFmMTQ4MzU1MDRjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS90dG0vdHRtX2JvX3ZtLmMKQEAgLTE1Niw2ICsxNTYsODkgQEAgdm1fZmF1bHRfdCB0dG1f Ym9fdm1fcmVzZXJ2ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogfQogRVhQT1JUX1NZ TUJPTCh0dG1fYm9fdm1fcmVzZXJ2ZSk7CiAKKyNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVH RVBBR0UKKy8qKgorICogdHRtX2JvX3ZtX2luc2VydF9odWdlIC0gSW5zZXJ0IGEgcGZuIGZvciBQ VUQgb3IgUE1EIGZhdWx0cworICogQHZtZjogRmF1bHQgZGF0YQorICogQGJvOiBUaGUgYnVmZmVy IG9iamVjdAorICogQHBhZ2Vfb2Zmc2V0OiBQYWdlIG9mZnNldCBmcm9tIGJvIHN0YXJ0CisgKiBA ZmF1bHRfcGFnZV9zaXplOiBUaGUgc2l6ZSBvZiB0aGUgZmF1bHQgaW4gcGFnZXMuCisgKiBAcGdw cm90OiBUaGUgcGFnZSBwcm90ZWN0aW9ucy4KKyAqIERvZXMgYWRkaXRpb25hbCBjaGVja2luZyB3 aGV0aGVyIGl0J3MgcG9zc2libGUgdG8gaW5zZXJ0IGEgUFVEIG9yIFBNRAorICogcGZuIGFuZCBw ZXJmb3JtcyB0aGUgaW5zZXJ0aW9uLgorICoKKyAqIFJldHVybjogVk1fRkFVTFRfTk9QQUdFIG9u IHN1Y2Nlc3NmdWwgaW5zZXJ0aW9uLCBWTV9GQVVMVF9GQUxMQkFDSyBpZgorICogYSBodWdlIGZh dWx0IHdhcyBub3QgcG9zc2libGUsIG9yIG9uIGluc2VydGlvbiBlcnJvci4KKyAqLworc3RhdGlj IHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2luc2VydF9odWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLAor CQkJCQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAorCQkJCQlwZ29mZl90IHBhZ2Vfb2Zm c2V0LAorCQkJCQlwZ29mZl90IGZhdWx0X3BhZ2Vfc2l6ZSwKKwkJCQkJcGdwcm90X3QgcGdwcm90 KQoreworCXBnb2ZmX3QgaTsKKwl2bV9mYXVsdF90IHJldDsKKwl1bnNpZ25lZCBsb25nIHBmbjsK KwlwZm5fdCBwZm50OworCXN0cnVjdCB0dG1fdHQgKnR0bSA9IGJvLT50dG07CisJYm9vbCB3cml0 ZSA9IHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1dSSVRFOworCisJLyogRmF1bHQgc2hvdWxkIG5v dCBjcm9zcyBibyBib3VuZGFyeS4gKi8KKwlwYWdlX29mZnNldCAmPSB+KGZhdWx0X3BhZ2Vfc2l6 ZSAtIDEpOworCWlmIChwYWdlX29mZnNldCArIGZhdWx0X3BhZ2Vfc2l6ZSA+IGJvLT5udW1fcGFn ZXMpCisJCWdvdG8gb3V0X2ZhbGxiYWNrOworCisJaWYgKGJvLT5tZW0uYnVzLmlzX2lvbWVtKQor CQlwZm4gPSB0dG1fYm9faW9fbWVtX3BmbihibywgcGFnZV9vZmZzZXQpOworCWVsc2UKKwkJcGZu ID0gcGFnZV90b19wZm4odHRtLT5wYWdlc1twYWdlX29mZnNldF0pOworCisJLyogcGZuIG11c3Qg YmUgZmF1bHRfcGFnZV9zaXplIGFsaWduZWQuICovCisJaWYgKChwZm4gJiAoZmF1bHRfcGFnZV9z aXplIC0gMSkpICE9IDApCisJCWdvdG8gb3V0X2ZhbGxiYWNrOworCisJLyogQ2hlY2sgdGhhdCBt ZW1vcnkgaXMgY29udGlndW91cy4gKi8KKwlpZiAoIWJvLT5tZW0uYnVzLmlzX2lvbWVtKSB7CisJ CWZvciAoaSA9IDE7IGkgPCBmYXVsdF9wYWdlX3NpemU7ICsraSkgeworCQkJaWYgKHBhZ2VfdG9f cGZuKHR0bS0+cGFnZXNbcGFnZV9vZmZzZXQgKyBpXSkgIT0gcGZuICsgaSkKKwkJCQlnb3RvIG91 dF9mYWxsYmFjazsKKwkJfQorCX0gZWxzZSBpZiAoYm8tPmJkZXYtPmRyaXZlci0+aW9fbWVtX3Bm bikgeworCQlmb3IgKGkgPSAxOyBpIDwgZmF1bHRfcGFnZV9zaXplOyArK2kpIHsKKwkJCWlmICh0 dG1fYm9faW9fbWVtX3BmbihibywgcGFnZV9vZmZzZXQgKyBpKSAhPSBwZm4gKyBpKQorCQkJCWdv dG8gb3V0X2ZhbGxiYWNrOworCQl9CisJfQorCisJcGZudCA9IF9fcGZuX3RvX3Bmbl90KHBmbiwg UEZOX0RFVik7CisJaWYgKGZhdWx0X3BhZ2Vfc2l6ZSA9PSAoSFBBR0VfUE1EX1NJWkUgPj4gUEFH RV9TSElGVCkpCisJCXJldCA9IHZtZl9pbnNlcnRfcGZuX3BtZF9wcm90KHZtZiwgcGZudCwgcGdw cm90LCB3cml0ZSk7CisjaWZkZWYgQ09ORklHX0hBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFH RV9QVUQKKwllbHNlIGlmIChmYXVsdF9wYWdlX3NpemUgPT0gKEhQQUdFX1BVRF9TSVpFID4+IFBB R0VfU0hJRlQpKQorCQlyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wdWRfcHJvdCh2bWYsIHBmbnQsIHBn cHJvdCwgd3JpdGUpOworI2VuZGlmCisJZWxzZQorCQlXQVJOX09OX09OQ0UocmV0ID0gVk1fRkFV TFRfRkFMTEJBQ0spOworCisJaWYgKHJldCAhPSBWTV9GQVVMVF9OT1BBR0UpCisJCWdvdG8gb3V0 X2ZhbGxiYWNrOworCisJcmV0dXJuIFZNX0ZBVUxUX05PUEFHRTsKK291dF9mYWxsYmFjazoKKwlj b3VudF92bV9ldmVudChUSFBfRkFVTFRfRkFMTEJBQ0spOworCXJldHVybiBWTV9GQVVMVF9GQUxM QkFDSzsKK30KKyNlbHNlCitzdGF0aWMgdm1fZmF1bHRfdCB0dG1fYm9fdm1faW5zZXJ0X2h1Z2Uo c3RydWN0IHZtX2ZhdWx0ICp2bWYsCisJCQkJCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8s CisJCQkJCXBnb2ZmX3QgcGFnZV9vZmZzZXQsCisJCQkJCXBnb2ZmX3QgZmF1bHRfcGFnZV9zaXpl LAorCQkJCQlwZ3Byb3RfdCBwZ3Byb3QpCit7CisJcmV0dXJuIFZNX0ZBVUxUX0ZBTExCQUNLOwor fQorI2VuZGlmCisKIC8qKgogICogdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkIC0gVFRNIGZhdWx0 IGhlbHBlcgogICogQHZtZjogVGhlIHN0cnVjdCB2bV9mYXVsdCBnaXZlbiBhcyBhcmd1bWVudCB0 byB0aGUgZmF1bHQgY2FsbGJhY2sKQEAgLTE2Myw2ICsyNDYsNyBAQCBFWFBPUlRfU1lNQk9MKHR0 bV9ib192bV9yZXNlcnZlKTsKICAqIEBudW1fcHJlZmF1bHQ6IE1heGltdW0gbnVtYmVyIG9mIHBy ZWZhdWx0IHBhZ2VzLiBUaGUgY2FsbGVyIG1heSB3YW50IHRvCiAgKiBzcGVjaWZ5IHRoaXMgYmFz ZWQgb24gbWFkdmljZSBzZXR0aW5ncyBhbmQgdGhlIHNpemUgb2YgdGhlIEdQVSBvYmplY3QKICAq IGJhY2tlZCBieSB0aGUgbWVtb3J5LgorICogQGZhdWx0X3BhZ2Vfc2l6ZTogVGhlIHNpemUgb2Yg dGhlIGZhdWx0IGluIHBhZ2VzLgogICoKICAqIFRoaXMgZnVuY3Rpb24gaW5zZXJ0cyBvbmUgb3Ig bW9yZSBwYWdlIHRhYmxlIGVudHJpZXMgcG9pbnRpbmcgdG8gdGhlCiAgKiBtZW1vcnkgYmFja2lu ZyB0aGUgYnVmZmVyIG9iamVjdCwgYW5kIHRoZW4gcmV0dXJucyBhIHJldHVybiBjb2RlCkBAIC0x NzYsNyArMjYwLDggQEAgRVhQT1JUX1NZTUJPTCh0dG1fYm9fdm1fcmVzZXJ2ZSk7CiAgKi8KIHZt X2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLAog CQkJCSAgICBwZ3Byb3RfdCBwcm90LAotCQkJCSAgICBwZ29mZl90IG51bV9wcmVmYXVsdCkKKwkJ CQkgICAgcGdvZmZfdCBudW1fcHJlZmF1bHQsCisJCQkJICAgIHBnb2ZmX3QgZmF1bHRfcGFnZV9z aXplKQogewogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7CiAJc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOwpAQCAtMjY4LDYg KzM1MywxMyBAQCB2bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZChzdHJ1Y3Qgdm1f ZmF1bHQgKnZtZiwKIAkJcHJvdCA9IHBncHJvdF9kZWNyeXB0ZWQocHJvdCk7CiAJfQogCisJLyog V2UgZG9uJ3QgcHJlZmF1bHQgb24gaHVnZSBmYXVsdHMuIFlldC4gKi8KKwlpZiAoSVNfRU5BQkxF RChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICYmIGZhdWx0X3BhZ2Vfc2l6ZSAhPSAxKSB7 CisJCXJldCA9IHR0bV9ib192bV9pbnNlcnRfaHVnZSh2bWYsIGJvLCBwYWdlX29mZnNldCwKKwkJ CQkJICAgIGZhdWx0X3BhZ2Vfc2l6ZSwgcHJvdCk7CisJCWdvdG8gb3V0X2lvX3VubG9jazsKKwl9 CisKIAkvKgogCSAqIFNwZWN1bGF0aXZlbHkgcHJlZmF1bHQgYSBudW1iZXIgb2YgcGFnZXMuIE9u bHkgZXJyb3Igb24KIAkgKiBmaXJzdCBwYWdlLgpAQCAtMzM0LDcgKzQyNiw3IEBAIHZtX2ZhdWx0 X3QgdHRtX2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCQlyZXR1cm4gcmV0Owog CiAJcHJvdCA9IHZtYS0+dm1fcGFnZV9wcm90OwotCXJldCA9IHR0bV9ib192bV9mYXVsdF9yZXNl cnZlZCh2bWYsIHByb3QsIFRUTV9CT19WTV9OVU1fUFJFRkFVTFQpOworCXJldCA9IHR0bV9ib192 bV9mYXVsdF9yZXNlcnZlZCh2bWYsIHByb3QsIFRUTV9CT19WTV9OVU1fUFJFRkFVTFQsIDEpOwog CWlmIChyZXQgPT0gVk1fRkFVTFRfUkVUUlkgJiYgISh2bWYtPmZsYWdzICYgRkFVTFRfRkxBR19S RVRSWV9OT1dBSVQpKQogCQlyZXR1cm4gcmV0OwogCkBAIC0zNDQsNiArNDM2LDY2IEBAIHZtX2Zh dWx0X3QgdHRtX2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogfQogRVhQT1JUX1NZ TUJPTCh0dG1fYm9fdm1fZmF1bHQpOwogCisjaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQ QUdFCisvKioKKyAqIHR0bV9wZ3Byb3RfaXNfd3Jwcm90ZWN0aW5nIC0gSXMgYSBwYWdlIHByb3Rl Y3Rpb24gdmFsdWUgd3JpdGUtcHJvdGVjdGluZz8KKyAqIEBwcm90OiBUaGUgcGFnZSBwcm90ZWN0 aW9uIHZhbHVlCisgKgorICogUmV0dXJuOiB0cnVlIGlmIEBwcm90IGlzIHdyaXRlLXByb3RlY3Rp bmcuIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wgdHRtX3BncHJvdF9pc193cnBy b3RlY3RpbmcocGdwcm90X3QgcHJvdCkKK3sKKwkvKgorCSAqIFRoaXMgaXMgbWVhbnQgdG8gc2F5 ICJwZ3Byb3Rfd3Jwcm90ZWN0KHByb3QpID09IHByb3QiIGluIGEgZ2VuZXJpYworCSAqIHdheS4g VW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyBnZW5lcmljIHBncHJvdF93cnByb3RlY3QuCisJICov CisJcmV0dXJuIHB0ZV92YWwocHRlX3dycHJvdGVjdChfX3B0ZShwZ3Byb3RfdmFsKHByb3QpKSkp ID09CisJCXBncHJvdF92YWwocHJvdCk7Cit9CisKK3N0YXRpYyB2bV9mYXVsdF90IHR0bV9ib192 bV9odWdlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLAorCQkJCSAgICAgICBlbnVtIHBhZ2Vf ZW50cnlfc2l6ZSBwZV9zaXplKQoreworCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1m LT52bWE7CisJcGdwcm90X3QgcHJvdDsKKwlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0g dm1hLT52bV9wcml2YXRlX2RhdGE7CisJdm1fZmF1bHRfdCByZXQ7CisJcGdvZmZfdCBmYXVsdF9w YWdlX3NpemUgPSAwOworCWJvb2wgd3JpdGUgPSB2bWYtPmZsYWdzICYgRkFVTFRfRkxBR19XUklU RTsKKworCXN3aXRjaCAocGVfc2l6ZSkgeworCWNhc2UgUEVfU0laRV9QTUQ6CisJCWZhdWx0X3Bh Z2Vfc2l6ZSA9IEhQQUdFX1BNRF9TSVpFID4+IFBBR0VfU0hJRlQ7CisJCWJyZWFrOworI2lmZGVm IENPTkZJR19IQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVECisJY2FzZSBQRV9TSVpF X1BVRDoKKwkJZmF1bHRfcGFnZV9zaXplID0gSFBBR0VfUFVEX1NJWkUgPj4gUEFHRV9TSElGVDsK KwkJYnJlYWs7CisjZW5kaWYKKwlkZWZhdWx0OgorCQlXQVJOX09OX09OQ0UoMSk7CisJCXJldHVy biBWTV9GQVVMVF9GQUxMQkFDSzsKKwl9CisKKwkvKiBGYWxsYmFjayBvbiB3cml0ZSBkaXJ0eS10 cmFja2luZyBvciBDT1cgKi8KKwlpZiAod3JpdGUgJiYgdHRtX3BncHJvdF9pc193cnByb3RlY3Rp bmcodm1hLT52bV9wYWdlX3Byb3QpKQorCQlyZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7CisKKwly ZXQgPSB0dG1fYm9fdm1fcmVzZXJ2ZShibywgdm1mKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJcHJvdCA9IHZtX2dldF9wYWdlX3Byb3Qodm1hLT52bV9mbGFncyk7CisJcmV0ID0gdHRt X2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgMSwgZmF1bHRfcGFnZV9zaXplKTsKKwlp ZiAocmV0ID09IFZNX0ZBVUxUX1JFVFJZICYmICEodm1mLT5mbGFncyAmIEZBVUxUX0ZMQUdfUkVU UllfTk9XQUlUKSkKKwkJcmV0dXJuIHJldDsKKworCWRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5y ZXN2KTsKKworCXJldHVybiByZXQ7Cit9CisjZW5kaWYKKwogdm9pZCB0dG1fYm9fdm1fb3Blbihz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIHsKIAlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg KmJvID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CkBAIC00NDUsNyArNTk3LDEwIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgdHRtX2JvX3ZtX29wcyA9IHsKIAkuZmF1 bHQgPSB0dG1fYm9fdm1fZmF1bHQsCiAJLm9wZW4gPSB0dG1fYm9fdm1fb3BlbiwKIAkuY2xvc2Ug PSB0dG1fYm9fdm1fY2xvc2UsCi0JLmFjY2VzcyA9IHR0bV9ib192bV9hY2Nlc3MKKwkuYWNjZXNz ID0gdHRtX2JvX3ZtX2FjY2VzcywKKyNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UK KwkuaHVnZV9mYXVsdCA9IHR0bV9ib192bV9odWdlX2ZhdWx0LAorI2VuZGlmCiB9OwogCiBzdGF0 aWMgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0dG1fYm9fdm1fbG9va3VwKHN0cnVjdCB0dG1f Ym9fZGV2aWNlICpiZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfcGFnZV9kaXJ0eS5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0 eS5jCmluZGV4IDYwY2ZiZmFkZDNmMi4uOGNmN2E3N2M5YjJmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jCkBAIC00NzcsNyArNDc3LDcgQEAgdm1fZmF1bHRf dCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJZWxzZQogCQlwcm90ID0g dm1fZ2V0X3BhZ2VfcHJvdCh2bWEtPnZtX2ZsYWdzKTsKIAotCXJldCA9IHR0bV9ib192bV9mYXVs dF9yZXNlcnZlZCh2bWYsIHByb3QsIG51bV9wcmVmYXVsdCk7CisJcmV0ID0gdHRtX2JvX3ZtX2Zh dWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgbnVtX3ByZWZhdWx0LCAxKTsKIAlpZiAocmV0ID09IFZN X0ZBVUxUX1JFVFJZICYmICEodm1mLT5mbGFncyAmIEZBVUxUX0ZMQUdfUkVUUllfTk9XQUlUKSkK IAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGku aCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmgKaW5kZXggYjliYzFiMDAxNDJlLi4wYTlk MDQyZTA3NWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmgKKysrIGIv aW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaApAQCAtNzI3LDcgKzcyNyw4IEBAIHZtX2ZhdWx0 X3QgdHRtX2JvX3ZtX3Jlc2VydmUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAogdm1f ZmF1bHRfdCB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsCiAJ CQkJICAgIHBncHJvdF90IHByb3QsCi0JCQkJICAgIHBnb2ZmX3QgbnVtX3ByZWZhdWx0KTsKKwkJ CQkgICAgcGdvZmZfdCBudW1fcHJlZmF1bHQsCisJCQkJICAgIHBnb2ZmX3QgZmF1bHRfcGFnZV9z aXplKTsKIAogdm1fZmF1bHRfdCB0dG1fYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYp OwogCi0tIAoyLjIxLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=