From mboxrd@z Thu Jan 1 00:00:00 1970 From: Emil Condrea Subject: [PATCH 15/19] Qemu-Xen-vTPM: Xen frontend driver infrastructure Date: Sun, 10 Jul 2016 14:47:46 +0300 Message-ID: <1468151270-12984-16-git-send-email-emilcondrea@gmail.com> References: <1468151270-12984-1-git-send-email-emilcondrea@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468151270-12984-1-git-send-email-emilcondrea@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: wei.liu2@citrix.com, stefanb@linux.vnet.ibm.com, stefano.stabellini@eu.citrix.com, xen-devel@lists.xen.org, quan.xu@intel.com, dgdegra@tycho.nsa.gov, eblake@redhat.com, emilcondrea@gmail.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGluZnJhc3RydWN0dXJlIGZvciB4ZW4gZnJvbnQgZHJpdmVycyBsaXZp bmcgaW4gcWVtdSwKc28gZHJpdmVycyBkb24ndCBuZWVkIHRvIGltcGxlbWVudCBjb21tb24gc3R1 ZmYgb24gdGhlaXIgb3duLiAgSXQncwptb3N0bHkgeGVuYnVzIG1hbmFnZW1lbnQgc3R1ZmY6IHNv bWUgZnVuY3Rpb25zIHRvIGFjY2VzcyBYZW5TdG9yZSwKc2V0dGluZyB1cCBYZW5TdG9yZSB3YXRj aGVzLCBjYWxsYmFja3Mgb24gZGV2aWNlIGRpc2NvdmVyeSBhbmQgc3RhdGUKY2hhbmdlcywgYW5k IGhhbmRsZSBldmVudCBjaGFubmVsIGJldHdlZW4gdGhlIHZpcnR1YWwgbWFjaGluZXMuCgpDYWxs IHhlbl9mZV9yZWdpc3RlcigpIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIFhlbkRldk9wcywgYW5kIG1h a2Ugc3VyZSwKWGVuRGV2T3BzJ3MgZmxhZ3MgaXMgREVWT1BTX0ZMQUdfRkUsIHdoaWNoIGlzIGZs YWcgYml0IHRvIHBvaW50IG91dAp0aGUgWGVuRGV2T3BzIGlzIFhlbiBmcm9udGVuZC4KClNpZ25l ZC1vZmYtYnk6IFF1YW4gWHUgPHF1YW4ueHVAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBFbWls IENvbmRyZWEgPGVtaWxjb25kcmVhQGdtYWlsLmNvbT4KCi0tLQpDaGFuZ2VzIGluIHY5OgogKiB4 ZW5zdG9yZV9kZXYgc2hvdWxkIG5vdCBiZSBnbG9iYWwsIGl0IHdpbGwgbm90IHdvcmsgY29ycmVj dGx5IHdpdGgKbXVsdGlwbGUgeGVuIGZyb250ZW5kcyBsaXZpbmcgaW4gcWVtdQogKiByZXVzZSBz b21lIGNvbW1vbiBmdW5jdGlvbnM6CiAgICAtIHhlbl9mZV9wcmludGYgLT4geGVuX3B2X3ByaW50 ZgogICAgLSB4ZW5fZmVfZXZ0Y2huX2V2ZW50IC0+IHhlbl9wdl9ldnRjaG5fZXZlbnQKICogdXNl IGxpYnhlbmV2dGNobiBzdGFibGUgQVBJIGluc3RlYWQgb2YgeGNfKiBjYWxsczoKICAgIC0geGNf ZXZ0Y2huX2ZkIC0+IHhlbmV2dGNobl9mZAogICAgLSB4Y19ldnRjaG5fY2xvc2UgLT4geGVuZXZ0 Y2huX2Nsb3NlCiAgICAtIHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCAtPiB4ZW5ldnRjaG5f YmluZF91bmJvdW5kX3BvcnQKLS0tCiBody94ZW4veGVuX2Zyb250ZW5kLmMgICAgICAgICB8IDMw OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGh3L3hlbi94ZW5f cHZkZXYuYyAgICAgICAgICAgIHwgIDE1ICsrCiBpbmNsdWRlL2h3L3hlbi94ZW5fZnJvbnRlbmQu aCB8ICAgNiArCiBpbmNsdWRlL2h3L3hlbi94ZW5fcHZkZXYuaCAgICB8ICAgMSArCiA0IGZpbGVz IGNoYW5nZWQsIDMzMCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvaHcveGVuL3hlbl9mcm9u dGVuZC5jIGIvaHcveGVuL3hlbl9mcm9udGVuZC5jCmluZGV4IDZiOTJjZjEuLjdiMzA1Y2UgMTAw NjQ0Ci0tLSBhL2h3L3hlbi94ZW5fZnJvbnRlbmQuYworKysgYi9ody94ZW4veGVuX2Zyb250ZW5k LmMKQEAgLTMsNiArMywxMCBAQAogICoKICAqICAoYykgMjAwOCBHZXJkIEhvZmZtYW5uIDxrcmF4 ZWxAcmVkaGF0LmNvbT4KICAqCisgKiAgQ29weXJpZ2h0IChjKSAyMDE1IEludGVsIENvcnBvcmF0 aW9uCisgKiAgQXV0aG9yczoKKyAqICAgIFF1YW4gWHUgPHF1YW4ueHVAaW50ZWwuY29tPgorICoK ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKICAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgpAQCAtMjMsNiArMjcsOCBAQAogI2luY2x1ZGUgImh3L3hl bi94ZW5fZnJvbnRlbmQuaCIKICNpbmNsdWRlICJody94ZW4veGVuX2JhY2tlbmQuaCIKIAorc3Rh dGljIGludCBkZWJ1ZyA9IDA7CisKIGNoYXIgKnhlbnN0b3JlX3JlYWRfZmVfc3RyKHN0cnVjdCBY ZW5EZXZpY2UgKnhlbmRldiwgY29uc3QgY2hhciAqbm9kZSkKIHsKICAgICByZXR1cm4geGVuc3Rv cmVfcmVhZF9zdHIoeGVuZGV2LT5mZSwgbm9kZSk7CkBAIC04NiwzICs5MiwzMDUgQEAgdm9pZCB4 ZW5zdG9yZV91cGRhdGVfZmUoY2hhciAqd2F0Y2gsIHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikK ICAgICB4ZW5fZmVfZnJvbnRlbmRfY2hhbmdlZCh4ZW5kZXYsIG5vZGUpOwogICAgIHhlbl9iZV9j aGVja19zdGF0ZSh4ZW5kZXYpOwogfQorCitzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5fZmVfZ2V0X3hl bmRldihjb25zdCBjaGFyICp0eXBlLCBpbnQgZG9tLCBpbnQgZGV2LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hhciAqYmFja2VuZCwgc3RydWN0IFhlbkRldk9wcyAqb3Bz KQoreworICAgIHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldjsKKworICAgIHhlbmRldiA9IHhlbl9w dl9maW5kX3hlbmRldih0eXBlLCBkb20sIGRldik7CisgICAgaWYgKHhlbmRldikgeworICAgICAg ICByZXR1cm4geGVuZGV2OworICAgIH0KKworICAgIC8qIGluaXQgbmV3IHhlbmRldiAqLworICAg IHhlbmRldiA9IGdfbWFsbG9jMChvcHMtPnNpemUpOworICAgIHhlbmRldi0+dHlwZSAgPSB0eXBl OworICAgIHhlbmRldi0+ZG9tICAgPSBkb207CisgICAgeGVuZGV2LT5kZXYgICA9IGRldjsKKyAg ICB4ZW5kZXYtPm9wcyAgID0gb3BzOworCisgICAgLypyZXR1cm4gaWYgdGhlIG9wcy0+ZmxhZ3Mg aXMgbm90IERFVk9QU19GTEFHX0ZFKi8KKyAgICBpZiAoIShvcHMtPmZsYWdzICYgREVWT1BTX0ZM QUdfRkUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNucHJpbnRmKHhl bmRldi0+YmUsIHNpemVvZih4ZW5kZXYtPmJlKSwgIiVzIiwgYmFja2VuZCk7CisgICAgc25wcmlu dGYoeGVuZGV2LT5uYW1lLCBzaXplb2YoeGVuZGV2LT5uYW1lKSwgIiVzLSVkIiwKKyAgICAgICAg ICAgICB4ZW5kZXYtPnR5cGUsIHhlbmRldi0+ZGV2KTsKKworICAgIHhlbmRldi0+ZGVidWcgPSBk ZWJ1ZzsKKyAgICB4ZW5kZXYtPmxvY2FsX3BvcnQgPSAtMTsKKworICAgIHhlbmRldi0+ZXZ0Y2hu ZGV2ID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisgICAgaWYgKHhlbmRldi0+ZXZ0Y2huZGV2 ID09IE5VTEwpIHsKKyAgICAgICAgeGVuX3B2X3ByaW50ZihOVUxMLCAwLCAiY2FuJ3Qgb3BlbiBl dnRjaG4gZGV2aWNlXG4iKTsKKyAgICAgICAgZ19mcmVlKHhlbmRldik7CisgICAgICAgIHJldHVy biBOVUxMOworICAgIH0KKyAgICBmY250bCh4ZW5ldnRjaG5fZmQoeGVuZGV2LT5ldnRjaG5kZXYp LCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKKworICAgIGlmIChvcHMtPmZsYWdzICYgREVWT1BTX0ZM QUdfTkVFRF9HTlRERVYpIHsKKyAgICAgICAgeGVuZGV2LT5nbnR0YWJkZXYgPSB4ZW5nbnR0YWJf b3BlbihOVUxMLCAwKTsKKyAgICAgICAgaWYgKHhlbmRldi0+Z250dGFiZGV2ID09IE5VTEwpIHsK KyAgICAgICAgICAgIHhlbl9wdl9wcmludGYoTlVMTCwgMCwgImNhbid0IG9wZW4gZ250dGFiIGRl dmljZVxuIik7CisgICAgICAgICAgICB4ZW5ldnRjaG5fY2xvc2UoeGVuZGV2LT5ldnRjaG5kZXYp OworICAgICAgICAgICAgZ19mcmVlKHhlbmRldik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsK KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHhlbmRldi0+Z250dGFiZGV2ID0gTlVM TDsKKyAgICB9CisKKyAgICB4ZW5fcHZfaW5zZXJ0X3hlbmRldih4ZW5kZXYpOworCisgICAgaWYg KHhlbmRldi0+b3BzLT5hbGxvYykgeworICAgICAgICB4ZW5kZXYtPm9wcy0+YWxsb2MoeGVuZGV2 KTsKKyAgICB9CisKKyAgICByZXR1cm4geGVuZGV2OworfQorCitpbnQgeGVuX2ZlX2FsbG9jX3Vu Ym91bmQoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBpbnQgZG9tLCBpbnQgcmVtb3RlX2RvbSl7 CisgICAgeGVuZGV2LT5sb2NhbF9wb3J0ID0geGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhl bmRldi0+ZXZ0Y2huZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZW1vdGVfZG9tKTsKKyAgICBpZiAoeGVuZGV2LT5sb2NhbF9wb3J0ID09 IC0xKSB7CisgICAgICAgIHhlbl9wdl9wcmludGYoeGVuZGV2LCAwLCAieGVuZXZ0Y2huX2JpbmRf dW5ib3VuZF9wb3J0IGZhaWxlZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAg eGVuX3B2X3ByaW50Zih4ZW5kZXYsIDIsICJiaW5kIGV2dGNobiBwb3J0ICVkXG4iLCB4ZW5kZXYt PmxvY2FsX3BvcnQpOworICAgIHFlbXVfc2V0X2ZkX2hhbmRsZXIoeGVuZXZ0Y2huX2ZkKHhlbmRl di0+ZXZ0Y2huZGV2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wdl9ldnRjaG5fZXZl bnQsIE5VTEwsIHhlbmRldik7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBNYWtlIHN1cmUs IGluaXRpYWxpemUgdGhlICd4ZW5kZXYtPmZlJyBpbiB4ZW5kZXYtPm9wcy0+aW5pdCgpIG9yCisg KiB4ZW5kZXYtPm9wcy0+aW5pdGlhbGl6ZSgpCisgKi8KK2ludCB4ZW5idXNfc3dpdGNoX3N0YXRl KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgZW51bSB4ZW5idXNfc3RhdGUgeGJ1cykKK3sKKyAg ICB4c190cmFuc2FjdGlvbl90IHhidCA9IFhCVF9OVUxMOworCisgICAgaWYgKHhlbmRldi0+ZmVf c3RhdGUgPT0geGJ1cykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB4ZW5kZXYt PmZlX3N0YXRlID0geGJ1czsKKyAgICBpZiAoeGVuZGV2LT5mZSA9PSBOVUxMKSB7CisgICAgICAg IHhlbl9wdl9wcmludGYoTlVMTCwgMCwgInhlbmRldi0+ZmUgaXMgTlVMTFxuIik7CisgICAgICAg IHJldHVybiAtMTsKKyAgICB9CisKK3JldHJ5X3RyYW5zYWN0aW9uOgorICAgIHhidCA9IHhzX3Ry YW5zYWN0aW9uX3N0YXJ0KHhlbnN0b3JlKTsKKyAgICBpZiAoeGJ0ID09IFhCVF9OVUxMKSB7Cisg ICAgICAgIGdvdG8gYWJvcnRfdHJhbnNhY3Rpb247CisgICAgfQorCisgICAgaWYgKHhlbnN0b3Jl X3dyaXRlX2ludCh4ZW5kZXYtPmZlLCAic3RhdGUiLCB4YnVzKSkgeworICAgICAgICBnb3RvIGFi b3J0X3RyYW5zYWN0aW9uOworICAgIH0KKworICAgIGlmICgheHNfdHJhbnNhY3Rpb25fZW5kKHhl bnN0b3JlLCB4YnQsIDApKSB7CisgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKKyAgICAg ICAgICAgIGdvdG8gcmV0cnlfdHJhbnNhY3Rpb247CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy ZXR1cm4gMDsKKworYWJvcnRfdHJhbnNhY3Rpb246CisgICAgeHNfdHJhbnNhY3Rpb25fZW5kKHhl bnN0b3JlLCB4YnQsIDEpOworICAgIHJldHVybiAtMTsKK30KKworLyoKKyAqIFNpbXBsaWZ5IFFF TVUgc2lkZSwgYSB0aHJlYWQgaXMgcnVubmluZyBpbiBYZW4gYmFja2VuZCwgd2hpY2ggd2lsbAor ICogY29ubmVjdCBmcm9udGVuZCB3aGVuIHRoZSBmcm9udGVuZCBpcyBpbml0aWFsaXNlZC4gQ2Fs bCB0aGVzZSBpbml0aWFsaXNlZAorICogZnVuY3Rpb25zLgorICovCitzdGF0aWMgaW50IHhlbl9m ZV90cnlfaW5pdCh2b2lkICpvcGFxdWUpCit7CisgICAgc3RydWN0IFhlbkRldk9wcyAqb3BzID0g b3BhcXVlOworICAgIGludCByYyA9IC0xOworCisgICAgaWYgKG9wcy0+aW5pdCkgeworICAgICAg ICByYyA9IG9wcy0+aW5pdChOVUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0 YXRpYyBpbnQgeGVuX2ZlX3RyeV9pbml0aWFsaXNlKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikK K3sKKyAgICBpbnQgcmMgPSAwLCBmZV9zdGF0ZTsKKworICAgIGlmICh4ZW5zdG9yZV9yZWFkX2Zl X2ludCh4ZW5kZXYsICJzdGF0ZSIsICZmZV9zdGF0ZSkgPT0gLTEpIHsKKyAgICAgICAgZmVfc3Rh dGUgPSBYZW5idXNTdGF0ZVVua25vd247CisgICAgfQorICAgIHhlbmRldi0+ZmVfc3RhdGUgPSBm ZV9zdGF0ZTsKKworICAgIGlmICh4ZW5kZXYtPm9wcy0+aW5pdGlhbGlzZSkgeworICAgICAgICBy YyA9IHhlbmRldi0+b3BzLT5pbml0aWFsaXNlKHhlbmRldik7CisgICAgfQorICAgIGlmIChyYyAh PSAwKSB7CisgICAgICAgIHhlbl9wdl9wcmludGYoeGVuZGV2LCAwLCAiaW5pdGlhbGlzZSgpIGZh aWxlZFxuIik7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICB4ZW5idXNfc3dpdGNo X3N0YXRlKHhlbmRldiwgWGVuYnVzU3RhdGVJbml0aWFsaXNlZCk7CisgICAgcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIHhlbl9mZV90cnlfY29ubmVjdGVkKHN0cnVjdCBYZW5EZXZpY2UgKnhl bmRldikKK3sKKyAgICBpZiAoIXhlbmRldi0+b3BzLT5jb25uZWN0ZWQpIHsKKyAgICAgICAgcmV0 dXJuOworICAgIH0KKworICAgIGlmICh4ZW5kZXYtPmZlX3N0YXRlICE9IFhlbmJ1c1N0YXRlQ29u bmVjdGVkKSB7CisgICAgICAgIGlmICh4ZW5kZXYtPm9wcy0+ZmxhZ3MgJiBERVZPUFNfRkxBR19J R05PUkVfU1RBVEUpIHsKKyAgICAgICAgICAgIHhlbl9wdl9wcmludGYoeGVuZGV2LCAyLCAiZnJv bnRlbmQgbm90IHJlYWR5LCBpZ25vcmluZ1xuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMiwgImZyb250ZW5kIG5vdCByZWFkeSAoeWV0KVxu Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB4ZW5kZXYt Pm9wcy0+Y29ubmVjdGVkKHhlbmRldik7Cit9CisKK3N0YXRpYyBpbnQgeGVuX2ZlX2NoZWNrKHN0 cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgaGFuZGxlKQoreworICAgIGludCByYyA9IDA7CisKKyAgICByYyA9IHhlbl9m ZV90cnlfaW5pdGlhbGlzZSh4ZW5kZXYpOworICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgIHhl bl9wdl9wcmludGYoeGVuZGV2LCAwLCAieGVuZGV2ICVzIGluaXRpYWxpc2UgZXJyb3JcbiIsCisg ICAgICAgICAgICAgICAgICAgICAgeGVuZGV2LT5uYW1lKTsKKyAgICAgICAgZ290byBlcnI7Cisg ICAgfQorICAgIHhlbl9mZV90cnlfY29ubmVjdGVkKHhlbmRldik7CisKKyAgICByZXR1cm4gcmM7 CisKK2VycjoKKyAgICB4ZW5fcHZfZGVsX3hlbmRldihkb21pZCwgaGFuZGxlKTsKKyAgICByZXR1 cm4gLTE7Cit9CisKK3N0YXRpYyBjaGFyICp4ZW5zdG9yZV9mZV9nZXRfYmFja2VuZChjb25zdCBj aGFyICp0eXBlLCBpbnQgYmVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgZG9taWQsIGludCAqaGRsKQoreworICAgIGNoYXIgKm5hbWUsICpzdHIs ICpyZXQgPSBOVUxMOworICAgIHVpbnQzMl90IGksIGNkZXY7CisgICAgaW50IGhhbmRsZSA9IDA7 CisgICAgY2hhciBwYXRoW1hFTl9CVUZTSVpFXTsKKyAgICBjaGFyICoqZGV2ID0gTlVMTDsKKwor ICAgIG5hbWUgPSB4ZW5zdG9yZV9nZXRfZG9tYWluX25hbWUoZG9taWQpOworICAgIHNucHJpbnRm KHBhdGgsIHNpemVvZihwYXRoKSwgImZyb250ZW5kLyVzLyVkIiwgdHlwZSwgYmVfZG9taWQpOwor ICAgIGRldiA9IHhzX2RpcmVjdG9yeSh4ZW5zdG9yZSwgMCwgcGF0aCwgJmNkZXYpOworICAgIGZv ciAoaSA9IDA7IGkgPCBjZGV2OyBpKyspIHsKKyAgICAgICAgaGFuZGxlID0gaTsKKyAgICAgICAg c25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiZnJvbnRlbmQvJXMvJWQvJWQiLAorICAgICAg ICB0eXBlLCBiZV9kb21pZCwgaGFuZGxlKTsKKyAgICAgICAgc3RyID0geGVuc3RvcmVfcmVhZF9z dHIocGF0aCwgImRvbWFpbiIpOworICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCBzdHIpKSB7Cisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZyZWUoc3RyKTsKKworICAg ICAgICAvKiBOb3QgdGhlIGJhY2tlbmQgZG9tYWluICovCisgICAgICAgIGlmIChoYW5kbGUgPT0g KGNkZXYgLSAxKSkgeworICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKyAgICB9CisK KyAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICJmcm9udGVuZC8lcy8lZC8lZCIsCisg ICAgdHlwZSwgYmVfZG9taWQsIGhhbmRsZSk7CisgICAgc3RyID0geGVuc3RvcmVfcmVhZF9zdHIo cGF0aCwgImJhY2tlbmQiKTsKKyAgICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICAgICAgcmV0ID0g Z19zdHJkdXAoc3RyKTsKKyAgICAgICAgZnJlZShzdHIpOworICAgIH0KKworICAgICpoZGwgPSBo YW5kbGU7CisgICAgZnJlZShkZXYpOworCisgICAgcmV0dXJuIHJldDsKK2VycjoKKyAgICAqaGRs ID0gLTE7CisgICAgZnJlZShkZXYpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50 IHhlbnN0b3JlX2ZlX3NjYW4oY29uc3QgY2hhciAqdHlwZSwgdWludDMyX3QgZG9taWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFhlbkRldk9wcyAqb3BzKQoreworICAgIHN0 cnVjdCBYZW5EZXZpY2UgKnhlbmRldjsKKyAgICBjaGFyIHBhdGhbWEVOX0JVRlNJWkVdLCB0b2tl bltYRU5fQlVGU0laRV07CisgICAgdW5zaWduZWQgaW50IGNkZXYsIGo7CisgICAgY2hhciAqYmFj a2VuZDsKKyAgICBjaGFyICoqZGV2ID0gTlVMTDsKKyAgICBpbnQgcmM7CisgICAgaW50IHhlbnN0 b3JlX2RldjsKKworICAgIC8qIG9wcyAuaW5pdCBjaGVjaywgeGVuZGV2IGlzIE5PVCBpbml0aWFs aXplZCAqLworICAgIHJjID0geGVuX2ZlX3RyeV9pbml0KG9wcyk7CisgICAgaWYgKHJjICE9IDAp IHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIEdldCAvbG9jYWwvZG9tYWlu LzAvJHt0eXBlfS97fSBkaXJlY3RvcnkgKi8KKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0 aCksICJmcm9udGVuZC8lcyIsIHR5cGUpOworICAgIGRldiA9IHhzX2RpcmVjdG9yeSh4ZW5zdG9y ZSwgMCwgcGF0aCwgJmNkZXYpOworICAgIGlmIChkZXYgPT0gTlVMTCkgeworICAgICAgICByZXR1 cm4gMDsKKyAgICB9CisKKyAgICBmb3IgKGogPSAwOyBqIDwgY2RldjsgaisrKSB7CisKKyAgICAg ICAgLyogR2V0IGJhY2tlbmQgdmlhIGRvbWFpbiBuYW1lICovCisgICAgICAgIGJhY2tlbmQgPSB4 ZW5zdG9yZV9mZV9nZXRfYmFja2VuZCh0eXBlLCBhdG9pKGRldltqXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwgJnhlbnN0b3JlX2Rldik7CisgICAg ICAgIGlmIChiYWNrZW5kID09IE5VTEwpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg ICB9CisKKyAgICAgICAgeGVuZGV2ID0geGVuX2ZlX2dldF94ZW5kZXYodHlwZSwgZG9taWQsIHhl bnN0b3JlX2RldiwgYmFja2VuZCwgb3BzKTsKKyAgICAgICAgZnJlZShiYWNrZW5kKTsKKyAgICAg ICAgaWYgKHhlbmRldiA9PSBOVUxMKSB7CisgICAgICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRl diwgMCwgInhlbmRldiBpcyBOVUxMLlxuIik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg ICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFNpbXBsaWZ5IFFFTVUgc2lkZSwgYSB0aHJl YWQgaXMgcnVubmluZyBpbiBYZW4gYmFja2VuZCwgd2hpY2ggd2lsbAorICAgICAgICAgKiBjb25u ZWN0IGZyb250ZW5kIHdoZW4gdGhlIGZyb250ZW5kIGlzIGluaXRpYWxpc2VkLgorICAgICAgICAg Ki8KKyAgICAgICAgaWYgKHhlbl9mZV9jaGVjayh4ZW5kZXYsIGRvbWlkLCB4ZW5zdG9yZV9kZXYp IDwgMCkgeworICAgICAgICAgICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDAsICJ4ZW5kZXYgZmVf Y2hlY2sgZXJyb3IuXG4iKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg ICAgICAgLyogU2V0dXAgd2F0Y2ggKi8KKyAgICAgICAgc25wcmludGYodG9rZW4sIHNpemVvZih0 b2tlbiksICJiZTolcDolZDolcCIsCisgICAgICAgICAgICAgICAgIHR5cGUsIGRvbWlkLCB4ZW5k ZXYtPm9wcyk7CisgICAgICAgIGlmICgheHNfd2F0Y2goeGVuc3RvcmUsIHhlbmRldi0+YmUsIHRv a2VuKSkgeworICAgICAgICAgICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDAsICJ4c193YXRjaCBm YWlsZWQuXG4iKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgfQorCisg ICAgZnJlZShkZXYpOworICAgIHJldHVybiAwOworfQorCitpbnQgeGVuX2ZlX3JlZ2lzdGVyKGNv bnN0IGNoYXIgKnR5cGUsIHN0cnVjdCBYZW5EZXZPcHMgKm9wcykKK3sKKyAgICByZXR1cm4geGVu c3RvcmVfZmVfc2Nhbih0eXBlLCB4ZW5fZG9taWQsIG9wcyk7Cit9CmRpZmYgLS1naXQgYS9ody94 ZW4veGVuX3B2ZGV2LmMgYi9ody94ZW4veGVuX3B2ZGV2LmMKaW5kZXggMzk0ZGRjMS4uY2I1MWU4 NyAxMDA2NDQKLS0tIGEvaHcveGVuL3hlbl9wdmRldi5jCisrKyBiL2h3L3hlbi94ZW5fcHZkZXYu YwpAQCAtMTIxLDYgKzEyMSwyMSBAQCBjbGVhbnVwOgogICAgIGZyZWUodmVjKTsKIH0KIAorY2hh ciAqeGVuc3RvcmVfZ2V0X2RvbWFpbl9uYW1lKHVpbnQzMl90IGRvbWlkKQoreworICAgIGNoYXIg KmRvbV9wYXRoLCAqc3RyLCAqcmV0ID0gTlVMTDsKKworICAgIGRvbV9wYXRoID0geHNfZ2V0X2Rv bWFpbl9wYXRoKHhlbnN0b3JlLCBkb21pZCk7CisgICAgc3RyID0geGVuc3RvcmVfcmVhZF9zdHIo ZG9tX3BhdGgsICJuYW1lIik7CisgICAgZnJlZShkb21fcGF0aCk7CisgICAgaWYgKHN0ciAhPSBO VUxMKSB7CisgICAgICAgIHJldCA9IGdfc3RyZHVwKHN0cik7CisgICAgICAgIGZyZWUoc3RyKTsK KyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCiBjb25zdCBjaGFyICp4ZW5idXNfc3Ryc3Rh dGUoZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNv bnN0IG5hbWVbXSA9IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcveGVuL3hlbl9mcm9udGVuZC5o IGIvaW5jbHVkZS9ody94ZW4veGVuX2Zyb250ZW5kLmgKaW5kZXggNWQwM2Y0ZS4uOGZjMDQyMiAx MDA2NDQKLS0tIGEvaW5jbHVkZS9ody94ZW4veGVuX2Zyb250ZW5kLmgKKysrIGIvaW5jbHVkZS9o dy94ZW4veGVuX2Zyb250ZW5kLmgKQEAgLTgsNiArOCwxMiBAQCBpbnQgeGVuc3RvcmVfcmVhZF9m ZV9pbnQoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2LCBjb25zdCBjaGFyICpub2RlLCBpbnQgKml2 YWwpOwogaW50IHhlbnN0b3JlX3JlYWRfZmVfdWludDY0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRl diwgY29uc3QgY2hhciAqbm9kZSwgdWludDY0X3QgKnV2YWwpOwogdm9pZCB4ZW5zdG9yZV91cGRh dGVfZmUoY2hhciAqd2F0Y2gsIHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldik7CiAKK3N0cnVjdCBY ZW5EZXZpY2UgKnhlbl9mZV9nZXRfeGVuZGV2KGNvbnN0IGNoYXIgKnR5cGUsIGludCBkb20sIGlu dCBkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpiYWNrZW5k LCBzdHJ1Y3QgWGVuRGV2T3BzICpvcHMpOwogdm9pZCB4ZW5fZmVfZnJvbnRlbmRfY2hhbmdlZChz dHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYsIGNvbnN0IGNoYXIgKm5vZGUpOworaW50IHhlbl9mZV9y ZWdpc3Rlcihjb25zdCBjaGFyICp0eXBlLCBzdHJ1Y3QgWGVuRGV2T3BzICpvcHMpOworaW50IHhl bl9mZV9hbGxvY191bmJvdW5kKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiwgaW50IGRvbSwgaW50 IHJlbW90ZV9kb20pOworaW50IHhlbmJ1c19zd2l0Y2hfc3RhdGUoc3RydWN0IFhlbkRldmljZSAq eGVuZGV2LCBlbnVtIHhlbmJ1c19zdGF0ZSB4YnVzKTsKKwogCiAjZW5kaWYgLyogUUVNVV9IV19Y RU5fRlJPTlRFTkRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX3B2ZGV2Lmgg Yi9pbmNsdWRlL2h3L3hlbi94ZW5fcHZkZXYuaAppbmRleCBjOTg1YTlkLi4xMWJhYjU2IDEwMDY0 NAotLS0gYS9pbmNsdWRlL2h3L3hlbi94ZW5fcHZkZXYuaAorKysgYi9pbmNsdWRlL2h3L3hlbi94 ZW5fcHZkZXYuaApAQCAtNjUsNiArNjUsNyBAQCBjaGFyICp4ZW5zdG9yZV9yZWFkX3N0cihjb25z dCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlKTsKIGludCB4ZW5zdG9yZV9yZWFkX2ludChj b25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpub2RlLCBpbnQgKml2YWwpOwogaW50IHhlbnN0 b3JlX3JlYWRfdWludDY0KGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5vZGUsIHVpbnQ2 NF90ICp1dmFsKTsKIHZvaWQgeGVuc3RvcmVfdXBkYXRlKHZvaWQgKnVudXNlZCk7CitjaGFyICp4 ZW5zdG9yZV9nZXRfZG9tYWluX25hbWUodWludDMyX3QgZG9taWQpOwogCiBjb25zdCBjaGFyICp4 ZW5idXNfc3Ryc3RhdGUoZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUpOwogCi0tIAoxLjkuMQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=