From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oded Gabbay Subject: [PATCH 2/9] drm/amdkfd: Add interrupt handling module Date: Tue, 21 Apr 2015 15:47:19 +0300 Message-ID: <1429620446-28017-2-git-send-email-oded.gabbay@amd.com> References: <1429620446-28017-1-git-send-email-oded.gabbay@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0140.outbound.protection.outlook.com [157.56.111.140]) by gabe.freedesktop.org (Postfix) with ESMTP id 082B5720AC for ; Tue, 21 Apr 2015 05:48:31 -0700 (PDT) In-Reply-To: <1429620446-28017-1-git-send-email-oded.gabbay@amd.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: Andrew Lewycky List-Id: dri-devel@lists.freedesktop.org RnJvbTogQW5kcmV3IExld3lja3kgPEFuZHJldy5MZXd5Y2t5QGFtZC5jb20+CgpUaGlzIHBhdGNo IGFkZHMgdGhlIGludGVycnVwdCBoYW5kbGluZyBtb2R1bGUsIGtmZF9pbnRlcnJ1cHQuYywgYW5k IGl0cwpyZWxhdGVkIG1lbWJlcnMgaW4gZGlmZmVyZW50IGRhdGEgc3RydWN0dXJlcyB0byB0aGUg YW1ka2ZkIGRyaXZlci4KClRoZSBhbWRrZmQgaW50ZXJydXB0IG1vZHVsZSBtYWludGFpbnMgYW4g aW50ZXJuYWwgaW50ZXJydXB0IHJpbmcgcGVyIGFtZGtmZApkZXZpY2UuIFRoZSBpbnRlcm5hbCBp bnRlcnJ1cHQgcmluZyBjb250YWlucyBpbnRlcnJ1cHRzIHRoYXQgbmVlZHMgZnVydGhlcgpoYW5k bGluZy4gVGhlIGV4dHJhIGhhbmRsaW5nIGlzIGRlZmVycmVkIHRvIGEgbGF0ZXIgdGltZSB0aHJv dWdoIGEgd29ya3F1ZXVlLgoKVGhlcmUncyBubyBhY2tub3dsZWRnbWVudCBmb3IgdGhlIGludGVy cnVwdHMgd2UgdXNlLiBUaGUgaGFyZHdhcmUgc2ltcGx5IHF1ZXVlcwphIG5ldyBpbnRlcnJ1cHQg ZWFjaCB0aW1lIHdpdGhvdXQgd2FpdGluZy4KClRoZSBmaXhlZC1zaXplIGludGVybmFsIHF1ZXVl IG1lYW5zIHRoYXQgaXQncyBwb3NzaWJsZSBmb3IgdXMgdG8gbG9zZQppbnRlcnJ1cHRzIGJlY2F1 c2Ugd2UgaGF2ZSBubyBiYWNrLXByZXNzdXJlIHRvIHRoZSBoYXJkd2FyZS4KCkhvd2V2ZXIsIG9u bHkgaW50ZXJydXB0cyB0aGF0IGFyZSAid2FudGVkIiBieSBhbWRrZmQsIGFyZSBjb3BpZWQgaW50 byB0aGUKYW1ka2ZkIHMvdyBpbnRlcnJ1cHQgcmluZywgaW4gb3JkZXIgdG8gbWluaW1pemUgdGhl IGNoYW5jZXMgZm9yIG92ZXJmbG93IG9mIHRoZQpyaW5nLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3 IExld3lja3kgPEFuZHJldy5MZXd5Y2t5QGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IE9kZWQgR2Fi YmF5IDxvZGVkLmdhYmJheUBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2Zk L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9kZXZpY2UuYyAgICAgICAgICAgIHwgIDIyICsrLQogLi4uL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYyAgfCAgMTUgKysKIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9pbnRlcnJ1cHQuYyAgICAgICAgIHwgMTgxICsrKysrKysrKysrKysr KysrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaCAgICAgICAgICAg ICAgfCAgMTcgKysKIDUgZmlsZXMgY2hhbmdlZCwgMjM1IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf aW50ZXJydXB0LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL01ha2VmaWxlCmluZGV4IDBmNDk2MDEu LmNkMDljMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL01ha2VmaWxlCkBAIC0xMiw1ICsxMiw2 IEBAIGFtZGtmZC15CTo9IGtmZF9tb2R1bGUubyBrZmRfZGV2aWNlLm8ga2ZkX2NoYXJkZXYubyBr ZmRfdG9wb2xvZ3kubyBcCiAJCWtmZF9rZXJuZWxfcXVldWVfdmkubyBrZmRfcGFja2V0X21hbmFn ZXIubyBcCiAJCWtmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIubyBrZmRfZGV2aWNlX3F1ZXVlX21h bmFnZXIubyBcCiAJCWtmZF9kZXZpY2VfcXVldWVfbWFuYWdlcl9jaWsubyBrZmRfZGV2aWNlX3F1 ZXVlX21hbmFnZXJfdmkubyBcCisJCWtmZF9pbnRlcnJ1cHQubwogCiBvYmotJChDT05GSUdfSFNB X0FNRCkJKz0gYW1ka2ZkLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2Zk L2tmZF9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYwpp bmRleCBjYTdmMmQzLi4xM2MzMGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rl dmljZS5jCkBAIC0yMzUsNiArMjM1LDEzIEBAIGJvb2wga2dkMmtmZF9kZXZpY2VfaW5pdChzdHJ1 Y3Qga2ZkX2RldiAqa2ZkLAogCQlnb3RvIGtmZF90b3BvbG9neV9hZGRfZGV2aWNlX2Vycm9yOwog CX0KIAorCWlmIChrZmRfaW50ZXJydXB0X2luaXQoa2ZkKSkgeworCQlkZXZfZXJyKGtmZF9kZXZp Y2UsCisJCQkiRXJyb3IgaW5pdGlhbGl6aW5nIGludGVycnVwdHMgZm9yIGRldmljZSAoJXg6JXgp XG4iLAorCQkJa2ZkLT5wZGV2LT52ZW5kb3IsIGtmZC0+cGRldi0+ZGV2aWNlKTsKKwkJZ290byBr ZmRfaW50ZXJydXB0X2Vycm9yOworCX0KKwogCWlmICghZGV2aWNlX2lvbW11X3Bhc2lkX2luaXQo a2ZkKSkgewogCQlkZXZfZXJyKGtmZF9kZXZpY2UsCiAJCQkiRXJyb3IgaW5pdGlhbGl6aW5nIGlv bW11djIgZm9yIGRldmljZSAoJXg6JXgpXG4iLApAQCAtMjczLDYgKzI4MCw4IEBAIGRxbV9zdGFy dF9lcnJvcjoKIGRldmljZV9xdWV1ZV9tYW5hZ2VyX2Vycm9yOgogCWFtZF9pb21tdV9mcmVlX2Rl dmljZShrZmQtPnBkZXYpOwogZGV2aWNlX2lvbW11X3Bhc2lkX2Vycm9yOgorCWtmZF9pbnRlcnJ1 cHRfZXhpdChrZmQpOwora2ZkX2ludGVycnVwdF9lcnJvcjoKIAlrZmRfdG9wb2xvZ3lfcmVtb3Zl X2RldmljZShrZmQpOwoga2ZkX3RvcG9sb2d5X2FkZF9kZXZpY2VfZXJyb3I6CiAJa2ZkX2d0dF9z YV9maW5pKGtmZCk7CkBAIC0yOTAsNiArMjk5LDcgQEAgdm9pZCBrZ2Qya2ZkX2RldmljZV9leGl0 KHN0cnVjdCBrZmRfZGV2ICprZmQpCiAJaWYgKGtmZC0+aW5pdF9jb21wbGV0ZSkgewogCQlkZXZp Y2VfcXVldWVfbWFuYWdlcl91bmluaXQoa2ZkLT5kcW0pOwogCQlhbWRfaW9tbXVfZnJlZV9kZXZp Y2Uoa2ZkLT5wZGV2KTsKKwkJa2ZkX2ludGVycnVwdF9leGl0KGtmZCk7CiAJCWtmZF90b3BvbG9n eV9yZW1vdmVfZGV2aWNlKGtmZCk7CiAJCWtmZF9ndHRfc2FfZmluaShrZmQpOwogCQlrZmQtPmtm ZDJrZ2QtPmZyZWVfZ3R0X21lbShrZmQtPmtnZCwga2ZkLT5ndHRfbWVtKTsKQEAgLTMzMyw3ICsz NDMsMTcgQEAgaW50IGtnZDJrZmRfcmVzdW1lKHN0cnVjdCBrZmRfZGV2ICprZmQpCiAvKiBUaGlz IGlzIGNhbGxlZCBkaXJlY3RseSBmcm9tIEtHRCBhdCBJU1IuICovCiB2b2lkIGtnZDJrZmRfaW50 ZXJydXB0KHN0cnVjdCBrZmRfZGV2ICprZmQsIGNvbnN0IHZvaWQgKmloX3JpbmdfZW50cnkpCiB7 Ci0JLyogUHJvY2VzcyBpbnRlcnJ1cHRzIC8gc2NoZWR1bGUgd29yayBhcyBuZWNlc3NhcnkgKi8K KwlpZiAoIWtmZC0+aW5pdF9jb21wbGV0ZSkKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrKCZrZmQt PmludGVycnVwdF9sb2NrKTsKKworCWlmIChrZmQtPmludGVycnVwdHNfYWN0aXZlCisJICAgICYm IGludGVycnVwdF9pc193YW50ZWQoa2ZkLCBpaF9yaW5nX2VudHJ5KQorCSAgICAmJiBlbnF1ZXVl X2loX3JpbmdfZW50cnkoa2ZkLCBpaF9yaW5nX2VudHJ5KSkKKwkJc2NoZWR1bGVfd29yaygma2Zk LT5pbnRlcnJ1cHRfd29yayk7CisKKwlzcGluX3VubG9jaygma2ZkLT5pbnRlcnJ1cHRfbG9jayk7 CiB9CiAKIHN0YXRpYyBpbnQga2ZkX2d0dF9zYV9pbml0KHN0cnVjdCBrZmRfZGV2ICprZmQsIHVu c2lnbmVkIGludCBidWZfc2l6ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMKaW5kZXggNjlhZjczZi4uNWM1MzBlMSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5h Z2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9t YW5hZ2VyLmMKQEAgLTUyMiw2ICs1MjIsMTcgQEAgaW50IGluaXRfcGlwZWxpbmVzKHN0cnVjdCBk ZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBp bml0X2ludGVycnVwdHMoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCit7CisJdW5z aWduZWQgaW50IGk7CisKKwlCVUdfT04oZHFtID09IE5VTEwpOworCisJZm9yIChpID0gMCA7IGkg PCBnZXRfcGlwZXNfbnVtKGRxbSkgOyBpKyspCisJCWRxbS0+ZGV2LT5rZmQya2dkLT5pbml0X2lu dGVycnVwdHMoZHFtLT5kZXYtPmtnZCwKKwkJCQlpICsgZ2V0X2ZpcnN0X3BpcGUoZHFtKSk7Cit9 CisKIHN0YXRpYyBpbnQgaW5pdF9zY2hlZHVsZXIoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2Vy ICpkcW0pCiB7CiAJaW50IHJldHZhbDsKQEAgLTU4MSw2ICs1OTIsNyBAQCBzdGF0aWMgdm9pZCB1 bmluaXRpYWxpemVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKIAog c3RhdGljIGludCBzdGFydF9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFt KQogeworCWluaXRfaW50ZXJydXB0cyhkcW0pOwogCXJldHVybiAwOwogfQogCkBAIC03NTAsNiAr NzYyLDkgQEAgc3RhdGljIGludCBzdGFydF9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFn ZXIgKmRxbSkKIAogCWRxbS0+ZmVuY2VfYWRkciA9IGRxbS0+ZmVuY2VfbWVtLT5jcHVfcHRyOwog CWRxbS0+ZmVuY2VfZ3B1X2FkZHIgPSBkcW0tPmZlbmNlX21lbS0+Z3B1X2FkZHI7CisKKwlpbml0 X2ludGVycnVwdHMoZHFtKTsKKwogCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJmRxbS0+cXVl dWVzLCBsaXN0KQogCQlpZiAobm9kZS0+cXBkLT5wcW0tPnByb2Nlc3MgJiYgZHFtLT5kZXYpCiAJ CQlrZmRfYmluZF9wcm9jZXNzX3RvX2RldmljZShkcW0tPmRldiwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9pbnRlcnJ1cHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1ka2ZkL2tmZF9pbnRlcnJ1cHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi41MzgzZGQwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2ludGVycnVwdC5jCkBAIC0wLDAgKzEsMTgxIEBACisvKgorICogQ29weXJpZ2h0IDIw MTQgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKy8q CisgKiBLRkQgSW50ZXJydXB0cy4KKyAqCisgKiBBTUQgR1BVcyBkZWxpdmVyIGludGVycnVwdHMg YnkgcHVzaGluZyBhbiBpbnRlcnJ1cHQgZGVzY3JpcHRpb24gb250byB0aGUKKyAqIGludGVycnVw dCByaW5nIGFuZCB0aGVuIHNlbmRpbmcgYW4gaW50ZXJydXB0LiBLR0QgcmVjZWl2ZXMgdGhlIGlu dGVycnVwdAorICogaW4gSVNSIGFuZCBzZW5kcyB1cyBhIHBvaW50ZXIgdG8gZWFjaCBuZXcgZW50 cnkgb24gdGhlIGludGVycnVwdCByaW5nLgorICoKKyAqIFdlIGdlbmVyYWxseSBjYW4ndCBwcm9j ZXNzIGludGVycnVwdC1zaWduYWxlZCBldmVudHMgZnJvbSBJU1IsIHNvIHdlIGNhbGwKKyAqIG91 dCB0byBlYWNoIGludGVycnVwdCBjbGllbnQgbW9kdWxlIChjdXJyZW50bHkgb25seSB0aGUgc2No ZWR1bGVyKSB0byBhc2sgaWYKKyAqIGVhY2ggaW50ZXJydXB0IGlzIGludGVyZXN0aW5nLiBJZiB0 aGV5IHJldHVybiB0cnVlLCB0aGVuIGl0IHJlcXVpcmVzIGZ1cnRoZXIKKyAqIHByb2Nlc3Npbmcg c28gd2UgY29weSBpdCB0byBhbiBpbnRlcm5hbCBpbnRlcnJ1cHQgcmluZyBhbmQgY2FsbCBlYWNo CisgKiBpbnRlcnJ1cHQgY2xpZW50IGFnYWluIGZyb20gYSB3b3JrLXF1ZXVlLgorICoKKyAqIFRo ZXJlJ3Mgbm8gYWNrbm93bGVkZ21lbnQgZm9yIHRoZSBpbnRlcnJ1cHRzIHdlIHVzZS4gVGhlIGhh cmR3YXJlIHNpbXBseQorICogcXVldWVzIGEgbmV3IGludGVycnVwdCBlYWNoIHRpbWUgd2l0aG91 dCB3YWl0aW5nLgorICoKKyAqIFRoZSBmaXhlZC1zaXplIGludGVybmFsIHF1ZXVlIG1lYW5zIHRo YXQgaXQncyBwb3NzaWJsZSBmb3IgdXMgdG8gbG9zZQorICogaW50ZXJydXB0cyBiZWNhdXNlIHdl IGhhdmUgbm8gYmFjay1wcmVzc3VyZSB0byB0aGUgaGFyZHdhcmUuCisgKi8KKworI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlICJrZmRf cHJpdi5oIgorCisjZGVmaW5lIEtGRF9JTlRFUlJVUFRfUklOR19TSVpFIDEwMjQKKworc3RhdGlj IHZvaWQgaW50ZXJydXB0X3dxKHN0cnVjdCB3b3JrX3N0cnVjdCAqKTsKKworaW50IGtmZF9pbnRl cnJ1cHRfaW5pdChzdHJ1Y3Qga2ZkX2RldiAqa2ZkKQoreworCXZvaWQgKmludGVycnVwdF9yaW5n ID0ga21hbGxvY19hcnJheShLRkRfSU5URVJSVVBUX1JJTkdfU0laRSwKKwkJCQkJa2ZkLT5kZXZp Y2VfaW5mby0+aWhfcmluZ19lbnRyeV9zaXplLAorCQkJCQlHRlBfS0VSTkVMKTsKKwlpZiAoIWlu dGVycnVwdF9yaW5nKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWtmZC0+aW50ZXJydXB0X3Jpbmcg PSBpbnRlcnJ1cHRfcmluZzsKKwlrZmQtPmludGVycnVwdF9yaW5nX3NpemUgPQorCQlLRkRfSU5U RVJSVVBUX1JJTkdfU0laRSAqIGtmZC0+ZGV2aWNlX2luZm8tPmloX3JpbmdfZW50cnlfc2l6ZTsK KwlhdG9taWNfc2V0KCZrZmQtPmludGVycnVwdF9yaW5nX3dwdHIsIDApOworCWF0b21pY19zZXQo JmtmZC0+aW50ZXJydXB0X3JpbmdfcnB0ciwgMCk7CisKKwlzcGluX2xvY2tfaW5pdCgma2ZkLT5p bnRlcnJ1cHRfbG9jayk7CisKKwlJTklUX1dPUksoJmtmZC0+aW50ZXJydXB0X3dvcmssIGludGVy cnVwdF93cSk7CisKKwlrZmQtPmludGVycnVwdHNfYWN0aXZlID0gdHJ1ZTsKKworCS8qCisJICog QWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zLCB0aGUgaW50ZXJydXB0IHdpbGwgYmUgZW5hYmxl ZC4gVGhpcworCSAqIGJhcnJpZXIgZW5zdXJlcyB0aGF0IHRoZSBpbnRlcnJ1cHQgcnVubmluZyBv biBhIGRpZmZlcmVudCBwcm9jZXNzb3IKKwkgKiBzZWVzIGFsbCB0aGUgYWJvdmUgd3JpdGVzLgor CSAqLworCXNtcF93bWIoKTsKKworCXJldHVybiAwOworfQorCit2b2lkIGtmZF9pbnRlcnJ1cHRf ZXhpdChzdHJ1Y3Qga2ZkX2RldiAqa2ZkKQoreworCS8qCisJICogU3RvcCB0aGUgaW50ZXJydXB0 IGhhbmRsZXIgZnJvbSB3cml0aW5nIHRvIHRoZSByaW5nIGFuZCBzY2hlZHVsaW5nCisJICogd29y a3F1ZXVlIGl0ZW1zLiBUaGUgc3BpbmxvY2sgZW5zdXJlcyB0aGF0IGFueSBpbnRlcnJ1cHQgcnVu bmluZworCSAqIGFmdGVyIHdlIGhhdmUgdW5sb2NrZWQgc2VlcyBpbnRlcnJ1cHRzX2FjdGl2ZSA9 IGZhbHNlLgorCSAqLworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2 ZSgma2ZkLT5pbnRlcnJ1cHRfbG9jaywgZmxhZ3MpOworCWtmZC0+aW50ZXJydXB0c19hY3RpdmUg PSBmYWxzZTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZrZmQtPmludGVycnVwdF9sb2NrLCBm bGFncyk7CisKKwkvKgorCSAqIEZsdXNoX3NjaGVkdWxlZF93b3JrIGVuc3VyZXMgdGhhdCB0aGVy ZSBhcmUgbm8gb3V0c3RhbmRpbmcKKwkgKiB3b3JrLXF1ZXVlIGl0ZW1zIHRoYXQgd2lsbCBhY2Nl c3MgaW50ZXJydXB0X3JpbmcuIE5ldyB3b3JrIGl0ZW1zCisJICogY2FuJ3QgYmUgY3JlYXRlZCBi ZWNhdXNlIHdlIHN0b3BwZWQgaW50ZXJydXB0IGhhbmRsaW5nIGFib3ZlLgorCSAqLworCWZsdXNo X3NjaGVkdWxlZF93b3JrKCk7CisKKwlrZnJlZShrZmQtPmludGVycnVwdF9yaW5nKTsKK30KKwor LyoKKyAqIFRoaXMgYXNzdW1lcyB0aGF0IGl0IGNhbid0IGJlIGNhbGxlZCBjb25jdXJyZW50bHkg d2l0aCBpdHNlbGYKKyAqIGJ1dCBvbmx5IHdpdGggZGVxdWV1ZV9paF9yaW5nX2VudHJ5LgorICov Citib29sIGVucXVldWVfaWhfcmluZ19lbnRyeShzdHJ1Y3Qga2ZkX2RldiAqa2ZkLAljb25zdCB2 b2lkICppaF9yaW5nX2VudHJ5KQoreworCXVuc2lnbmVkIGludCBycHRyID0gYXRvbWljX3JlYWQo JmtmZC0+aW50ZXJydXB0X3JpbmdfcnB0cik7CisJdW5zaWduZWQgaW50IHdwdHIgPSBhdG9taWNf cmVhZCgma2ZkLT5pbnRlcnJ1cHRfcmluZ193cHRyKTsKKworCWlmICgocnB0ciAtIHdwdHIpICUg a2ZkLT5pbnRlcnJ1cHRfcmluZ19zaXplID09CisJCQkJCWtmZC0+ZGV2aWNlX2luZm8tPmloX3Jp bmdfZW50cnlfc2l6ZSkgeworCQkvKiBUaGlzIGlzIHZlcnkgYmFkLCB0aGUgc3lzdGVtIGlzIGxp a2VseSB0byBoYW5nLiAqLworCQlkZXZfZXJyX3JhdGVsaW1pdGVkKGtmZF9jaGFyZGV2KCksCisJ CQkiSW50ZXJydXB0IHJpbmcgb3ZlcmZsb3csIGRyb3BwaW5nIGludGVycnVwdC5cbiIpOworCQly ZXR1cm4gZmFsc2U7CisJfQorCisJbWVtY3B5KGtmZC0+aW50ZXJydXB0X3JpbmcgKyB3cHRyLCBp aF9yaW5nX2VudHJ5LAorCQkJa2ZkLT5kZXZpY2VfaW5mby0+aWhfcmluZ19lbnRyeV9zaXplKTsK KworCXdwdHIgPSAod3B0ciArIGtmZC0+ZGV2aWNlX2luZm8tPmloX3JpbmdfZW50cnlfc2l6ZSkg JQorCQkJa2ZkLT5pbnRlcnJ1cHRfcmluZ19zaXplOworCXNtcF93bWIoKTsgLyogRW5zdXJlIG1l bWNweSdkIGRhdGEgaXMgdmlzaWJsZSBiZWZvcmUgd3B0ciB1cGRhdGUuICovCisJYXRvbWljX3Nl dCgma2ZkLT5pbnRlcnJ1cHRfcmluZ193cHRyLCB3cHRyKTsKKworCXJldHVybiB0cnVlOworfQor CisvKgorICogVGhpcyBhc3N1bWVzIHRoYXQgaXQgY2FuJ3QgYmUgY2FsbGVkIGNvbmN1cnJlbnRs eSB3aXRoIGl0c2VsZgorICogYnV0IG9ubHkgd2l0aCBlbnF1ZXVlX2loX3JpbmdfZW50cnkuCisg Ki8KK3N0YXRpYyBib29sIGRlcXVldWVfaWhfcmluZ19lbnRyeShzdHJ1Y3Qga2ZkX2RldiAqa2Zk LCB2b2lkICppaF9yaW5nX2VudHJ5KQoreworCS8qCisJICogQXNzdW1lIHRoYXQgd2FpdCBxdWV1 ZXMgaGF2ZSBhbiBpbXBsaWNpdCBiYXJyaWVyLCBpLmUuIGFueXRoaW5nIHRoYXQKKwkgKiBoYXBw ZW5lZCBpbiB0aGUgSVNSIGJlZm9yZSBpdCBxdWV1ZWQgd29yayBpcyB2aXNpYmxlLgorCSAqLwor CisJdW5zaWduZWQgaW50IHdwdHIgPSBhdG9taWNfcmVhZCgma2ZkLT5pbnRlcnJ1cHRfcmluZ193 cHRyKTsKKwl1bnNpZ25lZCBpbnQgcnB0ciA9IGF0b21pY19yZWFkKCZrZmQtPmludGVycnVwdF9y aW5nX3JwdHIpOworCisJaWYgKHJwdHIgPT0gd3B0cikKKwkJcmV0dXJuIGZhbHNlOworCisJbWVt Y3B5KGloX3JpbmdfZW50cnksIGtmZC0+aW50ZXJydXB0X3JpbmcgKyBycHRyLAorCQkJa2ZkLT5k ZXZpY2VfaW5mby0+aWhfcmluZ19lbnRyeV9zaXplKTsKKworCXJwdHIgPSAocnB0ciArIGtmZC0+ ZGV2aWNlX2luZm8tPmloX3JpbmdfZW50cnlfc2l6ZSkgJQorCQkJa2ZkLT5pbnRlcnJ1cHRfcmlu Z19zaXplOworCisJLyoKKwkgKiBFbnN1cmUgdGhlIHJwdHIgd3JpdGUgdXBkYXRlIGlzIG5vdCB2 aXNpYmxlIHVudGlsCisJICogbWVtY3B5IGhhcyBmaW5pc2hlZCByZWFkaW5nLgorCSAqLworCXNt cF9tYigpOworCWF0b21pY19zZXQoJmtmZC0+aW50ZXJydXB0X3JpbmdfcnB0ciwgcnB0cik7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgaW50ZXJydXB0X3dxKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3Qga2ZkX2RldiAqZGV2ID0gY29udGFpbmVyX29mKHdv cmssIHN0cnVjdCBrZmRfZGV2LAorCQkJCQkJaW50ZXJydXB0X3dvcmspOworCisJdWludDMyX3Qg aWhfcmluZ19lbnRyeVtESVZfUk9VTkRfVVAoCisJCQkJZGV2LT5kZXZpY2VfaW5mby0+aWhfcmlu Z19lbnRyeV9zaXplLAorCQkJCXNpemVvZih1aW50MzJfdCkpXTsKKworCXdoaWxlIChkZXF1ZXVl X2loX3JpbmdfZW50cnkoZGV2LCBpaF9yaW5nX2VudHJ5KSkKKwkJOworfQorCitib29sIGludGVy cnVwdF9pc193YW50ZWQoc3RydWN0IGtmZF9kZXYgKmRldiwgY29uc3QgdWludDMyX3QgKmloX3Jp bmdfZW50cnkpCit7CisJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9wcml2LmgKaW5kZXggZjIxZmNjZS4uMzRjNzY2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfcHJpdi5oCkBAIC0xNjEsMTAgKzE2MSwyMyBAQCBzdHJ1Y3Qga2ZkX2RldiB7CiAJdW5z aWduZWQgaW50IGd0dF9zYV9jaHVua19zaXplOwogCXVuc2lnbmVkIGludCBndHRfc2FfbnVtX29m X2NodW5rczsKIAorCS8qIEludGVycnVwdHMgKi8KKwl2b2lkICppbnRlcnJ1cHRfcmluZzsKKwlz aXplX3QgaW50ZXJydXB0X3Jpbmdfc2l6ZTsKKwlhdG9taWNfdCBpbnRlcnJ1cHRfcmluZ19ycHRy OworCWF0b21pY190IGludGVycnVwdF9yaW5nX3dwdHI7CisJc3RydWN0IHdvcmtfc3RydWN0IGlu dGVycnVwdF93b3JrOworCXNwaW5sb2NrX3QgaW50ZXJydXB0X2xvY2s7CisKIAkvKiBRQ00gRGV2 aWNlIGluc3RhbmNlICovCiAJc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW07CiAKIAli b29sIGluaXRfY29tcGxldGU7CisJLyoKKwkgKiBJbnRlcnJ1cHRzIG9mIGludGVyZXN0IHRvIEtG RCBhcmUgY29waWVkCisJICogZnJvbSB0aGUgSFcgcmluZyBpbnRvIGEgU1cgcmluZy4KKwkgKi8K Kwlib29sIGludGVycnVwdHNfYWN0aXZlOwogfTsKIAogLyogS0dEMktGRCBjYWxsYmFja3MgKi8K QEAgLTU1NSw3ICs1NjgsMTEgQEAgc3RydWN0IGtmZF9kZXYgKmtmZF9kZXZpY2VfYnlfcGNpX2Rl dihjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldik7CiBzdHJ1Y3Qga2ZkX2RldiAqa2ZkX3RvcG9s b2d5X2VudW1fa2ZkX2RldmljZXModWludDhfdCBpZHgpOwogCiAvKiBJbnRlcnJ1cHRzICovCitp bnQga2ZkX2ludGVycnVwdF9pbml0KHN0cnVjdCBrZmRfZGV2ICpkZXYpOwordm9pZCBrZmRfaW50 ZXJydXB0X2V4aXQoc3RydWN0IGtmZF9kZXYgKmRldik7CiB2b2lkIGtnZDJrZmRfaW50ZXJydXB0 KHN0cnVjdCBrZmRfZGV2ICprZmQsIGNvbnN0IHZvaWQgKmloX3JpbmdfZW50cnkpOworYm9vbCBl bnF1ZXVlX2loX3JpbmdfZW50cnkoc3RydWN0IGtmZF9kZXYgKmtmZCwJY29uc3Qgdm9pZCAqaWhf cmluZ19lbnRyeSk7Citib29sIGludGVycnVwdF9pc193YW50ZWQoc3RydWN0IGtmZF9kZXYgKmRl diwgY29uc3QgdWludDMyX3QgKmloX3JpbmdfZW50cnkpOwogCiAvKiBQb3dlciBNYW5hZ2VtZW50 ICovCiB2b2lkIGtnZDJrZmRfc3VzcGVuZChzdHJ1Y3Qga2ZkX2RldiAqa2ZkKTsKLS0gCjEuOS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=