From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0AC0AC4332F for ; Tue, 31 Oct 2023 10:59:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Subject:Cc:To: From:Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=BuIiHd4JrE2ZrqOgc4RZj4MFAcpKWBbQ0vhXzbFOdrY=; b=V8bs2Oe1lCYXEA Uftb7qSN2Hc7UJdglF1vBNtmeQfYvkiaxujSfJ9tTpALlDHDLgyi0WLj72tj6LBDIcUPvTu+U1xoQ g/GQjp1Z8s9IYQ9pL2yH10XvEhzWo2seM2AQ2h5ca/4r4YFZdUDWXMRmSlFsgFqGu5we2qScEL4yM waYjTL0LpYXWQP+fi4F/BSXb/C5NXgmd0JIkbutBvG7w8PO3D0pHc0lsnU3vVUKgCzETB+6yg6nj5 xCjH+h9ixIDYx/S2OshKjUM2rdeDJPxnbAVguzAHFIbjGo8b5U/nqvoxDLQ6BrvgZlJQxjSP99Fdr gQlO294wgXV9BkaQdBHA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qxmSK-0057pl-0n; Tue, 31 Oct 2023 10:58:44 +0000 Received: from smtp.missinglinkelectronics.com ([162.55.135.183]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qxmSE-0057pN-34 for linux-arm-kernel@lists.infradead.org; Tue, 31 Oct 2023 10:58:42 +0000 Received: from localhost (localhost [127.0.0.1]) by smtp.missinglinkelectronics.com (Postfix) with ESMTP id A1EC020230; Tue, 31 Oct 2023 11:58:33 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at missinglinkelectronics.com Received: from smtp.missinglinkelectronics.com ([127.0.0.1]) by localhost (mail.missinglinkelectronics.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y36R_lier1a7; Tue, 31 Oct 2023 11:58:33 +0100 (CET) Received: from nucnuc.mle (ppp-88-217-64-136.dynamic.mnet-online.de [88.217.64.136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: david) by smtp.missinglinkelectronics.com (Postfix) with ESMTPSA id C2B0620028; Tue, 31 Oct 2023 11:58:32 +0100 (CET) Date: Tue, 31 Oct 2023 11:58:27 +0100 From: David Epping To: linux-arm-kernel@lists.infradead.org, Dinh Nguyen , Ley Foon Tan , Lorenzo Pieralisi Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, Bjorn Helgaas , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= Subject: arm: mach-socfpga: PCIe Root IO TLP support for Cyclone V Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231031_035839_318283_56497A60 X-CRM114-Status: GOOD ( 22.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGVsbG8gQVJNIFBDSWUgYW5kIGVzcGVjaWFsbHkgSW50ZWwgQWx0ZXJhIFNPQ0ZQR0EgbWFpbnRh aW5lcnMsCgp0aGUgSW50ZWwgQWx0ZXJhIEN5Y2xvbmUgViBQQ0llIFJvb3QgQ29tcGxleCBkcml2 ZXJzIGFmYWlrIGN1cnJlbnRseSBkb27igJl0IHN1cHBvcnQgc2VuZGluZyBJTyBUTFBzLgpUaGUg Um9vdCBDb21wbGV4IElQIENvcmUsIHNlZW1pbmdseSB1bmxpa2UgbWFueSBvdGhlciBBUk0gUm9v dCBDb21wbGV4ZXMsIGRvZXMgbm90IG9mZmVyIGEgbWVtb3J5IG1hcHBpbmcgZm9yIHRoZSBJTyBh ZGRyZXNzIHNwYWNlLCBidXQgaW5zdGVhZCByZWxpZXMgb24gaW5kaXJlY3QgYWRkcmVzc2luZyB2 aWEgYWRkcmVzcyBhbmQgZGF0YSByZWdpc3RlcnMuIFRvIG15IGtub3dsZWRnZSB0aGlzIElPIHNw YWNlIGFjY2VzcyBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgaW4gTGludXgsIHlldCwgYW5kIGlz IGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIFBDSWUgQ29uZmlndXJhdGlvbiBUTFBzIG9uIHRoaXMg aGFyZHdhcmUsIHdoaWNoIHVzZSB0aGUgc2FtZSBtZWNoYW5pc20uCgpUbyBzdXBwb3J0IGFuIEFY OTkxMDAgZW5kcG9pbnQgKHdoaWNoIHJlcXVpcmVzIElPIEJBUnMgZm9yIHNvbWUgb2YgaXRzIGZl YXR1cmVzKSBjb25uZWN0ZWQgdG8gYSBDeWNsb25lIFYgUENJZSByb290LCB3ZSBhZGRlZCBzdXBw b3J0IGZvciBJTyBUTFBzIHRvIEtlcm5lbHMgNC4xNCwgNS40LCBhbmQgNS4xNS4KRm9yIHlvdXIg cmVmZXJlbmNlIHRoZSA0LjE0IHBhdGNoZXMgYXJlIGF0dGFjaGVkLiBUaGV5IGRvIF9ub3RfIGFw cGx5IHRvIGN1cnJlbnQgbWFpbmxpbmUgTGludXggYW5kIGFyZSBtZWFudCB0byBnaXZlIHlvdSBh biBpZGVhIG9mIG91ciBjdXJyZW50IGFwcHJvYWNoLgpBcyB5b3UgY2FuIHNlZSwgaW4gb3JkZXIg dG8gaW1wbGVtZW50IG91ciBvd24gaW5iKCkgYW5kIG91dGIoKSBmYW1pbHkgb2YgZnVuY3Rpb25z LCB3ZSBoYWQgdG8gcmVtb3ZlIG11bHRpLXBsYXRmb3JtIHN1cHBvcnQgZm9yIEFSQ0hfU09DRlBH QS4KCkkgd291bGQgbGlrZSB0byBnZXQgc29tZSBmZWVkYmFjayBvbjoKYSkgQXJlIHlvdSBpbnRl cmVzdGVkIGluIGFkZGluZyBJTyBUTFAgc3VwcG9ydCBmb3IgdGhpcyBGUEdBL0NQVSB0byBtYWlu bGluZT8gV2Ugd291bGQgaW1wbGVtZW50IHBhdGNoZXMgZm9yIHRoZSBjdXJyZW50IG1haW5saW5l IGluIHRoYXQgY2FzZSBhbmQgcG9zdCB0aGVtIGZvciBkaXNjdXNzaW9uLgpiKSBEbyB5b3Ugc2Vl IGFuIG9wdGlvbiB0byBpbXBsZW1lbnQgdGhlIElPIHNwYWNlIGFjY2VzcyBmdW5jdGlvbnMgd2l0 aG91dCBkcm9wcGluZyBtdWx0aS1wbGF0Zm9ybSBzdXBwb3J0PyBJcyB0aGF0IGEgcHJlcmVxdWlz aXRlIGZvciBnb2luZyBtYWlubGluZT8KClRoYW5rcyBmb3IgeW91ciBjb21tZW50cywKRGF2aWQK CgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBFcHBpbmcgPGRhdmlkLmVwcGluZ0BtaXNzaW5nbGlua2Vs ZWN0cm9uaWNzLmNvbT4KLS0tCiBhcmNoL2FybS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMjggKysKIGFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWcgICAg ICAgICAgICB8ICAgMiAtCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvS2NvbmZpZyAgICAgICAgICAg ICAgICAgfCAgMTMgLQogYXJjaC9hcm0vbWFjaC1zb2NmcGdhL01ha2VmaWxlICAgICAgICAgICAg ICAgIHwgICAxICsKIGFyY2gvYXJtL21hY2gtc29jZnBnYS9NYWtlZmlsZS5ib290ICAgICAgICAg ICB8ICAgMSArCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2lvLmggICAgICAg fCAyNjkgKysrKysrKysrKysrKysrKysrCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9t YWNoL3BjaWUuaCAgICAgfCAgMjMgKysKIC4uLi9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL3Vu Y29tcHJlc3MuaCAgICB8ICAgOCArCiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvcGNpZS5jICAgICAg ICAgICAgICAgICAgfCAgMTcgKysKIGRyaXZlcnMvcGNpL2hvc3QvcGNpZS1hbHRlcmEuYyAgICAg ICAgICAgICAgICB8IDIzMCArKysrKysrKysrKysrKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDU3NCBp bnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bS9tYWNoLXNvY2ZwZ2EvTWFrZWZpbGUuYm9vdAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJt L21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvaW8uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gv YXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvcGNpZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC91bmNvbXByZXNzLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvcGNpZS5jCgpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vS2NvbmZpZyBiL2FyY2gvYXJtL0tjb25maWcKaW5kZXggMTMzMTI4Njc3ZDlkLi42MTM2 MzM3YzY5NDIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcKKysrIGIvYXJjaC9hcm0vS2Nv bmZpZwpAQCAtNjQ0LDYgKzY0NCwzNCBAQCBjb25maWcgQVJDSF9PTUFQMQogCWhlbHAKIAkgIFN1 cHBvcnQgZm9yIG9sZGVyIFRJIE9NQVAxIChvbWFwN3h4LCBvbWFwMTV4eCBvciBvbWFwMTZ4eCkK IAorY29uZmlnIEFSQ0hfU09DRlBHQQorCWJvb2wgIkFsdGVyYSBTT0NGUEdBIGZhbWlseSIKKwlk ZXBlbmRzIG9uIE1NVQorCXNlbGVjdCBBUk1fSEFTX1NHX0NIQUlOCisJc2VsZWN0IEFSTV9QQVRD SF9QSFlTX1ZJUlQKKwlzZWxlY3QgQVVUT19aUkVMQUREUgorCXNlbGVjdCBUSU1FUl9PRgorCXNl bGVjdCBDT01NT05fQ0xLCisJc2VsZWN0IEdFTkVSSUNfQ0xPQ0tFVkVOVFMKKwlzZWxlY3QgTUlH SFRfSEFWRV9QQ0kKKwlzZWxlY3QgTVVMVElfSVJRX0hBTkRMRVIKKwlzZWxlY3QgUENJX0RPTUFJ TlMgaWYgUENJCisJc2VsZWN0IFNQQVJTRV9JUlEKKwlzZWxlY3QgVVNFX09GCisJc2VsZWN0IE1J R0hUX0hBVkVfQ0FDSEVfTDJYMAorCXNlbGVjdCBDUFVfVjcKKwlzZWxlY3QgSEFWRV9TTVAKKwlz ZWxlY3QgQVJDSF9TVVBQT1JUU19CSUdfRU5ESUFOCisJc2VsZWN0IEFSTV9BTUJBCisJc2VsZWN0 IEFSTV9HSUMKKwlzZWxlY3QgQ0FDSEVfTDJYMAorCXNlbGVjdCBEV19BUEJfVElNRVJfT0YKKwlz ZWxlY3QgR1BJT19QTDA2MSBpZiBHUElPTElCCisJc2VsZWN0IEhBVkVfQVJNX1NDVQorCXNlbGVj dCBIQVZFX0FSTV9UV0QgaWYgU01QCisJc2VsZWN0IE1GRF9TWVNDT04KKwlzZWxlY3QgTkVFRF9N QUNIX0lPX0ggaWYgUENJCisKIGVuZGNob2ljZQogCiBtZW51ICJNdWx0aXBsZSBwbGF0Zm9ybSBz ZWxlY3Rpb24iCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmln IGIvYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZwppbmRleCAzNzFmY2E0ZTFhYjcu LmZjM2MwOTZmNjk1YyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNv bmZpZworKysgYi9hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnCkBAIC0yNCw3ICsy NCw2IEBAIENPTkZJR19QQ0lFX0FMVEVSQT15CiBDT05GSUdfUENJRV9BTFRFUkFfTVNJPXkKIENP TkZJR19TTVA9eQogQ09ORklHX05SX0NQVVM9MgotQ09ORklHX0FFQUJJPXkKIENPTkZJR19ISUdI TUVNPXkKIENPTkZJR19aQk9PVF9ST01fVEVYVD0weDAKIENPTkZJR19aQk9PVF9ST01fQlNTPTB4 MApAQCAtNjAsNyArNTksNiBAQCBDT05GSUdfTVREX1NQSV9OT1I9eQogIyBDT05GSUdfTVREX1NQ SV9OT1JfVVNFXzRLX1NFQ1RPUlMgaXMgbm90IHNldAogQ09ORklHX1NQSV9DQURFTkNFX1FVQURT UEk9eQogQ09ORklHX09GX09WRVJMQVk9eQotQ09ORklHX09GX0NPTkZJR0ZTPXkKIENPTkZJR19C TEtfREVWX1JBTT15CiBDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MgogQ09ORklHX0JMS19ERVZf UkFNX1NJWkU9ODE5MgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL0tjb25maWcg Yi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvS2NvbmZpZwppbmRleCBkMGY2MmVhY2Y1OWQuLmE1Mjhj ODMyZmZmMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL0tjb25maWcKKysrIGIv YXJjaC9hcm0vbWFjaC1zb2NmcGdhL0tjb25maWcKQEAgLTEsMTYgKzEsMyBAQAotbWVudWNvbmZp ZyBBUkNIX1NPQ0ZQR0EKLQlib29sICJBbHRlcmEgU09DRlBHQSBmYW1pbHkiCi0JZGVwZW5kcyBv biBBUkNIX01VTFRJX1Y3Ci0Jc2VsZWN0IEFSQ0hfU1VQUE9SVFNfQklHX0VORElBTgotCXNlbGVj dCBBUk1fQU1CQQotCXNlbGVjdCBBUk1fR0lDCi0Jc2VsZWN0IENBQ0hFX0wyWDAKLQlzZWxlY3Qg RFdfQVBCX1RJTUVSX09GCi0Jc2VsZWN0IEdQSU9fUEwwNjEgaWYgR1BJT0xJQgotCXNlbGVjdCBI QVZFX0FSTV9TQ1UKLQlzZWxlY3QgSEFWRV9BUk1fVFdEIGlmIFNNUAotCXNlbGVjdCBNRkRfU1lT Q09OCi0KIGlmIEFSQ0hfU09DRlBHQQogY29uZmlnIFNPQ0ZQR0FfU1VTUEVORAogCWJvb2wgIlN1 c3BlbmQgdG8gUkFNIG9uIFNPQ0ZQR0EiCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNvY2Zw Z2EvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvTWFrZWZpbGUKaW5kZXggOWVjMzFm YWQ3MTM2Li5kMWEwNjAxMDhhMDUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc29jZnBnYS9N YWtlZmlsZQorKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvTWFrZWZpbGUKQEAgLTQsNiArNCw3 IEBACiAjCiAKIG9iai15CQkJCQk6PSBzb2NmcGdhLm8KK29iai0kKENPTkZJR19QQ0kpCSs9IHBj aWUubwogb2JqLSQoQ09ORklHX1NNUCkJKz0gaGVhZHNtcC5vIHBsYXRzbXAubwogb2JqLSQoQ09O RklHX1NPQ0ZQR0FfU1VTUEVORCkJKz0gcG0ubyBzZWxmLXJlZnJlc2gubwogb2JqLSQoQ09ORklH X0VEQUNfQUxURVJBX0wyQykJKz0gbDJfY2FjaGUubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFj aC1zb2NmcGdhL01ha2VmaWxlLmJvb3QgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvTWFrZWZpbGUu Ym9vdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZkZmZhMmEwZmQ3 YgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9NYWtlZmlsZS5ib290 CkBAIC0wLDAgKzEgQEAKKyMgcGxhY2Vob2xkZXIKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gt c29jZnBnYS9pbmNsdWRlL21hY2gvaW8uaCBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRl L21hY2gvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlYmIz OWNjOGU3ZAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRl L21hY2gvaW8uaApAQCAtMCwwICsxLDI2OSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8KKy8qCisgKiBhcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL2lv LmgKKyAqCisgKiBiYXNlZCBvbiBhcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvaW8u aAorICovCisKKyNpZm5kZWYgX19BU01fQVJNX0FSQ0hfSU9fSAorI2RlZmluZSBfX0FTTV9BUk1f QVJDSF9JT19ICisKKyNpbmNsdWRlIDxtYWNoL3BjaWUuaD4KKworCisjaWZuZGVmIENPTkZJR19Q Q0kKKworI2RlZmluZSBfX2lvKHYpCQlfX3R5cGVzYWZlX2lvKHYpCisKKyNlbHNlCisKKy8qCisg KiBBbHRlcmEgU09DRlBHQSBkb2VzIG5vdCBoYXZlIGEgdHJhbnNwYXJlbnQgY3B1IC0+IFBDSSBJ L08gdHJhbnNsYXRpb24KKyAqIHdpbmRvdy4gIEluc3RlYWQsIGl0IGhhcyBhIHNldCBvZiByZWdp c3RlcnMgdGhhdCBtdXN0IGJlIHR3ZWFrZWQKKyAqIHdpdGggdGhlIHByb3BlciBieXRlIGxhbmVz LCBjb21tYW5kIHR5cGVzLCBhbmQgYWRkcmVzcyBmb3IgdGhlCisgKiB0cmFuc2FjdGlvbi4gIFRo aXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgKiBJL08gZnVu Y3Rpb25zLgorICovCisKKyNkZWZpbmUgb3V0YiBvdXRiCitzdGF0aWMgaW5saW5lIHZvaWQgb3V0 Yih1OCB2YWx1ZSwgdTMyIGFkZHIpCit7CisJaWYgKG1hY2hfc29jZnBnYV9wY2lfaW9fb3BzICYm IG1hY2hfc29jZnBnYV9wY2lfaW9fcHJpdikKKwkJbWFjaF9zb2NmcGdhX3BjaV9pb19vcHMtPm91 dGIodmFsdWUsIGFkZHIsIG1hY2hfc29jZnBnYV9wY2lfaW9fcHJpdik7Cit9CisKKyNkZWZpbmUg b3V0c2Igb3V0c2IKK3N0YXRpYyBpbmxpbmUgdm9pZCBvdXRzYih1MzIgaW9fYWRkciwgY29uc3Qg dm9pZCAqcCwgdTMyIGNvdW50KQoreworCWNvbnN0IHU4ICp2YWRkciA9IHA7CisJd2hpbGUgKGNv dW50LS0pCisJCW91dGIoKnZhZGRyKyssIGlvX2FkZHIpOworfQorCisjZGVmaW5lIG91dHcgb3V0 dworc3RhdGljIGlubGluZSB2b2lkIG91dHcodTE2IHZhbHVlLCB1MzIgYWRkcikKK3sKKwlpZiAo bWFjaF9zb2NmcGdhX3BjaV9pb19vcHMgJiYgbWFjaF9zb2NmcGdhX3BjaV9pb19wcml2KQorCQlt YWNoX3NvY2ZwZ2FfcGNpX2lvX29wcy0+b3V0dyh2YWx1ZSwgYWRkciwgbWFjaF9zb2NmcGdhX3Bj aV9pb19wcml2KTsKK30KKworI2RlZmluZSBvdXRzdyBvdXRzdworc3RhdGljIGlubGluZSB2b2lk IG91dHN3KHUzMiBpb19hZGRyLCBjb25zdCB2b2lkICpwLCB1MzIgY291bnQpCit7CisJY29uc3Qg dTE2ICp2YWRkciA9IHA7CisJd2hpbGUgKGNvdW50LS0pCisJCW91dHcoY3B1X3RvX2xlMTYoKnZh ZGRyKyspLCBpb19hZGRyKTsKK30KKworI2RlZmluZSBvdXRsIG91dGwKK3N0YXRpYyBpbmxpbmUg dm9pZCBvdXRsKHUzMiB2YWx1ZSwgdTMyIGFkZHIpCit7CisJaWYgKG1hY2hfc29jZnBnYV9wY2lf aW9fb3BzICYmIG1hY2hfc29jZnBnYV9wY2lfaW9fcHJpdikKKwkJbWFjaF9zb2NmcGdhX3BjaV9p b19vcHMtPm91dGwodmFsdWUsIGFkZHIsIG1hY2hfc29jZnBnYV9wY2lfaW9fcHJpdik7Cit9CisK KyNkZWZpbmUgb3V0c2wgb3V0c2wKK3N0YXRpYyBpbmxpbmUgdm9pZCBvdXRzbCh1MzIgaW9fYWRk ciwgY29uc3Qgdm9pZCAqcCwgdTMyIGNvdW50KQoreworCWNvbnN0IHUzMiAqdmFkZHIgPSBwOwor CXdoaWxlIChjb3VudC0tKQorCQlvdXRsKGNwdV90b19sZTMyKCp2YWRkcisrKSwgaW9fYWRkcik7 Cit9CisKKyNkZWZpbmUgaW5iIGluYgorc3RhdGljIGlubGluZSB1OCBpbmIodTMyIGFkZHIpCit7 CisJaWYgKG1hY2hfc29jZnBnYV9wY2lfaW9fb3BzICYmIG1hY2hfc29jZnBnYV9wY2lfaW9fcHJp dikKKwkJcmV0dXJuIG1hY2hfc29jZnBnYV9wY2lfaW9fb3BzLT5pbmIoYWRkciwgbWFjaF9zb2Nm cGdhX3BjaV9pb19wcml2KTsKKwllbHNlCisJCXJldHVybiAweGZmOworfQorCisjZGVmaW5lIGlu c2IgaW5zYgorc3RhdGljIGlubGluZSB2b2lkIGluc2IodTMyIGlvX2FkZHIsIHZvaWQgKnAsIHUz MiBjb3VudCkKK3sKKwl1OCAqdmFkZHIgPSBwOworCXdoaWxlIChjb3VudC0tKQorCQkqdmFkZHIr KyA9IGluYihpb19hZGRyKTsKK30KKworI2RlZmluZSBpbncgaW53CitzdGF0aWMgaW5saW5lIHUx NiBpbncodTMyIGFkZHIpCit7CisJaWYgKG1hY2hfc29jZnBnYV9wY2lfaW9fb3BzICYmIG1hY2hf c29jZnBnYV9wY2lfaW9fcHJpdikKKwkJcmV0dXJuIG1hY2hfc29jZnBnYV9wY2lfaW9fb3BzLT5p bncoYWRkciwgbWFjaF9zb2NmcGdhX3BjaV9pb19wcml2KTsKKwllbHNlCisJCXJldHVybiAweGZm ZmY7Cit9CisKKyNkZWZpbmUgaW5zdyBpbnN3CitzdGF0aWMgaW5saW5lIHZvaWQgaW5zdyh1MzIg aW9fYWRkciwgdm9pZCAqcCwgdTMyIGNvdW50KQoreworCXUxNiAqdmFkZHIgPSBwOworCXdoaWxl IChjb3VudC0tKQorCQkqdmFkZHIrKyA9IGxlMTZfdG9fY3B1KGludyhpb19hZGRyKSk7Cit9CisK KyNkZWZpbmUgaW5sIGlubAorc3RhdGljIGlubGluZSB1MzIgaW5sKHUzMiBhZGRyKQoreworCWlm IChtYWNoX3NvY2ZwZ2FfcGNpX2lvX29wcyAmJiBtYWNoX3NvY2ZwZ2FfcGNpX2lvX3ByaXYpCisJ CXJldHVybiBtYWNoX3NvY2ZwZ2FfcGNpX2lvX29wcy0+aW5sKGFkZHIsIG1hY2hfc29jZnBnYV9w Y2lfaW9fcHJpdik7CisJZWxzZQorCQlyZXR1cm4gMHhmZmZmZmZmZjsKK30KKworI2RlZmluZSBp bnNsIGluc2wKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnNsKHUzMiBpb19hZGRyLCB2b2lkICpwLCB1 MzIgY291bnQpCit7CisJdTMyICp2YWRkciA9IHA7CisJd2hpbGUgKGNvdW50LS0pCisJCSp2YWRk cisrID0gbGUzMl90b19jcHUoaW5sKGlvX2FkZHIpKTsKK30KKworCisjZGVmaW5lIFBJT19PRkZT RVQgICAgICAweDEwMDAwVUwgLyogRklYTUUgKi8KKyNkZWZpbmUgUElPX01BU0sgICAgICAgIDB4 MGZmZmZVTAorCisjZGVmaW5lCV9faXNfaW9fYWRkcmVzcyhwKQkoKCh1bnNpZ25lZCBsb25nKXAg Pj0gUElPX09GRlNFVCkgJiYgXAorCQkJCQkoKHVuc2lnbmVkIGxvbmcpcCA8PSAoUElPX01BU0sg KyBQSU9fT0ZGU0VUKSkpCisKKyNkZWZpbmUJaW9yZWFkOChwKQkJCWlvcmVhZDgocCkKK3N0YXRp YyBpbmxpbmUgdTggaW9yZWFkOChjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIpCit7CisJdW5zaWdu ZWQgbG9uZyBwb3J0ID0gKHVuc2lnbmVkIGxvbmcgX19mb3JjZSlhZGRyOworCWlmIChfX2lzX2lv X2FkZHJlc3MocG9ydCkpCisJCXJldHVybiAodW5zaWduZWQgaW50KWluYihwb3J0ICYgUElPX01B U0spOworCWVsc2UKKwkJcmV0dXJuICh1bnNpZ25lZCBpbnQpX19yYXdfcmVhZGIoYWRkcik7Cit9 CisKKyNkZWZpbmUJaW9yZWFkOF9yZXAocCwgdiwgYykJCWlvcmVhZDhfcmVwKHAsIHYsIGMpCitz dGF0aWMgaW5saW5lIHZvaWQgaW9yZWFkOF9yZXAoY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB2 b2lkICp2YWRkciwgdTMyIGNvdW50KQoreworCXVuc2lnbmVkIGxvbmcgcG9ydCA9ICh1bnNpZ25l ZCBsb25nIF9fZm9yY2UpYWRkcjsKKwlpZiAoX19pc19pb19hZGRyZXNzKHBvcnQpKQorCQlpbnNi KHBvcnQgJiBQSU9fTUFTSywgdmFkZHIsIGNvdW50KTsKKwllbHNlCisJCV9fcmF3X3JlYWRzYihh ZGRyLCB2YWRkciwgY291bnQpOworfQorCisjZGVmaW5lCWlvcmVhZDE2KHApCQkJaW9yZWFkMTYo cCkKK3N0YXRpYyBpbmxpbmUgdTE2IGlvcmVhZDE2KGNvbnN0IHZvaWQgX19pb21lbSAqYWRkcikK K3sKKwl1bnNpZ25lZCBsb25nIHBvcnQgPSAodW5zaWduZWQgbG9uZyBfX2ZvcmNlKWFkZHI7CisJ aWYgKF9faXNfaW9fYWRkcmVzcyhwb3J0KSkKKwkJcmV0dXJuCSh1bnNpZ25lZCBpbnQpaW53KHBv cnQgJiBQSU9fTUFTSyk7CisJZWxzZQorCQlyZXR1cm4gbGUxNl90b19jcHUoKF9fZm9yY2UgX19s ZTE2KV9fcmF3X3JlYWR3KGFkZHIpKTsKK30KKworI2RlZmluZQlpb3JlYWQxNl9yZXAocCwgdiwg YykJCWlvcmVhZDE2X3JlcChwLCB2LCBjKQorc3RhdGljIGlubGluZSB2b2lkIGlvcmVhZDE2X3Jl cChjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIsIHZvaWQgKnZhZGRyLAorCQkJCXUzMiBjb3VudCkK K3sKKwl1bnNpZ25lZCBsb25nIHBvcnQgPSAodW5zaWduZWQgbG9uZyBfX2ZvcmNlKWFkZHI7CisJ aWYgKF9faXNfaW9fYWRkcmVzcyhwb3J0KSkKKwkJaW5zdyhwb3J0ICYgUElPX01BU0ssIHZhZGRy LCBjb3VudCk7CisJZWxzZQorCQlfX3Jhd19yZWFkc3coYWRkciwgdmFkZHIsIGNvdW50KTsKK30K KworI2RlZmluZQlpb3JlYWQzMihwKQkJCWlvcmVhZDMyKHApCitzdGF0aWMgaW5saW5lIHUzMiBp b3JlYWQzMihjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIpCit7CisJdW5zaWduZWQgbG9uZyBwb3J0 ID0gKHVuc2lnbmVkIGxvbmcgX19mb3JjZSlhZGRyOworCWlmIChfX2lzX2lvX2FkZHJlc3MocG9y dCkpCisJCXJldHVybgkodW5zaWduZWQgaW50KWlubChwb3J0ICYgUElPX01BU0spOworCWVsc2UK KwkJcmV0dXJuIGxlMzJfdG9fY3B1KChfX2ZvcmNlIF9fbGUzMilfX3Jhd19yZWFkbChhZGRyKSk7 Cit9CisKKyNkZWZpbmUJaW9yZWFkMzJfcmVwKHAsIHYsIGMpCQlpb3JlYWQzMl9yZXAocCwgdiwg YykKK3N0YXRpYyBpbmxpbmUgdm9pZCBpb3JlYWQzMl9yZXAoY29uc3Qgdm9pZCBfX2lvbWVtICph ZGRyLCB2b2lkICp2YWRkciwKKwkJCQl1MzIgY291bnQpCit7CisJdW5zaWduZWQgbG9uZyBwb3J0 ID0gKHVuc2lnbmVkIGxvbmcgX19mb3JjZSlhZGRyOworCWlmIChfX2lzX2lvX2FkZHJlc3MocG9y dCkpCisJCWluc2wocG9ydCAmIFBJT19NQVNLLCB2YWRkciwgY291bnQpOworCWVsc2UKKwkJX19y YXdfcmVhZHNsKGFkZHIsIHZhZGRyLCBjb3VudCk7Cit9CisKKyNkZWZpbmUJaW93cml0ZTgodiwg cCkJCQlpb3dyaXRlOCh2LCBwKQorc3RhdGljIGlubGluZSB2b2lkIGlvd3JpdGU4KHU4IHZhbHVl LCB2b2lkIF9faW9tZW0gKmFkZHIpCit7CisJdW5zaWduZWQgbG9uZyBwb3J0ID0gKHVuc2lnbmVk IGxvbmcgX19mb3JjZSlhZGRyOworCWlmIChfX2lzX2lvX2FkZHJlc3MocG9ydCkpCisJCW91dGIo dmFsdWUsIHBvcnQgJiBQSU9fTUFTSyk7CisJZWxzZQorCQlfX3Jhd193cml0ZWIodmFsdWUsIGFk ZHIpOworfQorCisjZGVmaW5lCWlvd3JpdGU4X3JlcChwLCB2LCBjKQkJaW93cml0ZThfcmVwKHAs IHYsIGMpCitzdGF0aWMgaW5saW5lIHZvaWQgaW93cml0ZThfcmVwKHZvaWQgX19pb21lbSAqYWRk ciwgY29uc3Qgdm9pZCAqdmFkZHIsCisJCQkJdTMyIGNvdW50KQoreworCXVuc2lnbmVkIGxvbmcg cG9ydCA9ICh1bnNpZ25lZCBsb25nIF9fZm9yY2UpYWRkcjsKKwlpZiAoX19pc19pb19hZGRyZXNz KHBvcnQpKQorCQlvdXRzYihwb3J0ICYgUElPX01BU0ssIHZhZGRyLCBjb3VudCk7CisJZWxzZQor CQlfX3Jhd193cml0ZXNiKGFkZHIsIHZhZGRyLCBjb3VudCk7Cit9CisKKyNkZWZpbmUJaW93cml0 ZTE2KHYsIHApCQkJaW93cml0ZTE2KHYsIHApCitzdGF0aWMgaW5saW5lIHZvaWQgaW93cml0ZTE2 KHUxNiB2YWx1ZSwgdm9pZCBfX2lvbWVtICphZGRyKQoreworCXVuc2lnbmVkIGxvbmcgcG9ydCA9 ICh1bnNpZ25lZCBsb25nIF9fZm9yY2UpYWRkcjsKKwlpZiAoX19pc19pb19hZGRyZXNzKHBvcnQp KQorCQlvdXR3KHZhbHVlLCBwb3J0ICYgUElPX01BU0spOworCWVsc2UKKwkJX19yYXdfd3JpdGV3 KGNwdV90b19sZTE2KHZhbHVlKSwgYWRkcik7Cit9CisKKyNkZWZpbmUJaW93cml0ZTE2X3JlcChw LCB2LCBjKQkJaW93cml0ZTE2X3JlcChwLCB2LCBjKQorc3RhdGljIGlubGluZSB2b2lkIGlvd3Jp dGUxNl9yZXAodm9pZCBfX2lvbWVtICphZGRyLCBjb25zdCB2b2lkICp2YWRkciwKKwkJCQkgdTMy IGNvdW50KQoreworCXVuc2lnbmVkIGxvbmcgcG9ydCA9ICh1bnNpZ25lZCBsb25nIF9fZm9yY2Up YWRkcjsKKwlpZiAoX19pc19pb19hZGRyZXNzKHBvcnQpKQorCQlvdXRzdyhwb3J0ICYgUElPX01B U0ssIHZhZGRyLCBjb3VudCk7CisJZWxzZQorCQlfX3Jhd193cml0ZXN3KGFkZHIsIHZhZGRyLCBj b3VudCk7Cit9CisKKyNkZWZpbmUJaW93cml0ZTMyKHYsIHApCQkJaW93cml0ZTMyKHYsIHApCitz dGF0aWMgaW5saW5lIHZvaWQgaW93cml0ZTMyKHUzMiB2YWx1ZSwgdm9pZCBfX2lvbWVtICphZGRy KQoreworCXVuc2lnbmVkIGxvbmcgcG9ydCA9ICh1bnNpZ25lZCBsb25nIF9fZm9yY2UpYWRkcjsK KwlpZiAoX19pc19pb19hZGRyZXNzKHBvcnQpKQorCQlvdXRsKHZhbHVlLCBwb3J0ICYgUElPX01B U0spOworCWVsc2UKKwkJX19yYXdfd3JpdGVsKCh1MzIgX19mb3JjZSljcHVfdG9fbGUzMih2YWx1 ZSksIGFkZHIpOworfQorCisjZGVmaW5lCWlvd3JpdGUzMl9yZXAocCwgdiwgYykJCWlvd3JpdGUz Ml9yZXAocCwgdiwgYykKK3N0YXRpYyBpbmxpbmUgdm9pZCBpb3dyaXRlMzJfcmVwKHZvaWQgX19p b21lbSAqYWRkciwgY29uc3Qgdm9pZCAqdmFkZHIsCisJCQkJIHUzMiBjb3VudCkKK3sKKwl1bnNp Z25lZCBsb25nIHBvcnQgPSAodW5zaWduZWQgbG9uZyBfX2ZvcmNlKWFkZHI7CisJaWYgKF9faXNf aW9fYWRkcmVzcyhwb3J0KSkKKwkJb3V0c2wocG9ydCAmIFBJT19NQVNLLCB2YWRkciwgY291bnQp OworCWVsc2UKKwkJX19yYXdfd3JpdGVzbChhZGRyLCB2YWRkciwgY291bnQpOworfQorCisjZGVm aW5lIGlvcG9ydF9tYXAocG9ydCwgbnIpIGlvcG9ydF9tYXAocG9ydCwgbnIpCitzdGF0aWMgaW5s aW5lIHZvaWQgX19pb21lbSAqaW9wb3J0X21hcCh1bnNpZ25lZCBsb25nIHBvcnQsIHVuc2lnbmVk IGludCBucikKK3sKKwlyZXR1cm4gKCh2b2lkIF9faW9tZW0qKSgocG9ydCkgKyBQSU9fT0ZGU0VU KSk7Cit9CisKKyNkZWZpbmUJaW9wb3J0X3VubWFwKGFkZHIpIGlvcG9ydF91bm1hcChhZGRyKQor c3RhdGljIGlubGluZSB2b2lkIGlvcG9ydF91bm1hcCh2b2lkIF9faW9tZW0gKmFkZHIpCit7Cit9 CisKKyNlbmRpZiAvKiBDT05GSUdfUENJICovCisKKyNlbmRpZiAvKiBfX0FTTV9BUk1fQVJDSF9J T19IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNoL3Bj aWUuaCBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvcGNpZS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWViOWU2ZjRmYTk0Ci0tLSAvZGV2L251 bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFjaC9wY2llLmgKQEAgLTAs MCArMSwyMyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKworI2lm bmRlZiBfX01BQ0hfU09DRlBHQV9QQ0lFX0gKKyNkZWZpbmUgX19NQUNIX1NPQ0ZQR0FfUENJRV9I CisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisKK3N0cnVjdCBwY2lfaW9fb3BzIHsKKwl2 b2lkICgqb3V0YikodTggdmFsdWUsIHUzMiBhZGRyLCB2b2lkICpwcml2KTsKKwl2b2lkICgqb3V0 dykodTE2IHZhbHVlLCB1MzIgYWRkciwgdm9pZCAqcHJpdik7CisJdm9pZCAoKm91dGwpKHUzMiB2 YWx1ZSwgdTMyIGFkZHIsIHZvaWQgKnByaXYpOworCXU4ICgqaW5iKSh1MzIgYWRkciwgdm9pZCAq cHJpdik7CisJdTE2ICgqaW53KSh1MzIgYWRkciwgdm9pZCAqcHJpdik7CisJdTMyICgqaW5sKSh1 MzIgYWRkciwgdm9pZCAqcHJpdik7Cit9OworCitleHRlcm4gc3RydWN0IHBjaV9pb19vcHMgKm1h Y2hfc29jZnBnYV9wY2lfaW9fb3BzOworZXh0ZXJuIHZvaWQgKm1hY2hfc29jZnBnYV9wY2lfaW9f cHJpdjsKKworZXh0ZXJuIHZvaWQgbWFjaF9zb2NmcGdhX3NldF9wY2lfaW9fb3BzKHN0cnVjdCBw Y2lfaW9fb3BzICpvcHMsIHZvaWQgKnByaXYpOworCisjZW5kaWYgLyogX19NQUNIX1NPQ0ZQR0Ff UENJRV9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvaW5jbHVkZS9tYWNo L3VuY29tcHJlc3MuaCBiL2FyY2gvYXJtL21hY2gtc29jZnBnYS9pbmNsdWRlL21hY2gvdW5jb21w cmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmYwYjIyNzI5 MGNiCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2luY2x1ZGUvbWFj aC91bmNvbXByZXNzLmgKQEAgLTAsMCArMSw4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCAqLworI2lmZGVmIENPTkZJR19ERUJVR19VTkNPTVBSRVNTCitleHRlcm4gdm9p ZCBwdXRjKGludCBjKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgcHV0YyhpbnQgYykge30K KyNlbmRpZgorc3RhdGljIGlubGluZSB2b2lkIGZsdXNoKHZvaWQpIHt9CitzdGF0aWMgaW5saW5l IHZvaWQgYXJjaF9kZWNvbXBfc2V0dXAodm9pZCkge30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21h Y2gtc29jZnBnYS9wY2llLmMgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2EvcGNpZS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGQ5NDRiMWEzMWFlCi0tLSAvZGV2L251 bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL3BjaWUuYwpAQCAtMCwwICsxLDE3IEBACisv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworCisjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+CisjaW5jbHVkZSA8bWFjaC9wY2llLmg+CisKKworc3RydWN0IHBjaV9pb19vcHMg Km1hY2hfc29jZnBnYV9wY2lfaW9fb3BzID0gTlVMTDsKK0VYUE9SVF9TWU1CT0wobWFjaF9zb2Nm cGdhX3BjaV9pb19vcHMpOwordm9pZCAqbWFjaF9zb2NmcGdhX3BjaV9pb19wcml2ID0gTlVMTDsK K0VYUE9SVF9TWU1CT0wobWFjaF9zb2NmcGdhX3BjaV9pb19wcml2KTsKKwordm9pZCBtYWNoX3Nv Y2ZwZ2Ffc2V0X3BjaV9pb19vcHMoc3RydWN0IHBjaV9pb19vcHMgKm9wcywgdm9pZCAqcHJpdikK K3sKKwltYWNoX3NvY2ZwZ2FfcGNpX2lvX29wcyA9IG9wczsKKwltYWNoX3NvY2ZwZ2FfcGNpX2lv X3ByaXYgPSBwcml2OworfQorRVhQT1JUX1NZTUJPTChtYWNoX3NvY2ZwZ2Ffc2V0X3BjaV9pb19v cHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG9zdC9wY2llLWFsdGVyYS5jIGIvZHJpdmVy cy9wY2kvaG9zdC9wY2llLWFsdGVyYS5jCmluZGV4IGI0NjhiOGNjY2Y4ZC4uM2Y0NmI2MjEyNTk1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9ob3N0L3BjaWUtYWx0ZXJhLmMKKysrIGIvZHJpdmVy cy9wY2kvaG9zdC9wY2llLWFsdGVyYS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8bGlu dXgvaW50ZXJydXB0Lmg+CiAjaW5jbHVkZSA8bGludXgvaXJxY2hpcC9jaGFpbmVkX2lycS5oPgog I2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNs dWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+CiAjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+CiAjaW5j bHVkZSA8bGludXgvb2ZfcGNpLmg+CkBAIC0yOCw2ICsyOSw5IEBACiAjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogCisjaW5jbHVkZSA8 bWFjaC9wY2llLmg+CisKKwogI2RlZmluZSBSUF9UWF9SRUcwCQkJMHgyMDAwCiAjZGVmaW5lIFJQ X1RYX1JFRzEJCQkweDIwMDQKICNkZWZpbmUgUlBfVFhfQ05UUkwJCQkweDIwMDgKQEAgLTQ3LDEx ICs1MSwxNCBAQAogI2RlZmluZSBMVFNTTV9MMAkJCTB4ZgogCiAjZGVmaW5lIFBDSUVfQ0FQX09G RlNFVAkJCTB4ODAKLS8qIFRMUCBjb25maWd1cmF0aW9uIHR5cGUgMCBhbmQgMSAqLworI2RlZmlu ZSBEV09SRF9NQVNLCQkJMworLyogVExQIElPIGFuZCBjb25maWd1cmF0aW9uIHR5cGUgMCBhbmQg MSAqLwogI2RlZmluZSBUTFBfRk1UVFlQRV9DRkdSRDAJCTB4MDQJLyogQ29uZmlndXJhdGlvbiBS ZWFkIFR5cGUgMCAqLwogI2RlZmluZSBUTFBfRk1UVFlQRV9DRkdXUjAJCTB4NDQJLyogQ29uZmln dXJhdGlvbiBXcml0ZSBUeXBlIDAgKi8KICNkZWZpbmUgVExQX0ZNVFRZUEVfQ0ZHUkQxCQkweDA1 CS8qIENvbmZpZ3VyYXRpb24gUmVhZCBUeXBlIDEgKi8KICNkZWZpbmUgVExQX0ZNVFRZUEVfQ0ZH V1IxCQkweDQ1CS8qIENvbmZpZ3VyYXRpb24gV3JpdGUgVHlwZSAxICovCisjZGVmaW5lIFRMUF9G TVRUWVBFX0lPUkQJCTB4MDIJLyogSS9PIFJlYWQgKi8KKyNkZWZpbmUgVExQX0ZNVFRZUEVfSU9X UgkJMHg0MgkvKiBJL08gV3JpdGUgKi8KICNkZWZpbmUgVExQX1BBWUxPQURfU0laRQkJMHgwMQog I2RlZmluZSBUTFBfUkVBRF9UQUcJCQkweDFkCiAjZGVmaW5lIFRMUF9XUklURV9UQUcJCQkweDEw CkBAIC02OSw2ICs3NiwxMSBAQAogICAgICgoKFRMUF9SRVFfSUQocGNpZS0+cm9vdF9idXNfbnIs ICBSUF9ERVZGTikpIDw8IDE2KSB8ICh0YWcgPDwgOCkgfCAoYmUpKQogI2RlZmluZSBUTFBfQ0ZH X0RXMihidXMsIGRldmZuLCBvZmZzZXQpCVwKIAkJCQkoKChidXMpIDw8IDI0KSB8ICgoZGV2Zm4p IDw8IDE2KSB8IChvZmZzZXQpKQorI2RlZmluZSBUTFBfSU9fRFcwKGZtdF90eXBlKSAoKChmbXRf dHlwZSkgPDwgMjQpIHwgVExQX1BBWUxPQURfU0laRSkKKyNkZWZpbmUgVExQX0lPX0RXMShwY2ll LCB0YWcsIGJlKQlcCisJCSgoKFRMUF9SRVFfSUQocGNpZS0+cm9vdF9idXNfbnIsICBSUF9ERVZG TikpIDw8IDE2KSB8IFwKKwkJKHRhZyA8PCA4KSB8IChiZSkpCisjZGVmaW5lIFRMUF9JT19EVzIo YWRkcikgKGFkZHIgJiB+RFdPUkRfTUFTSykKICNkZWZpbmUgVExQX0NPTVBfU1RBVFVTKHMpCQko KChzKSA+PiAxMykgJiA3KQogI2RlZmluZSBUTFBfSERSX1NJWkUJCQkzCiAjZGVmaW5lIFRMUF9M T09QCQkJNTAwCkBAIC03NiwxMCArODgsMTAgQEAKICNkZWZpbmUgTElOS19VUF9USU1FT1VUCQkJ SFoKICNkZWZpbmUgTElOS19SRVRSQUlOX1RJTUVPVVQJCUhaCiAKLSNkZWZpbmUgRFdPUkRfTUFT SwkJCTMKIAogc3RydWN0IGFsdGVyYV9wY2llIHsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCSpw ZGV2OworCXN0cnVjdCBtdXRleAkJbG9jazsJLyogcHJvdGVjdCBDcmEgVExQIGludGVyZmFjZSAq LwogCXZvaWQgX19pb21lbQkJKmNyYV9iYXNlOwkvKiBEVCBDcmEgKi8KIAlpbnQJCQlpcnE7CiAJ dTgJCQlyb290X2J1c19ucjsKQEAgLTEyOSw2ICsxNDEsMjAgQEAgc3RhdGljIGJvb2wgYWx0ZXJh X3BjaWVfaGlkZV9yY19iYXIoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50ICBkZXZm biwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBBbHRlcmEgUENJZSBwb3J0IGRvZXMgbm90 IGltcGxlbWVudCBJTyBiYXNlIGFuZCBsaW1pdCByZWdpc3RlcnMuCisgKiBGYWtlIGF0IGxlYXN0 IElPIGJhc2UgdG8gZW51bWVyYXRlIGRldmljZXMgY29ycmVjdGx5LgorICovCitzdGF0aWMgdTMy IGFsdGVyYV9wY2llX3JlYWRfaW9fYmFzZShzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1bnNpZ25lZCBp bnQgIGRldmZuLAorCQkJCSAgICAgaW50IG9mZnNldCkKK3sKKwlpZiAocGNpX2lzX3Jvb3RfYnVz KGJ1cykgJiYgKGRldmZuID09IDApICYmCisJICAgIChvZmZzZXQgPT0gUENJX0lPX0JBU0UpKQor CQlyZXR1cm4gMHhmMDsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZCB0bHBfd3JpdGVf dHgoc3RydWN0IGFsdGVyYV9wY2llICpwY2llLAogCQkJIHN0cnVjdCB0bHBfcnBfcmVncGFpcl90 ICp0bHBfcnBfcmVnZGF0YSkKIHsKQEAgLTIyMywxNCArMjQ5LDE4IEBAIHN0YXRpYyBpbnQgdGxw X2NmZ19kd29yZF9yZWFkKHN0cnVjdCBhbHRlcmFfcGNpZSAqcGNpZSwgdTggYnVzLCB1MzIgZGV2 Zm4sCiAJCQkgICAgICBpbnQgd2hlcmUsIHU4IGJ5dGVfZW4sIHUzMiAqdmFsdWUpCiB7CiAJdTMy IGhlYWRlcnNbVExQX0hEUl9TSVpFXTsKKwlpbnQgcmV0OwogCiAJaGVhZGVyc1swXSA9IFRMUF9D RkdSRF9EVzAocGNpZSwgYnVzKTsKIAloZWFkZXJzWzFdID0gVExQX0NGR19EVzEocGNpZSwgVExQ X1JFQURfVEFHLCBieXRlX2VuKTsKIAloZWFkZXJzWzJdID0gVExQX0NGR19EVzIoYnVzLCBkZXZm biwgd2hlcmUpOwogCisJbXV0ZXhfbG9jaygmcGNpZS0+bG9jayk7CiAJdGxwX3dyaXRlX3BhY2tl dChwY2llLCBoZWFkZXJzLCAwLCBmYWxzZSk7CisJcmV0ID0gdGxwX3JlYWRfcGFja2V0KHBjaWUs IHZhbHVlKTsKKwltdXRleF91bmxvY2soJnBjaWUtPmxvY2spOwogCi0JcmV0dXJuIHRscF9yZWFk X3BhY2tldChwY2llLCB2YWx1ZSk7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCB0bHBf Y2ZnX2R3b3JkX3dyaXRlKHN0cnVjdCBhbHRlcmFfcGNpZSAqcGNpZSwgdTggYnVzLCB1MzIgZGV2 Zm4sCkBAIC0yNDMsNiArMjczLDcgQEAgc3RhdGljIGludCB0bHBfY2ZnX2R3b3JkX3dyaXRlKHN0 cnVjdCBhbHRlcmFfcGNpZSAqcGNpZSwgdTggYnVzLCB1MzIgZGV2Zm4sCiAJaGVhZGVyc1sxXSA9 IFRMUF9DRkdfRFcxKHBjaWUsIFRMUF9XUklURV9UQUcsIGJ5dGVfZW4pOwogCWhlYWRlcnNbMl0g PSBUTFBfQ0ZHX0RXMihidXMsIGRldmZuLCB3aGVyZSk7CiAKKwltdXRleF9sb2NrKCZwY2llLT5s b2NrKTsKIAkvKiBjaGVjayBhbGlnbm1lbnQgdG8gUXdvcmQgKi8KIAlpZiAoKHdoZXJlICYgMHg3 KSA9PSAwKQogCQl0bHBfd3JpdGVfcGFja2V0KHBjaWUsIGhlYWRlcnMsIHZhbHVlLCB0cnVlKTsK QEAgLTI1MCw2ICsyODEsNyBAQCBzdGF0aWMgaW50IHRscF9jZmdfZHdvcmRfd3JpdGUoc3RydWN0 IGFsdGVyYV9wY2llICpwY2llLCB1OCBidXMsIHUzMiBkZXZmbiwKIAkJdGxwX3dyaXRlX3BhY2tl dChwY2llLCBoZWFkZXJzLCB2YWx1ZSwgZmFsc2UpOwogCiAJcmV0ID0gdGxwX3JlYWRfcGFja2V0 KHBjaWUsIE5VTEwpOworCW11dGV4X3VubG9jaygmcGNpZS0+bG9jayk7CiAJaWYgKHJldCAhPSBQ Q0lCSU9TX1NVQ0NFU1NGVUwpCiAJCXJldHVybiByZXQ7CiAKQEAgLTMzOCw2ICszNzAsMTAgQEAg c3RhdGljIGludCBhbHRlcmFfcGNpZV9jZmdfcmVhZChzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1bnNp Z25lZCBpbnQgZGV2Zm4sCiAJaWYgKGFsdGVyYV9wY2llX2hpZGVfcmNfYmFyKGJ1cywgZGV2Zm4s IHdoZXJlKSkKIAkJcmV0dXJuIFBDSUJJT1NfQkFEX1JFR0lTVEVSX05VTUJFUjsKIAorCSp2YWx1 ZSA9IGFsdGVyYV9wY2llX3JlYWRfaW9fYmFzZShidXMsIGRldmZuLCB3aGVyZSk7CisJaWYgKCp2 YWx1ZSkKKwkJcmV0dXJuIFBDSUJJT1NfU1VDQ0VTU0ZVTDsKKwogCWlmICghYWx0ZXJhX3BjaWVf dmFsaWRfZGV2aWNlKHBjaWUsIGJ1cywgUENJX1NMT1QoZGV2Zm4pKSkgewogCQkqdmFsdWUgPSAw eGZmZmZmZmZmOwogCQlyZXR1cm4gUENJQklPU19ERVZJQ0VfTk9UX0ZPVU5EOwpAQCAtMzY3LDYg KzQwMywxNjggQEAgc3RhdGljIHN0cnVjdCBwY2lfb3BzIGFsdGVyYV9wY2llX29wcyA9IHsKIAku d3JpdGUgPSBhbHRlcmFfcGNpZV9jZmdfd3JpdGUsCiB9OwogCitzdGF0aWMgdm9pZCBnZXRfdGxw X2lvX2hlYWRlcihzdHJ1Y3QgYWx0ZXJhX3BjaWUgKnBjaWUsIHUzMiBhZGRyLCB1OCBieXRlX2Vu LAorCQkJICAgICAgYm9vbCByZWFkLCB1MzIgKmhlYWRlcnMpCit7CisJdTggaW8gPSByZWFkID8g VExQX0ZNVFRZUEVfSU9SRCA6IFRMUF9GTVRUWVBFX0lPV1I7CisJdTggdGFnID0gcmVhZCA/IFRM UF9SRUFEX1RBRyA6IFRMUF9XUklURV9UQUc7CisKKwloZWFkZXJzWzBdID0gVExQX0lPX0RXMChp byk7CisJaGVhZGVyc1sxXSA9IFRMUF9JT19EVzEocGNpZSwgdGFnLCBieXRlX2VuKTsKKwloZWFk ZXJzWzJdID0gVExQX0lPX0RXMihhZGRyKTsKK30KKworc3RhdGljIGludCB0bHBfaW9fZHdvcmRf cmVhZChzdHJ1Y3QgYWx0ZXJhX3BjaWUgKnBjaWUsIHUzMiBhZGRyLCB1OCBieXRlX2VuLAorCQkJ ICAgICB1MzIgKnZhbHVlKQoreworCXUzMiBoZWFkZXJzW1RMUF9IRFJfU0laRV07CisJaW50IHJl dDsKKworCWFkZHIgJj0gfkRXT1JEX01BU0s7CisKKwlnZXRfdGxwX2lvX2hlYWRlcihwY2llLCBh ZGRyLCBieXRlX2VuLCB0cnVlLCBoZWFkZXJzKTsKKworCW11dGV4X2xvY2soJnBjaWUtPmxvY2sp OworCXRscF93cml0ZV9wYWNrZXQocGNpZSwgaGVhZGVycywgMCwgZmFsc2UpOworCXJldCA9IHRs cF9yZWFkX3BhY2tldChwY2llLCB2YWx1ZSk7CisJbXV0ZXhfdW5sb2NrKCZwY2llLT5sb2NrKTsK KworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgdGxwX2lvX2R3b3JkX3dyaXRlKHN0cnVj dCBhbHRlcmFfcGNpZSAqcGNpZSwgdTMyIGFkZHIsIHU4IGJ5dGVfZW4sCisJCQkgICAgICB1MzIg dmFsdWUpCit7CisJdTMyIGhlYWRlcnNbVExQX0hEUl9TSVpFXTsKKwlpbnQgcmV0OworCisJYWRk ciAmPSB+RFdPUkRfTUFTSzsKKworCWdldF90bHBfaW9faGVhZGVyKHBjaWUsIGFkZHIsIGJ5dGVf ZW4sIGZhbHNlLCBoZWFkZXJzKTsKKworCW11dGV4X2xvY2soJnBjaWUtPmxvY2spOworCS8qIEZJ WE1FIG5lY2Vzc2FyeSB0byBjaGVjayBhbGlnbm1lbnQgdG8gUXdvcmQgPyAqLworCWlmICgoYWRk ciAmIDB4NykgPT0gMCkKKwkJdGxwX3dyaXRlX3BhY2tldChwY2llLCBoZWFkZXJzLCB2YWx1ZSwg dHJ1ZSk7CisJZWxzZQorCQl0bHBfd3JpdGVfcGFja2V0KHBjaWUsIGhlYWRlcnMsIHZhbHVlLCBm YWxzZSk7CisJcmV0ID0gdGxwX3JlYWRfcGFja2V0KHBjaWUsIE5VTEwpOworCW11dGV4X3VubG9j aygmcGNpZS0+bG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBhbHRlcmFf cGNpZV9vdXRiKHU4IHZhbHVlLCB1MzIgYWRkciwgdm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3QgYWx0 ZXJhX3BjaWUgKnBjaWUgPSAoc3RydWN0IGFsdGVyYV9wY2llICopcHJpdjsKKwl1MzIgdmFsOwor CXU4IGJlID0gKCgweDEgPDwgKGFkZHIgJiAweDMpKSAmIDB4Zik7CisJdTMyIHNoaWZ0ID0gOCAq IChhZGRyICYgMHgzKTsKKworCXZhbCA9IHZhbHVlIDw8IHNoaWZ0OworCWlmICh0bHBfaW9fZHdv cmRfd3JpdGUocGNpZSwgYWRkciwgYmUsIHZhbCkgIT0gUENJQklPU19TVUNDRVNTRlVMKSB7CisJ CWRldl9lcnIoJnBjaWUtPnBkZXYtPmRldiwgIiVzOiBmYWlsZWQgdG8gd3JpdGUgMHglMDJ4IHRv IDB4JTA4eCAoMHgleClcbiIsCisJCQkJX19mdW5jX18sIHZhbHVlLCBhZGRyLCBiZSk7CisJfQor CWRldl9kYmcoJnBjaWUtPnBkZXYtPmRldiwgIiVzOiB3cm90ZSAweCUwMnggdG8gMHglMDh4ICgw eCV4KVxuIiwKKwkJCV9fZnVuY19fLCB2YWx1ZSwgYWRkciwgYmUpOworfQorCitzdGF0aWMgdm9p ZCBhbHRlcmFfcGNpZV9vdXR3KHUxNiB2YWx1ZSwgdTMyIGFkZHIsIHZvaWQgKnByaXYpCit7CisJ c3RydWN0IGFsdGVyYV9wY2llICpwY2llID0gKHN0cnVjdCBhbHRlcmFfcGNpZSAqKXByaXY7CisJ dTMyIHZhbDsKKwl1OCBiZSA9ICgoMHgzIDw8IChhZGRyICYgMHgzKSkgJiAweGYpOworCXUzMiBz aGlmdCA9IDggKiAoYWRkciAmIDB4Myk7CisKKwl2YWwgPSB2YWx1ZSA8PCBzaGlmdDsKKwlpZiAo dGxwX2lvX2R3b3JkX3dyaXRlKHBjaWUsIGFkZHIsIGJlLCB2YWwpICE9IFBDSUJJT1NfU1VDQ0VT U0ZVTCkgeworCQlkZXZfZXJyKCZwY2llLT5wZGV2LT5kZXYsICIlczogZmFpbGVkIHRvIHdyaXRl IDB4JTA0eCB0byAweCUwOHggKDB4JXgpXG4iLAorCQkJCV9fZnVuY19fLCB2YWx1ZSwgYWRkciwg YmUpOworCX0KKwlkZXZfZGJnKCZwY2llLT5wZGV2LT5kZXYsICIlczogd3JvdGUgMHglMDR4IHRv IDB4JTA4eCAoMHgleClcbiIsCisJCQlfX2Z1bmNfXywgdmFsdWUsIGFkZHIsIGJlKTsKK30KKwor c3RhdGljIHZvaWQgYWx0ZXJhX3BjaWVfb3V0bCh1MzIgdmFsdWUsIHUzMiBhZGRyLCB2b2lkICpw cml2KQoreworCXN0cnVjdCBhbHRlcmFfcGNpZSAqcGNpZSA9IChzdHJ1Y3QgYWx0ZXJhX3BjaWUg Kilwcml2OworCXUzMiB2YWw7CisJdTggYmUgPSAweGY7CisKKwl2YWwgPSB2YWx1ZTsKKwlpZiAo dGxwX2lvX2R3b3JkX3dyaXRlKHBjaWUsIGFkZHIsIGJlLCB2YWwpICE9IFBDSUJJT1NfU1VDQ0VT U0ZVTCkgeworCQlkZXZfZXJyKCZwY2llLT5wZGV2LT5kZXYsICIlczogZmFpbGVkIHRvIHdyaXRl IDB4JTA4eCB0byAweCUwOHggKDB4JXgpXG4iLAorCQkJCV9fZnVuY19fLCB2YWx1ZSwgYWRkciwg YmUpOworCX0KKwlkZXZfZGJnKCZwY2llLT5wZGV2LT5kZXYsICIlczogd3JvdGUgMHglMDh4IHRv IDB4JTA4eCAoMHgleClcbiIsCisJCQlfX2Z1bmNfXywgdmFsdWUsIGFkZHIsIGJlKTsKK30KKwor c3RhdGljIHU4IGFsdGVyYV9wY2llX2luYih1MzIgYWRkciwgdm9pZCAqcHJpdikKK3sKKwlzdHJ1 Y3QgYWx0ZXJhX3BjaWUgKnBjaWUgPSAoc3RydWN0IGFsdGVyYV9wY2llICopcHJpdjsKKwl1MzIg dmFsOworCXUzMiBtYXNrID0gMHhmZjsKKwl1OCBiZSA9ICgoMHgxIDw8IChhZGRyICYgMHgzKSkg JiAweGYpOworCXUzMiBzaGlmdCA9IDggKiAoYWRkciAmIDB4Myk7CisKKwlpZiAodGxwX2lvX2R3 b3JkX3JlYWQocGNpZSwgYWRkciwgYmUsICZ2YWwpICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkgewor CQlkZXZfZXJyKCZwY2llLT5wZGV2LT5kZXYsICIlczogZmFpbGVkIHRvIHJlYWQgZnJvbSAweCUw OHggKDB4JXgpXG4iLAorCQkJCV9fZnVuY19fLCBhZGRyLCBiZSk7CisJCXJldHVybiBtYXNrOwor CX0KKwl2YWwgPSAodmFsID4+IHNoaWZ0KSAmIG1hc2s7CisJZGV2X2RiZygmcGNpZS0+cGRldi0+ ZGV2LCAiJXM6IHJlYWQgMHglMDJ4IGZyb20gMHglMDh4ICgweCV4KVxuIiwKKwkJCV9fZnVuY19f LCB2YWwsIGFkZHIsIGJlKTsKKwlyZXR1cm4gdmFsOworfQorCitzdGF0aWMgdTE2IGFsdGVyYV9w Y2llX2ludyh1MzIgYWRkciwgdm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3QgYWx0ZXJhX3BjaWUgKnBj aWUgPSAoc3RydWN0IGFsdGVyYV9wY2llICopcHJpdjsKKwl1MzIgdmFsOworCXUzMiBtYXNrID0g MHhmZmZmOworCXU4IGJlID0gKCgweDMgPDwgKGFkZHIgJiAweDMpKSAmIDB4Zik7CisJdTMyIHNo aWZ0ID0gOCAqIChhZGRyICYgMHgzKTsKKworCWlmICh0bHBfaW9fZHdvcmRfcmVhZChwY2llLCBh ZGRyLCBiZSwgJnZhbCkgIT0gUENJQklPU19TVUNDRVNTRlVMKSB7CisJCWRldl9lcnIoJnBjaWUt PnBkZXYtPmRldiwgIiVzOiBmYWlsZWQgdG8gcmVhZCBmcm9tIDB4JTA4eCAoMHgleClcbiIsCisJ CQkJX19mdW5jX18sIGFkZHIsIGJlKTsKKwkJcmV0dXJuIG1hc2s7CisJfQorCXZhbCA9ICh2YWwg Pj4gc2hpZnQpICYgbWFzazsKKwlkZXZfZGJnKCZwY2llLT5wZGV2LT5kZXYsICIlczogcmVhZCAw eCUwNHggZnJvbSAweCUwOHggKDB4JXgpXG4iLAorCQkJX19mdW5jX18sIHZhbCwgYWRkciwgYmUp OworCXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyB1MzIgYWx0ZXJhX3BjaWVfaW5sKHUzMiBhZGRy LCB2b2lkICpwcml2KQoreworCXN0cnVjdCBhbHRlcmFfcGNpZSAqcGNpZSA9IChzdHJ1Y3QgYWx0 ZXJhX3BjaWUgKilwcml2OworCXUzMiB2YWw7CisJdTMyIG1hc2sgPSAweGZmZmZmZmZmOworCXU4 IGJlID0gMHhmOworCisJaWYgKHRscF9pb19kd29yZF9yZWFkKHBjaWUsIGFkZHIsIGJlLCAmdmFs KSAhPSBQQ0lCSU9TX1NVQ0NFU1NGVUwpIHsKKwkJZGV2X2VycigmcGNpZS0+cGRldi0+ZGV2LCAi JXM6IGZhaWxlZCB0byByZWFkIGZyb20gMHglMDh4ICgweCV4KVxuIiwKKwkJCQlfX2Z1bmNfXywg YWRkciwgYmUpOworCQlyZXR1cm4gbWFzazsKKwl9CisJZGV2X2RiZygmcGNpZS0+cGRldi0+ZGV2 LCAiJXM6IHJlYWQgMHglMDh4IGZyb20gMHglMDh4ICgweCV4KVxuIiwKKwkJCV9fZnVuY19fLCB2 YWwsIGFkZHIsIGJlKTsKKwlyZXR1cm4gdmFsOworfQorCitzdGF0aWMgc3RydWN0IHBjaV9pb19v cHMgYWx0ZXJhX3BjaWVfaW9fb3BzID0geworCS5vdXRiID0gYWx0ZXJhX3BjaWVfb3V0YiwKKwku b3V0dyA9IGFsdGVyYV9wY2llX291dHcsCisJLm91dGwgPSBhbHRlcmFfcGNpZV9vdXRsLAorCS5p bmIgPSBhbHRlcmFfcGNpZV9pbmIsCisJLmludyA9IGFsdGVyYV9wY2llX2ludywKKwkuaW5sID0g YWx0ZXJhX3BjaWVfaW5sLAorfTsKKwogc3RhdGljIGludCBhbHRlcmFfcmVhZF9jYXBfd29yZChz dHJ1Y3QgYWx0ZXJhX3BjaWUgKnBjaWUsIHU4IGJ1c25vLAogCQkJCXVuc2lnbmVkIGludCBkZXZm biwgaW50IG9mZnNldCwgdTE2ICp2YWx1ZSkKIHsKQEAgLTUwMSwxMiArNjk5LDI2IEBAIHN0YXRp YyBpbnQgYWx0ZXJhX3BjaWVfcGFyc2VfcmVxdWVzdF9vZl9wY2lfcmFuZ2VzKHN0cnVjdCBhbHRl cmFfcGNpZSAqcGNpZSkKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGNpZS0+cGRldi0+ZGV2Owog CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7CiAJc3RydWN0IHJlc291cmNl X2VudHJ5ICp3aW47CisJc3RydWN0IHJlc291cmNlICpyZXNfaW87CiAKIAllcnIgPSBvZl9wY2lf Z2V0X2hvc3RfYnJpZGdlX3Jlc291cmNlcyhucCwgMCwgMHhmZiwgJnBjaWUtPnJlc291cmNlcywK IAkJCQkJICAgICAgIE5VTEwpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKKwkvKiBhZGQg SS9PIHNwYWNlIHdpdGggaW5kaXJlY3QgYWRyZXNzaW5nIChubyBtZW1vcnkgbWFwcGluZykgKi8K KwlyZXNfaW8gPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnJlc19pbyksIEdGUF9LRVJORUwp OworCWlmICghcmVzX2lvKSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gb3V0X3JlbGVhc2Vf cmVzOworCX0KKwlyZXNfaW8tPm5hbWUgPSAiUENJIEkvTyBTcGFjZSI7CisJcmVzX2lvLT5zdGFy dCA9IDB4MDAwMDAwMDA7CisJcmVzX2lvLT5lbmQgPSAweDAwMDBmZmZmOworCXJlc19pby0+Zmxh Z3MgPSBJT1JFU09VUkNFX0lPOworCWRldl9pbmZvKGRldiwgImFkZGluZyBpbmRpcmVjdCAobm90 IG1lbW9yeSBtYXBwZWQpIEkvTyBzcGFjZVxuIik7CisJcGNpX2FkZF9yZXNvdXJjZSgmcGNpZS0+ cmVzb3VyY2VzLCByZXNfaW8pOworCiAJZXJyID0gZGV2bV9yZXF1ZXN0X3BjaV9idXNfcmVzb3Vy Y2VzKGRldiwgJnBjaWUtPnJlc291cmNlcyk7CiAJaWYgKGVycikKIAkJZ290byBvdXRfcmVsZWFz ZV9yZXM7CkBAIC01ODYsNiArNzk4LDcgQEAgc3RhdGljIGludCBhbHRlcmFfcGNpZV9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCXBjaWUg PSBwY2lfaG9zdF9icmlkZ2VfcHJpdihicmlkZ2UpOworCW11dGV4X2luaXQoJnBjaWUtPmxvY2sp OwogCXBjaWUtPnBkZXYgPSBwZGV2OwogCiAJcmV0ID0gYWx0ZXJhX3BjaWVfcGFyc2VfZHQocGNp ZSk7CkBAIC01OTQsNiArODA3LDkgQEAgc3RhdGljIGludCBhbHRlcmFfcGNpZV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gcmV0OwogCX0KIAorCS8qIHJlZ2lz dGVyIElPIHBvcnQgZnVuY3Rpb25zIHdpdGggYXJjaGl0ZWN0dXJlIGNvZGUgKi8KKwltYWNoX3Nv Y2ZwZ2Ffc2V0X3BjaV9pb19vcHMoJmFsdGVyYV9wY2llX2lvX29wcywgKHZvaWQgKilwY2llKTsK KwogCUlOSVRfTElTVF9IRUFEKCZwY2llLT5yZXNvdXJjZXMpOwogCiAJcmV0ID0gYWx0ZXJhX3Bj aWVfcGFyc2VfcmVxdWVzdF9vZl9wY2lfcmFuZ2VzKHBjaWUpOwpAQCAtNjM4LDYgKzg1NCwxMyBA QCBzdGF0aWMgaW50IGFsdGVyYV9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBhbHRlcmFfcGNpZV9yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwltYWNoX3NvY2ZwZ2Ffc2V0X3BjaV9pb19v cHMoTlVMTCwgTlVMTCk7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgYWx0ZXJhX3BjaWVfb2ZfbWF0Y2hbXSA9IHsKIAl7IC5jb21wYXRpYmxlID0g ImFsdHIscGNpZS1yb290LXBvcnQtMS4wIiwgfSwKIAl7fSwKQEAgLTY0NSw2ICs4NjgsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhbHRlcmFfcGNpZV9vZl9tYXRjaFtdID0g ewogCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhbHRlcmFfcGNpZV9kcml2ZXIgPSB7 CiAJLnByb2JlCQk9IGFsdGVyYV9wY2llX3Byb2JlLAorCS5yZW1vdmUJCT0gYWx0ZXJhX3BjaWVf cmVtb3ZlLAogCS5kcml2ZXIgPSB7CiAJCS5uYW1lCT0gImFsdGVyYS1wY2llIiwKIAkJLm9mX21h dGNoX3RhYmxlID0gYWx0ZXJhX3BjaWVfb2ZfbWF0Y2gsCi0tIAoyLjM0LjEKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1h aWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==