From: Thomas Zimmermann Subject: [PATCH 01/18] drm/ttm: Provide struct ttm_global for referencing TTM global state Date: Fri, 19 Oct 2018 10:54:06 +0200 Message-ID: <20181019085423.28159-2-tzimmermann@suse.de> References: <20181019085423.28159-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181019085423.28159-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: christian.koenig@amd.com, ray.huang@amd.com, Jerry.Zhang@amd.com, alexander.deucher@amd.com, David1.Zhou@amd.com, airlied@linux.ie, kraxel@redhat.com, bskeggs@redhat.com, syeh@vmware.com, z.liuxinliang@hisilicon.com, zourongrong@gmail.com, kong.kongxinwei@hisilicon.com, puck.chen@hisilicon.com Cc: Thomas Zimmermann , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: amd-gfx.lists.freedesktop.org VGhlIG5ldyBzdHJ1Y3QgdHRtX2dsb2JhbCBwcm92aWRlcyBkcml2ZXJzIHdpdGggVFRNJ3MgZ2xv YmFsIG1lbW9yeSBhbmQKQk8gaW4gYSB1bmlmaWVkIHdheS4gSW5pdGlhbGl6YXRpb24gYW5kIHJl bGVhc2UgaXMgaGFuZGxlZCBpbnRlcm5hbGx5LgoKVGhlIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQg Ynkgc3RydWN0IHR0bV9nbG9iYWwgaXMgY3VycmVudGx5IHJlLWltcGxlbWVudGVkCmJ5IGEgZG96 ZW4gaW5kaXZpZHVhbCBEUk0gZHJpdmVycyB1c2luZyBzdHJ1Y3QgZHJtX2dsb2JhbC4gVGhlIGlt cGxlbWVudGF0aW9uCm9mIHN0cnVjdCB0dG1fZ2xvYmFsIGlzIGFsc28gYnVpbHQgb24gdG9wIG9m IGRybV9nbG9iYWwsIHNvIGl0IGNhbiBjby1leGlzdHMKd2l0aCB0aGUgZXhpc3RpbmcgZHJpdmVy cy4gT25jZSBhbGwgVFRNLWJhc2VkIGRyaXZlcnMgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0bwpzdHJ1 Y3QgdHRtX2dsb2JhbCwgdGhlIGltcGxlbWVudGF0aW9uIG9mIHN0cnVjdCBkcm1fZ2xvYmFsIGNh biBiZSBtYWRlCnByaXZhdGUgdG8gVFRNLgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1h bm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3R0bS9NYWtlZmls ZSAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fZ2xvYmFsLmMgfCA5OCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2dsb2JhbC5oICAg ICAgICAgfCAgOCArKysKIGluY2x1ZGUvZHJtL3R0bS90dG1fZ2xvYmFsLmggICAgIHwgNzkgKysr KysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS90dG0v dHRtX2dsb2JhbC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vdHRtL3R0bV9nbG9i YWwuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vdHRtL01ha2VmaWxlCmluZGV4IDAxZmM2NzBjZTdhMi4uYjcyNzJiMjZlOWYzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS90dG0vTWFrZWZpbGUKQEAgLTUsNyArNSw3IEBACiB0dG0teSA6PSB0dG1fbWVtb3J5Lm8g dHRtX3R0Lm8gdHRtX2JvLm8gXAogCXR0bV9ib191dGlsLm8gdHRtX2JvX3ZtLm8gdHRtX21vZHVs ZS5vIFwKIAl0dG1fZXhlY2J1Zl91dGlsLm8gdHRtX3BhZ2VfYWxsb2MubyB0dG1fYm9fbWFuYWdl ci5vIFwKLQl0dG1fcGFnZV9hbGxvY19kbWEubworCXR0bV9wYWdlX2FsbG9jX2RtYS5vIHR0bV9n bG9iYWwubwogdHRtLSQoQ09ORklHX0FHUCkgKz0gdHRtX2FncF9iYWNrZW5kLm8KIAogb2JqLSQo Q09ORklHX0RSTV9UVE0pICs9IHR0bS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9nbG9iYWwuYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2dsb2JhbC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2E5ZGEwYTQ2MTQ3Ci0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fZ2xvYmFsLmMKQEAgLTAsMCArMSw5OCBA QAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUICovCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgMjAwOC0yMDA5IFZNd2FyZSwgSW5jLiwgUGFs byBBbHRvLCBDQS4sIFVTQQorICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJp YnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisg KgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U IFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMsIEFVVEhPUlMgQU5EL09SIElUUyBTVVBQ TElFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgKiBEQU1BR0VTIE9SIE9USEVSIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKKyAqIE9USEVS V0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUKKyAqIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fZ2xvYmFsLmg+ CisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVyLmg+CisjaW5jbHVkZSA8ZHJtL3R0bS90 dG1fbWVtb3J5Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisKK3N0YXRpYyBpbnQgdHRt X2dsb2JhbF9pbml0X21lbShzdHJ1Y3QgZHJtX2dsb2JhbF9yZWZlcmVuY2UgKnJlZikKK3sKKwlC VUdfT04oIXJlZi0+b2JqZWN0KTsKKwlyZXR1cm4gdHRtX21lbV9nbG9iYWxfaW5pdChyZWYtPm9i amVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHR0bV9nbG9iYWxfcmVsZWFzZV9tZW0oc3RydWN0IGRy bV9nbG9iYWxfcmVmZXJlbmNlICpyZWYpCit7CisJQlVHX09OKCFyZWYtPm9iamVjdCk7CisJdHRt X21lbV9nbG9iYWxfcmVsZWFzZShyZWYtPm9iamVjdCk7Cit9CisKK3N0YXRpYyBpbnQgdHRtX2ds b2JhbF9pbml0X2JvKHN0cnVjdCBkcm1fZ2xvYmFsX3JlZmVyZW5jZSAqcmVmKQoreworCXN0cnVj dCB0dG1fZ2xvYmFsICpnbG9iID0KKwkJY29udGFpbmVyX29mKHJlZiwgc3RydWN0IHR0bV9nbG9i YWwsIGJvX3JlZik7CisJQlVHX09OKCFyZWYtPm9iamVjdCk7CisJQlVHX09OKCFnbG9iLT5tZW1f cmVmLm9iamVjdCk7CisJcmV0dXJuIHR0bV9ib19nbG9iYWxfaW5pdChyZWYtPm9iamVjdCwgZ2xv Yi0+bWVtX3JlZi5vYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB0dG1fZ2xvYmFsX3JlbGVhc2Vf Ym8oc3RydWN0IGRybV9nbG9iYWxfcmVmZXJlbmNlICpyZWYpCit7CisJQlVHX09OKCFyZWYtPm9i amVjdCk7CisJdHRtX2JvX2dsb2JhbF9yZWxlYXNlKHJlZi0+b2JqZWN0KTsKK30KKworaW50IHR0 bV9nbG9iYWxfaW5pdChzdHJ1Y3QgdHRtX2dsb2JhbCAqZ2xvYikKK3sKKwlpbnQgcmV0OworCisJ Z2xvYi0+bWVtX3JlZi5nbG9iYWxfdHlwZSA9IERSTV9HTE9CQUxfVFRNX01FTTsKKwlnbG9iLT5t ZW1fcmVmLnNpemUgPSBzaXplb2Yoc3RydWN0IHR0bV9tZW1fZ2xvYmFsKTsKKwlnbG9iLT5ib19y ZWYub2JqZWN0ID0gTlVMTDsKKwlnbG9iLT5tZW1fcmVmLmluaXQgPSAmdHRtX2dsb2JhbF9pbml0 X21lbTsKKwlnbG9iLT5tZW1fcmVmLnJlbGVhc2UgPSAmdHRtX2dsb2JhbF9yZWxlYXNlX21lbTsK KwlyZXQgPSBkcm1fZ2xvYmFsX2l0ZW1fcmVmKCZnbG9iLT5tZW1fcmVmKTsKKwlpZiAocmV0KQor CQlyZXR1cm4gcmV0OworCisJZ2xvYi0+Ym9fcmVmLmdsb2JhbF90eXBlID0gRFJNX0dMT0JBTF9U VE1fQk87CisJZ2xvYi0+Ym9fcmVmLnNpemUgPSBzaXplb2Yoc3RydWN0IHR0bV9ib19nbG9iYWwp OworCWdsb2ItPmJvX3JlZi5vYmplY3QgPSBOVUxMOworCWdsb2ItPmJvX3JlZi5pbml0ID0gJnR0 bV9nbG9iYWxfaW5pdF9ibzsKKwlnbG9iLT5ib19yZWYucmVsZWFzZSA9ICZ0dG1fZ2xvYmFsX3Jl bGVhc2VfYm87CisJcmV0ID0gZHJtX2dsb2JhbF9pdGVtX3JlZigmZ2xvYi0+Ym9fcmVmKTsKKwlp ZiAocmV0KQorCQlnb3RvIGVycl9kcm1fZ2xvYmFsX2l0ZW1fdW5yZWZfbWVtOworCisJcmV0dXJu IDA7CisKK2Vycl9kcm1fZ2xvYmFsX2l0ZW1fdW5yZWZfbWVtOgorCWRybV9nbG9iYWxfaXRlbV91 bnJlZigmZ2xvYi0+bWVtX3JlZik7CisJcmV0dXJuIHJldDsKK30KKworRVhQT1JUX1NZTUJPTCh0 dG1fZ2xvYmFsX2luaXQpOworCit2b2lkIHR0bV9nbG9iYWxfcmVsZWFzZShzdHJ1Y3QgdHRtX2ds b2JhbCAqZ2xvYikKK3sKKwlkcm1fZ2xvYmFsX2l0ZW1fdW5yZWYoJmdsb2ItPmJvX3JlZik7CisJ ZHJtX2dsb2JhbF9pdGVtX3VucmVmKCZnbG9iLT5tZW1fcmVmKTsKK30KKworRVhQT1JUX1NZTUJP TCh0dG1fZ2xvYmFsX3JlbGVhc2UpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dsb2Jh bC5oIGIvaW5jbHVkZS9kcm0vZHJtX2dsb2JhbC5oCmluZGV4IDNhODMwNjAyYTJlNC4uNDQ4MmE5 YmJkNmU5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZ2xvYmFsLmgKKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2dsb2JhbC5oCkBAIC0yOCw4ICsyOCwxNiBAQAogICogQXV0aG9yczogVGhvbWFz IEhlbGxzdHJvbSA8dGhlbGxzdHJvbS1hdC12bXdhcmUtZG90LWNvbT4KICAqLwogCisvKgorICog IFRoZSBpbnRlcmZhY2VzIGluIHRoaXMgZmlsZSBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0 dG1fZ2xvYmFsCisgKiAgZnJvbSA8ZHJtL3R0bS90dG1fZ2xvYmFsLmg+IGluc3RlYWQuCisgKi8K KwogI2lmbmRlZiBfRFJNX0dMT0JBTF9IXwogI2RlZmluZSBfRFJNX0dMT0JBTF9IXworCisjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KKwogZW51bSBkcm1fZ2xvYmFsX3R5cGVzIHsKIAlEUk1fR0xP QkFMX1RUTV9NRU0gPSAwLAogCURSTV9HTE9CQUxfVFRNX0JPLApkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vdHRtL3R0bV9nbG9iYWwuaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fZ2xvYmFsLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNmU3OTE0OTlmODcKLS0tIC9k ZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX2dsb2JhbC5oCkBAIC0wLDAgKzEsNzkg QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCAyMDA4LTIwMDkgVk13YXJl LCBJbmMuLCBQYWxvIEFsdG8sIENBLiwgVVNBCisgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0IGxp bWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs CisgKiBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGlu Y2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBT b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4g SU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSUywgQVVUSE9SUyBBTkQv T1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAqIERBTUFHRVMgT1Ig T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UgorICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRQorICogVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1RUTV9HTE9CQUxf SF8KKyNkZWZpbmUgX1RUTV9HTE9CQUxfSF8KKworI2luY2x1ZGUgPGRybS9kcm1fZ2xvYmFsLmg+ CisKK3N0cnVjdCB0dG1fYm9fZ2xvYmFsOworCisvKioKKyAqIHN0cnVjdCB0dG1fZ2xvYmFsIC0g U3RvcmVzIHJlZmVyZW5jZXMgdG8gZ2xvYmFsIFRUTSBzdGF0ZQorICovCitzdHJ1Y3QgdHRtX2ds b2JhbCB7CisJc3RydWN0IGRybV9nbG9iYWxfcmVmZXJlbmNlIG1lbV9yZWY7CisJc3RydWN0IGRy bV9nbG9iYWxfcmVmZXJlbmNlIGJvX3JlZjsKK307CisKKy8qKgorICogdHRtX2dsb2JhbF9pbml0 CisgKgorICogQGdsb2I6IEEgcG9pbnRlciB0byBhIHN0cnVjdCB0dG1fZ2xvYmFsIHRoYXQgaXMg YWJvdXQgdG8gYmUgaW5pdGlhbGl6ZWQKKyAqIEByZXR1cm4gWmVybyBvbiBzdWNjZXNzLCBvciBh IG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgorICoKKyAqIEluaXRpYWxpemVzIGFuIGlu c3RhbmNlIG9mIHN0cnVjdCB0dG1fZ2xvYmFsIHdpdGggVFRNJ3MgZ2xvYmFsIHN0YXRlCisgKi8K K2ludCB0dG1fZ2xvYmFsX2luaXQoc3RydWN0IHR0bV9nbG9iYWwgKmdsb2IpOworCisvKioKKyAq IHR0bV9nbG9iYWxfcmVsZWFzZQorICoKKyAqIEBnbG9iOiBBIHBvaW50ZXIgdG8gYW4gaW5zdGFu Y2Ugb2Ygc3RydWN0IHR0bV9nbG9iYWwKKyAqCisgKiBSZWxlYXNlcyBhbiBpbml0aWFsaXplZCBp bnN0YW5jZSBvZiBzdHJ1Y3QgdHRtX2dsb2JhbC4gSWYgdGhlIGluc3RhbmNlCisgKiBjb25zdGFp bnMgdGhlIGZpbmFsIHJlZmVyZW5jZXMgdG8gdGhlIGdsb2JhbCBtZW1vcnkgYW5kIEJPLCB0aGUg Z2xvYmFsCisgKiBzdHJ1Y3R1cmVzIGFyZSByZWxlYXNlZCBhcyB3ZWxsLgorICovCit2b2lkIHR0 bV9nbG9iYWxfcmVsZWFzZShzdHJ1Y3QgdHRtX2dsb2JhbCAqZ2xvYik7CisKKy8qKgorICogdHRt X2dsb2JhbF9nZXRfYm9fZ2xvYmFsCisgKgorICogQGdsb2IgQSBwb2ludGVyIHRvIGFuIGluc3Rh bmNlIG9mIHN0cnVjdCB0dG1fZ2xvYmFsCisgKiBAcmV0dXJuIEEgcmVmZXJuY2UgdG8gdGhlIGds b2JhbCBCTy4KKyAqCisgKiBSZXR1cm5zIHRoZSBnbG9iYWwgQk8uIFRoZSBCTyBzaG91bGQgYmUg Zm9yd2FyZGVkIHRvIHRoZSBpbml0aWFsaXphdGlvbgorICogb2YgYSBkcml2ZXIncyBUVE0gQk8g ZGV2aWNlLgorICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCB0dG1fYm9fZ2xvYmFsKgordHRtX2ds b2JhbF9nZXRfYm9fZ2xvYmFsKHN0cnVjdCB0dG1fZ2xvYmFsICpnbG9iKQoreworCXJldHVybiBn bG9iLT5ib19yZWYub2JqZWN0OworfQorCisjZW5kaWYgLyogX1RUTV9HTE9CQUxfSF8gKi8KLS0g CjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==