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 1ncmmD-0001G3-By for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Apr 2022 11:27:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ncmmB-000411-QF for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Apr 2022 11:27:39 +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 1ncmmB-00040s-4D for pgsql-hackers@lists.postgresql.org; Fri, 08 Apr 2022 11:27:39 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1ncmm3-0001A5-Vl for pgsql-hackers@lists.postgresql.org; Fri, 08 Apr 2022 11:27:38 +0000 Received: by mail-lf1-x133.google.com with SMTP id p10so14455934lfa.12 for ; Fri, 08 Apr 2022 04:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hagander-net.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vbQ8nt8S9yONUJv3EKVJh1FyItfoPPwvyJIv7ySZW8k=; b=TqV8deGIlUOC41nF6dR6SV3s4zEReYd8TcLuFtvaoObSKCj9Mu+g+o/qZsfPXdIU9R fBejW30+qMQpO3RnvNbpnQOZg5aQeJmMGGjK3pfZi+bX66MDTjx2HKEnpi8EmaXkQrYR IDoK/pU85+BYRd2q4MVz+OkW4FwKLdus4naG8EzvLCpH3KINuFA7uiqxbZXUIKgmZAhp MIXW29k11xka+Wsmp2JynBMfQNxwI3YUJMZrscys4NaXBM5ha4qO8vz0+fa0rVMBBZyX /cjmgmTCBbW7IlqWYe702LaFQXKHswluv9EM8raVv4+tGqeuH/Rdc1AnJoUUEnpdRhRq ZdGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vbQ8nt8S9yONUJv3EKVJh1FyItfoPPwvyJIv7ySZW8k=; b=5gROdrQq3VfodEZwjyxCQf3/ZMy42GJRn5Ic4RhD1I66R3psnb0Ws+jJ2kWWTWYROn HhtxuVYFrn7VRhtTHD9ym5g89T0/2jO1cEOtsvqkYIj2Q/nIcKDmwLymJA6EeH8HfnUB dSnUs1TqHi9FIRhwpSciMF+Lc39mgunDEoEqhP0ndHv0FFz8AO67ttm9NQ/3W/sJoTN8 nz/6A6GCnL/cvrcVRbp6TZNUybrXnlO9Zo/fOgcaxaoJmB1HEw4exWH7Ph9IQVLI67GF u6KgIzhm5InYsH5OVx2Lm1PYzu/lH/OYIRyeGDEIVKobCk5TYOqw6EA88+UcR8p71au/ OdeA== X-Gm-Message-State: AOAM531yuIFzHRG2lskmB3S32pafBSKwBwtKTZ45yRwmoG1X2Ka6ykHQ JkeX58KHpK+UsI0jbMBOicjBXAOWmGRAgYAv93QlVQ== X-Google-Smtp-Source: ABdhPJyIs/2wGMScQNtDe5AYDqk6AurqSbN36ZH8902ZLQii28varonTER6jYQsqQsrc5ogN+a124+gTXRysTgJ6W2A= X-Received: by 2002:ac2:521b:0:b0:46b:82a9:b888 with SMTP id a27-20020ac2521b000000b0046b82a9b888mr2239762lfl.578.1649417250325; Fri, 08 Apr 2022 04:27:30 -0700 (PDT) MIME-Version: 1.0 References: <20220225162304.GD9008@telsasoft.com> <20220321235048.wb3ymun6lbi33b2u@alap3.anarazel.de> <20220329100846.3iedk5ear3ewdi5j@jrouhaud> In-Reply-To: From: Magnus Hagander Date: Fri, 8 Apr 2022 13:27:06 +0200 Message-ID: Subject: Re: Add parameter jit_warn_above_fraction To: David Rowley Cc: Robert Haas , Julien Rouhaud , Andres Freund , Justin Pryzby , Stephen Frost , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000004afc9d05dc22e117" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004afc9d05dc22e117 Content-Type: multipart/alternative; boundary="0000000000004afc9b05dc22e115" --0000000000004afc9b05dc22e115 Content-Type: text/plain; charset="UTF-8" On Wed, Mar 30, 2022 at 3:04 PM Magnus Hagander wrote: > On Tue, Mar 29, 2022 at 10:06 PM David Rowley > wrote: > >> On Wed, 30 Mar 2022 at 02:38, Robert Haas wrote: >> > I think WARNING is fine. After all, the parameter is called >> > "jit_warn_above_fraction". >> >> I had a think about this patch. I guess it's a little similar to >> checkpoint_warning. The good thing about the checkpoint_warning is >> that in the LOG message we give instructions about how the DBA can fix >> the issue, i.e increase max_wal_size. >> >> With the proposed patch I see there is no hint about what might be >> done to remove/reduce the warnings. I imagine that's because it's not >> all that clear which GUC should be changed. In my view, likely >> jit_above_cost is the most relevant but there is also >> jit_inline_above_cost, jit_optimize_above_cost, jit_tuple_deforming >> and jit_expressions which are relevant too. >> >> If we go with this patch, the problem I see here is that the amount >> of work the JIT compiler must do for a given query depends mostly on >> the number of expressions that must be compiled in the query (also to >> a lesser extent jit_inline_above_cost, jit_optimize_above_cost, >> jit_tuple_deforming and jit_expressions). The DBA does not really have >> much control over the number of expressions in the query. All he or >> she can do to get rid of the warning is something like increase >> jit_above_cost. After a few iterations of that, the end result is >> that jit_above_cost is now high enough that JIT no longer triggers >> for, say, that query to that table with 1000 partitions where no >> plan-time pruning takes place. Is that really a good thing? It likely >> means that we just rarely JIT anything at all! >> > > I don't agree with the conclusion of that. > > What the parameter would be useful for is to be able to tune those costs > (or just turn it off) *for that individual query*. That doesn't mean you > "rarely JIT anything atll", it just means you rarely JIT that particular > query. > > In fact, my goal is to specifically make people do that and *not* just > turn off JIT globally. > > > I'd much rather see us address the costing problem before adding some >> warning, especially a warning where it's not clear how to make go >> away. >> > > The easiest way would be to add a HINT that says turn off jit for this > particular query or something? > > I do agree that if we can make "spending too much time on JIT vs query > runtime" go away completely, then there is no need for a parameter like > this. > > I still think the warning is useful. And I think it may stay useful even > after we have made the JIT costing smarter -- though that's not certain of > course. > > This patch is still sitting at "ready for committer". As an example, I have added such a hint in the attached. I still stand by that this patch is better than nothing. Sure, I would love for us to adapt the JIT costing model and algorithm to make this not a problem. And once we've done that, we should remove the parameter again. It's not on by default, and it's trivial to remove in the future. Yes, we're right up at the deadline. I'd still like to get it in, so I'd really appreciate some further voices :) -- Magnus Hagander Me: https://www.hagander.net/ Work: https://www.redpill-linpro.com/ --0000000000004afc9b05dc22e115 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


=
On Wed, Mar 30, 2022 at 3:04 PM Magnu= s Hagander <mag= nus@hagander.net> wrote:
On Tue, Mar 29, 2022 at 1= 0:06 PM David Rowley <dgrowleyml@gmail.com> wrote:
On Wed, 30 Mar 2022 = at 02:38, Robert Haas <robertmhaas@gmail.com> wrote:
> I think WARNING is fine. After all, the parameter is called
> "jit_warn_above_fraction".

I had a think about this patch.=C2=A0 I guess it's a little similar to<= br> checkpoint_warning. The good thing about the checkpoint_warning is
that in the LOG message we give instructions about how the DBA can fix
the issue, i.e increase max_wal_size.

With the proposed patch I see there is no hint about what might be
done to remove/reduce the warnings.=C2=A0 I imagine that's because it&#= 39;s not
all that clear which GUC should be changed. In my view, likely
jit_above_cost is the most relevant but there is also
jit_inline_above_cost, jit_optimize_above_cost, jit_tuple_deforming
and jit_expressions which are relevant too.

If we go with this patch,=C2=A0 the problem I see here is that the amount of work the JIT compiler must do for a given query depends mostly on
the number of expressions that must be compiled in the query (also to
a lesser extent jit_inline_above_cost, jit_optimize_above_cost,
jit_tuple_deforming and jit_expressions). The DBA does not really have
much control over the number of expressions in the query.=C2=A0 All he or she can do to get rid of the warning is something like increase
jit_above_cost.=C2=A0 After a few iterations of that, the end result is
that jit_above_cost is now high enough that JIT no longer triggers
for, say, that query to that table with 1000 partitions where no
plan-time pruning takes place.=C2=A0 Is that really a good thing? It likely=
means that we just rarely JIT anything at all!

I don't agree with the conclusion of that.

=
What the parameter would be useful for is to be able to tune those cos= ts (or just turn it off) *for that individual query*. That doesn't mean= you "rarely JIT anything atll", it just means you rarely JIT tha= t particular query.

In fact, my goal is to specifi= cally=C2=A0make people do that and *not* just turn off JIT globally.
<= div>

I'd much rather see us address the costing problem before adding so= me
warning, especially a warning where it's not clear how to make go
away.

The easiest way would be to add a= HINT that says turn off jit for this particular query or something?
<= div>
I do agree that if we can make=C2=A0 "spending too = much time on JIT vs query runtime" go away completely, then there is n= o need for a parameter like this.=C2=A0

I still th= ink the warning is useful. And I think it may stay useful even after we hav= e made the JIT costing smarter -- though that's not certain of course.= =C2=A0


This patch is still sitting at "ready for committer".
=
As an example, I have added such a hint in the attached.

I still stand=C2=A0 by that this patch is better than= nothing. Sure, I would love for us to adapt the JIT costing model and algo= rithm to make this not a problem. And once we've done that, we should r= emove the parameter again.

It's not on by defa= ult, and it's trivial to remove in the future.=C2=A0

Yes, we're right up at the deadline. I'd still lik= e to get it in, so I'd really appreciate some further voices :)

--
=C2=A0Magnus Hag= ander
=C2=A0Me: h= ttps://www.hagander.net/
=C2=A0Work: https://www.redpill-linpro.com/
--0000000000004afc9b05dc22e115-- --0000000000004afc9d05dc22e117 Content-Type: text/x-patch; charset="US-ASCII"; name="jit_warn_above_fraction_v4.patch" Content-Disposition: attachment; filename="jit_warn_above_fraction_v4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l1qcf0p20 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCA2ZTNlMjdiZWQ3Li5mYTM1ZmUwNGU4IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC02NzE4 LDYgKzY3MTgsMjEgQEAgbG9jYWwwLiogICAgL3Zhci9sb2cvcG9zdGdyZXNxbAogICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9 Imd1Yy1qaXQtd2Fybi1hYm92ZS1mcmFjdGlvbiIgeHJlZmxhYmVsPSJqaXRfd2Fybl9hYm92ZV9m cmFjdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5qaXRfd2Fybl9hYm92ZV9mcmFjdGlvbjwv dmFybmFtZT4gKDx0eXBlPmZsb2F0aW5nIHBvaW50PC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+ CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+aml0X3dhcm5fYWJvdmVfZnJhY3Rpb248L3Zhcm5h bWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+ CisgICAgICA8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAg ICAgIENhdXNlcyBhIHdhcm5pbmcgdG8gYmUgd3JpdHRlbiB0byB0aGUgbG9nIGlmIHRoZSB0aW1l IHNwZW50IG9uIEpJVCAoc2VlIDx4cmVmIGxpbmtlbmQ9ImppdCIvPikKKyAgICAgICAgIGdvZXMg YWJvdmUgdGhpcyBmcmFjdGlvbiBvZiB0aGUgdG90YWwgcXVlcnkgcnVudGltZS4KKyAgICAgICAg IEEgdmFsdWUgb2YgMCAodGhlIGRlZmF1bHQpIGRpc2FibGVzIHRoZSB3YXJuaW5nLgorICAgICAg ICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAg ICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWxvZy1zdGFydHVwLXByb2dyZXNzLWludGVydmFsIiB4 cmVmbGFiZWw9ImxvZ19zdGFydHVwX3Byb2dyZXNzX2ludGVydmFsIj4KICAgICAgIDx0ZXJtPjx2 YXJuYW1lPmxvZ19zdGFydHVwX3Byb2dyZXNzX2ludGVydmFsPC92YXJuYW1lPiAoPHR5cGU+aW50 ZWdlcjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dGNvcC9mYXN0cGF0aC5jIGIvc3JjL2JhY2tlbmQvdGNvcC9mYXN0cGF0aC5jCmluZGV4IGQ0Mjlh YTQ2NjMuLmExYmZmODkzYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvZmFzdHBhdGgu YworKysgYi9zcmMvYmFja2VuZC90Y29wL2Zhc3RwYXRoLmMKQEAgLTE5Niw2ICsxOTYsNyBAQCBI YW5kbGVGdW5jdGlvblJlcXVlc3QoU3RyaW5nSW5mbyBtc2dCdWYpCiAJc3RydWN0IGZwX2luZm8g KmZpcDsKIAlib29sCQljYWxsaXQ7CiAJYm9vbAkJd2FzX2xvZ2dlZCA9IGZhbHNlOworCWludAkJ CW1zZWNzOwogCWNoYXIJCW1zZWNfc3RyWzMyXTsKIAogCS8qCkBAIC0zMDUsNyArMzA2LDcgQEAg SGFuZGxlRnVuY3Rpb25SZXF1ZXN0KFN0cmluZ0luZm8gbXNnQnVmKQogCS8qCiAJICogRW1pdCBk dXJhdGlvbiBsb2dnaW5nIGlmIGFwcHJvcHJpYXRlLgogCSAqLwotCXN3aXRjaCAoY2hlY2tfbG9n X2R1cmF0aW9uKG1zZWNfc3RyLCB3YXNfbG9nZ2VkKSkKKwlzd2l0Y2ggKGNoZWNrX2xvZ19kdXJh dGlvbigmbXNlY3MsIG1zZWNfc3RyLCB3YXNfbG9nZ2VkKSkKIAl7CiAJCWNhc2UgMToKIAkJCWVy ZXBvcnQoTE9HLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDk1ZGMyZTJjODMuLmQxZGQyMjczYWQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKQEAgLTk5OCw3ICs5OTgsOSBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25z dCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJYm9vbAkJc2F2ZV9sb2dfc3RhdGVtZW50X3N0YXRzID0g bG9nX3N0YXRlbWVudF9zdGF0czsKIAlib29sCQl3YXNfbG9nZ2VkID0gZmFsc2U7CiAJYm9vbAkJ dXNlX2ltcGxpY2l0X2Jsb2NrOworCWludAkJCW1zZWNzOwogCWNoYXIJCW1zZWNfc3RyWzMyXTsK KwlpbnQ2NAkJaml0X3RpbWUgPSAwOwogCiAJLyoKIAkgKiBSZXBvcnQgcXVlcnkgdG8gdmFyaW91 cyBtb25pdG9yaW5nIGZhY2lsaXRpZXMuCkBAIC0xMjU3LDYgKzEyNTksMTYgQEAgZXhlY19zaW1w bGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCiAJCXJlY2VpdmVyLT5yRGVzdHJv eShyZWNlaXZlcik7CiAKKwkJLyogQ29sbGVjdCBKSVQgdGltaW5ncyBpbiBjYXNlIGl0J3MgYWN0 aXZlICovCisJCWlmIChqaXRfZW5hYmxlZCAmJiBqaXRfd2Fybl9hYm92ZV9mcmFjdGlvbiA+IDAg JiYgcG9ydGFsLT5xdWVyeURlc2MgJiYgcG9ydGFsLT5xdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0 KQorCQl7CisJCQlqaXRfdGltZSArPQorCQkJCUlOU1RSX1RJTUVfR0VUX01JTExJU0VDKHBvcnRh bC0+cXVlcnlEZXNjLT5lc3RhdGUtPmVzX2ppdC0+aW5zdHIuZ2VuZXJhdGlvbl9jb3VudGVyKSAr CisJCQkJSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocG9ydGFsLT5xdWVyeURlc2MtPmVzdGF0ZS0+ ZXNfaml0LT5pbnN0ci5pbmxpbmluZ19jb3VudGVyKSArCisJCQkJSU5TVFJfVElNRV9HRVRfTUlM TElTRUMocG9ydGFsLT5xdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ci5vcHRpbWl6YXRp b25fY291bnRlcikgKworCQkJCUlOU1RSX1RJTUVfR0VUX01JTExJU0VDKHBvcnRhbC0+cXVlcnlE ZXNjLT5lc3RhdGUtPmVzX2ppdC0+aW5zdHIuZW1pc3Npb25fY291bnRlcik7CisJCX0KKwogCQlQ b3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOwogCiAJCWlmIChsbmV4dChwYXJzZXRyZWVfbGlzdCwg cGFyc2V0cmVlX2l0ZW0pID09IE5VTEwpCkBAIC0xMzI3LDcgKzEzMzksNyBAQCBleGVjX3NpbXBs ZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJLyoKIAkgKiBFbWl0IGR1cmF0aW9u IGxvZ2dpbmcgaWYgYXBwcm9wcmlhdGUuCiAJICovCi0Jc3dpdGNoIChjaGVja19sb2dfZHVyYXRp b24obXNlY19zdHIsIHdhc19sb2dnZWQpKQorCXN3aXRjaCAoY2hlY2tfbG9nX2R1cmF0aW9uKCZt c2VjcywgbXNlY19zdHIsIHdhc19sb2dnZWQpKQogCXsKIAkJY2FzZSAxOgogCQkJZXJlcG9ydChM T0csCkBAIC0xMzQzLDYgKzEzNTUsMTcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAq cXVlcnlfc3RyaW5nKQogCQkJYnJlYWs7CiAJfQogCisJaWYgKGppdF9lbmFibGVkICYmIGppdF93 YXJuX2Fib3ZlX2ZyYWN0aW9uID4gMCkKKwl7CisJCWlmIChqaXRfdGltZSA+IG1zZWNzICogaml0 X3dhcm5fYWJvdmVfZnJhY3Rpb24pCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVy cm1zZygiSklUIHRvdGFsIHByb2Nlc3NpbmcgdGltZSB3YXMgJWxsZCBtcyBvZiAlZCBtcyIsCisJ CQkJCQkJKGxvbmcgbG9uZykgaml0X3RpbWUsIG1zZWNzKSksCisJCQkJCWVycmhpbnQoIkNvbnNp ZGVyIHR1cm5pbmcgb2YgSklUIG9yIGNoYW5naW5nIHRoZSB0aHJlc2hvbGQgZm9yIHRoaXMgcGFy dGljdWxhciBxdWVyeSIpKTsKKwkJfQorCX0KKwogCWlmIChzYXZlX2xvZ19zdGF0ZW1lbnRfc3Rh dHMpCiAJCVNob3dVc2FnZSgiUVVFUlkgU1RBVElTVElDUyIpOwogCkBAIC0xMzcwLDYgKzEzOTMs NyBAQCBleGVjX3BhcnNlX21lc3NhZ2UoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAkvKiBzdHJp bmcgdG8gZXhlY3V0ZSAqLwogCUNhY2hlZFBsYW5Tb3VyY2UgKnBzcmM7CiAJYm9vbAkJaXNfbmFt ZWQ7CiAJYm9vbAkJc2F2ZV9sb2dfc3RhdGVtZW50X3N0YXRzID0gbG9nX3N0YXRlbWVudF9zdGF0 czsKKwlpbnQJCQltc2VjczsKIAljaGFyCQltc2VjX3N0clszMl07CiAKIAkvKgpAQCAtMTU2Myw3 ICsxNTg3LDcgQEAgZXhlY19wYXJzZV9tZXNzYWdlKGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywJ Lyogc3RyaW5nIHRvIGV4ZWN1dGUgKi8KIAkvKgogCSAqIEVtaXQgZHVyYXRpb24gbG9nZ2luZyBp ZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQlzd2l0Y2ggKGNoZWNrX2xvZ19kdXJhdGlvbihtc2VjX3N0 ciwgZmFsc2UpKQorCXN3aXRjaCAoY2hlY2tfbG9nX2R1cmF0aW9uKCZtc2VjcywgbXNlY19zdHIs IGZhbHNlKSkKIAl7CiAJCWNhc2UgMToKIAkJCWVyZXBvcnQoTE9HLApAQCAtMTYxMCw2ICsxNjM0 LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCU1lbW9y eUNvbnRleHQgb2xkQ29udGV4dDsKIAlib29sCQlzYXZlX2xvZ19zdGF0ZW1lbnRfc3RhdHMgPSBs b2dfc3RhdGVtZW50X3N0YXRzOwogCWJvb2wJCXNuYXBzaG90X3NldCA9IGZhbHNlOworCWludAkJ CW1zZWNzOwogCWNoYXIJCW1zZWNfc3RyWzMyXTsKIAlQYXJhbXNFcnJvckNiRGF0YSBwYXJhbXNf ZGF0YTsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBwYXJhbXNfZXJyY3h0OwpAQCAtMjAyMiw3ICsy MDQ3LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCS8q CiAJICogRW1pdCBkdXJhdGlvbiBsb2dnaW5nIGlmIGFwcHJvcHJpYXRlLgogCSAqLwotCXN3aXRj aCAoY2hlY2tfbG9nX2R1cmF0aW9uKG1zZWNfc3RyLCBmYWxzZSkpCisJc3dpdGNoIChjaGVja19s b2dfZHVyYXRpb24oJm1zZWNzLCBtc2VjX3N0ciwgZmFsc2UpKQogCXsKIAkJY2FzZSAxOgogCQkJ ZXJlcG9ydChMT0csCkBAIC0yMDY4LDYgKzIwOTMsNyBAQCBleGVjX2V4ZWN1dGVfbWVzc2FnZShj b25zdCBjaGFyICpwb3J0YWxfbmFtZSwgbG9uZyBtYXhfcm93cykKIAlib29sCQlpc194YWN0X2Nv bW1hbmQ7CiAJYm9vbAkJZXhlY3V0ZV9pc19mZXRjaDsKIAlib29sCQl3YXNfbG9nZ2VkID0gZmFs c2U7CisJaW50CQkJbXNlY3M7CiAJY2hhcgkJbXNlY19zdHJbMzJdOwogCVBhcmFtc0Vycm9yQ2JE YXRhIHBhcmFtc19kYXRhOwogCUVycm9yQ29udGV4dENhbGxiYWNrIHBhcmFtc19lcnJjeHQ7CkBA IC0yMjU5LDcgKzIyODUsNyBAQCBleGVjX2V4ZWN1dGVfbWVzc2FnZShjb25zdCBjaGFyICpwb3J0 YWxfbmFtZSwgbG9uZyBtYXhfcm93cykKIAkvKgogCSAqIEVtaXQgZHVyYXRpb24gbG9nZ2luZyBp ZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQlzd2l0Y2ggKGNoZWNrX2xvZ19kdXJhdGlvbihtc2VjX3N0 ciwgd2FzX2xvZ2dlZCkpCisJc3dpdGNoIChjaGVja19sb2dfZHVyYXRpb24oJm1zZWNzLCBtc2Vj X3N0ciwgd2FzX2xvZ2dlZCkpCiAJewogCQljYXNlIDE6CiAJCQllcmVwb3J0KExPRywKQEAgLTIy ODIsNiArMjMwOCwyNCBAQCBleGVjX2V4ZWN1dGVfbWVzc2FnZShjb25zdCBjaGFyICpwb3J0YWxf bmFtZSwgbG9uZyBtYXhfcm93cykKIAkJCWJyZWFrOwogCX0KIAorCWlmIChqaXRfZW5hYmxlZCAm JiBqaXRfd2Fybl9hYm92ZV9mcmFjdGlvbiA+IDApCisJeworCQlpbnQ2NCBqaXRfdGltZSA9CisJ CQlJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhwb3J0YWwtPnF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19q aXQtPmluc3RyLmdlbmVyYXRpb25fY291bnRlcikgKworCQkJSU5TVFJfVElNRV9HRVRfTUlMTElT RUMocG9ydGFsLT5xdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ci5pbmxpbmluZ19jb3Vu dGVyKSArCisJCQlJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhwb3J0YWwtPnF1ZXJ5RGVzYy0+ZXN0 YXRlLT5lc19qaXQtPmluc3RyLm9wdGltaXphdGlvbl9jb3VudGVyKSArCisJCQlJTlNUUl9USU1F X0dFVF9NSUxMSVNFQyhwb3J0YWwtPnF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19qaXQtPmluc3RyLmVt aXNzaW9uX2NvdW50ZXIpOworCisJCWlmIChqaXRfdGltZSA+IG1zZWNzICogaml0X3dhcm5fYWJv dmVfZnJhY3Rpb24pCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycm1zZygiSklU IHRvdGFsIHByb2Nlc3NpbmcgdGltZSB3YXMgJWxsZCBtcyBvZiAlZCBtcyIsCisJCQkJCQkJKGxv bmcgbG9uZykgaml0X3RpbWUsIG1zZWNzKSksCisJCQkJCWVycmhpbnQoIkNvbnNpZGVyIHR1cm5p bmcgb2YgSklUIG9yIGNoYW5naW5nIHRoZSB0aHJlc2hvbGQgZm9yIHRoaXMgcGFydGljdWxhciBx dWVyeSIpKTsKKworCQl9CisJfQorCiAJaWYgKHNhdmVfbG9nX3N0YXRlbWVudF9zdGF0cykKIAkJ U2hvd1VzYWdlKCJFWEVDVVRFIE1FU1NBR0UgU1RBVElTVElDUyIpOwogCkBAIC0yMzI4LDYgKzIz NzIsMTAgQEAgY2hlY2tfbG9nX3N0YXRlbWVudChMaXN0ICpzdG10X2xpc3QpCiAgKgkJMSBpZiBq dXN0IHRoZSBkdXJhdGlvbiBzaG91bGQgYmUgbG9nZ2VkCiAgKgkJMiBpZiBkdXJhdGlvbiBhbmQg cXVlcnkgZGV0YWlscyBzaG91bGQgYmUgbG9nZ2VkCiAgKgorICogVGhlIG1pbGxpc2Vjb25kIHJ1 bnRpbWUgb2YgdGhlIHF1ZXJ5IGlzIHN0b3JlZCBpbiBtc2VjcyBpZiBhbnkgbG9nZ2luZyBwYXJh bWV0ZXIKKyAqIHRoYXQgcmVxdWlyZXMgdGhlIGNhbGN1bGF0aW9uIG9mIHRpbWUgaXMgZW5hYmxl ZCwgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIG5vdCB0aGF0CisgKiB0aGUgZW50cnkgc2hvdWxkIGJl IGxvZ2dlZC4gSW4gb3RoZXIgY2FzZXMsIGl0IGlzIHNldCB0byAtMS4KKyAqCiAgKiBJZiBsb2dn aW5nIGlzIG5lZWRlZCwgdGhlIGR1cmF0aW9uIGluIG1zZWMgaXMgZm9ybWF0dGVkIGludG8gbXNl Y19zdHJbXSwKICAqIHdoaWNoIG11c3QgYmUgYSAzMi1ieXRlIGJ1ZmZlci4KICAqCkBAIC0yMzM1 LDE0ICsyMzgzLDEzIEBAIGNoZWNrX2xvZ19zdGF0ZW1lbnQoTGlzdCAqc3RtdF9saXN0KQogICog ZXNzZW50aWFsbHkgcHJldmVudHMgMiBmcm9tIGJlaW5nIHJldHVybmVkKS4KICAqLwogaW50Ci1j aGVja19sb2dfZHVyYXRpb24oY2hhciAqbXNlY19zdHIsIGJvb2wgd2FzX2xvZ2dlZCkKK2NoZWNr X2xvZ19kdXJhdGlvbihpbnQgKm1zZWNzLCBjaGFyICptc2VjX3N0ciwgYm9vbCB3YXNfbG9nZ2Vk KQogewogCWlmIChsb2dfZHVyYXRpb24gfHwgbG9nX21pbl9kdXJhdGlvbl9zYW1wbGUgPj0gMCB8 fAotCQlsb2dfbWluX2R1cmF0aW9uX3N0YXRlbWVudCA+PSAwIHx8IHhhY3RfaXNfc2FtcGxlZCkK Kwlsb2dfbWluX2R1cmF0aW9uX3N0YXRlbWVudCA+PSAwIHx8IHhhY3RfaXNfc2FtcGxlZCB8fCBq aXRfd2Fybl9hYm92ZV9mcmFjdGlvbiA+IDApCiAJewogCQlsb25nCQlzZWNzOwogCQlpbnQJCQl1 c2VjczsKLQkJaW50CQkJbXNlY3M7CiAJCWJvb2wJCWV4Y2VlZGVkX2R1cmF0aW9uOwogCQlib29s CQlleGNlZWRlZF9zYW1wbGVfZHVyYXRpb247CiAJCWJvb2wJCWluX3NhbXBsZSA9IGZhbHNlOwpA QCAtMjM1MCw3ICsyMzk3LDcgQEAgY2hlY2tfbG9nX2R1cmF0aW9uKGNoYXIgKm1zZWNfc3RyLCBi b29sIHdhc19sb2dnZWQpCiAJCVRpbWVzdGFtcERpZmZlcmVuY2UoR2V0Q3VycmVudFN0YXRlbWVu dFN0YXJ0VGltZXN0YW1wKCksCiAJCQkJCQkJR2V0Q3VycmVudFRpbWVzdGFtcCgpLAogCQkJCQkJ CSZzZWNzLCAmdXNlY3MpOwotCQltc2VjcyA9IHVzZWNzIC8gMTAwMDsKKwkJKm1zZWNzID0gdXNl Y3MgLyAxMDAwOwogCiAJCS8qCiAJCSAqIFRoaXMgb2RkLWxvb2tpbmcgdGVzdCBmb3IgbG9nX21p bl9kdXJhdGlvbl8qIGJlaW5nIGV4Y2VlZGVkIGlzCkBAIC0yMzYwLDEyICsyNDA3LDEyIEBAIGNo ZWNrX2xvZ19kdXJhdGlvbihjaGFyICptc2VjX3N0ciwgYm9vbCB3YXNfbG9nZ2VkKQogCQlleGNl ZWRlZF9kdXJhdGlvbiA9IChsb2dfbWluX2R1cmF0aW9uX3N0YXRlbWVudCA9PSAwIHx8CiAJCQkJ CQkJIChsb2dfbWluX2R1cmF0aW9uX3N0YXRlbWVudCA+IDAgJiYKIAkJCQkJCQkgIChzZWNzID4g bG9nX21pbl9kdXJhdGlvbl9zdGF0ZW1lbnQgLyAxMDAwIHx8Ci0JCQkJCQkJICAgc2VjcyAqIDEw MDAgKyBtc2VjcyA+PSBsb2dfbWluX2R1cmF0aW9uX3N0YXRlbWVudCkpKTsKKwkJCQkJCQkgICBz ZWNzICogMTAwMCArICptc2VjcyA+PSBsb2dfbWluX2R1cmF0aW9uX3N0YXRlbWVudCkpKTsKIAog CQlleGNlZWRlZF9zYW1wbGVfZHVyYXRpb24gPSAobG9nX21pbl9kdXJhdGlvbl9zYW1wbGUgPT0g MCB8fAogCQkJCQkJCQkJKGxvZ19taW5fZHVyYXRpb25fc2FtcGxlID4gMCAmJgogCQkJCQkJCQkJ IChzZWNzID4gbG9nX21pbl9kdXJhdGlvbl9zYW1wbGUgLyAxMDAwIHx8Ci0JCQkJCQkJCQkgIHNl Y3MgKiAxMDAwICsgbXNlY3MgPj0gbG9nX21pbl9kdXJhdGlvbl9zYW1wbGUpKSk7CisJCQkJCQkJ CQkgIHNlY3MgKiAxMDAwICsgKm1zZWNzID49IGxvZ19taW5fZHVyYXRpb25fc2FtcGxlKSkpOwog CiAJCS8qCiAJCSAqIERvIG5vdCBsb2cgaWYgbG9nX3N0YXRlbWVudF9zYW1wbGVfcmF0ZSA9IDAu IExvZyBhIHNhbXBsZSBpZgpAQCAtMjM4MCwxMyArMjQyNywxNyBAQCBjaGVja19sb2dfZHVyYXRp b24oY2hhciAqbXNlY19zdHIsIGJvb2wgd2FzX2xvZ2dlZCkKIAkJaWYgKGV4Y2VlZGVkX2R1cmF0 aW9uIHx8IGluX3NhbXBsZSB8fCBsb2dfZHVyYXRpb24gfHwgeGFjdF9pc19zYW1wbGVkKQogCQl7 CiAJCQlzbnByaW50Zihtc2VjX3N0ciwgMzIsICIlbGQuJTAzZCIsCi0JCQkJCSBzZWNzICogMTAw MCArIG1zZWNzLCB1c2VjcyAlIDEwMDApOworCQkJCQkgc2VjcyAqIDEwMDAgKyAqbXNlY3MsIHVz ZWNzICUgMTAwMCk7CiAJCQlpZiAoKGV4Y2VlZGVkX2R1cmF0aW9uIHx8IGluX3NhbXBsZSB8fCB4 YWN0X2lzX3NhbXBsZWQpICYmICF3YXNfbG9nZ2VkKQogCQkJCXJldHVybiAyOwogCQkJZWxzZQog CQkJCXJldHVybiAxOwogCQl9CiAJfQorCWVsc2UKKwl7CisJCSptc2VjcyA9IC0xOworCX0KIAog CXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggMjJiNTU3MWE3MC4uN2U5ODU5YTll MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC02NDIsNiArNjQyLDcgQEAgaW50CQkJbG9nX3BhcmFt ZXRlcl9tYXhfbGVuZ3RoX29uX2Vycm9yID0gMDsKIGludAkJCWxvZ190ZW1wX2ZpbGVzID0gLTE7 CiBkb3VibGUJCWxvZ19zdGF0ZW1lbnRfc2FtcGxlX3JhdGUgPSAxLjA7CiBkb3VibGUJCWxvZ194 YWN0X3NhbXBsZV9yYXRlID0gMDsKK2RvdWJsZQkJaml0X3dhcm5fYWJvdmVfZnJhY3Rpb24gPSAw OwogaW50CQkJdHJhY2VfcmVjb3ZlcnlfbWVzc2FnZXMgPSBMT0c7CiBjaGFyCSAgICpiYWNrdHJh Y2VfZnVuY3Rpb25zOwogY2hhcgkgICAqYmFja3RyYWNlX3N5bWJvbF9saXN0OwpAQCAtMzk0Myw2 ICszOTQ0LDE5IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX3JlYWwgQ29uZmlndXJlTmFtZXNSZWFs W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJqaXRfd2Fybl9hYm92ZV9m cmFjdGlvbiIsIFBHQ19VU0VSU0VULCBMT0dHSU5HX1dIRU4sCisJCQlnZXR0ZXh0X25vb3AoIlNl dHMgdGhlIGZyYWN0aW9uIG9mIHF1ZXJ5IHRpbWUgc3BlbnQgb24gSklUIGJlZm9yZSB3cml0aW5n ICIKKwkJCQkJCSAiYSB3YXJuaW5nIHRvIHRoZSBsb2cuIiksCisJCQlnZXR0ZXh0X25vb3AoIldy aXRlIGEgbWVzc2FnZSB0byB0aGUgc2VydmVyIGxvZyBpZiBtb3JlIHRoYW4gdGhpcyAiCisJCQkJ CQkgImZyYWN0aW9uIG9mIHRoZSBxdWVyeSBydW50aW1lIGlzIHNwZW50IG9uIEpJVC4gIgorCQkJ CQkJICJaZXJvIHR1cm5zIG9mZiB0aGUgd2FybmluZy4iKQorCQl9LAorCQkmaml0X3dhcm5fYWJv dmVfZnJhY3Rpb24sCisJCTAuMCwgMC4wLCAxLjAsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAor CiAJLyogRW5kLW9mLWxpc3QgbWFya2VyICovCiAJewogCQl7TlVMTCwgMCwgMCwgTlVMTCwgTlVM TH0sIE5VTEwsIDAuMCwgMC4wLCAwLjAsIE5VTEwsIE5VTEwsIE5VTEwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCA5NDI3MGViMGVjLi44MmQw ZjUxMzViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC00MTEsNiArNDExLDggQEAKICNqaXRfb3B0aW1pemVfYWJvdmVfY29zdCA9IDUwMDAw MAkjIHVzZSBleHBlbnNpdmUgSklUIG9wdGltaXphdGlvbnMgaWYKIAkJCQkJIyBxdWVyeSBpcyBt b3JlIGV4cGVuc2l2ZSB0aGFuIHRoaXM7CiAJCQkJCSMgLTEgZGlzYWJsZXMKKyNqaXRfd2Fybl9h Ym92ZV9mcmFjdGlvbiA9IDAJCSMgd2FybiBpZiBKSVQgaXMgbW9yZSB0aGFuIHRoaXMgZnJhY3Rp b24gb2YKKwkJCQkJIyBxdWVyeSBydW50aW1lLiAwIGRpc2FibGVzLgogCiAjIC0gR2VuZXRpYyBR dWVyeSBPcHRpbWl6ZXIgLQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9qaXQvaml0LmggYi9z cmMvaW5jbHVkZS9qaXQvaml0LmgKaW5kZXggNzA3MTc2ZDllZC4uNTliMzdkNmRjMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvaml0L2ppdC5oCisrKyBiL3NyYy9pbmNsdWRlL2ppdC9qaXQuaApA QCAtODksNiArODksNyBAQCBleHRlcm4gYm9vbCBqaXRfdHVwbGVfZGVmb3JtaW5nOwogZXh0ZXJu IGRvdWJsZSBqaXRfYWJvdmVfY29zdDsKIGV4dGVybiBkb3VibGUgaml0X2lubGluZV9hYm92ZV9j b3N0OwogZXh0ZXJuIGRvdWJsZSBqaXRfb3B0aW1pemVfYWJvdmVfY29zdDsKK2V4dGVybiBkb3Vi bGUgaml0X3dhcm5fYWJvdmVfZnJhY3Rpb247CiAKIAogZXh0ZXJuIHZvaWQgaml0X3Jlc2V0X2Fm dGVyX2Vycm9yKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5o IGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCmluZGV4IDkyMjkxYTc1MGQuLjNmMTJmN2Zl MjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5j bHVkZS90Y29wL3Rjb3Bwcm90LmgKQEAgLTg3LDcgKzg3LDcgQEAgZXh0ZXJuIHZvaWQgUG9zdGdy ZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwKIGV4dGVybiBsb25nIGdldF9zdGFja19kZXB0aF9y bGltaXQodm9pZCk7CiBleHRlcm4gdm9pZCBSZXNldFVzYWdlKHZvaWQpOwogZXh0ZXJuIHZvaWQg U2hvd1VzYWdlKGNvbnN0IGNoYXIgKnRpdGxlKTsKLWV4dGVybiBpbnQJY2hlY2tfbG9nX2R1cmF0 aW9uKGNoYXIgKm1zZWNfc3RyLCBib29sIHdhc19sb2dnZWQpOworZXh0ZXJuIGludAljaGVja19s b2dfZHVyYXRpb24oaW50ICptc2VjLCBjaGFyICptc2VjX3N0ciwgYm9vbCB3YXNfbG9nZ2VkKTsK IGV4dGVybiB2b2lkIHNldF9kZWJ1Z19vcHRpb25zKGludCBkZWJ1Z19mbGFnLAogCQkJCQkJCSAg R3VjQ29udGV4dCBjb250ZXh0LCBHdWNTb3VyY2Ugc291cmNlKTsKIGV4dGVybiBib29sIHNldF9w bGFuX2Rpc2FibGluZ19vcHRpb25zKGNvbnN0IGNoYXIgKmFyZywK --0000000000004afc9d05dc22e117--