From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.4 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9956C43603 for ; Thu, 5 Dec 2019 09:35:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 966D52464F for ; Thu, 5 Dec 2019 09:35:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="md40lg4+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729279AbfLEJfh (ORCPT ); Thu, 5 Dec 2019 04:35:37 -0500 Received: from mail-lf1-f66.google.com ([209.85.167.66]:41240 "EHLO mail-lf1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729249AbfLEJff (ORCPT ); Thu, 5 Dec 2019 04:35:35 -0500 Received: by mail-lf1-f66.google.com with SMTP id m30so1943113lfp.8 for ; Thu, 05 Dec 2019 01:35:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=xlBRhTw/jtQIcsHp5WmEd30ut2aD0xyE9yaT+wUTc3I=; b=md40lg4+8ino9LXdrRZD9ROuX9NvQbPOGvNZ/eVcceTDIhtdLWHy9ECt5z1dQAD4MM DdH87tABqmZ3T0s9VvKZuw2d48mq5SaZVrPzQ48tNJ1OpKH6wXWvLIPK2FThEc7d7NnG df2dTl4M0F5i6I7nAScI9mhQo2yFc8PapwURaegnN4Eq8iHNfJqzHsFE+pExVO0BQzeF 3qtDe7gefJwITWPwQKgDCOyGtrXiPMs4P0FfR/glCJp/gubzKE7/YksaEdjJv1HQDO6M w5jdH6pM9zDLm/aB8bHU9rUW2s1DqemW8bbBVh9gnaamzATpoaEPrIeTIhA6GFEGfdn7 EaDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=xlBRhTw/jtQIcsHp5WmEd30ut2aD0xyE9yaT+wUTc3I=; b=nqUBtvLCmDGlDybI+njjz27/VTR9HM/VTLhXYcVF35JQ3eg+HmSGQvndBeTH3qqweL jtBwYY3hRfOd85tKuME4JLLkx9Qx3uI6X3tpKuen1m22MKbt6D7l4YacOnYqAc9Viw3s FcRRkb3gCJgS5nsyv8bdpAgBWWLR9HpgyT8F1PgnGPI3LVSck+gqUCziAhjHO6FaNLDT DnCv5E+xVOWce6+B8iryG/uVAwm/oUzeBsgKzO5c2JJMVJkB/TEn2DEBAsMhCQjDuBD3 LDKkq746fbBrX5/ig1SR+1vtsZIYJmpWZz1c1gpJzVTXS1g5rU76YUWTzFhbNkKoIXjo 5xNw== X-Gm-Message-State: APjAAAUtiM4I7XC8I7hkuFd7kf+kmcSv8bfXTC/PTLHzHYw7DfqQPj/z Yxr8uDp5STMww4SlRmxYgoRcPDUkZfOSjyyTilYtWw== X-Google-Smtp-Source: APXvYqxrfnFijgMewMwGGAyu6M2ppVO81Ru7vemD6fccdEP1qKQwpHm3knUpDelBbZnkhe5FhD+wd3Bf8X1vkMcSuF8= X-Received: by 2002:ac2:4244:: with SMTP id m4mr4610896lfl.85.1575538531007; Thu, 05 Dec 2019 01:35:31 -0800 (PST) MIME-Version: 1.0 References: <20191023001206.15741-1-rajatja@google.com> <20191104194147.185642-1-rajatja@google.com> <20191104194147.185642-3-rajatja@google.com> <87r222wpvv.fsf@intel.com> In-Reply-To: <87r222wpvv.fsf@intel.com> From: Rajat Jain Date: Thu, 5 Dec 2019 01:34:53 -0800 Message-ID: Subject: Re: [PATCH v2 3/3] drm/i915: Add support for integrated privacy screens To: Jani Nikula Cc: Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Daniel Vetter , Joonas Lahtinen , Rodrigo Vivi , =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Chris Wilson , Imre Deak , =?UTF-8?Q?Jos=C3=A9_Roberto_de_Souza?= , Linux Kernel Mailing List , dri-devel , intel-gfx@lists.freedesktop.org, Greg Kroah-Hartman , Mat King , Daniel Thompson , Jonathan Corbet , Pavel Machek , Sean Paul , Duncan Laurie , Jesse Barnes , Thierry Reding , Rajat Jain Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 20, 2019 at 7:04 AM Jani Nikula w= rote: > > On Mon, 04 Nov 2019, Rajat Jain wrote: > > Certain laptops now come with panels that have integrated privacy > > screens on them. This patch adds support for such panels by adding > > a privacy-screen property to the intel_connector for the panel, that > > the userspace can then use to control and check the status. > > > > Identifying the presence of privacy screen, and controlling it, is done > > via ACPI _DSM methods. > > > > Currently, this is done only for the Intel display ports. But in future= , > > this can be done for any other ports if the hardware becomes available > > (e.g. external monitors supporting integrated privacy screens?). > > > > Signed-off-by: Rajat Jain > > Change-Id: Ic9ff07fc4a50797d2d0dfb919f11aa0821a4b548 > > --- > > v2: Formed by splitting the original patch into multiple patches. > > - All code has been moved into i915 now. > > - Privacy screen is a i915 property > > - Have a local state variable to store the prvacy screen. Don't rea= d > > it from hardware. > > > > drivers/gpu/drm/i915/Makefile | 3 +- > > drivers/gpu/drm/i915/display/intel_atomic.c | 13 +++- > > .../gpu/drm/i915/display/intel_connector.c | 35 ++++++++++ > > .../gpu/drm/i915/display/intel_connector.h | 1 + > > .../drm/i915/display/intel_display_types.h | 4 ++ > > drivers/gpu/drm/i915/display/intel_dp.c | 5 ++ > > .../drm/i915/display/intel_privacy_screen.c | 70 +++++++++++++++++++ > > .../drm/i915/display/intel_privacy_screen.h | 25 +++++++ > > include/uapi/drm/i915_drm.h | 14 ++++ > > 9 files changed, 166 insertions(+), 4 deletions(-) > > create mode 100644 drivers/gpu/drm/i915/display/intel_privacy_screen.c > > create mode 100644 drivers/gpu/drm/i915/display/intel_privacy_screen.h > > > > diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makef= ile > > index 2587ea834f06..3589ebcf27bc 100644 > > --- a/drivers/gpu/drm/i915/Makefile > > +++ b/drivers/gpu/drm/i915/Makefile > > @@ -185,7 +185,8 @@ i915-y +=3D \ > > display/intel_tc.o > > i915-$(CONFIG_ACPI) +=3D \ > > display/intel_acpi.o \ > > - display/intel_opregion.o > > + display/intel_opregion.o \ > > + display/intel_privacy_screen.o > > Mmmh, wonder if there'll be non-ACPI based privacy screens. I guess we > can sort this out then. *shrug* > > > i915-$(CONFIG_DRM_FBDEV_EMULATION) +=3D \ > > display/intel_fbdev.o > > > > diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/= drm/i915/display/intel_atomic.c > > index d3fb75bb9eb1..378772d3449c 100644 > > --- a/drivers/gpu/drm/i915/display/intel_atomic.c > > +++ b/drivers/gpu/drm/i915/display/intel_atomic.c > > @@ -37,6 +37,7 @@ > > #include "intel_atomic.h" > > #include "intel_display_types.h" > > #include "intel_hdcp.h" > > +#include "intel_privacy_screen.h" > > #include "intel_sprite.h" > > > > /** > > @@ -57,11 +58,14 @@ int intel_digital_connector_atomic_get_property(str= uct drm_connector *connector, > > struct drm_i915_private *dev_priv =3D to_i915(dev); > > struct intel_digital_connector_state *intel_conn_state =3D > > to_intel_digital_connector_state(state); > > + struct intel_connector *intel_connector =3D to_intel_connector(co= nnector); > > > > if (property =3D=3D dev_priv->force_audio_property) > > *val =3D intel_conn_state->force_audio; > > else if (property =3D=3D dev_priv->broadcast_rgb_property) > > *val =3D intel_conn_state->broadcast_rgb; > > + else if (property =3D=3D intel_connector->privacy_screen_property= ) > > + *val =3D intel_conn_state->privacy_screen_status; > > else { > > DRM_DEBUG_ATOMIC("Unknown property [PROP:%d:%s]\n", > > property->base.id, property->name); > > @@ -89,15 +93,18 @@ int intel_digital_connector_atomic_set_property(str= uct drm_connector *connector, > > struct drm_i915_private *dev_priv =3D to_i915(dev); > > struct intel_digital_connector_state *intel_conn_state =3D > > to_intel_digital_connector_state(state); > > + struct intel_connector *intel_connector =3D to_intel_connector(co= nnector); > > > > if (property =3D=3D dev_priv->force_audio_property) { > > intel_conn_state->force_audio =3D val; > > return 0; > > - } > > - > > - if (property =3D=3D dev_priv->broadcast_rgb_property) { > > + } else if (property =3D=3D dev_priv->broadcast_rgb_property) { > > intel_conn_state->broadcast_rgb =3D val; > > return 0; > > + } else if (property =3D=3D intel_connector->privacy_screen_proper= ty) { > > + intel_privacy_screen_set_val(intel_connector, val); > > + intel_conn_state->privacy_screen_status =3D val; > > + return 0; > > } > > > > DRM_DEBUG_ATOMIC("Unknown property [PROP:%d:%s]\n", > > diff --git a/drivers/gpu/drm/i915/display/intel_connector.c b/drivers/g= pu/drm/i915/display/intel_connector.c > > index 308ec63207ee..3ccbf52aedf9 100644 > > --- a/drivers/gpu/drm/i915/display/intel_connector.c > > +++ b/drivers/gpu/drm/i915/display/intel_connector.c > > @@ -281,3 +281,38 @@ intel_attach_colorspace_property(struct drm_connec= tor *connector) > > drm_object_attach_property(&connector->base, > > connector->colorspace_property= , 0); > > } > > + > > +static const struct drm_prop_enum_list privacy_screen_enum[] =3D { > > + { PRIVACY_SCREEN_DISABLED, "Disabled" }, > > + { PRIVACY_SCREEN_ENABLED, "Enabled" }, > > +}; > > + > > +/** > > + * intel_attach_privacy_screen_property - > > + * create and attach the connecter's privacy-screen property. * > > + * @connector: connector for which to init the privacy-screen property > > + * > > + * This function creates and attaches the "privacy-screen" property to= the > > + * connector. Initial state of privacy-screen is set to disabled. > > + */ > > +void > > +intel_attach_privacy_screen_property(struct drm_connector *connector) > > +{ > > + struct intel_connector *intel_connector =3D to_intel_connector(co= nnector); > > + struct drm_property *prop; > > + > > + if (!intel_connector->privacy_screen_property) { > > + prop =3D drm_property_create_enum(connector->dev, > > + DRM_MODE_PROP_ENUM, > > + "privacy-screen", > > + privacy_screen_enum, > > + ARRAY_SIZE(privacy_screen_enu= m)); > > + if (!prop) > > + return; > > + > > + intel_connector->privacy_screen_property =3D prop; > > + } > > + > > + drm_object_attach_property(&connector->base, prop, > > + PRIVACY_SCREEN_DISABLED); > > +} > > I think this should be a drm core level property in drm_connector.[ch] > so that *all* drivers would use the same thing for privacy screens. Not > i915 specific. > > I think this is the biggest issue in the patch series. I actually would be happy to make it a drm_connector property, like I had in my original patch series. I changed it to i915 specific because it seemed to me based on the comments that the general sentiment is that anything to do with acpi should be in i915. Note that the privacy screen property essentially needs an ACPI handle to work on, so if I were to move the property into drm_connector, I'd likely rename the intel_privacy_screen* code to dem_privacy_screen* code, and it'll still operate on an ACPI handle (stored in drm_connector structure). The i915's job will then be to lookup that ACPI handle (because lookup requires display index) and populate it in drm_connector. Does this sound OK? > > > diff --git a/drivers/gpu/drm/i915/display/intel_connector.h b/drivers/g= pu/drm/i915/display/intel_connector.h > > index 93a7375c8196..61005f37a338 100644 > > --- a/drivers/gpu/drm/i915/display/intel_connector.h > > +++ b/drivers/gpu/drm/i915/display/intel_connector.h > > @@ -31,5 +31,6 @@ void intel_attach_force_audio_property(struct drm_con= nector *connector); > > void intel_attach_broadcast_rgb_property(struct drm_connector *connect= or); > > void intel_attach_aspect_ratio_property(struct drm_connector *connecto= r); > > void intel_attach_colorspace_property(struct drm_connector *connector)= ; > > +void intel_attach_privacy_screen_property(struct drm_connector *connec= tor); > > > > #endif /* __INTEL_CONNECTOR_H__ */ > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drive= rs/gpu/drm/i915/display/intel_display_types.h > > index c2706afc069b..83b8c98049a7 100644 > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h > > @@ -426,6 +426,9 @@ struct intel_connector { > > struct work_struct modeset_retry_work; > > > > struct intel_hdcp hdcp; > > + > > + /* Optional "privacy-screen" property for the connector panel */ > > + struct drm_property *privacy_screen_property; > > }; > > > > struct intel_digital_connector_state { > > @@ -433,6 +436,7 @@ struct intel_digital_connector_state { > > > > enum hdmi_force_audio force_audio; > > int broadcast_rgb; > > + enum intel_privacy_screen_status privacy_screen_status; > > }; > > > > #define to_intel_digital_connector_state(x) container_of(x, struct int= el_digital_connector_state, base) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/= i915/display/intel_dp.c > > index 4fac408a4299..1963e92404ba 100644 > > --- a/drivers/gpu/drm/i915/display/intel_dp.c > > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > > @@ -62,6 +62,7 @@ > > #include "intel_lspcon.h" > > #include "intel_lvds.h" > > #include "intel_panel.h" > > +#include "intel_privacy_screen.h" > > #include "intel_psr.h" > > #include "intel_sideband.h" > > #include "intel_tc.h" > > @@ -6358,6 +6359,10 @@ intel_dp_add_properties(struct intel_dp *intel_d= p, struct drm_connector *connect > > > > /* Lookup the ACPI node corresponding to the connector */ > > intel_connector_lookup_acpi_node(intel_connector); > > + > > + /* Check for integrated Privacy screen support */ > > + if (intel_privacy_screen_present(intel_connector)) > > + intel_attach_privacy_screen_property(connector); > > } > > } > > > > diff --git a/drivers/gpu/drm/i915/display/intel_privacy_screen.c b/driv= ers/gpu/drm/i915/display/intel_privacy_screen.c > > new file mode 100644 > > index 000000000000..4c422e38c51a > > --- /dev/null > > +++ b/drivers/gpu/drm/i915/display/intel_privacy_screen.c > > @@ -0,0 +1,70 @@ > > +// SPDX-License-Identifier: GPL-2.0-or-later > > Please read http://mid.mail-archive.com/CAKMK7uH-8+tbKsAoiChsxELEc_77RVVx= P2wapHWhqB+0Viifog@mail.gmail.com OK, I changed it to SPDX-License-Identifier: GPL-2.0 OR MIT > > > +/* > > + * Intel ACPI privacy screen code > > + * > > + * Copyright =C2=A9 2019 Google Inc. > > + */ > > + > > +#include > > + > > +#include "intel_privacy_screen.h" > > + > > +#define CONNECTOR_DSM_REVID 1 > > + > > +#define CONNECTOR_DSM_FN_PRIVACY_ENABLE 2 > > +#define CONNECTOR_DSM_FN_PRIVACY_DISABLE 3 > > + > > +static const guid_t drm_conn_dsm_guid =3D > > + GUID_INIT(0xC7033113, 0x8720, 0x4CEB, > > + 0x90, 0x90, 0x9D, 0x52, 0xB3, 0xE5, 0x2D, 0x73); > > + > > +/* Makes _DSM call to set privacy screen status */ > > +static void acpi_privacy_screen_call_dsm(acpi_handle conn_handle, u64 = func) > > +{ > > + union acpi_object *obj; > > + > > + obj =3D acpi_evaluate_dsm(conn_handle, &drm_conn_dsm_guid, > > + CONNECTOR_DSM_REVID, func, NULL); > > + if (!obj) { > > + DRM_DEBUG_DRIVER("failed to evaluate _DSM for fn %llx\n",= func); > > + return; > > + } > > + > > + ACPI_FREE(obj); > > +} > > + > > +void intel_privacy_screen_set_val(struct intel_connector *intel_connec= tor, > > + enum intel_privacy_screen_status val) > > Just name the parameter connector, not intel_connector. This throughout. Done. > > > +{ > > + acpi_handle acpi_handle =3D intel_connector->acpi_handle; > > + > > + if (!acpi_handle) > > + return; > > + > > + if (val =3D=3D PRIVACY_SCREEN_DISABLED) > > + acpi_privacy_screen_call_dsm(acpi_handle, > > + CONNECTOR_DSM_FN_PRIVACY_DIS= ABLE); > > + else if (val =3D=3D PRIVACY_SCREEN_ENABLED) > > + acpi_privacy_screen_call_dsm(acpi_handle, > > + CONNECTOR_DSM_FN_PRIVACY_ENA= BLE); > > else complain? > Done. > > +} > > + > > +bool intel_privacy_screen_present(struct intel_connector *intel_connec= tor) > > +{ > > + acpi_handle handle =3D intel_connector->acpi_handle; > > + > > + if (!handle) > > + return false; > > + > > + if (!acpi_check_dsm(handle, &drm_conn_dsm_guid, > > + CONNECTOR_DSM_REVID, > > + 1 << CONNECTOR_DSM_FN_PRIVACY_ENABLE | > > + 1 << CONNECTOR_DSM_FN_PRIVACY_DISABLE)) { > > + DRM_WARN("%s: Odd, connector ACPI node but no privacy scr= n?\n", > > + dev_name(intel_connector->base.dev->dev)); > > + return false; > > + } > > + DRM_DEV_INFO(intel_connector->base.dev->dev, > > + "supports privacy screen\n"); > > + return true; > > +} > > diff --git a/drivers/gpu/drm/i915/display/intel_privacy_screen.h b/driv= ers/gpu/drm/i915/display/intel_privacy_screen.h > > new file mode 100644 > > index 000000000000..212f73349a00 > > --- /dev/null > > +++ b/drivers/gpu/drm/i915/display/intel_privacy_screen.h > > @@ -0,0 +1,25 @@ > > +/* SPDX-License-Identifier: GPL-2.0-or-later */ > > +/* > > + * Copyright =C2=A9 2019 Google Inc. > > + */ > > + > > +#ifndef __DRM_PRIVACY_SCREEN_H__ > > +#define __DRM_PRIVACY_SCREEN_H__ > > + > > +#include "intel_display_types.h" > > + > > +#ifdef CONFIG_ACPI > > +bool intel_privacy_screen_present(struct intel_connector *intel_connec= tor); > > +void intel_privacy_screen_set_val(struct intel_connector *intel_connec= tor, > > + enum intel_privacy_screen_status val); > > +#else > > +bool intel_privacy_screen_present(struct intel_connector *intel_connec= tor); > > +{ > > + return false; > > +} > > +void intel_privacy_screen_set_val(struct intel_connector *intel_connec= tor, > > + enum intel_privacy_screen_status val) > > +{ } > > +#endif /* CONFIG_ACPI */ > > + > > +#endif /* __DRM_PRIVACY_SCREEN_H__ */ > > diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h > > index 469dc512cca3..cf08d5636363 100644 > > --- a/include/uapi/drm/i915_drm.h > > +++ b/include/uapi/drm/i915_drm.h > > @@ -2123,6 +2123,20 @@ struct drm_i915_query_engine_info { > > struct drm_i915_engine_info engines[]; > > }; > > > > +/** > > + * enum intel_privacy_screen_status - privacy_screen status > > + * > > + * This enum is used to track and control the state of the integrated = privacy > > + * screen present on some display panels, via the "privacy-screen" pro= perty. > > + * > > + * @PRIVACY_SCREEN_DISABLED: The privacy-screen on the panel is disabl= ed > > + * @PRIVACY_SCREEN_ENABLED: The privacy-screen on the panel is enable= d > > + **/ > > +enum intel_privacy_screen_status { > > + PRIVACY_SCREEN_DISABLED =3D 0, > > + PRIVACY_SCREEN_ENABLED =3D 1, > > +}; > > + > > The drm_property interface UAPI is based on the strings, *not* on the > values. Please move the enum out of uapi into the drm code. Oh, so we don't have to expose this to userspace? Understand, so I moved it to intel_display_types.h Thanks, Rajat. > > BR, > jani. > > > #if defined(__cplusplus) > > } > > #endif > > -- > Jani Nikula, Intel Open Source Graphics Center From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DCB6CC43603 for ; Fri, 6 Dec 2019 08:17:55 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B99EE2467A for ; Fri, 6 Dec 2019 08:17:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B99EE2467A Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BBBAE6EB37; Fri, 6 Dec 2019 08:17:35 +0000 (UTC) Received: from mail-lf1-x144.google.com (mail-lf1-x144.google.com [IPv6:2a00:1450:4864:20::144]) by gabe.freedesktop.org (Postfix) with ESMTPS id 22FDD6F62A for ; Thu, 5 Dec 2019 09:35:33 +0000 (UTC) Received: by mail-lf1-x144.google.com with SMTP id 15so1972881lfr.2 for ; Thu, 05 Dec 2019 01:35:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=xlBRhTw/jtQIcsHp5WmEd30ut2aD0xyE9yaT+wUTc3I=; b=CpYs/N9rUbK8AuyWEQHbQ+s1svtb//gLNu0Hq8BMioru18vWhoR0I+WZMk+oZL0Umf 7UsdK69ANfYffqtJ9EvfAJjOYx8OXLbQ2VovH17YQgyY0bR3DDXqPT3UZ0tnr4VxQXuE gdfhtdef+03tv8tjv7ZH3KoGKD0xkrErvhsKu2R3TPjbyTF4R57PWaQzh4sF/qKC+lNs 1qE2Aoc5m5DbL/X2/qexQ+SMqjXWayAxujsabdW8TvD7FPRXK7xpHrVt6vxzLHHnJuY4 rg1saQ8r+QP2HBE6cA1xinpdcTiM1boNGFx5lm8/9Ez3bUG9/XPwOk+qdx26pVZRgY0E 6+MQ== X-Gm-Message-State: APjAAAWNqDgswnq/wFJuCN2/4sPI41ZB0ksEaoZ8e5Hw79xsnBd60S2i KYiuF2GVmwWsYGILblGUXjG6pmCIYL9kIXPi8hbskg== X-Google-Smtp-Source: APXvYqxrfnFijgMewMwGGAyu6M2ppVO81Ru7vemD6fccdEP1qKQwpHm3knUpDelBbZnkhe5FhD+wd3Bf8X1vkMcSuF8= X-Received: by 2002:ac2:4244:: with SMTP id m4mr4610896lfl.85.1575538531007; Thu, 05 Dec 2019 01:35:31 -0800 (PST) MIME-Version: 1.0 References: <20191023001206.15741-1-rajatja@google.com> <20191104194147.185642-1-rajatja@google.com> <20191104194147.185642-3-rajatja@google.com> <87r222wpvv.fsf@intel.com> In-Reply-To: <87r222wpvv.fsf@intel.com> From: Rajat Jain Date: Thu, 5 Dec 2019 01:34:53 -0800 Message-ID: Subject: Re: [PATCH v2 3/3] drm/i915: Add support for integrated privacy screens To: Jani Nikula X-Mailman-Approved-At: Fri, 06 Dec 2019 08:17:34 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=xlBRhTw/jtQIcsHp5WmEd30ut2aD0xyE9yaT+wUTc3I=; b=md40lg4+8ino9LXdrRZD9ROuX9NvQbPOGvNZ/eVcceTDIhtdLWHy9ECt5z1dQAD4MM DdH87tABqmZ3T0s9VvKZuw2d48mq5SaZVrPzQ48tNJ1OpKH6wXWvLIPK2FThEc7d7NnG df2dTl4M0F5i6I7nAScI9mhQo2yFc8PapwURaegnN4Eq8iHNfJqzHsFE+pExVO0BQzeF 3qtDe7gefJwITWPwQKgDCOyGtrXiPMs4P0FfR/glCJp/gubzKE7/YksaEdjJv1HQDO6M w5jdH6pM9zDLm/aB8bHU9rUW2s1DqemW8bbBVh9gnaamzATpoaEPrIeTIhA6GFEGfdn7 EaDw== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sean Paul , David Airlie , dri-devel , Thierry Reding , Daniel Thompson , Jonathan Corbet , Jesse Barnes , Rajat Jain , intel-gfx@lists.freedesktop.org, Mat King , =?UTF-8?Q?Jos=C3=A9_Roberto_de_Souza?= , Rodrigo Vivi , Sean Paul , Duncan Laurie , Greg Kroah-Hartman , Linux Kernel Mailing List , Pavel Machek Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gV2VkLCBOb3YgMjAsIDIwMTkgYXQgNzowNCBBTSBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA bGludXguaW50ZWwuY29tPiB3cm90ZToKPgo+IE9uIE1vbiwgMDQgTm92IDIwMTksIFJhamF0IEph aW4gPHJhamF0amFAZ29vZ2xlLmNvbT4gd3JvdGU6Cj4gPiBDZXJ0YWluIGxhcHRvcHMgbm93IGNv bWUgd2l0aCBwYW5lbHMgdGhhdCBoYXZlIGludGVncmF0ZWQgcHJpdmFjeQo+ID4gc2NyZWVucyBv biB0aGVtLiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc3VjaCBwYW5lbHMgYnkgYWRkaW5n Cj4gPiBhIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5IHRvIHRoZSBpbnRlbF9jb25uZWN0b3IgZm9y IHRoZSBwYW5lbCwgdGhhdAo+ID4gdGhlIHVzZXJzcGFjZSBjYW4gdGhlbiB1c2UgdG8gY29udHJv bCBhbmQgY2hlY2sgdGhlIHN0YXR1cy4KPiA+Cj4gPiBJZGVudGlmeWluZyB0aGUgcHJlc2VuY2Ug b2YgcHJpdmFjeSBzY3JlZW4sIGFuZCBjb250cm9sbGluZyBpdCwgaXMgZG9uZQo+ID4gdmlhIEFD UEkgX0RTTSBtZXRob2RzLgo+ID4KPiA+IEN1cnJlbnRseSwgdGhpcyBpcyBkb25lIG9ubHkgZm9y IHRoZSBJbnRlbCBkaXNwbGF5IHBvcnRzLiBCdXQgaW4gZnV0dXJlLAo+ID4gdGhpcyBjYW4gYmUg ZG9uZSBmb3IgYW55IG90aGVyIHBvcnRzIGlmIHRoZSBoYXJkd2FyZSBiZWNvbWVzIGF2YWlsYWJs ZQo+ID4gKGUuZy4gZXh0ZXJuYWwgbW9uaXRvcnMgc3VwcG9ydGluZyBpbnRlZ3JhdGVkIHByaXZh Y3kgc2NyZWVucz8pLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IFJhamF0IEphaW4gPHJhamF0amFA Z29vZ2xlLmNvbT4KPiA+IENoYW5nZS1JZDogSWM5ZmYwN2ZjNGE1MDc5N2QyZDBkZmI5MTlmMTFh YTA4MjFhNGI1NDgKPiA+IC0tLQo+ID4gdjI6IEZvcm1lZCBieSBzcGxpdHRpbmcgdGhlIG9yaWdp bmFsIHBhdGNoIGludG8gbXVsdGlwbGUgcGF0Y2hlcy4KPiA+ICAgICAtIEFsbCBjb2RlIGhhcyBi ZWVuIG1vdmVkIGludG8gaTkxNSBub3cuCj4gPiAgICAgLSBQcml2YWN5IHNjcmVlbiBpcyBhIGk5 MTUgcHJvcGVydHkKPiA+ICAgICAtIEhhdmUgYSBsb2NhbCBzdGF0ZSB2YXJpYWJsZSB0byBzdG9y ZSB0aGUgcHJ2YWN5IHNjcmVlbi4gRG9uJ3QgcmVhZAo+ID4gICAgICAgaXQgZnJvbSBoYXJkd2Fy ZS4KPiA+Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAg IHwgIDMgKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5j ICAgfCAxMyArKystCj4gPiAgLi4uL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nvbm5lY3Rv ci5jICAgIHwgMzUgKysrKysrKysrKwo+ID4gIC4uLi9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jb25uZWN0b3IuaCAgICB8ICAxICsKPiA+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3R5cGVzLmggICAgfCAgNCArKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYyAgICAgICB8ICA1ICsrCj4gPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfcHJpdmFjeV9zY3JlZW4uYyAgIHwgNzAgKysrKysrKysrKysrKysrKysrKwo+ID4gIC4uLi9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3ByaXZhY3lfc2NyZWVuLmggICB8IDI1ICsrKysrKysKPiA+ ICBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgICAgICAgfCAxNCArKysr Cj4gPiAgOSBmaWxlcyBjaGFuZ2VkLCAxNjYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9wcml2YWN5X3NjcmVlbi5jCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHJpdmFjeV9zY3JlZW4uaAo+ID4KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCj4gPiBpbmRleCAyNTg3ZWE4MzRmMDYuLjM1ODllYmNmMjdiYyAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+ID4gQEAgLTE4NSw3ICsxODUsOCBAQCBpOTE1LXkgKz0gXAo+ID4g ICAgICAgZGlzcGxheS9pbnRlbF90Yy5vCj4gPiAgaTkxNS0kKENPTkZJR19BQ1BJKSArPSBcCj4g PiAgICAgICBkaXNwbGF5L2ludGVsX2FjcGkubyBcCj4gPiAtICAgICBkaXNwbGF5L2ludGVsX29w cmVnaW9uLm8KPiA+ICsgICAgIGRpc3BsYXkvaW50ZWxfb3ByZWdpb24ubyBcCj4gPiArICAgICBk aXNwbGF5L2ludGVsX3ByaXZhY3lfc2NyZWVuLm8KPgo+IE1tbWgsIHdvbmRlciBpZiB0aGVyZSds bCBiZSBub24tQUNQSSBiYXNlZCBwcml2YWN5IHNjcmVlbnMuIEkgZ3Vlc3Mgd2UKPiBjYW4gc29y dCB0aGlzIG91dCB0aGVuLiAqc2hydWcqCj4KPiA+ICBpOTE1LSQoQ09ORklHX0RSTV9GQkRFVl9F TVVMQVRJT04pICs9IFwKPiA+ICAgICAgIGRpc3BsYXkvaW50ZWxfZmJkZXYubwo+ID4KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+ID4gaW5kZXggZDNm Yjc1YmI5ZWIxLi4zNzg3NzJkMzQ0OWMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gPiBAQCAtMzcsNiArMzcsNyBAQAo+ID4gICNpbmNs dWRlICJpbnRlbF9hdG9taWMuaCIKPiA+ICAjaW5jbHVkZSAiaW50ZWxfZGlzcGxheV90eXBlcy5o Igo+ID4gICNpbmNsdWRlICJpbnRlbF9oZGNwLmgiCj4gPiArI2luY2x1ZGUgImludGVsX3ByaXZh Y3lfc2NyZWVuLmgiCj4gPiAgI2luY2x1ZGUgImludGVsX3Nwcml0ZS5oIgo+ID4KPiA+ICAvKioK PiA+IEBAIC01NywxMSArNTgsMTQgQEAgaW50IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21p Y19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAgICAg IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAg ICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfY29ubl9zdGF0 ZSA9Cj4gPiAgICAgICAgICAgICAgIHRvX2ludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlKHN0 YXRlKTsKPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9 IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4KPiA+ICAgICAgIGlmIChwcm9wZXJ0 eSA9PSBkZXZfcHJpdi0+Zm9yY2VfYXVkaW9fcHJvcGVydHkpCj4gPiAgICAgICAgICAgICAgICp2 YWwgPSBpbnRlbF9jb25uX3N0YXRlLT5mb3JjZV9hdWRpbzsKPiA+ICAgICAgIGVsc2UgaWYgKHBy b3BlcnR5ID09IGRldl9wcml2LT5icm9hZGNhc3RfcmdiX3Byb3BlcnR5KQo+ID4gICAgICAgICAg ICAgICAqdmFsID0gaW50ZWxfY29ubl9zdGF0ZS0+YnJvYWRjYXN0X3JnYjsKPiA+ICsgICAgIGVs c2UgaWYgKHByb3BlcnR5ID09IGludGVsX2Nvbm5lY3Rvci0+cHJpdmFjeV9zY3JlZW5fcHJvcGVy dHkpCj4gPiArICAgICAgICAgICAgICp2YWwgPSBpbnRlbF9jb25uX3N0YXRlLT5wcml2YWN5X3Nj cmVlbl9zdGF0dXM7Cj4gPiAgICAgICBlbHNlIHsKPiA+ICAgICAgICAgICAgICAgRFJNX0RFQlVH X0FUT01JQygiVW5rbm93biBwcm9wZXJ0eSBbUFJPUDolZDolc11cbiIsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHktPmJhc2UuaWQsIHByb3BlcnR5LT5uYW1lKTsK PiA+IEBAIC04OSwxNSArOTMsMTggQEAgaW50IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21p Y19zZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAgICAg IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAg ICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfY29ubl9zdGF0 ZSA9Cj4gPiAgICAgICAgICAgICAgIHRvX2ludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlKHN0 YXRlKTsKPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9 IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4KPiA+ICAgICAgIGlmIChwcm9wZXJ0 eSA9PSBkZXZfcHJpdi0+Zm9yY2VfYXVkaW9fcHJvcGVydHkpIHsKPiA+ICAgICAgICAgICAgICAg aW50ZWxfY29ubl9zdGF0ZS0+Zm9yY2VfYXVkaW8gPSB2YWw7Cj4gPiAgICAgICAgICAgICAgIHJl dHVybiAwOwo+ID4gLSAgICAgfQo+ID4gLQo+ID4gLSAgICAgaWYgKHByb3BlcnR5ID09IGRldl9w cml2LT5icm9hZGNhc3RfcmdiX3Byb3BlcnR5KSB7Cj4gPiArICAgICB9IGVsc2UgaWYgKHByb3Bl cnR5ID09IGRldl9wcml2LT5icm9hZGNhc3RfcmdiX3Byb3BlcnR5KSB7Cj4gPiAgICAgICAgICAg ICAgIGludGVsX2Nvbm5fc3RhdGUtPmJyb2FkY2FzdF9yZ2IgPSB2YWw7Cj4gPiAgICAgICAgICAg ICAgIHJldHVybiAwOwo+ID4gKyAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9jb25u ZWN0b3ItPnByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KSB7Cj4gPiArICAgICAgICAgICAgIGludGVs X3ByaXZhY3lfc2NyZWVuX3NldF92YWwoaW50ZWxfY29ubmVjdG9yLCB2YWwpOwo+ID4gKyAgICAg ICAgICAgICBpbnRlbF9jb25uX3N0YXRlLT5wcml2YWN5X3NjcmVlbl9zdGF0dXMgPSB2YWw7Cj4g PiArICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gICAgICAgfQo+ID4KPiA+ICAgICAgIERSTV9E RUJVR19BVE9NSUMoIlVua25vd24gcHJvcGVydHkgW1BST1A6JWQ6JXNdXG4iLAo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29ubmVjdG9yLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nvbm5lY3Rvci5jCj4gPiBpbmRleCAz MDhlYzYzMjA3ZWUuLjNjY2JmNTJhZWRmOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29ubmVjdG9yLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29ubmVjdG9yLmMKPiA+IEBAIC0yODEsMyArMjgxLDM4IEBA IGludGVsX2F0dGFjaF9jb2xvcnNwYWNlX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCj4gPiAgICAgICAgICAgICAgIGRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZj b25uZWN0b3ItPmJhc2UsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbm5lY3Rvci0+Y29sb3JzcGFjZV9wcm9wZXJ0eSwgMCk7Cj4gPiAgfQo+ID4gKwo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IHByaXZhY3lfc2NyZWVuX2Vu dW1bXSA9IHsKPiA+ICsgICAgIHsgUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQsICJEaXNhYmxlZCIg fSwKPiA+ICsgICAgIHsgUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCwgIkVuYWJsZWQiIH0sCj4gPiAr fTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBpbnRlbF9hdHRhY2hfcHJpdmFjeV9zY3JlZW5fcHJv cGVydHkgLQo+ID4gKyAqICAgICBjcmVhdGUgYW5kIGF0dGFjaCB0aGUgY29ubmVjdGVyJ3MgcHJp dmFjeS1zY3JlZW4gcHJvcGVydHkuICoKPiA+ICsgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgZm9y IHdoaWNoIHRvIGluaXQgdGhlIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5Cj4gPiArICoKPiA+ICsg KiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGF0dGFjaGVzIHRoZSAicHJpdmFjeS1zY3JlZW4i IHByb3BlcnR5IHRvIHRoZQo+ID4gKyAqIGNvbm5lY3Rvci4gSW5pdGlhbCBzdGF0ZSBvZiBwcml2 YWN5LXNjcmVlbiBpcyBzZXQgdG8gZGlzYWJsZWQuCj4gPiArICovCj4gPiArdm9pZAo+ID4gK2lu dGVsX2F0dGFjaF9wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVs X2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4gKyAgICAgc3Ry dWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsKPiA+ICsKPiA+ICsgICAgIGlmICghaW50ZWxfY29ubmVj dG9yLT5wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eSkgewo+ID4gKyAgICAgICAgICAgICBwcm9wID0g ZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGNvbm5lY3Rvci0+ZGV2LAo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX1BST1BfRU5VTSwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmFjeS1z Y3JlZW4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByaXZhY3lfc2NyZWVuX2VudW0sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBUlJBWV9TSVpFKHByaXZhY3lfc2NyZWVuX2VudW0pKTsKPiA+ICsgICAgICAg ICAgICAgaWYgKCFwcm9wKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKPiA+ICsK PiA+ICsgICAgICAgICAgICAgaW50ZWxfY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9wcm9wZXJ0 eSA9IHByb3A7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBkcm1fb2JqZWN0X2F0dGFjaF9w cm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLCBwcm9wLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQpOwo+ID4gK30KPgo+IEkgdGhpbmsg dGhpcyBzaG91bGQgYmUgYSBkcm0gY29yZSBsZXZlbCBwcm9wZXJ0eSBpbiBkcm1fY29ubmVjdG9y LltjaF0KPiBzbyB0aGF0ICphbGwqIGRyaXZlcnMgd291bGQgdXNlIHRoZSBzYW1lIHRoaW5nIGZv ciBwcml2YWN5IHNjcmVlbnMuIE5vdAo+IGk5MTUgc3BlY2lmaWMuCj4KPiBJIHRoaW5rIHRoaXMg aXMgdGhlIGJpZ2dlc3QgaXNzdWUgaW4gdGhlIHBhdGNoIHNlcmllcy4KCkkgYWN0dWFsbHkgd291 bGQgYmUgaGFwcHkgdG8gbWFrZSBpdCBhIGRybV9jb25uZWN0b3IgcHJvcGVydHksIGxpa2UgSQpo YWQgaW4gbXkgb3JpZ2luYWwgcGF0Y2ggc2VyaWVzLiBJIGNoYW5nZWQgaXQgdG8gaTkxNSBzcGVj aWZpYyBiZWNhdXNlCml0IHNlZW1lZCB0byBtZSBiYXNlZCBvbiB0aGUgY29tbWVudHMgdGhhdCB0 aGUgZ2VuZXJhbCBzZW50aW1lbnQgaXMKdGhhdCBhbnl0aGluZyB0byBkbyB3aXRoIGFjcGkgc2hv dWxkIGJlIGluIGk5MTUuCgpOb3RlIHRoYXQgdGhlIHByaXZhY3kgc2NyZWVuIHByb3BlcnR5IGVz c2VudGlhbGx5IG5lZWRzIGFuIEFDUEkgaGFuZGxlCnRvIHdvcmsgb24sIHNvIGlmIEkgd2VyZSB0 byBtb3ZlIHRoZSBwcm9wZXJ0eSBpbnRvIGRybV9jb25uZWN0b3IsIEknZApsaWtlbHkgcmVuYW1l IHRoZSBpbnRlbF9wcml2YWN5X3NjcmVlbiogY29kZSB0byBkZW1fcHJpdmFjeV9zY3JlZW4qCmNv ZGUsIGFuZCBpdCdsbCBzdGlsbCBvcGVyYXRlIG9uIGFuIEFDUEkgaGFuZGxlIChzdG9yZWQgaW4K ZHJtX2Nvbm5lY3RvciBzdHJ1Y3R1cmUpLiBUaGUgaTkxNSdzIGpvYiB3aWxsIHRoZW4gYmUgdG8g bG9va3VwIHRoYXQKQUNQSSBoYW5kbGUgKGJlY2F1c2UgbG9va3VwIHJlcXVpcmVzIGRpc3BsYXkg aW5kZXgpIGFuZCBwb3B1bGF0ZSBpdCBpbgpkcm1fY29ubmVjdG9yLiBEb2VzIHRoaXMgc291bmQg T0s/Cgo+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jb25uZWN0b3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29ubmVj dG9yLmgKPiA+IGluZGV4IDkzYTczNzVjODE5Ni4uNjEwMDVmMzdhMzM4IDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb25uZWN0b3IuaAo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb25uZWN0b3IuaAo+ID4gQEAg LTMxLDUgKzMxLDYgQEAgdm9pZCBpbnRlbF9hdHRhY2hfZm9yY2VfYXVkaW9fcHJvcGVydHkoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiAgdm9pZCBpbnRlbF9hdHRhY2hfYnJv YWRjYXN0X3JnYl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ ICB2b2lkIGludGVsX2F0dGFjaF9hc3BlY3RfcmF0aW9fcHJvcGVydHkoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiAgdm9pZCBpbnRlbF9hdHRhY2hfY29sb3JzcGFjZV9wcm9w ZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ICt2b2lkIGludGVsX2F0 dGFjaF9wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKTsKPiA+Cj4gPiAgI2VuZGlmIC8qIF9fSU5URUxfQ09OTkVDVE9SX0hfXyAqLwo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBl cy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgK PiA+IGluZGV4IGMyNzA2YWZjMDY5Yi4uODNiOGM5ODA0OWE3IDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gPiBA QCAtNDI2LDYgKzQyNiw5IEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0b3Igewo+ID4gICAgICAgc3Ry dWN0IHdvcmtfc3RydWN0IG1vZGVzZXRfcmV0cnlfd29yazsKPiA+Cj4gPiAgICAgICBzdHJ1Y3Qg aW50ZWxfaGRjcCBoZGNwOwo+ID4gKwo+ID4gKyAgICAgLyogT3B0aW9uYWwgInByaXZhY3ktc2Ny ZWVuIiBwcm9wZXJ0eSBmb3IgdGhlIGNvbm5lY3RvciBwYW5lbCAqLwo+ID4gKyAgICAgc3RydWN0 IGRybV9wcm9wZXJ0eSAqcHJpdmFjeV9zY3JlZW5fcHJvcGVydHk7Cj4gPiAgfTsKPiA+Cj4gPiAg c3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlIHsKPiA+IEBAIC00MzMsNiArNDM2 LDcgQEAgc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlIHsKPiA+Cj4gPiAgICAg ICBlbnVtIGhkbWlfZm9yY2VfYXVkaW8gZm9yY2VfYXVkaW87Cj4gPiAgICAgICBpbnQgYnJvYWRj YXN0X3JnYjsKPiA+ICsgICAgIGVudW0gaW50ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIHByaXZh Y3lfc2NyZWVuX3N0YXR1czsKPiA+ICB9Owo+ID4KPiA+ICAjZGVmaW5lIHRvX2ludGVsX2RpZ2l0 YWxfY29ubmVjdG9yX3N0YXRlKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9jb25uZWN0b3Jfc3RhdGUsIGJhc2UpCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kcC5jCj4gPiBpbmRleCA0ZmFjNDA4YTQyOTkuLjE5NjNlOTI0MDRiYSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4gPiBAQCAtNjIsNiArNjIs NyBAQAo+ID4gICNpbmNsdWRlICJpbnRlbF9sc3Bjb24uaCIKPiA+ICAjaW5jbHVkZSAiaW50ZWxf bHZkcy5oIgo+ID4gICNpbmNsdWRlICJpbnRlbF9wYW5lbC5oIgo+ID4gKyNpbmNsdWRlICJpbnRl bF9wcml2YWN5X3NjcmVlbi5oIgo+ID4gICNpbmNsdWRlICJpbnRlbF9wc3IuaCIKPiA+ICAjaW5j bHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKPiA+ICAjaW5jbHVkZSAiaW50ZWxfdGMuaCIKPiA+IEBA IC02MzU4LDYgKzYzNTksMTAgQEAgaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3QKPiA+Cj4gPiAgICAg ICAgICAgICAgIC8qIExvb2t1cCB0aGUgQUNQSSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNv bm5lY3RvciAqLwo+ID4gICAgICAgICAgICAgICBpbnRlbF9jb25uZWN0b3JfbG9va3VwX2FjcGlf bm9kZShpbnRlbF9jb25uZWN0b3IpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAvKiBDaGVjayBm b3IgaW50ZWdyYXRlZCBQcml2YWN5IHNjcmVlbiBzdXBwb3J0ICovCj4gPiArICAgICAgICAgICAg IGlmIChpbnRlbF9wcml2YWN5X3NjcmVlbl9wcmVzZW50KGludGVsX2Nvbm5lY3RvcikpCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgaW50ZWxfYXR0YWNoX3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5 KGNvbm5lY3Rvcik7Cj4gPiAgICAgICB9Cj4gPiAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3ByaXZhY3lfc2NyZWVuLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3ByaXZhY3lfc2NyZWVuLmMKPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRjNDIyZTM4YzUxYQo+ID4gLS0t IC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9w cml2YWN5X3NjcmVlbi5jCj4gPiBAQCAtMCwwICsxLDcwIEBACj4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKPgo+IFBsZWFzZSByZWFkIGh0dHA6Ly9taWQu bWFpbC1hcmNoaXZlLmNvbS9DQUtNSzd1SC04K3RiS3NBb2lDaHN4RUxFY183N1JWVnhQMndhcEhX aHFCKzBWaWlmb2dAbWFpbC5nbWFpbC5jb20KCk9LLCBJIGNoYW5nZWQgaXQgdG8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCgoKPgo+ID4gKy8qCj4gPiArICogSW50ZWwg QUNQSSBwcml2YWN5IHNjcmVlbiBjb2RlCj4gPiArICoKPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAx OSBHb29nbGUgSW5jLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+ Cj4gPiArCj4gPiArI2luY2x1ZGUgImludGVsX3ByaXZhY3lfc2NyZWVuLmgiCj4gPiArCj4gPiAr I2RlZmluZSBDT05ORUNUT1JfRFNNX1JFVklEIDEKPiA+ICsKPiA+ICsjZGVmaW5lIENPTk5FQ1RP Ul9EU01fRk5fUFJJVkFDWV9FTkFCTEUgICAgICAgICAgICAgIDIKPiA+ICsjZGVmaW5lIENPTk5F Q1RPUl9EU01fRk5fUFJJVkFDWV9ESVNBQkxFICAgICAgICAgICAgIDMKPiA+ICsKPiA+ICtzdGF0 aWMgY29uc3QgZ3VpZF90IGRybV9jb25uX2RzbV9ndWlkID0KPiA+ICsgICAgIEdVSURfSU5JVCgw eEM3MDMzMTEzLCAweDg3MjAsIDB4NENFQiwKPiA+ICsgICAgICAgICAgICAgICAweDkwLCAweDkw LCAweDlELCAweDUyLCAweEIzLCAweEU1LCAweDJELCAweDczKTsKPiA+ICsKPiA+ICsvKiBNYWtl cyBfRFNNIGNhbGwgdG8gc2V0IHByaXZhY3kgc2NyZWVuIHN0YXR1cyAqLwo+ID4gK3N0YXRpYyB2 b2lkIGFjcGlfcHJpdmFjeV9zY3JlZW5fY2FsbF9kc20oYWNwaV9oYW5kbGUgY29ubl9oYW5kbGUs IHU2NCBmdW5jKQo+ID4gK3sKPiA+ICsgICAgIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmo7Cj4gPiAr Cj4gPiArICAgICBvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShjb25uX2hhbmRsZSwgJmRybV9jb25u X2RzbV9ndWlkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OTkVDVE9SX0RT TV9SRVZJRCwgZnVuYywgTlVMTCk7Cj4gPiArICAgICBpZiAoIW9iaikgewo+ID4gKyAgICAgICAg ICAgICBEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gZXZhbHVhdGUgX0RTTSBmb3IgZm4gJWxs eFxuIiwgZnVuYyk7Cj4gPiArICAgICAgICAgICAgIHJldHVybjsKPiA+ICsgICAgIH0KPiA+ICsK PiA+ICsgICAgIEFDUElfRlJFRShvYmopOwo+ID4gK30KPiA+ICsKPiA+ICt2b2lkIGludGVsX3By aXZhY3lfc2NyZWVuX3NldF92YWwoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVj dG9yLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGludGVsX3ByaXZh Y3lfc2NyZWVuX3N0YXR1cyB2YWwpCj4KPiBKdXN0IG5hbWUgdGhlIHBhcmFtZXRlciBjb25uZWN0 b3IsIG5vdCBpbnRlbF9jb25uZWN0b3IuIFRoaXMgdGhyb3VnaG91dC4KCkRvbmUuCgo+Cj4gPiAr ewo+ID4gKyAgICAgYWNwaV9oYW5kbGUgYWNwaV9oYW5kbGUgPSBpbnRlbF9jb25uZWN0b3ItPmFj cGlfaGFuZGxlOwo+ID4gKwo+ID4gKyAgICAgaWYgKCFhY3BpX2hhbmRsZSkKPiA+ICsgICAgICAg ICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgaWYgKHZhbCA9PSBQUklWQUNZX1NDUkVFTl9E SVNBQkxFRCkKPiA+ICsgICAgICAgICAgICAgYWNwaV9wcml2YWN5X3NjcmVlbl9jYWxsX2RzbShh Y3BpX2hhbmRsZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDT05ORUNUT1JfRFNNX0ZOX1BSSVZBQ1lfRElTQUJMRSk7Cj4gPiArICAgICBlbHNlIGlmICh2 YWwgPT0gUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCkKPiA+ICsgICAgICAgICAgICAgYWNwaV9wcml2 YWN5X3NjcmVlbl9jYWxsX2RzbShhY3BpX2hhbmRsZSwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDT05ORUNUT1JfRFNNX0ZOX1BSSVZBQ1lfRU5BQkxFKTsK Pgo+IGVsc2UgY29tcGxhaW4/Cj4KCkRvbmUuCgo+ID4gK30KPiA+ICsKPiA+ICtib29sIGludGVs X3ByaXZhY3lfc2NyZWVuX3ByZXNlbnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKQo+ID4gK3sKPiA+ICsgICAgIGFjcGlfaGFuZGxlIGhhbmRsZSA9IGludGVsX2Nvbm5l Y3Rvci0+YWNwaV9oYW5kbGU7Cj4gPiArCj4gPiArICAgICBpZiAoIWhhbmRsZSkKPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKyAgICAgaWYgKCFhY3BpX2NoZWNrX2Rz bShoYW5kbGUsICZkcm1fY29ubl9kc21fZ3VpZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgQ09OTkVDVE9SX0RTTV9SRVZJRCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSA8 PCBDT05ORUNUT1JfRFNNX0ZOX1BSSVZBQ1lfRU5BQkxFIHwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgMSA8PCBDT05ORUNUT1JfRFNNX0ZOX1BSSVZBQ1lfRElTQUJMRSkpIHsKPiA+ICsg ICAgICAgICAgICAgRFJNX1dBUk4oIiVzOiBPZGQsIGNvbm5lY3RvciBBQ1BJIG5vZGUgYnV0IG5v IHByaXZhY3kgc2Nybj9cbiIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKGlu dGVsX2Nvbm5lY3Rvci0+YmFzZS5kZXYtPmRldikpOwo+ID4gKyAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Cj4gPiArICAgICB9Cj4gPiArICAgICBEUk1fREVWX0lORk8oaW50ZWxfY29ubmVjdG9y LT5iYXNlLmRldi0+ZGV2LAo+ID4gKyAgICAgICAgICAgICAgICAgICJzdXBwb3J0cyBwcml2YWN5 IHNjcmVlblxuIik7Cj4gPiArICAgICByZXR1cm4gdHJ1ZTsKPiA+ICt9Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wcml2YWN5X3NjcmVlbi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wcml2YWN5X3NjcmVlbi5oCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yMTJmNzMzNDlhMDAK PiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfcHJpdmFjeV9zY3JlZW4uaAo+ID4gQEAgLTAsMCArMSwyNSBAQAo+ID4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICovCj4gPiArLyoKPiA+ICsgKiBD b3B5cmlnaHQgwqkgMjAxOSBHb29nbGUgSW5jLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpZm5kZWYg X19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9fCj4gPiArI2RlZmluZSBfX0RSTV9QUklWQUNZX1NDUkVF Tl9IX18KPiA+ICsKPiA+ICsjaW5jbHVkZSAiaW50ZWxfZGlzcGxheV90eXBlcy5oIgo+ID4gKwo+ ID4gKyNpZmRlZiBDT05GSUdfQUNQSQo+ID4gK2Jvb2wgaW50ZWxfcHJpdmFjeV9zY3JlZW5fcHJl c2VudChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpOwo+ID4gK3ZvaWQg aW50ZWxfcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRl bF9jb25uZWN0b3IsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW50 ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIHZhbCk7Cj4gPiArI2Vsc2UKPiA+ICtib29sIGludGVs X3ByaXZhY3lfc2NyZWVuX3ByZXNlbnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKTsKPiA+ICt7Cj4gPiArICAgICByZXR1cm4gZmFsc2U7Cj4gPiArfQo+ID4gK3ZvaWQg aW50ZWxfcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRl bF9jb25uZWN0b3IsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW50 ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIHZhbCkKPiA+ICt7IH0KPiA+ICsjZW5kaWYgLyogQ09O RklHX0FDUEkgKi8KPiA+ICsKPiA+ICsjZW5kaWYgLyogX19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9f ICovCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCj4gPiBpbmRleCA0NjlkYzUxMmNjYTMuLmNmMDhkNTYzNjM2 MyAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ID4gKysrIGIv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gPiBAQCAtMjEyMyw2ICsyMTIzLDIwIEBAIHN0 cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyB7Cj4gPiAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZW5naW5lX2luZm8gZW5naW5lc1tdOwo+ID4gIH07Cj4gPgo+ID4gKy8qKgo+ID4gKyAqIGVu dW0gaW50ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIC0gcHJpdmFjeV9zY3JlZW4gc3RhdHVzCj4g PiArICoKPiA+ICsgKiBUaGlzIGVudW0gaXMgdXNlZCB0byB0cmFjayBhbmQgY29udHJvbCB0aGUg c3RhdGUgb2YgdGhlIGludGVncmF0ZWQgcHJpdmFjeQo+ID4gKyAqIHNjcmVlbiBwcmVzZW50IG9u IHNvbWUgZGlzcGxheSBwYW5lbHMsIHZpYSB0aGUgInByaXZhY3ktc2NyZWVuIiBwcm9wZXJ0eS4K PiA+ICsgKgo+ID4gKyAqIEBQUklWQUNZX1NDUkVFTl9ESVNBQkxFRDogVGhlIHByaXZhY3ktc2Ny ZWVuIG9uIHRoZSBwYW5lbCBpcyBkaXNhYmxlZAo+ID4gKyAqIEBQUklWQUNZX1NDUkVFTl9FTkFC TEVEOiAgVGhlIHByaXZhY3ktc2NyZWVuIG9uIHRoZSBwYW5lbCBpcyBlbmFibGVkCj4gPiArICoq Lwo+ID4gK2VudW0gaW50ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIHsKPiA+ICsgICAgIFBSSVZB Q1lfU0NSRUVOX0RJU0FCTEVEID0gMCwKPiA+ICsgICAgIFBSSVZBQ1lfU0NSRUVOX0VOQUJMRUQg PSAxLAo+ID4gK307Cj4gPiArCj4KPiBUaGUgZHJtX3Byb3BlcnR5IGludGVyZmFjZSBVQVBJIGlz IGJhc2VkIG9uIHRoZSBzdHJpbmdzLCAqbm90KiBvbiB0aGUKPiB2YWx1ZXMuIFBsZWFzZSBtb3Zl IHRoZSBlbnVtIG91dCBvZiB1YXBpIGludG8gdGhlIGRybSBjb2RlLgoKT2gsIHNvIHdlIGRvbid0 IGhhdmUgdG8gZXhwb3NlIHRoaXMgdG8gdXNlcnNwYWNlPyBVbmRlcnN0YW5kLCBzbyBJCm1vdmVk IGl0IHRvIGludGVsX2Rpc3BsYXlfdHlwZXMuaAoKVGhhbmtzLAoKUmFqYXQuCgoKPgo+IEJSLAo+ IGphbmkuCj4KPiA+ICAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKPiA+ICB9Cj4gPiAgI2VuZGlm Cj4KPiAtLQo+IEphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21B7BC43603 for ; Thu, 5 Dec 2019 23:30:20 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F2F7622525 for ; Thu, 5 Dec 2019 23:30:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F2F7622525 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4546E6F935; Thu, 5 Dec 2019 23:30:15 +0000 (UTC) Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by gabe.freedesktop.org (Postfix) with ESMTPS id 369C46F62D for ; Thu, 5 Dec 2019 09:35:33 +0000 (UTC) Received: by mail-lf1-x142.google.com with SMTP id c9so1444055lfi.6 for ; Thu, 05 Dec 2019 01:35:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=xlBRhTw/jtQIcsHp5WmEd30ut2aD0xyE9yaT+wUTc3I=; b=WvtzVftUR2kW5KPJWwKL/4n/1dVGEDShVjCdeoueWnabDvO4bsj0+raDNaCPr+uVmX eWa6WTgjUS5Mk8919jgLDuPPI4sH7MaIlF2a0aAEjHProgMkSmbZ7imcv+2trGf6AqwX ctXHDVixmyyiYz2gNQQPi674MBTjR7HlbVsFKsZPWeczALJPdj0Fm2SFk6vcdMoz0KX8 Ddznj8BOa/9dxOCZ7GkM6UhMoDElTqGKZZUdDON/dwpHgD77blfsbqDSeznTpRxjuR/G teqQn97dHq75RgXADPHFAqt5oPkO9hzo2K3dBujUu5dyUgZKWLlXLdvGHcXP3hQ1pLpx 1wVQ== X-Gm-Message-State: APjAAAWTac4Hr4NBXL0DID1Vg8Fhy+I4MSQbkQ3DhyOCY0bsHdLvbgst FD0rcJq1ZUT39nC+QpB7BIksWyT2I6iubc4BYOuxbA== X-Google-Smtp-Source: APXvYqxrfnFijgMewMwGGAyu6M2ppVO81Ru7vemD6fccdEP1qKQwpHm3knUpDelBbZnkhe5FhD+wd3Bf8X1vkMcSuF8= X-Received: by 2002:ac2:4244:: with SMTP id m4mr4610896lfl.85.1575538531007; Thu, 05 Dec 2019 01:35:31 -0800 (PST) MIME-Version: 1.0 References: <20191023001206.15741-1-rajatja@google.com> <20191104194147.185642-1-rajatja@google.com> <20191104194147.185642-3-rajatja@google.com> <87r222wpvv.fsf@intel.com> In-Reply-To: <87r222wpvv.fsf@intel.com> From: Rajat Jain Date: Thu, 5 Dec 2019 01:34:53 -0800 Message-ID: To: Jani Nikula X-Mailman-Approved-At: Thu, 05 Dec 2019 23:30:13 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=xlBRhTw/jtQIcsHp5WmEd30ut2aD0xyE9yaT+wUTc3I=; b=md40lg4+8ino9LXdrRZD9ROuX9NvQbPOGvNZ/eVcceTDIhtdLWHy9ECt5z1dQAD4MM DdH87tABqmZ3T0s9VvKZuw2d48mq5SaZVrPzQ48tNJ1OpKH6wXWvLIPK2FThEc7d7NnG df2dTl4M0F5i6I7nAScI9mhQo2yFc8PapwURaegnN4Eq8iHNfJqzHsFE+pExVO0BQzeF 3qtDe7gefJwITWPwQKgDCOyGtrXiPMs4P0FfR/glCJp/gubzKE7/YksaEdjJv1HQDO6M w5jdH6pM9zDLm/aB8bHU9rUW2s1DqemW8bbBVh9gnaamzATpoaEPrIeTIhA6GFEGfdn7 EaDw== Subject: Re: [Intel-gfx] [PATCH v2 3/3] drm/i915: Add support for integrated privacy screens X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sean Paul , David Airlie , dri-devel , Daniel Thompson , Jonathan Corbet , Rajat Jain , intel-gfx@lists.freedesktop.org, Maxime Ripard , Mat King , Duncan Laurie , Greg Kroah-Hartman , Linux Kernel Mailing List , Pavel Machek Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gV2VkLCBOb3YgMjAsIDIwMTkgYXQgNzowNCBBTSBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA bGludXguaW50ZWwuY29tPiB3cm90ZToKPgo+IE9uIE1vbiwgMDQgTm92IDIwMTksIFJhamF0IEph aW4gPHJhamF0amFAZ29vZ2xlLmNvbT4gd3JvdGU6Cj4gPiBDZXJ0YWluIGxhcHRvcHMgbm93IGNv bWUgd2l0aCBwYW5lbHMgdGhhdCBoYXZlIGludGVncmF0ZWQgcHJpdmFjeQo+ID4gc2NyZWVucyBv biB0aGVtLiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc3VjaCBwYW5lbHMgYnkgYWRkaW5n Cj4gPiBhIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5IHRvIHRoZSBpbnRlbF9jb25uZWN0b3IgZm9y IHRoZSBwYW5lbCwgdGhhdAo+ID4gdGhlIHVzZXJzcGFjZSBjYW4gdGhlbiB1c2UgdG8gY29udHJv bCBhbmQgY2hlY2sgdGhlIHN0YXR1cy4KPiA+Cj4gPiBJZGVudGlmeWluZyB0aGUgcHJlc2VuY2Ug b2YgcHJpdmFjeSBzY3JlZW4sIGFuZCBjb250cm9sbGluZyBpdCwgaXMgZG9uZQo+ID4gdmlhIEFD UEkgX0RTTSBtZXRob2RzLgo+ID4KPiA+IEN1cnJlbnRseSwgdGhpcyBpcyBkb25lIG9ubHkgZm9y IHRoZSBJbnRlbCBkaXNwbGF5IHBvcnRzLiBCdXQgaW4gZnV0dXJlLAo+ID4gdGhpcyBjYW4gYmUg ZG9uZSBmb3IgYW55IG90aGVyIHBvcnRzIGlmIHRoZSBoYXJkd2FyZSBiZWNvbWVzIGF2YWlsYWJs ZQo+ID4gKGUuZy4gZXh0ZXJuYWwgbW9uaXRvcnMgc3VwcG9ydGluZyBpbnRlZ3JhdGVkIHByaXZh Y3kgc2NyZWVucz8pLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IFJhamF0IEphaW4gPHJhamF0amFA Z29vZ2xlLmNvbT4KPiA+IENoYW5nZS1JZDogSWM5ZmYwN2ZjNGE1MDc5N2QyZDBkZmI5MTlmMTFh YTA4MjFhNGI1NDgKPiA+IC0tLQo+ID4gdjI6IEZvcm1lZCBieSBzcGxpdHRpbmcgdGhlIG9yaWdp bmFsIHBhdGNoIGludG8gbXVsdGlwbGUgcGF0Y2hlcy4KPiA+ICAgICAtIEFsbCBjb2RlIGhhcyBi ZWVuIG1vdmVkIGludG8gaTkxNSBub3cuCj4gPiAgICAgLSBQcml2YWN5IHNjcmVlbiBpcyBhIGk5 MTUgcHJvcGVydHkKPiA+ICAgICAtIEhhdmUgYSBsb2NhbCBzdGF0ZSB2YXJpYWJsZSB0byBzdG9y ZSB0aGUgcHJ2YWN5IHNjcmVlbi4gRG9uJ3QgcmVhZAo+ID4gICAgICAgaXQgZnJvbSBoYXJkd2Fy ZS4KPiA+Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAg IHwgIDMgKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5j ICAgfCAxMyArKystCj4gPiAgLi4uL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nvbm5lY3Rv ci5jICAgIHwgMzUgKysrKysrKysrKwo+ID4gIC4uLi9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jb25uZWN0b3IuaCAgICB8ICAxICsKPiA+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3R5cGVzLmggICAgfCAgNCArKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYyAgICAgICB8ICA1ICsrCj4gPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfcHJpdmFjeV9zY3JlZW4uYyAgIHwgNzAgKysrKysrKysrKysrKysrKysrKwo+ID4gIC4uLi9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3ByaXZhY3lfc2NyZWVuLmggICB8IDI1ICsrKysrKysKPiA+ ICBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgICAgICAgfCAxNCArKysr Cj4gPiAgOSBmaWxlcyBjaGFuZ2VkLCAxNjYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9wcml2YWN5X3NjcmVlbi5jCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHJpdmFjeV9zY3JlZW4uaAo+ID4KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCj4gPiBpbmRleCAyNTg3ZWE4MzRmMDYuLjM1ODllYmNmMjdiYyAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+ID4gQEAgLTE4NSw3ICsxODUsOCBAQCBpOTE1LXkgKz0gXAo+ID4g ICAgICAgZGlzcGxheS9pbnRlbF90Yy5vCj4gPiAgaTkxNS0kKENPTkZJR19BQ1BJKSArPSBcCj4g PiAgICAgICBkaXNwbGF5L2ludGVsX2FjcGkubyBcCj4gPiAtICAgICBkaXNwbGF5L2ludGVsX29w cmVnaW9uLm8KPiA+ICsgICAgIGRpc3BsYXkvaW50ZWxfb3ByZWdpb24ubyBcCj4gPiArICAgICBk aXNwbGF5L2ludGVsX3ByaXZhY3lfc2NyZWVuLm8KPgo+IE1tbWgsIHdvbmRlciBpZiB0aGVyZSds bCBiZSBub24tQUNQSSBiYXNlZCBwcml2YWN5IHNjcmVlbnMuIEkgZ3Vlc3Mgd2UKPiBjYW4gc29y dCB0aGlzIG91dCB0aGVuLiAqc2hydWcqCj4KPiA+ICBpOTE1LSQoQ09ORklHX0RSTV9GQkRFVl9F TVVMQVRJT04pICs9IFwKPiA+ICAgICAgIGRpc3BsYXkvaW50ZWxfZmJkZXYubwo+ID4KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+ID4gaW5kZXggZDNm Yjc1YmI5ZWIxLi4zNzg3NzJkMzQ0OWMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gPiBAQCAtMzcsNiArMzcsNyBAQAo+ID4gICNpbmNs dWRlICJpbnRlbF9hdG9taWMuaCIKPiA+ICAjaW5jbHVkZSAiaW50ZWxfZGlzcGxheV90eXBlcy5o Igo+ID4gICNpbmNsdWRlICJpbnRlbF9oZGNwLmgiCj4gPiArI2luY2x1ZGUgImludGVsX3ByaXZh Y3lfc2NyZWVuLmgiCj4gPiAgI2luY2x1ZGUgImludGVsX3Nwcml0ZS5oIgo+ID4KPiA+ICAvKioK PiA+IEBAIC01NywxMSArNTgsMTQgQEAgaW50IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21p Y19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAgICAg IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAg ICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfY29ubl9zdGF0 ZSA9Cj4gPiAgICAgICAgICAgICAgIHRvX2ludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlKHN0 YXRlKTsKPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9 IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4KPiA+ICAgICAgIGlmIChwcm9wZXJ0 eSA9PSBkZXZfcHJpdi0+Zm9yY2VfYXVkaW9fcHJvcGVydHkpCj4gPiAgICAgICAgICAgICAgICp2 YWwgPSBpbnRlbF9jb25uX3N0YXRlLT5mb3JjZV9hdWRpbzsKPiA+ICAgICAgIGVsc2UgaWYgKHBy b3BlcnR5ID09IGRldl9wcml2LT5icm9hZGNhc3RfcmdiX3Byb3BlcnR5KQo+ID4gICAgICAgICAg ICAgICAqdmFsID0gaW50ZWxfY29ubl9zdGF0ZS0+YnJvYWRjYXN0X3JnYjsKPiA+ICsgICAgIGVs c2UgaWYgKHByb3BlcnR5ID09IGludGVsX2Nvbm5lY3Rvci0+cHJpdmFjeV9zY3JlZW5fcHJvcGVy dHkpCj4gPiArICAgICAgICAgICAgICp2YWwgPSBpbnRlbF9jb25uX3N0YXRlLT5wcml2YWN5X3Nj cmVlbl9zdGF0dXM7Cj4gPiAgICAgICBlbHNlIHsKPiA+ICAgICAgICAgICAgICAgRFJNX0RFQlVH X0FUT01JQygiVW5rbm93biBwcm9wZXJ0eSBbUFJPUDolZDolc11cbiIsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHktPmJhc2UuaWQsIHByb3BlcnR5LT5uYW1lKTsK PiA+IEBAIC04OSwxNSArOTMsMTggQEAgaW50IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21p Y19zZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAgICAg IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAg ICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfY29ubl9zdGF0 ZSA9Cj4gPiAgICAgICAgICAgICAgIHRvX2ludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlKHN0 YXRlKTsKPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9 IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4KPiA+ICAgICAgIGlmIChwcm9wZXJ0 eSA9PSBkZXZfcHJpdi0+Zm9yY2VfYXVkaW9fcHJvcGVydHkpIHsKPiA+ICAgICAgICAgICAgICAg aW50ZWxfY29ubl9zdGF0ZS0+Zm9yY2VfYXVkaW8gPSB2YWw7Cj4gPiAgICAgICAgICAgICAgIHJl dHVybiAwOwo+ID4gLSAgICAgfQo+ID4gLQo+ID4gLSAgICAgaWYgKHByb3BlcnR5ID09IGRldl9w cml2LT5icm9hZGNhc3RfcmdiX3Byb3BlcnR5KSB7Cj4gPiArICAgICB9IGVsc2UgaWYgKHByb3Bl cnR5ID09IGRldl9wcml2LT5icm9hZGNhc3RfcmdiX3Byb3BlcnR5KSB7Cj4gPiAgICAgICAgICAg ICAgIGludGVsX2Nvbm5fc3RhdGUtPmJyb2FkY2FzdF9yZ2IgPSB2YWw7Cj4gPiAgICAgICAgICAg ICAgIHJldHVybiAwOwo+ID4gKyAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBpbnRlbF9jb25u ZWN0b3ItPnByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KSB7Cj4gPiArICAgICAgICAgICAgIGludGVs X3ByaXZhY3lfc2NyZWVuX3NldF92YWwoaW50ZWxfY29ubmVjdG9yLCB2YWwpOwo+ID4gKyAgICAg ICAgICAgICBpbnRlbF9jb25uX3N0YXRlLT5wcml2YWN5X3NjcmVlbl9zdGF0dXMgPSB2YWw7Cj4g PiArICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gICAgICAgfQo+ID4KPiA+ICAgICAgIERSTV9E RUJVR19BVE9NSUMoIlVua25vd24gcHJvcGVydHkgW1BST1A6JWQ6JXNdXG4iLAo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29ubmVjdG9yLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nvbm5lY3Rvci5jCj4gPiBpbmRleCAz MDhlYzYzMjA3ZWUuLjNjY2JmNTJhZWRmOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29ubmVjdG9yLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29ubmVjdG9yLmMKPiA+IEBAIC0yODEsMyArMjgxLDM4IEBA IGludGVsX2F0dGFjaF9jb2xvcnNwYWNlX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCj4gPiAgICAgICAgICAgICAgIGRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZj b25uZWN0b3ItPmJhc2UsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbm5lY3Rvci0+Y29sb3JzcGFjZV9wcm9wZXJ0eSwgMCk7Cj4gPiAgfQo+ID4gKwo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IHByaXZhY3lfc2NyZWVuX2Vu dW1bXSA9IHsKPiA+ICsgICAgIHsgUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQsICJEaXNhYmxlZCIg fSwKPiA+ICsgICAgIHsgUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCwgIkVuYWJsZWQiIH0sCj4gPiAr fTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBpbnRlbF9hdHRhY2hfcHJpdmFjeV9zY3JlZW5fcHJv cGVydHkgLQo+ID4gKyAqICAgICBjcmVhdGUgYW5kIGF0dGFjaCB0aGUgY29ubmVjdGVyJ3MgcHJp dmFjeS1zY3JlZW4gcHJvcGVydHkuICoKPiA+ICsgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgZm9y IHdoaWNoIHRvIGluaXQgdGhlIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5Cj4gPiArICoKPiA+ICsg KiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGF0dGFjaGVzIHRoZSAicHJpdmFjeS1zY3JlZW4i IHByb3BlcnR5IHRvIHRoZQo+ID4gKyAqIGNvbm5lY3Rvci4gSW5pdGlhbCBzdGF0ZSBvZiBwcml2 YWN5LXNjcmVlbiBpcyBzZXQgdG8gZGlzYWJsZWQuCj4gPiArICovCj4gPiArdm9pZAo+ID4gK2lu dGVsX2F0dGFjaF9wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVs X2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4gKyAgICAgc3Ry dWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsKPiA+ICsKPiA+ICsgICAgIGlmICghaW50ZWxfY29ubmVj dG9yLT5wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eSkgewo+ID4gKyAgICAgICAgICAgICBwcm9wID0g ZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGNvbm5lY3Rvci0+ZGV2LAo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX1BST1BfRU5VTSwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmFjeS1z Y3JlZW4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByaXZhY3lfc2NyZWVuX2VudW0sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBUlJBWV9TSVpFKHByaXZhY3lfc2NyZWVuX2VudW0pKTsKPiA+ICsgICAgICAg ICAgICAgaWYgKCFwcm9wKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKPiA+ICsK PiA+ICsgICAgICAgICAgICAgaW50ZWxfY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9wcm9wZXJ0 eSA9IHByb3A7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBkcm1fb2JqZWN0X2F0dGFjaF9w cm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLCBwcm9wLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQpOwo+ID4gK30KPgo+IEkgdGhpbmsg dGhpcyBzaG91bGQgYmUgYSBkcm0gY29yZSBsZXZlbCBwcm9wZXJ0eSBpbiBkcm1fY29ubmVjdG9y LltjaF0KPiBzbyB0aGF0ICphbGwqIGRyaXZlcnMgd291bGQgdXNlIHRoZSBzYW1lIHRoaW5nIGZv ciBwcml2YWN5IHNjcmVlbnMuIE5vdAo+IGk5MTUgc3BlY2lmaWMuCj4KPiBJIHRoaW5rIHRoaXMg aXMgdGhlIGJpZ2dlc3QgaXNzdWUgaW4gdGhlIHBhdGNoIHNlcmllcy4KCkkgYWN0dWFsbHkgd291 bGQgYmUgaGFwcHkgdG8gbWFrZSBpdCBhIGRybV9jb25uZWN0b3IgcHJvcGVydHksIGxpa2UgSQpo YWQgaW4gbXkgb3JpZ2luYWwgcGF0Y2ggc2VyaWVzLiBJIGNoYW5nZWQgaXQgdG8gaTkxNSBzcGVj aWZpYyBiZWNhdXNlCml0IHNlZW1lZCB0byBtZSBiYXNlZCBvbiB0aGUgY29tbWVudHMgdGhhdCB0 aGUgZ2VuZXJhbCBzZW50aW1lbnQgaXMKdGhhdCBhbnl0aGluZyB0byBkbyB3aXRoIGFjcGkgc2hv dWxkIGJlIGluIGk5MTUuCgpOb3RlIHRoYXQgdGhlIHByaXZhY3kgc2NyZWVuIHByb3BlcnR5IGVz c2VudGlhbGx5IG5lZWRzIGFuIEFDUEkgaGFuZGxlCnRvIHdvcmsgb24sIHNvIGlmIEkgd2VyZSB0 byBtb3ZlIHRoZSBwcm9wZXJ0eSBpbnRvIGRybV9jb25uZWN0b3IsIEknZApsaWtlbHkgcmVuYW1l IHRoZSBpbnRlbF9wcml2YWN5X3NjcmVlbiogY29kZSB0byBkZW1fcHJpdmFjeV9zY3JlZW4qCmNv ZGUsIGFuZCBpdCdsbCBzdGlsbCBvcGVyYXRlIG9uIGFuIEFDUEkgaGFuZGxlIChzdG9yZWQgaW4K ZHJtX2Nvbm5lY3RvciBzdHJ1Y3R1cmUpLiBUaGUgaTkxNSdzIGpvYiB3aWxsIHRoZW4gYmUgdG8g bG9va3VwIHRoYXQKQUNQSSBoYW5kbGUgKGJlY2F1c2UgbG9va3VwIHJlcXVpcmVzIGRpc3BsYXkg aW5kZXgpIGFuZCBwb3B1bGF0ZSBpdCBpbgpkcm1fY29ubmVjdG9yLiBEb2VzIHRoaXMgc291bmQg T0s/Cgo+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jb25uZWN0b3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29ubmVj dG9yLmgKPiA+IGluZGV4IDkzYTczNzVjODE5Ni4uNjEwMDVmMzdhMzM4IDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb25uZWN0b3IuaAo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb25uZWN0b3IuaAo+ID4gQEAg LTMxLDUgKzMxLDYgQEAgdm9pZCBpbnRlbF9hdHRhY2hfZm9yY2VfYXVkaW9fcHJvcGVydHkoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiAgdm9pZCBpbnRlbF9hdHRhY2hfYnJv YWRjYXN0X3JnYl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ ICB2b2lkIGludGVsX2F0dGFjaF9hc3BlY3RfcmF0aW9fcHJvcGVydHkoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiAgdm9pZCBpbnRlbF9hdHRhY2hfY29sb3JzcGFjZV9wcm9w ZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ICt2b2lkIGludGVsX2F0 dGFjaF9wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKTsKPiA+Cj4gPiAgI2VuZGlmIC8qIF9fSU5URUxfQ09OTkVDVE9SX0hfXyAqLwo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBl cy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgK PiA+IGluZGV4IGMyNzA2YWZjMDY5Yi4uODNiOGM5ODA0OWE3IDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gPiBA QCAtNDI2LDYgKzQyNiw5IEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0b3Igewo+ID4gICAgICAgc3Ry dWN0IHdvcmtfc3RydWN0IG1vZGVzZXRfcmV0cnlfd29yazsKPiA+Cj4gPiAgICAgICBzdHJ1Y3Qg aW50ZWxfaGRjcCBoZGNwOwo+ID4gKwo+ID4gKyAgICAgLyogT3B0aW9uYWwgInByaXZhY3ktc2Ny ZWVuIiBwcm9wZXJ0eSBmb3IgdGhlIGNvbm5lY3RvciBwYW5lbCAqLwo+ID4gKyAgICAgc3RydWN0 IGRybV9wcm9wZXJ0eSAqcHJpdmFjeV9zY3JlZW5fcHJvcGVydHk7Cj4gPiAgfTsKPiA+Cj4gPiAg c3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlIHsKPiA+IEBAIC00MzMsNiArNDM2 LDcgQEAgc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlIHsKPiA+Cj4gPiAgICAg ICBlbnVtIGhkbWlfZm9yY2VfYXVkaW8gZm9yY2VfYXVkaW87Cj4gPiAgICAgICBpbnQgYnJvYWRj YXN0X3JnYjsKPiA+ICsgICAgIGVudW0gaW50ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIHByaXZh Y3lfc2NyZWVuX3N0YXR1czsKPiA+ICB9Owo+ID4KPiA+ICAjZGVmaW5lIHRvX2ludGVsX2RpZ2l0 YWxfY29ubmVjdG9yX3N0YXRlKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9jb25uZWN0b3Jfc3RhdGUsIGJhc2UpCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kcC5jCj4gPiBpbmRleCA0ZmFjNDA4YTQyOTkuLjE5NjNlOTI0MDRiYSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4gPiBAQCAtNjIsNiArNjIs NyBAQAo+ID4gICNpbmNsdWRlICJpbnRlbF9sc3Bjb24uaCIKPiA+ICAjaW5jbHVkZSAiaW50ZWxf bHZkcy5oIgo+ID4gICNpbmNsdWRlICJpbnRlbF9wYW5lbC5oIgo+ID4gKyNpbmNsdWRlICJpbnRl bF9wcml2YWN5X3NjcmVlbi5oIgo+ID4gICNpbmNsdWRlICJpbnRlbF9wc3IuaCIKPiA+ICAjaW5j bHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKPiA+ICAjaW5jbHVkZSAiaW50ZWxfdGMuaCIKPiA+IEBA IC02MzU4LDYgKzYzNTksMTAgQEAgaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3QKPiA+Cj4gPiAgICAg ICAgICAgICAgIC8qIExvb2t1cCB0aGUgQUNQSSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNv bm5lY3RvciAqLwo+ID4gICAgICAgICAgICAgICBpbnRlbF9jb25uZWN0b3JfbG9va3VwX2FjcGlf bm9kZShpbnRlbF9jb25uZWN0b3IpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAvKiBDaGVjayBm b3IgaW50ZWdyYXRlZCBQcml2YWN5IHNjcmVlbiBzdXBwb3J0ICovCj4gPiArICAgICAgICAgICAg IGlmIChpbnRlbF9wcml2YWN5X3NjcmVlbl9wcmVzZW50KGludGVsX2Nvbm5lY3RvcikpCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgaW50ZWxfYXR0YWNoX3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5 KGNvbm5lY3Rvcik7Cj4gPiAgICAgICB9Cj4gPiAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3ByaXZhY3lfc2NyZWVuLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3ByaXZhY3lfc2NyZWVuLmMKPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRjNDIyZTM4YzUxYQo+ID4gLS0t IC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9w cml2YWN5X3NjcmVlbi5jCj4gPiBAQCAtMCwwICsxLDcwIEBACj4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKPgo+IFBsZWFzZSByZWFkIGh0dHA6Ly9taWQu bWFpbC1hcmNoaXZlLmNvbS9DQUtNSzd1SC04K3RiS3NBb2lDaHN4RUxFY183N1JWVnhQMndhcEhX aHFCKzBWaWlmb2dAbWFpbC5nbWFpbC5jb20KCk9LLCBJIGNoYW5nZWQgaXQgdG8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCgoKPgo+ID4gKy8qCj4gPiArICogSW50ZWwg QUNQSSBwcml2YWN5IHNjcmVlbiBjb2RlCj4gPiArICoKPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAx OSBHb29nbGUgSW5jLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+ Cj4gPiArCj4gPiArI2luY2x1ZGUgImludGVsX3ByaXZhY3lfc2NyZWVuLmgiCj4gPiArCj4gPiAr I2RlZmluZSBDT05ORUNUT1JfRFNNX1JFVklEIDEKPiA+ICsKPiA+ICsjZGVmaW5lIENPTk5FQ1RP Ul9EU01fRk5fUFJJVkFDWV9FTkFCTEUgICAgICAgICAgICAgIDIKPiA+ICsjZGVmaW5lIENPTk5F Q1RPUl9EU01fRk5fUFJJVkFDWV9ESVNBQkxFICAgICAgICAgICAgIDMKPiA+ICsKPiA+ICtzdGF0 aWMgY29uc3QgZ3VpZF90IGRybV9jb25uX2RzbV9ndWlkID0KPiA+ICsgICAgIEdVSURfSU5JVCgw eEM3MDMzMTEzLCAweDg3MjAsIDB4NENFQiwKPiA+ICsgICAgICAgICAgICAgICAweDkwLCAweDkw LCAweDlELCAweDUyLCAweEIzLCAweEU1LCAweDJELCAweDczKTsKPiA+ICsKPiA+ICsvKiBNYWtl cyBfRFNNIGNhbGwgdG8gc2V0IHByaXZhY3kgc2NyZWVuIHN0YXR1cyAqLwo+ID4gK3N0YXRpYyB2 b2lkIGFjcGlfcHJpdmFjeV9zY3JlZW5fY2FsbF9kc20oYWNwaV9oYW5kbGUgY29ubl9oYW5kbGUs IHU2NCBmdW5jKQo+ID4gK3sKPiA+ICsgICAgIHVuaW9uIGFjcGlfb2JqZWN0ICpvYmo7Cj4gPiAr Cj4gPiArICAgICBvYmogPSBhY3BpX2V2YWx1YXRlX2RzbShjb25uX2hhbmRsZSwgJmRybV9jb25u X2RzbV9ndWlkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OTkVDVE9SX0RT TV9SRVZJRCwgZnVuYywgTlVMTCk7Cj4gPiArICAgICBpZiAoIW9iaikgewo+ID4gKyAgICAgICAg ICAgICBEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gZXZhbHVhdGUgX0RTTSBmb3IgZm4gJWxs eFxuIiwgZnVuYyk7Cj4gPiArICAgICAgICAgICAgIHJldHVybjsKPiA+ICsgICAgIH0KPiA+ICsK PiA+ICsgICAgIEFDUElfRlJFRShvYmopOwo+ID4gK30KPiA+ICsKPiA+ICt2b2lkIGludGVsX3By aXZhY3lfc2NyZWVuX3NldF92YWwoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVj dG9yLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGludGVsX3ByaXZh Y3lfc2NyZWVuX3N0YXR1cyB2YWwpCj4KPiBKdXN0IG5hbWUgdGhlIHBhcmFtZXRlciBjb25uZWN0 b3IsIG5vdCBpbnRlbF9jb25uZWN0b3IuIFRoaXMgdGhyb3VnaG91dC4KCkRvbmUuCgo+Cj4gPiAr ewo+ID4gKyAgICAgYWNwaV9oYW5kbGUgYWNwaV9oYW5kbGUgPSBpbnRlbF9jb25uZWN0b3ItPmFj cGlfaGFuZGxlOwo+ID4gKwo+ID4gKyAgICAgaWYgKCFhY3BpX2hhbmRsZSkKPiA+ICsgICAgICAg ICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgaWYgKHZhbCA9PSBQUklWQUNZX1NDUkVFTl9E SVNBQkxFRCkKPiA+ICsgICAgICAgICAgICAgYWNwaV9wcml2YWN5X3NjcmVlbl9jYWxsX2RzbShh Y3BpX2hhbmRsZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDT05ORUNUT1JfRFNNX0ZOX1BSSVZBQ1lfRElTQUJMRSk7Cj4gPiArICAgICBlbHNlIGlmICh2 YWwgPT0gUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCkKPiA+ICsgICAgICAgICAgICAgYWNwaV9wcml2 YWN5X3NjcmVlbl9jYWxsX2RzbShhY3BpX2hhbmRsZSwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDT05ORUNUT1JfRFNNX0ZOX1BSSVZBQ1lfRU5BQkxFKTsK Pgo+IGVsc2UgY29tcGxhaW4/Cj4KCkRvbmUuCgo+ID4gK30KPiA+ICsKPiA+ICtib29sIGludGVs X3ByaXZhY3lfc2NyZWVuX3ByZXNlbnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKQo+ID4gK3sKPiA+ICsgICAgIGFjcGlfaGFuZGxlIGhhbmRsZSA9IGludGVsX2Nvbm5l Y3Rvci0+YWNwaV9oYW5kbGU7Cj4gPiArCj4gPiArICAgICBpZiAoIWhhbmRsZSkKPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKyAgICAgaWYgKCFhY3BpX2NoZWNrX2Rz bShoYW5kbGUsICZkcm1fY29ubl9kc21fZ3VpZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgQ09OTkVDVE9SX0RTTV9SRVZJRCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSA8 PCBDT05ORUNUT1JfRFNNX0ZOX1BSSVZBQ1lfRU5BQkxFIHwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgMSA8PCBDT05ORUNUT1JfRFNNX0ZOX1BSSVZBQ1lfRElTQUJMRSkpIHsKPiA+ICsg ICAgICAgICAgICAgRFJNX1dBUk4oIiVzOiBPZGQsIGNvbm5lY3RvciBBQ1BJIG5vZGUgYnV0IG5v IHByaXZhY3kgc2Nybj9cbiIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKGlu dGVsX2Nvbm5lY3Rvci0+YmFzZS5kZXYtPmRldikpOwo+ID4gKyAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Cj4gPiArICAgICB9Cj4gPiArICAgICBEUk1fREVWX0lORk8oaW50ZWxfY29ubmVjdG9y LT5iYXNlLmRldi0+ZGV2LAo+ID4gKyAgICAgICAgICAgICAgICAgICJzdXBwb3J0cyBwcml2YWN5 IHNjcmVlblxuIik7Cj4gPiArICAgICByZXR1cm4gdHJ1ZTsKPiA+ICt9Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wcml2YWN5X3NjcmVlbi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wcml2YWN5X3NjcmVlbi5oCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yMTJmNzMzNDlhMDAK PiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfcHJpdmFjeV9zY3JlZW4uaAo+ID4gQEAgLTAsMCArMSwyNSBAQAo+ID4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICovCj4gPiArLyoKPiA+ICsgKiBD b3B5cmlnaHQgwqkgMjAxOSBHb29nbGUgSW5jLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpZm5kZWYg X19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9fCj4gPiArI2RlZmluZSBfX0RSTV9QUklWQUNZX1NDUkVF Tl9IX18KPiA+ICsKPiA+ICsjaW5jbHVkZSAiaW50ZWxfZGlzcGxheV90eXBlcy5oIgo+ID4gKwo+ ID4gKyNpZmRlZiBDT05GSUdfQUNQSQo+ID4gK2Jvb2wgaW50ZWxfcHJpdmFjeV9zY3JlZW5fcHJl c2VudChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpOwo+ID4gK3ZvaWQg aW50ZWxfcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRl bF9jb25uZWN0b3IsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW50 ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIHZhbCk7Cj4gPiArI2Vsc2UKPiA+ICtib29sIGludGVs X3ByaXZhY3lfc2NyZWVuX3ByZXNlbnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKTsKPiA+ICt7Cj4gPiArICAgICByZXR1cm4gZmFsc2U7Cj4gPiArfQo+ID4gK3ZvaWQg aW50ZWxfcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRl bF9jb25uZWN0b3IsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW50 ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIHZhbCkKPiA+ICt7IH0KPiA+ICsjZW5kaWYgLyogQ09O RklHX0FDUEkgKi8KPiA+ICsKPiA+ICsjZW5kaWYgLyogX19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9f ICovCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCj4gPiBpbmRleCA0NjlkYzUxMmNjYTMuLmNmMDhkNTYzNjM2 MyAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ID4gKysrIGIv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gPiBAQCAtMjEyMyw2ICsyMTIzLDIwIEBAIHN0 cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyB7Cj4gPiAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZW5naW5lX2luZm8gZW5naW5lc1tdOwo+ID4gIH07Cj4gPgo+ID4gKy8qKgo+ID4gKyAqIGVu dW0gaW50ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIC0gcHJpdmFjeV9zY3JlZW4gc3RhdHVzCj4g PiArICoKPiA+ICsgKiBUaGlzIGVudW0gaXMgdXNlZCB0byB0cmFjayBhbmQgY29udHJvbCB0aGUg c3RhdGUgb2YgdGhlIGludGVncmF0ZWQgcHJpdmFjeQo+ID4gKyAqIHNjcmVlbiBwcmVzZW50IG9u IHNvbWUgZGlzcGxheSBwYW5lbHMsIHZpYSB0aGUgInByaXZhY3ktc2NyZWVuIiBwcm9wZXJ0eS4K PiA+ICsgKgo+ID4gKyAqIEBQUklWQUNZX1NDUkVFTl9ESVNBQkxFRDogVGhlIHByaXZhY3ktc2Ny ZWVuIG9uIHRoZSBwYW5lbCBpcyBkaXNhYmxlZAo+ID4gKyAqIEBQUklWQUNZX1NDUkVFTl9FTkFC TEVEOiAgVGhlIHByaXZhY3ktc2NyZWVuIG9uIHRoZSBwYW5lbCBpcyBlbmFibGVkCj4gPiArICoq Lwo+ID4gK2VudW0gaW50ZWxfcHJpdmFjeV9zY3JlZW5fc3RhdHVzIHsKPiA+ICsgICAgIFBSSVZB Q1lfU0NSRUVOX0RJU0FCTEVEID0gMCwKPiA+ICsgICAgIFBSSVZBQ1lfU0NSRUVOX0VOQUJMRUQg PSAxLAo+ID4gK307Cj4gPiArCj4KPiBUaGUgZHJtX3Byb3BlcnR5IGludGVyZmFjZSBVQVBJIGlz IGJhc2VkIG9uIHRoZSBzdHJpbmdzLCAqbm90KiBvbiB0aGUKPiB2YWx1ZXMuIFBsZWFzZSBtb3Zl IHRoZSBlbnVtIG91dCBvZiB1YXBpIGludG8gdGhlIGRybSBjb2RlLgoKT2gsIHNvIHdlIGRvbid0 IGhhdmUgdG8gZXhwb3NlIHRoaXMgdG8gdXNlcnNwYWNlPyBVbmRlcnN0YW5kLCBzbyBJCm1vdmVk IGl0IHRvIGludGVsX2Rpc3BsYXlfdHlwZXMuaAoKVGhhbmtzLAoKUmFqYXQuCgoKPgo+IEJSLAo+ IGphbmkuCj4KPiA+ICAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKPiA+ICB9Cj4gPiAgI2VuZGlm Cj4KPiAtLQo+IEphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4