From owner-freebsd-bugs@FreeBSD.ORG Sat Feb 21 02:00:33 2004 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0749616A4CE for ; Sat, 21 Feb 2004 02:00:33 -0800 (PST) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id C628943D2F for ; Sat, 21 Feb 2004 02:00:32 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) i1LA0Wbv048255 for ; Sat, 21 Feb 2004 02:00:32 -0800 (PST) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.10/8.12.10/Submit) id i1LA0WS2048254; Sat, 21 Feb 2004 02:00:32 -0800 (PST) (envelope-from gnats) Date: Sat, 21 Feb 2004 02:00:32 -0800 (PST) Message-Id: <200402211000.i1LA0WS2048254@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Autrijus Tang Subject: Re: misc/61388: pcm stopped working on an ASUS M2400N Notebook since 5.2R X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Autrijus Tang List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Feb 2004 10:00:33 -0000 The following reply was made to PR misc/61388; it has been noted by GNATS. From: Autrijus Tang To: freebsd-gnats-submit@FreeBSD.org, chris@chrisburkert.de Cc: Subject: Re: misc/61388: pcm stopped working on an ASUS M2400N Notebook since 5.2R Date: Sat, 21 Feb 2004 17:56:39 +0800 --=-+CKWb9/jYc1yQ/QwNSDS Content-Type: multipart/mixed; boundary="=-WQzw3kOuYDteIwK0dqiY" --=-WQzw3kOuYDteIwK0dqiY Content-Type: text/plain Content-Transfer-Encoding: quoted-printable I'm also a M2400N user, and after waiting for quite a while without anything happening, I decide to give the 5.1-RELEASE ich.c code a try.=20 After two small chunks of patch, it actually works just fine with -CURRENT. So I'm happily listening to my .ogg files now. :-) Attached is the patched /usr/src/sys/dev/sound/pci/ich.c for review.=20 Looking at the diff between the two versions, I notice that the -CURRENT version lacks a block of code, just before pci_enable_busmaster(dev); : + if (pci_get_devid(dev) =3D=3D ICH4ID) { + pci_write_config(dev, PCIR_ICH_LEGACY, ICH_LEGACY_ENABLE, 1); + } I suspect this is the key to get it to work, but has not confirmed it yet. Thanks, /Autrijus/ --=-WQzw3kOuYDteIwK0dqiY Content-Disposition: attachment; filename=ich.c Content-Transfer-Encoding: base64 Content-Type: text/x-c; name=ich.c; charset=UTF-8 LyoNCiAqIENvcHlyaWdodCAoYykgMjAwMCBLYXRzdXJhamltYSBOYW90byA8cmF2ZW5Aa2F0c3Vy YWppbWEuc2V5YS55b2tvaGFtYS5qcD4NCiAqIENvcHlyaWdodCAoYykgMjAwMSBDYW1lcm9uIEdy YW50IDxjZ0BmcmVlYnNkLm9yZz4NCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0DQogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMNCiAqIGFyZSBtZXQ6DQogKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy Lg0KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCiAqICAgIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQog Kg0KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC VVRPUlMgYGBBUyBJUycnIEFORA0KICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQogKiBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RQ0KICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENP TlRSSUJVVE9SUyBCRSBMSUFCTEUNCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQogKiBEQU1BR0VTIChJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUw0KICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC VVNJTkVTUyBJTlRFUlJVUFRJT04pDQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S WSBPRiBMSUFCSUxJVFksIFdIRVRIRVJJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB TlkgV0FZDQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQgT0YgVEhFUE9TU0lCSUxJVFkgT0YNCiAqIFNVQ0ggREFNQUdFLg0KICovDQoNCiNpbmNsdWRl IDxkZXYvc291bmQvcGNtL3NvdW5kLmg+DQojaW5jbHVkZSA8ZGV2L3NvdW5kL3BjbS9hYzk3Lmg+ DQojaW5jbHVkZSA8ZGV2L3NvdW5kL3BjaS9pY2guaD4NCg0KI2luY2x1ZGUgPGRldi9wY2kvcGNp cmVnLmg+DQojaW5jbHVkZSA8ZGV2L3BjaS9wY2l2YXIuaD4NCg0KU05EX0RFQ0xBUkVfRklMRSgi JEZyZWVCU0Q6IHNyYy9zeXMvZGV2L3NvdW5kL3BjaS9pY2guYyx2IDEuMzcgMjAwMy8wOS8xNSAy MToxNjo0NyBuamwgRXhwICQiKTsNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KI2RlZmluZSBJQ0hf VElNRU9VVCAxMDAwIC8qIHNlbWFwaG9yZSB0aW1lb3V0IHBvbGxpbmcgY291bnQgKi8NCiNkZWZp bmUgSUNIX0RUQkxfTEVOR1RIIDMyDQojZGVmaW5lIElDSF9ERUZBVUxUX0JVRlNaIDE2Mzg0DQoj ZGVmaW5lIElDSF9NQVhfQlVGU1ogNjU1MzYNCg0KI2RlZmluZSBTSVM3MDEySUQgICAgICAgMHg3 MDEyMTAzOSAgICAgIC8qIFNpUyA3MDEyIG5lZWRzIHNwZWNpYWwgaGFuZGxpbmcgKi8NCiNkZWZp bmUgSUNINElECQkweDI0YzU4MDg2CS8qIElDSDQgbmVlZHMgc3BlY2lhbCBoYW5kbGluZyB0b28g Ki8NCg0KLyogYnVmZmVyIGRlc2NyaXB0b3IgKi8NCnN0cnVjdCBpY2hfZGVzYyB7DQoJdm9sYXRp bGUgdV9pbnQzMl90IGJ1ZmZlcjsNCgl2b2xhdGlsZSB1X2ludDMyX3QgbGVuZ3RoOw0KfTsNCg0K c3RydWN0IHNjX2luZm87DQoNCi8qIGNoYW5uZWwgcmVnaXN0ZXJzICovDQpzdHJ1Y3Qgc2NfY2hp bmZvIHsNCgl1X2ludDMyX3QgbnVtOjgsIHJ1bjoxLCBydW5fc2F2ZToxOw0KCXVfaW50MzJfdCBi bGtzeiwgYmxrY250LCBzcGQ7DQoJdV9pbnQzMl90IHJlZ2Jhc2UsIHNwZHJlZzsNCgl1X2ludDMy X3QgaW1hc2s7DQoJdV9pbnQzMl90IGNpdjsNCg0KCXN0cnVjdCBzbmRfZGJ1ZiAqYnVmZmVyOw0K CXN0cnVjdCBwY21fY2hhbm5lbCAqY2hhbm5lbDsNCglzdHJ1Y3Qgc2NfaW5mbyAqcGFyZW50Ow0K DQoJc3RydWN0IGljaF9kZXNjICpkdGJsOw0KCWJ1c19hZGRyX3QgZGVzY19hZGRyOw0KfTsNCg0K LyogZGV2aWNlIHByaXZhdGUgZGF0YSAqLw0Kc3RydWN0IHNjX2luZm8gew0KCWRldmljZV90IGRl djsNCglpbnQgaGFzdnJhLCBoYXN2cm0sIGhhc21pYzsNCgl1bnNpZ25lZCBpbnQgY2hudW0sIGJ1 ZnN6Ow0KCWludCBzYW1wbGVfc2l6ZSwgc3dhcF9yZWc7DQoNCglzdHJ1Y3QgcmVzb3VyY2UgKm5h bWJhciwgKm5hYm1iYXIsICppcnE7DQoJaW50IG5hbWJhcmlkLCBuYWJtYmFyaWQsIGlycWlkOw0K CWJ1c19zcGFjZV90YWdfdCBuYW1iYXJ0LCBuYWJtYmFydDsNCglidXNfc3BhY2VfaGFuZGxlX3Qg bmFtYmFyaCwgbmFibWJhcmg7DQoJYnVzX2RtYV90YWdfdCBkbWF0Ow0KCWJ1c19kbWFtYXBfdCBk dG1hcDsNCgl2b2lkICppaDsNCg0KCXN0cnVjdCBhYzk3X2luZm8gKmNvZGVjOw0KCXN0cnVjdCBz Y19jaGluZm8gY2hbM107DQoJaW50IGFjOTdyYXRlOw0KCXN0cnVjdCBpY2hfZGVzYyAqZHRibDsN CglidXNfYWRkcl90IGRlc2NfYWRkcjsNCglzdHJ1Y3QgaW50cl9jb25maWdfaG9vawlpbnRyaG9v azsNCglpbnQgdXNlX2ludHJob29rOw0KfTsNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0Kc3RhdGlj IHVfaW50MzJfdCBpY2hfZm10W10gPSB7DQoJQUZNVF9TVEVSRU8gfCBBRk1UX1MxNl9MRSwNCgkw DQp9Ow0Kc3RhdGljIHN0cnVjdCBwY21jaGFuX2NhcHMgaWNoX3ZyY2FwcyA9IHs4MDAwLCA0ODAw MCwgaWNoX2ZtdCwgMH07DQpzdGF0aWMgc3RydWN0IHBjbWNoYW5fY2FwcyBpY2hfY2FwcyA9IHs0 ODAwMCwgNDgwMDAsIGljaF9mbXQsIDB9Ow0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogSGFyZHdh cmUgKi8NCnN0YXRpYyB1X2ludDMyX3QNCmljaF9yZChzdHJ1Y3Qgc2NfaW5mbyAqc2MsIGludCBy ZWdubywgaW50IHNpemUpDQp7DQoJc3dpdGNoIChzaXplKSB7DQoJY2FzZSAxOg0KCQlyZXR1cm4g YnVzX3NwYWNlX3JlYWRfMShzYy0+bmFibWJhcnQsIHNjLT5uYWJtYmFyaCwgcmVnbm8pOw0KCWNh c2UgMjoNCgkJcmV0dXJuIGJ1c19zcGFjZV9yZWFkXzIoc2MtPm5hYm1iYXJ0LCBzYy0+bmFibWJh cmgsIHJlZ25vKTsNCgljYXNlIDQ6DQoJCXJldHVybiBidXNfc3BhY2VfcmVhZF80KHNjLT5uYWJt YmFydCwgc2MtPm5hYm1iYXJoLCByZWdubyk7DQoJZGVmYXVsdDoNCgkJcmV0dXJuIDB4ZmZmZmZm ZmY7DQoJfQ0KfQ0KDQpzdGF0aWMgdm9pZA0KaWNoX3dyKHN0cnVjdCBzY19pbmZvICpzYywgaW50 IHJlZ25vLCB1X2ludDMyX3QgZGF0YSwgaW50IHNpemUpDQp7DQoJc3dpdGNoIChzaXplKSB7DQoJ Y2FzZSAxOg0KCQlidXNfc3BhY2Vfd3JpdGVfMShzYy0+bmFibWJhcnQsIHNjLT5uYWJtYmFyaCwg cmVnbm8sIGRhdGEpOw0KCQlicmVhazsNCgljYXNlIDI6DQoJCWJ1c19zcGFjZV93cml0ZV8yKHNj LT5uYWJtYmFydCwgc2MtPm5hYm1iYXJoLCByZWdubywgZGF0YSk7DQoJCWJyZWFrOw0KCWNhc2Ug NDoNCgkJYnVzX3NwYWNlX3dyaXRlXzQoc2MtPm5hYm1iYXJ0LCBzYy0+bmFibWJhcmgsIHJlZ25v LCBkYXRhKTsNCgkJYnJlYWs7DQoJfQ0KfQ0KDQovKiBhYzk3IGNvZGVjICovDQpzdGF0aWMgaW50 DQppY2hfd2FpdGNkKHZvaWQgKmRldmluZm8pDQp7DQoJaW50IGk7DQoJdV9pbnQzMl90IGRhdGE7 DQoJc3RydWN0IHNjX2luZm8gKnNjID0gKHN0cnVjdCBzY19pbmZvICopZGV2aW5mbzsNCg0KCWZv ciAoaSA9IDA7IGkgPCBJQ0hfVElNRU9VVDsgaSsrKSB7DQoJCWRhdGEgPSBpY2hfcmQoc2MsIElD SF9SRUdfQUNDX1NFTUEsIDEpOw0KCQlpZiAoKGRhdGEgJiAweDAxKSA9PSAwKQ0KCQkJcmV0dXJu IDA7DQoJfQ0KCWRldmljZV9wcmludGYoc2MtPmRldiwgIkNPREVDIHNlbWFwaG9yZSB0aW1lb3V0 XG4iKTsNCglyZXR1cm4gRVRJTUVET1VUOw0KfQ0KDQpzdGF0aWMgaW50DQppY2hfcmRjZChrb2Jq X3Qgb2JqLCB2b2lkICpkZXZpbmZvLCBpbnQgcmVnbm8pDQp7DQoJc3RydWN0IHNjX2luZm8gKnNj ID0gKHN0cnVjdCBzY19pbmZvICopZGV2aW5mbzsNCg0KCXJlZ25vICY9IDB4ZmY7DQoJaWNoX3dh aXRjZChzYyk7DQoNCglyZXR1cm4gYnVzX3NwYWNlX3JlYWRfMihzYy0+bmFtYmFydCwgc2MtPm5h bWJhcmgsIHJlZ25vKTsNCn0NCg0Kc3RhdGljIGludA0KaWNoX3dyY2Qoa29ial90IG9iaiwgdm9p ZCAqZGV2aW5mbywgaW50IHJlZ25vLCB1X2ludDE2X3QgZGF0YSkNCnsNCglzdHJ1Y3Qgc2NfaW5m byAqc2MgPSAoc3RydWN0IHNjX2luZm8gKilkZXZpbmZvOw0KDQoJcmVnbm8gJj0gMHhmZjsNCglp Y2hfd2FpdGNkKHNjKTsNCglidXNfc3BhY2Vfd3JpdGVfMihzYy0+bmFtYmFydCwgc2MtPm5hbWJh cmgsIHJlZ25vLCBkYXRhKTsNCg0KCXJldHVybiAwOw0KfQ0KDQpzdGF0aWMga29ial9tZXRob2Rf dCBpY2hfYWM5N19tZXRob2RzW10gPSB7DQoJS09CSk1FVEhPRChhYzk3X3JlYWQsCQlpY2hfcmRj ZCksDQoJS09CSk1FVEhPRChhYzk3X3dyaXRlLAkJaWNoX3dyY2QpLA0KCXsgMCwgMCB9DQp9Ow0K QUM5N19ERUNMQVJFKGljaF9hYzk3KTsNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi8qIGNvbW1vbiBy b3V0aW5lcyAqLw0KDQpzdGF0aWMgdm9pZA0KaWNoX2ZpbGxkdGJsKHN0cnVjdCBzY19jaGluZm8g KmNoKQ0Kew0KCXVfaW50MzJfdCBiYXNlOw0KCWludCBpOw0KDQoJYmFzZSA9IHNuZGJ1Zl9nZXRi dWZhZGRyKGNoLT5idWZmZXIpOw0KCWNoLT5ibGtjbnQgPSBzbmRidWZfZ2V0c2l6ZShjaC0+YnVm ZmVyKSAvIGNoLT5ibGtzejsNCglpZiAoY2gtPmJsa2NudCAhPSAyICYmIGNoLT5ibGtjbnQgIT0g NCAmJiBjaC0+YmxrY250ICE9IDggJiYgY2gtPmJsa2NudCAhPSAxNiAmJiBjaC0+YmxrY250ICE9 IDMyKSB7DQoJCWNoLT5ibGtjbnQgPSAyOw0KCQljaC0+Ymxrc3ogPSBzbmRidWZfZ2V0c2l6ZShj aC0+YnVmZmVyKSAvIGNoLT5ibGtjbnQ7DQoJfQ0KDQoJZm9yIChpID0gMDsgaSA8IElDSF9EVEJM X0xFTkdUSDsgaSsrKSB7DQoJCWNoLT5kdGJsW2ldLmJ1ZmZlciA9IGJhc2UgKyAoY2gtPmJsa3N6 ICogKGkgJSBjaC0+YmxrY250KSk7DQoJCWNoLT5kdGJsW2ldLmxlbmd0aCA9IElDSF9CRENfSU9D DQoJCQkJICAgfCAoY2gtPmJsa3N6IC8gY2gtPnBhcmVudC0+c2FtcGxlX3NpemUpOw0KCX0NCn0N Cg0Kc3RhdGljIGludA0KaWNoX3Jlc2V0Y2hhbihzdHJ1Y3Qgc2NfaW5mbyAqc2MsIGludCBudW0p DQp7DQoJaW50IGksIGNyLCByZWdiYXNlOw0KDQoJaWYgKG51bSA9PSAwKQ0KCQlyZWdiYXNlID0g SUNIX1JFR19QT19CQVNFOw0KCWVsc2UgaWYgKG51bSA9PSAxKQ0KCQlyZWdiYXNlID0gSUNIX1JF R19QSV9CQVNFOw0KCWVsc2UgaWYgKG51bSA9PSAyKQ0KCQlyZWdiYXNlID0gSUNIX1JFR19NQ19C QVNFOw0KCWVsc2UNCgkJcmV0dXJuIEVOWElPOw0KDQoJaWNoX3dyKHNjLCByZWdiYXNlICsgSUNI X1JFR19YX0NSLCAwLCAxKTsNCglERUxBWSgxMDApOw0KCWljaF93cihzYywgcmVnYmFzZSArIElD SF9SRUdfWF9DUiwgSUNIX1hfQ1JfUlIsIDEpOw0KCWZvciAoaSA9IDA7IGkgPCBJQ0hfVElNRU9V VDsgaSsrKSB7DQoJCWNyID0gaWNoX3JkKHNjLCByZWdiYXNlICsgSUNIX1JFR19YX0NSLCAxKTsN CgkJaWYgKGNyID09IDApDQoJCQlyZXR1cm4gMDsNCgl9DQoNCglkZXZpY2VfcHJpbnRmKHNjLT5k ZXYsICJjYW5ub3QgcmVzZXQgY2hhbm5lbCAlZFxuIiwgbnVtKTsNCglyZXR1cm4gRU5YSU87DQp9 DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICovDQovKiBjaGFubmVsIGludGVyZmFjZSAqLw0KDQpzdGF0aWMg dm9pZCAqDQppY2hjaGFuX2luaXQoa29ial90IG9iaiwgdm9pZCAqZGV2aW5mbywgc3RydWN0IHNu ZF9kYnVmICpiLCBzdHJ1Y3QgcGNtX2NoYW5uZWwgKmMsIGludCBkaXIpDQp7DQoJc3RydWN0IHNj X2luZm8gKnNjID0gZGV2aW5mbzsNCglzdHJ1Y3Qgc2NfY2hpbmZvICpjaDsNCgl1bnNpZ25lZCBp bnQgbnVtOw0KDQoJbnVtID0gc2MtPmNobnVtKys7DQoJY2ggPSAmc2MtPmNoW251bV07DQoJY2gt Pm51bSA9IG51bTsNCgljaC0+YnVmZmVyID0gYjsNCgljaC0+Y2hhbm5lbCA9IGM7DQoJY2gtPnBh cmVudCA9IHNjOw0KCWNoLT5ydW4gPSAwOw0KCWNoLT5kdGJsID0gc2MtPmR0YmwgKyAoY2gtPm51 bSAqIElDSF9EVEJMX0xFTkdUSCk7DQoJY2gtPmRlc2NfYWRkciA9IHNjLT5kZXNjX2FkZHIgKyAo Y2gtPm51bSAqIElDSF9EVEJMX0xFTkdUSCkgKiANCgkJc2l6ZW9mKHN0cnVjdCBpY2hfZGVzYyk7 DQoJY2gtPmJsa2NudCA9IDI7DQoJY2gtPmJsa3N6ID0gc2MtPmJ1ZnN6IC8gY2gtPmJsa2NudDsN Cg0KCXN3aXRjaChjaC0+bnVtKSB7DQoJY2FzZSAwOiAvKiBwbGF5ICovDQoJCUtBU1NFUlQoZGly ID09IFBDTURJUl9QTEFZLCAoIndyb25nIGRpcmVjdGlvbiIpKTsNCgkJY2gtPnJlZ2Jhc2UgPSBJ Q0hfUkVHX1BPX0JBU0U7DQoJCWNoLT5zcGRyZWcgPSBzYy0+aGFzdnJhPyBBQzk3X1JFR0VYVF9G REFDUkFURSA6IDA7DQoJCWNoLT5pbWFzayA9IElDSF9HTE9CX1NUQV9QT0lOVDsNCgkJYnJlYWs7 DQoNCgljYXNlIDE6IC8qIHJlY29yZCAqLw0KCQlLQVNTRVJUKGRpciA9PSBQQ01ESVJfUkVDLCAo Indyb25nIGRpcmVjdGlvbiIpKTsNCgkJY2gtPnJlZ2Jhc2UgPSBJQ0hfUkVHX1BJX0JBU0U7DQoJ CWNoLT5zcGRyZWcgPSBzYy0+aGFzdnJhPyBBQzk3X1JFR0VYVF9MQURDUkFURSA6IDA7DQoJCWNo LT5pbWFzayA9IElDSF9HTE9CX1NUQV9QSUlOVDsNCgkJYnJlYWs7DQoNCgljYXNlIDI6IC8qIG1p YyAqLw0KCQlLQVNTRVJUKGRpciA9PSBQQ01ESVJfUkVDLCAoIndyb25nIGRpcmVjdGlvbiIpKTsN CgkJY2gtPnJlZ2Jhc2UgPSBJQ0hfUkVHX01DX0JBU0U7DQoJCWNoLT5zcGRyZWcgPSBzYy0+aGFz dnJtPyBBQzk3X1JFR0VYVF9NQURDUkFURSA6IDA7DQoJCWNoLT5pbWFzayA9IElDSF9HTE9CX1NU QV9NSU5UOw0KCQlicmVhazsNCg0KCWRlZmF1bHQ6DQoJCXJldHVybiBOVUxMOw0KCX0NCg0KCWlm IChzbmRidWZfYWxsb2MoY2gtPmJ1ZmZlciwgc2MtPmRtYXQsIHNjLT5idWZzeikpDQoJCXJldHVy biBOVUxMOw0KDQoJaWNoX3dyKHNjLCBjaC0+cmVnYmFzZSArIElDSF9SRUdfWF9CREJBUiwgKHVf aW50MzJfdCkoY2gtPmRlc2NfYWRkciksIDQpOw0KDQoJcmV0dXJuIGNoOw0KfQ0KDQpzdGF0aWMg aW50DQppY2hjaGFuX3NldGZvcm1hdChrb2JqX3Qgb2JqLCB2b2lkICpkYXRhLCB1X2ludDMyX3Qg Zm9ybWF0KQ0Kew0KCXJldHVybiAwOw0KfQ0KDQpzdGF0aWMgaW50DQppY2hjaGFuX3NldHNwZWVk KGtvYmpfdCBvYmosIHZvaWQgKmRhdGEsIHVfaW50MzJfdCBzcGVlZCkNCnsNCglzdHJ1Y3Qgc2Nf Y2hpbmZvICpjaCA9IGRhdGE7DQoJc3RydWN0IHNjX2luZm8gKnNjID0gY2gtPnBhcmVudDsNCg0K CWlmIChjaC0+c3BkcmVnKSB7DQoJCWludCByOw0KCQlpZiAoc2MtPmFjOTdyYXRlIDw9IDMyMDAw IHx8IHNjLT5hYzk3cmF0ZSA+PSA2NDAwMCkNCgkJCXNjLT5hYzk3cmF0ZSA9IDQ4MDAwOw0KCQly ID0gKHNwZWVkICogNDgwMDApIC8gc2MtPmFjOTdyYXRlOw0KCQkvKg0KCQkgKiBDYXN0IHRoZSBy ZXR1cm4gdmFsdWUgb2YgYWM5N19zZXRyYXRlKCkgdG8gdV9pbnQgc28gdGhhdA0KCQkgKiB0aGUg bWF0aCBkb24ndCBvdmVyZmxvdyBpbnRvIHRoZSBuZWdhdGl2ZSByYW5nZS4NCgkJICovDQoJCWNo LT5zcGQgPSAoKHVfaW50KWFjOTdfc2V0cmF0ZShzYy0+Y29kZWMsIGNoLT5zcGRyZWcsIHIpICoN CgkJICAgIHNjLT5hYzk3cmF0ZSkgLyA0ODAwMDsNCgl9IGVsc2Ugew0KCQljaC0+c3BkID0gNDgw MDA7DQoJfQ0KCXJldHVybiBjaC0+c3BkOw0KfQ0KDQpzdGF0aWMgaW50DQppY2hjaGFuX3NldGJs b2Nrc2l6ZShrb2JqX3Qgb2JqLCB2b2lkICpkYXRhLCB1X2ludDMyX3QgYmxvY2tzaXplKQ0Kew0K CXN0cnVjdCBzY19jaGluZm8gKmNoID0gZGF0YTsNCglzdHJ1Y3Qgc2NfaW5mbyAqc2MgPSBjaC0+ cGFyZW50Ow0KDQoJY2gtPmJsa3N6ID0gYmxvY2tzaXplOw0KCWljaF9maWxsZHRibChjaCk7DQoJ aWNoX3dyKHNjLCBjaC0+cmVnYmFzZSArIElDSF9SRUdfWF9MVkksIGNoLT5ibGtjbnQgLSAxLCAx KTsNCg0KCXJldHVybiBjaC0+Ymxrc3o7DQp9DQoNCnN0YXRpYyBpbnQNCmljaGNoYW5fdHJpZ2dl cihrb2JqX3Qgb2JqLCB2b2lkICpkYXRhLCBpbnQgZ28pDQp7DQoJc3RydWN0IHNjX2NoaW5mbyAq Y2ggPSBkYXRhOw0KCXN0cnVjdCBzY19pbmZvICpzYyA9IGNoLT5wYXJlbnQ7DQoNCglzd2l0Y2gg KGdvKSB7DQoJY2FzZSBQQ01UUklHX1NUQVJUOg0KCQljaC0+cnVuID0gMTsNCgkJaWNoX3dyKHNj LCBjaC0+cmVnYmFzZSArIElDSF9SRUdfWF9CREJBUiwgKHVfaW50MzJfdCkoY2gtPmRlc2NfYWRk ciksIDQpOw0KCQlpY2hfd3Ioc2MsIGNoLT5yZWdiYXNlICsgSUNIX1JFR19YX0NSLCBJQ0hfWF9D Ul9SUEJNIHwgSUNIX1hfQ1JfTFZCSUUgfCBJQ0hfWF9DUl9JT0NFLCAxKTsNCgkJYnJlYWs7DQoN CgljYXNlIFBDTVRSSUdfQUJPUlQ6DQoJCWljaF9yZXNldGNoYW4oc2MsIGNoLT5udW0pOw0KCQlj aC0+cnVuID0gMDsNCgkJYnJlYWs7DQoJfQ0KCXJldHVybiAwOw0KfQ0KDQpzdGF0aWMgaW50DQpp Y2hjaGFuX2dldHB0cihrb2JqX3Qgb2JqLCB2b2lkICpkYXRhKQ0Kew0KCXN0cnVjdCBzY19jaGlu Zm8gKmNoID0gZGF0YTsNCglzdHJ1Y3Qgc2NfaW5mbyAqc2MgPSBjaC0+cGFyZW50Ow0KICAgICAg CXVfaW50MzJfdCBwb3M7DQoNCgljaC0+Y2l2ID0gaWNoX3JkKHNjLCBjaC0+cmVnYmFzZSArIElD SF9SRUdfWF9DSVYsIDEpICUgY2gtPmJsa2NudDsNCg0KCXBvcyA9IGNoLT5jaXYgKiBjaC0+Ymxr c3o7DQoNCglyZXR1cm4gcG9zOw0KfQ0KDQpzdGF0aWMgc3RydWN0IHBjbWNoYW5fY2FwcyAqDQpp Y2hjaGFuX2dldGNhcHMoa29ial90IG9iaiwgdm9pZCAqZGF0YSkNCnsNCglzdHJ1Y3Qgc2NfY2hp bmZvICpjaCA9IGRhdGE7DQoNCglyZXR1cm4gY2gtPnNwZHJlZz8gJmljaF92cmNhcHMgOiAmaWNo X2NhcHM7DQp9DQoNCnN0YXRpYyBrb2JqX21ldGhvZF90IGljaGNoYW5fbWV0aG9kc1tdID0gew0K CUtPQkpNRVRIT0QoY2hhbm5lbF9pbml0LAkJaWNoY2hhbl9pbml0KSwNCglLT0JKTUVUSE9EKGNo YW5uZWxfc2V0Zm9ybWF0LAkJaWNoY2hhbl9zZXRmb3JtYXQpLA0KCUtPQkpNRVRIT0QoY2hhbm5l bF9zZXRzcGVlZCwJCWljaGNoYW5fc2V0c3BlZWQpLA0KCUtPQkpNRVRIT0QoY2hhbm5lbF9zZXRi bG9ja3NpemUsCWljaGNoYW5fc2V0YmxvY2tzaXplKSwNCglLT0JKTUVUSE9EKGNoYW5uZWxfdHJp Z2dlciwJCWljaGNoYW5fdHJpZ2dlciksDQoJS09CSk1FVEhPRChjaGFubmVsX2dldHB0ciwJCWlj aGNoYW5fZ2V0cHRyKSwNCglLT0JKTUVUSE9EKGNoYW5uZWxfZ2V0Y2FwcywJCWljaGNoYW5fZ2V0 Y2FwcyksDQoJeyAwLCAwIH0NCn07DQpDSEFOTkVMX0RFQ0xBUkUoaWNoY2hhbik7DQoNCi8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovDQovKiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgKi8NCg0Kc3RhdGljIHZvaWQN CmljaF9pbnRyKHZvaWQgKnApDQp7DQoJc3RydWN0IHNjX2luZm8gKnNjID0gKHN0cnVjdCBzY19p bmZvICopcDsNCglzdHJ1Y3Qgc2NfY2hpbmZvICpjaDsNCgl1X2ludDMyX3QgY2JpLCBsYmksIGx2 aSwgc3QsIGdzOw0KCWludCBpOw0KDQoJZ3MgPSBpY2hfcmQoc2MsIElDSF9SRUdfR0xPQl9TVEEs IDQpICYgSUNIX0dMT0JfU1RBX0lNQVNLOw0KCWlmIChncyAmIChJQ0hfR0xPQl9TVEFfUFJFUyB8 IElDSF9HTE9CX1NUQV9TUkVTKSkgew0KCQkvKiBDbGVhciByZXN1bWUgaW50ZXJydXB0KHMpIC0g bm90aGluZyBkb2luZyB3aXRoIHRoZW0gKi8NCgkJaWNoX3dyKHNjLCBJQ0hfUkVHX0dMT0JfU1RB LCBncywgNCk7DQoJfQ0KCWdzICY9IH4oSUNIX0dMT0JfU1RBX1BSRVMgfCBJQ0hfR0xPQl9TVEFf U1JFUyk7DQoNCglmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7DQoJCWNoID0gJnNjLT5jaFtpXTsN CgkJaWYgKChjaC0+aW1hc2sgJiBncykgPT0gMCkgDQoJCQljb250aW51ZTsNCgkJZ3MgJj0gfmNo LT5pbWFzazsNCgkJc3QgPSBpY2hfcmQoc2MsIGNoLT5yZWdiYXNlICsgDQoJCQkJKHNjLT5zd2Fw X3JlZyA/IElDSF9SRUdfWF9QSUNCIDogSUNIX1JFR19YX1NSKSwNCgkJCSAgICAyKTsNCgkJc3Qg Jj0gSUNIX1hfU1JfRklGT0UgfCBJQ0hfWF9TUl9CQ0lTIHwgSUNIX1hfU1JfTFZCQ0k7DQoJCWlm IChzdCAmIChJQ0hfWF9TUl9CQ0lTIHwgSUNIX1hfU1JfTFZCQ0kpKSB7DQoJCQkJLyogYmxvY2sg Y29tcGxldGUgLSB1cGRhdGUgYnVmZmVyICovDQoJCQlpZiAoY2gtPnJ1bikNCgkJCQljaG5faW50 cihjaC0+Y2hhbm5lbCk7DQoJCQlsdmkgPSBpY2hfcmQoc2MsIGNoLT5yZWdiYXNlICsgSUNIX1JF R19YX0xWSSwgMSk7DQoJCQljYmkgPSBjaC0+Y2l2ICUgY2gtPmJsa2NudDsNCgkJCWlmIChjYmkg PT0gMCkNCgkJCQljYmkgPSBjaC0+YmxrY250IC0gMTsNCgkJCWVsc2UNCgkJCQljYmktLTsNCgkJ CWxiaSA9IGx2aSAlIGNoLT5ibGtjbnQ7DQoJCQlpZiAoY2JpID49IGxiaSkNCgkJCQlsdmkgKz0g Y2JpIC0gbGJpOw0KCQkJZWxzZQ0KCQkJCWx2aSArPSBjYmkgKyBjaC0+YmxrY250IC0gbGJpOw0K CQkJbHZpICU9IElDSF9EVEJMX0xFTkdUSDsNCgkJCWljaF93cihzYywgY2gtPnJlZ2Jhc2UgKyBJ Q0hfUkVHX1hfTFZJLCBsdmksIDEpOw0KDQoJCX0NCgkJLyogY2xlYXIgc3RhdHVzIGJpdCAqLw0K CQlpY2hfd3Ioc2MsIGNoLT5yZWdiYXNlICsgDQoJCQkgICAoc2MtPnN3YXBfcmVnID8gSUNIX1JF R19YX1BJQ0IgOiBJQ0hfUkVHX1hfU1IpLA0KCQkgICAgICAgc3QsIDIpOw0KCX0NCglpZiAoZ3Mg IT0gMCkgew0KCQlkZXZpY2VfcHJpbnRmKHNjLT5kZXYsIA0KCQkJICAgICAgIlVuaGFuZGxlZCBp bnRlcnJ1cHQsIGdzX2ludHIgPSAleFxuIiwgZ3MpOw0KCX0NCn0NCg0KLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAqLw0KLyogU3lzY3RsIHRvIGNvbnRyb2wgYWM5NyBzcGVlZCAoc29tZSBib2FyZHMgYXBw ZWFyIHRvIGVuZCB1cCB1c2luZyANCiAqIFhUQUxfSU4gcmF0aGVyIHRoYW4gQklUX0NMSyBmb3Ig bGluayB0aW1pbmcpLiANCiAqLw0KDQpzdGF0aWMgaW50DQppY2hfaW5pdHN5cyhzdHJ1Y3Qgc2Nf aW5mbyogc2MpDQp7DQojaWZkZWYgU05EX0RZTlNZU0NUTA0KCVNZU0NUTF9BRERfSU5UKHNuZF9z eXNjdGxfdHJlZShzYy0+ZGV2KSwgDQoJCSAgICAgICBTWVNDVExfQ0hJTERSRU4oc25kX3N5c2N0 bF90cmVlX3RvcChzYy0+ZGV2KSksDQoJCSAgICAgICBPSURfQVVUTywgImFjOTdyYXRlIiwgQ1RM RkxBR19SVywgDQoJCSAgICAgICAmc2MtPmFjOTdyYXRlLCA0ODAwMCwgDQoJCSAgICAgICAiQUM5 NyBsaW5rIHJhdGUgKGRlZmF1bHQgPSA0ODAwMCkiKTsNCiNlbmRpZiAvKiBTTkRfRFlOU1lTQ1RM ICovDQoJcmV0dXJuIDA7DQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQovKiBDYWxpYnJhdGUgY2Fy ZCB0byBkZXRlcm1pbmUgdGhlIGNsb2NrIHNvdXJjZS4gIFRoZSBzb3VyY2UgbWF5YmUgYSANCiAq IGZ1bmN0aW9uIG9mIHRoZSBhYzk3IGNvZGVjIGluaXRpYWxpemF0aW9uIGNvZGUgKHRvIGJlIGlu dmVzdGlnYXRlZCkuDQogKi8NCg0Kc3RhdGljDQp2b2lkIGljaF9jYWxpYnJhdGUodm9pZCAqYXJn KQ0Kew0KCXN0cnVjdCBzY19pbmZvICpzYzsNCglzdHJ1Y3Qgc2NfY2hpbmZvICpjaDsNCglzdHJ1 Y3QgdGltZXZhbCB0MSwgdDI7DQoJdV9pbnQ4X3Qgb2NpdiwgbmNpdjsNCgl1X2ludDMyX3Qgd2Fp dF91cywgYWN0dWFsXzQ4a19yYXRlLCBieXRlczsNCg0KCXNjID0gKHN0cnVjdCBzY19pbmZvICop YXJnOw0KCWNoID0gJnNjLT5jaFsxXTsNCg0KCWlmIChzYy0+dXNlX2ludHJob29rKQ0KCQljb25m aWdfaW50cmhvb2tfZGlzZXN0YWJsaXNoKCZzYy0+aW50cmhvb2spOw0KDQoJLyoNCgkgKiBHcmFi IGF1ZGlvIGZyb20gaW5wdXQgZm9yIGZpeGVkIGludGVydmFsIGFuZCBjb21wYXJlIGhvdw0KCSAq IG11Y2ggd2UgYWN0dWFsbHkgZ2V0IHdpdGggd2hhdCB3ZSBleHBlY3QuICBJbnRlcnZhbCBuZWVk cw0KCSAqIHRvIGJlIHN1ZmZpY2llbnRseSBzaG9ydCB0aGF0IG5vIGludGVycnVwdHMgYXJlDQoJ ICogZ2VuZXJhdGVkLg0KCSAqLw0KDQoJS0FTU0VSVChjaC0+cmVnYmFzZSA9PSBJQ0hfUkVHX1BJ X0JBU0UsICgid3JvbmcgZGlyZWN0aW9uIikpOw0KDQoJYnl0ZXMgPSBzbmRidWZfZ2V0c2l6ZShj aC0+YnVmZmVyKSAvIDI7DQoJaWNoY2hhbl9zZXRibG9ja3NpemUoMCwgY2gsIGJ5dGVzKTsNCg0K CS8qDQoJICogb3VyIGRhdGEgZm9ybWF0IGlzIHN0ZXJlbywgMTYgYml0IHNvIGVhY2ggc2FtcGxl IGlzIDQgYnl0ZXMuDQoJICogYXNzdW1pbmcgd2UgZ2V0IDQ4MDAwIHNhbXBsZXMgcGVyIHNlY29u ZCwgd2UgZ2V0IDE5MjAwMCBieXRlcy9zZWMuDQoJICogd2UncmUgZ29pbmcgdG8gc3RhcnQgcmVj b3JkaW5nIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCBhbmQgbWVhc3VyZQ0KCSAqIHRoZSB0aW1l IHRha2VuIGZvciBvbmUgYmxvY2sgdG8gY29tcGxldGUuICB3ZSBrbm93IHRoZSBibG9jayBzaXpl LA0KCSAqIHdlIGtub3cgdGhlIHRpbWUgaW4gbWljcm9zZWNvbmRzLCB3ZSBjYWxjdWxhdGUgdGhl IHNhbXBsZSByYXRlOg0KCSAqDQoJICogYWN0dWFsX3JhdGUgW2Jwc10gPSBieXRlcyAvICh0aW1l IFtzXSAqIDQpDQoJICogYWN0dWFsX3JhdGUgW2Jwc10gPSAoYnl0ZXMgKiAxMDAwMDAwKSAvICh0 aW1lIFt1c10gKiA0KQ0KCSAqIGFjdHVhbF9yYXRlIFtIel0gPSAoYnl0ZXMgKiAyNTAwMDApIC8g dGltZSBbdXNdDQoJICovDQoNCgkvKiBwcmVwYXJlICovDQoJb2NpdiA9IGljaF9yZChzYywgY2gt PnJlZ2Jhc2UgKyBJQ0hfUkVHX1hfQ0lWLCAxKTsNCgluY2l2ID0gb2NpdjsNCglpY2hfd3Ioc2Ms IGNoLT5yZWdiYXNlICsgSUNIX1JFR19YX0JEQkFSLCAodV9pbnQzMl90KShjaC0+ZGVzY19hZGRy KSwgNCk7DQoNCgkvKiBzdGFydCAqLw0KCW1pY3JvdGltZSgmdDEpOw0KCWljaF93cihzYywgY2gt PnJlZ2Jhc2UgKyBJQ0hfUkVHX1hfQ1IsIElDSF9YX0NSX1JQQk0sIDEpOw0KDQoJLyogd2FpdCAq Lw0KCXdoaWxlIChuY2l2ID09IG9jaXYpIHsNCgkJbWljcm90aW1lKCZ0Mik7DQoJCWlmICh0Mi50 dl9zZWMgLSB0MS50dl9zZWMgPiAxKQ0KCQkJYnJlYWs7DQoJCW5jaXYgPSBpY2hfcmQoc2MsIGNo LT5yZWdiYXNlICsgSUNIX1JFR19YX0NJViwgMSk7DQoJfQ0KCW1pY3JvdGltZSgmdDIpOw0KDQoJ Lyogc3RvcCAqLw0KCWljaF93cihzYywgY2gtPnJlZ2Jhc2UgKyBJQ0hfUkVHX1hfQ1IsIDAsIDEp Ow0KDQoJLyogcmVzZXQgKi8NCglERUxBWSgxMDApOw0KCWljaF93cihzYywgY2gtPnJlZ2Jhc2Ug KyBJQ0hfUkVHX1hfQ1IsIElDSF9YX0NSX1JSLCAxKTsNCg0KCS8qIHR1cm4gdGltZSBkZWx0YSBp bnRvIHVzICovDQoJd2FpdF91cyA9ICgodDIudHZfc2VjIC0gdDEudHZfc2VjKSAqIDEwMDAwMDAp ICsgdDIudHZfdXNlYyAtIHQxLnR2X3VzZWM7DQoNCglpZiAobmNpdiA9PSBvY2l2KSB7DQoJCWRl dmljZV9wcmludGYoc2MtPmRldiwgImFjOTcgbGluayByYXRlIGNhbGlicmF0aW9uIHRpbWVkIG91 dCBhZnRlciAlZCB1c1xuIiwgd2FpdF91cyk7DQoJCXJldHVybjsNCgl9DQoNCglhY3R1YWxfNDhr X3JhdGUgPSAoYnl0ZXMgKiAyNTAwMDApIC8gd2FpdF91czsNCg0KCWlmIChhY3R1YWxfNDhrX3Jh dGUgPCA0NzUwMCB8fCBhY3R1YWxfNDhrX3JhdGUgPiA0ODUwMCkgew0KCQlzYy0+YWM5N3JhdGUg PSBhY3R1YWxfNDhrX3JhdGU7DQoJfSBlbHNlIHsNCgkJc2MtPmFjOTdyYXRlID0gNDgwMDA7DQoJ fQ0KDQoJaWYgKGJvb3R2ZXJib3NlIHx8IHNjLT5hYzk3cmF0ZSAhPSA0ODAwMCkgew0KCQlkZXZp Y2VfcHJpbnRmKHNjLT5kZXYsICJtZWFzdXJlZCBhYzk3IGxpbmsgcmF0ZSBhdCAlZCBIeiIsIGFj dHVhbF80OGtfcmF0ZSk7DQoJCWlmIChzYy0+YWM5N3JhdGUgIT0gYWN0dWFsXzQ4a19yYXRlKQ0K CQkJcHJpbnRmKCIsIHdpbGwgdXNlICVkIEh6Iiwgc2MtPmFjOTdyYXRlKTsNCgkgCXByaW50Zigi XG4iKTsNCgl9DQoNCglyZXR1cm47DQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQovKiBQcm9iZSBh bmQgYXR0YWNoIHRoZSBjYXJkICovDQoNCnN0YXRpYyB2b2lkDQppY2hfc2V0bWFwKHZvaWQgKmFy ZywgYnVzX2RtYV9zZWdtZW50X3QgKnNlZ3MsIGludCBuc2VnLCBpbnQgZXJyb3IpDQp7DQoJc3Ry dWN0IHNjX2luZm8gKnNjID0gKHN0cnVjdCBzY19pbmZvICopYXJnOw0KCXNjLT5kZXNjX2FkZHIg PSBzZWdzLT5kc19hZGRyOw0KCXJldHVybjsNCn0NCg0Kc3RhdGljIGludA0KaWNoX2luaXQoc3Ry dWN0IHNjX2luZm8gKnNjKQ0Kew0KCXVfaW50MzJfdCBzdGF0Ow0KCWludCBzejsNCg0KCWljaF93 cihzYywgSUNIX1JFR19HTE9CX0NOVCwgSUNIX0dMT0JfQ1RMX0NPTEQsIDQpOw0KCURFTEFZKDYw MDAwMCk7DQoJc3RhdCA9IGljaF9yZChzYywgSUNIX1JFR19HTE9CX1NUQSwgNCk7DQoNCglpZiAo KHN0YXQgJiBJQ0hfR0xPQl9TVEFfUENSKSA9PSAwKSB7DQoJCS8qIElDSDQgbWF5IGZhaWwgd2hl biBidXNtYXN0ZXJpbmcgaXMgZW5hYmxlZC4gQ29udGludWUgKi8NCgkJaWYgKHBjaV9nZXRfZGV2 aWQoc2MtPmRldikgIT0gSUNINElEKSB7DQoJCQlyZXR1cm4gRU5YSU87DQoJCX0NCgl9DQoNCglp Y2hfd3Ioc2MsIElDSF9SRUdfR0xPQl9DTlQsIElDSF9HTE9CX0NUTF9DT0xEIHwgSUNIX0dMT0Jf Q1RMX1BSRVMsIDQpOw0KDQoJaWYgKGljaF9yZXNldGNoYW4oc2MsIDApIHx8IGljaF9yZXNldGNo YW4oc2MsIDEpKQ0KCQlyZXR1cm4gRU5YSU87DQoJaWYgKHNjLT5oYXNtaWMgJiYgaWNoX3Jlc2V0 Y2hhbihzYywgMikpDQoJCXJldHVybiBFTlhJTzsNCg0KCWlmIChidXNfZG1hbWVtX2FsbG9jKHNj LT5kbWF0LCAodm9pZCAqKikmc2MtPmR0YmwsIEJVU19ETUFfTk9XQUlULCAmc2MtPmR0bWFwKSkN CgkJcmV0dXJuIEVOT1NQQzsNCg0KCXN6ID0gc2l6ZW9mKHN0cnVjdCBpY2hfZGVzYykgKiBJQ0hf RFRCTF9MRU5HVEggKiAzOw0KCWlmIChidXNfZG1hbWFwX2xvYWQoc2MtPmRtYXQsIHNjLT5kdG1h cCwgc2MtPmR0YmwsIHN6LCBpY2hfc2V0bWFwLCBzYywgMCkpIHsNCgkJYnVzX2RtYW1lbV9mcmVl KHNjLT5kbWF0LCAodm9pZCAqKikmc2MtPmR0YmwsIHNjLT5kdG1hcCk7DQoJCXJldHVybiBFTk9T UEM7DQoJfQ0KDQoJcmV0dXJuIDA7DQp9DQoNCnN0YXRpYyBpbnQNCmljaF9wY2lfcHJvYmUoZGV2 aWNlX3QgZGV2KQ0Kew0KCXN3aXRjaChwY2lfZ2V0X2RldmlkKGRldikpIHsNCgljYXNlIDB4NzE5 NTgwODY6DQoJCWRldmljZV9zZXRfZGVzYyhkZXYsICJJbnRlbCA0NDNNWCIpOw0KCQlyZXR1cm4g MDsNCg0KCWNhc2UgMHgyNDE1ODA4NjoNCgkJZGV2aWNlX3NldF9kZXNjKGRldiwgIkludGVsIDgy ODAxQUEgKElDSCkiKTsNCgkJcmV0dXJuIDA7DQoNCgljYXNlIDB4MjQyNTgwODY6DQoJCWRldmlj ZV9zZXRfZGVzYyhkZXYsICJJbnRlbCA4MjgwMUFCIChJQ0gpIik7DQoJCXJldHVybiAwOw0KDQoJ Y2FzZSAweDI0NDU4MDg2Og0KCQlkZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiSW50ZWwgODI4MDFCQSAo SUNIMikiKTsNCgkJcmV0dXJuIDA7DQoNCgljYXNlIDB4MjQ4NTgwODY6DQoJCWRldmljZV9zZXRf ZGVzYyhkZXYsICJJbnRlbCA4MjgwMUNBIChJQ0gzKSIpOw0KCQlyZXR1cm4gMDsNCg0KCWNhc2Ug SUNINElEOg0KCQlkZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiSW50ZWwgODI4MDFEQiAoSUNINCkiKTsN CgkJcmV0dXJuIDA7DQoNCgljYXNlIFNJUzcwMTJJRDoNCgkJZGV2aWNlX3NldF9kZXNjKGRldiwg IlNpUyA3MDEyIik7DQoJCXJldHVybiAwOw0KDQoJY2FzZSAweDAxYjExMGRlOg0KCQlkZXZpY2Vf c2V0X2Rlc2MoZGV2LCAiTnZpZGlhIG5Gb3JjZSBBQzk3IGNvbnRyb2xsZXIiKTsNCgkJcmV0dXJu IDA7DQoNCgljYXNlIDB4MDA2YTEwZGU6DQoJCWRldmljZV9zZXRfZGVzYyhkZXYsICJOdmlkaWEg bkZvcmNlMiBBQzk3IGNvbnRyb2xsZXIiKTsNCgkJcmV0dXJuIDA7DQoNCglkZWZhdWx0Og0KCQly ZXR1cm4gRU5YSU87DQoJfQ0KfQ0KDQpzdGF0aWMgaW50DQppY2hfcGNpX2F0dGFjaChkZXZpY2Vf dCBkZXYpDQp7DQoJdV9pbnQxNl90CQlleHRjYXBzOw0KCXN0cnVjdCBzY19pbmZvIAkJKnNjOw0K CWNoYXIgCQkJc3RhdHVzW1NORF9TVEFUVVNMRU5dOw0KDQoJaWYgKChzYyA9IG1hbGxvYyhzaXpl b2YoKnNjKSwgTV9ERVZCVUYsIE1fTk9XQUlUKSkgPT0gTlVMTCkgew0KCQlkZXZpY2VfcHJpbnRm KGRldiwgImNhbm5vdCBhbGxvY2F0ZSBzb2Z0Y1xuIik7DQoJCXJldHVybiBFTlhJTzsNCgl9DQoN CgliemVybyhzYywgc2l6ZW9mKCpzYykpOw0KCXNjLT5kZXYgPSBkZXY7DQoNCgkvKg0KCSAqIFRo ZSBTaVMgNzAxMiByZWdpc3RlciBzZXQgaXNuJ3QgcXVpdGUgbGlrZSB0aGUgc3RhbmRhcmQgaWNo Lg0KCSAqIFRoZXJlIHJlYWxseSBzaG91bGQgYmUgYSBnZW5lcmFsICJxdWlya3MiIG1lY2hhbmlz bS4NCgkgKi8NCglpZiAocGNpX2dldF9kZXZpZChkZXYpID09IFNJUzcwMTJJRCkgew0KCQlzYy0+ c3dhcF9yZWcgPSAxOw0KCQlzYy0+c2FtcGxlX3NpemUgPSAxOw0KCX0gZWxzZSB7DQoJCXNjLT5z d2FwX3JlZyA9IDA7DQoJCXNjLT5zYW1wbGVfc2l6ZSA9IDI7DQoJfQ0KDQoJLyoNCgkgKiBCeSBk ZWZhdWx0LCBpY2g0IGhhcyBOQU1CQVIgYW5kIE5BQk1CQVIgaS9vIHNwYWNlcyBhcw0KCSAqIHJl YWQtb25seS4gIE5lZWQgdG8gZW5hYmxlICJsZWdhY3kgc3VwcG9ydCIsIGJ5IHBva2luZyBpbnRv DQoJICogcGNpIGNvbmZpZyBzcGFjZS4gIFRoZSBkcml2ZXIgc2hvdWxkIHVzZSBNTUJBUiBhbmQg TUJCQVIsDQoJICogYnV0IGRvaW5nIHNvIHdpbGwgbWVzcyB0aGluZ3MgdXAgaGVyZS4gIGljaDQg aGFzIGVub3VnaCBuZXcNCgkgKiBmZWF0dXJlcyBpdCB3YXJyYW50cyBpdCdzIG93biBkcml2ZXIu IA0KCSAqLw0KCWlmIChwY2lfZ2V0X2RldmlkKGRldikgPT0gSUNINElEKSB7DQoJCXBjaV93cml0 ZV9jb25maWcoZGV2LCBQQ0lSX0lDSF9MRUdBQ1ksIElDSF9MRUdBQ1lfRU5BQkxFLCAxKTsNCgl9 DQoNCgkvKg0KCSAqIEVuYWJsZSBidXMgbWFzdGVyLiBPbiBpY2g0IHRoaXMgbWF5IHByZXZlbnQg dGhlIGRldGVjdGlvbiBvZg0KCSAqIHRoZSBwcmltYXJ5IGNvZGVjIGJlY29taW5nIHJlYWR5IGlu IGljaF9pbml0KCkuDQoJICovDQoJcGNpX2VuYWJsZV9idXNtYXN0ZXIoZGV2KTsNCg0KCXNjLT5u YW1iYXJpZCA9IFBDSVJfTkFNQkFSOw0KCXNjLT5uYWJtYmFyaWQgPSBQQ0lSX05BQk1CQVI7DQoJ c2MtPm5hbWJhciA9IGJ1c19hbGxvY19yZXNvdXJjZShkZXYsIFNZU19SRVNfSU9QT1JULCAmc2Mt Pm5hbWJhcmlkLCAwLCB+MCwgMSwgUkZfQUNUSVZFKTsNCglzYy0+bmFibWJhciA9IGJ1c19hbGxv Y19yZXNvdXJjZShkZXYsIFNZU19SRVNfSU9QT1JULCAmc2MtPm5hYm1iYXJpZCwgMCwgfjAsIDEs IFJGX0FDVElWRSk7DQoNCglpZiAoIXNjLT5uYW1iYXIgfHwgIXNjLT5uYWJtYmFyKSB7DQoJCWRl dmljZV9wcmludGYoZGV2LCAidW5hYmxlIHRvIG1hcCBJTyBwb3J0IHNwYWNlXG4iKTsNCgkJZ290 byBiYWQ7DQoJfQ0KDQoJc2MtPm5hbWJhcnQgPSBybWFuX2dldF9idXN0YWcoc2MtPm5hbWJhcik7 DQoJc2MtPm5hbWJhcmggPSBybWFuX2dldF9idXNoYW5kbGUoc2MtPm5hbWJhcik7DQoJc2MtPm5h Ym1iYXJ0ID0gcm1hbl9nZXRfYnVzdGFnKHNjLT5uYWJtYmFyKTsNCglzYy0+bmFibWJhcmggPSBy bWFuX2dldF9idXNoYW5kbGUoc2MtPm5hYm1iYXIpOw0KDQoJc2MtPmJ1ZnN6ID0gcGNtX2dldGJ1 ZmZlcnNpemUoZGV2LCA0MDk2LCBJQ0hfREVGQVVMVF9CVUZTWiwgSUNIX01BWF9CVUZTWik7DQoJ aWYgKGJ1c19kbWFfdGFnX2NyZWF0ZShOVUxMLCA4LCAwLCBCVVNfU1BBQ0VfTUFYQUREUl8zMkJJ VCwgQlVTX1NQQUNFX01BWEFERFIsDQoJCQkgICAgICAgTlVMTCwgTlVMTCwgc2MtPmJ1ZnN6LCAx LCAweDNmZmZmLCAwLA0KCQkJICAgICAgIGJ1c2RtYV9sb2NrX211dGV4LCAmR2lhbnQsICZzYy0+ ZG1hdCkgIT0gMCkgew0KCQlkZXZpY2VfcHJpbnRmKGRldiwgInVuYWJsZSB0byBjcmVhdGUgZG1h IHRhZ1xuIik7DQoJCWdvdG8gYmFkOw0KCX0NCg0KCXNjLT5pcnFpZCA9IDA7DQoJc2MtPmlycSA9 IGJ1c19hbGxvY19yZXNvdXJjZShkZXYsIFNZU19SRVNfSVJRLCAmc2MtPmlycWlkLCAwLCB+MCwg MSwgUkZfQUNUSVZFIHwgUkZfU0hBUkVBQkxFKTsNCglpZiAoIXNjLT5pcnEgfHwgc25kX3NldHVw X2ludHIoZGV2LCBzYy0+aXJxLCBJTlRSX01QU0FGRSwgaWNoX2ludHIsIHNjLCAmc2MtPmloKSkg ew0KCQlkZXZpY2VfcHJpbnRmKGRldiwgInVuYWJsZSB0byBtYXAgaW50ZXJydXB0XG4iKTsNCgkJ Z290byBiYWQ7DQoJfQ0KDQoJaWYgKGljaF9pbml0KHNjKSkgew0KCQlkZXZpY2VfcHJpbnRmKGRl diwgInVuYWJsZSB0byBpbml0aWFsaXplIHRoZSBjYXJkXG4iKTsNCgkJZ290byBiYWQ7DQoJfQ0K DQoJc2MtPmNvZGVjID0gQUM5N19DUkVBVEUoZGV2LCBzYywgaWNoX2FjOTcpOw0KCWlmIChzYy0+ Y29kZWMgPT0gTlVMTCkNCgkJZ290byBiYWQ7DQoJbWl4ZXJfaW5pdChkZXYsIGFjOTdfZ2V0bWl4 ZXJjbGFzcygpLCBzYy0+Y29kZWMpOw0KDQoJLyogY2hlY2sgYW5kIHNldCBWUkEgZnVuY3Rpb24g Ki8NCglleHRjYXBzID0gYWM5N19nZXRleHRjYXBzKHNjLT5jb2RlYyk7DQoJc2MtPmhhc3ZyYSA9 IGV4dGNhcHMgJiBBQzk3X0VYVENBUF9WUkE7DQoJc2MtPmhhc3ZybSA9IGV4dGNhcHMgJiBBQzk3 X0VYVENBUF9WUk07DQoJc2MtPmhhc21pYyA9IGFjOTdfZ2V0Y2FwcyhzYy0+Y29kZWMpICYgQUM5 N19DQVBfTUlDQ0hBTk5FTDsNCglhYzk3X3NldGV4dG1vZGUoc2MtPmNvZGVjLCBzYy0+aGFzdnJh IHwgc2MtPmhhc3ZybSk7DQoNCglpZiAocGNtX3JlZ2lzdGVyKGRldiwgc2MsIDEsIHNjLT5oYXNt aWM/IDIgOiAxKSkNCgkJZ290byBiYWQ7DQoNCglwY21fYWRkY2hhbihkZXYsIFBDTURJUl9QTEFZ LCAmaWNoY2hhbl9jbGFzcywgc2MpOwkJLyogcGxheSAqLw0KCXBjbV9hZGRjaGFuKGRldiwgUENN RElSX1JFQywgJmljaGNoYW5fY2xhc3MsIHNjKTsJCS8qIHJlY29yZCAqLw0KCWlmIChzYy0+aGFz bWljKQ0KCQlwY21fYWRkY2hhbihkZXYsIFBDTURJUl9SRUMsICZpY2hjaGFuX2NsYXNzLCBzYyk7 CS8qIHJlY29yZCBtaWMgKi8NCg0KCXNucHJpbnRmKHN0YXR1cywgU05EX1NUQVRVU0xFTiwgImF0 IGlvIDB4JWx4LCAweCVseCBpcnEgJWxkIGJ1ZnN6ICV1IiwNCgkJIHJtYW5fZ2V0X3N0YXJ0KHNj LT5uYW1iYXIpLCBybWFuX2dldF9zdGFydChzYy0+bmFibWJhciksIHJtYW5fZ2V0X3N0YXJ0KHNj LT5pcnEpLCBzYy0+YnVmc3opOw0KDQoJcGNtX3NldHN0YXR1cyhkZXYsIHN0YXR1cyk7DQoNCglp Y2hfaW5pdHN5cyhzYyk7DQoNCglzYy0+aW50cmhvb2suaWNoX2Z1bmMgPSBpY2hfY2FsaWJyYXRl Ow0KCXNjLT5pbnRyaG9vay5pY2hfYXJnID0gc2M7DQoJc2MtPnVzZV9pbnRyaG9vayA9IDE7DQoJ aWYgKGNvbmZpZ19pbnRyaG9va19lc3RhYmxpc2goJnNjLT5pbnRyaG9vaykgIT0gMCkgew0KCQlk ZXZpY2VfcHJpbnRmKGRldiwgIkNhbm5vdCBlc3RhYmxpc2ggY2FsaWJyYXRpb24gaG9vaywgd2ls bCBjYWxpYnJhdGUgbm93XG4iKTsNCgkJc2MtPnVzZV9pbnRyaG9vayA9IDA7DQoJCWljaF9jYWxp YnJhdGUoc2MpOw0KCX0NCg0KCXJldHVybiAwOw0KDQpiYWQ6DQoJaWYgKHNjLT5jb2RlYykNCgkJ YWM5N19kZXN0cm95KHNjLT5jb2RlYyk7DQoJaWYgKHNjLT5paCkNCgkJYnVzX3RlYXJkb3duX2lu dHIoZGV2LCBzYy0+aXJxLCBzYy0+aWgpOw0KCWlmIChzYy0+aXJxKQ0KCQlidXNfcmVsZWFzZV9y ZXNvdXJjZShkZXYsIFNZU19SRVNfSVJRLCBzYy0+aXJxaWQsIHNjLT5pcnEpOw0KCWlmIChzYy0+ bmFtYmFyKQ0KCQlidXNfcmVsZWFzZV9yZXNvdXJjZShkZXYsIFNZU19SRVNfSU9QT1JULA0KCQkg ICAgc2MtPm5hbWJhcmlkLCBzYy0+bmFtYmFyKTsNCglpZiAoc2MtPm5hYm1iYXIpDQoJCWJ1c19y ZWxlYXNlX3Jlc291cmNlKGRldiwgU1lTX1JFU19JT1BPUlQsDQoJCSAgICBzYy0+bmFibWJhcmlk LCBzYy0+bmFibWJhcik7DQoJZnJlZShzYywgTV9ERVZCVUYpOw0KCXJldHVybiBFTlhJTzsNCn0N Cg0Kc3RhdGljIGludA0KaWNoX3BjaV9kZXRhY2goZGV2aWNlX3QgZGV2KQ0Kew0KCXN0cnVjdCBz Y19pbmZvICpzYzsNCglpbnQgcjsNCg0KCXIgPSBwY21fdW5yZWdpc3RlcihkZXYpOw0KCWlmIChy KQ0KCQlyZXR1cm4gcjsNCglzYyA9IHBjbV9nZXRkZXZpbmZvKGRldik7DQoNCglidXNfdGVhcmRv d25faW50cihkZXYsIHNjLT5pcnEsIHNjLT5paCk7DQoJYnVzX3JlbGVhc2VfcmVzb3VyY2UoZGV2 LCBTWVNfUkVTX0lSUSwgc2MtPmlycWlkLCBzYy0+aXJxKTsNCglidXNfcmVsZWFzZV9yZXNvdXJj ZShkZXYsIFNZU19SRVNfSU9QT1JULCBzYy0+bmFtYmFyaWQsIHNjLT5uYW1iYXIpOw0KCWJ1c19y ZWxlYXNlX3Jlc291cmNlKGRldiwgU1lTX1JFU19JT1BPUlQsIHNjLT5uYWJtYmFyaWQsIHNjLT5u YWJtYmFyKTsNCglidXNfZG1hX3RhZ19kZXN0cm95KHNjLT5kbWF0KTsNCglmcmVlKHNjLCBNX0RF VkJVRik7DQoJcmV0dXJuIDA7DQp9DQoNCnN0YXRpYyBpbnQNCmljaF9wY2lfc3VzcGVuZChkZXZp Y2VfdCBkZXYpDQp7DQoJc3RydWN0IHNjX2luZm8gKnNjOw0KCWludCBpOw0KDQoJc2MgPSBwY21f Z2V0ZGV2aW5mbyhkZXYpOw0KCWZvciAoaSA9IDAgOyBpIDwgMzsgaSsrKSB7DQoJCXNjLT5jaFtp XS5ydW5fc2F2ZSA9IHNjLT5jaFtpXS5ydW47DQoJCWlmIChzYy0+Y2hbaV0ucnVuKSB7DQoJCQlp Y2hjaGFuX3RyaWdnZXIoMCwgJnNjLT5jaFtpXSwgUENNVFJJR19BQk9SVCk7DQoJCX0NCgl9DQoJ cmV0dXJuIDA7DQp9DQoNCnN0YXRpYyBpbnQNCmljaF9wY2lfcmVzdW1lKGRldmljZV90IGRldikN CnsNCglzdHJ1Y3Qgc2NfaW5mbyAqc2M7DQoJaW50IGk7DQoNCglzYyA9IHBjbV9nZXRkZXZpbmZv KGRldik7DQoNCgkvKiBSZWluaXQgYXVkaW8gZGV2aWNlICovDQogICAgCWlmIChpY2hfaW5pdChz YykgPT0gLTEpIHsNCgkJZGV2aWNlX3ByaW50ZihkZXYsICJ1bmFibGUgdG8gcmVpbml0aWFsaXpl IHRoZSBjYXJkXG4iKTsNCgkJcmV0dXJuIEVOWElPOw0KCX0NCgkvKiBSZWluaXQgbWl4ZXIgKi8N CiAgICAJaWYgKG1peGVyX3JlaW5pdChkZXYpID09IC0xKSB7DQoJCWRldmljZV9wcmludGYoZGV2 LCAidW5hYmxlIHRvIHJlaW5pdGlhbGl6ZSB0aGUgbWl4ZXJcbiIpOw0KCQlyZXR1cm4gRU5YSU87 DQoJfQ0KCS8qIFJlLXN0YXJ0IERNQSBlbmdpbmVzICovDQoJZm9yIChpID0gMCA7IGkgPCAzOyBp KyspIHsNCgkJc3RydWN0IHNjX2NoaW5mbyAqY2ggPSAmc2MtPmNoW2ldOw0KCQlpZiAoc2MtPmNo W2ldLnJ1bl9zYXZlKSB7DQoJCQlpY2hjaGFuX3NldGJsb2Nrc2l6ZSgwLCBjaCwgY2gtPmJsa3N6 KTsNCgkJCWljaGNoYW5fc2V0c3BlZWQoMCwgY2gsIGNoLT5zcGQpOw0KCQkJaWNoY2hhbl90cmln Z2VyKDAsIGNoLCBQQ01UUklHX1NUQVJUKTsNCgkJfQ0KCX0NCglyZXR1cm4gMDsNCn0NCg0Kc3Rh dGljIGRldmljZV9tZXRob2RfdCBpY2hfbWV0aG9kc1tdID0gew0KCS8qIERldmljZSBpbnRlcmZh Y2UgKi8NCglERVZNRVRIT0QoZGV2aWNlX3Byb2JlLAkJaWNoX3BjaV9wcm9iZSksDQoJREVWTUVU SE9EKGRldmljZV9hdHRhY2gsCWljaF9wY2lfYXR0YWNoKSwNCglERVZNRVRIT0QoZGV2aWNlX2Rl dGFjaCwJaWNoX3BjaV9kZXRhY2gpLA0KCURFVk1FVEhPRChkZXZpY2Vfc3VzcGVuZCwgCWljaF9w Y2lfc3VzcGVuZCksDQoJREVWTUVUSE9EKGRldmljZV9yZXN1bWUsCWljaF9wY2lfcmVzdW1lKSwN Cgl7IDAsIDAgfQ0KfTsNCg0Kc3RhdGljIGRyaXZlcl90IGljaF9kcml2ZXIgPSB7DQoJInBjbSIs DQoJaWNoX21ldGhvZHMsDQoJUENNX1NPRlRDX1NJWkUsDQp9Ow0KDQpEUklWRVJfTU9EVUxFKHNu ZF9pY2gsIHBjaSwgaWNoX2RyaXZlciwgcGNtX2RldmNsYXNzLCAwLCAwKTsNCk1PRFVMRV9ERVBF TkQoc25kX2ljaCwgc25kX3BjbSwgUENNX01JTlZFUiwgUENNX1BSRUZWRVIsIFBDTV9NQVhWRVIp Ow0KTU9EVUxFX1ZFUlNJT04oc25kX2ljaCwgMSk7DQo= --=-WQzw3kOuYDteIwK0dqiY-- --=-+CKWb9/jYc1yQ/QwNSDS Content-Type: application/pgp-signature; name=signature.asc Content-Description: =?UTF-8?Q?=E9=80=99=E6=98=AF=E6=95=B8=E4=BD=8D=E5=8A=A0=E7=B0=BD?= =?UTF-8?Q?=E7=9A=84=E9=83=B5?= =?UTF-8?Q?=E4=BB=B6?= -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3 (FreeBSD) iD8DBQBANytWtLPdNzw1AaARArNqAJ43pVigGYDQ3nMjHfmVh7ldRqND1wCeNTUs MlpfsgwyREY1oR1aw1SflAA= =BjbI -----END PGP SIGNATURE----- --=-+CKWb9/jYc1yQ/QwNSDS--