From: Tom St Denis Subject: [PATCH umr] PM4 packet streaming support (v2) Date: Sun, 20 May 2018 10:27:28 -0400 Message-ID: <20180520142728.26807-1-tom.stdenis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Tom St Denis VGhpcyBhZGRzIHRoZSBpbml0aWFsIGJpdHMgb2YgUE00IHN0cmVhbSBkZWNvZGluZyB0aGF0IGNh biBiZQp1c2VkIHRvIGFjaGlldmUgb3RoZXIgZGVidWdnaW5nIHB1cnBvc2VzLiAgVGhlIGZpcnN0 IGJlaW5nCnR5aW5nIHJpbmcgZGF0YSBsb29zZWx5IHRvIHNoYWRlciBkYXRhIHdoZW4gcHJpbnRp bmcgd2F2ZXMuICBOb3cKdGhlIC0td2F2ZXMgY29tbWFuZCBjYW4gcHJpbnQgb3V0IGluZm9ybWF0 aW9uIGFib3V0IHRoZSBzaGFkZXIKYWxvbmcgd2l0aCBkdW1waW5nIHRoZSBXQVZFX1NUQVRVUyBy ZWdpc3RlcnMuCgoodjIpOiBBZGQgYWJpbGl0eSB0byBzcGVjaWZ5IHJpbmcgbmFtZSBhbmQgZG9j dW1lbnRhdGlvbgoKU2lnbmVkLW9mZi1ieTogVG9tIFN0IERlbmlzIDx0b20uc3RkZW5pc0BhbWQu Y29tPgotLS0KIGRvYy9zcGhpbngvc291cmNlL2xpYnBtNF9zdHJlYW0ucnN0IHwgMTAyICsrKysr KysrKysrKysrKwogZG9jL3NwaGlueC9zb3VyY2UvbGlidW1yX2FwaS5yc3QgICAgfCAgIDEgKwog ZG9jL3Vtci4xICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9hcHAvbWFp bi5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvYXBwL3ByaW50X3dhdmVzLmMg ICAgICAgICAgICAgICB8ICAzNiArKysrKy0KIHNyYy9saWIvQ01ha2VMaXN0cy50eHQgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9saWIvdW1yX3JlYWRfcG00X3N0cmVhbS5jICAgICAgIHwgMjQ0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Vtci5oICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMjIgKysrLQogOCBmaWxlcyBjaGFuZ2VkLCA0MTcgaW5zZXJ0 aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2Mvc3BoaW54L3Nv dXJjZS9saWJwbTRfc3RyZWFtLnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saWIvdW1yX3Jl YWRfcG00X3N0cmVhbS5jCgpkaWZmIC0tZ2l0IGEvZG9jL3NwaGlueC9zb3VyY2UvbGlicG00X3N0 cmVhbS5yc3QgYi9kb2Mvc3BoaW54L3NvdXJjZS9saWJwbTRfc3RyZWFtLnJzdApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc5MGNiOWNhODMxZgotLS0gL2Rldi9udWxs CisrKyBiL2RvYy9zcGhpbngvc291cmNlL2xpYnBtNF9zdHJlYW0ucnN0CkBAIC0wLDAgKzEsMTAy IEBACis9PT09PT09PT09PT09PT09PT09CitQTTQgU3RyZWFtIERlY29kaW5nCis9PT09PT09PT09 PT09PT09PT09CisKK1RoZSBVTVIgbGlicmFyeSBoYXMgdGhlIGFiaWxpdHkgdG8gcmVhZCByaW5n cyBpbnRvIGEgbGlua2VkIGxpc3QKK29mIFBNNCBwYWNrZXRzIHdpdGggcG9pbnRlcnMgdG8gaW5k aXJlY3QgYnVmZmVycyAoSUJzKSBhbmQgc2hhZGVycy4KKworLS0tLS0tLS0tLS0tLS0tLS0KK1BN NCBEZWNvZGUgYSBSaW5nCistLS0tLS0tLS0tLS0tLS0tLQorCitUbyBkZWNvZGUgYSByaW5nIGlu dG8gYSBzdHJlYW0gdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gYmUgdXNlZDoKKworOjoKKwor CXN0cnVjdCB1bXJfcG00X3N0cmVhbSAqdW1yX3BtNF9kZWNvZGVfcmluZyhzdHJ1Y3QgdW1yX2Fz aWMgKmFzaWMsIGNoYXIgKnJpbmduYW1lKTsKKworV2hpY2ggd2lsbCBkZWNvZGUgdGhlIHJpbmcg bmFtZWQgYnkgcmluZ25hbWUgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8KK3RoZSBmb2xsb3dpbmcg c3RydWN0dXJlIGlmIHN1Y2Nlc3NmdWw6CisKKzo6CisKKwkvKiBJQi9yaW5nIGRlY29kaW5nL2R1 bXBpbmcvZXRjICovCisJc3RydWN0IHVtcl9wbTRfc3RyZWFtIHsKKwkJdWludDMyX3QKKwkJCXBr dHR5cGUsCS8vIHBhY2tldCB0eXBlICgwPT1zaW1wbGUgd3JpdGUsIDMgPT0gcGFja2V0KQorCQkJ cGt0MG9mZiwJLy8gYmFzZSBhZGRyZXNzIGZvciBQS1QwIHdyaXRlcworCQkJb3Bjb2RlLAorCQkJ bl93b3JkcywJLy8gbnVtYmVyIG9mIHdvcmRzIGlnbm9yaW5nIGhlYWRlcgorCQkJKndvcmRzOwkJ Ly8gd29yZHMgZm9sbG93aW5nIGhlYWRlciB3b3JkCisKKwkJc3RydWN0IHVtcl9wbTRfc3RyZWFt CisJCQkJKm5leHQsCS8vIGFkamFjZW50IFBNNCBwYWNrZXQgaWYgYW55CisJCQkJKmliOwkvLyBJ QiB0aGlzIHBhY2tldCBtaWdodCBwb2ludCB0bworCisJCXN0cnVjdCB1bXJfc2hhZGVyc19wZ20g KnNoYWRlcjsgLy8gc2hhZGVyIHByb2dyYW0gaWYgYW55CisJfTsKKworQWRqYWNlbnQgUE00IHBh Y2tldHMgYXJlIHBvaW50ZWQgdG8gYnkgJ25leHQnIChOVUxMIHRlcm1pbmF0ZWQpIGFuZAorYW55 IElCcyBvciBzaGFkZXJzIHRoYXQgYXJlIGZvdW5kIGFyZSBwb2ludGVkIHRvIGJ5ICdpYicgYW5k ICdzaGFkZXInCityZXNwZWN0aXZlbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1BNNCBEZWNv ZGUgYSBCdWZmZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gZGVjb2RlIGEgUE00IHN0cmVh bSBpbnNpZGUgYSB1c2VyIGJ1ZmZlciB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uCitjYW4gYmUgdXNl ZDoKKworOjoKKworCXN0cnVjdCB1bXJfcG00X3N0cmVhbSAqdW1yX3BtNF9kZWNvZGVfc3RyZWFt KHN0cnVjdCB1bXJfYXNpYyAqYXNpYywgaW50IHZtaWQsIHVpbnQzMl90ICpzdHJlYW0sIHVpbnQz Ml90IG53b3Jkcyk7CisKK1RoaXMgd2lsbCByZXR1cm4gYSBzdHJ1Y3R1cmUgcG9pbnRlciBpZiBz dWNjZXNzZnVsLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLQorRnJlZWluZyBhIFBNNCBTdHJlYW0K Ky0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgUE00IHN0cmVhbSBjYW4gYmUgZnJlZWQgd2l0aCB0 aGUgZm9sbG93aW5nIGZ1bmN0aW9uOgorCis6OgorCisJdm9pZCB1bXJfZnJlZV9wbTRfc3RyZWFt KHN0cnVjdCB1bXJfcG00X3N0cmVhbSAqc3RyZWFtKTsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitGaW5kaW5nIFNoYWRlcnMgaW4gUE00IFN0cmVhbXMKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorCitUaGUgV0FWRV9TVEFUVVMgcmVnaXN0ZXJzIGNhbiBpbmRpY2F0 ZSBhY3RpdmUgd2F2ZXMgYW5kIHdoZXJlIGluCitzaGFkZXJzIHRoZXkgYXJlIGJ1dCBub3QgaW5m b3JtYXRpb24gYWJvdXQgdGhlIHNoYWRlcnMgdGhlbXNlbHZlcy4KK1RoZSBmb2xsb3dpbmcgZnVu Y3Rpb25zIGNhbiBmaW5kIHNoYWRlcnMgaW4gUE00IHN0cmVhbXM6CisKKzo6CisKKwlzdHJ1Y3Qg dW1yX3NoYWRlcnNfcGdtICp1bXJfZmluZF9zaGFkZXJfaW5fc3RyZWFtKHN0cnVjdCB1bXJfcG00 X3N0cmVhbSAqc3RyZWFtLCB1bnNpZ25lZCB2bWlkLCB1aW50NjRfdCBhZGRyKTsKKwlzdHJ1Y3Qg dW1yX3NoYWRlcnNfcGdtICp1bXJfZmluZF9zaGFkZXJfaW5fcmluZyhzdHJ1Y3QgdW1yX2FzaWMg KmFzaWMsIGNoYXIgKnJpbmduYW1lLCB1bnNpZ25lZCB2bWlkLCB1aW50NjRfdCBhZGRyLCBpbnQg bm9faGFsdCk7CisKK0lmIGZvdW5kIHRoZXkgcmV0dXJuIGEgcG9pbnRlciB0byBhIHNoYWRlciBz dHJ1Y3R1cmUgd2hpY2ggdGhlbgoraW5kaWNhdGVzIHRoZSBiYXNlIGFkZHJlc3MsIFZNSUQsIGFu ZCBzaXplIG9mIHRoZSBzaGFkZXIuICBUaGlzCitmdW5jdGlvbiByZXR1cm5zIGEgY29weSBvZiB0 aGUgc2hhZGVyIHN0cnVjdHVyZSBmcm9tIHRoZSBQTTQgc3RyZWFtCitzdHJ1Y3R1cmUgd2hpY2gg bXVzdCBiZSBmcmVlZCBpbmRlcGVuZGVudGx5LiAgQ2FsbGluZyB1bXJfZnJlZV9wbTRfc3RyZWFt KCkKK3dpbGwgbm90IGZyZWUgdGhlc2UgY29waWVzLgorCis6OgorCisJc3RydWN0IHVtcl9zaGFk ZXJzX3BnbSB7CisJCS8vIFZNSUQgYW5kIGxlbmd0aCBpbiBieXRlcworCQl1aW50MzJfdAorCQkJ dm1pZCwKKwkJCXNpemU7CisKKwkJLy8gYWRkcmVzcyBpbiBWTSBzcGFjZSBmb3IgdGhpcyBzaGFk ZXIKKwkJdWludDY0X3QgYWRkcjsKKworCQlzdHJ1Y3QgdW1yX3NoYWRlcnNfcGdtICpuZXh0Owor CisJCXN0cnVjdCB7CisJCQl1aW50NjRfdCBpYl9iYXNlLCBpYl9vZmZzZXQ7CisJCX0gc3JjOwor CX07CisKZGlmZiAtLWdpdCBhL2RvYy9zcGhpbngvc291cmNlL2xpYnVtcl9hcGkucnN0IGIvZG9j L3NwaGlueC9zb3VyY2UvbGlidW1yX2FwaS5yc3QKaW5kZXggNjY4NzdmODdhM2Y5Li5mMmE1Njlm MzA0MmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcGhpbngvc291cmNlL2xpYnVtcl9hcGkucnN0CisrKyBi L2RvYy9zcGhpbngvc291cmNlL2xpYnVtcl9hcGkucnN0CkBAIC0xMywzICsxMyw0IEBAIGxpYnVt cmNvcmUuYTogQVBJIERvY3VtZW50YXRpb24KICAgIGxpYnZtX2FjY2VzcwogICAgbGliaGFsdF93 YXZlcwogICAgbGlid2F2ZV9zdGF0dXMKKyAgIGxpYnBtNF9zdHJlYW0KZGlmZiAtLWdpdCBhL2Rv Yy91bXIuMSBiL2RvYy91bXIuMQppbmRleCBhNzc3ZDkzMTIwNTQuLmMxNjNhN2JjYjNmMCAxMDA2 NDQKLS0tIGEvZG9jL3Vtci4xCisrKyBiL2RvYy91bXIuMQpAQCAtOTAsMTMgKzkwLDE1IEBAIG9w dGlvbnMgdGhhdCBhcHBseSBhcmU6CiBhbmQKIC5CIHVzZV9wY2kKIC4KLS5JUCAiLS13YXZlcywg LXdhIgorLklQICItLXdhdmVzLCAtd2EgPHJpbmdfbmFtZT4iCiBQcmludCBvdXQgaW5mb3JtYXRp b24gYWJvdXQgYW55IGFjdGl2ZSBDVSB3YXZlcy4gIE5vdGUgdGhhdCBpZiBHRlggcG93ZXIgZ2F0 aW5nCiBpcyBlbmFibGVkIHRoaXMgY29tbWFuZCBtYXkgcmVzdWx0IGluIGEgR1BVIGhhbmcuICBJ dCdzIHVubGlrZWx5IHVubGVzcyB5b3UncmUKIGludm9raW5nIGl0IHZlcnkgcmFwaWRseS4gIFVu bGlrZSB0aGUgd2F2ZSBjb3VudCByZWFkaW5nIGluIC0tdG9wIHRoaXMgY29tbWFuZAogd2lsbCBv cGVyYXRlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBHRlggUEcgaXMgZW5hYmxlZCBvciBub3QuICBD YW4gdXNlCiAuQiBiaXRzCi10byBkZWNvZGUgdGhlIHdhdmUgYml0ZmllbGRzLgordG8gZGVjb2Rl IHRoZSB3YXZlIGJpdGZpZWxkcy4gIEFuIG9wdGlvbmFsIHJpbmcgbmFtZSBjYW4gYmUgc3BlY2lm aWVkCisoZGVmYXVsdDogZ2Z4KSB0byBzZWFyY2ggZm9yIHBvaW50ZXJzIHRvIGFjdGl2ZSBzaGFk ZXJzIHRvIGZpbmQgZXh0cmEgZGVidWdnaW5nCitpbmZvcm1hdGlvbi4KIAogLklQICItLXZtLWRl Y29kZSwgLXZtIHZtaWRAPGFkZHJlc3M+IDxudW1fb2ZfcGFnZXM+IgogRGVjb2RlIHBhZ2UgbWFw cGluZ3MgYXQgYSBzcGVjaWZpZWQgYWRkcmVzcyAoaW4gaGV4KSBmcm9tIHRoZSBWTUlEIHNwZWNp ZmllZC4KZGlmZiAtLWdpdCBhL3NyYy9hcHAvbWFpbi5jIGIvc3JjL2FwcC9tYWluLmMKaW5kZXgg ZDY1NzFlNzdiNzRkLi4xNzEwYjJjZGY0YTkgMTAwNjQ0Ci0tLSBhL3NyYy9hcHAvbWFpbi5jCisr KyBiL3NyYy9hcHAvbWFpbi5jCkBAIC0yNzQsNiArMjc0LDEyIEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkJfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItLXdhdmVzIikg fHwgIXN0cmNtcChhcmd2W2ldLCAiLXdhIikpIHsKIAkJCWlmICghYXNpYykKIAkJCQlhc2ljID0g Z2V0X2FzaWMoKTsKKwkJCWlmIChpICsgMSA8IGFyZ2MpIHsKKwkJCQlpZiAoYXJndltpKzFdWzBd ICE9ICctJykgeworCQkJCQlzdHJjcHkoYXNpYy0+b3B0aW9ucy5yaW5nX25hbWUsIGFyZ3ZbaSsx XSk7CisJCQkJCSsraTsKKwkJCQl9CisJCQl9CiAJCQl1bXJfcHJpbnRfd2F2ZXMoYXNpYyk7CiAJ CX0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1zY2FuIikgfHwgIXN0cmNtcChhcmd2W2ld LCAiLXMiKSkgewogCQkJaWYgKGkgKyAxIDwgYXJnYykgewpAQCAtNTczLDkgKzU3OSwxMSBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJIlxuXHRcdCctTyBiaXRzLGZvbGxvdyxl bXB0eV9sb2cnIHRvIGNvbnRpbnVhbGx5IGR1bXAgdGhlIHRyYWNlIGxvZy4pXG4iCiAiXG5cdC0t dG9wLCAtdFxuXHRcdFN1bW1hcml6ZSBHUFUgdXRpbGl6YXRpb24uICBDYW4gc2VsZWN0IGEgU0Ug YmxvY2sgd2l0aCAtLWJhbmsuICBDYW4gdXNlIgogCSJcblx0XHRvcHRpb25zICd1c2VfY29sb3Vy JyB0byBjb2xvdXJpemUgb3V0cHV0IGFuZCAndXNlX3BjaScgdG8gaW1wcm92ZSBlZmZpY2llbmN5 LlxuIgotIlxuXHQtLXdhdmVzLCAtd2Fcblx0XHRQcmludCBvdXQgaW5mb3JtYXRpb24gYWJvdXQg YW55IGFjdGl2ZSBDVSB3YXZlcy4gIENhbiB1c2UgJy1PIGJpdHMnIgorIlxuXHQtLXdhdmVzLCAt d2EgPHJpbmdfbmFtZT5cblx0XHRQcmludCBvdXQgaW5mb3JtYXRpb24gYWJvdXQgYW55IGFjdGl2 ZSBDVSB3YXZlcy4gIENhbiB1c2UgJy1PIGJpdHMnIgogCSJcblx0XHR0byBzZWUgZGVjb2Rpbmcg b2YgdmFyaW91cyB3YXZlIGZpZWxkcy4gIENhbiB1c2UgdGhlICctTyBoYWx0X3dhdmVzJyBvcHRp b24iCi0JIlxuXHRcdHRvIGhhbHQgdGhlIFNRIHdoaWxlIHJlYWRpbmcgcmVnaXN0ZXJzLlxuIgor CSJcblx0XHR0byBoYWx0IHRoZSBTUSB3aGlsZSByZWFkaW5nIHJlZ2lzdGVycy4gIEFuIG9wdGlv bmFsIHJpbmcgbmFtZSBjYW4gYmUgc3BlY2lmaWVkIgorCSJcblx0XHR3aGljaCB3aWxsIHRoZW4g c2VhcmNoIGEgZ2l2ZW4gcmluZyBmb3IgcG9pbnRlcnMgdG8gYWN0aXZlIHNoYWRlcnMuICBJdCB3 aWxsIgorCSJcblx0XHRkZWZhdWx0IHRvIHRoZSAnZ2Z4JyByaW5nIGlmIG5vdGhpbmcgaXMgc3Bl Y2lmaWVkLlxuIgogIlxuXHQtLXZtLWRlY29kZSwgLXZtIHZtaWRAPGFkZHJlc3M+IDxudW1fb2Zf cGFnZXM+IgogCSJcblx0XHREZWNvZGUgcGFnZSBtYXBwaW5ncyBhdCBhIHNwZWNpZmllZCBhZGRy ZXNzIChpbiBoZXgpIGZyb20gdGhlIFZNSUQgc3BlY2lmaWVkLiIKIAkiXG5cdFx0VGhlIFZNSUQg Y2FuIGJlIHNwZWNpZmllZCBpbiBoZXhhZGVjaW1hbCAod2l0aCBsZWFkaW5nICcweCcpIG9yIGlu IGRlY2ltYWwuIgpkaWZmIC0tZ2l0IGEvc3JjL2FwcC9wcmludF93YXZlcy5jIGIvc3JjL2FwcC9w cmludF93YXZlcy5jCmluZGV4IDY5NjVmN2YzMTg1NC4uMzg0N2Q2OWEzYjhkIDEwMDY0NAotLS0g YS9zcmMvYXBwL3ByaW50X3dhdmVzLmMKKysrIGIvc3JjL2FwcC9wcmludF93YXZlcy5jCkBAIC00 MSwxMCArNDEsMTkgQEAgdm9pZCB1bXJfcHJpbnRfd2F2ZXMoc3RydWN0IHVtcl9hc2ljICphc2lj KQogCXVpbnQ2NF90IHBnbV9hZGRyOwogCXN0cnVjdCB1bXJfd2F2ZV9kYXRhICp3ZCwgKm93ZDsK IAlpbnQgZmlyc3QgPSAxLCBjb2wgPSAwOworCXN0cnVjdCB1bXJfc2hhZGVyc19wZ20gKnNoYWRl ciA9IE5VTEw7CisJc3RydWN0IHVtcl9wbTRfc3RyZWFtICpzdHJlYW07CiAKIAlpZiAoYXNpYy0+ b3B0aW9ucy5oYWx0X3dhdmVzKQogCQl1bXJfc3FfY21kX2hhbHRfd2F2ZXMoYXNpYywgVU1SX1NR X0NNRF9IQUxUKTsKIAorCS8vIHNjYW4gYSByaW5nIGJ1dCBkb24ndCB0cmlnZ2VyIHRoZSBoYWx0 L3Jlc3VtZQorCS8vIHNpbmNlIGl0IHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUKKwl4ID0g YXNpYy0+b3B0aW9ucy5oYWx0X3dhdmVzOworCWFzaWMtPm9wdGlvbnMuaGFsdF93YXZlcyA9IDA7 CisJc3RyZWFtID0gdW1yX3BtNF9kZWNvZGVfcmluZyhhc2ljLCBhc2ljLT5vcHRpb25zLnJpbmdf bmFtZVswXSA/IGFzaWMtPm9wdGlvbnMucmluZ19uYW1lIDogImdmeCIpOworCWFzaWMtPm9wdGlv bnMuaGFsdF93YXZlcyA9IHg7CisKIAlpZiAoYXNpYy0+ZmFtaWx5IDw9IEZBTUlMWV9DSUspCiAJ CXNoaWZ0ID0gMzsgIC8vIG9uIFNJLi5DSUsgYWxsb2NhdGlvbnMgd2VyZSBkb25lIGluIDgtZHdv cmQgYmxvY2tzCiAJZWxzZQpAQCAtMjIwLDggKzIyOSwyOCBAQCB2b2lkIHVtcl9wcmludF93YXZl cyhzdHJ1Y3QgdW1yX2FzaWMgKmFzaWMpCiAJCQkJfQogCQkJfQogCi0JCQlwcmludGYoIlxuXG5Q R01fTUVNOlxuIik7Ci0JCQlwZ21fYWRkciA9ICgoKHVpbnQ2NF90KXdkLT53cy5wY19oaSA8PCAz MikgfCB3ZC0+d3MucGNfbG8pIC0gKE5VTV9PUENPREVfV09SRFMqNCkvMjsKKwkJCXByaW50Zigi XG5cblBHTV9NRU06Iik7CisJCQlwZ21fYWRkciA9ICgoKHVpbnQ2NF90KXdkLT53cy5wY19oaSA8 PCAzMikgfCB3ZC0+d3MucGNfbG8pOworCQkJaWYgKHN0cmVhbSkKKwkJCQlzaGFkZXIgPSB1bXJf ZmluZF9zaGFkZXJfaW5fc3RyZWFtKHN0cmVhbSwgd2QtPndzLmh3X2lkLnZtX2lkLCBwZ21fYWRk cik7CisJCQlpZiAoc2hhZGVyKSB7CisJCQkJcHJpbnRmKCIgKGZvdW5kIHNoYWRlciBhdDogJXMl dSVzQDB4JXMlbGx4JXMgb2YgJXMldSVzIGJ5dGVzKVxuIiwKKwkJCQkJQkxVRSwgc2hhZGVyLT52 bWlkLCBSU1QsCisJCQkJCVlFTExPVywgKHVuc2lnbmVkIGxvbmcgbG9uZylzaGFkZXItPmFkZHIs IFJTVCwKKwkJCQkJQkxVRSwgc2hhZGVyLT5zaXplLCBSU1QpOworCisJCQkJLy8gc3RhcnQgZGVj b2RpbmcgYSBiaXQgYmVmb3JlIFBDIGlmIHBvc3NpYmxlCisJCQkJaWYgKHNoYWRlci0+YWRkciAr ICgoTlVNX09QQ09ERV9XT1JEUyo0KS8yKSA8IHBnbV9hZGRyKQorCQkJCQlwZ21fYWRkciAtPSAo TlVNX09QQ09ERV9XT1JEUyo0KS8yOworCQkJCWVsc2UKKwkJCQkJcGdtX2FkZHIgPSBzaGFkZXIt PmFkZHI7CisKKwkJCQlmcmVlKHNoYWRlcik7CisJCQl9IGVsc2UgeworCQkJCXBnbV9hZGRyIC09 IChOVU1fT1BDT0RFX1dPUkRTKjQpLzI7CisJCQkJcHJpbnRmKCJcbiIpOworCQkJfQorCiAJCQl1 bXJfdm1fZGlzYXNtKGFzaWMsIHdkLT53cy5od19pZC52bV9pZCwgcGdtX2FkZHIsICgoKHVpbnQ2 NF90KXdkLT53cy5wY19oaSA8PCAzMikgfCB3ZC0+d3MucGNfbG8pLCBOVU1fT1BDT0RFX1dPUkRT KjQsIE5VTEwpOwogCiAJCQlIdigiTERTX0FMTE9DIiwgd2QtPndzLmxkc19hbGxvYy52YWx1ZSk7 CkBAIC0yNTMsNiArMjgyLDkgQEAgdm9pZCB1bXJfcHJpbnRfd2F2ZXMoc3RydWN0IHVtcl9hc2lj ICphc2ljKQogCQl3ZCA9IG93ZDsKIAl9CiAKKwlpZiAoc3RyZWFtKQorCQl1bXJfZnJlZV9wbTRf c3RyZWFtKHN0cmVhbSk7CisKIAlpZiAoYXNpYy0+b3B0aW9ucy5oYWx0X3dhdmVzKQogCQl1bXJf c3FfY21kX2hhbHRfd2F2ZXMoYXNpYywgVU1SX1NRX0NNRF9SRVNVTUUpOwogfQpkaWZmIC0tZ2l0 IGEvc3JjL2xpYi9DTWFrZUxpc3RzLnR4dCBiL3NyYy9saWIvQ01ha2VMaXN0cy50eHQKaW5kZXgg N2EwNDU0MGI1OGM4Li4zZDRlMzc2YjE0OTUgMTAwNjQ0Ci0tLSBhL3NyYy9saWIvQ01ha2VMaXN0 cy50eHQKKysrIGIvc3JjL2xpYi9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiArMjgsNyBAQCBhZGRf bGlicmFyeSh1bXJjb3JlIFNUQVRJQwogICB1bXJfYXBwbHlfYmFua19hZGRyZXNzLmMKICAgdW1y X2xsdm1fZGlzYXNtLmMKICAgdW1yX3JlYWRfcmluZ19kYXRhLmMKKyAgdW1yX3JlYWRfcG00X3N0 cmVhbS5jCiAgIHVwZGF0ZS5jCiAgIHZlcnNpb24uYwogICAkPFRBUkdFVF9PQkpFQ1RTOmFzaWM+ ICQ8VEFSR0VUX09CSkVDVFM6aXA+CmRpZmYgLS1naXQgYS9zcmMvbGliL3Vtcl9yZWFkX3BtNF9z dHJlYW0uYyBiL3NyYy9saWIvdW1yX3JlYWRfcG00X3N0cmVhbS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmRjZTAzZjVmMDFiCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2xpYi91bXJfcmVhZF9wbTRfc3RyZWFtLmMKQEAgLTAsMCArMSwyNDQgQEAKKy8qCisgKiBD b3B5cmlnaHQgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs bCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBB VVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu CisgKgorICogQXV0aG9yczogVG9tIFN0IERlbmlzIDx0b20uc3RkZW5pc0BhbWQuY29tPgorICoK KyAqLworI2luY2x1ZGUgInVtci5oIgorCitzdHJ1Y3QgdW1yX3BtNF9zdHJlYW0gKnVtcl9wbTRf ZGVjb2RlX3N0cmVhbShzdHJ1Y3QgdW1yX2FzaWMgKmFzaWMsIGludCB2bWlkLCB1aW50MzJfdCAq c3RyZWFtLCB1aW50MzJfdCBud29yZHMpOworCisvLyBUT0RPOiBtYWtlIHRoaXMgYSBsaWJyYXJ5 IGZ1bmN0aW9uCitzdGF0aWMgY2hhciAqdW1yX3JlZ19uYW1lKHN0cnVjdCB1bXJfYXNpYyAqYXNp YywgdWludDY0X3QgYWRkcikKK3sKKwlzdHJ1Y3QgdW1yX3JlZyAqcmVnOworCXN0cnVjdCB1bXJf aXBfYmxvY2sgKmlwOworCXN0YXRpYyBjaGFyIG5hbWVbNTEyXTsKKworCXJlZyA9IHVtcl9maW5k X3JlZ19ieV9hZGRyKGFzaWMsIGFkZHIsICZpcCk7CisJaWYgKGlwICYmIHJlZykgeworCQlzcHJp bnRmKG5hbWUsICIlcyVzLiVzJXMiLCBSRUQsIGlwLT5pcG5hbWUsIHJlZy0+cmVnbmFtZSwgUlNU KTsKKwkJcmV0dXJuIG5hbWU7CisJfSBlbHNlIHsKKwkJcmV0dXJuICI8dW5rbm93bj4iOworCX0K K30KKworLy8gcHJvY2VzcyBhIHBhY2tldCBmb3IgSUIgcG9pbnRlcnMgb3Igc2hhZGVyIHdyaXRl cworc3RhdGljIHZvaWQgcGFyc2VfcG00KHN0cnVjdCB1bXJfYXNpYyAqYXNpYywgaW50IHZtaWQs IHN0cnVjdCB1bXJfcG00X3N0cmVhbSAqcHMpCit7CisJdWludDY0X3QgYWRkcjsKKwl1aW50MzJf dCBzaXplLCB0dm1pZDsKKwl2b2lkICpidWY7CisKKwlzd2l0Y2ggKHBzLT5vcGNvZGUpIHsKKwkJ Y2FzZSAweDc2OiAvLyBTRVRfU0hfUkVHIChsb29raW5nIGZvciB3cml0ZXMgdG8gc2hhZGVyIHJl Z2lzdGVycyk7CisJCXsKKwkJCXVuc2lnbmVkIG4sIG5hOworCQkJdWludDMyX3QgcmVnX2FkZHIg PSBwcy0+d29yZHNbMF0gKyAweDJDMDA7CisJCQl1aW50NjRfdCBzaGFkZXJfYWRkciA9IDA7CisJ CQljaGFyICp0bXA7CisKKwkJCWZvciAobmEgPSAwLCBuID0gMTsgbiA8IHBzLT5uX3dvcmRzOyBu KyspIHsKKwkJCQl0bXAgPSB1bXJfcmVnX25hbWUoYXNpYywgcmVnX2FkZHIgKyBuIC0gMSk7CisJ CQkJaWYgKHN0cnN0cih0bXAsICJTUElfU0hBREVSX1BHTV9MT18iKSB8fCBzdHJzdHIodG1wLCAi Q09NUFVURV9QR01fTE8iKSkgeworCQkJCQlzaGFkZXJfYWRkciA9IChzaGFkZXJfYWRkciAmIH4w eEZGRkZGRkZGRkZVTEwpIHwgKCh1aW50NjRfdClwcy0+d29yZHNbbl0gPDwgOCk7CisJCQkJCW5h IHw9IDE7CisJCQkJfSBlbHNlIGlmIChzdHJzdHIodG1wLCAiU1BJX1NIQURFUl9QR01fSElfIikg fHwgc3Ryc3RyKHRtcCwgIkNPTVBVVEVfUEdNX0hJIikpIHsKKwkJCQkJc2hhZGVyX2FkZHIgPSAo c2hhZGVyX2FkZHIgJiAweEZGRkZGRkZGRkZVTEwpIHwgKCh1aW50NjRfdClwcy0+d29yZHNbbl0g PDwgMzIpOworCQkJCQluYSB8PSAyOworCQkJCX0KKwkJCX0KKworCQkJaWYgKG5hID09IDMpIHsK KwkJCQkvLyB3ZSBoYXZlIGEgc2hhZGVyIGFkZHJlc3MKKwkJCQlwcy0+c2hhZGVyID0gY2FsbG9j KDEsIHNpemVvZihwcy0+c2hhZGVyWzBdKSk7CisJCQkJcHMtPnNoYWRlci0+dm1pZCA9IHZtaWQ7 CisJCQkJcHMtPnNoYWRlci0+YWRkciA9IHNoYWRlcl9hZGRyOworCQkJCXBzLT5zaGFkZXItPnNp emUgPSB1bXJfY29tcHV0ZV9zaGFkZXJfc2l6ZShhc2ljLCBwcy0+c2hhZGVyKTsKKwkJCX0KKwkJ CWJyZWFrOworCQl9CisJCWNhc2UgMHgzZjogLy8gSU5ESVJFQ1RfQlVGRkVSX0NJSworCQljYXNl IDB4MzM6IC8vIElORElSRUNUX0JVRkZFUl9DT05TVAorCQkJYWRkciA9IChwcy0+d29yZHNbMF0g JiB+M1VMTCkgfCAoKHVpbnQ2NF90KShwcy0+d29yZHNbMV0gJiAweEZGRkYpIDw8IDMyKTsKKwkJ CXNpemUgPSAocHMtPndvcmRzWzJdICYgKCgxVUwgPDwgMjApIC0gMSkpICogNDsKKwkJCXR2bWlk ID0gcHMtPndvcmRzWzJdID4+IDI0OworCQkJaWYgKCF0dm1pZCkKKwkJCQl0dm1pZCA9IHZtaWQ7 CisJCQlidWYgPSBjYWxsb2MoMSwgc2l6ZSk7CisJCQl1bXJfcmVhZF92cmFtKGFzaWMsIHR2bWlk LCBhZGRyLCBzaXplLCBidWYpOworCQkJcHMtPmliID0gdW1yX3BtNF9kZWNvZGVfc3RyZWFtKGFz aWMsIHR2bWlkLCBidWYsIHNpemUgLyA0KTsKKwkJCWZyZWUoYnVmKTsKKwkJCWJyZWFrOworCX0K K30KKworLy8gc2VhcmNoIGZvciBhIHNoYWRlciBpbiBhIHJpbmcKK3N0cnVjdCB1bXJfc2hhZGVy c19wZ20gKnVtcl9maW5kX3NoYWRlcl9pbl9yaW5nKHN0cnVjdCB1bXJfYXNpYyAqYXNpYywgY2hh ciAqcmluZ25hbWUsIHVuc2lnbmVkIHZtaWQsIHVpbnQ2NF90IGFkZHIsIGludCBub19oYWx0KQor eworCXN0cnVjdCB1bXJfcG00X3N0cmVhbSAqc3RyZWFtOworCXZvaWQgKnA7CisJaW50IHQ7CisK KwkvLyBvcHRpb25hbGx5IG11dGUgaGFsdF93YXZlcyBpZiB3ZSBhcmUgY2FsbGluZyB0aGlzIGZy b20KKwkvLyBhIGZ1bmN0aW9uIHRoYXQgaGFzIGFscmVhZHkgaGFsdGVkIHRoZSB3YXZlcworCXQg PSBhc2ljLT5vcHRpb25zLmhhbHRfd2F2ZXM7CisKKwlpZiAobm9faGFsdCkKKwkJYXNpYy0+b3B0 aW9ucy5oYWx0X3dhdmVzID0gMDsKKworCXN0cmVhbSA9IHVtcl9wbTRfZGVjb2RlX3JpbmcoYXNp YywgcmluZ25hbWUpOworCisJYXNpYy0+b3B0aW9ucy5oYWx0X3dhdmVzID0gdDsKKworCXAgPSB1 bXJfZmluZF9zaGFkZXJfaW5fc3RyZWFtKHN0cmVhbSwgdm1pZCwgYWRkcik7CisJdW1yX2ZyZWVf cG00X3N0cmVhbShzdHJlYW0pOworCXJldHVybiBwOworfQorCisKKy8vIHJldHVybiBhIGNvcHkg b2YgYSBzaGFkZXIgb2JqZWN0IGZvdW5kIGluIGEgc3RyZWFtCitzdHJ1Y3QgdW1yX3NoYWRlcnNf cGdtICp1bXJfZmluZF9zaGFkZXJfaW5fc3RyZWFtKAorCXN0cnVjdCB1bXJfcG00X3N0cmVhbSAq c3RyZWFtLCB1bnNpZ25lZCB2bWlkLCB1aW50NjRfdCBhZGRyKQoreworCXN0cnVjdCB1bXJfc2hh ZGVyc19wZ20gKnAsICpwcDsKKworCXAgPSBOVUxMOworCXdoaWxlIChzdHJlYW0pIHsKKwkJLy8g Y29tcGFyZSBzaGFkZXIgaWYgYW55CisJCWlmIChzdHJlYW0tPnNoYWRlcikKKwkJCWlmIChzdHJl YW0tPnNoYWRlci0+dm1pZCA9PSB2bWlkICYmCisJCQkJKGFkZHIgPj0gc3RyZWFtLT5zaGFkZXIt PmFkZHIpICYmCisJCQkJKGFkZHIgPCAoc3RyZWFtLT5zaGFkZXItPmFkZHIgKyBzdHJlYW0tPnNo YWRlci0+c2l6ZSkpKSB7CisJCQkJCXAgPSBzdHJlYW0tPnNoYWRlcjsKKwkJCQkJYnJlYWs7CisJ CQkJfQorCisJCS8vIHJlY3Vyc2UgaW50byBJQnMgaWYgYW55CisJCWlmIChzdHJlYW0tPmliKSB7 CisJCQlwID0gdW1yX2ZpbmRfc2hhZGVyX2luX3N0cmVhbShzdHJlYW0tPmliLCB2bWlkLCBhZGRy KTsKKwkJCWlmIChwKQorCQkJCWJyZWFrOworCQl9CisJCXN0cmVhbSA9IHN0cmVhbS0+bmV4dDsK Kwl9CisKKwlpZiAocCkgeworCQlwcCA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHVtcl9zaGFk ZXJzX3BnbSkpOworCQkqcHAgPSAqcDsKKwkJcmV0dXJuIHBwOworCX0KKworCXJldHVybiBOVUxM OworfQorCisKK3ZvaWQgdW1yX2ZyZWVfcG00X3N0cmVhbShzdHJ1Y3QgdW1yX3BtNF9zdHJlYW0g KnN0cmVhbSkKK3sKKwl3aGlsZSAoc3RyZWFtKSB7CisJCXN0cnVjdCB1bXJfcG00X3N0cmVhbSAq bjsKKwkJbiA9IHN0cmVhbS0+bmV4dDsKKwkJaWYgKHN0cmVhbS0+aWIpCisJCQl1bXJfZnJlZV9w bTRfc3RyZWFtKHN0cmVhbS0+aWIpOworCQlmcmVlKHN0cmVhbS0+c2hhZGVyKTsKKwkJZnJlZShz dHJlYW0tPndvcmRzKTsKKwkJZnJlZShzdHJlYW0pOworCQlzdHJlYW0gPSBuOworCX0KK30KKwor Ly8gZGVjb2RlIGEgc3RyZWFtIG9mIHBhY2tldHMgaW50byBhIGxpbmtlZCBsaXN0IG9mIHBhY2tl dHMKK3N0cnVjdCB1bXJfcG00X3N0cmVhbSAqdW1yX3BtNF9kZWNvZGVfc3RyZWFtKHN0cnVjdCB1 bXJfYXNpYyAqYXNpYywgaW50IHZtaWQsIHVpbnQzMl90ICpzdHJlYW0sIHVpbnQzMl90IG53b3Jk cykKK3sKKwlzdHJ1Y3QgdW1yX3BtNF9zdHJlYW0gKm9wcywgKnBzOworCisJcHMgPSBvcHMgPSBj YWxsb2MoMSwgc2l6ZW9mICpvcHMpOworCWlmICghcHMpIHsKKwkJZnByaW50ZihzdGRlcnIsICJb RVJST1JdOiBPdXQgb2YgbWVtb3J5XG4iKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJd2hpbGUg KG53b3JkcykgeworCQkvLyBmZXRjaCBiYXNpY3Mgb3V0IG9mIGhlYWRlcgorCQlwcy0+cGt0dHlw ZSA9ICpzdHJlYW0gPj4gMzA7CisJCXBzLT5uX3dvcmRzID0gKCgqc3RyZWFtID4+IDE2KSArIDEp ICYgMHgzRkZGOworCisJCS8vIGdyYWIgdHlwZSBzcGVjaWZpYyBoZWFkZXIgZGF0YQorCQlpZiAo cHMtPnBrdHR5cGUgPT0gMCkKKwkJCXBzLT5wa3Qwb2ZmID0gKnN0cmVhbSAmIDB4RkZGRjsKKwkJ ZWxzZQorCQkJcHMtPm9wY29kZSA9ICgqc3RyZWFtID4+IDgpICYgMHhGRjsKKworCQkvLyBncmFi IHJlc3Qgb2Ygd29yZHMKKwkJcHMtPndvcmRzID0gY2FsbG9jKHBzLT5uX3dvcmRzLCBzaXplb2Yo cHMtPndvcmRzWzBdKSk7CisJCW1lbWNweShwcy0+d29yZHMsICZzdHJlYW1bMV0sIHBzLT5uX3dv cmRzICogc2l6ZW9mKHN0cmVhbVswXSkpOworCisJCS8vIGRlY29kZSBzcGVjaWZpYyBwYWNrZXRz CisJCWlmIChwcy0+cGt0dHlwZSA9PSAzKQorCQkJcGFyc2VfcG00KGFzaWMsIHZtaWQsIHBzKTsK KworCQkvLyBhZHZhbmNlIHN0cmVhbQorCQlud29yZHMgLT0gMSArIHBzLT5uX3dvcmRzOworCQlz dHJlYW0gKz0gMSArIHBzLT5uX3dvcmRzOworCQlwcy0+bmV4dCA9IGNhbGxvYygxLCBzaXplb2Yo KnBzKSk7CisJCXBzID0gcHMtPm5leHQ7CisJfQorCisJcmV0dXJuIG9wczsKK30KKworLy8gZGVj b2RlIGEgc3RyZWFtIG9mIFBNNCBwYWNrZXRzIHN0YXJ0aW5nIHdpdGggcmluZworc3RydWN0IHVt cl9wbTRfc3RyZWFtICp1bXJfcG00X2RlY29kZV9yaW5nKHN0cnVjdCB1bXJfYXNpYyAqYXNpYywg Y2hhciAqcmluZ25hbWUpCit7CisJdm9pZCAqcHM7CisJdWludDMyX3QgKnJpbmdkYXRhLCByaW5n c2l6ZTsKKworCWlmIChhc2ljLT5vcHRpb25zLmhhbHRfd2F2ZXMpCisJCXVtcl9zcV9jbWRfaGFs dF93YXZlcyhhc2ljLCBVTVJfU1FfQ01EX0hBTFQpOworCisJcmluZ2RhdGEgPSB1bXJfcmVhZF9y aW5nX2RhdGEoYXNpYywgcmluZ25hbWUsICZyaW5nc2l6ZSk7CisJcmluZ2RhdGFbMF0gJT0gcmlu Z3NpemU7CisJcmluZ2RhdGFbMV0gJT0gcmluZ3NpemU7CisJaWYgKHJpbmdkYXRhWzBdICE9IHJp bmdkYXRhWzFdKSB7IC8vIHJwdHIgIT0gd3B0cgorCQl1aW50MzJfdCAqbGluZWFyZGF0YSwgbGlu ZWFyc2l6ZTsKKworCQkvLyBjb3B5IHJpbmcgZGF0YSBpbnRvIGxpbmVhciBhcnJheQorCQlsaW5l YXJkYXRhID0gY2FsbG9jKHJpbmdzaXplLCBzaXplb2YoKmxpbmVhcmRhdGEpKTsKKwkJbGluZWFy c2l6ZSA9IDA7CisJCXdoaWxlIChyaW5nZGF0YVswXSAhPSByaW5nZGF0YVsxXSkgeworCQkJbGlu ZWFyZGF0YVtsaW5lYXJzaXplKytdID0gcmluZ2RhdGFbMyArIHJpbmdkYXRhWzBdXTsgIC8vIGZp cnN0IDMgd29yZHMgYXJlIHJwdHIvd3B0ci9kd3B0cgorCQkJcmluZ2RhdGFbMF0gPSAocmluZ2Rh dGFbMF0gKyAxKSAlIHJpbmdzaXplOworCQl9CisKKwkJcHMgPSB1bXJfcG00X2RlY29kZV9zdHJl YW0oYXNpYywgMCwgbGluZWFyZGF0YSwgbGluZWFyc2l6ZSk7CisJCWZyZWUobGluZWFyZGF0YSk7 CisJCWZyZWUocmluZ2RhdGEpOworCX0gZWxzZSB7CisJCXBzID0gTlVMTDsKKwl9CisKKwlpZiAo YXNpYy0+b3B0aW9ucy5oYWx0X3dhdmVzKQorCQl1bXJfc3FfY21kX2hhbHRfd2F2ZXMoYXNpYywg VU1SX1NRX0NNRF9SRVNVTUUpOworCisJcmV0dXJuIHBzOworfQorCmRpZmYgLS1naXQgYS9zcmMv dW1yLmggYi9zcmMvdW1yLmgKaW5kZXggNGM5Zjk1ZTFiODdiLi4zMjZjMTNhZjY5NGYgMTAwNjQ0 Ci0tLSBhL3NyYy91bXIuaAorKysgYi9zcmMvdW1yLmgKQEAgLTIxMyw3ICsyMTMsOCBAQCBzdHJ1 Y3QgdW1yX29wdGlvbnMgewogCWNoYXIKIAkJKnNjYW5ibG9jaywKIAkJZGV2X25hbWVbMzJdLAot CQlodWJfbmFtZVszMl07CisJCWh1Yl9uYW1lWzMyXSwKKwkJcmluZ19uYW1lWzMyXTsKIAlzdHJ1 Y3QgewogCQlpbnQgZG9tYWluLAogCQkgICAgYnVzLApAQCAtNjIxLDcgKzYyMiwyNiBAQCBpbnQg dW1yX2dyYm1fc2VsZWN0X2luZGV4KHN0cnVjdCB1bXJfYXNpYyAqYXNpYywgdWludDMyX3Qgc2Us IHVpbnQzMl90IHNoLCB1aW50MwogaW50IHVtcl9zcV9jbWRfaGFsdF93YXZlcyhzdHJ1Y3QgdW1y X2FzaWMgKmFzaWMsIGVudW0gdW1yX3NxX2NtZF9oYWx0X3Jlc3VtZSBtb2RlKTsKIAogLyogSUIv cmluZyBkZWNvZGluZy9kdW1waW5nL2V0YyAqLworc3RydWN0IHVtcl9wbTRfc3RyZWFtIHsKKwl1 aW50MzJfdCBwa3R0eXBlLAkJCQkvLyBwYWNrZXQgdHlwZSAoMD09c2ltcGxlIHdyaXRlLCAzID09 IHBhY2tldCkKKwkJCSBwa3Qwb2ZmLAkJCQkvLyBiYXNlIGFkZHJlc3MgZm9yIFBLVDAgd3JpdGVz CisJCQkgb3Bjb2RlLAorCQkJIG5fd29yZHMsCQkJCS8vIG51bWJlciBvZiB3b3JkcyBpZ25vcmlu ZyBoZWFkZXIKKwkJCSAqd29yZHM7CQkJCS8vIHdvcmRzIGZvbGxvd2luZyBoZWFkZXIgd29yZAor CisJc3RydWN0IHVtcl9wbTRfc3RyZWFtICpuZXh0LAkvLyBhZGphY2VudCBQTTQgcGFja2V0IGlm IGFueQorCQkJCQkJICAqaWI7CQkvLyBJQiB0aGlzIHBhY2tldCBtaWdodCBwb2ludCB0bworCisJ c3RydWN0IHVtcl9zaGFkZXJzX3BnbSAqc2hhZGVyOyAvLyBzaGFkZXIgcHJvZ3JhbSBpZiBhbnkK K307CisKIHZvaWQgKnVtcl9yZWFkX3JpbmdfZGF0YShzdHJ1Y3QgdW1yX2FzaWMgKmFzaWMsIGNo YXIgKnJpbmduYW1lLCB1aW50MzJfdCAqcmluZ3NpemUpOworc3RydWN0IHVtcl9wbTRfc3RyZWFt ICp1bXJfcG00X2RlY29kZV9yaW5nKHN0cnVjdCB1bXJfYXNpYyAqYXNpYywgY2hhciAqcmluZ25h bWUpOworc3RydWN0IHVtcl9wbTRfc3RyZWFtICp1bXJfcG00X2RlY29kZV9zdHJlYW0oc3RydWN0 IHVtcl9hc2ljICphc2ljLCBpbnQgdm1pZCwgdWludDMyX3QgKnN0cmVhbSwgdWludDMyX3Qgbndv cmRzKTsKK3ZvaWQgdW1yX2ZyZWVfcG00X3N0cmVhbShzdHJ1Y3QgdW1yX3BtNF9zdHJlYW0gKnN0 cmVhbSk7CitzdHJ1Y3QgdW1yX3NoYWRlcnNfcGdtICp1bXJfZmluZF9zaGFkZXJfaW5fc3RyZWFt KHN0cnVjdCB1bXJfcG00X3N0cmVhbSAqc3RyZWFtLCB1bnNpZ25lZCB2bWlkLCB1aW50NjRfdCBh ZGRyKTsKK3N0cnVjdCB1bXJfc2hhZGVyc19wZ20gKnVtcl9maW5kX3NoYWRlcl9pbl9yaW5nKHN0 cnVjdCB1bXJfYXNpYyAqYXNpYywgY2hhciAqcmluZ25hbWUsIHVuc2lnbmVkIHZtaWQsIHVpbnQ2 NF90IGFkZHIsIGludCBub19oYWx0KTsKKwogdm9pZCB1bXJfcHJpbnRfZGVjb2RlKHN0cnVjdCB1 bXJfYXNpYyAqYXNpYywgc3RydWN0IHVtcl9yaW5nX2RlY29kZXIgKmRlY29kZXIsIHVpbnQzMl90 IGliKTsKIHZvaWQgdW1yX2R1bXBfaWIoc3RydWN0IHVtcl9hc2ljICphc2ljLCBzdHJ1Y3QgdW1y X3JpbmdfZGVjb2RlciAqZGVjb2Rlcik7CiB2b2lkIHVtcl9kdW1wX3NoYWRlcnMoc3RydWN0IHVt cl9hc2ljICphc2ljLCBzdHJ1Y3QgdW1yX3JpbmdfZGVjb2RlciAqZGVjb2Rlciwgc3RydWN0IHVt cl93YXZlX2RhdGEgKndkKTsKLS0gCjIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9hbWQtZ2Z4Cg==