From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: Re: [PATCH 1/9] drm/ast: Handle configuration without P2A bridge Date: Fri, 17 Feb 2017 21:42:49 +1100 Message-ID: <1487328169.23576.128.camel@kernel.crashing.org> References: <20170217053212.4839-1-benh@kernel.crashing.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) by gabe.freedesktop.org (Postfix) with ESMTPS id BFB836ECC0 for ; Fri, 17 Feb 2017 10:42:58 +0000 (UTC) In-Reply-To: <20170217053212.4839-1-benh@kernel.crashing.org> 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: airlied@redhat.com, eich@suse.com List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCAyMDE3LTAyLTE3IGF0IDE2OjMyICsxMTAwLCBCZW5qYW1pbiBIZXJyZW5zY2htaWR0 IHdyb3RlOgo+IFRoZSBhc3QgZHJpdmVyIGNvbmZpZ3VyZXMgYSB3aW5kb3cgdG8gZW5hYmxlIGFj Y2VzcyBpbnRvIEJNQwo+IG1lbW9yeSBzcGFjZSBpbiBvcmRlciB0byByZWFkIHNvbWUgY29uZmln dXJhdGlvbiByZWdpc3RlcnMuCgpBc3BlZWQgc3VnZ2VzdGVkIGEgY291cGxlIG9mIHJlZmluZW1l bnRzIGZvciBzb21lIGNoaXBzZXRzLApzbyBJJ2xsIHJlc3BpbiBlaXRoZXIgdGhpcyB3ZWVrLWVu ZCBvciBtb25kYXkuCgo+IElmIHRoaXMgd2luZG93IGlzIGRpc2FibGVkLCB3aGljaCBpdCBjYW4g YmUgZnJvbSB0aGUgQk1DIHNpZGUsCj4gdGhlIGFzdCBkcml2ZXIgY2FuJ3QgZnVuY3Rpb24uCj4g Cj4gQ2xvc2luZyB0aGlzIHdpbmRvdyBpcyBhIG5lY2Vzc2l0eSBmb3Igc2VjdXJpdHkgaWYgYSBt YWNoaW5lJ3MKPiBob3N0IHNpZGUgYW5kIEJNQyBzaWRlIGFyZSBjb250cm9sbGVkIGJ5IGRpZmZl cmVudCBwYXJ0aWVzOwo+IGkuZS4gYSBjbG91ZCBwcm92aWRlciBvZmZlcmluZyBtYWNoaW5lcyAi YmFyZSBtZXRhbCIuCj4gCj4gQSByZWNlbnQgcGF0Y2ggd2VudCBpbiB0byB0cnkgdG8gY2hlY2sg aWYgdGhhdCB3aW5kb3cgaXMgb3Blbgo+IGJ1dCBpdCBkb2VzIHNvIGJ5IHRyeWluZyB0byBhY2Nl c3MgdGhlIHJlZ2lzdGVycyBpbiBxdWVzdGlvbgo+IGFuZCB0ZXN0aW5nIGlmIHRoZSByZXN1bHQg aXMgMHhmZmZmZmZmZi4KPiAKPiBUaGlzIG1ldGhvZCB3aWxsIHRyaWdnZXIgYSBQQ0llIGVycm9y IHdoZW4gdGhlIHdpbmRvdyBpcyBjbG9zZWQKPiB3aGljaCBvbiBzb21lIHN5c3RlbXMgd2lsbCBi ZSBmYXRhbCAoaXQgd2lsbCB0cmlnZ2VyIGFuIEVFSAo+IGZvciBleGFtcGxlIG9uIFBPV0VSIHdo aWNoIHdpbGwgdGFrZSBvdXQgdGhlIGRldmljZSkuCj4gCj4gVGhpcyBwYXRjaCBpbXByb3ZlcyB0 aGlzIGluIHR3byB3YXlzOgo+IAo+IMKgLSBGaXJzdCwgaWYgdGhlIGZpcm13YXJlIGhhcyBwdXQg cHJvcGVydGllcyBpbiB0aGUgZGV2aWNlLXRyZWUKPiBjb250YWluaW5nIHRoZSByZWxldmFudCBj b25maWd1cmF0aW9uIGluZm9ybWF0aW9uLCB3ZSB1c2UgdGhlc2UuCj4gCj4gwqAtIE90aGVyd2lz ZSwgYSBiaXQgaW4gb25lIG9mIHRoZSBTQ1Ugc2NyYXRjaCByZWdpc3RlcnMgKHdoaWNoCj4gYXJl IHJlYWRhYmxlIHZpYSB0aGUgVkdBIHJlZ2lzdGVyIHNwYWNlIGFuZCB3cml0ZWFibGUgYnkgdGhl IEJNQykKPiB3aWxsIGluZGljYXRlIGlmIHRoZSBCTUMgaGFzIGNsb3NlZCB0aGUgd2luZG93LiBU aGlzIGJpdCBoYXMgYmVlbgo+IGRlZmluZWQgYnkgWS5DIENoZW4gZnJvbSBBc3BlZWQuCj4gCj4g SWYgdGhlIHdpbmRvdyBpcyBjbG9zZWQgYW5kIHRoZSBjb25maWd1cmF0aW9uIGlzbid0IGF2YWls YWJsZSBmcm9tCj4gdGhlIGRldmljZS10cmVlLCBzb21lIHNhbmUgZGVmYXVsdHMgYXJlIHVzZWQu IFRob3NlIGRlZmF1bHRzIGFyZQo+IGhvcGVmdWxseSBzdWZmaWNpZW50IGZvciBzdGFuZGFyZCB2 aWRlbyBtb2RlcyB1c2VkIG9uIGEgc2VydmVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJ1c3NlbGwg Q3VycmV5IDxydXNjdXJAcnVzc2VsbC5jYz4KPiBTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBIZXJy ZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+Cj4gLS0KPiAKPiB2Mi4gW0Jlbkhd Cj4gwqDCoMKgwqAtIFJld29ya2VkIG9uIHRvcCBvZiBBc3BlZWQgUDJBIHBhdGNoCj4gwqDCoMKg wqAtIENsZWFudXAgb3ZlcmFsbCBkZXRlY3Rpb24gdmlhIGEgImNvbmZpZ19tb2RlIiBhbmQgbG9n IHRoZQo+IMKgwqDCoMKgwqDCoHNlbGVjdGVkIG1vZGUgZm9yIGRpYWdub3N0aWNzIHB1cnBvc2Vz Cj4gwqDCoMKgwqAtIEFkZCBhIHByb3BlcnR5IGZvciB0aGUgU0NVIHN0cmFwcwo+IAo+IHYzLiBb QmVuSF0KPiDCoMKgwqDCoC0gTW92ZWQgdGhlIGNvbmZpZyBtb2RlIGRldGVjdGlvbiB0byBhIHNl cGFyYXRlIGZ1bmN0aW9ubgo+IMKgwqDCoMKgLSBBZGQgcmVhZGluZyBvZiBTQ1UgMHg0MCBEWzEy XSB0byBkZXRlY3QgdGhlIHdpbmRvdyBpcwo+IMKgwqDCoMKgwqDCoGNsb3NlZCBhcyB0byBub3Qg dHJpZ2dlciBhIGJ1cyBlcnJvciBieSBqdXN0ICJ0cnlpbmciLgo+IMKgwqDCoMKgwqDCoChjaGFu Z2UgcHJvdmlkZWQgYnkgWS5DLiBDaGVuKQo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfZHJ2LmjCoMKgfMKgwqDCoDYgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4u YyB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+IC0tLS0tLS0tLS0tLQo+IMKg ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jIHzCoMKgwqA3ICstCj4gwqAzIGZpbGVzIGNo YW5nZWQsIDE0MSBpbnNlcnRpb25zKCspLCA5NSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X2Rydi5oCj4gaW5kZXggN2FiZGE5NC4uM2JlZGNmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Ry di5oCj4gQEAgLTExMyw3ICsxMTMsMTEgQEAgc3RydWN0IGFzdF9wcml2YXRlIHsKPiDCoAlzdHJ1 Y3QgdHRtX2JvX2ttYXBfb2JqIGNhY2hlX2ttYXA7Cj4gwqAJaW50IG5leHRfY3Vyc29yOwo+IMKg CWJvb2wgc3VwcG9ydF93aWRlX3NjcmVlbjsKPiAtCWJvb2wgRGlzYWJsZVAyQTsKPiArCWVudW0g ewo+ICsJCWFzdF91c2VfcDJhLAo+ICsJCWFzdF91c2VfZHQsCj4gKwkJYXN0X3VzZV9kZWZhdWx0 cwo+ICsJfSBjb25maWdfbW9kZTsKPiDCoAo+IMKgCWVudW0gYXN0X3R4X2NoaXAgdHhfY2hpcF90 eXBlOwo+IMKgCXU4IGRwNTAxX21heGNsazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfbWFpbi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMKPiBpbmRl eCA1MzNlNzYyLi44MjNjNjhmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X21haW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwo+IEBAIC02Miwx MyArNjIsNTggQEAgdWludDhfdCBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKHN0cnVjdCBhc3RfcHJp dmF0ZQo+ICphc3QsCj4gwqAJcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgdm9pZCBh c3RfZGV0ZWN0X2NvbmZpZ19tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMgo+ICpzY3Vf cmV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5wZGV2LT5kZXYub2Zf bm9kZTsKPiArCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXVpbnQzMl90IGRhdGEsIGpyZWc7Cj4gKwo+ICsJLyogQ2hlY2sgaWYgd2UgaGF2ZSBkZXZpY2Ut dHJlZSBwcm9wZXJ0aWVzICovCj4gKwlpZiAobnAgJiYgIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5w LCAiYXN0LHNjdS1yZXZpc2lvbi1pZCIsCj4gc2N1X3JldikpIHsKPiArCQkvKiBXZSBkbywgZGlz YWJsZSBQMkEgYWNjZXNzICovCj4gKwkJYXN0LT5jb25maWdfbW9kZSA9IGFzdF91c2VfZHQ7Cj4g KwkJRFJNX0lORk8oIlVzaW5nIGRldmljZS10cmVlIGZvciBjb25maWd1cmF0aW9uXG4iKTsKPiAr CQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCcKgKiBUaGUgQk1DIHdpbGwgc2V0IFNDVSAw eDQwIERbMTJdIHRvIDEgaWYgdGhlIFAyIGJyaWRnZQo+ICsJwqAqIGlzIGRpc2FibGVkCj4gKwnC oCovCj4gKwlqcmVnID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BP UlQsIDB4ZDEsCj4gMHhmZik7Cj4gKwlpZiAoIShqcmVnICYgMHgxMCkpIHsKPiArCQkvKiBEb3Vi bGUgY2hlY2sgaXQncyBhY3R1YWxseSB3b3JraW5nICovCj4gKwkJZGF0YSA9IGFzdF9yZWFkMzIo YXN0LCAweGYwMDQpOwo+ICsJCWlmIChkYXRhICE9IDB4RkZGRkZGRkYpIHsKPiArCQkJLyogUDJB IHdvcmtzLCBncmFiIHNpbGljb24gcmV2aXNpb24gKi8KPiArCQkJYXN0LT5jb25maWdfbW9kZSA9 IGFzdF91c2VfcDJhOwo+ICsKPiArCQkJRFJNX0lORk8oIlVzaW5nIFAyQSBicmlkZ2UgZm9yCj4g Y29uZmlndXJhdGlvblxuIik7Cj4gKwo+ICsJCQkvKiBSZWFkIFNDVTdjIChzaWxpY29uIHJldmlz aW9uIHJlZ2lzdGVyKSAqLwo+ICsJCQlhc3Rfd3JpdGUzMihhc3QsIDB4ZjAwNCwgMHgxZTZlMDAw MCk7Cj4gKwkJCWFzdF93cml0ZTMyKGFzdCwgMHhmMDAwLCAweDEpOwo+ICsJCQkqc2N1X3JldiA9 IGFzdF9yZWFkMzIoYXN0LCAweDEyMDdjKTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCX0KPiAr Cj4gKwlEUk1fSU5GTygiUDJBIGJyaWRnZSBkaXNhYmxlZCwgdXNpbmcgZGVmYXVsdAo+IGNvbmZp Z3VyYXRpb25cbiIpOwo+ICsJYXN0LT5jb25maWdfbW9kZSA9IGFzdF91c2VfZGVmYXVsdHM7Cj4g Kwkqc2N1X3JldiA9IDB4ZmZmZmZmZmY7Cj4gK30KPiDCoAo+IMKgc3RhdGljIGludCBhc3RfZGV0 ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQo+IMKgewo+ IMKgCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXVpbnQz Ml90IGRhdGEsIGpyZWc7Cj4gKwl1aW50MzJfdCBqcmVnLCBzY3VfcmV2Owo+ICsKPiDCoAlhc3Rf b3Blbl9rZXkoYXN0KTsKPiDCoAo+ICsJLyogRmluZCBvdXQgd2hldGhlciBQMkEgd29ya3Mgb3Ig d2hldGhlciB0byB1c2UgZGV2aWNlLXRyZWUKPiAqLwo+ICsJYXN0X2RldGVjdF9jb25maWdfbW9k ZShkZXYsICZzY3VfcmV2KTsKPiArCj4gKwkvKiBJZGVudGlmeSBjaGlwc2V0ICovCj4gwqAJaWYg KGRldi0+cGRldi0+ZGV2aWNlID09IFBDSV9DSElQX0FTVDExODApIHsKPiDCoAkJYXN0LT5jaGlw ID0gQVNUMTEwMDsKPiDCoAkJRFJNX0lORk8oIkFTVCAxMTgwIGRldGVjdGVkXG4iKTsKPiBAQCAt ODAsMTIgKzEyNSw3IEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0cnVjdCBkcm1fZGV2 aWNlCj4gKmRldiwgYm9vbCAqbmVlZF9wb3N0KQo+IMKgCQkJYXN0LT5jaGlwID0gQVNUMjMwMDsK PiDCoAkJCURSTV9JTkZPKCJBU1QgMjMwMCBkZXRlY3RlZFxuIik7Cj4gwqAJCX0gZWxzZSBpZiAo ZGV2LT5wZGV2LT5yZXZpc2lvbiA+PSAweDEwKSB7Cj4gLQkJCXVpbnQzMl90IGRhdGE7Cj4gLQkJ CWFzdF93cml0ZTMyKGFzdCwgMHhmMDA0LCAweDFlNmUwMDAwKTsKPiAtCQkJYXN0X3dyaXRlMzIo YXN0LCAweGYwMDAsIDB4MSk7Cj4gLQo+IC0JCQlkYXRhID0gYXN0X3JlYWQzMihhc3QsIDB4MTIw N2MpOwo+IC0JCQlzd2l0Y2ggKGRhdGEgJiAweDAzMDApIHsKPiArCQkJc3dpdGNoIChzY3VfcmV2 ICYgMHgwMzAwKSB7Cj4gwqAJCQljYXNlIDB4MDIwMDoKPiDCoAkJCQlhc3QtPmNoaXAgPSBBU1Qx MTAwOwo+IMKgCQkJCURSTV9JTkZPKCJBU1QgMTEwMCBkZXRlY3RlZFxuIik7Cj4gQEAgLTEyNCwx MiArMTY0LDYgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UK PiAqZGV2LCBib29sICpuZWVkX3Bvc3QpCj4gwqAJfSBlbHNlCj4gwqAJCSpuZWVkX3Bvc3QgPSBm YWxzZTsKPiDCoAo+IC0JLyogQ2hlY2sgUDJBIEFjY2VzcyAqLwo+IC0JYXN0LT5EaXNhYmxlUDJB ID0gdHJ1ZTsKPiAtCWRhdGEgPSBhc3RfcmVhZDMyKGFzdCwgMHhmMDA0KTsKPiAtCWlmIChkYXRh ICE9IDB4RkZGRkZGRkYpCj4gLQkJYXN0LT5EaXNhYmxlUDJBID0gZmFsc2U7Cj4gLQo+IMKgCS8q IENoZWNrIGlmIHdlIHN1cHBvcnQgd2lkZSBzY3JlZW4gKi8KPiDCoAlzd2l0Y2ggKGFzdC0+Y2hp cCkgewo+IMKgCWNhc2UgQVNUMTE4MDoKPiBAQCAtMTQ2LDE3ICsxODAsMTIgQEAgc3RhdGljIGlu dCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2LCBib29sICpuZWVkX3Bv c3QpCj4gwqAJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSB0cnVlOwo+IMKgCQllbHNlIHsK PiDCoAkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IGZhbHNlOwo+IC0JCQlpZiAoYXN0LT5E aXNhYmxlUDJBID09IGZhbHNlKSB7Cj4gLQkJCQkvKiBSZWFkIFNDVTdjIChzaWxpY29uIHJldmlz aW9uCj4gcmVnaXN0ZXIpICovCj4gLQkJCQlhc3Rfd3JpdGUzMihhc3QsIDB4ZjAwNCwKPiAweDFl NmUwMDAwKTsKPiAtCQkJCWFzdF93cml0ZTMyKGFzdCwgMHhmMDAwLCAweDEpOwo+IC0JCQkJZGF0 YSA9IGFzdF9yZWFkMzIoYXN0LCAweDEyMDdjKTsKPiAtCQkJCWRhdGEgJj0gMHgzMDA7Cj4gLQkJ CQlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgJiYgZGF0YSA9PQo+IDB4MCkgLyogYXN0MTMwMCAq Lwo+IC0JCQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9Cj4gdHJ1ZTsKPiAtCQkJCWlmIChh c3QtPmNoaXAgPT0gQVNUMjQwMCAmJiBkYXRhID09Cj4gMHgxMDApIC8qIGFzdDE0MDAgKi8KPiAt CQkJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPQo+IHRydWU7Cj4gLQkJCX0KPiArCQkJaWYg KGFzdC0+Y2hpcCA9PSBBU1QyMzAwICYmCj4gKwkJCcKgwqDCoMKgKHNjdV9yZXYgJiAweDMwMCkg PT0gMHgwKSAvKiBhc3QxMzAwICovCj4gKwkJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSB0 cnVlOwo+ICsJCQlpZiAoYXN0LT5jaGlwID09IEFTVDI0MDAgJiYKPiArCQkJwqDCoMKgwqAoc2N1 X3JldiAmIDB4MzAwKSA9PSAweDEwMCkgLyogYXN0MTQwMAo+ICovCj4gKwkJCQlhc3QtPnN1cHBv cnRfd2lkZV9zY3JlZW4gPSB0cnVlOwo+IMKgCQl9Cj4gwqAJCWJyZWFrOwo+IMKgCX0KPiBAQCAt MjIwLDg1ICsyNDksMTAxIEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0cnVjdCBkcm1f ZGV2aWNlCj4gKmRldiwgYm9vbCAqbmVlZF9wb3N0KQo+IMKgCj4gwqBzdGF0aWMgaW50IGFzdF9n ZXRfZHJhbV9pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqB7Cj4gKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKm5wID0gZGV2LT5wZGV2LT5kZXYub2Zfbm9kZTsKPiDCoAlzdHJ1Y3QgYXN0X3By aXZhdGUgKmFzdCA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1aW50MzJfdCBkYXRhLCBkYXRhMjsK PiAtCXVpbnQzMl90IGRlbnVtLCBudW0sIGRpdiwgcmVmX3BsbDsKPiArCXVpbnQzMl90IG1jcl9j ZmcsIG1jcl9zY3VfbXBsbCwgbWNyX3NjdV9zdHJhcDsKPiArCXVpbnQzMl90IGRlbnVtLCBudW0s IGRpdiwgcmVmX3BsbCwgZHNlbDsKPiDCoAo+IC0JaWYgKGFzdC0+RGlzYWJsZVAyQSkKPiAtCXsK PiArCXN3aXRjaCAoYXN0LT5jb25maWdfbW9kZSkgewo+ICsJY2FzZSBhc3RfdXNlX2R0Ogo+ICsJ CS8qCj4gKwkJwqAqIElmIHNvbWUgcHJvcGVydGllcyBhcmUgbWlzc2luZywgdXNlIHJlYXNvbmFi bGUKPiArCQnCoCogZGVmYXVsdHMgZm9yIEFTVDI0MDAKPiArCQnCoCovCj4gKwkJaWYgKG9mX3By b3BlcnR5X3JlYWRfdTMyKG5wLCAiYXN0LG1jci0KPiBjb25maWd1cmF0aW9uIiwgJm1jcl9jZmcp KQo+ICsJCQltY3JfY2ZnID0gMHgwMDAwMDU3NzsKPiArCQlpZiAob2ZfcHJvcGVydHlfcmVhZF91 MzIobnAsICJhc3QsYXN0LG1jci1zY3UtbXBsbCIsCj4gKwkJCQkJwqAmbWNyX3NjdV9tcGxsKSkK PiArCQkJbWNyX3NjdV9tcGxsID0gMHgwMDAwNTBDMDsKPiArCQlpZiAob2ZfcHJvcGVydHlfcmVh ZF91MzIobnAsICJhc3QsYXN0LG1jci1zY3UtCj4gc3RyYXAiLAo+ICsJCQkJCcKgJm1jcl9zY3Vf c3RyYXApKQo+ICsJCQltY3Jfc2N1X3N0cmFwID0gMDsKPiArCQlicmVhazsKPiArCWNhc2UgYXN0 X3VzZV9wMmE6Cj4gKwkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDQsIDB4MWU2ZTAwMDApOwo+ICsJ CWFzdF93cml0ZTMyKGFzdCwgMHhmMDAwLCAweDEpOwo+ICsJCW1jcl9jZmcgPSBhc3RfcmVhZDMy KGFzdCwgMHgxMDAwNCk7Cj4gKwkJbWNyX3NjdV9tcGxsID0gYXN0X3JlYWQzMihhc3QsIDB4MTAx MjApOwo+ICsJCW1jcl9zY3Vfc3RyYXAgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMDE3MCk7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIGFzdF91c2VfZGVmYXVsdHM6Cj4gKwlkZWZhdWx0Ogo+IMKgCQlhc3Qt PmRyYW1fYnVzX3dpZHRoID0gMTY7Cj4gwqAJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMUd4 MTY7Cj4gwqAJCWFzdC0+bWNsayA9IDM5NjsKPiArCQlyZXR1cm4gMDsKPiDCoAl9Cj4gLQllbHNl Cj4gLQl7Cj4gLQkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDQsIDB4MWU2ZTAwMDApOwo+IC0JCWFz dF93cml0ZTMyKGFzdCwgMHhmMDAwLCAweDEpOwo+IC0JCWRhdGEgPSBhc3RfcmVhZDMyKGFzdCwg MHgxMDAwNCk7Cj4gLQo+IC0JCWlmIChkYXRhICYgMHg0MCkKPiAtCQkJYXN0LT5kcmFtX2J1c193 aWR0aCA9IDE2Owo+IC0JCWVsc2UKPiAtCQkJYXN0LT5kcmFtX2J1c193aWR0aCA9IDMyOwo+IMKg Cj4gLQkJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB7 Cj4gLQkJCXN3aXRjaCAoZGF0YSAmIDB4MDMpIHsKPiAtCQkJY2FzZSAwOgo+IC0JCQkJYXN0LT5k cmFtX3R5cGUgPSBBU1RfRFJBTV81MTJNeDE2Owo+IC0JCQkJYnJlYWs7Cj4gLQkJCWRlZmF1bHQ6 Cj4gLQkJCWNhc2UgMToKPiAtCQkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMUd4MTY7Cj4g LQkJCQlicmVhazsKPiAtCQkJY2FzZSAyOgo+IC0JCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJB TV8yR3gxNjsKPiAtCQkJCWJyZWFrOwo+IC0JCQljYXNlIDM6Cj4gLQkJCQlhc3QtPmRyYW1fdHlw ZSA9IEFTVF9EUkFNXzRHeDE2Owo+IC0JCQkJYnJlYWs7Cj4gLQkJCX0KPiAtCQl9IGVsc2Ugewo+ IC0JCQlzd2l0Y2ggKGRhdGEgJiAweDBjKSB7Cj4gLQkJCWNhc2UgMDoKPiAtCQkJY2FzZSA0Ogo+ IC0JCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJNeDE2Owo+IC0JCQkJYnJlYWs7Cj4g LQkJCWNhc2UgODoKPiAtCQkJCWlmIChkYXRhICYgMHg0MCkKPiAtCQkJCQlhc3QtPmRyYW1fdHlw ZSA9Cj4gQVNUX0RSQU1fMUd4MTY7Cj4gLQkJCQllbHNlCj4gLQkJCQkJYXN0LT5kcmFtX3R5cGUg PQo+IEFTVF9EUkFNXzUxMk14MzI7Cj4gLQkJCQlicmVhazsKPiAtCQkJY2FzZSAweGM6Cj4gLQkJ CQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzFHeDMyOwo+IC0JCQkJYnJlYWs7Cj4gLQkJCX0K PiAtCQl9Cj4gKwlpZiAobWNyX2NmZyAmIDB4NDApCj4gKwkJYXN0LT5kcmFtX2J1c193aWR0aCA9 IDE2Owo+ICsJZWxzZQo+ICsJCWFzdC0+ZHJhbV9idXNfd2lkdGggPSAzMjsKPiDCoAo+IC0JCWRh dGEgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMDEyMCk7Cj4gLQkJZGF0YTIgPSBhc3RfcmVhZDMyKGFz dCwgMHgxMDE3MCk7Cj4gLQkJaWYgKGRhdGEyICYgMHgyMDAwKQo+IC0JCQlyZWZfcGxsID0gMTQz MTg7Cj4gLQkJZWxzZQo+IC0JCQlyZWZfcGxsID0gMTIwMDA7Cj4gLQo+IC0JCWRlbnVtID0gZGF0 YSAmIDB4MWY7Cj4gLQkJbnVtID0gKGRhdGEgJiAweDNmZTApID4+IDU7Cj4gLQkJZGF0YSA9IChk YXRhICYgMHhjMDAwKSA+PiAxNDsKPiAtCQlzd2l0Y2ggKGRhdGEpIHsKPiAtCQljYXNlIDM6Cj4g LQkJCWRpdiA9IDB4NDsKPiArCWlmIChhc3QtPmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAg PT0gQVNUMjQwMCkgewo+ICsJCXN3aXRjaCAobWNyX2NmZyAmIDB4MDMpIHsKPiArCQljYXNlIDA6 Cj4gKwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fNTEyTXgxNjsKPiDCoAkJCWJyZWFrOwo+ IC0JCWNhc2UgMjoKPiArCQlkZWZhdWx0Ogo+IMKgCQljYXNlIDE6Cj4gLQkJCWRpdiA9IDB4MjsK PiArCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV8xR3gxNjsKPiDCoAkJCWJyZWFrOwo+IC0J CWRlZmF1bHQ6Cj4gLQkJCWRpdiA9IDB4MTsKPiArCQljYXNlIDI6Cj4gKwkJCWFzdC0+ZHJhbV90 eXBlID0gQVNUX0RSQU1fMkd4MTY7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgMzoKPiArCQkJYXN0 LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV80R3gxNjsKPiDCoAkJCWJyZWFrOwo+IMKgCQl9Cj4gLQkJ YXN0LT5tY2xrID0gcmVmX3BsbCAqIChudW0gKyAyKSAvIChkZW51bSArIDIpICogKGRpdgo+ICog MTAwMCk7Cj4gKwl9IGVsc2Ugewo+ICsJCXN3aXRjaCAobWNyX2NmZyAmIDB4MGMpIHsKPiArCQlj YXNlIDA6Cj4gKwkJY2FzZSA0Ogo+ICsJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzUxMk14 MTY7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgODoKPiArCQkJaWYgKG1jcl9jZmcgJiAweDQwKQo+ ICsJCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV8xR3gxNjsKPiArCQkJZWxzZQo+ICsJCQkJ YXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJNeDMyOwo+ICsJCQlicmVhazsKPiArCQljYXNl IDB4YzoKPiArCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV8xR3gzMjsKPiArCQkJYnJlYWs7 Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWlmIChtY3Jfc2N1X3N0cmFwICYgMHgyMDAwKQo+ICsJCXJl Zl9wbGwgPSAxNDMxODsKPiArCWVsc2UKPiArCQlyZWZfcGxsID0gMTIwMDA7Cj4gKwo+ICsJZGVu dW0gPSBtY3Jfc2N1X21wbGwgJiAweDFmOwo+ICsJbnVtID0gKG1jcl9zY3VfbXBsbCAmIDB4M2Zl MCkgPj4gNTsKPiArCWRzZWwgPSAobWNyX3NjdV9tcGxsICYgMHhjMDAwKSA+PiAxNDsKPiArCXN3 aXRjaCAoZHNlbCkgewo+ICsJY2FzZSAzOgo+ICsJCWRpdiA9IDB4NDsKPiArCQlicmVhazsKPiAr CWNhc2UgMjoKPiArCWNhc2UgMToKPiArCQlkaXYgPSAweDI7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZh dWx0Ogo+ICsJCWRpdiA9IDB4MTsKPiArCQlicmVhazsKPiDCoAl9Cj4gKwlhc3QtPm1jbGsgPSBy ZWZfcGxsICogKG51bSArIDIpIC8gKGRlbnVtICsgMikgKiAoZGl2ICoKPiAxMDAwKTsKPiDCoAly ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9wb3N0LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYwo+IGluZGV4IDUzMzFl ZTEuLjcxOTc2MzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jCj4gQEAgLTM3OSwxNyArMzc5 LDE0IEBAIHZvaWQgYXN0X3Bvc3RfZ3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJYXN0 X29wZW5fa2V5KGFzdCk7Cj4gwqAJYXN0X3NldF9kZWZfZXh0X3JlZyhkZXYpOwo+IMKgCj4gLQlp ZiAoYXN0LT5EaXNhYmxlUDJBID09IGZhbHNlKQo+IC0Jewo+ICsJaWYgKGFzdC0+Y29uZmlnX21v ZGUgPT0gYXN0X3VzZV9wMmEpIHsKPiDCoAkJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFz dC0+Y2hpcCA9PSBBU1QyNDAwKQo+IMKgCQkJYXN0X2luaXRfZHJhbV8yMzAwKGRldik7Cj4gwqAJ CWVsc2UKPiDCoAkJCWFzdF9pbml0X2RyYW1fcmVnKGRldik7Cj4gwqAKPiDCoAkJYXN0X2luaXRf M3JkdHgoZGV2KTsKPiAtCX0KPiAtCWVsc2UKPiAtCXsKPiArCX0gZWxzZSB7Cj4gwqAJCWlmIChh c3QtPnR4X2NoaXBfdHlwZSAhPSBBU1RfVFhfTk9ORSkKPiDCoAkJCWFzdF9zZXRfaW5kZXhfcmVn X21hc2soYXN0LAo+IEFTVF9JT19DUlRDX1BPUlQsIDB4YTMsIDB4Y2YsIDB4ODApOwkvKiBFbmFi bGUgRFZPICovCj4gwqAJfQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK