From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH v5 6/6] drm/i915/skl: Update DDB values atomically with wms/plane attrs Date: Tue, 2 Aug 2016 14:52:54 -0400 Message-ID: <1470163975-30467-7-git-send-email-cpaul@redhat.com> References: <1470163975-30467-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: <1470163975-30467-1-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Matt Roper Cc: David Airlie , linux-kernel@vger.kernel.org, Hans de Goede , dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: intel-gfx@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 IG9mIHRoZSB1bmRlcnJ1bnMgb24gU2t5bGFrZS4KCkZpeGVzOiAwZThmYjdiYTdjYTUgKCJkcm0v aTkxNS9za2w6IEZsdXNoIHRoZSBXTSBjb25maWd1cmF0aW9uIikKRml4ZXM6IDgyMTFiZDViZGY1 ZSAoImRybS9pOTE1L3NrbDogUHJvZ3JhbSB0aGUgRERCIGFsbG9jYXRpb24iKQpTaWduZWQtb2Zm LWJ5OiBMeXVkZSA8Y3BhdWxAcmVkaGF0LmNvbT4KW29taXR0aW5nIENDIGZvciBzdGFibGUsIHNp bmNlIHRoaXMgcGF0Y2ggd2lsbCBuZWVkIHRvIGJlIGNoYW5nZWQgZm9yCnN1Y2ggYmFja3BvcnRz IGZpcnN0XQpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgpDYzogUmFkaGFr cmlzaG5hIFNyaXBhZGEgPHJhZGhha3Jpc2huYS5zcmlwYWRhQGludGVsLmNvbT4KQ2M6IEhhbnMg ZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CkNjOiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQu cm9wZXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyB8IDEwMCArKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAg ICB8ICAxMCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgMjg3ICsr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDIzMSBp bnNlcnRpb25zKCspLCAxNjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCmluZGV4IGQ5ODViNWIuLmRiMjcxZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKQEAgLTEyOTA5LDE2ICsxMjkwOSwyMyBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21f c3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJICBod19lbnRyeS0+c3RhcnQsIGh3X2Vu dHJ5LT5lbmQpOwogCX0KIAotCS8qIGN1cnNvciAqLwotCWh3X2VudHJ5ID0gJmh3X2RkYi5wbGFu ZVtwaXBlXVtQTEFORV9DVVJTT1JdOwotCXN3X2VudHJ5ID0gJnN3X2RkYi0+cGxhbmVbcGlwZV1b UExBTkVfQ1VSU09SXTsKLQotCWlmICghc2tsX2RkYl9lbnRyeV9lcXVhbChod19lbnRyeSwgc3df ZW50cnkpKSB7Ci0JCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gRERCIHN0YXRlIHBpcGUgJWMgY3Vy c29yICIKLQkJCSAgIihleHBlY3RlZCAoJXUsJXUpLCBmb3VuZCAoJXUsJXUpKVxuIiwKLQkJCSAg cGlwZV9uYW1lKHBpcGUpLAotCQkJICBzd19lbnRyeS0+c3RhcnQsIHN3X2VudHJ5LT5lbmQsCi0J CQkgIGh3X2VudHJ5LT5zdGFydCwgaHdfZW50cnktPmVuZCk7CisJLyoKKwkgKiBjdXJzb3IKKwkg KiBJZiB0aGUgY3Vyc29yIHBsYW5lIGlzbid0IGFjdGl2ZSwgd2UgbWF5IG5vdCBoYXZlIHVwZGF0 ZWQgaXQncyBkZGIKKwkgKiBhbGxvY2F0aW9uLiBJbiB0aGF0IGNhc2Ugc2luY2UgdGhlIGRkYiBh bGxvY2F0aW9uIHdpbGwgYmUgdXBkYXRlZAorCSAqIG9uY2UgdGhlIHBsYW5lIGJlY29tZXMgdmlz aWJsZSwgd2UgY2FuIHNraXAgdGhpcyBjaGVjaworCSAqLworCWlmIChpbnRlbF9jcnRjLT5jdXJz b3JfYWRkcikgeworCQlod19lbnRyeSA9ICZod19kZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VSU09S XTsKKwkJc3dfZW50cnkgPSAmc3dfZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdOworCisJ CWlmICghc2tsX2RkYl9lbnRyeV9lcXVhbChod19lbnRyeSwgc3dfZW50cnkpKSB7CisJCQlEUk1f RVJST1IoIm1pc21hdGNoIGluIEREQiBzdGF0ZSBwaXBlICVjIGN1cnNvciAiCisJCQkJICAiKGV4 cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAorCQkJCSAgcGlwZV9uYW1lKHBpcGUp LAorCQkJCSAgc3dfZW50cnktPnN0YXJ0LCBzd19lbnRyeS0+ZW5kLAorCQkJCSAgaHdfZW50cnkt PnN0YXJ0LCBod19lbnRyeS0+ZW5kKTsKKwkJfQogCX0KIH0KIApAQCAtMTM2NzAsNiArMTM2Nzcs NzIgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGNzKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSwKIAl9CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZAorc2tsX2RvX2RkYl9zdGVw KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJZW51bSBza2xfZGRiX3N0ZXAgc3Rl cCkKK3sKKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVs X2F0b21pY19zdGF0ZShzdGF0ZSk7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CisJdW5zaWduZWQgaW50IGNydGNfdmJsYW5r X21hc2s7IC8qIHVudXNlZCAqLworCWludCBpOworCisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKKwkJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlID0KKwkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCQlib29s IHZibGFua193YWl0ID0gZmFsc2U7CisKKwkJaWYgKGNzdGF0ZS0+d20uc2tsLmRkYl9yZWFsbG9j ICE9IHN0ZXAgfHwgIWNydGMtPnN0YXRlLT5hY3RpdmUpCisJCQljb250aW51ZTsKKworCQkvKgor CQkgKiBJZiB3ZSdyZSBjaGFuZ2luZyB0aGUgZGRiIGFsbG9jYXRpb24gb2YgdGhpcyBwaXBlIHRv IG1ha2UKKwkJICogcm9vbSBmb3IgYW5vdGhlciBwaXBlLCB3ZSBoYXZlIHRvIHdhaXQgZm9yIHRo ZSBwaXBlJ3MgZGRiCisJCSAqIGFsbG9jYXRpb25zIHRvIGFjdHVhbGx5IHVwZGF0ZSBieSB3YWl0 aW5nIGZvciBhIHZibGFuay4KKwkJICogT3RoZXJ3aXNlIHdlIHJpc2sgdGhlIG5leHQgcGlwZSB1 cGRhdGluZyBiZWZvcmUgdGhpcyBwaXBlCisJCSAqIGZpbmlzaGVzLCByZXN1bHRpbmcgaW4gdGhl IHBpcGUgZmV0Y2hpbmcgZnJvbSBkZGIgc3BhY2UgZm9yCisJCSAqIHRoZSB3cm9uZyBwaXBlLgor CQkgKgorCQkgKiBIb3dldmVyLCBpZiB3ZSBrbm93IHdlIGRvbid0IGhhdmUgYW55IG1vcmUgcGlw ZXMgdG8gbW92ZQorCQkgKiBhcm91bmQsIHdlIGNhbiBza2lwIHRoaXMgd2FpdCBhbmQgdGhlIG5l dyBkZGIgYWxsb2NhdGlvbgorCQkgKiB3aWxsIHRha2UgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0 aGUgbmV4dCB2YmxhbmsuCisJCSAqLworCQlzd2l0Y2ggKHN0ZXApIHsKKwkJY2FzZSBTS0xfRERC X1NURVBfTk9fT1ZFUkxBUDoKKwkJY2FzZSBTS0xfRERCX1NURVBfT1ZFUkxBUDoKKwkJCWlmIChz dGVwICE9IGludGVsX3N0YXRlLT5sYXN0X2RkYl9zdGVwKQorCQkJCXZibGFua193YWl0ID0gdHJ1 ZTsKKworCQkvKiBkcm9wIHRocm91Z2ggKi8KKwkJY2FzZSBTS0xfRERCX1NURVBfRklOQUw6CisJ CQlEUk1fREVCVUdfS01TKAorCQkJICAgICJVcGRhdGluZyBbQ1JUQzolZDpwaXBlICVjXSBmb3Ig RERCIHN0ZXAgJWRcbiIsCisJCQkgICAgY3J0Yy0+YmFzZS5pZCwgcGlwZV9uYW1lKGludGVsX2Ny dGMtPnBpcGUpLAorCQkJICAgIHN0ZXApOworCisJCWNhc2UgU0tMX0REQl9TVEVQX05PTkU6CisJ CQlicmVhazsKKwkJfQorCisJCWludGVsX3VwZGF0ZV9jcnRjKGNydGMsIHN0YXRlLCBvbGRfY3J0 Y19zdGF0ZSwKKwkJCQkgICZjcnRjX3ZibGFua19tYXNrKTsKKworCQlpZiAodmJsYW5rX3dhaXQp CisJCQlpbnRlbF93YWl0X2Zvcl92Ymxhbmsoc3RhdGUtPmRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7 CisJfQorfQorCitzdGF0aWMgdm9pZCBza2xfdXBkYXRlX2NydGNzKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSwKKwkJCSAgICAgdW5zaWduZWQgaW50ICpjcnRjX3ZibGFua19tYXNrKQor eworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRv bWljX3N0YXRlKHN0YXRlKTsKKwllbnVtIHNrbF9kZGJfc3RlcCBzdGVwOworCisJZm9yIChzdGVw ID0gMDsgc3RlcCA8PSBpbnRlbF9zdGF0ZS0+bGFzdF9kZGJfc3RlcDsgc3RlcCsrKQorCQlza2xf ZG9fZGRiX3N0ZXAoc3RhdGUsIHN0ZXApOworfQorCiBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNf Y29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2OwpAQCAtMTUyMzAsOCArMTUzMDMsNiBAQCB2b2lk IGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZSA9IGk5eHhfY3J0Y19kaXNhYmxl OwogCX0KIAotCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9jcnRjcyA9IGludGVsX3VwZGF0ZV9j cnRjczsKLQogCS8qIFJldHVybnMgdGhlIGNvcmUgZGlzcGxheSBjbG9jayBzcGVlZCAqLwogCWlm IChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCiAJCWRldl9w cml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkID0KQEAgLTE1MzIxLDYgKzE1Mzky LDExIEBAIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5X2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAkJCXNrbF9tb2Rlc2V0X2NhbGNfY2RjbGs7CiAJfQogCisJaWYgKGRl dl9wcml2LT5pbmZvLmdlbiA+PSA5KQorCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfY3J0Y3Mg PSBza2xfdXBkYXRlX2NydGNzOworCWVsc2UKKwkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX2Ny dGNzID0gaW50ZWxfdXBkYXRlX2NydGNzOworCiAJc3dpdGNoIChJTlRFTF9JTkZPKGRldl9wcml2 KS0+Z2VuKSB7CiAJY2FzZSAyOgogCQlkZXZfcHJpdi0+ZGlzcGxheS5xdWV1ZV9mbGlwID0gaW50 ZWxfZ2VuMl9xdWV1ZV9mbGlwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAxYjQ0NGQz Li5jZjVkYTgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMzM0LDYgKzMzNCw3IEBA IHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgewogCiAJLyogR2VuOSsgb25seSAqLwogCXN0cnVj dCBza2xfd21fdmFsdWVzIHdtX3Jlc3VsdHM7CisJaW50IGxhc3RfZGRiX3N0ZXA7CiB9OwogCiBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgewpAQCAtNDM3LDYgKzQzOCwxMyBAQCBzdHJ1Y3Qgc2ts X3BpcGVfd20gewogCXVpbnQzMl90IGxpbmV0aW1lOwogfTsKIAorZW51bSBza2xfZGRiX3N0ZXAg eworCVNLTF9EREJfU1RFUF9OT05FID0gMCwKKwlTS0xfRERCX1NURVBfTk9fT1ZFUkxBUCwKKwlT S0xfRERCX1NURVBfT1ZFUkxBUCwKKwlTS0xfRERCX1NURVBfRklOQUwKK307CisKIHN0cnVjdCBp bnRlbF9jcnRjX3dtX3N0YXRlIHsKIAl1bmlvbiB7CiAJCXN0cnVjdCB7CkBAIC00NjcsNiArNDc1 LDggQEAgc3RydWN0IGludGVsX2NydGNfd21fc3RhdGUgewogCQkJLyogbWluaW11bSBibG9jayBh bGxvY2F0aW9uICovCiAJCQl1aW50MTZfdCBtaW5pbXVtX2Jsb2Nrc1tJOTE1X01BWF9QTEFORVNd OwogCQkJdWludDE2X3QgbWluaW11bV95X2Jsb2Nrc1tJOTE1X01BWF9QTEFORVNdOworCisJCQll bnVtIHNrbF9kZGJfc3RlcCBkZGJfcmVhbGxvYzsKIAkJfSBza2w7CiAJfTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKaW5kZXggNmIyNDUyYi4uODU5NmNiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCkBAIC0zODE4LDYgKzM4MTgsMTEgQEAgdm9pZCBza2xfd3JpdGVfcGxhbmVfd20oc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJCQkgICB3bS0+cGxhbmVbcGlwZV1bcGxhbmVdW2xl dmVsXSk7CiAJfQogCUk5MTVfV1JJVEUoUExBTkVfV01fVFJBTlMocGlwZSwgcGxhbmUpLCB3bS0+ cGxhbmVfdHJhbnNbcGlwZV1bcGxhbmVdKTsKKworCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3By aXYsIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmUpLAorCQkJICAgICZ3bS0+ZGRiLnBsYW5lW3Bp cGVdW3BsYW5lXSk7CisJc2tsX2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwgUExBTkVfTlYxMl9C VUZfQ0ZHKHBpcGUsIHBsYW5lKSwKKwkJCSAgICAmd20tPmRkYi55X3BsYW5lW3BpcGVdW3BsYW5l XSk7CiB9CiAKIHZvaWQgc2tsX3dyaXRlX2N1cnNvcl93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YywKQEAgLTM4MzksMTY4ICszODQ0LDQ2IEBAIHZvaWQgc2tsX3dyaXRlX2N1cnNvcl93 bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAkJCSAgICAmd20tPmRkYi5wbGFuZVtw aXBlXVtQTEFORV9DVVJTT1JdKTsKIH0KIAotc3RhdGljIHZvaWQgc2tsX3dyaXRlX3dtX3ZhbHVl cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJY29uc3Qgc3RydWN0IHNr bF93bV92YWx1ZXMgKm5ldykKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2 LT5kcm07Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGM7Ci0KLQlmb3JfZWFjaF9pbnRlbF9jcnRj KGRldiwgY3J0YykgewotCQlpbnQgaTsKLQkJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwot Ci0JCWlmICgobmV3LT5kaXJ0eV9waXBlcyAmIGRybV9jcnRjX21hc2soJmNydGMtPmJhc2UpKSA9 PSAwKQotCQkJY29udGludWU7Ci0JCWlmICghY3J0Yy0+YWN0aXZlKQotCQkJY29udGludWU7Ci0K LQkJZm9yIChpID0gMDsgaSA8IGludGVsX251bV9wbGFuZXMoY3J0Yyk7IGkrKykgewotCQkJc2ts X2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwKLQkJCQkJICAgIFBMQU5FX0JVRl9DRkcocGlwZSwg aSksCi0JCQkJCSAgICAmbmV3LT5kZGIucGxhbmVbcGlwZV1baV0pOwotCQkJc2tsX2RkYl9lbnRy eV93cml0ZShkZXZfcHJpdiwKLQkJCQkJICAgIFBMQU5FX05WMTJfQlVGX0NGRyhwaXBlLCBpKSwK LQkJCQkJICAgICZuZXctPmRkYi55X3BsYW5lW3BpcGVdW2ldKTsKLQkJfQotCi0JCXNrbF9kZGJf ZW50cnlfd3JpdGUoZGV2X3ByaXYsIENVUl9CVUZfQ0ZHKHBpcGUpLAotCQkJCSAgICAmbmV3LT5k ZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXSk7Ci0JfQotfQotCi0vKgotICogV2hlbiBzZXR0 aW5nIHVwIGEgbmV3IEREQiBhbGxvY2F0aW9uIGFycmFuZ2VtZW50LCB3ZSBuZWVkIHRvIGNvcnJl Y3RseQotICogc2VxdWVuY2UgdGhlIHRpbWVzIGF0IHdoaWNoIHRoZSBuZXcgYWxsb2NhdGlvbnMg Zm9yIHRoZSBwaXBlcyBhcmUgdGFrZW4gaW50bwotICogYWNjb3VudCBvciB3ZSdsbCBoYXZlIHBp cGVzIGZldGNoaW5nIGZyb20gc3BhY2UgcHJldmlvdXNseSBhbGxvY2F0ZWQgdG8KLSAqIGFub3Ro ZXIgcGlwZS4KLSAqCi0gKiBSb3VnaGx5IHRoZSBzZXF1ZW5jZSBsb29rcyBsaWtlOgotICogIDEu IHJlLWFsbG9jYXRlIHRoZSBwaXBlKHMpIHdpdGggdGhlIGFsbG9jYXRpb24gYmVpbmcgcmVkdWNl ZCBhbmQgbm90Ci0gKiAgICAgb3ZlcmxhcHBpbmcgd2l0aCBhIHByZXZpb3VzIGxpZ2h0LXVwIHBp cGUgKGFub3RoZXIgd2F5IHRvIHB1dCBpdCBpczoKLSAqICAgICBwaXBlcyB3aXRoIHRoZWlyIG5l dyBhbGxvY2F0aW9uIHN0cmlja2x5IGluY2x1ZGVkIGludG8gdGhlaXIgb2xkIG9uZXMpLgotICog IDIuIHJlLWFsbG9jYXRlIHRoZSBvdGhlciBwaXBlcyB0aGF0IGdldCB0aGVpciBhbGxvY2F0aW9u IHJlZHVjZWQKLSAqICAzLiBhbGxvY2F0ZSB0aGUgcGlwZXMgaGF2aW5nIHRoZWlyIGFsbG9jYXRp b24gaW5jcmVhc2VkCi0gKgotICogU3RlcHMgMS4gYW5kIDIuIGFyZSBoZXJlIHRvIHRha2UgY2Fy ZSBvZiB0aGUgZm9sbG93aW5nIGNhc2U6Ci0gKiAtIEluaXRpYWxseSBEREIgbG9va3MgbGlrZSB0 aGlzOgotICogICAgIHwgICBCICAgIHwgICBDICAgIHwKLSAqIC0gZW5hYmxlIHBpcGUgQS4KLSAq IC0gcGlwZSBCIGhhcyBhIHJlZHVjZWQgRERCIGFsbG9jYXRpb24gdGhhdCBvdmVybGFwcyB3aXRo IHRoZSBvbGQgcGlwZSBDCi0gKiAgIGFsbG9jYXRpb24KLSAqICAgICB8ICBBICB8ICBCICB8ICBD ICB8Ci0gKgotICogV2UgbmVlZCB0byBzZXF1ZW5jZSB0aGUgcmUtYWxsb2NhdGlvbjogQywgQiwg QSAoYW5kIG5vdCBCLCBDLCBBKS4KLSAqLwotCi1zdGF0aWMgdm9pZAotc2tsX3dtX2ZsdXNoX3Bp cGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwgaW50 IHBhc3MpCitzdGF0aWMgYm9vbAorc2tsX2RkYl9hbGxvY2F0aW9uX2VxdWFscyhjb25zdCBzdHJ1 Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpvbGQsCisJCQkgIGNvbnN0IHN0cnVjdCBza2xfZGRiX2Fs bG9jYXRpb24gKm5ldywKKwkJCSAgZW51bSBwaXBlIHBpcGUpCiB7Ci0JaW50IHBsYW5lOwotCi0J RFJNX0RFQlVHX0tNUygiZmx1c2ggcGlwZSAlYyAocGFzcyAlZClcbiIsIHBpcGVfbmFtZShwaXBl KSwgcGFzcyk7Ci0KLQlmb3JfZWFjaF9wbGFuZShkZXZfcHJpdiwgcGlwZSwgcGxhbmUpIHsKLQkJ STkxNV9XUklURShQTEFORV9TVVJGKHBpcGUsIHBsYW5lKSwKLQkJCSAgIEk5MTVfUkVBRChQTEFO RV9TVVJGKHBpcGUsIHBsYW5lKSkpOwotCX0KLQlJOTE1X1dSSVRFKENVUkJBU0UocGlwZSksIEk5 MTVfUkVBRChDVVJCQVNFKHBpcGUpKSk7CisJcmV0dXJuIG5ldy0+cGlwZVtwaXBlXS5zdGFydCA9 PSBvbGQtPnBpcGVbcGlwZV0uc3RhcnQgJiYKKwkgICAgICAgbmV3LT5waXBlW3BpcGVdLmVuZCA9 PSBvbGQtPnBpcGVbcGlwZV0uZW5kOwogfQogCiBzdGF0aWMgYm9vbAotc2tsX2RkYl9hbGxvY2F0 aW9uX2luY2x1ZGVkKGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm9sZCwKK3NrbF9k ZGJfYWxsb2NhdGlvbl9vdmVybGFwcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJ CQkgICAgY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqb2xkLAogCQkJICAgIGNvbnN0 IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5ldywKIAkJCSAgICBlbnVtIHBpcGUgcGlwZSkK IHsKLQl1aW50MTZfdCBvbGRfc2l6ZSwgbmV3X3NpemU7Ci0KLQlvbGRfc2l6ZSA9IHNrbF9kZGJf ZW50cnlfc2l6ZSgmb2xkLT5waXBlW3BpcGVdKTsKLQluZXdfc2l6ZSA9IHNrbF9kZGJfZW50cnlf c2l6ZSgmbmV3LT5waXBlW3BpcGVdKTsKLQotCXJldHVybiBvbGRfc2l6ZSAhPSBuZXdfc2l6ZSAm JgotCSAgICAgICBuZXctPnBpcGVbcGlwZV0uc3RhcnQgPj0gb2xkLT5waXBlW3BpcGVdLnN0YXJ0 ICYmCi0JICAgICAgIG5ldy0+cGlwZVtwaXBlXS5lbmQgPD0gb2xkLT5waXBlW3BpcGVdLmVuZDsK LX0KLQotc3RhdGljIHZvaWQgc2tsX2ZsdXNoX3dtX3ZhbHVlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkJc3RydWN0IHNrbF93bV92YWx1ZXMgKm5ld192YWx1ZXMpCi17 Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwotCXN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKmN1cl9kZGIsICpuZXdfZGRiOwotCWJvb2wgcmVhbGxvY2F0ZWRbSTkx NV9NQVhfUElQRVNdID0ge307Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGM7Ci0JZW51bSBwaXBl IHBpcGU7Ci0KLQluZXdfZGRiID0gJm5ld192YWx1ZXMtPmRkYjsKLQljdXJfZGRiID0gJmRldl9w cml2LT53bS5za2xfaHcuZGRiOwotCi0JLyoKLQkgKiBGaXJzdCBwYXNzOiBmbHVzaCB0aGUgcGlw ZXMgd2l0aCB0aGUgbmV3IGFsbG9jYXRpb24gY29udGFpbmVkIGludG8KLQkgKiB0aGUgb2xkIHNw YWNlLgotCSAqCi0JICogV2UnbGwgd2FpdCBmb3IgdGhlIHZibGFuayBvbiB0aG9zZSBwaXBlcyB0 byBlbnN1cmUgd2UgY2FuIHNhZmVseQotCSAqIHJlLWFsbG9jYXRlIHRoZSBmcmVlZCBzcGFjZSB3 aXRob3V0IHRoaXMgcGlwZSBmZXRjaGluZyBmcm9tIGl0LgotCSAqLwotCWZvcl9lYWNoX2ludGVs X2NydGMoZGV2LCBjcnRjKSB7Ci0JCWlmICghY3J0Yy0+YWN0aXZlKQotCQkJY29udGludWU7Ci0K LQkJcGlwZSA9IGNydGMtPnBpcGU7Ci0KLQkJaWYgKCFza2xfZGRiX2FsbG9jYXRpb25faW5jbHVk ZWQoY3VyX2RkYiwgbmV3X2RkYiwgcGlwZSkpCi0JCQljb250aW51ZTsKLQotCQlza2xfd21fZmx1 c2hfcGlwZShkZXZfcHJpdiwgcGlwZSwgMSk7Ci0JCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYs IHBpcGUpOwotCi0JCXJlYWxsb2NhdGVkW3BpcGVdID0gdHJ1ZTsKLQl9Ci0KLQotCS8qCi0JICog U2Vjb25kIHBhc3M6IGZsdXNoIHRoZSBwaXBlcyB0aGF0IGFyZSBoYXZpbmcgdGhlaXIgYWxsb2Nh dGlvbgotCSAqIHJlZHVjZWQsIGJ1dCBvdmVybGFwcGluZyB3aXRoIGEgcHJldmlvdXMgYWxsb2Nh dGlvbi4KLQkgKgotCSAqIEhlcmUgYXMgd2VsbCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSB2Ymxh bmsgdG8gbWFrZSBzdXJlIHRoZSBmcmVlZAotCSAqIHNwYWNlIGlzIG5vdCB1c2VkIGFueW1vcmUu Ci0JICovCi0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKLQkJaWYgKCFjcnRjLT5h Y3RpdmUpCi0JCQljb250aW51ZTsKLQotCQlwaXBlID0gY3J0Yy0+cGlwZTsKLQotCQlpZiAocmVh bGxvY2F0ZWRbcGlwZV0pCi0JCQljb250aW51ZTsKLQotCQlpZiAoc2tsX2RkYl9lbnRyeV9zaXpl KCZuZXdfZGRiLT5waXBlW3BpcGVdKSA8Ci0JCSAgICBza2xfZGRiX2VudHJ5X3NpemUoJmN1cl9k ZGItPnBpcGVbcGlwZV0pKSB7Ci0JCQlza2xfd21fZmx1c2hfcGlwZShkZXZfcHJpdiwgcGlwZSwg Mik7Ci0JCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBwaXBlKTsKLQkJCXJlYWxsb2NhdGVk W3BpcGVdID0gdHJ1ZTsKLQkJfQotCX0KLQotCS8qCi0JICogVGhpcmQgcGFzczogZmx1c2ggdGhl IHBpcGVzIHRoYXQgZ290IG1vcmUgc3BhY2UgYWxsb2NhdGVkLgotCSAqCi0JICogV2UgZG9uJ3Qg bmVlZCB0byBhY3RpdmVseSB3YWl0IGZvciB0aGUgdXBkYXRlIGhlcmUsIG5leHQgdmJsYW5rCi0J ICogd2lsbCBqdXN0IGdldCBtb3JlIEREQiBzcGFjZSB3aXRoIHRoZSBjb3JyZWN0IFdNIHZhbHVl cy4KLQkgKi8KLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0YykgewotCQlpZiAoIWNydGMt PmFjdGl2ZSkKLQkJCWNvbnRpbnVlOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ ZGV2OworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOworCWVudW0gcGlwZSBvdGhlcnA7 CiAKLQkJcGlwZSA9IGNydGMtPnBpcGU7CisJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGludGVs X2NydGMpIHsKKwkJb3RoZXJwID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAogCQkvKgotCQkgKiBBdCB0 aGlzIHBvaW50LCBvbmx5IHRoZSBwaXBlcyBtb3JlIHNwYWNlIHRoYW4gYmVmb3JlIGFyZQotCQkg KiBsZWZ0IHRvIHJlLWFsbG9jYXRlLgorCQkgKiBXaGVuIGNoZWNraW5nIGZvciBvdmVybGFwcywg d2UgZG9uJ3Qgd2FudCB0bzoKKwkJICogIC0gQ29tcGFyZSBhZ2FpbnN0IG91cnNlbHZlcworCQkg KiAgLSBDb21wYXJlIGFnYWluc3QgcGlwZXMgdGhhdCB3aWxsIGJlIGRpc2FibGVkIGluIHN0ZXAg MAorCQkgKiAgLSBDb21wYXJlIGFnYWluc3QgcGlwZXMgdGhhdCB3b24ndCBiZSBlbmFibGVkIHVu dGlsIHN0ZXAgMwogCQkgKi8KLQkJaWYgKHJlYWxsb2NhdGVkW3BpcGVdKQorCQlpZiAob3RoZXJw ID09IHBpcGUgfHwgIW5ldy0+cGlwZVtvdGhlcnBdLmVuZCB8fAorCQkgICAgIW9sZC0+cGlwZVtv dGhlcnBdLmVuZCkKIAkJCWNvbnRpbnVlOwogCi0JCXNrbF93bV9mbHVzaF9waXBlKGRldl9wcml2 LCBwaXBlLCAzKTsKKwkJaWYgKChuZXctPnBpcGVbcGlwZV0uc3RhcnQgPj0gb2xkLT5waXBlW290 aGVycF0uc3RhcnQgJiYKKwkJICAgICBuZXctPnBpcGVbcGlwZV0uc3RhcnQgPCBvbGQtPnBpcGVb b3RoZXJwXS5lbmQpIHx8CisJCSAgICAob2xkLT5waXBlW290aGVycF0uc3RhcnQgPj0gbmV3LT5w aXBlW3BpcGVdLnN0YXJ0ICYmCisJCSAgICAgb2xkLT5waXBlW290aGVycF0uc3RhcnQgPCBuZXct PnBpcGVbcGlwZV0uZW5kKSkKKwkJCXJldHVybiB0cnVlOwogCX0KKworCXJldHVybiBmYWxzZTsK IH0KIAogc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjc3RhdGUsCkBAIC00MDQzLDggKzM5MjYsMTAgQEAgc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUt PmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 CiAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9t aWNfc3RhdGUoc3RhdGUpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGU7CiAJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Ci0Jc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAq ZGRiID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpvbGRfZGRiID0gJmRldl9wcml2LT53bS5za2xfaHcuZGRiOworCXN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKm5ld19kZGIgPSAmaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGRiOwog CXVpbnQzMl90IHJlYWxsb2NfcGlwZXMgPSBwaXBlc19tb2RpZmllZChzdGF0ZSk7CiAJaW50IHJl dDsKIApAQCAtNDA3NiwxMyArMzk2MSwxMSBAQCBza2xfY29tcHV0ZV9kZGIoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQogCX0KIAogCWZvcl9lYWNoX2ludGVsX2NydGNfbWFzayhkZXYs IGludGVsX2NydGMsIHJlYWxsb2NfcGlwZXMpIHsKLQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZTsKLQogCQljc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUs IGludGVsX2NydGMpOwogCQlpZiAoSVNfRVJSKGNzdGF0ZSkpCiAJCQlyZXR1cm4gUFRSX0VSUihj c3RhdGUpOwogCi0JCXJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIGRkYik7CisJ CXJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIG5ld19kZGIpOwogCQlpZiAocmV0 KQogCQkJcmV0dXJuIHJldDsKIApAQCAtNDA5MSw2ICszOTc0LDczIEBAIHNrbF9jb21wdXRlX2Rk YihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAor CS8qCisJICogV2hlbiBzZXR0aW5nIHVwIGEgbmV3IEREQiBhbGxvY2F0aW9uIGFycmFuZ2VtZW50 LCB3ZSBuZWVkIHRvCisJICogY29ycmVjdGx5IHNlcXVlbmNlIHRoZSB0aW1lcyBhdCB3aGljaCB0 aGUgbmV3IGFsbG9jYXRpb25zIGZvciB0aGUKKwkgKiBwaXBlcyBhcmUgdGFrZW4gaW50byBhY2Nv dW50IG9yIHdlJ2xsIGhhdmUgcGlwZXMgZmV0Y2hpbmcgZnJvbSBzcGFjZQorCSAqIHByZXZpb3Vz bHkgYWxsb2NhdGVkIHRvIGFub3RoZXIgcGlwZS4KKwkgKgorCSAqIFJvdWdobHkgdGhlIGZpbmFs IHNlcXVlbmNlIHdlIHdhbnQgbG9va3MgbGlrZSB0aGlzOgorCSAqICAxLiBEaXNhYmxlIGFueSBw aXBlcyB3ZSdyZSBub3QgZ29pbmcgdG8gYmUgdXNpbmcgYW55bW9yZQorCSAqICAyLiBSZWFsbG9j YXRlIGFsbCBvZiB0aGUgYWN0aXZlIHBpcGVzIHdob3NlIG5ldyBkZGIgYWxsb2NhdGlvbnMKKwkg KiAgd29uJ3Qgb3ZlcmxhcCB3aXRoIGFub3RoZXIgYWN0aXZlIHBpcGUncyBkZGIgYWxsb2NhdGlv bi4KKwkgKiAgMy4gUmVhbGxvY2F0ZSByZW1haW5pbmcgYWN0aXZlIHBpcGVzLCBpZiBhbnkuCisJ ICogIDQuIEVuYWJsZSBhbnkgbmV3IHBpcGVzLCBpZiBhbnkuCisJICoKKwkgKiBFeGFtcGxlOgor CSAqIEluaXRpYWxseSBEREIgbG9va3MgbGlrZSB0aGlzOgorCSAqICAgfCAgIEIgICAgfCAgIEMg ICAgfAorCSAqIEFuZCB0aGUgZmluYWwgRERCIHNob3VsZCBsb29rIGxpa2UgdGhpczoKKwkgKiAg IHwgIEIgIHwgIEMgIHwgIEEgIHwKKwkgKgorCSAqIDEuIFdlJ3JlIG5vdCBkaXNhYmxpbmcgYW55 IHBpcGVzLCBzbyBkbyBub3RoaW5nIG9uIHRoaXMgc3RlcC4KKwkgKiAyLiBQaXBlIEIncyBuZXcg YWxsb2NhdGlvbiB3b3VsZG4ndCBvdmVybGFwIHdpdGggcGlwZSBDLCBob3dldmVyCisJICogcGlw ZSBDJ3MgbmV3IGFsbG9jYXRpb24gZG9lcyBvdmVybGFwIHdpdGggcGlwZSBCJ3MgY3VycmVudAor CSAqIGFsbG9jYXRpb24uIFJlYWxsb2NhdGUgQiBmaXJzdCBzbyB0aGUgRERCIGxvb2tzIGxpa2Ug dGhpczoKKwkgKiAgIHwgIEIgIHx4eHwgICBDICAgIHwKKwkgKiAzLiBOb3cgd2UgY2FuIHNhZmVs eSByZWFsbG9jYXRlIHBpcGUgQyB0byBpdCdzIG5ldyBsb2NhdGlvbjoKKwkgKiAgIHwgIEIgIHwg IEMgIHx4eHh4eHwKKwkgKiA0LiBFbmFibGUgYW55IHJlbWFpbmluZyBwaXBlcywgaW4gdGhpcyBj YXNlIEEKKwkgKiAgIHwgIEIgIHwgIEMgIHwgIEEgIHwKKwkgKgorCSAqIEFzIHdlbGwsIGJldHdl ZW4gZXZlcnkgcGlwZSByZWFsbG9jYXRpb24gd2UgaGF2ZSB0byB3YWl0IGZvciBhCisJICogdmJs YW5rIG9uIHRoZSBwaXBlIHNvIHRoYXQgd2UgZW5zdXJlIGl0J3MgbmV3IGFsbG9jYXRpb24gaGFz IHRha2VuCisJICogZWZmZWN0IGJ5IHRoZSB0aW1lIHdlIHN0YXJ0IG1vdmluZyB0aGUgbmV4dCBw aXBlLiBUaGlzIGNhbiBiZQorCSAqIHNraXBwZWQgb24gdGhlIGxhc3Qgc3RlcCB3ZSBuZWVkIHRv IHBlcmZvcm0sIHdoaWNoIGlzIHdoeSB3ZSBrZWVwCisJICogdHJhY2sgb2YgdGhhdCBpbmZvcm1h dGlvbiBoZXJlLiBGb3IgZXhhbXBsZSwgaWYgd2UndmUgcmVhbGxvY2F0ZWQKKwkgKiBhbGwgdGhl IHBpcGVzIHRoYXQgbmVlZCBjaGFuZ2luZyBieSB0aGUgdGltZSB3ZSByZWFjaCBzdGVwIDMsIHdl IGNhbgorCSAqIGZpbmlzaCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBwaXBlcyB3ZSBjaGFuZ2Vk IGluIHN0ZXAgMyB0byB1cGRhdGUuCisJICovCisJZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNrKGRl diwgaW50ZWxfY3J0YywgcmVhbGxvY19waXBlcykgeworCQllbnVtIHBpcGUgcGlwZSA9IGludGVs X2NydGMtPnBpcGU7CisJCWVudW0gc2tsX2RkYl9zdGVwIHN0ZXA7CisKKwkJY3N0YXRlID0gaW50 ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9jcnRjKTsKKwkJaWYgKElTX0VS Uihjc3RhdGUpKQorCQkJcmV0dXJuIFBUUl9FUlIoY3N0YXRlKTsKKworCQkvKiBTdGVwIDE6IFBp cGVzIHdlJ3JlIGRpc2FibGluZyAvIGhhdmVuJ3QgY2hhbmdlZCAqLworCQlpZiAoc2tsX2RkYl9h bGxvY2F0aW9uX2VxdWFscyhvbGRfZGRiLCBuZXdfZGRiLCBwaXBlKSB8fAorCQkgICAgbmV3X2Rk Yi0+cGlwZVtwaXBlXS5lbmQgPT0gMCkgeworCQkJc3RlcCA9IFNLTF9EREJfU1RFUF9OT05FOwor CQkvKiBTdGVwIDItMzogQWN0aXZlIHBpcGVzIHdlJ3JlIHJlYWxsb2NhdGluZyAqLworCQl9IGVs c2UgaWYgKG9sZF9kZGItPnBpcGVbcGlwZV0uZW5kICE9IDApIHsKKwkJCWlmIChza2xfZGRiX2Fs bG9jYXRpb25fb3ZlcmxhcHMoc3RhdGUsIG9sZF9kZGIsIG5ld19kZGIsCisJCQkJCQkJcGlwZSkp CisJCQkJc3RlcCA9IFNLTF9EREJfU1RFUF9PVkVSTEFQOworCQkJZWxzZQorCQkJCXN0ZXAgPSBT S0xfRERCX1NURVBfTk9fT1ZFUkxBUDsKKwkJLyogU3RlcCA0OiBQaXBlcyB3ZSdyZSBlbmFibGlu ZyAqLworCQl9IGVsc2UgeworCQkJc3RlcCA9IFNLTF9EREJfU1RFUF9GSU5BTDsKKwkJfQorCisJ CWNzdGF0ZS0+d20uc2tsLmRkYl9yZWFsbG9jID0gc3RlcDsKKworCQlpZiAoc3RlcCA+IGludGVs X3N0YXRlLT5sYXN0X2RkYl9zdGVwKQorCQkJaW50ZWxfc3RhdGUtPmxhc3RfZGRiX3N0ZXAgPSBz dGVwOworCX0KKwogCXJldHVybiAwOwogfQogCkBAIC00MTE1LDEwICs0MDY1LDEzIEBAIHNrbF9j b3B5X3dtX2Zvcl9waXBlKHN0cnVjdCBza2xfd21fdmFsdWVzICpkc3QsCiBzdGF0aWMgaW50CiBz a2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKIAlzdHJ1 Y3QgZHJtX2NydGMgKmNydGM7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGU7CiAJc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3Rh dGUoc3RhdGUpOwogCXN0cnVjdCBza2xfd21fdmFsdWVzICpyZXN1bHRzID0gJmludGVsX3N0YXRl LT53bV9yZXN1bHRzOworCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm9sZF9kZGIgPSAmZGV2 X3ByaXYtPndtLnNrbF9ody5kZGI7CisJc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqbmV3X2Rk YiA9ICZyZXN1bHRzLT5kZGI7CiAJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtOwogCWJvb2wg Y2hhbmdlZCA9IGZhbHNlOwogCWludCByZXQsIGk7CkBAIC00MTU3LDcgKzQxMTAsMTAgQEAgc2ts X2NvbXB1dGVfd20oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGUgPQogCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjc3Rh dGUpOworCQllbnVtIHNrbF9kZGJfc3RlcCBzdGVwOworCQllbnVtIHBpcGUgcGlwZTsKIAorCQlw aXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAkJcGlwZV93bSA9ICZpbnRlbF9jc3RhdGUtPndtLnNr bC5vcHRpbWFsOwogCQlyZXQgPSBza2xfdXBkYXRlX3BpcGVfd20oY3N0YXRlLCAmcmVzdWx0cy0+ ZGRiLCBwaXBlX3dtLAogCQkJCQkgJmNoYW5nZWQpOwpAQCAtNDE3Miw3ICs0MTI4LDE4IEBAIHNr bF9jb21wdXRlX3dtKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJCWNvbnRpbnVl OwogCiAJCWludGVsX2NzdGF0ZS0+dXBkYXRlX3dtX3ByZSA9IHRydWU7CisJCXN0ZXAgPSBpbnRl bF9jc3RhdGUtPndtLnNrbC5kZGJfcmVhbGxvYzsKIAkJc2tsX2NvbXB1dGVfd21fcmVzdWx0cyhj cnRjLT5kZXYsIHBpcGVfd20sIHJlc3VsdHMsIGludGVsX2NydGMpOworCisJCWlmICghc2tsX2Rk Yl9lbnRyeV9lcXVhbCgmb2xkX2RkYi0+cGlwZVtwaXBlXSwKKwkJCQkJICZuZXdfZGRiLT5waXBl W3BpcGVdKSkgeworCQkJRFJNX0RFQlVHX0tNUygKKwkJCSAgICAiRERCIGNoYW5nZXMgZm9yIFtD UlRDOiVkOnBpcGUgJWNdOiAoJTNkIC0gJTNkKSAtPiAoJTNkIC0gJTNkKSBvbiBzdGVwICVkXG4i LAorCQkJICAgIGludGVsX2NydGMtPmJhc2UuYmFzZS5pZCwgcGlwZV9uYW1lKHBpcGUpLAorCQkJ ICAgIG9sZF9kZGItPnBpcGVbcGlwZV0uc3RhcnQsIG9sZF9kZGItPnBpcGVbcGlwZV0uZW5kLAor CQkJICAgIG5ld19kZGItPnBpcGVbcGlwZV0uc3RhcnQsIG5ld19kZGItPnBpcGVbcGlwZV0uZW5k LAorCQkJICAgIHN0ZXApOworCQl9CiAJfQogCiAJcmV0dXJuIDA7CkBAIC00MTk2LDggKzQxNjMs MjAgQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAK IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwogCi0Jc2tsX3dyaXRlX3dtX3Zh bHVlcyhkZXZfcHJpdiwgcmVzdWx0cyk7Ci0Jc2tsX2ZsdXNoX3dtX3ZhbHVlcyhkZXZfcHJpdiwg cmVzdWx0cyk7CisJLyoKKwkgKiBJZiB0aGlzIHBpcGUgaXNuJ3QgYWN0aXZlIGFscmVhZHksIHdl J3JlIGdvaW5nIHRvIGJlIGVuYWJsaW5nIGl0CisJICogdmVyeSBzb29uLiBTaW5jZSBpdCdzIHNh ZmUgdG8gdXBkYXRlIHRoZXNlIHdoaWxlIHRoZSBwaXBlJ3Mgc2h1dCBvZmYsCisJICoganVzdCBk byBzbyBoZXJlLiBBbHJlYWR5IGFjdGl2ZSBwaXBlcyB3aWxsIGhhdmUgdGhlaXIgd2F0ZXJtYXJr cworCSAqIHVwZGF0ZWQgb25jZSB3ZSB1cGRhdGUgdGhlaXIgcGxhbmVzLgorCSAqLworCWlmICgh aW50ZWxfY3J0Yy0+YWN0aXZlKSB7CisJCWludCBwbGFuZTsKKworCQlmb3IgKHBsYW5lID0gMDsg cGxhbmUgPCBpbnRlbF9udW1fcGxhbmVzKGludGVsX2NydGMpOyBwbGFuZSsrKQorCQkJc2tsX3dy aXRlX3BsYW5lX3dtKGludGVsX2NydGMsIHJlc3VsdHMsIHBsYW5lKTsKKworCQlza2xfd3JpdGVf Y3Vyc29yX3dtKGludGVsX2NydGMsIHJlc3VsdHMpOworCX0KIAogCS8qCiAJICogU3RvcmUgdGhl IG5ldyBjb25maWd1cmF0aW9uIChidXQgb25seSBmb3IgdGhlIHBpcGVzIHRoYXQgaGF2ZQotLSAK Mi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=