Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Jul 2016 08:46:34 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        "freebsd-mips@freebsd.org" <freebsd-mips@freebsd.org>
Subject:   Fwd: mips TLS!
Message-ID:  <CAJ-Vmo=EmjCeCqH2SiBkTwEwP5amUEJwmXp1Ve4S6-OXAS5E-Q@mail.gmail.com>
In-Reply-To: <1289901750.3301205.1469111484769.JavaMail.yahoo@mail.yahoo.com>
References:  <CAJ-Vmokc2-7OekECAtbNKnpK25=cQ0=URuRrcwaR2VngfzTsxQ@mail.gmail.com> <D89FC2D9-37DB-4A91-BA4F-F44CCE7CD268@me.com> <CAJ-VmonHbK-Z1vGv-8XcWj4vb2R6OZPE5kGWFuPLc2eYE07iAQ@mail.gmail.com> <1166879717.1933909.1469073212661.JavaMail.yahoo@mail.yahoo.com> <CAJ-VmonFku%2BAect4fcq70e-A=rQKUjAa1J%2B7ubLA=dC7=-edzw@mail.gmail.com> <1289901750.3301205.1469111484769.JavaMail.yahoo@mail.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--001a11439d44118ba505382739d7
Content-Type: text/plain; charset=UTF-8

hi!

Stacey did up some TLS work for mips in 2014 but it never landed in
-HEAD. Dan updated it to compile/run for mips32, and the performance
improvements are great.

Does anyone have a mips64 system they can test this on? I'd like to
commit this soon. :)

Thanks!



-adrian


---------- Forwarded message ----------
From: Dan Nelson <dnelson_1901@yahoo.com>
Date: 21 July 2016 at 07:31
Subject: Re: mips TLS!
To: Adrian Chadd <adrian.chadd@gmail.com>
Cc: Stacey Son <sson@freebsd.org>, Robert Watson
<rwatson@freebsd.org>, Stacey Son <sson@me.com>


Oops - here they are.  The benchmark numbers of course don't reflect
reflect the gains I saw in every program.  I only picked ones that
were generating large amounts of syscalls.  Some apps, like gcc,
managed to consume vast quantities of ram without needing TLS even
before patching.

________________________________
From: Adrian Chadd <adrian.chadd@gmail.com>
To: Dan Nelson <dnelson_1901@yahoo.com>
Cc: Stacey Son <sson@freebsd.org>; Robert Watson
<rwatson@freebsd.org>; Stacey Son <sson@me.com>
Sent: Thursday, July 21, 2016 12:10 AM
Subject: Re: mips TLS!



Woohoo!
Patches? :)


On Jul 20, 2016 8:54 PM, "Dan Nelson" <dnelson_1901@yahoo.com> wrote:

The TLS patches seem to be a success, after fixing a couple of
rejected patch blocks and fixing up some compile errors in the mips32
code.  Tiny benchmark results:
>
>"sqlite3 /var/db/pkg/local.sqlite vacuum"
>total syscall count went from 570000 -> 117000
>20% reduction in user+sys cpu time (7.06 -> 5.66)
>
>"portupgrade -f doesntexist"
>total syscall count went from 3835000 -> 14000
>52% reduction in user+sys cpu time (25.3 -> 12.1)
>
>"du -s /usr/local"
>total syscall count went from 485000 -> 69400
>38% reduction in user+sys cpu time (5.08 -> 3.14)
>
>Raw numbers attached.
>
>
>
>________________________________
>From: Adrian Chadd <adrian.chadd@gmail.com>
>To: Stacey Son <sson@me.com>
>Cc: Stacey Son <sson@freebsd.org>; Robert Watson <rwatson@freebsd.org>; Dan Nelson <dnelson_1901@yahoo.com>
>Sent: Tuesday, July 19, 2016 8:00 PM
>Subject: Re: mips TLS!
>
>
>heh, dynamic patching always makes me itch. But, dtrace does it, right? :P
>
>Dan, let's give the TLS patches a go and see how well it works out. :)
>
>
>
>
>-a

--001a11439d44118ba505382739d7
Content-Type: application/octet-stream; name="ulri_kernel.diff"
Content-Disposition: attachment; filename="ulri_kernel.diff"
Content-Transfer-Encoding: base64
Content-ID: <cb3e9d86-5ce4-7071-840c-8fc6898061bd@yahoo.com>
X-Attachment-Id: 32c534173ab0075c_0.1

SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvY3B1ZnVuYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBz
L2luY2x1ZGUvY3B1ZnVuYy5oCShyZXZpc2lvbiAzMDMxMjYpCisrKyBzeXMvbWlwcy9pbmNsdWRl
L2NwdWZ1bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw3IEBAIG1pcHNfd3JfICMj
IG4odWludDY0X3QgYTApCQkJCQlcCiBNSVBTX1JXNjRfQ09QMChleGNwYywgTUlQU19DT1BfMF9F
WENfUEMpOwogTUlQU19SVzY0X0NPUDAoZW50cnloaSwgTUlQU19DT1BfMF9UTEJfSEkpOwogTUlQ
U19SVzY0X0NPUDAocGFnZW1hc2ssIE1JUFNfQ09QXzBfVExCX1BHX01BU0spOworTUlQU19SVzY0
X0NPUDBfU0VMKHVzZXJsb2NhbCwgTUlQU19DT1BfMF9VU0VSTE9DQUwsIDIpOwogI2lmZGVmIENQ
VV9DTk1JUFMKIE1JUFNfUlc2NF9DT1AwX1NFTChjdm1jb3VudCwgTUlQU19DT1BfMF9DT1VOVCwg
Nik7CiBNSVBTX1JXNjRfQ09QMF9TRUwoY3ZtY3RsLCBNSVBTX0NPUF8wX0NPVU5ULCA3KTsKQEAg
LTI2NSw2ICsyNjYsNyBAQCBNSVBTX1JXMzJfQ09QMF9TRUwoY21nY3JiYXNlLCAxNSwgMyk7CiAj
aWYgIWRlZmluZWQoX19taXBzX242NCkKIE1JUFNfUlczMl9DT1AwKGVudHJ5aGksIE1JUFNfQ09Q
XzBfVExCX0hJKTsKIE1JUFNfUlczMl9DT1AwKHBhZ2VtYXNrLCBNSVBTX0NPUF8wX1RMQl9QR19N
QVNLKTsKK01JUFNfUlczMl9DT1AwX1NFTCh1c2VybG9jYWwsIE1JUFNfQ09QXzBfVVNFUkxPQ0FM
LCAyKTsKICNlbmRpZgogI2lmZGVmIENQVV9OTE0KIE1JUFNfUlczMl9DT1AwX1NFTChwYWdlZ3Jh
aW4sIE1JUFNfQ09QXzBfVExCX1BHX01BU0ssIDEpOwpAQCAtMjg5LDYgKzI5MSw3IEBAIE1JUFNf
UlczMl9DT1AwX1NFTChwZXJmY250MCwgTUlQU19DT1BfMF9QRVJGQ05ULCAwCiBNSVBTX1JXMzJf
Q09QMF9TRUwocGVyZmNudDEsIE1JUFNfQ09QXzBfUEVSRkNOVCwgMSk7CiBNSVBTX1JXMzJfQ09Q
MF9TRUwocGVyZmNudDIsIE1JUFNfQ09QXzBfUEVSRkNOVCwgMik7CiBNSVBTX1JXMzJfQ09QMF9T
RUwocGVyZmNudDMsIE1JUFNfQ09QXzBfUEVSRkNOVCwgMyk7CitNSVBTX1JXMzJfQ09QMChod3Jl
bmEsIE1JUFNfQ09QXzBfSFdSRU5BKTsKIAogI3VuZGVmCU1JUFNfUlczMl9DT1AwCiAjdW5kZWYJ
TUlQU19SVzMyX0NPUDBfU0VMCkluZGV4OiBzeXMvbWlwcy9pbmNsdWRlL2NwdWluZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBzeXMvbWlwcy9pbmNsdWRlL2NwdWluZm8uaAkocmV2aXNpb24gMzAzMTI2KQor
Kysgc3lzL21pcHMvaW5jbHVkZS9jcHVpbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4
LDcgQEAgc3RydWN0IG1pcHNfY3B1aW5mbyB7CiAJdV9pbnQxNl90CXRsYl9uZW50cmllczsKIAl1
X2ludDhfdAlpY2FjaGVfdmlydHVhbDsKIAlib29sZWFuX3QJY2FjaGVfY29oZXJlbnRfZG1hOwor
CWJvb2xlYW5fdAl1c2VybG9jYWxfcmVnOwogCXN0cnVjdCB7CiAJCXVfaW50MzJfdAlpY19zaXpl
OwogCQl1X2ludDhfdAlpY19saW5lc2l6ZTsKSW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvY3B1cmVn
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL2luY2x1ZGUvY3B1cmVncy5oCShyZXZpc2lvbiAz
MDMxMjYpCisrKyBzeXMvbWlwcy9pbmNsdWRlL2NwdXJlZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
NDU0LDkgKzQ1NCwxMCBAQAogICogIDIJTUlQU19DT1BfMF9UTEJfTE8wCS42MzYgcjRrIFRMQiBl
bnRyeSBsb3cuCiAgKiAgMwlNSVBTX0NPUF8wX1RMQl9MTzEJLjYzNiByNGsgVExCIGVudHJ5IGxv
dywgZXh0ZW5kZWQuCiAgKiAgNAlNSVBTX0NPUF8wX1RMQl9DT05URVhUCTM2MzYgVExCIENvbnRl
eHQuCisgKiAgNC8yCU1JUFNfQ09QXzBfVVNFUkxPQ0FMCS4uMzYgVXNlckxvY2FsLgogICogIDUJ
TUlQU19DT1BfMF9UTEJfUEdfTUFTSwkuMzMzIFRMQiBQYWdlIE1hc2sgcmVnaXN0ZXIuCiAgKiAg
NglNSVBTX0NPUF8wX1RMQl9XSVJFRAkuMzMzIFdpcmVkIFRMQiBudW1iZXIuCi0gKiAgNwlNSVBT
X0NPUF8wX0lORk8JCS4uMzMgSW5mbyByZWdpc3RlcnMKKyAqICA3CU1JUFNfQ09QXzBfSFdSRU5B
CS4uMzMgcmRIV1IgRW5hYmxlLgogICogIDgJTUlQU19DT1BfMF9CQURfVkFERFIJMzYzNiBCYWQg
dmlydHVhbCBhZGRyZXNzLgogICogIDkJTUlQU19DT1BfMF9DT1VOVAkuMzMzIENvdW50IHJlZ2lz
dGVyLgogICogMTAJTUlQU19DT1BfMF9UTEJfSEkJMzYzNiBUTEIgZW50cnkgaGlnaC4KQEAgLTUz
NCw3ICs1MzUsOCBAQAogI2RlZmluZQlNSVBTX0NPUF8wX0VSUk9SX1BDCV8oMzApCiAKIC8qIE1J
UFMzMi82NCAqLwotI2RlZmluZQlNSVBTX0NPUF8wX0lORk8JCV8oNykKKyNkZWZpbmUJTUlQU19D
T1BfMF9VU0VSTE9DQUwJXyg0KQkvKiBzZWwgMiBpcyB1c2VybGV2ZWwgcmVnaXN0ZXIgKi8KKyNk
ZWZpbmUJTUlQU19DT1BfMF9IV1JFTkEJXyg3KQogI2RlZmluZQlNSVBTX0NPUF8wX0RFQlVHCV8o
MjMpCiAjZGVmaW5lCU1JUFNfQ09QXzBfREVQQwkJXygyNCkKICNkZWZpbmUJTUlQU19DT1BfMF9Q
RVJGQ05UCV8oMjUpCkBAIC01NDgsMTEgKzU1MCwyMSBAQAogI2RlZmluZSBNSVBTX01NVV9CQVQJ
CQkweDAyCQkvKiBTdGFuZGFyZCBCQVQgKi8KICNkZWZpbmUgTUlQU19NTVVfRklYRUQJCQkweDAz
CQkvKiBTdGFuZGFyZCBmaXhlZCBtYXBwaW5nICovCiAKLSNkZWZpbmUgTUlQU19DT05GSUcwX01U
X01BU0sJCTB4MDAwMDAzODAJLyogYml0cyA5Li43IE1NVSBUeXBlICovCi0jZGVmaW5lIE1JUFNf
Q09ORklHMF9NVF9TSElGVAkJNwotI2RlZmluZSBNSVBTX0NPTkZJRzBfQkUJCQkweDAwMDA4MDAw
CS8qIGRhdGEgaXMgYmlnLWVuZGlhbiAqLwotI2RlZmluZSBNSVBTX0NPTkZJRzBfVkkJCQkweDAw
MDAwMDA4CS8qIGluc3RydWN0aW9uIGNhY2hlIGlzIHZpcnR1YWwgKi8KLQorLyoKKyAqIENvbmZp
ZyBSZWdpc3RlciBGaWVsZHMKKyAqIChTZWUgIk1JUFMgQXJjaGl0ZWN0dXJlIGZvciBQcm9ncmFt
bWVycyBWb2x1bWUgSUlJIiwgTUQwMDA5MSwgVGFibGUgOS4zOSkKKyAqLworI2RlZmluZQlNSVBT
X0NPTkZJRzBfTQkJMHg4MDAwMDAwMCAJLyogRmxhZzogQ29uZmlnMSBpcyBwcmVzZW50LiAqLwor
I2RlZmluZQlNSVBTX0NPTkZJRzBfTVRfTUFTSwkweDAwMDAwMzgwCS8qIGJpdHMgOS4uNyBNTVUg
VHlwZSAqLworI2RlZmluZQlNSVBTX0NPTkZJRzBfTVRfU0hJRlQJNworI2RlZmluZQlNSVBTX0NP
TkZJRzBfQkUJCTB4MDAwMDgwMDAJLyogZGF0YSBpcyBiaWctZW5kaWFuICovCisjZGVmaW5lCU1J
UFNfQ09ORklHMF9WSQkJMHgwMDAwMDAwOAkvKiBpbnN0IGNhY2hlIGlzIHZpcnR1YWwgKi8KKyAK
Ky8qCisgKiBDb25maWcxIFJlZ2lzdGVyIEZpZWxkcworICogKFNlZSAiTUlQUyBBcmNoaXRlY3R1
cmUgZm9yIFByb2dyYW1tZXJzIFZvbHVtZSBJSUkiLCBNRDAwMDkxLCBUYWJsZSA5LTEpCisgKi8K
KyNkZWZpbmUJTUlQU19DT05GSUcxX00JCTB4ODAwMDAwMDAJLyogRmxhZzogQ29uZmlnMiBpcyBw
cmVzZW50LiAqLwogI2RlZmluZSBNSVBTX0NPTkZJRzFfVExCU1pfTUFTSwkJMHg3RTAwMDAwMAkv
KiBiaXRzIDMwLi4yNSAjIHRsYiBlbnRyaWVzIG1pbnVzIG9uZSAqLwogI2RlZmluZSBNSVBTX0NP
TkZJRzFfVExCU1pfU0hJRlQJMjUKIApAQCAtNTg2LDYgKzU5OCwxOSBAQAogCiAjZGVmaW5lIE1J
UFNfQ09ORklHM19DTUdDUl9NQVNLCQkoMSA8PCAyOSkJLyogQ29oZXJlbmNlIG1hbmFnZXIgcHJl
c2VudCAqLwogCisvKgorICogQ29uZmlnMiBSZWdpc3RlciBGaWVsZHMKKyAqIChTZWUgIk1JUFMg
QXJjaGl0ZWN0dXJlIGZvciBQcm9ncmFtbWVycyBWb2x1bWUgSUlJIiwgTUQwMDA5MSwgVGFibGUg
OS40MCkKKyAqLworI2RlZmluZQlNSVBTX0NPTkZJRzJfTQkJMHg4MDAwMDAwMAkvKiBGbGFnOiBD
b25maWczIGlzIHByZXNlbnQuICovCisKKy8qCisgKiBDb25maWczIFJlZ2lzdGVyIEZpZWxkcwor
ICogKFNlZSAiTUlQUyBBcmNoaXRlY3R1cmUgZm9yIFByb2dyYW1tZXJzIFZvbHVtZSBJSUkiLCBN
RDAwMDkxLCBUYWJsZSA5LjQxKQorICovCisjZGVmaW5lCU1JUFNfQ09ORklHM19NCQkweDgwMDAw
MDAwCS8qIEZsYWc6IENvbmZpZzQgaXMgcHJlc2VudCAqLworI2RlZmluZQlNSVBTX0NPTkZJRzNf
VUxSCTB4MDAwMDIwMDAJLyogVXNlckxvY2FsIHJlZyBpbXBsZW1lbnRlZCAqLworCiAjZGVmaW5l
IE1JUFNfQ09ORklHNF9NTVVTSVpFRVhUCQkweDAwMDAwMEZGCS8qIGJpdHMgNy4uIDAgTU1VIFNp
emUgRXh0ZW5zaW9uICovCiAjZGVmaW5lIE1JUFNfQ09ORklHNF9NTVVFWFRERUYJCTB4MDAwMEMw
MDAJLyogYml0cyAxNS4xNCBNTVUgRXh0ZW5zaW9uIERlZmluaXRpb24gKi8KICNkZWZpbmUgTUlQ
U19DT05GSUc0X01NVUVYVERFRl9NTVVTSVpFRVhUCTB4MDAwMDQwMDAgLyogVGhpcyB2YWx1ZXMg
ZGVub3RlcyBDT05GSUc0IGJpdHMgICovCkBAIC02NjcsNCArNjkyLDE1IEBACiAjZGVmaW5lCU1J
UFNfQ01HQ1JCX0JBU0UJMTEKICNkZWZpbmUJTUlQU19DTUdDUkZfQkFTRQkofigoMSA8PCBNSVBT
X0NNR0NSQl9CQVNFKSAtIDEpKQogCisvKgorICogQml0cyBkZWZpbmVkIGZvciBmb3IgdGhlIEhX
UkVuYSAoQ1AwIHJlZ2lzdGVyIDcsIHNlbGVjdCAwKS4KKyAqLworI2RlZmluZQlNSVBTX0hXUkVO
QV9DUFVOVU0JKDE8PDApCS8qIENQVSBudW1iZXIgcHJvZ3JhbSBpcyBydW5uaW5nIG9uICovCisj
ZGVmaW5lCU1JUFNfSFdSRU5BX1NZTkNJX1NURVAgCSgxPDwxKQkvKiBBZGRyZXNzIHN0ZXAgc2l6
ZWQgdXNlZCB3aXRoIFNZTkNJICovCisjZGVmaW5lCU1JUFNfSFdSRU5BX0NDCQkoMTw8MikJLyog
SGkgUmVzIGN5Y2xlIGNvdW50ZXIgKi8KKyNkZWZpbmUJTUlQU19IV1JFTkFfQ0NSRVMJKDE8PDMp
CS8qIEN5Y2xlIGNvdW50ZXIgcmVzb2x1dGlvbiAqLworI2RlZmluZQlNSVBTX0hXUkVOQV9VTAkJ
KDE8PDI5KQkvKiBVc2VyTG9jYWwgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJTUlQU19IV1JFTkFfSU1Q
TDMwCSgxPDwzMCkJLyogSW1wbGVtZW50YXRpb24tZGVwZW5kZW50IDMwICovCisjZGVmaW5lCU1J
UFNfSFdSRU5BX0lNUEwzMQkoMTw8MzEpCS8qIEltcGxlbWVudGF0aW9uLWRlcGVuZGVudCAzMSAq
LworCiAjZW5kaWYgLyogX01JUFNfQ1BVUkVHU19IXyAqLwpJbmRleDogc3lzL21pcHMvbWlwcy9j
cHUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9taXBzL2NwdS5jCShyZXZpc2lvbiAzMDMxMjYp
CisrKyBzeXMvbWlwcy9taXBzL2NwdS5jCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
IF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRl
IDxzeXMva2VybmVsLmg+CiAjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9w
cm9jLmg+CiAjaW5jbHVkZSA8c3lzL3N0ZGludC5oPgogCiAjaW5jbHVkZSA8c3lzL2J1cy5oPgpA
QCAtNDksNiArNTAsOSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8bWFjaGlu
ZS9wdGUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3RsYi5oPgogI2luY2x1ZGUgPG1hY2hpbmUvaHdm
dW5jLmg+CisjaW5jbHVkZSA8bWFjaGluZS9taXBzX29wY29kZS5oPgorI2luY2x1ZGUgPG1hY2hp
bmUvcmVnbnVtLmg+CisjaW5jbHVkZSA8bWFjaGluZS90bHMuaD4KIAogI2lmIGRlZmluZWQoQ1BV
X0NOTUlQUykKICNpbmNsdWRlIDxjb250cmliL29jdGVvbi1zZGsvY3ZteC5oPgpAQCAtNTksNyAr
NjMsNjQgQEAgc3RhdGljIHZvaWQgY3B1X2lkZW50aWZ5KHZvaWQpOwogCiBzdHJ1Y3QgbWlwc19j
cHVpbmZvIGNwdWluZm87CiAKKyNkZWZpbmUgX0VOQ09ERV9JTlNOKGEsYixjLGQsZSkgXAorICAg
ICgodWludDMyX3QpKCgoYSkgPDwgMjYpfCgoYikgPDwgMjEpfCgoYykgPDwgMTYpfCgoZCkgPDwg
MTEpfChlKSkpCisKKyNpZiBkZWZpbmVkKF9fbWlwc19uNjQpCisKKyMgICBkZWZpbmUJX0xPQURf
VDBfTURUTFNfQTEgXAorICAgIF9FTkNPREVfSU5TTihPUF9MRCwgQTEsIFQwLCAwLCBvZmZzZXRv
ZihzdHJ1Y3QgdGhyZWFkLCB0ZF9tZC5tZF90bHMpKQorCisjICAgaWYgZGVmaW5lZChDT01QQVRf
RlJFRUJTRDMyKQorIyAgIGRlZmluZQlfQURESVVfVjBfVDBfVExTX09GRlNFVCBcCisgICAgX0VO
Q09ERV9JTlNOKE9QX0RBRERJVSwgVDAsIFYwLCAwLCAoVExTX1RQX09GRlNFVCArIFRMU19UQ0Jf
U0laRTMyKSkKKyMgICBlbHNlCisjICAgZGVmaW5lCV9BRERJVV9WMF9UMF9UTFNfT0ZGU0VUIFwK
KyAgICBfRU5DT0RFX0lOU04oT1BfREFERElVLCBUMCwgVjAsIDAsIChUTFNfVFBfT0ZGU0VUICsg
VExTX1RDQl9TSVpFKSkKKyMgICBlbmRpZiAvKiAhIENPTVBBVF9GUkVFQlNEMzIgKi8KKworIyAg
IGRlZmluZSBfTVRDMF9WMF9VU0VSTE9DQUwgXAorICAgIF9FTkNPREVfSU5TTihPUF9DT1AwLCBP
UF9ETVQsIFYwLCA0LCAyKQorCisjZWxzZSAvKiBtaXBzIDMyICovCisKKyMgICBkZWZpbmUJX0xP
QURfVDBfTURUTFNfQTEgXAorICAgIF9FTkNPREVfSU5TTihPUF9MVywgQTEsIFQwLCAwLCBvZmZz
ZXRvZihzdHJ1Y3QgdGhyZWFkLCB0ZF9tZC5tZF90bHMpKQorIyAgIGRlZmluZQlfQURESVVfVjBf
VDBfVExTX09GRlNFVCBcCisgICAgX0VOQ09ERV9JTlNOKE9QX0FERElVLCBUMCwgVjAsIDAsIChU
TFNfVFBfT0ZGU0VUICsgVExTX1RDQl9TSVpFKSkKKyMgICBkZWZpbmUgX01UQzBfVjBfVVNFUkxP
Q0FMIFwKKyAgICBfRU5DT0RFX0lOU04oT1BfQ09QMCwgT1BfTVQsIFYwLCA0LCAyKQorCisjZW5k
aWYgLyogISBfX21pcHNfbjY0ICovCisKKyNkZWZpbmUJX0pSX1JBCV9FTkNPREVfSU5TTihPUF9T
UEVDSUFMLCBSQSwgMCwgMCwgT1BfSlIpCisjZGVmaW5lCV9OT1AJMAorCiAvKgorICogUGF0Y2gg
Y3B1X3N3aXRjaCgpIGJ5IHJlbW92aW5nIHRoZSBVc2VyTG9jYWwgcmVnaXN0ZXIgY29kZSBhdCB0
aGUgZW5kLgorICogRm9yIE1JUFMgaGFyZHdhcmUgdGhhdCBkb24ndCBzdXBwb3J0IFVzZXJMb2Nh
bCBSZWdpc3RlciBJbXBsZW1lbnRhdGlvbgorICogd2UgcmVtb3ZlIHRoZSBpbnN0cnVjdGlvbnMg
dGhhdCB1cGRhdGUgdGhpcyByZWdpc3RlciB3aGljaCBtYXkgY2F1c2UgYQorICogcmVzZXJ2ZWQg
aW5zdHJ1Y3Rpb24gZXhjZXB0aW9uIGluIHRoZSBrZXJuZWwuCisgKi8KK3N0YXRpYyB2b2lkCity
ZW1vdmVfdXNlcmxvY2FsX2NvZGUodWludDMyX3QgKmNwdV9zd2l0Y2hfY29kZSkKK3sKKwl1aW50
MzJfdCAqaW5zdHJ1Y3RwOworCisJZm9yIChpbnN0cnVjdHAgPSBjcHVfc3dpdGNoX2NvZGU7OyBp
bnN0cnVjdHArKykgeworCQlpZiAoaW5zdHJ1Y3RwWzBdID09IF9KUl9SQSkKKwkJCXBhbmljKCIl
czogVW5hYmxlIHRvIHBhdGNoIGNwdV9zd2l0Y2goKS4iLCBfX2Z1bmNfXyk7CisJCWlmIChpbnN0
cnVjdHBbMF0gPT0gX0xPQURfVDBfTURUTFNfQTEgJiYKKwkJICAgIGluc3RydWN0cFsxXSA9PSBf
QURESVVfVjBfVDBfVExTX09GRlNFVCAmJgorCQkgICAgaW5zdHJ1Y3RwWzJdID09IF9NVEMwX1Yw
X1VTRVJMT0NBTCkgeworCQkJaW5zdHJ1Y3RwWzBdID0gX0pSX1JBOworCQkJaW5zdHJ1Y3RwWzFd
ID0gX05PUDsKKwkJCWJyZWFrOworCQl9CisJfQorfQorCisvKgogICogQXR0ZW1wdCB0byBpZGVu
dGlmeSB0aGUgTUlQUyBDUFUgYXMgbXVjaCBhcyBwb3NzaWJsZS4KICAqCiAgKiBYWFg6IEFzc3Vt
ZXMgdGhlIENQVSBpcyBNSVBTezMyLDY0fXsscjJ9IGNvbXBsaWFudC4KQEAgLTczLDkgKzEzNCw4
IEBAIG1pcHNfZ2V0X2lkZW50aXR5KHN0cnVjdCBtaXBzX2NwdWluZm8gKmNwdWluZm8pCiAJdV9p
bnQzMl90IHByaWQ7CiAJdV9pbnQzMl90IGNmZzA7CiAJdV9pbnQzMl90IGNmZzE7Ci0jaWZuZGVm
IENQVV9DTk1JUFMKIAl1X2ludDMyX3QgY2ZnMjsKLSNlbmRpZgorCXVfaW50MzJfdCBjZmczOwog
I2lmIGRlZmluZWQoQ1BVX0NOTUlQUykKIAl1X2ludDMyX3QgY2ZnNDsKICNlbmRpZgpAQCAtOTYs
MTMgKzE1NiwzNiBAQCBtaXBzX2dldF9pZGVudGl0eShzdHJ1Y3QgbWlwc19jcHVpbmZvICpjcHVp
bmZvKQogCSAgICAoKGNmZzAgJiBNSVBTX0NPTkZJRzBfTVRfTUFTSykgPj4gTUlQU19DT05GSUcw
X01UX1NISUZUKTsKIAljcHVpbmZvLT5pY2FjaGVfdmlydHVhbCA9IGNmZzAgJiBNSVBTX0NPTkZJ
RzBfVkk7CiAKLQkvKiBJZiBjb25maWcgcmVnaXN0ZXIgc2VsZWN0aW9uIDEgZG9lcyBub3QgZXhp
c3QsIGV4aXQuICovCi0JaWYgKCEoY2ZnMCAmIE1JUFNfQ09ORklHX0NNKSkKKwkvKiBJZiBjb25m
aWcgcmVnaXN0ZXIgc2VsZWN0aW9uIDEgZG9lcyBub3QgZXhpc3QsIHJldHVybi4gKi8KKwlpZiAo
IShjZmcwICYgTUlQU19DT05GSUcwX00pKQogCQlyZXR1cm47CiAKIAkvKiBMZWFybiBUTEIgc2l6
ZSBhbmQgTDEgY2FjaGUgZ2VvbWV0cnkuICovCiAJY2ZnMSA9IG1pcHNfcmRfY29uZmlnMSgpOwog
CisJLyogR2V0IHRoZSBDb25maWcyIGFuZCBDb25maWczIHJlZ2lzdGVycyBhcyB3ZWxsLiAqLwor
CWlmIChjZmcxICYgTUlQU19DT05GSUcxX00pIHsKKwkJY2ZnMiA9IG1pcHNfcmRfY29uZmlnMigp
OworCQlpZiAoY2ZnMiAmIE1JUFNfQ09ORklHMl9NKQorCQkJY2ZnMyA9IG1pcHNfcmRfY29uZmln
MygpOworCX0KKworCS8qIENoZWNrIHRvIHNlZSBpZiBVc2VyTG9jYWwgcmVnaXN0ZXIgaXMgaW1w
bGVtZW50ZWQuICovCisJaWYgKGNmZzMgJiBNSVBTX0NPTkZJRzNfVUxSKSB7CisJCS8qIFVzZXJM
b2NhbCByZWdpc3RlciBpcyBpbXBsZW1lbnRlZCwgZW5hYmxlIGl0LiAqLworCQljcHVpbmZvLT51
c2VybG9jYWxfcmVnID0gdHJ1ZTsKKwkJdG1wID0gbWlwc19yZF9od3JlbmEoKTsKKwkJbWlwc193
cl9od3JlbmEodG1wIHwgTUlQU19IV1JFTkFfVUwpOworCX0gZWxzZSB7CisJCS8qCisJCSAqIFVz
ZXJMb2NhbCByZWdpc3RlciBpcyBub3QgaW1wbGVtZW50ZWQuIFBhdGNoCisJCSAqIGNwdV9zd2l0
Y2goKSBhbmQgcmVtb3ZlIHVuc3VwcG9ydGVkIGNvZGUuCisJCSAqLworCQljcHVpbmZvLT51c2Vy
bG9jYWxfcmVnID0gZmFsc2U7CisJCXJlbW92ZV91c2VybG9jYWxfY29kZSgodWludDMyX3QgKilj
cHVfc3dpdGNoKTsKKwl9CisKKwogI2lmIGRlZmluZWQoQ1BVX05MTSkKIAkvKiBBY2NvdW50IGZv
ciBFeHRlbmRlZCBUTEIgZW50cmllcyBpbiBYTFAgKi8KIAl0bXAgPSBtaXBzX3JkX2NvbmZpZzYo
KTsKQEAgLTM4Nyw3ICs0NzAsNyBAQCBjcHVfaWRlbnRpZnkodm9pZCkKIAogCS8qIFByaW50IENv
bmZpZzMgaWYgaXQgY29udGFpbnMgYW55IHVzZWZ1bCBpbmZvICovCiAJaWYgKGNmZzMgJiB+KDB4
ODAwMDAwMDApKQotCQlwcmludGYoIiAgQ29uZmlnMz0weCViXG4iLCBjZmczLCAiXDIwXDJTbWFy
dE1JUFNcMVRyYWNlTG9naWMiKTsKKwkJcHJpbnRmKCIgIENvbmZpZzM9MHglYlxuIiwgY2ZnMywg
IlwyMFwxNFVMUklcMlNtYXJ0TUlQU1wxVHJhY2VMb2dpYyIpOwogfQogCiBzdGF0aWMgc3RydWN0
IHJtYW4gY3B1X2hhcmRpcnFfcm1hbjsKSW5kZXg6IHN5cy9taXBzL21pcHMvZ2VuYXNzeW0uYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBzeXMvbWlwcy9taXBzL2dlbmFzc3ltLmMJKHJldmlzaW9uIDMwMzEyNikK
KysrIHN5cy9taXBzL21pcHMvZ2VuYXNzeW0uYwkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcs
NyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8bWFjaGluZS9wY2IuaD4KICNp
bmNsdWRlIDxtYWNoaW5lL3NpZ2ZyYW1lLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9wcm9jLmg+Cisj
aW5jbHVkZSA8bWFjaGluZS90bHMuaD4KIAogI2lmZGVmCUNQVV9DTk1JUFMKICNpbmNsdWRlIDxt
YWNoaW5lL29jdGVvbl9jb3AyLmg+CkBAIC03Miw3ICs3MywxNCBAQCBBU1NZTShURF9LU1RBQ0ss
IG9mZnNldG9mKHN0cnVjdCB0aHJlYWQsIHRkX2tzdGFjawogQVNTWU0oVERfRkxBR1MsIG9mZnNl
dG9mKHN0cnVjdCB0aHJlYWQsIHRkX2ZsYWdzKSk7CiBBU1NZTShURF9MT0NLLCBvZmZzZXRvZihz
dHJ1Y3QgdGhyZWFkLCB0ZF9sb2NrKSk7CiBBU1NZTShURF9NREZMQUdTLCBvZmZzZXRvZihzdHJ1
Y3QgdGhyZWFkLCB0ZF9tZC5tZF9mbGFncykpOworQVNTWU0oVERfTURUTFMsIG9mZnNldG9mKHN0
cnVjdCB0aHJlYWQsIHRkX21kLm1kX3RscykpOwogCisjaWYgZGVmaW5lZChfX21pcHNfbjY0KSAm
JiBkZWZpbmVkKENPTVBBVF9GUkVFQlNEMzIpCitBU1NZTShUTFNfVENCX09GRlNFVCwgKFRMU19U
UF9PRkZTRVQgKyBUTFNfVENCX1NJWkUzMikpOworI2Vsc2UKK0FTU1lNKFRMU19UQ0JfT0ZGU0VU
LCAoVExTX1RQX09GRlNFVCArIFRMU19UQ0JfU0laRSkpOworI2VuZGlmCisKIEFTU1lNKFVfUENC
X1JFR1MsIG9mZnNldG9mKHN0cnVjdCBwY2IsIHBjYl9yZWdzLnplcm8pKTsKIEFTU1lNKFVfUENC
X0NPTlRFWFQsIG9mZnNldG9mKHN0cnVjdCBwY2IsIHBjYl9jb250ZXh0KSk7CiBBU1NZTShVX1BD
Ql9PTkZBVUxULCBvZmZzZXRvZihzdHJ1Y3QgcGNiLCBwY2Jfb25mYXVsdCkpOwpJbmRleDogc3lz
L21pcHMvbWlwcy9zd3RjaC5TCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMvc3d0Y2guUwko
cmV2aXNpb24gMzAzMTI2KQorKysgc3lzL21pcHMvbWlwcy9zd3RjaC5TCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTgsNiArMzU4LDcgQEAgc3cyOgogICogUmVzdG9yZSByZWdpc3RlcnMgYW5kIHJldHVy
bi4KICAqLwogCW1vdmUJYTAsIHMwCisJbW92ZQlhMSwgczcKIAlSRVNUT1JFX1VfUENCX0NPTlRF
WFQoZ3AsIFBDQl9SRUdfR1AsIGEwKQogCVJFU1RPUkVfVV9QQ0JfQ09OVEVYVCh2MCwgUENCX1JF
R19TUiwgYTApCSMgcmVzdG9yZSBrZXJuZWwgY29udGV4dAogCVJFU1RPUkVfVV9QQ0JfQ09OVEVY
VChyYSwgUENCX1JFR19SQSwgYTApCkBAIC0zNzcsNiArMzc4LDE1IEBAIHN3MjoKIAlvcgl2MCwg
djAsIHQwCiAJbXRjMAl2MCwgTUlQU19DT1BfMF9TVEFUVVMKIAlJVExCTk9QRklYCisvKgorICog
U2V0IHRoZSBuZXcgdGhyZWFkJ3MgVExTIHBvaW50ZXIuCisgKgorICogTm90ZSB0aGF0IHRoaXMg
Y29kZSBpcyByZW1vdmVkIGlmIHRoZSBDUFUgZG9lc24ndCBzdXBwb3J0IFVMUkkgYnkKKyAqIHJl
bW92ZV91c2VybG9jYWxfY29kZSgpIGluIGNwdS5jLgorICovCisJUFRSX0wJdDAsIFREX01EVExT
KGExKQkJIyBHZXQgVExTIHBvaW50ZXIKKwlQVFJfQURESVUgdjAsIHQwLCBUTFNfVENCX09GRlNF
VAkjIEFkZCBUTFMvVENCIG9mZnNldAorCU1UQzAJdjAsIE1JUFNfQ09QXzBfVVNFUkxPQ0FMLCAy
CSMgd3JpdGUgaXQgdG8gVUxSIGZvciByZGh3cgogCiAJaglyYQogCW5vcApJbmRleDogc3lzL21p
cHMvbWlwcy9zeXNfbWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMvc3lzX21h
Y2hkZXAuYwkocmV2aXNpb24gMzAzMTI2KQorKysgc3lzL21pcHMvbWlwcy9zeXNfbWFjaGRlcC5j
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSwxMSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7
CiAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KICNpbmNsdWRlIDxzeXMvc3lzZW50Lmg+CiAKKyNp
bmNsdWRlIDxtYWNoaW5lL2NwdWZ1bmMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdWluZm8uaD4K
ICNpbmNsdWRlIDxtYWNoaW5lL3N5c2FyY2guaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdXJlZ3Mu
aD4KKyNpbmNsdWRlIDxtYWNoaW5lL3Rscy5oPgogCiAjaWZuZGVmIF9TWVNfU1lTUFJPVE9fSF8K
IHN0cnVjdCBzeXNhcmNoX2FyZ3MgewpAQCAtNTcsNiArNjEsMjIgQEAgc3lzYXJjaChzdHJ1Y3Qg
dGhyZWFkICp0ZCwgc3RydWN0IHN5c2FyY2hfYXJncyAqdWEKIAlzd2l0Y2ggKHVhcC0+b3ApIHsK
IAljYXNlIE1JUFNfU0VUX1RMUzoKIAkJdGQtPnRkX21kLm1kX3RscyA9IHVhcC0+cGFybXM7CisK
KwkJLyoKKwkJICogSWYgdGhlcmUgaXMgYW4gdXNlciBsb2NhbCByZWdpc3RlciBpbXBsZW1lbnRh
dGlvbiAoVUxSSSkKKwkJICogdXBkYXRlIGl0IGFzIHdlbGwuICBBZGQgdGhlIFRMUyBhbmQgVENC
IG9mZnNldHMgc28gdGhlCisJCSAqIHZhbHVlIGluIHRoaXMgcmVnaXN0ZXIgaXMgYWRqdXN0ZWQg
bGlrZSBpbiB0aGUgY2FzZSBvZiB0aGUKKwkJICogcmRod3IgdHJhcCgpIGluc3RydWN0aW9uIGhh
bmRsZXIuCisJCSAqLworCQlpZiAoY3B1aW5mby51c2VybG9jYWxfcmVnID09IHRydWUpIHsKKyNp
ZiBkZWZpbmVkKF9fbWlwc19uNjQpICYmIGRlZmluZWQoQ09NUEFUX0ZSRUVCU0QzMikKKwkJCW1p
cHNfd3JfdXNlcmxvY2FsKCh1bnNpZ25lZCBsb25nKSh1YXAtPnBhcm1zICsKKwkJCSAgICBUTFNf
VFBfT0ZGU0VUICsgVExTX1RDQl9TSVpFMzIpKTsKKyNlbHNlCisJCQltaXBzX3dyX3VzZXJsb2Nh
bCgodW5zaWduZWQgbG9uZykodWFwLT5wYXJtcyArCisJCQkgICAgVExTX1RQX09GRlNFVCArIFRM
U19UQ0JfU0laRSkpOworI2VuZGlmCisJCX0KIAkJcmV0dXJuICgwKTsKIAljYXNlIE1JUFNfR0VU
X1RMUzogCiAJCXRsc2Jhc2UgPSB0ZC0+dGRfbWQubWRfdGxzOwpJbmRleDogc3lzL21pcHMvbWlw
cy92bV9tYWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvbWlwcy92bV9tYWNoZGVwLmMJ
KHJldmlzaW9uIDMwMzEyNikKKysrIHN5cy9taXBzL21pcHMvdm1fbWFjaGRlcC5jCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw4ICs2MCwxMSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVk
ZSA8bWFjaGluZS9jYWNoZS5oPgogI2luY2x1ZGUgPG1hY2hpbmUvY2xvY2suaD4KICNpbmNsdWRl
IDxtYWNoaW5lL2NwdS5oPgorI2luY2x1ZGUgPG1hY2hpbmUvY3B1ZnVuYy5oPgorI2luY2x1ZGUg
PG1hY2hpbmUvY3B1aW5mby5oPgogI2luY2x1ZGUgPG1hY2hpbmUvbWRfdmFyLmg+CiAjaW5jbHVk
ZSA8bWFjaGluZS9wY2IuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3Rscy5oPgogCiAjaW5jbHVkZSA8
dm0vdm0uaD4KICNpbmNsdWRlIDx2bS92bV9leHRlcm4uaD4KQEAgLTQ5Miw2ICs0OTUsMTUgQEAg
Y3B1X3NldF91c2VyX3RscyhzdHJ1Y3QgdGhyZWFkICp0ZCwgdm9pZCAqdGxzX2Jhc2UKIHsKIAog
CXRkLT50ZF9tZC5tZF90bHMgPSAoY2hhciopdGxzX2Jhc2U7CisJaWYgKHRkID09IGN1cnRocmVh
ZCAmJiBjcHVpbmZvLnVzZXJsb2NhbF9yZWcgPT0gdHJ1ZSkgeworI2lmIGRlZmluZWQoX19taXBz
X242NCkgJiYgZGVmaW5lZChDT01QQVRfRlJFRUJTRDMyKQorCQltaXBzX3dyX3VzZXJsb2NhbCgo
dW5zaWduZWQgbG9uZyl0bHNfYmFzZSArIFRMU19UUF9PRkZTRVQgKworCQkgICAgVExTX1RDQl9T
SVpFMzIpOworI2Vsc2UKKwkJbWlwc193cl91c2VybG9jYWwoKHVuc2lnbmVkIGxvbmcpdGxzX2Jh
c2UgKyBUTFNfVFBfT0ZGU0VUICsKKwkJICAgIFRMU19UQ0JfU0laRSk7CisjZW5kaWYKKwl9CiAK
IAlyZXR1cm4gKDApOwogfQo=
--001a11439d44118ba505382739d7
Content-Type: application/octet-stream; name="ulri_user.diff"
Content-Disposition: attachment; filename="ulri_user.diff"
Content-Transfer-Encoding: base64
Content-ID: <82ebdf5d-27eb-4c9b-6af4-077c60c381ac@yahoo.com>
X-Attachment-Id: 32c534173ab0075c_0.2

SW5kZXg6IGxpYi9saWJ0aHIvYXJjaC9taXBzL2luY2x1ZGUvcHRocmVhZF9tZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGxpYi9saWJ0aHIvYXJjaC9taXBzL2luY2x1ZGUvcHRocmVhZF9tZC5oCShyZXZpc2lv
biAzMDMxMjYpCisrKyBsaWIvbGlidGhyL2FyY2gvbWlwcy9pbmNsdWRlL3B0aHJlYWRfbWQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQCBfdGNiX3NldChzdHJ1Y3QgdGNiICp0Y2Ip
CiAvKgogICogR2V0IHRoZSBjdXJyZW50IHRjYi4KICAqLworI2lmZGVmIFRMU19VU0VfU1lTQVJD
SAogc3RhdGljIF9faW5saW5lIHN0cnVjdCB0Y2IgKgogX3RjYl9nZXQodm9pZCkKIHsKQEAgLTcw
LDYgKzcxLDU1IEBAIF90Y2JfZ2V0KHZvaWQpCiAJcmV0dXJuIHRjYjsKIH0KIAorI2Vsc2UgLyog
ISBUTFNfVVNFX1NZU0FSQ0ggKi8KKworIyAgaWYgZGVmaW5lZChfX21pcHNfbjY0KQorc3RhdGlj
IF9faW5saW5lIHN0cnVjdCB0Y2IgKgorX3RjYl9nZXQodm9pZCkKK3sKKwl1aW50NjRfdCBfcnY7
CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisJICAgICIuc2V0XHRwdXNoXG5cdCIKKwkgICAg
Ii5zZXRcdG1pcHM2NHIyXG5cdCIKKwkgICAgInJkaHdyXHQlMCwgJDI5XG5cdCIKKwkgICAgIi5z
ZXRcdHBvcCIKKwkgICAgOiAiPXYiIChfcnYpKTsKKworCS8qCisJICogWFhYU1MgU2VlICdnaXQg
c2hvdyBjNmJlNGY0ZDJkMWI3MWMwNGRlNWQzYmJiNjkzM2NlMmRiY2RiMzE3JworCSAqCisJICog
UmVtb3ZlIHRoZSBvZmZzZXQgc2luY2UgdGhpcyByZWFsbHkgYSByZXF1ZXN0IHRvIGdldCB0aGUg
VExTCisJICogcG9pbnRlciB2aWEgc3lzYXJjaCgpIChpbiB0aGVvcnkpLiAgT2YgY291cnNlLCB0
aGlzIG1heSBnbyBhd2F5CisJICogb25jZSB0aGUgVExTIGNvZGUgaXMgcmV3cml0dGVuLgorCSAq
LworCXJldHVybiAoc3RydWN0IHRjYiAqKShfcnYgLSBUTFNfVFBfT0ZGU0VUIC0gVExTX1RDQl9T
SVpFKTsKK30KKyMgIGVsc2UgLyogbWlwcyAzMiAqLworc3RhdGljIF9faW5saW5lIHN0cnVjdCB0
Y2IgKgorX3RjYl9nZXQodm9pZCkKK3sKKwl1aW50MzJfdCBfcnY7CisKKwlfX2FzbV9fIF9fdm9s
YXRpbGVfXyAoCisJICAgICIuc2V0XHRwdXNoXG5cdCIKKwkgICAgIi5zZXRcdG1pcHMzMnIyXG5c
dCIKKwkgICAgInJkaHdyXHQlMCwgJDI5XG5cdCIKKwkgICAgIi5zZXRcdHBvcCIKKwkgICAgOiAi
PXYiIChfcnYpKTsKKworCS8qCisJICogWFhYU1MgU2VlICdnaXQgc2hvdyBjNmJlNGY0ZDJkMWI3
MWMwNGRlNWQzYmJiNjkzM2NlMmRiY2RiMzE3JworCSAqCisJICogUmVtb3ZlIHRoZSBvZmZzZXQg
c2luY2UgdGhpcyByZWFsbHkgYSByZXF1ZXN0IHRvIGdldCB0aGUgVExTCisJICogcG9pbnRlciB2
aWEgc3lzYXJjaCgpIChpbiB0aGVvcnkpLiAgT2YgY291cnNlLCB0aGlzIG1heSBnbyBhd2F5CisJ
ICogb25jZSB0aGUgVExTIGNvZGUgaXMgcmV3cml0dGVuLgorCSAqLworCXJldHVybiAoc3RydWN0
IHRjYiAqKShfcnYgLSBUTFNfVFBfT0ZGU0VUIC0gVExTX1RDQl9TSVpFKTsKK30KKyMgIGVuZGlm
IC8qICEgX19taXBzX242NCAqLworI2VuZGlmIC8qICEgVExTX1VTRV9TWVNBUkNIICovCisKIGV4
dGVybiBzdHJ1Y3QgcHRocmVhZCAqX3Rocl9pbml0aWFsOwogCiBzdGF0aWMgX19pbmxpbmUgc3Ry
dWN0IHB0aHJlYWQgKgpJbmRleDogbGliZXhlYy9ydGxkLWVsZi9taXBzL3JlbG9jLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gbGliZXhlYy9ydGxkLWVsZi9taXBzL3JlbG9jLmMJKHJldmlzaW9uIDMwMzEyNikK
KysrIGxpYmV4ZWMvcnRsZC1lbGYvbWlwcy9yZWxvYy5jCSh3b3JraW5nIGNvcHkpCkBAIC02MzQs
MTMgKzYzNCw2NyBAQCBhbGxvY2F0ZV9pbml0aWFsX3RscyhPYmpfRW50cnkgKm9ianMpCiAJc3lz
YXJjaChNSVBTX1NFVF9UTFMsIHRscyk7CiB9CiAKKyNpZmRlZiBfX21pcHNfbjY0CiB2b2lkICoK
K19taXBzX2dldF90bHModm9pZCkKK3sKKwl1aW50NjRfdCBfcnY7CisKKwlfX2FzbV9fIF9fdm9s
YXRpbGVfXyAoCisJICAgICIuc2V0XHRwdXNoXG5cdCIKKwkgICAgIi5zZXRcdG1pcHM2NHIyXG5c
dCIKKwkgICAgInJkaHdyXHQlMCwgJDI5XG5cdCIKKwkgICAgIi5zZXRcdHBvcCIKKwkgICAgOiAi
PXYiIChfcnYpKTsKKwkvKgorCSAqIFhYWFNTIFNlZSAnZ2l0IHNob3cgYzZiZTRmNGQyZDFiNzFj
MDRkZTVkM2JiYjY5MzNjZTJkYmNkYjMxNycKKwkgKgorCSAqIFJlbW92ZSB0aGUgb2Zmc2V0IHNp
bmNlIHRoaXMgcmVhbGx5IGEgcmVxdWVzdCB0byBnZXQgdGhlIFRMUworCSAqIHBvaW50ZXIgdmlh
IHN5c2FyY2goKSAoaW4gdGhlb3J5KS4gIE9mIGNvdXJzZSwgdGhpcyBtYXkgZ28gYXdheQorCSAq
IG9uY2UgdGhlIFRMUyBjb2RlIGlzIHJld3JpdHRlbi4KKwkgKi8KKwlfcnYgPSBfcnYgLSBUTFNf
VFBfT0ZGU0VUIC0gVExTX1RDQl9TSVpFOworCisJcmV0dXJuICh2b2lkICopX3J2OworfQorCisj
ZWxzZSAvKiBtaXBzIDMyICovCisKK3ZvaWQgKgorX21pcHNfZ2V0X3Rscyh2b2lkKQoreworCXVp
bnQzMl90IF9ydjsKKworCV9fYXNtX18gX192b2xhdGlsZV9fICgKKwkgICAgIi5zZXRcdHB1c2hc
blx0IgorCSAgICAiLnNldFx0bWlwczMycjJcblx0IgorCSAgICAicmRod3JcdCUwLCAkMjlcblx0
IgorCSAgICAiLnNldFx0cG9wIgorCSAgICA6ICI9diIgKF9ydikpOworCS8qCisJICogWFhYU1Mg
U2VlICdnaXQgc2hvdyBjNmJlNGY0ZDJkMWI3MWMwNGRlNWQzYmJiNjkzM2NlMmRiY2RiMzE3Jwor
CSAqCisJICogUmVtb3ZlIHRoZSBvZmZzZXQgc2luY2UgdGhpcyByZWFsbHkgYSByZXF1ZXN0IHRv
IGdldCB0aGUgVExTCisJICogcG9pbnRlciB2aWEgc3lzYXJjaCgpIChpbiB0aGVvcnkpLiAgT2Yg
Y291cnNlLCB0aGlzIG1heSBnbyBhd2F5CisJICogb25jZSB0aGUgVExTIGNvZGUgaXMgcmV3cml0
dGVuLgorCSAqLworCV9ydiA9IF9ydiAtIFRMU19UUF9PRkZTRVQgLSBUTFNfVENCX1NJWkU7CisK
KwlyZXR1cm4gKHZvaWQgKilfcnY7Cit9CisjZW5kaWYgLyogISBfX21pcHNfbjY0ICovCisKK3Zv
aWQgKgogX190bHNfZ2V0X2FkZHIodGxzX2luZGV4KiB0aSkKIHsKIAlFbGZfQWRkcioqIHRsczsK
IAljaGFyICpwOwogCisjaWZkZWYgVExTX1VTRV9TWVNBUkNICiAJc3lzYXJjaChNSVBTX0dFVF9U
TFMsICZ0bHMpOworI2Vsc2UKKwl0bHMgPSBfbWlwc19nZXRfdGxzKCk7CisjZW5kaWYKIAogCXAg
PSB0bHNfZ2V0X2FkZHJfY29tbW9uKHRscywgdGktPnRpX21vZHVsZSwgdGktPnRpX29mZnNldCAr
IFRMU19EVFBfT0ZGU0VUKTsKIAo=
--001a11439d44118ba505382739d7--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmo=EmjCeCqH2SiBkTwEwP5amUEJwmXp1Ve4S6-OXAS5E-Q>