From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 49E936CDC2 for ; Fri, 1 Mar 2024 11:26:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709292398; cv=none; b=F6QGyAhvTMANdZZUgu8/W8woIVfeoImKJa4EOgB5zkKRdXEvb+uhkF4FReoQ4Tl4k1MS5J5cu6iXijChORe0rSRHWN8WKjIXC6Ticbf6Ic8uDN5gpBUPrnbMA55dF6r0F2aLDXUQqpBZRwn4ZY60NqyH8Ge2m3qQq1SfVhQmhzA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709292398; c=relaxed/simple; bh=v9Mw67zmZwjTVLvu50BgA9qZZ4KidgCacU0eeQ7KFx8=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=ADhK3sZxf0YRpF3Hjm7aFlEXMdztVgGqLRiBPGbG9elj3I7P2+5yTbOA2wJQQ7qpq1/KyfkxBSUQ6ESkardBPoV/Iry4vPU4e5UV6eHhjW//eSDri9ff3xjiuMPksCvETAOcWgZirYnljS7iPyRJvui9EEdjmhPs+qBFIyWHWMo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=EY/8cuB2; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="EY/8cuB2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1709292395; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wjYgI2KsgeWuP3sAlk9TqZqYfNa6GCpmBp03vZLpou0=; b=EY/8cuB2S7U3vC/TZDvP6csFVY7yJr+hVBLJW0WxLHy3vJY42UUsf1zfupBpXQSZ4PYfd9 qzagvZIPP0Yopa3rNXaTaolwXbGAR6sSnfro+8E4IHaYC5o2YGb6/DahR5xgo1giq2jTwH 3B7AR5BtySTLhSoyM2W4iqdEU3Cdo0A= Received: from mail-lj1-f199.google.com (mail-lj1-f199.google.com [209.85.208.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-591-B_YpUFlzMTujrScnT6h-HA-1; Fri, 01 Mar 2024 06:26:31 -0500 X-MC-Unique: B_YpUFlzMTujrScnT6h-HA-1 Received: by mail-lj1-f199.google.com with SMTP id 38308e7fff4ca-2d2b9aa4e35so11592971fa.3 for ; Fri, 01 Mar 2024 03:26:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709292390; x=1709897190; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wjYgI2KsgeWuP3sAlk9TqZqYfNa6GCpmBp03vZLpou0=; b=q2MDG0pHxJXw+ku+m+IkodalfpmdheXUuNPjI+ymoq6WuHys74gWJM7p4jZEW+6R3E oQqNbwwgW/N7lkxqNISc8aBZvNw+xXnJDfuZVnwrc4Fs3MORbR0FE0rwCPa5BztnxNv7 UspTqmXzP6wYUgFyp4ZfJmM9NsV2M9I1WOtywTb+ZSVtMDxT/+LiXV/5/yrO0qAXZsKc mmd699D0lIX97ayjXS4AO7py7jSiVXGpvI3tspiAWtnIHVETE8mxLSVxU2tX2dE89MOI Hk+rxvakS0wuq5aKdAFyE57FI/JrKhwgfHfqPtG59LnLL4wS2DwSScz7pBp1uK0bu9No r9Gw== X-Forwarded-Encrypted: i=1; AJvYcCX5lQDytG9Sc0iV/Cw2rbFDWV6AVvehM7MpTar5S7WYGqlxFTJ/p7wze0loJptbwDuD8EZ9NrpE3K63dHySoBD1ENHI0DtHEnr4 X-Gm-Message-State: AOJu0YyMoHZfAVU2xsELYNnNa3TX8aSmpxOd+FWEG6StNrnT5JxAx61S dzd8WRa3VCrbClJVbtt87a0a3dtg5XdM2q5wt9BK/4JPz/FOeSfHjaSjex4J2SHTp+cgREVnTIL ATVFrGzrBaxLMrJ3rtGaSPVHrEaWDqihFnpbx/v2e5tA3u7+4oknVMmMvMg== X-Received: by 2002:a2e:95d5:0:b0:2d2:5668:3a40 with SMTP id y21-20020a2e95d5000000b002d256683a40mr942899ljh.4.1709292390403; Fri, 01 Mar 2024 03:26:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IHUMPEadXUnHsh8Ae/1Y5RYwcaIFHHrv+QbMlgbuWWzQO///QbdhSklfmNGWU04m0Hw1ckfSQ== X-Received: by 2002:a2e:95d5:0:b0:2d2:5668:3a40 with SMTP id y21-20020a2e95d5000000b002d256683a40mr942879ljh.4.1709292389946; Fri, 01 Mar 2024 03:26:29 -0800 (PST) Received: from toolbox ([2001:9e8:89a0:c500:c65:1f3a:8c08:2a1d]) by smtp.gmail.com with ESMTPSA id y16-20020a05600c365000b00412656ba919sm8004431wmq.20.2024.03.01.03.26.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Mar 2024 03:26:29 -0800 (PST) Date: Fri, 1 Mar 2024 12:26:27 +0100 From: Sebastian Wick To: Hans Verkuil Cc: Maxime Ripard , 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 , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , 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, Dave Stevenson Subject: Re: [PATCH v7 21/36] drm/connector: hdmi: Add Broadcast RGB property Message-ID: <20240301112627.GD166694@toolbox> References: <20240222-kms-hdmi-connector-state-v7-0-8f4af575fce2@kernel.org> <20240222-kms-hdmi-connector-state-v7-21-8f4af575fce2@kernel.org> <20240229194726.GB166694@toolbox> <5a8366aa-34b9-4f80-9b14-d92e99873349@xs4all.nl> 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: <5a8366aa-34b9-4f80-9b14-d92e99873349@xs4all.nl> On Fri, Mar 01, 2024 at 09:29:17AM +0100, Hans Verkuil wrote: > On 29/02/2024 20:47, Sebastian Wick wrote: > > On Thu, Feb 22, 2024 at 07:14:07PM +0100, Maxime Ripard wrote: > >> The i915 driver has a property to force the RGB range of an HDMI output. > >> The vc4 driver then implemented the same property with the same > >> semantics. KWin has support for it, and a PR for mutter is also there to > >> support it. > >> > >> Both drivers implementing the same property with the same semantics, > >> plus the userspace having support for it, is proof enough that it's > >> pretty much a de-facto standard now and we can provide helpers for it. > >> > >> Let's plumb it into the newly created HDMI connector. > >> > >> Reviewed-by: Dave Stevenson > >> Signed-off-by: Maxime Ripard > >> --- > >> Documentation/gpu/kms-properties.csv | 1 - > >> drivers/gpu/drm/drm_atomic.c | 2 + > >> drivers/gpu/drm/drm_atomic_state_helper.c | 4 +- > >> drivers/gpu/drm/drm_atomic_uapi.c | 4 ++ > >> drivers/gpu/drm/drm_connector.c | 89 +++++++++++++++++++++++++++++++ > >> include/drm/drm_connector.h | 36 +++++++++++++ > >> 6 files changed, 134 insertions(+), 2 deletions(-) > >> > >> diff --git a/Documentation/gpu/kms-properties.csv b/Documentation/gpu/kms-properties.csv > >> index 0f9590834829..caef14c532d4 100644 > >> --- a/Documentation/gpu/kms-properties.csv > >> +++ b/Documentation/gpu/kms-properties.csv > >> @@ -17,7 +17,6 @@ Owner Module/Drivers,Group,Property Name,Type,Property Values,Object attached,De > >> ,Virtual GPU,“suggested X”,RANGE,"Min=0, Max=0xffffffff",Connector,property to suggest an X offset for a connector > >> ,,“suggested Y”,RANGE,"Min=0, Max=0xffffffff",Connector,property to suggest an Y offset for a connector > >> ,Optional,"""aspect ratio""",ENUM,"{ ""None"", ""4:3"", ""16:9"" }",Connector,TDB > >> -i915,Generic,"""Broadcast RGB""",ENUM,"{ ""Automatic"", ""Full"", ""Limited 16:235"" }",Connector,"When this property is set to Limited 16:235 and CTM is set, the hardware will be programmed with the result of the multiplication of CTM by the limited range matrix to ensure the pixels normally in the range 0..1.0 are remapped to the range 16/255..235/255." > >> ,,“audio”,ENUM,"{ ""force-dvi"", ""off"", ""auto"", ""on"" }",Connector,TBD > >> ,SDVO-TV,“mode”,ENUM,"{ ""NTSC_M"", ""NTSC_J"", ""NTSC_443"", ""PAL_B"" } etc.",Connector,TBD > >> ,,"""left_margin""",RANGE,"Min=0, Max= SDVO dependent",Connector,TBD > >> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > >> index 26f9e525c0a0..3e57d98d8418 100644 > >> --- a/drivers/gpu/drm/drm_atomic.c > >> +++ b/drivers/gpu/drm/drm_atomic.c > >> @@ -1145,6 +1145,8 @@ static void drm_atomic_connector_print_state(struct drm_printer *p, > >> > >> if (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA || > >> connector->connector_type == DRM_MODE_CONNECTOR_HDMIB) { > >> + drm_printf(p, "\tbroadcast_rgb=%s\n", > >> + drm_hdmi_connector_get_broadcast_rgb_name(state->hdmi.broadcast_rgb)); > >> drm_printf(p, "\toutput_bpc=%u\n", state->hdmi.output_bpc); > >> drm_printf(p, "\toutput_format=%s\n", > >> drm_hdmi_connector_get_output_format_name(state->hdmi.output_format)); > >> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c > >> index 9f517599f117..0e8fb653965a 100644 > >> --- a/drivers/gpu/drm/drm_atomic_state_helper.c > >> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c > >> @@ -589,6 +589,7 @@ void __drm_atomic_helper_connector_hdmi_reset(struct drm_connector *connector, > >> > >> new_state->max_bpc = max_bpc; > >> new_state->max_requested_bpc = max_bpc; > >> + new_state->hdmi.broadcast_rgb = DRM_HDMI_BROADCAST_RGB_AUTO; > >> } > >> EXPORT_SYMBOL(__drm_atomic_helper_connector_hdmi_reset); > >> > >> @@ -913,7 +914,8 @@ int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector, > >> if (ret) > >> return ret; > >> > >> - if (old_state->hdmi.output_bpc != new_state->hdmi.output_bpc || > >> + if (old_state->hdmi.broadcast_rgb != new_state->hdmi.broadcast_rgb || > >> + old_state->hdmi.output_bpc != new_state->hdmi.output_bpc || > >> old_state->hdmi.output_format != new_state->hdmi.output_format) { > >> struct drm_crtc *crtc = new_state->crtc; > >> struct drm_crtc_state *crtc_state; > >> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c > >> index 29d4940188d4..2b415b4ed506 100644 > >> --- a/drivers/gpu/drm/drm_atomic_uapi.c > >> +++ b/drivers/gpu/drm/drm_atomic_uapi.c > >> @@ -776,6 +776,8 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector, > >> state->max_requested_bpc = val; > >> } else if (property == connector->privacy_screen_sw_state_property) { > >> state->privacy_screen_sw_state = val; > >> + } else if (property == connector->broadcast_rgb_property) { > >> + state->hdmi.broadcast_rgb = val; > >> } else if (connector->funcs->atomic_set_property) { > >> return connector->funcs->atomic_set_property(connector, > >> state, property, val); > >> @@ -859,6 +861,8 @@ drm_atomic_connector_get_property(struct drm_connector *connector, > >> *val = state->max_requested_bpc; > >> } else if (property == connector->privacy_screen_sw_state_property) { > >> *val = state->privacy_screen_sw_state; > >> + } else if (property == connector->broadcast_rgb_property) { > >> + *val = state->hdmi.broadcast_rgb; > >> } else if (connector->funcs->atomic_get_property) { > >> return connector->funcs->atomic_get_property(connector, > >> state, property, val); > >> diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c > >> index 591d2d500f61..6ffe59d01698 100644 > >> --- a/drivers/gpu/drm/drm_connector.c > >> +++ b/drivers/gpu/drm/drm_connector.c > >> @@ -1212,6 +1212,29 @@ static const u32 dp_colorspaces = > >> BIT(DRM_MODE_COLORIMETRY_BT2020_CYCC) | > >> BIT(DRM_MODE_COLORIMETRY_BT2020_YCC); > >> > >> +static const struct drm_prop_enum_list broadcast_rgb_names[] = { > >> + { DRM_HDMI_BROADCAST_RGB_AUTO, "Automatic" }, > >> + { DRM_HDMI_BROADCAST_RGB_FULL, "Full" }, > >> + { DRM_HDMI_BROADCAST_RGB_LIMITED, "Limited 16:235" }, > >> +}; > >> + > >> +/* > >> + * drm_hdmi_connector_get_broadcast_rgb_name - Return a string for HDMI connector RGB broadcast selection > >> + * @broadcast_rgb: Broadcast RGB selection to compute name of > >> + * > >> + * Returns: the name of the Broadcast RGB selection, or NULL if the type > >> + * is not valid. > >> + */ > >> +const char * > >> +drm_hdmi_connector_get_broadcast_rgb_name(enum drm_hdmi_broadcast_rgb broadcast_rgb) > >> +{ > >> + if (broadcast_rgb > DRM_HDMI_BROADCAST_RGB_LIMITED) > >> + return NULL; > >> + > >> + return broadcast_rgb_names[broadcast_rgb].name; > >> +} > >> +EXPORT_SYMBOL(drm_hdmi_connector_get_broadcast_rgb_name); > >> + > >> static const char * const output_format_str[] = { > >> [HDMI_COLORSPACE_RGB] = "RGB", > >> [HDMI_COLORSPACE_YUV420] = "YUV 4:2:0", > >> @@ -1708,6 +1731,39 @@ EXPORT_SYMBOL(drm_connector_attach_dp_subconnector_property); > >> /** > >> * DOC: HDMI connector properties > >> * > >> + * Broadcast RGB (HDMI specific) > >> + * Indicates the Quantization Range (Full vs Limited) used. The color > >> + * processing pipeline will be adjusted to match the value of the > >> + * property, and the Infoframes will be generated and sent accordingly. > >> + * > >> + * This property is only relevant if the HDMI output format is RGB. If > >> + * it's one of the YCbCr variant, it will be ignored and the output will > >> + * use a limited quantization range. > > > > Uh, maybe just say that the quantization range is selected automatically > > in case a YCbCr output format is in use. I'm not sure every YCbCr > > variant requires limited and even if it does, new formats could change > > this. > > For HDMI every YCbCr output format is limited range by default. It is > highly unlikely that future YCbCr formats would ever use full range by > default. CTA-861-I, Table 4 - Default Quantization Ranges: Colorimetry: sYCC601 CE Video Format: Limited IT Video Format: Full And also this isn't just about the default behavior. Drivers could also just choose full range for YCbCr formats via InfoFrames. The Broadcast RGB property should simply not affect any of those decisions. Intel chose to always use limited range apparently but this property shouldn't force this behavior. > So I am fine with the current text since it is actually correct and it > explicitly states which quantization range will be used. > > Regards, > > Hans > > > > > With this changed, this patch is > > > > Reviewed-by: Sebastian Wick > > > >> + * > >> + * The CRTC attached to the connector must be configured by user-space to > >> + * always produce full-range pixels. > >> + * > >> + * The value of this property can be one of the following: > >> + * > >> + * Automatic: > >> + * The quantization range is selected automatically based on the > >> + * mode according to the HDMI specifications (HDMI 1.4b - Section > >> + * 6.6 - Video Quantization Ranges). > >> + * > >> + * Full: > >> + * Full quantization range is forced. > >> + * > >> + * Limited 16:235: > >> + * Limited quantization range is forced. Unlike the name suggests, > >> + * this works for any number of bits-per-component. > >> + * > >> + * Property values other than Automatic can result in colors being off (if > >> + * limited is selected but the display expects full), or a black screen > >> + * (if full is selected but the display expects limited). > >> + * > >> + * Drivers can set up this property by calling > >> + * drm_connector_attach_broadcast_rgb_property(). > >> + * > >> * content type (HDMI specific): > >> * Indicates content type setting to be used in HDMI infoframes to indicate > >> * content type for the external device, so that it adjusts its display > >> @@ -2570,6 +2626,39 @@ int drm_connector_attach_hdr_output_metadata_property(struct drm_connector *conn > >> } > >> EXPORT_SYMBOL(drm_connector_attach_hdr_output_metadata_property); > >> > >> +/** > >> + * drm_connector_attach_broadcast_rgb_property - attach "Broadcast RGB" property > >> + * @connector: connector to attach the property on. > >> + * > >> + * This is used to add support for forcing the RGB range on a connector > >> + * > >> + * Returns: > >> + * Zero on success, negative errno on failure. > >> + */ > >> +int drm_connector_attach_broadcast_rgb_property(struct drm_connector *connector) > >> +{ > >> + struct drm_device *dev = connector->dev; > >> + struct drm_property *prop; > >> + > >> + prop = connector->broadcast_rgb_property; > >> + if (!prop) { > >> + prop = drm_property_create_enum(dev, DRM_MODE_PROP_ENUM, > >> + "Broadcast RGB", > >> + broadcast_rgb_names, > >> + ARRAY_SIZE(broadcast_rgb_names)); > >> + if (!prop) > >> + return -EINVAL; > >> + > >> + connector->broadcast_rgb_property = prop; > >> + } > >> + > >> + drm_object_attach_property(&connector->base, prop, > >> + DRM_HDMI_BROADCAST_RGB_AUTO); > >> + > >> + return 0; > >> +} > >> +EXPORT_SYMBOL(drm_connector_attach_broadcast_rgb_property); > >> + > >> /** > >> * drm_connector_attach_colorspace_property - attach "Colorspace" property > >> * @connector: connector to attach the property on. > >> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h > >> index 8cda902934cd..bb6b6a36ade3 100644 > >> --- a/include/drm/drm_connector.h > >> +++ b/include/drm/drm_connector.h > >> @@ -369,6 +369,29 @@ enum drm_panel_orientation { > >> DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, > >> }; > >> > >> +/** > >> + * enum drm_hdmi_broadcast_rgb - Broadcast RGB Selection for an HDMI @drm_connector > >> + */ > >> +enum drm_hdmi_broadcast_rgb { > >> + /** > >> + * @DRM_HDMI_BROADCAST_RGB_AUTO: The RGB range is selected > >> + * automatically based on the mode. > >> + */ > >> + DRM_HDMI_BROADCAST_RGB_AUTO, > >> + > >> + /** > >> + * @DRM_HDMI_BROADCAST_RGB_FULL: Full range RGB is forced. > >> + */ > >> + DRM_HDMI_BROADCAST_RGB_FULL, > >> + > >> + /** > >> + * @DRM_HDMI_BROADCAST_RGB_LIMITED: Limited range RGB is forced. > >> + */ > >> + DRM_HDMI_BROADCAST_RGB_LIMITED, > >> +}; > >> + > >> +const char * > >> +drm_hdmi_connector_get_broadcast_rgb_name(enum drm_hdmi_broadcast_rgb broadcast_rgb); > >> const char * > >> drm_hdmi_connector_get_output_format_name(enum hdmi_colorspace fmt); > >> > >> @@ -1041,6 +1064,12 @@ struct drm_connector_state { > >> * @drm_atomic_helper_connector_hdmi_check(). > >> */ > >> struct { > >> + /** > >> + * @broadcast_rgb: Connector property to pass the > >> + * Broadcast RGB selection value. > >> + */ > >> + enum drm_hdmi_broadcast_rgb broadcast_rgb; > >> + > >> /** > >> * @output_bpc: Bits per color channel to output. > >> */ > >> @@ -1753,6 +1782,12 @@ struct drm_connector { > >> */ > >> struct drm_property *privacy_screen_hw_state_property; > >> > >> + /** > >> + * @broadcast_rgb_property: Connector property to set the > >> + * Broadcast RGB selection to output with. > >> + */ > >> + struct drm_property *broadcast_rgb_property; > >> + > >> #define DRM_CONNECTOR_POLL_HPD (1 << 0) > >> #define DRM_CONNECTOR_POLL_CONNECT (1 << 1) > >> #define DRM_CONNECTOR_POLL_DISCONNECT (1 << 2) > >> @@ -2092,6 +2127,7 @@ int drm_connector_attach_scaling_mode_property(struct drm_connector *connector, > >> u32 scaling_mode_mask); > >> int drm_connector_attach_vrr_capable_property( > >> struct drm_connector *connector); > >> +int drm_connector_attach_broadcast_rgb_property(struct drm_connector *connector); > >> int drm_connector_attach_colorspace_property(struct drm_connector *connector); > >> int drm_connector_attach_hdr_output_metadata_property(struct drm_connector *connector); > >> bool drm_connector_atomic_hdr_metadata_equal(struct drm_connector_state *old_state, > >> > >> -- > >> 2.43.2 > >> > > > 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 5E3FDC5475B for ; Fri, 1 Mar 2024 11:26:46 +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=WjOxd2I2UNEdemTCk3GBo1dwTwAbDMEn5ZLLnn9rw7o=; b=YsKG+kQMFTmXl9 zJvGDLvaNi+4R3hjUc0USuNjeHZBLuAwF+He9BHUMVZRktatBwobpwGC9KJjATcKDJvBsnXEIPajo cyDG7rtcsO2VJ2SSuUxw1mR9rv8jEjvXzZ3MWxGsUGcXxWpr1Z5HPHSnVKz2jxa/jVbQXdGaOB40m Mc9uabVgI3B48vzNBcuqb6MKMSNJnWLH5pZxQqMl24VkWriyeDEN2OUJGjD+F0FFZrxH+sWnv/CCb QdAAndLFH2PILzXuqQUI5jfJXDIoZKKpikplMC+82OdHJhLk2x8QO+eIobQIqICxXJEDeEl4e8TkO xzoT0tuigtQjr+Yms6LQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rg12D-0000000HYjy-3fuE; Fri, 01 Mar 2024 11:26:37 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rg12A-0000000HYhY-1vmQ for linux-rockchip@lists.infradead.org; Fri, 01 Mar 2024 11:26:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1709292393; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wjYgI2KsgeWuP3sAlk9TqZqYfNa6GCpmBp03vZLpou0=; b=gcH5T3FtW6MbAToCPV2dEUlSCR7RcfH9J283CNGNhQTqQDLvn8ZDOO0Fs+B8HM++9HrSsz 2A76yDXFffZjVWc+ahMECdyvh76Oywu965TH0P6QZmio8uXZVXKsnDrDTBf0rszAa77wpB IbENwTrhkzEGf+ikhQpdfQDQwYSPlF0= Received: from mail-lj1-f200.google.com (mail-lj1-f200.google.com [209.85.208.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-589-E8pd3ybgMxepQbed1RYz3Q-1; Fri, 01 Mar 2024 06:26:31 -0500 X-MC-Unique: E8pd3ybgMxepQbed1RYz3Q-1 Received: by mail-lj1-f200.google.com with SMTP id 38308e7fff4ca-2d2fe83c377so11199571fa.0 for ; Fri, 01 Mar 2024 03:26:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709292390; x=1709897190; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wjYgI2KsgeWuP3sAlk9TqZqYfNa6GCpmBp03vZLpou0=; b=bqexiticsRmmBpKIVK1YsEvPOzHt5cOY4GWw5shFi9KULJKLnm93n2muLu56H+vseP asIcyZNLeJDt3I4BIf8DD6661ZxPn0/sVjblrTbivh69mU9RNkBHXuOc0V2dEeVBlL1R yF/DmLj4SM4CWsZ/eQqRV1WkG8UXo7aWYshScgCpWwfmBy/SjDUALGGIx0dvL3KhnzJK 3vX/tVpLYnu7dFY9z5fkuBb+gVILGOjTOHnAt+/Y7Fuxt8z3gN52SYH1CGrb2LuMxk2v k9ctKpQniycEYVlGyPJTS+TOtGrzxpPW66xCygcNcTwaJ6kNDk6OlqRIkdx6Ophot0S9 0NYQ== X-Forwarded-Encrypted: i=1; AJvYcCW5a+y0MTedACdegArESiPVHhdvAoLQZDgSFEYB254e7oxHyszVaRGu29g11djLY1jmPSnO2NwCBm8uGJxeu79g06FcglAcGVlS3VfTHRUO1/p+ X-Gm-Message-State: AOJu0YxMF15gF0pHmn2cpBNEv5r6kNKoPFGXUD/Luh8JcC9R+mFrsvUv Yp7E9i5zHz7u7pzv+qLKjem1M0JeoXXIkEWHiHl4LwYTQMmRV6s34ByYlNfuwmjTeJS/Cz8R3O1 dU2AqS2ZWNtIAvKUZ9gFjN5SZhfqPcm2QVX93VdnqGxjSXqYAlB/ZUovpT6wLxeX9FcIxrA== X-Received: by 2002:a2e:95d5:0:b0:2d2:5668:3a40 with SMTP id y21-20020a2e95d5000000b002d256683a40mr942900ljh.4.1709292390404; Fri, 01 Mar 2024 03:26:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IHUMPEadXUnHsh8Ae/1Y5RYwcaIFHHrv+QbMlgbuWWzQO///QbdhSklfmNGWU04m0Hw1ckfSQ== X-Received: by 2002:a2e:95d5:0:b0:2d2:5668:3a40 with SMTP id y21-20020a2e95d5000000b002d256683a40mr942879ljh.4.1709292389946; Fri, 01 Mar 2024 03:26:29 -0800 (PST) Received: from toolbox ([2001:9e8:89a0:c500:c65:1f3a:8c08:2a1d]) by smtp.gmail.com with ESMTPSA id y16-20020a05600c365000b00412656ba919sm8004431wmq.20.2024.03.01.03.26.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Mar 2024 03:26:29 -0800 (PST) Date: Fri, 1 Mar 2024 12:26:27 +0100 From: Sebastian Wick To: Hans Verkuil Cc: Maxime Ripard , 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 , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , 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, Dave Stevenson Subject: Re: [PATCH v7 21/36] drm/connector: hdmi: Add Broadcast RGB property Message-ID: <20240301112627.GD166694@toolbox> References: <20240222-kms-hdmi-connector-state-v7-0-8f4af575fce2@kernel.org> <20240222-kms-hdmi-connector-state-v7-21-8f4af575fce2@kernel.org> <20240229194726.GB166694@toolbox> <5a8366aa-34b9-4f80-9b14-d92e99873349@xs4all.nl> MIME-Version: 1.0 In-Reply-To: <5a8366aa-34b9-4f80-9b14-d92e99873349@xs4all.nl> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240301_032634_667990_8F5ABBED X-CRM114-Status: GOOD ( 47.73 ) 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 T24gRnJpLCBNYXIgMDEsIDIwMjQgYXQgMDk6Mjk6MTdBTSArMDEwMCwgSGFucyBWZXJrdWlsIHdy b3RlOgo+IE9uIDI5LzAyLzIwMjQgMjA6NDcsIFNlYmFzdGlhbiBXaWNrIHdyb3RlOgo+ID4gT24g VGh1LCBGZWIgMjIsIDIwMjQgYXQgMDc6MTQ6MDdQTSArMDEwMCwgTWF4aW1lIFJpcGFyZCB3cm90 ZToKPiA+PiBUaGUgaTkxNSBkcml2ZXIgaGFzIGEgcHJvcGVydHkgdG8gZm9yY2UgdGhlIFJHQiBy YW5nZSBvZiBhbiBIRE1JIG91dHB1dC4KPiA+PiBUaGUgdmM0IGRyaXZlciB0aGVuIGltcGxlbWVu dGVkIHRoZSBzYW1lIHByb3BlcnR5IHdpdGggdGhlIHNhbWUKPiA+PiBzZW1hbnRpY3MuIEtXaW4g aGFzIHN1cHBvcnQgZm9yIGl0LCBhbmQgYSBQUiBmb3IgbXV0dGVyIGlzIGFsc28gdGhlcmUgdG8K PiA+PiBzdXBwb3J0IGl0Lgo+ID4+Cj4gPj4gQm90aCBkcml2ZXJzIGltcGxlbWVudGluZyB0aGUg c2FtZSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIHNlbWFudGljcywKPiA+PiBwbHVzIHRoZSB1c2Vy c3BhY2UgaGF2aW5nIHN1cHBvcnQgZm9yIGl0LCBpcyBwcm9vZiBlbm91Z2ggdGhhdCBpdCdzCj4g Pj4gcHJldHR5IG11Y2ggYSBkZS1mYWN0byBzdGFuZGFyZCBub3cgYW5kIHdlIGNhbiBwcm92aWRl IGhlbHBlcnMgZm9yIGl0Lgo+ID4+Cj4gPj4gTGV0J3MgcGx1bWIgaXQgaW50byB0aGUgbmV3bHkg Y3JlYXRlZCBIRE1JIGNvbm5lY3Rvci4KPiA+Pgo+ID4+IFJldmlld2VkLWJ5OiBEYXZlIFN0ZXZl bnNvbiA8ZGF2ZS5zdGV2ZW5zb25AcmFzcGJlcnJ5cGkuY29tPgo+ID4+IFNpZ25lZC1vZmYtYnk6 IE1heGltZSBSaXBhcmQgPG1yaXBhcmRAa2VybmVsLm9yZz4KPiA+PiAtLS0KPiA+PiAgRG9jdW1l bnRhdGlvbi9ncHUva21zLXByb3BlcnRpZXMuY3N2ICAgICAgfCAgMSAtCj4gPj4gIGRyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljLmMgICAgICAgICAgICAgIHwgIDIgKwo+ID4+ICBkcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYyB8ICA0ICstCj4gPj4gIGRyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX3VhcGkuYyAgICAgICAgIHwgIDQgKysKPiA+PiAgZHJpdmVycy9ncHUv ZHJtL2RybV9jb25uZWN0b3IuYyAgICAgICAgICAgfCA4OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gPj4gIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICAgICAgICAg IHwgMzYgKysrKysrKysrKysrKwo+ID4+ICA2IGZpbGVzIGNoYW5nZWQsIDEzNCBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24v Z3B1L2ttcy1wcm9wZXJ0aWVzLmNzdiBiL0RvY3VtZW50YXRpb24vZ3B1L2ttcy1wcm9wZXJ0aWVz LmNzdgo+ID4+IGluZGV4IDBmOTU5MDgzNDgyOS4uY2FlZjE0YzUzMmQ0IDEwMDY0NAo+ID4+IC0t LSBhL0RvY3VtZW50YXRpb24vZ3B1L2ttcy1wcm9wZXJ0aWVzLmNzdgo+ID4+ICsrKyBiL0RvY3Vt ZW50YXRpb24vZ3B1L2ttcy1wcm9wZXJ0aWVzLmNzdgo+ID4+IEBAIC0xNyw3ICsxNyw2IEBAIE93 bmVyIE1vZHVsZS9Ecml2ZXJzLEdyb3VwLFByb3BlcnR5IE5hbWUsVHlwZSxQcm9wZXJ0eSBWYWx1 ZXMsT2JqZWN0IGF0dGFjaGVkLERlCj4gPj4gICxWaXJ0dWFsIEdQVSzigJxzdWdnZXN0ZWQgWOKA nSxSQU5HRSwiTWluPTAsIE1heD0weGZmZmZmZmZmIixDb25uZWN0b3IscHJvcGVydHkgdG8gc3Vn Z2VzdCBhbiBYIG9mZnNldCBmb3IgYSBjb25uZWN0b3IKPiA+PiAgLCzigJxzdWdnZXN0ZWQgWeKA nSxSQU5HRSwiTWluPTAsIE1heD0weGZmZmZmZmZmIixDb25uZWN0b3IscHJvcGVydHkgdG8gc3Vn Z2VzdCBhbiBZIG9mZnNldCBmb3IgYSBjb25uZWN0b3IKPiA+PiAgLE9wdGlvbmFsLCIiImFzcGVj dCByYXRpbyIiIixFTlVNLCJ7ICIiTm9uZSIiLCAiIjQ6MyIiLCAiIjE2OjkiIiB9IixDb25uZWN0 b3IsVERCCj4gPj4gLWk5MTUsR2VuZXJpYywiIiJCcm9hZGNhc3QgUkdCIiIiLEVOVU0sInsgIiJB dXRvbWF0aWMiIiwgIiJGdWxsIiIsICIiTGltaXRlZCAxNjoyMzUiIiB9IixDb25uZWN0b3IsIldo ZW4gdGhpcyBwcm9wZXJ0eSBpcyBzZXQgdG8gTGltaXRlZCAxNjoyMzUgYW5kIENUTSBpcyBzZXQs IHRoZSBoYXJkd2FyZSB3aWxsIGJlIHByb2dyYW1tZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBt dWx0aXBsaWNhdGlvbiBvZiBDVE0gYnkgdGhlIGxpbWl0ZWQgcmFuZ2UgbWF0cml4IHRvIGVuc3Vy ZSB0aGUgcGl4ZWxzIG5vcm1hbGx5IGluIHRoZSByYW5nZSAwLi4xLjAgYXJlIHJlbWFwcGVkIHRv IHRoZSByYW5nZSAxNi8yNTUuLjIzNS8yNTUuIgo+ID4+ICAsLOKAnGF1ZGlv4oCdLEVOVU0sInsg IiJmb3JjZS1kdmkiIiwgIiJvZmYiIiwgIiJhdXRvIiIsICIib24iIiB9IixDb25uZWN0b3IsVEJE Cj4gPj4gICxTRFZPLVRWLOKAnG1vZGXigJ0sRU5VTSwieyAiIk5UU0NfTSIiLCAiIk5UU0NfSiIi LCAiIk5UU0NfNDQzIiIsICIiUEFMX0IiIiB9IGV0Yy4iLENvbm5lY3RvcixUQkQKPiA+PiAgLCwi IiJsZWZ0X21hcmdpbiIiIixSQU5HRSwiTWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQiLENvbm5l Y3RvcixUQkQKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+PiBpbmRleCAyNmY5ZTUyNWMwYTAuLjNl NTdkOThkODQxOCAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5j Cj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4+IEBAIC0xMTQ1LDYg KzExNDUsOCBAQCBzdGF0aWMgdm9pZCBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9wcmludF9zdGF0ZShz dHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCj4gPj4gIAo+ID4+ICAJaWYgKGNvbm5lY3Rvci0+Y29ubmVj dG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX0hETUlBIHx8Cj4gPj4gIAkgICAgY29ubmVj dG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUIpIHsKPiA+PiAr CQlkcm1fcHJpbnRmKHAsICJcdGJyb2FkY2FzdF9yZ2I9JXNcbiIsCj4gPj4gKwkJCSAgIGRybV9o ZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3JnYl9uYW1lKHN0YXRlLT5oZG1pLmJyb2FkY2Fz dF9yZ2IpKTsKPiA+PiAgCQlkcm1fcHJpbnRmKHAsICJcdG91dHB1dF9icGM9JXVcbiIsIHN0YXRl LT5oZG1pLm91dHB1dF9icGMpOwo+ID4+ICAJCWRybV9wcmludGYocCwgIlx0b3V0cHV0X2Zvcm1h dD0lc1xuIiwKPiA+PiAgCQkJICAgZHJtX2hkbWlfY29ubmVjdG9yX2dldF9vdXRwdXRfZm9ybWF0 X25hbWUoc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCkpOwo+ID4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX3N0YXRlX2hlbHBlci5jCj4gPj4gaW5kZXggOWY1MTc1OTlmMTE3Li4wZThmYjY1 Mzk2NWEgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVf aGVscGVyLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxw ZXIuYwo+ID4+IEBAIC01ODksNiArNTg5LDcgQEAgdm9pZCBfX2RybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9oZG1pX3Jlc2V0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPj4g IAo+ID4+ICAJbmV3X3N0YXRlLT5tYXhfYnBjID0gbWF4X2JwYzsKPiA+PiAgCW5ld19zdGF0ZS0+ bWF4X3JlcXVlc3RlZF9icGMgPSBtYXhfYnBjOwo+ID4+ICsJbmV3X3N0YXRlLT5oZG1pLmJyb2Fk Y2FzdF9yZ2IgPSBEUk1fSERNSV9CUk9BRENBU1RfUkdCX0FVVE87Cj4gPj4gIH0KPiA+PiAgRVhQ T1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1pX3Jlc2V0KTsKPiA+ PiAgCj4gPj4gQEAgLTkxMyw3ICs5MTQsOCBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2hkbWlfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+PiAgCWlm IChyZXQpCj4gPj4gIAkJcmV0dXJuIHJldDsKPiA+PiAgCj4gPj4gLQlpZiAob2xkX3N0YXRlLT5o ZG1pLm91dHB1dF9icGMgIT0gbmV3X3N0YXRlLT5oZG1pLm91dHB1dF9icGMgfHwKPiA+PiArCWlm IChvbGRfc3RhdGUtPmhkbWkuYnJvYWRjYXN0X3JnYiAhPSBuZXdfc3RhdGUtPmhkbWkuYnJvYWRj YXN0X3JnYiB8fAo+ID4+ICsJICAgIG9sZF9zdGF0ZS0+aGRtaS5vdXRwdXRfYnBjICE9IG5ld19z dGF0ZS0+aGRtaS5vdXRwdXRfYnBjIHx8Cj4gPj4gIAkgICAgb2xkX3N0YXRlLT5oZG1pLm91dHB1 dF9mb3JtYXQgIT0gbmV3X3N0YXRlLT5oZG1pLm91dHB1dF9mb3JtYXQpIHsKPiA+PiAgCQlzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSBuZXdfc3RhdGUtPmNydGM7Cj4gPj4gIAkJc3RydWN0IGRybV9j cnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY191YXBpLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKPiA+ PiBpbmRleCAyOWQ0OTQwMTg4ZDQuLjJiNDE1YjRlZDUwNiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY191YXBpLmMKPiA+PiBAQCAtNzc2LDYgKzc3Niw4IEBAIHN0YXRpYyBpbnQgZHJt X2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsCj4gPj4gIAkJc3RhdGUtPm1heF9yZXF1ZXN0ZWRfYnBjID0gdmFsOwo+ID4+ICAJfSBl bHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPnByaXZhY3lfc2NyZWVuX3N3X3N0YXRlX3By b3BlcnR5KSB7Cj4gPj4gIAkJc3RhdGUtPnByaXZhY3lfc2NyZWVuX3N3X3N0YXRlID0gdmFsOwo+ ID4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPmJyb2FkY2FzdF9yZ2JfcHJv cGVydHkpIHsKPiA+PiArCQlzdGF0ZS0+aGRtaS5icm9hZGNhc3RfcmdiID0gdmFsOwo+ID4+ICAJ fSBlbHNlIGlmIChjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KSB7Cj4gPj4g IAkJcmV0dXJuIGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkoY29ubmVjdG9y LAo+ID4+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+ID4+IEBAIC04NTksNiArODYxLDgg QEAgZHJtX2F0b21pY19jb25uZWN0b3JfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4gPj4gIAkJKnZhbCA9IHN0YXRlLT5tYXhfcmVxdWVzdGVkX2JwYzsKPiA+ PiAgCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9zd19z dGF0ZV9wcm9wZXJ0eSkgewo+ID4+ICAJCSp2YWwgPSBzdGF0ZS0+cHJpdmFjeV9zY3JlZW5fc3df c3RhdGU7Cj4gPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+YnJvYWRjYXN0 X3JnYl9wcm9wZXJ0eSkgewo+ID4+ICsJCSp2YWwgPSBzdGF0ZS0+aGRtaS5icm9hZGNhc3Rfcmdi Owo+ID4+ICAJfSBlbHNlIGlmIChjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5 KSB7Cj4gPj4gIAkJcmV0dXJuIGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHko Y29ubmVjdG9yLAo+ID4+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+ID4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9jb25uZWN0b3IuYwo+ID4+IGluZGV4IDU5MWQyZDUwMGY2MS4uNmZmZTU5ZDAxNjk4IDEwMDY0 NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gPj4gQEAgLTEyMTIsNiArMTIxMiwyOSBA QCBzdGF0aWMgY29uc3QgdTMyIGRwX2NvbG9yc3BhY2VzID0KPiA+PiAgCUJJVChEUk1fTU9ERV9D T0xPUklNRVRSWV9CVDIwMjBfQ1lDQykgfAo+ID4+ICAJQklUKERSTV9NT0RFX0NPTE9SSU1FVFJZ X0JUMjAyMF9ZQ0MpOwo+ID4+ICAKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9l bnVtX2xpc3QgYnJvYWRjYXN0X3JnYl9uYW1lc1tdID0gewo+ID4+ICsJeyBEUk1fSERNSV9CUk9B RENBU1RfUkdCX0FVVE8sICJBdXRvbWF0aWMiIH0sCj4gPj4gKwl7IERSTV9IRE1JX0JST0FEQ0FT VF9SR0JfRlVMTCwgIkZ1bGwiIH0sCj4gPj4gKwl7IERSTV9IRE1JX0JST0FEQ0FTVF9SR0JfTElN SVRFRCwgIkxpbWl0ZWQgMTY6MjM1IiB9LAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArLyoKPiA+PiAr ICogZHJtX2hkbWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3RfcmdiX25hbWUgLSBSZXR1cm4gYSBz dHJpbmcgZm9yIEhETUkgY29ubmVjdG9yIFJHQiBicm9hZGNhc3Qgc2VsZWN0aW9uCj4gPj4gKyAq IEBicm9hZGNhc3RfcmdiOiBCcm9hZGNhc3QgUkdCIHNlbGVjdGlvbiB0byBjb21wdXRlIG5hbWUg b2YKPiA+PiArICoKPiA+PiArICogUmV0dXJuczogdGhlIG5hbWUgb2YgdGhlIEJyb2FkY2FzdCBS R0Igc2VsZWN0aW9uLCBvciBOVUxMIGlmIHRoZSB0eXBlCj4gPj4gKyAqIGlzIG5vdCB2YWxpZC4K PiA+PiArICovCj4gPj4gK2NvbnN0IGNoYXIgKgo+ID4+ICtkcm1faGRtaV9jb25uZWN0b3JfZ2V0 X2Jyb2FkY2FzdF9yZ2JfbmFtZShlbnVtIGRybV9oZG1pX2Jyb2FkY2FzdF9yZ2IgYnJvYWRjYXN0 X3JnYikKPiA+PiArewo+ID4+ICsJaWYgKGJyb2FkY2FzdF9yZ2IgPiBEUk1fSERNSV9CUk9BRENB U1RfUkdCX0xJTUlURUQpCj4gPj4gKwkJcmV0dXJuIE5VTEw7Cj4gPj4gKwo+ID4+ICsJcmV0dXJu IGJyb2FkY2FzdF9yZ2JfbmFtZXNbYnJvYWRjYXN0X3JnYl0ubmFtZTsKPiA+PiArfQo+ID4+ICtF WFBPUlRfU1lNQk9MKGRybV9oZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3JnYl9uYW1lKTsK PiA+PiArCj4gPj4gIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgb3V0cHV0X2Zvcm1hdF9zdHJb XSA9IHsKPiA+PiAgCVtIRE1JX0NPTE9SU1BBQ0VfUkdCXQkJPSAiUkdCIiwKPiA+PiAgCVtIRE1J X0NPTE9SU1BBQ0VfWVVWNDIwXQk9ICJZVVYgNDoyOjAiLAo+ID4+IEBAIC0xNzA4LDYgKzE3MzEs MzkgQEAgRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2F0dGFjaF9kcF9zdWJjb25uZWN0b3Jf cHJvcGVydHkpOwo+ID4+ICAvKioKPiA+PiAgICogRE9DOiBIRE1JIGNvbm5lY3RvciBwcm9wZXJ0 aWVzCj4gPj4gICAqCj4gPj4gKyAqIEJyb2FkY2FzdCBSR0IgKEhETUkgc3BlY2lmaWMpCj4gPj4g KyAqICAgICAgSW5kaWNhdGVzIHRoZSBRdWFudGl6YXRpb24gUmFuZ2UgKEZ1bGwgdnMgTGltaXRl ZCkgdXNlZC4gVGhlIGNvbG9yCj4gPj4gKyAqICAgICAgcHJvY2Vzc2luZyBwaXBlbGluZSB3aWxs IGJlIGFkanVzdGVkIHRvIG1hdGNoIHRoZSB2YWx1ZSBvZiB0aGUKPiA+PiArICogICAgICBwcm9w ZXJ0eSwgYW5kIHRoZSBJbmZvZnJhbWVzIHdpbGwgYmUgZ2VuZXJhdGVkIGFuZCBzZW50IGFjY29y ZGluZ2x5Lgo+ID4+ICsgKgo+ID4+ICsgKiAgICAgIFRoaXMgcHJvcGVydHkgaXMgb25seSByZWxl dmFudCBpZiB0aGUgSERNSSBvdXRwdXQgZm9ybWF0IGlzIFJHQi4gSWYKPiA+PiArICogICAgICBp dCdzIG9uZSBvZiB0aGUgWUNiQ3IgdmFyaWFudCwgaXQgd2lsbCBiZSBpZ25vcmVkIGFuZCB0aGUg b3V0cHV0IHdpbGwKPiA+PiArICogICAgICB1c2UgYSBsaW1pdGVkIHF1YW50aXphdGlvbiByYW5n ZS4KPiA+IAo+ID4gVWgsIG1heWJlIGp1c3Qgc2F5IHRoYXQgdGhlIHF1YW50aXphdGlvbiByYW5n ZSBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5Cj4gPiBpbiBjYXNlIGEgWUNiQ3Igb3V0cHV0IGZv cm1hdCBpcyBpbiB1c2UuIEknbSBub3Qgc3VyZSBldmVyeSBZQ2JDcgo+ID4gdmFyaWFudCByZXF1 aXJlcyBsaW1pdGVkIGFuZCBldmVuIGlmIGl0IGRvZXMsIG5ldyBmb3JtYXRzIGNvdWxkIGNoYW5n ZQo+ID4gdGhpcy4KPiAKPiBGb3IgSERNSSBldmVyeSBZQ2JDciBvdXRwdXQgZm9ybWF0IGlzIGxp bWl0ZWQgcmFuZ2UgYnkgZGVmYXVsdC4gSXQgaXMKPiBoaWdobHkgdW5saWtlbHkgdGhhdCBmdXR1 cmUgWUNiQ3IgZm9ybWF0cyB3b3VsZCBldmVyIHVzZSBmdWxsIHJhbmdlIGJ5Cj4gZGVmYXVsdC4K CkNUQS04NjEtSSwgVGFibGUgNCAtIERlZmF1bHQgUXVhbnRpemF0aW9uIFJhbmdlczoKCkNvbG9y aW1ldHJ5OiBzWUNDNjAxCkNFIFZpZGVvIEZvcm1hdDogTGltaXRlZApJVCBWaWRlbyBGb3JtYXQ6 IEZ1bGwKCkFuZCBhbHNvIHRoaXMgaXNuJ3QganVzdCBhYm91dCB0aGUgZGVmYXVsdCBiZWhhdmlv ci4gRHJpdmVycyBjb3VsZCBhbHNvCmp1c3QgY2hvb3NlIGZ1bGwgcmFuZ2UgZm9yIFlDYkNyIGZv cm1hdHMgdmlhIEluZm9GcmFtZXMuCgpUaGUgQnJvYWRjYXN0IFJHQiBwcm9wZXJ0eSBzaG91bGQg c2ltcGx5IG5vdCBhZmZlY3QgYW55IG9mIHRob3NlCmRlY2lzaW9ucy4gSW50ZWwgY2hvc2UgdG8g YWx3YXlzIHVzZSBsaW1pdGVkIHJhbmdlIGFwcGFyZW50bHkgYnV0IHRoaXMKcHJvcGVydHkgc2hv dWxkbid0IGZvcmNlIHRoaXMgYmVoYXZpb3IuCgo+IFNvIEkgYW0gZmluZSB3aXRoIHRoZSBjdXJy ZW50IHRleHQgc2luY2UgaXQgaXMgYWN0dWFsbHkgY29ycmVjdCBhbmQgaXQKPiBleHBsaWNpdGx5 IHN0YXRlcyB3aGljaCBxdWFudGl6YXRpb24gcmFuZ2Ugd2lsbCBiZSB1c2VkLgo+IAo+IFJlZ2Fy ZHMsCj4gCj4gCUhhbnMKPiAKPiA+IAo+ID4gV2l0aCB0aGlzIGNoYW5nZWQsIHRoaXMgcGF0Y2gg aXMKPiA+IAo+ID4gUmV2aWV3ZWQtYnk6IFNlYmFzdGlhbiBXaWNrIDxzZWJhc3RpYW4ud2lja0By ZWRoYXQuY29tPgo+ID4gCj4gPj4gKyAqCj4gPj4gKyAqICAgICAgVGhlIENSVEMgYXR0YWNoZWQg dG8gdGhlIGNvbm5lY3RvciBtdXN0IGJlIGNvbmZpZ3VyZWQgYnkgdXNlci1zcGFjZSB0bwo+ID4+ ICsgKiAgICAgIGFsd2F5cyBwcm9kdWNlIGZ1bGwtcmFuZ2UgcGl4ZWxzLgo+ID4+ICsgKgo+ID4+ ICsgKiAgICAgIFRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IGNhbiBiZSBvbmUgb2YgdGhlIGZv bGxvd2luZzoKPiA+PiArICoKPiA+PiArICogICAgICBBdXRvbWF0aWM6Cj4gPj4gKyAqICAgICAg ICAgICAgICBUaGUgcXVhbnRpemF0aW9uIHJhbmdlIGlzIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkg YmFzZWQgb24gdGhlCj4gPj4gKyAqICAgICAgICAgICAgICBtb2RlIGFjY29yZGluZyB0byB0aGUg SERNSSBzcGVjaWZpY2F0aW9ucyAoSERNSSAxLjRiIC0gU2VjdGlvbgo+ID4+ICsgKiAgICAgICAg ICAgICAgNi42IC0gVmlkZW8gUXVhbnRpemF0aW9uIFJhbmdlcykuCj4gPj4gKyAqCj4gPj4gKyAq ICAgICAgRnVsbDoKPiA+PiArICogICAgICAgICAgICAgIEZ1bGwgcXVhbnRpemF0aW9uIHJhbmdl IGlzIGZvcmNlZC4KPiA+PiArICoKPiA+PiArICogICAgICBMaW1pdGVkIDE2OjIzNToKPiA+PiAr ICogICAgICAgICAgICAgIExpbWl0ZWQgcXVhbnRpemF0aW9uIHJhbmdlIGlzIGZvcmNlZC4gVW5s aWtlIHRoZSBuYW1lIHN1Z2dlc3RzLAo+ID4+ICsgKiAgICAgICAgICAgICAgdGhpcyB3b3JrcyBm b3IgYW55IG51bWJlciBvZiBiaXRzLXBlci1jb21wb25lbnQuCj4gPj4gKyAqCj4gPj4gKyAqICAg ICAgUHJvcGVydHkgdmFsdWVzIG90aGVyIHRoYW4gQXV0b21hdGljIGNhbiByZXN1bHQgaW4gY29s b3JzIGJlaW5nIG9mZiAoaWYKPiA+PiArICogICAgICBsaW1pdGVkIGlzIHNlbGVjdGVkIGJ1dCB0 aGUgZGlzcGxheSBleHBlY3RzIGZ1bGwpLCBvciBhIGJsYWNrIHNjcmVlbgo+ID4+ICsgKiAgICAg IChpZiBmdWxsIGlzIHNlbGVjdGVkIGJ1dCB0aGUgZGlzcGxheSBleHBlY3RzIGxpbWl0ZWQpLgo+ ID4+ICsgKgo+ID4+ICsgKiAgICAgIERyaXZlcnMgY2FuIHNldCB1cCB0aGlzIHByb3BlcnR5IGJ5 IGNhbGxpbmcKPiA+PiArICogICAgICBkcm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3Rfcmdi X3Byb3BlcnR5KCkuCj4gPj4gKyAqCj4gPj4gICAqIGNvbnRlbnQgdHlwZSAoSERNSSBzcGVjaWZp Yyk6Cj4gPj4gICAqCUluZGljYXRlcyBjb250ZW50IHR5cGUgc2V0dGluZyB0byBiZSB1c2VkIGlu IEhETUkgaW5mb2ZyYW1lcyB0byBpbmRpY2F0ZQo+ID4+ICAgKgljb250ZW50IHR5cGUgZm9yIHRo ZSBleHRlcm5hbCBkZXZpY2UsIHNvIHRoYXQgaXQgYWRqdXN0cyBpdHMgZGlzcGxheQo+ID4+IEBA IC0yNTcwLDYgKzI2MjYsMzkgQEAgaW50IGRybV9jb25uZWN0b3JfYXR0YWNoX2hkcl9vdXRwdXRf bWV0YWRhdGFfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4KPiA+PiAgfQo+ID4+ ICBFWFBPUlRfU1lNQk9MKGRybV9jb25uZWN0b3JfYXR0YWNoX2hkcl9vdXRwdXRfbWV0YWRhdGFf cHJvcGVydHkpOwo+ID4+ICAKPiA+PiArLyoqCj4gPj4gKyAqIGRybV9jb25uZWN0b3JfYXR0YWNo X2Jyb2FkY2FzdF9yZ2JfcHJvcGVydHkgLSBhdHRhY2ggIkJyb2FkY2FzdCBSR0IiIHByb3BlcnR5 Cj4gPj4gKyAqIEBjb25uZWN0b3I6IGNvbm5lY3RvciB0byBhdHRhY2ggdGhlIHByb3BlcnR5IG9u Lgo+ID4+ICsgKgo+ID4+ICsgKiBUaGlzIGlzIHVzZWQgdG8gYWRkIHN1cHBvcnQgZm9yIGZvcmNp bmcgdGhlIFJHQiByYW5nZSBvbiBhIGNvbm5lY3Rvcgo+ID4+ICsgKgo+ID4+ICsgKiBSZXR1cm5z Ogo+ID4+ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4g Pj4gKyAqLwo+ID4+ICtpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfYnJvYWRjYXN0X3JnYl9wcm9w ZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4+ICt7Cj4gPj4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gPj4gKwlzdHJ1Y3QgZHJtX3By b3BlcnR5ICpwcm9wOwo+ID4+ICsKPiA+PiArCXByb3AgPSBjb25uZWN0b3ItPmJyb2FkY2FzdF9y Z2JfcHJvcGVydHk7Cj4gPj4gKwlpZiAoIXByb3ApIHsKPiA+PiArCQlwcm9wID0gZHJtX3Byb3Bl cnR5X2NyZWF0ZV9lbnVtKGRldiwgRFJNX01PREVfUFJPUF9FTlVNLAo+ID4+ICsJCQkJCQkiQnJv YWRjYXN0IFJHQiIsCj4gPj4gKwkJCQkJCWJyb2FkY2FzdF9yZ2JfbmFtZXMsCj4gPj4gKwkJCQkJ CUFSUkFZX1NJWkUoYnJvYWRjYXN0X3JnYl9uYW1lcykpOwo+ID4+ICsJCWlmICghcHJvcCkKPiA+ PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gKwo+ID4+ICsJCWNvbm5lY3Rvci0+YnJvYWRjYXN0 X3JnYl9wcm9wZXJ0eSA9IHByb3A7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJZHJtX29iamVjdF9h dHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwgcHJvcCwKPiA+PiArCQkJCSAgIERSTV9I RE1JX0JST0FEQ0FTVF9SR0JfQVVUTyk7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIDA7Cj4gPj4gK30K PiA+PiArRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3RfcmdiX3By b3BlcnR5KTsKPiA+PiArCj4gPj4gIC8qKgo+ID4+ICAgKiBkcm1fY29ubmVjdG9yX2F0dGFjaF9j b2xvcnNwYWNlX3Byb3BlcnR5IC0gYXR0YWNoICJDb2xvcnNwYWNlIiBwcm9wZXJ0eQo+ID4+ICAg KiBAY29ubmVjdG9yOiBjb25uZWN0b3IgdG8gYXR0YWNoIHRoZSBwcm9wZXJ0eSBvbi4KPiA+PiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9kcm0vZHJt X2Nvbm5lY3Rvci5oCj4gPj4gaW5kZXggOGNkYTkwMjkzNGNkLi5iYjZiNmEzNmFkZTMgMTAwNjQ0 Cj4gPj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPj4gKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPj4gQEAgLTM2OSw2ICszNjksMjkgQEAgZW51bSBkcm1f cGFuZWxfb3JpZW50YXRpb24gewo+ID4+ICAJRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fUklH SFRfVVAsCj4gPj4gIH07Cj4gPj4gIAo+ID4+ICsvKioKPiA+PiArICogZW51bSBkcm1faGRtaV9i cm9hZGNhc3RfcmdiIC0gQnJvYWRjYXN0IFJHQiBTZWxlY3Rpb24gZm9yIGFuIEhETUkgQGRybV9j b25uZWN0b3IKPiA+PiArICovCj4gPj4gK2VudW0gZHJtX2hkbWlfYnJvYWRjYXN0X3JnYiB7Cj4g Pj4gKwkvKioKPiA+PiArCSAqIEBEUk1fSERNSV9CUk9BRENBU1RfUkdCX0FVVE86IFRoZSBSR0Ig cmFuZ2UgaXMgc2VsZWN0ZWQKPiA+PiArCSAqIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIG1v ZGUuCj4gPj4gKwkgKi8KPiA+PiArCURSTV9IRE1JX0JST0FEQ0FTVF9SR0JfQVVUTywKPiA+PiAr Cj4gPj4gKwkvKioKPiA+PiArCSAqIEBEUk1fSERNSV9CUk9BRENBU1RfUkdCX0ZVTEw6IEZ1bGwg cmFuZ2UgUkdCIGlzIGZvcmNlZC4KPiA+PiArCSAqLwo+ID4+ICsJRFJNX0hETUlfQlJPQURDQVNU X1JHQl9GVUxMLAo+ID4+ICsKPiA+PiArCS8qKgo+ID4+ICsJICogQERSTV9IRE1JX0JST0FEQ0FT VF9SR0JfTElNSVRFRDogTGltaXRlZCByYW5nZSBSR0IgaXMgZm9yY2VkLgo+ID4+ICsJICovCj4g Pj4gKwlEUk1fSERNSV9CUk9BRENBU1RfUkdCX0xJTUlURUQsCj4gPj4gK307Cj4gPj4gKwo+ID4+ ICtjb25zdCBjaGFyICoKPiA+PiArZHJtX2hkbWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3Rfcmdi X25hbWUoZW51bSBkcm1faGRtaV9icm9hZGNhc3RfcmdiIGJyb2FkY2FzdF9yZ2IpOwo+ID4+ICBj b25zdCBjaGFyICoKPiA+PiAgZHJtX2hkbWlfY29ubmVjdG9yX2dldF9vdXRwdXRfZm9ybWF0X25h bWUoZW51bSBoZG1pX2NvbG9yc3BhY2UgZm10KTsKPiA+PiAgCj4gPj4gQEAgLTEwNDEsNiArMTA2 NCwxMiBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSB7Cj4gPj4gIAkgKiBAZHJtX2F0b21p Y19oZWxwZXJfY29ubmVjdG9yX2hkbWlfY2hlY2soKS4KPiA+PiAgCSAqLwo+ID4+ICAJc3RydWN0 IHsKPiA+PiArCQkvKioKPiA+PiArCQkgKiBAYnJvYWRjYXN0X3JnYjogQ29ubmVjdG9yIHByb3Bl cnR5IHRvIHBhc3MgdGhlCj4gPj4gKwkJICogQnJvYWRjYXN0IFJHQiBzZWxlY3Rpb24gdmFsdWUu Cj4gPj4gKwkJICovCj4gPj4gKwkJZW51bSBkcm1faGRtaV9icm9hZGNhc3RfcmdiIGJyb2FkY2Fz dF9yZ2I7Cj4gPj4gKwo+ID4+ICAJCS8qKgo+ID4+ICAJCSAqIEBvdXRwdXRfYnBjOiBCaXRzIHBl ciBjb2xvciBjaGFubmVsIHRvIG91dHB1dC4KPiA+PiAgCQkgKi8KPiA+PiBAQCAtMTc1Myw2ICsx NzgyLDEyIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKPiA+PiAgCSAqLwo+ID4+ICAJc3RydWN0 IGRybV9wcm9wZXJ0eSAqcHJpdmFjeV9zY3JlZW5faHdfc3RhdGVfcHJvcGVydHk7Cj4gPj4gIAo+ ID4+ICsJLyoqCj4gPj4gKwkgKiBAYnJvYWRjYXN0X3JnYl9wcm9wZXJ0eTogQ29ubmVjdG9yIHBy b3BlcnR5IHRvIHNldCB0aGUKPiA+PiArCSAqIEJyb2FkY2FzdCBSR0Igc2VsZWN0aW9uIHRvIG91 dHB1dCB3aXRoLgo+ID4+ICsJICovCj4gPj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpicm9hZGNh c3RfcmdiX3Byb3BlcnR5Owo+ID4+ICsKPiA+PiAgI2RlZmluZSBEUk1fQ09OTkVDVE9SX1BPTExf SFBEICgxIDw8IDApCj4gPj4gICNkZWZpbmUgRFJNX0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1QgKDEg PDwgMSkKPiA+PiAgI2RlZmluZSBEUk1fQ09OTkVDVE9SX1BPTExfRElTQ09OTkVDVCAoMSA8PCAy KQo+ID4+IEBAIC0yMDkyLDYgKzIxMjcsNyBAQCBpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfc2Nh bGluZ19tb2RlX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPj4g IAkJCQkJICAgICAgIHUzMiBzY2FsaW5nX21vZGVfbWFzayk7Cj4gPj4gIGludCBkcm1fY29ubmVj dG9yX2F0dGFjaF92cnJfY2FwYWJsZV9wcm9wZXJ0eSgKPiA+PiAgCQlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKTsKPiA+PiAraW50IGRybV9jb25uZWN0b3JfYXR0YWNoX2Jyb2FkY2Fz dF9yZ2JfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPj4gIGlu dCBkcm1fY29ubmVjdG9yX2F0dGFjaF9jb2xvcnNwYWNlX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpOwo+ID4+ICBpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfaGRyX291 dHB1dF9tZXRhZGF0YV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsK PiA+PiAgYm9vbCBkcm1fY29ubmVjdG9yX2F0b21pY19oZHJfbWV0YWRhdGFfZXF1YWwoc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9zdGF0ZSwKPiA+Pgo+ID4+IC0tIAo+ID4+IDIuNDMu Mgo+ID4+Cj4gPiAKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXJvY2tjaGlwCg== 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 07D01C5478C for ; Fri, 1 Mar 2024 11:26:48 +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=slyG/APeAMg3iTsUZu5EAYdCvaoujc2rWdxar0HuGds=; b=mChwvMfGYMrLfm QaXQq70ZO+ZS3R3dlCSgcqWSfn3045goM2BqoaAd9OGqFZaEDFZb4s5GBM32BuTa9muYlNnGT/Dio owmoN74a3FujDqJozHYj9zEx4qlZS45jR2TnIGRSu2aAOwf5wXoEJD7nUDPcWfr2T5nJlp30R298h mIbQYAZKx7BhHD+BlqCyV9LT8MgwTZ7BxUthajgWS+Sm4rs3mLf11GDwjYkGDDo73nSHFAkmwqfV6 5L0N6qMyRP0+m6EgvkKLgLkChwwEHw8SSSMKp8Z59zhsJs+tWuAgqJLqlOvbHYoqeDRr2ZszlN906 8mhPjtxeVcN7btIjfSPA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rg12D-0000000HYjs-13t9; Fri, 01 Mar 2024 11:26:37 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rg12A-0000000HYhV-1DCu for linux-arm-kernel@lists.infradead.org; Fri, 01 Mar 2024 11:26:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1709292393; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wjYgI2KsgeWuP3sAlk9TqZqYfNa6GCpmBp03vZLpou0=; b=gcH5T3FtW6MbAToCPV2dEUlSCR7RcfH9J283CNGNhQTqQDLvn8ZDOO0Fs+B8HM++9HrSsz 2A76yDXFffZjVWc+ahMECdyvh76Oywu965TH0P6QZmio8uXZVXKsnDrDTBf0rszAa77wpB IbENwTrhkzEGf+ikhQpdfQDQwYSPlF0= Received: from mail-lj1-f198.google.com (mail-lj1-f198.google.com [209.85.208.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-410-3Uy8EeWXOX2qPyfOGqQv_w-1; Fri, 01 Mar 2024 06:26:31 -0500 X-MC-Unique: 3Uy8EeWXOX2qPyfOGqQv_w-1 Received: by mail-lj1-f198.google.com with SMTP id 38308e7fff4ca-2d298d601adso13557151fa.2 for ; Fri, 01 Mar 2024 03:26:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709292390; x=1709897190; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wjYgI2KsgeWuP3sAlk9TqZqYfNa6GCpmBp03vZLpou0=; b=BgRLtAfQj5PgeYsqtvOxMOl5Y9sboo80D5iluqWTEv+OmgBokI+V6JpkPOiReD2BUp W00swkft9Wg5vzRXd0kB2P2VPjoSbY7S20iuuB1HfAAS3QZTFObvh3Df9mdLNgj1Yihu BUAWtZGiJ26Grz0XH4dH+sFERqKV3fkXpXrBnZmeMjMiI6ilemPvNhCinMpikeUWhvtC VhVKpMOTHAP5ypHcqPd1ZBlW66iXR2EtWfPQPhSq6Wzad7YCqIPLQTOSxchuYPuBNhAV dfwtpoATQv1Z2IlIsKbPAydbR9rJvfII41/tSDLEkMh92wstdP2MYrN4IJr6pYkyROFf l+7Q== X-Forwarded-Encrypted: i=1; AJvYcCVQuuhKkVmBe/inudlTmfBK8LwZkZCSpfpV1Q/gYLxDY5bQPHV4vh1SXnI3WxjEx70go+GFLw3S2mp+QBc8l5z16vbyWxvxNBLfFJh4RQfvgXsVpUY= X-Gm-Message-State: AOJu0Yxv7q7jHiY6JOvjPja9epgcKBFvIgcT9VJvGmJbhdoQwNmh6pP+ 2vk4ApI6e7cFx4t6Q3wDfo/FetL3ow3v0S8ViVgHJR16xQ0lpeQwhNbSLOk3GGS4jOqTCNNb+oI O4GkqUgNv7xBiFitxgjg8VmmKk9MUApLI/Cb/73z6MhPh0cNpqztlQNrzyiWWfb0W1Wu7hmY5 X-Received: by 2002:a2e:95d5:0:b0:2d2:5668:3a40 with SMTP id y21-20020a2e95d5000000b002d256683a40mr942905ljh.4.1709292390406; Fri, 01 Mar 2024 03:26:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IHUMPEadXUnHsh8Ae/1Y5RYwcaIFHHrv+QbMlgbuWWzQO///QbdhSklfmNGWU04m0Hw1ckfSQ== X-Received: by 2002:a2e:95d5:0:b0:2d2:5668:3a40 with SMTP id y21-20020a2e95d5000000b002d256683a40mr942879ljh.4.1709292389946; Fri, 01 Mar 2024 03:26:29 -0800 (PST) Received: from toolbox ([2001:9e8:89a0:c500:c65:1f3a:8c08:2a1d]) by smtp.gmail.com with ESMTPSA id y16-20020a05600c365000b00412656ba919sm8004431wmq.20.2024.03.01.03.26.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Mar 2024 03:26:29 -0800 (PST) Date: Fri, 1 Mar 2024 12:26:27 +0100 From: Sebastian Wick To: Hans Verkuil Cc: Maxime Ripard , 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 , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , 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, Dave Stevenson Subject: Re: [PATCH v7 21/36] drm/connector: hdmi: Add Broadcast RGB property Message-ID: <20240301112627.GD166694@toolbox> References: <20240222-kms-hdmi-connector-state-v7-0-8f4af575fce2@kernel.org> <20240222-kms-hdmi-connector-state-v7-21-8f4af575fce2@kernel.org> <20240229194726.GB166694@toolbox> <5a8366aa-34b9-4f80-9b14-d92e99873349@xs4all.nl> MIME-Version: 1.0 In-Reply-To: <5a8366aa-34b9-4f80-9b14-d92e99873349@xs4all.nl> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240301_032634_513589_1D493FEE X-CRM114-Status: GOOD ( 49.14 ) 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 T24gRnJpLCBNYXIgMDEsIDIwMjQgYXQgMDk6Mjk6MTdBTSArMDEwMCwgSGFucyBWZXJrdWlsIHdy b3RlOgo+IE9uIDI5LzAyLzIwMjQgMjA6NDcsIFNlYmFzdGlhbiBXaWNrIHdyb3RlOgo+ID4gT24g VGh1LCBGZWIgMjIsIDIwMjQgYXQgMDc6MTQ6MDdQTSArMDEwMCwgTWF4aW1lIFJpcGFyZCB3cm90 ZToKPiA+PiBUaGUgaTkxNSBkcml2ZXIgaGFzIGEgcHJvcGVydHkgdG8gZm9yY2UgdGhlIFJHQiBy YW5nZSBvZiBhbiBIRE1JIG91dHB1dC4KPiA+PiBUaGUgdmM0IGRyaXZlciB0aGVuIGltcGxlbWVu dGVkIHRoZSBzYW1lIHByb3BlcnR5IHdpdGggdGhlIHNhbWUKPiA+PiBzZW1hbnRpY3MuIEtXaW4g aGFzIHN1cHBvcnQgZm9yIGl0LCBhbmQgYSBQUiBmb3IgbXV0dGVyIGlzIGFsc28gdGhlcmUgdG8K PiA+PiBzdXBwb3J0IGl0Lgo+ID4+Cj4gPj4gQm90aCBkcml2ZXJzIGltcGxlbWVudGluZyB0aGUg c2FtZSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIHNlbWFudGljcywKPiA+PiBwbHVzIHRoZSB1c2Vy c3BhY2UgaGF2aW5nIHN1cHBvcnQgZm9yIGl0LCBpcyBwcm9vZiBlbm91Z2ggdGhhdCBpdCdzCj4g Pj4gcHJldHR5IG11Y2ggYSBkZS1mYWN0byBzdGFuZGFyZCBub3cgYW5kIHdlIGNhbiBwcm92aWRl IGhlbHBlcnMgZm9yIGl0Lgo+ID4+Cj4gPj4gTGV0J3MgcGx1bWIgaXQgaW50byB0aGUgbmV3bHkg Y3JlYXRlZCBIRE1JIGNvbm5lY3Rvci4KPiA+Pgo+ID4+IFJldmlld2VkLWJ5OiBEYXZlIFN0ZXZl bnNvbiA8ZGF2ZS5zdGV2ZW5zb25AcmFzcGJlcnJ5cGkuY29tPgo+ID4+IFNpZ25lZC1vZmYtYnk6 IE1heGltZSBSaXBhcmQgPG1yaXBhcmRAa2VybmVsLm9yZz4KPiA+PiAtLS0KPiA+PiAgRG9jdW1l bnRhdGlvbi9ncHUva21zLXByb3BlcnRpZXMuY3N2ICAgICAgfCAgMSAtCj4gPj4gIGRyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljLmMgICAgICAgICAgICAgIHwgIDIgKwo+ID4+ICBkcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYyB8ICA0ICstCj4gPj4gIGRyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX3VhcGkuYyAgICAgICAgIHwgIDQgKysKPiA+PiAgZHJpdmVycy9ncHUv ZHJtL2RybV9jb25uZWN0b3IuYyAgICAgICAgICAgfCA4OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gPj4gIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICAgICAgICAg IHwgMzYgKysrKysrKysrKysrKwo+ID4+ICA2IGZpbGVzIGNoYW5nZWQsIDEzNCBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24v Z3B1L2ttcy1wcm9wZXJ0aWVzLmNzdiBiL0RvY3VtZW50YXRpb24vZ3B1L2ttcy1wcm9wZXJ0aWVz LmNzdgo+ID4+IGluZGV4IDBmOTU5MDgzNDgyOS4uY2FlZjE0YzUzMmQ0IDEwMDY0NAo+ID4+IC0t LSBhL0RvY3VtZW50YXRpb24vZ3B1L2ttcy1wcm9wZXJ0aWVzLmNzdgo+ID4+ICsrKyBiL0RvY3Vt ZW50YXRpb24vZ3B1L2ttcy1wcm9wZXJ0aWVzLmNzdgo+ID4+IEBAIC0xNyw3ICsxNyw2IEBAIE93 bmVyIE1vZHVsZS9Ecml2ZXJzLEdyb3VwLFByb3BlcnR5IE5hbWUsVHlwZSxQcm9wZXJ0eSBWYWx1 ZXMsT2JqZWN0IGF0dGFjaGVkLERlCj4gPj4gICxWaXJ0dWFsIEdQVSzigJxzdWdnZXN0ZWQgWOKA nSxSQU5HRSwiTWluPTAsIE1heD0weGZmZmZmZmZmIixDb25uZWN0b3IscHJvcGVydHkgdG8gc3Vn Z2VzdCBhbiBYIG9mZnNldCBmb3IgYSBjb25uZWN0b3IKPiA+PiAgLCzigJxzdWdnZXN0ZWQgWeKA nSxSQU5HRSwiTWluPTAsIE1heD0weGZmZmZmZmZmIixDb25uZWN0b3IscHJvcGVydHkgdG8gc3Vn Z2VzdCBhbiBZIG9mZnNldCBmb3IgYSBjb25uZWN0b3IKPiA+PiAgLE9wdGlvbmFsLCIiImFzcGVj dCByYXRpbyIiIixFTlVNLCJ7ICIiTm9uZSIiLCAiIjQ6MyIiLCAiIjE2OjkiIiB9IixDb25uZWN0 b3IsVERCCj4gPj4gLWk5MTUsR2VuZXJpYywiIiJCcm9hZGNhc3QgUkdCIiIiLEVOVU0sInsgIiJB dXRvbWF0aWMiIiwgIiJGdWxsIiIsICIiTGltaXRlZCAxNjoyMzUiIiB9IixDb25uZWN0b3IsIldo ZW4gdGhpcyBwcm9wZXJ0eSBpcyBzZXQgdG8gTGltaXRlZCAxNjoyMzUgYW5kIENUTSBpcyBzZXQs IHRoZSBoYXJkd2FyZSB3aWxsIGJlIHByb2dyYW1tZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBt dWx0aXBsaWNhdGlvbiBvZiBDVE0gYnkgdGhlIGxpbWl0ZWQgcmFuZ2UgbWF0cml4IHRvIGVuc3Vy ZSB0aGUgcGl4ZWxzIG5vcm1hbGx5IGluIHRoZSByYW5nZSAwLi4xLjAgYXJlIHJlbWFwcGVkIHRv IHRoZSByYW5nZSAxNi8yNTUuLjIzNS8yNTUuIgo+ID4+ICAsLOKAnGF1ZGlv4oCdLEVOVU0sInsg IiJmb3JjZS1kdmkiIiwgIiJvZmYiIiwgIiJhdXRvIiIsICIib24iIiB9IixDb25uZWN0b3IsVEJE Cj4gPj4gICxTRFZPLVRWLOKAnG1vZGXigJ0sRU5VTSwieyAiIk5UU0NfTSIiLCAiIk5UU0NfSiIi LCAiIk5UU0NfNDQzIiIsICIiUEFMX0IiIiB9IGV0Yy4iLENvbm5lY3RvcixUQkQKPiA+PiAgLCwi IiJsZWZ0X21hcmdpbiIiIixSQU5HRSwiTWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQiLENvbm5l Y3RvcixUQkQKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+PiBpbmRleCAyNmY5ZTUyNWMwYTAuLjNl NTdkOThkODQxOCAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5j Cj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4+IEBAIC0xMTQ1LDYg KzExNDUsOCBAQCBzdGF0aWMgdm9pZCBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9wcmludF9zdGF0ZShz dHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCj4gPj4gIAo+ID4+ICAJaWYgKGNvbm5lY3Rvci0+Y29ubmVj dG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX0hETUlBIHx8Cj4gPj4gIAkgICAgY29ubmVj dG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUIpIHsKPiA+PiAr CQlkcm1fcHJpbnRmKHAsICJcdGJyb2FkY2FzdF9yZ2I9JXNcbiIsCj4gPj4gKwkJCSAgIGRybV9o ZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3JnYl9uYW1lKHN0YXRlLT5oZG1pLmJyb2FkY2Fz dF9yZ2IpKTsKPiA+PiAgCQlkcm1fcHJpbnRmKHAsICJcdG91dHB1dF9icGM9JXVcbiIsIHN0YXRl LT5oZG1pLm91dHB1dF9icGMpOwo+ID4+ICAJCWRybV9wcmludGYocCwgIlx0b3V0cHV0X2Zvcm1h dD0lc1xuIiwKPiA+PiAgCQkJICAgZHJtX2hkbWlfY29ubmVjdG9yX2dldF9vdXRwdXRfZm9ybWF0 X25hbWUoc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCkpOwo+ID4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX3N0YXRlX2hlbHBlci5jCj4gPj4gaW5kZXggOWY1MTc1OTlmMTE3Li4wZThmYjY1 Mzk2NWEgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVf aGVscGVyLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxw ZXIuYwo+ID4+IEBAIC01ODksNiArNTg5LDcgQEAgdm9pZCBfX2RybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9oZG1pX3Jlc2V0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPj4g IAo+ID4+ICAJbmV3X3N0YXRlLT5tYXhfYnBjID0gbWF4X2JwYzsKPiA+PiAgCW5ld19zdGF0ZS0+ bWF4X3JlcXVlc3RlZF9icGMgPSBtYXhfYnBjOwo+ID4+ICsJbmV3X3N0YXRlLT5oZG1pLmJyb2Fk Y2FzdF9yZ2IgPSBEUk1fSERNSV9CUk9BRENBU1RfUkdCX0FVVE87Cj4gPj4gIH0KPiA+PiAgRVhQ T1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1pX3Jlc2V0KTsKPiA+ PiAgCj4gPj4gQEAgLTkxMyw3ICs5MTQsOCBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2hkbWlfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+PiAgCWlm IChyZXQpCj4gPj4gIAkJcmV0dXJuIHJldDsKPiA+PiAgCj4gPj4gLQlpZiAob2xkX3N0YXRlLT5o ZG1pLm91dHB1dF9icGMgIT0gbmV3X3N0YXRlLT5oZG1pLm91dHB1dF9icGMgfHwKPiA+PiArCWlm IChvbGRfc3RhdGUtPmhkbWkuYnJvYWRjYXN0X3JnYiAhPSBuZXdfc3RhdGUtPmhkbWkuYnJvYWRj YXN0X3JnYiB8fAo+ID4+ICsJICAgIG9sZF9zdGF0ZS0+aGRtaS5vdXRwdXRfYnBjICE9IG5ld19z dGF0ZS0+aGRtaS5vdXRwdXRfYnBjIHx8Cj4gPj4gIAkgICAgb2xkX3N0YXRlLT5oZG1pLm91dHB1 dF9mb3JtYXQgIT0gbmV3X3N0YXRlLT5oZG1pLm91dHB1dF9mb3JtYXQpIHsKPiA+PiAgCQlzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSBuZXdfc3RhdGUtPmNydGM7Cj4gPj4gIAkJc3RydWN0IGRybV9j cnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY191YXBpLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKPiA+ PiBpbmRleCAyOWQ0OTQwMTg4ZDQuLjJiNDE1YjRlZDUwNiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY191YXBpLmMKPiA+PiBAQCAtNzc2LDYgKzc3Niw4IEBAIHN0YXRpYyBpbnQgZHJt X2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsCj4gPj4gIAkJc3RhdGUtPm1heF9yZXF1ZXN0ZWRfYnBjID0gdmFsOwo+ID4+ICAJfSBl bHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPnByaXZhY3lfc2NyZWVuX3N3X3N0YXRlX3By b3BlcnR5KSB7Cj4gPj4gIAkJc3RhdGUtPnByaXZhY3lfc2NyZWVuX3N3X3N0YXRlID0gdmFsOwo+ ID4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPmJyb2FkY2FzdF9yZ2JfcHJv cGVydHkpIHsKPiA+PiArCQlzdGF0ZS0+aGRtaS5icm9hZGNhc3RfcmdiID0gdmFsOwo+ID4+ICAJ fSBlbHNlIGlmIChjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KSB7Cj4gPj4g IAkJcmV0dXJuIGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkoY29ubmVjdG9y LAo+ID4+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+ID4+IEBAIC04NTksNiArODYxLDgg QEAgZHJtX2F0b21pY19jb25uZWN0b3JfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4gPj4gIAkJKnZhbCA9IHN0YXRlLT5tYXhfcmVxdWVzdGVkX2JwYzsKPiA+ PiAgCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9zd19z dGF0ZV9wcm9wZXJ0eSkgewo+ID4+ICAJCSp2YWwgPSBzdGF0ZS0+cHJpdmFjeV9zY3JlZW5fc3df c3RhdGU7Cj4gPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+YnJvYWRjYXN0 X3JnYl9wcm9wZXJ0eSkgewo+ID4+ICsJCSp2YWwgPSBzdGF0ZS0+aGRtaS5icm9hZGNhc3Rfcmdi Owo+ID4+ICAJfSBlbHNlIGlmIChjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5 KSB7Cj4gPj4gIAkJcmV0dXJuIGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHko Y29ubmVjdG9yLAo+ID4+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+ID4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9jb25uZWN0b3IuYwo+ID4+IGluZGV4IDU5MWQyZDUwMGY2MS4uNmZmZTU5ZDAxNjk4IDEwMDY0 NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gPj4gQEAgLTEyMTIsNiArMTIxMiwyOSBA QCBzdGF0aWMgY29uc3QgdTMyIGRwX2NvbG9yc3BhY2VzID0KPiA+PiAgCUJJVChEUk1fTU9ERV9D T0xPUklNRVRSWV9CVDIwMjBfQ1lDQykgfAo+ID4+ICAJQklUKERSTV9NT0RFX0NPTE9SSU1FVFJZ X0JUMjAyMF9ZQ0MpOwo+ID4+ICAKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9l bnVtX2xpc3QgYnJvYWRjYXN0X3JnYl9uYW1lc1tdID0gewo+ID4+ICsJeyBEUk1fSERNSV9CUk9B RENBU1RfUkdCX0FVVE8sICJBdXRvbWF0aWMiIH0sCj4gPj4gKwl7IERSTV9IRE1JX0JST0FEQ0FT VF9SR0JfRlVMTCwgIkZ1bGwiIH0sCj4gPj4gKwl7IERSTV9IRE1JX0JST0FEQ0FTVF9SR0JfTElN SVRFRCwgIkxpbWl0ZWQgMTY6MjM1IiB9LAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArLyoKPiA+PiAr ICogZHJtX2hkbWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3RfcmdiX25hbWUgLSBSZXR1cm4gYSBz dHJpbmcgZm9yIEhETUkgY29ubmVjdG9yIFJHQiBicm9hZGNhc3Qgc2VsZWN0aW9uCj4gPj4gKyAq IEBicm9hZGNhc3RfcmdiOiBCcm9hZGNhc3QgUkdCIHNlbGVjdGlvbiB0byBjb21wdXRlIG5hbWUg b2YKPiA+PiArICoKPiA+PiArICogUmV0dXJuczogdGhlIG5hbWUgb2YgdGhlIEJyb2FkY2FzdCBS R0Igc2VsZWN0aW9uLCBvciBOVUxMIGlmIHRoZSB0eXBlCj4gPj4gKyAqIGlzIG5vdCB2YWxpZC4K PiA+PiArICovCj4gPj4gK2NvbnN0IGNoYXIgKgo+ID4+ICtkcm1faGRtaV9jb25uZWN0b3JfZ2V0 X2Jyb2FkY2FzdF9yZ2JfbmFtZShlbnVtIGRybV9oZG1pX2Jyb2FkY2FzdF9yZ2IgYnJvYWRjYXN0 X3JnYikKPiA+PiArewo+ID4+ICsJaWYgKGJyb2FkY2FzdF9yZ2IgPiBEUk1fSERNSV9CUk9BRENB U1RfUkdCX0xJTUlURUQpCj4gPj4gKwkJcmV0dXJuIE5VTEw7Cj4gPj4gKwo+ID4+ICsJcmV0dXJu IGJyb2FkY2FzdF9yZ2JfbmFtZXNbYnJvYWRjYXN0X3JnYl0ubmFtZTsKPiA+PiArfQo+ID4+ICtF WFBPUlRfU1lNQk9MKGRybV9oZG1pX2Nvbm5lY3Rvcl9nZXRfYnJvYWRjYXN0X3JnYl9uYW1lKTsK PiA+PiArCj4gPj4gIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgb3V0cHV0X2Zvcm1hdF9zdHJb XSA9IHsKPiA+PiAgCVtIRE1JX0NPTE9SU1BBQ0VfUkdCXQkJPSAiUkdCIiwKPiA+PiAgCVtIRE1J X0NPTE9SU1BBQ0VfWVVWNDIwXQk9ICJZVVYgNDoyOjAiLAo+ID4+IEBAIC0xNzA4LDYgKzE3MzEs MzkgQEAgRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2F0dGFjaF9kcF9zdWJjb25uZWN0b3Jf cHJvcGVydHkpOwo+ID4+ICAvKioKPiA+PiAgICogRE9DOiBIRE1JIGNvbm5lY3RvciBwcm9wZXJ0 aWVzCj4gPj4gICAqCj4gPj4gKyAqIEJyb2FkY2FzdCBSR0IgKEhETUkgc3BlY2lmaWMpCj4gPj4g KyAqICAgICAgSW5kaWNhdGVzIHRoZSBRdWFudGl6YXRpb24gUmFuZ2UgKEZ1bGwgdnMgTGltaXRl ZCkgdXNlZC4gVGhlIGNvbG9yCj4gPj4gKyAqICAgICAgcHJvY2Vzc2luZyBwaXBlbGluZSB3aWxs IGJlIGFkanVzdGVkIHRvIG1hdGNoIHRoZSB2YWx1ZSBvZiB0aGUKPiA+PiArICogICAgICBwcm9w ZXJ0eSwgYW5kIHRoZSBJbmZvZnJhbWVzIHdpbGwgYmUgZ2VuZXJhdGVkIGFuZCBzZW50IGFjY29y ZGluZ2x5Lgo+ID4+ICsgKgo+ID4+ICsgKiAgICAgIFRoaXMgcHJvcGVydHkgaXMgb25seSByZWxl dmFudCBpZiB0aGUgSERNSSBvdXRwdXQgZm9ybWF0IGlzIFJHQi4gSWYKPiA+PiArICogICAgICBp dCdzIG9uZSBvZiB0aGUgWUNiQ3IgdmFyaWFudCwgaXQgd2lsbCBiZSBpZ25vcmVkIGFuZCB0aGUg b3V0cHV0IHdpbGwKPiA+PiArICogICAgICB1c2UgYSBsaW1pdGVkIHF1YW50aXphdGlvbiByYW5n ZS4KPiA+IAo+ID4gVWgsIG1heWJlIGp1c3Qgc2F5IHRoYXQgdGhlIHF1YW50aXphdGlvbiByYW5n ZSBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5Cj4gPiBpbiBjYXNlIGEgWUNiQ3Igb3V0cHV0IGZv cm1hdCBpcyBpbiB1c2UuIEknbSBub3Qgc3VyZSBldmVyeSBZQ2JDcgo+ID4gdmFyaWFudCByZXF1 aXJlcyBsaW1pdGVkIGFuZCBldmVuIGlmIGl0IGRvZXMsIG5ldyBmb3JtYXRzIGNvdWxkIGNoYW5n ZQo+ID4gdGhpcy4KPiAKPiBGb3IgSERNSSBldmVyeSBZQ2JDciBvdXRwdXQgZm9ybWF0IGlzIGxp bWl0ZWQgcmFuZ2UgYnkgZGVmYXVsdC4gSXQgaXMKPiBoaWdobHkgdW5saWtlbHkgdGhhdCBmdXR1 cmUgWUNiQ3IgZm9ybWF0cyB3b3VsZCBldmVyIHVzZSBmdWxsIHJhbmdlIGJ5Cj4gZGVmYXVsdC4K CkNUQS04NjEtSSwgVGFibGUgNCAtIERlZmF1bHQgUXVhbnRpemF0aW9uIFJhbmdlczoKCkNvbG9y aW1ldHJ5OiBzWUNDNjAxCkNFIFZpZGVvIEZvcm1hdDogTGltaXRlZApJVCBWaWRlbyBGb3JtYXQ6 IEZ1bGwKCkFuZCBhbHNvIHRoaXMgaXNuJ3QganVzdCBhYm91dCB0aGUgZGVmYXVsdCBiZWhhdmlv ci4gRHJpdmVycyBjb3VsZCBhbHNvCmp1c3QgY2hvb3NlIGZ1bGwgcmFuZ2UgZm9yIFlDYkNyIGZv cm1hdHMgdmlhIEluZm9GcmFtZXMuCgpUaGUgQnJvYWRjYXN0IFJHQiBwcm9wZXJ0eSBzaG91bGQg c2ltcGx5IG5vdCBhZmZlY3QgYW55IG9mIHRob3NlCmRlY2lzaW9ucy4gSW50ZWwgY2hvc2UgdG8g YWx3YXlzIHVzZSBsaW1pdGVkIHJhbmdlIGFwcGFyZW50bHkgYnV0IHRoaXMKcHJvcGVydHkgc2hv dWxkbid0IGZvcmNlIHRoaXMgYmVoYXZpb3IuCgo+IFNvIEkgYW0gZmluZSB3aXRoIHRoZSBjdXJy ZW50IHRleHQgc2luY2UgaXQgaXMgYWN0dWFsbHkgY29ycmVjdCBhbmQgaXQKPiBleHBsaWNpdGx5 IHN0YXRlcyB3aGljaCBxdWFudGl6YXRpb24gcmFuZ2Ugd2lsbCBiZSB1c2VkLgo+IAo+IFJlZ2Fy ZHMsCj4gCj4gCUhhbnMKPiAKPiA+IAo+ID4gV2l0aCB0aGlzIGNoYW5nZWQsIHRoaXMgcGF0Y2gg aXMKPiA+IAo+ID4gUmV2aWV3ZWQtYnk6IFNlYmFzdGlhbiBXaWNrIDxzZWJhc3RpYW4ud2lja0By ZWRoYXQuY29tPgo+ID4gCj4gPj4gKyAqCj4gPj4gKyAqICAgICAgVGhlIENSVEMgYXR0YWNoZWQg dG8gdGhlIGNvbm5lY3RvciBtdXN0IGJlIGNvbmZpZ3VyZWQgYnkgdXNlci1zcGFjZSB0bwo+ID4+ ICsgKiAgICAgIGFsd2F5cyBwcm9kdWNlIGZ1bGwtcmFuZ2UgcGl4ZWxzLgo+ID4+ICsgKgo+ID4+ ICsgKiAgICAgIFRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IGNhbiBiZSBvbmUgb2YgdGhlIGZv bGxvd2luZzoKPiA+PiArICoKPiA+PiArICogICAgICBBdXRvbWF0aWM6Cj4gPj4gKyAqICAgICAg ICAgICAgICBUaGUgcXVhbnRpemF0aW9uIHJhbmdlIGlzIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkg YmFzZWQgb24gdGhlCj4gPj4gKyAqICAgICAgICAgICAgICBtb2RlIGFjY29yZGluZyB0byB0aGUg SERNSSBzcGVjaWZpY2F0aW9ucyAoSERNSSAxLjRiIC0gU2VjdGlvbgo+ID4+ICsgKiAgICAgICAg ICAgICAgNi42IC0gVmlkZW8gUXVhbnRpemF0aW9uIFJhbmdlcykuCj4gPj4gKyAqCj4gPj4gKyAq ICAgICAgRnVsbDoKPiA+PiArICogICAgICAgICAgICAgIEZ1bGwgcXVhbnRpemF0aW9uIHJhbmdl IGlzIGZvcmNlZC4KPiA+PiArICoKPiA+PiArICogICAgICBMaW1pdGVkIDE2OjIzNToKPiA+PiAr ICogICAgICAgICAgICAgIExpbWl0ZWQgcXVhbnRpemF0aW9uIHJhbmdlIGlzIGZvcmNlZC4gVW5s aWtlIHRoZSBuYW1lIHN1Z2dlc3RzLAo+ID4+ICsgKiAgICAgICAgICAgICAgdGhpcyB3b3JrcyBm b3IgYW55IG51bWJlciBvZiBiaXRzLXBlci1jb21wb25lbnQuCj4gPj4gKyAqCj4gPj4gKyAqICAg ICAgUHJvcGVydHkgdmFsdWVzIG90aGVyIHRoYW4gQXV0b21hdGljIGNhbiByZXN1bHQgaW4gY29s b3JzIGJlaW5nIG9mZiAoaWYKPiA+PiArICogICAgICBsaW1pdGVkIGlzIHNlbGVjdGVkIGJ1dCB0 aGUgZGlzcGxheSBleHBlY3RzIGZ1bGwpLCBvciBhIGJsYWNrIHNjcmVlbgo+ID4+ICsgKiAgICAg IChpZiBmdWxsIGlzIHNlbGVjdGVkIGJ1dCB0aGUgZGlzcGxheSBleHBlY3RzIGxpbWl0ZWQpLgo+ ID4+ICsgKgo+ID4+ICsgKiAgICAgIERyaXZlcnMgY2FuIHNldCB1cCB0aGlzIHByb3BlcnR5IGJ5 IGNhbGxpbmcKPiA+PiArICogICAgICBkcm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3Rfcmdi X3Byb3BlcnR5KCkuCj4gPj4gKyAqCj4gPj4gICAqIGNvbnRlbnQgdHlwZSAoSERNSSBzcGVjaWZp Yyk6Cj4gPj4gICAqCUluZGljYXRlcyBjb250ZW50IHR5cGUgc2V0dGluZyB0byBiZSB1c2VkIGlu IEhETUkgaW5mb2ZyYW1lcyB0byBpbmRpY2F0ZQo+ID4+ICAgKgljb250ZW50IHR5cGUgZm9yIHRo ZSBleHRlcm5hbCBkZXZpY2UsIHNvIHRoYXQgaXQgYWRqdXN0cyBpdHMgZGlzcGxheQo+ID4+IEBA IC0yNTcwLDYgKzI2MjYsMzkgQEAgaW50IGRybV9jb25uZWN0b3JfYXR0YWNoX2hkcl9vdXRwdXRf bWV0YWRhdGFfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4KPiA+PiAgfQo+ID4+ ICBFWFBPUlRfU1lNQk9MKGRybV9jb25uZWN0b3JfYXR0YWNoX2hkcl9vdXRwdXRfbWV0YWRhdGFf cHJvcGVydHkpOwo+ID4+ICAKPiA+PiArLyoqCj4gPj4gKyAqIGRybV9jb25uZWN0b3JfYXR0YWNo X2Jyb2FkY2FzdF9yZ2JfcHJvcGVydHkgLSBhdHRhY2ggIkJyb2FkY2FzdCBSR0IiIHByb3BlcnR5 Cj4gPj4gKyAqIEBjb25uZWN0b3I6IGNvbm5lY3RvciB0byBhdHRhY2ggdGhlIHByb3BlcnR5IG9u Lgo+ID4+ICsgKgo+ID4+ICsgKiBUaGlzIGlzIHVzZWQgdG8gYWRkIHN1cHBvcnQgZm9yIGZvcmNp bmcgdGhlIFJHQiByYW5nZSBvbiBhIGNvbm5lY3Rvcgo+ID4+ICsgKgo+ID4+ICsgKiBSZXR1cm5z Ogo+ID4+ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4g Pj4gKyAqLwo+ID4+ICtpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfYnJvYWRjYXN0X3JnYl9wcm9w ZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4+ICt7Cj4gPj4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gPj4gKwlzdHJ1Y3QgZHJtX3By b3BlcnR5ICpwcm9wOwo+ID4+ICsKPiA+PiArCXByb3AgPSBjb25uZWN0b3ItPmJyb2FkY2FzdF9y Z2JfcHJvcGVydHk7Cj4gPj4gKwlpZiAoIXByb3ApIHsKPiA+PiArCQlwcm9wID0gZHJtX3Byb3Bl cnR5X2NyZWF0ZV9lbnVtKGRldiwgRFJNX01PREVfUFJPUF9FTlVNLAo+ID4+ICsJCQkJCQkiQnJv YWRjYXN0IFJHQiIsCj4gPj4gKwkJCQkJCWJyb2FkY2FzdF9yZ2JfbmFtZXMsCj4gPj4gKwkJCQkJ CUFSUkFZX1NJWkUoYnJvYWRjYXN0X3JnYl9uYW1lcykpOwo+ID4+ICsJCWlmICghcHJvcCkKPiA+ PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gKwo+ID4+ICsJCWNvbm5lY3Rvci0+YnJvYWRjYXN0 X3JnYl9wcm9wZXJ0eSA9IHByb3A7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJZHJtX29iamVjdF9h dHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwgcHJvcCwKPiA+PiArCQkJCSAgIERSTV9I RE1JX0JST0FEQ0FTVF9SR0JfQVVUTyk7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIDA7Cj4gPj4gK30K PiA+PiArRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2F0dGFjaF9icm9hZGNhc3RfcmdiX3By b3BlcnR5KTsKPiA+PiArCj4gPj4gIC8qKgo+ID4+ICAgKiBkcm1fY29ubmVjdG9yX2F0dGFjaF9j b2xvcnNwYWNlX3Byb3BlcnR5IC0gYXR0YWNoICJDb2xvcnNwYWNlIiBwcm9wZXJ0eQo+ID4+ICAg KiBAY29ubmVjdG9yOiBjb25uZWN0b3IgdG8gYXR0YWNoIHRoZSBwcm9wZXJ0eSBvbi4KPiA+PiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9kcm0vZHJt X2Nvbm5lY3Rvci5oCj4gPj4gaW5kZXggOGNkYTkwMjkzNGNkLi5iYjZiNmEzNmFkZTMgMTAwNjQ0 Cj4gPj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPj4gKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPj4gQEAgLTM2OSw2ICszNjksMjkgQEAgZW51bSBkcm1f cGFuZWxfb3JpZW50YXRpb24gewo+ID4+ICAJRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fUklH SFRfVVAsCj4gPj4gIH07Cj4gPj4gIAo+ID4+ICsvKioKPiA+PiArICogZW51bSBkcm1faGRtaV9i cm9hZGNhc3RfcmdiIC0gQnJvYWRjYXN0IFJHQiBTZWxlY3Rpb24gZm9yIGFuIEhETUkgQGRybV9j b25uZWN0b3IKPiA+PiArICovCj4gPj4gK2VudW0gZHJtX2hkbWlfYnJvYWRjYXN0X3JnYiB7Cj4g Pj4gKwkvKioKPiA+PiArCSAqIEBEUk1fSERNSV9CUk9BRENBU1RfUkdCX0FVVE86IFRoZSBSR0Ig cmFuZ2UgaXMgc2VsZWN0ZWQKPiA+PiArCSAqIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIG1v ZGUuCj4gPj4gKwkgKi8KPiA+PiArCURSTV9IRE1JX0JST0FEQ0FTVF9SR0JfQVVUTywKPiA+PiAr Cj4gPj4gKwkvKioKPiA+PiArCSAqIEBEUk1fSERNSV9CUk9BRENBU1RfUkdCX0ZVTEw6IEZ1bGwg cmFuZ2UgUkdCIGlzIGZvcmNlZC4KPiA+PiArCSAqLwo+ID4+ICsJRFJNX0hETUlfQlJPQURDQVNU X1JHQl9GVUxMLAo+ID4+ICsKPiA+PiArCS8qKgo+ID4+ICsJICogQERSTV9IRE1JX0JST0FEQ0FT VF9SR0JfTElNSVRFRDogTGltaXRlZCByYW5nZSBSR0IgaXMgZm9yY2VkLgo+ID4+ICsJICovCj4g Pj4gKwlEUk1fSERNSV9CUk9BRENBU1RfUkdCX0xJTUlURUQsCj4gPj4gK307Cj4gPj4gKwo+ID4+ ICtjb25zdCBjaGFyICoKPiA+PiArZHJtX2hkbWlfY29ubmVjdG9yX2dldF9icm9hZGNhc3Rfcmdi X25hbWUoZW51bSBkcm1faGRtaV9icm9hZGNhc3RfcmdiIGJyb2FkY2FzdF9yZ2IpOwo+ID4+ICBj b25zdCBjaGFyICoKPiA+PiAgZHJtX2hkbWlfY29ubmVjdG9yX2dldF9vdXRwdXRfZm9ybWF0X25h bWUoZW51bSBoZG1pX2NvbG9yc3BhY2UgZm10KTsKPiA+PiAgCj4gPj4gQEAgLTEwNDEsNiArMTA2 NCwxMiBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSB7Cj4gPj4gIAkgKiBAZHJtX2F0b21p Y19oZWxwZXJfY29ubmVjdG9yX2hkbWlfY2hlY2soKS4KPiA+PiAgCSAqLwo+ID4+ICAJc3RydWN0 IHsKPiA+PiArCQkvKioKPiA+PiArCQkgKiBAYnJvYWRjYXN0X3JnYjogQ29ubmVjdG9yIHByb3Bl cnR5IHRvIHBhc3MgdGhlCj4gPj4gKwkJICogQnJvYWRjYXN0IFJHQiBzZWxlY3Rpb24gdmFsdWUu Cj4gPj4gKwkJICovCj4gPj4gKwkJZW51bSBkcm1faGRtaV9icm9hZGNhc3RfcmdiIGJyb2FkY2Fz dF9yZ2I7Cj4gPj4gKwo+ID4+ICAJCS8qKgo+ID4+ICAJCSAqIEBvdXRwdXRfYnBjOiBCaXRzIHBl ciBjb2xvciBjaGFubmVsIHRvIG91dHB1dC4KPiA+PiAgCQkgKi8KPiA+PiBAQCAtMTc1Myw2ICsx NzgyLDEyIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKPiA+PiAgCSAqLwo+ID4+ICAJc3RydWN0 IGRybV9wcm9wZXJ0eSAqcHJpdmFjeV9zY3JlZW5faHdfc3RhdGVfcHJvcGVydHk7Cj4gPj4gIAo+ ID4+ICsJLyoqCj4gPj4gKwkgKiBAYnJvYWRjYXN0X3JnYl9wcm9wZXJ0eTogQ29ubmVjdG9yIHBy b3BlcnR5IHRvIHNldCB0aGUKPiA+PiArCSAqIEJyb2FkY2FzdCBSR0Igc2VsZWN0aW9uIHRvIG91 dHB1dCB3aXRoLgo+ID4+ICsJICovCj4gPj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpicm9hZGNh c3RfcmdiX3Byb3BlcnR5Owo+ID4+ICsKPiA+PiAgI2RlZmluZSBEUk1fQ09OTkVDVE9SX1BPTExf SFBEICgxIDw8IDApCj4gPj4gICNkZWZpbmUgRFJNX0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1QgKDEg PDwgMSkKPiA+PiAgI2RlZmluZSBEUk1fQ09OTkVDVE9SX1BPTExfRElTQ09OTkVDVCAoMSA8PCAy KQo+ID4+IEBAIC0yMDkyLDYgKzIxMjcsNyBAQCBpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfc2Nh bGluZ19tb2RlX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPj4g IAkJCQkJICAgICAgIHUzMiBzY2FsaW5nX21vZGVfbWFzayk7Cj4gPj4gIGludCBkcm1fY29ubmVj dG9yX2F0dGFjaF92cnJfY2FwYWJsZV9wcm9wZXJ0eSgKPiA+PiAgCQlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKTsKPiA+PiAraW50IGRybV9jb25uZWN0b3JfYXR0YWNoX2Jyb2FkY2Fz dF9yZ2JfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPj4gIGlu dCBkcm1fY29ubmVjdG9yX2F0dGFjaF9jb2xvcnNwYWNlX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpOwo+ID4+ICBpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfaGRyX291 dHB1dF9tZXRhZGF0YV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsK PiA+PiAgYm9vbCBkcm1fY29ubmVjdG9yX2F0b21pY19oZHJfbWV0YWRhdGFfZXF1YWwoc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9zdGF0ZSwKPiA+Pgo+ID4+IC0tIAo+ID4+IDIuNDMu Mgo+ID4+Cj4gPiAKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==