Date: Fri, 17 Apr 2009 16:21:26 -0700 From: Maksim Yevmenkin <maksim.yevmenkin@gmail.com> To: Iain Hibbert <plunky@rya-online.net> Cc: "freebsd-bluetooth@freebsd.org" <freebsd-bluetooth@freebsd.org> Subject: Re: libhci update Message-ID: <bb4a86c70904171621i5033bcc3w46b24800e20e7106@mail.gmail.com> In-Reply-To: <1239884118.412855.3144.nullmailer@galant.ukfsn.org> References: <49D92E26.2030508@incunabulum.net> <1239264003.862926.638.nullmailer@galant.ukfsn.org> <bb4a86c70904091013l2d7c2b77ic7f6988e6e7709f2@mail.gmail.com> <49DE4E2F.2000805@incunabulum.net> <bb4a86c70904091337x7061ab5uf57bbaff1d5f3197@mail.gmail.com> <49DE6D42.6000004@incunabulum.net> <bb4a86c70904091537x1c6ec085r877d847268b38d3e@mail.gmail.com> <bb4a86c70904151359y3dcf9627u6f30528f07c7252c@mail.gmail.com> <1239871569.560012.1086.nullmailer@galant.ukfsn.org> <1239884118.412855.3144.nullmailer@galant.ukfsn.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--0016361e86c09175d40467c870d7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Thu, Apr 16, 2009 at 5:15 AM, Iain Hibbert <plunky@rya-online.net> wrote: > On Thu, 16 Apr 2009, Iain Hibbert wrote: > >> +int >> +bt_devfilter(int s, struct bt_devfilter const *new, struct bt_devfilter *old) >> >> And finally, the HCI filter is slightly different in NetBSD (I provided >> independent PKT and EVT filters each of 256 bits) and I'm going to think >> about that.. > > Ok, I'm not objecting in priniciple to coupling the two filters together > but I think that bt_devfilter should be opaque enough that the API does > not depend about its internal structure. Ie, requiring the caller to > subtract 1 and manage the bitwise manipulation > > + f.event_mask |= (1 << (NG_HCI_EVENT_INQUIRY_COMPL - 1)); > + f.event_mask |= (1 << (NG_HCI_EVENT_INQUIRY_RESULT - 1)); > > is too specific and makes the callers somewhat messy. Can we provide some > kind of accessor functions to do that? I include below what I used in > NetBSD for an example.. > > Also, at least for events, the full 256 bits is required because there are > events such as 0xfe (BT Logo) and 0xff (Vendor) that may currently be > returned and the highest value (in 2.1 spec) is 0x3d, dangerously close to > the 64 bit limit. Although its not likely that there will be many packet > types added, it could be that some manufacturers would introduce custom > packet types with similarly high end values.. (eg for private device > configuration?) thanks for the feedback. i'm attaching revisited patch. please take a look and let me know if this is something you happy with. thanks, max --0016361e86c09175d40467c870d7 Content-Type: text/plain; charset=US-ASCII; name="bluetooth.hci.diff.txt" Content-Disposition: attachment; filename="bluetooth.hci.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftni7vzx0 SW5kZXg6IGhjaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhjaS5jCShyZXZpc2lvbiAxOTEwMTIpCisrKyBo Y2kuYwkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDQ0NSBAQAogICogJEZyZWVCU0QkCiAg Ki8KIAorI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGJsdWV0b290aC5oPgogI2luY2x1 ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAj aW5jbHVkZSA8dW5pc3RkLmg+CiAKK3N0YXRpYyBpbnQgICAgYnRfZGV2YW55X2NiKGludCBzLCBz dHJ1Y3QgYnRfZGV2aW5mbyBjb25zdCAqZGksIHZvaWQgKnhkZXZuYW1lKTsKIHN0YXRpYyBjaGFy ICogYnRfZGV2Mm5vZGUgKGNoYXIgY29uc3QgKmRldm5hbWUsIGNoYXIgKm5vZGVuYW1lLCBpbnQg bm5sZW4pOwogCiBpbnQKK2J0X2Rldm9wZW4oY2hhciBjb25zdCAqZGV2bmFtZSkKK3sKKwlzdHJ1 Y3Qgc29ja2FkZHJfaGNpCWhhOworCWJkYWRkcl90CQliYTsKKwlpbnQJCQlzOworCisJaWYgKGRl dm5hbWUgPT0gTlVMTCkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuICgtMSk7CisJfQor CisJbWVtc2V0KCZoYSwgMCwgc2l6ZW9mKGhhKSk7CisJaGEuaGNpX2xlbiA9IHNpemVvZihoYSk7 CisJaGEuaGNpX2ZhbWlseSA9IEFGX0JMVUVUT09USDsKKworCWlmIChidF9hdG9uKGRldm5hbWUs ICZiYSkpIHsKKwkJaWYgKCFidF9kZXZuYW1lKGhhLmhjaV9ub2RlLCAmYmEpKQorCQkJcmV0dXJu ICgtMSk7CisJfSBlbHNlIGlmIChidF9kZXYybm9kZShkZXZuYW1lLCBoYS5oY2lfbm9kZSwKKwkJ CQkJc2l6ZW9mKGhhLmhjaV9ub2RlKSkgPT0gTlVMTCkgeworCQllcnJubyA9IEVOWElPOworCQly ZXR1cm4gKC0xKTsKKwl9CisKKwlzID0gc29ja2V0KFBGX0JMVUVUT09USCwgU09DS19SQVcsIEJM VUVUT09USF9QUk9UT19IQ0kpOworCWlmIChzIDwgMCkKKwkJcmV0dXJuICgtMSk7CisKKwlpZiAo YmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZoYSwgc2l6ZW9mKGhhKSkgPCAwIHx8CisJICAg IGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNpemVvZihoYSkpIDwgMCkgewor CQljbG9zZShzKTsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJcmV0dXJuIChzKTsKK30KKworaW50 CitidF9kZXZjbG9zZShpbnQgcykKK3sKKwlyZXR1cm4gKGNsb3NlKHMpKTsKK30KKworaW50Citi dF9kZXZzZW5kKGludCBzLCB1aW50MTZfdCBvcGNvZGUsIHZvaWQgKnBhcmFtLCBzaXplX3QgcGxl bikKK3sKKwluZ19oY2lfY21kX3BrdF90CWg7CisJc3RydWN0IGlvdmVjCQlpdlsyXTsKKwlpbnQJ CQlpdm47CisKKwlpZiAocGxlbiA8IDAgfHwgKHBsZW4gPiAwICYmIHBhcmFtID09IE5VTEwpKSB7 IAorCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJaXZbMF0uaW92X2Jh c2UgPSAmaDsKKwlpdlswXS5pb3ZfbGVuID0gc2l6ZW9mKGgpOworCWl2biA9IDE7CisKKwloLnR5 cGUgPSBOR19IQ0lfQ01EX1BLVDsKKwloLm9wY29kZSA9IGh0b2xlMTYob3Bjb2RlKTsKKwlpZiAo cGxlbiA+IDApIHsKKwkJaC5sZW5ndGggPSBwbGVuOworCisJCWl2WzFdLmlvdl9iYXNlID0gcGFy YW07CisJCWl2WzFdLmlvdl9sZW4gPSBwbGVuOworCQlpdm4gPSAyOworCX0gZWxzZQorCQloLmxl bmd0aCA9IDA7CisKKwl3aGlsZSAod3JpdGV2KHMsIGl2LCBpdm4pIDwgMCkgeworCQlpZiAoZXJy bm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKQorCQkJY29udGludWU7CisKKwkJcmV0dXJu ICgtMSk7CisJfQorCisJcmV0dXJuICgwKTsKK30KKworaW50CitidF9kZXZyZWN2KGludCBzLCB1 aW50OF90ICpidWYsIHNpemVfdCBzaXplLCB0aW1lX3QgdG8pCit7CisJZmRfc2V0CQlyZmQ7CisJ c3RydWN0IHRpbWV2YWwJdHY7CisJaW50CQluOworCisJaWYgKGJ1ZiA9PSBOVUxMIHx8IHNpemUg PD0gMCB8fCB0byA8IDApIHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOworCX0K KworCUZEX1pFUk8oJnJmZCk7CisJRkRfU0VUKHMsICZyZmQpOworCisJdHYudHZfc2VjID0gdG87 CisJdHYudHZfdXNlYyA9IDA7CisKKwl3aGlsZSAoKG4gPSBzZWxlY3QocyArIDEsICZyZmQsIE5V TEwsIE5VTEwsICZ0dikpIDwgMCkgeworCQlpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09 IEVJTlRSKQorCQkJY29udGludWU7CisKKwkJcmV0dXJuICgtMSk7CisJfQorCisJaWYgKG4gPT0g MCkgeworCQllcnJubyA9IEVUSU1FRE9VVDsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJYXNzZXJ0 KEZEX0lTU0VUKHMsICZyZmQpKTsKKworCXdoaWxlICgobiA9IHJlYWQocywgYnVmLCBzaXplKSkg PCAwKSB7CisJCWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpCisJCQljb250 aW51ZTsKKworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwlyZXR1cm4gKG4pOworfQorCitpbnQKK2J0 X2RldnJlcShpbnQgcywgc3RydWN0IGJ0X2RldnJlcSAqciwgdGltZV90IHRvKQoreworCXVpbnQ4 X3QJCQkJYnVmWzMyMF07IC8qIG1vcmUgdGhhbiBlbm91Z2ggKi8KKwluZ19oY2lfZXZlbnRfcGt0 X3QJCSplID0gKG5nX2hjaV9ldmVudF9wa3RfdCAqKSBidWY7CisJbmdfaGNpX2NvbW1hbmRfY29t cGxfZXAJCSpjYyA9IChuZ19oY2lfY29tbWFuZF9jb21wbF9lcCAqKShlKzEpOworCW5nX2hjaV9j b21tYW5kX3N0YXR1c19lcAkqY3MgPSAobmdfaGNpX2NvbW1hbmRfc3RhdHVzX2VwKikoZSsxKTsK Kwl0aW1lX3QJCQkJdF9lbmQ7CisJdWludDE2X3QJCQlvcGNvZGU7CisJaW50CQkJCW47CisKKwlp ZiAocyA8IDAgfHwgciA9PSBOVUxMIHx8IHRvIDwgMCkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJ cmV0dXJuICgtMSk7CisJfQorCisJaWYgKHItPnJsZW4gPCAwIHx8IChyLT5ybGVuID4gMCAmJiBy LT5ycGFyYW0gPT0gTlVMTCkpIHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOwor CX0KKworCW4gPSBidF9kZXZzZW5kKHMsIHItPm9wY29kZSwgci0+Y3BhcmFtLCByLT5jbGVuKTsK KwlpZiAobiA8IDApCisJCXJldHVybiAoLTEpOworCisJb3Bjb2RlID0gaHRvbGUxNihyLT5vcGNv ZGUpOworCXRfZW5kID0gdGltZShOVUxMKSArIHRvOworCisJZG8geworCQl0byA9IHRfZW5kIC0g dGltZShOVUxMKTsKKwkJaWYgKHRvIDwgMCkKKwkJCXRvID0gMDsKKworCQluID0gYnRfZGV2cmVj dihzLCBidWYsIHNpemVvZihidWYpLCB0byk7CisJCWlmIChuIDwgMCkKKwkJCXJldHVybiAoLTEp OworCisJCWlmIChuIDwgc2l6ZW9mKCplKSkgeworCQkJZXJybm8gPSBFTVNHU0laRTsKKwkJCXJl dHVybiAoLTEpOworCQl9CisKKwkJaWYgKGUtPnR5cGUgIT0gTkdfSENJX0VWRU5UX1BLVCkgewor CQkJZXJybm8gPSBFSU87CisJCQlyZXR1cm4gKC0xKTsKKwkJfQorCisJCW4gLT0gc2l6ZW9mKCpl KTsKKworCQlzd2l0Y2ggKGUtPmV2ZW50KSB7CisJCWNhc2UgTkdfSENJX0VWRU5UX0NPTU1BTkRf Q09NUEw6CisJCQlpZiAoY2MtPm9wY29kZSA9PSBvcGNvZGUpIHsKKwkJCQluIC09IHNpemVvZigq Y2MpOworCisJCQkJaWYgKHItPnJsZW4gPj0gbikgeworCQkJCQlyLT5ybGVuID0gbjsKKwkJCQkJ bWVtY3B5KHItPnJwYXJhbSwgY2MgKyAxLCByLT5ybGVuKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4g KDApOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBOR19IQ0lfRVZFTlRfQ09NTUFORF9TVEFU VVM6CisJCQlpZiAoY3MtPm9wY29kZSA9PSBvcGNvZGUpIHsKKwkJCQlpZiAoci0+ZXZlbnQgIT0g TkdfSENJX0VWRU5UX0NPTU1BTkRfU1RBVFVTKSB7CisJCQkJCWlmIChjcy0+c3RhdHVzICE9IDAp IHsKKwkJCQkJCWVycm5vID0gRUlPOworCQkJCQkJcmV0dXJuICgtMSk7CisJCQkJCX0KKwkJCQl9 IGVsc2UgeworCQkJCQlpZiAoci0+cmxlbiA+PSBuKSB7CisJCQkJCQlyLT5ybGVuID0gbjsKKwkJ CQkJCW1lbWNweShyLT5ycGFyYW0sIGNzLCByLT5ybGVuKTsKKwkJCQkJfQorCisJCQkJCXJldHVy biAoMCk7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWlmIChlLT5l dmVudCA9PSByLT5ldmVudCkgeworCQkJCWlmIChyLT5ybGVuID49IG4pIHsKKwkJCQkJci0+cmxl biA9IG47CisJCQkJCW1lbWNweShyLT5ycGFyYW0sIGUgKyAxLCByLT5ybGVuKTsKKwkJCQl9CisK KwkJCQlyZXR1cm4gKDApOworCQkJfQorCQkJYnJlYWs7CisJCX0KKwl9IHdoaWxlICh0byA+IDAp OworCisJZXJybm8gPSBFVElNRURPVVQ7CisKKwlyZXR1cm4gKC0xKTsKK30KKworaW50CitidF9k ZXZmaWx0ZXIoaW50IHMsIHN0cnVjdCBidF9kZXZmaWx0ZXIgY29uc3QgKm5ldywgc3RydWN0IGJ0 X2RldmZpbHRlciAqb2xkKQoreworCXN0cnVjdCBuZ19idHNvY2tldF9oY2lfcmF3X2ZpbHRlcglm OworCXNvY2tsZW5fdAkJCQlsZW47CisKKwlpZiAobmV3ID09IE5VTEwgJiYgb2xkID09IE5VTEwp IHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOworCX0KKworCWlmIChvbGQgIT0g TlVMTCkgeworCQlsZW4gPSBzaXplb2YoZik7CisJCWlmIChnZXRzb2Nrb3B0KHMsIFNPTF9IQ0lf UkFXLCBTT19IQ0lfUkFXX0ZJTFRFUiwgJmYsICZsZW4pIDwgMCkKKwkJCXJldHVybiAoLTEpOwor CisJCW1lbXNldChvbGQsIDAsIHNpemVvZigqb2xkKSk7CisJCW1lbWNweShvbGQtPnBhY2tldF9t YXNrLCAmZi5wYWNrZXRfbWFzaywKKwkJCXNpemVvZihvbGQtPnBhY2tldF9tYXNrKSk7CisJCW1l bWNweShvbGQtPmV2ZW50X21hc2ssICZmLmV2ZW50X21hc2ssCisJCQlzaXplb2Yob2xkLT5ldmVu dF9tYXNrKSk7CisJfQorCisJaWYgKG5ldyAhPSBOVUxMKSB7CisJCW1lbXNldCgmZiwgMCwgc2l6 ZW9mKGYpKTsKKwkJbWVtY3B5KCZmLnBhY2tldF9tYXNrLCBuZXctPnBhY2tldF9tYXNrLCBzaXpl b2YoZi5wYWNrZXRfbWFzaykpOworCQltZW1jcHkoJmYuZXZlbnRfbWFzaywgbmV3LT5ldmVudF9t YXNrLCBzaXplb2YoZi5ldmVudF9tYXNrKSk7CisKKwkJbGVuID0gc2l6ZW9mKGYpOworCQlpZiAo c2V0c29ja29wdChzLCBTT0xfSENJX1JBVywgU09fSENJX1JBV19GSUxURVIsICZmLCBsZW4pIDwg MCkKKwkJCXJldHVybiAoLTEpOworCX0KKworCXJldHVybiAoMCk7Cit9CisKK3ZvaWQKK2J0X2Rl dmZpbHRlcl9wa3Rfc2V0KHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciwgaW50IHR5cGUpCit7 CisJYml0X3NldChmaWx0ZXItPnBhY2tldF9tYXNrLCB0eXBlIC0gMSk7Cit9CisKK3ZvaWQKK2J0 X2RldmZpbHRlcl9wa3RfY2xyKHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciwgaW50IHR5cGUp Cit7CisJYml0X2NsZWFyKGZpbHRlci0+cGFja2V0X21hc2ssIHR5cGUgLSAxKTsKK30KKworaW50 CitidF9kZXZmaWx0ZXJfcGt0X3RzdChzdHJ1Y3QgYnRfZGV2ZmlsdGVyIGNvbnN0ICpmaWx0ZXIs IGludCB0eXBlKQoreworCXJldHVybiAoYml0X3Rlc3QoZmlsdGVyLT5wYWNrZXRfbWFzaywgdHlw ZSAtIDEpKTsKK30KKwordm9pZAorYnRfZGV2ZmlsdGVyX2V2dF9zZXQoc3RydWN0IGJ0X2RldmZp bHRlciAqZmlsdGVyLCBpbnQgZXZlbnQpCit7CisJYml0X3NldChmaWx0ZXItPmV2ZW50X21hc2ss IGV2ZW50IC0gMSk7Cit9CisKK3ZvaWQKK2J0X2RldmZpbHRlcl9ldnRfY2xyKHN0cnVjdCBidF9k ZXZmaWx0ZXIgKmZpbHRlciwgaW50IGV2ZW50KQoreworCWJpdF9jbGVhcihmaWx0ZXItPmV2ZW50 X21hc2ssIGV2ZW50IC0gMSk7Cit9CisKK2ludAorYnRfZGV2ZmlsdGVyX2V2dF90c3Qoc3RydWN0 IGJ0X2RldmZpbHRlciBjb25zdCAqZmlsdGVyLCBpbnQgZXZlbnQpCit7CisJcmV0dXJuIChiaXRf dGVzdChmaWx0ZXItPmV2ZW50X21hc2ssIGV2ZW50IC0gMSkpOworfQorCitpbnQKK2J0X2Rldmlu cXVpcnkoY2hhciBjb25zdCAqZGV2bmFtZSwgdGltZV90IGxlbmd0aCwgaW50IG51bV9yc3AsCisJ CXN0cnVjdCBidF9kZXZpbnF1aXJ5ICoqaWkpCit7CisJdWludDhfdAkJCQlidWZbMzIwXTsKKwlj aGFyCQkJCV9kZXZuYW1lW0hDSV9ERVZOQU1FX1NJWkVdOworCXN0cnVjdCBidF9kZXZmaWx0ZXIJ CWY7CisJbmdfaGNpX2lucXVpcnlfY3AJCSpjcCA9IChuZ19oY2lfaW5xdWlyeV9jcCAqKSBidWY7 CisJbmdfaGNpX2V2ZW50X3BrdF90CQkqZSA9IChuZ19oY2lfZXZlbnRfcGt0X3QgKikgYnVmOwor CW5nX2hjaV9pbnF1aXJ5X3Jlc3VsdF9lcAkqZXAgPSAobmdfaGNpX2lucXVpcnlfcmVzdWx0X2Vw ICopKGUrMSk7CisJbmdfaGNpX2lucXVpcnlfcmVzcG9uc2UJCSppcjsKKwlzdHJ1Y3QgYnRfZGV2 aW5xdWlyeQkJKmk7CisJaW50CQkJCXMsIG47CisJdGltZV90CQkJCXRvOworCisJaWYgKGlpID09 IE5VTEwpIHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOworCX0KKworCWlmIChk ZXZuYW1lID09IE5VTEwpIHsKKwkJbWVtc2V0KF9kZXZuYW1lLCAwLCBzaXplb2YoX2Rldm5hbWUp KTsKKwkJZGV2bmFtZSA9IF9kZXZuYW1lOworCisJCW4gPSBidF9kZXZlbnVtKGJ0X2RldmFueV9j YiwgX2Rldm5hbWUpOworCQlpZiAobiA8PSAwKSB7CisJCQlpZiAobiA9PSAwKQorCQkJCSppaSA9 IE5VTEw7CisKKwkJCXJldHVybiAobik7CisJCX0KKwl9CisKKwlzID0gYnRfZGV2b3BlbihkZXZu YW1lKTsKKwlpZiAocyA8IDApCisJCXJldHVybiAoLTEpOworCisJaWYgKGJ0X2RldmZpbHRlcihz LCBOVUxMLCAmZikgPCAwKSB7CisJCWJ0X2RldmNsb3NlKHMpOworCQlyZXR1cm4gKC0xKTsKKwl9 CisKKwlidF9kZXZmaWx0ZXJfZXZ0X3NldCgmZiwgTkdfSENJX0VWRU5UX0lOUVVJUllfQ09NUEwp OworCWJ0X2RldmZpbHRlcl9ldnRfc2V0KCZmLCBOR19IQ0lfRVZFTlRfSU5RVUlSWV9SRVNVTFQp OworCisJaWYgKGJ0X2RldmZpbHRlcihzLCAmZiwgTlVMTCkgPCAwKSB7CisJCWJ0X2RldmNsb3Nl KHMpOworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwkvKiBBbHdheXMgdXNlIEdJQUMgTEFQICovCisJ Y3AtPmxhcFswXSA9IDB4MzM7CisJY3AtPmxhcFsxXSA9IDB4OGI7CisJY3AtPmxhcFsyXSA9IDB4 OWU7CisKKwkvKiBDYWxjdWxhdGUgaW5xdWlyZSBsZW5ndGggaW4gMS4yOCBzZWNvbmQgdW5pdHMg Ki8KKwl0byA9ICh0aW1lX3QpICgoZG91YmxlKSBsZW5ndGggLyAxLjI4KTsKKwlpZiAodG8gPD0g MCkKKwkJY3AtPmlucXVpcnlfbGVuZ3RoID0gNDsJCS8qIDUuMTIgc2Vjb25kcyAqLworCWVsc2Ug aWYgKHRvID4gMjU0KQorCQljcC0+aW5xdWlyeV9sZW5ndGggPSAyNTU7CS8qIDMyNi40MCBzZWNv bmRzICovCisJZWxzZQorCQljcC0+aW5xdWlyeV9sZW5ndGggPSB0byArIDE7CisKKwl0byA9ICh0 aW1lX3QpKChkb3VibGUpIGNwLT5pbnF1aXJ5X2xlbmd0aCAqIDEuMjgpICsgMTsKKworCWlmIChu dW1fcnNwIDw9IDAgfHwgbnVtX3JzcCA+IDI1NSkKKwkJbnVtX3JzcCA9IDg7CisJY3AtPm51bV9y ZXNwb25zZXMgPSAodWludDhfdCkgbnVtX3JzcDsKKworCWkgPSAqaWkgPSBjYWxsb2MobnVtX3Jz cCwgc2l6ZW9mKHN0cnVjdCBidF9kZXZpbnF1aXJ5KSk7CisJaWYgKGkgPT0gTlVMTCkgeworCQli dF9kZXZjbG9zZShzKTsKKwkJZXJybm8gPSBFTk9NRU07CisJCXJldHVybiAoLTEpOworCX0KKwor CWlmIChidF9kZXZzZW5kKHMsCisJCU5HX0hDSV9PUENPREUoTkdfSENJX09HRl9MSU5LX0NPTlRS T0wsIE5HX0hDSV9PQ0ZfSU5RVUlSWSksCisJCQljcCwgc2l6ZW9mKCpjcCkpIDwgMCkgeworCQlm cmVlKGkpOworCQlidF9kZXZjbG9zZShzKTsKKwkJcmV0dXJuICgtMSk7CisJfQorCit3YWl0X2Zv cl9tb3JlOgorCisJbiA9IGJ0X2RldnJlY3YocywgYnVmLCBzaXplb2YoYnVmKSwgdG8pOworCWlm IChuIDwgMCkgeworCQlmcmVlKGkpOworCQlidF9kZXZjbG9zZShzKTsKKwkJcmV0dXJuICgtMSk7 CisJfQorCisJaWYgKG4gPCBzaXplb2YobmdfaGNpX2V2ZW50X3BrdF90KSkgeworCQlmcmVlKGkp OworCQlidF9kZXZjbG9zZShzKTsKKwkJZXJybm8gPSBFSU87CisJCXJldHVybiAoLTEpOworCX0K KworCXN3aXRjaCAoZS0+ZXZlbnQpIHsKKwljYXNlIE5HX0hDSV9FVkVOVF9JTlFVSVJZX0NPTVBM OgorCQlicmVhazsKKworCWNhc2UgTkdfSENJX0VWRU5UX0lOUVVJUllfUkVTVUxUOgorCQlpciA9 IChuZ19oY2lfaW5xdWlyeV9yZXNwb25zZSAqKShlcCArIDEpOworCisjdW5kZWYJTUlOCisjZGVm aW5lCU1JTihhLCBiKQkoKChhKSA8IChiKSk/IChhKSA6IChiKSkKKworCQlmb3IgKG4gPSAwOyBu IDwgTUlOKGVwLT5udW1fcmVzcG9uc2VzLCBudW1fcnNwKTsgbiArKykgeworCQkJYmRhZGRyX2Nv cHkoJmktPmJkYWRkciwgJmlyLT5iZGFkZHIpOworCQkJaS0+cHNjYW5fcmVwX21vZGUgPSBpci0+ cGFnZV9zY2FuX3JlcF9tb2RlOworCQkJaS0+cHNjYW5fcGVyaW9kX21vZGUgPSBpci0+cGFnZV9z Y2FuX3BlcmlvZF9tb2RlOworCQkJbWVtY3B5KGktPmRldl9jbGFzcywgaXItPnVjbGFzcywgc2l6 ZW9mKGktPmRldl9jbGFzcykpOworCQkJaS0+Y2xvY2tfb2Zmc2V0ID0gbGUxNnRvaChpci0+Y2xv Y2tfb2Zmc2V0KTsKKworCQkJaXIgKys7CisJCQlpICsrOworCQkJbnVtX3JzcCAtLTsKKwkJfQor CQkvKiBGQUxMVEhST1VHSCAqLworCisJZGVmYXVsdDoKKwkJZ290byB3YWl0X2Zvcl9tb3JlOwor CQkvKiBOT1QgUkVBQ0hFRCAqLworCX0KKworCWJ0X2RldmNsb3NlKHMpOworCQkKKwlyZXR1cm4g KGkgLSAqaWkpOworfQorCitpbnQKIGJ0X2RldmluZm8oc3RydWN0IGJ0X2RldmluZm8gKmRpKQog ewogCXVuaW9uIHsKQEAgLTUzLDYgKzQ4Myw3IEBACiAJCXN0cnVjdCBuZ19idHNvY2tldF9oY2lf cmF3X25vZGVfZGVidWcJCXI4OwogCX0JCQkJCQlycDsKIAlzdHJ1Y3Qgc29ja2FkZHJfaGNpCQkJ CWhhOworCXNvY2tsZW5fdAkJCQkJaGFsZW47CiAJaW50CQkJCQkJcywgcnZhbDsKIAogCWlmIChk aSA9PSBOVUxMKSB7CkBAIC02MCwyNyArNDkxLDE0IEBACiAJCXJldHVybiAoLTEpOwogCX0KIAot CW1lbXNldCgmaGEsIDAsIHNpemVvZihoYSkpOwotCWhhLmhjaV9sZW4gPSBzaXplb2YoaGEpOwot CWhhLmhjaV9mYW1pbHkgPSBBRl9CTFVFVE9PVEg7Ci0KLQlpZiAoYnRfYXRvbihkaS0+ZGV2bmFt ZSwgJnJwLnIxLmJkYWRkcikpIHsKLQkJaWYgKCFidF9kZXZuYW1lKGhhLmhjaV9ub2RlLCAmcnAu cjEuYmRhZGRyKSkKLQkJCXJldHVybiAoLTEpOwotCX0gZWxzZSBpZiAoYnRfZGV2Mm5vZGUoZGkt PmRldm5hbWUsIGhhLmhjaV9ub2RlLAotCQkJCQlzaXplb2YoaGEuaGNpX25vZGUpKSA9PSBOVUxM KSB7Ci0JCWVycm5vID0gRU5YSU87Ci0JCXJldHVybiAoLTEpOwotCX0KLQotCXMgPSBzb2NrZXQo UEZfQkxVRVRPT1RILCBTT0NLX1JBVywgQkxVRVRPT1RIX1BST1RPX0hDSSk7CisJcyA9IGJ0X2Rl dm9wZW4oZGktPmRldm5hbWUpOwogCWlmIChzIDwgMCkKIAkJcmV0dXJuICgtMSk7CiAKIAlydmFs ID0gLTE7CiAKLQlpZiAoYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZoYSwgc2l6ZW9mKGhh KSkgPCAwIHx8Ci0JICAgIGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmaGEsIHNpemVv ZihoYSkpIDwgMCkKKwloYWxlbiA9IHNpemVvZihoYSk7CisJaWYgKGdldHNvY2tuYW1lKHMsIChz dHJ1Y3Qgc29ja2FkZHIgKikgJmhhLCAmaGFsZW4pIDwgMCkKIAkJZ290byBiYWQ7CiAJc3RybGNw eShkaS0+ZGV2bmFtZSwgaGEuaGNpX25vZGUsIHNpemVvZihkaS0+ZGV2bmFtZSkpOwogCkBAIC0x MzgsNyArNTU2LDcgQEAKIAogCXJ2YWwgPSAwOwogYmFkOgotCWNsb3NlKHMpOworCWJ0X2RldmNs b3NlKHMpOwogCiAJcmV0dXJuIChydmFsKTsKIH0KQEAgLTIwNSw2ICs2MjMsMTMgQEAKIAlyZXR1 cm4gKGNvdW50KTsKIH0KIAorc3RhdGljIGludAorYnRfZGV2YW55X2NiKGludCBzLCBzdHJ1Y3Qg YnRfZGV2aW5mbyBjb25zdCAqZGksIHZvaWQgKnhkZXZuYW1lKQoreworCXN0cmxjcHkoKGNoYXIg KikgeGRldm5hbWUsIGRpLT5kZXZuYW1lLCBIQ0lfREVWTkFNRV9TSVpFKTsKKwlyZXR1cm4gKDEp OworfQorCiBzdGF0aWMgY2hhciAqCiBidF9kZXYybm9kZShjaGFyIGNvbnN0ICpkZXZuYW1lLCBj aGFyICpub2RlbmFtZSwgaW50IG5ubGVuKQogewpJbmRleDogYmx1ZXRvb3RoLjMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gYmx1ZXRvb3RoLjMJKHJldmlzaW9uIDE5MTAxMikKKysrIGJsdWV0b290aC4zCSh3b3Jr aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAuXCIgJElkOiBibHVldG9vdGguMyx2IDEuNSAy MDAzLzA1LzIwIDIzOjA0OjMwIG1heCBFeHAgJAogLlwiICRGcmVlQlNEJAogLlwiCi0uRGQgRmVi cnVhcnkgMTMsIDIwMDkKKy5EZCBBcHJpbCA5LCAyMDA5CiAuRHQgQkxVRVRPT1RIIDMKIC5Pcwog LlNoIE5BTUUKQEAgLTQxLDYgKzQxLDIzIEBACiAuTm0gYnRfZW5kcHJvdG9lbnQgLAogLk5tIGJ0 X2F0b24gLAogLk5tIGJ0X250b2EgLAorLk5tIGJ0X2RldmFkZHIgLAorLk5tIGJ0X2Rldm5hbWUg LAorLk5tIGJ0X2RldmluZm8gLAorLk5tIGJ0X2RldmVudW0gLAorLk5tIGJ0X2Rldm9wZW4gLAor Lk5tIGJ0X2RldmNsb3NlICwKKy5ObSBidF9kZXZzZW5kICwKKy5ObSBidF9kZXZyZWN2ICwKKy5O bSBidF9kZXZyZXEgLAorLk5tIGJ0X2RldmZpbHRlciAsCisuTm0gYnRfZGV2ZmlsdGVyX3BrdF9z ZXQgLAorLk5tIGJ0X2RldmZpbHRlcl9wa3RfY2xyICwKKy5ObSBidF9kZXZmaWx0ZXJfcGt0X3Rz dCAsCisuTm0gYnRfZGV2ZmlsdGVyX2V2dF9zZXQgLAorLk5tIGJ0X2RldmZpbHRlcl9ldnRfY2xy ICwKKy5ObSBidF9kZXZmaWx0ZXJfZXZ0X3RzdCAsCisuTm0gYnRfZGV2aW5xdWlyeSAsCiAuTm0g YmRhZGRyX3NhbWUgLAogLk5tIGJkYWRkcl9hbnkgLAogLk5tIGJkYWRkcl9jb3B5CkBAIC04NCw2 ICsxMDEsMzIgQEAKIC5GdCBpbnQKIC5GbiBidF9kZXZlbnVtICJidF9kZXZlbnVtX2NiX3QgKmNi IiAidm9pZCAqYXJnIgogLkZ0IGludAorLkZuIGJ0X2Rldm9wZW4gImNoYXIgY29uc3QgKmRldm5h bWUiCisuRnQgaW50CisuRm4gYnRfZGV2Y2xvc2UgImludCBzIgorLkZ0IGludAorLkZuIGJ0X2Rl dnNlbmQgImludCBzIiAidWludDE2X3Qgb3Bjb2RlIiAidm9pZCAqcGFyYW0iICJzaXplX3QgcGxl biIKKy5GdCBpbnQKKy5GbiBidF9kZXZyZWN2ICJpbnQgcyIgInVpbnQ4X3QgKmJ1ZiIgInNpemVf dCBzaXplIiAidGltZV90IHRvIgorLkZ0IGludAorLkZuIGJ0X2RldnJlcSAiaW50IHMiICJzdHJ1 Y3QgYnRfZGV2cmVxICpyIiAidGltZV90IHRvIgorLkZ0IGludAorLkZuIGJ0X2RldmZpbHRlciAi aW50IHMiICJzdHJ1Y3QgYnRfZGV2ZmlsdGVyIGNvbnN0ICpuZXciICJzdHJ1Y3QgYnRfZGV2Zmls dGVyICpvbGQiCisuRnQgdm9pZAorLkZuIGJ0X2RldmZpbHRlcl9wa3Rfc2V0ICJzdHJ1Y3QgYnRf ZGV2ZmlsdGVyICpmaWx0ZXIiICJpbnQgdHlwZSIKKy5GdCB2b2lkCisuRm4gYnRfZGV2ZmlsdGVy X3BrdF9jbHQgInN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciIgImludCB0eXBlIgorLkZ0IGlu dAorLkZuIGJ0X2RldmZpbHRlcl9wa3RfdHN0ICJzdHJ1Y3QgYnRfZGV2ZmlsdGVyIGNvbnN0ICpm aWx0ZXIiICJpbnQgdHlwZSIKKy5GdCB2b2lkCisuRm4gYnRfZGV2ZmlsdGVyX2V2dF9zZXQgInN0 cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciIgImludCBldmVudCIKKy5GdCB2b2lkCisuRm4gYnRf ZGV2ZmlsdGVyX2V2dF9jbHQgInN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciIgImludCBldmVu dCIKKy5GdCBpbnQKKy5GbiBidF9kZXZmaWx0ZXJfZXZ0X3RzdCAic3RydWN0IGJ0X2RldmZpbHRl ciBjb25zdCAqZmlsdGVyIiAiaW50IGV2ZW50IgorLkZ0IGludAorLkZuIGJ0X2RldmlucXVpcnkg ImNoYXIgY29uc3QgKmRldm5hbWUiICJ0aW1lX3QgbGVuZ3RoIiAiaW50IG51bV9yc3AiICJzdHJ1 Y3QgYnRfZGV2aW5xdWlyeSAqKmlpIgorLkZ0IGludAogLkZuIGJkYWRkcl9zYW1lICJjb25zdCBi ZGFkZHJfdCAqYSIgImNvbnN0IGJkYWRkcl90ICpiIgogLkZ0IGludAogLkZuIGJkYWRkcl9hbnkg ImNvbnN0IGJkYWRkcl90ICphIgpAQCAtMzExLDYgKzM1NCwyMTEgQEAKIG9yIC0xIGlmIGFuIGVy cm9yIG9jY3VycmVkLgogLlBwCiBUaGUKKy5GbiBidF9kZXZvcGVuCitmdW5jdGlvbiBvcGVucyBC bHVldG9vdGggZGV2aWNlIHdpdGggdGhlIGdpdmVuCisuRmEgZGV2bmFtZQorYW5kIHJldHVybnMg Y29ubmVjdGVkIGFuZCBib3VuZAorLkR2IEhDSQorc29ja2V0LgorVGhlIGZ1bmN0aW9uIHJldHVy bnMgLTEgaWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkLgorLlBwCitUaGUKKy5GbiBidF9kZXZjbG9z ZQorY2xvc2VzIHBhc3NlZAorLkR2IEhDSQorc29ja2V0CisuRmEgcyAsCitwcmV2aW91c2x5IG9i dGFpbmVkIHdpdGgKKy5YciBidF9kZXZvcGVuIDMgLgorLlBwCitUaGUKKy5GbiBidF9kZXZzZW5k CitmdW5jdGlvbiBzZW5kcyBCbHVldG9vdGgKKy5EdiBIQ0kKK2NvbW1hbmQgd2l0aCB0aGUgZ2l2 ZW4KKy5GYSBvcGNvZGUKK3RvIHRoZSBwcm92aWRlZCBzb2NrZXQKKy5GYSBzICwKK3ByZXZpb3Vz bHkgb2J0YWluZWQgd2l0aAorLlhyIGJ0X2Rldm9wZW4gMyAuCitUaGUKKy5GYSBvcGNvZGUKK3Bh cmFtZXRlciBpcyBleHBwZWN0ZWQgdG8gYmUgaW4gdGhlIGhvc3QgYnl0ZSBvcmRlci4KK1RoZQor LkZhIHBhcmFtCithbmQKKy5GYSBwbGVuCitwYXJhbWV0ZXJzIHNwZWNpZnkgY29tbWFuZCBwYXJh bWV0ZXJzLgorVGhlIGZ1bmN0aW9uIHJldHVybnMgMCBvbiBzdWNjZXNzLAorb3IgLTEgaWYgYW4g ZXJyb3Igb2NjdXJyZWQuCisuUHAKK1RoZQorLkZuIGJ0X2RldnJlY3YKK2Z1bmN0aW9uIHJlY2Vp dmVzIG9uZSBCbHVldG9vdGgKKy5EdiBIQ0kKK2V2ZW50IHBhY2tldCBmcm9tIHRoZSBzb2NrZXQK Ky5GYSBzICwKK3ByZXZpb3VzbHkgb2J0YWluZWQgd2l0aAorLlhyIGJ0X2Rldm9wZW4gMyAuCitU aGUgZXZlbnQgcGFja2V0IGlzIHBsYWNlZCBpbnRvIHRoZSBwcm92aWRlZCBidWZmZXIKKy5GYSBi dWYKK29mIHNpemUKKy5GYSBzaXplIC4KK1RoZQorLkZhIHRvCitwYXJhbWV0ZXIgc3BlY2lmaWVz IHJlY2VpdmUgdGltZW91dCBpbiBzZWNvbmRzLgorVGhlIGZ1bmN0aW9uIHJldHVybnMgdG90YWwg bnVtYmVyIG9mIGJ5dGVzIHJlY2V2aWVkLAorb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisu UHAKK1RoZQorLkZuIGJ0X2RldnJlcQorZnVuY3Rpb24gbWFrZXMgQmx1ZXRvb3RoCisuRHYgSENJ CityZXF1ZXN0IHRvIHRoZSBzb2NrZXQKKy5GYSBzICwKK3ByZXZpb3VzbHkgb2J0YWluZWQgd2l0 aAorLlhyIGJ0X2Rldm9wZW4gMyAuCitUaGUgZnVuY3Rpb24gd2lsbCBzZW5kIHRoZSBzcGVjaWZp ZWQgY29tbWFuZCBhbmQgd2lsbCB3YWl0IGZvciB0aGUgc3BlY2lmaWVkCitldmVudCwKK29yIHRp bWVvdXQKKy5GYSB0bworc2Vjb25kcyB0byBvY2N1ci4KK1RoZQorLlZ0IGJ0X2RldnJlcQorc3Ry dWN0dXJlIGlzIGRlZmluZWQgYXMgZm9sbG93cworLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50 CitzdHJ1Y3QgYnRfZGV2cmVxCit7CisgICAgICAgIHVpbnQxNl90ICAgICAgICBvcGNvZGU7Cisg ICAgICAgIHVpbnQxNl90ICAgICAgICBldmVudDsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICpj cGFyYW07CisgICAgICAgIGludCAgICAgICAgICAgICBjbGVuOworICAgICAgICB2b2lkICAgICAg ICAgICAgKnJwYXJhbTsKKyAgICAgICAgaW50ICAgICAgICAgICAgIHJsZW47Cit9OworLkVkCisu UHAKK1RoZQorLkZhIG9wY29kZQorZmllbGQgc3BlY2lmaWVzIHRoZSBjb21tYW5kIGFuZCBpcyBl eHBlY3RlZCB0byBiZSBpbiB0aGUgaG9zdCBieXRlIG9yZGVyLgorVGhlCisuRmEgY3BhcmFtCith bmQKKy5GYSBjbGVuCitmaWVsZHMgc3BlY2lmeSBjb21tYW5kIHBhcmFtZXRlcnMgZGF0YSBhbmQg Y29tbWFuZCBwYXJhbWV0ZXJzIGRhdGEgc2l6ZQorcmVzcGVjdGl2ZWx5LgorVGhlCisuRmEgZXZl bnQKK2ZpZWxkIHNwZWNpZmllcyB3aGljaCBCbHVldG9vdGgKKy5EdiBIQ0kKK2V2ZW50IElEIHRo ZSBmdW5jdGlvbiBzaG91bGQgd2FpdCBmb3IuCitUaGUKKy5GYSBycGFyYW0KK2FuZAorLkZhIHJs ZW4KK3BhcmFtZXRlcnMgc3BlY2lmeSBidWZmZXIgYW5kIGJ1ZmZlciBzaXplIHJlc3BlY3RpdmVs eSB3aGVyZSByZXR1cm4KK3BhcmFtZXRlcnMgc2hvdWxkIGJlIHBsYWNlZC4KK1RoZSBmdW5jdGlv biByZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisuUHAK K1RoZQorLkZuIGJ0X2RldmZpbHRlcgorY29udHJvbHMgdGhlIGxvY2FsCisuRHYgSENJCitmaWx0 ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzb2NrZXQKKy5GYSBzICwKK3ByZXZpb3VzbHkgb2J0YWlu ZWQgd2l0aAorLlhyIGJ0X2Rldm9wZW4gMyAuCitGaWx0ZXJpbmcgY2FuIGJlIGRvbmUgb24gcGFj a2V0IHR5cGVzLCBpLmUuCisuRHYgQUNMICwKKy5EdiBTQ08gb3IKKy5EdiBIQ0kKK2V2ZW50IHBh Y2tldHMsIGFuZCwgaW4gYWRkaXRpb24sIG9uCisuRHYgSENJCitldmVudCBJRHMuCitCZWZvcmUg YXBwbHlpbmcKKy5GYSBuZXcKK2ZpbHRlciAoaWYgcHJvdmlkZWQpIHRoZSBmdW5jdGlvbiB3aWxs IHRyeSB0byBvYnRhaW4gY3VycmVudCBmaWx0ZXIKK2Zyb20gdGhlIHNvY2tldAorLkZhIHMKK2Fu ZCBwbGFjZSBpdCBpbnRvIHRoZQorLkZhIG9sZAorcGFyYW1ldGVyIChpZiBwcm92aWRlZCkuCitU aGUgZnVuY3Rpb24gcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3Vy cmVkLgorLlBwCitUaGUKKy5GbiBidF9kZXZmaWx0ZXJfcGt0X3NldCAsCisuRm4gYnRfZGV2Zmls dGVyX3BrdF9jbHIgCithbmQKKy5GbiBidF9kZXZmaWx0ZXJfcGt0X3RzdAorZnVuY3Rpb25zIGNh biBiZSB1c2VkIHRvIG1vZGlmeSBhbmQgdGVzdAorLkR2IEhDSQorZmlsdGVyCisuRmEgZmlsdGVy IC4KK1RoZQorLkZhIHR5cGUKK3BhcmFtZXRlciBzcGVjaWZpZXMKKy5EdiBIQ0kKK3BhY2tldCB0 eXBlLgorLlBwCitUaGUKKy5GbiBidF9kZXZmaWx0ZXJfZXZ0X3NldCAsCisuRm4gYnRfZGV2Zmls dGVyX2V2dF9jbHIgCithbmQKKy5GbiBidF9kZXZmaWx0ZXJfZXZ0X3RzdAorZnVuY3Rpb25zIGNh biBiZSB1c2VkIHRvIG1vZGlmeSBhbmQgdGVzdAorLkR2IEhDSQorZXZlbnQgZmlsdGVyCisuRmEg ZmlsdGVyIC4KK1RoZQorLkZhIGV2ZW50CitwYXJhbWV0ZXIgc3BlY2lmaWVzCisuRHYgSENJCitl dmVudCBJRC4KKy5QcAorVGhlCisuRm4gYnRfZGV2aW5xdWlyeQorZnVuY3Rpb24gcGVyZm9ybXMg Qmx1ZXRvb3RoIGlucXVpcnkuCitUaGUKKy5GYSBkZXZuYW1lCitwYXJhbWV0ZXIgc3BlY2lmaWVz IHdoaWNoIGxvY2FsIEJsdWV0b290aCBkZXZpY2Ugc2hvdWxkIHBlcmZvcm0gYW4gaW5xdWlyeS4K K0lmIG5vdCBzZWNpZmllZCwgaS5lLgorLkR2IE5VTEwgLAordGhlbiBmaXJzdCBhdmFpbGFibGUg ZGV2aWNlIHdpbGwgYmUgdXNlZC4KK1RoZQorLkZhIGxlbmd0aAorcGFyYW1ldGVycyBzcGVjaWZp ZXMgdGhlIHRvdGFsIGxlbmd0aCBvZiBhbiBpbnF1aXJ5IGluIHNlY29uZHMuCitJZiBub3Qgc3Bl Y2lmaWVkLCBpLmUuIDAsIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkLgorVGhlCisuRmEgbnVt X3JzcAorcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJlc3BvbnNlcyB0aGF0IGNh biBiZSByZWNlaXZlZCBiZWZvcmUKK3RoZSBpbnF1aXJ5IGlzIGhhbHRlZC4KK0lmIG5vdCBzcGVj aWZpZWQsIGkuZS4gMCwgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHVzZWQuCitUaGUKKy5GYSBpaQor cGFyYW1ldGVyIHNwZWNpZmllcyB3aGVyZSB0byBwbGFjZSBpbnF1aXJ5IHJlc3VsdHMuCitPbiBz dWNjZXNzLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gdG90YWwgbnVtYmVyIG9mIGlucXVpcnkg cmVzdWx0cywKK3dpbGwgYWxsb2NhdGUgYnVmZmVyIHRvIHN0b3JlIGFsbCB0aGUgaW5xdWlyeSBy ZXN1bHRzIGFuZAord2lsbCByZXR1cm4gcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIGJ1ZmZlciBp biB0aGUKKy5GYSBpaQorcGFyYW1ldGVyLgorSXQgaXMgdXAgdG8gdGhlIGNhbGxlciBvZiB0aGUg ZnVuY3Rpb24gdG8gZGlzcG9zZSBvZiB0aGUgYnVmZmVyLgorVGhlIGZ1bmN0aW9uIHJldHVybnMg LTEgaWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkLgorVGhlCisuVnQgYnRfZGV2aW5xdWlyeQorc3Ry dWN0dXJlIGlzIGRlZmluZWQgYXMgZm9sbG93cworLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50 CitzdHJ1Y3QgYnRfZGV2aW5xdWlyeSB7CisgICAgICAgIGJkYWRkcl90ICAgICAgICBiZGFkZHI7 CisgICAgICAgIHVpbnQ4X3QgICAgICAgICBwc2Nhbl9yZXBfbW9kZTsKKyAgICAgICAgdWludDhf dCAgICAgICAgIHBzY2FuX3BlcmlvZF9tb2RlOworICAgICAgICB1aW50OF90ICAgICAgICAgZGV2 X2NsYXNzWzNdOworICAgICAgICB1aW50MTZfdCAgICAgICAgY2xvY2tfb2Zmc2V0OworICAgICAg ICBpbnQ4X3QgICAgICAgICAgcnNzaTsKKyAgICAgICAgdWludDhfdCAgICAgICAgIGRhdGFbMjQw XTsKK307CisuRWQKKy5QcAorVGhlCiAuRm4gYmRhZGRyX3NhbWUgLAogLkZuIGJkYWRkcl9hbnkK IGFuZApAQCAtNDQ0LDYgKzY5Miw2IEBACiAuU2ggQVVUSE9SUwogLkFuIE1ha3NpbSBZZXZtZW5r aW4gQXEgbV9ldm1lbmtpbkB5YWhvby5jb20KIC5TaCBCVUdTCi1UaGVzZSBmdW5jdGlvbnMgdXNl IHN0YXRpYyBkYXRhIHN0b3JhZ2U7CitTb21lIG9mIHRob3NlIGZ1bmN0aW9ucyB1c2Ugc3RhdGlj IGRhdGEgc3RvcmFnZTsKIGlmIHRoZSBkYXRhIGlzIG5lZWRlZCBmb3IgZnV0dXJlIHVzZSwgaXQg c2hvdWxkIGJlCiBjb3BpZWQgYmVmb3JlIGFueSBzdWJzZXF1ZW50IGNhbGxzIG92ZXJ3cml0ZSBp dC4KSW5kZXg6IGJsdWV0b290aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJsdWV0b290aC5oCShyZXZpc2lv biAxOTEwMTIpCisrKyBibHVldG9vdGguaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA QAogI2luY2x1ZGUgPHN5cy9lbmRpYW4uaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICNpbmNs dWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPHN5cy91 bi5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8bmV0ZGIuaD4KQEAgLTQ2LDYgKzQ3 LDcgQEAKICNpbmNsdWRlIDxuZXRncmFwaC9ibHVldG9vdGgvaW5jbHVkZS9uZ19oY2kuaD4KICNp bmNsdWRlIDxuZXRncmFwaC9ibHVldG9vdGgvaW5jbHVkZS9uZ19sMmNhcC5oPgogI2luY2x1ZGUg PG5ldGdyYXBoL2JsdWV0b290aC9pbmNsdWRlL25nX2J0c29ja2V0Lmg+CisjaW5jbHVkZSA8dGlt ZS5oPgogCiBfX0JFR0lOX0RFQ0xTCiAKQEAgLTEyOSw4ICsxMzEsNDggQEAKIAl1aW50OF90CQlf cGFkZGluZ1syMF07CS8qIGxlYXZlIHNwYWNlIGZvciBmdXR1cmUgYWRkaXRpb25zICovCiB9Owog CitzdHJ1Y3QgYnRfZGV2cmVxCit7CisJdWludDE2X3QJb3Bjb2RlOworCXVpbnQxNl90CWV2ZW50 OworCXZvaWQJCSpjcGFyYW07CisJc2l6ZV90CQljbGVuOworCXZvaWQJCSpycGFyYW07CisJc2l6 ZV90CQlybGVuOworfTsKKworc3RydWN0IGJ0X2RldmZpbHRlciB7CisJYml0c3RyX3QJYml0X2Rl Y2wocGFja2V0X21hc2ssIDgpOworCWJpdHN0cl90CWJpdF9kZWNsKGV2ZW50X21hc2ssIDI1Nik7 Cit9OworCitzdHJ1Y3QgYnRfZGV2aW5xdWlyeSB7CisJYmRhZGRyX3QgICAgICAgIGJkYWRkcjsK Kwl1aW50OF90ICAgICAgICAgcHNjYW5fcmVwX21vZGU7CisJdWludDhfdCAgICAgICAgIHBzY2Fu X3BlcmlvZF9tb2RlOworCXVpbnQ4X3QgICAgICAgICBkZXZfY2xhc3NbM107CisJdWludDE2X3Qg ICAgICAgIGNsb2NrX29mZnNldDsKKwlpbnQ4X3QgICAgICAgICAgcnNzaTsKKwl1aW50OF90ICAg ICAgICAgZGF0YVsyNDBdOworfTsKKwogdHlwZWRlZiBpbnQJKGJ0X2RldmVudW1fY2JfdCkoaW50 LCBzdHJ1Y3QgYnRfZGV2aW5mbyBjb25zdCAqLCB2b2lkICopOwogCitpbnQJCWJ0X2Rldm9wZW4g KGNoYXIgY29uc3QgKmRldm5hbWUpOworaW50CQlidF9kZXZjbG9zZShpbnQgcyk7CitpbnQJCWJ0 X2RldnNlbmQgKGludCBzLCB1aW50MTZfdCBvcGNvZGUsIHZvaWQgKnBhcmFtLCBzaXplX3QgcGxl bik7CitpbnQJCWJ0X2RldnJlY3YgKGludCBzLCB1aW50OF90ICpidWYsIHNpemVfdCBzaXplLCB0 aW1lX3QgdG8pOworaW50CQlidF9kZXZyZXEgIChpbnQgcywgc3RydWN0IGJ0X2RldnJlcSAqciwg dGltZV90IHRvKTsKK2ludAkJYnRfZGV2ZmlsdGVyKGludCBzLCBzdHJ1Y3QgYnRfZGV2ZmlsdGVy IGNvbnN0ICpuZXcsCisJCQkgICAgIHN0cnVjdCBidF9kZXZmaWx0ZXIgKm9sZCk7Cit2b2lkCQli dF9kZXZmaWx0ZXJfcGt0X3NldChzdHJ1Y3QgYnRfZGV2ZmlsdGVyICpmaWx0ZXIsIGludCB0eXBl KTsKK3ZvaWQJCWJ0X2RldmZpbHRlcl9wa3RfY2xyKHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRl ciwgaW50IHR5cGUpOworaW50CQlidF9kZXZmaWx0ZXJfcGt0X3RzdChzdHJ1Y3QgYnRfZGV2Zmls dGVyIGNvbnN0ICpmaWx0ZXIsIGludCB0eXBlKTsKK3ZvaWQJCWJ0X2RldmZpbHRlcl9ldnRfc2V0 KHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciwgaW50IGV2ZW50KTsKK3ZvaWQJCWJ0X2RldmZp bHRlcl9ldnRfY2xyKHN0cnVjdCBidF9kZXZmaWx0ZXIgKmZpbHRlciwgaW50IGV2ZW50KTsKK2lu dAkJYnRfZGV2ZmlsdGVyX2V2dF90c3Qoc3RydWN0IGJ0X2RldmZpbHRlciBjb25zdCAqZmlsdGVy LCBpbnQgZXZlbnQpOworaW50CQlidF9kZXZpbnF1aXJ5KGNoYXIgY29uc3QgKmRldm5hbWUsIHRp bWVfdCBsZW5ndGgsIGludCBudW1fcnNwLAorCQkJICAgICAgc3RydWN0IGJ0X2RldmlucXVpcnkg KippaSk7CiBpbnQJCWJ0X2RldmluZm8gKHN0cnVjdCBidF9kZXZpbmZvICpkaSk7CiBpbnQJCWJ0 X2RldmVudW0gKGJ0X2RldmVudW1fY2JfdCAqY2IsIHZvaWQgKmFyZyk7CiAKSW5kZXg6IE1ha2Vm aWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIE1ha2VmaWxlCShyZXZpc2lvbiAxOTEwMTIpCisrKyBNYWtlZmls ZQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTkgQEAKIE1MSU5LUys9CWJsdWV0b290aC4z IGJ0X2RldmluZm8uMwogTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2ZW51bS4zCiAKK01MSU5L Uys9CWJsdWV0b290aC4zIGJ0X2Rldm9wZW4uMworTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2 Y2xvc2UuMworTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2c2VuZC4zCitNTElOS1MrPQlibHVl dG9vdGguMyBidF9kZXZyZXEuMworTUxJTktTKz0JYmx1ZXRvb3RoLjMgYnRfZGV2ZmlsdGVyLjMK K01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmZpbHRlcl9wa3Rfc2V0LjMKK01MSU5LUys9CWJs dWV0b290aC4zIGJ0X2RldmZpbHRlcl9wa3RfY2xyLjMKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0 X2RldmZpbHRlcl9wa3RfdHN0LjMKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmZpbHRlcl9l dnRfc2V0LjMKK01MSU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmZpbHRlcl9ldnRfY2xyLjMKK01M SU5LUys9CWJsdWV0b290aC4zIGJ0X2RldmZpbHRlcl9ldnRfdHN0LjMKK01MSU5LUys9CWJsdWV0 b290aC4zIGJ0X2RldmlucXVpcnkuMworCiBNTElOS1MrPQlibHVldG9vdGguMyBiZGFkZHJfc2Ft ZS4zCiBNTElOS1MrPQlibHVldG9vdGguMyBiZGFkZHJfYW55LjMKIE1MSU5LUys9CWJsdWV0b290 aC4zIGJkYWRkcl9jb3B5LjMK --0016361e86c09175d40467c870d7--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c70904171621i5033bcc3w46b24800e20e7106>