From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JnIvP-0006JD-28 for qemu-devel@nongnu.org; Sat, 19 Apr 2008 15:40:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JnIvN-0006IO-Ib for qemu-devel@nongnu.org; Sat, 19 Apr 2008 15:40:38 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JnIvN-0006IB-Bk for qemu-devel@nongnu.org; Sat, 19 Apr 2008 15:40:37 -0400 Received: from fk-out-0910.google.com ([209.85.128.187]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JnIvK-0000Nn-50 for qemu-devel@nongnu.org; Sat, 19 Apr 2008 15:40:37 -0400 Received: by fk-out-0910.google.com with SMTP id 18so1431542fkq.2 for ; Sat, 19 Apr 2008 12:40:29 -0700 (PDT) Message-ID: Date: Sat, 19 Apr 2008 22:40:29 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] [PATCH 1/5] PCI DMA API (v3) In-Reply-To: <4807ADA7.7000500@us.ibm.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_4187_25136296.1208634029135" References: <1208297491-1287-1-git-send-email-aliguori@us.ibm.com> <4806596C.4090107@us.ibm.com> <4807ADA7.7000500@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_4187_25136296.1208634029135 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 4/17/08, Anthony Liguori wrote: > Yes, the vector version of packet receive is tough. I'll take a look at > your patch. Basically, you need to associate a set of RX vectors with each > VLANClientState and then when it comes time to deliver a packet to the VLAN, > before calling fd_read, see if there is an RX vector available for the > client. > > In the case of tap, I want to optimize further and do the initial readv() > to one of the clients RX buffers and then copy that RX buffer to the rest of > the clients if necessary. The vector versions should also help SLIRP to add IP and Ethernet headers to the incoming packets. I made an initial version of the vectored AIO SCSI with ESP. It does not work, but I can see that just using the vectors won't give too much extra performance, because at least initially the vector length is 1. Collecting the statuses may be tricky. ------=_Part_4187_25136296.1208634029135 Content-Type: plain/text; name=block_aio_rw_v.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_ff8lfcsm Content-Disposition: attachment; filename=block_aio_rw_v.diff SW5kZXg6IHFlbXUvYmxvY2suYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvYmxvY2suYwkyMDA4 LTA0LTE5IDA3OjAzOjQzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ibG9jay5jCTIwMDgtMDQt MTkgMTk6MjA6NTAuMDAwMDAwMDAwICswMDAwCkBAIC0xMTc3LDYgKzExNzcsMTggQEAKICAgICBy ZXR1cm4gcmV0OwogfQogCitCbG9ja0RyaXZlckFJT0NCICpiZHJ2X2Fpb19yZWFkdihCbG9ja0Ry aXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSU9WZWN0b3IgKmlvdmVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQmxvY2tEcml2ZXJDb21wbGV0aW9uRnVuYyAqY2IsIHZvaWQgKm9wYXF1ZSkKK3sKKyAg ICBpbnQgcmV0OworICAgIHN0YXRpYyBCbG9ja0RyaXZlckFJT0NCIGR1bW15OworCisgICAgcmV0 ID0gYmRydl9yZWFkdihicywgc2VjdG9yX251bSwgaW92ZWMpOworICAgIGNiKG9wYXF1ZSwgcmV0 KTsKKyAgICByZXR1cm4gJmR1bW15OworfQorCiBCbG9ja0RyaXZlckFJT0NCICpiZHJ2X2Fpb193 cml0ZShCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgbmJfc2VjdG9y cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrRHJpdmVyQ29tcGxldGlv bkZ1bmMgKmNiLCB2b2lkICpvcGFxdWUpCkBAIC0xMjAzLDYgKzEyMTUsMTggQEAKICAgICByZXR1 cm4gcmV0OwogfQogCitCbG9ja0RyaXZlckFJT0NCICpiZHJ2X2Fpb193cml0ZXYoQmxvY2tEcml2 ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9yX251bSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBJT1ZlY3RvciAqaW92ZWMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQmxvY2tEcml2ZXJDb21wbGV0aW9uRnVuYyAqY2IsIHZvaWQgKm9wYXF1ZSkK K3sKKyAgICBpbnQgcmV0OworICAgIHN0YXRpYyBCbG9ja0RyaXZlckFJT0NCIGR1bW15OworCisg ICAgcmV0ID0gYmRydl93cml0ZXYoYnMsIHNlY3Rvcl9udW0sIGlvdmVjKTsKKyAgICBjYihvcGFx dWUsIHJldCk7CisgICAgcmV0dXJuICZkdW1teTsKK30KKwogdm9pZCBiZHJ2X2Fpb19jYW5jZWwo QmxvY2tEcml2ZXJBSU9DQiAqYWNiKQogewogICAgIEJsb2NrRHJpdmVyICpkcnYgPSBhY2ItPmJz LT5kcnY7CkluZGV4OiBxZW11L2Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2Jsb2Nr LmgJMjAwOC0wNC0xOSAwNzowMzo0My4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvYmxvY2suaAky MDA4LTA0LTE5IDA4OjM4OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtODgsOSArODgsMTUgQEAKIEJs b2NrRHJpdmVyQUlPQ0IgKmJkcnZfYWlvX3JlYWQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0 X3Qgc2VjdG9yX251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq YnVmLCBpbnQgbmJfc2VjdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxv Y2tEcml2ZXJDb21wbGV0aW9uRnVuYyAqY2IsIHZvaWQgKm9wYXF1ZSk7CitCbG9ja0RyaXZlckFJ T0NCICpiZHJ2X2Fpb19yZWFkdihCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3Jf bnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9WZWN0b3IgKmlvdmVjLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tEcml2ZXJDb21wbGV0aW9uRnVu YyAqY2IsIHZvaWQgKm9wYXF1ZSk7CiBCbG9ja0RyaXZlckFJT0NCICpiZHJ2X2Fpb193cml0ZShC bG9ja0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgbmJfc2VjdG9ycywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrRHJpdmVyQ29tcGxldGlvbkZ1bmMg KmNiLCB2b2lkICpvcGFxdWUpOworQmxvY2tEcml2ZXJBSU9DQiAqYmRydl9haW9fd3JpdGV2KEJs b2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rvcl9udW0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgSU9WZWN0b3IgKmlvdmVjLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJsb2NrRHJpdmVyQ29tcGxldGlvbkZ1bmMgKmNiLCB2b2lkICpv cGFxdWUpOwogdm9pZCBiZHJ2X2Fpb19jYW5jZWwoQmxvY2tEcml2ZXJBSU9DQiAqYWNiKTsKIAog dm9pZCBxZW11X2Fpb19pbml0KHZvaWQpOwpJbmRleDogcWVtdS9ody9zY3NpLWRpc2suYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc2NzaS1kaXNrLmMJMjAwOC0wNC0xOSAwOTowODozNi4w MDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvc2NzaS1kaXNrLmMJMjAwOC0wNC0xOSAxNjozNjoy OC4wMDAwMDAwMDAgKzAwMDAKQEAgLTE2Niw3ICsxNjYsNyBAQAogfQogCiAvKiBSZWFkIG1vcmUg ZGF0YSBmcm9tIHNjc2kgZGV2aWNlIGludG8gYnVmZmVyLiAgKi8KLXN0YXRpYyB2b2lkIHNjc2lf cmVhZF9kYXRhKFNDU0lEZXZpY2UgKmQsIHVpbnQzMl90IHRhZykKK3N0YXRpYyBpbmxpbmUgU0NT SVJlcXVlc3QgKnNjc2lfcmVhZF9kYXRhX2NoZWNrKFNDU0lEZXZpY2UgKmQsIHVpbnQzMl90IHRh ZykKIHsKICAgICBTQ1NJRGV2aWNlU3RhdGUgKnMgPSBkLT5zdGF0ZTsKICAgICBTQ1NJUmVxdWVz dCAqcjsKQEAgLTE3NywxOCArMTc3LDE4IEBACiAgICAgICAgIEJBREYoIkJhZCByZWFkIHRhZyAw eCV4XG4iLCB0YWcpOwogICAgICAgICAvKiA/Pz8gVGhpcyBpcyB0aGUgd3JvbmcgZXJyb3IuICAq LwogICAgICAgICBzY3NpX2NvbW1hbmRfY29tcGxldGUociwgU0VOU0VfSEFSRFdBUkVfRVJST1Ip OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAo ci0+c2VjdG9yX2NvdW50ID09ICh1aW50MzJfdCktMSkgewogICAgICAgICBEUFJJTlRGKCJSZWFk IGJ1Zl9sZW49JWRcbiIsIHItPmJ1Zl9sZW4pOwogICAgICAgICByLT5zZWN0b3JfY291bnQgPSAw OwogICAgICAgICBzLT5jb21wbGV0aW9uKHMtPm9wYXF1ZSwgU0NTSV9SRUFTT05fREFUQSwgci0+ dGFnLCByLT5idWZfbGVuKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gTlVMTDsK ICAgICB9CiAgICAgRFBSSU5URigiUmVhZCBzZWN0b3JfY291bnQ9JWRcbiIsIHItPnNlY3Rvcl9j b3VudCk7CiAgICAgaWYgKHItPnNlY3Rvcl9jb3VudCA9PSAwKSB7CiAgICAgICAgIHNjc2lfY29t bWFuZF9jb21wbGV0ZShyLCBTRU5TRV9OT19TRU5TRSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg ICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgbiA9IHItPnNlY3Rvcl9jb3VudDsKQEAgLTE5 Niw2ICsxOTYsMjEgQEAKICAgICAgICAgbiA9IFNDU0lfRE1BX0JVRl9TSVpFIC8gNTEyOwogCiAg ICAgci0+YnVmX2xlbiA9IG4gKiA1MTI7CisKKyAgICByZXR1cm4gcjsKK30KKworc3RhdGljIHZv aWQgc2NzaV9yZWFkX2RhdGEoU0NTSURldmljZSAqZCwgdWludDMyX3QgdGFnKQoreworICAgIFND U0lEZXZpY2VTdGF0ZSAqcyA9IGQtPnN0YXRlOworICAgIFNDU0lSZXF1ZXN0ICpyOworICAgIHVp bnQzMl90IG47CisKKyAgICByID0gc2NzaV9yZWFkX2RhdGFfY2hlY2soZCwgdGFnKTsKKyAgICBp ZiAoIXIpCisgICAgICAgIHJldHVybjsKKworICAgIG4gPSByLT5idWZfbGVuIC8gNTEyOwogICAg IHItPmFpb2NiID0gYmRydl9haW9fcmVhZChzLT5iZHJ2LCByLT5zZWN0b3IsIHItPmRtYV9idWYs IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjc2lfcmVhZF9jb21wbGV0ZSwgcik7 CiAgICAgaWYgKHItPmFpb2NiID09IE5VTEwpCkBAIC0yMDQsNiArMjE5LDI1IEBACiAgICAgci0+ c2VjdG9yX2NvdW50IC09IG47CiB9CiAKK3N0YXRpYyB2b2lkIHNjc2lfcmVhZHYoU0NTSURldmlj ZSAqZCwgdWludDMyX3QgdGFnLCBJT1ZlY3RvciAqaW92KQoreworICAgIFNDU0lEZXZpY2VTdGF0 ZSAqcyA9IGQtPnN0YXRlOworICAgIFNDU0lSZXF1ZXN0ICpyOworICAgIHVpbnQzMl90IG47CisK KyAgICByID0gc2NzaV9yZWFkX2RhdGFfY2hlY2soZCwgdGFnKTsKKyAgICBpZiAoIXIpCisgICAg ICAgIHJldHVybjsKKworICAgIG4gPSByLT5idWZfbGVuIC8gNTEyOworICAgIHItPmFpb2NiID0g YmRydl9haW9fcmVhZHYocy0+YmRydiwgci0+c2VjdG9yLCBpb3YsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjc2lfcmVhZF9jb21wbGV0ZSwgcik7CisgICAgaWYgKHItPmFpb2NiID09 IE5VTEwpCisgICAgICAgIHNjc2lfY29tbWFuZF9jb21wbGV0ZShyLCBTRU5TRV9IQVJEV0FSRV9F UlJPUik7CisgICAgci0+c2VjdG9yICs9IG47CisgICAgci0+c2VjdG9yX2NvdW50IC09IG47Cit9 CisKIHN0YXRpYyB2b2lkIHNjc2lfd3JpdGVfY29tcGxldGUodm9pZCAqIG9wYXF1ZSwgaW50IHJl dCkKIHsKICAgICBTQ1NJUmVxdWVzdCAqciA9IChTQ1NJUmVxdWVzdCAqKW9wYXF1ZTsKQEAgLTI2 Miw2ICsyOTYsMzcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBzY3NpX3dyaXRl dihTQ1NJRGV2aWNlICpkLCB1aW50MzJfdCB0YWcsIElPVmVjdG9yICppb3YpCit7CisgICAgU0NT SURldmljZVN0YXRlICpzID0gZC0+c3RhdGU7CisgICAgU0NTSVJlcXVlc3QgKnI7CisgICAgc2l6 ZV90IG47CisKKyAgICBEUFJJTlRGKCJXcml0ZSBkYXRhIHRhZz0weCV4XG4iLCB0YWcpOworICAg IHIgPSBzY3NpX2ZpbmRfcmVxdWVzdChzLCB0YWcpOworICAgIGlmICghcikgeworICAgICAgICBC QURGKCJCYWQgd3JpdGUgdGFnIDB4JXhcbiIsIHRhZyk7CisgICAgICAgIHNjc2lfY29tbWFuZF9j b21wbGV0ZShyLCBTRU5TRV9IQVJEV0FSRV9FUlJPUik7CisgICAgICAgIHJldHVybiAxOworICAg IH0KKyAgICBpZiAoci0+YWlvY2IpCisgICAgICAgIEJBREYoIkRhdGEgdHJhbnNmZXIgYWxyZWFk eSBpbiBwcm9ncmVzc1xuIik7CisgICAgbiA9IGlvdmVjdG9yX3NpemUoaW92KTsKKyAgICBpZiAo bikgeworICAgICAgICByLT5haW9jYiA9IGJkcnZfYWlvX3dyaXRldihzLT5iZHJ2LCByLT5zZWN0 b3IsIGlvdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NzaV93cml0ZV9j b21wbGV0ZSwgcik7CisgICAgICAgIGlmIChyLT5haW9jYiA9PSBOVUxMKQorICAgICAgICAgICAg c2NzaV9jb21tYW5kX2NvbXBsZXRlKHIsIFNFTlNFX0hBUkRXQVJFX0VSUk9SKTsKKyAgICAgICAg ci0+c2VjdG9yICs9IG47CisgICAgICAgIHItPnNlY3Rvcl9jb3VudCAtPSBuOworICAgIH0gZWxz ZSB7CisgICAgICAgIC8qIEludm9rZSBjb21wbGV0aW9uIHJvdXRpbmUgdG8gZmV0Y2ggZGF0YSBm cm9tIGhvc3QuICAqLworICAgICAgICBzY3NpX3dyaXRlX2NvbXBsZXRlKHIsIDApOworICAgIH0K KworICAgIHJldHVybiAwOworfQorCiAvKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1 ZmZlci4gICovCiBzdGF0aWMgdWludDhfdCAqc2NzaV9nZXRfYnVmKFNDU0lEZXZpY2UgKmQsIHVp bnQzMl90IHRhZykKIHsKQEAgLTczMiw3ICs3OTcsOSBAQAogICAgIGQtPmRlc3Ryb3kgPSBzY3Np X2Rlc3Ryb3k7CiAgICAgZC0+c2VuZF9jb21tYW5kID0gc2NzaV9zZW5kX2NvbW1hbmQ7CiAgICAg ZC0+cmVhZF9kYXRhID0gc2NzaV9yZWFkX2RhdGE7CisgICAgZC0+cmVhZHYgPSBzY3NpX3JlYWR2 OwogICAgIGQtPndyaXRlX2RhdGEgPSBzY3NpX3dyaXRlX2RhdGE7CisgICAgZC0+d3JpdGV2ID0g c2NzaV93cml0ZXY7CiAgICAgZC0+Y2FuY2VsX2lvID0gc2NzaV9jYW5jZWxfaW87CiAgICAgZC0+ Z2V0X2J1ZiA9IHNjc2lfZ2V0X2J1ZjsKIApJbmRleDogcWVtdS9ody9zY3NpLWRpc2suaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc2NzaS1kaXNrLmgJMjAwOC0wNC0xOSAwOTowODozOC4w MDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvc2NzaS1kaXNrLmgJMjAwOC0wNC0xOSAxNjozNDo0 Ny4wMDAwMDAwMDAgKzAwMDAKQEAgLTEsNiArMSw4IEBACiAjaWZuZGVmIFNDU0lfRElTS19ICiAj ZGVmaW5lIFNDU0lfRElTS19ICiAKKyNpbmNsdWRlICJpb3ZlY3Rvci5oIgorCiAvKiBzY3NpLWRp c2suYyAqLwogZW51bSBzY3NpX3JlYXNvbiB7CiAgICAgU0NTSV9SRUFTT05fRE9ORSwgLyogQ29t bWFuZCBjb21wbGV0ZS4gICovCkBAIC0yMiw2ICsyNCw4IEBACiAgICAgaW50ICgqd3JpdGVfZGF0 YSkoU0NTSURldmljZSAqcywgdWludDMyX3QgdGFnKTsKICAgICB2b2lkICgqY2FuY2VsX2lvKShT Q1NJRGV2aWNlICpzLCB1aW50MzJfdCB0YWcpOwogICAgIHVpbnQ4X3QgKigqZ2V0X2J1ZikoU0NT SURldmljZSAqcywgdWludDMyX3QgdGFnKTsKKyAgICB2b2lkICgqcmVhZHYpKFNDU0lEZXZpY2Ug KnMsIHVpbnQzMl90IHRhZywgSU9WZWN0b3IgKmlvdik7CisgICAgaW50ICgqd3JpdGV2KShTQ1NJ RGV2aWNlICpzLCB1aW50MzJfdCB0YWcsIElPVmVjdG9yICppb3YpOwogfTsKIAogU0NTSURldmlj ZSAqc2NzaV9kaXNrX2luaXQoQmxvY2tEcml2ZXJTdGF0ZSAqYmRydiwgaW50IHRjcSwKSW5kZXg6 IHFlbXUvaHcvZXNwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2VzcC5jCTIwMDgtMDQt MTkgMTY6Mzc6MTEuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L2VzcC5jCTIwMDgtMDQtMTkg MTk6MTc6MjkuMDAwMDAwMDAwICswMDAwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAic2Nz aS5oIgogCiAvKiBkZWJ1ZyBFU1AgY2FyZCAqLwotLy8jZGVmaW5lIERFQlVHX0VTUAorI2RlZmlu ZSBERUJVR19FU1AKIAogLyoKICAqIE9uIFNwYXJjMzIsIHRoaXMgaXMgdGhlIEVTUCAoTkNSNTND OTApIHBhcnQgb2YgY2hpcCBTVFAyMDAwIChNYXN0ZXIgSS9PKSwKQEAgLTE4MSw2ICsxODEsMjIg QEAKICAgICByZXR1cm4gZG1hbGVuOwogfQogCitzdGF0aWMgdm9pZCBlc3BfaW92X2RtYV9yZWFk KHZvaWQgKm9wYXF1ZSwgdWludDY0X3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKyAgICBFU1BTdGF0ZSAqcyA9IChFU1BTdGF0 ZSAqKW9wYXF1ZTsKKworICAgIHMtPmRtYV9tZW1vcnlfcmVhZChzLT5kbWFfb3BhcXVlLCBkYXRh LCBsZW4pOworfQorCitzdGF0aWMgdm9pZCBlc3BfaW92X2RtYV93cml0ZSh2b2lkICpvcGFxdWUs IHVpbnQ2NF90IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk ICpkYXRhLCBzaXplX3QgbGVuKQoreworICAgIEVTUFN0YXRlICpzID0gKEVTUFN0YXRlICopb3Bh cXVlOworCisgICAgcy0+ZG1hX21lbW9yeV93cml0ZShzLT5kbWFfb3BhcXVlLCAodm9pZCAqKWRh dGEsIGxlbik7Cit9CisKIHN0YXRpYyB2b2lkIGRvX2NtZChFU1BTdGF0ZSAqcywgdWludDhfdCAq YnVmKQogewogICAgIGludDMyX3QgZGF0YWxlbjsKQEAgLTE5MSw5ICsyMDcsMjUgQEAKICAgICBk YXRhbGVuID0gcy0+Y3VycmVudF9kZXYtPnNlbmRfY29tbWFuZChzLT5jdXJyZW50X2RldiwgMCwg JmJ1ZlsxXSwgbHVuKTsKICAgICBzLT50aV9zaXplID0gZGF0YWxlbjsKICAgICBpZiAoZGF0YWxl biAhPSAwKSB7CisgICAgICAgIElPVmVjdG9yICppb3Y7CisKICAgICAgICAgcy0+cnJlZ3NbRVNQ X1JTVEFUXSA9IFNUQVRfSU4gfCBTVEFUX1RDOwogICAgICAgICBzLT5kbWFfbGVmdCA9IDA7CiAg ICAgICAgIHMtPmRtYV9jb3VudGVyID0gMDsKKyNpZiAxCisgICAgICAgIGlvdiA9IGlvdmVjdG9y X25ldygxLCBlc3BfaW92X2RtYV9yZWFkLCBlc3BfaW92X2RtYV93cml0ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHMtPmRtYV9vcGFxdWUpOworICAgICAgICBpb3YtPnNnWzBdLmJhc2Ug PSAwOworICAgICAgICBpZiAoZGF0YWxlbiA+IDApIHsKKyAgICAgICAgICAgIGlvdi0+c2dbMF0u bGVuID0gZGF0YWxlbjsKKyAgICAgICAgICAgIHMtPnJyZWdzW0VTUF9SU1RBVF0gfD0gU1RBVF9E STsKKyAgICAgICAgICAgIHMtPmN1cnJlbnRfZGV2LT5yZWFkdihzLT5jdXJyZW50X2RldiwgMCwg aW92KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlvdi0+c2dbMF0ubGVuID0gLWRh dGFsZW47CisgICAgICAgICAgICBzLT5ycmVnc1tFU1BfUlNUQVRdIHw9IFNUQVRfRE87CisgICAg ICAgICAgICBzLT5jdXJyZW50X2Rldi0+d3JpdGV2KHMtPmN1cnJlbnRfZGV2LCAwLCBpb3YpOwor ICAgICAgICB9CisjZWxzZQogICAgICAgICBpZiAoZGF0YWxlbiA+IDApIHsKICAgICAgICAgICAg IHMtPnJyZWdzW0VTUF9SU1RBVF0gfD0gU1RBVF9ESTsKICAgICAgICAgICAgIHMtPmN1cnJlbnRf ZGV2LT5yZWFkX2RhdGEocy0+Y3VycmVudF9kZXYsIDApOwpAQCAtMjAxLDYgKzIzMyw3IEBACiAg ICAgICAgICAgICBzLT5ycmVnc1tFU1BfUlNUQVRdIHw9IFNUQVRfRE87CiAgICAgICAgICAgICBz LT5jdXJyZW50X2Rldi0+d3JpdGVfZGF0YShzLT5jdXJyZW50X2RldiwgMCk7CiAgICAgICAgIH0K KyNlbmRpZgogICAgIH0KICAgICBzLT5ycmVnc1tFU1BfUklOVFJdID0gSU5UUl9CUyB8IElOVFJf RkM7CiAgICAgcy0+cnJlZ3NbRVNQX1JTRVFdID0gU0VRX0NEOwpAQCAtMjY0LDYgKzI5Nyw3IEBA CiB7CiAgICAgdWludDMyX3QgbGVuOwogICAgIGludCB0b19kZXZpY2U7CisgICAgSU9WZWN0b3Ig KmlvdjsKIAogICAgIHRvX2RldmljZSA9IChzLT50aV9zaXplIDwgMCk7CiAgICAgbGVuID0gcy0+ ZG1hX2xlZnQ7CkBAIC0yNzYsNiArMzEwLDIzIEBACiAgICAgICAgIGRvX2NtZChzLCBzLT5jbWRi dWYpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIDEKKyAgICBpb3YgPSBpb3ZlY3Rvcl9u ZXcoMSwgZXNwX2lvdl9kbWFfcmVhZCwgZXNwX2lvdl9kbWFfd3JpdGUsCisgICAgICAgICAgICAg ICAgICAgICAgIHMtPmRtYV9vcGFxdWUpOworICAgIGlvdi0+c2dbMF0uYmFzZSA9IDA7CisgICAg aW92LT5zZ1swXS5sZW4gPSBsZW47CisgICAgcy0+ZG1hX2xlZnQgLT0gbGVuOworICAgIGlmICh0 b19kZXZpY2UpIHsKKyAgICAgICAgcy0+Y3VycmVudF9kZXYtPndyaXRldihzLT5jdXJyZW50X2Rl diwgMCwgaW92KTsKKyAgICAgICAgcy0+dGlfc2l6ZSArPSBsZW47CisgICAgfSBlbHNlIHsKKyAg ICAgICAgcy0+Y3VycmVudF9kZXYtPnJlYWR2KHMtPmN1cnJlbnRfZGV2LCAwLCBpb3YpOworICAg ICAgICBzLT50aV9zaXplIC09IGxlbjsKKyAgICAgICAgaWYgKHMtPmRtYV9sZWZ0ID09IDAgJiYg cy0+dGlfc2l6ZSA+IDApIHsKKyAgICAgICAgICAgIGVzcF9kbWFfZG9uZShzKTsKKyAgICAgICAg fQorICAgIH0KKyNlbHNlCiAgICAgaWYgKHMtPmFzeW5jX2xlbiA9PSAwKSB7CiAgICAgICAgIC8q IERlZmVyIHVudGlsIGRhdGEgaXMgYXZhaWxhYmxlLiAgKi8KICAgICAgICAgcmV0dXJuOwpAQCAt MzEyLDYgKzM2Myw3IEBACiAgICAgICAgIC8qIFBhcnRpYWxseSBmaWxsZWQgYSBzY3NpIGJ1ZmZl ci4gQ29tcGxldGUgaW1tZWRpYXRlbHkuICAqLwogICAgICAgICBlc3BfZG1hX2RvbmUocyk7CiAg ICAgfQorI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGVzcF9jb21tYW5kX2NvbXBsZXRlKHZvaWQg Km9wYXF1ZSwgaW50IHJlYXNvbiwgdWludDMyX3QgdGFnLAo= ------=_Part_4187_25136296.1208634029135--