Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp172765pxa; Fri, 14 Aug 2020 00:15:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyucSsZ7z0Kg9Y17aDE/NuM3XdgkJ3SJLX/R7Ha5nwHjmlZvIlbGDtsNZg/z05W4ft2MEyG X-Received: by 2002:a17:906:e251:: with SMTP id gq17mr1112420ejb.445.1597389328150; Fri, 14 Aug 2020 00:15:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597389328; cv=none; d=google.com; s=arc-20160816; b=nomnAdRgqOViAmfMjwbdxYn8+XlwpN4NrwymzHMWkCF/WCgEkbW1B1TgWc6CTsvQl+ 6Q2o0I8y/oHLuluD8zgTyHZ+dMAsmwIZkSkd4JmtjrAORbFsFelzlEyiX6Awafv64Kh6 3Y6/aPrdYAoWa69Yq5muA0na/qK3px/TPN/FBemsVxkic2iwe0SLoZ8yply000mI4b5u MwzNQCeyqoq03z0cVAm4LDEVwnCsAhECUpDFBKkM/NpQDGr/JhwtKY8yJPMkN401a8NS Pkeyu0kmJy5z+v9KvesfJGX+Brk+jrndam1WRi3wYv7KE3UEviDQ2ZKb+IZwuoxhTUSs vuUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=rKRkfrldeTMdwzNxOIDH+OtOLPDraRIgEh2l5wXR8XI=; b=PVl1YxFk0U9id43xkW/IFcmsRKK5sFmSDTE+VnSsEsI3HuTG6vYceyqg6IJmoHW+Cg iAONkuMBqoB0OnxDw4+uEA3bdFqmuM114HctK4q2TceBnD9t+7mHxmo5EPuooCgYFrZj 7RgfoteJSN+orl90B0T1sgQzmO23OF0UdjQzRuWt88FpYhAW6CCQjNwywyUyyhF1LRaI 7HrE8TK6NlcjPGsZB3sY1enqU7gQK449KiNe7B8QDq4Jg3cKZ5rConKc+Ambk9itzL89 /z3oX7UOx/vI3+WMVGXxg289Ga5gDqyoKkmm29u8xZ2BNTD2Pxj+3WLIGEWipBfcfkvn dw4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=usmyEwpG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j13si4907045edp.43.2020.08.14.00.15.04; Fri, 14 Aug 2020 00:15:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=usmyEwpG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727021AbgHNHN4 (ORCPT + 99 others); Fri, 14 Aug 2020 03:13:56 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:59726 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726948AbgHNHNy (ORCPT ); Fri, 14 Aug 2020 03:13:54 -0400 X-UUID: 75354ea3529d4befae598a7dc95f8385-20200814 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=rKRkfrldeTMdwzNxOIDH+OtOLPDraRIgEh2l5wXR8XI=; b=usmyEwpGekLTSUlgy4wqiWjn0ClhZhGllF4q9eh1daeypUfj9z0ifDdv9RtbwlwiQun1vb6V5s8sWv8qeD3xSI5wAcfeoDDmxFx2yDd7ikAgWhmIcACbJPmdbP8VCkn9NToy+rSM4wcf7cjF8LKWuV9qVnwpZB4G68vnliaMmck=; X-UUID: 75354ea3529d4befae598a7dc95f8385-20200814 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 210501686; Fri, 14 Aug 2020 15:13:41 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 14 Aug 2020 15:13:38 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 14 Aug 2020 15:13:37 +0800 From: Xia Jiang To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Rick Chang CC: , , , , , Marek Szyprowski , Tomasz Figa , , , , , , Xia Jiang Subject: [PATCH v12 29/29] media: platform: Add jpeg enc feature Date: Fri, 14 Aug 2020 15:12:02 +0800 Message-ID: <20200814071202.25067-31-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200814071202.25067-1-xia.jiang@mediatek.com> References: <20200814071202.25067-1-xia.jiang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QWRkIG10ayBqcGVnIGVuY29kZSB2NGwyIGRyaXZlciBiYXNlZCBvbiBqcGVnIGRlY29kZSwgYmVj YXVzZSB0aGF0IGpwZWcNCmRlY29kZSBhbmQgZW5jb2RlIGhhdmUgZ3JlYXQgc2ltaWxhcml0aWVz IHdpdGggZnVuY3Rpb24gb3BlcmF0aW9uLg0KDQpSZXZpZXdlZC1ieTogVG9tYXN6IEZpZ2EgPHRm aWdhQGNocm9taXVtLm9yZz4NClNpZ25lZC1vZmYtYnk6IFhpYSBKaWFuZyA8eGlhLmppYW5nQG1l ZGlhdGVrLmNvbT4NCi0tLQ0KdjEyOiBmaXggdGhlIGNvbXBpbGUgd2FybmluZ3MNCi0tLQ0KIGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUgICAgICB8ICAgNSArLQ0KIC4u Li9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMgICB8IDM1MCArKysrKysr KysrKysrKysrKy0NCiAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5o ICAgfCAgMTUgKw0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcu YyB8IDE1NCArKysrKysrKw0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19l bmNfaHcuaCB8ICA5MSArKysrKw0KIDUgZmlsZXMgY2hhbmdlZCwgNjExIGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuaA0KDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZSBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUNCmluZGV4IDQ4NTE2ZGNmOTZlNi4uNzZjMzNh YWQwZjNmIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtl ZmlsZQ0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZQ0KQEAg LTEsMyArMSw2IEBADQogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQot bXRrX2pwZWctb2JqcyA6PSBtdGtfanBlZ19jb3JlLm8gbXRrX2pwZWdfZGVjX2h3Lm8gbXRrX2pw ZWdfZGVjX3BhcnNlLm8NCittdGtfanBlZy1vYmpzIDo9IG10a19qcGVnX2NvcmUubyBcDQorCQkg bXRrX2pwZWdfZGVjX2h3Lm8gXA0KKwkJIG10a19qcGVnX2RlY19wYXJzZS5vIFwNCisJCSBtdGtf anBlZ19lbmNfaHcubw0KIG9iai0kKENPTkZJR19WSURFT19NRURJQVRFS19KUEVHKSArPSBtdGtf anBlZy5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtf anBlZ19jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2Nv cmUuYw0KaW5kZXggM2Q5NWM3ZjBhMjJkLi44ZDZkMzI0YWIxMTMgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYw0KKysrIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCkBAIC0zLDYgKzMsNyBA QA0KICAqIENvcHlyaWdodCAoYykgMjAxNiBNZWRpYVRlayBJbmMuDQogICogQXV0aG9yOiBNaW5n IEhzaXUgVHNhaSA8bWluZ2hzaXUudHNhaUBtZWRpYXRlay5jb20+DQogICogICAgICAgICBSaWNr IENoYW5nIDxyaWNrLmNoYW5nQG1lZGlhdGVrLmNvbT4NCisgKiAgICAgICAgIFhpYSBKaWFuZyA8 eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4NCiAgKi8NCiANCiAjaW5jbHVkZSA8bGludXgvY2xrLmg+ DQpAQCAtMjMsMTAgKzI0LDU5IEBADQogI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1kbWEtY29u dGlnLmg+DQogI2luY2x1ZGUgPHNvYy9tZWRpYXRlay9zbWkuaD4NCiANCisjaW5jbHVkZSAibXRr X2pwZWdfZW5jX2h3LmgiDQogI2luY2x1ZGUgIm10a19qcGVnX2RlY19ody5oIg0KICNpbmNsdWRl ICJtdGtfanBlZ19jb3JlLmgiDQogI2luY2x1ZGUgIm10a19qcGVnX2RlY19wYXJzZS5oIg0KIA0K K3N0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfZm10IG10a19qcGVnX2VuY19mb3JtYXRzW10gPSB7DQor CXsNCisJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX0pQRUcsDQorCQkuY29scGxhbmVzCT0gMSwN CisJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19DQVBUVVJFLA0KKwl9LA0KKwl7DQorCQku Zm91cmNjCQk9IFY0TDJfUElYX0ZNVF9OVjEyTSwNCisJCS5od19mb3JtYXQJPSBKUEVHX0VOQ19Z VVZfRk9STUFUX05WMTIsDQorCQkuaF9zYW1wbGUJPSB7NCwgNH0sDQorCQkudl9zYW1wbGUJPSB7 NCwgMn0sDQorCQkuY29scGxhbmVzCT0gMiwNCisJCS5oX2FsaWduCT0gNCwNCisJCS52X2FsaWdu CT0gNCwNCisJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19PVVRQVVQsDQorCX0sDQorCXsN CisJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX05WMjFNLA0KKwkJLmh3X2Zvcm1hdAk9IEpFUEdf RU5DX1lVVl9GT1JNQVRfTlYyMSwNCisJCS5oX3NhbXBsZQk9IHs0LCA0fSwNCisJCS52X3NhbXBs ZQk9IHs0LCAyfSwNCisJCS5jb2xwbGFuZXMJPSAyLA0KKwkJLmhfYWxpZ24JPSA0LA0KKwkJLnZf YWxpZ24JPSA0LA0KKwkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX09VVFBVVCwNCisJfSwN CisJew0KKwkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfWVVZViwNCisJCS5od19mb3JtYXQJPSBK UEVHX0VOQ19ZVVZfRk9STUFUX1lVWVYsDQorCQkuaF9zYW1wbGUJPSB7OH0sDQorCQkudl9zYW1w bGUJPSB7NH0sDQorCQkuY29scGxhbmVzCT0gMSwNCisJCS5oX2FsaWduCT0gNSwNCisJCS52X2Fs aWduCT0gMywNCisJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19PVVRQVVQsDQorCX0sDQor CXsNCisJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1lWWVUsDQorCQkuaHdfZm9ybWF0CT0gSlBF R19FTkNfWVVWX0ZPUk1BVF9ZVllVLA0KKwkJLmhfc2FtcGxlCT0gezh9LA0KKwkJLnZfc2FtcGxl CT0gezR9LA0KKwkJLmNvbHBsYW5lcwk9IDEsDQorCQkuaF9hbGlnbgk9IDUsDQorCQkudl9hbGln bgk9IDMsDQorCQkuZmxhZ3MJCT0gTVRLX0pQRUdfRk1UX0ZMQUdfT1VUUFVULA0KKwl9LA0KK307 DQorDQogc3RhdGljIHN0cnVjdCBtdGtfanBlZ19mbXQgbXRrX2pwZWdfZGVjX2Zvcm1hdHNbXSA9 IHsNCiAJew0KIAkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfSlBFRywNCkBAIC01Myw2ICsxMDMs NyBAQCBzdGF0aWMgc3RydWN0IG10a19qcGVnX2ZtdCBtdGtfanBlZ19kZWNfZm9ybWF0c1tdID0g ew0KIAl9LA0KIH07DQogDQorI2RlZmluZSBNVEtfSlBFR19FTkNfTlVNX0ZPUk1BVFMgQVJSQVlf U0laRShtdGtfanBlZ19lbmNfZm9ybWF0cykNCiAjZGVmaW5lIE1US19KUEVHX0RFQ19OVU1fRk9S TUFUUyBBUlJBWV9TSVpFKG10a19qcGVnX2RlY19mb3JtYXRzKQ0KIA0KIHN0cnVjdCBtdGtfanBl Z19zcmNfYnVmIHsNCkBAIC02NCw2ICsxMTUsMTEgQEAgc3RydWN0IG10a19qcGVnX3NyY19idWYg ew0KIHN0YXRpYyBpbnQgZGVidWc7DQogbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDA2NDQpOw0K IA0KK3N0YXRpYyBpbmxpbmUgc3RydWN0IG10a19qcGVnX2N0eCAqY3RybF90b19jdHgoc3RydWN0 IHY0bDJfY3RybCAqY3RybCkNCit7DQorCXJldHVybiBjb250YWluZXJfb2YoY3RybC0+aGFuZGxl ciwgc3RydWN0IG10a19qcGVnX2N0eCwgY3RybF9oZGwpOw0KK30NCisNCiBzdGF0aWMgaW5saW5l IHN0cnVjdCBtdGtfanBlZ19jdHggKm10a19qcGVnX2ZoX3RvX2N0eChzdHJ1Y3QgdjRsMl9maCAq ZmgpDQogew0KIAlyZXR1cm4gY29udGFpbmVyX29mKGZoLCBzdHJ1Y3QgbXRrX2pwZWdfY3R4LCBm aCk7DQpAQCAtODgsNiArMTQ0LDUzIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfcXVlcnljYXAoc3Ry dWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCXJldHVybiAwOw0KIH0NCiANCitzdGF0aWMg aW50IHZpZGlvY19qcGVnX2VuY19zX2N0cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCkNCit7DQor CXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IGN0cmxfdG9fY3R4KGN0cmwpOw0KKw0KKwlzd2l0 Y2ggKGN0cmwtPmlkKSB7DQorCWNhc2UgVjRMMl9DSURfSlBFR19SRVNUQVJUX0lOVEVSVkFMOg0K KwkJY3R4LT5yZXN0YXJ0X2ludGVydmFsID0gY3RybC0+dmFsOw0KKwkJYnJlYWs7DQorCWNhc2Ug VjRMMl9DSURfSlBFR19DT01QUkVTU0lPTl9RVUFMSVRZOg0KKwkJY3R4LT5lbmNfcXVhbGl0eSA9 IGN0cmwtPnZhbDsNCisJCWJyZWFrOw0KKwljYXNlIFY0TDJfQ0lEX0pQRUdfQUNUSVZFX01BUktF UjoNCisJCWN0eC0+ZW5hYmxlX2V4aWYgPSBjdHJsLT52YWwgJiBWNEwyX0pQRUdfQUNUSVZFX01B UktFUl9BUFAxOw0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRp YyBjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX29wcyBtdGtfanBlZ19lbmNfY3RybF9vcHMgPSB7DQor CS5zX2N0cmwgPSB2aWRpb2NfanBlZ19lbmNfc19jdHJsLA0KK307DQorDQorc3RhdGljIGludCBt dGtfanBlZ19lbmNfY3RybHNfc2V0dXAoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0KK3sNCisJ Y29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgKm9wcyA9ICZtdGtfanBlZ19lbmNfY3RybF9vcHM7 DQorCXN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlciAqaGFuZGxlciA9ICZjdHgtPmN0cmxfaGRsOw0K Kw0KKwl2NGwyX2N0cmxfaGFuZGxlcl9pbml0KGhhbmRsZXIsIDMpOw0KKw0KKwl2NGwyX2N0cmxf bmV3X3N0ZChoYW5kbGVyLCBvcHMsIFY0TDJfQ0lEX0pQRUdfUkVTVEFSVF9JTlRFUlZBTCwgMCwg MTAwLA0KKwkJCSAgMSwgMCk7DQorCXY0bDJfY3RybF9uZXdfc3RkKGhhbmRsZXIsIG9wcywgVjRM Ml9DSURfSlBFR19DT01QUkVTU0lPTl9RVUFMSVRZLCA0OCwNCisJCQkgIDEwMCwgMSwgOTApOw0K Kwl2NGwyX2N0cmxfbmV3X3N0ZChoYW5kbGVyLCBvcHMsIFY0TDJfQ0lEX0pQRUdfQUNUSVZFX01B UktFUiwgMCwNCisJCQkgIFY0TDJfSlBFR19BQ1RJVkVfTUFSS0VSX0FQUDEsIDAsIDApOw0KKw0K KwlpZiAoaGFuZGxlci0+ZXJyb3IpIHsNCisJCXY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJmN0eC0+ Y3RybF9oZGwpOw0KKwkJcmV0dXJuIGhhbmRsZXItPmVycm9yOw0KKwl9DQorDQorCXY0bDJfY3Ry bF9oYW5kbGVyX3NldHVwKCZjdHgtPmN0cmxfaGRsKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0K IHN0YXRpYyBpbnQgbXRrX2pwZWdfZW51bV9mbXQoc3RydWN0IG10a19qcGVnX2ZtdCAqbXRrX2pw ZWdfZm9ybWF0cywgaW50IG4sDQogCQkJICAgICBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmLCB1MzIg dHlwZSkNCiB7DQpAQCAtMzMxLDYgKzQzNCw4IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfc19mbXRf bXBsYW5lKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJCQkJCSAgIHBpeF9tcC0+cGl4ZWxm b3JtYXQsIGZtdF90eXBlKTsNCiAJcV9kYXRhLT5waXhfbXAud2lkdGggPSBwaXhfbXAtPndpZHRo Ow0KIAlxX2RhdGEtPnBpeF9tcC5oZWlnaHQgPSBwaXhfbXAtPmhlaWdodDsNCisJcV9kYXRhLT5l bmNfY3JvcF9yZWN0LndpZHRoID0gcGl4X21wLT53aWR0aDsNCisJcV9kYXRhLT5lbmNfY3JvcF9y ZWN0LmhlaWdodCA9IHBpeF9tcC0+aGVpZ2h0Ow0KIAlxX2RhdGEtPnBpeF9tcC5jb2xvcnNwYWNl ID0gVjRMMl9DT0xPUlNQQUNFX1NSR0I7DQogCXFfZGF0YS0+cGl4X21wLnljYmNyX2VuYyA9IFY0 TDJfWUNCQ1JfRU5DXzYwMTsNCiAJcV9kYXRhLT5waXhfbXAueGZlcl9mdW5jID0gVjRMMl9YRkVS X0ZVTkNfU1JHQjsNCkBAIC00MDcsNiArNTEyLDMxIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfc3Vi c2NyaWJlX2V2ZW50KHN0cnVjdCB2NGwyX2ZoICpmaCwNCiAJcmV0dXJuIHY0bDJfY3RybF9zdWJz Y3JpYmVfZXZlbnQoZmgsIHN1Yik7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX2df c2VsZWN0aW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KKwkJCQkgICAgc3RydWN0 IHY0bDJfc2VsZWN0aW9uICpzKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gbXRr X2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KKw0KKwlpZiAocy0+dHlwZSAhPSBWNEwyX0JVRl9UWVBF X1ZJREVPX09VVFBVVCkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlzd2l0Y2ggKHMtPnRhcmdl dCkgew0KKwljYXNlIFY0TDJfU0VMX1RHVF9DUk9QOg0KKwkJcy0+ciA9IGN0eC0+b3V0X3EuZW5j X2Nyb3BfcmVjdDsNCisJCWJyZWFrOw0KKwljYXNlIFY0TDJfU0VMX1RHVF9DUk9QX0JPVU5EUzoN CisJY2FzZSBWNEwyX1NFTF9UR1RfQ1JPUF9ERUZBVUxUOg0KKwkJcy0+ci53aWR0aCA9IGN0eC0+ b3V0X3EucGl4X21wLndpZHRoOw0KKwkJcy0+ci5oZWlnaHQgPSBjdHgtPm91dF9xLnBpeF9tcC5o ZWlnaHQ7DQorCQlzLT5yLmxlZnQgPSAwOw0KKwkJcy0+ci50b3AgPSAwOw0KKwkJYnJlYWs7DQor CWRlZmF1bHQ6DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQog c3RhdGljIGludCBtdGtfanBlZ19kZWNfZ19zZWxlY3Rpb24oc3RydWN0IGZpbGUgKmZpbGUsIHZv aWQgKnByaXYsDQogCQkJCSAgICBzdHJ1Y3QgdjRsMl9zZWxlY3Rpb24gKnMpDQogew0KQEAgLTQz Niw2ICs1NjYsNTYgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfZ19zZWxlY3Rpb24oc3RydWN0 IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCXJldHVybiAwOw0KIH0NCiANCitzdGF0aWMgaW50 IG10a19qcGVnX2VuY19zX3NlbGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwN CisJCQkJICAgIHN0cnVjdCB2NGwyX3NlbGVjdGlvbiAqcykNCit7DQorCXN0cnVjdCBtdGtfanBl Z19jdHggKmN0eCA9IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCisNCisJaWYgKHMtPnR5cGUg IT0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJ c3dpdGNoIChzLT50YXJnZXQpIHsNCisJY2FzZSBWNEwyX1NFTF9UR1RfQ1JPUDoNCisJCXMtPnIu bGVmdCA9IDA7DQorCQlzLT5yLnRvcCA9IDA7DQorCQlzLT5yLndpZHRoID0gbWluKHMtPnIud2lk dGgsIGN0eC0+b3V0X3EucGl4X21wLndpZHRoKTsNCisJCXMtPnIuaGVpZ2h0ID0gbWluKHMtPnIu aGVpZ2h0LCBjdHgtPm91dF9xLnBpeF9tcC5oZWlnaHQpOw0KKwkJY3R4LT5vdXRfcS5lbmNfY3Jv cF9yZWN0ID0gcy0+cjsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJcmV0dXJuIC1FSU5WQUw7 DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9p b2N0bF9vcHMgbXRrX2pwZWdfZW5jX2lvY3RsX29wcyA9IHsNCisJLnZpZGlvY19xdWVyeWNhcCAg ICAgICAgICAgICAgICA9IG10a19qcGVnX3F1ZXJ5Y2FwLA0KKwkudmlkaW9jX2VudW1fZm10X3Zp ZF9jYXAJPSBtdGtfanBlZ19lbnVtX2ZtdF92aWRfY2FwLA0KKwkudmlkaW9jX2VudW1fZm10X3Zp ZF9vdXQJPSBtdGtfanBlZ19lbnVtX2ZtdF92aWRfb3V0LA0KKwkudmlkaW9jX3RyeV9mbXRfdmlk X2NhcF9tcGxhbmUJPSBtdGtfanBlZ190cnlfZm10X3ZpZF9jYXBfbXBsYW5lLA0KKwkudmlkaW9j X3RyeV9mbXRfdmlkX291dF9tcGxhbmUJPSBtdGtfanBlZ190cnlfZm10X3ZpZF9vdXRfbXBsYW5l LA0KKwkudmlkaW9jX2dfZm10X3ZpZF9jYXBfbXBsYW5lICAgID0gbXRrX2pwZWdfZ19mbXRfdmlk X21wbGFuZSwNCisJLnZpZGlvY19nX2ZtdF92aWRfb3V0X21wbGFuZSAgICA9IG10a19qcGVnX2df Zm10X3ZpZF9tcGxhbmUsDQorCS52aWRpb2Nfc19mbXRfdmlkX2NhcF9tcGxhbmUgICAgPSBtdGtf anBlZ19zX2ZtdF92aWRfY2FwX21wbGFuZSwNCisJLnZpZGlvY19zX2ZtdF92aWRfb3V0X21wbGFu ZSAgICA9IG10a19qcGVnX3NfZm10X3ZpZF9vdXRfbXBsYW5lLA0KKwkudmlkaW9jX3FidWYgICAg ICAgICAgICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfcWJ1ZiwNCisJLnZpZGlvY19zdWJzY3Jp YmVfZXZlbnQgICAgICAgICA9IG10a19qcGVnX3N1YnNjcmliZV9ldmVudCwNCisJLnZpZGlvY19n X3NlbGVjdGlvbgkJPSBtdGtfanBlZ19lbmNfZ19zZWxlY3Rpb24sDQorCS52aWRpb2Nfc19zZWxl Y3Rpb24JCT0gbXRrX2pwZWdfZW5jX3Nfc2VsZWN0aW9uLA0KKw0KKwkudmlkaW9jX2NyZWF0ZV9i dWZzCQk9IHY0bDJfbTJtX2lvY3RsX2NyZWF0ZV9idWZzLA0KKwkudmlkaW9jX3ByZXBhcmVfYnVm CQk9IHY0bDJfbTJtX2lvY3RsX3ByZXBhcmVfYnVmLA0KKwkudmlkaW9jX3JlcWJ1ZnMgICAgICAg ICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfcmVxYnVmcywNCisJLnZpZGlvY19xdWVyeWJ1ZiAg ICAgICAgICAgICAgICA9IHY0bDJfbTJtX2lvY3RsX3F1ZXJ5YnVmLA0KKwkudmlkaW9jX2RxYnVm ICAgICAgICAgICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfZHFidWYsDQorCS52aWRpb2NfZXhw YnVmICAgICAgICAgICAgICAgICAgPSB2NGwyX20ybV9pb2N0bF9leHBidWYsDQorCS52aWRpb2Nf c3RyZWFtb24gICAgICAgICAgICAgICAgPSB2NGwyX20ybV9pb2N0bF9zdHJlYW1vbiwNCisJLnZp ZGlvY19zdHJlYW1vZmYgICAgICAgICAgICAgICA9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9mZiwN CisNCisJLnZpZGlvY191bnN1YnNjcmliZV9ldmVudAk9IHY0bDJfZXZlbnRfdW5zdWJzY3JpYmUs DQorfTsNCisNCiBzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIG10a19qcGVnX2Rl Y19pb2N0bF9vcHMgPSB7DQogCS52aWRpb2NfcXVlcnljYXAgICAgICAgICAgICAgICAgPSBtdGtf anBlZ19xdWVyeWNhcCwNCiAJLnZpZGlvY19lbnVtX2ZtdF92aWRfY2FwCT0gbXRrX2pwZWdfZW51 bV9mbXRfdmlkX2NhcCwNCkBAIC01MDEsMTUgKzY4MSwyMiBAQCBzdGF0aWMgaW50IG10a19qcGVn X2J1Zl9wcmVwYXJlKHN0cnVjdCB2YjJfYnVmZmVyICp2YikNCiB7DQogCXN0cnVjdCBtdGtfanBl Z19jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYodmItPnZiMl9xdWV1ZSk7DQogCXN0cnVjdCBt dGtfanBlZ19xX2RhdGEgKnFfZGF0YSA9IE5VTEw7DQorCXN0cnVjdCB2NGwyX3BsYW5lX3BpeF9m b3JtYXQgcGxhbmVfZm10ID0ge307DQogCWludCBpOw0KIA0KIAlxX2RhdGEgPSBtdGtfanBlZ19n ZXRfcV9kYXRhKGN0eCwgdmItPnZiMl9xdWV1ZS0+dHlwZSk7DQogCWlmICghcV9kYXRhKQ0KIAkJ cmV0dXJuIC1FSU5WQUw7DQogDQotCWZvciAoaSA9IDA7IGkgPCBxX2RhdGEtPmZtdC0+Y29scGxh bmVzOyBpKyspDQotCQl2YjJfc2V0X3BsYW5lX3BheWxvYWQodmIsIGksDQotCQkJCSAgICAgIHFf ZGF0YS0+cGl4X21wLnBsYW5lX2ZtdFtpXS5zaXplaW1hZ2UpOw0KKwlmb3IgKGkgPSAwOyBpIDwg cV9kYXRhLT5mbXQtPmNvbHBsYW5lczsgaSsrKSB7DQorCQlwbGFuZV9mbXQgPSBxX2RhdGEtPnBp eF9tcC5wbGFuZV9mbXRbaV07DQorCQlpZiAoY3R4LT5lbmFibGVfZXhpZiAmJg0KKwkJICAgIHFf ZGF0YS0+Zm10LT5mb3VyY2MgPT0gVjRMMl9QSVhfRk1UX0pQRUcpDQorCQkJdmIyX3NldF9wbGFu ZV9wYXlsb2FkKHZiLCBpLCBwbGFuZV9mbXQuc2l6ZWltYWdlICsNCisJCQkJCSAgICAgIE1US19K UEVHX01BWF9FWElGX1NJWkUpOw0KKwkJZWxzZQ0KKwkJCXZiMl9zZXRfcGxhbmVfcGF5bG9hZCh2 YiwgaSwgIHBsYW5lX2ZtdC5zaXplaW1hZ2UpOw0KKwl9DQogDQogCXJldHVybiAwOw0KIH0NCkBA IC01NzIsNiArNzU5LDE3IEBAIHN0YXRpYyB2b2lkIG10a19qcGVnX3NldF9xdWV1ZV9kYXRhKHN0 cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJCSBwYXJhbS0+ZGVjX3csIHBhcmFtLT5kZWNfaCk7 DQogfQ0KIA0KK3N0YXRpYyB2b2lkIG10a19qcGVnX2VuY19idWZfcXVldWUoc3RydWN0IHZiMl9i dWZmZXIgKnZiKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZf cHJpdih2Yi0+dmIyX3F1ZXVlKTsNCisJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9IGN0eC0+ anBlZzsNCisNCisJdjRsMl9kYmcoMiwgZGVidWcsICZqcGVnLT52NGwyX2RldiwgIiglZCkgYnVm X3EgaWQ9JWQsIHZiPSVwXG4iLA0KKwkJIHZiLT52YjJfcXVldWUtPnR5cGUsIHZiLT5pbmRleCwg dmIpOw0KKw0KKwl2NGwyX20ybV9idWZfcXVldWUoY3R4LT5maC5tMm1fY3R4LCB0b192YjJfdjRs Ml9idWZmZXIodmIpKTsNCit9DQorDQogc3RhdGljIHZvaWQgbXRrX2pwZWdfZGVjX2J1Zl9xdWV1 ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpDQogew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgg PSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52YjJfcXVldWUpOw0KQEAgLTYyMCw2ICs4MTgsMTUgQEAg c3RhdGljIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKm10a19qcGVnX2J1Zl9yZW1vdmUoc3RydWN0 IG10a19qcGVnX2N0eCAqY3R4LA0KIAkJcmV0dXJuIHY0bDJfbTJtX2RzdF9idWZfcmVtb3ZlKGN0 eC0+ZmgubTJtX2N0eCk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIG10a19qcGVnX2VuY19zdG9wX3N0 cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2N0eCAq Y3R4ID0gdmIyX2dldF9kcnZfcHJpdihxKTsNCisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqdmI7 DQorDQorCXdoaWxlICgodmIgPSBtdGtfanBlZ19idWZfcmVtb3ZlKGN0eCwgcS0+dHlwZSkpKQ0K KwkJdjRsMl9tMm1fYnVmX2RvbmUodmIsIFZCMl9CVUZfU1RBVEVfRVJST1IpOw0KK30NCisNCiBz dGF0aWMgdm9pZCBtdGtfanBlZ19kZWNfc3RvcF9zdHJlYW1pbmcoc3RydWN0IHZiMl9xdWV1ZSAq cSkNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYocSk7 DQpAQCAtNjU1LDYgKzg2MiwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZiMl9vcHMgbXRrX2pw ZWdfZGVjX3FvcHMgPSB7DQogCS5zdG9wX3N0cmVhbWluZyAgICAgPSBtdGtfanBlZ19kZWNfc3Rv cF9zdHJlYW1pbmcsDQogfTsNCiANCitzdGF0aWMgY29uc3Qgc3RydWN0IHZiMl9vcHMgbXRrX2pw ZWdfZW5jX3FvcHMgPSB7DQorCS5xdWV1ZV9zZXR1cCAgICAgICAgPSBtdGtfanBlZ19xdWV1ZV9z ZXR1cCwNCisJLmJ1Zl9wcmVwYXJlICAgICAgICA9IG10a19qcGVnX2J1Zl9wcmVwYXJlLA0KKwku YnVmX3F1ZXVlICAgICAgICAgID0gbXRrX2pwZWdfZW5jX2J1Zl9xdWV1ZSwNCisJLndhaXRfcHJl cGFyZSAgICAgICA9IHZiMl9vcHNfd2FpdF9wcmVwYXJlLA0KKwkud2FpdF9maW5pc2ggICAgICAg ID0gdmIyX29wc193YWl0X2ZpbmlzaCwNCisJLnN0b3Bfc3RyZWFtaW5nICAgICA9IG10a19qcGVn X2VuY19zdG9wX3N0cmVhbWluZywNCit9Ow0KKw0KIHN0YXRpYyB2b2lkIG10a19qcGVnX3NldF9k ZWNfc3JjKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJCQkJIHN0cnVjdCB2YjJfYnVmZmVy ICpzcmNfYnVmLA0KIAkJCQkgc3RydWN0IG10a19qcGVnX2JzICpicykNCkBAIC02OTIsNiArOTA4 LDQ4IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfc2V0X2RlY19kc3Qoc3RydWN0IG10a19qcGVnX2N0 eCAqY3R4LA0KIAlyZXR1cm4gMDsNCiB9DQogDQorc3RhdGljIHZvaWQgbXRrX2pwZWdfZW5jX2Rl dmljZV9ydW4odm9pZCAqcHJpdikNCit7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHBy aXY7DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBjdHgtPmpwZWc7DQorCXN0cnVjdCB2 YjJfdjRsMl9idWZmZXIgKnNyY19idWYsICpkc3RfYnVmOw0KKwllbnVtIHZiMl9idWZmZXJfc3Rh dGUgYnVmX3N0YXRlID0gVkIyX0JVRl9TVEFURV9FUlJPUjsNCisJdW5zaWduZWQgbG9uZyBmbGFn czsNCisJaW50IHJldDsNCisNCisJc3JjX2J1ZiA9IHY0bDJfbTJtX25leHRfc3JjX2J1ZihjdHgt PmZoLm0ybV9jdHgpOw0KKwlkc3RfYnVmID0gdjRsMl9tMm1fbmV4dF9kc3RfYnVmKGN0eC0+Zmgu bTJtX2N0eCk7DQorDQorCXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoanBlZy0+ZGV2KTsNCisJ aWYgKHJldCA8IDApDQorCQlnb3RvIGVuY19lbmQ7DQorDQorCXNjaGVkdWxlX2RlbGF5ZWRfd29y aygmanBlZy0+am9iX3RpbWVvdXRfd29yaywNCisJCQkgICAgICBtc2Vjc190b19qaWZmaWVzKE1U S19KUEVHX0hXX1RJTUVPVVRfTVNFQykpOw0KKw0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmanBlZy0+ aHdfbG9jaywgZmxhZ3MpOw0KKw0KKwkvKg0KKwkgKiBSZXNldHRpbmcgdGhlIGhhcmR3YXJlIGV2 ZXJ5IGZyYW1lIGlzIHRvIGVuc3VyZSB0aGF0IGFsbCB0aGUNCisJICogcmVnaXN0ZXJzIGFyZSBj bGVhcmVkLiBUaGlzIGlzIGEgaGFyZHdhcmUgcmVxdWlyZW1lbnQuDQorCSAqLw0KKwltdGtfanBl Z19lbmNfcmVzZXQoanBlZy0+cmVnX2Jhc2UpOw0KKw0KKwltdGtfanBlZ19zZXRfZW5jX3NyYyhj dHgsIGpwZWctPnJlZ19iYXNlLCAmc3JjX2J1Zi0+dmIyX2J1Zik7DQorCW10a19qcGVnX3NldF9l bmNfZHN0KGN0eCwganBlZy0+cmVnX2Jhc2UsICZkc3RfYnVmLT52YjJfYnVmKTsNCisJbXRrX2pw ZWdfc2V0X2VuY19wYXJhbXMoY3R4LCBqcGVnLT5yZWdfYmFzZSk7DQorCW10a19qcGVnX2VuY19z dGFydChqcGVnLT5yZWdfYmFzZSk7DQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmpwZWctPmh3 X2xvY2ssIGZsYWdzKTsNCisJcmV0dXJuOw0KKw0KK2VuY19lbmQ6DQorCXY0bDJfbTJtX3NyY19i dWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7DQorCXY0bDJfbTJtX2RzdF9idWZfcmVtb3ZlKGN0 eC0+ZmgubTJtX2N0eCk7DQorCXY0bDJfbTJtX2J1Zl9kb25lKHNyY19idWYsIGJ1Zl9zdGF0ZSk7 DQorCXY0bDJfbTJtX2J1Zl9kb25lKGRzdF9idWYsIGJ1Zl9zdGF0ZSk7DQorCXY0bDJfbTJtX2pv Yl9maW5pc2goanBlZy0+bTJtX2RldiwgY3R4LT5maC5tMm1fY3R4KTsNCit9DQorDQogc3RhdGlj IHZvaWQgbXRrX2pwZWdfZGVjX2RldmljZV9ydW4odm9pZCAqcHJpdikNCiB7DQogCXN0cnVjdCBt dGtfanBlZ19jdHggKmN0eCA9IHByaXY7DQpAQCAtNzUwLDYgKzEwMDgsMTAgQEAgc3RhdGljIGlu dCBtdGtfanBlZ19kZWNfam9iX3JlYWR5KHZvaWQgKnByaXYpDQogCXJldHVybiAoY3R4LT5zdGF0 ZSA9PSBNVEtfSlBFR19SVU5OSU5HKSA/IDEgOiAwOw0KIH0NCiANCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHY0bDJfbTJtX29wcyBtdGtfanBlZ19lbmNfbTJtX29wcyA9IHsNCisJLmRldmljZV9ydW4g PSBtdGtfanBlZ19lbmNfZGV2aWNlX3J1biwNCit9Ow0KKw0KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg djRsMl9tMm1fb3BzIG10a19qcGVnX2RlY19tMm1fb3BzID0gew0KIAkuZGV2aWNlX3J1biA9IG10 a19qcGVnX2RlY19kZXZpY2VfcnVuLA0KIAkuam9iX3JlYWR5ICA9IG10a19qcGVnX2RlY19qb2Jf cmVhZHksDQpAQCAtODEwLDYgKzEwNzIsNTQgQEAgc3RhdGljIHZvaWQgbXRrX2pwZWdfY2xrX29m ZihzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnKQ0KIAltdGtfc21pX2xhcmJfcHV0KGpwZWctPmxh cmIpOw0KIH0NCiANCitzdGF0aWMgaXJxcmV0dXJuX3QgbXRrX2pwZWdfZW5jX2RvbmUoc3RydWN0 IG10a19qcGVnX2RldiAqanBlZykNCit7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eDsNCisJ c3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjX2J1ZiwgKmRzdF9idWY7DQorCWVudW0gdmIyX2J1 ZmZlcl9zdGF0ZSBidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0VSUk9SOw0KKwl1MzIgcmVzdWx0 X3NpemU7DQorDQorCWN0eCA9IHY0bDJfbTJtX2dldF9jdXJyX3ByaXYoanBlZy0+bTJtX2Rldik7 DQorCWlmICghY3R4KSB7DQorCQl2NGwyX2VycigmanBlZy0+djRsMl9kZXYsICJDb250ZXh0IGlz IE5VTExcbiIpOw0KKwkJcmV0dXJuIElSUV9IQU5ETEVEOw0KKwl9DQorDQorCXNyY19idWYgPSB2 NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOw0KKwlkc3RfYnVmID0gdjRs Ml9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsNCisNCisJcmVzdWx0X3NpemUg PSBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZShqcGVnLT5yZWdfYmFzZSk7DQorCXZiMl9zZXRf cGxhbmVfcGF5bG9hZCgmZHN0X2J1Zi0+dmIyX2J1ZiwgMCwgcmVzdWx0X3NpemUpOw0KKw0KKwli dWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0RPTkU7DQorDQorCXY0bDJfbTJtX2J1Zl9kb25lKHNy Y19idWYsIGJ1Zl9zdGF0ZSk7DQorCXY0bDJfbTJtX2J1Zl9kb25lKGRzdF9idWYsIGJ1Zl9zdGF0 ZSk7DQorCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJtX2RldiwgY3R4LT5maC5tMm1fY3R4 KTsNCisJcG1fcnVudGltZV9wdXQoY3R4LT5qcGVnLT5kZXYpOw0KKwlyZXR1cm4gSVJRX0hBTkRM RUQ7DQorfQ0KKw0KK3N0YXRpYyBpcnFyZXR1cm5fdCBtdGtfanBlZ19lbmNfaXJxKGludCBpcnEs IHZvaWQgKnByaXYpDQorew0KKwlzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gcHJpdjsNCisJ dTMyIGlycV9zdGF0dXM7DQorCWlycXJldHVybl90IHJldCA9IElSUV9OT05FOw0KKw0KKwljYW5j ZWxfZGVsYXllZF93b3JrKCZqcGVnLT5qb2JfdGltZW91dF93b3JrKTsNCisNCisJaXJxX3N0YXR1 cyA9IHJlYWRsKGpwZWctPnJlZ19iYXNlICsgSlBFR19FTkNfSU5UX1NUUykgJg0KKwkJICAgICBK UEVHX0VOQ19JTlRfU1RBVFVTX01BU0tfQUxMSVJROw0KKwlpZiAoaXJxX3N0YXR1cykNCisJCXdy aXRlbCgwLCBqcGVnLT5yZWdfYmFzZSArIEpQRUdfRU5DX0lOVF9TVFMpOw0KKw0KKwlpZiAoIShp cnFfc3RhdHVzICYgSlBFR19FTkNfSU5UX1NUQVRVU19ET05FKSkNCisJCXJldHVybiByZXQ7DQor DQorCXJldCA9IG10a19qcGVnX2VuY19kb25lKGpwZWcpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisN CiBzdGF0aWMgaXJxcmV0dXJuX3QgbXRrX2pwZWdfZGVjX2lycShpbnQgaXJxLCB2b2lkICpwcml2 KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9IHByaXY7DQpAQCAtODYyLDYgKzEx NzIsNyBAQCBzdGF0aWMgdm9pZCBtdGtfanBlZ19zZXRfZGVmYXVsdF9wYXJhbXMoc3RydWN0IG10 a19qcGVnX2N0eCAqY3R4KQ0KIAlzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhICpxID0gJmN0eC0+b3V0 X3E7DQogCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBjdHgtPmpwZWc7DQogDQorCWN0eC0+ ZmguY3RybF9oYW5kbGVyID0gJmN0eC0+Y3RybF9oZGw7DQogCXEtPnBpeF9tcC5jb2xvcnNwYWNl ID0gVjRMMl9DT0xPUlNQQUNFX1NSR0I7DQogCXEtPnBpeF9tcC55Y2Jjcl9lbmMgPSBWNEwyX1lD QkNSX0VOQ182MDE7DQogCXEtPnBpeF9tcC5xdWFudGl6YXRpb24gPSBWNEwyX1FVQU5USVpBVElP Tl9GVUxMX1JBTkdFOw0KQEAgLTkxOCw2ICsxMjI5LDE1IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdf b3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCiAJCWdvdG8gZXJyb3I7DQogCX0NCiANCisJaWYgKGpw ZWctPnZhcmlhbnQtPmNhcF9xX2RlZmF1bHRfZm91cmNjID09IFY0TDJfUElYX0ZNVF9KUEVHKSB7 DQorCQlyZXQgPSBtdGtfanBlZ19lbmNfY3RybHNfc2V0dXAoY3R4KTsNCisJCWlmIChyZXQpIHsN CisJCQl2NGwyX2VycigmanBlZy0+djRsMl9kZXYsICJGYWlsZWQgdG8gc2V0dXAganBlZyBlbmMg Y29udHJvbHNcbiIpOw0KKwkJCWdvdG8gZXJyb3I7DQorCQl9DQorCX0gZWxzZSB7DQorCQl2NGwy X2N0cmxfaGFuZGxlcl9pbml0KCZjdHgtPmN0cmxfaGRsLCAwKTsNCisJfQ0KIAltdGtfanBlZ19z ZXRfZGVmYXVsdF9wYXJhbXMoY3R4KTsNCiAJbXV0ZXhfdW5sb2NrKCZqcGVnLT5sb2NrKTsNCiAJ cmV0dXJuIDA7DQpAQCAtOTM4LDYgKzEyNTgsNyBAQCBzdGF0aWMgaW50IG10a19qcGVnX3JlbGVh c2Uoc3RydWN0IGZpbGUgKmZpbGUpDQogDQogCW11dGV4X2xvY2soJmpwZWctPmxvY2spOw0KIAl2 NGwyX20ybV9jdHhfcmVsZWFzZShjdHgtPmZoLm0ybV9jdHgpOw0KKwl2NGwyX2N0cmxfaGFuZGxl cl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsNCiAJdjRsMl9maF9kZWwoJmN0eC0+ZmgpOw0KIAl2NGwy X2ZoX2V4aXQoJmN0eC0+ZmgpOw0KIAlrZnJlZShjdHgpOw0KQEAgLTk1OSw2ICsxMjgwLDEwIEBA IHN0YXRpYyBzdHJ1Y3QgY2xrX2J1bGtfZGF0YSBtdDgxNzNfanBlZ19kZWNfY2xvY2tzW10gPSB7 DQogCXsgLmlkID0gImpwZ2RlYyIgfSwNCiB9Ow0KIA0KK3N0YXRpYyBzdHJ1Y3QgY2xrX2J1bGtf ZGF0YSBtdGtfanBlZ19jbG9ja3NbXSA9IHsNCisJeyAuaWQgPSAianBnZW5jIiB9LA0KK307DQor DQogc3RhdGljIGludCBtdGtfanBlZ19jbGtfaW5pdChzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVn KQ0KIHsNCiAJc3RydWN0IGRldmljZV9ub2RlICpub2RlOw0KQEAgLTExOTAsNiArMTUxNSwyMSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19qcGVnX3ZhcmlhbnQgbXQ4MTczX2pwZWdfZHJ2ZGF0 YSA9IHsNCiAJLmNhcF9xX2RlZmF1bHRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1lVVjQyME0sDQog fTsNCiANCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19qcGVnX3ZhcmlhbnQgbXRrX2pwZWdfZHJ2 ZGF0YSA9IHsNCisJLmNsa3MgPSBtdGtfanBlZ19jbG9ja3MsDQorCS5udW1fY2xrcyA9IEFSUkFZ X1NJWkUobXRrX2pwZWdfY2xvY2tzKSwNCisJLmZvcm1hdHMgPSBtdGtfanBlZ19lbmNfZm9ybWF0 cywNCisJLm51bV9mb3JtYXRzID0gTVRLX0pQRUdfRU5DX05VTV9GT1JNQVRTLA0KKwkucW9wcyA9 ICZtdGtfanBlZ19lbmNfcW9wcywNCisJLmlycV9oYW5kbGVyID0gbXRrX2pwZWdfZW5jX2lycSwN CisJLmh3X3Jlc2V0ID0gbXRrX2pwZWdfZW5jX3Jlc2V0LA0KKwkubTJtX29wcyA9ICZtdGtfanBl Z19lbmNfbTJtX29wcywNCisJLmRldl9uYW1lID0gIm10ay1qcGVnLWVuYyIsDQorCS5pb2N0bF9v cHMgPSAmbXRrX2pwZWdfZW5jX2lvY3RsX29wcywNCisJLm91dF9xX2RlZmF1bHRfZm91cmNjID0g VjRMMl9QSVhfRk1UX1lVWVYsDQorCS5jYXBfcV9kZWZhdWx0X2ZvdXJjYyA9IFY0TDJfUElYX0ZN VF9KUEVHLA0KK307DQorDQogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2pw ZWdfbWF0Y2hbXSA9IHsNCiAJew0KIAkJLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLWpw Z2RlYyIsDQpAQCAtMTE5OSw2ICsxNTM5LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIG10a19qcGVnX21hdGNoW10gPSB7DQogCQkuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxt dDI3MDEtanBnZGVjIiwNCiAJCS5kYXRhID0gJm10ODE3M19qcGVnX2RydmRhdGEsDQogCX0sDQor CXsNCisJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ay1qcGdlbmMiLA0KKwkJLmRhdGEgPSAm bXRrX2pwZWdfZHJ2ZGF0YSwNCisJfSwNCiAJe30sDQogfTsNCiANCmRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuaCBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5oDQppbmRleCBkMTFkMzY2YTI0N2Uu LjY4ZTYzNGYwMmUwMCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpw ZWcvbXRrX2pwZWdfY29yZS5oDQorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVn L210a19qcGVnX2NvcmUuaA0KQEAgLTMsNiArMyw3IEBADQogICogQ29weXJpZ2h0IChjKSAyMDE2 IE1lZGlhVGVrIEluYy4NCiAgKiBBdXRob3I6IE1pbmcgSHNpdSBUc2FpIDxtaW5naHNpdS50c2Fp QG1lZGlhdGVrLmNvbT4NCiAgKiAgICAgICAgIFJpY2sgQ2hhbmcgPHJpY2suY2hhbmdAbWVkaWF0 ZWsuY29tPg0KKyAqICAgICAgICAgWGlhIEppYW5nIDx4aWEuamlhbmdAbWVkaWF0ZWsuY29tPg0K ICAqLw0KIA0KICNpZm5kZWYgX01US19KUEVHX0NPUkVfSA0KQEAgLTI5LDYgKzMwLDggQEANCiAN CiAjZGVmaW5lIE1US19KUEVHX0hXX1RJTUVPVVRfTVNFQyAxMDAwDQogDQorI2RlZmluZSBNVEtf SlBFR19NQVhfRVhJRl9TSVpFCSg2NCAqIDEwMjQpDQorDQogLyoqDQogICogZW51bSBtdGtfanBl Z19jdHhfc3RhdGUgLSBzdGF0ZXMgb2YgdGhlIGNvbnRleHQgc3RhdGUgbWFjaGluZQ0KICAqIEBN VEtfSlBFR19JTklUOgkJY3VycmVudCBzdGF0ZSBpcyBpbml0aWFsaXplZA0KQEAgLTEwNCw2ICsx MDcsNyBAQCBzdHJ1Y3QgbXRrX2pwZWdfZGV2IHsNCiAvKioNCiAgKiBzdHJ1Y3QganBlZ19mbXQg LSBkcml2ZXIncyBpbnRlcm5hbCBjb2xvciBmb3JtYXQgZGF0YQ0KICAqIEBmb3VyY2M6CXRoZSBm b3VyY2MgY29kZSwgMCBpZiBub3QgYXBwbGljYWJsZQ0KKyAqIEBod19mb3JtYXQ6CWhhcmR3YXJl IGZvcm1hdCB2YWx1ZQ0KICAqIEBoX3NhbXBsZToJaG9yaXpvbnRhbCBzYW1wbGUgY291bnQgb2Yg cGxhbmUgaW4gNCAqIDQgcGl4ZWwgaW1hZ2UNCiAgKiBAdl9zYW1wbGU6CXZlcnRpY2FsIHNhbXBs ZSBjb3VudCBvZiBwbGFuZSBpbiA0ICogNCBwaXhlbCBpbWFnZQ0KICAqIEBjb2xwbGFuZXM6CW51 bWJlciBvZiBjb2xvciBwbGFuZXMgKDEgZm9yIHBhY2tlZCBmb3JtYXRzKQ0KQEAgLTExMyw2ICsx MTcsNyBAQCBzdHJ1Y3QgbXRrX2pwZWdfZGV2IHsNCiAgKi8NCiBzdHJ1Y3QgbXRrX2pwZWdfZm10 IHsNCiAJdTMyCWZvdXJjYzsNCisJdTMyCWh3X2Zvcm1hdDsNCiAJaW50CWhfc2FtcGxlW1ZJREVP X01BWF9QTEFORVNdOw0KIAlpbnQJdl9zYW1wbGVbVklERU9fTUFYX1BMQU5FU107DQogCWludAlj b2xwbGFuZXM7DQpAQCAtMTI1LDEwICsxMzAsMTIgQEAgc3RydWN0IG10a19qcGVnX2ZtdCB7DQog ICogbXRrX2pwZWdfcV9kYXRhIC0gcGFyYW1ldGVycyBvZiBvbmUgcXVldWUNCiAgKiBAZm10Ogkg IGRyaXZlci1zcGVjaWZpYyBmb3JtYXQgb2YgdGhpcyBxdWV1ZQ0KICAqIEBwaXhfbXA6CSAgbXVs dGlwbGFuYXIgZm9ybWF0DQorICogQGVuY19jcm9wX3JlY3Q6CWpwZWcgZW5jb2RlciBjcm9wIGlu Zm9ybWF0aW9uDQogICovDQogc3RydWN0IG10a19qcGVnX3FfZGF0YSB7DQogCXN0cnVjdCBtdGtf anBlZ19mbXQJKmZtdDsNCiAJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgcGl4X21wOw0K KwlzdHJ1Y3QgdjRsMl9yZWN0IGVuY19jcm9wX3JlY3Q7DQogfTsNCiANCiAvKioNCkBAIC0xMzgs NiArMTQ1LDEwIEBAIHN0cnVjdCBtdGtfanBlZ19xX2RhdGEgew0KICAqIEBjYXBfcToJCWRlc3Rp bmF0aW9uIChjYXB0dXJlKSBxdWV1ZSBxdWV1ZSBpbmZvcm1hdGlvbg0KICAqIEBmaDoJCQlWNEwy IGZpbGUgaGFuZGxlDQogICogQHN0YXRlOgkJc3RhdGUgb2YgdGhlIGNvbnRleHQNCisgKiBAZW5h YmxlX2V4aWY6CWVuYWJsZSBleGlmIG1vZGUgb2YganBlZyBlbmNvZGVyDQorICogQGVuY19xdWFs aXR5OglqcGVnIGVuY29kZXIgcXVhbGl0eQ0KKyAqIEByZXN0YXJ0X2ludGVydmFsOglqcGVnIGVu Y29kZXIgcmVzdGFydCBpbnRlcnZhbA0KKyAqIEBjdHJsX2hkbDoJCWNvbnRyb2xzIGhhbmRsZXIN CiAgKi8NCiBzdHJ1Y3QgbXRrX2pwZWdfY3R4IHsNCiAJc3RydWN0IG10a19qcGVnX2RldgkJKmpw ZWc7DQpAQCAtMTQ1LDYgKzE1NiwxMCBAQCBzdHJ1Y3QgbXRrX2pwZWdfY3R4IHsNCiAJc3RydWN0 IG10a19qcGVnX3FfZGF0YQkJY2FwX3E7DQogCXN0cnVjdCB2NGwyX2ZoCQkJZmg7DQogCWVudW0g bXRrX2pwZWdfY3R4X3N0YXRlCQlzdGF0ZTsNCisJYm9vbCBlbmFibGVfZXhpZjsNCisJdTggZW5j X3F1YWxpdHk7DQorCXU4IHJlc3RhcnRfaW50ZXJ2YWw7DQorCXN0cnVjdCB2NGwyX2N0cmxfaGFu ZGxlciBjdHJsX2hkbDsNCiB9Ow0KIA0KICNlbmRpZiAvKiBfTVRLX0pQRUdfQ09SRV9IICovDQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNf aHcuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjFjZjAzN2JmNzJkZA0K LS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtf anBlZ19lbmNfaHcuYw0KQEAgLTAsMCArMSwxNTQgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5DQorLyoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsg SW5jLg0KKyAqIEF1dGhvcjogWGlhIEppYW5nIDx4aWEuamlhbmdAbWVkaWF0ZWsuY29tPg0KKyAq DQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQorI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPg0KKyNpbmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItY29yZS5oPg0KKyNpbmNsdWRlIDxtZWRp YS92aWRlb2J1ZjItZG1hLWNvbnRpZy5oPg0KKw0KKyNpbmNsdWRlICJtdGtfanBlZ19lbmNfaHcu aCINCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19qcGVnX2VuY19xbHQgbXRrX2pwZWdfZW5j X3F1YWxpdHlbXSA9IHsNCisJey5xdWFsaXR5X3BhcmFtID0gMzQsIC5oYXJkd2FyZV92YWx1ZSA9 IEpQRUdfRU5DX1FVQUxJVFlfUTM0fSwNCisJey5xdWFsaXR5X3BhcmFtID0gMzksIC5oYXJkd2Fy ZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTM5fSwNCisJey5xdWFsaXR5X3BhcmFtID0gNDgs IC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTQ4fSwNCisJey5xdWFsaXR5X3Bh cmFtID0gNjAsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTYwfSwNCisJey5x dWFsaXR5X3BhcmFtID0gNjQsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTY0 fSwNCisJey5xdWFsaXR5X3BhcmFtID0gNjgsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FV QUxJVFlfUTY4fSwNCisJey5xdWFsaXR5X3BhcmFtID0gNzQsIC5oYXJkd2FyZV92YWx1ZSA9IEpQ RUdfRU5DX1FVQUxJVFlfUTc0fSwNCisJey5xdWFsaXR5X3BhcmFtID0gODAsIC5oYXJkd2FyZV92 YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTgwfSwNCisJey5xdWFsaXR5X3BhcmFtID0gODIsIC5o YXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTgyfSwNCisJey5xdWFsaXR5X3BhcmFt ID0gODQsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTg0fSwNCisJey5xdWFs aXR5X3BhcmFtID0gODcsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTg3fSwN CisJey5xdWFsaXR5X3BhcmFtID0gOTAsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJ VFlfUTkwfSwNCisJey5xdWFsaXR5X3BhcmFtID0gOTIsIC5oYXJkd2FyZV92YWx1ZSA9IEpQRUdf RU5DX1FVQUxJVFlfUTkyfSwNCisJey5xdWFsaXR5X3BhcmFtID0gOTUsIC5oYXJkd2FyZV92YWx1 ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTk1fSwNCisJey5xdWFsaXR5X3BhcmFtID0gOTcsIC5oYXJk d2FyZV92YWx1ZSA9IEpQRUdfRU5DX1FVQUxJVFlfUTk3fSwNCit9Ow0KKw0KK3ZvaWQgbXRrX2pw ZWdfZW5jX3Jlc2V0KHZvaWQgX19pb21lbSAqYmFzZSkNCit7DQorCXdyaXRlbCgwLCBiYXNlICsg SlBFR19FTkNfUlNUQik7DQorCXdyaXRlbChKUEVHX0VOQ19SRVNFVF9CSVQsIGJhc2UgKyBKUEVH X0VOQ19SU1RCKTsNCisJd3JpdGVsKDAsIGJhc2UgKyBKUEVHX0VOQ19DT0RFQ19TRUwpOw0KK30N CisNCit1MzIgbXRrX2pwZWdfZW5jX2dldF9maWxlX3NpemUodm9pZCBfX2lvbWVtICpiYXNlKQ0K K3sNCisJcmV0dXJuIHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19ETUFfQUREUjApIC0NCisJICAgICAg IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19EU1RfQUREUjApOw0KK30NCisNCit2b2lkIG10a19qcGVn X2VuY19zdGFydCh2b2lkIF9faW9tZW0gKmJhc2UpDQorew0KKwl1MzIgdmFsdWU7DQorDQorCXZh bHVlID0gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KKwl2YWx1ZSB8PSBKUEVHX0VOQ19D VFJMX0lOVF9FTl9CSVQgfCBKUEVHX0VOQ19DVFJMX0VOQUJMRV9CSVQ7DQorCXdyaXRlbCh2YWx1 ZSwgYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KK30NCisNCit2b2lkIG10a19qcGVnX3NldF9lbmNf c3JjKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgIHZvaWQgX19pb21lbSAqYmFzZSwNCisJCQkg IHN0cnVjdCB2YjJfYnVmZmVyICpzcmNfYnVmKQ0KK3sNCisJaW50IGk7DQorCWRtYV9hZGRyX3Qg ZG1hX2FkZHI7DQorDQorCWZvciAoaSA9IDA7IGkgPCBzcmNfYnVmLT5udW1fcGxhbmVzOyBpKysp IHsNCisJCWRtYV9hZGRyID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoc3JjX2J1Ziwg aSkgKw0KKwkJCSAgIHNyY19idWYtPnBsYW5lc1tpXS5kYXRhX29mZnNldDsNCisJCWlmICghaSkN CisJCQl3cml0ZWwoZG1hX2FkZHIsIGJhc2UgKyBKUEVHX0VOQ19TUkNfTFVNQV9BRERSKTsNCisJ CWVsc2UNCisJCQl3cml0ZWwoZG1hX2FkZHIsIGJhc2UgKyBKUEVHX0VOQ19TUkNfQ0hST01BX0FE RFIpOw0KKwl9DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdfc2V0X2VuY19kc3Qoc3RydWN0IG10a19q cGVnX2N0eCAqY3R4LCB2b2lkIF9faW9tZW0gKmJhc2UsDQorCQkJICBzdHJ1Y3QgdmIyX2J1ZmZl ciAqZHN0X2J1ZikNCit7DQorCWRtYV9hZGRyX3QgZG1hX2FkZHI7DQorCXNpemVfdCBzaXplOw0K Kwl1MzIgZG1hX2FkZHJfb2Zmc2V0Ow0KKwl1MzIgZG1hX2FkZHJfb2Zmc2V0bWFzazsNCisNCisJ ZG1hX2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcihkc3RfYnVmLCAwKTsNCisJ ZG1hX2FkZHJfb2Zmc2V0ID0gY3R4LT5lbmFibGVfZXhpZiA/IE1US19KUEVHX01BWF9FWElGX1NJ WkUgOiAwOw0KKwlkbWFfYWRkcl9vZmZzZXRtYXNrID0gZG1hX2FkZHIgJiBKUEVHX0VOQ19EU1Rf QUREUl9PRkZTRVRfTUFTSzsNCisJc2l6ZSA9IHZiMl9wbGFuZV9zaXplKGRzdF9idWYsIDApOw0K Kw0KKwl3cml0ZWwoZG1hX2FkZHJfb2Zmc2V0ICYgfjB4ZiwgYmFzZSArIEpQRUdfRU5DX09GRlNF VF9BRERSKTsNCisJd3JpdGVsKGRtYV9hZGRyX29mZnNldG1hc2sgJiAweGYsIGJhc2UgKyBKUEVH X0VOQ19CWVRFX09GRlNFVF9NQVNLKTsNCisJd3JpdGVsKGRtYV9hZGRyICYgfjB4ZiwgYmFzZSAr IEpQRUdfRU5DX0RTVF9BRERSMCk7DQorCXdyaXRlbCgoZG1hX2FkZHIgKyBzaXplKSAmIH4weGYs IGJhc2UgKyBKUEVHX0VOQ19TVEFMTF9BRERSMCk7DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdfc2V0 X2VuY19wYXJhbXMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCAgdm9pZCBfX2lvbWVtICpiYXNl KQ0KK3sNCisJdTMyIHZhbHVlOw0KKwl1MzIgd2lkdGggPSBjdHgtPm91dF9xLmVuY19jcm9wX3Jl Y3Qud2lkdGg7DQorCXUzMiBoZWlnaHQgPSBjdHgtPm91dF9xLmVuY19jcm9wX3JlY3QuaGVpZ2h0 Ow0KKwl1MzIgZW5jX2Zvcm1hdCA9IGN0eC0+b3V0X3EuZm10LT5mb3VyY2M7DQorCXUzMiBieXRl c3BlcmxpbmUgPSBjdHgtPm91dF9xLnBpeF9tcC5wbGFuZV9mbXRbMF0uYnl0ZXNwZXJsaW5lOw0K Kwl1MzIgYmxrX251bTsNCisJdTMyIGltZ19zdHJpZGU7DQorCXUzMiBtZW1fc3RyaWRlOw0KKwl1 MzIgaSwgZW5jX3F1YWxpdHk7DQorDQorCXZhbHVlID0gd2lkdGggPDwgMTYgfCBoZWlnaHQ7DQor CXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5DX0lNR19TSVpFKTsNCisNCisJaWYgKGVuY19m b3JtYXQgPT0gVjRMMl9QSVhfRk1UX05WMTJNIHx8DQorCSAgICBlbmNfZm9ybWF0ID09IFY0TDJf UElYX0ZNVF9OVjIxTSkNCisJICAgIC8qDQorCSAgICAgKiBUb3RhbCA4IHggOCBibG9jayBudW1i ZXIgb2YgbHVtYSBhbmQgY2hyb21hLg0KKwkgICAgICogVGhlIG51bWJlciBvZiBibG9ja3MgaXMg Y291bnRlZCBmcm9tIDAuDQorCSAgICAgKi8NCisJCWJsa19udW0gPSBESVZfUk9VTkRfVVAod2lk dGgsIDE2KSAqDQorCQkJICBESVZfUk9VTkRfVVAoaGVpZ2h0LCAxNikgKiA2IC0gMTsNCisJZWxz ZQ0KKwkJYmxrX251bSA9IERJVl9ST1VORF9VUCh3aWR0aCwgMTYpICoNCisJCQkgIERJVl9ST1VO RF9VUChoZWlnaHQsIDgpICogNCAtIDE7DQorCXdyaXRlbChibGtfbnVtLCBiYXNlICsgSlBFR19F TkNfQkxLX05VTSk7DQorDQorCWlmIChlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9OVjEyTSB8 fA0KKwkgICAgZW5jX2Zvcm1hdCA9PSBWNEwyX1BJWF9GTVRfTlYyMU0pIHsNCisJCS8qIDQ6Mjow ICovDQorCQlpbWdfc3RyaWRlID0gcm91bmRfdXAod2lkdGgsIDE2KTsNCisJCW1lbV9zdHJpZGUg PSBieXRlc3BlcmxpbmU7DQorCX0gZWxzZSB7DQorCQkvKiA0OjI6MiAqLw0KKwkJaW1nX3N0cmlk ZSA9IHJvdW5kX3VwKHdpZHRoICogMiwgMzIpOw0KKwkJbWVtX3N0cmlkZSA9IGltZ19zdHJpZGU7 DQorCX0NCisJd3JpdGVsKGltZ19zdHJpZGUsIGJhc2UgKyBKUEVHX0VOQ19JTUdfU1RSSURFKTsN CisJd3JpdGVsKG1lbV9zdHJpZGUsIGJhc2UgKyBKUEVHX0VOQ19TVFJJREUpOw0KKw0KKwllbmNf cXVhbGl0eSA9IG10a19qcGVnX2VuY19xdWFsaXR5WzBdLmhhcmR3YXJlX3ZhbHVlOw0KKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShtdGtfanBlZ19lbmNfcXVhbGl0eSk7IGkrKykgew0KKwkJ aWYgKGN0eC0+ZW5jX3F1YWxpdHkgPD0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbaV0ucXVhbGl0eV9w YXJhbSkgew0KKwkJCWVuY19xdWFsaXR5ID0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbaV0uaGFyZHdh cmVfdmFsdWU7DQorCQkJYnJlYWs7DQorCQl9DQorCX0NCisJd3JpdGVsKGVuY19xdWFsaXR5LCBi YXNlICsgSlBFR19FTkNfUVVBTElUWSk7DQorDQorCXZhbHVlID0gcmVhZGwoYmFzZSArIEpQRUdf RU5DX0NUUkwpOw0KKwl2YWx1ZSAmPSB+SlBFR19FTkNfQ1RSTF9ZVVZfRk9STUFUX01BU0s7DQor CXZhbHVlIHw9IChjdHgtPm91dF9xLmZtdC0+aHdfZm9ybWF0ICYgMykgPDwgMzsNCisJaWYgKGN0 eC0+ZW5hYmxlX2V4aWYpDQorCQl2YWx1ZSB8PSBKUEVHX0VOQ19DVFJMX0ZJTEVfRk9STUFUX0JJ VDsNCisJZWxzZQ0KKwkJdmFsdWUgJj0gfkpQRUdfRU5DX0NUUkxfRklMRV9GT1JNQVRfQklUOw0K KwlpZiAoY3R4LT5yZXN0YXJ0X2ludGVydmFsKQ0KKwkJdmFsdWUgfD0gSlBFR19FTkNfQ1RSTF9S RVNUQVJUX0VOX0JJVDsNCisJZWxzZQ0KKwkJdmFsdWUgJj0gfkpQRUdfRU5DX0NUUkxfUkVTVEFS VF9FTl9CSVQ7DQorCXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KKw0KKwl3 cml0ZWwoY3R4LT5yZXN0YXJ0X2ludGVydmFsLCBiYXNlICsgSlBFR19FTkNfUlNUX01DVV9OVU0p Ow0KK30NCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19q cGVnX2VuY19ody5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19l bmNfaHcuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uNjFjNjBl NGU1OGVhDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1q cGVnL210a19qcGVnX2VuY19ody5oDQpAQCAtMCwwICsxLDkxIEBADQorLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KKy8qDQorICogQ29weXJpZ2h0IChjKSAyMDE5 IE1lZGlhVGVrIEluYy4NCisgKiBBdXRob3I6IFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVr LmNvbT4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgX01US19KUEVHX0VOQ19IV19IDQorI2RlZmlu ZSBfTVRLX0pQRUdfRU5DX0hXX0gNCisNCisjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWNvcmUu aD4NCisNCisjaW5jbHVkZSAibXRrX2pwZWdfY29yZS5oIg0KKw0KKyNkZWZpbmUgSlBFR19FTkNf SU5UX1NUQVRVU19ET05FCUJJVCgwKQ0KKyNkZWZpbmUgSlBFR19FTkNfSU5UX1NUQVRVU19NQVNL X0FMTElSUQkweDEzDQorDQorI2RlZmluZSBKUEVHX0VOQ19EU1RfQUREUl9PRkZTRVRfTUFTSwlH RU5NQVNLKDMsIDApDQorDQorI2RlZmluZSBKUEVHX0VOQ19DVFJMX1lVVl9GT1JNQVRfTUFTSwkw eDE4DQorI2RlZmluZSBKUEVHX0VOQ19DVFJMX1JFU1RBUlRfRU5fQklUCUJJVCgxMCkNCisjZGVm aW5lIEpQRUdfRU5DX0NUUkxfRklMRV9GT1JNQVRfQklUCUJJVCg1KQ0KKyNkZWZpbmUgSlBFR19F TkNfQ1RSTF9JTlRfRU5fQklUCUJJVCgyKQ0KKyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9FTkFCTEVf QklUCUJJVCgwKQ0KKyNkZWZpbmUgSlBFR19FTkNfUkVTRVRfQklUCQlCSVQoMCkNCisNCisjZGVm aW5lIEpQRUdfRU5DX1lVVl9GT1JNQVRfWVVZVgkwDQorI2RlZmluZSBKUEVHX0VOQ19ZVVZfRk9S TUFUX1lWWVUJMQ0KKyNkZWZpbmUgSlBFR19FTkNfWVVWX0ZPUk1BVF9OVjEyCTINCisjZGVmaW5l IEpFUEdfRU5DX1lVVl9GT1JNQVRfTlYyMQkzDQorDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZ X1E2MAkJMHgwDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E4MAkJMHgxDQorI2RlZmluZSBK UEVHX0VOQ19RVUFMSVRZX1E5MAkJMHgyDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E5NQkJ MHgzDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1EzOQkJMHg0DQorI2RlZmluZSBKUEVHX0VO Q19RVUFMSVRZX1E2OAkJMHg1DQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E4NAkJMHg2DQor I2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E5MgkJMHg3DQorI2RlZmluZSBKUEVHX0VOQ19RVUFM SVRZX1E0OAkJMHg4DQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E3NAkJMHhhDQorI2RlZmlu ZSBKUEVHX0VOQ19RVUFMSVRZX1E4NwkJMHhiDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1Ez NAkJMHhjDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E2NAkJMHhlDQorI2RlZmluZSBKUEVH X0VOQ19RVUFMSVRZX1E4MgkJMHhmDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E5NwkJMHgx MA0KKw0KKyNkZWZpbmUgSlBFR19FTkNfUlNUQgkJCTB4MTAwDQorI2RlZmluZSBKUEVHX0VOQ19D VFJMCQkJMHgxMDQNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFkJCTB4MTA4DQorI2RlZmluZSBK UEVHX0VOQ19CTEtfTlVNCQkweDEwQw0KKyNkZWZpbmUgSlBFR19FTkNfQkxLX0NOVAkJMHgxMTAN CisjZGVmaW5lIEpQRUdfRU5DX0lOVF9TVFMJCTB4MTFjDQorI2RlZmluZSBKUEVHX0VOQ19EU1Rf QUREUjAJCTB4MTIwDQorI2RlZmluZSBKUEVHX0VOQ19ETUFfQUREUjAJCTB4MTI0DQorI2RlZmlu ZSBKUEVHX0VOQ19TVEFMTF9BRERSMAkJMHgxMjgNCisjZGVmaW5lIEpQRUdfRU5DX09GRlNFVF9B RERSCQkweDEzOA0KKyNkZWZpbmUgSlBFR19FTkNfUlNUX01DVV9OVU0JCTB4MTUwDQorI2RlZmlu ZSBKUEVHX0VOQ19JTUdfU0laRQkJMHgxNTQNCisjZGVmaW5lIEpQRUdfRU5DX0RFQlVHX0lORk8w CQkweDE2MA0KKyNkZWZpbmUgSlBFR19FTkNfREVCVUdfSU5GTzEJCTB4MTY0DQorI2RlZmluZSBK UEVHX0VOQ19UT1RBTF9DWUNMRQkJMHgxNjgNCisjZGVmaW5lIEpQRUdfRU5DX0JZVEVfT0ZGU0VU X01BU0sJMHgxNmMNCisjZGVmaW5lIEpQRUdfRU5DX1NSQ19MVU1BX0FERFIJCTB4MTcwDQorI2Rl ZmluZSBKUEVHX0VOQ19TUkNfQ0hST01BX0FERFIJMHgxNzQNCisjZGVmaW5lIEpQRUdfRU5DX1NU UklERQkJCTB4MTc4DQorI2RlZmluZSBKUEVHX0VOQ19JTUdfU1RSSURFCQkweDE3Yw0KKyNkZWZp bmUgSlBFR19FTkNfRENNX0NUUkwJCTB4MzAwDQorI2RlZmluZSBKUEVHX0VOQ19DT0RFQ19TRUwJ CTB4MzE0DQorI2RlZmluZSBKUEVHX0VOQ19VTFRSQV9USFJFUwkJMHgzMTgNCisNCisvKioNCisg KiBzdHJ1Y3QgbXRrX2pwZWdfZW5jX3FsdCAtIEpQRUcgZW5jb2RlciBxdWFsaXR5IGRhdGENCisg KiBAcXVhbGl0eV9wYXJhbToJcXVhbGl0eSB2YWx1ZQ0KKyAqIEBoYXJkd2FyZV92YWx1ZToJaGFy ZHdhcmUgdmFsdWUgb2YgcXVhbGl0eQ0KKyAqLw0KK3N0cnVjdCBtdGtfanBlZ19lbmNfcWx0IHsN CisJdTgJcXVhbGl0eV9wYXJhbTsNCisJdTgJaGFyZHdhcmVfdmFsdWU7DQorfTsNCisNCit2b2lk IG10a19qcGVnX2VuY19yZXNldCh2b2lkIF9faW9tZW0gKmJhc2UpOw0KK3UzMiBtdGtfanBlZ19l bmNfZ2V0X2ZpbGVfc2l6ZSh2b2lkIF9faW9tZW0gKmJhc2UpOw0KK3ZvaWQgbXRrX2pwZWdfZW5j X3N0YXJ0KHZvaWQgX19pb21lbSAqZW5jX3JlZ19iYXNlKTsNCit2b2lkIG10a19qcGVnX3NldF9l bmNfc3JjKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgIHZvaWQgX19pb21lbSAqYmFzZSwNCisJ CQkgIHN0cnVjdCB2YjJfYnVmZmVyICpzcmNfYnVmKTsNCit2b2lkIG10a19qcGVnX3NldF9lbmNf ZHN0KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgdm9pZCBfX2lvbWVtICpiYXNlLA0KKwkJCSAg c3RydWN0IHZiMl9idWZmZXIgKmRzdF9idWYpOw0KK3ZvaWQgbXRrX2pwZWdfc2V0X2VuY19wYXJh bXMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCAgdm9pZCBfX2lvbWVtICpiYXNlKTsNCisNCisj ZW5kaWYgLyogX01US19KUEVHX0VOQ19IV19IICovDQotLSANCjIuMTguMA0K