From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261849AbVFUQKi (ORCPT ); Tue, 21 Jun 2005 12:10:38 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S262135AbVFUQKi (ORCPT ); Tue, 21 Jun 2005 12:10:38 -0400 Received: from e1.ny.us.ibm.com ([32.97.182.141]:48266 "EHLO e1.ny.us.ibm.com") by vger.kernel.org with ESMTP id S261849AbVFUQI5 (ORCPT ); Tue, 21 Jun 2005 12:08:57 -0400 Message-ID: <42B83B8D.9030901@us.ibm.com> Date: Tue, 21 Jun 2005 11:08:45 -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: Greg KH CC: Matthew Wilcox , Benjamin Herrenschmidt , Andi Kleen , Paul Mackerras , Linux Kernel Mailing List , Alan Cox , linux-pci@atrey.karlin.mff.cuni.cz Subject: Re: [PATCH 1/1] pci: Block config access during BIST (resend) References: <41F7C6A1.9070102@us.ibm.com> <1106777405.5235.78.camel@gaston> <1106841228.14787.23.camel@localhost.localdomain> <41FA4DC2.4010305@us.ibm.com> <20050201072746.GA21236@kroah.com> <41FF9C78.2040100@us.ibm.com> <20050201154400.GC10088@parcelfarce.linux.theplanet.co.uk> <41FFBDC9.2010206@us.ibm.com> <20050201174758.GE10088@parcelfarce.linux.theplanet.co.uk> <4200F2B2.3080306@us.ibm.com> <20050208200816.GA25292@kroah.com> In-Reply-To: <20050208200816.GA25292@kroah.com> Content-Type: multipart/mixed; boundary="------------080600010706030800030500" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------080600010706030800030500 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Greg KH wrote: > On Wed, Feb 02, 2005 at 09:33:06AM -0600, Brian King wrote: > >>Matthew Wilcox wrote: >> >>>On Tue, Feb 01, 2005 at 11:35:05AM -0600, Brian King wrote: >>> >>> >>>>>If we've done a write to config space while the adapter was blocked, >>>>>shouldn't we replay those accesses at this point? >>>> >>>>I did not think that was necessary. >>> >>> >>>We have to do *something*. We can't just throw away writes. >>> >>>I see a few options: >>> >>>- Log all pending writes to config space and replay the log when the >>> device is unblocked. >>>- Fail writes to config space while the device is blocked. >>>- Write to the saved config space and then blat the saved config space >>> back to the device upon unblocking. >> >>Here is an updated patch which will now fail writes to config space >>while the device is blocked. I have also fixed up the caching to return >>the correct data and tested it on both little endian and big endian >>machines. > > > Applied, thanks. > > greg k-h > Resending this now that 2.6.13 has opened up. -- Brian King eServer Storage I/O IBM Linux Technology Center --------------080600010706030800030500 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 aW51eC0yLjYtYmpraW5nMS9kcml2ZXJzL3BjaS9hY2Nlc3MuYyAgICB8ICAgODYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBsaW51eC0yLjYtYmpraW5nMS9kcml2ZXJzL3Bj aS9wY2ktc3lzZnMuYyB8ICAgMTAgKy0tCiBsaW51eC0yLjYtYmpraW5nMS9kcml2ZXJzL3Bj aS9wY2kuaCAgICAgICB8ICAgIDcgKysKIGxpbnV4LTIuNi1iamtpbmcxL2RyaXZlcnMvcGNp L3Byb2MuYyAgICAgIHwgICAyOCArKysrLS0tLS0KIGxpbnV4LTIuNi1iamtpbmcxL2RyaXZl cnMvcGNpL3N5c2NhbGwuYyAgIHwgICAxNCArKy0tCiBsaW51eC0yLjYtYmpraW5nMS9pbmNs dWRlL2xpbnV4L3BjaS5oICAgICB8ICAgIDcgKysKIDYgZmlsZXMgY2hhbmdlZCwgMTI1IGlu c2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQoKZGlmZiAtcHVOIGRyaXZlcnMvcGNpL2Fj Y2Vzcy5jfnBjaV9ibG9ja191c2VyX2NvbmZpZ19pb19kdXJpbmdfYmlzdF9hZ2FpbiBkcml2 ZXJzL3BjaS9hY2Nlc3MuYwotLS0gbGludXgtMi42L2RyaXZlcnMvcGNpL2FjY2Vzcy5jfnBj aV9ibG9ja191c2VyX2NvbmZpZ19pb19kdXJpbmdfYmlzdF9hZ2FpbgkyMDA1LTA2LTIxIDA5 OjM1OjE2LjAwMDAwMDAwMCAtMDUwMAorKysgbGludXgtMi42LWJqa2luZzEvZHJpdmVycy9w Y2kvYWNjZXNzLmMJMjAwNS0wNi0yMSAwOTozNToxNi4wMDAwMDAwMDAgLTA1MDAKQEAgLTYw LDMgKzYwLDg5IEBAIEVYUE9SVF9TWU1CT0wocGNpX2J1c19yZWFkX2NvbmZpZ19kd29yZCkK IEVYUE9SVF9TWU1CT0wocGNpX2J1c193cml0ZV9jb25maWdfYnl0ZSk7CiBFWFBPUlRfU1lN Qk9MKHBjaV9idXNfd3JpdGVfY29uZmlnX3dvcmQpOwogRVhQT1JUX1NZTUJPTChwY2lfYnVz X3dyaXRlX2NvbmZpZ19kd29yZCk7CisKK3N0YXRpYyB1MzIgcGNpX3VzZXJfY2FjaGVkX2Nv bmZpZyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcG9zKQoreworCXUzMiBkYXRhOworCisJ ZGF0YSA9IGRldi0+c2F2ZWRfY29uZmlnX3NwYWNlW3Bvcy9zaXplb2YoZGV2LT5zYXZlZF9j b25maWdfc3BhY2VbMF0pXTsKKwlkYXRhID4+PSAocG9zICUgc2l6ZW9mKGRldi0+c2F2ZWRf Y29uZmlnX3NwYWNlWzBdKSkgKiA4OworCXJldHVybiBkYXRhOworfQorCisjZGVmaW5lIFBD SV9VU0VSX1JFQURfQ09ORklHKHNpemUsdHlwZSkJCQkJCVwKK2ludCBwY2lfdXNlcl9yZWFk X2NvbmZpZ18jI3NpemUJCQkJCQlcCisJKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwb3Ms IHR5cGUgKnZhbCkJCQlcCit7CQkJCQkJCQkJXAorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CQkJ CQkJXAorCWludCByZXQgPSAwOwkJCQkJCQlcCisJdTMyIGRhdGEgPSAtMTsJCQkJCQkJXAor CWlmIChQQ0lfIyNzaXplIyNfQkFEKSByZXR1cm4gUENJQklPU19CQURfUkVHSVNURVJfTlVN QkVSOwlcCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBjaV9sb2NrLCBmbGFncyk7CQkJCVwKKwlp ZiAobGlrZWx5KCFkZXYtPmJsb2NrX3VjZmdfYWNjZXNzKSkJCQkJXAorCQlyZXQgPSBkZXYt PmJ1cy0+b3BzLT5yZWFkKGRldi0+YnVzLCBkZXYtPmRldmZuLAkJXAorCQkJCQlwb3MsIHNp emVvZih0eXBlKSwgJmRhdGEpOwlcCisJZWxzZSBpZiAocG9zIDwgc2l6ZW9mKGRldi0+c2F2 ZWRfY29uZmlnX3NwYWNlKSkJCQlcCisJCWRhdGEgPSBwY2lfdXNlcl9jYWNoZWRfY29uZmln KGRldiwgcG9zKTsgCQlcCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGNpX2xvY2ssIGZs YWdzKTsJCQlcCisJKnZhbCA9ICh0eXBlKWRhdGE7CQkJCQkJXAorCXJldHVybiByZXQ7CQkJ CQkJCVwKK30KKworI2RlZmluZSBQQ0lfVVNFUl9XUklURV9DT05GSUcoc2l6ZSx0eXBlKQkJ CQlcCitpbnQgcGNpX3VzZXJfd3JpdGVfY29uZmlnXyMjc2l6ZQkJCQkJXAorCShzdHJ1Y3Qg cGNpX2RldiAqZGV2LCBpbnQgcG9zLCB0eXBlIHZhbCkJCQlcCit7CQkJCQkJCQkJXAorCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CQkJCQkJXAorCWludCByZXQgPSAtRUlPOwkJCQkJCQlcCisJ aWYgKFBDSV8jI3NpemUjI19CQUQpIHJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RFUl9OVU1C RVI7CVwKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcGNpX2xvY2ssIGZsYWdzKTsJCQkJXAorCWlm IChsaWtlbHkoIWRldi0+YmxvY2tfdWNmZ19hY2Nlc3MpKQkJCQlcCisJCXJldCA9IGRldi0+ YnVzLT5vcHMtPndyaXRlKGRldi0+YnVzLCBkZXYtPmRldmZuLAlcCisJCQkJCXBvcywgc2l6 ZW9mKHR5cGUpLCB2YWwpOwlcCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGNpX2xvY2ss IGZsYWdzKTsJCQlcCisJcmV0dXJuIHJldDsJCQkJCQkJXAorfQorCitQQ0lfVVNFUl9SRUFE X0NPTkZJRyhieXRlLCB1OCkKK1BDSV9VU0VSX1JFQURfQ09ORklHKHdvcmQsIHUxNikKK1BD SV9VU0VSX1JFQURfQ09ORklHKGR3b3JkLCB1MzIpCitQQ0lfVVNFUl9XUklURV9DT05GSUco Ynl0ZSwgdTgpCitQQ0lfVVNFUl9XUklURV9DT05GSUcod29yZCwgdTE2KQorUENJX1VTRVJf V1JJVEVfQ09ORklHKGR3b3JkLCB1MzIpCisKKy8qKgorICogcGNpX2Jsb2NrX3VzZXJfY2Zn X2FjY2VzcyAtIEJsb2NrIHVzZXJzcGFjZSBQQ0kgY29uZmlnIHJlYWRzL3dyaXRlcworICog QGRldjoJcGNpIGRldmljZSBzdHJ1Y3QKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGJsb2NrcyBh bnkgdXNlcnNwYWNlIFBDSSBjb25maWcgYWNjZXNzZXMgZnJvbSBvY2N1cnJpbmcuCisgKiBX aGVuIGJsb2NrZWQsIGFueSB3cml0ZXMgd2lsbCBiZSBiaXQgYnVja2V0ZWQgYW5kIHJlYWRz IHdpbGwgcmV0dXJuIHRoZQorICogZGF0YSBzYXZlZCB1c2luZyBwY2lfc2F2ZV9zdGF0ZSBm b3IgdGhlIGZpcnN0IDY0IGJ5dGVzIG9mIGNvbmZpZworICogc3BhY2UgYW5kIHJldHVybiAw eGZmIGZvciBhbGwgb3RoZXIgY29uZmlnIHJlYWRzLgorICoqLwordm9pZCBwY2lfYmxvY2tf dXNlcl9jZmdfYWNjZXNzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCit7CisJdW5zaWduZWQgbG9u ZyBmbGFnczsKKworCXBjaV9zYXZlX3N0YXRlKGRldik7CisJc3Bpbl9sb2NrX2lycXNhdmUo JnBjaV9sb2NrLCBmbGFncyk7CisJZGV2LT5ibG9ja191Y2ZnX2FjY2VzcyA9IDE7CisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcGNpX2xvY2ssIGZsYWdzKTsKK30KK0VYUE9SVF9TWU1C T0xfR1BMKHBjaV9ibG9ja191c2VyX2NmZ19hY2Nlc3MpOworCisvKioKKyAqIHBjaV91bmJs b2NrX3VzZXJfY2ZnX2FjY2VzcyAtIFVuYmxvY2sgdXNlcnNwYWNlIFBDSSBjb25maWcgcmVh ZHMvd3JpdGVzCisgKiBAZGV2OglwY2kgZGV2aWNlIHN0cnVjdAorICoKKyAqIFRoaXMgZnVu Y3Rpb24gYWxsb3dzIHVzZXJzcGFjZSBQQ0kgY29uZmlnIGFjY2Vzc2VzIHRvIHJlc3VtZS4K KyAqKi8KK3ZvaWQgcGNpX3VuYmxvY2tfdXNlcl9jZmdfYWNjZXNzKHN0cnVjdCBwY2lfZGV2 ICpkZXYpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZl KCZwY2lfbG9jaywgZmxhZ3MpOworCWRldi0+YmxvY2tfdWNmZ19hY2Nlc3MgPSAwOworCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnBjaV9sb2NrLCBmbGFncyk7Cit9CitFWFBPUlRfU1lN Qk9MX0dQTChwY2lfdW5ibG9ja191c2VyX2NmZ19hY2Nlc3MpOwpkaWZmIC1wdU4gZHJpdmVy cy9wY2kvcGNpLXN5c2ZzLmN+cGNpX2Jsb2NrX3VzZXJfY29uZmlnX2lvX2R1cmluZ19iaXN0 X2FnYWluIGRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jCi0tLSBsaW51eC0yLjYvZHJpdmVycy9w Y2kvcGNpLXN5c2ZzLmN+cGNpX2Jsb2NrX3VzZXJfY29uZmlnX2lvX2R1cmluZ19iaXN0X2Fn YWluCTIwMDUtMDYtMjEgMDk6MzU6MTYuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYt YmpraW5nMS9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYwkyMDA1LTA2LTIxIDA5OjM1OjE3LjAw MDAwMDAwMCAtMDUwMApAQCAtMTIzLDcgKzEyMyw3IEBAIHBjaV9yZWFkX2NvbmZpZyhzdHJ1 Y3Qga29iamVjdCAqa29iaiwgY2gKIAogCWlmICgob2ZmICYgMSkgJiYgc2l6ZSkgewogCQl1 OCB2YWw7Ci0JCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgb2ZmLCAmdmFsKTsKKwkJcGNp X3VzZXJfcmVhZF9jb25maWdfYnl0ZShkZXYsIG9mZiwgJnZhbCk7CiAJCWRhdGFbb2ZmIC0g aW5pdF9vZmZdID0gdmFsOwogCQlvZmYrKzsKIAkJc2l6ZS0tOwpAQCAtMTQwLDcgKzE0MCw3 IEBAIHBjaV9yZWFkX2NvbmZpZyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgY2gKIAogCXdoaWxl IChzaXplID4gMykgewogCQl1MzIgdmFsOwotCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2 LCBvZmYsICZ2YWwpOworCQlwY2lfdXNlcl9yZWFkX2NvbmZpZ19kd29yZChkZXYsIG9mZiwg JnZhbCk7CiAJCWRhdGFbb2ZmIC0gaW5pdF9vZmZdID0gdmFsICYgMHhmZjsKIAkJZGF0YVtv ZmYgLSBpbml0X29mZiArIDFdID0gKHZhbCA+PiA4KSAmIDB4ZmY7CiAJCWRhdGFbb2ZmIC0g aW5pdF9vZmYgKyAyXSA9ICh2YWwgPj4gMTYpICYgMHhmZjsKQEAgLTE2MCw3ICsxNjAsNyBA QCBwY2lfcmVhZF9jb25maWcoc3RydWN0IGtvYmplY3QgKmtvYmosIGNoCiAKIAlpZiAoc2l6 ZSA+IDApIHsKIAkJdTggdmFsOwotCQlwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYsIG9mZiwg JnZhbCk7CisJCXBjaV91c2VyX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBvZmYsICZ2YWwpOwog CQlkYXRhW29mZiAtIGluaXRfb2ZmXSA9IHZhbDsKIAkJb2ZmKys7CiAJCS0tc2l6ZTsKQEAg LTE4NSw3ICsxODUsNyBAQCBwY2lfd3JpdGVfY29uZmlnKHN0cnVjdCBrb2JqZWN0ICprb2Jq LCBjCiAJfQogCQogCWlmICgob2ZmICYgMSkgJiYgc2l6ZSkgewotCQlwY2lfd3JpdGVfY29u ZmlnX2J5dGUoZGV2LCBvZmYsIGRhdGFbb2ZmIC0gaW5pdF9vZmZdKTsKKwkJcGNpX3VzZXJf d3JpdGVfY29uZmlnX2J5dGUoZGV2LCBvZmYsIGRhdGFbb2ZmIC0gaW5pdF9vZmZdKTsKIAkJ b2ZmKys7CiAJCXNpemUtLTsKIAl9CkBAIC0yMTcsNyArMjE3LDcgQEAgcGNpX3dyaXRlX2Nv bmZpZyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgYwogCX0KIAogCWlmIChzaXplKSB7Ci0JCXBj aV93cml0ZV9jb25maWdfYnl0ZShkZXYsIG9mZiwgZGF0YVtvZmYgLSBpbml0X29mZl0pOwor CQlwY2lfdXNlcl93cml0ZV9jb25maWdfYnl0ZShkZXYsIG9mZiwgZGF0YVtvZmYgLSBpbml0 X29mZl0pOwogCQlvZmYrKzsKIAkJLS1zaXplOwogCX0KZGlmZiAtcHVOIGRyaXZlcnMvcGNp L3Byb2MuY35wY2lfYmxvY2tfdXNlcl9jb25maWdfaW9fZHVyaW5nX2Jpc3RfYWdhaW4gZHJp dmVycy9wY2kvcHJvYy5jCi0tLSBsaW51eC0yLjYvZHJpdmVycy9wY2kvcHJvYy5jfnBjaV9i bG9ja191c2VyX2NvbmZpZ19pb19kdXJpbmdfYmlzdF9hZ2FpbgkyMDA1LTA2LTIxIDA5OjM1 OjE2LjAwMDAwMDAwMCAtMDUwMAorKysgbGludXgtMi42LWJqa2luZzEvZHJpdmVycy9wY2kv cHJvYy5jCTIwMDUtMDYtMjEgMDk6MzY6NDMuMDAwMDAwMDAwIC0wNTAwCkBAIC04MCw3ICs4 MCw3IEBAIHByb2NfYnVzX3BjaV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGEKIAogCWlm ICgocG9zICYgMSkgJiYgY250KSB7CiAJCXVuc2lnbmVkIGNoYXIgdmFsOwotCQlwY2lfcmVh ZF9jb25maWdfYnl0ZShkZXYsIHBvcywgJnZhbCk7CisJCXBjaV91c2VyX3JlYWRfY29uZmln X2J5dGUoZGV2LCBwb3MsICZ2YWwpOwogCQlfX3B1dF91c2VyKHZhbCwgYnVmKTsKIAkJYnVm Kys7CiAJCXBvcysrOwpAQCAtODksNyArODksNyBAQCBwcm9jX2J1c19wY2lfcmVhZChzdHJ1 Y3QgZmlsZSAqZmlsZSwgY2hhCiAKIAlpZiAoKHBvcyAmIDMpICYmIGNudCA+IDIpIHsKIAkJ dW5zaWduZWQgc2hvcnQgdmFsOwotCQlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIHBvcywg JnZhbCk7CisJCXBjaV91c2VyX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBwb3MsICZ2YWwpOwog CQlfX3B1dF91c2VyKGNwdV90b19sZTE2KHZhbCksICh1bnNpZ25lZCBzaG9ydCBfX3VzZXIg KikgYnVmKTsKIAkJYnVmICs9IDI7CiAJCXBvcyArPSAyOwpAQCAtOTgsNyArOTgsNyBAQCBw cm9jX2J1c19wY2lfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhCiAKIAl3aGlsZSAoY250 ID49IDQpIHsKIAkJdW5zaWduZWQgaW50IHZhbDsKLQkJcGNpX3JlYWRfY29uZmlnX2R3b3Jk KGRldiwgcG9zLCAmdmFsKTsKKwkJcGNpX3VzZXJfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBw b3MsICZ2YWwpOwogCQlfX3B1dF91c2VyKGNwdV90b19sZTMyKHZhbCksICh1bnNpZ25lZCBp bnQgX191c2VyICopIGJ1Zik7CiAJCWJ1ZiArPSA0OwogCQlwb3MgKz0gNDsKQEAgLTEwNyw3 ICsxMDcsNyBAQCBwcm9jX2J1c19wY2lfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhCiAK IAlpZiAoY250ID49IDIpIHsKIAkJdW5zaWduZWQgc2hvcnQgdmFsOwotCQlwY2lfcmVhZF9j b25maWdfd29yZChkZXYsIHBvcywgJnZhbCk7CisJCXBjaV91c2VyX3JlYWRfY29uZmlnX3dv cmQoZGV2LCBwb3MsICZ2YWwpOwogCQlfX3B1dF91c2VyKGNwdV90b19sZTE2KHZhbCksICh1 bnNpZ25lZCBzaG9ydCBfX3VzZXIgKikgYnVmKTsKIAkJYnVmICs9IDI7CiAJCXBvcyArPSAy OwpAQCAtMTE2LDcgKzExNiw3IEBAIHByb2NfYnVzX3BjaV9yZWFkKHN0cnVjdCBmaWxlICpm aWxlLCBjaGEKIAogCWlmIChjbnQpIHsKIAkJdW5zaWduZWQgY2hhciB2YWw7Ci0JCXBjaV9y ZWFkX2NvbmZpZ19ieXRlKGRldiwgcG9zLCAmdmFsKTsKKwkJcGNpX3VzZXJfcmVhZF9jb25m aWdfYnl0ZShkZXYsIHBvcywgJnZhbCk7CiAJCV9fcHV0X3VzZXIodmFsLCBidWYpOwogCQli dWYrKzsKIAkJcG9zKys7CkBAIC0xNTEsNyArMTUxLDcgQEAgcHJvY19idXNfcGNpX3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLCBjbwogCWlmICgocG9zICYgMSkgJiYgY250KSB7CiAJCXVu c2lnbmVkIGNoYXIgdmFsOwogCQlfX2dldF91c2VyKHZhbCwgYnVmKTsKLQkJcGNpX3dyaXRl X2NvbmZpZ19ieXRlKGRldiwgcG9zLCB2YWwpOworCQlwY2lfdXNlcl93cml0ZV9jb25maWdf Ynl0ZShkZXYsIHBvcywgdmFsKTsKIAkJYnVmKys7CiAJCXBvcysrOwogCQljbnQtLTsKQEAg LTE2MCw3ICsxNjAsNyBAQCBwcm9jX2J1c19wY2lfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUs IGNvCiAJaWYgKChwb3MgJiAzKSAmJiBjbnQgPiAyKSB7CiAJCXVuc2lnbmVkIHNob3J0IHZh bDsKIAkJX19nZXRfdXNlcih2YWwsICh1bnNpZ25lZCBzaG9ydCBfX3VzZXIgKikgYnVmKTsK LQkJcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgcG9zLCBsZTE2X3RvX2NwdSh2YWwpKTsK KwkJcGNpX3VzZXJfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCBwb3MsIGxlMTZfdG9fY3B1KHZh bCkpOwogCQlidWYgKz0gMjsKIAkJcG9zICs9IDI7CiAJCWNudCAtPSAyOwpAQCAtMTY5LDcg KzE2OSw3IEBAIHByb2NfYnVzX3BjaV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY28KIAl3 aGlsZSAoY250ID49IDQpIHsKIAkJdW5zaWduZWQgaW50IHZhbDsKIAkJX19nZXRfdXNlcih2 YWwsICh1bnNpZ25lZCBpbnQgX191c2VyICopIGJ1Zik7Ci0JCXBjaV93cml0ZV9jb25maWdf ZHdvcmQoZGV2LCBwb3MsIGxlMzJfdG9fY3B1KHZhbCkpOworCQlwY2lfdXNlcl93cml0ZV9j b25maWdfZHdvcmQoZGV2LCBwb3MsIGxlMzJfdG9fY3B1KHZhbCkpOwogCQlidWYgKz0gNDsK IAkJcG9zICs9IDQ7CiAJCWNudCAtPSA0OwpAQCAtMTc4LDcgKzE3OCw3IEBAIHByb2NfYnVz X3BjaV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY28KIAlpZiAoY250ID49IDIpIHsKIAkJ dW5zaWduZWQgc2hvcnQgdmFsOwogCQlfX2dldF91c2VyKHZhbCwgKHVuc2lnbmVkIHNob3J0 IF9fdXNlciAqKSBidWYpOwotCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCBwb3MsIGxl MTZfdG9fY3B1KHZhbCkpOworCQlwY2lfdXNlcl93cml0ZV9jb25maWdfd29yZChkZXYsIHBv cywgbGUxNl90b19jcHUodmFsKSk7CiAJCWJ1ZiArPSAyOwogCQlwb3MgKz0gMjsKIAkJY250 IC09IDI7CkBAIC0xODcsNyArMTg3LDcgQEAgcHJvY19idXNfcGNpX3dyaXRlKHN0cnVjdCBm aWxlICpmaWxlLCBjbwogCWlmIChjbnQpIHsKIAkJdW5zaWduZWQgY2hhciB2YWw7CiAJCV9f Z2V0X3VzZXIodmFsLCBidWYpOwotCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBwb3Ms IHZhbCk7CisJCXBjaV91c2VyX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgcG9zLCB2YWwpOwog CQlidWYrKzsKIAkJcG9zKys7CiAJCWNudC0tOwpAQCAtNDc4LDEwICs0NzgsMTAgQEAgc3Rh dGljIGludCBzaG93X2Rldl9jb25maWcoc3RydWN0IHNlcV9maQogCiAJZHJ2ID0gcGNpX2Rl dl9kcml2ZXIoZGV2KTsKIAotCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIFBDSV9DTEFT U19SRVZJU0lPTiwgJmNsYXNzX3Jldik7Ci0JcGNpX3JlYWRfY29uZmlnX2J5dGUgKGRldiwg UENJX0xBVEVOQ1lfVElNRVIsICZsYXRlbmN5KTsKLQlwY2lfcmVhZF9jb25maWdfYnl0ZSAo ZGV2LCBQQ0lfTUlOX0dOVCwgJm1pbl9nbnQpOwotCXBjaV9yZWFkX2NvbmZpZ19ieXRlIChk ZXYsIFBDSV9NQVhfTEFULCAmbWF4X2xhdCk7CisJcGNpX3VzZXJfcmVhZF9jb25maWdfZHdv cmQoZGV2LCBQQ0lfQ0xBU1NfUkVWSVNJT04sICZjbGFzc19yZXYpOworCXBjaV91c2VyX3Jl YWRfY29uZmlnX2J5dGUgKGRldiwgUENJX0xBVEVOQ1lfVElNRVIsICZsYXRlbmN5KTsKKwlw Y2lfdXNlcl9yZWFkX2NvbmZpZ19ieXRlIChkZXYsIFBDSV9NSU5fR05ULCAmbWluX2dudCk7 CisJcGNpX3VzZXJfcmVhZF9jb25maWdfYnl0ZSAoZGV2LCBQQ0lfTUFYX0xBVCwgJm1heF9s YXQpOwogCXNlcV9wcmludGYobSwgIiAgQnVzICUyZCwgZGV2aWNlICUzZCwgZnVuY3Rpb24g JTJkOlxuIiwKIAkgICAgICAgZGV2LT5idXMtPm51bWJlciwgUENJX1NMT1QoZGV2LT5kZXZm biksIFBDSV9GVU5DKGRldi0+ZGV2Zm4pKTsKIAljbGFzcyA9IHBjaV9jbGFzc19uYW1lKGNs YXNzX3JldiA+PiAxNik7CmRpZmYgLXB1TiBkcml2ZXJzL3BjaS9zeXNjYWxsLmN+cGNpX2Js b2NrX3VzZXJfY29uZmlnX2lvX2R1cmluZ19iaXN0X2FnYWluIGRyaXZlcnMvcGNpL3N5c2Nh bGwuYwotLS0gbGludXgtMi42L2RyaXZlcnMvcGNpL3N5c2NhbGwuY35wY2lfYmxvY2tfdXNl cl9jb25maWdfaW9fZHVyaW5nX2Jpc3RfYWdhaW4JMjAwNS0wNi0yMSAwOTozNToxNi4wMDAw MDAwMDAgLTA1MDAKKysrIGxpbnV4LTIuNi1iamtpbmcxL2RyaXZlcnMvcGNpL3N5c2NhbGwu YwkyMDA1LTA2LTIxIDA5OjM1OjE2LjAwMDAwMDAwMCAtMDUwMApAQCAtMTMsNyArMTMsNyBA QAogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvc3lzY2Fs bHMuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgotCisjaW5jbHVkZSAicGNpLmgiCiAK IGFzbWxpbmthZ2UgbG9uZwogc3lzX3BjaWNvbmZpZ19yZWFkKHVuc2lnbmVkIGxvbmcgYnVz LCB1bnNpZ25lZCBsb25nIGRmbiwKQEAgLTM4LDEzICszOCwxMyBAQCBzeXNfcGNpY29uZmln X3JlYWQodW5zaWduZWQgbG9uZyBidXMsIHVuCiAJbG9ja19rZXJuZWwoKTsKIAlzd2l0Y2gg KGxlbikgewogCWNhc2UgMToKLQkJY2ZnX3JldCA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKGRl diwgb2ZmLCAmYnl0ZSk7CisJCWNmZ19yZXQgPSBwY2lfdXNlcl9yZWFkX2NvbmZpZ19ieXRl KGRldiwgb2ZmLCAmYnl0ZSk7CiAJCWJyZWFrOwogCWNhc2UgMjoKLQkJY2ZnX3JldCA9IHBj aV9yZWFkX2NvbmZpZ193b3JkKGRldiwgb2ZmLCAmd29yZCk7CisJCWNmZ19yZXQgPSBwY2lf dXNlcl9yZWFkX2NvbmZpZ193b3JkKGRldiwgb2ZmLCAmd29yZCk7CiAJCWJyZWFrOwogCWNh c2UgNDoKLQkJY2ZnX3JldCA9IHBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIG9mZiwgJmR3 b3JkKTsKKwkJY2ZnX3JldCA9IHBjaV91c2VyX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgb2Zm LCAmZHdvcmQpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQllcnIgPSAtRUlOVkFMOwpAQCAt MTEyLDcgKzExMiw3IEBAIHN5c19wY2ljb25maWdfd3JpdGUodW5zaWduZWQgbG9uZyBidXMs IHUKIAkJZXJyID0gZ2V0X3VzZXIoYnl0ZSwgKHU4IF9fdXNlciAqKWJ1Zik7CiAJCWlmIChl cnIpCiAJCQlicmVhazsKLQkJZXJyID0gcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgb2Zm LCBieXRlKTsKKwkJZXJyID0gcGNpX3VzZXJfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBvZmYs IGJ5dGUpOwogCQlpZiAoZXJyICE9IFBDSUJJT1NfU1VDQ0VTU0ZVTCkKIAkJCWVyciA9IC1F SU87CiAJCWJyZWFrOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHN5c19wY2ljb25maWdfd3JpdGUo dW5zaWduZWQgbG9uZyBidXMsIHUKIAkJZXJyID0gZ2V0X3VzZXIod29yZCwgKHUxNiBfX3Vz ZXIgKilidWYpOwogCQlpZiAoZXJyKQogCQkJYnJlYWs7Ci0JCWVyciA9IHBjaV93cml0ZV9j b25maWdfd29yZChkZXYsIG9mZiwgd29yZCk7CisJCWVyciA9IHBjaV91c2VyX3dyaXRlX2Nv bmZpZ193b3JkKGRldiwgb2ZmLCB3b3JkKTsKIAkJaWYgKGVyciAhPSBQQ0lCSU9TX1NVQ0NF U1NGVUwpCiAJCQllcnIgPSAtRUlPOwogCQlicmVhazsKQEAgLTEzMCw3ICsxMzAsNyBAQCBz eXNfcGNpY29uZmlnX3dyaXRlKHVuc2lnbmVkIGxvbmcgYnVzLCB1CiAJCWVyciA9IGdldF91 c2VyKGR3b3JkLCAodTMyIF9fdXNlciAqKWJ1Zik7CiAJCWlmIChlcnIpCiAJCQlicmVhazsK LQkJZXJyID0gcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIG9mZiwgZHdvcmQpOworCQll cnIgPSBwY2lfdXNlcl93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBvZmYsIGR3b3JkKTsKIAkJ aWYgKGVyciAhPSBQQ0lCSU9TX1NVQ0NFU1NGVUwpCiAJCQllcnIgPSAtRUlPOwogCQlicmVh azsKZGlmZiAtcHVOIGluY2x1ZGUvbGludXgvcGNpLmh+cGNpX2Jsb2NrX3VzZXJfY29uZmln X2lvX2R1cmluZ19iaXN0X2FnYWluIGluY2x1ZGUvbGludXgvcGNpLmgKLS0tIGxpbnV4LTIu Ni9pbmNsdWRlL2xpbnV4L3BjaS5ofnBjaV9ibG9ja191c2VyX2NvbmZpZ19pb19kdXJpbmdf YmlzdF9hZ2FpbgkyMDA1LTA2LTIxIDA5OjM1OjE2LjAwMDAwMDAwMCAtMDUwMAorKysgbGlu dXgtMi42LWJqa2luZzEvaW5jbHVkZS9saW51eC9wY2kuaAkyMDA1LTA2LTIxIDA5OjM1OjE2 LjAwMDAwMDAwMCAtMDUwMApAQCAtNTU2LDcgKzU1Niw4IEBAIHN0cnVjdCBwY2lfZGV2IHsK IAkvKiBrZWVwIHRyYWNrIG9mIGRldmljZSBzdGF0ZSAqLwogCXVuc2lnbmVkIGludAlpc19l bmFibGVkOjE7CS8qIHBjaV9lbmFibGVfZGV2aWNlIGhhcyBiZWVuIGNhbGxlZCAqLwogCXVu c2lnbmVkIGludAlpc19idXNtYXN0ZXI6MTsgLyogZGV2aWNlIGlzIGJ1c21hc3RlciAqLwot CQorCXVuc2lnbmVkIGludAlibG9ja191Y2ZnX2FjY2VzczoxOwkvKiB1c2Vyc3BhY2UgY29u ZmlnIHNwYWNlIGFjY2VzcyBpcyBibG9ja2VkICovCisKIAl1MzIJCXNhdmVkX2NvbmZpZ19z cGFjZVsxNl07IC8qIGNvbmZpZyBzcGFjZSBzYXZlZCBhdCBzdXNwZW5kIHRpbWUgKi8KIAlz dHJ1Y3QgYmluX2F0dHJpYnV0ZSAqcm9tX2F0dHI7IC8qIGF0dHJpYnV0ZSBkZXNjcmlwdG9y IGZvciBzeXNmcyBST00gZW50cnkgKi8KIAlpbnQgcm9tX2F0dHJfZW5hYmxlZDsJCS8qIGhh cyBkaXNwbGF5IG9mIHRoZSByb20gYXR0cmlidXRlIGJlZW4gZW5hYmxlZD8gKi8KQEAgLTg5 Nyw2ICs4OTgsOCBAQCBleHRlcm4gdm9pZCBwY2lfZGlzYWJsZV9tc2l4KHN0cnVjdCBwY2lf CiBleHRlcm4gdm9pZCBtc2lfcmVtb3ZlX3BjaV9pcnFfdmVjdG9ycyhzdHJ1Y3QgcGNpX2Rl diAqZGV2KTsKICNlbmRpZgogCitleHRlcm4gdm9pZCBwY2lfYmxvY2tfdXNlcl9jZmdfYWNj ZXNzKHN0cnVjdCBwY2lfZGV2ICpkZXYpOworZXh0ZXJuIHZvaWQgcGNpX3VuYmxvY2tfdXNl cl9jZmdfYWNjZXNzKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwogI2VuZGlmIC8qIENPTkZJR19Q Q0kgKi8KIAogLyogSW5jbHVkZSBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IHNldHRpbmdzIGFu ZCBmdW5jdGlvbnMgKi8KQEAgLTk0Nyw2ICs5NTAsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQg cGNpX3VucmVnaXN0ZXJfZHJpdmVyCiBzdGF0aWMgaW5saW5lIGludCBwY2lfZmluZF9jYXBh YmlsaXR5IChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgY2FwKSB7cmV0dXJuIDA7IH0KIHN0 YXRpYyBpbmxpbmUgaW50IHBjaV9maW5kX2V4dF9jYXBhYmlsaXR5IChzdHJ1Y3QgcGNpX2Rl diAqZGV2LCBpbnQgY2FwKSB7cmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgY29uc3Qgc3Ry dWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IHBjaV9k ZXZpY2VfaWQgKmlkcywgY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldikgeyByZXR1cm4gTlVM TDsgfQorc3RhdGljIGlubGluZSB2b2lkIHBjaV9ibG9ja191c2VyX2NmZ19hY2Nlc3Moc3Ry dWN0IHBjaV9kZXYgKmRldikgeyB9CitzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3VuYmxvY2tf dXNlcl9jZmdfYWNjZXNzKHN0cnVjdCBwY2lfZGV2ICpkZXYpIHsgfQogCiAvKiBQb3dlciBt YW5hZ2VtZW50IHJlbGF0ZWQgcm91dGluZXMgKi8KIHN0YXRpYyBpbmxpbmUgaW50IHBjaV9z YXZlX3N0YXRlKHN0cnVjdCBwY2lfZGV2ICpkZXYpIHsgcmV0dXJuIDA7IH0KZGlmZiAtcHVO IGRyaXZlcnMvcGNpL3BjaS5ofnBjaV9ibG9ja191c2VyX2NvbmZpZ19pb19kdXJpbmdfYmlz dF9hZ2FpbiBkcml2ZXJzL3BjaS9wY2kuaAotLS0gbGludXgtMi42L2RyaXZlcnMvcGNpL3Bj aS5ofnBjaV9ibG9ja191c2VyX2NvbmZpZ19pb19kdXJpbmdfYmlzdF9hZ2FpbgkyMDA1LTA2 LTIxIDA5OjM1OjE2LjAwMDAwMDAwMCAtMDUwMAorKysgbGludXgtMi42LWJqa2luZzEvZHJp dmVycy9wY2kvcGNpLmgJMjAwNS0wNi0yMSAwOTozNToxNi4wMDAwMDAwMDAgLTA1MDAKQEAg LTExLDYgKzExLDEzIEBAIGV4dGVybiBpbnQgcGNpX2J1c19hbGxvY19yZXNvdXJjZShzdHJ1 Y3QKIAkJCQkgIHZvaWQgKCphbGlnbmYpKHZvaWQgKiwgc3RydWN0IHJlc291cmNlICosCiAJ CQkJCSAgCSB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKSwKIAkJCQkgIHZvaWQgKmFs aWduZl9kYXRhKTsKK2V4dGVybiBpbnQgcGNpX3VzZXJfcmVhZF9jb25maWdfYnl0ZShzdHJ1 Y3QgcGNpX2RldiAqZGV2LCBpbnQgd2hlcmUsIHU4ICp2YWwpOworZXh0ZXJuIGludCBwY2lf dXNlcl9yZWFkX2NvbmZpZ193b3JkKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwg dTE2ICp2YWwpOworZXh0ZXJuIGludCBwY2lfdXNlcl9yZWFkX2NvbmZpZ19kd29yZChzdHJ1 Y3QgcGNpX2RldiAqZGV2LCBpbnQgd2hlcmUsIHUzMiAqdmFsKTsKK2V4dGVybiBpbnQgcGNp X3VzZXJfd3JpdGVfY29uZmlnX2J5dGUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJl LCB1OCB2YWwpOworZXh0ZXJuIGludCBwY2lfdXNlcl93cml0ZV9jb25maWdfd29yZChzdHJ1 Y3QgcGNpX2RldiAqZGV2LCBpbnQgd2hlcmUsIHUxNiB2YWwpOworZXh0ZXJuIGludCBwY2lf dXNlcl93cml0ZV9jb25maWdfZHdvcmQoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJl LCB1MzIgdmFsKTsKKwogLyogUENJIC9wcm9jIGZ1bmN0aW9ucyAqLwogI2lmZGVmIENPTkZJ R19QUk9DX0ZTCiBleHRlcm4gaW50IHBjaV9wcm9jX2F0dGFjaF9kZXZpY2Uoc3RydWN0IHBj aV9kZXYgKmRldik7Cl8K --------------080600010706030800030500--