Return-path: Received: from cpsmtpb-ews02.kpnxchange.com ([213.75.39.5]:3944 "EHLO cpsmtpb-ews02.kpnxchange.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751691Ab2HZSaI (ORCPT ); Sun, 26 Aug 2012 14:30:08 -0400 Message-ID: <503A6980.6070004@gmail.com> (sfid-20120826_203015_552707_213A9CBE) Date: Sun, 26 Aug 2012 20:22:56 +0200 From: Gertjan van Wingerde MIME-Version: 1.0 To: Andreas Messer CC: linux-wireless@vger.kernel.org Subject: Re: rt73usb not working since linux 3.4 References: <1364831.ftJE0YjeaD@proton> <20120626171835.GB32503@tuxdriver.com> <1994279.EoVfTdb8RL@hermes> <2175505.7MyGkZApGB@hermes> In-Reply-To: <2175505.7MyGkZApGB@hermes> Content-Type: multipart/mixed; boundary="------------090706050207070306000107" Sender: linux-wireless-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------090706050207070306000107 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi Andreas, On 08/23/12 20:51, Andreas Messer wrote: > Hey there, > > Am Dienstag, 24. Juli 2012, 19:33:34 schrieb Andreas Messer: >> Hello Again, >> >> Am Dienstag, 26. Juni 2012, 13:18:35 schrieb John W. Linville: >>> On Tue, Jun 26, 2012 at 06:03:56PM +0200, Andreas Messer wrote: >>>> Dear all, >>>> >>>> updating my pc from linux kernel 3.3 to linux kernel 3.4 broke my wlan. > > I have spent some more time on investigating the cause of the bug and found > the problem. Actually I'm not sure which is the right solution. The problem is > caused by the following points: > > 1) The rt73 hardware registers are not initialized before bringing the > corresponding network interface up ('ifconfig wlan0 up') > > 2) Bringing the interface up is not possible because of the kill switch > > 3) The GPIO input pin for the kill switch is still in 'output mode' (the > default power on value), therefore the register will always read > 'killswitch on' > > So something like a deadlock. While looking through the code, I have seen, > that the whole rt2xx driver uses here the same concept, that the hardware > register initialization and firmware-download does not happen before the > interface is brought up. Im not sure if that is the right concept, shouldn't > be the hardware initialized properly on loading the driver already? I mean, if > values are read from the hardware in order to e.g. read the kill switch state > shouldn't bethe hardware in a defined state before that? Anyway, it would be > possible to solve this bug easily by only setting up the correct value of the > CSR13 register right after reading the eeprom. For simple testing I have > written the correct gpio mask to CSR13 using the debugfs interface and the > wlan interface immediately was brought up and connected successfully with my > Network. > > So which is the right solution? I could make & test a patch for the simple > solution easily. > Thanks for you extensive analysis. You seem to be absolutely right that we need to properly setup the GPIO direction of the rfkill switch GPIO pin. And it seems that all rt2x00 drivers (not only rt73usb) are suffering from this. The reason why we do most of the initialization at interface up is that that is the earliest possible time we can get the firmware image from userspace. A lot of the register programming we have to do for initialization depend on the firmware being uploaded and running, hence we initialize most at interface up time. However, the correct fix IMHO here is to set the GPIO direction of the rfkill switch GPIO pin to input at driver load time. Find attached a patch that does this for all the rt2x00 devices. I hope you are able to test whether this patch fixes the problem for you. Once you have verified that the patch works, I will submit the changes as a proper patch series for inclusion upstream. --- Gertjan --------------090706050207070306000107 Content-Type: text/plain; charset=us-ascii; name="rt2x00-rfkill-fix.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rt2x00-rfkill-fix.patch" ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI0MDBwY2kuYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI0MDBwY2kuYwppbmRleCA4YjlkYmQ3 Li42NDU4YWI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQy NDAwcGNpLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjQwMHBjaS5j CkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIGludCBydDI0MDBwY2lfcmZraWxsX3BvbGwo c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIAl1MzIgcmVnOwogCiAJcnQyeDAwcGNp X3JlZ2lzdGVyX3JlYWQocnQyeDAwZGV2LCBHUElPQ1NSLCAmcmVnKTsKLQlyZXR1cm4gcnQy eDAwX2dldF9maWVsZDMyKHJlZywgR1BJT0NTUl9CSVQwKTsKKwlyZXR1cm4gcnQyeDAwX2dl dF9maWVsZDMyKHJlZywgR1BJT0NTUl9WQUwwKTsKIH0KIAogI2lmZGVmIENPTkZJR19SVDJY MDBfTElCX0xFRFMKQEAgLTE2MTEsNiArMTYxMSw3IEBAIHN0YXRpYyBpbnQgcnQyNDAwcGNp X3Byb2JlX2h3X21vZGUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHN0YXRpYyBp bnQgcnQyNDAwcGNpX3Byb2JlX2h3KHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCiB7 CiAJaW50IHJldHZhbDsKKwl1MzIgcmVnOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBlZXByb20g ZGF0YS4KQEAgLTE2MjQsNiArMTYyNSwxNCBAQCBzdGF0aWMgaW50IHJ0MjQwMHBjaV9wcm9i ZV9odyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogCQlyZXR1cm4gcmV0dmFsOwog CiAJLyoKKwkgKiBFbmFibGUgcmZraWxsIHBvbGxpbmcgYnkgc2V0dGluZyBHUElPIGRpcmVj dGlvbiBvZiB0aGUKKwkgKiByZmtpbGwgc3dpdGNoIEdQSU8gcGluIGNvcnJlY3RseS4KKwkg Ki8KKwlydDJ4MDBwY2lfcmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYsIEdQSU9DU1IsICZyZWcp OworCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBHUElPQ1NSX0RJUjAsIDEpOworCXJ0Mngw MHBjaV9yZWdpc3Rlcl93cml0ZShydDJ4MDBkZXYsIEdQSU9DU1IsIHJlZyk7CisKKwkvKgog CSAqIEluaXRpYWxpemUgaHcgc3BlY2lmaWNhdGlvbnMuCiAJICovCiAJcmV0dmFsID0gcnQy NDAwcGNpX3Byb2JlX2h3X21vZGUocnQyeDAwZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL3J0MngwMC9ydDI0MDBwY2kuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L3J0MngwMC9ydDI0MDBwY2kuaAppbmRleCBkM2E0YTY4Li5lNGIwN2YwIDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyNDAwcGNpLmgKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjQwMHBjaS5oCkBAIC02NjAsMTYgKzY2MCwyNiBA QAogCiAvKgogICogR1BJT0NTUjogR1BJTyBjb250cm9sIHJlZ2lzdGVyLgorICoJR1BJT0NT Ul9WQUx4OiBBY3R1YWwgR1BJTyBwaW4geCB2YWx1ZQorICoJR1BJT0NTUl9ESVJ4OiBHUElP IGRpcmVjdGlvbjogMCA9IG91dHB1dDsgMSA9IGlucHV0CiAgKi8KICNkZWZpbmUgR1BJT0NT UgkJCQkweDAxMjAKLSNkZWZpbmUgR1BJT0NTUl9CSVQwCQkJRklFTEQzMigweDAwMDAwMDAx KQotI2RlZmluZSBHUElPQ1NSX0JJVDEJCQlGSUVMRDMyKDB4MDAwMDAwMDIpCi0jZGVmaW5l IEdQSU9DU1JfQklUMgkJCUZJRUxEMzIoMHgwMDAwMDAwNCkKLSNkZWZpbmUgR1BJT0NTUl9C SVQzCQkJRklFTEQzMigweDAwMDAwMDA4KQotI2RlZmluZSBHUElPQ1NSX0JJVDQJCQlGSUVM RDMyKDB4MDAwMDAwMTApCi0jZGVmaW5lIEdQSU9DU1JfQklUNQkJCUZJRUxEMzIoMHgwMDAw MDAyMCkKLSNkZWZpbmUgR1BJT0NTUl9CSVQ2CQkJRklFTEQzMigweDAwMDAwMDQwKQotI2Rl ZmluZSBHUElPQ1NSX0JJVDcJCQlGSUVMRDMyKDB4MDAwMDAwODApCisjZGVmaW5lIEdQSU9D U1JfVkFMMAkJCUZJRUxEMzIoMHgwMDAwMDAwMSkKKyNkZWZpbmUgR1BJT0NTUl9WQUwxCQkJ RklFTEQzMigweDAwMDAwMDAyKQorI2RlZmluZSBHUElPQ1NSX1ZBTDIJCQlGSUVMRDMyKDB4 MDAwMDAwMDQpCisjZGVmaW5lIEdQSU9DU1JfVkFMMwkJCUZJRUxEMzIoMHgwMDAwMDAwOCkK KyNkZWZpbmUgR1BJT0NTUl9WQUw0CQkJRklFTEQzMigweDAwMDAwMDEwKQorI2RlZmluZSBH UElPQ1NSX1ZBTDUJCQlGSUVMRDMyKDB4MDAwMDAwMjApCisjZGVmaW5lIEdQSU9DU1JfVkFM NgkJCUZJRUxEMzIoMHgwMDAwMDA0MCkKKyNkZWZpbmUgR1BJT0NTUl9WQUw3CQkJRklFTEQz MigweDAwMDAwMDgwKQorI2RlZmluZSBHUElPQ1NSX0RJUjAJCQlGSUVMRDMyKDB4MDAwMDAx MDApCisjZGVmaW5lIEdQSU9DU1JfRElSMQkJCUZJRUxEMzIoMHgwMDAwMDIwMCkKKyNkZWZp bmUgR1BJT0NTUl9ESVIyCQkJRklFTEQzMigweDAwMDAwNDAwKQorI2RlZmluZSBHUElPQ1NS X0RJUjMJCQlGSUVMRDMyKDB4MDAwMDA4MDApCisjZGVmaW5lIEdQSU9DU1JfRElSNAkJCUZJ RUxEMzIoMHgwMDAwMTAwMCkKKyNkZWZpbmUgR1BJT0NTUl9ESVI1CQkJRklFTEQzMigweDAw MDAyMDAwKQorI2RlZmluZSBHUElPQ1NSX0RJUjYJCQlGSUVMRDMyKDB4MDAwMDQwMDApCisj ZGVmaW5lIEdQSU9DU1JfRElSNwkJCUZJRUxEMzIoMHgwMDAwODAwMCkKIAogLyoKICAqIEJC UFBDU1I6IEJCUCBQaW4gY29udHJvbCByZWdpc3Rlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL3J0MngwMC9ydDI1MDBwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L3J0MngwMC9ydDI1MDBwY2kuYwppbmRleCBkMmNmOGE0Li42OGJjYTE0IDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyNTAwcGNpLmMKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjUwMHBjaS5jCkBAIC0yMDUsNyArMjA1LDcgQEAg c3RhdGljIGludCBydDI1MDBwY2lfcmZraWxsX3BvbGwoc3RydWN0IHJ0MngwMF9kZXYgKnJ0 MngwMGRldikKIAl1MzIgcmVnOwogCiAJcnQyeDAwcGNpX3JlZ2lzdGVyX3JlYWQocnQyeDAw ZGV2LCBHUElPQ1NSLCAmcmVnKTsKLQlyZXR1cm4gcnQyeDAwX2dldF9maWVsZDMyKHJlZywg R1BJT0NTUl9CSVQwKTsKKwlyZXR1cm4gcnQyeDAwX2dldF9maWVsZDMyKHJlZywgR1BJT0NT Ul9WQUwwKTsKIH0KIAogI2lmZGVmIENPTkZJR19SVDJYMDBfTElCX0xFRFMKQEAgLTE5Mjks NiArMTkyOSw3IEBAIHN0YXRpYyBpbnQgcnQyNTAwcGNpX3Byb2JlX2h3X21vZGUoc3RydWN0 IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHN0YXRpYyBpbnQgcnQyNTAwcGNpX3Byb2JlX2h3 KHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCiB7CiAJaW50IHJldHZhbDsKKwl1MzIg cmVnOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBlZXByb20gZGF0YS4KQEAgLTE5NDIsNiArMTk0 MywxNCBAQCBzdGF0aWMgaW50IHJ0MjUwMHBjaV9wcm9iZV9odyhzdHJ1Y3QgcnQyeDAwX2Rl diAqcnQyeDAwZGV2KQogCQlyZXR1cm4gcmV0dmFsOwogCiAJLyoKKwkgKiBFbmFibGUgcmZr aWxsIHBvbGxpbmcgYnkgc2V0dGluZyBHUElPIGRpcmVjdGlvbiBvZiB0aGUKKwkgKiByZmtp bGwgc3dpdGNoIEdQSU8gcGluIGNvcnJlY3RseS4KKwkgKi8KKwlydDJ4MDBwY2lfcmVnaXN0 ZXJfcmVhZChydDJ4MDBkZXYsIEdQSU9DU1IsICZyZWcpOworCXJ0MngwMF9zZXRfZmllbGQz MigmcmVnLCBHUElPQ1NSX0RJUjAsIDEpOworCXJ0MngwMHBjaV9yZWdpc3Rlcl93cml0ZShy dDJ4MDBkZXYsIEdQSU9DU1IsIHJlZyk7CisKKwkvKgogCSAqIEluaXRpYWxpemUgaHcgc3Bl Y2lmaWNhdGlvbnMuCiAJICovCiAJcmV0dmFsID0gcnQyNTAwcGNpX3Byb2JlX2h3X21vZGUo cnQyeDAwZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9y dDI1MDBwY2kuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI1MDBwY2kuaApp bmRleCAyYWFkN2JhLi45YzEwMDY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVz cy9ydDJ4MDAvcnQyNTAwcGNpLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAw L3J0MjUwMHBjaS5oCkBAIC03ODksMTYgKzc4OSwxOCBAQAogCiAvKgogICogR1BJT0NTUjog R1BJTyBjb250cm9sIHJlZ2lzdGVyLgorICoJR1BJT0NTUl9WQUx4OiBHUElPIHZhbHVlCisg KglHUElPQ1NSX0RJUng6IEdQSU8gZGlyZWN0aW9uOiAwID0gb3V0cHV0OyAxID0gaW5wdXQK ICAqLwogI2RlZmluZSBHUElPQ1NSCQkJCTB4MDEyMAotI2RlZmluZSBHUElPQ1NSX0JJVDAJ CQlGSUVMRDMyKDB4MDAwMDAwMDEpCi0jZGVmaW5lIEdQSU9DU1JfQklUMQkJCUZJRUxEMzIo MHgwMDAwMDAwMikKLSNkZWZpbmUgR1BJT0NTUl9CSVQyCQkJRklFTEQzMigweDAwMDAwMDA0 KQotI2RlZmluZSBHUElPQ1NSX0JJVDMJCQlGSUVMRDMyKDB4MDAwMDAwMDgpCi0jZGVmaW5l IEdQSU9DU1JfQklUNAkJCUZJRUxEMzIoMHgwMDAwMDAxMCkKLSNkZWZpbmUgR1BJT0NTUl9C SVQ1CQkJRklFTEQzMigweDAwMDAwMDIwKQotI2RlZmluZSBHUElPQ1NSX0JJVDYJCQlGSUVM RDMyKDB4MDAwMDAwNDApCi0jZGVmaW5lIEdQSU9DU1JfQklUNwkJCUZJRUxEMzIoMHgwMDAw MDA4MCkKKyNkZWZpbmUgR1BJT0NTUl9WQUwwCQkJRklFTEQzMigweDAwMDAwMDAxKQorI2Rl ZmluZSBHUElPQ1NSX1ZBTDEJCQlGSUVMRDMyKDB4MDAwMDAwMDIpCisjZGVmaW5lIEdQSU9D U1JfVkFMMgkJCUZJRUxEMzIoMHgwMDAwMDAwNCkKKyNkZWZpbmUgR1BJT0NTUl9WQUwzCQkJ RklFTEQzMigweDAwMDAwMDA4KQorI2RlZmluZSBHUElPQ1NSX1ZBTDQJCQlGSUVMRDMyKDB4 MDAwMDAwMTApCisjZGVmaW5lIEdQSU9DU1JfVkFMNQkJCUZJRUxEMzIoMHgwMDAwMDAyMCkK KyNkZWZpbmUgR1BJT0NTUl9WQUw2CQkJRklFTEQzMigweDAwMDAwMDQwKQorI2RlZmluZSBH UElPQ1NSX1ZBTDcJCQlGSUVMRDMyKDB4MDAwMDAwODApCiAjZGVmaW5lIEdQSU9DU1JfRElS MAkJCUZJRUxEMzIoMHgwMDAwMDEwMCkKICNkZWZpbmUgR1BJT0NTUl9ESVIxCQkJRklFTEQz MigweDAwMDAwMjAwKQogI2RlZmluZSBHUElPQ1NSX0RJUjIJCQlGSUVMRDMyKDB4MDAwMDA0 MDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyNTAwdXNi LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyNTAwdXNiLmMKaW5kZXggM2Fh ZTM2Yi4uZjk1YjU1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAw L3J0MjUwMHVzYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI1MDB1 c2IuYwpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0YXRpYyBpbnQgcnQyNTAwdXNiX3Jma2lsbF9w b2xsKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCiAJdTE2IHJlZzsKIAogCXJ0MjUw MHVzYl9yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgTUFDX0NTUjE5LCAmcmVnKTsKLQlyZXR1 cm4gcnQyeDAwX2dldF9maWVsZDMyKHJlZywgTUFDX0NTUjE5X0JJVDcpOworCXJldHVybiBy dDJ4MDBfZ2V0X2ZpZWxkMTYocmVnLCBNQUNfQ1NSMTlfVkFMNyk7CiB9CiAKICNpZmRlZiBD T05GSUdfUlQyWDAwX0xJQl9MRURTCkBAIC0xNzY4LDYgKzE3NjgsNyBAQCBzdGF0aWMgaW50 IHJ0MjUwMHVzYl9wcm9iZV9od19tb2RlKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYp CiBzdGF0aWMgaW50IHJ0MjUwMHVzYl9wcm9iZV9odyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQy eDAwZGV2KQogewogCWludCByZXR2YWw7CisJdTE2IHJlZzsKIAogCS8qCiAJICogQWxsb2Nh dGUgZWVwcm9tIGRhdGEuCkBAIC0xNzgxLDYgKzE3ODIsMTQgQEAgc3RhdGljIGludCBydDI1 MDB1c2JfcHJvYmVfaHcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIAkJcmV0dXJu IHJldHZhbDsKIAogCS8qCisJICogRW5hYmxlIHJma2lsbCBwb2xsaW5nIGJ5IHNldHRpbmcg R1BJTyBkaXJlY3Rpb24gb2YgdGhlCisJICogcmZraWxsIHN3aXRjaCBHUElPIHBpbiBjb3Jy ZWN0bHkuCisJICovCisJcnQyNTAwdXNiX3JlZ2lzdGVyX3JlYWQocnQyeDAwZGV2LCBNQUNf Q1NSMTksICZyZWcpOworCXJ0MngwMF9zZXRfZmllbGQxNigmcmVnLCBNQUNfQ1NSMTlfRElS MCwgMCk7CisJcnQyNTAwdXNiX3JlZ2lzdGVyX3dyaXRlKHJ0MngwMGRldiwgTUFDX0NTUjE5 LCByZWcpOworCisJLyoKIAkgKiBJbml0aWFsaXplIGh3IHNwZWNpZmljYXRpb25zLgogCSAq LwogCXJldHZhbCA9IHJ0MjUwMHVzYl9wcm9iZV9od19tb2RlKHJ0MngwMGRldik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyNTAwdXNiLmggYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyNTAwdXNiLmgKaW5kZXggYjQ5MzMwNi4uZWY3 YjQyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjUwMHVz Yi5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI1MDB1c2IuaApAQCAt MTg3LDE2ICsxODcsMjYgQEAKIAogLyoKICAqIE1BQ19DU1IxOTogR1BJTyBjb250cm9sIHJl Z2lzdGVyLgorICoJTUFDX0NTUjE5X1ZBTHg6IEdQSU8gdmFsdWUKKyAqCU1BQ19DU1IxOV9E SVJ4OiBHUElPIGRpcmVjdGlvbjogMCA9IGlucHV0OyAxID0gb3V0cHV0CiAgKi8KICNkZWZp bmUgTUFDX0NTUjE5CQkJMHgwNDI2Ci0jZGVmaW5lIE1BQ19DU1IxOV9CSVQwCQkJRklFTEQz MigweDAwMDEpCi0jZGVmaW5lIE1BQ19DU1IxOV9CSVQxCQkJRklFTEQzMigweDAwMDIpCi0j ZGVmaW5lIE1BQ19DU1IxOV9CSVQyCQkJRklFTEQzMigweDAwMDQpCi0jZGVmaW5lIE1BQ19D U1IxOV9CSVQzCQkJRklFTEQzMigweDAwMDgpCi0jZGVmaW5lIE1BQ19DU1IxOV9CSVQ0CQkJ RklFTEQzMigweDAwMTApCi0jZGVmaW5lIE1BQ19DU1IxOV9CSVQ1CQkJRklFTEQzMigweDAw MjApCi0jZGVmaW5lIE1BQ19DU1IxOV9CSVQ2CQkJRklFTEQzMigweDAwNDApCi0jZGVmaW5l IE1BQ19DU1IxOV9CSVQ3CQkJRklFTEQzMigweDAwODApCisjZGVmaW5lIE1BQ19DU1IxOV9W QUwwCQkJRklFTEQxNigweDAwMDEpCisjZGVmaW5lIE1BQ19DU1IxOV9WQUwxCQkJRklFTEQx NigweDAwMDIpCisjZGVmaW5lIE1BQ19DU1IxOV9WQUwyCQkJRklFTEQxNigweDAwMDQpCisj ZGVmaW5lIE1BQ19DU1IxOV9WQUwzCQkJRklFTEQxNigweDAwMDgpCisjZGVmaW5lIE1BQ19D U1IxOV9WQUw0CQkJRklFTEQxNigweDAwMTApCisjZGVmaW5lIE1BQ19DU1IxOV9WQUw1CQkJ RklFTEQxNigweDAwMjApCisjZGVmaW5lIE1BQ19DU1IxOV9WQUw2CQkJRklFTEQxNigweDAw NDApCisjZGVmaW5lIE1BQ19DU1IxOV9WQUw3CQkJRklFTEQxNigweDAwODApCisjZGVmaW5l IE1BQ19DU1IxOV9ESVIwCQkJRklFTEQxNigweDAxMDApCisjZGVmaW5lIE1BQ19DU1IxOV9E SVIxCQkJRklFTEQxNigweDAyMDApCisjZGVmaW5lIE1BQ19DU1IxOV9ESVIyCQkJRklFTEQx NigweDA0MDApCisjZGVmaW5lIE1BQ19DU1IxOV9ESVIzCQkJRklFTEQxNigweDA4MDApCisj ZGVmaW5lIE1BQ19DU1IxOV9ESVI0CQkJRklFTEQzMigweDEwMDApCisjZGVmaW5lIE1BQ19D U1IxOV9ESVI1CQkJRklFTEQxNigweDIwMDApCisjZGVmaW5lIE1BQ19DU1IxOV9ESVI2CQkJ RklFTEQxNigweDQwMDApCisjZGVmaW5lIE1BQ19DU1IxOV9ESVI3CQkJRklFTEQxNigweDgw MDApCiAKIC8qCiAgKiBNQUNfQ1NSMjA6IExFRCBjb250cm9sIHJlZ2lzdGVyLgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMC5oIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMC5oCmluZGV4IGUyNTJlOWIuLmUxMzkxNmYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDAuaAorKysgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwLmgKQEAgLTQzOSwyNiArNDM5LDMz IEBACiAjZGVmaW5lIFdNTV9UWE9QMV9DRkdfQUMzVFhPUAkJRklFTEQzMigweGZmZmYwMDAw KQogCiAvKgotICogR1BJT19DVFJMX0NGRzoKLSAqIEdQSU9EOiBHUElPIGRpcmVjdGlvbiwg MDogT3V0cHV0LCAxOiBJbnB1dAotICovCi0jZGVmaW5lIEdQSU9fQ1RSTF9DRkcJCQkweDAy MjgKLSNkZWZpbmUgR1BJT19DVFJMX0NGR19CSVQwCQlGSUVMRDMyKDB4MDAwMDAwMDEpCi0j ZGVmaW5lIEdQSU9fQ1RSTF9DRkdfQklUMQkJRklFTEQzMigweDAwMDAwMDAyKQotI2RlZmlu ZSBHUElPX0NUUkxfQ0ZHX0JJVDIJCUZJRUxEMzIoMHgwMDAwMDAwNCkKLSNkZWZpbmUgR1BJ T19DVFJMX0NGR19CSVQzCQlGSUVMRDMyKDB4MDAwMDAwMDgpCi0jZGVmaW5lIEdQSU9fQ1RS TF9DRkdfQklUNAkJRklFTEQzMigweDAwMDAwMDEwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZH X0JJVDUJCUZJRUxEMzIoMHgwMDAwMDAyMCkKLSNkZWZpbmUgR1BJT19DVFJMX0NGR19CSVQ2 CQlGSUVMRDMyKDB4MDAwMDAwNDApCi0jZGVmaW5lIEdQSU9fQ1RSTF9DRkdfQklUNwkJRklF TEQzMigweDAwMDAwMDgwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDAJRklF TEQzMigweDAwMDAwMTAwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDEJRklF TEQzMigweDAwMDAwMjAwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDIJRklF TEQzMigweDAwMDAwNDAwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDMJRklF TEQzMigweDAwMDAwODAwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDQJRklF TEQzMigweDAwMDAxMDAwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDUJRklF TEQzMigweDAwMDAyMDAwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDYJRklF TEQzMigweDAwMDA0MDAwKQotI2RlZmluZSBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDcJRklF TEQzMigweDAwMDA4MDAwKQorICogR1BJT19DVFJMOgorICoJR1BJT19DVFJMX1ZBTHg6IEdQ SU8gdmFsdWUKKyAqCUdQSU9fQ1RSTF9ESVJ4OiBHUElPIGRpcmVjdGlvbjogMCA9IG91dHB1 dDsgMSA9IGlucHV0CisgKi8KKyNkZWZpbmUgR1BJT19DVFJMCQkJMHgwMjI4CisjZGVmaW5l IEdQSU9fQ1RSTF9WQUwwCQkJRklFTEQzMigweDAwMDAwMDAxKQorI2RlZmluZSBHUElPX0NU UkxfVkFMMQkJCUZJRUxEMzIoMHgwMDAwMDAwMikKKyNkZWZpbmUgR1BJT19DVFJMX1ZBTDIJ CQlGSUVMRDMyKDB4MDAwMDAwMDQpCisjZGVmaW5lIEdQSU9fQ1RSTF9WQUwzCQkJRklFTEQz MigweDAwMDAwMDA4KQorI2RlZmluZSBHUElPX0NUUkxfVkFMNAkJCUZJRUxEMzIoMHgwMDAw MDAxMCkKKyNkZWZpbmUgR1BJT19DVFJMX1ZBTDUJCQlGSUVMRDMyKDB4MDAwMDAwMjApCisj ZGVmaW5lIEdQSU9fQ1RSTF9WQUw2CQkJRklFTEQzMigweDAwMDAwMDQwKQorI2RlZmluZSBH UElPX0NUUkxfVkFMNwkJCUZJRUxEMzIoMHgwMDAwMDA4MCkKKyNkZWZpbmUgR1BJT19DVFJM X0RJUjAJCQlGSUVMRDMyKDB4MDAwMDAxMDApCisjZGVmaW5lIEdQSU9fQ1RSTF9ESVIxCQkJ RklFTEQzMigweDAwMDAwMjAwKQorI2RlZmluZSBHUElPX0NUUkxfRElSMgkJCUZJRUxEMzIo MHgwMDAwMDQwMCkKKyNkZWZpbmUgR1BJT19DVFJMX0RJUjMJCQlGSUVMRDMyKDB4MDAwMDA4 MDApCisjZGVmaW5lIEdQSU9fQ1RSTF9ESVI0CQkJRklFTEQzMigweDAwMDAxMDAwKQorI2Rl ZmluZSBHUElPX0NUUkxfRElSNQkJCUZJRUxEMzIoMHgwMDAwMjAwMCkKKyNkZWZpbmUgR1BJ T19DVFJMX0RJUjYJCQlGSUVMRDMyKDB4MDAwMDQwMDApCisjZGVmaW5lIEdQSU9fQ1RSTF9E SVI3CQkJRklFTEQzMigweDAwMDA4MDAwKQorI2RlZmluZSBHUElPX0NUUkxfVkFMOAkJCUZJ RUxEMzIoMHgwMDAxMDAwMCkKKyNkZWZpbmUgR1BJT19DVFJMX1ZBTDkJCQlGSUVMRDMyKDB4 MDAwMjAwMDApCisjZGVmaW5lIEdQSU9fQ1RSTF9WQUwxMAkJCUZJRUxEMzIoMHgwMDA0MDAw MCkKKyNkZWZpbmUgR1BJT19DVFJMX0RJUjgJCQlGSUVMRDMyKDB4MDEwMDAwMDApCisjZGVm aW5lIEdQSU9fQ1RSTF9ESVI5CQkJRklFTEQzMigweDAyMDAwMDAwKQorI2RlZmluZSBHUElP X0NUUkxfRElSMTAJCQlGSUVMRDMyKDB4MDQwMDAwMDApCiAKIC8qCiAgKiBNQ1VfQ01EX0NG RwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMGxpYi5j IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMGxpYi5jCmluZGV4IGNiOGMy YWMuLmMzY2FlMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9y dDI4MDBsaWIuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwbGli LmMKQEAgLTkyMyw4ICs5MjMsOCBAQCBpbnQgcnQyODAwX3Jma2lsbF9wb2xsKHN0cnVjdCBy dDJ4MDBfZGV2ICpydDJ4MDBkZXYpCiAJCXJ0MjgwMF9yZWdpc3Rlcl9yZWFkKHJ0MngwMGRl diwgV0xBTl9GVU5fQ1RSTCwgJnJlZyk7CiAJCXJldHVybiBydDJ4MDBfZ2V0X2ZpZWxkMzIo cmVnLCBXTEFOX0dQSU9fSU5fQklUMCk7CiAJfSBlbHNlIHsKLQkJcnQyODAwX3JlZ2lzdGVy X3JlYWQocnQyeDAwZGV2LCBHUElPX0NUUkxfQ0ZHLCAmcmVnKTsKLQkJcmV0dXJuIHJ0Mngw MF9nZXRfZmllbGQzMihyZWcsIEdQSU9fQ1RSTF9DRkdfQklUMik7CisJCXJ0MjgwMF9yZWdp c3Rlcl9yZWFkKHJ0MngwMGRldiwgR1BJT19DVFJMLCAmcmVnKTsKKwkJcmV0dXJuIHJ0Mngw MF9nZXRfZmllbGQzMihyZWcsIEdQSU9fQ1RSTF9WQUwyKTsKIAl9CiB9CiBFWFBPUlRfU1lN Qk9MX0dQTChydDI4MDBfcmZraWxsX3BvbGwpOwpAQCAtMTU3MCwxMCArMTU3MCwxMCBAQCBz dGF0aWMgdm9pZCBydDI4MDBfc2V0X2FudF9kaXZlcnNpdHkoc3RydWN0IHJ0MngwMF9kZXYg KnJ0MngwMGRldiwKIAkJcnQyODAwX21jdV9yZXF1ZXN0KHJ0MngwMGRldiwgTUNVX0FOVF9T RUxFQ1QsIDB4ZmYsCiAJCQkJICAgZWVza19waW4sIDApOwogCi0JcnQyODAwX3JlZ2lzdGVy X3JlYWQocnQyeDAwZGV2LCBHUElPX0NUUkxfQ0ZHLCAmcmVnKTsKLQlydDJ4MDBfc2V0X2Zp ZWxkMzIoJnJlZywgR1BJT19DVFJMX0NGR19HUElPRF9CSVQzLCAwKTsKLQlydDJ4MDBfc2V0 X2ZpZWxkMzIoJnJlZywgR1BJT19DVFJMX0NGR19CSVQzLCBncGlvX2JpdDMpOwotCXJ0Mjgw MF9yZWdpc3Rlcl93cml0ZShydDJ4MDBkZXYsIEdQSU9fQ1RSTF9DRkcsIHJlZyk7CisJcnQy ODAwX3JlZ2lzdGVyX3JlYWQocnQyeDAwZGV2LCBHUElPX0NUUkwsICZyZWcpOworCXJ0Mngw MF9zZXRfZmllbGQzMigmcmVnLCBHUElPX0NUUkxfRElSMywgMCk7CisJcnQyeDAwX3NldF9m aWVsZDMyKCZyZWcsIEdQSU9fQ1RSTF9WQUwzLCBncGlvX2JpdDMpOworCXJ0MjgwMF9yZWdp c3Rlcl93cml0ZShydDJ4MDBkZXYsIEdQSU9fQ1RSTCwgcmVnKTsKIH0KIAogdm9pZCBydDI4 MDBfY29uZmlnX2FudChzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2LCBzdHJ1Y3QgYW50 ZW5uYV9zZXR1cCAqYW50KQpAQCAtMTk5NSwxMyArMTk5NSwxMyBAQCBzdGF0aWMgdm9pZCBy dDI4MDBfY29uZmlnX2NoYW5uZWxfcmYzMDUyKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBk ZXYsCiAJCXJ0MjgwMF9yZmNzcl93cml0ZShydDJ4MDBkZXYsIDI5LCAweDlmKTsKIAl9CiAK LQlydDI4MDBfcmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYsIEdQSU9fQ1RSTF9DRkcsICZyZWcp OwotCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBHUElPX0NUUkxfQ0ZHX0dQSU9EX0JJVDcs IDApOworCXJ0MjgwMF9yZWdpc3Rlcl9yZWFkKHJ0MngwMGRldiwgR1BJT19DVFJMLCAmcmVn KTsKKwlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgR1BJT19DVFJMX0RJUjcsIDApOwogCWlm IChyZi0+Y2hhbm5lbCA8PSAxNCkKLQkJcnQyeDAwX3NldF9maWVsZDMyKCZyZWcsIEdQSU9f Q1RSTF9DRkdfQklUNywgMSk7CisJCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBHUElPX0NU UkxfVkFMNywgMSk7CiAJZWxzZQotCQlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgR1BJT19D VFJMX0NGR19CSVQ3LCAwKTsKLQlydDI4MDBfcmVnaXN0ZXJfd3JpdGUocnQyeDAwZGV2LCBH UElPX0NUUkxfQ0ZHLCByZWcpOworCQlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgR1BJT19D VFJMX1ZBTDcsIDApOworCXJ0MjgwMF9yZWdpc3Rlcl93cml0ZShydDJ4MDBkZXYsIEdQSU9f Q1RSTCwgcmVnKTsKIAogCXJ0MjgwMF9yZmNzcl9yZWFkKHJ0MngwMGRldiwgNywgJnJmY3Ny KTsKIAlydDJ4MDBfc2V0X2ZpZWxkOCgmcmZjc3IsIFJGQ1NSN19SRl9UVU5JTkcsIDEpOwpA QCAtMzU4NywxNiArMzU4NywxNiBAQCBzdGF0aWMgaW50IHJ0MjgwMF9pbml0X2JicChzdHJ1 Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogCQlpZiAodGVzdF9iaXQoQ0FQQUJJTElUWV9C VF9DT0VYSVNULCAmcnQyeDAwZGV2LT5jYXBfZmxhZ3MpKSB7CiAJCQl1MzIgcmVnOwogCi0J CQlydDI4MDBfcmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYsIEdQSU9fQ1RSTF9DRkcsICZyZWcp OwotCQkJcnQyeDAwX3NldF9maWVsZDMyKCZyZWcsIEdQSU9fQ1RSTF9DRkdfR1BJT0RfQklU MywgMCk7Ci0JCQlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgR1BJT19DVFJMX0NGR19HUElP RF9CSVQ2LCAwKTsKLQkJCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBHUElPX0NUUkxfQ0ZH X0JJVDMsIDApOwotCQkJcnQyeDAwX3NldF9maWVsZDMyKCZyZWcsIEdQSU9fQ1RSTF9DRkdf QklUNiwgMCk7CisJCQlydDI4MDBfcmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYsIEdQSU9fQ1RS TCwgJnJlZyk7CisJCQlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgR1BJT19DVFJMX0RJUjMs IDApOworCQkJcnQyeDAwX3NldF9maWVsZDMyKCZyZWcsIEdQSU9fQ1RSTF9ESVI2LCAwKTsK KwkJCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBHUElPX0NUUkxfVkFMMywgMCk7CisJCQly dDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgR1BJT19DVFJMX1ZBTDYsIDApOwogCQkJaWYgKGFu dCA9PSAwKQotCQkJCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBHUElPX0NUUkxfQ0ZHX0JJ VDMsIDEpOworCQkJCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBHUElPX0NUUkxfVkFMMywg MSk7CiAJCQllbHNlIGlmIChhbnQgPT0gMSkKLQkJCQlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJl ZywgR1BJT19DVFJMX0NGR19CSVQ2LCAxKTsKLQkJCXJ0MjgwMF9yZWdpc3Rlcl93cml0ZShy dDJ4MDBkZXYsIEdQSU9fQ1RSTF9DRkcsIHJlZyk7CisJCQkJcnQyeDAwX3NldF9maWVsZDMy KCZyZWcsIEdQSU9fQ1RSTF9WQUw2LCAxKTsKKwkJCXJ0MjgwMF9yZWdpc3Rlcl93cml0ZShy dDJ4MDBkZXYsIEdQSU9fQ1RSTCwgcmVnKTsKIAkJfQogCiAJCS8qIFRoaXMgY2hpcCBoYXMg aGFyZHdhcmUgYW50ZW5uYSBkaXZlcnNpdHkqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvcnQyeDAwL3J0MjgwMHBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQy eDAwL3J0MjgwMHBjaS5jCmluZGV4IDk4YWE0MjYuLjA5NjU1NDAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDBwY2kuYworKysgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwcGNpLmMKQEAgLTk4Myw2ICs5ODMsNyBAQCBzdGF0 aWMgaW50IHJ0MjgwMHBjaV92YWxpZGF0ZV9lZXByb20oc3RydWN0IHJ0MngwMF9kZXYgKnJ0 MngwMGRldikKIHN0YXRpYyBpbnQgcnQyODAwcGNpX3Byb2JlX2h3KHN0cnVjdCBydDJ4MDBf ZGV2ICpydDJ4MDBkZXYpCiB7CiAJaW50IHJldHZhbDsKKwl1MzIgcmVnOwogCiAJLyoKIAkg KiBBbGxvY2F0ZSBlZXByb20gZGF0YS4KQEAgLTk5Niw2ICs5OTcsMTQgQEAgc3RhdGljIGlu dCBydDI4MDBwY2lfcHJvYmVfaHcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIAkJ cmV0dXJuIHJldHZhbDsKIAogCS8qCisJICogRW5hYmxlIHJma2lsbCBwb2xsaW5nIGJ5IHNl dHRpbmcgR1BJTyBkaXJlY3Rpb24gb2YgdGhlCisJICogcmZraWxsIHN3aXRjaCBHUElPIHBp biBjb3JyZWN0bHkuCisJICovCisJcnQyeDAwcGNpX3JlZ2lzdGVyX3JlYWQocnQyeDAwZGV2 LCBHUElPX0NUUkwsICZyZWcpOworCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBHUElPX0NU UkxfRElSMiwgMSk7CisJcnQyeDAwcGNpX3JlZ2lzdGVyX3dyaXRlKHJ0MngwMGRldiwgR1BJ T19DVFJMLCByZWcpOworCisJLyoKIAkgKiBJbml0aWFsaXplIGh3IHNwZWNpZmljYXRpb25z LgogCSAqLwogCXJldHZhbCA9IHJ0MjgwMF9wcm9iZV9od19tb2RlKHJ0MngwMGRldik7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwdXNiLmMgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwdXNiLmMKaW5kZXggNmNmMzM2NS4u ZjU0NWQyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0Mjgw MHVzYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDB1c2IuYwpA QCAtNzM2LDYgKzczNiw3IEBAIHN0YXRpYyBpbnQgcnQyODAwdXNiX3ZhbGlkYXRlX2VlcHJv bShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogc3RhdGljIGludCBydDI4MDB1c2Jf cHJvYmVfaHcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHsKIAlpbnQgcmV0dmFs OworCXUzMiByZWc7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGVlcHJvbSBkYXRhLgpAQCAtNzQ5 LDYgKzc1MCwxNCBAQCBzdGF0aWMgaW50IHJ0MjgwMHVzYl9wcm9iZV9odyhzdHJ1Y3QgcnQy eDAwX2RldiAqcnQyeDAwZGV2KQogCQlyZXR1cm4gcmV0dmFsOwogCiAJLyoKKwkgKiBFbmFi bGUgcmZraWxsIHBvbGxpbmcgYnkgc2V0dGluZyBHUElPIGRpcmVjdGlvbiBvZiB0aGUKKwkg KiByZmtpbGwgc3dpdGNoIEdQSU8gcGluIGNvcnJlY3RseS4KKwkgKi8KKwlydDJ4MDB1c2Jf cmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYsIEdQSU9fQ1RSTCwgJnJlZyk7CisJcnQyeDAwX3Nl dF9maWVsZDMyKCZyZWcsIEdQSU9fQ1RSTF9ESVIyLCAxKTsKKwlydDJ4MDB1c2JfcmVnaXN0 ZXJfd3JpdGUocnQyeDAwZGV2LCBHUElPX0NUUkwsIHJlZyk7CisKKwkvKgogCSAqIEluaXRp YWxpemUgaHcgc3BlY2lmaWNhdGlvbnMuCiAJICovCiAJcmV0dmFsID0gcnQyODAwX3Byb2Jl X2h3X21vZGUocnQyeDAwZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNz L3J0MngwMC9ydDYxcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQ2MXBj aS5jCmluZGV4IDNmN2JjNWMuLjI2NzNlMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL3J0MngwMC9ydDYxcGNpLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQy eDAwL3J0NjFwY2kuYwpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBpbnQgcnQ2MXBjaV9y ZmtpbGxfcG9sbChzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogCXUzMiByZWc7CiAK IAlydDJ4MDBwY2lfcmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYsIE1BQ19DU1IxMywgJnJlZyk7 Ci0JcmV0dXJuIHJ0MngwMF9nZXRfZmllbGQzMihyZWcsIE1BQ19DU1IxM19CSVQ1KTsKKwly ZXR1cm4gcnQyeDAwX2dldF9maWVsZDMyKHJlZywgTUFDX0NTUjEzX1ZBTDUpOwogfQogCiAj aWZkZWYgQ09ORklHX1JUMlgwMF9MSUJfTEVEUwpAQCAtNzE1LDExICs3MTUsMTEgQEAgc3Rh dGljIHZvaWQgcnQ2MXBjaV9jb25maWdfYW50ZW5uYV8yNTI5X3J4KHN0cnVjdCBydDJ4MDBf ZGV2ICpydDJ4MDBkZXYsCiAKIAlydDJ4MDBwY2lfcmVnaXN0ZXJfcmVhZChydDJ4MDBkZXYs IE1BQ19DU1IxMywgJnJlZyk7CiAKLQlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgTUFDX0NT UjEzX0JJVDQsIHAxKTsKLQlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgTUFDX0NTUjEzX0JJ VDEyLCAwKTsKKwlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgTUFDX0NTUjEzX0RJUjQsIDAp OworCXJ0MngwMF9zZXRfZmllbGQzMigmcmVnLCBNQUNfQ1NSMTNfVkFMNCwgcDEpOwogCi0J cnQyeDAwX3NldF9maWVsZDMyKCZyZWcsIE1BQ19DU1IxM19CSVQzLCAhcDIpOwotCXJ0Mngw MF9zZXRfZmllbGQzMigmcmVnLCBNQUNfQ1NSMTNfQklUMTEsIDApOworCXJ0MngwMF9zZXRf ZmllbGQzMigmcmVnLCBNQUNfQ1NSMTNfRElSMywgMCk7CisJcnQyeDAwX3NldF9maWVsZDMy KCZyZWcsIE1BQ19DU1IxM19WQUwzLCAhcDIpOwogCiAJcnQyeDAwcGNpX3JlZ2lzdGVyX3dy aXRlKHJ0MngwMGRldiwgTUFDX0NTUjEzLCByZWcpOwogfQpAQCAtMjgzMiw2ICsyODMyLDcg QEAgc3RhdGljIGludCBydDYxcGNpX3Byb2JlX2h3X21vZGUoc3RydWN0IHJ0MngwMF9kZXYg KnJ0MngwMGRldikKIHN0YXRpYyBpbnQgcnQ2MXBjaV9wcm9iZV9odyhzdHJ1Y3QgcnQyeDAw X2RldiAqcnQyeDAwZGV2KQogewogCWludCByZXR2YWw7CisJdTMyIHJlZzsKIAogCS8qCiAJ ICogRGlzYWJsZSBwb3dlciBzYXZpbmcuCkBAIC0yODUwLDYgKzI4NTEsMTQgQEAgc3RhdGlj IGludCBydDYxcGNpX3Byb2JlX2h3KHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCiAJ CXJldHVybiByZXR2YWw7CiAKIAkvKgorCSAqIEVuYWJsZSByZmtpbGwgcG9sbGluZyBieSBz ZXR0aW5nIEdQSU8gZGlyZWN0aW9uIG9mIHRoZQorCSAqIHJma2lsbCBzd2l0Y2ggR1BJTyBw aW4gY29ycmVjdGx5LgorCSAqLworCXJ0MngwMHBjaV9yZWdpc3Rlcl9yZWFkKHJ0MngwMGRl diwgTUFDX0NTUjEzLCAmcmVnKTsKKwlydDJ4MDBfc2V0X2ZpZWxkMzIoJnJlZywgTUFDX0NT UjEzX0RJUjUsIDEpOworCXJ0MngwMHBjaV9yZWdpc3Rlcl93cml0ZShydDJ4MDBkZXYsIE1B Q19DU1IxMywgcmVnKTsKKworCS8qCiAJICogSW5pdGlhbGl6ZSBodyBzcGVjaWZpY2F0aW9u cy4KIAkgKi8KIAlyZXR2YWwgPSBydDYxcGNpX3Byb2JlX2h3X21vZGUocnQyeDAwZGV2KTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDYxcGNpLmggYi9k cml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQ2MXBjaS5oCmluZGV4IGUzY2Q2ZGIuLjli YzZiNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDYxcGNp LmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0NjFwY2kuaApAQCAtMzU3 LDIxICszNTcsMjIgQEAgc3RydWN0IGh3X3BhaXJ3aXNlX3RhX2VudHJ5IHsKIAogLyoKICAq IE1BQ19DU1IxMzogR1BJTy4KKyAqCU1BQ19DU1IxM19WQUx4OiBHUElPIHZhbHVlCisgKglN QUNfQ1NSMTNfRElSeDogR1BJTyBkaXJlY3Rpb246IDAgPSBvdXRwdXQ7IDEgPSBpbnB1dAog ICovCiAjZGVmaW5lIE1BQ19DU1IxMwkJCTB4MzAzNAotI2RlZmluZSBNQUNfQ1NSMTNfQklU MAkJCUZJRUxEMzIoMHgwMDAwMDAwMSkKLSNkZWZpbmUgTUFDX0NTUjEzX0JJVDEJCQlGSUVM RDMyKDB4MDAwMDAwMDIpCi0jZGVmaW5lIE1BQ19DU1IxM19CSVQyCQkJRklFTEQzMigweDAw MDAwMDA0KQotI2RlZmluZSBNQUNfQ1NSMTNfQklUMwkJCUZJRUxEMzIoMHgwMDAwMDAwOCkK LSNkZWZpbmUgTUFDX0NTUjEzX0JJVDQJCQlGSUVMRDMyKDB4MDAwMDAwMTApCi0jZGVmaW5l IE1BQ19DU1IxM19CSVQ1CQkJRklFTEQzMigweDAwMDAwMDIwKQotI2RlZmluZSBNQUNfQ1NS MTNfQklUNgkJCUZJRUxEMzIoMHgwMDAwMDA0MCkKLSNkZWZpbmUgTUFDX0NTUjEzX0JJVDcJ CQlGSUVMRDMyKDB4MDAwMDAwODApCi0jZGVmaW5lIE1BQ19DU1IxM19CSVQ4CQkJRklFTEQz MigweDAwMDAwMTAwKQotI2RlZmluZSBNQUNfQ1NSMTNfQklUOQkJCUZJRUxEMzIoMHgwMDAw MDIwMCkKLSNkZWZpbmUgTUFDX0NTUjEzX0JJVDEwCQkJRklFTEQzMigweDAwMDAwNDAwKQot I2RlZmluZSBNQUNfQ1NSMTNfQklUMTEJCQlGSUVMRDMyKDB4MDAwMDA4MDApCi0jZGVmaW5l IE1BQ19DU1IxM19CSVQxMgkJCUZJRUxEMzIoMHgwMDAwMTAwMCkKKyNkZWZpbmUgTUFDX0NT UjEzX1ZBTDAJCQlGSUVMRDMyKDB4MDAwMDAwMDEpCisjZGVmaW5lIE1BQ19DU1IxM19WQUwx CQkJRklFTEQzMigweDAwMDAwMDAyKQorI2RlZmluZSBNQUNfQ1NSMTNfVkFMMgkJCUZJRUxE MzIoMHgwMDAwMDAwNCkKKyNkZWZpbmUgTUFDX0NTUjEzX1ZBTDMJCQlGSUVMRDMyKDB4MDAw MDAwMDgpCisjZGVmaW5lIE1BQ19DU1IxM19WQUw0CQkJRklFTEQzMigweDAwMDAwMDEwKQor I2RlZmluZSBNQUNfQ1NSMTNfVkFMNQkJCUZJRUxEMzIoMHgwMDAwMDAyMCkKKyNkZWZpbmUg TUFDX0NTUjEzX0RJUjAJCQlGSUVMRDMyKDB4MDAwMDAxMDApCisjZGVmaW5lIE1BQ19DU1Ix M19ESVIxCQkJRklFTEQzMigweDAwMDAwMjAwKQorI2RlZmluZSBNQUNfQ1NSMTNfRElSMgkJ CUZJRUxEMzIoMHgwMDAwMDQwMCkKKyNkZWZpbmUgTUFDX0NTUjEzX0RJUjMJCQlGSUVMRDMy KDB4MDAwMDA4MDApCisjZGVmaW5lIE1BQ19DU1IxM19ESVI0CQkJRklFTEQzMigweDAwMDAx MDAwKQorI2RlZmluZSBNQUNfQ1NSMTNfRElSNQkJCUZJRUxEMzIoMHgwMDAwMjAwMCkKIAog LyoKICAqIE1BQ19DU1IxNDogTEVEIGNvbnRyb2wgcmVnaXN0ZXIuCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQ3M3VzYi5jIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvcnQyeDAwL3J0NzN1c2IuYwppbmRleCBiYTZlNDM0Li5jZmE5ZjM3IDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQ3M3VzYi5jCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDczdXNiLmMKQEAgLTE4OSw3ICsxODksNyBAQCBz dGF0aWMgaW50IHJ0NzN1c2JfcmZraWxsX3BvbGwoc3RydWN0IHJ0MngwMF9kZXYgKnJ0Mngw MGRldikKIAl1MzIgcmVnOwogCiAJcnQyeDAwdXNiX3JlZ2lzdGVyX3JlYWQocnQyeDAwZGV2 LCBNQUNfQ1NSMTMsICZyZWcpOwotCXJldHVybiBydDJ4MDBfZ2V0X2ZpZWxkMzIocmVnLCBN QUNfQ1NSMTNfQklUNyk7CisJcmV0dXJuIHJ0MngwMF9nZXRfZmllbGQzMihyZWcsIE1BQ19D U1IxM19WQUw3KTsKIH0KIAogI2lmZGVmIENPTkZJR19SVDJYMDBfTElCX0xFRFMKQEAgLTIx NzcsNiArMjE3Nyw3IEBAIHN0YXRpYyBpbnQgcnQ3M3VzYl9wcm9iZV9od19tb2RlKHN0cnVj dCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCiBzdGF0aWMgaW50IHJ0NzN1c2JfcHJvYmVfaHco c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKIHsKIAlpbnQgcmV0dmFsOworCXUzMiBy ZWc7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGVlcHJvbSBkYXRhLgpAQCAtMjE5MCw2ICsyMTkx LDE0IEBAIHN0YXRpYyBpbnQgcnQ3M3VzYl9wcm9iZV9odyhzdHJ1Y3QgcnQyeDAwX2RldiAq cnQyeDAwZGV2KQogCQlyZXR1cm4gcmV0dmFsOwogCiAJLyoKKwkgKiBFbmFibGUgcmZraWxs IHBvbGxpbmcgYnkgc2V0dGluZyBHUElPIGRpcmVjdGlvbiBvZiB0aGUKKwkgKiByZmtpbGwg c3dpdGNoIEdQSU8gcGluIGNvcnJlY3RseS4KKwkgKi8KKwlydDJ4MDB1c2JfcmVnaXN0ZXJf cmVhZChydDJ4MDBkZXYsIE1BQ19DU1IxMywgJnJlZyk7CisJcnQyeDAwX3NldF9maWVsZDMy KCZyZWcsIE1BQ19DU1IxM19ESVI3LCAwKTsKKwlydDJ4MDB1c2JfcmVnaXN0ZXJfd3JpdGUo cnQyeDAwZGV2LCBNQUNfQ1NSMTMsIHJlZyk7CisKKwkvKgogCSAqIEluaXRpYWxpemUgaHcg c3BlY2lmaWNhdGlvbnMuCiAJICovCiAJcmV0dmFsID0gcnQ3M3VzYl9wcm9iZV9od19tb2Rl KHJ0MngwMGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAv cnQ3M3VzYi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0NzN1c2IuaAppbmRl eCA5ZjZiNDcwLi43NTc3ZTBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9y dDJ4MDAvcnQ3M3VzYi5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDcz dXNiLmgKQEAgLTI2NywyMSArMjY3LDI2IEBAIHN0cnVjdCBod19wYWlyd2lzZV90YV9lbnRy eSB7CiAKIC8qCiAgKiBNQUNfQ1NSMTM6IEdQSU8uCisgKglNQUNfQ1NSMTNfVkFMeDogR1BJ TyB2YWx1ZQorICoJTUFDX0NTUjEzX0RJUng6IEdQSU8gZGlyZWN0aW9uOiAwID0gaW5wdXQ7 IDEgPSBvdXRwdXQKICAqLwogI2RlZmluZSBNQUNfQ1NSMTMJCQkweDMwMzQKLSNkZWZpbmUg TUFDX0NTUjEzX0JJVDAJCQlGSUVMRDMyKDB4MDAwMDAwMDEpCi0jZGVmaW5lIE1BQ19DU1Ix M19CSVQxCQkJRklFTEQzMigweDAwMDAwMDAyKQotI2RlZmluZSBNQUNfQ1NSMTNfQklUMgkJ CUZJRUxEMzIoMHgwMDAwMDAwNCkKLSNkZWZpbmUgTUFDX0NTUjEzX0JJVDMJCQlGSUVMRDMy KDB4MDAwMDAwMDgpCi0jZGVmaW5lIE1BQ19DU1IxM19CSVQ0CQkJRklFTEQzMigweDAwMDAw MDEwKQotI2RlZmluZSBNQUNfQ1NSMTNfQklUNQkJCUZJRUxEMzIoMHgwMDAwMDAyMCkKLSNk ZWZpbmUgTUFDX0NTUjEzX0JJVDYJCQlGSUVMRDMyKDB4MDAwMDAwNDApCi0jZGVmaW5lIE1B Q19DU1IxM19CSVQ3CQkJRklFTEQzMigweDAwMDAwMDgwKQotI2RlZmluZSBNQUNfQ1NSMTNf QklUOAkJCUZJRUxEMzIoMHgwMDAwMDEwMCkKLSNkZWZpbmUgTUFDX0NTUjEzX0JJVDkJCQlG SUVMRDMyKDB4MDAwMDAyMDApCi0jZGVmaW5lIE1BQ19DU1IxM19CSVQxMAkJCUZJRUxEMzIo MHgwMDAwMDQwMCkKLSNkZWZpbmUgTUFDX0NTUjEzX0JJVDExCQkJRklFTEQzMigweDAwMDAw ODAwKQotI2RlZmluZSBNQUNfQ1NSMTNfQklUMTIJCQlGSUVMRDMyKDB4MDAwMDEwMDApCisj ZGVmaW5lIE1BQ19DU1IxM19WQUwwCQkJRklFTEQzMigweDAwMDAwMDAxKQorI2RlZmluZSBN QUNfQ1NSMTNfVkFMMQkJCUZJRUxEMzIoMHgwMDAwMDAwMikKKyNkZWZpbmUgTUFDX0NTUjEz X1ZBTDIJCQlGSUVMRDMyKDB4MDAwMDAwMDQpCisjZGVmaW5lIE1BQ19DU1IxM19WQUwzCQkJ RklFTEQzMigweDAwMDAwMDA4KQorI2RlZmluZSBNQUNfQ1NSMTNfVkFMNAkJCUZJRUxEMzIo MHgwMDAwMDAxMCkKKyNkZWZpbmUgTUFDX0NTUjEzX1ZBTDUJCQlGSUVMRDMyKDB4MDAwMDAw MjApCisjZGVmaW5lIE1BQ19DU1IxM19WQUw2CQkJRklFTEQzMigweDAwMDAwMDQwKQorI2Rl ZmluZSBNQUNfQ1NSMTNfVkFMNwkJCUZJRUxEMzIoMHgwMDAwMDA4MCkKKyNkZWZpbmUgTUFD X0NTUjEzX0RJUjAJCQlGSUVMRDMyKDB4MDAwMDAxMDApCisjZGVmaW5lIE1BQ19DU1IxM19E SVIxCQkJRklFTEQzMigweDAwMDAwMjAwKQorI2RlZmluZSBNQUNfQ1NSMTNfRElSMgkJCUZJ RUxEMzIoMHgwMDAwMDQwMCkKKyNkZWZpbmUgTUFDX0NTUjEzX0RJUjMJCQlGSUVMRDMyKDB4 MDAwMDA4MDApCisjZGVmaW5lIE1BQ19DU1IxM19ESVI0CQkJRklFTEQzMigweDAwMDAxMDAw KQorI2RlZmluZSBNQUNfQ1NSMTNfRElSNQkJCUZJRUxEMzIoMHgwMDAwMjAwMCkKKyNkZWZp bmUgTUFDX0NTUjEzX0RJUjYJCQlGSUVMRDMyKDB4MDAwMDQwMDApCisjZGVmaW5lIE1BQ19D U1IxM19ESVI3CQkJRklFTEQzMigweDAwMDA4MDAwKQogCiAvKgogICogTUFDX0NTUjE0OiBM RUQgY29udHJvbCByZWdpc3Rlci4K --------------090706050207070306000107--