From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH 1/4] xen: credit2: implement utilization cap Date: Thu, 08 Jun 2017 14:08:46 +0200 Message-ID: <149692372627.9605.8252407697848997058.stgit@Solace.fritz.box> References: <149692186557.9605.11625777539060264052.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dIwFA-0002w5-GW for xen-devel@lists.xenproject.org; Thu, 08 Jun 2017 12:08:52 +0000 Received: by mail-wm0-f67.google.com with SMTP id 70so6985243wme.1 for ; Thu, 08 Jun 2017 05:08:50 -0700 (PDT) In-Reply-To: <149692186557.9605.11625777539060264052.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Wei Liu , George Dunlap , Andrew Cooper , Anshul Makkar , Ian Jackson , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBjb21taXQgaW1wbGVtZW50cyB0aGUgWGVuIHBhcnQgb2YgdGhlIGNhcCBtZWNoYW5pc20g Zm9yCkNyZWRpdDIuCgpBIGNhcCBpcyBob3cgbXVjaCwgaW4gdGVybXMgb2YgJSBvZiBwaHlzaWNh bCBDUFUgdGltZSwgYSBkb21haW4KY2FuIGV4ZWN1dGUgYXQgbW9zdC4KCkZvciBpbnN0YW5jZSwg YSBkb21haW4gdGhhdCBtdXN0IG5vdCB1c2UgbW9yZSB0aGFuIDEvNCBvZiBvbmUKcGh5c2ljYWwg Q1BVLCBtdXN0IGhhdmUgYSBjYXAgb2YgMjUlOyBvbmUgdGhhdCBtdXN0IG5vdCB1c2UgbW9yZQp0 aGFuIDErMS8yIG9mIHBoeXNpY2FsIENQVSB0aW1lLCBtdXN0IGJlIGdpdmVuIGEgY2FwIG9mIDE1 MCUuCgpDYXBzIGFyZSBwZXIgZG9tYWluLCBzbyBpdCBpcyBhbGwgYSBkb21haW4ncyB2Q1BVcywg Y3VtdWxhdGl2ZWx5LAp0aGF0IHdpbGwgYmUgZm9yY2VkIHRvIGV4ZWN1dGUgbm8gbW9yZSB0aGFu IHRoZSBkZWNpZGVkIGFtb3VudC4KClRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgZ2l2aW5nIGVhY2gg ZG9tYWluIGEgJ2J1ZGdldCcsIGFuZCB1c2luZwphIChwZXItZG9tYWluIGFnYWluKSBwZXJpb2Rp YyB0aW1lci4gVmFsdWVzIG9mIGJ1ZGdldCBhbmQgJ3BlcmlvZCcKYXJlIGNob3NlbiBzbyB0aGF0 IGJ1ZGdldC9wZXJpb2QgaXMgZXF1YWwgdG8gdGhlIGNhcCBpdHNlbGYuCgpCdWRnZXQgaXMgYnVy bmVkIGJ5IHRoZSBkb21haW4ncyB2Q1BVcywgaW4gYSBzaW1pbGFyIHdheSB0byBob3cKY3JlZGl0 cyBhcmUuCgpXaGVuIGEgZG9tYWluIHJ1bnMgb3V0IG9mIGJ1ZGdldCwgaXRzIHZDUFVzIGNhbid0 IHJ1biBhbnkgbG9uZ2VyLgpUaGV5IGNhbiBnYWluLCB3aGVuIHRoZSBidWRnZXQgaXMgcmVwbGVu aXNobWVudCBieSB0aGUgdGltZXIsIHdoaWNoCmV2ZW50IGhhcHBlbnMgb25jZSBldmVyeSBwZXJp b2QuCgpCbG9ja2luZyB0aGUgdkNQVXMgYmVjYXVzZSBvZiBsYWNrIG9mIGJ1ZGdldCBoYXBwZW5z IGJ5Cm1lYW5zIG9mIGEgbmV3IChfVlBGX3BhcmtlZCkgcGF1c2UgZmxhZywgc28gdGhhdCwgZS5n LiwKdmNwdV9ydW5uYWJsZSgpIHN0aWxsIHdvcmtzLiBUaGlzIGlzIHNpbWlsYXIgdG8gd2hhdCBp cwpkb25lIGluIHNjaGVkX3J0ZHMuYywgYXMgb3Bwb3NlZCB0byB3aGF0IGhhcHBlbnMgaW4Kc2No ZWRfY3JlZGl0LmMsIHdoZXJlIHZjcHVfcGF1c2UoKSBhbmQgdmNwdV91bnBhdXNlKCkKKHdoaWNo IG1lYW5zLCBhbW9uZyBvdGhlciB0aGluZ3MsIG1vcmUgb3ZlcmhlYWQpLgoKTm90ZSB0aGF0IHhl bmFseXplIGFuZCB0b29scy94ZW50cmFjZS9mb3JtYXQgYXJlIGFsc28gbW9kaWZpZWQsCnRvIGtl ZXAgdGhlbSB1cGRhdGVkIHdpdGggb25lIG1vZGlmaWVkIGV2ZW50LgoKU2lnbmVkLW9mZi1ieTog RGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+Ci0tLQpDYzogR2Vvcmdl IER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogQW5zaHVsIE1ha2thciA8 YW5zaHVsLm1ha2thckBjaXRyaXguY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IElh biBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxp dTJAY2l0cml4LmNvbT4KLS0tCiB0b29scy94ZW50cmFjZS9mb3JtYXRzICAgICB8ICAgIDIgCiB0 b29scy94ZW50cmFjZS94ZW5hbHl6ZS5jICB8ICAgMTAgKwogeGVuL2NvbW1vbi9zY2hlZF9jcmVk aXQyLmMgfCAgNDcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t CiB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCAgICB8ICAgIDMgCiA0IGZpbGVzIGNoYW5nZWQsIDQ0 NSBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy94ZW50 cmFjZS9mb3JtYXRzIGIvdG9vbHMveGVudHJhY2UvZm9ybWF0cwppbmRleCA4YjMxNzgwLi4xNDJi MGNmIDEwMDY0NAotLS0gYS90b29scy94ZW50cmFjZS9mb3JtYXRzCisrKyBiL3Rvb2xzL3hlbnRy YWNlL2Zvcm1hdHMKQEAgLTUxLDcgKzUxLDcgQEAKIAogMHgwMDAyMjIwMSAgQ1BVJShjcHUpZCAg JSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjp0aWNrCiAweDAwMDIyMjAyICBDUFUlKGNw dSlkICAlKHRzYylkICgrJShyZWx0c2MpOGQpICBjc2NoZWQyOnJ1bnFfcG9zICAgICAgIFsgZG9t OnZjcHUgPSAweCUoMSkwOHgsIHBvcyA9ICUoMilkXQotMHgwMDAyMjIwMyAgQ1BVJShjcHUpZCAg JSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpjcmVkaXQgYnVybiAgICBbIGRvbTp2Y3B1 ID0gMHglKDEpMDh4LCBjcmVkaXQgPSAlKDIpZCwgZGVsdGEgPSAlKDMpZCBdCisweDAwMDIyMjAz ICBDUFUlKGNwdSlkICAlKHRzYylkICgrJShyZWx0c2MpOGQpICBjc2NoZWQyOmNyZWRpdCBidXJu ICAgIFsgZG9tOnZjcHUgPSAweCUoMSkwOHgsIGNyZWRpdCA9ICUoMilkLCBidWRnZXQgPSAlKDMp ZCwgZGVsdGEgPSAlKDQpZCBdCiAweDAwMDIyMjA0ICBDUFUlKGNwdSlkICAlKHRzYylkICgrJShy ZWx0c2MpOGQpICBjc2NoZWQyOmNyZWRpdF9hZGQKIDB4MDAwMjIyMDUgIENQVSUoY3B1KWQgICUo dHNjKWQgKCslKHJlbHRzYyk4ZCkgIGNzY2hlZDI6dGlja2xlX2NoZWNrICAgWyBkb206dmNwdSA9 IDB4JSgxKTA4eCwgY3JlZGl0ID0gJSgyKWQgXQogMHgwMDAyMjIwNiAgQ1BVJShjcHUpZCAgJSh0 c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjp0aWNrbGUgICAgICAgICBbIGNwdSA9ICUoMSlk IF0KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnRyYWNlL3hlbmFseXplLmMgYi90b29scy94ZW50cmFj ZS94ZW5hbHl6ZS5jCmluZGV4IGZhNjA4YWQuLmMxNmMwMmQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hl bnRyYWNlL3hlbmFseXplLmMKKysrIGIvdG9vbHMveGVudHJhY2UveGVuYWx5emUuYwpAQCAtNzY4 MCwxMiArNzY4MCwxNCBAQCB2b2lkIHNjaGVkX3Byb2Nlc3Moc3RydWN0IHBjcHVfaW5mbyAqcCkK ICAgICAgICAgICAgIGlmKG9wdC5kdW1wX2FsbCkgewogICAgICAgICAgICAgICAgIHN0cnVjdCB7 CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2Y3B1aWQ6MTYsIGRvbWlkOjE2Owot ICAgICAgICAgICAgICAgICAgICBpbnQgY3JlZGl0LCBkZWx0YTsKKyAgICAgICAgICAgICAgICAg ICAgaW50IGNyZWRpdCwgYnVkZ2V0LCBkZWx0YTsKICAgICAgICAgICAgICAgICB9ICpyID0gKHR5 cGVvZihyKSlyaS0+ZDsKIAotICAgICAgICAgICAgICAgIHByaW50ZigiICVzIGNzY2hlZDI6YnVy bl9jcmVkaXRzIGQldXYldSwgY3JlZGl0ID0gJWQsIGRlbHRhID0gJWRcbiIsCi0gICAgICAgICAg ICAgICAgICAgICAgIHJpLT5kdW1wX2hlYWRlciwgci0+ZG9taWQsIHItPnZjcHVpZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgci0+Y3JlZGl0LCByLT5kZWx0YSk7CisgICAgICAgICAgICAgICAg cHJpbnRmKCIgJXMgY3NjaGVkMjpidXJuX2NyZWRpdHMgZCV1diV1LCBjcmVkaXQgPSAlZCwgIiwK KyAgICAgICAgICAgICAgICAgICAgICAgcmktPmR1bXBfaGVhZGVyLCByLT5kb21pZCwgci0+dmNw dWlkLCByLT5jcmVkaXQpOworICAgICAgICAgICAgICAgIGlmICggci0+YnVkZ2V0ICE9IElOVF9N SU4gKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoImJ1ZGdldCA9ICVkLCAiLCByLT5idWRn ZXQpOworICAgICAgICAgICAgICAgIHByaW50ZigiZGVsdGEgPSAlZFxuIiwgci0+ZGVsdGEpOwog ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFJDX1NDSEVE X0NMQVNTX0VWVChDU0NIRUQyLCA1KTogLyogVElDS0xFX0NIRUNLICAgICAgKi8KZGlmZiAtLWdp dCBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQy LmMKaW5kZXggMTI2NDE3Yy4uYmE0YmY0YiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hlZF9j cmVkaXQyLmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMKQEAgLTkyLDYgKzkyLDgy IEBACiAgKi8KIAogLyoKKyAqIFV0aWxpemF0aW9uIGNhcDoKKyAqCisgKiBTZXR0aW5nIGFuIHBD UFUgdXRpbGl6YXRpb24gY2FwIGZvciBhIGRvbWFpbiBtZWFucyB0aGUgZm9sbG93aW5nOgorICoK KyAqIC0gYSBkb21haW4gY2FuIGhhdmUgYSBjYXAsIGV4cHJlc3NlZCBpbiB0ZXJtcyBvZiAlIG9m IHBoeXNpY2FsIENQVSB0aW1lLgorICogICBBIGRvbWFpbiB0aGF0IG11c3Qgbm90IHVzZSBtb3Jl IHRoYW4gMS80IG9mIF9vbmVfIHBoeXNpY2FsIENQVSwgd2lsbAorICogICBiZSBnaXZlbiBhIGNh cCBvZiAyNSU7IGEgZG9tYWluIHRoYXQgbXVzdCBub3QgdXNlIG1vcmUgdGhhbiAxKzEvMiBvZgor ICogICBwaHlzaWNhbCBDUFUgdGltZSwgd2lsbCBiZSBnaXZlbiBhIGNhcCBvZiAxNTAlOworICoK KyAqIC0gY2FwcyBhcmUgcGVyLWRvbWFpbiAobm90IHBlci12Q1BVKS4gSWYgYSBkb21haW4gaGFz IG9ubHkgMSB2Q1BVLCBhbmQKKyAqICAgYSA0MCUgY2FwLCB0aGF0IG9uZSB2Q1BVIHdpbGwgdXNl IDQwJSBvZiBvbmUgcENQVS4gSWYgYSBzb21haW4gaGFzIDQKKyAqICAgdkNQVXMsIGFuZCBhIDIw MCUgY2FwLCBhbGwgaXRzIDQgdkNQVXMgYXJlIGFsbG93ZWQgdG8gcnVuIGZvciAodGhlCisgKiAg IGVxdWl2YWxlbnQgb2YpIDEwMCUgdGltZSBvbiAyIHBDUFVzLiBIb3cgbXVjaCBlYWNoIG9mIHRo ZSB2YXJpb3VzIDQKKyAqICAgdkNQVXMgd2lsbCBnZXQsIGlzIHVuc3BlY2lmaWVkICh3aWxsIGRl cGVuZCBvbiB2YXJpb3VzIGFzcGVjdHM6IHdvcmtsb2FkLAorICogICBzeXN0ZW0gbG9hZCwgZXRj LikuCisgKgorICogRm9yIGltcGxlbWVudGluZyB0aGlzLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBh cHByb2FjaDoKKyAqCisgKiAtIGVhY2ggZG9tYWluIGlzIGdpdmVuIGEgJ2J1ZGdldCcsIGFuIGVh Y2ggZG9tYWluIGhhcyBhIHRpbWVyLCB3aGljaAorICogICByZXBsZW5pc2hlcyB0aGUgZG9tYWlu J3MgYnVkZ2V0IHBlcmlvZGljYWxseS4gVGhlIGJ1ZGdldCBpcyB0aGUgYW1vdW50CisgKiAgIG9m IHRpbWUgdGhlIHZDUFVzIG9mIHRoZSBkb21haW4gY2FuIHVzZSBldmVyeSAncGVyaW9kJzsKKyAq CisgKiAtIHRoZSBwZXJpb2QgaXMgQ1NDSEVEMl9CREdUX1JFUExfUEVSSU9ELCBhbmQgaXMgdGhl IHNhbWUgZm9yIGFsbCBkb21haW5zCisgKiAgIChidXQgZWFjaCBkb21haW4gaGFzIGl0cyBvd24g dGltZXI7IHNvIHRoZSBhbGwgYXJlIHBlcmlvZGljIGJ5IHRoZSBzYW1lCisgKiAgIHBlcmlvZCwg YnV0IHJlcGxlbmlzaG1lbnQgb2YgdGhlIGJ1ZGdldHMgb2YgdGhlIHZhcmlvdXMgZG9tYWlucywg YXQKKyAqICAgcGVyaW9kcyBib3VuZGFyaWVzLCBhcmUgbm90IHN5bmNocm9ub3VzKTsKKyAqCisg KiAtIHdoZW4gdkNQVXMgcnVuLCB0aGV5IGNvbnN1bWUgYnVkZ2V0LiBXaGVuIHRoZXkgZG9uJ3Qg cnVuLCB0aGV5IGRvbid0CisgKiAgIGNvbnN1bWUgYnVkZ2V0LiBJZiB0aGVyZSBpcyBubyBidWRn ZXQgbGVmdCBmb3IgdGhlIGRvbWFpbiwgbm8gdkNQVSBvZgorICogICB0aGF0IGRvbWFpbiBjYW4g cnVuLiBJZiBhIHZDUFUgdHJpZXMgdG8gcnVuIGFuZCBmaW5kcyB0aGF0IHRoZXJlIGlzIG5vCisg KiAgIGJ1ZGdldCwgaXQgYmxvY2tzLgorICogICBCdWRnZXQgbmV2ZXIgZXhwaXJlcywgc28gYXQg d2hhdGV2ZXIgdGltZSBhIHZDUFUgd2FudHMgdG8gcnVuLCBpdCBjYW4KKyAqICAgY2hlY2sgdGhl IGRvbWFpbidzIGJ1ZGdldCwgYW5kIGlmIHRoZXJlIGlzIHNvbWUsIGl0IGNhbiB1c2UgaXQuCisg KgorICogLSBidWRnZXQgaXMgcmVwbGVuaXNoZWQgdG8gdGhlIHRvcCBvZiB0aGUgY2FwYWNpdHkg Zm9yIHRoZSBkb21haW4gb25jZQorICogICBwZXIgcGVyaW9kLiBFdmVuIGlmIHRoZXJlIHdhcyBz b21lIGxlZnRvdmVyIGJ1ZGdldCBmcm9tIHByZXZpb3VzIHBlcmlvZCwKKyAqICAgdGhvdWdoLCB0 aGUgYnVkZ2V0IGFmdGVyIGEgcmVwbGVuaXNobWVudCB3aWxsIGFsd2F5cyBiZSBhdCBtb3N0IGVx dWFsCisgKiAgIHRvIHRoZSB0b3RhbCBjYXBhY2lmeSBvZiB0aGUgZG9tYWluICgndG90X2J1ZGdl dCcpOworICoKKyAqIC0gd2hlbiBhIGJ1ZGdldCByZXBsZW5pc2htZW50IG9jY3VycywgaWYgdGhl cmUgYXJlIHZDUFVzIHRoYXQgaGFkIGJlZW4KKyAqICAgYmxvY2tlZCBiZWNhdXNlIG9mIGxhY2sg b2YgYnVkZ2V0LCB0aGV5J2xsIGJlIHVuYmxvY2tlZCwgYW5kIHRoZXkgd2lsbAorICogICAocG90 ZW50aWFsbHkpIGJlIGFibGUgdG8gcnVuIGFnYWluLgorICoKKyAqIEZpbmFsbHksIHNvbWUgZXZl biBtb3JlIGltcGxlbWVudGF0aW9uIHJlbGF0ZWQgZGV0YWlsOgorICoKKyAqIC0gYnVkZ2V0IGlz IHN0b3JlZCBpbiBhIGRvbWFpbi13aWRlIHBvb2wuIHZDUFVzIG9mIHRoZSBkb21haW4gdGhhdCB3 YW50CisgKiAgIHRvIHJ1biBnbyB0byBzdWNoIHBvb2wsIGFuZCBncnViIHNvbWUuIFdoZW4gdGhl eSBkbyBzbywgdGhlIGFtb3VudAorICogICB0aGV5IGdyYWJiZWQgaXMgX2ltbWVkaWF0ZWx5XyBy ZW1vdmVkIGZyb20gdGhlIHBvb2wuIFRoaXMgaGFwcGVucyBpbgorICogICB2Y3B1X3RyeV90b19n ZXRfYnVkZ2V0KCk7CisgKgorICogLSB3aGVuIHZDUFVzIHN0b3AgcnVubmluZywgaWYgdGhleSd2 ZSBub3QgY29uc3VtZWQgYWxsIHRoZSBidWRnZXQgdGhleQorICogICB0b29rLCB0aGUgbGVmdG92 ZXIgaXMgcHV0IGJhY2sgaW4gdGhlIHBvb2wuIFRoaXMgaGFwcGVucyBpbgorICogICB2Y3B1X2dp dmVfYnVkZ2V0X2JhY2soKTsKKyAqCisgKiAtIHRoZSBhYm92ZSBtZWFucyB0aGF0IGEgdkNQVSBj YW4gZmluZCBvdXQgdGhhdCB0aGVyZSBpcyBubyBidWRnZXQgYW5kCisgKiAgIGJsb2NrLCBub3Qg b25seSBpZiB0aGUgY2FwIGhhcyBhY3R1YWxseSBiZWVuIHJlYWNoZWQgKGZvciB0aGlzIHBlcmlv ZCksCisgKiAgIGJ1dCBhbHNvIGlmIHNvbWUgb3RoZXIgdkNQVXMsIGluIG9yZGVyIHRvIHJ1biwg aGF2ZSBncmFiYmVkIGEgY2VydGFpbgorICogICBxdW90YSBvZiBidWRnZXQsIG5vIG1hdHRlciB3 aGV0aGVyIHRoZXkndmUgYWxyZWFkeSB1c2VkIGl0IGFsbCBvciBub3QuCisgKiAgIEEgdkNQVSBi bG9ja2luZyBiZWNhdXNlIChhbnkgZm9ybSBvZikgbGFjayBvZiBidWRnZXQgaXMgc2FpZCB0byBi ZQorICogICAicGFya2VkIiwgYW5kIHN1Y2ggYmxvY2tpbmcgaGFwcGVucyBpbiBwYXJrX3ZjcHUo KTsKKyAqCisgKiAtIHdoZW4gYSB2Q1BVIHN0b3BzIHJ1bm5pbmcsIGFuZCBwdXRzIGJhY2sgc29t ZSBidWRnZXQgaW4gdGhlIGRvbWFpbiBwb29sLAorICogICB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRo ZXIgdGhlcmUgaXMgc29tZW9uZSB3aGljaCBoYXMgYmVlbiBwYXJrZWQgYW5kIHRoYXQKKyAqICAg Y2FuIGJlIHVucGFya2VkLiBUaGlzIGhhcHBlbnMgaW4gdW5wYXJrX3BhcmtlZF92Y3B1cygpLCBj YWxsZWQgZnJvbQorICogICBjc2NoZWQyX2NvbnRleHRfc2F2ZWQoKTsKKyAqCisgKiAtIG9mIGNv dXJzZSwgdW5wYXJraW5nIGhhcHBlbnMgYWxzbyBhcyBhIGNvbnNlcXVlbmUgb2YgdGhlIGRvbWFp bidzIGJ1ZGdldAorICogICBiZWluZyByZXBsZW5pc2hlZCBieSB0aGUgcGVyaW9kaWMgdGltZXIu IFRoaXMgYWxzbyBvY2N1cnMgYnkgbWVhbnMgb2YKKyAqICAgY2FsbGluZyBjc2NoZWQyX2NvbnRl eHRfc2F2ZWQoKSAoYnV0IGZyb20gcmVwbF9zZG9tX2J1ZGdldCgpKTsKKyAqCisgKiAtIHBhcmtl ZCB2Q1BVcyBvZiBhIGRvbWFpbiBhcmUga2VwdCBpbiBhIChwZXItZG9tYWluKSBsaXN0LCBjYWxs ZWQKKyAqICAgJ3BhcmtlZF92Y3B1cycpLiBNYW5pcHVsYXRpb24gb2YgdGhlIGxpc3QgYW5kIG9m IHRoZSBkb21haW4td2lkZSBidWRnZXQKKyAqICAgcG9vbCwgbXVzdCBvY2N1ciBvbmx5IHdoZW4g aG9sZGluZyB0aGUgJ2J1ZGdldF9sb2NrJy4KKyAqLworCisvKgogICogTG9ja2luZzoKICAqCiAg KiAtIHJ1bnF1ZXVlIGxvY2sKQEAgLTExMiwxOCArMTg4LDI5IEBACiAgKiAgICAgcnVucXVldWUg ZWFjaCBjcHUgaXM7CiAgKiAgKyBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb24gb2YgY2hhbmdpbmcg dGhlIHdlaWdodHMgb2YgZG9tYWluczsKICAqCisgKiAtIEJ1ZGdldCBsb2NrCisgKiAgKyBpdCBp cyBwZXItZG9tYWluOworICogICsgcHJvdGVjdHMsIGluIGRvbWFpbnMgdGhhdCBoYXZlIGFuIHV0 aWxpemF0aW9uIGNhcDsKKyAqICAgKiBtYW5pcHVsYXRpb24gb2YgdGhlIHRvdGFsIGJ1ZGdldCBv ZiB0aGUgZG9tYWluIChhcyBpdCBpcyBzaGFyZWQKKyAqICAgICBhbW9uZyBhbGwgdkNQVXMgb2Yg dGhlIGRvbWFpbiksCisgKiAgICogbWFuaXB1bGF0aW9uIG9mIHRoZSBsaXN0IG9mIHZDUFVzIHRo YXQgYXJlIGJsb2NrZWQgd2FpdGluZyBmb3IKKyAqICAgICBzb21lIGJ1ZGdldCB0byBiZSBhdmFp bGFibGUuCisgKgogICogLSBUeXBlOgogICogICsgcnVucXVldWUgbG9ja3MgYXJlICdyZWd1bGFy JyBzcGlubG9ja3M7CiAgKiAgKyB0aGUgcHJpdmF0ZSBzY2hlZHVsZXIgbG9jayBjYW4gYmUgYW4g cndsb2NrLiBJbiBmYWN0LCBkYXRhCiAgKiAgICBpdCBwcm90ZWN0cyBpcyBtb2RpZmllZCBvbmx5 IGR1cmluZyBpbml0aWFsaXphdGlvbiwgY3B1cG9vbAogICogICAgbWFuaXB1bGF0aW9uIGFuZCB3 aGVuIGNoYW5naW5nIHdlaWdodHMsIGFuZCByZWFkIGluIGFsbAotICogICAgb3RoZXIgY2FzZXMg KGUuZy4sIGR1cmluZyBsb2FkIGJhbGFuY2luZykuCisgKiAgICBvdGhlciBjYXNlcyAoZS5nLiwg ZHVyaW5nIGxvYWQgYmFsYW5jaW5nKTsKKyAqICArIGJ1ZGdldCBsb2NrcyBhcmUgJ3JlZ3VsYXIn IHNwaW5sb2Nrcy4KICAqCiAgKiBPcmRlcmluZzoKICAqICArIHR5bG9jayBtdXN0IGJlIHVzZWQg d2hlbiB3YW50aW5nIHRvIHRha2UgYSBydW5xdWV1ZSBsb2NrLAogICogICAgaWYgd2UgYWxyZWFk eSBob2xkIGFub3RoZXIgb25lOwogICogICsgaWYgdGFraW5nIGJvdGggYSBydW5xdWV1ZSBsb2Nr IGFuZCB0aGUgcHJpdmF0ZSBzY2hlZHVsZXIKLSAqICAgIGxvY2sgaXMsIHRoZSBsYXR0ZXIgbXVz dCBhbHdheXMgYmUgdGFrZW4gZm9yIGZpcnN0LgorICogICAgbG9jayBpcywgdGhlIGxhdHRlciBt dXN0IGFsd2F5cyBiZSB0YWtlbiBmb3IgZmlyc3Q7CisgKiAgKyBpZiB0YWtpbmcgYm90aCBhIHJ1 bnF1ZXVlIGxvY2sgYW5kIGEgYnVkZ2V0IGxvY2ssIHRoZSBmb3JtZXIKKyAqICAgIG11c3QgYWx3 YXlzIGJlIHRha2VuIGZvciBmaXJzdC4KICAqLwogCiAvKgpAQCAtMTY0LDYgKzI1MSw4IEBACiAj ZGVmaW5lIENTQ0hFRDJfQ1JFRElUX1JFU0VUICAgICAgICAgMAogLyogTWF4IHRpbWVyOiBNYXhp bXVtIHRpbWUgYSBndWVzdCBjYW4gYmUgcnVuIGZvci4gKi8KICNkZWZpbmUgQ1NDSEVEMl9NQVhf VElNRVIgICAgICAgICAgICBDU0NIRUQyX0NSRURJVF9JTklUCisvKiBQZXJpb2Qgb2YgdGhlIGNh cCByZXBsZW5pc2htZW50IHRpbWVyLiAqLworI2RlZmluZSBDU0NIRUQyX0JER1RfUkVQTF9QRVJJ T0QgICAgICgob3B0X2NhcF9wZXJpb2QpKk1JTExJU0VDUygxKSkKIAogLyoKICAqIEZsYWdzCkBA IC0yOTMsNiArMzgyLDE0IEBAIHN0YXRpYyBpbnQgX19yZWFkX21vc3RseSBvcHRfdW5kZXJsb2Fk X2JhbGFuY2VfdG9sZXJhbmNlID0gMDsKIGludGVnZXJfcGFyYW0oImNyZWRpdDJfYmFsYW5jZV91 bmRlciIsIG9wdF91bmRlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2UpOwogc3RhdGljIGludCBfX3Jl YWRfbW9zdGx5IG9wdF9vdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZSA9IC0zOwogaW50ZWdlcl9w YXJhbSgiY3JlZGl0Ml9iYWxhbmNlX292ZXIiLCBvcHRfb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFu Y2UpOworLyoKKyAqIERvbWFpbnMgc3ViamVjdCB0byBhIGNhcCwgcmVjZWl2ZSBhIHJlcGxlbmlz aG1lbnQgb2YgdGhlaXIgcnVudGltZSBidWRnZXQKKyAqIG9uY2UgZXZlcnkgb3B0X2NhcF9wZXJp b2QgaW50ZXJ2YWwuIERlZmF1bHQgaXMgMTAgbXMuIFRoZSBhbW91bnQgb2YgYnVkZ2V0CisgKiB0 aGV5IHJlY2VpdmUgZGVwZW5kcyBvbiB0aGVpciBjYXAuIEZvciBpbnN0YW5jZSwgYSBkb21haW4g d2l0aCBhIDUwJSBjYXAKKyAqIHdpbGwgcmVjZWl2ZSA1MCUgb2YgMTAgbXMsIHNvIDUgbXMuCisg Ki8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBvcHRfY2FwX3BlcmlvZCA9IDEw OyAgICAvKiBtcyAqLworaW50ZWdlcl9wYXJhbSgiY3JlZGl0Ml9jYXBfcGVyaW9kX21zIiwgb3B0 X2NhcF9wZXJpb2QpOwogCiAvKgogICogUnVucXVldWUgb3JnYW5pemF0aW9uLgpAQCAtNDA4LDYg KzUwNSwxMCBAQCBzdHJ1Y3QgY3NjaGVkMl92Y3B1IHsKICAgICB1bnNpZ25lZCBpbnQgcmVzaWR1 YWw7CiAKICAgICBpbnQgY3JlZGl0OworCisgICAgc190aW1lX3QgYnVkZ2V0OworICAgIHN0cnVj dCBsaXN0X2hlYWQgcGFya2VkX2VsZW07ICAgICAgLyogT24gdGhlIHBhcmtlZF92Y3B1cyBsaXN0 ICAgKi8KKwogICAgIHNfdGltZV90IHN0YXJ0X3RpbWU7IC8qIFdoZW4gd2Ugd2VyZSBzY2hlZHVs ZWQgKHVzZWQgZm9yIGNyZWRpdCkgKi8KICAgICB1bnNpZ25lZCBmbGFnczsgICAgICAvKiAxNiBi aXRzIGRvZXNuJ3Qgc2VlbSB0byBwbGF5IHdlbGwgd2l0aCBjbGVhcl9iaXQoKSAqLwogICAgIGlu dCB0aWNrbGVkX2NwdTsgICAgIC8qIGNwdSB0aWNrbGVkIGZvciBwaWNraW5nIHVzIHVwICgtMSBp ZiBub25lKSAqLwpAQCAtNDI1LDcgKzUyNiwxNSBAQCBzdHJ1Y3QgY3NjaGVkMl92Y3B1IHsKIHN0 cnVjdCBjc2NoZWQyX2RvbSB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBzZG9tX2VsZW07CiAgICAg c3RydWN0IGRvbWFpbiAqZG9tOworCisgICAgc3BpbmxvY2tfdCBidWRnZXRfbG9jazsKKyAgICBz dHJ1Y3QgdGltZXIgcmVwbF90aW1lcjsKKyAgICBzX3RpbWVfdCBuZXh0X3JlcGw7CisgICAgc190 aW1lX3QgYnVkZ2V0LCB0b3RfYnVkZ2V0OworICAgIHN0cnVjdCBsaXN0X2hlYWQgcGFya2VkX3Zj cHVzOworCiAgICAgdWludDE2X3Qgd2VpZ2h0OworICAgIHVpbnQxNl90IGNhcDsKICAgICB1aW50 MTZfdCBucl92Y3B1czsKIH07CiAKQEAgLTQ2MCw2ICs1NjksMTIgQEAgc3RhdGljIGlubGluZSBz dHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpjMnJxZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsCiAgICAgcmV0dXJuICZjc2NoZWQyX3ByaXYob3BzKS0+cnFkW2MycihvcHMsIGNwdSld OwogfQogCisvKiBEb2VzIHRoZSBkb21haW4gb2YgdGhpcyB2Q1BVIGhhdmUgYSBjYXA/ICovCitz dGF0aWMgaW5saW5lIGJvb2wgaGFzX2NhcChjb25zdCBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzdmMp Cit7CisgICAgcmV0dXJuIHN2Yy0+YnVkZ2V0ICE9IFNUSU1FX01BWDsKK30KKwogLyoKICAqIEh5 cGVydGhyZWFkaW5nIChTTVQpIHN1cHBvcnQuCiAgKgpAQCAtMTM1NCw3ICsxNDY5LDE2IEBAIHN0 YXRpYyB2b2lkIHJlc2V0X2NyZWRpdChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBj cHUsIHNfdGltZV90IG5vdywKICAgICAgICAgICogdGhhdCB0aGUgY3JlZGl0IGl0IGhhcyBzcGVu dCBzbyBmYXIgZ2V0IGFjY291bnRlZC4KICAgICAgICAgICovCiAgICAgICAgIGlmICggc3ZjLT52 Y3B1ID09IGN1cnJfb25fY3B1KHN2Y19jcHUpICkKKyAgICAgICAgewogICAgICAgICAgICAgYnVy bl9jcmVkaXRzKHJxZCwgc3ZjLCBub3cpOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAq IEFuZCwgc2ltaWxhcmx5LCBpbiBjYXNlIGl0IGhhcyBydW4gb3V0IG9mIGJ1ZGdldCwgYXMgYQor ICAgICAgICAgICAgICogY29uc2VxdWVuY2Ugb2YgdGhpcyByb3VuZCBvZiBhY2NvdW50aW5nLCB3 ZSBhbHNvIG11c3QgaW5mb3JtCisgICAgICAgICAgICAgKiBpdHMgcENQVSB0aGF0IGl0J3MgdGlt ZSB0byBwYXJrIGl0LCBhbmQgcGljayB1cCBzb21lb25lIGVsc2UuCisgICAgICAgICAgICAgKi8K KyAgICAgICAgICAgIGlmICggdW5saWtlbHkoc3ZjLT5idWRnZXQgPD0gMCkgKQorICAgICAgICAg ICAgICAgIHRpY2tsZV9jcHUoc3ZjX2NwdSwgcnFkKTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0 YXJ0X2NyZWRpdCA9IHN2Yy0+Y3JlZGl0OwogCkBAIC0xNDEwLDI3ICsxNTM0LDM1IEBAIHZvaWQg YnVybl9jcmVkaXRzKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKIAogICAgIGRl bHRhID0gbm93IC0gc3ZjLT5zdGFydF90aW1lOwogCi0gICAgaWYgKCBsaWtlbHkoZGVsdGEgPiAw KSApCi0gICAgewotICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKGJ1cm5fY3JlZGl0c190MmMpOwot ICAgICAgICB0MmNfdXBkYXRlKHJxZCwgZGVsdGEsIHN2Yyk7Ci0gICAgICAgIHN2Yy0+c3RhcnRf dGltZSA9IG5vdzsKLSAgICB9Ci0gICAgZWxzZSBpZiAoIGRlbHRhIDwgMCApCisgICAgaWYgKCB1 bmxpa2VseShkZWx0YSA8PSAwKSApCiAgICAgewotICAgICAgICBkMnByaW50aygiV0FSTklORzog JXM6IFRpbWUgd2VudCBiYWNrd2FyZHM/IG5vdyAlIlBSSV9zdGltZSIgc3RhcnRfdGltZSAlIlBS SV9zdGltZSJcbiIsCi0gICAgICAgICAgICAgICAgIF9fZnVuY19fLCBub3csIHN2Yy0+c3RhcnRf dGltZSk7CisgICAgICAgIGlmICggdW5saWtlbHkoZGVsdGEgPCAwKSApCisgICAgICAgICAgICBk MnByaW50aygiV0FSTklORzogJXM6IFRpbWUgd2VudCBiYWNrd2FyZHM/IG5vdyAlIlBSSV9zdGlt ZQorICAgICAgICAgICAgICAgICAgICAgIiBzdGFydF90aW1lICUiUFJJX3N0aW1lIlxuIiwgX19m dW5jX18sIG5vdywKKyAgICAgICAgICAgICAgICAgICAgIHN2Yy0+c3RhcnRfdGltZSk7CisgICAg ICAgIGdvdG8gb3V0OwogICAgIH0KIAorICAgIFNDSEVEX1NUQVRfQ1JBTksoYnVybl9jcmVkaXRz X3QyYyk7CisgICAgdDJjX3VwZGF0ZShycWQsIGRlbHRhLCBzdmMpOworCisgICAgaWYgKCB1bmxp a2VseShzdmMtPmJ1ZGdldCAhPSBTVElNRV9NQVgpICkKKyAgICAgICAgc3ZjLT5idWRnZXQgLT0g ZGVsdGE7CisKKyAgICBzdmMtPnN0YXJ0X3RpbWUgPSBub3c7CisKKyBvdXQ6CiAgICAgaWYgKCB1 bmxpa2VseSh0Yl9pbml0X2RvbmUpICkKICAgICB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg ICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7Ci0gICAgICAgICAgICBpbnQgY3JlZGl0LCBk ZWx0YTsKKyAgICAgICAgICAgIGludCBjcmVkaXQsIGJ1ZGdldDsKKyAgICAgICAgICAgIGludCBk ZWx0YTsKICAgICAgICAgfSBkOwogICAgICAgICBkLmRvbSA9IHN2Yy0+dmNwdS0+ZG9tYWluLT5k b21haW5faWQ7CiAgICAgICAgIGQudmNwdSA9IHN2Yy0+dmNwdS0+dmNwdV9pZDsKICAgICAgICAg ZC5jcmVkaXQgPSBzdmMtPmNyZWRpdDsKKyAgICAgICAgZC5idWRnZXQgPSBoYXNfY2FwKHN2Yykg PyAgc3ZjLT5idWRnZXQgOiBJTlRfTUlOOwogICAgICAgICBkLmRlbHRhID0gZGVsdGE7CiAgICAg ICAgIF9fdHJhY2VfdmFyKFRSQ19DU0NIRUQyX0NSRURJVF9CVVJOLCAxLAogICAgICAgICAgICAg ICAgICAgICBzaXplb2YoZCksCkBAIC0xNDM4LDYgKzE1NzAsMjE3IEBAIHZvaWQgYnVybl9jcmVk aXRzKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKICAgICB9CiB9CiAKKy8qCisg KiBCdWRnZXQtcmVsYXRlZCBjb2RlLgorICovCisKK3N0YXRpYyB2b2lkIHBhcmtfdmNwdShzdHJ1 Y3QgY3NjaGVkMl92Y3B1ICpzdmMpCit7CisgICAgc3RydWN0IHZjcHUgKnYgPSBzdmMtPnZjcHU7 CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnN2Yy0+c2RvbS0+YnVkZ2V0X2xvY2spKTsK KworICAgIC8qCisgICAgICogSXQgd2FzIGltcG9zc2libGUgdG8gZmluZCBidWRnZXQgZm9yIHRo aXMgdkNQVSwgc28gaXQgaGFzIHRvIGJlCisgICAgICogInBhcmtlZCIuIFRoaXMgaW1wbGllcyBp dCBpcyBub3QgcnVubmFibGUsIHNvIHdlIG1hcmsgaXQgYXMgc3VjaCBpbgorICAgICAqIGl0cyBw YXVzZV9mbGFncy4gSWYgdGhlIHZDUFUgaXMgY3VycmVudGx5IHNjaGVkdWxlZCAod2hpY2ggbWVh bnMgd2UKKyAgICAgKiBhcmUgaGVyZSBhZnRlciBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gY3Nj aGVkX3NjaGVkdWxlKCkpLCBmbGFnZ2luZworICAgICAqIGlzIGVub3VnaCwgYXMgd2UnbGwgY2hv b3NlIHNvbWVvbmUgZWxzZSwgYW5kIHRoZW4gY29udGV4dF9zYXZlZCgpCisgICAgICogd2lsbCB0 YWtlIGNhcmUgb2YgdXBkYXRpbmcgdGhlIGxvYWQgcHJvcGVybHkuCisgICAgICoKKyAgICAgKiBJ ZiwgT1RPSCwgdGhlIHZDUFUgaXMgc2l0dGluZyBpbiB0aGUgcnVucXVldWUgKHdoaWNoIG1lYW5z IHdlIGFyZSBoZXJlCisgICAgICogYWZ0ZXIgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIHJ1bnFf Y2FuZGlkYXRlKCkpLCB3ZSBtdXN0IGdvIGFsbCB0aGUKKyAgICAgKiB3YXkgZG93biB0byB0YWtp bmcgaXQgb3V0IG9mIHRoZXJlLCBhbmQgdXBkYXRpbmcgdGhlIGxvYWQgYWNjb3JkaW5nbHkuCisg ICAgICoKKyAgICAgKiBJbiBib3RoIGNhc2VzLCB3ZSBhbHNvIGFkZCBpdCB0byB0aGUgbGlzdCBv ZiBwYXJrZWQgdkNQVXMgb2YgdGhlIGRvbWFpbi4KKyAgICAgKi8KKyAgICBfX3NldF9iaXQoX1ZQ Rl9wYXJrZWQsICZ2LT5wYXVzZV9mbGFncyk7CisgICAgaWYgKCB2Y3B1X29uX3J1bnEoc3ZjKSAp CisgICAgeworICAgICAgICBydW5xX3JlbW92ZShzdmMpOworICAgICAgICB1cGRhdGVfbG9hZChz dmMtPnNkb20tPmRvbS0+Y3B1cG9vbC0+c2NoZWQsIHN2Yy0+cnFkLCBzdmMsIC0xLCBOT1coKSk7 CisgICAgfQorICAgIGxpc3RfYWRkKCZzdmMtPnBhcmtlZF9lbGVtLCAmc3ZjLT5zZG9tLT5wYXJr ZWRfdmNwdXMpOworfQorCitzdGF0aWMgYm9vbCB2Y3B1X3RyeV90b19nZXRfYnVkZ2V0KHN0cnVj dCBjc2NoZWQyX3ZjcHUgKnN2YykKK3sKKyAgICBzdHJ1Y3QgY3NjaGVkMl9kb20gKnNkb20gPSBz dmMtPnNkb207CisgICAgdW5zaWduZWQgaW50IGNwdSA9IHN2Yy0+dmNwdS0+cHJvY2Vzc29yOwor CisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5z Y2hlZHVsZV9sb2NrKSk7CisKKyAgICBpZiAoIHN2Yy0+YnVkZ2V0ID4gMCApCisgICAgICAgIHJl dHVybiB0cnVlOworCisgICAgLyogYnVkZ2V0X2xvY2sgbmVzdHMgaW5zaWRlIHJ1bnF1ZXVlIGxv Y2suICovCisgICAgc3Bpbl9sb2NrKCZzZG9tLT5idWRnZXRfbG9jayk7CisKKyAgICAvKgorICAg ICAqIEhlcmUsIHN2Yy0+YnVkZ2V0IGlzIDw9IDAgKGFzLCBpZiBpdCB3YXMgPiAwLCB3ZSdkIGhh dmUgdGFrZW4gdGhlIGlmCisgICAgICogYWJvdmUhKS4gVGhhdCBiYXNpY2FsbHkgbWVhbnMgdGhl IHZDUFUgaGFzIG92ZXJydW4gYSBiaXQgLS1iZWNhdXNlIG9mCisgICAgICogdmFyaW91cyByZWFz b25zLS0gYW5kIHdlIHdhbnQgdG8gdGFrZSB0aGF0IGludG8gYWNjb3VudC4gV2l0aCB0aGUgKz0s CisgICAgICogd2UgYXJlIGFjdHVhbGx5IHN1YnRyYWN0aW5nIHRoZSBhbW91bnQgb2YgYnVkZ2V0 IHRoZSB2Q1BVIGhhcworICAgICAqIG92ZXJjb25zdW1lZCwgZnJvbSB0aGUgdG90YWwgZG9tYWlu IGJ1ZGdldC4KKyAgICAgKi8KKyAgICBzZG9tLT5idWRnZXQgKz0gc3ZjLT5idWRnZXQ7CisKKyAg ICBpZiAoIHNkb20tPmJ1ZGdldCA+IDAgKQorICAgIHsKKyAgICAgICAgc3ZjLT5idWRnZXQgPSBz ZG9tLT5idWRnZXQ7CisgICAgICAgIHNkb20tPmJ1ZGdldCA9IDA7CisgICAgfQorICAgIGVsc2UK KyAgICB7CisgICAgICAgIHN2Yy0+YnVkZ2V0ID0gMDsKKyAgICAgICAgcGFya192Y3B1KHN2Yyk7 CisgICAgfQorCisgICAgc3Bpbl91bmxvY2soJnNkb20tPmJ1ZGdldF9sb2NrKTsKKworICAgIHJl dHVybiBzdmMtPmJ1ZGdldCA+IDA7Cit9CisKK3N0YXRpYyB2b2lkCit2Y3B1X2dpdmVfYnVkZ2V0 X2JhY2soc3RydWN0IGNzY2hlZDJfdmNwdSAqc3ZjLCBzdHJ1Y3QgbGlzdF9oZWFkICpwYXJrZWQp Cit7CisgICAgc3RydWN0IGNzY2hlZDJfZG9tICpzZG9tID0gc3ZjLT5zZG9tOworICAgIHVuc2ln bmVkIGludCBjcHUgPSBzdmMtPnZjcHUtPnByb2Nlc3NvcjsKKworICAgIEFTU0VSVChzcGluX2lz X2xvY2tlZChwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9jaykpOworICAg IEFTU0VSVChsaXN0X2VtcHR5KHBhcmtlZCkpOworCisgICAgLyogYnVkZ2V0X2xvY2sgbmVzdHMg aW5zaWRlIHJ1bnF1ZXVlIGxvY2suICovCisgICAgc3Bpbl9sb2NrKCZzZG9tLT5idWRnZXRfbG9j ayk7CisKKyAgICAvKgorICAgICAqIFRoZSB2Q1BVIGlzIHN0b3BwaW5nIHJ1bm5pbmcgKGUuZy4s IGJlY2F1c2UgaXQncyBibG9ja2luZywgb3IgaXQgaGFzCisgICAgICogYmVlbiBwcmVlbXB0ZWQp LiBJZiBpdCBoYXNuJ3QgY29uc3VtZWQgYWxsIHRoZSBidWRnZXQgaXQgZ290IHdoZW4sCisgICAg ICogc3RhcnRpbmcgdG8gcnVuLCBwdXQgdGhhdCByZW1haW5pbmcgYW1vdW50IGJhY2sgaW4gdGhl IGRvbWFpbidzIGJ1ZGdldAorICAgICAqIHBvb2wuCisgICAgICovCisgICAgc2RvbS0+YnVkZ2V0 ICs9IHN2Yy0+YnVkZ2V0OworICAgIHN2Yy0+YnVkZ2V0ID0gMDsKKworICAgIC8qCisgICAgICog TWFraW5nIGJ1ZGdldCBhdmFpbGFibGUgYWdhaW4gdG8gdGhlIGRvbWFpbiBtZWFucyB0aGF0IHBh cmtlZCB2Q1BVcworICAgICAqIG1heSBiZSB1bnBhcmtlZCBhbmQgcnVuLiBUaGV5IGFyZSwgaWYg YW55LCBpbiB0aGUgZG9tYWluJ3MgcGFya2VkX3ZjcHVzCisgICAgICogbGlzdCwgc28gd2Ugd2Fu dCB0byBnbyB0aHJvdWdoIHRoYXQgYW5kIHVucGFyayB0aGVtIChzbyB0aGV5IGNhbiB0cnkKKyAg ICAgKiB0byBnZXQgc29tZSBidWRnZXQpLgorICAgICAqCisgICAgICogVG91Y2hpbmcgdGhlIGxp c3QgcmVxdWlyZXMgdGhlIGJ1ZGdldF9sb2NrLCB3aGljaCB3ZSBob2xkLiBMZXQncworICAgICAq IHRoZXJlZm9yZSBwdXQgZXZlcnlvbmUgaW4gdGhhdCBsaXN0IGluIGFub3RoZXIsIHRlbXBvcmFy eSBsaXN0LCB3aGljaAorICAgICAqIHRoZW4gdGhlIGNhbGxlciB3aWxsIHRyYXZlcnNlLCB1bnBh cmtpbmcgdGhlIHZDUFVzIGl0IGZpbmRzIHRoZXJlLgorICAgICAqCisgICAgICogSW4gZmFjdCwg d2UgY2FuJ3QgZG8gdGhlIGFjdHVhbCB1bnBhcmtpbmcgaGVyZSwgYmVjYXVzZSB0aGF0IHJlcXVp cmVzCisgICAgICogdGFraW5nIHRoZSBydW5xdWV1ZSBsb2NrIG9mIHRoZSB2Q1BVcyBiZWluZyB1 bnBhcmtlZCwgYW5kIHdlIGNhbid0CisgICAgICogdGFrZSBhbnkgcnVucXVldWUgbG9ja3Mgd2hp bGUgd2UgaG9sZCBhIGJ1ZGdldF9sb2NrLgorICAgICAqLworICAgIGlmICggc2RvbS0+YnVkZ2V0 ID4gMCApCisgICAgICAgIGxpc3Rfc3BsaWNlX2luaXQoJnNkb20tPnBhcmtlZF92Y3B1cywgcGFy a2VkKTsKKworICAgIHNwaW5fdW5sb2NrKCZzZG9tLT5idWRnZXRfbG9jayk7Cit9CisKK3N0YXRp YyB2b2lkCit1bnBhcmtfcGFya2VkX3ZjcHVzKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywg c3RydWN0IGxpc3RfaGVhZCAqdmNwdXMpCit7CisgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqc3Zj LCAqdG1wOworICAgIHNwaW5sb2NrX3QgKmxvY2s7CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUoc3ZjLCB0bXAsIHZjcHVzLCBwYXJrZWRfZWxlbSkKKyAgICB7CisgICAgICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7CisgICAgICAgIHNfdGltZV90IG5vdzsKKworICAgICAgICBsb2NrID0g dmNwdV9zY2hlZHVsZV9sb2NrX2lycXNhdmUoc3ZjLT52Y3B1LCAmZmxhZ3MpOworCisgICAgICAg IF9fY2xlYXJfYml0KF9WUEZfcGFya2VkLCAmc3ZjLT52Y3B1LT5wYXVzZV9mbGFncyk7CisgICAg ICAgIGlmICggdW5saWtlbHkoc3ZjLT5mbGFncyAmIENTRkxBR19zY2hlZHVsZWQpICkKKyAgICAg ICAgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFdlIGVuZCBoZXJlIGlmIGEgYnVk Z2V0IHJlcGxlbmlzaG1lbnQgYXJyaXZlZCBiZXR3ZWVuCisgICAgICAgICAgICAgKiBjc2NoZWQy X3NjaGVkdWxlKCkgKGFuZCwgaW4gcGFydGljdWxhciwgYWZ0ZXIgYSBjYWxsIHRvCisgICAgICAg ICAgICAgKiB2Y3B1X3RyeV90b19nZXRfYnVkZ2V0KCkgdGhhdCByZXR1cm5lZCBmYWxzZSksIGFu ZAorICAgICAgICAgICAgICogY29udGV4dF9zYXZlZCgpLiBCeSBzZXR0aW5nIF9fQ1NGTEFHX2Rl bGF5ZWRfcnVucV9hZGQsCisgICAgICAgICAgICAgKiB3ZSB0ZWxsIGNvbnRleHRfc2F2ZWQoKSB0 byBwdXQgdGhlIHZDUFUgYmFjayBpbiB0aGUKKyAgICAgICAgICAgICAqIHJ1bnF1ZXVlLCBmcm9t IHdoZXJlIGl0IHdpbGwgY29tcGV0ZSB3aXRoIHRoZSBvdGhlcnMKKyAgICAgICAgICAgICAqIGZv ciB0aGUgbmV3bHkgcmVwbGVuaXNoZWQgYnVkZ2V0LgorICAgICAgICAgICAgICovCisgICAgICAg ICAgICBBU1NFUlQoIHN2Yy0+cnFkICE9IE5VTEwgKTsKKyAgICAgICAgICAgIEFTU0VSVCggYzJy cWQob3BzLCBzdmMtPnZjcHUtPnByb2Nlc3NvcikgPT0gc3ZjLT5ycWQgKTsKKyAgICAgICAgICAg IF9fc2V0X2JpdChfX0NTRkxBR19kZWxheWVkX3J1bnFfYWRkLCAmc3ZjLT5mbGFncyk7CisgICAg ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIHZjcHVfcnVubmFibGUoc3ZjLT52Y3B1KSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBUaGUgdkNQVSBzaG91bGQgZ28g YmFjayB0byB0aGUgcnVucXVldWUsIGFuZCBjb21wZXRlIGZvcgorICAgICAgICAgICAgICogdGhl IG5ld2x5IHJlcGxlbmlzaGVkIGJ1ZGdldCwgYnV0IG9ubHkgaWYgaXQgaXMgYWN0dWFsbHkKKyAg ICAgICAgICAgICAqIHJ1bm5hYmxlIChhbmQgd2FzIHRoZXJlZm9yZSBvZmZsaW5lIG9ubHkgYmVj YXVzZSBvZiB0aGUKKyAgICAgICAgICAgICAqIGxhY2sgb2YgYnVkZ2V0KS4KKyAgICAgICAgICAg ICAqLworICAgICAgICAgICAgbm93ID0gTk9XKCk7CisgICAgICAgICAgICB1cGRhdGVfbG9hZChv cHMsIHN2Yy0+cnFkLCBzdmMsIDEsIG5vdyk7CisgICAgICAgICAgICBydW5xX2luc2VydChvcHMs IHN2Yyk7CisgICAgICAgICAgICBydW5xX3RpY2tsZShvcHMsIHN2Yywgbm93KTsKKyAgICAgICAg fQorICAgICAgICBsaXN0X2RlbF9pbml0KCZzdmMtPnBhcmtlZF9lbGVtKTsKKworICAgICAgICB2 Y3B1X3NjaGVkdWxlX3VubG9ja19pcnFyZXN0b3JlKGxvY2ssIGZsYWdzLCBzdmMtPnZjcHUpOwor ICAgIH0KK30KKworc3RhdGljIHZvaWQgcmVwbF9zZG9tX2J1ZGdldCh2b2lkKiBkYXRhKQorewor ICAgIHN0cnVjdCBjc2NoZWQyX2RvbSAqc2RvbSA9IGRhdGE7CisgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKKyAgICBzX3RpbWVfdCBub3c7CisgICAgTElTVF9IRUFEKHBhcmtlZCk7CisKKyAgICBz cGluX2xvY2tfaXJxc2F2ZSgmc2RvbS0+YnVkZ2V0X2xvY2ssIGZsYWdzKTsKKworICAgIC8qCisg ICAgICogSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgZG9tYWluIG92ZXJydW4sIGFuZCB0aGF0IHRo ZSBidWRnZXQgaGVuY2Ugd2VudAorICAgICAqIGJlbG93IDAgKHJlYXNvbnMgbWF5IGJlIHN5c3Rl bSBvdmVyYm9va2luZywgaXNzdWVzIGluIG9yIHRvbyBjb2Fyc2UKKyAgICAgKiBydW50aW1lIGFj Y291bnRpbmcsIGV0Yy4pLiBJbiBwYXJ0aWN1bGFyLCBpZiB3ZSBvdmVycnVuIGJ5IG1vcmUgdGhh bgorICAgICAqIHRvdF9idWRnZXQsIHRoZW4gYnVkZ2V0K3RvdF9idWRnZXQgd291bGQgc3RpbGwg YmUgPCAwLCB3aGljaCBpbiB0dXJuCisgICAgICogbWVhbnMgdGhhdCwgZGVzcGl0ZSByZXBsZW5p c2htZW50LCB0aGVyZSdzIHN0aWxsIG5vIGJ1ZGdldCBmb3IgdW5hcmtpbmcKKyAgICAgKiBhbmQg cnVubmluZyB2Q1BVcy4KKyAgICAgKgorICAgICAqIEl0IGlzIGFsc28gcG9zc2libGUgdGhhdCB3 ZSBhcmUgaGFuZGxpbmcgdGhlIHJlcGxlbmlzaG1lbnQgbXVjaCBsYXRlcgorICAgICAqIHRoYW4g ZXhwZWN0ZWQgKHJlYXNvbnMgbWF5IGFnYWluIGJlIG92ZXJib29raW5nLCBvciBpc3N1ZXMgd2l0 aCB0aW1lcnMpLgorICAgICAqIElmIHdlIGFyZSBtb3JlIHRoYW4gQ1NDSEVEMl9CREdUX1JFUExf UEVSSU9EIGxhdGUsIHRoaXMgbWVhbnMgd2UgaGF2ZQorICAgICAqIGJhc2ljYWxseSBza2lwcGVk IChhdCBsZWFzdCkgb25lIHJlcGxlbmlzaG1lbnQuCisgICAgICoKKyAgICAgKiBXZSBkZWFsIHdp dGggYm90aCB0aGUgaXNzdWVzIGhlcmUsIGJ5LCBiYXNpY2FsbHksIGRvaW5nIG1vcmUgdGhhbiBq dXN0CisgICAgICogb25lIHJlcGxlbmlzaG1lbnQuIE5vdGUsIGhvd2V2ZXIsIHRoYXQgZXZlcnkg dGltZSB3ZSBhZGQgdG90X2J1ZGdldAorICAgICAqIHRvIHRoZSBidWRnZXQsIHdlIGFsc28gbW92 ZSBuZXh0X3JlcGwgYXdheSBieSBDU0NIRUQyX0JER1RfUkVQTF9QRVJJT0QuCisgICAgICogVGhp cyBndWFyYW50ZWVzIHdlIGFsd2F5cyByZXNwZWN0IHRoZSBjYXAuCisgICAgICovCisgICAgbm93 ID0gTk9XKCk7CisgICAgZG8KKyAgICB7CisgICAgICAgIHNkb20tPm5leHRfcmVwbCArPSBDU0NI RUQyX0JER1RfUkVQTF9QRVJJT0Q7CisgICAgICAgIHNkb20tPmJ1ZGdldCArPSBzZG9tLT50b3Rf YnVkZ2V0OworICAgIH0KKyAgICB3aGlsZSAoIHNkb20tPm5leHRfcmVwbCA8PSBub3cgfHwgc2Rv bS0+YnVkZ2V0IDw9IDAgKTsKKyAgICAvKiBXZSBtYXkgaGF2ZSBkb25lIG1vcmUgcmVwbGVuaXNo bWVudHM6IG1ha2Ugc3VyZSB3ZSBkaWRuJ3Qgb3ZlcnNob3QuICovCisgICAgc2RvbS0+YnVkZ2V0 ID0gbWluKHNkb20tPmJ1ZGdldCwgc2RvbS0+dG90X2J1ZGdldCk7CisKKyAgICAvKgorICAgICAq IEFzIGFib3ZlLCBsZXQncyBwcmVwYXJlIHRoZSB0ZW1wb3JhcnkgbGlzdCwgb3V0IG9mIHRoZSBk b21haW4ncworICAgICAqIHBhcmtlZF92Y3B1cyBsaXN0LCBub3cgdGhhdCB3ZSBob2xkIHRoZSBi dWRnZXRfbG9jay4gVGhlbiwgZHJvcCBzdWNoCisgICAgICogbG9jaywgYW5kIHBhc3MgdGhlIGxp c3QgdG8gdGhlIHVucGFya2luZyBmdW5jdGlvbi4KKyAgICAgKi8KKyAgICBsaXN0X3NwbGljZV9p bml0KCZzZG9tLT5wYXJrZWRfdmNwdXMsICZwYXJrZWQpOworCisgICAgc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmc2RvbS0+YnVkZ2V0X2xvY2ssIGZsYWdzKTsKKworICAgIHVucGFya19wYXJrZWRf dmNwdXMoc2RvbS0+ZG9tLT5jcHVwb29sLT5zY2hlZCwgJnBhcmtlZCk7CisKKyAgICBzZXRfdGlt ZXIoJnNkb20tPnJlcGxfdGltZXIsIHNkb20tPm5leHRfcmVwbCk7Cit9CisKICNpZm5kZWYgTkRF QlVHCiBzdGF0aWMgaW5saW5lIHZvaWQKIGNzY2hlZDJfdmNwdV9jaGVjayhzdHJ1Y3QgdmNwdSAq dmMpCkBAIC0xNDk3LDYgKzE4NDAsOSBAQCBjc2NoZWQyX2FsbG9jX3ZkYXRhKGNvbnN0IHN0cnVj dCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjLCB2b2lkICpkZCkKICAgICB9CiAgICAg c3ZjLT50aWNrbGVkX2NwdSA9IC0xOwogCisgICAgc3ZjLT5idWRnZXQgPSBTVElNRV9NQVg7Cisg ICAgSU5JVF9MSVNUX0hFQUQoJnN2Yy0+cGFya2VkX2VsZW0pOworCiAgICAgU0NIRURfU1RBVF9D UkFOSyh2Y3B1X2FsbG9jKTsKIAogICAgIHJldHVybiBzdmM7CkBAIC0xNTkzLDYgKzE5MzksNyBA QCBjc2NoZWQyX2NvbnRleHRfc2F2ZWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1 Y3QgdmNwdSAqdmMpCiAgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IGNzY2hl ZDJfdmNwdSh2Yyk7CiAgICAgc3BpbmxvY2tfdCAqbG9jayA9IHZjcHVfc2NoZWR1bGVfbG9ja19p cnEodmMpOwogICAgIHNfdGltZV90IG5vdyA9IE5PVygpOworICAgIExJU1RfSEVBRCh3ZXJlX3Bh cmtlZCk7CiAKICAgICBCVUdfT04oICFpc19pZGxlX3ZjcHUodmMpICYmIHN2Yy0+cnFkICE9IGMy cnFkKG9wcywgdmMtPnByb2Nlc3NvcikpOwogICAgIEFTU0VSVChpc19pZGxlX3ZjcHUodmMpIHx8 IHN2Yy0+cnFkID09IGMycnFkKG9wcywgdmMtPnByb2Nlc3NvcikpOwpAQCAtMTYwMCw2ICsxOTQ3 LDkgQEAgY3NjaGVkMl9jb250ZXh0X3NhdmVkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywg c3RydWN0IHZjcHUgKnZjKQogICAgIC8qIFRoaXMgdmNwdSBpcyBub3cgZWxpZ2libGUgdG8gYmUg cHV0IG9uIHRoZSBydW5xdWV1ZSBhZ2FpbiAqLwogICAgIF9fY2xlYXJfYml0KF9fQ1NGTEFHX3Nj aGVkdWxlZCwgJnN2Yy0+ZmxhZ3MpOwogCisgICAgaWYgKCB1bmxpa2VseShoYXNfY2FwKHN2Yykg JiYgc3ZjLT5idWRnZXQgPiAwKSApCisgICAgICAgIHZjcHVfZ2l2ZV9idWRnZXRfYmFjayhzdmMs ICZ3ZXJlX3BhcmtlZCk7CisKICAgICAvKiBJZiBzb21lb25lIHdhbnRzIGl0IG9uIHRoZSBydW5x dWV1ZSwgcHV0IGl0IHRoZXJlLiAqLwogICAgIC8qCiAgICAgICogTkI6IFdlIGNhbiBnZXQgcmlk IG9mIENTRkxBR19zY2hlZHVsZWQgYnkgY2hlY2tpbmcgZm9yCkBAIC0xNjIwLDYgKzE5NzAsOCBA QCBjc2NoZWQyX2NvbnRleHRfc2F2ZWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1 Y3QgdmNwdSAqdmMpCiAgICAgICAgIHVwZGF0ZV9sb2FkKG9wcywgc3ZjLT5ycWQsIHN2YywgLTEs IG5vdyk7CiAKICAgICB2Y3B1X3NjaGVkdWxlX3VubG9ja19pcnEobG9jaywgdmMpOworCisgICAg dW5wYXJrX3BhcmtlZF92Y3B1cyhvcHMsICZ3ZXJlX3BhcmtlZCk7CiB9CiAKICNkZWZpbmUgTUFY X0xPQUQgKFNUSU1FX01BWCk7CkBAIC0yMjQzLDEyICsyNTk1LDE4IEBAIGNzY2hlZDJfYWxsb2Nf ZG9tZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBkb21haW4gKmRvbSkK ICAgICBpZiAoIHNkb20gPT0gTlVMTCApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyog SW5pdGlhbGl6ZSBjcmVkaXQgYW5kIHdlaWdodCAqLworICAgIC8qIEluaXRpYWxpemUgY3JlZGl0 LCBjYXAgYW5kIHdlaWdodCAqLwogICAgIElOSVRfTElTVF9IRUFEKCZzZG9tLT5zZG9tX2VsZW0p OwogICAgIHNkb20tPmRvbSA9IGRvbTsKICAgICBzZG9tLT53ZWlnaHQgPSBDU0NIRUQyX0RFRkFV TFRfV0VJR0hUOworICAgIHNkb20tPmNhcCA9IDBVOwogICAgIHNkb20tPm5yX3ZjcHVzID0gMDsK IAorICAgIGluaXRfdGltZXIoJnNkb20tPnJlcGxfdGltZXIsIHJlcGxfc2RvbV9idWRnZXQsICh2 b2lkKikgc2RvbSwKKyAgICAgICAgICAgICAgIGNwdW1hc2tfYW55KGNwdXBvb2xfZG9tYWluX2Nw dW1hc2soZG9tKSkpOworICAgIHNwaW5fbG9ja19pbml0KCZzZG9tLT5idWRnZXRfbG9jayk7Cisg ICAgSU5JVF9MSVNUX0hFQUQoJnNkb20tPnBhcmtlZF92Y3B1cyk7CisKICAgICB3cml0ZV9sb2Nr X2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3MpOwogCiAgICAgbGlzdF9hZGRfdGFpbCgmc2RvbS0+ c2RvbV9lbGVtLCAmY3NjaGVkMl9wcml2KG9wcyktPnNkb20pOwpAQCAtMjI4NCw2ICsyNjQyLDcg QEAgY3NjaGVkMl9mcmVlX2RvbWRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lk ICpkYXRhKQogCiAgICAgd3JpdGVfbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKIAor ICAgIGtpbGxfdGltZXIoJnNkb20tPnJlcGxfdGltZXIpOwogICAgIGxpc3RfZGVsX2luaXQoJnNk b20tPnNkb21fZWxlbSk7CiAKICAgICB3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmcHJ2LT5sb2Nr LCBmbGFncyk7CkBAIC0yMzc4LDExICsyNzM3LDEyIEBAIGNzY2hlZDJfcnVudGltZShjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUsCiAgICAgICAgIHJldHVybiAtMTsKIAogICAg IC8qIEdlbmVyYWwgYWxnb3JpdGhtOgotICAgICAqIDEpIFJ1biB1bnRpbCBzbmV4dCdzIGNyZWRp dCB3aWxsIGJlIDAKKyAgICAgKiAxKSBSdW4gdW50aWwgc25leHQncyBjcmVkaXQgd2lsbCBiZSAw LgogICAgICAqIDIpIEJ1dCBpZiBzb21lb25lIGlzIHdhaXRpbmcsIHJ1biB1bnRpbCBzbmV4dCdz IGNyZWRpdCBpcyBlcXVhbAotICAgICAqIHRvIGhpcwotICAgICAqIDMpIEJ1dCBuZXZlciBydW4g bG9uZ2VyIHRoYW4gTUFYX1RJTUVSIG9yIHNob3J0ZXIgdGhhbiBNSU5fVElNRVIgb3IKLSAgICAg KiB0aGUgcmF0ZWxpbWl0IHRpbWUuCisgICAgICogICAgdG8gaGlzLgorICAgICAqIDMpIEJ1dCwg aWYgd2UgYXJlIGNhcHBlZCwgbmV2ZXIgcnVuIG1vcmUgdGhhbiBvdXIgYnVkZ2V0LgorICAgICAq IDQpIEJ1dCBuZXZlciBydW4gbG9uZ2VyIHRoYW4gTUFYX1RJTUVSIG9yIHNob3J0ZXIgdGhhbiBN SU5fVElNRVIgb3IKKyAgICAgKiAgICB0aGUgcmF0ZWxpbWl0IHRpbWUuCiAgICAgICovCiAKICAg ICAvKiBDYWxjdWxhdGUgbWludGltZSAqLwpAQCAtMjM5NywxMSArMjc1NywxMyBAQCBjc2NoZWQy X3J1bnRpbWUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1LAogICAgICAgICAg ICAgbWluX3RpbWUgPSByYXRlbGltaXRfbWluOwogICAgIH0KIAotICAgIC8qIDEpIEJhc2ljIHRp bWU6IFJ1biB1bnRpbCBjcmVkaXQgaXMgMC4gKi8KKyAgICAvKiAxKSBSdW4gdW50aWwgc25leHQn cyBjcmVkaXQgd2lsbCBiZSAwLiAqLwogICAgIHJ0X2NyZWRpdCA9IHNuZXh0LT5jcmVkaXQ7CiAK LSAgICAvKiAyKSBJZiB0aGVyZSdzIHNvbWVvbmUgd2FpdGluZyB3aG9zZSBjcmVkaXQgaXMgcG9z aXRpdmUsCi0gICAgICogcnVuIHVudGlsIHlvdXIgY3JlZGl0IH49IGhpcyAqLworICAgIC8qCisg ICAgICogMikgSWYgdGhlcmUncyBzb21lb25lIHdhaXRpbmcgd2hvc2UgY3JlZGl0IGlzIHBvc2l0 aXZlLAorICAgICAqICAgIHJ1biB1bnRpbCB5b3VyIGNyZWRpdCB+PSBoaXMuCisgICAgICovCiAg ICAgaWYgKCAhIGxpc3RfZW1wdHkocnVucSkgKQogICAgIHsKICAgICAgICAgc3RydWN0IGNzY2hl ZDJfdmNwdSAqc3dhaXQgPSBydW5xX2VsZW0ocnVucS0+bmV4dCk7CkBAIC0yNDIzLDE0ICsyNzg1 LDIyIEBAIGNzY2hlZDJfcnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBj cHUsCiAgICAgICogY3JlZGl0IHZhbHVlcyBvZiBNSU4sTUFYIHBlciB2Y3B1LCBzaW5jZSBlYWNo IHZjcHUgYnVybnMgY3JlZGl0CiAgICAgICogYXQgYSBkaWZmZXJlbnQgcmF0ZS4KICAgICAgKi8K LSAgICBpZiAocnRfY3JlZGl0ID4gMCkKKyAgICBpZiAoIHJ0X2NyZWRpdCA+IDAgKQogICAgICAg ICB0aW1lID0gYzJ0KHJxZCwgcnRfY3JlZGl0LCBzbmV4dCk7CiAgICAgZWxzZQogICAgICAgICB0 aW1lID0gMDsKIAotICAgIC8qIDMpIEJ1dCBuZXZlciBydW4gbG9uZ2VyIHRoYW4gTUFYX1RJTUVS IG9yIGxlc3MgdGhhbiBNSU5fVElNRVIgb3IKLSAgICAgKiB0aGUgcmF0ZV9saW1pdCB0aW1lLiAq LwotICAgIGlmICggdGltZSA8IG1pbl90aW1lKQorICAgIC8qCisgICAgICogMykgQnV0LCBpZiBj YXBwZWQsIG5ldmVyIHJ1biBtb3JlIHRoYW4gb3VyIGJ1ZGdldC4KKyAgICAgKi8KKyAgICBpZiAo IHVubGlrZWx5KGhhc19jYXAoc25leHQpKSApCisgICAgICAgIHRpbWUgPSBzbmV4dC0+YnVkZ2V0 IDwgdGltZSA/IHNuZXh0LT5idWRnZXQgOiB0aW1lOworCisgICAgLyoKKyAgICAgKiA0KSBCdXQg bmV2ZXIgcnVuIGxvbmdlciB0aGFuIE1BWF9USU1FUiBvciBsZXNzIHRoYW4gTUlOX1RJTUVSIG9y CisgICAgICogICAgdGhlIHJhdGVfbGltaXQgdGltZS4KKyAgICAgKi8KKyAgICBpZiAoIHRpbWUg PCBtaW5fdGltZSApCiAgICAgewogICAgICAgICB0aW1lID0gbWluX3RpbWU7CiAgICAgICAgIFND SEVEX1NUQVRfQ1JBTksocnVudGltZV9taW5fdGltZXIpOwpAQCAtMjQ0NywxMyArMjgxNywxMyBA QCBjc2NoZWQyX3J1bnRpbWUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1LAog LyoKICAqIEZpbmQgYSBjYW5kaWRhdGUuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgY3NjaGVkMl92Y3B1 ICoKK3N0YXRpYyBub2lubGluZSBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICoKIHJ1bnFfY2FuZGlkYXRl KHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKICAgICAgICAgICAgICAgIHN0cnVj dCBjc2NoZWQyX3ZjcHUgKnNjdXJyLAogICAgICAgICAgICAgICAgaW50IGNwdSwgc190aW1lX3Qg bm93LAogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpza2lwcGVkKQogewotICAgIHN0cnVj dCBsaXN0X2hlYWQgKml0ZXI7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqaXRlciwgKnRlbXA7CiAg ICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqc25leHQgPSBOVUxMOwogICAgIHN0cnVjdCBjc2NoZWQy X3ByaXZhdGUgKnBydiA9IGNzY2hlZDJfcHJpdihwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSk7CiAg ICAgYm9vbCB5aWVsZCA9IF9fdGVzdF9hbmRfY2xlYXJfYml0KF9fQ1NGTEFHX3ZjcHVfeWllbGQs ICZzY3Vyci0+ZmxhZ3MpOwpAQCAtMjQ5Niw3ICsyODY2LDcgQEAgcnVucV9jYW5kaWRhdGUoc3Ry dWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkLAogICAgIGVsc2UKICAgICAgICAgc25leHQg PSBjc2NoZWQyX3ZjcHUoaWRsZV92Y3B1W2NwdV0pOwogCi0gICAgbGlzdF9mb3JfZWFjaCggaXRl ciwgJnJxZC0+cnVucSApCisgICAgbGlzdF9mb3JfZWFjaF9zYWZlKCBpdGVyLCB0ZW1wLCAmcnFk LT5ydW5xICkKICAgICB7CiAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKiBzdmMgPSBsaXN0 X2VudHJ5KGl0ZXIsIHN0cnVjdCBjc2NoZWQyX3ZjcHUsIHJ1bnFfZWxlbSk7CiAKQEAgLTI1NDQs MTEgKzI5MTQsMTMgQEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0 YSAqcnFkLAogICAgICAgICB9CiAKICAgICAgICAgLyoKLSAgICAgICAgICogSWYgdGhlIG5leHQg b25lIG9uIHRoZSBsaXN0IGhhcyBtb3JlIGNyZWRpdCB0aGFuIGN1cnJlbnQKLSAgICAgICAgICog KG9yIGlkbGUsIGlmIGN1cnJlbnQgaXMgbm90IHJ1bm5hYmxlKSwgb3IgaWYgY3VycmVudCBpcwot ICAgICAgICAgKiB5aWVsZGluZywgY2hvb3NlIGl0LgorICAgICAgICAgKiBJZiB0aGUgb25lIGlu IHRoZSBydW5xdWV1ZSBoYXMgbW9yZSBjcmVkaXQgdGhhbiBjdXJyZW50IChvciBpZGxlLAorICAg ICAgICAgKiBpZiBjdXJyZW50IGlzIG5vdCBydW5uYWJsZSksIG9yIGlmIGN1cnJlbnQgaXMgeWll bGRpbmcsIGFuZCBhbHNvCisgICAgICAgICAqIGlmIHRoZSBvbmUgaW4gcnVucXVldWUgZWl0aGVy IGlzIG5vdCBjYXBwZWQsIG9yIGlzIGNhcHBlZCBidXQgaGFzCisgICAgICAgICAqIHNvbWUgYnVk Z2V0LCB0aGVuIGNob29zZSBpdC4KICAgICAgICAgICovCi0gICAgICAgIGlmICggeWllbGQgfHwg c3ZjLT5jcmVkaXQgPiBzbmV4dC0+Y3JlZGl0ICkKKyAgICAgICAgaWYgKCAoeWllbGQgfHwgc3Zj LT5jcmVkaXQgPiBzbmV4dC0+Y3JlZGl0KSAmJgorICAgICAgICAgICAgICghaGFzX2NhcChzdmMp IHx8IHZjcHVfdHJ5X3RvX2dldF9idWRnZXQoc3ZjKSkgKQogICAgICAgICAgICAgc25leHQgPSBz dmM7CiAKICAgICAgICAgLyogSW4gYW55IGNhc2UsIGlmIHdlIGdvdCB0aGlzIGZhciwgYnJlYWsu ICovCkBAIC0yNTc1LDYgKzI5NDcsMTMgQEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJf cnVucXVldWVfZGF0YSAqcnFkLAogICAgIGlmICggdW5saWtlbHkoc25leHQtPnRpY2tsZWRfY3B1 ICE9IC0xICYmIHNuZXh0LT50aWNrbGVkX2NwdSAhPSBjcHUpICkKICAgICAgICAgU0NIRURfU1RB VF9DUkFOSyh0aWNrbGVkX2NwdV9vdmVycmlkZGVuKTsKIAorICAgIC8qCisgICAgICogSWYgc25l eHQgaXMgZnJvbSBhIGNhcHBlZCBkb21haW4sIGl0IG11c3QgaGF2ZSBidWRnZXQgKG9yIGl0Cisg ICAgICogd291bGRuJ3QgaGF2ZSBiZWVuIGluIHRoZSBydW5xKS4gSWYgaXQgaXMgbm90LCBpdCdk IGJlIFNUSU1FX01BWCwKKyAgICAgKiB3aGljaCBzdGlsbCBpcyA+PSAwLgorICAgICAqLworICAg IEFTU0VSVChzbmV4dC0+YnVkZ2V0ID49IDApOworCiAgICAgcmV0dXJuIHNuZXh0OwogfQogCkBA IC0yNjMyLDEwICszMDExLDE4IEBAIGNzY2hlZDJfc2NoZWR1bGUoCiAgICAgICAgICAgICAgICAg ICAgICh1bnNpZ25lZCBjaGFyICopJmQpOwogICAgIH0KIAotICAgIC8qIFVwZGF0ZSBjcmVkaXRz ICovCisgICAgLyogVXBkYXRlIGNyZWRpdHMgKGFuZCBidWRnZXQsIGlmIG5lY2Vzc2FyeSkuICov CiAgICAgYnVybl9jcmVkaXRzKHJxZCwgc2N1cnIsIG5vdyk7CiAKICAgICAvKgorICAgICAqICBC ZWxvdyAwLCBtZWFucyB0aGF0IHdlIGFyZSBjYXBwZWQgYW5kIHdlIGhhdmUgb3ZlcnJ1biBvdXIg IGJ1ZGdldC4KKyAgICAgKiAgTGV0J3MgdHJ5IHRvIGdldCBzb21lIG1vcmUgYnV0LCBpZiB3ZSBm YWlsIChlLmcuLCBiZWNhdXNlIG9mIHRoZQorICAgICAqICBvdGhlciBydW5uaW5nIHZjcHVzKSwg d2Ugd2lsbCBiZSBwYXJrZWQuCisgICAgICovCisgICAgaWYgKCB1bmxpa2VseShzY3Vyci0+YnVk Z2V0IDw9IDApICkKKyAgICAgICAgdmNwdV90cnlfdG9fZ2V0X2J1ZGdldChzY3Vycik7CisKKyAg ICAvKgogICAgICAqIFNlbGVjdCBuZXh0IHJ1bm5hYmxlIGxvY2FsIFZDUFUgKGllIHRvcCBvZiBs b2NhbCBydW5xKS4KICAgICAgKgogICAgICAqIElmIHRoZSBjdXJyZW50IHZjcHUgaXMgcnVubmFi bGUsIGFuZCBoYXMgaGlnaGVyIGNyZWRpdCB0aGFuCkBAIC0yNzY5LDYgKzMxNTYsOSBAQCBjc2No ZWQyX2R1bXBfdmNwdShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYsIHN0cnVjdCBjc2NoZWQy X3ZjcHUgKnN2YykKIAogICAgIHByaW50aygiIGNyZWRpdD0lIiBQUklpMzIiIFt3PSV1XSIsIHN2 Yy0+Y3JlZGl0LCBzdmMtPndlaWdodCk7CiAKKyAgICBpZiAoIGhhc19jYXAoc3ZjKSApCisgICAg ICAgIHByaW50aygiIGJ1ZGdldD0lIlBSSV9zdGltZSwgc3ZjLT5idWRnZXQpOworCiAgICAgcHJp bnRrKCIgbG9hZD0lIlBSSV9zdGltZSIgKH4lIlBSSV9zdGltZSIlJSkiLCBzdmMtPmF2Z2xvYWQs CiAgICAgICAgICAgIChzdmMtPmF2Z2xvYWQgKiAxMDApID4+IHBydi0+bG9hZF9wcmVjaXNpb25f c2hpZnQpOwogCkBAIC0yODU2LDkgKzMyNDYsMTAgQEAgY3NjaGVkMl9kdW1wKGNvbnN0IHN0cnVj dCBzY2hlZHVsZXIgKm9wcykKIAogICAgICAgICBzZG9tID0gbGlzdF9lbnRyeShpdGVyX3Nkb20s IHN0cnVjdCBjc2NoZWQyX2RvbSwgc2RvbV9lbGVtKTsKIAotICAgICAgICBwcmludGsoIlx0RG9t YWluOiAlZCB3ICVkIHYgJWRcbiIsCisgICAgICAgIHByaW50aygiXHREb21haW46ICVkIHcgJWQg YyAldSB2ICVkXG4iLAogICAgICAgICAgICAgICAgc2RvbS0+ZG9tLT5kb21haW5faWQsCiAgICAg ICAgICAgICAgICBzZG9tLT53ZWlnaHQsCisgICAgICAgICAgICAgICBzZG9tLT5jYXAsCiAgICAg ICAgICAgICAgICBzZG9tLT5ucl92Y3B1cyk7CiAKICAgICAgICAgZm9yX2VhY2hfdmNwdSggc2Rv bS0+ZG9tLCB2ICkKQEAgLTMwNzYsMTIgKzM0NjcsMTQgQEAgY3NjaGVkMl9pbml0KHN0cnVjdCBz Y2hlZHVsZXIgKm9wcykKICAgICAgICAgICAgWEVOTE9HX0lORk8gIiBsb2FkX3dpbmRvd19zaGlm dDogJWRcbiIKICAgICAgICAgICAgWEVOTE9HX0lORk8gIiB1bmRlcmxvYWRfYmFsYW5jZV90b2xl cmFuY2U6ICVkXG4iCiAgICAgICAgICAgIFhFTkxPR19JTkZPICIgb3ZlcmxvYWRfYmFsYW5jZV90 b2xlcmFuY2U6ICVkXG4iCi0gICAgICAgICAgIFhFTkxPR19JTkZPICIgcnVucXVldWVzIGFycmFu Z2VtZW50OiAlc1xuIiwKKyAgICAgICAgICAgWEVOTE9HX0lORk8gIiBydW5xdWV1ZXMgYXJyYW5n ZW1lbnQ6ICVzXG4iCisgICAgICAgICAgIFhFTkxPR19JTkZPICIgY2FwIGVuZm9yY2VtZW50IGdy YW51bGFyaXR5OiAlZG1zXG4iLAogICAgICAgICAgICBvcHRfbG9hZF9wcmVjaXNpb25fc2hpZnQs CiAgICAgICAgICAgIG9wdF9sb2FkX3dpbmRvd19zaGlmdCwKICAgICAgICAgICAgb3B0X3VuZGVy bG9hZF9iYWxhbmNlX3RvbGVyYW5jZSwKICAgICAgICAgICAgb3B0X292ZXJsb2FkX2JhbGFuY2Vf dG9sZXJhbmNlLAotICAgICAgICAgICBvcHRfcnVucXVldWVfc3RyW29wdF9ydW5xdWV1ZV0pOwor ICAgICAgICAgICBvcHRfcnVucXVldWVfc3RyW29wdF9ydW5xdWV1ZV0sCisgICAgICAgICAgIG9w dF9jYXBfcGVyaW9kKTsKIAogICAgIGlmICggb3B0X2xvYWRfcHJlY2lzaW9uX3NoaWZ0IDwgTE9B REFWR19QUkVDSVNJT05fU0hJRlRfTUlOICkKICAgICB7CkBAIC0zMDk5LDYgKzM0OTIsMTMgQEAg Y3NjaGVkMl9pbml0KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKICAgICBwcmludGsoWEVOTE9HX0lO Rk8gImxvYWQgdHJhY2tpbmcgd2luZG93IGxlbmd0aCAlbGx1IG5zXG4iLAogICAgICAgICAgICAx VUxMIDw8IG9wdF9sb2FkX3dpbmRvd19zaGlmdCk7CiAKKyAgICBpZiAoIENTQ0hFRDJfQkRHVF9S RVBMX1BFUklPRCA8IENTQ0hFRDJfTUlOX1RJTUVSICkKKyAgICB7CisgICAgICAgIHByaW50aygi V0FSTklORzogJXM6IG9wdF9jYXBfcGVyaW9kICVkIHRvbyBzbWFsbCwgcmVzZXR0aW5nXG4iLAor ICAgICAgICAgICAgICAgX19mdW5jX18sIG9wdF9jYXBfcGVyaW9kKTsKKyAgICAgICAgb3B0X2Nh cF9wZXJpb2QgPSAxMDsgLyogbXMgKi8KKyAgICB9CisKICAgICAvKiBCYXNpY2FsbHkgbm8gQ1BV IGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBhdCB0aGlzIHBvaW50OyBqdXN0CiAgICAgICogc2V0 IHVwIGJhc2ljIHN0cnVjdHVyZXMsIGFuZCBhIGNhbGxiYWNrIHdoZW4gdGhlIENQVSBpbmZvIGlz CiAgICAgICogYXZhaWxhYmxlLiAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3NjaGVk LmggYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAppbmRleCAxMTI3Y2E5Li4yYzdmOWNjIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc2No ZWQuaApAQCAtNzg3LDYgKzc4Nyw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRvbWFpbiAqbmV4 dF9kb21haW5faW5fY3B1cG9vbCgKICAvKiBWQ1BVIGlzIGJlaW5nIHJlc2V0LiAqLwogI2RlZmlu ZSBfVlBGX2luX3Jlc2V0ICAgICAgICA3CiAjZGVmaW5lIFZQRl9pbl9yZXNldCAgICAgICAgICgx VUw8PF9WUEZfaW5fcmVzZXQpCisvKiBWQ1BVIGlzIHBhcmtlZC4gKi8KKyNkZWZpbmUgX1ZQRl9w YXJrZWQgICAgICAgICAgOAorI2RlZmluZSBWUEZfcGFya2VkICAgICAgICAgICAoMVVMPDxfVlBG X3BhcmtlZCkKIAogc3RhdGljIGlubGluZSBpbnQgdmNwdV9ydW5uYWJsZShzdHJ1Y3QgdmNwdSAq dikKIHsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK