From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [RFC libdrm 2/6] libdrm: Add NVIDIA Tegra support Date: Wed, 19 Feb 2014 17:04:49 +0100 Message-ID: <1392825893-7380-3-git-send-email-thierry.reding@gmail.com> References: <1392825893-7380-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-bk0-f43.google.com (mail-bk0-f43.google.com [209.85.214.43]) by gabe.freedesktop.org (Postfix) with ESMTP id 1ADCBF9D7A for ; Wed, 19 Feb 2014 08:05:00 -0800 (PST) Received: by mail-bk0-f43.google.com with SMTP id mx12so264427bkb.2 for ; Wed, 19 Feb 2014 08:05:00 -0800 (PST) In-Reply-To: <1392825893-7380-1-git-send-email-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGF2aW9uaWMtZGVzaWduLmRlPgoK QWRkIHRoZSBsaWJkcm1fdGVncmEgaGVscGVyIGxpYnJhcnkgdG8gZW5jYXBzdWxhdGUgVGVncmEt c3BlY2lmaWMKaW50ZXJmYWNlcyB0byB0aGUgRFJNLgoKRnVydGhlcm1vcmUsIFRlZ3JhIGlzIGFk ZGVkIHRvIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBjaGlwcyBpbiB0aGUKbW9kZXRlc3QgYW5kIHZi bHRlc3QgcHJvZ3JhbXMuCgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dGhpZXJyeS5y ZWRpbmdAYXZpb25pYy1kZXNpZ24uZGU+ClNpZ25lZC1vZmYtYnk6IEVyaWsgRmF5ZS1MdW5kIDxr dXNtYWJpdGVAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGlu Z0BudmlkaWEuY29tPgotLS0KIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgfCAgIDYgKy0KIGNv bmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCAgMTUgKystCiBpbmNsdWRlL2RybS9NYWtlZmlsZS5h bSAgIHwgICAxICsKIGluY2x1ZGUvZHJtL3RlZ3JhX2RybS5oICAgfCAxNTcgKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogdGVncmEvTWFrZWZpbGUuYW0gICAgICAgICB8ICAyMCArKysrCiB0 ZWdyYS9saWJkcm1fdGVncmEucGMuaW4gIHwgIDExICsrCiB0ZWdyYS9wcml2YXRlLmggICAgICAg ICAgIHwgIDU4ICsrKysrKysrKysrCiB0ZWdyYS90ZWdyYS5jICAgICAgICAgICAgIHwgMjUzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlZ3JhL3RlZ3Jh LmggICAgICAgICAgICAgfCAgNDcgKysrKysrKysrCiB0ZXN0cy9tb2RldGVzdC9tb2RldGVzdC5j IHwgICAyICstCiB0ZXN0cy92Ymx0ZXN0L3ZibHRlc3QuYyAgIHwgICAyICstCiAxMSBmaWxlcyBj aGFuZ2VkLCA1NjggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBpbmNsdWRlL2RybS90ZWdyYV9kcm0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlZ3JhL01h a2VmaWxlLmFtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVncmEvbGliZHJtX3RlZ3JhLnBjLmluCiBj cmVhdGUgbW9kZSAxMDA2NDQgdGVncmEvcHJpdmF0ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVn cmEvdGVncmEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlZ3JhL3RlZ3JhLmgKCmRpZmYgLS1naXQg YS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCmluZGV4IDgyNmMzMGQwYzBkOS4uMTRjNDAyZGNl NzRmIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5hbQorKysgYi9NYWtlZmlsZS5hbQpAQCAtNTEsNyAr NTEsMTEgQEAgaWYgSEFWRV9GUkVFRFJFTk8KIEZSRUVEUkVOT19TVUJESVIgPSBmcmVlZHJlbm8K IGVuZGlmCiAKLVNVQkRJUlMgPSAuICQoTElCS01TX1NVQkRJUikgJChJTlRFTF9TVUJESVIpICQo Tk9VVkVBVV9TVUJESVIpICQoUkFERU9OX1NVQkRJUikgJChPTUFQX1NVQkRJUikgJChFWFlOT1Nf U1VCRElSKSAkKEZSRUVEUkVOT19TVUJESVIpIHRlc3RzIGluY2x1ZGUgbWFuCitpZiBIQVZFX1RF R1JBCitURUdSQV9TVUJESVIgPSB0ZWdyYQorZW5kaWYKKworU1VCRElSUyA9IC4gJChMSUJLTVNf U1VCRElSKSAkKElOVEVMX1NVQkRJUikgJChOT1VWRUFVX1NVQkRJUikgJChSQURFT05fU1VCRElS KSAkKE9NQVBfU1VCRElSKSAkKEVYWU5PU19TVUJESVIpICQoRlJFRURSRU5PX1NVQkRJUikgJChU RUdSQV9TVUJESVIpIHRlc3RzIGluY2x1ZGUgbWFuCiAKIGxpYmRybV9sYV9MVExJQlJBUklFUyA9 IGxpYmRybS5sYQogbGliZHJtX2xhZGlyID0gJChsaWJkaXIpCmRpZmYgLS1naXQgYS9jb25maWd1 cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggM2Y0MTY0MjM4NDk0Li43NTJhNzA1OTI5MzMgMTAw NjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTk4LDYgKzk4LDEx IEBAIEFDX0FSR19FTkFCTEUoZnJlZWRyZW5vLWV4cGVyaW1lbnRhbC1hcGksCiAJICAgICAgW0Vu YWJsZSBzdXBwb3J0IGZvciBmcmVlZHJlbm8ncyBleHBlcmltZW50YWwgQVBJIChkZWZhdWx0OiBk aXNhYmxlZCldKSwKIAkgICAgICBbRlJFRURSRU5PPSRlbmFibGV2YWxdLCBbRlJFRURSRU5PPW5v XSkKIAorQUNfQVJHX0VOQUJMRSh0ZWdyYS1leHBlcmltZW50YWwtYXBpLAorCSAgICAgIEFTX0hF TFBfU1RSSU5HKFstLWVuYWJsZS10ZWdyYS1leHBlcmltZW50YWwtYXBpXSwKKwkgICAgICBbRW5h YmxlIHN1cHBvcnQgZm9yIFRlZ3JhJ3MgZXhwZXJpbWVudGFsIEFQSSAoZGVmYXVsdDogZGlzYWJs ZWQpXSksCisJICAgICAgW1RFR1JBPSRlbmFibGV2YWxdLCBbVEVHUkE9bm9dKQorCiBBQ19BUkdf RU5BQkxFKGluc3RhbGwtdGVzdC1wcm9ncmFtcywKIAkJICBBU19IRUxQX1NUUklORyhbLS1lbmFi bGUtaW5zdGFsbC10ZXN0LXByb2dyYW1zXSwKIAkJICBbSW5zdGFsbCB0ZXN0IHByb2dyYW1zIChk ZWZhdWx0OiBubyldKSwKQEAgLTIxOCw2ICsyMjMsMTEgQEAgaWYgdGVzdCAieCRGUkVFRFJFTk8i ID0geHllczsgdGhlbgogCUFDX0RFRklORShIQVZFX0ZSRUVEUkVOTywgMSwgW0hhdmUgZnJlZWRy ZW5vIHN1cHBvcnRdKQogZmkKIAorQU1fQ09ORElUSU9OQUwoSEFWRV9URUdSQSwgW3Rlc3QgIngk VEVHUkEiID0geHllc10pCitpZiB0ZXN0ICJ4JFRFR1JBIiA9IHh5ZXM7IHRoZW4KKwlBQ19ERUZJ TkUoSEFWRV9URUdSQSwgMSwgW0hhdmUgVGVncmEgc3VwcG9ydF0pCitmaQorCiBBTV9DT05ESVRJ T05BTChIQVZFX0lOU1RBTExfVEVTVFMsIFt0ZXN0ICJ4JElOU1RBTExfVEVTVFMiID0geHllc10p CiBpZiB0ZXN0ICJ4JElOU1RBTExfVEVTVFMiID0geHllczsgdGhlbgogCUFDX0RFRklORShIQVZF X0lOU1RBTExfVEVTVFMsIDEsIFtJbnN0YWxsIHRlc3QgcHJvZ3JhbXNdKQpAQCAtMjY5LDcgKzI3 OSw3IEBAIGVsc2UKIGZpCiBBTV9DT05ESVRJT05BTChbSEFWRV9NQU5QQUdFU19TVFlMRVNIRUVU XSwgW3Rlc3QgIngkSEFWRV9NQU5QQUdFU19TVFlMRVNIRUVUIiA9ICJ4eWVzIl0pCiAKLWlmIHRl c3QgIngkSU5URUwiICE9ICJ4bm8iIC1vICJ4JFJBREVPTiIgIT0gInhubyIgLW8gIngkTk9VVkVB VSIgIT0gInhubyIgLW8gIngkT01BUCIgIT0gInhubyIgLW8gIngkRlJFRURSRU5PIiAhPSAieG5v IjsgdGhlbgoraWYgdGVzdCAieCRJTlRFTCIgIT0gInhubyIgLW8gIngkUkFERU9OIiAhPSAieG5v IiAtbyAieCROT1VWRUFVIiAhPSAieG5vIiAtbyAieCRPTUFQIiAhPSAieG5vIiAtbyAieCRGUkVF RFJFTk8iICE9ICJ4bm8iIC1vICJ4JFRFR1JBIiAhPSAieG5vIjsgdGhlbgogICAgICMgQ2hlY2sg Zm9yIGF0b21pYyBpbnRyaW5zaWNzCiAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBuYXRpdmUgYXRv bWljIHByaW1pdGl2ZXNdLCBkcm1fY3ZfYXRvbWljX3ByaW1pdGl2ZXMsCiAgICAgWwpAQCAtNDAy LDYgKzQxMiw4IEBAIEFDX0NPTkZJR19GSUxFUyhbCiAJZXh5bm9zL2xpYmRybV9leHlub3MucGMK IAlmcmVlZHJlbm8vTWFrZWZpbGUKIAlmcmVlZHJlbm8vbGliZHJtX2ZyZWVkcmVuby5wYworCXRl Z3JhL01ha2VmaWxlCisJdGVncmEvbGliZHJtX3RlZ3JhLnBjCiAJdGVzdHMvTWFrZWZpbGUKIAl0 ZXN0cy9tb2RlcHJpbnQvTWFrZWZpbGUKIAl0ZXN0cy9tb2RldGVzdC9NYWtlZmlsZQpAQCAtNDI2 LDQgKzQzOCw1IEBAIGVjaG8gIiAgTm91dmVhdSBBUEkgICAgJE5PVVZFQVUiCiBlY2hvICIgIE9N QVAgQVBJICAgICAgICRPTUFQIgogZWNobyAiICBFWFlOT1MgQVBJICAgICAkRVhZTk9TIgogZWNo byAiICBGcmVlZHJlbm8gQVBJICAkRlJFRURSRU5PIgorZWNobyAiICBUZWdyYSBBUEkgICAgICAk VEVHUkEiCiBlY2hvICIiCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9NYWtlZmlsZS5hbSBiL2lu Y2x1ZGUvZHJtL01ha2VmaWxlLmFtCmluZGV4IDJiYzM0ZDJmZmQ5Zi4uZjU5MWFiYzQ1MTUyIDEw MDY0NAotLS0gYS9pbmNsdWRlL2RybS9NYWtlZmlsZS5hbQorKysgYi9pbmNsdWRlL2RybS9NYWtl ZmlsZS5hbQpAQCAtMzUsNiArMzUsNyBAQCBrbGliZHJtaW5jbHVkZV9IRUFERVJTID0gXAogCXJh ZGVvbl9kcm0uaCBcCiAJc2F2YWdlX2RybS5oIFwKIAlzaXNfZHJtLmggXAorCXRlZ3JhX2RybS5o IFwKIAl2aWFfZHJtLmggXAogCW1hY2g2NF9kcm0uaCBcCiAJcXhsX2RybS5oCmRpZmYgLS1naXQg YS9pbmNsdWRlL2RybS90ZWdyYV9kcm0uaCBiL2luY2x1ZGUvZHJtL3RlZ3JhX2RybS5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTU2ZWQ4YWE5ZDk4Ci0tLSAvZGV2 L251bGwKKysrIGIvaW5jbHVkZS9kcm0vdGVncmFfZHJtLmgKQEAgLTAsMCArMSwxNTcgQEAKKy8q CisgKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMywgTlZJRElBIENPUlBPUkFUSU9OLiAgQWxsIHJp Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3 YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAqIE9S IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YK KyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTi1JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUVU5HU1RFTiBHUkFQSElD UyBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwK KyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9VQVBJX1RFR1JBX0RSTV9IXworI2RlZmlu ZSBfVUFQSV9URUdSQV9EUk1fSF8KKworI2luY2x1ZGUgPGRybS9kcm0uaD4KKworI2RlZmluZSBE Uk1fVEVHUkFfR0VNX0NSRUFURV9USUxFRCAgICAgKDEgPDwgMCkKKyNkZWZpbmUgRFJNX1RFR1JB X0dFTV9DUkVBVEVfQk9UVE9NX1VQICgxIDw8IDEpCisKK3N0cnVjdCBkcm1fdGVncmFfZ2VtX2Ny ZWF0ZSB7CisJX191NjQgc2l6ZTsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiBoYW5kbGU7Cit9Owor CitzdHJ1Y3QgZHJtX3RlZ3JhX2dlbV9tbWFwIHsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgb2Zm c2V0OworfTsKKworc3RydWN0IGRybV90ZWdyYV9zeW5jcHRfcmVhZCB7CisJX191MzIgaWQ7CisJ X191MzIgdmFsdWU7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdF9pbmNyIHsKKwlfX3Uz MiBpZDsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdF93YWl0IHsK KwlfX3UzMiBpZDsKKwlfX3UzMiB0aHJlc2g7CisJX191MzIgdGltZW91dDsKKwlfX3UzMiB2YWx1 ZTsKK307CisKKyNkZWZpbmUgRFJNX1RFR1JBX05PX1RJTUVPVVQJKDB4ZmZmZmZmZmYpCisKK3N0 cnVjdCBkcm1fdGVncmFfb3Blbl9jaGFubmVsIHsKKwlfX3UzMiBjbGllbnQ7CisJX191MzIgcGFk OworCV9fdTY0IGNvbnRleHQ7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX2Nsb3NlX2NoYW5uZWwg eworCV9fdTY0IGNvbnRleHQ7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX2dldF9zeW5jcHQgewor CV9fdTY0IGNvbnRleHQ7CisJX191MzIgaW5kZXg7CisJX191MzIgaWQ7Cit9OworCitzdHJ1Y3Qg ZHJtX3RlZ3JhX2dldF9zeW5jcHRfYmFzZSB7CisJX191NjQgY29udGV4dDsKKwlfX3UzMiBzeW5j cHQ7CisJX191MzIgaWQ7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdCB7CisJX191MzIg aWQ7CisJX191MzIgaW5jcnM7Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX2NtZGJ1ZiB7CisJX191 MzIgaGFuZGxlOworCV9fdTMyIG9mZnNldDsKKwlfX3UzMiB3b3JkczsKKwlfX3UzMiBwYWQ7Cit9 OworCitzdHJ1Y3QgZHJtX3RlZ3JhX3JlbG9jIHsKKwlzdHJ1Y3QgeworCQlfX3UzMiBoYW5kbGU7 CisJCV9fdTMyIG9mZnNldDsKKwl9IGNtZGJ1ZjsKKwlzdHJ1Y3QgeworCQlfX3UzMiBoYW5kbGU7 CisJCV9fdTMyIG9mZnNldDsKKwl9IHRhcmdldDsKKwlfX3UzMiBzaGlmdDsKKwlfX3UzMiBwYWQ7 Cit9OworCitzdHJ1Y3QgZHJtX3RlZ3JhX3dhaXRjaGsgeworCV9fdTMyIGhhbmRsZTsKKwlfX3Uz MiBvZmZzZXQ7CisJX191MzIgc3luY3B0OworCV9fdTMyIHRocmVzaDsKK307CisKK3N0cnVjdCBk cm1fdGVncmFfc3VibWl0IHsKKwlfX3U2NCBjb250ZXh0OworCV9fdTMyIG51bV9zeW5jcHRzOwor CV9fdTMyIG51bV9jbWRidWZzOworCV9fdTMyIG51bV9yZWxvY3M7CisJX191MzIgbnVtX3dhaXRj aGtzOworCV9fdTMyIHdhaXRjaGtfbWFzazsKKwlfX3UzMiB0aW1lb3V0OworCV9fdTMyIHBhZDsK KwlfX3U2NCBzeW5jcHRzOworCV9fdTY0IGNtZGJ1ZnM7CisJX191NjQgcmVsb2NzOworCV9fdTY0 IHdhaXRjaGtzOworCV9fdTMyIGZlbmNlOwkJLyogUmV0dXJuIHZhbHVlICovCisKKwlfX3UzMiBy ZXNlcnZlZFs1XTsJLyogZnV0dXJlIGV4cGFuc2lvbiAqLworfTsKKworI2RlZmluZSBEUk1fVEVH UkFfR0VNX0NSRUFURQkJMHgwMAorI2RlZmluZSBEUk1fVEVHUkFfR0VNX01NQVAJCTB4MDEKKyNk ZWZpbmUgRFJNX1RFR1JBX1NZTkNQVF9SRUFECQkweDAyCisjZGVmaW5lIERSTV9URUdSQV9TWU5D UFRfSU5DUgkJMHgwMworI2RlZmluZSBEUk1fVEVHUkFfU1lOQ1BUX1dBSVQJCTB4MDQKKyNkZWZp bmUgRFJNX1RFR1JBX09QRU5fQ0hBTk5FTAkJMHgwNQorI2RlZmluZSBEUk1fVEVHUkFfQ0xPU0Vf Q0hBTk5FTAkJMHgwNgorI2RlZmluZSBEUk1fVEVHUkFfR0VUX1NZTkNQVAkJMHgwNworI2RlZmlu ZSBEUk1fVEVHUkFfU1VCTUlUCQkweDA4CisjZGVmaW5lIERSTV9URUdSQV9HRVRfU1lOQ1BUX0JB U0UJMHgwOQorCisjZGVmaW5lIERSTV9JT0NUTF9URUdSQV9HRU1fQ1JFQVRFIERSTV9JT1dSKERS TV9DT01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfR0VNX0NSRUFURSwgc3RydWN0IGRybV90ZWdyYV9n ZW1fY3JlYXRlKQorI2RlZmluZSBEUk1fSU9DVExfVEVHUkFfR0VNX01NQVAgRFJNX0lPV1IoRFJN X0NPTU1BTkRfQkFTRSArIERSTV9URUdSQV9HRU1fTU1BUCwgc3RydWN0IGRybV90ZWdyYV9nZW1f bW1hcCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1RFR1JBX1NZTkNQVF9SRUFEIERSTV9JT1dSKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfU1lOQ1BUX1JFQUQsIHN0cnVjdCBkcm1fdGVncmFfc3lu Y3B0X3JlYWQpCisjZGVmaW5lIERSTV9JT0NUTF9URUdSQV9TWU5DUFRfSU5DUiBEUk1fSU9XUihE Uk1fQ09NTUFORF9CQVNFICsgRFJNX1RFR1JBX1NZTkNQVF9JTkNSLCBzdHJ1Y3QgZHJtX3RlZ3Jh X3N5bmNwdF9pbmNyKQorI2RlZmluZSBEUk1fSU9DVExfVEVHUkFfU1lOQ1BUX1dBSVQgRFJNX0lP V1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9URUdSQV9TWU5DUFRfV0FJVCwgc3RydWN0IGRybV90 ZWdyYV9zeW5jcHRfd2FpdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1RFR1JBX09QRU5fQ0hBTk5FTCBE Uk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1RFR1JBX09QRU5fQ0hBTk5FTCwgc3RydWN0 IGRybV90ZWdyYV9vcGVuX2NoYW5uZWwpCisjZGVmaW5lIERSTV9JT0NUTF9URUdSQV9DTE9TRV9D SEFOTkVMIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfQ0xPU0VfQ0hBTk5F TCwgc3RydWN0IGRybV90ZWdyYV9vcGVuX2NoYW5uZWwpCisjZGVmaW5lIERSTV9JT0NUTF9URUdS QV9HRVRfU1lOQ1BUIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfR0VUX1NZ TkNQVCwgc3RydWN0IGRybV90ZWdyYV9nZXRfc3luY3B0KQorI2RlZmluZSBEUk1fSU9DVExfVEVH UkFfU1VCTUlUIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVEVHUkFfU1VCTUlULCBz dHJ1Y3QgZHJtX3RlZ3JhX3N1Ym1pdCkKKyNkZWZpbmUgRFJNX0lPQ1RMX1RFR1JBX0dFVF9TWU5D UFRfQkFTRSBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1RFR1JBX0dFVF9TWU5DUFRf QkFTRSwgc3RydWN0IGRybV90ZWdyYV9nZXRfc3luY3B0X2Jhc2UpCisKKyNlbmRpZgpkaWZmIC0t Z2l0IGEvdGVncmEvTWFrZWZpbGUuYW0gYi90ZWdyYS9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFiODMxNDViMTIwZAotLS0gL2Rldi9udWxsCisr KyBiL3RlZ3JhL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMjAgQEAKK0FNX0NQUEZMQUdTID0gXAor CS1JJCh0b3Bfc3JjZGlyKSBcCisJLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUvZHJtCisKK0FNX0NG TEFHUyA9IFwKKwkkKFZJU0lCSUxJVFlfQ0ZMQUdTKQorCitsaWJkcm1fdGVncmFfbGFkaXIgPSAk KGxpYmRpcikKK2xpYmRybV90ZWdyYV9sYV9MVExJQlJBUklFUyA9IGxpYmRybV90ZWdyYS5sYQor bGliZHJtX3RlZ3JhX2xhX0xERkxBR1MgPSAtdmVyc2lvbi1udW1iZXIgMDowOjAgLW5vLXVuZGVm aW5lZAorbGliZHJtX3RlZ3JhX2xhX0xJQkFERCA9IC4uL2xpYmRybS5sYSBAUFRIUkVBRFNUVUJT X0xJQlNACisKK2xpYmRybV90ZWdyYV9sYV9TT1VSQ0VTID0gXAorCXRlZ3JhLmMKKworbGliZHJt X3RlZ3JhaW5jbHVkZWRpciA9ICR7aW5jbHVkZWRpcn0vbGliZHJtCitsaWJkcm1fdGVncmFpbmNs dWRlX0hFQURFUlMgPSB0ZWdyYS5oCisKK3BrZ2NvbmZpZ2RpciA9IEBwa2djb25maWdkaXJACitw a2djb25maWdfREFUQSA9IGxpYmRybV90ZWdyYS5wYwpkaWZmIC0tZ2l0IGEvdGVncmEvbGliZHJt X3RlZ3JhLnBjLmluIGIvdGVncmEvbGliZHJtX3RlZ3JhLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmUwNmY0OWM2ZmJhCi0tLSAvZGV2L251bGwKKysrIGIv dGVncmEvbGliZHJtX3RlZ3JhLnBjLmluCkBAIC0wLDAgKzEsMTEgQEAKK3ByZWZpeD1AcHJlZml4 QAorZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorbGliZGlyPUBsaWJkaXJACitpbmNsdWRlZGly PUBpbmNsdWRlZGlyQAorCitOYW1lOiBsaWJkcm1fdGVncmEKK0Rlc2NyaXB0aW9uOiBVc2Vyc3Bh Y2UgaW50ZXJmYWNlIHRvIFRlZ3JhIGtlcm5lbCBEUk0gc2VydmljZXMKK1ZlcnNpb246IEBQQUNL QUdFX1ZFUlNJT05ACitMaWJzOiAtTCR7bGliZGlyfSAtbGRybV90ZWdyYQorQ2ZsYWdzOiAtSSR7 aW5jbHVkZWRpcn0gLUkke2luY2x1ZGVkaXJ9L2xpYmRybQorUmVxdWlyZXMucHJpdmF0ZTogbGli ZHJtCmRpZmYgLS1naXQgYS90ZWdyYS9wcml2YXRlLmggYi90ZWdyYS9wcml2YXRlLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYzY5Mjk1YzJjZjgKLS0tIC9kZXYv bnVsbAorKysgYi90ZWdyYS9wcml2YXRlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDEyLCAyMDEzIFRoaWVycnkgUmVkaW5nCisgKiBDb3B5cmlnaHQgwqkgMjAxMyBF cmlrIEZheWUtTHVuZAorICogQ29weXJpZ2h0IMKpIDIwMTQgTlZJRElBIENvcnBvcmF0aW9uCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhP TERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IK KyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfX0RSTV9URUdSQV9QUklWQVRFX0hfXworI2Rl ZmluZSBfX0RSTV9URUdSQV9QUklWQVRFX0hfXyAxCisKKyNpbmNsdWRlIDxzdGRib29sLmg+Cisj aW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlIDx4Zjg2YXRvbWljLmg+CisKKyNpbmNsdWRl ICJ0ZWdyYS5oIgorCisjaWYgZGVmaW5lZChIQVZFX1ZJU0lCSUxJVFkpCisjICBkZWZpbmUgZHJt X3ByaXZhdGUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQorIyAgZGVmaW5l IGRybV9wdWJsaWMgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbHNl CisjICBkZWZpbmUgZHJtX3ByaXZhdGUKKyMgIGRlZmluZSBkcm1fcHVibGljCisjZW5kaWYKKwor c3RydWN0IGRybV90ZWdyYSB7CisJYm9vbCBjbG9zZTsKKwlpbnQgZmQ7Cit9OworCitzdHJ1Y3Qg ZHJtX3RlZ3JhX2JvIHsKKwlzdHJ1Y3QgZHJtX3RlZ3JhICpkcm07CisJdWludDMyX3QgaGFuZGxl OworCXVpbnQzMl90IG9mZnNldDsKKwl1aW50MzJfdCBmbGFnczsKKwl1aW50MzJfdCBzaXplOwor CWF0b21pY190IHJlZjsKKwl2b2lkICptYXA7Cit9OworCisjZW5kaWYgLyogX19EUk1fVEVHUkFf UFJJVkFURV9IX18gKi8KZGlmZiAtLWdpdCBhL3RlZ3JhL3RlZ3JhLmMgYi90ZWdyYS90ZWdyYS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGM0OGFlN2MzMGExCi0t LSAvZGV2L251bGwKKysrIGIvdGVncmEvdGVncmEuYwpAQCAtMCwwICsxLDI1MyBAQAorLyoKKyAq IENvcHlyaWdodCDCqSAyMDEyLCAyMDEzIFRoaWVycnkgUmVkaW5nCisgKiBDb3B5cmlnaHQgwqkg MjAxMyBFcmlrIEZheWUtTHVuZAorICogQ29weXJpZ2h0IMKpIDIwMTQgTlZJRElBIENvcnBvcmF0 aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJ R0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgIGluY2x1 ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZj bnRsLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorCisj aW5jbHVkZSA8eGY4NmRybS5oPgorCisjaW5jbHVkZSA8dGVncmFfZHJtLmg+CisKKyNpbmNsdWRl ICJwcml2YXRlLmgiCisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRlZ3JhX2JvICp0ZWdyYV9ibyhz dHJ1Y3QgZHJtX3RlZ3JhX2JvICpibykKK3sKKwlyZXR1cm4gKHN0cnVjdCB0ZWdyYV9ibyAqKWJv OworfQorCitzdGF0aWMgdm9pZCBkcm1fdGVncmFfYm9fZnJlZShzdHJ1Y3QgZHJtX3RlZ3JhX2Jv ICpibykKK3sKKwlzdHJ1Y3QgZHJtX3RlZ3JhICpkcm0gPSBiby0+ZHJtOworCXN0cnVjdCBkcm1f Z2VtX2Nsb3NlIGFyZ3M7CisKKwlpZiAoYm8tPm1hcCkKKwkJbXVubWFwKGJvLT5tYXAsIGJvLT5z aXplKTsKKworCW1lbXNldCgmYXJncywgMCwgc2l6ZW9mKGFyZ3MpKTsKKwlhcmdzLmhhbmRsZSA9 IGJvLT5oYW5kbGU7CisKKwlkcm1Jb2N0bChkcm0tPmZkLCBEUk1fSU9DVExfR0VNX0NMT1NFLCAm YXJncyk7CisKKwlmcmVlKGJvKTsKK30KKworc3RhdGljIGludCBkcm1fdGVncmFfd3JhcChzdHJ1 Y3QgZHJtX3RlZ3JhICoqZHJtcCwgaW50IGZkLCBib29sIGNsb3NlKQoreworCXN0cnVjdCBkcm1f dGVncmEgKmRybTsKKwlpbnQgZXJyOworCisJaWYgKGZkIDwgMCB8fCAhZHJtcCkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlkcm0gPSBjYWxsb2MoMSwgc2l6ZW9mKCpkcm0pKTsKKwlpZiAoIWRybSkK KwkJcmV0dXJuIC1FTk9NRU07CisKKwlkcm0tPmNsb3NlID0gY2xvc2U7CisJZHJtLT5mZCA9IGZk OworCisJKmRybXAgPSBkcm07CisKKwlyZXR1cm4gMDsKK30KKworZHJtX3B1YmxpYworaW50IGRy bV90ZWdyYV9uZXcoc3RydWN0IGRybV90ZWdyYSAqKmRybXAsIGludCBmZCkKK3sKKwlib29sIHN1 cHBvcnRlZCA9IGZhbHNlOworCWRybVZlcnNpb25QdHIgdmVyc2lvbjsKKworCXZlcnNpb24gPSBk cm1HZXRWZXJzaW9uKGZkKTsKKwlpZiAoIXZlcnNpb24pCisJCXJldHVybiAtRU5PTUVNOworCisJ aWYgKCFzdHJuY21wKHZlcnNpb24tPm5hbWUsICJ0ZWdyYSIsIHZlcnNpb24tPm5hbWVfbGVuKSkK KwkJc3VwcG9ydGVkID0gdHJ1ZTsKKworCWRybUZyZWVWZXJzaW9uKHZlcnNpb24pOworCisJaWYg KCFzdXBwb3J0ZWQpCisJCXJldHVybiAtRU5PVFNVUDsKKworCXJldHVybiBkcm1fdGVncmFfd3Jh cChkcm1wLCBmZCwgZmFsc2UpOworfQorCitkcm1fcHVibGljCit2b2lkIGRybV90ZWdyYV9jbG9z ZShzdHJ1Y3QgZHJtX3RlZ3JhICpkcm0pCit7CisJaWYgKCFkcm0pCisJCXJldHVybjsKKworCWlm IChkcm0tPmNsb3NlKQorCQljbG9zZShkcm0tPmZkKTsKKworCWZyZWUoZHJtKTsKK30KKworZHJt X3B1YmxpYworaW50IGRybV90ZWdyYV9ib19uZXcoc3RydWN0IGRybV90ZWdyYV9ibyAqKmJvcCwg c3RydWN0IGRybV90ZWdyYSAqZHJtLAorCQkgICAgIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCBz aXplKQoreworCXN0cnVjdCBkcm1fdGVncmFfZ2VtX2NyZWF0ZSBhcmdzOworCXN0cnVjdCBkcm1f dGVncmFfYm8gKmJvOworCWludCBlcnI7CisKKwlpZiAoIWRybSB8fCBzaXplID09IDAgfHwgIWJv cCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlibyA9IGNhbGxvYygxLCBzaXplb2YoKmJvKSk7CisJ aWYgKCFibykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlhdG9taWNfc2V0KCZiby0+cmVmLCAxKTsK Kwliby0+ZmxhZ3MgPSBmbGFnczsKKwliby0+c2l6ZSA9IHNpemU7CisJYm8tPmRybSA9IGRybTsK KworCW1lbXNldCgmYXJncywgMCwgc2l6ZW9mKGFyZ3MpKTsKKwlhcmdzLmZsYWdzID0gZmxhZ3M7 CisJYXJncy5zaXplID0gc2l6ZTsKKworCWVyciA9IGRybUNvbW1hbmRXcml0ZVJlYWQoZHJtLT5m ZCwgRFJNX1RFR1JBX0dFTV9DUkVBVEUsICZhcmdzLAorCQkJCSAgc2l6ZW9mKGFyZ3MpKTsKKwlp ZiAoZXJyIDwgMCkgeworCQllcnIgPSAtZXJybm87CisJCWZyZWUoYm8pOworCQlyZXR1cm4gZXJy OworCX0KKworCWJvLT5oYW5kbGUgPSBhcmdzLmhhbmRsZTsKKworCSpib3AgPSBibzsKKworCXJl dHVybiAwOworfQorCitkcm1fcHVibGljCitpbnQgZHJtX3RlZ3JhX2JvX3dyYXAoc3RydWN0IGRy bV90ZWdyYV9ibyAqKmJvcCwgc3RydWN0IGRybV90ZWdyYSAqZHJtLAorCQkgICAgICB1aW50MzJf dCBoYW5kbGUsIHVpbnQzMl90IGZsYWdzLCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX3Rl Z3JhX2JvICpibzsKKworCWlmICghZHJtIHx8ICFib3ApCisJCXJldHVybiAtRUlOVkFMOworCisJ Ym8gPSBjYWxsb2MoMSwgc2l6ZW9mKCpibykpOworCWlmICghYm8pCisJCXJldHVybiAtRU5PTUVN OworCisJYXRvbWljX3NldCgmYm8tPnJlZiwgMSk7CisJYm8tPmhhbmRsZSA9IGhhbmRsZTsKKwli by0+ZmxhZ3MgPSBmbGFnczsKKwliby0+c2l6ZSA9IHNpemU7CisJYm8tPmRybSA9IGRybTsKKwor CSpib3AgPSBibzsKKworCXJldHVybiAwOworfQorCitkcm1fcHVibGljCitzdHJ1Y3QgZHJtX3Rl Z3JhX2JvICpkcm1fdGVncmFfYm9fZ2V0KHN0cnVjdCBkcm1fdGVncmFfYm8gKmJvKQoreworCWlm IChibykKKwkJYXRvbWljX2luYygmYm8tPnJlZik7CisKKwlyZXR1cm4gYm87Cit9CisKK2RybV9w dWJsaWMKK3ZvaWQgZHJtX3RlZ3JhX2JvX3B1dChzdHJ1Y3QgZHJtX3RlZ3JhX2JvICpibykKK3sK KwlpZiAoYm8gJiYgYXRvbWljX2RlY19hbmRfdGVzdCgmYm8tPnJlZikpCisJCWRybV90ZWdyYV9i b19mcmVlKGJvKTsKK30KKworZHJtX3B1YmxpYworaW50IGRybV90ZWdyYV9ib19nZXRfaGFuZGxl KHN0cnVjdCBkcm1fdGVncmFfYm8gKmJvLCB1aW50MzJfdCAqaGFuZGxlKQoreworCWlmICghYm8g fHwgIWhhbmRsZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkqaGFuZGxlID0gYm8tPmhhbmRsZTsK KworCXJldHVybiAwOworfQorCitkcm1fcHVibGljCitpbnQgZHJtX3RlZ3JhX2JvX21hcChzdHJ1 Y3QgZHJtX3RlZ3JhX2JvICpibywgdm9pZCAqKnB0cikKK3sKKwlzdHJ1Y3QgZHJtX3RlZ3JhICpk cm0gPSBiby0+ZHJtOworCisJaWYgKCFiby0+bWFwKSB7CisJCXN0cnVjdCBkcm1fdGVncmFfZ2Vt X21tYXAgYXJnczsKKwkJaW50IGVycjsKKworCQltZW1zZXQoJmFyZ3MsIDAsIHNpemVvZihhcmdz KSk7CisJCWFyZ3MuaGFuZGxlID0gYm8tPmhhbmRsZTsKKworCQllcnIgPSBkcm1Db21tYW5kV3Jp dGVSZWFkKGRybS0+ZmQsIERSTV9URUdSQV9HRU1fTU1BUCwgJmFyZ3MsCisJCQkJCSAgc2l6ZW9m KGFyZ3MpKTsKKwkJaWYgKGVyciA8IDApCisJCQlyZXR1cm4gLWVycm5vOworCisJCWJvLT5vZmZz ZXQgPSBhcmdzLm9mZnNldDsKKworCQliby0+bWFwID0gbW1hcCgwLCBiby0+c2l6ZSwgUFJPVF9S RUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwKKwkJCSAgICAgICBkcm0tPmZkLCBiby0+b2Zm c2V0KTsKKwkJaWYgKGJvLT5tYXAgPT0gTUFQX0ZBSUxFRCkgeworCQkJYm8tPm1hcCA9IE5VTEw7 CisJCQlyZXR1cm4gLWVycm5vOworCQl9CisJfQorCisJaWYgKHB0cikKKwkJKnB0ciA9IGJvLT5t YXA7CisKKwlyZXR1cm4gMDsKK30KKworZHJtX3B1YmxpYworaW50IGRybV90ZWdyYV9ib191bm1h cChzdHJ1Y3QgZHJtX3RlZ3JhX2JvICpibykKK3sKKwlpZiAoIWJvKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCWlmICghYm8tPm1hcCkKKwkJcmV0dXJuIDA7CisKKwlpZiAobXVubWFwKGJvLT5tYXAs IGJvLT5zaXplKSkKKwkJcmV0dXJuIC1lcnJubzsKKworCWJvLT5tYXAgPSBOVUxMOworCisJcmV0 dXJuIDA7Cit9CmRpZmYgLS1naXQgYS90ZWdyYS90ZWdyYS5oIGIvdGVncmEvdGVncmEuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3MzFjYjNiZDRkYwotLS0gL2Rl di9udWxsCisrKyBiL3RlZ3JhL3RlZ3JhLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDEyLCAyMDEzIFRoaWVycnkgUmVkaW5nCisgKiBDb3B5cmlnaHQgwqkgMjAxMyBF cmlrIEZheWUtTHVuZAorICogQ29weXJpZ2h0IMKpIDIwMTQgTlZJRElBIENvcnBvcmF0aW9uCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhP TERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IK KyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfX0RSTV9URUdSQV9IX18KKyNkZWZpbmUgX19E Uk1fVEVHUkFfSF9fIDEKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o PgorCitzdHJ1Y3QgZHJtX3RlZ3JhX2JvOworc3RydWN0IGRybV90ZWdyYTsKKworaW50IGRybV90 ZWdyYV9uZXcoc3RydWN0IGRybV90ZWdyYSAqKmRybXAsIGludCBmZCk7Cit2b2lkIGRybV90ZWdy YV9jbG9zZShzdHJ1Y3QgZHJtX3RlZ3JhICpkcm0pOworCitpbnQgZHJtX3RlZ3JhX2JvX25ldyhz dHJ1Y3QgZHJtX3RlZ3JhX2JvICoqYm9wLCBzdHJ1Y3QgZHJtX3RlZ3JhICpkcm0sCisJCSAgICAg dWludDMyX3QgZmxhZ3MsIHVpbnQzMl90IHNpemUpOworaW50IGRybV90ZWdyYV9ib193cmFwKHN0 cnVjdCBkcm1fdGVncmFfYm8gKipib3AsIHN0cnVjdCBkcm1fdGVncmEgKmRybSwKKwkJICAgICAg dWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBmbGFncywgdWludDMyX3Qgc2l6ZSk7CitzdHJ1Y3Qg ZHJtX3RlZ3JhX2JvICpkcm1fdGVncmFfYm9fZ2V0KHN0cnVjdCBkcm1fdGVncmFfYm8gKmJvKTsK K3ZvaWQgZHJtX3RlZ3JhX2JvX3B1dChzdHJ1Y3QgZHJtX3RlZ3JhX2JvICpibyk7CitpbnQgZHJt X3RlZ3JhX2JvX2dldF9oYW5kbGUoc3RydWN0IGRybV90ZWdyYV9ibyAqYm8sIHVpbnQzMl90ICpo YW5kbGUpOworaW50IGRybV90ZWdyYV9ib19tYXAoc3RydWN0IGRybV90ZWdyYV9ibyAqYm8sIHZv aWQgKipwdHIpOworaW50IGRybV90ZWdyYV9ib191bm1hcChzdHJ1Y3QgZHJtX3RlZ3JhX2JvICpi byk7CisKKyNlbmRpZiAvKiBfX0RSTV9URUdSQV9IX18gKi8KZGlmZiAtLWdpdCBhL3Rlc3RzL21v ZGV0ZXN0L21vZGV0ZXN0LmMgYi90ZXN0cy9tb2RldGVzdC9tb2RldGVzdC5jCmluZGV4IGJjOWM5 OTg4ZGVjNy4uNDIxMjk2M2Y4ZmYwIDEwMDY0NAotLS0gYS90ZXN0cy9tb2RldGVzdC9tb2RldGVz dC5jCisrKyBiL3Rlc3RzL21vZGV0ZXN0L21vZGV0ZXN0LmMKQEAgLTEzODYsNyArMTM4Niw3IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpbnQgZW5jb2RlcnMgPSAwLCBjb25u ZWN0b3JzID0gMCwgY3J0Y3MgPSAwLCBwbGFuZXMgPSAwLCBmcmFtZWJ1ZmZlcnMgPSAwOwogCWlu dCBkcm9wX21hc3RlciA9IDA7CiAJaW50IHRlc3RfdnN5bmMgPSAwOwotCWNvbnN0IGNoYXIgKm1v ZHVsZXNbXSA9IHsgImk5MTUiLCAicmFkZW9uIiwgIm5vdXZlYXUiLCAidm13Z2Z4IiwgIm9tYXBk cm0iLCAiZXh5bm9zIiwgInRpbGNkYyIsICJtc20iIH07CisJY29uc3QgY2hhciAqbW9kdWxlc1td ID0geyAiaTkxNSIsICJyYWRlb24iLCAibm91dmVhdSIsICJ2bXdnZngiLCAib21hcGRybSIsICJl eHlub3MiLCAidGlsY2RjIiwgIm1zbSIsICJ0ZWdyYSIgfTsKIAljaGFyICpkZXZpY2UgPSBOVUxM OwogCWNoYXIgKm1vZHVsZSA9IE5VTEw7CiAJdW5zaWduZWQgaW50IGk7CmRpZmYgLS1naXQgYS90 ZXN0cy92Ymx0ZXN0L3ZibHRlc3QuYyBiL3Rlc3RzL3ZibHRlc3QvdmJsdGVzdC5jCmluZGV4IDJh MDlkMjhlZDAwYS4uZTRiMjAwYmYwYzNjIDEwMDY0NAotLS0gYS90ZXN0cy92Ymx0ZXN0L3ZibHRl c3QuYworKysgYi90ZXN0cy92Ymx0ZXN0L3ZibHRlc3QuYwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0 YXRpYyB2b2lkIHVzYWdlKGNoYXIgKm5hbWUpCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiB7CiAJaW50IGksIGMsIGZkLCByZXQ7Ci0JY2hhciAqbW9kdWxlc1tdID0geyAiaTkxNSIs ICJyYWRlb24iLCAibm91dmVhdSIsICJ2bXdnZngiLCAiZXh5bm9zIiwgIm9tYXBkcm0iLCAidGls Y2RjIiwgIm1zbSIgfTsKKwljaGFyICptb2R1bGVzW10gPSB7ICJpOTE1IiwgInJhZGVvbiIsICJu b3V2ZWF1IiwgInZtd2dmeCIsICJleHlub3MiLCAib21hcGRybSIsICJ0aWxjZGMiLCAibXNtIiwg InRlZ3JhIiB9OwogCWRybVZCbGFuayB2Ymw7CiAJZHJtRXZlbnRDb250ZXh0IGV2Y3R4OwogCXN0 cnVjdCB2YmxfaW5mbyBoYW5kbGVyX2luZm87Ci0tIAoxLjguNC4yCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=