From owner-freebsd-current Wed Aug 16 7:34:37 2000 Delivered-To: freebsd-current@freebsd.org Received: from fobos.marketsite.ru (fobos.marketsite.ru [194.226.198.36]) by hub.freebsd.org (Postfix) with ESMTP id D377937BD42; Wed, 16 Aug 2000 07:34:12 -0700 (PDT) (envelope-from diwil@dataart.com) Received: from bb.marketsite.ru ([194.226.198.1] helo=runnet-gw.marketsite.ru) by fobos.marketsite.ru with esmtp (Exim 3.14 #40) id 13P0WJ-0000Ds-00; Wed, 16 Aug 2000 14:34:04 +0400 Content-Length: 27266 Message-ID: X-Mailer: XFMail 1.4.0 on FreeBSD X-Priority: 3 (Normal) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="_=XFMail.1.4.0.FreeBSD:000816183513:1038=_" Date: Wed, 16 Aug 2000 18:35:13 +0400 (MSD) Reply-To: diwil@dataart.com From: dimmy the wild To: freebsd-announce@freebsd.org, freebsd-current@freebsd.org Subject: FW: fm801 sound driver Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This message is in MIME format --_=XFMail.1.4.0.FreeBSD:000816183513:1038=_ Content-Type: text/plain; charset=KOI8-R Fellows, There is a Forte Media FM801 sound chip support attached (one file). I have browsed the handbook and could not find anything how to (and whom to) submit the source code. Anyway, the code should be in /usr/srs/sys/dev/sound/pci/fm801.c and the file /usr/src/sys/conf/files should contain the line as follows: dev/sound/pci/fm801.c optional pcm pci ... Ok, if somebody has this hardware, I'll be happy to get some comments and bug reports. Have fun, regards, Dmitry. -- ********************************************************************** ("`-''-/").___..--''"`-._ (\ Dimmy the Wild UA1ACZ `6_ 6 ) `-. ( ).`-.__.`) DataArt Enterprises, Inc. (_Y_.)' ._ ) `._ `. ``-..-' Serpukhovskaja street, 10 _..`--'_..-_/ /--'_.' ,' Saint Petersburg, Russia (il),-'' (li),' ((!.-' +7 (812) 3261780, 5552490 ********************************************************************** --_=XFMail.1.4.0.FreeBSD:000816183513:1038=_ Content-Disposition: attachment; filename="fm801.c" Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name=fm801.c; SizeOnDisk=19169 LyoKICogQ29weXJpZ2h0IChjKSAyMDAwIERtaXRyeSBEaWNreSBkaXdpbEBkYXRhYXJ0LmNvbQog KiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFy ZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0 aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu IHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnJyBBTkQKICogQU5ZIEVYUFJFU1Mg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF CiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFCiAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB TEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNU LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U SUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD VAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAq CiAqICRJZCQKICovCgojaW5jbHVkZSA8ZGV2L3NvdW5kL3BjbS9zb3VuZC5oPgojaW5jbHVkZSA8 ZGV2L3NvdW5kL3BjbS9hYzk3Lmg+CiNpbmNsdWRlIDxwY2kvcGNpcmVnLmg+CiNpbmNsdWRlIDxw Y2kvcGNpdmFyLmg+CgojZGVmaW5lIFBDSV9WRU5ET1JfRk9SVEVNRURJQQkweDEzMTkKI2RlZmlu ZSBQQ0lfREVWSUNFX0ZPUlRFTUVESUExCTB4MDgwMTEzMTkKI2RlZmluZSBQQ0lfREVWSUNFX0ZP UlRFTUVESUEyCTB4MDgwMjEzMTkJLyogPz8/IGhhdmUgbm8gaWRlYSB3aGF0J3MgdGhpcy4uLiAq LwoKI2RlZmluZSBGTV9QQ01fVk9MVU1FICAgICAgICAgICAweDAwCiNkZWZpbmUgRk1fRk1fVk9M VU1FICAgICAgICAgICAgMHgwMgojZGVmaW5lIEZNX0kyU19WT0xVTUUgICAgICAgICAgIDB4MDQK I2RlZmluZSBGTV9SRUNPUkRfU09VUkNFICAgICAgICAweDA2CgojZGVmaW5lIEZNX1BMQVlfQ1RM ICAgICAgICAgICAgIDB4MDgKI2RlZmluZSAgRk1fUExBWV9SQVRFX01BU0sgICAgICAgICAgICAg IDB4MGYwMAojZGVmaW5lICBGTV9QTEFZX0JVRjFfTEFTVCAgICAgICAgICAgICAgMHgwMDAxCiNk ZWZpbmUgIEZNX1BMQVlfQlVGMl9MQVNUICAgICAgICAgICAgICAweDAwMDIKI2RlZmluZSAgRk1f UExBWV9TVEFSVCAgICAgICAgICAgICAgICAgIDB4MDAyMAojZGVmaW5lICBGTV9QTEFZX1BBVVNF ICAgICAgICAgICAgICAgICAgMHgwMDQwCiNkZWZpbmUgIEZNX1BMQVlfU1RPUE5PVyAgICAgICAg ICAgICAgICAweDAwODAKI2RlZmluZSAgRk1fUExBWV8xNkJJVCAgICAgICAgICAgICAgICAgIDB4 NDAwMAojZGVmaW5lICBGTV9QTEFZX1NURVJFTyAgICAgICAgICAgICAgICAgMHg4MDAwCgojZGVm aW5lIEZNX1BMQVlfRE1BTEVOICAgICAgICAgIDB4MGEKI2RlZmluZSBGTV9QTEFZX0RNQUJVRjEg ICAgICAgICAweDBjCiNkZWZpbmUgRk1fUExBWV9ETUFCVUYyICAgICAgICAgMHgxMAoKCiNkZWZp bmUgRk1fUkVDX0NUTCAgICAgICAgICAgICAgMHgxNAojZGVmaW5lICBGTV9SRUNfUkFURV9NQVNL ICAgICAgICAgICAgICAgMHgwZjAwCiNkZWZpbmUgIEZNX1JFQ19CVUYxX0xBU1QgICAgICAgICAg ICAgICAweDAwMDEKI2RlZmluZSAgRk1fUkVDX0JVRjJfTEFTVCAgICAgICAgICAgICAgIDB4MDAw MgojZGVmaW5lICBGTV9SRUNfU1RBUlQgICAgICAgICAgICAgICAgICAgMHgwMDIwCiNkZWZpbmUg IEZNX1JFQ19QQVVTRSAgICAgICAgICAgICAgICAgICAweDAwNDAKI2RlZmluZSAgRk1fUkVDX1NU T1BOT1cgICAgICAgICAgICAgICAgIDB4MDA4MAojZGVmaW5lICBGTV9SRUNfMTZCSVQgICAgICAg ICAgICAgICAgICAgMHg0MDAwCiNkZWZpbmUgIEZNX1JFQ19TVEVSRU8gICAgICAgICAgICAgICAg ICAweDgwMDAKCgojZGVmaW5lIEZNX1JFQ19ETUFMRU4gICAgICAgICAgIDB4MTYKI2RlZmluZSBG TV9SRUNfRE1BQlVGMSAgICAgICAgICAweDE4CiNkZWZpbmUgRk1fUkVDX0RNQUJVRjIgICAgICAg ICAgMHgxYwoKI2RlZmluZSBGTV9DT0RFQ19DVEwgICAgICAgICAgICAweDIyCiNkZWZpbmUgRk1f Vk9MVU1FICAgICAgICAgICAgICAgMHgyNgojZGVmaW5lICBGTV9WT0xVTUVfTVVURSAgICAgICAg ICAgICAgICAgMHg4MDAwCgojZGVmaW5lIEZNX0NPREVDX0NNRCAgICAgICAgICAgIDB4MmEKI2Rl ZmluZSAgRk1fQ09ERUNfQ01EX1JFQUQgICAgICAgICAgICAgIDB4MDA4MAojZGVmaW5lICBGTV9D T0RFQ19DTURfVkFMSUQgICAgICAgICAgICAgMHgwMTAwCiNkZWZpbmUgIEZNX0NPREVDX0NNRF9C VVNZICAgICAgICAgICAgICAweDAyMDAKCiNkZWZpbmUgRk1fQ09ERUNfREFUQSAgICAgICAgICAg MHgyYwoKI2RlZmluZSBGTV9JT19DVEwgICAgICAgICAgICAgICAweDUyCiNkZWZpbmUgRk1fQ0FS RF9DVEwgICAgICAgICAgICAgMHg1NAoKI2RlZmluZSBGTV9JTlRNQVNLICAgICAgICAgICAgICAw eDU2CiNkZWZpbmUgIEZNX0lOVE1BU0tfUExBWSAgICAgICAgICAgICAgICAweDAwMDEKI2RlZmlu ZSAgRk1fSU5UTUFTS19SRUMgICAgICAgICAgICAgICAgIDB4MDAwMgojZGVmaW5lICBGTV9JTlRN QVNLX1ZPTCAgICAgICAgICAgICAgICAgMHgwMDQwCiNkZWZpbmUgIEZNX0lOVE1BU0tfTVBVICAg ICAgICAgICAgICAgICAweDAwODAKCiNkZWZpbmUgRk1fSU5UU1RBVFVTICAgICAgICAgICAgMHg1 YQojZGVmaW5lICBGTV9JTlRTVEFUVVNfUExBWSAgICAgICAgICAgICAgMHgwMTAwCiNkZWZpbmUg IEZNX0lOVFNUQVRVU19SRUMgICAgICAgICAgICAgICAweDAyMDAKI2RlZmluZSAgRk1fSU5UU1RB VFVTX1ZPTCAgICAgICAgICAgICAgIDB4NDAwMAojZGVmaW5lICBGTV9JTlRTVEFUVVNfTVBVICAg ICAgICAgICAgICAgMHg4MDAwCgojZGVmaW5lIEZNODAxX0JVRkZTSVpFIDEwMjQqNAkvKiBPdGhl ciB2YWx1ZXMgZG8gbm90IHdvcmshISEgKi8KCi8qIGRlYnVnIHB1cnBvc2VzICovCiNkZWZpbmUg RFBSSU5UCWlmKDApIHByaW50ZgoKCi8qIGNoYW5uZWwgaW50ZXJmYWNlICovCnN0YXRpYyB2b2lk ICpmbTgwMWNoX2luaXQodm9pZCAqZGV2aW5mbywgc25kX2RidWYgKmIsIHBjbV9jaGFubmVsICpj LCBpbnQgZGlyKTsKc3RhdGljIGludCBmbTgwMWNoX3NldGRpcih2b2lkICpkYXRhLCBpbnQgZGly KTsKc3RhdGljIGludCBmbTgwMWNoX3NldGZvcm1hdCh2b2lkICpkYXRhLCB1X2ludDMyX3QgZm9y bWF0KTsKc3RhdGljIGludCBmbTgwMWNoX3NldHNwZWVkKHZvaWQgKmRhdGEsIHVfaW50MzJfdCBz cGVlZCk7CnN0YXRpYyBpbnQgZm04MDFjaF9zZXRibG9ja3NpemUodm9pZCAqZGF0YSwgdV9pbnQz Ml90IGJsb2Nrc2l6ZSk7CnN0YXRpYyBpbnQgZm04MDFjaF90cmlnZ2VyKHZvaWQgKmRhdGEsIGlu dCBnbyk7CnN0YXRpYyBpbnQgZm04MDFjaF9nZXRwdHIodm9pZCAqZGF0YSk7CnN0YXRpYyBwY21j aGFuX2NhcHMgKmZtODAxY2hfZ2V0Y2Fwcyh2b2lkICpkYXRhKTsKLyoKc3RhdGljIGludCBmbTgw MWNoX3NldHVwKHBjbV9jaGFubmVsICpjKTsKKi8KCnN0YXRpYyBwY21jaGFuX2NhcHMgZm04MDFj aF9jYXBzID0gewoJNDAwMCwgNDgwMDAsCglBRk1UX1NURVJFTyB8IEFGTVRfVTggfCBBRk1UX1Mx Nl9MRSwKCUFGTVRfU1RFUkVPIHwgQUZNVF9VOCB8IEFGTVRfUzE2X0xFCn07CiAgICAgICAgICAg ICAgICAKc3RhdGljIHBjbV9jaGFubmVsIGZtODAxX2NoYW50ZW1wbGF0ZSA9IHsKCWZtODAxY2hf aW5pdCwKCWZtODAxY2hfc2V0ZGlyLAoJZm04MDFjaF9zZXRmb3JtYXQsCglmbTgwMWNoX3NldHNw ZWVkLAoJZm04MDFjaF9zZXRibG9ja3NpemUsCglmbTgwMWNoX3RyaWdnZXIsCglmbTgwMWNoX2dl dHB0ciwKCWZtODAxY2hfZ2V0Y2FwcywKfTsKCnN0cnVjdCBmbTgwMV9pbmZvOwoKc3RydWN0IGZt ODAxX2NoaW5mbyB7CglzdHJ1Y3QgZm04MDFfaW5mbyAJKnBhcmVudDsKCXBjbV9jaGFubmVsIAkJ KmNoYW5uZWw7CglzbmRfZGJ1ZiAJCSpidWZmZXI7Cgl1X2ludDMyX3QgCQlzcGQsIGRpciwgZm10 OwkvKiBzcGVlZCwgZGlyZWN0aW9uLCBmb3JtYXQgKi8KCXVfaW50MzJfdAkJc2hpZnQ7Cn07Cgpz dHJ1Y3QgZm04MDFfaW5mbyB7CglpbnQgCQkJdHlwZTsKCWJ1c19zcGFjZV90YWdfdCAJc3Q7Cgli dXNfc3BhY2VfaGFuZGxlX3QgCXNoOwoJYnVzX2RtYV90YWdfdCAgIAlwYXJlbnRfZG1hdDsKCQoJ ZGV2aWNlX3QgCQlkZXY7CglpbnQgCQkJbnVtOwoJdV9pbnQzMl90IAkJdW5pdDsKCQoJc3RydWN0 IHJlc291cmNlIAkqcmVnLCAqaXJxOwoJaW50ICAgICAgICAgICAgIAlyZWd0eXBlLCByZWdpZCwg aXJxaWQ7Cgl2b2lkICAgICAgICAgICAgCSppaDsKCgl1X2ludDMyX3QJCXBsYXlfZmxpcCwKCQkJ CXBsYXlfbmV4dGJsaywKCQkJCXBsYXlfc3RhcnQsCgkJCQlwbGF5X2Jsa3NpemUsCgkJCQlwbGF5 X2ZtdCwKCQkJCXBsYXlfc2hpZnQsCgkJCQlwbGF5X3NpemU7CgkKCXVfaW50MzJfdAkJcmVjX2Zs aXAsCgkJCQlyZWNfbmV4dGJsaywKCQkJCXJlY19zdGFydCwKCQkJCXJlY19ibGtzaXplLAoJCQkJ cmVjX2ZtdCwKCQkJCXJlY19zaGlmdCwKCQkJCXJlY19zaXplOwoJCglzdHJ1Y3QgZm04MDFfY2hp bmZvIAlwY2gsIHJjaDsKfTsKCgovKiBzZXZlcmFsIHByb2NlZHVyZXMgdG8gcmVsZWFzZSB0aGUg dGhpbmcgcHJvcGVybHkgaWYgY29tcGlsZWQgYXMgbW9kdWxlICovCnN0YXRpYyBzdHJ1Y3QgZm04 MDFfaW5mbyAqc2F2ZTgwMTsKc3RydWN0IGZtODAxX2luZm8gKmZtODAxX2dldCBfX1AoKHZvaWQg KSk7CgpzdGF0aWMgdm9pZApmbTgwMV9zYXZlKHN0cnVjdCBmbTgwMV9pbmZvICpmbTgwMSkKewoJ c2F2ZTgwMSA9IGZtODAxOwp9CgpzdHJ1Y3QgZm04MDFfaW5mbyAqCmZtODAxX2dldCh2b2lkICkK ewoJcmV0dXJuIHNhdmU4MDE7Cn0KCi8qIEJ1cyBSZWFkIC8gV3JpdGUgcm91dGluZXMgKi8Kc3Rh dGljIHVfaW50MzJfdApmbTgwMV9yZChzdHJ1Y3QgZm04MDFfaW5mbyAqZm04MDEsIGludCByZWdu bywgaW50IHNpemUpCnsKCXN3aXRjaChzaXplKSB7CgljYXNlIDE6CgkJcmV0dXJuIChidXNfc3Bh Y2VfcmVhZF8xKGZtODAxLT5zdCwgZm04MDEtPnNoLCByZWdubykpOwoJY2FzZSAyOgoJCXJldHVy biAoYnVzX3NwYWNlX3JlYWRfMihmbTgwMS0+c3QsIGZtODAxLT5zaCwgcmVnbm8pKTsKCWNhc2Ug NDoKCQlyZXR1cm4gKGJ1c19zcGFjZV9yZWFkXzQoZm04MDEtPnN0LCBmbTgwMS0+c2gsIHJlZ25v KSk7CglkZWZhdWx0OgoJCXJldHVybiAweGZmZmZmZmZmOwoJfQp9CgpzdGF0aWMgdm9pZApmbTgw MV93cihzdHJ1Y3QgZm04MDFfaW5mbyAqZm04MDEsIGludCByZWdubywgdV9pbnQzMl90IGRhdGEs IGludCBzaXplKQp7Cglzd2l0Y2goc2l6ZSkgewoJY2FzZSAxOgoJCXJldHVybiBidXNfc3BhY2Vf d3JpdGVfMShmbTgwMS0+c3QsIGZtODAxLT5zaCwgcmVnbm8sIGRhdGEpOwoJY2FzZSAyOgoJCXJl dHVybiBidXNfc3BhY2Vfd3JpdGVfMihmbTgwMS0+c3QsIGZtODAxLT5zaCwgcmVnbm8sIGRhdGEp OwoJY2FzZSA0OgoJCXJldHVybiBidXNfc3BhY2Vfd3JpdGVfNChmbTgwMS0+c3QsIGZtODAxLT5z aCwgcmVnbm8sIGRhdGEpOwoJZGVmYXVsdDoKCQlyZXR1cm47Cgl9Cn0KCi8qCiAqICBhYzk3IGNv ZGVjIHJvdXRpbmVzCiAqLwojZGVmaW5lIFRJTU8gNTAKc3RhdGljIHVfaW50MzJfdApmbTgwMV9y ZGNkKHZvaWQgKmRldmluZm8sIGludCByZWdubykKewoJc3RydWN0IGZtODAxX2luZm8gKmZtODAx ID0gKHN0cnVjdCBmbTgwMV9pbmZvICopZGV2aW5mbzsKCWludCBpOwoJCglmb3IgKGkgPSAwOyBp IDwgVElNTyAmJiBmbTgwMV9yZChmbTgwMSxGTV9DT0RFQ19DTUQsMikgJiBGTV9DT0RFQ19DTURf QlVTWTsgaSsrKSB7CgkJREVMQVkoMTAwMDApOwoJfQoJaWYgKGkgPj0gVElNTykgewoJCXByaW50 ZigiZm04MDEgcmRjZDogY29kZWMgYnVzeVxuIik7CgkJcmV0dXJuIDA7Cgl9CgkKCWZtODAxX3dy KGZtODAxLEZNX0NPREVDX0NNRCwgcmVnbm98Rk1fQ09ERUNfQ01EX1JFQUQsMik7CgoJZm9yIChp ID0gMDsgaSA8IFRJTU8gJiYgIShmbTgwMV9yZChmbTgwMSxGTV9DT0RFQ19DTUQsMikgJiBGTV9D T0RFQ19DTURfVkFMSUQpOyBpKyspCgl7CgkJREVMQVkoMTAwMDApOwoJfQoJaWYgKGkgPj0gVElN TykgewoJCXByaW50ZigiZm04MDEgcmRjZDogd3JpdGUgY29kZWMgaW52YWxpZFxuIik7CgkJcmV0 dXJuIDA7Cgl9CgkJCglyZXR1cm4gZm04MDFfcmQoZm04MDEsRk1fQ09ERUNfREFUQSwyKTsKfQoK c3RhdGljIHZvaWQKZm04MDFfd3JjZCh2b2lkICpkZXZpbmZvLCBpbnQgcmVnbm8sIHVfaW50MzJf dCBkYXRhKQp7CglzdHJ1Y3QgZm04MDFfaW5mbyAqZm04MDEgPSAoc3RydWN0IGZtODAxX2luZm8g KilkZXZpbmZvOwoJaW50IGk7CgkKCURQUklOVCgiZm04MDFfd3JjZCByZWcgMHgleFxuIixyZWdu byk7CgkKCS8qIFBvbGwgdW50aWwgY29kZWMgaXMgcmVhZHkgKi8KCWZvciAoaSA9IDA7IGkgPCBU SU1PICYmIGZtODAxX3JkKGZtODAxLEZNX0NPREVDX0NNRCwyKSAmIEZNX0NPREVDX0NNRF9CVVNZ OyBpKyspIHsKCQlERUxBWSgxMDAwMCk7Cgl9CglpZiAoaSA+PSBUSU1PKSB7CgkJcHJpbnRmKCJm bTgwMSB3cmNkOiByZWFkIGNvZGVjIGJ1c3lcbiIpOwoJCXJldHVybjsKCX0KCQoJZm04MDFfd3Io Zm04MDEsRk1fQ09ERUNfREFUQSxkYXRhLCAyKTsKCWZtODAxX3dyKGZtODAxLEZNX0NPREVDX0NN RCwgcmVnbm8sMik7CglyZXR1cm47Cn0KCi8qIAogKiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgCiAq LwpzdGF0aWMgdm9pZApmbTgwMV9pbnRyKHZvaWQgKnApCnsKCXN0cnVjdCBmbTgwMV9pbmZvIAkq Zm04MDEgPSAoc3RydWN0IGZtODAxX2luZm8gKilwOwoJdV9pbnQzMl90ICAgICAgIAlpbnRzcmMg PSBmbTgwMV9yZChmbTgwMSwgRk1fSU5UU1RBVFVTLCAyKTsKCXN0cnVjdCBmbTgwMV9jaGluZm8J KmNoID0gJihmbTgwMS0+cGNoKTsKCXNuZF9kYnVmIAkJKmIgPSBjaC0+YnVmZmVyOwoJCglEUFJJ TlQoIlxuZm04MDFfaW50ciBpbnRzcmMgMHgleCAiLCBpbnRzcmMpOwoJRFBSSU5UKCJycCAlZCwg cmwgJWQsIGZwICVkIGZsICVkLCBzaXplPSVkXG4iLAoJCWItPnJwLGItPnJsLCBiLT5mcCxiLT5m bCwgYi0+Ymxrc3opOwoJCQoJaWYoaW50c3JjICYgRk1fSU5UU1RBVFVTX1BMQVkpIHsKCQlmbTgw MS0+cGxheV9mbGlwKys7CgkJaWYoZm04MDEtPnBsYXlfZmxpcCAmIDEpIAoJCQlmbTgwMV93cihm bTgwMSwgRk1fUExBWV9ETUFCVUYxLCBmbTgwMS0+cGxheV9zdGFydCw0KTsKCQllbHNlCgkJCWZt ODAxX3dyKGZtODAxLCBGTV9QTEFZX0RNQUJVRjIsIGZtODAxLT5wbGF5X25leHRibGssNCk7CgkJ Y2huX2ludHIoZm04MDEtPnBjaC5jaGFubmVsKTsKCX0gCgkKCWlmKGludHNyYyAmIEZNX0lOVFNU QVRVU19SRUMpIHsKCQlmbTgwMS0+cmVjX2ZsaXArKzsKCQlpZihmbTgwMS0+cmVjX2ZsaXApIAoJ CQlmbTgwMV93cihmbTgwMSwgRk1fUkVDX0RNQUJVRjEsIGZtODAxLT5yZWNfc3RhcnQsNCk7CgkJ ZWxzZQoJCQlmbTgwMV93cihmbTgwMSwgRk1fUkVDX0RNQUJVRjIsIGZtODAxLT5yZWNfbmV4dGJs ayw0KTsKCQljaG5faW50cihmbTgwMS0+cmNoLmNoYW5uZWwpOwoJfQoJCglpZiAoIGludHNyYyAm IEZNX0lOVFNUQVRVU19NUFUgKSB7CgkJLyogVGhpcyBpcyBhIFRPRE9pc2ggdGhpbmcuLi4gKi8K CQlmbTgwMV93cihmbTgwMSwgRk1fSU5UU1RBVFVTLCBpbnRzcmMgJiBGTV9JTlRTVEFUVVNfTVBV LDIpOwoJfQoJCglpZiAoIGludHNyYyAmIEZNX0lOVFNUQVRVU19WT0wgKSB7CgkJLyogVGhpcyBp cyBhIFRPRE9pc2ggdGhpbmcuLi4gKi8KCQlmbTgwMV93cihmbTgwMSwgRk1fSU5UU1RBVFVTLCBp bnRzcmMgJiBGTV9JTlRTVEFUVVNfVk9MLDIpOwoJfQoJCglEUFJJTlQoImZtODAxX2ludHIgY2xl YXJcblxuIik7CglmbTgwMV93cihmbTgwMSwgRk1fSU5UU1RBVFVTLCBpbnRzcmMgJiAoRk1fSU5U U1RBVFVTX1BMQVkgfCBGTV9JTlRTVEFUVVNfUkVDKSwgMik7Cn0KCi8qCiAqICBJbml0IHJvdXRp bmUgaXMgdGFrZW4gZnJvbSBhbiBvcmlnaW5hbCBOZXRCU0QgZHJpdmVyCiAqLwpzdGF0aWMgaW50 CmZtODAxX2luaXQoc3RydWN0IGZtODAxX2luZm8gKmZtODAxKQp7Cgl1X2ludDMyX3QgazE7CgkK CS8qIHJlc2V0IGNvZGVjICovCglmbTgwMV93cihmbTgwMSwgRk1fQ09ERUNfQ1RMLCAweDAwMjAs Mik7CglERUxBWSgxMDAwMDApOwoJZm04MDFfd3IoZm04MDEsIEZNX0NPREVDX0NUTCwgMHgwMDAw LDIpOwoJREVMQVkoMTAwMDAwKTsKCQoJZm04MDFfd3IoZm04MDEsIEZNX1BDTV9WT0xVTUUsIDB4 MDgwOCwyKTsKCWZtODAxX3dyKGZtODAxLCBGTV9GTV9WT0xVTUUsIDB4MDgwOCwyKTsKCWZtODAx X3dyKGZtODAxLCBGTV9JMlNfVk9MVU1FLCAweDA4MDgsMik7CgkKCWZtODAxX3dyKCh2b2lkICop Zm04MDEsIEZNX1JFQ09SRF9TT1VSQ0UsIDB4MDAwMCwyKTsKCQoJLyogVW5tYXNrIHBsYXliYWNr LCByZWNvcmQgYW5kIG1wdSBpbnRlcnJ1cHRzLCBtYXNrIHRoZSByZXN0ICovCglrMSA9IGZtODAx X3JkKCh2b2lkICopZm04MDEsIEZNX0lOVE1BU0ssMik7CglmbTgwMV93cihmbTgwMSwgRk1fSU5U TUFTSywKCQkoazEgJiB+KEZNX0lOVE1BU0tfUExBWSB8IEZNX0lOVE1BU0tfUkVDIHwgRk1fSU5U TUFTS19NUFUpKSB8CgkJRk1fSU5UTUFTS19WT0wsMik7CglmbTgwMV93cihmbTgwMSwgRk1fSU5U U1RBVFVTLAoJCUZNX0lOVFNUQVRVU19QTEFZIHwgRk1fSU5UU1RBVFVTX1JFQyB8IEZNX0lOVFNU QVRVU19NUFUgfAoJCUZNX0lOVFNUQVRVU19WT0wsMik7CgkKCURQUklOVCgiRk04MDEgaW5pdCBP a1xuIik7CglyZXR1cm4gMDsKfQoKc3RhdGljIGludApmbTgwMV9wY2lfYXR0YWNoKGRldmljZV90 IGRldikKewoJc25kZGV2X2luZm8gCQkqZDsKCXVfaW50MzJfdCAJCWRhdGE7CglzdHJ1Y3QgYWM5 N19pbmZvIAkqY29kZWM7CglzdHJ1Y3QgZm04MDFfaW5mbyAJKmZtODAxOwoJaW50IAkJCWk7Cglp bnQgCQkJbWFwcGVkID0gMDsKCWNoYXIgCQkJc3RhdHVzW1NORF9TVEFUVVNMRU5dOwoJCglkID0g ZGV2aWNlX2dldF9zb2Z0YyhkZXYpOwoJaWYgKChmbTgwMSA9IChzdHJ1Y3QgZm04MDFfaW5mbyAq KW1hbGxvYyhzaXplb2YoKmZtODAxKSxNX0RFVkJVRiwgTV9OT1dBSVQpKSA9PSBOVUxMKSB7CgkJ ZGV2aWNlX3ByaW50ZihkZXYsICJjYW5ub3QgYWxsb2NhdGUgc29mdGNcbiIpOwoJCXJldHVybiBF TlhJTzsKCX0KCQoJYnplcm8oZm04MDEsIHNpemVvZigqZm04MDEpKTsKCWZtODAxLT50eXBlID0g cGNpX2dldF9kZXZpZChkZXYpOwoJCglkYXRhID0gcGNpX3JlYWRfY29uZmlnKGRldiwgUENJUl9D T01NQU5ELCAyKTsKCWRhdGEgfD0gKFBDSU1fQ01EX1BPUlRFTnxQQ0lNX0NNRF9NRU1FTnxQQ0lN X0NNRF9CVVNNQVNURVJFTik7CglwY2lfd3JpdGVfY29uZmlnKGRldiwgUENJUl9DT01NQU5ELCBk YXRhLCAyKTsKCWRhdGEgPSBwY2lfcmVhZF9jb25maWcoZGV2LCBQQ0lSX0NPTU1BTkQsIDIpOwoJ Cglmb3IgKGkgPSAwOyAobWFwcGVkID09IDApICYmIChpIDwgUENJX01BWE1BUFNfMCk7IGkrKykg ewoJCWZtODAxLT5yZWdpZCA9IFBDSVJfTUFQUyArIGkqNDsKCQlmbTgwMS0+cmVndHlwZSA9IFNZ U19SRVNfTUVNT1JZOwoJCWZtODAxLT5yZWcgPSBidXNfYWxsb2NfcmVzb3VyY2UoZGV2LCBmbTgw MS0+cmVndHlwZSwgJmZtODAxLT5yZWdpZCwKCQkJCQkJMCwgfjAsIDEsIFJGX0FDVElWRSk7CgkJ aWYoIWZtODAxLT5yZWcpCgkJewoJCQlmbTgwMS0+cmVndHlwZSA9IFNZU19SRVNfSU9QT1JUOwoJ CQlmbTgwMS0+cmVnID0gYnVzX2FsbG9jX3Jlc291cmNlKGRldiwgZm04MDEtPnJlZ3R5cGUsICZm bTgwMS0+cmVnaWQsCgkJCQkJCTAsIH4wLCAxLCBSRl9BQ1RJVkUpOwoJCX0KCQkKCQlpZihmbTgw MS0+cmVnKSB7CgkJCWZtODAxLT5zdCA9IHJtYW5fZ2V0X2J1c3RhZyhmbTgwMS0+cmVnKTsKCQkJ Zm04MDEtPnNoID0gcm1hbl9nZXRfYnVzaGFuZGxlKGZtODAxLT5yZWcpOwoJCQltYXBwZWQrKzsK CQl9Cgl9CgoJaWYgKG1hcHBlZCA9PSAwKSB7CgkJZGV2aWNlX3ByaW50ZihkZXYsICJ1bmFibGUg dG8gbWFwIHJlZ2lzdGVyIHNwYWNlXG4iKTsKCQlnb3RvIG9vcHM7Cgl9CgkKCWZtODAxX2luaXQo Zm04MDEpOwoJCgljb2RlYyA9IGFjOTdfY3JlYXRlKGRldiwgKHZvaWQgKilmbTgwMSwgTlVMTCwg Zm04MDFfcmRjZCwgZm04MDFfd3JjZCk7CglpZiAoY29kZWMgPT0gTlVMTCkgZ290byBvb3BzOwoK CWlmIChtaXhlcl9pbml0KGQsICZhYzk3X21peGVyLCBjb2RlYykgPT0gLTEpIGdvdG8gb29wczsK CglmbTgwMS0+aXJxaWQgPSAwOwoJZm04MDEtPmlycSA9IGJ1c19hbGxvY19yZXNvdXJjZShkZXYs IFNZU19SRVNfSVJRLCAmZm04MDEtPmlycWlkLAoJCQkJMCwgfjAsIDEsIFJGX0FDVElWRSB8IFJG X1NIQVJFQUJMRSk7CglpZiAoIWZtODAxLT5pcnEgfHwKCQlidXNfc2V0dXBfaW50cihkZXYsIGZt ODAxLT5pcnEsIElOVFJfVFlQRV9UVFksCgkJCQkJZm04MDFfaW50ciwgZm04MDEsICZmbTgwMS0+ aWgpKSB7CgkJZGV2aWNlX3ByaW50ZihkZXYsICJ1bmFibGUgdG8gbWFwIGludGVycnVwdFxuIik7 CgkJZ290byBvb3BzOwoJfQoJCglpZiAoYnVzX2RtYV90YWdfY3JlYXRlKC8qcGFyZW50Ki9OVUxM LCAvKmFsaWdubWVudCovMiwgLypib3VuZGFyeSovMCwKCQkvKmxvd2FkZHIqL0JVU19TUEFDRV9N QVhBRERSXzMyQklULAoJCS8qaGlnaGFkZHIqL0JVU19TUEFDRV9NQVhBRERSLAoJCS8qZmlsdGVy Ki9OVUxMLCAvKmZpbHRlcmFyZyovTlVMTCwKCQkvKm1heHNpemUqL0ZNODAxX0JVRkZTSVpFLCAv Km5zZWdtZW50cyovMSwgLyptYXhzZWd6Ki8weDNmZmZmLAoJCS8qZmxhZ3MqLzAsICZmbTgwMS0+ cGFyZW50X2RtYXQpICE9IDApIHsKCQlkZXZpY2VfcHJpbnRmKGRldiwgInVuYWJsZSB0byBjcmVh dGUgZG1hIHRhZ1xuIik7CgkJZ290byBvb3BzOwoJfQoJCglzbnByaW50ZihzdGF0dXMsIDY0LCAi YXQgJXMgMHglbHggaXJxICVsZCIsCgkJKGZtODAxLT5yZWd0eXBlID09IFNZU19SRVNfSU9QT1JU KT8gImlvIiA6ICJtZW1vcnkiLAoJCXJtYW5fZ2V0X3N0YXJ0KGZtODAxLT5yZWcpLCBybWFuX2dl dF9zdGFydChmbTgwMS0+aXJxKSk7CgojZGVmaW5lIEZNODAxX01BWFBMQVlDSAkxCglpZiAocGNt X3JlZ2lzdGVyKGRldiwgZm04MDEsIEZNODAxX01BWFBMQVlDSCwgMSkpIGdvdG8gb29wczsKCXBj bV9hZGRjaGFuKGRldiwgUENNRElSX1BMQVksICZmbTgwMV9jaGFudGVtcGxhdGUsIGZtODAxKTsK CXBjbV9hZGRjaGFuKGRldiwgUENNRElSX1JFQywgJmZtODAxX2NoYW50ZW1wbGF0ZSwgZm04MDEp OwoJcGNtX3NldHN0YXR1cyhkZXYsIHN0YXR1cyk7CgkKCWZtODAxX3NhdmUoZm04MDEpOwoJcmV0 dXJuIDA7CgkKb29wczoJCglwcmludGYoIkZvcnRlIE1lZGlhIEZNODAxIGluaXRpYWxpemF0aW9u IGZhaWxlZFxuIik7CglpZiAoZm04MDEtPnJlZykgYnVzX3JlbGVhc2VfcmVzb3VyY2UoZGV2LCBm bTgwMS0+cmVndHlwZSwgZm04MDEtPnJlZ2lkLCBmbTgwMS0+cmVnKTsKCWlmIChmbTgwMS0+aWgp IGJ1c190ZWFyZG93bl9pbnRyKGRldiwgZm04MDEtPmlycSwgZm04MDEtPmloKTsKCWlmIChmbTgw MS0+aXJxKSBidXNfcmVsZWFzZV9yZXNvdXJjZShkZXYsIFNZU19SRVNfSVJRLCBmbTgwMS0+aXJx aWQsIGZtODAxLT5pcnEpOwoJZnJlZShmbTgwMSwgTV9ERVZCVUYpOwoJcmV0dXJuIEVOWElPOwp9 CgpzdGF0aWMgaW50CmZtODAxX3BjaV9wcm9iZSggZGV2aWNlX3QgZGV2ICkKewoJaW50IGlkOwoJ aWYgKChpZCA9IHBjaV9nZXRfZGV2aWQoZGV2KSkgPT0gUENJX0RFVklDRV9GT1JURU1FRElBMSAp IHsKCQlkZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiRm9ydGUgTWVkaWEgRk04MDEgQXVkaW8gQ29udHJv bGxlciIpOwoJCXJldHVybiAwOwoJfQovKgogICAqKioqKiBObyBhbnkgaW5mbyBhYm91dCB0aGlz IGZlYXR1cmUgb2YgdGhlIGZtODAxIGluIGEgZGF0YXNoZWV0ICoqKioqCiAgICoqKioqIGJ1dCBt eSBob3QtNjg3eiBtb3RoZXJib2FyZCB3aXRoIGZtODAxIGVtYmVkZGVkIGhhcyBvbmUuLi4gYW55 IGlkZWFzPyAqKioqKgoJaWYgKChpZCA9IHBjaV9nZXRfZGV2aWQoZGV2KSkgPT0gUENJX0RFVklD RV9GT1JURU1FRElBMiApIHsKCQlkZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiRm9ydGUgTWVkaWEgRk04 MDEgSW5wdXQgRGV2aWNlIChNUFU/KSIpOwoJCXJldHVybiAwOwoJfQoqLwoJcmV0dXJuIEVOWElP Owp9CgoKCi8qIGNoYW5uZWwgaW50ZXJmYWNlICovCnN0YXRpYyB2b2lkICoKZm04MDFjaF9pbml0 KHZvaWQgKmRldmluZm8sIHNuZF9kYnVmICpiLCBwY21fY2hhbm5lbCAqYywgaW50IGRpcikKewoJ c3RydWN0IGZtODAxX2luZm8gKmZtODAxID0gKHN0cnVjdCBmbTgwMV9pbmZvICopZGV2aW5mbzsK CXN0cnVjdCBmbTgwMV9jaGluZm8gKmNoID0gKGRpciA9PSBQQ01ESVJfUExBWSk/ICZmbTgwMS0+ cGNoIDogJmZtODAxLT5yY2g7CgkKCURQUklOVCgiZm04MDFjaF9pbml0LCBkaXJlY3Rpb24gPSAl ZFxuIiwgZGlyKTsKCWNoLT5wYXJlbnQgPSBmbTgwMTsKCWNoLT5jaGFubmVsID0gYzsKCWNoLT5i dWZmZXIgPSBiOwoJY2gtPmJ1ZmZlci0+YnVmc2l6ZSA9IEZNODAxX0JVRkZTSVpFOwoJY2gtPmRp ciA9IGRpcjsKCWlmKCBjaG5fYWxsb2NidWYoY2gtPmJ1ZmZlciwgZm04MDEtPnBhcmVudF9kbWF0 KSA9PSAtMSkgcmV0dXJuIE5VTEw7CglyZXR1cm4gKHZvaWQgKiljaDsKfQoKc3RhdGljIGludApm bTgwMWNoX3NldGRpcih2b2lkICpkYXRhLCBpbnQgZGlyKQp7CglzdHJ1Y3QgZm04MDFfY2hpbmZv ICpjaCA9IGRhdGE7CgljaC0+ZGlyID0gZGlyOwoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQKZm04 MDFjaF9zZXRmb3JtYXQodm9pZCAqZGF0YSwgdV9pbnQzMl90IGZvcm1hdCkKewoJc3RydWN0IGZt ODAxX2NoaW5mbyAqY2ggPSBkYXRhOwoJc3RydWN0IGZtODAxX2luZm8gKmZtODAxID0gY2gtPnBh cmVudDsKCQoJRFBSSU5UKCJmbTgwMWNoX3NldGZvcm1hdCAweCV4IDogJXMsICVzLCAlcywgJXNc biIsIGZvcm1hdCwKCQkoZm9ybWF0ICYgQUZNVF9TVEVSRU8pPyJzdGVyZW8iOiJtb25vIiwKCQko Zm9ybWF0ICYgKEFGTVRfUzE2X0xFIHwgQUZNVF9TMTZfQkUgfCBBRk1UX1UxNl9MRSB8IEFGTVRf VTE2X0JFKSkgPyAiMTZiaXQiOiI4Yml0IiwKCQkoZm9ybWF0ICYgQUZNVF9TSUdORUQpPyAic2ln bmVkIjoidW5zaWduZWQiLAoJCShmb3JtYXQgJiBBRk1UX0JJR0VORElBTik/ImJpZ2VuZGlhaCI6 ImxpdHRsZWVuZGlhbiIgKTsKCQoJaWYoY2gtPmRpciA9PSBQQ01ESVJfUExBWSkgewoJCWZtODAx LT5wbGF5X2ZtdCA9ICAoZm9ybWF0ICYgQUZNVF9TVEVSRU8pPyBGTV9QTEFZX1NURVJFTyA6IDA7 CgkJZm04MDEtPnBsYXlfZm10IHw9IChmb3JtYXQgJiBBRk1UXzE2QklUKSA/IEZNX1BMQVlfMTZC SVQgOiAwOwoJCXJldHVybiBmbTgwMS0+cGxheV9mbXQ7Cgl9CgkKCWlmKGNoLT5kaXIgPT0gUENN RElSX1JFQyApIHsKCQlmbTgwMS0+cmVjX2ZtdCA9IChmb3JtYXQgJiBBRk1UX1NURVJFTyk/IEZN X1JFQ19TVEVSRU86MDsKCQlmbTgwMS0+cmVjX2ZtdCB8PSAoZm9ybWF0ICYgQUZNVF8xNkJJVCkg PyBGTV9QTEFZXzE2QklUIDogMDsKCQlyZXR1cm4gZm04MDEtPnJlY19mbXQ7Cgl9CgkKCXJldHVy biAwOwp9CgpzdHJ1Y3QgewoJaW50IGxpbWl0OwoJaW50IHJhdGU7Cn0gZm04MDFfcmF0ZXNbMTFd ID0gewoJeyAgNjYwMCwgIDU1MDAgfSwgICAgICAgICAKCXsgIDg3NTAsICA4MDAwIH0sICAgICAg ICAgCgl7IDEwMjUwLCAgOTYwMCB9LCAgICAgICAgIAoJeyAxMzIwMCwgMTEwMjUgfSwgICAgICAg ICAKCXsgMTc1MDAsIDE2MDAwIH0sICAgICAgICAgCgl7IDIwNTAwLCAxOTIwMCB9LCAgICAgICAg IAoJeyAyNjUwMCwgMjIwNTAgfSwgICAgICAgICAKCXsgMzUwMDAsIDMyMDAwIH0sICAgICAgICAg Cgl7IDQxMDAwLCAzODQwMCB9LCAgICAgICAgIAoJeyA0NjAwMCwgNDQxMDAgfSwgICAgICAgICAK CXsgNDgwMDAsIDQ4MDAwIH0sICAgICAgICAgCi8qIGFueXRoaW5nIGFib3ZlIC0+IDQ4MDAwICov Cn07CgpzdGF0aWMgaW50CmZtODAxY2hfc2V0c3BlZWQodm9pZCAqZGF0YSwgdV9pbnQzMl90IHNw ZWVkKQp7CglzdHJ1Y3QgZm04MDFfY2hpbmZvICpjaCA9IGRhdGE7CglzdHJ1Y3QgZm04MDFfaW5m byAqZm04MDEgPSBjaC0+cGFyZW50OwoJcmVnaXN0ZXIgaW50IGk7CgkKCQoJZm9yIChpID0gMDsg aSA8IDEwICYmIGZtODAxX3JhdGVzW2ldLmxpbWl0IDw9IHNwZWVkOyBpKyspIDsKCQoJaWYoY2gt PmRpciA9PSBQQ01ESVJfUExBWSkgewoJCWZtODAxLT5wY2guc3BkID0gZm04MDFfcmF0ZXNbaV0u cmF0ZTsKCQlmbTgwMS0+cGxheV9zaGlmdCA9IChpPDw4KTsKCQlmbTgwMS0+cGxheV9zaGlmdCAm PSBGTV9QTEFZX1JBVEVfTUFTSzsKCX0KCQoJaWYoY2gtPmRpciA9PSBQQ01ESVJfUkVDICkgewoJ CWZtODAxLT5yY2guc3BkID0gZm04MDFfcmF0ZXNbaV0ucmF0ZTsKCQlmbTgwMS0+cmVjX3NoaWZ0 ID0gKGk8PDgpOwoJCWZtODAxLT5yZWNfc2hpZnQgJj0gRk1fUkVDX1JBVEVfTUFTSzsKCX0KCQoJ Y2gtPnNwZCA9IGZtODAxX3JhdGVzW2ldLnJhdGU7CgkKCXJldHVybiBmbTgwMV9yYXRlc1tpXS5y YXRlOwp9CgpzdGF0aWMgaW50CmZtODAxY2hfc2V0YmxvY2tzaXplKHZvaWQgKmRhdGEsIHVfaW50 MzJfdCBibG9ja3NpemUpCnsKCXN0cnVjdCBmbTgwMV9jaGluZm8gKmNoID0gZGF0YTsKCXN0cnVj dCBmbTgwMV9pbmZvICpmbTgwMSA9IGNoLT5wYXJlbnQ7CgkKCWZtODAxLT5wbGF5X2Jsa3NpemUg PSBibG9ja3NpemU7CglmbTgwMS0+cmVjX2Jsa3NpemUgPSBibG9ja3NpemU7CgkKCURQUklOVCgi Zm04MDFjaF9zZXRibG9ja3NpemUgJWQgKGRpciAlZClcbiIsYmxvY2tzaXplLCBjaC0+ZGlyKTsK CglyZXR1cm4gYmxvY2tzaXplOwp9CgpzdGF0aWMgaW50CmZtODAxY2hfdHJpZ2dlcih2b2lkICpk YXRhLCBpbnQgZ28pCnsKCXN0cnVjdCBmbTgwMV9jaGluZm8gKmNoID0gZGF0YTsKCXN0cnVjdCBm bTgwMV9pbmZvICpmbTgwMSA9IGNoLT5wYXJlbnQ7Cgl1X2ludDMyX3QgYmFzZWFkZHIgPSB2dG9w aHlzKGNoLT5idWZmZXItPmJ1Zik7CglzbmRfZGJ1ZiAqYiA9IGNoLT5idWZmZXI7Cgl1X2ludDMy X3QgazE7CgkKCURQUklOVCgiZm04MDFjaF90cmlnZ2VyIGdvICVkICwgIiwgZ28pOwoJRFBSSU5U KCJycCAlZCwgcmwgJWQsIGZwICVkIGZsICVkLCBkbCAlZCwgYmxrc2l6ZT0lZFxuIiwKCQliLT5y cCxiLT5ybCwgYi0+ZnAsYi0+ZmwsIGItPmRsLCBiLT5ibGtzeik7CgkKCWlmIChnbyA9PSBQQ01U UklHX0VNTERNQVdSIHx8IGdvID09IFBDTVRSSUdfRU1MRE1BUkQpIHsKCQlyZXR1cm4gMDsKCX0K CQoJaWYgKGNoLT5kaXIgPT0gUENNRElSX1BMQVkpIHsKCQlpZiAoZ28gPT0gUENNVFJJR19TVEFS VCkgewoJCQkJCgkJCWZtODAxLT5wbGF5X3N0YXJ0ID0gYmFzZWFkZHI7CgkJCWZtODAxLT5wbGF5 X3NpemUgPSBiLT5ibGtzejsKCQkJZm04MDEtPnBsYXlfYmxrc2l6ZSA9IGZtODAxLT5wbGF5X3Np emU7CgkJCWZtODAxLT5wbGF5X25leHRibGsgPSBmbTgwMS0+cGxheV9zdGFydCArIGZtODAxLT5w bGF5X2Jsa3NpemU7CgkJCWZtODAxLT5wbGF5X2ZsaXAgPSAwOwoJCQlmbTgwMV93cihmbTgwMSwg Rk1fUExBWV9ETUFMRU4sIGZtODAxLT5wbGF5X2Jsa3NpemUgLSAxLCAyKTsKCQkJZm04MDFfd3Io Zm04MDEsIEZNX1BMQVlfRE1BQlVGMSxmbTgwMS0+cGxheV9zdGFydCw0KTsKCQkJZm04MDFfd3Io Zm04MDEsIEZNX1BMQVlfRE1BQlVGMixmbTgwMS0+cGxheV9uZXh0YmxrLDQpOwoJCQlmbTgwMV93 cihmbTgwMSwgRk1fUExBWV9DVEwsCgkJCQkJRk1fUExBWV9TVEFSVCB8IEZNX1BMQVlfU1RPUE5P VyB8IGZtODAxLT5wbGF5X2ZtdCB8IGZtODAxLT5wbGF5X3NoaWZ0LCAKCQkJCQkyICk7CgkJCX0g ZWxzZSB7CgkJCWsxID0gZm04MDFfcmQoZm04MDEsIEZNX1BMQVlfQ1RMLDIpOwoJCQlmbTgwMV93 cihmbTgwMSwgRk1fUExBWV9DVEwsCgkJCQkoazEgJiB+KEZNX1BMQVlfU1RPUE5PVyB8IEZNX1BM QVlfU1RBUlQpKSB8CgkJCQlGTV9QTEFZX0JVRjFfTEFTVCB8IEZNX1BMQVlfQlVGMl9MQVNULCAy ICk7CgkJfQoJfSBlbHNlIGlmKGNoLT5kaXIgPT0gUENNRElSX1JFQykgewoJCWlmIChnbyA9PSBQ Q01UUklHX1NUQVJUKSB7CgkJCWZtODAxLT5yZWNfc3RhcnQgPSBiYXNlYWRkcjsKCQkJZm04MDEt PnJlY19zaXplID0gYi0+Ymxrc3o7CgkJCWZtODAxLT5yZWNfYmxrc2l6ZSA9IGZtODAxLT5yZWNf c2l6ZTsKCQkJZm04MDEtPnJlY19uZXh0YmxrID0gZm04MDEtPnJlY19zdGFydCArIGZtODAxLT5y ZWNfYmxrc2l6ZTsKCQkJZm04MDEtPnJlY19mbGlwID0gMDsKCQkJZm04MDFfd3IoZm04MDEsIEZN X1JFQ19ETUFMRU4sIGZtODAxLT5yZWNfYmxrc2l6ZSAtIDEsIDIpOwoJCQlmbTgwMV93cihmbTgw MSwgRk1fUkVDX0RNQUJVRjEsZm04MDEtPnJlY19zdGFydCw0KTsKCQkJZm04MDFfd3IoZm04MDEs IEZNX1JFQ19ETUFCVUYyLGZtODAxLT5yZWNfbmV4dGJsayw0KTsKCQkJZm04MDFfd3IoZm04MDEs IEZNX1JFQ19DVEwsIAoJCQkJCUZNX1JFQ19TVEFSVCB8IEZNX1JFQ19TVE9QTk9XIHwgZm04MDEt PnJlY19mbXQgfCBmbTgwMS0+cmVjX3NoaWZ0LCAKCQkJCQkyICk7CgkJCX0gZWxzZSB7CgkJCWsx ID0gZm04MDFfcmQoZm04MDEsIEZNX1JFQ19DVEwsMik7CgkJCWZtODAxX3dyKGZtODAxLCBGTV9S RUNfQ1RMLAoJCQkJKGsxICYgfihGTV9SRUNfU1RPUE5PVyB8IEZNX1JFQ19TVEFSVCkpIHwKCQkJ CUZNX1JFQ19CVUYxX0xBU1QgfCBGTV9SRUNfQlVGMl9MQVNULCAyKTsKCQl9Cgl9CgkKCXJldHVy biAwOwp9CgovKiBBbG1vc3QgQUxTQSBjb3B5ICovCnN0YXRpYyBpbnQKZm04MDFjaF9nZXRwdHIo dm9pZCAqZGF0YSkKewoJc3RydWN0IGZtODAxX2NoaW5mbyAqY2ggPSBkYXRhOwoJc3RydWN0IGZt ODAxX2luZm8gKmZtODAxID0gY2gtPnBhcmVudDsKCWludCByZXN1bHQgPSAwOwoJc25kX2RidWYg KmIgPSBjaC0+YnVmZmVyOwoJCglpZiAoY2gtPmRpciA9PSBQQ01ESVJfUExBWSkgewoJCXJlc3Vs dCA9IGZtODAxX3JkKGZtODAxLCAKCQkJKGZtODAxLT5wbGF5X2ZsaXAmMSkgPyAKCQkJRk1fUExB WV9ETUFCVUYyOkZNX1BMQVlfRE1BQlVGMSwgNCkgLSBmbTgwMS0+cGxheV9zdGFydDsKCX0KCQoJ aWYgKGNoLT5kaXIgPT0gUENNRElSX1JFQykgewoJCXJlc3VsdCA9IGZtODAxX3JkKGZtODAxLAoJ CQkoZm04MDEtPnJlY19mbGlwJjEpID8KCQkJRk1fUkVDX0RNQUJVRjI6Rk1fUkVDX0RNQUJVRjEs IDQpIC0gZm04MDEtPnJlY19zdGFydDsKCX0gCgkKCURQUklOVCgiZm04MDFjaF9nZXRwdHI6JWQs ICBycCAlZCwgcmwgJWQsIGZwICVkIGZsICVkXG4iLAoJICAgICAgICAgICAgICAgIHJlc3VsdCwg Yi0+cnAsYi0+cmwsIGItPmZwLGItPmZsKTsgICAgICAgICAgICAgICAgCgoJcmV0dXJuIHJlc3Vs dDsKfQoKc3RhdGljIHBjbWNoYW5fY2FwcyAqCmZtODAxY2hfZ2V0Y2Fwcyh2b2lkICpkYXRhKQp7 CglyZXR1cm4gJmZtODAxY2hfY2FwczsKfQoKc3RhdGljIGludApmbTgwMV9wY2lfZGV0YWNoKGRl dmljZV90IGRldikKewoJc3RydWN0IGZtODAxX2luZm8gKmZtODAxID0gZm04MDFfZ2V0KCk7CgkK CURQUklOVCgiRm9ydGUgTWVkaWEgRk04MDEgZGV0YWNoXG4iKTsKCglpZiAoZm04MDEtPnJlZykg YnVzX3JlbGVhc2VfcmVzb3VyY2UoZGV2LCBmbTgwMS0+cmVndHlwZSwgZm04MDEtPnJlZ2lkLCBm bTgwMS0+cmVnKTsKCWlmIChmbTgwMS0+aWgpIGJ1c190ZWFyZG93bl9pbnRyKGRldiwgZm04MDEt PmlycSwgZm04MDEtPmloKTsKCWlmIChmbTgwMS0+aXJxKSBidXNfcmVsZWFzZV9yZXNvdXJjZShk ZXYsIFNZU19SRVNfSVJRLCBmbTgwMS0+aXJxaWQsIGZtODAxLT5pcnEpOwoJZnJlZShmbTgwMSwg TV9ERVZCVUYpOwoJcmV0dXJuIDA7CQp9CgpzdGF0aWMgZGV2aWNlX21ldGhvZF90IGZtODAxX21l dGhvZHNbXSA9IHsKCS8qIERldmljZSBpbnRlcmZhY2UgKi8KCURFVk1FVEhPRChkZXZpY2VfcHJv YmUsCQlmbTgwMV9wY2lfcHJvYmUpLAoJREVWTUVUSE9EKGRldmljZV9hdHRhY2gsCWZtODAxX3Bj aV9hdHRhY2gpLAoJREVWTUVUSE9EKGRldmljZV9kZXRhY2gsCWZtODAxX3BjaV9kZXRhY2gpLAoJ eyAwLCAwfQp9OwoKc3RhdGljIGRyaXZlcl90IGZtODAxX2RyaXZlciA9IHsKCSJwY20iLAoJZm04 MDFfbWV0aG9kcywKCXNpemVvZihzbmRkZXZfaW5mbyksCn07CgpzdGF0aWMgZGV2Y2xhc3NfdCBw Y21fZGV2Y2xhc3M7CgpEUklWRVJfTU9EVUxFKGZtODAxLCBwY2ksIGZtODAxX2RyaXZlciwgcGNt X2RldmNsYXNzLDAsIDApOwo= --_=XFMail.1.4.0.FreeBSD:000816183513:1038=_-- End of MIME message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message