From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JmZlj-0003uj-D5 for qemu-devel@nongnu.org; Thu, 17 Apr 2008 15:27:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JmZlh-0003u1-RY for qemu-devel@nongnu.org; Thu, 17 Apr 2008 15:27:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JmZlh-0003tv-Ly for qemu-devel@nongnu.org; Thu, 17 Apr 2008 15:27:37 -0400 Received: from nf-out-0910.google.com ([64.233.182.191]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JmZlg-0002ha-H5 for qemu-devel@nongnu.org; Thu, 17 Apr 2008 15:27:37 -0400 Received: by nf-out-0910.google.com with SMTP id 30so145794nfu.12 for ; Thu, 17 Apr 2008 12:27:30 -0700 (PDT) Message-ID: Date: Thu, 17 Apr 2008 22:27:29 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] [PATCH 1/5] PCI DMA API (v3) In-Reply-To: <4806596C.4090107@us.ibm.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_15146_28083458.1208460449279" References: <1208297491-1287-1-git-send-email-aliguori@us.ibm.com> <4806596C.4090107@us.ibm.com> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: kvm-devel@lists.sourceforge.net, Marcelo Tosatti , qemu-devel@nongnu.org, Aurelien Jarno , Paul Brook ------=_Part_15146_28083458.1208460449279 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 4/16/08, Anthony Liguori wrote: > Blue Swirl wrote: > > > On 4/16/08, Anthony Liguori wrote: > > > > > > > This patch introduces a DMA API and plumbs support through the DMA > layer. We > > > use a mostly opaque structure, IOVector to represent a scatter/gather > list of > > > physical memory. Associated with each IOVector is a read/write > function and > > > an opaque pointer. This allows arbitrary transformation/mapping of the > > > data while providing an easy mechanism to short-cut the zero-copy case > > > in the block/net backends. > > > > > > > > > > This looks much better also for Sparc uses. I converted pcnet to use > > the IOVectors (see patch), it does not work yet but looks doable. > > > > > > Excellent! I fixed the bug, now pcnet works. Performance is improved by a few percent. The problem was that the vector was not freed. Maybe dynamic allocation is a bit fragile. In this case, the length of the vector is known, so it could be allocated once at init time. But would this work? The next step would be to add a vector version for packet receive. For ESP/SCSI, in addition to bdrv_readv/writev, AIO versions would need to be added. Last year I made a patch (attached) that made SLIRP use my version of IOVector, I could update it to this model. > > IMHO the read/write functions should be a property of the bus so that > > they are hidden from the device, for pcnet it does not matter as we > > have to do the swapping anyway. > > > > > > For an IOMMU that has a per-device mapping, the read/write functions have > to operate on a per-device basis. No, I meant that there could be a bus layer that did the memory access and provided a specialized version of iovector_new without the handlers. But I think we can live with this, if things get too ugly we can add the layering later. ------=_Part_15146_28083458.1208460449279 Content-Type: plain/text; name=pcnet_prepare.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_ff5q2s5v Content-Disposition: attachment; filename=pcnet_prepare.diff SW5kZXg6IHFlbXUvaHcvcGNuZXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGNuZXQu YwkyMDA4LTA0LTE2IDE4OjQ5OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wY25ldC5j CTIwMDgtMDQtMTcgMTY6NDg6MzIuMDAwMDAwMDAwICswMDAwCkBAIC03MSwxMCArNzEsMTAgQEAK ICAgICB1aW50OF90IGJ1ZmZlcls0MDk2XTsKICAgICBpbnQgdHhfYnVzeTsKICAgICBxZW11X2ly cSBpcnE7Ci0gICAgdm9pZCAoKnBoeXNfbWVtX3JlYWQpKHZvaWQgKmRtYV9vcGFxdWUsIHRhcmdl dF9waHlzX2FkZHJfdCBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1 ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2FwKTsKLSAgICB2b2lkICgqcGh5c19tZW1fd3JpdGUpKHZv aWQgKmRtYV9vcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAotICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCk7CisgICAgRE1B UmVhZEhhbmRsZXIgKnBoeXNfbWVtX3JlYWQ7CisgICAgRE1BV3JpdGVIYW5kbGVyICpwaHlzX21l bV93cml0ZTsKKyAgICBETUFSZWFkSGFuZGxlciAqcGh5c19tZW1fcmVhZF9ic3dhcDsKKyAgICBE TUFXcml0ZUhhbmRsZXIgKnBoeXNfbWVtX3dyaXRlX2Jzd2FwOwogICAgIHZvaWQgKmRtYV9vcGFx dWU7CiB9OwogCkBAIC0zNDEsMTQgKzM0MSwxNCBAQAogICAgICAgICAgICAgaW50MTZfdCBsZW5n dGg7CiAgICAgICAgICAgICBpbnQxNl90IHN0YXR1czsKIAl9IHhkYTsKLSAgICAgICAgcy0+cGh5 c19tZW1fcmVhZChzLT5kbWFfb3BhcXVlLCBhZGRyLCAodm9pZCAqKSZ4ZGEsIHNpemVvZih4ZGEp LCAwKTsKKyAgICAgICAgcy0+cGh5c19tZW1fcmVhZChzLT5kbWFfb3BhcXVlLCBhZGRyLCAodm9p ZCAqKSZ4ZGEsIHNpemVvZih4ZGEpKTsKICAgICAgICAgdG1kLT50YmFkciA9IGxlMzJfdG9fY3B1 KHhkYS50YmFkcikgJiAweGZmZmZmZjsKICAgICAgICAgdG1kLT5sZW5ndGggPSBsZTE2X3RvX2Nw dSh4ZGEubGVuZ3RoKTsKICAgICAgICAgdG1kLT5zdGF0dXMgPSAobGUzMl90b19jcHUoeGRhLnRi YWRyKSA+PiAxNikgJiAweGZmMDA7CiAgICAgICAgIHRtZC0+bWlzYyA9IGxlMTZfdG9fY3B1KHhk YS5zdGF0dXMpIDw8IDE2OwogICAgICAgICB0bWQtPnJlcyA9IDA7CiAgICAgfSBlbHNlIHsKLSAg ICAgICAgcy0+cGh5c19tZW1fcmVhZChzLT5kbWFfb3BhcXVlLCBhZGRyLCAodm9pZCAqKXRtZCwg c2l6ZW9mKCp0bWQpLCAwKTsKKyAgICAgICAgcy0+cGh5c19tZW1fcmVhZChzLT5kbWFfb3BhcXVl LCBhZGRyLCAodm9pZCAqKXRtZCwgc2l6ZW9mKCp0bWQpKTsKICAgICAgICAgbGUzMl90b19jcHVz KCZ0bWQtPnRiYWRyKTsKICAgICAgICAgbGUxNl90b19jcHVzKCh1aW50MTZfdCAqKSZ0bWQtPmxl bmd0aCk7CiAgICAgICAgIGxlMTZfdG9fY3B1cygodWludDE2X3QgKikmdG1kLT5zdGF0dXMpOwpA QCAtMzc1LDcgKzM3NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodG1k LT5zdGF0dXMgJiAweGZmMDApIDw8IDE2KSk7CiAgICAgICAgIHhkYS5sZW5ndGggPSBjcHVfdG9f bGUxNih0bWQtPmxlbmd0aCk7CiAgICAgICAgIHhkYS5zdGF0dXMgPSBjcHVfdG9fbGUxNih0bWQt Pm1pc2MgPj4gMTYpOwotICAgICAgICBzLT5waHlzX21lbV93cml0ZShzLT5kbWFfb3BhcXVlLCBh ZGRyLCAodm9pZCAqKSZ4ZGEsIHNpemVvZih4ZGEpLCAwKTsKKyAgICAgICAgcy0+cGh5c19tZW1f d3JpdGUocy0+ZG1hX29wYXF1ZSwgYWRkciwgKHZvaWQgKikmeGRhLCBzaXplb2YoeGRhKSk7CiAg ICAgfSBlbHNlIHsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIHVpbnQzMl90IHRiYWRy OwpAQCAtMzk0LDcgKzM5NCw3IEBACiAgICAgICAgICAgICB4ZGEudGJhZHIgPSB4ZGEubWlzYzsK ICAgICAgICAgICAgIHhkYS5taXNjID0gdG1wOwogICAgICAgICB9Ci0gICAgICAgIHMtPnBoeXNf bWVtX3dyaXRlKHMtPmRtYV9vcGFxdWUsIGFkZHIsICh2b2lkICopJnhkYSwgc2l6ZW9mKHhkYSks IDApOworICAgICAgICBzLT5waHlzX21lbV93cml0ZShzLT5kbWFfb3BhcXVlLCBhZGRyLCAodm9p ZCAqKSZ4ZGEsIHNpemVvZih4ZGEpKTsKICAgICB9CiB9CiAKQEAgLTQwNywxNCArNDA3LDE0IEBA CiAgICAgICAgICAgICBpbnQxNl90IGJ1Zl9sZW5ndGg7CiAgICAgICAgICAgICBpbnQxNl90IG1z Z19sZW5ndGg7CiAJfSByZGE7Ci0gICAgICAgIHMtPnBoeXNfbWVtX3JlYWQocy0+ZG1hX29wYXF1 ZSwgYWRkciwgKHZvaWQgKikmcmRhLCBzaXplb2YocmRhKSwgMCk7CisgICAgICAgIHMtPnBoeXNf bWVtX3JlYWQocy0+ZG1hX29wYXF1ZSwgYWRkciwgKHZvaWQgKikmcmRhLCBzaXplb2YocmRhKSk7 CiAgICAgICAgIHJtZC0+cmJhZHIgPSBsZTMyX3RvX2NwdShyZGEucmJhZHIpICYgMHhmZmZmZmY7 CiAgICAgICAgIHJtZC0+YnVmX2xlbmd0aCA9IGxlMTZfdG9fY3B1KHJkYS5idWZfbGVuZ3RoKTsK ICAgICAgICAgcm1kLT5zdGF0dXMgPSAobGUzMl90b19jcHUocmRhLnJiYWRyKSA+PiAxNikgJiAw eGZmMDA7CiAgICAgICAgIHJtZC0+bXNnX2xlbmd0aCA9IGxlMTZfdG9fY3B1KHJkYS5tc2dfbGVu Z3RoKTsKICAgICAgICAgcm1kLT5yZXMgPSAwOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHMtPnBo eXNfbWVtX3JlYWQocy0+ZG1hX29wYXF1ZSwgYWRkciwgKHZvaWQgKilybWQsIHNpemVvZigqcm1k KSwgMCk7CisgICAgICAgIHMtPnBoeXNfbWVtX3JlYWQocy0+ZG1hX29wYXF1ZSwgYWRkciwgKHZv aWQgKilybWQsIHNpemVvZigqcm1kKSk7CiAgICAgICAgIGxlMzJfdG9fY3B1cygmcm1kLT5yYmFk cik7CiAgICAgICAgIGxlMTZfdG9fY3B1cygodWludDE2X3QgKikmcm1kLT5idWZfbGVuZ3RoKTsK ICAgICAgICAgbGUxNl90b19jcHVzKCh1aW50MTZfdCAqKSZybWQtPnN0YXR1cyk7CkBAIC00NDEs NyArNDQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChybWQtPnN0YXR1 cyAmIDB4ZmYwMCkgPDwgMTYpKTsKICAgICAgICAgcmRhLmJ1Zl9sZW5ndGggPSBjcHVfdG9fbGUx NihybWQtPmJ1Zl9sZW5ndGgpOwogICAgICAgICByZGEubXNnX2xlbmd0aCA9IGNwdV90b19sZTE2 KHJtZC0+bXNnX2xlbmd0aCk7Ci0gICAgICAgIHMtPnBoeXNfbWVtX3dyaXRlKHMtPmRtYV9vcGFx dWUsIGFkZHIsICh2b2lkICopJnJkYSwgc2l6ZW9mKHJkYSksIDApOworICAgICAgICBzLT5waHlz X21lbV93cml0ZShzLT5kbWFfb3BhcXVlLCBhZGRyLCAodm9pZCAqKSZyZGEsIHNpemVvZihyZGEp KTsKICAgICB9IGVsc2UgewogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgdWludDMyX3Qg cmJhZHI7CkBAIC00NjAsNyArNDYwLDcgQEAKICAgICAgICAgICAgIHJkYS5yYmFkciA9IHJkYS5t c2dfbGVuZ3RoOwogICAgICAgICAgICAgcmRhLm1zZ19sZW5ndGggPSB0bXA7CiAgICAgICAgIH0K LSAgICAgICAgcy0+cGh5c19tZW1fd3JpdGUocy0+ZG1hX29wYXF1ZSwgYWRkciwgKHZvaWQgKikm cmRhLCBzaXplb2YocmRhKSwgMCk7CisgICAgICAgIHMtPnBoeXNfbWVtX3dyaXRlKHMtPmRtYV9v cGFxdWUsIGFkZHIsICh2b2lkICopJnJkYSwgc2l6ZW9mKHJkYSkpOwogICAgIH0KIH0KIApAQCAt ODQxLDcgKzg0MSw3IEBACiAgICAgaWYgKEJDUl9TU0laRTMyKHMpKSB7CiAgICAgICAgIHN0cnVj dCBwY25ldF9pbml0YmxrMzIgaW5pdGJsazsKICAgICAgICAgcy0+cGh5c19tZW1fcmVhZChzLT5k bWFfb3BhcXVlLCBQSFlTQUREUihzLENTUl9JQURSKHMpKSwKLSAgICAgICAgICAgICAgICAodWlu dDhfdCAqKSZpbml0YmxrLCBzaXplb2YoaW5pdGJsayksIDApOworICAgICAgICAgICAgICAgICh1 aW50OF90ICopJmluaXRibGssIHNpemVvZihpbml0YmxrKSk7CiAgICAgICAgIG1vZGUgPSBsZTE2 X3RvX2NwdShpbml0YmxrLm1vZGUpOwogICAgICAgICBybGVuID0gaW5pdGJsay5ybGVuID4+IDQ7 CiAgICAgICAgIHRsZW4gPSBpbml0YmxrLnRsZW4gPj4gNDsKQEAgLTg1Nyw3ICs4NTcsNyBAQAog ICAgIH0gZWxzZSB7CiAgICAgICAgIHN0cnVjdCBwY25ldF9pbml0YmxrMTYgaW5pdGJsazsKICAg ICAgICAgcy0+cGh5c19tZW1fcmVhZChzLT5kbWFfb3BhcXVlLCBQSFlTQUREUihzLENTUl9JQURS KHMpKSwKLSAgICAgICAgICAgICAgICAodWludDhfdCAqKSZpbml0YmxrLCBzaXplb2YoaW5pdGJs ayksIDApOworICAgICAgICAgICAgICAgICh1aW50OF90ICopJmluaXRibGssIHNpemVvZihpbml0 YmxrKSk7CiAgICAgICAgIG1vZGUgPSBsZTE2X3RvX2NwdShpbml0YmxrLm1vZGUpOwogCWxhZHJm WzBdID0gbGUxNl90b19jcHUoaW5pdGJsay5sYWRyZlswXSk7CiAJbGFkcmZbMV0gPSBsZTE2X3Rv X2NwdShpbml0YmxrLmxhZHJmWzFdKTsKQEAgLTExNTksNyArMTE1OSwxMSBAQAogI2RlZmluZSBQ Q05FVF9SRUNWX1NUT1JFKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICBpbnQgY291bnQgPSBNSU4oNDA5NiAtIEdFVF9GSUVMRChybWQuYnVmX2xlbmd0aCwgUk1E TCwgQkNOVCksc2l6ZSk7IFwKICAgICB0YXJnZXRfcGh5c19hZGRyX3QgcmJhZHIgPSBQSFlTQURE UihzLCBybWQucmJhZHIpOyAgICAgICAgICBcCi0gICAgcy0+cGh5c19tZW1fd3JpdGUocy0+ZG1h X29wYXF1ZSwgcmJhZHIsIHNyYywgY291bnQsIENTUl9CU1dQKHMpKTsgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICBpZiAoQ1NSX0JTV1AocykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHMtPnBoeXNfbWVtX3dyaXRlX2Jzd2FwKHMtPmRt YV9vcGFxdWUsIHJiYWRyLCBzcmMsIGNvdW50KTsgICAgXAorICAgIGVsc2UgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgcy0+cGh5c19tZW1fd3JpdGUocy0+ZG1hX29wYXF1ZSwgcmJhZHIsIHNyYywgY291bnQpOyAg ICAgICAgICBcCiAgICAgc3JjICs9IGNvdW50OyBzaXplIC09IGNvdW50OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgIFNFVF9GSUVMRCgmcm1kLm1zZ19sZW5ndGgsIFJNRE0s IE1DTlQsIGNvdW50KTsgICAgICAgICAgICAgIFwKICAgICBTRVRfRklFTEQoJnJtZC5zdGF0dXMs IFJNRFMsIE9XTiwgMCk7ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMjUxLDIzICsxMjU1 LDM0IEBACiAgICAgICAgICAgICBzLT54bWl0X3BvcyA9IDA7CiAgICAgICAgICAgICBpZiAoIUdF VF9GSUVMRCh0bWQuc3RhdHVzLCBUTURTLCBFTlApKSB7CiAgICAgICAgICAgICAgICAgaW50IGJj bnQgPSA0MDk2IC0gR0VUX0ZJRUxEKHRtZC5sZW5ndGgsIFRNREwsIEJDTlQpOwotICAgICAgICAg ICAgICAgIHMtPnBoeXNfbWVtX3JlYWQocy0+ZG1hX29wYXF1ZSwgUEhZU0FERFIocywgdG1kLnRi YWRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJ1ZmZlciwgYmNudCwg Q1NSX0JTV1AocykpOworCisgICAgICAgICAgICAgICAgaWYgKENTUl9CU1dQKHMpKQorICAgICAg ICAgICAgICAgICAgICBzLT5waHlzX21lbV9yZWFkX2Jzd2FwKHMtPmRtYV9vcGFxdWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEhZU0FERFIocywgdG1kLnRi YWRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5idWZm ZXIsIGJjbnQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcy0+ cGh5c19tZW1fcmVhZChzLT5kbWFfb3BhcXVlLCBQSFlTQUREUihzLCB0bWQudGJhZHIpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJ1ZmZlciwgYmNudCk7CiAgICAg ICAgICAgICAgICAgcy0+eG1pdF9wb3MgKz0gYmNudDsKICAgICAgICAgICAgIH0KICAgICAgICAg ICAgIHhtaXRfY3hkYSA9IFBIWVNBRERSKHMsQ1NSX0NYREEocykpOwogICAgICAgICB9CiAgICAg ICAgIGlmIChHRVRfRklFTEQodG1kLnN0YXR1cywgVE1EUywgRU5QKSAmJiAocy0+eG1pdF9wb3Mg Pj0gMCkpIHsKICAgICAgICAgICAgIGludCBiY250ID0gNDA5NiAtIEdFVF9GSUVMRCh0bWQubGVu Z3RoLCBUTURMLCBCQ05UKTsKLSAgICAgICAgICAgIHMtPnBoeXNfbWVtX3JlYWQocy0+ZG1hX29w YXF1ZSwgUEhZU0FERFIocywgdG1kLnRiYWRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcy0+YnVmZmVyICsgcy0+eG1pdF9wb3MsIGJjbnQsIENTUl9CU1dQKHMpKTsKKworICAgICAg ICAgICAgaWYgKENTUl9CU1dQKHMpKQorICAgICAgICAgICAgICAgIHMtPnBoeXNfbWVtX3JlYWRf YnN3YXAocy0+ZG1hX29wYXF1ZSwgUEhZU0FERFIocywgdG1kLnRiYWRyKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJ1ZmZlciArIHMtPnhtaXRfcG9zLCBiY250 KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzLT5waHlzX21lbV9yZWFkKHMt PmRtYV9vcGFxdWUsIFBIWVNBRERSKHMsIHRtZC50YmFkciksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzLT5idWZmZXIgKyBzLT54bWl0X3BvcywgYmNudCk7CiAgICAgICAgICAg ICBzLT54bWl0X3BvcyArPSBiY250OwogI2lmZGVmIFBDTkVUX0RFQlVHCiAgICAgICAgICAgICBw cmludGYoInBjbmV0X3RyYW5zbWl0IHNpemU9JWRcbiIsIHMtPnhtaXRfcG9zKTsKICNlbmRpZgot ICAgICAgICAgICAgaWYgKENTUl9MT09QKHMpKQotICAgICAgICAgICAgICAgIHBjbmV0X3JlY2Vp dmUocywgcy0+YnVmZmVyLCBzLT54bWl0X3Bvcyk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAg ICAgICAvLyBYWFggaWYgKENTUl9MT09QKHMpKQorICAgICAgICAgICAgLy8gICAgcGNuZXRfcmVj ZWl2ZShzLCBzLT5idWZmZXIsIHMtPnhtaXRfcG9zKTsKKyAgICAgICAgICAgIC8vZWxzZQogICAg ICAgICAgICAgICAgIGlmIChzLT52YykKICAgICAgICAgICAgICAgICAgICAgcWVtdV9zZW5kX3Bh Y2tldChzLT52Yywgcy0+YnVmZmVyLCBzLT54bWl0X3Bvcyk7CiAKQEAgLTE5NDYsMTggKzE5NjEs NiBAQAogICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoYWRkciwgUENORVRfUE5QTU1J T19TSVpFLCBkLT5tbWlvX2luZGV4KTsKIH0KIAotc3RhdGljIHZvaWQgcGNpX3BoeXNpY2FsX21l bW9yeV93cml0ZSh2b2lkICpkbWFfb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVu LCBpbnQgZG9fYnN3YXApCi17Ci0gICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZShhZGRyLCBi dWYsIGxlbik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBjaV9waHlzaWNhbF9tZW1vcnlfcmVhZCh2b2lk ICpkbWFfb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCkK LXsKLSAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQoYWRkciwgYnVmLCBsZW4pOwotfQotCiB2 b2lkIHBjaV9wY25ldF9pbml0KFBDSUJ1cyAqYnVzLCBOSUNJbmZvICpuZCwgaW50IGRldmZuKQog ewogICAgIFBDTmV0U3RhdGUgKmQ7CkBAIC0yMDAxLDggKzIwMDQsMTAgQEAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBDSV9BRERSRVNTX1NQQUNFX01FTSwgcGNuZXRfbW1pb19tYXApOwog CiAgICAgZC0+aXJxID0gZC0+ZGV2LmlycVswXTsKLSAgICBkLT5waHlzX21lbV9yZWFkID0gcGNp X3BoeXNpY2FsX21lbW9yeV9yZWFkOwotICAgIGQtPnBoeXNfbWVtX3dyaXRlID0gcGNpX3BoeXNp Y2FsX21lbW9yeV93cml0ZTsKKyAgICBkLT5waHlzX21lbV9yZWFkID0gKERNQVJlYWRIYW5kbGVy ICopcGNpX2RldmljZV9kbWFfcmVhZDsKKyAgICBkLT5waHlzX21lbV93cml0ZSA9IChETUFXcml0 ZUhhbmRsZXIgKilwY2lfZGV2aWNlX2RtYV93cml0ZTsKKyAgICBkLT5waHlzX21lbV9yZWFkX2Jz d2FwID0gKERNQVJlYWRIYW5kbGVyICopcGNpX2RldmljZV9kbWFfcmVhZDsKKyAgICBkLT5waHlz X21lbV93cml0ZV9ic3dhcCA9IChETUFXcml0ZUhhbmRsZXIgKilwY2lfZGV2aWNlX2RtYV93cml0 ZTsKICAgICBkLT5wY2lfZGV2ID0gJmQtPmRldjsKIAogICAgIHBjbmV0X2NvbW1vbl9pbml0KGQs IG5kLCAicGNuZXQiKTsKQEAgLTIwNzQsOCArMjA3OSwxMCBAQAogICAgIGNwdV9yZWdpc3Rlcl9w aHlzaWNhbF9tZW1vcnkobGVhZGRyLCA0LCBsYW5jZV9pb19tZW1vcnkpOwogCiAgICAgZC0+aXJx ID0gaXJxOwotICAgIGQtPnBoeXNfbWVtX3JlYWQgPSBsZWRtYV9tZW1vcnlfcmVhZDsKLSAgICBk LT5waHlzX21lbV93cml0ZSA9IGxlZG1hX21lbW9yeV93cml0ZTsKKyAgICBkLT5waHlzX21lbV9y ZWFkID0gKERNQVJlYWRIYW5kbGVyICopbGVkbWFfbWVtb3J5X3JlYWQ7CisgICAgZC0+cGh5c19t ZW1fd3JpdGUgPSAoRE1BV3JpdGVIYW5kbGVyICopbGVkbWFfbWVtb3J5X3dyaXRlOworICAgIGQt PnBoeXNfbWVtX3JlYWRfYnN3YXAgPSAoRE1BUmVhZEhhbmRsZXIgKilsZWRtYV9tZW1vcnlfcmVh ZF9ic3dhcDsKKyAgICBkLT5waHlzX21lbV93cml0ZV9ic3dhcCA9IChETUFXcml0ZUhhbmRsZXIg KilsZWRtYV9tZW1vcnlfd3JpdGVfYnN3YXA7CiAKICAgICBwY25ldF9jb21tb25faW5pdChkLCBu ZCwgImxhbmNlIik7CiB9CkluZGV4OiBxZW11L2h3L3NwYXJjMzJfZG1hLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2h3L3NwYXJjMzJfZG1hLmMJMjAwOC0wNC0xNiAxOToyMToyNC4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvaHcvc3BhcmMzMl9kbWEuYwkyMDA4LTA0LTE2IDE5OjQ1OjIwLjAw MDAwMDAwMCArMDAwMApAQCAtNjYsNyArNjYsNyBAQAogCiAvKiBOb3RlOiBvbiBzcGFyYywgdGhl IGxhbmNlIDE2IGJpdCBidXMgaXMgc3dhcHBlZCAqLwogdm9pZCBsZWRtYV9tZW1vcnlfcmVhZCh2 b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAotICAgICAgICAgICAgICAgICAg ICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCkKKyAgICAgICAgICAgICAg ICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuKQogewogICAgIERNQVN0YXRlICpzID0gb3Bh cXVlOwogICAgIGludCBpOwpAQCAtNzQsMjAgKzc0LDI3IEBACiAgICAgRFBSSU5URigiRE1BIHdy aXRlLCBkaXJlY3Rpb246ICVjLCBhZGRyIDB4JTguOHhcbiIsCiAgICAgICAgICAgICBzLT5kbWFy ZWdzWzBdICYgRE1BX1dSSVRFX01FTSA/ICd3JzogJ3InLCBzLT5kbWFyZWdzWzFdKTsKICAgICBh ZGRyIHw9IHMtPmRtYXJlZ3NbM107Ci0gICAgaWYgKGRvX2Jzd2FwKSB7Ci0gICAgICAgIHNwYXJj X2lvbW11X21lbW9yeV9yZWFkKHMtPmlvbW11LCBhZGRyLCBidWYsIGxlbik7Ci0gICAgfSBlbHNl IHsKLSAgICAgICAgYWRkciAmPSB+MTsKLSAgICAgICAgbGVuICY9IH4xOwotICAgICAgICBzcGFy Y19pb21tdV9tZW1vcnlfcmVhZChzLT5pb21tdSwgYWRkciwgYnVmLCBsZW4pOwotICAgICAgICBm b3IoaSA9IDA7IGkgPCBsZW47IGkgKz0gMikgewotICAgICAgICAgICAgYnN3YXAxNnMoKHVpbnQx Nl90ICopKGJ1ZiArIGkpKTsKLSAgICAgICAgfQorICAgIGFkZHIgJj0gfjE7CisgICAgbGVuICY9 IH4xOworICAgIHNwYXJjX2lvbW11X21lbW9yeV9yZWFkKHMtPmlvbW11LCBhZGRyLCBidWYsIGxl bik7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7CisgICAgICAgIGJzd2FwMTZz KCh1aW50MTZfdCAqKShidWYgKyBpKSk7CiAgICAgfQogfQogCit2b2lkIGxlZG1hX21lbW9yeV9y ZWFkX2Jzd2FwKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKK3sKKyAgICBETUFT dGF0ZSAqcyA9IG9wYXF1ZTsKKworICAgIERQUklOVEYoIkRNQSB3cml0ZSBic3dhcHBlZCwgZGly ZWN0aW9uOiAlYywgYWRkciAweCU4Ljh4XG4iLAorICAgICAgICAgICAgcy0+ZG1hcmVnc1swXSAm IERNQV9XUklURV9NRU0gPyAndyc6ICdyJywgcy0+ZG1hcmVnc1sxXSk7CisgICAgYWRkciB8PSBz LT5kbWFyZWdzWzNdOworICAgIHNwYXJjX2lvbW11X21lbW9yeV9yZWFkKHMtPmlvbW11LCBhZGRy LCBidWYsIGxlbik7Cit9CisKIHZvaWQgbGVkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1ZSwg dGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90 ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ4X3QgKmJ1ZiwgaW50IGxlbikKIHsKICAgICBETUFTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICBp bnQgbCwgaTsKQEAgLTk2LDI2ICsxMDMsMzMgQEAKICAgICBEUFJJTlRGKCJETUEgcmVhZCwgZGly ZWN0aW9uOiAlYywgYWRkciAweCU4Ljh4XG4iLAogICAgICAgICAgICAgcy0+ZG1hcmVnc1swXSAm IERNQV9XUklURV9NRU0gPyAndyc6ICdyJywgcy0+ZG1hcmVnc1sxXSk7CiAgICAgYWRkciB8PSBz LT5kbWFyZWdzWzNdOwotICAgIGlmIChkb19ic3dhcCkgewotICAgICAgICBzcGFyY19pb21tdV9t ZW1vcnlfd3JpdGUocy0+aW9tbXUsIGFkZHIsIGJ1ZiwgbGVuKTsKLSAgICB9IGVsc2UgewotICAg ICAgICBhZGRyICY9IH4xOwotICAgICAgICBsZW4gJj0gfjE7Ci0gICAgICAgIHdoaWxlIChsZW4g PiAwKSB7Ci0gICAgICAgICAgICBsID0gbGVuOwotICAgICAgICAgICAgaWYgKGwgPiBzaXplb2Yo dG1wX2J1ZikpCi0gICAgICAgICAgICAgICAgbCA9IHNpemVvZih0bXBfYnVmKTsKLSAgICAgICAg ICAgIGZvcihpID0gMDsgaSA8IGw7IGkgKz0gMikgewotICAgICAgICAgICAgICAgIHRtcF9idWZb aSA+PiAxXSA9IGJzd2FwMTYoKih1aW50MTZfdCAqKShidWYgKyBpKSk7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgICBzcGFyY19pb21tdV9tZW1vcnlfd3JpdGUocy0+aW9tbXUsIGFkZHIsICh1 aW50OF90ICopdG1wX2J1ZiwgbCk7Ci0gICAgICAgICAgICBsZW4gLT0gbDsKLSAgICAgICAgICAg IGJ1ZiArPSBsOwotICAgICAgICAgICAgYWRkciArPSBsOworICAgIGFkZHIgJj0gfjE7CisgICAg bGVuICY9IH4xOworICAgIHdoaWxlIChsZW4gPiAwKSB7CisgICAgICAgIGwgPSBsZW47CisgICAg ICAgIGlmIChsID4gc2l6ZW9mKHRtcF9idWYpKQorICAgICAgICAgICAgbCA9IHNpemVvZih0bXBf YnVmKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkgKz0gMikgeworICAgICAgICAgICAg dG1wX2J1ZltpID4+IDFdID0gYnN3YXAxNigqKHVpbnQxNl90ICopKGJ1ZiArIGkpKTsKICAgICAg ICAgfQorICAgICAgICBzcGFyY19pb21tdV9tZW1vcnlfd3JpdGUocy0+aW9tbXUsIGFkZHIsICh1 aW50OF90ICopdG1wX2J1ZiwgbCk7CisgICAgICAgIGxlbiAtPSBsOworICAgICAgICBidWYgKz0g bDsKKyAgICAgICAgYWRkciArPSBsOwogICAgIH0KIH0KIAordm9pZCBsZWRtYV9tZW1vcnlfd3Jp dGVfYnN3YXAodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKK3sKKyAgICBETUFT dGF0ZSAqcyA9IG9wYXF1ZTsKKworICAgIERQUklOVEYoIkRNQSByZWFkIGJzd2FwcGVkLCBkaXJl Y3Rpb246ICVjLCBhZGRyIDB4JTguOHhcbiIsCisgICAgICAgICAgICBzLT5kbWFyZWdzWzBdICYg RE1BX1dSSVRFX01FTSA/ICd3JzogJ3InLCBzLT5kbWFyZWdzWzFdKTsKKyAgICBhZGRyIHw9IHMt PmRtYXJlZ3NbM107CisgICAgc3BhcmNfaW9tbXVfbWVtb3J5X3dyaXRlKHMtPmlvbW11LCBhZGRy LCBidWYsIGxlbik7Cit9CisKIHN0YXRpYyB2b2lkIGRtYV9zZXRfaXJxKHZvaWQgKm9wYXF1ZSwg aW50IGlycSwgaW50IGxldmVsKQogewogICAgIERNQVN0YXRlICpzID0gb3BhcXVlOwpJbmRleDog cWVtdS9ody9zcGFyYzMyX2RtYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9zcGFyYzMy X2RtYS5oCTIwMDgtMDQtMTYgMTk6MjE6MjcuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3Nw YXJjMzJfZG1hLmgJMjAwOC0wNC0xNiAxOToyNTowNC4wMDAwMDAwMDAgKzAwMDAKQEAgLTUsOSAr NSwxMyBAQAogdm9pZCAqc3BhcmMzMl9kbWFfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgZGFkZHIs IHFlbXVfaXJxIHBhcmVudF9pcnEsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlvbW11 LCBxZW11X2lycSAqKmRldl9pcnEsIHFlbXVfaXJxICoqcmVzZXQpOwogdm9pZCBsZWRtYV9tZW1v cnlfcmVhZCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAotICAgICAgICAg ICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCk7CisgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbik7Cit2b2lkIGxlZG1hX21l bW9yeV9yZWFkX2Jzd2FwKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbik7CiB2b2lk IGxlZG1hX21lbW9yeV93cml0ZSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRy LAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgZG9f YnN3YXApOworICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuKTsK K3ZvaWQgbGVkbWFfbWVtb3J5X3dyaXRlX2Jzd2FwKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNf YWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYs IGludCBsZW4pOwogdm9pZCBlc3BkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB1aW50OF90 ICpidWYsIGludCBsZW4pOwogdm9pZCBlc3BkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1ZSwg dWludDhfdCAqYnVmLCBpbnQgbGVuKTsKIApJbmRleDogcWVtdS9ody9zdW40bS5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9ody9zdW40bS5oCTIwMDgtMDQtMTYgMTk6MzA6MjEuMDAwMDAwMDAw ICswMDAwCisrKyBxZW11L2h3L3N1bjRtLmgJMjAwOC0wNC0xNiAxOTozMDo1Ni4wMDAwMDAwMDAg KzAwMDAKQEAgLTYzLDE0ICs2Myw3IEBACiB2b2lkIGNzX2luaXQodGFyZ2V0X3BoeXNfYWRkcl90 IGJhc2UsIGludCBpcnEsIHZvaWQgKmludGN0bCk7CiAKIC8qIHNwYXJjMzJfZG1hLmMgKi8KLXZv aWQgKnNwYXJjMzJfZG1hX2luaXQodGFyZ2V0X3BoeXNfYWRkcl90IGRhZGRyLCBxZW11X2lycSBw YXJlbnRfaXJxLAotICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppb21tdSwgcWVtdV9pcnEg KipkZXZfaXJxLCBxZW11X2lycSAqKnJlc2V0KTsKLXZvaWQgbGVkbWFfbWVtb3J5X3JlYWQodm9p ZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKLSAgICAgICAgICAgICAgICAgICAg ICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgZG9fYnN3YXApOwotdm9pZCBsZWRtYV9tZW1v cnlfd3JpdGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKLSAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2FwKTsKLXZv aWQgZXNwZG1hX21lbW9yeV9yZWFkKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqYnVmLCBpbnQgbGVu KTsKLXZvaWQgZXNwZG1hX21lbW9yeV93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmJ1Ziwg aW50IGxlbik7CisjaW5jbHVkZSAic3BhcmMzMl9kbWEuaCIKIAogLyogcGNuZXQuYyAqLwogdm9p ZCBsYW5jZV9pbml0KE5JQ0luZm8gKm5kLCB0YXJnZXRfcGh5c19hZGRyX3QgbGVhZGRyLCB2b2lk ICpkbWFfb3BhcXVlLAo= ------=_Part_15146_28083458.1208460449279 Content-Type: plain/text; name=pcnet_dma_api.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_ff5q34cz Content-Disposition: attachment; filename=pcnet_dma_api.diff SW5kZXg6IHFlbXUvaHcvcGNuZXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGNuZXQu YwkyMDA4LTA0LTE3IDE4OjA2OjI0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wY25ldC5j CTIwMDgtMDQtMTcgMTg6MTA6MzguMDAwMDAwMDAwICswMDAwCkBAIC0xMjMyLDYgKzEyMzIsOSBA QAogewogICAgIHRhcmdldF9waHlzX2FkZHJfdCB4bWl0X2N4ZGEgPSAwOwogICAgIGludCBjb3Vu dCA9IENTUl9YTVRSTChzKS0xOworICAgIElPVmVjdG9yICppdmVjOworICAgIHVuc2lnbmVkIGlu dCBuc2cgPSAwOworCiAgICAgcy0+eG1pdF9wb3MgPSAtMTsKIAogICAgIGlmICghQ1NSX1RYT04o cykpIHsKQEAgLTEyNTEsMTggKzEyNTQsMjEgQEAKICAgICAgICAgcHJpbnRmKCIgIFRNRExPQUQg MHglMDh4XG4iLCBQSFlTQUREUihzLENTUl9DWERBKHMpKSk7CiAgICAgICAgIFBSSU5UX1RNRCgm dG1kKTsKICNlbmRpZgorICAgICAgICBpZiAoQ1NSX0JTV1AocykpCisgICAgICAgICAgICBpdmVj ID0gaW92ZWN0b3JfbmV3KDIsIHMtPnBoeXNfbWVtX3JlYWRfYnN3YXAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMtPnBoeXNfbWVtX3dyaXRlX2Jzd2FwLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzLT5kbWFfb3BhcXVlKTsKKyAgICAgICAgZWxzZQorICAgICAg ICAgICAgaXZlYyA9IGlvdmVjdG9yX25ldygyLCBzLT5waHlzX21lbV9yZWFkLCBzLT5waHlzX21l bV93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ZG1hX29wYXF1ZSk7 CiAgICAgICAgIGlmIChHRVRfRklFTEQodG1kLnN0YXR1cywgVE1EUywgU1RQKSkgewogICAgICAg ICAgICAgcy0+eG1pdF9wb3MgPSAwOwogICAgICAgICAgICAgaWYgKCFHRVRfRklFTEQodG1kLnN0 YXR1cywgVE1EUywgRU5QKSkgewogICAgICAgICAgICAgICAgIGludCBiY250ID0gNDA5NiAtIEdF VF9GSUVMRCh0bWQubGVuZ3RoLCBUTURMLCBCQ05UKTsKIAotICAgICAgICAgICAgICAgIGlmIChD U1JfQlNXUChzKSkKLSAgICAgICAgICAgICAgICAgICAgcy0+cGh5c19tZW1fcmVhZF9ic3dhcChz LT5kbWFfb3BhcXVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBIWVNBRERSKHMsIHRtZC50YmFkciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+YnVmZmVyLCBiY250KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg ICAgICAgICAgICAgICAgIHMtPnBoeXNfbWVtX3JlYWQocy0+ZG1hX29wYXF1ZSwgUEhZU0FERFIo cywgdG1kLnRiYWRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5i dWZmZXIsIGJjbnQpOworICAgICAgICAgICAgICAgIGl2ZWMtPnNnW25zZ10uYmFzZSA9IFBIWVNB RERSKHMsIHRtZC50YmFkcik7CisgICAgICAgICAgICAgICAgaXZlYy0+c2dbbnNnXS5sZW4gPSBi Y250OworICAgICAgICAgICAgICAgIG5zZysrOwogICAgICAgICAgICAgICAgIHMtPnhtaXRfcG9z ICs9IGJjbnQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB4bWl0X2N4ZGEgPSBQSFlTQURE UihzLENTUl9DWERBKHMpKTsKQEAgLTEyNzAsMTIgKzEyNzYsOSBAQAogICAgICAgICBpZiAoR0VU X0ZJRUxEKHRtZC5zdGF0dXMsIFRNRFMsIEVOUCkgJiYgKHMtPnhtaXRfcG9zID49IDApKSB7CiAg ICAgICAgICAgICBpbnQgYmNudCA9IDQwOTYgLSBHRVRfRklFTEQodG1kLmxlbmd0aCwgVE1ETCwg QkNOVCk7CiAKLSAgICAgICAgICAgIGlmIChDU1JfQlNXUChzKSkKLSAgICAgICAgICAgICAgICBz LT5waHlzX21lbV9yZWFkX2Jzd2FwKHMtPmRtYV9vcGFxdWUsIFBIWVNBRERSKHMsIHRtZC50YmFk ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5idWZmZXIgKyBz LT54bWl0X3BvcywgYmNudCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcy0+ cGh5c19tZW1fcmVhZChzLT5kbWFfb3BhcXVlLCBQSFlTQUREUihzLCB0bWQudGJhZHIpLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+YnVmZmVyICsgcy0+eG1pdF9wb3MsIGJj bnQpOworICAgICAgICAgICAgaXZlYy0+c2dbbnNnXS5iYXNlID0gUEhZU0FERFIocywgdG1kLnRi YWRyKTsKKyAgICAgICAgICAgIGl2ZWMtPnNnW25zZ10ubGVuID0gYmNudDsKKyAgICAgICAgICAg IG5zZysrOwogICAgICAgICAgICAgcy0+eG1pdF9wb3MgKz0gYmNudDsKICNpZmRlZiBQQ05FVF9E RUJVRwogICAgICAgICAgICAgcHJpbnRmKCJwY25ldF90cmFuc21pdCBzaXplPSVkXG4iLCBzLT54 bWl0X3Bvcyk7CkBAIC0xMjgzLDkgKzEyODYsMTAgQEAKICAgICAgICAgICAgIC8vIFhYWCBpZiAo Q1NSX0xPT1AocykpCiAgICAgICAgICAgICAvLyAgICBwY25ldF9yZWNlaXZlKHMsIHMtPmJ1ZmZl ciwgcy0+eG1pdF9wb3MpOwogICAgICAgICAgICAgLy9lbHNlCi0gICAgICAgICAgICAgICAgaWYg KHMtPnZjKQotICAgICAgICAgICAgICAgICAgICBxZW11X3NlbmRfcGFja2V0KHMtPnZjLCBzLT5i dWZmZXIsIHMtPnhtaXRfcG9zKTsKKyAgICAgICAgICAgIGlmIChzLT52YykKKyAgICAgICAgICAg ICAgICBxZW11X3NlbmR2X3BhY2tldChzLT52YywgaXZlYyk7CiAKKyAgICAgICAgICAgIGlvdmVj dG9yX2ZyZWUoaXZlYyk7CiAgICAgICAgICAgICBzLT5jc3JbMF0gJj0gfjB4MDAwODsgICAvKiBj bGVhciBURE1EICovCiAgICAgICAgICAgICBzLT5jc3JbNF0gfD0gMHgwMDA0OyAgICAvKiBzZXQg VFhTVFJUICovCiAgICAgICAgICAgICBzLT54bWl0X3BvcyA9IC0xOwo= ------=_Part_15146_28083458.1208460449279 Content-Type: plain/text; name=slirp_iov.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_ff5q39j7 Content-Disposition: attachment; filename=slirp_iov.diff SW5kZXg6IHFlbXUvdmwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwuYwkyMDA3LTExLTEw IDE1OjM1OjUxLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5jCTIwMDctMTEtMTAgMTU6NDA6 NTkuMDAwMDAwMDAwICswMDAwCkBAIC0xNTM3LDggKzE1MzcsNDYgQEAKIH0KIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyog Y2hhcmFjdGVyIGRldmljZSAqLworLyogSGVscGVycyBmb3IgdmVjdG9yZWQgSU8qLworc3RhdGlj IHZvaWQgcWVtdV9yZWFkdl93aXRoX3JlYWQodm9pZCAqb3BhcXVlLCBJT1JlYWRIYW5kbGVyICpm ZF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFl bXVfaW92ZWMgKnZlY3RvciwgaW50IGNvdW50KQoreworI2lmIDEKKyAgICBpbnQgaSwgY3Vycmxl biA9IDA7CisgICAgY2hhciBidWZbODE5Ml07CisKKyAgICBpZiAoZmRfcmVhZCkgeworICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgaWYgKGN1cnJsZW4g KyB2ZWN0b3JbaV0uaW92X2xlbiA8IHNpemVvZihidWYpKQorICAgICAgICAgICAgICAgIG1lbWNw eSgmYnVmW2N1cnJsZW5dLCB2ZWN0b3JbaV0uaW92X2Jhc2UsIHZlY3RvcltpXS5pb3ZfbGVuKTsK KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJhZCBj dXJybGVuICVkIGlvdi5sZW4gJWxkXG4iLCBjdXJybGVuLCB2ZWN0b3JbaV0uaW92X2xlbik7Cisg ICAgICAgICAgICBjdXJybGVuICs9IHZlY3RvcltpXS5pb3ZfbGVuOworICAgICAgICB9CisgICAg ICAgIGZkX3JlYWQob3BhcXVlLCBidWYsIGN1cnJsZW4pOworICAgIH0KKyNlbHNlCisgICAgaW50 IGk7CisKKyAgICBpZiAoZmRfcmVhZCkKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBp KyspCisgICAgICAgICAgICBmZF9yZWFkKG9wYXF1ZSwgdmVjdG9yW2ldLmlvdl9iYXNlLCB2ZWN0 b3JbaV0uaW92X2xlbik7CisjZW5kaWYKK30KIAorc3RhdGljIHZvaWQgcWVtdV9yZWFkX3dpdGhf cmVhZHYodm9pZCAqb3BhcXVlLCBJT1JlYWR2SGFuZGxlciAqZmRfcmVhZHYsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIGludCBzaXplKQorewor ICAgIHN0cnVjdCBxZW11X2lvdmVjIGlvdjsKKworICAgIGlvdi5pb3ZfYmFzZSA9IGJ1ZjsKKyAg ICBpb3YuaW92X2xlbiA9IHNpemU7CisgICAgaWYgKGZkX3JlYWR2KQorICAgICAgICBmZF9yZWFk dihvcGFxdWUsICZpb3YsIDEpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjaGFyYWN0ZXIgZGV2aWNlICovCiBz dGF0aWMgdm9pZCBxZW11X2Nocl9ldmVudChDaGFyRHJpdmVyU3RhdGUgKnMsIGludCBldmVudCkK IHsKICAgICBpZiAoIXMtPmNocl9ldmVudCkKQEAgLTM1NzAsNiArMzYwOCwxOCBAQAogICAgIHJl dHVybiB2YzsKIH0KIAorVkxBTkNsaWVudFN0YXRlICpxZW11X25ld192bGFuX2NsaWVudF9pb3Yo VkxBTlN0YXRlICp2bGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU9SZWFkdkhhbmRsZXIgKmZkX3JlYWR2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQoreworICAgIFZMQU5D bGllbnRTdGF0ZSAqdmM7CisKKyAgICB2YyA9IHFlbXVfbmV3X3ZsYW5fY2xpZW50KHZsYW4sIE5V TEwsIGZkX2Nhbl9yZWFkLCBvcGFxdWUpOworICAgIHZjLT5mZF9yZWFkdiA9IGZkX3JlYWR2Owor ICAgIHJldHVybiB2YzsKK30KKwogaW50IHFlbXVfY2FuX3NlbmRfcGFja2V0KFZMQU5DbGllbnRT dGF0ZSAqdmMxKQogewogICAgIFZMQU5TdGF0ZSAqdmxhbiA9IHZjMS0+dmxhbjsKQEAgLTM1OTUs NyArMzY0NSwyNiBAQAogI2VuZGlmCiAgICAgZm9yKHZjID0gdmxhbi0+Zmlyc3RfY2xpZW50OyB2 YyAhPSBOVUxMOyB2YyA9IHZjLT5uZXh0KSB7CiAgICAgICAgIGlmICh2YyAhPSB2YzEpIHsKLSAg ICAgICAgICAgIHZjLT5mZF9yZWFkKHZjLT5vcGFxdWUsIGJ1Ziwgc2l6ZSk7CisgICAgICAgICAg ICBpZiAodmMtPmZkX3JlYWQpCisgICAgICAgICAgICAgICAgdmMtPmZkX3JlYWQodmMtPm9wYXF1 ZSwgYnVmLCBzaXplKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZjLT5mZF9yZWFkdikKKyAgICAg ICAgICAgICAgICBxZW11X3JlYWRfd2l0aF9yZWFkdih2Yy0+b3BhcXVlLCB2Yy0+ZmRfcmVhZHYs IGJ1Ziwgc2l6ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgcWVtdV9zZW5kX3BhY2tl dF9pb3YoVkxBTkNsaWVudFN0YXRlICp2YzEsIGNvbnN0IHN0cnVjdCBxZW11X2lvdmVjICp2ZWN0 b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCkKK3sKKyAgICBWTEFOU3Rh dGUgKnZsYW4gPSB2YzEtPnZsYW47CisgICAgVkxBTkNsaWVudFN0YXRlICp2YzsKKworICAgIGZv cih2YyA9IHZsYW4tPmZpcnN0X2NsaWVudDsgdmMgIT0gTlVMTDsgdmMgPSB2Yy0+bmV4dCkgewor ICAgICAgICBpZiAodmMgIT0gdmMxKSB7CisgICAgICAgICAgICBpZiAodmMtPmZkX3JlYWR2KQor ICAgICAgICAgICAgICAgIHZjLT5mZF9yZWFkdih2Yy0+b3BhcXVlLCB2ZWN0b3IsIGNvdW50KTsK KyAgICAgICAgICAgIGVsc2UgaWYgKHZjLT5mZF9yZWFkKQorICAgICAgICAgICAgICAgIHFlbXVf cmVhZHZfd2l0aF9yZWFkKHZjLT5vcGFxdWUsIHZjLT5mZF9yZWFkLCB2ZWN0b3IsIGNvdW50KTsK ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTM2MjMsNiArMzY5MiwxMyBAQAogICAgIHFlbXVfc2Vu ZF9wYWNrZXQoc2xpcnBfdmMsIHBrdCwgcGt0X2xlbik7CiB9CiAKK3ZvaWQgc2xpcnBfb3V0cHV0 X2lvdihjb25zdCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqdmVjdG9yLCBpbnQgY291bnQpCit7CisgICAg aWYgKCFzbGlycF92YykKKyAgICAgICAgcmV0dXJuOworICAgIHFlbXVfc2VuZF9wYWNrZXRfaW92 KHNsaXJwX3ZjLCB2ZWN0b3IsIGNvdW50KTsKK30KKwogc3RhdGljIHZvaWQgc2xpcnBfcmVjZWl2 ZSh2b2lkICpvcGFxdWUsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUpCiB7CiAjaWYgMApA QCAtNDk0MSwxMyArNTAxNywxMiBAQAogCiBzdGF0aWMgSU9IYW5kbGVyUmVjb3JkICpmaXJzdF9p b19oYW5kbGVyOwogCi0vKiBYWFg6IGZkX3JlYWRfcG9sbCBzaG91bGQgYmUgc3VwcHJlc3NlZCwg YnV0IGFuIEFQSSBjaGFuZ2UgaXMKLSAgIG5lY2Vzc2FyeSBpbiB0aGUgY2hhcmFjdGVyIGRldmlj ZXMgdG8gc3VwcHJlc3MgZmRfY2FuX3JlYWQoKS4gKi8KLWludCBxZW11X3NldF9mZF9oYW5kbGVy MihpbnQgZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX3Jl YWRfcG9sbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJT0hhbmRsZXIgKmZkX3JlYWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgSU9IYW5kbGVyICpmZF93cml0ZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICpvcGFxdWUpCitzdGF0aWMgSU9IYW5kbGVyUmVjb3JkICoKK3Fl bXVfc2V0X2ZkX2hhbmRsZXIzKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgIElPQ2FuUldI YW5kbGVyICpmZF9yZWFkX3BvbGwsCisgICAgICAgICAgICAgICAgICAgICBJT0hhbmRsZXIgKmZk X3JlYWQsCisgICAgICAgICAgICAgICAgICAgICBJT0hhbmRsZXIgKmZkX3dyaXRlLAorICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQogewogICAgIElPSGFuZGxlclJlY29yZCAqKnBp b2gsICppb2g7CiAKQEAgLTQ5NzAsMTcgKzUwNDUsMzggQEAKICAgICAgICAgfQogICAgICAgICBp b2ggPSBxZW11X21hbGxvY3ooc2l6ZW9mKElPSGFuZGxlclJlY29yZCkpOwogICAgICAgICBpZiAo IWlvaCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwog ICAgICAgICBpb2gtPm5leHQgPSBmaXJzdF9pb19oYW5kbGVyOwogICAgICAgICBmaXJzdF9pb19o YW5kbGVyID0gaW9oOwogICAgIGZvdW5kOgogICAgICAgICBpb2gtPmZkID0gZmQ7CiAgICAgICAg IGlvaC0+ZmRfcmVhZF9wb2xsID0gZmRfcmVhZF9wb2xsOwogICAgICAgICBpb2gtPmZkX3JlYWQg PSBmZF9yZWFkOworI2lmIDAKKyAgICAgICAgaWYgKCFmZF9yZWFkKQorICAgICAgICAgICAgaW9o LT5mZF9yZWFkdiA9IE5VTEw7CisjZW5kaWYKICAgICAgICAgaW9oLT5mZF93cml0ZSA9IGZkX3dy aXRlOwogICAgICAgICBpb2gtPm9wYXF1ZSA9IG9wYXF1ZTsKICAgICAgICAgaW9oLT5kZWxldGVk ID0gMDsKICAgICB9CisgICAgcmV0dXJuIGlvaDsKK30KKworLyogWFhYOiBmZF9yZWFkX3BvbGwg c2hvdWxkIGJlIHN1cHByZXNzZWQsIGJ1dCBhbiBBUEkgY2hhbmdlIGlzCisgICBuZWNlc3Nhcnkg aW4gdGhlIGNoYXJhY3RlciBkZXZpY2VzIHRvIHN1cHByZXNzIGZkX2Nhbl9yZWFkKCkuICovCitp bnQgcWVtdV9zZXRfZmRfaGFuZGxlcjIoaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAg IElPQ2FuUldIYW5kbGVyICpmZF9yZWFkX3BvbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg SU9IYW5kbGVyICpmZF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgIElPSGFuZGxlciAq ZmRfd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQoreworICAg IElPSGFuZGxlclJlY29yZCAqaW9oOworCisgICAgaW9oID0gcWVtdV9zZXRfZmRfaGFuZGxlcjMo ZmQsIE5VTEwsIGZkX3JlYWQsIGZkX3dyaXRlLCBvcGFxdWUpOworICAgIGlmICghaW9oKQorICAg ICAgICByZXR1cm4gLTE7CisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDk5Miw2ICs1MDg4LDI1 IEBACiAgICAgcmV0dXJuIHFlbXVfc2V0X2ZkX2hhbmRsZXIyKGZkLCBOVUxMLCBmZF9yZWFkLCBm ZF93cml0ZSwgb3BhcXVlKTsKIH0KIAorI2lmIDAKK2ludCBxZW11X3NldF9mZF9oYW5kbGVyX2lv dihpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9IYW5kbGVyICpmZF9yZWFk diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT0hhbmRsZXIgKmZkX3dyaXRldiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUpCit7CisgICAgSU9IYW5kbGVy UmVjb3JkICppb2g7CisKKyAgICBpb2ggPSBxZW11X3NldF9mZF9oYW5kbGVyMyhmZCwgTlVMTCwg TlVMTCwgTlVMTCwgb3BhcXVlKTsKKyAgICBpZiAoIWlvaCkKKyAgICAgICAgcmV0dXJuIC0xOwor CisgICAgaW9oLT5mZF9yZWFkdiA9IGZkX3JlYWR2OworICAgIGlvaC0+ZmRfd3JpdGV2ID0gZmRf d3JpdGV2OworCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogUG9sbGluZyBo YW5kbGluZyAqLwogCkluZGV4OiBxZW11L3ZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3Zs LmgJMjAwNy0xMS0xMCAxNTo0MDo1My4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdmwuaAkyMDA3 LTExLTEwIDE1OjQwOjU5LjAwMDAwMDAwMCArMDAwMApAQCAtMjY3LDYgKzI2NywxMiBAQAogLyog YXN5bmMgSS9PIHN1cHBvcnQgKi8KIAogdHlwZWRlZiB2b2lkIElPUmVhZEhhbmRsZXIodm9pZCAq b3BhcXVlLCBjb25zdCB1aW50OF90ICpidWYsIGludCBzaXplKTsKK3N0cnVjdCBxZW11X2lvdmVj IHsKKyAgICB2b2lkICppb3ZfYmFzZTsKKyAgICBzaXplX3QgaW92X2xlbjsKK307Cit0eXBlZGVm IHZvaWQgSU9SZWFkdkhhbmRsZXIodm9pZCAqb3BhcXVlLCBjb25zdCBzdHJ1Y3QgcWVtdV9pb3Zl YyAqdmVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCk7CiB0eXBl ZGVmIGludCBJT0NhblJXSGFuZGxlcih2b2lkICpvcGFxdWUpOwogdHlwZWRlZiB2b2lkIElPSGFu ZGxlcih2b2lkICpvcGFxdWUpOwogCkBAIC0yNzksNiArMjg1LDEwIEBACiAgICAgICAgICAgICAg ICAgICAgICAgICBJT0hhbmRsZXIgKmZkX3JlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBJ T0hhbmRsZXIgKmZkX3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVl KTsKK2ludCBxZW11X3NldF9mZF9oYW5kbGVyX2lvdihpbnQgZmQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSU9IYW5kbGVyICpmZF9yZWFkdiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJT0hhbmRsZXIgKmZkX3dyaXRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpvcGFxdWUpOwogCiAvKiBQb2xsaW5nIGhhbmRsaW5nICovCiAKQEAgLTQzMyw2ICs0NDMs NyBAQAogCiBzdHJ1Y3QgVkxBTkNsaWVudFN0YXRlIHsKICAgICBJT1JlYWRIYW5kbGVyICpmZF9y ZWFkOworICAgIElPUmVhZHZIYW5kbGVyICpmZF9yZWFkdjsKICAgICAvKiBQYWNrZXRzIG1heSBz dGlsbCBiZSBzZW50IGlmIHRoaXMgcmV0dXJucyB6ZXJvLiAgSXQncyB1c2VkIHRvCiAgICAgICAg cmF0ZS1saW1pdCB0aGUgc2xpcnAgY29kZS4gICovCiAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX2Nh bl9yZWFkOwpAQCAtNDU0LDggKzQ2NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJT1JlYWRIYW5kbGVyICpmZF9yZWFkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJT0NhblJXSGFuZGxlciAqZmRfY2FuX3JlYWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSk7CitWTEFOQ2xpZW50U3Rh dGUgKnFlbXVfbmV3X3ZsYW5fY2xpZW50X2lvdihWTEFOU3RhdGUgKnZsYW4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JlYWR2SGFuZGxlciAqZmRfcmVhZHYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT0NhblJXSGFuZGxl ciAqZmRfY2FuX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpvcGFxdWUpOwogaW50IHFlbXVfY2FuX3NlbmRfcGFja2V0KFZMQU5DbGllbnRTdGF0 ZSAqdmMpOwogdm9pZCBxZW11X3NlbmRfcGFja2V0KFZMQU5DbGllbnRTdGF0ZSAqdmMsIGNvbnN0 IHVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUpOwordm9pZCBxZW11X3NlbmRfcGFja2V0X2lvdihWTEFO Q2xpZW50U3RhdGUgKnZjLCBjb25zdCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqdmVjdG9yLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQpOwogdm9pZCBxZW11X2hhbmRsZXJfdHJ1ZSh2 b2lkICpvcGFxdWUpOwogCiB2b2lkIGRvX2luZm9fbmV0d29yayh2b2lkKTsKSW5kZXg6IHFlbXUv c2xpcnAvbGlic2xpcnAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvbGlic2xpcnAu aAkyMDA3LTEwLTI3IDE0OjU4OjQwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9saWJz bGlycC5oCTIwMDctMTEtMTAgMTU6NDA6NTkuMDAwMDAwMDAwICswMDAwCkBAIC0xNyw2ICsxNyw4 IEBACiAvKiB5b3UgbXVzdCBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiAqLwogaW50 IHNsaXJwX2Nhbl9vdXRwdXQodm9pZCk7CiB2b2lkIHNsaXJwX291dHB1dChjb25zdCB1aW50OF90 ICpwa3QsIGludCBwa3RfbGVuKTsKK3N0cnVjdCBxZW11X2lvdmVjOwordm9pZCBzbGlycF9vdXRw dXRfaW92KGNvbnN0IHN0cnVjdCBxZW11X2lvdmVjICp2ZWN0b3IsIGludCBjb3VudCk7CiAKIGlu dCBzbGlycF9yZWRpcihpbnQgaXNfdWRwLCBpbnQgaG9zdF9wb3J0LAogICAgICAgICAgICAgICAg IHN0cnVjdCBpbl9hZGRyIGd1ZXN0X2FkZHIsIGludCBndWVzdF9wb3J0KTsKSW5kZXg6IHFlbXUv c2xpcnAvc2xpcnAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvc2xpcnAuYwkyMDA3 LTEwLTI3IDE0OjU4OjQwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9zbGlycC5jCTIw MDctMTEtMTAgMTU6NDA6NTkuMDAwMDAwMDAwICswMDAwCkBAIC02MzYsMTkgKzYzNiwyMiBAQAog Lyogb3V0cHV0IHRoZSBJUCBwYWNrZXQgdG8gdGhlIGV0aGVybmV0IGRldmljZSAqLwogdm9pZCBp Zl9lbmNhcChjb25zdCB1aW50OF90ICppcF9kYXRhLCBpbnQgaXBfZGF0YV9sZW4pCiB7Ci0gICAg dWludDhfdCBidWZbMTYwMF07Ci0gICAgc3RydWN0IGV0aGhkciAqZWggPSAoc3RydWN0IGV0aGhk ciAqKWJ1ZjsKLQotICAgIGlmIChpcF9kYXRhX2xlbiArIEVUSF9ITEVOID4gc2l6ZW9mKGJ1Zikp Ci0gICAgICAgIHJldHVybjsKKyAgICBzdHJ1Y3QgZXRoaGRyIGJ1ZiwgKmVoID0gJmJ1ZjsKKyAg ICBzdHJ1Y3QgeworICAgICAgICB2b2lkICpkYXRhOworICAgICAgICBzaXplX3QgbGVuOworICAg IH0gaW92WzJdOwogCiAgICAgbWVtY3B5KGVoLT5oX2Rlc3QsIGNsaWVudF9ldGhhZGRyLCBFVEhf QUxFTik7CiAgICAgbWVtY3B5KGVoLT5oX3NvdXJjZSwgc3BlY2lhbF9ldGhhZGRyLCBFVEhfQUxF TiAtIDEpOwogICAgIC8qIFhYWDogbm90IGNvcnJlY3QgKi8KICAgICBlaC0+aF9zb3VyY2VbNV0g PSBDVExfQUxJQVM7CiAgICAgZWgtPmhfcHJvdG8gPSBodG9ucyhFVEhfUF9JUCk7Ci0gICAgbWVt Y3B5KGJ1ZiArIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSwgaXBfZGF0YSwgaXBfZGF0YV9sZW4pOwot ICAgIHNsaXJwX291dHB1dChidWYsIGlwX2RhdGFfbGVuICsgRVRIX0hMRU4pOworICAgIGlvdlsw XS5kYXRhID0gJmJ1ZjsKKyAgICBpb3ZbMF0ubGVuID0gc2l6ZW9mKHN0cnVjdCBldGhoZHIpOwor ICAgIGlvdlsxXS5kYXRhID0gaXBfZGF0YTsKKyAgICBpb3ZbMV0ubGVuID0gaXBfZGF0YV9sZW47 CisgICAgc2xpcnBfb3V0cHV0X2lvdihpb3YsIDIpOwogfQogCiBpbnQgc2xpcnBfcmVkaXIoaW50 IGlzX3VkcCwgaW50IGhvc3RfcG9ydCwK ------=_Part_15146_28083458.1208460449279--