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 AACBDC761A6 for ; Thu, 30 Mar 2023 16:29:34 +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=Ohdx3mFWku7oSEJJWXcDcsoeLvNZ7sHhWy78nKTKgPs=; b=aSzZgbwgE7vfVp m/fVNLxUIDWK6xfyO+1Tm5o4WofGLpJTfKDwekKfNcf6FuZOoMXzOkdeDzPSTDbirrXPorThZXW+O RQr7QUvgGRYNtF1wmDoVb7I4V0O5RQvqkplGD38QM9CeEwjUR3ZzLpulsRcAHx7P8qkKMPGTJw/Sk dgEHPCdl8qxNz4sRnM9ZPChUFPrjiUgQjBqhAZY8NgTI5CEXFj/kTwxjp/scq9pSwSeZwJ182N2VR bCEtsrSlugqf+1BLgbJHIO3t1w6NgPg0DtoJeB2bcncEZAPUGadMMPdVZ1rUV8zEZ0WfvL4o2qE0Y VMTtxpPtV06zhBPwlh/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1phv8g-004Shy-1g; Thu, 30 Mar 2023 16:28:38 +0000 Received: from mga05.intel.com ([192.55.52.43]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1phv8Y-004SZn-2P for linux-arm-kernel@lists.infradead.org; Thu, 30 Mar 2023 16:28:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680193710; x=1711729710; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KHCoRXEtiwe/FhEOF5L3Qq5P3Xpu9j6hzV2s/by6feA=; b=EIuKDsZQfWRrDxO5Fb1ABjxZHlsbKHDRKX6ggLs7YU4pCZUDDXrxbYgm KX2N/UGuLMqHBBW1Ft4XdeEZkIlIm7yyruSrTadWP+GZN4dcOXR996dMD Ce28mxzhi8NFEc8rnOBP2F60GkFKa65tgBT31BytJLreu4+AGF/ycE1BX HBqVR9SMhFRExWSZ5usZ7mT7RC7Ok/wgSumwT1owvAeFjDyFGIcOXQQNz OK0XP2msFFJ4AaI8EE6qdmA4nx/+a6Euxx76IydPP0kAhZBYw1lXo6lYC 7ZTybvnA77sq+i1QQEwClMCKIiMLzGvQ0oKMkEOIvG99ZRA8xCZXncEjl g==; X-IronPort-AV: E=McAfee;i="6600,9927,10665"; a="427496040" X-IronPort-AV: E=Sophos;i="5.98,305,1673942400"; d="scan'208";a="427496040" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Mar 2023 09:28:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10665"; a="858971551" X-IronPort-AV: E=Sophos;i="5.98,305,1673942400"; d="scan'208";a="858971551" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga005.jf.intel.com with ESMTP; 30 Mar 2023 09:28:19 -0700 Received: by black.fi.intel.com (Postfix, from userid 1003) id 924B4211; Thu, 30 Mar 2023 19:24:50 +0300 (EEST) From: Andy Shevchenko To: =?UTF-8?q?Micka=C3=ABl=20Sala=C3=BCn?= , Andy Shevchenko , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Mika Westerberg , Michael Ellerman , Randy Dunlap , Arnd Bergmann , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , 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 v8 3/7] PCI: Introduce pci_dev_for_each_resource() Date: Thu, 30 Mar 2023 19:24:30 +0300 Message-Id: <20230330162434.35055-4-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.40.0.1.gaa8946217a0b In-Reply-To: <20230330162434.35055-1-andriy.shevchenko@linux.intel.com> References: <20230330162434.35055-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-20230330_092830_842542_1B96D90E X-CRM114-Status: GOOD ( 24.93 ) 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 Y29tPgotLS0KIC5jbGFuZy1mb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEg KwogYXJjaC9hbHBoYS9rZXJuZWwvcGNpLmMgICAgICAgICAgICAgICAgICAgfCAgNSArKy0tCiBh cmNoL2FybS9rZXJuZWwvYmlvczMyLmMgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKy0tLS0t LS0KIGFyY2gvYXJtL21hY2gtZG92ZS9wY2llLmMgICAgICAgICAgICAgICAgIHwgMTAgKysrKy0t LS0KIGFyY2gvYXJtL21hY2gtbXY3OHh4MC9wY2llLmMgICAgICAgICAgICAgIHwgMTAgKysrKy0t LS0KIGFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYyAgICAgICAgICAgICAgIHwgMTAgKysrKy0t LS0KIGFyY2gvbWlwcy9wY2kvb3BzLWJjbTYzeHguYyAgICAgICAgICAgICAgIHwgIDggKysrLS0t LQogYXJjaC9taXBzL3BjaS9wY2ktbGVnYWN5LmMgICAgICAgICAgICAgICAgfCAgMyArLS0KIGFy Y2gvcG93ZXJwYy9rZXJuZWwvcGNpLWNvbW1vbi5jICAgICAgICAgIHwgMjEgKysrKysrKystLS0t LS0tLQogYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy80eHgvcGNpLmMgICAgICAgICAgfCAgOCArKyst LS0tCiBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzUyeHgvbXBjNTJ4eF9wY2kuYyB8ICA1ICsrLS0K IGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wY2kuYyAgICAgIHwgMTYgKysrKysrLS0t LS0tLQogYXJjaC9zaC9kcml2ZXJzL3BjaS9wY2llLXNoNzc4Ni5jICAgICAgICAgfCAxMCArKysr LS0tLQogYXJjaC9zcGFyYy9rZXJuZWwvbGVvbl9wY2kuYyAgICAgICAgICAgICAgfCAgNSArKy0t CiBhcmNoL3NwYXJjL2tlcm5lbC9wY2kuYyAgICAgICAgICAgICAgICAgICB8IDEwICsrKystLS0t CiBhcmNoL3NwYXJjL2tlcm5lbC9wY2ljLmMgICAgICAgICAgICAgICAgICB8ICA1ICsrLS0KIGRy aXZlcnMvcGNpL3JlbW92ZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKystLQogZHJpdmVy cy9wY2kvc2V0dXAtYnVzLmMgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKysrKy0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvcGNpL3NldHVwLXJlcy5jICAgICAgICAgICAgICAgICAgIHwgIDQgKy0t LQogZHJpdmVycy9wY2kvdmdhYXJiLmMgICAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrLS0t LS0tLS0tCiBkcml2ZXJzL3BjaS94ZW4tcGNpZnJvbnQuYyAgICAgICAgICAgICAgICB8ICA0ICst LS0KIGRyaXZlcnMvcG5wL3F1aXJrcy5jICAgICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysr KystLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvcGNpLmggICAgICAgICAgICAgICAgICAg ICAgIHwgMTUgKysrKysrKysrKysrCiAyMyBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygr KSwgMTMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhLy5jbGFuZy1mb3JtYXQgYi8uY2xhbmct Zm9ybWF0CmluZGV4IGQ5ODhlOWZhOWIyNi4uMjA0OGIwMjk2ZDc2IDEwMDY0NAotLS0gYS8uY2xh bmctZm9ybWF0CisrKyBiLy5jbGFuZy1mb3JtYXQKQEAgLTUyMCw2ICs1MjAsNyBAQCBGb3JFYWNo TWFjcm9zOgogICAtICdvZl9wcm9wZXJ0eV9mb3JfZWFjaF9zdHJpbmcnCiAgIC0gJ29mX3Byb3Bl cnR5X2Zvcl9lYWNoX3UzMicKICAgLSAncGNpX2J1c19mb3JfZWFjaF9yZXNvdXJjZScKKyAgLSAn cGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZScKICAgLSAncGNpX2RvZV9mb3JfZWFjaF9vZmYnCiAg IC0gJ3BjbF9mb3JfZWFjaF9jaHVuaycKICAgLSAncGNsX2Zvcl9lYWNoX3NlZ21lbnQnCmRpZmYg LS1naXQgYS9hcmNoL2FscGhhL2tlcm5lbC9wY2kuYyBiL2FyY2gvYWxwaGEva2VybmVsL3BjaS5j CmluZGV4IDY0ZmJmYjA3NjNiMi4uNDQ1OGViN2Y0NGYwIDEwMDY0NAotLS0gYS9hcmNoL2FscGhh L2tlcm5lbC9wY2kuYworKysgYi9hcmNoL2FscGhhL2tlcm5lbC9wY2kuYwpAQCAtMjg4LDExICsy ODgsMTAgQEAgcGNpYmlvc19jbGFpbV9vbmVfYnVzKHN0cnVjdCBwY2lfYnVzICpiKQogCXN0cnVj dCBwY2lfYnVzICpjaGlsZF9idXM7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJmItPmRl dmljZXMsIGJ1c19saXN0KSB7CisJCXN0cnVjdCByZXNvdXJjZSAqcjsKIAkJaW50IGk7CiAKLQkJ Zm9yIChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJCXN0cnVjdCByZXNv dXJjZSAqciA9ICZkZXYtPnJlc291cmNlW2ldOwotCisJCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3Vy Y2UoZGV2LCByLCBpKSB7CiAJCQlpZiAoci0+cGFyZW50IHx8ICFyLT5zdGFydCB8fCAhci0+Zmxh Z3MpCiAJCQkJY29udGludWU7CiAJCQlpZiAocGNpX2hhc19mbGFnKFBDSV9QUk9CRV9PTkxZKSB8 fApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL2Jpb3MzMi5jIGIvYXJjaC9hcm0va2VybmVs L2Jpb3MzMi5jCmluZGV4IGU3ZWYyYjViZWE5Yy4uZDMzNGM3ZmI2NzJiIDEwMDY0NAotLS0gYS9h cmNoL2FybS9rZXJuZWwvYmlvczMyLmMKKysrIGIvYXJjaC9hcm0va2VybmVsL2Jpb3MzMi5jCkBA IC0xNDIsMTUgKzE0MiwxNSBAQCBERUNMQVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX1ZFTkRPUl9J RF9XSU5CT05EMiwgUENJX0RFVklDRV9JRF9XSU5CT05EMl84OUM5NDBGLAogICovCiBzdGF0aWMg dm9pZCBwY2lfZml4dXBfZGVjMjEyODUoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlpbnQgaTsK LQogCWlmIChkZXYtPmRldmZuID09IDApIHsKKwkJc3RydWN0IHJlc291cmNlICpyOworCiAJCWRl di0+Y2xhc3MgJj0gMHhmZjsKIAkJZGV2LT5jbGFzcyB8PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1Qg PDwgODsKLQkJZm9yIChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJCWRl di0+cmVzb3VyY2VbaV0uc3RhcnQgPSAwOwotCQkJZGV2LT5yZXNvdXJjZVtpXS5lbmQgICA9IDA7 Ci0JCQlkZXYtPnJlc291cmNlW2ldLmZsYWdzID0gMDsKKwkJcGNpX2Rldl9mb3JfZWFjaF9yZXNv dXJjZShkZXYsIHIpIHsKKwkJCXItPnN0YXJ0ID0gMDsKKwkJCXItPmVuZCA9IDA7CisJCQlyLT5m bGFncyA9IDA7CiAJCX0KIAl9CiB9CkBAIC0xNjIsMTMgKzE2MiwxMSBAQCBERUNMQVJFX1BDSV9G SVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9ERUMsIFBDSV9ERVZJQ0VfSURfREVDXzIxMjg1LCBw Y2lfZml4dXBfZAogc3RhdGljIHZvaWQgcGNpX2ZpeHVwX2lkZV9iYXNlcyhzdHJ1Y3QgcGNpX2Rl diAqZGV2KQogewogCXN0cnVjdCByZXNvdXJjZSAqcjsKLQlpbnQgaTsKIAogCWlmICgoZGV2LT5j bGFzcyA+PiA4KSAhPSBQQ0lfQ0xBU1NfU1RPUkFHRV9JREUpCiAJCXJldHVybjsKIAotCWZvciAo aSA9IDA7IGkgPCBQQ0lfTlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCXIgPSBkZXYtPnJlc291cmNl ICsgaTsKKwlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlKGRldiwgcikgewogCQlpZiAoKHItPnN0 YXJ0ICYgfjB4ODApID09IDB4Mzc0KSB7CiAJCQlyLT5zdGFydCB8PSAyOwogCQkJci0+ZW5kID0g ci0+c3RhcnQ7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5jIGIvYXJjaC9h cm0vbWFjaC1kb3ZlL3BjaWUuYwppbmRleCA3NTRjYTM4MWY2MDAuLjMwNDRiN2UwMzg5MCAxMDA2 NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1kb3ZlL3BjaWUuYworKysgYi9hcmNoL2FybS9tYWNoLWRv dmUvcGNpZS5jCkBAIC0xNDIsMTQgKzE0MiwxNCBAQCBzdGF0aWMgc3RydWN0IHBjaV9vcHMgcGNp ZV9vcHMgPSB7CiBzdGF0aWMgdm9pZCByY19wY2lfZml4dXAoc3RydWN0IHBjaV9kZXYgKmRldikK IHsKIAlpZiAoZGV2LT5idXMtPnBhcmVudCA9PSBOVUxMICYmIGRldi0+ZGV2Zm4gPT0gMCkgewot CQlpbnQgaTsKKwkJc3RydWN0IHJlc291cmNlICpyOwogCiAJCWRldi0+Y2xhc3MgJj0gMHhmZjsK IAkJZGV2LT5jbGFzcyB8PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1QgPDwgODsKLQkJZm9yIChpID0g MDsgaSA8IERFVklDRV9DT1VOVF9SRVNPVVJDRTsgaSsrKSB7Ci0JCQlkZXYtPnJlc291cmNlW2ld LnN0YXJ0ID0gMDsKLQkJCWRldi0+cmVzb3VyY2VbaV0uZW5kICAgPSAwOwotCQkJZGV2LT5yZXNv dXJjZVtpXS5mbGFncyA9IDA7CisJCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByKSB7 CisJCQlyLT5zdGFydCA9IDA7CisJCQlyLT5lbmQgICA9IDA7CisJCQlyLT5mbGFncyA9IDA7CiAJ CX0KIAl9CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvcGNpZS5jIGIvYXJj aC9hcm0vbWFjaC1tdjc4eHgwL3BjaWUuYwppbmRleCA2MTkwZjUzOGExMjQuLjBlYmM5MDllYTI3 MyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL3BjaWUuYworKysgYi9hcmNoL2Fy bS9tYWNoLW12Nzh4eDAvcGNpZS5jCkBAIC0xODYsMTQgKzE4NiwxNCBAQCBzdGF0aWMgc3RydWN0 IHBjaV9vcHMgcGNpZV9vcHMgPSB7CiBzdGF0aWMgdm9pZCByY19wY2lfZml4dXAoc3RydWN0IHBj aV9kZXYgKmRldikKIHsKIAlpZiAoZGV2LT5idXMtPnBhcmVudCA9PSBOVUxMICYmIGRldi0+ZGV2 Zm4gPT0gMCkgewotCQlpbnQgaTsKKwkJc3RydWN0IHJlc291cmNlICpyOwogCiAJCWRldi0+Y2xh c3MgJj0gMHhmZjsKIAkJZGV2LT5jbGFzcyB8PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1QgPDwgODsK LQkJZm9yIChpID0gMDsgaSA8IERFVklDRV9DT1VOVF9SRVNPVVJDRTsgaSsrKSB7Ci0JCQlkZXYt PnJlc291cmNlW2ldLnN0YXJ0ID0gMDsKLQkJCWRldi0+cmVzb3VyY2VbaV0uZW5kICAgPSAwOwot CQkJZGV2LT5yZXNvdXJjZVtpXS5mbGFncyA9IDA7CisJCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3Vy Y2UoZGV2LCByKSB7CisJCQlyLT5zdGFydCA9IDA7CisJCQlyLT5lbmQgICA9IDA7CisJCQlyLT5m bGFncyA9IDA7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgv cGNpLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMKaW5kZXggODg4ZmRjOTA5OWM1Li4z MzEzYmM1YTYzZWEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYworKysg Yi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMKQEAgLTUyMiwxNCArNTIyLDE0IEBAIHN0YXRp YyBpbnQgX19pbml0IHBjaV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpCiBzdGF0aWMg dm9pZCByY19wY2lfZml4dXAoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKIAlpZiAoZGV2LT5idXMt PnBhcmVudCA9PSBOVUxMICYmIGRldi0+ZGV2Zm4gPT0gMCkgewotCQlpbnQgaTsKKwkJc3RydWN0 IHJlc291cmNlICpyOwogCiAJCWRldi0+Y2xhc3MgJj0gMHhmZjsKIAkJZGV2LT5jbGFzcyB8PSBQ Q0lfQ0xBU1NfQlJJREdFX0hPU1QgPDwgODsKLQkJZm9yIChpID0gMDsgaSA8IERFVklDRV9DT1VO VF9SRVNPVVJDRTsgaSsrKSB7Ci0JCQlkZXYtPnJlc291cmNlW2ldLnN0YXJ0ID0gMDsKLQkJCWRl di0+cmVzb3VyY2VbaV0uZW5kICAgPSAwOwotCQkJZGV2LT5yZXNvdXJjZVtpXS5mbGFncyA9IDA7 CisJCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByKSB7CisJCQlyLT5zdGFydAk9IDA7 CisJCQlyLT5lbmQJCT0gMDsKKwkJCXItPmZsYWdzCT0gMDsKIAkJfQogCX0KIH0KZGlmZiAtLWdp dCBhL2FyY2gvbWlwcy9wY2kvb3BzLWJjbTYzeHguYyBiL2FyY2gvbWlwcy9wY2kvb3BzLWJjbTYz eHguYwppbmRleCBkYzZkYzI3NDEyNzIuLmIwZWEwMjNjNDdjMCAxMDA2NDQKLS0tIGEvYXJjaC9t aXBzL3BjaS9vcHMtYmNtNjN4eC5jCisrKyBiL2FyY2gvbWlwcy9wY2kvb3BzLWJjbTYzeHguYwpA QCAtNDEzLDE4ICs0MTMsMTggQEAgc3RydWN0IHBjaV9vcHMgYmNtNjN4eF9jYl9vcHMgPSB7CiBz dGF0aWMgdm9pZCBiY202M3h4X2ZpeHVwKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7CiAJc3RhdGlj IGludCBpb193aW5kb3cgPSAtMTsKLQlpbnQgaSwgZm91bmQsIG5ld19pb193aW5kb3c7CisJaW50 IGZvdW5kLCBuZXdfaW9fd2luZG93OworCXN0cnVjdCByZXNvdXJjZSAqcjsKIAl1MzIgdmFsOwog CiAJLyogbG9vayBmb3IgYW55IGlvIHJlc291cmNlICovCiAJZm91bmQgPSAwOwotCWZvciAoaSA9 IDA7IGkgPCBERVZJQ0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgewotCQlpZiAocGNpX3Jlc291cmNl X2ZsYWdzKGRldiwgaSkgJiBJT1JFU09VUkNFX0lPKSB7CisJcGNpX2Rldl9mb3JfZWFjaF9yZXNv dXJjZShkZXYsIHIpIHsKKwkJaWYgKHJlc291cmNlX3R5cGUocikgPT0gSU9SRVNPVVJDRV9JTykg ewogCQkJZm91bmQgPSAxOwogCQkJYnJlYWs7CiAJCX0KIAl9Ci0KIAlpZiAoIWZvdW5kKQogCQly ZXR1cm47CiAKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9wY2kvcGNpLWxlZ2FjeS5jIGIvYXJjaC9t aXBzL3BjaS9wY2ktbGVnYWN5LmMKaW5kZXggNDY4NzIyYzhhNWM2Li5lYzI1NjdmOGVmZDggMTAw NjQ0Ci0tLSBhL2FyY2gvbWlwcy9wY2kvcGNpLWxlZ2FjeS5jCisrKyBiL2FyY2gvbWlwcy9wY2kv cGNpLWxlZ2FjeS5jCkBAIC0yNDksMTIgKzI0OSwxMSBAQCBzdGF0aWMgaW50IHBjaWJpb3NfZW5h YmxlX3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgbWFzaykKIAogCXBjaV9yZWFk X2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsICZjbWQpOwogCW9sZF9jbWQgPSBjbWQ7Ci0J Zm9yIChpZHggPSAwOyBpZHggPCBQQ0lfTlVNX1JFU09VUkNFUzsgaWR4KyspIHsKKwlwY2lfZGV2 X2Zvcl9lYWNoX3Jlc291cmNlKGRldiwgciwgaWR4KSB7CiAJCS8qIE9ubHkgc2V0IHVwIHRoZSBy ZXF1ZXN0ZWQgc3R1ZmYgKi8KIAkJaWYgKCEobWFzayAmICgxPDxpZHgpKSkKIAkJCWNvbnRpbnVl OwogCi0JCXIgPSAmZGV2LT5yZXNvdXJjZVtpZHhdOwogCQlpZiAoIShyLT5mbGFncyAmIChJT1JF U09VUkNFX0lPIHwgSU9SRVNPVVJDRV9NRU0pKSkKIAkJCWNvbnRpbnVlOwogCQlpZiAoKGlkeCA9 PSBQQ0lfUk9NX1JFU09VUkNFKSAmJgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9w Y2ktY29tbW9uLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYwppbmRleCBkNjdj Zjc5YmY1ZDAuLmU4OGQ3YzlmZWVlYyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9w Y2ktY29tbW9uLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKQEAgLTg4 MCw2ICs4ODAsNyBAQCBpbnQgcGNpYmlvc19yb290X2JyaWRnZV9wcmVwYXJlKHN0cnVjdCBwY2lf aG9zdF9icmlkZ2UgKmJyaWRnZSkKIHN0YXRpYyB2b2lkIHBjaWJpb3NfZml4dXBfcmVzb3VyY2Vz KHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7CiAJc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0g cGNpX2J1c190b19ob3N0KGRldi0+YnVzKTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAlpbnQg aTsKIAogCWlmICghaG9zZSkgewpAQCAtODkxLDkgKzg5Miw5IEBAIHN0YXRpYyB2b2lkIHBjaWJp b3NfZml4dXBfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiAJaWYgKGRldi0+aXNfdmly dGZuKQogCQlyZXR1cm47CiAKLQlmb3IgKGkgPSAwOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNF OyBpKyspIHsKLQkJc3RydWN0IHJlc291cmNlICpyZXMgPSBkZXYtPnJlc291cmNlICsgaTsKKwlw Y2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlKGRldiwgcmVzLCBpKSB7CiAJCXN0cnVjdCBwY2lfYnVz X3JlZ2lvbiByZWc7CisKIAkJaWYgKCFyZXMtPmZsYWdzKQogCQkJY29udGludWU7CiAKQEAgLTE0 NTIsMTEgKzE0NTMsMTAgQEAgdm9pZCBwY2liaW9zX2NsYWltX29uZV9idXMoc3RydWN0IHBjaV9i dXMgKmJ1cykKIAlzdHJ1Y3QgcGNpX2J1cyAqY2hpbGRfYnVzOwogCiAJbGlzdF9mb3JfZWFjaF9l bnRyeShkZXYsICZidXMtPmRldmljZXMsIGJ1c19saXN0KSB7CisJCXN0cnVjdCByZXNvdXJjZSAq cjsKIAkJaW50IGk7CiAKLQkJZm9yIChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKysp IHsKLQkJCXN0cnVjdCByZXNvdXJjZSAqciA9ICZkZXYtPnJlc291cmNlW2ldOwotCisJCXBjaV9k ZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByLCBpKSB7CiAJCQlpZiAoci0+cGFyZW50IHx8ICFy LT5zdGFydCB8fCAhci0+ZmxhZ3MpCiAJCQkJY29udGludWU7CiAKQEAgLTE3MDUsMTkgKzE3MDUs MjAgQEAgRVhQT1JUX1NZTUJPTF9HUEwocGNpYmlvc19zY2FuX3BoYik7CiAKIHN0YXRpYyB2b2lk IGZpeHVwX2hpZGVfaG9zdF9yZXNvdXJjZV9mc2woc3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlp bnQgaSwgY2xhc3MgPSBkZXYtPmNsYXNzID4+IDg7CisJaW50IGNsYXNzID0gZGV2LT5jbGFzcyA+ PiA4OwogCS8qIFdoZW4gY29uZmlndXJlZCBhcyBhZ2VudCwgcHJvZ3JhbW1pbmcgaW50ZXJmYWNl ID0gMSAqLwogCWludCBwcm9nX2lmID0gZGV2LT5jbGFzcyAmIDB4ZjsKKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnI7CiAKIAlpZiAoKGNsYXNzID09IFBDSV9DTEFTU19QUk9DRVNTT1JfUE9XRVJQQyB8fAog CSAgICAgY2xhc3MgPT0gUENJX0NMQVNTX0JSSURHRV9PVEhFUikgJiYKIAkJKGRldi0+aGRyX3R5 cGUgPT0gUENJX0hFQURFUl9UWVBFX05PUk1BTCkgJiYKIAkJKHByb2dfaWYgPT0gMCkgJiYKIAkJ KGRldi0+YnVzLT5wYXJlbnQgPT0gTlVMTCkpIHsKLQkJZm9yIChpID0gMDsgaSA8IERFVklDRV9D T1VOVF9SRVNPVVJDRTsgaSsrKSB7Ci0JCQlkZXYtPnJlc291cmNlW2ldLnN0YXJ0ID0gMDsKLQkJ CWRldi0+cmVzb3VyY2VbaV0uZW5kID0gMDsKLQkJCWRldi0+cmVzb3VyY2VbaV0uZmxhZ3MgPSAw OworCQlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlKGRldiwgcikgeworCQkJci0+c3RhcnQgPSAw OworCQkJci0+ZW5kID0gMDsKKwkJCXItPmZsYWdzID0gMDsKIAkJfQogCX0KIH0KZGlmZiAtLWdp dCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNHh4L3BjaS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRm b3Jtcy80eHgvcGNpLmMKaW5kZXggY2E1ZGQ3YTU4NDJhLi4wN2RjYzJiODAwN2YgMTAwNjQ0Ci0t LSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNHh4L3BjaS5jCisrKyBiL2FyY2gvcG93ZXJwYy9w bGF0Zm9ybXMvNHh4L3BjaS5jCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBw YzQ0MHNwZV9yZXZBKHZvaWQpCiBzdGF0aWMgdm9pZCBmaXh1cF9wcGM0eHhfcGNpX2JyaWRnZShz dHJ1Y3QgcGNpX2RldiAqZGV2KQogewogCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZTsKLQlp bnQgaTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnI7CiAKIAlpZiAoZGV2LT5kZXZmbiAhPSAwIHx8IGRl di0+YnVzLT5zZWxmICE9IE5VTEwpCiAJCXJldHVybjsKQEAgLTc5LDkgKzc5LDkgQEAgc3RhdGlj IHZvaWQgZml4dXBfcHBjNHh4X3BjaV9icmlkZ2Uoc3RydWN0IHBjaV9kZXYgKmRldikKIAkvKiBI aWRlIHRoZSBQQ0kgaG9zdCBCQVJzIGZyb20gdGhlIGtlcm5lbCBhcyB0aGVpciBjb250ZW50IGRv ZXNuJ3QKIAkgKiBmaXQgd2VsbCBpbiB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudAogCSAqLwotCWZv ciAoaSA9IDA7IGkgPCBERVZJQ0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgewotCQlkZXYtPnJlc291 cmNlW2ldLnN0YXJ0ID0gZGV2LT5yZXNvdXJjZVtpXS5lbmQgPSAwOwotCQlkZXYtPnJlc291cmNl W2ldLmZsYWdzID0gMDsKKwlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNlKGRldiwgcikgeworCQly LT5zdGFydCA9IHItPmVuZCA9IDA7CisJCXItPmZsYWdzID0gMDsKIAl9CiAKIAlwcmludGsoS0VS Tl9JTkZPICJQQ0k6IEhpZGluZyA0eHggaG9zdCBicmlkZ2UgcmVzb3VyY2VzICVzXG4iLApkaWZm IC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfcGNpLmMgYi9hcmNo L3Bvd2VycGMvcGxhdGZvcm1zLzUyeHgvbXBjNTJ4eF9wY2kuYwppbmRleCA4NTllMjgxOGM0M2Qu LjBjYTQ0MDFiYTc4MSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21w YzUyeHhfcGNpLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfcGNp LmMKQEAgLTMyNywxNCArMzI3LDEzIEBAIG1wYzUyeHhfcGNpX3NldHVwKHN0cnVjdCBwY2lfY29u dHJvbGxlciAqaG9zZSwKIHN0YXRpYyB2b2lkCiBtcGM1Mnh4X3BjaV9maXh1cF9yZXNvdXJjZXMo c3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlpbnQgaTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsK IAogCXByX2RlYnVnKCIlcygpICUuNHg6JS40eFxuIiwgX19mdW5jX18sIGRldi0+dmVuZG9yLCBk ZXYtPmRldmljZSk7CiAKIAkvKiBXZSBkb24ndCByZWx5IG9uIGJvb3QgbG9hZGVyIGZvciBQQ0kg YW5kIHJlc2V0cyBhbGwKIAkgICBkZXZpY2VzICovCi0JZm9yIChpID0gMDsgaSA8IERFVklDRV9D T1VOVF9SRVNPVVJDRTsgaSsrKSB7Ci0JCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gJmRldi0+cmVz b3VyY2VbaV07CisJcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZShkZXYsIHJlcykgewogCQlpZiAo cmVzLT5lbmQgPiByZXMtPnN0YXJ0KSB7CS8qIE9ubHkgdmFsaWQgcmVzb3VyY2VzICovCiAJCQly ZXMtPmVuZCAtPSByZXMtPnN0YXJ0OwogCQkJcmVzLT5zdGFydCA9IDA7CmRpZmYgLS1naXQgYS9h cmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcGNpLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZv cm1zL3BzZXJpZXMvcGNpLmMKaW5kZXggNjBlMGE1ODkyOGVmLi4xNzcyYWUzZDE5M2QgMTAwNjQ0 Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wY2kuYworKysgYi9hcmNoL3Bv d2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcGNpLmMKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIF9f aW5pdCBwU2VyaWVzX2ZpbmFsX2ZpeHVwKHZvaWQpCiAgKi8KIHN0YXRpYyB2b2lkIGZpeHVwX3dp bmJvbmRfODJjMTA1KHN0cnVjdCBwY2lfZGV2KiBkZXYpCiB7Ci0JaW50IGk7CisJc3RydWN0IHJl c291cmNlICpyOwogCXVuc2lnbmVkIGludCByZWc7CiAKIAlpZiAoIW1hY2hpbmVfaXMocHNlcmll cykpCkBAIC0yNTEsMTQgKzI1MSwxNCBAQCBzdGF0aWMgdm9pZCBmaXh1cF93aW5ib25kXzgyYzEw NShzdHJ1Y3QgcGNpX2RldiogZGV2KQogCS8qIEVuYWJsZSBMRUdJUlEgdG8gdXNlIElOVEMgaW5z dGVhZCBvZiBJU0EgaW50ZXJydXB0cyAqLwogCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCAw eDQwLCByZWcgfCAoMTw8MTEpKTsKIAotCWZvciAoaSA9IDA7IGkgPCBERVZJQ0VfQ09VTlRfUkVT T1VSQ0U7ICsraSkgeworCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByKSB7CiAJCS8q IHphcCB0aGUgMm5kIGZ1bmN0aW9uIG9mIHRoZSB3aW5ib25kIGNoaXAgKi8KLQkJaWYgKGRldi0+ cmVzb3VyY2VbaV0uZmxhZ3MgJiBJT1JFU09VUkNFX0lPCi0JCSAgICAmJiBkZXYtPmJ1cy0+bnVt YmVyID09IDAgJiYgZGV2LT5kZXZmbiA9PSAweDgxKQotCQkJZGV2LT5yZXNvdXJjZVtpXS5mbGFn cyAmPSB+SU9SRVNPVVJDRV9JTzsKLQkJaWYgKGRldi0+cmVzb3VyY2VbaV0uc3RhcnQgPT0gMCAm JiBkZXYtPnJlc291cmNlW2ldLmVuZCkgewotCQkJZGV2LT5yZXNvdXJjZVtpXS5mbGFncyA9IDA7 Ci0JCQlkZXYtPnJlc291cmNlW2ldLmVuZCA9IDA7CisJCWlmIChkZXYtPmJ1cy0+bnVtYmVyID09 IDAgJiYgZGV2LT5kZXZmbiA9PSAweDgxICYmCisJCSAgICByLT5mbGFncyAmIElPUkVTT1VSQ0Vf SU8pCisJCQlyLT5mbGFncyAmPSB+SU9SRVNPVVJDRV9JTzsKKwkJaWYgKHItPnN0YXJ0ID09IDAg JiYgci0+ZW5kKSB7CisJCQlyLT5mbGFncyA9IDA7CisJCQlyLT5lbmQgPSAwOwogCQl9CiAJfQog fQpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9kcml2ZXJzL3BjaS9wY2llLXNoNzc4Ni5jIGIvYXJjaC9z aC9kcml2ZXJzL3BjaS9wY2llLXNoNzc4Ni5jCmluZGV4IGIwYzJhNTIzOGQwNC4uNGY1ZTQ5ZjEw ODA1IDEwMDY0NAotLS0gYS9hcmNoL3NoL2RyaXZlcnMvcGNpL3BjaWUtc2g3Nzg2LmMKKysrIGIv YXJjaC9zaC9kcml2ZXJzL3BjaS9wY2llLXNoNzc4Ni5jCkBAIC0xNDAsMTIgKzE0MCwxMiBAQCBz dGF0aWMgdm9pZCBzaDc3ODZfcGNpX2ZpeHVwKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiAJICogUHJl dmVudCBlbnVtZXJhdGlvbiBvZiByb290IGNvbXBsZXggcmVzb3VyY2VzLgogCSAqLwogCWlmIChw Y2lfaXNfcm9vdF9idXMoZGV2LT5idXMpICYmIGRldi0+ZGV2Zm4gPT0gMCkgewotCQlpbnQgaTsK KwkJc3RydWN0IHJlc291cmNlICpyOwogCi0JCWZvciAoaSA9IDA7IGkgPCBERVZJQ0VfQ09VTlRf UkVTT1VSQ0U7IGkrKykgewotCQkJZGV2LT5yZXNvdXJjZVtpXS5zdGFydAk9IDA7Ci0JCQlkZXYt PnJlc291cmNlW2ldLmVuZAk9IDA7Ci0JCQlkZXYtPnJlc291cmNlW2ldLmZsYWdzCT0gMDsKKwkJ cGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZShkZXYsIHIpIHsKKwkJCXItPnN0YXJ0CT0gMDsKKwkJ CXItPmVuZAkJPSAwOworCQkJci0+ZmxhZ3MJPSAwOwogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEv YXJjaC9zcGFyYy9rZXJuZWwvbGVvbl9wY2kuYyBiL2FyY2gvc3BhcmMva2VybmVsL2xlb25fcGNp LmMKaW5kZXggZTVlNWZmNmI5YTVjLi5iNjY2M2EzZmJhZTkgMTAwNjQ0Ci0tLSBhL2FyY2gvc3Bh cmMva2VybmVsL2xlb25fcGNpLmMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvbGVvbl9wY2kuYwpA QCAtNjIsMTUgKzYyLDE0IEBAIHZvaWQgbGVvbl9wY2lfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpvZmRldiwgc3RydWN0IGxlb25fcGNpX2luZm8gKmluZm8pCiAKIGludCBwY2liaW9zX2Vu YWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IG1hc2spCiB7CisJc3RydWN0IHJl c291cmNlICpyZXM7CiAJdTE2IGNtZCwgb2xkY21kOwogCWludCBpOwogCiAJcGNpX3JlYWRfY29u ZmlnX3dvcmQoZGV2LCBQQ0lfQ09NTUFORCwgJmNtZCk7CiAJb2xkY21kID0gY21kOwogCi0JZm9y IChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJc3RydWN0IHJlc291cmNl ICpyZXMgPSAmZGV2LT5yZXNvdXJjZVtpXTsKLQorCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2Uo ZGV2LCByZXMsIGkpIHsKIAkJLyogT25seSBzZXQgdXAgdGhlIHJlcXVlc3RlZCBzdHVmZiAqLwog CQlpZiAoIShtYXNrICYgKDE8PGkpKSkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvYXJjaC9z cGFyYy9rZXJuZWwvcGNpLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9wY2kuYwppbmRleCBjYjFlZjI1 MTE2ZTkuLmE5NDhhNDk4MTdjNyAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvcGNpLmMK KysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvcGNpLmMKQEAgLTY2MywxMSArNjYzLDEwIEBAIHN0YXRp YyB2b2lkIHBjaV9jbGFpbV9idXNfcmVzb3VyY2VzKHN0cnVjdCBwY2lfYnVzICpidXMpCiAJc3Ry dWN0IHBjaV9kZXYgKmRldjsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCAmYnVzLT5kZXZp Y2VzLCBidXNfbGlzdCkgeworCQlzdHJ1Y3QgcmVzb3VyY2UgKnI7CiAJCWludCBpOwogCi0JCWZv ciAoaSA9IDA7IGkgPCBQQ0lfTlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCQlzdHJ1Y3QgcmVzb3Vy Y2UgKnIgPSAmZGV2LT5yZXNvdXJjZVtpXTsKLQorCQlwY2lfZGV2X2Zvcl9lYWNoX3Jlc291cmNl KGRldiwgciwgaSkgewogCQkJaWYgKHItPnBhcmVudCB8fCAhci0+c3RhcnQgfHwgIXItPmZsYWdz KQogCQkJCWNvbnRpbnVlOwogCkBAIC03MjQsMTUgKzcyMywxNCBAQCBzdHJ1Y3QgcGNpX2J1cyAq cGNpX3NjYW5fb25lX3BibShzdHJ1Y3QgcGNpX3BibV9pbmZvICpwYm0sCiAKIGludCBwY2liaW9z X2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IG1hc2spCiB7CisJc3RydWN0 IHJlc291cmNlICpyZXM7CiAJdTE2IGNtZCwgb2xkY21kOwogCWludCBpOwogCiAJcGNpX3JlYWRf Y29uZmlnX3dvcmQoZGV2LCBQQ0lfQ09NTUFORCwgJmNtZCk7CiAJb2xkY21kID0gY21kOwogCi0J Zm9yIChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJc3RydWN0IHJlc291 cmNlICpyZXMgPSAmZGV2LT5yZXNvdXJjZVtpXTsKLQorCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3Vy Y2UoZGV2LCByZXMsIGkpIHsKIAkJLyogT25seSBzZXQgdXAgdGhlIHJlcXVlc3RlZCBzdHVmZiAq LwogCQlpZiAoIShtYXNrICYgKDE8PGkpKSkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvYXJj aC9zcGFyYy9rZXJuZWwvcGNpYy5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvcGNpYy5jCmluZGV4IGVl NGM5YTlhMTcxYy4uMjVmZTBhMDYxNzMyIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9w Y2ljLmMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvcGNpYy5jCkBAIC02NDMsMTUgKzY0MywxNCBA QCB2b2lkIHBjaWJpb3NfZml4dXBfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMpCiAKIGludCBwY2li aW9zX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IG1hc2spCiB7CisJc3Ry dWN0IHJlc291cmNlICpyZXM7CiAJdTE2IGNtZCwgb2xkY21kOwogCWludCBpOwogCiAJcGNpX3Jl YWRfY29uZmlnX3dvcmQoZGV2LCBQQ0lfQ09NTUFORCwgJmNtZCk7CiAJb2xkY21kID0gY21kOwog Ci0JZm9yIChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJc3RydWN0IHJl c291cmNlICpyZXMgPSAmZGV2LT5yZXNvdXJjZVtpXTsKLQorCXBjaV9kZXZfZm9yX2VhY2hfcmVz b3VyY2UoZGV2LCByZXMsIGkpIHsKIAkJLyogT25seSBzZXQgdXAgdGhlIHJlcXVlc3RlZCBzdHVm ZiAqLwogCQlpZiAoIShtYXNrICYgKDE8PGkpKSkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9wY2kvcmVtb3ZlLmMgYi9kcml2ZXJzL3BjaS9yZW1vdmUuYwppbmRleCAwMTQ1YWVm MWI5MzAuLmMwNDllZGRjMWUyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcmVtb3ZlLmMKKysr IGIvZHJpdmVycy9wY2kvcmVtb3ZlLmMKQEAgLTUsMTAgKzUsOSBAQAogCiBzdGF0aWMgdm9pZCBw Y2lfZnJlZV9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlpbnQgaTsKKwlzdHJ1 Y3QgcmVzb3VyY2UgKnJlczsKIAotCWZvciAoaSA9IDA7IGkgPCBQQ0lfTlVNX1JFU09VUkNFUzsg aSsrKSB7Ci0JCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gZGV2LT5yZXNvdXJjZSArIGk7CisJcGNp X2Rldl9mb3JfZWFjaF9yZXNvdXJjZShkZXYsIHJlcykgewogCQlpZiAocmVzLT5wYXJlbnQpCiAJ CQlyZWxlYXNlX3Jlc291cmNlKHJlcyk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvc2V0 dXAtYnVzLmMgYi9kcml2ZXJzL3BjaS9zZXR1cC1idXMuYwppbmRleCBjNjkwNTcyYjEwY2UuLjAy N2I5ODVkZDFlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKKysrIGIvZHJp dmVycy9wY2kvc2V0dXAtYnVzLmMKQEAgLTEyNCwyMCArMTI0LDE3IEBAIHN0YXRpYyByZXNvdXJj ZV9zaXplX3QgZ2V0X3Jlc19hZGRfYWxpZ24oc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwKIAlyZXR1 cm4gZGV2X3JlcyA/IGRldl9yZXMtPm1pbl9hbGlnbiA6IDA7CiB9CiAKLQogLyogU29ydCByZXNv dXJjZXMgYnkgYWxpZ25tZW50ICovCiBzdGF0aWMgdm9pZCBwZGV2X3NvcnRfcmVzb3VyY2VzKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCiB7CisJc3RydWN0IHJl c291cmNlICpyOwogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSA8IFBDSV9OVU1fUkVTT1VSQ0VT OyBpKyspIHsKLQkJc3RydWN0IHJlc291cmNlICpyOworCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3Vy Y2UoZGV2LCByLCBpKSB7CiAJCXN0cnVjdCBwY2lfZGV2X3Jlc291cmNlICpkZXZfcmVzLCAqdG1w OwogCQlyZXNvdXJjZV9zaXplX3Qgcl9hbGlnbjsKIAkJc3RydWN0IGxpc3RfaGVhZCAqbjsKIAot CQlyID0gJmRldi0+cmVzb3VyY2VbaV07Ci0KIAkJaWYgKHItPmZsYWdzICYgSU9SRVNPVVJDRV9Q Q0lfRklYRUQpCiAJCQljb250aW51ZTsKIApAQCAtODk1LDEwICs4OTIsOSBAQCBzdGF0aWMgdm9p ZCBwYnVzX3NpemVfaW8oc3RydWN0IHBjaV9idXMgKmJ1cywgcmVzb3VyY2Vfc2l6ZV90IG1pbl9z aXplLAogCiAJbWluX2FsaWduID0gd2luZG93X2FsaWdubWVudChidXMsIElPUkVTT1VSQ0VfSU8p OwogCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCAmYnVzLT5kZXZpY2VzLCBidXNfbGlzdCkgewot CQlpbnQgaTsKKwkJc3RydWN0IHJlc291cmNlICpyOwogCi0JCWZvciAoaSA9IDA7IGkgPCBQQ0lf TlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCQlzdHJ1Y3QgcmVzb3VyY2UgKnIgPSAmZGV2LT5yZXNv dXJjZVtpXTsKKwkJcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZShkZXYsIHIpIHsKIAkJCXVuc2ln bmVkIGxvbmcgcl9zaXplOwogCiAJCQlpZiAoci0+cGFyZW50IHx8ICEoci0+ZmxhZ3MgJiBJT1JF U09VUkNFX0lPKSkKQEAgLTEwMTQsMTAgKzEwMTAsMTAgQEAgc3RhdGljIGludCBwYnVzX3NpemVf bWVtKHN0cnVjdCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGxvbmcgbWFzaywKIAlzaXplID0gMDsK IAogCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCAmYnVzLT5kZXZpY2VzLCBidXNfbGlzdCkgewor CQlzdHJ1Y3QgcmVzb3VyY2UgKnI7CiAJCWludCBpOwogCi0JCWZvciAoaSA9IDA7IGkgPCBQQ0lf TlVNX1JFU09VUkNFUzsgaSsrKSB7Ci0JCQlzdHJ1Y3QgcmVzb3VyY2UgKnIgPSAmZGV2LT5yZXNv dXJjZVtpXTsKKwkJcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZShkZXYsIHIsIGkpIHsKIAkJCXJl c291cmNlX3NpemVfdCByX3NpemU7CiAKIAkJCWlmIChyLT5wYXJlbnQgfHwgKHItPmZsYWdzICYg SU9SRVNPVVJDRV9QQ0lfRklYRUQpIHx8CkBAIC0xMzU4LDExICsxMzU0LDEwIEBAIHN0YXRpYyB2 b2lkIGFzc2lnbl9maXhlZF9yZXNvdXJjZV9vbl9idXMoc3RydWN0IHBjaV9idXMgKmIsIHN0cnVj dCByZXNvdXJjZSAqcikKICAqLwogc3RhdGljIHZvaWQgcGRldl9hc3NpZ25fZml4ZWRfcmVzb3Vy Y2VzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7Ci0JaW50IGk7CisJc3RydWN0IHJlc291cmNlICpy OwogCi0JZm9yIChpID0gMDsgaSA8ICBQQ0lfTlVNX1JFU09VUkNFUzsgaSsrKSB7CisJcGNpX2Rl dl9mb3JfZWFjaF9yZXNvdXJjZShkZXYsIHIpIHsKIAkJc3RydWN0IHBjaV9idXMgKmI7Ci0JCXN0 cnVjdCByZXNvdXJjZSAqciA9ICZkZXYtPnJlc291cmNlW2ldOwogCiAJCWlmIChyLT5wYXJlbnQg fHwgIShyLT5mbGFncyAmIElPUkVTT1VSQ0VfUENJX0ZJWEVEKSB8fAogCQkgICAgIShyLT5mbGFn cyAmIChJT1JFU09VUkNFX0lPIHwgSU9SRVNPVVJDRV9NRU0pKSkKQEAgLTE3OTUsMTEgKzE3OTAs OSBAQCBzdGF0aWMgdm9pZCByZW1vdmVfZGV2X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqZGV2 LCBzdHJ1Y3QgcmVzb3VyY2UgKmlvLAogCQkJCSBzdHJ1Y3QgcmVzb3VyY2UgKm1taW8sCiAJCQkJ IHN0cnVjdCByZXNvdXJjZSAqbW1pb19wcmVmKQogewotCWludCBpOwotCi0JZm9yIChpID0gMDsg aSA8IFBDSV9OVU1fUkVTT1VSQ0VTOyBpKyspIHsKLQkJc3RydWN0IHJlc291cmNlICpyZXMgPSAm ZGV2LT5yZXNvdXJjZVtpXTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAorCXBjaV9kZXZfZm9y X2VhY2hfcmVzb3VyY2UoZGV2LCByZXMpIHsKIAkJaWYgKHJlc291cmNlX3R5cGUocmVzKSA9PSBJ T1JFU09VUkNFX0lPKSB7CiAJCQlyZW1vdmVfZGV2X3Jlc291cmNlKGlvLCBkZXYsIHJlcyk7CiAJ CX0gZWxzZSBpZiAocmVzb3VyY2VfdHlwZShyZXMpID09IElPUkVTT1VSQ0VfTUVNKSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3BjaS9zZXR1cC1yZXMuYyBiL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5j CmluZGV4IGI0OTJlNjdjM2Q4Ny4uOTY3ZjlhNzU4OTIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bj aS9zZXR1cC1yZXMuYworKysgYi9kcml2ZXJzL3BjaS9zZXR1cC1yZXMuYwpAQCAtNDg0LDEyICs0 ODQsMTAgQEAgaW50IHBjaV9lbmFibGVfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGlu dCBtYXNrKQogCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsICZjbWQpOwog CW9sZF9jbWQgPSBjbWQ7CiAKLQlmb3IgKGkgPSAwOyBpIDwgUENJX05VTV9SRVNPVVJDRVM7IGkr KykgeworCXBjaV9kZXZfZm9yX2VhY2hfcmVzb3VyY2UoZGV2LCByLCBpKSB7CiAJCWlmICghKG1h c2sgJiAoMSA8PCBpKSkpCiAJCQljb250aW51ZTsKIAotCQlyID0gJmRldi0+cmVzb3VyY2VbaV07 Ci0KIAkJaWYgKCEoci0+ZmxhZ3MgJiAoSU9SRVNPVVJDRV9JTyB8IElPUkVTT1VSQ0VfTUVNKSkp CiAJCQljb250aW51ZTsKIAkJaWYgKChpID09IFBDSV9ST01fUkVTT1VSQ0UpICYmCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3BjaS92Z2FhcmIuYyBiL2RyaXZlcnMvcGNpL3ZnYWFyYi5jCmluZGV4IGY4 MGI2ZWM4OGRjMy4uNWE2OTYwNzhiMzgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS92Z2FhcmIu YworKysgYi9kcml2ZXJzL3BjaS92Z2FhcmIuYwpAQCAtNTQ4LDEwICs1NDgsOCBAQCBzdGF0aWMg Ym9vbCB2Z2FfaXNfZmlybXdhcmVfZGVmYXVsdChzdHJ1Y3QgcGNpX2RldiAqcGRldikKICNpZiBk ZWZpbmVkKENPTkZJR19YODYpIHx8IGRlZmluZWQoQ09ORklHX0lBNjQpCiAJdTY0IGJhc2UgPSBz Y3JlZW5faW5mby5sZmJfYmFzZTsKIAl1NjQgc2l6ZSA9IHNjcmVlbl9pbmZvLmxmYl9zaXplOwor CXN0cnVjdCByZXNvdXJjZSAqcjsKIAl1NjQgbGltaXQ7Ci0JcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0 LCBlbmQ7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgaTsKIAogCS8qIFNlbGVjdCB0aGUg ZGV2aWNlIG93bmluZyB0aGUgYm9vdCBmcmFtZWJ1ZmZlciBpZiB0aGVyZSBpcyBvbmUgKi8KIApA QCAtNTYxLDE5ICs1NTksMTQgQEAgc3RhdGljIGJvb2wgdmdhX2lzX2Zpcm13YXJlX2RlZmF1bHQo c3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJbGltaXQgPSBiYXNlICsgc2l6ZTsKIAogCS8qIERvZXMg ZmlybXdhcmUgZnJhbWVidWZmZXIgYmVsb25nIHRvIHVzPyAqLwotCWZvciAoaSA9IDA7IGkgPCBE RVZJQ0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgewotCQlmbGFncyA9IHBjaV9yZXNvdXJjZV9mbGFn cyhwZGV2LCBpKTsKLQotCQlpZiAoKGZsYWdzICYgSU9SRVNPVVJDRV9NRU0pID09IDApCisJcGNp X2Rldl9mb3JfZWFjaF9yZXNvdXJjZShwZGV2LCByKSB7CisJCWlmIChyZXNvdXJjZV90eXBlKHIp ICE9IElPUkVTT1VSQ0VfTUVNKQogCQkJY29udGludWU7CiAKLQkJc3RhcnQgPSBwY2lfcmVzb3Vy Y2Vfc3RhcnQocGRldiwgaSk7Ci0JCWVuZCAgPSBwY2lfcmVzb3VyY2VfZW5kKHBkZXYsIGkpOwot Ci0JCWlmICghc3RhcnQgfHwgIWVuZCkKKwkJaWYgKCFyLT5zdGFydCB8fCAhci0+ZW5kKQogCQkJ Y29udGludWU7CiAKLQkJaWYgKGJhc2UgPCBzdGFydCB8fCBsaW1pdCA+PSBlbmQpCisJCWlmIChi YXNlIDwgci0+c3RhcnQgfHwgbGltaXQgPj0gci0+ZW5kKQogCQkJY29udGludWU7CiAKIAkJcmV0 dXJuIHRydWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS94ZW4tcGNpZnJvbnQuYyBiL2RyaXZl cnMvcGNpL3hlbi1wY2lmcm9udC5jCmluZGV4IGZjZDAyOWNhMmViMS4uODNjMGFiNTA2NzZkIDEw MDY0NAotLS0gYS9kcml2ZXJzL3BjaS94ZW4tcGNpZnJvbnQuYworKysgYi9kcml2ZXJzL3BjaS94 ZW4tcGNpZnJvbnQuYwpAQCAtMzkwLDkgKzM5MCw3IEBAIHN0YXRpYyBpbnQgcGNpZnJvbnRfY2xh aW1fcmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgdm9pZCAqZGF0YSkKIAlpbnQgaTsKIAlz dHJ1Y3QgcmVzb3VyY2UgKnI7CiAKLQlmb3IgKGkgPSAwOyBpIDwgUENJX05VTV9SRVNPVVJDRVM7 IGkrKykgewotCQlyID0gJmRldi0+cmVzb3VyY2VbaV07Ci0KKwlwY2lfZGV2X2Zvcl9lYWNoX3Jl c291cmNlKGRldiwgciwgaSkgewogCQlpZiAoIXItPnBhcmVudCAmJiByLT5zdGFydCAmJiByLT5m bGFncykgewogCQkJZGV2X2luZm8oJnBkZXYtPnhkZXYtPmRldiwgImNsYWltaW5nIHJlc291cmNl ICVzLyVkXG4iLAogCQkJCXBjaV9uYW1lKGRldiksIGkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9w bnAvcXVpcmtzLmMgYi9kcml2ZXJzL3BucC9xdWlya3MuYwppbmRleCBhYzk4Yjk5MTkwMjkuLjYw ODVhMTQ3MWRlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wbnAvcXVpcmtzLmMKKysrIGIvZHJpdmVy cy9wbnAvcXVpcmtzLmMKQEAgLTIyOSw4ICsyMjksNyBAQCBzdGF0aWMgdm9pZCBxdWlya19hZDE4 MTVfbXB1X3Jlc291cmNlcyhzdHJ1Y3QgcG5wX2RldiAqZGV2KQogc3RhdGljIHZvaWQgcXVpcmtf c3lzdGVtX3BjaV9yZXNvdXJjZXMoc3RydWN0IHBucF9kZXYgKmRldikKIHsKIAlzdHJ1Y3QgcGNp X2RldiAqcGRldiA9IE5VTEw7Ci0Jc3RydWN0IHJlc291cmNlICpyZXM7Ci0JcmVzb3VyY2Vfc2l6 ZV90IHBucF9zdGFydCwgcG5wX2VuZCwgcGNpX3N0YXJ0LCBwY2lfZW5kOworCXN0cnVjdCByZXNv dXJjZSAqcmVzLCAqcjsKIAlpbnQgaSwgajsKIAogCS8qCkBAIC0yNDMsMzIgKzI0MiwyNiBAQCBz dGF0aWMgdm9pZCBxdWlya19zeXN0ZW1fcGNpX3Jlc291cmNlcyhzdHJ1Y3QgcG5wX2RldiAqZGV2 KQogCSAqIHNvIHRoZXkgd29uJ3QgYmUgY2xhaW1lZCBieSB0aGUgUE5QIHN5c3RlbSBkcml2ZXIu CiAJICovCiAJZm9yX2VhY2hfcGNpX2RldihwZGV2KSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBERVZJ Q0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgewotCQkJdW5zaWduZWQgbG9uZyBmbGFncywgdHlwZTsK KwkJcGNpX2Rldl9mb3JfZWFjaF9yZXNvdXJjZShwZGV2LCByLCBpKSB7CisJCQl1bnNpZ25lZCBs b25nIHR5cGUgPSByZXNvdXJjZV90eXBlKHIpOwogCi0JCQlmbGFncyA9IHBjaV9yZXNvdXJjZV9m bGFncyhwZGV2LCBpKTsKLQkJCXR5cGUgPSBmbGFncyAmIChJT1JFU09VUkNFX0lPIHwgSU9SRVNP VVJDRV9NRU0pOwotCQkJaWYgKCF0eXBlIHx8IHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkgPT0g MCkKKwkJCWlmICghKHR5cGUgPT0gSU9SRVNPVVJDRV9JTyB8fCB0eXBlID09IElPUkVTT1VSQ0Vf TUVNKSB8fAorCQkJICAgIHJlc291cmNlX3NpemUocikgPT0gMCkKIAkJCQljb250aW51ZTsKIAot CQkJaWYgKGZsYWdzICYgSU9SRVNPVVJDRV9VTlNFVCkKKwkJCWlmIChyLT5mbGFncyAmIElPUkVT T1VSQ0VfVU5TRVQpCiAJCQkJY29udGludWU7CiAKLQkJCXBjaV9zdGFydCA9IHBjaV9yZXNvdXJj ZV9zdGFydChwZGV2LCBpKTsKLQkJCXBjaV9lbmQgPSBwY2lfcmVzb3VyY2VfZW5kKHBkZXYsIGkp OwogCQkJZm9yIChqID0gMDsKIAkJCSAgICAgKHJlcyA9IHBucF9nZXRfcmVzb3VyY2UoZGV2LCB0 eXBlLCBqKSk7IGorKykgewogCQkJCWlmIChyZXMtPnN0YXJ0ID09IDAgJiYgcmVzLT5lbmQgPT0g MCkKIAkJCQkJY29udGludWU7CiAKLQkJCQlwbnBfc3RhcnQgPSByZXMtPnN0YXJ0OwotCQkJCXBu cF9lbmQgPSByZXMtPmVuZDsKLQogCQkJCS8qCiAJCQkJICogSWYgdGhlIFBOUCByZWdpb24gZG9l c24ndCBvdmVybGFwIHRoZSBQQ0kKIAkJCQkgKiByZWdpb24gYXQgYWxsLCB0aGVyZSdzIG5vIHBy b2JsZW0uCiAJCQkJICovCi0JCQkJaWYgKHBucF9lbmQgPCBwY2lfc3RhcnQgfHwgcG5wX3N0YXJ0 ID4gcGNpX2VuZCkKKwkJCQlpZiAoIXJlc291cmNlX292ZXJsYXBzKHJlcywgcikpCiAJCQkJCWNv bnRpbnVlOwogCiAJCQkJLyoKQEAgLTI3OCw4ICsyNzEsNyBAQCBzdGF0aWMgdm9pZCBxdWlya19z eXN0ZW1fcGNpX3Jlc291cmNlcyhzdHJ1Y3QgcG5wX2RldiAqZGV2KQogCQkJCSAqIFBOUCBkZXZp Y2UgZGVzY3JpYmVzIGEgYnJpZGdlIHdpdGggUENJCiAJCQkJICogYmVoaW5kIGl0LgogCQkJCSAq LwotCQkJCWlmIChwbnBfc3RhcnQgPD0gcGNpX3N0YXJ0ICYmCi0JCQkJICAgIHBucF9lbmQgPj0g cGNpX2VuZCkKKwkJCQlpZiAocmVzLT5zdGFydCA8PSByLT5zdGFydCAmJiByZXMtPmVuZCA+PSBy LT5lbmQpCiAJCQkJCWNvbnRpbnVlOwogCiAJCQkJLyoKQEAgLTI4OCw5ICsyODAsOCBAQCBzdGF0 aWMgdm9pZCBxdWlya19zeXN0ZW1fcGNpX3Jlc291cmNlcyhzdHJ1Y3QgcG5wX2RldiAqZGV2KQog CQkJCSAqIGRyaXZlciBmcm9tIHJlcXVlc3RpbmcgaXRzIHJlc291cmNlcy4KIAkJCQkgKi8KIAkJ CQlkZXZfd2FybigmZGV2LT5kZXYsCi0JCQkJCSAiZGlzYWJsaW5nICVwUiBiZWNhdXNlIGl0IG92 ZXJsYXBzICIKLQkJCQkJICIlcyBCQVIgJWQgJXBSXG4iLCByZXMsCi0JCQkJCSBwY2lfbmFtZShw ZGV2KSwgaSwgJnBkZXYtPnJlc291cmNlW2ldKTsKKwkJCQkJICJkaXNhYmxpbmcgJXBSIGJlY2F1 c2UgaXQgb3ZlcmxhcHMgJXMgQkFSICVkICVwUlxuIiwKKwkJCQkJIHJlcywgcGNpX25hbWUocGRl diksIGksIHIpOwogCQkJCXJlcy0+ZmxhZ3MgfD0gSU9SRVNPVVJDRV9ESVNBQkxFRDsKIAkJCX0K IAkJfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2kuaCBiL2luY2x1ZGUvbGludXgvcGNp LmgKaW5kZXggYWVhYTk1NDU1ZDRjLi41Y2FjZDllNGM4Y2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv bGludXgvcGNpLmgKKysrIGIvaW5jbHVkZS9saW51eC9wY2kuaApAQCAtMjYsNiArMjYsNyBAQAog CiAjaW5jbHVkZSA8bGludXgvbW9kX2RldmljZXRhYmxlLmg+CiAKKyNpbmNsdWRlIDxsaW51eC9h cmdzLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+ CiAjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CkBAIC0yMDAzLDYgKzIwMDQsMjAgQEAgaW50IHBj aV9pb2Jhcl9wZm4oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hKTsKIAkocGNpX3Jlc291cmNlX2VuZCgoZGV2KSwgKGJhcikpID8gCQkJCVwK IAkgcmVzb3VyY2Vfc2l6ZShwY2lfcmVzb3VyY2VfbigoZGV2KSwgKGJhcikpKSA6IDApCiAKKyNk ZWZpbmUgX19wY2lfZGV2X2Zvcl9lYWNoX3JlczAoZGV2LCByZXMsIC4uLikJCQkJXAorCWZvciAo dW5zaWduZWQgaW50IF9fYiA9IDA7CQkJCQlcCisJICAgICByZXMgPSBwY2lfcmVzb3VyY2Vfbihk ZXYsIF9fYiksIF9fYiA8IFBDSV9OVU1fUkVTT1VSQ0VTOwlcCisJICAgICBfX2IrKykKKworI2Rl ZmluZSBfX3BjaV9kZXZfZm9yX2VhY2hfcmVzMShkZXYsIHJlcywgX19iKQkJCQlcCisJZm9yIChf X2IgPSAwOwkJCQkJCQlcCisJICAgICByZXMgPSBwY2lfcmVzb3VyY2VfbihkZXYsIF9fYiksIF9f YiA8IFBDSV9OVU1fUkVTT1VSQ0VTOwlcCisJICAgICBfX2IrKykKKworI2RlZmluZSBwY2lfZGV2 X2Zvcl9lYWNoX3Jlc291cmNlKGRldiwgcmVzLCAuLi4pCQkJXAorCUNPTkNBVEVOQVRFKF9fcGNp X2Rldl9mb3JfZWFjaF9yZXMsIENPVU5UX0FSR1MoX19WQV9BUkdTX18pKSAJXAorCQkgICAgKGRl diwgcmVzLCBfX1ZBX0FSR1NfXykKKwogLyoKICAqIFNpbWlsYXIgdG8gdGhlIGhlbHBlcnMgYWJv dmUsIHRoZXNlIG1hbmlwdWxhdGUgcGVyLXBjaV9kZXYKICAqIGRyaXZlci1zcGVjaWZpYyBkYXRh LiAgVGhleSBhcmUgcmVhbGx5IGp1c3QgYSB3cmFwcGVyIGFyb3VuZAotLSAKMi40MC4wLjEuZ2Fh ODk0NjIxN2EwYgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWFybS1rZXJuZWwK