From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH RFC 14/20] acpi/hvmloader: Replace mem_alloc() and virt_to_phys() with memory ops Date: Tue, 5 Apr 2016 21:25:43 -0400 Message-ID: <1459905949-10358-15-git-send-email-boris.ostrovsky@oracle.com> References: <1459905949-10358-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1459905949-10358-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Keir Fraser , Stefano Stabellini , Andrew Cooper , Ian Jackson , Jan Beulich , Wei Liu , Boris Ostrovsky , roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org Q29tcG9uZW50cyB0aGF0IHdpc2ggdG8gdXNlIEFDUEkgYnVpbGRlciB3aWxsIG5lZWQgdG8gcHJv dmlkZSB0aGVpciBvd24KbWVtX2FsbG9jKCkgYW5kIHZpcnRfdG9fcGh5cygpIHJvdXRpbmVzLiBQ b2ludGVycyB0byB0aGVzZSByb3V0aW5lcyB3aWxsCmJlIHBhc3NlZCB0byB0aGUgYnVpbGRlciBh cyBtZW1vcnkgb3BzLgoKU2lnbmVkLW9mZi1ieTogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ry b3Zza3lAb3JhY2xlLmNvbT4KLS0tCiB0b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9hY3Bp Ml8wLmggfCAgIDYgKysKIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2J1aWxkLmMgICB8 IDEwNCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogdG9vbHMvZmlybXdhcmUvaHZt bG9hZGVyL3V0aWwuYyAgICAgICAgIHwgICA4ICsrKwogdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVy L3V0aWwuaCAgICAgICAgIHwgICAyICstCiA0IGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMo KyksIDUwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRl ci9hY3BpL2FjcGkyXzAuaCBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2FjcGkyXzAu aAppbmRleCAwYmZkM2VkLi4wNTI1YTFlIDEwMDY0NAotLS0gYS90b29scy9maXJtd2FyZS9odm1s b2FkZXIvYWNwaS9hY3BpMl8wLmgKKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkv YWNwaTJfMC5oCkBAIC00OTAsNiArNDkwLDExIEBAIHN0cnVjdCBhY3BpX251bWEgewogICAgIHhl bl92bWVtcmFuZ2VfdCAqdm1lbXJhbmdlOwogfTsKIAorc3RydWN0IGFjcGlfbWVtX29wcyB7Cisg ICAgdm9pZCAqKCphbGxvYykodWludDMyX3Qgc2l6ZSwgdWludDMyX3QgYWxpZ24pOworICAgIHVu c2lnbmVkIGxvbmcgKCp2MnApKHZvaWQgKnYpOworfTsKKwogc3RydWN0IGFjcGlfY29uZmlnIHsK ICAgICB1bnNpZ25lZCBjaGFyICpkc2R0X2FueWNwdTsKICAgICBpbnQgZHNkdF9hbnljcHVfbGVu OwpAQCAtNTA4LDYgKzUxMyw3IEBAIHN0cnVjdCBhY3BpX2NvbmZpZyB7CiAgICAgc3RydWN0IGFj cGlfbnVtYSBudW1hOwogICAgIHVpbnQxNl90ICp0aXNfaGRyOwogICAgIHZvaWQgKmFjcGlfaW5m b19wYWdlOworICAgIHN0cnVjdCBhY3BpX21lbV9vcHMgbWVtX29wczsKIH07CiAKIHZvaWQgYWNw aV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBw aHlzaWNhbCk7CmRpZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9idWls ZC5jIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkvYnVpbGQuYwppbmRleCAwOWMxZWQz Li5lYjhjNjMyIDEwMDY0NAotLS0gYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9idWls ZC5jCisrKyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2J1aWxkLmMKQEAgLTgyLDcg KzgyLDcgQEAgc3RhdGljIHN0cnVjdCBhY3BpXzIwX21hZHQgKmNvbnN0cnVjdF9tYWR0KHN0cnVj dCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgIHN6ICs9IHNpemVvZihzdHJ1Y3QgYWNwaV8yMF9t YWR0X2lvYXBpYyk7CiAgICAgc3ogKz0gc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX21hZHRfbGFwaWMp ICogbnJfcHJvY2Vzc29yX29iamVjdHM7CiAKLSAgICBtYWR0ID0gbWVtX2FsbG9jKHN6LCAxNik7 CisgICAgbWFkdCA9IGNvbmZpZy0+bWVtX29wcy5hbGxvYyhzeiwgMTYpOwogICAgIGlmICghbWFk dCkgcmV0dXJuIE5VTEw7CiAKICAgICBtZW1zZXQobWFkdCwgMCwgc2l6ZW9mKCptYWR0KSk7CkBA IC0xMzksNyArMTM5LDcgQEAgc3RhdGljIHN0cnVjdCBhY3BpXzIwX21hZHQgKmNvbnN0cnVjdF9t YWR0KHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgIGVsc2UKICAgICAgICAgbGFwaWMg PSAoc3RydWN0IGFjcGlfMjBfbWFkdF9sYXBpYyAqKShtYWR0ICsgMSk7CiAKLSAgICBjb25maWct PmFjcGlfaW5mby5tYWR0X2xhcGljMF9hZGRyID0gdmlydF90b19waHlzKGxhcGljKTsKKyAgICBj b25maWctPmFjcGlfaW5mby5tYWR0X2xhcGljMF9hZGRyID0gY29uZmlnLT5tZW1fb3BzLnYycChs YXBpYyk7CiAgICAgZm9yICggaSA9IDA7IGkgPCBucl9wcm9jZXNzb3Jfb2JqZWN0czsgaSsrICkK ICAgICB7CiAgICAgICAgIG1lbXNldChsYXBpYywgMCwgc2l6ZW9mKCpsYXBpYykpOwpAQCAtMTU4 LDE2ICsxNTgsMTYgQEAgc3RhdGljIHN0cnVjdCBhY3BpXzIwX21hZHQgKmNvbnN0cnVjdF9tYWR0 KHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgIHNldF9jaGVja3N1bShtYWR0LCBvZmZz ZXRvZihzdHJ1Y3QgYWNwaV9oZWFkZXIsIGNoZWNrc3VtKSwKICAgICAgICAgICAgICAgICAgbWFk dC0+aGVhZGVyLmxlbmd0aCk7CiAgICAgY29uZmlnLT5hY3BpX2luZm8ubWFkdF9jc3VtX2FkZHIg PQotICAgICAgICB2aXJ0X3RvX3BoeXMoJm1hZHQtPmhlYWRlci5jaGVja3N1bSk7CisgICAgICAg IGNvbmZpZy0+bWVtX29wcy52MnAoJm1hZHQtPmhlYWRlci5jaGVja3N1bSk7CiAKICAgICByZXR1 cm4gbWFkdDsKIH0KIAotc3RhdGljIHN0cnVjdCBhY3BpXzIwX2hwZXQgKmNvbnN0cnVjdF9ocGV0 KHZvaWQpCitzdGF0aWMgc3RydWN0IGFjcGlfMjBfaHBldCAqY29uc3RydWN0X2hwZXQoc3RydWN0 IGFjcGlfY29uZmlnICpjb25maWcpCiB7CiAgICAgc3RydWN0IGFjcGlfMjBfaHBldCAqaHBldDsK IAotICAgIGhwZXQgPSBtZW1fYWxsb2Moc2l6ZW9mKCpocGV0KSwgMTYpOworICAgIGhwZXQgPSBj b25maWctPm1lbV9vcHMuYWxsb2Moc2l6ZW9mKCpocGV0KSwgMTYpOwogICAgIGlmICghaHBldCkg cmV0dXJuIE5VTEw7CiAKICAgICBtZW1zZXQoaHBldCwgMCwgc2l6ZW9mKCpocGV0KSk7CkBAIC0x ODYsMTEgKzE4NiwxMSBAQCBzdGF0aWMgc3RydWN0IGFjcGlfMjBfaHBldCAqY29uc3RydWN0X2hw ZXQodm9pZCkKICAgICByZXR1cm4gaHBldDsKIH0KIAotc3RhdGljIHN0cnVjdCBhY3BpXzIwX3dh ZXQgKmNvbnN0cnVjdF93YWV0KHZvaWQpCitzdGF0aWMgc3RydWN0IGFjcGlfMjBfd2FldCAqY29u c3RydWN0X3dhZXQoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiB7CiAgICAgc3RydWN0IGFj cGlfMjBfd2FldCAqd2FldDsKIAotICAgIHdhZXQgPSBtZW1fYWxsb2Moc2l6ZW9mKCp3YWV0KSwg MTYpOworICAgIHdhZXQgPSBjb25maWctPm1lbV9vcHMuYWxsb2Moc2l6ZW9mKCp3YWV0KSwgMTYp OwogICAgIGlmICghd2FldCkgcmV0dXJuIE5VTEw7CiAKICAgICBtZW1jcHkod2FldCwgJldhZXQs IHNpemVvZigqd2FldCkpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV8y MF9zcmF0ICpjb25zdHJ1Y3Rfc3JhdChzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICBz aXplID0gc2l6ZW9mKCpzcmF0KSArIHNpemVvZigqcHJvY2Vzc29yKSAqIGNvbmZpZy0+bnJfdmNw dXMgKwogICAgICAgICAgICBzaXplb2YoKm1lbW9yeSkgKiBjb25maWctPm51bWEubnJfdm1lbXJh bmdlczsKIAotICAgIHAgPSBtZW1fYWxsb2Moc2l6ZSwgMTYpOworICAgIHAgPSBjb25maWctPm1l bV9vcHMuYWxsb2Moc2l6ZSwgMTYpOwogICAgIGlmICggIXAgKQogICAgICAgICByZXR1cm4gTlVM TDsKIApAQCAtMjY1LDcgKzI2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV8yMF9zbGl0ICpjb25z dHJ1Y3Rfc2xpdChzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICBudW0gPSBjb25maWct Pm51bWEubnJfdm5vZGVzICogY29uZmlnLT5udW1hLm5yX3Zub2RlczsKICAgICBzaXplID0gc2l6 ZW9mKCpzbGl0KSArIG51bSAqIHNpemVvZih1aW50OF90KTsKIAotICAgIHNsaXQgPSBtZW1fYWxs b2Moc2l6ZSwgMTYpOworICAgIHNsaXQgPSBjb25maWctPm1lbV9vcHMuYWxsb2Moc2l6ZSwgMTYp OwogICAgIGlmICggIXNsaXQgKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMzE0LDEyICsz MTQsMTIgQEAgc3RhdGljIGludCBjb25zdHJ1Y3RfcGFzc3Rocm91Z2hfdGFibGVzKHVuc2lnbmVk IGxvbmcgKnRhYmxlX3B0cnMsCiAKICAgICAgICAgaGVhZGVyID0gKHN0cnVjdCBhY3BpX2hlYWRl ciopYWNwaV9wdF9hZGRyOwogCi0gICAgICAgIGJ1ZmZlciA9IG1lbV9hbGxvYyhoZWFkZXItPmxl bmd0aCwgMTYpOworICAgICAgICBidWZmZXIgPSBjb25maWctPm1lbV9vcHMuYWxsb2MoaGVhZGVy LT5sZW5ndGgsIDE2KTsKICAgICAgICAgaWYgKCBidWZmZXIgPT0gTlVMTCApCiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgaGVhZGVyLCBoZWFkZXItPmxlbmd0aCk7 CiAKLSAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSB2aXJ0X3RvX3BoeXMoYnVmZmVy KTsKKyAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjb25maWctPm1lbV9vcHMudjJw KGJ1ZmZlcik7CiAgICAgICAgIHRvdGFsICs9IGhlYWRlci0+bGVuZ3RoOwogICAgICAgICBhY3Bp X3B0X2FkZHIgKz0gaGVhZGVyLT5sZW5ndGg7CiAgICAgfQpAQCAtMzQ0LDQ5ICszNDQsNDkgQEAg c3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJs ZV9wdHJzLAogICAgIHsKICAgICAgICAgbWFkdCA9IGNvbnN0cnVjdF9tYWR0KGNvbmZpZyk7CiAg ICAgICAgIGlmICghbWFkdCkgcmV0dXJuIC0xOwotICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxl cysrXSA9IHZpcnRfdG9fcGh5cyhtYWR0KTsKKyAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMr K10gPSBjb25maWctPm1lbV9vcHMudjJwKG1hZHQpOwogICAgIH0KIAogICAgIC8qIEhQRVQuICov CiAgICAgaWYgKCBjb25maWctPmFjcGlfaW5mby5ocGV0X3ByZXNlbnQgKQogICAgIHsKLSAgICAg ICAgaHBldCA9IGNvbnN0cnVjdF9ocGV0KCk7CisgICAgICAgIGhwZXQgPSBjb25zdHJ1Y3RfaHBl dChjb25maWcpOwogICAgICAgICBpZiAoIWhwZXQpIHJldHVybiAtMTsKLSAgICAgICAgdGFibGVf cHRyc1tucl90YWJsZXMrK10gPSB2aXJ0X3RvX3BoeXMoaHBldCk7CisgICAgICAgIHRhYmxlX3B0 cnNbbnJfdGFibGVzKytdID0gY29uZmlnLT5tZW1fb3BzLnYycChocGV0KTsKICAgICB9CiAKICAg ICAvKiBXQUVULiAqLwogICAgIGlmICggY29uZmlnLT50YWJsZV9mbGFncyAmIEFDUElfQlVJTERf V0FFVCApCiAgICAgewotICAgICAgICB3YWV0ID0gY29uc3RydWN0X3dhZXQoKTsKKyAgICAgICAg d2FldCA9IGNvbnN0cnVjdF93YWV0KGNvbmZpZyk7CiAgICAgICAgIGlmICghd2FldCkgcmV0dXJu IC0xOwotICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9IHZpcnRfdG9fcGh5cyh3YWV0 KTsKKyAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjb25maWctPm1lbV9vcHMudjJw KHdhZXQpOwogICAgIH0KIAogICAgIGlmICggY29uZmlnLT50YWJsZV9mbGFncyAmIEFDUElfQlVJ TERfU1NEVF9QTSApCiAgICAgewotICAgICAgICBzc2R0ID0gbWVtX2FsbG9jKHNpemVvZihzc2R0 X3BtKSwgMTYpOworICAgICAgICBzc2R0ID0gY29uZmlnLT5tZW1fb3BzLmFsbG9jKHNpemVvZihz c2R0X3BtKSwgMTYpOwogICAgICAgICBpZiAoIXNzZHQpIHJldHVybiAtMTsKICAgICAgICAgbWVt Y3B5KHNzZHQsIHNzZHRfcG0sIHNpemVvZihzc2R0X3BtKSk7Ci0gICAgICAgIHRhYmxlX3B0cnNb bnJfdGFibGVzKytdID0gdmlydF90b19waHlzKHNzZHQpOworICAgICAgICB0YWJsZV9wdHJzW25y X3RhYmxlcysrXSA9IGNvbmZpZy0+bWVtX29wcy52MnAoc3NkdCk7CiAgICAgfQogCiAgICAgaWYg KCBjb25maWctPnRhYmxlX2ZsYWdzICYgQUNQSV9CVUlMRF9TU0RUX1MzICkKICAgICB7Ci0gICAg ICAgIHNzZHQgPSBtZW1fYWxsb2Moc2l6ZW9mKHNzZHRfczMpLCAxNik7CisgICAgICAgIHNzZHQg PSBjb25maWctPm1lbV9vcHMuYWxsb2Moc2l6ZW9mKHNzZHRfczMpLCAxNik7CiAgICAgICAgIGlm ICghc3NkdCkgcmV0dXJuIC0xOwogICAgICAgICBtZW1jcHkoc3NkdCwgc3NkdF9zMywgc2l6ZW9m KHNzZHRfczMpKTsKLSAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSB2aXJ0X3RvX3Bo eXMoc3NkdCk7CisgICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gY29uZmlnLT5tZW1f b3BzLnYycChzc2R0KTsKICAgICB9IGVsc2UgewogICAgICAgICBwcmludGYoIlMzIGRpc2FibGVk XG4iKTsKICAgICB9CiAKICAgICBpZiAoIGNvbmZpZy0+dGFibGVfZmxhZ3MgJiBBQ1BJX0JVSUxE X1NTRFRfUzQgKQogICAgIHsKLSAgICAgICAgc3NkdCA9IG1lbV9hbGxvYyhzaXplb2Yoc3NkdF9z NCksIDE2KTsKKyAgICAgICAgc3NkdCA9IGNvbmZpZy0+bWVtX29wcy5hbGxvYyhzaXplb2Yoc3Nk dF9zNCksIDE2KTsKICAgICAgICAgaWYgKCFzc2R0KSByZXR1cm4gLTE7CiAgICAgICAgIG1lbWNw eShzc2R0LCBzc2R0X3M0LCBzaXplb2Yoc3NkdF9zNCkpOwotICAgICAgICB0YWJsZV9wdHJzW25y X3RhYmxlcysrXSA9IHZpcnRfdG9fcGh5cyhzc2R0KTsKKyAgICAgICAgdGFibGVfcHRyc1tucl90 YWJsZXMrK10gPSBjb25maWctPm1lbV9vcHMudjJwKHNzZHQpOwogICAgIH0gZWxzZSB7CiAgICAg ICAgIHByaW50ZigiUzQgZGlzYWJsZWRcbiIpOwogICAgIH0KQEAgLTM5OCwxNSArMzk4LDE1IEBA IHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJsZXModW5zaWduZWQgbG9uZyAqdGFi bGVfcHRycywKICAgICAgICAgICAgICAoY29uZmlnLT50aXNfaGRyWzFdID09IHRpc19zaWduYXR1 cmVbMV0pICYmCiAgICAgICAgICAgICAgKGNvbmZpZy0+dGlzX2hkclsyXSA9PSB0aXNfc2lnbmF0 dXJlWzJdKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNzZHQgPSBtZW1fYWxsb2Moc2l6ZW9m KHNzZHRfdHBtKSwgMTYpOworICAgICAgICAgICAgc3NkdCA9IGNvbmZpZy0+bWVtX29wcy5hbGxv YyhzaXplb2Yoc3NkdF90cG0pLCAxNik7CiAgICAgICAgICAgICBpZiAoIXNzZHQpIHJldHVybiAt MTsKICAgICAgICAgICAgIG1lbWNweShzc2R0LCBzc2R0X3RwbSwgc2l6ZW9mKHNzZHRfdHBtKSk7 Ci0gICAgICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9IHZpcnRfdG9fcGh5cyhzc2R0 KTsKKyAgICAgICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gY29uZmlnLT5tZW1fb3Bz LnYycChzc2R0KTsKIAotICAgICAgICAgICAgdGNwYSA9IG1lbV9hbGxvYyhzaXplb2Yoc3RydWN0 IGFjcGlfMjBfdGNwYSksIDE2KTsKKyAgICAgICAgICAgIHRjcGEgPSBjb25maWctPm1lbV9vcHMu YWxsb2Moc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3RjcGEpLCAxNik7CiAgICAgICAgICAgICBpZiAo IXRjcGEpIHJldHVybiAtMTsKICAgICAgICAgICAgIG1lbXNldCh0Y3BhLCAwLCBzaXplb2YoKnRj cGEpKTsKLSAgICAgICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gdmlydF90b19waHlz KHRjcGEpOworICAgICAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSBjb25maWctPm1l bV9vcHMudjJwKHRjcGEpOwogCiAgICAgICAgICAgICB0Y3BhLT5oZWFkZXIuc2lnbmF0dXJlID0g QUNQSV8yXzBfVENQQV9TSUdOQVRVUkU7CiAgICAgICAgICAgICB0Y3BhLT5oZWFkZXIubGVuZ3Ro ICAgID0gc2l6ZW9mKCp0Y3BhKTsKQEAgLTQxNiw5ICs0MTYsOSBAQCBzdGF0aWMgaW50IGNvbnN0 cnVjdF9zZWNvbmRhcnlfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAgICAgICAg ICAgICB0Y3BhLT5oZWFkZXIub2VtX3JldmlzaW9uID0gQUNQSV9PRU1fUkVWSVNJT047CiAgICAg ICAgICAgICB0Y3BhLT5oZWFkZXIuY3JlYXRvcl9pZCAgID0gQUNQSV9DUkVBVE9SX0lEOwogICAg ICAgICAgICAgdGNwYS0+aGVhZGVyLmNyZWF0b3JfcmV2aXNpb24gPSBBQ1BJX0NSRUFUT1JfUkVW SVNJT047Ci0gICAgICAgICAgICBpZiAoIChsYXNhID0gbWVtX2FsbG9jKEFDUElfMl8wX1RDUEFf TEFNTF9TSVpFLCAxNikpICE9IE5VTEwgKQorICAgICAgICAgICAgaWYgKCAobGFzYSA9IGNvbmZp Zy0+bWVtX29wcy5hbGxvYyhBQ1BJXzJfMF9UQ1BBX0xBTUxfU0laRSwgMTYpKSAhPSBOVUxMICkK ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0Y3BhLT5sYXNhID0gdmlydF90b19waHlz KGxhc2EpOworICAgICAgICAgICAgICAgIHRjcGEtPmxhc2EgPSBjb25maWctPm1lbV9vcHMudjJw KGxhc2EpOwogICAgICAgICAgICAgICAgIHRjcGEtPmxhbWwgPSBBQ1BJXzJfMF9UQ1BBX0xBTUxf U0laRTsKICAgICAgICAgICAgICAgICBtZW1zZXQobGFzYSwgMCwgdGNwYS0+bGFtbCk7CiAgICAg ICAgICAgICAgICAgc2V0X2NoZWNrc3VtKHRjcGEsCkBAIC00MzUsMTEgKzQzNSwxMSBAQCBzdGF0 aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0 cnMsCiAgICAgICAgIHN0cnVjdCBhY3BpXzIwX3NsaXQgKnNsaXQgPSBjb25zdHJ1Y3Rfc2xpdChj b25maWcpOwogCiAgICAgICAgIGlmICggc3JhdCApCi0gICAgICAgICAgICB0YWJsZV9wdHJzW25y X3RhYmxlcysrXSA9IHZpcnRfdG9fcGh5cyhzcmF0KTsKKyAgICAgICAgICAgIHRhYmxlX3B0cnNb bnJfdGFibGVzKytdID0gY29uZmlnLT5tZW1fb3BzLnYycChzcmF0KTsKICAgICAgICAgZWxzZQog ICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gYnVpbGQgU1JBVCwgc2tpcHBpbmcuLi5cbiIp OwogICAgICAgICBpZiAoIHNsaXQgKQotICAgICAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMr K10gPSB2aXJ0X3RvX3BoeXMoc2xpdCk7CisgICAgICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxl cysrXSA9IGNvbmZpZy0+bWVtX29wcy52MnAoc2xpdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg ICAgIHByaW50ZigiRmFpbGVkIHRvIGJ1aWxkIFNMSVQsIHNraXBwaW5nLi4uXG4iKTsKICAgICB9 CkBAIC00NjksMTMgKzQ2OSwxMyBAQCBzdGF0aWMgaW50IG5ld192bV9naWQoc3RydWN0IGFjcGlf Y29uZmlnICpjb25maWcpCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgLyogY29weSB0byBhbGxv Y2F0ZSBCSU9TIG1lbW9yeSAqLwotICAgIGJ1ZiA9ICh1aW50NjRfdCAqKSBtZW1fYWxsb2Moc2l6 ZW9mKGNvbmZpZy0+dm1fZ2lkKSwgOCk7CisgICAgYnVmID0gKHVpbnQ2NF90ICopIGNvbmZpZy0+ bWVtX29wcy5hbGxvYyhzaXplb2YoY29uZmlnLT52bV9naWQpLCA4KTsKICAgICBpZiAoICFidWYg KQogICAgICAgICByZXR1cm4gMDsKICAgICBtZW1jcHkoYnVmLCBjb25maWctPnZtX2dpZCwgc2l6 ZW9mKGNvbmZpZy0+dm1fZ2lkKSk7CiAKICAgICAvKiBzZXQgaW50byBBQ1BJIHRhYmxlIGFuZCBI Vk0gcGFyYW0gdGhlIGFkZHJlc3MgKi8KLSAgICBjb25maWctPmFjcGlfaW5mby52bV9naWRfYWRk ciA9IHZpcnRfdG9fcGh5cyhidWYpOworICAgIGNvbmZpZy0+YWNwaV9pbmZvLnZtX2dpZF9hZGRy ID0gY29uZmlnLT5tZW1fb3BzLnYycChidWYpOwogCiAgICAgcmV0dXJuIDE7CiB9CkBAIC00OTIs MTEgKzQ5MiwxNyBAQCB2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2NvbmZpZyAq Y29uZmlnLCB1bnNpZ25lZCBpbnQgcGh5c2ljYWwpCiAgICAgdW5zaWduZWQgbG9uZyAgICAgICAg c2Vjb25kYXJ5X3RhYmxlc1tBQ1BJX01BWF9TRUNPTkRBUllfVEFCTEVTXTsKICAgICBpbnQgICAg ICAgICAgICAgICAgICBucl9zZWNvbmRhcmllcywgaTsKIAorICAgIGlmICggIWNvbmZpZy0+bWVt X29wcy5hbGxvYyB8fCAhY29uZmlnLT5tZW1fb3BzLnYycCApCisgICAgeworICAgICAgICBwcmlu dGYoInVuYWJsZSB0byBidWlsZCBBQ1BJIHRhYmxlczogbm8gbWVtb3J5IG9wc1xuIik7CisgICAg ICAgIHJldHVybjsKKyAgICB9CisKICAgICAvKgogICAgICAqIEZpbGwgaW4gaGlnaC1tZW1vcnkg ZGF0YSBzdHJ1Y3R1cmVzLCBzdGFydGluZyBhdCBAYnVmLgogICAgICAqLwogCi0gICAgZmFjcyA9 IG1lbV9hbGxvYyhzaXplb2Yoc3RydWN0IGFjcGlfMjBfZmFjcyksIDE2KTsKKyAgICBmYWNzID0g Y29uZmlnLT5tZW1fb3BzLmFsbG9jKHNpemVvZihzdHJ1Y3QgYWNwaV8yMF9mYWNzKSwgMTYpOwog ICAgIGlmICghZmFjcykgZ290byBvb207CiAgICAgbWVtY3B5KGZhY3MsICZGYWNzLCBzaXplb2Yo c3RydWN0IGFjcGlfMjBfZmFjcykpOwogCkBAIC01MTAsMTQgKzUxNiwxNCBAQCB2b2lkIGFjcGlf YnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgcGh5 c2ljYWwpCiAgICAgICovCiAgICAgaWYgKCBjb25maWctPm5yX3ZjcHVzIDw9IDE1ICYmIGNvbmZp Zy0+ZHNkdF8xNWNwdSkKICAgICB7Ci0gICAgICAgIGRzZHQgPSBtZW1fYWxsb2MoY29uZmlnLT5k c2R0XzE1Y3B1X2xlbiwgMTYpOworICAgICAgICBkc2R0ID0gY29uZmlnLT5tZW1fb3BzLmFsbG9j KGNvbmZpZy0+ZHNkdF8xNWNwdV9sZW4sIDE2KTsKICAgICAgICAgaWYgKCFkc2R0KSBnb3RvIG9v bTsKICAgICAgICAgbWVtY3B5KGRzZHQsIGNvbmZpZy0+ZHNkdF8xNWNwdSwgY29uZmlnLT5kc2R0 XzE1Y3B1X2xlbik7CiAgICAgICAgIG5yX3Byb2Nlc3Nvcl9vYmplY3RzID0gMTU7CiAgICAgfQog ICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGRzZHQgPSBtZW1fYWxsb2MoY29uZmlnLT5kc2R0X2Fu eWNwdV9sZW4sIDE2KTsKKyAgICAgICAgZHNkdCA9IGNvbmZpZy0+bWVtX29wcy5hbGxvYyhjb25m aWctPmRzZHRfYW55Y3B1X2xlbiwgMTYpOwogICAgICAgICBpZiAoIWRzZHQpIGdvdG8gb29tOwog ICAgICAgICBtZW1jcHkoZHNkdCwgY29uZmlnLT5kc2R0X2FueWNwdSwgY29uZmlnLT5kc2R0X2Fu eWNwdV9sZW4pOwogICAgICAgICBucl9wcm9jZXNzb3Jfb2JqZWN0cyA9IEhWTV9NQVhfVkNQVVM7 CkBAIC01MzEsMjQgKzUzNywyNCBAQCB2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3Bp X2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgcGh5c2ljYWwpCiAgICAgICogY29tcGF0aWJs ZSByZXZpc2lvbiAxIEZBRFQgdGhhdCBpcyBsaW5rZWQgd2l0aCB0aGUgUlNEVC4gUmVmZXIgdG86 CiAgICAgICogICAgIGh0dHA6Ly93d3cuYWNwaS5pbmZvL3ByZXNlbnRhdGlvbnMvUzAxVVNNT0JT MTY5X09TJTIwbmV3LnBwdAogICAgICAqLwotICAgIGZhZHRfMTAgPSBtZW1fYWxsb2Moc2l6ZW9m KHN0cnVjdCBhY3BpXzEwX2ZhZHQpLCAxNik7CisgICAgZmFkdF8xMCA9IGNvbmZpZy0+bWVtX29w cy5hbGxvYyhzaXplb2Yoc3RydWN0IGFjcGlfMTBfZmFkdCksIDE2KTsKICAgICBpZiAoIWZhZHRf MTApIGdvdG8gb29tOwogICAgIG1lbWNweShmYWR0XzEwLCAmRmFkdCwgc2l6ZW9mKHN0cnVjdCBh Y3BpXzEwX2ZhZHQpKTsKICAgICBmYWR0XzEwLT5oZWFkZXIubGVuZ3RoID0gc2l6ZW9mKHN0cnVj dCBhY3BpXzEwX2ZhZHQpOwogICAgIGZhZHRfMTAtPmhlYWRlci5yZXZpc2lvbiA9IEFDUElfMV8w X0ZBRFRfUkVWSVNJT047Ci0gICAgZmFkdF8xMC0+ZHNkdCAgICAgICAgICA9IHZpcnRfdG9fcGh5 cyhkc2R0KTsKLSAgICBmYWR0XzEwLT5maXJtd2FyZV9jdHJsID0gdmlydF90b19waHlzKGZhY3Mp OworICAgIGZhZHRfMTAtPmRzZHQgICAgICAgICAgPSBjb25maWctPm1lbV9vcHMudjJwKGRzZHQp OworICAgIGZhZHRfMTAtPmZpcm13YXJlX2N0cmwgPSBjb25maWctPm1lbV9vcHMudjJwKGZhY3Mp OwogICAgIHNldF9jaGVja3N1bShmYWR0XzEwLAogICAgICAgICAgICAgICAgICBvZmZzZXRvZihz dHJ1Y3QgYWNwaV9oZWFkZXIsIGNoZWNrc3VtKSwKICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0 cnVjdCBhY3BpXzEwX2ZhZHQpKTsKIAotICAgIGZhZHQgPSBtZW1fYWxsb2Moc2l6ZW9mKHN0cnVj dCBhY3BpXzIwX2ZhZHQpLCAxNik7CisgICAgZmFkdCA9IGNvbmZpZy0+bWVtX29wcy5hbGxvYyhz aXplb2Yoc3RydWN0IGFjcGlfMjBfZmFkdCksIDE2KTsKICAgICBpZiAoIWZhZHQpIGdvdG8gb29t OwogICAgIG1lbWNweShmYWR0LCAmRmFkdCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX2ZhZHQpKTsK LSAgICBmYWR0LT5kc2R0ICAgPSB2aXJ0X3RvX3BoeXMoZHNkdCk7Ci0gICAgZmFkdC0+eF9kc2R0 ID0gdmlydF90b19waHlzKGRzZHQpOwotICAgIGZhZHQtPmZpcm13YXJlX2N0cmwgICA9IHZpcnRf dG9fcGh5cyhmYWNzKTsKLSAgICBmYWR0LT54X2Zpcm13YXJlX2N0cmwgPSB2aXJ0X3RvX3BoeXMo ZmFjcyk7CisgICAgZmFkdC0+ZHNkdCAgID0gY29uZmlnLT5tZW1fb3BzLnYycChkc2R0KTsKKyAg ICBmYWR0LT54X2RzZHQgPSBjb25maWctPm1lbV9vcHMudjJwKGRzZHQpOworICAgIGZhZHQtPmZp cm13YXJlX2N0cmwgICA9IGNvbmZpZy0+bWVtX29wcy52MnAoZmFjcyk7CisgICAgZmFkdC0+eF9m aXJtd2FyZV9jdHJsID0gY29uZmlnLT5tZW1fb3BzLnYycChmYWNzKTsKICAgICBzZXRfY2hlY2tz dW0oZmFkdCwKICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IGFjcGlfaGVhZGVyLCBj aGVja3N1bSksCiAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgYWNwaV8yMF9mYWR0KSk7 CkBAIC01NTcsMTIgKzU2MywxMiBAQCB2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3Bp X2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgcGh5c2ljYWwpCiAgICAgaWYgKCBucl9zZWNv bmRhcmllcyA8IDAgKQogICAgICAgICBnb3RvIG9vbTsKIAotICAgIHhzZHQgPSBtZW1fYWxsb2Mo c2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3hzZHQpKworICAgIHhzZHQgPSBjb25maWctPm1lbV9vcHMu YWxsb2Moc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3hzZHQpKwogICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mKHVpbnQ2NF90KSpucl9zZWNvbmRhcmllcywKICAgICAgICAgICAgICAgICAgICAgIDE2 KTsKICAgICBpZiAoIXhzZHQpIGdvdG8gb29tOwogICAgIG1lbWNweSh4c2R0LCAmWHNkdCwgc2l6 ZW9mKHN0cnVjdCBhY3BpX2hlYWRlcikpOwotICAgIHhzZHQtPmVudHJ5WzBdID0gdmlydF90b19w aHlzKGZhZHQpOworICAgIHhzZHQtPmVudHJ5WzBdID0gY29uZmlnLT5tZW1fb3BzLnYycChmYWR0 KTsKICAgICBmb3IgKCBpID0gMDsgc2Vjb25kYXJ5X3RhYmxlc1tpXTsgaSsrICkKICAgICAgICAg eHNkdC0+ZW50cnlbaSsxXSA9IHNlY29uZGFyeV90YWJsZXNbaV07CiAgICAgeHNkdC0+aGVhZGVy Lmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgYWNwaV9oZWFkZXIpICsgKGkrMSkqc2l6ZW9mKHVpbnQ2 NF90KTsKQEAgLTU3MCwxMiArNTc2LDEyIEBAIHZvaWQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0 IGFjcGlfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBwaHlzaWNhbCkKICAgICAgICAgICAg ICAgICAgb2Zmc2V0b2Yoc3RydWN0IGFjcGlfaGVhZGVyLCBjaGVja3N1bSksCiAgICAgICAgICAg ICAgICAgIHhzZHQtPmhlYWRlci5sZW5ndGgpOwogCi0gICAgcnNkdCA9IG1lbV9hbGxvYyhzaXpl b2Yoc3RydWN0IGFjcGlfMjBfcnNkdCkrCisgICAgcnNkdCA9IGNvbmZpZy0+bWVtX29wcy5hbGxv YyhzaXplb2Yoc3RydWN0IGFjcGlfMjBfcnNkdCkrCiAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YodWludDMyX3QpKm5yX3NlY29uZGFyaWVzLAogICAgICAgICAgICAgICAgICAgICAgMTYpOwog ICAgIGlmICghcnNkdCkgZ290byBvb207CiAgICAgbWVtY3B5KHJzZHQsICZSc2R0LCBzaXplb2Yo c3RydWN0IGFjcGlfaGVhZGVyKSk7Ci0gICAgcnNkdC0+ZW50cnlbMF0gPSB2aXJ0X3RvX3BoeXMo ZmFkdF8xMCk7CisgICAgcnNkdC0+ZW50cnlbMF0gPSBjb25maWctPm1lbV9vcHMudjJwKGZhZHRf MTApOwogICAgIGZvciAoIGkgPSAwOyBzZWNvbmRhcnlfdGFibGVzW2ldOyBpKysgKQogICAgICAg ICByc2R0LT5lbnRyeVtpKzFdID0gc2Vjb25kYXJ5X3RhYmxlc1tpXTsKICAgICByc2R0LT5oZWFk ZXIubGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3BpX2hlYWRlcikgKyAoaSsxKSpzaXplb2YodWlu dDMyX3QpOwpAQCAtNTg5LDggKzU5NSw4IEBAIHZvaWQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0 IGFjcGlfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBwaHlzaWNhbCkKICAgICByc2RwID0g KHN0cnVjdCBhY3BpXzIwX3JzZHAgKilwaHlzaWNhbDsKIAogICAgIG1lbWNweShyc2RwLCAmUnNk cCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3JzZHApKTsKLSAgICByc2RwLT5yc2R0X2FkZHJlc3Mg PSB2aXJ0X3RvX3BoeXMocnNkdCk7Ci0gICAgcnNkcC0+eHNkdF9hZGRyZXNzID0gdmlydF90b19w aHlzKHhzZHQpOworICAgIHJzZHAtPnJzZHRfYWRkcmVzcyA9IGNvbmZpZy0+bWVtX29wcy52MnAo cnNkdCk7CisgICAgcnNkcC0+eHNkdF9hZGRyZXNzID0gY29uZmlnLT5tZW1fb3BzLnYycCh4c2R0 KTsKICAgICBzZXRfY2hlY2tzdW0ocnNkcCwKICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yoc3Ry dWN0IGFjcGlfMTBfcnNkcCwgY2hlY2tzdW0pLAogICAgICAgICAgICAgICAgICBzaXplb2Yoc3Ry dWN0IGFjcGlfMTBfcnNkcCkpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVy L3V0aWwuYyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMKaW5kZXggYzExMWY2MS4u OWU2ZWU3ZCAxMDA2NDQKLS0tIGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuYworKysg Yi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5jCkBAIC04NjYsNiArODY2LDExIEBAIHN0 YXRpYyB1aW50OF90IGJhdHRlcnlfcG9ydF9leGlzdHModm9pZCkKICAgICByZXR1cm4gKGluYigw eDg4KSA9PSAweDFGKTsKIH0KIAordW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9pZCAqdikK K3sKKyAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpdjsKK30KKwogdm9pZCBodm1sb2FkZXJfYWNw aV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGh5c2ljYWwpCiB7CkBAIC05MjgsNiAr OTMzLDkgQEAgdm9pZCBodm1sb2FkZXJfYWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29u ZmlnICpjb25maWcsCiAgICAgY29uZmlnLT50aXNfaGRyID0gKHVpbnQxNl90ICopQUNQSV9USVNf SERSX0FERFJFU1M7CiAgICAgY29uZmlnLT5hY3BpX2luZm9fcGFnZSA9ICh2b2lkICopQUNQSV9J TkZPX1BIWVNJQ0FMX0FERFJFU1M7CiAKKyAgICBjb25maWctPm1lbV9vcHMuYWxsb2MgPSBtZW1f YWxsb2M7CisgICAgY29uZmlnLT5tZW1fb3BzLnYycCA9IHZpcnRfdG9fcGh5czsKKwogICAgIGFj cGlfYnVpbGRfdGFibGVzKGNvbmZpZywgcGh5c2ljYWwpOwogCiAgICAgaHZtX3BhcmFtX3NldChI Vk1fUEFSQU1fVk1fR0VORVJBVElPTl9JRF9BRERSLCBjb25maWctPmFjcGlfaW5mby52bV9naWRf YWRkcik7CmRpZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5oIGIvdG9v bHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuaAppbmRleCBiMjI2ZGY0Li45MWMyMTBjIDEwMDY0 NAotLS0gYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5oCisrKyBiL3Rvb2xzL2Zpcm13 YXJlL2h2bWxvYWRlci91dGlsLmgKQEAgLTE5Niw3ICsxOTYsNyBAQCB4ZW5fcGZuX3QgbWVtX2hv bGVfYWxsb2ModWludDMyX3QgbnJfbWZucyk7CiAKIC8qIEFsbG9jYXRlIG1lbW9yeSBpbiBhIHJl c2VydmVkIHJlZ2lvbiBiZWxvdyA0R0IuICovCiB2b2lkICptZW1fYWxsb2ModWludDMyX3Qgc2l6 ZSwgdWludDMyX3QgYWxpZ24pOwotI2RlZmluZSB2aXJ0X3RvX3BoeXModikgKCh1bnNpZ25lZCBs b25nKSh2KSkKK3Vuc2lnbmVkIGxvbmcgdmlydF90b19waHlzKHZvaWQgKnYpOwogCiAvKiBBbGxv Y2F0ZSBtZW1vcnkgaW4gYSBzY3JhdGNoIHJlZ2lvbiAqLwogdm9pZCAqc2NyYXRjaF9hbGxvYyh1 aW50MzJfdCBzaXplLCB1aW50MzJfdCBhbGlnbik7Ci0tIAoyLjQuMwoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==