From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian King Subject: Re: [PATCH 0/2] libata: support SATA devices on SAS HBAs Date: Tue, 25 Oct 2005 09:27:46 -0500 Message-ID: <435E40E2.3010600@us.ibm.com> References: <4341A91A.3020000@us.ibm.com> <434251E0.9060000@pobox.com> <58cb370e0510040322q1cb7a13bjfc6c7875140d20a9@mail.gmail.com> <58cb370e0510041356h780e7a5aifda0c232f677471e@mail.gmail.com> <43443E99.4090008@pobox.com> <435D5D83.1060201@us.ibm.com> <435E2C25.10009@adaptec.com> <435E357D.1020800@us.ibm.com> <435E35D1.4070907@adaptec.com> <435E38CE.9000000@us.ibm.com> <435E3C5C.70007@adaptec.com> Reply-To: brking@us.ibm.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000903030808000505050603" Return-path: Received: from e33.co.us.ibm.com ([32.97.110.151]:54224 "EHLO e33.co.us.ibm.com") by vger.kernel.org with ESMTP id S932158AbVJYO1u (ORCPT ); Tue, 25 Oct 2005 10:27:50 -0400 In-Reply-To: <435E3C5C.70007@adaptec.com> Sender: linux-ide-owner@vger.kernel.org List-Id: linux-ide@vger.kernel.org To: Luben Tuikov Cc: Jeff Garzik , Bartlomiej Zolnierkiewicz , linux-ide@vger.kernel.org, linux-scsi@vger.kernel.org This is a multi-part message in MIME format. --------------000903030808000505050603 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Luben Tuikov wrote: > On 10/25/05 09:53, Brian King wrote: >>I am still trying to get the patches tested >>in my environment, but since there has been some discussion on the >>list about others needing the same function I figured I would share >>what I have with a wider audience. > > > That's great. Keep me posted on how it fares in your environment. > I'll also give them a try. > > I think that there will be quite a few things that the ipr driver > and the SAS Transport Layer would set in exactly the same way, > like say, the device id, DMA (rate), etc. Those commonalities can be > abstracted away later I guess. > > If you have a patch introducing this patch to ipr, send it to me please. Here is the ipr patch. Its queued up behind a bunch of other ipr patches I'm getting ready to push, and it won't apply without them. I uploaded the whole patchset to sourceforge, so you can just apply the whole set and have a working tree. http://prdownloads.sourceforge.net/iprdd/ipr-sas-patches.tgz?download Thanks Brian -- Brian King eServer Storage I/O IBM Linux Technology Center --------------000903030808000505050603 Content-Type: text/plain; name="ipr_sata_with_libata_changes.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ipr_sata_with_libata_changes.patch" CkFkZHMgc3VwcG9ydCB0byBhdHRhY2ggU0FUQSBkZXZpY2VzIHRvIFNBUyBhZGFwdGVycy4K ClNpZ25lZC1vZmYtYnk6IEJyaWFuIEtpbmcgPGJya2luZ0B1cy5pYm0uY29tPgotLS0KCiBs aW51eC0yLjYtYmpraW5nMS9kcml2ZXJzL3Njc2kvS2NvbmZpZyAgfCAgICAxIAogbGludXgt Mi42LWJqa2luZzEvZHJpdmVycy9zY3NpL01ha2VmaWxlIHwgICAgMiAKIGxpbnV4LTIuNi1i amtpbmcxL2RyaXZlcnMvc2NzaS9pcHIuYyAgICB8ICA0NzcgKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0KIGxpbnV4LTIuNi1iamtpbmcxL2RyaXZlcnMvc2NzaS9pcHIuaCAg ICB8ICAgODUgKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNTE2IGluc2VydGlvbnMoKyksIDQ5 IGRlbGV0aW9ucygtKQoKZGlmZiAtcHVOIGRyaXZlcnMvc2NzaS9pcHIuaH5pcHJfc2F0YV93 aXRoX2xpYmF0YV9jaGFuZ2VzIGRyaXZlcnMvc2NzaS9pcHIuaAotLS0gbGludXgtMi42L2Ry aXZlcnMvc2NzaS9pcHIuaH5pcHJfc2F0YV93aXRoX2xpYmF0YV9jaGFuZ2VzCTIwMDUtMTAt MjUgMDk6MTU6NDkuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYtYmpraW5nMS9kcml2 ZXJzL3Njc2kvaXByLmgJMjAwNS0xMC0yNSAwOToxNTo0OS4wMDAwMDAwMDAgLTA1MDAKQEAg LTQ1LDYgKzQ1LDcgQEAKICAqCVRoaXMgY2FuIGJlIGFkanVzdGVkIGF0IHJ1bnRpbWUgdGhy b3VnaCBzeXNmcyBkZXZpY2UgYXR0cmlidXRlcy4KICAqLwogI2RlZmluZSBJUFJfTUFYX0NN RF9QRVJfTFVOCQkJCTYKKyNkZWZpbmUgSVBSX01BWF9DTURfUEVSX0FUQV9MVU4JCQkxCiAK IC8qCiAgKiBJUFJfTlVNX0JBU0VfQ01EX0JMS1M6IFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11 bSBudW1iZXIgb2YKQEAgLTE0NCw2ICsxNDUsNyBAQAogI2RlZmluZQlJUFJfTFVOX1JFU0VU CQkJCQkweDQwCiAjZGVmaW5lCUlQUl9UQVJHRVRfUkVTRVQJCQkJCTB4MjAKICNkZWZpbmUJ SVBSX0JVU19SRVNFVAkJCQkJMHgxMAorI2RlZmluZQlJUFJfSEFSRFdBUkVfUkVTRVQJCQkJ MHg4MAogI2RlZmluZSBJUFJfSURfSE9TVF9SUl9RCQkJCTB4QzQKICNkZWZpbmUgSVBSX1FV RVJZX0lPQV9DT05GSUcJCQkJMHhDNQogI2RlZmluZSBJUFJfQ0FOQ0VMX0FMTF9SRVFVRVNU UwkJCTB4Q0UKQEAgLTI5NCw3ICsyOTYsMTMgQEAgc3RydWN0IGlwcl9zdGRfaW5xX2RhdGEg ewogfV9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAogc3RydWN0IGlwcl9jb25maWdfdGFi bGVfZW50cnkgewotCXU4IHNlcnZpY2VfbGV2ZWw7CisJdTggcHJvdG87CisjZGVmaW5lIElQ Ul9QUk9UT19TUEkJCQkweDAwCisjZGVmaW5lIElQUl9QUk9UT19TQVRBCQkJMHgwMgorI2Rl ZmluZSBJUFJfUFJPVE9fU0FUQV9BVEFQSQkJMHgwMworI2RlZmluZSBJUFJfUFJPVE9fU0FT CQkJMHgwNAorI2RlZmluZSBJUFJfUFJPVE9fU0FTX1NUUAkJMHgwNgorI2RlZmluZSBJUFJf UFJPVE9fU0FTX1NUUF9BVEFQSQkweDA3CiAJdTggYXJyYXlfaWQ7CiAJdTggZmxhZ3M7CiAj ZGVmaW5lIElQUl9JU19JT0FfUkVTT1VSQ0UJMHg4MApAQCAtMzA2LDYgKzMxNCw3IEBAIHN0 cnVjdCBpcHJfY29uZmlnX3RhYmxlX2VudHJ5IHsKICNkZWZpbmUgSVBSX1NVQlRZUEVfQUZf REFTRAkJCTAKICNkZWZpbmUgSVBSX1NVQlRZUEVfR0VORVJJQ19TQ1NJCTEKICNkZWZpbmUg SVBSX1NVQlRZUEVfVk9MVU1FX1NFVAkJMgorI2RlZmluZSBJUFJfU1VCVFlQRV9HRU5FUklD X0FUQQk0CiAKICNkZWZpbmUgSVBSX1FVRVVFSU5HX01PREVMKHJlcykJKCgoKHJlcyktPmNm Z3RlLmZsYWdzKSAmIDB4NzApID4+IDQpCiAjZGVmaW5lIElQUl9RVUVVRV9GUk9aRU5fTU9E RUwJMApAQCAtMzcyLDYgKzM4MSwzNyBAQCBzdHJ1Y3QgaXByX2NtZF9wa3QgewogCV9fYmUx NiB0aW1lb3V0OwogfV9fYXR0cmlidXRlX18gKChwYWNrZWQsIGFsaWduZWQoNCkpKTsKIAor c3RydWN0IGlwcl9pb2FyY2JfYXRhX3JlZ3MgeworCXU4IGZsYWdzOworI2RlZmluZSBJUFJf QVRBX0ZMQUdfUEFDS0VUX0NNRAkJCTB4ODAKKyNkZWZpbmUgSVBSX0FUQV9GTEFHX1hGRVJf VFlQRV9ETUEJCQkweDQwCisjZGVmaW5lIElQUl9BVEFfRkxBR19TVEFUVVNfT05fR09PRF9D T01QTEVUSU9OCTB4MjAKKwl1OCByZXNlcnZlZFszXTsKKworCV9fYmUxNiBkYXRhOworCXU4 IGZlYXR1cmU7CisJdTggbnNlY3Q7CisJdTggbGJhbDsKKwl1OCBsYmFtOworCXU4IGxiYWg7 CisJdTggZGV2aWNlOworCXU4IGNvbW1hbmQ7CisJdTggcmVzZXJ2ZWQyWzNdOworCXU4IGhv Yl9mZWF0dXJlOworCXU4IGhvYl9uc2VjdDsKKwl1OCBob2JfbGJhbDsKKwl1OCBob2JfbGJh bTsKKwl1OCBob2JfbGJhaDsKKwl1OCBjdGw7Cit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwg YWxpZ25lZCg0KSkpOworCitzdHJ1Y3QgaXByX2lvYXJjYl9hZGRfZGF0YSB7CisJdW5pb24g eworCQlzdHJ1Y3QgaXByX2lvYXJjYl9hdGFfcmVncyByZWdzOworCQlfX2JlMzIgYWRkX2Nt ZF9wYXJtc1sxMF07CisJfXU7Cit9X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCg0 KSkpOworCiAvKiBJT0EgUmVxdWVzdCBDb250cm9sIEJsb2NrICAgIDEyOCBieXRlcyAgKi8K IHN0cnVjdCBpcHJfaW9hcmNiIHsKIAlfX2JlMzIgaW9hcmNiX2hvc3RfcGNpX2FkZHI7CkBA IC0zOTYsNyArNDM2LDcgQEAgc3RydWN0IGlwcl9pb2FyY2IgewogCXN0cnVjdCBpcHJfY21k X3BrdCBjbWRfcGt0OwogCiAJX19iZTMyIGFkZF9jbWRfcGFybXNfbGVuOwotCV9fYmUzMiBh ZGRfY21kX3Bhcm1zWzEwXTsKKwlzdHJ1Y3QgaXByX2lvYXJjYl9hZGRfZGF0YSBhZGRfZGF0 YTs7CiB9X19hdHRyaWJ1dGVfXygocGFja2VkLCBhbGlnbmVkICg0KSkpOwogCiBzdHJ1Y3Qg aXByX2lvYWRsX2Rlc2MgewpAQCAtNDMyLDYgKzQ3MiwyMSBAQCBzdHJ1Y3QgaXByX2lvYXNh X2dwZGQgewogCV9fYmUzMiBpb2FfZGF0YVsyXTsKIH1fX2F0dHJpYnV0ZV9fKChwYWNrZWQs IGFsaWduZWQgKDQpKSk7CiAKK3N0cnVjdCBpcHJfaW9hc2FfZ2F0YSB7CisJdTggZXJyb3I7 CisJdTggbnNlY3Q7CQkvKiBJbnRlcnJ1cHQgcmVhc29uICovCisJdTggbGJhbDsKKwl1OCBs YmFtOworCXU4IGxiYWg7CisJdTggZGV2aWNlOworCXU4IHN0YXR1czsKKwl1OCBhbHRfc3Rh dHVzOwkvKiBBVEEgQ1RMICovCisJdTggaG9iX25zZWN0OworCXU4IGhvYl9sYmFsOworCXU4 IGhvYl9sYmFtOworCXU4IGhvYl9sYmFoOworfV9fYXR0cmlidXRlX18oKHBhY2tlZCwgYWxp Z25lZCAoNCkpKTsKKwogc3RydWN0IGlwcl9hdXRvX3NlbnNlIHsKIAlfX2JlMTYgYXV0b19z ZW5zZV9sZW47CiAJX19iZTE2IGlvYV9kYXRhX2xlbjsKQEAgLTQ3Myw2ICs1MjgsNyBAQCBz dHJ1Y3QgaXByX2lvYXNhIHsKIAkJc3RydWN0IGlwcl9pb2FzYV92c2V0IHZzZXQ7CiAJCXN0 cnVjdCBpcHJfaW9hc2FfYWZfZGFzZCBkYXNkOwogCQlzdHJ1Y3QgaXByX2lvYXNhX2dwZGQg Z3BkZDsKKwkJc3RydWN0IGlwcl9pb2FzYV9nYXRhIGdhdGE7CiAJfSB1OwogCiAJc3RydWN0 IGlwcl9hdXRvX3NlbnNlIGF1dG9fc2Vuc2U7CkBAIC03ODksNiArODQ1LDEzIEBAIHN0cnVj dCBpcHJfYnVzX2F0dHJpYnV0ZXMgewogCXUzMiBtYXhfeGZlcl9yYXRlOwogfTsKIAorc3Ry dWN0IGlwcl9zYXRhX3BvcnQgeworCXN0cnVjdCBhdGFfcG9ydCAqYXA7CisJc3RydWN0IGlw cl9yZXNvdXJjZV9lbnRyeSAqcmVzOworCXN0cnVjdCBpcHJfaW9hX2NmZyAqaW9hX2NmZzsK KwlzdHJ1Y3QgaXByX2lvYXNhX2dhdGEgaW9hc2E7Cit9OworCiBzdHJ1Y3QgaXByX3Jlc291 cmNlX2VudHJ5IHsKIAlzdHJ1Y3QgaXByX2NvbmZpZ190YWJsZV9lbnRyeSBjZmd0ZTsKIAl1 OCBuZWVkc19zeW5jX2NvbXBsZXRlOjE7CkBAIC03OTgsNiArODYxLDcgQEAgc3RydWN0IGlw cl9yZXNvdXJjZV9lbnRyeSB7CiAJdTggcmVzZXR0aW5nX2RldmljZToxOwogCiAJc3RydWN0 IHNjc2lfZGV2aWNlICpzZGV2OworCXN0cnVjdCBpcHJfc2F0YV9wb3J0ICpzYXRhX3BvcnQ7 CiAJc3RydWN0IGxpc3RfaGVhZCBxdWV1ZTsKIH07CiAKQEAgLTEwMjUsNiArMTA4OSw3IEBA IHN0cnVjdCBpcHJfY21uZCB7CiAJc3RydWN0IGlwcl9pb2FkbF9kZXNjIGlvYWRsW0lQUl9O VU1fSU9BRExfRU5UUklFU107CiAJc3RydWN0IGxpc3RfaGVhZCBxdWV1ZTsKIAlzdHJ1Y3Qg c2NzaV9jbW5kICpzY3NpX2NtZDsKKwlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOwogCXN0 cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247CiAJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7 CiAJdm9pZCAoKmRvbmUpIChzdHJ1Y3QgaXByX2NtbmQgKik7CkBAIC0xMzAyLDYgKzEzNjcs MjIgQEAgc3RhdGljIGlubGluZSBpbnQgaXByX2lzX2dzY3NpKHN0cnVjdCBpcAogfQogCiAv KioKKyAqIGlwcl9pc19nYXRhIC0gRGV0ZXJtaW5lIGlmIGEgcmVzb3VyY2UgaXMgYSBnZW5l cmljIEFUQSByZXNvdXJjZQorICogQHJlczoJcmVzb3VyY2UgZW50cnkgc3RydWN0CisgKgor ICogUmV0dXJuIHZhbHVlOgorICogCTEgaWYgR0FUQSAvIDAgaWYgbm90IEdBVEEKKyAqKi8K K3N0YXRpYyBpbmxpbmUgaW50IGlwcl9pc19nYXRhKHN0cnVjdCBpcHJfcmVzb3VyY2VfZW50 cnkgKnJlcykKK3sKKwlpZiAoIWlwcl9pc19pb2FfcmVzb3VyY2UocmVzKSAmJgorCSAgICBJ UFJfUkVTX1NVQlRZUEUocmVzKSA9PSBJUFJfU1VCVFlQRV9HRU5FUklDX0FUQSkKKwkJcmV0 dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKworLyoqCiAgKiBpcHJfaXNfbmFjYV9t b2RlbCAtIERldGVybWluZSBpZiBhIHJlc291cmNlIGlzIHVzaW5nIE5BQ0EgcXVldWVpbmcg bW9kZWwKICAqIEByZXM6CXJlc291cmNlIGVudHJ5IHN0cnVjdAogICoKZGlmZiAtcHVOIGRy aXZlcnMvc2NzaS9pcHIuY35pcHJfc2F0YV93aXRoX2xpYmF0YV9jaGFuZ2VzIGRyaXZlcnMv c2NzaS9pcHIuYwotLS0gbGludXgtMi42L2RyaXZlcnMvc2NzaS9pcHIuY35pcHJfc2F0YV93 aXRoX2xpYmF0YV9jaGFuZ2VzCTIwMDUtMTAtMjUgMDk6MTU6NDkuMDAwMDAwMDAwIC0wNTAw CisrKyBsaW51eC0yLjYtYmpraW5nMS9kcml2ZXJzL3Njc2kvaXByLmMJMjAwNS0xMC0yNSAw OToxNTo0OS4wMDAwMDAwMDAgLTA1MDAKQEAgLTcxLDYgKzcxLDggQEAKICNpbmNsdWRlIDxs aW51eC9maXJtd2FyZS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUg PGxpbnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSAic2NzaV90eXBlZGVmcy5oIgorI2lu Y2x1ZGUgPGxpbnV4L2xpYmF0YS5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUg PGFzbS9pcnEuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CkBAIC04MjEsNiArODIz LDcgQEAgc3RhdGljIHZvaWQgaXByX2luaXRfcmVzX2VudHJ5KHN0cnVjdCBpcAogCXJlcy0+ ZGVsX2Zyb21fbWwgPSAwOwogCXJlcy0+cmVzZXR0aW5nX2RldmljZSA9IDA7CiAJcmVzLT5z ZGV2ID0gTlVMTDsKKwlyZXMtPnNhdGFfcG9ydCA9IE5VTEw7CiB9CiAKIC8qKgpAQCAtMzA0 Myw2ICszMDQ2LDE3IEBAIHN0YXRpYyBpbnQgaXByX2ZyZWVfZHVtcChzdHJ1Y3QgaXByX2lv YV8KICAqKi8KIHN0YXRpYyBpbnQgaXByX2NoYW5nZV9xdWV1ZV9kZXB0aChzdHJ1Y3Qgc2Nz aV9kZXZpY2UgKnNkZXYsIGludCBxZGVwdGgpCiB7CisJc3RydWN0IGlwcl9pb2FfY2ZnICpp b2FfY2ZnID0gKHN0cnVjdCBpcHJfaW9hX2NmZyAqKXNkZXYtPmhvc3QtPmhvc3RkYXRhOwor CXN0cnVjdCBpcHJfcmVzb3VyY2VfZW50cnkgKnJlczsKKwl1bnNpZ25lZCBsb25nIGxvY2tf ZmxhZ3MgPSAwOworCisJc3Bpbl9sb2NrX2lycXNhdmUoaW9hX2NmZy0+aG9zdC0+aG9zdF9s b2NrLCBsb2NrX2ZsYWdzKTsKKwlyZXMgPSAoc3RydWN0IGlwcl9yZXNvdXJjZV9lbnRyeSAq KXNkZXYtPmhvc3RkYXRhOworCisJaWYgKHJlcyAmJiBpcHJfaXNfZ2F0YShyZXMpICYmIHFk ZXB0aCA+IElQUl9NQVhfQ01EX1BFUl9BVEFfTFVOKQorCQlxZGVwdGggPSBJUFJfTUFYX0NN RF9QRVJfQVRBX0xVTjsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKGlvYV9jZmctPmhvc3Qt Pmhvc3RfbG9jaywgbG9ja19mbGFncyk7CisKIAlzY3NpX2FkanVzdF9xdWV1ZV9kZXB0aChz ZGV2LCBzY3NpX2dldF90YWdfdHlwZShzZGV2KSwgcWRlcHRoKTsKIAlyZXR1cm4gc2Rldi0+ cXVldWVfZGVwdGg7CiB9CkBAIC0zMTY5LDYgKzMxODMsOCBAQCBzdGF0aWMgdm9pZCBpcHJf c2xhdmVfZGVzdHJveShzdHJ1Y3Qgc2NzCiAJc3RydWN0IGlwcl9yZXNvdXJjZV9lbnRyeSAq cmVzOwogCXN0cnVjdCBpcHJfaW9hX2NmZyAqaW9hX2NmZzsKIAl1bnNpZ25lZCBsb25nIGxv Y2tfZmxhZ3MgPSAwOworCXN0cnVjdCBpcHJfc2F0YV9wb3J0ICpzYXRhX3BvcnQgPSBOVUxM OworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBOVUxMOwogCiAJaW9hX2NmZyA9IChzdHJ1Y3Qg aXByX2lvYV9jZmcgKikgc2Rldi0+aG9zdC0+aG9zdGRhdGE7CiAKQEAgLTMxNzcsOCArMzE5 MywxNCBAQCBzdGF0aWMgdm9pZCBpcHJfc2xhdmVfZGVzdHJveShzdHJ1Y3Qgc2NzCiAJaWYg KHJlcykgewogCQlzZGV2LT5ob3N0ZGF0YSA9IE5VTEw7CiAJCXJlcy0+c2RldiA9IE5VTEw7 CisJCXNhdGFfcG9ydCA9IHJlcy0+c2F0YV9wb3J0OworCQlyZXMtPnNhdGFfcG9ydCA9IE5V TEw7CisJCWlmIChzYXRhX3BvcnQpCisJCQlhcCA9IHNhdGFfcG9ydC0+YXA7CiAJfQogCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoaW9hX2NmZy0+aG9zdC0+aG9zdF9sb2NrLCBsb2NrX2Zs YWdzKTsKKwlrZnJlZShzYXRhX3BvcnQpOworCWF0YV9zYXNfcG9ydF9kZXN0cm95KGFwKTsK IH0KIAogLyoqCkBAIC0zMjExLDEyICszMjMzLDkyIEBAIHN0YXRpYyBpbnQgaXByX3NsYXZl X2NvbmZpZ3VyZShzdHJ1Y3Qgc2MKIAkJfQogCQlpZiAoSVBSX0lTX0RBU0RfREVWSUNFKHJl cy0+Y2ZndGUuc3RkX2lucV9kYXRhKSkKIAkJCXNkZXYtPmFsbG93X3Jlc3RhcnQgPSAxOwot CQlzY3NpX2FkanVzdF9xdWV1ZV9kZXB0aChzZGV2LCAwLCBzZGV2LT5ob3N0LT5jbWRfcGVy X2x1bik7CisJCWlmIChpcHJfaXNfZ2F0YShyZXMpKSB7CisJCQlzY3NpX2FkanVzdF9xdWV1 ZV9kZXB0aChzZGV2LCAwLCBJUFJfTUFYX0NNRF9QRVJfQVRBX0xVTik7CisJCQlhdGFfc2Fz X3NsYXZlX2NvbmZpZ3VyZShzZGV2LCByZXMtPnNhdGFfcG9ydC0+YXApOworCQl9IGVsc2Ug eworCQkJc2NzaV9hZGp1c3RfcXVldWVfZGVwdGgoc2RldiwgMCwgc2Rldi0+aG9zdC0+Y21k X3Blcl9sdW4pOworCQl9CiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoaW9hX2NmZy0+ aG9zdC0+aG9zdF9sb2NrLCBsb2NrX2ZsYWdzKTsKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGlj IHN0cnVjdCBhdGFfcG9ydF9pbmZvIHNhdGFfcG9ydF9pbmZvOworCisvKioKKyAqIGlwcl9h dGFfc2xhdmVfYWxsb2MgLSBQcmVwYXJlIGZvciBjb21tYW5kcyB0byBhIFNBVEEgZGV2aWNl CisgKiBAc2RldjoJc2NzaSBkZXZpY2Ugc3RydWN0CisgKgorICogVGhpcyBmdW5jdGlvbiBh bGxvY2F0ZXMgYW4gQVRBIHBvcnQgYW5kIGluaXRpYWxpemVzIHRoZSBTQVRBCisgKiBkZXZp Y2Ugc28gdGhhdCBmdXR1cmUgY29tbWFuZHMgc2VudCB0aHJvdWdoIHF1ZXVlY29tbWFuZCB3 aWxsCisgKiB3b3JrLgorICoKKyAqIFJldHVybiB2YWx1ZToKKyAqIAkwIG9uIHN1Y2Nlc3MK KyAqKi8KK3N0YXRpYyBpbnQgaXByX2F0YV9zbGF2ZV9hbGxvYyhzdHJ1Y3Qgc2NzaV9kZXZp Y2UgKnNkZXYpCit7CisJc3RydWN0IGlwcl9pb2FfY2ZnICppb2FfY2ZnID0gKHN0cnVjdCBp cHJfaW9hX2NmZyAqKSBzZGV2LT5ob3N0LT5ob3N0ZGF0YTsKKwlzdHJ1Y3QgYXRhX3BvcnQg KmFwOworCXN0cnVjdCBpcHJfc2F0YV9wb3J0ICpzYXRhX3BvcnQ7CisJc3RydWN0IGlwcl9y ZXNvdXJjZV9lbnRyeSAqcmVzOworCXVuc2lnbmVkIGxvbmcgbG9ja19mbGFnczsKKwlpbnQg cmMgPSAtRU5YSU87CisKKwlzYXRhX3BvcnQgPSBremFsbG9jKHNpemVvZigqc2F0YV9wb3J0 KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzYXRhX3BvcnQpIHsKKwkJaXByX3NsYXZlX2Rlc3Ry b3koc2Rldik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWFwID0gYXRhX3Nhc19wb3J0 X2FsbG9jKGlvYV9jZmctPnBkZXYsICZzYXRhX3BvcnRfaW5mbyk7CisJaWYgKCFhcCkgewor CQlrZnJlZShzYXRhX3BvcnQpOworCQlpcHJfc2xhdmVfZGVzdHJveShzZGV2KTsKKwkJcmV0 dXJuIC1FTk9NRU07CisJfQorCisJc3Bpbl9sb2NrX2lycXNhdmUoaW9hX2NmZy0+aG9zdC0+ aG9zdF9sb2NrLCBsb2NrX2ZsYWdzKTsKKwlyZXMgPSBzZGV2LT5ob3N0ZGF0YTsKKwlpZiAo cmVzICYmIGlwcl9pc19nYXRhKHJlcykpIHsKKwkJc2F0YV9wb3J0LT5hcCA9IGFwOworCQlz YXRhX3BvcnQtPmlvYV9jZmcgPSBpb2FfY2ZnOworCQlzYXRhX3BvcnQtPnJlcyA9IHJlczsK KwkJYXAtPnByaXZhdGVfZGF0YSA9IHNhdGFfcG9ydDsKKwkJcmVzLT5zYXRhX3BvcnQgPSBz YXRhX3BvcnQ7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoaW9hX2NmZy0+aG9zdC0+aG9z dF9sb2NrLCBsb2NrX2ZsYWdzKTsKKwkJcmMgPSBhdGFfc2FzX3BvcnRfaW5pdChhcCk7CisJ fSBlbHNlCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoaW9hX2NmZy0+aG9zdC0+aG9zdF9s b2NrLCBsb2NrX2ZsYWdzKTsKKworCWlmIChyYykKKwkJaXByX3NsYXZlX2Rlc3Ryb3koc2Rl dik7CisJcmV0dXJuIHJjOworfQorCisvKioKKyAqIGlwcl9maW5kX3NkZXYgLSBGaW5kIGRl dmljZSBiYXNlZCBvbiBidXMvdGFyZ2V0L2x1bi4KKyAqIEBzZGV2OglzY3NpIGRldmljZSBz dHJ1Y3QKKyAqCisgKiBSZXR1cm4gdmFsdWU6CisgKiAJcmVzb3VyY2UgZW50cnkgcG9pbnRl ciBpZiBmb3VuZCAvIE5VTEwgaWYgbm90IGZvdW5kCisgKiovCitzdGF0aWMgc3RydWN0IGlw cl9yZXNvdXJjZV9lbnRyeSAqaXByX2ZpbmRfc2RldihzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNk ZXYpCit7CisJc3RydWN0IGlwcl9pb2FfY2ZnICppb2FfY2ZnID0gKHN0cnVjdCBpcHJfaW9h X2NmZyAqKSBzZGV2LT5ob3N0LT5ob3N0ZGF0YTsKKwlzdHJ1Y3QgaXByX3Jlc291cmNlX2Vu dHJ5ICpyZXM7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJmlvYV9jZmctPnVzZWRf cmVzX3EsIHF1ZXVlKSB7CisJCWlmICgocmVzLT5jZmd0ZS5yZXNfYWRkci5idXMgPT0gc2Rl di0+Y2hhbm5lbCkgJiYKKwkJICAgIChyZXMtPmNmZ3RlLnJlc19hZGRyLnRhcmdldCA9PSBz ZGV2LT5pZCkgJiYKKwkJICAgIChyZXMtPmNmZ3RlLnJlc19hZGRyLmx1biA9PSBzZGV2LT5s dW4pKQorCQkJcmV0dXJuIHJlczsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKwogLyoqCiAg KiBpcHJfc2xhdmVfYWxsb2MgLSBQcmVwYXJlIGZvciBjb21tYW5kcyB0byBhIGRldmljZS4K ICAqIEBzZGV2OglzY3NpIGRldmljZSBzdHJ1Y3QKQEAgLTMyNDAsMTggKzMzNDIsMTggQEAg c3RhdGljIGludCBpcHJfc2xhdmVfYWxsb2Moc3RydWN0IHNjc2lfZAogCiAJc3Bpbl9sb2Nr X2lycXNhdmUoaW9hX2NmZy0+aG9zdC0+aG9zdF9sb2NrLCBsb2NrX2ZsYWdzKTsKIAotCWxp c3RfZm9yX2VhY2hfZW50cnkocmVzLCAmaW9hX2NmZy0+dXNlZF9yZXNfcSwgcXVldWUpIHsK LQkJaWYgKChyZXMtPmNmZ3RlLnJlc19hZGRyLmJ1cyA9PSBzZGV2LT5jaGFubmVsKSAmJgot CQkgICAgKHJlcy0+Y2ZndGUucmVzX2FkZHIudGFyZ2V0ID09IHNkZXYtPmlkKSAmJgotCQkg ICAgKHJlcy0+Y2ZndGUucmVzX2FkZHIubHVuID09IHNkZXYtPmx1bikpIHsKLQkJCXJlcy0+ c2RldiA9IHNkZXY7Ci0JCQlyZXMtPmFkZF90b19tbCA9IDA7Ci0JCQlyZXMtPmluX2VycCA9 IDA7Ci0JCQlzZGV2LT5ob3N0ZGF0YSA9IHJlczsKLQkJCWlmICghaXByX2lzX25hY2FfbW9k ZWwocmVzKSkKLQkJCQlyZXMtPm5lZWRzX3N5bmNfY29tcGxldGUgPSAxOwotCQkJcmMgPSAw OwotCQkJYnJlYWs7CisJcmVzID0gaXByX2ZpbmRfc2RldihzZGV2KTsKKwlpZiAocmVzKSB7 CisJCXJlcy0+c2RldiA9IHNkZXY7CisJCXJlcy0+YWRkX3RvX21sID0gMDsKKwkJcmVzLT5p bl9lcnAgPSAwOworCQlzZGV2LT5ob3N0ZGF0YSA9IHJlczsKKwkJaWYgKCFpcHJfaXNfbmFj YV9tb2RlbChyZXMpKQorCQkJcmVzLT5uZWVkc19zeW5jX2NvbXBsZXRlID0gMTsKKwkJcmMg PSAwOworCQlpZiAoaXByX2lzX2dhdGEocmVzKSkgeworCQkJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZShpb2FfY2ZnLT5ob3N0LT5ob3N0X2xvY2ssIGxvY2tfZmxhZ3MpOworCQkJcmV0dXJu IGlwcl9hdGFfc2xhdmVfYWxsb2Moc2Rldik7CiAJCX0KIAl9CiAKQEAgLTMzNTAsNiArMzQ1 Miw3IEBAIHN0YXRpYyBpbnQgX19pcHJfZWhfZGV2X3Jlc2V0KHN0cnVjdCBzY3MKIAljbWRf cGt0LT5yZXF1ZXN0X3R5cGUgPSBJUFJfUlFUWVBFX0lPQUNNRDsKIAljbWRfcGt0LT5jZGJb MF0gPSBJUFJfUkVTRVRfREVWSUNFOwogCisJLyogeHh4IFNBVEEgLSBpc3N1ZSBoYXJkIHJl c2V0IGlmIHNvZnQgcmVzZXQgZmFpbHM/ICovCiAJaXByX3NkZXZfZXJyKHNjc2lfY21kLT5k ZXZpY2UsICJSZXNldHRpbmcgZGV2aWNlXG4iKTsKIAlpcHJfc2VuZF9ibG9ja2luZ19jbWQo aXByX2NtZCwgaXByX3RpbWVvdXQsIElQUl9ERVZJQ0VfUkVTRVRfVElNRU9VVCk7CiAKQEAg LTM0MjYsNiArMzUyOSw3IEBAIHN0YXRpYyB2b2lkIGlwcl9hYm9ydF90aW1lb3V0KHN0cnVj dCBpcHIKIAlzdHJ1Y3QgaXByX2NtbmQgKnJlc2V0X2NtZDsKIAlzdHJ1Y3QgaXByX2lvYV9j ZmcgKmlvYV9jZmcgPSBpcHJfY21kLT5pb2FfY2ZnOwogCXN0cnVjdCBpcHJfY21kX3BrdCAq Y21kX3BrdDsKKwlzdHJ1Y3QgaXByX3Jlc291cmNlX2VudHJ5ICpyZXMgPSBpcHJfY21kLT51 LnNkZXYtPmhvc3RkYXRhOwogCXVuc2lnbmVkIGxvbmcgbG9ja19mbGFncyA9IDA7CiAKIAlF TlRFUjsKQEAgLTM0NDMsNyArMzU0Nyw4IEBAIHN0YXRpYyB2b2lkIGlwcl9hYm9ydF90aW1l b3V0KHN0cnVjdCBpcHIKIAljbWRfcGt0ID0gJnJlc2V0X2NtZC0+aW9hcmNiLmNtZF9wa3Q7 CiAJY21kX3BrdC0+cmVxdWVzdF90eXBlID0gSVBSX1JRVFlQRV9JT0FDTUQ7CiAJY21kX3Br dC0+Y2RiWzBdID0gSVBSX1JFU0VUX0RFVklDRTsKLQljbWRfcGt0LT5jZGJbMl0gPSBJUFJf UkVTRVRfVFlQRV9TRUxFQ1QgfCBJUFJfQlVTX1JFU0VUOworCWlmICghcmVzIHx8ICFpcHJf aXNfZ2F0YShyZXMpKQorCQljbWRfcGt0LT5jZGJbMl0gPSBJUFJfUkVTRVRfVFlQRV9TRUxF Q1QgfCBJUFJfQlVTX1JFU0VUOwogCiAJaXByX2RvX3JlcShyZXNldF9jbWQsIGlwcl9idXNf cmVzZXRfZG9uZSwgaXByX3RpbWVvdXQsIElQUl9ERVZJQ0VfUkVTRVRfVElNRU9VVCk7CiAJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShpb2FfY2ZnLT5ob3N0LT5ob3N0X2xvY2ssIGxvY2tf ZmxhZ3MpOwpAQCAtMzQ3Niw5ICszNTgxLDcgQEAgc3RhdGljIGludCBpcHJfY2FuY2VsX29w KHN0cnVjdCBzY3NpX2NtbgogCSAqIFRoaXMgd2lsbCBmb3JjZSB0aGUgbWlkLWxheWVyIHRv IGNhbGwgaXByX2VoX2hvc3RfcmVzZXQsCiAJICogd2hpY2ggd2lsbCB0aGVuIGdvIHRvIHNs ZWVwIGFuZCB3YWl0IGZvciB0aGUgcmVzZXQgdG8gY29tcGxldGUKIAkgKi8KLQlpZiAoaW9h X2NmZy0+aW5fcmVzZXRfcmVsb2FkIHx8IGlvYV9jZmctPmlvYV9pc19kZWFkKQotCQlyZXR1 cm4gRkFJTEVEOwotCWlmICghcmVzIHx8ICghaXByX2lzX2dzY3NpKHJlcykgJiYgIWlwcl9p c192c2V0X2RldmljZShyZXMpKSkKKwlpZiAoaW9hX2NmZy0+aW5fcmVzZXRfcmVsb2FkIHx8 IGlvYV9jZmctPmlvYV9pc19kZWFkIHx8ICFyZXMpCiAJCXJldHVybiBGQUlMRUQ7CiAKIAls aXN0X2Zvcl9lYWNoX2VudHJ5KGlwcl9jbWQsICZpb2FfY2ZnLT5wZW5kaW5nX3EsIHF1ZXVl KSB7CkBAIC0zNjc2LDYgKzM3NzksNDYgQEAgc3RhdGljIGlycXJldHVybl90IGlwcl9pc3Io aW50IGlycSwgdm9pZAogfQogCiAvKioKKyAqIGlwcl9idWlsZF9tYXBwZWRfaW9hZGwgLSBC dWlsZCBhIHNjYXR0ZXIvZ2F0aGVyIGxpc3QKKyAqIEBpcHJfY21kOglpcHIgY29tbWFuZCBz dHJ1Y3QKKyAqIEBzZ2xpc3Q6CQlzY2F0dGVyL2dhdGhlciBsaXN0CisgKiBAbGVuOgkJdG90 YWwgdHJhbnNmZXIgbGVuZ3RoCisgKiBAZG1hX2RpcjoJZGlyZWN0aW9uIG9mIHRyYW5zZmVy CisgKgorICoqLworc3RhdGljIHZvaWQgaXByX2J1aWxkX21hcHBlZF9pb2FkbChzdHJ1Y3Qg aXByX2NtbmQgKmlwcl9jbWQsCisJCQkJICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2xpc3Qs IGludCBsZW4sIGludCBkbWFfZGlyKQoreworCWludCBpOworCXUzMiBpb2FkbF9mbGFncyA9 IDA7CisJc3RydWN0IGlwcl9pb2FyY2IgKmlvYXJjYiA9ICZpcHJfY21kLT5pb2FyY2I7CisJ c3RydWN0IGlwcl9pb2FkbF9kZXNjICppb2FkbCA9IGlwcl9jbWQtPmlvYWRsOworCisJaWYg KGRtYV9kaXIgPT0gRE1BX1RPX0RFVklDRSkgeworCQlpb2FkbF9mbGFncyA9IElQUl9JT0FE TF9GTEFHU19XUklURTsKKwkJaW9hcmNiLT5jbWRfcGt0LmZsYWdzX2hpIHw9IElQUl9GTEFH U19ISV9XUklURV9OT1RfUkVBRDsKKwkJaW9hcmNiLT53cml0ZV9kYXRhX3RyYW5zZmVyX2xl bmd0aCA9IGNwdV90b19iZTMyKGxlbik7CisJCWlvYXJjYi0+d3JpdGVfaW9hZGxfbGVuID0K KwkJCWNwdV90b19iZTMyKHNpemVvZihzdHJ1Y3QgaXByX2lvYWRsX2Rlc2MpICogaXByX2Nt ZC0+ZG1hX3VzZV9zZyk7CisJfSBlbHNlIGlmIChkbWFfZGlyID09IERNQV9GUk9NX0RFVklD RSkgeworCQlpb2FkbF9mbGFncyA9IElQUl9JT0FETF9GTEFHU19SRUFEOworCQlpb2FyY2It PnJlYWRfZGF0YV90cmFuc2Zlcl9sZW5ndGggPSBjcHVfdG9fYmUzMihsZW4pOworCQlpb2Fy Y2ItPnJlYWRfaW9hZGxfbGVuID0KKwkJCWNwdV90b19iZTMyKHNpemVvZihzdHJ1Y3QgaXBy X2lvYWRsX2Rlc2MpICogaXByX2NtZC0+ZG1hX3VzZV9zZyk7CisJfQorCisJZm9yIChpID0g MDsgaSA8IGlwcl9jbWQtPmRtYV91c2Vfc2c7IGkrKykgeworCQlpb2FkbFtpXS5mbGFnc19h bmRfZGF0YV9sZW4gPQorCQkJY3B1X3RvX2JlMzIoaW9hZGxfZmxhZ3MgfCBzZ19kbWFfbGVu KCZzZ2xpc3RbaV0pKTsKKwkJaW9hZGxbaV0uYWRkcmVzcyA9CisJCQljcHVfdG9fYmUzMihz Z19kbWFfYWRkcmVzcygmc2dsaXN0W2ldKSk7CisJfQorCisJaW9hZGxbaS0xXS5mbGFnc19h bmRfZGF0YV9sZW4gfD0KKwkJY3B1X3RvX2JlMzIoSVBSX0lPQURMX0ZMQUdTX0xBU1QpOwor fQorCisvKioKICAqIGlwcl9idWlsZF9pb2FkbCAtIEJ1aWxkIGEgc2NhdHRlci9nYXRoZXIg bGlzdCBhbmQgbWFwIHRoZSBidWZmZXIKICAqIEBpb2FfY2ZnOglpb2EgY29uZmlnIHN0cnVj dAogICogQGlwcl9jbWQ6CWlwciBjb21tYW5kIHN0cnVjdApAQCAtMzY4Niw4ICszODI5LDcg QEAgc3RhdGljIGlycXJldHVybl90IGlwcl9pc3IoaW50IGlycSwgdm9pZAogc3RhdGljIGlu dCBpcHJfYnVpbGRfaW9hZGwoc3RydWN0IGlwcl9pb2FfY2ZnICppb2FfY2ZnLAogCQkJICAg c3RydWN0IGlwcl9jbW5kICppcHJfY21kKQogewotCWludCBpOwotCXN0cnVjdCBzY2F0dGVy bGlzdCAqc2dsaXN0OworCWludCByYyA9IDA7CiAJdTMyIGxlbmd0aDsKIAl1MzIgaW9hZGxf ZmxhZ3MgPSAwOwogCXN0cnVjdCBzY3NpX2NtbmQgKnNjc2lfY21kID0gaXByX2NtZC0+c2Nz aV9jbWQ7CkBAIC0zNzA1LDM0ICszODQ3LDEzIEBAIHN0YXRpYyBpbnQgaXByX2J1aWxkX2lv YWRsKHN0cnVjdCBpcHJfaW8KIAkJCQkJCSBzY3NpX2NtZC0+dXNlX3NnLAogCQkJCQkJIHNj c2lfY21kLT5zY19kYXRhX2RpcmVjdGlvbik7CiAKLQkJaWYgKHNjc2lfY21kLT5zY19kYXRh X2RpcmVjdGlvbiA9PSBETUFfVE9fREVWSUNFKSB7Ci0JCQlpb2FkbF9mbGFncyA9IElQUl9J T0FETF9GTEFHU19XUklURTsKLQkJCWlvYXJjYi0+Y21kX3BrdC5mbGFnc19oaSB8PSBJUFJf RkxBR1NfSElfV1JJVEVfTk9UX1JFQUQ7Ci0JCQlpb2FyY2ItPndyaXRlX2RhdGFfdHJhbnNm ZXJfbGVuZ3RoID0gY3B1X3RvX2JlMzIobGVuZ3RoKTsKLQkJCWlvYXJjYi0+d3JpdGVfaW9h ZGxfbGVuID0KLQkJCQljcHVfdG9fYmUzMihzaXplb2Yoc3RydWN0IGlwcl9pb2FkbF9kZXNj KSAqIGlwcl9jbWQtPmRtYV91c2Vfc2cpOwotCQl9IGVsc2UgaWYgKHNjc2lfY21kLT5zY19k YXRhX2RpcmVjdGlvbiA9PSBETUFfRlJPTV9ERVZJQ0UpIHsKLQkJCWlvYWRsX2ZsYWdzID0g SVBSX0lPQURMX0ZMQUdTX1JFQUQ7Ci0JCQlpb2FyY2ItPnJlYWRfZGF0YV90cmFuc2Zlcl9s ZW5ndGggPSBjcHVfdG9fYmUzMihsZW5ndGgpOwotCQkJaW9hcmNiLT5yZWFkX2lvYWRsX2xl biA9Ci0JCQkJY3B1X3RvX2JlMzIoc2l6ZW9mKHN0cnVjdCBpcHJfaW9hZGxfZGVzYykgKiBp cHJfY21kLT5kbWFfdXNlX3NnKTsKLQkJfQotCi0JCXNnbGlzdCA9IHNjc2lfY21kLT5yZXF1 ZXN0X2J1ZmZlcjsKLQotCQlmb3IgKGkgPSAwOyBpIDwgaXByX2NtZC0+ZG1hX3VzZV9zZzsg aSsrKSB7Ci0JCQlpb2FkbFtpXS5mbGFnc19hbmRfZGF0YV9sZW4gPQotCQkJCWNwdV90b19i ZTMyKGlvYWRsX2ZsYWdzIHwgc2dfZG1hX2xlbigmc2dsaXN0W2ldKSk7Ci0JCQlpb2FkbFtp XS5hZGRyZXNzID0KLQkJCQljcHVfdG9fYmUzMihzZ19kbWFfYWRkcmVzcygmc2dsaXN0W2ld KSk7CisJCWlmICh1bmxpa2VseShpcHJfY21kLT5kbWFfdXNlX3NnID09IDApKSB7CisJCQlk ZXZfZXJyKCZpb2FfY2ZnLT5wZGV2LT5kZXYsICJwY2lfbWFwX3NnIGZhaWxlZCFcbiIpOwor CQkJcmV0dXJuIC0xOwogCQl9CiAKLQkJaWYgKGxpa2VseShpcHJfY21kLT5kbWFfdXNlX3Nn KSkgewotCQkJaW9hZGxbaS0xXS5mbGFnc19hbmRfZGF0YV9sZW4gfD0KLQkJCQljcHVfdG9f YmUzMihJUFJfSU9BRExfRkxBR1NfTEFTVCk7Ci0JCQlyZXR1cm4gMDsKLQkJfSBlbHNlCi0J CQlkZXZfZXJyKCZpb2FfY2ZnLT5wZGV2LT5kZXYsICJwY2lfbWFwX3NnIGZhaWxlZCFcbiIp OworCQlpcHJfYnVpbGRfbWFwcGVkX2lvYWRsKGlwcl9jbWQsIHNjc2lfY21kLT5yZXF1ZXN0 X2J1ZmZlciwKKwkJCQkgICAgICAgbGVuZ3RoLCBzY3NpX2NtZC0+c2NfZGF0YV9kaXJlY3Rp b24pOwogCX0gZWxzZSB7CiAJCWlmIChzY3NpX2NtZC0+c2NfZGF0YV9kaXJlY3Rpb24gPT0g RE1BX1RPX0RFVklDRSkgewogCQkJaW9hZGxfZmxhZ3MgPSBJUFJfSU9BRExfRkxBR1NfV1JJ VEU7CkBAIC0zNzU5LDcgKzM4ODAsNyBAQCBzdGF0aWMgaW50IGlwcl9idWlsZF9pb2FkbChz dHJ1Y3QgaXByX2lvCiAJCQlkZXZfZXJyKCZpb2FfY2ZnLT5wZGV2LT5kZXYsICJwY2lfbWFw X3NpbmdsZSBmYWlsZWQhXG4iKTsKIAl9CiAKLQlyZXR1cm4gLTE7CisJcmV0dXJuIHJjOwog fQogCiAvKioKQEAgLTQyMzEsNiArNDM1MiwyOSBAQCBzdGF0aWMgdm9pZCBpcHJfc2NzaV9k b25lKHN0cnVjdCBpcHJfY21uCiB9CiAKIC8qKgorICogaXByX3NhdGFfZG9uZSAtIGRvbmUg ZnVuY3Rpb24gZm9yIFNBVEEgY29tbWFuZHMKKyAqIEBpcHJfY21kOglpcHIgY29tbWFuZCBz dHJ1Y3QKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYnkgdGhlIGludGVycnVw dCBoYW5kbGVyIGZvcgorICogb3BzIGdlbmVyYXRlZCBieSB0aGUgU0NTSSBtaWQtbGF5ZXIg dG8gU0FUQSBkZXZpY2VzCisgKgorICogUmV0dXJuIHZhbHVlOgorICogCW5vbmUKKyAqKi8K K3N0YXRpYyB2b2lkIGlwcl9zYXRhX2RvbmUoc3RydWN0IGlwcl9jbW5kICppcHJfY21kKQor eworCXN0cnVjdCBpcHJfaW9hX2NmZyAqaW9hX2NmZyA9IGlwcl9jbWQtPmlvYV9jZmc7CisJ c3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyA9IGlwcl9jbWQtPnFjOworCXN0cnVjdCBpcHJf c2F0YV9wb3J0ICpzYXRhX3BvcnQgPSBxYy0+YXAtPnByaXZhdGVfZGF0YTsKKwl1OCBzdGF0 dXM7CisKKwltZW1jcHkoJnNhdGFfcG9ydC0+aW9hc2EsICZpcHJfY21kLT5pb2FzYS51Lmdh dGEsIHNpemVvZihzYXRhX3BvcnQtPmlvYXNhKSk7CisJc3RhdHVzID0gYXRhX2Noa19zdGF0 dXMocWMtPmFwKTsKKwlsaXN0X2FkZF90YWlsKCZpcHJfY21kLT5xdWV1ZSwgJmlvYV9jZmct PmZyZWVfcSk7CisJYXRhX3FjX2NvbXBsZXRlKHFjLCBzdGF0dXMpOworfQorCisvKioKICAq IGlwcl9zYXZlX2lvYWZwX21vZGVfc2VsZWN0IC0gU2F2ZSBhZGFwdGVycyBtb2RlIHNlbGVj dCBkYXRhCiAgKiBAaW9hX2NmZzoJaW9hIGNvbmZpZyBzdHJ1Y3QKICAqIEBzY3NpX2NtZDoJ c2NzaSBjb21tYW5kIHN0cnVjdApAQCAtNDMwNCw2ICs0NDQ4LDkgQEAgc3RhdGljIGludCBp cHJfcXVldWVjb21tYW5kKHN0cnVjdCBzY3NpXwogCQlyZXR1cm4gMDsKIAl9CiAKKwlpZiAo aXByX2lzX2dhdGEocmVzKSkKKwkJcmV0dXJuIGF0YV9zYXNfcXVldWVjbWQoc2NzaV9jbWQs IGRvbmUsIHJlcy0+c2F0YV9wb3J0LT5hcCk7CisKIAlpcHJfY21kID0gaXByX2dldF9mcmVl X2lwcl9jbW5kKGlvYV9jZmcpOwogCWlvYXJjYiA9ICZpcHJfY21kLT5pb2FyY2I7CiAJbGlz dF9hZGRfdGFpbCgmaXByX2NtZC0+cXVldWUsICZpb2FfY2ZnLT5wZW5kaW5nX3EpOwpAQCAt NDM5OCw2ICs0NTQ1LDI0NCBAQCBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBk cml2ZXJfCiAJLnByb2NfbmFtZSA9IElQUl9OQU1FCiB9OwogCitzdGF0aWMgdm9pZCBpcHJf YXRhX3FjX3ByZXAoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykgeyB9CitzdGF0aWMgaW50 IGlwcl9hdGFfcG9ydF9zdGFydChzdHJ1Y3QgYXRhX3BvcnQgKmFwKSB7IHJldHVybiAwOyB9 CitzdGF0aWMgdm9pZCBpcHJfYXRhX3BvcnRfc3RvcChzdHJ1Y3QgYXRhX3BvcnQgKmFwKSB7 IH0KK3N0YXRpYyB2b2lkIGlwcl9hdGFfYm1kbWFfc3RvcChzdHJ1Y3QgYXRhX3F1ZXVlZF9j bWQgKnFjKSB7IH0KK3N0YXRpYyB1OCBpcHJfYXRhX2JtZG1hX3N0YXR1cyhzdHJ1Y3QgYXRh X3BvcnQgKmFwKSB7IHJldHVybiAwOyB9CisKKy8qKgorICogX19pcHJfYXRhX3BoeV9yZXNl dCAtIElzc3VlIGEgUEhZIHJlc2V0IHRvIGEgU0FUQSBkZXZpY2UKKyAqIEBhcDoJYXRhIHBv cnQgdG8gcmVzZXQKKyAqCisgKiovCitzdGF0aWMgdm9pZCBfX2lwcl9hdGFfcGh5X3Jlc2V0 KHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJc3RydWN0IGlwcl9jbW5kICppcHJfY21kOwor CXN0cnVjdCBpcHJfY21kX3BrdCAqY21kX3BrdDsKKwlzdHJ1Y3QgaXByX3NhdGFfcG9ydCAq c2F0YV9wb3J0ID0gYXAtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgaXByX2lvYV9jZmcgKmlv YV9jZmcgPSBzYXRhX3BvcnQtPmlvYV9jZmc7CisKKwlpcHJfY21kID0gaXByX2dldF9mcmVl X2lwcl9jbW5kKGlvYV9jZmcpOworCWlwcl9jbWQtPmlvYXJjYi5yZXNfaGFuZGxlID0gc2F0 YV9wb3J0LT5yZXMtPmNmZ3RlLnJlc19oYW5kbGU7CisJY21kX3BrdCA9ICZpcHJfY21kLT5p b2FyY2IuY21kX3BrdDsKKwljbWRfcGt0LT5yZXF1ZXN0X3R5cGUgPSBJUFJfUlFUWVBFX0lP QUNNRDsKKwljbWRfcGt0LT5jZGJbMF0gPSBJUFJfUkVTRVRfREVWSUNFOworCWNtZF9wa3Qt PmNkYlsyXSA9IElQUl9IQVJEV0FSRV9SRVNFVDsKKwlpcHJfc2VuZF9ibG9ja2luZ19jbWQo aXByX2NtZCwgaXByX3RpbWVvdXQsIElQUl9ERVZJQ0VfUkVTRVRfVElNRU9VVCk7CisJbWVt Y3B5KCZzYXRhX3BvcnQtPmlvYXNhLCAmaXByX2NtZC0+aW9hc2EudS5nYXRhLCBzaXplb2Yo c2F0YV9wb3J0LT5pb2FzYSkpOworCWxpc3RfYWRkX3RhaWwoJmlwcl9jbWQtPnF1ZXVlLCAm aW9hX2NmZy0+ZnJlZV9xKTsKK30KKworLyoqCisgKiBpcHJfYXRhX3BoeV9yZXNldCAtIGxp YmF0YSBwaHlfcmVzZXQgaGFuZGxlcgorICogQGFwOglhdGEgcG9ydCB0byByZXNldAorICoK KyAqIFJldHVybiB2YWx1ZToKKyAqIAlub25lCisgKiovCitzdGF0aWMgdm9pZCBpcHJfYXRh X3BoeV9yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisJc3RydWN0IGlwcl9zYXRhX3BvcnQgKnNhdGFfcG9ydCA9IGFwLT5wcml2YXRlX2Rh dGE7CisJc3RydWN0IGlwcl9pb2FfY2ZnICppb2FfY2ZnID0gc2F0YV9wb3J0LT5pb2FfY2Zn OworCisJc3Bpbl9sb2NrX2lycXNhdmUoaW9hX2NmZy0+aG9zdC0+aG9zdF9sb2NrLCBmbGFn cyk7CisJd2hpbGUoIWlvYV9jZmctPmluX3Jlc2V0X3JlbG9hZCkgeworCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKGlvYV9jZmctPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOworCQl3YWl0 X2V2ZW50KGlvYV9jZmctPnJlc2V0X3dhaXRfcSwgIWlvYV9jZmctPmluX3Jlc2V0X3JlbG9h ZCk7CisJCXNwaW5fbG9ja19pcnFzYXZlKGlvYV9jZmctPmhvc3QtPmhvc3RfbG9jaywgZmxh Z3MpOworCX0KKworCWlmICghaW9hX2NmZy0+YWxsb3dfY21kcykgeworCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKGlvYV9jZmctPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOworCQlyZXR1 cm47CisJfQorCisJX19pcHJfYXRhX3BoeV9yZXNldChhcCk7CisKKwlpZiAoc2F0YV9wb3J0 LT5yZXMpIHsKKwkJc3dpdGNoKHNhdGFfcG9ydC0+cmVzLT5jZmd0ZS5wcm90bykgeworCQlj YXNlIElQUl9QUk9UT19TQVRBOgorCQljYXNlIElQUl9QUk9UT19TQVNfU1RQOgorCQkJaWYg KGF0YV9jaGtfc3RhdHVzKGFwKSA9PSAwKQorCQkJCWFwLT5vcHMtPnBvcnRfZGlzYWJsZShh cCk7CisJCQllbHNlCisJCQkJYXAtPmRldmljZVswXS5jbGFzcyA9IEFUQV9ERVZfQVRBOwor CQkJYnJlYWs7CisJCWNhc2UgSVBSX1BST1RPX1NBVEFfQVRBUEk6CisJCWNhc2UgSVBSX1BS T1RPX1NBU19TVFBfQVRBUEk6CisJCQlhcC0+ZGV2aWNlWzBdLmNsYXNzID0gQVRBX0RFVl9B VEFQSTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYXAtPm9wcy0+cG9ydF9kaXNhYmxl KGFwKTsKKwkJCWJyZWFrOworCQl9OworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo aW9hX2NmZy0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7Cit9CisKKy8qKgorICogaXByX2Nv cHlfc2F0YV90ZiAtIENvcHkgYSBTQVRBIHRhc2tmaWxlIHRvIGFuIElPQSBkYXRhIHN0cnVj dHVyZQorICogQHJlZ3M6CWRlc3RpbmF0aW9uCisgKiBAdGY6CXNvdXJjZSBBVEEgdGFza2Zp bGUKKyAqCisgKiBSZXR1cm4gdmFsdWU6CisgKiAJbm9uZQorICoqLworc3RhdGljIHZvaWQg aXByX2NvcHlfc2F0YV90ZihzdHJ1Y3QgaXByX2lvYXJjYl9hdGFfcmVncyAqcmVncywKKwkJ CSAgICAgc3RydWN0IGF0YV90YXNrZmlsZSAqdGYpCit7CisJcmVncy0+ZmVhdHVyZSA9IHRm LT5mZWF0dXJlOworCXJlZ3MtPm5zZWN0ID0gdGYtPm5zZWN0OworCXJlZ3MtPmxiYWwgPSB0 Zi0+bGJhbDsKKwlyZWdzLT5sYmFtID0gdGYtPmxiYW07CisJcmVncy0+bGJhaCA9IHRmLT5s YmFoOworCXJlZ3MtPmRldmljZSA9IHRmLT5kZXZpY2U7CisJcmVncy0+Y29tbWFuZCA9IHRm LT5jb21tYW5kOworCXJlZ3MtPmhvYl9mZWF0dXJlID0gdGYtPmhvYl9mZWF0dXJlOworCXJl Z3MtPmhvYl9uc2VjdCA9IHRmLT5ob2JfbnNlY3Q7CisJcmVncy0+aG9iX2xiYWwgPSB0Zi0+ aG9iX2xiYWw7CisJcmVncy0+aG9iX2xiYW0gPSB0Zi0+aG9iX2xiYW07CisJcmVncy0+aG9i X2xiYWggPSB0Zi0+aG9iX2xiYWg7CisJcmVncy0+Y3RsID0gdGYtPmN0bDsKK30KKworLyoq CisgKiBpcHJfcWNfaXNzdWUgLSBJc3N1ZSBhIFNBVEEgcWMgdG8gYSBkZXZpY2UKKyAqIEBx YzoJcXVldWVkIGNvbW1hbmQKKyAqCisgKiBSZXR1cm4gdmFsdWU6CisgKiAJMCBpZiBzdWNj ZXNzCisgKiovCitzdGF0aWMgaW50IGlwcl9xY19pc3N1ZShzdHJ1Y3QgYXRhX3F1ZXVlZF9j bWQgKnFjKQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7CisJc3RydWN0IGlw cl9zYXRhX3BvcnQgKnNhdGFfcG9ydCA9IGFwLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGlw cl9yZXNvdXJjZV9lbnRyeSAqcmVzID0gc2F0YV9wb3J0LT5yZXM7CisJc3RydWN0IGlwcl9p b2FfY2ZnICppb2FfY2ZnID0gc2F0YV9wb3J0LT5pb2FfY2ZnOworCXN0cnVjdCBpcHJfY21u ZCAqaXByX2NtZDsKKwlzdHJ1Y3QgaXByX2lvYXJjYiAqaW9hcmNiOworCXN0cnVjdCBpcHJf aW9hcmNiX2F0YV9yZWdzICpyZWdzOworCisJaWYgKHVubGlrZWx5KCFpb2FfY2ZnLT5hbGxv d19jbWRzIHx8IGlvYV9jZmctPmlvYV9pc19kZWFkIHx8ICFyZXMpKQorCQlyZXR1cm4gLUVJ TzsKKworCWlwcl9jbWQgPSBpcHJfZ2V0X2ZyZWVfaXByX2NtbmQoaW9hX2NmZyk7CisJaW9h cmNiID0gJmlwcl9jbWQtPmlvYXJjYjsKKwlyZWdzID0gJmlvYXJjYi0+YWRkX2RhdGEudS5y ZWdzOworCisJbWVtc2V0KCZpb2FyY2ItPmFkZF9kYXRhLCAwLCBzaXplb2YoaW9hcmNiLT5h ZGRfZGF0YSkpOworCWlvYXJjYi0+YWRkX2NtZF9wYXJtc19sZW4gPSBjcHVfdG9fYmUzMihz aXplb2YoaW9hcmNiLT5hZGRfZGF0YS51LnJlZ3MpKTsKKworCWxpc3RfYWRkX3RhaWwoJmlw cl9jbWQtPnF1ZXVlLCAmaW9hX2NmZy0+cGVuZGluZ19xKTsKKwlpcHJfY21kLT5xYyA9IHFj OworCWlwcl9jbWQtPmRvbmUgPSBpcHJfc2F0YV9kb25lOworCWlwcl9jbWQtPmlvYXJjYi5y ZXNfaGFuZGxlID0gcmVzLT5jZmd0ZS5yZXNfaGFuZGxlOworCWlvYXJjYi0+Y21kX3BrdC5m bGFnc19oaSB8PSBJUFJfRkxBR1NfSElfTk9fTElOS19ERVNDOworCWlvYXJjYi0+Y21kX3Br dC5mbGFnc19oaSB8PSBJUFJfRkxBR1NfSElfTk9fVUxFTl9DSEs7CisJaXByX2NtZC0+ZG1h X3VzZV9zZyA9IHFjLT5uX2VsZW07CisKKwlpcHJfYnVpbGRfbWFwcGVkX2lvYWRsKGlwcl9j bWQsIHFjLT5zZywgcWMtPm5ieXRlcywgcWMtPmRtYV9kaXIpOworCWlwcl90cmNfaG9vayhp cHJfY21kLCBJUFJfVFJBQ0VfU1RBUlQsIElQUl9HRVRfUEhZU19MT0MocmVzLT5jZmd0ZS5y ZXNfYWRkcikpOworCXJlZ3MtPmZsYWdzIHw9IElQUl9BVEFfRkxBR19TVEFUVVNfT05fR09P RF9DT01QTEVUSU9OOworCWlwcl9jb3B5X3NhdGFfdGYocmVncywgJnFjLT50Zik7CisKKwlz d2l0Y2ggKHFjLT50Zi5wcm90b2NvbCkgeworCWNhc2UgQVRBX1BST1RfTk9EQVRBOgorCWNh c2UgQVRBX1BST1RfUElPOgorCQlicmVhazsKKworCWNhc2UgQVRBX1BST1RfRE1BOgorCQly ZWdzLT5mbGFncyB8PSBJUFJfQVRBX0ZMQUdfWEZFUl9UWVBFX0RNQTsKKwkJYnJlYWs7CisK KwljYXNlIEFUQV9QUk9UX0FUQVBJOgorCWNhc2UgQVRBX1BST1RfQVRBUElfTk9EQVRBOgor CQlyZWdzLT5mbGFncyB8PSBJUFJfQVRBX0ZMQUdfUEFDS0VUX0NNRDsKKwkJYnJlYWs7CisK KwljYXNlIEFUQV9QUk9UX0FUQVBJX0RNQToKKwkJcmVncy0+ZmxhZ3MgfD0gSVBSX0FUQV9G TEFHX1BBQ0tFVF9DTUQ7CisJCXJlZ3MtPmZsYWdzIHw9IElQUl9BVEFfRkxBR19YRkVSX1RZ UEVfRE1BOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCVdBUk5fT04oMSk7CisJCXJldHVy biAtMTsKKwl9CisKKwltYigpOworCXdyaXRlbChiZTMyX3RvX2NwdShpb2FyY2ItPmlvYXJj Yl9ob3N0X3BjaV9hZGRyKSwKKwkgICAgICAgaW9hX2NmZy0+cmVncy5pb2FycmluX3JlZyk7 CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogaXByX2F0YV9jaGVja19zdGF0dXMgLSBSZXR1 cm4gbGFzdCBBVEEgc3RhdHVzCisgKiBAYXA6CUFUQSBwb3J0CisgKgorICogUmV0dXJuIHZh bHVlOgorICogCUFUQSBzdGF0dXMKKyAqKi8KK3N0YXRpYyB1OCBpcHJfYXRhX2NoZWNrX3N0 YXR1cyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXN0cnVjdCBpcHJfc2F0YV9wb3J0ICpz YXRhX3BvcnQgPSBhcC0+cHJpdmF0ZV9kYXRhOworCXJldHVybiBzYXRhX3BvcnQtPmlvYXNh LnN0YXR1czsKK30KKworLyoqCisgKiBpcHJfYXRhX2NoZWNrX2FsdHN0YXR1cyAtIFJldHVy biBsYXN0IEFUQSBhbHRzdGF0dXMKKyAqIEBhcDoJQVRBIHBvcnQKKyAqCisgKiBSZXR1cm4g dmFsdWU6CisgKiAJQWx0IEFUQSBzdGF0dXMKKyAqKi8KK3N0YXRpYyB1OCBpcHJfYXRhX2No ZWNrX2FsdHN0YXR1cyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXN0cnVjdCBpcHJfc2F0 YV9wb3J0ICpzYXRhX3BvcnQgPSBhcC0+cHJpdmF0ZV9kYXRhOworCXJldHVybiBzYXRhX3Bv cnQtPmlvYXNhLmFsdF9zdGF0dXM7Cit9CisKKy8qKgorICogaXByX2F0YV9jaGVja19lcnIg LSBSZXR1cm4gbGFzdCBlcnJvciBzdGF0dXMKKyAqIEBhcDoJQVRBIHBvcnQKKyAqCisgKiBS ZXR1cm4gdmFsdWU6CisgKiAJQVRBIGVycm9yIHN0YXR1cworICoqLworc3RhdGljIHU4IGlw cl9hdGFfY2hlY2tfZXJyKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJc3RydWN0IGlwcl9z YXRhX3BvcnQgKnNhdGFfcG9ydCA9IGFwLT5wcml2YXRlX2RhdGE7CisJcmV0dXJuIHNhdGFf cG9ydC0+aW9hc2EuZXJyb3I7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0 aW9ucyBpcHJfc2F0YV9vcHMgPSB7CisJLnBvcnRfZGlzYWJsZSA9IGF0YV9wb3J0X2Rpc2Fi bGUsCisJLmNoZWNrX3N0YXR1cyA9IGlwcl9hdGFfY2hlY2tfc3RhdHVzLAorCS5jaGVja19h bHRzdGF0dXMgPSBpcHJfYXRhX2NoZWNrX2FsdHN0YXR1cywKKwkuY2hlY2tfZXJyID0gaXBy X2F0YV9jaGVja19lcnIsCisJLmRldl9zZWxlY3QgPSBhdGFfbm9vcF9kZXZfc2VsZWN0LAor CS5waHlfcmVzZXQgPSBpcHJfYXRhX3BoeV9yZXNldCwKKwkucWNfcHJlcCA9IGlwcl9hdGFf cWNfcHJlcCwKKwkucWNfaXNzdWUgPSBpcHJfcWNfaXNzdWUsCisJLnBvcnRfc3RhcnQgPSBp cHJfYXRhX3BvcnRfc3RhcnQsCisJLnBvcnRfc3RvcCA9IGlwcl9hdGFfcG9ydF9zdG9wLAor CS5ibWRtYV9zdG9wID0gaXByX2F0YV9ibWRtYV9zdG9wLAorCS5ibWRtYV9zdGF0dXMgPSBp cHJfYXRhX2JtZG1hX3N0YXR1cywKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfaW5m byBzYXRhX3BvcnRfaW5mbyA9IHsKKwkuc2h0CQk9ICZkcml2ZXJfdGVtcGxhdGUsCisJLmhv c3RfZmxhZ3MJPSBBVEFfRkxBR19TQVRBIHwgQVRBX0ZMQUdfTk9fTEVHQUNZIHwgQVRBX0ZM QUdfU0FUQV9SRVNFVCB8CisJQVRBX0ZMQUdfTU1JTyB8IEFUQV9GTEFHX1BJT19ETUEsIC8q IHh4eCAqLworCS5waW9fbWFzawk9IDB4MTAsIC8qIHBpbzQgKi8KKwkubXdkbWFfbWFzayA9 IDB4MDcsCisJLnVkbWFfbWFzawk9IDB4N2YsIC8qIHVkbWEwLTYgKi8KKwkucG9ydF9vcHMJ PSAmaXByX3NhdGFfb3BzCit9OworCiAjaWZkZWYgQ09ORklHX1BQQ19QU0VSSUVTCiBzdGF0 aWMgY29uc3QgdTE2IGlwcl9ibG9ja2VkX3Byb2Nlc3NvcnNbXSA9IHsKIAlQVl9OT1JUSFNU QVIsCmRpZmYgLXB1TiBkcml2ZXJzL3Njc2kvS2NvbmZpZ35pcHJfc2F0YV93aXRoX2xpYmF0 YV9jaGFuZ2VzIGRyaXZlcnMvc2NzaS9LY29uZmlnCi0tLSBsaW51eC0yLjYvZHJpdmVycy9z Y3NpL0tjb25maWd+aXByX3NhdGFfd2l0aF9saWJhdGFfY2hhbmdlcwkyMDA1LTEwLTI1IDA5 OjE1OjQ5LjAwMDAwMDAwMCAtMDUwMAorKysgbGludXgtMi42LWJqa2luZzEvZHJpdmVycy9z Y3NpL0tjb25maWcJMjAwNS0xMC0yNSAwOToxNTo0OS4wMDAwMDAwMDAgLTA1MDAKQEAgLTEw NzEsNiArMTA3MSw3IEBAIGNvbmZpZyBTQ1NJX0lQUgogCXRyaXN0YXRlICJJQk0gUG93ZXIg TGludXggUkFJRCBhZGFwdGVyIHN1cHBvcnQiCiAJZGVwZW5kcyBvbiBQQ0kgJiYgU0NTSQog CXNlbGVjdCBGV19MT0FERVIKKwlzZWxlY3QgU0NTSV9TQVRBCiAJLS0taGVscC0tLQogCSAg VGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIElCTSBQb3dlciBMaW51eCBmYW1pbHkgUkFJRCBh ZGFwdGVycy4KIAkgIFRoaXMgaW5jbHVkZXMgSUJNIHBTZXJpZXMgNTcxMiwgNTcwMywgNTcw OSwgYW5kIDU3MEEsIGFzIHdlbGwKZGlmZiAtcHVOIGRyaXZlcnMvc2NzaS9NYWtlZmlsZX5p cHJfc2F0YV93aXRoX2xpYmF0YV9jaGFuZ2VzIGRyaXZlcnMvc2NzaS9NYWtlZmlsZQotLS0g bGludXgtMi42L2RyaXZlcnMvc2NzaS9NYWtlZmlsZX5pcHJfc2F0YV93aXRoX2xpYmF0YV9j aGFuZ2VzCTIwMDUtMTAtMjUgMDk6MTU6NDkuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0y LjYtYmpraW5nMS9kcml2ZXJzL3Njc2kvTWFrZWZpbGUJMjAwNS0xMC0yNSAwOToxNTo0OS4w MDAwMDAwMDAgLTA1MDAKQEAgLTEyMiw3ICsxMjIsNyBAQCBvYmotJChDT05GSUdfU0NTSV9G Q0FMKQkJKz0gZmNhbC5vCiBvYmotJChDT05GSUdfU0NTSV9DUFFGQ1RTKQkrPSBjcHFmYy5v CiBvYmotJChDT05GSUdfU0NTSV9MQVNJNzAwKQkrPSA1M2M3MDAubyBsYXNpNzAwLm8KIG9i ai0kKENPTkZJR19TQ1NJX05TUDMyKQkrPSBuc3AzMi5vCi1vYmotJChDT05GSUdfU0NTSV9J UFIpCQkrPSBpcHIubworb2JqLSQoQ09ORklHX1NDU0lfSVBSKQkJKz0gbGliYXRhLm8gaXBy Lm8KIG9iai0kKENPTkZJR19TQ1NJX0lCTVZTQ1NJKQkrPSBpYm12c2NzaS8KIG9iai0kKENP TkZJR19TQ1NJX1NBVEFfQUhDSSkJKz0gbGliYXRhLm8gYWhjaS5vCiBvYmotJChDT05GSUdf U0NTSV9TQVRBX1NWVykJKz0gbGliYXRhLm8gc2F0YV9zdncubwpfCg== --------------000903030808000505050603--