From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HqCfP-0004rw-Oy for qemu-devel@nongnu.org; Mon, 21 May 2007 14:31:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HqCfO-0004rU-Va for qemu-devel@nongnu.org; Mon, 21 May 2007 14:31:35 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HqCfO-0004rR-QM for qemu-devel@nongnu.org; Mon, 21 May 2007 14:31:34 -0400 Received: from ug-out-1314.google.com ([66.249.92.171]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HqCfO-0004TM-03 for qemu-devel@nongnu.org; Mon, 21 May 2007 14:31:34 -0400 Received: by ug-out-1314.google.com with SMTP id j40so8109ugd for ; Mon, 21 May 2007 11:31:29 -0700 (PDT) Message-ID: Date: Mon, 21 May 2007 21:31:28 +0300 From: "Blue Swirl" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_40380_17363141.1179772288966" Subject: [Qemu-devel] PATCH, RFC: Sub-page I/O 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_40380_17363141.1179772288966 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, The attached patch (based on earlier work by J. Mayer) enables assignment of multiple I/O devices and unassigned space in the same page. When devices register I/O locations, all accesses within the same page are directed to the device, even outside the registered locations. With the patch, the outside areas are unassigned space or whatever was registered in the area. The patch could be improved further to support multiple simultaneous HW on same addresses or stacked registrations, but I leave that exercise to the more interested reader. Any comments? Would this break some architecture? Sparc32 tests work as before, and I already found and fixed one bug. ------=_Part_40380_17363141.1179772288966 Content-Type: text/x-diff; name=subpage_io.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f1z9s8xn Content-Disposition: attachment; filename="subpage_io.diff" SW5kZXg6IHFlbXUvZXhlYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9leGVjLmMJMjAwNy0w NS0yMSAxNzo1NDoyNi4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvZXhlYy5jCTIwMDctMDUtMjEg MTg6MTE6MzUuMDAwMDAwMDAwICswMDAwCkBAIC00OCw2ICs0OCw3IEBACiAvLyNkZWZpbmUgREVC VUdfVExCX0NIRUNLIAogCiAvLyNkZWZpbmUgREVCVUdfSU9QT1JUCisvLyNkZWZpbmUgREVCVUdf U1VCUEFHRQogCiAjaWYgIWRlZmluZWQoQ09ORklHX1VTRVJfT05MWSkKIC8qIFRCIGNvbnNpc3Rl bmN5IGNoZWNrcyBvbmx5IGltcGxlbWVudGVkIGZvciB1c2VybW9kZSBlbXVsYXRpb24uICAqLwpA QCAtMTU3LDYgKzE1OCwxNCBAQAogc3RhdGljIGludCB0Yl9mbHVzaF9jb3VudDsKIHN0YXRpYyBp bnQgdGJfcGh5c19pbnZhbGlkYXRlX2NvdW50OwogCisjZGVmaW5lIFNVQlBBR0VfSURYKGFkZHIp ICgoYWRkcikgJiB+VEFSR0VUX1BBR0VfTUFTSykKK3R5cGVkZWYgc3RydWN0IHN1YnBhZ2VfdCB7 CisgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGJhc2U7CisgICAgQ1BVUmVhZE1lbW9yeUZ1bmMgKipt ZW1fcmVhZFtUQVJHRVRfUEFHRV9TSVpFXTsKKyAgICBDUFVXcml0ZU1lbW9yeUZ1bmMgKiptZW1f d3JpdGVbVEFSR0VUX1BBR0VfU0laRV07CisgICAgdm9pZCAqb3BhcXVlW1RBUkdFVF9QQUdFX1NJ WkVdOworfSBzdWJwYWdlX3Q7CisKIHN0YXRpYyB2b2lkIHBhZ2VfaW5pdCh2b2lkKQogewogICAg IC8qIE5PVEU6IHdlIGNhbiBhbHdheXMgc3VwcG9zZSB0aGF0IHFlbXVfaG9zdF9wYWdlX3NpemUg Pj0KQEAgLTE4OTgsNiArMTkwNywxMSBAQAogfQogI2VuZGlmIC8qIGRlZmluZWQoQ09ORklHX1VT RVJfT05MWSkgKi8KIAorc3RhdGljIGludCBzdWJwYWdlX3JlZ2lzdGVyIChzdWJwYWdlX3QgKm1t aW8sIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBtZW1vcnkpOworc3RhdGljIHZvaWQgKnN1YnBhZ2VfaW5pdCAodGFyZ2V0X3Bo eXNfYWRkcl90IGJhc2UsIHVpbnQzMl90ICpwaHlzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IG9yaWdfbWVtb3J5KTsKKwogLyogcmVnaXN0ZXIgcGh5c2ljYWwgbWVtb3J5LiAnc2l6 ZScgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSB0YXJnZXQKICAgIHBhZ2Ugc2l6ZS4gSWYgKHBo eXNfb2Zmc2V0ICYgflRBUkdFVF9QQUdFX01BU0spICE9IDAsIHRoZW4gaXQgaXMgYW4KICAgIGlv IG1lbW9yeSBwYWdlICovCkBAIC0xOTA4LDE1ICsxOTIyLDgxIEBACiAgICAgdGFyZ2V0X3BoeXNf YWRkcl90IGFkZHIsIGVuZF9hZGRyOwogICAgIFBoeXNQYWdlRGVzYyAqcDsKICAgICBDUFVTdGF0 ZSAqZW52OworICAgIHVuc2lnbmVkIGxvbmcgb3JpZ19zaXplID0gc2l6ZTsKKyAgICB2b2lkICpz dWJwYWdlOwogCiAgICAgc2l6ZSA9IChzaXplICsgVEFSR0VUX1BBR0VfU0laRSAtIDEpICYgVEFS R0VUX1BBR0VfTUFTSzsKICAgICBlbmRfYWRkciA9IHN0YXJ0X2FkZHIgKyBzaXplOwogICAgIGZv cihhZGRyID0gc3RhcnRfYWRkcjsgYWRkciAhPSBlbmRfYWRkcjsgYWRkciArPSBUQVJHRVRfUEFH RV9TSVpFKSB7Ci0gICAgICAgIHAgPSBwaHlzX3BhZ2VfZmluZF9hbGxvYyhhZGRyID4+IFRBUkdF VF9QQUdFX0JJVFMsIDEpOwotICAgICAgICBwLT5waHlzX29mZnNldCA9IHBoeXNfb2Zmc2V0Owot ICAgICAgICBpZiAoKHBoeXNfb2Zmc2V0ICYgflRBUkdFVF9QQUdFX01BU0spIDw9IElPX01FTV9S T00gfHwKLSAgICAgICAgICAgIChwaHlzX29mZnNldCAmIElPX01FTV9ST01EKSkKLSAgICAgICAg ICAgIHBoeXNfb2Zmc2V0ICs9IFRBUkdFVF9QQUdFX1NJWkU7CisgICAgICAgIHAgPSBwaHlzX3Bh Z2VfZmluZChhZGRyID4+IFRBUkdFVF9QQUdFX0JJVFMpOworICAgICAgICBpZiAocCAmJiBwLT5w aHlzX29mZnNldCAhPSBJT19NRU1fVU5BU1NJR05FRCkgeworICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBvcmlnX21lbW9yeSA9IHAtPnBoeXNfb2Zmc2V0OworICAgICAgICAgICAgdGFyZ2V0X3Bo eXNfYWRkcl90IHN0YXJ0X2FkZHIyLCBlbmRfYWRkcjI7CisgICAgICAgICAgICBpbnQgbmVlZF9z dWJwYWdlID0gMDsKKworICAgICAgICAgICAgaWYgKGFkZHIgPiBzdGFydF9hZGRyKQorICAgICAg ICAgICAgICAgIHN0YXJ0X2FkZHIyID0gMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg ICAgICAgIHN0YXJ0X2FkZHIyID0gc3RhcnRfYWRkciAmIH5UQVJHRVRfUEFHRV9NQVNLOworICAg ICAgICAgICAgICAgIGlmIChzdGFydF9hZGRyMiA+IDApCisgICAgICAgICAgICAgICAgICAgIG5l ZWRfc3VicGFnZSA9IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlbmRfYWRk ciAtIGFkZHIgPiBUQVJHRVRfUEFHRV9TSVpFKQorICAgICAgICAgICAgICAgIGVuZF9hZGRyMiA9 IFRBUkdFVF9QQUdFX1NJWkUgLSAxOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg ICAgZW5kX2FkZHIyID0gc3RhcnRfYWRkciArIG9yaWdfc2l6ZSAtIGFkZHI7CisgICAgICAgICAg ICAgICAgaWYgKGVuZF9hZGRyMiA8IFRBUkdFVF9QQUdFX1NJWkUgLSAxKQorICAgICAgICAgICAg ICAgICAgICBuZWVkX3N1YnBhZ2UgPSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp ZiAobmVlZF9zdWJwYWdlKSB7CisgICAgICAgICAgICAgICAgaWYgKCEob3JpZ19tZW1vcnkgJiBJ T19NRU1fU1VCUEFHRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3VicGFnZSA9IHN1YnBhZ2Vf aW5pdChhZGRyLCAmcC0+cGh5c19vZmZzZXQsIG9yaWdfbWVtb3J5KTsKKyAgICAgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdWJwYWdlID0gaW9fbWVtX29wYXF1ZVso cGh5c19vZmZzZXQgJiB+VEFSR0VUX1BBR0VfTUFTSykgPj4gSU9fTUVNX1NISUZUXTsKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3VicGFnZV9yZWdpc3RlcihzdWJwYWdlLCBz dGFydF9hZGRyMiwgZW5kX2FkZHIyLCBwaHlzX29mZnNldCk7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgIHAtPnBoeXNfb2Zmc2V0ID0gcGh5c19vZmZzZXQ7CisgICAgICAg ICAgICAgICAgaWYgKChwaHlzX29mZnNldCAmIH5UQVJHRVRfUEFHRV9NQVNLKSA8PSBJT19NRU1f Uk9NIHx8CisgICAgICAgICAgICAgICAgICAgIChwaHlzX29mZnNldCAmIElPX01FTV9ST01EKSkK KyAgICAgICAgICAgICAgICAgICAgcGh5c19vZmZzZXQgKz0gVEFSR0VUX1BBR0VfU0laRTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHAgPSBwaHlzX3BhZ2Vf ZmluZF9hbGxvYyhhZGRyID4+IFRBUkdFVF9QQUdFX0JJVFMsIDEpOworICAgICAgICAgICAgcC0+ cGh5c19vZmZzZXQgPSBwaHlzX29mZnNldDsKKyAgICAgICAgICAgIGlmICgocGh5c19vZmZzZXQg JiB+VEFSR0VUX1BBR0VfTUFTSykgPD0gSU9fTUVNX1JPTSB8fAorICAgICAgICAgICAgICAgIChw aHlzX29mZnNldCAmIElPX01FTV9ST01EKSkKKyAgICAgICAgICAgICAgICBwaHlzX29mZnNldCAr PSBUQVJHRVRfUEFHRV9TSVpFOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg dGFyZ2V0X3BoeXNfYWRkcl90IHN0YXJ0X2FkZHIyLCBlbmRfYWRkcjI7CisgICAgICAgICAgICAg ICAgaW50IG5lZWRfc3VicGFnZSA9IDA7CisKKyAgICAgICAgICAgICAgICBpZiAoYWRkciA+IHN0 YXJ0X2FkZHIpCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2FkZHIyID0gMDsKKyAgICAgICAg ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRfYWRkcjIgPSBzdGFydF9h ZGRyICYgflRBUkdFVF9QQUdFX01BU0s7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydF9h ZGRyMiA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICBuZWVkX3N1YnBhZ2UgPSAxOworICAg ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChlbmRfYWRkciAtIGFkZHIgPiBU QVJHRVRfUEFHRV9TSVpFKQorICAgICAgICAgICAgICAgICAgICBlbmRfYWRkcjIgPSBUQVJHRVRf UEFHRV9TSVpFIC0gMTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg ICAgZW5kX2FkZHIyID0gc3RhcnRfYWRkciArIG9yaWdfc2l6ZSAtIGFkZHI7CisgICAgICAgICAg ICAgICAgICAgIGlmIChlbmRfYWRkcjIgPCBUQVJHRVRfUEFHRV9TSVpFIC0gMSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIG5lZWRfc3VicGFnZSA9IDE7CisgICAgICAgICAgICAgICAgfQorCisg ICAgICAgICAgICAgICAgaWYgKG5lZWRfc3VicGFnZSkgeworICAgICAgICAgICAgICAgICAgICBz dWJwYWdlID0gc3VicGFnZV9pbml0KGFkZHIsICZwLT5waHlzX29mZnNldCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT19NRU1fVU5BU1NJR05FRCk7CisgICAg ICAgICAgICAgICAgICAgIHN1YnBhZ2VfcmVnaXN0ZXIoc3VicGFnZSwgc3RhcnRfYWRkcjIsIGVu ZF9hZGRyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaHlzX29mZnNl dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQog ICAgIAogICAgIC8qIHNpbmNlIGVhY2ggQ1BVIHN0b3JlcyByYW0gYWRkcmVzc2VzIGluIGl0cyBU TEIgY2FjaGUsIHdlIG11c3QKQEAgLTIxNTgsNiArMjIzOCwxNDkgQEAKIH07CiAjZW5kaWYKIAor c3RhdGljIGlubGluZSB1aW50MzJfdCBzdWJwYWdlX3JlYWRsZW4gKHN1YnBhZ2VfdCAqbW1pbywg dGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbGVuKQoreworICAgIENQVVJlYWRNZW1vcnlGdW5jICoqbWVtX3JlYWQ7 CisgICAgdWludDMyX3QgcmV0OworICAgIHVuc2lnbmVkIGludCBpZHg7CisKKyAgICBpZHggPSBT VUJQQUdFX0lEWChhZGRyIC0gbW1pby0+YmFzZSk7CisjaWYgZGVmaW5lZChERUJVR19TVUJQQUdF KQorICAgIHByaW50ZigiJXM6IHN1YnBhZ2UgJXAgbGVuICVkIGFkZHIgIiBUQVJHRVRfRk1UX3Bs eCAiIGlkeCAlZFxuIiwgX19mdW5jX18sCisgICAgICAgICAgIG1taW8sIGxlbiwgYWRkciwgaWR4 KTsKKyNlbmRpZgorICAgIG1lbV9yZWFkID0gbW1pby0+bWVtX3JlYWRbaWR4XTsKKyAgICByZXQg PSAoKm1lbV9yZWFkW2xlbl0pKG1taW8tPm9wYXF1ZVtpZHhdLCBhZGRyKTsKKworICAgIHJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdWJwYWdlX3dyaXRlbGVuIChzdWJwYWdl X3QgKm1taW8sIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgdmFsdWUsIHVuc2lnbmVkIGludCBsZW4pCit7CisgICAgQ1BVV3Jp dGVNZW1vcnlGdW5jICoqbWVtX3dyaXRlOworICAgIHVuc2lnbmVkIGludCBpZHg7CisKKyAgICBp ZHggPSBTVUJQQUdFX0lEWChhZGRyIC0gbW1pby0+YmFzZSk7CisjaWYgZGVmaW5lZChERUJVR19T VUJQQUdFKQorICAgIHByaW50ZigiJXM6IHN1YnBhZ2UgJXAgbGVuICVkIGFkZHIgIiBUQVJHRVRf Rk1UX3BseCAiIGlkeCAlZCB2YWx1ZSAlMDh4XG4iLCBfX2Z1bmNfXywKKyAgICAgICAgICAgbW1p bywgbGVuLCBhZGRyLCBpZHgsIHZhbHVlKTsKKyNlbmRpZgorICAgIG1lbV93cml0ZSA9IG1taW8t Pm1lbV93cml0ZVtpZHhdOworICAgICgqbWVtX3dyaXRlW2xlbl0pKG1taW8tPm9wYXF1ZVtpZHhd LCBhZGRyLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBzdWJwYWdlX3JlYWRiICh2b2lk ICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQoreworI2lmIGRlZmluZWQoREVCVUdf U1VCUEFHRSkKKyAgICBwcmludGYoIiVzOiBhZGRyICIgVEFSR0VUX0ZNVF9wbHggIlxuIiwgX19m dW5jX18sIGFkZHIpOworI2VuZGlmCisKKyAgICByZXR1cm4gc3VicGFnZV9yZWFkbGVuKG9wYXF1 ZSwgYWRkciwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHN1YnBhZ2Vfd3JpdGViICh2b2lkICpvcGFx dWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IHZhbHVlKQoreworI2lmIGRlZmluZWQoREVCVUdfU1VCUEFHRSkKKyAgICBwcmlu dGYoIiVzOiBhZGRyICIgVEFSR0VUX0ZNVF9wbHggIiB2YWwgJTA4eFxuIiwgX19mdW5jX18sIGFk ZHIsIHZhbHVlKTsKKyNlbmRpZgorICAgIHN1YnBhZ2Vfd3JpdGVsZW4ob3BhcXVlLCBhZGRyLCB2 YWx1ZSwgMCk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBzdWJwYWdlX3JlYWR3ICh2b2lkICpvcGFx dWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQoreworI2lmIGRlZmluZWQoREVCVUdfU1VCUEFH RSkKKyAgICBwcmludGYoIiVzOiBhZGRyICIgVEFSR0VUX0ZNVF9wbHggIlxuIiwgX19mdW5jX18s IGFkZHIpOworI2VuZGlmCisKKyAgICByZXR1cm4gc3VicGFnZV9yZWFkbGVuKG9wYXF1ZSwgYWRk ciwgMSk7Cit9CisKK3N0YXRpYyB2b2lkIHN1YnBhZ2Vfd3JpdGV3ICh2b2lkICpvcGFxdWUsIHRh cmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IHZhbHVlKQoreworI2lmIGRlZmluZWQoREVCVUdfU1VCUEFHRSkKKyAgICBwcmludGYoIiVz OiBhZGRyICIgVEFSR0VUX0ZNVF9wbHggIiB2YWwgJTA4eFxuIiwgX19mdW5jX18sIGFkZHIsIHZh bHVlKTsKKyNlbmRpZgorICAgIHN1YnBhZ2Vfd3JpdGVsZW4ob3BhcXVlLCBhZGRyLCB2YWx1ZSwg MSk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBzdWJwYWdlX3JlYWRsICh2b2lkICpvcGFxdWUsIHRh cmdldF9waHlzX2FkZHJfdCBhZGRyKQoreworI2lmIGRlZmluZWQoREVCVUdfU1VCUEFHRSkKKyAg ICBwcmludGYoIiVzOiBhZGRyICIgVEFSR0VUX0ZNVF9wbHggIlxuIiwgX19mdW5jX18sIGFkZHIp OworI2VuZGlmCisKKyAgICByZXR1cm4gc3VicGFnZV9yZWFkbGVuKG9wYXF1ZSwgYWRkciwgMik7 Cit9CisKK3N0YXRpYyB2b2lkIHN1YnBhZ2Vfd3JpdGVsICh2b2lkICpvcGFxdWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90IHZhbHVl KQoreworI2lmIGRlZmluZWQoREVCVUdfU1VCUEFHRSkKKyAgICBwcmludGYoIiVzOiBhZGRyICIg VEFSR0VUX0ZNVF9wbHggIiB2YWwgJTA4eFxuIiwgX19mdW5jX18sIGFkZHIsIHZhbHVlKTsKKyNl bmRpZgorICAgIHN1YnBhZ2Vfd3JpdGVsZW4ob3BhcXVlLCBhZGRyLCB2YWx1ZSwgMik7Cit9CisK K3N0YXRpYyBDUFVSZWFkTWVtb3J5RnVuYyAqc3VicGFnZV9yZWFkW10gPSB7CisgICAgJnN1YnBh Z2VfcmVhZGIsCisgICAgJnN1YnBhZ2VfcmVhZHcsCisgICAgJnN1YnBhZ2VfcmVhZGwsCit9Owor CitzdGF0aWMgQ1BVV3JpdGVNZW1vcnlGdW5jICpzdWJwYWdlX3dyaXRlW10gPSB7CisgICAgJnN1 YnBhZ2Vfd3JpdGViLAorICAgICZzdWJwYWdlX3dyaXRldywKKyAgICAmc3VicGFnZV93cml0ZWws Cit9OworCitzdGF0aWMgaW50IHN1YnBhZ2VfcmVnaXN0ZXIgKHN1YnBhZ2VfdCAqbW1pbywgdWlu dDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IG1lbW9yeSkKK3sKKyAgICBpbnQgaWR4LCBlaWR4OworCisgICAgaWYgKHN0YXJ0ID49IFRB UkdFVF9QQUdFX1NJWkUgfHwgZW5kID49IFRBUkdFVF9QQUdFX1NJWkUpCisgICAgICAgIHJldHVy biAtMTsKKyAgICBpZHggPSBTVUJQQUdFX0lEWChzdGFydCk7CisgICAgZWlkeCA9IFNVQlBBR0Vf SURYKGVuZCk7CisjaWYgZGVmaW5lZChERUJVR19TVUJQQUdFKQorICAgIHByaW50ZigiJXM6IHN0 YXJ0ICUwOHggZW5kICUwOHggaWR4ICUwOHggZWlkeCAlMDh4IG1lbSAlZFxuIiwgX19mdW5jX18s CisgICAgICAgICAgIHN0YXJ0LCBlbmQsIGlkeCwgZWlkeCwgbWVtb3J5KTsKKyNlbmRpZgorICAg IG1lbW9yeSA+Pj0gSU9fTUVNX1NISUZUOworICAgIGZvciAoOyBpZHggPD0gZWlkeDsgaWR4Kysp IHsKKyAgICAgICAgbW1pby0+bWVtX3JlYWRbaWR4XSA9IGlvX21lbV9yZWFkW21lbW9yeV07Cisg ICAgICAgIG1taW8tPm1lbV93cml0ZVtpZHhdID0gaW9fbWVtX3dyaXRlW21lbW9yeV07CisgICAg ICAgIG1taW8tPm9wYXF1ZVtpZHhdID0gaW9fbWVtX29wYXF1ZVttZW1vcnldOworICAgIH0KKwor ICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCAqc3VicGFnZV9pbml0ICh0YXJnZXRfcGh5 c19hZGRyX3QgYmFzZSwgdWludDMyX3QgKnBoeXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgb3JpZ19tZW1vcnkpCit7CisgICAgc3VicGFnZV90ICptbWlvOworICAgIGludCBzdWJw YWdlX21lbW9yeTsKKworICAgIG1taW8gPSBxZW11X21hbGxvY3ooc2l6ZW9mKHN1YnBhZ2VfdCkp OworICAgIGlmIChtbWlvICE9IE5VTEwpIHsKKyAgICAgICAgbW1pby0+YmFzZSA9IGJhc2U7Cisg ICAgICAgIHN1YnBhZ2VfbWVtb3J5ID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBzdWJwYWdl X3JlYWQsIHN1YnBhZ2Vfd3JpdGUsIG1taW8pOworI2lmIGRlZmluZWQoREVCVUdfU1VCUEFHRSkK KyAgICAgICAgcHJpbnRmKCIlczogJXAgYmFzZSAiIFRBUkdFVF9GTVRfcGx4ICIgbGVuICUwOHgg JWRcbiIsIF9fZnVuY19fLAorICAgICAgICAgICAgICAgbW1pbywgYmFzZSwgVEFSR0VUX1BBR0Vf U0laRSwgc3VicGFnZV9tZW1vcnkpOworI2VuZGlmCisgICAgICAgICpwaHlzID0gc3VicGFnZV9t ZW1vcnkgfCBJT19NRU1fU1VCUEFHRTsKKyAgICAgICAgc3VicGFnZV9yZWdpc3RlcihtbWlvLCAw LCBUQVJHRVRfUEFHRV9TSVpFIC0gMSwgb3JpZ19tZW1vcnkpOworICAgIH0KKworICAgIHJldHVy biBtbWlvOworfQorCiBzdGF0aWMgdm9pZCBpb19tZW1faW5pdCh2b2lkKQogewogICAgIGNwdV9y ZWdpc3Rlcl9pb19tZW1vcnkoSU9fTUVNX1JPTSA+PiBJT19NRU1fU0hJRlQsIGVycm9yX21lbV9y ZWFkLCB1bmFzc2lnbmVkX21lbV93cml0ZSwgTlVMTCk7CkluZGV4OiBxZW11L2NwdS1hbGwuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvY3B1LWFsbC5oCTIwMDctMDUtMjEgMTc6NTQ6MjYuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L2NwdS1hbGwuaAkyMDA3LTA1LTIxIDE4OjExOjM1LjAwMDAw MDAwMCArMDAwMApAQCAtODU4LDYgKzg1OCw3IEBACiAgICBleGNlcHRpb24sIHRoZSB3cml0ZSBt ZW1vcnkgY2FsbGJhY2sgZ2V0cyB0aGUgcmFtIG9mZnNldCBpbnN0ZWFkIG9mCiAgICB0aGUgcGh5 c2ljYWwgYWRkcmVzcyAqLwogI2RlZmluZSBJT19NRU1fUk9NRCAgICAgICAgKDEpCisjZGVmaW5l IElPX01FTV9TVUJQQUdFICAgICAoMikKIAogdHlwZWRlZiB2b2lkIENQVVdyaXRlTWVtb3J5RnVu Yyh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCB1aW50MzJfdCB2YWx1ZSk7 CiB0eXBlZGVmIHVpbnQzMl90IENQVVJlYWRNZW1vcnlGdW5jKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0 X3BoeXNfYWRkcl90IGFkZHIpOwo= ------=_Part_40380_17363141.1179772288966--