From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [RESEND PATCH v13 7/7] drm/i915/skl: Update DDB values atomically with wms/plane attrs Date: Tue, 23 Aug 2016 10:12:45 -0400 Message-ID: <1471961565-28540-2-git-send-email-cpaul@redhat.com> References: <1a236eb1-0237-0fb5-1525-3e6c1546cdd0@linux.intel.com> <1471961565-28540-1-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1471961565-28540-1-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst Cc: Radhakrishna Sripada , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, Hans de Goede , dri-devel@lists.freedesktop.org, Daniel Vetter , Lyude List-Id: dri-devel@lists.freedesktop.org Tm93IHRoYXQgd2UgY2FuIGhvb2sgaW50byB1cGRhdGVfY3J0Y3MgYW5kIGNvbnRyb2wgdGhlIG9y ZGVyIGluIHdoaWNoIHdlCnVwZGF0ZSBDUlRDcyBhdCBlYWNoIG1vZGVzZXQsIHdlIGNhbiBmaW5p c2ggdGhlIGZpbmFsIHN0ZXAgb2YgZml4aW5nClNreWxha2UncyB3YXRlcm1hcmsgaGFuZGxpbmcg YnkgcGVyZm9ybWluZyBEREIgdXBkYXRlcyBhdCB0aGUgc2FtZSB0aW1lCmFzIHBsYW5lIHVwZGF0 ZXMgYW5kIHdhdGVybWFyayB1cGRhdGVzLgoKVGhlIGZpcnN0IG1ham9yIGNoYW5nZSBpbiB0aGlz IHBhdGNoIGlzIHNrbF91cGRhdGVfY3J0Y3MoKSwgd2hpY2gKaGFuZGxlcyBlbnN1cmluZyB0aGF0 IHdlIG9yZGVyIGVhY2ggQ1JUQyB1cGRhdGUgaW4gb3VyIGF0b21pYyBjb21taXRzCnByb3Blcmx5 IHNvIHRoYXQgdGhleSBob25vciB0aGUgRERCIGZsdXNoIG9yZGVyLgoKVGhlIHNlY29uZCBtYWpv ciBjaGFuZ2UgaW4gdGhpcyBwYXRjaCBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggd2UgZmx1c2ggdGhl CnBpcGVzLiBXaGlsZSB0aGUgcHJldmlvdXMgb3JkZXIgbWF5IGhhdmUgd29ya2VkLCBpdCBjYW4n dCBiZSB1c2VkIGluCnRoaXMgYXBwcm9hY2ggc2luY2UgaXQgbm8gbG9uZ2VyIHdpbGwgZG8gdGhl IHJpZ2h0IHRoaW5nLiBGb3IgZXhhbXBsZSwKdXNpbmcgdGhlIG9sZCBkZGIgZmx1c2ggb3JkZXI6 CgpXZSBoYXZlIHBpcGVzIEEsIEIsIGFuZCBDIGVuYWJsZWQsIGFuZCB3ZSdyZSBkaXNhYmxpbmcg Qy4gSW5pdGlhbCBkZGIKYWxsb2NhdGlvbiBsb29rcyBsaWtlIHRoaXM6Cgp8ICAgQSAgIHwgICBC ICAgfHh4eHh4eHh8CgpTaW5jZSB3ZSdyZSBwZXJmb3JtaW5nIHRoZSBkZGIgdXBkYXRlcyBhZnRl ciBwZXJmb3JtaW5nIGFueSBDUlRDCmRpc2FibGVtZW50cyBpbiBpbnRlbF9hdG9taWNfY29tbWl0 X3RhaWwoKSwgdGhlIHNwYWNlIHRvIHRoZSByaWdodCBvZgpwaXBlIEIgaXMgdW5hbGxvY2F0ZWQu CgoxLiBGbHVzaCBwaXBlcyB3aXRoIG5ldyBhbGxvY2F0aW9uIGNvbnRhaW5lZCBpbnRvIG9sZCBz cGFjZS4gTm9uZQogICBhcHBseSwgc28gd2Ugc2tpcCB0aGlzCjIuIEZsdXNoIHBpcGVzIGhhdmlu ZyB0aGVpciBhbGxvY2F0aW9uIHJlZHVjZWQsIGJ1dCBvdmVybGFwcGluZyB3aXRoIGEKICAgcHJl dmlvdXMgYWxsb2NhdGlvbi4gTm9uZSBhcHBseSwgc28gd2UgYWxzbyBza2lwIHRoaXMKMy4gRmx1 c2ggcGlwZXMgdGhhdCBnb3QgbW9yZSBzcGFjZSBhbGxvY2F0ZWQuIFRoaXMgYXBwbGllcyB0byBB IGFuZCBCLAogICBnaXZpbmcgdXMgdGhlIGZvbGxvd2luZyB1cGRhdGUgb3JkZXI6IEEsIEIKClRo aXMgaXMgd3JvbmcsIHNpbmNlIHVwZGF0aW5nIHBpcGUgQSBmaXJzdCB3aWxsIGNhdXNlIGl0IHRv IG92ZXJsYXAgd2l0aApCIGFuZCBwb3RlbnRpYWxseSBidXJzdCBpbnRvIGZsYW1lcy4gT3VyIG5l dyBvcmRlciAoc2VlIHRoZSBjb2RlCmNvbW1lbnRzIGZvciBkZXRhaWxzKSB3b3VsZCB1cGRhdGUg dGhlIHBpcGVzIGluIHRoZSBwcm9wZXIgb3JkZXI6IEIsIEEuCgpBcyB3ZWxsLCB3ZSBjYWxjdWxh dGUgdGhlIG9yZGVyIGZvciBlYWNoIEREQiB1cGRhdGUgZHVyaW5nIHRoZSBjaGVjawpwaGFzZSwg YW5kIHJlZmVyZW5jZSBpdCBsYXRlciBpbiB0aGUgY29tbWl0IHBoYXNlIHdoZW4gd2UgaGl0CnNr bF91cGRhdGVfY3J0Y3MoKS4KClRoaXMgbG9uZyBvdmVyZHVlIHBhdGNoIGZpeGVzIHRoZSByZXN0 IG9mIHRoZSB1bmRlcnJ1bnMgb24gU2t5bGFrZS4KCkNoYW5nZXMgc2luY2UgdjE6CiAtIEFkZCBz a2xfZGRiX2VudHJ5X3dyaXRlKCkgZm9yIGN1cnNvciBpbnRvIHNrbF93cml0ZV9jdXJzb3Jfd20o KQpDaGFuZ2VzIHNpbmNlIHYyOgogLSBVc2UgdGhlIG1ldGhvZCBmb3IgdXBkYXRpbmcgQ1JUQ3Mg dGhhdCBWaWxsZSBzdWdnZXN0ZWQKIC0gSW4gc2tsX3VwZGF0ZV93bSgpLCBvbmx5IGNvcHkgdGhl IHdhdGVybWFya3MgZm9yIHRoZSBjcnRjIHRoYXQgd2FzCiAgIHBhc3NlZCB0byB1cwpDaGFuZ2Vz IHNpbmNlIHYzOgogLSBTbWFsbCBjb21tZW50IGZpeCBpbiBza2xfZGRiX2FsbG9jYXRpb25fb3Zl cmxhcHMoKQpDaGFuZ2VzIHNpbmNlIHY0OgogLSBSZW1vdmUgdGhlIHNlY29uZCBsb29wIGluIGlu dGVsX3VwZGF0ZV9jcnRjcygpIGFuZCB1c2UgVmlsbGUncwogICBzdWdnZXN0aW9uIGZvciB1cGRh dGluZyB0aGUgZGRiIGFsbG9jYXRpb25zIGluIHRoZSByaWdodCBvcmRlcgogLSBHZXQgcmlkIG9m IHRoZSBzZWNvbmQgbG9vcCBhbmQganVzdCB1c2UgdGhlIGRkYiBzdGF0ZSBhcyBpdCB1cGRhdGVz CiAgIHRvIGRldGVybWluZSB3aGF0IG9yZGVyIHRvIHVwZGF0ZSBldmVyeXRoaW5nIGluICh0aGFu a3MgZm9yIHRoZQogICBzdWdnZXN0aW9uIFZpbGxlKQogLSBTaW1wbGlmeSBza2xfZGRiX2FsbG9j YXRpb25fb3ZlcmxhcHMoKQogLSBTcGxpdCBhY3R1YWwgb3ZlcmxhcCBjaGVja2luZyBpbnRvIGl0 J3Mgb3duIGhlbHBlcgoKRml4ZXM6IDBlOGZiN2JhN2NhNSAoImRybS9pOTE1L3NrbDogRmx1c2gg dGhlIFdNIGNvbmZpZ3VyYXRpb24iKQpGaXhlczogODIxMWJkNWJkZjVlICgiZHJtL2k5MTUvc2ts OiBQcm9ncmFtIHRoZSBEREIgYWxsb2NhdGlvbiIpCltvbWl0dGluZyBDQyBmb3Igc3RhYmxlLCBz aW5jZSB0aGlzIHBhdGNoIHdpbGwgbmVlZCB0byBiZSBjaGFuZ2VkIGZvcgpzdWNoIGJhY2twb3J0 cyBmaXJzdF0KClRlc3RjYXNlOiBrbXNfY3Vyc29yX2xlZ2FjeQpUZXN0Y2FzZTogcGxhbmUtYWxs LW1vZGVzZXQtdHJhbnNpdGlvbgpTaWduZWQtb2ZmLWJ5OiBMeXVkZSA8Y3BhdWxAcmVkaGF0LmNv bT4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KQ2M6IFJhZGhha3Jpc2hu YSBTcmlwYWRhIDxyYWRoYWtyaXNobmEuc3JpcGFkYUBpbnRlbC5jb20+CkNjOiBIYW5zIGRlIEdv ZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgpDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVy QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAg OTMgKysrKysrKysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg IHwgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAyMDAgKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTMyIGlu c2VydGlvbnMoKyksIDE2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKaW5kZXggMzMwZGY2OS4uZjkyNzNmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwpAQCAtMTM0ODMsMTYgKzEzNDgzLDIzIEBAIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9z dGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkgIGh3X2VudHJ5LT5zdGFydCwgaHdfZW50 cnktPmVuZCk7CiAJfQogCi0JLyogY3Vyc29yICovCi0JaHdfZW50cnkgPSAmaHdfZGRiLnBsYW5l W3BpcGVdW1BMQU5FX0NVUlNPUl07Ci0Jc3dfZW50cnkgPSAmc3dfZGRiLT5wbGFuZVtwaXBlXVtQ TEFORV9DVVJTT1JdOwotCi0JaWYgKCFza2xfZGRiX2VudHJ5X2VxdWFsKGh3X2VudHJ5LCBzd19l bnRyeSkpIHsKLQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiBEREIgc3RhdGUgcGlwZSAlYyBjdXJz b3IgIgotCQkJICAiKGV4cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAotCQkJICBw aXBlX25hbWUocGlwZSksCi0JCQkgIHN3X2VudHJ5LT5zdGFydCwgc3dfZW50cnktPmVuZCwKLQkJ CSAgaHdfZW50cnktPnN0YXJ0LCBod19lbnRyeS0+ZW5kKTsKKwkvKgorCSAqIGN1cnNvcgorCSAq IElmIHRoZSBjdXJzb3IgcGxhbmUgaXNuJ3QgYWN0aXZlLCB3ZSBtYXkgbm90IGhhdmUgdXBkYXRl ZCBpdCdzIGRkYgorCSAqIGFsbG9jYXRpb24uIEluIHRoYXQgY2FzZSBzaW5jZSB0aGUgZGRiIGFs bG9jYXRpb24gd2lsbCBiZSB1cGRhdGVkCisJICogb25jZSB0aGUgcGxhbmUgYmVjb21lcyB2aXNp YmxlLCB3ZSBjYW4gc2tpcCB0aGlzIGNoZWNrCisJICovCisJaWYgKGludGVsX2NydGMtPmN1cnNv cl9hZGRyKSB7CisJCWh3X2VudHJ5ID0gJmh3X2RkYi5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1Jd OworCQlzd19lbnRyeSA9ICZzd19kZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl07CisKKwkJ aWYgKCFza2xfZGRiX2VudHJ5X2VxdWFsKGh3X2VudHJ5LCBzd19lbnRyeSkpIHsKKwkJCURSTV9F UlJPUigibWlzbWF0Y2ggaW4gRERCIHN0YXRlIHBpcGUgJWMgY3Vyc29yICIKKwkJCQkgICIoZXhw ZWN0ZWQgKCV1LCV1KSwgZm91bmQgKCV1LCV1KSlcbiIsCisJCQkJICBwaXBlX25hbWUocGlwZSks CisJCQkJICBzd19lbnRyeS0+c3RhcnQsIHN3X2VudHJ5LT5lbmQsCisJCQkJICBod19lbnRyeS0+ c3RhcnQsIGh3X2VudHJ5LT5lbmQpOworCQl9CiAJfQogfQogCkBAIC0xNDI0NCw2ICsxNDI1MSw2 NSBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3J0Y3Moc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlLAogCX0KIH0KIAorc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9jcnRjcyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkgICAgIHVuc2lnbmVkIGludCAqY3J0Y192Ymxh bmtfbWFzaykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3Rh dGUpOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlOworCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5ld19kZGIgPSAmaW50 ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGRiOworCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmN1 cl9kZGIgPSAmZGV2X3ByaXYtPndtLnNrbF9ody5kZGI7CisJdW5zaWduZWQgaW50IHVwZGF0ZWQg PSAwOworCWJvb2wgcHJvZ3Jlc3M7CisJZW51bSBwaXBlIHBpcGU7CisKKwkvKgorCSAqIFdoZW5l dmVyIHRoZSBudW1iZXIgb2YgYWN0aXZlIHBpcGVzIGNoYW5nZXMsIHdlIG5lZWQgdG8gbWFrZSBz dXJlIHdlIAorCSAqIHVwZGF0ZSB0aGUgcGlwZXMgaW4gdGhlIHJpZ2h0IG9yZGVyIHNvIHRoYXQg dGhlaXIgZGRiIGFsbG9jYXRpb25zCisJICogbmV2ZXIgb3ZlcmxhcCB3aXRoIGVhY2hvdGhlciBp bmJldHdlZW4gQ1JUQyB1cGRhdGVzLiBPdGhlcndpc2Ugd2UnbGwKKwkgKiBjYXVzZSBwaXBlIHVu ZGVycnVucyBhbmQgb3RoZXIgYmFkIHN0dWZmLgorCSAqLworCWRvIHsKKwkJaW50IGk7CisJCXBy b2dyZXNzID0gZmFsc2U7CisKKwkJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg b2xkX2NydGNfc3RhdGUsIGkpIHsKKwkJCWJvb2wgdmJsX3dhaXQgPSBmYWxzZTsKKwkJCXVuc2ln bmVkIGludCBjbWFzayA9IGRybV9jcnRjX21hc2soY3J0Yyk7CisJCQlwaXBlID0gdG9faW50ZWxf Y3J0YyhjcnRjKS0+cGlwZTsKKworCQkJaWYgKHVwZGF0ZWQgJiBjbWFzayB8fCAhY3J0Yy0+c3Rh dGUtPmFjdGl2ZSkKKwkJCQljb250aW51ZTsKKwkJCWlmIChza2xfZGRiX2FsbG9jYXRpb25fb3Zl cmxhcHMoc3RhdGUsIGN1cl9kZGIsIG5ld19kZGIsCisJCQkJCQkJcGlwZSkpCisJCQkJY29udGlu dWU7CisKKwkJCXVwZGF0ZWQgfD0gY21hc2s7CisKKwkJCS8qCisJCQkgKiBJZiB0aGlzIGlzIGFu IGFscmVhZHkgYWN0aXZlIHBpcGUsIGl0J3MgRERCIGNoYW5nZWQsCisJCQkgKiBhbmQgdGhpcyBp c24ndCB0aGUgbGFzdCBwaXBlIHRoYXQgbmVlZHMgdXBkYXRpbmcKKwkJCSAqIHRoZW4gd2UgbmVl ZCB0byB3YWl0IGZvciBhIHZibGFuayB0byBwYXNzIGZvciB0aGUKKwkJCSAqIG5ldyBkZGIgYWxs b2NhdGlvbiB0byB0YWtlIGVmZmVjdC4KKwkJCSAqLworCQkJaWYgKCFza2xfZGRiX2FsbG9jYXRp b25fZXF1YWxzKGN1cl9kZGIsIG5ld19kZGIsIHBpcGUpICYmCisJCQkgICAgIWNydGMtPnN0YXRl LT5hY3RpdmVfY2hhbmdlZCAmJgorCQkJICAgIGludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRpcnR5 X3BpcGVzICE9IHVwZGF0ZWQpCisJCQkJdmJsX3dhaXQgPSB0cnVlOworCisJCQlpbnRlbF91cGRh dGVfY3J0YyhjcnRjLCBzdGF0ZSwgb2xkX2NydGNfc3RhdGUsCisJCQkJCSAgY3J0Y192Ymxhbmtf bWFzayk7CisKKwkJCWlmICh2Ymxfd2FpdCkKKwkJCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2 LCBwaXBlKTsKKworCQkJcHJvZ3Jlc3MgPSB0cnVlOworCQl9CisJfSB3aGlsZSAocHJvZ3Jlc3Mp OworfQorCiBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ ZGV2OwpAQCAtMTU4ODMsOCArMTU5NDksNiBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29r cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRldl9wcml2LT5kaXNwbGF5 LmNydGNfZGlzYWJsZSA9IGk5eHhfY3J0Y19kaXNhYmxlOwogCX0KIAotCWRldl9wcml2LT5kaXNw bGF5LnVwZGF0ZV9jcnRjcyA9IGludGVsX3VwZGF0ZV9jcnRjczsKLQogCS8qIFJldHVybnMgdGhl IGNvcmUgZGlzcGxheSBjbG9jayBzcGVlZCAqLwogCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8 fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5 X2Nsb2NrX3NwZWVkID0KQEAgLTE1OTc0LDYgKzE2MDM4LDExIEBAIHZvaWQgaW50ZWxfaW5pdF9k aXNwbGF5X2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCXNrbF9t b2Rlc2V0X2NhbGNfY2RjbGs7CiAJfQogCisJaWYgKGRldl9wcml2LT5pbmZvLmdlbiA+PSA5KQor CQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfY3J0Y3MgPSBza2xfdXBkYXRlX2NydGNzOworCWVs c2UKKwkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX2NydGNzID0gaW50ZWxfdXBkYXRlX2NydGNz OworCiAJc3dpdGNoIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuKSB7CiAJY2FzZSAyOgogCQlk ZXZfcHJpdi0+ZGlzcGxheS5xdWV1ZV9mbGlwID0gaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAzN2NhZDdjLi5lYTYyNjgxIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaApAQCAtMTc0Myw2ICsxNzQzLDEzIEBAIHZvaWQgc2tsX2RkYl9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogYm9vbCBza2xfY2FuX2Vu YWJsZV9zYWd2KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CiBpbnQgc2tsX2VuYWJs ZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBpbnQgc2tsX2Rpc2Fi bGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworYm9vbCBza2xfZGRi X2FsbG9jYXRpb25fZXF1YWxzKGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm9sZCwK KwkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpuZXcsCisJCQkgICAg ICAgZW51bSBwaXBlIHBpcGUpOworYm9vbCBza2xfZGRiX2FsbG9jYXRpb25fb3ZlcmxhcHMoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCSBjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9h bGxvY2F0aW9uICpvbGQsCisJCQkJIGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5l dywKKwkJCQkgZW51bSBwaXBlIHBpcGUpOwogdm9pZCBza2xfd3JpdGVfY3Vyc29yX3dtKHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fdmFsdWVz ICp3bSk7CiB2b2lkIHNrbF93cml0ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDJmNDQzOGQuLjcyOWQ5NTIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzg1MSw2ICszODUxLDExIEBAIHZvaWQgc2tsX3dyaXRl X3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJICAgd20tPnBsYW5l W3BpcGVdW3BsYW5lXVtsZXZlbF0pOwogCX0KIAlJOTE1X1dSSVRFKFBMQU5FX1dNX1RSQU5TKHBp cGUsIHBsYW5lKSwgd20tPnBsYW5lX3RyYW5zW3BpcGVdW3BsYW5lXSk7CisKKwlza2xfZGRiX2Vu dHJ5X3dyaXRlKGRldl9wcml2LCBQTEFORV9CVUZfQ0ZHKHBpcGUsIHBsYW5lKSwKKwkJCSAgICAm d20tPmRkYi5wbGFuZVtwaXBlXVtwbGFuZV0pOworCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3By aXYsIFBMQU5FX05WMTJfQlVGX0NGRyhwaXBlLCBwbGFuZSksCisJCQkgICAgJndtLT5kZGIueV9w bGFuZVtwaXBlXVtwbGFuZV0pOwogfQogCiB2b2lkIHNrbF93cml0ZV9jdXJzb3Jfd20oc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMsCkBAIC0zODY3LDE3MCArMzg3Miw0NiBAQCB2b2lkIHNr 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 LApAQCAtNDIzMiw3ICs0MTEzLDcgQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJc3RydWN0IHNrbF93bV92YWx1ZXMgKmh3X3ZhbHMgPSAmZGV2X3By aXYtPndtLnNrbF9odzsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dt ID0gJmNzdGF0ZS0+d20uc2tsLm9wdGltYWw7Ci0JaW50IHBpcGU7CisJZW51bSBwaXBlIHBpcGUg PSBpbnRlbF9jcnRjLT5waXBlOwogCiAJaWYgKChyZXN1bHRzLT5kaXJ0eV9waXBlcyAmIGRybV9j cnRjX21hc2soY3J0YykpID09IDApCiAJCXJldHVybjsKQEAgLTQyNDEsMTUgKzQxMjIsMjIgQEAg c3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAKIAltdXRl eF9sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwogCi0Jc2tsX3dyaXRlX3dtX3ZhbHVlcyhk ZXZfcHJpdiwgcmVzdWx0cyk7Ci0Jc2tsX2ZsdXNoX3dtX3ZhbHVlcyhkZXZfcHJpdiwgcmVzdWx0 cyk7Ci0KIAkvKgotCSAqIFN0b3JlIHRoZSBuZXcgY29uZmlndXJhdGlvbiAoYnV0IG9ubHkgZm9y IHRoZSBwaXBlcyB0aGF0IGhhdmUKLQkgKiBjaGFuZ2VkOyB0aGUgb3RoZXIgdmFsdWVzIHdlcmVu J3QgcmVjb21wdXRlZCkuCisJICogSWYgdGhpcyBwaXBlIGlzbid0IGFjdGl2ZSBhbHJlYWR5LCB3 ZSdyZSBnb2luZyB0byBiZSBlbmFibGluZyBpdAorCSAqIHZlcnkgc29vbi4gU2luY2UgaXQncyBz YWZlIHRvIHVwZGF0ZSBhIHBpcGUncyBkZGIgYWxsb2NhdGlvbiB3aGlsZQorCSAqIHRoZSBwaXBl J3Mgc2h1dCBvZmYsIGp1c3QgZG8gc28gaGVyZS4gQWxyZWFkeSBhY3RpdmUgcGlwZXMgd2lsbCBo YXZlCisJICogdGhlaXIgd2F0ZXJtYXJrcyB1cGRhdGVkIG9uY2Ugd2UgdXBkYXRlIHRoZWlyIHBs YW5lcy4KIAkgKi8KLQlmb3JfZWFjaF9waXBlX21hc2tlZChkZXZfcHJpdiwgcGlwZSwgcmVzdWx0 cy0+ZGlydHlfcGlwZXMpCi0JCXNrbF9jb3B5X3dtX2Zvcl9waXBlKGh3X3ZhbHMsIHJlc3VsdHMs IHBpcGUpOworCWlmIChjcnRjLT5zdGF0ZS0+YWN0aXZlX2NoYW5nZWQpIHsKKwkJaW50IHBsYW5l OworCisJCWZvciAocGxhbmUgPSAwOyBwbGFuZSA8IGludGVsX251bV9wbGFuZXMoaW50ZWxfY3J0 Yyk7IHBsYW5lKyspCisJCQlza2xfd3JpdGVfcGxhbmVfd20oaW50ZWxfY3J0YywgcmVzdWx0cywg cGxhbmUpOworCisJCXNrbF93cml0ZV9jdXJzb3Jfd20oaW50ZWxfY3J0YywgcmVzdWx0cyk7CisJ fQorCisJc2tsX2NvcHlfd21fZm9yX3BpcGUoaHdfdmFscywgcmVzdWx0cywgcGlwZSk7CiAKIAlt dXRleF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7CiB9Ci0tIAoyLjcuNAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==