From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KcPRT-0000ve-Sv for qemu-devel@nongnu.org; Sun, 07 Sep 2008 14:56:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KcPRS-0000vS-LC for qemu-devel@nongnu.org; Sun, 07 Sep 2008 14:56:59 -0400 Received: from [199.232.76.173] (port=34585 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KcPRS-0000vP-Dx for qemu-devel@nongnu.org; Sun, 07 Sep 2008 14:56:58 -0400 Received: from wf-out-1314.google.com ([209.85.200.170]:26233) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KcPRR-000762-QV for qemu-devel@nongnu.org; Sun, 07 Sep 2008 14:56:58 -0400 Received: by wf-out-1314.google.com with SMTP id 27so1260814wfd.4 for ; Sun, 07 Sep 2008 11:56:56 -0700 (PDT) Message-ID: Date: Sun, 7 Sep 2008 21:56:56 +0300 From: "Blue Swirl" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_88691_1071967.1220813816818" Subject: [Qemu-devel] [PATCH, RFC] Configuration device: add write channel, mark pages RO Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel ------=_Part_88691_1071967.1220813816818 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, The first patch extend the configuration device with a guest write capability. A callback is invoked when the buffer is full. It's a bit odd to get completely different behavior when doing I/O to the same port just because of the word size used in the IO. I'd rather have two ports, one for control write or status read and another for data read/write. Is two ports too much to ask on a PC? The second patch uses the first one to add a new key for marking guest pages read only. This patch was inspired due to discussion I saw on KernelTrap: http://kerneltrap.org/mailarchive/linux-kernel/2008/9/4/3191234 ------=_Part_88691_1071967.1220813816818 Content-Type: plain/text; name=fw_cfg_write_channel.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fku0y0o9 Content-Disposition: attachment; filename=fw_cfg_write_channel.diff SW5kZXg6IHFlbXUvaHcvZndfY2ZnLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2Z3X2Nm Zy5jCTIwMDgtMDktMDcgMTg6Mjk6MjMuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L2Z3X2Nm Zy5jCTIwMDgtMDktMDcgMTg6Mzc6NDAuMDAwMDAwMDAwICswMDAwCkBAIC00MCw3ICs0MCw5IEBA CiAKIHR5cGVkZWYgc3RydWN0IF9GV0NmZ0VudHJ5IHsKICAgICB1aW50MTZfdCBsZW47Ci0gICAg Y29uc3QgdWludDhfdCAqZGF0YTsKKyAgICB1aW50OF90ICpkYXRhOworICAgIHZvaWQgKmNhbGxi YWNrX29wYXF1ZTsKKyAgICBGV0NmZ0NhbGxiYWNrIGNhbGxiYWNrOwogfSBGV0NmZ0VudHJ5Owog CiB0eXBlZGVmIHN0cnVjdCBfRldDZmdTdGF0ZSB7CkBAIC00OSwxMiArNTEsMjggQEAKICAgICB1 aW50MTZfdCBjdXJfb2Zmc2V0OwogfSBGV0NmZ1N0YXRlOwogCitzdGF0aWMgdm9pZCBmd19jZmdf d3JpdGUoRldDZmdTdGF0ZSAqcywgdWludDhfdCB2YWx1ZSkKK3sKKyAgICBpbnQgYXJjaCA9ICEh KHMtPmN1cl9lbnRyeSAmIEZXX0NGR19BUkNIX0xPQ0FMKTsKKyAgICBGV0NmZ0VudHJ5ICplID0g JnMtPmVudHJpZXNbYXJjaF1bcy0+Y3VyX2VudHJ5ICYgRldfQ0ZHX0VOVFJZX01BU0tdOworCisg ICAgRldfQ0ZHX0RQUklOVEYoIndyaXRlICVkXG4iLCB2YWx1ZSk7CisKKyAgICBpZiAocy0+Y3Vy X2VudHJ5ICYgRldfQ0ZHX1dSSVRFX0NIQU5ORUwgJiYgcy0+Y3VyX29mZnNldCA8IGUtPmxlbikg eworICAgICAgICBlLT5kYXRhW3MtPmN1cl9vZmZzZXQrK10gPSB2YWx1ZTsKKyAgICAgICAgaWYg KHMtPmN1cl9vZmZzZXQgPT0gZS0+bGVuKSB7CisgICAgICAgICAgICBlLT5jYWxsYmFjayhlLT5j YWxsYmFja19vcGFxdWUsIGUtPmRhdGEpOworICAgICAgICAgICAgcy0+Y3VyX29mZnNldCA9IDA7 CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN0YXRpYyBpbnQgZndfY2ZnX3NlbGVjdChGV0NmZ1N0 YXRlICpzLCB1aW50MTZfdCBrZXkpCiB7CiAgICAgaW50IHJldDsKIAogICAgIHMtPmN1cl9vZmZz ZXQgPSAwOwotICAgIGlmICgoa2V5ICYgfkZXX0NGR19BUkNIX0xPQ0FMKSA+PSBGV19DRkdfTUFY X0VOVFJZKSB7CisgICAgaWYgKChrZXkgJiBGV19DRkdfRU5UUllfTUFTSykgPj0gRldfQ0ZHX01B WF9FTlRSWSkgewogICAgICAgICBzLT5jdXJfZW50cnkgPSBGV19DRkdfSU5WQUxJRDsKICAgICAg ICAgcmV0ID0gMDsKICAgICB9IGVsc2UgewpAQCAtNzAsNyArODgsNyBAQAogc3RhdGljIHVpbnQ4 X3QgZndfY2ZnX3JlYWQoRldDZmdTdGF0ZSAqcykKIHsKICAgICBpbnQgYXJjaCA9ICEhKHMtPmN1 cl9lbnRyeSAmIEZXX0NGR19BUkNIX0xPQ0FMKTsKLSAgICBGV0NmZ0VudHJ5ICplID0gJnMtPmVu dHJpZXNbYXJjaF1bcy0+Y3VyX2VudHJ5ICYgfkZXX0NGR19BUkNIX0xPQ0FMXTsKKyAgICBGV0Nm Z0VudHJ5ICplID0gJnMtPmVudHJpZXNbYXJjaF1bcy0+Y3VyX2VudHJ5ICYgRldfQ0ZHX0VOVFJZ X01BU0tdOwogICAgIHVpbnQ4X3QgcmV0OwogCiAgICAgaWYgKHMtPmN1cl9lbnRyeSA9PSBGV19D RkdfSU5WQUxJRCB8fCAhZS0+ZGF0YSB8fCBzLT5jdXJfb2Zmc2V0ID49IGUtPmxlbikKQEAgLTg4 LDYgKzEwNiwxMSBAQAogICAgIHJldHVybiBmd19jZmdfcmVhZChvcGFxdWUpOwogfQogCitzdGF0 aWMgdm9pZCBmd19jZmdfaW9fd3JpdGViKHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkciwgdWlu dDMyX3QgdmFsdWUpCit7CisgICAgcmV0dXJuIGZ3X2NmZ193cml0ZShvcGFxdWUsICh1aW50OF90 KXZhbHVlKTsKK30KKwogc3RhdGljIHZvaWQgZndfY2ZnX2lvX3dyaXRldyh2b2lkICpvcGFxdWUs IHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbHVlKQogewogICAgIGZ3X2NmZ19zZWxlY3Qob3Bh cXVlLCAodWludDE2X3QpdmFsdWUpOwpAQCAtOTgsNiArMTIxLDEyIEBACiAgICAgcmV0dXJuIGZ3 X2NmZ19yZWFkKG9wYXF1ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGZ3X2NmZ19tZW1fd3JpdGViKHZv aWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gZndfY2ZnX3dyaXRlKG9w YXF1ZSwgKHVpbnQ4X3QpdmFsdWUpOworfQorCiBzdGF0aWMgdm9pZCBmd19jZmdfbWVtX3dyaXRl dyh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgdmFsdWUpCiB7CkBAIC0xMTEsNyArMTQwLDcgQEAKIH07 CiAKIHN0YXRpYyBDUFVXcml0ZU1lbW9yeUZ1bmMgKmZ3X2NmZ19tZW1fd3JpdGVbM10gPSB7Ci0g ICAgTlVMTCwKKyAgICBmd19jZmdfbWVtX3dyaXRlYiwKICAgICBmd19jZmdfbWVtX3dyaXRldywK ICAgICBOVUxMLAogfTsKQEAgLTE0NCwxMiArMTczLDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAK LWludCBmd19jZmdfYWRkX2J5dGVzKHZvaWQgKm9wYXF1ZSwgdWludDE2X3Qga2V5LCBjb25zdCB1 aW50OF90ICpkYXRhLCB1aW50MTZfdCBsZW4pCitpbnQgZndfY2ZnX2FkZF9ieXRlcyh2b2lkICpv cGFxdWUsIHVpbnQxNl90IGtleSwgdWludDhfdCAqZGF0YSwgdWludDE2X3QgbGVuKQogewogICAg IEZXQ2ZnU3RhdGUgKnMgPSBvcGFxdWU7CiAgICAgaW50IGFyY2ggPSAhIShrZXkgJiBGV19DRkdf QVJDSF9MT0NBTCk7CiAKLSAgICBrZXkgJj0gKH5GV19DRkdfQVJDSF9MT0NBTCk7CisgICAga2V5 ICY9IEZXX0NGR19FTlRSWV9NQVNLOwogCiAgICAgaWYgKGtleSA+PSBGV19DRkdfTUFYX0VOVFJZ KQogICAgICAgICByZXR1cm4gMDsKQEAgLTE5Myw2ICsyMjIsMjYgQEAKICAgICByZXR1cm4gZndf Y2ZnX2FkZF9ieXRlcyhvcGFxdWUsIGtleSwgKHVpbnQ4X3QgKiljb3B5LCBzaXplb2YodmFsdWUp KTsKIH0KIAoraW50IGZ3X2NmZ19hZGRfY2FsbGJhY2sodm9pZCAqb3BhcXVlLCB1aW50MTZfdCBr ZXksIEZXQ2ZnQ2FsbGJhY2sgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICpjYWxsYmFja19vcGFxdWUsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4pCit7CisgICAgRldD ZmdTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAgICBpbnQgYXJjaCA9ICEhKGtleSAmIEZXX0NGR19BUkNI X0xPQ0FMKTsKKworICAgIGtleSAmPSBGV19DRkdfRU5UUllfTUFTSzsKKworICAgIGlmIChrZXkg Pj0gRldfQ0ZHX01BWF9FTlRSWSB8fCAhKGtleSAmIEZXX0NGR19XUklURV9DSEFOTkVMKQorICAg ICAgICB8fCBsZW4gPiA2NTUzNSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzLT5lbnRyaWVz W2FyY2hdW2tleV0uZGF0YSA9IGRhdGE7CisgICAgcy0+ZW50cmllc1thcmNoXVtrZXldLmxlbiA9 IGxlbjsKKyAgICBzLT5lbnRyaWVzW2FyY2hdW2tleV0uY2FsbGJhY2tfb3BhcXVlID0gY2FsbGJh Y2tfb3BhcXVlOworICAgIHMtPmVudHJpZXNbYXJjaF1ba2V5XS5jYWxsYmFjayA9IGNhbGxiYWNr OworCisgICAgcmV0dXJuIDE7Cit9CisKIHZvaWQgKmZ3X2NmZ19pbml0KHVpbnQzMl90IHBvcnQs IHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewogICAgIEZXQ2ZnU3RhdGUgKnM7CkBAIC0yMDUs NiArMjU0LDcgQEAKIAogICAgIGlmIChwb3J0KSB7CiAgICAgICAgIHJlZ2lzdGVyX2lvcG9ydF9y ZWFkKHBvcnQsIDEsIDEsIGZ3X2NmZ19pb19yZWFkYiwgcyk7CisgICAgICAgIHJlZ2lzdGVyX2lv cG9ydF93cml0ZShwb3J0LCAxLCAxLCBmd19jZmdfaW9fd3JpdGViLCBzKTsKICAgICAgICAgcmVn aXN0ZXJfaW9wb3J0X3dyaXRlKHBvcnQsIDIsIDIsIGZ3X2NmZ19pb193cml0ZXcsIHMpOwogICAg IH0KICAgICBpZiAoYWRkcikgewpJbmRleDogcWVtdS9ody9md19jZmcuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBxZW11Lm9yaWcvaHcvZndfY2ZnLmgJMjAwOC0wOS0wNyAxODoyOToyMy4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvaHcvZndfY2ZnLmgJMjAwOC0wOS0wNyAxODozNzoxMy4wMDAwMDAwMDAgKzAw MDAKQEAgLTEwLDE2ICsxMCwyMSBAQAogI2RlZmluZSBGV19DRkdfTUFDSElORV9JRCAgICAgICAw eDA2CiAjZGVmaW5lIEZXX0NGR19NQVhfRU5UUlkgICAgICAgIDB4MTAKIAorI2RlZmluZSBGV19D RkdfV1JJVEVfQ0hBTk5FTCAgICAweDQwMDAKICNkZWZpbmUgRldfQ0ZHX0FSQ0hfTE9DQUwgICAg ICAgMHg4MDAwCisjZGVmaW5lIEZXX0NGR19FTlRSWV9NQVNLICAgICAgIH4oRldfQ0ZHX1dSSVRF X0NIQU5ORUwgfCBGV19DRkdfQVJDSF9MT0NBTCkKIAogI2RlZmluZSBGV19DRkdfSU5WQUxJRCAg ICAgICAgICAweGZmZmYKIAogI2lmbmRlZiBOT19RRU1VX1BST1RPUwotaW50IGZ3X2NmZ19hZGRf Ynl0ZXModm9pZCAqb3BhcXVlLCB1aW50MTZfdCBrZXksIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0g ICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBsZW4pOwordHlwZWRlZiB2b2lkICgqRldDZmdD YWxsYmFjaykodm9pZCAqb3BhcXVlLCB1aW50OF90ICpkYXRhKTsKKworaW50IGZ3X2NmZ19hZGRf Ynl0ZXModm9pZCAqb3BhcXVlLCB1aW50MTZfdCBrZXksIHVpbnQ4X3QgKmRhdGEsIHVpbnQxNl90 IGxlbik7CiBpbnQgZndfY2ZnX2FkZF9pMTYodm9pZCAqb3BhcXVlLCB1aW50MTZfdCBrZXksIHVp bnQxNl90IHZhbHVlKTsKIGludCBmd19jZmdfYWRkX2kzMih2b2lkICpvcGFxdWUsIHVpbnQxNl90 IGtleSwgdWludDMyX3QgdmFsdWUpOwogaW50IGZ3X2NmZ19hZGRfaTY0KHZvaWQgKm9wYXF1ZSwg dWludDE2X3Qga2V5LCB1aW50NjRfdCB2YWx1ZSk7CitpbnQgZndfY2ZnX2FkZF9jYWxsYmFjayh2 b2lkICpvcGFxdWUsIHVpbnQxNl90IGtleSwgRldDZmdDYWxsYmFjayBjYWxsYmFjaywKKyAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKmNhbGxiYWNrX29wYXF1ZSwgdWludDhfdCAqZGF0YSwg c2l6ZV90IGxlbik7CiB2b2lkICpmd19jZmdfaW5pdCh1aW50MzJfdCBwb3J0LCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkcik7CiAjZW5kaWYgLyogTk9fUUVNVV9QUk9UT1MgKi8KIAo= ------=_Part_88691_1071967.1220813816818 Content-Type: plain/text; name=fw_cfg_ro_page.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fku0y79d Content-Disposition: attachment; filename=fw_cfg_ro_page.diff SW5kZXg6IHFlbXUvaHcvZndfY2ZnLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2Z3X2Nm Zy5jCTIwMDgtMDktMDcgMTg6Mzc6NDAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L2Z3X2Nm Zy5jCTIwMDgtMDktMDcgMTg6NTM6MzguMDAwMDAwMDAwICswMDAwCkBAIC0yNDIsMTEgKzI0Miwx OSBAQAogICAgIHJldHVybiAxOwogfQogCitzdGF0aWMgdm9pZCBmd19jZmdfbWFya19wYWdlX3Jv KHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqZGF0YSkKK3sKKyAgICB1aW50NjRfdCBwYWdlID0gKih1 aW50NjRfdCAqKWRhdGE7CisKKyAgICBtYXJrX3BhZ2Vfcm8ocGFnZSk7Cit9CisKIHZvaWQgKmZ3 X2NmZ19pbml0KHVpbnQzMl90IHBvcnQsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewogICAg IEZXQ2ZnU3RhdGUgKnM7CiAgICAgaW50IGlvX21lbW9yeTsKICAgICBleHRlcm4gaW50IG5vZ3Jh cGhpYzsKKyAgICBzdGF0aWMgdWludDY0X3Qgcm9fcGFnZTsKIAogICAgIHMgPSBxZW11X21hbGxv Y3ooc2l6ZW9mKEZXQ2ZnU3RhdGUpKTsKICAgICBpZiAoIXMpCkBAIC0yNjcsNiArMjc1LDggQEAK ICAgICBmd19jZmdfYWRkX2J5dGVzKHMsIEZXX0NGR19VVUlELCBxZW11X3V1aWQsIDE2KTsKICAg ICBmd19jZmdfYWRkX2kxNihzLCBGV19DRkdfTk9HUkFQSElDLCAodWludDE2X3Qpbm9ncmFwaGlj KTsKICAgICBmd19jZmdfYWRkX2kxNihzLCBGV19DRkdfTkJfQ1BVUywgKHVpbnQxNl90KXNtcF9j cHVzKTsKKyAgICBmd19jZmdfYWRkX2NhbGxiYWNrKHMsIEZXX0NGR19ST19QQUdFUywgZndfY2Zn X21hcmtfcGFnZV9ybywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90ICop JnJvX3BhZ2UsIHNpemVvZihyb19wYWdlKSk7CiAKICAgICByZWdpc3Rlcl9zYXZldm0oImZ3X2Nm ZyIsIC0xLCAxLCBmd19jZmdfc2F2ZSwgZndfY2ZnX2xvYWQsIHMpOwogICAgIHFlbXVfcmVnaXN0 ZXJfcmVzZXQoZndfY2ZnX3Jlc2V0LCBzKTsKSW5kZXg6IHFlbXUvaHcvZndfY2ZnLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcWVtdS5vcmlnL2h3L2Z3X2NmZy5oCTIwMDgtMDktMDcgMTg6Mzc6MTMuMDAwMDAw MDAwICswMDAwCisrKyBxZW11L2h3L2Z3X2NmZy5oCTIwMDgtMDktMDcgMTg6NTM6MzguMDAwMDAw MDAwICswMDAwCkBAIC04LDYgKzgsNyBAQAogI2RlZmluZSBGV19DRkdfTk9HUkFQSElDICAgICAg ICAweDA0CiAjZGVmaW5lIEZXX0NGR19OQl9DUFVTICAgICAgICAgIDB4MDUKICNkZWZpbmUgRldf Q0ZHX01BQ0hJTkVfSUQgICAgICAgMHgwNgorI2RlZmluZSBGV19DRkdfUk9fUEFHRVMgICAgICAg ICAweDA3CiAjZGVmaW5lIEZXX0NGR19NQVhfRU5UUlkgICAgICAgIDB4MTAKIAogI2RlZmluZSBG V19DRkdfV1JJVEVfQ0hBTk5FTCAgICAweDQwMDAKSW5kZXg6IHFlbXUvZXhlYy5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9leGVjLmMJMjAwOC0wOS0wNyAxODozNzoxMy4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvZXhlYy5jCTIwMDgtMDktMDcgMTg6NTM6MzguMDAwMDAwMDAwICswMDAwCkBA IC00NDksNiArNDQ5LDI0IEBACiAgICAgdGJzID0gcWVtdV9tYWxsb2MoY29kZV9nZW5fbWF4X2Js b2NrcyAqIHNpemVvZihUcmFuc2xhdGlvbkJsb2NrKSk7CiB9CiAKK3ZvaWQgbWFya19wYWdlX3Jv KHVpbnQ2NF90IHBhZ2UpCit7CisgICAgUGh5c1BhZ2VEZXNjICpwOworICAgIHVuc2lnbmVkIGxv bmcgcGQ7CisKKyAgICBwID0gcGh5c19wYWdlX2ZpbmQocGFnZSA+PiBUQVJHRVRfUEFHRV9CSVRT KTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybjsKKworICAgIHBkID0gcC0+cGh5c19vZmZz ZXQ7CisKKyAgICBpZiAoKHBkICYgflRBUkdFVF9QQUdFX01BU0spICE9IElPX01FTV9SQU0gJiYK KyAgICAgICAgKHBkICYgflRBUkdFVF9QQUdFX01BU0spICE9IElPX01FTV9ST00pCisgICAgICAg IHJldHVybjsKKyAgICBwLT5waHlzX29mZnNldCAmPSBUQVJHRVRfUEFHRV9NQVNLOworICAgIHAt PnBoeXNfb2Zmc2V0IHw9IElPX01FTV9ST007Cit9CisKIC8qIE11c3QgYmUgY2FsbGVkIGJlZm9y ZSB1c2luZyB0aGUgUUVNVSBjcHVzLiAndGJfc2l6ZScgaXMgdGhlIHNpemUKICAgIChpbiBieXRl cykgYWxsb2NhdGVkIHRvIHRoZSB0cmFuc2xhdGlvbiBidWZmZXIuIFplcm8gbWVhbnMgZGVmYXVs dAogICAgc2l6ZS4gKi8KSW5kZXg6IHFlbXUvY3B1LWFsbC5oCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy9jcHUtYWxsLmgJMjAwOC0wOS0wNyAxODozNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFl bXUvY3B1LWFsbC5oCTIwMDgtMDktMDcgMTg6NTM6MzguMDAwMDAwMDAwICswMDAwCkBAIC05MjYs NiArOTI2LDkgQEAKIHsKICAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3J3KGFkZHIsICh1aW50OF90 ICopYnVmLCBsZW4sIDEpOwogfQorCit2b2lkIG1hcmtfcGFnZV9ybyh1aW50NjRfdCBwYWdlKTsK KwogdWludDMyX3QgbGR1Yl9waHlzKHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKTsKIHVpbnQzMl90 IGxkdXdfcGh5cyh0YXJnZXRfcGh5c19hZGRyX3QgYWRkcik7CiB1aW50MzJfdCBsZGxfcGh5cyh0 YXJnZXRfcGh5c19hZGRyX3QgYWRkcik7Cg== ------=_Part_88691_1071967.1220813816818--