Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nNcKx-0007Fb-KL for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Feb 2022 15:16:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nNcKQ-0008Sb-Go for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Feb 2022 15:16:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nNcKP-0008RC-SJ for pgsql-hackers@lists.postgresql.org; Fri, 25 Feb 2022 15:16:18 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nNcKM-0003nM-T7 for pgsql-hackers@lists.postgresql.org; Fri, 25 Feb 2022 15:16:16 +0000 Received: by mail-lf1-x130.google.com with SMTP id j7so9977705lfu.6 for ; Fri, 25 Feb 2022 07:16:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hagander-net.20210112.gappssmtp.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=W8FHHiWD4w5LBpiGYva3IiWuHkx64CVeYshhF9epZNo=; b=IKcIcZtX+8fN9pnZ+40JJxdB6XqyLjAmtbvmCIOgMLGAPYX8WdjX34+vccROKABUYn WzZEDuniYOziNREwiPgk72V4ekwYUt7ukJwK0d1FO6pYuVdJfmDfHCzxEcSEj84QMdSE 4OBcx5cCEdgq0/trMoAwkaygIM1JGXA26/ofiln5M8xN6JkxCbaKL/nD3XDfnVh3wVJ/ GwVbOjAYw4xMpbn8SAFTdNOQGodBvmNyrth+r+IYnwevrYUnYsCB4JIta+DK1bYsw2dD eWnDi3oiXwIKjqNN2vooKNKWREXRbxkIvE0/LMEFDNM6eFMYsO3BqB30gToKqrQVsZjs SzeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=W8FHHiWD4w5LBpiGYva3IiWuHkx64CVeYshhF9epZNo=; b=70g0p3tvbVkc614/jqRU+aCS9CbLV+g/IN4R8obwz7K5h32Yh40nxLvYJk9jUibQsU nluPW5uZVxoQqwmHiZXC/6lGMbD9V06FceIAGdBEF0ZaLO8Vs1J0yu61ZC64xd7NsFRt zCLB4LccWgnb69lQgCpU7H1MXGBy9+1bZxDRTQh6NGHpEJloeM0Q7+/QpNF5GZLesLAi wah2BoWU7S97ZNkyhIk9IiexBZ1EZmqn7pSZ/Ihd5H1MnY2YRiMvLFhY8A2cV0JeFglE BjCT4ckMsanbCC8kmOBc2c5B2C3AACQ7GqL3jA+SKxC7vJueKDOGgA4tROEpzRFhGHxY cLxg== X-Gm-Message-State: AOAM532Snv7POXsTkXF5sh/285r2wIWRIGLm51FvYtJoawjdWMCNxnNS lSm0snPwVgnTdPHwy5MmqET12OVXxboGF7vp0KZnE4VAlKc= X-Google-Smtp-Source: ABdhPJzHqLhrxKkmkn3HMPCXuJp6hVKj5xS4NZksDCs5jhZYuiM7/znRJ98prX1/FVTvsLFraZX4WWhiSaJALb8gxcQ= X-Received: by 2002:a19:9201:0:b0:443:c317:98ff with SMTP id u1-20020a199201000000b00443c31798ffmr5157431lfd.331.1645802172577; Fri, 25 Feb 2022 07:16:12 -0800 (PST) MIME-Version: 1.0 From: Magnus Hagander Date: Fri, 25 Feb 2022 16:16:01 +0100 Message-ID: Subject: Add parameter jit_warn_above_fraction To: PostgreSQL Developers Content-Type: multipart/mixed; boundary="000000000000de32b905d8d92d2b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000de32b905d8d92d2b Content-Type: text/plain; charset="UTF-8" This patch adds a configuration parameter jit_warn_above_fraction that will cause a warning to be logged if the fraction of time spent on doing JIT is bigger than the specified one. For example, this can be used to track down those cases where JIT ends up taking 90% of the query runtime because of bad estimates... -- Magnus Hagander Me: https://www.hagander.net/ Work: https://www.redpill-linpro.com/ --000000000000de32b905d8d92d2b Content-Type: text/x-patch; charset="US-ASCII"; name="jit_warn_above_fraction.patch" Content-Disposition: attachment; filename="jit_warn_above_fraction.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l02k2w8e0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCA3ZWQ4YzgyYTlkLi43YzNiYzU2MjI3IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC02NTky LDYgKzY1OTIsMjEgQEAgbG9jYWwwLiogICAgL3Zhci9sb2cvcG9zdGdyZXNxbAogICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9 Imd1Yy1qaXQtd2Fybi1hYm92ZS1mcmFjdGlvbiIgeHJlZmxhYmVsPSJqaXRfd2Fybl9hYm92ZV9m cmFjdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5qaXRfd2Fybl9hYm92ZV9mcmFjdGlvbjwv dmFybmFtZT4gKDx0eXBlPmZsb2F0aW5nIHBvaW50PC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+ CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+aml0X3dhcm5fYWJvdmVfZnJhY3Rpb248L3Zhcm5h bWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+ CisgICAgICA8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAg ICAgIENhdXNlcyBhIHdhcm5pbmcgdG8gYmUgd3JpdHRlbiB0byB0aGUgbG9nIGlmIHRoZSB0aW1l IHNwZW50IG9uIEpJVCAoc2VlIDx4cmVmIGxpbmtlbmQ9ImppdCIvPikKKyAgICAgICAgIGdvZXMg YWJvdmUgdGhpcyBmcmFjdGlvbiBvZiB0aGUgdG90YWwgcXVlcnkgcnVudGltZS4KKyAgICAgICAg IEEgdmFsdWUgb2YgMCAodGhlIGRlZmF1bHQpZGlzYWJsZXMgdGhlIHdhcm5pbmcuCisgICAgICAg IDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbG9nLXN0YXJ0dXAtcHJvZ3Jlc3MtaW50ZXJ2YWwiIHhy ZWZsYWJlbD0ibG9nX3N0YXJ0dXBfcHJvZ3Jlc3NfaW50ZXJ2YWwiPgogICAgICAgPHRlcm0+PHZh cm5hbWU+bG9nX3N0YXJ0dXBfcHJvZ3Jlc3NfaW50ZXJ2YWw8L3Zhcm5hbWU+ICg8dHlwZT5pbnRl Z2VyPC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90 Y29wL2Zhc3RwYXRoLmMgYi9zcmMvYmFja2VuZC90Y29wL2Zhc3RwYXRoLmMKaW5kZXggZDQyOWFh NDY2My4uYTFiZmY4OTNhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9mYXN0cGF0aC5j CisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvZmFzdHBhdGguYwpAQCAtMTk2LDYgKzE5Niw3IEBAIEhh bmRsZUZ1bmN0aW9uUmVxdWVzdChTdHJpbmdJbmZvIG1zZ0J1ZikKIAlzdHJ1Y3QgZnBfaW5mbyAq ZmlwOwogCWJvb2wJCWNhbGxpdDsKIAlib29sCQl3YXNfbG9nZ2VkID0gZmFsc2U7CisJaW50CQkJ bXNlY3M7CiAJY2hhcgkJbXNlY19zdHJbMzJdOwogCiAJLyoKQEAgLTMwNSw3ICszMDYsNyBAQCBI YW5kbGVGdW5jdGlvblJlcXVlc3QoU3RyaW5nSW5mbyBtc2dCdWYpCiAJLyoKIAkgKiBFbWl0IGR1 cmF0aW9uIGxvZ2dpbmcgaWYgYXBwcm9wcmlhdGUuCiAJICovCi0Jc3dpdGNoIChjaGVja19sb2df ZHVyYXRpb24obXNlY19zdHIsIHdhc19sb2dnZWQpKQorCXN3aXRjaCAoY2hlY2tfbG9nX2R1cmF0 aW9uKCZtc2VjcywgbXNlY19zdHIsIHdhc19sb2dnZWQpKQogCXsKIAkJY2FzZSAxOgogCQkJZXJl cG9ydChMT0csCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggM2M3ZDA4MjA5Zi4uYzA0ODdlYTY3ZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYwpAQCAtOTYxLDcgKzk2MSw5IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0 IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAlib29sCQlzYXZlX2xvZ19zdGF0ZW1lbnRfc3RhdHMgPSBs b2dfc3RhdGVtZW50X3N0YXRzOwogCWJvb2wJCXdhc19sb2dnZWQgPSBmYWxzZTsKIAlib29sCQl1 c2VfaW1wbGljaXRfYmxvY2s7CisJaW50CQkJbXNlY3M7CiAJY2hhcgkJbXNlY19zdHJbMzJdOwor CWludDY0CQlqaXRfdGltZSA9IDA7CiAKIAkvKgogCSAqIFJlcG9ydCBxdWVyeSB0byB2YXJpb3Vz IG1vbml0b3JpbmcgZmFjaWxpdGllcy4KQEAgLTEyMjAsNiArMTIyMiwxNiBAQCBleGVjX3NpbXBs ZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAKIAkJcmVjZWl2ZXItPnJEZXN0cm95 KHJlY2VpdmVyKTsKIAorCQkvKiBDb2xsZWN0IEpJVCB0aW1pbmdzIGluIGNhc2UgaXQncyBhY3Rp dmUgKi8KKwkJaWYgKGppdF9lbmFibGVkICYmIGppdF93YXJuX2Fib3ZlX2ZyYWN0aW9uID4gMCAm JiBwb3J0YWwtPnF1ZXJ5RGVzYyAmJiBwb3J0YWwtPnF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19qaXQp CisJCXsKKwkJCWppdF90aW1lICs9CisJCQkJSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocG9ydGFs LT5xdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ci5nZW5lcmF0aW9uX2NvdW50ZXIpICsK KwkJCQlJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhwb3J0YWwtPnF1ZXJ5RGVzYy0+ZXN0YXRlLT5l c19qaXQtPmluc3RyLmlubGluaW5nX2NvdW50ZXIpICsKKwkJCQlJTlNUUl9USU1FX0dFVF9NSUxM SVNFQyhwb3J0YWwtPnF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19qaXQtPmluc3RyLm9wdGltaXphdGlv bl9jb3VudGVyKSArCisJCQkJSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocG9ydGFsLT5xdWVyeURl c2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ci5lbWlzc2lvbl9jb3VudGVyKTsKKwkJfQorCiAJCVBv cnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CiAKIAkJaWYgKGxuZXh0KHBhcnNldHJlZV9saXN0LCBw YXJzZXRyZWVfaXRlbSkgPT0gTlVMTCkKQEAgLTEyOTAsNyArMTMwMiw3IEBAIGV4ZWNfc2ltcGxl X3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkvKgogCSAqIEVtaXQgZHVyYXRpb24g bG9nZ2luZyBpZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQlzd2l0Y2ggKGNoZWNrX2xvZ19kdXJhdGlv bihtc2VjX3N0ciwgd2FzX2xvZ2dlZCkpCisJc3dpdGNoIChjaGVja19sb2dfZHVyYXRpb24oJm1z ZWNzLCBtc2VjX3N0ciwgd2FzX2xvZ2dlZCkpCiAJewogCQljYXNlIDE6CiAJCQllcmVwb3J0KExP RywKQEAgLTEzMDYsNiArMTMxOCwxNiBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpx dWVyeV9zdHJpbmcpCiAJCQlicmVhazsKIAl9CiAKKwlpZiAoaml0X2VuYWJsZWQgJiYgaml0X3dh cm5fYWJvdmVfZnJhY3Rpb24gPiAwKQorCXsKKwkJaWYgKGppdF90aW1lID4gbXNlY3MgKiBqaXRf d2Fybl9hYm92ZV9mcmFjdGlvbikKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJy bXNnKCJKSVQgdGltZSB3YXMgJWxkIG1zIG9mICVkIG1zIiwKKwkJCQkJCQlqaXRfdGltZSwgbXNl Y3MpKSk7CisJCX0KKwl9CisKIAlpZiAoc2F2ZV9sb2dfc3RhdGVtZW50X3N0YXRzKQogCQlTaG93 VXNhZ2UoIlFVRVJZIFNUQVRJU1RJQ1MiKTsKIApAQCAtMTMzMyw2ICsxMzU1LDcgQEAgZXhlY19w YXJzZV9tZXNzYWdlKGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywJLyogc3RyaW5nIHRvIGV4ZWN1 dGUgKi8KIAlDYWNoZWRQbGFuU291cmNlICpwc3JjOwogCWJvb2wJCWlzX25hbWVkOwogCWJvb2wJ CXNhdmVfbG9nX3N0YXRlbWVudF9zdGF0cyA9IGxvZ19zdGF0ZW1lbnRfc3RhdHM7CisJaW50CQkJ bXNlY3M7CiAJY2hhcgkJbXNlY19zdHJbMzJdOwogCiAJLyoKQEAgLTE1NDgsNyArMTU3MSw3IEBA IGV4ZWNfcGFyc2VfbWVzc2FnZShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCS8qIHN0cmluZyB0 byBleGVjdXRlICovCiAJLyoKIAkgKiBFbWl0IGR1cmF0aW9uIGxvZ2dpbmcgaWYgYXBwcm9wcmlh dGUuCiAJICovCi0Jc3dpdGNoIChjaGVja19sb2dfZHVyYXRpb24obXNlY19zdHIsIGZhbHNlKSkK Kwlzd2l0Y2ggKGNoZWNrX2xvZ19kdXJhdGlvbigmbXNlY3MsIG1zZWNfc3RyLCBmYWxzZSkpCiAJ ewogCQljYXNlIDE6CiAJCQllcmVwb3J0KExPRywKQEAgLTE1OTUsNiArMTYxOCw3IEBAIGV4ZWNf YmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAlNZW1vcnlDb250ZXh0IG9s ZENvbnRleHQ7CiAJYm9vbAkJc2F2ZV9sb2dfc3RhdGVtZW50X3N0YXRzID0gbG9nX3N0YXRlbWVu dF9zdGF0czsKIAlib29sCQlzbmFwc2hvdF9zZXQgPSBmYWxzZTsKKwlpbnQJCQltc2VjczsKIAlj aGFyCQltc2VjX3N0clszMl07CiAJUGFyYW1zRXJyb3JDYkRhdGEgcGFyYW1zX2RhdGE7CiAJRXJy b3JDb250ZXh0Q2FsbGJhY2sgcGFyYW1zX2VycmN4dDsKQEAgLTIwMDcsNyArMjAzMSw3IEBAIGV4 ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkvKgogCSAqIEVtaXQg ZHVyYXRpb24gbG9nZ2luZyBpZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQlzd2l0Y2ggKGNoZWNrX2xv Z19kdXJhdGlvbihtc2VjX3N0ciwgZmFsc2UpKQorCXN3aXRjaCAoY2hlY2tfbG9nX2R1cmF0aW9u KCZtc2VjcywgbXNlY19zdHIsIGZhbHNlKSkKIAl7CiAJCWNhc2UgMToKIAkJCWVyZXBvcnQoTE9H LApAQCAtMjA1Myw2ICsyMDc3LDcgQEAgZXhlY19leGVjdXRlX21lc3NhZ2UoY29uc3QgY2hhciAq cG9ydGFsX25hbWUsIGxvbmcgbWF4X3Jvd3MpCiAJYm9vbAkJaXNfeGFjdF9jb21tYW5kOwogCWJv b2wJCWV4ZWN1dGVfaXNfZmV0Y2g7CiAJYm9vbAkJd2FzX2xvZ2dlZCA9IGZhbHNlOworCWludAkJ CW1zZWNzOwogCWNoYXIJCW1zZWNfc3RyWzMyXTsKIAlQYXJhbXNFcnJvckNiRGF0YSBwYXJhbXNf ZGF0YTsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBwYXJhbXNfZXJyY3h0OwpAQCAtMjI0NCw3ICsy MjY5LDcgQEAgZXhlY19leGVjdXRlX21lc3NhZ2UoY29uc3QgY2hhciAqcG9ydGFsX25hbWUsIGxv bmcgbWF4X3Jvd3MpCiAJLyoKIAkgKiBFbWl0IGR1cmF0aW9uIGxvZ2dpbmcgaWYgYXBwcm9wcmlh dGUuCiAJICovCi0Jc3dpdGNoIChjaGVja19sb2dfZHVyYXRpb24obXNlY19zdHIsIHdhc19sb2dn ZWQpKQorCXN3aXRjaCAoY2hlY2tfbG9nX2R1cmF0aW9uKCZtc2VjcywgbXNlY19zdHIsIHdhc19s b2dnZWQpKQogCXsKIAkJY2FzZSAxOgogCQkJZXJlcG9ydChMT0csCkBAIC0yMjY3LDYgKzIyOTIs MjIgQEAgZXhlY19leGVjdXRlX21lc3NhZ2UoY29uc3QgY2hhciAqcG9ydGFsX25hbWUsIGxvbmcg bWF4X3Jvd3MpCiAJCQlicmVhazsKIAl9CiAKKwlpZiAoaml0X2VuYWJsZWQgJiYgaml0X3dhcm5f YWJvdmVfZnJhY3Rpb24gPiAwKQorCXsKKwkJaW50NjQgaml0X3RpbWUgPQorCQkJSU5TVFJfVElN RV9HRVRfTUlMTElTRUMocG9ydGFsLT5xdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ci5n ZW5lcmF0aW9uX2NvdW50ZXIpICsKKwkJCUlOU1RSX1RJTUVfR0VUX01JTExJU0VDKHBvcnRhbC0+ cXVlcnlEZXNjLT5lc3RhdGUtPmVzX2ppdC0+aW5zdHIuaW5saW5pbmdfY291bnRlcikgKworCQkJ SU5TVFJfVElNRV9HRVRfTUlMTElTRUMocG9ydGFsLT5xdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0 LT5pbnN0ci5vcHRpbWl6YXRpb25fY291bnRlcikgKworCQkJSU5TVFJfVElNRV9HRVRfTUlMTElT RUMocG9ydGFsLT5xdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ci5lbWlzc2lvbl9jb3Vu dGVyKTsKKworCQlpZiAoaml0X3RpbWUgPiBtc2VjcyAqIGppdF93YXJuX2Fib3ZlX2ZyYWN0aW9u KQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJtc2coIkpJVCB0aW1lIHdhcyAl bGQgbXMgb2YgJWQgbXMiLAorCQkJCQkJCWppdF90aW1lLCBtc2VjcykpKTsKKwkJfQorCX0KKwog CWlmIChzYXZlX2xvZ19zdGF0ZW1lbnRfc3RhdHMpCiAJCVNob3dVc2FnZSgiRVhFQ1VURSBNRVNT QUdFIFNUQVRJU1RJQ1MiKTsKIApAQCAtMjMxMyw2ICsyMzU0LDEwIEBAIGNoZWNrX2xvZ19zdGF0 ZW1lbnQoTGlzdCAqc3RtdF9saXN0KQogICoJCTEgaWYganVzdCB0aGUgZHVyYXRpb24gc2hvdWxk IGJlIGxvZ2dlZAogICoJCTIgaWYgZHVyYXRpb24gYW5kIHF1ZXJ5IGRldGFpbHMgc2hvdWxkIGJl IGxvZ2dlZAogICoKKyAqIFRoZSBtaWxsaXNlY29uZCBydW50aW1lIG9mIHRoZSBxdWVyeSBpcyBz dG9yZWQgaW4gbXNlY3MgaWYgYW55IGxvZ2dpbmcgcGFyYW1ldGVyCisgKiB0aGF0IHJlcXVpcmVz IHRoZSBjYWxjdWxhdGlvbiBvZiB0aW1lIGlzIGVuYWJsZWQsIGV2ZW4gaWYgdGhlIHJlc3VsdCBp cyBub3QgdGhhdAorICogdGhlIGVudHJ5IHNob3VsZCBiZSBsb2dnZWQuIEluIG90aGVyIGNhc2Vz LCBpdCBpcyBzZXQgdG8gLTEuCisgKgogICogSWYgbG9nZ2luZyBpcyBuZWVkZWQsIHRoZSBkdXJh dGlvbiBpbiBtc2VjIGlzIGZvcm1hdHRlZCBpbnRvIG1zZWNfc3RyW10sCiAgKiB3aGljaCBtdXN0 IGJlIGEgMzItYnl0ZSBidWZmZXIuCiAgKgpAQCAtMjMyMCwxNCArMjM2NSwxMyBAQCBjaGVja19s b2dfc3RhdGVtZW50KExpc3QgKnN0bXRfbGlzdCkKICAqIGVzc2VudGlhbGx5IHByZXZlbnRzIDIg ZnJvbSBiZWluZyByZXR1cm5lZCkuCiAgKi8KIGludAotY2hlY2tfbG9nX2R1cmF0aW9uKGNoYXIg Km1zZWNfc3RyLCBib29sIHdhc19sb2dnZWQpCitjaGVja19sb2dfZHVyYXRpb24oaW50ICptc2Vj cywgY2hhciAqbXNlY19zdHIsIGJvb2wgd2FzX2xvZ2dlZCkKIHsKIAlpZiAobG9nX2R1cmF0aW9u IHx8IGxvZ19taW5fZHVyYXRpb25fc2FtcGxlID49IDAgfHwKLQkJbG9nX21pbl9kdXJhdGlvbl9z dGF0ZW1lbnQgPj0gMCB8fCB4YWN0X2lzX3NhbXBsZWQpCisJbG9nX21pbl9kdXJhdGlvbl9zdGF0 ZW1lbnQgPj0gMCB8fCB4YWN0X2lzX3NhbXBsZWQgfHwgaml0X3dhcm5fYWJvdmVfZnJhY3Rpb24g PiAwKQogCXsKIAkJbG9uZwkJc2VjczsKIAkJaW50CQkJdXNlY3M7Ci0JCWludAkJCW1zZWNzOwog CQlib29sCQlleGNlZWRlZF9kdXJhdGlvbjsKIAkJYm9vbAkJZXhjZWVkZWRfc2FtcGxlX2R1cmF0 aW9uOwogCQlib29sCQlpbl9zYW1wbGUgPSBmYWxzZTsKQEAgLTIzMzUsNyArMjM3OSw3IEBAIGNo ZWNrX2xvZ19kdXJhdGlvbihjaGFyICptc2VjX3N0ciwgYm9vbCB3YXNfbG9nZ2VkKQogCQlUaW1l c3RhbXBEaWZmZXJlbmNlKEdldEN1cnJlbnRTdGF0ZW1lbnRTdGFydFRpbWVzdGFtcCgpLAogCQkJ CQkJCUdldEN1cnJlbnRUaW1lc3RhbXAoKSwKIAkJCQkJCQkmc2VjcywgJnVzZWNzKTsKLQkJbXNl Y3MgPSB1c2VjcyAvIDEwMDA7CisJCSptc2VjcyA9IHVzZWNzIC8gMTAwMDsKIAogCQkvKgogCQkg KiBUaGlzIG9kZC1sb29raW5nIHRlc3QgZm9yIGxvZ19taW5fZHVyYXRpb25fKiBiZWluZyBleGNl ZWRlZCBpcwpAQCAtMjM0NSwxMiArMjM4OSwxMiBAQCBjaGVja19sb2dfZHVyYXRpb24oY2hhciAq bXNlY19zdHIsIGJvb2wgd2FzX2xvZ2dlZCkKIAkJZXhjZWVkZWRfZHVyYXRpb24gPSAobG9nX21p bl9kdXJhdGlvbl9zdGF0ZW1lbnQgPT0gMCB8fAogCQkJCQkJCSAobG9nX21pbl9kdXJhdGlvbl9z dGF0ZW1lbnQgPiAwICYmCiAJCQkJCQkJICAoc2VjcyA+IGxvZ19taW5fZHVyYXRpb25fc3RhdGVt ZW50IC8gMTAwMCB8fAotCQkJCQkJCSAgIHNlY3MgKiAxMDAwICsgbXNlY3MgPj0gbG9nX21pbl9k dXJhdGlvbl9zdGF0ZW1lbnQpKSk7CisJCQkJCQkJICAgc2VjcyAqIDEwMDAgKyAqbXNlY3MgPj0g bG9nX21pbl9kdXJhdGlvbl9zdGF0ZW1lbnQpKSk7CiAKIAkJZXhjZWVkZWRfc2FtcGxlX2R1cmF0 aW9uID0gKGxvZ19taW5fZHVyYXRpb25fc2FtcGxlID09IDAgfHwKIAkJCQkJCQkJCShsb2dfbWlu X2R1cmF0aW9uX3NhbXBsZSA+IDAgJiYKIAkJCQkJCQkJCSAoc2VjcyA+IGxvZ19taW5fZHVyYXRp b25fc2FtcGxlIC8gMTAwMCB8fAotCQkJCQkJCQkJICBzZWNzICogMTAwMCArIG1zZWNzID49IGxv Z19taW5fZHVyYXRpb25fc2FtcGxlKSkpOworCQkJCQkJCQkJICBzZWNzICogMTAwMCArICptc2Vj cyA+PSBsb2dfbWluX2R1cmF0aW9uX3NhbXBsZSkpKTsKIAogCQkvKgogCQkgKiBEbyBub3QgbG9n IGlmIGxvZ19zdGF0ZW1lbnRfc2FtcGxlX3JhdGUgPSAwLiBMb2cgYSBzYW1wbGUgaWYKQEAgLTIz NjUsMTMgKzI0MDksMTcgQEAgY2hlY2tfbG9nX2R1cmF0aW9uKGNoYXIgKm1zZWNfc3RyLCBib29s IHdhc19sb2dnZWQpCiAJCWlmIChleGNlZWRlZF9kdXJhdGlvbiB8fCBpbl9zYW1wbGUgfHwgbG9n X2R1cmF0aW9uIHx8IHhhY3RfaXNfc2FtcGxlZCkKIAkJewogCQkJc25wcmludGYobXNlY19zdHIs IDMyLCAiJWxkLiUwM2QiLAotCQkJCQkgc2VjcyAqIDEwMDAgKyBtc2VjcywgdXNlY3MgJSAxMDAw KTsKKwkJCQkJIHNlY3MgKiAxMDAwICsgKm1zZWNzLCB1c2VjcyAlIDEwMDApOwogCQkJaWYgKChl eGNlZWRlZF9kdXJhdGlvbiB8fCBpbl9zYW1wbGUgfHwgeGFjdF9pc19zYW1wbGVkKSAmJiAhd2Fz X2xvZ2dlZCkKIAkJCQlyZXR1cm4gMjsKIAkJCWVsc2UKIAkJCQlyZXR1cm4gMTsKIAkJfQogCX0K KwllbHNlCisJeworCQkqbXNlY3MgPSAtMTsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jCmluZGV4IDFlMzY1MDE4NGIuLjFhYmNmOTBmMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpA QCAtNjA4LDYgKzYwOCw3IEBAIGludAkJCWxvZ19wYXJhbWV0ZXJfbWF4X2xlbmd0aF9vbl9lcnJv ciA9IDA7CiBpbnQJCQlsb2dfdGVtcF9maWxlcyA9IC0xOwogZG91YmxlCQlsb2dfc3RhdGVtZW50 X3NhbXBsZV9yYXRlID0gMS4wOwogZG91YmxlCQlsb2dfeGFjdF9zYW1wbGVfcmF0ZSA9IDA7Citk b3VibGUJCWppdF93YXJuX2Fib3ZlX2ZyYWN0aW9uID0gMDsKIGludAkJCXRyYWNlX3JlY292ZXJ5 X21lc3NhZ2VzID0gTE9HOwogY2hhcgkgICAqYmFja3RyYWNlX2Z1bmN0aW9uczsKIGNoYXIJICAg KmJhY2t0cmFjZV9zeW1ib2xfbGlzdDsKQEAgLTM4NzMsNiArMzg3NCwxOSBAQCBzdGF0aWMgc3Ry dWN0IGNvbmZpZ19yZWFsIENvbmZpZ3VyZU5hbWVzUmVhbFtdID0KIAkJTlVMTCwgTlVMTCwgTlVM TAogCX0sCiAKKwl7CisJCXsiaml0X3dhcm5fYWJvdmVfZnJhY3Rpb24iLCBQR0NfU1VTRVQsIExP R0dJTkdfV0hFTiwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgZnJhY3Rpb24gb2YgcXVlcnkg dGltZSBzcGVudCBvbiBKSVQgYmVmb3JlIHdyaXRpbmciCisJCQkJCQkgImEgd2FybmluZyB0byB0 aGUgbG9nLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJXcml0ZSBhIG1lc3NhZ2UgdG90IGhlIHNlcnZl ciBsb2cgaWYgbW9yZSB0aGFuIHRoaXMiCisJCQkJCQkgImZyYWN0aW9uIG9mIHRoZSBxdWVyeSBy dW50aW1lIGlzIHNwZW50IG9uIEpJVC4iCisJCQkJCQkgIlplcm8gdHVybnMgb2ZmIHRoZSB3YXJu aW5nLiIpCisJCX0sCisJCSZqaXRfd2Fybl9hYm92ZV9mcmFjdGlvbiwKKwkJMC4wLCAwLjAsIDEu MCwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8K IAl7CiAJCXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgMC4wLCAwLjAsIDAuMCwgTlVM TCwgTlVMTCwgTlVMTApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlCmluZGV4IDRhMDk0YmIzOGIuLjE5Nzk1ZTUzOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTQwNCw2ICs0MDQsOCBAQAogI2pp dF9vcHRpbWl6ZV9hYm92ZV9jb3N0ID0gNTAwMDAwCSMgdXNlIGV4cGVuc2l2ZSBKSVQgb3B0aW1p emF0aW9ucyBpZgogCQkJCQkjIHF1ZXJ5IGlzIG1vcmUgZXhwZW5zaXZlIHRoYW4gdGhpczsKIAkJ CQkJIyAtMSBkaXNhYmxlcworI2ppdF93YXJuX2Fib3ZlX2ZyYWN0aW9uID0gMAkJIyB3YXJuIGlm IEpJVCBpcyBtb3JlIHRoYW4gdGhpcyBmcmFjdGlvbiBvZgorCQkJCQkjIHF1ZXJ5IHJ1bnRpbWUu IDAgZGlzYWJsZXMuCiAKICMgLSBHZW5ldGljIFF1ZXJ5IE9wdGltaXplciAtCiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2ppdC9qaXQuaCBiL3NyYy9pbmNsdWRlL2ppdC9qaXQuaAppbmRleCA3 MDcxNzZkOWVkLi41OWIzN2Q2ZGMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9qaXQvaml0LmgK KysrIGIvc3JjL2luY2x1ZGUvaml0L2ppdC5oCkBAIC04OSw2ICs4OSw3IEBAIGV4dGVybiBib29s IGppdF90dXBsZV9kZWZvcm1pbmc7CiBleHRlcm4gZG91YmxlIGppdF9hYm92ZV9jb3N0OwogZXh0 ZXJuIGRvdWJsZSBqaXRfaW5saW5lX2Fib3ZlX2Nvc3Q7CiBleHRlcm4gZG91YmxlIGppdF9vcHRp bWl6ZV9hYm92ZV9jb3N0OworZXh0ZXJuIGRvdWJsZSBqaXRfd2Fybl9hYm92ZV9mcmFjdGlvbjsK IAogCiBleHRlcm4gdm9pZCBqaXRfcmVzZXRfYWZ0ZXJfZXJyb3Iodm9pZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmggYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90 LmgKaW5kZXggMTVhMTFiYzNmZi4uNzE0NTdiZTlmNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dGNvcC90Y29wcHJvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaApAQCAtODIs NyArODIsNyBAQCBleHRlcm4gdm9pZCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLAog ZXh0ZXJuIGxvbmcgZ2V0X3N0YWNrX2RlcHRoX3JsaW1pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFJl c2V0VXNhZ2Uodm9pZCk7CiBleHRlcm4gdm9pZCBTaG93VXNhZ2UoY29uc3QgY2hhciAqdGl0bGUp OwotZXh0ZXJuIGludAljaGVja19sb2dfZHVyYXRpb24oY2hhciAqbXNlY19zdHIsIGJvb2wgd2Fz X2xvZ2dlZCk7CitleHRlcm4gaW50CWNoZWNrX2xvZ19kdXJhdGlvbihpbnQgKm1zZWMsIGNoYXIg Km1zZWNfc3RyLCBib29sIHdhc19sb2dnZWQpOwogZXh0ZXJuIHZvaWQgc2V0X2RlYnVnX29wdGlv bnMoaW50IGRlYnVnX2ZsYWcsCiAJCQkJCQkJICBHdWNDb250ZXh0IGNvbnRleHQsIEd1Y1NvdXJj ZSBzb3VyY2UpOwogZXh0ZXJuIGJvb2wgc2V0X3BsYW5fZGlzYWJsaW5nX29wdGlvbnMoY29uc3Qg Y2hhciAqYXJnLAo= --000000000000de32b905d8d92d2b--