From owner-freebsd-current@FreeBSD.ORG Fri Sep 1 22:51:26 2006 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F405B16A4E0 for ; Fri, 1 Sep 2006 22:51:25 +0000 (UTC) (envelope-from jfvogel@gmail.com) Received: from py-out-1112.google.com (py-out-1112.google.com [64.233.166.178]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3B4B843D55 for ; Fri, 1 Sep 2006 22:51:22 +0000 (GMT) (envelope-from jfvogel@gmail.com) Received: by py-out-1112.google.com with SMTP id o67so1421527pye for ; Fri, 01 Sep 2006 15:51:21 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=k/II5UB0E16IzXVV+9/gGvkqEW4zG9KRW4cQcDeAmkPcUAOb7iEuenTX1CKozenc66QDwZJihMnVZjGV29Usq2uGEmW2J9LiJs03LtfOeaXbwIDslcPURCk98OUxMZgHLHKnrMSpWRdEhhrEXJcO3Rl3grpIsQb+dTho9dcqC5E= Received: by 10.35.103.1 with SMTP id f1mr3987272pym; Fri, 01 Sep 2006 15:51:21 -0700 (PDT) Received: by 10.35.119.1 with HTTP; Fri, 1 Sep 2006 15:51:21 -0700 (PDT) Message-ID: <2a41acea0609011551v40338539u4eef48d091dd12ab@mail.gmail.com> Date: Fri, 1 Sep 2006 15:51:21 -0700 From: "Jack Vogel" To: freebsd-net , freebsd-current MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_13875_32385575.1157151081575" Cc: Subject: RFC: TSO patch for current X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Sep 2006 22:51:26 -0000 ------=_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--