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=-6.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 18810C282DE for ; Wed, 5 Jun 2019 07:47:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3A2AF20665 for ; Wed, 5 Jun 2019 07:47:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="NOkZm6Kr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726538AbfFEHrZ (ORCPT ); Wed, 5 Jun 2019 03:47:25 -0400 Received: from mail-it1-f193.google.com ([209.85.166.193]:39329 "EHLO mail-it1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726464AbfFEHrY (ORCPT ); Wed, 5 Jun 2019 03:47:24 -0400 Received: by mail-it1-f193.google.com with SMTP id j204so2095519ite.4 for ; Wed, 05 Jun 2019 00:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=RgKIolutpvVnypfmtHBmuAHgv/1WLxUKUUzMI4Hsm10=; b=NOkZm6Krsfkl0/J17Pk7jB4p9LmHsrLAZGbSPLUFMu25G04N2Xgoc07hH9+ezkjZei KXFIC4Knydq2vab2Ta5CXJRMUC6/TC1MKOp6mYOCdP8OzfhbWjBQImeMqqYsmF5hjtqV GRj2/yAoGrowmQVq2eg30jFLvgUVGCNwNws4E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=RgKIolutpvVnypfmtHBmuAHgv/1WLxUKUUzMI4Hsm10=; b=e9gBHDBqHym6e2xo17ETVhMdnL4x0eHceoKMkV9D5Bmd8F8CIXes5sbzO5AyK6spRl +1DDgoWGNjFDN9gX7K4flLyRs7qLB1kO8DQ9c/5Wad4QSDgsExFt02A8gsIVstqxJjmG XdCzsJGKKU1kvpW0VJHiIyG5AAmKThK3QKL2bp2tduNlN4u41bw+1ttWc5ogzj2AgWZh DtR0fgwquqHH9l87ntz1wVyDr/vNVDAJL76hcAJSMuqXkoI8p9QH92iU04LBSBOaJkir p56mc+rhq0lrsWnJbJuzvdaMMcTkTUiaXlZt7MzXS5/NRz9mE0RB29vcLGdcLIWSmtub x5nw== X-Gm-Message-State: APjAAAVzU4XUEqmyod4V5JRQJ2PNbaWImDd76NPdYXhpldRNIOZ61s1A Pxz59HfFVxpYr2brFg/xjA1RweqraHy7JOBxjFlHXQ== X-Google-Smtp-Source: APXvYqw5qk9QVecBQ6mnsDnKEd66TT4fYBNasglrDHUDz9RhAnE8pY+n5SwcQi4y5Q+8bqDPxkadNBtPhAqucAx1Z18= X-Received: by 2002:a24:2846:: with SMTP id h67mr25904393ith.94.1559720843015; Wed, 05 Jun 2019 00:47:23 -0700 (PDT) MIME-Version: 1.0 References: <20190520090318.27570-1-jagan@amarulasolutions.com> <20190520090318.27570-2-jagan@amarulasolutions.com> <20190523203407.o5obg2wtj7wwau6a@flea> <20190529145450.qnitxpmpr2a2xemk@flea> <20190604100011.cqkhpwmmmwh3vr3y@flea> In-Reply-To: <20190604100011.cqkhpwmmmwh3vr3y@flea> From: Jagan Teki Date: Wed, 5 Jun 2019 13:17:11 +0530 Message-ID: Subject: Re: [PATCH v10 01/11] drm/sun4i: dsi: Fix TCON DRQ set bits To: Maxime Ripard Cc: David Airlie , Daniel Vetter , Chen-Yu Tsai , dri-devel , linux-arm-kernel , linux-kernel , Bhushan Shah , Vasily Khoruzhick , =?UTF-8?B?5Z2a5a6a5YmN6KGM?= , Michael Trimarchi , linux-amarula , linux-sunxi Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 4, 2019 at 3:30 PM Maxime Ripard wrote: > > On Wed, May 29, 2019 at 11:44:56PM +0530, Jagan Teki wrote: > > On Wed, May 29, 2019 at 8:24 PM Maxime Ripard wrote: > > > > > > On Fri, May 24, 2019 at 03:48:51PM +0530, Jagan Teki wrote: > > > > On Fri, May 24, 2019 at 2:04 AM Maxime Ripard wrote: > > > > > > > > > > On Mon, May 20, 2019 at 02:33:08PM +0530, Jagan Teki wrote: > > > > > > According to "DRM kernel-internal display mode structure" in > > > > > > include/drm/drm_modes.h the current driver is trying to include > > > > > > sync timings along with front porch value while checking and > > > > > > computing drq set bits in non-burst mode. > > > > > > > > > > > > mode->hsync_end - mode->hdisplay => horizontal front porch + sync > > > > > > > > > > > > With adding additional sync timings, the dsi controller leads to > > > > > > wrong drq set bits for "bananapi,s070wv20-ct16" panel which indeed > > > > > > trigger panel flip_done timed out as: > > > > > > > > > > > > WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0 > > > > > > [CRTC:46:crtc-0] vblank wait timed out > > > > > > Modules linked in: > > > > > > CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00026-g01f0c75b902d-dirty #13 > > > > > > Hardware name: Allwinner sun8i Family > > > > > > Workqueue: events deferred_probe_work_func > > > > > > [] (unwind_backtrace) from [] (show_stack+0x10/0x14) > > > > > > [] (show_stack) from [] (dump_stack+0x84/0x98) > > > > > > [] (dump_stack) from [] (__warn+0xfc/0x114) > > > > > > [] (__warn) from [] (warn_slowpath_fmt+0x44/0x68) > > > > > > [] (warn_slowpath_fmt) from [] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0) > > > > > > [] (drm_atomic_helper_wait_for_vblanks.part.1) from [] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c) > > > > > > [] (drm_atomic_helper_commit_tail_rpm) from [] (commit_tail+0x40/0x6c) > > > > > > [] (commit_tail) from [] (drm_atomic_helper_commit+0xbc/0x128) > > > > > > [] (drm_atomic_helper_commit) from [] (restore_fbdev_mode_atomic+0x1cc/0x1dc) > > > > > > [] (restore_fbdev_mode_atomic) from [] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0) > > > > > > [] (drm_fb_helper_restore_fbdev_mode_unlocked) from [] (drm_fb_helper_set_par+0x30/0x54) > > > > > > [] (drm_fb_helper_set_par) from [] (fbcon_init+0x560/0x5ac) > > > > > > [] (fbcon_init) from [] (visual_init+0xbc/0x104) > > > > > > [] (visual_init) from [] (do_bind_con_driver+0x1b0/0x390) > > > > > > [] (do_bind_con_driver) from [] (do_take_over_console+0x13c/0x1c4) > > > > > > [] (do_take_over_console) from [] (do_fbcon_takeover+0x74/0xcc) > > > > > > [] (do_fbcon_takeover) from [] (notifier_call_chain+0x44/0x84) > > > > > > [] (notifier_call_chain) from [] (__blocking_notifier_call_chain+0x48/0x60) > > > > > > [] (__blocking_notifier_call_chain) from [] (blocking_notifier_call_chain+0x18/0x20) > > > > > > [] (blocking_notifier_call_chain) from [] (register_framebuffer+0x1e0/0x2f8) > > > > > > [] (register_framebuffer) from [] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c) > > > > > > [] (__drm_fb_helper_initial_config_and_unlock) from [] (drm_fbdev_client_hotplug+0xe8/0x1b8) > > > > > > [] (drm_fbdev_client_hotplug) from [] (drm_fbdev_generic_setup+0x88/0x118) > > > > > > [] (drm_fbdev_generic_setup) from [] (sun4i_drv_bind+0x128/0x160) > > > > > > [] (sun4i_drv_bind) from [] (try_to_bring_up_master+0x164/0x1a0) > > > > > > [] (try_to_bring_up_master) from [] (__component_add+0x94/0x140) > > > > > > [] (__component_add) from [] (sun6i_dsi_probe+0x144/0x234) > > > > > > [] (sun6i_dsi_probe) from [] (platform_drv_probe+0x48/0x9c) > > > > > > [] (platform_drv_probe) from [] (really_probe+0x1dc/0x2c8) > > > > > > [] (really_probe) from [] (driver_probe_device+0x60/0x160) > > > > > > [] (driver_probe_device) from [] (bus_for_each_drv+0x74/0xb8) > > > > > > [] (bus_for_each_drv) from [] (__device_attach+0xd0/0x13c) > > > > > > [] (__device_attach) from [] (bus_probe_device+0x84/0x8c) > > > > > > [] (bus_probe_device) from [] (deferred_probe_work_func+0x64/0x90) > > > > > > [] (deferred_probe_work_func) from [] (process_one_work+0x204/0x420) > > > > > > [] (process_one_work) from [] (worker_thread+0x274/0x5a0) > > > > > > [] (worker_thread) from [] (kthread+0x11c/0x14c) > > > > > > [] (kthread) from [] (ret_from_fork+0x14/0x2c) > > > > > > Exception stack(0xde539fb0 to 0xde539ff8) > > > > > > 9fa0: 00000000 00000000 00000000 00000000 > > > > > > 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > > > > > > 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 > > > > > > ---[ end trace b57eb1e5c64c6b8b ]--- > > > > > > random: fast init done > > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out > > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out > > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out > > > > > > > > > > > > But according to Allwinner A33, A64 BSP code [1] [3] the TCON DRQ for > > > > > > non-burst DSI mode can be computed based on "horizontal front porch" > > > > > > value only (no sync timings included). > > > > > > > > > > > > Detailed evidence for drq set bits based on A33 BSP [1] [2] > > > > > > > > > > > > => panel->lcd_ht - panel->lcd_x - panel->lcd_hbp - 20 > > > > > > => (tt->hor_front_porch + lcdp->panel_info.lcd_hbp + > > > > > > lcdp->panel_info.lcd_x) - panel->lcd_x - panel->lcd_hbp - 20 > > > > > > => tt->hor_front_porch - 20 > > > > > > > > > > The thing is, while your explanation on the DRM side is sound, > > > > > Allwinner has been using the hbp field of their panel description to > > > > > store what DRM calls the backporch and the sync period. > > > > > > > > Exactly, hbp = backporch + sync > > > > https://github.com/BPI-SINOVOIP/BPI-M2M-bsp/blob/master/linux-sunxi/drivers/video/sunxi/disp/de/disp_lcd.c#L2046 > > > > > > > > And the above computation is rely on that as well. If you can see the > > > > final out of the above computation you can get the front porch value > > > > (w/o sync ) > > > > > > As I was saying, you are explaining it well for DRM, but in order for > > > your last formula (the one coming from the BSP) to make sense, you > > > have to explain that the horizontal back porch for Allwinner contains > > > the sync period, otherwise your expansion of lcd_ht doesn't make > > > sense. > > > > I'm not sure why we need to take care of back porch since the formula > > clearly evaluating a result as front porch, without sync timing (as > > current code included this sync), I keep the hbp and trying to > > substitute the lcd_ht value so the end result would cancel hbp. > > Because it changes how lcd_ht expands. In the DRM case, it will expand > to the displayed area, the front porch, the sync period and the back > porch. > > In your case, you expand it to the displayed area, the front porch and > the back porch, precisely because in Allwinner's case, the back porch > has the sync period. I understand the point, but technically it matter about the final computation result. May be we can even manage the same computation in back porch, but I'm not sure. Since the final output doesn't involve any sync length, why we can include that ie what I'm not sure. with inclusion of sync timings we have wrong tcon drq set bit, it's been verified. 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=-6.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,T_DKIMWL_WL_HIGH,URIBL_BLOCKED autolearn=unavailable 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 14AA3C282DE for ; Wed, 5 Jun 2019 07:47:36 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 DC85A20665 for ; Wed, 5 Jun 2019 07:47:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="fKsnevBG"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="NOkZm6Kr" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DC85A20665 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mc3jVcr4Fpmxx7cFw7aZmXg7xJxcuHg8yG/c2ptHSwk=; b=fKsnevBGB9Q/Xi wV726IadjvgeT5THUqtehb6DKScxctg5LiTyfZ5ab02eLzA9Xl+jjhmiUEAA5cuQptyPVSwRbx0F/ wGrRXv6r8rvmwqOPSw8b2u/O2B5dLebAdCLogTl85z0mW6DQBmQV0AcS5qUnszQftuy2fNP6p5CM+ 5XassUVloxjC6EleA4sLejQt2w0GUvdhj4YqlSrnZStj6Q57rW6dd7n0v2UqQv12ajwRXjvq0JEm/ YIyCkwHzEd+d4UOMakAjIbtE7AjuBJZAxphRawY99LWiDl34dllVZI6Hcsw5T3gOzjDRkOUj8wcWi auHKW20dfsniO6TwyAFQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hYQdt-00019W-Pp; Wed, 05 Jun 2019 07:47:29 +0000 Received: from mail-it1-x142.google.com ([2607:f8b0:4864:20::142]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hYQdo-00018T-PP for linux-arm-kernel@lists.infradead.org; Wed, 05 Jun 2019 07:47:26 +0000 Received: by mail-it1-x142.google.com with SMTP id h20so2086957itk.4 for ; Wed, 05 Jun 2019 00:47:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=RgKIolutpvVnypfmtHBmuAHgv/1WLxUKUUzMI4Hsm10=; b=NOkZm6Krsfkl0/J17Pk7jB4p9LmHsrLAZGbSPLUFMu25G04N2Xgoc07hH9+ezkjZei KXFIC4Knydq2vab2Ta5CXJRMUC6/TC1MKOp6mYOCdP8OzfhbWjBQImeMqqYsmF5hjtqV GRj2/yAoGrowmQVq2eg30jFLvgUVGCNwNws4E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=RgKIolutpvVnypfmtHBmuAHgv/1WLxUKUUzMI4Hsm10=; b=qLoN+GqaEcSwg1pQIVL7FaQaRMsGDhKhCI5ZxACGe8hqS1zuPvDWunBa9NU+ywnbbP 9fgtRchyG+T6gbO/mS3axphKN8dyicviKIqXz9Dsd702r51QBNgXxkBABdMLzAYEqxie 2+EcaR88b3SYAMHWKmiQdTEc6nDxKdHt9CwWrua8/Zgg1RD8CBLwYz7kRh0UoNkw8lu2 WES2bB+V5CwfolaeCQQs2ON+z7EnKfkfW3sjQUAQ7kIaWR3jgSeZIoRJ2VgHA+FNkAV0 iaNBoX2tjXX29l8X06/IYGijXKHRta1g/G059QJEM5evz0GmTNZlP9yfjsX/NBk4cQ0Q EXbA== X-Gm-Message-State: APjAAAVs094k3QLUj8eqO5yNVcHbCOPSYFTx5Sl5GC3ub0xViUyawUGh 7KN5vx7Xb1xss0q+7z5McSJvKCVUYYgf1phzcvNJqw== X-Google-Smtp-Source: APXvYqw5qk9QVecBQ6mnsDnKEd66TT4fYBNasglrDHUDz9RhAnE8pY+n5SwcQi4y5Q+8bqDPxkadNBtPhAqucAx1Z18= X-Received: by 2002:a24:2846:: with SMTP id h67mr25904393ith.94.1559720843015; Wed, 05 Jun 2019 00:47:23 -0700 (PDT) MIME-Version: 1.0 References: <20190520090318.27570-1-jagan@amarulasolutions.com> <20190520090318.27570-2-jagan@amarulasolutions.com> <20190523203407.o5obg2wtj7wwau6a@flea> <20190529145450.qnitxpmpr2a2xemk@flea> <20190604100011.cqkhpwmmmwh3vr3y@flea> In-Reply-To: <20190604100011.cqkhpwmmmwh3vr3y@flea> From: Jagan Teki Date: Wed, 5 Jun 2019 13:17:11 +0530 Message-ID: Subject: Re: [PATCH v10 01/11] drm/sun4i: dsi: Fix TCON DRQ set bits To: Maxime Ripard X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190605_004725_001517_E8FD1EBF X-CRM114-Status: GOOD ( 22.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bhushan Shah , David Airlie , linux-sunxi , linux-kernel , dri-devel , =?UTF-8?B?5Z2a5a6a5YmN6KGM?= , Chen-Yu Tsai , Daniel Vetter , Michael Trimarchi , linux-amarula , linux-arm-kernel Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Tue, Jun 4, 2019 at 3:30 PM Maxime Ripard wrote: > > On Wed, May 29, 2019 at 11:44:56PM +0530, Jagan Teki wrote: > > On Wed, May 29, 2019 at 8:24 PM Maxime Ripard wrote: > > > > > > On Fri, May 24, 2019 at 03:48:51PM +0530, Jagan Teki wrote: > > > > On Fri, May 24, 2019 at 2:04 AM Maxime Ripard wrote: > > > > > > > > > > On Mon, May 20, 2019 at 02:33:08PM +0530, Jagan Teki wrote: > > > > > > According to "DRM kernel-internal display mode structure" in > > > > > > include/drm/drm_modes.h the current driver is trying to include > > > > > > sync timings along with front porch value while checking and > > > > > > computing drq set bits in non-burst mode. > > > > > > > > > > > > mode->hsync_end - mode->hdisplay => horizontal front porch + sync > > > > > > > > > > > > With adding additional sync timings, the dsi controller leads to > > > > > > wrong drq set bits for "bananapi,s070wv20-ct16" panel which indeed > > > > > > trigger panel flip_done timed out as: > > > > > > > > > > > > WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0 > > > > > > [CRTC:46:crtc-0] vblank wait timed out > > > > > > Modules linked in: > > > > > > CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00026-g01f0c75b902d-dirty #13 > > > > > > Hardware name: Allwinner sun8i Family > > > > > > Workqueue: events deferred_probe_work_func > > > > > > [] (unwind_backtrace) from [] (show_stack+0x10/0x14) > > > > > > [] (show_stack) from [] (dump_stack+0x84/0x98) > > > > > > [] (dump_stack) from [] (__warn+0xfc/0x114) > > > > > > [] (__warn) from [] (warn_slowpath_fmt+0x44/0x68) > > > > > > [] (warn_slowpath_fmt) from [] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0) > > > > > > [] (drm_atomic_helper_wait_for_vblanks.part.1) from [] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c) > > > > > > [] (drm_atomic_helper_commit_tail_rpm) from [] (commit_tail+0x40/0x6c) > > > > > > [] (commit_tail) from [] (drm_atomic_helper_commit+0xbc/0x128) > > > > > > [] (drm_atomic_helper_commit) from [] (restore_fbdev_mode_atomic+0x1cc/0x1dc) > > > > > > [] (restore_fbdev_mode_atomic) from [] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0) > > > > > > [] (drm_fb_helper_restore_fbdev_mode_unlocked) from [] (drm_fb_helper_set_par+0x30/0x54) > > > > > > [] (drm_fb_helper_set_par) from [] (fbcon_init+0x560/0x5ac) > > > > > > [] (fbcon_init) from [] (visual_init+0xbc/0x104) > > > > > > [] (visual_init) from [] (do_bind_con_driver+0x1b0/0x390) > > > > > > [] (do_bind_con_driver) from [] (do_take_over_console+0x13c/0x1c4) > > > > > > [] (do_take_over_console) from [] (do_fbcon_takeover+0x74/0xcc) > > > > > > [] (do_fbcon_takeover) from [] (notifier_call_chain+0x44/0x84) > > > > > > [] (notifier_call_chain) from [] (__blocking_notifier_call_chain+0x48/0x60) > > > > > > [] (__blocking_notifier_call_chain) from [] (blocking_notifier_call_chain+0x18/0x20) > > > > > > [] (blocking_notifier_call_chain) from [] (register_framebuffer+0x1e0/0x2f8) > > > > > > [] (register_framebuffer) from [] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c) > > > > > > [] (__drm_fb_helper_initial_config_and_unlock) from [] (drm_fbdev_client_hotplug+0xe8/0x1b8) > > > > > > [] (drm_fbdev_client_hotplug) from [] (drm_fbdev_generic_setup+0x88/0x118) > > > > > > [] (drm_fbdev_generic_setup) from [] (sun4i_drv_bind+0x128/0x160) > > > > > > [] (sun4i_drv_bind) from [] (try_to_bring_up_master+0x164/0x1a0) > > > > > > [] (try_to_bring_up_master) from [] (__component_add+0x94/0x140) > > > > > > [] (__component_add) from [] (sun6i_dsi_probe+0x144/0x234) > > > > > > [] (sun6i_dsi_probe) from [] (platform_drv_probe+0x48/0x9c) > > > > > > [] (platform_drv_probe) from [] (really_probe+0x1dc/0x2c8) > > > > > > [] (really_probe) from [] (driver_probe_device+0x60/0x160) > > > > > > [] (driver_probe_device) from [] (bus_for_each_drv+0x74/0xb8) > > > > > > [] (bus_for_each_drv) from [] (__device_attach+0xd0/0x13c) > > > > > > [] (__device_attach) from [] (bus_probe_device+0x84/0x8c) > > > > > > [] (bus_probe_device) from [] (deferred_probe_work_func+0x64/0x90) > > > > > > [] (deferred_probe_work_func) from [] (process_one_work+0x204/0x420) > > > > > > [] (process_one_work) from [] (worker_thread+0x274/0x5a0) > > > > > > [] (worker_thread) from [] (kthread+0x11c/0x14c) > > > > > > [] (kthread) from [] (ret_from_fork+0x14/0x2c) > > > > > > Exception stack(0xde539fb0 to 0xde539ff8) > > > > > > 9fa0: 00000000 00000000 00000000 00000000 > > > > > > 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > > > > > > 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 > > > > > > ---[ end trace b57eb1e5c64c6b8b ]--- > > > > > > random: fast init done > > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out > > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out > > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out > > > > > > > > > > > > But according to Allwinner A33, A64 BSP code [1] [3] the TCON DRQ for > > > > > > non-burst DSI mode can be computed based on "horizontal front porch" > > > > > > value only (no sync timings included). > > > > > > > > > > > > Detailed evidence for drq set bits based on A33 BSP [1] [2] > > > > > > > > > > > > => panel->lcd_ht - panel->lcd_x - panel->lcd_hbp - 20 > > > > > > => (tt->hor_front_porch + lcdp->panel_info.lcd_hbp + > > > > > > lcdp->panel_info.lcd_x) - panel->lcd_x - panel->lcd_hbp - 20 > > > > > > => tt->hor_front_porch - 20 > > > > > > > > > > The thing is, while your explanation on the DRM side is sound, > > > > > Allwinner has been using the hbp field of their panel description to > > > > > store what DRM calls the backporch and the sync period. > > > > > > > > Exactly, hbp = backporch + sync > > > > https://github.com/BPI-SINOVOIP/BPI-M2M-bsp/blob/master/linux-sunxi/drivers/video/sunxi/disp/de/disp_lcd.c#L2046 > > > > > > > > And the above computation is rely on that as well. If you can see the > > > > final out of the above computation you can get the front porch value > > > > (w/o sync ) > > > > > > As I was saying, you are explaining it well for DRM, but in order for > > > your last formula (the one coming from the BSP) to make sense, you > > > have to explain that the horizontal back porch for Allwinner contains > > > the sync period, otherwise your expansion of lcd_ht doesn't make > > > sense. > > > > I'm not sure why we need to take care of back porch since the formula > > clearly evaluating a result as front porch, without sync timing (as > > current code included this sync), I keep the hbp and trying to > > substitute the lcd_ht value so the end result would cancel hbp. > > Because it changes how lcd_ht expands. In the DRM case, it will expand > to the displayed area, the front porch, the sync period and the back > porch. > > In your case, you expand it to the displayed area, the front porch and > the back porch, precisely because in Allwinner's case, the back porch > has the sync period. I understand the point, but technically it matter about the final computation result. May be we can even manage the same computation in back porch, but I'm not sure. Since the final output doesn't involve any sync length, why we can include that ie what I'm not sure. with inclusion of sync timings we have wrong tcon drq set bit, it's been verified. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jagan Teki Subject: Re: [PATCH v10 01/11] drm/sun4i: dsi: Fix TCON DRQ set bits Date: Wed, 5 Jun 2019 13:17:11 +0530 Message-ID: References: <20190520090318.27570-1-jagan@amarulasolutions.com> <20190520090318.27570-2-jagan@amarulasolutions.com> <20190523203407.o5obg2wtj7wwau6a@flea> <20190529145450.qnitxpmpr2a2xemk@flea> <20190604100011.cqkhpwmmmwh3vr3y@flea> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-it1-x141.google.com (mail-it1-x141.google.com [IPv6:2607:f8b0:4864:20::141]) by gabe.freedesktop.org (Postfix) with ESMTPS id E15F2895A8 for ; Wed, 5 Jun 2019 07:47:23 +0000 (UTC) Received: by mail-it1-x141.google.com with SMTP id m3so2106867itl.1 for ; Wed, 05 Jun 2019 00:47:23 -0700 (PDT) In-Reply-To: <20190604100011.cqkhpwmmmwh3vr3y@flea> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maxime Ripard Cc: Bhushan Shah , David Airlie , linux-sunxi , linux-kernel , dri-devel , Vasily Khoruzhick , =?UTF-8?B?5Z2a5a6a5YmN6KGM?= , Chen-Yu Tsai , Michael Trimarchi , linux-amarula , linux-arm-kernel List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdW4gNCwgMjAxOSBhdCAzOjMwIFBNIE1heGltZSBSaXBhcmQgPG1heGltZS5yaXBh cmRAYm9vdGxpbi5jb20+IHdyb3RlOgo+Cj4gT24gV2VkLCBNYXkgMjksIDIwMTkgYXQgMTE6NDQ6 NTZQTSArMDUzMCwgSmFnYW4gVGVraSB3cm90ZToKPiA+IE9uIFdlZCwgTWF5IDI5LCAyMDE5IGF0 IDg6MjQgUE0gTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBib290bGluLmNvbT4gd3JvdGU6 Cj4gPiA+Cj4gPiA+IE9uIEZyaSwgTWF5IDI0LCAyMDE5IGF0IDAzOjQ4OjUxUE0gKzA1MzAsIEph Z2FuIFRla2kgd3JvdGU6Cj4gPiA+ID4gT24gRnJpLCBNYXkgMjQsIDIwMTkgYXQgMjowNCBBTSBN YXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGJvb3RsaW4uY29tPiB3cm90ZToKPiA+ID4gPiA+ Cj4gPiA+ID4gPiBPbiBNb24sIE1heSAyMCwgMjAxOSBhdCAwMjozMzowOFBNICswNTMwLCBKYWdh biBUZWtpIHdyb3RlOgo+ID4gPiA+ID4gPiBBY2NvcmRpbmcgdG8gIkRSTSBrZXJuZWwtaW50ZXJu YWwgZGlzcGxheSBtb2RlIHN0cnVjdHVyZSIgaW4KPiA+ID4gPiA+ID4gaW5jbHVkZS9kcm0vZHJt X21vZGVzLmggdGhlIGN1cnJlbnQgZHJpdmVyIGlzIHRyeWluZyB0byBpbmNsdWRlCj4gPiA+ID4g PiA+IHN5bmMgdGltaW5ncyBhbG9uZyB3aXRoIGZyb250IHBvcmNoIHZhbHVlIHdoaWxlIGNoZWNr aW5nIGFuZAo+ID4gPiA+ID4gPiBjb21wdXRpbmcgZHJxIHNldCBiaXRzIGluIG5vbi1idXJzdCBt b2RlLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oZGlz cGxheSA9PiBob3Jpem9udGFsIGZyb250IHBvcmNoICsgc3luYwo+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiBXaXRoIGFkZGluZyBhZGRpdGlvbmFsIHN5bmMgdGltaW5ncywgdGhlIGRzaSBjb250cm9s bGVyIGxlYWRzIHRvCj4gPiA+ID4gPiA+IHdyb25nIGRycSBzZXQgYml0cyBmb3IgImJhbmFuYXBp LHMwNzB3djIwLWN0MTYiIHBhbmVsIHdoaWNoIGluZGVlZAo+ID4gPiA+ID4gPiB0cmlnZ2VyIHBh bmVsIGZsaXBfZG9uZSB0aW1lZCBvdXQgYXM6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICBXQVJO SU5HOiBDUFU6IDAgUElEOiAzMSBhdCBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu YzoxNDI5IGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MucGFydC4xKzB4Mjk4LzB4 MmEwCj4gPiA+ID4gPiA+ICBbQ1JUQzo0NjpjcnRjLTBdIHZibGFuayB3YWl0IHRpbWVkIG91dAo+ ID4gPiA+ID4gPiAgTW9kdWxlcyBsaW5rZWQgaW46Cj4gPiA+ID4gPiA+ICBDUFU6IDAgUElEOiAz MSBDb21tOiBrd29ya2VyLzA6MSBOb3QgdGFpbnRlZCA1LjEuMC1uZXh0LTIwMTkwNTE0LTAwMDI2 LWcwMWYwYzc1YjkwMmQtZGlydHkgIzEzCj4gPiA+ID4gPiA+ICBIYXJkd2FyZSBuYW1lOiBBbGx3 aW5uZXIgc3VuOGkgRmFtaWx5Cj4gPiA+ID4gPiA+ICBXb3JrcXVldWU6IGV2ZW50cyBkZWZlcnJl ZF9wcm9iZV93b3JrX2Z1bmMKPiA+ID4gPiA+ID4gIFs8YzAxMGVkNTQ+XSAodW53aW5kX2JhY2t0 cmFjZSkgZnJvbSBbPGMwMTBiNzZjPl0gKHNob3dfc3RhY2srMHgxMC8weDE0KQo+ID4gPiA+ID4g PiAgWzxjMDEwYjc2Yz5dIChzaG93X3N0YWNrKSBmcm9tIFs8YzA2ODhjNzA+XSAoZHVtcF9zdGFj aysweDg0LzB4OTgpCj4gPiA+ID4gPiA+ICBbPGMwNjg4YzcwPl0gKGR1bXBfc3RhY2spIGZyb20g WzxjMDExZDllND5dIChfX3dhcm4rMHhmYy8weDExNCkKPiA+ID4gPiA+ID4gIFs8YzAxMWQ5ZTQ+ XSAoX193YXJuKSBmcm9tIFs8YzAxMWRhNDA+XSAod2Fybl9zbG93cGF0aF9mbXQrMHg0NC8weDY4 KQo+ID4gPiA+ID4gPiAgWzxjMDExZGE0MD5dICh3YXJuX3Nsb3dwYXRoX2ZtdCkgZnJvbSBbPGMw NDBjZDUwPl0gKGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MucGFydC4xKzB4Mjk4 LzB4MmEwKQo+ID4gPiA+ID4gPiAgWzxjMDQwY2Q1MD5dIChkcm1fYXRvbWljX2hlbHBlcl93YWl0 X2Zvcl92YmxhbmtzLnBhcnQuMSkgZnJvbSBbPGMwNDBlNjk0Pl0gKGRybV9hdG9taWNfaGVscGVy X2NvbW1pdF90YWlsX3JwbSsweDVjLzB4NmMpCj4gPiA+ID4gPiA+ICBbPGMwNDBlNjk0Pl0gKGRy bV9hdG9taWNfaGVscGVyX2NvbW1pdF90YWlsX3JwbSkgZnJvbSBbPGMwNDBlNGRjPl0gKGNvbW1p dF90YWlsKzB4NDAvMHg2YykKPiA+ID4gPiA+ID4gIFs8YzA0MGU0ZGM+XSAoY29tbWl0X3RhaWwp IGZyb20gWzxjMDQwZTVjYz5dIChkcm1fYXRvbWljX2hlbHBlcl9jb21taXQrMHhiYy8weDEyOCkK PiA+ID4gPiA+ID4gIFs8YzA0MGU1Y2M+XSAoZHJtX2F0b21pY19oZWxwZXJfY29tbWl0KSBmcm9t IFs8YzA0MTFiNjQ+XSAocmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYysweDFjYy8weDFkYykKPiA+ ID4gPiA+ID4gIFs8YzA0MTFiNjQ+XSAocmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYykgZnJvbSBb PGMwNDE1NmY4Pl0gKGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKzB4 NTQvMHhhMCkKPiA+ID4gPiA+ID4gIFs8YzA0MTU2Zjg+XSAoZHJtX2ZiX2hlbHBlcl9yZXN0b3Jl X2ZiZGV2X21vZGVfdW5sb2NrZWQpIGZyb20gWzxjMDQxNTc3ND5dIChkcm1fZmJfaGVscGVyX3Nl dF9wYXIrMHgzMC8weDU0KQo+ID4gPiA+ID4gPiAgWzxjMDQxNTc3ND5dIChkcm1fZmJfaGVscGVy X3NldF9wYXIpIGZyb20gWzxjMDNhZDQ1MD5dIChmYmNvbl9pbml0KzB4NTYwLzB4NWFjKQo+ID4g PiA+ID4gPiAgWzxjMDNhZDQ1MD5dIChmYmNvbl9pbml0KSBmcm9tIFs8YzAzZWI4YTA+XSAodmlz dWFsX2luaXQrMHhiYy8weDEwNCkKPiA+ID4gPiA+ID4gIFs8YzAzZWI4YTA+XSAodmlzdWFsX2lu aXQpIGZyb20gWzxjMDNlZDFiOD5dIChkb19iaW5kX2Nvbl9kcml2ZXIrMHgxYjAvMHgzOTApCj4g PiA+ID4gPiA+ICBbPGMwM2VkMWI4Pl0gKGRvX2JpbmRfY29uX2RyaXZlcikgZnJvbSBbPGMwM2Vk NzgwPl0gKGRvX3Rha2Vfb3Zlcl9jb25zb2xlKzB4MTNjLzB4MWM0KQo+ID4gPiA+ID4gPiAgWzxj MDNlZDc4MD5dIChkb190YWtlX292ZXJfY29uc29sZSkgZnJvbSBbPGMwM2FkODAwPl0gKGRvX2Zi Y29uX3Rha2VvdmVyKzB4NzQvMHhjYykKPiA+ID4gPiA+ID4gIFs8YzAzYWQ4MDA+XSAoZG9fZmJj b25fdGFrZW92ZXIpIGZyb20gWzxjMDEzYzljOD5dIChub3RpZmllcl9jYWxsX2NoYWluKzB4NDQv MHg4NCkKPiA+ID4gPiA+ID4gIFs8YzAxM2M5Yzg+XSAobm90aWZpZXJfY2FsbF9jaGFpbikgZnJv bSBbPGMwMTNjZDIwPl0gKF9fYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbisweDQ4LzB4NjAp Cj4gPiA+ID4gPiA+ICBbPGMwMTNjZDIwPl0gKF9fYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFp bikgZnJvbSBbPGMwMTNjZDUwPl0gKGJsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4rMHgxOC8w eDIwKQo+ID4gPiA+ID4gPiAgWzxjMDEzY2Q1MD5dIChibG9ja2luZ19ub3RpZmllcl9jYWxsX2No YWluKSBmcm9tIFs8YzAzYTZlNDQ+XSAocmVnaXN0ZXJfZnJhbWVidWZmZXIrMHgxZTAvMHgyZjgp Cj4gPiA+ID4gPiA+ICBbPGMwM2E2ZTQ0Pl0gKHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKSBmcm9tIFs8 YzA0MTUzYzA+XSAoX19kcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnX2FuZF91bmxvY2srMHgy ZmMvMHg1MGMpCj4gPiA+ID4gPiA+ICBbPGMwNDE1M2MwPl0gKF9fZHJtX2ZiX2hlbHBlcl9pbml0 aWFsX2NvbmZpZ19hbmRfdW5sb2NrKSBmcm9tIFs8YzA0MTU4Yzg+XSAoZHJtX2ZiZGV2X2NsaWVu dF9ob3RwbHVnKzB4ZTgvMHgxYjgpCj4gPiA+ID4gPiA+ICBbPGMwNDE1OGM4Pl0gKGRybV9mYmRl dl9jbGllbnRfaG90cGx1ZykgZnJvbSBbPGMwNDE1YTIwPl0gKGRybV9mYmRldl9nZW5lcmljX3Nl dHVwKzB4ODgvMHgxMTgpCj4gPiA+ID4gPiA+ICBbPGMwNDE1YTIwPl0gKGRybV9mYmRldl9nZW5l cmljX3NldHVwKSBmcm9tIFs8YzA0M2YwNjA+XSAoc3VuNGlfZHJ2X2JpbmQrMHgxMjgvMHgxNjAp Cj4gPiA+ID4gPiA+ICBbPGMwNDNmMDYwPl0gKHN1bjRpX2Rydl9iaW5kKSBmcm9tIFs8YzA0NGI1 OTg+XSAodHJ5X3RvX2JyaW5nX3VwX21hc3RlcisweDE2NC8weDFhMCkKPiA+ID4gPiA+ID4gIFs8 YzA0NGI1OTg+XSAodHJ5X3RvX2JyaW5nX3VwX21hc3RlcikgZnJvbSBbPGMwNDRiNjY4Pl0gKF9f Y29tcG9uZW50X2FkZCsweDk0LzB4MTQwKQo+ID4gPiA+ID4gPiAgWzxjMDQ0YjY2OD5dIChfX2Nv bXBvbmVudF9hZGQpIGZyb20gWzxjMDQ0NWUxYz5dIChzdW42aV9kc2lfcHJvYmUrMHgxNDQvMHgy MzQpCj4gPiA+ID4gPiA+ICBbPGMwNDQ1ZTFjPl0gKHN1bjZpX2RzaV9wcm9iZSkgZnJvbSBbPGMw NDUyZWY0Pl0gKHBsYXRmb3JtX2Rydl9wcm9iZSsweDQ4LzB4OWMpCj4gPiA+ID4gPiA+ICBbPGMw NDUyZWY0Pl0gKHBsYXRmb3JtX2Rydl9wcm9iZSkgZnJvbSBbPGMwNDUxMmNjPl0gKHJlYWxseV9w cm9iZSsweDFkYy8weDJjOCkKPiA+ID4gPiA+ID4gIFs8YzA0NTEyY2M+XSAocmVhbGx5X3Byb2Jl KSBmcm9tIFs8YzA0NTE1MTg+XSAoZHJpdmVyX3Byb2JlX2RldmljZSsweDYwLzB4MTYwKQo+ID4g PiA+ID4gPiAgWzxjMDQ1MTUxOD5dIChkcml2ZXJfcHJvYmVfZGV2aWNlKSBmcm9tIFs8YzA0NGY3 YTQ+XSAoYnVzX2Zvcl9lYWNoX2RydisweDc0LzB4YjgpCj4gPiA+ID4gPiA+ICBbPGMwNDRmN2E0 Pl0gKGJ1c19mb3JfZWFjaF9kcnYpIGZyb20gWzxjMDQ1MTA3Yz5dIChfX2RldmljZV9hdHRhY2gr MHhkMC8weDEzYykKPiA+ID4gPiA+ID4gIFs8YzA0NTEwN2M+XSAoX19kZXZpY2VfYXR0YWNoKSBm cm9tIFs8YzA0NTA0NzQ+XSAoYnVzX3Byb2JlX2RldmljZSsweDg0LzB4OGMpCj4gPiA+ID4gPiA+ ICBbPGMwNDUwNDc0Pl0gKGJ1c19wcm9iZV9kZXZpY2UpIGZyb20gWzxjMDQ1MDkwMD5dIChkZWZl cnJlZF9wcm9iZV93b3JrX2Z1bmMrMHg2NC8weDkwKQo+ID4gPiA+ID4gPiAgWzxjMDQ1MDkwMD5d IChkZWZlcnJlZF9wcm9iZV93b3JrX2Z1bmMpIGZyb20gWzxjMDEzNTk3MD5dIChwcm9jZXNzX29u ZV93b3JrKzB4MjA0LzB4NDIwKQo+ID4gPiA+ID4gPiAgWzxjMDEzNTk3MD5dIChwcm9jZXNzX29u ZV93b3JrKSBmcm9tIFs8YzAxMzY5MGM+XSAod29ya2VyX3RocmVhZCsweDI3NC8weDVhMCkKPiA+ ID4gPiA+ID4gIFs8YzAxMzY5MGM+XSAod29ya2VyX3RocmVhZCkgZnJvbSBbPGMwMTNiM2Q4Pl0g KGt0aHJlYWQrMHgxMWMvMHgxNGMpCj4gPiA+ID4gPiA+ICBbPGMwMTNiM2Q4Pl0gKGt0aHJlYWQp IGZyb20gWzxjMDEwMTBlOD5dIChyZXRfZnJvbV9mb3JrKzB4MTQvMHgyYykKPiA+ID4gPiA+ID4g IEV4Y2VwdGlvbiBzdGFjaygweGRlNTM5ZmIwIHRvIDB4ZGU1MzlmZjgpCj4gPiA+ID4gPiA+ICA5 ZmEwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAwMDAwMCAwMDAwMDAw MCAwMDAwMDAwMCAwMDAwMDAwMAo+ID4gPiA+ID4gPiAgOWZjMDogMDAwMDAwMDAgMDAwMDAwMDAg MDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAKPiA+ ID4gPiA+ID4gIDlmZTA6IDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAw MDEzIDAwMDAwMDAwCj4gPiA+ID4gPiA+ICAtLS1bIGVuZCB0cmFjZSBiNTdlYjFlNWM2NGM2Yjhi IF0tLS0KPiA+ID4gPiA+ID4gIHJhbmRvbTogZmFzdCBpbml0IGRvbmUKPiA+ID4gPiA+ID4gIFtk cm06ZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzXSAqRVJST1IqIFtDUlRD OjQ2OmNydGMtMF0gZmxpcF9kb25lIHRpbWVkIG91dAo+ID4gPiA+ID4gPiAgW2RybTpkcm1fYXRv bWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXNdICpFUlJPUiogW0NPTk5FQ1RPUjo0ODpE U0ktMV0gZmxpcF9kb25lIHRpbWVkIG91dAo+ID4gPiA+ID4gPiAgW2RybTpkcm1fYXRvbWljX2hl bHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXNdICpFUlJPUiogW1BMQU5FOjMwOnBsYW5lLTBdIGZs aXBfZG9uZSB0aW1lZCBvdXQKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQnV0IGFjY29yZGluZyB0 byBBbGx3aW5uZXIgQTMzLCBBNjQgQlNQIGNvZGUgWzFdIFszXSB0aGUgVENPTiBEUlEgZm9yCj4g PiA+ID4gPiA+IG5vbi1idXJzdCBEU0kgbW9kZSBjYW4gYmUgY29tcHV0ZWQgYmFzZWQgb24gImhv cml6b250YWwgZnJvbnQgcG9yY2giCj4gPiA+ID4gPiA+IHZhbHVlIG9ubHkgKG5vIHN5bmMgdGlt aW5ncyBpbmNsdWRlZCkuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IERldGFpbGVkIGV2aWRlbmNl IGZvciBkcnEgc2V0IGJpdHMgYmFzZWQgb24gQTMzIEJTUCBbMV0gWzJdCj4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID0+IHBhbmVsLT5sY2RfaHQgLSBwYW5lbC0+bGNkX3ggLSBwYW5lbC0+bGNkX2hi cCAtIDIwCj4gPiA+ID4gPiA+ID0+ICh0dC0+aG9yX2Zyb250X3BvcmNoICsgbGNkcC0+cGFuZWxf aW5mby5sY2RfaGJwICsKPiA+ID4gPiA+ID4gbGNkcC0+cGFuZWxfaW5mby5sY2RfeCkgLSBwYW5l bC0+bGNkX3ggLSBwYW5lbC0+bGNkX2hicCAtIDIwCj4gPiA+ID4gPiA+ID0+IHR0LT5ob3JfZnJv bnRfcG9yY2ggLSAyMAo+ID4gPiA+ID4KPiA+ID4gPiA+IFRoZSB0aGluZyBpcywgd2hpbGUgeW91 ciBleHBsYW5hdGlvbiBvbiB0aGUgRFJNIHNpZGUgaXMgc291bmQsCj4gPiA+ID4gPiBBbGx3aW5u ZXIgaGFzIGJlZW4gdXNpbmcgdGhlIGhicCBmaWVsZCBvZiB0aGVpciBwYW5lbCBkZXNjcmlwdGlv biB0bwo+ID4gPiA+ID4gc3RvcmUgd2hhdCBEUk0gY2FsbHMgdGhlIGJhY2twb3JjaCBhbmQgdGhl IHN5bmMgcGVyaW9kLgo+ID4gPiA+Cj4gPiA+ID4gRXhhY3RseSwgaGJwID0gYmFja3BvcmNoICsg c3luYwo+ID4gPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9CUEktU0lOT1ZPSVAvQlBJLU0yTS1ic3Av YmxvYi9tYXN0ZXIvbGludXgtc3VueGkvZHJpdmVycy92aWRlby9zdW54aS9kaXNwL2RlL2Rpc3Bf bGNkLmMjTDIwNDYKPiA+ID4gPgo+ID4gPiA+IEFuZCB0aGUgYWJvdmUgY29tcHV0YXRpb24gaXMg cmVseSBvbiB0aGF0IGFzIHdlbGwuIElmIHlvdSBjYW4gc2VlIHRoZQo+ID4gPiA+IGZpbmFsIG91 dCBvZiB0aGUgYWJvdmUgY29tcHV0YXRpb24geW91IGNhbiBnZXQgdGhlIGZyb250IHBvcmNoIHZh bHVlCj4gPiA+ID4gKHcvbyBzeW5jICkKPiA+ID4KPiA+ID4gQXMgSSB3YXMgc2F5aW5nLCB5b3Ug YXJlIGV4cGxhaW5pbmcgaXQgd2VsbCBmb3IgRFJNLCBidXQgaW4gb3JkZXIgZm9yCj4gPiA+IHlv dXIgbGFzdCBmb3JtdWxhICh0aGUgb25lIGNvbWluZyBmcm9tIHRoZSBCU1ApIHRvIG1ha2Ugc2Vu c2UsIHlvdQo+ID4gPiBoYXZlIHRvIGV4cGxhaW4gdGhhdCB0aGUgaG9yaXpvbnRhbCBiYWNrIHBv cmNoIGZvciBBbGx3aW5uZXIgY29udGFpbnMKPiA+ID4gdGhlIHN5bmMgcGVyaW9kLCBvdGhlcndp c2UgeW91ciBleHBhbnNpb24gb2YgbGNkX2h0IGRvZXNuJ3QgbWFrZQo+ID4gPiBzZW5zZS4KPiA+ Cj4gPiBJJ20gbm90IHN1cmUgd2h5IHdlIG5lZWQgdG8gdGFrZSBjYXJlIG9mIGJhY2sgcG9yY2gg c2luY2UgdGhlIGZvcm11bGEKPiA+IGNsZWFybHkgZXZhbHVhdGluZyBhIHJlc3VsdCBhcyBmcm9u dCBwb3JjaCwgd2l0aG91dCBzeW5jIHRpbWluZyAoYXMKPiA+IGN1cnJlbnQgY29kZSBpbmNsdWRl ZCB0aGlzIHN5bmMpLCBJIGtlZXAgdGhlIGhicCBhbmQgdHJ5aW5nIHRvCj4gPiBzdWJzdGl0dXRl IHRoZSBsY2RfaHQgdmFsdWUgc28gdGhlIGVuZCByZXN1bHQgd291bGQgY2FuY2VsIGhicC4KPgo+ IEJlY2F1c2UgaXQgY2hhbmdlcyBob3cgbGNkX2h0IGV4cGFuZHMuIEluIHRoZSBEUk0gY2FzZSwg aXQgd2lsbCBleHBhbmQKPiB0byB0aGUgZGlzcGxheWVkIGFyZWEsIHRoZSBmcm9udCBwb3JjaCwg dGhlIHN5bmMgcGVyaW9kIGFuZCB0aGUgYmFjawo+IHBvcmNoLgo+Cj4gSW4geW91ciBjYXNlLCB5 b3UgZXhwYW5kIGl0IHRvIHRoZSBkaXNwbGF5ZWQgYXJlYSwgdGhlIGZyb250IHBvcmNoIGFuZAo+ IHRoZSBiYWNrIHBvcmNoLCBwcmVjaXNlbHkgYmVjYXVzZSBpbiBBbGx3aW5uZXIncyBjYXNlLCB0 aGUgYmFjayBwb3JjaAo+IGhhcyB0aGUgc3luYyBwZXJpb2QuCgpJIHVuZGVyc3RhbmQgdGhlIHBv aW50LCBidXQgdGVjaG5pY2FsbHkgaXQgbWF0dGVyIGFib3V0IHRoZSBmaW5hbApjb21wdXRhdGlv biByZXN1bHQuICBNYXkgYmUgd2UgY2FuIGV2ZW4gbWFuYWdlIHRoZSBzYW1lIGNvbXB1dGF0aW9u IGluCmJhY2sgcG9yY2gsIGJ1dCBJJ20gbm90IHN1cmUuIFNpbmNlIHRoZSBmaW5hbCBvdXRwdXQg ZG9lc24ndCBpbnZvbHZlCmFueSBzeW5jIGxlbmd0aCwgd2h5IHdlIGNhbiBpbmNsdWRlIHRoYXQg aWUgd2hhdCBJJ20gbm90IHN1cmUuIHdpdGgKaW5jbHVzaW9uIG9mIHN5bmMgdGltaW5ncyB3ZSBo YXZlIHdyb25nIHRjb24gZHJxIHNldCBiaXQsIGl0J3MgYmVlbgp2ZXJpZmllZC4KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs