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=-5.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no 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 E3F6CC433ED for ; Wed, 5 May 2021 10:28:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A1ECF613B3 for ; Wed, 5 May 2021 10:28:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232566AbhEEK3p (ORCPT ); Wed, 5 May 2021 06:29:45 -0400 Received: from mga03.intel.com ([134.134.136.65]:3871 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229559AbhEEK3p (ORCPT ); Wed, 5 May 2021 06:29:45 -0400 IronPort-SDR: ElRX5uEn6AjY5Fen2dmUS+e9ofi3uOirPXWWHt/vd2mTiuipEAPa+/W7WK+goe2vcw6Ci2WNHg M9q+Vn0uPx2Q== X-IronPort-AV: E=McAfee;i="6200,9189,9974"; a="198234841" X-IronPort-AV: E=Sophos;i="5.82,274,1613462400"; d="scan'208";a="198234841" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2021 03:28:49 -0700 IronPort-SDR: oN74f6sSgF4XCZmYoweQxh2eme3Q+Lr2Q0f4Zojo1rOngA3iziW4ASRUGicslRBouwtelEX6p5 BfMI5DHUysuA== X-IronPort-AV: E=Sophos;i="5.82,274,1613462400"; d="scan'208";a="618912096" Received: from paasikivi.fi.intel.com ([10.237.72.42]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2021 03:28:45 -0700 Received: from paasikivi.fi.intel.com (localhost [127.0.0.1]) by paasikivi.fi.intel.com (Postfix) with ESMTP id 43061203BC; Wed, 5 May 2021 13:28:43 +0300 (EEST) Date: Wed, 5 May 2021 13:28:43 +0300 From: Sakari Ailus To: Andy Shevchenko Cc: Hans de Goede , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , David Airlie , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Greg Kroah-Hartman , Guenter Roeck , Heikki Krogerus , intel-gfx , "dri-devel@lists.freedesktop.org" , "platform-driver-x86@vger.kernel.org" , "linux-usb@vger.kernel.org" Subject: Re: [PATCH 5/9] drm/i915: Associate ACPI connector nodes with connector entries Message-ID: <20210505102843.GM3@paasikivi.fi.intel.com> References: <20210503154647.142551-1-hdegoede@redhat.com> <20210503154647.142551-6-hdegoede@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org Hi Andy, Hans, On Wed, May 05, 2021 at 12:17:14PM +0300, Andy Shevchenko wrote: > On Wed, May 5, 2021 at 12:07 PM Hans de Goede wrote: > > On 5/4/21 9:52 AM, Andy Shevchenko wrote: > > > On Monday, May 3, 2021, Hans de Goede > wrote: > > ... > > > > + fwnode = device_get_next_child_node(kdev, fwnode); > > > > Who is dropping reference counting on fwnode ? > > > > We are dealing with ACPI fwnode-s here and those are not ref-counted, they > > are embedded inside a struct acpi_device and their lifetime is tied to > > that struct. They should probably still be ref-counted (with the count > > never dropping to 0) so that the generic fwnode functions behave the same > > anywhere but atm the ACPI nodes are not refcounted, see: acpi_get_next_subnode() > > in drivers/acpi/property.c which is the get_next_child_node() implementation > > for ACPI fwnode-s. > > Yes, ACPI currently is exceptional, but fwnode API is not. > If you may guarantee that this case won't ever be outside of ACPI and > even though if ACPI won't ever gain a reference counting for fwnodes, > we can leave it as is. > > > > I’m in the middle of a pile of fixes for fwnode refcounting when > > > for_each_child or get_next_child is used. So, please double check you > > > drop a reference. > > > > The kdoc comments on device_get_next_child_node() / fwnode_get_next_child_node() > > do not mention anything about these functions returning a reference. > > It's possible. I dunno if it had to be done earlier. Sakari? The fwnode API has worked with references for a long time, looks like from the very beginning of it, as in patch 8a0662d9ed2968e1186208336a8e1fab3fdfea63 . If you're expecting an fwnode family of function returning another node, then that function has to have taken a reference to that node before returning it. Otherwise there's no guarantee that node is still there when it is returned. It may be this is not documented for every function doing so. That should probably be added. -- Kind regards, Sakari Ailus 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=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no 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 A2352C43460 for ; Wed, 5 May 2021 10:28:51 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 3F35B613BC for ; Wed, 5 May 2021 10:28:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3F35B613BC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 711AF6E043; Wed, 5 May 2021 10:28:50 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC7426E043; Wed, 5 May 2021 10:28:49 +0000 (UTC) IronPort-SDR: 3hjGe8Ii35dxxNF5GS6MXEBOtk7byXuaTQPLPv5DTNxaSaK9qe+wN+2X5OMuMx2zy9rS+P207j i1+Ta8M82ZSQ== X-IronPort-AV: E=McAfee;i="6200,9189,9974"; a="177730928" X-IronPort-AV: E=Sophos;i="5.82,274,1613462400"; d="scan'208";a="177730928" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2021 03:28:48 -0700 IronPort-SDR: oN74f6sSgF4XCZmYoweQxh2eme3Q+Lr2Q0f4Zojo1rOngA3iziW4ASRUGicslRBouwtelEX6p5 BfMI5DHUysuA== X-IronPort-AV: E=Sophos;i="5.82,274,1613462400"; d="scan'208";a="618912096" Received: from paasikivi.fi.intel.com ([10.237.72.42]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2021 03:28:45 -0700 Received: from paasikivi.fi.intel.com (localhost [127.0.0.1]) by paasikivi.fi.intel.com (Postfix) with ESMTP id 43061203BC; Wed, 5 May 2021 13:28:43 +0300 (EEST) Date: Wed, 5 May 2021 13:28:43 +0300 From: Sakari Ailus To: Andy Shevchenko Subject: Re: [PATCH 5/9] drm/i915: Associate ACPI connector nodes with connector entries Message-ID: <20210505102843.GM3@paasikivi.fi.intel.com> References: <20210503154647.142551-1-hdegoede@redhat.com> <20210503154647.142551-6-hdegoede@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "dri-devel@lists.freedesktop.org" , Heikki Krogerus , Thomas Zimmermann , David Airlie , Greg Kroah-Hartman , intel-gfx , "platform-driver-x86@vger.kernel.org" , Hans de Goede , "linux-usb@vger.kernel.org" , Rodrigo Vivi , Guenter Roeck Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGkgQW5keSwgSGFucywKCk9uIFdlZCwgTWF5IDA1LCAyMDIxIGF0IDEyOjE3OjE0UE0gKzAzMDAs IEFuZHkgU2hldmNoZW5rbyB3cm90ZToKPiBPbiBXZWQsIE1heSA1LCAyMDIxIGF0IDEyOjA3IFBN IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gT24gNS80LzIx IDk6NTIgQU0sIEFuZHkgU2hldmNoZW5rbyB3cm90ZToKPiA+ID4gT24gTW9uZGF5LCBNYXkgMywg MjAyMSwgSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbSA8bWFpbHRvOmhkZWdvZWRl QHJlZGhhdC5jb20+PiB3cm90ZToKPiAKPiAuLi4KPiAKPiA+ID4gICAgICsgICAgICAgICAgICAg ICBmd25vZGUgPSBkZXZpY2VfZ2V0X25leHRfY2hpbGRfbm9kZShrZGV2LCBmd25vZGUpOwo+IAo+ ID4gPiBXaG8gaXMgZHJvcHBpbmcgcmVmZXJlbmNlIGNvdW50aW5nIG9uIGZ3bm9kZSA/Cj4gPgo+ ID4gV2UgYXJlIGRlYWxpbmcgd2l0aCBBQ1BJIGZ3bm9kZS1zIGhlcmUgYW5kIHRob3NlIGFyZSBu b3QgcmVmLWNvdW50ZWQsIHRoZXkKPiA+IGFyZSBlbWJlZGRlZCBpbnNpZGUgYSBzdHJ1Y3QgYWNw aV9kZXZpY2UgYW5kIHRoZWlyIGxpZmV0aW1lIGlzIHRpZWQgdG8KPiA+IHRoYXQgc3RydWN0LiBU aGV5IHNob3VsZCBwcm9iYWJseSBzdGlsbCBiZSByZWYtY291bnRlZCAod2l0aCB0aGUgY291bnQK PiA+IG5ldmVyIGRyb3BwaW5nIHRvIDApIHNvIHRoYXQgdGhlIGdlbmVyaWMgZndub2RlIGZ1bmN0 aW9ucyBiZWhhdmUgdGhlIHNhbWUKPiA+IGFueXdoZXJlIGJ1dCBhdG0gdGhlIEFDUEkgbm9kZXMg YXJlIG5vdCByZWZjb3VudGVkLCBzZWU6IGFjcGlfZ2V0X25leHRfc3Vibm9kZSgpCj4gPiBpbiBk cml2ZXJzL2FjcGkvcHJvcGVydHkuYyB3aGljaCBpcyB0aGUgZ2V0X25leHRfY2hpbGRfbm9kZSgp IGltcGxlbWVudGF0aW9uCj4gPiBmb3IgQUNQSSBmd25vZGUtcy4KPiAKPiBZZXMsIEFDUEkgY3Vy cmVudGx5IGlzIGV4Y2VwdGlvbmFsLCBidXQgZndub2RlIEFQSSBpcyBub3QuCj4gSWYgeW91IG1h eSBndWFyYW50ZWUgdGhhdCB0aGlzIGNhc2Ugd29uJ3QgZXZlciBiZSBvdXRzaWRlIG9mIEFDUEkg YW5kCj4gZXZlbiB0aG91Z2ggaWYgQUNQSSB3b24ndCBldmVyIGdhaW4gYSByZWZlcmVuY2UgY291 bnRpbmcgZm9yIGZ3bm9kZXMsCj4gd2UgY2FuIGxlYXZlIGl0IGFzIGlzLgo+IAo+ID4gPiBJ4oCZ bSBpbiB0aGUgbWlkZGxlIG9mIGEgcGlsZSBvZiBmaXhlcyBmb3IgZndub2RlIHJlZmNvdW50aW5n IHdoZW4KPiA+ID4gZm9yX2VhY2hfY2hpbGQgb3IgZ2V0X25leHRfY2hpbGQgaXMgdXNlZC4gU28s IHBsZWFzZSBkb3VibGUgY2hlY2sgeW91Cj4gPiA+IGRyb3AgYSByZWZlcmVuY2UuCj4gPgo+ID4g VGhlIGtkb2MgY29tbWVudHMgb24gZGV2aWNlX2dldF9uZXh0X2NoaWxkX25vZGUoKSAvIGZ3bm9k ZV9nZXRfbmV4dF9jaGlsZF9ub2RlKCkKPiA+IGRvIG5vdCBtZW50aW9uIGFueXRoaW5nIGFib3V0 IHRoZXNlIGZ1bmN0aW9ucyByZXR1cm5pbmcgYSByZWZlcmVuY2UuCj4gCj4gSXQncyBwb3NzaWJs ZS4gSSBkdW5ubyBpZiBpdCBoYWQgdG8gYmUgZG9uZSBlYXJsaWVyLiBTYWthcmk/CgpUaGUgZndu b2RlIEFQSSBoYXMgd29ya2VkIHdpdGggcmVmZXJlbmNlcyBmb3IgYSBsb25nIHRpbWUsIGxvb2tz IGxpa2UgZnJvbQp0aGUgdmVyeSBiZWdpbm5pbmcgb2YgaXQsIGFzIGluIHBhdGNoCjhhMDY2MmQ5 ZWQyOTY4ZTExODYyMDgzMzZhOGUxZmFiM2ZkZmVhNjMgLgoKSWYgeW91J3JlIGV4cGVjdGluZyBh biBmd25vZGUgZmFtaWx5IG9mIGZ1bmN0aW9uIHJldHVybmluZyBhbm90aGVyIG5vZGUsCnRoZW4g dGhhdCBmdW5jdGlvbiBoYXMgdG8gaGF2ZSB0YWtlbiBhIHJlZmVyZW5jZSB0byB0aGF0IG5vZGUg YmVmb3JlCnJldHVybmluZyBpdC4gT3RoZXJ3aXNlIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQg bm9kZSBpcyBzdGlsbCB0aGVyZSB3aGVuCml0IGlzIHJldHVybmVkLgoKSXQgbWF5IGJlIHRoaXMg aXMgbm90IGRvY3VtZW50ZWQgZm9yIGV2ZXJ5IGZ1bmN0aW9uIGRvaW5nIHNvLiBUaGF0IHNob3Vs ZApwcm9iYWJseSBiZSBhZGRlZC4KCi0tIApLaW5kIHJlZ2FyZHMsCgpTYWthcmkgQWlsdXMKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== 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=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no 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 90548C433B4 for ; Wed, 5 May 2021 10:28:55 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 4901D61222 for ; Wed, 5 May 2021 10:28:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4901D61222 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DBC996E122; Wed, 5 May 2021 10:28:50 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC7426E043; Wed, 5 May 2021 10:28:49 +0000 (UTC) IronPort-SDR: 3hjGe8Ii35dxxNF5GS6MXEBOtk7byXuaTQPLPv5DTNxaSaK9qe+wN+2X5OMuMx2zy9rS+P207j i1+Ta8M82ZSQ== X-IronPort-AV: E=McAfee;i="6200,9189,9974"; a="177730928" X-IronPort-AV: E=Sophos;i="5.82,274,1613462400"; d="scan'208";a="177730928" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2021 03:28:48 -0700 IronPort-SDR: oN74f6sSgF4XCZmYoweQxh2eme3Q+Lr2Q0f4Zojo1rOngA3iziW4ASRUGicslRBouwtelEX6p5 BfMI5DHUysuA== X-IronPort-AV: E=Sophos;i="5.82,274,1613462400"; d="scan'208";a="618912096" Received: from paasikivi.fi.intel.com ([10.237.72.42]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2021 03:28:45 -0700 Received: from paasikivi.fi.intel.com (localhost [127.0.0.1]) by paasikivi.fi.intel.com (Postfix) with ESMTP id 43061203BC; Wed, 5 May 2021 13:28:43 +0300 (EEST) Date: Wed, 5 May 2021 13:28:43 +0300 From: Sakari Ailus To: Andy Shevchenko Message-ID: <20210505102843.GM3@paasikivi.fi.intel.com> References: <20210503154647.142551-1-hdegoede@redhat.com> <20210503154647.142551-6-hdegoede@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [PATCH 5/9] drm/i915: Associate ACPI connector nodes with connector entries X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "dri-devel@lists.freedesktop.org" , Heikki Krogerus , Thomas Zimmermann , David Airlie , Greg Kroah-Hartman , intel-gfx , Maxime Ripard , "platform-driver-x86@vger.kernel.org" , "linux-usb@vger.kernel.org" , Guenter Roeck Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SGkgQW5keSwgSGFucywKCk9uIFdlZCwgTWF5IDA1LCAyMDIxIGF0IDEyOjE3OjE0UE0gKzAzMDAs IEFuZHkgU2hldmNoZW5rbyB3cm90ZToKPiBPbiBXZWQsIE1heSA1LCAyMDIxIGF0IDEyOjA3IFBN IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gT24gNS80LzIx IDk6NTIgQU0sIEFuZHkgU2hldmNoZW5rbyB3cm90ZToKPiA+ID4gT24gTW9uZGF5LCBNYXkgMywg MjAyMSwgSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbSA8bWFpbHRvOmhkZWdvZWRl QHJlZGhhdC5jb20+PiB3cm90ZToKPiAKPiAuLi4KPiAKPiA+ID4gICAgICsgICAgICAgICAgICAg ICBmd25vZGUgPSBkZXZpY2VfZ2V0X25leHRfY2hpbGRfbm9kZShrZGV2LCBmd25vZGUpOwo+IAo+ ID4gPiBXaG8gaXMgZHJvcHBpbmcgcmVmZXJlbmNlIGNvdW50aW5nIG9uIGZ3bm9kZSA/Cj4gPgo+ ID4gV2UgYXJlIGRlYWxpbmcgd2l0aCBBQ1BJIGZ3bm9kZS1zIGhlcmUgYW5kIHRob3NlIGFyZSBu b3QgcmVmLWNvdW50ZWQsIHRoZXkKPiA+IGFyZSBlbWJlZGRlZCBpbnNpZGUgYSBzdHJ1Y3QgYWNw aV9kZXZpY2UgYW5kIHRoZWlyIGxpZmV0aW1lIGlzIHRpZWQgdG8KPiA+IHRoYXQgc3RydWN0LiBU aGV5IHNob3VsZCBwcm9iYWJseSBzdGlsbCBiZSByZWYtY291bnRlZCAod2l0aCB0aGUgY291bnQK PiA+IG5ldmVyIGRyb3BwaW5nIHRvIDApIHNvIHRoYXQgdGhlIGdlbmVyaWMgZndub2RlIGZ1bmN0 aW9ucyBiZWhhdmUgdGhlIHNhbWUKPiA+IGFueXdoZXJlIGJ1dCBhdG0gdGhlIEFDUEkgbm9kZXMg YXJlIG5vdCByZWZjb3VudGVkLCBzZWU6IGFjcGlfZ2V0X25leHRfc3Vibm9kZSgpCj4gPiBpbiBk cml2ZXJzL2FjcGkvcHJvcGVydHkuYyB3aGljaCBpcyB0aGUgZ2V0X25leHRfY2hpbGRfbm9kZSgp IGltcGxlbWVudGF0aW9uCj4gPiBmb3IgQUNQSSBmd25vZGUtcy4KPiAKPiBZZXMsIEFDUEkgY3Vy cmVudGx5IGlzIGV4Y2VwdGlvbmFsLCBidXQgZndub2RlIEFQSSBpcyBub3QuCj4gSWYgeW91IG1h eSBndWFyYW50ZWUgdGhhdCB0aGlzIGNhc2Ugd29uJ3QgZXZlciBiZSBvdXRzaWRlIG9mIEFDUEkg YW5kCj4gZXZlbiB0aG91Z2ggaWYgQUNQSSB3b24ndCBldmVyIGdhaW4gYSByZWZlcmVuY2UgY291 bnRpbmcgZm9yIGZ3bm9kZXMsCj4gd2UgY2FuIGxlYXZlIGl0IGFzIGlzLgo+IAo+ID4gPiBJ4oCZ bSBpbiB0aGUgbWlkZGxlIG9mIGEgcGlsZSBvZiBmaXhlcyBmb3IgZndub2RlIHJlZmNvdW50aW5n IHdoZW4KPiA+ID4gZm9yX2VhY2hfY2hpbGQgb3IgZ2V0X25leHRfY2hpbGQgaXMgdXNlZC4gU28s IHBsZWFzZSBkb3VibGUgY2hlY2sgeW91Cj4gPiA+IGRyb3AgYSByZWZlcmVuY2UuCj4gPgo+ID4g VGhlIGtkb2MgY29tbWVudHMgb24gZGV2aWNlX2dldF9uZXh0X2NoaWxkX25vZGUoKSAvIGZ3bm9k ZV9nZXRfbmV4dF9jaGlsZF9ub2RlKCkKPiA+IGRvIG5vdCBtZW50aW9uIGFueXRoaW5nIGFib3V0 IHRoZXNlIGZ1bmN0aW9ucyByZXR1cm5pbmcgYSByZWZlcmVuY2UuCj4gCj4gSXQncyBwb3NzaWJs ZS4gSSBkdW5ubyBpZiBpdCBoYWQgdG8gYmUgZG9uZSBlYXJsaWVyLiBTYWthcmk/CgpUaGUgZndu b2RlIEFQSSBoYXMgd29ya2VkIHdpdGggcmVmZXJlbmNlcyBmb3IgYSBsb25nIHRpbWUsIGxvb2tz IGxpa2UgZnJvbQp0aGUgdmVyeSBiZWdpbm5pbmcgb2YgaXQsIGFzIGluIHBhdGNoCjhhMDY2MmQ5 ZWQyOTY4ZTExODYyMDgzMzZhOGUxZmFiM2ZkZmVhNjMgLgoKSWYgeW91J3JlIGV4cGVjdGluZyBh biBmd25vZGUgZmFtaWx5IG9mIGZ1bmN0aW9uIHJldHVybmluZyBhbm90aGVyIG5vZGUsCnRoZW4g dGhhdCBmdW5jdGlvbiBoYXMgdG8gaGF2ZSB0YWtlbiBhIHJlZmVyZW5jZSB0byB0aGF0IG5vZGUg YmVmb3JlCnJldHVybmluZyBpdC4gT3RoZXJ3aXNlIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQg bm9kZSBpcyBzdGlsbCB0aGVyZSB3aGVuCml0IGlzIHJldHVybmVkLgoKSXQgbWF5IGJlIHRoaXMg aXMgbm90IGRvY3VtZW50ZWQgZm9yIGV2ZXJ5IGZ1bmN0aW9uIGRvaW5nIHNvLiBUaGF0IHNob3Vs ZApwcm9iYWJseSBiZSBhZGRlZC4KCi0tIApLaW5kIHJlZ2FyZHMsCgpTYWthcmkgQWlsdXMKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==