From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 05/15] drm: Add Simple TTM, a memory manager for dedicated VRAM Date: Mon, 8 Apr 2019 11:21:34 +0200 Message-ID: <20190408092144.4548-6-tzimmermann@suse.de> References: <20190408092144.4548-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 946A1891EF for ; Mon, 8 Apr 2019 09:21:53 +0000 (UTC) In-Reply-To: <20190408092144.4548-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 VGhlIFNpbXBsZSBUVE0gbWVtb3J5IG1hbmFnZXIgaXMgYSBoZWxwZXIgbGlicmFyeSB0aGF0IG1h bmFnZXMgZGVkaWNhdGVkCnZpZGVvIG1lbW9yeSBvZiBzaW1wbGUgZnJhbWVidWZmZXIgZGV2aWNl cy4gVGhlIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uCnRoZSByZXNwZWN0aXZlIGNvZGUgZnJv bSBhc3QsIGJvY2hzLCBhbmQgbWdhZzIwMC4gVGhlc2UgZHJpdmVycyBzaGFyZSB0aGUKZXhhY3Qg c2FtZSBpbXBsZW1lbnRhdGlvbiBleGVjZXB0IGZvciB0eXBlIG5hbWVzLgoKU2lnbmVkLW9mZi1i eTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Ci0tLQogRG9jdW1lbnRh dGlvbi9ncHUvZHJtLW1tLnJzdCAgICAgICAgICAgIHwgIDExICsrCiBkcml2ZXJzL2dwdS9kcm0v S2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl ICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxlX3R0bV9o ZWxwZXIuYyB8IDE5MSArKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvZHJtL2RybV9z aW1wbGVfdHRtX2hlbHBlci5oICAgICB8ICA3NCArKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwg Mjg0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJt X3NpbXBsZV90dG1faGVscGVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1f c2ltcGxlX3R0bV9oZWxwZXIuaAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1t bS5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0CmluZGV4IDU5NmU1ZjE1ZjQ1OS4u OTRlOGFmYWE1NWQyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0Cisr KyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKQEAgLTc5LDYgKzc5LDE3IEBAIGNvdW50 IGZvciB0aGUgVFRNLCB3aGljaCB3aWxsIGNhbGwgeW91ciBpbml0aWFsaXphdGlvbiBmdW5jdGlv bi4KIAogU2VlIHRoZSByYWRlb25fdHRtLmMgZmlsZSBmb3IgYW4gZXhhbXBsZSBvZiB1c2FnZS4K IAorU2ltcGxlIFRUTSBIZWxwZXIgRnVuY3Rpb25zIFJlZmVyZW5jZQorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJt L2RybV9zaW1wbGVfdHRtX2hlbHBlci5jCisgICA6ZG9jOiBvdmVydmlldworCisuLiBrZXJuZWwt ZG9jOjogaW5jbHVkZS9kcm0vZHJtX3NpbXBsZV90dG1faGVscGVyLmgKKyAgIDppbnRlcm5hbDoK KworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxlX3R0bV9oZWxwZXIu YworICAgOmV4cG9ydDoKIAogVGhlIEdyYXBoaWNzIEV4ZWN1dGlvbiBNYW5hZ2VyIChHRU0pCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggNjg0YmQzMjdl YjA3Li5mYjg0YWI2MWZlZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC0xNjYsNiArMTY2LDEzIEBAIGNvbmZpZyBE Uk1fVFRNX0hFTFBFUgogCWhlbHAKIAkgIEhlbHBlcnMgZm9yIFRUTS1iYXNlZCBtZW1vcnkgbWFu YWdlbWVudAogCitjb25maWcgRFJNX1NJTVBMRV9UVE1fSEVMUEVSCisJdHJpc3RhdGUKKwlkZXBl bmRzIG9uIERSTSAmJiBEUk1fVFRNCisJc2VsZWN0IERSTV9UVE1fSEVMUEVSCisJaGVscAorCSAg Q2hvb3NlIHRoaXMgaWYgeW91IG5lZWQgdGhlIFNpbXBsZSBUVE0gaGVscGVyIGZ1bmN0aW9ucwor CiBjb25maWcgRFJNX0dFTV9DTUFfSEVMUEVSCiAJYm9vbAogCWRlcGVuZHMgb24gRFJNCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZp bGUKaW5kZXggYWNkMGYzZTRmMDc5Li41NGIxMjhiYTBiOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTM1LDYg KzM1LDcgQEAgZHJtLSQoQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdBUkUpICs9IGRybV9lZGlk X2xvYWQubwogCiBkcm1fdHRtX2hlbHBlci15IDo9IGRybV90dG1faGVscGVyX2NvbW1vbi5vCiBk cm1fdHRtX2hlbHBlci0kKENPTkZJR19EUk1fR0VNX1RUTV9IRUxQRVIpICs9IGRybV9nZW1fdHRt X2hlbHBlci5vCitkcm1fdHRtX2hlbHBlci0kKENPTkZJR19EUk1fU0lNUExFX1RUTV9IRUxQRVIp ICs9IGRybV9zaW1wbGVfdHRtX2hlbHBlci5vCiBvYmotJChDT05GSUdfRFJNX1RUTV9IRUxQRVIp ICs9IGRybV90dG1faGVscGVyLm8KIAogZHJtX2ttc19oZWxwZXIteSA6PSBkcm1fY3J0Y19oZWxw ZXIubyBkcm1fZHBfaGVscGVyLm8gZHJtX2RzYy5vIGRybV9wcm9iZV9oZWxwZXIubyBcCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV90dG1faGVscGVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3NpbXBsZV90dG1faGVscGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi41MjQ3MWYxNTBmNjMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3NpbXBsZV90dG1faGVscGVyLmMKQEAgLTAsMCArMSwxOTEgQEAKKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICovCisKKyNpbmNsdWRlIDxk cm0vZHJtX3NpbXBsZV90dG1faGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNs dWRlIDxkcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmg+CisKKy8qKgorICogRE9DOiBvdmVydmlldwor ICoKKyAqIFNpbXBsZSBUVE0gaW1wbGVtZW50cyBhIFRUTSBtZW1vcnkgbWFuYWdlciBmb3IgZnJh bWVidWZmZXIgZGV2aWNlcyB3aXRoCisgKiBkZWRpY2F0ZWQgdmlkZW8gbWVtb3J5LiBJdCBjdXJy ZW50bHkgc3VwcG9ydCBtZW1vcnkgcmVnaW9ucyBUVE1fUExfVlJBTQorICogYW5kIFRUTV9QTF9T WVNURU0uIFN1cHBvcnQgZm9yIFRUTV9QTF9UVCBjb3VsZCBwcm9iYWJseSBiZSBhZGRlZCBpZgor ICogbmVjZXNzYXJ5LgorICovCisKKy8qCisgKiBUVE0gVFQKKyAqLworCitzdGF0aWMgdm9pZCBi YWNrZW5kX2Z1bmNfZGVzdHJveShzdHJ1Y3QgdHRtX3R0ICp0dCkKK3sKKwl0dG1fdHRfZmluaSh0 dCk7CisJa2ZyZWUodHQpOworfQorCitzdGF0aWMgc3RydWN0IHR0bV9iYWNrZW5kX2Z1bmMgYmFj a2VuZF9mdW5jID0geworCS5kZXN0cm95ID0gYmFja2VuZF9mdW5jX2Rlc3Ryb3kKK307CisKKy8q CisgKiBUVE0gQk8gZGV2aWNlCisgKi8KKworc3RhdGljIHN0cnVjdCB0dG1fdHQgKmJvX2RyaXZl cl90dG1fdHRfY3JlYXRlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCisJCQkJCSAgICAg IHVpbnQzMl90IHBhZ2VfZmxhZ3MpCit7CisJc3RydWN0IHR0bV90dCAqdHQ7CisJaW50IHJldDsK KworCXR0ID0ga3phbGxvYyhzaXplb2YoKnR0KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF0dCkKKwkJ cmV0dXJuIE5VTEw7CisKKwl0dC0+ZnVuYyA9ICZiYWNrZW5kX2Z1bmM7CisKKwlyZXQgPSB0dG1f dHRfaW5pdCh0dCwgYm8sIHBhZ2VfZmxhZ3MpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl90 dG1fdHRfaW5pdDsKKworCXJldHVybiB0dDsKKworZXJyX3R0bV90dF9pbml0OgorCWtmcmVlKHR0 KTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCBib19kcml2ZXJfaW5pdF9tZW1fdHlw ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgdWludDMyX3QgdHlwZSwKKwkJCQkgICBzdHJ1 Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbikKK3sKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNl IFRUTV9QTF9TWVNURU06CisJCW1hbi0+ZmxhZ3MgPSBUVE1fTUVNVFlQRV9GTEFHX01BUFBBQkxF OworCQltYW4tPmF2YWlsYWJsZV9jYWNoaW5nID0gVFRNX1BMX01BU0tfQ0FDSElORzsKKwkJbWFu LT5kZWZhdWx0X2NhY2hpbmcgPSBUVE1fUExfRkxBR19DQUNIRUQ7CisJCWJyZWFrOworCWNhc2Ug VFRNX1BMX1ZSQU06CisJCW1hbi0+ZnVuYyA9ICZ0dG1fYm9fbWFuYWdlcl9mdW5jOworCQltYW4t PmZsYWdzID0gVFRNX01FTVRZUEVfRkxBR19GSVhFRCB8CisJCQkgICAgIFRUTV9NRU1UWVBFX0ZM QUdfTUFQUEFCTEU7CisJCW1hbi0+YXZhaWxhYmxlX2NhY2hpbmcgPSBUVE1fUExfRkxBR19VTkNB Q0hFRCB8CisJCQkJCSBUVE1fUExfRkxBR19XQzsKKwkJbWFuLT5kZWZhdWx0X2NhY2hpbmcgPSBU VE1fUExfRkxBR19XQzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBib19kcml2ZXJfZXZpY3RfZmxhZ3Moc3Ry dWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgc3RydWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVu dCkKK3sKKwlzdHJ1Y3QgZHJtX3NpbXBsZV90dG0gKnR0bSA9IGRybV9zaW1wbGVfdHRtX29mX2Jk ZXYoYm8tPmJkZXYpOworCisJaWYgKHR0bS0+ZnVuY3MgJiYgdHRtLT5mdW5jcy0+ZXZpY3RfZmxh Z3MpCisJCXR0bS0+ZnVuY3MtPmV2aWN0X2ZsYWdzKGJvLCBwbGFjZW1lbnQpOworfQorCitzdGF0 aWMgaW50IGJvX2RyaXZlcl92ZXJpZnlfYWNjZXNzKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAq Ym8sIHN0cnVjdCBmaWxlICpmaWxwKQoreworCXN0cnVjdCBkcm1fc2ltcGxlX3R0bSAqdHRtID0g ZHJtX3NpbXBsZV90dG1fb2ZfYmRldihiby0+YmRldik7CisKKwlpZiAoIXR0bS0+ZnVuY3MgfHwg IXR0bS0+ZnVuY3MtPnZlcmlmeV9hY2Nlc3MpCisJCXJldHVybiAwOworCXJldHVybiB0dG0tPmZ1 bmNzLT52ZXJpZnlfYWNjZXNzKGJvLCBmaWxwKTsKK30KKworc3RhdGljIGludCBib19kcml2ZXJf aW9fbWVtX3Jlc2VydmUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCisJCQkJICAgIHN0cnVj dCB0dG1fbWVtX3JlZyAqbWVtKQoreworCXN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFu ID0gYmRldi0+bWFuICsgbWVtLT5tZW1fdHlwZTsKKwlzdHJ1Y3QgZHJtX3NpbXBsZV90dG0gKnR0 bSA9IGRybV9zaW1wbGVfdHRtX29mX2JkZXYoYmRldik7CisKKwlpZiAoIShtYW4tPmZsYWdzICYg VFRNX01FTVRZUEVfRkxBR19NQVBQQUJMRSkpCisJCXJldHVybiAtRUlOVkFMOworCisJbWVtLT5i dXMuYWRkciA9IE5VTEw7CisJbWVtLT5idXMuc2l6ZSA9IG1lbS0+bnVtX3BhZ2VzIDw8IFBBR0Vf U0hJRlQ7CisKKwlzd2l0Y2ggKG1lbS0+bWVtX3R5cGUpIHsKKwljYXNlIFRUTV9QTF9TWVNURU06 CS8qIG5vdGhpbmcgdG8gZG8gKi8KKwkJbWVtLT5idXMub2Zmc2V0ID0gMDsKKwkJbWVtLT5idXMu YmFzZSA9IDA7CisJCW1lbS0+YnVzLmlzX2lvbWVtID0gZmFsc2U7CisJCWJyZWFrOworCWNhc2Ug VFRNX1BMX1ZSQU06CisJCW1lbS0+YnVzLm9mZnNldCA9IG1lbS0+c3RhcnQgPDwgUEFHRV9TSElG VDsKKwkJbWVtLT5idXMuYmFzZSA9IHR0bS0+dnJhbV9iYXNlOworCQltZW0tPmJ1cy5pc19pb21l bSA9IHRydWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBib19kcml2ZXJfaW9fbWVtX2ZyZWUoc3RydWN0 IHR0bV9ib19kZXZpY2UgKmJkZXYsCisJCQkJICBzdHJ1Y3QgdHRtX21lbV9yZWcgKm1lbSkKK3sg fQorCitzdGF0aWMgc3RydWN0IHR0bV9ib19kcml2ZXIgYm9fZHJpdmVyID0geworCS50dG1fdHRf Y3JlYXRlID0gYm9fZHJpdmVyX3R0bV90dF9jcmVhdGUsCisJLnR0bV90dF9wb3B1bGF0ZSA9IHR0 bV9wb29sX3BvcHVsYXRlLAorCS50dG1fdHRfdW5wb3B1bGF0ZSA9IHR0bV9wb29sX3VucG9wdWxh dGUsCisJLmluaXRfbWVtX3R5cGUgPSBib19kcml2ZXJfaW5pdF9tZW1fdHlwZSwKKwkuZXZpY3Rp b25fdmFsdWFibGUgPSB0dG1fYm9fZXZpY3Rpb25fdmFsdWFibGUsCisJLmV2aWN0X2ZsYWdzID0g Ym9fZHJpdmVyX2V2aWN0X2ZsYWdzLAorCS52ZXJpZnlfYWNjZXNzID0gYm9fZHJpdmVyX3Zlcmlm eV9hY2Nlc3MsCisJLmlvX21lbV9yZXNlcnZlID0gYm9fZHJpdmVyX2lvX21lbV9yZXNlcnZlLAor CS5pb19tZW1fZnJlZSA9IGJvX2RyaXZlcl9pb19tZW1fZnJlZSwKK307CisKKy8qCisgKiBzdHJ1 Y3QgZHJtX3NpbXBsZV90dG0KKyAqLworCisvKioKKyAqIGRybV9zaW1wbGVfdHRtX2luaXQoKSAt IEluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgU2ltcGxlIFRUTS4KKyAqIEB0dG06CXRoZSBTaW1w bGUgVFRNIGluc3RhbmNlIHRvIGluaXRpYWxpemUKKyAqIEBkZXY6CXRoZSBEUk0gZGV2aWNlCisg KiBAdnJhbV9iYXNlOgl0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSB2aWRlbyBtZW1vcnkKKyAqIEB2 cmFtX3NpemU6CXRoZSBzaXplIG9mIHRoZSB2aWRlbyBtZW1vcnkgaW4gYnl0ZXMKKyAqIEBmdW5j czoJY2FsbGJhY2sgZnVuY3Rpb25zIGZvciBidWZmZXIgb2JqZWN0cworICoKKyAqIFJldHVybnM6 CisgKiAwIG9uIHN1Y2Nlc3MsIG9yCisgKiBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNl LgorICovCitpbnQgZHJtX3NpbXBsZV90dG1faW5pdChzdHJ1Y3QgZHJtX3NpbXBsZV90dG0gKnR0 bSwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCXU2NCB2cmFtX2Jhc2UsIHVuc2lnbmVkIGxv bmcgdnJhbV9zaXplLAorCQkJY29uc3Qgc3RydWN0IGRybV9zaW1wbGVfdHRtX2Z1bmNzKiBmdW5j cykKK3sKKwlpbnQgcmV0OworCisJdHRtLT52cmFtX2Jhc2UgPSB2cmFtX2Jhc2U7CisJdHRtLT52 cmFtX3NpemUgPSB2cmFtX3NpemU7CisJdHRtLT5mdW5jcyA9IGZ1bmNzOworCisJcmV0ID0gdHRt X2JvX2RldmljZV9pbml0KCZ0dG0tPmJkZXYsICZib19kcml2ZXIsCisJCQkJIGRldi0+YW5vbl9p bm9kZS0+aV9tYXBwaW5nLAorCQkJCSB0cnVlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJcmV0ID0gdHRtX2JvX2luaXRfbW0oJnR0bS0+YmRldiwgVFRNX1BMX1ZSQU0sIHZyYW1fc2l6 ZSA+PiBQQUdFX1NISUZUKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7 Cit9CitFWFBPUlRfU1lNQk9MKGRybV9zaW1wbGVfdHRtX2luaXQpOworCisvKioKKyAqIGRybV9z aW1wbGVfdHRtX2NsZWFudXAoKSAtIENsZWFucyB1cCBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBv ZiBTaW1wbGUgVFRNLgorICogQHR0bToJdGhlIFNpbXBsZSBUVE0gaW5zdGFuY2UgdG8gY2xlYW4g dXAKKyAqLwordm9pZCBkcm1fc2ltcGxlX3R0bV9jbGVhbnVwKHN0cnVjdCBkcm1fc2ltcGxlX3R0 bSAqdHRtKQoreworCXR0bV9ib19kZXZpY2VfcmVsZWFzZSgmdHRtLT5iZGV2KTsKK30KK0VYUE9S VF9TWU1CT0woZHJtX3NpbXBsZV90dG1fY2xlYW51cCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1fc2ltcGxlX3R0bV9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9zaW1wbGVfdHRtX2hl bHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWFmNTA3ZGZj N2ZlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3NpbXBsZV90dG1faGVscGVy LmgKQEAgLTAsMCArMSw3NCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b3ItbGF0ZXIgKi8KKworI2lmbmRlZiBEUk1fU0lNUExFX1RUTV9IRUxQRVJfSAorI2RlZmluZSBE Uk1fU0lNUExFX1RUTV9IRUxQRVJfSAorCisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVy Lmg+CisKK3N0cnVjdCBkcm1fZGV2aWNlOworCisvKioKKyAqIHN0cnVjdCBkcm1fc2ltcGxlX3R0 bV9mdW5jcyAtIENhbGxiYWNrIGZ1bmN0aW9ucyBmb3Igc3RydWN0IGRybV9zaW1wbGVfdHRtCisg KgorICogVGhlc2UgY2FsbGJhY2sgZnVuY3Rpb24gaW50ZWdyYXRlIFNpbXBsZSBUVE0gd2l0aCBU VE0gYnVmZmVyIG9iamVjdHMuIE5ldworICogZnVuY3Rpb25zIGNhbiBiZSBhZGRlZCBpZiBuZWNl c3NhcnkuCisgKi8KK3N0cnVjdCBkcm1fc2ltcGxlX3R0bV9mdW5jcyB7CisJLyoqCisJICogUHJv dmlkZXMgYW4gaW1wbGVtZW50YXRpb24gZm9yIHN0cnVjdCB0dG1fYm9fZHJpdmVyLmV2aWN0X2Zs YWdzLgorCSAqLworICAgICAgICB2b2lkICgqZXZpY3RfZmxhZ3MpKHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR0bV9wbGFj ZW1lbnQgKnBsYWNlbWVudCk7CisKKwkvKioKKwkgKiBQcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlv biBmb3Igc3RydWN0IHR0bV9ib19kcml2ZXIudmVyaWZ5X2FjY2Vzcy4KKwkgKi8KKwlpbnQgKCp2 ZXJpZnlfYWNjZXNzKShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgZmlsZSAq ZmlscCk7Cit9OworCisvKioKKyAqIHN0cnVjdCBkcm1fc2ltcGxlX3R0bSAtIEFuIGluc3RhbmNl IG9mIFNpbXBsZSBUVE0KKyAqCisgKiBUaGUgZmllbGRzIHN0cnVjdCBkcm1fc2ltcGxlX3R0bS52 cmFtX2Jhc2UgYW5kCisgKiBzdHJ1Y3QgZHJtX3NpbXBsZV90dG0udnJtX3NpemUgYXJlIG1hbmFn ZWQgYnkgU2ltcGxlIFRUTSwKKyAqIGJ1dCBhdmFpbGFibGUgZm9yIHB1YmxpYyByZWFkIGFjY2Vz cy4gVXNlIHRoZSBmaWVsZAorICogc3RydWN0IGRybV9zaW1wbGVfdHRtLmJkZXYgdG8gYWNjZXNz IHRoZSBUVE0gQk8gZGV2aWNlLgorICovCitzdHJ1Y3QgZHJtX3NpbXBsZV90dG0geworCS8qKgor CSAqIEJhc2UgYWRkcmVzcyBvZiB0aGUgbWFuYWdlZCB2aWRlbyBtZW1vcnkKKwkgKi8KKwl1NjQg dnJhbV9iYXNlOworCisJLyoqCisJICogU2l6ZSBvZiB0aGUgbWFuYWdlZCB2aWRlbyBtZW1vcnkg aW4gYnl0ZXMKKwkgKi8KKwl1bnNpZ25lZCBsb25nIHZyYW1fc2l6ZTsKKworCS8qKgorCSAqIFRo ZSBUVE0gQk8gZGV2aWNlLgorCSAqLworCXN0cnVjdCB0dG1fYm9fZGV2aWNlIGJkZXY7CisKKwkv KiBUVE0gQk8gZnVuY3Rpb25zICovCisJY29uc3Qgc3RydWN0IGRybV9zaW1wbGVfdHRtX2Z1bmNz ICpmdW5jczsKK307CisKKy8qKgorICogUmV0dXJucyB0aGUgY29udGFpbmVyIG9mIHR5cGUgc3Ry dWN0IHR0bV9ib19kZXZpY2UKKyAqIGZvciBmaWVsZCBiZGV2LgorICogQGJkZXY6CXRoZSBUVE0g Qk8gZGV2aWNlCisgKiBSZXR1cm5zOglUaGUgY29udGFpbmluZyBTaW1wbGUgVFRNIGluc3RhbmNl CisgKi8KK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9zaW1wbGVfdHRtKiBkcm1fc2ltcGxlX3R0 bV9vZl9iZGV2KAorCXN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2KQoreworCXJldHVybiBjb250 YWluZXJfb2YoYmRldiwgc3RydWN0IGRybV9zaW1wbGVfdHRtLCBiZGV2KTsKK30KKworaW50IGRy bV9zaW1wbGVfdHRtX2luaXQoc3RydWN0IGRybV9zaW1wbGVfdHRtICp0dG0sIHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCisJCQl1NjQgdnJhbV9iYXNlLCB1bnNpZ25lZCBsb25nIHZyYW1fc2l6ZSwK KwkJCWNvbnN0IHN0cnVjdCBkcm1fc2ltcGxlX3R0bV9mdW5jcyogZnVuY3MpOwordm9pZCBkcm1f c2ltcGxlX3R0bV9jbGVhbnVwKHN0cnVjdCBkcm1fc2ltcGxlX3R0bSAqdHRtKTsKKworI2VuZGlm Ci0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bA==