From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964862AbVIFO2z (ORCPT ); Tue, 6 Sep 2005 10:28:55 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S964869AbVIFO2w (ORCPT ); Tue, 6 Sep 2005 10:28:52 -0400 Received: from e31.co.us.ibm.com ([32.97.110.129]:29691 "EHLO e31.co.us.ibm.com") by vger.kernel.org with ESMTP id S964862AbVIFO2v (ORCPT ); Tue, 6 Sep 2005 10:28:51 -0400 Message-ID: <431DA79C.1050500@us.ibm.com> Date: Tue, 06 Sep 2005 09:28:44 -0500 From: Brian King Reply-To: brking@us.ibm.com User-Agent: Mozilla Thunderbird 1.0 (X11/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Grant Grundler CC: Paul Mackerras , Andrew Morton , greg@kroah.com, matthew@wil.cx, benh@kernel.crashing.org, ak@muc.de, linux-kernel@vger.kernel.org, alan@lxorguk.ukuu.org.uk, linux-pci@atrey.karlin.mff.cuni.cz Subject: Re: [PATCH 1/2] pci: Block config access during BIST (resend) References: <42B83B8D.9030901@us.ibm.com> <430B3CB4.1050105@us.ibm.com> <20050901160356.2a584975.akpm@osdl.org> <4318E6B3.7010901@us.ibm.com> <20050902224314.GB8463@colo.lackof.org> <17176.56354.363726.363290@cargo.ozlabs.ibm.com> <20050903000854.GC8463@colo.lackof.org> <431A33D0.1040807@us.ibm.com> <20050903193958.GB30579@colo.lackof.org> <431C8EF8.7020702@us.ibm.com> <20050906044809.GA19347@colo.lackof.org> In-Reply-To: <20050906044809.GA19347@colo.lackof.org> Content-Type: multipart/mixed; boundary="------------090004000101050508070102" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------090004000101050508070102 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Grant Grundler wrote: > On Mon, Sep 05, 2005 at 01:31:20PM -0500, Brian King wrote: >>+void pci_block_user_cfg_access(struct pci_dev *dev) >>+{ >>+ pci_save_state(dev); >>+ dev->block_ucfg_access = 1; >>+ mb(); >>+ while (spin_is_locked(&pci_lock)) >>+ cpu_relax(); >>+} >>+EXPORT_SYMBOL_GPL(pci_block_user_cfg_access); >>+ >>+/** >>+ * pci_unblock_user_cfg_access - Unblock userspace PCI config reads/writes >>+ * @dev: pci device struct >>+ * >>+ * This function allows userspace PCI config accesses to resume. >>+ **/ >>+void pci_unblock_user_cfg_access(struct pci_dev *dev) >>+{ >>+ dev->block_ucfg_access = 0; >>+} > > > Shouldn't pci_unblock_user_cfg_access() have a similar construct > as pci_block_user_cfg_access()? > > I'm thinking we don't want to pull the rug out from under someone > who is accessing the saved state, right? > Or does something else guarantee that? > > It wasn't obvious from this diff alone. Sounds reasonable enough. Updated patch attached. -- Brian King eServer Storage I/O IBM Linux Technology Center --------------090004000101050508070102 Content-Type: text/plain; name="pci_block_user_config_io_during_bist_again.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pci_block_user_config_io_during_bist_again.patch" ClNvbWUgUENJIGFkYXB0ZXJzIChlZy4gaXByIHNjc2kgYWRhcHRlcnMpIGhhdmUgYW4gZXhw b3N1cmUgdG9kYXkgaW4gdGhhdCAKdGhleSBpc3N1ZSBCSVNUIHRvIHRoZSBhZGFwdGVyIHRv IHJlc2V0IHRoZSBjYXJkLiBJZiwgZHVyaW5nIHRoZSB0aW1lCml0IHRha2VzIHRvIGNvbXBs ZXRlIEJJU1QsIHVzZXJzcGFjZSBhdHRlbXB0cyB0byBhY2Nlc3MgUENJIGNvbmZpZyBzcGFj ZSwgCnRoZSBob3N0IGJ1cyBicmlkZ2Ugd2lsbCBtYXN0ZXIgYWJvcnQgdGhlIGFjY2VzcyBz aW5jZSB0aGUgaXByIGFkYXB0ZXIgCmRvZXMgbm90IHJlc3BvbmQgb24gdGhlIFBDSSBidXMg Zm9yIGEgYnJpZWYgcGVyaW9kIG9mIHRpbWUgd2hlbiBydW5uaW5nIEJJU1QuIApPbiBQUEM2 NCBoYXJkd2FyZSwgdGhpcyBtYXN0ZXIgYWJvcnQgcmVzdWx0cyBpbiB0aGUgaG9zdCBQQ0kg YnJpZGdlCmlzb2xhdGluZyB0aGF0IFBDSSBkZXZpY2UgZnJvbSB0aGUgcmVzdCBvZiB0aGUg c3lzdGVtLCBtYWtpbmcgdGhlIGRldmljZQp1bnVzYWJsZSB1bnRpbCBMaW51eCBpcyByZWJv b3RlZC4gVGhpcyBwYXRjaCBpcyBhbiBhdHRlbXB0IHRvIGNsb3NlIHRoYXQKZXhwb3N1cmUg YnkgaW50cm9kdWNpbmcgc29tZSBibG9ja2luZyBjb2RlIGluIHRoZSBQQ0kgY29kZS4gV2hl biBibG9ja2VkLAp3cml0ZXMgd2lsbCBiZSBodW1vcmVkIGFuZCByZWFkcyB3aWxsIHJldHVy biB0aGUgY2FjaGVkIHZhbHVlLiBCZW4KSGVycmVuc2NobWlkdCBoYXMgYWxzbyBtZW50aW9u ZWQgdGhhdCBoZSBwbGFucyB0byB1c2UgdGhpcyBpbiBQUEMgcG93ZXIKbWFuYWdlbWVudC4K ClNpZ25lZC1vZmYtYnk6IEJyaWFuIEtpbmcgPGJya2luZ0B1cy5pYm0uY29tPgotLS0KCiBs aW51eC0yLjYtYmpraW5nMS9kcml2ZXJzL3BjaS9hY2Nlc3MuYyAgICB8ICAgODQgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBsaW51eC0yLjYtYmpraW5nMS9kcml2ZXJzL3Bj aS9wY2ktc3lzZnMuYyB8ICAgMjAgKysrLS0tLQogbGludXgtMi42LWJqa2luZzEvZHJpdmVy cy9wY2kvcGNpLmggICAgICAgfCAgICA3ICsrCiBsaW51eC0yLjYtYmpraW5nMS9kcml2ZXJz L3BjaS9wcm9jLmMgICAgICB8ICAgMjggKysrKystLS0tLQogbGludXgtMi42LWJqa2luZzEv ZHJpdmVycy9wY2kvc3lzY2FsbC5jICAgfCAgIDE0ICsrLS0tCiBsaW51eC0yLjYtYmpraW5n MS9pbmNsdWRlL2xpbnV4L3BjaS5oICAgICB8ICAgIDUgKwogNiBmaWxlcyBjaGFuZ2VkLCAx MjcgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC1wdU4gZHJpdmVycy9w Y2kvYWNjZXNzLmN+cGNpX2Jsb2NrX3VzZXJfY29uZmlnX2lvX2R1cmluZ19iaXN0X2FnYWlu IGRyaXZlcnMvcGNpL2FjY2Vzcy5jCi0tLSBsaW51eC0yLjYvZHJpdmVycy9wY2kvYWNjZXNz LmN+cGNpX2Jsb2NrX3VzZXJfY29uZmlnX2lvX2R1cmluZ19iaXN0X2FnYWluCTIwMDUtMDkt MDYgMDk6MjM6NTIuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYtYmpraW5nMS9kcml2 ZXJzL3BjaS9hY2Nlc3MuYwkyMDA1LTA5LTA2IDA5OjI2OjE3LjAwMDAwMDAwMCAtMDUwMApA QCAtNjAsMyArNjAsODcgQEAgRVhQT1JUX1NZTUJPTChwY2lfYnVzX3JlYWRfY29uZmlnX2R3 b3JkKQogRVhQT1JUX1NZTUJPTChwY2lfYnVzX3dyaXRlX2NvbmZpZ19ieXRlKTsKIEVYUE9S VF9TWU1CT0wocGNpX2J1c193cml0ZV9jb25maWdfd29yZCk7CiBFWFBPUlRfU1lNQk9MKHBj aV9idXNfd3JpdGVfY29uZmlnX2R3b3JkKTsKKworc3RhdGljIHUzMiBwY2lfdXNlcl9jYWNo ZWRfY29uZmlnKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwb3MpCit7CisJdTMyIGRhdGE7 CisKKwlkYXRhID0gZGV2LT5zYXZlZF9jb25maWdfc3BhY2VbcG9zL3NpemVvZihkZXYtPnNh dmVkX2NvbmZpZ19zcGFjZVswXSldOworCWRhdGEgPj49IChwb3MgJSBzaXplb2YoZGV2LT5z YXZlZF9jb25maWdfc3BhY2VbMF0pKSAqIDg7CisJcmV0dXJuIGRhdGE7Cit9CisKKyNkZWZp bmUgUENJX1VTRVJfUkVBRF9DT05GSUcoc2l6ZSx0eXBlKQkJCQkJXAoraW50IHBjaV91c2Vy X3JlYWRfY29uZmlnXyMjc2l6ZQkJCQkJCVwKKwkoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50 IHBvcywgdHlwZSAqdmFsKQkJCVwKK3sJCQkJCQkJCQlcCisJdW5zaWduZWQgbG9uZyBmbGFn czsJCQkJCQlcCisJaW50IHJldCA9IDA7CQkJCQkJCVwKKwl1MzIgZGF0YSA9IC0xOwkJCQkJ CQlcCisJaWYgKFBDSV8jI3NpemUjI19CQUQpIHJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RF Ul9OVU1CRVI7CVwKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcGNpX2xvY2ssIGZsYWdzKTsJCQkJ XAorCWlmIChsaWtlbHkoIWRldi0+YmxvY2tfdWNmZ19hY2Nlc3MpKQkJCQlcCisJCXJldCA9 IGRldi0+YnVzLT5vcHMtPnJlYWQoZGV2LT5idXMsIGRldi0+ZGV2Zm4sCQlcCisJCQkJCXBv cywgc2l6ZW9mKHR5cGUpLCAmZGF0YSk7CVwKKwllbHNlIGlmIChwb3MgPCBzaXplb2YoZGV2 LT5zYXZlZF9jb25maWdfc3BhY2UpKQkJCVwKKwkJZGF0YSA9IHBjaV91c2VyX2NhY2hlZF9j b25maWcoZGV2LCBwb3MpOyAJCVwKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2lfbG9j aywgZmxhZ3MpOwkJCVwKKwkqdmFsID0gKHR5cGUpZGF0YTsJCQkJCQlcCisJcmV0dXJuIHJl dDsJCQkJCQkJXAorfQorCisjZGVmaW5lIFBDSV9VU0VSX1dSSVRFX0NPTkZJRyhzaXplLHR5 cGUpCQkJCVwKK2ludCBwY2lfdXNlcl93cml0ZV9jb25maWdfIyNzaXplCQkJCQlcCisJKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwb3MsIHR5cGUgdmFsKQkJCVwKK3sJCQkJCQkJCQlc CisJdW5zaWduZWQgbG9uZyBmbGFnczsJCQkJCQlcCisJaW50IHJldCA9IC1FSU87CQkJCQkJ CVwKKwlpZiAoUENJXyMjc2l6ZSMjX0JBRCkgcmV0dXJuIFBDSUJJT1NfQkFEX1JFR0lTVEVS X05VTUJFUjsJXAorCXNwaW5fbG9ja19pcnFzYXZlKCZwY2lfbG9jaywgZmxhZ3MpOwkJCQlc CisJaWYgKGxpa2VseSghZGV2LT5ibG9ja191Y2ZnX2FjY2VzcykpCQkJCVwKKwkJcmV0ID0g ZGV2LT5idXMtPm9wcy0+d3JpdGUoZGV2LT5idXMsIGRldi0+ZGV2Zm4sCVwKKwkJCQkJcG9z LCBzaXplb2YodHlwZSksIHZhbCk7CVwKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2lf bG9jaywgZmxhZ3MpOwkJCVwKKwlyZXR1cm4gcmV0OwkJCQkJCQlcCit9CisKK1BDSV9VU0VS X1JFQURfQ09ORklHKGJ5dGUsIHU4KQorUENJX1VTRVJfUkVBRF9DT05GSUcod29yZCwgdTE2 KQorUENJX1VTRVJfUkVBRF9DT05GSUcoZHdvcmQsIHUzMikKK1BDSV9VU0VSX1dSSVRFX0NP TkZJRyhieXRlLCB1OCkKK1BDSV9VU0VSX1dSSVRFX0NPTkZJRyh3b3JkLCB1MTYpCitQQ0lf VVNFUl9XUklURV9DT05GSUcoZHdvcmQsIHUzMikKKworLyoqCisgKiBwY2lfYmxvY2tfdXNl cl9jZmdfYWNjZXNzIC0gQmxvY2sgdXNlcnNwYWNlIFBDSSBjb25maWcgcmVhZHMvd3JpdGVz CisgKiBAZGV2OglwY2kgZGV2aWNlIHN0cnVjdAorICoKKyAqIFRoaXMgZnVuY3Rpb24gYmxv Y2tzIGFueSB1c2Vyc3BhY2UgUENJIGNvbmZpZyBhY2Nlc3NlcyBmcm9tIG9jY3VycmluZy4K KyAqIFdoZW4gYmxvY2tlZCwgYW55IHdyaXRlcyB3aWxsIGJlIGJpdCBidWNrZXRlZCBhbmQg cmVhZHMgd2lsbCByZXR1cm4gdGhlCisgKiBkYXRhIHNhdmVkIHVzaW5nIHBjaV9zYXZlX3N0 YXRlIGZvciB0aGUgZmlyc3QgNjQgYnl0ZXMgb2YgY29uZmlnCisgKiBzcGFjZSBhbmQgcmV0 dXJuIDB4ZmYgZm9yIGFsbCBvdGhlciBjb25maWcgcmVhZHMuCisgKiovCit2b2lkIHBjaV9i bG9ja191c2VyX2NmZ19hY2Nlc3Moc3RydWN0IHBjaV9kZXYgKmRldikKK3sKKwlwY2lfc2F2 ZV9zdGF0ZShkZXYpOworCWRldi0+YmxvY2tfdWNmZ19hY2Nlc3MgPSAxOworCW1iKCk7CisJ d2hpbGUgKHNwaW5faXNfbG9ja2VkKCZwY2lfbG9jaykpCisJCWNwdV9yZWxheCgpOworfQor RVhQT1JUX1NZTUJPTF9HUEwocGNpX2Jsb2NrX3VzZXJfY2ZnX2FjY2Vzcyk7CisKKy8qKgor ICogcGNpX3VuYmxvY2tfdXNlcl9jZmdfYWNjZXNzIC0gVW5ibG9jayB1c2Vyc3BhY2UgUENJ IGNvbmZpZyByZWFkcy93cml0ZXMKKyAqIEBkZXY6CXBjaSBkZXZpY2Ugc3RydWN0CisgKgor ICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgdXNlcnNwYWNlIFBDSSBjb25maWcgYWNjZXNzZXMg dG8gcmVzdW1lLgorICoqLwordm9pZCBwY2lfdW5ibG9ja191c2VyX2NmZ19hY2Nlc3Moc3Ry dWN0IHBjaV9kZXYgKmRldikKK3sKKwlkZXYtPmJsb2NrX3VjZmdfYWNjZXNzID0gMDsKKwlt YigpOworCXdoaWxlIChzcGluX2lzX2xvY2tlZCgmcGNpX2xvY2spKQorCQljcHVfcmVsYXgo KTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHBjaV91bmJsb2NrX3VzZXJfY2ZnX2FjY2Vzcyk7 CmRpZmYgLXB1TiBkcml2ZXJzL3BjaS9wY2ktc3lzZnMuY35wY2lfYmxvY2tfdXNlcl9jb25m aWdfaW9fZHVyaW5nX2Jpc3RfYWdhaW4gZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMKLS0tIGxp bnV4LTIuNi9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuY35wY2lfYmxvY2tfdXNlcl9jb25maWdf aW9fZHVyaW5nX2Jpc3RfYWdhaW4JMjAwNS0wOS0wNiAwOToyMzo1Mi4wMDAwMDAwMDAgLTA1 MDAKKysrIGxpbnV4LTIuNi1iamtpbmcxL2RyaXZlcnMvcGNpL3BjaS1zeXNmcy5jCTIwMDUt MDktMDYgMDk6MjM6NTIuMDAwMDAwMDAwIC0wNTAwCkBAIC0xMjYsNyArMTI2LDcgQEAgcGNp X3JlYWRfY29uZmlnKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjaAogCiAJaWYgKChvZmYgJiAx KSAmJiBzaXplKSB7CiAJCXU4IHZhbDsKLQkJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBv ZmYsICZ2YWwpOworCQlwY2lfdXNlcl9yZWFkX2NvbmZpZ19ieXRlKGRldiwgb2ZmLCAmdmFs KTsKIAkJZGF0YVtvZmYgLSBpbml0X29mZl0gPSB2YWw7CiAJCW9mZisrOwogCQlzaXplLS07 CkBAIC0xMzQsNyArMTM0LDcgQEAgcGNpX3JlYWRfY29uZmlnKHN0cnVjdCBrb2JqZWN0ICpr b2JqLCBjaAogCiAJaWYgKChvZmYgJiAzKSAmJiBzaXplID4gMikgewogCQl1MTYgdmFsOwot CQlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIG9mZiwgJnZhbCk7CisJCXBjaV91c2VyX3Jl YWRfY29uZmlnX3dvcmQoZGV2LCBvZmYsICZ2YWwpOwogCQlkYXRhW29mZiAtIGluaXRfb2Zm XSA9IHZhbCAmIDB4ZmY7CiAJCWRhdGFbb2ZmIC0gaW5pdF9vZmYgKyAxXSA9ICh2YWwgPj4g OCkgJiAweGZmOwogCQlvZmYgKz0gMjsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwY2lfcmVhZF9j b25maWcoc3RydWN0IGtvYmplY3QgKmtvYmosIGNoCiAKIAl3aGlsZSAoc2l6ZSA+IDMpIHsK IAkJdTMyIHZhbDsKLQkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgb2ZmLCAmdmFsKTsK KwkJcGNpX3VzZXJfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBvZmYsICZ2YWwpOwogCQlkYXRh W29mZiAtIGluaXRfb2ZmXSA9IHZhbCAmIDB4ZmY7CiAJCWRhdGFbb2ZmIC0gaW5pdF9vZmYg KyAxXSA9ICh2YWwgPj4gOCkgJiAweGZmOwogCQlkYXRhW29mZiAtIGluaXRfb2ZmICsgMl0g PSAodmFsID4+IDE2KSAmIDB4ZmY7CkBAIC0xNTQsNyArMTU0LDcgQEAgcGNpX3JlYWRfY29u ZmlnKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjaAogCiAJaWYgKHNpemUgPj0gMikgewogCQl1 MTYgdmFsOwotCQlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIG9mZiwgJnZhbCk7CisJCXBj aV91c2VyX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBvZmYsICZ2YWwpOwogCQlkYXRhW29mZiAt IGluaXRfb2ZmXSA9IHZhbCAmIDB4ZmY7CiAJCWRhdGFbb2ZmIC0gaW5pdF9vZmYgKyAxXSA9 ICh2YWwgPj4gOCkgJiAweGZmOwogCQlvZmYgKz0gMjsKQEAgLTE2Myw3ICsxNjMsNyBAQCBw Y2lfcmVhZF9jb25maWcoc3RydWN0IGtvYmplY3QgKmtvYmosIGNoCiAKIAlpZiAoc2l6ZSA+ IDApIHsKIAkJdTggdmFsOwotCQlwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYsIG9mZiwgJnZh bCk7CisJCXBjaV91c2VyX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBvZmYsICZ2YWwpOwogCQlk YXRhW29mZiAtIGluaXRfb2ZmXSA9IHZhbDsKIAkJb2ZmKys7CiAJCS0tc2l6ZTsKQEAgLTE4 OCw3ICsxODgsNyBAQCBwY2lfd3JpdGVfY29uZmlnKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBj CiAJfQogCQogCWlmICgob2ZmICYgMSkgJiYgc2l6ZSkgewotCQlwY2lfd3JpdGVfY29uZmln X2J5dGUoZGV2LCBvZmYsIGRhdGFbb2ZmIC0gaW5pdF9vZmZdKTsKKwkJcGNpX3VzZXJfd3Jp dGVfY29uZmlnX2J5dGUoZGV2LCBvZmYsIGRhdGFbb2ZmIC0gaW5pdF9vZmZdKTsKIAkJb2Zm Kys7CiAJCXNpemUtLTsKIAl9CkBAIC0xOTYsNyArMTk2LDcgQEAgcGNpX3dyaXRlX2NvbmZp ZyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgYwogCWlmICgob2ZmICYgMykgJiYgc2l6ZSA+IDIp IHsKIAkJdTE2IHZhbCA9IGRhdGFbb2ZmIC0gaW5pdF9vZmZdOwogCQl2YWwgfD0gKHUxNikg ZGF0YVtvZmYgLSBpbml0X29mZiArIDFdIDw8IDg7Ci0gICAgICAgICAgICAgICAgcGNpX3dy aXRlX2NvbmZpZ193b3JkKGRldiwgb2ZmLCB2YWwpOworICAgICAgICAgICAgICAgIHBjaV91 c2VyX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgb2ZmLCB2YWwpOwogICAgICAgICAgICAgICAg IG9mZiArPSAyOwogICAgICAgICAgICAgICAgIHNpemUgLT0gMjsKICAgICAgICAgfQpAQCAt MjA2LDcgKzIwNiw3IEBAIHBjaV93cml0ZV9jb25maWcoc3RydWN0IGtvYmplY3QgKmtvYmos IGMKIAkJdmFsIHw9ICh1MzIpIGRhdGFbb2ZmIC0gaW5pdF9vZmYgKyAxXSA8PCA4OwogCQl2 YWwgfD0gKHUzMikgZGF0YVtvZmYgLSBpbml0X29mZiArIDJdIDw8IDE2OwogCQl2YWwgfD0g KHUzMikgZGF0YVtvZmYgLSBpbml0X29mZiArIDNdIDw8IDI0OwotCQlwY2lfd3JpdGVfY29u ZmlnX2R3b3JkKGRldiwgb2ZmLCB2YWwpOworCQlwY2lfdXNlcl93cml0ZV9jb25maWdfZHdv cmQoZGV2LCBvZmYsIHZhbCk7CiAJCW9mZiArPSA0OwogCQlzaXplIC09IDQ7CiAJfQpAQCAt MjE0LDEzICsyMTQsMTMgQEAgcGNpX3dyaXRlX2NvbmZpZyhzdHJ1Y3Qga29iamVjdCAqa29i aiwgYwogCWlmIChzaXplID49IDIpIHsKIAkJdTE2IHZhbCA9IGRhdGFbb2ZmIC0gaW5pdF9v ZmZdOwogCQl2YWwgfD0gKHUxNikgZGF0YVtvZmYgLSBpbml0X29mZiArIDFdIDw8IDg7Ci0J CXBjaV93cml0ZV9jb25maWdfd29yZChkZXYsIG9mZiwgdmFsKTsKKwkJcGNpX3VzZXJfd3Jp dGVfY29uZmlnX3dvcmQoZGV2LCBvZmYsIHZhbCk7CiAJCW9mZiArPSAyOwogCQlzaXplIC09 IDI7CiAJfQogCiAJaWYgKHNpemUpIHsKLQkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwg b2ZmLCBkYXRhW29mZiAtIGluaXRfb2ZmXSk7CisJCXBjaV91c2VyX3dyaXRlX2NvbmZpZ19i eXRlKGRldiwgb2ZmLCBkYXRhW29mZiAtIGluaXRfb2ZmXSk7CiAJCW9mZisrOwogCQktLXNp emU7CiAJfQpkaWZmIC1wdU4gZHJpdmVycy9wY2kvcHJvYy5jfnBjaV9ibG9ja191c2VyX2Nv bmZpZ19pb19kdXJpbmdfYmlzdF9hZ2FpbiBkcml2ZXJzL3BjaS9wcm9jLmMKLS0tIGxpbnV4 LTIuNi9kcml2ZXJzL3BjaS9wcm9jLmN+cGNpX2Jsb2NrX3VzZXJfY29uZmlnX2lvX2R1cmlu Z19iaXN0X2FnYWluCTIwMDUtMDktMDYgMDk6MjM6NTIuMDAwMDAwMDAwIC0wNTAwCisrKyBs aW51eC0yLjYtYmpraW5nMS9kcml2ZXJzL3BjaS9wcm9jLmMJMjAwNS0wOS0wNiAwOToyMzo1 Mi4wMDAwMDAwMDAgLTA1MDAKQEAgLTgwLDcgKzgwLDcgQEAgcHJvY19idXNfcGNpX3JlYWQo c3RydWN0IGZpbGUgKmZpbGUsIGNoYQogCiAJaWYgKChwb3MgJiAxKSAmJiBjbnQpIHsKIAkJ dW5zaWduZWQgY2hhciB2YWw7Ci0JCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgcG9zLCAm dmFsKTsKKwkJcGNpX3VzZXJfcmVhZF9jb25maWdfYnl0ZShkZXYsIHBvcywgJnZhbCk7CiAJ CV9fcHV0X3VzZXIodmFsLCBidWYpOwogCQlidWYrKzsKIAkJcG9zKys7CkBAIC04OSw3ICs4 OSw3IEBAIHByb2NfYnVzX3BjaV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGEKIAogCWlm ICgocG9zICYgMykgJiYgY250ID4gMikgewogCQl1bnNpZ25lZCBzaG9ydCB2YWw7Ci0JCXBj aV9yZWFkX2NvbmZpZ193b3JkKGRldiwgcG9zLCAmdmFsKTsKKwkJcGNpX3VzZXJfcmVhZF9j b25maWdfd29yZChkZXYsIHBvcywgJnZhbCk7CiAJCV9fcHV0X3VzZXIoY3B1X3RvX2xlMTYo dmFsKSwgKHVuc2lnbmVkIHNob3J0IF9fdXNlciAqKSBidWYpOwogCQlidWYgKz0gMjsKIAkJ cG9zICs9IDI7CkBAIC05OCw3ICs5OCw3IEBAIHByb2NfYnVzX3BjaV9yZWFkKHN0cnVjdCBm aWxlICpmaWxlLCBjaGEKIAogCXdoaWxlIChjbnQgPj0gNCkgewogCQl1bnNpZ25lZCBpbnQg dmFsOwotCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBwb3MsICZ2YWwpOworCQlwY2lf dXNlcl9yZWFkX2NvbmZpZ19kd29yZChkZXYsIHBvcywgJnZhbCk7CiAJCV9fcHV0X3VzZXIo Y3B1X3RvX2xlMzIodmFsKSwgKHVuc2lnbmVkIGludCBfX3VzZXIgKikgYnVmKTsKIAkJYnVm ICs9IDQ7CiAJCXBvcyArPSA0OwpAQCAtMTA3LDcgKzEwNyw3IEBAIHByb2NfYnVzX3BjaV9y ZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGEKIAogCWlmIChjbnQgPj0gMikgewogCQl1bnNp Z25lZCBzaG9ydCB2YWw7Ci0JCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgcG9zLCAmdmFs KTsKKwkJcGNpX3VzZXJfcmVhZF9jb25maWdfd29yZChkZXYsIHBvcywgJnZhbCk7CiAJCV9f cHV0X3VzZXIoY3B1X3RvX2xlMTYodmFsKSwgKHVuc2lnbmVkIHNob3J0IF9fdXNlciAqKSBi dWYpOwogCQlidWYgKz0gMjsKIAkJcG9zICs9IDI7CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJv Y19idXNfcGNpX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYQogCiAJaWYgKGNudCkgewog CQl1bnNpZ25lZCBjaGFyIHZhbDsKLQkJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBwb3Ms ICZ2YWwpOworCQlwY2lfdXNlcl9yZWFkX2NvbmZpZ19ieXRlKGRldiwgcG9zLCAmdmFsKTsK IAkJX19wdXRfdXNlcih2YWwsIGJ1Zik7CiAJCWJ1ZisrOwogCQlwb3MrKzsKQEAgLTE1MSw3 ICsxNTEsNyBAQCBwcm9jX2J1c19wY2lfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvCiAJ aWYgKChwb3MgJiAxKSAmJiBjbnQpIHsKIAkJdW5zaWduZWQgY2hhciB2YWw7CiAJCV9fZ2V0 X3VzZXIodmFsLCBidWYpOwotCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBwb3MsIHZh bCk7CisJCXBjaV91c2VyX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgcG9zLCB2YWwpOwogCQli dWYrKzsKIAkJcG9zKys7CiAJCWNudC0tOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHByb2NfYnVz X3BjaV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY28KIAlpZiAoKHBvcyAmIDMpICYmIGNu dCA+IDIpIHsKIAkJdW5zaWduZWQgc2hvcnQgdmFsOwogCQlfX2dldF91c2VyKHZhbCwgKHVu c2lnbmVkIHNob3J0IF9fdXNlciAqKSBidWYpOwotCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQo ZGV2LCBwb3MsIGxlMTZfdG9fY3B1KHZhbCkpOworCQlwY2lfdXNlcl93cml0ZV9jb25maWdf d29yZChkZXYsIHBvcywgbGUxNl90b19jcHUodmFsKSk7CiAJCWJ1ZiArPSAyOwogCQlwb3Mg Kz0gMjsKIAkJY250IC09IDI7CkBAIC0xNjksNyArMTY5LDcgQEAgcHJvY19idXNfcGNpX3dy aXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjbwogCXdoaWxlIChjbnQgPj0gNCkgewogCQl1bnNp Z25lZCBpbnQgdmFsOwogCQlfX2dldF91c2VyKHZhbCwgKHVuc2lnbmVkIGludCBfX3VzZXIg KikgYnVmKTsKLQkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIHBvcywgbGUzMl90b19j cHUodmFsKSk7CisJCXBjaV91c2VyX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIHBvcywgbGUz Ml90b19jcHUodmFsKSk7CiAJCWJ1ZiArPSA0OwogCQlwb3MgKz0gNDsKIAkJY250IC09IDQ7 CkBAIC0xNzgsNyArMTc4LDcgQEAgcHJvY19idXNfcGNpX3dyaXRlKHN0cnVjdCBmaWxlICpm aWxlLCBjbwogCWlmIChjbnQgPj0gMikgewogCQl1bnNpZ25lZCBzaG9ydCB2YWw7CiAJCV9f Z2V0X3VzZXIodmFsLCAodW5zaWduZWQgc2hvcnQgX191c2VyICopIGJ1Zik7Ci0JCXBjaV93 cml0ZV9jb25maWdfd29yZChkZXYsIHBvcywgbGUxNl90b19jcHUodmFsKSk7CisJCXBjaV91 c2VyX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgcG9zLCBsZTE2X3RvX2NwdSh2YWwpKTsKIAkJ YnVmICs9IDI7CiAJCXBvcyArPSAyOwogCQljbnQgLT0gMjsKQEAgLTE4Nyw3ICsxODcsNyBA QCBwcm9jX2J1c19wY2lfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvCiAJaWYgKGNudCkg ewogCQl1bnNpZ25lZCBjaGFyIHZhbDsKIAkJX19nZXRfdXNlcih2YWwsIGJ1Zik7Ci0JCXBj aV93cml0ZV9jb25maWdfYnl0ZShkZXYsIHBvcywgdmFsKTsKKwkJcGNpX3VzZXJfd3JpdGVf Y29uZmlnX2J5dGUoZGV2LCBwb3MsIHZhbCk7CiAJCWJ1ZisrOwogCQlwb3MrKzsKIAkJY250 LS07CkBAIC00ODQsMTAgKzQ4NCwxMCBAQCBzdGF0aWMgaW50IHNob3dfZGV2X2NvbmZpZyhz dHJ1Y3Qgc2VxX2ZpCiAKIAlkcnYgPSBwY2lfZGV2X2RyaXZlcihkZXYpOwogCi0JcGNpX3Jl YWRfY29uZmlnX2R3b3JkKGRldiwgUENJX0NMQVNTX1JFVklTSU9OLCAmY2xhc3NfcmV2KTsK LQlwY2lfcmVhZF9jb25maWdfYnl0ZSAoZGV2LCBQQ0lfTEFURU5DWV9USU1FUiwgJmxhdGVu Y3kpOwotCXBjaV9yZWFkX2NvbmZpZ19ieXRlIChkZXYsIFBDSV9NSU5fR05ULCAmbWluX2du dCk7Ci0JcGNpX3JlYWRfY29uZmlnX2J5dGUgKGRldiwgUENJX01BWF9MQVQsICZtYXhfbGF0 KTsKKwlwY2lfdXNlcl9yZWFkX2NvbmZpZ19kd29yZChkZXYsIFBDSV9DTEFTU19SRVZJU0lP TiwgJmNsYXNzX3Jldik7CisJcGNpX3VzZXJfcmVhZF9jb25maWdfYnl0ZSAoZGV2LCBQQ0lf TEFURU5DWV9USU1FUiwgJmxhdGVuY3kpOworCXBjaV91c2VyX3JlYWRfY29uZmlnX2J5dGUg KGRldiwgUENJX01JTl9HTlQsICZtaW5fZ250KTsKKwlwY2lfdXNlcl9yZWFkX2NvbmZpZ19i eXRlIChkZXYsIFBDSV9NQVhfTEFULCAmbWF4X2xhdCk7CiAJc2VxX3ByaW50ZihtLCAiICBC dXMgJTJkLCBkZXZpY2UgJTNkLCBmdW5jdGlvbiAlMmQ6XG4iLAogCSAgICAgICBkZXYtPmJ1 cy0+bnVtYmVyLCBQQ0lfU0xPVChkZXYtPmRldmZuKSwgUENJX0ZVTkMoZGV2LT5kZXZmbikp OwogCWNsYXNzID0gcGNpX2NsYXNzX25hbWUoY2xhc3NfcmV2ID4+IDE2KTsKZGlmZiAtcHVO IGRyaXZlcnMvcGNpL3N5c2NhbGwuY35wY2lfYmxvY2tfdXNlcl9jb25maWdfaW9fZHVyaW5n X2Jpc3RfYWdhaW4gZHJpdmVycy9wY2kvc3lzY2FsbC5jCi0tLSBsaW51eC0yLjYvZHJpdmVy cy9wY2kvc3lzY2FsbC5jfnBjaV9ibG9ja191c2VyX2NvbmZpZ19pb19kdXJpbmdfYmlzdF9h Z2FpbgkyMDA1LTA5LTA2IDA5OjIzOjUyLjAwMDAwMDAwMCAtMDUwMAorKysgbGludXgtMi42 LWJqa2luZzEvZHJpdmVycy9wY2kvc3lzY2FsbC5jCTIwMDUtMDktMDYgMDk6MjM6NTIuMDAw MDAwMDAwIC0wNTAwCkBAIC0xMyw3ICsxMyw3IEBACiAjaW5jbHVkZSA8bGludXgvc21wX2xv Y2suaD4KICNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPgogI2luY2x1ZGUgPGFzbS91YWNj ZXNzLmg+Ci0KKyNpbmNsdWRlICJwY2kuaCIKIAogYXNtbGlua2FnZSBsb25nCiBzeXNfcGNp Y29uZmlnX3JlYWQodW5zaWduZWQgbG9uZyBidXMsIHVuc2lnbmVkIGxvbmcgZGZuLApAQCAt MzgsMTMgKzM4LDEzIEBAIHN5c19wY2ljb25maWdfcmVhZCh1bnNpZ25lZCBsb25nIGJ1cywg dW4KIAlsb2NrX2tlcm5lbCgpOwogCXN3aXRjaCAobGVuKSB7CiAJY2FzZSAxOgotCQljZmdf cmV0ID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBvZmYsICZieXRlKTsKKwkJY2ZnX3Jl dCA9IHBjaV91c2VyX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBvZmYsICZieXRlKTsKIAkJYnJl YWs7CiAJY2FzZSAyOgotCQljZmdfcmV0ID0gcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBv ZmYsICZ3b3JkKTsKKwkJY2ZnX3JldCA9IHBjaV91c2VyX3JlYWRfY29uZmlnX3dvcmQoZGV2 LCBvZmYsICZ3b3JkKTsKIAkJYnJlYWs7CiAJY2FzZSA0OgotCQljZmdfcmV0ID0gcGNpX3Jl YWRfY29uZmlnX2R3b3JkKGRldiwgb2ZmLCAmZHdvcmQpOworCQljZmdfcmV0ID0gcGNpX3Vz ZXJfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBvZmYsICZkd29yZCk7CiAJCWJyZWFrOwogCWRl ZmF1bHQ6CiAJCWVyciA9IC1FSU5WQUw7CkBAIC0xMTIsNyArMTEyLDcgQEAgc3lzX3BjaWNv bmZpZ193cml0ZSh1bnNpZ25lZCBsb25nIGJ1cywgdQogCQllcnIgPSBnZXRfdXNlcihieXRl LCAodTggX191c2VyICopYnVmKTsKIAkJaWYgKGVycikKIAkJCWJyZWFrOwotCQllcnIgPSBw Y2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBvZmYsIGJ5dGUpOworCQllcnIgPSBwY2lfdXNl cl93cml0ZV9jb25maWdfYnl0ZShkZXYsIG9mZiwgYnl0ZSk7CiAJCWlmIChlcnIgIT0gUENJ QklPU19TVUNDRVNTRlVMKQogCQkJZXJyID0gLUVJTzsKIAkJYnJlYWs7CkBAIC0xMjEsNyAr MTIxLDcgQEAgc3lzX3BjaWNvbmZpZ193cml0ZSh1bnNpZ25lZCBsb25nIGJ1cywgdQogCQll cnIgPSBnZXRfdXNlcih3b3JkLCAodTE2IF9fdXNlciAqKWJ1Zik7CiAJCWlmIChlcnIpCiAJ CQlicmVhazsKLQkJZXJyID0gcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgb2ZmLCB3b3Jk KTsKKwkJZXJyID0gcGNpX3VzZXJfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCBvZmYsIHdvcmQp OwogCQlpZiAoZXJyICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkKIAkJCWVyciA9IC1FSU87CiAJ CWJyZWFrOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN5c19wY2ljb25maWdfd3JpdGUodW5zaWdu ZWQgbG9uZyBidXMsIHUKIAkJZXJyID0gZ2V0X3VzZXIoZHdvcmQsICh1MzIgX191c2VyICop YnVmKTsKIAkJaWYgKGVycikKIAkJCWJyZWFrOwotCQllcnIgPSBwY2lfd3JpdGVfY29uZmln X2R3b3JkKGRldiwgb2ZmLCBkd29yZCk7CisJCWVyciA9IHBjaV91c2VyX3dyaXRlX2NvbmZp Z19kd29yZChkZXYsIG9mZiwgZHdvcmQpOwogCQlpZiAoZXJyICE9IFBDSUJJT1NfU1VDQ0VT U0ZVTCkKIAkJCWVyciA9IC1FSU87CiAJCWJyZWFrOwpkaWZmIC1wdU4gaW5jbHVkZS9saW51 eC9wY2kuaH5wY2lfYmxvY2tfdXNlcl9jb25maWdfaW9fZHVyaW5nX2Jpc3RfYWdhaW4gaW5j bHVkZS9saW51eC9wY2kuaAotLS0gbGludXgtMi42L2luY2x1ZGUvbGludXgvcGNpLmh+cGNp X2Jsb2NrX3VzZXJfY29uZmlnX2lvX2R1cmluZ19iaXN0X2FnYWluCTIwMDUtMDktMDYgMDk6 MjM6NTIuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYtYmpraW5nMS9pbmNsdWRlL2xp bnV4L3BjaS5oCTIwMDUtMDktMDYgMDk6MjM6NTIuMDAwMDAwMDAwIC0wNTAwCkBAIC01NTcs NiArNTU3LDcgQEAgc3RydWN0IHBjaV9kZXYgewogCXVuc2lnbmVkIGludAlpc19lbmFibGVk OjE7CS8qIHBjaV9lbmFibGVfZGV2aWNlIGhhcyBiZWVuIGNhbGxlZCAqLwogCXVuc2lnbmVk IGludAlpc19idXNtYXN0ZXI6MTsgLyogZGV2aWNlIGlzIGJ1c21hc3RlciAqLwogCXVuc2ln bmVkIGludAlub19tc2k6MTsJLyogZGV2aWNlIG1heSBub3QgdXNlIG1zaSAqLworCXVuc2ln bmVkIGludAlibG9ja191Y2ZnX2FjY2VzczoxOwkvKiB1c2Vyc3BhY2UgY29uZmlnIHNwYWNl IGFjY2VzcyBpcyBibG9ja2VkICovCiAKIAl1MzIJCXNhdmVkX2NvbmZpZ19zcGFjZVsxNl07 IC8qIGNvbmZpZyBzcGFjZSBzYXZlZCBhdCBzdXNwZW5kIHRpbWUgKi8KIAlzdHJ1Y3QgYmlu X2F0dHJpYnV0ZSAqcm9tX2F0dHI7IC8qIGF0dHJpYnV0ZSBkZXNjcmlwdG9yIGZvciBzeXNm cyBST00gZW50cnkgKi8KQEAgLTkxMiw2ICs5MTMsOCBAQCBleHRlcm4gdm9pZCBwY2lfZGlz YWJsZV9tc2l4KHN0cnVjdCBwY2lfCiBleHRlcm4gdm9pZCBtc2lfcmVtb3ZlX3BjaV9pcnFf dmVjdG9ycyhzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKICNlbmRpZgogCitleHRlcm4gdm9pZCBw Y2lfYmxvY2tfdXNlcl9jZmdfYWNjZXNzKHN0cnVjdCBwY2lfZGV2ICpkZXYpOworZXh0ZXJu IHZvaWQgcGNpX3VuYmxvY2tfdXNlcl9jZmdfYWNjZXNzKHN0cnVjdCBwY2lfZGV2ICpkZXYp OwogI2VuZGlmIC8qIENPTkZJR19QQ0kgKi8KIAogLyogSW5jbHVkZSBhcmNoaXRlY3R1cmUt ZGVwZW5kZW50IHNldHRpbmdzIGFuZCBmdW5jdGlvbnMgKi8KQEAgLTk2Miw2ICs5NjUsOCBA QCBzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3VucmVnaXN0ZXJfZHJpdmVyCiBzdGF0aWMgaW5s aW5lIGludCBwY2lfZmluZF9jYXBhYmlsaXR5IChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQg Y2FwKSB7cmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgaW50IHBjaV9maW5kX2V4dF9jYXBh YmlsaXR5IChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgY2FwKSB7cmV0dXJuIDA7IH0KIHN0 YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9tYXRjaF9kZXZp Y2UoY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkcywgY29uc3Qgc3RydWN0IHBjaV9k ZXYgKmRldikgeyByZXR1cm4gTlVMTDsgfQorc3RhdGljIGlubGluZSB2b2lkIHBjaV9ibG9j a191c2VyX2NmZ19hY2Nlc3Moc3RydWN0IHBjaV9kZXYgKmRldikgeyB9CitzdGF0aWMgaW5s aW5lIHZvaWQgcGNpX3VuYmxvY2tfdXNlcl9jZmdfYWNjZXNzKHN0cnVjdCBwY2lfZGV2ICpk ZXYpIHsgfQogCiAvKiBQb3dlciBtYW5hZ2VtZW50IHJlbGF0ZWQgcm91dGluZXMgKi8KIHN0 YXRpYyBpbmxpbmUgaW50IHBjaV9zYXZlX3N0YXRlKHN0cnVjdCBwY2lfZGV2ICpkZXYpIHsg cmV0dXJuIDA7IH0KZGlmZiAtcHVOIGRyaXZlcnMvcGNpL3BjaS5ofnBjaV9ibG9ja191c2Vy X2NvbmZpZ19pb19kdXJpbmdfYmlzdF9hZ2FpbiBkcml2ZXJzL3BjaS9wY2kuaAotLS0gbGlu dXgtMi42L2RyaXZlcnMvcGNpL3BjaS5ofnBjaV9ibG9ja191c2VyX2NvbmZpZ19pb19kdXJp bmdfYmlzdF9hZ2FpbgkyMDA1LTA5LTA2IDA5OjIzOjUyLjAwMDAwMDAwMCAtMDUwMAorKysg bGludXgtMi42LWJqa2luZzEvZHJpdmVycy9wY2kvcGNpLmgJMjAwNS0wOS0wNiAwOToyMzo1 Mi4wMDAwMDAwMDAgLTA1MDAKQEAgLTE1LDYgKzE1LDEzIEBAIGV4dGVybiBpbnQgcGNpX2J1 c19hbGxvY19yZXNvdXJjZShzdHJ1Y3QKIGV4dGVybiBpbnQgKCpwbGF0Zm9ybV9wY2lfY2hv b3NlX3N0YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOwog ZXh0ZXJuIGludCAoKnBsYXRmb3JtX3BjaV9zZXRfcG93ZXJfc3RhdGUpKHN0cnVjdCBwY2lf ZGV2ICpkZXYsIHBjaV9wb3dlcl90IHN0YXRlKTsKIAorZXh0ZXJuIGludCBwY2lfdXNlcl9y ZWFkX2NvbmZpZ19ieXRlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTggKnZh bCk7CitleHRlcm4gaW50IHBjaV91c2VyX3JlYWRfY29uZmlnX3dvcmQoc3RydWN0IHBjaV9k ZXYgKmRldiwgaW50IHdoZXJlLCB1MTYgKnZhbCk7CitleHRlcm4gaW50IHBjaV91c2VyX3Jl YWRfY29uZmlnX2R3b3JkKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTMyICp2 YWwpOworZXh0ZXJuIGludCBwY2lfdXNlcl93cml0ZV9jb25maWdfYnl0ZShzdHJ1Y3QgcGNp X2RldiAqZGV2LCBpbnQgd2hlcmUsIHU4IHZhbCk7CitleHRlcm4gaW50IHBjaV91c2VyX3dy aXRlX2NvbmZpZ193b3JkKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTE2IHZh bCk7CitleHRlcm4gaW50IHBjaV91c2VyX3dyaXRlX2NvbmZpZ19kd29yZChzdHJ1Y3QgcGNp X2RldiAqZGV2LCBpbnQgd2hlcmUsIHUzMiB2YWwpOworCiAvKiBQQ0kgL3Byb2MgZnVuY3Rp b25zICovCiAjaWZkZWYgQ09ORklHX1BST0NfRlMKIGV4dGVybiBpbnQgcGNpX3Byb2NfYXR0 YWNoX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKXwo= --------------090004000101050508070102--