From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3ABD3C433DB for ; Wed, 10 Feb 2021 09:54:51 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8369A64E3B for ; Wed, 10 Feb 2021 09:54:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8369A64E3B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:43164 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l9mCv-00044E-Kl for qemu-devel@archiver.kernel.org; Wed, 10 Feb 2021 04:54:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56540) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l9loq-0005kU-Oq for qemu-devel@nongnu.org; Wed, 10 Feb 2021 04:29:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:43070) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l9lon-0007Ea-PW for qemu-devel@nongnu.org; Wed, 10 Feb 2021 04:29:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612949393; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7k/dKtz/OEpJiO3WpC3cmpkCuNXjp50vET86Pm4vjmA=; b=WJUax/igSC0V2PyR2i1SWqDPxQBZ1bGO/+C4CYppbsgP8daXyv+U/+oDRlgGDeNmfsR/n+ uassZCR3yXOlHoELPR8wB4F0AwjXpL7OWS00WKWbeuNm9bcamR+ydkQ9Sgq4W9gGnMUO7+ Miu4qKrgU3dWFduoB86aMTtvJAnPIEA= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-602-dLXEZA8ANwO9EtlMwmvaPw-1; Wed, 10 Feb 2021 04:29:50 -0500 X-MC-Unique: dLXEZA8ANwO9EtlMwmvaPw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DAEA71934100; Wed, 10 Feb 2021 09:29:48 +0000 (UTC) Received: from localhost (ovpn-115-120.ams2.redhat.com [10.36.115.120]) by smtp.corp.redhat.com (Postfix) with ESMTP id C32F319C59; Wed, 10 Feb 2021 09:29:35 +0000 (UTC) From: Stefan Hajnoczi To: Peter Maydell , qemu-devel@nongnu.org Subject: [PULL v4 17/27] multi-process: Associate fd of a PCIDevice with its object Date: Wed, 10 Feb 2021 09:26:18 +0000 Message-Id: <20210210092628.193785-18-stefanha@redhat.com> In-Reply-To: <20210210092628.193785-1-stefanha@redhat.com> References: <20210210092628.193785-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=63.128.21.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.57, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , John G Johnson , thuth@redhat.com, Jagannathan Raman , Eduardo Habkost , qemu-block@nongnu.org, "Michael S. Tsirkin" , "Denis V. Lunev" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefan Hajnoczi , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Wainer dos Santos Moschetta , Elena Ufimtseva , Igor Mammedov , Paolo Bonzini , =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogSmFnYW5uYXRoYW4gUmFtYW4gPGphZy5yYW1hbkBvcmFjbGUuY29tPgoKQXNzb2NpYXRl IHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIGEgUENJRGV2aWNlIGluIHJlbW90ZSBwcm9jZXNzIHdp dGgKRGV2aWNlU3RhdGUgb2JqZWN0LgoKU2lnbmVkLW9mZi1ieTogRWxlbmEgVWZpbXRzZXZhIDxl bGVuYS51ZmltdHNldmFAb3JhY2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogSm9obiBHIEpvaG5zb24g PGpvaG4uZy5qb2huc29uQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEphZ2FubmF0aGFuIFJh bWFuIDxqYWcucmFtYW5Ab3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IFN0ZWZhbiBIYWpub2N6aSA8 c3RlZmFuaGFAcmVkaGF0LmNvbT4KTWVzc2FnZS1pZDogZjQwNWEyZWQ1ZDc1MThiODdiZWE3YzU5 Y2ZkZjMzNGQ2N2U1ZWU1MS4xNjExOTM4MzE5LmdpdC5qYWcucmFtYW5Ab3JhY2xlLmNvbQpTaWdu ZWQtb2ZmLWJ5OiBTdGVmYW4gSGFqbm9jemkgPHN0ZWZhbmhhQHJlZGhhdC5jb20+Ci0tLQogTUFJ TlRBSU5FUlMgICAgICAgICAgICB8ICAgMSArCiBody9yZW1vdGUvcmVtb3RlLW9iai5jIHwgMjAz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBody9yZW1vdGUvbWVz b24uYnVpbGQgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBody9yZW1vdGUvcmVtb3RlLW9iai5jCgpkaWZmIC0tZ2l0IGEvTUFJ TlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA4ZDI2OTM1MjVjLi5iY2JiNWExMDBjIDEwMDY0 NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMzIxNCw2ICszMjE0LDcg QEAgRjogaW5jbHVkZS9ody9yZW1vdGUvbWFjaGluZS5oCiBGOiBody9yZW1vdGUvbXBxZW11LWxp bmsuYwogRjogaW5jbHVkZS9ody9yZW1vdGUvbXBxZW11LWxpbmsuaAogRjogaHcvcmVtb3RlL21l c3NhZ2UuYworRjogaHcvcmVtb3RlL3JlbW90ZS1vYmouYwogCiBCdWlsZCBhbmQgdGVzdCBhdXRv bWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9ody9yZW1vdGUv cmVtb3RlLW9iai5jIGIvaHcvcmVtb3RlL3JlbW90ZS1vYmouYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi40ZjIxMjU0MjE5Ci0tLSAvZGV2L251bGwKKysrIGIvaHcvcmVt b3RlL3JlbW90ZS1vYmouYwpAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAy MDIwLCAyMDIxIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuCisgKgorICogVGhpcyB3b3Jr IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTC12MiwgdmVyc2lvbiAy IG9yIGxhdGVyLgorICoKKyAqIFNlZSB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwg ZGlyZWN0b3J5LgorICoKKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUg InFlbXUtY29tbW9uLmgiCisKKyNpbmNsdWRlICJxZW11L2Vycm9yLXJlcG9ydC5oIgorI2luY2x1 ZGUgInFlbXUvbm90aWZ5LmgiCisjaW5jbHVkZSAicW9tL29iamVjdF9pbnRlcmZhY2VzLmgiCisj aW5jbHVkZSAiaHcvcWRldi1jb3JlLmgiCisjaW5jbHVkZSAiaW8vY2hhbm5lbC5oIgorI2luY2x1 ZGUgImh3L3FkZXYtY29yZS5oIgorI2luY2x1ZGUgImh3L3JlbW90ZS9tYWNoaW5lLmgiCisjaW5j bHVkZSAiaW8vY2hhbm5lbC11dGlsLmgiCisjaW5jbHVkZSAicWFwaS9lcnJvci5oIgorI2luY2x1 ZGUgInN5c2VtdS9zeXNlbXUuaCIKKyNpbmNsdWRlICJody9wY2kvcGNpLmgiCisjaW5jbHVkZSAi cWVtdS9zb2NrZXRzLmgiCisjaW5jbHVkZSAibW9uaXRvci9tb25pdG9yLmgiCisKKyNkZWZpbmUg VFlQRV9SRU1PVEVfT0JKRUNUICJ4LXJlbW90ZS1vYmplY3QiCitPQkpFQ1RfREVDTEFSRV9UWVBF KFJlbW90ZU9iamVjdCwgUmVtb3RlT2JqZWN0Q2xhc3MsIFJFTU9URV9PQkpFQ1QpCisKK3N0cnVj dCBSZW1vdGVPYmplY3RDbGFzcyB7CisgICAgT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisg ICAgdW5zaWduZWQgaW50IG5yX2RldnM7CisgICAgdW5zaWduZWQgaW50IG1heF9kZXZzOworfTsK Kworc3RydWN0IFJlbW90ZU9iamVjdCB7CisgICAgLyogcHJpdmF0ZSAqLworICAgIE9iamVjdCBw YXJlbnQ7CisKKyAgICBOb3RpZmllciBtYWNoaW5lX2RvbmU7CisKKyAgICBpbnQzMl90IGZkOwor ICAgIGNoYXIgKmRldmlkOworCisgICAgUUlPQ2hhbm5lbCAqaW9jOworCisgICAgRGV2aWNlU3Rh dGUgKmRldjsKKyAgICBEZXZpY2VMaXN0ZW5lciBsaXN0ZW5lcjsKK307CisKK3N0YXRpYyB2b2lk IHJlbW90ZV9vYmplY3Rfc2V0X2ZkKE9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpzdHIsIEVycm9y ICoqZXJycCkKK3sKKyAgICBSZW1vdGVPYmplY3QgKm8gPSBSRU1PVEVfT0JKRUNUKG9iaik7Cisg ICAgaW50IGZkID0gLTE7CisKKyAgICBmZCA9IG1vbml0b3JfZmRfcGFyYW0obW9uaXRvcl9jdXIo KSwgc3RyLCBlcnJwKTsKKyAgICBpZiAoZmQgPT0gLTEpIHsKKyAgICAgICAgZXJyb3JfcHJlcGVu ZChlcnJwLCAiQ291bGQgbm90IHBhcnNlIHJlbW90ZSBvYmplY3QgZmQgJXM6Iiwgc3RyKTsKKyAg ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghZmRfaXNfc29ja2V0KGZkKSkgeworICAg ICAgICBlcnJvcl9zZXRnKGVycnAsICJGaWxlIGRlc2NyaXB0b3IgJyVzJyBpcyBub3QgYSBzb2Nr ZXQiLCBzdHIpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK KyAgICBvLT5mZCA9IGZkOworfQorCitzdGF0aWMgdm9pZCByZW1vdGVfb2JqZWN0X3NldF9kZXZp ZChPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqc3RyLCBFcnJvciAqKmVycnApCit7CisgICAgUmVt b3RlT2JqZWN0ICpvID0gUkVNT1RFX09CSkVDVChvYmopOworCisgICAgZ19mcmVlKG8tPmRldmlk KTsKKworICAgIG8tPmRldmlkID0gZ19zdHJkdXAoc3RyKTsKK30KKworc3RhdGljIHZvaWQgcmVt b3RlX29iamVjdF91bnJlYWxpemVfbGlzdGVuZXIoRGV2aWNlTGlzdGVuZXIgKmxpc3RlbmVyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlU3RhdGUg KmRldikKK3sKKyAgICBSZW1vdGVPYmplY3QgKm8gPSBjb250YWluZXJfb2YobGlzdGVuZXIsIFJl bW90ZU9iamVjdCwgbGlzdGVuZXIpOworCisgICAgaWYgKG8tPmRldiA9PSBkZXYpIHsKKyAgICAg ICAgb2JqZWN0X3VucmVmKE9CSkVDVChvKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCByZW1v dGVfb2JqZWN0X21hY2hpbmVfZG9uZShOb3RpZmllciAqbm90aWZpZXIsIHZvaWQgKmRhdGEpCit7 CisgICAgUmVtb3RlT2JqZWN0ICpvID0gY29udGFpbmVyX29mKG5vdGlmaWVyLCBSZW1vdGVPYmpl Y3QsIG1hY2hpbmVfZG9uZSk7CisgICAgRGV2aWNlU3RhdGUgKmRldiA9IE5VTEw7CisgICAgUUlP Q2hhbm5lbCAqaW9jID0gTlVMTDsKKyAgICBDb3JvdXRpbmUgKmNvID0gTlVMTDsKKyAgICBSZW1v dGVDb21tRGV2ICpjb21kZXYgPSBOVUxMOworICAgIEVycm9yICplcnIgPSBOVUxMOworCisgICAg ZGV2ID0gcWRldl9maW5kX3JlY3Vyc2l2ZShzeXNidXNfZ2V0X2RlZmF1bHQoKSwgby0+ZGV2aWQp OworICAgIGlmICghZGV2IHx8ICFvYmplY3RfZHluYW1pY19jYXN0KE9CSkVDVChkZXYpLCBUWVBF X1BDSV9ERVZJQ0UpKSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgiJXMgaXMgbm90IGEgUENJIGRl dmljZSIsIG8tPmRldmlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlvYyA9IHFp b19jaGFubmVsX25ld19mZChvLT5mZCwgJmVycik7CisgICAgaWYgKCFpb2MpIHsKKyAgICAgICAg ZXJyb3JfcmVwb3J0X2VycihlcnIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHFpb19j aGFubmVsX3NldF9ibG9ja2luZyhpb2MsIGZhbHNlLCBOVUxMKTsKKworICAgIG8tPmRldiA9IGRl djsKKworICAgIG8tPmxpc3RlbmVyLnVucmVhbGl6ZSA9IHJlbW90ZV9vYmplY3RfdW5yZWFsaXpl X2xpc3RlbmVyOworICAgIGRldmljZV9saXN0ZW5lcl9yZWdpc3Rlcigmby0+bGlzdGVuZXIpOwor CisgICAgLyogY28tcm91dGluZSBzaG91bGQgZnJlZSB0aGlzLiAqLworICAgIGNvbWRldiA9IGdf bmV3MChSZW1vdGVDb21tRGV2LCAxKTsKKyAgICAqY29tZGV2ID0gKFJlbW90ZUNvbW1EZXYpIHsK KyAgICAgICAgLmlvYyA9IGlvYywKKyAgICAgICAgLmRldiA9IFBDSV9ERVZJQ0UoZGV2KSwKKyAg ICB9OworCisgICAgY28gPSBxZW11X2Nvcm91dGluZV9jcmVhdGUobXBxZW11X3JlbW90ZV9tc2df bG9vcF9jbywgY29tZGV2KTsKKyAgICBxZW11X2Nvcm91dGluZV9lbnRlcihjbyk7Cit9CisKK3N0 YXRpYyB2b2lkIHJlbW90ZV9vYmplY3RfaW5pdChPYmplY3QgKm9iaikKK3sKKyAgICBSZW1vdGVP YmplY3RDbGFzcyAqayA9IFJFTU9URV9PQkpFQ1RfR0VUX0NMQVNTKG9iaik7CisgICAgUmVtb3Rl T2JqZWN0ICpvID0gUkVNT1RFX09CSkVDVChvYmopOworCisgICAgaWYgKGstPm5yX2RldnMgPj0g ay0+bWF4X2RldnMpIHsKKyAgICAgICAgZXJyb3JfcmVwb3J0KCJSZWFjaGVkIG1heGltdW0gbnVt YmVyIG9mIGRldmljZXM6ICV1Iiwgay0+bWF4X2RldnMpOworICAgICAgICByZXR1cm47CisgICAg fQorCisgICAgby0+aW9jID0gTlVMTDsKKyAgICBvLT5mZCA9IC0xOworICAgIG8tPmRldmlkID0g TlVMTDsKKworICAgIGstPm5yX2RldnMrKzsKKworICAgIG8tPm1hY2hpbmVfZG9uZS5ub3RpZnkg PSByZW1vdGVfb2JqZWN0X21hY2hpbmVfZG9uZTsKKyAgICBxZW11X2FkZF9tYWNoaW5lX2luaXRf ZG9uZV9ub3RpZmllcigmby0+bWFjaGluZV9kb25lKTsKK30KKworc3RhdGljIHZvaWQgcmVtb3Rl X29iamVjdF9maW5hbGl6ZShPYmplY3QgKm9iaikKK3sKKyAgICBSZW1vdGVPYmplY3RDbGFzcyAq ayA9IFJFTU9URV9PQkpFQ1RfR0VUX0NMQVNTKG9iaik7CisgICAgUmVtb3RlT2JqZWN0ICpvID0g UkVNT1RFX09CSkVDVChvYmopOworCisgICAgZGV2aWNlX2xpc3RlbmVyX3VucmVnaXN0ZXIoJm8t Pmxpc3RlbmVyKTsKKworICAgIGlmIChvLT5pb2MpIHsKKyAgICAgICAgcWlvX2NoYW5uZWxfc2h1 dGRvd24oby0+aW9jLCBRSU9fQ0hBTk5FTF9TSFVURE9XTl9CT1RILCBOVUxMKTsKKyAgICAgICAg cWlvX2NoYW5uZWxfY2xvc2Uoby0+aW9jLCBOVUxMKTsKKyAgICB9CisKKyAgICBvYmplY3RfdW5y ZWYoT0JKRUNUKG8tPmlvYykpOworCisgICAgay0+bnJfZGV2cy0tOworICAgIGdfZnJlZShvLT5k ZXZpZCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbW90ZV9vYmplY3RfY2xhc3NfaW5pdChPYmplY3RD bGFzcyAqa2xhc3MsIHZvaWQgKmRhdGEpCit7CisgICAgUmVtb3RlT2JqZWN0Q2xhc3MgKmsgPSBS RU1PVEVfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKworICAgIC8qCisgICAgICogTGltaXQgbnVtYmVy IG9mIHN1cHBvcnRlZCBkZXZpY2VzIHRvIDEuIFRoaXMgaXMgZG9uZSB0byBhdm9pZCBkZXZpY2Vz CisgICAgICogZnJvbSBvbmUgVk0gYWNjZXNzaW5nIHRoZSBSQU0gb2YgYW5vdGhlciBWTS4gVGhp cyBpcyBkb25lIHVudGlsIHdlCisgICAgICogc3RhcnQgdXNpbmcgc2VwYXJhdGUgYWRkcmVzcyBz cGFjZXMgZm9yIGluZGl2aWR1YWwgZGV2aWNlcy4KKyAgICAgKi8KKyAgICBrLT5tYXhfZGV2cyA9 IDE7CisgICAgay0+bnJfZGV2cyA9IDA7CisKKyAgICBvYmplY3RfY2xhc3NfcHJvcGVydHlfYWRk X3N0cihrbGFzcywgImZkIiwgTlVMTCwgcmVtb3RlX29iamVjdF9zZXRfZmQpOworICAgIG9iamVj dF9jbGFzc19wcm9wZXJ0eV9hZGRfc3RyKGtsYXNzLCAiZGV2aWQiLCBOVUxMLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9vYmplY3Rfc2V0X2RldmlkKTsKK30KKwor c3RhdGljIGNvbnN0IFR5cGVJbmZvIHJlbW90ZV9vYmplY3RfaW5mbyA9IHsKKyAgICAubmFtZSA9 IFRZUEVfUkVNT1RFX09CSkVDVCwKKyAgICAucGFyZW50ID0gVFlQRV9PQkpFQ1QsCisgICAgLmlu c3RhbmNlX3NpemUgPSBzaXplb2YoUmVtb3RlT2JqZWN0KSwKKyAgICAuaW5zdGFuY2VfaW5pdCA9 IHJlbW90ZV9vYmplY3RfaW5pdCwKKyAgICAuaW5zdGFuY2VfZmluYWxpemUgPSByZW1vdGVfb2Jq ZWN0X2ZpbmFsaXplLAorICAgIC5jbGFzc19zaXplID0gc2l6ZW9mKFJlbW90ZU9iamVjdENsYXNz KSwKKyAgICAuY2xhc3NfaW5pdCA9IHJlbW90ZV9vYmplY3RfY2xhc3NfaW5pdCwKKyAgICAuaW50 ZXJmYWNlcyA9IChJbnRlcmZhY2VJbmZvW10pIHsKKyAgICAgICAgeyBUWVBFX1VTRVJfQ1JFQVRB QkxFIH0sCisgICAgICAgIHsgfQorICAgIH0KK307CisKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyX3R5 cGVzKHZvaWQpCit7CisgICAgdHlwZV9yZWdpc3Rlcl9zdGF0aWMoJnJlbW90ZV9vYmplY3RfaW5m byk7Cit9CisKK3R5cGVfaW5pdChyZWdpc3Rlcl90eXBlcyk7CmRpZmYgLS1naXQgYS9ody9yZW1v dGUvbWVzb24uYnVpbGQgYi9ody9yZW1vdGUvbWVzb24uYnVpbGQKaW5kZXggOWY1YzU3ZjM1YS4u NzFkMGE1Njg5ZSAxMDA2NDQKLS0tIGEvaHcvcmVtb3RlL21lc29uLmJ1aWxkCisrKyBiL2h3L3Jl bW90ZS9tZXNvbi5idWlsZApAQCAtMyw1ICszLDYgQEAgcmVtb3RlX3NzID0gc3Muc291cmNlX3Nl dCgpCiByZW1vdGVfc3MuYWRkKHdoZW46ICdDT05GSUdfTVVMVElQUk9DRVNTJywgaWZfdHJ1ZTog ZmlsZXMoJ21hY2hpbmUuYycpKQogcmVtb3RlX3NzLmFkZCh3aGVuOiAnQ09ORklHX01VTFRJUFJP Q0VTUycsIGlmX3RydWU6IGZpbGVzKCdtcHFlbXUtbGluay5jJykpCiByZW1vdGVfc3MuYWRkKHdo ZW46ICdDT05GSUdfTVVMVElQUk9DRVNTJywgaWZfdHJ1ZTogZmlsZXMoJ21lc3NhZ2UuYycpKQor cmVtb3RlX3NzLmFkZCh3aGVuOiAnQ09ORklHX01VTFRJUFJPQ0VTUycsIGlmX3RydWU6IGZpbGVz KCdyZW1vdGUtb2JqLmMnKSkKIAogc29mdG1tdV9zcy5hZGRfYWxsKHdoZW46ICdDT05GSUdfTVVM VElQUk9DRVNTJywgaWZfdHJ1ZTogcmVtb3RlX3NzKQotLSAKMi4yOS4yCgo=