Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Feb 2004 02:00:32 -0800 (PST)
From:      Autrijus Tang <autrijus@autrijus.org>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: misc/61388: pcm stopped working on an ASUS M2400N Notebook since 5.2R
Message-ID:  <200402211000.i1LA0WS2048254@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR misc/61388; it has been noted by GNATS.

From: Autrijus Tang <autrijus@autrijus.org>
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--
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200402211000.i1LA0WS2048254>