From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [RFC Patch v4 2/8] ioreq: bump the number of IOREQ page to 4 pages Date: Fri, 8 Dec 2017 11:06:43 +0000 Message-ID: <646776360aa2466eabd8fb9bdcccd8dc@AMSPEX02CL03.citrite.net> References: <1512546614-9937-1-git-send-email-chao.gao@intel.com> <1512546614-9937-3-git-send-email-chao.gao@intel.com> <20171206090213.GA23898@op-computing> <5cf06a5713b0402b8ad1d1a69a7d77f0@AMSPEX02CL03.citrite.net> <20171207065629.GA49036@op-computing> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_003_646776360aa2466eabd8fb9bdcccd8dcAMSPEX02CL03citritenet_" Return-path: In-Reply-To: <20171207065629.GA49036@op-computing> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: 'Chao Gao' Cc: Stefano Stabellini , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , "xen-devel@lists.xen.org" , Jan Beulich , Ian Jackson List-Id: xen-devel@lists.xenproject.org --_003_646776360aa2466eabd8fb9bdcccd8dcAMSPEX02CL03citritenet_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Chao Gao [mailto:chao.gao@intel.com] > Sent: 07 December 2017 06:57 > To: Paul Durrant > Cc: Stefano Stabellini ; Wei Liu > ; Andrew Cooper ; Tim > (Xen.org) ; George Dunlap ; > xen-devel@lists.xen.org; Jan Beulich ; Ian Jackson > > Subject: Re: [RFC Patch v4 2/8] ioreq: bump the number of IOREQ page to 4 > pages >=20 > On Thu, Dec 07, 2017 at 08:41:14AM +0000, Paul Durrant wrote: > >> -----Original Message----- > >> From: Xen-devel [mailto:xen-devel-bounces@lists.xenproject.org] On > Behalf > >> Of Paul Durrant > >> Sent: 06 December 2017 16:10 > >> To: 'Chao Gao' > >> Cc: Stefano Stabellini ; Wei Liu > >> ; Andrew Cooper ; > Tim > >> (Xen.org) ; George Dunlap ; > >> xen-devel@lists.xen.org; Jan Beulich ; Ian Jackson > >> > >> Subject: Re: [Xen-devel] [RFC Patch v4 2/8] ioreq: bump the number of > >> IOREQ page to 4 pages > >> > >> > -----Original Message----- > >> > From: Chao Gao [mailto:chao.gao@intel.com] > >> > Sent: 06 December 2017 09:02 > >> > To: Paul Durrant > >> > Cc: xen-devel@lists.xen.org; Tim (Xen.org) ; Stefano > >> > Stabellini ; Konrad Rzeszutek Wilk > >> > ; Jan Beulich ; George > >> > Dunlap ; Andrew Cooper > >> > ; Wei Liu ; Ian > Jackson > >> > > >> > Subject: Re: [RFC Patch v4 2/8] ioreq: bump the number of IOREQ page > to 4 > >> > pages > >> > > >> > On Wed, Dec 06, 2017 at 03:04:11PM +0000, Paul Durrant wrote: > >> > >> -----Original Message----- > >> > >> From: Chao Gao [mailto:chao.gao@intel.com] > >> > >> Sent: 06 December 2017 07:50 > >> > >> To: xen-devel@lists.xen.org > >> > >> Cc: Chao Gao ; Paul Durrant > >> > >> ; Tim (Xen.org) ; Stefano > >> > Stabellini > >> > >> ; Konrad Rzeszutek Wilk > >> > >> ; Jan Beulich ; > George > >> > >> Dunlap ; Andrew Cooper > >> > >> ; Wei Liu ; Ian > >> > Jackson > >> > >> > >> > >> Subject: [RFC Patch v4 2/8] ioreq: bump the number of IOREQ page > to 4 > >> > >> pages > >> > >> > >> > >> One 4K-byte page at most contains 128 'ioreq_t'. In order to remo= ve > the > >> > vcpu > >> > >> number constraint imposed by one IOREQ page, bump the number > of > >> > IOREQ > >> > >> page to > >> > >> 4 pages. With this patch, multiple pages can be used as IOREQ pag= e. > >> > >> > >> > >> Basically, this patch extends 'ioreq' field in struct hvm_ioreq_s= erver > to > >> an > >> > >> array. All accesses to 'ioreq' field such as 's->ioreq' are repla= ced with > >> > >> FOR_EACH_IOREQ_PAGE macro. > >> > >> > >> > >> In order to access an IOREQ page, QEMU should get the gmfn and > map > >> > this > >> > >> gmfn > >> > >> to its virtual address space. > >> > > > >> > >No. There's no need to extend the 'legacy' mechanism of using magic > >> page > >> > gfns. You should only handle the case where the mfns are allocated o= n > >> > demand (see the call to hvm_ioreq_server_alloc_pages() in > >> > hvm_get_ioreq_server_frame()). The number of guest vcpus is known > at > >> > this point so the correct number of pages can be allocated. If the c= reator > of > >> > the ioreq server attempts to use the legacy > hvm_get_ioreq_server_info() > >> > and the guest has >128 vcpus then the call should fail. > >> > > >> > Great suggestion. I will introduce a new dmop, a variant of > >> > hvm_get_ioreq_server_frame() for creator to get an array of gfns and > the > >> > size of array. And the legacy interface will report an error if more > >> > than one IOREQ PAGES are needed. > >> > >> You don't need a new dmop for mapping I think. The mem op to map > ioreq > >> server frames should work. All you should need to do is update > >> hvm_get_ioreq_server_frame() to deal with an index > 1, and provide > some > >> means for the ioreq server creator to convert the number of guest vcpu= s > into > >> the correct number of pages to map. (That might need a new dm op). > > > >I realise after saying this that an emulator already knows the size of t= he > ioreq structure and so can easily calculate the correct number of pages t= o > map, given the number of guest vcpus. >=20 > How about the patch in the bottom? Is it in the right direction? Yes, certainly along the right lines. I would probably do away with MAX_NR_= IOREQ_PAGE though. You should just to dynamically allocate the correct numb= er of ioreq pages when the ioreq server is created (since you already calcu= late nr_ioreq_page there anyway). > Do you have the QEMU patch, which replaces the old method with the new > method > to set up mapping? I want to integrate that patch and do some tests. Sure. There's a couple of patched. I have not tested them with recent rebas= es of my series so you may find some issues. Cheers, Paul --_003_646776360aa2466eabd8fb9bdcccd8dcAMSPEX02CL03citritenet_ Content-Type: application/octet-stream; name="0001-Separate-ioreq-server-mapping-code-from-general-init.patch" Content-Description: 0001-Separate-ioreq-server-mapping-code-from-general-init.patch Content-Disposition: attachment; filename="0001-Separate-ioreq-server-mapping-code-from-general-init.patch"; size=5266; creation-date="Fri, 08 Dec 2017 11:06:37 GMT"; modification-date="Fri, 08 Dec 2017 11:06:37 GMT" Content-Transfer-Encoding: base64 RnJvbSBiMTYyY2M2ZDkyYmZmZTI4ZWZhYzM4ZjViOTUwMWE5YzI4YjViZTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29t PgpEYXRlOiBUaHUsIDEwIEF1ZyAyMDE3IDExOjM3OjIyICswMTAwClN1YmplY3Q6IFtQQVRDSCAx LzJdIFNlcGFyYXRlIGlvcmVxIHNlcnZlciBtYXBwaW5nIGNvZGUgZnJvbSBnZW5lcmFsIGluaXQK ClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0t LQogaHcvaTM4Ni94ZW4veGVuLWh2bS5jIHwgODEgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygr KSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaHcvaTM4Ni94ZW4veGVuLWh2bS5jIGIv aHcvaTM4Ni94ZW4veGVuLWh2bS5jCmluZGV4IGQ5Y2NkNWQwZDYuLjU5ZTMxMjJkYWYgMTAwNjQ0 Ci0tLSBhL2h3L2kzODYveGVuL3hlbi1odm0uYworKysgYi9ody9pMzg2L3hlbi94ZW4taHZtLmMK QEAgLTk1LDcgKzk1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgWGVuSU9TdGF0ZSB7CiAgICAgQ1BVU3Rh dGUgKipjcHVfYnlfdmNwdV9pZDsKICAgICAvKiB0aGUgZXZ0Y2huIHBvcnQgZm9yIHBvbGxpbmcg dGhlIG5vdGlmaWNhdGlvbiwgKi8KICAgICBldnRjaG5fcG9ydF90ICppb3JlcV9sb2NhbF9wb3J0 OwotICAgIC8qIGV2dGNobiBsb2NhbCBwb3J0IGZvciBidWZmZXJlZCBpbyAqLworICAgIC8qIGV2 dGNobiByZW1vdGUgYW5kIGxvY2FsIHBvcnRzIGZvciBidWZmZXJlZCBpbyAqLworICAgIGV2dGNo bl9wb3J0X3QgYnVmaW9yZXFfcmVtb3RlX3BvcnQ7CiAgICAgZXZ0Y2huX3BvcnRfdCBidWZpb3Jl cV9sb2NhbF9wb3J0OwogICAgIC8qIHRoZSBldnRjaG4gZmQgZm9yIHBvbGxpbmcgKi8KICAgICB4 ZW5ldnRjaG5faGFuZGxlICp4Y2VfaGFuZGxlOwpAQCAtMTIzMiwxMiArMTIzMyw1MiBAQCBzdGF0 aWMgdm9pZCB4ZW5fd2FrZXVwX25vdGlmaWVyKE5vdGlmaWVyICpub3RpZmllciwgdm9pZCAqZGF0 YSkKICAgICB4Y19zZXRfaHZtX3BhcmFtKHhlbl94YywgeGVuX2RvbWlkLCBIVk1fUEFSQU1fQUNQ SV9TX1NUQVRFLCAwKTsKIH0KIAotdm9pZCB4ZW5faHZtX2luaXQoUENNYWNoaW5lU3RhdGUgKnBj bXMsIE1lbW9yeVJlZ2lvbiAqKnJhbV9tZW1vcnkpCitzdGF0aWMgaW50IHhlbl9tYXBfaW9yZXFf c2VydmVyKFhlbklPU3RhdGUgKnN0YXRlKQogewotICAgIGludCBpLCByYzsKICAgICB4ZW5fcGZu X3QgaW9yZXFfcGZuOwogICAgIHhlbl9wZm5fdCBidWZpb3JlcV9wZm47CiAgICAgZXZ0Y2huX3Bv cnRfdCBidWZpb3JlcV9ldnRjaG47CisgICAgaW50IHJjOworICAgIAorICAgIHJjID0geGVuX2dl dF9pb3JlcV9zZXJ2ZXJfaW5mbyh4ZW5fZG9taWQsIHN0YXRlLT5pb3NlcnZpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlvcmVxX3BmbiwgJmJ1ZmlvcmVxX3BmbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmlvcmVxX2V2dGNobik7CisgICAg aWYgKHJjIDwgMCkgeworICAgICAgICBlcnJvcl9yZXBvcnQoImZhaWxlZCB0byBnZXQgaW9yZXEg c2VydmVyIGluZm86IGVycm9yICVkIGhhbmRsZT0lcCIsCisgICAgICAgICAgICAgICAgICAgICBl cnJubywgeGVuX3hjKTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIERQUklOVEYo InNoYXJlZCBwYWdlIGF0IHBmbiAlbHhcbiIsIGlvcmVxX3Bmbik7CisgICAgRFBSSU5URigiYnVm ZmVyZWQgaW8gcGFnZSBhdCBwZm4gJWx4XG4iLCBidWZpb3JlcV9wZm4pOworICAgIERQUklOVEYo ImJ1ZmZlcmVkIGlvIGV2dGNobiBpcyAleFxuIiwgYnVmaW9yZXFfZXZ0Y2huKTsKKworICAgIHN0 YXRlLT5zaGFyZWRfcGFnZSA9IHhlbmZvcmVpZ25tZW1vcnlfbWFwKHhlbl9mbWVtLCB4ZW5fZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9S RUFEfFBST1RfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMSwgJmlvcmVxX3BmbiwgTlVMTCk7CisgICAgaWYgKHN0YXRlLT5zaGFyZWRfcGFnZSA9 PSBOVUxMKSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgibWFwIHNoYXJlZCBJTyBwYWdlIHJldHVy bmVkIGVycm9yICVkIGhhbmRsZT0lcCIsCisgICAgICAgICAgICAgICAgICAgICBlcnJubywgeGVu X3hjKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHN0YXRlLT5idWZmZXJlZF9p b19wYWdlID0geGVuZm9yZWlnbm1lbW9yeV9tYXAoeGVuX2ZtZW0sIHhlbl9kb21pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRHxQ Uk9UX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMSwgJmJ1ZmlvcmVxX3BmbiwgTlVMTCk7CisgICAgaWYgKHN0YXRlLT5idWZmZXJlZF9p b19wYWdlID09IE5VTEwpIHsKKyAgICAgICAgZXJyb3JfcmVwb3J0KCJtYXAgYnVmZmVyZWQgSU8g cGFnZSByZXR1cm5lZCBlcnJvciAlZCIsIGVycm5vKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAg IH0KKworICAgIHN0YXRlLT5idWZpb3JlcV9yZW1vdGVfcG9ydCA9IGJ1ZmlvcmVxX2V2dGNobjsK KyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCB4ZW5faHZtX2luaXQoUENNYWNoaW5lU3Rh dGUgKnBjbXMsIE1lbW9yeVJlZ2lvbiAqKnJhbV9tZW1vcnkpCit7CisgICAgaW50IGksIHJjOwor ICAgIHhlbl9wZm5fdCBpb3JlcV9wZm47CiAgICAgWGVuSU9TdGF0ZSAqc3RhdGU7CiAKICAgICBz dGF0ZSA9IGdfbWFsbG9jMChzaXplb2YgKFhlbklPU3RhdGUpKTsKQEAgLTEyNzMsMjggKzEzMTQs MTAgQEAgdm9pZCB4ZW5faHZtX2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsIE1lbW9yeVJlZ2lv biAqKnJhbV9tZW1vcnkpCiAgICAgc3RhdGUtPndha2V1cC5ub3RpZnkgPSB4ZW5fd2FrZXVwX25v dGlmaWVyOwogICAgIHFlbXVfcmVnaXN0ZXJfd2FrZXVwX25vdGlmaWVyKCZzdGF0ZS0+d2FrZXVw KTsKIAotICAgIHJjID0geGVuX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyh4ZW5fZG9taWQsIHN0YXRl LT5pb3NlcnZpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlvcmVxX3Bm biwgJmJ1ZmlvcmVxX3BmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1 ZmlvcmVxX2V2dGNobik7Ci0gICAgaWYgKHJjIDwgMCkgewotICAgICAgICBlcnJvcl9yZXBvcnQo ImZhaWxlZCB0byBnZXQgaW9yZXEgc2VydmVyIGluZm86IGVycm9yICVkIGhhbmRsZT0lcCIsCi0g ICAgICAgICAgICAgICAgICAgICBlcnJubywgeGVuX3hjKTsKKyAgICByYyA9IHhlbl9tYXBfaW9y ZXFfc2VydmVyKHN0YXRlKTsKKyAgICBpZiAocmMgPCAwKQogICAgICAgICBnb3RvIGVycjsKLSAg ICB9Ci0KLSAgICBEUFJJTlRGKCJzaGFyZWQgcGFnZSBhdCBwZm4gJWx4XG4iLCBpb3JlcV9wZm4p OwotICAgIERQUklOVEYoImJ1ZmZlcmVkIGlvIHBhZ2UgYXQgcGZuICVseFxuIiwgYnVmaW9yZXFf cGZuKTsKLSAgICBEUFJJTlRGKCJidWZmZXJlZCBpbyBldnRjaG4gaXMgJXhcbiIsIGJ1ZmlvcmVx X2V2dGNobik7Ci0KLSAgICBzdGF0ZS0+c2hhcmVkX3BhZ2UgPSB4ZW5mb3JlaWdubWVtb3J5X21h cCh4ZW5fZm1lbSwgeGVuX2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBST1RfUkVBRHxQUk9UX1dSSVRFLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEsICZpb3JlcV9wZm4sIE5VTEwpOwotICAgIGlmIChz dGF0ZS0+c2hhcmVkX3BhZ2UgPT0gTlVMTCkgewotICAgICAgICBlcnJvcl9yZXBvcnQoIm1hcCBz aGFyZWQgSU8gcGFnZSByZXR1cm5lZCBlcnJvciAlZCBoYW5kbGU9JXAiLAotICAgICAgICAgICAg ICAgICAgICAgZXJybm8sIHhlbl94Yyk7Ci0gICAgICAgIGdvdG8gZXJyOwotICAgIH0KLQorICAg IAogICAgIHJjID0geGVuX2dldF92bXBvcnRfcmVnc19wZm4oeGVuX3hjLCB4ZW5fZG9taWQsICZp b3JlcV9wZm4pOwogICAgIGlmICghcmMpIHsKICAgICAgICAgRFBSSU5URigic2hhcmVkIHZtcG9y dCBwYWdlIGF0IHBmbiAlbHhcbiIsIGlvcmVxX3Bmbik7CkBAIC0xMzEyLDE0ICsxMzM1LDYgQEAg dm9pZCB4ZW5faHZtX2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsIE1lbW9yeVJlZ2lvbiAqKnJh bV9tZW1vcnkpCiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KIAotICAgIHN0YXRlLT5idWZmZXJl ZF9pb19wYWdlID0geGVuZm9yZWlnbm1lbW9yeV9tYXAoeGVuX2ZtZW0sIHhlbl9kb21pZCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVB RHxQUk9UX1dSSVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMSwgJmJ1ZmlvcmVxX3BmbiwgTlVMTCk7Ci0gICAgaWYgKHN0YXRlLT5idWZmZXJl ZF9pb19wYWdlID09IE5VTEwpIHsKLSAgICAgICAgZXJyb3JfcmVwb3J0KCJtYXAgYnVmZmVyZWQg SU8gcGFnZSByZXR1cm5lZCBlcnJvciAlZCIsIGVycm5vKTsKLSAgICAgICAgZ290byBlcnI7Ci0g ICAgfQotCiAgICAgLyogTm90ZTogY3B1cyBpcyBlbXB0eSBhdCB0aGlzIHBvaW50IGluIGluaXQg Ki8KICAgICBzdGF0ZS0+Y3B1X2J5X3ZjcHVfaWQgPSBnX21hbGxvYzAobWF4X2NwdXMgKiBzaXpl b2YoQ1BVU3RhdGUgKikpOwogCkBAIC0xMzQ0LDcgKzEzNTksNyBAQCB2b2lkIHhlbl9odm1faW5p dChQQ01hY2hpbmVTdGF0ZSAqcGNtcywgTWVtb3J5UmVnaW9uICoqcmFtX21lbW9yeSkKICAgICB9 CiAKICAgICByYyA9IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHN0YXRlLT54Y2VfaGFuZGxl LCB4ZW5fZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZpb3Jl cV9ldnRjaG4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmJ1 ZmlvcmVxX3JlbW90ZV9wb3J0KTsKICAgICBpZiAocmMgPT0gLTEpIHsKICAgICAgICAgZXJyb3Jf cmVwb3J0KCJidWZmZXJlZCBldnRjaG4gYmluZCBlcnJvciAlZCIsIGVycm5vKTsKICAgICAgICAg Z290byBlcnI7Ci0tIAoyLjExLjAKCg== --_003_646776360aa2466eabd8fb9bdcccd8dcAMSPEX02CL03citritenet_ Content-Type: application/octet-stream; name="0002-use-new-interface.patch" Content-Description: 0002-use-new-interface.patch Content-Disposition: attachment; filename="0002-use-new-interface.patch"; size=5641; creation-date="Fri, 08 Dec 2017 11:06:40 GMT"; modification-date="Fri, 08 Dec 2017 11:06:40 GMT" Content-Transfer-Encoding: base64 RnJvbSAwYWZiNjVlNzRkNGJhNWIxZmFlNDdjZDdmZWY2NWE2YmRjODU5YjU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29t PgpEYXRlOiBUaHUsIDEwIEF1ZyAyMDE3IDExOjM4OjAxICswMTAwClN1YmplY3Q6IFtQQVRDSCAy LzJdIHVzZSBuZXcgaW50ZXJmYWNlCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwu ZHVycmFudEBjaXRyaXguY29tPgotLS0KIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICB8ICAx ICsKIGh3L2kzODYveGVuL3hlbi1odm0uYyAgICAgICB8IDYyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLQogaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oIHwg MTYgKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDEzIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCBkZDcz Y2NlNjJmLi41NWI2N2Y5ODQ1IDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJl CkBAIC0yMTE0LDYgKzIxMTQsNyBAQCBpbnQgbWFpbih2b2lkKSB7CiAKICAgeGZtZW0gPSB4ZW5m b3JlaWdubWVtb3J5X29wZW4oMCwgMCk7CiAgIHhlbmZvcmVpZ25tZW1vcnlfbWFwMih4Zm1lbSwg MCwgMCwgMCwgMCwgMCwgMCwgMCk7CisgIHhlbmZvcmVpZ25tZW1vcnlfbWFwX3Jlc291cmNlKHhm bWVtLCAwLCAwLCAwLCAwLCAwLCBOVUxMLCAwLCAwKTsKIAogICByZXR1cm4gMDsKIH0KZGlmZiAt LWdpdCBhL2h3L2kzODYveGVuL3hlbi1odm0uYyBiL2h3L2kzODYveGVuL3hlbi1odm0uYwppbmRl eCA1OWUzMTIyZGFmLi4wYThkMWY2NTc0IDEwMDY0NAotLS0gYS9ody9pMzg2L3hlbi94ZW4taHZt LmMKKysrIGIvaHcvaTM4Ni94ZW4veGVuLWh2bS5jCkBAIC0xMjM1LDEzICsxMjM1LDM3IEBAIHN0 YXRpYyB2b2lkIHhlbl93YWtldXBfbm90aWZpZXIoTm90aWZpZXIgKm5vdGlmaWVyLCB2b2lkICpk YXRhKQogCiBzdGF0aWMgaW50IHhlbl9tYXBfaW9yZXFfc2VydmVyKFhlbklPU3RhdGUgKnN0YXRl KQogeworICAgIHZvaWQgKmFkZHIgPSBOVUxMOworICAgIHhlbmZvcmVpZ25tZW1vcnlfcmVzb3Vy Y2VfaGFuZGxlICpmcmVzOwogICAgIHhlbl9wZm5fdCBpb3JlcV9wZm47CiAgICAgeGVuX3Bmbl90 IGJ1ZmlvcmVxX3BmbjsKICAgICBldnRjaG5fcG9ydF90IGJ1ZmlvcmVxX2V2dGNobjsKICAgICBp bnQgcmM7CisKKyAgICAvKgorICAgICAqIEF0dGVtcHQgdG8gbWFwIHVzaW5nIHRoZSByZXNvdXJj ZSBBUEkgYW5kIGZhbGwgYmFjayB0byBub3JtYWwKKyAgICAgKiBmb3JlaWduIG1hcHBpbmcgaWYg dGhpcyBpcyBub3Qgc3VwcG9ydGVkLgorICAgICAqLworICAgIGZyZXMgPSB4ZW5mb3JlaWdubWVt b3J5X21hcF9yZXNvdXJjZSh4ZW5fZm1lbSwgeGVuX2RvbWlkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aW9zZXJ2aWQsIDAs IDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UX1JFQUR8UFJPVF9XUklU RSwgMCk7CisgICAgaWYgKGZyZXMgIT0gTlVMTCkgeworICAgICAgICBzdGF0ZS0+YnVmZmVyZWRf aW9fcGFnZSA9IGFkZHI7CisgICAgICAgIHN0YXRlLT5zaGFyZWRfcGFnZSA9IGFkZHIgKyBUQVJH RVRfUEFHRV9TSVpFOworICAgIH0gZWxzZSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgiZmFpbGVk IHRvIG1hcCBpb3JlcSBzZXJ2ZXIgcmVzb3VyY2VzOiBlcnJvciAlZCBoYW5kbGU9JXAiLAorICAg ICAgICAgICAgICAgICAgICAgZXJybm8sIHhlbl94Yyk7CisgICAgICAgIGlmIChlcnJubyAhPSBF T1BOT1RTVVBQKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICAKICAgICByYyA9 IHhlbl9nZXRfaW9yZXFfc2VydmVyX2luZm8oeGVuX2RvbWlkLCBzdGF0ZS0+aW9zZXJ2aWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpb3JlcV9wZm4sICZidWZpb3JlcV9w Zm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS0+c2hhcmVkX3Bh Z2UgPT0gTlVMTCkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW9yZXFf cGZuIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlLT5i dWZmZXJlZF9pb19wYWdlID09IE5VTEwpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmJ1ZmlvcmVxX3BmbiA6IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZidWZpb3JlcV9ldnRjaG4pOwogICAgIGlmIChyYyA8IDApIHsKICAgICAgICAgZXJy b3JfcmVwb3J0KCJmYWlsZWQgdG8gZ2V0IGlvcmVxIHNlcnZlciBpbmZvOiBlcnJvciAlZCBoYW5k bGU9JXAiLApAQCAtMTI0OSwyNCArMTI3MywzNiBAQCBzdGF0aWMgaW50IHhlbl9tYXBfaW9yZXFf c2VydmVyKFhlbklPU3RhdGUgKnN0YXRlKQogICAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCi0g ICAgRFBSSU5URigic2hhcmVkIHBhZ2UgYXQgcGZuICVseFxuIiwgaW9yZXFfcGZuKTsKLSAgICBE UFJJTlRGKCJidWZmZXJlZCBpbyBwYWdlIGF0IHBmbiAlbHhcbiIsIGJ1ZmlvcmVxX3Bmbik7Cisg ICAgaWYgKHN0YXRlLT5zaGFyZWRfcGFnZSA9PSBOVUxMKQorICAgICAgICBEUFJJTlRGKCJzaGFy ZWQgcGFnZSBhdCBwZm4gJWx4XG4iLCBpb3JlcV9wZm4pOworICAgIAorICAgIGlmIChzdGF0ZS0+ YnVmZmVyZWRfaW9fcGFnZSA9PSBOVUxMKQorICAgICAgICBEUFJJTlRGKCJidWZmZXJlZCBpbyBw YWdlIGF0IHBmbiAlbHhcbiIsIGJ1ZmlvcmVxX3Bmbik7CisgICAgCiAgICAgRFBSSU5URigiYnVm ZmVyZWQgaW8gZXZ0Y2huIGlzICV4XG4iLCBidWZpb3JlcV9ldnRjaG4pOwogCi0gICAgc3RhdGUt PnNoYXJlZF9wYWdlID0geGVuZm9yZWlnbm1lbW9yeV9tYXAoeGVuX2ZtZW0sIHhlbl9kb21pZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UX1JFQUR8 UFJPVF9XUklURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxLCAmaW9yZXFfcGZuLCBOVUxMKTsKICAgICBpZiAoc3RhdGUtPnNoYXJlZF9wYWdlID09IE5V TEwpIHsKLSAgICAgICAgZXJyb3JfcmVwb3J0KCJtYXAgc2hhcmVkIElPIHBhZ2UgcmV0dXJuZWQg ZXJyb3IgJWQgaGFuZGxlPSVwIiwKLSAgICAgICAgICAgICAgICAgICAgIGVycm5vLCB4ZW5feGMp OwotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHN0YXRlLT5zaGFyZWRfcGFnZSA9IHhlbmZv cmVpZ25tZW1vcnlfbWFwKHhlbl9mbWVtLCB4ZW5fZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRHxQUk9UX1dSSVRFLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAmaW9yZXFf cGZuLCBOVUxMKTsKKyAgICAgICAgaWYgKHN0YXRlLT5zaGFyZWRfcGFnZSA9PSBOVUxMKSB7Cisg ICAgICAgICAgICBlcnJvcl9yZXBvcnQoIm1hcCBzaGFyZWQgSU8gcGFnZSByZXR1cm5lZCBlcnJv ciAlZCBoYW5kbGU9JXAiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCB4ZW5feGMp OworICAgICAgICB9CiAgICAgfQogCi0gICAgc3RhdGUtPmJ1ZmZlcmVkX2lvX3BhZ2UgPSB4ZW5m b3JlaWdubWVtb3J5X21hcCh4ZW5fZm1lbSwgeGVuX2RvbWlkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEfFBST1RfV1JJVEUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAmYnVm aW9yZXFfcGZuLCBOVUxMKTsKICAgICBpZiAoc3RhdGUtPmJ1ZmZlcmVkX2lvX3BhZ2UgPT0gTlVM TCkgewotICAgICAgICBlcnJvcl9yZXBvcnQoIm1hcCBidWZmZXJlZCBJTyBwYWdlIHJldHVybmVk IGVycm9yICVkIiwgZXJybm8pOworICAgICAgICBzdGF0ZS0+YnVmZmVyZWRfaW9fcGFnZSA9IHhl bmZvcmVpZ25tZW1vcnlfbWFwKHhlbl9mbWVtLCB4ZW5fZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEfFBST1RfV1JJ VEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMSwgJmJ1ZmlvcmVxX3BmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgaWYgKHN0YXRlLT5idWZmZXJlZF9p b19wYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgibWFwIGJ1ZmZlcmVk IElPIHBhZ2UgcmV0dXJuZWQgZXJyb3IgJWQiLCBlcnJubyk7CisgICAgICAgICAgICByZXR1cm4g LTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3RhdGUtPnNoYXJlZF9wYWdlID09IE5V TEwgfHwgc3RhdGUtPmJ1ZmZlcmVkX2lvX3BhZ2UgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4g LTE7CiAgICAgfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmggYi9p bmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKaW5kZXggODZjN2YyNjEwNi4uNmM1OWFiNTZlOSAx MDA2NDQKLS0tIGEvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCisrKyBiL2luY2x1ZGUvaHcv eGVuL3hlbl9jb21tb24uaApAQCAtOTEsNiArOTEsMjIgQEAgc3RhdGljIGlubGluZSB2b2lkICp4 ZW5mb3JlaWdubWVtb3J5X21hcDIoeGVuZm9yZWlnbm1lbW9yeV9oYW5kbGUgKmgsCiAgICAgcmV0 dXJuIHhlbmZvcmVpZ25tZW1vcnlfbWFwKGgsIGRvbSwgcHJvdCwgcGFnZXMsIGFyciwgZXJyKTsK IH0KIAordHlwZWRlZiB2b2lkIHhlbmZvcmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFuZGxlOworCitz dGF0aWMgaW5saW5lIHhlbmZvcmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFuZGxlICp4ZW5mb3JlaWdu bWVtb3J5X21hcF9yZXNvdXJjZSgKKyAgICB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqZm1lbSwg ZG9taWRfdCBkb21pZCwgdW5zaWduZWQgaW50IHR5cGUsCisgICAgdW5zaWduZWQgaW50IGlkLCB1 bnNpZ25lZCBsb25nIGZyYW1lLCB1bnNpZ25lZCBsb25nIG5yX2ZyYW1lcywKKyAgICB2b2lkICoq cGFkZHIsIGludCBwcm90LCBpbnQgZmxhZ3MpCit7CisgICAgZXJybm8gPSBFT1BOT1RTVVBQOwor ICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHhlbmZvcmVpZ25tZW1vcnlf dW5tYXBfcmVzb3VyY2UoCisgICAgeGVuZm9yZWlnbm1lbW9yeV9oYW5kbGUgKmZtZW0sIHhlbmZv cmVpZ25tZW1vcnlfcmVzb3VyY2VfaGFuZGxlICpmcmVzKQoreworfQorCiAjZW5kaWYKIAogI2lm IENPTkZJR19YRU5fQ1RSTF9JTlRFUkZBQ0VfVkVSU0lPTiA8IDQwOTAwCi0tIAoyLjExLjAKCg== --_003_646776360aa2466eabd8fb9bdcccd8dcAMSPEX02CL03citritenet_ Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== --_003_646776360aa2466eabd8fb9bdcccd8dcAMSPEX02CL03citritenet_--