From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 29DCD3858C74 for ; Fri, 26 Aug 2022 11:15:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 29DCD3858C74 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.93,265,1654588800"; d="diff'?scan'208,217";a="81862680" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 26 Aug 2022 03:15:32 -0800 IronPort-SDR: lJyGBGKrL+p1zCRsKDxC1Uw5mUh5JHnyaumyUtQ+St8a1F0sFfKYy7RA01p6dYsVpom4QXFuxQ MVt1tBVb/9HpTs2ZhuEC2eD2prnHgk/c0eSu8kD1kNFNg1UePt5w3U06zEbXbDdVPTLgWwZO5V drfo0QWXNp2GfPEwngyYTBgpLaEVxAY3ro3KOuh78xpZ/e5uaFmL+0+p67oWIAvFdff+zOV8Qn UqVWvPfLWcFgD0FTqhFT6Hc0KRYZ2RYDk01ld9VUeJf0x5v/Wdt2mT+UubPvzI24uZvfaet+6o ww4= Content-Type: multipart/mixed; boundary="------------LSlN3b0wZY4FFWQoK0g19A9A" Message-ID: Date: Fri, 26 Aug 2022 13:15:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Content-Language: en-US To: gcc-patches , Jakub Jelinek From: Tobias Burnus Subject: [Patch] libgomp: Add reverse-offload splay tree X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-14.mgc.mentorg.com (139.181.222.14) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Message-ID: <20220826111524.71HVPmjn3U0xUQX_fQHhlxqLQw8GiLYF9Fog3VF9NFg@z> --------------LSlN3b0wZY4FFWQoK0g19A9A Content-Type: multipart/alternative; boundary="------------MaboInclt310sP1Yif02AuDn" --------------MaboInclt310sP1Yif02AuDn Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable For reverse-offload data handling, we need to support: (a) device fn addr -> host fn address (b) finding already mapped host -> device vars via their device address For (a), the functions addrs, we need some extra code (cf. previous patches) as this information does not exist already. For (b), the variables, we have two options: (i) Do a reverse search on the existing data. That's done in oacc-mem.c's lookup_dev and obviously is O(N) as it has to check all nodes. With the assumption "This is not expected to be a common operation." is might be still okay. (ii) Using a second splay tree for the reverse lookup. The attached patch prepares for this =E2=80=93 but does not yet handle all locations and is not yet active. The 'devicep->load_image_func' call depends whether the previous [1/3] patch (cf. below) has been applied or not. (The advantage of the reverse-offload mapping is that 'nowait' is not permitted and 'target {enter,exit,} data device(anchestor:1)' is neither. Thus, all 'omp target device(ancestor:1)' mapping done in target_rev can be undone in the same function - and all others are preexisting.) OK for mainline? Tobias PS: Still to be done (for nvptx, for gcn a bit more is needed): - handle remaining var-mapping cases - gomp_target_rev - mainly: handle all of map/firstprivate. - turn on reverse-offload support (accept omp_requires) + add tons of testcases. Pending reverse-offload patches (libgomp only with abit gcc/config/{gcn,nvp= tx}): [Patch][1/3] libgomp: Prepare for reverse offload fn lookup [Patch][2/3] GCN: libgomp+mkoffload.cc: Prepare for reverse offload fn look= up [Patch][2/3] nvptx: libgomp+mkoffload.cc: Prepare for reverse offload fn lo= okup [1/3] is at: https://gcc.gnu.org/pipermail/gcc-patches/2022-August/600333.h= tml [Patch] libgomp/nvptx: Prepare for reverse-offload callback handling https://gcc.gnu.org/pipermail/gcc-patches/2022-August/600381.html ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------MaboInclt310sP1Yif02AuDn-- --------------LSlN3b0wZY4FFWQoK0g19A9A Content-Type: text/x-patch; charset="UTF-8"; name="libgomp-splay-rev.diff" Content-Disposition: attachment; filename="libgomp-splay-rev.diff" Content-Transfer-Encoding: base64 bGliZ29tcDogQWRkIHJldmVyc2Utb2ZmbG9hZCBzcGxheSB0cmVlCgpBZGRz IGEgc3BsYXkgdHJlZSBmb3IgcmV2ZXJzZSBvZmZsb2FkaW5nOyBlZmZlY3Rp dmVseSwgaXQgaXMgbm90IHlldApmaWxsZWQgYXMgcmV2ZXJzZSBvZmZsb2Fk IGlzIG5vdCBlbmFibGVkIGZvciBhbnkgZGV2aWNlIHR5cGUuIEl0IGFsc28K ZG9lcyBub3QgeWV0IHRyYWNrIHZhcmlhYmxlcyBsYXRlciBtYXBwZWQgKGFu ZCB0aGVuIHVubWFwcGVkKS4gVGhvc2UKd2lsbCBiZSBhZGRlZCBpbiBmb2xs b3ctdXAgY29tbWl0cy4KCmxpYmdvbXAvQ2hhbmdlTG9nOgoKCSogbGliZ29t cC5oOiBJbmNsdWRlIHNwbGF5LXRyZWUuaCB3aXRoIHNwbGF5X3RyZWVfcHJl Zml4IHNldCB0bwoJJ3JldmVyc2UnLgoJKHN0cnVjdCB0YXJnZXRfbWVtX2Rl c2MpOiBEZWNsYXJlIGF0IG9sZCBsaW5lOyBtb3ZlCglkZWZpbml0aW9uIGRv d24gYW5kIGFkZCAncmV2ZXJzZV9zcGxheV90cmVlX25vZGUgcmV2X2FycmF5 JyBtZW1iZXIuCgkoc3RydWN0IHJldmVyc2Vfc3BsYXlfdHJlZV9rZXlfcywg cmV2ZXJzZV9zcGxheV9jb21wYXJlKTogTmV3LgoJKHJldmVyc2Vfc3BsYXlf dHJlZV9ub2RlLCByZXZlcnNlX3NwbGF5X3RyZWUsIHJldmVyc2Vfc3BsYXlf dHJlZV9rZXkpOgoJTmV3IHR5cGVkZWYuCgkoc3RydWN0IGdvbXBfZGV2aWNl X2Rlc2NyKTogQWRkICdyZXZlcnNlX3NwbGF5X3RyZWVfcyBtZW1fbWFwX3Jl dicuCgkqIG9hY2MtaG9zdC5jIChob3N0X2Rpc3BhdGNoKTogTlVMTCBpbml0 IG1lbV9tYXBfcmV2LgoJKiB0YXJnZXQuYzogSW5jbHVkZSBzcGxheS10cmVl Lmggd2l0aCBzcGxheV90cmVlX2Mgc2V0IGFuZAoJc3BsYXlfdHJlZV9wcmVm aXggc2V0IHRvICdyZXZlcnNlJy4KCShnb21wX21hcF9sb29rdXBfcmV2KTog TmV3IGZ1bmN0aW9uIChmb3Igbm93IGluc2lkZSAnI2lmIDAnKS4KCShnb21w X3VubWFwX3RndCk6IEZyZWUgYXJyYXlfcmV2LgoJKGdvbXBfbG9hZF9pbWFn ZV90b19kZXZpY2UpOiBGaWxsIHJldmVyc2Utb2ZmbG9hZCBzcGxheSB0cmVl IHdpdGgKCWZ1bmN0IGFuZCB2YXIgYWRkcmVzcy4KCShnb21wX3VubG9hZF9p bWFnZV9mcm9tX2RldmljZSk6IEVtcHR5IHJldmVyc2Utb2ZmbG9hZCBzcGxh eSB0cmVlLgoJKGdvbXBfdGFyZ2V0X2luaXQpOiBJbml0IG1lbV9tYXBfcmV2 LgoKIGxpYmdvbXAvbGliZ29tcC5oICAgfCA4MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogbGliZ29t cC9vYWNjLWhvc3QuYyB8ICAxICsKIGxpYmdvbXAvdGFyZ2V0LmMgICAgfCA3 OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCAy NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXAu aCBiL2xpYmdvbXAvbGliZ29tcC5oCmluZGV4IGMyNDNjNGQ2Y2Y0Li4xMDUx OGE4MzQ4YiAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLmgKKysrIGIv bGliZ29tcC9saWJnb21wLmgKQEAgLTEwMzgsMjkgKzEwMzgsNyBAQCBzdHJ1 Y3QgdGFyZ2V0X3Zhcl9kZXNjIHsKICAgdWludHB0cl90IGxlbmd0aDsKIH07 CiAKLXN0cnVjdCB0YXJnZXRfbWVtX2Rlc2MgewotICAvKiBSZWZlcmVuY2Ug Y291bnQuICAqLwotICB1aW50cHRyX3QgcmVmY291bnQ7Ci0gIC8qIEFsbCB0 aGUgc3BsYXkgbm9kZXMgYWxsb2NhdGVkIHRvZ2V0aGVyLiAgKi8KLSAgc3Bs YXlfdHJlZV9ub2RlIGFycmF5OwotICAvKiBTdGFydCBvZiB0aGUgdGFyZ2V0 IHJlZ2lvbi4gICovCi0gIHVpbnRwdHJfdCB0Z3Rfc3RhcnQ7Ci0gIC8qIEVu ZCBvZiB0aGUgdGFyZ2VyIHJlZ2lvbi4gICovCi0gIHVpbnRwdHJfdCB0Z3Rf ZW5kOwotICAvKiBIYW5kbGUgdG8gZnJlZS4gICovCi0gIHZvaWQgKnRvX2Zy ZWU7Ci0gIC8qIFByZXZpb3VzIHRhcmdldF9tZW1fZGVzYy4gICovCi0gIHN0 cnVjdCB0YXJnZXRfbWVtX2Rlc2MgKnByZXY7Ci0gIC8qIE51bWJlciBvZiBp dGVtcyBpbiBmb2xsb3dpbmcgbGlzdC4gICovCi0gIHNpemVfdCBsaXN0X2Nv dW50OwotCi0gIC8qIENvcnJlc3BvbmRpbmcgdGFyZ2V0IGRldmljZSBkZXNj cmlwdG9yLiAgKi8KLSAgc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZp Y2VfZGVzY3I7Ci0KLSAgLyogTGlzdCBvZiB0YXJnZXQgaXRlbXMgdG8gcmVt b3ZlIChvciBkZWNyZWFzZSByZWZjb3VudCkKLSAgICAgYXQgdGhlIGVuZCBv ZiByZWdpb24uICAqLwotICBzdHJ1Y3QgdGFyZ2V0X3Zhcl9kZXNjIGxpc3Rb XTsKLX07CitzdHJ1Y3QgdGFyZ2V0X21lbV9kZXNjOwogCiAvKiBTcGVjaWFs IHZhbHVlIGZvciByZWZjb3VudCAtIG1hc2sgdG8gaW5kaWNhdGUgZXhpc3Rl bmNlIG9mIHNwZWNpYWwKICAgIHZhbHVlcy4gUmlnaHQgbm93IHdlIGFsbG9j YXRlIDMgYml0cy4gICovCkBAIC0xMTU0LDYgKzExMzIsNjQgQEAgc3BsYXlf Y29tcGFyZSAoc3BsYXlfdHJlZV9rZXkgeCwgc3BsYXlfdHJlZV9rZXkgeSkK IAogI2luY2x1ZGUgInNwbGF5LXRyZWUuaCIKIAorLyogUmV2ZXJzZSBvZmZs b2FkIHNwbGF5LXRyZWUgaGFuZGxpbmcuICovCisKK3N0cnVjdCByZXZlcnNl X3NwbGF5X3RyZWVfa2V5X3MgeworICAvKiBBZGRyZXNzIG9mIHRoZSBkZXZp Y2Ugb2JqZWN0LiAgKi8KKyAgdWludHB0cl90IGRldl9zdGFydDsKKyAgLyog QWRkcmVzcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgZGV2aWNlIG9iamVjdC4g ICovCisgIHVpbnRwdHJfdCBkZXZfZW5kOworCisgIHNwbGF5X3RyZWVfa2V5 IGs7Cit9OworCit0eXBlZGVmIHN0cnVjdCByZXZlcnNlX3NwbGF5X3RyZWVf bm9kZV9zICpyZXZlcnNlX3NwbGF5X3RyZWVfbm9kZTsKK3R5cGVkZWYgc3Ry dWN0IHJldmVyc2Vfc3BsYXlfdHJlZV9zICpyZXZlcnNlX3NwbGF5X3RyZWU7 Cit0eXBlZGVmIHN0cnVjdCByZXZlcnNlX3NwbGF5X3RyZWVfa2V5X3MgKnJl dmVyc2Vfc3BsYXlfdHJlZV9rZXk7CisKK3N0YXRpYyBpbmxpbmUgaW50City ZXZlcnNlX3NwbGF5X2NvbXBhcmUgKHJldmVyc2Vfc3BsYXlfdHJlZV9rZXkg eCwgcmV2ZXJzZV9zcGxheV90cmVlX2tleSB5KQoreworICBpZiAoeC0+ZGV2 X3N0YXJ0ID09IHgtPmRldl9lbmQKKyAgICAgICYmIHktPmRldl9zdGFydCA9 PSB5LT5kZXZfZW5kKQorICAgIHJldHVybiAwOworICBpZiAoeC0+ZGV2X2Vu ZCA8PSB5LT5kZXZfc3RhcnQpCisgICAgcmV0dXJuIC0xOworICBpZiAoeC0+ ZGV2X3N0YXJ0ID49IHktPmRldl9lbmQpCisgICAgcmV0dXJuIDE7CisgIHJl dHVybiAwOworfQorCisjZGVmaW5lIHNwbGF5X3RyZWVfcHJlZml4IHJldmVy c2UKKyNpbmNsdWRlICJzcGxheS10cmVlLmgiCisKK3N0cnVjdCB0YXJnZXRf bWVtX2Rlc2MgeworICAvKiBSZWZlcmVuY2UgY291bnQuICAqLworICB1aW50 cHRyX3QgcmVmY291bnQ7CisgIC8qIEFsbCB0aGUgc3BsYXkgbm9kZXMgYWxs b2NhdGVkIHRvZ2V0aGVyLiAgKi8KKyAgc3BsYXlfdHJlZV9ub2RlIGFycmF5 OworICAvKiBMaWtldmVyc2UgZm9yIHRoZSByZXZlcnNlIGxvb2t1cCBkZXZp Y2UtPmhvc3QgZm9yIHJldmVyc2Ugb2ZmbG9hZC4gKi8KKyAgcmV2ZXJzZV9z cGxheV90cmVlX25vZGUgcmV2X2FycmF5OworICAvKiBTdGFydCBvZiB0aGUg dGFyZ2V0IHJlZ2lvbi4gICovCisgIHVpbnRwdHJfdCB0Z3Rfc3RhcnQ7Cisg IC8qIEVuZCBvZiB0aGUgdGFyZ2VyIHJlZ2lvbi4gICovCisgIHVpbnRwdHJf dCB0Z3RfZW5kOworICAvKiBIYW5kbGUgdG8gZnJlZS4gICovCisgIHZvaWQg KnRvX2ZyZWU7CisgIC8qIFByZXZpb3VzIHRhcmdldF9tZW1fZGVzYy4gICov CisgIHN0cnVjdCB0YXJnZXRfbWVtX2Rlc2MgKnByZXY7CisgIC8qIE51bWJl ciBvZiBpdGVtcyBpbiBmb2xsb3dpbmcgbGlzdC4gICovCisgIHNpemVfdCBs aXN0X2NvdW50OworCisgIC8qIENvcnJlc3BvbmRpbmcgdGFyZ2V0IGRldmlj ZSBkZXNjcmlwdG9yLiAgKi8KKyAgc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2Ny ICpkZXZpY2VfZGVzY3I7CisKKyAgLyogTGlzdCBvZiB0YXJnZXQgaXRlbXMg dG8gcmVtb3ZlIChvciBkZWNyZWFzZSByZWZjb3VudCkKKyAgICAgYXQgdGhl IGVuZCBvZiByZWdpb24uICAqLworICBzdHJ1Y3QgdGFyZ2V0X3Zhcl9kZXNj IGxpc3RbXTsKK307CisKKwogdHlwZWRlZiBzdHJ1Y3QgYWNjX2Rpc3BhdGNo X3QKIHsKICAgLyogRXhlY3V0ZS4gICovCkBAIC0xMjQ4LDYgKzEyODQsNyBA QCBzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IKIAogICAvKiBTcGxheSB0cmVl IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgbWFwcGVkIG1lbW9yeSBy ZWdpb25zLiAgKi8KICAgc3RydWN0IHNwbGF5X3RyZWVfcyBtZW1fbWFwOwor ICBzdHJ1Y3QgcmV2ZXJzZV9zcGxheV90cmVlX3MgbWVtX21hcF9yZXY7CiAK ICAgLyogTXV0ZXggZm9yIHRoZSBtdXRhYmxlIGRhdGEuICAqLwogICBnb21w X211dGV4X3QgbG9jazsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvb2FjYy1ob3N0 LmMgYi9saWJnb21wL29hY2MtaG9zdC5jCmluZGV4IGViMTFiOWNmMTZhLi44 OWExNWE0ZDgwZiAxMDA2NDQKLS0tIGEvbGliZ29tcC9vYWNjLWhvc3QuYwor KysgYi9saWJnb21wL29hY2MtaG9zdC5jCkBAIC0yODMsNiArMjgzLDcgQEAg c3RhdGljIHN0cnVjdCBnb21wX2RldmljZV9kZXNjciBob3N0X2Rpc3BhdGNo ID0KICAgICAucnVuX2Z1bmMgPSBob3N0X3J1biwKIAogICAgIC5tZW1fbWFw ID0geyBOVUxMIH0sCisgICAgLm1lbV9tYXBfcmV2ID0geyBOVUxMIH0sCiAg ICAgLyogLmxvY2sgaW5pdGlhbGl6ZWQgaW4gZ29hY2NfaG9zdF9pbml0LiAg Ki8KICAgICAuc3RhdGUgPSBHT01QX0RFVklDRV9VTklOSVRJQUxJWkVELAog CmRpZmYgLS1naXQgYS9saWJnb21wL3RhcmdldC5jIGIvbGliZ29tcC90YXJn ZXQuYwppbmRleCAxMzVkYjFkODhhYi4uYjIyNjc4ZjY4N2YgMTAwNjQ0Ci0t LSBhL2xpYmdvbXAvdGFyZ2V0LmMKKysrIGIvbGliZ29tcC90YXJnZXQuYwpA QCAtNDUsNiArNDUsMTEgQEAKICNpbmNsdWRlICJwbHVnaW4tc3VmZml4Lmgi CiAjZW5kaWYKIAorLyogRGVmaW5lIGFub3RoZXIgc3BsYXkgdHJlZSBpbnN0 YW50aWF0aW9uIC0gZm9yIHJldmVyc2Ugb2ZmbG9hZC4gICovCisjZGVmaW5l IHNwbGF5X3RyZWVfcHJlZml4IHJldmVyc2UKKyNkZWZpbmUgc3BsYXlfdHJl ZV9jCisjaW5jbHVkZSAic3BsYXktdHJlZS5oIgorCiB0eXBlZGVmIHVpbnRw dHJfdCAqaGFzaF9lbnRyeV90eXBlOwogc3RhdGljIGlubGluZSB2b2lkICog aHRhYl9hbGxvYyAoc2l6ZV90IHNpemUpIHsgcmV0dXJuIGdvbXBfbWFsbG9j IChzaXplKTsgfQogc3RhdGljIGlubGluZSB2b2lkIGh0YWJfZnJlZSAodm9p ZCAqcHRyKSB7IGZyZWUgKHB0cik7IH0KQEAgLTIwMCw2ICsyMDUsMjcgQEAg Z29tcF9tYXBfbG9va3VwIChzcGxheV90cmVlIG1lbV9tYXAsIHNwbGF5X3Ry ZWVfa2V5IGtleSkKICAgcmV0dXJuIHNwbGF5X3RyZWVfbG9va3VwIChtZW1f bWFwLCBrZXkpOwogfQogCisjaWYgMAorc3RhdGljIGlubGluZSByZXZlcnNl X3NwbGF5X3RyZWVfa2V5Citnb21wX21hcF9sb29rdXBfcmV2IChyZXZlcnNl X3NwbGF5X3RyZWUgbWVtX21hcF9yZXYsIHJldmVyc2Vfc3BsYXlfdHJlZV9r ZXkga2V5KQoreworICBpZiAoa2V5LT5kZXZfc3RhcnQgIT0ga2V5LT5kZXZf ZW5kKQorICAgIHJldHVybiByZXZlcnNlX3NwbGF5X3RyZWVfbG9va3VwICht ZW1fbWFwX3Jldiwga2V5KTsKKworICBrZXktPmRldl9lbmQrKzsKKyAgcmV2 ZXJzZV9zcGxheV90cmVlX2tleSBuID0gcmV2ZXJzZV9zcGxheV90cmVlX2xv b2t1cCAobWVtX21hcF9yZXYsIGtleSk7CisgIGtleS0+ZGV2X2VuZC0tOwor ICBpZiAobikKKyAgICByZXR1cm4gbjsKKyAga2V5LT5kZXZfc3RhcnQtLTsK KyAgbiA9IHJldmVyc2Vfc3BsYXlfdHJlZV9sb29rdXAgKG1lbV9tYXBfcmV2 LCBrZXkpOworICBrZXktPmRldl9zdGFydCsrOworICBpZiAobikKKyAgICBy ZXR1cm4gbjsKKyAgcmV0dXJuIHJldmVyc2Vfc3BsYXlfdHJlZV9sb29rdXAg KG1lbV9tYXBfcmV2LCBrZXkpOworfQorI2VuZGlmCisKIHN0YXRpYyBpbmxp bmUgc3BsYXlfdHJlZV9rZXkKIGdvbXBfbWFwXzBsZW5fbG9va3VwIChzcGxh eV90cmVlIG1lbV9tYXAsIHNwbGF5X3RyZWVfa2V5IGtleSkKIHsKQEAgLTE4 MTEsNiArMTgzNyw3IEBAIGdvbXBfdW5tYXBfdGd0IChzdHJ1Y3QgdGFyZ2V0 X21lbV9kZXNjICp0Z3QpCiAgIGlmICh0Z3QtPnRndF9lbmQpCiAgICAgZ29t cF9mcmVlX2RldmljZV9tZW1vcnkgKHRndC0+ZGV2aWNlX2Rlc2NyLCB0Z3Qt PnRvX2ZyZWUpOwogCisgIGZyZWUgKHRndC0+cmV2X2FycmF5KTsKICAgZnJl ZSAodGd0LT5hcnJheSk7CiAgIGZyZWUgKHRndCk7CiB9CkBAIC0yMTMzLDEx ICsyMTYwLDE2IEBAIGdvbXBfbG9hZF9pbWFnZV90b19kZXZpY2UgKHN0cnVj dCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwgdW5zaWduZWQgdmVyc2lv biwKIAogICAvKiBMb2FkIGltYWdlIHRvIGRldmljZSBhbmQgZ2V0IHRhcmdl dCBhZGRyZXNzZXMgZm9yIHRoZSBpbWFnZS4gICovCiAgIHN0cnVjdCBhZGRy X3BhaXIgKnRhcmdldF90YWJsZSA9IE5VTEw7CisgIHVpbnQ2NF90ICpyZXZf dGFyZ2V0X2ZuX3RhYmxlID0gTlVMTDsKICAgaW50IGksIG51bV90YXJnZXRf ZW50cmllczsKIAorICAvKiBXaXRoIHJldmVyc2Ugb2ZmbG9hZCwgaW5zZXJ0 IGFsc28gdGFyZ2V0LWhvc3QgYWRkcmVzc2VzLiAqLworICBib29sIHJldl9s b29rdXAgPSBvbXBfcmVxdWlyZXNfbWFzayAmIEdPTVBfUkVRVUlSRVNfUkVW RVJTRV9PRkZMT0FEOworCiAgIG51bV90YXJnZXRfZW50cmllcwogICAgID0g ZGV2aWNlcC0+bG9hZF9pbWFnZV9mdW5jIChkZXZpY2VwLT50YXJnZXRfaWQs IHZlcnNpb24sCi0JCQkJdGFyZ2V0X2RhdGEsICZ0YXJnZXRfdGFibGUpOwor CQkJCXRhcmdldF9kYXRhLCAmdGFyZ2V0X3RhYmxlIC8qICwKKwkJCQlyZXZf bG9va3VwID8gJnJldl90YXJnZXRfZm5fdGFibGUgOiBOVUxMICovKTsKIAog ICBpZiAobnVtX3RhcmdldF9lbnRyaWVzICE9IG51bV9mdW5jcyArIG51bV92 YXJzCiAgICAgICAvKiBPdGhlcnMgKGRldmljZV9udW0pIGFyZSBpbmNsdWRl ZCBhcyB0cmFpbGluZyBlbnRyaWVzIGluIHBhaXIgbGlzdC4gICovCkBAIC0y MTU0LDYgKzIxODYsMTUgQEAgZ29tcF9sb2FkX2ltYWdlX3RvX2RldmljZSAo c3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLCB1bnNpZ25lZCB2 ZXJzaW9uLAogICAvKiBJbnNlcnQgaG9zdC10YXJnZXQgYWRkcmVzcyBtYXBw aW5nIGludG8gc3BsYXkgdHJlZS4gICovCiAgIHN0cnVjdCB0YXJnZXRfbWVt X2Rlc2MgKnRndCA9IGdvbXBfbWFsbG9jIChzaXplb2YgKCp0Z3QpKTsKICAg dGd0LT5hcnJheSA9IGdvbXBfbWFsbG9jICgobnVtX2Z1bmNzICsgbnVtX3Zh cnMpICogc2l6ZW9mICgqdGd0LT5hcnJheSkpOworICBpZiAocmV2X2xvb2t1 cCkKKyAgICB7CisgICAgICBzaXplX3QgbiA9IG51bV92YXJzOworICAgICAg aWYgKHJldl90YXJnZXRfZm5fdGFibGUpCisJbiArPSBudW1fZnVuY3M7Cisg ICAgICB0Z3QtPnJldl9hcnJheSA9IGdvbXBfbWFsbG9jIChuICogc2l6ZW9m ICgqdGd0LT5yZXZfYXJyYXkpKTsKKyAgICB9CisgIGVsc2UKKyAgICB0Z3Qt PnJldl9hcnJheSA9IE5VTEw7CiAgIHRndC0+cmVmY291bnQgPSBSRUZDT1VO VF9JTkZJTklUWTsKICAgdGd0LT50Z3Rfc3RhcnQgPSAwOwogICB0Z3QtPnRn dF9lbmQgPSAwOwpAQCAtMjE2Miw2ICsyMjAzLDcgQEAgZ29tcF9sb2FkX2lt YWdlX3RvX2RldmljZSAoc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZp Y2VwLCB1bnNpZ25lZCB2ZXJzaW9uLAogICB0Z3QtPmxpc3RfY291bnQgPSAw OwogICB0Z3QtPmRldmljZV9kZXNjciA9IGRldmljZXA7CiAgIHNwbGF5X3Ry ZWVfbm9kZSBhcnJheSA9IHRndC0+YXJyYXk7CisgIHJldmVyc2Vfc3BsYXlf dHJlZV9ub2RlIHJldl9hcnJheSA9IHRndC0+cmV2X2FycmF5OwogCiAgIGZv ciAoaSA9IDA7IGkgPCBudW1fZnVuY3M7IGkrKykKICAgICB7CkBAIC0yMTc2 LDYgKzIyMTgsMTggQEAgZ29tcF9sb2FkX2ltYWdlX3RvX2RldmljZSAoc3Ry dWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLCB1bnNpZ25lZCB2ZXJz aW9uLAogICAgICAgYXJyYXktPmxlZnQgPSBOVUxMOwogICAgICAgYXJyYXkt PnJpZ2h0ID0gTlVMTDsKICAgICAgIHNwbGF5X3RyZWVfaW5zZXJ0ICgmZGV2 aWNlcC0+bWVtX21hcCwgYXJyYXkpOworICAgICAgaWYgKHJldl90YXJnZXRf Zm5fdGFibGUpCisJeworCSAgcmV2ZXJzZV9zcGxheV90cmVlX2tleSBrMiA9 ICZyZXZfYXJyYXktPmtleTsKKwkgIGsyLT5kZXZfc3RhcnQgPSByZXZfdGFy Z2V0X2ZuX3RhYmxlW2ldOworCSAgazItPmRldl9lbmQgPSByZXZfdGFyZ2V0 X2ZuX3RhYmxlW2ldICsgMTsKKwkgIGsyLT5rID0gazsKKwkgIHJldl9hcnJh eS0+bGVmdCA9IE5VTEw7CisJICByZXZfYXJyYXktPnJpZ2h0ID0gTlVMTDsK KwkgIGlmIChrMi0+ZGV2X3N0YXJ0ICE9IDApCisJICAgIHJldmVyc2Vfc3Bs YXlfdHJlZV9pbnNlcnQgKCZkZXZpY2VwLT5tZW1fbWFwX3JldiwgcmV2X2Fy cmF5KTsKKwkgIHJldl9hcnJheSsrOworCX0KICAgICAgIGFycmF5Kys7CiAg ICAgfQogCkBAIC0yMjEwLDYgKzIyNjQsMTcgQEAgZ29tcF9sb2FkX2ltYWdl X3RvX2RldmljZSAoc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2Vw LCB1bnNpZ25lZCB2ZXJzaW9uLAogICAgICAgYXJyYXktPmxlZnQgPSBOVUxM OwogICAgICAgYXJyYXktPnJpZ2h0ID0gTlVMTDsKICAgICAgIHNwbGF5X3Ry ZWVfaW5zZXJ0ICgmZGV2aWNlcC0+bWVtX21hcCwgYXJyYXkpOworICAgICAg aWYgKHJldl9sb29rdXApCisJeworCSAgcmV2ZXJzZV9zcGxheV90cmVlX2tl eSBrMiA9ICZyZXZfYXJyYXktPmtleTsKKwkgIGsyLT5kZXZfc3RhcnQgPSB0 YXJnZXRfdGFibGVbbnVtX2Z1bmNzICsgaV0uc3RhcnQ7CisJICBrMi0+ZGV2 X2VuZCA9IGsyLT5kZXZfc3RhcnQgKyBrLT5ob3N0X2VuZCAtIGstPmhvc3Rf c3RhcnQ7CisJICBrMi0+ayA9IGs7CisJICByZXZfYXJyYXktPmxlZnQgPSBO VUxMOworCSAgcmV2X2FycmF5LT5yaWdodCA9IE5VTEw7CisJICByZXZlcnNl X3NwbGF5X3RyZWVfaW5zZXJ0ICgmZGV2aWNlcC0+bWVtX21hcF9yZXYsIHJl dl9hcnJheSk7CisJICByZXZfYXJyYXkrKzsKKwl9CiAgICAgICBhcnJheSsr OwogICAgIH0KIApAQCAtMjI0MiwxMSArMjMwNywxNiBAQCBnb21wX2xvYWRf aW1hZ2VfdG9fZGV2aWNlIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRl dmljZXAsIHVuc2lnbmVkIHZlcnNpb24sCiAJfQogICAgIH0KIAorICBpZiAo cmV2X3RhcmdldF9mbl90YWJsZSkKKyAgICBmcmVlIChyZXZfdGFyZ2V0X2Zu X3RhYmxlKTsKICAgZnJlZSAodGFyZ2V0X3RhYmxlKTsKIH0KIAogLyogVW5s b2FkIHRoZSBtYXBwaW5ncyBkZXNjcmliZWQgYnkgdGFyZ2V0X2RhdGEgZnJv bSBkZXZpY2UgREVWSUNFX1AuCi0gICBUaGUgZGV2aWNlIG11c3QgYmUgbG9j a2VkLiAgICovCisgICBUaGUgZGV2aWNlIG11c3QgYmUgbG9ja2VkLgorICAg Tm90ZTogRm9yIHJldmVyc2Ugb2ZmbG9hZCwgdGhlIGNvZGUgYXNzdW1lcyB0 aGF0IHRoZSBzcGxheSB0cmVlIGlzCisgICBubyBsb25nZXIgbmVlZGVkIGFu ZCBhbGwgaW1hZ2VzIGZvciB0aGlzIGRldmljZSBhcmUgZGVsZXRlZC4KKyAg IChUaGlzIGlzIHRoZSBjYXNlIGZvciBhbGwgY3VycmVudCBjYWxsZXJzLikg Ki8KIAogc3RhdGljIHZvaWQKIGdvbXBfdW5sb2FkX2ltYWdlX2Zyb21fZGV2 aWNlIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsCkBAIC0y MjY2LDYgKzIzMzYsOSBAQCBnb21wX3VubG9hZF9pbWFnZV9mcm9tX2Rldmlj ZSAoc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLAogICBzdHJ1 Y3Qgc3BsYXlfdHJlZV9rZXlfcyBrOwogICBzcGxheV90cmVlX2tleSBub2Rl ID0gTlVMTDsKIAorICAvKiBSZW1vdmUgc3BsYXkgdHJlZSBhY2Nlc3M7IHRo ZSBtZW1vcnkgaXMgZnJlZWQgaW4gZ29tcF91bm1hcF90Z3QuICAqLworICBk ZXZpY2VwLT5tZW1fbWFwX3Jldi5yb290ID0gTlVMTDsKKwogICAvKiBGaW5k IG1hcHBpbmcgYXQgc3RhcnQgb2Ygbm9kZSBhcnJheSAqLwogICBpZiAobnVt X2Z1bmNzIHx8IG51bV92YXJzKQogICAgIHsKQEAgLTQyMzMsNiArNDMwNiw3 IEBAIGdvbXBfdGFyZ2V0X2luaXQgKHZvaWQpCiAJCS8qIGN1cnJlbnRfZGV2 aWNlLmNhcGFiaWxpdGllcyBoYXMgYWxyZWFkeSBiZWVuIHNldC4gICovCiAJ CWN1cnJlbnRfZGV2aWNlLnR5cGUgPSBjdXJyZW50X2RldmljZS5nZXRfdHlw ZV9mdW5jICgpOwogCQljdXJyZW50X2RldmljZS5tZW1fbWFwLnJvb3QgPSBO VUxMOworCQljdXJyZW50X2RldmljZS5tZW1fbWFwX3Jldi5yb290ID0gTlVM TDsKIAkJY3VycmVudF9kZXZpY2Uuc3RhdGUgPSBHT01QX0RFVklDRV9VTklO SVRJQUxJWkVEOwogCQlmb3IgKGkgPSAwOyBpIDwgbmV3X251bV9kZXZzOyBp KyspCiAJCSAgewo= --------------LSlN3b0wZY4FFWQoK0g19A9A--