From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH 3/5] drm/i915/skl: Update DDB values atomically with wms/plane attrs Date: Wed, 26 Oct 2016 15:36:35 -0400 Message-ID: <1477510599-14843-4-git-send-email-lyude@redhat.com> References: <1477510599-14843-1-git-send-email-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1477510599-14843-1-git-send-email-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: stable@vger.kernel.org Cc: Lyude , David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, Hans de Goede , dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org Y29tbWl0IDI3MDgyNDkzZTljNjM3MWIwNTM3MGE2MTlhYjlkMjg3N2M1ZjQ3MjYgdXBzdHJlYW0K Ck5vdyB0aGF0IHdlIGNhbiBob29rIGludG8gdXBkYXRlX2NydGNzIGFuZCBjb250cm9sIHRoZSBv cmRlciBpbiB3aGljaCB3ZQp1cGRhdGUgQ1JUQ3MgYXQgZWFjaCBtb2Rlc2V0LCB3ZSBjYW4gZmlu aXNoIHRoZSBmaW5hbCBzdGVwIG9mIGZpeGluZwpTa3lsYWtlJ3Mgd2F0ZXJtYXJrIGhhbmRsaW5n IGJ5IHBlcmZvcm1pbmcgRERCIHVwZGF0ZXMgYXQgdGhlIHNhbWUgdGltZQphcyBwbGFuZSB1cGRh dGVzIGFuZCB3YXRlcm1hcmsgdXBkYXRlcy4KClRoZSBmaXJzdCBtYWpvciBjaGFuZ2UgaW4gdGhp cyBwYXRjaCBpcyBza2xfdXBkYXRlX2NydGNzKCksIHdoaWNoCmhhbmRsZXMgZW5zdXJpbmcgdGhh dCB3ZSBvcmRlciBlYWNoIENSVEMgdXBkYXRlIGluIG91ciBhdG9taWMgY29tbWl0cwpwcm9wZXJs eSBzbyB0aGF0IHRoZXkgaG9ub3IgdGhlIEREQiBmbHVzaCBvcmRlci4KClRoZSBzZWNvbmQgbWFq b3IgY2hhbmdlIGluIHRoaXMgcGF0Y2ggaXMgdGhlIG9yZGVyIGluIHdoaWNoIHdlIGZsdXNoIHRo ZQpwaXBlcy4gV2hpbGUgdGhlIHByZXZpb3VzIG9yZGVyIG1heSBoYXZlIHdvcmtlZCwgaXQgY2Fu J3QgYmUgdXNlZCBpbgp0aGlzIGFwcHJvYWNoIHNpbmNlIGl0IG5vIGxvbmdlciB3aWxsIGRvIHRo ZSByaWdodCB0aGluZy4gRm9yIGV4YW1wbGUsCnVzaW5nIHRoZSBvbGQgZGRiIGZsdXNoIG9yZGVy OgoKV2UgaGF2ZSBwaXBlcyBBLCBCLCBhbmQgQyBlbmFibGVkLCBhbmQgd2UncmUgZGlzYWJsaW5n IEMuIEluaXRpYWwgZGRiCmFsbG9jYXRpb24gbG9va3MgbGlrZSB0aGlzOgoKfCAgIEEgICB8ICAg QiAgIHx4eHh4eHh4fAoKU2luY2Ugd2UncmUgcGVyZm9ybWluZyB0aGUgZGRiIHVwZGF0ZXMgYWZ0 ZXIgcGVyZm9ybWluZyBhbnkgQ1JUQwpkaXNhYmxlbWVudHMgaW4gaW50ZWxfYXRvbWljX2NvbW1p dF90YWlsKCksIHRoZSBzcGFjZSB0byB0aGUgcmlnaHQgb2YKcGlwZSBCIGlzIHVuYWxsb2NhdGVk LgoKMS4gRmx1c2ggcGlwZXMgd2l0aCBuZXcgYWxsb2NhdGlvbiBjb250YWluZWQgaW50byBvbGQg c3BhY2UuIE5vbmUKICAgYXBwbHksIHNvIHdlIHNraXAgdGhpcwoyLiBGbHVzaCBwaXBlcyBoYXZp bmcgdGhlaXIgYWxsb2NhdGlvbiByZWR1Y2VkLCBidXQgb3ZlcmxhcHBpbmcgd2l0aCBhCiAgIHBy ZXZpb3VzIGFsbG9jYXRpb24uIE5vbmUgYXBwbHksIHNvIHdlIGFsc28gc2tpcCB0aGlzCjMuIEZs dXNoIHBpcGVzIHRoYXQgZ290IG1vcmUgc3BhY2UgYWxsb2NhdGVkLiBUaGlzIGFwcGxpZXMgdG8g QSBhbmQgQiwKICAgZ2l2aW5nIHVzIHRoZSBmb2xsb3dpbmcgdXBkYXRlIG9yZGVyOiBBLCBCCgpU aGlzIGlzIHdyb25nLCBzaW5jZSB1cGRhdGluZyBwaXBlIEEgZmlyc3Qgd2lsbCBjYXVzZSBpdCB0 byBvdmVybGFwIHdpdGgKQiBhbmQgcG90ZW50aWFsbHkgYnVyc3QgaW50byBmbGFtZXMuIE91ciBu ZXcgb3JkZXIgKHNlZSB0aGUgY29kZQpjb21tZW50cyBmb3IgZGV0YWlscykgd291bGQgdXBkYXRl IHRoZSBwaXBlcyBpbiB0aGUgcHJvcGVyIG9yZGVyOiBCLCBBLgoKQXMgd2VsbCwgd2UgY2FsY3Vs YXRlIHRoZSBvcmRlciBmb3IgZWFjaCBEREIgdXBkYXRlIGR1cmluZyB0aGUgY2hlY2sKcGhhc2Us IGFuZCByZWZlcmVuY2UgaXQgbGF0ZXIgaW4gdGhlIGNvbW1pdCBwaGFzZSB3aGVuIHdlIGhpdApz a2xfdXBkYXRlX2NydGNzKCkuCgpUaGlzIGxvbmcgb3ZlcmR1ZSBwYXRjaCBmaXhlcyB0aGUgcmVz dCBvZiB0aGUgdW5kZXJydW5zIG9uIFNreWxha2UuCgpDaGFuZ2VzIHNpbmNlIHYxOgogLSBBZGQg c2tsX2RkYl9lbnRyeV93cml0ZSgpIGZvciBjdXJzb3IgaW50byBza2xfd3JpdGVfY3Vyc29yX3dt KCkKQ2hhbmdlcyBzaW5jZSB2MjoKIC0gVXNlIHRoZSBtZXRob2QgZm9yIHVwZGF0aW5nIENSVENz IHRoYXQgVmlsbGUgc3VnZ2VzdGVkCiAtIEluIHNrbF91cGRhdGVfd20oKSwgb25seSBjb3B5IHRo ZSB3YXRlcm1hcmtzIGZvciB0aGUgY3J0YyB0aGF0IHdhcwogICBwYXNzZWQgdG8gdXMKQ2hhbmdl cyBzaW5jZSB2MzoKIC0gU21hbGwgY29tbWVudCBmaXggaW4gc2tsX2RkYl9hbGxvY2F0aW9uX292 ZXJsYXBzKCkKQ2hhbmdlcyBzaW5jZSB2NDoKIC0gUmVtb3ZlIHRoZSBzZWNvbmQgbG9vcCBpbiBp bnRlbF91cGRhdGVfY3J0Y3MoKSBhbmQgdXNlIFZpbGxlJ3MKICAgc3VnZ2VzdGlvbiBmb3IgdXBk YXRpbmcgdGhlIGRkYiBhbGxvY2F0aW9ucyBpbiB0aGUgcmlnaHQgb3JkZXIKIC0gR2V0IHJpZCBv ZiB0aGUgc2Vjb25kIGxvb3AgYW5kIGp1c3QgdXNlIHRoZSBkZGIgc3RhdGUgYXMgaXQgdXBkYXRl cwogICB0byBkZXRlcm1pbmUgd2hhdCBvcmRlciB0byB1cGRhdGUgZXZlcnl0aGluZyBpbiAodGhh bmtzIGZvciB0aGUKICAgc3VnZ2VzdGlvbiBWaWxsZSkKIC0gU2ltcGxpZnkgc2tsX2RkYl9hbGxv Y2F0aW9uX292ZXJsYXBzKCkKIC0gU3BsaXQgYWN0dWFsIG92ZXJsYXAgY2hlY2tpbmcgaW50byBp dCdzIG93biBoZWxwZXIKCkZpeGVzOiAwZThmYjdiYTdjYTUgKCJkcm0vaTkxNS9za2w6IEZsdXNo IHRoZSBXTSBjb25maWd1cmF0aW9uIikKRml4ZXM6IDgyMTFiZDViZGY1ZSAoImRybS9pOTE1L3Nr bDogUHJvZ3JhbSB0aGUgRERCIGFsbG9jYXRpb24iKQpbb21pdHRpbmcgQ0MgZm9yIHN0YWJsZSwg c2luY2UgdGhpcyBwYXRjaCB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBmb3IKc3VjaCBiYWNrcG9y dHMgZmlyc3RdCgpUZXN0Y2FzZToga21zX2N1cnNvcl9sZWdhY3kKVGVzdGNhc2U6IHBsYW5lLWFs bC1tb2Rlc2V0LXRyYW5zaXRpb24KU2lnbmVkLW9mZi1ieTogTHl1ZGUgPGx5dWRlQHJlZGhhdC5j b20+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpD YzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+CkNjOiBSYWRoYWtyaXNo bmEgU3JpcGFkYSA8cmFkaGFrcmlzaG5hLnNyaXBhZGFAaW50ZWwuY29tPgpDYzogSGFucyBkZSBH b2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KQ2M6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3Bl ckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxh bmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ckxpbms6IGh0dHA6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0 b3Aub3JnL3BhdGNoL21zZ2lkLzE0NzE5NjE1NjUtMjg1NDAtMi1naXQtc2VuZC1lbWFpbC1jcGF1 bEByZWRoYXQuY29tCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg IDkzICsrKysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAg ICB8ICAgNyArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgMjAwICsr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEzMiBp bnNlcnRpb25zKCspLCAxNjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCmluZGV4IGUyYzQ2ZWIuLjgwODZlNjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKQEAgLTEyOTY3LDE2ICsxMjk2NywyMyBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21f c3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJICBod19lbnRyeS0+c3RhcnQsIGh3X2Vu dHJ5LT5lbmQpOwogCX0KIAotCS8qIGN1cnNvciAqLwotCWh3X2VudHJ5ID0gJmh3X2RkYi5wbGFu ZVtwaXBlXVtQTEFORV9DVVJTT1JdOwotCXN3X2VudHJ5ID0gJnN3X2RkYi0+cGxhbmVbcGlwZV1b UExBTkVfQ1VSU09SXTsKLQotCWlmICghc2tsX2RkYl9lbnRyeV9lcXVhbChod19lbnRyeSwgc3df ZW50cnkpKSB7Ci0JCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gRERCIHN0YXRlIHBpcGUgJWMgY3Vy c29yICIKLQkJCSAgIihleHBlY3RlZCAoJXUsJXUpLCBmb3VuZCAoJXUsJXUpKVxuIiwKLQkJCSAg cGlwZV9uYW1lKHBpcGUpLAotCQkJICBzd19lbnRyeS0+c3RhcnQsIHN3X2VudHJ5LT5lbmQsCi0J CQkgIGh3X2VudHJ5LT5zdGFydCwgaHdfZW50cnktPmVuZCk7CisJLyoKKwkgKiBjdXJzb3IKKwkg KiBJZiB0aGUgY3Vyc29yIHBsYW5lIGlzbid0IGFjdGl2ZSwgd2UgbWF5IG5vdCBoYXZlIHVwZGF0 ZWQgaXQncyBkZGIKKwkgKiBhbGxvY2F0aW9uLiBJbiB0aGF0IGNhc2Ugc2luY2UgdGhlIGRkYiBh bGxvY2F0aW9uIHdpbGwgYmUgdXBkYXRlZAorCSAqIG9uY2UgdGhlIHBsYW5lIGJlY29tZXMgdmlz aWJsZSwgd2UgY2FuIHNraXAgdGhpcyBjaGVjaworCSAqLworCWlmIChpbnRlbF9jcnRjLT5jdXJz b3JfYWRkcikgeworCQlod19lbnRyeSA9ICZod19kZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VSU09S XTsKKwkJc3dfZW50cnkgPSAmc3dfZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdOworCisJ CWlmICghc2tsX2RkYl9lbnRyeV9lcXVhbChod19lbnRyeSwgc3dfZW50cnkpKSB7CisJCQlEUk1f RVJST1IoIm1pc21hdGNoIGluIEREQiBzdGF0ZSBwaXBlICVjIGN1cnNvciAiCisJCQkJICAiKGV4 cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAorCQkJCSAgcGlwZV9uYW1lKHBpcGUp LAorCQkJCSAgc3dfZW50cnktPnN0YXJ0LCBzd19lbnRyeS0+ZW5kLAorCQkJCSAgaHdfZW50cnkt PnN0YXJ0LCBod19lbnRyeS0+ZW5kKTsKKwkJfQogCX0KIH0KIApAQCAtMTM3MjgsNiArMTM3MzUs NjUgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGNzKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSwKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIHNrbF91cGRhdGVfY3J0Y3Moc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJICAgICB1bnNpZ25lZCBpbnQgKmNydGNfdmJs YW5rX21hc2spCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0 YXRlKTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpuZXdfZGRiID0gJmlu dGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpj dXJfZGRiID0gJmRldl9wcml2LT53bS5za2xfaHcuZGRiOworCXVuc2lnbmVkIGludCB1cGRhdGVk ID0gMDsKKwlib29sIHByb2dyZXNzOworCWVudW0gcGlwZSBwaXBlOworCisJLyoKKwkgKiBXaGVu ZXZlciB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBwaXBlcyBjaGFuZ2VzLCB3ZSBuZWVkIHRvIG1ha2Ug c3VyZSB3ZQorCSAqIHVwZGF0ZSB0aGUgcGlwZXMgaW4gdGhlIHJpZ2h0IG9yZGVyIHNvIHRoYXQg dGhlaXIgZGRiIGFsbG9jYXRpb25zCisJICogbmV2ZXIgb3ZlcmxhcCB3aXRoIGVhY2hvdGhlciBp bmJldHdlZW4gQ1JUQyB1cGRhdGVzLiBPdGhlcndpc2Ugd2UnbGwKKwkgKiBjYXVzZSBwaXBlIHVu ZGVycnVucyBhbmQgb3RoZXIgYmFkIHN0dWZmLgorCSAqLworCWRvIHsKKwkJaW50IGk7CisJCXBy b2dyZXNzID0gZmFsc2U7CisKKwkJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg b2xkX2NydGNfc3RhdGUsIGkpIHsKKwkJCWJvb2wgdmJsX3dhaXQgPSBmYWxzZTsKKwkJCXVuc2ln bmVkIGludCBjbWFzayA9IGRybV9jcnRjX21hc2soY3J0Yyk7CisJCQlwaXBlID0gdG9faW50ZWxf Y3J0YyhjcnRjKS0+cGlwZTsKKworCQkJaWYgKHVwZGF0ZWQgJiBjbWFzayB8fCAhY3J0Yy0+c3Rh dGUtPmFjdGl2ZSkKKwkJCQljb250aW51ZTsKKwkJCWlmIChza2xfZGRiX2FsbG9jYXRpb25fb3Zl cmxhcHMoc3RhdGUsIGN1cl9kZGIsIG5ld19kZGIsCisJCQkJCQkJcGlwZSkpCisJCQkJY29udGlu dWU7CisKKwkJCXVwZGF0ZWQgfD0gY21hc2s7CisKKwkJCS8qCisJCQkgKiBJZiB0aGlzIGlzIGFu IGFscmVhZHkgYWN0aXZlIHBpcGUsIGl0J3MgRERCIGNoYW5nZWQsCisJCQkgKiBhbmQgdGhpcyBp c24ndCB0aGUgbGFzdCBwaXBlIHRoYXQgbmVlZHMgdXBkYXRpbmcKKwkJCSAqIHRoZW4gd2UgbmVl ZCB0byB3YWl0IGZvciBhIHZibGFuayB0byBwYXNzIGZvciB0aGUKKwkJCSAqIG5ldyBkZGIgYWxs b2NhdGlvbiB0byB0YWtlIGVmZmVjdC4KKwkJCSAqLworCQkJaWYgKCFza2xfZGRiX2FsbG9jYXRp b25fZXF1YWxzKGN1cl9kZGIsIG5ld19kZGIsIHBpcGUpICYmCisJCQkgICAgIWNydGMtPnN0YXRl LT5hY3RpdmVfY2hhbmdlZCAmJgorCQkJICAgIGludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRpcnR5 X3BpcGVzICE9IHVwZGF0ZWQpCisJCQkJdmJsX3dhaXQgPSB0cnVlOworCisJCQlpbnRlbF91cGRh dGVfY3J0YyhjcnRjLCBzdGF0ZSwgb2xkX2NydGNfc3RhdGUsCisJCQkJCSAgY3J0Y192Ymxhbmtf bWFzayk7CisKKwkJCWlmICh2Ymxfd2FpdCkKKwkJCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2 LCBwaXBlKTsKKworCQkJcHJvZ3Jlc3MgPSB0cnVlOworCQl9CisJfSB3aGlsZSAocHJvZ3Jlc3Mp OworfQorCiBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ ZGV2OwpAQCAtMTUzMDMsOCArMTUzNjksNiBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29r cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRldl9wcml2LT5kaXNwbGF5 LmNydGNfZGlzYWJsZSA9IGk5eHhfY3J0Y19kaXNhYmxlOwogCX0KIAotCWRldl9wcml2LT5kaXNw bGF5LnVwZGF0ZV9jcnRjcyA9IGludGVsX3VwZGF0ZV9jcnRjczsKLQogCS8qIFJldHVybnMgdGhl IGNvcmUgZGlzcGxheSBjbG9jayBzcGVlZCAqLwogCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8 fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5 X2Nsb2NrX3NwZWVkID0KQEAgLTE1Mzk0LDYgKzE1NDU4LDExIEBAIHZvaWQgaW50ZWxfaW5pdF9k aXNwbGF5X2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCXNrbF9t b2Rlc2V0X2NhbGNfY2RjbGs7CiAJfQogCisJaWYgKGRldl9wcml2LT5pbmZvLmdlbiA+PSA5KQor CQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfY3J0Y3MgPSBza2xfdXBkYXRlX2NydGNzOworCWVs c2UKKwkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX2NydGNzID0gaW50ZWxfdXBkYXRlX2NydGNz OworCiAJc3dpdGNoIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuKSB7CiAJY2FzZSAyOgogCQlk ZXZfcHJpdi0+ZGlzcGxheS5xdWV1ZV9mbGlwID0gaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCA1OGE4MTUyLi44MzY3NGM2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaApAQCAtMTcxOSw2ICsxNzE5LDEzIEBAIHZvaWQgc2tsX2RkYl9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogYm9vbCBza2xfY2FuX2Vu YWJsZV9zYWd2KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CiBpbnQgc2tsX2VuYWJs ZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBpbnQgc2tsX2Rpc2Fi bGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworYm9vbCBza2xfZGRi X2FsbG9jYXRpb25fZXF1YWxzKGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm9sZCwK KwkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpuZXcsCisJCQkgICAg ICAgZW51bSBwaXBlIHBpcGUpOworYm9vbCBza2xfZGRiX2FsbG9jYXRpb25fb3ZlcmxhcHMoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCSBjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9h bGxvY2F0aW9uICpvbGQsCisJCQkJIGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5l dywKKwkJCQkgZW51bSBwaXBlIHBpcGUpOwogdm9pZCBza2xfd3JpdGVfY3Vyc29yX3dtKHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fdmFsdWVz ICp3bSk7CiB2b2lkIHNrbF93cml0ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDI5YmVkNzcuLmEwYzVjNGUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzg0Myw2ICszODQzLDExIEBAIHZvaWQgc2tsX3dyaXRl X3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJICAgd20tPnBsYW5l W3BpcGVdW3BsYW5lXVtsZXZlbF0pOwogCX0KIAlJOTE1X1dSSVRFKFBMQU5FX1dNX1RSQU5TKHBp cGUsIHBsYW5lKSwgd20tPnBsYW5lX3RyYW5zW3BpcGVdW3BsYW5lXSk7CisKKwlza2xfZGRiX2Vu dHJ5X3dyaXRlKGRldl9wcml2LCBQTEFORV9CVUZfQ0ZHKHBpcGUsIHBsYW5lKSwKKwkJCSAgICAm d20tPmRkYi5wbGFuZVtwaXBlXVtwbGFuZV0pOworCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3By aXYsIFBMQU5FX05WMTJfQlVGX0NGRyhwaXBlLCBwbGFuZSksCisJCQkgICAgJndtLT5kZGIueV9w bGFuZVtwaXBlXVtwbGFuZV0pOwogfQogCiB2b2lkIHNrbF93cml0ZV9jdXJzb3Jfd20oc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMsCkBAIC0zODU5LDE3MCArMzg2NCw0NiBAQCB2b2lkIHNr bF93cml0ZV9jdXJzb3Jfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJCQkgICB3 bS0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXVtsZXZlbF0pOwogCX0KIAlJOTE1X1dSSVRFKENV Ul9XTV9UUkFOUyhwaXBlKSwgd20tPnBsYW5lX3RyYW5zW3BpcGVdW1BMQU5FX0NVUlNPUl0pOwot fQotCi1zdGF0aWMgdm9pZCBza2xfd3JpdGVfd21fdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKLQkJCQljb25zdCBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqbmV3KQotewot CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKLQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YzsKLQotCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Ci0JCWludCBp OwotCQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Ci0KLQkJaWYgKChuZXctPmRpcnR5X3Bp cGVzICYgZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSkpID09IDApCi0JCQljb250aW51ZTsKLQkJ aWYgKCFjcnRjLT5hY3RpdmUpCi0JCQljb250aW51ZTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgaW50 ZWxfbnVtX3BsYW5lcyhjcnRjKTsgaSsrKSB7Ci0JCQlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9w cml2LAotCQkJCQkgICAgUExBTkVfQlVGX0NGRyhwaXBlLCBpKSwKLQkJCQkJICAgICZuZXctPmRk Yi5wbGFuZVtwaXBlXVtpXSk7Ci0JCQlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LAotCQkJ CQkgICAgUExBTkVfTlYxMl9CVUZfQ0ZHKHBpcGUsIGkpLAotCQkJCQkgICAgJm5ldy0+ZGRiLnlf cGxhbmVbcGlwZV1baV0pOwotCQl9CiAKLQkJc2tsX2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwg Q1VSX0JVRl9DRkcocGlwZSksCi0JCQkJICAgICZuZXctPmRkYi5wbGFuZVtwaXBlXVtQTEFORV9D VVJTT1JdKTsKLQl9CisJc2tsX2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwgQ1VSX0JVRl9DRkco cGlwZSksCisJCQkgICAgJndtLT5kZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXSk7CiB9CiAK LS8qCi0gKiBXaGVuIHNldHRpbmcgdXAgYSBuZXcgRERCIGFsbG9jYXRpb24gYXJyYW5nZW1lbnQs IHdlIG5lZWQgdG8gY29ycmVjdGx5Ci0gKiBzZXF1ZW5jZSB0aGUgdGltZXMgYXQgd2hpY2ggdGhl IG5ldyBhbGxvY2F0aW9ucyBmb3IgdGhlIHBpcGVzIGFyZSB0YWtlbiBpbnRvCi0gKiBhY2NvdW50 IG9yIHdlJ2xsIGhhdmUgcGlwZXMgZmV0Y2hpbmcgZnJvbSBzcGFjZSBwcmV2aW91c2x5IGFsbG9j YXRlZCB0bwotICogYW5vdGhlciBwaXBlLgotICoKLSAqIFJvdWdobHkgdGhlIHNlcXVlbmNlIGxv b2tzIGxpa2U6Ci0gKiAgMS4gcmUtYWxsb2NhdGUgdGhlIHBpcGUocykgd2l0aCB0aGUgYWxsb2Nh dGlvbiBiZWluZyByZWR1Y2VkIGFuZCBub3QKLSAqICAgICBvdmVybGFwcGluZyB3aXRoIGEgcHJl dmlvdXMgbGlnaHQtdXAgcGlwZSAoYW5vdGhlciB3YXkgdG8gcHV0IGl0IGlzOgotICogICAgIHBp cGVzIHdpdGggdGhlaXIgbmV3IGFsbG9jYXRpb24gc3RyaWNrbHkgaW5jbHVkZWQgaW50byB0aGVp ciBvbGQgb25lcykuCi0gKiAgMi4gcmUtYWxsb2NhdGUgdGhlIG90aGVyIHBpcGVzIHRoYXQgZ2V0 IHRoZWlyIGFsbG9jYXRpb24gcmVkdWNlZAotICogIDMuIGFsbG9jYXRlIHRoZSBwaXBlcyBoYXZp bmcgdGhlaXIgYWxsb2NhdGlvbiBpbmNyZWFzZWQKLSAqCi0gKiBTdGVwcyAxLiBhbmQgMi4gYXJl IGhlcmUgdG8gdGFrZSBjYXJlIG9mIHRoZSBmb2xsb3dpbmcgY2FzZToKLSAqIC0gSW5pdGlhbGx5 IEREQiBsb29rcyBsaWtlIHRoaXM6Ci0gKiAgICAgfCAgIEIgICAgfCAgIEMgICAgfAotICogLSBl bmFibGUgcGlwZSBBLgotICogLSBwaXBlIEIgaGFzIGEgcmVkdWNlZCBEREIgYWxsb2NhdGlvbiB0 aGF0IG92ZXJsYXBzIHdpdGggdGhlIG9sZCBwaXBlIEMKLSAqICAgYWxsb2NhdGlvbgotICogICAg IHwgIEEgIHwgIEIgIHwgIEMgIHwKLSAqCi0gKiBXZSBuZWVkIHRvIHNlcXVlbmNlIHRoZSByZS1h bGxvY2F0aW9uOiBDLCBCLCBBIChhbmQgbm90IEIsIEMsIEEpLgotICovCi0KLXN0YXRpYyB2b2lk Ci1za2xfd21fZmx1c2hfcGlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gcGlwZSBwaXBlLCBpbnQgcGFzcykKK2Jvb2wgc2tsX2RkYl9hbGxvY2F0aW9uX2VxdWFscyhj b25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpvbGQsCisJCQkgICAgICAgY29uc3Qgc3Ry dWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqbmV3LAorCQkJICAgICAgIGVudW0gcGlwZSBwaXBlKQog ewotCWludCBwbGFuZTsKLQotCURSTV9ERUJVR19LTVMoImZsdXNoIHBpcGUgJWMgKHBhc3MgJWQp XG4iLCBwaXBlX25hbWUocGlwZSksIHBhc3MpOwotCi0JZm9yX2VhY2hfcGxhbmUoZGV2X3ByaXYs IHBpcGUsIHBsYW5lKSB7Ci0JCUk5MTVfV1JJVEUoUExBTkVfU1VSRihwaXBlLCBwbGFuZSksCi0J CQkgICBJOTE1X1JFQUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZSkpKTsKLQl9Ci0JSTkxNV9XUklU RShDVVJCQVNFKHBpcGUpLCBJOTE1X1JFQUQoQ1VSQkFTRShwaXBlKSkpOworCXJldHVybiBuZXct PnBpcGVbcGlwZV0uc3RhcnQgPT0gb2xkLT5waXBlW3BpcGVdLnN0YXJ0ICYmCisJICAgICAgIG5l dy0+cGlwZVtwaXBlXS5lbmQgPT0gb2xkLT5waXBlW3BpcGVdLmVuZDsKIH0KIAotc3RhdGljIGJv b2wKLXNrbF9kZGJfYWxsb2NhdGlvbl9pbmNsdWRlZChjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpvbGQsCi0JCQkgICAgY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqbmV3 LAotCQkJICAgIGVudW0gcGlwZSBwaXBlKQorc3RhdGljIGlubGluZSBib29sIHNrbF9kZGJfZW50 cmllc19vdmVybGFwKGNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICphLAorCQkJCQkgICBjb25z dCBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYikKIHsKLQl1aW50MTZfdCBvbGRfc2l6ZSwgbmV3X3Np emU7Ci0KLQlvbGRfc2l6ZSA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmb2xkLT5waXBlW3BpcGVdKTsK LQluZXdfc2l6ZSA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmbmV3LT5waXBlW3BpcGVdKTsKLQotCXJl dHVybiBvbGRfc2l6ZSAhPSBuZXdfc2l6ZSAmJgotCSAgICAgICBuZXctPnBpcGVbcGlwZV0uc3Rh cnQgPj0gb2xkLT5waXBlW3BpcGVdLnN0YXJ0ICYmCi0JICAgICAgIG5ldy0+cGlwZVtwaXBlXS5l bmQgPD0gb2xkLT5waXBlW3BpcGVdLmVuZDsKKwlyZXR1cm4gYS0+c3RhcnQgPCBiLT5lbmQgJiYg Yi0+c3RhcnQgPCBhLT5lbmQ7CiB9CiAKLXN0YXRpYyB2b2lkIHNrbF9mbHVzaF93bV92YWx1ZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCXN0cnVjdCBza2xfd21fdmFs dWVzICpuZXdfdmFsdWVzKQorYm9vbCBza2xfZGRiX2FsbG9jYXRpb25fb3ZlcmxhcHMoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCSBjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpvbGQsCisJCQkJIGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5ldywK KwkJCQkgZW51bSBwaXBlIHBpcGUpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZf cHJpdi0+ZHJtOwotCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmN1cl9kZGIsICpuZXdfZGRi OwotCWJvb2wgcmVhbGxvY2F0ZWRbSTkxNV9NQVhfUElQRVNdID0ge307Ci0Jc3RydWN0IGludGVs X2NydGMgKmNydGM7Ci0JZW51bSBwaXBlIHBpcGU7Ci0KLQluZXdfZGRiID0gJm5ld192YWx1ZXMt PmRkYjsKLQljdXJfZGRiID0gJmRldl9wcml2LT53bS5za2xfaHcuZGRiOwotCi0JLyoKLQkgKiBG aXJzdCBwYXNzOiBmbHVzaCB0aGUgcGlwZXMgd2l0aCB0aGUgbmV3IGFsbG9jYXRpb24gY29udGFp bmVkIGludG8KLQkgKiB0aGUgb2xkIHNwYWNlLgotCSAqCi0JICogV2UnbGwgd2FpdCBmb3IgdGhl IHZibGFuayBvbiB0aG9zZSBwaXBlcyB0byBlbnN1cmUgd2UgY2FuIHNhZmVseQotCSAqIHJlLWFs bG9jYXRlIHRoZSBmcmVlZCBzcGFjZSB3aXRob3V0IHRoaXMgcGlwZSBmZXRjaGluZyBmcm9tIGl0 LgotCSAqLwotCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Ci0JCWlmICghY3J0Yy0+ YWN0aXZlKQotCQkJY29udGludWU7Ci0KLQkJcGlwZSA9IGNydGMtPnBpcGU7Ci0KLQkJaWYgKCFz a2xfZGRiX2FsbG9jYXRpb25faW5jbHVkZWQoY3VyX2RkYiwgbmV3X2RkYiwgcGlwZSkpCi0JCQlj b250aW51ZTsKLQotCQlza2xfd21fZmx1c2hfcGlwZShkZXZfcHJpdiwgcGlwZSwgMSk7Ci0JCWlu dGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIHBpcGUpOwotCi0JCXJlYWxsb2NhdGVkW3BpcGVdID0g dHJ1ZTsKLQl9Ci0KLQotCS8qCi0JICogU2Vjb25kIHBhc3M6IGZsdXNoIHRoZSBwaXBlcyB0aGF0 IGFyZSBoYXZpbmcgdGhlaXIgYWxsb2NhdGlvbgotCSAqIHJlZHVjZWQsIGJ1dCBvdmVybGFwcGlu ZyB3aXRoIGEgcHJldmlvdXMgYWxsb2NhdGlvbi4KLQkgKgotCSAqIEhlcmUgYXMgd2VsbCB3ZSBu ZWVkIHRvIHdhaXQgZm9yIHRoZSB2YmxhbmsgdG8gbWFrZSBzdXJlIHRoZSBmcmVlZAotCSAqIHNw YWNlIGlzIG5vdCB1c2VkIGFueW1vcmUuCi0JICovCi0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYs IGNydGMpIHsKLQkJaWYgKCFjcnRjLT5hY3RpdmUpCi0JCQljb250aW51ZTsKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YzsKKwllbnVtIHBpcGUgb3RoZXJwOwogCi0JCXBpcGUgPSBjcnRjLT5waXBlOworCWZvcl9lYWNo X2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7CisJCW90aGVycCA9IGludGVsX2NydGMtPnBp cGU7CiAKLQkJaWYgKHJlYWxsb2NhdGVkW3BpcGVdKQorCQlpZiAob3RoZXJwID09IHBpcGUpCiAJ CQljb250aW51ZTsKIAotCQlpZiAoc2tsX2RkYl9lbnRyeV9zaXplKCZuZXdfZGRiLT5waXBlW3Bp cGVdKSA8Ci0JCSAgICBza2xfZGRiX2VudHJ5X3NpemUoJmN1cl9kZGItPnBpcGVbcGlwZV0pKSB7 Ci0JCQlza2xfd21fZmx1c2hfcGlwZShkZXZfcHJpdiwgcGlwZSwgMik7Ci0JCQlpbnRlbF93YWl0 X2Zvcl92YmxhbmsoZGV2LCBwaXBlKTsKLQkJCXJlYWxsb2NhdGVkW3BpcGVdID0gdHJ1ZTsKLQkJ fQorCQlpZiAoc2tsX2RkYl9lbnRyaWVzX292ZXJsYXAoJm5ldy0+cGlwZVtwaXBlXSwKKwkJCQkJ ICAgICZvbGQtPnBpcGVbb3RoZXJwXSkpCisJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKLQkvKgotCSAq IFRoaXJkIHBhc3M6IGZsdXNoIHRoZSBwaXBlcyB0aGF0IGdvdCBtb3JlIHNwYWNlIGFsbG9jYXRl ZC4KLQkgKgotCSAqIFdlIGRvbid0IG5lZWQgdG8gYWN0aXZlbHkgd2FpdCBmb3IgdGhlIHVwZGF0 ZSBoZXJlLCBuZXh0IHZibGFuawotCSAqIHdpbGwganVzdCBnZXQgbW9yZSBEREIgc3BhY2Ugd2l0 aCB0aGUgY29ycmVjdCBXTSB2YWx1ZXMuCi0JICovCi0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYs IGNydGMpIHsKLQkJaWYgKCFjcnRjLT5hY3RpdmUpCi0JCQljb250aW51ZTsKLQotCQlwaXBlID0g Y3J0Yy0+cGlwZTsKLQotCQkvKgotCQkgKiBBdCB0aGlzIHBvaW50LCBvbmx5IHRoZSBwaXBlcyBt b3JlIHNwYWNlIHRoYW4gYmVmb3JlIGFyZQotCQkgKiBsZWZ0IHRvIHJlLWFsbG9jYXRlLgotCQkg Ki8KLQkJaWYgKHJlYWxsb2NhdGVkW3BpcGVdKQotCQkJY29udGludWU7Ci0KLQkJc2tsX3dtX2Zs dXNoX3BpcGUoZGV2X3ByaXYsIHBpcGUsIDMpOwotCX0KKwlyZXR1cm4gZmFsc2U7CiB9CiAKIHN0 YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRl LApAQCAtNDIyNCw3ICs0MTA1LDcgQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJc3RydWN0IHNrbF93bV92YWx1ZXMgKmh3X3ZhbHMgPSAmZGV2X3By aXYtPndtLnNrbF9odzsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dt ID0gJmNzdGF0ZS0+d20uc2tsLm9wdGltYWw7Ci0JaW50IHBpcGU7CisJZW51bSBwaXBlIHBpcGUg PSBpbnRlbF9jcnRjLT5waXBlOwogCiAJaWYgKChyZXN1bHRzLT5kaXJ0eV9waXBlcyAmIGRybV9j cnRjX21hc2soY3J0YykpID09IDApCiAJCXJldHVybjsKQEAgLTQyMzMsMTUgKzQxMTQsMjIgQEAg c3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAKIAltdXRl eF9sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwogCi0Jc2tsX3dyaXRlX3dtX3ZhbHVlcyhk ZXZfcHJpdiwgcmVzdWx0cyk7Ci0Jc2tsX2ZsdXNoX3dtX3ZhbHVlcyhkZXZfcHJpdiwgcmVzdWx0 cyk7Ci0KIAkvKgotCSAqIFN0b3JlIHRoZSBuZXcgY29uZmlndXJhdGlvbiAoYnV0IG9ubHkgZm9y IHRoZSBwaXBlcyB0aGF0IGhhdmUKLQkgKiBjaGFuZ2VkOyB0aGUgb3RoZXIgdmFsdWVzIHdlcmVu J3QgcmVjb21wdXRlZCkuCisJICogSWYgdGhpcyBwaXBlIGlzbid0IGFjdGl2ZSBhbHJlYWR5LCB3 ZSdyZSBnb2luZyB0byBiZSBlbmFibGluZyBpdAorCSAqIHZlcnkgc29vbi4gU2luY2UgaXQncyBz YWZlIHRvIHVwZGF0ZSBhIHBpcGUncyBkZGIgYWxsb2NhdGlvbiB3aGlsZQorCSAqIHRoZSBwaXBl J3Mgc2h1dCBvZmYsIGp1c3QgZG8gc28gaGVyZS4gQWxyZWFkeSBhY3RpdmUgcGlwZXMgd2lsbCBo YXZlCisJICogdGhlaXIgd2F0ZXJtYXJrcyB1cGRhdGVkIG9uY2Ugd2UgdXBkYXRlIHRoZWlyIHBs YW5lcy4KIAkgKi8KLQlmb3JfZWFjaF9waXBlX21hc2tlZChkZXZfcHJpdiwgcGlwZSwgcmVzdWx0 cy0+ZGlydHlfcGlwZXMpCi0JCXNrbF9jb3B5X3dtX2Zvcl9waXBlKGh3X3ZhbHMsIHJlc3VsdHMs IHBpcGUpOworCWlmIChjcnRjLT5zdGF0ZS0+YWN0aXZlX2NoYW5nZWQpIHsKKwkJaW50IHBsYW5l OworCisJCWZvciAocGxhbmUgPSAwOyBwbGFuZSA8IGludGVsX251bV9wbGFuZXMoaW50ZWxfY3J0 Yyk7IHBsYW5lKyspCisJCQlza2xfd3JpdGVfcGxhbmVfd20oaW50ZWxfY3J0YywgcmVzdWx0cywg cGxhbmUpOworCisJCXNrbF93cml0ZV9jdXJzb3Jfd20oaW50ZWxfY3J0YywgcmVzdWx0cyk7CisJ fQorCisJc2tsX2NvcHlfd21fZm9yX3BpcGUoaHdfdmFscywgcmVzdWx0cywgcGlwZSk7CiAKIAlt dXRleF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7CiB9Ci0tIAoyLjcuNAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==