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 A3B8BC7618D for ; Mon, 20 Mar 2023 13:17:22 +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:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+GSwbO2dup9QOa9kedNSqCB5CzodclE5Kp/Wkj8J0M8=; b=uvQt0Y83yirf8w BDtul7dr5QkAmz3uAL+HBzYtsIgywe9tIXdIyLrywdbcOR1GaZDYqChx8IC0ldXMyKD3aDBFH1yqX 1I1fnEJC7+3QiK8SoBy2q9yjqqSzvcrgUGbDk2/+QBcFmD2VJ/s9n2WcHASIEVf+T8b6ASO6if6YB wk8jHBmLqB2y03aJLoxN7nldNerxzxiyRwI+GaWWemo6Hhq9pUexw2LwDcfHeiZ12BBBvA4pTJ4R4 17NBeeY9FZjTdtIqybWyyv/myplPIf38fdFLLXnclkiPGWYmxRPgslzjwhDHEQzPSpIIGDT0syI1r PcPdfiu6bShv5ZXj14Fg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peFN7-0094tb-33; Mon, 20 Mar 2023 13:16:21 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peFMz-0094pn-1u for linux-arm-kernel@lists.infradead.org; Mon, 20 Mar 2023 13:16:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679318173; x=1710854173; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=03KpgEWjTRIOrghUDlJ37yTkg0WA7G7gXnWuRYLhmBU=; b=HRytNq1pF3r5XJXc9tgjXo9rlTV/DzWFKeZ0L2j9dH7KlgtAZihJSsTc XQ4kI/FBdKb78zzGc7AVcp6TZnpzdCpVpBou/0gw6rTVKZ0hh+RokEeXd tiVfaRxTa+8tdCjM9IRvWonmPu+a1w7ajs1ETMAQ1moDjlShNqGZ08TyU dHAzhBsPPc+Ib/mAlmeUF9RczUByRXUSg82+3/NQewm6bvmDc3nCTIIQm QOSEBRy2d+2NgOKvTLXtUehixSG1YdjuyxiNWRPoWr14KQp24Ouk4l/kh Vv8UCZun4g3N3K+GqVb/EFbgvdon0aPx45Oj4Gjy0dMn7aqrPJCALb6wr g==; X-IronPort-AV: E=McAfee;i="6600,9927,10654"; a="341015334" X-IronPort-AV: E=Sophos;i="5.98,274,1673942400"; d="scan'208";a="341015334" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Mar 2023 06:16:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10654"; a="824468999" X-IronPort-AV: E=Sophos;i="5.98,274,1673942400"; d="scan'208";a="824468999" Received: from black.fi.intel.com ([10.237.72.28]) by fmsmga001.fm.intel.com with ESMTP; 20 Mar 2023 06:15:58 -0700 Received: by black.fi.intel.com (Postfix, from userid 1003) id F13BA3DD; Mon, 20 Mar 2023 15:16:43 +0200 (EET) From: Andy Shevchenko To: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= , Andy Shevchenko , Mika Westerberg , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Michael Ellerman , Randy Dunlap , Arnd Bergmann , Niklas Schnelle , Bjorn Helgaas , "Rafael J. Wysocki" , =?UTF-8?q?Pali=20Roh=C3=A1r?= , "Maciej W. Rozycki" , Juergen Gross , Dominik Brodowski , linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-pci@vger.kernel.org, xen-devel@lists.xenproject.org, linux-acpi@vger.kernel.org Cc: Miguel Ojeda , Richard Henderson , Ivan Kokshaysky , Matt Turner , Russell King , Andrew Lunn , Sebastian Hesselbarth , Gregory Clement , Thomas Bogendoerfer , Nicholas Piggin , Christophe Leroy , Anatolij Gustschin , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , "David S. Miller" , Bjorn Helgaas , Stefano Stabellini , Oleksandr Tyshchenko Subject: [PATCH v6 1/4] PCI: Introduce pci_dev_for_each_resource() Date: Mon, 20 Mar 2023 15:16:30 +0200 Message-Id: <20230320131633.61680-2-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320131633.61680-1-andriy.shevchenko@linux.intel.com> References: <20230320131633.61680-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230320_061613_706525_50BF4C8C X-CRM114-Status: GOOD ( 26.11 ) 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 RnJvbTogTWlrYSBXZXN0ZXJiZXJnIDxtaWthLndlc3RlcmJlcmdAbGludXguaW50ZWwuY29tPgoK SW5zdGVhZCBvZiBvcGVuLWNvZGluZyBpdCBldmVyeXdoZXJlIGludHJvZHVjZSBhIHRpbnkgaGVs cGVyIHRoYXQgY2FuIGJlCnVzZWQgdG8gaXRlcmF0ZSBvdmVyIGVhY2ggcmVzb3VyY2Ugb2YgYSBQ Q0kgZGV2aWNlLCBhbmQgY29udmVydCB0aGUgbW9zdApvYnZpb3VzIHVzZXJzIGludG8gaXQuCgpX aGlsZSBhdCBpdCBkcm9wIGRvdWJsZWQgZW1wdHkgbGluZSBiZWZvcmUgcGRldl9zb3J0X3Jlc291 cmNlcygpLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGludGVuZGVkLgoKU3VnZ2VzdGVkLWJ5OiBB bmR5IFNoZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4LmludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogTWlrYSBXZXN0ZXJiZXJnIDxtaWthLndlc3RlcmJlcmdAbGludXguaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBBbmR5IFNoZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4 LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEtyenlzenRvZiBXaWxjennFhHNraSA8a3dAbGludXgu Y29tPgotLS0KIC5jbGFuZy1mb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIg KysKIGFyY2gvYWxwaGEva2VybmVsL3BjaS5jICAgICAgICAgICAgICAgICAgIHwgIDUgKystLQog YXJjaC9hcm0va2VybmVsL2Jpb3MzMi5jICAgICAgICAgICAgICAgICAgfCAxNiArKysrKystLS0t LS0tCiBhcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5jICAgICAgICAgICAgICAgICB8IDEwICsrKyst LS0tCiBhcmNoL2FybS9tYWNoLW12Nzh4eDAvcGNpZS5jICAgICAgICAgICAgICB8IDEwICsrKyst LS0tCiBhcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMgICAgICAgICAgICAgICB8IDEwICsrKyst LS0tCiBhcmNoL21pcHMvcGNpL29wcy1iY202M3h4LmMgICAgICAgICAgICAgICB8ICA4ICsrKy0t LS0KIGFyY2gvbWlwcy9wY2kvcGNpLWxlZ2FjeS5jICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBh cmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYyAgICAgICAgICB8IDIxICsrKysrKysrLS0t LS0tLS0KIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNHh4L3BjaS5jICAgICAgICAgIHwgIDggKysr LS0tLQogYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfcGNpLmMgfCAgNSArKy0t CiBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcGNpLmMgICAgICB8IDE2ICsrKysrKy0t LS0tLS0KIGFyY2gvc2gvZHJpdmVycy9wY2kvcGNpZS1zaDc3ODYuYyAgICAgICAgIHwgMTAgKysr Ky0tLS0KIGFyY2gvc3BhcmMva2VybmVsL2xlb25fcGNpLmMgICAgICAgICAgICAgIHwgIDUgKyst LQogYXJjaC9zcGFyYy9rZXJuZWwvcGNpLmMgICAgICAgICAgICAgICAgICAgfCAxMCArKysrLS0t LQogYXJjaC9zcGFyYy9rZXJuZWwvcGNpYy5jICAgICAgICAgICAgICAgICAgfCAgNSArKy0tCiBk cml2ZXJzL3BjaS9yZW1vdmUuYyAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrLS0KIGRyaXZl cnMvcGNpL3NldHVwLWJ1cy5jICAgICAgICAgICAgICAgICAgIHwgMjcgKysrKysrKystLS0tLS0t LS0tLS0tCiBkcml2ZXJzL3BjaS9zZXR1cC1yZXMuYyAgICAgICAgICAgICAgICAgICB8ICA0ICst LS0KIGRyaXZlcnMvcGNpL3ZnYWFyYi5jICAgICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKy0t LS0tLS0tLQogZHJpdmVycy9wY2kveGVuLXBjaWZyb250LmMgICAgICAgICAgICAgICAgfCAgNCAr LS0tCiBkcml2ZXJzL3BucC9xdWlya3MuYyAgICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysr KysrLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L3BjaS5oICAgICAgICAgICAgICAgICAg ICAgICB8IDE1ICsrKysrKysrKystLQogMjMgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMo KyksIDEzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS8uY2xhbmctZm9ybWF0IGIvLmNsYW5n LWZvcm1hdAppbmRleCBkOTg4ZTlmYTliMjYuLjI2NmFiYjg0MzY1NCAxMDA2NDQKLS0tIGEvLmNs YW5nLWZvcm1hdAorKysgYi8uY2xhbmctZm9ybWF0CkBAIC01MjAsNiArNTIwLDggQEAgRm9yRWFj aE1hY3JvczoKICAgLSAnb2ZfcHJvcGVydHlfZm9yX2VhY2hfc3RyaW5nJwogICAtICdvZl9wcm9w ZXJ0eV9mb3JfZWFjaF91MzInCiAgIC0gJ3BjaV9idXNfZm9yX2VhY2hfcmVzb3VyY2UnCisgIC0g J3BjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UnCisgIC0gJ3BjaV9kZXZfZm9yX2VhY2hfcmVzb3Vy Y2VfcCcKICAgLSAncGNpX2RvZV9mb3JfZWFjaF9vZmYnCiAgIC0gJ3BjbF9mb3JfZWFjaF9jaHVu aycKICAgLSAncGNsX2Zvcl9lYWNoX3NlZ21lbnQnCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2tl cm5lbC9wY2kuYyBiL2FyY2gvYWxwaGEva2VybmVsL3BjaS5jCmluZGV4IDY0ZmJmYjA3NjNiMi4u NDQ1OGViN2Y0NGYwIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2tlcm5lbC9wY2kuYworKysgYi9h cmNoL2FscGhhL2tlcm5lbC9wY2kuYwpAQCAtMjg4LDExICsyODgsMTAgQEAgcGNpYmlvc19jbGFp bV9vbmVfYnVzKHN0cnVjdCBwY2lfYnVzICpiKQogCXN0cnVjdCBwY2lfYnVzICpjaGlsZF9idXM7 CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJmItPmRldmljZXMsIGJ1c19saXN0KSB7CisJ CXN0cnVjdCByZXNvdXJjZSAqcjsKIAkJaW50IGk7CiAKLQkJZm9yIChpID0gMDsgaSA8IFBDSV9O VU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJCXN0cnVjdCByZXNvdXJjZSAqciA9ICZkZXYtPnJlc291 cmNlW2ldOwotCisJCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByLCBpKSB7CiAJCQlp ZiAoci0+cGFyZW50IHx8ICFyLT5zdGFydCB8fCAhci0+ZmxhZ3MpCiAJCQkJY29udGludWU7CiAJ CQlpZiAocGNpX2hhc19mbGFnKFBDSV9QUk9CRV9PTkxZKSB8fApkaWZmIC0tZ2l0IGEvYXJjaC9h cm0va2VybmVsL2Jpb3MzMi5jIGIvYXJjaC9hcm0va2VybmVsL2Jpb3MzMi5jCmluZGV4IGU3ZWYy YjViZWE5Yy4uNTI1NDczNGIyM2U2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvYmlvczMy LmMKKysrIGIvYXJjaC9hcm0va2VybmVsL2Jpb3MzMi5jCkBAIC0xNDIsMTUgKzE0MiwxNSBAQCBE RUNMQVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9XSU5CT05EMiwgUENJX0RFVklD RV9JRF9XSU5CT05EMl84OUM5NDBGLAogICovCiBzdGF0aWMgdm9pZCBwY2lfZml4dXBfZGVjMjEy ODUoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlpbnQgaTsKLQogCWlmIChkZXYtPmRldmZuID09 IDApIHsKKwkJc3RydWN0IHJlc291cmNlICpyOworCiAJCWRldi0+Y2xhc3MgJj0gMHhmZjsKIAkJ ZGV2LT5jbGFzcyB8PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1QgPDwgODsKLQkJZm9yIChpID0gMDsg aSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJCWRldi0+cmVzb3VyY2VbaV0uc3RhcnQg PSAwOwotCQkJZGV2LT5yZXNvdXJjZVtpXS5lbmQgICA9IDA7Ci0JCQlkZXYtPnJlc291cmNlW2ld LmZsYWdzID0gMDsKKwkJcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZV9wKGRldiwgcikgeworCQkJ ci0+c3RhcnQgPSAwOworCQkJci0+ZW5kID0gMDsKKwkJCXItPmZsYWdzID0gMDsKIAkJfQogCX0K IH0KQEAgLTE2MiwxMyArMTYyLDExIEBAIERFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVO RE9SX0lEX0RFQywgUENJX0RFVklDRV9JRF9ERUNfMjEyODUsIHBjaV9maXh1cF9kCiBzdGF0aWMg dm9pZCBwY2lfZml4dXBfaWRlX2Jhc2VzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7CiAJc3RydWN0 IHJlc291cmNlICpyOwotCWludCBpOwogCiAJaWYgKChkZXYtPmNsYXNzID4+IDgpICE9IFBDSV9D TEFTU19TVE9SQUdFX0lERSkKIAkJcmV0dXJuOwogCi0JZm9yIChpID0gMDsgaSA8IFBDSV9OVU1f UkVTT1VSQ0VTOyBpKyspIHsKLQkJciA9IGRldi0+cmVzb3VyY2UgKyBpOworCXBjaV9kZXZfZm9y X2VhY2hfcmVzb3VyY2VfcChkZXYsIHIpIHsKIAkJaWYgKChyLT5zdGFydCAmIH4weDgwKSA9PSAw eDM3NCkgewogCQkJci0+c3RhcnQgfD0gMjsKIAkJCXItPmVuZCA9IHItPnN0YXJ0OwpkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vbWFjaC1kb3ZlL3BjaWUuYyBiL2FyY2gvYXJtL21hY2gtZG92ZS9wY2ll LmMKaW5kZXggNzU0Y2EzODFmNjAwLi41OGNlY2Q3OWEyMDQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJt L21hY2gtZG92ZS9wY2llLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1kb3ZlL3BjaWUuYwpAQCAtMTQy LDE0ICsxNDIsMTQgQEAgc3RhdGljIHN0cnVjdCBwY2lfb3BzIHBjaWVfb3BzID0gewogc3RhdGlj IHZvaWQgcmNfcGNpX2ZpeHVwKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7CiAJaWYgKGRldi0+YnVz LT5wYXJlbnQgPT0gTlVMTCAmJiBkZXYtPmRldmZuID09IDApIHsKLQkJaW50IGk7CisJCXN0cnVj dCByZXNvdXJjZSAqcjsKIAogCQlkZXYtPmNsYXNzICY9IDB4ZmY7CiAJCWRldi0+Y2xhc3MgfD0g UENJX0NMQVNTX0JSSURHRV9IT1NUIDw8IDg7Ci0JCWZvciAoaSA9IDA7IGkgPCBERVZJQ0VfQ09V TlRfUkVTT1VSQ0U7IGkrKykgewotCQkJZGV2LT5yZXNvdXJjZVtpXS5zdGFydCA9IDA7Ci0JCQlk ZXYtPnJlc291cmNlW2ldLmVuZCAgID0gMDsKLQkJCWRldi0+cmVzb3VyY2VbaV0uZmxhZ3MgPSAw OworCQlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlX3AoZGV2LCByKSB7CisJCQlyLT5zdGFydCA9 IDA7CisJCQlyLT5lbmQgICA9IDA7CisJCQlyLT5mbGFncyA9IDA7CiAJCX0KIAl9CiB9CmRpZmYg LS1naXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvcGNpZS5jIGIvYXJjaC9hcm0vbWFjaC1tdjc4 eHgwL3BjaWUuYwppbmRleCA2MTkwZjUzOGExMjQuLmY1OWYwMjE1MGEzNiAxMDA2NDQKLS0tIGEv YXJjaC9hcm0vbWFjaC1tdjc4eHgwL3BjaWUuYworKysgYi9hcmNoL2FybS9tYWNoLW12Nzh4eDAv cGNpZS5jCkBAIC0xODYsMTQgKzE4NiwxNCBAQCBzdGF0aWMgc3RydWN0IHBjaV9vcHMgcGNpZV9v cHMgPSB7CiBzdGF0aWMgdm9pZCByY19wY2lfZml4dXAoc3RydWN0IHBjaV9kZXYgKmRldikKIHsK IAlpZiAoZGV2LT5idXMtPnBhcmVudCA9PSBOVUxMICYmIGRldi0+ZGV2Zm4gPT0gMCkgewotCQlp bnQgaTsKKwkJc3RydWN0IHJlc291cmNlICpyOwogCiAJCWRldi0+Y2xhc3MgJj0gMHhmZjsKIAkJ ZGV2LT5jbGFzcyB8PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1QgPDwgODsKLQkJZm9yIChpID0gMDsg aSA8IERFVklDRV9DT1VOVF9SRVNPVVJDRTsgaSsrKSB7Ci0JCQlkZXYtPnJlc291cmNlW2ldLnN0 YXJ0ID0gMDsKLQkJCWRldi0+cmVzb3VyY2VbaV0uZW5kICAgPSAwOwotCQkJZGV2LT5yZXNvdXJj ZVtpXS5mbGFncyA9IDA7CisJCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2VfcChkZXYsIHIpIHsK KwkJCXItPnN0YXJ0ID0gMDsKKwkJCXItPmVuZCAgID0gMDsKKwkJCXItPmZsYWdzID0gMDsKIAkJ fQogCX0KIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYyBiL2FyY2gv YXJtL21hY2gtb3Jpb241eC9wY2kuYwppbmRleCA4ODhmZGM5MDk5YzUuLjA5MzNiNDdiNjAxYSAx MDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jCisrKyBiL2FyY2gvYXJtL21h Y2gtb3Jpb241eC9wY2kuYwpAQCAtNTIyLDE0ICs1MjIsMTQgQEAgc3RhdGljIGludCBfX2luaXQg cGNpX3NldHVwKHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cykKIHN0YXRpYyB2b2lkIHJjX3BjaV9m aXh1cChzdHJ1Y3QgcGNpX2RldiAqZGV2KQogewogCWlmIChkZXYtPmJ1cy0+cGFyZW50ID09IE5V TEwgJiYgZGV2LT5kZXZmbiA9PSAwKSB7Ci0JCWludCBpOworCQlzdHJ1Y3QgcmVzb3VyY2UgKnI7 CiAKIAkJZGV2LT5jbGFzcyAmPSAweGZmOwogCQlkZXYtPmNsYXNzIHw9IFBDSV9DTEFTU19CUklE R0VfSE9TVCA8PCA4OwotCQlmb3IgKGkgPSAwOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNFOyBp KyspIHsKLQkJCWRldi0+cmVzb3VyY2VbaV0uc3RhcnQgPSAwOwotCQkJZGV2LT5yZXNvdXJjZVtp XS5lbmQgICA9IDA7Ci0JCQlkZXYtPnJlc291cmNlW2ldLmZsYWdzID0gMDsKKwkJcGNpX2Rldl9m b3JfZWFjaF9yZXNvdXJjZV9wKGRldiwgcikgeworCQkJci0+c3RhcnQJPSAwOworCQkJci0+ZW5k CQk9IDA7CisJCQlyLT5mbGFncwk9IDA7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9hcmNoL21p cHMvcGNpL29wcy1iY202M3h4LmMgYi9hcmNoL21pcHMvcGNpL29wcy1iY202M3h4LmMKaW5kZXgg ZGM2ZGMyNzQxMjcyLi5jMGVmY2JmM2M2M2YgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9wY2kvb3Bz LWJjbTYzeHguYworKysgYi9hcmNoL21pcHMvcGNpL29wcy1iY202M3h4LmMKQEAgLTQxMywxOCAr NDEzLDE4IEBAIHN0cnVjdCBwY2lfb3BzIGJjbTYzeHhfY2Jfb3BzID0gewogc3RhdGljIHZvaWQg YmNtNjN4eF9maXh1cChzdHJ1Y3QgcGNpX2RldiAqZGV2KQogewogCXN0YXRpYyBpbnQgaW9fd2lu ZG93ID0gLTE7Ci0JaW50IGksIGZvdW5kLCBuZXdfaW9fd2luZG93OworCWludCBmb3VuZCwgbmV3 X2lvX3dpbmRvdzsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnI7CiAJdTMyIHZhbDsKIAogCS8qIGxvb2sg Zm9yIGFueSBpbyByZXNvdXJjZSAqLwogCWZvdW5kID0gMDsKLQlmb3IgKGkgPSAwOyBpIDwgREVW SUNFX0NPVU5UX1JFU09VUkNFOyBpKyspIHsKLQkJaWYgKHBjaV9yZXNvdXJjZV9mbGFncyhkZXYs IGkpICYgSU9SRVNPVVJDRV9JTykgeworCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2VfcChkZXYs IHIpIHsKKwkJaWYgKHJlc291cmNlX3R5cGUocikgPT0gSU9SRVNPVVJDRV9JTykgewogCQkJZm91 bmQgPSAxOwogCQkJYnJlYWs7CiAJCX0KIAl9Ci0KIAlpZiAoIWZvdW5kKQogCQlyZXR1cm47CiAK ZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9wY2kvcGNpLWxlZ2FjeS5jIGIvYXJjaC9taXBzL3BjaS9w Y2ktbGVnYWN5LmMKaW5kZXggNDY4NzIyYzhhNWM2Li5lYzI1NjdmOGVmZDggMTAwNjQ0Ci0tLSBh L2FyY2gvbWlwcy9wY2kvcGNpLWxlZ2FjeS5jCisrKyBiL2FyY2gvbWlwcy9wY2kvcGNpLWxlZ2Fj eS5jCkBAIC0yNDksMTIgKzI0OSwxMSBAQCBzdGF0aWMgaW50IHBjaWJpb3NfZW5hYmxlX3Jlc291 cmNlcyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgbWFzaykKIAogCXBjaV9yZWFkX2NvbmZpZ193 b3JkKGRldiwgUENJX0NPTU1BTkQsICZjbWQpOwogCW9sZF9jbWQgPSBjbWQ7Ci0JZm9yIChpZHgg PSAwOyBpZHggPCBQQ0lfTlVNX1JFU09VUkNFUzsgaWR4KyspIHsKKwlwY2lfZGV2X2Zvcl9lYWNo X3Jlc291cmNlKGRldiwgciwgaWR4KSB7CiAJCS8qIE9ubHkgc2V0IHVwIHRoZSByZXF1ZXN0ZWQg c3R1ZmYgKi8KIAkJaWYgKCEobWFzayAmICgxPDxpZHgpKSkKIAkJCWNvbnRpbnVlOwogCi0JCXIg PSAmZGV2LT5yZXNvdXJjZVtpZHhdOwogCQlpZiAoIShyLT5mbGFncyAmIChJT1JFU09VUkNFX0lP IHwgSU9SRVNPVVJDRV9NRU0pKSkKIAkJCWNvbnRpbnVlOwogCQlpZiAoKGlkeCA9PSBQQ0lfUk9N X1JFU09VUkNFKSAmJgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9u LmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYwppbmRleCBkNjdjZjc5YmY1ZDAu LjE5MDhhNDZjYWQ1NCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9u LmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKQEAgLTg4MCw2ICs4ODAs NyBAQCBpbnQgcGNpYmlvc19yb290X2JyaWRnZV9wcmVwYXJlKHN0cnVjdCBwY2lfaG9zdF9icmlk Z2UgKmJyaWRnZSkKIHN0YXRpYyB2b2lkIHBjaWJpb3NfZml4dXBfcmVzb3VyY2VzKHN0cnVjdCBw Y2lfZGV2ICpkZXYpCiB7CiAJc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gcGNpX2J1c190 b19ob3N0KGRldi0+YnVzKTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAlpbnQgaTsKIAogCWlm ICghaG9zZSkgewpAQCAtODkxLDkgKzg5Miw5IEBAIHN0YXRpYyB2b2lkIHBjaWJpb3NfZml4dXBf cmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiAJaWYgKGRldi0+aXNfdmlydGZuKQogCQly ZXR1cm47CiAKLQlmb3IgKGkgPSAwOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNFOyBpKyspIHsK LQkJc3RydWN0IHJlc291cmNlICpyZXMgPSBkZXYtPnJlc291cmNlICsgaTsKKwlwY2lfZGV2X2Zv cl9lYWNoX3Jlc291cmNlKGRldiwgcmVzLCBpKSB7CiAJCXN0cnVjdCBwY2lfYnVzX3JlZ2lvbiBy ZWc7CisKIAkJaWYgKCFyZXMtPmZsYWdzKQogCQkJY29udGludWU7CiAKQEAgLTE0NTIsMTEgKzE0 NTMsMTAgQEAgdm9pZCBwY2liaW9zX2NsYWltX29uZV9idXMoc3RydWN0IHBjaV9idXMgKmJ1cykK IAlzdHJ1Y3QgcGNpX2J1cyAqY2hpbGRfYnVzOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXYs ICZidXMtPmRldmljZXMsIGJ1c19saXN0KSB7CisJCXN0cnVjdCByZXNvdXJjZSAqcjsKIAkJaW50 IGk7CiAKLQkJZm9yIChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJCXN0 cnVjdCByZXNvdXJjZSAqciA9ICZkZXYtPnJlc291cmNlW2ldOwotCisJCXBjaV9kZXZfZm9yX2Vh Y2hfcmVzb3VyY2UoZGV2LCByLCBpKSB7CiAJCQlpZiAoci0+cGFyZW50IHx8ICFyLT5zdGFydCB8 fCAhci0+ZmxhZ3MpCiAJCQkJY29udGludWU7CiAKQEAgLTE3MDUsMTkgKzE3MDUsMjAgQEAgRVhQ T1JUX1NZTUJPTF9HUEwocGNpYmlvc19zY2FuX3BoYik7CiAKIHN0YXRpYyB2b2lkIGZpeHVwX2hp ZGVfaG9zdF9yZXNvdXJjZV9mc2woc3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlpbnQgaSwgY2xh c3MgPSBkZXYtPmNsYXNzID4+IDg7CisJaW50IGNsYXNzID0gZGV2LT5jbGFzcyA+PiA4OwogCS8q IFdoZW4gY29uZmlndXJlZCBhcyBhZ2VudCwgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlID0gMSAqLwog CWludCBwcm9nX2lmID0gZGV2LT5jbGFzcyAmIDB4ZjsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnI7CiAK IAlpZiAoKGNsYXNzID09IFBDSV9DTEFTU19QUk9DRVNTT1JfUE9XRVJQQyB8fAogCSAgICAgY2xh c3MgPT0gUENJX0NMQVNTX0JSSURHRV9PVEhFUikgJiYKIAkJKGRldi0+aGRyX3R5cGUgPT0gUENJ X0hFQURFUl9UWVBFX05PUk1BTCkgJiYKIAkJKHByb2dfaWYgPT0gMCkgJiYKIAkJKGRldi0+YnVz LT5wYXJlbnQgPT0gTlVMTCkpIHsKLQkJZm9yIChpID0gMDsgaSA8IERFVklDRV9DT1VOVF9SRVNP VVJDRTsgaSsrKSB7Ci0JCQlkZXYtPnJlc291cmNlW2ldLnN0YXJ0ID0gMDsKLQkJCWRldi0+cmVz b3VyY2VbaV0uZW5kID0gMDsKLQkJCWRldi0+cmVzb3VyY2VbaV0uZmxhZ3MgPSAwOworCQlwY2lf ZGV2X2Zvcl9lYWNoX3Jlc291cmNlX3AoZGV2LCByKSB7CisJCQlyLT5zdGFydCA9IDA7CisJCQly LT5lbmQgPSAwOworCQkJci0+ZmxhZ3MgPSAwOwogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEvYXJj aC9wb3dlcnBjL3BsYXRmb3Jtcy80eHgvcGNpLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzR4 eC9wY2kuYwppbmRleCBjYTVkZDdhNTg0MmEuLjlkMTkxMjNjMGRhOCAxMDA2NDQKLS0tIGEvYXJj aC9wb3dlcnBjL3BsYXRmb3Jtcy80eHgvcGNpLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jt cy80eHgvcGNpLmMKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcHBjNDQwc3Bl X3JldkEodm9pZCkKIHN0YXRpYyB2b2lkIGZpeHVwX3BwYzR4eF9wY2lfYnJpZGdlKHN0cnVjdCBw Y2lfZGV2ICpkZXYpCiB7CiAJc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlOwotCWludCBpOwor CXN0cnVjdCByZXNvdXJjZSAqcjsKIAogCWlmIChkZXYtPmRldmZuICE9IDAgfHwgZGV2LT5idXMt PnNlbGYgIT0gTlVMTCkKIAkJcmV0dXJuOwpAQCAtNzksOSArNzksOSBAQCBzdGF0aWMgdm9pZCBm aXh1cF9wcGM0eHhfcGNpX2JyaWRnZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogCS8qIEhpZGUgdGhl IFBDSSBob3N0IEJBUnMgZnJvbSB0aGUga2VybmVsIGFzIHRoZWlyIGNvbnRlbnQgZG9lc24ndAog CSAqIGZpdCB3ZWxsIGluIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50CiAJICovCi0JZm9yIChpID0g MDsgaSA8IERFVklDRV9DT1VOVF9SRVNPVVJDRTsgaSsrKSB7Ci0JCWRldi0+cmVzb3VyY2VbaV0u c3RhcnQgPSBkZXYtPnJlc291cmNlW2ldLmVuZCA9IDA7Ci0JCWRldi0+cmVzb3VyY2VbaV0uZmxh Z3MgPSAwOworCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2VfcChkZXYsIHIpIHsKKwkJci0+c3Rh cnQgPSByLT5lbmQgPSAwOworCQlyLT5mbGFncyA9IDA7CiAJfQogCiAJcHJpbnRrKEtFUk5fSU5G TyAiUENJOiBIaWRpbmcgNHh4IGhvc3QgYnJpZGdlIHJlc291cmNlcyAlc1xuIiwKZGlmZiAtLWdp dCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNTJ4eC9tcGM1Mnh4X3BjaS5jIGIvYXJjaC9wb3dl cnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfcGNpLmMKaW5kZXggODU5ZTI4MThjNDNkLi5lYTcy ZWY0ZmM2M2IgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNTJ4eC9tcGM1Mnh4 X3BjaS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNTJ4eC9tcGM1Mnh4X3BjaS5jCkBA IC0zMjcsMTQgKzMyNywxMyBAQCBtcGM1Mnh4X3BjaV9zZXR1cChzdHJ1Y3QgcGNpX2NvbnRyb2xs ZXIgKmhvc2UsCiBzdGF0aWMgdm9pZAogbXBjNTJ4eF9wY2lfZml4dXBfcmVzb3VyY2VzKHN0cnVj dCBwY2lfZGV2ICpkZXYpCiB7Ci0JaW50IGk7CisJc3RydWN0IHJlc291cmNlICpyZXM7CiAKIAlw cl9kZWJ1ZygiJXMoKSAlLjR4OiUuNHhcbiIsIF9fZnVuY19fLCBkZXYtPnZlbmRvciwgZGV2LT5k ZXZpY2UpOwogCiAJLyogV2UgZG9uJ3QgcmVseSBvbiBib290IGxvYWRlciBmb3IgUENJIGFuZCBy ZXNldHMgYWxsCiAJICAgZGV2aWNlcyAqLwotCWZvciAoaSA9IDA7IGkgPCBERVZJQ0VfQ09VTlRf UkVTT1VSQ0U7IGkrKykgewotCQlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9ICZkZXYtPnJlc291cmNl W2ldOworCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2VfcChkZXYsIHJlcykgewogCQlpZiAocmVz LT5lbmQgPiByZXMtPnN0YXJ0KSB7CS8qIE9ubHkgdmFsaWQgcmVzb3VyY2VzICovCiAJCQlyZXMt PmVuZCAtPSByZXMtPnN0YXJ0OwogCQkJcmVzLT5zdGFydCA9IDA7CmRpZmYgLS1naXQgYS9hcmNo L3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcGNpLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1z L3BzZXJpZXMvcGNpLmMKaW5kZXggNjBlMGE1ODkyOGVmLi5lZTdiMmM3MzdjOTIgMTAwNjQ0Ci0t LSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wY2kuYworKysgYi9hcmNoL3Bvd2Vy cGMvcGxhdGZvcm1zL3BzZXJpZXMvcGNpLmMKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIF9faW5p dCBwU2VyaWVzX2ZpbmFsX2ZpeHVwKHZvaWQpCiAgKi8KIHN0YXRpYyB2b2lkIGZpeHVwX3dpbmJv bmRfODJjMTA1KHN0cnVjdCBwY2lfZGV2KiBkZXYpCiB7Ci0JaW50IGk7CisJc3RydWN0IHJlc291 cmNlICpyOwogCXVuc2lnbmVkIGludCByZWc7CiAKIAlpZiAoIW1hY2hpbmVfaXMocHNlcmllcykp CkBAIC0yNTEsMTQgKzI1MSwxNCBAQCBzdGF0aWMgdm9pZCBmaXh1cF93aW5ib25kXzgyYzEwNShz dHJ1Y3QgcGNpX2RldiogZGV2KQogCS8qIEVuYWJsZSBMRUdJUlEgdG8gdXNlIElOVEMgaW5zdGVh ZCBvZiBJU0EgaW50ZXJydXB0cyAqLwogCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCAweDQw LCByZWcgfCAoMTw8MTEpKTsKIAotCWZvciAoaSA9IDA7IGkgPCBERVZJQ0VfQ09VTlRfUkVTT1VS Q0U7ICsraSkgeworCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2VfcChkZXYsIHIpIHsKIAkJLyog emFwIHRoZSAybmQgZnVuY3Rpb24gb2YgdGhlIHdpbmJvbmQgY2hpcCAqLwotCQlpZiAoZGV2LT5y ZXNvdXJjZVtpXS5mbGFncyAmIElPUkVTT1VSQ0VfSU8KLQkJICAgICYmIGRldi0+YnVzLT5udW1i ZXIgPT0gMCAmJiBkZXYtPmRldmZuID09IDB4ODEpCi0JCQlkZXYtPnJlc291cmNlW2ldLmZsYWdz ICY9IH5JT1JFU09VUkNFX0lPOwotCQlpZiAoZGV2LT5yZXNvdXJjZVtpXS5zdGFydCA9PSAwICYm IGRldi0+cmVzb3VyY2VbaV0uZW5kKSB7Ci0JCQlkZXYtPnJlc291cmNlW2ldLmZsYWdzID0gMDsK LQkJCWRldi0+cmVzb3VyY2VbaV0uZW5kID0gMDsKKwkJaWYgKGRldi0+YnVzLT5udW1iZXIgPT0g MCAmJiBkZXYtPmRldmZuID09IDB4ODEgJiYKKwkJICAgIHItPmZsYWdzICYgSU9SRVNPVVJDRV9J TykKKwkJCXItPmZsYWdzICY9IH5JT1JFU09VUkNFX0lPOworCQlpZiAoci0+c3RhcnQgPT0gMCAm JiByLT5lbmQpIHsKKwkJCXItPmZsYWdzID0gMDsKKwkJCXItPmVuZCA9IDA7CiAJCX0KIAl9CiB9 CmRpZmYgLS1naXQgYS9hcmNoL3NoL2RyaXZlcnMvcGNpL3BjaWUtc2g3Nzg2LmMgYi9hcmNoL3No L2RyaXZlcnMvcGNpL3BjaWUtc2g3Nzg2LmMKaW5kZXggYjBjMmE1MjM4ZDA0Li45ODJmOWFlYzJm MmYgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvZHJpdmVycy9wY2kvcGNpZS1zaDc3ODYuYworKysgYi9h cmNoL3NoL2RyaXZlcnMvcGNpL3BjaWUtc2g3Nzg2LmMKQEAgLTE0MCwxMiArMTQwLDEyIEBAIHN0 YXRpYyB2b2lkIHNoNzc4Nl9wY2lfZml4dXAoc3RydWN0IHBjaV9kZXYgKmRldikKIAkgKiBQcmV2 ZW50IGVudW1lcmF0aW9uIG9mIHJvb3QgY29tcGxleCByZXNvdXJjZXMuCiAJICovCiAJaWYgKHBj aV9pc19yb290X2J1cyhkZXYtPmJ1cykgJiYgZGV2LT5kZXZmbiA9PSAwKSB7Ci0JCWludCBpOwor CQlzdHJ1Y3QgcmVzb3VyY2UgKnI7CiAKLQkJZm9yIChpID0gMDsgaSA8IERFVklDRV9DT1VOVF9S RVNPVVJDRTsgaSsrKSB7Ci0JCQlkZXYtPnJlc291cmNlW2ldLnN0YXJ0CT0gMDsKLQkJCWRldi0+ cmVzb3VyY2VbaV0uZW5kCT0gMDsKLQkJCWRldi0+cmVzb3VyY2VbaV0uZmxhZ3MJPSAwOworCQlw Y2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlX3AoZGV2LCByKSB7CisJCQlyLT5zdGFydAk9IDA7CisJ CQlyLT5lbmQJCT0gMDsKKwkJCXItPmZsYWdzCT0gMDsKIAkJfQogCX0KIH0KZGlmZiAtLWdpdCBh L2FyY2gvc3BhcmMva2VybmVsL2xlb25fcGNpLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9sZW9uX3Bj aS5jCmluZGV4IGU1ZTVmZjZiOWE1Yy4uYjY2NjNhM2ZiYWU5IDEwMDY0NAotLS0gYS9hcmNoL3Nw YXJjL2tlcm5lbC9sZW9uX3BjaS5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL2xlb25fcGNpLmMK QEAgLTYyLDE1ICs2MiwxNCBAQCB2b2lkIGxlb25fcGNpX2luaXQoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqb2ZkZXYsIHN0cnVjdCBsZW9uX3BjaV9pbmZvICppbmZvKQogCiBpbnQgcGNpYmlvc19l bmFibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBtYXNrKQogeworCXN0cnVjdCBy ZXNvdXJjZSAqcmVzOwogCXUxNiBjbWQsIG9sZGNtZDsKIAlpbnQgaTsKIAogCXBjaV9yZWFkX2Nv bmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsICZjbWQpOwogCW9sZGNtZCA9IGNtZDsKIAotCWZv ciAoaSA9IDA7IGkgPCBQQ0lfTlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCXN0cnVjdCByZXNvdXJj ZSAqcmVzID0gJmRldi0+cmVzb3VyY2VbaV07Ci0KKwlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNl KGRldiwgcmVzLCBpKSB7CiAJCS8qIE9ubHkgc2V0IHVwIHRoZSByZXF1ZXN0ZWQgc3R1ZmYgKi8K IAkJaWYgKCEobWFzayAmICgxPDxpKSkpCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL2FyY2gv c3BhcmMva2VybmVsL3BjaS5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvcGNpLmMKaW5kZXggY2IxZWYy NTExNmU5Li5hOTQ4YTQ5ODE3YzcgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3BjaS5j CisrKyBiL2FyY2gvc3BhcmMva2VybmVsL3BjaS5jCkBAIC02NjMsMTEgKzY2MywxMCBAQCBzdGF0 aWMgdm9pZCBwY2lfY2xhaW1fYnVzX3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2J1cyAqYnVzKQogCXN0 cnVjdCBwY2lfZGV2ICpkZXY7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJmJ1cy0+ZGV2 aWNlcywgYnVzX2xpc3QpIHsKKwkJc3RydWN0IHJlc291cmNlICpyOwogCQlpbnQgaTsKIAotCQlm b3IgKGkgPSAwOyBpIDwgUENJX05VTV9SRVNPVVJDRVM7IGkrKykgewotCQkJc3RydWN0IHJlc291 cmNlICpyID0gJmRldi0+cmVzb3VyY2VbaV07Ci0KKwkJcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJj ZShkZXYsIHIsIGkpIHsKIAkJCWlmIChyLT5wYXJlbnQgfHwgIXItPnN0YXJ0IHx8ICFyLT5mbGFn cykKIAkJCQljb250aW51ZTsKIApAQCAtNzI0LDE1ICs3MjMsMTQgQEAgc3RydWN0IHBjaV9idXMg KnBjaV9zY2FuX29uZV9wYm0oc3RydWN0IHBjaV9wYm1faW5mbyAqcGJtLAogCiBpbnQgcGNpYmlv c19lbmFibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBtYXNrKQogeworCXN0cnVj dCByZXNvdXJjZSAqcmVzOwogCXUxNiBjbWQsIG9sZGNtZDsKIAlpbnQgaTsKIAogCXBjaV9yZWFk X2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsICZjbWQpOwogCW9sZGNtZCA9IGNtZDsKIAot CWZvciAoaSA9IDA7IGkgPCBQQ0lfTlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCXN0cnVjdCByZXNv dXJjZSAqcmVzID0gJmRldi0+cmVzb3VyY2VbaV07Ci0KKwlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291 cmNlKGRldiwgcmVzLCBpKSB7CiAJCS8qIE9ubHkgc2V0IHVwIHRoZSByZXF1ZXN0ZWQgc3R1ZmYg Ki8KIAkJaWYgKCEobWFzayAmICgxPDxpKSkpCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL2Fy Y2gvc3BhcmMva2VybmVsL3BjaWMuYyBiL2FyY2gvc3BhcmMva2VybmVsL3BjaWMuYwppbmRleCBl ZTRjOWE5YTE3MWMuLjI1ZmUwYTA2MTczMiAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwv cGNpYy5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL3BjaWMuYwpAQCAtNjQzLDE1ICs2NDMsMTQg QEAgdm9pZCBwY2liaW9zX2ZpeHVwX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqYnVzKQogCiBpbnQgcGNp Ymlvc19lbmFibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBtYXNrKQogeworCXN0 cnVjdCByZXNvdXJjZSAqcmVzOwogCXUxNiBjbWQsIG9sZGNtZDsKIAlpbnQgaTsKIAogCXBjaV9y ZWFkX2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsICZjbWQpOwogCW9sZGNtZCA9IGNtZDsK IAotCWZvciAoaSA9IDA7IGkgPCBQQ0lfTlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCXN0cnVjdCBy ZXNvdXJjZSAqcmVzID0gJmRldi0+cmVzb3VyY2VbaV07Ci0KKwlwY2lfZGV2X2Zvcl9lYWNoX3Jl c291cmNlKGRldiwgcmVzLCBpKSB7CiAJCS8qIE9ubHkgc2V0IHVwIHRoZSByZXF1ZXN0ZWQgc3R1 ZmYgKi8KIAkJaWYgKCEobWFzayAmICgxPDxpKSkpCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGNpL3JlbW92ZS5jIGIvZHJpdmVycy9wY2kvcmVtb3ZlLmMKaW5kZXggMDE0NWFl ZjFiOTMwLi4xMzEwZTAxZmI1NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3JlbW92ZS5jCisr KyBiL2RyaXZlcnMvcGNpL3JlbW92ZS5jCkBAIC01LDEwICs1LDkgQEAKIAogc3RhdGljIHZvaWQg cGNpX2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7Ci0JaW50IGk7CisJc3Ry dWN0IHJlc291cmNlICpyZXM7CiAKLQlmb3IgKGkgPSAwOyBpIDwgUENJX05VTV9SRVNPVVJDRVM7 IGkrKykgewotCQlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IGRldi0+cmVzb3VyY2UgKyBpOworCXBj aV9kZXZfZm9yX2VhY2hfcmVzb3VyY2VfcChkZXYsIHJlcykgewogCQlpZiAocmVzLT5wYXJlbnQp CiAJCQlyZWxlYXNlX3Jlc291cmNlKHJlcyk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kv c2V0dXAtYnVzLmMgYi9kcml2ZXJzL3BjaS9zZXR1cC1idXMuYwppbmRleCBjNjkwNTcyYjEwY2Uu LmQ0ZmM3NjY1ZjcwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKKysrIGIv ZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKQEAgLTEyNCwyMCArMTI0LDE3IEBAIHN0YXRpYyByZXNv dXJjZV9zaXplX3QgZ2V0X3Jlc19hZGRfYWxpZ24oc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwKIAly ZXR1cm4gZGV2X3JlcyA/IGRldl9yZXMtPm1pbl9hbGlnbiA6IDA7CiB9CiAKLQogLyogU29ydCBy ZXNvdXJjZXMgYnkgYWxpZ25tZW50ICovCiBzdGF0aWMgdm9pZCBwZGV2X3NvcnRfcmVzb3VyY2Vz KHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCiB7CisJc3RydWN0 IHJlc291cmNlICpyOwogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VS Q0VTOyBpKyspIHsKLQkJc3RydWN0IHJlc291cmNlICpyOworCXBjaV9kZXZfZm9yX2VhY2hfcmVz b3VyY2UoZGV2LCByLCBpKSB7CiAJCXN0cnVjdCBwY2lfZGV2X3Jlc291cmNlICpkZXZfcmVzLCAq dG1wOwogCQlyZXNvdXJjZV9zaXplX3Qgcl9hbGlnbjsKIAkJc3RydWN0IGxpc3RfaGVhZCAqbjsK IAotCQlyID0gJmRldi0+cmVzb3VyY2VbaV07Ci0KIAkJaWYgKHItPmZsYWdzICYgSU9SRVNPVVJD RV9QQ0lfRklYRUQpCiAJCQljb250aW51ZTsKIApAQCAtODk1LDEwICs4OTIsOSBAQCBzdGF0aWMg dm9pZCBwYnVzX3NpemVfaW8oc3RydWN0IHBjaV9idXMgKmJ1cywgcmVzb3VyY2Vfc2l6ZV90IG1p bl9zaXplLAogCiAJbWluX2FsaWduID0gd2luZG93X2FsaWdubWVudChidXMsIElPUkVTT1VSQ0Vf SU8pOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCAmYnVzLT5kZXZpY2VzLCBidXNfbGlzdCkg ewotCQlpbnQgaTsKKwkJc3RydWN0IHJlc291cmNlICpyOwogCi0JCWZvciAoaSA9IDA7IGkgPCBQ Q0lfTlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCQlzdHJ1Y3QgcmVzb3VyY2UgKnIgPSAmZGV2LT5y ZXNvdXJjZVtpXTsKKwkJcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZV9wKGRldiwgcikgewogCQkJ dW5zaWduZWQgbG9uZyByX3NpemU7CiAKIAkJCWlmIChyLT5wYXJlbnQgfHwgIShyLT5mbGFncyAm IElPUkVTT1VSQ0VfSU8pKQpAQCAtMTAxNCwxMCArMTAxMCwxMCBAQCBzdGF0aWMgaW50IHBidXNf c2l6ZV9tZW0oc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgbG9uZyBtYXNrLAogCXNpemUg PSAwOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXYsICZidXMtPmRldmljZXMsIGJ1c19saXN0 KSB7CisJCXN0cnVjdCByZXNvdXJjZSAqcjsKIAkJaW50IGk7CiAKLQkJZm9yIChpID0gMDsgaSA8 IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJCXN0cnVjdCByZXNvdXJjZSAqciA9ICZkZXYt PnJlc291cmNlW2ldOworCQlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlKGRldiwgciwgaSkgewog CQkJcmVzb3VyY2Vfc2l6ZV90IHJfc2l6ZTsKIAogCQkJaWYgKHItPnBhcmVudCB8fCAoci0+Zmxh Z3MgJiBJT1JFU09VUkNFX1BDSV9GSVhFRCkgfHwKQEAgLTEzNTgsMTEgKzEzNTQsMTAgQEAgc3Rh dGljIHZvaWQgYXNzaWduX2ZpeGVkX3Jlc291cmNlX29uX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqYiwg c3RydWN0IHJlc291cmNlICpyKQogICovCiBzdGF0aWMgdm9pZCBwZGV2X2Fzc2lnbl9maXhlZF9y ZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlpbnQgaTsKKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnI7CiAKLQlmb3IgKGkgPSAwOyBpIDwgIFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKKwlw Y2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlX3AoZGV2LCByKSB7CiAJCXN0cnVjdCBwY2lfYnVzICpi OwotCQlzdHJ1Y3QgcmVzb3VyY2UgKnIgPSAmZGV2LT5yZXNvdXJjZVtpXTsKIAogCQlpZiAoci0+ cGFyZW50IHx8ICEoci0+ZmxhZ3MgJiBJT1JFU09VUkNFX1BDSV9GSVhFRCkgfHwKIAkJICAgICEo ci0+ZmxhZ3MgJiAoSU9SRVNPVVJDRV9JTyB8IElPUkVTT1VSQ0VfTUVNKSkpCkBAIC0xNzk1LDEx ICsxNzkwLDkgQEAgc3RhdGljIHZvaWQgcmVtb3ZlX2Rldl9yZXNvdXJjZXMoc3RydWN0IHBjaV9k ZXYgKmRldiwgc3RydWN0IHJlc291cmNlICppbywKIAkJCQkgc3RydWN0IHJlc291cmNlICptbWlv LAogCQkJCSBzdHJ1Y3QgcmVzb3VyY2UgKm1taW9fcHJlZikKIHsKLQlpbnQgaTsKLQotCWZvciAo aSA9IDA7IGkgPCBQQ0lfTlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCXN0cnVjdCByZXNvdXJjZSAq cmVzID0gJmRldi0+cmVzb3VyY2VbaV07CisJc3RydWN0IHJlc291cmNlICpyZXM7CiAKKwlwY2lf ZGV2X2Zvcl9lYWNoX3Jlc291cmNlX3AoZGV2LCByZXMpIHsKIAkJaWYgKHJlc291cmNlX3R5cGUo cmVzKSA9PSBJT1JFU09VUkNFX0lPKSB7CiAJCQlyZW1vdmVfZGV2X3Jlc291cmNlKGlvLCBkZXYs IHJlcyk7CiAJCX0gZWxzZSBpZiAocmVzb3VyY2VfdHlwZShyZXMpID09IElPUkVTT1VSQ0VfTUVN KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9zZXR1cC1yZXMuYyBiL2RyaXZlcnMvcGNpL3Nl dHVwLXJlcy5jCmluZGV4IGI0OTJlNjdjM2Q4Ny4uOTY3ZjlhNzU4OTIzIDEwMDY0NAotLS0gYS9k cml2ZXJzL3BjaS9zZXR1cC1yZXMuYworKysgYi9kcml2ZXJzL3BjaS9zZXR1cC1yZXMuYwpAQCAt NDg0LDEyICs0ODQsMTAgQEAgaW50IHBjaV9lbmFibGVfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2 ICpkZXYsIGludCBtYXNrKQogCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQs ICZjbWQpOwogCW9sZF9jbWQgPSBjbWQ7CiAKLQlmb3IgKGkgPSAwOyBpIDwgUENJX05VTV9SRVNP VVJDRVM7IGkrKykgeworCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByLCBpKSB7CiAJ CWlmICghKG1hc2sgJiAoMSA8PCBpKSkpCiAJCQljb250aW51ZTsKIAotCQlyID0gJmRldi0+cmVz b3VyY2VbaV07Ci0KIAkJaWYgKCEoci0+ZmxhZ3MgJiAoSU9SRVNPVVJDRV9JTyB8IElPUkVTT1VS Q0VfTUVNKSkpCiAJCQljb250aW51ZTsKIAkJaWYgKChpID09IFBDSV9ST01fUkVTT1VSQ0UpICYm CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS92Z2FhcmIuYyBiL2RyaXZlcnMvcGNpL3ZnYWFyYi5j CmluZGV4IGY4MGI2ZWM4OGRjMy4uM2VjNmEwYjdkYmYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bj aS92Z2FhcmIuYworKysgYi9kcml2ZXJzL3BjaS92Z2FhcmIuYwpAQCAtNTQ4LDEwICs1NDgsOCBA QCBzdGF0aWMgYm9vbCB2Z2FfaXNfZmlybXdhcmVfZGVmYXVsdChzdHJ1Y3QgcGNpX2RldiAqcGRl dikKICNpZiBkZWZpbmVkKENPTkZJR19YODYpIHx8IGRlZmluZWQoQ09ORklHX0lBNjQpCiAJdTY0 IGJhc2UgPSBzY3JlZW5faW5mby5sZmJfYmFzZTsKIAl1NjQgc2l6ZSA9IHNjcmVlbl9pbmZvLmxm Yl9zaXplOworCXN0cnVjdCByZXNvdXJjZSAqcjsKIAl1NjQgbGltaXQ7Ci0JcmVzb3VyY2Vfc2l6 ZV90IHN0YXJ0LCBlbmQ7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgaTsKIAogCS8qIFNl bGVjdCB0aGUgZGV2aWNlIG93bmluZyB0aGUgYm9vdCBmcmFtZWJ1ZmZlciBpZiB0aGVyZSBpcyBv bmUgKi8KIApAQCAtNTYxLDE5ICs1NTksMTQgQEAgc3RhdGljIGJvb2wgdmdhX2lzX2Zpcm13YXJl X2RlZmF1bHQoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJbGltaXQgPSBiYXNlICsgc2l6ZTsKIAog CS8qIERvZXMgZmlybXdhcmUgZnJhbWVidWZmZXIgYmVsb25nIHRvIHVzPyAqLwotCWZvciAoaSA9 IDA7IGkgPCBERVZJQ0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgewotCQlmbGFncyA9IHBjaV9yZXNv dXJjZV9mbGFncyhwZGV2LCBpKTsKLQotCQlpZiAoKGZsYWdzICYgSU9SRVNPVVJDRV9NRU0pID09 IDApCisJcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZV9wKHBkZXYsIHIpIHsKKwkJaWYgKHJlc291 cmNlX3R5cGUocikgIT0gSU9SRVNPVVJDRV9NRU0pCiAJCQljb250aW51ZTsKIAotCQlzdGFydCA9 IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBpKTsKLQkJZW5kICA9IHBjaV9yZXNvdXJjZV9lbmQo cGRldiwgaSk7Ci0KLQkJaWYgKCFzdGFydCB8fCAhZW5kKQorCQlpZiAoIXItPnN0YXJ0IHx8ICFy LT5lbmQpCiAJCQljb250aW51ZTsKIAotCQlpZiAoYmFzZSA8IHN0YXJ0IHx8IGxpbWl0ID49IGVu ZCkKKwkJaWYgKGJhc2UgPCByLT5zdGFydCB8fCBsaW1pdCA+PSByLT5lbmQpCiAJCQljb250aW51 ZTsKIAogCQlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3hlbi1wY2lmcm9u dC5jIGIvZHJpdmVycy9wY2kveGVuLXBjaWZyb250LmMKaW5kZXggZmNkMDI5Y2EyZWIxLi44M2Mw YWI1MDY3NmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3hlbi1wY2lmcm9udC5jCisrKyBiL2Ry aXZlcnMvcGNpL3hlbi1wY2lmcm9udC5jCkBAIC0zOTAsOSArMzkwLDcgQEAgc3RhdGljIGludCBw Y2lmcm9udF9jbGFpbV9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCB2b2lkICpkYXRhKQog CWludCBpOwogCXN0cnVjdCByZXNvdXJjZSAqcjsKIAotCWZvciAoaSA9IDA7IGkgPCBQQ0lfTlVN X1JFU09VUkNFUzsgaSsrKSB7Ci0JCXIgPSAmZGV2LT5yZXNvdXJjZVtpXTsKLQorCXBjaV9kZXZf Zm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByLCBpKSB7CiAJCWlmICghci0+cGFyZW50ICYmIHItPnN0 YXJ0ICYmIHItPmZsYWdzKSB7CiAJCQlkZXZfaW5mbygmcGRldi0+eGRldi0+ZGV2LCAiY2xhaW1p bmcgcmVzb3VyY2UgJXMvJWRcbiIsCiAJCQkJcGNpX25hbWUoZGV2KSwgaSk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL3BucC9xdWlya3MuYyBiL2RyaXZlcnMvcG5wL3F1aXJrcy5jCmluZGV4IGFjOThi OTkxOTAyOS4uNjA4NWExNDcxZGUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BucC9xdWlya3MuYwor KysgYi9kcml2ZXJzL3BucC9xdWlya3MuYwpAQCAtMjI5LDggKzIyOSw3IEBAIHN0YXRpYyB2b2lk IHF1aXJrX2FkMTgxNV9tcHVfcmVzb3VyY2VzKHN0cnVjdCBwbnBfZGV2ICpkZXYpCiBzdGF0aWMg dm9pZCBxdWlya19zeXN0ZW1fcGNpX3Jlc291cmNlcyhzdHJ1Y3QgcG5wX2RldiAqZGV2KQogewog CXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gTlVMTDsKLQlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKLQly ZXNvdXJjZV9zaXplX3QgcG5wX3N0YXJ0LCBwbnBfZW5kLCBwY2lfc3RhcnQsIHBjaV9lbmQ7CisJ c3RydWN0IHJlc291cmNlICpyZXMsICpyOwogCWludCBpLCBqOwogCiAJLyoKQEAgLTI0MywzMiAr MjQyLDI2IEBAIHN0YXRpYyB2b2lkIHF1aXJrX3N5c3RlbV9wY2lfcmVzb3VyY2VzKHN0cnVjdCBw bnBfZGV2ICpkZXYpCiAJICogc28gdGhleSB3b24ndCBiZSBjbGFpbWVkIGJ5IHRoZSBQTlAgc3lz dGVtIGRyaXZlci4KIAkgKi8KIAlmb3JfZWFjaF9wY2lfZGV2KHBkZXYpIHsKLQkJZm9yIChpID0g MDsgaSA8IERFVklDRV9DT1VOVF9SRVNPVVJDRTsgaSsrKSB7Ci0JCQl1bnNpZ25lZCBsb25nIGZs YWdzLCB0eXBlOworCQlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlKHBkZXYsIHIsIGkpIHsKKwkJ CXVuc2lnbmVkIGxvbmcgdHlwZSA9IHJlc291cmNlX3R5cGUocik7CiAKLQkJCWZsYWdzID0gcGNp X3Jlc291cmNlX2ZsYWdzKHBkZXYsIGkpOwotCQkJdHlwZSA9IGZsYWdzICYgKElPUkVTT1VSQ0Vf SU8gfCBJT1JFU09VUkNFX01FTSk7Ci0JCQlpZiAoIXR5cGUgfHwgcGNpX3Jlc291cmNlX2xlbihw ZGV2LCBpKSA9PSAwKQorCQkJaWYgKCEodHlwZSA9PSBJT1JFU09VUkNFX0lPIHx8IHR5cGUgPT0g SU9SRVNPVVJDRV9NRU0pIHx8CisJCQkgICAgcmVzb3VyY2Vfc2l6ZShyKSA9PSAwKQogCQkJCWNv bnRpbnVlOwogCi0JCQlpZiAoZmxhZ3MgJiBJT1JFU09VUkNFX1VOU0VUKQorCQkJaWYgKHItPmZs YWdzICYgSU9SRVNPVVJDRV9VTlNFVCkKIAkJCQljb250aW51ZTsKIAotCQkJcGNpX3N0YXJ0ID0g cGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIGkpOwotCQkJcGNpX2VuZCA9IHBjaV9yZXNvdXJjZV9l bmQocGRldiwgaSk7CiAJCQlmb3IgKGogPSAwOwogCQkJICAgICAocmVzID0gcG5wX2dldF9yZXNv dXJjZShkZXYsIHR5cGUsIGopKTsgaisrKSB7CiAJCQkJaWYgKHJlcy0+c3RhcnQgPT0gMCAmJiBy ZXMtPmVuZCA9PSAwKQogCQkJCQljb250aW51ZTsKIAotCQkJCXBucF9zdGFydCA9IHJlcy0+c3Rh cnQ7Ci0JCQkJcG5wX2VuZCA9IHJlcy0+ZW5kOwotCiAJCQkJLyoKIAkJCQkgKiBJZiB0aGUgUE5Q IHJlZ2lvbiBkb2Vzbid0IG92ZXJsYXAgdGhlIFBDSQogCQkJCSAqIHJlZ2lvbiBhdCBhbGwsIHRo ZXJlJ3Mgbm8gcHJvYmxlbS4KIAkJCQkgKi8KLQkJCQlpZiAocG5wX2VuZCA8IHBjaV9zdGFydCB8 fCBwbnBfc3RhcnQgPiBwY2lfZW5kKQorCQkJCWlmICghcmVzb3VyY2Vfb3ZlcmxhcHMocmVzLCBy KSkKIAkJCQkJY29udGludWU7CiAKIAkJCQkvKgpAQCAtMjc4LDggKzI3MSw3IEBAIHN0YXRpYyB2 b2lkIHF1aXJrX3N5c3RlbV9wY2lfcmVzb3VyY2VzKHN0cnVjdCBwbnBfZGV2ICpkZXYpCiAJCQkJ ICogUE5QIGRldmljZSBkZXNjcmliZXMgYSBicmlkZ2Ugd2l0aCBQQ0kKIAkJCQkgKiBiZWhpbmQg aXQuCiAJCQkJICovCi0JCQkJaWYgKHBucF9zdGFydCA8PSBwY2lfc3RhcnQgJiYKLQkJCQkgICAg cG5wX2VuZCA+PSBwY2lfZW5kKQorCQkJCWlmIChyZXMtPnN0YXJ0IDw9IHItPnN0YXJ0ICYmIHJl cy0+ZW5kID49IHItPmVuZCkKIAkJCQkJY29udGludWU7CiAKIAkJCQkvKgpAQCAtMjg4LDkgKzI4 MCw4IEBAIHN0YXRpYyB2b2lkIHF1aXJrX3N5c3RlbV9wY2lfcmVzb3VyY2VzKHN0cnVjdCBwbnBf ZGV2ICpkZXYpCiAJCQkJICogZHJpdmVyIGZyb20gcmVxdWVzdGluZyBpdHMgcmVzb3VyY2VzLgog CQkJCSAqLwogCQkJCWRldl93YXJuKCZkZXYtPmRldiwKLQkJCQkJICJkaXNhYmxpbmcgJXBSIGJl Y2F1c2UgaXQgb3ZlcmxhcHMgIgotCQkJCQkgIiVzIEJBUiAlZCAlcFJcbiIsIHJlcywKLQkJCQkJ IHBjaV9uYW1lKHBkZXYpLCBpLCAmcGRldi0+cmVzb3VyY2VbaV0pOworCQkJCQkgImRpc2FibGlu ZyAlcFIgYmVjYXVzZSBpdCBvdmVybGFwcyAlcyBCQVIgJWQgJXBSXG4iLAorCQkJCQkgcmVzLCBw Y2lfbmFtZShwZGV2KSwgaSwgcik7CiAJCQkJcmVzLT5mbGFncyB8PSBJT1JFU09VUkNFX0RJU0FC TEVEOwogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVk ZS9saW51eC9wY2kuaAppbmRleCBiNTBlNWM3OWY3ZTMuLmE5N2YwMjZhZmFlZCAxMDA2NDQKLS0t IGEvaW5jbHVkZS9saW51eC9wY2kuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BjaS5oCkBAIC0xOTk1 LDE0ICsxOTk1LDI1IEBAIGludCBwY2lfaW9iYXJfcGZuKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBp bnQgYmFyLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiAgKiBUaGVzZSBoZWxwZXJzIHBy b3ZpZGUgZnV0dXJlIGFuZCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogICogZm9yIGFjY2Vzc2lu ZyBwb3B1bGFyIFBDSSBCQVIgaW5mbwogICovCisjZGVmaW5lIHBjaV9yZXNvdXJjZV9uKGRldiwg YmFyKQkoJihkZXYpLT5yZXNvdXJjZVsoYmFyKV0pCiAjZGVmaW5lIHBjaV9yZXNvdXJjZV9zdGFy dChkZXYsIGJhcikJKChkZXYpLT5yZXNvdXJjZVsoYmFyKV0uc3RhcnQpCiAjZGVmaW5lIHBjaV9y ZXNvdXJjZV9lbmQoZGV2LCBiYXIpCSgoZGV2KS0+cmVzb3VyY2VbKGJhcildLmVuZCkKICNkZWZp bmUgcGNpX3Jlc291cmNlX2ZsYWdzKGRldiwgYmFyKQkoKGRldiktPnJlc291cmNlWyhiYXIpXS5m bGFncykKICNkZWZpbmUgcGNpX3Jlc291cmNlX2xlbihkZXYsYmFyKSBcCiAJKChwY2lfcmVzb3Vy Y2VfZW5kKChkZXYpLCAoYmFyKSkgPT0gMCkgPyAwIDoJXAogCQkJCQkJCVwKLQkgKHBjaV9yZXNv dXJjZV9lbmQoKGRldiksIChiYXIpKSAtCQlcCi0JICBwY2lfcmVzb3VyY2Vfc3RhcnQoKGRldiks IChiYXIpKSArIDEpKQorCSByZXNvdXJjZV9zaXplKHBjaV9yZXNvdXJjZV9uKChkZXYpLCAoYmFy KSkpKQorCisjZGVmaW5lIF9fcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZShkZXYsIHJlcywgX19p LCB2YXJ0eXBlKQkJXAorCWZvciAodmFydHlwZSBfX2kgPSAwOwkJCQkJCVwKKwkgICAgIHJlcyA9 IHBjaV9yZXNvdXJjZV9uKGRldiwgX19pKSwgX19pIDwgUENJX05VTV9SRVNPVVJDRVM7CVwKKwkg ICAgIF9faSsrKQorCisjZGVmaW5lIHBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByZXMs IGkpCQkJCVwKKyAgICAgICBfX3BjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByZXMsIGks ICkKKworI2RlZmluZSBwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlX3AoZGV2LCByZXMpCQkJCVwK KwlfX3BjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByZXMsIF9faSwgdW5zaWduZWQgaW50 KQogCiAvKgogICogU2ltaWxhciB0byB0aGUgaGVscGVycyBhYm92ZSwgdGhlc2UgbWFuaXB1bGF0 ZSBwZXItcGNpX2RldgotLSAKMi4zOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=