From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 50282 invoked by alias); 23 Jun 2017 10:29:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 49840 invoked by uid 89); 23 Jun 2017 10:29:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-ua0-f169.google.com Received: from mail-ua0-f169.google.com (HELO mail-ua0-f169.google.com) (209.85.217.169) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 23 Jun 2017 10:29:14 +0000 Received: by mail-ua0-f169.google.com with SMTP id j53so34111637uaa.2 for ; Fri, 23 Jun 2017 03:29:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=smMBwj/jS2VJCjlImrxQmEYm/lDOwN73E9P+yGQMBn8=; b=dqrkiMX4gWgIe5CoCyiSwySkTN5bJRw9TnQFGGRfgXT3o7II2qBoX1pTcrhRyZ5ckJ tM2WabIL0LIJ2xz9tqY4rkxlT0lvuy0mYz13mWZTS7/binDsPUpmM6/23GPxKOFig2nu QjuD9JrQX3cTQBJKQKVS7c89M6qKNip5WlHtD7u+qN79aDACyPf6SVuyVR/r4kSC833f kmyxSnCmKTEaVQjqplFXgIFRemHHUg6icTexaYIHIRMvWjQ35sz2l3BxuM6Z7flTnioy V7Z31qnCKCHZZz9FGL7aprmvhM/SnT+OSl9kNkbxrGqGFXXcTy5FASkVNh+rqftPDEGH B0LA== X-Gm-Message-State: AKS2vOxGKmJk8hi07z6ilmo3EJEI/PEhLOpVXAY6h3S4DsD00gzJC+d2 +UZMex6BePuKR81Eh2aMMsqZbdrvZw== X-Received: by 10.176.2.22 with SMTP id 22mr5467861uas.0.1498213752799; Fri, 23 Jun 2017 03:29:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.49.142 with HTTP; Fri, 23 Jun 2017 03:29:12 -0700 (PDT) In-Reply-To: References: From: "Bin.Cheng" Date: Fri, 23 Jun 2017 10:29:00 -0000 Message-ID: Subject: Re: [PATCH GCC][08/13]Refactoring structure partition for distribution To: Richard Biener Cc: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="001a113fa1e688d4dc05529e12a4" X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg01759.txt.bz2 --001a113fa1e688d4dc05529e12a4 Content-Type: text/plain; charset="UTF-8" Content-length: 1926 On Mon, Jun 19, 2017 at 4:18 PM, Richard Biener wrote: > On Mon, Jun 19, 2017 at 3:37 PM, Bin.Cheng wrote: >> On Wed, Jun 14, 2017 at 2:47 PM, Richard Biener >> wrote: >>> On Mon, Jun 12, 2017 at 7:03 PM, Bin Cheng wrote: >>>> Hi, >>>> This patch refactors struct partition for later distribution. It records >>>> bitmap of data references in struct partition rather than vertices' data in >>>> partition dependence graph. It simplifies code as well as enables following >>>> rewriting. >>>> Bootstrap and test on x86_64 and AArch64. Is it OK? >>> >>> Ok. >> Hi, >> I updated patch by merging read/write data references together in >> struct partition. This helps remove code duplication. Is it OK? > > Ok. Sorry I made a mistake when separating patch. The previous patch uses un-initialized variable "dir". Though related code was removed by following patch, for this specific version, the code is wrong. Is it OK? Like: + int dir = pg_add_dependence_edges (rdg, dir, + partition1->datarefs, + partition2->datarefs); Now changed to + int dir = pg_add_dependence_edges (rdg, 0, + partition1->datarefs, + partition2->datarefs); Thanks, bin > > Richard. > >> Thanks, >> bin >> 2017-06-07 Bin Cheng >> >> * tree-loop-distribution.c (struct partition): New field recording >> its data reference. >> (partition_alloc, partition_free): Init and release data refs. >> (partition_merge_into): Merge data refs. >> (build_rdg_partition_for_vertex): Collect data refs for partition. >> (pg_add_dependence_edges): Change parameters from vector to bitmap. >> Update uses. >> (distribute_loop): Remve data refs from vertice data of partition >> graph. --001a113fa1e688d4dc05529e12a4 Content-Type: text/x-patch; charset="US-ASCII"; name="0007-struct-partition-refactoring-20170608.txt.patch" Content-Disposition: attachment; filename="0007-struct-partition-refactoring-20170608.txt.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j49prhqn0 Content-length: 12388 RnJvbSAzMjRmOWM1NTA1Y2RmOTI4ZTQxNzhhYjYxMGFhZmMyODAwY2E4NTc3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCaW4gQ2hlbmcgPGJp bmNoZTAxQGUxMDg0NTEtbGluLmNhbWJyaWRnZS5hcm0uY29tPgpEYXRlOiBG cmksIDkgSnVuIDIwMTcgMTI6Mjk6MjQgKzAxMDAKU3ViamVjdDogW1BBVENI IDA3LzEzXSBzdHJ1Y3QtcGFydGl0aW9uLXJlZmFjdG9yaW5nLTIwMTcwNjA4 LnR4dAoKLS0tCiBnY2MvdHJlZS1sb29wLWRpc3RyaWJ1dGlvbi5jIHwgMTc5 ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCA4NSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1sb29wLWRpc3RyaWJ1dGlv bi5jIGIvZ2NjL3RyZWUtbG9vcC1kaXN0cmlidXRpb24uYwppbmRleCBhMDEz NTU2Li5lYWZkMTE5IDEwMDY0NAotLS0gYS9nY2MvdHJlZS1sb29wLWRpc3Ry aWJ1dGlvbi5jCisrKyBiL2djYy90cmVlLWxvb3AtZGlzdHJpYnV0aW9uLmMK QEAgLTUwMCwzMCArNTAwLDQwIEBAIGVudW0gcGFydGl0aW9uX2tpbmQgewog ICAgIFBLSU5EX05PUk1BTCwgUEtJTkRfTUVNU0VULCBQS0lORF9NRU1DUFks IFBLSU5EX01FTU1PVkUKIH07CiAKKy8qIFBhcnRpdGlvbiBmb3IgbG9vcCBk aXN0cmlidXRpb24uICAqLwogc3RydWN0IHBhcnRpdGlvbgogeworICAvKiBT dGF0ZW1lbnRzIG9mIHRoZSBwYXJ0aXRpb24uICAqLwogICBiaXRtYXAgc3Rt dHM7CisgIC8qIExvb3BzIG9mIHRoZSBwYXJ0aXRpb24uICAqLwogICBiaXRt YXAgbG9vcHM7CisgIC8qIFRydWUgaWYgdGhlIHBhcnRpdGlvbiBkZWZpbmVz IHZhcmlhYmxlIHdoaWNoIGlzIHVzZWQgb3V0c2lkZSBvZiBsb29wLiAgKi8K ICAgYm9vbCByZWR1Y3Rpb25fcDsKKyAgLyogRm9yIGJ1aWx0aW4gcGFydGl0 aW9uLCB0cnVlIGlmIGl0IGV4ZWN1dGVzIG9uZSBpdGVyYXRpb24gbW9yZSB0 aGFuCisgICAgIG51bWJlciBvZiBsb29wIChsYXRjaCkgaXRlcmF0aW9ucy4g ICovCiAgIGJvb2wgcGx1c19vbmU7CiAgIGVudW0gcGFydGl0aW9uX2tpbmQg a2luZDsKICAgLyogZGF0YS1yZWZlcmVuY2VzIGEga2luZCAhPSBQS0lORF9O T1JNQUwgcGFydGl0aW9uIGlzIGFib3V0LiAgKi8KICAgZGF0YV9yZWZlcmVu Y2VfcCBtYWluX2RyOwogICBkYXRhX3JlZmVyZW5jZV9wIHNlY29uZGFyeV9k cjsKKyAgLyogTnVtYmVyIG9mIGxvb3AgKGxhdGNoKSBpdGVyYXRpb25zLiAg Ki8KICAgdHJlZSBuaXRlcjsKKyAgLyogRGF0YSByZWZlcmVuY2VzIGluIHRo ZSBwYXJ0aXRpb24uICAqLworICBiaXRtYXAgZGF0YXJlZnM7CiB9OwogCiAK IC8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgcGFydGl0aW9uIGZyb20g QklUTUFQLiAgKi8KIAogc3RhdGljIHBhcnRpdGlvbiAqCi1wYXJ0aXRpb25f YWxsb2MgKGJpdG1hcCBzdG10cywgYml0bWFwIGxvb3BzKQorcGFydGl0aW9u X2FsbG9jICh2b2lkKQogewogICBwYXJ0aXRpb24gKnBhcnRpdGlvbiA9IFhD TkVXIChzdHJ1Y3QgcGFydGl0aW9uKTsKLSAgcGFydGl0aW9uLT5zdG10cyA9 IHN0bXRzID8gc3RtdHMgOiBCSVRNQVBfQUxMT0MgKE5VTEwpOwotICBwYXJ0 aXRpb24tPmxvb3BzID0gbG9vcHMgPyBsb29wcyA6IEJJVE1BUF9BTExPQyAo TlVMTCk7CisgIHBhcnRpdGlvbi0+c3RtdHMgPSBCSVRNQVBfQUxMT0MgKE5V TEwpOworICBwYXJ0aXRpb24tPmxvb3BzID0gQklUTUFQX0FMTE9DIChOVUxM KTsKICAgcGFydGl0aW9uLT5yZWR1Y3Rpb25fcCA9IGZhbHNlOwogICBwYXJ0 aXRpb24tPmtpbmQgPSBQS0lORF9OT1JNQUw7CisgIHBhcnRpdGlvbi0+ZGF0 YXJlZnMgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOwogICByZXR1cm4gcGFydGl0 aW9uOwogfQogCkBAIC01MzQsNiArNTQ0LDcgQEAgcGFydGl0aW9uX2ZyZWUg KHBhcnRpdGlvbiAqcGFydGl0aW9uKQogewogICBCSVRNQVBfRlJFRSAocGFy dGl0aW9uLT5zdG10cyk7CiAgIEJJVE1BUF9GUkVFIChwYXJ0aXRpb24tPmxv b3BzKTsKKyAgQklUTUFQX0ZSRUUgKHBhcnRpdGlvbi0+ZGF0YXJlZnMpOwog ICBmcmVlIChwYXJ0aXRpb24pOwogfQogCkBAIC01ODEsNiArNTkyLDggQEAg cGFydGl0aW9uX21lcmdlX2ludG8gKHBhcnRpdGlvbiAqZGVzdCwgcGFydGl0 aW9uICpwYXJ0aXRpb24sIGVudW0gZnVzZV90eXBlIGZ0KQogICBpZiAocGFy dGl0aW9uX3JlZHVjdGlvbl9wIChwYXJ0aXRpb24pKQogICAgIGRlc3QtPnJl ZHVjdGlvbl9wID0gdHJ1ZTsKIAorICBiaXRtYXBfaW9yX2ludG8gKGRlc3Qt PmRhdGFyZWZzLCBwYXJ0aXRpb24tPmRhdGFyZWZzKTsKKwogICBpZiAoZHVt cF9maWxlICYmIChkdW1wX2ZsYWdzICYgVERGX0RFVEFJTFMpKQogICAgIHsK ICAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwgIkZ1c2UgcGFydGl0aW9ucyBi ZWNhdXNlICVzOlxuIiwgZnVzZV9tZXNzYWdlW2Z0XSk7CkBAIC0xMDUxLDEw ICsxMDY0LDExIEBAIGdlbmVyYXRlX2NvZGVfZm9yX3BhcnRpdGlvbiAoc3Ry dWN0IGxvb3AgKmxvb3AsCiBzdGF0aWMgcGFydGl0aW9uICoKIGJ1aWxkX3Jk Z19wYXJ0aXRpb25fZm9yX3ZlcnRleCAoc3RydWN0IGdyYXBoICpyZGcsIGlu dCB2KQogewotICBwYXJ0aXRpb24gKnBhcnRpdGlvbiA9IHBhcnRpdGlvbl9h bGxvYyAoTlVMTCwgTlVMTCk7CisgIHBhcnRpdGlvbiAqcGFydGl0aW9uID0g cGFydGl0aW9uX2FsbG9jICgpOwogICBhdXRvX3ZlYzxpbnQsIDM+IG5vZGVz OwotICB1bnNpZ25lZCBpOworICB1bnNpZ25lZCBpLCBqOwogICBpbnQgeDsK KyAgZGF0YV9yZWZlcmVuY2VfcCBkcjsKIAogICBncmFwaGRzX2RmcyAocmRn LCAmdiwgMSwgJm5vZGVzLCBmYWxzZSwgTlVMTCk7CiAKQEAgLTEwNjMsNiAr MTA3NywxNCBAQCBidWlsZF9yZGdfcGFydGl0aW9uX2Zvcl92ZXJ0ZXggKHN0 cnVjdCBncmFwaCAqcmRnLCBpbnQgdikKICAgICAgIGJpdG1hcF9zZXRfYml0 IChwYXJ0aXRpb24tPnN0bXRzLCB4KTsKICAgICAgIGJpdG1hcF9zZXRfYml0 IChwYXJ0aXRpb24tPmxvb3BzLAogCQkgICAgICBsb29wX2NvbnRhaW5pbmdf c3RtdCAoUkRHX1NUTVQgKHJkZywgeCkpLT5udW0pOworCisgICAgICBmb3Ig KGogPSAwOyBSREdfREFUQVJFRlMgKHJkZywgeCkuaXRlcmF0ZSAoaiwgJmRy KTsgKytqKQorCXsKKwkgIHVuc2lnbmVkIGlkeCA9ICh1bnNpZ25lZCkgRFJf SU5ERVggKGRyKTsKKwkgIGdjY19hc3NlcnQgKGlkeCA8IGRhdGFyZWZzX3Zl Yy5sZW5ndGggKCkpOworCisJICBiaXRtYXBfc2V0X2JpdCAocGFydGl0aW9u LT5kYXRhcmVmcywgaWR4KTsKKwl9CiAgICAgfQogCiAgIHJldHVybiBwYXJ0 aXRpb247CkBAIC0xNDI3LDYzICsxNDQ5LDc0IEBAIHBhcnRpdGlvbl9jb250 YWluc19hbGxfcncgKHN0cnVjdCBncmFwaCAqcmRnLAogCiBzdGF0aWMgaW50 CiBwZ19hZGRfZGVwZW5kZW5jZV9lZGdlcyAoc3RydWN0IGdyYXBoICpyZGcs IGludCBkaXIsCi0JCQkgdmVjPGRhdGFfcmVmZXJlbmNlX3A+IGRyczEsCi0J CQkgdmVjPGRhdGFfcmVmZXJlbmNlX3A+IGRyczIpCisJCQkgYml0bWFwIGRy czEsIGJpdG1hcCBkcnMyKQogewotICBkYXRhX3JlZmVyZW5jZV9wIGRyMSwg ZHIyOworICB1bnNpZ25lZCBpLCBqOworICBiaXRtYXBfaXRlcmF0b3IgYmks IGJqOworICBkYXRhX3JlZmVyZW5jZV9wIGRyMSwgZHIyLCBzYXZlZF9kcjE7 CiAKICAgLyogZGVwZW5kZW5jZSBkaXJlY3Rpb24gLSAwIGlzIG5vIGRlcGVu ZGVuY2UsIC0xIGlzIGJhY2ssCiAgICAgIDEgaXMgZm9ydGgsIDIgaXMgYm90 aCAod2UgY2FuIHN0b3AgdGhlbiwgbWVyZ2luZyB3aWxsIG9jY3VyKS4gICov Ci0gIGZvciAoaW50IGlpID0gMDsgZHJzMS5pdGVyYXRlIChpaSwgJmRyMSk7 ICsraWkpCi0gICAgZm9yIChpbnQgamogPSAwOyBkcnMyLml0ZXJhdGUgKGpq LCAmZHIyKTsgKytqaikKLSAgICAgIHsKLQlkYXRhX3JlZmVyZW5jZV9wIHNh dmVkX2RyMSA9IGRyMTsKLQlpbnQgdGhpc19kaXIgPSAxOwotCWRkcl9wIGRk cjsKLQkvKiBSZS1zaHVmZmxlIGRhdGEtcmVmcyB0byBiZSBpbiBkb21pbmF0 b3Igb3JkZXIuICAqLwotCWlmIChyZGdfdmVydGV4X2Zvcl9zdG10IChyZGcs IERSX1NUTVQgKGRyMSkpCi0JICAgID4gcmRnX3ZlcnRleF9mb3Jfc3RtdCAo cmRnLCBEUl9TVE1UIChkcjIpKSkKLQkgIHsKLQkgICAgc3RkOjpzd2FwIChk cjEsIGRyMik7Ci0JICAgIHRoaXNfZGlyID0gLXRoaXNfZGlyOwotCSAgfQot CWRkciA9IGluaXRpYWxpemVfZGF0YV9kZXBlbmRlbmNlX3JlbGF0aW9uIChk cjEsIGRyMiwgbG9vcF9uZXN0KTsKLQljb21wdXRlX2FmZmluZV9kZXBlbmRl bmNlIChkZHIsIGxvb3BfbmVzdFswXSk7Ci0JaWYgKEREUl9BUkVfREVQRU5E RU5UIChkZHIpID09IGNocmVjX2RvbnRfa25vdykKLQkgIHRoaXNfZGlyID0g MjsKLQllbHNlIGlmIChERFJfQVJFX0RFUEVOREVOVCAoZGRyKSA9PSBOVUxM X1RSRUUpCi0JICB7Ci0JICAgIGlmIChERFJfUkVWRVJTRURfUCAoZGRyKSkK LQkgICAgICB7Ci0JCXN0ZDo6c3dhcCAoZHIxLCBkcjIpOwotCQl0aGlzX2Rp ciA9IC10aGlzX2RpcjsKLQkgICAgICB9Ci0JICAgIC8qIEtub3duIGRlcGVu ZGVuY2VzIGNhbiBzdGlsbCBiZSB1bm9yZGVyZWQgdGhyb3Vnb3V0IHRoZQot CSAgICAgICBpdGVyYXRpb24gc3BhY2UsIHNlZSBnY2MuZGcvdHJlZS1zc2Ev bGRpc3QtMTYuYy4gICovCi0JICAgIGlmIChERFJfTlVNX0RJU1RfVkVDVFMg KGRkcikgIT0gMSkKLQkgICAgICB0aGlzX2RpciA9IDI7Ci0JICAgIC8qIElm IHRoZSBvdmVybGFwIGlzIGV4YWN0IHByZXNlcnZlIHN0bXQgb3JkZXIuICAq LwotCSAgICBlbHNlIGlmIChsYW1iZGFfdmVjdG9yX3plcm9wIChERFJfRElT VF9WRUNUIChkZHIsIDApLCAxKSkKLQkgICAgICA7Ci0JICAgIGVsc2UKLQkg ICAgICB7Ci0JCS8qIEVsc2UgYXMgdGhlIGRpc3RhbmNlIHZlY3RvciBpcyBs ZXhpY29ncmFwaGljIHBvc2l0aXZlCi0JCSAgIHN3YXAgdGhlIGRlcGVuZGVu Y2UgZGlyZWN0aW9uLiAgKi8KLQkJdGhpc19kaXIgPSAtdGhpc19kaXI7Ci0J ICAgICAgfQotCSAgfQotCWVsc2UKLQkgIHRoaXNfZGlyID0gMDsKLQlmcmVl X2RlcGVuZGVuY2VfcmVsYXRpb24gKGRkcik7Ci0JaWYgKHRoaXNfZGlyID09 IDIpCi0JICByZXR1cm4gMjsKLQllbHNlIGlmIChkaXIgPT0gMCkKLQkgIGRp ciA9IHRoaXNfZGlyOwotCWVsc2UgaWYgKHRoaXNfZGlyICE9IDAgJiYgZGly ICE9IHRoaXNfZGlyKQotCSAgcmV0dXJuIDI7Ci0JLyogU2h1ZmZsZSAiYmFj ayIgZHIxLiAgKi8KLQlkcjEgPSBzYXZlZF9kcjE7Ci0gICAgICB9CisgIEVY RUNVVEVfSUZfU0VUX0lOX0JJVE1BUCAoZHJzMSwgMCwgaSwgYmkpCisgICAg eworICAgICAgZHIxID0gZGF0YXJlZnNfdmVjW2ldOworCisgICAgICBFWEVD VVRFX0lGX1NFVF9JTl9CSVRNQVAgKGRyczIsIDAsIGosIGJqKQorCXsKKwkg IGRyMiA9IGRhdGFyZWZzX3ZlY1tqXTsKKworCSAgLyogU2tpcCBhbGwgPHJl YWQsIHJlYWQ+IGRhdGEgZGVwZW5kZW5jZS4gICovCisJICBpZiAoRFJfSVNf UkVBRCAoZHIxKSAmJiBEUl9JU19SRUFEIChkcjIpKQorCSAgICBjb250aW51 ZTsKKworCSAgc2F2ZWRfZHIxID0gZHIxOworCSAgaW50IHRoaXNfZGlyID0g MTsKKwkgIGRkcl9wIGRkcjsKKwkgIC8qIFJlLXNodWZmbGUgZGF0YS1yZWZz IHRvIGJlIGluIGRvbWluYXRvciBvcmRlci4gICovCisJICBpZiAocmRnX3Zl cnRleF9mb3Jfc3RtdCAocmRnLCBEUl9TVE1UIChkcjEpKQorCSAgICAgID4g cmRnX3ZlcnRleF9mb3Jfc3RtdCAocmRnLCBEUl9TVE1UIChkcjIpKSkKKwkg ICAgeworCSAgICAgIHN0ZDo6c3dhcCAoZHIxLCBkcjIpOworCSAgICAgIHRo aXNfZGlyID0gLXRoaXNfZGlyOworCSAgICB9CisJICBkZHIgPSBpbml0aWFs aXplX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbiAoZHIxLCBkcjIsIGxvb3Bf bmVzdCk7CisJICBjb21wdXRlX2FmZmluZV9kZXBlbmRlbmNlIChkZHIsIGxv b3BfbmVzdFswXSk7CisJICBpZiAoRERSX0FSRV9ERVBFTkRFTlQgKGRkcikg PT0gY2hyZWNfZG9udF9rbm93KQorCSAgICB0aGlzX2RpciA9IDI7CisJICBl bHNlIGlmIChERFJfQVJFX0RFUEVOREVOVCAoZGRyKSA9PSBOVUxMX1RSRUUp CisJICAgIHsKKwkgICAgICBpZiAoRERSX1JFVkVSU0VEX1AgKGRkcikpCisJ CXsKKwkJICBzdGQ6OnN3YXAgKGRyMSwgZHIyKTsKKwkJICB0aGlzX2RpciA9 IC10aGlzX2RpcjsKKwkJfQorCSAgICAgIC8qIEtub3duIGRlcGVuZGVuY2Vz IGNhbiBzdGlsbCBiZSB1bm9yZGVyZWQgdGhyb3Vnb3V0IHRoZQorCQkgaXRl cmF0aW9uIHNwYWNlLCBzZWUgZ2NjLmRnL3RyZWUtc3NhL2xkaXN0LTE2LmMu ICAqLworCSAgICAgIGlmIChERFJfTlVNX0RJU1RfVkVDVFMgKGRkcikgIT0g MSkKKwkJdGhpc19kaXIgPSAyOworCSAgICAgIC8qIElmIHRoZSBvdmVybGFw IGlzIGV4YWN0IHByZXNlcnZlIHN0bXQgb3JkZXIuICAqLworCSAgICAgIGVs c2UgaWYgKGxhbWJkYV92ZWN0b3JfemVyb3AgKEREUl9ESVNUX1ZFQ1QgKGRk ciwgMCksIDEpKQorCQk7CisJICAgICAgZWxzZQorCQl7CisJCSAgLyogRWxz ZSBhcyB0aGUgZGlzdGFuY2UgdmVjdG9yIGlzIGxleGljb2dyYXBoaWMgcG9z aXRpdmUKKwkJICAgICBzd2FwIHRoZSBkZXBlbmRlbmNlIGRpcmVjdGlvbi4g ICovCisJCSAgdGhpc19kaXIgPSAtdGhpc19kaXI7CisJCX0KKwkgICAgfQor CSAgZWxzZQorCSAgICB0aGlzX2RpciA9IDA7CisJICBmcmVlX2RlcGVuZGVu Y2VfcmVsYXRpb24gKGRkcik7CisJICBpZiAodGhpc19kaXIgPT0gMikKKwkg ICAgcmV0dXJuIDI7CisJICBlbHNlIGlmIChkaXIgPT0gMCkKKwkgICAgZGly ID0gdGhpc19kaXI7CisJICBlbHNlIGlmICh0aGlzX2RpciAhPSAwICYmIGRp ciAhPSB0aGlzX2RpcikKKwkgICAgcmV0dXJuIDI7CisJICAvKiBTaHVmZmxl ICJiYWNrIiBkcjEuICAqLworCSAgZHIxID0gc2F2ZWRfZHIxOworCX0KKyAg ICB9CiAgIHJldHVybiBkaXI7CiB9CiAKQEAgLTE2NDQsMjggKzE2NzcsMTUg QEAgZGlzdHJpYnV0ZV9sb29wIChzdHJ1Y3QgbG9vcCAqbG9vcCwgdmVjPGdp bXBsZSAqPiBzdG10cywKICAgICAgIHBnID0gbmV3X2dyYXBoIChwYXJ0aXRp b25zLmxlbmd0aCAoKSk7CiAgICAgICBzdHJ1Y3QgcGdkYXRhIHsKIAkgIHN0 cnVjdCBwYXJ0aXRpb24gKnBhcnRpdGlvbjsKLQkgIHZlYzxkYXRhX3JlZmVy ZW5jZV9wPiB3cml0ZXM7Ci0JICB2ZWM8ZGF0YV9yZWZlcmVuY2VfcD4gcmVh ZHM7CiAgICAgICB9OwogI2RlZmluZSBQR0RBVEEoaSkgKChwZ2RhdGEgKiko cGctPnZlcnRpY2VzW2ldLmRhdGEpKQogICAgICAgZm9yIChpID0gMDsgcGFy dGl0aW9ucy5pdGVyYXRlIChpLCAmcGFydGl0aW9uKTsgKytpKQogCXsKIAkg IHZlcnRleCAqdiA9ICZwZy0+dmVydGljZXNbaV07CiAJICBwZ2RhdGEgKmRh dGEgPSBuZXcgcGdkYXRhOwotCSAgZGF0YV9yZWZlcmVuY2VfcCBkcjsKIAkg IC8qIEZJWE1FIC0gbGVha3MuICAqLwogCSAgdi0+ZGF0YSA9IGRhdGE7Ci0J ICBiaXRtYXBfaXRlcmF0b3IgYmk7Ci0JICB1bnNpZ25lZCBqOwogCSAgZGF0 YS0+cGFydGl0aW9uID0gcGFydGl0aW9uOwotCSAgZGF0YS0+cmVhZHMgPSB2 TlVMTDsKLQkgIGRhdGEtPndyaXRlcyA9IHZOVUxMOwotCSAgRVhFQ1VURV9J Rl9TRVRfSU5fQklUTUFQIChwYXJ0aXRpb24tPnN0bXRzLCAwLCBqLCBiaSkK LQkgICAgZm9yIChpbnQgayA9IDA7IFJER19EQVRBUkVGUyAocmRnLCBqKS5p dGVyYXRlIChrLCAmZHIpOyArK2spCi0JICAgICAgaWYgKERSX0lTX1JFQUQg KGRyKSkKLQkJZGF0YS0+cmVhZHMuc2FmZV9wdXNoIChkcik7Ci0JICAgICAg ZWxzZQotCQlkYXRhLT53cml0ZXMuc2FmZV9wdXNoIChkcik7CiAJfQogICAg ICAgc3RydWN0IHBhcnRpdGlvbiAqcGFydGl0aW9uMSwgKnBhcnRpdGlvbjI7 CiAgICAgICBmb3IgKGkgPSAwOyBwYXJ0aXRpb25zLml0ZXJhdGUgKGksICZw YXJ0aXRpb24xKTsgKytpKQpAQCAtMTY3MywxOCArMTY5Myw5IEBAIGRpc3Ry aWJ1dGVfbG9vcCAoc3RydWN0IGxvb3AgKmxvb3AsIHZlYzxnaW1wbGUgKj4g c3RtdHMsCiAJICB7CiAJICAgIC8qIGRlcGVuZGVuY2UgZGlyZWN0aW9uIC0g MCBpcyBubyBkZXBlbmRlbmNlLCAtMSBpcyBiYWNrLAogCSAgICAgICAxIGlz IGZvcnRoLCAyIGlzIGJvdGggKHdlIGNhbiBzdG9wIHRoZW4sIG1lcmdpbmcg d2lsbCBvY2N1cikuICAqLwotCSAgICBpbnQgZGlyID0gMDsKLQkgICAgZGly ID0gcGdfYWRkX2RlcGVuZGVuY2VfZWRnZXMgKHJkZywgZGlyLAotCQkJCQkg ICBQR0RBVEEoaSktPndyaXRlcywKLQkJCQkJICAgUEdEQVRBKGopLT5yZWFk cyk7Ci0JICAgIGlmIChkaXIgIT0gMikKLQkgICAgICBkaXIgPSBwZ19hZGRf ZGVwZW5kZW5jZV9lZGdlcyAocmRnLCBkaXIsCi0JCQkJCSAgICAgUEdEQVRB KGkpLT5yZWFkcywKLQkJCQkJICAgICBQR0RBVEEoaiktPndyaXRlcyk7Ci0J ICAgIGlmIChkaXIgIT0gMikKLQkgICAgICBkaXIgPSBwZ19hZGRfZGVwZW5k ZW5jZV9lZGdlcyAocmRnLCBkaXIsCi0JCQkJCSAgICAgUEdEQVRBKGkpLT53 cml0ZXMsCi0JCQkJCSAgICAgUEdEQVRBKGopLT53cml0ZXMpOworCSAgICBp bnQgZGlyID0gcGdfYWRkX2RlcGVuZGVuY2VfZWRnZXMgKHJkZywgMCwKKwkJ CQkJICAgICAgIHBhcnRpdGlvbjEtPmRhdGFyZWZzLAorCQkJCQkgICAgICAg cGFydGl0aW9uMi0+ZGF0YXJlZnMpOwogCSAgICBpZiAoZGlyID09IDEgfHwg ZGlyID09IDIpCiAJICAgICAgYWRkX2VkZ2UgKHBnLCBpLCBqKTsKIAkgICAg aWYgKGRpciA9PSAtMSB8fCBkaXIgPT0gMikKQEAgLTE3MzAsOCArMTc0MSw2 IEBAIGRpc3RyaWJ1dGVfbG9vcCAoc3RydWN0IGxvb3AgKmxvb3AsIHZlYzxn aW1wbGUgKj4gc3RtdHMsCiAJICBwZ2RhdGEgKmRhdGEgPSBQR0RBVEEgKGkp OwogCSAgaWYgKGRhdGEtPnBhcnRpdGlvbikKIAkgICAgcGFydGl0aW9ucy5z YWZlX3B1c2ggKGRhdGEtPnBhcnRpdGlvbik7Ci0JICBkYXRhLT5yZWFkcy5y ZWxlYXNlICgpOwotCSAgZGF0YS0+d3JpdGVzLnJlbGVhc2UgKCk7CiAJICBk ZWxldGUgZGF0YTsKIAl9CiAgICAgICBnY2NfYXNzZXJ0IChwYXJ0aXRpb25z Lmxlbmd0aCAoKSA9PSAodW5zaWduZWQpbnVtX3NjY3MpOwotLSAKMS45LjEK Cg== --001a113fa1e688d4dc05529e12a4--