From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from today.toronto.redhat.com (today.toronto.redhat.com [172.16.14.234]) by devserv.devel.redhat.com (8.11.0/8.11.0) with ESMTP id f1CLsA804946 for ; Mon, 12 Feb 2001 16:54:10 -0500 Date: Mon, 12 Feb 2001 16:54:10 -0500 (EST) From: Ben LaHaise Subject: [PATCH] revised tlb shootdown patch vs 2.4.2-pre3 (fwd) Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/Mixed; BOUNDARY="279767566-1710039764-982014747=:3013" Content-ID: Sender: owner-linux-mm@kvack.org Return-Path: To: linux-mm@kvack.org List-ID: --279767566-1710039764-982014747=:3013 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: I'm silly =) ---------- Forwarded message ---------- Date: Mon, 12 Feb 2001 16:52:27 -0500 (EST) From: Ben LaHaise To: torvalds@transmeta.com Cc: davem@redhat.com, alan@redhat.com, linux-mm@redhat.com Subject: [PATCH] revised tlb shootdown patch vs 2.4.2-pre3 Hello all, Attached is the revised tlb shootdown patch that implements the tlb_* interface suggested in asm-generic/tlb.h. All architechures are updated to use the generic code, although they may opt to do something else. It also has the mm_users optimisation that will fall back to unbuffered page freeing if only one thread is in use, plus it compiles to the old code without CONFIG_SMP. Comments? I've santity tested all of the non-SMP, SMP-slow and SMP-fast paths with no problems. Also, there are two small other fragments: correct a compile time warning in the soundmodem code, and add a check for ~/bin/installkernel in arch/i386/boot/install.sh. I'ld appreciate it if those were included. Thanks! -ben --279767566-1710039764-982014747=:3013 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="v2.4.2-pre3-shootdown.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="v2.4.2-pre3-shootdown.diff" ZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2FyY2gvYWxwaGEvbW0vaW5pdC5jIHdv cmstdjIuNC4yLXByZTMvYXJjaC9hbHBoYS9tbS9pbml0LmMNCi0tLSB2Mi40 LjItcHJlMy9hcmNoL2FscGhhL21tL2luaXQuYwlXZWQgTm92IDI5IDAxOjQz OjM5IDIwMDANCisrKyB3b3JrLXYyLjQuMi1wcmUzL2FyY2gvYWxwaGEvbW0v aW5pdC5jCU1vbiBGZWIgMTIgMTY6MzU6MDkgMjAwMQ0KQEAgLTMyLDYgKzMy LDkgQEANCiAjaW5jbHVkZSA8YXNtL2RtYS5oPg0KICNpbmNsdWRlIDxhc20v bW11X2NvbnRleHQuaD4NCiAjaW5jbHVkZSA8YXNtL2NvbnNvbGUuaD4NCisj aW5jbHVkZSA8YXNtL3RsYi5oPg0KKw0KK21tdV9nYXRoZXJfdCBtbXVfZ2F0 aGVyc1tOUl9DUFVTXTsNCiANCiBzdGF0aWMgdW5zaWduZWQgbG9uZyB0b3Rh bHJhbV9wYWdlczsNCiANCmRpZmYgLXVyTiB2Mi40LjItcHJlMy9hcmNoL2Fy bS9tbS9pbml0LmMgd29yay12Mi40LjItcHJlMy9hcmNoL2FybS9tbS9pbml0 LmMNCi0tLSB2Mi40LjItcHJlMy9hcmNoL2FybS9tbS9pbml0LmMJTW9uIEZl YiAxMiAxMjoxODo1NCAyMDAxDQorKysgd29yay12Mi40LjItcHJlMy9hcmNo L2FybS9tbS9pbml0LmMJTW9uIEZlYiAxMiAxNjozNTozMyAyMDAxDQpAQCAt MzMsNiArMzMsOSBAQA0KIA0KICNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+ DQogI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPg0KKyNpbmNsdWRlIDxhc20v dGxiLmg+DQorDQorbW11X2dhdGhlcl90IG1tdV9nYXRoZXJzW05SX0NQVVNd Ow0KIA0KICNpZm5kZWYgQ09ORklHX0RJU0NPTlRJR01FTQ0KICNkZWZpbmUg TlJfTk9ERVMJMQ0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2FyY2gvY3Jpcy9t bS9pbml0LmMgd29yay12Mi40LjItcHJlMy9hcmNoL2NyaXMvbW0vaW5pdC5j DQotLS0gdjIuNC4yLXByZTMvYXJjaC9jcmlzL21tL2luaXQuYwlNb24gRmVi IDEyIDEyOjE4OjU0IDIwMDENCisrKyB3b3JrLXYyLjQuMi1wcmUzL2FyY2gv Y3Jpcy9tbS9pbml0LmMJTW9uIEZlYiAxMiAxNjozNTo1OSAyMDAxDQpAQCAt NTcsNiArNTcsOSBAQA0KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPg0KICNp bmNsdWRlIDxhc20vZG1hLmg+DQogI2luY2x1ZGUgPGFzbS9zdmludG8uaD4N CisjaW5jbHVkZSA8YXNtL3RsYi5oPg0KKw0KK21tdV9nYXRoZXJfdCBtbXVf Z2F0aGVyc1tOUl9DUFVTXTsNCiANCiBzdGF0aWMgdW5zaWduZWQgbG9uZyB0 b3RhbHJhbV9wYWdlczsNCiANCmRpZmYgLXVyTiB2Mi40LjItcHJlMy9hcmNo L2kzODYvYm9vdC9pbnN0YWxsLnNoIHdvcmstdjIuNC4yLXByZTMvYXJjaC9p Mzg2L2Jvb3QvaW5zdGFsbC5zaA0KLS0tIHYyLjQuMi1wcmUzL2FyY2gvaTM4 Ni9ib290L2luc3RhbGwuc2gJVHVlIEphbiAgMyAwNjo1NzoyNiAxOTk1DQor Kysgd29yay12Mi40LjItcHJlMy9hcmNoL2kzODYvYm9vdC9pbnN0YWxsLnNo CU1vbiBGZWIgMTIgMTY6MzI6NDggMjAwMQ0KQEAgLTIxLDYgKzIxLDcgQEAN CiANCiAjIFVzZXIgbWF5IGhhdmUgYSBjdXN0b20gaW5zdGFsbCBzY3JpcHQN CiANCitpZiBbIC14IH4vYmluL2luc3RhbGxrZXJuZWwgXTsgdGhlbiBleGVj IH4vYmluL2luc3RhbGxrZXJuZWwgIiRAIjsgZmkNCiBpZiBbIC14IC9zYmlu L2luc3RhbGxrZXJuZWwgXTsgdGhlbiBleGVjIC9zYmluL2luc3RhbGxrZXJu ZWwgIiRAIjsgZmkNCiANCiAjIERlZmF1bHQgaW5zdGFsbCAtIHNhbWUgYXMg bWFrZSB6bGlsbw0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2FyY2gvaTM4Ni9t bS9pbml0LmMgd29yay12Mi40LjItcHJlMy9hcmNoL2kzODYvbW0vaW5pdC5j DQotLS0gdjIuNC4yLXByZTMvYXJjaC9pMzg2L21tL2luaXQuYwlUdWUgSmFu IDMwIDE0OjM4OjQ5IDIwMDENCisrKyB3b3JrLXYyLjQuMi1wcmUzL2FyY2gv aTM4Ni9tbS9pbml0LmMJTW9uIEZlYiAxMiAxNjozMjo0OCAyMDAxDQpAQCAt MzUsNyArMzUsOSBAQA0KICNpbmNsdWRlIDxhc20vZml4bWFwLmg+DQogI2lu Y2x1ZGUgPGFzbS9lODIwLmg+DQogI2luY2x1ZGUgPGFzbS9hcGljLmg+DQor I2luY2x1ZGUgPGFzbS90bGIuaD4NCiANCittbXVfZ2F0aGVyX3QgbW11X2dh dGhlcnNbTlJfQ1BVU107DQogdW5zaWduZWQgbG9uZyBoaWdoc3RhcnRfcGZu LCBoaWdoZW5kX3BmbjsNCiBzdGF0aWMgdW5zaWduZWQgbG9uZyB0b3RhbHJh bV9wYWdlczsNCiBzdGF0aWMgdW5zaWduZWQgbG9uZyB0b3RhbGhpZ2hfcGFn ZXM7DQpkaWZmIC11ck4gdjIuNC4yLXByZTMvYXJjaC9pYTY0L21tL2luaXQu YyB3b3JrLXYyLjQuMi1wcmUzL2FyY2gvaWE2NC9tbS9pbml0LmMNCi0tLSB2 Mi40LjItcHJlMy9hcmNoL2lhNjQvbW0vaW5pdC5jCVRodSBKYW4gIDQgMTU6 NTA6MTcgMjAwMQ0KKysrIHdvcmstdjIuNC4yLXByZTMvYXJjaC9pYTY0L21t L2luaXQuYwlNb24gRmViIDEyIDE2OjM2OjMzIDIwMDENCkBAIC0yMyw2ICsy Myw5IEBADQogI2luY2x1ZGUgPGFzbS9wZ2FsbG9jLmg+DQogI2luY2x1ZGUg PGFzbS9zYWwuaD4NCiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPg0KKyNpbmNs dWRlIDxhc20vdGxiLmg+DQorDQorbW11X2dhdGhlcl90IG1tdV9nYXRoZXJz W05SX0NQVVNdOw0KIA0KIC8qIFJlZmVyZW5jZXMgdG8gc2VjdGlvbiBib3Vu ZGFyaWVzOiAqLw0KIGV4dGVybiBjaGFyIF9zdGV4dCwgX2V0ZXh0LCBfZWRh dGEsIF9faW5pdF9iZWdpbiwgX19pbml0X2VuZDsNCmRpZmYgLXVyTiB2Mi40 LjItcHJlMy9hcmNoL202OGsvbW0vaW5pdC5jIHdvcmstdjIuNC4yLXByZTMv YXJjaC9tNjhrL21tL2luaXQuYw0KLS0tIHYyLjQuMi1wcmUzL2FyY2gvbTY4 ay9tbS9pbml0LmMJTW9uIE9jdCAxNiAxNTo1ODo1MSAyMDAwDQorKysgd29y ay12Mi40LjItcHJlMy9hcmNoL202OGsvbW0vaW5pdC5jCU1vbiBGZWIgMTIg MTY6MzY6NTIgMjAwMQ0KQEAgLTMxLDYgKzMxLDkgQEANCiAjaWZkZWYgQ09O RklHX0FUQVJJDQogI2luY2x1ZGUgPGFzbS9hdGFyaV9zdHJhbS5oPg0KICNl bmRpZg0KKyNpbmNsdWRlIDxhc20vdGxiLmg+DQorDQorbW11X2dhdGhlcl90 IG1tdV9nYXRoZXJzW05SX0NQVVNdOw0KIA0KIHN0YXRpYyB1bnNpZ25lZCBs b25nIHRvdGFscmFtX3BhZ2VzOw0KIA0KZGlmZiAtdXJOIHYyLjQuMi1wcmUz L2FyY2gvbWlwcy9tbS9pbml0LmMgd29yay12Mi40LjItcHJlMy9hcmNoL21p cHMvbW0vaW5pdC5jDQotLS0gdjIuNC4yLXByZTMvYXJjaC9taXBzL21tL2lu aXQuYwlNb24gT2N0IDE2IDE1OjU4OjUxIDIwMDANCisrKyB3b3JrLXYyLjQu Mi1wcmUzL2FyY2gvbWlwcy9tbS9pbml0LmMJTW9uIEZlYiAxMiAxNjozNzoz MyAyMDAxDQpAQCAtMzgsNiArMzgsOSBAQA0KICNpbmNsdWRlIDxhc20vc2dp YWxpYi5oPg0KICNlbmRpZg0KICNpbmNsdWRlIDxhc20vbW11X2NvbnRleHQu aD4NCisjaW5jbHVkZSA8YXNtL3RsYi5oPg0KKw0KK21tdV9nYXRoZXJfdCBt bXVfZ2F0aGVyc1tOUl9DUFVTXTsNCiANCiBzdGF0aWMgdW5zaWduZWQgbG9u ZyB0b3RhbHJhbV9wYWdlczsNCiANCmRpZmYgLXVyTiB2Mi40LjItcHJlMy9h cmNoL21pcHM2NC9tbS9pbml0LmMgd29yay12Mi40LjItcHJlMy9hcmNoL21p cHM2NC9tbS9pbml0LmMNCi0tLSB2Mi40LjItcHJlMy9hcmNoL21pcHM2NC9t bS9pbml0LmMJTW9uIE9jdCAxNiAxNTo1ODo1MSAyMDAwDQorKysgd29yay12 Mi40LjItcHJlMy9hcmNoL21pcHM2NC9tbS9pbml0LmMJTW9uIEZlYiAxMiAx NjozNzoxOCAyMDAxDQpAQCAtMzcsNiArMzcsOSBAQA0KICNpbmNsdWRlIDxh c20vc2dpYWxpYi5oPg0KICNlbmRpZg0KICNpbmNsdWRlIDxhc20vbW11X2Nv bnRleHQuaD4NCisjaW5jbHVkZSA8YXNtL3RsYi5oPg0KKw0KK21tdV9nYXRo ZXJfdCBtbXVfZ2F0aGVyc1tOUl9DUFVTXTsNCiANCiB1bnNpZ25lZCBsb25n IHRvdGFscmFtX3BhZ2VzOw0KIA0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2Fy Y2gvcGFyaXNjL21tL2luaXQuYyB3b3JrLXYyLjQuMi1wcmUzL2FyY2gvcGFy aXNjL21tL2luaXQuYw0KLS0tIHYyLjQuMi1wcmUzL2FyY2gvcGFyaXNjL21t L2luaXQuYwlUdWUgRGVjICA1IDE1OjI5OjM5IDIwMDANCisrKyB3b3JrLXYy LjQuMi1wcmUzL2FyY2gvcGFyaXNjL21tL2luaXQuYwlNb24gRmViIDEyIDE2 OjM3OjU2IDIwMDENCkBAIC0xOSw2ICsxOSw5IEBADQogI2luY2x1ZGUgPGxp bnV4L3VuaXN0ZC5oPg0KIA0KICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPg0K KyNpbmNsdWRlIDxhc20vdGxiLmg+DQorDQorbW11X2dhdGhlcl90IG1tdV9n YXRoZXJzW05SX0NQVVNdOw0KIA0KIHN0YXRpYyB1bnNpZ25lZCBsb25nIHRv dGFscmFtX3BhZ2VzOw0KIGV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9wZm4s IG1lbV9tYXg7DQpkaWZmIC11ck4gdjIuNC4yLXByZTMvYXJjaC9wcGMvbW0v aW5pdC5jIHdvcmstdjIuNC4yLXByZTMvYXJjaC9wcGMvbW0vaW5pdC5jDQot LS0gdjIuNC4yLXByZTMvYXJjaC9wcGMvbW0vaW5pdC5jCVR1ZSBKYW4gMzAg MTQ6Mzg6NTAgMjAwMQ0KKysrIHdvcmstdjIuNC4yLXByZTMvYXJjaC9wcGMv bW0vaW5pdC5jCU1vbiBGZWIgMTIgMTY6Mzg6MjYgMjAwMQ0KQEAgLTY3LDYg KzY3LDkgQEANCiAjaWYgZGVmaW5lZChDT05GSUdfNHh4KQ0KICNpbmNsdWRl ICI0eHhfdGxiLmgiDQogI2VuZGlmDQorI2luY2x1ZGUgPGFzbS90bGIuaD4N CisNCittbXVfZ2F0aGVyX3QgbW11X2dhdGhlcnNbTlJfQ1BVU107DQogDQog I2RlZmluZSBNQVhfTE9XX01FTQkoNTEyIDw8IDIwKQ0KIA0KZGlmZiAtdXJO IHYyLjQuMi1wcmUzL2FyY2gvczM5MC9tbS9pbml0LmMgd29yay12Mi40LjIt cHJlMy9hcmNoL3MzOTAvbW0vaW5pdC5jDQotLS0gdjIuNC4yLXByZTMvYXJj aC9zMzkwL21tL2luaXQuYwlXZWQgTm92IDI5IDAxOjQzOjM5IDIwMDANCisr KyB3b3JrLXYyLjQuMi1wcmUzL2FyY2gvczM5MC9tbS9pbml0LmMJTW9uIEZl YiAxMiAxNjozODo0MyAyMDAxDQpAQCAtMzUsNiArMzUsOSBAQA0KICNpbmNs dWRlIDxhc20vcGdhbGxvYy5oPg0KICNpbmNsdWRlIDxhc20vZG1hLmg+DQog I2luY2x1ZGUgPGFzbS9sb3djb3JlLmg+DQorI2luY2x1ZGUgPGFzbS90bGIu aD4NCisNCittbXVfZ2F0aGVyX3QgbW11X2dhdGhlcnNbTlJfQ1BVU107DQog DQogc3RhdGljIHVuc2lnbmVkIGxvbmcgdG90YWxyYW1fcGFnZXM7DQogDQpk aWZmIC11ck4gdjIuNC4yLXByZTMvYXJjaC9zaC9tbS9pbml0LmMgd29yay12 Mi40LjItcHJlMy9hcmNoL3NoL21tL2luaXQuYw0KLS0tIHYyLjQuMi1wcmUz L2FyY2gvc2gvbW0vaW5pdC5jCVdlZCBOb3YgMjkgMDE6NDM6MzkgMjAwMA0K KysrIHdvcmstdjIuNC4yLXByZTMvYXJjaC9zaC9tbS9pbml0LmMJTW9uIEZl YiAxMiAxNjozODo1OSAyMDAxDQpAQCAtMzQsNiArMzQsOSBAQA0KICNpbmNs dWRlIDxhc20vcGdhbGxvYy5oPg0KICNpbmNsdWRlIDxhc20vbW11X2NvbnRl eHQuaD4NCiAjaW5jbHVkZSA8YXNtL2lvLmg+DQorI2luY2x1ZGUgPGFzbS90 bGIuaD4NCisNCittbXVfZ2F0aGVyX3QgbW11X2dhdGhlcnNbTlJfQ1BVU107 DQogDQogLyoNCiAgKiBDYWNoZSBvZiBNTVUgY29udGV4dCBsYXN0IHVzZWQu DQpkaWZmIC11ck4gdjIuNC4yLXByZTMvYXJjaC9zcGFyYy9tbS9pbml0LmMg d29yay12Mi40LjItcHJlMy9hcmNoL3NwYXJjL21tL2luaXQuYw0KLS0tIHYy LjQuMi1wcmUzL2FyY2gvc3BhcmMvbW0vaW5pdC5jCU1vbiBEZWMgMTEgMTU6 Mzc6MDMgMjAwMA0KKysrIHdvcmstdjIuNC4yLXByZTMvYXJjaC9zcGFyYy9t bS9pbml0LmMJTW9uIEZlYiAxMiAxNjozOTozMSAyMDAxDQpAQCAtMzIsNiAr MzIsOSBAQA0KICNpbmNsdWRlIDxhc20vcGFnZS5oPg0KICNpbmNsdWRlIDxh c20vcGd0YWJsZS5oPg0KICNpbmNsdWRlIDxhc20vdmFkZHJzLmg+DQorI2lu Y2x1ZGUgPGFzbS90bGIuaD4NCisNCittbXVfZ2F0aGVyX3QgbW11X2dhdGhl cnNbTlJfQ1BVU107DQogDQogdW5zaWduZWQgbG9uZyAqc3BhcmNfdmFsaWRf YWRkcl9iaXRtYXA7DQogDQpkaWZmIC11ck4gdjIuNC4yLXByZTMvYXJjaC9z cGFyYzY0L21tL2luaXQuYyB3b3JrLXYyLjQuMi1wcmUzL2FyY2gvc3BhcmM2 NC9tbS9pbml0LmMNCi0tLSB2Mi40LjItcHJlMy9hcmNoL3NwYXJjNjQvbW0v aW5pdC5jCU1vbiBGZWIgMTIgMTI6MTg6NTUgMjAwMQ0KKysrIHdvcmstdjIu NC4yLXByZTMvYXJjaC9zcGFyYzY0L21tL2luaXQuYwlNb24gRmViIDEyIDE2 OjM5OjE2IDIwMDENCkBAIC0zMCw2ICszMCw5IEBADQogI2luY2x1ZGUgPGFz bS92YWRkcnMuaD4NCiAjaW5jbHVkZSA8YXNtL2RtYS5oPg0KICNpbmNsdWRl IDxhc20vc3RhcmZpcmUuaD4NCisjaW5jbHVkZSA8YXNtL3RsYi5oPg0KKw0K K21tdV9nYXRoZXJfdCBtbXVfZ2F0aGVyc1tOUl9DUFVTXTsNCiANCiBleHRl cm4gdm9pZCBkZXZpY2Vfc2Nhbih2b2lkKTsNCiANCmRpZmYgLXVyTiB2Mi40 LjItcHJlMy9kcml2ZXJzL25ldC9oYW1yYWRpby9zb3VuZG1vZGVtL2dlbnRi bC5jIHdvcmstdjIuNC4yLXByZTMvZHJpdmVycy9uZXQvaGFtcmFkaW8vc291 bmRtb2RlbS9nZW50YmwuYw0KLS0tIHYyLjQuMi1wcmUzL2RyaXZlcnMvbmV0 L2hhbXJhZGlvL3NvdW5kbW9kZW0vZ2VudGJsLmMJVGh1IEp1biAyNSAxNToy NToxNiAxOTk4DQorKysgd29yay12Mi40LjItcHJlMy9kcml2ZXJzL25ldC9o YW1yYWRpby9zb3VuZG1vZGVtL2dlbnRibC5jCU1vbiBGZWIgMTIgMTY6MzI6 NDggMjAwMQ0KQEAgLTI2LDYgKzI2LDcgQEANCiAgKi8NCiANCiAjaW5jbHVk ZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQogI2luY2x1ZGUg PG1hdGguaD4NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQogDQpkaWZmIC11ck4g djIuNC4yLXByZTMvaW5jbHVkZS9hc20tYWxwaGEvdGxiLmggd29yay12Mi40 LjItcHJlMy9pbmNsdWRlL2FzbS1hbHBoYS90bGIuaA0KLS0tIHYyLjQuMi1w cmUzL2luY2x1ZGUvYXNtLWFscGhhL3RsYi5oCVdlZCBEZWMgMzEgMTk6MDA6 MDAgMTk2OQ0KKysrIHdvcmstdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tYWxw aGEvdGxiLmgJTW9uIEZlYiAxMiAxNjozMzo0NCAyMDAxDQpAQCAtMCwwICsx IEBADQorI2luY2x1ZGUgPGFzbS1nZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJO IHYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLWFybS90bGIuaCB3b3JrLXYyLjQu Mi1wcmUzL2luY2x1ZGUvYXNtLWFybS90bGIuaA0KLS0tIHYyLjQuMi1wcmUz L2luY2x1ZGUvYXNtLWFybS90bGIuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5 NjkNCisrKyB3b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLWFybS90bGIu aAlNb24gRmViIDEyIDE2OjMzOjQ0IDIwMDENCkBAIC0wLDAgKzEgQEANCisj aW5jbHVkZSA8YXNtLWdlbmVyaWMvdGxiLmg+DQpkaWZmIC11ck4gdjIuNC4y LXByZTMvaW5jbHVkZS9hc20tY3Jpcy90bGIuaCB3b3JrLXYyLjQuMi1wcmUz L2luY2x1ZGUvYXNtLWNyaXMvdGxiLmgNCi0tLSB2Mi40LjItcHJlMy9pbmNs dWRlL2FzbS1jcmlzL3RsYi5oCVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQ0K KysrIHdvcmstdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tY3Jpcy90bGIuaAlN b24gRmViIDEyIDE2OjMzOjQ0IDIwMDENCkBAIC0wLDAgKzEgQEANCisjaW5j bHVkZSA8YXNtLWdlbmVyaWMvdGxiLmg+DQpkaWZmIC11ck4gdjIuNC4yLXBy ZTMvaW5jbHVkZS9hc20tZ2VuZXJpYy90bGIuaCB3b3JrLXYyLjQuMi1wcmUz L2luY2x1ZGUvYXNtLWdlbmVyaWMvdGxiLmgNCi0tLSB2Mi40LjItcHJlMy9p bmNsdWRlL2FzbS1nZW5lcmljL3RsYi5oCVdlZCBEZWMgMzEgMTk6MDA6MDAg MTk2OQ0KKysrIHdvcmstdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tZ2VuZXJp Yy90bGIuaAlNb24gRmViIDEyIDE2OjMyOjQ4IDIwMDENCkBAIC0wLDAgKzEs MTExIEBADQorLyogYXNtLWdlbmVyaWMvdGxiLmgNCisgKg0KKyAqCUdlbmVy aWMgVExCIHNob290ZG93biBjb2RlDQorICoNCisgKiBDb3B5cmlnaHQgMjAw MSBSZWQgSGF0LCBJbmMuDQorICogQmFzZWQgb24gY29kZSBmcm9tIG1tL21l bW9yeS5jIENvcHlyaWdodCBMaW51cyBUb3J2YWxkcyBhbmQgb3RoZXJzLg0K KyAqDQorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl DQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uDQorICogMiBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKi8N CisjaWZuZGVmIF9BU01fR0VORVJJQ19fVExCX0gNCisjZGVmaW5lIF9BU01f R0VORVJJQ19fVExCX0gNCisNCisjaWZkZWYgQ09ORklHX1NNUA0KKy8qIGFp bSBmb3Igc29tZXRoaW5nIHRoYXQgZml0cyBpbiB0aGUgTDEgY2FjaGUgKi8N CisjZGVmaW5lIEZSRUVfUFRFX05SCTUwOA0KKw0KKy8qIG1tdV9nYXRoZXJf dCBpcyBhbiBvcGFxdWUgdHlwZSB1c2VkIGJ5IHRoZSBtbSBjb2RlIGZvciBw YXNzaW5nIGFyb3VuZCBhbnkNCisgKiBkYXRhIG5lZWRlZCBieSBhcmNoIHNw ZWNpZmljIGNvZGUgZm9yIHRsYl9yZW1vdmVfcGFnZS4gIFRoaXMgc3RydWN0 dXJlIGNhbg0KKyAqIGJlIHBlci1DUFUgb3IgcGVyLU1NIGFzIHRoZSBwYWdl IHRhYmxlIGxvY2sgaXMgaGVsZCBmb3IgdGhlIGR1cmF0aW9uIG9mIFRMQg0K KyAqIHNob290ZG93bi4NCisgKi8NCit0eXBlZGVmIHN0cnVjdCBmcmVlX3B0 ZV9jdHggew0KKwlzdHJ1Y3QgbW1fc3RydWN0CSptbTsNCisJdW5zaWduZWQg bG9uZwkJbnI7CS8qIHNldCB0byB+MFVMIG1lYW5zIGZhc3QgbW9kZSAqLw0K Kwl1bnNpZ25lZCBsb25nCXN0YXJ0X2FkZHIsIGVuZF9hZGRyOw0KKwlwdGVf dAlwdGVzW0ZSRUVfUFRFX05SXTsNCit9IG1tdV9nYXRoZXJfdDsNCisNCisv KiBVc2VycyBvZiB0aGUgZ2VuZXJpYyBUTEIgc2hvb3Rkb3duIGNvZGUgbXVz dCBkZWNsYXJlIHRoaXMgc3RvcmFnZSBzcGFjZS4gKi8NCitleHRlcm4gbW11 X2dhdGhlcl90CW1tdV9nYXRoZXJzW05SX0NQVVNdOw0KKw0KKy8qIHRsYl9n YXRoZXJfbW11DQorICoJUmV0dXJuIGEgcG9pbnRlciB0byBhbiBpbml0aWFs aXplZCBtbXVfZ2F0aGVyX3QuDQorICovDQorc3RhdGljIGlubGluZSBtbXVf Z2F0aGVyX3QgKnRsYl9nYXRoZXJfbW11KHN0cnVjdCBtbV9zdHJ1Y3QgKm1t KQ0KK3sNCisJbW11X2dhdGhlcl90ICp0bGIgPSAmbW11X2dhdGhlcnNbc21w X3Byb2Nlc3Nvcl9pZCgpXTsNCisNCisJdGxiLT5tbSA9IG1tOw0KKwkvKiBV c2UgZmFzdCBtb2RlIGlmIHRoZXJlIGlzIG9ubHkgb25lIHVzZXIgb2YgdGhp cyBtbSAodGhpcyBwcm9jZXNzKSAqLw0KKwl0bGItPm5yID0gKGF0b21pY19y ZWFkKCYobW0pLT5tbV91c2VycykgPT0gMSkgPyB+MFVMIDogMFVMOw0KKwly ZXR1cm4gdGxiOw0KK30NCisNCisvKiB2b2lkIHRsYl9yZW1vdmVfcGFnZSht bXVfZ2F0aGVyX3QgKnRsYiwgcHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcg YWRkcikNCisgKglNdXN0IHBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgdG8gX19m cmVlX3B0ZShwdGVfZ2V0X2FuZF9jbGVhcihwdGVwKSksIHdoaWxlDQorICoJ aGFuZGxpbmcgdGhlIGFkZGl0aW9uYWwgcmFjZXMgaW4gU01QIGNhdXNlZCBi eSBvdGhlciBDUFVzIGNhY2hpbmcgdmFsaWQNCisgKgltYXBwaW5ncyBpbiB0 aGVpciBUTEJzLg0KKyAqLw0KKyNkZWZpbmUgdGxiX3JlbW92ZV9wYWdlKGN0 eHAsIHB0ZSwgYWRkcikgZG8ge1wNCisJCS8qIEhhbmRsZSB0aGUgY29tbW9u IGNhc2UgZmFzdCwgZmlyc3QuICovXA0KKwkJaWYgKChjdHhwKS0+bnIgPT0g fjBVTCkge1wNCisJCQlfX2ZyZWVfcHRlKCoocHRlKSk7XA0KKwkJCXB0ZV9j bGVhcigocHRlKSk7XA0KKwkJCWJyZWFrO1wNCisJCX1cDQorCQlpZiAoIShj dHhwKS0+bnIpIFwNCisJCQkoY3R4cCktPnN0YXJ0X2FkZHIgPSAoYWRkcik7 XA0KKwkJKGN0eHApLT5wdGVzWyhjdHhwKS0+bnIrK10gPSBwdGVwX2dldF9h bmRfY2xlYXIocHRlKTtcDQorCQkoY3R4cCktPmVuZF9hZGRyID0gKGFkZHIp ICsgUEFHRV9TSVpFO1wNCisJCWlmICgoY3R4cCktPm5yID49IEZSRUVfUFRF X05SKVwNCisJCQl0bGJfZmluaXNoX21tdSgoY3R4cCksIDAsIDApO1wNCisJ fSB3aGlsZSAoMCkNCisNCisvKiB0bGJfZmluaXNoX21tdQ0KKyAqCUNhbGxl ZCBhdCB0aGUgZW5kIG9mIHRoZSBzaG9vdGRvd24gb3BlcmF0aW9uIHRvIGZy ZWUgdXAgYW55IHJlc291cmNlcw0KKyAqCXRoYXQgd2VyZSByZXF1aXJlZC4g IFRoZSBwYWdlIHRhbGJlIGxvY2sgaXMgc3RpbGwgaGVsZCBhdCB0aGlzIHBv aW50Lg0KKyAqLw0KK3N0YXRpYyBpbmxpbmUgdm9pZCB0bGJfZmluaXNoX21t dShzdHJ1Y3QgZnJlZV9wdGVfY3R4ICpjdHgsIHVuc2lnbmVkIGxvbmcgc3Rh cnQsIHVuc2lnbmVkIGxvbmcgZW5kKQ0KK3sNCisJdW5zaWduZWQgbG9uZyBp LCBucjsNCisNCisJLyogSGFuZGxlIHRoZSBmYXN0IGNhc2UgZmlyc3QuICov DQorCWlmIChjdHgtPm5yID09IH4wVUwpIHsNCisJCWZsdXNoX3RsYl9yYW5n ZShjdHgtPm1tLCBzdGFydCwgZW5kKTsNCisJCXJldHVybjsNCisJfQ0KKwlu ciA9IGN0eC0+bnI7DQorCWN0eC0+bnIgPSAwOw0KKwlpZiAobnIpDQorCQlm bHVzaF90bGJfcmFuZ2UoY3R4LT5tbSwgY3R4LT5zdGFydF9hZGRyLCBjdHgt PmVuZF9hZGRyKTsNCisJZm9yIChpPTA7IGkgPCBucjsgaSsrKSB7DQorCQlw dGVfdCBwdGUgPSBjdHgtPnB0ZXNbaV07DQorCQlfX2ZyZWVfcHRlKHB0ZSk7 DQorCX0NCit9DQorDQorI2Vsc2UNCisNCisvKiBUaGUgdW5pcHJvY2Vzc29y IGZ1bmN0aW9ucyBhcmUgcXVpdGUgc2ltcGxlIGFuZCBhcmUgaW5saW5lIG1h Y3JvcyBpbiBhbg0KKyAqIGF0dGVtcHQgdG8gZ2V0IGdjYyB0byBnZW5lcmF0 ZSBvcHRpbWFsIGNvZGUgc2luY2UgdGhpcyBjb2RlIGlzIHJ1biBvbiBlYWNo DQorICogcGFnZSBpbiBhIHByb2Nlc3MgYXQgZXhpdC4NCisgKi8NCit0eXBl ZGVmIHN0cnVjdCBtbV9zdHJ1Y3QgbW11X2dhdGhlcl90Ow0KKw0KKyNkZWZp bmUgdGxiX2dhdGhlcl9tbXUobW0pCShtbSkNCisjZGVmaW5lIHRsYl9maW5p c2hfbW11KHRsYiwgc3RhcnQsIGVuZCkJZmx1c2hfdGxiX3JhbmdlKHRsYiwg c3RhcnQsIGVuZCkNCisjZGVmaW5lIHRsYl9yZW1vdmVfcGFnZSh0bGIsIHB0 ZXAsIGFkZHIpCWRvIHtcDQorCQlwdGVfdCBfX3B0ZSA9ICoocHRlcCk7XA0K KwkJcHRlX2NsZWFyKHB0ZXApO1wNCisJCV9fZnJlZV9wdGUoX19wdGUpO1wN CisJfSB3aGlsZSAoMCkNCisNCisjZW5kaWYNCisNCisNCisjZW5kaWYgLyog X0FTTV9HRU5FUklDX19UTEJfSCAqLw0KKw0KZGlmZiAtdXJOIHYyLjQuMi1w cmUzL2luY2x1ZGUvYXNtLWkzODYvdGxiLmggd29yay12Mi40LjItcHJlMy9p bmNsdWRlL2FzbS1pMzg2L3RsYi5oDQotLS0gdjIuNC4yLXByZTMvaW5jbHVk ZS9hc20taTM4Ni90bGIuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisr KyB3b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLWkzODYvdGxiLmgJTW9u IEZlYiAxMiAxNjozMjo0OCAyMDAxDQpAQCAtMCwwICsxIEBADQorI2luY2x1 ZGUgPGFzbS1nZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYyLjQuMi1wcmUz L2luY2x1ZGUvYXNtLWlhNjQvdGxiLmggd29yay12Mi40LjItcHJlMy9pbmNs dWRlL2FzbS1pYTY0L3RsYi5oDQotLS0gdjIuNC4yLXByZTMvaW5jbHVkZS9h c20taWE2NC90bGIuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyB3 b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLWlhNjQvdGxiLmgJTW9uIEZl YiAxMiAxNjozMzo0NSAyMDAxDQpAQCAtMCwwICsxIEBADQorI2luY2x1ZGUg PGFzbS1nZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2lu Y2x1ZGUvYXNtLW02OGsvdGxiLmggd29yay12Mi40LjItcHJlMy9pbmNsdWRl L2FzbS1tNjhrL3RsYi5oDQotLS0gdjIuNC4yLXByZTMvaW5jbHVkZS9hc20t bTY4ay90bGIuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyB3b3Jr LXYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLW02OGsvdGxiLmgJTW9uIEZlYiAx MiAxNjozMzo0NSAyMDAxDQpAQCAtMCwwICsxIEBADQorI2luY2x1ZGUgPGFz bS1nZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2luY2x1 ZGUvYXNtLW1pcHMvdGxiLmggd29yay12Mi40LjItcHJlMy9pbmNsdWRlL2Fz bS1taXBzL3RsYi5oDQotLS0gdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tbWlw cy90bGIuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyB3b3JrLXYy LjQuMi1wcmUzL2luY2x1ZGUvYXNtLW1pcHMvdGxiLmgJTW9uIEZlYiAxMiAx NjozMzo0NSAyMDAxDQpAQCAtMCwwICsxIEBADQorI2luY2x1ZGUgPGFzbS1n ZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2luY2x1ZGUv YXNtLW1pcHM2NC90bGIuaCB3b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvYXNt LW1pcHM2NC90bGIuaA0KLS0tIHYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLW1p cHM2NC90bGIuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyB3b3Jr LXYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLW1pcHM2NC90bGIuaAlNb24gRmVi IDEyIDE2OjMzOjQ1IDIwMDENCkBAIC0wLDAgKzEgQEANCisjaW5jbHVkZSA8 YXNtLWdlbmVyaWMvdGxiLmg+DQpkaWZmIC11ck4gdjIuNC4yLXByZTMvaW5j bHVkZS9hc20tcGFyaXNjL3RsYi5oIHdvcmstdjIuNC4yLXByZTMvaW5jbHVk ZS9hc20tcGFyaXNjL3RsYi5oDQotLS0gdjIuNC4yLXByZTMvaW5jbHVkZS9h c20tcGFyaXNjL3RsYi5oCVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQ0KKysr IHdvcmstdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tcGFyaXNjL3RsYi5oCU1v biBGZWIgMTIgMTY6MzM6NDUgMjAwMQ0KQEAgLTAsMCArMSBAQA0KKyNpbmNs dWRlIDxhc20tZ2VuZXJpYy90bGIuaD4NCmRpZmYgLXVyTiB2Mi40LjItcHJl My9pbmNsdWRlL2FzbS1wcGMvdGxiLmggd29yay12Mi40LjItcHJlMy9pbmNs dWRlL2FzbS1wcGMvdGxiLmgNCi0tLSB2Mi40LjItcHJlMy9pbmNsdWRlL2Fz bS1wcGMvdGxiLmgJV2VkIERlYyAzMSAxOTowMDowMCAxOTY5DQorKysgd29y ay12Mi40LjItcHJlMy9pbmNsdWRlL2FzbS1wcGMvdGxiLmgJTW9uIEZlYiAx MiAxNjozMzo0NSAyMDAxDQpAQCAtMCwwICsxIEBADQorI2luY2x1ZGUgPGFz bS1nZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2luY2x1 ZGUvYXNtLXMzOTAvdGxiLmggd29yay12Mi40LjItcHJlMy9pbmNsdWRlL2Fz bS1zMzkwL3RsYi5oDQotLS0gdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tczM5 MC90bGIuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyB3b3JrLXYy LjQuMi1wcmUzL2luY2x1ZGUvYXNtLXMzOTAvdGxiLmgJTW9uIEZlYiAxMiAx NjozMzo0NSAyMDAxDQpAQCAtMCwwICsxIEBADQorI2luY2x1ZGUgPGFzbS1n ZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2luY2x1ZGUv YXNtLXNoL3RsYi5oIHdvcmstdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tc2gv dGxiLmgNCi0tLSB2Mi40LjItcHJlMy9pbmNsdWRlL2FzbS1zaC90bGIuaAlX ZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyB3b3JrLXYyLjQuMi1wcmUz L2luY2x1ZGUvYXNtLXNoL3RsYi5oCU1vbiBGZWIgMTIgMTY6MzM6NDUgMjAw MQ0KQEAgLTAsMCArMSBAQA0KKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy90bGIu aD4NCmRpZmYgLXVyTiB2Mi40LjItcHJlMy9pbmNsdWRlL2FzbS1zcGFyYy90 bGIuaCB3b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLXNwYXJjL3RsYi5o DQotLS0gdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tc3BhcmMvdGxiLmgJV2Vk IERlYyAzMSAxOTowMDowMCAxOTY5DQorKysgd29yay12Mi40LjItcHJlMy9p bmNsdWRlL2FzbS1zcGFyYy90bGIuaAlNb24gRmViIDEyIDE2OjMzOjQ1IDIw MDENCkBAIC0wLDAgKzEgQEANCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvdGxi Lmg+DQpkaWZmIC11ck4gdjIuNC4yLXByZTMvaW5jbHVkZS9hc20tc3BhcmM2 NC90bGIuaCB3b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvYXNtLXNwYXJjNjQv dGxiLmgNCi0tLSB2Mi40LjItcHJlMy9pbmNsdWRlL2FzbS1zcGFyYzY0L3Rs Yi5oCVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQ0KKysrIHdvcmstdjIuNC4y LXByZTMvaW5jbHVkZS9hc20tc3BhcmM2NC90bGIuaAlNb24gRmViIDEyIDE2 OjMzOjQ1IDIwMDENCkBAIC0wLDAgKzEgQEANCisjaW5jbHVkZSA8YXNtLWdl bmVyaWMvdGxiLmg+DQpkaWZmIC11ck4gdjIuNC4yLXByZTMvaW5jbHVkZS9s aW51eC9zd2FwLmggd29yay12Mi40LjItcHJlMy9pbmNsdWRlL2xpbnV4L3N3 YXAuaA0KLS0tIHYyLjQuMi1wcmUzL2luY2x1ZGUvbGludXgvc3dhcC5oCVR1 ZSBGZWIgIDYgMTg6MDI6NDUgMjAwMQ0KKysrIHdvcmstdjIuNC4yLXByZTMv aW5jbHVkZS9saW51eC9zd2FwLmgJTW9uIEZlYiAxMiAxNjozMjo0OCAyMDAx DQpAQCAtMjkzLDYgKzI5MywyMiBAQA0KIA0KIGV4dGVybiB2b2lkIHNobWVt X3VudXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7 DQogDQorLyogSGVscGVyIGZ1bmN0aW9uIGZvciBUTEIgc2hvb3Rkb3duIHRo YXQgZnJlZXMgYSBwcmVzZW50IHB0ZS4NCisgKi8NCitzdGF0aWMgaW5saW5l IHZvaWQgX19mcmVlX3B0ZShwdGVfdCBwdGUpDQorew0KKwlzdHJ1Y3QgcGFn ZSAqcGFnZSA9IHB0ZV9wYWdlKHB0ZSk7DQorCWlmICgoIVZBTElEX1BBR0Uo cGFnZSkpIHx8IFBhZ2VSZXNlcnZlZChwYWdlKSkNCisJCXJldHVybjsNCisJ LyogDQorCSAqIGZyZWVfcGFnZSgpIHVzZWQgdG8gYmUgYWJsZSB0byBjbGVh ciBzd2FwIGNhY2hlDQorCSAqIGVudHJpZXMuICBXZSBtYXkgbm93IGhhdmUg dG8gZG8gaXQgbWFudWFsbHkuICANCisJICovDQorCWlmIChwdGVfZGlydHko cHRlKSAmJiBwYWdlLT5tYXBwaW5nKQ0KKwkJc2V0X3BhZ2VfZGlydHkocGFn ZSk7DQorCWZyZWVfcGFnZV9hbmRfc3dhcF9jYWNoZShwYWdlKTsNCit9DQor DQogI2VuZGlmIC8qIF9fS0VSTkVMX18qLw0KIA0KICNlbmRpZiAvKiBfTElO VVhfU1dBUF9IICovDQpkaWZmIC11ck4gdjIuNC4yLXByZTMvaW5jbHVkZS9s aW51eC90bGIuaCB3b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvbGludXgvdGxi LmgNCi0tLSB2Mi40LjItcHJlMy9pbmNsdWRlL2xpbnV4L3RsYi5oCVdlZCBE ZWMgMzEgMTk6MDA6MDAgMTk2OQ0KKysrIHdvcmstdjIuNC4yLXByZTMvaW5j bHVkZS9saW51eC90bGIuaAlNb24gRmViIDEyIDE2OjMzOjQ1IDIwMDENCkBA IC0wLDAgKzEgQEANCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvdGxiLmg+DQpk aWZmIC11ck4gdjIuNC4yLXByZTMvaW5jbHVkZS9tYXRoLWVtdS90bGIuaCB3 b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvbWF0aC1lbXUvdGxiLmgNCi0tLSB2 Mi40LjItcHJlMy9pbmNsdWRlL21hdGgtZW11L3RsYi5oCVdlZCBEZWMgMzEg MTk6MDA6MDAgMTk2OQ0KKysrIHdvcmstdjIuNC4yLXByZTMvaW5jbHVkZS9t YXRoLWVtdS90bGIuaAlNb24gRmViIDEyIDE2OjMzOjQ1IDIwMDENCkBAIC0w LDAgKzEgQEANCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvdGxiLmg+DQpkaWZm IC11ck4gdjIuNC4yLXByZTMvaW5jbHVkZS9uZXQvdGxiLmggd29yay12Mi40 LjItcHJlMy9pbmNsdWRlL25ldC90bGIuaA0KLS0tIHYyLjQuMi1wcmUzL2lu Y2x1ZGUvbmV0L3RsYi5oCVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQ0KKysr IHdvcmstdjIuNC4yLXByZTMvaW5jbHVkZS9uZXQvdGxiLmgJTW9uIEZlYiAx MiAxNjozMzo0NSAyMDAxDQpAQCAtMCwwICsxIEBADQorI2luY2x1ZGUgPGFz bS1nZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL2luY2x1 ZGUvcGNtY2lhL3RsYi5oIHdvcmstdjIuNC4yLXByZTMvaW5jbHVkZS9wY21j aWEvdGxiLmgNCi0tLSB2Mi40LjItcHJlMy9pbmNsdWRlL3BjbWNpYS90bGIu aAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyB3b3JrLXYyLjQuMi1w cmUzL2luY2x1ZGUvcGNtY2lhL3RsYi5oCU1vbiBGZWIgMTIgMTY6MzM6NDUg MjAwMQ0KQEAgLTAsMCArMSBAQA0KKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy90 bGIuaD4NCmRpZmYgLXVyTiB2Mi40LjItcHJlMy9pbmNsdWRlL3Njc2kvdGxi Lmggd29yay12Mi40LjItcHJlMy9pbmNsdWRlL3Njc2kvdGxiLmgNCi0tLSB2 Mi40LjItcHJlMy9pbmNsdWRlL3Njc2kvdGxiLmgJV2VkIERlYyAzMSAxOTow MDowMCAxOTY5DQorKysgd29yay12Mi40LjItcHJlMy9pbmNsdWRlL3Njc2kv dGxiLmgJTW9uIEZlYiAxMiAxNjozMzo0NSAyMDAxDQpAQCAtMCwwICsxIEBA DQorI2luY2x1ZGUgPGFzbS1nZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYy LjQuMi1wcmUzL2luY2x1ZGUvdmlkZW8vdGxiLmggd29yay12Mi40LjItcHJl My9pbmNsdWRlL3ZpZGVvL3RsYi5oDQotLS0gdjIuNC4yLXByZTMvaW5jbHVk ZS92aWRlby90bGIuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyB3 b3JrLXYyLjQuMi1wcmUzL2luY2x1ZGUvdmlkZW8vdGxiLmgJTW9uIEZlYiAx MiAxNjozMzo0NSAyMDAxDQpAQCAtMCwwICsxIEBADQorI2luY2x1ZGUgPGFz bS1nZW5lcmljL3RsYi5oPg0KZGlmZiAtdXJOIHYyLjQuMi1wcmUzL21tL2Zp bGVtYXAuYyB3b3JrLXYyLjQuMi1wcmUzL21tL2ZpbGVtYXAuYw0KLS0tIHYy LjQuMi1wcmUzL21tL2ZpbGVtYXAuYwlNb24gRmViIDEyIDEyOjE5OjAzIDIw MDENCisrKyB3b3JrLXYyLjQuMi1wcmUzL21tL2ZpbGVtYXAuYwlNb24gRmVi IDEyIDE2OjMyOjQ4IDIwMDENCkBAIC0yMDIzLDkgKzIwMjMsNyBAQA0KIAlp ZiAodm1hLT52bV9mbGFncyAmIFZNX0xPQ0tFRCkNCiAJCXJldHVybiAtRUlO VkFMOw0KIA0KLQlmbHVzaF9jYWNoZV9yYW5nZSh2bWEtPnZtX21tLCBzdGFy dCwgZW5kKTsNCiAJemFwX3BhZ2VfcmFuZ2Uodm1hLT52bV9tbSwgc3RhcnQs IGVuZCAtIHN0YXJ0KTsNCi0JZmx1c2hfdGxiX3JhbmdlKHZtYS0+dm1fbW0s IHN0YXJ0LCBlbmQpOw0KIAlyZXR1cm4gMDsNCiB9DQogDQpkaWZmIC11ck4g djIuNC4yLXByZTMvbW0vbWVtb3J5LmMgd29yay12Mi40LjItcHJlMy9tbS9t ZW1vcnkuYw0KLS0tIHYyLjQuMi1wcmUzL21tL21lbW9yeS5jCU1vbiBGZWIg MTIgMTI6MTk6MDMgMjAwMQ0KKysrIHdvcmstdjIuNC4yLXByZTMvbW0vbWVt b3J5LmMJTW9uIEZlYiAxMiAxNjozMjo0OCAyMDAxDQpAQCAtNDYsNyArNDYs NyBAQA0KICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPg0KICNpbmNsdWRlIDxs aW51eC9oaWdobWVtLmg+DQogI2luY2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4N Ci0NCisjaW5jbHVkZSA8YXNtL3RsYi5oPg0KIA0KIHVuc2lnbmVkIGxvbmcg bWF4X21hcG5yOw0KIHVuc2lnbmVkIGxvbmcgbnVtX3BoeXNwYWdlczsNCkBA IC0yNjUsMzcgKzI2NSwxOSBAQA0KIC8qDQogICogUmV0dXJuIGluZGljYXRl cyB3aGV0aGVyIGEgcGFnZSB3YXMgZnJlZWQgc28gY2FsbGVyIGNhbiBhZGp1 c3QgcnNzDQogICovDQotc3RhdGljIGlubGluZSBpbnQgZnJlZV9wdGUocHRl X3QgcHRlKQ0KLXsNCi0JaWYgKHB0ZV9wcmVzZW50KHB0ZSkpIHsNCi0JCXN0 cnVjdCBwYWdlICpwYWdlID0gcHRlX3BhZ2UocHRlKTsNCi0JCWlmICgoIVZB TElEX1BBR0UocGFnZSkpIHx8IFBhZ2VSZXNlcnZlZChwYWdlKSkNCi0JCQly ZXR1cm4gMDsNCi0JCS8qIA0KLQkJICogZnJlZV9wYWdlKCkgdXNlZCB0byBi ZSBhYmxlIHRvIGNsZWFyIHN3YXAgY2FjaGUNCi0JCSAqIGVudHJpZXMuICBX ZSBtYXkgbm93IGhhdmUgdG8gZG8gaXQgbWFudWFsbHkuICANCi0JCSAqLw0K LQkJaWYgKHB0ZV9kaXJ0eShwdGUpICYmIHBhZ2UtPm1hcHBpbmcpDQotCQkJ c2V0X3BhZ2VfZGlydHkocGFnZSk7DQotCQlmcmVlX3BhZ2VfYW5kX3N3YXBf Y2FjaGUocGFnZSk7DQotCQlyZXR1cm4gMTsNCi0JfQ0KLQlzd2FwX2ZyZWUo cHRlX3RvX3N3cF9lbnRyeShwdGUpKTsNCi0JcmV0dXJuIDA7DQotfQ0KLQ0K IHN0YXRpYyBpbmxpbmUgdm9pZCBmb3JnZXRfcHRlKHB0ZV90IHBhZ2UpDQog ew0KIAlpZiAoIXB0ZV9ub25lKHBhZ2UpKSB7DQogCQlwcmludGsoImZvcmdl dF9wdGU6IG9sZCBtYXBwaW5nIGV4aXN0ZWQhXG4iKTsNCi0JCWZyZWVfcHRl KHBhZ2UpOw0KKwkJQlVHKCk7DQogCX0NCiB9DQogDQotc3RhdGljIGlubGlu ZSBpbnQgemFwX3B0ZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1k X3QgKiBwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9u ZyBzaXplKQ0KK3N0YXRpYyBpbmxpbmUgaW50IHphcF9wdGVfcmFuZ2UobW11 X2dhdGhlcl90ICp0bGIsIHBtZF90ICogcG1kLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSkNCiB7DQotCXB0ZV90ICogcHRl Ow0KLQlpbnQgZnJlZWQ7DQorCXVuc2lnbmVkIGxvbmcgb2Zmc2V0Ow0KKwlw dGVfdCAqIHB0ZXA7DQorCWludCBmcmVlZCA9IDA7DQogDQogCWlmIChwbWRf bm9uZSgqcG1kKSkNCiAJCXJldHVybiAwOw0KQEAgLTMwNCwyNyArMjg2LDI3 IEBADQogCQlwbWRfY2xlYXIocG1kKTsNCiAJCXJldHVybiAwOw0KIAl9DQot CXB0ZSA9IHB0ZV9vZmZzZXQocG1kLCBhZGRyZXNzKTsNCisJcHRlcCA9IHB0 ZV9vZmZzZXQocG1kLCBhZGRyZXNzKTsNCiAJYWRkcmVzcyAmPSB+UE1EX01B U0s7DQogCWlmIChhZGRyZXNzICsgc2l6ZSA+IFBNRF9TSVpFKQ0KIAkJc2l6 ZSA9IFBNRF9TSVpFIC0gYWRkcmVzczsNCi0Jc2l6ZSA+Pj0gUEFHRV9TSElG VDsNCi0JZnJlZWQgPSAwOw0KLQlmb3IgKDs7KSB7DQotCQlwdGVfdCBwYWdl Ow0KLQkJaWYgKCFzaXplKQ0KLQkJCWJyZWFrOw0KLQkJcGFnZSA9IHB0ZXBf Z2V0X2FuZF9jbGVhcihwdGUpOw0KLQkJcHRlKys7DQotCQlzaXplLS07DQot CQlpZiAocHRlX25vbmUocGFnZSkpDQorCXNpemUgJj0gUEFHRV9NQVNLOw0K Kwlmb3IgKG9mZnNldD0wOyBvZmZzZXQgPCBzaXplOyBwdGVwKyssIG9mZnNl dCArPSBQQUdFX1NJWkUpIHsNCisJCXB0ZV90IHB0ZSA9ICpwdGVwOw0KKwkJ aWYgKHB0ZV9ub25lKHB0ZSkpDQogCQkJY29udGludWU7DQotCQlmcmVlZCAr PSBmcmVlX3B0ZShwYWdlKTsNCisJCWlmIChwdGVfcHJlc2VudChwdGUpKSB7 DQorCQkJZnJlZWQgKys7DQorCQkJLyogVGhpcyB3aWxsIGV2ZW50dWFsbHkg Y2FsbCBfX2ZyZWVfcHRlIG9uIHRoZSBwdGUuICovDQorCQkJdGxiX3JlbW92 ZV9wYWdlKHRsYiwgcHRlcCwgYWRkcmVzcyArIG9mZnNldCk7DQorCQl9IGVs c2UNCisJCQlzd2FwX2ZyZWUocHRlX3RvX3N3cF9lbnRyeShwdGUpKTsNCiAJ fQ0KKw0KIAlyZXR1cm4gZnJlZWQ7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUg aW50IHphcF9wbWRfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90 ICogZGlyLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcg c2l6ZSkNCitzdGF0aWMgaW5saW5lIGludCB6YXBfcG1kX3JhbmdlKG1tdV9n YXRoZXJfdCAqdGxiLCBwZ2RfdCAqIGRpciwgdW5zaWduZWQgbG9uZyBhZGRy ZXNzLCB1bnNpZ25lZCBsb25nIHNpemUpDQogew0KIAlwbWRfdCAqIHBtZDsN CiAJdW5zaWduZWQgbG9uZyBlbmQ7DQpAQCAtMzQ0LDcgKzMyNiw3IEBADQog CQllbmQgPSBQR0RJUl9TSVpFOw0KIAlmcmVlZCA9IDA7DQogCWRvIHsNCi0J CWZyZWVkICs9IHphcF9wdGVfcmFuZ2UobW0sIHBtZCwgYWRkcmVzcywgZW5k IC0gYWRkcmVzcyk7DQorCQlmcmVlZCArPSB6YXBfcHRlX3JhbmdlKHRsYiwg cG1kLCBhZGRyZXNzLCBlbmQgLSBhZGRyZXNzKTsNCiAJCWFkZHJlc3MgPSAo YWRkcmVzcyArIFBNRF9TSVpFKSAmIFBNRF9NQVNLOyANCiAJCXBtZCsrOw0K IAl9IHdoaWxlIChhZGRyZXNzIDwgZW5kKTsNCkBAIC0zNTYsOCArMzM4LDkg QEANCiAgKi8NCiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcg c2l6ZSkNCiB7DQorCW1tdV9nYXRoZXJfdCAqdGxiOw0KIAlwZ2RfdCAqIGRp cjsNCi0JdW5zaWduZWQgbG9uZyBlbmQgPSBhZGRyZXNzICsgc2l6ZTsNCisJ dW5zaWduZWQgbG9uZyBzdGFydCA9IGFkZHJlc3MsIGVuZCA9IGFkZHJlc3Mg KyBzaXplOw0KIAlpbnQgZnJlZWQgPSAwOw0KIA0KIAlkaXIgPSBwZ2Rfb2Zm c2V0KG1tLCBhZGRyZXNzKTsNCkBAIC0zNzIsMTIgKzM1NSwxOCBAQA0KIAlp ZiAoYWRkcmVzcyA+PSBlbmQpDQogCQlCVUcoKTsNCiAJc3Bpbl9sb2NrKCZt bS0+cGFnZV90YWJsZV9sb2NrKTsNCisJZmx1c2hfY2FjaGVfcmFuZ2UobW0s IGFkZHJlc3MsIGVuZCk7DQorCXRsYiA9IHRsYl9nYXRoZXJfbW11KG1tKTsN CisNCiAJZG8gew0KLQkJZnJlZWQgKz0gemFwX3BtZF9yYW5nZShtbSwgZGly LCBhZGRyZXNzLCBlbmQgLSBhZGRyZXNzKTsNCisJCWZyZWVkICs9IHphcF9w bWRfcmFuZ2UodGxiLCBkaXIsIGFkZHJlc3MsIGVuZCAtIGFkZHJlc3MpOw0K IAkJYWRkcmVzcyA9IChhZGRyZXNzICsgUEdESVJfU0laRSkgJiBQR0RJUl9N QVNLOw0KIAkJZGlyKys7DQogCX0gd2hpbGUgKGFkZHJlc3MgJiYgKGFkZHJl c3MgPCBlbmQpKTsNCi0Jc3Bpbl91bmxvY2soJm1tLT5wYWdlX3RhYmxlX2xv Y2spOw0KKw0KKwkvKiB0aGlzIHdpbGwgZmx1c2ggYW55IHJlbWFpbmluZyB0 bGIgZW50cmllcyAqLw0KKwl0bGJfZmluaXNoX21tdSh0bGIsIHN0YXJ0LCBl bmQpOw0KKw0KIAkvKg0KIAkgKiBVcGRhdGUgcnNzIGZvciB0aGUgbW1fc3Ry dWN0IChub3QgbmVjZXNzYXJpbHkgY3VycmVudC0+bW0pDQogCSAqIE5vdGlj ZSB0aGF0IHJzcyBpcyBhbiB1bnNpZ25lZCBsb25nLg0KQEAgLTM4Niw2ICsz NzUsNyBAQA0KIAkJbW0tPnJzcyAtPSBmcmVlZDsNCiAJZWxzZQ0KIAkJbW0t PnJzcyA9IDA7DQorCXNwaW5fdW5sb2NrKCZtbS0+cGFnZV90YWJsZV9sb2Nr KTsNCiB9DQogDQogDQpAQCAtOTA4LDkgKzg5OCw3IEBADQogDQogCQkvKiBt YXBwaW5nIHdob2xseSB0cnVuY2F0ZWQ/ICovDQogCQlpZiAobXBudC0+dm1f cGdvZmYgPj0gcGdvZmYpIHsNCi0JCQlmbHVzaF9jYWNoZV9yYW5nZShtbSwg c3RhcnQsIGVuZCk7DQogCQkJemFwX3BhZ2VfcmFuZ2UobW0sIHN0YXJ0LCBs ZW4pOw0KLQkJCWZsdXNoX3RsYl9yYW5nZShtbSwgc3RhcnQsIGVuZCk7DQog CQkJY29udGludWU7DQogCQl9DQogDQpAQCAtOTIzLDkgKzkxMSw3IEBADQog CQkvKiBPaywgcGFydGlhbGx5IGFmZmVjdGVkLi4gKi8NCiAJCXN0YXJ0ICs9 IGRpZmYgPDwgUEFHRV9TSElGVDsNCiAJCWxlbiA9IChsZW4gLSBkaWZmKSA8 PCBQQUdFX1NISUZUOw0KLQkJZmx1c2hfY2FjaGVfcmFuZ2UobW0sIHN0YXJ0 LCBlbmQpOw0KIAkJemFwX3BhZ2VfcmFuZ2UobW0sIHN0YXJ0LCBsZW4pOw0K LQkJZmx1c2hfdGxiX3JhbmdlKG1tLCBzdGFydCwgZW5kKTsNCiAJfSB3aGls ZSAoKG1wbnQgPSBtcG50LT52bV9uZXh0X3NoYXJlKSAhPSBOVUxMKTsNCiB9 DQogCQkJICAgICAgDQpkaWZmIC11ck4gdjIuNC4yLXByZTMvbW0vbW1hcC5j IHdvcmstdjIuNC4yLXByZTMvbW0vbW1hcC5jDQotLS0gdjIuNC4yLXByZTMv bW0vbW1hcC5jCU1vbiBGZWIgMTIgMTI6MTk6MDMgMjAwMQ0KKysrIHdvcmst djIuNC4yLXByZTMvbW0vbW1hcC5jCU1vbiBGZWIgMTIgMTY6MzI6NDggMjAw MQ0KQEAgLTM3Myw5ICszNzMsNyBAQA0KIAl2bWEtPnZtX2ZpbGUgPSBOVUxM Ow0KIAlmcHV0KGZpbGUpOw0KIAkvKiBVbmRvIGFueSBwYXJ0aWFsIG1hcHBp bmcgZG9uZSBieSBhIGRldmljZSBkcml2ZXIuICovDQotCWZsdXNoX2NhY2hl X3JhbmdlKG1tLCB2bWEtPnZtX3N0YXJ0LCB2bWEtPnZtX2VuZCk7DQogCXph cF9wYWdlX3JhbmdlKG1tLCB2bWEtPnZtX3N0YXJ0LCB2bWEtPnZtX2VuZCAt IHZtYS0+dm1fc3RhcnQpOw0KLQlmbHVzaF90bGJfcmFuZ2UobW0sIHZtYS0+ dm1fc3RhcnQsIHZtYS0+dm1fZW5kKTsNCiBmcmVlX3ZtYToNCiAJa21lbV9j YWNoZV9mcmVlKHZtX2FyZWFfY2FjaGVwLCB2bWEpOw0KIAlyZXR1cm4gZXJy b3I7DQpAQCAtNzUwLDkgKzc0OCw3IEBADQogCQlyZW1vdmVfc2hhcmVkX3Zt X3N0cnVjdChtcG50KTsNCiAJCW1tLT5tYXBfY291bnQtLTsNCiANCi0JCWZs dXNoX2NhY2hlX3JhbmdlKG1tLCBzdCwgZW5kKTsNCiAJCXphcF9wYWdlX3Jh bmdlKG1tLCBzdCwgc2l6ZSk7DQotCQlmbHVzaF90bGJfcmFuZ2UobW0sIHN0 LCBlbmQpOw0KIA0KIAkJLyoNCiAJCSAqIEZpeCB0aGUgbWFwcGluZywgYW5k IGZyZWUgdGhlIG9sZCBhcmVhIGlmIGl0IHdhc24ndCByZXVzZWQuDQpkaWZm IC11ck4gdjIuNC4yLXByZTMvbW0vbXJlbWFwLmMgd29yay12Mi40LjItcHJl My9tbS9tcmVtYXAuYw0KLS0tIHYyLjQuMi1wcmUzL21tL21yZW1hcC5jCUZy aSBEZWMgMjkgMTc6MDc6MjQgMjAwMA0KKysrIHdvcmstdjIuNC4yLXByZTMv bW0vbXJlbWFwLmMJTW9uIEZlYiAxMiAxNjozMjo0OCAyMDAxDQpAQCAtMTE5 LDcgKzExOSw2IEBADQogCXdoaWxlICgob2Zmc2V0ICs9IFBBR0VfU0laRSkg PCBsZW4pDQogCQltb3ZlX29uZV9wYWdlKG1tLCBuZXdfYWRkciArIG9mZnNl dCwgb2xkX2FkZHIgKyBvZmZzZXQpOw0KIAl6YXBfcGFnZV9yYW5nZShtbSwg bmV3X2FkZHIsIGxlbik7DQotCWZsdXNoX3RsYl9yYW5nZShtbSwgbmV3X2Fk ZHIsIG5ld19hZGRyICsgbGVuKTsNCiAJcmV0dXJuIC0xOw0KIH0NCiANCg== --279767566-1710039764-982014747=:3013-- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux.eu.org/Linux-MM/