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=-11.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,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 12DB9C433E0 for ; Wed, 10 Feb 2021 09:44:20 +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 3C30C64E35 for ; Wed, 10 Feb 2021 09:44:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3C30C64E35 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]:50092 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l9m2j-0002xn-UI for qemu-devel@archiver.kernel.org; Wed, 10 Feb 2021 04:44:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56832) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l9lpf-00063R-AT for qemu-devel@nongnu.org; Wed, 10 Feb 2021 04:30:49 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:24916) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l9lpd-0007bv-B8 for qemu-devel@nongnu.org; Wed, 10 Feb 2021 04:30:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612949444; 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=3HDQhqZ5SSxWL3Nt8c0FBuiTbxlmJ4xLR+JoGhuim/U=; b=YWdJGXEXqw9cJzzDZ84/CrBGpHFwV9MFZ++FVMnLI/F5WlPlx7mBxLWijx0Mw2nCKVY986 JyrwHQAyYgl/LSsLOBg1JQAgNoMTO8B0AMvEfg7kmGdXBUTUr9XLIY9k60X4lnEok7jp1i JXcHWMSc/OW/mUeSkLfTebMtNXPu16k= 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-11-zQ-gDGRPNn-4diepcj2-vw-1; Wed, 10 Feb 2021 04:30:41 -0500 X-MC-Unique: zQ-gDGRPNn-4diepcj2-vw-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 2B2C8C291; Wed, 10 Feb 2021 09:30:40 +0000 (UTC) Received: from localhost (ovpn-115-120.ams2.redhat.com [10.36.115.120]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6D8061A266; Wed, 10 Feb 2021 09:30:29 +0000 (UTC) From: Stefan Hajnoczi To: Peter Maydell , qemu-devel@nongnu.org Subject: [PULL v4 22/27] multi-process: PCI BAR read/write handling for proxy & remote endpoints Date: Wed, 10 Feb 2021 09:26:23 +0000 Message-Id: <20210210092628.193785-23-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-Transfer-Encoding: base64 Content-Type: text/plain; charset="US-ASCII" Received-SPF: pass client-ip=216.205.24.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 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, MIME_BASE64_TEXT=1.741, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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" RnJvbTogSmFnYW5uYXRoYW4gUmFtYW4gPGphZy5yYW1hbkBvcmFjbGUuY29tPgoKUHJveHkgZGV2 aWNlIG9iamVjdCBpbXBsZW1lbnRzIGhhbmRsZXIgZm9yIFBDSSBCQVIgd3JpdGVzIGFuZCByZWFk cy4KVGhlIGhhbmRsZXIgdXNlcyBCQVJfV1JJVEUvQkFSX1JFQUQgbWVzc2FnZSB0byBjb21tdW5p Y2F0ZSB0byB0aGUKcmVtb3RlIHByb2Nlc3Mgd2l0aCB0aGUgQkFSIGFkZHJlc3MgYW5kIHZhbHVl IHRvIGJlIHdyaXR0ZW4vcmVhZC4KVGhlIHJlbW90ZSBwcm9jZXNzIGltcGxlbWVudHMgaGFuZGxl ciBmb3IgQkFSX1dSSVRFL0JBUl9SRUFECm1lc3NhZ2UuCgpTaWduZWQtb2ZmLWJ5OiBKYWdhbm5h dGhhbiBSYW1hbiA8amFnLnJhbWFuQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEVsZW5hIFVm aW10c2V2YSA8ZWxlbmEudWZpbXRzZXZhQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEpvaG4g RyBKb2huc29uIDxqb2huLmcuam9obnNvbkBvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogU3RlZmFu IEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgpNZXNzYWdlLWlkOiBhOGI3NjcxNGE5Njg4 YmU1NTUyYzRjOTJkMDg5YmM5ZThhNDcwN2ZmLjE2MTE5MzgzMTkuZ2l0LmphZy5yYW1hbkBvcmFj bGUuY29tClNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBIYWpub2N6aSA8c3RlZmFuaGFAcmVkaGF0LmNv bT4KLS0tCiBpbmNsdWRlL2h3L3JlbW90ZS9tcHFlbXUtbGluay5oIHwgMTAgKysrKwogaW5jbHVk ZS9ody9yZW1vdGUvcHJveHkuaCAgICAgICB8ICA5ICsrKysKIGh3L3JlbW90ZS9tZXNzYWdlLmMg ICAgICAgICAgICAgfCA4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGh3L3Jl bW90ZS9tcHFlbXUtbGluay5jICAgICAgICAgfCAgNiArKysKIGh3L3JlbW90ZS9wcm94eS5jICAg ICAgICAgICAgICAgfCA2MCArKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdl ZCwgMTY4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3JlbW90ZS9tcHFl bXUtbGluay5oIGIvaW5jbHVkZS9ody9yZW1vdGUvbXBxZW11LWxpbmsuaAppbmRleCA3YmMwYmRk YjVhLi42MzAzZTYyYjE3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2h3L3JlbW90ZS9tcHFlbXUtbGlu ay5oCisrKyBiL2luY2x1ZGUvaHcvcmVtb3RlL21wcWVtdS1saW5rLmgKQEAgLTM3LDYgKzM3LDgg QEAgdHlwZWRlZiBlbnVtIHsKICAgICBNUFFFTVVfQ01EX1JFVCwKICAgICBNUFFFTVVfQ01EX1BD SV9DRkdXUklURSwKICAgICBNUFFFTVVfQ01EX1BDSV9DRkdSRUFELAorICAgIE1QUUVNVV9DTURf QkFSX1dSSVRFLAorICAgIE1QUUVNVV9DTURfQkFSX1JFQUQsCiAgICAgTVBRRU1VX0NNRF9NQVgs CiB9IE1QUWVtdUNtZDsKIApAQCAtNTIsNiArNTQsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAg IGludCBsZW47CiB9IFBjaUNvbmZEYXRhTXNnOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaHdh ZGRyIGFkZHI7CisgICAgdWludDY0X3QgdmFsOworICAgIHVuc2lnbmVkIHNpemU7CisgICAgYm9v bCBtZW1vcnk7Cit9IEJhckFjY2Vzc01zZzsKKwogLyoqCiAgKiBNUFFlbXVNc2c6CiAgKiBAY21k OiBUaGUgcmVtb3RlIGNvbW1hbmQKQEAgLTcxLDYgKzgwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewog ICAgICAgICB1aW50NjRfdCB1NjQ7CiAgICAgICAgIFBjaUNvbmZEYXRhTXNnIHBjaV9jb25mX2Rh dGE7CiAgICAgICAgIFN5bmNTeXNtZW1Nc2cgc3luY19zeXNtZW07CisgICAgICAgIEJhckFjY2Vz c01zZyBiYXJfYWNjZXNzOwogICAgIH0gZGF0YTsKIAogICAgIGludCBmZHNbUkVNT1RFX01BWF9G RFNdOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody9yZW1vdGUvcHJveHkuaCBiL2luY2x1ZGUvaHcv cmVtb3RlL3Byb3h5LmgKaW5kZXggZmFhOWM0ZDU4MC4uZWE3ZmE0ZmIzYyAxMDA2NDQKLS0tIGEv aW5jbHVkZS9ody9yZW1vdGUvcHJveHkuaAorKysgYi9pbmNsdWRlL2h3L3JlbW90ZS9wcm94eS5o CkBAIC0xNSw2ICsxNSwxNCBAQAogI2RlZmluZSBUWVBFX1BDSV9QUk9YWV9ERVYgIngtcGNpLXBy b3h5LWRldiIKIE9CSkVDVF9ERUNMQVJFX1NJTVBMRV9UWVBFKFBDSVByb3h5RGV2LCBQQ0lfUFJP WFlfREVWKQogCit0eXBlZGVmIHN0cnVjdCBQcm94eU1lbW9yeVJlZ2lvbiB7CisgICAgUENJUHJv eHlEZXYgKmRldjsKKyAgICBNZW1vcnlSZWdpb24gbXI7CisgICAgYm9vbCBtZW1vcnk7CisgICAg Ym9vbCBwcmVzZW50OworICAgIHVpbnQ4X3QgdHlwZTsKK30gUHJveHlNZW1vcnlSZWdpb247CisK IHN0cnVjdCBQQ0lQcm94eURldiB7CiAgICAgUENJRGV2aWNlIHBhcmVudF9kZXY7CiAgICAgY2hh ciAqZmQ7CkBAIC0yOCw2ICszNiw3IEBAIHN0cnVjdCBQQ0lQcm94eURldiB7CiAgICAgUWVtdU11 dGV4IGlvX211dGV4OwogICAgIFFJT0NoYW5uZWwgKmlvYzsKICAgICBFcnJvciAqbWlncmF0aW9u X2Jsb2NrZXI7CisgICAgUHJveHlNZW1vcnlSZWdpb24gcmVnaW9uW1BDSV9OVU1fUkVHSU9OU107 CiB9OwogCiAjZW5kaWYgLyogUFJPWFlfSCAqLwpkaWZmIC0tZ2l0IGEvaHcvcmVtb3RlL21lc3Nh Z2UuYyBiL2h3L3JlbW90ZS9tZXNzYWdlLmMKaW5kZXggNjM2YmQxNjFiZC4uZjJlODQ0NTdlMCAx MDA2NDQKLS0tIGEvaHcvcmVtb3RlL21lc3NhZ2UuYworKysgYi9ody9yZW1vdGUvbWVzc2FnZS5j CkBAIC0xNiwxMSArMTYsMTQgQEAKICNpbmNsdWRlICJxYXBpL2Vycm9yLmgiCiAjaW5jbHVkZSAi c3lzZW11L3J1bnN0YXRlLmgiCiAjaW5jbHVkZSAiaHcvcGNpL3BjaS5oIgorI2luY2x1ZGUgImV4 ZWMvbWVtYXR0cnMuaCIKIAogc3RhdGljIHZvaWQgcHJvY2Vzc19jb25maWdfd3JpdGUoUUlPQ2hh bm5lbCAqaW9jLCBQQ0lEZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1QUWVtdU1zZyAqbXNnLCBFcnJvciAqKmVycnApOwogc3RhdGljIHZvaWQgcHJvY2Vzc19j b25maWdfcmVhZChRSU9DaGFubmVsICppb2MsIFBDSURldmljZSAqZGV2LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNUFFlbXVNc2cgKm1zZywgRXJyb3IgKiplcnJwKTsKK3N0YXRp YyB2b2lkIHByb2Nlc3NfYmFyX3dyaXRlKFFJT0NoYW5uZWwgKmlvYywgTVBRZW11TXNnICptc2cs IEVycm9yICoqZXJycCk7CitzdGF0aWMgdm9pZCBwcm9jZXNzX2Jhcl9yZWFkKFFJT0NoYW5uZWwg KmlvYywgTVBRZW11TXNnICptc2csIEVycm9yICoqZXJycCk7CiAKIHZvaWQgY29yb3V0aW5lX2Zu IG1wcWVtdV9yZW1vdGVfbXNnX2xvb3BfY28odm9pZCAqZGF0YSkKIHsKQEAgLTUyLDYgKzU1LDEy IEBAIHZvaWQgY29yb3V0aW5lX2ZuIG1wcWVtdV9yZW1vdGVfbXNnX2xvb3BfY28odm9pZCAqZGF0 YSkKICAgICAgICAgY2FzZSBNUFFFTVVfQ01EX1BDSV9DRkdSRUFEOgogICAgICAgICAgICAgcHJv Y2Vzc19jb25maWdfcmVhZChjb20tPmlvYywgcGNpX2RldiwgJm1zZywgJmxvY2FsX2Vycik7CiAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUFFFTVVfQ01EX0JBUl9XUklURToKKyAg ICAgICAgICAgIHByb2Nlc3NfYmFyX3dyaXRlKGNvbS0+aW9jLCAmbXNnLCAmbG9jYWxfZXJyKTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QUUVNVV9DTURfQkFSX1JFQUQ6Cisg ICAgICAgICAgICBwcm9jZXNzX2Jhcl9yZWFkKGNvbS0+aW9jLCAmbXNnLCAmbG9jYWxfZXJyKTsK KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZXJyb3Jf c2V0ZygmbG9jYWxfZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBjb21tYW5k ICglZCkgcmVjZWl2ZWQgZm9yIGRldmljZSAlcyIKQEAgLTExNSwzICsxMjQsNzcgQEAgc3RhdGlj IHZvaWQgcHJvY2Vzc19jb25maWdfcmVhZChRSU9DaGFubmVsICppb2MsIFBDSURldmljZSAqZGV2 LAogICAgICAgICAgICAgICAgICAgICAgIGdldHBpZCgpKTsKICAgICB9CiB9CisKK3N0YXRpYyB2 b2lkIHByb2Nlc3NfYmFyX3dyaXRlKFFJT0NoYW5uZWwgKmlvYywgTVBRZW11TXNnICptc2csIEVy cm9yICoqZXJycCkKK3sKKyAgICBFUlJQX0dVQVJEKCk7CisgICAgQmFyQWNjZXNzTXNnICpiYXJf YWNjZXNzID0gJm1zZy0+ZGF0YS5iYXJfYWNjZXNzOworICAgIEFkZHJlc3NTcGFjZSAqYXMgPQor ICAgICAgICBiYXJfYWNjZXNzLT5tZW1vcnkgPyAmYWRkcmVzc19zcGFjZV9tZW1vcnkgOiAmYWRk cmVzc19zcGFjZV9pbzsKKyAgICBNUFFlbXVNc2cgcmV0ID0geyAwIH07CisgICAgTWVtVHhSZXN1 bHQgcmVzOworICAgIHVpbnQ2NF90IHZhbDsKKworICAgIGlmICghaXNfcG93ZXJfb2ZfMihiYXJf YWNjZXNzLT5zaXplKSB8fAorICAgICAgIChiYXJfYWNjZXNzLT5zaXplID4gc2l6ZW9mKHVpbnQ2 NF90KSkpIHsKKyAgICAgICAgcmV0LmRhdGEudTY0ID0gVUlOVDY0X01BWDsKKyAgICAgICAgZ290 byBmYWlsOworICAgIH0KKworICAgIHZhbCA9IGNwdV90b19sZTY0KGJhcl9hY2Nlc3MtPnZhbCk7 CisKKyAgICByZXMgPSBhZGRyZXNzX3NwYWNlX3J3KGFzLCBiYXJfYWNjZXNzLT5hZGRyLCBNRU1U WEFUVFJTX1VOU1BFQ0lGSUVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikm dmFsLCBiYXJfYWNjZXNzLT5zaXplLCB0cnVlKTsKKworICAgIGlmIChyZXMgIT0gTUVNVFhfT0sp IHsKKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiQmFkIGFkZHJlc3MgJSJQUkl4NjQiIGZvciBt ZW0gd3JpdGUsIHBpZCAiRk1UX3BpZCIuIiwKKyAgICAgICAgICAgICAgICAgICBiYXJfYWNjZXNz LT5hZGRyLCBnZXRwaWQoKSk7CisgICAgICAgIHJldC5kYXRhLnU2NCA9IC0xOworICAgIH0KKwor ZmFpbDoKKyAgICByZXQuY21kID0gTVBRRU1VX0NNRF9SRVQ7CisgICAgcmV0LnNpemUgPSBzaXpl b2YocmV0LmRhdGEudTY0KTsKKworICAgIGlmICghbXBxZW11X21zZ19zZW5kKCZyZXQsIGlvYywg TlVMTCkpIHsKKyAgICAgICAgZXJyb3JfcHJlcGVuZChlcnJwLCAiRXJyb3IgcmV0dXJuaW5nIGNv ZGUgdG8gcHJveHksIHBpZCAiRk1UX3BpZCI6ICIsCisgICAgICAgICAgICAgICAgICAgICAgZ2V0 cGlkKCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcHJvY2Vzc19iYXJfcmVhZChRSU9DaGFu bmVsICppb2MsIE1QUWVtdU1zZyAqbXNnLCBFcnJvciAqKmVycnApCit7CisgICAgRVJSUF9HVUFS RCgpOworICAgIEJhckFjY2Vzc01zZyAqYmFyX2FjY2VzcyA9ICZtc2ctPmRhdGEuYmFyX2FjY2Vz czsKKyAgICBNUFFlbXVNc2cgcmV0ID0geyAwIH07CisgICAgQWRkcmVzc1NwYWNlICphczsKKyAg ICBNZW1UeFJlc3VsdCByZXM7CisgICAgdWludDY0X3QgdmFsID0gMDsKKworICAgIGFzID0gYmFy X2FjY2Vzcy0+bWVtb3J5ID8gJmFkZHJlc3Nfc3BhY2VfbWVtb3J5IDogJmFkZHJlc3Nfc3BhY2Vf aW87CisKKyAgICBpZiAoIWlzX3Bvd2VyX29mXzIoYmFyX2FjY2Vzcy0+c2l6ZSkgfHwKKyAgICAg ICAoYmFyX2FjY2Vzcy0+c2l6ZSA+IHNpemVvZih1aW50NjRfdCkpKSB7CisgICAgICAgIHZhbCA9 IFVJTlQ2NF9NQVg7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICByZXMgPSBhZGRy ZXNzX3NwYWNlX3J3KGFzLCBiYXJfYWNjZXNzLT5hZGRyLCBNRU1UWEFUVFJTX1VOU1BFQ0lGSUVE LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikmdmFsLCBiYXJfYWNjZXNzLT5z aXplLCBmYWxzZSk7CisKKyAgICBpZiAocmVzICE9IE1FTVRYX09LKSB7CisgICAgICAgIGVycm9y X3NldGcoZXJycCwgIkJhZCBhZGRyZXNzICUiUFJJeDY0IiBmb3IgbWVtIHJlYWQsIHBpZCAiRk1U X3BpZCIuIiwKKyAgICAgICAgICAgICAgICAgICBiYXJfYWNjZXNzLT5hZGRyLCBnZXRwaWQoKSk7 CisgICAgICAgIHZhbCA9IFVJTlQ2NF9NQVg7CisgICAgfQorCitmYWlsOgorICAgIHJldC5jbWQg PSBNUFFFTVVfQ01EX1JFVDsKKyAgICByZXQuZGF0YS51NjQgPSBsZTY0X3RvX2NwdSh2YWwpOwor ICAgIHJldC5zaXplID0gc2l6ZW9mKHJldC5kYXRhLnU2NCk7CisKKyAgICBpZiAoIW1wcWVtdV9t c2dfc2VuZCgmcmV0LCBpb2MsIE5VTEwpKSB7CisgICAgICAgIGVycm9yX3ByZXBlbmQoZXJycCwg IkVycm9yIHJldHVybmluZyBjb2RlIHRvIHByb3h5LCBwaWQgIkZNVF9waWQiOiAiLAorICAgICAg ICAgICAgICAgICAgICAgIGdldHBpZCgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ody9yZW1v dGUvbXBxZW11LWxpbmsuYyBiL2h3L3JlbW90ZS9tcHFlbXUtbGluay5jCmluZGV4IGI0NWYzMjU2 ODYuLjUyYmZlZGRjZGMgMTAwNjQ0Ci0tLSBhL2h3L3JlbW90ZS9tcHFlbXUtbGluay5jCisrKyBi L2h3L3JlbW90ZS9tcHFlbXUtbGluay5jCkBAIC0yNDgsNiArMjQ4LDEyIEBAIGJvb2wgbXBxZW11 X21zZ192YWxpZChNUFFlbXVNc2cgKm1zZykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg ICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1QUUVNVV9DTURfQkFSX1dSSVRFOgor ICAgIGNhc2UgTVBRRU1VX0NNRF9CQVJfUkVBRDoKKyAgICAgICAgaWYgKChtc2ctPnNpemUgIT0g c2l6ZW9mKEJhckFjY2Vzc01zZykpIHx8IChtc2ctPm51bV9mZHMgIT0gMCkpIHsKKyAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBkZWZhdWx0 OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9ody9yZW1vdGUvcHJveHkuYyBi L2h3L3JlbW90ZS9wcm94eS5jCmluZGV4IDJiMTQzOTQzMmIuLjIyZWI0MjIyMzEgMTAwNjQ0Ci0t LSBhL2h3L3JlbW90ZS9wcm94eS5jCisrKyBiL2h3L3JlbW90ZS9wcm94eS5jCkBAIC0xNTIsMyAr MTUyLDYzIEBAIHN0YXRpYyB2b2lkIHBjaV9wcm94eV9kZXZfcmVnaXN0ZXJfdHlwZXModm9pZCkK IH0KIAogdHlwZV9pbml0KHBjaV9wcm94eV9kZXZfcmVnaXN0ZXJfdHlwZXMpCisKK3N0YXRpYyB2 b2lkIHNlbmRfYmFyX2FjY2Vzc19tc2coUENJUHJveHlEZXYgKnBkZXYsIE1lbW9yeVJlZ2lvbiAq bXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgd3JpdGUsIGh3YWRkciBh ZGRyLCB1aW50NjRfdCAqdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBzaXplLCBib29sIG1lbW9yeSkKK3sKKyAgICBNUFFlbXVNc2cgbXNnID0geyAwIH07Cisg ICAgbG9uZyByZXQgPSAtRUlOVkFMOworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworCisg ICAgbXNnLnNpemUgPSBzaXplb2YoQmFyQWNjZXNzTXNnKTsKKyAgICBtc2cuZGF0YS5iYXJfYWNj ZXNzLmFkZHIgPSBtci0+YWRkciArIGFkZHI7CisgICAgbXNnLmRhdGEuYmFyX2FjY2Vzcy5zaXpl ID0gc2l6ZTsKKyAgICBtc2cuZGF0YS5iYXJfYWNjZXNzLm1lbW9yeSA9IG1lbW9yeTsKKworICAg IGlmICh3cml0ZSkgeworICAgICAgICBtc2cuY21kID0gTVBRRU1VX0NNRF9CQVJfV1JJVEU7Cisg ICAgICAgIG1zZy5kYXRhLmJhcl9hY2Nlc3MudmFsID0gKnZhbDsKKyAgICB9IGVsc2UgeworICAg ICAgICBtc2cuY21kID0gTVBRRU1VX0NNRF9CQVJfUkVBRDsKKyAgICB9CisKKyAgICByZXQgPSBt cHFlbXVfbXNnX3NlbmRfYW5kX2F3YWl0X3JlcGx5KCZtc2csIHBkZXYsICZsb2NhbF9lcnIpOwor ICAgIGlmIChsb2NhbF9lcnIpIHsKKyAgICAgICAgZXJyb3JfcmVwb3J0X2Vycihsb2NhbF9lcnIp OworICAgIH0KKworICAgIGlmICghd3JpdGUpIHsKKyAgICAgICAgKnZhbCA9IHJldDsKKyAgICB9 Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5X2Jhcl93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBh ZGRyLCB1aW50NjRfdCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg c2l6ZSkKK3sKKyAgICBQcm94eU1lbW9yeVJlZ2lvbiAqcG1yID0gb3BhcXVlOworCisgICAgc2Vu ZF9iYXJfYWNjZXNzX21zZyhwbXItPmRldiwgJnBtci0+bXIsIHRydWUsIGFkZHIsICZ2YWwsIHNp emUsCisgICAgICAgICAgICAgICAgICAgICAgICBwbXItPm1lbW9yeSk7Cit9CisKK3N0YXRpYyB1 aW50NjRfdCBwcm94eV9iYXJfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLCB1bnNpZ25l ZCBzaXplKQoreworICAgIFByb3h5TWVtb3J5UmVnaW9uICpwbXIgPSBvcGFxdWU7CisgICAgdWlu dDY0X3QgdmFsOworCisgICAgc2VuZF9iYXJfYWNjZXNzX21zZyhwbXItPmRldiwgJnBtci0+bXIs IGZhbHNlLCBhZGRyLCAmdmFsLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgcG1yLT5t ZW1vcnkpOworCisgICAgcmV0dXJuIHZhbDsKK30KKworY29uc3QgTWVtb3J5UmVnaW9uT3BzIHBy b3h5X21yX29wcyA9IHsKKyAgICAucmVhZCA9IHByb3h5X2Jhcl9yZWFkLAorICAgIC53cml0ZSA9 IHByb3h5X2Jhcl93cml0ZSwKKyAgICAuZW5kaWFubmVzcyA9IERFVklDRV9OQVRJVkVfRU5ESUFO LAorICAgIC5pbXBsID0geworICAgICAgICAubWluX2FjY2Vzc19zaXplID0gMSwKKyAgICAgICAg Lm1heF9hY2Nlc3Nfc2l6ZSA9IDgsCisgICAgfSwKK307Ci0tIAoyLjI5LjIKCg==