From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH RFC V2 36/45] x86: make loading of GDT at context switch more modular Date: Mon, 6 May 2019 08:56:35 +0200 Message-ID: <20190506065644.7415-37-jgross@suse.com> References: <20190506065644.7415-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hNXYl-0002FD-B7 for xen-devel@lists.xenproject.org; Mon, 06 May 2019 06:57:11 +0000 In-Reply-To: <20190506065644.7415-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Andrew Cooper , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org SW4gcHJlcGFyYXRpb24gZm9yIGNvcmUgc2NoZWR1bGluZyBjYXJ2ZSBvdXQgdGhlIEdEVCByZWxh dGVkCmZ1bmN0aW9uYWxpdHkgKHdyaXRpbmcgR0RUIHJlbGF0ZWQgUFRFcywgbG9hZGluZyBkZWZh dWx0IG9mIGZ1bGwgR0RUKQppbnRvIHN1Yi1mdW5jdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBKdWVy Z2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQpSRkMgVjI6IHNwbGl0IG9mZiBub24tcmVm YWN0b3JpbmcgcGFydAotLS0KIHhlbi9hcmNoL3g4Ni9kb21haW4uYyB8IDU3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDM1IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwppbmRleCAxNTI1Y2NkOGU1Li43 MmEzNjVmZjZhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMKKysrIGIveGVuL2Fy Y2gveDg2L2RvbWFpbi5jCkBAIC0xNjE5LDYgKzE2MTksMzcgQEAgc3RhdGljIGlubGluZSBib29s IG5lZWRfZnVsbF9nZHQoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4gaXNfcHZf ZG9tYWluKGQpICYmICFpc19pZGxlX2RvbWFpbihkKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lk IHdyaXRlX2Z1bGxfZ2R0X3B0ZXMoc2VnX2Rlc2NfdCAqZ2R0LCBzdHJ1Y3QgdmNwdSAqdikKK3sK KyAgICB1bnNpZ25lZCBsb25nIG1mbiA9IHZpcnRfdG9fbWZuKGdkdCk7CisgICAgbDFfcGdlbnRy eV90ICpwbDFlID0gcHZfZ2R0X3B0ZXModik7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBm b3IgKCBpID0gMDsgaSA8IE5SX1JFU0VSVkVEX0dEVF9QQUdFUzsgaSsrICkKKyAgICAgICAgbDFl X3dyaXRlKHBsMWUgKyBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSArIGksCisgICAgICAgICAgICAg ICAgICBsMWVfZnJvbV9wZm4obWZuICsgaSwgX19QQUdFX0hZUEVSVklTT1JfUlcpKTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGxvYWRfZnVsbF9nZHQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVk IGludCBjcHUpCit7CisgICAgc3RydWN0IGRlc2NfcHRyIGdkdF9kZXNjOworCisgICAgZ2R0X2Rl c2MubGltaXQgPSBMQVNUX1JFU0VSVkVEX0dEVF9CWVRFOworICAgIGdkdF9kZXNjLmJhc2UgPSBH RFRfVklSVF9TVEFSVCh2KTsKKworICAgIGxnZHQoJmdkdF9kZXNjKTsKK30KKworc3RhdGljIGlu bGluZSB2b2lkIGxvYWRfZGVmYXVsdF9nZHQoc2VnX2Rlc2NfdCAqZ2R0LCB1bnNpZ25lZCBpbnQg Y3B1KQoreworICAgIHN0cnVjdCBkZXNjX3B0ciBnZHRfZGVzYzsKKworICAgIGdkdF9kZXNjLmxp bWl0ID0gTEFTVF9SRVNFUlZFRF9HRFRfQllURTsKKyAgICBnZHRfZGVzYy5iYXNlICA9ICh1bnNp Z25lZCBsb25nKShnZHQgLSBGSVJTVF9SRVNFUlZFRF9HRFRfRU5UUlkpOworCisgICAgbGdkdCgm Z2R0X2Rlc2MpOworfQorCiBzdGF0aWMgdm9pZCBfX2NvbnRleHRfc3dpdGNoKHZvaWQpCiB7CiAg ICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnN0YWNrX3JlZ3MgPSBndWVzdF9jcHVfdXNlcl9yZWdz KCk7CkBAIC0xNjI3LDcgKzE2NTgsNiBAQCBzdGF0aWMgdm9pZCBfX2NvbnRleHRfc3dpdGNoKHZv aWQpCiAgICAgc3RydWN0IHZjcHUgICAgICAgICAgKm4gPSBjdXJyZW50OwogICAgIHN0cnVjdCBk b21haW4gICAgICAgICpwZCA9IHAtPmRvbWFpbiwgKm5kID0gbi0+ZG9tYWluOwogICAgIHNlZ19k ZXNjX3QgICAgICAgICAgICpnZHQ7Ci0gICAgc3RydWN0IGRlc2NfcHRyICAgICAgIGdkdF9kZXNj OwogCiAgICAgQVNTRVJUKHAgIT0gbik7CiAgICAgQVNTRVJUKCF2Y3B1X2NwdV9kaXJ0eShuKSk7 CkBAIC0xNjY5LDI1ICsxNjk5LDEzIEBAIHN0YXRpYyB2b2lkIF9fY29udGV4dF9zd2l0Y2godm9p ZCkKIAogICAgIGdkdCA9ICFpc19wdl8zMmJpdF9kb21haW4obmQpID8gcGVyX2NwdShnZHRfdGFi bGUsIGNwdSkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyX2NwdShj b21wYXRfZ2R0X3RhYmxlLCBjcHUpOwotICAgIGlmICggbmVlZF9mdWxsX2dkdChuZCkgKQotICAg IHsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSB2aXJ0X3RvX21mbihnZHQpOwotICAgICAg ICBsMV9wZ2VudHJ5X3QgKnBsMWUgPSBwdl9nZHRfcHRlcyhuKTsKLSAgICAgICAgdW5zaWduZWQg aW50IGk7CiAKLSAgICAgICAgZm9yICggaSA9IDA7IGkgPCBOUl9SRVNFUlZFRF9HRFRfUEFHRVM7 IGkrKyApCi0gICAgICAgICAgICBsMWVfd3JpdGUocGwxZSArIEZJUlNUX1JFU0VSVkVEX0dEVF9Q QUdFICsgaSwKLSAgICAgICAgICAgICAgICAgICAgICBsMWVfZnJvbV9wZm4obWZuICsgaSwgX19Q QUdFX0hZUEVSVklTT1JfUlcpKTsKLSAgICB9CisgICAgaWYgKCBuZWVkX2Z1bGxfZ2R0KG5kKSAp CisgICAgICAgIHdyaXRlX2Z1bGxfZ2R0X3B0ZXMoZ2R0LCBuKTsKIAogICAgIGlmICggbmVlZF9m dWxsX2dkdChwZCkgJiYKICAgICAgICAgICgocC0+dmNwdV9pZCAhPSBuLT52Y3B1X2lkKSB8fCAh bmVlZF9mdWxsX2dkdChuZCkpICkKLSAgICB7Ci0gICAgICAgIGdkdF9kZXNjLmxpbWl0ID0gTEFT VF9SRVNFUlZFRF9HRFRfQllURTsKLSAgICAgICAgZ2R0X2Rlc2MuYmFzZSAgPSAodW5zaWduZWQg bG9uZykoZ2R0IC0gRklSU1RfUkVTRVJWRURfR0RUX0VOVFJZKTsKLQotICAgICAgICBsZ2R0KCZn ZHRfZGVzYyk7Ci0gICAgfQorICAgICAgICBsb2FkX2RlZmF1bHRfZ2R0KGdkdCwgY3B1KTsKIAog ICAgIHdyaXRlX3B0YmFzZShuKTsKIApAQCAtMTcwMCwxMiArMTcxOCw3IEBAIHN0YXRpYyB2b2lk IF9fY29udGV4dF9zd2l0Y2godm9pZCkKIAogICAgIGlmICggbmVlZF9mdWxsX2dkdChuZCkgJiYK ICAgICAgICAgICgocC0+dmNwdV9pZCAhPSBuLT52Y3B1X2lkKSB8fCAhbmVlZF9mdWxsX2dkdChw ZCkpICkKLSAgICB7Ci0gICAgICAgIGdkdF9kZXNjLmxpbWl0ID0gTEFTVF9SRVNFUlZFRF9HRFRf QllURTsKLSAgICAgICAgZ2R0X2Rlc2MuYmFzZSA9IEdEVF9WSVJUX1NUQVJUKG4pOwotCi0gICAg ICAgIGxnZHQoJmdkdF9kZXNjKTsKLSAgICB9CisgICAgICAgIGxvYWRfZnVsbF9nZHQobiwgY3B1 KTsKIAogICAgIGlmICggcGQgIT0gbmQgKQogICAgICAgICBjcHVtYXNrX2NsZWFyX2NwdShjcHUs IHBkLT5kaXJ0eV9jcHVtYXNrKTsKLS0gCjIuMTYuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw= 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=-9.0 required=3.0 tests=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 ADC9FC04AAC for ; Mon, 6 May 2019 06:57:31 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 89674206A3 for ; Mon, 6 May 2019 06:57:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 89674206A3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hNXYv-0002c9-1C; Mon, 06 May 2019 06:57:21 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hNXYl-0002FD-B7 for xen-devel@lists.xenproject.org; Mon, 06 May 2019 06:57:11 +0000 X-Inumbo-ID: 26ebd8d4-6fcc-11e9-9cee-1bf5b8f7eaa9 Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 26ebd8d4-6fcc-11e9-9cee-1bf5b8f7eaa9; Mon, 06 May 2019 06:57:03 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 8B1B3AF3B; Mon, 6 May 2019 06:56:58 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Mon, 6 May 2019 08:56:35 +0200 Message-Id: <20190506065644.7415-37-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190506065644.7415-1-jgross@suse.com> References: <20190506065644.7415-1-jgross@suse.com> Subject: [Xen-devel] [PATCH RFC V2 36/45] x86: make loading of GDT at context switch more modular X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Andrew Cooper , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190506065635.PFjYHcP__0FobHzGS2KIOXAvbDOXXvSKBHCfCzQ9S8Y@z> SW4gcHJlcGFyYXRpb24gZm9yIGNvcmUgc2NoZWR1bGluZyBjYXJ2ZSBvdXQgdGhlIEdEVCByZWxh dGVkCmZ1bmN0aW9uYWxpdHkgKHdyaXRpbmcgR0RUIHJlbGF0ZWQgUFRFcywgbG9hZGluZyBkZWZh dWx0IG9mIGZ1bGwgR0RUKQppbnRvIHN1Yi1mdW5jdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBKdWVy Z2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0tLQpSRkMgVjI6IHNwbGl0IG9mZiBub24tcmVm YWN0b3JpbmcgcGFydAotLS0KIHhlbi9hcmNoL3g4Ni9kb21haW4uYyB8IDU3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDM1IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwppbmRleCAxNTI1Y2NkOGU1Li43 MmEzNjVmZjZhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMKKysrIGIveGVuL2Fy Y2gveDg2L2RvbWFpbi5jCkBAIC0xNjE5LDYgKzE2MTksMzcgQEAgc3RhdGljIGlubGluZSBib29s IG5lZWRfZnVsbF9nZHQoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4gaXNfcHZf ZG9tYWluKGQpICYmICFpc19pZGxlX2RvbWFpbihkKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lk IHdyaXRlX2Z1bGxfZ2R0X3B0ZXMoc2VnX2Rlc2NfdCAqZ2R0LCBzdHJ1Y3QgdmNwdSAqdikKK3sK KyAgICB1bnNpZ25lZCBsb25nIG1mbiA9IHZpcnRfdG9fbWZuKGdkdCk7CisgICAgbDFfcGdlbnRy eV90ICpwbDFlID0gcHZfZ2R0X3B0ZXModik7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBm b3IgKCBpID0gMDsgaSA8IE5SX1JFU0VSVkVEX0dEVF9QQUdFUzsgaSsrICkKKyAgICAgICAgbDFl X3dyaXRlKHBsMWUgKyBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSArIGksCisgICAgICAgICAgICAg ICAgICBsMWVfZnJvbV9wZm4obWZuICsgaSwgX19QQUdFX0hZUEVSVklTT1JfUlcpKTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGxvYWRfZnVsbF9nZHQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVk IGludCBjcHUpCit7CisgICAgc3RydWN0IGRlc2NfcHRyIGdkdF9kZXNjOworCisgICAgZ2R0X2Rl c2MubGltaXQgPSBMQVNUX1JFU0VSVkVEX0dEVF9CWVRFOworICAgIGdkdF9kZXNjLmJhc2UgPSBH RFRfVklSVF9TVEFSVCh2KTsKKworICAgIGxnZHQoJmdkdF9kZXNjKTsKK30KKworc3RhdGljIGlu bGluZSB2b2lkIGxvYWRfZGVmYXVsdF9nZHQoc2VnX2Rlc2NfdCAqZ2R0LCB1bnNpZ25lZCBpbnQg Y3B1KQoreworICAgIHN0cnVjdCBkZXNjX3B0ciBnZHRfZGVzYzsKKworICAgIGdkdF9kZXNjLmxp bWl0ID0gTEFTVF9SRVNFUlZFRF9HRFRfQllURTsKKyAgICBnZHRfZGVzYy5iYXNlICA9ICh1bnNp Z25lZCBsb25nKShnZHQgLSBGSVJTVF9SRVNFUlZFRF9HRFRfRU5UUlkpOworCisgICAgbGdkdCgm Z2R0X2Rlc2MpOworfQorCiBzdGF0aWMgdm9pZCBfX2NvbnRleHRfc3dpdGNoKHZvaWQpCiB7CiAg ICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnN0YWNrX3JlZ3MgPSBndWVzdF9jcHVfdXNlcl9yZWdz KCk7CkBAIC0xNjI3LDcgKzE2NTgsNiBAQCBzdGF0aWMgdm9pZCBfX2NvbnRleHRfc3dpdGNoKHZv aWQpCiAgICAgc3RydWN0IHZjcHUgICAgICAgICAgKm4gPSBjdXJyZW50OwogICAgIHN0cnVjdCBk b21haW4gICAgICAgICpwZCA9IHAtPmRvbWFpbiwgKm5kID0gbi0+ZG9tYWluOwogICAgIHNlZ19k ZXNjX3QgICAgICAgICAgICpnZHQ7Ci0gICAgc3RydWN0IGRlc2NfcHRyICAgICAgIGdkdF9kZXNj OwogCiAgICAgQVNTRVJUKHAgIT0gbik7CiAgICAgQVNTRVJUKCF2Y3B1X2NwdV9kaXJ0eShuKSk7 CkBAIC0xNjY5LDI1ICsxNjk5LDEzIEBAIHN0YXRpYyB2b2lkIF9fY29udGV4dF9zd2l0Y2godm9p ZCkKIAogICAgIGdkdCA9ICFpc19wdl8zMmJpdF9kb21haW4obmQpID8gcGVyX2NwdShnZHRfdGFi bGUsIGNwdSkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyX2NwdShj b21wYXRfZ2R0X3RhYmxlLCBjcHUpOwotICAgIGlmICggbmVlZF9mdWxsX2dkdChuZCkgKQotICAg IHsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSB2aXJ0X3RvX21mbihnZHQpOwotICAgICAg ICBsMV9wZ2VudHJ5X3QgKnBsMWUgPSBwdl9nZHRfcHRlcyhuKTsKLSAgICAgICAgdW5zaWduZWQg aW50IGk7CiAKLSAgICAgICAgZm9yICggaSA9IDA7IGkgPCBOUl9SRVNFUlZFRF9HRFRfUEFHRVM7 IGkrKyApCi0gICAgICAgICAgICBsMWVfd3JpdGUocGwxZSArIEZJUlNUX1JFU0VSVkVEX0dEVF9Q QUdFICsgaSwKLSAgICAgICAgICAgICAgICAgICAgICBsMWVfZnJvbV9wZm4obWZuICsgaSwgX19Q QUdFX0hZUEVSVklTT1JfUlcpKTsKLSAgICB9CisgICAgaWYgKCBuZWVkX2Z1bGxfZ2R0KG5kKSAp CisgICAgICAgIHdyaXRlX2Z1bGxfZ2R0X3B0ZXMoZ2R0LCBuKTsKIAogICAgIGlmICggbmVlZF9m dWxsX2dkdChwZCkgJiYKICAgICAgICAgICgocC0+dmNwdV9pZCAhPSBuLT52Y3B1X2lkKSB8fCAh bmVlZF9mdWxsX2dkdChuZCkpICkKLSAgICB7Ci0gICAgICAgIGdkdF9kZXNjLmxpbWl0ID0gTEFT VF9SRVNFUlZFRF9HRFRfQllURTsKLSAgICAgICAgZ2R0X2Rlc2MuYmFzZSAgPSAodW5zaWduZWQg bG9uZykoZ2R0IC0gRklSU1RfUkVTRVJWRURfR0RUX0VOVFJZKTsKLQotICAgICAgICBsZ2R0KCZn ZHRfZGVzYyk7Ci0gICAgfQorICAgICAgICBsb2FkX2RlZmF1bHRfZ2R0KGdkdCwgY3B1KTsKIAog ICAgIHdyaXRlX3B0YmFzZShuKTsKIApAQCAtMTcwMCwxMiArMTcxOCw3IEBAIHN0YXRpYyB2b2lk IF9fY29udGV4dF9zd2l0Y2godm9pZCkKIAogICAgIGlmICggbmVlZF9mdWxsX2dkdChuZCkgJiYK ICAgICAgICAgICgocC0+dmNwdV9pZCAhPSBuLT52Y3B1X2lkKSB8fCAhbmVlZF9mdWxsX2dkdChw ZCkpICkKLSAgICB7Ci0gICAgICAgIGdkdF9kZXNjLmxpbWl0ID0gTEFTVF9SRVNFUlZFRF9HRFRf QllURTsKLSAgICAgICAgZ2R0X2Rlc2MuYmFzZSA9IEdEVF9WSVJUX1NUQVJUKG4pOwotCi0gICAg ICAgIGxnZHQoJmdkdF9kZXNjKTsKLSAgICB9CisgICAgICAgIGxvYWRfZnVsbF9nZHQobiwgY3B1 KTsKIAogICAgIGlmICggcGQgIT0gbmQgKQogICAgICAgICBjcHVtYXNrX2NsZWFyX2NwdShjcHUs IHBkLT5kaXJ0eV9jcHVtYXNrKTsKLS0gCjIuMTYuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=