From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nayan Deshmukh Subject: [PATCH 2/3] drm/scheduler: add documentation Date: Fri, 25 May 2018 10:15:47 +0530 Message-ID: <20180525044548.21014-2-nayan26deshmukh@gmail.com> References: <20180525044548.21014-1-nayan26deshmukh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pl0-x243.google.com (mail-pl0-x243.google.com [IPv6:2607:f8b0:400e:c01::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C7276E165 for ; Fri, 25 May 2018 04:46:42 +0000 (UTC) Received: by mail-pl0-x243.google.com with SMTP id c11-v6so2382650plr.5 for ; Thu, 24 May 2018 21:46:42 -0700 (PDT) In-Reply-To: <20180525044548.21014-1-nayan26deshmukh@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Nayan Deshmukh , Alex Deucher , christian.koenig@amd.com List-Id: dri-devel@lists.freedesktop.org Y29udmVydCBleGlzdGluZyByYXcgY29tbWVudHMgaW50byBrZXJuZWwtZG9jIGZvcm1hdCBhcyB3 ZWxsCmFzIGFkZCBuZXcgZG9jdW1lbnRhdGlvbgoKU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVy IDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBOYXlhbiBEZXNobXVr aCA8bmF5YW4yNmRlc2htdWtoQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vc2NoZWR1 bGVyL2dwdV9zY2hlZHVsZXIuYyB8IDIxNCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0K IGluY2x1ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaCAgICAgICAgICAgICAgIHwgMTUzICsrKysrKysr KysrKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyOTYgaW5zZXJ0aW9ucygrKSwgNzEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9ncHVfc2No ZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuYwppbmRl eCA0NGQ0ODA3NjhkZmUuLmM3MGM5ODNlM2U3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3NjaGVkdWxlci9ncHVfc2NoZWR1bGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxl ci9ncHVfc2NoZWR1bGVyLmMKQEAgLTIxLDYgKzIxLDI5IEBACiAgKgogICovCiAKKy8qKgorICog RE9DOiBPdmVydmlldworICoKKyAqIFRoZSBHUFUgc2NoZWR1bGVyIHByb3ZpZGVzIGVudGl0aWVz IHdoaWNoIGFsbG93IHVzZXJzcGFjZSB0byBwdXNoIGpvYnMKKyAqIGludG8gc29mdHdhcmUgcXVl dWVzIHdoaWNoIGFyZSB0aGVuIHNjaGVkdWxlZCBvbiBhIGhhcmR3YXJlIHJ1biBxdWV1ZS4KKyAq IFRoZSBzb2Z0d2FyZSBxdWV1ZXMgaGF2ZSBhIHByaW9yaXR5IGFtb25nIHRoZW0uIFRoZSBzY2hl ZHVsZXIgc2VsZWN0cyB0aGUgZW50aXRpZXMKKyAqIGZyb20gdGhlIHJ1biBxdWV1ZSB1c2luZyBG SUZPLiBUaGUgc2NoZWR1bGVyIHByb3ZpZGVzIGRlcGVuZGVuY3kgaGFuZGxpbmcKKyAqIGZlYXR1 cmVzIGFtb25nIGpvYnMuIFRoZSBkcml2ZXIgaXMgc3VwcG9zZWQgdG8gcHJvdmlkZSBmdW5jdGlv bnMgZm9yIGJhY2tlbmQKKyAqIG9wZXJhdGlvbnMgdG8gdGhlIHNjaGVkdWxlciBsaWtlIHN1Ym1p dHRpbmcgYSBqb2IgdG8gaGFyZHdhcmUgcnVuIHF1ZXVlLAorICogcmV0dXJuaW5nIHRoZSBkZXBl bmRlbmN5IG9mIGEgam9iIGV0Yy4KKyAqCisgKiBUaGUgb3JnYW5pc2F0aW9uIG9mIHRoZSBzY2hl ZHVsZXIgaXMgdGhlIGZvbGxvd2luZzotCisgKgorICogMS4gRWFjaCByaW5nIGJ1ZmZlciBoYXMg b25lIHNjaGVkdWxlcgorICogMi4gRWFjaCBzY2hlZHVsZXIgaGFzIG11bHRpcGxlIHJ1biBxdWV1 ZXMgd2l0aCBkaWZmZXJlbnQgcHJpb3JpdGllcworICogICAgKGkuZS4gSElHSF9IVyxISUdIX1NX LCBLRVJORUwsIE5PUk1BTCkKKyAqIDMuIEVhY2ggcnVuIHF1ZXVlIGhhcyBhIHF1ZXVlIG9mIGVu dGl0aWVzIHRvIHNjaGVkdWxlCisgKiA0LiBFbnRpdGllcyB0aGVtc2VsdmVzIG1haW50YWluIGEg cXVldWUgb2Ygam9icyB0aGF0IHdpbGwgYmUgc2NoZWR1bGVkIG9uCisgKiAgICB0aGUgaGFyZHdh cmUuCisgKgorICogVGhlIGpvYnMgaW4gYSBlbnRpdHkgYXJlIGFsd2F5cyBzY2hlZHVsZWQgaW4g dGhlIG9yZGVyIHRoYXQgdGhleSB3ZXJlIHB1c2hlZC4KKyAqLworCiAjaW5jbHVkZSA8bGludXgv a3RocmVhZC5oPgogI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KICNpbmNsdWRlIDxsaW51eC9zY2hl ZC5oPgpAQCAtMzksNyArNjIsMTMgQEAgc3RhdGljIGJvb2wgZHJtX3NjaGVkX2VudGl0eV9pc19y ZWFkeShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KTsKIHN0YXRpYyB2b2lkIGRybV9z Y2hlZF93YWtldXAoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCk7CiBzdGF0aWMgdm9p ZCBkcm1fc2NoZWRfcHJvY2Vzc19qb2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0IGRtYV9m ZW5jZV9jYiAqY2IpOwogCi0vKiBJbml0aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVlIHN0cnVjdCAq LworLyoqCisgKiBkcm1fc2NoZWRfcnFfaW5pdCAtIGluaXRpYWxpemUgYSBnaXZlbiBydW4gcXVl dWUgc3RydWN0CisgKgorICogQHJxOiBzY2hlZHVsZXIgcnVuIHF1ZXVlCisgKgorICogSW5pdGlh bGl6ZXMgYSBzY2hlZHVsZXIgcnVucXVldWUuCisgKi8KIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9y cV9pbml0KHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxKQogewogCXNwaW5fbG9ja19pbml0KCZycS0+ bG9jayk7CkBAIC00Nyw2ICs3NiwxNCBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcnFfaW5pdChz dHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKIAlycS0+Y3VycmVudF9lbnRpdHkgPSBOVUxMOwogfQog CisvKioKKyAqIGRybV9zY2hlZF9ycV9hZGRfZW50aXR5IC0gYWRkIGFuIGVudGl0eQorICoKKyAq IEBycTogc2NoZWR1bGVyIHJ1biBxdWV1ZQorICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eQor ICoKKyAqIEFkZHMgYSBzY2hlZHVsZXIgZW50aXR5IHRvIHRoZSBydW4gcXVldWUuCisgKi8KIHN0 YXRpYyB2b2lkIGRybV9zY2hlZF9ycV9hZGRfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJx LAogCQkJCSAgICBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KQogewpAQCAtNTcsNiAr OTQsMTQgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3JxX2FkZF9lbnRpdHkoc3RydWN0IGRybV9z Y2hlZF9ycSAqcnEsCiAJc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsKIH0KIAorLyoqCisgKiBkcm1f c2NoZWRfcnFfcmVtb3ZlX2VudGl0eSAtIHJlbW92ZSBhbiBlbnRpdHkKKyAqCisgKiBAcnE6IHNj aGVkdWxlciBydW4gcXVldWUKKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkKKyAqCisgKiBS ZW1vdmVzIGEgc2NoZWR1bGVyIGVudGl0eSBmcm9tIHRoZSBydW4gcXVldWUuCisgKi8KIHN0YXRp YyB2b2lkIGRybV9zY2hlZF9ycV9yZW1vdmVfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJx LAogCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KQogewpAQCAtNzAs OSArMTE1LDkgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkoc3RydWN0 IGRybV9zY2hlZF9ycSAqcnEsCiB9CiAKIC8qKgotICogU2VsZWN0IGFuIGVudGl0eSB3aGljaCBj b3VsZCBwcm92aWRlIGEgam9iIHRvIHJ1bgorICogZHJtX3NjaGVkX3JxX3NlbGVjdF9lbnRpdHkg LSBTZWxlY3QgYW4gZW50aXR5IHdoaWNoIGNvdWxkIHByb3ZpZGUgYSBqb2IgdG8gcnVuCiAgKgot ICogQHJxCQlUaGUgcnVuIHF1ZXVlIHRvIGNoZWNrLgorICogQHJxOiBzY2hlZHVsZXIgcnVuIHF1 ZXVlIHRvIGNoZWNrLgogICoKICAqIFRyeSB0byBmaW5kIGEgcmVhZHkgZW50aXR5LCByZXR1cm5z IE5VTEwgaWYgbm9uZSBmb3VuZC4KICAqLwpAQCAtMTEyLDE1ICsxNTcsMTYgQEAgZHJtX3NjaGVk X3JxX3NlbGVjdF9lbnRpdHkoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEpCiB9CiAKIC8qKgotICog SW5pdCBhIGNvbnRleHQgZW50aXR5IHVzZWQgYnkgc2NoZWR1bGVyIHdoZW4gc3VibWl0IHRvIEhX IHJpbmcuCisgKiBkcm1fc2NoZWRfZW50aXR5X2luaXQgLSBJbml0IGEgY29udGV4dCBlbnRpdHkg dXNlZCBieSBzY2hlZHVsZXIgd2hlbgorICogc3VibWl0IHRvIEhXIHJpbmcuCiAgKgotICogQHNj aGVkCVRoZSBwb2ludGVyIHRvIHRoZSBzY2hlZHVsZXIKLSAqIEBlbnRpdHkJVGhlIHBvaW50ZXIg dG8gYSB2YWxpZCBkcm1fc2NoZWRfZW50aXR5Ci0gKiBAcnEJCVRoZSBydW4gcXVldWUgdGhpcyBl bnRpdHkgYmVsb25ncwotICogQGd1aWx0eSAgICAgIGF0b21pY190IHNldCB0byAxIHdoZW4gYSBq b2Igb24gdGhpcyBxdWV1ZQotICogICAgICAgICAgICAgIGlzIGZvdW5kIHRvIGJlIGd1aWx0eSBj YXVzaW5nIGEgdGltZW91dAorICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKKyAqIEBlbnRp dHk6IHNjaGVkdWxlciBlbnRpdHkgdG8gaW5pdAorICogQHJxOiB0aGUgcnVuIHF1ZXVlIHRoaXMg ZW50aXR5IGJlbG9uZ3MKKyAqIEBndWlsdHk6IGF0b21pY190IHNldCB0byAxIHdoZW4gYSBqb2Ig b24gdGhpcyBxdWV1ZQorICogICAgICAgICAgaXMgZm91bmQgdG8gYmUgZ3VpbHR5IGNhdXNpbmcg YSB0aW1lb3V0CiAgKgotICogcmV0dXJuIDAgaWYgc3VjY2VlZC4gbmVnYXRpdmUgZXJyb3IgY29k ZSBvbiBmYWlsdXJlCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9y IGNvZGUgb24gZmFpbHVyZS4KICovCiBpbnQgZHJtX3NjaGVkX2VudGl0eV9pbml0KHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCiAJCQkgIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICpl bnRpdHksCkBAIC0xNDksMTAgKzE5NSwxMCBAQCBpbnQgZHJtX3NjaGVkX2VudGl0eV9pbml0KHN0 cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCiBFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9l bnRpdHlfaW5pdCk7CiAKIC8qKgotICogUXVlcnkgaWYgZW50aXR5IGlzIGluaXRpYWxpemVkCisg KiBkcm1fc2NoZWRfZW50aXR5X2lzX2luaXRpYWxpemVkIC0gUXVlcnkgaWYgZW50aXR5IGlzIGlu aXRpYWxpemVkCiAgKgotICogQHNjaGVkICAgICAgIFBvaW50ZXIgdG8gc2NoZWR1bGVyIGluc3Rh bmNlCi0gKiBAZW50aXR5CVRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVyIGVudGl0eQor ICogQHNjaGVkOiBQb2ludGVyIHRvIHNjaGVkdWxlciBpbnN0YW5jZQorICogQGVudGl0eTogVGhl IHBvaW50ZXIgdG8gYSB2YWxpZCBzY2hlZHVsZXIgZW50aXR5CiAgKgogICogcmV0dXJuIHRydWUg aWYgZW50aXR5IGlzIGluaXRpYWxpemVkLCBmYWxzZSBvdGhlcndpc2UKICovCkBAIC0xNjQsMTEg KzIxMCwxMSBAQCBzdGF0aWMgYm9vbCBkcm1fc2NoZWRfZW50aXR5X2lzX2luaXRpYWxpemVkKHN0 cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCiB9CiAKIC8qKgotICogQ2hlY2sgaWYgZW50 aXR5IGlzIGlkbGUKKyAqIGRybV9zY2hlZF9lbnRpdHlfaXNfaWRsZSAtIENoZWNrIGlmIGVudGl0 eSBpcyBpZGxlCiAgKgotICogQGVudGl0eQlUaGUgcG9pbnRlciB0byBhIHZhbGlkIHNjaGVkdWxl ciBlbnRpdHkKKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkKICAqCi0gKiBSZXR1cm4gdHJ1 ZSBpZiBlbnRpdHkgZG9uJ3QgaGFzIGFueSB1bnNjaGVkdWxlZCBqb2JzLgorICogUmV0dXJucyB0 cnVlIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgaGF2ZSBhbnkgdW5zY2hlZHVsZWQgam9icy4KICAq Lwogc3RhdGljIGJvb2wgZHJtX3NjaGVkX2VudGl0eV9pc19pZGxlKHN0cnVjdCBkcm1fc2NoZWRf ZW50aXR5ICplbnRpdHkpCiB7CkBAIC0xODAsOSArMjI2LDkgQEAgc3RhdGljIGJvb2wgZHJtX3Nj aGVkX2VudGl0eV9pc19pZGxlKHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCiB9CiAK IC8qKgotICogQ2hlY2sgaWYgZW50aXR5IGlzIHJlYWR5CisgKiBkcm1fc2NoZWRfZW50aXR5X2lz X3JlYWR5IC0gQ2hlY2sgaWYgZW50aXR5IGlzIHJlYWR5CiAgKgotICogQGVudGl0eQlUaGUgcG9p bnRlciB0byBhIHZhbGlkIHNjaGVkdWxlciBlbnRpdHkKKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBl bnRpdHkKICAqCiAgKiBSZXR1cm4gdHJ1ZSBpZiBlbnRpdHkgY291bGQgcHJvdmlkZSBhIGpvYi4K ICAqLwpAQCAtMjEwLDEyICsyNTYsMTIgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX2VudGl0eV9r aWxsX2pvYnNfY2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwKIAogCiAvKioKLSAqIERlc3Ryb3kgYSBj b250ZXh0IGVudGl0eQorICogZHJtX3NjaGVkX2VudGl0eV9kb19yZWxlYXNlIC0gRGVzdHJveSBh IGNvbnRleHQgZW50aXR5CiAgKgotICogQHNjaGVkICAgICAgIFBvaW50ZXIgdG8gc2NoZWR1bGVy IGluc3RhbmNlCi0gKiBAZW50aXR5CVRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVyIGVu dGl0eQorICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKKyAqIEBlbnRpdHk6IHNjaGVkdWxl ciBlbnRpdHkKICAqCi0gKiBTcGxpdHRpbmcgZHJtX3NjaGVkX2VudGl0eV9maW5pKCkgaW50byB0 d28gZnVuY3Rpb25zLCBUaGUgZmlyc3Qgb25lIGlzIGRvZXMgdGhlIHdhaXRpbmcsCisgKiBTcGxp dHRpbmcgZHJtX3NjaGVkX2VudGl0eV9maW5pKCkgaW50byB0d28gZnVuY3Rpb25zLCBUaGUgZmly c3Qgb25lIGRvZXMgdGhlIHdhaXRpbmcsCiAgKiByZW1vdmVzIHRoZSBlbnRpdHkgZnJvbSB0aGUg cnVucXVldWUgYW5kIHJldHVybnMgYW4gZXJyb3Igd2hlbiB0aGUgcHJvY2VzcyB3YXMga2lsbGVk LgogICovCiB2b2lkIGRybV9zY2hlZF9lbnRpdHlfZG9fcmVsZWFzZShzdHJ1Y3QgZHJtX2dwdV9z Y2hlZHVsZXIgKnNjaGVkLApAQCAtMjM3LDEyICsyODMsMTMgQEAgdm9pZCBkcm1fc2NoZWRfZW50 aXR5X2RvX3JlbGVhc2Uoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKIEVYUE9SVF9T WU1CT0woZHJtX3NjaGVkX2VudGl0eV9kb19yZWxlYXNlKTsKIAogLyoqCi0gKiBEZXN0cm95IGEg Y29udGV4dCBlbnRpdHkKKyAqIGRybV9zY2hlZF9lbnRpdHlfY2xlYW51cCAtIERlc3Ryb3kgYSBj b250ZXh0IGVudGl0eQogICoKLSAqIEBzY2hlZCAgICAgICBQb2ludGVyIHRvIHNjaGVkdWxlciBp bnN0YW5jZQotICogQGVudGl0eQlUaGUgcG9pbnRlciB0byBhIHZhbGlkIHNjaGVkdWxlciBlbnRp dHkKKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCisgKiBAZW50aXR5OiBzY2hlZHVsZXIg ZW50aXR5CiAgKgotICogVGhlIHNlY29uZCBvbmUgdGhlbiBnb2VzIG92ZXIgdGhlIGVudGl0eSBh bmQgc2lnbmFscyBhbGwgam9icyB3aXRoIGFuIGVycm9yIGNvZGUuCisgKiBUaGlzIHNob3VsZCBi ZSBjYWxsZWQgYWZ0ZXIgQGRybV9zY2hlZF9lbnRpdHlfZG9fcmVsZWFzZS4gSXQgZ29lcyBvdmVy IHRoZQorICogZW50aXR5IGFuZCBzaWduYWxzIGFsbCBqb2JzIHdpdGggYW4gZXJyb3IgY29kZSBp ZiB0aGUgcHJvY2VzcyB3YXMga2lsbGVkLgogICovCiB2b2lkIGRybV9zY2hlZF9lbnRpdHlfY2xl YW51cChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAogCQkJICAgc3RydWN0IGRybV9z Y2hlZF9lbnRpdHkgKmVudGl0eSkKQEAgLTI4MSw2ICszMjgsMTQgQEAgdm9pZCBkcm1fc2NoZWRf ZW50aXR5X2NsZWFudXAoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKIH0KIEVYUE9S VF9TWU1CT0woZHJtX3NjaGVkX2VudGl0eV9jbGVhbnVwKTsKIAorLyoqCisgKiBkcm1fc2NoZWRf ZW50aXR5X2ZpbmkgLSBEZXN0cm95IGEgY29udGV4dCBlbnRpdHkKKyAqCisgKiBAc2NoZWQ6IHNj aGVkdWxlciBpbnN0YW5jZQorICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eQorICoKKyAqIENh bGxzIGRybV9zY2hlZF9lbnRpdHlfZG9fcmVsZWFzZSgpIGFuZCBkcm1fc2NoZWRfZW50aXR5X2Ns ZWFudXAoKQorICovCiB2b2lkIGRybV9zY2hlZF9lbnRpdHlfZmluaShzdHJ1Y3QgZHJtX2dwdV9z Y2hlZHVsZXIgKnNjaGVkLAogCQkJCXN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCiB7 CkBAIC0zMDYsNiArMzYxLDE1IEBAIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9lbnRpdHlfY2xlYXJf ZGVwKHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2VfY2IKIAlkbWFfZmVuY2Vf cHV0KGYpOwogfQogCisvKioKKyAqIGRybV9zY2hlZF9lbnRpdHlfc2V0X3JxIC0gU2V0cyB0aGUg cnVuIHF1ZXVlIGZvciBhbiBlbnRpdHkKKyAqCisgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5 CisgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUKKyAqCisgKiBTZXRzIHRoZSBydW4gcXVldWUg Zm9yIGFuIGVudGl0eSBhbmQgcmVtb3ZlcyB0aGUgZW50aXR5IGZyb20gdGhlIHByZXZpb3VzCisg KiBydW4gcXVldWUgaW4gd2hpY2ggd2FzIHByZXNlbnQuCisgKi8KIHZvaWQgZHJtX3NjaGVkX2Vu dGl0eV9zZXRfcnEoc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSwKIAkJCSAgICAgc3Ry dWN0IGRybV9zY2hlZF9ycSAqcnEpCiB7CkBAIC0zMjUsNiArMzg5LDE0IEBAIHZvaWQgZHJtX3Nj aGVkX2VudGl0eV9zZXRfcnEoc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSwKIH0KIEVY UE9SVF9TWU1CT0woZHJtX3NjaGVkX2VudGl0eV9zZXRfcnEpOwogCisvKioKKyAqIGRybV9zY2hl ZF9kZXBlbmRlbmN5X29wdGltaXplZAorICoKKyAqIEBmZW5jZTogdGhlIGRlcGVuZGVuY3kgZmVu Y2UKKyAqIEBlbnRpdHk6IHRoZSBlbnRpdHkgd2hpY2ggZGVwZW5kcyBvbiB0aGUgYWJvdmUgZmVu Y2UKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRlcGVuZGVuY3kgY2FuIGJlIG9wdGltaXpl ZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlCisgKi8KIGJvb2wgZHJtX3NjaGVkX2RlcGVuZGVuY3lfb3B0 aW1pemVkKHN0cnVjdCBkbWFfZmVuY2UqIGZlbmNlLAogCQkJCSAgICBzdHJ1Y3QgZHJtX3NjaGVk X2VudGl0eSAqZW50aXR5KQogewpAQCAtNDEzLDkgKzQ4NSwxMCBAQCBkcm1fc2NoZWRfZW50aXR5 X3BvcF9qb2Ioc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSkKIH0KIAogLyoqCi0gKiBT dWJtaXQgYSBqb2IgdG8gdGhlIGpvYiBxdWV1ZQorICogZHJtX3NjaGVkX2VudGl0eV9wdXNoX2pv YiAtIFN1Ym1pdCBhIGpvYiB0byB0aGUgZW50aXR5J3Mgam9iIHF1ZXVlCiAgKgotICogQHNjaGVk X2pvYgkJVGhlIHBvaW50ZXIgdG8gam9iIHJlcXVpcmVkIHRvIHN1Ym1pdAorICogQHNjaGVkX2pv Yjogam9iIHRvIHN1Ym1pdAorICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eQogICoKICAqIE5v dGU6IFRvIGd1YXJhbnRlZSB0aGF0IHRoZSBvcmRlciBvZiBpbnNlcnRpb24gdG8gcXVldWUgbWF0 Y2hlcwogICogdGhlIGpvYidzIGZlbmNlIHNlcXVlbmNlIG51bWJlciB0aGlzIGZ1bmN0aW9uIHNo b3VsZCBiZQpAQCAtNTA2LDYgKzU3OSwxMyBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9iX3Rp bWVkb3V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlqb2ItPnNjaGVkLT5vcHMtPnRpbWVk b3V0X2pvYihqb2IpOwogfQogCisvKioKKyAqIGRybV9zY2hlZF9od19qb2JfcmVzZXQgLSBzdG9w IHRoZSBzY2hlZHVsZXIgaWYgaXQgY29udGFpbnMgdGhlIGJhZCBqb2IKKyAqCisgKiBAc2NoZWQ6 IHNjaGVkdWxlciBpbnN0YW5jZQorICogQGJhZDogYmFkIHNjaGVkdWxlciBqb2IKKyAqCisgKi8K IHZvaWQgZHJtX3NjaGVkX2h3X2pvYl9yZXNldChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNj aGVkLCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqYmFkKQogewogCXN0cnVjdCBkcm1fc2NoZWRfam9i ICpzX2pvYjsKQEAgLTU1MCw2ICs2MzAsMTIgQEAgdm9pZCBkcm1fc2NoZWRfaHdfam9iX3Jlc2V0 KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsIHN0cnVjdCBkcm1fc2NoZWRfam8KIH0K IEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2h3X2pvYl9yZXNldCk7CiAKKy8qKgorICogZHJtX3Nj aGVkX2pvYl9yZWNvdmVyeSAtIHJlY292ZXIgam9icyBhZnRlciBhIHJlc2V0CisgKgorICogQHNj aGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKKyAqCisgKi8KIHZvaWQgZHJtX3NjaGVkX2pvYl9yZWNv dmVyeShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQogewogCXN0cnVjdCBkcm1fc2No ZWRfam9iICpzX2pvYiwgKnRtcDsKQEAgLTU5OSwxMCArNjg1LDE3IEBAIHZvaWQgZHJtX3NjaGVk X2pvYl9yZWNvdmVyeShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQogRVhQT1JUX1NZ TUJPTChkcm1fc2NoZWRfam9iX3JlY292ZXJ5KTsKIAogLyoqCi0gKiBJbml0IGEgc2NoZWRfam9i IHdpdGggYmFzaWMgZmllbGQKKyAqIGRybV9zY2hlZF9qb2JfaW5pdCAtIGluaXQgYSBzY2hlZHVs ZXIgam9iCiAgKgotICogTm90ZTogUmVmZXIgdG8gZHJtX3NjaGVkX2VudGl0eV9wdXNoX2pvYiBk b2N1bWVudGF0aW9uCisgKiBAam9iOiBzY2hlZHVsZXIgam9iIHRvIGluaXQKKyAqIEBzY2hlZDog c2NoZWR1bGVyIGluc3RhbmNlCisgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5IHRvIHVzZQor ICogQG93bmVyOiBqb2Igb3duZXIgZm9yIGRlYnVnZ2luZworICoKKyAqIFJlZmVyIHRvIGRybV9z Y2hlZF9lbnRpdHlfcHVzaF9qb2IoKSBkb2N1bWVudGF0aW9uCiAgKiBmb3IgbG9ja2luZyBjb25z aWRlcmF0aW9ucy4KKyAqCisgKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9y IGNvZGUgb3RoZXJ3aXNlLgogICovCiBpbnQgZHJtX3NjaGVkX2pvYl9pbml0KHN0cnVjdCBkcm1f c2NoZWRfam9iICpqb2IsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVk LApAQCAtNjI2LDcgKzcxOSwxMSBAQCBpbnQgZHJtX3NjaGVkX2pvYl9pbml0KHN0cnVjdCBkcm1f c2NoZWRfam9iICpqb2IsCiBFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9qb2JfaW5pdCk7CiAKIC8q KgotICogUmV0dXJuIHR1cmUgaWYgd2UgY2FuIHB1c2ggbW9yZSBqb2JzIHRvIHRoZSBody4KKyAq IGRybV9zY2hlZF9yZWFkeSAtIGlzIHRoZSBzY2hlZHVsZXIgcmVhZHkKKyAqCisgKiBAc2NoZWQ6 IHNjaGVkdWxlciBpbnN0YW5jZQorICoKKyAqIFJldHVybiB0cnVlIGlmIHdlIGNhbiBwdXNoIG1v cmUgam9icyB0byB0aGUgaHcsIG90aGVyd2lzZSBmYWxzZS4KICAqLwogc3RhdGljIGJvb2wgZHJt X3NjaGVkX3JlYWR5KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCiB7CkBAIC02MzUs NyArNzMyLDEwIEBAIHN0YXRpYyBib29sIGRybV9zY2hlZF9yZWFkeShzdHJ1Y3QgZHJtX2dwdV9z Y2hlZHVsZXIgKnNjaGVkKQogfQogCiAvKioKLSAqIFdha2UgdXAgdGhlIHNjaGVkdWxlciB3aGVu IGl0IGlzIHJlYWR5CisgKiBkcm1fc2NoZWRfd2FrZXVwIC0gV2FrZSB1cCB0aGUgc2NoZWR1bGVy IHdoZW4gaXQgaXMgcmVhZHkKKyAqCisgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQorICoK ICAqLwogc3RhdGljIHZvaWQgZHJtX3NjaGVkX3dha2V1cChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVs ZXIgKnNjaGVkKQogewpAQCAtNjQ0LDggKzc0NCwxMiBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRf d2FrZXVwKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCiB9CiAKIC8qKgotICogU2Vs ZWN0IG5leHQgZW50aXR5IHRvIHByb2Nlc3MKLSovCisgKiBkcm1fc2NoZWRfc2VsZWN0X2VudGl0 eSAtIFNlbGVjdCBuZXh0IGVudGl0eSB0byBwcm9jZXNzCisgKgorICogQHNjaGVkOiBzY2hlZHVs ZXIgaW5zdGFuY2UKKyAqCisgKiBSZXR1cm5zIHRoZSBlbnRpdHkgdG8gcHJvY2VzcyBvciBOVUxM IGlmIG5vbmUgYXJlIGZvdW5kLgorICovCiBzdGF0aWMgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkg KgogZHJtX3NjaGVkX3NlbGVjdF9lbnRpdHkoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hl ZCkKIHsKQEAgLTY2NSw2ICs3NjksMTQgQEAgZHJtX3NjaGVkX3NlbGVjdF9lbnRpdHkoc3RydWN0 IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkKIAlyZXR1cm4gZW50aXR5OwogfQogCisvKioKKyAq IGRybV9zY2hlZF9wcm9jZXNzX2pvYiAtIHByb2Nlc3MgYSBqb2IKKyAqCisgKiBAZjogZmVuY2UK KyAqIEBjYjogZmVuY2UgY2FsbGJhY2tzCisgKgorICogQ2FsbGVkIGFmdGVyIGpvYiBoYXMgZmlu aXNoZWQgZXhlY3V0aW9uLgorICovCiBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcHJvY2Vzc19qb2Io c3RydWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IpCiB7CiAJc3RydWN0 IGRybV9zY2hlZF9mZW5jZSAqc19mZW5jZSA9CkBAIC02ODAsNiArNzkyLDEzIEBAIHN0YXRpYyB2 b2lkIGRybV9zY2hlZF9wcm9jZXNzX2pvYihzdHJ1Y3QgZG1hX2ZlbmNlICpmLCBzdHJ1Y3QgZG1h X2ZlbmNlX2NiICpjYikKIAl3YWtlX3VwX2ludGVycnVwdGlibGUoJnNjaGVkLT53YWtlX3VwX3dv cmtlcik7CiB9CiAKKy8qKgorICogZHJtX3NjaGVkX2Jsb2NrZWQgLSBjaGVjayBpZiB0aGUgc2No ZWR1bGVyIGlzIGJsb2NrZWQKKyAqCisgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQorICoK KyAqIFJldHVybnMgdHJ1ZSBpZiBibG9ja2VkLCBvdGhlcndpc2UgZmFsc2UuCisgKi8KIHN0YXRp YyBib29sIGRybV9zY2hlZF9ibG9ja2VkKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQp CiB7CiAJaWYgKGt0aHJlYWRfc2hvdWxkX3BhcmsoKSkgewpAQCAtNjkwLDYgKzgwOSwxMyBAQCBz dGF0aWMgYm9vbCBkcm1fc2NoZWRfYmxvY2tlZChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNj aGVkKQogCXJldHVybiBmYWxzZTsKIH0KIAorLyoqCisgKiBkcm1fc2NoZWRfbWFpbiAtIG1haW4g c2NoZWR1bGVyIHRocmVhZAorICoKKyAqIEBwYXJhbTogc2NoZWR1bGVyIGluc3RhbmNlCisgKgor ICogUmV0dXJucyAwLgorICovCiBzdGF0aWMgaW50IGRybV9zY2hlZF9tYWluKHZvaWQgKnBhcmFt KQogewogCXN0cnVjdCBzY2hlZF9wYXJhbSBzcGFyYW0gPSB7LnNjaGVkX3ByaW9yaXR5ID0gMX07 CkBAIC03NDQsMTUgKzg3MCwxNyBAQCBzdGF0aWMgaW50IGRybV9zY2hlZF9tYWluKHZvaWQgKnBh cmFtKQogfQogCiAvKioKLSAqIEluaXQgYSBncHUgc2NoZWR1bGVyIGluc3RhbmNlCisgKiBkcm1f c2NoZWRfaW5pdCAtIEluaXQgYSBncHUgc2NoZWR1bGVyIGluc3RhbmNlCiAgKgotICogQHNjaGVk CQlUaGUgcG9pbnRlciB0byB0aGUgc2NoZWR1bGVyCi0gKiBAb3BzCQkJVGhlIGJhY2tlbmQgb3Bl cmF0aW9ucyBmb3IgdGhpcyBzY2hlZHVsZXIuCi0gKiBAaHdfc3VibWlzc2lvbnMJTnVtYmVyIG9m IGh3IHN1Ym1pc3Npb25zIHRvIGRvLgotICogQG5hbWUJCU5hbWUgdXNlZCBmb3IgZGVidWdnaW5n CisgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQorICogQG9wczogYmFja2VuZCBvcGVyYXRp b25zIGZvciB0aGlzIHNjaGVkdWxlcgorICogQGh3X3N1Ym1pc3Npb246IG51bWJlciBvZiBodyBz dWJtaXNzaW9ucyB0aGF0IGNhbiBiZSBpbiBmbGlnaHQKKyAqIEBoYW5nX2xpbWl0OiBudW1iZXIg b2YgdGltZXMgdG8gYWxsb3cgYSBqb2IgdG8gaGFuZyBiZWZvcmUgZHJvcHBpbmcgaXQKKyAqIEB0 aW1lb3V0OiB0aW1lb3V0IHZhbHVlIGluIGppZmZpZXMgZm9yIHRoZSBzY2hlZHVsZXIKKyAqIEBu YW1lOiBuYW1lIHVzZWQgZm9yIGRlYnVnZ2luZwogICoKICAqIFJldHVybiAwIG9uIHN1Y2Nlc3Ms IG90aGVyd2lzZSBlcnJvciBjb2RlLgotKi8KKyAqLwogaW50IGRybV9zY2hlZF9pbml0KHN0cnVj dCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCiAJCSAgIGNvbnN0IHN0cnVjdCBkcm1fc2NoZWRf YmFja2VuZF9vcHMgKm9wcywKIAkJICAgdW5zaWduZWQgaHdfc3VibWlzc2lvbiwKQEAgLTc4OCw5 ICs5MTYsMTEgQEAgaW50IGRybV9zY2hlZF9pbml0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAq c2NoZWQsCiBFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9pbml0KTsKIAogLyoqCi0gKiBEZXN0cm95 IGEgZ3B1IHNjaGVkdWxlcgorICogZHJtX3NjaGVkX2ZpbmkgLSBEZXN0cm95IGEgZ3B1IHNjaGVk dWxlcgorICoKKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCiAgKgotICogQHNjaGVkCVRo ZSBwb2ludGVyIHRvIHRoZSBzY2hlZHVsZXIKKyAqIFRlYXJzIGRvd24gYW5kIGNsZWFucyB1cCB0 aGUgc2NoZWR1bGVyLgogICovCiB2b2lkIGRybV9zY2hlZF9maW5pKHN0cnVjdCBkcm1fZ3B1X3Nj aGVkdWxlciAqc2NoZWQpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVy LmggYi9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgKaW5kZXggZGVjNjU1ODk0ZDA4Li40OTY0 NDJmMTJiZmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaAorKysgYi9p bmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgKQEAgLTQzLDEzICs0MywzMyBAQCBlbnVtIGRybV9z Y2hlZF9wcmlvcml0eSB7CiB9OwogCiAvKioKLSAqIGRybV9zY2hlZF9lbnRpdHkgLSBBIHdyYXBw ZXIgYXJvdW5kIGEgam9iIHF1ZXVlICh0eXBpY2FsbHkgYXR0YWNoZWQKLSAqIHRvIHRoZSBEUk0g ZmlsZV9wcml2KS4KKyAqIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5IC0gQSB3cmFwcGVyIGFyb3Vu ZCBhIGpvYiBxdWV1ZSAodHlwaWNhbGx5CisgKiBhdHRhY2hlZCB0byB0aGUgRFJNIGZpbGVfcHJp dikuCisgKgorICogQGxpc3Q6IHVzZWQgdG8gYXBwZW5kIHRoaXMgc3RydWN0IHRvIHRoZSBsaXN0 IG9mIGVudGl0aWVzIGluIHRoZQorICogICAgICAgIHJ1bnF1ZXVlLgorICogQHJxOiBydW5xdWV1 ZSB0byB3aGljaCB0aGlzIGVudGl0eSBiZWxvbmdzLgorICogQHJxX2xvY2s6IGxvY2sgdG8gbW9k aWZ5IHRoZSBydW5xdWV1ZSB0byB3aGljaCB0aGlzIGVudGl0eSBiZWxvbmdzLgorICogQHNjaGVk OiB0aGUgc2NoZWR1bGVyIGluc3RhbmNlIHRvIHdoaWNoIHRoaXMgZW50aXR5IGlzIGVucXVldWVk LgorICogQGpvYl9xdWV1ZTogdGhlIGxpc3Qgb2Ygam9icyBvZiB0aGlzIGVudGl0eS4KKyAqIEBm ZW5jZV9zZXE6IGEgbGluZWFybHkgaW5jcmVhc2luZyBzZXFubyBpbmNyZW1lbnRlZCB3aXRoIGVh Y2gKKyAqICAgICAgICAgICAgIG5ldyAmZHJtX3NjaGVkX2ZlbmNlIHdoaWNoIGlzIHBhcnQgb2Yg dGhlIGVudGl0eS4KKyAqIEBmZW5jZV9jb250ZXh0OiBhIHVuaXF1ZSBjb250ZXh0IGZvciBhbGwg dGhlIGZlbmNlcyB3aGljaCBiZWxvbmcKKyAqICAgICAgICAgICAgICAgICB0byB0aGlzIGVudGl0 eS4KKyAqICAgICAgICAgICAgICAgICBUaGUgJmRybV9zY2hlZF9mZW5jZS5zY2hlZHVsZWQgdXNl cyB0aGUKKyAqICAgICAgICAgICAgICAgICBmZW5jZV9jb250ZXh0IGJ1dCAmZHJtX3NjaGVkX2Zl bmNlLmZpbmlzaGVkIHVzZXMKKyAqICAgICAgICAgICAgICAgICBmZW5jZV9jb250ZXh0ICsgMS4K KyAqIEBkZXBlbmRlbmN5OiB0aGUgZGVwZW5kZW5jeSBmZW5jZSBvZiB0aGUgam9iIHdoaWNoIGlz IG9uIHRoZSB0b3AKKyAqICAgICAgICAgICAgICBvZiB0aGUgam9iIHF1ZXVlLgorICogQGNiOiBj YWxsYmFjayBmb3IgdGhlIGRlcGVuZGVuY3kgZmVuY2UgYWJvdmUuCisgKiBAZ3VpbHR5OiBwb2lu dHMgdG8gY3R4J3MgZ3VpbHR5LgorICogQGZpbmlfc3RhdHVzOiBjb250YWlucyB0aGUgZXhpdCBz dGF0dXMgaW4gY2FzZSB0aGUgcHJvY2VzcyB3YXMgc2lnbmFsbGVkLgorICogQGxhc3Rfc2NoZWR1 bGVkOiBwb2ludHMgdG8gdGhlIGZpbmlzaGVkIGZlbmNlIG9mIHRoZSBsYXN0IHNjaGVkdWxlZCBq b2IuCiAgKgogICogRW50aXRpZXMgd2lsbCBlbWl0IGpvYnMgaW4gb3JkZXIgdG8gdGhlaXIgY29y cmVzcG9uZGluZyBoYXJkd2FyZQogICogcmluZywgYW5kIHRoZSBzY2hlZHVsZXIgd2lsbCBhbHRl cm5hdGUgYmV0d2VlbiBlbnRpdGllcyBiYXNlZCBvbgogICogc2NoZWR1bGluZyBwb2xpY3kuCi0q LworICovCiBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSB7CiAJc3RydWN0IGxpc3RfaGVhZAkJbGlz dDsKIAlzdHJ1Y3QgZHJtX3NjaGVkX3JxCQkqcnE7CkBAIC02Myw0NyArODMsOTYgQEAgc3RydWN0 IGRybV9zY2hlZF9lbnRpdHkgewogCiAJc3RydWN0IGRtYV9mZW5jZQkJKmRlcGVuZGVuY3k7CiAJ c3RydWN0IGRtYV9mZW5jZV9jYgkJY2I7Ci0JYXRvbWljX3QJCQkqZ3VpbHR5OyAvKiBwb2ludHMg dG8gY3R4J3MgZ3VpbHR5ICovCi0JaW50ICAgICAgICAgICAgZmluaV9zdGF0dXM7Ci0Jc3RydWN0 IGRtYV9mZW5jZSAgICAqbGFzdF9zY2hlZHVsZWQ7CisJYXRvbWljX3QJCQkqZ3VpbHR5OworCWlu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaV9zdGF0dXM7CisJc3RydWN0IGRtYV9m ZW5jZSAgICAgICAgICAgICAgICAqbGFzdF9zY2hlZHVsZWQ7CiB9OwogCiAvKioKKyAqIHN0cnVj dCBkcm1fc2NoZWRfcnEgLSBxdWV1ZSBvZiBlbnRpdGllcyB0byBiZSBzY2hlZHVsZWQuCisgKgor ICogQGxvY2s6IHRvIG1vZGlmeSB0aGUgZW50aXRpZXMgbGlzdC4KKyAqIEBlbnRpdGllczogbGlz dCBvZiB0aGUgZW50aXRpZXMgdG8gYmUgc2NoZWR1bGVkLgorICogQGN1cnJlbnRfZW50aXR5OiB0 aGUgZW50aXR5IHdoaWNoIGlzIHRvIGJlIHNjaGVkdWxlZC4KKyAqCiAgKiBSdW4gcXVldWUgaXMg YSBzZXQgb2YgZW50aXRpZXMgc2NoZWR1bGluZyBjb21tYW5kIHN1Ym1pc3Npb25zIGZvcgogICog b25lIHNwZWNpZmljIHJpbmcuIEl0IGltcGxlbWVudHMgdGhlIHNjaGVkdWxpbmcgcG9saWN5IHRo YXQgc2VsZWN0cwogICogdGhlIG5leHQgZW50aXR5IHRvIGVtaXQgY29tbWFuZHMgZnJvbS4KLSov CisgKi8KIHN0cnVjdCBkcm1fc2NoZWRfcnEgewogCXNwaW5sb2NrX3QJCQlsb2NrOwogCXN0cnVj dCBsaXN0X2hlYWQJCWVudGl0aWVzOwogCXN0cnVjdCBkcm1fc2NoZWRfZW50aXR5CQkqY3VycmVu dF9lbnRpdHk7CiB9OwogCisvKioKKyAqIHN0cnVjdCBkcm1fc2NoZWRfZmVuY2UgLSBmZW5jZXMg Y29ycmVzcG9uZGluZyB0byB0aGUgc2NoZWR1bGluZyBvZiBhIGpvYi4KKyAqLwogc3RydWN0IGRy bV9zY2hlZF9mZW5jZSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAc2NoZWR1bGVkOiB0aGlz IGZlbmNlIGlzIHdoYXQgd2lsbCBiZSBzaWduYWxlZCBieSB0aGUgc2NoZWR1bGVyCisgICAgICAg ICAqIHdoZW4gdGhlIGpvYiBpcyBzY2hlZHVsZWQuCisgICAgICAgICAqLwogCXN0cnVjdCBkbWFf ZmVuY2UJCXNjaGVkdWxlZDsKIAotCS8qIFRoaXMgZmVuY2UgaXMgd2hhdCB3aWxsIGJlIHNpZ25h bGVkIGJ5IHRoZSBzY2hlZHVsZXIgd2hlbgotCSAqIHRoZSBqb2IgaXMgY29tcGxldGVkLgotCSAq Ci0JICogV2hlbiBzZXR0aW5nIHVwIGFuIG91dCBmZW5jZSBmb3IgdGhlIGpvYiwgeW91IHNob3Vs ZCB1c2UKLQkgKiB0aGlzLCBzaW5jZSBpdCdzIGF2YWlsYWJsZSBpbW1lZGlhdGVseSB1cG9uCi0J ICogZHJtX3NjaGVkX2pvYl9pbml0KCksIGFuZCB0aGUgZmVuY2UgcmV0dXJuZWQgYnkgdGhlIGRy aXZlcgotCSAqIGZyb20gcnVuX2pvYigpIHdvbid0IGJlIGNyZWF0ZWQgdW50aWwgdGhlIGRlcGVu ZGVuY2llcyBoYXZlCi0JICogcmVzb2x2ZWQuCi0JICovCisgICAgICAgIC8qKgorICAgICAgICAg KiBAZmluaXNoZWQ6IHRoaXMgZmVuY2UgaXMgd2hhdCB3aWxsIGJlIHNpZ25hbGVkIGJ5IHRoZSBz Y2hlZHVsZXIKKyAgICAgICAgICogd2hlbiB0aGUgam9iIGlzIGNvbXBsZXRlZC4KKyAgICAgICAg ICoKKyAgICAgICAgICogV2hlbiBzZXR0aW5nIHVwIGFuIG91dCBmZW5jZSBmb3IgdGhlIGpvYiwg eW91IHNob3VsZCB1c2UKKyAgICAgICAgICogdGhpcywgc2luY2UgaXQncyBhdmFpbGFibGUgaW1t ZWRpYXRlbHkgdXBvbgorICAgICAgICAgKiBkcm1fc2NoZWRfam9iX2luaXQoKSwgYW5kIHRoZSBm ZW5jZSByZXR1cm5lZCBieSB0aGUgZHJpdmVyCisgICAgICAgICAqIGZyb20gcnVuX2pvYigpIHdv bid0IGJlIGNyZWF0ZWQgdW50aWwgdGhlIGRlcGVuZGVuY2llcyBoYXZlCisgICAgICAgICAqIHJl c29sdmVkLgorICAgICAgICAgKi8KIAlzdHJ1Y3QgZG1hX2ZlbmNlCQlmaW5pc2hlZDsKIAorICAg ICAgICAvKioKKyAgICAgICAgICogQGNiOiB0aGUgY2FsbGJhY2sgZm9yIHRoZSBwYXJlbnQgZmVu Y2UgYmVsb3cuCisgICAgICAgICAqLwogCXN0cnVjdCBkbWFfZmVuY2VfY2IJCWNiOworICAgICAg ICAvKioKKyAgICAgICAgICogQHBhcmVudDogdGhlIGZlbmNlIHJldHVybmVkIGJ5ICZkcm1fc2No ZWRfYmFja2VuZF9vcHMucnVuX2pvYgorICAgICAgICAgKiB3aGVuIHNjaGVkdWxpbmcgdGhlIGpv YiBvbiBoYXJkd2FyZS4gV2Ugc2lnbmFsIHRoZQorICAgICAgICAgKiAmZHJtX3NjaGVkX2ZlbmNl LmZpbmlzaGVkIGZlbmNlIG9uY2UgcGFyZW50IGlzIHNpZ25hbGxlZC4KKyAgICAgICAgICovCiAJ c3RydWN0IGRtYV9mZW5jZQkJKnBhcmVudDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBzY2hl ZDogdGhlIHNjaGVkdWxlciBpbnN0YW5jZSB0byB3aGljaCB0aGUgam9iIGhhdmluZyB0aGlzIHN0 cnVjdAorICAgICAgICAgKiBiZWxvbmdzIHRvLgorICAgICAgICAgKi8KIAlzdHJ1Y3QgZHJtX2dw dV9zY2hlZHVsZXIJKnNjaGVkOworICAgICAgICAvKioKKyAgICAgICAgICogQGxvY2s6IHRoZSBs b2NrIHVzZWQgYnkgdGhlIHNjaGVkdWxlZCBhbmQgdGhlIGZpbmlzaGVkIGZlbmNlcy4KKyAgICAg ICAgICovCiAJc3BpbmxvY2tfdAkJCWxvY2s7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAb3du ZXI6IGpvYiBvd25lciBmb3IgZGVidWdnaW5nCisgICAgICAgICAqLwogCXZvaWQJCQkJKm93bmVy OwogfTsKIAogc3RydWN0IGRybV9zY2hlZF9mZW5jZSAqdG9fZHJtX3NjaGVkX2ZlbmNlKHN0cnVj dCBkbWFfZmVuY2UgKmYpOwogCiAvKioKLSAqIGRybV9zY2hlZF9qb2IgLSBBIGpvYiB0byBiZSBy dW4gYnkgYW4gZW50aXR5LgorICogc3RydWN0IGRybV9zY2hlZF9qb2IgLSBBIGpvYiB0byBiZSBy dW4gYnkgYW4gZW50aXR5LgorICoKKyAqIEBxdWV1ZV9ub2RlOiB1c2VkIHRvIGFwcGVuZCB0aGlz IHN0cnVjdCB0byB0aGUgcXVldWUgb2Ygam9icyBpbiBhbiBlbnRpdHkuCisgKiBAc2NoZWQ6IHRo ZSBzY2hlZHVsZXIgaW5zdGFuY2Ugb24gd2hpY2ggdGhpcyBqb2IgaXMgc2NoZWR1bGVkLgorICog QHNfZmVuY2U6IGNvbnRhaW5zIHRoZSBmZW5jZXMgZm9yIHRoZSBzY2hlZHVsaW5nIG9mIGpvYi4K KyAqIEBmaW5pc2hfY2I6IHRoZSBjYWxsYmFjayBmb3IgdGhlIGZpbmlzaGVkIGZlbmNlLgorICog QGZpbmlzaF93b3JrOiBzY2hlZHVsZXMgdGhlIGZ1bmN0aW9uIEBkcm1fc2NoZWRfam9iX2Zpbmlz aCBvbmNlIHRoZSBqb2IgaGFzCisgKiAgICAgICAgICAgICAgIGZpbmlzaGVkIHRvIHJlbW92ZSB0 aGUgam9iIGZyb20gdGhlCisgKiAgICAgICAgICAgICAgIEBkcm1fZ3B1X3NjaGVkdWxlci5yaW5n X21pcnJvcl9saXN0LgorICogQG5vZGU6IHVzZWQgdG8gYXBwZW5kIHRoaXMgc3RydWN0IHRvIHRo ZSBAZHJtX2dwdV9zY2hlZHVsZXIucmluZ19taXJyb3JfbGlzdC4KKyAqIEB3b3JrX3Rkcjogc2No ZWR1bGVzIGEgZGVsYXllZCBjYWxsIHRvIEBkcm1fc2NoZWRfam9iX3RpbWVkb3V0IGFmdGVyIHRo ZSB0aW1lb3V0CisgKiAgICAgICAgICAgIGludGVydmFsIGlzIG92ZXIuCisgKiBAaWQ6IGEgdW5p cXVlIGlkIGFzc2lnbmVkIHRvIGVhY2ggam9iIHNjaGVkdWxlZCBvbiB0aGUgc2NoZWR1bGVyLgor ICogQGthcm1hOiBpbmNyZW1lbnQgb24gZXZlcnkgaGFuZyBjYXVzZWQgYnkgdGhpcyBqb2IuIElm IHRoaXMgZXhjZWVkcyB0aGUgaGFuZworICogICAgICAgICBsaW1pdCBvZiB0aGUgc2NoZWR1bGVy IHRoZW4gdGhlIGpvYiBpcyBtYXJrZWQgZ3VpbHR5IGFuZCB3aWxsIG5vdAorICogICAgICAgICBi ZSBzY2hlZHVsZWQgZnVydGhlci4KKyAqIEBzX3ByaW9yaXR5OiB0aGUgcHJpb3JpdHkgb2YgdGhl IGpvYi4KKyAqIEBlbnRpdHk6IHRoZSBlbnRpdHkgdG8gd2hpY2ggdGhpcyBqb2IgYmVsb25ncy4K ICAqCiAgKiBBIGpvYiBpcyBjcmVhdGVkIGJ5IHRoZSBkcml2ZXIgdXNpbmcgZHJtX3NjaGVkX2pv Yl9pbml0KCksIGFuZAogICogc2hvdWxkIGNhbGwgZHJtX3NjaGVkX2VudGl0eV9wdXNoX2pvYigp IG9uY2UgaXQgd2FudHMgdGhlIHNjaGVkdWxlcgpAQCAtMTMwLDM4ICsxOTksNjQgQEAgc3RhdGlj IGlubGluZSBib29sIGRybV9zY2hlZF9pbnZhbGlkYXRlX2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pv YiAqc19qb2IsCiB9CiAKIC8qKgorICogc3RydWN0IGRybV9zY2hlZF9iYWNrZW5kX29wcworICoK ICAqIERlZmluZSB0aGUgYmFja2VuZCBvcGVyYXRpb25zIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVy LAotICogdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBkcml2ZXIgc2lk ZQotKi8KKyAqIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gZHJpdmVy IHNpZGUuCisgKi8KIHN0cnVjdCBkcm1fc2NoZWRfYmFja2VuZF9vcHMgewotCS8qIENhbGxlZCB3 aGVuIHRoZSBzY2hlZHVsZXIgaXMgY29uc2lkZXJpbmcgc2NoZWR1bGluZyB0aGlzCi0JICogam9i IG5leHQsIHRvIGdldCBhbm90aGVyIHN0cnVjdCBkbWFfZmVuY2UgZm9yIHRoaXMgam9iIHRvCisJ LyoqCisgICAgICAgICAqIEBkZXBlbmRlbmN5OiBDYWxsZWQgd2hlbiB0aGUgc2NoZWR1bGVyIGlz IGNvbnNpZGVyaW5nIHNjaGVkdWxpbmcKKyAgICAgICAgICogdGhpcyBqb2IgbmV4dCwgdG8gZ2V0 IGFub3RoZXIgc3RydWN0IGRtYV9mZW5jZSBmb3IgdGhpcyBqb2IgdG8KIAkgKiBibG9jayBvbi4g IE9uY2UgaXQgcmV0dXJucyBOVUxMLCBydW5fam9iKCkgbWF5IGJlIGNhbGxlZC4KIAkgKi8KIAlz dHJ1Y3QgZG1hX2ZlbmNlICooKmRlcGVuZGVuY3kpKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hl ZF9qb2IsCiAJCQkJCXN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICpzX2VudGl0eSk7CiAKLQkvKiBD YWxsZWQgdG8gZXhlY3V0ZSB0aGUgam9iIG9uY2UgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMgaGF2 ZQotCSAqIGJlZW4gcmVzb2x2ZWQuICBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMs IGlmCisJLyoqCisgICAgICAgICAqIEBydW5fam9iOiBDYWxsZWQgdG8gZXhlY3V0ZSB0aGUgam9i IG9uY2UgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICogaGF2ZSBiZWVuIHJlc29s dmVkLiAgVGhpcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCBpZgogCSAqIHRpbWVkb3V0 X2pvYigpIGhhcyBoYXBwZW5lZCBhbmQgZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSgpCiAJICogZGVj aWRlcyB0byB0cnkgaXQgYWdhaW4uCiAJICovCiAJc3RydWN0IGRtYV9mZW5jZSAqKCpydW5fam9i KShzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKTsKIAotCS8qIENhbGxlZCB3aGVuIGEg am9iIGhhcyB0YWtlbiB0b28gbG9uZyB0byBleGVjdXRlLCB0byB0cmlnZ2VyCi0JICogR1BVIHJl Y292ZXJ5LgorCS8qKgorICAgICAgICAgKiBAdGltZWRvdXRfam9iOiBDYWxsZWQgd2hlbiBhIGpv YiBoYXMgdGFrZW4gdG9vIGxvbmcgdG8gZXhlY3V0ZSwKKyAgICAgICAgICogdG8gdHJpZ2dlciBH UFUgcmVjb3ZlcnkuCiAJICovCiAJdm9pZCAoKnRpbWVkb3V0X2pvYikoc3RydWN0IGRybV9zY2hl ZF9qb2IgKnNjaGVkX2pvYik7CiAKLQkvKiBDYWxsZWQgb25jZSB0aGUgam9iJ3MgZmluaXNoZWQg ZmVuY2UgaGFzIGJlZW4gc2lnbmFsZWQgYW5kCi0JICogaXQncyB0aW1lIHRvIGNsZWFuIGl0IHVw LgorCS8qKgorICAgICAgICAgKiBAZnJlZV9qb2I6IENhbGxlZCBvbmNlIHRoZSBqb2IncyBmaW5p c2hlZCBmZW5jZSBoYXMgYmVlbiBzaWduYWxlZAorICAgICAgICAgKiBhbmQgaXQncyB0aW1lIHRv IGNsZWFuIGl0IHVwLgogCSAqLwogCXZvaWQgKCpmcmVlX2pvYikoc3RydWN0IGRybV9zY2hlZF9q b2IgKnNjaGVkX2pvYik7CiB9OwogCiAvKioKLSAqIE9uZSBzY2hlZHVsZXIgaXMgaW1wbGVtZW50 ZWQgZm9yIGVhY2ggaGFyZHdhcmUgcmluZwotKi8KKyAqIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxl cgorICoKKyAqIEBvcHM6IGJhY2tlbmQgb3BlcmF0aW9ucyBwcm92aWRlZCBieSB0aGUgZHJpdmVy LgorICogQGh3X3N1Ym1pc3Npb25fbGltaXQ6IHRoZSBtYXggc2l6ZSBvZiB0aGUgaGFyZHdhcmUg cXVldWUuCisgKiBAdGltZW91dDogdGhlIHRpbWUgYWZ0ZXIgd2hpY2ggYSBqb2IgaXMgcmVtb3Zl ZCBmcm9tIHRoZSBzY2hlZHVsZXIuCisgKiBAbmFtZTogbmFtZSBvZiB0aGUgcmluZyBmb3Igd2hp Y2ggdGhpcyBzY2hlZHVsZXIgaXMgYmVpbmcgdXNlZC4KKyAqIEBzY2hlZF9ycTogcHJpb3JpdHkg d2lzZSBhcnJheSBvZiBydW4gcXVldWVzLgorICogQHdha2VfdXBfd29ya2VyOiB0aGUgd2FpdCBx dWV1ZSBvbiB3aGljaCB0aGUgc2NoZWR1bGVyIHNsZWVwcyB1bnRpbCBhIGpvYgorICogICAgICAg ICAgICAgICAgICBpcyByZWFkeSB0byBiZSBzY2hlZHVsZWQuCisgKiBAam9iX3NjaGVkdWxlZDog b25jZSBAZHJtX3NjaGVkX2VudGl0eV9kb19yZWxlYXNlIGlzIGNhbGxlZCB0aGUgc2NoZWR1bGVy CisgKiAgICAgICAgICAgICAgICAgd2FpdHMgb24gdGhpcyB3YWl0IHF1ZXVlIHVudGlsIGFsbCB0 aGUgc2NoZWR1bGVkIGpvYnMgYXJlCisgKiAgICAgICAgICAgICAgICAgZmluaXNoZWQuCisgKiBA aHdfcnFfY291bnQ6IHRoZSBudW1iZXIgb2Ygam9icyBjdXJyZW50bHkgaW4gdGhlIGhhcmR3YXJl IHF1ZXVlLgorICogQGpvYl9pZF9jb3VudDogdXNlZCB0byBhc3NpZ24gdW5pcXVlIGlkIHRvIHRo ZSBlYWNoIGpvYi4KKyAqIEB0aHJlYWQ6IHRoZSBrdGhyZWFkIG9uIHdoaWNoIHRoZSBzY2hlZHVs ZXIgd2hpY2ggcnVuLgorICogQHJpbmdfbWlycm9yX2xpc3Q6IHRoZSBsaXN0IG9mIGpvYnMgd2hp Y2ggYXJlIGN1cnJlbnRseSBpbiB0aGUgam9iIHF1ZXVlLgorICogQGpvYl9saXN0X2xvY2s6IGxv Y2sgdG8gcHJvdGVjdCB0aGUgcmluZ19taXJyb3JfbGlzdC4KKyAqIEBoYW5nX2xpbWl0OiBvbmNl IHRoZSBoYW5ncyBieSBhIGpvYiBjcm9zc2VzIHRoaXMgbGltaXQgdGhlbiBpdCBpcyBtYXJrZWQK KyAqICAgICAgICAgICAgICBndWlsdHkgYW5kIGl0IHdpbGwgYmUgY29uc2lkZXJlZCBmb3Igc2No ZWR1bGluZyBmdXJ0aGVyLgorICoKKyAqIE9uZSBzY2hlZHVsZXIgaXMgaW1wbGVtZW50ZWQgZm9y IGVhY2ggaGFyZHdhcmUgcmluZy4KKyAqLwogc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyIHsKIAlj b25zdCBzdHJ1Y3QgZHJtX3NjaGVkX2JhY2tlbmRfb3BzCSpvcHM7CiAJdWludDMyX3QJCQlod19z dWJtaXNzaW9uX2xpbWl0OwotLSAKMi4xNC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK