2011-11-21 02:13:21

by Yao, Costa

[permalink] [raw]
Subject: RE: [PATCH] Bluetooth: ath3k: Add supports for Qualcomm Atheros 3012 composite chip

MSBVc2UgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8gdG8gZG8gZGV2aWNlIG1hdGNoaW5n
IHdpdGggUElEL1ZJRCAweDMwMDYvMHgwY2YzLg0KMiBEZWxldGUgZGVzYy5iSW50ZXJmYWNlTnVt
YmVyICE9IDAgY2hlY2suDQozIERvd25sb2FkIGZpcm13YXJlIHRvIGhhcmR3YXJlIGZvciBQSUQ9
MHgzMDA2DQoNClNpZ25lZC1vZmYtYnk6IENvc3RhIFlhbyA8Y3F5YW9AcWNhLnF1YWxjb21tLmNv
bT4NCi0tLQ0KIGRyaXZlcnMvYmx1ZXRvb3RoL2F0aDNrLmMgfCAgIDY5ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQ0KIDEgZmlsZXMgY2hhbmdlZCwgNjMgaW5z
ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRv
b3RoL2F0aDNrLmMgYi9kcml2ZXJzL2JsdWV0b290aC9hdGgzay5jDQppbmRleCAxNjIyNzcyLi43
N2YwNDBkIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYXRoM2suYw0KKysrIGIvZHJp
dmVycy9ibHVldG9vdGgvYXRoM2suYw0KQEAgLTQwLDYgKzQwLDcgQEANCiANCiAjZGVmaW5lIEFU
SDNLX01PREVfTUFTSwkJCQkweDNGDQogI2RlZmluZSBBVEgzS19OT1JNQUxfTU9ERQkJCTB4MEUN
CisjZGVmaW5lIEFUSDNLX1BSRUJPT1RfTU9ERQkJCTB4MEQNCiANCiAjZGVmaW5lIEFUSDNLX1BB
VENIX1VQREFURQkJCTB4ODANCiAjZGVmaW5lIEFUSDNLX1NZU0NGR19VUERBVEUJCQkweDQwDQpA
QCAtNDksNiArNTAsOSBAQA0KICNkZWZpbmUgQVRIM0tfWFRBTF9GUkVRXzE5UDIJCQkweDAyDQog
I2RlZmluZSBBVEgzS19OQU1FX0xFTgkJCQkweEZGDQogDQorI2RlZmluZSBBVEgzS18zMDEyCQkw
eDgwDQorI2RlZmluZSBBVEgzS18zMDA2CQkweDAxMDANCisNCiBzdHJ1Y3QgYXRoM2tfdmVyc2lv
biB7DQogCXVuc2lnbmVkIGludAlyb21fdmVyc2lvbjsNCiAJdW5zaWduZWQgaW50CWJ1aWxkX3Zl
cnNpb247DQpAQCAtNzEsNiArNzUsNyBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRo
M2tfdGFibGVbXSA9IHsNCiANCiAJLyogQXRoZXJvcyBBUjMwMTIgd2l0aCBzZmxhc2ggZmlybXdh
cmUqLw0KIAl7IFVTQl9ERVZJQ0UoMHgwQ0YzLCAweDMwMDQpIH0sDQorCXsgVVNCX0RFVklDRV9B
TkRfSU5URVJGQUNFX0lORk8oMHgwQ0YzLCAweDMwMDYsIDB4ZTAsIDB4MDEsIDB4MDEpIH0sDQog
DQogCS8qIEF0aGVyb3MgQVI1QkJVMTIgd2l0aCBzZmxhc2ggZmlybXdhcmUgKi8NCiAJeyBVU0Jf
REVWSUNFKDB4MDQ4OSwgMHhFMDJDKSB9LA0KQEAgLTgwLDEzICs4NSwxMyBAQCBzdGF0aWMgc3Ry
dWN0IHVzYl9kZXZpY2VfaWQgYXRoM2tfdGFibGVbXSA9IHsNCiANCiBNT0RVTEVfREVWSUNFX1RB
QkxFKHVzYiwgYXRoM2tfdGFibGUpOw0KIA0KLSNkZWZpbmUgQlRVU0JfQVRIMzAxMgkJMHg4MA0K
IC8qIFRoaXMgdGFibGUgaXMgdG8gbG9hZCBwYXRjaCBhbmQgc3lzY29uZmlnIGZpbGVzDQogICog
Zm9yIEFSMzAxMiAqLw0KIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgza19ibGlzdF90
YmxbXSA9IHsNCiANCiAJLyogQXRoZXJvcyBBUjMwMTIgd2l0aCBzZmxhc2ggZmlybXdhcmUqLw0K
LQl7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDMwMDQpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgz
MDEyIH0sDQorCXsgVVNCX0RFVklDRSgweDBjZjMsIDB4MzAwNCksIC5kcml2ZXJfaW5mbyA9IEFU
SDNLXzMwMTIgfSwNCisJeyBVU0JfREVWSUNFKDB4MENGMywgMHgzMDA2KSwgLmRyaXZlcl9pbmZv
ID0gQVRIM0tfMzAwNiB9LA0KIA0KIAl7IH0JLyogVGVybWluYXRpbmcgZW50cnkgKi8NCiB9Ow0K
QEAgLTM1NSw2ICszNjAsNTIgQEAgc3RhdGljIGludCBhdGgza19sb2FkX3N5c2NmZyhzdHJ1Y3Qg
dXNiX2RldmljZSAqdWRldikNCiAJcmV0dXJuIHJldDsNCiB9DQogDQorc3RhdGljIGludCBhdGgz
a19kb3dubG9hZF8zMDA2KHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KQ0KK3sNCisJaW50IHJldDsN
CisJdW5zaWduZWQgY2hhciBmd19zdGF0ZTsNCisNCisJaWYgKGxlMTZfdG9fY3B1KHVkZXYtPmRl
c2NyaXB0b3IuYmNkRGV2aWNlKSA+IDB4MDAwMSkgew0KKwkJQlRfRVJSKCJhdGgza19wcm9iZTog
dWRldi0+ZGVzY3JpcHRvci5iY2REZXZpY2UiKTsNCisJCXJldHVybiAtRU5PREVWOw0KKwl9DQor
DQorCXJldCA9IGF0aDNrX2dldF9zdGF0ZSh1ZGV2LCAmZndfc3RhdGUpOw0KKwlpZiAocmV0IDwg
MCkgew0KKwkJQlRfRVJSKCJhdGgza19wcm9iZTogYXRoM2tfZ2V0X3N0YXRlIGVyciIpOw0KKwkJ
cmV0dXJuIHJldDsNCisJfQ0KKw0KKwlpZiAoKGZ3X3N0YXRlICYgQVRIM0tfTU9ERV9NQVNLKSA9
PSBBVEgzS19QUkVCT09UX01PREUpIHsNCisJCUJUX0VSUigiYXRoM2tfcHJvYmU6IGZpcm13YXJl
IGFyZSBpbiBwcmVib290IG1vZGUgbm93Iik7DQorCQlCVF9FUlIoImF0aDNrX3Byb2JlOiB0cnkg
dG8gc3dpdGNoIHRvIE5vcm1hbCBNb2RlIik7DQorCQlyZXQgPSBhdGgza19zZXRfbm9ybWFsX21v
ZGUodWRldik7DQorCQlpZiAocmV0IDwgMCkgew0KKwkJCUJUX0VSUigiYXRoM2tfcHJvYmU6IHNl
dCBub3JtYWwgbW9kZSBmYWlsZWQiKTsNCisJCQlyZXR1cm4gcmV0Ow0KKwkJfQ0KKwl9DQorDQor
CS8qIE5vdGUgd2Ugc2hvdWxkIHdhaXQgZm9yIGEgd2hpbGUgKi8NCisJbWRlbGF5KDEwMCk7DQor
CXJldCA9IGF0aDNrX2xvYWRfcGF0Y2godWRldik7DQorCWlmIChyZXQgPCAwKSB7DQorCQlCVF9F
UlIoImF0aDNrX3Byb2JlOiBMb2FkIHBhdGNoIGZpbGUgZmFpbGVkIik7DQorCQlyZXR1cm4gcmV0
Ow0KKwl9DQorCXJldCA9IGF0aDNrX2xvYWRfc3lzY2ZnKHVkZXYpOw0KKwlpZiAocmV0IDwgMCkg
ew0KKwkJQlRfRVJSKCJhdGgza19wcm9iZTogTG9hZCBzeXNjb25maWcgZmlsZSBmYWlsZWQiKTsN
CisJCXJldHVybiByZXQ7DQorCX0NCisJcmV0ID0gYXRoM2tfc3dpdGNoX3BpZCh1ZGV2KTsNCisJ
aWYgKHJldCA8IDApIHsNCisJCUJUX0VSUigiYXRoM2tfcHJvYmU6IHN3aXRjaCBwaWQgZmFpbGVk
Iik7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCiBzdGF0aWMgaW50
IGF0aDNrX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLA0KIAkJCWNvbnN0IHN0cnVj
dCB1c2JfZGV2aWNlX2lkICppZCkNCiB7DQpAQCAtMzY0LDkgKzQxNSw2IEBAIHN0YXRpYyBpbnQg
YXRoM2tfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsDQogDQogCUJUX0RCRygiaW50
ZiAlcCBpZCAlcCIsIGludGYsIGlkKTsNCiANCi0JaWYgKGludGYtPmN1cl9hbHRzZXR0aW5nLT5k
ZXNjLmJJbnRlcmZhY2VOdW1iZXIgIT0gMCkNCi0JCXJldHVybiAtRU5PREVWOw0KLQ0KIAkvKiBt
YXRjaCBkZXZpY2UgSUQgaW4gYXRoM2sgYmxhY2tsaXN0IHRhYmxlICovDQogCWlmICghaWQtPmRy
aXZlcl9pbmZvKSB7DQogCQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2g7DQpAQCAt
Mzc2LDcgKzQyNCw3IEBAIHN0YXRpYyBpbnQgYXRoM2tfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZh
Y2UgKmludGYsDQogCX0NCiANCiAJLyogbG9hZCBwYXRjaCBhbmQgc3lzY29uZmlnIGZpbGVzIGZv
ciBBUjMwMTIgKi8NCi0JaWYgKGlkLT5kcml2ZXJfaW5mbyAmIEJUVVNCX0FUSDMwMTIpIHsNCisJ
aWYgKGlkLT5kcml2ZXJfaW5mbyAmIEFUSDNLXzMwMTIpIHsNCiANCiAJCS8qIE5ldyBmaXJtd2Fy
ZSB3aXRoIHBhdGNoIGFuZCBzeXNjb25maWcgZmlsZXMgYWxyZWFkeSBsb2FkZWQgKi8NCiAJCWlm
IChsZTE2X3RvX2NwdSh1ZGV2LT5kZXNjcmlwdG9yLmJjZERldmljZSkgPiAweDAwMDEpDQpAQCAt
NDAxLDYgKzQ0OSwxNSBAQCBzdGF0aWMgaW50IGF0aDNrX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJm
YWNlICppbnRmLA0KIAkJcmV0dXJuIDA7DQogCX0NCiANCisJaWYgKGlkLT5kcml2ZXJfaW5mbyAm
IEFUSDNLXzMwMDYpIHsNCisJCXJldCA9IGF0aDNrX2Rvd25sb2FkXzMwMDYodWRldik7DQorCQlp
ZiAocmV0IDwgMCkgew0KKwkJCUJUX0VSUigiYXRoM2tfcHJvYmU6IGRvd25sb2FkXzMwMDYgZmFp
bGVkIik7DQorCQkJcmV0dXJuIHJldDsNCisJCX0NCisJCXJldHVybiAwOw0KKwl9DQorDQogCXJl
dCA9IHJlcXVlc3RfZmlybXdhcmUoJmZpcm13YXJlLCBBVEgzS19GSVJNV0FSRSwgJnVkZXYtPmRl
dik7DQogCWlmIChyZXQgPCAwKSB7DQogCQlpZiAocmV0ID09IC1FTk9FTlQpDQotLSANCjEuNy40
LjENCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBsaW51eC1ibHVldG9v
dGgtb3duZXJAdmdlci5rZXJuZWwub3JnDQo+IFttYWlsdG86bGludXgtYmx1ZXRvb3RoLW93bmVy
QHZnZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIE1hcmNlbCBIb2x0bWFubg0KPiBTZW50OiAy
MDEx5bm0MTHmnIgxOOaXpSAyMDowNw0KPiBUbzogWWFvLCBDb3N0YQ0KPiBDYzogcGFkb3ZhbkBw
cm9mdXNpb24ubW9iaTsgbGludXgtYmx1ZXRvb3RoQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0
OiBSZTogW1BBVENIXSBCbHVldG9vdGg6IGF0aDNrOiBBZGQgc3VwcG9ydHMgZm9yIFF1YWxjb21t
IEF0aGVyb3NlDQo+IDMwMTIgY29tcG9zaXRlIGNoaXANCj4gDQo+IEhpIENvc3RhLA0KPiANCj4g
PiAxIFVzZSBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTyB0byBkbyBkZXZpY2UgbWF0Y2hp
bmcgd2l0aA0KPiBQSUQvVklEIDB4MzAwNi8weDBjZjMuDQo+ID4gMiBEZWxldGUgZGVzYy5iSW50
ZXJmYWNlTnVtYmVyICE9IDAgY2hlY2suDQo+ID4gMyBBZGQgZnVuY3Rpb24gYXRoM2tfZG93bmxv
YWRfMzAwNiB0byBkb3dubG9hZCBmaXJtd2FyZSB0byBoYXJkd2FyZQ0KPiA+IGZvciAweDMwMDYN
Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IENvc3RhIFlhbyA8Y3F5YW9AcWNhLnF1YWxjb21tLmNv
bT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ibHVldG9vdGgvYXRoM2suYyB8ICAgNjUNCj4gKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ID4gIDEgZmlsZXMg
Y2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYg
LS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9hdGgzay5jIGIvZHJpdmVycy9ibHVldG9vdGgvYXRo
M2suYw0KPiA+IGluZGV4IDE2MjI3NzIuLmIzOGNkMTYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy
cy9ibHVldG9vdGgvYXRoM2suYw0KPiA+ICsrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2F0aDNrLmMN
Cj4gPiBAQCAtNDAsNiArNDAsNyBAQA0KPiA+DQo+ID4gICNkZWZpbmUgQVRIM0tfTU9ERV9NQVNL
CQkJCTB4M0YNCj4gPiAgI2RlZmluZSBBVEgzS19OT1JNQUxfTU9ERQkJCTB4MEUNCj4gPiArI2Rl
ZmluZSBBVEgzS19QUkVCT09UX01PREUJCQkweDBEDQo+ID4NCj4gPiAgI2RlZmluZSBBVEgzS19Q
QVRDSF9VUERBVEUJCQkweDgwDQo+ID4gICNkZWZpbmUgQVRIM0tfU1lTQ0ZHX1VQREFURQkJCTB4
NDANCj4gPiBAQCAtNDksNiArNTAsOSBAQA0KPiA+ICAjZGVmaW5lIEFUSDNLX1hUQUxfRlJFUV8x
OVAyCQkJMHgwMg0KPiA+ICAjZGVmaW5lIEFUSDNLX05BTUVfTEVOCQkJCTB4RkYNCj4gPg0KPiA+
ICsjZGVmaW5lIEJUVVNCX0FUSDMwMTIJCTB4ODANCj4gPiArI2RlZmluZSBCVFVTQl9BVEgzMDA2
CQkweDAxMDANCj4gPiArDQo+IA0KPiB0aGlzIGlzIGF0aDNrLmMgc3BlY2lmaWMuIFNvIGRvIG5v
dCB1c2UgQlRVU0JfIHByZWZ1eC4NCj4gDQo+ID4gIHN0cnVjdCBhdGgza192ZXJzaW9uIHsNCj4g
PiAgCXVuc2lnbmVkIGludAlyb21fdmVyc2lvbjsNCj4gPiAgCXVuc2lnbmVkIGludAlidWlsZF92
ZXJzaW9uOw0KPiA+IEBAIC03MSw2ICs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9p
ZCBhdGgza190YWJsZVtdID0gew0KPiA+DQo+ID4gIAkvKiBBdGhlcm9zIEFSMzAxMiB3aXRoIHNm
bGFzaCBmaXJtd2FyZSovDQo+ID4gIAl7IFVTQl9ERVZJQ0UoMHgwQ0YzLCAweDMwMDQpIH0sDQo+
ID4gKwl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MENGMywgMHgzMDA2LCAweGUw
LCAweDAxLA0KPiAweDAxKSB9LA0KPiA+DQo+ID4gIAkvKiBBdGhlcm9zIEFSNUJCVTEyIHdpdGgg
c2ZsYXNoIGZpcm13YXJlICovDQo+ID4gIAl7IFVTQl9ERVZJQ0UoMHgwNDg5LCAweEUwMkMpIH0s
DQo+ID4gQEAgLTgwLDEzICs4NSwxMyBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRo
M2tfdGFibGVbXSA9IHsNCj4gPg0KPiA+ICBNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgYXRoM2tf
dGFibGUpOw0KPiA+DQo+ID4gLSNkZWZpbmUgQlRVU0JfQVRIMzAxMgkJMHg4MA0KPiA+ICAvKiBU
aGlzIHRhYmxlIGlzIHRvIGxvYWQgcGF0Y2ggYW5kIHN5c2NvbmZpZyBmaWxlcw0KPiA+ICAgKiBm
b3IgQVIzMDEyICovDQo+ID4gIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgza19ibGlz
dF90YmxbXSA9IHsNCj4gPg0KPiA+ICAJLyogQXRoZXJvcyBBUjMwMTIgd2l0aCBzZmxhc2ggZmly
bXdhcmUqLw0KPiA+ICAJeyBVU0JfREVWSUNFKDB4MGNmMywgMHgzMDA0KSwgLmRyaXZlcl9pbmZv
ID0gQlRVU0JfQVRIMzAxMiB9LA0KPiA+ICsJeyBVU0JfREVWSUNFKDB4MENGMywgMHgzMDA2KSwg
LmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAwNiB9LA0KPiA+DQo+ID4gIAl7IH0JLyogVGVybWlu
YXRpbmcgZW50cnkgKi8NCj4gPiAgfTsNCj4gPiBAQCAtMzU1LDYgKzM2MCw1MiBAQCBzdGF0aWMg
aW50IGF0aDNrX2xvYWRfc3lzY2ZnKHN0cnVjdCB1c2JfZGV2aWNlDQo+ICp1ZGV2KQ0KPiA+ICAJ
cmV0dXJuIHJldDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbnQgYXRoM2tfZG93bmxvYWRf
MzAwNihzdHJ1Y3QgdXNiX2RldmljZSAqdWRldikgew0KPiA+ICsJaW50IHJldDsNCj4gPiArCXVu
c2lnbmVkIGNoYXIgZndfc3RhdGU7DQo+ID4gKw0KPiA+ICsJaWYgKGxlMTZfdG9fY3B1KHVkZXYt
PmRlc2NyaXB0b3IuYmNkRGV2aWNlKSA+IDB4MDAwMSkgew0KPiA+ICsJCUJUX0VSUigiYXRoM2tf
cHJvYmU6IHVkZXYtPmRlc2NyaXB0b3IuYmNkRGV2aWNlIik7DQo+ID4gKwkJcmV0dXJuIC1FTk9E
RVY7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gYXRoM2tfZ2V0X3N0YXRlKHVkZXYsICZm
d19zdGF0ZSk7DQo+ID4gKwlpZiAocmV0IDwgMCkgew0KPiA+ICsJCUJUX0VSUigiYXRoM2tfcHJv
YmU6IGF0aDNrX2dldF9zdGF0ZSBlcnIiKTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0K
PiA+ICsNCj4gPiArCWlmICgoZndfc3RhdGUgJiBBVEgzS19NT0RFX01BU0spID09IEFUSDNLX1BS
RUJPT1RfTU9ERSkgew0KPiA+ICsJCUJUX0VSUigiYXRoM2tfcHJvYmU6IGZpcm13YXJlIGFyZSBp
biBwcmVib290IG1vZGUgbm93Iik7DQo+ID4gKwkJQlRfRVJSKCJhdGgza19wcm9iZTogdHJ5IHRv
IHN3aXRjaCB0byBOb3JtYWwgTW9kZSIpOw0KPiA+ICsJCXJldCA9IGF0aDNrX3NldF9ub3JtYWxf
bW9kZSh1ZGV2KTsNCj4gPiArCQlpZiAocmV0IDwgMCkgew0KPiA+ICsJCQlCVF9FUlIoImF0aDNr
X3Byb2JlOiBzZXQgbm9ybWFsIG1vZGUgZmFpbGVkIik7DQo+ID4gKwkJCXJldHVybiByZXQ7DQo+
ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIE5vdGUgd2Ugc2hvdWxkIHdhaXQgZm9y
IGEgd2hpbGUgKi8NCj4gPiArCW1kZWxheSgxMDApOw0KPiA+ICsJcmV0ID0gYXRoM2tfbG9hZF9w
YXRjaCh1ZGV2KTsNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJQlRfRVJSKCJhdGgza19w
cm9iZTogTG9hZCBwYXRjaCBmaWxlIGZhaWxlZCIpOw0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4g
Kwl9DQo+ID4gKwlyZXQgPSBhdGgza19sb2FkX3N5c2NmZyh1ZGV2KTsNCj4gPiArCWlmIChyZXQg
PCAwKSB7DQo+ID4gKwkJQlRfRVJSKCJhdGgza19wcm9iZTogTG9hZCBzeXNjb25maWcgZmlsZSBm
YWlsZWQiKTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ICsJcmV0ID0gYXRoM2tf
c3dpdGNoX3BpZCh1ZGV2KTsNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJQlRfRVJSKCJh
dGgza19wcm9iZTogc3dpdGNoIHBpZCBmYWlsZWQiKTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+
ICsJfQ0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQgYXRo
M2tfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsDQo+ID4gIAkJCWNvbnN0IHN0cnVj
dCB1c2JfZGV2aWNlX2lkICppZCkNCj4gPiAgew0KPiA+IEBAIC0zNjQsOSArNDE1LDYgQEAgc3Rh
dGljIGludCBhdGgza19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwNCj4gPg0KPiA+
ICAJQlRfREJHKCJpbnRmICVwIGlkICVwIiwgaW50ZiwgaWQpOw0KPiA+DQo+ID4gLQlpZiAoaW50
Zi0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKQ0KPiA+IC0JCXJl
dHVybiAtRU5PREVWOw0KPiA+IC0NCj4gPiAgCS8qIG1hdGNoIGRldmljZSBJRCBpbiBhdGgzayBi
bGFja2xpc3QgdGFibGUgKi8NCj4gPiAgCWlmICghaWQtPmRyaXZlcl9pbmZvKSB7DQo+ID4gIAkJ
Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKm1hdGNoOw0KPiA+IEBAIC00MDEsNiArNDQ5LDE1
IEBAIHN0YXRpYyBpbnQgYXRoM2tfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsDQo+
ID4gIAkJcmV0dXJuIDA7DQo+ID4gIAl9DQo+ID4NCj4gPiArCWlmIChpZC0+ZHJpdmVyX2luZm8g
JiBCVFVTQl9BVEgzMDA2KSB7DQo+ID4gKwkJcmV0ID0gYXRoM2tfZG93bmxvYWRfMzAwNih1ZGV2
KTsNCj4gPiArCQlpZiAocmV0IDwgMCkgew0KPiA+ICsJCQlCVF9FUlIoImF0aDNrX3Byb2JlOiBk
b3dubG9hZF8zMDA2IGZhaWxlZCIpOw0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0KPiA+ICsJCX0NCj4g
PiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArDQo+ID4gIAlyZXQgPSByZXF1ZXN0X2Zpcm13
YXJlKCZmaXJtd2FyZSwgQVRIM0tfRklSTVdBUkUsICZ1ZGV2LT5kZXYpOw0KPiA+ICAJaWYgKHJl
dCA8IDApIHsNCj4gPiAgCQlpZiAocmV0ID09IC1FTk9FTlQpDQo+IA0KPiBUaGUgcmVzdCBpcyBm
aW5lIHdpdGggbWUuDQo+IA0KPiBSZWdhcmRzDQo+IA0KPiBNYXJjZWwNCj4gDQo+IA0KPiAtLQ0K
PiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3Jp
YmUgbGludXgtYmx1ZXRvb3RoIiBpbiB0aGUNCj4gYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jk
b21vQHZnZXIua2VybmVsLm9yZyBNb3JlIG1ham9yZG9tbyBpbmZvIGF0DQo+IGh0dHA6Ly92Z2Vy
Lmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0K