From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 38/70] drm/i915: Reduce locking in execlist command submission Date: Tue, 7 Apr 2015 16:21:02 +0100 Message-ID: <1428420094-18352-39-git-send-email-chris@chris-wilson.co.uk> References: <1428420094-18352-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from relay.fireflyinternet.com (hostedrelay.fireflyinternet.com [109.228.30.76]) by gabe.freedesktop.org (Postfix) with ESMTP id D8A1D6E5A9 for ; Tue, 7 Apr 2015 08:22:13 -0700 (PDT) In-Reply-To: <1428420094-18352-1-git-send-email-chris@chris-wilson.co.uk> 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 Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org VGhpcyBlbGltaW5hdGVzIHNpeCBuZWVkbGVzcyBzcGluIGxvY2svdW5sb2NrIHBhaXJzIHdoZW4g d3JpdGluZyBvdXQKRUxTUC4KCnYyOiBSZXNwaW4gd2l0aCBteSBwcmVmZXJyZWQgY29sb3VyLgp2 MzogTW9zdGx5IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNvbG91cgoKU2lnbmVkLW9mZi1ieTogVHZy dGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4gW3YxXQpTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgfCAxOCArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YyAgICB8IDE2ICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgfCA5 OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs IDEwMyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAppbmRleCAwZGJjN2Q2OWYxNDguLjc1ODFjMGY1OTA4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCkBAIC0yNTUxLDYgKzI1NTEsMTMgQEAgdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dl dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJZW51bSBmb3JjZXdha2Vf ZG9tYWlucyBkb21haW5zKTsKIHZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMg ZG9tYWlucyk7CisvKiBMaWtlIGFib3ZlIGJ1dCB0aGUgY2FsbGVyIG11c3QgbWFuYWdlIHRoZSB1 bmNvcmUubG9jayBpdHNlbGYuCisgKiBNdXN0IGJlIHVzZWQgd2l0aCBJOTE1X1JFQURfRlcgYW5k IGZyaWVuZHMuCisgKi8KK3ZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJCWVudW0gZm9yY2V3YWtlX2Rv bWFpbnMgZG9tYWlucyk7Cit2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQllbnVtIGZvcmNld2FrZV9k b21haW5zIGRvbWFpbnMpOwogdm9pZCBhc3NlcnRfZm9yY2V3YWtlc19pbmFjdGl2ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogc3RhdGljIGlubGluZSBib29sIGludGVsX3Zn cHVfYWN0aXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CkBAIC0zMjQ5LDYgKzMyNTYsMTcg QEAgaW50IGludGVsX2ZyZXFfb3Bjb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgaW50IHZhbCk7CiAjZGVmaW5lIFBPU1RJTkdfUkVBRChyZWcpCSh2b2lkKUk5MTVfUkVBRF9O T1RSQUNFKHJlZykKICNkZWZpbmUgUE9TVElOR19SRUFEMTYocmVnKQkodm9pZClJOTE1X1JFQUQx Nl9OT1RSQUNFKHJlZykKIAorLyogVGhlc2UgYXJlIHVudHJhY2VkIG1taW8tYWNjZXNzb3JzIHRo YXQgYXJlIG9ubHkgdmFsaWQgdG8gYmUgdXNlZCBpbnNpZGUKKyAqIGNyaXRpY2lhbCBzZWN0aW9u cyBpbnNpZGUgSVJRIGhhbmRsZXJzIHdoZXJlIGZvcmNld2FrZSBpcyBleHBsaWNpdGx5CisgKiBj b250cm9sbGVkLgorICogVGhpbmsgdHdpY2UsIGFuZCB0aGluayBhZ2FpbiwgYmVmb3JlIHVzaW5n IHRoZXNlLgorICogTm90ZTogU2hvdWxkIG9ubHkgYmUgdXNlZCBiZXR3ZWVuIGludGVsX3VuY29y ZV9mb3JjZXdha2VfaXJxbG9jaygpIGFuZAorICogaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9pcnF1 bmxvY2soKS4KKyAqLworI2RlZmluZSBJOTE1X1JFQURfRlcocmVnX18pIHJlYWRsKGRldl9wcml2 LT5yZWdzICsgKHJlZ19fKSkKKyNkZWZpbmUgSTkxNV9XUklURV9GVyhyZWdfXywgdmFsX18pIHdy aXRlbCh2YWxfXywgZGV2X3ByaXYtPnJlZ3MgKyAocmVnX18pKQorI2RlZmluZSBQT1NUSU5HX1JF QURfRlcocmVnX18pICh2b2lkKUk5MTVfUkVBRF9GVyhyZWdfXykKKwogLyogIkJyb2FkY2FzdCBS R0IiIHByb3BlcnR5ICovCiAjZGVmaW5lIElOVEVMX0JST0FEQ0FTVF9SR0JfQVVUTyAwCiAjZGVm aW5lIElOVEVMX0JST0FEQ0FTVF9SR0JfRlVMTCAxCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmlu ZGV4IDI0YzM2N2Y5ZmRkZi4uMDhlMzUwMDNjNGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwpAQCAtMjc4LDE3ICsyNzgsMTkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9wYWly KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJZGVzY1szXSA9IHJpbmctPmV4ZWNsaXN0 X3BvcnRbMF0tPnNlcW5vOwogCiAJLyogTm90ZTogWW91IG11c3QgYWx3YXlzIHdyaXRlIGJvdGgg ZGVzY3JpcHRvcnMgaW4gdGhlIG9yZGVyIGJlbG93LiAqLwotCWludGVsX3VuY29yZV9mb3JjZXdh a2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKLQlJOTE1X1dSSVRFKFJJTkdfRUxTUChy aW5nKSwgZGVzY1sxXSk7Ci0JSTkxNV9XUklURShSSU5HX0VMU1AocmluZyksIGRlc2NbMF0pOwot CUk5MTVfV1JJVEUoUklOR19FTFNQKHJpbmcpLCBkZXNjWzNdKTsKKwlzcGluX2xvY2soJmRldl9w cml2LT51bmNvcmUubG9jayk7CisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChk ZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisJSTkxNV9XUklURV9GVyhSSU5HX0VMU1AocmluZyks IGRlc2NbMV0pOworCUk5MTVfV1JJVEVfRlcoUklOR19FTFNQKHJpbmcpLCBkZXNjWzBdKTsKKwlJ OTE1X1dSSVRFX0ZXKFJJTkdfRUxTUChyaW5nKSwgZGVzY1szXSk7CiAKIAkvKiBUaGUgY29udGV4 dCBpcyBhdXRvbWF0aWNhbGx5IGxvYWRlZCBhZnRlciB0aGUgZm9sbG93aW5nICovCi0JSTkxNV9X UklURShSSU5HX0VMU1AocmluZyksIGRlc2NbMl0pOworCUk5MTVfV1JJVEVfRlcoUklOR19FTFNQ KHJpbmcpLCBkZXNjWzJdKTsKIAogCS8qIEVMU1AgaXMgYSB3byByZWdpc3RlciwgdXNlIGFub3Ro ZXIgbmVhcmJ5IHJlZyBmb3IgcG9zdGluZyBpbnN0ZWFkICovCi0JUE9TVElOR19SRUFEKFJJTkdf RVhFQ0xJU1RfU1RBVFVTKHJpbmcpKTsKLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZf cHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisJUE9TVElOR19SRUFEX0ZXKFJJTkdfRVhFQ0xJU1RfU1RB VFVTKHJpbmcpKTsKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2VkKGRldl9wcml2 LCBGT1JDRVdBS0VfQUxMKTsKKwlzcGluX3VubG9jaygmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsK IH0KIAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwppbmRleCAwZTMy YmJiY2FkYTguLjIwY2MzMjVkNjIyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMK QEAgLTM5OSw2ICszOTksMjYgQEAgdm9pZCBpbnRlbF91bmNvcmVfc2FuaXRpemUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAlpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShkZXYpOwogfQogCitz dGF0aWMgdm9pZCBfX2ludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCQkJIGVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlu cykKK3sKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmRvbWFpbjsKKwll bnVtIGZvcmNld2FrZV9kb21haW5faWQgaWQ7CisKKwlpZiAoIWRldl9wcml2LT51bmNvcmUuZnVu Y3MuZm9yY2Vfd2FrZV9nZXQpCisJCXJldHVybjsKKworCWZ3X2RvbWFpbnMgJj0gZGV2X3ByaXYt PnVuY29yZS5md19kb21haW5zOworCisJZm9yX2VhY2hfZndfZG9tYWluX21hc2soZG9tYWluLCBm d19kb21haW5zLCBkZXZfcHJpdiwgaWQpIHsKKwkJaWYgKGRvbWFpbi0+d2FrZV9jb3VudCsrKQor CQkJZndfZG9tYWlucyAmPSB+KDEgPDwgaWQpOworCX0KKworCWlmIChmd19kb21haW5zKQorCQlk ZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0KGRldl9wcml2LCBmd19kb21haW5z KTsKK30KKwogLyoqCiAgKiBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCAtIGdyYWIgZm9yY2V3 YWtlIGRvbWFpbiByZWZlcmVuY2VzCiAgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNl CkBAIC00MTYsNDEgKzQzNiwzOSBAQCB2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQllbnVtIGZvcmNld2FrZV9kb21h aW5zIGZ3X2RvbWFpbnMpCiB7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKLQlzdHJ1Y3QgaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmRvbWFpbjsKLQllbnVtIGZvcmNld2FrZV9kb21h aW5faWQgaWQ7CiAKIAlpZiAoIWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQp CiAJCXJldHVybjsKIAogCVdBUk5fT04oZGV2X3ByaXYtPnBtLnN1c3BlbmRlZCk7CiAKLQlmd19k b21haW5zICY9IGRldl9wcml2LT51bmNvcmUuZndfZG9tYWluczsKLQogCXNwaW5fbG9ja19pcnFz YXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKLQotCWZvcl9lYWNoX2Z3X2Rv bWFpbl9tYXNrKGRvbWFpbiwgZndfZG9tYWlucywgZGV2X3ByaXYsIGlkKSB7Ci0JCWlmIChkb21h aW4tPndha2VfY291bnQrKykKLQkJCWZ3X2RvbWFpbnMgJj0gfigxIDw8IGlkKTsKLQl9Ci0KLQlp ZiAoZndfZG9tYWlucykKLQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldChk ZXZfcHJpdiwgZndfZG9tYWlucyk7Ci0KKwlfX2ludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRl dl9wcml2LCBmd19kb21haW5zKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+ dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKIH0KIAogLyoqCi0gKiBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX3B1dCAtIHJlbGVhc2UgYSBmb3JjZXdha2UgZG9tYWluIHJlZmVyZW5jZQorICogaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZCAtIGdyYWIgZm9yY2V3YWtlIGRvbWFpbiByZWZl cmVuY2VzCiAgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCi0gKiBAZndfZG9tYWlu czogZm9yY2V3YWtlIGRvbWFpbnMgdG8gcHV0IHJlZmVyZW5jZXMKKyAqIEBmd19kb21haW5zOiBm b3JjZXdha2UgZG9tYWlucyB0byBnZXQgcmVmZXJlbmNlIG9uCiAgKgotICogVGhpcyBmdW5jdGlv biBkcm9wcyB0aGUgZGV2aWNlLWxldmVsIGZvcmNld2FrZXMgZm9yIHNwZWNpZmllZAotICogZG9t YWlucyBvYnRhaW5lZCBieSBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgpLgorICogU2VlIGlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCkuIFRoaXMgdmFyaWFudCBwbGFjZXMgdGhlIG9udXMK KyAqIG9uIHRoZSBjYWxsZXIgdG8gZXhwbGljaXRseSBoYW5kbGUgdGhlIGRldl9wcml2LT51bmNv cmUubG9jayBzcGlubG9jay4KICAqLwotdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJZW51bSBmb3JjZXdha2VfZG9t YWlucyBmd19kb21haW5zKQordm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldF9fbG9ja2Vk KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJZW51bSBmb3JjZXdha2Vf ZG9tYWlucyBmd19kb21haW5zKQoreworCWFzc2VydF9zcGluX2xvY2tlZCgmZGV2X3ByaXYtPnVu Y29yZS5sb2NrKTsKKworCWlmICghZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dl dCkKKwkJcmV0dXJuOworCisJX19pbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwg ZndfZG9tYWlucyk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9w dXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQkgZW51bSBmb3JjZXdh a2VfZG9tYWlucyBmd19kb21haW5zKQogewotCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAJc3Ry dWN0IGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9tYWluICpkb21haW47CiAJZW51bSBmb3JjZXdh a2VfZG9tYWluX2lkIGlkOwogCkBAIC00NTksOCArNDc3LDYgQEAgdm9pZCBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlmd19k b21haW5zICY9IGRldl9wcml2LT51bmNvcmUuZndfZG9tYWluczsKIAotCXNwaW5fbG9ja19pcnFz YXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKLQogCWZvcl9lYWNoX2Z3X2Rv bWFpbl9tYXNrKGRvbWFpbiwgZndfZG9tYWlucywgZGV2X3ByaXYsIGlkKSB7CiAJCWlmIChXQVJO X09OKGRvbWFpbi0+d2FrZV9jb3VudCA9PSAwKSkKIAkJCWNvbnRpbnVlOwpAQCAtNDcxLDEwICs0 ODcsNDggQEAgdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWRvbWFpbi0+d2FrZV9jb3VudCsrOwogCQlmd19kb21haW5f YXJtX3RpbWVyKGRvbWFpbik7CiAJfQorfQogCisvKioKKyAqIGludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0IC0gcmVsZWFzZSBhIGZvcmNld2FrZSBkb21haW4gcmVmZXJlbmNlCisgKiBAZGV2X3By aXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCisgKiBAZndfZG9tYWluczogZm9yY2V3YWtlIGRvbWFp bnMgdG8gcHV0IHJlZmVyZW5jZXMKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGRyb3BzIHRoZSBkZXZp Y2UtbGV2ZWwgZm9yY2V3YWtlcyBmb3Igc3BlY2lmaWVkCisgKiBkb21haW5zIG9idGFpbmVkIGJ5 IGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCkuCisgKi8KK3ZvaWQgaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCWVudW0g Zm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucykKK3sKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdz OworCisJaWYgKCFkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0KQorCQlyZXR1 cm47CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFn cyk7CisJX19pbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgZndfZG9tYWlucyk7 CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFn cyk7CiB9CiAKKy8qKgorICogaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXRfX2xvY2tlZCAtIGdy YWIgZm9yY2V3YWtlIGRvbWFpbiByZWZlcmVuY2VzCisgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNl IGluc3RhbmNlCisgKiBAZndfZG9tYWluczogZm9yY2V3YWtlIGRvbWFpbnMgdG8gZ2V0IHJlZmVy ZW5jZSBvbgorICoKKyAqIFNlZSBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgpLiBUaGlzIHZh cmlhbnQgcGxhY2VzIHRoZSBvbnVzCisgKiBvbiB0aGUgY2FsbGVyIHRvIGV4cGxpY2l0bHkgaGFu ZGxlIHRoZSBkZXZfcHJpdi0+dW5jb3JlLmxvY2sgc3BpbmxvY2suCisgKi8KK3ZvaWQgaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXRfX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCisJCQkJCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucykKK3sKKwlhc3Nl cnRfc3Bpbl9sb2NrZWQoJmRldl9wcml2LT51bmNvcmUubG9jayk7CisKKwlpZiAoIWRldl9wcml2 LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQpCisJCXJldHVybjsKKworCV9faW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIGZ3X2RvbWFpbnMpOworfQorCiB2b2lkIGFzc2Vy dF9mb3JjZXdha2VzX2luYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IHsKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmRvbWFpbjsKLS0gCjIu MS40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=