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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 8F8E8CCD183 for ; Thu, 16 Oct 2025 09:10:21 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v9Jyb-0004Aa-PW; Thu, 16 Oct 2025 05:08:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v9JyY-0004A2-0T for grub-devel@gnu.org; Thu, 16 Oct 2025 05:08:46 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v9JyS-00076X-MG for grub-devel@gnu.org; Thu, 16 Oct 2025 05:08:45 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3ee12a63af1so327143f8f.1 for ; Thu, 16 Oct 2025 02:08:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1760605718; x=1761210518; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7UveXkwifbSUazw0HgM8NGdDki0GUJvxAXXIykpQ3lA=; b=BpeHZyCFhJ5XLbY+QGQ5OhSGPviGJYBM9e/YHogFwOhqlDjneBwrs41aQAqMpLYsa5 kEmPNYCPTEY/xUsy7l//2b6l+8xijXT9StnyIo4VkXdw48IlOZKKQ3sYmiqL2xX6YAgZ Vn1y25VI9oh2Dan1iUS6Usktwis3XkUMNh1hwQOMIEtdcXsd+i47Yp5FcrAH/5CFA49f XwDHzFqWIxT8PMtCAabXUJehSZIoSs4YV58S6V15aliv5Pob4TpQyUfhafMcpbtCXDpQ GNgsRpKw7lupqbQKJVI5MIj4iqcJ0XuwJ6TKSKDBpH3IULkB99ZxF0xmQ2kLybBEL5en Mbww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760605718; x=1761210518; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7UveXkwifbSUazw0HgM8NGdDki0GUJvxAXXIykpQ3lA=; b=Uf/qExgRrqN2+d3OyNCg1bcHiZnRmnbsV8xv8Lt9fkalFRPEdAU6N3oSgni/VLoNTn DXsWZmA96ngI2pGV/emOkeY3zmMgc1srdf5XuM8+JiYsaW9P1s0gTk3YdNLT0Mg/IkUh yP6v2XV9wuM1p31r/3y3NJfSrlq3IdGnI/dicHEEgjQXwBz7DA4XGKuWpQEc8jdfO1Jq tZl4IyWIucsrLJwcme7zVU76IyLMpfe+H2qebXd8geFudlffHjhi7i2yis2qdyGnxGnz /S57qFs2d3vuzulxC7z1do5m7mX8cDAJnJMMhlwTx/8SfTeSa5wUKRTisa2Ge3/nYQeC VVXw== X-Gm-Message-State: AOJu0YzJ2VTkoRBW4WAR7IpW04AaamB2VxwHDie5Ud9cQ9yoacoxS1Pr 72eCrTho6kIm0fZCm/ErSAuTABNlJJgyi9k5jCEwYRYIvsnMxC8E5+cbP7/Crguvr38266ViioL sVb/c X-Gm-Gg: ASbGnct8qTsBoveOrXYPeqTcN0SdifQ4TTDdzYK+i5I5RJL9hZDU6g0bbsXWnKJWdvq 43hZFRL4Kmg0gJM/mqJVZApxZxMU1UueNqIjtzPbzXjBNYTwwPS5ktfuT+7vmQLcXGKxDRNvUIX YEvkfA4VzKmixqLJqo4VXHQyGHzBc4sX/Cl7Zc45M0VliMLPHHqxhVDYE2AtTJrvCAiimuvI8Jw aTnCCV+zY28hot7Mnm2Y4PNwSaYxLINNMqxEmRVIh9XfTIeieIUN5fYY1qb9e4DbYurCIe1ThM+ Or6AR54Oc07AxoIIm81WIvxFsTGKv4HtEGZfEqLD/B3ePssdfpvhi3Hbp8FT+87nJJIZ/E2NQiv rq5C7HafLonIyKcqCQC00a1C9GTrRGJvWFJkdm4wZm1VoxdzBO45mUgJN4CuLxdkhKbbPl/qsP1 L6unWu0ZFLn90myXaNWyJgVQxUEorbZE7TARrK95JNpX/wYMkS1kc= X-Google-Smtp-Source: AGHT+IGtw1qNvrwVTyJEeIQLPgeUzJoNom1lSITGVoFFniX37wmCondGbK+P0uOUt0KkvTal1wUV5w== X-Received: by 2002:a05:6000:41d1:b0:400:6e06:e0ae with SMTP id ffacd0b85a97d-4266e8ddf1bmr21925727f8f.47.1760605717787; Thu, 16 Oct 2025 02:08:37 -0700 (PDT) Received: from localhost (111-240-155-173.dynamic-ip.hinet.net. [111.240.155.173]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-7992d09ace5sm21657655b3a.53.2025.10.16.02.08.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Oct 2025 02:08:37 -0700 (PDT) To: The development of GNU GRUB Subject: [PATCH v2 03/10] lib/hwfeatures-gcry: Enable SSE and AVX for x86_64 EFI Date: Thu, 16 Oct 2025 17:08:19 +0800 Message-ID: <20251016090826.14983-4-glin@suse.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251016090826.14983-1-glin@suse.com> References: <20251016090826.14983-1-glin@suse.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::436; envelope-from=glin@suse.com; helo=mail-wr1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Gary Lin via Grub-devel Reply-To: The development of GNU GRUB Cc: Gary Lin , Daniel Kiper , Vladimir 'phcoder' Serbinenko , Glenn Washburn , Michael Chang Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org SW1wbGVtZW50IHRoZSBuZWNlc3NhcnkgZnVuY3Rpb25zIHRvIGR5bmFtaWNhbGx5IGVuYWJsZSBT U0UgYW5kIEFWWApvbiB4ODZfNjQgRUZJIHN5c3RlbXMgd2hlbiB0aGUgaGFyZHdhcmUgaXMgY2Fw YWJsZS4KClNpZ25lZC1vZmYtYnk6IEdhcnkgTGluIDxnbGluQHN1c2UuY29tPgpSZXZpZXdlZC1i eTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KLS0tCiBncnViLWNvcmUv TWFrZWZpbGUuY29yZS5kZWYgICAgICAgICAgICAgICAgfCAgIDEgKwogZ3J1Yi1jb3JlL2xpYi9o d2ZlYXR1cmVzLWdjcnkuYyAgICAgICAgICAgIHwgICA5ICsKIGdydWItY29yZS9saWIveDg2XzY0 L2VmaS9od2ZlYXR1cmVzLWdjcnkuYyB8IDI0NiArKysrKysrKysrKysrKysrKysrKysKIGluY2x1 ZGUvZ3J1Yi94ODZfNjQvY3B1aWQuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBpbmNsdWRlL2dy dWIveDg2XzY0L2VmaS9od2ZlYXR1cmVzLWdjcnkuaCAgfCAgMjUgKysrCiA1IGZpbGVzIGNoYW5n ZWQsIDI4MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1Yi1jb3JlL2xpYi94 ODZfNjQvZWZpL2h3ZmVhdHVyZXMtZ2NyeS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9n cnViL3g4Nl82NC9jcHVpZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ncnViL3g4Nl82 NC9lZmkvaHdmZWF0dXJlcy1nY3J5LmgKCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvTWFrZWZpbGUu Y29yZS5kZWYgYi9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKaW5kZXggMzE3M2U2NmJlLi4z ZDRiMWEzYjQgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZgorKysgYi9n cnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKQEAgLTE3MjEsNiArMTcyMSw3IEBAIG1vZHVsZSA9 IHsKICAgbmFtZSA9IGNyeXB0bzsKICAgY29tbW9uID0gbGliL2NyeXB0by5jOwogICBjb21tb24g PSBsaWIvaHdmZWF0dXJlcy1nY3J5LmM7CisgIHg4Nl82NF9lZmkgPSBsaWIveDg2XzY0L2VmaS9o d2ZlYXR1cmVzLWdjcnkuYzsKIAogICBleHRyYV9kaXN0ID0gbGliL2xpYmdjcnlwdC1ncnViL2Np cGhlci9jcnlwdG8ubHN0OwogfTsKZGlmZiAtLWdpdCBhL2dydWItY29yZS9saWIvaHdmZWF0dXJl cy1nY3J5LmMgYi9ncnViLWNvcmUvbGliL2h3ZmVhdHVyZXMtZ2NyeS5jCmluZGV4IDY1MmU2N2M0 My4uYWNmYTdiZTMzIDEwMDY0NAotLS0gYS9ncnViLWNvcmUvbGliL2h3ZmVhdHVyZXMtZ2NyeS5j CisrKyBiL2dydWItY29yZS9saWIvaHdmZWF0dXJlcy1nY3J5LmMKQEAgLTE5LDYgKzE5LDkgQEAK ICNpbmNsdWRlIDxncnViL2RsLmg+CiAKICNpbmNsdWRlIDxncnViL2h3ZmVhdHVyZXMtZ2NyeS5o PgorI2lmIGRlZmluZWQgKF9feDg2XzY0X18pICYmIGRlZmluZWQgKEdSVUJfTUFDSElORV9FRkkp CisjaW5jbHVkZSA8Z3J1Yi94ODZfNjQvZWZpL2h3ZmVhdHVyZXMtZ2NyeS5oPgorI2VuZGlmCiAK IEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsKIApAQCAtMzMsMTEgKzM2LDE3IEBAIGdydWJf Z2NyeV9od2ZfZW5hYmxlZCAodm9pZCkKIHZvaWQKIGdydWJfZW5hYmxlX2djcnlfaHdmICh2b2lk KQogeworI2lmIGRlZmluZWQgKF9feDg2XzY0X18pICYmIGRlZmluZWQgKEdSVUJfTUFDSElORV9F RkkpCisgIGdydWJfZW5hYmxlX2djcnlfaHdmX3g4Nl82NF9lZmkgKCk7CisjZW5kaWYKICAgX19n Y3J5X3VzZV9od2YgPSB0cnVlOwogfQogCiB2b2lkCiBncnViX3Jlc2V0X2djcnlfaHdmICh2b2lk KQogeworI2lmIGRlZmluZWQgKF9feDg2XzY0X18pICYmIGRlZmluZWQgKEdSVUJfTUFDSElORV9F RkkpCisgIGdydWJfcmVzZXRfZ2NyeV9od2ZfeDg2XzY0X2VmaSAoKTsKKyNlbmRpZgogICBfX2dj cnlfdXNlX2h3ZiA9IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi94ODZfNjQv ZWZpL2h3ZmVhdHVyZXMtZ2NyeS5jIGIvZ3J1Yi1jb3JlL2xpYi94ODZfNjQvZWZpL2h3ZmVhdHVy ZXMtZ2NyeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMjZjYjBmNTEy Ci0tLSAvZGV2L251bGwKKysrIGIvZ3J1Yi1jb3JlL2xpYi94ODZfNjQvZWZpL2h3ZmVhdHVyZXMt Z2NyeS5jCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogIEdSVUIgIC0tICBHUmFuZCBVbmlmaWVk IEJvb3Rsb2FkZXIKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjUgIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorICoKKyAqICBHUlVCIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisg KiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgR1JVQiBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCBHUlVCLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxncnViL3R5 cGVzLmg+CisjaW5jbHVkZSA8Z3J1Yi94ODZfNjQvZWZpL2h3ZmVhdHVyZXMtZ2NyeS5oPgorI2lu Y2x1ZGUgPGdydWIveDg2XzY0L2NwdWlkLmg+CisjaW5jbHVkZSA8Z3J1Yi9taXNjLmg+CisKKy8q CisgKiBPbGRlciB2ZXJzaW9ucyBvZiBHQ0MgbWF5IHJlb3JkZXIgdGhlIGlubGluZSBhc20sIHdo aWNoIGNhbiBsZWFkIHRvCisgKiB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gcmVhZGluZyB0aGUg Q29udHJvbCBSZWdpc3RlcnMuIFRoZSBfX0ZPUkNFX09SREVSCisgKiBtYWNybyBpcyB1c2VkIHRv IHByZXZlbnQgdGhpcy4KKyAqCisgKiBSZWY6IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj bS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC9jb21taXQvP2lkPWFhNWNhY2Rj MjlkNzZhMDA1Y2JiZWUwMThhNDdmYWE2ZTcyNGRkMmQKKyAqLworI2RlZmluZSBfX0ZPUkNFX09S REVSICJtIigqKHVuc2lnbmVkIGludCAqKSAweDEwMDBVTCkKKworI2RlZmluZSBIV19GRUFUVVJF X1g4Nl82NF9TU0UgKDEgPDwgMCkKKyNkZWZpbmUgSFdfRkVBVFVSRV9YODZfNjRfQVZYICgxIDw8 IDEpCisKK3N0YXRpYyBncnViX3VpbnQzMl90IGh3X2ZlYXR1cmVzID0gMDsKK3N0YXRpYyBncnVi X3VpbnQ2NF90IG9sZF9jcjAsIG9sZF9jcjQsIG9sZF94Y3IwOworCitzdGF0aWMgaW5saW5lIGdy dWJfdWludDY0X3QKK3JlYWRfY3IwICh2b2lkKQoreworICBncnViX3VpbnQ2NF90IHZhbDsKKwor ICBhc20gdm9sYXRpbGUgKCJtb3YgJSVjcjAsICUwIiA6ICI9ciIgKHZhbCkgOiBfX0ZPUkNFX09S REVSKTsKKyAgcmV0dXJuIHZhbDsKK30KKworc3RhdGljIGlubGluZSBncnViX3VpbnQ2NF90City ZWFkX2NyNCAodm9pZCkKK3sKKyAgZ3J1Yl91aW50NjRfdCB2YWw7CisKKyAgYXNtIHZvbGF0aWxl ICgibW92ICUlY3I0LCUwIiA6ICI9ciIgKHZhbCkgOiBfX0ZPUkNFX09SREVSKTsKKyAgcmV0dXJu IHZhbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit3cml0ZV9jcjAgKGdydWJfdWludDY0X3Qg dmFsKQoreworICBhc20gdm9sYXRpbGUgKCJtb3YgJTAsJSVjcjQiOiAiK3IiICh2YWwpIDogOiAi bWVtb3J5Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAord3JpdGVfY3I0IChncnViX3VpbnQ2 NF90IHZhbCkKK3sKKyAgYXNtIHZvbGF0aWxlICgibW92ICUwLCUlY3I0IjogIityIiAodmFsKSA6 IDogIm1lbW9yeSIpOworfQorCitzdGF0aWMgZ3J1Yl91aW50MzJfdAorZ2V0X2NwdWlkX2VjeCAo dm9pZCkKK3sKKyAgZ3J1Yl91aW50MzJfdCBlYXgsIGVieCwgZWN4LCBlZHg7CisKKyAgZ3J1Yl9j cHVpZCAoMSwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKworICByZXR1cm4gZWN4OworfQorCitzdGF0 aWMgZ3J1Yl91aW50MzJfdAorZ2V0X2NwdWlkX2VkeCAodm9pZCkKK3sKKyAgZ3J1Yl91aW50MzJf dCBlYXgsIGVieCwgZWN4LCBlZHg7CisKKyAgZ3J1Yl9jcHVpZCAoMSwgZWF4LCBlYngsIGVjeCwg ZWR4KTsKKworICByZXR1cm4gZWR4OworfQorCitzdGF0aWMgYm9vbAorZW5hYmxlX3NzZSAodm9p ZCkKK3sKKyAgZ3J1Yl91aW50NjRfdCBjcjAsIGNyNDsKKyAgZ3J1Yl91aW50MzJfdCBlZHg7CisK KyAgZWR4ID0gZ2V0X2NwdWlkX2VkeCAoKTsKKworICAvKiBDaGVjayBDUFVJRC4wMUg6RURYLkZY U1JbYml0IDI0XSBhbmQgQ1BVSUQuMDFIOkVEWC5TU0VbYml0IDI1XSAqLworICBpZiAoKGVkeCAm ICgzIDw8IDI0KSkgIT0gKDMgPDwgMjQpKQorICAgIHJldHVybiBmYWxzZTsKKworICBjcjAgPSBv bGRfY3IwID0gcmVhZF9jcjAgKCk7CisgIGNyNCA9IG9sZF9jcjQgPSByZWFkX2NyNCAoKTsKKwor ICAvKiBjbGVhciBDUjAuRU1bYml0IDJdICovCisgIGlmICgoY3IwICYgKDEgPDwgMikpICE9IDAp CisgICAgY3IwICY9IH4oMSA8PCAyKTsKKworICAvKiBTZXQgQ1IwLk1QW2JpdCAxXSAqLworICBp ZiAoKGNyMCAmICgxIDw8IDEpKSA9PSAwKQorICAgIGNyMCB8PSAoMSA8PCAxKTsKKworICBncnVi X2RwcmludGYgKCJod2ZlYXR1cmVzIiwgIkNSMDogMHglIlBSSXhHUlVCX1VJTlQ2NF9UIiAweCUi UFJJeEdSVUJfVUlOVDY0X1QiXG4iLCBvbGRfY3IwLCBjcjApOworICBpZiAob2xkX2NyMCAhPSBj cjApCisgICAgd3JpdGVfY3IwIChjcjApOworCisgIC8qIFNldCBDUjQuT1NGWFNSW2JpdCA5XSBh bmQgQ1I0Lk9TWE1NRVhDUFRbYml0IDEwXSAqLworICBpZiAoKGNyNCAmICgzIDw8IDkpKSAhPSAo MyA8PCA5KSkKKyAgICBjcjQgfD0gKDMgPDwgOSk7CisKKyAgZ3J1Yl9kcHJpbnRmICgiaHdmZWF0 dXJlcyIsICJDUjQ6IDB4JSJQUkl4R1JVQl9VSU5UNjRfVCIgMHglIlBSSXhHUlVCX1VJTlQ2NF9U IlxuIiwgb2xkX2NyNCwgY3I0KTsKKyAgaWYgKG9sZF9jcjQgIT0gY3I0KQorICAgIHdyaXRlX2Ny NCAoY3I0KTsKKworICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBncnViX3VpbnQ2 NF90Cit4Z2V0YnYgKGdydWJfdWludDMyX3QgaW5kZXgpCit7CisgIGdydWJfdWludDMyX3QgZWF4 LCBlZHg7CisKKyAgYXNtIHZvbGF0aWxlICgieGdldGJ2IiA6ICI9YSIgKGVheCksICI9ZCIgKGVk eCkgOiAiYyIgKGluZGV4KSk7CisKKyAgcmV0dXJuIGVheCArICgoZ3J1Yl91aW50NjRfdCllZHgg PDwgMzIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3hzZXRidiAoZ3J1Yl91aW50MzJfdCBp bmRleCwgZ3J1Yl91aW50NjRfdCB2YWx1ZSkKK3sKKyAgZ3J1Yl91aW50MzJfdCBlYXggPSAoZ3J1 Yl91aW50MzJfdCl2YWx1ZTsKKyAgZ3J1Yl91aW50MzJfdCBlZHggPSAoZ3J1Yl91aW50MzJfdCko dmFsdWUgPj4gMzIpOworCisgIGFzbSB2b2xhdGlsZSAoInhzZXRidiIgOjogImEiIChlYXgpLCAi ZCIgKGVkeCksICJjIiAoaW5kZXgpKTsKK30KKworc3RhdGljIGJvb2wKK2VuYWJsZV9hdnggKHZv aWQpCit7CisgIGdydWJfdWludDY0X3QgY3I0OworICBncnViX3VpbnQzMl90IGVjeDsKKyAgZ3J1 Yl91aW50NjRfdCBzc2VfYXZ4X21hc2sgPSAoMSA8PCAyKSB8ICgxIDw8IDEpOworICBncnViX3Vp bnQ2NF90IHhjcjA7CisKKyAgZWN4ID0gZ2V0X2NwdWlkX2VjeCAoKTsKKworICAvKiBDaGVjayB0 aGUgZm9sbG93aW5nIHR3byBiaXRzCisgICAqIC0gIENQVUlELjAxSDpFQ1guWFNBVkVbYml0IDI2 XQorICAgKiAgICBJZiBYU0FWRSBpcyBub3Qgc3VwcG9ydGVkLCBzZXR0aW5nIENSNC5PU1hTQVZF IHdpbGwgY2F1c2UKKyAgICogICAgZ2VuZXJhbC1wcm90ZWN0aW9uIGZhdWx0ICgjR1ApLgorICAg KiAtIENQVUlELjAxSDpFQ1guQVZYW2JpdCAyOF0KKyAgICovCisgIGdydWJfZHByaW50ZiAoImh3 ZmVhdHVyZXMiLCAiQ2hlY2sgQ1BVSUQuMDFIOkVDWCAweCUiUFJJdUdSVUJfVUlOVDMyX1QiXG4i LCBlY3gpOworICBpZiAoKGVjeCAmICg1IDw8IDI2KSkgIT0gKDUgPDwgMjYpKQorICAgIHJldHVy biBmYWxzZTsKKworICBjcjQgPSByZWFkX2NyNCAoKTsKKworICAvKiBTZXQgQ1I0Lk9TWFNBVkVb Yml0IDE4XSAqLworICBpZiAoKGNyNCAmICgxIDw8IDE4KSkgPT0gMCkKKyAgICB7CisgICAgICBn cnViX2RwcmludGYgKCJod2ZlYXR1cmVzIiwgIlNldCBDUjQuT1NYU0FWRVxuIik7CisgICAgICBj cjQgfD0gMSA8PCAxODsKKyAgICAgIHdyaXRlX2NyNCAoY3I0KTsKKyAgICB9CisKKyAgZWN4ID0g Z2V0X2NwdWlkX2VjeCAoKTsKKworICAvKiBDaGVjayBDUFVJRC4wMUg6RUNYLk9TWFNBVkVbYml0 IDI3XSAqLworICBpZiAoKGVjeCAmICgxIDw8IDI3KSkgPT0gMCkKKyAgICByZXR1cm4gZmFsc2U7 CisKKyAgeGNyMCA9IG9sZF94Y3IwID0geGdldGJ2ICgwKTsKKworICAvKiBTZXQgWENSMFtiaXQg MV0gYW5kIFhDUjBbYml0IDJdIHRvIGVuYWJsZSBTU0UvQVZYICovCisgIGlmICgoeGNyMCAmIHNz ZV9hdnhfbWFzaykgIT0gc3NlX2F2eF9tYXNrKQorICAgIHsKKyAgICAgIGdydWJfZHByaW50ZiAo Imh3ZmVhdHVyZXMiLCAiU2V0IFhDUjBbMjoxXSB0byAxMWJcbiIpOworICAgICAgeGNyMCB8PSBz c2VfYXZ4X21hc2s7CisgICAgICB4c2V0YnYgKDAsIHhjcjApOworICAgIH0KKworICByZXR1cm4g dHJ1ZTsKK30KKwordm9pZAorZ3J1Yl9lbmFibGVfZ2NyeV9od2ZfeDg2XzY0X2VmaSAodm9pZCkK K3sKKyAgaWYgKGVuYWJsZV9zc2UgKCkgPT0gdHJ1ZSkKKyAgICBod19mZWF0dXJlcyB8PSBIV19G RUFUVVJFX1g4Nl82NF9TU0U7CisKKyAgaWYgKGVuYWJsZV9hdnggKCkgPT0gdHJ1ZSkKKyAgICBo d19mZWF0dXJlcyB8PSBIV19GRUFUVVJFX1g4Nl82NF9BVlg7Cit9CisKK3ZvaWQKK2dydWJfcmVz ZXRfZ2NyeV9od2ZfeDg2XzY0X2VmaSAodm9pZCkKK3sKKyAgZ3J1Yl91aW50NjRfdCBjcjAsIGNy NCwgeGNyMDsKKworICBpZiAoKGh3X2ZlYXR1cmVzICYgSFdfRkVBVFVSRV9YODZfNjRfQVZYKSAh PSAwKQorICAgIHsKKyAgICAgIHhjcjAgPSB4Z2V0YnYgKDApOworICAgICAgaWYgKHhjcjAgIT0g b2xkX3hjcjApCisJeworCSAgLyoKKwkgICAqIFJlc2V0IHRoZSBBVlggc3RhdGUgd2l0aCAndnpl cm91cHBlcicgYmVmb3JlIGNsZWFyaW5nIFhDUjBbYml0IDJdLgorCSAgICoKKwkgICAqIFJlZjog SW50ZWwgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFu dWFsCisJICAgKiAgICAgIC0gMTMuMyBFTkFCTElORyBUSEUgWFNBVkUgRkVBVFVSRSBTRVQgQU5E IFhTQVZFLUVOQUJMRUQgRkVBVFVSRVMKKwkgICAqCisJICAgKiAiQXMgbm90ZWQgaW4gU2VjdGlv biAxMy4xLCB0aGUgcHJvY2Vzc29yIHdpbGwgcHJlc2VydmUgQVZYIHN0YXRlCisJICAgKiAgdW5t b2RpZmllZCBpZiBzb2Z0d2FyZSBjbGVhcnMgWENSMFsyXS4gSG93ZXZlciwgY2xlYXJpbmcgWENS MFsyXQorCSAgICogIHdoaWxlIEFWWCBzdGF0ZSBpcyBub3QgaW4gaXRzIGluaXRpYWwgY29uZmln dXJhdGlvbiBtYXkgY2F1c2UgU1NFCisJICAgKiAgaW5zdHJ1Y3Rpb25zIHRvIGluY3VyIGEgcG93 ZXIgYW5kIHBlcmZvcm1hbmNlIHBlbmFsdHkuIgorCSAgICovCisJICBhc20gdm9sYXRpbGUgKCJ2 emVyb3VwcGVyIiA6OjogIm1lbW9yeSIpOworCSAgeHNldGJ2ICgwLCBvbGRfeGNyMCk7CisJfQor ICAgIH0KKworICBpZiAoKGh3X2ZlYXR1cmVzICYgSFdfRkVBVFVSRV9YODZfNjRfQVZYKSAhPSAw IHx8IChod19mZWF0dXJlcyAmIEhXX0ZFQVRVUkVfWDg2XzY0X1NTRSkgIT0gMCkKKyAgICB7Cisg ICAgICBjcjQgPSByZWFkX2NyNCAoKTsKKyAgICAgIGlmIChjcjQgIT0gb2xkX2NyNCkKKwl3cml0 ZV9jcjQgKG9sZF9jcjQpOworICAgIH0KKworICBpZiAoKGh3X2ZlYXR1cmVzICYgSFdfRkVBVFVS RV9YODZfNjRfU1NFKSAhPSAwKQorICAgIHsKKyAgICAgIGNyMCA9IHJlYWRfY3IwICgpOworICAg ICAgaWYgKGNyMCAhPSBvbGRfY3IwKQorCXdyaXRlX2NyMCAob2xkX2NyMCk7CisgICAgfQorCisg IGh3X2ZlYXR1cmVzID0gMDsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi94ODZfNjQvY3B1 aWQuaCBiL2luY2x1ZGUvZ3J1Yi94ODZfNjQvY3B1aWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAuLmFjZDkzZTNhNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZ3J1 Yi94ODZfNjQvY3B1aWQuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8Z3J1Yi9pMzg2L2NwdWlk Lmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIveDg2XzY0L2VmaS9od2ZlYXR1cmVzLWdjcnku aCBiL2luY2x1ZGUvZ3J1Yi94ODZfNjQvZWZpL2h3ZmVhdHVyZXMtZ2NyeS5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYThlNjcxMDU4Ci0tLSAvZGV2L251bGwKKysrIGIv aW5jbHVkZS9ncnViL3g4Nl82NC9lZmkvaHdmZWF0dXJlcy1nY3J5LmgKQEAgLTAsMCArMSwyNSBA QAorLyoKKyAqICBHUlVCICAtLSAgR1JhbmQgVW5pZmllZCBCb290bG9hZGVyCisgKiAgQ29weXJp Z2h0IChDKSAyMDI1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAqCisgKiAgR1JV QiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor ICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIEhXRl9HQ1JZX1g4Nl82NF9FRklfSEVBREVSCisjZGVm aW5lIEhXRl9HQ1JZX1g4Nl82NF9FRklfSEVBREVSIDEKKworZXh0ZXJuIHZvaWQgZ3J1Yl9lbmFi bGVfZ2NyeV9od2ZfeDg2XzY0X2VmaSAodm9pZCk7CitleHRlcm4gdm9pZCBncnViX3Jlc2V0X2dj cnlfaHdmX3g4Nl82NF9lZmkgKHZvaWQpOworCisjZW5kaWYgLyogSFdGX0dDUllfWDg2XzY0X0VG SV9IRUFERVIgKi8KLS0gCjIuNTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9y ZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==