From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IllDg-0004wf-Uk for qemu-devel@nongnu.org; Sat, 27 Oct 2007 08:56:53 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IllDe-0004qY-Ce for qemu-devel@nongnu.org; Sat, 27 Oct 2007 08:56:52 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IllDe-0004q7-0n for qemu-devel@nongnu.org; Sat, 27 Oct 2007 08:56:50 -0400 Received: from nf-out-0910.google.com ([64.233.182.189]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IllDd-0003Ol-8p for qemu-devel@nongnu.org; Sat, 27 Oct 2007 08:56:49 -0400 Received: by nf-out-0910.google.com with SMTP id 30so1080293nfu for ; Sat, 27 Oct 2007 05:56:48 -0700 (PDT) Message-ID: Date: Sat, 27 Oct 2007 15:56:47 +0300 From: "Blue Swirl" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_3833_8620174.1193489807632" Subject: [Qemu-devel] Faster, generic IO/DMA model with vectored AIO? 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_3833_8620174.1193489807632 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, I changed Slirp output to use vectored IO to avoid the slowdown from memcpy (see the patch for the work in progress, gives a small performance improvement). But then I got the idea that using AIO would be nice at the outgoing end of the network IO processing. In fact, vectored AIO model could even be used for the generic DMA! The benefit is that no buffering or copying should be needed. Instead of void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, int len, int is_write); and its device variant, we'd have something like int qemu_lio_listio(int mode, struct GenericAIOcb *list[], unsigned int nent, IOCompletionFunc *cb); Each stage would translate the IO list and callback as needed and only the final stage would perform the IO or memcpy. This would be used in each stage of the chain memory<->IOMMU<->device<->SLIRP<->host network device. Of course some kind of host support for vectored AIO for these devices is required. On target side, devices that can do scatter/gather DMA would benefit most. For the specific Sparc32 case, unfortunately Lance bus byte swapping makes buffering necessary at that stage, unless we can make N vectors with just a single byte faster than memcpy + bswap of memory block with size N. Comments? ------=_Part_3833_8620174.1193489807632 Content-Type: text/x-diff; name=slirp_iov.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_f8a4fy65 Content-Disposition: attachment; filename=slirp_iov.diff SW5kZXg6IHFlbXUvdmwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwuYwkyMDA3LTEwLTI3 IDA3OjA2OjMwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5jCTIwMDctMTAtMjcgMTE6MDY6 MDkuMDAwMDAwMDAwICswMDAwCkBAIC0xNTQwLDggKzE1NDAsNDYgQEAKIH0KIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyog Y2hhcmFjdGVyIGRldmljZSAqLworLyogSGVscGVycyBmb3IgdmVjdG9yZWQgSU8qLworc3RhdGlj IHZvaWQgcWVtdV9yZWFkdl93aXRoX3JlYWQodm9pZCAqb3BhcXVlLCBJT1JlYWRIYW5kbGVyICpm ZF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFl bXVfaW92ZWMgKnZlY3RvciwgaW50IGNvdW50KQoreworI2lmIDEKKyAgICBpbnQgaSwgY3Vycmxl biA9IDA7CisgICAgY2hhciBidWZbODE5Ml07CisKKyAgICBpZiAoZmRfcmVhZCkgeworICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgaWYgKGN1cnJsZW4g KyB2ZWN0b3JbaV0uaW92X2xlbiA8IHNpemVvZihidWYpKQorICAgICAgICAgICAgICAgIG1lbWNw eSgmYnVmW2N1cnJsZW5dLCB2ZWN0b3JbaV0uaW92X2Jhc2UsIHZlY3RvcltpXS5pb3ZfbGVuKTsK KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJhZCBj dXJybGVuICVkIGlvdi5sZW4gJWxkXG4iLCBjdXJybGVuLCB2ZWN0b3JbaV0uaW92X2xlbik7Cisg ICAgICAgICAgICBjdXJybGVuICs9IHZlY3RvcltpXS5pb3ZfbGVuOworICAgICAgICB9CisgICAg ICAgIGZkX3JlYWQob3BhcXVlLCBidWYsIGN1cnJsZW4pOworICAgIH0KKyNlbHNlCisgICAgaW50 IGk7CisKKyAgICBpZiAoZmRfcmVhZCkKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBp KyspCisgICAgICAgICAgICBmZF9yZWFkKG9wYXF1ZSwgdmVjdG9yW2ldLmlvdl9iYXNlLCB2ZWN0 b3JbaV0uaW92X2xlbik7CisjZW5kaWYKK30KIAorc3RhdGljIHZvaWQgcWVtdV9yZWFkX3dpdGhf cmVhZHYodm9pZCAqb3BhcXVlLCBJT1JlYWR2SGFuZGxlciAqZmRfcmVhZHYsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIGludCBzaXplKQorewor ICAgIHN0cnVjdCBxZW11X2lvdmVjIGlvdjsKKworICAgIGlvdi5pb3ZfYmFzZSA9IGJ1ZjsKKyAg ICBpb3YuaW92X2xlbiA9IHNpemU7CisgICAgaWYgKGZkX3JlYWR2KQorICAgICAgICBmZF9yZWFk dihvcGFxdWUsICZpb3YsIDEpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjaGFyYWN0ZXIgZGV2aWNlICovCiBz dGF0aWMgdm9pZCBxZW11X2Nocl9ldmVudChDaGFyRHJpdmVyU3RhdGUgKnMsIGludCBldmVudCkK IHsKICAgICBpZiAoIXMtPmNocl9ldmVudCkKQEAgLTM1NzMsNiArMzYxMSwxOCBAQAogICAgIHJl dHVybiB2YzsKIH0KIAorVkxBTkNsaWVudFN0YXRlICpxZW11X25ld192bGFuX2NsaWVudF9pb3Yo VkxBTlN0YXRlICp2bGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU9SZWFkdkhhbmRsZXIgKmZkX3JlYWR2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQoreworICAgIFZMQU5D bGllbnRTdGF0ZSAqdmM7CisKKyAgICB2YyA9IHFlbXVfbmV3X3ZsYW5fY2xpZW50KHZsYW4sIE5V TEwsIGZkX2Nhbl9yZWFkLCBvcGFxdWUpOworICAgIHZjLT5mZF9yZWFkdiA9IGZkX3JlYWR2Owor ICAgIHJldHVybiB2YzsKK30KKwogaW50IHFlbXVfY2FuX3NlbmRfcGFja2V0KFZMQU5DbGllbnRT dGF0ZSAqdmMxKQogewogICAgIFZMQU5TdGF0ZSAqdmxhbiA9IHZjMS0+dmxhbjsKQEAgLTM1OTgs NyArMzY0OCwyNiBAQAogI2VuZGlmCiAgICAgZm9yKHZjID0gdmxhbi0+Zmlyc3RfY2xpZW50OyB2 YyAhPSBOVUxMOyB2YyA9IHZjLT5uZXh0KSB7CiAgICAgICAgIGlmICh2YyAhPSB2YzEpIHsKLSAg ICAgICAgICAgIHZjLT5mZF9yZWFkKHZjLT5vcGFxdWUsIGJ1Ziwgc2l6ZSk7CisgICAgICAgICAg ICBpZiAodmMtPmZkX3JlYWQpCisgICAgICAgICAgICAgICAgdmMtPmZkX3JlYWQodmMtPm9wYXF1 ZSwgYnVmLCBzaXplKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZjLT5mZF9yZWFkdikKKyAgICAg ICAgICAgICAgICBxZW11X3JlYWRfd2l0aF9yZWFkdih2Yy0+b3BhcXVlLCB2Yy0+ZmRfcmVhZHYs IGJ1Ziwgc2l6ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgcWVtdV9zZW5kX3BhY2tl dF9pb3YoVkxBTkNsaWVudFN0YXRlICp2YzEsIGNvbnN0IHN0cnVjdCBxZW11X2lvdmVjICp2ZWN0 b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCkKK3sKKyAgICBWTEFOU3Rh dGUgKnZsYW4gPSB2YzEtPnZsYW47CisgICAgVkxBTkNsaWVudFN0YXRlICp2YzsKKworICAgIGZv cih2YyA9IHZsYW4tPmZpcnN0X2NsaWVudDsgdmMgIT0gTlVMTDsgdmMgPSB2Yy0+bmV4dCkgewor ICAgICAgICBpZiAodmMgIT0gdmMxKSB7CisgICAgICAgICAgICBpZiAodmMtPmZkX3JlYWR2KQor ICAgICAgICAgICAgICAgIHZjLT5mZF9yZWFkdih2Yy0+b3BhcXVlLCB2ZWN0b3IsIGNvdW50KTsK KyAgICAgICAgICAgIGVsc2UgaWYgKHZjLT5mZF9yZWFkKQorICAgICAgICAgICAgICAgIHFlbXVf cmVhZHZfd2l0aF9yZWFkKHZjLT5vcGFxdWUsIHZjLT5mZF9yZWFkLCB2ZWN0b3IsIGNvdW50KTsK ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTM2MjYsNiArMzY5NSwxMyBAQAogICAgIHFlbXVfc2Vu ZF9wYWNrZXQoc2xpcnBfdmMsIHBrdCwgcGt0X2xlbik7CiB9CiAKK3ZvaWQgc2xpcnBfb3V0cHV0 X2lvdihjb25zdCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqdmVjdG9yLCBpbnQgY291bnQpCit7CisgICAg aWYgKCFzbGlycF92YykKKyAgICAgICAgcmV0dXJuOworICAgIHFlbXVfc2VuZF9wYWNrZXRfaW92 KHNsaXJwX3ZjLCB2ZWN0b3IsIGNvdW50KTsKK30KKwogc3RhdGljIHZvaWQgc2xpcnBfcmVjZWl2 ZSh2b2lkICpvcGFxdWUsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUpCiB7CiAjaWYgMApA QCAtNDk0NCwxMyArNTAyMCwxMiBAQAogCiBzdGF0aWMgSU9IYW5kbGVyUmVjb3JkICpmaXJzdF9p b19oYW5kbGVyOwogCi0vKiBYWFg6IGZkX3JlYWRfcG9sbCBzaG91bGQgYmUgc3VwcHJlc3NlZCwg YnV0IGFuIEFQSSBjaGFuZ2UgaXMKLSAgIG5lY2Vzc2FyeSBpbiB0aGUgY2hhcmFjdGVyIGRldmlj ZXMgdG8gc3VwcHJlc3MgZmRfY2FuX3JlYWQoKS4gKi8KLWludCBxZW11X3NldF9mZF9oYW5kbGVy MihpbnQgZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX3Jl YWRfcG9sbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJT0hhbmRsZXIgKmZkX3JlYWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgSU9IYW5kbGVyICpmZF93cml0ZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICpvcGFxdWUpCitzdGF0aWMgSU9IYW5kbGVyUmVjb3JkICoKK3Fl bXVfc2V0X2ZkX2hhbmRsZXIzKGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgIElPQ2FuUldI YW5kbGVyICpmZF9yZWFkX3BvbGwsCisgICAgICAgICAgICAgICAgICAgICBJT0hhbmRsZXIgKmZk X3JlYWQsCisgICAgICAgICAgICAgICAgICAgICBJT0hhbmRsZXIgKmZkX3dyaXRlLAorICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQogewogICAgIElPSGFuZGxlclJlY29yZCAqKnBp b2gsICppb2g7CiAKQEAgLTQ5NzMsMTcgKzUwNDgsMzggQEAKICAgICAgICAgfQogICAgICAgICBp b2ggPSBxZW11X21hbGxvY3ooc2l6ZW9mKElPSGFuZGxlclJlY29yZCkpOwogICAgICAgICBpZiAo IWlvaCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwog ICAgICAgICBpb2gtPm5leHQgPSBmaXJzdF9pb19oYW5kbGVyOwogICAgICAgICBmaXJzdF9pb19o YW5kbGVyID0gaW9oOwogICAgIGZvdW5kOgogICAgICAgICBpb2gtPmZkID0gZmQ7CiAgICAgICAg IGlvaC0+ZmRfcmVhZF9wb2xsID0gZmRfcmVhZF9wb2xsOwogICAgICAgICBpb2gtPmZkX3JlYWQg PSBmZF9yZWFkOworI2lmIDAKKyAgICAgICAgaWYgKCFmZF9yZWFkKQorICAgICAgICAgICAgaW9o LT5mZF9yZWFkdiA9IE5VTEw7CisjZW5kaWYKICAgICAgICAgaW9oLT5mZF93cml0ZSA9IGZkX3dy aXRlOwogICAgICAgICBpb2gtPm9wYXF1ZSA9IG9wYXF1ZTsKICAgICAgICAgaW9oLT5kZWxldGVk ID0gMDsKICAgICB9CisgICAgcmV0dXJuIGlvaDsKK30KKworLyogWFhYOiBmZF9yZWFkX3BvbGwg c2hvdWxkIGJlIHN1cHByZXNzZWQsIGJ1dCBhbiBBUEkgY2hhbmdlIGlzCisgICBuZWNlc3Nhcnkg aW4gdGhlIGNoYXJhY3RlciBkZXZpY2VzIHRvIHN1cHByZXNzIGZkX2Nhbl9yZWFkKCkuICovCitp bnQgcWVtdV9zZXRfZmRfaGFuZGxlcjIoaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAg IElPQ2FuUldIYW5kbGVyICpmZF9yZWFkX3BvbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg SU9IYW5kbGVyICpmZF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgIElPSGFuZGxlciAq ZmRfd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQoreworICAg IElPSGFuZGxlclJlY29yZCAqaW9oOworCisgICAgaW9oID0gcWVtdV9zZXRfZmRfaGFuZGxlcjMo ZmQsIE5VTEwsIGZkX3JlYWQsIGZkX3dyaXRlLCBvcGFxdWUpOworICAgIGlmICghaW9oKQorICAg ICAgICByZXR1cm4gLTE7CisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDk5NSw2ICs1MDkxLDI1 IEBACiAgICAgcmV0dXJuIHFlbXVfc2V0X2ZkX2hhbmRsZXIyKGZkLCBOVUxMLCBmZF9yZWFkLCBm ZF93cml0ZSwgb3BhcXVlKTsKIH0KIAorI2lmIDAKK2ludCBxZW11X3NldF9mZF9oYW5kbGVyX2lv dihpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9IYW5kbGVyICpmZF9yZWFk diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT0hhbmRsZXIgKmZkX3dyaXRldiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUpCit7CisgICAgSU9IYW5kbGVy UmVjb3JkICppb2g7CisKKyAgICBpb2ggPSBxZW11X3NldF9mZF9oYW5kbGVyMyhmZCwgTlVMTCwg TlVMTCwgTlVMTCwgb3BhcXVlKTsKKyAgICBpZiAoIWlvaCkKKyAgICAgICAgcmV0dXJuIC0xOwor CisgICAgaW9oLT5mZF9yZWFkdiA9IGZkX3JlYWR2OworICAgIGlvaC0+ZmRfd3JpdGV2ID0gZmRf d3JpdGV2OworCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogUG9sbGluZyBo YW5kbGluZyAqLwogCkluZGV4OiBxZW11L3ZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3Zs LmgJMjAwNy0xMC0yNyAwNzoxMToxNS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdmwuaAkyMDA3 LTEwLTI3IDA4OjAzOjAwLjAwMDAwMDAwMCArMDAwMApAQCAtMjYzLDYgKzI2MywxMiBAQAogLyog YXN5bmMgSS9PIHN1cHBvcnQgKi8KIAogdHlwZWRlZiB2b2lkIElPUmVhZEhhbmRsZXIodm9pZCAq b3BhcXVlLCBjb25zdCB1aW50OF90ICpidWYsIGludCBzaXplKTsKK3N0cnVjdCBxZW11X2lvdmVj IHsKKyAgICB2b2lkICppb3ZfYmFzZTsKKyAgICBzaXplX3QgaW92X2xlbjsKK307Cit0eXBlZGVm IHZvaWQgSU9SZWFkdkhhbmRsZXIodm9pZCAqb3BhcXVlLCBjb25zdCBzdHJ1Y3QgcWVtdV9pb3Zl YyAqdmVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCk7CiB0eXBl ZGVmIGludCBJT0NhblJXSGFuZGxlcih2b2lkICpvcGFxdWUpOwogdHlwZWRlZiB2b2lkIElPSGFu ZGxlcih2b2lkICpvcGFxdWUpOwogCkBAIC0yNzUsNiArMjgxLDEwIEBACiAgICAgICAgICAgICAg ICAgICAgICAgICBJT0hhbmRsZXIgKmZkX3JlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBJ T0hhbmRsZXIgKmZkX3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVl KTsKK2ludCBxZW11X3NldF9mZF9oYW5kbGVyX2lvdihpbnQgZmQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSU9IYW5kbGVyICpmZF9yZWFkdiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJT0hhbmRsZXIgKmZkX3dyaXRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpvcGFxdWUpOwogCiAvKiBQb2xsaW5nIGhhbmRsaW5nICovCiAKQEAgLTM5Niw2ICs0MDYs NyBAQAogCiBzdHJ1Y3QgVkxBTkNsaWVudFN0YXRlIHsKICAgICBJT1JlYWRIYW5kbGVyICpmZF9y ZWFkOworICAgIElPUmVhZHZIYW5kbGVyICpmZF9yZWFkdjsKICAgICAvKiBQYWNrZXRzIG1heSBz dGlsbCBiZSBzZW50IGlmIHRoaXMgcmV0dXJucyB6ZXJvLiAgSXQncyB1c2VkIHRvCiAgICAgICAg cmF0ZS1saW1pdCB0aGUgc2xpcnAgY29kZS4gICovCiAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX2Nh bl9yZWFkOwpAQCAtNDE3LDggKzQyOCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJT1JlYWRIYW5kbGVyICpmZF9yZWFkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJT0NhblJXSGFuZGxlciAqZmRfY2FuX3JlYWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSk7CitWTEFOQ2xpZW50U3Rh dGUgKnFlbXVfbmV3X3ZsYW5fY2xpZW50X2lvdihWTEFOU3RhdGUgKnZsYW4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JlYWR2SGFuZGxlciAqZmRfcmVhZHYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT0NhblJXSGFuZGxl ciAqZmRfY2FuX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpvcGFxdWUpOwogaW50IHFlbXVfY2FuX3NlbmRfcGFja2V0KFZMQU5DbGllbnRTdGF0 ZSAqdmMpOwogdm9pZCBxZW11X3NlbmRfcGFja2V0KFZMQU5DbGllbnRTdGF0ZSAqdmMsIGNvbnN0 IHVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUpOwordm9pZCBxZW11X3NlbmRfcGFja2V0X2lvdihWTEFO Q2xpZW50U3RhdGUgKnZjLCBjb25zdCBzdHJ1Y3QgcWVtdV9pb3ZlYyAqdmVjdG9yLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQpOwogdm9pZCBxZW11X2hhbmRsZXJfdHJ1ZSh2 b2lkICpvcGFxdWUpOwogCiB2b2lkIGRvX2luZm9fbmV0d29yayh2b2lkKTsKSW5kZXg6IHFlbXUv c2xpcnAvbGlic2xpcnAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvbGlic2xpcnAu aAkyMDA3LTEwLTI3IDA3OjA2OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9saWJz bGlycC5oCTIwMDctMTAtMjcgMDg6MTg6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0xNyw2ICsxNyw4 IEBACiAvKiB5b3UgbXVzdCBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiAqLwogaW50 IHNsaXJwX2Nhbl9vdXRwdXQodm9pZCk7CiB2b2lkIHNsaXJwX291dHB1dChjb25zdCB1aW50OF90 ICpwa3QsIGludCBwa3RfbGVuKTsKK3N0cnVjdCBxZW11X2lvdmVjOwordm9pZCBzbGlycF9vdXRw dXRfaW92KGNvbnN0IHN0cnVjdCBxZW11X2lvdmVjICp2ZWN0b3IsIGludCBjb3VudCk7CiAKIGlu dCBzbGlycF9yZWRpcihpbnQgaXNfdWRwLCBpbnQgaG9zdF9wb3J0LAogICAgICAgICAgICAgICAg IHN0cnVjdCBpbl9hZGRyIGd1ZXN0X2FkZHIsIGludCBndWVzdF9wb3J0KTsKSW5kZXg6IHFlbXUv c2xpcnAvc2xpcnAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvc2xpcnAuYwkyMDA3 LTEwLTI3IDA3OjA2OjE5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9zbGlycC5jCTIw MDctMTAtMjcgMTA6NDQ6MTguMDAwMDAwMDAwICswMDAwCkBAIC02MzYsMTkgKzYzNiwyMiBAQAog Lyogb3V0cHV0IHRoZSBJUCBwYWNrZXQgdG8gdGhlIGV0aGVybmV0IGRldmljZSAqLwogdm9pZCBp Zl9lbmNhcChjb25zdCB1aW50OF90ICppcF9kYXRhLCBpbnQgaXBfZGF0YV9sZW4pCiB7Ci0gICAg dWludDhfdCBidWZbMTYwMF07Ci0gICAgc3RydWN0IGV0aGhkciAqZWggPSAoc3RydWN0IGV0aGhk ciAqKWJ1ZjsKLQotICAgIGlmIChpcF9kYXRhX2xlbiArIEVUSF9ITEVOID4gc2l6ZW9mKGJ1Zikp Ci0gICAgICAgIHJldHVybjsKKyAgICBzdHJ1Y3QgZXRoaGRyIGJ1ZiwgKmVoID0gJmJ1ZjsKKyAg ICBzdHJ1Y3QgeworICAgICAgICB2b2lkICpkYXRhOworICAgICAgICBzaXplX3QgbGVuOworICAg IH0gaW92WzJdOwogCiAgICAgbWVtY3B5KGVoLT5oX2Rlc3QsIGNsaWVudF9ldGhhZGRyLCBFVEhf QUxFTik7CiAgICAgbWVtY3B5KGVoLT5oX3NvdXJjZSwgc3BlY2lhbF9ldGhhZGRyLCBFVEhfQUxF TiAtIDEpOwogICAgIC8qIFhYWDogbm90IGNvcnJlY3QgKi8KICAgICBlaC0+aF9zb3VyY2VbNV0g PSBDVExfQUxJQVM7CiAgICAgZWgtPmhfcHJvdG8gPSBodG9ucyhFVEhfUF9JUCk7Ci0gICAgbWVt Y3B5KGJ1ZiArIHNpemVvZihzdHJ1Y3QgZXRoaGRyKSwgaXBfZGF0YSwgaXBfZGF0YV9sZW4pOwot ICAgIHNsaXJwX291dHB1dChidWYsIGlwX2RhdGFfbGVuICsgRVRIX0hMRU4pOworICAgIGlvdlsw XS5kYXRhID0gJmJ1ZjsKKyAgICBpb3ZbMF0ubGVuID0gc2l6ZW9mKHN0cnVjdCBldGhoZHIpOwor ICAgIGlvdlsxXS5kYXRhID0gaXBfZGF0YTsKKyAgICBpb3ZbMV0ubGVuID0gaXBfZGF0YV9sZW47 CisgICAgc2xpcnBfb3V0cHV0X2lvdihpb3YsIDIpOwogfQogCiBpbnQgc2xpcnBfcmVkaXIoaW50 IGlzX3VkcCwgaW50IGhvc3RfcG9ydCwK ------=_Part_3833_8620174.1193489807632--