From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: [PATCH 09/10] drm/etnaviv: implement per-process address spaces on MMUv2 Date: Wed, 19 Dec 2018 15:45:45 +0100 Message-ID: <20181219144546.28224-10-l.stach@pengutronix.de> References: <20181219144546.28224-1-l.stach@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7CF256EFFB for ; Wed, 19 Dec 2018 14:45:51 +0000 (UTC) In-Reply-To: <20181219144546.28224-1-l.stach@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: etnaviv@lists.freedesktop.org Cc: patchwork-lst@pengutronix.de, kernel@pengutronix.de, dri-devel@lists.freedesktop.org, Russell King List-Id: dri-devel@lists.freedesktop.org TU1VdjIgYWxsb3dzIGZvciBwcm9wZXIgc3dpdGNoaW5nIG9mIHRoZSBNTVUgY29udGV4dCB0aHJv dWdoIHRoZQpjb21tYW5kIHN0cmVhbS4gVXNlIHRoaXMgdG8gZ2l2ZSBlYWNoIHByb2Nlc3MgaXQn cyBvd24gR1BVIGFkZHJlc3MKc3BhY2UuCgpUaGlzIHByb3ZpZGVzIGJldHRlciBpc29sYXRpb24g b2YgdGhlIGdyYXBoaWNzIGNvbnRleHRzLgoKU2lnbmVkLW9mZi1ieTogTHVjYXMgU3RhY2ggPGwu c3RhY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZp dl9idWZmZXIuYyAgICAgfCA1OSArKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2 L2V0bmF2aXZfZHJ2LmMgICAgICAgIHwgMTUgKystCiBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X2Rydi5oICAgICAgICB8ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5h dml2X2R1bXAuYyAgICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2 X2dlbS5jICAgICAgICB8ICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dl bS5oICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbV9z dWJtaXQuYyB8ICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dwdS5jICAg ICAgICB8IDk4ICsrKysrKystLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X2dwdS5oICAgICAgICB8ICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2 aXZfaW9tbXUuYyAgICAgIHwgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZf aW9tbXVfdjIuYyAgIHwgMTcgKysrLQogZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9t bXUuYyAgICAgICAgfCA0NCArKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2 aXZfbW11LmggICAgICAgIHwgMTEgKystCiAxMyBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0aW9u cygrKSwgMTA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5h dml2L2V0bmF2aXZfYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2J1 ZmZlci5jCmluZGV4IGUxMzQ3NjMwZmExMS4uNDRkY2Q1MDc3Mzk0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfYnVmZmVyLmMKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgdm9p ZCBldG5hdml2X2J1ZmZlcl9kdW1wKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LAogCXUzMiAqcHRy ID0gYnVmLT52YWRkciArIG9mZjsKIAogCWRldl9pbmZvKGdwdS0+ZGV2LCAidmlydCAlcCBwaHlz IDB4JTA4eCBmcmVlIDB4JTA4eFxuIiwKLQkJCXB0ciwgZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGJ1 ZiwgJmdwdS0+Y21kYnVmX21hcHBpbmcpICsKKwkJCXB0ciwgZXRuYXZpdl9jbWRidWZfZ2V0X3Zh KGJ1ZiwgJmdwdS0+bW11LT5jbWRidWZfbWFwcGluZykgKwogCQkJb2ZmLCBzaXplIC0gbGVuICog NCAtIG9mZik7CiAKIAlwcmludF9oZXhfZHVtcChLRVJOX0lORk8sICJjbWQgIiwgRFVNUF9QUkVG SVhfT0ZGU0VULCAxNiwgNCwKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdTMyIGV0bmF2aXZf YnVmZmVyX3Jlc2VydmUoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsCiAJaWYgKGJ1ZmZlci0+dXNl cl9zaXplICsgY21kX2R3b3JkcyAqIHNpemVvZih1NjQpID4gYnVmZmVyLT5zaXplKQogCQlidWZm ZXItPnVzZXJfc2l6ZSA9IDA7CiAKLQlyZXR1cm4gZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGJ1ZmZl ciwgJmdwdS0+Y21kYnVmX21hcHBpbmcpICsKKwlyZXR1cm4gZXRuYXZpdl9jbWRidWZfZ2V0X3Zh KGJ1ZmZlciwgJmdwdS0+bW11LT5jbWRidWZfbWFwcGluZykgKwogCSAgICAgICBidWZmZXItPnVz ZXJfc2l6ZTsKIH0KIApAQCAtMTY0LDcgKzE2NCw3IEBAIHUxNiBldG5hdml2X2J1ZmZlcl9pbml0 KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQogCWJ1ZmZlci0+dXNlcl9zaXplID0gMDsKIAogCUNN RF9XQUlUKGJ1ZmZlcik7Ci0JQ01EX0xJTksoYnVmZmVyLCAyLCBldG5hdml2X2NtZGJ1Zl9nZXRf dmEoYnVmZmVyLCAmZ3B1LT5jbWRidWZfbWFwcGluZykKKwlDTURfTElOSyhidWZmZXIsIDIsIGV0 bmF2aXZfY21kYnVmX2dldF92YShidWZmZXIsICZncHUtPm1tdS0+Y21kYnVmX21hcHBpbmcpCiAJ CSArIGJ1ZmZlci0+dXNlcl9zaXplIC0gNCk7CiAKIAlyZXR1cm4gYnVmZmVyLT51c2VyX3NpemUg LyA4OwpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgZXRuYXZpdl9zeW5jX3BvaW50X3F1ZXVlKHN0 cnVjdCBldG5hdml2X2dwdSAqZ3B1LCB1bnNpZ25lZCBpbnQgZXZlbnQpCiAKIAkvKiBBcHBlbmQg d2FpdGxpbmsgKi8KIAlDTURfV0FJVChidWZmZXIpOwotCUNNRF9MSU5LKGJ1ZmZlciwgMiwgZXRu YXZpdl9jbWRidWZfZ2V0X3ZhKGJ1ZmZlciwgJmdwdS0+Y21kYnVmX21hcHBpbmcpCisJQ01EX0xJ TksoYnVmZmVyLCAyLCBldG5hdml2X2NtZGJ1Zl9nZXRfdmEoYnVmZmVyLCAmZ3B1LT5tbXUtPmNt ZGJ1Zl9tYXBwaW5nKQogCQkgKyBidWZmZXItPnVzZXJfc2l6ZSAtIDQpOwogCiAJLyoKQEAgLTMw NiwyNSArMzA2LDI3IEBAIHZvaWQgZXRuYXZpdl9zeW5jX3BvaW50X3F1ZXVlKHN0cnVjdCBldG5h dml2X2dwdSAqZ3B1LCB1bnNpZ25lZCBpbnQgZXZlbnQpCiAKIC8qIEFwcGVuZCBhIGNvbW1hbmQg YnVmZmVyIHRvIHRoZSByaW5nIGJ1ZmZlci4gKi8KIHZvaWQgZXRuYXZpdl9idWZmZXJfcXVldWUo c3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHUzMiBleGVjX3N0YXRlLAotCXVuc2lnbmVkIGludCBl dmVudCwgc3RydWN0IGV0bmF2aXZfY21kYnVmICpjbWRidWYpCisJc3RydWN0IGV0bmF2aXZfaW9t bXVfY29udGV4dCAqbW11LCB1bnNpZ25lZCBpbnQgZXZlbnQsIHN0cnVjdCBldG5hdml2X2NtZGJ1 ZiAqY21kYnVmKQogewogCXN0cnVjdCBldG5hdml2X2NtZGJ1ZiAqYnVmZmVyID0gJmdwdS0+YnVm ZmVyOwogCXVuc2lnbmVkIGludCB3YWl0bGlua19vZmZzZXQgPSBidWZmZXItPnVzZXJfc2l6ZSAt IDE2OwogCXUzMiByZXR1cm5fdGFyZ2V0LCByZXR1cm5fZHdvcmRzOwogCXUzMiBsaW5rX3Rhcmdl dCwgbGlua19kd29yZHM7CiAJYm9vbCBzd2l0Y2hfY29udGV4dCA9IGdwdS0+ZXhlY19zdGF0ZSAh PSBleGVjX3N0YXRlOwotCWJvb2wgbmVlZF9mbHVzaCA9IGdwdS0+Zmx1c2hfc2VxICE9IGdwdS0+ bW11LT5mbHVzaF9zZXE7CisJYm9vbCBzd2l0Y2hfbW11X2NvbnRleHQgPSBncHUtPm1tdSAhPSBt bXU7CisJYm9vbCBuZWVkX2ZsdXNoID0gc3dpdGNoX21tdV9jb250ZXh0IHx8CisJCQkgIGdwdS0+ Zmx1c2hfc2VxICE9IGdwdS0+bW11LT5mbHVzaF9zZXE7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxk KCZncHUtPmxvY2spOwogCiAJaWYgKGRybV9kZWJ1ZyAmIERSTV9VVF9EUklWRVIpCiAJCWV0bmF2 aXZfYnVmZmVyX2R1bXAoZ3B1LCBidWZmZXIsIDAsIDB4NTApOwogCi0JbGlua190YXJnZXQgPSBl dG5hdml2X2NtZGJ1Zl9nZXRfdmEoY21kYnVmLCAmZ3B1LT5jbWRidWZfbWFwcGluZyk7CisJbGlu a190YXJnZXQgPSBldG5hdml2X2NtZGJ1Zl9nZXRfdmEoY21kYnVmLCAmZ3B1LT5tbXUtPmNtZGJ1 Zl9tYXBwaW5nKTsKIAlsaW5rX2R3b3JkcyA9IGNtZGJ1Zi0+c2l6ZSAvIDg7CiAKIAkvKgotCSAq IElmIHdlIG5lZWQgbWFpbnRhbmVuY2UgcHJpb3IgdG8gc3VibWl0dGluZyB0aGlzIGJ1ZmZlciwg d2Ugd2lsbAorCSAqIElmIHdlIG5lZWQgbWFpbnRlbmFuY2UgcHJpb3IgdG8gc3VibWl0dGluZyB0 aGlzIGJ1ZmZlciwgd2Ugd2lsbAogCSAqIG5lZWQgdG8gYXBwZW5kIGEgbW11IGZsdXNoIGxvYWQg c3RhdGUsIGZvbGxvd2VkIGJ5IGEgbmV3CiAJICogbGluayB0byB0aGlzIGJ1ZmZlciAtIGEgdG90 YWwgb2YgZm91ciBhZGRpdGlvbmFsIHdvcmRzLgogCSAqLwpAQCAtMzQ2LDcgKzM0OCwyNCBAQCB2 b2lkIGV0bmF2aXZfYnVmZmVyX3F1ZXVlKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCB1MzIgZXhl Y19zdGF0ZSwKIAkJaWYgKHN3aXRjaF9jb250ZXh0KQogCQkJZXh0cmFfZHdvcmRzICs9IDQ7CiAK KwkJLyogUFRBIGxvYWQgY29tbWFuZCAqLworCQlpZiAoc3dpdGNoX21tdV9jb250ZXh0ICYmIGdw dS0+c2VjX21vZGUgPT0gRVROQV9TRUNfS0VSTkVMKQorCQkJZXh0cmFfZHdvcmRzICs9IDE7CisK IAkJdGFyZ2V0ID0gZXRuYXZpdl9idWZmZXJfcmVzZXJ2ZShncHUsIGJ1ZmZlciwgZXh0cmFfZHdv cmRzKTsKKwkJLyoKKwkJICogU3dpdGNoIE1NVSBjb250ZXh0IGlmIG5lY2Vzc2FyeS4gTXVzdCBi ZSBkb25lIGFmdGVyIHRoZQorCQkgKiBsaW5rIHRhcmdldCBoYXMgYmVlbiBjYWxjdWxhdGVkLCBh cyB0aGUganVtcCBmb3J3YXJkIGluIHRoZQorCQkgKiBrZXJuZWwgcmluZyBzdGlsbCB1c2VzIHRo ZSBsYXN0IGFjdGl2ZSBNTVUgY29udGV4dCBiZWZvcmUKKwkJICogdGhlIHN3aXRjaC4KKwkJICov CisJCWlmIChzd2l0Y2hfbW11X2NvbnRleHQpIHsKKwkJCXN0cnVjdCBldG5hdml2X2lvbW11X2Nv bnRleHQgKm1tdV9vbGQgPSBncHUtPm1tdTsKKworCQkJZXRuYXZpdl9pb21tdV9jb250ZXh0X2dl dChtbXUpOworCQkJZ3B1LT5tbXUgPSBtbXU7CisJCQlldG5hdml2X2lvbW11X2NvbnRleHRfcHV0 KG1tdV9vbGQpOworCQl9CiAKIAkJaWYgKG5lZWRfZmx1c2gpIHsKIAkJCS8qIEFkZCB0aGUgTU1V IGZsdXNoICovCkBAIC0zNTgsMTAgKzM3NywyMyBAQCB2b2lkIGV0bmF2aXZfYnVmZmVyX3F1ZXVl KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCB1MzIgZXhlY19zdGF0ZSwKIAkJCQkJICAgICAgIFZJ VlNfR0xfRkxVU0hfTU1VX0ZMVVNIX1BFTU1VIHwKIAkJCQkJICAgICAgIFZJVlNfR0xfRkxVU0hf TU1VX0ZMVVNIX1VOSzQpOwogCQkJfSBlbHNlIHsKKwkJCQl1MzIgZmx1c2ggPSBWSVZTX01NVXYy X0NPTkZJR1VSQVRJT05fTU9ERV9NQVNLIHwKKwkJCQkJICAgIFZJVlNfTU1VdjJfQ09ORklHVVJB VElPTl9GTFVTSF9GTFVTSDsKKworCQkJCWlmIChzd2l0Y2hfbW11X2NvbnRleHQgJiYKKwkJCQkg ICAgZ3B1LT5zZWNfbW9kZSA9PSBFVE5BX1NFQ19LRVJORUwpIHsKKwkJCQkJdW5zaWduZWQgc2hv cnQgaWQgPQorCQkJCQkJZXRuYXZpdl9pb21tdXYyX2dldF9wdGFfaWQoZ3B1LT5tbXUpOworCQkJ CQlDTURfTE9BRF9TVEFURShidWZmZXIsCisJCQkJCQlWSVZTX01NVXYyX1BUQV9DT05GSUcsCisJ CQkJCQlWSVZTX01NVXYyX1BUQV9DT05GSUdfSU5ERVgoaWQpKTsKKwkJCQl9CisKKwkJCQlpZiAo Z3B1LT5zZWNfbW9kZSA9PSBFVE5BX1NFQ19OT05FKQorCQkJCQlmbHVzaCB8PSBldG5hdml2X2lv bW11djJfZ2V0X210bGJfYWRkcihncHUtPm1tdSk7CisKIAkJCQlDTURfTE9BRF9TVEFURShidWZm ZXIsIFZJVlNfTU1VdjJfQ09ORklHVVJBVElPTiwKLQkJCQkJVklWU19NTVV2Ml9DT05GSUdVUkFU SU9OX01PREVfTUFTSyB8Ci0JCQkJCVZJVlNfTU1VdjJfQ09ORklHVVJBVElPTl9BRERSRVNTX01B U0sgfAotCQkJCQlWSVZTX01NVXYyX0NPTkZJR1VSQVRJT05fRkxVU0hfRkxVU0gpOworCQkJCQkg ICAgICAgZmx1c2gpOwogCQkJCUNNRF9TRU0oYnVmZmVyLCBTWU5DX1JFQ0lQSUVOVF9GRSwKIAkJ CQkJU1lOQ19SRUNJUElFTlRfUEUpOwogCQkJCUNNRF9TVEFMTChidWZmZXIsIFNZTkNfUkVDSVBJ RU5UX0ZFLApAQCAtMzc3LDYgKzQwOSw3IEBAIHZvaWQgZXRuYXZpdl9idWZmZXJfcXVldWUoc3Ry dWN0IGV0bmF2aXZfZ3B1ICpncHUsIHUzMiBleGVjX3N0YXRlLAogCQl9CiAKIAkJLyogQW5kIHRo ZSBsaW5rIHRvIHRoZSBzdWJtaXR0ZWQgYnVmZmVyICovCisJCWxpbmtfdGFyZ2V0ID0gZXRuYXZp dl9jbWRidWZfZ2V0X3ZhKGNtZGJ1ZiwgJmdwdS0+bW11LT5jbWRidWZfbWFwcGluZyk7CiAJCUNN RF9MSU5LKGJ1ZmZlciwgbGlua19kd29yZHMsIGxpbmtfdGFyZ2V0KTsKIAogCQkvKiBVcGRhdGUg dGhlIGxpbmsgdGFyZ2V0IHRvIHBvaW50IHRvIGFib3ZlIGluc3RydWN0aW9ucyAqLwpAQCAtNDEz LDEzICs0NDYsMTMgQEAgdm9pZCBldG5hdml2X2J1ZmZlcl9xdWV1ZShzdHJ1Y3QgZXRuYXZpdl9n cHUgKmdwdSwgdTMyIGV4ZWNfc3RhdGUsCiAJQ01EX0xPQURfU1RBVEUoYnVmZmVyLCBWSVZTX0dM X0VWRU5ULCBWSVZTX0dMX0VWRU5UX0VWRU5UX0lEKGV2ZW50KSB8CiAJCSAgICAgICBWSVZTX0dM X0VWRU5UX0ZST01fUEUpOwogCUNNRF9XQUlUKGJ1ZmZlcik7Ci0JQ01EX0xJTksoYnVmZmVyLCAy LCBldG5hdml2X2NtZGJ1Zl9nZXRfdmEoYnVmZmVyLCAmZ3B1LT5jbWRidWZfbWFwcGluZykKKwlD TURfTElOSyhidWZmZXIsIDIsIGV0bmF2aXZfY21kYnVmX2dldF92YShidWZmZXIsICZncHUtPm1t dS0+Y21kYnVmX21hcHBpbmcpCiAJCSArIGJ1ZmZlci0+dXNlcl9zaXplIC0gNCk7CiAKIAlpZiAo ZHJtX2RlYnVnICYgRFJNX1VUX0RSSVZFUikKIAkJcHJfaW5mbygic3RyZWFtIGxpbmsgdG8gMHgl MDh4IEAgMHglMDh4ICVwXG4iLAogCQkJcmV0dXJuX3RhcmdldCwKLQkJCWV0bmF2aXZfY21kYnVm X2dldF92YShjbWRidWYsICZncHUtPmNtZGJ1Zl9tYXBwaW5nKSwKKwkJCWV0bmF2aXZfY21kYnVm X2dldF92YShjbWRidWYsICZncHUtPm1tdS0+Y21kYnVmX21hcHBpbmcpLAogCQkJY21kYnVmLT52 YWRkcik7CiAKIAlpZiAoZHJtX2RlYnVnICYgRFJNX1VUX0RSSVZFUikgewpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9l dG5hdml2L2V0bmF2aXZfZHJ2LmMKaW5kZXggMTAzNzQ1ZDhmNTRjLi44NDdmYWNlZGY0MjEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZHJ2LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kcnYuYwpAQCAtNDEsMTIgKzQxLDE5IEBAIHN0 YXRpYyBpbnQgZXRuYXZpdl9vcGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGV0bmF2aXZfZmlsZV9wcml2YXRlICpjdHg7Ci0JaW50IGk7 CisJaW50IHJldCwgaTsKIAogCWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVM KTsKIAlpZiAoIWN0eCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKKwljdHgtPm1tdSA9IGV0bmF2aXZf aW9tbXVfY29udGV4dF9pbml0KHByaXYtPm1tdV9nbG9iYWwsCisJCQkJCSAgICAgIHByaXYtPmNt ZGJ1Zl9zdWJhbGxvYyk7CisJaWYgKCFjdHgtPm1tdSkgeworCQlyZXQgPSAtRU5PTUVNOworCQln b3RvIG91dF9mcmVlOworCX0KKwogCWZvciAoaSA9IDA7IGkgPCBFVE5BX01BWF9QSVBFUzsgaSsr KSB7CiAJCXN0cnVjdCBldG5hdml2X2dwdSAqZ3B1ID0gcHJpdi0+Z3B1W2ldOwogCQlzdHJ1Y3Qg ZHJtX3NjaGVkX3JxICpycTsKQEAgLTYxLDYgKzY4LDEwIEBAIHN0YXRpYyBpbnQgZXRuYXZpdl9v cGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlmaWxl LT5kcml2ZXJfcHJpdiA9IGN0eDsKIAogCXJldHVybiAwOworCitvdXRfZnJlZToKKwlrZnJlZShj dHgpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGV0bmF2aXZfcG9zdGNsb3NlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKQEAgLTc2LDYgKzg3 LDggQEAgc3RhdGljIHZvaWQgZXRuYXZpdl9wb3N0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9maWxlICpmaWxlKQogCQkJZHJtX3NjaGVkX2VudGl0eV9kZXN0cm95KCZj dHgtPnNjaGVkX2VudGl0eVtpXSk7CiAJfQogCisJZXRuYXZpdl9pb21tdV9jb250ZXh0X3B1dChj dHgtPm1tdSk7CisKIAlrZnJlZShjdHgpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZXRuYXZpdi9ldG5hdml2X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZp dl9kcnYuaAppbmRleCBkYTkzM2Y0MTY4OGYuLjY1MDUxNmYxMzU1NyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v ZXRuYXZpdi9ldG5hdml2X2Rydi5oCkBAIC0zNSwxMCArMzUsNyBAQCBzdHJ1Y3QgZXRuYXZpdl9n ZW1fc3VibWl0Owogc3RydWN0IGV0bmF2aXZfaW9tbXVfZ2xvYmFsOwogCiBzdHJ1Y3QgZXRuYXZp dl9maWxlX3ByaXZhdGUgewotCS8qCi0JICogV2hlbiBwZXItY29udGV4dCBhZGRyZXNzIHNwYWNl cyBhcmUgc3VwcG9ydGVkIHdlJ2Qga2VlcCB0cmFjayBvZgotCSAqIHRoZSBjb250ZXh0J3MgcGFn ZS10YWJsZXMgaGVyZS4KLQkgKi8KKwlzdHJ1Y3QgZXRuYXZpdl9pb21tdV9jb250ZXh0CSptbXU7 CiAJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkJCXNjaGVkX2VudGl0eVtFVE5BX01BWF9QSVBFU107 CiB9OwogCkBAIC04NSw2ICs4Miw3IEBAIHUxNiBldG5hdml2X2J1ZmZlcl9jb25maWdfcHRhKHN0 cnVjdCBldG5hdml2X2dwdSAqZ3B1LCB1bnNpZ25lZCBzaG9ydCBpZCk7CiB2b2lkIGV0bmF2aXZf YnVmZmVyX2VuZChzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSk7CiB2b2lkIGV0bmF2aXZfc3luY19w b2ludF9xdWV1ZShzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSwgdW5zaWduZWQgaW50IGV2ZW50KTsK IHZvaWQgZXRuYXZpdl9idWZmZXJfcXVldWUoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHUzMiBl eGVjX3N0YXRlLAorCXN0cnVjdCBldG5hdml2X2lvbW11X2NvbnRleHQgKm1tdSwKIAl1bnNpZ25l ZCBpbnQgZXZlbnQsIHN0cnVjdCBldG5hdml2X2NtZGJ1ZiAqY21kYnVmKTsKIHZvaWQgZXRuYXZp dl92YWxpZGF0ZV9pbml0KHZvaWQpOwogYm9vbCBldG5hdml2X2NtZF92YWxpZGF0ZV9vbmUoc3Ry dWN0IGV0bmF2aXZfZ3B1ICpncHUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZp di9ldG5hdml2X2R1bXAuYyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZHVtcC5j CmluZGV4IGI0ZTAyMDYzYjgwMi4uZDM3YTkxMDA4Zjk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZXRuYXZpdi9ldG5hdml2X2R1bXAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZp di9ldG5hdml2X2R1bXAuYwpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgZXRuYXZpdl9jb3JlX2R1 bXAoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCiAJZXRuYXZpdl9jb3JlX2R1bXBfbWVtKCZpdGVy LCBFVERVTVBfQlVGX1JJTkcsIGdwdS0+YnVmZmVyLnZhZGRyLAogCQkJICAgICAgZ3B1LT5idWZm ZXIuc2l6ZSwKIAkJCSAgICAgIGV0bmF2aXZfY21kYnVmX2dldF92YSgmZ3B1LT5idWZmZXIsCi0J CQkJCQkgICAgJmdwdS0+Y21kYnVmX21hcHBpbmcpKTsKKwkJCQkJCSAgICAmZ3B1LT5tbXUtPmNt ZGJ1Zl9tYXBwaW5nKSk7CiAKIAlzcGluX2xvY2soJmdwdS0+c2NoZWQuam9iX2xpc3RfbG9jayk7 CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShzX2pvYiwgJmdwdS0+c2NoZWQucmluZ19taXJyb3JfbGlz dCwgbm9kZSkgewpAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgZXRuYXZpdl9jb3JlX2R1bXAoc3Ry dWN0IGV0bmF2aXZfZ3B1ICpncHUpCiAJCWV0bmF2aXZfY29yZV9kdW1wX21lbSgmaXRlciwgRVRE VU1QX0JVRl9DTUQsCiAJCQkJICAgICAgc3VibWl0LT5jbWRidWYudmFkZHIsIHN1Ym1pdC0+Y21k YnVmLnNpemUsCiAJCQkJICAgICAgZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKCZzdWJtaXQtPmNtZGJ1 ZiwKLQkJCQkgICAgICAmZ3B1LT5jbWRidWZfbWFwcGluZykpOworCQkJCSAgICAgICZncHUtPm1t dS0+Y21kYnVmX21hcHBpbmcpKTsKIAl9CiAJc3Bpbl91bmxvY2soJmdwdS0+c2NoZWQuam9iX2xp c3RfbG9jayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZf Z2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbS5jCmluZGV4IGIyYmYx MjVmMTJiOS4uOTIzMWI3ZGQzNzI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZp di9ldG5hdml2X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2Vt LmMKQEAgLTI1OSw4ICsyNTksNyBAQCB2b2lkIGV0bmF2aXZfZ2VtX21hcHBpbmdfdW5yZWZlcmVu Y2Uoc3RydWN0IGV0bmF2aXZfdnJhbV9tYXBwaW5nICptYXBwaW5nKQogfQogCiBzdHJ1Y3QgZXRu YXZpdl92cmFtX21hcHBpbmcgKmV0bmF2aXZfZ2VtX21hcHBpbmdfZ2V0KAotCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSwKLQlzdHJ1Y3QgZXRuYXZp dl9pb21tdV9jb250ZXh0ICptbXUpCisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVj dCBldG5hdml2X2lvbW11X2NvbnRleHQgKm1tdSkKIHsKIAlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2Jq ZWN0ICpldG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8ob2JqKTsKIAlzdHJ1Y3QgZXRuYXZpdl92 cmFtX21hcHBpbmcgKm1hcHBpbmc7CkBAIC0zMTksNyArMzE4LDcgQEAgc3RydWN0IGV0bmF2aXZf dnJhbV9tYXBwaW5nICpldG5hdml2X2dlbV9tYXBwaW5nX2dldCgKIAltYXBwaW5nLT5jb250ZXh0 ID0gbW11OwogCW1hcHBpbmctPnVzZSA9IDE7CiAKLQlyZXQgPSBldG5hdml2X2lvbW11X21hcF9n ZW0obW11LCBldG5hdml2X29iaiwgZ3B1LT5tZW1vcnlfYmFzZSwKKwlyZXQgPSBldG5hdml2X2lv bW11X21hcF9nZW0obW11LCBldG5hdml2X29iaiwgbW11LT5nbG9iYWwtPm1lbW9yeV9iYXNlLAog CQkJCSAgICBtYXBwaW5nKTsKIAlpZiAocmV0IDwgMCkKIAkJa2ZyZWUobWFwcGluZyk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbS5oIGIvZHJpdmVycy9n cHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW0uaAppbmRleCA3OWEyMTFmNWFjNWYuLmRhMTllMzdj MjQ4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW0uaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbS5oCkBAIC05Nyw2ICs5Nyw3 IEBAIHN0cnVjdCBldG5hdml2X2dlbV9zdWJtaXQgewogCXN0cnVjdCBrcmVmIHJlZmNvdW50Owog CXN0cnVjdCBldG5hdml2X2ZpbGVfcHJpdmF0ZSAqY3R4OwogCXN0cnVjdCBldG5hdml2X2dwdSAq Z3B1OworCXN0cnVjdCBldG5hdml2X2lvbW11X2NvbnRleHQgKm1tdTsKIAlzdHJ1Y3QgZG1hX2Zl bmNlICpvdXRfZmVuY2UsICppbl9mZW5jZTsKIAlpbnQgb3V0X2ZlbmNlX2lkOwogCXN0cnVjdCBs aXN0X2hlYWQgbm9kZTsgLyogR1BVIGFjdGl2ZSBzdWJtaXQgbGlzdCAqLwpAQCAtMTIzLDggKzEy NCw3IEBAIHN0cnVjdCBwYWdlICoqZXRuYXZpdl9nZW1fZ2V0X3BhZ2VzKHN0cnVjdCBldG5hdml2 X2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIGV0bmF2aXZfZ2VtX3B1dF9wYWdlcyhzdHJ1Y3QgZXRu YXZpdl9nZW1fb2JqZWN0ICpvYmopOwogCiBzdHJ1Y3QgZXRuYXZpdl92cmFtX21hcHBpbmcgKmV0 bmF2aXZfZ2VtX21hcHBpbmdfZ2V0KAotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1 Y3QgZXRuYXZpdl9ncHUgKmdwdSwKLQlzdHJ1Y3QgZXRuYXZpdl9pb21tdV9jb250ZXh0ICptbXUp OworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZXRuYXZpdl9pb21tdV9jb250 ZXh0ICptbXUpOwogdm9pZCBldG5hdml2X2dlbV9tYXBwaW5nX3JlZmVyZW5jZShzdHJ1Y3QgZXRu YXZpdl92cmFtX21hcHBpbmcgKm1hcHBpbmcpOwogdm9pZCBldG5hdml2X2dlbV9tYXBwaW5nX3Vu cmVmZXJlbmNlKHN0cnVjdCBldG5hdml2X3ZyYW1fbWFwcGluZyAqbWFwcGluZyk7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3N1Ym1pdC5jIGIvZHJp dmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fc3VibWl0LmMKaW5kZXggNjNiODU2YjYy MDk4Li44NzU0NzYwZDQ2MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0 bmF2aXZfZ2VtX3N1Ym1pdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZf Z2VtX3N1Ym1pdC5jCkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGludCBzdWJtaXRfcGluX29i amVjdHMoc3RydWN0IGV0bmF2aXZfZ2VtX3N1Ym1pdCAqc3VibWl0KQogCQlzdHJ1Y3QgZXRuYXZp dl92cmFtX21hcHBpbmcgKm1hcHBpbmc7CiAKIAkJbWFwcGluZyA9IGV0bmF2aXZfZ2VtX21hcHBp bmdfZ2V0KCZldG5hdml2X29iai0+YmFzZSwKLQkJCQkJCSAgc3VibWl0LT5ncHUsIHN1Ym1pdC0+ Z3B1LT5tbXUpOworCQkJCQkJICBzdWJtaXQtPm1tdSk7CiAJCWlmIChJU19FUlIobWFwcGluZykp IHsKIAkJCXJldCA9IFBUUl9FUlIobWFwcGluZyk7CiAJCQlicmVhazsKQEAgLTM2Niw2ICszNjYs OSBAQCBzdGF0aWMgdm9pZCBzdWJtaXRfY2xlYW51cChzdHJ1Y3Qga3JlZiAqa3JlZikKIAlpZiAo c3VibWl0LT5jbWRidWYuc3ViYWxsb2MpCiAJCWV0bmF2aXZfY21kYnVmX2ZyZWUoJnN1Ym1pdC0+ Y21kYnVmKTsKIAorCWlmIChzdWJtaXQtPm1tdSkKKwkJZXRuYXZpdl9pb21tdV9jb250ZXh0X3B1 dChzdWJtaXQtPm1tdSk7CisKIAlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykg ewogCQlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHN1Ym1pdC0+Ym9z W2ldLm9iajsKIApAQCAtNTA3LDYgKzUxMCw4IEBAIGludCBldG5hdml2X2lvY3RsX2dlbV9zdWJt aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJZ290byBlcnJfc3VibWl0 X29iamVjdHM7CiAKIAlzdWJtaXQtPmN0eCA9IGZpbGUtPmRyaXZlcl9wcml2OworCWV0bmF2aXZf aW9tbXVfY29udGV4dF9nZXQoc3VibWl0LT5jdHgtPm1tdSk7CisJc3VibWl0LT5tbXUgPSBzdWJt aXQtPmN0eC0+bW11OwogCXN1Ym1pdC0+ZXhlY19zdGF0ZSA9IGFyZ3MtPmV4ZWNfc3RhdGU7CiAJ c3VibWl0LT5mbGFncyA9IGFyZ3MtPmZsYWdzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZXRuYXZpdi9ldG5hdml2X2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZp dl9ncHUuYwppbmRleCBkYTAxNjRlMDZlZTUuLmUwMjIzMTRhNzc4MSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9ncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v ZXRuYXZpdi9ldG5hdml2X2dwdS5jCkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBldG5hdml2X2dw dV9zdGFydF9mZShzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSwgdTMyIGFkZHJlc3MsIHUxNiBwcmVm ZXRjaCkKIAogc3RhdGljIHZvaWQgZXRuYXZpdl9ncHVfc3RhcnRfZmVfaWRsZWxvb3Aoc3RydWN0 IGV0bmF2aXZfZ3B1ICpncHUpCiB7Ci0JdTMyIGFkZHJlc3MgPSBldG5hdml2X2NtZGJ1Zl9nZXRf dmEoJmdwdS0+YnVmZmVyLCAmZ3B1LT5jbWRidWZfbWFwcGluZyk7CisJdTMyIGFkZHJlc3MgPSBl dG5hdml2X2NtZGJ1Zl9nZXRfdmEoJmdwdS0+YnVmZmVyLCAmZ3B1LT5tbXUtPmNtZGJ1Zl9tYXBw aW5nKTsKIAl1MTYgcHJlZmV0Y2g7CiAKIAkvKiBzZXR1cCB0aGUgTU1VICovCkBAIC02OTEsOCAr NjkxLDYgQEAgc3RhdGljIHZvaWQgZXRuYXZpdl9ncHVfaHdfaW5pdChzdHJ1Y3QgZXRuYXZpdl9n cHUgKmdwdSkKIAlldG5hdml2X2dwdV9zZXR1cF9wdWxzZV9lYXRlcihncHUpOwogCiAJZ3B1X3dy aXRlKGdwdSwgVklWU19ISV9JTlRSX0VOQkwsIH4wVSk7Ci0KLQlldG5hdml2X2dwdV9zdGFydF9m ZV9pZGxlbG9vcChncHUpOwogfQogCiBpbnQgZXRuYXZpdl9ncHVfaW5pdChzdHJ1Y3QgZXRuYXZp dl9kcm1fcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCkBAIC03MjIsMjgg KzcyMCw2IEBAIGludCBldG5hdml2X2dwdV9pbml0KHN0cnVjdCBldG5hdml2X2RybV9wcml2YXRl ICpwcml2LCBzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSkKIAkJZ290byBmYWlsOwogCX0KIAotCS8q Ci0JICogU2V0IHRoZSBHUFUgbGluZWFyIHdpbmRvdyB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZSBE TUEgd2luZG93LCB3aGVyZQotCSAqIHRoZSBDTUEgYXJlYSBpcyBsaWtlbHkgdG8gcmVzaWRlLiBU aGlzIGVuc3VyZXMgdGhhdCB3ZSBhcmUgYWJsZSB0bwotCSAqIG1hcCB0aGUgY29tbWFuZCBidWZm ZXJzIHdoaWxlIGhhdmluZyB0aGUgbGluZWFyIHdpbmRvdyBvdmVybGFwIGFzCi0JICogbXVjaCBS QU0gYXMgcG9zc2libGUsIHNvIHdlIGNhbiBvcHRpbWl6ZSBtYXBwaW5ncyBmb3Igb3RoZXIgYnVm ZmVycy4KLQkgKgotCSAqIEZvciAzRCBjb3JlcyBvbmx5IGRvIHRoaXMgaWYgTUMyLjAgaXMgcHJl c2VudCwgYXMgd2l0aCBNQzEuMCBpdCBsZWFkcwotCSAqIHRvIGRpZmZlcmVudCB2aWV3cyBvZiB0 aGUgbWVtb3J5IG9uIHRoZSBpbmRpdmlkdWFsIGVuZ2luZXMuCi0JICovCi0JaWYgKCEoZ3B1LT5p ZGVudGl0eS5mZWF0dXJlcyAmIGNoaXBGZWF0dXJlc19QSVBFXzNEKSB8fAotCSAgICAoZ3B1LT5p ZGVudGl0eS5taW5vcl9mZWF0dXJlczAgJiBjaGlwTWlub3JGZWF0dXJlczBfTUMyMCkpIHsKLQkJ dTMyIGRtYV9tYXNrID0gKHUzMilkbWFfZ2V0X3JlcXVpcmVkX21hc2soZ3B1LT5kZXYpOwotCQlp ZiAoZG1hX21hc2sgPCBQSFlTX09GRlNFVCArIFNaXzJHKQotCQkJZ3B1LT5tZW1vcnlfYmFzZSA9 IFBIWVNfT0ZGU0VUOwotCQllbHNlCi0JCQlncHUtPm1lbW9yeV9iYXNlID0gZG1hX21hc2sgLSBT Wl8yRyArIDE7Ci0JfSBlbHNlIGlmIChQSFlTX09GRlNFVCA+PSBTWl8yRykgewotCQlkZXZfaW5m byhncHUtPmRldiwgIk5lZWQgdG8gbW92ZSBsaW5lYXIgd2luZG93IG9uIE1DMS4wLCBkaXNhYmxp bmcgVFNcbiIpOwotCQlncHUtPm1lbW9yeV9iYXNlID0gUEhZU19PRkZTRVQ7Ci0JCWdwdS0+aWRl bnRpdHkuZmVhdHVyZXMgJj0gfmNoaXBGZWF0dXJlc19GQVNUX0NMRUFSOwotCX0KLQogCS8qCiAJ ICogT24gY29yZXMgd2l0aCBzZWN1cml0eSBmZWF0dXJlcyBzdXBwb3J0ZWQsIHdlIGNsYWltIGNv bnRyb2wgb3ZlciB0aGUKIAkgKiBzZWN1cml0eSBzdGF0ZXMuCkBAIC03NzEsMTkgKzc0NywyNiBA QCBpbnQgZXRuYXZpdl9ncHVfaW5pdChzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiwg c3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlncHUtPm1tdSA9 IGV0bmF2aXZfaW9tbXVfY29udGV4dF9pbml0KHByaXYtPm1tdV9nbG9iYWwpOwotCWlmIChJU19F UlIoZ3B1LT5tbXUpKSB7Ci0JCWRldl9lcnIoZ3B1LT5kZXYsICJGYWlsZWQgdG8gaW5zdGFudGlh dGUgR1BVIElPTU1VXG4iKTsKLQkJcmV0ID0gUFRSX0VSUihncHUtPm1tdSk7Ci0JCWdvdG8gZmFp bDsKLQl9Ci0KLQlyZXQgPSBldG5hdml2X2NtZGJ1Zl9zdWJhbGxvY19tYXAocHJpdi0+Y21kYnVm X3N1YmFsbG9jLCBncHUtPm1tdSwKLQkJCQkJICAmZ3B1LT5jbWRidWZfbWFwcGluZywKLQkJCQkJ ICBncHUtPm1lbW9yeV9iYXNlKTsKLQlpZiAocmV0KSB7Ci0JCWRldl9lcnIoZ3B1LT5kZXYsICJm YWlsZWQgdG8gbWFwIGNtZGJ1ZiBzdWJhbGxvY1xuIik7Ci0JCWdvdG8gZGVzdHJveV9pb21tdTsK KwkvKgorCSAqIFNldCB0aGUgR1BVIGxpbmVhciB3aW5kb3cgdG8gYmUgYXQgdGhlIGVuZCBvZiB0 aGUgRE1BIHdpbmRvdywgd2hlcmUKKwkgKiB0aGUgQ01BIGFyZWEgaXMgbGlrZWx5IHRvIHJlc2lk ZS4gVGhpcyBlbnN1cmVzIHRoYXQgd2UgYXJlIGFibGUgdG8KKwkgKiBtYXAgdGhlIGNvbW1hbmQg YnVmZmVycyB3aGlsZSBoYXZpbmcgdGhlIGxpbmVhciB3aW5kb3cgb3ZlcmxhcCBhcworCSAqIG11 Y2ggUkFNIGFzIHBvc3NpYmxlLCBzbyB3ZSBjYW4gb3B0aW1pemUgbWFwcGluZ3MgZm9yIG90aGVy IGJ1ZmZlcnMuCisJICoKKwkgKiBGb3IgM0QgY29yZXMgb25seSBkbyB0aGlzIGlmIE1DMi4wIGlz IHByZXNlbnQsIGFzIHdpdGggTUMxLjAgaXQgbGVhZHMKKwkgKiB0byBkaWZmZXJlbnQgdmlld3Mg b2YgdGhlIG1lbW9yeSBvbiB0aGUgaW5kaXZpZHVhbCBlbmdpbmVzLgorCSAqLworCWlmICghKGdw dS0+aWRlbnRpdHkuZmVhdHVyZXMgJiBjaGlwRmVhdHVyZXNfUElQRV8zRCkgfHwKKwkgICAgKGdw dS0+aWRlbnRpdHkubWlub3JfZmVhdHVyZXMwICYgY2hpcE1pbm9yRmVhdHVyZXMwX01DMjApKSB7 CisJCXUzMiBkbWFfbWFzayA9ICh1MzIpZG1hX2dldF9yZXF1aXJlZF9tYXNrKGdwdS0+ZGV2KTsK KwkJaWYgKGRtYV9tYXNrIDwgUEhZU19PRkZTRVQgKyBTWl8yRykKKwkJCXByaXYtPm1tdV9nbG9i YWwtPm1lbW9yeV9iYXNlID0gUEhZU19PRkZTRVQ7CisJCWVsc2UKKwkJCXByaXYtPm1tdV9nbG9i YWwtPm1lbW9yeV9iYXNlID0gZG1hX21hc2sgLSBTWl8yRyArIDE7CisJfSBlbHNlIGlmIChQSFlT X09GRlNFVCA+PSBTWl8yRykgeworCQlkZXZfaW5mbyhncHUtPmRldiwgIk5lZWQgdG8gbW92ZSBs aW5lYXIgd2luZG93IG9uIE1DMS4wLCBkaXNhYmxpbmcgVFNcbiIpOworCQlwcml2LT5tbXVfZ2xv YmFsLT5tZW1vcnlfYmFzZSA9IFBIWVNfT0ZGU0VUOworCQlncHUtPmlkZW50aXR5LmZlYXR1cmVz ICY9IH5jaGlwRmVhdHVyZXNfRkFTVF9DTEVBUjsKIAl9CiAKIAkvKiBDcmVhdGUgYnVmZmVyOiAq LwpAQCAtNzkxLDE1ICs3NzQsNyBAQCBpbnQgZXRuYXZpdl9ncHVfaW5pdChzdHJ1Y3QgZXRuYXZp dl9kcm1fcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCiAJCQkJICBQQUdF X1NJWkUpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycihncHUtPmRldiwgImNvdWxkIG5vdCBjcmVh dGUgY29tbWFuZCBidWZmZXJcbiIpOwotCQlnb3RvIHVubWFwX3N1YmFsbG9jOwotCX0KLQotCWlm IChtbXVfdmVyc2lvbiA9PSBFVE5BVklWX0lPTU1VX1YxICYmCi0JICAgIGV0bmF2aXZfY21kYnVm X2dldF92YSgmZ3B1LT5idWZmZXIsICZncHUtPmNtZGJ1Zl9tYXBwaW5nKSA+IDB4ODAwMDAwMDAp IHsKLQkJcmV0ID0gLUVJTlZBTDsKLQkJZGV2X2VycihncHUtPmRldiwKLQkJCSJjb21tYW5kIGJ1 ZmZlciBvdXRzaWRlIHZhbGlkIG1lbW9yeSB3aW5kb3dcbiIpOwotCQlnb3RvIGZyZWVfYnVmZmVy OworCQlnb3RvIGZhaWw7CiAJfQogCiAJLyogU2V0dXAgZXZlbnQgbWFuYWdlbWVudCAqLwpAQCAt ODIwLDE0ICs3OTUsNiBAQCBpbnQgZXRuYXZpdl9ncHVfaW5pdChzdHJ1Y3QgZXRuYXZpdl9kcm1f cHJpdmF0ZSAqcHJpdiwgc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCiAKIAlyZXR1cm4gMDsKIAot ZnJlZV9idWZmZXI6Ci0JZXRuYXZpdl9jbWRidWZfZnJlZSgmZ3B1LT5idWZmZXIpOwotCWdwdS0+ YnVmZmVyLnN1YmFsbG9jID0gTlVMTDsKLXVubWFwX3N1YmFsbG9jOgotCWV0bmF2aXZfY21kYnVm X3N1YmFsbG9jX3VubWFwKGdwdS0+bW11LCAmZ3B1LT5jbWRidWZfbWFwcGluZyk7Ci1kZXN0cm95 X2lvbW11OgotCWV0bmF2aXZfaW9tbXVfY29udGV4dF9wdXQoZ3B1LT5tbXUpOwotCWdwdS0+bW11 ID0gTlVMTDsKIGZhaWw6CiAJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShncHUtPmRldik7CiAJ cG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoZ3B1LT5kZXYpOwpAQCAtMTAyMSw2ICs5ODgsNyBA QCB2b2lkIGV0bmF2aXZfZ3B1X3JlY292ZXJfaGFuZyhzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSkK IAogCWV0bmF2aXZfZ3B1X2h3X2luaXQoZ3B1KTsKIAlncHUtPmV4ZWNfc3RhdGUgPSAtMTsKKwln cHUtPm1tdSA9IE5VTEw7CiAKIAltdXRleF91bmxvY2soJmdwdS0+bG9jayk7CiAJcG1fcnVudGlt ZV9tYXJrX2xhc3RfYnVzeShncHUtPmRldik7CkBAIC0xMzI3LDYgKzEyOTUsMTIgQEAgc3RydWN0 IGRtYV9mZW5jZSAqZXRuYXZpdl9ncHVfc3VibWl0KHN0cnVjdCBldG5hdml2X2dlbV9zdWJtaXQg KnN1Ym1pdCkKIAkJZ290byBvdXRfdW5sb2NrOwogCX0KIAorCWlmICghZ3B1LT5tbXUpIHsKKwkJ ZXRuYXZpdl9pb21tdV9jb250ZXh0X2dldChzdWJtaXQtPm1tdSk7CisJCWdwdS0+bW11ID0gc3Vi bWl0LT5tbXU7CisJCWV0bmF2aXZfZ3B1X3N0YXJ0X2ZlX2lkbGVsb29wKGdwdSk7CisJfQorCiAJ aWYgKHN1Ym1pdC0+bnJfcG1ycykgewogCQlncHUtPmV2ZW50W2V2ZW50WzFdXS5zeW5jX3BvaW50 ID0gJnN5bmNfcG9pbnRfcGVyZm1vbl9zYW1wbGVfcHJlOwogCQlrcmVmX2dldCgmc3VibWl0LT5y ZWZjb3VudCk7CkBAIC0xMzM2LDcgKzEzMTAsNyBAQCBzdHJ1Y3QgZG1hX2ZlbmNlICpldG5hdml2 X2dwdV9zdWJtaXQoc3RydWN0IGV0bmF2aXZfZ2VtX3N1Ym1pdCAqc3VibWl0KQogCiAJZ3B1LT5l dmVudFtldmVudFswXV0uZmVuY2UgPSBncHVfZmVuY2U7CiAJc3VibWl0LT5jbWRidWYudXNlcl9z aXplID0gc3VibWl0LT5jbWRidWYuc2l6ZSAtIDg7Ci0JZXRuYXZpdl9idWZmZXJfcXVldWUoZ3B1 LCBzdWJtaXQtPmV4ZWNfc3RhdGUsIGV2ZW50WzBdLAorCWV0bmF2aXZfYnVmZmVyX3F1ZXVlKGdw dSwgc3VibWl0LT5leGVjX3N0YXRlLCBzdWJtaXQtPm1tdSwgZXZlbnRbMF0sCiAJCQkgICAgICZz dWJtaXQtPmNtZGJ1Zik7CiAKIAlpZiAoc3VibWl0LT5ucl9wbXJzKSB7CkBAIC0xNTM5LDcgKzE1 MTMsNyBAQCBpbnQgZXRuYXZpdl9ncHVfd2FpdF9pZGxlKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1 LCB1bnNpZ25lZCBpbnQgdGltZW91dF9tcykKIAogc3RhdGljIGludCBldG5hdml2X2dwdV9od19z dXNwZW5kKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQogewotCWlmIChncHUtPmJ1ZmZlci5zdWJh bGxvYykgeworCWlmIChncHUtPmJ1ZmZlci5zdWJhbGxvYyAmJiBncHUtPm1tdSkgewogCQkvKiBS ZXBsYWNlIHRoZSBsYXN0IFdBSVQgd2l0aCBFTkQgKi8KIAkJbXV0ZXhfbG9jaygmZ3B1LT5sb2Nr KTsKIAkJZXRuYXZpdl9idWZmZXJfZW5kKGdwdSk7CkBAIC0xNTUxLDggKzE1MjUsMTMgQEAgc3Rh dGljIGludCBldG5hdml2X2dwdV9od19zdXNwZW5kKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQog CQkgKiB3ZSBmYWlsLCBqdXN0IHdhcm4gYW5kIGNvbnRpbnVlLgogCQkgKi8KIAkJZXRuYXZpdl9n cHVfd2FpdF9pZGxlKGdwdSwgMTAwKTsKKworCQlldG5hdml2X2lvbW11X2NvbnRleHRfcHV0KGdw dS0+bW11KTsKKwkJZ3B1LT5tbXUgPSBOVUxMOwogCX0KIAorCWdwdS0+ZXhlY19zdGF0ZSA9IC0x OworCiAJcmV0dXJuIGV0bmF2aXZfZ3B1X2Nsa19kaXNhYmxlKGdwdSk7CiB9CiAKQEAgLTE1Njgs OCArMTU0Nyw2IEBAIHN0YXRpYyBpbnQgZXRuYXZpdl9ncHVfaHdfcmVzdW1lKHN0cnVjdCBldG5h dml2X2dwdSAqZ3B1KQogCWV0bmF2aXZfZ3B1X3VwZGF0ZV9jbG9jayhncHUpOwogCWV0bmF2aXZf Z3B1X2h3X2luaXQoZ3B1KTsKIAotCWdwdS0+ZXhlY19zdGF0ZSA9IC0xOwotCiAJbXV0ZXhfdW5s b2NrKCZncHUtPmxvY2spOwogCiAJcmV0dXJuIDA7CkBAIC0xNzAxLDkgKzE2NzgsNiBAQCBzdGF0 aWMgdm9pZCBldG5hdml2X2dwdV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2 aWNlICptYXN0ZXIsCiAJaWYgKGdwdS0+YnVmZmVyLnN1YmFsbG9jKQogCQlldG5hdml2X2NtZGJ1 Zl9mcmVlKCZncHUtPmJ1ZmZlcik7CiAKLQlpZiAoZ3B1LT5jbWRidWZfbWFwcGluZy51c2UgPT0g MSkKLQkJZXRuYXZpdl9jbWRidWZfc3ViYWxsb2NfdW5tYXAoZ3B1LT5tbXUsICZncHUtPmNtZGJ1 Zl9tYXBwaW5nKTsKLQogCWlmIChncHUtPm1tdSkgewogCQlldG5hdml2X2lvbW11X2NvbnRleHRf cHV0KGdwdS0+bW11KTsKIAkJZ3B1LT5tbXUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9ncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0 bmF2aXZfZ3B1LmgKaW5kZXggNTBmMDNlZTU1NTAwLi4wMTIxMjIzMjBiNDggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2V0bmF2aXYvZXRuYXZpdl9ncHUuaApAQCAtMTAyLDEzICsxMDIsOSBAQCBzdHJ1Y3QgZXRu YXZpdl9ncHUgewogCXN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciBzY2hlZDsKIAogCS8qICdyaW5n Jy1idWZmZXI6ICovCi0Jc3RydWN0IGV0bmF2aXZfdnJhbV9tYXBwaW5nIGNtZGJ1Zl9tYXBwaW5n OwogCXN0cnVjdCBldG5hdml2X2NtZGJ1ZiBidWZmZXI7CiAJaW50IGV4ZWNfc3RhdGU7CiAKLQkv KiBidXMgYmFzZSBhZGRyZXNzIG9mIG1lbW9yeSAgKi8KLQl1MzIgbWVtb3J5X2Jhc2U7Ci0KIAkv KiBldmVudCBtYW5hZ2VtZW50OiAqLwogCURFQ0xBUkVfQklUTUFQKGV2ZW50X2JpdG1hcCwgRVRO QV9OUl9FVkVOVFMpOwogCXN0cnVjdCBldG5hdml2X2V2ZW50IGV2ZW50W0VUTkFfTlJfRVZFTlRT XTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfaW9tbXUuYyBi L2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfaW9tbXUuYwppbmRleCBjOTNhYTBiMWFk OWUuLmFmYjMwMDQ1MzVmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRu YXZpdl9pb21tdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfaW9tbXUu YwpAQCAtOTMsMTEgKzkzLDExIEBAIHN0YXRpYyB2b2lkIGV0bmF2aXZfaW9tbXV2MV9yZXN0b3Jl KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LAogCXUzMiBwZ3RhYmxlOwogCiAJLyogc2V0IGJhc2Ug YWRkcmVzc2VzICovCi0JZ3B1X3dyaXRlKGdwdSwgVklWU19NQ19NRU1PUllfQkFTRV9BRERSX1JB LCBncHUtPm1lbW9yeV9iYXNlKTsKLQlncHVfd3JpdGUoZ3B1LCBWSVZTX01DX01FTU9SWV9CQVNF X0FERFJfRkUsIGdwdS0+bWVtb3J5X2Jhc2UpOwotCWdwdV93cml0ZShncHUsIFZJVlNfTUNfTUVN T1JZX0JBU0VfQUREUl9UWCwgZ3B1LT5tZW1vcnlfYmFzZSk7Ci0JZ3B1X3dyaXRlKGdwdSwgVklW U19NQ19NRU1PUllfQkFTRV9BRERSX1BFWiwgZ3B1LT5tZW1vcnlfYmFzZSk7Ci0JZ3B1X3dyaXRl KGdwdSwgVklWU19NQ19NRU1PUllfQkFTRV9BRERSX1BFLCBncHUtPm1lbW9yeV9iYXNlKTsKKwln cHVfd3JpdGUoZ3B1LCBWSVZTX01DX01FTU9SWV9CQVNFX0FERFJfUkEsIGNvbnRleHQtPmdsb2Jh bC0+bWVtb3J5X2Jhc2UpOworCWdwdV93cml0ZShncHUsIFZJVlNfTUNfTUVNT1JZX0JBU0VfQURE Ul9GRSwgY29udGV4dC0+Z2xvYmFsLT5tZW1vcnlfYmFzZSk7CisJZ3B1X3dyaXRlKGdwdSwgVklW U19NQ19NRU1PUllfQkFTRV9BRERSX1RYLCBjb250ZXh0LT5nbG9iYWwtPm1lbW9yeV9iYXNlKTsK KwlncHVfd3JpdGUoZ3B1LCBWSVZTX01DX01FTU9SWV9CQVNFX0FERFJfUEVaLCBjb250ZXh0LT5n bG9iYWwtPm1lbW9yeV9iYXNlKTsKKwlncHVfd3JpdGUoZ3B1LCBWSVZTX01DX01FTU9SWV9CQVNF X0FERFJfUEUsIGNvbnRleHQtPmdsb2JhbC0+bWVtb3J5X2Jhc2UpOwogCiAJLyogc2V0IHBhZ2Ug dGFibGUgYWRkcmVzcyBpbiBNQyAqLwogCXBndGFibGUgPSAodTMyKXYxX2NvbnRleHQtPnBndGFi bGVfZG1hOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9pb21t dV92Mi5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9pb21tdV92Mi5jCmluZGV4 IDhiNmIxMDM1NDIyOC4uNzNiNWQ2ZTA5YWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZXRuYXZpdi9ldG5hdml2X2lvbW11X3YyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYv ZXRuYXZpdl9pb21tdV92Mi5jCkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgZXRuYXZp dl9pb21tdXYyX3Jlc3RvcmVfc2VjKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LAogCQkgIFZJVlNf TU1VdjJfU0FGRV9BRERSRVNTX0NPTkZJR19TRUNfU0FGRV9BRERSX0hJR0goCiAJCSAgdXBwZXJf MzJfYml0cyhjb250ZXh0LT5nbG9iYWwtPmJhZF9wYWdlX2RtYSkpKTsKIAotCWNvbnRleHQtPmds b2JhbC0+djIucHRhX2NwdVswXSA9IHYyX2NvbnRleHQtPm10bGJfZG1hIHwKKwljb250ZXh0LT5n bG9iYWwtPnYyLnB0YV9jcHVbdjJfY29udGV4dC0+aWRdID0gdjJfY29udGV4dC0+bXRsYl9kbWEg fAogCQkJCSAJIFZJVlNfTU1VdjJfQ09ORklHVVJBVElPTl9NT0RFX01PREU0X0s7CiAKIAkvKiB0 cmlnZ2VyIGEgUFRBIGxvYWQgdGhyb3VnaCB0aGUgRkUgKi8KQEAgLTIxNyw2ICsyMTcsMTkgQEAg c3RhdGljIHZvaWQgZXRuYXZpdl9pb21tdXYyX3Jlc3RvcmVfc2VjKHN0cnVjdCBldG5hdml2X2dw dSAqZ3B1LAogCWdwdV93cml0ZShncHUsIFZJVlNfTU1VdjJfU0VDX0NPTlRST0wsIFZJVlNfTU1V djJfU0VDX0NPTlRST0xfRU5BQkxFKTsKIH0KIAordTMyIGV0bmF2aXZfaW9tbXV2Ml9nZXRfbXRs Yl9hZGRyKHN0cnVjdCBldG5hdml2X2lvbW11X2NvbnRleHQgKmNvbnRleHQpCit7CisJc3RydWN0 IGV0bmF2aXZfaW9tbXV2Ml9jb250ZXh0ICp2Ml9jb250ZXh0ID0gdG9fdjJfY29udGV4dChjb250 ZXh0KTsKKworCXJldHVybiB2Ml9jb250ZXh0LT5tdGxiX2RtYTsKK30KKwordW5zaWduZWQgc2hv cnQgZXRuYXZpdl9pb21tdXYyX2dldF9wdGFfaWQoc3RydWN0IGV0bmF2aXZfaW9tbXVfY29udGV4 dCAqY29udGV4dCkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9pb21tdXYyX2NvbnRleHQgKnYyX2NvbnRl eHQgPSB0b192Ml9jb250ZXh0KGNvbnRleHQpOworCisJcmV0dXJuIHYyX2NvbnRleHQtPmlkOwor fQogc3RhdGljIHZvaWQgZXRuYXZpdl9pb21tdXYyX3Jlc3RvcmUoc3RydWN0IGV0bmF2aXZfZ3B1 ICpncHUsCiAJCQkJICAgIHN0cnVjdCBldG5hdml2X2lvbW11X2NvbnRleHQgKmNvbnRleHQpCiB7 CkBAIC0yNzEsNiArMjg0LDggQEAgZXRuYXZpdl9pb21tdXYyX2NvbnRleHRfYWxsb2Moc3RydWN0 IGV0bmF2aXZfaW9tbXVfZ2xvYmFsICpnbG9iYWwpCiAJbWVtc2V0MzIodjJfY29udGV4dC0+bXRs Yl9jcHUsIE1NVXYyX1BURV9FWENFUFRJT04sCiAJCSBNTVV2Ml9NQVhfU1RMQl9FTlRSSUVTKTsK IAorCWdsb2JhbC0+djIucHRhX2NwdVt2Ml9jb250ZXh0LT5pZF0gPSB2Ml9jb250ZXh0LT5tdGxi X2RtYTsKKwogCWNvbnRleHQgPSAmdjJfY29udGV4dC0+YmFzZTsKIAljb250ZXh0LT5nbG9iYWwg PSBnbG9iYWw7CiAJa3JlZl9pbml0KCZjb250ZXh0LT5yZWZjb3VudCk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL2V0 bmF2aXYvZXRuYXZpdl9tbXUuYwppbmRleCBhMTU1NzU1NDI0ZjguLjk5Y2QyZjhjN2I1ZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9tbXUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X21tdS5jCkBAIC0yODcsNiArMjg3LDggQEAgc3Rh dGljIHZvaWQgZXRuYXZpdl9pb21tdV9jb250ZXh0X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAJ c3RydWN0IGV0bmF2aXZfaW9tbXVfY29udGV4dCAqY29udGV4dCA9CiAJCWNvbnRhaW5lcl9vZihr cmVmLCBzdHJ1Y3QgZXRuYXZpdl9pb21tdV9jb250ZXh0LCByZWZjb3VudCk7CiAKKwlldG5hdml2 X2NtZGJ1Zl9zdWJhbGxvY191bm1hcChjb250ZXh0LCAmY29udGV4dC0+Y21kYnVmX21hcHBpbmcp OworCiAJY29udGV4dC0+Z2xvYmFsLT5vcHMtPmZyZWUoY29udGV4dCk7CiB9CiB2b2lkIGV0bmF2 aXZfaW9tbXVfY29udGV4dF9wdXQoc3RydWN0IGV0bmF2aXZfaW9tbXVfY29udGV4dCAqY29udGV4 dCkKQEAgLTI5NSwxMiArMjk3LDI4IEBAIHZvaWQgZXRuYXZpdl9pb21tdV9jb250ZXh0X3B1dChz dHJ1Y3QgZXRuYXZpdl9pb21tdV9jb250ZXh0ICpjb250ZXh0KQogfQogCiBzdHJ1Y3QgZXRuYXZp dl9pb21tdV9jb250ZXh0ICoKLWV0bmF2aXZfaW9tbXVfY29udGV4dF9pbml0KHN0cnVjdCBldG5h dml2X2lvbW11X2dsb2JhbCAqZ2xvYmFsKQorZXRuYXZpdl9pb21tdV9jb250ZXh0X2luaXQoc3Ry dWN0IGV0bmF2aXZfaW9tbXVfZ2xvYmFsICpnbG9iYWwsCisJCQkgICBzdHJ1Y3QgZXRuYXZpdl9j bWRidWZfc3ViYWxsb2MgKnN1YmFsbG9jKQogeworCXN0cnVjdCBldG5hdml2X2lvbW11X2NvbnRl eHQgKmN0eDsKKwlpbnQgcmV0OworCiAJaWYgKGdsb2JhbC0+dmVyc2lvbiA9PSBFVE5BVklWX0lP TU1VX1YxKQotCQlyZXR1cm4gZXRuYXZpdl9pb21tdXYxX2NvbnRleHRfYWxsb2MoZ2xvYmFsKTsK KwkJY3R4ID0gZXRuYXZpdl9pb21tdXYxX2NvbnRleHRfYWxsb2MoZ2xvYmFsKTsKIAllbHNlCi0J CXJldHVybiBldG5hdml2X2lvbW11djJfY29udGV4dF9hbGxvYyhnbG9iYWwpOworCQljdHggPSBl dG5hdml2X2lvbW11djJfY29udGV4dF9hbGxvYyhnbG9iYWwpOworCisJaWYgKCFjdHgpCisJCXJl dHVybiBOVUxMOworCisJcmV0ID0gZXRuYXZpdl9jbWRidWZfc3ViYWxsb2NfbWFwKHN1YmFsbG9j LCBjdHgsICZjdHgtPmNtZGJ1Zl9tYXBwaW5nLAorCQkJCQkgIGdsb2JhbC0+bWVtb3J5X2Jhc2Up OworCWlmIChyZXQpIHsKKwkJZXRuYXZpdl9pb21tdV9jb250ZXh0X3B1dChjdHgpOworCQlyZXR1 cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gY3R4OwogfQogCiB2b2lkIGV0bmF2aXZfaW9tbXVfcmVz dG9yZShzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSwKQEAgLTMxNywxNyArMzM1LDI0IEBAIGludCBl dG5hdml2X2lvbW11X2dldF9zdWJhbGxvY192YShzdHJ1Y3QgZXRuYXZpdl9pb21tdV9jb250ZXh0 ICpjb250ZXh0LAogCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZTsKIAlpbnQgcmV0OwogCisJbXV0 ZXhfbG9jaygmY29udGV4dC0+bG9jayk7CisKKwlpZiAobWFwcGluZy0+dXNlID4gMCkgeworCQlt YXBwaW5nLT51c2UrKzsKKwkJbXV0ZXhfdW5sb2NrKCZjb250ZXh0LT5sb2NrKTsKKwkJcmV0dXJu IDA7CisJfQorCiAJaWYgKGNvbnRleHQtPmdsb2JhbC0+dmVyc2lvbiA9PSBFVE5BVklWX0lPTU1V X1YxKSB7CiAJCW1hcHBpbmctPmlvdmEgPSBwYWRkciAtIG1lbW9yeV9iYXNlOwogCQltYXBwaW5n LT51c2UgPSAxOwogCQlsaXN0X2FkZF90YWlsKCZtYXBwaW5nLT5tbXVfbm9kZSwgJmNvbnRleHQt Pm1hcHBpbmdzKTsKKwkJbXV0ZXhfdW5sb2NrKCZjb250ZXh0LT5sb2NrKTsKIAkJcmV0dXJuIDA7 CiAJfQogCiAJbm9kZSA9ICZtYXBwaW5nLT52cmFtX25vZGU7CiAKLQltdXRleF9sb2NrKCZjb250 ZXh0LT5sb2NrKTsKLQogCXJldCA9IGV0bmF2aXZfaW9tbXVfZmluZF9pb3ZhKGNvbnRleHQsIG5v ZGUsIHNpemUpOwogCWlmIChyZXQgPCAwKQogCQlnb3RvIHVubG9jazsKQEAgLTM0MSw2ICszNjYs NyBAQCBpbnQgZXRuYXZpdl9pb21tdV9nZXRfc3ViYWxsb2NfdmEoc3RydWN0IGV0bmF2aXZfaW9t bXVfY29udGV4dCAqY29udGV4dCwKIAkJZ290byB1bmxvY2s7CiAJfQogCisJbWFwcGluZy0+dXNl ID0gMTsKIAlsaXN0X2FkZF90YWlsKCZtYXBwaW5nLT5tbXVfbm9kZSwgJmNvbnRleHQtPm1hcHBp bmdzKTsKIAljb250ZXh0LT5mbHVzaF9zZXErKzsKIHVubG9jazoKQEAgLTM1NCwxMiArMzgwLDE0 IEBAIHZvaWQgZXRuYXZpdl9pb21tdV9wdXRfc3ViYWxsb2NfdmEoc3RydWN0IGV0bmF2aXZfaW9t bXVfY29udGV4dCAqY29udGV4dCwKIHsKIAlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUgPSAmbWFw cGluZy0+dnJhbV9ub2RlOwogCi0JbWFwcGluZy0+dXNlID0gMDsKKwltdXRleF9sb2NrKCZjb250 ZXh0LT5sb2NrKTsKKwltYXBwaW5nLT51c2UtLTsKIAotCWlmIChjb250ZXh0LT5nbG9iYWwtPnZl cnNpb24gPT0gRVROQVZJVl9JT01NVV9WMSkKKwlpZiAobWFwcGluZy0+dXNlID4gMCB8fCBjb250 ZXh0LT5nbG9iYWwtPnZlcnNpb24gPT0gRVROQVZJVl9JT01NVV9WMSkgeworCQltdXRleF91bmxv Y2soJmNvbnRleHQtPmxvY2spOwogCQlyZXR1cm47CisJfQogCi0JbXV0ZXhfbG9jaygmY29udGV4 dC0+bG9jayk7CiAJZXRuYXZpdl9jb250ZXh0X3VubWFwKGNvbnRleHQsIG5vZGUtPnN0YXJ0LCBu b2RlLT5zaXplKTsKIAlkcm1fbW1fcmVtb3ZlX25vZGUobm9kZSk7CiAJbXV0ZXhfdW5sb2NrKCZj b250ZXh0LT5sb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2 aXZfbW11LmggYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X21tdS5oCmluZGV4IGZi Y2VmY2U4NzNjYS4uNmRjYmRkZDM0YjI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRu YXZpdi9ldG5hdml2X21tdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZf bW11LmgKQEAgLTQzLDYgKzQzLDggQEAgc3RydWN0IGV0bmF2aXZfaW9tbXVfZ2xvYmFsIHsKIAl2 b2lkICpiYWRfcGFnZV9jcHU7CiAJZG1hX2FkZHJfdCBiYWRfcGFnZV9kbWE7CiAKKwl1MzIgbWVt b3J5X2Jhc2U7CisKIAkvKgogCSAqIFRoaXMgdW5pb24gaG9sZHMgbWVtYmVycyBuZWVkZWQgYnkg ZWl0aGVyIE1NVXYxIG9yIE1NVXYyLCB3aGljaAogCSAqIGNhbiBub3QgZXhpc3QgYXQgdGhlIHNh bWUgdGltZS4KQEAgLTcwLDYgKzcyLDkgQEAgc3RydWN0IGV0bmF2aXZfaW9tbXVfY29udGV4dCB7 CiAJc3RydWN0IGxpc3RfaGVhZCBtYXBwaW5nczsKIAlzdHJ1Y3QgZHJtX21tIG1tOwogCXVuc2ln bmVkIGludCBmbHVzaF9zZXE7CisKKwkvKiBOb3QgcGFydCBvZiB0aGUgY29udGV4dCwgYnV0IG5l ZWRzIHRvIGhhdmUgdGhlIHNhbWUgbGlmZXRpbWUgKi8KKwlzdHJ1Y3QgZXRuYXZpdl92cmFtX21h cHBpbmcgY21kYnVmX21hcHBpbmc7CiB9OwogCiBzdHJ1Y3QgZXRuYXZpdl9pb21tdV9nbG9iYWwg KmV0bmF2aXZfaW9tbXVfZ2xvYmFsX2luaXQoc3RydWN0IGRldmljZSAqZGV2LApAQCAtOTUsNyAr MTAwLDggQEAgc2l6ZV90IGV0bmF2aXZfaW9tbXVfZHVtcF9zaXplKHN0cnVjdCBldG5hdml2X2lv bW11X2NvbnRleHQgKmN0eCk7CiB2b2lkIGV0bmF2aXZfaW9tbXVfZHVtcChzdHJ1Y3QgZXRuYXZp dl9pb21tdV9jb250ZXh0ICpjdHgsIHZvaWQgKmJ1Zik7CiAKIHN0cnVjdCBldG5hdml2X2lvbW11 X2NvbnRleHQgKgotZXRuYXZpdl9pb21tdV9jb250ZXh0X2luaXQoc3RydWN0IGV0bmF2aXZfaW9t bXVfZ2xvYmFsICpnbG9iYWwpOworZXRuYXZpdl9pb21tdV9jb250ZXh0X2luaXQoc3RydWN0IGV0 bmF2aXZfaW9tbXVfZ2xvYmFsICpnbG9iYWwsCisJCQkgICBzdHJ1Y3QgZXRuYXZpdl9jbWRidWZf c3ViYWxsb2MgKnN1YmFsbG9jKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBldG5hdml2X2lvbW11X2Nv bnRleHRfZ2V0KHN0cnVjdCBldG5hdml2X2lvbW11X2NvbnRleHQgKmN0eCkKIHsKIAlrcmVmX2dl dCgmY3R4LT5yZWZjb3VudCk7CkBAIC0xMDksNCArMTE1LDcgQEAgZXRuYXZpdl9pb21tdXYxX2Nv bnRleHRfYWxsb2Moc3RydWN0IGV0bmF2aXZfaW9tbXVfZ2xvYmFsICpnbG9iYWwpOwogc3RydWN0 IGV0bmF2aXZfaW9tbXVfY29udGV4dCAqCiBldG5hdml2X2lvbW11djJfY29udGV4dF9hbGxvYyhz dHJ1Y3QgZXRuYXZpdl9pb21tdV9nbG9iYWwgKmdsb2JhbCk7CiAKK3UzMiBldG5hdml2X2lvbW11 djJfZ2V0X210bGJfYWRkcihzdHJ1Y3QgZXRuYXZpdl9pb21tdV9jb250ZXh0ICpjb250ZXh0KTsK K3Vuc2lnbmVkIHNob3J0IGV0bmF2aXZfaW9tbXV2Ml9nZXRfcHRhX2lkKHN0cnVjdCBldG5hdml2 X2lvbW11X2NvbnRleHQgKmNvbnRleHQpOworCiAjZW5kaWYgLyogX19FVE5BVklWX01NVV9IX18g Ki8KLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==