From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KZn9X-0006VZ-1F for qemu-devel@nongnu.org; Sun, 31 Aug 2008 09:39:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KZn9U-0006VJ-R5 for qemu-devel@nongnu.org; Sun, 31 Aug 2008 09:39:38 -0400 Received: from [199.232.76.173] (port=33169 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KZn9U-0006VG-LS for qemu-devel@nongnu.org; Sun, 31 Aug 2008 09:39:36 -0400 Received: from wf-out-1314.google.com ([209.85.200.173]:55875) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KZn9T-0006Ga-Rl for qemu-devel@nongnu.org; Sun, 31 Aug 2008 09:39:36 -0400 Received: by wf-out-1314.google.com with SMTP id 27so1481661wfd.4 for ; Sun, 31 Aug 2008 06:39:34 -0700 (PDT) Message-ID: Date: Sun, 31 Aug 2008 16:39:34 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] [PATCH v3 1/6] Use IO port for qemu<->guest BIOS communication. In-Reply-To: <20080831130256.GG6192@minantech.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_28925_25939934.1220189974838" References: <20080828165232.22851.77678.stgit@gleb-debian.qumranet.com.qumranet.com> <20080828165237.22851.1532.stgit@gleb-debian.qumranet.com.qumranet.com> <20080829190041.GA18301@minantech.com> <20080831111206.GF6192@minantech.com> <20080831130256.GG6192@minantech.com> 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@nongnu.org ------=_Part_28925_25939934.1220189974838 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 8/31/08, Gleb Natapov wrote: > On Sun, Aug 31, 2008 at 03:45:36PM +0300, Blue Swirl wrote: > > > > I made an updated version of the patch 1/6, with explicit little > > > > endian conversions. I'm not very happy with that. Another way would be > > > > to add functions just to put different size numbers into device and > > > > they would hide the conversion. > > > > > > > > > > So what approach we should go with? We can go with the second one (add > > > functions for each type) and extend interface as needed. > > > > This version adds the functions, now the interface is much better. I > > updated the other patches too. > > > > +static int fw_cfg_select(FWCfgState *s, uint16_t key) > > +{ > > + int ret; > > + > > + s->cur_offset = 0; > > + if ((key & ~FW_CFG_ARCH_LOCAL) >= FW_CFG_MAX_ENTRY) { > > > + s->cur_entry = 0; > Here we select valid entry on incorrect input. Perhaps set 0xffff here > and return 0 on read if cur_entry == 0xffff ? > > > > +static uint8_t fw_cfg_read(FWCfgState *s) > > +{ > > + int arch = !!(s->cur_entry & FW_CFG_ARCH_LOCAL); > > > + FWCfgEntry *e = &s->entries[arch][s->cur_entry]; > This should be: > > FWCfgEntry *e = &s->entries[arch][s->cur_entry & ~FW_CFG_ARCH_LOCAL]; > > > + uint8_t ret; > > + > > > + if (!e || !e->data || s->cur_offset >= e->len) > Like this: > > if (s->cur_entry == 0xffff || !e->data || s->cur_offset >= e->len) > > > + ret = 0; > > + else > > + ret = e->data[s->cur_offset++]; > > + > > + FW_CFG_DPRINTF("read %d\n", ret); > > + > > + return ret; > > +} > > + Right, here's a fixed version. ------=_Part_28925_25939934.1220189974838 Content-Type: plain/text; name=new_fw_abi.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fkjpjpsr Content-Disposition: attachment; filename=new_fw_abi.diff ICAgIFVzZSBJTyBwb3J0IGZvciBxZW11PC0+Z3Vlc3QgQklPUyBjb21tdW5pY2F0aW9uLgogICAg CiAgICBVc2UgUElPIHRvIGdldCBjb25maWd1cmF0aW9uIGluZm8gYmV0d2VlbiBxZW11IHByb2Nl c3MgYW5kIGd1ZXN0IEJJT1MuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEdsZWIgTmF0YXBvdiA8 Z2xlYkBxdW1yYW5ldC5jb20+CgpJbmRleDogcWVtdS9NYWtlZmlsZS50YXJnZXQKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL01ha2VmaWxlLnRhcmdldAkyMDA4LTA4LTMxIDEyOjM0OjUyLjAwMDAw MDAwMCArMDAwMAorKysgcWVtdS9NYWtlZmlsZS50YXJnZXQJMjAwOC0wOC0zMSAxMzoyODo1OC4w MDAwMDAwMDAgKzAwMDAKQEAgLTQ3Myw2ICs0NzMsNyBAQAogaWZuZGVmIENPTkZJR19VU0VSX09O TFkKIAogT0JKUz12bC5vIG9zZGVwLm8gbW9uaXRvci5vIHBjaS5vIGxvYWRlci5vIGlzYV9tbWlv Lm8gbWFjaGluZS5vIG5ldC1jaGVja3N1bS5vCitPQkpTKz1md19jZmcubwogaWZkZWYgQ09ORklH X1dJTjMyCiBPQkpTKz1ibG9jay1yYXctd2luMzIubwogZWxzZQpJbmRleDogcWVtdS9ody9wYy5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9wYy5jCTIwMDgtMDgtMzEgMTI6MzQ6MjguMDAw MDAwMDAwICswMDAwCisrKyBxZW11L2h3L3BjLmMJMjAwOC0wOC0zMSAxMzoyODo1NS4wMDAwMDAw MDAgKzAwMDAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJzbWJ1cy5oIgogI2luY2x1ZGUg ImJvYXJkcy5oIgogI2luY2x1ZGUgImNvbnNvbGUuaCIKKyNpbmNsdWRlICJmd19jZmcuaCIKIAog Lyogb3V0cHV0IEJvY2hzIGJpb3MgaW5mbyBtZXNzYWdlcyAqLwogLy8jZGVmaW5lIERFQlVHX0JJ T1MKQEAgLTQ0LDYgKzQ1LDcgQEAKIAogLyogTGVhdmUgYSBjaHVuayBvZiBtZW1vcnkgYXQgdGhl IHRvcCBvZiBSQU0gZm9yIHRoZSBCSU9TIEFDUEkgdGFibGVzLiAgKi8KICNkZWZpbmUgQUNQSV9E QVRBX1NJWkUgICAgICAgMHgxMDAwMAorI2RlZmluZSBCSU9TX0NGR19JT1BPUlQgMHg1MTAKIAog I2RlZmluZSBNQVhfSURFX0JVUyAyCiAKQEAgLTQxNiw2ICs0MTgsOCBAQAogCiBzdGF0aWMgdm9p ZCBib2Noc19iaW9zX2luaXQodm9pZCkKIHsKKyAgICB2b2lkICpmd19jZmc7CisKICAgICByZWdp c3Rlcl9pb3BvcnRfd3JpdGUoMHg0MDAsIDEsIDIsIGJvY2hzX2Jpb3Nfd3JpdGUsIE5VTEwpOwog ICAgIHJlZ2lzdGVyX2lvcG9ydF93cml0ZSgweDQwMSwgMSwgMiwgYm9jaHNfYmlvc193cml0ZSwg TlVMTCk7CiAgICAgcmVnaXN0ZXJfaW9wb3J0X3dyaXRlKDB4NDAyLCAxLCAxLCBib2Noc19iaW9z X3dyaXRlLCBOVUxMKTsKQEAgLTQyNiw2ICs0MzAsOSBAQAogICAgIHJlZ2lzdGVyX2lvcG9ydF93 cml0ZSgweDUwMiwgMSwgMiwgYm9jaHNfYmlvc193cml0ZSwgTlVMTCk7CiAgICAgcmVnaXN0ZXJf aW9wb3J0X3dyaXRlKDB4NTAwLCAxLCAxLCBib2Noc19iaW9zX3dyaXRlLCBOVUxMKTsKICAgICBy ZWdpc3Rlcl9pb3BvcnRfd3JpdGUoMHg1MDMsIDEsIDEsIGJvY2hzX2Jpb3Nfd3JpdGUsIE5VTEwp OworCisgICAgZndfY2ZnID0gZndfY2ZnX2luaXQoQklPU19DRkdfSU9QT1JULCAwKTsKKyAgICBm d19jZmdfYWRkX2kzMihmd19jZmcsIEZXX0NGR19JRCwgMSk7CiB9CiAKIC8qIEdlbmVyYXRlIGFu IGluaXRpYWwgYm9vdCBzZWN0b3Igd2hpY2ggc2V0cyBzdGF0ZSBhbmQganVtcCB0bwpJbmRleDog cWVtdS9ody9zdW40bS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9zdW40bS5jCTIwMDgt MDgtMzEgMTI6MzQ6MjguMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3N1bjRtLmMJMjAwOC0w OC0zMSAxMzoyODo1NC4wMDAwMDAwMDAgKzAwMDAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl ICJzY3NpLmgiCiAjaW5jbHVkZSAicGMuaCIKICNpbmNsdWRlICJpc2EuaCIKKyNpbmNsdWRlICJm d19jZmcuaCIKIAogLy8jZGVmaW5lIERFQlVHX0lSUQogCkBAIC03OCw2ICs3OSw3IEBACiAjZGVm aW5lIFBST01fU0laRV9NQVggICAgICAgICg1MTIgKiAxMDI0KQogI2RlZmluZSBQUk9NX1ZBRERS ICAgICAgICAgICAweGZmZDAwMDAwCiAjZGVmaW5lIFBST01fRklMRU5BTUUgICAgICAgICJvcGVu Ymlvcy1zcGFyYzMyIgorI2RlZmluZSBDRkdfQUREUiAgICAgICAgICAgICAweGQwMDAwMDUxMFVM TAogCiAvLyBDb250cm9sIHBsYW5lLCA4LWJpdCBhbmQgMjQtYml0IHBsYW5lcwogI2RlZmluZSBU Q1hfU0laRSAgICAgICAgICAgICAoOSAqIDEwMjQgKiAxMDI0KQpAQCAtNDEwLDYgKzQxMiw3IEBA CiAgICAgY2hhciBidWZbMTAyNF07CiAgICAgQmxvY2tEcml2ZXJTdGF0ZSAqZmRbTUFYX0ZEXTsK ICAgICBpbnQgZHJpdmVfaW5kZXg7CisgICAgdm9pZCAqZndfY2ZnOwogCiAgICAgLyogaW5pdCBD UFVzICovCiAgICAgaWYgKCFjcHVfbW9kZWwpCkBAIC01NzAsNiArNTczLDkgQEAKICAgICBpZiAo aHdkZWYtPmVjY19iYXNlICE9ICh0YXJnZXRfcGh5c19hZGRyX3QpLTEpCiAgICAgICAgIGVjY19p bml0KGh3ZGVmLT5lY2NfYmFzZSwgc2xhdmlvX2lycVtod2RlZi0+ZWNjX2lycV0sCiAgICAgICAg ICAgICAgICAgIGh3ZGVmLT5lY2NfdmVyc2lvbik7CisKKyAgICBmd19jZmcgPSBmd19jZmdfaW5p dCgwLCBDRkdfQUREUik7CisgICAgZndfY2ZnX2FkZF9pMzIoZndfY2ZnLCBGV19DRkdfSUQsIDEp OwogfQogCiBzdGF0aWMgdm9pZCBzdW40Y19od19pbml0KGNvbnN0IHN0cnVjdCBod2RlZiAqaHdk ZWYsIHJhbV9hZGRyX3QgUkFNX3NpemUsCkBAIC01ODksNiArNTk1LDcgQEAKICAgICBjaGFyIGJ1 ZlsxMDI0XTsKICAgICBCbG9ja0RyaXZlclN0YXRlICpmZFtNQVhfRkRdOwogICAgIGludCBkcml2 ZV9pbmRleDsKKyAgICB2b2lkICpmd19jZmc7CiAKICAgICAvKiBpbml0IENQVSAqLwogICAgIGlm ICghY3B1X21vZGVsKQpAQCAtNzE1LDYgKzcyMiw5IEBACiAgICAgbnZyYW1faW5pdChudnJhbSwg KHVpbnQ4X3QgKikmbmRfdGFibGVbMF0ubWFjYWRkciwga2VybmVsX2NtZGxpbmUsCiAgICAgICAg ICAgICAgICBib290X2RldmljZSwgUkFNX3NpemUsIGtlcm5lbF9zaXplLCBncmFwaGljX3dpZHRo LAogICAgICAgICAgICAgICAgZ3JhcGhpY19oZWlnaHQsIGdyYXBoaWNfZGVwdGgsIGh3ZGVmLT5t YWNoaW5lX2lkLCAiU3VuNGMiKTsKKworICAgIGZ3X2NmZyA9IGZ3X2NmZ19pbml0KDAsIENGR19B RERSKTsKKyAgICBmd19jZmdfYWRkX2kzMihmd19jZmcsIEZXX0NGR19JRCwgMSk7CiB9CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaHdkZWYgaHdkZWZzW10gPSB7CkBAIC0xNDA1LDYgKzE0MTUsNyBA QAogICAgIGludCByZXQ7CiAgICAgY2hhciBidWZbMTAyNF07CiAgICAgaW50IGRyaXZlX2luZGV4 OworICAgIHZvaWQgKmZ3X2NmZzsKIAogICAgIC8qIGluaXQgQ1BVcyAqLwogICAgIGlmICghY3B1 X21vZGVsKQpAQCAtMTUyOCw2ICsxNTM5LDkgQEAKICAgICBudnJhbV9pbml0KG52cmFtLCAodWlu dDhfdCAqKSZuZF90YWJsZVswXS5tYWNhZGRyLCBrZXJuZWxfY21kbGluZSwKICAgICAgICAgICAg ICAgIGJvb3RfZGV2aWNlLCBSQU1fc2l6ZSwga2VybmVsX3NpemUsIGdyYXBoaWNfd2lkdGgsCiAg ICAgICAgICAgICAgICBncmFwaGljX2hlaWdodCwgZ3JhcGhpY19kZXB0aCwgaHdkZWYtPm1hY2hp bmVfaWQsICJTdW40ZCIpOworCisgICAgZndfY2ZnID0gZndfY2ZnX2luaXQoMCwgQ0ZHX0FERFIp OworICAgIGZ3X2NmZ19hZGRfaTMyKGZ3X2NmZywgRldfQ0ZHX0lELCAxKTsKIH0KIAogLyogU1BB UkNzZXJ2ZXIgMTAwMCBoYXJkd2FyZSBpbml0aWFsaXNhdGlvbiAqLwpJbmRleDogcWVtdS9ody9z dW40dS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9zdW40dS5jCTIwMDgtMDgtMzEgMTI6 MzQ6MjguMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3N1bjR1LmMJMjAwOC0wOC0zMSAxMzoy ODo1NC4wMDAwMDAwMDAgKzAwMDAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJzeXNlbXUu aCIKICNpbmNsdWRlICJib2FyZHMuaCIKICNpbmNsdWRlICJmaXJtd2FyZV9hYmkuaCIKKyNpbmNs dWRlICJmd19jZmcuaCIKIAogI2RlZmluZSBLRVJORUxfTE9BRF9BRERSICAgICAweDAwNDA0MDAw CiAjZGVmaW5lIENNRExJTkVfQUREUiAgICAgICAgIDB4MDAzZmYwMDAKQEAgLTQ0LDYgKzQ1LDcg QEAKICNkZWZpbmUgUFJPTV9GSUxFTkFNRSAgICAgICAgIm9wZW5iaW9zLXNwYXJjNjQiCiAjZGVm aW5lIE5WUkFNX1NJWkUgICAgICAgICAgIDB4MjAwMAogI2RlZmluZSBNQVhfSURFX0JVUyAgICAg ICAgICAyCisjZGVmaW5lIEJJT1NfQ0ZHX0lPUE9SVCAgICAgIDB4NTEwCiAKIHN0cnVjdCBod2Rl ZiB7CiAgICAgY29uc3QgY2hhciAqIGNvbnN0IGRlZmF1bHRfY3B1X21vZGVsOwpAQCAtMjcwLDYg KzI3Miw3IEBACiAgICAgaW50IGRyaXZlX2luZGV4OwogICAgIEJsb2NrRHJpdmVyU3RhdGUgKmhk W01BWF9JREVfQlVTICogTUFYX0lERV9ERVZTXTsKICAgICBCbG9ja0RyaXZlclN0YXRlICpmZFtN QVhfRkRdOworICAgIHZvaWQgKmZ3X2NmZzsKIAogICAgIGxpbnV4X2Jvb3QgPSAoa2VybmVsX2Zp bGVuYW1lICE9IE5VTEwpOwogCkBAIC00MTUsNiArNDE4LDggQEAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdyYXBoaWNfd2lkdGgsIGdyYXBoaWNfaGVpZ2h0LCBncmFwaGljX2RlcHRoLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QgKikmbmRfdGFibGVbMF0ubWFjYWRk cik7CiAKKyAgICBmd19jZmcgPSBmd19jZmdfaW5pdChCSU9TX0NGR19JT1BPUlQsIDApOworICAg IGZ3X2NmZ19hZGRfaTMyKGZ3X2NmZywgRldfQ0ZHX0lELCAxKTsKIH0KIAogc3RhdGljIGNvbnN0 IHN0cnVjdCBod2RlZiBod2RlZnNbXSA9IHsKSW5kZXg6IHFlbXUvaHcvZndfY2ZnLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisr KyBxZW11L2h3L2Z3X2NmZy5jCTIwMDgtMDgtMzEgMTM6MzU6MjcuMDAwMDAwMDAwICswMDAwCkBA IC0wLDAgKzEsMjIwIEBACisvKgorICogUUVNVSBGaXJtd2FyZSBjb25maWd1cmF0aW9uIGRldmlj ZSBlbXVsYXRpb24KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDggR2xlYiBOYXRhcG92CisgKgor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKyAqIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uIHRoZSByaWdodHMKKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICog ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorICogVEhFIFNPRlRX QVJFLgorICovCisjaW5jbHVkZSAiaHcuaCIKKyNpbmNsdWRlICJpc2EuaCIKKyNpbmNsdWRlICJm d19jZmcuaCIKKworLyogZGVidWcgZmlybXdhcmUgY29uZmlnICovCisvLyNkZWZpbmUgREVCVUdf RldfQ0ZHCisKKyNpZmRlZiBERUJVR19GV19DRkcKKyNkZWZpbmUgRldfQ0ZHX0RQUklOVEYoZm10 LCBhcmdzLi4uKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7IHByaW50ZigiRldfQ0ZH OiAiIGZtdCAsICMjYXJncyk7IH0gd2hpbGUgKDApCisjZWxzZQorI2RlZmluZSBGV19DRkdfRFBS SU5URihmbXQsIGFyZ3MuLi4pCisjZW5kaWYKKworI2RlZmluZSBGV19DRkdfU0laRSAyCisKK3R5 cGVkZWYgc3RydWN0IF9GV0NmZ0VudHJ5IHsKKyAgICB1aW50MTZfdCBsZW47CisgICAgY29uc3Qg dWludDhfdCAqZGF0YTsKK30gRldDZmdFbnRyeTsKKwordHlwZWRlZiBzdHJ1Y3QgX0ZXQ2ZnU3Rh dGUgeworICAgIEZXQ2ZnRW50cnkgZW50cmllc1syXVtGV19DRkdfTUFYX0VOVFJZXTsKKyAgICB1 aW50MTZfdCBjdXJfZW50cnk7CisgICAgdWludDE2X3QgY3VyX29mZnNldDsKK30gRldDZmdTdGF0 ZTsKKworc3RhdGljIGludCBmd19jZmdfc2VsZWN0KEZXQ2ZnU3RhdGUgKnMsIHVpbnQxNl90IGtl eSkKK3sKKyAgICBpbnQgcmV0OworCisgICAgcy0+Y3VyX29mZnNldCA9IDA7CisgICAgaWYgKChr ZXkgJiB+RldfQ0ZHX0FSQ0hfTE9DQUwpID49IEZXX0NGR19NQVhfRU5UUlkpIHsKKyAgICAgICAg cy0+Y3VyX2VudHJ5ID0gRldfQ0ZHX0lOVkFMSUQ7CisgICAgICAgIHJldCA9IDA7CisgICAgfSBl bHNlIHsKKyAgICAgICAgcy0+Y3VyX2VudHJ5ID0ga2V5OworICAgICAgICByZXQgPSAxOworICAg IH0KKworICAgIEZXX0NGR19EUFJJTlRGKCJzZWxlY3Qga2V5ICVkICglc2ZvdW5kKVxuIiwga2V5 LCByZXQgPyAiIiA6ICJub3QgIik7CisKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdWlu dDhfdCBmd19jZmdfcmVhZChGV0NmZ1N0YXRlICpzKQoreworICAgIGludCBhcmNoID0gISEocy0+ Y3VyX2VudHJ5ICYgRldfQ0ZHX0FSQ0hfTE9DQUwpOworICAgIEZXQ2ZnRW50cnkgKmUgPSAmcy0+ ZW50cmllc1thcmNoXVtzLT5jdXJfZW50cnkgJiB+RldfQ0ZHX0FSQ0hfTE9DQUxdOworICAgIHVp bnQ4X3QgcmV0OworCisgICAgaWYgKHMtPmN1cl9lbnRyeSAhPSBGV19DRkdfSU5WQUxJRCB8fCAh ZS0+ZGF0YSB8fCBzLT5jdXJfb2Zmc2V0ID49IGUtPmxlbikKKyAgICAgICAgcmV0ID0gMDsKKyAg ICBlbHNlCisgICAgICAgIHJldCA9IGUtPmRhdGFbcy0+Y3VyX29mZnNldCsrXTsKKworICAgIEZX X0NGR19EUFJJTlRGKCJyZWFkICVkXG4iLCByZXQpOworCisgICAgcmV0dXJuIHJldDsKK30KKwor c3RhdGljIHVpbnQzMl90IGZ3X2NmZ19pb19yZWFkYih2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFk ZHIpCit7CisgICAgcmV0dXJuIGZ3X2NmZ19yZWFkKG9wYXF1ZSk7Cit9CisKK3N0YXRpYyB2b2lk IGZ3X2NmZ19pb193cml0ZXcodm9pZCAqb3BhcXVlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2 YWx1ZSkKK3sKKyAgICBmd19jZmdfc2VsZWN0KG9wYXF1ZSwgKHVpbnQxNl90KXZhbHVlKTsKK30K Kworc3RhdGljIHVpbnQzMl90IGZ3X2NmZ19tZW1fcmVhZGIodm9pZCAqb3BhcXVlLCB0YXJnZXRf cGh5c19hZGRyX3QgYWRkcikKK3sKKyAgICByZXR1cm4gZndfY2ZnX3JlYWQob3BhcXVlKTsKK30K Kworc3RhdGljIHZvaWQgZndfY2ZnX21lbV93cml0ZXcodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZh bHVlKQoreworICAgIGZ3X2NmZ19zZWxlY3Qob3BhcXVlLCAodWludDE2X3QpdmFsdWUpOworfQor CitzdGF0aWMgQ1BVUmVhZE1lbW9yeUZ1bmMgKmZ3X2NmZ19tZW1fcmVhZFszXSA9IHsKKyAgICBm d19jZmdfbWVtX3JlYWRiLAorICAgIE5VTEwsCisgICAgTlVMTCwKK307CisKK3N0YXRpYyBDUFVX cml0ZU1lbW9yeUZ1bmMgKmZ3X2NmZ19tZW1fd3JpdGVbM10gPSB7CisgICAgTlVMTCwKKyAgICBm d19jZmdfbWVtX3dyaXRldywKKyAgICBOVUxMLAorfTsKKworc3RhdGljIHZvaWQgZndfY2ZnX3Jl c2V0KHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBGV0NmZ1N0YXRlICpzID0gb3BhcXVlOworCisgICAg ZndfY2ZnX3NlbGVjdChzLCAwKTsKK30KKworc3RhdGljIHZvaWQgZndfY2ZnX3NhdmUoUUVNVUZp bGUgKmYsIHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBGV0NmZ1N0YXRlICpzID0gb3BhcXVlOworCisg ICAgcWVtdV9wdXRfYmUxNnMoZiwgJnMtPmN1cl9lbnRyeSk7CisgICAgcWVtdV9wdXRfYmUxNnMo ZiwgJnMtPmN1cl9vZmZzZXQpOworfQorCitzdGF0aWMgaW50IGZ3X2NmZ19sb2FkKFFFTVVGaWxl ICpmLCB2b2lkICpvcGFxdWUsIGludCB2ZXJzaW9uX2lkKQoreworICAgIEZXQ2ZnU3RhdGUgKnMg PSBvcGFxdWU7CisKKyAgICBpZiAodmVyc2lvbl9pZCA+IDEpCisgICAgICAgIHJldHVybiAtRUlO VkFMOworCisgICAgcWVtdV9nZXRfYmUxNnMoZiwgJnMtPmN1cl9lbnRyeSk7CisgICAgcWVtdV9n ZXRfYmUxNnMoZiwgJnMtPmN1cl9vZmZzZXQpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBm d19jZmdfYWRkX2J5dGVzKHZvaWQgKm9wYXF1ZSwgdWludDE2X3Qga2V5LCBjb25zdCB1aW50OF90 ICpkYXRhLCB1aW50MTZfdCBsZW4pCit7CisgICAgRldDZmdTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAg ICBpbnQgYXJjaCA9ICEhKGtleSAmIEZXX0NGR19BUkNIX0xPQ0FMKTsKKworICAgIGtleSAmPSAo fkZXX0NGR19BUkNIX0xPQ0FMKTsKKworICAgIGlmIChrZXkgPj0gRldfQ0ZHX01BWF9FTlRSWSkK KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzLT5lbnRyaWVzW2FyY2hdW2tleV0uZGF0YSA9IGRh dGE7CisgICAgcy0+ZW50cmllc1thcmNoXVtrZXldLmxlbiA9IGxlbjsKKworICAgIHJldHVybiAx OworfQorCitpbnQgZndfY2ZnX2FkZF9pMTYodm9pZCAqb3BhcXVlLCB1aW50MTZfdCBrZXksIHVp bnQxNl90IHZhbHVlKQoreworICAgIHVpbnQxNl90ICpjb3B5OworCisgICAgY29weSA9IHFlbXVf bWFsbG9jKHNpemVvZih2YWx1ZSkpOworICAgIGlmICghY29weSkKKyAgICAgICAgcmV0dXJuIDA7 CisgICAgKmNvcHkgPSBjcHVfdG9fbGUxNih2YWx1ZSk7CisgICAgcmV0dXJuIGZ3X2NmZ19hZGRf Ynl0ZXMob3BhcXVlLCBrZXksICh1aW50OF90ICopY29weSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisK K2ludCBmd19jZmdfYWRkX2kzMih2b2lkICpvcGFxdWUsIHVpbnQxNl90IGtleSwgdWludDMyX3Qg dmFsdWUpCit7CisgICAgdWludDMyX3QgKmNvcHk7CisKKyAgICBjb3B5ID0gcWVtdV9tYWxsb2Mo c2l6ZW9mKHZhbHVlKSk7CisgICAgaWYgKCFjb3B5KQorICAgICAgICByZXR1cm4gMDsKKyAgICAq Y29weSA9IGNwdV90b19sZTMyKHZhbHVlKTsKKyAgICByZXR1cm4gZndfY2ZnX2FkZF9ieXRlcyhv cGFxdWUsIGtleSwgKHVpbnQ4X3QgKiljb3B5LCBzaXplb2YodmFsdWUpKTsKK30KKworaW50IGZ3 X2NmZ19hZGRfaTY0KHZvaWQgKm9wYXF1ZSwgdWludDE2X3Qga2V5LCB1aW50NjRfdCB2YWx1ZSkK K3sKKyAgICB1aW50NjRfdCAqY29weTsKKworICAgIGNvcHkgPSBxZW11X21hbGxvYyhzaXplb2Yo dmFsdWUpKTsKKyAgICBpZiAoIWNvcHkpCisgICAgICAgIHJldHVybiAwOworICAgICpjb3B5ID0g Y3B1X3RvX2xlNjQodmFsdWUpOworICAgIHJldHVybiBmd19jZmdfYWRkX2J5dGVzKG9wYXF1ZSwg a2V5LCAodWludDhfdCAqKWNvcHksIHNpemVvZih2YWx1ZSkpOworfQorCit2b2lkICpmd19jZmdf aW5pdCh1aW50MzJfdCBwb3J0LCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKK3sKKyAgICBGV0Nm Z1N0YXRlICpzOworICAgIGludCBpb19tZW1vcnk7CisKKyAgICBzID0gcWVtdV9tYWxsb2N6KHNp emVvZihGV0NmZ1N0YXRlKSk7CisgICAgaWYgKCFzKQorICAgICAgICByZXR1cm4gTlVMTDsKKwor ICAgIGlmIChwb3J0KSB7CisgICAgICAgIHJlZ2lzdGVyX2lvcG9ydF9yZWFkKHBvcnQsIDEsIDEs IGZ3X2NmZ19pb19yZWFkYiwgcyk7CisgICAgICAgIHJlZ2lzdGVyX2lvcG9ydF93cml0ZShwb3J0 LCAyLCAyLCBmd19jZmdfaW9fd3JpdGV3LCBzKTsKKyAgICB9CisgICAgaWYgKGFkZHIpIHsKKyAg ICAgICAgaW9fbWVtb3J5ID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBmd19jZmdfbWVtX3Jl YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZndfY2ZnX21l bV93cml0ZSwgcyk7CisgICAgICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoYWRkciwg RldfQ0ZHX1NJWkUsIGlvX21lbW9yeSk7CisKKyAgICB9CisgICAgZndfY2ZnX2FkZF9ieXRlcyhz LCBGV19DRkdfU0lHTkFUVVJFLCAodWludDhfdCAqKSJRRU1VIiwgNCk7CisgICAgcmVnaXN0ZXJf c2F2ZXZtKCJmd19jZmciLCAtMSwgMSwgZndfY2ZnX3NhdmUsIGZ3X2NmZ19sb2FkLCBzKTsKKyAg ICBxZW11X3JlZ2lzdGVyX3Jlc2V0KGZ3X2NmZ19yZXNldCwgcyk7CisgICAgZndfY2ZnX3Jlc2V0 KHMpOworCisgICAgcmV0dXJuIHM7Cit9CkluZGV4OiBxZW11L2h3L2Z3X2NmZy5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysg cWVtdS9ody9md19jZmcuaAkyMDA4LTA4LTMxIDEzOjM0OjU2LjAwMDAwMDAwMCArMDAwMApAQCAt MCwwICsxLDIxIEBACisjaWZuZGVmIEZXX0NGR19ICisjZGVmaW5lIEZXX0NGR19ICisKKyNkZWZp bmUgRldfQ0ZHX1NJR05BVFVSRSAgICAgICAgMHgwMAorI2RlZmluZSBGV19DRkdfSUQgICAgICAg ICAgICAgICAweDAxCisjZGVmaW5lIEZXX0NGR19NQVhfRU5UUlkgICAgICAgIDB4MTAKKworI2Rl ZmluZSBGV19DRkdfQVJDSF9MT0NBTCAgICAgICAweDgwMDAKKworI2RlZmluZSBGV19DRkdfSU5W QUxJRCAgICAgICAgICAweGZmZmYKKworI2lmbmRlZiBOT19RRU1VX1BST1RPUworaW50IGZ3X2Nm Z19hZGRfYnl0ZXModm9pZCAqb3BhcXVlLCB1aW50MTZfdCBrZXksIGNvbnN0IHVpbnQ4X3QgKmRh dGEsCisgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBsZW4pOworaW50IGZ3X2NmZ19hZGRf aTE2KHZvaWQgKm9wYXF1ZSwgdWludDE2X3Qga2V5LCB1aW50MTZfdCB2YWx1ZSk7CitpbnQgZndf Y2ZnX2FkZF9pMzIodm9pZCAqb3BhcXVlLCB1aW50MTZfdCBrZXksIHVpbnQzMl90IHZhbHVlKTsK K2ludCBmd19jZmdfYWRkX2k2NCh2b2lkICpvcGFxdWUsIHVpbnQxNl90IGtleSwgdWludDY0X3Qg dmFsdWUpOwordm9pZCAqZndfY2ZnX2luaXQodWludDMyX3QgcG9ydCwgdGFyZ2V0X3BoeXNfYWRk cl90IGFkZHIpOworI2VuZGlmIC8qIE5PX1FFTVVfUFJPVE9TICovCisKKyNlbmRpZgo= ------=_Part_28925_25939934.1220189974838--