From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v3 05/19] drm: Add VRAM MM, a simple memory manager for dedicated VRAM Date: Mon, 29 Apr 2019 16:43:27 +0200 Message-ID: <20190429144341.12615-6-tzimmermann@suse.de> References: <20190429144341.12615-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 09E8789259 for ; Mon, 29 Apr 2019 14:43:51 +0000 (UTC) In-Reply-To: <20190429144341.12615-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: daniel@ffwll.ch, airlied@linux.ie, kraxel@redhat.com, christian.koenig@amd.com, ray.huang@amd.com, Jerry.Zhang@amd.com, hdegoede@redhat.com, z.liuxinliang@hisilicon.com, zourongrong@gmail.com, kong.kongxinwei@hisilicon.com, puck.chen@hisilicon.com Cc: Thomas Zimmermann , dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org List-Id: dri-devel@lists.freedesktop.org VGhlIFZSQU0gTU0gbWVtb3J5IG1hbmFnZXIgaXMgYSBoZWxwZXIgbGlicmFyeSB0aGF0IG1hbmFn ZXMgZGVkaWNhdGVkIHZpZGVvCm1lbW9yeSBvZiBzaW1wbGUgZnJhbWVidWZmZXIgZGV2aWNlcy4g SXQgaXMgc3VwcG9ydGVkIHRvIGJlIHVzZWQgd2l0aApzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dCwgYnV0IGRvZXMgbm90IGRlcGVuZCBvbiBpdC4KClRoZSBpbXBsZW1lbnRhdGlvbiBpcyBiYXNl ZCBvbiB0aGUgcmVzcGVjdGl2ZSBjb2RlIGZyb20gYXN0LCBib2NocywgYW5kCm1nYWcyMDAuIFRo ZXNlIGRyaXZlcnMgc2hhcmUgdGhlIGV4YWN0IHNhbWUgaW1wbGVtZW50YXRpb24gZXhjZXB0IGZv ciB0eXBlCm5hbWVzLiBUaGUgaGVscGVycyBhcmUgY3VycmVudGx5IGJ1aWxkIHdpdGggVFRNLiBU aGlzIG1heSBjaGFuZ2UgaW4gZnV0dXJlCnJldmlzaW9ucy4KCnYyOgoJKiByZW5hbWVkIHRvIHN0 cnVjdCBkcm1fdnJhbV9tbQoJKiBhZGQgZHJtX3ZyYW1fbW1fbW1hcCgpIGhlbHBlcgoJKiBkb2N1 bWVudGF0aW9uIGZpeGVzCgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1l cm1hbm5Ac3VzZS5kZT4KLS0tCiBEb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0ICAgICAgICAg fCAgMTMgKy0KIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAgICB8ICAgNyArCiBk cml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUv ZHJtL2RybV92cmFtX21tX2hlbHBlci5jIHwgMjEwICsrKysrKysrKysrKysrKysrKysrKysrKysr KwogaW5jbHVkZS9kcm0vZHJtX3ZyYW1fbW1faGVscGVyLmggICAgIHwgIDY3ICsrKysrKysrKwog NSBmaWxlcyBjaGFuZ2VkLCAyOTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fdnJhbV9tbV9oZWxwZXIuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV92cmFtX21tX2hlbHBlci5oCgpkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1t bS5yc3QKaW5kZXggZDUzMjdlZDYwOGQ3Li5hNmNlMTA2NzU2MzggMTAwNjQ0Ci0tLSBhL0RvY3Vt ZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJz dApAQCAtNzksNyArNzksNiBAQCBjb3VudCBmb3IgdGhlIFRUTSwgd2hpY2ggd2lsbCBjYWxsIHlv dXIgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uCiAKIFNlZSB0aGUgcmFkZW9uX3R0bS5jIGZpbGUg Zm9yIGFuIGV4YW1wbGUgb2YgdXNhZ2UuCiAKLQogVGhlIEdyYXBoaWNzIEV4ZWN1dGlvbiBNYW5h Z2VyIChHRU0pCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMzky LDYgKzM5MSwxOCBAQCBHRU0gVlJBTSBIZWxwZXIgRnVuY3Rpb25zIFJlZmVyZW5jZQogLi4ga2Vy bmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMKICAgIDpleHBv cnQ6CiAKK1ZSQU0gTU0gSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2Ry bS9kcm1fdnJhbV9tbV9oZWxwZXIuYworICAgOmRvYzogb3ZlcnZpZXcKKworLi4ga2VybmVsLWRv Yzo6IGluY2x1ZGUvZHJtL2RybV92cmFtX21tX2hlbHBlci5oCisgICA6aW50ZXJuYWw6CisKKy4u IGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZyYW1fbW1faGVscGVyLmMKKyAgIDpl eHBvcnQ6CisKIFZNQSBPZmZzZXQgTWFuYWdlcgogPT09PT09PT09PT09PT09PT09CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcK aW5kZXggYzBkNDlhNmMwOWQyLi5jMTIyZjJkODQzY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC0xNjYsNiArMTY2 LDEzIEBAIGNvbmZpZyBEUk1fVlJBTV9IRUxQRVIKIAloZWxwCiAJICBIZWxwZXJzIGZvciBWUkFN IG1lbW9yeSBtYW5hZ2VtZW50CiAKK2NvbmZpZyBEUk1fVlJBTV9NTV9IRUxQRVIKKwl0cmlzdGF0 ZQorCWRlcGVuZHMgb24gRFJNICYmIERSTV9UVE0KKwlzZWxlY3QgRFJNX1ZSQU1fSEVMUEVSCisJ aGVscAorCSAgQ2hvb3NlIHRoaXMgaWYgeW91IG5lZWQgdGhlIFZSQU0gTU0gaGVscGVyIGZ1bmN0 aW9ucworCiBjb25maWcgRFJNX0dFTV9DTUFfSEVMUEVSCiAJYm9vbAogCWRlcGVuZHMgb24gRFJN CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v TWFrZWZpbGUKaW5kZXggZGJlMzhmZTFiY2IzLi4wNjNjMjJiMjVmYTggMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAg LTM0LDYgKzM0LDcgQEAgZHJtLSQoQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdBUkUpICs9IGRy bV9lZGlkX2xvYWQubwogCiBkcm1fdnJhbV9oZWxwZXIteSA6PSBkcm1fdnJhbV9oZWxwZXJfY29t bW9uLm8KIGRybV92cmFtX2hlbHBlci0kKENPTkZJR19EUk1fR0VNX1ZSQU1fSEVMUEVSKSArPSBk cm1fZ2VtX3ZyYW1faGVscGVyLm8KK2RybV92cmFtX2hlbHBlci0kKENPTkZJR19EUk1fVlJBTV9N TV9IRUxQRVIpICs9IGRybV92cmFtX21tX2hlbHBlci5vCiBvYmotJChDT05GSUdfRFJNX1ZSQU1f SEVMUEVSKSArPSBkcm1fdnJhbV9oZWxwZXIubwogCiBkcm1fa21zX2hlbHBlci15IDo9IGRybV9j cnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fZHNjLm8gZHJtX3Byb2JlX2hlbHBlci5v IFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdnJhbV9tbV9oZWxwZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fdnJhbV9tbV9oZWxwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmQxOWY0NmQ3YTRlNwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fdnJhbV9tbV9oZWxwZXIuYwpAQCAtMCwwICsxLDIxMCBAQAorLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi8KKworI2luY2x1ZGUgPGRy bS9kcm1fdnJhbV9tbV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUg PGRybS90dG0vdHRtX3BhZ2VfYWxsb2MuaD4KKworLyoqCisgKiBET0M6IG92ZXJ2aWV3CisgKgor ICogVGhlIGRhdGEgc3RydWN0dXJlICZzdHJ1Y3QgZHJtX3ZyYW1fbW0gYW5kIGl0cyBoZWxwZXJz IGltcGxlbWVudCBhIG1lbW9yeQorICogbWFuYWdlciBmb3Igc2ltcGxlIGZyYW1lYnVmZmVyIGRl dmljZXMgd2l0aCBkZWRpY2F0ZWQgdmlkZW8gbWVtb3J5LiBCdWZmZXIKKyAqIG9iamVjdCBzIGFy ZSBlaXRoZXIgcGxhY2VkIGluIFZSQU0gb3IgZXZpY3RlZCB0byBzeXN0ZW0gcmFtLiBUaGUgZnVu Y3Rpb25zCisgKiB3b3JrIHdlbGwgd2l0aCAmc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QuCisg Ki8KKworLyoKKyAqIFRUTSBUVAorICovCisKK3N0YXRpYyB2b2lkIGJhY2tlbmRfZnVuY19kZXN0 cm95KHN0cnVjdCB0dG1fdHQgKnR0KQoreworCXR0bV90dF9maW5pKHR0KTsKKwlrZnJlZSh0dCk7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdHRtX2JhY2tlbmRfZnVuYyBiYWNrZW5kX2Z1bmMgPSB7CisJ LmRlc3Ryb3kgPSBiYWNrZW5kX2Z1bmNfZGVzdHJveQorfTsKKworLyoKKyAqIFRUTSBCTyBkZXZp Y2UKKyAqLworCitzdGF0aWMgc3RydWN0IHR0bV90dCAqYm9fZHJpdmVyX3R0bV90dF9jcmVhdGUo c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKKwkJCQkJICAgICAgdWludDMyX3QgcGFnZV9m bGFncykKK3sKKwlzdHJ1Y3QgdHRtX3R0ICp0dDsKKwlpbnQgcmV0OworCisJdHQgPSBremFsbG9j KHNpemVvZigqdHQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXR0KQorCQlyZXR1cm4gTlVMTDsKKwor CXR0LT5mdW5jID0gJmJhY2tlbmRfZnVuYzsKKworCXJldCA9IHR0bV90dF9pbml0KHR0LCBibywg cGFnZV9mbGFncyk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyX3R0bV90dF9pbml0OworCisJ cmV0dXJuIHR0OworCitlcnJfdHRtX3R0X2luaXQ6CisJa2ZyZWUodHQpOworCXJldHVybiBOVUxM OworfQorCitzdGF0aWMgaW50IGJvX2RyaXZlcl9pbml0X21lbV90eXBlKHN0cnVjdCB0dG1fYm9f ZGV2aWNlICpiZGV2LCB1aW50MzJfdCB0eXBlLAorCQkJCSAgIHN0cnVjdCB0dG1fbWVtX3R5cGVf bWFuYWdlciAqbWFuKQoreworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgVFRNX1BMX1NZU1RFTToK KwkJbWFuLT5mbGFncyA9IFRUTV9NRU1UWVBFX0ZMQUdfTUFQUEFCTEU7CisJCW1hbi0+YXZhaWxh YmxlX2NhY2hpbmcgPSBUVE1fUExfTUFTS19DQUNISU5HOworCQltYW4tPmRlZmF1bHRfY2FjaGlu ZyA9IFRUTV9QTF9GTEFHX0NBQ0hFRDsKKwkJYnJlYWs7CisJY2FzZSBUVE1fUExfVlJBTToKKwkJ bWFuLT5mdW5jID0gJnR0bV9ib19tYW5hZ2VyX2Z1bmM7CisJCW1hbi0+ZmxhZ3MgPSBUVE1fTUVN VFlQRV9GTEFHX0ZJWEVEIHwKKwkJCSAgICAgVFRNX01FTVRZUEVfRkxBR19NQVBQQUJMRTsKKwkJ bWFuLT5hdmFpbGFibGVfY2FjaGluZyA9IFRUTV9QTF9GTEFHX1VOQ0FDSEVEIHwKKwkJCQkJIFRU TV9QTF9GTEFHX1dDOworCQltYW4tPmRlZmF1bHRfY2FjaGluZyA9IFRUTV9QTF9GTEFHX1dDOwor CQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIGJvX2RyaXZlcl9ldmljdF9mbGFncyhzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKmJvLAorCQkJCSAgc3RydWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVudCkKK3sKKwlz dHJ1Y3QgZHJtX3ZyYW1fbW0gKnZtbSA9IGRybV92cmFtX21tX29mX2JkZXYoYm8tPmJkZXYpOwor CisJaWYgKHZtbS0+ZnVuY3MgJiYgdm1tLT5mdW5jcy0+ZXZpY3RfZmxhZ3MpCisJCXZtbS0+ZnVu Y3MtPmV2aWN0X2ZsYWdzKGJvLCBwbGFjZW1lbnQpOworfQorCitzdGF0aWMgaW50IGJvX2RyaXZl cl92ZXJpZnlfYWNjZXNzKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCisJCQkJICAgc3Ry dWN0IGZpbGUgKmZpbHApCit7CisJc3RydWN0IGRybV92cmFtX21tICp2bW0gPSBkcm1fdnJhbV9t bV9vZl9iZGV2KGJvLT5iZGV2KTsKKworCWlmICghdm1tLT5mdW5jcyB8fCAhdm1tLT5mdW5jcy0+ dmVyaWZ5X2FjY2VzcykKKwkJcmV0dXJuIDA7CisJcmV0dXJuIHZtbS0+ZnVuY3MtPnZlcmlmeV9h Y2Nlc3MoYm8sIGZpbHApOworfQorCitzdGF0aWMgaW50IGJvX2RyaXZlcl9pb19tZW1fcmVzZXJ2 ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKKwkJCQkgICAgc3RydWN0IHR0bV9tZW1fcmVn ICptZW0pCit7CisJc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4gPSBiZGV2LT5tYW4g KyBtZW0tPm1lbV90eXBlOworCXN0cnVjdCBkcm1fdnJhbV9tbSAqdm1tID0gZHJtX3ZyYW1fbW1f b2ZfYmRldihiZGV2KTsKKworCWlmICghKG1hbi0+ZmxhZ3MgJiBUVE1fTUVNVFlQRV9GTEFHX01B UFBBQkxFKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltZW0tPmJ1cy5hZGRyID0gTlVMTDsKKwlt ZW0tPmJ1cy5zaXplID0gbWVtLT5udW1fcGFnZXMgPDwgUEFHRV9TSElGVDsKKworCXN3aXRjaCAo bWVtLT5tZW1fdHlwZSkgeworCWNhc2UgVFRNX1BMX1NZU1RFTToJLyogbm90aGluZyB0byBkbyAq LworCQltZW0tPmJ1cy5vZmZzZXQgPSAwOworCQltZW0tPmJ1cy5iYXNlID0gMDsKKwkJbWVtLT5i dXMuaXNfaW9tZW0gPSBmYWxzZTsKKwkJYnJlYWs7CisJY2FzZSBUVE1fUExfVlJBTToKKwkJbWVt LT5idXMub2Zmc2V0ID0gbWVtLT5zdGFydCA8PCBQQUdFX1NISUZUOworCQltZW0tPmJ1cy5iYXNl ID0gdm1tLT52cmFtX2Jhc2U7CisJCW1lbS0+YnVzLmlzX2lvbWVtID0gdHJ1ZTsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyB2b2lkIGJvX2RyaXZlcl9pb19tZW1fZnJlZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwKKwkJCQkgIHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtKQoreyB9CisKK3N0YXRpYyBzdHJ1Y3Qg dHRtX2JvX2RyaXZlciBib19kcml2ZXIgPSB7CisJLnR0bV90dF9jcmVhdGUgPSBib19kcml2ZXJf dHRtX3R0X2NyZWF0ZSwKKwkudHRtX3R0X3BvcHVsYXRlID0gdHRtX3Bvb2xfcG9wdWxhdGUsCisJ LnR0bV90dF91bnBvcHVsYXRlID0gdHRtX3Bvb2xfdW5wb3B1bGF0ZSwKKwkuaW5pdF9tZW1fdHlw ZSA9IGJvX2RyaXZlcl9pbml0X21lbV90eXBlLAorCS5ldmljdGlvbl92YWx1YWJsZSA9IHR0bV9i b19ldmljdGlvbl92YWx1YWJsZSwKKwkuZXZpY3RfZmxhZ3MgPSBib19kcml2ZXJfZXZpY3RfZmxh Z3MsCisJLnZlcmlmeV9hY2Nlc3MgPSBib19kcml2ZXJfdmVyaWZ5X2FjY2VzcywKKwkuaW9fbWVt X3Jlc2VydmUgPSBib19kcml2ZXJfaW9fbWVtX3Jlc2VydmUsCisJLmlvX21lbV9mcmVlID0gYm9f ZHJpdmVyX2lvX21lbV9mcmVlLAorfTsKKworLyoKKyAqIHN0cnVjdCBkcm1fdnJhbV9tbQorICov CisKKy8qKgorICogZHJtX3ZyYW1fbW1faW5pdCgpIC0gSW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBv ZiBWUkFNIE1NLgorICogQHZtbToJdGhlIFZSQU0gTU0gaW5zdGFuY2UgdG8gaW5pdGlhbGl6ZQor ICogQGRldjoJdGhlIERSTSBkZXZpY2UKKyAqIEB2cmFtX2Jhc2U6CXRoZSBiYXNlIGFkZHJlc3Mg b2YgdGhlIHZpZGVvIG1lbW9yeQorICogQHZyYW1fc2l6ZToJdGhlIHNpemUgb2YgdGhlIHZpZGVv IG1lbW9yeSBpbiBieXRlcworICogQGZ1bmNzOgljYWxsYmFjayBmdW5jdGlvbnMgZm9yIGJ1ZmZl ciBvYmplY3RzCisgKgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2Vzcywgb3IKKyAqIGEgbmVn YXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCisgKi8KK2ludCBkcm1fdnJhbV9tbV9pbml0KHN0 cnVjdCBkcm1fdnJhbV9tbSAqdm1tLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkgICAgIHU2 NCB2cmFtX2Jhc2UsIHVuc2lnbmVkIGxvbmcgdnJhbV9zaXplLAorCQkgICAgIGNvbnN0IHN0cnVj dCBkcm1fdnJhbV9tbV9mdW5jcyogZnVuY3MpCit7CisJaW50IHJldDsKKworCXZtbS0+dnJhbV9i YXNlID0gdnJhbV9iYXNlOworCXZtbS0+dnJhbV9zaXplID0gdnJhbV9zaXplOworCXZtbS0+ZnVu Y3MgPSBmdW5jczsKKworCXJldCA9IHR0bV9ib19kZXZpY2VfaW5pdCgmdm1tLT5iZGV2LCAmYm9f ZHJpdmVyLAorCQkJCSBkZXYtPmFub25faW5vZGUtPmlfbWFwcGluZywKKwkJCQkgdHJ1ZSk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHR0bV9ib19pbml0X21tKCZ2bW0tPmJk ZXYsIFRUTV9QTF9WUkFNLCB2cmFtX3NpemUgPj4gUEFHRV9TSElGVCk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1fdnJhbV9tbV9p bml0KTsKKworLyoqCisgKiBkcm1fdnJhbV9tbV9jbGVhbnVwKCkgLSBDbGVhbnMgdXAgYW4gaW5p dGlhbGl6ZWQgaW5zdGFuY2Ugb2YgVlJBTSBNTS4KKyAqIEB2bW06CXRoZSBWUkFNIE1NIGluc3Rh bmNlIHRvIGNsZWFuIHVwCisgKi8KK3ZvaWQgZHJtX3ZyYW1fbW1fY2xlYW51cChzdHJ1Y3QgZHJt X3ZyYW1fbW0gKnZtbSkKK3sKKwl0dG1fYm9fZGV2aWNlX3JlbGVhc2UoJnZtbS0+YmRldik7Cit9 CitFWFBPUlRfU1lNQk9MKGRybV92cmFtX21tX2NsZWFudXApOworCisvKioKKyAqIGRybV92cmFt X21tX21tYXAoKSAtIEhlbHBlciBmb3IgaW1wbGVtZW50aW5nICZzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zLm1tYXAoKQorICogQGZpbHA6CXRoZSBtYXBwaW5nJ3MgZmlsZSBzdHJ1Y3R1cmUKKyAqIEB2 bWE6CXRoZSBtYXBwaW5nJ3MgbWVtb3J5IGFyZWEKKyAqIEB2bW06CXRoZSBWUkFNIE1NIGluc3Rh bmNlCisgKgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2Vzcywgb3IKKyAqIGEgbmVnYXRpdmUg ZXJyb3IgY29kZSBvdGhlcndpc2UuCisgKi8KK2ludCBkcm1fdnJhbV9tbV9tbWFwKHN0cnVjdCBm aWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJICAgICBzdHJ1Y3QgZHJt X3ZyYW1fbW0gKnZtbSkKK3sKKwlyZXR1cm4gdHRtX2JvX21tYXAoZmlscCwgdm1hLCAmdm1tLT5i ZGV2KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3ZyYW1fbW1fbW1hcCk7CmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fdnJhbV9tbV9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV92cmFtX21t X2hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGVlMDYw ZDI3MWJkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3ZyYW1fbW1faGVscGVy LmgKQEAgLTAsMCArMSw2NyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b3ItbGF0ZXIgKi8KKworI2lmbmRlZiBEUk1fVlJBTV9NTV9IRUxQRVJfSAorI2RlZmluZSBEUk1f VlJBTV9NTV9IRUxQRVJfSAorCisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVyLmg+CisK K3N0cnVjdCBkcm1fZGV2aWNlOworCisvKioKKyAqIHN0cnVjdCBkcm1fdnJhbV9tbV9mdW5jcyAt IENhbGxiYWNrIGZ1bmN0aW9ucyBmb3IgJnN0cnVjdCBkcm1fdnJhbV9tbQorICogQGV2aWN0X2Zs YWdzOiAJUHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gZm9yIHN0cnVjdCAmdHRtX2JvX2RyaXZl ci5ldmljdF9mbGFncworICogQHZlcmlmeV9hY2Nlc3M6CVByb3ZpZGVzIGFuIGltcGxlbWVudGF0 aW9uIGZvciBzdHJ1Y3QgJnR0bV9ib19kcml2ZXIudmVyaWZ5X2FjY2VzcworICoKKyAqIFRoZXNl IGNhbGxiYWNrIGZ1bmN0aW9uIGludGVncmF0ZSBWUkFNIE1NIHdpdGggVFRNIGJ1ZmZlciBvYmpl Y3RzLiBOZXcKKyAqIGZ1bmN0aW9ucyBjYW4gYmUgYWRkZWQgaWYgbmVjZXNzYXJ5LgorICovCitz dHJ1Y3QgZHJtX3ZyYW1fbW1fZnVuY3MgeworICAgICAgICB2b2lkICgqZXZpY3RfZmxhZ3MpKHN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVudCk7CisJaW50ICgqdmVyaWZ5X2FjY2Vzcyko c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgc3RydWN0IGZpbGUgKmZpbHApOworfTsKKwor LyoqCisgKiBzdHJ1Y3QgZHJtX3ZyYW1fbW0gLSBBbiBpbnN0YW5jZSBvZiBWUkFNIE1NCisgKiBA dnJhbV9iYXNlOglCYXNlIGFkZHJlc3Mgb2YgdGhlIG1hbmFnZWQgdmlkZW8gbWVtb3J5CisgKiBA dnJhbV9zaXplOglTaXplIG9mIHRoZSBtYW5hZ2VkIHZpZGVvIG1lbW9yeSBpbiBieXRlcworICog QGJkZXY6CVRoZSBUVE0gQk8gZGV2aWNlLgorICogQGZ1bmNzOglUVE0gQk8gZnVuY3Rpb25zCisg KgorICogVGhlIGZpZWxkcyAmc3RydWN0IGRybV92cmFtX21tLnZyYW1fYmFzZSBhbmQKKyAqICZz dHJ1Y3QgZHJtX3ZyYW1fbW0udnJtX3NpemUgYXJlIG1hbmFnZWQgYnkgVlJBTSBNTSwgYnV0IGFy ZQorICogYXZhaWxhYmxlIGZvciBwdWJsaWMgcmVhZCBhY2Nlc3MuIFVzZSB0aGUgZmllbGQKKyAq ICZzdHJ1Y3QgZHJtX3ZyYW1fbW0uYmRldiB0byBhY2Nlc3MgdGhlIFRUTSBCTyBkZXZpY2UuCisg Ki8KK3N0cnVjdCBkcm1fdnJhbV9tbSB7CisJdTY0IHZyYW1fYmFzZTsKKwl1bnNpZ25lZCBsb25n IHZyYW1fc2l6ZTsKKworCXN0cnVjdCB0dG1fYm9fZGV2aWNlIGJkZXY7CisKKwljb25zdCBzdHJ1 Y3QgZHJtX3ZyYW1fbW1fZnVuY3MgKmZ1bmNzOworfTsKKworLyoqCisgKiBkcm1fdnJhbV9tbV9v Zl9iZGV2KCkgLSBcCisJUmV0dXJucyB0aGUgY29udGFpbmVyIG9mIHR5cGUgJnN0cnVjdCB0dG1f Ym9fZGV2aWNlIGZvciBmaWVsZCBiZGV2LgorICogQGJkZXY6CXRoZSBUVE0gQk8gZGV2aWNlCisg KgorICogUmV0dXJuczoKKyAqIFRoZSBjb250YWluaW5nIGluc3RhbmNlIG9mICZzdHJ1Y3QgZHJt X3ZyYW1fbW0KKyAqLworc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX3ZyYW1fbW0qIGRybV92cmFt X21tX29mX2JkZXYoCisJc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYpCit7CisJcmV0dXJuIGNv bnRhaW5lcl9vZihiZGV2LCBzdHJ1Y3QgZHJtX3ZyYW1fbW0sIGJkZXYpOworfQorCitpbnQgZHJt X3ZyYW1fbW1faW5pdChzdHJ1Y3QgZHJtX3ZyYW1fbW0gKnZtbSwgc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKKwkJICAgICB1NjQgdnJhbV9iYXNlLCB1bnNpZ25lZCBsb25nIHZyYW1fc2l6ZSwKKwkJ ICAgICBjb25zdCBzdHJ1Y3QgZHJtX3ZyYW1fbW1fZnVuY3MqIGZ1bmNzKTsKK3ZvaWQgZHJtX3Zy YW1fbW1fY2xlYW51cChzdHJ1Y3QgZHJtX3ZyYW1fbW0gKnZtbSk7CisKK2ludCBkcm1fdnJhbV9t bV9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJ ICAgICBzdHJ1Y3QgZHJtX3ZyYW1fbW0gKnZtbSk7CisKKyNlbmRpZgotLSAKMi4yMS4wCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=