From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankur Arora Subject: [RFC PATCH 08/16] x86/xen: irq/upcall handling with multiple xenhosts Date: Thu, 9 May 2019 10:25:32 -0700 Message-ID: <20190509172540.12398-9-ankur.a.arora__37332.3739318707$1557422805$gmane$org@oracle.com> References: <20190509172540.12398-1-ankur.a.arora@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hOmnj-0000dx-16 for xen-devel@lists.xenproject.org; Thu, 09 May 2019 17:25:47 +0000 In-Reply-To: <20190509172540.12398-1-ankur.a.arora@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, konrad.wilk@oracle.com, ankur.a.arora@oracle.com, pbonzini@redhat.com, boris.ostrovsky@oracle.com, joao.m.martins@oracle.com List-Id: xen-devel@lists.xenproject.org Rm9yIGNvbmZpZ3VyYXRpb25zIHdpdGggbXVsdGlwbGUgeGVuaG9zdHMsIHdlIG5lZWQgdG8gaGFu ZGxlIGV2ZW50cwpnZW5lcmF0ZWQgZnJvbSBtdWx0aXBsZSB4ZW5ob3N0cy4KCkhhdmluZyBtb3Jl IHRoYW4gb25lIHVwY2FsbCBoYW5kbGVyIG1pZ2h0IGJlIHF1aXRlIGhhaXJ5LCBhbmQgaXQgd291 bGQKYmUgc2ltcGxlciBpZiB0aGUgY2FsbGJhY2sgZnJvbSBMMC1YZW4gY291bGQgYmUgYm91bmNl ZCB2aWEgTDEtWGVuLgpUaGlzIHdpbGwgYWxzbyBtZWFuIHNpbXBsZXIgcHZfaXJxX29wcyBjb2Rl IGJlY2F1c2Ugbm93IHRoZSBJRiBmbGFnCm1hcHMgb250byB0aGUgeGhfZGVmYXVsdC0+dmNwdV9p bmZvLT5ldnRjaG5fdXBjYWxsX21hc2suCgpIb3dldmVyLCB3ZSBzdGlsbCB1cGRhdGUgdGhlIHho X3JlbW90ZS0+dmNwdV9pbmZvLT5ldnRjaG5fdXBjYWxsX21hc2sKb24gYSBiZXN0IGVmZm9ydCBi YXNpcyB0byBtaW5pbWl6ZSB1bm5lY2Vzc2FyeSB3b3JrIGluIHJlbW90ZSB4ZW5ob3N0LgoKVE9E TzoKICAtIGRpcmVjdCBwdl9vcHMuaXJxIGFyZSBkaXNhYmxlZC4KClNpZ25lZC1vZmYtYnk6IEFu a3VyIEFyb3JhIDxhbmt1ci5hLmFyb3JhQG9yYWNsZS5jb20+Ci0tLQogYXJjaC94ODYveGVuL01h a2VmaWxlICAgICAgIHwgIDIgKy0KIGFyY2gveDg2L3hlbi9lbmxpZ2h0ZW5fcHYuYyB8ICA0ICsr LQogYXJjaC94ODYveGVuL2lycS5jICAgICAgICAgIHwgNjkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLQogYXJjaC94ODYveGVuL3NtcF9wdi5jICAgICAgIHwgMTEgKysrKysr CiA0IGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L3hlbi9NYWtlZmlsZSBiL2FyY2gveDg2L3hlbi9NYWtlZmlsZQpp bmRleCA1NjRiNGRkZGJjMTUuLjNjNzA1NmFkMzUyMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYveGVu L01ha2VmaWxlCisrKyBiL2FyY2gveDg2L3hlbi9NYWtlZmlsZQpAQCAtMzQsNyArMzQsNyBAQCBv YmotJChDT05GSUdfWEVOX1BWKQkJKz0gZW5saWdodGVuX3B2Lm8KIG9iai0kKENPTkZJR19YRU5f UFYpCQkrPSBtbXVfcHYubwogb2JqLSQoQ09ORklHX1hFTl9QVikJCSs9IGlycS5vCiBvYmotJChD T05GSUdfWEVOX1BWKQkJKz0gbXVsdGljYWxscy5vCi1vYmotJChDT05GSUdfWEVOX1BWKQkJKz0g eGVuLWFzbS5vCitvYmotbgkJKz0geGVuLWFzbS5vCiBvYmotJChDT05GSUdfWEVOX1BWKQkJKz0g eGVuLWFzbV8kKEJJVFMpLm8KIAogb2JqLSQoQ09ORklHX1hFTl9QVkgpCQkrPSBlbmxpZ2h0ZW5f cHZoLm8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW5fcHYuYyBiL2FyY2gveDg2 L3hlbi9lbmxpZ2h0ZW5fcHYuYwppbmRleCA1ZjZhMTQ3NWVjMGMuLjc3YjFhMGQ0YWVmMiAxMDA2 NDQKLS0tIGEvYXJjaC94ODYveGVuL2VubGlnaHRlbl9wdi5jCisrKyBiL2FyY2gveDg2L3hlbi9l bmxpZ2h0ZW5fcHYuYwpAQCAtOTk2LDggKzk5Niw5IEBAIHZvaWQgX19pbml0IHhlbl9zZXR1cF92 Y3B1X2luZm9fcGxhY2VtZW50KHZvaWQpCiAJICogeGVuX3ZjcHVfc2V0dXAgbWFuYWdlZCB0byBw bGFjZSB0aGUgdmNwdV9pbmZvIHdpdGhpbiB0aGUKIAkgKiBwZXJjcHUgYXJlYSBmb3IgYWxsIGNw dXMsIHNvIG1ha2UgdXNlIG9mIGl0LgogCSAqLworI2lmIDAKKwkvKiBEaXNhYmxlIGRpcmVjdCBh Y2Nlc3MgZm9yIG5vdy4gKi8KIAlpZiAoeGVuX2hhdmVfdmNwdV9pbmZvX3BsYWNlbWVudCAmJiBm YWxzZSkgewotCQkvKiBEaXNhYmxlIGRpcmVjdCBhY2Nlc3MgdW50aWwgd2UgaGF2ZSBwcm9wZXIg cGNwdSBkYXRhIHN0cnVjdHVyZXMuICovCiAJCXB2X29wcy5pcnEuc2F2ZV9mbCA9IF9fUFZfSVNf Q0FMTEVFX1NBVkUoeGVuX3NhdmVfZmxfZGlyZWN0KTsKIAkJcHZfb3BzLmlycS5yZXN0b3JlX2Zs ID0KIAkJCV9fUFZfSVNfQ0FMTEVFX1NBVkUoeGVuX3Jlc3RvcmVfZmxfZGlyZWN0KTsKQEAgLTEw MDcsNiArMTAwOCw3IEBAIHZvaWQgX19pbml0IHhlbl9zZXR1cF92Y3B1X2luZm9fcGxhY2VtZW50 KHZvaWQpCiAJCQlfX1BWX0lTX0NBTExFRV9TQVZFKHhlbl9pcnFfZW5hYmxlX2RpcmVjdCk7CiAJ CXB2X29wcy5tbXUucmVhZF9jcjIgPSB4ZW5fcmVhZF9jcjJfZGlyZWN0OwogCX0KKyNlbmRpZgog fQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHB2X2luZm8geGVuX2luZm8gX19pbml0Y29uc3QgPSB7 CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4vaXJxLmMgYi9hcmNoL3g4Ni94ZW4vaXJxLmMKaW5k ZXggMzhhZDFhMWM0NzYzLi5mNzYwYTZhYmZiMWUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi9p cnEuYworKysgYi9hcmNoL3g4Ni94ZW4vaXJxLmMKQEAgLTE5LDkgKzE5LDkgQEAKICAqIGNhbGxi YWNrIG1hc2suIFdlIGRvIHRoaXMgaW4gYSB2ZXJ5IHNpbXBsZSBtYW5uZXIsIGJ5IG1ha2luZyBh IGNhbGwKICAqIGRvd24gaW50byBYZW4uIFRoZSBwZW5kaW5nIGZsYWcgd2lsbCBiZSBjaGVja2Vk IGJ5IFhlbiBvbiByZXR1cm4uCiAgKi8KLXZvaWQgeGVuX2ZvcmNlX2V2dGNobl9jYWxsYmFjayh2 b2lkKQordm9pZCB4ZW5fZm9yY2VfZXZ0Y2huX2NhbGxiYWNrKHhlbmhvc3RfdCAqeGgpCiB7Ci0J KHZvaWQpSFlQRVJWSVNPUl94ZW5fdmVyc2lvbigwLCBOVUxMKTsKKwkodm9pZCloeXBlcnZpc29y X3hlbl92ZXJzaW9uKHhoLCAwLCBOVUxMKTsKIH0KIAogYXNtbGlua2FnZSBfX3Zpc2libGUgdW5z aWduZWQgbG9uZyB4ZW5fc2F2ZV9mbCh2b2lkKQpAQCAtMjksNiArMjksMjEgQEAgYXNtbGlua2Fn ZSBfX3Zpc2libGUgdW5zaWduZWQgbG9uZyB4ZW5fc2F2ZV9mbCh2b2lkKQogCXN0cnVjdCB2Y3B1 X2luZm8gKnZjcHU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAorCS8qCisJICogSW4gc2NlbmFy aW9zIHdpdGggbW9yZSB0aGFuIG9uZSB4ZW5ob3N0LCB0aGUgcHJpbWFyeSB4ZW5ob3N0CisJICog aXMgcmVzcG9uc2libGUgZm9yIGFsbCB0aGUgdXBjYWxscywgd2l0aCB0aGUgcmVtb3RlIHhlbmhv c3QKKwkgKiBib3VuY2luZyBpdHMgdXBjYWxscyB0aHJvdWdoIGl0IChzZWUgY29tbWVudCBpbgor CSAqIGNwdV9pbml0aWFsaXplX2NvbnRleHQoKS4pCisJICoKKwkgKiBUbyBtaW5pbWl6ZSB1bm5l Y2Vzc2FyeSB1cGNhbGxzLCB0aGUgcmVtb3RlIHhlbmhvc3Qgc3RpbGwgbG9va3MgYXQKKwkgKiB0 aGUgdmFsdWUgb2YgdmNwdV9pbmZvLT5ldnRjaG5fdXBjYWxsX21hc2ssIHNvIHdlIHN0aWxsIHNl dCBhbmQgcmVzZXQKKwkgKiB0aGF0LgorCSAqCisJICogVGhlIGZhY3QgdGhhdCB0aGUgdXBjYWxs IGl0c2VsZiBpcyBnYXRlZCBieSB0aGUgZGVmYXVsdCB4ZW5ob3N0LAorCSAqIGFsc28gaGVscHMg aW4gc2ltcGxpZnlpbmcgdGhlIGxvZ2ljIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRvCisJ ICogd29ycnkgYWJvdXQgZ3VhcmFudGVlaW5nIGF0b21pY2l0eSB3aXRoIHVwZGF0ZXMgdG8KKwkg KiB4aF9yZW1vdGUtPnZjcHVfaW5mby0+ZXZ0Y2huX3VwY2FsbF9tYXNrLgorCSAqLwogCXZjcHUg PSB4aF9kZWZhdWx0LT54ZW5fdmNwdVtzbXBfcHJvY2Vzc29yX2lkKCldOwogCiAJLyogZmxhZyBo YXMgb3Bwb3NpdGUgc2Vuc2Ugb2YgbWFzayAqLwpAQCAtMzgsMjYgKzUzLDM0IEBAIGFzbWxpbmth Z2UgX192aXNpYmxlIHVuc2lnbmVkIGxvbmcgeGVuX3NhdmVfZmwodm9pZCkKIAkgICAtMCAtPiAw eDAwMDAwMDAwCiAJICAgLTEgLT4gMHhmZmZmZmZmZgogCSovCi0JcmV0dXJuICgtZmxhZ3MpICYg WDg2X0VGTEFHU19JRjsKKwlyZXR1cm4gKCgtZmxhZ3MpICYgWDg2X0VGTEFHU19JRik7CiB9CiBQ Vl9DQUxMRUVfU0FWRV9SRUdTX1RIVU5LKHhlbl9zYXZlX2ZsKTsKIAogX192aXNpYmxlIHZvaWQg eGVuX3Jlc3RvcmVfZmwodW5zaWduZWQgbG9uZyBmbGFncykKIHsKIAlzdHJ1Y3QgdmNwdV9pbmZv ICp2Y3B1OworCXhlbmhvc3RfdCAqKnhoOwogCiAJLyogY29udmVydCBmcm9tIElGIHR5cGUgZmxh ZyAqLwogCWZsYWdzID0gIShmbGFncyAmIFg4Nl9FRkxBR1NfSUYpOwogCiAJLyogU2VlIHhlbl9p cnFfZW5hYmxlKCkgZm9yIHdoeSBwcmVlbXB0aW9uIG11c3QgYmUgZGlzYWJsZWQuICovCiAJcHJl ZW1wdF9kaXNhYmxlKCk7Ci0JdmNwdSA9IHhoX2RlZmF1bHQtPnhlbl92Y3B1W3NtcF9wcm9jZXNz b3JfaWQoKV07Ci0JdmNwdS0+ZXZ0Y2huX3VwY2FsbF9tYXNrID0gZmxhZ3M7CisJZm9yX2VhY2hf eGVuaG9zdCh4aCkgeworCQl2Y3B1ID0gKCp4aCktPnhlbl92Y3B1W3NtcF9wcm9jZXNzb3JfaWQo KV07CisJCXZjcHUtPmV2dGNobl91cGNhbGxfbWFzayA9IGZsYWdzOworCX0KIAogCWlmIChmbGFn cyA9PSAwKSB7CiAJCWJhcnJpZXIoKTsgLyogdW5tYXNrIHRoZW4gY2hlY2sgKGF2b2lkIHJhY2Vz KSAqLwotCQlpZiAodW5saWtlbHkodmNwdS0+ZXZ0Y2huX3VwY2FsbF9wZW5kaW5nKSkKLQkJCXhl bl9mb3JjZV9ldnRjaG5fY2FsbGJhY2soKTsKKwkJZm9yX2VhY2hfeGVuaG9zdCh4aCkgeworCQkJ LyogUHJlZW1wdGlvbiBpcyBkaXNhYmxlZCBzbyB3ZSBzaG91bGQgbm90IGhhdmUKKwkJCSAqIGdv dHRlbiBtb3ZlZCB0byBhIGRpZmZlcmVudCBWQ1BVLiAqLworCQkJdmNwdSA9ICgqeGgpLT54ZW5f dmNwdVtzbXBfcHJvY2Vzc29yX2lkKCldOworCQkJaWYgKHVubGlrZWx5KHZjcHUtPmV2dGNobl91 cGNhbGxfcGVuZGluZykpCisJCQkJeGVuX2ZvcmNlX2V2dGNobl9jYWxsYmFjaygqeGgpOworCQl9 CiAJCXByZWVtcHRfZW5hYmxlKCk7CiAJfSBlbHNlCiAJCXByZWVtcHRfZW5hYmxlX25vX3Jlc2No ZWQoKTsKQEAgLTY2LDExICs4OSwxOSBAQCBQVl9DQUxMRUVfU0FWRV9SRUdTX1RIVU5LKHhlbl9y ZXN0b3JlX2ZsKTsKIAogYXNtbGlua2FnZSBfX3Zpc2libGUgdm9pZCB4ZW5faXJxX2Rpc2FibGUo dm9pZCkKIHsKKwl4ZW5ob3N0X3QgKip4aDsKKwogCS8qIFRoZXJlJ3MgYSBvbmUgaW5zdHJ1Y3Rp b24gcHJlZW1wdCB3aW5kb3cgaGVyZS4gIFdlIG5lZWQgdG8KIAkgICBtYWtlIHN1cmUgd2UncmUg ZG9uJ3Qgc3dpdGNoIENQVXMgYmV0d2VlbiBnZXR0aW5nIHRoZSB2Y3B1CiAJICAgcG9pbnRlciBh bmQgdXBkYXRpbmcgdGhlIG1hc2suICovCiAJcHJlZW1wdF9kaXNhYmxlKCk7Ci0JeGhfZGVmYXVs dC0+eGVuX3ZjcHVbc21wX3Byb2Nlc3Nvcl9pZCgpXS0+ZXZ0Y2huX3VwY2FsbF9tYXNrID0gMTsK Kwlmb3JfZWFjaF94ZW5ob3N0KHhoKQorCQkvKgorCQkgKiBNYXNrIGV2ZW50cyBvbiB0aGlzIENQ VSBmb3IgYm90aCB0aGUgeGVuaG9zdHMuICBBcyB0aGUKKwkJICogY29tbWVudCBhYm92ZSBtZW50 aW9ucywgZGlzYWJsaW5nIHByZWVtcHRpb24gbWVhbnMgd2UKKwkJICogY2FuIHNhZmVseSBkbyB0 aGF0LgorCQkgKi8KKwkJKCp4aCktPnhlbl92Y3B1W3NtcF9wcm9jZXNzb3JfaWQoKV0tPmV2dGNo bl91cGNhbGxfbWFzayA9IDE7CiAJcHJlZW1wdF9lbmFibGVfbm9fcmVzY2hlZCgpOwogfQogUFZf Q0FMTEVFX1NBVkVfUkVHU19USFVOSyh4ZW5faXJxX2Rpc2FibGUpOwpAQCAtNzgsNiArMTA5LDcg QEAgUFZfQ0FMTEVFX1NBVkVfUkVHU19USFVOSyh4ZW5faXJxX2Rpc2FibGUpOwogYXNtbGlua2Fn ZSBfX3Zpc2libGUgdm9pZCB4ZW5faXJxX2VuYWJsZSh2b2lkKQogewogCXN0cnVjdCB2Y3B1X2lu Zm8gKnZjcHU7CisJeGVuaG9zdF90ICoqeGg7CiAKIAkvKgogCSAqIFdlIG1heSBiZSBwcmVlbXB0 ZWQgYXMgc29vbiBhcyB2Y3B1LT5ldnRjaG5fdXBjYWxsX21hc2sgaXMKQEAgLTg2LDE2ICsxMTgs MjUgQEAgYXNtbGlua2FnZSBfX3Zpc2libGUgdm9pZCB4ZW5faXJxX2VuYWJsZSh2b2lkKQogCSAq LwogCXByZWVtcHRfZGlzYWJsZSgpOwogCi0JdmNwdSA9IHhoX2RlZmF1bHQtPnhlbl92Y3B1W3Nt cF9wcm9jZXNzb3JfaWQoKV07Ci0JdmNwdS0+ZXZ0Y2huX3VwY2FsbF9tYXNrID0gMDsKKwkvKiBH aXZlbiB0aGF0IHRoZSBpbnRlcnJ1cHRzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgZGVmYXVsdCB4 ZW5ob3N0LAorCSAqIHdlIHNob3VsZCBkbyB0aGlzIGluIHJldmVyc2Ugb3JkZXIuCisJICovCisJ Zm9yX2VhY2hfeGVuaG9zdCh4aCkgeworCQl2Y3B1ID0gKCp4aCktPnhlbl92Y3B1W3NtcF9wcm9j ZXNzb3JfaWQoKV07CisJCXZjcHUtPmV2dGNobl91cGNhbGxfbWFzayA9IDA7CiAKLQkvKiBEb2Vz bid0IG1hdHRlciBpZiB3ZSBnZXQgcHJlZW1wdGVkIGhlcmUsIGJlY2F1c2UgYW55Ci0JICAgcGVu ZGluZyBldmVudCB3aWxsIGdldCBkZWFsdCB3aXRoIGFueXdheS4gKi8KKwkJLyogV2UgY291bGQg Z2V0IHByZWVtcHRlZCBieSBhbiBpbmNvbWluZyBpbnRlcnJ1cHQgaGVyZSB3aXRoIGEKKwkJICog aGFsZiBlbmFibGVkIGlycSAoZm9yIHRoZSBmaXJzdCB4ZW5ob3N0LikKKwkJICovCisJfQogCiAJ YmFycmllcigpOyAvKiB1bm1hc2sgdGhlbiBjaGVjayAoYXZvaWQgcmFjZXMpICovCi0JaWYgKHVu bGlrZWx5KHZjcHUtPmV2dGNobl91cGNhbGxfcGVuZGluZykpCi0JCXhlbl9mb3JjZV9ldnRjaG5f Y2FsbGJhY2soKTsKIAorCWZvcl9lYWNoX3hlbmhvc3QoeGgpIHsKKwkJdmNwdSA9ICgqeGgpLT54 ZW5fdmNwdVtzbXBfcHJvY2Vzc29yX2lkKCldOworCQlpZiAodW5saWtlbHkodmNwdS0+ZXZ0Y2hu X3VwY2FsbF9wZW5kaW5nKSkKKwkJCXhlbl9mb3JjZV9ldnRjaG5fY2FsbGJhY2soKnhoKTsKKwl9 CiAJcHJlZW1wdF9lbmFibGUoKTsKIH0KIFBWX0NBTExFRV9TQVZFX1JFR1NfVEhVTksoeGVuX2ly cV9lbmFibGUpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL3NtcF9wdi5jIGIvYXJjaC94ODYv eGVuL3NtcF9wdi5jCmluZGV4IDZkOWMzZTY2MTFlZi4uZjRlYTllYWM4YjZhIDEwMDY0NAotLS0g YS9hcmNoL3g4Ni94ZW4vc21wX3B2LmMKKysrIGIvYXJjaC94ODYveGVuL3NtcF9wdi5jCkBAIC0z NDMsNiArMzQzLDE3IEBAIGNwdV9pbml0aWFsaXplX2NvbnRleHQodW5zaWduZWQgaW50IGNwdSwg c3RydWN0IHRhc2tfc3RydWN0ICppZGxlKQogI2Vsc2UKIAljdHh0LT5nc19iYXNlX2tlcm5lbCA9 IHBlcl9jcHVfb2Zmc2V0KGNwdSk7CiAjZW5kaWYKKwkvKgorCSAqIFdlIHNldHVwIGFuIHVwY2Fs bCBoYW5kbGVyIG9ubHkgZm9yIHRoZSBkZWZhdWx0IHhlbmhvc3QuIFRoZSByZW1vdGUKKwkgKiB4 ZW5ob3N0IHdpbGwgZ2VuZXJhdGUgZXZ0Y2huIGV2ZW50cywgYnV0IGFuIGFkZGl0aW9uYWwgY2Fs bGJhY2sgd291bGQgYmUKKwkgKiBxdWl0ZSBoYWlyeSwgc2luY2Ugd2Ugd291bGQgaGF2ZSBWQ1BV IHN0YXRlIGluaXRpYWxpc2VkIGluIG11bHRpcGxlCisJICogaHlwZXJ2aXNvcnMgYW5kIGlzc3Vl cyBsaWtlIHJlLWVudHJhbmN5IG9mIHVwY2FsbHMuCisJICoKKwkgKiBJdCB3b3VsZCBiZSBzaW1w bGVyIGlmIHRoZSBjYWxsYmFjayBmcm9tIEwwLVhlbiBjb3VsZCBiZSBib3VuY2VkCisJICogYm91 bmNlZCB2aWEgTDEtWGVuLiBUaGlzIGFsc28gc2ltcGxpZmllcyB0aGUgcHZfaXJxX29wcyBjb2Rl CisJICogYmVjYXVzZSBub3cgdGhlIENQVSdzIElGIHByb2Nlc3Npbmcgb25seSBuZWVkcyB0byBo YXBwZW4gb24KKwkgKiB4aF9kZWZhdWx0LT52Y3B1X2luZm8uCisJICovCiAJY3R4dC0+ZXZlbnRf Y2FsbGJhY2tfZWlwICAgID0KIAkJKHVuc2lnbmVkIGxvbmcpeGVuX2h5cGVydmlzb3JfY2FsbGJh Y2s7CiAJY3R4dC0+ZmFpbHNhZmVfY2FsbGJhY2tfZWlwID0KLS0gCjIuMjAuMQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=