From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KYOXq-0000Fx-8d for qemu-devel@nongnu.org; Wed, 27 Aug 2008 13:10:58 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KYOXo-0000FN-M3 for qemu-devel@nongnu.org; Wed, 27 Aug 2008 13:10:57 -0400 Received: from [199.232.76.173] (port=44527 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KYOXo-0000FK-Gb for qemu-devel@nongnu.org; Wed, 27 Aug 2008 13:10:56 -0400 Received: from wf-out-1314.google.com ([209.85.200.173]:33740) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KYOXn-000633-Fo for qemu-devel@nongnu.org; Wed, 27 Aug 2008 13:10:56 -0400 Received: by wf-out-1314.google.com with SMTP id 27so2829263wfd.4 for ; Wed, 27 Aug 2008 10:10:50 -0700 (PDT) Message-ID: Date: Wed, 27 Aug 2008 20:10:49 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] [PATCH v2 1/6] Use IO port for qemu<->guest BIOS communication. In-Reply-To: <20080827110522.GX6192@minantech.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_27730_15397805.1219857050126" References: <20080825095800.18703.30602.stgit@gleb-debian.qumranet.com.qumranet.com> <20080825095805.18703.63202.stgit@gleb-debian.qumranet.com.qumranet.com> <48B2C0A1.7040309@codemonkey.ws> <20080825144026.GQ6192@minantech.com> <48B2F373.1020606@codemonkey.ws> <20080826082453.GV6192@minantech.com> <20080827110522.GX6192@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 ------=_Part_27730_15397805.1219857050126 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 8/27/08, Gleb Natapov wrote: > > On Tue, Aug 26, 2008 at 07:46:20PM +0300, Blue Swirl wrote: > > > Is the patch below what you mean? (not tested, but compiles) > > > > Yes, but I'd still put the code from the .h file and pc.c to a new .c > > file, only the keys and function prototypes to .h. > > > > Okey, here is updated one (compiled only) I added some missing pieces like static/const keywords, device save/load and reset, MMIO and Sparc32/64 support. I also renamed some names for consistency. ------=_Part_27730_15397805.1219857050126 Content-Type: plain/text; name=new_fw_abi.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fke75wla Content-Disposition: attachment; filename=new_fw_abi.diff ICAgIFVzZSBJTyBwb3J0IGZvciBxZW11PC0+Z3Vlc3QgQklPUyBjb21tdW5pY2F0aW9uLgogICAg CiAgICBVc2UgUElPIHRvIGdldCBjb25maWd1cmF0aW9uIGluZm8gYmV0d2VlbiBxZW11IHByb2Nl c3MgYW5kIGd1ZXN0IEJJT1MuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEdsZWIgTmF0YXBvdiA8 Z2xlYkBxdW1yYW5ldC5jb20+CgpJbmRleDogcWVtdS9NYWtlZmlsZS50YXJnZXQKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL01ha2VmaWxlLnRhcmdldAkyMDA4LTA4LTI3IDE1OjIxOjEwLjAwMDAw MDAwMCArMDAwMAorKysgcWVtdS9NYWtlZmlsZS50YXJnZXQJMjAwOC0wOC0yNyAxNjo0NDowMC4w MDAwMDAwMDAgKzAwMDAKQEAgLTQ3Myw2ICs0NzMsNyBAQAogaWZuZGVmIENPTkZJR19VU0VSX09O TFkKIAogT0JKUz12bC5vIG9zZGVwLm8gbW9uaXRvci5vIHBjaS5vIGxvYWRlci5vIGlzYV9tbWlv Lm8gbWFjaGluZS5vIG5ldC1jaGVja3N1bS5vCitPQkpTKz1md19jZmcubwogaWZkZWYgQ09ORklH X1dJTjMyCiBPQkpTKz1ibG9jay1yYXctd2luMzIubwogZWxzZQpJbmRleDogcWVtdS9ody9wYy5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9wYy5jCTIwMDgtMDgtMjMgMDU6NTc6MjAuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L2h3L3BjLmMJMjAwOC0wOC0yNyAxNjo1MzoyMy4wMDAwMDAw MDAgKzAwMDAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJzbWJ1cy5oIgogI2luY2x1ZGUg ImJvYXJkcy5oIgogI2luY2x1ZGUgImNvbnNvbGUuaCIKKyNpbmNsdWRlICJmd19jZmcuaCIKIAog Lyogb3V0cHV0IEJvY2hzIGJpb3MgaW5mbyBtZXNzYWdlcyAqLwogLy8jZGVmaW5lIERFQlVHX0JJ T1MKQEAgLTQ0LDYgKzQ1LDcgQEAKIAogLyogTGVhdmUgYSBjaHVuayBvZiBtZW1vcnkgYXQgdGhl IHRvcCBvZiBSQU0gZm9yIHRoZSBCSU9TIEFDUEkgdGFibGVzLiAgKi8KICNkZWZpbmUgQUNQSV9E QVRBX1NJWkUgICAgICAgMHgxMDAwMAorI2RlZmluZSBCSU9TX0NGR19JT1BPUlQgMHg1MTAKIAog I2RlZmluZSBNQVhfSURFX0JVUyAyCiAKQEAgLTQxNiw2ICs0MTgsOSBAQAogCiBzdGF0aWMgdm9p ZCBib2Noc19iaW9zX2luaXQodm9pZCkKIHsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgYmlv c19jZmdfaWQgPSAxOworICAgIHZvaWQgKmZ3X2NmZzsKKwogICAgIHJlZ2lzdGVyX2lvcG9ydF93 cml0ZSgweDQwMCwgMSwgMiwgYm9jaHNfYmlvc193cml0ZSwgTlVMTCk7CiAgICAgcmVnaXN0ZXJf aW9wb3J0X3dyaXRlKDB4NDAxLCAxLCAyLCBib2Noc19iaW9zX3dyaXRlLCBOVUxMKTsKICAgICBy ZWdpc3Rlcl9pb3BvcnRfd3JpdGUoMHg0MDIsIDEsIDEsIGJvY2hzX2Jpb3Nfd3JpdGUsIE5VTEwp OwpAQCAtNDI2LDYgKzQzMSwxMCBAQAogICAgIHJlZ2lzdGVyX2lvcG9ydF93cml0ZSgweDUwMiwg MSwgMiwgYm9jaHNfYmlvc193cml0ZSwgTlVMTCk7CiAgICAgcmVnaXN0ZXJfaW9wb3J0X3dyaXRl KDB4NTAwLCAxLCAxLCBib2Noc19iaW9zX3dyaXRlLCBOVUxMKTsKICAgICByZWdpc3Rlcl9pb3Bv cnRfd3JpdGUoMHg1MDMsIDEsIDEsIGJvY2hzX2Jpb3Nfd3JpdGUsIE5VTEwpOworCisgICAgZndf Y2ZnID0gZndfY2ZnX2luaXQoQklPU19DRkdfSU9QT1JULCAwKTsKKyAgICBmd19jZmdfYWRkKGZ3 X2NmZywgRldfQ0ZHX0lELCAodWludDhfdCAqKSZiaW9zX2NmZ19pZCwKKyAgICAgICAgICAgICAg IHNpemVvZihiaW9zX2NmZ19pZCkpOwogfQogCiAvKiBHZW5lcmF0ZSBhbiBpbml0aWFsIGJvb3Qg c2VjdG9yIHdoaWNoIHNldHMgc3RhdGUgYW5kIGp1bXAgdG8KSW5kZXg6IHFlbXUvaHcvc3VuNG0u Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNG0uYwkyMDA4LTA4LTI3IDE1OjU1OjU0 LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9zdW40bS5jCTIwMDgtMDgtMjcgMTY6NDQ6MzQu MDAwMDAwMDAwICswMDAwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAic2NzaS5oIgogI2lu Y2x1ZGUgInBjLmgiCiAjaW5jbHVkZSAiaXNhLmgiCisjaW5jbHVkZSAiZndfY2ZnLmgiCiAKIC8v I2RlZmluZSBERUJVR19JUlEKIApAQCAtNzgsNiArNzksNyBAQAogI2RlZmluZSBQUk9NX1NJWkVf TUFYICAgICAgICAoNTEyICogMTAyNCkKICNkZWZpbmUgUFJPTV9WQUREUiAgICAgICAgICAgMHhm ZmQwMDAwMAogI2RlZmluZSBQUk9NX0ZJTEVOQU1FICAgICAgICAib3BlbmJpb3Mtc3BhcmMzMiIK KyNkZWZpbmUgQ0ZHX0FERFIgICAgICAgICAgICAgMHhkMDAwMDEyMzRVTEwKIAogLy8gQ29udHJv bCBwbGFuZSwgOC1iaXQgYW5kIDI0LWJpdCBwbGFuZXMKICNkZWZpbmUgVENYX1NJWkUgICAgICAg ICAgICAgKDkgKiAxMDI0ICogMTAyNCkKQEAgLTQxMCw2ICs0MTIsOCBAQAogICAgIGNoYXIgYnVm WzEwMjRdOwogICAgIEJsb2NrRHJpdmVyU3RhdGUgKmZkW01BWF9GRF07CiAgICAgaW50IGRyaXZl X2luZGV4OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBiaW9zX2NmZ19pZCA9IDE7CisgICAg dm9pZCAqZndfY2ZnOwogCiAgICAgLyogaW5pdCBDUFVzICovCiAgICAgaWYgKCFjcHVfbW9kZWwp CkBAIC01NzAsNiArNTc0LDEwIEBACiAgICAgaWYgKGh3ZGVmLT5lY2NfYmFzZSAhPSAodGFyZ2V0 X3BoeXNfYWRkcl90KS0xKQogICAgICAgICBlY2NfaW5pdChod2RlZi0+ZWNjX2Jhc2UsIHNsYXZp b19pcnFbaHdkZWYtPmVjY19pcnFdLAogICAgICAgICAgICAgICAgICBod2RlZi0+ZWNjX3ZlcnNp b24pOworCisgICAgZndfY2ZnID0gZndfY2ZnX2luaXQoMCwgQ0ZHX0FERFIpOworICAgIGZ3X2Nm Z19hZGQoZndfY2ZnLCBGV19DRkdfSUQsICh1aW50OF90ICopJmJpb3NfY2ZnX2lkLAorICAgICAg ICAgICAgICAgc2l6ZW9mKGJpb3NfY2ZnX2lkKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHN1bjRjX2h3 X2luaXQoY29uc3Qgc3RydWN0IGh3ZGVmICpod2RlZiwgcmFtX2FkZHJfdCBSQU1fc2l6ZSwKQEAg LTU4OSw2ICs1OTcsOCBAQAogICAgIGNoYXIgYnVmWzEwMjRdOwogICAgIEJsb2NrRHJpdmVyU3Rh dGUgKmZkW01BWF9GRF07CiAgICAgaW50IGRyaXZlX2luZGV4OworICAgIHN0YXRpYyBjb25zdCB1 aW50MzJfdCBiaW9zX2NmZ19pZCA9IDE7CisgICAgdm9pZCAqZndfY2ZnOwogCiAgICAgLyogaW5p dCBDUFUgKi8KICAgICBpZiAoIWNwdV9tb2RlbCkKQEAgLTcxNSw2ICs3MjUsMTAgQEAKICAgICBu dnJhbV9pbml0KG52cmFtLCAodWludDhfdCAqKSZuZF90YWJsZVswXS5tYWNhZGRyLCBrZXJuZWxf Y21kbGluZSwKICAgICAgICAgICAgICAgIGJvb3RfZGV2aWNlLCBSQU1fc2l6ZSwga2VybmVsX3Np emUsIGdyYXBoaWNfd2lkdGgsCiAgICAgICAgICAgICAgICBncmFwaGljX2hlaWdodCwgZ3JhcGhp Y19kZXB0aCwgaHdkZWYtPm1hY2hpbmVfaWQsICJTdW40YyIpOworCisgICAgZndfY2ZnID0gZndf Y2ZnX2luaXQoMCwgQ0ZHX0FERFIpOworICAgIGZ3X2NmZ19hZGQoZndfY2ZnLCBGV19DRkdfSUQs ICh1aW50OF90ICopJmJpb3NfY2ZnX2lkLAorICAgICAgICAgICAgICAgc2l6ZW9mKGJpb3NfY2Zn X2lkKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHdkZWYgaHdkZWZzW10gPSB7CkBAIC0x NDA1LDYgKzE0MTksOCBAQAogICAgIGludCByZXQ7CiAgICAgY2hhciBidWZbMTAyNF07CiAgICAg aW50IGRyaXZlX2luZGV4OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBiaW9zX2NmZ19pZCA9 IDE7CisgICAgdm9pZCAqZndfY2ZnOwogCiAgICAgLyogaW5pdCBDUFVzICovCiAgICAgaWYgKCFj cHVfbW9kZWwpCkBAIC0xNTI4LDYgKzE1NDQsMTAgQEAKICAgICBudnJhbV9pbml0KG52cmFtLCAo dWludDhfdCAqKSZuZF90YWJsZVswXS5tYWNhZGRyLCBrZXJuZWxfY21kbGluZSwKICAgICAgICAg ICAgICAgIGJvb3RfZGV2aWNlLCBSQU1fc2l6ZSwga2VybmVsX3NpemUsIGdyYXBoaWNfd2lkdGgs CiAgICAgICAgICAgICAgICBncmFwaGljX2hlaWdodCwgZ3JhcGhpY19kZXB0aCwgaHdkZWYtPm1h Y2hpbmVfaWQsICJTdW40ZCIpOworCisgICAgZndfY2ZnID0gZndfY2ZnX2luaXQoMCwgQ0ZHX0FE RFIpOworICAgIGZ3X2NmZ19hZGQoZndfY2ZnLCBGV19DRkdfSUQsICh1aW50OF90ICopJmJpb3Nf Y2ZnX2lkLAorICAgICAgICAgICAgICAgc2l6ZW9mKGJpb3NfY2ZnX2lkKSk7CiB9CiAKIC8qIFNQ QVJDc2VydmVyIDEwMDAgaGFyZHdhcmUgaW5pdGlhbGlzYXRpb24gKi8KSW5kZXg6IHFlbXUvaHcv c3VuNHUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNHUuYwkyMDA4LTA4LTI3IDE1 OjU1OjU3LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9zdW40dS5jCTIwMDgtMDgtMjcgMTY6 NTA6MjcuMDAwMDAwMDAwICswMDAwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAic3lzZW11 LmgiCiAjaW5jbHVkZSAiYm9hcmRzLmgiCiAjaW5jbHVkZSAiZmlybXdhcmVfYWJpLmgiCisjaW5j bHVkZSAiZndfY2ZnLmgiCiAKICNkZWZpbmUgS0VSTkVMX0xPQURfQUREUiAgICAgMHgwMDQwNDAw MAogI2RlZmluZSBDTURMSU5FX0FERFIgICAgICAgICAweDAwM2ZmMDAwCkBAIC00NCw2ICs0NSw3 IEBACiAjZGVmaW5lIFBST01fRklMRU5BTUUgICAgICAgICJvcGVuYmlvcy1zcGFyYzY0IgogI2Rl ZmluZSBOVlJBTV9TSVpFICAgICAgICAgICAweDIwMDAKICNkZWZpbmUgTUFYX0lERV9CVVMgICAg ICAgICAgMgorI2RlZmluZSBDRkdfQUREUiAgICAgICAgICAgICAweDFmZTAwNDAwMTIzNFVMTAog CiBzdHJ1Y3QgaHdkZWYgewogICAgIGNvbnN0IGNoYXIgKiBjb25zdCBkZWZhdWx0X2NwdV9tb2Rl bDsKQEAgLTI3MCw2ICsyNzIsOCBAQAogICAgIGludCBkcml2ZV9pbmRleDsKICAgICBCbG9ja0Ry aXZlclN0YXRlICpoZFtNQVhfSURFX0JVUyAqIE1BWF9JREVfREVWU107CiAgICAgQmxvY2tEcml2 ZXJTdGF0ZSAqZmRbTUFYX0ZEXTsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgYmlvc19jZmdf aWQgPSAxOworICAgIHZvaWQgKmZ3X2NmZzsKIAogICAgIGxpbnV4X2Jvb3QgPSAoa2VybmVsX2Zp bGVuYW1lICE9IE5VTEwpOwogCkBAIC00MTUsNiArNDE5LDkgQEAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdyYXBoaWNfd2lkdGgsIGdyYXBoaWNfaGVpZ2h0LCBncmFwaGljX2RlcHRoLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QgKikmbmRfdGFibGVbMF0ubWFjYWRk cik7CiAKKyAgICBmd19jZmcgPSBmd19jZmdfaW5pdCgwLCBDRkdfQUREUik7CisgICAgZndfY2Zn X2FkZChmd19jZmcsIEZXX0NGR19JRCwgKHVpbnQ4X3QgKikmYmlvc19jZmdfaWQsCisgICAgICAg ICAgICAgICBzaXplb2YoYmlvc19jZmdfaWQpKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBo d2RlZiBod2RlZnNbXSA9IHsKSW5kZXg6IHFlbXUvaHcvZndfY2ZnLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3 L2Z3X2NmZy5jCTIwMDgtMDgtMjcgMTc6MDI6MTEuMDAwMDAwMDAwICswMDAwCkBAIC0wLDAgKzEs MTk5IEBACisvKgorICogUUVNVSBGaXJtd2FyZSBjb25maWd1cmF0aW9uIGRldmljZSBlbXVsYXRp b24KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDggR2xlYiBOYXRhcG92CisgKgorICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKyAqIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy aWdodHMKKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs bCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorICogVEhFIFNPRlRXQVJFLgorICov CisjaW5jbHVkZSAiaHcuaCIKKyNpbmNsdWRlICJpc2EuaCIKKyNpbmNsdWRlICJmd19jZmcuaCIK KworLyogZGVidWcgZmlybXdhcmUgY29uZmlnICovCisvLyNkZWZpbmUgREVCVUdfRldfQ0ZHCisK KyNpZmRlZiBERUJVR19GV19DRkcKKyNkZWZpbmUgRldfQ0ZHX0RQUklOVEYoZm10LCBhcmdzLi4u KSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7IHByaW50ZigiRldfQ0ZHOiAiIGZtdCAs ICMjYXJncyk7IH0gd2hpbGUgKDApCisjZWxzZQorI2RlZmluZSBGV19DRkdfRFBSSU5URihmbXQs IGFyZ3MuLi4pCisjZW5kaWYKKworI2RlZmluZSBGV19DRkdfU0laRSAyCisKK3R5cGVkZWYgc3Ry dWN0IF9GV0NmZ0VudHJ5IHsKKyAgICB1aW50MTZfdCBsZW47CisgICAgdWludDhfdCAqZGF0YTsK K30gRldDZmdFbnRyeTsKKwordHlwZWRlZiBzdHJ1Y3QgX0ZXQ2ZnU3RhdGUgeworICAgIEZXQ2Zn RW50cnkgZW50cmllc1syXVtGV19DRkdfTUFYX0VOVFJZXTsKKyAgICB1aW50MTZfdCBjdXJfZW50 cnk7CisgICAgdWludDE2X3QgY3VyX29mZnNldDsKK30gRldDZmdTdGF0ZTsKKworc3RhdGljIGlu dCBmd19jZmdfc2VsZWN0KEZXQ2ZnU3RhdGUgKnMsIHVpbnQxNl90IGtleSkKK3sKKyAgICBpbnQg cmV0OworCisgICAgcy0+Y3VyX29mZnNldCA9IDA7CisgICAgaWYgKChrZXkgJiB+RldfQ0ZHX0FS Q0hfTE9DQUwpID49IEZXX0NGR19NQVhfRU5UUlkpIHsKKyAgICAgICAgcy0+Y3VyX2VudHJ5ID0g MDsKKyAgICAgICAgcmV0ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBzLT5jdXJfZW50cnkg PSBrZXk7CisgICAgICAgIHJldCA9IDE7CisgICAgfQorCisgICAgRldfQ0ZHX0RQUklOVEYoInNl bGVjdCBrZXkgJWQgKCVzZm91bmQpXG4iLCBrZXksIHJldCA/ICIiIDogIm5vdCAiKTsKKworICAg IHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB1aW50OF90IGZ3X2NmZ19yZWFkKEZXQ2ZnU3RhdGUg KnMpCit7CisgICAgaW50IGFyY2ggPSAhIShzLT5jdXJfZW50cnkgJiBGV19DRkdfQVJDSF9MT0NB TCk7CisgICAgRldDZmdFbnRyeSAqZSA9ICZzLT5lbnRyaWVzW2FyY2hdW3MtPmN1cl9lbnRyeV07 CisgICAgdWludDhfdCByZXQ7CisKKyAgICBpZiAoIWUgfHwgIWUtPmRhdGEgfHwgcy0+Y3VyX29m ZnNldCA+PSBlLT5sZW4pCisgICAgICAgIHJldCA9IDA7CisgICAgZWxzZQorICAgICAgICByZXQg PSBlLT5kYXRhW3MtPmN1cl9vZmZzZXQrK107CisKKyAgICBGV19DRkdfRFBSSU5URigicmVhZCAl ZFxuIiwgcmV0KTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBmd19j ZmdfaW9fcmVhZGIodm9pZCAqb3BhcXVlLCB1aW50MzJfdCBhZGRyKQoreworICAgIHJldHVybiBm d19jZmdfcmVhZChvcGFxdWUpOworfQorCitzdGF0aWMgdm9pZCBmd19jZmdfaW9fd3JpdGV3KHZv aWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsdWUpCit7CisgICAgZndfY2Zn X3NlbGVjdChvcGFxdWUsICh1aW50MTZfdCl2YWx1ZSk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBm d19jZmdfbWVtX3JlYWRiKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7 CisgICAgcmV0dXJuIGZ3X2NmZ19yZWFkKG9wYXF1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGZ3X2Nm Z19tZW1fd3JpdGV3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSkKK3sKKyAgICBmd19jZmdf c2VsZWN0KG9wYXF1ZSwgKHVpbnQxNl90KXZhbHVlKTsKK30KKworc3RhdGljIENQVVJlYWRNZW1v cnlGdW5jICpmd19jZmdfbWVtX3JlYWRbM10gPSB7CisgICAgZndfY2ZnX21lbV9yZWFkYiwKKyAg ICBOVUxMLAorICAgIE5VTEwsCit9OworCitzdGF0aWMgQ1BVV3JpdGVNZW1vcnlGdW5jICpmd19j ZmdfbWVtX3dyaXRlWzNdID0geworICAgIE5VTEwsCisgICAgZndfY2ZnX21lbV93cml0ZXcsCisg ICAgTlVMTCwKK307CisKK3N0YXRpYyB2b2lkIGZ3X2NmZ19yZXNldCh2b2lkICpvcGFxdWUpCit7 CisgICAgRldDZmdTdGF0ZSAqcyA9IG9wYXF1ZTsKKworICAgIGZ3X2NmZ19zZWxlY3QocywgMCk7 Cit9CisKK3N0YXRpYyB2b2lkIGZ3X2NmZ19zYXZlKFFFTVVGaWxlICpmLCB2b2lkICpvcGFxdWUp Cit7CisgICAgRldDZmdTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKwor ICAgIGZvciAoaSA9IDA7IGkgPCBGV19DRkdfTUFYX0VOVFJZOyBpKyspIHsKKyAgICAgICAgcWVt dV9wdXRfYmUxNnMoZiwgJnMtPmVudHJpZXNbMF1baV0ubGVuKTsKKyAgICAgICAgcWVtdV9wdXRf YnVmZmVyKGYsIHMtPmVudHJpZXNbMF1baV0uZGF0YSwgcy0+ZW50cmllc1swXVtpXS5sZW4pOwor CisgICAgICAgIHFlbXVfcHV0X2JlMTZzKGYsICZzLT5lbnRyaWVzWzFdW2ldLmxlbik7CisgICAg ICAgIHFlbXVfcHV0X2J1ZmZlcihmLCBzLT5lbnRyaWVzWzFdW2ldLmRhdGEsIHMtPmVudHJpZXNb MV1baV0ubGVuKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgZndfY2ZnX2xvYWQoUUVNVUZpbGUg KmYsIHZvaWQgKm9wYXF1ZSwgaW50IHZlcnNpb25faWQpCit7CisgICAgRldDZmdTdGF0ZSAqcyA9 IG9wYXF1ZTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGlmICh2ZXJzaW9uX2lkID4gMSkK KyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgRldfQ0ZHX01B WF9FTlRSWTsgaSsrKSB7CisgICAgICAgIHFlbXVfZ2V0X2JlMTZzKGYsICZzLT5lbnRyaWVzWzBd W2ldLmxlbik7CisgICAgICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5lbnRyaWVzWzBdW2ldLmRh dGEsIHMtPmVudHJpZXNbMF1baV0ubGVuKTsKKworICAgICAgICBxZW11X2dldF9iZTE2cyhmLCAm cy0+ZW50cmllc1sxXVtpXS5sZW4pOworICAgICAgICBxZW11X2dldF9idWZmZXIoZiwgcy0+ZW50 cmllc1sxXVtpXS5kYXRhLCBzLT5lbnRyaWVzWzFdW2ldLmxlbik7CisgICAgfQorCisgICAgcmV0 dXJuIDA7Cit9CisKK2ludCBmd19jZmdfYWRkKHZvaWQgKm9wYXF1ZSwgdWludDE2X3Qga2V5LCB1 aW50OF90ICpkYXRhLCB1aW50MTZfdCBsZW4pCit7CisgICAgRldDZmdTdGF0ZSAqcyA9IG9wYXF1 ZTsKKyAgICBpbnQgYXJjaCA9ICEhKGtleSAmIEZXX0NGR19BUkNIX0xPQ0FMKTsKKworICAgIGtl eSAmPSAofkZXX0NGR19BUkNIX0xPQ0FMKTsKKworICAgIGlmIChrZXkgPj0gRldfQ0ZHX01BWF9F TlRSWSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzLT5lbnRyaWVzW2FyY2hdW2tleV0uZGF0 YSA9IGRhdGE7CisgICAgcy0+ZW50cmllc1thcmNoXVtrZXldLmxlbiA9IGxlbjsKKworICAgIHJl dHVybiAxOworfQorCit2b2lkICpmd19jZmdfaW5pdCh1aW50MzJfdCBwb3J0LCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkcikKK3sKKyAgICBGV0NmZ1N0YXRlICpzOworICAgIGludCBpb19tZW1vcnk7 CisKKyAgICBzID0gcWVtdV9tYWxsb2N6KHNpemVvZihGV0NmZ1N0YXRlKSk7CisgICAgaWYgKCFz KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChwb3J0KSB7CisgICAgICAgIHJlZ2lz dGVyX2lvcG9ydF9yZWFkKHBvcnQsIDEsIDEsIGZ3X2NmZ19pb19yZWFkYiwgcyk7CisgICAgICAg IHJlZ2lzdGVyX2lvcG9ydF93cml0ZShwb3J0LCAyLCAyLCBmd19jZmdfaW9fd3JpdGV3LCBzKTsK KyAgICB9CisgICAgaWYgKGFkZHIpIHsKKyAgICAgICAgaW9fbWVtb3J5ID0gY3B1X3JlZ2lzdGVy X2lvX21lbW9yeSgwLCBmd19jZmdfbWVtX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZndfY2ZnX21lbV93cml0ZSwgcyk7CisgICAgICAgIGNwdV9yZWdp c3Rlcl9waHlzaWNhbF9tZW1vcnkoYWRkciwgRldfQ0ZHX1NJWkUsIGlvX21lbW9yeSk7CisKKyAg ICB9CisgICAgZndfY2ZnX2FkZChzLCBGV19DRkdfU0lHTkFUVVJFLCAodWludDhfdCAqKSJRRU1V IiwgNCk7CisgICAgcmVnaXN0ZXJfc2F2ZXZtKCJmd19jZmciLCAtMSwgMSwgZndfY2ZnX3NhdmUs IGZ3X2NmZ19sb2FkLCBzKTsKKyAgICBxZW11X3JlZ2lzdGVyX3Jlc2V0KGZ3X2NmZ19yZXNldCwg cyk7CisgICAgZndfY2ZnX3Jlc2V0KHMpOworCisgICAgcmV0dXJuIHM7Cit9CkluZGV4OiBxZW11 L2h3L2Z3X2NmZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9md19jZmcuaAkyMDA4LTA4LTI3IDE2OjU5OjIx LjAwMDAwMDAwMCArMDAwMApAQCAtMCwwICsxLDE1IEBACisjaWZuZGVmIEZXX0NGR19ICisjZGVm aW5lIEZXX0NGR19ICisKKyNkZWZpbmUgRldfQ0ZHX1NJR05BVFVSRSAgICAgICAgMHgwMAorI2Rl ZmluZSBGV19DRkdfSUQgICAgICAgICAgICAgICAweDAxCisjZGVmaW5lIEZXX0NGR19NQVhfRU5U UlkgICAgICAgIDB4MTAKKworI2RlZmluZSBGV19DRkdfQVJDSF9MT0NBTCAgICAgICAweDgwMDAK KworI2lmbmRlZiBfX0FTU0VNQkxZX18KK2ludCBmd19jZmdfYWRkKHZvaWQgKm9wYXF1ZSwgdWlu dDE2X3Qga2V5LCB1aW50OF90ICpkYXRhLCB1aW50MTZfdCBsZW4pOwordm9pZCAqZndfY2ZnX2lu aXQodWludDMyX3QgcG9ydCwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpOworI2VuZGlmIC8qIF9f QVNTRU1CTFlfXyAqLworCisjZW5kaWYK ------=_Part_27730_15397805.1219857050126--