From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ong, Hean Loong" Subject: DRM Display driver for Intel FPGA Video and Image Processing Suite Date: Fri, 31 Mar 2017 09:08:37 +0000 Message-ID: <1490950994.21575.21.camel@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_14909509942157521camelintelcom_" Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id BF6B76E3BA for ; Fri, 31 Mar 2017 09:08:42 +0000 (UTC) Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Vetter, Daniel" , "airlied@linux.ie" Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org --_002_14909509942157521camelintelcom_ Content-Type: text/plain; charset="utf-8" Content-ID: <22DA99561AC2134CB4BF10182A8ECA49@intel.com> Content-Transfer-Encoding: base64 SGksDQoNCkkgd291bGQgbGlrZSB0byB1cHN0cmVhbSB0aGUgYXR0YWNoZWQgSW50ZWwgRlBHQSBW aWRlbyBhbmQgSW1hZ2UNClByb2Nlc3NpbmcgU3VpdGUuIFRoZSBhdHRhY2hlZCBwYXRjaCBzdXBw b3J0cyB0aGUgSW50ZWwgQXJyaWExMCBkZXZraXQNCmFuZCBpdHMgdmFyaWFudHMuIFRoZSBwdXJw b3NlIG9mIHRoZSBwYXRjaCBpcyB0byBlbmFibGUgdGhlIEZQR0EgZHJpdmVuDQpkaXNwbGF5IGRl c2lnbmVkIGZyb20gdGhlIEludGVsIFF1YXJ0dXMgRlBHQSBkZXNpZ24gc3VpdGUuDQoNClRoZSBk cml2ZXIgaXMgcmVxdWlyZWQgYXMgcGFydCBvZiB0aGUgSW50ZWwgQXJyaWExMCBkZXZraXQgcmVm ZXJlbmNlDQpkZXNpZ24uIFRoZSBkcml2ZXIgd2FzIHRlc3RlZCBvbjoNCi0gVGhlIE9wZW4gRW1i ZWRkZWQgQW5nc3Ryb20gRGlzdHJvLsKgDQotIFRoZSBtYXRjaGJveC10ZXJtaW5hbCBhbmQgd2lu ZG93LW1hbmFnZXIgd2FzIHVzZWQgZm9yIGZ1bmN0aW9uYWwNCnRlc3RpbmcNCg0KQ3VycmVudCB0 aGUgaW50ZW50aW9uIG9mIHRoZSBkcml2ZXIgaXMgbWVhbnQgdG8gdmFsaWRhdGUgdGhlIEZQR0EN CmRlc2lnbnMgb24gdGhlIEFycmlhMTAgZGV2a2l0IGZvciBEaXNwbGF5IFBvcnQgY29ubmVjdGVy LiBXZSBoYXZlIG5vdA0KdmVyaWZpZWQgaXRzIHBlcmZvcm1hbmNlIG9mIG9yIHN0YWJpbGl0eSBp biAzRCBhY2NlbGVyYXRpb24gb3Igb3RoZXINCm5vbiBJbnRlbCBGUEdBIGhhcmR3YXJlDQoNCkJS DQoNCkhlYW4gTG9vbmc= --_002_14909509942157521camelintelcom_ Content-Type: text/x-patch; name="0001-Intel-FPGA-Video-and-Image-Processing-Suite-Frame-Bu.patch" Content-Description: 0001-Intel-FPGA-Video-and-Image-Processing-Suite-Frame-Bu.patch Content-Disposition: attachment; filename="0001-Intel-FPGA-Video-and-Image-Processing-Suite-Frame-Bu.patch"; size=25434; creation-date="Fri, 31 Mar 2017 09:08:36 GMT"; modification-date="Fri, 31 Mar 2017 09:08:36 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSAwZGUyOTNlMzY0NmExNzgwZWQ2MDNjZjhlMWYyYTE5ZDlhZWJiZTgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPbmcsIEhlYW4gTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVs LmNvbT4KRGF0ZTogVGh1LCAzMCBNYXIgMjAxNyAxODowMjoyMiArMDgwMApTdWJqZWN0OiBbUEFU Q0h2MF0gSW50ZWwgRlBHQSBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBGcmFtZSBC dWZmZXIgSUkgZHJpdmVyCgpTaWduZWQtb2ZmLWJ5OiBPbmcsIEhlYW4gTG9vbmcgPGhlYW4ubG9v bmcub25nQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAg ICAgIHwgICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAg MSArCiBkcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnICAgICAgICAgIHwgICAyMiArKysrCiBk cml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZSAgICAgICAgIHwgICAgOSArKwogZHJpdmVycy9n cHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nvbm4uYyB8ICAxNDUgKysrKysrKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYyB8ICAyMTUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBf Y3J0Yy5jIHwgIDE2MSArKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9p dmlwL2ludGVsX3ZpcF9kcnYuaCAgfCAgIDU1ICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2l2 aXAvaW50ZWxfdmlwX29mLmMgICB8ICAxNDYgKysrKysrKysrKysrKysrKysrKysrKwogOSBmaWxl cyBjaGFuZ2VkLCA3NTYgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29ubi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jcnRjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggZWJmZTg0MC4uYzQ4 NzUwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9n cHUvZHJtL0tjb25maWcKQEAgLTE2Nyw2ICsxNjcsOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZp ZyIKIAorc291cmNlICJkcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnIgorCiBjb25maWcgRFJN X1ZHRU0KIAl0cmlzdGF0ZSAiVmlydHVhbCBHRU0gcHJvdmlkZXIiCiAJZGVwZW5kcyBvbiBEUk0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZQppbmRleCBiOWFlNDI4Li45NDVjZjUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC01Miw2ICs1Miw3 IEBAIG9iai0kKENPTkZJR19EUk1fQU1ER1BVKSs9IGFtZC9hbWRncHUvCiBvYmotJChDT05GSUdf RFJNX01HQSkJKz0gbWdhLwogb2JqLSQoQ09ORklHX0RSTV9JODEwKQkrPSBpODEwLwogb2JqLSQo Q09ORklHX0RSTV9JOTE1KQkrPSBpOTE1Lworb2JqLSQoQ09ORklHX0RSTV9JVklQKQkrPSBpdmlw Lwogb2JqLSQoQ09ORklHX0RSTV9NR0FHMjAwKSArPSBtZ2FnMjAwLwogb2JqLSQoQ09ORklHX0RS TV9WQzQpICArPSB2YzQvCiBvYmotJChDT05GSUdfRFJNX0NJUlJVU19RRU1VKSArPSBjaXJydXMv CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnIGIvZHJpdmVycy9ncHUv ZHJtL2l2aXAvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGYz Y2I1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZwpAQCAt MCwwICsxLDIyIEBACitjb25maWcgRFJNX0lWSVAKKyAgICAgICAgdHJpc3RhdGUgIkludGVsIEZH UEEgVmlkZW8gYW5kIEltYWdlIFByb2Nlc3NpbmciCisgICAgICAgIGRlcGVuZHMgb24gRFJNCisg ICAgICAgIHNlbGVjdCBEUk1fR0VNX0NNQV9IRUxQRVIKKyAgICAgICAgc2VsZWN0IERSTV9LTVNf SEVMUEVSCisgICAgICAgIHNlbGVjdCBEUk1fS01TX0ZCX0hFTFBFUgorICAgICAgICBzZWxlY3Qg RFJNX0tNU19DTUFfSEVMUEVSCisgICAgICAgIGhlbHAKKyAgICAgICAgICAgICAgICBDaG9vc2Ug dGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBJbnRlbCBGUEdBIEFycmlhIDEwIHN5c3RlbQorICAg ICAgICAgICAgICAgIGFuZCBhYm92ZSB3aXRoIGEgRGlzcGxheSBQb3J0IElQLiBUaGlzIGRvZXMg bm90IHN1cHBvcnQgbGVnYWN5CisgICAgICAgICAgICAgICAgSW50ZWwgRlBHQSBDeWNsb25lIFYg ZGlzcGxheSBwb3J0LiBDdXJyZW50bHkgb25seSBzaW5nbGUgZnJhbWUKKyAgICAgICAgICAgICAg ICBidWZmZXIgaXMgc3VwcG9ydGVkLiBOb3RlIHRoYXQgQUNQSSBhbmQgWF84NiBhcmNoaXRlY3R1 cmUgaXMgeWV0CisgICAgICAgICAgICAgICAgdG8gYmUgc3VwcG9ydGVkLgorCitjb25maWcgRFJN X0lWSVBfT0YKKyAgICAgICAgdHJpc3RhdGUgIkludGVsIEZHUEEgVmlkZW8gYW5kIEltYWdlIFBy b2Nlc3NpbmcgT3BlbiBGaXJtd2FyZSBTeXN0ZW1zIgorICAgICAgICBkZXBlbmRzIG9uIERSTV9J VklQICYmIE9GCisgICAgICAgIGhlbHAKKyAgICAgICAgICAgICAgICBDaG9vc2UgdGhpcyBvcHRp b24gaWYgdGhlIEludGVsIEZQR0Egc3lzdGVtIGlzIHVzaW5nIE9wZW4KKyAgICAgICAgICAgICAg ICBGaXJtd2FyZSBzeXN0ZW1zIChBcnJpYSAxMCkuIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVs ZSB3b3VsZAorICAgICAgICAgICAgICAgIGJlIGNhbGxlZCBpdmlwLgorCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZTFlOTkKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZQpAQCAtMCwwICsxLDkgQEAK KyMKKyMgTWFrZWZpbGUgZm9yIHRoZSBkcm0gZGV2aWNlIGRyaXZlci4gIFRoaXMgZHJpdmVyIHBy b3ZpZGVzIHN1cHBvcnQgZm9yIHRoZQorIyBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJl IChEUkkpIGluIFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlci4KKworY2NmbGFncy15IDo9IC1JaW5j bHVkZS9kcm0KKworb2JqLSQoQ09ORklHX0RSTV9JVklQX09GKSArPSBpdmlwLm8KK2l2aXAtb2Jq cyA6PSBpbnRlbF92aXBfb2YubyBpbnRlbF92aXBfY29yZS5vIFwKK2ludGVsX3ZpcF9jb25uLm8g aW50ZWxfdmlwX2NydGMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxf dmlwX2Nvbm4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlhYjU4NwotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMKQEAgLTAsMCArMSwxNDUgQEAK Ky8qCisgKiBpbnRlbF92aXBfY29ubi5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNz aW5nKFZJUCkKKyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIKKyAqCisgKiBUaGlzIGRyaXZlciBz dXBwb3J0cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuCisgKiBNb3JlIGlu Zm8gb24gdGhlIGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KKyAqIGFu ZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzCisgKiBo dHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFO VEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisg KiBBdXRob3JzOgorICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+ CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJt L2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlcl9zbGF2ZS5oPgor I2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CisKK3N0YXRpYyBlbnVtIGRybV9jb25u ZWN0b3Jfc3RhdHVzCitpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCit7CisJcmV0dXJuIGNvbm5lY3Rvcl9z dGF0dXNfY29ubmVjdGVkOworfQorCitzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2RybV9jb25uZWN0 b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCWRybV9jb25u ZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOworCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25u ZWN0b3IpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgaW50 ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Z1bmNzID0geworCS5kcG1zID0gZHJtX2hlbHBlcl9jb25u ZWN0b3JfZHBtcywKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQs CisJLmRldGVjdCA9IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9kZXRlY3QsCisJLmZpbGxfbW9k ZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLmRlc3Ryb3kg PSBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZGVzdHJveSwKKwkuYXRvbWljX2R1cGxpY2F0ZV9z dGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCisJLmF0 b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lf c3RhdGUsCit9OworCitzdGF0aWMgaW50IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9k ZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtID0gY29ubmVjdG9yLT5kZXY7CisJaW50IGNvdW50OworCisJY291bnQgPSBkcm1fYWRk X21vZGVzX25vZWRpZChjb25uZWN0b3IsIGRybS0+bW9kZV9jb25maWcubWF4X3dpZHRoLAorCQkJ CSAgICAgZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKKwlkcm1fc2V0X3ByZWZlcnJlZF9t b2RlKGNvbm5lY3RvciwgZHJtLT5tb2RlX2NvbmZpZy5tYXhfd2lkdGgsCisJCQkgICAgICAgZHJt LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MKK2ludGVsdmlwZmJfZHJtX2Nv bm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9IGludGVsdmlwZmJfZHJtX2Nv bm5lY3Rvcl9nZXRfbW9kZXMsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVy X2Z1bmNzCitpbnRlbHZpcGZiX2RybV9lbmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0gZHJt X2VuY29kZXJfY2xlYW51cCwKK307CisKK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfbW9kZV9zZXQo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlLAorCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQorewor CS8qIGRvIG5vdGhpbmcgKi8KK30KKworc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9ub3Aoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCS8qIGRvIG5vdGhpbmcgKi8KK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgaQoraW50ZWx2aXBmYl9kcm1f ZW5jb2Rlcl9oZWxwZXIgPSB7CisJLm1vZGVfc2V0ID0gaW50ZWx2aXBmYl9tb2RlX3NldCwKKwku ZW5hYmxlID0gaW50ZWx2aXBmYl9ub3AsCisJLmRpc2FibGUgPSBpbnRlbHZpcGZiX25vcCwKK307 CisKK2ludCBpbnRlbHZpcGZiX2RybV9jb25uX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkK K3sKKwlzdHJ1Y3QgZHJtX2VuY29kZXJfc2xhdmUgKmVuY29kZXI7CisJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm47CisJaW50IHJldDsKKworCWVuY29kZXIgPSBkZXZtX2t6YWxsb2MoZHJtLT5k ZXYsIHNpemVvZigqZW5jb2RlciksIEdGUF9LRVJORUwpOworCWlmICghZW5jb2RlcikKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwllbmNvZGVyLT5iYXNlLnBvc3NpYmxlX2NydGNzID0gMTsKKwllbmNv ZGVyLT5iYXNlLnBvc3NpYmxlX2Nsb25lcyA9IDA7CisKKwlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0 KGRybSwgJmVuY29kZXItPmJhc2UsCisJCQkgICAgICAgJmludGVsdmlwZmJfZHJtX2VuY29kZXJf ZnVuY3MsCisJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9WSVJUVUFMLCBOVUxMKTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmZW5jb2Rlci0+ YmFzZSwgJmludGVsdmlwZmJfZHJtX2VuY29kZXJfaGVscGVyKTsKKworCWNvbm4gPSBkZXZtX2t6 YWxsb2MoZHJtLT5kZXYsIHNpemVvZigqY29ubiksIEdGUF9LRVJORUwpOworCWlmIChJU19FUlIo Y29ubikpCisJCXJldHVybiBQVFJfRVJSKGNvbm4pOworCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9p bml0KGRybSwgY29ubiwgJmludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9mdW5jcywKKwkJCQkgRFJN X01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJy KGRybS0+ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgZHJtIGNvbm5lY3RvclxuIik7CisJCXJl dCA9IC1FTk9NRU07CisJCWdvdG8gZXJyb3JfZW5jb2Rlcl9jbGVhbnVwOworCX0KKworCWRybV9j b25uZWN0b3JfaGVscGVyX2FkZChjb25uLCAmaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2hlbHBl cl9mdW5jcyk7CisKKwlyZXQgPSBkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29u biwgJmVuY29kZXItPmJhc2UpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZHJtLT5kZXYs ICJjb3VsZCBub3QgYXR0YWNoIGNvbm5lY3RvciB0byBlbmNvZGVyXG4iKTsKKwkJZHJtX2Nvbm5l Y3Rvcl91bnJlZ2lzdGVyKGNvbm4pOworCQlnb3RvIGVycm9yX2Nvbm5lY3Rvcl9jbGVhbnVwOwor CX0KKworCXJldHVybiAwOworCitlcnJvcl9jb25uZWN0b3JfY2xlYW51cDoKKwlkcm1fY29ubmVj dG9yX2NsZWFudXAoY29ubik7CisKK2Vycm9yX2VuY29kZXJfY2xlYW51cDoKKwlkcm1fZW5jb2Rl cl9jbGVhbnVwKCZlbmNvZGVyLT5iYXNlKTsKKworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29yZS5jIGIvZHJpdmVycy9ncHUvZHJt L2l2aXAvaW50ZWxfdmlwX2NvcmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4zMDAxYWQwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxf dmlwX2NvcmUuYwpAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAqIGludGVsX3ZpcF9jb3JlLmMgLS0g SW50ZWwgVmlkZW8gYW5kIEltYWdlIFByb2Nlc3NpbmcoVklQKQorICogRnJhbWUgQnVmZmVyIElJ IGRyaXZlcgorICoKKyAqIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBJbnRlbCBWSVAgRnJhbWUg UmVhZGVyIGNvbXBvbmVudC4KKyAqIE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUgY2FuIGJlIGZv dW5kIGluIHRoZSBJbnRlbCBWaWRlbworICogYW5kIEltYWdlIFByb2Nlc3NpbmcgU3VpdGUgVXNl ciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MKKyAqIGh0dHA6Ly93d3cuYWx0ZXJhLmNvbS9saXRlcmF0 dXJlL3VnL3VnX3ZpcC5wZGYuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisg KiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIEF1dGhvcnM6CisgKiBPbmcsIEhlYW4tTG9v bmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRl IDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVs cGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgorCisjaW5jbHVkZSAiaW50ZWxfdmlwX2Ry di5oIgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpbnRlbHZpcGZiX2Ry bV9mb3BzID0geworCS5vd25lcgkJPSBUSElTX01PRFVMRSwKKwkub3BlbgkJPSBkcm1fb3BlbiwK KwkucmVsZWFzZQk9IGRybV9yZWxlYXNlLAorCS51bmxvY2tlZF9pb2N0bAk9IGRybV9pb2N0bCwK KwkucG9sbAkJPSBkcm1fcG9sbCwKKwkucmVhZAkJPSBkcm1fcmVhZCwKKwkubGxzZWVrCQk9IG5v X2xsc2VlaywKKwkubW1hcAkJPSBkcm1fZ2VtX2NtYV9tbWFwLAorfTsKKworc3RhdGljIHZvaWQg aW50ZWx2aXBmYl9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sKKwlzdHJ1Y3Qg aW50ZWx2aXBmYl9wcml2ICpmYnByaXYgPSBkcm0tPmRldl9wcml2YXRlOworCisJZHJtX2ZiZGV2 X2NtYV9yZXN0b3JlX21vZGUoZmJwcml2LT5mYmNtYSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJt X2RyaXZlciBpbnRlbHZpcGZiX2RybSA9IHsKKwkuZHJpdmVyX2ZlYXR1cmVzID0KKwkgICAgRFJJ VkVSX0dFTSB8IERSSVZFUl9QUklNRSB8CisJICAgIERSSVZFUl9SRU5ERVIgfCBEUklWRVJfTU9E RVNFVCB8IERSSVZFUl9BVE9NSUMsCisJLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9IGRybV9n ZW1fY21hX2ZyZWVfb2JqZWN0LAorCS5nZW1fdm1fb3BzID0gJmRybV9nZW1fY21hX3ZtX29wcywK KwkuZHVtYl9jcmVhdGUgPSBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZSwKKwkuZHVtYl9tYXBfb2Zm c2V0ID0gZHJtX2dlbV9jbWFfZHVtYl9tYXBfb2Zmc2V0LAorCS5kdW1iX2Rlc3Ryb3kgPSBkcm1f Z2VtX2R1bWJfZGVzdHJveSwKKwkucHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dlbV9wcmltZV9o YW5kbGVfdG9fZmQsCisJLnByaW1lX2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9f aGFuZGxlLAorCS5nZW1fcHJpbWVfZXhwb3J0ID0gZHJtX2dlbV9wcmltZV9leHBvcnQsCisJLmdl bV9wcmltZV9pbXBvcnQgPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwkuZ2VtX3ByaW1lX2dldF9z Z190YWJsZSA9IGRybV9nZW1fY21hX3ByaW1lX2dldF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX2lt cG9ydF9zZ190YWJsZSA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKKwkuZ2Vt X3ByaW1lX3ZtYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5nZW1fcHJpbWVfdnVubWFw ID0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcCA9IGRybV9nZW1f Y21hX3ByaW1lX21tYXAsCisJLm5hbWUgPSBEUklWRVJfTkFNRSwKKwkuZGF0ZSA9ICIyMDE3MDMy OSIsCisJLmRlc2MgPSAiSW50ZWwgRlBHQSBWSVAgU1VJVEUiLAorCS5tYWpvciA9IDEsCisJLm1p bm9yID0gMCwKKwkucGF0Y2hsZXZlbCA9IDAsCisJLmxhc3RjbG9zZSA9IGludGVsdmlwZmJfbGFz dGNsb3NlLAorCS5mb3BzID0gJmludGVsdmlwZmJfZHJtX2ZvcHMsCit9OworCitzdGF0aWMgdm9p ZCBpbnRlbHZpcGZiX3N0YXJ0X2h3KHZvaWQgX19pb21lbSAqYmFzZSwgcmVzb3VyY2Vfc2l6ZV90 IGFkZHIpCit7CisJLyoKKwkgKiBUaGUgZnJhbWVpbmZvIHZhcmlhYmxlIGhhcyB0byBjb3JyZXNw b25kIHRvIHRoZSBzaXplIG9mIHRoZSBWSVAgU3VpdGUKKwkgKiBGcmFtZSBSZWFkZXIgcmVnaXN0 ZXIgNyB3aGljaCB3aWxsIGRldGVybWluZSB0aGUgbWF4aW11bSBzaXplIHVzZWQKKwkgKiBpbiB0 aGlzIGZyYW1laW5mbworCSAqLworCisJdTMyIGZyYW1laW5mbzsKKworCWZyYW1laW5mbyA9CisJ CXJlYWRsKGJhc2UgKyBJTlRFTFZJUEZCX0ZSQU1FX1JFQURFUikgJiAweDAwZmZmZmZmOworCisJ d3JpdGVsKGZyYW1laW5mbywgYmFzZSArIElOVEVMVklQRkJfRlJBTUVfSU5GTyk7CisKKwl3cml0 ZWwoYWRkciwgYmFzZSArIElOVEVMVklQRkJfRlJBTUVfU1RBUlQpOworCS8qIEZpbmFsbHkgc2V0 IHRoZSBjb250cm9sIHJlZ2lzdGVyIHRvIDEgdG8gc3RhcnQgc3RyZWFtaW5nICovCisJd3JpdGVs KDEsIGJhc2UgKyBJTlRFTFZJUEZCX0NPTlRST0wpOworfQorCitzdGF0aWMgdm9pZCBpbnRlbHZp cGZiX2Rpc2FibGVfaHcodm9pZCBfX2lvbWVtICpiYXNlKQoreworCS8qIHNldCB0aGUgY29udHJv bCByZWdpc3RlciB0byAwIHRvIHN0b3Agc3RyZWFtaW5nICovCisJd3JpdGVsKDAsIGJhc2UgKyBJ TlRFTFZJUEZCX0NPTlRST0wpOworfQorCitzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX291dHB1dF9w b2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sKKwlzdHJ1Y3QgaW50ZWx2aXBm Yl9wcml2ICpmYnByaXYgPSBkcm0tPmRldl9wcml2YXRlOworCisJZHJtX2ZiZGV2X2NtYV9ob3Rw bHVnX2V2ZW50KGZicHJpdi0+ZmJjbWEpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9t b2RlX2NvbmZpZ19mdW5jcyBpbnRlbHZpcGZiX21vZGVfY29uZmlnX2Z1bmNzID0geworCS5mYl9j cmVhdGUgPSBkcm1fZmJfY21hX2NyZWF0ZSwKKwkub3V0cHV0X3BvbGxfY2hhbmdlZCA9IGludGVs dmlwZmJfb3V0cHV0X3BvbGxfY2hhbmdlZCwKKwkuYXRvbWljX2NoZWNrID0gZHJtX2F0b21pY19o ZWxwZXJfY2hlY2ssCisJLmF0b21pY19jb21taXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQs Cit9OworCitzdGF0aWMgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3MgaW50ZWx2 aXBmYl9tb2RlX2NvbmZpZ19oZWxwZXJzID0geworCS5hdG9taWNfY29tbWl0X3RhaWwgPSBkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfdGFpbCwKK307CisKK3N0YXRpYyB2b2lkIGludGVsdmlwZmJf c2V0dXBfbW9kZV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKKwkJCQkJIHN0cnVjdCBm Yl9pbmZvICppbmZvKQoreworCWRybV9tb2RlX2NvbmZpZ19pbml0KGRybSk7CisJZHJtLT5tb2Rl X2NvbmZpZy5taW5fd2lkdGggPSAwOworCWRybS0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7 CisJZHJtLT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSBpbmZvLT52YXIueHJlczsKKwlkcm0tPm1v ZGVfY29uZmlnLm1heF9oZWlnaHQgPSBpbmZvLT52YXIueXJlczsKKwlkcm0tPm1vZGVfY29uZmln LnByZWZlcnJlZF9kZXB0aCA9IDMyOworCWRybS0+bW9kZV9jb25maWcuZnVuY3MgPSAmaW50ZWx2 aXBmYl9tb2RlX2NvbmZpZ19mdW5jczsKKwlkcm0tPm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRl ID0gJmludGVsdmlwZmJfbW9kZV9jb25maWdfaGVscGVyczsKK30KKworaW50IGludGVsdmlwZmJf cHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UpCit7CisJaW50IHJl dHZhbDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOworCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYg KmZicHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBmYl9pbmZvICppbmZvID0g JmZicHJpdi0+aW5mbzsKKworCS8qc2V0dXAgRFJNICovCisJZHJtID0gZHJtX2Rldl9hbGxvYygm aW50ZWx2aXBmYl9kcm0sIGRldik7CisJaWYgKElTX0VSUihkcm0pKQorCQlyZXR1cm4gUFRSX0VS Uihkcm0pOworCisJZHJtLT5kZXZfcHJpdmF0ZSA9IGZicHJpdjsKKworCWRldl9zZXRfZHJ2ZGF0 YShkZXYsIGRybSk7CisKKwlpbnRlbHZpcGZiX3NldHVwX21vZGVfY29uZmlnKGRybSwgaW5mbyk7 CisKKwlyZXR2YWwgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRybS0+ZGV2LCBETUFfQklU X01BU0soMzIpKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHZhbCA9 IGludGVsdmlwZmJfc2V0dXBfY3J0Yyhkcm0pOworCWlmIChyZXR2YWwgPCAwKQorCQlyZXR1cm4g LUVOT0RFVjsKKworCXJldHZhbCA9IGludGVsdmlwZmJfZHJtX2Nvbm5faW5pdChkcm0pOworCWlm IChyZXR2YWwpCisJCXJldHVybiAtRU5PTUVNOworCisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRy bSk7CisKKwlmYnByaXYtPmZiY21hID0gZHJtX2ZiZGV2X2NtYV9pbml0KGRybSwgUFJFRl9CUFAs CisJCQkJCQkJQ1JUQ19OVU0sIENPTk5fTlVNKTsKKwlpZiAoIWZicHJpdi0+ZmJjbWEpIHsKKwkJ ZmJwcml2LT5mYmNtYSA9IE5VTEw7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWludGVsdmlw ZmJfc3RhcnRfaHcoYmFzZSwgZHJtLT5tb2RlX2NvbmZpZy5mYl9iYXNlKTsKKworCWRybV9rbXNf aGVscGVyX3BvbGxfaW5pdChkcm0pOworCisJZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOworCisJ cmV0dXJuIHJldHZhbDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGludGVsdmlwZmJfcHJvYmUpOwor CitpbnQgaW50ZWx2aXBmYl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBk cm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWx2aXBm Yl9wcml2ICpmYnByaXYgPSBkcm0tPmRldl9wcml2YXRlOworCisJZHJtX2Rldl91bnJlZ2lzdGVy KGRybSk7CisKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZHJtKTsKKwlkcm1fZmJkZXZfY21h X2ZpbmkoZmJwcml2LT5mYmNtYSk7CisKKwlpbnRlbHZpcGZiX2Rpc2FibGVfaHcoZmJwcml2LT5i YXNlKTsKKworZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKKworZHJtX2Rldl91bnJlZihk cm0pOworCitkZXZtX2tmcmVlKGRldiwgZmJwcml2KTsKKworCXJldHVybiAwOworfQorRVhQT1JU X1NZTUJPTF9HUEwoaW50ZWx2aXBmYl9yZW1vdmUpOworCitNT0RVTEVfQVVUSE9SKCJPbmcsIEhl YW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElP TigiSW50ZWwgVklQIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJH UEwgdjIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jcnRj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY3J0Yy5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YTM5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY3J0Yy5jCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICog aW50ZWxfdmlwX2NydGMuYyAtLSBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVAp CisgKiBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyCisgKgorICogVGhpcyBkcml2ZXIgc3VwcG9ydHMg dGhlIEludGVsIFZJUCBGcmFtZSBSZWFkZXIgY29tcG9uZW50LgorICogTW9yZSBpbmZvIG9uIHRo ZSBoYXJkd2FyZSBjYW4gYmUgZm91bmQgaW4gdGhlIEludGVsIFZpZGVvCisgKiBhbmQgSW1hZ2Ug UHJvY2Vzc2luZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRoaXMgYWRkcmVzcworICogaHR0cDovL3d3 dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogQXV0aG9y czoKKyAqIE9uZywgSGVhbi1Mb29uZyA8aGVhbi5sb29uZy5vbmdAaW50ZWwuY29tPgorICoKKyAq LworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgor I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RhdGEvc2ltcGxlZmIuaD4KKworI2luY2x1ZGUgPGRy bS9kcm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgor I2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2Vt X2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgorCisjaW5j bHVkZSAiaW50ZWxfdmlwX2Rydi5oIgorCitzdGF0aWMgc3RydWN0IHNpbXBsZWZiX2Zvcm1hdCBp bnRlbHZpcGZiX2Zvcm1hdHNbXSA9IFNJTVBMRUZCX0ZPUk1BVFM7CisKK3N0YXRpYyB2b2lkIGlu dGVsdmlwZmJfY3J0Y19kZXN0cm95KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlkcm1fY3J0 Y19jbGVhbnVwKGNydGMpOworCWtmcmVlKGNydGMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9jcnRjX2Z1bmNzIGludGVsdmlwZmJfY3J0Y19mdW5jcyA9IHsKKwkuZGVzdHJveSA9IGlu dGVsdmlwZmJfY3J0Y19kZXN0cm95LAorCS5zZXRfY29uZmlnID0gZHJtX2F0b21pY19oZWxwZXJf c2V0X2NvbmZpZywKKwkucGFnZV9mbGlwID0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwLAor CS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQsCisJLmF0b21pY19kdXBsaWNh dGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRv bWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUs Cit9OworCitzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKKwkJCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCit7CisJ c3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQgPSBjcnRjLT5zdGF0ZS0+ZXZl bnQ7CisKKwlpZiAoZXZlbnQpIHsKKwkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKKworCQlz cGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOworCQlkcm1fY3J0Y19zZW5kX3Zi bGFua19ldmVudChjcnRjLCBldmVudCk7CisJCXNwaW5fdW5sb2NrX2lycSgmY3J0Yy0+ZGV2LT5l dmVudF9sb2NrKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfY3J0Y19ub3Aoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQoreworCS8qIGRvIG5vdGhpbmcgKi87Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIGludGVsdmlwZmJfY3J0Y19oZWxwZXJf ZnVuY3MgPSB7CisJLmF0b21pY19iZWdpbgk9IGludGVsdmlwZmJfY3J0Y19hdG9taWNfYmVnaW4s CisJLmVuYWJsZSA9IGludGVsdmlwZmJfY3J0Y19ub3AsCit9OworCitzdGF0aWMgdm9pZCBpbnRl bHZpcGZiX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7CisJZHJtX3Bs YW5lX2hlbHBlcl9kaXNhYmxlKHBsYW5lKTsKKwlkcm1fcGxhbmVfY2xlYW51cChwbGFuZSk7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsdmlwZmJfcGxhbmVf ZnVuY3MgPSB7CisJLnVwZGF0ZV9wbGFuZQkJPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxh bmUsCisJLmRpc2FibGVfcGxhbmUJCT0gZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9wbGFuZSwK KwkuZGVzdHJveQkJPSBpbnRlbHZpcGZiX3BsYW5lX2Rlc3Ryb3ksCisJLnJlc2V0CQkJPSBkcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9yZXNldCwKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lf c3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlLAorfTsKKworc3Rh dGljIHZvaWQgaW50ZWx2aXBmYl9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAorCQkJCQkgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1 Y3QgaW50ZWx2aXBmYl9wcml2ICpmYnByaXY7CisJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAq Z2VtOworCisJaWYgKCFwbGFuZS0+c3RhdGUtPmNydGMgfHwgIXBsYW5lLT5zdGF0ZS0+ZmIpCisJ CXJldHVybjsKKworCWZicHJpdiA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOworCWdlbSA9IGRy bV9mYl9jbWFfZ2V0X2dlbV9vYmoocGxhbmUtPnN0YXRlLT5mYiwgMCk7CisJd3JpdGVsKGdlbS0+ cGFkZHIsIGZicHJpdi0+YmFzZSArIElOVEVMVklQRkJfRlJBTUVfU1RBUlQpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgaW50ZWx2aXBmYl9wbGFuZV9o ZWxwZXJfZnVuY3MgPSB7CisJLmF0b21pY191cGRhdGUgPSBpbnRlbHZpcGZiX3BsYW5lX2F0b21p Y191cGRhdGUsCit9OworCitzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWx2aXBmYl9wbGFu ZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCit7CisJc3RydWN0IGRybV9wbGFuZSAqcGxh bmUgPSBOVUxMOworCXUzMiBmb3JtYXRzW0FSUkFZX1NJWkUoaW50ZWx2aXBmYl9mb3JtYXRzKV0s IGk7CisJaW50IHJldDsKKworCXBsYW5lID0gZGV2bV9remFsbG9jKGRybS0+ZGV2LCBzaXplb2Yo KnBsYW5lKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwbGFuZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnRlbHZpcGZiX2Zvcm1hdHMp OyBpKyspCisJCWZvcm1hdHNbaV0gPSBpbnRlbHZpcGZiX2Zvcm1hdHNbaV0uZm91cmNjOworCisJ cmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRybSwgcGxhbmUsIDB4ZmYsCisJCQkJICAg ICAgICZpbnRlbHZpcGZiX3BsYW5lX2Z1bmNzLAorCQkJCSAgICAgICBmb3JtYXRzLCBBUlJBWV9T SVpFKGZvcm1hdHMpLAorCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZLCBOVUxMKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCisJZHJtX3BsYW5lX2hlbHBlcl9h ZGQocGxhbmUsICZpbnRlbHZpcGZiX3BsYW5lX2hlbHBlcl9mdW5jcyk7CisKKwlyZXR1cm4gcGxh bmU7Cit9CisKK2ludCBpbnRlbHZpcGZiX3NldHVwX2NydGMoc3RydWN0IGRybV9kZXZpY2UgKmRy bSkKK3sKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFy eTsKKwlpbnQgcmV0OworCisJY3J0YyA9IGt6YWxsb2Moc2l6ZW9mKCpjcnRjKSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFjcnRjKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXByaW1hcnkgPSBpbnRlbHZp cGZiX3BsYW5lX2luaXQoZHJtKTsKKwlpZiAoSVNfRVJSKHByaW1hcnkpKQorCQlyZXR1cm4gUFRS X0VSUihwcmltYXJ5KTsKKworCXJldCA9IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoZHJtLCBj cnRjLCBwcmltYXJ5LCBOVUxMLAorCQkJCQkmaW50ZWx2aXBmYl9jcnRjX2Z1bmNzLCBOVUxMKTsK KworCWlmIChyZXQpIHsKKwkJaW50ZWx2aXBmYl9wbGFuZV9kZXN0cm95KHByaW1hcnkpOworCQly ZXR1cm4gcmV0OworCX0KKworCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgJmludGVsdmlwZmJf Y3J0Y19oZWxwZXJfZnVuY3MpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxf dmlwX2Rydi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1N2YyM2MKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2LmgKQEAg LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlv bi4KKyAqCisgKiBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApIEZyYW1lIEJ1 ZmZlciBJSSBkcml2ZXIuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiB2 ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv cgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAq CisgKiBBdXRob3JzOgorICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5j b20+CisgKgorICovCisjaWZuZGVmIF9JTlRFTF9WSVBfRFJWX0gKKyNkZWZpbmUgX0lOVEVMX1ZJ UF9EUlZfSAorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvZmIuaD4KKwor I2RlZmluZSBEUklWRVJfTkFNRQkiaW50ZWx2aXBmYiIKKyNkZWZpbmUgQllURVNfUEVSX1BJWEVM CTQKKyNkZWZpbmUgUFJFRl9CUFAJCTMyCisjZGVmaW5lIENSVENfTlVNCQkxCisjZGVmaW5lIENP Tk5fTlVNCQkxCisKKy8qIGNvbnRyb2wgcmVnaXN0ZXJzICovCisjZGVmaW5lIElOVEVMVklQRkJf Q09OVFJPTAkJMAorI2RlZmluZSBJTlRFTFZJUEZCX1NUQVRVUwkJMHg0CisjZGVmaW5lIElOVEVM VklQRkJfSU5URVJSVVBUCQkweDgKKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9DT1VOVEVSCTB4 QworI2RlZmluZSBJTlRFTFZJUEZCX0ZSQU1FX0RST1AJCTB4MTAKKyNkZWZpbmUgSU5URUxWSVBG Ql9GUkFNRV9JTkZPCQkweDE0CisjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfU1RBUlQJCTB4MTgK KyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9SRUFERVIJCTB4MUMKKworaW50IGludGVsdmlwZmJf cHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UpOworaW50IGludGVs dmlwZmJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7CitpbnQgaW50ZWx2aXBmYl9zZXR1cF9j cnRjKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pOworaW50IGludGVsdmlwZmJfZHJtX2Nvbm5faW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKKworc3RydWN0IGludGVsdmlwZmJfcHJpdiB7CisJ c3RydWN0IGRybV9mYmRldl9jbWEgKmZiY21hOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJ c3RydWN0IGZiX2luZm8gaW5mbzsKKwl2b2lkCV9faW9tZW0JCSpiYXNlOworfTsKKworI2VuZGlm CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuYyBiL2RyaXZl cnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjE3ZGZmMzYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZp cC9pbnRlbF92aXBfb2YuYwpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIGludGVsX3ZpcF9vZi5j IC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJUCkKKyAqIEZyYW1lIEJ1ZmZl ciBJSSBkcml2ZXIKKyAqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQIEZy YW1lIFJlYWRlciBjb21wb25lbnQuCisgKiBNb3JlIGluZm8gb24gdGhlIGhhcmR3YXJlIGNhbiBi ZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KKyAqIGFuZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRl IFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzCisgKiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0 ZXJhdHVyZS91Zy91Z192aXAucGRmLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl LAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBBdXRob3JzOgorICogT25nLCBIZWFu LUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlIDxs aW51eC9mYi5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CisjaW5jbHVkZSAi aW50ZWxfdmlwX2Rydi5oIgorCisvKgorICogU2V0dGluZyB1cCBpbmZvcm1hdGlvbiBkZXJpdmVk IGZyb20gT0YgRGV2aWNlIFRyZWUgTm9kZXMKKyAqIG1heC13aWR0aCwgbWF4LWhlaWdodCwgYml0 cyBwZXIgcGl4ZWwsIG1lbW9yeSBwb3J0IHdpZHRoCisgKi8KKworc3RhdGljIGludCBpbnRlbHZp cGZiX29mX3NldHVwKHN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZiZGF0YSwKKwkJCSAgICAgICBz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWludCByZXQ7CisJaW50IG1lbV93b3Jk X3dpZHRoOworCXUzMiBiaXRzX3Blcl9jb2xvcjsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0g cGRldi0+ZGV2Lm9mX25vZGU7CisKKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFs dHIsbWF4LXdpZHRoIiwKKwkJCQkgICAmZmJkYXRhLT5pbmZvLnZhci54cmVzKTsKKwlpZiAocmV0 KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwKKwkJCSJNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRl ciAnYWx0cixtYXgtd2lkdGgnIik7CisJCXJldHVybiByZXQ7CisJfQorCWZiZGF0YS0+aW5mby52 YXIueHJlc192aXJ0dWFsID0gZmJkYXRhLT5pbmZvLnZhci54cmVzOworCisJcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1heC1oZWlnaHQiLAorCQkJCSAgICZmYmRhdGEtPmlu Zm8udmFyLnlyZXMpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LAorCQkJIk1p c3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyICdhbHRyLG1heC1oZWlnaHQnIik7CisJCXJldHVybiBy ZXQ7CisJfQorCWZiZGF0YS0+aW5mby52YXIueXJlc192aXJ0dWFsID0gZmJkYXRhLT5pbmZvLnZh ci55cmVzOworCisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLGJpdHMtcGVy LXN5bWJvbCIsICZiaXRzX3Blcl9jb2xvcik7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZwZGV2 LT5kZXYsCisJCQkiTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXIgJ2FsdHIsYml0cy1wZXItc3lt Ym9sJyIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWZiZGF0YS0+aW5mby52YXIuYml0c19wZXJf cGl4ZWwgPSBiaXRzX3Blcl9jb2xvciAqIEJZVEVTX1BFUl9QSVhFTDsKKworCXJldCA9IG9mX3By b3BlcnR5X3JlYWRfdTMyKG5wLCAiYWx0cixtZW0tcG9ydC13aWR0aCIsICZtZW1fd29yZF93aWR0 aCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsCisJCQkiTWlzc2luZyByZXF1 aXJlZCBwYXJhbWV0ZXIgJ2FsdHIsbWVtLXBvcnQtd2lkdGggJyIpOworCQlyZXR1cm4gcmV0Owor CX0KKworCWlmICghKG1lbV93b3JkX3dpZHRoID49IDMyICYmIG1lbV93b3JkX3dpZHRoICUgMzIg PT0gMCkpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LAorCQkJIm1lbS13b3JkLXdpZHRoIGlzIHNl dCB0byAlaS4gbXVzdCBiZSA+PSAzMiBhbmQgbXVsdGlwbGUgb2YgMzIuIiwKKwkJCSBtZW1fd29y ZF93aWR0aCk7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGludGVsdmlwZmJfb2ZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK K3sKKwlpbnQgcmV0dmFsOworCXN0cnVjdCByZXNvdXJjZSAqcmVnX3JlczsKKwlzdHJ1Y3QgaW50 ZWx2aXBmYl9wcml2ICpmYmRhdGE7CisKKwlmYmRhdGEgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRl diwgc2l6ZW9mKCpmYmRhdGEpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZiZGF0YSkKKwkJcmV0dXJu IC1FTk9NRU07CisKKwlyZWdfcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsKKwlpZiAoIXJlZ19yZXMpCisJCXJldHVybiAtRU5PTUVNOworCisJZmJk YXRhLT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlZ19yZXMpOwor CisJaWYgKElTX0VSUihmYmRhdGEtPmJhc2UpKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImRl dm1faW9yZW1hcF9yZXNvdXJjZSBmYWlsZWRcbiIpOworCQlyZXR2YWwgPSBQVFJfRVJSKGZiZGF0 YS0+YmFzZSk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWludGVsdmlwZmJfb2Zfc2V0dXAo ZmJkYXRhLCBwZGV2KTsKKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGZiZGF0YSk7CisK KwlyZXR1cm4gaW50ZWx2aXBmYl9wcm9iZSgmcGRldi0+ZGV2LCBmYmRhdGEtPmJhc2UpOworfQor CitzdGF0aWMgaW50IGludGVsdmlwZmJfb2ZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCit7CisJcmV0dXJuIGludGVsdmlwZmJfcmVtb3ZlKCZwZGV2LT5kZXYpOworfQorCisv KgorICogVGhlIG5hbWUgdmlwLWZyYW1lLWJ1ZmZlci0yLjAgaXMgZGVyaXZlZCBmcm9tCisgKiBo dHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmCisgKiBmcmFtZSBi dWZmZXIgSVAgY29yZXMgc2VjdGlvbiAxNAorICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIGludGVsdmlwZmJfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImFs dHIsdmlwLWZyYW1lLWJ1ZmZlci0yLjAiIH0sCisJe30sCit9OworCitNT0RVTEVfREVWSUNFX1RB QkxFKG9mLCBpbnRlbHZpcGZiX29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgaW50ZWx2aXBmYl9kcml2ZXIgPSB7CisJLnByb2JlID0gaW50ZWx2aXBmYl9vZl9wcm9i ZSwKKwkucmVtb3ZlID0gaW50ZWx2aXBmYl9vZl9yZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5h bWUgPSBEUklWRVJfTkFNRSwKKwkJLm9mX21hdGNoX3RhYmxlID0gaW50ZWx2aXBmYl9vZl9tYXRj aCwKKwl9LAorfTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbnRlbHZpcGZiX2RyaXZlcik7 Ci0tIAoxLjcuMQoK --_002_14909509942157521camelintelcom_ Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --_002_14909509942157521camelintelcom_--