Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Sep 2006 15:51:21 -0700
From:      "Jack Vogel" <jfvogel@gmail.com>
To:        freebsd-net <freebsd-net@freebsd.org>,  freebsd-current <freebsd-current@freebsd.org>
Subject:   RFC: TSO patch for current
Message-ID:  <2a41acea0609011551v40338539u4eef48d091dd12ab@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
------=_Part_13875_32385575.1157151081575
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

This is a patch for the stack and the em driver to enable TSO
on CURRENT. Previously I had problems getting it to work, but
this is functional.

I should note that CURRENT is being a pain right now, when
I comment out em in the config the kernel panics coming up,
so I had to substitute this code into the tree. Rather bizarre :)

I have this functionality running on a 6.1 based system, and
our test group is already testing against that driver, so far
things are looking good.

I have designed it so the driver can continue to be built
without support. There is also a sysctl in the stack code
so you can set net.inet.tcp.tso_enable on or off and
compare.

I know there may be some refinements to add in, but I
would like to get this into CURRENT as a start.

Comments?

Jack

------=_Part_13875_32385575.1157151081575
Content-Type: text/x-patch; name=em-current-tso.patch; charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
X-Attachment-Id: f_erlkv0es
Content-Disposition: attachment; filename="em-current-tso.patch"

LS0tIGRpc3QvaWZfZW0uaAlUaHUgQXVnICAzIDEyOjA1OjA0IDIwMDYKKysrIGlmX2VtLmgJRnJp
IFNlcCAgMSAxNTo1NTozMCAyMDA2CkBAIC0zNiw2ICszNiw4IEBACiAjaWZuZGVmIF9FTV9IX0RF
RklORURfCiAjZGVmaW5lIF9FTV9IX0RFRklORURfCiAKKyNkZWZpbmUgVENQX1RTTworCiAvKiBU
dW5hYmxlcyAqLwogCiAvKgpAQCAtMTM4LDYgKzE0MCwxMSBAQAogI2RlZmluZSBFTV9DSEVDS1NV
TV9GRUFUVVJFUyAgICAgICAgICAgIChDU1VNX1RDUCB8IENTVU1fVURQKQogCiAvKgorICogSW5m
b3JtIHRoZSBzdGFjayBhYm91dCB0cmFuc21pdCBzZWdtZW50YXRpb24gb2ZmbG9hZCBjYXBhYmls
aXRpZXMuCisgKi8KKyNkZWZpbmUgRU1fVENQU0VHX0ZFQVRVUkVTCQlDU1VNX1RDUFNFRworCisv
KgogICogVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGR1cmF0aW9uIG9mIHRyYW5zbWl0IHdh
dGNoZG9nIHRpbWVyLgogICovCiAjZGVmaW5lIEVNX1RYX1RJTUVPVVQgICAgICAgICAgICAgICAg
ICAgNSAgICAvKiBzZXQgdG8gNSBzZWNvbmRzICovCkBAIC0yMjUsNiArMjMyLDcgQEAKICNkZWZp
bmUgRU1fUlhCVUZGRVJfMTYzODQgICAgICAxNjM4NAogCiAjZGVmaW5lIEVNX01BWF9TQ0FUVEVS
ICAgICAgICAgICAgNjQKKyNkZWZpbmUgRU1fVFNPX1NJWkUJCTY1NTM1CiAKIHR5cGVkZWYgZW51
bSBfWFNVTV9DT05URVhUX1QgewogCU9GRkxPQURfTk9ORSwKQEAgLTMwNyw2ICszMTUsNyBAQAog
ICAgICAgICB1aW50MzJfdAkJdHhkX2NtZDsKIAlzdHJ1Y3QgZW1fYnVmZmVyCSp0eF9idWZmZXJf
YXJlYTsKIAlidXNfZG1hX3RhZ190CQl0eHRhZzsJCS8qIGRtYSB0YWcgZm9yIHR4ICovCisJdWlu
dDMyX3QJCXR4X3RzbzsJCS8qIGxhc3QgdHggd2FzIHRzbyAqLwogCiAJLyogCiAJICogUmVjZWl2
ZSBkZWZpbml0aW9ucwotLS0gZGlzdC9pZl9lbS5jCUZyaSBBdWcgIDQgMDA6NTY6MzMgMjAwNgor
KysgaWZfZW0uYwlGcmkgU2VwICAxIDE1OjU4OjIzIDIwMDYKQEAgLTcyLDYgKzcyLDggQEAKICNp
bmNsdWRlIDxuZXRpbmV0L3RjcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CiAKKyNpbmNs
dWRlIDxtYWNoaW5lL2luX2Nrc3VtLmg+CisKICNpbmNsdWRlIDxkZXYvcGNpL3BjaXZhci5oPgog
I2luY2x1ZGUgPGRldi9wY2kvcGNpcmVnLmg+CiAjaW5jbHVkZSA8ZGV2L2VtL2lmX2VtX2h3Lmg+
CkBAIC0yMjksNiArMjMxLDEwIEBACiAJCSAgICBzdHJ1Y3QgbWJ1ZiAqKTsKIHN0YXRpYyB2b2lk
CWVtX3RyYW5zbWl0X2NoZWNrc3VtX3NldHVwKHN0cnVjdCBhZGFwdGVyICosIHN0cnVjdCBtYnVm
ICosCiAJCSAgICB1aW50MzJfdCAqLCB1aW50MzJfdCAqKTsKKyNpZmRlZiBUQ1BfVFNPCitzdGF0
aWMgYm9vbGVhbl90IGVtX3Rzb19zZXR1cChzdHJ1Y3QgYWRhcHRlciAqLCBzdHJ1Y3QgbWJ1ZiAq
LCB1X2ludDMyX3QgKiwKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKik7CisjZW5kaWYK
IHN0YXRpYyB2b2lkCWVtX3NldF9wcm9taXNjKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZv
aWQJZW1fZGlzYWJsZV9wcm9taXNjKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZvaWQJZW1f
c2V0X211bHRpKHN0cnVjdCBhZGFwdGVyICopOwpAQCAtMzAyLDYgKzMwOCw3IEBACiAKICNkZWZp
bmUgRTEwMDBfVElDS1NfVE9fVVNFQ1ModGlja3MpCSgoMTAyNCAqICh0aWNrcykgKyA1MDApIC8g
MTAwMCkKICNkZWZpbmUgRTEwMDBfVVNFQ1NfVE9fVElDS1ModXNlY3MpCSgoMTAwMCAqICh1c2Vj
cykgKyA1MTIpIC8gMTAyNCkKKyNkZWZpbmUgTV9UU09fTEVOCQkJNjYKIAogc3RhdGljIGludCBl
bV90eF9pbnRfZGVsYXlfZGZsdCA9IEUxMDAwX1RJQ0tTX1RPX1VTRUNTKEVNX1RJRFYpOwogc3Rh
dGljIGludCBlbV9yeF9pbnRfZGVsYXlfZGZsdCA9IEUxMDAwX1RJQ0tTX1RPX1VTRUNTKEVNX1JE
VFIpOwpAQCAtMTA2MSwxMSArMTA2OCwxNCBAQAogCWlmcC0+aWZfZHJ2X2ZsYWdzIHw9IElGRl9E
UlZfUlVOTklORzsKIAlpZnAtPmlmX2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZFOwogCisJ
aWZwLT5pZl9od2Fzc2lzdCA9IDA7CiAJaWYgKGFkYXB0ZXItPmh3Lm1hY190eXBlID49IGVtXzgy
NTQzKSB7CiAJCWlmIChpZnAtPmlmX2NhcGVuYWJsZSAmIElGQ0FQX1RYQ1NVTSkKIAkJCWlmcC0+
aWZfaHdhc3Npc3QgPSBFTV9DSEVDS1NVTV9GRUFUVVJFUzsKLQkJZWxzZQotCQkJaWZwLT5pZl9o
d2Fzc2lzdCA9IDA7CisjaWZkZWYgVENQX1RTTworCQlpZiAoaWZwLT5pZl9jYXBlbmFibGUgJiBJ
RkNBUF9UQ1BTRUcpCisJCQlpZnAtPmlmX2h3YXNzaXN0IHw9IEVNX1RDUFNFR19GRUFUVVJFUzsK
KyNlbmRpZgogCX0KIAogCWNhbGxvdXRfcmVzZXQoJmFkYXB0ZXItPnRpbWVyLCBoeiwgZW1fbG9j
YWxfdGltZXIsIGFkYXB0ZXIpOwpAQCAtMTQxNiwxMSArMTQyNiwxNyBAQAogCXN0cnVjdCBtX3Rh
ZwkJKm10YWc7CiAJdWludDMyX3QJCXR4ZF91cHBlciwgdHhkX2xvd2VyLCB0eGRfdXNlZCwgdHhk
X3NhdmVkOwogCWludAkJCW5zZWdzLCBpLCBqOwotCWludAkJCWVycm9yOworCWludAkJCWVycm9y
LCBkb190c28sIHRzb19kZXNjID0gMDsKIAogCW1faGVhZCA9ICptX2hlYWRwOwogCWN1cnJlbnRf
dHhfZGVzYyA9IE5VTEw7Ci0JdHhkX3VzZWQgPSB0eGRfc2F2ZWQgPSAwOworCXR4ZF91cHBlciA9
IHR4ZF9sb3dlciA9IHR4ZF91c2VkID0gdHhkX3NhdmVkID0gMDsKKworI2lmZGVmIFRDUF9UU08K
KyAgICAgICAgZG9fdHNvID0gKChtX2hlYWQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1RD
UFNFRykgIT0gMCk7CisjZWxzZQorICAgICAgICBkb190c28gPSAwOworI2VuZGlmCiAKIAkvKgog
CSAqIEZvcmNlIGEgY2xlYW51cCBpZiBudW1iZXIgb2YgVFggZGVzY3JpcHRvcnMKQEAgLTE0NzMs
NiArMTQ4OSwxNyBAQAogCQkqbV9oZWFkcCA9IG1faGVhZDsKIAl9CiAKKyAgICAgICAgLyoKKyAg
ICAgICAgICogVFNPIHdvcmthcm91bmQ6CisgICAgICAgICAqICBJZiBhbiBtYnVmIGlzIG9ubHkg
aGVhZGVyIHdlIG5lZWQKKyAgICAgICAgICogICAgIHRvIHB1bGwgNCBieXRlcyBvZiBkYXRhIGlu
dG8gaXQuCisgICAgICAgICAqLworICAgICAgICBpZiAoZG9fdHNvICYmIChtX2hlYWQtPm1fbGVu
IDw9IE1fVFNPX0xFTikpIHsKKyAgICAgICAgICAgICAgICBtX2hlYWQgPSBtX3B1bGx1cChtX2hl
YWQsIE1fVFNPX0xFTiArIDQpOworICAgICAgICAgICAgICAgIGlmIChtX2hlYWQgPT0gTlVMTCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoRU5PQlVGUyk7CisgICAgICAgIH0KKwog
CS8qCiAJICogTWFwIHRoZSBwYWNrZXQgZm9yIERNQS4KIAkgKi8KQEAgLTE0ODcsMjMgKzE1MTQs
NDMgQEAKIAl9CiAJS0FTU0VSVChuc2VncyAhPSAwLCAoImVtX2VuY2FwOiBlbXB0eSBwYWNrZXQi
KSk7CiAKLQlpZiAobnNlZ3MgPiBhZGFwdGVyLT5udW1fdHhfZGVzY19hdmFpbCkgeworICAgICAg
ICAvKgorICAgICAgICAgKiBUU08gSGFyZHdhcmUgd29ya2Fyb3VuZCwgaWYgdGhpcyBwYWNrZXQg
aXMgbm90CisgICAgICAgICAqIFRTTywgYW5kIGlzIG9ubHkgYSBzaW5nbGUgZGVzY3JpcHRvciBs
b25nLCBhbmQKKyAgICAgICAgICogaXQgZm9sbG93cyBhIFRTTyBidXJzdCwgdGhlbiB3ZSBuZWVk
IHRvIGFkZCBhCisgICAgICAgICAqIHNlbnRpbmVsIGRlc2NyaXB0b3IgdG8gcHJldmVudCBwcmVt
YXR1cmUgd3JpdGViYWNrLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKChkb190c28gPT0gMCkg
JiYgKGFkYXB0ZXItPnR4X3RzbyA9PSBUUlVFKSkgeworICAgICAgICAgICAgICAgIGlmIChuc2Vn
cyA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgdHNvX2Rlc2MgPSBUUlVFOworICAgICAg
ICAgICAgICAgIGFkYXB0ZXItPnR4X3RzbyA9IEZBTFNFOworICAgICAgICB9CisKKwlpZiAobnNl
Z3MgPiBhZGFwdGVyLT5udW1fdHhfZGVzY19hdmFpbCAtIDIpIHsKIAkJYWRhcHRlci0+bm9fdHhf
ZGVzY19hdmFpbDIrKzsKIAkJZXJyb3IgPSBFTk9CVUZTOwogCQlnb3RvIGVuY2FwX2ZhaWw7CiAJ
fQogCi0JaWYgKGlmcC0+aWZfaHdhc3Npc3QgPiAwKQotCQllbV90cmFuc21pdF9jaGVja3N1bV9z
ZXR1cChhZGFwdGVyLCAgbV9oZWFkLCAmdHhkX3VwcGVyLCAmdHhkX2xvd2VyKTsKLQllbHNlCi0J
CXR4ZF91cHBlciA9IHR4ZF9sb3dlciA9IDA7CisgICAgICAgIC8qIERvIGhhcmR3YXJlIGFzc2lz
dHMgKi8KKyAgICAgICAgaWYgKCBpZnAtPmlmX2h3YXNzaXN0ID4gMCkgeworI2lmZGVmIFRDUF9U
U08KKyAgICAgICAgICAgICAgICBpZiAoZW1fdHNvX3NldHVwKGFkYXB0ZXIsIG1faGVhZCwgJnR4
ZF91cHBlciwgJnR4ZF9sb3dlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdlIG5l
ZWQgdG8gbWFrZSBhIGZpbmFsIHNlbnRpbmVsIHRyYW5zbWl0IGRlc2MgKi8KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRzb19kZXNjID0gVFJVRTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyNl
bmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgZW1fdHJhbnNtaXRfY2hlY2tzdW1fc2V0dXAo
YWRhcHRlciwgIG1faGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHhkX3VwcGVy
LCAmdHhkX2xvd2VyKTsKKyAgICAgICAgfQogCiAJaSA9IGFkYXB0ZXItPm5leHRfYXZhaWxfdHhf
ZGVzYzsKLQlpZiAoYWRhcHRlci0+cGNpeF84MjU0NCkgeworCWlmIChhZGFwdGVyLT5wY2l4Xzgy
NTQ0KQogCQl0eGRfc2F2ZWQgPSBpOwotCQl0eGRfdXNlZCA9IDA7Ci0JfQorCiAJZm9yIChqID0g
MDsgaiA8IG5zZWdzOyBqKyspIHsKKyAgICAgICAgICAgICAgICBidXNfc2l6ZV90IHNlZ19sZW47
CisgICAgICAgICAgICAgICAgYnVzX2FkZHJfdCBzZWdfYWRkcjsKIAkJLyogSWYgYWRhcHRlciBp
cyA4MjU0NCBhbmQgb24gUENJWCBidXMuICovCiAJCWlmKGFkYXB0ZXItPnBjaXhfODI1NDQpIHsK
IAkJCURFU0NfQVJSQVkJZGVzY19hcnJheTsKQEAgLTE1MzcsMjYgKzE1ODQsNTcgQEAKIAkJCQl0
eGRfdXNlZCsrOwogCQkJfQogCQl9IGVsc2UgewotCQkJdHhfYnVmZmVyID0gJmFkYXB0ZXItPnR4
X2J1ZmZlcl9hcmVhW2ldOwotCQkJY3VycmVudF90eF9kZXNjID0gJmFkYXB0ZXItPnR4X2Rlc2Nf
YmFzZVtpXTsKLQotCQkJY3VycmVudF90eF9kZXNjLT5idWZmZXJfYWRkciA9IGh0b2xlNjQoc2Vn
c1tqXS5kc19hZGRyKTsKLQkJCWN1cnJlbnRfdHhfZGVzYy0+bG93ZXIuZGF0YSA9IGh0b2xlMzIo
Ci0JCQkJYWRhcHRlci0+dHhkX2NtZCB8IHR4ZF9sb3dlciB8IHNlZ3Nbal0uZHNfbGVuKTsKLQkJ
CWN1cnJlbnRfdHhfZGVzYy0+dXBwZXIuZGF0YSA9IGh0b2xlMzIodHhkX3VwcGVyKTsKLQotCQkJ
aWYgKCsraSA9PSBhZGFwdGVyLT5udW1fdHhfZGVzYykKLQkJCQlpID0gMDsKLQotCQkJdHhfYnVm
ZmVyLT5tX2hlYWQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICB0eF9idWZmZXIgPSAm
YWRhcHRlci0+dHhfYnVmZmVyX2FyZWFbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50X3R4X2Rlc2MgPSAmYWRhcHRlci0+dHhfZGVzY19iYXNlW2ldOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VnX2FkZHIgPSBodG9sZTY0KHNlZ3Nbal0uZHNfYWRkcik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZWdfbGVuICA9IHNlZ3Nbal0uZHNfbGVuOworICAgICAgICAgICAgICAg
ICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICoqIFRTTyBXb3JrYXJvdW5kOgor
ICAgICAgICAgICAgICAgICAgICAgICAgKiogSWYgdGhpcyBpcyB0aGUgbGFzdCBkZXNjcmlwdG9y
LCB3ZSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAqKiBzcGxpdCBpdCBzbyB3ZSBo
YXZlIGEgc21hbGwgZmluYWwgc2VudGluZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHNvX2Rlc2MgJiYgKGogPT0gKG5zZWdzIC0xKSkg
JiYgKHNlZ19sZW4gPiA4KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdf
bGVuIC09IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfdHhfZGVz
Yy0+YnVmZmVyX2FkZHIgPSBzZWdfYWRkcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudF90eF9kZXNjLT5sb3dlci5kYXRhID0gaHRvbGUzMigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRhcHRlci0+dHhkX2NtZCB8IHR4ZF9sb3dlciB8IHNlZ19sZW4p
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3R4X2Rlc2MtPnVwcGVy
LmRhdGEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRvbGUzMih0eGRf
dXBwZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKytpID09IGFkYXB0
ZXItPm51bV90eF9kZXNjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb3cgbWFrZSB0aGUg
c2VudGluZWwgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyt0eGRfdXNlZDsg
LyogdXNpbmcgYW4gZXh0cmEgdHhkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRfdHhfZGVzYyA9ICZhZGFwdGVyLT50eF9kZXNjX2Jhc2VbaV07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR4X2J1ZmZlciA9ICZhZGFwdGVyLT50eF9idWZmZXJfYXJl
YVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF90eF9kZXNjLT5i
dWZmZXJfYWRkciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdfYWRk
ciArIHNlZ19sZW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfdHhf
ZGVzYy0+bG93ZXIuZGF0YSA9IGh0b2xlMzIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkYXB0ZXItPnR4ZF9jbWQgfCB0eGRfbG93ZXIgfCA0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudF90eF9kZXNjLT51cHBlci5kYXRhID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGh0b2xlMzIodHhkX3VwcGVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCsraSA9PSBhZGFwdGVyLT5udW1fdHhfZGVzYykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRfdHhfZGVzYy0+YnVmZmVyX2FkZHIgPSBzZWdfYWRkcjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudF90eF9kZXNjLT5sb3dlci5kYXRhID0gaHRvbGUzMigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRlci0+dHhkX2NtZCB8IHR4ZF9sb3dl
ciB8IHNlZ19sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3R4
X2Rlc2MtPnVwcGVyLmRhdGEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aHRvbGUzMih0eGRfdXBwZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KytpID09IGFkYXB0ZXItPm51bV90eF9kZXNjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgdHhfYnVmZmVyLT5tX2hlYWQgPSBOVUxMOwogCQl9CiAJfQogCiAJYWRh
cHRlci0+bmV4dF9hdmFpbF90eF9kZXNjID0gaTsKIAlpZiAoYWRhcHRlci0+cGNpeF84MjU0NCkK
IAkJYWRhcHRlci0+bnVtX3R4X2Rlc2NfYXZhaWwgLT0gdHhkX3VzZWQ7Ci0JZWxzZQorCWVsc2Ug
ewogCQlhZGFwdGVyLT5udW1fdHhfZGVzY19hdmFpbCAtPSBuc2VnczsKKyAgICAgICAgICAgICAg
ICBpZiAodHNvX2Rlc2MpIC8qIFRTTyB1c2VkIGFuIGV4dHJhIGZvciBzZW50aW5lbCAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgYWRhcHRlci0+bnVtX3R4X2Rlc2NfYXZhaWwgLT0gdHhkX3Vz
ZWQ7CisgICAgICAgIH0KIAogCWlmIChtdGFnICE9IE5VTEwpIHsKIAkJLyogU2V0IHRoZSB2bGFu
IGlkLiAqLwpAQCAtMjIyNiw2ICsyMzA0LDE1IEBACiAJCWlmcC0+aWZfY2FwZW5hYmxlIHw9IElG
Q0FQX0hXQ1NVTSB8IElGQ0FQX1ZMQU5fSFdDU1VNOwogCX0KIAorI2lmZGVmIFRDUF9UU08KKyAg
ICAgICAgLyogRW5hYmxlIFRTTyBpZiBhdmFpbGFibGUgKi8KKyAgICAgICAgaWYgKChhZGFwdGVy
LT5ody5tYWNfdHlwZSA+IGVtXzgyNTQ0KSAmJgorICAgICAgICAgICAgKGFkYXB0ZXItPmh3Lm1h
Y190eXBlICE9IGVtXzgyNTQ3KSkgeworICAgICAgICAgICAgICAgIGlmcC0+aWZfY2FwYWJpbGl0
aWVzIHw9IElGQ0FQX1RDUFNFRzsKKyAgICAgICAgICAgICAgICBpZnAtPmlmX2NhcGVuYWJsZSB8
PSBJRkNBUF9UQ1BTRUc7CisgICAgICAgIH0KKyNlbmRpZgorCiAJLyoKIAkgKiBUZWxsIHRoZSB1
cHBlciBsYXllcihzKSB3ZSBzdXBwb3J0IGxvbmcgZnJhbWVzLgogCSAqLwpAQCAtMjQzNiwxNSAr
MjUyMywyNyBAQAogc3RhdGljIGludAogZW1fc2V0dXBfdHJhbnNtaXRfc3RydWN0dXJlcyhzdHJ1
Y3QgYWRhcHRlciAqYWRhcHRlcikKIHsKKyNpZmRlZiBUQ1BfVFNPCisgICAgICAgIHN0cnVjdCBp
Zm5ldCAgICppZnAgPSBhZGFwdGVyLT5pZnA7CisjZW5kaWYKIAlkZXZpY2VfdCBkZXYgPSBhZGFw
dGVyLT5kZXY7CiAJc3RydWN0IGVtX2J1ZmZlciAqdHhfYnVmZmVyOwotCWJ1c19zaXplX3Qgc2l6
ZTsKKwlidXNfc2l6ZV90IHNpemUsIHNlZ3NpemU7CiAJaW50IGVycm9yLCBpOwogCiAJLyoKIAkg
KiBTZXR1cCBETUEgZGVzY3JpcHRvciBhcmVhcy4KIAkgKi8KLQlzaXplID0gcm91bmR1cDIoYWRh
cHRlci0+aHcubWF4X2ZyYW1lX3NpemUsIE1DTEJZVEVTKTsKKwlzZWdzaXplID0gc2l6ZSA9IHJv
dW5kdXAyKGFkYXB0ZXItPmh3Lm1heF9mcmFtZV9zaXplLCBNQ0xCWVRFUyk7CisKKyNpZmRlZiBU
Q1BfVFNPCisgICAgICAgIC8qIE92ZXJyaWRlcyBmb3IgVFNPIC0gd2FudCBsYXJnZSBzaXplcyAq
LworICAgICAgICBpZiAoaWZwLT5pZl9od2Fzc2lzdCAmIEVNX1RDUFNFR19GRUFUVVJFUykgewor
ICAgICAgICAgICAgICAgIHNpemUgPSBFTV9UU09fU0laRTsKKyAgICAgICAgICAgICAgICBzZWdz
aXplID0gUEFHRV9TSVpFOworICAgICAgICB9CisjZW5kaWYKKwogCWlmICgoZXJyb3IgPSBidXNf
ZG1hX3RhZ19jcmVhdGUoTlVMTCwJCS8qIHBhcmVudCAqLwogCQkJCTEsIDAsCQkJLyogYWxpZ25t
ZW50LCBib3VuZHMgKi8KIAkJCQlCVVNfU1BBQ0VfTUFYQUREUiwJLyogbG93YWRkciAqLwpAQCAt
MjQ1Miw3ICsyNTUxLDcgQEAKIAkJCQlOVUxMLCBOVUxMLAkJLyogZmlsdGVyLCBmaWx0ZXJhcmcg
Ki8KIAkJCQlzaXplLAkJCS8qIG1heHNpemUgKi8KIAkJCQlFTV9NQVhfU0NBVFRFUiwJCS8qIG5z
ZWdtZW50cyAqLwotCQkJCXNpemUsCQkJLyogbWF4c2Vnc2l6ZSAqLworCQkJCXNlZ3NpemUsCQkv
KiBtYXhzZWdzaXplICovCiAJCQkJMCwJCQkvKiBmbGFncyAqLwogCQkJCU5VTEwsCQkvKiBsb2Nr
ZnVuYyAqLwogCQkJCU5VTEwsCQkvKiBsb2NrYXJnICovCkBAIC0yNzEzLDYgKzI4MTIsODcgQEAK
IAlhZGFwdGVyLT5uZXh0X2F2YWlsX3R4X2Rlc2MgPSBjdXJyX3R4ZDsKIH0KIAorI2lmZGVmIFRD
UF9UU08KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCisgKgorICogIFNldHVwIHdvcmsgZm9yIGhhcmR3YXJlIHNl
Z21lbnRhdGlvbiBvZmZsb2FkIChUU08pCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgYm9v
bGVhbl90CitlbV90c29fc2V0dXAoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsCisgICAgICAgICAg
ICAgc3RydWN0IG1idWYgKm1wLAorICAgICAgICAgICAgIHVfaW50MzJfdCAqdHhkX3VwcGVyLAor
ICAgICAgICAgICAgIHVfaW50MzJfdCAqdHhkX2xvd2VyKQoreworICAgICAgICBzdHJ1Y3QgZW1f
Y29udGV4dF9kZXNjICpUWEQ7CisgICAgICAgIHN0cnVjdCBlbV9idWZmZXIgKnR4X2J1ZmZlcjsK
KyAgICAgICAgc3RydWN0IGlwICppcDsKKyAgICAgICAgc3RydWN0IHRjcGhkciAqdGg7CisgICAg
ICAgIGludCBjdXJyX3R4ZCwgaGRyX2xlbiwgaXBfaGxlbiwgdGNwX2hsZW47CisKKyAgICAgICAg
aWYgKCgobXAtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1RDUFNFRykgPT0gMCkgfHwKKyAg
ICAgICAgICAgIChtcC0+bV9wa3RoZHIubGVuIDw9IEUxMDAwX1RYX0JVRkZFUl9TSVpFKSkgewor
ICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgICp0eGRf
bG93ZXIgPSAoRTEwMDBfVFhEX0NNRF9ERVhUIHwKKyAgICAgICAgICAgICAgICAgICAgICBFMTAw
MF9UWERfRFRZUF9EIHwKKyAgICAgICAgICAgICAgICAgICAgICBFMTAwMF9UWERfQ01EX1RTRSk7
CisKKyAgICAgICAgKnR4ZF91cHBlciA9IChFMTAwMF9UWERfUE9QVFNfSVhTTSB8CisgICAgICAg
ICAgICAgICAgICAgICAgRTEwMDBfVFhEX1BPUFRTX1RYU00pIDw8IDg7CisKKyAgICAgICAgY3Vy
cl90eGQgPSBhZGFwdGVyLT5uZXh0X2F2YWlsX3R4X2Rlc2M7CisgICAgICAgIHR4X2J1ZmZlciA9
ICZhZGFwdGVyLT50eF9idWZmZXJfYXJlYVtjdXJyX3R4ZF07CisgICAgICAgIFRYRCA9IChzdHJ1
Y3QgZW1fY29udGV4dF9kZXNjICopICZhZGFwdGVyLT50eF9kZXNjX2Jhc2VbY3Vycl90eGRdOwor
CisgICAgICAgIG1wLT5tX2RhdGEgKz0gc2l6ZW9mKHN0cnVjdCBldGhlcl9oZWFkZXIpOworICAg
ICAgICBpcCA9IG10b2QobXAsIHN0cnVjdCBpcCAqKTsKKyAgICAgICAgaXAtPmlwX2xlbiA9IDA7
CisgICAgICAgIGlwLT5pcF9zdW0gPSAwOworICAgICAgICBpcF9obGVuID0gaXAtPmlwX2hsIDw8
IDIgOworICAgICAgICB0aCA9IChzdHJ1Y3QgdGNwaGRyICopKChjYWRkcl90KWlwICsgaXBfaGxl
bik7CisgICAgICAgIHRjcF9obGVuID0gdGgtPnRoX29mZiA8PCAyOworCisgICAgICAgIGhkcl9s
ZW4gPSBFVEhFUl9IRFJfTEVOICsgaXBfaGxlbiArIHRjcF9obGVuOworICAgICAgICB0aC0+dGhf
c3VtID0gaW5fcHNldWRvKGlwLT5pcF9zcmMuc19hZGRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpcC0+aXBfZHN0LnNfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaHRvbnMoSVBQUk9UT19UQ1ApKTsKKworICAgICAgICBtcC0+bV9kYXRhIC09IHNpemVv
ZihzdHJ1Y3QgZXRoZXJfaGVhZGVyKTsKKyAgICAgICAgVFhELT5sb3dlcl9zZXR1cC5pcF9maWVs
ZHMuaXBjc3MgPSBFVEhFUl9IRFJfTEVOOworICAgICAgICBUWEQtPmxvd2VyX3NldHVwLmlwX2Zp
ZWxkcy5pcGNzbyA9CisgICAgICAgICAgICAgICAgRVRIRVJfSERSX0xFTiArIG9mZnNldG9mKHN0
cnVjdCBpcCwgaXBfc3VtKTsKKyAgICAgICAgVFhELT5sb3dlcl9zZXR1cC5pcF9maWVsZHMuaXBj
c2UgPQorICAgICAgICAgICAgICAgIGh0b2xlMTYoRVRIRVJfSERSX0xFTiArIGlwX2hsZW4gLSAx
KTsKKworICAgICAgICBUWEQtPnVwcGVyX3NldHVwLnRjcF9maWVsZHMudHVjc3MgPQorICAgICAg
ICAgICAgICAgIEVUSEVSX0hEUl9MRU4gKyBpcF9obGVuOworICAgICAgICBUWEQtPnVwcGVyX3Nl
dHVwLnRjcF9maWVsZHMudHVjc2UgPSAwOworICAgICAgICBUWEQtPnVwcGVyX3NldHVwLnRjcF9m
aWVsZHMudHVjc28gPQorICAgICAgICAgICAgICAgIEVUSEVSX0hEUl9MRU4gKyBpcF9obGVuICsK
KyAgICAgICAgICAgICAgICBvZmZzZXRvZihzdHJ1Y3QgdGNwaGRyLCB0aF9zdW0pOworICAgICAg
ICBUWEQtPnRjcF9zZWdfc2V0dXAuZmllbGRzLm1zcyA9IGh0b2xlMTYobXAtPm1fcGt0aGRyLnRz
b19tc3MpOworICAgICAgICBUWEQtPnRjcF9zZWdfc2V0dXAuZmllbGRzLmhkcl9sZW4gPSBoZHJf
bGVuOworICAgICAgICBUWEQtPmNtZF9hbmRfbGVuZ3RoID0gaHRvbGUzMihhZGFwdGVyLT50eGRf
Y21kIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRTEwMDBfVFhEX0NNRF9ERVhU
IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRTEwMDBfVFhEX0NNRF9UU0UgfAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFMTAwMF9UWERfQ01EX0lQIHwgRTEwMDBf
VFhEX0NNRF9UQ1AgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXAtPm1fcGt0
aGRyLmxlbiAtIChoZHJfbGVuKSkpOworCisgICAgICAgIHR4X2J1ZmZlci0+bV9oZWFkID0gTlVM
TDsKKworICAgICAgICBpZiAoKytjdXJyX3R4ZCA9PSBhZGFwdGVyLT5udW1fdHhfZGVzYykKKyAg
ICAgICAgICAgICAgICBjdXJyX3R4ZCA9IDA7CisKKyAgICAgICAgYWRhcHRlci0+bnVtX3R4X2Rl
c2NfYXZhaWwtLTsKKyAgICAgICAgYWRhcHRlci0+bmV4dF9hdmFpbF90eF9kZXNjID0gY3Vycl90
eGQ7CisgICAgICAgIGFkYXB0ZXItPnR4X3RzbyA9IFRSVUU7CisKKyAgICAgICAgcmV0dXJuIFRS
VUU7Cit9CisjZW5kaWYgLyogVENQX1RTTyAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqICBF
eGFtaW5lIGVhY2ggdHhfYnVmZmVyIGluIHRoZSB1c2VkIHF1ZXVlLiBJZiB0aGUgaGFyZHdhcmUg
aXMgZG9uZQpAQCAtMzYzOSw2ICszODE5LDEyIEBACiAJICAgIChsb25nIGxvbmcpYWRhcHRlci0+
c3RhdHMuZ3ByYyk7CiAJZGV2aWNlX3ByaW50ZihkZXYsICJHb29kIFBhY2tldHMgWG10ZCA9ICVs
bGRcbiIsCiAJICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMuZ3B0Yyk7CisjaWZkZWYgVENQ
X1RTTworICAgICAgICBkZXZpY2VfcHJpbnRmKGRldiwgIlRTTyBDb250ZXh0cyBYbXRkID0gJWxs
ZFxuIiwKKyAgICAgICAgICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMudHNjdGMpOworICAg
ICAgICBkZXZpY2VfcHJpbnRmKGRldiwgIlRTTyBDb250ZXh0cyBGYWlsZWQgPSAlbGxkXG4iLAor
ICAgICAgICAgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy50c2N0ZmMpOworI2VuZGlmCiB9
CiAKIHN0YXRpYyBpbnQK
------=_Part_13875_32385575.1157151081575
Content-Type: text/x-patch; name=tso-current-stack.patch; 
	charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
X-Attachment-Id: f_erlkvnve
Content-Disposition: attachment; filename="tso-current-stack.patch"

ZGlmZiAtTmF1ciBzeXMuZGlzdC9jb25mL29wdGlvbnMgc3lzL2NvbmYvb3B0aW9ucwotLS0gc3lz
LmRpc3QvY29uZi9vcHRpb25zCVdlZCBBdWcgIDIgMjI6MTk6MzMgMjAwNgorKysgc3lzL2NvbmYv
b3B0aW9ucwlUaHUgQXVnIDMxIDE2OjU1OjIzIDIwMDYKQEAgLTM4Niw2ICszODYsNyBAQAogU0xJ
UF9JRkZfT1BUUwkJb3B0X3NsaXAuaAogVENQREVCVUcKIFRDUF9TSUdOQVRVUkUJCW9wdF9pbmV0
LmgKK1RDUF9UU08JCQlvcHRfZ2xvYmFsLmgKIFRDUF9TQUNLX0RFQlVHCQlvcHRfdGNwX3NhY2su
aCAKIFRDUF9EUk9QX1NZTkZJTgkJb3B0X3RjcF9pbnB1dC5oCiBERVZfVkxBTgkJb3B0X3ZsYW4u
aApkaWZmIC1OYXVyIHN5cy5kaXN0L25ldC9pZi5oIHN5cy9uZXQvaWYuaAotLS0gc3lzLmRpc3Qv
bmV0L2lmLmgJTW9uIEp1biAxOSAxNToyMDo0NCAyMDA2CisrKyBzeXMvbmV0L2lmLmgJVGh1IEF1
ZyAzMSAxMjozMzo0MCAyMDA2CkBAIC0xODksNiArMTg5LDcgQEAKICNkZWZpbmUJSUZDQVBfSlVN
Qk9fTVRVCQkweDAwMjAJLyogOTAwMCBieXRlIE1UVSBzdXBwb3J0ZWQgKi8KICNkZWZpbmUJSUZD
QVBfUE9MTElORwkJMHgwMDQwCS8qIGRyaXZlciBzdXBwb3J0cyBwb2xsaW5nICovCiAjZGVmaW5l
CUlGQ0FQX1ZMQU5fSFdDU1VNCTB4MDA4MAkvKiBjYW4gZG8gSUZDQVBfSFdDU1VNIG9uIFZMQU5z
ICovCisjZGVmaW5lCUlGQ0FQX1RDUFNFRwkJMHgwMTAwCS8qIGNhbiBkbyBUU08gKi8KIAogI2Rl
ZmluZSBJRkNBUF9IV0NTVU0JCShJRkNBUF9SWENTVU0gfCBJRkNBUF9UWENTVU0pCiAKZGlmZiAt
TmF1ciBzeXMuZGlzdC9uZXRpbmV0L2lwX291dHB1dC5jIHN5cy9uZXRpbmV0L2lwX291dHB1dC5j
Ci0tLSBzeXMuZGlzdC9uZXRpbmV0L2lwX291dHB1dC5jCVRodSBKdW4gMjkgMDY6Mzg6MzYgMjAw
NgorKysgc3lzL25ldGluZXQvaXBfb3V0cHV0LmMJVGh1IEF1ZyAzMSAxNToxNjo0NCAyMDA2CkBA
IC00OTUsOSArNDk1LDExIEBACiAKIAkvKgogCSAqIElmIHNtYWxsIGVub3VnaCBmb3IgaW50ZXJm
YWNlLCBvciB0aGUgaW50ZXJmYWNlIHdpbGwgdGFrZQotCSAqIGNhcmUgb2YgdGhlIGZyYWdtZW50
YXRpb24gZm9yIHVzLCBjYW4ganVzdCBzZW5kIGRpcmVjdGx5LgorCSAqIGNhcmUgb2YgdGhlIGZy
YWdtZW50YXRpb24gZm9yIHVzLCBvciB0aGUgaW50ZXJmYWNlIGlzCisJICogZG9pbmcgc2VnbWVu
dGF0aW9uLCB3ZSBjYW4ganVzdCBzZW5kIGRpcmVjdGx5LgogCSAqLwotCWlmIChpcC0+aXBfbGVu
IDw9IGlmcC0+aWZfbXR1IHx8IChpZnAtPmlmX2h3YXNzaXN0ICYgQ1NVTV9GUkFHTUVOVCAmJgor
CWlmIChpcC0+aXBfbGVuIDw9IGlmcC0+aWZfbXR1IHx8CisJICAgIChpZnAtPmlmX2h3YXNzaXN0
ICYgKENTVU1fRlJBR01FTlQgfCBDU1VNX1RDUFNFRykgJiYKIAkgICAgKChpcC0+aXBfb2ZmICYg
SVBfREYpID09IDApKSkgewogCQlpcC0+aXBfbGVuID0gaHRvbnMoaXAtPmlwX2xlbik7CiAJCWlw
LT5pcF9vZmYgPSBodG9ucyhpcC0+aXBfb2ZmKTsKZGlmZiAtTmF1ciBzeXMuZGlzdC9uZXRpbmV0
L3RjcF9vdXRwdXQuYyBzeXMvbmV0aW5ldC90Y3Bfb3V0cHV0LmMKLS0tIHN5cy5kaXN0L25ldGlu
ZXQvdGNwX291dHB1dC5jCVRodSBGZWIgMjMgMTM6MTQ6MzQgMjAwNgorKysgc3lzL25ldGluZXQv
dGNwX291dHB1dC5jCVRodSBBdWcgMzEgMTY6NTA6MzMgMjAwNgpAQCAtMTA1LDYgKzEwNSwxMiBA
QAogU1lTQ1RMX0lOVChfbmV0X2luZXRfdGNwLCBPSURfQVVUTywgbmV3cmVubywgQ1RMRkxBR19S
VywgJnRjcF9kb19uZXdyZW5vLAogCTAsICJFbmFibGUgTmV3UmVubyBBbGdvcml0aG1zIik7CiAK
KyNpZmRlZiBUQ1BfVFNPCitpbnQJdGNwX2VuYWJsZV90c28gPSAxOworU1lTQ1RMX0lOVChfbmV0
X2luZXRfdGNwLCBPSURfQVVUTywgdHNvX2VuYWJsZSwgQ1RMRkxBR19SVywgJnRjcF9lbmFibGVf
dHNvLAorCTAsICJFbmFibGUgVENQIFNlZ21lbnRhdGlvbiBPZmZsb2FkIik7CisjZW5kaWYKKwog
LyoKICAqIFRjcCBvdXRwdXQgcm91dGluZTogZmlndXJlIG91dCB3aGF0IHNob3VsZCBiZSBzZW50
IGFuZCBzZW5kIGl0LgogICovCkBAIC0xMzAsNiArMTM2LDkgQEAKICNpZiAwCiAJaW50IG1heGJ1
cnN0ID0gVENQX01BWEJVUlNUOwogI2VuZGlmCisjaWZkZWYgVENQX1RTTworCWludCB0c29fY2Fw
YWJsZSwgdXNlX3RzbzsKKyNlbmRpZgogI2lmZGVmIElORVQ2CiAJc3RydWN0IGlwNl9oZHIgKmlw
NiA9IE5VTEw7CiAJaW50IGlzaXB2NjsKQEAgLTEzOSw2ICsxNDgsMTAgQEAKIAogCUlOUF9MT0NL
X0FTU0VSVCh0cC0+dF9pbnBjYik7CiAKKyNpZmRlZiBUQ1BfVFNPCisJaWYgKHRjcF9lbmFibGVf
dHNvKQorCQl1c2VfdHNvID0gdHNvX2NhcGFibGUgPSB0Y3BfY2hlY2t0c28odHApOworI2VuZGlm
CiAJLyoKIAkgKiBEZXRlcm1pbmUgbGVuZ3RoIG9mIGRhdGEgdGhhdCBzaG91bGQgYmUgdHJhbnNt
aXR0ZWQsCiAJICogYW5kIGZsYWdzIHRoYXQgd2lsbCBiZSB1c2VkLgpAQCAtMzgwLDkgKzM5Mywy
MiBAQAogCSAqIG5vIGxvbmdlciBjb250YWlucyB0aGUgbGFzdCBkYXRhIGJ5dGUuCiAJICovCiAJ
aWYgKGxlbiA+IHRwLT50X21heHNlZykgewotCQlsZW4gPSB0cC0+dF9tYXhzZWc7CisjaWZkZWYg
VENQX1RTTworCQlpZiAodXNlX3RzbykgeworCQkJLyogRXZlbiBvdXQgdGhlIHRyYW5zbWlzc2lv
bnMgKi8KKwkJCWxlbiA9ICgodWxtaW4obGVuLCBUQ1BfTUFYV0lOKS8gdHAtPnRfbWF4c2VnKSAq
CisJCQkgICAgdHAtPnRfbWF4c2VnKTsKKwkJCWlmIChsZW4gPD0gdHAtPnRfbWF4c2VnKQorCQkJ
CXVzZV90c28gPSAwOworICAgICAgICAgICAgICAgIH0gZWxzZQorI2VuZGlmCisJCQlsZW4gPSB0
cC0+dF9tYXhzZWc7CiAJCXNlbmRhbG90ID0gMTsKIAl9CisjaWZkZWYgVENQX1RTTworCSAgZWxz
ZQorCQl1c2VfdHNvID0gMDsKKyNlbmRpZgogCWlmIChzYWNrX3J4bWl0KSB7CiAJCWlmIChTRVFf
TFQocC0+cnhtaXQgKyBsZW4sIHRwLT5zbmRfdW5hICsgc28tPnNvX3NuZC5zYl9jYykpCiAJCQlm
bGFncyAmPSB+VEhfRklOOwpAQCAtNDA2LDcgKzQzMiw3IEBACiAJICoJLSB3ZSBuZWVkIHRvIHJl
dHJhbnNtaXQKIAkgKi8KIAlpZiAobGVuKSB7Ci0JCWlmIChsZW4gPT0gdHAtPnRfbWF4c2VnKQor
CQlpZiAobGVuID49IHRwLT50X21heHNlZykgLyogVFNPIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGJl
IGdyZWF0ZXIgKi8KIAkJCWdvdG8gc2VuZDsKIAkJLyoKIAkJICogTk9URSEgb24gbG9jYWxob3N0
IGNvbm5lY3Rpb25zIGFuICdhY2snIGZyb20gdGhlIHJlbW90ZQpAQCAtNzAzLDYgKzcyOSwxOSBA
QAogCSAqIENsZWFyIHRoZSBGSU4gYml0IGJlY2F1c2Ugd2UgY3V0IG9mZiB0aGUgdGFpbCBvZgog
CSAqIHRoZSBzZWdtZW50LgogCSAqLworI2lmZGVmIFRDUF9UU08KKwlpZiAodXNlX3Rzbykgewor
CQlpZiAobGVuICsgb3B0bGVuICsgaXBvcHRsZW4gPiBUQ1BfTUFYV0lOKSB7CisJCQkvKgorCQkJ
ICogSWYgdGhlcmUgaXMgc3RpbGwgbW9yZSB0byBzZW5kLAorCQkJICogZG9uJ3QgY2xvc2UgdGhl
IGNvbm5lY3Rpb24uCisJCQkgKi8KKwkJCWZsYWdzICY9IH5USF9GSU47CisJCQlsZW4gPSBUQ1Bf
TUFYV0lOIC0gb3B0bGVuIC0gaXBvcHRsZW47CisJCQlzZW5kYWxvdCA9IDE7CisJCX0KKwl9IGVs
c2UgCisjZW5kaWYKIAlpZiAobGVuICsgb3B0bGVuICsgaXBvcHRsZW4gPiB0cC0+dF9tYXhvcGQp
IHsKIAkJLyoKIAkJICogSWYgdGhlcmUgaXMgc3RpbGwgbW9yZSB0byBzZW5kLCBkb24ndCBjbG9z
ZSB0aGUgY29ubmVjdGlvbi4KQEAgLTk0NCw2ICs5ODMsMTIgQEAKIAkJLyogSVAgdmVyc2lvbiBt
dXN0IGJlIHNldCBoZXJlIGZvciBpcHY0L2lwdjYgY2hlY2tpbmcgbGF0ZXIgKi8KIAkJS0FTU0VS
VChpcC0+aXBfdiA9PSBJUFZFUlNJT04sCiAJCSAgICAoIiVzOiBJUCB2ZXJzaW9uIGluY29ycmVj
dDogJWQiLCBfX2Z1bmNfXywgaXAtPmlwX3YpKTsKKyNpZmRlZiBUQ1BfVFNPCisJCWlmICh1c2Vf
dHNvKSB7ICAvKiBTZXR1cCBmb3IgVFNPICovCisJCQltLT5tX3BrdGhkci50c29fbXNzID0gdHAt
PnRfbWF4c2VnOworCQkJbS0+bV9wa3RoZHIuY3N1bV9mbGFncyB8PSBDU1VNX1RDUFNFRzsKKwkJ
fQorI2VuZGlmCiAJfQogCiAJLyoKQEAgLTEwNzYsNyArMTEyMSwxMSBAQAogCSAqIFNlY3Rpb24g
Mi4gSG93ZXZlciB0aGUgdGNwIGhvc3RjYWNoZSBtaWdpdGF0ZXMgdGhlIHByb2JsZW0KIAkgKiBz
byBpdCBhZmZlY3RzIG9ubHkgdGhlIGZpcnN0IHRjcCBjb25uZWN0aW9uIHdpdGggYSBob3N0Lgog
CSAqLworI2lmZGVmIFRDUF9UU08KKwlpZiAocGF0aF9tdHVfZGlzY292ZXJ5ICYmICF1c2VfdHNv
KQorI2Vsc2UKIAlpZiAocGF0aF9tdHVfZGlzY292ZXJ5KQorI2VuZGlmCiAJCWlwLT5pcF9vZmYg
fD0gSVBfREY7CiAKIAllcnJvciA9IGlwX291dHB1dChtLCB0cC0+dF9pbnBjYi0+aW5wX29wdGlv
bnMsIE5VTEwsCmRpZmYgLU5hdXIgc3lzLmRpc3QvbmV0aW5ldC90Y3Bfc3Vici5jIHN5cy9uZXRp
bmV0L3RjcF9zdWJyLmMKLS0tIHN5cy5kaXN0L25ldGluZXQvdGNwX3N1YnIuYwlXZWQgQXVnICAy
IDA5OjE4OjA1IDIwMDYKKysrIHN5cy9uZXRpbmV0L3RjcF9zdWJyLmMJVGh1IEF1ZyAzMSAxNjo1
NDozMSAyMDA2CkBAIC0xNjQzLDYgKzE2NDMsNDEgQEAKIH0KICNlbmRpZiAvKiBJTkVUNiAqLwog
CisjaWZkZWYgVENQX1RTTworLyoKKyAqIEZpbmQgdGhlIGludGVyZmFjZSBmb3IgdGhpcyB0Y3Bj
YiBhbmQgZGV0ZXJtaW5lCisgKiBpZiBhIFRTTyBoYXJkd2FyZSBhc3Npc3QgaXMgYXZhaWxhYmxl
LgorICovCitib29sZWFuX3QKK3RjcF9jaGVja3Rzbyh0cCkKKwlzdHJ1Y3QgdGNwY2IgKnRwOwor
eworCXN0cnVjdCBpbl9jb25uaW5mbyAqaW5jOworCXN0cnVjdCByb3V0ZSBzcm87CisJc3RydWN0
IHNvY2thZGRyX2luICpkc3Q7CisJc3RydWN0IGlmbmV0ICppZnA7CisKKwlpbmMgPSAmdHAtPnRf
aW5wY2ItPmlucF9pbmM7CisJYnplcm8oJnNybywgc2l6ZW9mKHNybykpOworCWlmIChpbmMtPmlu
Y19mYWRkci5zX2FkZHIgIT0gSU5BRERSX0FOWSkgeworCQlkc3QgPSAoc3RydWN0IHNvY2thZGRy
X2luICopJnNyby5yb19kc3Q7CisJCWRzdC0+c2luX2ZhbWlseSA9IEFGX0lORVQ7CisJCWRzdC0+
c2luX2xlbiA9IHNpemVvZigqZHN0KTsKKwkJZHN0LT5zaW5fYWRkciA9IGluYy0+aW5jX2ZhZGRy
OworCQlydGFsbG9jX2lnbigmc3JvLCBSVEZfQ0xPTklORyk7CisJfQorCWlmIChzcm8ucm9fcnQg
IT0gTlVMTCkgeworCQlpZnAgPSBzcm8ucm9fcnQtPnJ0X2lmcDsKKwkJaWYgKGlmcC0+aWZfaHdh
c3Npc3QgJiBDU1VNX1RDUFNFRykgeworCQkJUlRGUkVFKHNyby5yb19ydCk7CisJCQlyZXR1cm4g
VFJVRTsKKwkJfQorCQlSVEZSRUUoc3JvLnJvX3J0KTsKKwl9CisJcmV0dXJuIEZBTFNFOworfQor
I2VuZGlmCisKICNpZmRlZiBJUFNFQwogLyogY29tcHV0ZSBFU1AvQUggaGVhZGVyIHNpemUgZm9y
IFRDUCwgaW5jbHVkaW5nIG91dGVyIElQIGhlYWRlci4gKi8KIHNpemVfdApkaWZmIC1OYXVyIHN5
cy5kaXN0L25ldGluZXQvdGNwX3Zhci5oIHN5cy9uZXRpbmV0L3RjcF92YXIuaAotLS0gc3lzLmRp
c3QvbmV0aW5ldC90Y3BfdmFyLmgJTW9uIEp1biAyNiAwODozNToyNSAyMDA2CisrKyBzeXMvbmV0
aW5ldC90Y3BfdmFyLmgJVGh1IEF1ZyAzMSAxMjo0MjoyNSAyMDA2CkBAIC01MTAsNiArNTEwLDEw
IEBACiB1X2xvbmcJIHRjcF9tYXhtdHU2KHN0cnVjdCBpbl9jb25uaW5mbyAqKTsKIHZvaWQJIHRj
cF9tc3Moc3RydWN0IHRjcGNiICosIGludCk7CiBpbnQJIHRjcF9tc3NvcHQoc3RydWN0IGluX2Nv
bm5pbmZvICopOworI2lmZGVmIFRDUF9UU08KK2Jvb2xlYW5fdAorCXRjcF9jaGVja3RzbyhzdHJ1
Y3QgdGNwY2IgKik7CisjZW5kaWYKIHN0cnVjdCBpbnBjYiAqCiAJIHRjcF9kcm9wX3N5bl9zZW50
KHN0cnVjdCBpbnBjYiAqLCBpbnQpOwogc3RydWN0IGlucGNiICoKZGlmZiAtTmF1ciBzeXMuZGlz
dC9zeXMvbWJ1Zi5oIHN5cy9zeXMvbWJ1Zi5oCi0tLSBzeXMuZGlzdC9zeXMvbWJ1Zi5oCVN1biBK
dWwgMjMgMTg6NDk6NTcgMjAwNgorKysgc3lzL3N5cy9tYnVmLmgJVGh1IEF1ZyAzMSAxMjozODow
NCAyMDA2CkBAIC0xMTAsNiArMTEwLDcgQEAKIAkvKiB2YXJpYWJsZXMgZm9yIGhhcmR3YXJlIGNo
ZWNrc3VtICovCiAJaW50CWNzdW1fZmxhZ3M7CQkvKiBmbGFncyByZWdhcmRpbmcgY2hlY2tzdW0g
Ki8KIAlpbnQJY3N1bV9kYXRhOwkJLyogZGF0YSBmaWVsZCB1c2VkIGJ5IGNzdW0gcm91dGluZXMg
Ki8KKwlpbnQJdHNvX21zczsJCS8qIFRTTyBzZWdtZW50IHNpemUgKi8KIAlTTElTVF9IRUFEKHBh
Y2tldF90YWdzLCBtX3RhZykgdGFnczsgLyogbGlzdCBvZiBwYWNrZXQgdGFncyAqLwogfTsKIApA
QCAtMjE1LDYgKzIxNiw3IEBACiAjZGVmaW5lCUNTVU1fVURQCQkweDAwMDQJCS8qIHdpbGwgY3N1
bSBVRFAgKi8KICNkZWZpbmUJQ1NVTV9JUF9GUkFHUwkJMHgwMDA4CQkvKiB3aWxsIGNzdW0gSVAg
ZnJhZ21lbnRzICovCiAjZGVmaW5lCUNTVU1fRlJBR01FTlQJCTB4MDAxMAkJLyogd2lsbCBkbyBJ
UCBmcmFnbWVudGF0aW9uICovCisjZGVmaW5lCUNTVU1fVENQU0VHCQkweDAwMjAJCS8qIGVsaWdp
YmxlIGZvciBUQ1Agc2VnbWVudGF0aW9uICovCiAKICNkZWZpbmUJQ1NVTV9JUF9DSEVDS0VECQkw
eDAxMDAJCS8qIGRpZCBjc3VtIElQICovCiAjZGVmaW5lCUNTVU1fSVBfVkFMSUQJCTB4MDIwMAkJ
LyogICAuLi4gdGhlIGNzdW0gaXMgdmFsaWQgKi8K
------=_Part_13875_32385575.1157151081575--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2a41acea0609011551v40338539u4eef48d091dd12ab>