From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 07/11] drm/nouveau: gk20a: Implement custom MMU class Date: Mon, 16 Sep 2019 17:04:08 +0200 Message-ID: <20190916150412.10025-8-thierry.reding@gmail.com> References: <20190916150412.10025-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190916150412.10025-1-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Ben Skeggs , Thierry Reding Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClRoZSBHUFUgaW50ZWdy YXRlZCBpbiBOVklESUEgVGVncmEgU29DcyBpcyBjb25uZWN0ZWQgdG8gc3lzdGVtIG1lbW9yeQp2 aWEgdHdvIHBhdGhzOiBvbmUgZGlyZWN0IHBhdGggdG8gdGhlIG1lbW9yeSBjb250cm9sbGVyIGFu ZCBhbm90aGVyIHBhdGgKdGhhdCBnb2VzIHRocm91Z2ggYSBzeXN0ZW0gTU1VIGZpcnN0LiBJdCdz IG5vdCB0eXBpY2FsbHkgbmVjZXNzYXJ5IHRvIGdvCnRocm91Z2ggdGhlIHN5c3RlbSBNTVUgYmVj YXVzZSB0aGUgR1BVJ3MgTU1VIGNhbiBhbHJlYWR5IG1hcCBidWZmZXJzIHNvCnRoYXQgdGhleSBh cHBlYXIgY29udGlndW91cyB0byB0aGUgR1BVLgoKSG93ZXZlciwgaW4gb3JkZXIgdG8gc3VwcG9y dCBiaWcgcGFnZXMsIHRoZSBzeXN0ZW0gTU1VIGhhcyB0byBiZSB1c2VkIHRvCmNvbWJpbmUgbXVs dGlwbGUgc21hbGwgcGFnZXMgaW50byBvbmUgdmlydHVhbGx5IGNvbnRpZ3VvdXMgY2h1bmsgc28g dGhhdAp0aGUgR1BVIGNhbiB0aGVuIHRyZWF0IHRoYXQgYXMgYSBzaW5nbGUgYmlnIHBhZ2UuCgpJ biBvcmRlciB0byBwcmVwYXJlIGZvciBiaWcgcGFnZSBzdXBwb3J0LCBpbXBsZW1lbnQgYSBjdXN0 b20gTU1VIGNsYXNzCnRoYXQgdGFrZXMgY2FyZSBvZiBzZXR0aW5nIHRoZSBJT01NVSBiaXQgd2hl biB3cml0aW5nIHBhZ2UgdGFibGVzIGFuZAp3aGVuIGFwcHJvcHJpYXRlLgoKVGhpcyBpcyBhbHNv IG5lY2Vzc2FyeSB0byBtYWtlIHN1cmUgdGhhdCBOb3V2ZWF1IHdvcmtzIGNvcnJlY3RseSBvbgpU ZWdyYSBkZXZpY2VzIHdoZXJlIHRoZSBHUFUgaXMgY29ubmVjdGVkIHRvIGEgc3lzdGVtIE1NVSBh bmQgdGhhdCBJT01NVQppcyB1c2VkIHRvIGJhY2sgdGhlIERNQSBBUEkuIEN1cnJlbnRseSBOb3V2 ZWF1IGFzc3VtZXMgdGhhdCB0aGUgRE1BIEFQSQppcyBuZXZlciBiYWNrZWQgYnkgYW4gSU9NTVUs IHNvIGFjY2VzcyB0byBETUEtbWFwcGVkIGJ1ZmZlcnMgZmF1bHQgd2hlbgpzdWRkZW5seSB0aGlz IGFzc3VtcHRpb24gaXMgbm8gbG9uZ2VyIHRydWUuCgpPbmUgc2l0dWF0aW9uIHdoZXJlIHRoaXMg Y2FuIGhhcHBlbiBpcyBvbiAzMi1iaXQgVGVncmEgU29DcyB3aGVyZSB0aGUKQVJNIGFyY2hpdGVj dHVyZSBjb2RlIGF1dG9tYXRpY2FsbHkgYXR0YWNoZXMgdGhlIEdQVSB3aXRoIGEgRE1BL0lPTU1V CmRvbWFpbi4gVGhpcyBpcyBjdXJyZW50bHkgd29ya2VkIGFyb3VuZCBieSBkZXRhY2hpbmcgdGhl IEdQVSBmcm9tIHRoZQpJT01NVSBkb21haW4gYXQgcHJvYmUgdGltZS4gSG93ZXZlciwgd2l0aCBU ZWdyYTE4NiBhbmQgbGF0ZXIgdGhpcyBjYW4Kbm93IGFsc28gaGFwcGVuLCBidXQgdW5mb3J0dW5h dGVseSBubyBtZWNoYW5pc20gZXhpc3RzIHRvIGRldGFjaCBmcm9tCnRoZSBkb21haW4gaW4gdGhl IDY0LWJpdCBBUk0gYXJjaGl0ZWN0dXJlIGNvZGUuCgpVc2luZyB0aGlzIFRlZ3JhLXNwZWNpZmlj IE1NVSBjbGFzcyBlbnN1cmVzIHRoYXQgRE1BLW1hcHBlZCBidWZmZXJzIGFyZQpwcm9wZXJseSBt YXBwZWQgKHdpdGggdGhlIElPTU1VIGJpdCBzZXQpIGlmIHRoZSBETUEgQVBJIGlzIGJhY2tlZCBi eSBhbgpJT01NVSBkb21haW4uCgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGlu Z0BudmlkaWEuY29tPgotLS0KIC4uLi9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvbW11L2dr MjBhLmMgICB8IDUwICsrKysrKysrKysrKysrKysrKy0KIC4uLi9ncHUvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvbW11L2drMjBhLmggICB8IDQ0ICsrKysrKysrKysrKysrKysKIC4uLi9ncHUvZHJt L25vdXZlYXUvbnZrbS9zdWJkZXYvbW11L2dtMjBiLmMgICB8ICA2ICsrLQogLi4uL2dwdS9kcm0v bm91dmVhdS9udmttL3N1YmRldi9tbXUvZ3AxMGIuYyAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW0uaCB8ICAxICsKIC4uLi9kcm0vbm91dmVhdS9u dmttL3N1YmRldi9tbXUvdm1tZ2syMGEuYyAgICB8IDIyICsrKysrKystCiAuLi4vZHJtL25vdXZl YXUvbnZrbS9zdWJkZXYvbW11L3ZtbWdtMjBiLmMgICAgfCAgNCArLQogLi4uL2RybS9ub3V2ZWF1 L252a20vc3ViZGV2L21tdS92bW1ncDEwYi5jICAgIHwgMjAgKysrKysrKy0KIDggZmlsZXMgY2hh bmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvbW11L2drMjBhLmgKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvZ2syMGEuYyBi L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS9nazIwYS5jCmluZGV4IGFj NzQ5NjVhNjBkNC4uZDlhNWUwNWI3ZGM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9udmttL3N1YmRldi9tbXUvZ2syMGEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9udmttL3N1YmRldi9tbXUvZ2syMGEuYwpAQCAtMTksMTEgKzE5LDU5IEBACiAgKiBBUklTSU5H IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IKICAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICAqLworCisjaW5jbHVk ZSAiZ2syMGEuaCIKICNpbmNsdWRlICJtZW0uaCIKICNpbmNsdWRlICJ2bW0uaCIKIAorI2luY2x1 ZGUgPG52a20vY29yZS90ZWdyYS5oPgogI2luY2x1ZGUgPG52aWYvY2xhc3MuaD4KIAorc3RhdGlj IHZvaWQKK2drMjBhX21tdV9jdG9yKGNvbnN0IHN0cnVjdCBudmttX21tdV9mdW5jICpmdW5jLCBz dHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSwKKwkgICAgICAgaW50IGluZGV4LCBzdHJ1Y3QgZ2sy MGFfbW11ICptbXUpCit7CisJc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluID0gaW9tbXVfZ2V0 X2RvbWFpbl9mb3JfZGV2KGRldmljZS0+ZGV2KTsKKwlzdHJ1Y3QgbnZrbV9kZXZpY2VfdGVncmEg KnRlZ3JhID0gZGV2aWNlLT5mdW5jLT50ZWdyYShkZXZpY2UpOworCisJbnZrbV9tbXVfY3Rvcihm dW5jLCBkZXZpY2UsIGluZGV4LCAmbW11LT5iYXNlKTsKKworCS8qCisJICogSWYgdGhlIERNQSBB UEkgaXMgYmFja2VkIGJ5IGFuIElPTU1VLCBtYWtlIHN1cmUgdGhlIElPTU1VIGJpdCBpcworCSAq IHNldCBmb3IgYWxsIGJ1ZmZlciBhY2Nlc3Nlcy4gSWYgdGhlIElPTU1VIGlzIGV4cGxpY2l0bHkg dXNlZCwgaXQKKwkgKiBpcyBvbmx5IHVzZWQgZm9yIGluc3RhbmNlIGJsb2NrcyBhbmQgdGhlIE1N VSBkb2Vzbid0IGNhcmUsIHNpbmNlCisJICogYnVmZmVyIG9iamVjdHMgYXJlIG9ubHkgbWFwcGVk IHRocm91Z2ggdGhlIE1NVSwgbm90IHRocm91Z2ggdGhlCisJICogSU9NTVUuCisJICoKKwkgKiBC aWcgcGFnZSBzdXBwb3J0IGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIGV4cGxpY2l0IElPTU1V IHVzYWdlLAorCSAqIGJ1dCB0aGUgRE1BIEFQSSBhbHJlYWR5IHByb3ZpZGVzIHRoYXQgZm9yIGZy ZWUsIHNvIHdlIGRvbid0IHdvcnJ5CisJICogYWJvdXQgaXQgZm9yIG5vdy4KKwkgKi8KKwlpZiAo ZG9tYWluICYmICF0ZWdyYS0+aW9tbXUuZG9tYWluKSB7CisJCW1tdS0+aW9tbXVfbWFzayA9IEJJ VF9VTEwodGVncmEtPmZ1bmMtPmlvbW11X2JpdCk7CisJCW52a21fZGVidWcoJm1tdS0+YmFzZS5z dWJkZXYsICJJT01NVSBtYXNrOiAlbGx4XG4iLAorCQkJICAgbW11LT5pb21tdV9tYXNrKTsKKwl9 Cit9CisKK2ludAorZ2syMGFfbW11X25ld18oY29uc3Qgc3RydWN0IG52a21fbW11X2Z1bmMgKmZ1 bmMsIHN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlLAorCSAgICAgICBpbnQgaW5kZXgsIHN0cnVj dCBudmttX21tdSAqKnBtbXUpCit7CisJc3RydWN0IGdrMjBhX21tdSAqbW11OworCisJbW11ID0g a3phbGxvYyhzaXplb2YoKm1tdSksIEdGUF9LRVJORUwpOworCWlmICghbW11KQorCQlyZXR1cm4g LUVOT01FTTsKKworCWdrMjBhX21tdV9jdG9yKGZ1bmMsIGRldmljZSwgaW5kZXgsIG1tdSk7CisK KwlpZiAocG1tdSkKKwkJKnBtbXUgPSAmbW11LT5iYXNlOworCisJcmV0dXJuIDA7Cit9CisKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbnZrbV9tbXVfZnVuYwogZ2syMGFfbW11ID0gewogCS5kbWFfYml0 cyA9IDQwLApAQCAtMzcsNSArODUsNSBAQCBnazIwYV9tbXUgPSB7CiBpbnQKIGdrMjBhX21tdV9u ZXcoc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2UsIGludCBpbmRleCwgc3RydWN0IG52a21fbW11 ICoqcG1tdSkKIHsKLQlyZXR1cm4gbnZrbV9tbXVfbmV3XygmZ2syMGFfbW11LCBkZXZpY2UsIGlu ZGV4LCBwbW11KTsKKwlyZXR1cm4gZ2syMGFfbW11X25ld18oJmdrMjBhX21tdSwgZGV2aWNlLCBp bmRleCwgcG1tdSk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmtt L3N1YmRldi9tbXUvZ2syMGEuaCBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2 L21tdS9nazIwYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmI4 MWZjNjI1MDljCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvbW11L2drMjBhLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAo YykgMjAxOSBOVklESUEgQ29ycG9yYXRpb24uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwK KyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp bgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lO RyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRl ZiBfX05WS01fTU1VX0dLMjBBX0hfXworI2RlZmluZSBfX05WS01fTU1VX0dLMjBBX0hfXworCisj aW5jbHVkZSAicHJpdi5oIgorCitzdHJ1Y3QgZ2syMGFfbW11IHsKKwlzdHJ1Y3QgbnZrbV9tbXUg YmFzZTsKKworCS8qCisJICogSWYgYW4gSU9NTVUgaXMgdXNlZCwgaW5kaWNhdGVzIHdoaWNoIGFk ZHJlc3MgYml0IHdpbGwgdHJpZ2dlciBhbgorCSAqIElPTU1VIHRyYW5zbGF0aW9uIHdoZW4gc2V0 ICh3aGVuIHRoaXMgYml0IGlzIG5vdCBzZXQsIHRoZSBJT01NVSBpcworCSAqIGJ5cGFzc2VkKS4g QSB2YWx1ZSBvZiAwIG1lYW5zIGFuIElPTU1VIGlzIG5ldmVyIHVzZWQuCisJICovCisJdTY0IGlv bW11X21hc2s7Cit9OworCisjZGVmaW5lIGdrMjBhX21tdShtbXUpIGNvbnRhaW5lcl9vZihtbXUs IHN0cnVjdCBnazIwYV9tbXUsIGJhc2UpCisKK2ludCBnazIwYV9tbXVfbmV3Xyhjb25zdCBzdHJ1 Y3QgbnZrbV9tbXVfZnVuYyAqLCBzdHJ1Y3QgbnZrbV9kZXZpY2UgKiwKKwkJICAgaW50IGluZGV4 LCBzdHJ1Y3QgbnZrbV9tbXUgKiopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS9nbTIwYi5jIGIvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbnZrbS9zdWJkZXYvbW11L2dtMjBiLmMKaW5kZXggNzM1M2E5NGI0MDkxLi43ZmNjZDRk ZjUyYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21t dS9nbTIwYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS9n bTIwYi5jCkBAIC0xOSw2ICsxOSw4IEBACiAgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKICAqIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KICAqLworCisjaW5jbHVkZSAiZ2syMGEuaCIKICNpbmNsdWRl ICJtZW0uaCIKICNpbmNsdWRlICJ2bW0uaCIKIApAQCAtNTAsNiArNTIsNiBAQCBpbnQKIGdtMjBi X21tdV9uZXcoc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2UsIGludCBpbmRleCwgc3RydWN0IG52 a21fbW11ICoqcG1tdSkKIHsKIAlpZiAoZGV2aWNlLT5mYi0+cGFnZSkKLQkJcmV0dXJuIG52a21f bW11X25ld18oJmdtMjBiX21tdV9maXhlZCwgZGV2aWNlLCBpbmRleCwgcG1tdSk7Ci0JcmV0dXJu IG52a21fbW11X25ld18oJmdtMjBiX21tdSwgZGV2aWNlLCBpbmRleCwgcG1tdSk7CisJCXJldHVy biBnazIwYV9tbXVfbmV3XygmZ20yMGJfbW11X2ZpeGVkLCBkZXZpY2UsIGluZGV4LCBwbW11KTsK KwlyZXR1cm4gZ2syMGFfbW11X25ld18oJmdtMjBiX21tdSwgZGV2aWNlLCBpbmRleCwgcG1tdSk7 CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUv Z3AxMGIuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS9ncDEwYi5j CmluZGV4IDBhNTBiZTlhNzg1YS4uYWUzY2I0N2JlM2Q4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvZ3AxMGIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvZ3AxMGIuYwpAQCAtMTksNiArMTksOCBAQAogICog QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SCiAgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgKi8KKwor I2luY2x1ZGUgImdrMjBhLmgiCiAjaW5jbHVkZSAibWVtLmgiCiAjaW5jbHVkZSAidm1tLmgiCiAK QEAgLTQxLDUgKzQzLDUgQEAgZ3AxMGJfbW11X25ldyhzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmlj ZSwgaW50IGluZGV4LCBzdHJ1Y3QgbnZrbV9tbXUgKipwbW11KQogewogCWlmICghbnZrbV9ib29s b3B0KGRldmljZS0+Y2Znb3B0LCAiR1AxMDBNbXVMYXlvdXQiLCB0cnVlKSkKIAkJcmV0dXJuIGdt MjBiX21tdV9uZXcoZGV2aWNlLCBpbmRleCwgcG1tdSk7Ci0JcmV0dXJuIG52a21fbW11X25ld18o JmdwMTBiX21tdSwgZGV2aWNlLCBpbmRleCwgcG1tdSk7CisJcmV0dXJuIGdrMjBhX21tdV9uZXdf KCZncDEwYl9tbXUsIGRldmljZSwgaW5kZXgsIHBtbXUpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvbW11L3ZtbS5oIGIvZHJpdmVycy9ncHUvZHJt L25vdXZlYXUvbnZrbS9zdWJkZXYvbW11L3ZtbS5oCmluZGV4IDVlNTVlY2JkODAwNS4uZmIzYTll OGJiOWNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9t bXUvdm1tLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvbW11L3Zt bS5oCkBAIC0yMTMsNiArMjEzLDcgQEAgdm9pZCBnZjEwMF92bW1faW52YWxpZGF0ZShzdHJ1Y3Qg bnZrbV92bW0gKiwgdTMyIHR5cGUpOwogdm9pZCBnZjEwMF92bW1faW52YWxpZGF0ZV9wZGIoc3Ry dWN0IG52a21fdm1tICosIHU2NCBhZGRyKTsKIAogaW50IGdrMjBhX3ZtbV9hcGVyKGVudW0gbnZr bV9tZW1vcnlfdGFyZ2V0KTsKK2ludCBnazIwYV92bW1fdmFsaWQoc3RydWN0IG52a21fdm1tICos IHZvaWQgKiwgdTMyLCBzdHJ1Y3QgbnZrbV92bW1fbWFwICopOwogCiBpbnQgZ20yMDBfdm1tX25l d18oY29uc3Qgc3RydWN0IG52a21fdm1tX2Z1bmMgKiwgY29uc3Qgc3RydWN0IG52a21fdm1tX2Z1 bmMgKiwKIAkJICAgc3RydWN0IG52a21fbW11ICosIGJvb2wsIHU2NCwgdTY0LCB2b2lkICosIHUz MiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92 bW1nazIwYS5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvbW11L3ZtbWdr MjBhLmMKaW5kZXggNWE5NTgyZGNlOTcwLi4xNmQ3YmY3MjcyOTIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW1nazIwYS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW1nazIwYS5jCkBAIC0xOSw2ICsx OSw4IEBACiAgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKICAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS RS4KICAqLworCisjaW5jbHVkZSAiZ2syMGEuaCIKICNpbmNsdWRlICJ2bW0uaCIKIAogI2luY2x1 ZGUgPGNvcmUvbWVtb3J5Lmg+CkBAIC0zMywxMiArMzUsMjggQEAgZ2syMGFfdm1tX2FwZXIoZW51 bSBudmttX21lbW9yeV90YXJnZXQgdGFyZ2V0KQogCX0KIH0KIAoraW50CitnazIwYV92bW1fdmFs aWQoc3RydWN0IG52a21fdm1tICp2bW0sIHZvaWQgKmFyZ3YsIHUzMiBhcmdjLAorCQlzdHJ1Y3Qg bnZrbV92bW1fbWFwICptYXApCit7CisJc3RydWN0IGdrMjBhX21tdSAqbW11ID0gZ2syMGFfbW11 KHZtbS0+bW11KTsKKwlpbnQgcmV0OworCisJcmV0ID0gZ2YxMDBfdm1tX3ZhbGlkKHZtbSwgYXJn diwgYXJnYywgbWFwKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCW1hcC0+dHlw ZSB8PSBtbXUtPmlvbW11X21hc2sgPj4gODsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgY29u c3Qgc3RydWN0IG52a21fdm1tX2Z1bmMKIGdrMjBhX3ZtbV8xNyA9IHsKIAkuam9pbiA9IGdmMTAw X3ZtbV9qb2luLAogCS5wYXJ0ID0gZ2YxMDBfdm1tX3BhcnQsCiAJLmFwZXIgPSBnZjEwMF92bW1f YXBlciwKLQkudmFsaWQgPSBnZjEwMF92bW1fdmFsaWQsCisJLnZhbGlkID0gZ2syMGFfdm1tX3Zh bGlkLAogCS5mbHVzaCA9IGdmMTAwX3ZtbV9mbHVzaCwKIAkuaW52YWxpZGF0ZV9wZGIgPSBnZjEw MF92bW1faW52YWxpZGF0ZV9wZGIsCiAJLnBhZ2UgPSB7CkBAIC01Myw3ICs3MSw3IEBAIGdrMjBh X3ZtbV8xNiA9IHsKIAkuam9pbiA9IGdmMTAwX3ZtbV9qb2luLAogCS5wYXJ0ID0gZ2YxMDBfdm1t X3BhcnQsCiAJLmFwZXIgPSBnZjEwMF92bW1fYXBlciwKLQkudmFsaWQgPSBnZjEwMF92bW1fdmFs aWQsCisJLnZhbGlkID0gZ2syMGFfdm1tX3ZhbGlkLAogCS5mbHVzaCA9IGdmMTAwX3ZtbV9mbHVz aCwKIAkuaW52YWxpZGF0ZV9wZGIgPSBnZjEwMF92bW1faW52YWxpZGF0ZV9wZGIsCiAJLnBhZ2Ug PSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUv dm1tZ20yMGIuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW1n bTIwYi5jCmluZGV4IDk2Yjc1OTY5NWRkOC4uN2E2MDY2ZDg4NmNkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tZ20yMGIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tZ20yMGIuYwpAQCAtMjYsNyAr MjYsNyBAQCBnbTIwYl92bW1fMTcgPSB7CiAJLmpvaW4gPSBnbTIwMF92bW1fam9pbiwKIAkucGFy dCA9IGdmMTAwX3ZtbV9wYXJ0LAogCS5hcGVyID0gZ2syMGFfdm1tX2FwZXIsCi0JLnZhbGlkID0g Z2YxMDBfdm1tX3ZhbGlkLAorCS52YWxpZCA9IGdrMjBhX3ZtbV92YWxpZCwKIAkuZmx1c2ggPSBn ZjEwMF92bW1fZmx1c2gsCiAJLmludmFsaWRhdGVfcGRiID0gZ2YxMDBfdm1tX2ludmFsaWRhdGVf cGRiLAogCS5wYWdlID0gewpAQCAtNDIsNyArNDIsNyBAQCBnbTIwYl92bW1fMTYgPSB7CiAJLmpv aW4gPSBnbTIwMF92bW1fam9pbiwKIAkucGFydCA9IGdmMTAwX3ZtbV9wYXJ0LAogCS5hcGVyID0g Z2syMGFfdm1tX2FwZXIsCi0JLnZhbGlkID0gZ2YxMDBfdm1tX3ZhbGlkLAorCS52YWxpZCA9IGdr MjBhX3ZtbV92YWxpZCwKIAkuZmx1c2ggPSBnZjEwMF92bW1fZmx1c2gsCiAJLmludmFsaWRhdGVf cGRiID0gZ2YxMDBfdm1tX2ludmFsaWRhdGVfcGRiLAogCS5wYWdlID0gewpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvbW11L3ZtbWdwMTBiLmMgYi9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tZ3AxMGIuYwppbmRleCBlMDgx MjM5YWZlNTguLjE4MGM4ZjAwNmUzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbnZrbS9zdWJkZXYvbW11L3ZtbWdwMTBiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbnZrbS9zdWJkZXYvbW11L3ZtbWdwMTBiLmMKQEAgLTE5LDE0ICsxOSwzMiBAQAogICogQVJJ U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SCiAgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgKi8KKworI2lu Y2x1ZGUgImdrMjBhLmgiCiAjaW5jbHVkZSAidm1tLmgiCiAKK3N0YXRpYyBpbnQKK2dwMTBiX3Zt bV92YWxpZChzdHJ1Y3QgbnZrbV92bW0gKnZtbSwgdm9pZCAqYXJndiwgdTMyIGFyZ2MsCisJCXN0 cnVjdCBudmttX3ZtbV9tYXAgKm1hcCkKK3sKKwlzdHJ1Y3QgZ2syMGFfbW11ICptbXUgPSBnazIw YV9tbXUodm1tLT5tbXUpOworCWludCByZXQ7CisKKwlyZXQgPSBncDEwMF92bW1fdmFsaWQodm1t LCBhcmd2LCBhcmdjLCBtYXApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJbWFw LT50eXBlIHw9IG1tdS0+aW9tbXVfbWFzayA+PiA0OworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRp YyBjb25zdCBzdHJ1Y3QgbnZrbV92bW1fZnVuYwogZ3AxMGJfdm1tID0gewogCS5qb2luID0gZ3Ax MDBfdm1tX2pvaW4sCiAJLnBhcnQgPSBnZjEwMF92bW1fcGFydCwKIAkuYXBlciA9IGdrMjBhX3Zt bV9hcGVyLAotCS52YWxpZCA9IGdwMTAwX3ZtbV92YWxpZCwKKwkudmFsaWQgPSBncDEwYl92bW1f dmFsaWQsCiAJLmZsdXNoID0gZ3AxMDBfdm1tX2ZsdXNoLAogCS5tdGhkID0gZ3AxMDBfdm1tX210 aGQsCiAJLmludmFsaWRhdGVfcGRiID0gZ3AxMDBfdm1tX2ludmFsaWRhdGVfcGRiLAotLSAKMi4y My4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOb3V2 ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXU=