kern/170200: [crypto] [patch] AES-NI XTS mode performance lower
than CBC revised patch
Shane Nievera Tablizo
nievera at mm.st
Fri Sep 7 18:50:12 UTC 2012
The following reply was made to PR kern/170200; it has been noted by GNATS.
From: Shane Nievera Tablizo <nievera at mm.st>
To: bug-followup at FreeBSD.org
Cc:
Subject: kern/170200: [crypto] [patch] AES-NI XTS mode performance lower than CBC
revised patch
Date: Fri, 07 Sep 2012 12:40:48 -0600
This is a multi-part message in MIME format.
--_----------=_1347043248118301
Content-Transfer-Encoding: 7bit
Content-Type: text/plain
This update removes the perl/openssl dependencies. The c implementation
is a drop-in replacement for the existing assembly code. It captures
most of the performance of the openssl module, and I still have a few
optimizations to try. amd64 only until I get clang to cross compile the
module. gcc4.2 lacks the opcodes for the new instructions, but it will
compile with gcc47 from ports. The module will compile with -mavx and
improves performance in user-space.
Shane Nievera Tablizo nievera at mm.st
--_----------=_1347043248118301
Content-Disposition: attachment; filename="patchv2.txt"
Content-Id: <1347042863.10252.fae6270cf6c45bc6aa9d45c129ec3636611c6b50 at messagingengine.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; name="patchv2.txt"
SW5kZXg6IGNvbmYvZmlsZXMuYW1kNjQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gY29uZi9maWxlcy5hbWQ2NAkocmV2aXNpb24gMjQwMTI3KQorKysg
Y29uZi9maWxlcy5hbWQ2NAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMs
MTEgQEAKIAluby1vYmogbm8taW1wbGljaXQtcnVsZQliZWZvcmUtZGVwZW5k
CQkJCVwKIAljbGVhbgkJImFjcGlfd2FrZWRhdGEuaCIKICMKK2Flc19lbmNk
ZWMubwkJCW9wdGlvbmFsCWFlc25pCQkJXAorCWRlcGVuZGVuY3kJIiRTL2Ny
eXB0by9hZXNuaS9hZXNfZW5jZGVjLmMiCQkJXAorCWNvbXBpbGUtd2l0aAki
Y2xhbmcgJHtDRkxBR1M6Ti1tbm8tc3NlfSAtbXNzZSAtYyAkey5JTVBTUkN9
IglcCisJbm8taW1wbGljaXQtcnVsZSBjbGVhbiAiYWVzX2VuY2RlYy5vIgor
IwogYW1kNjQvYW1kNjQvYW1kNjRfbWVtLmMJCW9wdGlvbmFsCW1lbQogI2Ft
ZDY0L2FtZDY0L2FwaWNfdmVjdG9yLlMJc3RhbmRhcmQKIGFtZDY0L2FtZDY0
L2F0b21pYy5jCQlzdGFuZGFyZApAQCAtMTMxLDcgKzEzNiw3IEBACiBhbWQ2
NC9hbWQ2NC92bV9tYWNoZGVwLmMJc3RhbmRhcmQKIGFtZDY0L3BjaS9wY2lf
Y2ZncmVnLmMJCW9wdGlvbmFsCXBjaQogY2RkbC9jb250cmliL29wZW5zb2xh
cmlzL2NvbW1vbi9hdG9taWMvYW1kNjQvb3BlbnNvbGFyaXNfYXRvbWljLlMJ
b3B0aW9uYWwgemZzIGNvbXBpbGUtd2l0aCAiJHtaRlNfU30iCi1jcnlwdG8v
YWVzbmkvYWVzZW5jZGVjX2FtZDY0LlMJb3B0aW9uYWwgYWVzbmkKKyNjcnlw
dG8vYWVzbmkvYWVzZW5jZGVjX2FtZDY0LlMJb3B0aW9uYWwgYWVzbmkKIGNy
eXB0by9hZXNuaS9hZXNrZXlzX2FtZDY0LlMJb3B0aW9uYWwgYWVzbmkKIGNy
eXB0by9hZXNuaS9hZXNuaS5jCQlvcHRpb25hbCBhZXNuaQogY3J5cHRvL2Fl
c25pL2Flc25pX3dyYXAuYwlvcHRpb25hbCBhZXNuaQpJbmRleDogY3J5cHRv
L2Flc25pL2Flc25pLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3J5
cHRvL2Flc25pL2Flc25pLmgJKHJldmlzaW9uIDI0MDEyNykKKysrIGNyeXB0
by9hZXNuaS9hZXNuaS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCwx
NSBAQAogdm9pZCBhZXNuaV9kZWNyeXB0X2VjYihpbnQgcm91bmRzLCBjb25z
dCB2b2lkICprZXlfc2NoZWR1bGUsIHNpemVfdCBsZW4sCiAgICAgY29uc3Qg
dWludDhfdCBmcm9tW0FFU19CTE9DS19MRU5dLCB1aW50OF90IHRvW0FFU19C
TE9DS19MRU5dKTsKIAorI2lmZGVmIF9fYW1kNjRfXwordm9pZCBhZXNuaV9l
bmNyeXB0X3h0cyhpbnQgcm91bmRzLCBjb25zdCB2b2lkICpkYXRhX3NjaGVk
dWxlLAorICAgIGNvbnN0IHZvaWQgKnR3ZWFrX3NjaGVkdWxlLCBzaXplX3Qg
bGVuLCBjb25zdCB1aW50OF90ICpmcm9tLCB1aW50OF90ICp0bywKKyAgICBj
b25zdCB1aW50OF90IGl2W0FFU19CTE9DS19MRU5dKTsKK3ZvaWQgYWVzbmlf
ZGVjcnlwdF94dHMoaW50IHJvdW5kcywgY29uc3Qgdm9pZCAqZGF0YV9zY2hl
ZHVsZSwKKyAgICBjb25zdCB2b2lkICp0d2Vha19zY2hlZHVsZSwgc2l6ZV90
IGxlbiwgY29uc3QgdWludDhfdCAqZnJvbSwgdWludDhfdCAqdG8sCisgICAg
Y29uc3QgdWludDhfdCBpdltBRVNfQkxPQ0tfTEVOXSk7CisjZW5kaWYKKwog
aW50IGFlc25pX2NpcGhlcl9zZXR1cChzdHJ1Y3QgYWVzbmlfc2Vzc2lvbiAq
c2VzLAogICAgIHN0cnVjdCBjcnlwdG9pbmkgKmVuY2luaSk7CiBpbnQgYWVz
bmlfY2lwaGVyX3Byb2Nlc3Moc3RydWN0IGFlc25pX3Nlc3Npb24gKnNlcywK
SW5kZXg6IGNyeXB0by9hZXNuaS9hZXNfZW5jZGVjLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gY3J5cHRvL2Flc25pL2Flc19lbmNkZWMuYwkocmV2
aXNpb24gMCkKKysrIGNyeXB0by9hZXNuaS9hZXNfZW5jZGVjLmMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMTEgQEAKKy8qLQorICogQ29weXJpZ2h0
IChjKSAyMDEyIFNoYW5lIE5pZXZlcmEgVGFibGl6bworICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5E
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisg
KiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPHN5cy9wYXJh
bS5oPgorI2lmZGVmIF9LRVJORUwKKyNpbmNsdWRlIDxjcnlwdG8vYWVzbmkv
YWVzbmkuaD4KKyNlbmRpZgorCisjaWZuZGVmIF9LRVJORUwKKyNpbmNsdWRl
ICJhZXNfZW5jZGVjLmgiCisjZW5kaWYKKwordHlwZWRlZiB1aW50NjRfdAlk
cXVhZCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7Cit0
eXBlZGVmIGludAkJcV9pbnQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6
ZV9fKDE2KSkpOworCisjZGVmaW5lIFY0WkVSTwkJKHFfaW50KXsgMCwgMCwg
MCwgMH0KKworI2RlZmluZSBERUZBU00obW4sIG91dF90LCBpbl90LCBpbl9z
cGVjKQkJCQlcCisJc3RhdGljIGlubGluZSBvdXRfdCBfX2F0dHJpYnV0ZV9f
KChhbHdheXNfaW5saW5lKSkJCVwKKwltbiAjIyBfYXNtKG91dF90IF9fYSwg
aW5fdCBfX2IpCQkJCQlcCisJeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJX19h
c21fXygjbW4gIiAlMSwgJTAiIDogIismeCIgKF9fYSkgOiBpbl9zcGVjIChf
X2IpKTsJXAorCQlyZXR1cm4gKF9fYSk7CQkJCQkJXAorCX0KKworI2RlZmlu
ZSBTV19ST1VORFMocm91bmRzLCBmKQkJCQkJCVwKKwlzd2l0Y2ggKHJvdW5k
cykgewkJCQkJCVwKKwkJY2FzZSBBRVMxMjhfUk9VTkRTOiByb3VuZHMgPSBB
RVMxMjhfUk9VTkRTOyBmOyBicmVhazsJXAorCQljYXNlIEFFUzE5Ml9ST1VO
RFM6IHJvdW5kcyA9IEFFUzE5Ml9ST1VORFM7IGY7IGJyZWFrOwlcCisJCWNh
c2UgQUVTMjU2X1JPVU5EUzogcm91bmRzID0gQUVTMjU2X1JPVU5EUzsgZjsg
YnJlYWs7CVwKKwl9CisKK0RFRkFTTShwc3JhZCwgZHF1YWQsIGludCwgIkki
KQorREVGQVNNKGFlc2VuYywgZHF1YWQsIGRxdWFkLCAieCIpCitERUZBU00o
YWVzZGVjLCBkcXVhZCwgZHF1YWQsICJ4IikKK0RFRkFTTShhZXNlbmNsYXN0
LCBkcXVhZCwgZHF1YWQsICJ4IikKK0RFRkFTTShhZXNkZWNsYXN0LCBkcXVh
ZCwgZHF1YWQsICJ4IikKKworc3RhdGljIGlubGluZSBkcXVhZCBfX2F0dHJp
YnV0ZV9fKChhbHdheXNfaW5saW5lKSkKK2xvYWR1X2FzbShjb25zdCBkcXVh
ZCAqcmVzdHJpY3QgcCkKK3sKKwlkcXVhZCB6OworCisJX19hc21fXygibW92
ZHF1CSUxLCAlMCIgOiAiPXgiICh6KSA6ICJtIiAoKnApKTsKKworCXJldHVy
biAoeik7Cit9CisKKyNkZWZpbmUgbG9hZHUoeCkJCWxvYWR1X2FzbSgoeCkp
CisjZGVmaW5lIHBzcmFkKGkseCkJCXBzcmFkX2FzbSgoeCksIChpKSkKKyNk
ZWZpbmUgYWVzZW5jCQkJYWVzZW5jX2FzbQorI2RlZmluZSBhZXNkZWMJCQlh
ZXNkZWNfYXNtCisjZGVmaW5lIGFlc2RlY2xhc3QJCWFlc2RlY2xhc3RfYXNt
CisjZGVmaW5lIGFlc2VuY2xhc3QJCWFlc2VuY2xhc3RfYXNtCisKK3N0YXRp
YyBpbmxpbmUgZHF1YWQgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkp
Cittb3ZkcXUoY29uc3QgdWludDhfdCAqcmVzdHJpY3QgcCkKK3sKKworCXJl
dHVybiAobG9hZHUoKGRxdWFkKilwKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
ZHF1YWQgX19hdHRyaWJ1dGUoKGFsd2F5c19pbmxpbmUpKQorZW5jZGVjKGlu
dCBkaXIsIGludCByb3VuZHMsIGNvbnN0IGRxdWFkICpyZXN0cmljdCBzY2hl
ZCwgZHF1YWQgdCkKK3sKKworCXQgXj0gKnNjaGVkOworCisJZm9yICg7IC0t
cm91bmRzOykKKwkJdCA9IChkaXIgPyBhZXNlbmMgOiBhZXNkZWMpKHQsICor
K3NjaGVkKTsKKworCXJldHVybiAoZGlyID8gYWVzZW5jbGFzdCA6IGFlc2Rl
Y2xhc3QpKHQsICorK3NjaGVkKTsKK30KKyNkZWZpbmUgQ1JZUFQoeCkJZW5j
ZGVjKGRpciwgcm91bmRzLCAoZHF1YWQqKXNjaGVkLCAoeCkpCisjZGVmaW5l
IERFQyh4KQkJZW5jZGVjKDAsIHJvdW5kcywgKGRxdWFkKilzY2hlZCwgKHgp
KQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGUoKGFsd2F5c19p
bmxpbmUpKQorZGVjcnlwdF9jYmNfWDYoaW50IHJvdW5kcywgY29uc3QgZHF1
YWQgKnJlc3RyaWN0IHNjaGVkLCBzaXplX3QgbiwKKyAgICBkcXVhZCAqcmVz
dHJpY3Qgc3JjLCBkcXVhZCB0MCkKKy8qIFRPRE86ICBQaXBlbGluZSB0aGlz
IHdpdGhvdXQgZXhwbGljaXQgdmFycy4gKi8KK3sKKwlkcXVhZAkgdDEsIHQy
LCB0MywgdDQsIHQ1LCB0NjsKKwlkcXVhZAkgZGEsIGRiLCBkYywgZGQsIGRl
LCBkZjsKKworCXNpemVfdAkgbTsKKwkKKwlpZiAoMCA8IChtID0gbiAvIDYp
KSB7CisJCWRhID0gdDEgPSBzcmNbMF07IGRiID0gdDIgPSBzcmNbMV07IGRj
ID0gdDMgPSBzcmNbMl07CisJCWRkID0gdDQgPSBzcmNbM107IGRlID0gdDUg
PSBzcmNbNF07IGRmID0gdDYgPSBzcmNbNV07CisJCWZvciAoOzspIHsKKwkJ
CWRhID0gREVDKGRhKTsgZGIgPSBERUMoZGIpOyBkYyA9IERFQyhkYyk7CisJ
CQlkZCA9IERFQyhkZCk7IGRlID0gREVDKGRlKTsgZGYgPSBERUMoZGYpOwor
CisJCQkqc3JjID0gZGEgXiB0MDsgKisrc3JjID0gZGIgXiB0MTsgKisrc3Jj
ID0gZGMgXiB0MjsKKwkJCSorK3NyYyA9IGRkIF4gdDM7ICorK3NyYyA9IGRl
IF4gdDQ7ICorK3NyYyA9IGRmIF4gdDU7CisKKwkJCSsrc3JjOworCQkJdDAg
PSB0NjsKKwkJCWlmICgtLW0gPT0gMCkKKwkJCQlicmVhazsKKwkJCWRhID0g
dDEgPSBzcmNbMF07IGRiID0gdDIgPSBzcmNbMV07IGRjID0gdDMgPSBzcmNb
Ml07CisJCQlkZCA9IHQ0ID0gc3JjWzNdOyBkZSA9IHQ1ID0gc3JjWzRdOyBk
ZiA9IHQ2ID0gc3JjWzVdOworCQl9CisJfQorCWlmIChuICUgMiA9PSAxKSB7
CisJCWRhID0gdDEgPSBzcmNbMF07CisJCWRhID0gREVDKGRhKTsKKwkJKnNy
YyA9IGRhIF4gdDA7CisJCSsrc3JjOyAtLW47CisJCXQwID0gdDE7CisKKwl9
CisJc3dpdGNoIChuICU9IDYpIHsKKwkJY2FzZSAyOgorCQkJZGEgPSB0MSA9
IHNyY1swXTsgZGIgPSB0MiA9IHNyY1sxXTsKKwkJCWRhID0gREVDKGRhKTsg
ZGIgPSBERUMoZGIpOworCQkJKnNyYyA9IGRhIF4gdDA7ICorK3NyYyA9IGRi
IF4gdDE7CisJCQkrK3NyYzsKKwkJCXQwID0gdDI7CisJCQlicmVhazsKKwkJ
Y2FzZSA0OgorCQkJZGEgPSB0MSA9IHNyY1swXTsgZGIgPSB0MiA9IHNyY1sx
XTsKKwkJCWRjID0gdDMgPSBzcmNbMl07IGRkID0gdDQgPSBzcmNbM107CisJ
CQlkYSA9IERFQyhkYSk7IGRiID0gREVDKGRiKTsgZGMgPSBERUMoZGMpOyBk
ZCA9IERFQyhkZCk7CisJCQkqc3JjID0gZGEgXiB0MDsgKisrc3JjID0gZGIg
XiB0MTsKKwkJCSorK3NyYyA9IGRjIF4gdDI7ICorK3NyYyA9IGRkIF4gdDM7
CisJCQlicmVhazsKKwl9Cit9CisKKy8qICNkZWZpbmUgR0YxMjhfR0VORVJB
VE9SCTB4ODcgKi8KKworc3RhdGljIGlubGluZSBkcXVhZCBfX2F0dHJpYnV0
ZSgoYWx3YXlzX2lubGluZSkpCitHRjEyOF9zaGwoZHF1YWQgeikKK3sKKwlk
cXVhZCBhLCBjOworCisJYyA9IChkcXVhZCl7IDB4ODcgLyogR0YxMjggZ2Vu
ZXJhdG9yICovLCAxIH07CisKKwlhID0gcHNyYWQoMzEsIF9fYnVpbHRpbl9z
aHVmZmxldmVjdG9yKChxX2ludCl6LCBWNFpFUk8sIDMsIDMsIDEsIDEpKTsK
KworCXJldHVybiAoeiArIHogXiBhICYgYyk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZAoraW5pdF90d2Vha3MoZHF1YWQgKnJlc3RyaWN0IHRzLCBpbnQg
bikKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7ICBpIDwgbiAtIDE7ICsr
aSkKKwkJdHNbaSsxXSA9IEdGMTI4X3NobCh0c1tpXSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZAorb3V0X3hvcihkcXVhZCAqcmVzdHJpY3QgZHMsIGRx
dWFkICpyZXN0cmljdCB0cywgZHF1YWQgKnJlc3RyaWN0ICpkc3QsIGludCBu
KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG47ICsraSwgKysq
ZHN0KQorCQkqKmRzdCA9IGRzW2ldIF4gdHNbaV07Cit9CisKK3N0YXRpYyBp
bmxpbmUgdm9pZAorbGxlbF9jcnlwdChpbnQgZGlyLCBpbnQgcm91bmRzLCBj
b25zdCBkcXVhZCAqcmVzdHJpY3Qgc2NoZWQsIGRxdWFkICpyZXN0cmljdCBk
cywKKyAgICBkcXVhZCAqcmVzdHJpY3QgdHMsIGNvbnN0IGRxdWFkICoqc3Jj
LCBpbnQgbikKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBuOyAr
K2ksICsrKnNyYykKKwkJZHNbaV0gPSBDUllQVCggKipzcmMgXiB0c1tpXSk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZSgoYWx3YXlz
X2lubGluZSkpCitjcnlwdF94ZXhfWDYoaW50IGRpciwgaW50IHJvdW5kcywg
Y29uc3QgZHF1YWQgKnJlc3RyaWN0IHNjaGVkLCBzaXplX3QgbiwKKyAgICBj
b25zdCBkcXVhZCAqc3JjLCBkcXVhZCAqZHN0LCBkcXVhZCB0MCkKK3sKKwlk
cXVhZAlkWzZdOworCWRxdWFkCXRbNl07CisJc2l6ZV90CW07CisKKwl0WzBd
ID0gdDA7CisKKwlpZiAoMCA8IChtID0gbiAvIDYpKSB7CisJCWluaXRfdHdl
YWtzKHQsIDYpOworCQlmb3IgKDs7KSB7CisJCQlsbGVsX2NyeXB0KGRpciwg
cm91bmRzLCBzY2hlZCwgZCwgdCwgJnNyYywgNik7CisJCQlvdXRfeG9yKGQs
IHQsICZkc3QsIDYpOworCQkJdFswXSA9IEdGMTI4X3NobCh0WzVdKTsKKwkJ
CWlmICgtLW0gPT0gMCkKKwkJCQlicmVhazsKKwkJCWluaXRfdHdlYWtzKHQs
IDYpOworCQl9CisKKwl9CisJaWYgKG4gJSAyID09IDEpIHsKKwkJKmRzdCsr
ID0gKnQgXiBDUllQVCgqdCBeICpzcmMrKyk7CisJCSp0ID0gR0YxMjhfc2hs
KCp0KTsKKwkJLS1uOworCX0KKwlzd2l0Y2ggKG4gJT0gNikgeworCWNhc2Ug
MjoKKwkJbiA9IDI7CisJCWluaXRfdHdlYWtzKHQsIG4pOworCQlsbGVsX2Ny
eXB0KGRpciwgcm91bmRzLCBzY2hlZCwgZCwgdCwgJnNyYywgbik7CisJCW91
dF94b3IoZCwgdCwgJmRzdCwgbik7CisJCWJyZWFrOworCWNhc2UgNDoKKwkJ
biA9IDQ7CisJCWluaXRfdHdlYWtzKHQsIG4pOworCQlsbGVsX2NyeXB0KGRp
ciwgcm91bmRzLCBzY2hlZCwgZCwgdCwgJnNyYywgbik7CisJCW91dF94b3Io
ZCwgdCwgJmRzdCwgbik7CisJCWJyZWFrOworCX0KK30KKwordm9pZAorYWVz
bmlfZW5jKGludCByb3VuZHMsIGNvbnN0IHVpbnQ4X3QgKnJlc3RyaWN0IHNj
aGVkLCBjb25zdCB1aW50OF90ICpzcmMsCisgICAgdWludDhfdCAqZHN0LCBj
b25zdCB1aW50OF90ICpyZXN0cmljdCBpdikKK3sKKworCSooZHF1YWQqKWRz
dCA9IGVuY2RlYygxLCByb3VuZHMsIChkcXVhZCopc2NoZWQsIGl2ID09IE5V
TEwgPworCQkJCSooZHF1YWQqKXNyYyA6ICooZHF1YWQqKXNyYyBeIG1vdmRx
dShpdikpOworfQorCit2b2lkCithZXNuaV9kZWMoaW50IHJvdW5kcywgY29u
c3QgdWludDhfdCAqcmVzdHJpY3Qgc2NoZWQsIGNvbnN0IHVpbnQ4X3QgKnNy
YywKKyAgICB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnJlc3RyaWN0
IGl2KQoreworCisJKihkcXVhZCopZHN0ID0gZW5jZGVjKDAsIHJvdW5kcywg
KGRxdWFkKilzY2hlZCwgKihkcXVhZCopc3JjKTsKKwkqKGRxdWFkKilkc3Qg
PSAoaXYgPT0gTlVMTCkgPyAqKGRxdWFkKilkc3QgOiAqKGRxdWFkKilkc3Qg
XiBtb3ZkcXUoaXYpOworfQorCit2b2lkCithZXNuaV9lbmNyeXB0X2NiYyhp
bnQgcm91bmRzLCBjb25zdCB2b2lkICpyZXN0cmljdCBzY2hlZCwgc2l6ZV90
IGxlbiwKKyAgICBjb25zdCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgKmRzdCwg
Y29uc3QgdWludDhfdCAqcmVzdHJpY3QgaXZwKQoreworCWRxdWFkCSBpdjsK
KwlkcXVhZAkqcCwgKnE7CisKKwlsZW4gLz0gQUVTX0JMT0NLX0xFTjsKKwlp
diA9IG1vdmRxdShpdnApOworCXAgPSAoZHF1YWQqKXNyYzsKKwlxID0gKGRx
dWFkKilkc3Q7CisKKyNkZWZpbmUJRU5DUllQVF9DQkNfTE9PUAkJCQkJCVwK
Kwlmb3IgKDsgbGVuLS07ICsrcCwgKytxKSB7CQkJCQlcCisJCWl2ID0gZW5j
ZGVjKDEsIHJvdW5kcywgKGRxdWFkKilzY2hlZCwgKnAgXiBpdik7CQlcCisJ
CSpxID0gaXY7CQkJCQkJXAorCX0KKwlTV19ST1VORFMocm91bmRzLCBFTkNS
WVBUX0NCQ19MT09QKQorfQorCit2b2lkCithZXNuaV9kZWNyeXB0X2NiYyhp
bnQgcm91bmRzLCBjb25zdCB2b2lkICpyZXN0cmljdCBzY2hlZCwgc2l6ZV90
IGxlbiwKKyAgICBjb25zdCB1aW50OF90ICpyZXN0cmljdCBkYXQsIGNvbnN0
IHVpbnQ4X3QgKnJlc3RyaWN0IGl2cCkKK3sKKwlkcXVhZCBpdjsKKworCWl2
ID0gbW92ZHF1KGl2cCk7CisJU1dfUk9VTkRTKHJvdW5kcywgZGVjcnlwdF9j
YmNfWDYocm91bmRzLCBzY2hlZCwgbGVuIC8gQUVTX0JMT0NLX0xFTiwKKwkJ
CQkoZHF1YWQqKWRhdCwgaXYpKQorfQorCisjZGVmaW5lIENSWVBUX1hFWF9Y
NihkaXIpCShcCisJCWNyeXB0X3hleF9YNigoZGlyKSwgcm91bmRzLCBzY2hl
ZCwgbGVuIC8gQUVTX0JMT0NLX0xFTiwJXAorCQkJKGRxdWFkKilzcmMsIChk
cXVhZCopZHN0LAkJCVwKKwkJCWVuY2RlYygxLCByb3VuZHMsIHhzY2hlZCwg
bW92ZHF1KGl2cCkpKQkJXAorCQkpCit2b2lkCithZXNuaV9lbmNyeXB0X3h0
cyhpbnQgcm91bmRzLCBjb25zdCB2b2lkICpyZXN0cmljdCBzY2hlZCwKKyAg
ICBjb25zdCB2b2lkICpyZXN0cmljdCB4c2NoZWQsIHNpemVfdCBsZW4sIGNv
bnN0IHVpbnQ4X3QgKnNyYywgdWludDhfdCAqZHN0LAorICAgIGNvbnN0IHVp
bnQ4X3QgKnJlc3RyaWN0IGl2cCkKK3sKKworCVNXX1JPVU5EUyhyb3VuZHMs
IENSWVBUX1hFWF9YNigxKSkKK30KKwordm9pZAorYWVzbmlfZGVjcnlwdF94
dHMoaW50IHJvdW5kcywgY29uc3Qgdm9pZCAqcmVzdHJpY3Qgc2NoZWQsCisg
ICAgY29uc3Qgdm9pZCAqcmVzdHJpY3QgeHNjaGVkLCBzaXplX3QgbGVuLCBj
b25zdCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgKmRzdCwKKyAgICBjb25zdCB1
aW50OF90ICpyZXN0cmljdCBpdnApCit7CisKKwlTV19ST1VORFMocm91bmRz
LCBDUllQVF9YRVhfWDYoMCkpCit9CisKSW5kZXg6IGNyeXB0by9hZXNuaS9h
ZXNuaV93cmFwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3J5cHRv
L2Flc25pL2Flc25pX3dyYXAuYwkocmV2aXNpb24gMjQwMTI3KQorKysgY3J5
cHRvL2Flc25pL2Flc25pX3dyYXAuYwkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQAogCiBNQUxMT0NfREVDTEFSRShNX0FFU05JKTsKIAorI2lm
bmRlZiBfX2FtZDY0X18KIHZvaWQKIGFlc25pX2VuY3J5cHRfY2JjKGludCBy
b3VuZHMsIGNvbnN0IHZvaWQgKmtleV9zY2hlZHVsZSwgc2l6ZV90IGxlbiwK
ICAgICBjb25zdCB1aW50OF90ICpmcm9tLCB1aW50OF90ICp0bywgY29uc3Qg
dWludDhfdCBpdltBRVNfQkxPQ0tfTEVOXSkKQEAgLTUzLDYgKzU0LDcgQEAK
IAkJdG8gKz0gQUVTX0JMT0NLX0xFTjsKIAl9CiB9CisjZW5kaWYKIAogdm9p
ZAogYWVzbmlfZW5jcnlwdF9lY2IoaW50IHJvdW5kcywgY29uc3Qgdm9pZCAq
a2V5X3NjaGVkdWxlLCBzaXplX3QgbGVuLApAQCAtODIsNiArODQsNyBAQAog
CX0KIH0KIAorI2lmbmRlZiBfX2FtZDY0X18KICNkZWZpbmUJQUVTX1hUU19C
TE9DS1NJWkUJMTYKICNkZWZpbmUJQUVTX1hUU19JVlNJWkUJCTgKICNkZWZp
bmUJQUVTX1hUU19BTFBIQQkJMHg4NwkvKiBHRigyXjEyOCkgZ2VuZXJhdG9y
IHBvbHlub21pYWwgKi8KQEAgLTE2OSw2ICsxNzIsNyBAQAogCWFlc25pX2Ny
eXB0X3h0cyhyb3VuZHMsIGRhdGFfc2NoZWR1bGUsIHR3ZWFrX3NjaGVkdWxl
LCBsZW4sIGZyb20sIHRvLAogCSAgICBpdiwgMCk7CiB9CisjZW5kaWYKIAog
c3RhdGljIGludAogYWVzbmlfY2lwaGVyX3NldHVwX2NvbW1vbihzdHJ1Y3Qg
YWVzbmlfc2Vzc2lvbiAqc2VzLCBjb25zdCB1aW50OF90ICprZXksCkluZGV4
OiBtb2R1bGVzL2Flc25pL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIG1vZHVsZXMvYWVzbmkvTWFrZWZpbGUJKHJldmlzaW9uIDI0MDEy
NykKKysrIG1vZHVsZXMvYWVzbmkvTWFrZWZpbGUJKHdvcmtpbmcgY29weSkK
QEAgLTQsNyArNCwxOSBAQAogCiBLTU9EPQlhZXNuaQogU1JDUz0JYWVzbmku
YyBhZXNuaV93cmFwLmMKLVNSQ1MrPQlhZXNlbmNkZWNfJHtNQUNISU5FX0NQ
VUFSQ0h9LlMgYWVza2V5c18ke01BQ0hJTkVfQ1BVQVJDSH0uUworU1JDUys9
CWFlc2tleXNfJHtNQUNISU5FX0NQVUFSQ0h9LlMKKworLmlmICR7TUFDSElO
RV9DUFVBUkNIfSA9PSAiaTM4NiIKK1NSQ1MrPQlhZXNlbmNkZWNfJHtNQUNI
SU5FX0NQVUFSQ0h9LlMKKy5lbmRpZgorCisuaWYgJHtNQUNISU5FX0NQVUFS
Q0h9ID09ICJhbWQ2NCIKK0FFU05JX0NGTEFHUz0gJChDRkxBR1M6Ti1tbm8t
c3NlKSAtbXNzZQorT0JKUz0JYWVzX2VuY2RlYy5vCithZXNfZW5jZGVjLm86
CWFlc19lbmNkZWMuYworCWNsYW5nICQoQUVTTklfQ0ZMQUdTKSAtbyAkKC5U
QVJHRVQpIC1jICQoLklNUFNSQykKKy5lbmRpZgorCiBTUkNTKz0JZGV2aWNl
X2lmLmggYnVzX2lmLmggb3B0X2J1cy5oIGNyeXB0b2Rldl9pZi5oCiAKIC5p
bmNsdWRlIDxic2Qua21vZC5taz4KCiNiZW5jaG1hcmsKICAgMy45MTcgc2Vj
LCAyMDAwMDAwICAgIGFlcyBjcnlwdHMsICAgICAgMTYgYnl0ZXMsICA4MTY5
Mzk0IGJ5dGUvc2VjLCAgICA2Mi4zIE1iL3NlYwogICAzLjk1NyBzZWMsIDIw
MDAwMDAgICAgeHRzIGNyeXB0cywgICAgICAxNiBieXRlcywgIDgwODc0MTMg
Ynl0ZS9zZWMsICAgIDYxLjcgTWIvc2VjCiAgIDMuOTI1IHNlYywgMjAwMDAw
MCBhZXMxOTIgY3J5cHRzLCAgICAgIDE2IGJ5dGVzLCAgODE1MjU4NiBieXRl
L3NlYywgICAgNjIuMiBNYi9zZWMKICAgMy45Mjkgc2VjLCAyMDAwMDAwIGFl
czI1NiBjcnlwdHMsICAgICAgMTYgYnl0ZXMsICA4MTQzNzM3IGJ5dGUvc2Vj
LCAgICA2Mi4xIE1iL3NlYwogICAzLjk4OCBzZWMsIDIwMDAwMDAgeHRzMjU2
IGNyeXB0cywgICAgICAxNiBieXRlcywgIDgwMjM2MjQgYnl0ZS9zZWMsICAg
IDYxLjIgTWIvc2VjCiAgIDUuMzA5IHNlYywgMjAwMDAwMCAgICBhZXMgY3J5
cHRzLCAgICAgNTEyIGJ5dGVzLCAxOTI4OTE3MTQgYnl0ZS9zZWMsICAxNDcx
LjYgTWIvc2VjCiAgIDQuODA0IHNlYywgMjAwMDAwMCAgICB4dHMgY3J5cHRz
LCAgICAgNTEyIGJ5dGVzLCAyMTMxNTM5NzMgYnl0ZS9zZWMsICAxNjI2LjIg
TWIvc2VjCiAgIDUuNTE1IHNlYywgMjAwMDAwMCBhZXMxOTIgY3J5cHRzLCAg
ICAgNTEyIGJ5dGVzLCAxODU2NzQxODUgYnl0ZS9zZWMsICAxNDE2LjYgTWIv
c2VjCiAgIDUuNzM0IHNlYywgMjAwMDAwMCBhZXMyNTYgY3J5cHRzLCAgICAg
NTEyIGJ5dGVzLCAxNzg1NzA3MTIgYnl0ZS9zZWMsICAxMzYyLjQgTWIvc2Vj
CiAgIDQuODgxIHNlYywgMjAwMDAwMCB4dHMyNTYgY3J5cHRzLCAgICAgNTEy
IGJ5dGVzLCAyMDk3ODU1MTEgYnl0ZS9zZWMsICAxNjAwLjUgTWIvc2VjCiAg
IDEuNTA1IHNlYywgIDIwMDAwMCAgICBhZXMgY3J5cHRzLCAgICA0MDk2IGJ5
dGVzLCA1NDQzMzAxNDkgYnl0ZS9zZWMsICA0MTUyLjkgTWIvc2VjCiAgIDAu
OTkwIHNlYywgIDIwMDAwMCAgICB4dHMgY3J5cHRzLCAgICA0MDk2IGJ5dGVz
LCA4MjczOTc4NTggYnl0ZS9zZWMsICA2MzEyLjUgTWIvc2VjCiAgIDEuNjYy
IHNlYywgIDIwMDAwMCBhZXMxOTIgY3J5cHRzLCAgICA0MDk2IGJ5dGVzLCA0
OTI5MDc1MzUgYnl0ZS9zZWMsICAzNzYwLjYgTWIvc2VjCiAgIDEuODE2IHNl
YywgIDIwMDAwMCBhZXMyNTYgY3J5cHRzLCAgICA0MDk2IGJ5dGVzLCA0NTEw
NzQyNDcgYnl0ZS9zZWMsICAzNDQxLjQgTWIvc2VjCiAgIDEuMDgxIHNlYywg
IDIwMDAwMCB4dHMyNTYgY3J5cHRzLCAgICA0MDk2IGJ5dGVzLCA3NTc3ODE3
ODYgYnl0ZS9zZWMsICA1NzgxLjQgTWIvc2VjCg==
--_----------=_1347043248118301--
More information about the freebsd-bugs
mailing list