From mboxrd@z Thu Jan 1 00:00:00 1970 From: zourongrong@huawei.com (Rongrong Zou) Date: Thu, 17 Nov 2016 12:09:31 +0800 Subject: [PATCH v7 0/7] Add DRM driver for Hisilicon Hibmc In-Reply-To: References: <1479303831-74134-1-git-send-email-zourongrong@gmail.com> Message-ID: <582D2D7B.30107@huawei.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org ? 2016/11/17 0:02, Sean Paul ??: > On Wed, Nov 16, 2016 at 11:01 AM, Sean Paul wrote: >> On Wed, Nov 16, 2016 at 8:43 AM, Rongrong Zou wrote: >>> This patch set adds a new drm driver for Hisilicon Hibmc. Hibmc is a >>> BMC SoC with a display controller intergrated, usually it is used on >>> server for Out-of-band management purpose. In this patch set, we just >>> support basic function for Hibmc display subsystem. Hibmc display >>> subsystem is connected to host CPU by PCIe as blow: >>> >>> +----------+ +----------+ >>> | | PCIe | Hibmc | >>> |host CPU( |<----->| display | >>> |arm64,x86)| |subsystem | >>> +----------+ +----------+ >>> >>> Hardware Detail for Hibmc display subsystem >>> ----------- >>> >>> The display subsystem of Hibmc is show as bellow: >>> +----+ +----+ +----+ +--------+ >>> | | | | | | | | >>> | FB |----->| DE |----->|VDAC|---->|external| >>> | | | | | | | VGA | >>> +----+ +----+ +----+ +--------+ >>> >>> -DE(Display Engine) is the display controller. >>> -VDAC(Video Digital-to-Analog converter) converts the RGB diaital data >>> stream from DE to VGA analog signals. >>> >> >> For the whole series/driver: >> >> Acked-by: Sean Paul >> >> > > Also, please send those fixups for the other ttm drivers ;) with pleasure :) Regards, Rongrong. > >> >>> Change History >>> ------------ >>> Changes in v7: >>> -remove hibmc_drm_power.c/hibmc_drm_power.h, move the functions to >>> hibmc_drm_drv.c. >>> -remove hibmc_drm_de.h and move the struct defined in head file to >>> hibmc_drm_de.c. >>> -plane is initialized inside crtc, not in hibmc_kms_init(). >>> -connector is initialized inside encoder, not in hibmc_kms_init(). >>> -remove plane/crtc/encoder/connector from hibmc_drm_private struct. >>> -call drm_atomic_helper_suspend/resume in hibmc_pm_suspend/resume. >>> -remove these empty stubs because caller will do NULL check. >>> hibmc_plane_atomic_disable >>> hibmc_crtc_atomic_check >>> hibmc_encoder_disable >>> hibmc_encoder_enable >>> hibmc_encoder_atomic_check >>> -clean up in all error paths of creating driver-private framebuffer. >>> >>> Changes in v6: >>> -remove the embedded framebuffer and use a pointer of hibmc_framebuffer >>> instead. >>> -remove the deprecated drm_framebuffer_unregister_private(), >>> drm_framebuffer_unreference() will be called in hibmc_fbdev_destroy(). >>> -uninstall irq in hibmc_unload(). >>> >>> Changes in v5: >>> -rebase on v4.9-rc2. >>> -replace drm_fb_helper_set_suspend with drm_fb_helper_set_suspend_unlocked. >>> and remove redundant console_lock and console_unlock. >>> >>> Changes in v4: >>> -remove unused include files, and include header file when it is needed. >>> -remove unused FLAG in Kconfig: DRM_GEM_CMA_HELPER/DRM_KMS_CMA_HELPER. >>> -remove drm_helper_disable_unused_functions, since we use DRIVER_ATOMIC. >>> >>> Changes in v3: >>> -enable KMS, in v2, only fbdev is enabled. >>> -management video memory with ttm. >>> -add vblank interrupt. >>> -remove drm_connector_register_all() and drm_connector_unregister_all(). >>> -I have a basic test with igt. >>> >>> Changes in v2: >>> -Remove self-defined macros for bit operations. >>> -Remove unused register. >>> -Replace those deprecated functions with new version of them. >>> -use drm_connector_register_all() to register connector after >>> drm_dev_register(). >>> >>> The patch v2 is at >>> https://lists.freedesktop.org/archives/dri-devel/2016-May/108661.html >>> >>> Rongrong Zou (7): >>> drm/hisilicon/hibmc: Add hisilicon hibmc drm master driver >>> drm/hisilicon/hibmc: Add video memory management >>> drm/hisilicon/hibmc: Add support for frame buffer >>> drm/hisilicon/hibmc: Add support for display engine >>> drm/hisilicon/hibmc: Add support for VDAC >>> drm/hisilicon/hibmc: Add support for vblank interrupt >>> MAINTAINERS: Update HISILICON DRM entries >>> >>> MAINTAINERS | 1 + >>> drivers/gpu/drm/hisilicon/Kconfig | 1 + >>> drivers/gpu/drm/hisilicon/Makefile | 1 + >>> drivers/gpu/drm/hisilicon/hibmc/Kconfig | 9 + >>> drivers/gpu/drm/hisilicon/hibmc/Makefile | 4 + >>> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 477 ++++++++++++++++++ >>> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 456 ++++++++++++++++++ >>> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h | 114 +++++ >>> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c | 267 +++++++++++ >>> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_regs.h | 196 ++++++++ >>> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 147 ++++++ >>> drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c | 558 ++++++++++++++++++++++ >>> 12 files changed, 2231 insertions(+) >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/Kconfig >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/Makefile >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_regs.h >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c >>> create mode 100644 drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c >>> >>> -- >>> 1.9.1 >>> > _______________________________________________ > linuxarm mailing list > linuxarm at huawei.com > http://rnd-openeuler.huawei.com/mailman/listinfo/linuxarm > > . > -- Regards, Rongrong From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rongrong Zou Subject: Re: [PATCH v7 0/7] Add DRM driver for Hisilicon Hibmc Date: Thu, 17 Nov 2016 12:09:31 +0800 Message-ID: <582D2D7B.30107@huawei.com> References: <1479303831-74134-1-git-send-email-zourongrong@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Sean Paul , Rongrong Zou Cc: Mark Rutland , Archit , lijianhua@huawei.com, Benjamin Gaignard , Tomeu Vizoso , Jonathan Corbet , Dave Airlie , Emil Velikov , linuxarm@huawei.com, dri-devel , Xinliang Liu , james.xiong@huawei.com, Daniel Vetter , Daniel Stone , Linux ARM Kernel , shenhui@huawei.com List-Id: dri-devel@lists.freedesktop.org 5ZyoIDIwMTYvMTEvMTcgMDowMiwgU2VhbiBQYXVsIOWGmemBkzoKPiBPbiBXZWQsIE5vdiAxNiwg MjAxNiBhdCAxMTowMSBBTSwgU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+IHdyb3Rl Ogo+PiBPbiBXZWQsIE5vdiAxNiwgMjAxNiBhdCA4OjQzIEFNLCBSb25ncm9uZyBab3UgPHpvdXJv bmdyb25nQGdtYWlsLmNvbT4gd3JvdGU6Cj4+PiBUaGlzIHBhdGNoIHNldCBhZGRzIGEgbmV3IGRy bSBkcml2ZXIgZm9yIEhpc2lsaWNvbiBIaWJtYy4gSGlibWMgaXMgYQo+Pj4gQk1DIFNvQyB3aXRo IGEgZGlzcGxheSBjb250cm9sbGVyIGludGVyZ3JhdGVkLCB1c3VhbGx5IGl0IGlzIHVzZWQgb24K Pj4+IHNlcnZlciBmb3IgT3V0LW9mLWJhbmQgbWFuYWdlbWVudCBwdXJwb3NlLiBJbiB0aGlzIHBh dGNoIHNldCwgd2UganVzdAo+Pj4gc3VwcG9ydCBiYXNpYyBmdW5jdGlvbiBmb3IgSGlibWMgZGlz cGxheSBzdWJzeXN0ZW0uIEhpYm1jIGRpc3BsYXkKPj4+IHN1YnN5c3RlbSBpcyBjb25uZWN0ZWQg dG8gaG9zdCBDUFUgYnkgUENJZSBhcyBibG93Ogo+Pj4KPj4+ICstLS0tLS0tLS0tKyAgICAgICAr LS0tLS0tLS0tLSsKPj4+IHwgICAgICAgICAgfCBQQ0llICB8ICBIaWJtYyAgIHwKPj4+IHxob3N0 IENQVSggfDwtLS0tLT58IGRpc3BsYXkgIHwKPj4+IHxhcm02NCx4ODYpfCAgICAgICB8c3Vic3lz dGVtIHwKPj4+ICstLS0tLS0tLS0tKyAgICAgICArLS0tLS0tLS0tLSsKPj4+Cj4+PiBIYXJkd2Fy ZSBEZXRhaWwgZm9yIEhpYm1jIGRpc3BsYXkgc3Vic3lzdGVtCj4+PiAtLS0tLS0tLS0tLQo+Pj4K Pj4+ICAgIFRoZSBkaXNwbGF5IHN1YnN5c3RlbSBvZiBIaWJtYyBpcyBzaG93IGFzIGJlbGxvdzoK Pj4+ICAgICstLS0tKyAgICAgICstLS0tKyAgICAgICstLS0tKyAgICAgKy0tLS0tLS0tKwo+Pj4g ICAgfCAgICB8ICAgICAgfCAgICB8ICAgICAgfCAgICB8ICAgICB8ICAgICAgICB8Cj4+PiAgICB8 IEZCIHwtLS0tLT58IERFIHwtLS0tLT58VkRBQ3wtLS0tPnxleHRlcm5hbHwKPj4+ICAgIHwgICAg fCAgICAgIHwgICAgfCAgICAgIHwgICAgfCAgICAgfCBWR0EgICAgfAo+Pj4gICAgKy0tLS0rICAg ICAgKy0tLS0rICAgICAgKy0tLS0rICAgICArLS0tLS0tLS0rCj4+Pgo+Pj4gICAgLURFKERpc3Bs YXkgRW5naW5lKSBpcyB0aGUgZGlzcGxheSBjb250cm9sbGVyLgo+Pj4gICAgLVZEQUMoVmlkZW8g RGlnaXRhbC10by1BbmFsb2cgY29udmVydGVyKSBjb252ZXJ0cyB0aGUgUkdCIGRpYWl0YWwgZGF0 YQo+Pj4gICAgc3RyZWFtIGZyb20gREUgdG8gVkdBIGFuYWxvZyBzaWduYWxzLgo+Pj4KPj4KPj4g Rm9yIHRoZSB3aG9sZSBzZXJpZXMvZHJpdmVyOgo+Pgo+PiBBY2tlZC1ieTogU2VhbiBQYXVsIDxz ZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4+Cj4+Cj4KPiBBbHNvLCBwbGVhc2Ugc2VuZCB0aG9zZSBm aXh1cHMgZm9yIHRoZSBvdGhlciB0dG0gZHJpdmVycyA7KQoKd2l0aCBwbGVhc3VyZSA6KQoKUmVn YXJkcywKUm9uZ3JvbmcuCgo+Cj4+Cj4+PiBDaGFuZ2UgSGlzdG9yeQo+Pj4gLS0tLS0tLS0tLS0t Cj4+PiBDaGFuZ2VzIGluIHY3Ogo+Pj4gICAgLXJlbW92ZSBoaWJtY19kcm1fcG93ZXIuYy9oaWJt Y19kcm1fcG93ZXIuaCwgbW92ZSB0aGUgZnVuY3Rpb25zIHRvCj4+PiAgICAgaGlibWNfZHJtX2Ry di5jLgo+Pj4gICAgLXJlbW92ZSBoaWJtY19kcm1fZGUuaCBhbmQgbW92ZSB0aGUgc3RydWN0IGRl ZmluZWQgaW4gaGVhZCBmaWxlIHRvCj4+PiAgICAgaGlibWNfZHJtX2RlLmMuCj4+PiAgICAtcGxh bmUgaXMgaW5pdGlhbGl6ZWQgaW5zaWRlIGNydGMsIG5vdCBpbiBoaWJtY19rbXNfaW5pdCgpLgo+ Pj4gICAgLWNvbm5lY3RvciBpcyBpbml0aWFsaXplZCBpbnNpZGUgZW5jb2Rlciwgbm90IGluIGhp Ym1jX2ttc19pbml0KCkuCj4+PiAgICAtcmVtb3ZlIHBsYW5lL2NydGMvZW5jb2Rlci9jb25uZWN0 b3IgZnJvbSBoaWJtY19kcm1fcHJpdmF0ZSBzdHJ1Y3QuCj4+PiAgICAtY2FsbCBkcm1fYXRvbWlj X2hlbHBlcl9zdXNwZW5kL3Jlc3VtZSBpbiBoaWJtY19wbV9zdXNwZW5kL3Jlc3VtZS4KPj4+ICAg IC1yZW1vdmUgdGhlc2UgZW1wdHkgc3R1YnMgYmVjYXVzZSBjYWxsZXIgd2lsbCBkbyBOVUxMIGNo ZWNrLgo+Pj4gICAgICBoaWJtY19wbGFuZV9hdG9taWNfZGlzYWJsZQo+Pj4gICAgICBoaWJtY19j cnRjX2F0b21pY19jaGVjawo+Pj4gICAgICBoaWJtY19lbmNvZGVyX2Rpc2FibGUKPj4+ICAgICAg aGlibWNfZW5jb2Rlcl9lbmFibGUKPj4+ICAgICAgaGlibWNfZW5jb2Rlcl9hdG9taWNfY2hlY2sK Pj4+ICAgIC1jbGVhbiB1cCBpbiBhbGwgZXJyb3IgcGF0aHMgb2YgY3JlYXRpbmcgZHJpdmVyLXBy aXZhdGUgZnJhbWVidWZmZXIuCj4+Pgo+Pj4gQ2hhbmdlcyBpbiB2NjoKPj4+ICAgIC1yZW1vdmUg dGhlIGVtYmVkZGVkIGZyYW1lYnVmZmVyIGFuZCB1c2UgYSBwb2ludGVyIG9mIGhpYm1jX2ZyYW1l YnVmZmVyCj4+PiAgICAgaW5zdGVhZC4KPj4+ICAgIC1yZW1vdmUgdGhlIGRlcHJlY2F0ZWQgZHJt X2ZyYW1lYnVmZmVyX3VucmVnaXN0ZXJfcHJpdmF0ZSgpLAo+Pj4gICAgIGRybV9mcmFtZWJ1ZmZl cl91bnJlZmVyZW5jZSgpIHdpbGwgYmUgY2FsbGVkIGluIGhpYm1jX2ZiZGV2X2Rlc3Ryb3koKS4K Pj4+ICAgIC11bmluc3RhbGwgaXJxIGluIGhpYm1jX3VubG9hZCgpLgo+Pj4KPj4+IENoYW5nZXMg aW4gdjU6Cj4+PiAgICAtcmViYXNlIG9uIHY0LjktcmMyLgo+Pj4gICAgLXJlcGxhY2UgZHJtX2Zi X2hlbHBlcl9zZXRfc3VzcGVuZCB3aXRoIGRybV9mYl9oZWxwZXJfc2V0X3N1c3BlbmRfdW5sb2Nr ZWQuCj4+PiAgICAgYW5kIHJlbW92ZSByZWR1bmRhbnQgY29uc29sZV9sb2NrIGFuZCBjb25zb2xl X3VubG9jay4KPj4+Cj4+PiBDaGFuZ2VzIGluIHY0Ogo+Pj4gICAgLXJlbW92ZSB1bnVzZWQgaW5j bHVkZSBmaWxlcywgYW5kIGluY2x1ZGUgaGVhZGVyIGZpbGUgd2hlbiBpdCBpcyBuZWVkZWQuCj4+ PiAgICAtcmVtb3ZlIHVudXNlZCBGTEFHIGluIEtjb25maWc6IERSTV9HRU1fQ01BX0hFTFBFUi9E Uk1fS01TX0NNQV9IRUxQRVIuCj4+PiAgICAtcmVtb3ZlIGRybV9oZWxwZXJfZGlzYWJsZV91bnVz ZWRfZnVuY3Rpb25zLCBzaW5jZSB3ZSB1c2UgRFJJVkVSX0FUT01JQy4KPj4+Cj4+PiBDaGFuZ2Vz IGluIHYzOgo+Pj4gICAgLWVuYWJsZSBLTVMsIGluIHYyLCBvbmx5IGZiZGV2IGlzIGVuYWJsZWQu Cj4+PiAgICAtbWFuYWdlbWVudCB2aWRlbyBtZW1vcnkgd2l0aCB0dG0uCj4+PiAgICAtYWRkIHZi bGFuayBpbnRlcnJ1cHQuCj4+PiAgICAtcmVtb3ZlIGRybV9jb25uZWN0b3JfcmVnaXN0ZXJfYWxs KCkgYW5kIGRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcl9hbGwoKS4KPj4+ICAgIC1JIGhhdmUgYSBi YXNpYyB0ZXN0IHdpdGggaWd0Lgo+Pj4KPj4+IENoYW5nZXMgaW4gdjI6Cj4+PiAgICAtUmVtb3Zl IHNlbGYtZGVmaW5lZCBtYWNyb3MgZm9yIGJpdCBvcGVyYXRpb25zLgo+Pj4gICAgLVJlbW92ZSB1 bnVzZWQgcmVnaXN0ZXIuCj4+PiAgICAtUmVwbGFjZSB0aG9zZSBkZXByZWNhdGVkIGZ1bmN0aW9u cyB3aXRoIG5ldyB2ZXJzaW9uIG9mIHRoZW0uCj4+PiAgICAtdXNlIGRybV9jb25uZWN0b3JfcmVn aXN0ZXJfYWxsKCkgdG8gcmVnaXN0ZXIgY29ubmVjdG9yIGFmdGVyCj4+PiAgICAgZHJtX2Rldl9y ZWdpc3RlcigpLgo+Pj4KPj4+IFRoZSBwYXRjaCB2MiBpcyBhdAo+Pj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVsLzIwMTYtTWF5LzEwODY2MS5odG1sCj4+ Pgo+Pj4gUm9uZ3JvbmcgWm91ICg3KToKPj4+ICAgIGRybS9oaXNpbGljb24vaGlibWM6IEFkZCBo aXNpbGljb24gaGlibWMgZHJtIG1hc3RlciBkcml2ZXIKPj4+ICAgIGRybS9oaXNpbGljb24vaGli bWM6IEFkZCB2aWRlbyBtZW1vcnkgbWFuYWdlbWVudAo+Pj4gICAgZHJtL2hpc2lsaWNvbi9oaWJt YzogQWRkIHN1cHBvcnQgZm9yIGZyYW1lIGJ1ZmZlcgo+Pj4gICAgZHJtL2hpc2lsaWNvbi9oaWJt YzogQWRkIHN1cHBvcnQgZm9yIGRpc3BsYXkgZW5naW5lCj4+PiAgICBkcm0vaGlzaWxpY29uL2hp Ym1jOiBBZGQgc3VwcG9ydCBmb3IgVkRBQwo+Pj4gICAgZHJtL2hpc2lsaWNvbi9oaWJtYzogQWRk IHN1cHBvcnQgZm9yIHZibGFuayBpbnRlcnJ1cHQKPj4+ICAgIE1BSU5UQUlORVJTOiBVcGRhdGUg SElTSUxJQ09OIERSTSBlbnRyaWVzCj4+Pgo+Pj4gICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2hp c2lsaWNvbi9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAgMSArCj4+PiAgIGRyaXZlcnMvZ3B1 L2RybS9oaXNpbGljb24vTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDEgKwo+Pj4gICBkcml2 ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL0tjb25maWcgICAgICAgICAgIHwgICA5ICsKPj4+ ICAgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9NYWtlZmlsZSAgICAgICAgICB8ICAg NCArCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2RlLmMg ICAgfCA0NzcgKysrKysrKysrKysrKysrKysrCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9oaXNpbGlj b24vaGlibWMvaGlibWNfZHJtX2Rydi5jICAgfCA0NTYgKysrKysrKysrKysrKysrKysrCj4+PiAg IGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5oICAgfCAxMTQg KysrKysKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZmJk ZXYuYyB8IDI2NyArKysrKysrKysrKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hp Ym1jL2hpYm1jX2RybV9yZWdzLmggIHwgMTk2ICsrKysrKysrCj4+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX3ZkYWMuYyAgfCAxNDcgKysrKysrCj4+PiAgIGRy aXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfdHRtLmMgICAgICAgfCA1NTggKysr KysrKysrKysrKysrKysrKysrKwo+Pj4gICAxMiBmaWxlcyBjaGFuZ2VkLCAyMjMxIGluc2VydGlv bnMoKykKPj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24v aGlibWMvS2NvbmZpZwo+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2hp c2lsaWNvbi9oaWJtYy9NYWtlZmlsZQo+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZGUuYwo+Pj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmMKPj4+ ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGli bWNfZHJtX2Rydi5oCj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaGlz aWxpY29uL2hpYm1jL2hpYm1jX2RybV9mYmRldi5jCj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9yZWdzLmgKPj4+ICAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJt X3ZkYWMuYwo+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNv bi9oaWJtYy9oaWJtY190dG0uYwo+Pj4KPj4+IC0tCj4+PiAxLjkuMQo+Pj4KPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGxpbnV4YXJtIG1haWxpbmcg bGlzdAo+IGxpbnV4YXJtQGh1YXdlaS5jb20KPiBodHRwOi8vcm5kLW9wZW5ldWxlci5odWF3ZWku Y29tL21haWxtYW4vbGlzdGluZm8vbGludXhhcm0KPgo+IC4KPgoKCi0tIApSZWdhcmRzLCBSb25n cm9uZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=