Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Fri, 24 Jan 2003 09:15:06 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Fri, 24 Jan 2003 09:15:06 -0500 Received: from rumms.uni-mannheim.de ([134.155.50.52]:16816 "EHLO rumms.uni-mannheim.de") by vger.kernel.org with ESMTP id ; Fri, 24 Jan 2003 09:15:01 -0500 From: Thomas Schlichter Message-ID: <1043418252.3e314c8d0278a@rumms.uni-mannheim.de> Date: Fri, 24 Jan 2003 15:24:13 +0100 To: linux-kernel@vger.kernel.org, torvalds@transmeta.com Cc: "Patrick R. Schulz" Subject: [PATCH] to support hookable flush_tlb* functions MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-MOQ10434182524780341329d107c49af7a585e4ca6c90" User-Agent: Internet Messaging Program (IMP) 3.0 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This message is in MIME format. ---MOQ10434182524780341329d107c49af7a585e4ca6c90 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Hello, with this mail I send a patch that allows kernel modules to hook into the different flush_tlb* functions defined in or in order to synchronize devices TLBs. This is necessary for devices that provide their own TLB and cannot participate on the CPU busses shootdown protocol. With this patch it is possible to assure TLB consistency. Currently this extension could possibly be used by high performance interconnects like QsNet from Quadrics (www.quadrics.com), and in the near future by even more high performance, low latency NICs that will implement direct user space DMA transfers to not pinned user pages. TLBs are there a mandatory requirement. Currently I am writing my diploma thesis about the development of such a device where I need this patch, and as it looks good to me I want to provide it to the public community so it can be reviewed and even more tested. (the i386 parts are tested work fine for me) The patch consists of two parts, one generic part and for each supported architecture an other part that depends on the generic one. Attached to this mail is only the generic part and the architecture dependend part for i386 compatible machines just not to waste everyones bandwidth... But if requested I can send you patches for the other architectures, too. The i386 patch also includes some cleanups by renaming __flush_tlb_* to local_flush_tlb_*. I hope some time this patches will make it into the kernel sources. (perhaps even into 2.6.x ?) Sincerely yours Thomas Schlichter P.S.: To test this patch I've also written a module that counts the different flush_tlb* calls and shows them in /proc/tlbstat. If requested I could send you this, too. ---MOQ10434182524780341329d107c49af7a585e4ca6c90 Content-Type: application/octet-stream; name="tlbhook_generic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tlbhook_generic.patch" ZGlmZiAtdXJQIGxpbnV4LTIuNS41OS9pbmNsdWRlL2xpbnV4L3RsYmhvb2suaCBsaW51eC0yLjUu NTlfcGF0Y2hlZC9pbmNsdWRlL2xpbnV4L3RsYmhvb2suaAotLS0gbGludXgtMi41LjU5L2luY2x1 ZGUvbGludXgvdGxiaG9vay5oCVRodSBKYW4gIDEgMDE6MDA6MDAgMTk3MAorKysgbGludXgtMi41 LjU5X3BhdGNoZWQvaW5jbHVkZS9saW51eC90bGJob29rLmgJV2VkIEphbiAyMiAyMjoyOTozMCAy MDAzCkBAIC0wLDAgKzEsMTIyIEBACisjaWZuZGVmIF9MSU5VWF9UTEJIT09LX0gKKyNkZWZpbmUg X0xJTlVYX1RMQkhPT0tfSAorCisjaW5jbHVkZSA8bGludXgvbW0uaD4KKwordHlwZWRlZiBzdHJ1 Y3QgdGxiX2hvb2tfc3RydWN0IHsKKwl2b2lkICgqZmx1c2hfdGxiKSggdm9pZCApOworCXZvaWQg KCpmbHVzaF90bGJfYWxsKSggdm9pZCApOworCXZvaWQgKCpmbHVzaF90bGJfbW0pKCBzdHJ1Y3Qg bW1fc3RydWN0ICptbSApOworCXZvaWQgKCpmbHVzaF90bGJfcGFnZSkoIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLAorCQkJCXVuc2lnbmVkIGxvbmcgYWRkciApOworCXZvaWQgKCpmbHVzaF90 bGJfcmFuZ2UpKCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJCQl1bnNpZ25lZCBsb25n IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCApOworCXZvaWQgKCpmbHVzaF90bGJfa2VybmVsX3Jh bmdlKSggdW5zaWduZWQgbG9uZyBzdGFydCwKKwkJCQl1bnNpZ25lZCBsb25nIGVuZCApOworCXZv aWQgKCpmbHVzaF90bGJfcGd0YWJsZXMpKCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJCQl1bnNp Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCApOworCisJc3RydWN0IHRsYl9ob29r X3N0cnVjdCAqbmV4dDsKKwlzdHJ1Y3QgdGxiX2hvb2tfc3RydWN0ICpsYXN0OworfSB0bGJfaG9v a190OworCitleHRlcm4gdGxiX2hvb2tfdCAqdGxiX2hvb2tfcm9vdDsKKworZXh0ZXJuIGludCBy ZWdpc3Rlcl90bGJfaG9vayggdGxiX2hvb2tfdCAqaG9vayApOworZXh0ZXJuIGludCB1bnJlZ2lz dGVyX3RsYl9ob29rKCB0bGJfaG9va190ICpob29rICk7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBm bHVzaF90bGJfaG9vayggdm9pZCApCit7CisJdGxiX2hvb2tfdCAqaG9vayA9IHRsYl9ob29rX3Jv b3Q7CisKKwl3aGlsZSggaG9vayApCisJeworCQlpZiggaG9vay0+Zmx1c2hfdGxiICkKKwkJCWhv b2stPmZsdXNoX3RsYiggKTsKKwkJaG9vayA9IGhvb2stPm5leHQ7CisJfQorfQorCisKK3N0YXRp YyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfYWxsX2hvb2soIHZvaWQgKQoreworCXRsYl9ob29rX3Qg Kmhvb2sgPSB0bGJfaG9va19yb290OworCisJd2hpbGUoIGhvb2sgKQorCXsKKwkJaWYoIGhvb2st PmZsdXNoX3RsYl9hbGwgKQorCQkJaG9vay0+Zmx1c2hfdGxiX2FsbCggKTsKKwkJaG9vayA9IGhv b2stPm5leHQ7CisJfQorfQorCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfbW1faG9v ayggc3RydWN0IG1tX3N0cnVjdCAqbW0gKQoreworCXRsYl9ob29rX3QgKmhvb2sgPSB0bGJfaG9v a19yb290OworCisJd2hpbGUoIGhvb2sgKQorCXsKKwkJaWYoIGhvb2stPmZsdXNoX3RsYl9tbSAp CisJCQlob29rLT5mbHVzaF90bGJfbW0oIG1tICk7CisJCWhvb2sgPSBob29rLT5uZXh0OworCX0K K30KKworCitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX3BhZ2VfaG9vayggc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEsCisJCQkJdW5zaWduZWQgbG9uZyBhZGRyICkKK3sKKwl0bGJfaG9v a190ICpob29rID0gdGxiX2hvb2tfcm9vdDsKKworCXdoaWxlKCBob29rICkKKwl7CisJCWlmKCBo b29rLT5mbHVzaF90bGJfcGFnZSApCisJCQlob29rLT5mbHVzaF90bGJfcGFnZSggdm1hLCBhZGRy ICk7CisJCWhvb2sgPSBob29rLT5uZXh0OworCX0KK30KKworCitzdGF0aWMgaW5saW5lIHZvaWQg Zmx1c2hfdGxiX3JhbmdlX2hvb2soIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQkJCXVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kICkKK3sKKwl0bGJfaG9va190ICpo b29rID0gdGxiX2hvb2tfcm9vdDsKKworCXdoaWxlKCBob29rICkKKwl7CisJCWlmKCBob29rLT5m bHVzaF90bGJfcmFuZ2UgKQorCQkJaG9vay0+Zmx1c2hfdGxiX3JhbmdlKCB2bWEsIHN0YXJ0LCBl bmQgKTsKKwkJaG9vayA9IGhvb2stPm5leHQ7CisJfQorfQorCisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBmbHVzaF90bGJfa2VybmVsX3JhbmdlX2hvb2soIHVuc2lnbmVkIGxvbmcgc3RhcnQsCisJCQkJ dW5zaWduZWQgbG9uZyBlbmQgKQoreworCXRsYl9ob29rX3QgKmhvb2sgPSB0bGJfaG9va19yb290 OworCisJd2hpbGUoIGhvb2spCisJeworCQlpZiggaG9vay0+Zmx1c2hfdGxiX2tlcm5lbF9yYW5n ZSApCisJCQlob29rLT5mbHVzaF90bGJfa2VybmVsX3JhbmdlKCBzdGFydCwgZW5kICk7CisJCWhv b2sgPSBob29rLT5uZXh0OworCX0KK30KKworCitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxi X3BndGFibGVzX2hvb2soIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAorCQkJCXVuc2lnbmVkIGxvbmcg c3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kICkKK3sKKwl0bGJfaG9va190ICpob29rID0gdGxiX2hv b2tfcm9vdDsKKworCXdoaWxlKCBob29rICkKKwl7CisJCWlmKCBob29rLT5mbHVzaF90bGJfcGd0 YWJsZXMgKQorCQkJaG9vay0+Zmx1c2hfdGxiX3BndGFibGVzKCBtbSwgc3RhcnQsIGVuZCApOwor CQlob29rID0gaG9vay0+bmV4dDsKKwl9Cit9CisKKyNlbmRpZiAvKiBfTElOVVhfVExCSE9PS19I ICovCmRpZmYgLXVyUCBsaW51eC0yLjUuNTkvbW0vTWFrZWZpbGUgbGludXgtMi41LjU5X3BhdGNo ZWQvbW0vTWFrZWZpbGUKLS0tIGxpbnV4LTIuNS41OS9tbS9NYWtlZmlsZQlGcmkgSmFuIDE3IDAz OjIyOjIwIDIwMDMKKysrIGxpbnV4LTIuNS41OV9wYXRjaGVkL21tL01ha2VmaWxlCVdlZCBKYW4g MjIgMjI6MzQ6MDYgMjAwMwpAQCAtMiw3ICsyLDggQEAKICMgTWFrZWZpbGUgZm9yIHRoZSBsaW51 eCBtZW1vcnkgbWFuYWdlci4KICMKIAotZXhwb3J0LW9ianMgOj0gc2htZW0ubyBmaWxlbWFwLm8g bWVtcG9vbC5vIHBhZ2VfYWxsb2MubyBwYWdlLXdyaXRlYmFjay5vCitleHBvcnQtb2JqcyAJCTo9 IHNobWVtLm8gZmlsZW1hcC5vIG1lbXBvb2wubyBwYWdlX2FsbG9jLm8gcGFnZS13cml0ZWJhY2su byBcCisJCQkgICB0bGJob29rLm8KIAogbW11LXkJCQk6PSBub21tdS5vCiBtbXUtJChDT05GSUdf TU1VKQk6PSBmcmVtYXAubyBoaWdobWVtLm8gbWFkdmlzZS5vIG1lbW9yeS5vIG1pbmNvcmUubyBc CkBAIC0xMSw2ICsxMiw2IEBACiAKIG9iai15CQkJOj0gYm9vdG1lbS5vIGZpbGVtYXAubyBtZW1w b29sLm8gb29tX2tpbGwubyBcCiAJCQkgICBwYWdlX2FsbG9jLm8gcGFnZS13cml0ZWJhY2subyBw ZGZsdXNoLm8gcmVhZGFoZWFkLm8gXAotCQkJICAgc2xhYi5vIHN3YXAubyB0cnVuY2F0ZS5vIHZj YWNoZS5vIHZtc2Nhbi5vICQobW11LXkpCisJCQkgICBzbGFiLm8gc3dhcC5vIHRsYmhvb2subyB0 cnVuY2F0ZS5vIHZjYWNoZS5vIHZtc2Nhbi5vICQobW11LXkpCiAKIG9iai0kKENPTkZJR19TV0FQ KQkrPSBwYWdlX2lvLm8gc3dhcF9zdGF0ZS5vIHN3YXBmaWxlLm8KZGlmZiAtdXJQIGxpbnV4LTIu NS41OS9tbS90bGJob29rLmMgbGludXgtMi41LjU5X3BhdGNoZWQvbW0vdGxiaG9vay5jCi0tLSBs aW51eC0yLjUuNTkvbW0vdGxiaG9vay5jCVRodSBKYW4gIDEgMDE6MDA6MDAgMTk3MAorKysgbGlu dXgtMi41LjU5X3BhdGNoZWQvbW0vdGxiaG9vay5jCVdlZCBKYW4gMjIgMjI6Mzg6NDIgMjAwMwpA QCAtMCwwICsxLDcwIEBACisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGlu dXgvdGxiaG9vay5oPgorCitzdGF0aWMgc3BpbmxvY2tfdCB0bGJfaG9va19sb2NrID0gU1BJTl9M T0NLX1VOTE9DS0VEOworCit0bGJfaG9va190ICp0bGJfaG9va19yb290ID0gTlVMTDsKKworCisv KiByZWdpc3RlciBob29rcyBmb3IgdGhlIGZsdXNoX3RsYiogZnVuY3Rpb25zICovCitpbnQgcmVn aXN0ZXJfdGxiX2hvb2soIHRsYl9ob29rX3QgKmhvb2sgKQoreworCXRsYl9ob29rX3QgKmxhc3Q7 CisKKwlpZiggIWhvb2sgKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWhvb2stPm5leHQgPSBOVUxM OworCisJLy8gbG9jayB0aGUgdGxiX2hvb2tfc3RydWN0IHRvIGF2b2lkIHJhY2UgY29uZGl0aW9u cworCXNwaW5fbG9jayggJnRsYl9ob29rX2xvY2sgKTsKKworCWlmKCB0bGJfaG9va19yb290ICkK Kwl7CisJCWxhc3QgPSB0bGJfaG9va19yb290LT5sYXN0OworCQl0bGJfaG9va19yb290LT5sYXN0 ID0gaG9vazsKKworCQlob29rLT5sYXN0ID0gbGFzdDsKKwkJbGFzdC0+bmV4dCA9IGhvb2s7CisJ fSBlbHNlIHsKKwkJaG9vay0+bGFzdCA9IGhvb2s7CisJCXRsYl9ob29rX3Jvb3QgPSBob29rOwor CX0KKworCXNwaW5fdW5sb2NrKCAmdGxiX2hvb2tfbG9jayApOworCisJcmV0dXJuIDA7Cit9CisK KworLyogdW5yZWdpc3RlciBob29rcyBmb3IgdGhlIGZsdXNoX3RsYiogZnVuY3Rpb25zICovCitp bnQgdW5yZWdpc3Rlcl90bGJfaG9vayggdGxiX2hvb2tfdCAqaG9vayApCit7CisJaWYoICFob29r ICkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvLyBsb2NrIHRoZSB0bGJfaG9va19zdHJ1Y3QgdG8g YXZvaWQgcmFjZSBjb25kaXRpb25zCisJc3Bpbl9sb2NrKCAmdGxiX2hvb2tfbG9jayApOworCisJ aWYoIGhvb2sgPT0gdGxiX2hvb2tfcm9vdCApCisJeworCQl0bGJfaG9va19yb290ID0gaG9vay0+ bmV4dDsKKwl9IGVsc2UgeworCQlob29rLT5sYXN0LT5uZXh0ID0gaG9vay0+bmV4dDsKKwl9CisK KwlpZiggaG9vay0+bmV4dCApCisJeworCQlob29rLT5uZXh0LT5sYXN0ID0gaG9vay0+bGFzdDsK Kwl9IGVsc2UgaWYoIHRsYl9ob29rX3Jvb3QgKSB7CisJCXRsYl9ob29rX3Jvb3QtPmxhc3QgPSBo b29rLT5sYXN0OworCX0KKworCXNwaW5fdW5sb2NrKCAmdGxiX2hvb2tfbG9jayApOworCisJcmV0 dXJuIDA7Cit9CisKKworRVhQT1JUX1NZTUJPTCggcmVnaXN0ZXJfdGxiX2hvb2sgKTsKK0VYUE9S VF9TWU1CT0woIHVucmVnaXN0ZXJfdGxiX2hvb2sgKTsK ---MOQ10434182524780341329d107c49af7a585e4ca6c90 Content-Type: application/octet-stream; name="tlbhook_i386.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tlbhook_i386.patch" ZGlmZiAtdXJQIGxpbnV4LTIuNS41OS9hcmNoL2kzODYva2VybmVsL3NtcC5jIGxpbnV4LTIuNS41 OV9wYXRjaGVkL2FyY2gvaTM4Ni9rZXJuZWwvc21wLmMKLS0tIGxpbnV4LTIuNS41OS9hcmNoL2kz ODYva2VybmVsL3NtcC5jCUZyaSBKYW4gMTcgMDM6MjE6MzggMjAwMworKysgbGludXgtMi41LjU5 X3BhdGNoZWQvYXJjaC9pMzg2L2tlcm5lbC9zbXAuYwlXZWQgSmFuIDIyIDIzOjE5OjQ1IDIwMDMK QEAgLTMyNyw3ICszMjcsNyBAQAogCQkJaWYgKGZsdXNoX3ZhID09IEZMVVNIX0FMTCkKIAkJCQls b2NhbF9mbHVzaF90bGIoKTsKIAkJCWVsc2UKLQkJCQlfX2ZsdXNoX3RsYl9vbmUoZmx1c2hfdmEp OworCQkJCWxvY2FsX2ZsdXNoX3RsYl9vbmUoZmx1c2hfdmEpOwogCQl9IGVsc2UKIAkJCWxlYXZl X21tKGNwdSk7CiAJfQpAQCAtMzgyLDcgKzM4Miw3IEBACiAJc3Bpbl91bmxvY2soJnRsYnN0YXRl X2xvY2spOwogfQogCQotdm9pZCBmbHVzaF90bGJfY3VycmVudF90YXNrKHZvaWQpCit2b2lkIHNt cF9mbHVzaF90bGIodm9pZCkKIHsKIAlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IGN1cnJlbnQtPm1t OwogCXVuc2lnbmVkIGxvbmcgY3B1X21hc2s7CkBAIC0zOTYsNyArMzk2LDcgQEAKIAlwcmVlbXB0 X2VuYWJsZSgpOwogfQogCi12b2lkIGZsdXNoX3RsYl9tbSAoc3RydWN0IG1tX3N0cnVjdCAqIG1t KQordm9pZCBzbXBfZmx1c2hfdGxiX21tIChzdHJ1Y3QgbW1fc3RydWN0ICogbW0pCiB7CiAJdW5z aWduZWQgbG9uZyBjcHVfbWFzazsKIApAQCAtNDE1LDcgKzQxNSw3IEBACiAJcHJlZW1wdF9lbmFi bGUoKTsKIH0KIAotdm9pZCBmbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2 bWEsIHVuc2lnbmVkIGxvbmcgdmEpCit2b2lkIHNtcF9mbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgdmEpCiB7CiAJc3RydWN0IG1tX3N0cnVj dCAqbW0gPSB2bWEtPnZtX21tOwogCXVuc2lnbmVkIGxvbmcgY3B1X21hc2s7CkBAIC00MjUsNyAr NDI1LDcgQEAKIAogCWlmIChjdXJyZW50LT5hY3RpdmVfbW0gPT0gbW0pIHsKIAkJaWYoY3VycmVu dC0+bW0pCi0JCQlfX2ZsdXNoX3RsYl9vbmUodmEpOworCQkJbG9jYWxfZmx1c2hfdGxiX29uZSh2 YSk7CiAJCSBlbHNlCiAJCSAJbGVhdmVfbW0oc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIAl9CkBAIC00 NDAsNyArNDQwLDcgQEAKIHsKIAl1bnNpZ25lZCBsb25nIGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQo KTsKIAotCV9fZmx1c2hfdGxiX2FsbCgpOworCWxvY2FsX2ZsdXNoX3RsYl9hbGwoKTsKIAlpZiAo Y3B1X3RsYnN0YXRlW2NwdV0uc3RhdGUgPT0gVExCU1RBVEVfTEFaWSkKIAkJbGVhdmVfbW0oY3B1 KTsKIH0KQEAgLTQ1MCw3ICs0NTAsNyBAQAogCWRvX2ZsdXNoX3RsYl9hbGxfbG9jYWwoKTsKIH0K IAotdm9pZCBmbHVzaF90bGJfYWxsKHZvaWQpCit2b2lkIHNtcF9mbHVzaF90bGJfYWxsKHZvaWQp CiB7CiAJc21wX2NhbGxfZnVuY3Rpb24gKGZsdXNoX3RsYl9hbGxfaXBpLDAsMSwxKTsKIApkaWZm IC11clAgbGludXgtMi41LjU5L2FyY2gvaTM4Ni9tYWNoLXZveWFnZXIvdm95YWdlcl9zbXAuYyBs aW51eC0yLjUuNTlfcGF0Y2hlZC9hcmNoL2kzODYvbWFjaC12b3lhZ2VyL3ZveWFnZXJfc21wLmMK LS0tIGxpbnV4LTIuNS41OS9hcmNoL2kzODYvbWFjaC12b3lhZ2VyL3ZveWFnZXJfc21wLmMJRnJp IEphbiAxNyAwMzoyMjowMiAyMDAzCisrKyBsaW51eC0yLjUuNTlfcGF0Y2hlZC9hcmNoL2kzODYv bWFjaC12b3lhZ2VyL3ZveWFnZXJfc21wLmMJV2VkIEphbiAyMiAyMzoxODowMyAyMDAzCkBAIC04 OTIsNyArODkyLDcgQEAKIAkJCWlmIChmbHVzaF92YSA9PSBGTFVTSF9BTEwpCiAJCQkJbG9jYWxf Zmx1c2hfdGxiKCk7CiAJCQllbHNlCi0JCQkJX19mbHVzaF90bGJfb25lKGZsdXNoX3ZhKTsKKwkJ CQlsb2NhbF9mbHVzaF90bGJfb25lKGZsdXNoX3ZhKTsKIAkJfSBlbHNlCiAJCQlsZWF2ZV9tbShj cHUpOwogCX0KQEAgLTk0OCw3ICs5NDgsNyBAQAogfQogCiB2b2lkCi1mbHVzaF90bGJfY3VycmVu dF90YXNrKHZvaWQpCitzbXBfZmx1c2hfdGxiKHZvaWQpCiB7CiAJc3RydWN0IG1tX3N0cnVjdCAq bW0gPSBjdXJyZW50LT5tbTsKIAl1bnNpZ25lZCBsb25nIGNwdV9tYXNrOwpAQCAtOTY1LDcgKzk2 NSw3IEBACiAKIAogdm9pZAotZmx1c2hfdGxiX21tIChzdHJ1Y3QgbW1fc3RydWN0ICogbW0pCitz bXBfZmx1c2hfdGxiX21tIChzdHJ1Y3QgbW1fc3RydWN0ICogbW0pCiB7CiAJdW5zaWduZWQgbG9u ZyBjcHVfbWFzazsKIApAQCAtOTg1LDcgKzk4NSw3IEBACiAJcHJlZW1wdF9lbmFibGUoKTsKIH0K IAotdm9pZCBmbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2ln bmVkIGxvbmcgdmEpCit2b2lkIHNtcF9mbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgdmEpCiB7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW0gPSB2 bWEtPnZtX21tOwogCXVuc2lnbmVkIGxvbmcgY3B1X21hc2s7CkBAIC05OTUsNyArOTk1LDcgQEAK IAljcHVfbWFzayA9IG1tLT5jcHVfdm1fbWFzayAmIH4oMSA8PCBzbXBfcHJvY2Vzc29yX2lkKCkp OwogCWlmIChjdXJyZW50LT5hY3RpdmVfbW0gPT0gbW0pIHsKIAkJaWYoY3VycmVudC0+bW0pCi0J CQlfX2ZsdXNoX3RsYl9vbmUodmEpOworCQkJbG9jYWxfZmx1c2hfdGxiX29uZSh2YSk7CiAJCSBl bHNlCiAJCSAJbGVhdmVfbW0oc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIAl9CkBAIC0xMjE3LDcgKzEy MTcsNyBAQAogewogCXVuc2lnbmVkIGxvbmcgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogCi0J X19mbHVzaF90bGJfYWxsKCk7CisJbG9jYWxfZmx1c2hfdGxiX2FsbCgpOwogCWlmIChjcHVfdGxi c3RhdGVbY3B1XS5zdGF0ZSA9PSBUTEJTVEFURV9MQVpZKQogCQlsZWF2ZV9tbShjcHUpOwogfQpA QCAtMTIzMSw3ICsxMjMxLDcgQEAKIAogLyogZmx1c2ggdGhlIFRMQiBvZiBldmVyeSBhY3RpdmUg Q1BVIGluIHRoZSBzeXN0ZW0gKi8KIHZvaWQKLWZsdXNoX3RsYl9hbGwodm9pZCkKK3NtcF9mbHVz aF90bGJfYWxsKHZvaWQpCiB7CiAJc21wX2NhbGxfZnVuY3Rpb24gKGZsdXNoX3RsYl9hbGxfZnVu Y3Rpb24sIDAsIDEsIDEpOwogCmRpZmYgLXVyUCBsaW51eC0yLjUuNTkvYXJjaC9pMzg2L21tL2hp Z2htZW0uYyBsaW51eC0yLjUuNTlfcGF0Y2hlZC9hcmNoL2kzODYvbW0vaGlnaG1lbS5jCi0tLSBs aW51eC0yLjUuNTkvYXJjaC9pMzg2L21tL2hpZ2htZW0uYwlGcmkgSmFuIDE3IDAzOjIyOjE0IDIw MDMKKysrIGxpbnV4LTIuNS41OV9wYXRjaGVkL2FyY2gvaTM4Ni9tbS9oaWdobWVtLmMJV2VkIEph biAyMiAyMzoxNDozMyAyMDAzCkBAIC00Miw3ICs0Miw3IEBACiAJCUJVRygpOwogI2VuZGlmCiAJ c2V0X3B0ZShrbWFwX3B0ZS1pZHgsIG1rX3B0ZShwYWdlLCBrbWFwX3Byb3QpKTsKLQlfX2ZsdXNo X3RsYl9vbmUodmFkZHIpOworCWxvY2FsX2ZsdXNoX3RsYl9vbmUodmFkZHIpOwogCiAJcmV0dXJu ICh2b2lkKikgdmFkZHI7CiB9CkBAIC02Niw3ICs2Niw3IEBACiAJICogdGhpcyBwdGUgd2l0aG91 dCBmaXJzdCByZW1hcCBpdAogCSAqLwogCXB0ZV9jbGVhcihrbWFwX3B0ZS1pZHgpOwotCV9fZmx1 c2hfdGxiX29uZSh2YWRkcik7CisJbG9jYWxfZmx1c2hfdGxiX29uZSh2YWRkcik7CiAjZW5kaWYK IAogCWRlY19wcmVlbXB0X2NvdW50KCk7CmRpZmYgLXVyUCBsaW51eC0yLjUuNTkvYXJjaC9pMzg2 L21tL2luaXQuYyBsaW51eC0yLjUuNTlfcGF0Y2hlZC9hcmNoL2kzODYvbW0vaW5pdC5jCi0tLSBs aW51eC0yLjUuNTkvYXJjaC9pMzg2L21tL2luaXQuYwlGcmkgSmFuIDE3IDAzOjIyOjI3IDIwMDMK KysrIGxpbnV4LTIuNS41OV9wYXRjaGVkL2FyY2gvaTM4Ni9tbS9pbml0LmMJV2VkIEphbiAyMiAy MzoxNTowNSAyMDAzCkBAIC0zNjksNyArMzY5LDcgQEAKIAlpZiAoY3B1X2hhc19wYWUpCiAJCXNl dF9pbl9jcjQoWDg2X0NSNF9QQUUpOwogI2VuZGlmCi0JX19mbHVzaF90bGJfYWxsKCk7CisJbG9j YWxfZmx1c2hfdGxiX2FsbCgpOwogCiAJa21hcF9pbml0KCk7CiAJem9uZV9zaXplc19pbml0KCk7 CmRpZmYgLXVyUCBsaW51eC0yLjUuNTkvYXJjaC9pMzg2L21tL3BhZ2VhdHRyLmMgbGludXgtMi41 LjU5X3BhdGNoZWQvYXJjaC9pMzg2L21tL3BhZ2VhdHRyLmMKLS0tIGxpbnV4LTIuNS41OS9hcmNo L2kzODYvbW0vcGFnZWF0dHIuYwlGcmkgSmFuIDE3IDAzOjIyOjA0IDIwMDMKKysrIGxpbnV4LTIu NS41OV9wYXRjaGVkL2FyY2gvaTM4Ni9tbS9wYWdlYXR0ci5jCVdlZCBKYW4gMjIgMjM6MTQ6MDEg MjAwMwpAQCAtNTMsNyArNTMsNyBAQAogCS8qIEZsdXNoIGFsbCB0byB3b3JrIGFyb3VuZCBFcnJh dGEgaW4gZWFybHkgYXRobG9ucyByZWdhcmRpbmcgCiAJICogbGFyZ2UgcGFnZSBmbHVzaGluZy4g CiAJICovCi0JX19mbHVzaF90bGJfYWxsKCk7IAkKKwlsb2NhbF9mbHVzaF90bGJfYWxsKCk7IAkK IH0KIAogc3RhdGljIHZvaWQgc2V0X3BtZF9wdGUocHRlX3QgKmtwdGUsIHVuc2lnbmVkIGxvbmcg YWRkcmVzcywgcHRlX3QgcHRlKSAKZGlmZiAtdXJQIGxpbnV4LTIuNS41OS9hcmNoL2kzODYvbW0v cGd0YWJsZS5jIGxpbnV4LTIuNS41OV9wYXRjaGVkL2FyY2gvaTM4Ni9tbS9wZ3RhYmxlLmMKLS0t IGxpbnV4LTIuNS41OS9hcmNoL2kzODYvbW0vcGd0YWJsZS5jCUZyaSBKYW4gMTcgMDM6MjM6MDEg MjAwMworKysgbGludXgtMi41LjU5X3BhdGNoZWQvYXJjaC9pMzg2L21tL3BndGFibGUuYwlXZWQg SmFuIDIyIDIzOjE1OjMyIDIwMDMKQEAgLTgxLDcgKzgxLDcgQEAKIAkgKiBJdCdzIGVub3VnaCB0 byBmbHVzaCB0aGlzIG9uZSBtYXBwaW5nLgogCSAqIChQR0UgbWFwcGluZ3MgZ2V0IGZsdXNoZWQg YXMgd2VsbCkKIAkgKi8KLQlfX2ZsdXNoX3RsYl9vbmUodmFkZHIpOworCWxvY2FsX2ZsdXNoX3Rs Yl9vbmUodmFkZHIpOwogfQogCiAvKgpAQCAtMTE0LDcgKzExNCw3IEBACiAJICogSXQncyBlbm91 Z2ggdG8gZmx1c2ggdGhpcyBvbmUgbWFwcGluZy4KIAkgKiAoUEdFIG1hcHBpbmdzIGdldCBmbHVz aGVkIGFzIHdlbGwpCiAJICovCi0JX19mbHVzaF90bGJfb25lKHZhZGRyKTsKKwlsb2NhbF9mbHVz aF90bGJfb25lKHZhZGRyKTsKIH0KCiB2b2lkIF9fc2V0X2ZpeG1hcCAoZW51bSBmaXhlZF9hZGRy ZXNzZXMgaWR4LCB1bnNpZ25lZCBsb25nIHBoeXMsIHBncHJvdF90IGZsYWdzKQpkaWZmIC11clAg bGludXgtMi41LjU5L2luY2x1ZGUvYXNtLWkzODYvdGxiZmx1c2guaCBsaW51eC0yLjUuNTlfcGF0 Y2hlZC9pbmNsdWRlL2FzbS1pMzg2L3RsYmZsdXNoLmgKLS0tIGxpbnV4LTIuNS41OS9pbmNsdWRl L2FzbS1pMzg2L3RsYmZsdXNoLmgJRnJpIEphbiAxNyAwMzoyMjo0OSAyMDAzCisrKyBsaW51eC0y LjUuNTlfcGF0Y2hlZC9pbmNsdWRlL2FzbS1pMzg2L3RsYmZsdXNoLmgJV2VkIEphbiAyMiAyMzox MjoxMCAyMDAzCkBAIC0yLDEwICsyLDEwIEBACiAjZGVmaW5lIF9JMzg2X1RMQkZMVVNIX0gKCiAj aW5jbHVkZSA8bGludXgvY29uZmlnLmg+Ci0jaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRl IDxsaW51eC90bGJob29rLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgoKLSNkZWZpbmUg X19mbHVzaF90bGIoKQkJCQkJCQlcCisjZGVmaW5lIGxvY2FsX2ZsdXNoX3RsYigpCQkJCQkJXAog CWRvIHsJCQkJCQkJCVwKIAkJdW5zaWduZWQgaW50IHRtcHJlZzsJCQkJCVwKIAkJCQkJCQkJCVwK QEAgLTM3LDEyICszNywxMiBAQAoKIGV4dGVybiB1bnNpZ25lZCBsb25nIHBna2Vybl9tYXNrOwoK LSMgZGVmaW5lIF9fZmx1c2hfdGxiX2FsbCgpCQkJCQkJXAorIyBkZWZpbmUgbG9jYWxfZmx1c2hf dGxiX2FsbCgpCQkJCQkJXAogCWRvIHsJCQkJCQkJCVwKIAkJaWYgKGNwdV9oYXNfcGdlKQkJCQkJ XAogCQkJX19mbHVzaF90bGJfZ2xvYmFsKCk7CQkJCVwKIAkJZWxzZQkJCQkJCQlcCi0JCQlfX2Zs dXNoX3RsYigpOwkJCQkJXAorCQkJbG9jYWxfZmx1c2hfdGxiKCk7CQkJCVwKIAl9IHdoaWxlICgw KQogCiAjZGVmaW5lIGNwdV9oYXNfaW52bHBnCShib290X2NwdV9kYXRhLng4NiA+IDMpCkBAIC01 MSwxNCArNTEsMTQgQEAKIAlfX2FzbV9fIF9fdm9sYXRpbGVfXygiaW52bHBnICUwIjogOiJtIiAo KihjaGFyICopIGFkZHIpKQogCiAjaWZkZWYgQ09ORklHX1g4Nl9JTlZMUEcKLSMgZGVmaW5lIF9f Zmx1c2hfdGxiX29uZShhZGRyKSBfX2ZsdXNoX3RsYl9zaW5nbGUoYWRkcikKKyMgZGVmaW5lIGxv Y2FsX2ZsdXNoX3RsYl9vbmUoYWRkcikgX19mbHVzaF90bGJfc2luZ2xlKGFkZHIpCiAjZWxzZQot IyBkZWZpbmUgX19mbHVzaF90bGJfb25lKGFkZHIpCQkJCQkJXAorIyBkZWZpbmUgbG9jYWxfZmx1 c2hfdGxiX29uZShhZGRyKQkJCQkJXAogCWRvIHsJCQkJCQkJCVwKIAkJaWYgKGNwdV9oYXNfaW52 bHBnKQkJCQkJXAogCQkJX19mbHVzaF90bGJfc2luZ2xlKGFkZHIpOwkJCVwKIAkJZWxzZQkJCQkJ CQlcCi0JCQlfX2ZsdXNoX3RsYigpOwkJCQkJXAorCQkJbG9jYWxfZmx1c2hfdGxiKCk7CQkJCVwK IAl9IHdoaWxlICgwKQogI2VuZGlmCiAKQEAgLTc5LDQ3ICs3OSw5NCBAQAogCiAjaWZuZGVmIENP TkZJR19TTVAKIAotI2RlZmluZSBmbHVzaF90bGIoKSBfX2ZsdXNoX3RsYigpCi0jZGVmaW5lIGZs dXNoX3RsYl9hbGwoKSBfX2ZsdXNoX3RsYl9hbGwoKQotI2RlZmluZSBsb2NhbF9mbHVzaF90bGIo KSBfX2ZsdXNoX3RsYigpCitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiKHZvaWQpCit7CisJ Zmx1c2hfdGxiX2hvb2soKTsKKwlsb2NhbF9mbHVzaF90bGIoKTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGZsdXNoX3RsYl9hbGwodm9pZCkKK3sKKwlmbHVzaF90bGJfYWxsX2hvb2soKTsKKwls b2NhbF9mbHVzaF90bGJfYWxsKCk7Cit9Cgogc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9t bShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKIHsKKwlmbHVzaF90bGJfbW1faG9vayhtbSk7CiAJaWYg KG1tID09IGN1cnJlbnQtPmFjdGl2ZV9tbSkKLQkJX19mbHVzaF90bGIoKTsKKwkJbG9jYWxfZmx1 c2hfdGxiKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcGFnZShzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAl1bnNpZ25lZCBsb25nIGFkZHIpCiB7CisJZmx1c2hfdGxi X3BhZ2VfaG9vayh2bWEsIGFkZHIpOwogCWlmICh2bWEtPnZtX21tID09IGN1cnJlbnQtPmFjdGl2 ZV9tbSkKLQkJX19mbHVzaF90bGJfb25lKGFkZHIpOworCQlsb2NhbF9mbHVzaF90bGJfb25lKGFk ZHIpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX3JhbmdlKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLAogCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k KQogeworCWZsdXNoX3RsYl9yYW5nZV9ob29rKHZtYSwgc3RhcnQsIGVuZCk7CiAJaWYgKHZtYS0+ dm1fbW0gPT0gY3VycmVudC0+YWN0aXZlX21tKQotCQlfX2ZsdXNoX3RsYigpOworCQlsb2NhbF9m bHVzaF90bGIoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9rZXJuZWxfcmFu Z2UodW5zaWduZWQgbG9uZyBzdGFydCwKKwl1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlmbHVzaF90 bGJfa2VybmVsX3JhbmdlX2hvb2soc3RhcnQsIGVuZCk7CisJbG9jYWxfZmx1c2hfdGxiX2FsbCgp OwogfQogCiAjZWxzZQogCiAjaW5jbHVkZSA8YXNtL3NtcC5oPgogCi0jZGVmaW5lIGxvY2FsX2Zs dXNoX3RsYigpIFwKLQlfX2ZsdXNoX3RsYigpCitleHRlcm4gdm9pZCBzbXBfZmx1c2hfdGxiKHZv aWQpOworZXh0ZXJuIHZvaWQgc21wX2ZsdXNoX3RsYl9hbGwodm9pZCk7CitleHRlcm4gdm9pZCBz bXBfZmx1c2hfdGxiX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKik7CitleHRlcm4gdm9pZCBzbXBfZmx1 c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcpOworCitz dGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiKHZvaWQpCit7CisJZmx1c2hfdGxiX2hvb2soKTsK KwlzbXBfZmx1c2hfdGxiKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfYWxs KHZvaWQpCit7CisJZmx1c2hfdGxiX2FsbF9ob29rKCk7CisJc21wX2ZsdXNoX3RsYl9hbGwoKTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICpt bSkKK3sKKwlmbHVzaF90bGJfbW1faG9vayhtbSk7CisJc21wX2ZsdXNoX3RsYl9tbShtbSk7Cit9 CiAKLWV4dGVybiB2b2lkIGZsdXNoX3RsYl9hbGwodm9pZCk7Ci1leHRlcm4gdm9pZCBmbHVzaF90 bGJfY3VycmVudF90YXNrKHZvaWQpOwotZXh0ZXJuIHZvaWQgZmx1c2hfdGxiX21tKHN0cnVjdCBt bV9zdHJ1Y3QgKik7Ci1leHRlcm4gdm9pZCBmbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKiwgdW5zaWduZWQgbG9uZyk7CitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX3Bh Z2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCisJdW5zaWduZWQgbG9uZyBhZGRyKQorewor CWZsdXNoX3RsYl9wYWdlX2hvb2sodm1hLCBhZGRyKTsKKwlzbXBfZmx1c2hfdGxiX3BhZ2Uodm1h LCBhZGRyKTsKK30KIAotI2RlZmluZSBmbHVzaF90bGIoKQlmbHVzaF90bGJfY3VycmVudF90YXNr KCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICogdm1hLAorCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQorewor CWZsdXNoX3RsYl9yYW5nZV9ob29rKHZtYSwgc3RhcnQsIGVuZCk7CisJc21wX2ZsdXNoX3RsYl9t bSh2bWEtPnZtX21tKTsKK30KIAotc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9yYW5nZShz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk IGxvbmcgZW5kKQorc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UodW5z aWduZWQgbG9uZyBzdGFydCwKKwl1bnNpZ25lZCBsb25nIGVuZCkKIHsKLQlmbHVzaF90bGJfbW0o dm1hLT52bV9tbSk7CisJZmx1c2hfdGxiX2tlcm5lbF9yYW5nZV9ob29rKHN0YXJ0LCBlbmQpOwor CXNtcF9mbHVzaF90bGJfYWxsKCk7CiB9CgogI2RlZmluZSBUTEJTVEFURV9PSwkxCkBAIC0xMzYs MTEgKzE4MywxMCBAQAoKICNlbmRpZgoKLSNkZWZpbmUgZmx1c2hfdGxiX2tlcm5lbF9yYW5nZShz dGFydCwgZW5kKSBmbHVzaF90bGJfYWxsKCkKLQogc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3Rs Yl9wZ3RhYmxlcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJCQkgICAgICB1bnNpZ25lZCBsb25n IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKIHsKKwlmbHVzaF90bGJfcGd0YWJsZXNfaG9vayht bSwgc3RhcnQsIGVuZCk7CiAJLyogaTM4NiBkb2VzIG5vdCBrZWVwIGFueSBwYWdlIHRhYmxlIGNh Y2hlcyBpbiBUTEIgKi8KIH0KCg== ---MOQ10434182524780341329d107c49af7a585e4ca6c90-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/