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=-2.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_NEOMUTT autolearn=ham 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 7CF26C43218 for ; Tue, 11 Jun 2019 14:16:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 44199205ED for ; Tue, 11 Jun 2019 14:16:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="oDJUIsw9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388663AbfFKOQl (ORCPT ); Tue, 11 Jun 2019 10:16:41 -0400 Received: from mail-wr1-f65.google.com ([209.85.221.65]:33998 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387593AbfFKOQk (ORCPT ); Tue, 11 Jun 2019 10:16:40 -0400 Received: by mail-wr1-f65.google.com with SMTP id e16so13275441wrn.1 for ; Tue, 11 Jun 2019 07:16:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=R0YZLFuV0RaYb6o6bXZ/cnhAHh94UytEXpdPz+Yf3c8=; b=oDJUIsw9l0pX/II6DR7SV+FJvz1OxhmA8zB+vi7ZXNXdNhzrUdL+fFoMRtm3NDAx+u /Vox1y2G+2W5ePrfQZUhhRTNhcQHf1xL70VRJoR6Rs/wAm7AOQ1XNKPaqN3axoQYBXCG qZW9VDT0Dmh7SYlZYY3wK6EKBpZqwuXg8OJGiNja7sJOHCjOJeF2pW1dI5pRjM2rQOfG duxaSAK1xj6we0iB7/1QCyPlLX/loOjpjWCRxcB5mFuiRyD4+1Qkkd+bl54Exvlj0al4 n2TBbY7/9gj3XYpcByhHDLIqEbP5haZb9/E/4ySZpcRTgx/TobjSTJWzV+zJRdkKSXP1 9XJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=R0YZLFuV0RaYb6o6bXZ/cnhAHh94UytEXpdPz+Yf3c8=; b=rvq62CfJkaoinCfGbupRmhBNi3T1DOxs7G5xrxvepPk3Zun5xnhVp05tJepPTLw8j9 Tkr7k12zdgWMiMk573rOLUR4ijWSLf1+tmX6q6DD/WbJzYBbvI3h0ed0Y01jzZRWFLJd 34mRXOoeC+kx6Vx0VLfNWxV20aizzQqasRyNes20Z+teJqxNjxWvgPUD4jE3VaV4Ve7x p2xQeadRDLzVAiatdtW8qH+dXV6lJzlc1Y8wAeWUVnaK3kflacXVIFbk7zJA87BwEhH6 /5N6jP2lS6UoRwWQpsAuxZ2b0YeISdWroxIH/SCxly80LZvLH4LIB+DlF0FqFQgHQ3tQ 1pDw== X-Gm-Message-State: APjAAAW0eRMgJ599z7cfFDwVh40079vZZfj62VrAne8eC9E8ibA7vLKc IcTMCFroWV442oYXEobdrHp+Eg== X-Google-Smtp-Source: APXvYqy+KtdbDSGNz5zvKixfWB2k+49bbw7fcDg2K7++BSZL8Ez/8CCq+i11NIz5j8DUyelxkPSVmA== X-Received: by 2002:adf:e50c:: with SMTP id j12mr634760wrm.117.1560262598393; Tue, 11 Jun 2019 07:16:38 -0700 (PDT) Received: from holly.lan (cpc141214-aztw34-2-0-cust773.18-1.cable.virginm.net. [86.9.19.6]) by smtp.gmail.com with ESMTPSA id i188sm2886210wma.27.2019.06.11.07.16.37 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 11 Jun 2019 07:16:37 -0700 (PDT) Date: Tue, 11 Jun 2019 15:16:35 +0100 From: Daniel Thompson To: Bartlomiej Zolnierkiewicz Cc: Daniel Vetter , LKML , DRI Development , Intel Graphics Development , Linux Fbdev development list , Daniel Vetter , lee.jones@linaro.org Subject: Re: [PATCH 00/33] fbcon notifier begone v3! Message-ID: <20190611141635.rowolr37vhalophr@holly.lan> References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 07, 2019 at 12:07:55PM +0200, Bartlomiej Zolnierkiewicz wrote: > > On 6/6/19 9:38 AM, Daniel Vetter wrote: > > Hi Bart, > > Hi Daniel, > > > On Tue, May 28, 2019 at 11:02:31AM +0200, Daniel Vetter wrote: > >> Hi all, > >> > >> I think we're slowly getting there. Previous cover letters with more > >> context: > >> > >> https://lists.freedesktop.org/archives/dri-devel/2019-May/218362.html > >> > >> tldr; I have a multi-year plan to improve fbcon locking, because the > >> current thing is a bit a mess. > >> > >> Cover letter of this version, where I detail a bit more the details > >> fixed in this one here: > >> > >> https://lists.freedesktop.org/archives/dri-devel/2019-May/218984.html > >> > >> Note that the locking plan in this one is already outdated, I overlooked a > >> few fun issues around any printk() going back to console_lock. > >> > >> I think remaining bits: > >> > >> - Ack from Daniel Thompson for the backlight bits, he wanted to check the > >> big picture. > > > > I think Daniel is still on vacation until next week or so. Thanks for spotting that. As it happens the e-mail asking for extra detail was just about the last thing I sent before going on holiday (exactly to try and avoid round trips this wee ;-) ). > > > >> - Hash out actual merge plan. > > > > I'd like to stuff this into drm.git somehow, I guess topic branch works > > too. > > I would like to have topic branch for this patchset. >From a backlight perspective its Lee Jones who hoovers up the patches and worries about hiding merge conflicts from Linus. I'll let him follow up if needed but I suspect he'd like an immutable branch to work from also. Daniel. > > > Long term I think we need to reconsider how we handle fbdev, at least the > > core/fbcon pieces. Since a few years all the work in that area has been > > motivated by drm, and pushed by drm contributors. Having that maintained > > in a separate tree that doesn't regularly integrate imo doesn't make much > > sense, and we ended up merging almost everything through some drm tree. > > That one time we didn't (for some panel rotation stuff) it resulted in > > some good suprises. > > > > I think best solution is if we put the core and fbcon bits into drm-misc, > > as group maintained infrastructure piece. All the other gfx infra pieces > > are maintained in there already too. You'd obviously get commit rights. > > I think that would include > > - drivers/video/fbdev > > - drivers/video/*c > > - drivers/video/console > > Sounds fine to me. > > > I don't really care about what happens with the actual fbdev drivers > > (aside from the drm one in drm_fb_helper.c, but that's already maintained > > as part of drm). I guess we could also put those into drm-misc, or as a > > separate tree, depending what you want. > > > > Thoughts? > > I would like to handle fbdev changes for v5.3 merge window using fbdev > tree but after that everything (including changes to fbdev drivers) can go > through drm-misc tree. > > Best regards, > -- > Bartlomiej Zolnierkiewicz > Samsung R&D Institute Poland > Samsung Electronics > > > Cheers, Daniel > > > > > >> > >> I'm also cc'ing the entire pile to a lot more people on request. > >> > >> Thanks, Daniel > >> > >> Daniel Vetter (33): > >> dummycon: Sprinkle locking checks > >> fbdev: locking check for fb_set_suspend > >> vt: might_sleep() annotation for do_blank_screen > >> vt: More locking checks > >> fbdev/sa1100fb: Remove dead code > >> fbdev/cyber2000: Remove struct display > >> fbdev/aty128fb: Remove dead code > >> fbcon: s/struct display/struct fbcon_display/ > >> fbcon: Remove fbcon_has_exited > >> fbcon: call fbcon_fb_(un)registered directly > >> fbdev/sh_mobile: remove sh_mobile_lcdc_display_notify > >> fbdev/omap: sysfs files can't disappear before the device is gone > >> fbdev: sysfs files can't disappear before the device is gone > >> staging/olpc: lock_fb_info can't fail > >> fbdev/atyfb: lock_fb_info can't fail > >> fbdev: lock_fb_info cannot fail > >> fbcon: call fbcon_fb_bind directly > >> fbdev: make unregister/unlink functions not fail > >> fbdev: unify unlink_framebuffer paths > >> fbdev/sh_mob: Remove fb notifier callback > >> fbdev: directly call fbcon_suspended/resumed > >> fbcon: Call fbcon_mode_deleted/new_modelist directly > >> fbdev: Call fbcon_get_requirement directly > >> Revert "backlight/fbcon: Add FB_EVENT_CONBLANK" > >> fbmem: pull fbcon_fb_blanked out of fb_blank > >> fbdev: remove FBINFO_MISC_USEREVENT around fb_blank > >> fb: Flatten control flow in fb_set_var > >> fbcon: replace FB_EVENT_MODE_CHANGE/_ALL with direct calls > >> vgaswitcheroo: call fbcon_remap_all directly > >> fbcon: Call con2fb_map functions directly > >> fbcon: Document what I learned about fbcon locking > >> staging/olpc_dcon: Add drm conversion to TODO > >> backlight: simplify lcd notifier > >> > >> arch/arm/mach-pxa/am200epd.c | 13 +- > >> drivers/gpu/vga/vga_switcheroo.c | 11 +- > >> drivers/media/pci/ivtv/ivtvfb.c | 6 +- > >> drivers/staging/fbtft/fbtft-core.c | 4 +- > >> drivers/staging/olpc_dcon/TODO | 7 + > >> drivers/staging/olpc_dcon/olpc_dcon.c | 6 +- > >> drivers/tty/vt/vt.c | 18 + > >> drivers/video/backlight/backlight.c | 2 +- > >> drivers/video/backlight/lcd.c | 12 - > >> drivers/video/console/dummycon.c | 6 + > >> drivers/video/fbdev/aty/aty128fb.c | 64 --- > >> drivers/video/fbdev/aty/atyfb_base.c | 3 +- > >> drivers/video/fbdev/core/fbcmap.c | 6 +- > >> drivers/video/fbdev/core/fbcon.c | 313 ++++++-------- > >> drivers/video/fbdev/core/fbcon.h | 6 +- > >> drivers/video/fbdev/core/fbmem.c | 399 +++++++----------- > >> drivers/video/fbdev/core/fbsysfs.c | 20 +- > >> drivers/video/fbdev/cyber2000fb.c | 1 - > >> drivers/video/fbdev/neofb.c | 9 +- > >> .../video/fbdev/omap2/omapfb/omapfb-sysfs.c | 21 +- > >> drivers/video/fbdev/sa1100fb.c | 25 -- > >> drivers/video/fbdev/savage/savagefb_driver.c | 9 +- > >> drivers/video/fbdev/sh_mobile_lcdcfb.c | 132 +----- > >> drivers/video/fbdev/sh_mobile_lcdcfb.h | 5 - > >> include/linux/console_struct.h | 5 +- > >> include/linux/fb.h | 45 +- > >> include/linux/fbcon.h | 30 ++ > >> 27 files changed, 396 insertions(+), 782 deletions(-) > >> > >> -- > >> 2.20.1 > >> > > > > -- > > Daniel Vetter > > Software Engineer, Intel Corporation > > http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Thompson Date: Tue, 11 Jun 2019 14:16:35 +0000 Subject: Re: [PATCH 00/33] fbcon notifier begone v3! Message-Id: <20190611141635.rowolr37vhalophr@holly.lan> List-Id: References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Bartlomiej Zolnierkiewicz Cc: Linux Fbdev development list , Daniel Vetter , Intel Graphics Development , LKML , DRI Development , lee.jones@linaro.org On Fri, Jun 07, 2019 at 12:07:55PM +0200, Bartlomiej Zolnierkiewicz wrote: > > On 6/6/19 9:38 AM, Daniel Vetter wrote: > > Hi Bart, > > Hi Daniel, > > > On Tue, May 28, 2019 at 11:02:31AM +0200, Daniel Vetter wrote: > >> Hi all, > >> > >> I think we're slowly getting there. Previous cover letters with more > >> context: > >> > >> https://lists.freedesktop.org/archives/dri-devel/2019-May/218362.html > >> > >> tldr; I have a multi-year plan to improve fbcon locking, because the > >> current thing is a bit a mess. > >> > >> Cover letter of this version, where I detail a bit more the details > >> fixed in this one here: > >> > >> https://lists.freedesktop.org/archives/dri-devel/2019-May/218984.html > >> > >> Note that the locking plan in this one is already outdated, I overlooked a > >> few fun issues around any printk() going back to console_lock. > >> > >> I think remaining bits: > >> > >> - Ack from Daniel Thompson for the backlight bits, he wanted to check the > >> big picture. > > > > I think Daniel is still on vacation until next week or so. Thanks for spotting that. As it happens the e-mail asking for extra detail was just about the last thing I sent before going on holiday (exactly to try and avoid round trips this wee ;-) ). > > > >> - Hash out actual merge plan. > > > > I'd like to stuff this into drm.git somehow, I guess topic branch works > > too. > > I would like to have topic branch for this patchset. >From a backlight perspective its Lee Jones who hoovers up the patches and worries about hiding merge conflicts from Linus. I'll let him follow up if needed but I suspect he'd like an immutable branch to work from also. Daniel. > > > Long term I think we need to reconsider how we handle fbdev, at least the > > core/fbcon pieces. Since a few years all the work in that area has been > > motivated by drm, and pushed by drm contributors. Having that maintained > > in a separate tree that doesn't regularly integrate imo doesn't make much > > sense, and we ended up merging almost everything through some drm tree. > > That one time we didn't (for some panel rotation stuff) it resulted in > > some good suprises. > > > > I think best solution is if we put the core and fbcon bits into drm-misc, > > as group maintained infrastructure piece. All the other gfx infra pieces > > are maintained in there already too. You'd obviously get commit rights. > > I think that would include > > - drivers/video/fbdev > > - drivers/video/*c > > - drivers/video/console > > Sounds fine to me. > > > I don't really care about what happens with the actual fbdev drivers > > (aside from the drm one in drm_fb_helper.c, but that's already maintained > > as part of drm). I guess we could also put those into drm-misc, or as a > > separate tree, depending what you want. > > > > Thoughts? > > I would like to handle fbdev changes for v5.3 merge window using fbdev > tree but after that everything (including changes to fbdev drivers) can go > through drm-misc tree. > > Best regards, > -- > Bartlomiej Zolnierkiewicz > Samsung R&D Institute Poland > Samsung Electronics > > > Cheers, Daniel > > > > > >> > >> I'm also cc'ing the entire pile to a lot more people on request. > >> > >> Thanks, Daniel > >> > >> Daniel Vetter (33): > >> dummycon: Sprinkle locking checks > >> fbdev: locking check for fb_set_suspend > >> vt: might_sleep() annotation for do_blank_screen > >> vt: More locking checks > >> fbdev/sa1100fb: Remove dead code > >> fbdev/cyber2000: Remove struct display > >> fbdev/aty128fb: Remove dead code > >> fbcon: s/struct display/struct fbcon_display/ > >> fbcon: Remove fbcon_has_exited > >> fbcon: call fbcon_fb_(un)registered directly > >> fbdev/sh_mobile: remove sh_mobile_lcdc_display_notify > >> fbdev/omap: sysfs files can't disappear before the device is gone > >> fbdev: sysfs files can't disappear before the device is gone > >> staging/olpc: lock_fb_info can't fail > >> fbdev/atyfb: lock_fb_info can't fail > >> fbdev: lock_fb_info cannot fail > >> fbcon: call fbcon_fb_bind directly > >> fbdev: make unregister/unlink functions not fail > >> fbdev: unify unlink_framebuffer paths > >> fbdev/sh_mob: Remove fb notifier callback > >> fbdev: directly call fbcon_suspended/resumed > >> fbcon: Call fbcon_mode_deleted/new_modelist directly > >> fbdev: Call fbcon_get_requirement directly > >> Revert "backlight/fbcon: Add FB_EVENT_CONBLANK" > >> fbmem: pull fbcon_fb_blanked out of fb_blank > >> fbdev: remove FBINFO_MISC_USEREVENT around fb_blank > >> fb: Flatten control flow in fb_set_var > >> fbcon: replace FB_EVENT_MODE_CHANGE/_ALL with direct calls > >> vgaswitcheroo: call fbcon_remap_all directly > >> fbcon: Call con2fb_map functions directly > >> fbcon: Document what I learned about fbcon locking > >> staging/olpc_dcon: Add drm conversion to TODO > >> backlight: simplify lcd notifier > >> > >> arch/arm/mach-pxa/am200epd.c | 13 +- > >> drivers/gpu/vga/vga_switcheroo.c | 11 +- > >> drivers/media/pci/ivtv/ivtvfb.c | 6 +- > >> drivers/staging/fbtft/fbtft-core.c | 4 +- > >> drivers/staging/olpc_dcon/TODO | 7 + > >> drivers/staging/olpc_dcon/olpc_dcon.c | 6 +- > >> drivers/tty/vt/vt.c | 18 + > >> drivers/video/backlight/backlight.c | 2 +- > >> drivers/video/backlight/lcd.c | 12 - > >> drivers/video/console/dummycon.c | 6 + > >> drivers/video/fbdev/aty/aty128fb.c | 64 --- > >> drivers/video/fbdev/aty/atyfb_base.c | 3 +- > >> drivers/video/fbdev/core/fbcmap.c | 6 +- > >> drivers/video/fbdev/core/fbcon.c | 313 ++++++-------- > >> drivers/video/fbdev/core/fbcon.h | 6 +- > >> drivers/video/fbdev/core/fbmem.c | 399 +++++++----------- > >> drivers/video/fbdev/core/fbsysfs.c | 20 +- > >> drivers/video/fbdev/cyber2000fb.c | 1 - > >> drivers/video/fbdev/neofb.c | 9 +- > >> .../video/fbdev/omap2/omapfb/omapfb-sysfs.c | 21 +- > >> drivers/video/fbdev/sa1100fb.c | 25 -- > >> drivers/video/fbdev/savage/savagefb_driver.c | 9 +- > >> drivers/video/fbdev/sh_mobile_lcdcfb.c | 132 +----- > >> drivers/video/fbdev/sh_mobile_lcdcfb.h | 5 - > >> include/linux/console_struct.h | 5 +- > >> include/linux/fb.h | 45 +- > >> include/linux/fbcon.h | 30 ++ > >> 27 files changed, 396 insertions(+), 782 deletions(-) > >> > >> -- > >> 2.20.1 > >> > > > > -- > > Daniel Vetter > > Software Engineer, Intel Corporation > > http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Thompson Subject: Re: [PATCH 00/33] fbcon notifier begone v3! Date: Tue, 11 Jun 2019 15:16:35 +0100 Message-ID: <20190611141635.rowolr37vhalophr@holly.lan> References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Bartlomiej Zolnierkiewicz Cc: Linux Fbdev development list , Daniel Vetter , Intel Graphics Development , LKML , DRI Development , lee.jones@linaro.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdW4gMDcsIDIwMTkgYXQgMTI6MDc6NTVQTSArMDIwMCwgQmFydGxvbWllaiBab2xu aWVya2lld2ljeiB3cm90ZToKPiAKPiBPbiA2LzYvMTkgOTozOCBBTSwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiA+IEhpIEJhcnQsCj4gCj4gSGkgRGFuaWVsLAo+IAo+ID4gT24gVHVlLCBNYXkgMjgs IDIwMTkgYXQgMTE6MDI6MzFBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+PiBIaSBh bGwsCj4gPj4KPiA+PiBJIHRoaW5rIHdlJ3JlIHNsb3dseSBnZXR0aW5nIHRoZXJlLiBQcmV2aW91 cyBjb3ZlciBsZXR0ZXJzIHdpdGggbW9yZQo+ID4+IGNvbnRleHQ6Cj4gPj4KPiA+PiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwvMjAxOS1NYXkvMjE4MzYy Lmh0bWwKPiA+Pgo+ID4+IHRsZHI7IEkgaGF2ZSBhIG11bHRpLXllYXIgcGxhbiB0byBpbXByb3Zl IGZiY29uIGxvY2tpbmcsIGJlY2F1c2UgdGhlCj4gPj4gY3VycmVudCB0aGluZyBpcyBhIGJpdCBh IG1lc3MuCj4gPj4KPiA+PiBDb3ZlciBsZXR0ZXIgb2YgdGhpcyB2ZXJzaW9uLCB3aGVyZSBJIGRl dGFpbCBhIGJpdCBtb3JlIHRoZSBkZXRhaWxzCj4gPj4gZml4ZWQgaW4gdGhpcyBvbmUgaGVyZToK PiA+Pgo+ID4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2RyaS1kZXZl bC8yMDE5LU1heS8yMTg5ODQuaHRtbAo+ID4+Cj4gPj4gTm90ZSB0aGF0IHRoZSBsb2NraW5nIHBs YW4gaW4gdGhpcyBvbmUgaXMgYWxyZWFkeSBvdXRkYXRlZCwgSSBvdmVybG9va2VkIGEKPiA+PiBm ZXcgZnVuIGlzc3VlcyBhcm91bmQgYW55IHByaW50aygpIGdvaW5nIGJhY2sgdG8gY29uc29sZV9s b2NrLgo+ID4+Cj4gPj4gSSB0aGluayByZW1haW5pbmcgYml0czoKPiA+Pgo+ID4+IC0gQWNrIGZy b20gRGFuaWVsIFRob21wc29uIGZvciB0aGUgYmFja2xpZ2h0IGJpdHMsIGhlIHdhbnRlZCB0byBj aGVjayB0aGUKPiA+PiAgIGJpZyBwaWN0dXJlLgo+ID4gCj4gPiBJIHRoaW5rIERhbmllbCBpcyBz dGlsbCBvbiB2YWNhdGlvbiB1bnRpbCBuZXh0IHdlZWsgb3Igc28uCgpUaGFua3MgZm9yIHNwb3R0 aW5nIHRoYXQuIEFzIGl0IGhhcHBlbnMgdGhlIGUtbWFpbCBhc2tpbmcgZm9yIGV4dHJhIGRldGFp bAp3YXMganVzdCBhYm91dCB0aGUgbGFzdCB0aGluZyBJIHNlbnQgYmVmb3JlIGdvaW5nIG9uIGhv bGlkYXkgKGV4YWN0bHkgdG8KdHJ5IGFuZCBhdm9pZCByb3VuZCB0cmlwcyB0aGlzIHdlZSA7LSkg KS4KCgo+ID4gCj4gPj4gLSBIYXNoIG91dCBhY3R1YWwgbWVyZ2UgcGxhbi4KPiA+IAo+ID4gSSdk IGxpa2UgdG8gc3R1ZmYgdGhpcyBpbnRvIGRybS5naXQgc29tZWhvdywgSSBndWVzcyB0b3BpYyBi cmFuY2ggd29ya3MKPiA+IHRvby4KPiAKPiBJIHdvdWxkIGxpa2UgdG8gaGF2ZSB0b3BpYyBicmFu Y2ggZm9yIHRoaXMgcGF0Y2hzZXQuCgpGcm9tIGEgYmFja2xpZ2h0IHBlcnNwZWN0aXZlIGl0cyBM ZWUgSm9uZXMgd2hvIGhvb3ZlcnMgdXAgdGhlIHBhdGNoZXMKYW5kIHdvcnJpZXMgYWJvdXQgaGlk aW5nIG1lcmdlIGNvbmZsaWN0cyBmcm9tIExpbnVzLgoKSSdsbCBsZXQgaGltIGZvbGxvdyB1cCBp ZiBuZWVkZWQgYnV0IEkgc3VzcGVjdCBoZSdkIGxpa2UgYW4gaW1tdXRhYmxlCmJyYW5jaCB0byB3 b3JrIGZyb20gYWxzby4KCgpEYW5pZWwuCgoKPiAKPiA+IExvbmcgdGVybSBJIHRoaW5rIHdlIG5l ZWQgdG8gcmVjb25zaWRlciBob3cgd2UgaGFuZGxlIGZiZGV2LCBhdCBsZWFzdCB0aGUKPiA+IGNv cmUvZmJjb24gcGllY2VzLiBTaW5jZSBhIGZldyB5ZWFycyBhbGwgdGhlIHdvcmsgaW4gdGhhdCBh cmVhIGhhcyBiZWVuCj4gPiBtb3RpdmF0ZWQgYnkgZHJtLCBhbmQgcHVzaGVkIGJ5IGRybSBjb250 cmlidXRvcnMuIEhhdmluZyB0aGF0IG1haW50YWluZWQKPiA+IGluIGEgc2VwYXJhdGUgdHJlZSB0 aGF0IGRvZXNuJ3QgcmVndWxhcmx5IGludGVncmF0ZSBpbW8gZG9lc24ndCBtYWtlIG11Y2gKPiA+ IHNlbnNlLCBhbmQgd2UgZW5kZWQgdXAgbWVyZ2luZyBhbG1vc3QgZXZlcnl0aGluZyB0aHJvdWdo IHNvbWUgZHJtIHRyZWUuCj4gPiBUaGF0IG9uZSB0aW1lIHdlIGRpZG4ndCAoZm9yIHNvbWUgcGFu ZWwgcm90YXRpb24gc3R1ZmYpIGl0IHJlc3VsdGVkIGluCj4gPiBzb21lIGdvb2Qgc3VwcmlzZXMu Cj4gPiAKPiA+IEkgdGhpbmsgYmVzdCBzb2x1dGlvbiBpcyBpZiB3ZSBwdXQgdGhlIGNvcmUgYW5k IGZiY29uIGJpdHMgaW50byBkcm0tbWlzYywKPiA+IGFzIGdyb3VwIG1haW50YWluZWQgaW5mcmFz dHJ1Y3R1cmUgcGllY2UuIEFsbCB0aGUgb3RoZXIgZ2Z4IGluZnJhIHBpZWNlcwo+ID4gYXJlIG1h aW50YWluZWQgaW4gdGhlcmUgYWxyZWFkeSB0b28uIFlvdSdkIG9idmlvdXNseSBnZXQgY29tbWl0 IHJpZ2h0cy4KPiA+IEkgdGhpbmsgdGhhdCB3b3VsZCBpbmNsdWRlCj4gPiAtIGRyaXZlcnMvdmlk ZW8vZmJkZXYKPiA+IC0gZHJpdmVycy92aWRlby8qYwo+ID4gLSBkcml2ZXJzL3ZpZGVvL2NvbnNv bGUKPiAKPiBTb3VuZHMgZmluZSB0byBtZS4KPiAKPiA+IEkgZG9uJ3QgcmVhbGx5IGNhcmUgYWJv dXQgd2hhdCBoYXBwZW5zIHdpdGggdGhlIGFjdHVhbCBmYmRldiBkcml2ZXJzCj4gPiAoYXNpZGUg ZnJvbSB0aGUgZHJtIG9uZSBpbiBkcm1fZmJfaGVscGVyLmMsIGJ1dCB0aGF0J3MgYWxyZWFkeSBt YWludGFpbmVkCj4gPiBhcyBwYXJ0IG9mIGRybSkuIEkgZ3Vlc3Mgd2UgY291bGQgYWxzbyBwdXQg dGhvc2UgaW50byBkcm0tbWlzYywgb3IgYXMgYQo+ID4gc2VwYXJhdGUgdHJlZSwgZGVwZW5kaW5n IHdoYXQgeW91IHdhbnQuCj4gPiAKPiA+IFRob3VnaHRzPwo+IAo+IEkgd291bGQgbGlrZSB0byBo YW5kbGUgZmJkZXYgY2hhbmdlcyBmb3IgdjUuMyBtZXJnZSB3aW5kb3cgdXNpbmcgZmJkZXYKPiB0 cmVlIGJ1dCBhZnRlciB0aGF0IGV2ZXJ5dGhpbmcgKGluY2x1ZGluZyBjaGFuZ2VzIHRvIGZiZGV2 IGRyaXZlcnMpIGNhbiBnbwo+IHRocm91Z2ggZHJtLW1pc2MgdHJlZS4KPiAKPiBCZXN0IHJlZ2Fy ZHMsCj4gLS0KPiBCYXJ0bG9taWVqIFpvbG5pZXJraWV3aWN6Cj4gU2Ftc3VuZyBSJkQgSW5zdGl0 dXRlIFBvbGFuZAo+IFNhbXN1bmcgRWxlY3Ryb25pY3MKPiAKPiA+IENoZWVycywgRGFuaWVsCj4g PiAKPiA+IAo+ID4+Cj4gPj4gSSdtIGFsc28gY2MnaW5nIHRoZSBlbnRpcmUgcGlsZSB0byBhIGxv dCBtb3JlIHBlb3BsZSBvbiByZXF1ZXN0Lgo+ID4+Cj4gPj4gVGhhbmtzLCBEYW5pZWwKPiA+Pgo+ ID4+IERhbmllbCBWZXR0ZXIgKDMzKToKPiA+PiAgIGR1bW15Y29uOiBTcHJpbmtsZSBsb2NraW5n IGNoZWNrcwo+ID4+ICAgZmJkZXY6IGxvY2tpbmcgY2hlY2sgZm9yIGZiX3NldF9zdXNwZW5kCj4g Pj4gICB2dDogbWlnaHRfc2xlZXAoKSBhbm5vdGF0aW9uIGZvciBkb19ibGFua19zY3JlZW4KPiA+ PiAgIHZ0OiBNb3JlIGxvY2tpbmcgY2hlY2tzCj4gPj4gICBmYmRldi9zYTExMDBmYjogUmVtb3Zl IGRlYWQgY29kZQo+ID4+ICAgZmJkZXYvY3liZXIyMDAwOiBSZW1vdmUgc3RydWN0IGRpc3BsYXkK PiA+PiAgIGZiZGV2L2F0eTEyOGZiOiBSZW1vdmUgZGVhZCBjb2RlCj4gPj4gICBmYmNvbjogcy9z dHJ1Y3QgZGlzcGxheS9zdHJ1Y3QgZmJjb25fZGlzcGxheS8KPiA+PiAgIGZiY29uOiBSZW1vdmUg ZmJjb25faGFzX2V4aXRlZAo+ID4+ICAgZmJjb246IGNhbGwgZmJjb25fZmJfKHVuKXJlZ2lzdGVy ZWQgZGlyZWN0bHkKPiA+PiAgIGZiZGV2L3NoX21vYmlsZTogcmVtb3ZlIHNoX21vYmlsZV9sY2Rj X2Rpc3BsYXlfbm90aWZ5Cj4gPj4gICBmYmRldi9vbWFwOiBzeXNmcyBmaWxlcyBjYW4ndCBkaXNh cHBlYXIgYmVmb3JlIHRoZSBkZXZpY2UgaXMgZ29uZQo+ID4+ICAgZmJkZXY6IHN5c2ZzIGZpbGVz IGNhbid0IGRpc2FwcGVhciBiZWZvcmUgdGhlIGRldmljZSBpcyBnb25lCj4gPj4gICBzdGFnaW5n L29scGM6IGxvY2tfZmJfaW5mbyBjYW4ndCBmYWlsCj4gPj4gICBmYmRldi9hdHlmYjogbG9ja19m Yl9pbmZvIGNhbid0IGZhaWwKPiA+PiAgIGZiZGV2OiBsb2NrX2ZiX2luZm8gY2Fubm90IGZhaWwK PiA+PiAgIGZiY29uOiBjYWxsIGZiY29uX2ZiX2JpbmQgZGlyZWN0bHkKPiA+PiAgIGZiZGV2OiBt YWtlIHVucmVnaXN0ZXIvdW5saW5rIGZ1bmN0aW9ucyBub3QgZmFpbAo+ID4+ICAgZmJkZXY6IHVu aWZ5IHVubGlua19mcmFtZWJ1ZmZlciBwYXRocwo+ID4+ICAgZmJkZXYvc2hfbW9iOiBSZW1vdmUg ZmIgbm90aWZpZXIgY2FsbGJhY2sKPiA+PiAgIGZiZGV2OiBkaXJlY3RseSBjYWxsIGZiY29uX3N1 c3BlbmRlZC9yZXN1bWVkCj4gPj4gICBmYmNvbjogQ2FsbCBmYmNvbl9tb2RlX2RlbGV0ZWQvbmV3 X21vZGVsaXN0IGRpcmVjdGx5Cj4gPj4gICBmYmRldjogQ2FsbCBmYmNvbl9nZXRfcmVxdWlyZW1l bnQgZGlyZWN0bHkKPiA+PiAgIFJldmVydCAiYmFja2xpZ2h0L2ZiY29uOiBBZGQgRkJfRVZFTlRf Q09OQkxBTksiCj4gPj4gICBmYm1lbTogcHVsbCBmYmNvbl9mYl9ibGFua2VkIG91dCBvZiBmYl9i bGFuawo+ID4+ICAgZmJkZXY6IHJlbW92ZSBGQklORk9fTUlTQ19VU0VSRVZFTlQgYXJvdW5kIGZi X2JsYW5rCj4gPj4gICBmYjogRmxhdHRlbiBjb250cm9sIGZsb3cgaW4gZmJfc2V0X3Zhcgo+ID4+ ICAgZmJjb246IHJlcGxhY2UgRkJfRVZFTlRfTU9ERV9DSEFOR0UvX0FMTCB3aXRoIGRpcmVjdCBj YWxscwo+ID4+ICAgdmdhc3dpdGNoZXJvbzogY2FsbCBmYmNvbl9yZW1hcF9hbGwgZGlyZWN0bHkK PiA+PiAgIGZiY29uOiBDYWxsIGNvbjJmYl9tYXAgZnVuY3Rpb25zIGRpcmVjdGx5Cj4gPj4gICBm YmNvbjogRG9jdW1lbnQgd2hhdCBJIGxlYXJuZWQgYWJvdXQgZmJjb24gbG9ja2luZwo+ID4+ICAg c3RhZ2luZy9vbHBjX2Rjb246IEFkZCBkcm0gY29udmVyc2lvbiB0byBUT0RPCj4gPj4gICBiYWNr bGlnaHQ6IHNpbXBsaWZ5IGxjZCBub3RpZmllcgo+ID4+Cj4gPj4gIGFyY2gvYXJtL21hY2gtcHhh L2FtMjAwZXBkLmMgICAgICAgICAgICAgICAgICB8ICAxMyArLQo+ID4+ICBkcml2ZXJzL2dwdS92 Z2EvdmdhX3N3aXRjaGVyb28uYyAgICAgICAgICAgICAgfCAgMTEgKy0KPiA+PiAgZHJpdmVycy9t ZWRpYS9wY2kvaXZ0di9pdnR2ZmIuYyAgICAgICAgICAgICAgIHwgICA2ICstCj4gPj4gIGRyaXZl cnMvc3RhZ2luZy9mYnRmdC9mYnRmdC1jb3JlLmMgICAgICAgICAgICB8ICAgNCArLQo+ID4+ICBk cml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL1RPRE8gICAgICAgICAgICAgICAgfCAgIDcgKwo+ID4+ ICBkcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL29scGNfZGNvbi5jICAgICAgICAgfCAgIDYgKy0K PiA+PiAgZHJpdmVycy90dHkvdnQvdnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE4 ICsKPiA+PiAgZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYmFja2xpZ2h0LmMgICAgICAgICAgIHwg ICAyICstCj4gPj4gIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xjZC5jICAgICAgICAgICAgICAg ICB8ICAxMiAtCj4gPj4gIGRyaXZlcnMvdmlkZW8vY29uc29sZS9kdW1teWNvbi5jICAgICAgICAg ICAgICB8ICAgNiArCj4gPj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L2F0eTEyOGZiLmMgICAg ICAgICAgICB8ICA2NCAtLS0KPiA+PiAgZHJpdmVycy92aWRlby9mYmRldi9hdHkvYXR5ZmJfYmFz ZS5jICAgICAgICAgIHwgICAzICstCj4gPj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNt YXAuYyAgICAgICAgICAgICB8ICAgNiArLQo+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUv ZmJjb24uYyAgICAgICAgICAgICAgfCAzMTMgKysrKysrLS0tLS0tLS0KPiA+PiAgZHJpdmVycy92 aWRlby9mYmRldi9jb3JlL2ZiY29uLmggICAgICAgICAgICAgIHwgICA2ICstCj4gPj4gIGRyaXZl cnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jICAgICAgICAgICAgICB8IDM5OSArKysrKysrLS0t LS0tLS0tLS0KPiA+PiAgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2Zic3lzZnMuYyAgICAgICAg ICAgIHwgIDIwICstCj4gPj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYyAgICAg ICAgICAgICB8ICAgMSAtCj4gPj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYyAgICAgICAg ICAgICAgICAgICB8ICAgOSArLQo+ID4+ICAuLi4vdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL29t YXBmYi1zeXNmcy5jICAgfCAgMjEgKy0KPiA+PiAgZHJpdmVycy92aWRlby9mYmRldi9zYTExMDBm Yi5jICAgICAgICAgICAgICAgIHwgIDI1IC0tCj4gPj4gIGRyaXZlcnMvdmlkZW8vZmJkZXYvc2F2 YWdlL3NhdmFnZWZiX2RyaXZlci5jICB8ICAgOSArLQo+ID4+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2 L3NoX21vYmlsZV9sY2RjZmIuYyAgICAgICAgfCAxMzIgKy0tLS0tCj4gPj4gIGRyaXZlcnMvdmlk ZW8vZmJkZXYvc2hfbW9iaWxlX2xjZGNmYi5oICAgICAgICB8ICAgNSAtCj4gPj4gIGluY2x1ZGUv bGludXgvY29uc29sZV9zdHJ1Y3QuaCAgICAgICAgICAgICAgICB8ICAgNSArLQo+ID4+ICBpbmNs dWRlL2xpbnV4L2ZiLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKy0KPiA+PiAg aW5jbHVkZS9saW51eC9mYmNvbi5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMwICsrCj4g Pj4gIDI3IGZpbGVzIGNoYW5nZWQsIDM5NiBpbnNlcnRpb25zKCspLCA3ODIgZGVsZXRpb25zKC0p Cj4gPj4KPiA+PiAtLQo+ID4+IDIuMjAuMQo+ID4+Cj4gPiAKPiA+IC0tCj4gPiBEYW5pZWwgVmV0 dGVyCj4gPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+IGh0dHA6Ly9i bG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA==