From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F3F24249EB; Mon, 18 Mar 2024 13:37:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710769035; cv=none; b=U0oK0LOk6CsnVgA0gcpRzxQyRB5Bt8BpCHyY7lohzGYKPTZSSfKcjzgn/5JYO2HFr1PcloV/TmRgN5B1P5aHq8qxlV7W5vYjcY7Hi/Qz5rYTj6AWh4kUOUKHK6X7nV6VWOA09AJxsEiZP/3F3YW4WYZG9F8x+bJUgrUK/XWlfj8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710769035; c=relaxed/simple; bh=u82l/MBNpObPyrd/rtRsi0HOp2zPMN16KTaVMbMuxec=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=IidW6vmMreQBLmlS2H7cLrzNPbUB/bOETcu9xQ5Y+VDFU5FBsljsJ+3Ch1O0oCqEUOJMeNp+Vx6KqsLfawjGzCZlAq/WpxnwCYc+0Uq9LiMQ5o7iHeg7sZNMu94jBx8oB2UPnSKiWiT+YUGCr5SipiaXNMTwyc0nV9bkTChACKM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=My2kqKgz; arc=none smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="My2kqKgz" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710769033; x=1742305033; h=date:from:to:cc:subject:message-id:references: mime-version:content-transfer-encoding:in-reply-to; bh=u82l/MBNpObPyrd/rtRsi0HOp2zPMN16KTaVMbMuxec=; b=My2kqKgzCby75PAglA0ekpm/4P/BvPQa+JWj8bg0RY2SrMo1JhEtgwf6 edj2rLD82aDKLfXvURsIVX82mfYSorzHvgnuy6aiQE30+1vD6dINk+KX/ +7odyFkjYWggJwFAunpKJPii96roj8DAvnqyrpSgPYeQc2yDCpCiD/SR7 4IWKA+WhizlGr4uiFRDVVOJirE+VR3gOz2Ah7brafR+BAfsZWWyy82a3w ImwbohvLcoPHnxdsXABayGgAlT8ZjbiwdOzqkmXlEiSprH0oRFtOlkKmp GO0o0woBJ9xSN5bKUtXJkfZgOObQ1L5YHwc04jB2siRoGsPfiensOzLXv w==; X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="5765138" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="5765138" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2024 06:37:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="827781787" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="827781787" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by orsmga001.jf.intel.com with SMTP; 18 Mar 2024 06:37:05 -0700 Received: by stinkbox (sSMTP sendmail emulation); Mon, 18 Mar 2024 15:37:05 +0200 Date: Mon, 18 Mar 2024 15:37:05 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maxime Ripard Cc: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Jonathan Corbet , Sandy Huang , Heiko =?iso-8859-1?Q?St=FCbner?= , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Hans Verkuil , Sebastian Wick , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev Subject: Re: [PATCH v9 14/27] drm/connector: hdmi: Compute bpc and format automatically Message-ID: References: <20240311-kms-hdmi-connector-state-v9-0-d45890323344@kernel.org> <20240311-kms-hdmi-connector-state-v9-14-d45890323344@kernel.org> <20240318-organic-debonair-beetle-b2817b@houat> Precedence: bulk X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240318-organic-debonair-beetle-b2817b@houat> X-Patchwork-Hint: comment On Mon, Mar 18, 2024 at 01:05:22PM +0100, Maxime Ripard wrote: > Hi Ville, > > Thanks for your review ! > > On Fri, Mar 15, 2024 at 10:05:16AM +0200, Ville Syrjälä wrote: > > On Mon, Mar 11, 2024 at 03:49:42PM +0100, Maxime Ripard wrote: > > > +static bool > > > +sink_supports_format_bpc(const struct drm_connector *connector, > > > + const struct drm_display_info *info, > > > + const struct drm_display_mode *mode, > > > + unsigned int format, unsigned int bpc) > > > +{ > > > + struct drm_device *dev = connector->dev; > > > + u8 vic = drm_match_cea_mode(mode); > > > + > > > + if (vic == 1 && bpc != 8) { > > > + drm_dbg(dev, "VIC1 requires a bpc of 8, got %u\n", bpc); > > > > Use of drm_dbg() for kms stuff is surprising. > > > > > + return false; > > > + } > > > > I don't think we have this in i915. My original impression was that you > > can use higher color depth if you can determine the sink capabilities, > > but all sinks are required to accept 640x480@8bpc as a fallback. > > > > but CTA-861-H says: > > "5.4 Color Coding & Quantization > > Component Depth: The coding shall be N-bit, where N = 8, 10, 12, or 16 > > bits/component — except in the case of the default 640x480 Video Timing 1, > > where the value of N shall be 8." > > > > So that does seem to imply that you're supposed to use exactly 8bpc. > > Though the word "default" in there is confusing. Are they specifically > > using that to indicate that this is about the fallback behaviour, or > > is it just indicating that it is a "default mode that always has to > > be supported". Dunno. I guess no real harm in forcing 8bpc for 640x480 > > since no one is likely to use that for any high fidelity stuff. > > My understanding was that CTA-861 mandates that 640x480@60Hz is > supported, and mentions it being the default timing on a few occurences, > like in section 4 - Video Formats and Waveform Timings that states "This > section describes the default IT 640x480 Video Timing as well as all of > the standard CE Video Timings.", or Section 6.2 - Describing Video > Formats in EDID "The 640x480@60Hz flag, in the Established Timings area, > shall always be set, since the 640x480p format is a mandatory default > timing." > > So my understanding is that default here applies to the timing itself, > and not the bpc, and is thus the second interpretation you suggested. > > I'll add a comment to make it clearer. > > > > +static int > > > +hdmi_compute_format(const struct drm_connector *connector, > > > + struct drm_connector_state *state, > > > + const struct drm_display_mode *mode, > > > + unsigned int bpc) > > > +{ > > > + struct drm_device *dev = connector->dev; > > > + > > > + if (hdmi_try_format_bpc(connector, state, mode, bpc, HDMI_COLORSPACE_RGB)) { > > > + state->hdmi.output_format = HDMI_COLORSPACE_RGB; > > > + return 0; > > > + } > > > + > > > + if (hdmi_try_format_bpc(connector, state, mode, bpc, HDMI_COLORSPACE_YUV422)) { > > > + state->hdmi.output_format = HDMI_COLORSPACE_YUV422; > > > + return 0; > > > + } > > > > Looks like you're preferring YCbCr 4:2:2 over RGB 8bpc. Not sure > > if that's a good tradeoff to make. > > Yeah, indeed. I guess it's a judgement call on whether we prioritise > lowering the bpc over selecting YUV422, but I guess I can try all > available RGB bpc before falling back to YUV422. > > > In i915 we don't currently expose 4:2:2 at all because it doesn't > > help in getting a working display, and we have no uapi for the > > user to force it if they really want 4:2:2 over RGB. > > I guess if the priority is given to lowering bpc, then it indeed doesn't > make sense to support YUV422, since the limiting factor is likely to be > the TMDS char rate and YUV422 12 bpc is equivalent to RGB 8bpc there. > > dw-hdmi on the other hand will always put YUV422 and YUV444 before RGB > for a given bpc, which is weird to me: > https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c#L2696 > > What is even weirder to me is that YUV422 is explicitly stated to be > 12bpc only, so there's some invalid configurations there (8 and 10 bpc). > > And given that it's order by decreasing order of preference, I'm pretty > sure it'll never actually pick any YUV or RGB > 8bpc format since RGB > 8bpc is super likely to be always available and thus picked first. 8bpc RGB is in fact mandatory. > > If we want to converge, I think we should amend this code to support > YUV420 for YUV420-only modes first, and then the RGB options like i915 > is doing. And then if someone is interested in more, we can always > expand it to other formats. > > > > + > > > + drm_dbg(dev, "Failed. No Format Supported for that bpc count.\n"); > > > + > > > + return -EINVAL; > > > +} > > > + > > > +static int > > > +hdmi_compute_config(const struct drm_connector *connector, > > > + struct drm_connector_state *state, > > > + const struct drm_display_mode *mode) > > > +{ > > > + struct drm_device *dev = connector->dev; > > > + unsigned int max_bpc = clamp_t(unsigned int, > > > + state->max_bpc, > > > + 8, connector->max_bpc); > > > + unsigned int bpc; > > > + int ret; > > > + > > > + for (bpc = max_bpc; bpc >= 8; bpc -= 2) { > > > + drm_dbg(dev, "Trying with a %d bpc output\n", bpc); > > > + > > > + ret = hdmi_compute_format(connector, state, mode, bpc); > > > > Hmm. Actually I'm not sure your 4:2:2 stuff even works since you > > check for bpc==12 in there and only call this based on the max_bpc. > > I'm not convinced max_bpc would actually be 12 for a sink that > > supports YCbCr 4:2:2 but not 12bpc RGB. > > It's another discussion we had in an earlier version, but yeah we lack > the infrastructure to support those for now. I still believe it would > require an increased max_bpc to select YUV422, otherwise things would be > pretty inconsistent with other YUV formats. Ideally I'd like to know the actual color depth of the panel independently of the supported signal color depths. Unfortunately I don't think EDID gives us that. Can't recall if DisplayID might have something a bit more sensible. Given how info->bpc works right now, I suppose it would make sense to bump it up to 12 when 4:2:2 is supported. But I've not thought through the actual implications such a change. > But yeah, we need to provide a hook to report we don't support RGB > > 8bpc for HDMI 1.4 devices. Which goes back to the previous question > actually, I believe it would still provide value to support YUV422 on > those devices, with something like: > > for (bpc = max_bpc; bpc >= 8; bpc -= 2) { > if (!connector->hdmi->funcs->validate_config(mode, RGB, bpc)) > continue; > > // Select RGB with bpc > ... > } > > if (connector->hdmi->funcs->validate_config(mode, YUV) && > hdmi_try_format_bpc(..., mode, 12, YUV422) { > // Select YUV422, 12 bpc > ... > } > > What do you think? Since 8bpc RGB must always be supported this looks like dead code to me. -- Ville Syrjälä Intel 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id C9A86C54E58 for ; Mon, 18 Mar 2024 13:37:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=GGg590dWbs4APbBaxrG9Nt7xafbxnDNUAPkzIfxxE/E=; b=tCz27+wYBSWzj3 E6ODUN+xirJPSPmH3bE+upMDBctyN37kvkRa2v8Rcpum8tEqI6tbxZUqF+EB9mXx4GTPewFumqKKQ RMVZDxAGWZZET1XvrlaAwZqr/MBaQtVc98OmAVMUNn5XXOZM4IhftJlkazmnVdvaN9UinKXxwGgLM CFJYcmgWmbr+2DW0WVQ0qTD21H+ZQGi6Zf5q9MxwDe5nLmb5oTbfCMF3TpzvOZl5jgpXTVaZVrdlr u9MbkIDfKAu6tJWhbNZW7wY1HCEb4etFZWz26+BWevOYkTy66t+vAKAW7DYshFbWWUMB7hlFaz4Eo 04mWWbrO3W/aW2bWBBmA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmDB1-00000008gbe-0AFP; Mon, 18 Mar 2024 13:37:19 +0000 Received: from mgamail.intel.com ([192.198.163.15]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmDAy-00000008gag-0sxZ; Mon, 18 Mar 2024 13:37:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710769036; x=1742305036; h=date:from:to:cc:subject:message-id:references: mime-version:content-transfer-encoding:in-reply-to; bh=u82l/MBNpObPyrd/rtRsi0HOp2zPMN16KTaVMbMuxec=; b=YukdzySNC422o4qTKdjiuru78Ip8qyVKPzg3E77Kv/b25rc1OMz68KBA r9kw/U5Dg55KUojG40ieeJx4325Rw3KKqwwvFIiTmP7CgO2Y9JtSh68lK zNC7KIJ66wqAXcQQf3mpNx24CMZzhqFi8ICrlNRMPkh/QNWFnQmax9uBm BgaC4pM8+5eUsHBxBSSdefu9RoNwfQQDzELY/Litgijx9mbLVMhB2ntni WISkMfokBr2J2IT+3ub9gYDdTEUqfKKj0AFkDzDX3bJr5dhsXYrBeO/EP ZCbJdoKkaqCUVJwSYYMr1pc8ncMi213smrsA5LPqcQY4nDHMFQbuXd9SG g==; X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="5765142" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="5765142" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2024 06:37:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="827781787" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="827781787" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by orsmga001.jf.intel.com with SMTP; 18 Mar 2024 06:37:05 -0700 Received: by stinkbox (sSMTP sendmail emulation); Mon, 18 Mar 2024 15:37:05 +0200 Date: Mon, 18 Mar 2024 15:37:05 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maxime Ripard Cc: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Jonathan Corbet , Sandy Huang , Heiko =?iso-8859-1?Q?St=FCbner?= , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Hans Verkuil , Sebastian Wick , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev Subject: Re: [PATCH v9 14/27] drm/connector: hdmi: Compute bpc and format automatically Message-ID: References: <20240311-kms-hdmi-connector-state-v9-0-d45890323344@kernel.org> <20240311-kms-hdmi-connector-state-v9-14-d45890323344@kernel.org> <20240318-organic-debonair-beetle-b2817b@houat> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240318-organic-debonair-beetle-b2817b@houat> X-Patchwork-Hint: comment X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240318_063716_361991_FD0E148F X-CRM114-Status: GOOD ( 52.07 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org T24gTW9uLCBNYXIgMTgsIDIwMjQgYXQgMDE6MDU6MjJQTSArMDEwMCwgTWF4aW1lIFJpcGFyZCB3 cm90ZToKPiBIaSBWaWxsZSwKPiAKPiBUaGFua3MgZm9yIHlvdXIgcmV2aWV3ICEKPiAKPiBPbiBG cmksIE1hciAxNSwgMjAyNCBhdCAxMDowNToxNkFNICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3Jv dGU6Cj4gPiBPbiBNb24sIE1hciAxMSwgMjAyNCBhdCAwMzo0OTo0MlBNICswMTAwLCBNYXhpbWUg UmlwYXJkIHdyb3RlOgo+ID4gPiArc3RhdGljIGJvb2wKPiA+ID4gK3Npbmtfc3VwcG9ydHNfZm9y bWF0X2JwYyhjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiArCQkJ IGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICppbmZvLAo+ID4gPiArCQkJIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ID4gPiArCQkJIHVuc2lnbmVkIGludCBmb3Jt YXQsIHVuc2lnbmVkIGludCBicGMpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gPiArCXU4IHZpYyA9IGRybV9tYXRjaF9jZWFfbW9k ZShtb2RlKTsKPiA+ID4gKwo+ID4gPiArCWlmICh2aWMgPT0gMSAmJiBicGMgIT0gOCkgewo+ID4g PiArCQlkcm1fZGJnKGRldiwgIlZJQzEgcmVxdWlyZXMgYSBicGMgb2YgOCwgZ290ICV1XG4iLCBi cGMpOwo+ID4gCj4gPiBVc2Ugb2YgZHJtX2RiZygpIGZvciBrbXMgc3R1ZmYgaXMgc3VycHJpc2lu Zy4KPiA+IAo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfQo+ID4gCj4gPiBJIGRvbid0 IHRoaW5rIHdlIGhhdmUgdGhpcyBpbiBpOTE1LiBNeSBvcmlnaW5hbCBpbXByZXNzaW9uIHdhcyB0 aGF0IHlvdQo+ID4gY2FuIHVzZSBoaWdoZXIgY29sb3IgZGVwdGggaWYgeW91IGNhbiBkZXRlcm1p bmUgdGhlIHNpbmsgY2FwYWJpbGl0aWVzLAo+ID4gYnV0IGFsbCBzaW5rcyBhcmUgcmVxdWlyZWQg dG8gYWNjZXB0IDY0MHg0ODBAOGJwYyBhcyBhIGZhbGxiYWNrLgo+ID4gCj4gPiBidXQgQ1RBLTg2 MS1IIHNheXM6Cj4gPiAiNS40IENvbG9yIENvZGluZyAmIFF1YW50aXphdGlvbgo+ID4gIENvbXBv bmVudCBEZXB0aDogVGhlIGNvZGluZyBzaGFsbCBiZSBOLWJpdCwgd2hlcmUgTiA9IDgsIDEwLCAx Miwgb3IgMTYKPiA+ICBiaXRzL2NvbXBvbmVudCDigJQgZXhjZXB0IGluIHRoZSBjYXNlIG9mIHRo ZSBkZWZhdWx0IDY0MHg0ODAgVmlkZW8gVGltaW5nIDEsCj4gPiAgd2hlcmUgdGhlIHZhbHVlIG9m IE4gc2hhbGwgYmUgOC4iCj4gPiAKPiA+IFNvIHRoYXQgZG9lcyBzZWVtIHRvIGltcGx5IHRoYXQg eW91J3JlIHN1cHBvc2VkIHRvIHVzZSBleGFjdGx5IDhicGMuCj4gPiBUaG91Z2ggdGhlIHdvcmQg ImRlZmF1bHQiIGluIHRoZXJlIGlzIGNvbmZ1c2luZy4gQXJlIHRoZXkgc3BlY2lmaWNhbGx5Cj4g PiB1c2luZyB0aGF0IHRvIGluZGljYXRlIHRoYXQgdGhpcyBpcyBhYm91dCB0aGUgZmFsbGJhY2sg YmVoYXZpb3VyLCBvcgo+ID4gaXMgaXQganVzdCBpbmRpY2F0aW5nIHRoYXQgaXQgaXMgYSAiZGVm YXVsdCBtb2RlIHRoYXQgYWx3YXlzIGhhcyB0bwo+ID4gYmUgc3VwcG9ydGVkIi4gRHVubm8uIEkg Z3Vlc3Mgbm8gcmVhbCBoYXJtIGluIGZvcmNpbmcgOGJwYyBmb3IgNjQweDQ4MAo+ID4gc2luY2Ug bm8gb25lIGlzIGxpa2VseSB0byB1c2UgdGhhdCBmb3IgYW55IGhpZ2ggZmlkZWxpdHkgc3R1ZmYu Cj4gCj4gTXkgdW5kZXJzdGFuZGluZyB3YXMgdGhhdCBDVEEtODYxIG1hbmRhdGVzIHRoYXQgNjQw eDQ4MEA2MEh6IGlzCj4gc3VwcG9ydGVkLCBhbmQgbWVudGlvbnMgaXQgYmVpbmcgdGhlIGRlZmF1 bHQgdGltaW5nIG9uIGEgZmV3IG9jY3VyZW5jZXMsCj4gbGlrZSBpbiBzZWN0aW9uIDQgLSBWaWRl byBGb3JtYXRzIGFuZCBXYXZlZm9ybSBUaW1pbmdzIHRoYXQgc3RhdGVzICJUaGlzCj4gc2VjdGlv biBkZXNjcmliZXMgdGhlIGRlZmF1bHQgSVQgNjQweDQ4MCBWaWRlbyBUaW1pbmcgYXMgd2VsbCBh cyBhbGwgb2YKPiB0aGUgc3RhbmRhcmQgQ0UgVmlkZW8gVGltaW5ncy4iLCBvciBTZWN0aW9uIDYu MiAtIERlc2NyaWJpbmcgVmlkZW8KPiBGb3JtYXRzIGluIEVESUQgIlRoZSA2NDB4NDgwQDYwSHog ZmxhZywgaW4gdGhlIEVzdGFibGlzaGVkIFRpbWluZ3MgYXJlYSwKPiBzaGFsbCBhbHdheXMgYmUg c2V0LCBzaW5jZSB0aGUgNjQweDQ4MHAgZm9ybWF0IGlzIGEgbWFuZGF0b3J5IGRlZmF1bHQKPiB0 aW1pbmcuIgo+IAo+IFNvIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBkZWZhdWx0IGhlcmUgYXBw bGllcyB0byB0aGUgdGltaW5nIGl0c2VsZiwKPiBhbmQgbm90IHRoZSBicGMsIGFuZCBpcyB0aHVz IHRoZSBzZWNvbmQgaW50ZXJwcmV0YXRpb24geW91IHN1Z2dlc3RlZC4KPiAKPiBJJ2xsIGFkZCBh IGNvbW1lbnQgdG8gbWFrZSBpdCBjbGVhcmVyLgo+IAo+ID4gPiArc3RhdGljIGludAo+ID4gPiAr aGRtaV9jb21wdXRlX2Zvcm1hdChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ID4gPiArCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAo+ID4gPiAr CQkgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gPiA+ICsJCSAgICB1 bnNpZ25lZCBpbnQgYnBjKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKPiA+ID4gKwo+ID4gPiArCWlmIChoZG1pX3RyeV9mb3JtYXRfYnBj KGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYywgSERNSV9DT0xPUlNQQUNFX1JHQikpIHsKPiA+ ID4gKwkJc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCA9IEhETUlfQ09MT1JTUEFDRV9SR0I7Cj4g PiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWlmIChoZG1pX3RyeV9m b3JtYXRfYnBjKGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYywgSERNSV9DT0xPUlNQQUNFX1lV VjQyMikpIHsKPiA+ID4gKwkJc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCA9IEhETUlfQ09MT1JT UEFDRV9ZVVY0MjI7Cj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+IAo+ID4gTG9va3Mg bGlrZSB5b3UncmUgcHJlZmVycmluZyBZQ2JDciA0OjI6MiBvdmVyIFJHQiA4YnBjLiBOb3Qgc3Vy ZQo+ID4gaWYgdGhhdCdzIGEgZ29vZCB0cmFkZW9mZiB0byBtYWtlLgo+IAo+IFllYWgsIGluZGVl ZC4gSSBndWVzcyBpdCdzIGEganVkZ2VtZW50IGNhbGwgb24gd2hldGhlciB3ZSBwcmlvcml0aXNl Cj4gbG93ZXJpbmcgdGhlIGJwYyBvdmVyIHNlbGVjdGluZyBZVVY0MjIsIGJ1dCBJIGd1ZXNzIEkg Y2FuIHRyeSBhbGwKPiBhdmFpbGFibGUgUkdCIGJwYyBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIFlV VjQyMi4KPiAKPiA+IEluIGk5MTUgd2UgZG9uJ3QgY3VycmVudGx5IGV4cG9zZSA0OjI6MiBhdCBh bGwgYmVjYXVzZSBpdCBkb2Vzbid0Cj4gPiBoZWxwIGluIGdldHRpbmcgYSB3b3JraW5nIGRpc3Bs YXksIGFuZCB3ZSBoYXZlIG5vIHVhcGkgZm9yIHRoZQo+ID4gdXNlciB0byBmb3JjZSBpdCBpZiB0 aGV5IHJlYWxseSB3YW50IDQ6MjoyIG92ZXIgUkdCLgo+IAo+IEkgZ3Vlc3MgaWYgdGhlIHByaW9y aXR5IGlzIGdpdmVuIHRvIGxvd2VyaW5nIGJwYywgdGhlbiBpdCBpbmRlZWQgZG9lc24ndAo+IG1h a2Ugc2Vuc2UgdG8gc3VwcG9ydCBZVVY0MjIsIHNpbmNlIHRoZSBsaW1pdGluZyBmYWN0b3IgaXMg bGlrZWx5IHRvIGJlCj4gdGhlIFRNRFMgY2hhciByYXRlIGFuZCBZVVY0MjIgMTIgYnBjIGlzIGVx dWl2YWxlbnQgdG8gUkdCIDhicGMgdGhlcmUuCj4gCj4gZHctaGRtaSBvbiB0aGUgb3RoZXIgaGFu ZCB3aWxsIGFsd2F5cyBwdXQgWVVWNDIyIGFuZCBZVVY0NDQgYmVmb3JlIFJHQgo+IGZvciBhIGdp dmVuIGJwYywgd2hpY2ggaXMgd2VpcmQgdG8gbWU6Cj4gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5j b20vbGludXgvbGF0ZXN0L3NvdXJjZS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3 LWhkbWkuYyNMMjY5Ngo+IAo+IFdoYXQgaXMgZXZlbiB3ZWlyZGVyIHRvIG1lIGlzIHRoYXQgWVVW NDIyIGlzIGV4cGxpY2l0bHkgc3RhdGVkIHRvIGJlCj4gMTJicGMgb25seSwgc28gdGhlcmUncyBz b21lIGludmFsaWQgY29uZmlndXJhdGlvbnMgdGhlcmUgKDggYW5kIDEwIGJwYykuCj4gCj4gQW5k IGdpdmVuIHRoYXQgaXQncyBvcmRlciBieSBkZWNyZWFzaW5nIG9yZGVyIG9mIHByZWZlcmVuY2Us IEknbSBwcmV0dHkKPiBzdXJlIGl0J2xsIG5ldmVyIGFjdHVhbGx5IHBpY2sgYW55IFlVViBvciBS R0IgPiA4YnBjIGZvcm1hdCBzaW5jZSBSR0IKPiA4YnBjIGlzIHN1cGVyIGxpa2VseSB0byBiZSBh bHdheXMgYXZhaWxhYmxlIGFuZCB0aHVzIHBpY2tlZCBmaXJzdC4KCjhicGMgUkdCIGlzIGluIGZh Y3QgbWFuZGF0b3J5LgoKPiAKPiBJZiB3ZSB3YW50IHRvIGNvbnZlcmdlLCBJIHRoaW5rIHdlIHNo b3VsZCBhbWVuZCB0aGlzIGNvZGUgdG8gc3VwcG9ydAo+IFlVVjQyMCBmb3IgWVVWNDIwLW9ubHkg bW9kZXMgZmlyc3QsIGFuZCB0aGVuIHRoZSBSR0Igb3B0aW9ucyBsaWtlIGk5MTUKPiBpcyBkb2lu Zy4gQW5kIHRoZW4gaWYgc29tZW9uZSBpcyBpbnRlcmVzdGVkIGluIG1vcmUsIHdlIGNhbiBhbHdh eXMKPiBleHBhbmQgaXQgdG8gb3RoZXIgZm9ybWF0cy4KPiAKPiA+ID4gKwo+ID4gPiArCWRybV9k YmcoZGV2LCAiRmFpbGVkLiBObyBGb3JtYXQgU3VwcG9ydGVkIGZvciB0aGF0IGJwYyBjb3VudC5c biIpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyBpbnQKPiA+ID4gK2hkbWlfY29tcHV0ZV9jb25maWcoY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gKwkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpzdGF0ZSwKPiA+ID4gKwkJICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0 b3ItPmRldjsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgbWF4X2JwYyA9IGNsYW1wX3QodW5zaWduZWQg aW50LAo+ID4gPiArCQkJCSAgICAgICBzdGF0ZS0+bWF4X2JwYywKPiA+ID4gKwkJCQkgICAgICAg OCwgY29ubmVjdG9yLT5tYXhfYnBjKTsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgYnBjOwo+ID4gPiAr CWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlmb3IgKGJwYyA9IG1heF9icGM7IGJwYyA+PSA4OyBi cGMgLT0gMikgewo+ID4gPiArCQlkcm1fZGJnKGRldiwgIlRyeWluZyB3aXRoIGEgJWQgYnBjIG91 dHB1dFxuIiwgYnBjKTsKPiA+ID4gKwo+ID4gPiArCQlyZXQgPSBoZG1pX2NvbXB1dGVfZm9ybWF0 KGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYyk7Cj4gPiAKPiA+IEhtbS4gQWN0dWFsbHkgSSdt IG5vdCBzdXJlIHlvdXIgNDoyOjIgc3R1ZmYgZXZlbiB3b3JrcyBzaW5jZSB5b3UgCj4gPiBjaGVj ayBmb3IgYnBjPT0xMiBpbiB0aGVyZSBhbmQgb25seSBjYWxsIHRoaXMgYmFzZWQgb24gdGhlIG1h eF9icGMuCj4gPiBJJ20gbm90IGNvbnZpbmNlZCBtYXhfYnBjIHdvdWxkIGFjdHVhbGx5IGJlIDEy IGZvciBhIHNpbmsgdGhhdAo+ID4gc3VwcG9ydHMgWUNiQ3IgNDoyOjIgYnV0IG5vdCAxMmJwYyBS R0IuCj4gCj4gSXQncyBhbm90aGVyIGRpc2N1c3Npb24gd2UgaGFkIGluIGFuIGVhcmxpZXIgdmVy c2lvbiwgYnV0IHllYWggd2UgbGFjawo+IHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRo b3NlIGZvciBub3cuIEkgc3RpbGwgYmVsaWV2ZSBpdCB3b3VsZAo+IHJlcXVpcmUgYW4gaW5jcmVh c2VkIG1heF9icGMgdG8gc2VsZWN0IFlVVjQyMiwgb3RoZXJ3aXNlIHRoaW5ncyB3b3VsZCBiZQo+ IHByZXR0eSBpbmNvbnNpc3RlbnQgd2l0aCBvdGhlciBZVVYgZm9ybWF0cy4KCklkZWFsbHkgSSdk IGxpa2UgdG8ga25vdyB0aGUgYWN0dWFsIGNvbG9yIGRlcHRoIG9mIHRoZSBwYW5lbAppbmRlcGVu ZGVudGx5IG9mIHRoZSBzdXBwb3J0ZWQgc2lnbmFsIGNvbG9yIGRlcHRocy4gVW5mb3J0dW5hdGVs eQpJIGRvbid0IHRoaW5rIEVESUQgZ2l2ZXMgdXMgdGhhdC4gQ2FuJ3QgcmVjYWxsIGlmIERpc3Bs YXlJRCBtaWdodApoYXZlIHNvbWV0aGluZyBhIGJpdCBtb3JlIHNlbnNpYmxlLgoKR2l2ZW4gaG93 IGluZm8tPmJwYyB3b3JrcyByaWdodCBub3csIEkgc3VwcG9zZSBpdCB3b3VsZCBtYWtlIHNlbnNl CnRvIGJ1bXAgaXQgdXAgdG8gMTIgd2hlbiA0OjI6MiBpcyBzdXBwb3J0ZWQuIEJ1dCBJJ3ZlIG5v dCB0aG91Z2h0CnRocm91Z2ggdGhlIGFjdHVhbCBpbXBsaWNhdGlvbnMgc3VjaCBhIGNoYW5nZS4K Cj4gQnV0IHllYWgsIHdlIG5lZWQgdG8gcHJvdmlkZSBhIGhvb2sgdG8gcmVwb3J0IHdlIGRvbid0 IHN1cHBvcnQgUkdCID4KPiA4YnBjIGZvciBIRE1JIDEuNCBkZXZpY2VzLiBXaGljaCBnb2VzIGJh Y2sgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9uCj4gYWN0dWFsbHksIEkgYmVsaWV2ZSBpdCB3b3Vs ZCBzdGlsbCBwcm92aWRlIHZhbHVlIHRvIHN1cHBvcnQgWVVWNDIyIG9uCj4gdGhvc2UgZGV2aWNl cywgd2l0aCBzb21ldGhpbmcgbGlrZToKPiAKPiBmb3IgKGJwYyA9IG1heF9icGM7IGJwYyA+PSA4 OyBicGMgLT0gMikgewo+ICAgICBpZiAoIWNvbm5lY3Rvci0+aGRtaS0+ZnVuY3MtPnZhbGlkYXRl X2NvbmZpZyhtb2RlLCBSR0IsIGJwYykpCj4gICAgICAgIGNvbnRpbnVlOwo+IAo+ICAgICAvLyBT ZWxlY3QgUkdCIHdpdGggYnBjCj4gICAgIC4uLgo+IH0KPiAKPiBpZiAoY29ubmVjdG9yLT5oZG1p LT5mdW5jcy0+dmFsaWRhdGVfY29uZmlnKG1vZGUsIFlVVikgJiYKPiAgICAgaGRtaV90cnlfZm9y bWF0X2JwYyguLi4sIG1vZGUsIDEyLCBZVVY0MjIpIHsKPiAgICAvLyBTZWxlY3QgWVVWNDIyLCAx MiBicGMKPiAgICAuLi4KPiB9Cj4gCj4gV2hhdCBkbyB5b3UgdGhpbms/CgpTaW5jZSA4YnBjIFJH QiBtdXN0IGFsd2F5cyBiZSBzdXBwb3J0ZWQgdGhpcyBsb29rcwpsaWtlIGRlYWQgY29kZSB0byBt ZS4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1y b2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 9A8F5C54E5D for ; Mon, 18 Mar 2024 13:37:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sTGK7rw3Q5VXQyCcaj22BmLWi3yuUVIpX3BKt6iwfxw=; b=r0VCzCHsr5Ede3 eDrSgvfRlK/zkjRQlkZGvBLrk/I7DGlxajGRhF1tanW0VQtCNxtgm6YfuGBzXhXw/Jh30ALuPNK0g kjBpyLVciYyQPvXCRDHcipWVWZCbJN6UNDZ/Bxf7dFXrHL5mThAeueKuxyQG1CQu/vbmdKg3KzPkn GXpYmR74LTeRCS8Y6LsmUahs9PfIr1Xi4IwHW8C+s+n9k1Ay5lFkxZhvGDF12TME5kCyHj3o5wsHU qLTftg7ScyDC+f/Yxxu2pKwHEUaLMmLJDr1LgujuounYKspTuKN9WDPT2UtfNQT51g3lS8aPS+JXD 392Bpt60rv6+3l3eYxww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmDB0-00000008gbU-1kB4; Mon, 18 Mar 2024 13:37:18 +0000 Received: from mgamail.intel.com ([192.198.163.15]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmDAy-00000008gag-0sxZ; Mon, 18 Mar 2024 13:37:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710769036; x=1742305036; h=date:from:to:cc:subject:message-id:references: mime-version:content-transfer-encoding:in-reply-to; bh=u82l/MBNpObPyrd/rtRsi0HOp2zPMN16KTaVMbMuxec=; b=YukdzySNC422o4qTKdjiuru78Ip8qyVKPzg3E77Kv/b25rc1OMz68KBA r9kw/U5Dg55KUojG40ieeJx4325Rw3KKqwwvFIiTmP7CgO2Y9JtSh68lK zNC7KIJ66wqAXcQQf3mpNx24CMZzhqFi8ICrlNRMPkh/QNWFnQmax9uBm BgaC4pM8+5eUsHBxBSSdefu9RoNwfQQDzELY/Litgijx9mbLVMhB2ntni WISkMfokBr2J2IT+3ub9gYDdTEUqfKKj0AFkDzDX3bJr5dhsXYrBeO/EP ZCbJdoKkaqCUVJwSYYMr1pc8ncMi213smrsA5LPqcQY4nDHMFQbuXd9SG g==; X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="5765142" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="5765142" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2024 06:37:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="827781787" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="827781787" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by orsmga001.jf.intel.com with SMTP; 18 Mar 2024 06:37:05 -0700 Received: by stinkbox (sSMTP sendmail emulation); Mon, 18 Mar 2024 15:37:05 +0200 Date: Mon, 18 Mar 2024 15:37:05 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maxime Ripard Cc: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Jonathan Corbet , Sandy Huang , Heiko =?iso-8859-1?Q?St=FCbner?= , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Hans Verkuil , Sebastian Wick , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev Subject: Re: [PATCH v9 14/27] drm/connector: hdmi: Compute bpc and format automatically Message-ID: References: <20240311-kms-hdmi-connector-state-v9-0-d45890323344@kernel.org> <20240311-kms-hdmi-connector-state-v9-14-d45890323344@kernel.org> <20240318-organic-debonair-beetle-b2817b@houat> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240318-organic-debonair-beetle-b2817b@houat> X-Patchwork-Hint: comment X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240318_063716_361991_FD0E148F X-CRM114-Status: GOOD ( 52.07 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBNYXIgMTgsIDIwMjQgYXQgMDE6MDU6MjJQTSArMDEwMCwgTWF4aW1lIFJpcGFyZCB3 cm90ZToKPiBIaSBWaWxsZSwKPiAKPiBUaGFua3MgZm9yIHlvdXIgcmV2aWV3ICEKPiAKPiBPbiBG cmksIE1hciAxNSwgMjAyNCBhdCAxMDowNToxNkFNICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3Jv dGU6Cj4gPiBPbiBNb24sIE1hciAxMSwgMjAyNCBhdCAwMzo0OTo0MlBNICswMTAwLCBNYXhpbWUg UmlwYXJkIHdyb3RlOgo+ID4gPiArc3RhdGljIGJvb2wKPiA+ID4gK3Npbmtfc3VwcG9ydHNfZm9y bWF0X2JwYyhjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiArCQkJ IGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICppbmZvLAo+ID4gPiArCQkJIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ID4gPiArCQkJIHVuc2lnbmVkIGludCBmb3Jt YXQsIHVuc2lnbmVkIGludCBicGMpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gPiArCXU4IHZpYyA9IGRybV9tYXRjaF9jZWFfbW9k ZShtb2RlKTsKPiA+ID4gKwo+ID4gPiArCWlmICh2aWMgPT0gMSAmJiBicGMgIT0gOCkgewo+ID4g PiArCQlkcm1fZGJnKGRldiwgIlZJQzEgcmVxdWlyZXMgYSBicGMgb2YgOCwgZ290ICV1XG4iLCBi cGMpOwo+ID4gCj4gPiBVc2Ugb2YgZHJtX2RiZygpIGZvciBrbXMgc3R1ZmYgaXMgc3VycHJpc2lu Zy4KPiA+IAo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfQo+ID4gCj4gPiBJIGRvbid0 IHRoaW5rIHdlIGhhdmUgdGhpcyBpbiBpOTE1LiBNeSBvcmlnaW5hbCBpbXByZXNzaW9uIHdhcyB0 aGF0IHlvdQo+ID4gY2FuIHVzZSBoaWdoZXIgY29sb3IgZGVwdGggaWYgeW91IGNhbiBkZXRlcm1p bmUgdGhlIHNpbmsgY2FwYWJpbGl0aWVzLAo+ID4gYnV0IGFsbCBzaW5rcyBhcmUgcmVxdWlyZWQg dG8gYWNjZXB0IDY0MHg0ODBAOGJwYyBhcyBhIGZhbGxiYWNrLgo+ID4gCj4gPiBidXQgQ1RBLTg2 MS1IIHNheXM6Cj4gPiAiNS40IENvbG9yIENvZGluZyAmIFF1YW50aXphdGlvbgo+ID4gIENvbXBv bmVudCBEZXB0aDogVGhlIGNvZGluZyBzaGFsbCBiZSBOLWJpdCwgd2hlcmUgTiA9IDgsIDEwLCAx Miwgb3IgMTYKPiA+ICBiaXRzL2NvbXBvbmVudCDigJQgZXhjZXB0IGluIHRoZSBjYXNlIG9mIHRo ZSBkZWZhdWx0IDY0MHg0ODAgVmlkZW8gVGltaW5nIDEsCj4gPiAgd2hlcmUgdGhlIHZhbHVlIG9m IE4gc2hhbGwgYmUgOC4iCj4gPiAKPiA+IFNvIHRoYXQgZG9lcyBzZWVtIHRvIGltcGx5IHRoYXQg eW91J3JlIHN1cHBvc2VkIHRvIHVzZSBleGFjdGx5IDhicGMuCj4gPiBUaG91Z2ggdGhlIHdvcmQg ImRlZmF1bHQiIGluIHRoZXJlIGlzIGNvbmZ1c2luZy4gQXJlIHRoZXkgc3BlY2lmaWNhbGx5Cj4g PiB1c2luZyB0aGF0IHRvIGluZGljYXRlIHRoYXQgdGhpcyBpcyBhYm91dCB0aGUgZmFsbGJhY2sg YmVoYXZpb3VyLCBvcgo+ID4gaXMgaXQganVzdCBpbmRpY2F0aW5nIHRoYXQgaXQgaXMgYSAiZGVm YXVsdCBtb2RlIHRoYXQgYWx3YXlzIGhhcyB0bwo+ID4gYmUgc3VwcG9ydGVkIi4gRHVubm8uIEkg Z3Vlc3Mgbm8gcmVhbCBoYXJtIGluIGZvcmNpbmcgOGJwYyBmb3IgNjQweDQ4MAo+ID4gc2luY2Ug bm8gb25lIGlzIGxpa2VseSB0byB1c2UgdGhhdCBmb3IgYW55IGhpZ2ggZmlkZWxpdHkgc3R1ZmYu Cj4gCj4gTXkgdW5kZXJzdGFuZGluZyB3YXMgdGhhdCBDVEEtODYxIG1hbmRhdGVzIHRoYXQgNjQw eDQ4MEA2MEh6IGlzCj4gc3VwcG9ydGVkLCBhbmQgbWVudGlvbnMgaXQgYmVpbmcgdGhlIGRlZmF1 bHQgdGltaW5nIG9uIGEgZmV3IG9jY3VyZW5jZXMsCj4gbGlrZSBpbiBzZWN0aW9uIDQgLSBWaWRl byBGb3JtYXRzIGFuZCBXYXZlZm9ybSBUaW1pbmdzIHRoYXQgc3RhdGVzICJUaGlzCj4gc2VjdGlv biBkZXNjcmliZXMgdGhlIGRlZmF1bHQgSVQgNjQweDQ4MCBWaWRlbyBUaW1pbmcgYXMgd2VsbCBh cyBhbGwgb2YKPiB0aGUgc3RhbmRhcmQgQ0UgVmlkZW8gVGltaW5ncy4iLCBvciBTZWN0aW9uIDYu MiAtIERlc2NyaWJpbmcgVmlkZW8KPiBGb3JtYXRzIGluIEVESUQgIlRoZSA2NDB4NDgwQDYwSHog ZmxhZywgaW4gdGhlIEVzdGFibGlzaGVkIFRpbWluZ3MgYXJlYSwKPiBzaGFsbCBhbHdheXMgYmUg c2V0LCBzaW5jZSB0aGUgNjQweDQ4MHAgZm9ybWF0IGlzIGEgbWFuZGF0b3J5IGRlZmF1bHQKPiB0 aW1pbmcuIgo+IAo+IFNvIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBkZWZhdWx0IGhlcmUgYXBw bGllcyB0byB0aGUgdGltaW5nIGl0c2VsZiwKPiBhbmQgbm90IHRoZSBicGMsIGFuZCBpcyB0aHVz IHRoZSBzZWNvbmQgaW50ZXJwcmV0YXRpb24geW91IHN1Z2dlc3RlZC4KPiAKPiBJJ2xsIGFkZCBh IGNvbW1lbnQgdG8gbWFrZSBpdCBjbGVhcmVyLgo+IAo+ID4gPiArc3RhdGljIGludAo+ID4gPiAr aGRtaV9jb21wdXRlX2Zvcm1hdChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ID4gPiArCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAo+ID4gPiAr CQkgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gPiA+ICsJCSAgICB1 bnNpZ25lZCBpbnQgYnBjKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKPiA+ID4gKwo+ID4gPiArCWlmIChoZG1pX3RyeV9mb3JtYXRfYnBj KGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYywgSERNSV9DT0xPUlNQQUNFX1JHQikpIHsKPiA+ ID4gKwkJc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCA9IEhETUlfQ09MT1JTUEFDRV9SR0I7Cj4g PiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWlmIChoZG1pX3RyeV9m b3JtYXRfYnBjKGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYywgSERNSV9DT0xPUlNQQUNFX1lV VjQyMikpIHsKPiA+ID4gKwkJc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCA9IEhETUlfQ09MT1JT UEFDRV9ZVVY0MjI7Cj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+IAo+ID4gTG9va3Mg bGlrZSB5b3UncmUgcHJlZmVycmluZyBZQ2JDciA0OjI6MiBvdmVyIFJHQiA4YnBjLiBOb3Qgc3Vy ZQo+ID4gaWYgdGhhdCdzIGEgZ29vZCB0cmFkZW9mZiB0byBtYWtlLgo+IAo+IFllYWgsIGluZGVl ZC4gSSBndWVzcyBpdCdzIGEganVkZ2VtZW50IGNhbGwgb24gd2hldGhlciB3ZSBwcmlvcml0aXNl Cj4gbG93ZXJpbmcgdGhlIGJwYyBvdmVyIHNlbGVjdGluZyBZVVY0MjIsIGJ1dCBJIGd1ZXNzIEkg Y2FuIHRyeSBhbGwKPiBhdmFpbGFibGUgUkdCIGJwYyBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIFlV VjQyMi4KPiAKPiA+IEluIGk5MTUgd2UgZG9uJ3QgY3VycmVudGx5IGV4cG9zZSA0OjI6MiBhdCBh bGwgYmVjYXVzZSBpdCBkb2Vzbid0Cj4gPiBoZWxwIGluIGdldHRpbmcgYSB3b3JraW5nIGRpc3Bs YXksIGFuZCB3ZSBoYXZlIG5vIHVhcGkgZm9yIHRoZQo+ID4gdXNlciB0byBmb3JjZSBpdCBpZiB0 aGV5IHJlYWxseSB3YW50IDQ6MjoyIG92ZXIgUkdCLgo+IAo+IEkgZ3Vlc3MgaWYgdGhlIHByaW9y aXR5IGlzIGdpdmVuIHRvIGxvd2VyaW5nIGJwYywgdGhlbiBpdCBpbmRlZWQgZG9lc24ndAo+IG1h a2Ugc2Vuc2UgdG8gc3VwcG9ydCBZVVY0MjIsIHNpbmNlIHRoZSBsaW1pdGluZyBmYWN0b3IgaXMg bGlrZWx5IHRvIGJlCj4gdGhlIFRNRFMgY2hhciByYXRlIGFuZCBZVVY0MjIgMTIgYnBjIGlzIGVx dWl2YWxlbnQgdG8gUkdCIDhicGMgdGhlcmUuCj4gCj4gZHctaGRtaSBvbiB0aGUgb3RoZXIgaGFu ZCB3aWxsIGFsd2F5cyBwdXQgWVVWNDIyIGFuZCBZVVY0NDQgYmVmb3JlIFJHQgo+IGZvciBhIGdp dmVuIGJwYywgd2hpY2ggaXMgd2VpcmQgdG8gbWU6Cj4gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5j b20vbGludXgvbGF0ZXN0L3NvdXJjZS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3 LWhkbWkuYyNMMjY5Ngo+IAo+IFdoYXQgaXMgZXZlbiB3ZWlyZGVyIHRvIG1lIGlzIHRoYXQgWVVW NDIyIGlzIGV4cGxpY2l0bHkgc3RhdGVkIHRvIGJlCj4gMTJicGMgb25seSwgc28gdGhlcmUncyBz b21lIGludmFsaWQgY29uZmlndXJhdGlvbnMgdGhlcmUgKDggYW5kIDEwIGJwYykuCj4gCj4gQW5k IGdpdmVuIHRoYXQgaXQncyBvcmRlciBieSBkZWNyZWFzaW5nIG9yZGVyIG9mIHByZWZlcmVuY2Us IEknbSBwcmV0dHkKPiBzdXJlIGl0J2xsIG5ldmVyIGFjdHVhbGx5IHBpY2sgYW55IFlVViBvciBS R0IgPiA4YnBjIGZvcm1hdCBzaW5jZSBSR0IKPiA4YnBjIGlzIHN1cGVyIGxpa2VseSB0byBiZSBh bHdheXMgYXZhaWxhYmxlIGFuZCB0aHVzIHBpY2tlZCBmaXJzdC4KCjhicGMgUkdCIGlzIGluIGZh Y3QgbWFuZGF0b3J5LgoKPiAKPiBJZiB3ZSB3YW50IHRvIGNvbnZlcmdlLCBJIHRoaW5rIHdlIHNo b3VsZCBhbWVuZCB0aGlzIGNvZGUgdG8gc3VwcG9ydAo+IFlVVjQyMCBmb3IgWVVWNDIwLW9ubHkg bW9kZXMgZmlyc3QsIGFuZCB0aGVuIHRoZSBSR0Igb3B0aW9ucyBsaWtlIGk5MTUKPiBpcyBkb2lu Zy4gQW5kIHRoZW4gaWYgc29tZW9uZSBpcyBpbnRlcmVzdGVkIGluIG1vcmUsIHdlIGNhbiBhbHdh eXMKPiBleHBhbmQgaXQgdG8gb3RoZXIgZm9ybWF0cy4KPiAKPiA+ID4gKwo+ID4gPiArCWRybV9k YmcoZGV2LCAiRmFpbGVkLiBObyBGb3JtYXQgU3VwcG9ydGVkIGZvciB0aGF0IGJwYyBjb3VudC5c biIpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyBpbnQKPiA+ID4gK2hkbWlfY29tcHV0ZV9jb25maWcoY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gKwkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpzdGF0ZSwKPiA+ID4gKwkJICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0 b3ItPmRldjsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgbWF4X2JwYyA9IGNsYW1wX3QodW5zaWduZWQg aW50LAo+ID4gPiArCQkJCSAgICAgICBzdGF0ZS0+bWF4X2JwYywKPiA+ID4gKwkJCQkgICAgICAg OCwgY29ubmVjdG9yLT5tYXhfYnBjKTsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgYnBjOwo+ID4gPiAr CWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlmb3IgKGJwYyA9IG1heF9icGM7IGJwYyA+PSA4OyBi cGMgLT0gMikgewo+ID4gPiArCQlkcm1fZGJnKGRldiwgIlRyeWluZyB3aXRoIGEgJWQgYnBjIG91 dHB1dFxuIiwgYnBjKTsKPiA+ID4gKwo+ID4gPiArCQlyZXQgPSBoZG1pX2NvbXB1dGVfZm9ybWF0 KGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYyk7Cj4gPiAKPiA+IEhtbS4gQWN0dWFsbHkgSSdt IG5vdCBzdXJlIHlvdXIgNDoyOjIgc3R1ZmYgZXZlbiB3b3JrcyBzaW5jZSB5b3UgCj4gPiBjaGVj ayBmb3IgYnBjPT0xMiBpbiB0aGVyZSBhbmQgb25seSBjYWxsIHRoaXMgYmFzZWQgb24gdGhlIG1h eF9icGMuCj4gPiBJJ20gbm90IGNvbnZpbmNlZCBtYXhfYnBjIHdvdWxkIGFjdHVhbGx5IGJlIDEy IGZvciBhIHNpbmsgdGhhdAo+ID4gc3VwcG9ydHMgWUNiQ3IgNDoyOjIgYnV0IG5vdCAxMmJwYyBS R0IuCj4gCj4gSXQncyBhbm90aGVyIGRpc2N1c3Npb24gd2UgaGFkIGluIGFuIGVhcmxpZXIgdmVy c2lvbiwgYnV0IHllYWggd2UgbGFjawo+IHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRo b3NlIGZvciBub3cuIEkgc3RpbGwgYmVsaWV2ZSBpdCB3b3VsZAo+IHJlcXVpcmUgYW4gaW5jcmVh c2VkIG1heF9icGMgdG8gc2VsZWN0IFlVVjQyMiwgb3RoZXJ3aXNlIHRoaW5ncyB3b3VsZCBiZQo+ IHByZXR0eSBpbmNvbnNpc3RlbnQgd2l0aCBvdGhlciBZVVYgZm9ybWF0cy4KCklkZWFsbHkgSSdk IGxpa2UgdG8ga25vdyB0aGUgYWN0dWFsIGNvbG9yIGRlcHRoIG9mIHRoZSBwYW5lbAppbmRlcGVu ZGVudGx5IG9mIHRoZSBzdXBwb3J0ZWQgc2lnbmFsIGNvbG9yIGRlcHRocy4gVW5mb3J0dW5hdGVs eQpJIGRvbid0IHRoaW5rIEVESUQgZ2l2ZXMgdXMgdGhhdC4gQ2FuJ3QgcmVjYWxsIGlmIERpc3Bs YXlJRCBtaWdodApoYXZlIHNvbWV0aGluZyBhIGJpdCBtb3JlIHNlbnNpYmxlLgoKR2l2ZW4gaG93 IGluZm8tPmJwYyB3b3JrcyByaWdodCBub3csIEkgc3VwcG9zZSBpdCB3b3VsZCBtYWtlIHNlbnNl CnRvIGJ1bXAgaXQgdXAgdG8gMTIgd2hlbiA0OjI6MiBpcyBzdXBwb3J0ZWQuIEJ1dCBJJ3ZlIG5v dCB0aG91Z2h0CnRocm91Z2ggdGhlIGFjdHVhbCBpbXBsaWNhdGlvbnMgc3VjaCBhIGNoYW5nZS4K Cj4gQnV0IHllYWgsIHdlIG5lZWQgdG8gcHJvdmlkZSBhIGhvb2sgdG8gcmVwb3J0IHdlIGRvbid0 IHN1cHBvcnQgUkdCID4KPiA4YnBjIGZvciBIRE1JIDEuNCBkZXZpY2VzLiBXaGljaCBnb2VzIGJh Y2sgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9uCj4gYWN0dWFsbHksIEkgYmVsaWV2ZSBpdCB3b3Vs ZCBzdGlsbCBwcm92aWRlIHZhbHVlIHRvIHN1cHBvcnQgWVVWNDIyIG9uCj4gdGhvc2UgZGV2aWNl cywgd2l0aCBzb21ldGhpbmcgbGlrZToKPiAKPiBmb3IgKGJwYyA9IG1heF9icGM7IGJwYyA+PSA4 OyBicGMgLT0gMikgewo+ICAgICBpZiAoIWNvbm5lY3Rvci0+aGRtaS0+ZnVuY3MtPnZhbGlkYXRl X2NvbmZpZyhtb2RlLCBSR0IsIGJwYykpCj4gICAgICAgIGNvbnRpbnVlOwo+IAo+ICAgICAvLyBT ZWxlY3QgUkdCIHdpdGggYnBjCj4gICAgIC4uLgo+IH0KPiAKPiBpZiAoY29ubmVjdG9yLT5oZG1p LT5mdW5jcy0+dmFsaWRhdGVfY29uZmlnKG1vZGUsIFlVVikgJiYKPiAgICAgaGRtaV90cnlfZm9y bWF0X2JwYyguLi4sIG1vZGUsIDEyLCBZVVY0MjIpIHsKPiAgICAvLyBTZWxlY3QgWVVWNDIyLCAx MiBicGMKPiAgICAuLi4KPiB9Cj4gCj4gV2hhdCBkbyB5b3UgdGhpbms/CgpTaW5jZSA4YnBjIFJH QiBtdXN0IGFsd2F5cyBiZSBzdXBwb3J0ZWQgdGhpcyBsb29rcwpsaWtlIGRlYWQgY29kZSB0byBt ZS4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK