Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Aug 2010 10:36:52 +0530
From:      "Jayachandran C." <c.jayachandran@gmail.com>
To:        Alan Cox <alc@cs.rice.edu>, mips@freebsd.org
Cc:        "Jayachandran C." <jchandra@freebsd.org>
Subject:   Re: svn commit: r210846 - in head/sys/mips: include mips
Message-ID:  <AANLkTi=FowMNMy87aA2K=120a4L_Fd5GPDH%2BdEPKOsek@mail.gmail.com>
In-Reply-To: <4C5C3A08.500@cs.rice.edu>
References:  <201008041412.o74ECAix092415@svn.freebsd.org> <4C5A569B.9090401@cs.rice.edu> <AANLkTinP7eMNm4yp6T2TTteSvthdgLJOj-ihHrQJ4T49@mail.gmail.com> <AANLkTi=vkG-cntJYYEdhO4AzOO91LB6n%2B45dUSxCMTp3@mail.gmail.com> <4C5BA088.7060105@cs.rice.edu> <AANLkTinxAkRTK8pLRkQ7JwesNkuwmuiRevOZMDpj_aj7@mail.gmail.com> <4C5C3A08.500@cs.rice.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
--0016e64c1dc2cb8ec2048d853700
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On Fri, Aug 6, 2010 at 10:06 PM, Alan Cox <alc@cs.rice.edu> wrote:
> The patch looks good.
>
> While we're talking about software dirty bit emulation, I would encourage
> you to look at two things:
>
> 1. trap.c contains two copies of the same code for emulation. =A0I would
> encourage you to eliminate this duplication by creating a
> pmap_emulate_modified().
>
> 2. Software dirty bit emulation is using pmap_update_page() to invalidate
> the TLB entry on which the modified bit is being set. =A0On a multiproces=
sor,
> this is going to make dirty bit emulation very costly because every
> processor will be interrupted. =A0In principle, it should be possible and
> faster to only flush the TLB entry from the current processor. =A0The oth=
er
> processors can handle this lazily. =A0They either do not have that mappin=
g in
> their TLB, in which case interrupting them was wasted effort, or they do
> have it in their TLB and when they fault on it they'll discover the dirty
> bit is already set. =A0In fact, the emulation code already handles this c=
ase,
> on account of the fact that two processors could simultaneously write to =
the
> same clean page and only one will get the pmap lock first.

I've made the changes suggested, the changes are attached.

The first set of changes just re-arranges the pmap calls that use
smp_rendezvous() on SMP, so that their per-cpu variants are also
available to be called.  The first patch also has an optimization from
Juli's branch, to call pmap_update_page in pmap_kenter only if the pte
is valid.

The second patch makes the changes suggested above. My testing shows
no issues so far, but please let me know if you have any comments.

Thanks,
JC.

--0016e64c1dc2cb8ec2048d853700
Content-Type: text/x-patch; charset=US-ASCII; name="pmap-smp-rendezvous.patch"
Content-Disposition: attachment; filename="pmap-smp-rendezvous.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gcppwhpu0

SW5kZXg6IHN5cy9taXBzL21pcHMvcG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMv
cG1hcC5jCShyZXZpc2lvbiAyMTEwNjgpCisrKyBzeXMvbWlwcy9taXBzL3BtYXAuYwkod29ya2lu
ZyBjb3B5KQpAQCAtNTk1LDU4ICs1OTUsOTcgQEAKIAogI2VuZGlmCiAKK3N0YXRpYyBfX2lubGlu
ZSB2b2lkCitwbWFwX2ludmFsaWRhdGVfYWxsX2xvY2FsKHBtYXBfdCBwbWFwKQoreworCWlmIChw
bWFwID09IGtlcm5lbF9wbWFwKSB7CisJCXRsYl9pbnZhbGlkYXRlX2FsbCgpOworCQlyZXR1cm47
CisJfQorCisJaWYgKHBtYXAtPnBtX2FjdGl2ZSAmIFBDUFVfR0VUKGNwdW1hc2spKQorCQl0bGJf
aW52YWxpZGF0ZV9hbGxfdXNlcihwbWFwKTsKKwllbHNlCisJCXBtYXAtPnBtX2FzaWRbUENQVV9H
RVQoY3B1aWQpXS5nZW4gPSAwOworfQorCisjaWZkZWYgU01QCiBzdGF0aWMgdm9pZAogcG1hcF9p
bnZhbGlkYXRlX2FsbChwbWFwX3QgcG1hcCkKIHsKLSNpZmRlZiBTTVAKLQlzbXBfcmVuZGV6dm91
cygwLCBwbWFwX2ludmFsaWRhdGVfYWxsX2FjdGlvbiwgMCwgKHZvaWQgKilwbWFwKTsKKwlzbXBf
cmVuZGV6dm91cygwLCBwbWFwX2ludmFsaWRhdGVfYWxsX2FjdGlvbiwgMCwgcG1hcCk7CiB9CiAK
IHN0YXRpYyB2b2lkCiBwbWFwX2ludmFsaWRhdGVfYWxsX2FjdGlvbih2b2lkICphcmcpCiB7Ci0J
cG1hcF90IHBtYXAgPSAocG1hcF90KWFyZzsKIAorCXBtYXBfaW52YWxpZGF0ZV9hbGxfbG9jYWwo
KHBtYXBfdClhcmcpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkCitwbWFwX2ludmFsaWRhdGVfYWxs
KHBtYXBfdCBwbWFwKQoreworCisJcG1hcF9pbnZhbGlkYXRlX2FsbF9sb2NhbChwbWFwKTsKK30K
ICNlbmRpZgogCi0JaWYgKHBtYXAgPT0ga2VybmVsX3BtYXApIHsKLQkJdGxiX2ludmFsaWRhdGVf
YWxsKCk7CitzdGF0aWMgX19pbmxpbmUgdm9pZAorcG1hcF9pbnZhbGlkYXRlX3BhZ2VfbG9jYWwo
cG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhKQoreworCisJaWYgKGlzX2tlcm5lbF9wbWFwKHBt
YXApKSB7CisJCXRsYl9pbnZhbGlkYXRlX2FkZHJlc3MocG1hcCwgdmEpOwogCQlyZXR1cm47CiAJ
fQotCi0JaWYgKHBtYXAtPnBtX2FjdGl2ZSAmIFBDUFVfR0VUKGNwdW1hc2spKQotCQl0bGJfaW52
YWxpZGF0ZV9hbGxfdXNlcihwbWFwKTsKLQllbHNlCisJaWYgKHBtYXAtPnBtX2FzaWRbUENQVV9H
RVQoY3B1aWQpXS5nZW4gIT0gUENQVV9HRVQoYXNpZF9nZW5lcmF0aW9uKSkKKwkJcmV0dXJuOwor
CWVsc2UgaWYgKCEocG1hcC0+cG1fYWN0aXZlICYgUENQVV9HRVQoY3B1bWFzaykpKSB7CiAJCXBt
YXAtPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5nZW4gPSAwOworCQlyZXR1cm47CisJfQorCXRs
Yl9pbnZhbGlkYXRlX2FkZHJlc3MocG1hcCwgdmEpOwogfQogCisjaWZkZWYgU01QCiBzdHJ1Y3Qg
cG1hcF9pbnZhbGlkYXRlX3BhZ2VfYXJnIHsKIAlwbWFwX3QgcG1hcDsKIAl2bV9vZmZzZXRfdCB2
YTsKIH07CiAKLXN0YXRpYyBfX2lubGluZSB2b2lkCitzdGF0aWMgdm9pZAogcG1hcF9pbnZhbGlk
YXRlX3BhZ2UocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhKQogewotI2lmZGVmIFNNUAogCXN0
cnVjdCBwbWFwX2ludmFsaWRhdGVfcGFnZV9hcmcgYXJnOwogCiAJYXJnLnBtYXAgPSBwbWFwOwog
CWFyZy52YSA9IHZhOwotCi0Jc21wX3JlbmRlenZvdXMoMCwgcG1hcF9pbnZhbGlkYXRlX3BhZ2Vf
YWN0aW9uLCAwLCAodm9pZCAqKSZhcmcpOworCXNtcF9yZW5kZXp2b3VzKDAsIHBtYXBfaW52YWxp
ZGF0ZV9wYWdlX2FjdGlvbiwgMCwgJmFyZyk7CiB9CiAKIHN0YXRpYyB2b2lkCiBwbWFwX2ludmFs
aWRhdGVfcGFnZV9hY3Rpb24odm9pZCAqYXJnKQogewotCXBtYXBfdCBwbWFwID0gKChzdHJ1Y3Qg
cG1hcF9pbnZhbGlkYXRlX3BhZ2VfYXJnICopYXJnKS0+cG1hcDsKLQl2bV9vZmZzZXRfdCB2YSA9
ICgoc3RydWN0IHBtYXBfaW52YWxpZGF0ZV9wYWdlX2FyZyAqKWFyZyktPnZhOworCXN0cnVjdCBw
bWFwX2ludmFsaWRhdGVfcGFnZV9hcmcgKnAgPSBhcmc7CiAKKwlwbWFwX2ludmFsaWRhdGVfcGFn
ZV9sb2NhbChwLT5wbWFwLCBwLT52YSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQKK3BtYXBfaW52
YWxpZGF0ZV9wYWdlKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSkKK3sKKworCXBtYXBfaW52
YWxpZGF0ZV9wYWdlX2xvY2FsKHBtYXAsIHZhKTsKK30KICNlbmRpZgogCitzdGF0aWMgX19pbmxp
bmUgdm9pZAorcG1hcF91cGRhdGVfcGFnZV9sb2NhbChwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3Qg
dmEsIHB0X2VudHJ5X3QgcHRlKQoreworCiAJaWYgKGlzX2tlcm5lbF9wbWFwKHBtYXApKSB7Ci0J
CXRsYl9pbnZhbGlkYXRlX2FkZHJlc3MocG1hcCwgdmEpOworCQl0bGJfdXBkYXRlKHBtYXAsIHZh
LCBwdGUpOwogCQlyZXR1cm47CiAJfQogCWlmIChwbWFwLT5wbV9hc2lkW1BDUFVfR0VUKGNwdWlk
KV0uZ2VuICE9IFBDUFVfR0VUKGFzaWRfZ2VuZXJhdGlvbikpCkBAIC02NTUsOSArNjk0LDEwIEBA
CiAJCXBtYXAtPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5nZW4gPSAwOwogCQlyZXR1cm47CiAJ
fQotCXRsYl9pbnZhbGlkYXRlX2FkZHJlc3MocG1hcCwgdmEpOworCXRsYl91cGRhdGUocG1hcCwg
dmEsIHB0ZSk7CiB9CiAKKyNpZmRlZiBTTVAKIHN0cnVjdCBwbWFwX3VwZGF0ZV9wYWdlX2FyZyB7
CiAJcG1hcF90IHBtYXA7CiAJdm1fb2Zmc2V0X3QgdmE7CkBAIC02NjcsMzcgKzcwNywzMSBAQAog
dm9pZAogcG1hcF91cGRhdGVfcGFnZShwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIHB0X2Vu
dHJ5X3QgcHRlKQogewotI2lmZGVmIFNNUAogCXN0cnVjdCBwbWFwX3VwZGF0ZV9wYWdlX2FyZyBh
cmc7CiAKIAlhcmcucG1hcCA9IHBtYXA7CiAJYXJnLnZhID0gdmE7CiAJYXJnLnB0ZSA9IHB0ZTsK
IAotCXNtcF9yZW5kZXp2b3VzKDAsIHBtYXBfdXBkYXRlX3BhZ2VfYWN0aW9uLCAwLCAodm9pZCAq
KSZhcmcpOworCXNtcF9yZW5kZXp2b3VzKDAsIHBtYXBfdXBkYXRlX3BhZ2VfYWN0aW9uLCAwLCAm
YXJnKTsKIH0KIAogc3RhdGljIHZvaWQKIHBtYXBfdXBkYXRlX3BhZ2VfYWN0aW9uKHZvaWQgKmFy
ZykKIHsKLQlwbWFwX3QgcG1hcCA9ICgoc3RydWN0IHBtYXBfdXBkYXRlX3BhZ2VfYXJnICopYXJn
KS0+cG1hcDsKLQl2bV9vZmZzZXRfdCB2YSA9ICgoc3RydWN0IHBtYXBfdXBkYXRlX3BhZ2VfYXJn
ICopYXJnKS0+dmE7Ci0JcHRfZW50cnlfdCBwdGUgPSAoKHN0cnVjdCBwbWFwX3VwZGF0ZV9wYWdl
X2FyZyAqKWFyZyktPnB0ZTsKKwlzdHJ1Y3QgcG1hcF91cGRhdGVfcGFnZV9hcmcgKnAgPSBhcmc7
CiAKLSNlbmRpZgotCWlmIChpc19rZXJuZWxfcG1hcChwbWFwKSkgewotCQl0bGJfdXBkYXRlKHBt
YXAsIHZhLCBwdGUpOwotCQlyZXR1cm47Ci0JfQotCWlmIChwbWFwLT5wbV9hc2lkW1BDUFVfR0VU
KGNwdWlkKV0uZ2VuICE9IFBDUFVfR0VUKGFzaWRfZ2VuZXJhdGlvbikpCi0JCXJldHVybjsKLQll
bHNlIGlmICghKHBtYXAtPnBtX2FjdGl2ZSAmIFBDUFVfR0VUKGNwdW1hc2spKSkgewotCQlwbWFw
LT5wbV9hc2lkW1BDUFVfR0VUKGNwdWlkKV0uZ2VuID0gMDsKLQkJcmV0dXJuOwotCX0KLQl0bGJf
dXBkYXRlKHBtYXAsIHZhLCBwdGUpOworCXBtYXBfdXBkYXRlX3BhZ2VfbG9jYWwocC0+cG1hcCwg
cC0+dmEsIHAtPnB0ZSk7CiB9CisjZWxzZQordm9pZAorcG1hcF91cGRhdGVfcGFnZShwbWFwX3Qg
cG1hcCwgdm1fb2Zmc2V0X3QgdmEsIHB0X2VudHJ5X3QgcHRlKQorewogCisJcG1hcF91cGRhdGVf
cGFnZV9sb2NhbChwbWFwLCB2YSwgcHRlKTsKK30KKyNlbmRpZgorCiAvKgogICoJUm91dGluZToJ
cG1hcF9leHRyYWN0CiAgKglGdW5jdGlvbjoKQEAgLTc3Nyw3ICs4MTEsOCBAQAogCXB0ZSA9IHBt
YXBfcHRlKGtlcm5lbF9wbWFwLCB2YSk7CiAJb3B0ZSA9ICpwdGU7CiAJKnB0ZSA9IG5wdGU7Ci0J
cG1hcF91cGRhdGVfcGFnZShrZXJuZWxfcG1hcCwgdmEsIG5wdGUpOworCWlmIChwdGVfdGVzdCgm
b3B0ZSwgUFRFX1YpICYmIG9wdGUgIT0gbnB0ZSkKKwkJcG1hcF91cGRhdGVfcGFnZShrZXJuZWxf
cG1hcCwgdmEsIG5wdGUpOwogfQogCiAvKgo=
--0016e64c1dc2cb8ec2048d853700
Content-Type: text/x-patch; charset=US-ASCII;
	name="pmap-emulate-modified.patch"
Content-Disposition: attachment; filename="pmap-emulate-modified.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gcppx3v81

SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvcG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL2lu
Y2x1ZGUvcG1hcC5oCShyZXZpc2lvbiAyMTEwNjYpCisrKyBzeXMvbWlwcy9pbmNsdWRlL3BtYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDcgKzE2Niw3IEBACiBpbnQgcG1hcF9jb21wdXRlX3Bh
Z2VzX3RvX2R1bXAodm9pZCk7CiB2b2lkIHBtYXBfdXBkYXRlX3BhZ2UocG1hcF90IHBtYXAsIHZt
X29mZnNldF90IHZhLCBwdF9lbnRyeV90IHB0ZSk7CiB2b2lkIHBtYXBfZmx1c2hfcHZjYWNoZSh2
bV9wYWdlX3QgbSk7Ci0KK2ludCBwbWFwX2VtdWxhdGVfbW9kaWZpZWQocG1hcF90IHBtYXAsIHZt
X29mZnNldF90IHZhKTsKICNlbmRpZgkJCQkvKiBfS0VSTkVMICovCiAKICNlbmRpZgkJCQkvKiAh
TE9DT1JFICovCkluZGV4OiBzeXMvbWlwcy9taXBzL3BtYXAuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv
bWlwcy9taXBzL3BtYXAuYwkocmV2aXNpb24gMjExMDY4KQorKysgc3lzL21pcHMvbWlwcy9wbWFw
LmMJKHdvcmtpbmcgY29weSkKQEAgLTMyMzAsMTYgKzMyNjUsNDIgQEAKIAlyZXR1cm4gKHJ3KTsK
IH0KIAotLyoKLSAqCXBtYXBfc2V0X21vZGlmaWVkOgotICoKLSAqCVNldHMgdGhlIHBhZ2UgbW9k
aWZpZWQgYW5kIHJlZmVyZW5jZSBiaXRzIGZvciB0aGUgc3BlY2lmaWVkIHBhZ2UuCi0gKi8KLXZv
aWQKLXBtYXBfc2V0X21vZGlmaWVkKHZtX29mZnNldF90IHBhKQoraW50CitwbWFwX2VtdWxhdGVf
bW9kaWZpZWQocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhKQogeworCXZtX3BhZ2VfdCBtOwor
CXB0X2VudHJ5X3QgKnB0ZTsKKyAJdm1fb2Zmc2V0X3QgcGE7CiAKLQlQSFlTX1RPX1ZNX1BBR0Uo
cGEpLT5tZC5wdl9mbGFncyB8PSAoUFZfVEFCTEVfUkVGIHwgUFZfVEFCTEVfTU9EKTsKKwlQTUFQ
X0xPQ0socG1hcCk7CisJcHRlID0gcG1hcF9wdGUocG1hcCwgdmEpOworCWlmIChwdGUgPT0gTlVM
TCkKKwkJcGFuaWMoInBtYXBfZW11bGF0ZV9tb2RpZmllZDogY2FuJ3QgZmluZCBQVEUiKTsKKyNp
ZmRlZiBTTVAKKwkvKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHNvbWUgb3RoZXIgQ1BVIGNoYW5nZWQg
bS1iaXQgKi8KKwlpZiAoIXB0ZV90ZXN0KHB0ZSwgUFRFX1YpIHx8IHB0ZV90ZXN0KHB0ZSwgUFRF
X0QpKSB7CisJCXBtYXBfdXBkYXRlX3BhZ2VfbG9jYWwocG1hcCwgdmEsICpwdGUpOworCQlQTUFQ
X1VOTE9DSyhrZXJuZWxfcG1hcCk7CisJCXJldHVybiAoMCk7CisJfQorI2Vsc2UKKwlpZiAoIXB0
ZV90ZXN0KHB0ZSwgUFRFX1YpIHx8IHB0ZV90ZXN0KHB0ZSwgUFRFX0QpKQorCQlwYW5pYygicG1h
cF9lbXVsYXRlX21vZGlmaWVkOiBpbnZhbGlkIHB0ZSIpOworI2VuZGlmCisJaWYgKHB0ZV90ZXN0
KHB0ZSwgUFRFX1JPKSkgeworCQkvKiB3cml0ZSB0byByZWFkIG9ubHkgcGFnZSBpbiB0aGUga2Vy
bmVsICovCisJCVBNQVBfVU5MT0NLKHBtYXApOworCQlyZXR1cm4gKDEpOworCX0KKwlwdGVfc2V0
KHB0ZSwgUFRFX0QpOworCXBtYXBfdXBkYXRlX3BhZ2VfbG9jYWwocG1hcCwgdmEsICpwdGUpOwor
CXBhID0gVExCTE9fUFRFX1RPX1BBKCpwdGUpOworCWlmICghcGFnZV9pc19tYW5hZ2VkKHBhKSkK
KwkJcGFuaWMoInBtYXBfZW11bGF0ZV9tb2RpZmllZDogdW5tYW5hZ2VkIHBhZ2UiKTsKKwltID0g
UEhZU19UT19WTV9QQUdFKHBhKTsKKwltLT5tZC5wdl9mbGFncyB8PSAoUFZfVEFCTEVfUkVGIHwg
UFZfVEFCTEVfTU9EKTsKKwlQTUFQX1VOTE9DSyhwbWFwKTsKKwlyZXR1cm4gKDApOwogfQogCiAv
KgpJbmRleDogc3lzL21pcHMvbWlwcy90cmFwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvbWlw
cy90cmFwLmMJKHJldmlzaW9uIDIxMTA2NikKKysrIHN5cy9taXBzL21pcHMvdHJhcC5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDYgQEAKIAlzdHJ1Y3QgdGhyZWFkICp0ZCA9IGN1cnRo
cmVhZDsKIAlzdHJ1Y3QgcHJvYyAqcCA9IGN1cnByb2M7CiAJdm1fcHJvdF90IGZ0eXBlOwotCXB0
X2VudHJ5X3QgKnB0ZTsKIAlwbWFwX3QgcG1hcDsKIAlpbnQgYWNjZXNzX3R5cGU7CiAJa3NpZ2lu
Zm9fdCBrc2k7CkBAIC0zNzIsODIgKzM3MSwyNCBAQAogCWNhc2UgVF9UTEJfTU9EOgogCQkvKiBj
aGVjayBmb3Iga2VybmVsIGFkZHJlc3MgKi8KIAkJaWYgKEtFUk5MQU5EKHRyYXBmcmFtZS0+YmFk
dmFkZHIpKSB7Ci0JCQl2bV9vZmZzZXRfdCBwYTsKLQotCQkJUE1BUF9MT0NLKGtlcm5lbF9wbWFw
KTsKLQkJCXB0ZSA9IHBtYXBfcHRlKGtlcm5lbF9wbWFwLCB0cmFwZnJhbWUtPmJhZHZhZGRyKTsK
LQkJCWlmIChwdGUgPT0gTlVMTCkKLQkJCQlwYW5pYygidHJhcDoga3RsYm1vZDogY2FuJ3QgZmlu
ZCBQVEUiKTsKLSNpZmRlZiBTTVAKLQkJCS8qIEl0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBvdGhl
ciBDUFUgY2hhbmdlZCBtLWJpdCAqLwotCQkJaWYgKCFwdGVfdGVzdChwdGUsIFBURV9WKSB8fCBw
dGVfdGVzdChwdGUsIFBURV9EKSkgewotCQkJCXBtYXBfdXBkYXRlX3BhZ2Uoa2VybmVsX3BtYXAs
Ci0JCQkJICAgIHRyYXBmcmFtZS0+YmFkdmFkZHIsICpwdGUpOwotCQkJCVBNQVBfVU5MT0NLKGtl
cm5lbF9wbWFwKTsKLQkJCQlyZXR1cm4gKHRyYXBmcmFtZS0+cGMpOwotCQkJfQotI2Vsc2UKLQkJ
CWlmICghcHRlX3Rlc3QocHRlLCBQVEVfVikgfHwgcHRlX3Rlc3QocHRlLCBQVEVfRCkpCi0JCQkJ
cGFuaWMoInRyYXA6IGt0bGJtb2Q6IGludmFsaWQgcHRlIik7Ci0jZW5kaWYKLQkJCWlmIChwdGVf
dGVzdChwdGUsIFBURV9STykpIHsKLQkJCQkvKiB3cml0ZSB0byByZWFkIG9ubHkgcGFnZSBpbiB0
aGUga2VybmVsICovCisJCQlpZiAocG1hcF9lbXVsYXRlX21vZGlmaWVkKGtlcm5lbF9wbWFwLCAK
KwkJCSAgICB0cmFwZnJhbWUtPmJhZHZhZGRyKSAhPSAwKSB7CiAJCQkJZnR5cGUgPSBWTV9QUk9U
X1dSSVRFOwotCQkJCVBNQVBfVU5MT0NLKGtlcm5lbF9wbWFwKTsKIAkJCQlnb3RvIGtlcm5lbF9m
YXVsdDsKIAkJCX0KLQkJCXB0ZV9zZXQocHRlLCBQVEVfRCk7Ci0JCQlwbWFwX3VwZGF0ZV9wYWdl
KGtlcm5lbF9wbWFwLCB0cmFwZnJhbWUtPmJhZHZhZGRyLCAqcHRlKTsKLQkJCXBhID0gVExCTE9f
UFRFX1RPX1BBKCpwdGUpOwotCQkJaWYgKCFwYWdlX2lzX21hbmFnZWQocGEpKQotCQkJCXBhbmlj
KCJ0cmFwOiBrdGxibW9kOiB1bm1hbmFnZWQgcGFnZSIpOwotCQkJcG1hcF9zZXRfbW9kaWZpZWQo
cGEpOwotCQkJUE1BUF9VTkxPQ0soa2VybmVsX3BtYXApOwogCQkJcmV0dXJuICh0cmFwZnJhbWUt
PnBjKTsKIAkJfQogCQkvKiBGQUxMVEhST1VHSCAqLwogCiAJY2FzZSBUX1RMQl9NT0QgKyBUX1VT
RVI6Ci0JCXsKLQkJCXZtX29mZnNldF90IHBhOwotCi0JCQlwbWFwID0gJnAtPnBfdm1zcGFjZS0+
dm1fcG1hcDsKLQotCQkJUE1BUF9MT0NLKHBtYXApOwotCQkJcHRlID0gcG1hcF9wdGUocG1hcCwg
dHJhcGZyYW1lLT5iYWR2YWRkcik7Ci0JCQlpZiAocHRlID09IE5VTEwpCi0JCQkJcGFuaWMoInRy
YXA6IHV0bGJtb2Q6IGNhbid0IGZpbmQgUFRFIik7Ci0jaWZkZWYgU01QCi0JCQkvKiBJdCBpcyBw
b3NzaWJsZSB0aGF0IHNvbWUgb3RoZXIgQ1BVIGNoYW5nZWQgbS1iaXQgKi8KLQkJCWlmICghcHRl
X3Rlc3QocHRlLCBQVEVfVikgfHwgcHRlX3Rlc3QocHRlLCBQVEVfRCkpIHsKLQkJCQlwbWFwX3Vw
ZGF0ZV9wYWdlKHBtYXAsIHRyYXBmcmFtZS0+YmFkdmFkZHIsICpwdGUpOwotCQkJCVBNQVBfVU5M
T0NLKHBtYXApOwotCQkJCWdvdG8gb3V0OwotCQkJfQotI2Vsc2UKLQkJCWlmICghcHRlX3Rlc3Qo
cHRlLCBQVEVfVikgfHwgcHRlX3Rlc3QocHRlLCBQVEVfRCkpCi0JCQkJcGFuaWMoInRyYXA6IHV0
bGJtb2Q6IGludmFsaWQgcHRlIik7Ci0jZW5kaWYKLQotCQkJaWYgKHB0ZV90ZXN0KHB0ZSwgUFRF
X1JPKSkgewotCQkJCS8qIHdyaXRlIHRvIHJlYWQgb25seSBwYWdlICovCi0JCQkJZnR5cGUgPSBW
TV9QUk9UX1dSSVRFOwotCQkJCVBNQVBfVU5MT0NLKHBtYXApOwotCQkJCWdvdG8gZG9mYXVsdDsK
LQkJCX0KLQkJCXB0ZV9zZXQocHRlLCBQVEVfRCk7Ci0JCQlwbWFwX3VwZGF0ZV9wYWdlKHBtYXAs
IHRyYXBmcmFtZS0+YmFkdmFkZHIsICpwdGUpOwotCQkJcGEgPSBUTEJMT19QVEVfVE9fUEEoKnB0
ZSk7Ci0JCQlpZiAoIXBhZ2VfaXNfbWFuYWdlZChwYSkpCi0JCQkJcGFuaWMoInRyYXA6IHV0bGJt
b2Q6IHVubWFuYWdlZCBwYWdlIik7Ci0JCQlwbWFwX3NldF9tb2RpZmllZChwYSk7Ci0KLQkJCVBN
QVBfVU5MT0NLKHBtYXApOwotCQkJaWYgKCF1c2VybW9kZSkgewotCQkJCXJldHVybiAodHJhcGZy
YW1lLT5wYyk7Ci0JCQl9Ci0JCQlnb3RvIG91dDsKKwkJcG1hcCA9ICZwLT5wX3Ztc3BhY2UtPnZt
X3BtYXA7CisJCWlmIChwbWFwX2VtdWxhdGVfbW9kaWZpZWQocG1hcCwgdHJhcGZyYW1lLT5iYWR2
YWRkcikgIT0gMCkgeworCQkJZnR5cGUgPSBWTV9QUk9UX1dSSVRFOworCQkJZ290byBkb2ZhdWx0
OwogCQl9CisJCWlmICghdXNlcm1vZGUpCisJCQlyZXR1cm4gKHRyYXBmcmFtZS0+cGMpOworCQln
b3RvIG91dDsKIAogCWNhc2UgVF9UTEJfTERfTUlTUzoKIAljYXNlIFRfVExCX1NUX01JU1M6Cg==
--0016e64c1dc2cb8ec2048d853700--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=FowMNMy87aA2K=120a4L_Fd5GPDH%2BdEPKOsek>