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 18:43:00 +1100 Message-ID: <1487317380.23576.124.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 3F5F76E01D for ; Fri, 17 Feb 2017 07:43:11 +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 IHdyb3RlOgoKTWFrZSB0aGlzCgpGcm9tOiBSdXNzZWxsIEN1cnJleSA8cnVzY3VyQHJ1c3NlbGwu Y2M+CgpHaXQgYXRlIGl0IHdoZW4gSSBhbWVuZGVkIChjaXRvb2wgYnVnKSBhbmQgSSBmb3Jnb3Qg dG8gZml4IGl0IHVwLgoKPiBUaGUgYXN0IGRyaXZlciBjb25maWd1cmVzIGEgd2luZG93IHRvIGVu YWJsZSBhY2Nlc3MgaW50byBCTUMKPiBtZW1vcnkgc3BhY2UgaW4gb3JkZXIgdG8gcmVhZCBzb21l IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLgo+IAo+IElmIHRoaXMgd2luZG93IGlzIGRpc2FibGVk LCB3aGljaCBpdCBjYW4gYmUgZnJvbSB0aGUgQk1DIHNpZGUsCj4gdGhlIGFzdCBkcml2ZXIgY2Fu J3QgZnVuY3Rpb24uCj4gCj4gQ2xvc2luZyB0aGlzIHdpbmRvdyBpcyBhIG5lY2Vzc2l0eSBmb3Ig c2VjdXJpdHkgaWYgYSBtYWNoaW5lJ3MKPiBob3N0IHNpZGUgYW5kIEJNQyBzaWRlIGFyZSBjb250 cm9sbGVkIGJ5IGRpZmZlcmVudCBwYXJ0aWVzOwo+IGkuZS4gYSBjbG91ZCBwcm92aWRlciBvZmZl cmluZyBtYWNoaW5lcyAiYmFyZSBtZXRhbCIuCj4gCj4gQSByZWNlbnQgcGF0Y2ggd2VudCBpbiB0 byB0cnkgdG8gY2hlY2sgaWYgdGhhdCB3aW5kb3cgaXMgb3Blbgo+IGJ1dCBpdCBkb2VzIHNvIGJ5 IHRyeWluZyB0byBhY2Nlc3MgdGhlIHJlZ2lzdGVycyBpbiBxdWVzdGlvbgo+IGFuZCB0ZXN0aW5n IGlmIHRoZSByZXN1bHQgaXMgMHhmZmZmZmZmZi4KPiAKPiBUaGlzIG1ldGhvZCB3aWxsIHRyaWdn ZXIgYSBQQ0llIGVycm9yIHdoZW4gdGhlIHdpbmRvdyBpcyBjbG9zZWQKPiB3aGljaCBvbiBzb21l IHN5c3RlbXMgd2lsbCBiZSBmYXRhbCAoaXQgd2lsbCB0cmlnZ2VyIGFuIEVFSAo+IGZvciBleGFt cGxlIG9uIFBPV0VSIHdoaWNoIHdpbGwgdGFrZSBvdXQgdGhlIGRldmljZSkuCj4gCj4gVGhpcyBw YXRjaCBpbXByb3ZlcyB0aGlzIGluIHR3byB3YXlzOgo+IAo+IMKgLSBGaXJzdCwgaWYgdGhlIGZp cm13YXJlIGhhcyBwdXQgcHJvcGVydGllcyBpbiB0aGUgZGV2aWNlLXRyZWUKPiBjb250YWluaW5n IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLCB3ZSB1c2UgdGhlc2UuCj4g Cj4gwqAtIE90aGVyd2lzZSwgYSBiaXQgaW4gb25lIG9mIHRoZSBTQ1Ugc2NyYXRjaCByZWdpc3Rl cnMgKHdoaWNoCj4gYXJlIHJlYWRhYmxlIHZpYSB0aGUgVkdBIHJlZ2lzdGVyIHNwYWNlIGFuZCB3 cml0ZWFibGUgYnkgdGhlIEJNQykKPiB3aWxsIGluZGljYXRlIGlmIHRoZSBCTUMgaGFzIGNsb3Nl ZCB0aGUgd2luZG93LiBUaGlzIGJpdCBoYXMgYmVlbgo+IGRlZmluZWQgYnkgWS5DIENoZW4gZnJv bSBBc3BlZWQuCj4gCj4gSWYgdGhlIHdpbmRvdyBpcyBjbG9zZWQgYW5kIHRoZSBjb25maWd1cmF0 aW9uIGlzbid0IGF2YWlsYWJsZSBmcm9tCj4gdGhlIGRldmljZS10cmVlLCBzb21lIHNhbmUgZGVm YXVsdHMgYXJlIHVzZWQuIFRob3NlIGRlZmF1bHRzIGFyZQo+IGhvcGVmdWxseSBzdWZmaWNpZW50 IGZvciBzdGFuZGFyZCB2aWRlbyBtb2RlcyB1c2VkIG9uIGEgc2VydmVyLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFJ1c3NlbGwgQ3VycmV5IDxydXNjdXJAcnVzc2VsbC5jYz4KPiBTaWduZWQtb2ZmLWJ5 OiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+Cj4gLS0K PiAKPiB2Mi4gW0JlbkhdCj4gwqDCoMKgwqAtIFJld29ya2VkIG9uIHRvcCBvZiBBc3BlZWQgUDJB IHBhdGNoCj4gwqDCoMKgwqAtIENsZWFudXAgb3ZlcmFsbCBkZXRlY3Rpb24gdmlhIGEgImNvbmZp Z19tb2RlIiBhbmQgbG9nIHRoZQo+IMKgwqDCoMKgwqDCoHNlbGVjdGVkIG1vZGUgZm9yIGRpYWdu b3N0aWNzIHB1cnBvc2VzCj4gwqDCoMKgwqAtIEFkZCBhIHByb3BlcnR5IGZvciB0aGUgU0NVIHN0 cmFwcwo+IAo+IHYzLiBbQmVuSF0KPiDCoMKgwqDCoC0gTW92ZWQgdGhlIGNvbmZpZyBtb2RlIGRl dGVjdGlvbiB0byBhIHNlcGFyYXRlIGZ1bmN0aW9ubgo+IMKgwqDCoMKgLSBBZGQgcmVhZGluZyBv ZiBTQ1UgMHg0MCBEWzEyXSB0byBkZXRlY3QgdGhlIHdpbmRvdyBpcwo+IMKgwqDCoMKgwqDCoGNs b3NlZCBhcyB0byBub3QgdHJpZ2dlciBhIGJ1cyBlcnJvciBieSBqdXN0ICJ0cnlpbmciLgo+IMKg wqDCoMKgwqDCoChjaGFuZ2UgcHJvdmlkZWQgYnkgWS5DLiBDaGVuKQo+IC0tLQo+IMKgZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmjCoMKgfMKgwqDCoDYgKy0KPiDCoGRyaXZlcnMvZ3B1L2Ry bS9hc3QvYXN0X21haW4uYyB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+IC0t LS0tLS0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jIHzCoMKgwqA3ICst Cj4gwqAzIGZpbGVzIGNoYW5nZWQsIDE0MSBpbnNlcnRpb25zKCspLCA5NSBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgKPiBiL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oCj4gaW5kZXggN2FiZGE5NC4uM2JlZGNmNyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hc3QvYXN0X2Rydi5oCj4gQEAgLTExMyw3ICsxMTMsMTEgQEAgc3RydWN0IGFzdF9wcml2 YXRlIHsKPiDCoAlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqIGNhY2hlX2ttYXA7Cj4gwqAJaW50IG5l eHRfY3Vyc29yOwo+IMKgCWJvb2wgc3VwcG9ydF93aWRlX3NjcmVlbjsKPiAtCWJvb2wgRGlzYWJs ZVAyQTsKPiArCWVudW0gewo+ICsJCWFzdF91c2VfcDJhLAo+ICsJCWFzdF91c2VfZHQsCj4gKwkJ YXN0X3VzZV9kZWZhdWx0cwo+ICsJfSBjb25maWdfbW9kZTsKPiDCoAo+IMKgCWVudW0gYXN0X3R4 X2NoaXAgdHhfY2hpcF90eXBlOwo+IMKgCXU4IGRwNTAxX21heGNsazsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9tYWluLmMKPiBpbmRleCA1MzNlNzYyLi44MjNjNjhmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X21haW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21h aW4uYwo+IEBAIC02MiwxMyArNjIsNTggQEAgdWludDhfdCBhc3RfZ2V0X2luZGV4X3JlZ19tYXNr KHN0cnVjdCBhc3RfcHJpdmF0ZQo+ICphc3QsCj4gwqAJcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+ ICtzdGF0aWMgdm9pZCBhc3RfZGV0ZWN0X2NvbmZpZ19tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHUzMgo+ICpzY3VfcmV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2 LT5wZGV2LT5kZXYub2Zfbm9kZTsKPiArCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKPiArCXVpbnQzMl90IGRhdGEsIGpyZWc7Cj4gKwo+ICsJLyogQ2hlY2sgaWYg d2UgaGF2ZSBkZXZpY2UtdHJlZSBwcm9wZXJ0aWVzICovCj4gKwlpZiAobnAgJiYgIW9mX3Byb3Bl cnR5X3JlYWRfdTMyKG5wLCAiYXN0LHNjdS1yZXZpc2lvbi1pZCIsCj4gc2N1X3JldikpIHsKPiAr CQkvKiBXZSBkbywgZGlzYWJsZSBQMkEgYWNjZXNzICovCj4gKwkJYXN0LT5jb25maWdfbW9kZSA9 IGFzdF91c2VfZHQ7Cj4gKwkJRFJNX0lORk8oIlVzaW5nIGRldmljZS10cmVlIGZvciBjb25maWd1 cmF0aW9uXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCcKgKiBUaGUgQk1D IHdpbGwgc2V0IFNDVSAweDQwIERbMTJdIHRvIDEgaWYgdGhlIFAyIGJyaWRnZQo+ICsJwqAqIGlz IGRpc2FibGVkCj4gKwnCoCovCj4gKwlqcmVnID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4ZDEsCj4gMHhmZik7Cj4gKwlpZiAoIShqcmVnICYgMHgxMCkp IHsKPiArCQkvKiBEb3VibGUgY2hlY2sgaXQncyBhY3R1YWxseSB3b3JraW5nICovCj4gKwkJZGF0 YSA9IGFzdF9yZWFkMzIoYXN0LCAweGYwMDQpOwo+ICsJCWlmIChkYXRhICE9IDB4RkZGRkZGRkYp IHsKPiArCQkJLyogUDJBIHdvcmtzLCBncmFiIHNpbGljb24gcmV2aXNpb24gKi8KPiArCQkJYXN0 LT5jb25maWdfbW9kZSA9IGFzdF91c2VfcDJhOwo+ICsKPiArCQkJRFJNX0lORk8oIlVzaW5nIFAy QSBicmlkZ2UgZm9yCj4gY29uZmlndXJhdGlvblxuIik7Cj4gKwo+ICsJCQkvKiBSZWFkIFNDVTdj IChzaWxpY29uIHJldmlzaW9uIHJlZ2lzdGVyKSAqLwo+ICsJCQlhc3Rfd3JpdGUzMihhc3QsIDB4 ZjAwNCwgMHgxZTZlMDAwMCk7Cj4gKwkJCWFzdF93cml0ZTMyKGFzdCwgMHhmMDAwLCAweDEpOwo+ ICsJCQkqc2N1X3JldiA9IGFzdF9yZWFkMzIoYXN0LCAweDEyMDdjKTsKPiArCQkJcmV0dXJuOwo+ ICsJCX0KPiArCX0KPiArCj4gKwlEUk1fSU5GTygiUDJBIGJyaWRnZSBkaXNhYmxlZCwgdXNpbmcg ZGVmYXVsdAo+IGNvbmZpZ3VyYXRpb25cbiIpOwo+ICsJYXN0LT5jb25maWdfbW9kZSA9IGFzdF91 c2VfZGVmYXVsdHM7Cj4gKwkqc2N1X3JldiA9IDB4ZmZmZmZmZmY7Cj4gK30KPiDCoAo+IMKgc3Rh dGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCAqbmVl ZF9wb3N0KQo+IMKgewo+IMKgCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiAtCXVpbnQzMl90IGRhdGEsIGpyZWc7Cj4gKwl1aW50MzJfdCBqcmVnLCBzY3VfcmV2 Owo+ICsKPiDCoAlhc3Rfb3Blbl9rZXkoYXN0KTsKPiDCoAo+ICsJLyogRmluZCBvdXQgd2hldGhl ciBQMkEgd29ya3Mgb3Igd2hldGhlciB0byB1c2UgZGV2aWNlLXRyZWUKPiAqLwo+ICsJYXN0X2Rl dGVjdF9jb25maWdfbW9kZShkZXYsICZzY3VfcmV2KTsKPiArCj4gKwkvKiBJZGVudGlmeSBjaGlw c2V0ICovCj4gwqAJaWYgKGRldi0+cGRldi0+ZGV2aWNlID09IFBDSV9DSElQX0FTVDExODApIHsK PiDCoAkJYXN0LT5jaGlwID0gQVNUMTEwMDsKPiDCoAkJRFJNX0lORk8oIkFTVCAxMTgwIGRldGVj dGVkXG4iKTsKPiBAQCAtODAsMTIgKzEyNSw3IEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlw KHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwgYm9vbCAqbmVlZF9wb3N0KQo+IMKgCQkJYXN0LT5j aGlwID0gQVNUMjMwMDsKPiDCoAkJCURSTV9JTkZPKCJBU1QgMjMwMCBkZXRlY3RlZFxuIik7Cj4g wqAJCX0gZWxzZSBpZiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA+PSAweDEwKSB7Cj4gLQkJCXVpbnQz Ml90IGRhdGE7Cj4gLQkJCWFzdF93cml0ZTMyKGFzdCwgMHhmMDA0LCAweDFlNmUwMDAwKTsKPiAt CQkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDAsIDB4MSk7Cj4gLQo+IC0JCQlkYXRhID0gYXN0X3Jl YWQzMihhc3QsIDB4MTIwN2MpOwo+IC0JCQlzd2l0Y2ggKGRhdGEgJiAweDAzMDApIHsKPiArCQkJ c3dpdGNoIChzY3VfcmV2ICYgMHgwMzAwKSB7Cj4gwqAJCQljYXNlIDB4MDIwMDoKPiDCoAkJCQlh c3QtPmNoaXAgPSBBU1QxMTAwOwo+IMKgCQkJCURSTV9JTkZPKCJBU1QgMTEwMCBkZXRlY3RlZFxu Iik7Cj4gQEAgLTEyNCwxMiArMTY0LDYgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3Ry dWN0IGRybV9kZXZpY2UKPiAqZGV2LCBib29sICpuZWVkX3Bvc3QpCj4gwqAJfSBlbHNlCj4gwqAJ CSpuZWVkX3Bvc3QgPSBmYWxzZTsKPiDCoAo+IC0JLyogQ2hlY2sgUDJBIEFjY2VzcyAqLwo+IC0J YXN0LT5EaXNhYmxlUDJBID0gdHJ1ZTsKPiAtCWRhdGEgPSBhc3RfcmVhZDMyKGFzdCwgMHhmMDA0 KTsKPiAtCWlmIChkYXRhICE9IDB4RkZGRkZGRkYpCj4gLQkJYXN0LT5EaXNhYmxlUDJBID0gZmFs c2U7Cj4gLQo+IMKgCS8qIENoZWNrIGlmIHdlIHN1cHBvcnQgd2lkZSBzY3JlZW4gKi8KPiDCoAlz d2l0Y2ggKGFzdC0+Y2hpcCkgewo+IMKgCWNhc2UgQVNUMTE4MDoKPiBAQCAtMTQ2LDE3ICsxODAs MTIgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2 LCBib29sICpuZWVkX3Bvc3QpCj4gwqAJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSB0cnVl Owo+IMKgCQllbHNlIHsKPiDCoAkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IGZhbHNlOwo+ IC0JCQlpZiAoYXN0LT5EaXNhYmxlUDJBID09IGZhbHNlKSB7Cj4gLQkJCQkvKiBSZWFkIFNDVTdj IChzaWxpY29uIHJldmlzaW9uCj4gcmVnaXN0ZXIpICovCj4gLQkJCQlhc3Rfd3JpdGUzMihhc3Qs IDB4ZjAwNCwKPiAweDFlNmUwMDAwKTsKPiAtCQkJCWFzdF93cml0ZTMyKGFzdCwgMHhmMDAwLCAw eDEpOwo+IC0JCQkJZGF0YSA9IGFzdF9yZWFkMzIoYXN0LCAweDEyMDdjKTsKPiAtCQkJCWRhdGEg Jj0gMHgzMDA7Cj4gLQkJCQlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgJiYgZGF0YSA9PQo+IDB4 MCkgLyogYXN0MTMwMCAqLwo+IC0JCQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9Cj4gdHJ1 ZTsKPiAtCQkJCWlmIChhc3QtPmNoaXAgPT0gQVNUMjQwMCAmJiBkYXRhID09Cj4gMHgxMDApIC8q IGFzdDE0MDAgKi8KPiAtCQkJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPQo+IHRydWU7Cj4g LQkJCX0KPiArCQkJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwICYmCj4gKwkJCcKgwqDCoMKgKHNj dV9yZXYgJiAweDMwMCkgPT0gMHgwKSAvKiBhc3QxMzAwICovCj4gKwkJCQlhc3QtPnN1cHBvcnRf d2lkZV9zY3JlZW4gPSB0cnVlOwo+ICsJCQlpZiAoYXN0LT5jaGlwID09IEFTVDI0MDAgJiYKPiAr CQkJwqDCoMKgwqAoc2N1X3JldiAmIDB4MzAwKSA9PSAweDEwMCkgLyogYXN0MTQwMAo+ICovCj4g KwkJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSB0cnVlOwo+IMKgCQl9Cj4gwqAJCWJyZWFr Owo+IMKgCX0KPiBAQCAtMjIwLDg1ICsyNDksMTAxIEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9j aGlwKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwgYm9vbCAqbmVlZF9wb3N0KQo+IMKgCj4gwqBz dGF0aWMgaW50IGFzdF9nZXRfZHJhbV9pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqB7 Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5wZGV2LT5kZXYub2Zfbm9kZTsKPiDC oAlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1aW50MzJf dCBkYXRhLCBkYXRhMjsKPiAtCXVpbnQzMl90IGRlbnVtLCBudW0sIGRpdiwgcmVmX3BsbDsKPiAr CXVpbnQzMl90IG1jcl9jZmcsIG1jcl9zY3VfbXBsbCwgbWNyX3NjdV9zdHJhcDsKPiArCXVpbnQz Ml90IGRlbnVtLCBudW0sIGRpdiwgcmVmX3BsbCwgZHNlbDsKPiDCoAo+IC0JaWYgKGFzdC0+RGlz YWJsZVAyQSkKPiAtCXsKPiArCXN3aXRjaCAoYXN0LT5jb25maWdfbW9kZSkgewo+ICsJY2FzZSBh c3RfdXNlX2R0Ogo+ICsJCS8qCj4gKwkJwqAqIElmIHNvbWUgcHJvcGVydGllcyBhcmUgbWlzc2lu ZywgdXNlIHJlYXNvbmFibGUKPiArCQnCoCogZGVmYXVsdHMgZm9yIEFTVDI0MDAKPiArCQnCoCov Cj4gKwkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiYXN0LG1jci0KPiBjb25maWd1cmF0 aW9uIiwgJm1jcl9jZmcpKQo+ICsJCQltY3JfY2ZnID0gMHgwMDAwMDU3NzsKPiArCQlpZiAob2Zf cHJvcGVydHlfcmVhZF91MzIobnAsICJhc3QsYXN0LG1jci1zY3UtbXBsbCIsCj4gKwkJCQkJwqAm bWNyX3NjdV9tcGxsKSkKPiArCQkJbWNyX3NjdV9tcGxsID0gMHgwMDAwNTBDMDsKPiArCQlpZiAo b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhc3QsYXN0LG1jci1zY3UtCj4gc3RyYXAiLAo+ICsJ CQkJCcKgJm1jcl9zY3Vfc3RyYXApKQo+ICsJCQltY3Jfc2N1X3N0cmFwID0gMDsKPiArCQlicmVh azsKPiArCWNhc2UgYXN0X3VzZV9wMmE6Cj4gKwkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDQsIDB4 MWU2ZTAwMDApOwo+ICsJCWFzdF93cml0ZTMyKGFzdCwgMHhmMDAwLCAweDEpOwo+ICsJCW1jcl9j ZmcgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMDAwNCk7Cj4gKwkJbWNyX3NjdV9tcGxsID0gYXN0X3Jl YWQzMihhc3QsIDB4MTAxMjApOwo+ICsJCW1jcl9zY3Vfc3RyYXAgPSBhc3RfcmVhZDMyKGFzdCwg MHgxMDE3MCk7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIGFzdF91c2VfZGVmYXVsdHM6Cj4gKwlkZWZh dWx0Ogo+IMKgCQlhc3QtPmRyYW1fYnVzX3dpZHRoID0gMTY7Cj4gwqAJCWFzdC0+ZHJhbV90eXBl ID0gQVNUX0RSQU1fMUd4MTY7Cj4gwqAJCWFzdC0+bWNsayA9IDM5NjsKPiArCQlyZXR1cm4gMDsK PiDCoAl9Cj4gLQllbHNlCj4gLQl7Cj4gLQkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDQsIDB4MWU2 ZTAwMDApOwo+IC0JCWFzdF93cml0ZTMyKGFzdCwgMHhmMDAwLCAweDEpOwo+IC0JCWRhdGEgPSBh c3RfcmVhZDMyKGFzdCwgMHgxMDAwNCk7Cj4gLQo+IC0JCWlmIChkYXRhICYgMHg0MCkKPiAtCQkJ YXN0LT5kcmFtX2J1c193aWR0aCA9IDE2Owo+IC0JCWVsc2UKPiAtCQkJYXN0LT5kcmFtX2J1c193 aWR0aCA9IDMyOwo+IMKgCj4gLQkJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hp cCA9PSBBU1QyNDAwKSB7Cj4gLQkJCXN3aXRjaCAoZGF0YSAmIDB4MDMpIHsKPiAtCQkJY2FzZSAw Ogo+IC0JCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJNeDE2Owo+IC0JCQkJYnJlYWs7 Cj4gLQkJCWRlZmF1bHQ6Cj4gLQkJCWNhc2UgMToKPiAtCQkJCWFzdC0+ZHJhbV90eXBlID0gQVNU X0RSQU1fMUd4MTY7Cj4gLQkJCQlicmVhazsKPiAtCQkJY2FzZSAyOgo+IC0JCQkJYXN0LT5kcmFt X3R5cGUgPSBBU1RfRFJBTV8yR3gxNjsKPiAtCQkJCWJyZWFrOwo+IC0JCQljYXNlIDM6Cj4gLQkJ CQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzRHeDE2Owo+IC0JCQkJYnJlYWs7Cj4gLQkJCX0K PiAtCQl9IGVsc2Ugewo+IC0JCQlzd2l0Y2ggKGRhdGEgJiAweDBjKSB7Cj4gLQkJCWNhc2UgMDoK PiAtCQkJY2FzZSA0Ogo+IC0JCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJNeDE2Owo+ IC0JCQkJYnJlYWs7Cj4gLQkJCWNhc2UgODoKPiAtCQkJCWlmIChkYXRhICYgMHg0MCkKPiAtCQkJ CQlhc3QtPmRyYW1fdHlwZSA9Cj4gQVNUX0RSQU1fMUd4MTY7Cj4gLQkJCQllbHNlCj4gLQkJCQkJ YXN0LT5kcmFtX3R5cGUgPQo+IEFTVF9EUkFNXzUxMk14MzI7Cj4gLQkJCQlicmVhazsKPiAtCQkJ Y2FzZSAweGM6Cj4gLQkJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzFHeDMyOwo+IC0JCQkJ YnJlYWs7Cj4gLQkJCX0KPiAtCQl9Cj4gKwlpZiAobWNyX2NmZyAmIDB4NDApCj4gKwkJYXN0LT5k cmFtX2J1c193aWR0aCA9IDE2Owo+ICsJZWxzZQo+ICsJCWFzdC0+ZHJhbV9idXNfd2lkdGggPSAz MjsKPiDCoAo+IC0JCWRhdGEgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMDEyMCk7Cj4gLQkJZGF0YTIg PSBhc3RfcmVhZDMyKGFzdCwgMHgxMDE3MCk7Cj4gLQkJaWYgKGRhdGEyICYgMHgyMDAwKQo+IC0J CQlyZWZfcGxsID0gMTQzMTg7Cj4gLQkJZWxzZQo+IC0JCQlyZWZfcGxsID0gMTIwMDA7Cj4gLQo+ IC0JCWRlbnVtID0gZGF0YSAmIDB4MWY7Cj4gLQkJbnVtID0gKGRhdGEgJiAweDNmZTApID4+IDU7 Cj4gLQkJZGF0YSA9IChkYXRhICYgMHhjMDAwKSA+PiAxNDsKPiAtCQlzd2l0Y2ggKGRhdGEpIHsK PiAtCQljYXNlIDM6Cj4gLQkJCWRpdiA9IDB4NDsKPiArCWlmIChhc3QtPmNoaXAgPT0gQVNUMjMw MCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCkgewo+ICsJCXN3aXRjaCAobWNyX2NmZyAmIDB4MDMp IHsKPiArCQljYXNlIDA6Cj4gKwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fNTEyTXgxNjsK PiDCoAkJCWJyZWFrOwo+IC0JCWNhc2UgMjoKPiArCQlkZWZhdWx0Ogo+IMKgCQljYXNlIDE6Cj4g LQkJCWRpdiA9IDB4MjsKPiArCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV8xR3gxNjsKPiDC oAkJCWJyZWFrOwo+IC0JCWRlZmF1bHQ6Cj4gLQkJCWRpdiA9IDB4MTsKPiArCQljYXNlIDI6Cj4g KwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMkd4MTY7Cj4gKwkJCWJyZWFrOwo+ICsJCWNh c2UgMzoKPiArCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV80R3gxNjsKPiDCoAkJCWJyZWFr Owo+IMKgCQl9Cj4gLQkJYXN0LT5tY2xrID0gcmVmX3BsbCAqIChudW0gKyAyKSAvIChkZW51bSAr IDIpICogKGRpdgo+ICogMTAwMCk7Cj4gKwl9IGVsc2Ugewo+ICsJCXN3aXRjaCAobWNyX2NmZyAm IDB4MGMpIHsKPiArCQljYXNlIDA6Cj4gKwkJY2FzZSA0Ogo+ICsJCQlhc3QtPmRyYW1fdHlwZSA9 IEFTVF9EUkFNXzUxMk14MTY7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgODoKPiArCQkJaWYgKG1j cl9jZmcgJiAweDQwKQo+ICsJCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV8xR3gxNjsKPiAr CQkJZWxzZQo+ICsJCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJNeDMyOwo+ICsJCQli cmVhazsKPiArCQljYXNlIDB4YzoKPiArCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV8xR3gz MjsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWlmIChtY3Jfc2N1X3N0cmFwICYg MHgyMDAwKQo+ICsJCXJlZl9wbGwgPSAxNDMxODsKPiArCWVsc2UKPiArCQlyZWZfcGxsID0gMTIw MDA7Cj4gKwo+ICsJZGVudW0gPSBtY3Jfc2N1X21wbGwgJiAweDFmOwo+ICsJbnVtID0gKG1jcl9z Y3VfbXBsbCAmIDB4M2ZlMCkgPj4gNTsKPiArCWRzZWwgPSAobWNyX3NjdV9tcGxsICYgMHhjMDAw KSA+PiAxNDsKPiArCXN3aXRjaCAoZHNlbCkgewo+ICsJY2FzZSAzOgo+ICsJCWRpdiA9IDB4NDsK PiArCQlicmVhazsKPiArCWNhc2UgMjoKPiArCWNhc2UgMToKPiArCQlkaXYgPSAweDI7Cj4gKwkJ YnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWRpdiA9IDB4MTsKPiArCQlicmVhazsKPiDCoAl9Cj4g Kwlhc3QtPm1jbGsgPSByZWZfcGxsICogKG51bSArIDIpIC8gKGRlbnVtICsgMikgKiAoZGl2ICoK PiAxMDAwKTsKPiDCoAlyZXR1cm4gMDsKPiDCoH0KPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3Qu Ywo+IGluZGV4IDUzMzFlZTEuLjcxOTc2MzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfcG9zdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jCj4g QEAgLTM3OSwxNyArMzc5LDE0IEBAIHZvaWQgYXN0X3Bvc3RfZ3B1KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gwqAJYXN0X29wZW5fa2V5KGFzdCk7Cj4gwqAJYXN0X3NldF9kZWZfZXh0X3JlZyhk ZXYpOwo+IMKgCj4gLQlpZiAoYXN0LT5EaXNhYmxlUDJBID09IGZhbHNlKQo+IC0Jewo+ICsJaWYg KGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsKPiDCoAkJaWYgKGFzdC0+Y2hpcCA9 PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKQo+IMKgCQkJYXN0X2luaXRfZHJhbV8y MzAwKGRldik7Cj4gwqAJCWVsc2UKPiDCoAkJCWFzdF9pbml0X2RyYW1fcmVnKGRldik7Cj4gwqAK PiDCoAkJYXN0X2luaXRfM3JkdHgoZGV2KTsKPiAtCX0KPiAtCWVsc2UKPiAtCXsKPiArCX0gZWxz ZSB7Cj4gwqAJCWlmIChhc3QtPnR4X2NoaXBfdHlwZSAhPSBBU1RfVFhfTk9ORSkKPiDCoAkJCWFz dF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LAo+IEFTVF9JT19DUlRDX1BPUlQsIDB4YTMsIDB4Y2Ys IDB4ODApOwkvKiBFbmFibGUgRFZPICovCj4gwqAJfQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK