From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon@freedesktop.org Subject: [Bug 17902] [830M missing dvo driver] need support for DVO-LVDS via na2501 Date: Fri, 08 Jun 2012 16:06:59 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from annarchy.freedesktop.org (annarchy.freedesktop.org [131.252.210.176]) by gabe.freedesktop.org (Postfix) with ESMTP id 74C909E7C6 for ; Fri, 8 Jun 2012 09:07:00 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org aHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDIKCnRob3JA bWF0aC50dS1iZXJsaW4uZGUgY2hhbmdlZDoKCiAgICAgICAgICAgV2hhdCAgICB8UmVtb3ZlZCAg ICAgICAgICAgICAgICAgICAgIHxBZGRlZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAg ICBTdGF0dXN8UkVPUEVORUQgICAgICAgICAgICAgICAgICAgIHxSRVNPTFZFRAogICAgICAgICBS ZXNvbHV0aW9ufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8V09SS1NGT1JNRQoKLS0tIENv bW1lbnQgIzg1IGZyb20gdGhvckBtYXRoLnR1LWJlcmxpbi5kZSAyMDEyLTA2LTA4IDA5OjA2OjU5 IFBEVCAtLS0KTm93IEkgYWxzbyBnb3QgdGhlIHNjYWxlciAicHNldWRvLXdvcmtpbmciIGJ5IGlu c3BlY3Rpbmcgd2hpY2ggdmFsdWVzIHRoZSB2ZXNhCkJJT1MgbGVhdmVzIGJlaGluZCBpbiB0aGUg RFZPIGFuZCBqdXN0IGNvcHlpbmcgdGhlc2UgdmFsdWVzLiBCeSBub3cgSSBjYW4Kc3VwcG9ydCA2 NDB4NDgwLCA4MDB4NjAwIGFuZCB0aGUgbmF0aXZlIHJlc29sdXRpb24sIHdoaWNoIGlzIGhlcmUg MTAyNHg3NjguClVuZm9ydHVuYXRlbHksIEkgZG8gbm90IGhhdmUgdGhlIHJpZ2h0IHZlc2EgQklP UyBkYXRhIGZvciB0aGUgbGF0dGVyLCBhbmQgZm9yCmFueXRoaW5nIGVsc2UsIHNvIHlvdXIgbWls YWdlIG1heSB2YXJ5LiBBbHNvLCB0aGUgc2NhbGVyIHN1cHBvcnQgaXMgc29tZWhvdwpoYWNreSBh cyB0aGUgRFZPIGZpcnN0IG5lZWRzIHRvIGJlIHR1cm5lZCBvbiBieSBlbmFibGluZyB0aGUgUExM IGJ5IHBva2luZyBpbnRvCnRoZSBjaGlwc2V0IHJlZ2lzdGVycyAoeXVjayEpLiBJdCdzIHJlYWxs eSBhIGJlYXN0eSBjaGlwLgoKSSB3aWxsIHN1Ym1pdCB0aGUgcGF0Y2ggdG8gdGhlIG1haWxpbmcg bGlzdCBsYXRlciB0aGlzIGRheSwgaGVyZSBmb3IgeW91cgpyZWNvcmRzOgoKZGlmZiAtcnVwIGxp bnV4LTMuNC4xLW9yaWcvZHJpdmVycy9ncHUvZHJtL2k5MTUvZHZvLmgKbGludXgtMy40LjEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZHZvLmgKLS0tIGxpbnV4LTMuNC4xLW9yaWcvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZHZvLmggICAgMjAxMi0wNi0wMQowOToxODo0NC4wMDAwMDAwMDAgKzAyMDAKKysr IGxpbnV4LTMuNC4xL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2R2by5oICAgIDIwMTItMDYtMDggMTM6 MTU6MTkuMDAwMDAwMDAwCiswMjAwCkBAIC0xNDAsNSArMTQwLDYgQEAgZXh0ZXJuIHN0cnVjdCBp bnRlbF9kdm9fZGV2X29wcyBjaDd4eHhfbwogZXh0ZXJuIHN0cnVjdCBpbnRlbF9kdm9fZGV2X29w cyBpdmNoX29wczsKIGV4dGVybiBzdHJ1Y3QgaW50ZWxfZHZvX2Rldl9vcHMgdGZwNDEwX29wczsK IGV4dGVybiBzdHJ1Y3QgaW50ZWxfZHZvX2Rldl9vcHMgY2g3MDE3X29wczsKK2V4dGVybiBzdHJ1 Y3QgaW50ZWxfZHZvX2Rldl9vcHMgbnMyNTAxX29wczsKCiAjZW5kaWYgLyogX0lOVEVMX0RWT19I ICovCmRpZmYgLXJ1cCBsaW51eC0zLjQuMS1vcmlnL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2R2b19u czI1MDEuYwpsaW51eC0zLjQuMS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kdm9fbnMyNTAxLmMKLS0t IGxpbnV4LTMuNC4xLW9yaWcvZHJpdmVycy9ncHUvZHJtL2k5MTUvZHZvX25zMjUwMS5jICAgIDIw MTItMDYtMDgKMTc6NTk6MjAuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0zLjQuMS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kdm9fbnMyNTAxLmMgICAgMjAxMi0wNi0wOAoxNzo1MjoyMS4wMDAwMDAw MDAgKzAyMDAKQEAgLTAsMCArMSw1NDQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDb3B5cmln aHQgwqkgMjAxMiBHaWxsZXMgRGFydGlndWVsb25ndWUsIFRob21hcyBSaWNodGVyCisKK0FsbCBS aWdodHMgUmVzZXJ2ZWQuCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCitjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisiU29mdHdhcmUiKSwgdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCit3aXRo b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsCitkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvCitwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUKK25leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCitvZiB0aGUgU29mdHdhcmUuCisKK1RI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTCitPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULgorSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV VEhPUiBCRSBMSUFCTEUgRk9SCitBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKK1RPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCitTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKKyNpbmNsdWRlICJkdm8uaCIKKyNpbmNsdWRlICJpOTE1X3JlZy5oIgorI2lu Y2x1ZGUgImk5MTVfZHJ2LmgiCisKKyNkZWZpbmUgTlMyNTAxX1ZJRCAweDEzMDUKKyNkZWZpbmUg TlMyNTAxX0RJRCAweDY3MjYKKworI2RlZmluZSBOUzI1MDFfVklEX0xPIDB4MDAKKyNkZWZpbmUg TlMyNTAxX1ZJRF9ISSAweDAxCisjZGVmaW5lIE5TMjUwMV9ESURfTE8gMHgwMgorI2RlZmluZSBO UzI1MDFfRElEX0hJIDB4MDMKKyNkZWZpbmUgTlMyNTAxX1JFViAweDA0CisjZGVmaW5lIE5TMjUw MV9SU1ZEIDB4MDUKKyNkZWZpbmUgTlMyNTAxX0ZSRVFfTE8gMHgwNgorI2RlZmluZSBOUzI1MDFf RlJFUV9ISSAweDA3CisKKyNkZWZpbmUgTlMyNTAxX1JFRzggMHgwOAorI2RlZmluZSBOUzI1MDFf OF9WRU4gKDE8PDUpCisjZGVmaW5lIE5TMjUwMV84X0hFTiAoMTw8NCkKKyNkZWZpbmUgTlMyNTAx XzhfRFNFTCAoMTw8MykKKyNkZWZpbmUgTlMyNTAxXzhfQlBBUyAoMTw8MikKKyNkZWZpbmUgTlMy NTAxXzhfUlNWRCAoMTw8MSkKKyNkZWZpbmUgTlMyNTAxXzhfUEQgKDE8PDApCisKKyNkZWZpbmUg TlMyNTAxX1JFRzkgMHgwOQorI2RlZmluZSBOUzI1MDFfOV9WTE9XICgxPDw3KQorI2RlZmluZSBO UzI1MDFfOV9NU0VMX01BU0sgKDB4Nzw8NCkKKyNkZWZpbmUgTlMyNTAxXzlfVFNFTCAoMTw8MykK KyNkZWZpbmUgTlMyNTAxXzlfUlNFTiAoMTw8MikKKyNkZWZpbmUgTlMyNTAxXzlfUlNWRCAoMTw8 MSkKKyNkZWZpbmUgTlMyNTAxXzlfTURJICgxPDwwKQorCisjZGVmaW5lIE5TMjUwMV9SRUdDIDB4 MGMKKworc3RydWN0IG5zMjUwMV9wcml2IHsKKyAgLy9JMkNEZXZSZWMgZDsKKyAgYm9vbCBxdWll dDsKKyAgaW50IHJlZ184X3NoYWRvdzsKKyAgaW50IHJlZ184X3NldDsKKyAgLy8gU2hhZG93IHJl Z2lzdGVycyBmb3IgaTkxNQorICBpbnQgZHZvYzsKKyAgaW50IHBsbF9hOworICBpbnQgc3JjZGlt OworICBpbnQgZndfYmxjOworfTsKKworI2RlZmluZSBOU1BUUihkKSAoKE5TMjUwMVB0cikoZC0+ RHJpdmVyUHJpdmF0ZS5wdHIpKQorCisvKgorKiogSW5jbHVkZSB0aGUgUExMIGxhdW5jaGVyIHBy b3RvdHlwZQorKi8KK2V4dGVybiB2b2lkIGludGVsX2VuYWJsZV9wbGwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUKcGlwZSk7CisKKy8qCisqKiBGb3IgcmVhc29u cyB1bmNsZWFyIHRvIG1lLCB0aGUgbnMyNTAxIGF0IGxlYXN0IG9uIHRoZSBGdWppdHN1L1NpZW1l bnMKKyoqIGxhcHRvcHMgZG9lcyBub3QgcmVhY3Qgb24gdGhlIGkyYyBidXMgdW5sZXNzCisqKiBi b3RoIHRoZSBQTEwgaXMgcnVubmluZyBhbmQgdGhlIGRpc3BsYXkgaXMgY29uZmlndXJlZCBpbiBp dHMgbmF0aXZlCisqKiByZXNvbHV0aW9uLgorKiogVGhpcyBmdW5jdGlvbiBmb3JjZXMgdGhlIERW TyBvbiwgYW5kIHN0b3JlcyB0aGUgcmVnaXN0ZXJzIGl0IHRvdWNoZXMuCisqKiBBZnRlcndhcmRz LCByZWdpc3RlcnMgYXJlIHJlc3RvcmVkIHRvIHJlZ3VsYXIgdmFsdWVzLgorKioKKyoqIFRoaXMg aXMgcHJldHR5IG11Y2ggYSBoYWNrLCB0aG91Z2ggaXQgd29ya3MuCisqKiBXaXRob3V0IHRoYXQs IG5zMjUwMV9yZWFkYiBhbmQgbnMyNTAxX3dyaXRlYiBmYWlsCisqKiB3aGVuIHN3aXRjaGluZyB0 aGUgcmVzb2x1dGlvbi4KKyovCisKK3N0YXRpYyB2b2lkIGVuYWJsZV9kdm8oc3RydWN0IGludGVs X2R2b19kZXZpY2UgKmR2bykKK3sKKyAgc3RydWN0IG5zMjUwMV9wcml2ICpucyA9IChzdHJ1Y3Qg bnMyNTAxX3ByaXYgKikoZHZvLT5kZXZfcHJpdik7CisgIHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cHRlciA9IGR2by0+aTJjX2J1czsKKyAgc3RydWN0IGludGVsX2dtYnVzICpidXMgICAgID0gY29u dGFpbmVyX29mKGFkYXB0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgaW50ZWxfZ21idXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhZGFwdGVyKTsKKyAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gYnVzLT5kZXZfcHJpdjsKKworICBEUk1fREVCVUdfS01TKCIlczogVHJ5aW5nIHRv IHJlLWVuYWJsZSB0aGUgRFZPXG4iLF9fRlVOQ1RJT05fXyk7CisKKyAgbnMtPmR2b2MgICA9IEk5 MTVfUkVBRChEVk9fQyk7CisgIG5zLT5wbGxfYSAgPSBJOTE1X1JFQUQoX0RQTExfQSk7CisgIG5z LT5zcmNkaW0gPSBJOTE1X1JFQUQoRFZPQ19TUkNESU0pOworICBucy0+ZndfYmxjID0gSTkxNV9S RUFEKEZXX0JMQyk7CisKKyAgSTkxNV9XUklURShEVk9DLCAweDEwMDA0MDg0KTsKKyAgSTkxNV9X UklURShfRFBMTF9BLDB4ZDA4MjAwMDApOworICBJOTE1X1dSSVRFKERWT0NfU1JDRElNLDB4NDAw MzAwKTsgLy8gMTAyNHg3NjgKKyAgSTkxNV9XUklURShGV19CTEMsMHgxMDgwMzA0KTsgICAgIAor CisgIGludGVsX2VuYWJsZV9wbGwoZGV2X3ByaXYsMCk7CisKKyAgSTkxNV9XUklURShEVk9DLCAw eDkwMDA0MDg0KTsKK30KKworLyoKKyoqIFJlc3RvcmUgdGhlIEk5MTUgcmVnaXN0ZXJzIG1vZGlm aWVkIGJ5IHRoZSBhYm92ZQorKiogdHJpZ2dlciBmdW5jdGlvbi4KKyovCitzdGF0aWMgdm9pZCBy ZXN0b3JlX2R2byhzdHJ1Y3QgaW50ZWxfZHZvX2RldmljZSAqZHZvKQoreyAKKyAgc3RydWN0IGky Y19hZGFwdGVyICphZGFwdGVyID0gZHZvLT5pMmNfYnVzOworICBzdHJ1Y3QgaW50ZWxfZ21idXMg KmJ1cyAgICAgPSBjb250YWluZXJfb2YoYWRhcHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9nbWJ1cywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXB0ZXIpOworICBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBidXMtPmRldl9wcml2OworICBzdHJ1Y3QgbnMyNTAxX3By aXYgKm5zID0gKHN0cnVjdCBuczI1MDFfcHJpdiAqKShkdm8tPmRldl9wcml2KTsKKworICBJOTE1 X1dSSVRFKERWT0MgICAgICAgLG5zLT5kdm9jKTsKKyAgSTkxNV9XUklURShfRFBMTF9BICAgICxu cy0+cGxsX2EpOworICBJOTE1X1dSSVRFKERWT0NfU1JDRElNLG5zLT5zcmNkaW0pOworICBJOTE1 X1dSSVRFKEZXX0JMQyAgICAgLG5zLT5md19ibGMpOworfQorCisvKgorKiogUmVhZCBhIHJlZ2lz dGVyIGZyb20gdGhlIG5zMjUwMS4KKyoqIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBmYWxz ZSBvdGhlcndpc2UuCisqKiBJZiBpdCByZXR1cm5zIGZhbHNlLCBpdCBtaWdodCBiZSB3aXNlIHRv IGVuYWJsZSB0aGUKKyoqIERWTyB3aXRoIHRoZSBhYm92ZSBmdW5jdGlvbi4KKyovCitzdGF0aWMg Ym9vbCBuczI1MDFfcmVhZGIoc3RydWN0IGludGVsX2R2b19kZXZpY2UgKmR2bywgaW50IGFkZHIs IHVpbnQ4X3QgKmNoKQoreworICBzdHJ1Y3QgbnMyNTAxX3ByaXYgKm5zID0gZHZvLT5kZXZfcHJp djsKKyAgc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyID0gZHZvLT5pMmNfYnVzOworICB1OCBv dXRfYnVmWzJdOworICB1OCBpbl9idWZbMl07CisKKyAgc3RydWN0IGkyY19tc2cgbXNnc1tdID0g eworICAgIHsKKyAgICAgIC5hZGRyID0gZHZvLT5zbGF2ZV9hZGRyLAorICAgICAgLmZsYWdzID0g MCwKKyAgICAgIC5sZW4gPSAxLAorICAgICAgLmJ1ZiA9IG91dF9idWYsCisgICAgfSwKKyAgICB7 CisgICAgICAuYWRkciA9IGR2by0+c2xhdmVfYWRkciwKKyAgICAgIC5mbGFncyA9IEkyQ19NX1JE LAorICAgICAgLmxlbiA9IDEsCisgICAgICAuYnVmID0gaW5fYnVmLAorICAgIH0KKyAgfTsKKwor ICBvdXRfYnVmWzBdID0gYWRkcjsKKyAgb3V0X2J1ZlsxXSA9IDA7CisKKyAgaWYgKGkyY190cmFu c2ZlcihhZGFwdGVyLCBtc2dzLCAyKSA9PSAyKSB7CisgICAgKmNoID0gaW5fYnVmWzBdOworICAg IHJldHVybiB0cnVlOworICB9OworCisgIGlmICghbnMtPnF1aWV0KSB7CisgICAgRFJNX0RFQlVH X0tNUygiVW5hYmxlIHRvIHJlYWQgcmVnaXN0ZXIgMHglMDJ4IGZyb20gJXM6MHglMDJ4LlxuIiwK KyAgICAgICAgICBhZGRyLCBhZGFwdGVyLT5uYW1lLCBkdm8tPnNsYXZlX2FkZHIpOworICB9CisK KyAgcmV0dXJuIGZhbHNlOworfQorCisvKgorKiogV3JpdGUgYSByZWdpc3RlciB0byB0aGUgbnMy NTAxLgorKiogUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZS4KKyoq IElmIGl0IHJldHVybnMgZmFsc2UsIGl0IG1pZ2h0IGJlIHdpc2UgdG8gZW5hYmxlIHRoZQorKiog RFZPIHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9uLgorKi8KK3N0YXRpYyBib29sIG5zMjUwMV93cml0 ZWIoc3RydWN0IGludGVsX2R2b19kZXZpY2UgKmR2bywgaW50IGFkZHIsIHVpbnQ4X3QgY2gpCit7 CisgIHN0cnVjdCBuczI1MDFfcHJpdiAqbnMgPSBkdm8tPmRldl9wcml2OworICBzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXB0ZXIgPSBkdm8tPmkyY19idXM7CisgIHVpbnQ4X3Qgb3V0X2J1ZlsyXTsK KworICBzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7CisgICAgLmFkZHIgPSBkdm8tPnNsYXZlX2FkZHIs CisgICAgLmZsYWdzID0gMCwKKyAgICAubGVuID0gMiwKKyAgICAuYnVmID0gb3V0X2J1ZiwKKyAg fTsKKworICBvdXRfYnVmWzBdID0gYWRkcjsKKyAgb3V0X2J1ZlsxXSA9IGNoOworCisgIGlmIChp MmNfdHJhbnNmZXIoYWRhcHRlciwgJm1zZywgMSkgPT0gMSkgeworICAgIHJldHVybiB0cnVlOwor ICB9CisKKyAgaWYgKCFucy0+cXVpZXQpIHsKKyAgICBEUk1fREVCVUdfS01TKCJVbmFibGUgdG8g d3JpdGUgcmVnaXN0ZXIgMHglMDJ4IHRvICVzOiVkXG4iLAorICAgICAgICAgICAgICAgICAgYWRk ciwgYWRhcHRlci0+bmFtZSwgZHZvLT5zbGF2ZV9hZGRyKTsKKyAgfQorCisgIHJldHVybiBmYWxz ZTsKK30KKworLyogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciAyNTAxIGRyaXZlciBmb3IgY2hpcCBv biBpMmMgYnVzIAorKiogc2NhbiBmb3IgdGhlIGNoaXAgb24gdGhlIGJ1cy4KKyoqIEhvcGUgdGhl IFZCSU9TIGluaXRpYWxpemVkIHRoZSBQTEwgY29ycmVjdGx5IHNvIHdlIGNhbgorKiogdGFsayB0 byBpdC4gSWYgbm90LCBpdCB3aWxsIG5vdCBiZSBzZWVuIGFuZCBub3QgZGV0ZWN0ZWQuCisqKiBC dW1tZXIhCisqLworc3RhdGljIGJvb2wgbnMyNTAxX2luaXQoc3RydWN0IGludGVsX2R2b19kZXZp Y2UgKmR2bywKKyAgICAgICAgICAgIHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKK3sKKyAg LyogdGhpcyB3aWxsIGRldGVjdCB0aGUgTlMyNTAxIGNoaXAgb24gdGhlIHNwZWNpZmllZCBpMmMg YnVzICovCisgIHN0cnVjdCBuczI1MDFfcHJpdiAqbnM7CisgIHVuc2lnbmVkIGNoYXIgY2g7CisK KyAgbnMgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbnMyNTAxX3ByaXYpLCBHRlBfS0VSTkVMKTsK KyAgaWYgKG5zID09IE5VTEwpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGR2by0+aTJjX2J1cyA9 IGFkYXB0ZXI7CisgIGR2by0+ZGV2X3ByaXYgPSBuczsKKyAgbnMtPnF1aWV0ID0gdHJ1ZTsKKwor ICBpZiAoIW5zMjUwMV9yZWFkYihkdm8sIE5TMjUwMV9WSURfTE8sICZjaCkpCisgICAgZ290byBv dXQ7CisKKyAgaWYgKGNoICE9IChOUzI1MDFfVklEICYgMHhmZikpIHsKKyAgICBEUk1fREVCVUdf S01TKCJuczI1MDEgbm90IGRldGVjdGVkIGdvdCAlZDogZnJvbSAlcyBTbGF2ZSAlZC5cbiIsCisg ICAgICAgICAgY2gsIGFkYXB0ZXItPm5hbWUsIGR2by0+c2xhdmVfYWRkcik7CisgICAgZ290byBv dXQ7CisgIH0KKworICBpZiAoIW5zMjUwMV9yZWFkYihkdm8sIE5TMjUwMV9ESURfTE8sICZjaCkp CisgICAgZ290byBvdXQ7CisKKyAgaWYgKGNoICE9IChOUzI1MDFfRElEICYgMHhmZikpIHsKKyAg ICBEUk1fREVCVUdfS01TKCJuczI1MDEgbm90IGRldGVjdGVkIGdvdCAlZDogZnJvbSAlcyBTbGF2 ZSAlZC5cbiIsCisgICAgICAgICAgY2gsIGFkYXB0ZXItPm5hbWUsIGR2by0+c2xhdmVfYWRkcik7 CisgICAgZ290byBvdXQ7CisgIH0KKyAgbnMtPnF1aWV0ICAgICAgICA9IGZhbHNlOworICBucy0+ cmVnXzhfc2V0ICAgID0gMDsKKyAgbnMtPnJlZ184X3NoYWRvdyA9IE5TMjUwMV84X1BEIHwgTlMy NTAxXzhfQlBBUyB8IE5TMjUwMV84X1ZFTiB8Ck5TMjUwMV84X0hFTjsKKworICBEUk1fREVCVUdf S01TKCJpbml0IG5zMjUwMSBkdm8gY29udHJvbGxlciBzdWNjZXNzZnVsbHkhXG4iKTsKKyAgcmV0 dXJuIHRydWU7CisKKyBvdXQ6CisgIGtmcmVlKG5zKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBuczI1MDFfZGV0ZWN0KHN0cnVjdCBpbnRl bF9kdm9fZGV2aWNlICpkdm8pCit7CisgIC8qCisgICoqIFRoaXMgaXMgYSBMYXB0b3AgZGlzcGxh eSwgaXQgZG9lc24ndCBoYXZlIGhvdHBsdWdnaW5nLgorICAqKiBFdmVuIGlmIG5vdCwgdGhlIGRl dGVjdGlvbiBiaXQgb2YgdGhlIDI1MDEgaXMgdW5yZWxpYWJsZSBhcworICAqKiBpdCBvbmx5IHdv cmtzIGZvciBzb21lIGRpc3BsYXkgdHlwZXMuCisgICoqIEl0IGlzIGV2ZW4gbW9yZSB1bnJlbGlh YmxlIGFzIHRoZSBQTEwgbXVzdCBiZSBhY3RpdmUgZm9yCisgICoqIGFsbG93aW5nIHJlYWRpbmcg ZnJvbSB0aGUgY2hpb3AuCisgICovCisgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZDsKK30KKworc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzIG5zMjUwMV9tb2RlX3ZhbGlkKHN0 cnVjdCBpbnRlbF9kdm9fZGV2aWNlICpkdm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworICBEUk1fREVCVUdfS01TKCIlczogaXMg bW9kZSB2YWxpZAooaGRpc3BsYXk9JWQsaHRvdGFsPSVkLHZkaXNwbGF5PSVkLHZ0b3RhbD0lZClc biIsX19GVU5DVElPTl9fLAorICAgICAgICBtb2RlLT5oZGlzcGxheSxtb2RlLT5odG90YWwsbW9k ZS0+dmRpc3BsYXksbW9kZS0+dnRvdGFsKTsKKworCisgIC8qCisgICoqIEN1cnJlbnRseSwgdGhl c2UgYXJlIGFsbCB0aGUgbW9kZXMgSSBoYXZlIGRhdGEgZnJvbS4KKyAgKiogTW9yZSBtaWdodCBl eGlzdC4gVW5jbGVhciBob3cgdG8gZmluZCB0aGUgbmF0aXZlIHJlc29sdXRpb24KKyAgKiogb2Yg dGhlIHBhbmVsIGluIGhlcmUgc28gd2UgY291bGQgYWx3YXlzIGFjY2VwdCBpdAorICAqKiBieSBk aXNhYmxpbmcgdGhlIHNjYWxlci4KKyAgKi8KKyAgaWYgKChtb2RlLT5oZGlzcGxheSA9PSA4MDAg JiYgbW9kZS0+dmRpc3BsYXkgPT0gNjAwKSB8fAorICAgICAgKG1vZGUtPmhkaXNwbGF5ID09IDY0 MCAmJiBtb2RlLT52ZGlzcGxheSA9PSA0ODApIHx8CisgICAgICAobW9kZS0+aGRpc3BsYXkgPT0g MTAyNCAmJiBtb2RlLT52ZGlzcGxheSA9PSA3NjgpKSB7CisgICAgcmV0dXJuIE1PREVfT0s7Cisg IH0gZWxzZSB7CisgICAgcmV0dXJuIE1PREVfT05FX1NJWkU7IC8qIElzIHRoaXMgYSByZWFzb25h YmxlIGVycm9yPyAqLworICB9ICAgIAorfQorCitzdGF0aWMgdm9pZCBuczI1MDFfbW9kZV9zZXQo c3RydWN0IGludGVsX2R2b19kZXZpY2UgKmR2bywKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKKyAgc3RydWN0IG5zMjUwMV9wcml2ICpucyA9IChzdHJ1 Y3QgbnMyNTAxX3ByaXYgKikoZHZvLT5kZXZfcHJpdik7CisKKyAgRFJNX0RFQlVHX0tNUygiJXM6 IHNldCBtb2RlCihoZGlzcGxheT0lZCxodG90YWw9JWQsdmRpc3BsYXk9JWQsdnRvdGFsPSVkKS5c biIsX19GVU5DVElPTl9fLAorICAgICAgICBtb2RlLT5oZGlzcGxheSxtb2RlLT5odG90YWwsbW9k ZS0+dmRpc3BsYXksbW9kZS0+dnRvdGFsKTsKKworICAvKgorICAqKiBXaGVyZSBkbyBJIGZpbmQg dGhlIG5hdGl2ZSByZXNvbHV0aW9uIGZvciB3aGljaCBzY2FsaW5nIGlzIG5vdApyZXF1aXJlZD8/ PworICAqKgorICAqKiBGaXJzdCB0cmlnZ2VyIHRoZSBEVk8gb24gYXMgb3RoZXJ3aXNlIHRoZSBj aGlwIGRvZXMgbm90IGFwcGVhciBvbiB0aGUgaTJjCisgICoqIGJ1cy4KKyAgKi8KKyAgZW5hYmxl X2R2byhkdm8pOworCisgIGlmIChtb2RlLT5oZGlzcGxheSA9PSA4MDAgJiYgbW9kZS0+dmRpc3Bs YXkgPT0gNjAwKSB7CisgICAgLyogbW9kZSAyNzcgKi8KKyAgICBucy0+cmVnXzhfc2hhZG93ICY9 IH5OUzI1MDFfOF9CUEFTOworICAgIERSTV9ERUJVR19LTVMoIiVzOiBzd2l0Y2hpbmcgdG8gODAw eDYwMFxuIixfX0ZVTkNUSU9OX18pOworCisgICAgLyoKKyAgICAqKiBObywgSSBkbyBub3Qga25v dyB3aGVyZSB0aGlzIGRhdGEgY29tZXMgZnJvbS4KKyAgICAqKiBJdCBpcyBqdXN0IHdoYXQgdGhl IHZpZGVvIGJpb3MgbGVmdCBpbiB0aGUgRFZPLCBzbworICAgICoqIEknbSBqdXN0IGNvcHlpbmcg aXQgaGVyZSBvdmVyLgorICAgICoqIFRoaXMgYWxzbyBtZWFucyB0aGF0IEkgY2Fubm90IHN1cHBv cnQgYW55IG90aGVyIG1vZGVzCisgICAgKiogZXhjZXB0IHRoZSBvbmVzIHN1cHBvcnRlZCBieSB0 aGUgYmlvcy4KKyAgICAqLworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDExLCAweGM4KTsKKyAg ICBuczI1MDFfd3JpdGViKGR2bywgMHgxYiwgMHgxOSk7CisgICAgbnMyNTAxX3dyaXRlYihkdm8s IDB4MWMsIDB4NjQpOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDFkLCAweDAyKTsKKworICAg IG5zMjUwMV93cml0ZWIoZHZvLCAweDM0LCAweDAzKTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywg MHgzNSwgMHhmZik7CisKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHg4MCwgMHgyNyk7CisgICAg bnMyNTAxX3dyaXRlYihkdm8sIDB4ODEsIDB4MDMpOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAw eDgyLCAweDQxKTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHg4MywgMHgwNSk7CisKKyAgICBu czI1MDFfd3JpdGViKGR2bywgMHg4ZCwgMHgwMik7CisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4 OGUsIDB4MDQpOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDhmLCAweDAwKTsKKworICAgIG5z MjUwMV93cml0ZWIoZHZvLCAweDkwLCAweGZmKTsgLyogdmVydGljYWwgKi8KKyAgICBuczI1MDFf d3JpdGViKGR2bywgMHg5MSwgMHgwNyk7CisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4OTQsIDB4 MDApOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDk1LCAweDAwKTsKKworICAgIG5zMjUwMV93 cml0ZWIoZHZvLCAweDk2LCAweDAwKTsKKworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDk5LCAw eDAwKTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHg5YSwgMHg4OCk7CisKKyAgICBuczI1MDFf d3JpdGViKGR2bywgMHg5YywgMHgyMyk7CisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4OWQsIDB4 MDApOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDllLCAweDI1KTsKKyAgICBuczI1MDFfd3Jp dGViKGR2bywgMHg5ZiwgMHgwMyk7CisKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHhhNCwgMHg4 MCk7CisKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHhiNiwgMHgwMCk7CisKKyAgICBuczI1MDFf d3JpdGViKGR2bywgMHhiOSwgMHhjOCk7IC8qIGhvcml6b250YWw/ICovCisgICAgbnMyNTAxX3dy aXRlYihkdm8sIDB4YmEsIDB4MDApOyAvKiBob3Jpem9udGFsPyAqLworCisgICAgbnMyNTAxX3dy aXRlYihkdm8sIDB4YzAsIDB4MDUpOyAvKiBob3Jpem9udGFsPyAqLworICAgIG5zMjUwMV93cml0 ZWIoZHZvLCAweGMxLCAweGQ3KTsKKworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweGMyLCAweDAw KTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHhjMywgMHhmOCk7CisKKyAgICBuczI1MDFfd3Jp dGViKGR2bywgMHhjNCwgMHgwMyk7CisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4YzUsIDB4MWEp OworCisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4YzYsIDB4MDApOworICAgIG5zMjUwMV93cml0 ZWIoZHZvLCAweGM3LCAweDczKTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHhjOCwgMHgwMik7 CisKKyAgfSBlbHNlIGlmIChtb2RlLT5oZGlzcGxheSA9PSA2NDAgJiYgbW9kZS0+dmRpc3BsYXkg PT0gNDgwKSB7CisgICAgLyogbW9kZSAyNzQgKi8KKyAgICBEUk1fREVCVUdfS01TKCIlczogc3dp dGNoaW5nIHRvIDY0MHg0ODBcbiIsX19GVU5DVElPTl9fKTsKKyAgICAvKgorICAgICoqIE5vLCBJ IGRvIG5vdCBrbm93IHdoZXJlIHRoaXMgZGF0YSBjb21lcyBmcm9tLgorICAgICoqIEl0IGlzIGp1 c3Qgd2hhdCB0aGUgdmlkZW8gYmlvcyBsZWZ0IGluIHRoZSBEVk8sIHNvCisgICAgKiogSSdtIGp1 c3QgY29weWluZyBpdCBoZXJlIG92ZXIuCisgICAgKiogVGhpcyBhbHNvIG1lYW5zIHRoYXQgSSBj YW5ub3Qgc3VwcG9ydCBhbnkgb3RoZXIgbW9kZXMKKyAgICAqKiBleGNlcHQgdGhlIG9uZXMgc3Vw cG9ydGVkIGJ5IHRoZSBiaW9zLgorICAgICovCisgICAgbnMtPnJlZ184X3NoYWRvdyAmPSB+TlMy NTAxXzhfQlBBUzsgICAKKworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDExLCAweGEwKTsKKyAg ICBuczI1MDFfd3JpdGViKGR2bywgMHgxYiwgMHgxMSk7CisgICAgbnMyNTAxX3dyaXRlYihkdm8s IDB4MWMsIDB4NTQpOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDFkLCAweDAzKTsKKworICAg IG5zMjUwMV93cml0ZWIoZHZvLCAweDM0LCAweDAzKTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywg MHgzNSwgMHhmZik7CisKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHg4MCwgMHhmZik7CisgICAg bnMyNTAxX3dyaXRlYihkdm8sIDB4ODEsIDB4MDcpOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAw eDgyLCAweDNkKTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHg4MywgMHgwNSk7CisKKyAgICBu czI1MDFfd3JpdGViKGR2bywgMHg4ZCwgMHgwMik7CisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4 OGUsIDB4MTApOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDhmLCAweDAwKTsKKworICAgIG5z MjUwMV93cml0ZWIoZHZvLCAweDkwLCAweGZmKTsgLyogdmVydGljYWwgKi8KKyAgICBuczI1MDFf d3JpdGViKGR2bywgMHg5MSwgMHgwNyk7CisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4OTQsIDB4 MDApOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDk1LCAweDAwKTsKKworICAgIG5zMjUwMV93 cml0ZWIoZHZvLCAweDk2LCAweDA1KTsKKworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDk5LCAw eDAwKTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHg5YSwgMHg4OCk7CisKKyAgICBuczI1MDFf d3JpdGViKGR2bywgMHg5YywgMHgyNCk7CisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4OWQsIDB4 MDApOworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweDllLCAweDI1KTsKKyAgICBuczI1MDFfd3Jp dGViKGR2bywgMHg5ZiwgMHgwMyk7CisKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHhhNCwgMHg4 NCk7CisKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHhiNiwgMHgwOSk7CisKKyAgICBuczI1MDFf d3JpdGViKGR2bywgMHhiOSwgMHhhMCk7IC8qIGhvcml6b250YWw/ICovCisgICAgbnMyNTAxX3dy aXRlYihkdm8sIDB4YmEsIDB4MDApOyAvKiBob3Jpem9udGFsPyAqLworCisgICAgbnMyNTAxX3dy aXRlYihkdm8sIDB4YzAsIDB4MDUpOyAvKiBob3Jpem9udGFsPyAqLworICAgIG5zMjUwMV93cml0 ZWIoZHZvLCAweGMxLCAweDkwKTsKKworICAgIG5zMjUwMV93cml0ZWIoZHZvLCAweGMyLCAweDAw KTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHhjMywgMHgwZik7CisKKyAgICBuczI1MDFfd3Jp dGViKGR2bywgMHhjNCwgMHgwMyk7CisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4YzUsIDB4MTYp OworCisgICAgbnMyNTAxX3dyaXRlYihkdm8sIDB4YzYsIDB4MDApOworICAgIG5zMjUwMV93cml0 ZWIoZHZvLCAweGM3LCAweDAyKTsKKyAgICBuczI1MDFfd3JpdGViKGR2bywgMHhjOCwgMHgwMik7 CisKKyAgfSBlbHNlIGlmIChtb2RlLT5oZGlzcGxheSA9PSAxMDI0ICYmIG1vZGUtPnZkaXNwbGF5 ID09IDc2OCkgeworICAgIC8qIG1vZGUgMjgwICovIAorICAgIERSTV9ERUJVR19LTVMoIiVzOiBz d2l0Y2hpbmcgdG8gMTAyNHg3NjhcbiIsX19GVU5DVElPTl9fKTsKKyAgICAvKgorICAgICoqIFRo aXMgbWlnaHQgb3IgbWlnaHQgbm90IHdvcmssIGFjdHVhbGx5LiBJJ20gc2lsZW50bHkKKyAgICAq KiBhc3N1bWluZyBoZXJlIHRoYXQgdGhlIG5hdGl2ZSBwYW5lbCByZXNvbHV0aW9uIGlzCisgICAg KiogMTAyNHg3NjguIElmIG5vdCwgdGhlbiB0aGlzIGxlYXZlcyB0aGUgc2NhbGVyIGRpc2FibGVk CisgICAgKiogZ2VuZXJhdGluZyBhIHBpY3R1cmUgdGhhdCBpcyBsaWtlbHkgbm90IHRoZSBleHBl Y3RlZC4KKyAgICAqKgorICAgICoqIFByb2JsZW0gaXMgdGhhdCBJIGRvIG5vdCBrbm93IHdoZXJl IHRvIHRha2UgdGhlIHBhbmVsCisgICAgKiogZGltZW5zaW9ucyBmcm9tLgorICAgICoqCisgICAg KiogRW5hYmxlIHRoZSBieXBhc3MsIHNjYWxpbmcgbm90IHJlcXVpcmVkLiAKKyAgICAqKgorICAg ICoqIFRoZSBzY2FsZXIgcmVnaXN0ZXJzIGFyZSBpcnJlbGV2YW50IGhlcmUuLi4uCisgICAgKioK KyAgICAqLworICAgIG5zLT5yZWdfOF9zaGFkb3cgfD0gTlMyNTAxXzhfQlBBUzsKKyAgICBuczI1 MDFfd3JpdGViKGR2bywgMHgzNywgMHg0NCk7CisgIH0gZWxzZSB7CisgICAgLyogRGF0YSBub3Qg a25vd24uIEJ1bW1lciEgCisgICAgKiogSG9wZWZ1bGx5LCB0aGUgY29kZSBzaG91bGQgbm90IGdv IGhlcmUKKyAgICAqKiBhcyBtb2RlX09LIGRlbGl2ZXJlZCBubyBvdGhlciBtb2Rlcy4KKyAgICAq LworICAgIG5zLT5yZWdfOF9zaGFkb3cgfD0gTlMyNTAxXzhfQlBBUzsKKyAgfQorICBuczI1MDFf d3JpdGViKGR2bywgTlMyNTAxX1JFRzgsIG5zLT5yZWdfOF9zaGFkb3cpOyAKKworICAvKgorICAq KiBSZXN0b3JlIHRoZSBvbGQgaTkxNSByZWdpc3RlcnMgYmVmb3JlCisgICoqIGZvcmNpbmcgdGhl IG5zMjUwMSBvbi4KKyAgKi8KKyAgcmVzdG9yZV9kdm8oZHZvKTsKK30KKworLyogc2V0IHRoZSBO UzI1MDEgcG93ZXIgc3RhdGUgKi8KK3N0YXRpYyB2b2lkIG5zMjUwMV9kcG1zKHN0cnVjdCBpbnRl bF9kdm9fZGV2aWNlICpkdm8sIGludCBtb2RlKQoreworICBzdHJ1Y3QgbnMyNTAxX3ByaXYgKm5z ID0gKHN0cnVjdCBuczI1MDFfcHJpdiAqKShkdm8tPmRldl9wcml2KTsKKyAgdW5zaWduZWQgY2hh ciBjaDsKKworICBEUk1fREVCVUdfS01TKCIlczogVHJ5aW5nIHNldCB0aGUgZHBtcyBvZiB0aGUg RFZPIHRvCiVkXG4iLF9fRlVOQ1RJT05fXyxtb2RlKTsKKworICBjaCA9IG5zLT5yZWdfOF9zaGFk b3c7CisgIAorICBpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQorICAgIGNoIHw9IE5TMjUw MV84X1BEOworICBlbHNlCisgICAgY2ggJj0gfk5TMjUwMV84X1BEOworCisgIGlmIChucy0+cmVn Xzhfc2V0ID09IDAgfHwgbnMtPnJlZ184X3NoYWRvdyAhPSBjaCkgeworICAgIG5zLT5yZWdfOF9z ZXQgICAgPSAxOworICAgIG5zLT5yZWdfOF9zaGFkb3cgPSBjaDsKKyAgICBuczI1MDFfd3JpdGVi KGR2bywgTlMyNTAxX1JFRzgsIGNoKTsKKyAgfQorICAvKgorICAqKiBOb3RlIHRoYXQgdGhpcyBt YXkgYWN0dWFsbHkgZmFpbCxuYW1lbHkgZXhhY3RseQorICAqKiB3aGVuIHRoZSBjaGlwIHZhbmlz aGVkIGZyb20gdGhlIGJ1cy4KKyAgKioKKyAgKiogU2hvdWxkIEkgZm9yY2UtZW5hYmxlIGl0IGhl cmU/PworICAqLworfQorCitzdGF0aWMgdm9pZCBuczI1MDFfZHVtcF9yZWdzKHN0cnVjdCBpbnRl bF9kdm9fZGV2aWNlICpkdm8pCit7CisgIHVpbnQ4X3QgdmFsOworCisgIG5zMjUwMV9yZWFkYihk dm8sIE5TMjUwMV9GUkVRX0xPLCAmdmFsKTsKKyAgRFJNX0xPR19LTVMoIk5TMjUwMV9GUkVRX0xP OiAweCUwMnhcbiIsIHZhbCk7CisgIG5zMjUwMV9yZWFkYihkdm8sIE5TMjUwMV9GUkVRX0hJLCAm dmFsKTsKKyAgRFJNX0xPR19LTVMoIk5TMjUwMV9GUkVRX0hJOiAweCUwMnhcbiIsIHZhbCk7Cisg IG5zMjUwMV9yZWFkYihkdm8sIE5TMjUwMV9SRUc4LCAmdmFsKTsKKyAgRFJNX0xPR19LTVMoIk5T MjUwMV9SRUc4OiAweCUwMnhcbiIsIHZhbCk7CisgIG5zMjUwMV9yZWFkYihkdm8sIE5TMjUwMV9S RUc5LCAmdmFsKTsKKyAgRFJNX0xPR19LTVMoIk5TMjUwMV9SRUc5OiAweCUwMnhcbiIsIHZhbCk7 CisgIG5zMjUwMV9yZWFkYihkdm8sIE5TMjUwMV9SRUdDLCAmdmFsKTsKKyAgRFJNX0xPR19LTVMo Ik5TMjUwMV9SRUdDOiAweCUwMnhcbiIsIHZhbCk7Cit9CisKK3N0YXRpYyB2b2lkIG5zMjUwMV9k ZXN0cm95KHN0cnVjdCBpbnRlbF9kdm9fZGV2aWNlICpkdm8pCit7CisgIHN0cnVjdCBuczI1MDFf cHJpdiAqbnMgPSBkdm8tPmRldl9wcml2OworCisgIGlmIChucykgeworICAgIGtmcmVlKG5zKTsK KyAgICBkdm8tPmRldl9wcml2ID0gTlVMTDsKKyAgfQorfQorCitzdHJ1Y3QgaW50ZWxfZHZvX2Rl dl9vcHMgbnMyNTAxX29wcyA9IHsKKyAgLmluaXQgPSBuczI1MDFfaW5pdCwKKyAgLmRldGVjdCA9 IG5zMjUwMV9kZXRlY3QsCisgIC5tb2RlX3ZhbGlkID0gbnMyNTAxX21vZGVfdmFsaWQsCisgIC5t b2RlX3NldCA9IG5zMjUwMV9tb2RlX3NldCwKKyAgLmRwbXMgPSBuczI1MDFfZHBtcywKKyAgLmR1 bXBfcmVncyA9IG5zMjUwMV9kdW1wX3JlZ3MsCisgIC5kZXN0cm95ID0gbnMyNTAxX2Rlc3Ryb3ks Cit9OwoKZGlmZiAtcnVwIGxpbnV4LTMuNC4xLW9yaWcvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCmxpbnV4LTMuNC4xL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwotLS0gbGludXgtMy40LjEtb3JpZy9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgICAgMjAxMi0wNi0wMQowOToxODo0NC4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTMu NC4xL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAyMDEyLTA2LTA4CjE2 OjU1OjIwLjAwMDAwMDAwMCArMDIwMApAQCAtMTE0Miw3ICsxMTQyLDcgQEAgc3RhdGljIHZvaWQg YXNzZXJ0X3BjaF9wb3J0c19kaXNhYmxlZChzdAogICoKICAqIE5vdGUhICBUaGlzIGlzIGZvciBw cmUtSUxLIG9ubHkuCiAgKi8KLXN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9wbGwoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUKcGlwZSkKK3ZvaWQgaW50ZWxfZW5h YmxlX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBl KQogewogICAgIGludCByZWc7CiAgICAgdTMyIHZhbDsKCmRpZmYgLXJ1cCBsaW51eC0zLjQuMS1v cmlnL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jCmxpbnV4LTMuNC4xL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2R2by5jCi0tLSBsaW51eC0zLjQuMS1vcmlnL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2R2by5jICAgIDIwMTItMDYtMDEKMDk6MTg6NDQuMDAwMDAwMDAwICsw MjAwCisrKyBsaW51eC0zLjQuMS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYyAgICAy MDEyLTA2LTA4CjEyOjUwOjE2LjAwMDAwMDAwMCArMDIwMApAQCAtMzcsNiArMzcsNyBAQAogI2Rl ZmluZSBTSUwxNjRfQUREUiAgICAweDM4CiAjZGVmaW5lIENIN3h4eF9BRERSICAgIDB4NzYKICNk ZWZpbmUgVEZQNDEwX0FERFIgICAgMHgzOAorI2RlZmluZSBOUzI1MDFfQUREUiAgICAgMHgzOAoK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZHZvX2RldmljZSBpbnRlbF9kdm9fZGV2aWNlc1td ID0gewogICAgIHsKQEAgLTYxLDYgKzYyLDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxf ZHZvX2RldmljZSBpbnQKICAgICAgICAgLmRldl9vcHMgPSAmaXZjaF9vcHMsCiAgICAgfSwKICAg ICB7CisgICAgICAgICAgICAudHlwZSA9IElOVEVMX0RWT19DSElQX1RNRFMsCisgICAgICAgICAg ICAubmFtZSA9ICJuczI1MDEiLAorICAgICAgICAgICAgLmR2b19yZWcgPSBEVk9DLAorICAgICAg ICAgICAgLnNsYXZlX2FkZHIgPSBOUzI1MDFfQUREUiwKKyAgICAgICAgICAgIC5kZXZfb3BzID0g Jm5zMjUwMV9vcHMsCisgICAgfSwKKyAgICB7CiAgICAgICAgIC50eXBlID0gSU5URUxfRFZPX0NI SVBfVE1EUywKICAgICAgICAgLm5hbWUgPSAidGZwNDEwIiwKICAgICAgICAgLmR2b19yZWcgPSBE Vk9DLAoKZGlmZiAtcnVwIGxpbnV4LTMuNC4xLW9yaWcvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKbGludXgtMy40LjEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKLS0tIGxpbnV4 LTMuNC4xLW9yaWcvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgMjAxMi0wNi0wMQow OToxODo0NC4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTMuNC4xL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlICAgIDIwMTItMDYtMDggMTI6NTA6NTQuMDAwMDAwMDAwCiswMjAwCkBAIC0z NCw3ICszNCw4IEBAIGk5MTUteSA6PSBpOTE1X2Rydi5vIGk5MTVfZG1hLm8gaTkxNV9pcnEKICAg ICAgIGR2b19jaDcwMTcubyBcCiAgICAgICBkdm9faXZjaC5vIFwKICAgICAgIGR2b190ZnA0MTAu byBcCi0gICAgICBkdm9fc2lsMTY0Lm8KKyAgICAgIGR2b19zaWwxNjQubyBcCisgICAgICBkdm9f bnMyNTAxLm8KCiBpOTE1LSQoQ09ORklHX0NPTVBBVCkgICArPSBpOTE1X2lvYzMyLm8KCi0tIApD b25maWd1cmUgYnVnbWFpbDogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy91c2VycHJlZnMu Y2dpP3RhYj1lbWFpbAotLS0tLS0tIFlvdSBhcmUgcmVjZWl2aW5nIHRoaXMgbWFpbCBiZWNhdXNl OiAtLS0tLS0tCllvdSBhcmUgdGhlIGFzc2lnbmVlIGZvciB0aGUgYnVnLgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=