From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JmDf7-0008Gy-2H for qemu-devel@nongnu.org; Wed, 16 Apr 2008 15:51:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JmDf5-0008GU-BV for qemu-devel@nongnu.org; Wed, 16 Apr 2008 15:51:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JmDf4-0008GK-UF for qemu-devel@nongnu.org; Wed, 16 Apr 2008 15:51:19 -0400 Received: from nf-out-0910.google.com ([64.233.182.188]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JmDf3-0004Ra-QN for qemu-devel@nongnu.org; Wed, 16 Apr 2008 15:51:18 -0400 Received: by nf-out-0910.google.com with SMTP id 30so827691nfu.12 for ; Wed, 16 Apr 2008 12:51:09 -0700 (PDT) Message-ID: Date: Wed, 16 Apr 2008 22:51:08 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] [PATCH 1/5] PCI DMA API (v3) In-Reply-To: <1208297491-1287-1-git-send-email-aliguori@us.ibm.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_11756_8807481.1208375468666" References: <1208297491-1287-1-git-send-email-aliguori@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: qemu-devel@nongnu.org Cc: kvm-devel@lists.sourceforge.net, Marcelo Tosatti , Anthony Liguori , Paul Brook , Aurelien Jarno ------=_Part_11756_8807481.1208375468666 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline 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. 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. ------=_Part_11756_8807481.1208375468666 Content-Type: plain/text; name=pcnet_dma_api.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_ff4bhq73 Content-Disposition: attachment; filename=pcnet_dma_api.diff SW5kZXg6IHFlbXUvaHcvcGNuZXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGNuZXQu YwkyMDA4LTA0LTE2IDE4OjQ5OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wY25ldC5j CTIwMDgtMDQtMTYgMTk6NDU6MTEuMDAwMDAwMDAwICswMDAwCkBAIC03MSwxMCArNzEsMTAgQEAK 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 IFJNRFMsIE9XTiwgMCk7ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMjI4LDYgKzEyMzIs OSBAQAogewogICAgIHRhcmdldF9waHlzX2FkZHJfdCB4bWl0X2N4ZGEgPSAwOwogICAgIGludCBj b3VudCA9IENTUl9YTVRSTChzKS0xOworICAgIElPVmVjdG9yICppdmVjOworICAgIHVuc2lnbmVk IGludCBuc2cgPSAwOworCiAgICAgcy0+eG1pdF9wb3MgPSAtMTsKIAogICAgIGlmICghQ1NSX1RY T04ocykpIHsKQEAgLTEyNDcsMjkgKzEyNTQsNDAgQEAKICAgICAgICAgcHJpbnRmKCIgIFRNRExP QUQgMHglMDh4XG4iLCBQSFlTQUREUihzLENTUl9DWERBKHMpKSk7CiAgICAgICAgIFBSSU5UX1RN RCgmdG1kKTsKICNlbmRpZgorICAgICAgICBpZiAoQ1NSX0JTV1AocykpCisgICAgICAgICAgICBp dmVjID0gaW92ZWN0b3JfbmV3KDIsIHMtPnBoeXNfbWVtX3JlYWRfYnN3YXAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPnBoeXNfbWVtX3dyaXRlX2Jzd2FwLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5kbWFfb3BhcXVlKTsKKyAgICAgICAgZWxzZQorICAg ICAgICAgICAgaXZlYyA9IGlvdmVjdG9yX25ldygyLCBzLT5waHlzX21lbV9yZWFkLCBzLT5waHlz X21lbV93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ZG1hX29wYXF1 ZSk7CiAgICAgICAgIGlmIChHRVRfRklFTEQodG1kLnN0YXR1cywgVE1EUywgU1RQKSkgewogICAg ICAgICAgICAgcy0+eG1pdF9wb3MgPSAwOwogICAgICAgICAgICAgaWYgKCFHRVRfRklFTEQodG1k LnN0YXR1cywgVE1EUywgRU5QKSkgewogICAgICAgICAgICAgICAgIGludCBiY250ID0gNDA5NiAt IEdFVF9GSUVMRCh0bWQubGVuZ3RoLCBUTURMLCBCQ05UKTsKLSAgICAgICAgICAgICAgICBzLT5w aHlzX21lbV9yZWFkKHMtPmRtYV9vcGFxdWUsIFBIWVNBRERSKHMsIHRtZC50YmFkciksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5idWZmZXIsIGJjbnQsIENTUl9CU1dQKHMp KTsKKworICAgICAgICAgICAgICAgIGl2ZWMtPnNnW25zZ10uYmFzZSA9IFBIWVNBRERSKHMsIHRt ZC50YmFkcik7CisgICAgICAgICAgICAgICAgaXZlYy0+c2dbbnNnXS5sZW4gPSBiY250OworICAg ICAgICAgICAgICAgIG5zZysrOwogICAgICAgICAgICAgICAgIHMtPnhtaXRfcG9zICs9IGJjbnQ7 CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB4bWl0X2N4ZGEgPSBQSFlTQUREUihzLENTUl9D WERBKHMpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoR0VUX0ZJRUxEKHRtZC5zdGF0dXMsIFRN RFMsIEVOUCkgJiYgKHMtPnhtaXRfcG9zID49IDApKSB7CiAgICAgICAgICAgICBpbnQgYmNudCA9 IDQwOTYgLSBHRVRfRklFTEQodG1kLmxlbmd0aCwgVE1ETCwgQkNOVCk7Ci0gICAgICAgICAgICBz LT5waHlzX21lbV9yZWFkKHMtPmRtYV9vcGFxdWUsIFBIWVNBRERSKHMsIHRtZC50YmFkciksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJ1ZmZlciArIHMtPnhtaXRfcG9zLCBiY250 LCBDU1JfQlNXUChzKSk7CisKKyAgICAgICAgICAgIGl2ZWMtPnNnW25zZ10uYmFzZSA9IFBIWVNB RERSKHMsIHRtZC50YmFkcik7CisgICAgICAgICAgICBpdmVjLT5zZ1tuc2ddLmxlbiA9IGJjbnQ7 CisgICAgICAgICAgICBuc2crKzsKICAgICAgICAgICAgIHMtPnhtaXRfcG9zICs9IGJjbnQ7CiAj aWZkZWYgUENORVRfREVCVUcKICAgICAgICAgICAgIHByaW50ZigicGNuZXRfdHJhbnNtaXQgc2l6 ZT0lZFxuIiwgcy0+eG1pdF9wb3MpOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAoQ1NSX0xPT1Ao cykpCi0gICAgICAgICAgICAgICAgcGNuZXRfcmVjZWl2ZShzLCBzLT5idWZmZXIsIHMtPnhtaXRf cG9zKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8vIFhYWCBpZiAoQ1NSX0xPT1Ao cykpCisgICAgICAgICAgICAvLyAgICBwY25ldF9yZWNlaXZlKHMsIHMtPmJ1ZmZlciwgcy0+eG1p dF9wb3MpOworICAgICAgICAgICAgLy9lbHNlCiAgICAgICAgICAgICAgICAgaWYgKHMtPnZjKQot ICAgICAgICAgICAgICAgICAgICBxZW11X3NlbmRfcGFja2V0KHMtPnZjLCBzLT5idWZmZXIsIHMt PnhtaXRfcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgcWVtdV9zZW5kdl9wYWNrZXQocy0+dmMs IGl2ZWMpOwogCiAgICAgICAgICAgICBzLT5jc3JbMF0gJj0gfjB4MDAwODsgICAvKiBjbGVhciBU RE1EICovCiAgICAgICAgICAgICBzLT5jc3JbNF0gfD0gMHgwMDA0OyAgICAvKiBzZXQgVFhTVFJU ICovCkBAIC0xOTQ2LDE4ICsxOTY0LDYgQEAKICAgICBjcHVfcmVnaXN0ZXJfcGh5c2ljYWxfbWVt b3J5KGFkZHIsIFBDTkVUX1BOUE1NSU9fU0laRSwgZC0+bW1pb19pbmRleCk7CiB9CiAKLXN0YXRp YyB2b2lkIHBjaV9waHlzaWNhbF9tZW1vcnlfd3JpdGUodm9pZCAqZG1hX29wYXF1ZSwgdGFyZ2V0 X3BoeXNfYWRkcl90IGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2FwKQotewotICAgIGNwdV9waHlzaWNh bF9tZW1vcnlfd3JpdGUoYWRkciwgYnVmLCBsZW4pOwotfQotCi1zdGF0aWMgdm9pZCBwY2lfcGh5 c2ljYWxfbWVtb3J5X3JlYWQodm9pZCAqZG1hX29wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFk ZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBp bnQgbGVuLCBpbnQgZG9fYnN3YXApCi17Ci0gICAgY3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKGFk ZHIsIGJ1ZiwgbGVuKTsKLX0KLQogdm9pZCBwY2lfcGNuZXRfaW5pdChQQ0lCdXMgKmJ1cywgTklD SW5mbyAqbmQsIGludCBkZXZmbikKIHsKICAgICBQQ05ldFN0YXRlICpkOwpAQCAtMjAwMSw4ICsy MDA3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQUREUkVTU19TUEFDRV9N RU0sIHBjbmV0X21taW9fbWFwKTsKIAogICAgIGQtPmlycSA9IGQtPmRldi5pcnFbMF07Ci0gICAg ZC0+cGh5c19tZW1fcmVhZCA9IHBjaV9waHlzaWNhbF9tZW1vcnlfcmVhZDsKLSAgICBkLT5waHlz X21lbV93cml0ZSA9IHBjaV9waHlzaWNhbF9tZW1vcnlfd3JpdGU7CisgICAgZC0+cGh5c19tZW1f cmVhZCA9IChETUFSZWFkSGFuZGxlciAqKXBjaV9kZXZpY2VfZG1hX3JlYWQ7CisgICAgZC0+cGh5 c19tZW1fd3JpdGUgPSAoRE1BV3JpdGVIYW5kbGVyICopcGNpX2RldmljZV9kbWFfd3JpdGU7Cisg ICAgZC0+cGh5c19tZW1fcmVhZF9ic3dhcCA9IChETUFSZWFkSGFuZGxlciAqKXBjaV9kZXZpY2Vf ZG1hX3JlYWQ7CisgICAgZC0+cGh5c19tZW1fd3JpdGVfYnN3YXAgPSAoRE1BV3JpdGVIYW5kbGVy ICopcGNpX2RldmljZV9kbWFfd3JpdGU7CiAgICAgZC0+cGNpX2RldiA9ICZkLT5kZXY7CiAKICAg ICBwY25ldF9jb21tb25faW5pdChkLCBuZCwgInBjbmV0Iik7CkBAIC0yMDc0LDggKzIwODIsMTAg QEAKICAgICBjcHVfcmVnaXN0ZXJfcGh5c2ljYWxfbWVtb3J5KGxlYWRkciwgNCwgbGFuY2VfaW9f bWVtb3J5KTsKIAogICAgIGQtPmlycSA9IGlycTsKLSAgICBkLT5waHlzX21lbV9yZWFkID0gbGVk bWFfbWVtb3J5X3JlYWQ7Ci0gICAgZC0+cGh5c19tZW1fd3JpdGUgPSBsZWRtYV9tZW1vcnlfd3Jp dGU7CisgICAgZC0+cGh5c19tZW1fcmVhZCA9IChETUFSZWFkSGFuZGxlciAqKWxlZG1hX21lbW9y eV9yZWFkOworICAgIGQtPnBoeXNfbWVtX3dyaXRlID0gKERNQVdyaXRlSGFuZGxlciAqKWxlZG1h X21lbW9yeV93cml0ZTsKKyAgICBkLT5waHlzX21lbV9yZWFkX2Jzd2FwID0gKERNQVJlYWRIYW5k bGVyICopbGVkbWFfbWVtb3J5X3JlYWRfYnN3YXA7CisgICAgZC0+cGh5c19tZW1fd3JpdGVfYnN3 YXAgPSAoRE1BV3JpdGVIYW5kbGVyICopbGVkbWFfbWVtb3J5X3dyaXRlX2Jzd2FwOwogCiAgICAg cGNuZXRfY29tbW9uX2luaXQoZCwgbmQsICJsYW5jZSIpOwogfQpJbmRleDogcWVtdS9ody9zcGFy YzMyX2RtYS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9zcGFyYzMyX2RtYS5jCTIwMDgt MDQtMTYgMTk6MjE6MjQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3NwYXJjMzJfZG1hLmMJ MjAwOC0wNC0xNiAxOTo0NToyMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTY2LDcgKzY2LDcgQEAKIAog LyogTm90ZTogb24gc3BhcmMsIHRoZSBsYW5jZSAxNiBiaXQgYnVzIGlzIHN3YXBwZWQgKi8KIHZv aWQgbGVkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRk ciwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgZG9f YnN3YXApCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKIHsK ICAgICBETUFTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICBpbnQgaTsKQEAgLTc0LDIwICs3NCwyNyBA QAogICAgIERQUklOVEYoIkRNQSB3cml0ZSwgZGlyZWN0aW9uOiAlYywgYWRkciAweCU4Ljh4XG4i LAogICAgICAgICAgICAgcy0+ZG1hcmVnc1swXSAmIERNQV9XUklURV9NRU0gPyAndyc6ICdyJywg cy0+ZG1hcmVnc1sxXSk7CiAgICAgYWRkciB8PSBzLT5kbWFyZWdzWzNdOwotICAgIGlmIChkb19i c3dhcCkgewotICAgICAgICBzcGFyY19pb21tdV9tZW1vcnlfcmVhZChzLT5pb21tdSwgYWRkciwg YnVmLCBsZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFkZHIgJj0gfjE7Ci0gICAgICAgIGxl biAmPSB+MTsKLSAgICAgICAgc3BhcmNfaW9tbXVfbWVtb3J5X3JlYWQocy0+aW9tbXUsIGFkZHIs IGJ1ZiwgbGVuKTsKLSAgICAgICAgZm9yKGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHsKLSAgICAg ICAgICAgIGJzd2FwMTZzKCh1aW50MTZfdCAqKShidWYgKyBpKSk7Ci0gICAgICAgIH0KKyAgICBh ZGRyICY9IH4xOworICAgIGxlbiAmPSB+MTsKKyAgICBzcGFyY19pb21tdV9tZW1vcnlfcmVhZChz LT5pb21tdSwgYWRkciwgYnVmLCBsZW4pOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0g MikgeworICAgICAgICBic3dhcDE2cygodWludDE2X3QgKikoYnVmICsgaSkpOwogICAgIH0KIH0K IAordm9pZCBsZWRtYV9tZW1vcnlfcmVhZF9ic3dhcCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlz X2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYs IGludCBsZW4pCit7CisgICAgRE1BU3RhdGUgKnMgPSBvcGFxdWU7CisKKyAgICBEUFJJTlRGKCJE TUEgd3JpdGUgYnN3YXBwZWQsIGRpcmVjdGlvbjogJWMsIGFkZHIgMHglOC44eFxuIiwKKyAgICAg ICAgICAgIHMtPmRtYXJlZ3NbMF0gJiBETUFfV1JJVEVfTUVNID8gJ3cnOiAncicsIHMtPmRtYXJl Z3NbMV0pOworICAgIGFkZHIgfD0gcy0+ZG1hcmVnc1szXTsKKyAgICBzcGFyY19pb21tdV9tZW1v cnlfcmVhZChzLT5pb21tdSwgYWRkciwgYnVmLCBsZW4pOworfQorCiB2b2lkIGxlZG1hX21lbW9y eV93cml0ZSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAotICAgICAgICAg ICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgZG9fYnN3YXApCisgICAg ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4pCiB7CiAgICAgRE1BU3Rh dGUgKnMgPSBvcGFxdWU7CiAgICAgaW50IGwsIGk7CkBAIC05NiwyNiArMTAzLDMzIEBACiAgICAg RFBSSU5URigiRE1BIHJlYWQsIGRpcmVjdGlvbjogJWMsIGFkZHIgMHglOC44eFxuIiwKICAgICAg ICAgICAgIHMtPmRtYXJlZ3NbMF0gJiBETUFfV1JJVEVfTUVNID8gJ3cnOiAncicsIHMtPmRtYXJl Z3NbMV0pOwogICAgIGFkZHIgfD0gcy0+ZG1hcmVnc1szXTsKLSAgICBpZiAoZG9fYnN3YXApIHsK LSAgICAgICAgc3BhcmNfaW9tbXVfbWVtb3J5X3dyaXRlKHMtPmlvbW11LCBhZGRyLCBidWYsIGxl bik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYWRkciAmPSB+MTsKLSAgICAgICAgbGVuICY9IH4x OwotICAgICAgICB3aGlsZSAobGVuID4gMCkgewotICAgICAgICAgICAgbCA9IGxlbjsKLSAgICAg ICAgICAgIGlmIChsID4gc2l6ZW9mKHRtcF9idWYpKQotICAgICAgICAgICAgICAgIGwgPSBzaXpl b2YodG1wX2J1Zik7Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBsOyBpICs9IDIpIHsKLSAg ICAgICAgICAgICAgICB0bXBfYnVmW2kgPj4gMV0gPSBic3dhcDE2KCoodWludDE2X3QgKikoYnVm ICsgaSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3BhcmNfaW9tbXVfbWVtb3J5X3dy aXRlKHMtPmlvbW11LCBhZGRyLCAodWludDhfdCAqKXRtcF9idWYsIGwpOwotICAgICAgICAgICAg bGVuIC09IGw7Ci0gICAgICAgICAgICBidWYgKz0gbDsKLSAgICAgICAgICAgIGFkZHIgKz0gbDsK KyAgICBhZGRyICY9IH4xOworICAgIGxlbiAmPSB+MTsKKyAgICB3aGlsZSAobGVuID4gMCkgewor ICAgICAgICBsID0gbGVuOworICAgICAgICBpZiAobCA+IHNpemVvZih0bXBfYnVmKSkKKyAgICAg ICAgICAgIGwgPSBzaXplb2YodG1wX2J1Zik7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBp ICs9IDIpIHsKKyAgICAgICAgICAgIHRtcF9idWZbaSA+PiAxXSA9IGJzd2FwMTYoKih1aW50MTZf dCAqKShidWYgKyBpKSk7CiAgICAgICAgIH0KKyAgICAgICAgc3BhcmNfaW9tbXVfbWVtb3J5X3dy aXRlKHMtPmlvbW11LCBhZGRyLCAodWludDhfdCAqKXRtcF9idWYsIGwpOworICAgICAgICBsZW4g LT0gbDsKKyAgICAgICAgYnVmICs9IGw7CisgICAgICAgIGFkZHIgKz0gbDsKICAgICB9CiB9CiAK K3ZvaWQgbGVkbWFfbWVtb3J5X3dyaXRlX2Jzd2FwKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNf YWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYs IGludCBsZW4pCit7CisgICAgRE1BU3RhdGUgKnMgPSBvcGFxdWU7CisKKyAgICBEUFJJTlRGKCJE TUEgcmVhZCBic3dhcHBlZCwgZGlyZWN0aW9uOiAlYywgYWRkciAweCU4Ljh4XG4iLAorICAgICAg ICAgICAgcy0+ZG1hcmVnc1swXSAmIERNQV9XUklURV9NRU0gPyAndyc6ICdyJywgcy0+ZG1hcmVn c1sxXSk7CisgICAgYWRkciB8PSBzLT5kbWFyZWdzWzNdOworICAgIHNwYXJjX2lvbW11X21lbW9y eV93cml0ZShzLT5pb21tdSwgYWRkciwgYnVmLCBsZW4pOworfQorCiBzdGF0aWMgdm9pZCBkbWFf c2V0X2lycSh2b2lkICpvcGFxdWUsIGludCBpcnEsIGludCBsZXZlbCkKIHsKICAgICBETUFTdGF0 ZSAqcyA9IG9wYXF1ZTsKSW5kZXg6IHFlbXUvaHcvc3BhcmMzMl9kbWEuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBxZW11Lm9yaWcvaHcvc3BhcmMzMl9kbWEuaAkyMDA4LTA0LTE2IDE5OjIxOjI3LjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9ody9zcGFyYzMyX2RtYS5oCTIwMDgtMDQtMTYgMTk6MjU6MDQuMDAw MDAwMDAwICswMDAwCkBAIC01LDkgKzUsMTMgQEAKIHZvaWQgKnNwYXJjMzJfZG1hX2luaXQodGFy Z2V0X3BoeXNfYWRkcl90IGRhZGRyLCBxZW11X2lycSBwYXJlbnRfaXJxLAogICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICppb21tdSwgcWVtdV9pcnEgKipkZXZfaXJxLCBxZW11X2lycSAqKnJl c2V0KTsKIHZvaWQgbGVkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19h ZGRyX3QgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVu LCBpbnQgZG9fYnN3YXApOworICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGlu dCBsZW4pOwordm9pZCBsZWRtYV9tZW1vcnlfcmVhZF9ic3dhcCh2b2lkICpvcGFxdWUsIHRhcmdl dF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90 ICpidWYsIGludCBsZW4pOwogdm9pZCBsZWRtYV9tZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLCB0 YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg KmJ1ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2FwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ4X3QgKmJ1ZiwgaW50IGxlbik7Cit2b2lkIGxlZG1hX21lbW9yeV93cml0ZV9ic3dhcCh2b2lk ICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuKTsKIHZvaWQgZXNwZG1hX21lbW9yeV9yZWFk KHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqYnVmLCBpbnQgbGVuKTsKIHZvaWQgZXNwZG1hX21lbW9y eV93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbik7CiAKSW5kZXg6IHFl bXUvaHcvc3VuNG0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNG0uaAkyMDA4LTA0 LTE2IDE5OjMwOjIxLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9zdW40bS5oCTIwMDgtMDQt MTYgMTk6MzA6NTYuMDAwMDAwMDAwICswMDAwCkBAIC02MywxNCArNjMsNyBAQAogdm9pZCBjc19p bml0KHRhcmdldF9waHlzX2FkZHJfdCBiYXNlLCBpbnQgaXJxLCB2b2lkICppbnRjdGwpOwogCiAv KiBzcGFyYzMyX2RtYS5jICovCi12b2lkICpzcGFyYzMyX2RtYV9pbml0KHRhcmdldF9waHlzX2Fk ZHJfdCBkYWRkciwgcWVtdV9pcnEgcGFyZW50X2lycSwKLSAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAqaW9tbXUsIHFlbXVfaXJxICoqZGV2X2lycSwgcWVtdV9pcnEgKipyZXNldCk7Ci12b2lk IGxlZG1hX21lbW9yeV9yZWFkKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIs Ci0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGRvX2Jz d2FwKTsKLXZvaWQgbGVkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNf YWRkcl90IGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBs ZW4sIGludCBkb19ic3dhcCk7Ci12b2lkIGVzcGRtYV9tZW1vcnlfcmVhZCh2b2lkICpvcGFxdWUs IHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbik7Ci12b2lkIGVzcGRtYV9tZW1vcnlfd3JpdGUodm9pZCAq b3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4pOworI2luY2x1ZGUgInNwYXJjMzJfZG1hLmgi CiAKIC8qIHBjbmV0LmMgKi8KIHZvaWQgbGFuY2VfaW5pdChOSUNJbmZvICpuZCwgdGFyZ2V0X3Bo eXNfYWRkcl90IGxlYWRkciwgdm9pZCAqZG1hX29wYXF1ZSwK ------=_Part_11756_8807481.1208375468666--