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=-12.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 8D778C47423 for ; Wed, 7 Oct 2020 16:44:50 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 318F921924 for ; Wed, 7 Oct 2020 16:44:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="i5NErQDA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 318F921924 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 478E06E93C; Wed, 7 Oct 2020 16:44:47 +0000 (UTC) Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by gabe.freedesktop.org (Postfix) with ESMTPS id 53BC46E93C for ; Wed, 7 Oct 2020 16:44:46 +0000 (UTC) Received: by mail-wm1-x341.google.com with SMTP id l11so3060509wmh.2 for ; Wed, 07 Oct 2020 09:44:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8QP2Wenq2GK6EY3ahrpWajGkuysCGV7MvFRxQ1vZo3s=; b=i5NErQDABG3xyWhRS4Xp5UE+yc175cKBosuLwqs+5Zn8/i+6EDik/ClkH01I13hX0C vHWn8ZQwXSRppGzO1ARSqAorvzmm5jdaYhrHwKoWTQQ7RJGkEeKz3LKPRWsgEBq8z632 MOPWrvux1Ic5Czns6RqQXDLB3M9PMsSLbSN64= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8QP2Wenq2GK6EY3ahrpWajGkuysCGV7MvFRxQ1vZo3s=; b=pT9s51ec3rLV3FW2C2tzzI2G6aKkJ0a86Xjyej7qaoufD8zWc6YI3V3YqQCdCPAvvF m5x7wmGA19Psg6X/DTl4x/S7UL9XELQsUi+I3Fj/BQfD+yaZK+GQyMKWftRt/k8fwbBm R7C5wBw8P21NmkFKVtSwjmblox70I4vozoyq9v3iha+c1m29JUbiwDD8UMuAmS9LY4he TJJzcYZvsGLcL/oBX8tdXMSklNalXzwi8KxM4Ul9Ltiq4ZMTuH6GIbf2Lv/jEyYv5jqy +xF33fKtLddi4HaAILqdvKqZlRNtQ4Bp1sq6qwqwDY+5el3S0rAt0lla50TkytZjRR1S a4QA== X-Gm-Message-State: AOAM5315pQgQm+YDI/W3swZv4beEm6FrUepC655ZTQngNHhDqutFA1Wx cZlTMi5NoalpqWkSNBECAwZnlSWrp/VLYRGt X-Google-Smtp-Source: ABdhPJxWzivkD3PWGA++mhqeycKy3eCML2xayttch0jMto2/MWxaF4znXSjgUbtngV+YgelXTwteig== X-Received: by 2002:a7b:c847:: with SMTP id c7mr4407500wml.41.1602089084693; Wed, 07 Oct 2020 09:44:44 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id z191sm3332280wme.40.2020.10.07.09.44.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Oct 2020 09:44:44 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH 08/13] s390/pci: Remove races against pte updates Date: Wed, 7 Oct 2020 18:44:21 +0200 Message-Id: <20201007164426.1812530-9-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201007164426.1812530-1-daniel.vetter@ffwll.ch> References: <20201007164426.1812530-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-s390@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Jan Kara , Kees Cook , kvm@vger.kernel.org, Jason Gunthorpe , Daniel Vetter , Niklas Schnelle , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , John Hubbard , Daniel Vetter , Dan Williams , Gerald Schaefer , Andrew Morton , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" V2F5IGJhY2sgaXQgd2FzIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyB0aGF0IGlvbWVtIG1hcHBp bmdzIG5ldmVyCmNoYW5nZSB0aGUgcGZuIHJhbmdlIHRoZXkgcG9pbnQgYXQuIEJ1dCB0aGlzIGhh cyBjaGFuZ2VkOgoKLSBncHUgZHJpdmVycyBkeW5hbWljYWxseSBtYW5hZ2UgdGhlaXIgbWVtb3J5 IG5vd2FkYXlzLCBpbnZhbGlkYXRpbmcKcHRlcyB3aXRoIHVubWFwX21hcHBpbmdfcmFuZ2Ugd2hl biBidWZmZXJzIGdldCBtb3ZlZAoKLSBjb250aWd1b3VzIGRtYSBhbGxvY2F0aW9ucyBoYXZlIG1v dmVkIGZyb20gZGVkaWNhdGVkIGNhcnZldG91dHMgdG8KY21hIHJlZ2lvbnMuIFRoaXMgbWVhbnMg aWYgd2UgbWlzcyB0aGUgdW5tYXAgdGhlIHBmbiBtaWdodCBjb250YWluCnBhZ2VjYWNoZSBvciBh bm9uIG1lbW9yeSAod2VsbCBhbnl0aGluZyBhbGxvY2F0ZWQgd2l0aCBHRlBfTU9WRUFCTEUpCgot IGV2ZW4gL2Rldi9tZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4gdGhlIGtlcm5lbCBy ZXF1ZXN0cyB0aGF0CmlvbWVtIHJlZ2lvbiB3aGVuIENPTkZJR19JT19TVFJJQ1RfREVWTUVNIGlz IHNldCwgc2VlIDMyMzRhYzY2NGE4NwooIi9kZXYvbWVtOiBSZXZva2UgbWFwcGluZ3Mgd2hlbiBh IGRyaXZlciBjbGFpbXMgdGhlIHJlZ2lvbiIpCgpBY2Nlc3NpbmcgcGZucyBvYnRhaW5lZCBmcm9t IHB0ZXMgd2l0aG91dCBob2xkaW5nIGFsbCB0aGUgbG9ja3MgaXMKdGhlcmVmb3JlIG5vIGxvbmdl ciBhIGdvb2QgaWRlYS4gRml4IHRoaXMuCgpTaW5jZSB6cGNpX21lbWNweV9mcm9tfHRvaW8gc2Vl bXMgdG8gbm90IGRvIGFueXRoaW5nIG5lZmFyaW91cyB3aXRoCmxvY2tzIHdlIGp1c3QgbmVlZCB0 byBvcGVuIGNvZGUgZ2V0X3BmbiBhbmQgZm9sbG93X3BmbiBhbmQgbWFrZSBzdXJlCndlIGRyb3Ag dGhlIGxvY2tzIG9ubHkgYWZ0ZXIgd2UndmUgZG9uZS4gVGhlIHdyaXRlIGZ1bmN0aW9uIGFsc28g bmVlZHMKdGhlIGNvcHlfZnJvbV91c2VyIG1vdmUsIHNpbmNlIHdlIGNhbid0IHRha2UgdXNlcnNw YWNlIGZhdWx0cyB3aGlsZQpob2xkaW5nIHRoZSBtbWFwIHNlbS4KClNpZ25lZC1vZmYtYnk6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgpDYzogSmFzb24gR3VudGhvcnBl IDxqZ2dAemllcGUuY2E+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNv bT4KQ2M6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPgpDYzogQW5kcmV3IE1vcnRv biA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KQ2M6IEpvaG4gSHViYmFyZCA8amh1YmJhcmRA bnZpZGlhLmNvbT4KQ2M6IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgpDYzog SmFuIEthcmEgPGphY2tAc3VzZS5jej4KQ2M6IERhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNA aW50ZWwuY29tPgpDYzogbGludXgtbW1Aa3ZhY2sub3JnCkNjOiBsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKQ2M6IGxpbnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZwpD YzogbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCkNjOiBOaWtsYXMgU2NobmVsbGUgPHNjaG5l bGxlQGxpbnV4LmlibS5jb20+CkNjOiBHZXJhbGQgU2NoYWVmZXIgPGdlcmFsZC5zY2hhZWZlckBs aW51eC5pYm0uY29tPgpDYzogbGludXgtczM5MEB2Z2VyLmtlcm5lbC5vcmcKLS0tCiBhcmNoL3Mz OTAvcGNpL3BjaV9tbWlvLmMgfCA5OCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jIGIvYXJjaC9zMzkwL3BjaS9w Y2lfbW1pby5jCmluZGV4IDQwMWNmNjcwYTI0My4uNGQxOTRjYjA5MzcyIDEwMDY0NAotLS0gYS9h cmNoL3MzOTAvcGNpL3BjaV9tbWlvLmMKKysrIGIvYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jCkBA IC0xMTksMzMgKzExOSwxNSBAQCBzdGF0aWMgaW5saW5lIGludCBfX21lbWNweV90b2lvX2ludXNl cih2b2lkIF9faW9tZW0gKmRzdCwKIAlyZXR1cm4gcmM7CiB9CiAKLXN0YXRpYyBsb25nIGdldF9w Zm4odW5zaWduZWQgbG9uZyB1c2VyX2FkZHIsIHVuc2lnbmVkIGxvbmcgYWNjZXNzLAotCQkgICAg dW5zaWduZWQgbG9uZyAqcGZuKQotewotCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwotCWxv bmcgcmV0OwotCi0JbW1hcF9yZWFkX2xvY2soY3VycmVudC0+bW0pOwotCXJldCA9IC1FSU5WQUw7 Ci0Jdm1hID0gZmluZF92bWEoY3VycmVudC0+bW0sIHVzZXJfYWRkcik7Ci0JaWYgKCF2bWEpCi0J CWdvdG8gb3V0OwotCXJldCA9IC1FQUNDRVM7Ci0JaWYgKCEodm1hLT52bV9mbGFncyAmIGFjY2Vz cykpCi0JCWdvdG8gb3V0OwotCXJldCA9IGZvbGxvd19wZm4odm1hLCB1c2VyX2FkZHIsIHBmbik7 Ci1vdXQ6Ci0JbW1hcF9yZWFkX3VubG9jayhjdXJyZW50LT5tbSk7Ci0JcmV0dXJuIHJldDsKLX0K LQogU1lTQ0FMTF9ERUZJTkUzKHMzOTBfcGNpX21taW9fd3JpdGUsIHVuc2lnbmVkIGxvbmcsIG1t aW9fYWRkciwKIAkJY29uc3Qgdm9pZCBfX3VzZXIgKiwgdXNlcl9idWZmZXIsIHNpemVfdCwgbGVu Z3RoKQogewogCXU4IGxvY2FsX2J1Zls2NF07CiAJdm9pZCBfX2lvbWVtICppb19hZGRyOwogCXZv aWQgKmJ1ZjsKLQl1bnNpZ25lZCBsb25nIHBmbjsKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YTsKKwlwdGVfdCAqcHRlcDsKKwlzcGlubG9ja190ICpwdGw7CiAJbG9uZyByZXQ7CiAKIAlpZiAo IXpwY2lfaXNfZW5hYmxlZCgpKQpAQCAtMTU4LDcgKzE0MCw3IEBAIFNZU0NBTExfREVGSU5FMyhz MzkwX3BjaV9tbWlvX3dyaXRlLCB1bnNpZ25lZCBsb25nLCBtbWlvX2FkZHIsCiAJICogV2Ugb25s eSBzdXBwb3J0IHdyaXRlIGFjY2VzcyB0byBNSU8gY2FwYWJsZSBkZXZpY2VzIGlmIHdlIGFyZSBv bgogCSAqIGEgTUlPIGVuYWJsZWQgc3lzdGVtLiBPdGhlcndpc2Ugd2Ugd291bGQgaGF2ZSB0byBj aGVjayBmb3IgZXZlcnkKIAkgKiBhZGRyZXNzIGlmIGl0IGlzIGEgc3BlY2lhbCBaUENJX0FERFIg YW5kIHdvdWxkIGhhdmUgdG8gZG8KLQkgKiBhIGdldF9wZm4oKSB3aGljaCB3ZSBkb24ndCBuZWVk IGZvciBNSU8gY2FwYWJsZSBkZXZpY2VzLiAgQ3VycmVudGx5CisJICogYSBwZm4gbG9va3VwIHdo aWNoIHdlIGRvbid0IG5lZWQgZm9yIE1JTyBjYXBhYmxlIGRldmljZXMuICBDdXJyZW50bHkKIAkg KiBJU00gZGV2aWNlcyBhcmUgdGhlIG9ubHkgZGV2aWNlcyB3aXRob3V0IE1JTyBzdXBwb3J0IGFu ZCB0aGVyZSBpcyBubwogCSAqIGtub3duIG5lZWQgZm9yIGFjY2Vzc2luZyB0aGVzZSBmcm9tIHVz ZXJzcGFjZS4KIAkgKi8KQEAgLTE3NiwyMSArMTU4LDM3IEBAIFNZU0NBTExfREVGSU5FMyhzMzkw X3BjaV9tbWlvX3dyaXRlLCB1bnNpZ25lZCBsb25nLCBtbWlvX2FkZHIsCiAJfSBlbHNlCiAJCWJ1 ZiA9IGxvY2FsX2J1ZjsKIAotCXJldCA9IGdldF9wZm4obW1pb19hZGRyLCBWTV9XUklURSwgJnBm bik7CisJcmV0ID0gLUVGQVVMVDsKKwlpZiAoY29weV9mcm9tX3VzZXIoYnVmLCB1c2VyX2J1ZmZl ciwgbGVuZ3RoKSkKKwkJZ290byBvdXRfZnJlZTsKKworCW1tYXBfcmVhZF9sb2NrKGN1cnJlbnQt Pm1tKTsKKwlyZXQgPSAtRUlOVkFMOworCXZtYSA9IGZpbmRfdm1hKGN1cnJlbnQtPm1tLCBtbWlv X2FkZHIpOworCWlmICghdm1hKQorCQlnb3RvIG91dF91bmxvY2tfbW1hcDsKKwlyZXQgPSAtRUFD Q0VTOworCWlmICghKHZtYS0+dm1fZmxhZ3MgJiBWTV9XUklURSkpCisJCWdvdG8gb3V0X3VubG9j a19tbWFwOworCWlmICghKHZtYS0+dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVApKSkKKwkJ Z290byBvdXRfdW5sb2NrX21tYXA7CisKKwlyZXQgPSBmb2xsb3dfcHRlX3BtZCh2bWEtPnZtX21t LCBtbWlvX2FkZHIsIE5VTEwsICZwdGVwLCBOVUxMLCAmcHRsKTsKIAlpZiAocmV0KQotCQlnb3Rv IG91dDsKLQlpb19hZGRyID0gKHZvaWQgX19pb21lbSAqKSgocGZuIDw8IFBBR0VfU0hJRlQpIHwK KwkJZ290byBvdXRfdW5sb2NrX21tYXA7CisKKwlpb19hZGRyID0gKHZvaWQgX19pb21lbSAqKSgo cHRlX3BmbigqcHRlcCkgPDwgUEFHRV9TSElGVCkgfAogCQkJKG1taW9fYWRkciAmIH5QQUdFX01B U0spKTsKIAotCXJldCA9IC1FRkFVTFQ7CiAJaWYgKCh1bnNpZ25lZCBsb25nKSBpb19hZGRyIDwg WlBDSV9JT01BUF9BRERSX0JBU0UpCi0JCWdvdG8gb3V0OwotCi0JaWYgKGNvcHlfZnJvbV91c2Vy KGJ1ZiwgdXNlcl9idWZmZXIsIGxlbmd0aCkpCi0JCWdvdG8gb3V0OworCQlnb3RvIG91dF91bmxv Y2tfcHQ7CiAKIAlyZXQgPSB6cGNpX21lbWNweV90b2lvKGlvX2FkZHIsIGJ1ZiwgbGVuZ3RoKTsK LW91dDoKK291dF91bmxvY2tfcHQ6CisJcHRlX3VubWFwX3VubG9jayhwdGVwLCBwdGwpOworb3V0 X3VubG9ja19tbWFwOgorCW1tYXBfcmVhZF91bmxvY2soY3VycmVudC0+bW0pOworb3V0X2ZyZWU6 CiAJaWYgKGJ1ZiAhPSBsb2NhbF9idWYpCiAJCWtmcmVlKGJ1Zik7CiAJcmV0dXJuIHJldDsKQEAg LTI3NCw3ICsyNzIsOSBAQCBTWVNDQUxMX0RFRklORTMoczM5MF9wY2lfbW1pb19yZWFkLCB1bnNp Z25lZCBsb25nLCBtbWlvX2FkZHIsCiAJdTggbG9jYWxfYnVmWzY0XTsKIAl2b2lkIF9faW9tZW0g KmlvX2FkZHI7CiAJdm9pZCAqYnVmOwotCXVuc2lnbmVkIGxvbmcgcGZuOworCXN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hOworCXB0ZV90ICpwdGVwOworCXNwaW5sb2NrX3QgKnB0bDsKIAlsb25n IHJldDsKIAogCWlmICghenBjaV9pc19lbmFibGVkKCkpCkBAIC0yODcsNyArMjg3LDcgQEAgU1lT Q0FMTF9ERUZJTkUzKHMzOTBfcGNpX21taW9fcmVhZCwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRy LAogCSAqIFdlIG9ubHkgc3VwcG9ydCByZWFkIGFjY2VzcyB0byBNSU8gY2FwYWJsZSBkZXZpY2Vz IGlmIHdlIGFyZSBvbgogCSAqIGEgTUlPIGVuYWJsZWQgc3lzdGVtLiBPdGhlcndpc2Ugd2Ugd291 bGQgaGF2ZSB0byBjaGVjayBmb3IgZXZlcnkKIAkgKiBhZGRyZXNzIGlmIGl0IGlzIGEgc3BlY2lh bCBaUENJX0FERFIgYW5kIHdvdWxkIGhhdmUgdG8gZG8KLQkgKiBhIGdldF9wZm4oKSB3aGljaCB3 ZSBkb24ndCBuZWVkIGZvciBNSU8gY2FwYWJsZSBkZXZpY2VzLiAgQ3VycmVudGx5CisJICogYSBw Zm4gbG9va3VwIHdoaWNoIHdlIGRvbid0IG5lZWQgZm9yIE1JTyBjYXBhYmxlIGRldmljZXMuICBD dXJyZW50bHkKIAkgKiBJU00gZGV2aWNlcyBhcmUgdGhlIG9ubHkgZGV2aWNlcyB3aXRob3V0IE1J TyBzdXBwb3J0IGFuZCB0aGVyZSBpcyBubwogCSAqIGtub3duIG5lZWQgZm9yIGFjY2Vzc2luZyB0 aGVzZSBmcm9tIHVzZXJzcGFjZS4KIAkgKi8KQEAgLTMwNiwyMiArMzA2LDM4IEBAIFNZU0NBTExf REVGSU5FMyhzMzkwX3BjaV9tbWlvX3JlYWQsIHVuc2lnbmVkIGxvbmcsIG1taW9fYWRkciwKIAkJ YnVmID0gbG9jYWxfYnVmOwogCX0KIAotCXJldCA9IGdldF9wZm4obW1pb19hZGRyLCBWTV9SRUFE LCAmcGZuKTsKKwltbWFwX3JlYWRfbG9jayhjdXJyZW50LT5tbSk7CisJcmV0ID0gLUVJTlZBTDsK Kwl2bWEgPSBmaW5kX3ZtYShjdXJyZW50LT5tbSwgbW1pb19hZGRyKTsKKwlpZiAoIXZtYSkKKwkJ Z290byBvdXRfdW5sb2NrX21tYXA7CisJcmV0ID0gLUVBQ0NFUzsKKwlpZiAoISh2bWEtPnZtX2Zs YWdzICYgVk1fV1JJVEUpKQorCQlnb3RvIG91dF91bmxvY2tfbW1hcDsKKwlpZiAoISh2bWEtPnZt X2ZsYWdzICYgKFZNX0lPIHwgVk1fUEZOTUFQKSkpCisJCWdvdG8gb3V0X3VubG9ja19tbWFwOwor CisJcmV0ID0gZm9sbG93X3B0ZV9wbWQodm1hLT52bV9tbSwgbW1pb19hZGRyLCBOVUxMLCAmcHRl cCwgTlVMTCwgJnB0bCk7CiAJaWYgKHJldCkKLQkJZ290byBvdXQ7Ci0JaW9fYWRkciA9ICh2b2lk IF9faW9tZW0gKikoKHBmbiA8PCBQQUdFX1NISUZUKSB8IChtbWlvX2FkZHIgJiB+UEFHRV9NQVNL KSk7CisJCWdvdG8gb3V0X3VubG9ja19tbWFwOworCisJaW9fYWRkciA9ICh2b2lkIF9faW9tZW0g KikoKHB0ZV9wZm4oKnB0ZXApIDw8IFBBR0VfU0hJRlQpIHwKKwkJCShtbWlvX2FkZHIgJiB+UEFH RV9NQVNLKSk7CiAKIAlpZiAoKHVuc2lnbmVkIGxvbmcpIGlvX2FkZHIgPCBaUENJX0lPTUFQX0FE RFJfQkFTRSkgewogCQlyZXQgPSAtRUZBVUxUOwotCQlnb3RvIG91dDsKKwkJZ290byBvdXRfdW5s b2NrX3B0OwogCX0KIAlyZXQgPSB6cGNpX21lbWNweV9mcm9taW8oYnVmLCBpb19hZGRyLCBsZW5n dGgpOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0OwotCWlmIChjb3B5X3RvX3VzZXIodXNlcl9idWZm ZXIsIGJ1ZiwgbGVuZ3RoKSkKKworb3V0X3VubG9ja19wdDoKKwlwdGVfdW5tYXBfdW5sb2NrKHB0 ZXAsIHB0bCk7CitvdXRfdW5sb2NrX21tYXA6CisJbW1hcF9yZWFkX3VubG9jayhjdXJyZW50LT5t bSk7CisKKwlpZiAoIXJldCAmJiBjb3B5X3RvX3VzZXIodXNlcl9idWZmZXIsIGJ1ZiwgbGVuZ3Ro KSkKIAkJcmV0ID0gLUVGQVVMVDsKIAotb3V0OgogCWlmIChidWYgIT0gbG9jYWxfYnVmKQogCQlr ZnJlZShidWYpOwogCXJldHVybiByZXQ7Ci0tIAoyLjI4LjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=