From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030307AbbKDBaf (ORCPT ); Tue, 3 Nov 2015 20:30:35 -0500 Received: from mail-ig0-f177.google.com ([209.85.213.177]:38316 "EHLO mail-ig0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932739AbbKDBaa (ORCPT ); Tue, 3 Nov 2015 20:30:30 -0500 MIME-Version: 1.0 In-Reply-To: References: <20151103091636.GA23350@gmail.com> Date: Tue, 3 Nov 2015 17:30:29 -0800 X-Google-Sender-Auth: 2ohqE5JxJb-HZwHcO0dr75JVWW4 Message-ID: Subject: Re: [GIT PULL] locking changes for v4.4 From: Linus Torvalds To: Ingo Molnar , Dmitry Vyukov Cc: Linux Kernel Mailing List , Peter Zijlstra , Thomas Gleixner , "Paul E. McKenney" , Andrew Morton Content-Type: multipart/mixed; boundary=047d7bd75baca5d5260523acf4c1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --047d7bd75baca5d5260523acf4c1 Content-Type: text/plain; charset=UTF-8 On Tue, Nov 3, 2015 at 3:58 PM, Linus Torvalds wrote: > > I think I'll pull this, but then just make a separate commit to remove > all the bogus games with "control" dependencies that seem to have no > basis is reality. So the attached is what I committed in my tree. It took much longer to try to write the rationale than it took to actually remove the atomic_read_ctrl() functions, and even so I'm not sure how good that commit message is. But at least it tries to explain what's going on. Note the final part of the rationale: I may have to eat my words at some point, but in the absense of clear proof that alpha actually needs this, or indeed even an explanation of how alpha could _possibly_ need it, I do not believe these functions are called for. And if it turns out that alpha really _does_ need a barrier for this case, that barrier still should not be "smp_read_barrier_depends()". We'd have to make up some new speciality barrier just for alpha, along with the documentation for why it really is necessary. so it's possible that we'll have to re-introduce these things, even if I am obviously doubtful. However, if we do that, I think we need much more explanations for why they would be necessary, and we'd want to make another "smp_read_to_write_ctrl_barrier()" or something that makes this particular ordering explicit. Because I don't think "smp_read_barrier_depends()" is that barrier, even if it might have a very similar implementation. >>From everything I have seen in the alpha architecture manual, it is really just read-to-dependent-read that is special (and in fact alpha there is "consistent": it doesn't matter whether there's a data dependency or a control dependency between the two reads). While "read-to-dependent-write" actually seems to be documented to be ordered, and act like other architectures (and again, it doesn't matter whether it's a control or data dependency between the read and the write). That said, I sure did *not* enjoy reading that crazy memory ordering documentation again. People who say that x86 memory ordering isn't clearly defined have clearly not read the alpha manual. Gods, I hope I will never have to try to read that ever again... Added Dmitry Vyukov to the cc, since he seems to be one of the people who wanted to use the atomic_read_ctrl() thing. So at least for now, it's just something we assume is always valid for READ_ONCE() and for atomic*_read(): doing a dependent write is just "ordered" with the read it depends on (whether that's a control dependency or a data one). Linus --047d7bd75baca5d5260523acf4c1 Content-Type: text/x-patch; charset=US-ASCII; name="0001-atomic-remove-all-traces-of-READ_ONCE_CTRL-and-atomi.patch" Content-Disposition: attachment; filename="0001-atomic-remove-all-traces-of-READ_ONCE_CTRL-and-atomi.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_igk4e47m0 RnJvbSAxMDVmZjNjYmYyMjUwMzZiNzVhNmE0NmM5NmQxZGRjZThlN2JkYzY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IFR1ZSwgMyBOb3YgMjAxNSAxNzoyMjoxNyAtMDgwMApTdWJqZWN0OiBb UEFUQ0hdIGF0b21pYzogcmVtb3ZlIGFsbCB0cmFjZXMgb2YgUkVBRF9PTkNFX0NUUkwoKSBhbmQK IGF0b21pYypfcmVhZF9jdHJsKCkKClRoaXMgc2VlbXMgdG8gYmUgYSBtaXMtcmVhZGluZyBvZiBo b3cgYWxwaGEgbWVtb3J5IG9yZGVyaW5nIHdvcmtzLCBhbmQKaXMgbm90IGJhY2tlZCB1cCBieSB0 aGUgYWxwaGEgYXJjaGl0ZWN0dXJlIG1hbnVhbC4gIFRoZSBoZWxwZXIgZnVuY3Rpb25zCmRvbid0 IGRvIGFueXRoaW5nIHNwZWNpYWwgb24gYW55IG90aGVyIGFyY2hpdGVjdHVyZXMsIGFuZCB0aGUg YXJndW1lbnRzCnRoYXQgc3VwcG9ydCB0aGVtIGJlaW5nIHNhZmUgb24gb3RoZXIgYXJjaGl0ZWN0 dXJlcyBhbHNvIGFyZ3VlIHRoYXQgdGhleQphcmUgc2FmZSBvbiBhbHBoYS4KCkJhc2ljYWxseSwg dGhlICJjb250cm9sIGRlcGVuZGVuY3kiIGlzIGJldHdlZW4gYSBwcmV2aW91cyByZWFkIGFuZCBh CnN1YnNlcXVlbnQgd3JpdGUgdGhhdCBpcyBkZXBlbmRlbnQgb24gdGhlIHZhbHVlIHJlYWQuICBF dmVuIGlmIHRoZQpzdWJzZXF1ZW50IHdyaXRlIGlzIGFjdHVhbGx5IGRvbmUgc3BlY3VsYXRpdmVs eSwgdGhlcmUgaXMgbm8gd2F5IHRoYXQKc3VjaCBhIHNwZWN1bGF0aXZlIHdyaXRlIGNvdWxkIGJl IG1hZGUgdmlzaWJsZSB0byBvdGhlciBjcHUncyB1bnRpbCBpdApoYXMgYmVlbiBjb21taXR0ZWQs IHdoaWNoIHJlcXVpcmVzIHZhbGlkYXRpbmcgdGhlIHNwZWN1bGF0aW9uLgoKTm90ZSB0aGF0IG1v c3Qgd2Vha2VseSBvcmRlcmVkIGFyY2hpdGVjdHVyZXMgKHZlcnkgbXVjaCBpbmNsdWRpbmcgYWxw aGEpCmRvIG5vdCBndWFyYW50ZWUgYW55IG9yZGVyaW5nIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3 byBsb2FkcyB0aGF0IGRlcGVuZApvbiBlYWNoIG90aGVyIG9uIGEgY29udHJvbCBkZXBlbmRlbmN5 OgoKICAgIHJlYWQgQQogICAgaWYgKHZhbCA9PSAxKQogICAgICAgIHJlYWQgQgoKYmVjYXVzZSB0 aGUgY29uZGl0aW9uYWwgbWF5IGJlIHByZWRpY3RlZCwgYW5kIHRoZSAicmVhZCBCIiBtYXkgYmUK c3BlY3VsYXRpdmVseSBtb3ZlZCB1cCB0byBiZWZvcmUgcmVhZGluZyB0aGUgdmFsdWUgQS4gIFNv IHdlIHJlcXVpcmUgdGhlCnVzZXIgdG8gaW5zZXJ0IGEgc21wX3JtYigpIGJldHdlZW4gdGhlIHR3 byBhY2Nlc3NlcyB0byBiZSBjb3JyZWN0OgoKICAgIHJlYWQgQTsKICAgIGlmIChBID09IDEpCiAg ICAgICAgc21wX3JtYigpCiAgICAgICAgcmVhZCBCCgpBbHBoYSBpcyBmdXJ0aGVyIHNwZWNpYWwg aW4gdGhhdCBpdCBjYW4gYnJlYWsgdGhhdCBvcmRlcmluZyBldmVuIGlmIHRoZQoqYWRkcmVzcyog b2YgQiBkZXBlbmRzIG9uIHRoZSByZWFkIG9mIEEsIGJlY2F1c2UgdGhlIGNhY2hlbGluZSB0aGF0 IGlzCnJlYWQgbGF0ZXIgbWF5IGJlIHN0YWxlIHVubGVzcyB5b3UgaGF2ZSBhIG1lbW9yeSBiYXJy aWVyIGluIGJldHdlZW4gdGhlCnBvaW50ZXIgcmVhZCBhbmQgdGhlIHJlYWQgb2YgdGhlIHZhbHVl IGJlaGluZCBhIHBvaW50ZXI6CgogICAgcmVhZCBwdHIKICAgIHJlYWQgb2Zmc2V0KHB0cikKCndo ZXJlYXMgYWxsIG90aGVyIHdlYWtseSBvcmRlcmVkIGFyY2hpdGVjdHVyZXMgZ3VhcmFudGVlIHRo YXQgdGhlIGRhdGEKZGVwZW5kZW5jeSAoYXMgb3Bwb3NlZCB0byBqdXN0IGEgY29udHJvbCBkZXBl bmRlbmN5KSB3aWxsIG9yZGVyIHRoZSB0d28KYWNjZXNzZXMuICBBcyBhIHJlc3VsdCwgYWxwaGEg bmVlZHMgYSAic21wX3JlYWRfYmFycmllcl9kZXBlbmRzKCkiIGluCmJldHdlZW4gdGhvc2UgdHdv IHJlYWRzIGZvciB0aGVtIHRvIGJlIG9yZGVyZWQuCgpUaGUgY29vbnRyb2wgZGVwZW5kZW5jeSB0 aGF0ICJSRUFEX09OQ0VfQ1RSTCgpIiBhbmQgImF0b21pY19yZWFkX2N0cmwoKSIKaGFkIHdhcyBh IGNvbnRyb2wgZGVwZW5kZW5jeSB0byBhIHN1YnNlcXVlbnQgKndyaXRlKiwgaG93ZXZlciwgYW5k Cm5vYm9keSBjYW4gZmluYWxpemUgc3VjaCBhIHN1YnNlcXVlbnQgd3JpdGUgd2l0aG91dCBoYXZp bmcgYWN0dWFsbHkgZG9uZQp0aGUgcmVhZC4gIEFuZCB3ZXJlIHlvdSB0byB3cml0ZSBzdWNoIGEg dmFsdWUgdG8gYSAic3RhbGUiIGNhY2hlbGluZQoodGhlIHdheSB0aGUgdW5vcmRlcmVkIHJlYWRz IGNhbWUgdG8gYmUpLCB0aGF0IHdvdWxkIHNlZW0gdG8gbG9zZSB0aGUKd3JpdGUgZW50aXJlbHku CgpTbyB0aGUgdGhpbmdzIHRoYXQgbWFrZSBhbHBoYSBhYmxlIHRvIHJlLW9yZGVyIHJlYWRzIGV2 ZW4gbW9yZQphZ2dyZXNzaXZlbHkgdGhhbiBvdGhlciB3ZWFrIGFyY2hpdGVjdHVyZXMgZG8gbm90 IHNlZW0gdG8gYmUgcmVsZXZhbnQKZm9yIGEgc3Vic2VxdWVudCB3cml0ZS4gIEFscGhhIG1lbW9y eSBvcmRlcmluZyBtYXkgYmUgc3RyYW5nZSwgYnV0CnRoZXJlJ3Mgbm8gcmVhbCBpbmRpY2F0aW9u IHRoYXQgaXQgaXMgKnRoYXQqIHN0cmFuZ2UuCgpBbHNvLCB0aGUgYWxwaGEgYXJjaGl0ZWN0dXJl IHJlZmVyZW5jZSBtYW51YWwgdmVyeSBleHBsaWNpdGx5IHRhbGtzCmFib3V0IHRoZSBkZWZpbml0 aW9uIG9mICJEZXBlbmRlbmNlIENvbnN0cmFpbnRzIiBpbiBzZWN0aW9uIDUuNi4xLjcsCndoZXJl IGEgcHJlY2VkaW5nIHJlYWQgZG9taW5hdGVzIGEgc3Vic2VxdWVudCB3cml0ZS4KClN1Y2ggYSBk ZXBlbmRlbmNlIGNvbnN0cmFpbnQgYWRtaXR0ZWRseSBkb2VzIG5vdCBpbXBvc2UgYSBCRUZPUkUg KGFscGhhCmFyY2hpdGVjdHVyZSB0ZXJtIGZvciBnbG9iYWxseSB2aXNpYmxlIG9yZGVyaW5nKSwg YnV0IGl0IGRvZXMgZ3VhcmFudGVlCnRoYXQgdGhlcmUgY2FuIGJlIG5vICJjYXVzYWwgbG9vcCIu ICBJIGRvbid0IHNlZSBob3cgeW91IGNvdWxkIGF2b2lkCnN1Y2ggYSBsb29wIGlmIGFub3RoZXIg Y3B1IGNvdWxkIHNlZSB0aGUgc3RvcmVkIHZhbHVlIGFuZCB0aGVuIGltcGFjdAp0aGUgdmFsdWUg b2YgdGhlIGZpcnN0IHJlYWQuICBQdXQgYW5vdGhlciB3YXk6IHRoZSByZWFkIGFuZCB0aGUgd3Jp dGUKY291bGQgbm90IGJlIHNlZW4gYXMgYmVpbmcgb3V0IG9mIG9yZGVyIHdydCBvdGhlciBjcHVz LgoKU28gSSBkbyBub3Qgc2VlIGhvdyB0aGVzZSAieF9jdHJsKCkiIGZ1bmN0aW9ucyBjYW4gY3Vy cmVudGx5IGJlIG5lY2Vzc2FyeS4KCkkgbWF5IGhhdmUgdG8gZWF0IG15IHdvcmRzIGF0IHNvbWUg cG9pbnQsIGJ1dCBpbiB0aGUgYWJzZW5zZSBvZiBjbGVhcgpwcm9vZiB0aGF0IGFscGhhIGFjdHVh bGx5IG5lZWRzIHRoaXMsIG9yIGluZGVlZCBldmVuIGFuIGV4cGxhbmF0aW9uIG9mCmhvdyBhbHBo YSBjb3VsZCBfcG9zc2libHlfIG5lZWQgaXQsIEkgZG8gbm90IGJlbGlldmUgdGhlc2UgZnVuY3Rp b25zIGFyZQpjYWxsZWQgZm9yLgoKQW5kIGlmIGl0IHR1cm5zIG91dCB0aGF0IGFscGhhIHJlYWxs eSBfZG9lc18gbmVlZCBhIGJhcnJpZXIgZm9yIHRoaXMKY2FzZSwgdGhhdCBiYXJyaWVyIHN0aWxs IHNob3VsZCBub3QgYmUgInNtcF9yZWFkX2JhcnJpZXJfZGVwZW5kcygpIi4KV2UnZCBoYXZlIHRv IG1ha2UgdXAgc29tZSBuZXcgc3BlY2lhbGl0eSBiYXJyaWVyIGp1c3QgZm9yIGFscGhhLCBhbG9u Zwp3aXRoIHRoZSBkb2N1bWVudGF0aW9uIGZvciB3aHkgaXQgcmVhbGx5IGlzIG5lY2Vzc2FyeS4K CkNjOiBQZXRlciBaaWpsc3RyYSA8YS5wLnppamxzdHJhQGNoZWxsby5ubD4KQ2M6IFBhdWwgRSBN Y0tlbm5leSA8cGF1bG1ja0B1cy5pYm0uY29tPgpDYzogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBn b29nbGUuY29tPgpDYzogV2lsbCBEZWFjb24gPHdpbGwuZGVhY29uQGFybS5jb20+CkNjOiBJbmdv IE1vbG5hciA8bWluZ29Aa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTogTGludXMgVG9ydmFsZHMg PHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPgotLS0KIERvY3VtZW50YXRpb24vbWVtb3J5 LWJhcnJpZXJzLnR4dCB8IDU0ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9uZy5oIHwgIDEgLQogaW5jbHVkZS9saW51 eC9hdG9taWMuaCAgICAgICAgICAgIHwgMTggLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9saW51eC9j b21waWxlci5oICAgICAgICAgIHwgMTYgLS0tLS0tLS0tLS0tCiBrZXJuZWwvZXZlbnRzL3Jpbmdf YnVmZmVyLmMgICAgICAgfCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCsp LCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lbW9yeS1iYXJy aWVycy50eHQgYi9Eb2N1bWVudGF0aW9uL21lbW9yeS1iYXJyaWVycy50eHQKaW5kZXggYjVmZTc2 NTc0NTZlLi5hZWY5NDg3MzAzZDAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWVtb3J5LWJh cnJpZXJzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL21lbW9yeS1iYXJyaWVycy50eHQKQEAgLTYx NywxNiArNjE3LDE2IEBAIGNhc2Ugd2hhdCdzIGFjdHVhbGx5IHJlcXVpcmVkIGlzOgogSG93ZXZl ciwgc3RvcmVzIGFyZSBub3Qgc3BlY3VsYXRlZC4gIFRoaXMgbWVhbnMgdGhhdCBvcmRlcmluZyAt aXMtIHByb3ZpZGVkCiBmb3IgbG9hZC1zdG9yZSBjb250cm9sIGRlcGVuZGVuY2llcywgYXMgaW4g dGhlIGZvbGxvd2luZyBleGFtcGxlOgogCi0JcSA9IFJFQURfT05DRV9DVFJMKGEpOworCXEgPSBS RUFEX09OQ0UoYSk7CiAJaWYgKHEpIHsKIAkJV1JJVEVfT05DRShiLCBwKTsKIAl9CiAKIENvbnRy b2wgZGVwZW5kZW5jaWVzIHBhaXIgbm9ybWFsbHkgd2l0aCBvdGhlciB0eXBlcyBvZiBiYXJyaWVy cy4gIFRoYXQKLXNhaWQsIHBsZWFzZSBub3RlIHRoYXQgUkVBRF9PTkNFX0NUUkwoKSBpcyBub3Qg b3B0aW9uYWwhICBXaXRob3V0IHRoZQotUkVBRF9PTkNFX0NUUkwoKSwgdGhlIGNvbXBpbGVyIG1p Z2h0IGNvbWJpbmUgdGhlIGxvYWQgZnJvbSAnYScgd2l0aAotb3RoZXIgbG9hZHMgZnJvbSAnYScs IGFuZCB0aGUgc3RvcmUgdG8gJ2InIHdpdGggb3RoZXIgc3RvcmVzIHRvICdiJywKLXdpdGggcG9z c2libGUgaGlnaGx5IGNvdW50ZXJpbnR1aXRpdmUgZWZmZWN0cyBvbiBvcmRlcmluZy4KK3NhaWQs IHBsZWFzZSBub3RlIHRoYXQgUkVBRF9PTkNFKCkgaXMgbm90IG9wdGlvbmFsISBXaXRob3V0IHRo ZQorUkVBRF9PTkNFKCksIHRoZSBjb21waWxlciBtaWdodCBjb21iaW5lIHRoZSBsb2FkIGZyb20g J2EnIHdpdGggb3RoZXIKK2xvYWRzIGZyb20gJ2EnLCBhbmQgdGhlIHN0b3JlIHRvICdiJyB3aXRo IG90aGVyIHN0b3JlcyB0byAnYicsIHdpdGgKK3Bvc3NpYmxlIGhpZ2hseSBjb3VudGVyaW50dWl0 aXZlIGVmZmVjdHMgb24gb3JkZXJpbmcuCiAKIFdvcnNlIHlldCwgaWYgdGhlIGNvbXBpbGVyIGlz IGFibGUgdG8gcHJvdmUgKHNheSkgdGhhdCB0aGUgdmFsdWUgb2YKIHZhcmlhYmxlICdhJyBpcyBh bHdheXMgbm9uLXplcm8sIGl0IHdvdWxkIGJlIHdlbGwgd2l0aGluIGl0cyByaWdodHMKQEAgLTYz NiwxNiArNjM2LDEyIEBAIGFzIGZvbGxvd3M6CiAJcSA9IGE7CiAJYiA9IHA7ICAvKiBCVUc6IENv bXBpbGVyIGFuZCBDUFUgY2FuIGJvdGggcmVvcmRlciEhISAqLwogCi1GaW5hbGx5LCB0aGUgUkVB RF9PTkNFX0NUUkwoKSBpbmNsdWRlcyBhbiBzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKQotdGhh dCBERUMgQWxwaGEgbmVlZHMgaW4gb3JkZXIgdG8gcmVzcGVjdCBjb250cm9sIGRlcGVkZW5jaWVz LiBBbHRlcm5hdGl2ZWx5Ci11c2Ugb25lIG9mIGF0b21pY3ssNjR9X3JlYWRfY3RybCgpLgotCi1T byBkb24ndCBsZWF2ZSBvdXQgdGhlIFJFQURfT05DRV9DVFJMKCkuCitTbyBkb24ndCBsZWF2ZSBv dXQgdGhlIFJFQURfT05DRSgpLgogCiBJdCBpcyB0ZW1wdGluZyB0byB0cnkgdG8gZW5mb3JjZSBv cmRlcmluZyBvbiBpZGVudGljYWwgc3RvcmVzIG9uIGJvdGgKIGJyYW5jaGVzIG9mIHRoZSAiaWYi IHN0YXRlbWVudCBhcyBmb2xsb3dzOgogCi0JcSA9IFJFQURfT05DRV9DVFJMKGEpOworCXEgPSBS RUFEX09OQ0UoYSk7CiAJaWYgKHEpIHsKIAkJYmFycmllcigpOwogCQlXUklURV9PTkNFKGIsIHAp OwpAQCAtNjU5LDcgKzY1NSw3IEBAIGJyYW5jaGVzIG9mIHRoZSAiaWYiIHN0YXRlbWVudCBhcyBm b2xsb3dzOgogVW5mb3J0dW5hdGVseSwgY3VycmVudCBjb21waWxlcnMgd2lsbCB0cmFuc2Zvcm0g dGhpcyBhcyBmb2xsb3dzIGF0IGhpZ2gKIG9wdGltaXphdGlvbiBsZXZlbHM6CiAKLQlxID0gUkVB RF9PTkNFX0NUUkwoYSk7CisJcSA9IFJFQURfT05DRShhKTsKIAliYXJyaWVyKCk7CiAJV1JJVEVf T05DRShiLCBwKTsgIC8qIEJVRzogTm8gb3JkZXJpbmcgdnMuIGxvYWQgZnJvbSBhISEhICovCiAJ aWYgKHEpIHsKQEAgLTY4OSw3ICs2ODUsNyBAQCBtZW1vcnkgYmFycmllcnMsIGZvciBleGFtcGxl LCBzbXBfc3RvcmVfcmVsZWFzZSgpOgogSW4gY29udHJhc3QsIHdpdGhvdXQgZXhwbGljaXQgbWVt b3J5IGJhcnJpZXJzLCB0d28tbGVnZ2VkLWlmIGNvbnRyb2wKIG9yZGVyaW5nIGlzIGd1YXJhbnRl ZWQgb25seSB3aGVuIHRoZSBzdG9yZXMgZGlmZmVyLCBmb3IgZXhhbXBsZToKIAotCXEgPSBSRUFE X09OQ0VfQ1RSTChhKTsKKwlxID0gUkVBRF9PTkNFKGEpOwogCWlmIChxKSB7CiAJCVdSSVRFX09O Q0UoYiwgcCk7CiAJCWRvX3NvbWV0aGluZygpOwpAQCAtNjk4LDE0ICs2OTQsMTQgQEAgb3JkZXJp bmcgaXMgZ3VhcmFudGVlZCBvbmx5IHdoZW4gdGhlIHN0b3JlcyBkaWZmZXIsIGZvciBleGFtcGxl OgogCQlkb19zb21ldGhpbmdfZWxzZSgpOwogCX0KIAotVGhlIGluaXRpYWwgUkVBRF9PTkNFX0NU UkwoKSBpcyBzdGlsbCByZXF1aXJlZCB0byBwcmV2ZW50IHRoZSBjb21waWxlcgotZnJvbSBwcm92 aW5nIHRoZSB2YWx1ZSBvZiAnYScuCitUaGUgaW5pdGlhbCBSRUFEX09OQ0UoKSBpcyBzdGlsbCBy ZXF1aXJlZCB0byBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tCitwcm92aW5nIHRoZSB2YWx1ZSBv ZiAnYScuCiAKIEluIGFkZGl0aW9uLCB5b3UgbmVlZCB0byBiZSBjYXJlZnVsIHdoYXQgeW91IGRv IHdpdGggdGhlIGxvY2FsIHZhcmlhYmxlICdxJywKIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgbWln aHQgYmUgYWJsZSB0byBndWVzcyB0aGUgdmFsdWUgYW5kIGFnYWluIHJlbW92ZQogdGhlIG5lZWRl ZCBjb25kaXRpb25hbC4gIEZvciBleGFtcGxlOgogCi0JcSA9IFJFQURfT05DRV9DVFJMKGEpOwor CXEgPSBSRUFEX09OQ0UoYSk7CiAJaWYgKHEgJSBNQVgpIHsKIAkJV1JJVEVfT05DRShiLCBwKTsK IAkJZG9fc29tZXRoaW5nKCk7CkBAIC03MTgsNyArNzE0LDcgQEAgSWYgTUFYIGlzIGRlZmluZWQg dG8gYmUgMSwgdGhlbiB0aGUgY29tcGlsZXIga25vd3MgdGhhdCAocSAlIE1BWCkgaXMKIGVxdWFs IHRvIHplcm8sIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIGlzIHdpdGhpbiBpdHMgcmlnaHRz IHRvCiB0cmFuc2Zvcm0gdGhlIGFib3ZlIGNvZGUgaW50byB0aGUgZm9sbG93aW5nOgogCi0JcSA9 IFJFQURfT05DRV9DVFJMKGEpOworCXEgPSBSRUFEX09OQ0UoYSk7CiAJV1JJVEVfT05DRShiLCBw KTsKIAlkb19zb21ldGhpbmdfZWxzZSgpOwogCkBAIC03MjksNyArNzI1LDcgQEAgaXMgZ29uZSwg YW5kIHRoZSBiYXJyaWVyIHdvbid0IGJyaW5nIGl0IGJhY2suICBUaGVyZWZvcmUsIGlmIHlvdSBh cmUKIHJlbHlpbmcgb24gdGhpcyBvcmRlcmluZywgeW91IHNob3VsZCBtYWtlIHN1cmUgdGhhdCBN QVggaXMgZ3JlYXRlciB0aGFuCiBvbmUsIHBlcmhhcHMgYXMgZm9sbG93czoKIAotCXEgPSBSRUFE X09OQ0VfQ1RSTChhKTsKKwlxID0gUkVBRF9PTkNFKGEpOwogCUJVSUxEX0JVR19PTihNQVggPD0g MSk7IC8qIE9yZGVyIGxvYWQgZnJvbSBhIHdpdGggc3RvcmUgdG8gYi4gKi8KIAlpZiAocSAlIE1B WCkgewogCQlXUklURV9PTkNFKGIsIHApOwpAQCAtNzQ2LDcgKzc0Miw3IEBAIG9mIHRoZSAnaWYn IHN0YXRlbWVudC4KIFlvdSBtdXN0IGFsc28gYmUgY2FyZWZ1bCBub3QgdG8gcmVseSB0b28gbXVj aCBvbiBib29sZWFuIHNob3J0LWNpcmN1aXQKIGV2YWx1YXRpb24uICBDb25zaWRlciB0aGlzIGV4 YW1wbGU6CiAKLQlxID0gUkVBRF9PTkNFX0NUUkwoYSk7CisJcSA9IFJFQURfT05DRShhKTsKIAlp ZiAocSB8fCAxID4gMCkKIAkJV1JJVEVfT05DRShiLCAxKTsKIApAQCAtNzU0LDcgKzc1MCw3IEBA IEJlY2F1c2UgdGhlIGZpcnN0IGNvbmRpdGlvbiBjYW5ub3QgZmF1bHQgYW5kIHRoZSBzZWNvbmQg Y29uZGl0aW9uIGlzCiBhbHdheXMgdHJ1ZSwgdGhlIGNvbXBpbGVyIGNhbiB0cmFuc2Zvcm0gdGhp cyBleGFtcGxlIGFzIGZvbGxvd2luZywKIGRlZmVhdGluZyBjb250cm9sIGRlcGVuZGVuY3k6CiAK LQlxID0gUkVBRF9PTkNFX0NUUkwoYSk7CisJcSA9IFJFQURfT05DRShhKTsKIAlXUklURV9PTkNF KGIsIDEpOwogCiBUaGlzIGV4YW1wbGUgdW5kZXJzY29yZXMgdGhlIG5lZWQgdG8gZW5zdXJlIHRo YXQgdGhlIGNvbXBpbGVyIGNhbm5vdApAQCAtNzY4LDcgKzc2NCw3IEBAIHggYW5kIHkgYm90aCBi ZWluZyB6ZXJvOgogCiAJQ1BVIDAgICAgICAgICAgICAgICAgICAgICBDUFUgMQogCT09PT09PT09 PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT0KLQlyMSA9IFJFQURfT05D RV9DVFJMKHgpOyAgIHIyID0gUkVBRF9PTkNFX0NUUkwoeSk7CisJcjEgPSBSRUFEX09OQ0UoeCk7 ICAgICAgICByMiA9IFJFQURfT05DRSh5KTsKIAlpZiAocjEgPiAwKSAgICAgICAgICAgICAgIGlm IChyMiA+IDApCiAJICBXUklURV9PTkNFKHksIDEpOyAgICAgICAgIFdSSVRFX09OQ0UoeCwgMSk7 CiAKQEAgLTc5NywxMSArNzkzLDYgQEAgc2l0ZTogaHR0cHM6Ly93d3cuY2wuY2FtLmFjLnVrL35w ZXMyMC9wcGNtZW0vaW5kZXguaHRtbC4KIAogSW4gc3VtbWFyeToKIAotICAoKikgQ29udHJvbCBk ZXBlbmRlbmNpZXMgbXVzdCBiZSBoZWFkZWQgYnkgUkVBRF9PTkNFX0NUUkwoKSwKLSAgICAgIGF0 b21pY3ssNjR9X3JlYWRfY3RybCgpLiBPciwgYXMgYSBtdWNoIGxlc3MgcHJlZmVyYWJsZSBhbHRl cm5hdGl2ZSwKLSAgICAgIGludGVycG9zZSBzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKSBiZXR3 ZWVuIGEgUkVBRF9PTkNFKCkgYW5kIHRoZQotICAgICAgY29udHJvbC1kZXBlbmRlbnQgd3JpdGUu Ci0KICAgKCopIENvbnRyb2wgZGVwZW5kZW5jaWVzIGNhbiBvcmRlciBwcmlvciBsb2FkcyBhZ2Fp bnN0IGxhdGVyIHN0b3Jlcy4KICAgICAgIEhvd2V2ZXIsIHRoZXkgZG8gLW5vdC0gZ3VhcmFudGVl IGFueSBvdGhlciBzb3J0IG9mIG9yZGVyaW5nOgogICAgICAgTm90IHByaW9yIGxvYWRzIGFnYWlu c3QgbGF0ZXIgbG9hZHMsIG5vciBwcmlvciBzdG9yZXMgYWdhaW5zdApAQCAtODE3LDE0ICs4MDgs MTMgQEAgSW4gc3VtbWFyeToKICAgICAgIGJldHdlZW4gdGhlIHByaW9yIGxvYWQgYW5kIHRoZSBz dWJzZXF1ZW50IHN0b3JlLCBhbmQgdGhpcwogICAgICAgY29uZGl0aW9uYWwgbXVzdCBpbnZvbHZl IHRoZSBwcmlvciBsb2FkLiAgSWYgdGhlIGNvbXBpbGVyIGlzIGFibGUKICAgICAgIHRvIG9wdGlt aXplIHRoZSBjb25kaXRpb25hbCBhd2F5LCBpdCB3aWxsIGhhdmUgYWxzbyBvcHRpbWl6ZWQKLSAg ICAgIGF3YXkgdGhlIG9yZGVyaW5nLiAgQ2FyZWZ1bCB1c2Ugb2YgUkVBRF9PTkNFX0NUUkwoKSBS RUFEX09OQ0UoKSwKLSAgICAgIGFuZCBXUklURV9PTkNFKCkgY2FuIGhlbHAgdG8gcHJlc2VydmUg dGhlIG5lZWRlZCBjb25kaXRpb25hbC4KKyAgICAgIGF3YXkgdGhlIG9yZGVyaW5nLiAgQ2FyZWZ1 bCB1c2Ugb2YgUkVBRF9PTkNFKCkgYW5kIFdSSVRFX09OQ0UoKQorICAgICAgY2FuIGhlbHAgdG8g cHJlc2VydmUgdGhlIG5lZWRlZCBjb25kaXRpb25hbC4KIAogICAoKikgQ29udHJvbCBkZXBlbmRl bmNpZXMgcmVxdWlyZSB0aGF0IHRoZSBjb21waWxlciBhdm9pZCByZW9yZGVyaW5nIHRoZQotICAg ICAgZGVwZW5kZW5jeSBpbnRvIG5vbmV4aXN0ZW5jZS4gIENhcmVmdWwgdXNlIG9mIFJFQURfT05D RV9DVFJMKCksCi0gICAgICBhdG9taWN7LDY0fV9yZWFkX2N0cmwoKSBvciBzbXBfcmVhZF9iYXJy aWVyX2RlcGVuZHMoKSBjYW4gaGVscCB0bwotICAgICAgcHJlc2VydmUgeW91ciBjb250cm9sIGRl cGVuZGVuY3kuICBQbGVhc2Ugc2VlIHRoZSBDb21waWxlciBCYXJyaWVyCi0gICAgICBzZWN0aW9u IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgZGVwZW5kZW5jeSBpbnRvIG5vbmV4aXN0ZW5j ZS4gIENhcmVmdWwgdXNlIG9mIFJFQURfT05DRSgpIG9yCisgICAgICBhdG9taWN7LDY0fV9yZWFk KCkgY2FuIGhlbHAgdG8gcHJlc2VydmUgeW91ciBjb250cm9sIGRlcGVuZGVuY3kuCisgICAgICBQ bGVhc2Ugc2VlIHRoZSBDb21waWxlciBCYXJyaWVyIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRp b24uCiAKICAgKCopIENvbnRyb2wgZGVwZW5kZW5jaWVzIHBhaXIgbm9ybWFsbHkgd2l0aCBvdGhl ciB0eXBlcyBvZiBiYXJyaWVycy4KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9h dG9taWMtbG9uZy5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9uZy5oCmluZGV4IGY5 MTA5M2MyOTg0Yy4uZWIxOTczYmFkODBiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmlj L2F0b21pYy1sb25nLmgKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9uZy5oCkBA IC00Myw3ICs0Myw2IEBAIHN0YXRpYyBpbmxpbmUgbG9uZyBhdG9taWNfbG9uZ19yZWFkIyNtbyhj b25zdCBhdG9taWNfbG9uZ190ICpsKQkJXAogfQogQVRPTUlDX0xPTkdfUkVBRF9PUCgpCiBBVE9N SUNfTE9OR19SRUFEX09QKF9hY3F1aXJlKQotQVRPTUlDX0xPTkdfUkVBRF9PUChfY3RybCkKIAog I3VuZGVmIEFUT01JQ19MT05HX1JFQURfT1AKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9h dG9taWMuaCBiL2luY2x1ZGUvbGludXgvYXRvbWljLmgKaW5kZXggMjdlNTgwZDIzMmNhLi4zMDFk ZTc4ZDY1ZjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYXRvbWljLmgKKysrIGIvaW5jbHVk ZS9saW51eC9hdG9taWMuaApAQCAtNCwxNSArNCw2IEBACiAjaW5jbHVkZSA8YXNtL2F0b21pYy5o PgogI2luY2x1ZGUgPGFzbS9iYXJyaWVyLmg+CiAKLSNpZm5kZWYgYXRvbWljX3JlYWRfY3RybAot c3RhdGljIGlubGluZSBpbnQgYXRvbWljX3JlYWRfY3RybChjb25zdCBhdG9taWNfdCAqdikKLXsK LQlpbnQgdmFsID0gYXRvbWljX3JlYWQodik7Ci0Jc21wX3JlYWRfYmFycmllcl9kZXBlbmRzKCk7 IC8qIEVuZm9yY2UgY29udHJvbCBkZXBlbmRlbmN5LiAqLwotCXJldHVybiB2YWw7Ci19Ci0jZW5k aWYKLQogLyoKICAqIFJlbGF4ZWQgdmFyaWFudHMgb2YgeGNoZywgY21weGNoZyBhbmQgc29tZSBh dG9taWMgb3BlcmF0aW9ucy4KICAqCkBAIC01NjEsMTUgKzU1Miw2IEBAIHN0YXRpYyBpbmxpbmUg aW50IGF0b21pY19kZWNfaWZfcG9zaXRpdmUoYXRvbWljX3QgKnYpCiAjaW5jbHVkZSA8YXNtLWdl bmVyaWMvYXRvbWljNjQuaD4KICNlbmRpZgogCi0jaWZuZGVmIGF0b21pYzY0X3JlYWRfY3RybAot c3RhdGljIGlubGluZSBsb25nIGxvbmcgYXRvbWljNjRfcmVhZF9jdHJsKGNvbnN0IGF0b21pYzY0 X3QgKnYpCi17Ci0JbG9uZyBsb25nIHZhbCA9IGF0b21pYzY0X3JlYWQodik7Ci0Jc21wX3JlYWRf YmFycmllcl9kZXBlbmRzKCk7IC8qIEVuZm9yY2UgY29udHJvbCBkZXBlbmRlbmN5LiAqLwotCXJl dHVybiB2YWw7Ci19Ci0jZW5kaWYKLQogI2lmbmRlZiBhdG9taWM2NF9hbmRub3QKIHN0YXRpYyBp bmxpbmUgdm9pZCBhdG9taWM2NF9hbmRub3QobG9uZyBsb25nIGksIGF0b21pYzY0X3QgKnYpCiB7 CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmggYi9pbmNsdWRlL2xpbnV4L2Nv bXBpbGVyLmgKaW5kZXggM2Q3ODEwMzQxYjU3Li5mZTgxNzQzMjE5MGMgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbGludXgvY29tcGlsZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgKQEAg LTI5OSwyMiArMjk5LDYgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIF9fd3JpdGVfb25j ZV9zaXplKHZvbGF0aWxlIHZvaWQgKnAsIHZvaWQgKnJlcywgaW50IHMKIAlfX3UuX192YWw7CQkJ CQlcCiB9KQogCi0vKioKLSAqIFJFQURfT05DRV9DVFJMIC0gUmVhZCBhIHZhbHVlIGhlYWRpbmcg YSBjb250cm9sIGRlcGVuZGVuY3kKLSAqIEB4OiBUaGUgdmFsdWUgdG8gYmUgcmVhZCwgaGVhZGlu ZyB0aGUgY29udHJvbCBkZXBlbmRlbmN5Ci0gKgotICogQ29udHJvbCBkZXBlbmRlbmNpZXMgYXJl IHRyaWNreS4gIFNlZSBEb2N1bWVudGF0aW9uL21lbW9yeS1iYXJyaWVycy50eHQKLSAqIGZvciBp bXBvcnRhbnQgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVtLiAgTm90ZSB0aGF0IGluIG1h bnkgY2FzZXMsCi0gKiB1c2Ugb2Ygc21wX2xvYWRfYWNxdWlyZSgpIHdpbGwgYmUgbXVjaCBzaW1w bGVyLiAgQ29udHJvbCBkZXBlbmRlbmNpZXMKLSAqIHNob3VsZCBiZSBhdm9pZGVkIGV4Y2VwdCBv biB0aGUgaG90dGVzdCBvZiBob3RwYXRocy4KLSAqLwotI2RlZmluZSBSRUFEX09OQ0VfQ1RSTCh4 KSBcCi0oeyBcCi0JdHlwZW9mKHgpIF9fdmFsID0gUkVBRF9PTkNFKHgpOyBcCi0Jc21wX3JlYWRf YmFycmllcl9kZXBlbmRzKCk7IC8qIEVuZm9yY2UgY29udHJvbCBkZXBlbmRlbmN5LiAqLyBcCi0J X192YWw7IFwKLX0pCi0KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCiAKICNlbmRpZiAvKiBfX0FT U0VNQkxZX18gKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9ldmVudHMvcmluZ19idWZmZXIuYyBiL2tl cm5lbC9ldmVudHMvcmluZ19idWZmZXIuYwppbmRleCAxODJiYzMwODk5ZDUuLmI1ZDFlYTc5YzU5 NSAxMDA2NDQKLS0tIGEva2VybmVsL2V2ZW50cy9yaW5nX2J1ZmZlci5jCisrKyBiL2tlcm5lbC9l dmVudHMvcmluZ19idWZmZXIuYwpAQCAtMTQxLDcgKzE0MSw3IEBAIGludCBwZXJmX291dHB1dF9i ZWdpbihzdHJ1Y3QgcGVyZl9vdXRwdXRfaGFuZGxlICpoYW5kbGUsCiAJcGVyZl9vdXRwdXRfZ2V0 X2hhbmRsZShoYW5kbGUpOwogCiAJZG8gewotCQl0YWlsID0gUkVBRF9PTkNFX0NUUkwocmItPnVz ZXJfcGFnZS0+ZGF0YV90YWlsKTsKKwkJdGFpbCA9IFJFQURfT05DRShyYi0+dXNlcl9wYWdlLT5k YXRhX3RhaWwpOwogCQlvZmZzZXQgPSBoZWFkID0gbG9jYWxfcmVhZCgmcmItPmhlYWQpOwogCQlp ZiAoIXJiLT5vdmVyd3JpdGUgJiYKIAkJICAgIHVubGlrZWx5KENJUkNfU1BBQ0UoaGVhZCwgdGFp bCwgcGVyZl9kYXRhX3NpemUocmIpKSA8IHNpemUpKQotLSAKMi42LjIuNDAyLmcyNjM1YzJiCgo= --047d7bd75baca5d5260523acf4c1--