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=-8.0 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 85878CA9EB7 for ; Wed, 23 Oct 2019 09:21:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3BBF921906 for ; Wed, 23 Oct 2019 09:21:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="STYENaT1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403821AbfJWJVe (ORCPT ); Wed, 23 Oct 2019 05:21:34 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:40338 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2403799AbfJWJVd (ORCPT ); Wed, 23 Oct 2019 05:21:33 -0400 Received: by mail-wr1-f66.google.com with SMTP id o28so21214401wro.7 for ; Wed, 23 Oct 2019 02:21:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=hn8D9HlEsPbkhWg9lbIBIet9NkmHLPjuXeikJJ7gSrw=; b=STYENaT1GWt3vSQSzL+13on3OtnPcFf/5cKkTZFHx9/Ozl7Albnihj9Ka518G/6eek qIMRPL8mJYaaeIM1PfZz9uH1B5NCFzZDklq5tiETwmNE6HPcTNtTaxwN9K9DuFNQgYKj nJsc7rFhe4EbJ2OouUdAS4pQC0arh+zSCIkos= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=hn8D9HlEsPbkhWg9lbIBIet9NkmHLPjuXeikJJ7gSrw=; b=cFigC/YbuL2Nqmc24Xe8TJBZB2zebgTCD/foaHTLysEP9ikZvuxl2m+o3hs/AtFT8k cG+neJcTBSaZyv9EM2TcuYWqoTPJj2jzHiI6bXwNOShAm/yvQ6TaIl8GqzLJHdzHLuew tkPDSNmZf8mWe1Pyao6Cq4KGOPClYXOwmaYRuVRt/c9HLlseq3s6G3fUHZ5PGYzJJO8z CMAUVEEubU1EySWqxe5FKa0ooA79wsMmk9yvtPzISBNb6zeEX1iH3tABoyha6GTTB1z8 ACvyOlO6LRc6oVLdAPTYkPzIvJ7O8CBu6EDmzjw/ga/S8qozRIaTgcSOU6Fb6S2AsdWZ 4Ipw== X-Gm-Message-State: APjAAAXJjzTrNCDtHJVxeuO4kqpJNIYbLLpd06+YBAAdKesDlUYGqr6J 05swx7vsR3ihPwJyZofXZhDINQ== X-Google-Smtp-Source: APXvYqxdDqv5OQ1s2mqNxW7PHfRsCvksPP87xgwgwjbsBoLbkTSMPzWP19HgkayLkaPl15bCiIxvhA== X-Received: by 2002:a05:6000:118f:: with SMTP id g15mr4045292wrx.242.1571822490034; Wed, 23 Oct 2019 02:21:30 -0700 (PDT) Received: from phenom.ffwll.local (212-51-149-96.fiber7.init7.net. [212.51.149.96]) by smtp.gmail.com with ESMTPSA id d8sm7872047wrr.71.2019.10.23.02.21.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Oct 2019 02:21:29 -0700 (PDT) Date: Wed, 23 Oct 2019 11:21:27 +0200 From: Daniel Vetter To: Rajat Jain Cc: Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Daniel Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , Chris Wilson , Imre Deak , =?iso-8859-1?Q?Jos=E9?= Roberto de Souza , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, gregkh@linuxfoundation.org, mathewk@google.com, Daniel Thompson , Jonathan Corbet , Pavel Machek , seanpaul@google.com, Duncan Laurie , jsbarnes@google.com, rajatxjain@gmail.com Subject: Re: [PATCH] drm: Add support for integrated privacy screens Message-ID: <20191023092127.GY11828@phenom.ffwll.local> Mail-Followup-To: Rajat Jain , Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , Chris Wilson , Imre Deak , =?iso-8859-1?Q?Jos=E9?= Roberto de Souza , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, gregkh@linuxfoundation.org, mathewk@google.com, Daniel Thompson , Jonathan Corbet , Pavel Machek , seanpaul@google.com, Duncan Laurie , jsbarnes@google.com, rajatxjain@gmail.com References: <20191023001206.15741-1-rajatja@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20191023001206.15741-1-rajatja@google.com> X-Operating-System: Linux phenom 5.2.0-2-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Oct 22, 2019 at 05:12:06PM -0700, 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 drm_connector for the panel, that > the userspace can then use to control and check the status. The idea > was discussed here: > > https://lkml.org/lkml/2019/10/1/786 > > ACPI methods are used to identify, query and control privacy screen: > > * Identifying an ACPI object corresponding to the panel: The patch > follows ACPI Spec 6.3 (available at > https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf). > Pages 1119 - 1123 describe what I believe, is a standard way of > identifying / addressing "display panels" in the ACPI tables, thus > allowing kernel to attach ACPI nodes to the panel. IMHO, this ability > to identify and attach ACPI nodes to drm connectors may be useful for > reasons other privacy-screens, in future. > > * 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?). > > Also, this code can be extended in future to support non-ACPI methods > (e.g. using a kernel GPIO driver to toggle a gpio that controls the > privacy-screen). > > Signed-off-by: Rajat Jain New properties need property docs in the relevant section: https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-properties $ make htmldocs for building them locally. Cheers, Daniel > --- > drivers/gpu/drm/Makefile | 1 + > drivers/gpu/drm/drm_atomic_uapi.c | 5 + > drivers/gpu/drm/drm_connector.c | 38 +++++ > drivers/gpu/drm/drm_privacy_screen.c | 176 ++++++++++++++++++++++++ > drivers/gpu/drm/i915/display/intel_dp.c | 3 + > include/drm/drm_connector.h | 18 +++ > include/drm/drm_mode_config.h | 7 + > include/drm/drm_privacy_screen.h | 33 +++++ > 8 files changed, 281 insertions(+) > create mode 100644 drivers/gpu/drm/drm_privacy_screen.c > create mode 100644 include/drm/drm_privacy_screen.h > > diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile > index 82ff826b33cc..e1fc33d69bb7 100644 > --- a/drivers/gpu/drm/Makefile > +++ b/drivers/gpu/drm/Makefile > @@ -19,6 +19,7 @@ drm-y := drm_auth.o drm_cache.o \ > drm_syncobj.o drm_lease.o drm_writeback.o drm_client.o \ > drm_client_modeset.o drm_atomic_uapi.o drm_hdcp.o > > +drm-$(CONFIG_ACPI) += drm_privacy_screen.o > drm-$(CONFIG_DRM_LEGACY) += drm_legacy_misc.o drm_bufs.o drm_context.o drm_dma.o drm_scatter.o drm_lock.o > drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o > drm-$(CONFIG_DRM_VM) += drm_vm.o > diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c > index 7a26bfb5329c..44131165e4ea 100644 > --- a/drivers/gpu/drm/drm_atomic_uapi.c > +++ b/drivers/gpu/drm/drm_atomic_uapi.c > @@ -30,6 +30,7 @@ > #include > #include > #include > +#include > #include > #include > > @@ -766,6 +767,8 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector, > fence_ptr); > } else if (property == connector->max_bpc_property) { > state->max_requested_bpc = val; > + } else if (property == config->privacy_screen_property) { > + drm_privacy_screen_set_val(connector, val); > } else if (connector->funcs->atomic_set_property) { > return connector->funcs->atomic_set_property(connector, > state, property, val); > @@ -842,6 +845,8 @@ drm_atomic_connector_get_property(struct drm_connector *connector, > *val = 0; > } else if (property == connector->max_bpc_property) { > *val = state->max_requested_bpc; > + } else if (property == config->privacy_screen_property) { > + *val = drm_privacy_screen_get_val(connector); > } 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 4c766624b20d..a31e0382132b 100644 > --- a/drivers/gpu/drm/drm_connector.c > +++ b/drivers/gpu/drm/drm_connector.c > @@ -821,6 +821,11 @@ static const struct drm_prop_enum_list drm_panel_orientation_enum_list[] = { > { DRM_MODE_PANEL_ORIENTATION_RIGHT_UP, "Right Side Up" }, > }; > > +static const struct drm_prop_enum_list drm_privacy_screen_enum_list[] = { > + { DRM_PRIVACY_SCREEN_DISABLED, "Disabled" }, > + { DRM_PRIVACY_SCREEN_ENABLED, "Enabled" }, > +}; > + > static const struct drm_prop_enum_list drm_dvi_i_select_enum_list[] = { > { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */ > { DRM_MODE_SUBCONNECTOR_DVID, "DVI-D" }, /* DVI-I */ > @@ -2253,6 +2258,39 @@ static void drm_tile_group_free(struct kref *kref) > kfree(tg); > } > > +/** > + * drm_connector_init_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. > + * > + * Returns: > + * Zero on success, negative errno on failure. > + */ > +int drm_connector_init_privacy_screen_property(struct drm_connector *connector) > +{ > + struct drm_device *dev = connector->dev; > + struct drm_property *prop; > + > + prop = dev->mode_config.privacy_screen_property; > + if (!prop) { > + prop = drm_property_create_enum(dev, DRM_MODE_PROP_ENUM, > + "privacy-screen", drm_privacy_screen_enum_list, > + ARRAY_SIZE(drm_privacy_screen_enum_list)); > + if (!prop) > + return -ENOMEM; > + > + dev->mode_config.privacy_screen_property = prop; > + } > + > + drm_object_attach_property(&connector->base, prop, > + DRM_PRIVACY_SCREEN_DISABLED); > + return 0; > +} > +EXPORT_SYMBOL(drm_connector_init_privacy_screen_property); > + > /** > * drm_mode_put_tile_group - drop a reference to a tile group. > * @dev: DRM device > diff --git a/drivers/gpu/drm/drm_privacy_screen.c b/drivers/gpu/drm/drm_privacy_screen.c > new file mode 100644 > index 000000000000..1d68e8aa6c5f > --- /dev/null > +++ b/drivers/gpu/drm/drm_privacy_screen.c > @@ -0,0 +1,176 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * DRM privacy Screen code > + * > + * Copyright © 2019 Google Inc. > + */ > + > +#include > +#include > + > +#include > +#include > +#include > + > +#define DRM_CONN_DSM_REVID 1 > + > +#define DRM_CONN_DSM_FN_PRIVACY_GET_STATUS 1 > +#define DRM_CONN_DSM_FN_PRIVACY_ENABLE 2 > +#define DRM_CONN_DSM_FN_PRIVACY_DISABLE 3 > + > +static const guid_t drm_conn_dsm_guid = > + GUID_INIT(0xC7033113, 0x8720, 0x4CEB, > + 0x90, 0x90, 0x9D, 0x52, 0xB3, 0xE5, 0x2D, 0x73); > + > +/* > + * Makes _DSM call to set privacy screen status or get privacy screen. Return > + * value matters only for PRIVACY_GET_STATUS case. Returns 0 if disabled, 1 if > + * enabled. > + */ > +static int acpi_privacy_screen_call_dsm(acpi_handle conn_handle, u64 func) > +{ > + union acpi_object *obj; > + int ret = 0; > + > + obj = acpi_evaluate_dsm(conn_handle, &drm_conn_dsm_guid, > + DRM_CONN_DSM_REVID, func, NULL); > + if (!obj) { > + DRM_DEBUG_DRIVER("failed to evaluate _DSM for fn %llx\n", func); > + /* Can't do much. For get_val, assume privacy_screen disabled */ > + goto done; > + } > + > + if (func == DRM_CONN_DSM_FN_PRIVACY_GET_STATUS && > + obj->type == ACPI_TYPE_INTEGER) > + ret = !!obj->integer.value; > +done: > + ACPI_FREE(obj); > + return ret; > +} > + > +void drm_privacy_screen_set_val(struct drm_connector *connector, > + enum drm_privacy_screen val) > +{ > + acpi_handle acpi_handle = connector->privacy_screen_handle; > + > + if (!acpi_handle) > + return; > + > + if (val == DRM_PRIVACY_SCREEN_DISABLED) > + acpi_privacy_screen_call_dsm(acpi_handle, > + DRM_CONN_DSM_FN_PRIVACY_DISABLE); > + else if (val == DRM_PRIVACY_SCREEN_ENABLED) > + acpi_privacy_screen_call_dsm(acpi_handle, > + DRM_CONN_DSM_FN_PRIVACY_ENABLE); > +} > + > +enum drm_privacy_screen drm_privacy_screen_get_val(struct drm_connector > + *connector) > +{ > + acpi_handle acpi_handle = connector->privacy_screen_handle; > + > + if (acpi_handle && > + acpi_privacy_screen_call_dsm(acpi_handle, > + DRM_CONN_DSM_FN_PRIVACY_GET_STATUS)) > + return DRM_PRIVACY_SCREEN_ENABLED; > + > + return DRM_PRIVACY_SCREEN_DISABLED; > +} > + > +/* > + * See ACPI Spec v6.3, Table B-2, "Display Type" for details. > + * In short, these macros define the base _ADR values for ACPI nodes > + */ > +#define ACPI_BASE_ADR_FOR_OTHERS (0ULL << 8) > +#define ACPI_BASE_ADR_FOR_VGA (1ULL << 8) > +#define ACPI_BASE_ADR_FOR_TV (2ULL << 8) > +#define ACPI_BASE_ADR_FOR_EXT_MON (3ULL << 8) > +#define ACPI_BASE_ADR_FOR_INTEGRATED (4ULL << 8) > + > +#define ACPI_DEVICE_ID_SCHEME (1ULL << 31) > +#define ACPI_FIRMWARE_CAN_DETECT (1ULL << 16) > + > +/* > + * Ref: ACPI Spec 6.3 > + * https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf > + * Pages 1119 - 1123 describe, what I believe, a standard way of > + * identifying / addressing "display panels" in the ACPI. Thus it provides > + * a way for the ACPI to define devices for the display panels attached > + * to the system. It thus provides a way for the BIOS to export any panel > + * specific properties to the system via ACPI (like device trees). > + * > + * The following function looks up the ACPI node for a connector and links > + * to it. Technically it is independent from the privacy_screen code, and > + * ideally may be called for all connectors. It is generally a good idea to > + * be able to attach an ACPI node to describe anything if needed. (This can > + * help in future for other panel specific features maybe). However, it > + * needs a "port index" which I believe is the index within a particular > + * type of port (Ref to the pages of spec mentioned above). This port index > + * unfortunately is not available in DRM code, so currently its call is > + * originated from i915 driver. > + */ > +static int drm_connector_attach_acpi_node(struct drm_connector *connector, > + u8 port_index) > +{ > + struct device *dev = &connector->dev->pdev->dev; > + struct acpi_device *conn_dev; > + u64 conn_addr; > + > + /* > + * Determine what _ADR to look for, depending on device type and > + * port number. Potentially we only care about the > + * eDP / integrated displays? > + */ > + switch (connector->connector_type) { > + case DRM_MODE_CONNECTOR_eDP: > + conn_addr = ACPI_BASE_ADR_FOR_INTEGRATED + port_index; > + break; > + case DRM_MODE_CONNECTOR_VGA: > + conn_addr = ACPI_BASE_ADR_FOR_VGA + port_index; > + break; > + case DRM_MODE_CONNECTOR_TV: > + conn_addr = ACPI_BASE_ADR_FOR_TV + port_index; > + break; > + case DRM_MODE_CONNECTOR_DisplayPort: > + conn_addr = ACPI_BASE_ADR_FOR_EXT_MON + port_index; > + break; > + default: > + return -ENOTSUPP; > + } > + > + conn_addr |= ACPI_DEVICE_ID_SCHEME; > + conn_addr |= ACPI_FIRMWARE_CAN_DETECT; > + > + DRM_DEV_DEBUG(dev, "%s: Finding drm_connector ACPI node at _ADR=%llX\n", > + __func__, conn_addr); > + > + /* Look up the connector device, under the PCI device */ > + conn_dev = acpi_find_child_device(ACPI_COMPANION(dev), > + conn_addr, false); > + if (!conn_dev) > + return -ENODEV; > + > + connector->privacy_screen_handle = conn_dev->handle; > + return 0; > +} > + > +bool drm_privacy_screen_present(struct drm_connector *connector, u8 port_index) > +{ > + acpi_handle handle; > + > + if (drm_connector_attach_acpi_node(connector, port_index)) > + return false; > + > + handle = connector->privacy_screen_handle; > + if (!acpi_check_dsm(handle, &drm_conn_dsm_guid, > + DRM_CONN_DSM_REVID, > + 1 << DRM_CONN_DSM_FN_PRIVACY_GET_STATUS | > + 1 << DRM_CONN_DSM_FN_PRIVACY_ENABLE | > + 1 << DRM_CONN_DSM_FN_PRIVACY_DISABLE)) { > + DRM_WARN("%s: Odd, connector ACPI node but no privacy scrn?\n", > + connector->dev->dev); > + return false; > + } > + DRM_DEV_INFO(connector->dev->dev, "supports privacy screen\n"); > + return true; > +} > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > index 57e9f0ba331b..3ff3962d27db 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -39,6 +39,7 @@ > #include > #include > #include > +#include > #include > #include > > @@ -6354,6 +6355,8 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect > > connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT; > > + if (drm_privacy_screen_present(connector, port - PORT_A)) > + drm_connector_init_privacy_screen_property(connector); > } > } > > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h > index 681cb590f952..63b8318bd68c 100644 > --- a/include/drm/drm_connector.h > +++ b/include/drm/drm_connector.h > @@ -225,6 +225,20 @@ enum drm_link_status { > DRM_LINK_STATUS_BAD = DRM_MODE_LINK_STATUS_BAD, > }; > > +/** > + * enum drm_privacy_screen - privacy_screen status > + * > + * This enum is used to track and control the state of the privacy screen. > + * There are no separate #defines for the uapi! > + * > + * @DRM_PRIVACY_SCREEN_DISABLED: The privacy-screen on the panel is disabled > + * @DRM_PRIVACY_SCREEN_ENABLED: The privacy-screen on the panel is enabled > + */ > +enum drm_privacy_screen { > + DRM_PRIVACY_SCREEN_DISABLED = 0, > + DRM_PRIVACY_SCREEN_ENABLED = 1, > +}; > + > /** > * enum drm_panel_orientation - panel_orientation info for &drm_display_info > * > @@ -1410,6 +1424,9 @@ struct drm_connector { > > /** @hdr_sink_metadata: HDR Metadata Information read from sink */ > struct hdr_sink_metadata hdr_sink_metadata; > + > + /* Handle used by privacy screen code */ > + void *privacy_screen_handle; > }; > > #define obj_to_connector(x) container_of(x, struct drm_connector, base) > @@ -1543,6 +1560,7 @@ int drm_connector_init_panel_orientation_property( > struct drm_connector *connector, int width, int height); > int drm_connector_attach_max_bpc_property(struct drm_connector *connector, > int min, int max); > +int drm_connector_init_privacy_screen_property(struct drm_connector *connector); > > /** > * struct drm_tile_group - Tile group metadata > diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h > index 3bcbe30339f0..6d5d23da90d4 100644 > --- a/include/drm/drm_mode_config.h > +++ b/include/drm/drm_mode_config.h > @@ -813,6 +813,13 @@ struct drm_mode_config { > */ > struct drm_property *panel_orientation_property; > > + /** > + * @privacy_screen_property: Optional connector property to indicate > + * and control the state (enabled / disabled) of privacy-screen on the > + * panel, if present. > + */ > + struct drm_property *privacy_screen_property; > + > /** > * @writeback_fb_id_property: Property for writeback connectors, storing > * the ID of the output framebuffer. > diff --git a/include/drm/drm_privacy_screen.h b/include/drm/drm_privacy_screen.h > new file mode 100644 > index 000000000000..c589bbc47656 > --- /dev/null > +++ b/include/drm/drm_privacy_screen.h > @@ -0,0 +1,33 @@ > +/* SPDX-License-Identifier: GPL-2.0-or-later */ > +/* > + * Copyright © 2019 Google Inc. > + */ > + > +#ifndef __DRM_PRIVACY_SCREEN_H__ > +#define __DRM_PRIVACY_SCREEN_H__ > + > +#ifdef CONFIG_ACPI > +bool drm_privacy_screen_present(struct drm_connector *connector, u8 port); > +void drm_privacy_screen_set_val(struct drm_connector *connector, > + enum drm_privacy_screen val); > +enum drm_privacy_screen drm_privacy_screen_get_val(struct drm_connector > + *connector); > +#else > +static inline bool drm_privacy_screen_present(struct drm_connector *connector, > + u8 port) > +{ > + return false; > +} > + > +void drm_privacy_screen_set_val(struct drm_connector *connector, > + enum drm_privacy_screen val) > +{ } > + > +enum drm_privacy_screen drm_privacy_screen_get_val( > + struct drm_connector *connector) > +{ > + return DRM_PRIVACY_SCREEN_DISABLED; > +} > +#endif /* CONFIG_ACPI */ > + > +#endif /* __DRM_PRIVACY_SCREEN_H__ */ > -- > 2.23.0.866.gb869b98d4c-goog > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm: Add support for integrated privacy screens Date: Wed, 23 Oct 2019 11:21:27 +0200 Message-ID: <20191023092127.GY11828@phenom.ffwll.local> References: <20191023001206.15741-1-rajatja@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20191023001206.15741-1-rajatja@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rajat Jain Cc: seanpaul@google.com, David Airlie , dri-devel@lists.freedesktop.org, Daniel Thompson , Jonathan Corbet , jsbarnes@google.com, rajatxjain@gmail.com, intel-gfx@lists.freedesktop.org, mathewk@google.com, Maxime Ripard , Duncan Laurie , gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, Pavel Machek List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBPY3QgMjIsIDIwMTkgYXQgMDU6MTI6MDZQTSAtMDcwMCwgUmFqYXQgSmFpbiB3cm90 ZToKPiBDZXJ0YWluIGxhcHRvcHMgbm93IGNvbWUgd2l0aCBwYW5lbHMgdGhhdCBoYXZlIGludGVn cmF0ZWQgcHJpdmFjeQo+IHNjcmVlbnMgb24gdGhlbS4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg Zm9yIHN1Y2ggcGFuZWxzIGJ5IGFkZGluZwo+IGEgcHJpdmFjeS1zY3JlZW4gcHJvcGVydHkgdG8g dGhlIGRybV9jb25uZWN0b3IgZm9yIHRoZSBwYW5lbCwgdGhhdAo+IHRoZSB1c2Vyc3BhY2UgY2Fu IHRoZW4gdXNlIHRvIGNvbnRyb2wgYW5kIGNoZWNrIHRoZSBzdGF0dXMuIFRoZSBpZGVhCj4gd2Fz IGRpc2N1c3NlZCBoZXJlOgo+IAo+IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE5LzEwLzEvNzg2 Cj4gCj4gQUNQSSBtZXRob2RzIGFyZSB1c2VkIHRvIGlkZW50aWZ5LCBxdWVyeSBhbmQgY29udHJv bCBwcml2YWN5IHNjcmVlbjoKPiAKPiAqIElkZW50aWZ5aW5nIGFuIEFDUEkgb2JqZWN0IGNvcnJl c3BvbmRpbmcgdG8gdGhlIHBhbmVsOiBUaGUgcGF0Y2gKPiBmb2xsb3dzIEFDUEkgU3BlYyA2LjMg KGF2YWlsYWJsZSBhdAo+IGh0dHBzOi8vdWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9yZXNv dXJjZXMvQUNQSV82XzNfZmluYWxfSmFuMzAucGRmKS4KPiBQYWdlcyAxMTE5IC0gMTEyMyBkZXNj cmliZSB3aGF0IEkgYmVsaWV2ZSwgaXMgYSBzdGFuZGFyZCB3YXkgb2YKPiBpZGVudGlmeWluZyAv IGFkZHJlc3NpbmcgImRpc3BsYXkgcGFuZWxzIiBpbiB0aGUgQUNQSSB0YWJsZXMsIHRodXMKPiBh bGxvd2luZyBrZXJuZWwgdG8gYXR0YWNoIEFDUEkgbm9kZXMgdG8gdGhlIHBhbmVsLiBJTUhPLCB0 aGlzIGFiaWxpdHkKPiB0byBpZGVudGlmeSBhbmQgYXR0YWNoIEFDUEkgbm9kZXMgdG8gZHJtIGNv bm5lY3RvcnMgbWF5IGJlIHVzZWZ1bCBmb3IKPiByZWFzb25zIG90aGVyIHByaXZhY3ktc2NyZWVu cywgaW4gZnV0dXJlLgo+IAo+ICogSWRlbnRpZnlpbmcgdGhlIHByZXNlbmNlIG9mIHByaXZhY3kg c2NyZWVuLCBhbmQgY29udHJvbGxpbmcgaXQsIGlzIGRvbmUKPiB2aWEgQUNQSSBfRFNNIG1ldGhv ZHMuCj4gCj4gQ3VycmVudGx5LCB0aGlzIGlzIGRvbmUgb25seSBmb3IgdGhlIEludGVsIGRpc3Bs YXkgcG9ydHMuIEJ1dCBpbiBmdXR1cmUsCj4gdGhpcyBjYW4gYmUgZG9uZSBmb3IgYW55IG90aGVy IHBvcnRzIGlmIHRoZSBoYXJkd2FyZSBiZWNvbWVzIGF2YWlsYWJsZQo+IChlLmcuIGV4dGVybmFs IG1vbml0b3JzIHN1cHBvcnRpbmcgaW50ZWdyYXRlZCBwcml2YWN5IHNjcmVlbnM/KS4KPiAKPiBB bHNvLCB0aGlzIGNvZGUgY2FuIGJlIGV4dGVuZGVkIGluIGZ1dHVyZSB0byBzdXBwb3J0IG5vbi1B Q1BJIG1ldGhvZHMKPiAoZS5nLiB1c2luZyBhIGtlcm5lbCBHUElPIGRyaXZlciB0byB0b2dnbGUg YSBncGlvIHRoYXQgY29udHJvbHMgdGhlCj4gcHJpdmFjeS1zY3JlZW4pLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFJhamF0IEphaW4gPHJhamF0amFAZ29vZ2xlLmNvbT4KCk5ldyBwcm9wZXJ0aWVzIG5l ZWQgcHJvcGVydHkgZG9jcyBpbiB0aGUgcmVsZXZhbnQgc2VjdGlvbjoKCmh0dHBzOi8vZHJpLmZy ZWVkZXNrdG9wLm9yZy9kb2NzL2RybS9ncHUvZHJtLWttcy5odG1sI2ttcy1wcm9wZXJ0aWVzCgok IG1ha2UgaHRtbGRvY3MKCmZvciBidWlsZGluZyB0aGVtIGxvY2FsbHkuCgpDaGVlcnMsIERhbmll bAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAx ICsKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jICAgICAgIHwgICA1ICsKPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyAgICAgICAgIHwgIDM4ICsrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uYyAgICB8IDE3NiArKysrKysrKysrKysr KysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIHwg ICAzICsKPiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgICAgICAgIHwgIDE4ICsr Kwo+ICBpbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaCAgICAgICAgICAgfCAgIDcgKwo+ICBp bmNsdWRlL2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uaCAgICAgICAgfCAgMzMgKysrKysKPiAgOCBm aWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBpbmRleCA4MmZm ODI2YjMzY2MuLmUxZmMzM2Q2OWJiNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBAQCAtMTksNiArMTksNyBA QCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRybV9jYWNoZS5vIFwKPiAgCQlkcm1fc3luY29i ai5vIGRybV9sZWFzZS5vIGRybV93cml0ZWJhY2subyBkcm1fY2xpZW50Lm8gXAo+ICAJCWRybV9j bGllbnRfbW9kZXNldC5vIGRybV9hdG9taWNfdWFwaS5vIGRybV9oZGNwLm8KPiAgCj4gK2RybS0k KENPTkZJR19BQ1BJKSArPSBkcm1fcHJpdmFjeV9zY3JlZW4ubwo+ICBkcm0tJChDT05GSUdfRFJN X0xFR0FDWSkgKz0gZHJtX2xlZ2FjeV9taXNjLm8gZHJtX2J1ZnMubyBkcm1fY29udGV4dC5vIGRy bV9kbWEubyBkcm1fc2NhdHRlci5vIGRybV9sb2NrLm8KPiAgZHJtLSQoQ09ORklHX0RSTV9MSUJf UkFORE9NKSArPSBsaWIvZHJtX3JhbmRvbS5vCj4gIGRybS0kKENPTkZJR19EUk1fVk0pICs9IGRy bV92bS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+IGluZGV4IDdhMjZiZmI1MzI5Yy4u NDQxMzExNjVlNGVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3Vh cGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+IEBAIC0zMCw2 ICszMCw3IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICAjaW5jbHVkZSA8ZHJt L2RybV9wcmludC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1fcHJpdmFjeV9zY3JlZW4uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+ Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgo+ICAKPiBAQCAtNzY2LDYgKzc2Nyw4IEBA IHN0YXRpYyBpbnQgZHJtX2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJCQkJCSAgIGZlbmNlX3B0cik7Cj4gIAl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+bWF4X2JwY19wcm9wZXJ0eSkgewo+ICAJCXN0YXRl LT5tYXhfcmVxdWVzdGVkX2JwYyA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29u ZmlnLT5wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eSkgewo+ICsJCWRybV9wcml2YWN5X3NjcmVlbl9z ZXRfdmFsKGNvbm5lY3RvciwgdmFsKTsKPiAgCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+ YXRvbWljX3NldF9wcm9wZXJ0eSkgewo+ICAJCXJldHVybiBjb25uZWN0b3ItPmZ1bmNzLT5hdG9t aWNfc2V0X3Byb3BlcnR5KGNvbm5lY3RvciwKPiAgCQkJCXN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsK PiBAQCAtODQyLDYgKzg0NSw4IEBAIGRybV9hdG9taWNfY29ubmVjdG9yX2dldF9wcm9wZXJ0eShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCSp2YWwgPSAwOwo+ICAJfSBlbHNl IGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPm1heF9icGNfcHJvcGVydHkpIHsKPiAgCQkqdmFs ID0gc3RhdGUtPm1heF9yZXF1ZXN0ZWRfYnBjOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBj b25maWctPnByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KSB7Cj4gKwkJKnZhbCA9IGRybV9wcml2YWN5 X3NjcmVlbl9nZXRfdmFsKGNvbm5lY3Rvcik7Cj4gIAl9IGVsc2UgaWYgKGNvbm5lY3Rvci0+ZnVu Y3MtPmF0b21pY19nZXRfcHJvcGVydHkpIHsKPiAgCQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+ YXRvbWljX2dldF9wcm9wZXJ0eShjb25uZWN0b3IsCj4gIAkJCQlzdGF0ZSwgcHJvcGVydHksIHZh bCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gaW5kZXggNGM3NjY2MjRiMjBkLi5hMzFlMDM4 MjEzMmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiBAQCAtODIxLDYgKzgyMSwxMSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBkcm1fcGFuZWxfb3JpZW50 YXRpb25fZW51bV9saXN0W10gPSB7Cj4gIAl7IERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX1JJ R0hUX1VQLAkiUmlnaHQgU2lkZSBVcCIJfSwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX3Byb3BfZW51bV9saXN0IGRybV9wcml2YWN5X3NjcmVlbl9lbnVtX2xpc3RbXSA9IHsK PiArCXsgRFJNX1BSSVZBQ1lfU0NSRUVOX0RJU0FCTEVELCAiRGlzYWJsZWQiIH0sCj4gKwl7IERS TV9QUklWQUNZX1NDUkVFTl9FTkFCTEVELCAiRW5hYmxlZCIgfSwKPiArfTsKPiArCj4gIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IGRybV9kdmlfaV9zZWxlY3RfZW51bV9s aXN0W10gPSB7Cj4gIAl7IERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9BdXRvbWF0aWMsICJBdXRvbWF0 aWMiIH0sIC8qIERWSS1JIGFuZCBUVi1vdXQgKi8KPiAgCXsgRFJNX01PREVfU1VCQ09OTkVDVE9S X0RWSUQsICAgICAgIkRWSS1EIiAgICAgfSwgLyogRFZJLUkgICovCj4gQEAgLTIyNTMsNiArMjI1 OCwzOSBAQCBzdGF0aWMgdm9pZCBkcm1fdGlsZV9ncm91cF9mcmVlKHN0cnVjdCBrcmVmICprcmVm KQo+ICAJa2ZyZWUodGcpOwo+ICB9Cj4gIAo+ICsvKioKPiArICogZHJtX2Nvbm5lY3Rvcl9pbml0 X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5IC0KPiArICoJY3JlYXRlIGFuZCBhdHRhY2ggdGhlIGNv bm5lY3RlcidzIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5Lgo+ICsgKiBAY29ubmVjdG9yOiBjb25u ZWN0b3IgZm9yIHdoaWNoIHRvIGluaXQgdGhlIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5Lgo+ICsg Kgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGF0dGFjaGVzIHRoZSAicHJpdmFjeS1z Y3JlZW4iIHByb3BlcnR5IHRvIHRoZQo+ICsgKiBjb25uZWN0b3IuIEluaXRpYWwgc3RhdGUgb2Yg cHJpdmFjeS1zY3JlZW4gaXMgc2V0IHRvIGRpc2FibGVkLgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4gKyAqLwo+ ICtpbnQgZHJtX2Nvbm5lY3Rvcl9pbml0X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gKwo+ICsJ cHJvcCA9IGRldi0+bW9kZV9jb25maWcucHJpdmFjeV9zY3JlZW5fcHJvcGVydHk7Cj4gKwlpZiAo IXByb3ApIHsKPiArCQlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGRldiwgRFJNX01P REVfUFJPUF9FTlVNLAo+ICsJCQkJInByaXZhY3ktc2NyZWVuIiwgZHJtX3ByaXZhY3lfc2NyZWVu X2VudW1fbGlzdCwKPiArCQkJCUFSUkFZX1NJWkUoZHJtX3ByaXZhY3lfc2NyZWVuX2VudW1fbGlz dCkpOwo+ICsJCWlmICghcHJvcCkKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJCWRldi0+ bW9kZV9jb25maWcucHJpdmFjeV9zY3JlZW5fcHJvcGVydHkgPSBwcm9wOwo+ICsJfQo+ICsKPiAr CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsIHByb3AsCj4gKwkJ CQkgICBEUk1fUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr RVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2luaXRfcHJpdmFjeV9zY3JlZW5fcHJvcGVydHkp Owo+ICsKPiAgLyoqCj4gICAqIGRybV9tb2RlX3B1dF90aWxlX2dyb3VwIC0gZHJvcCBhIHJlZmVy ZW5jZSB0byBhIHRpbGUgZ3JvdXAuCj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9wcml2YWN5X3NjcmVlbi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjFkNjhlOGFhNmM1Zgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX3ByaXZhY3lfc2NyZWVuLmMKPiBAQCAtMCwwICsxLDE3NiBAQAo+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgo+ICsvKgo+ICsgKiBEUk0gcHJp dmFjeSBTY3JlZW4gY29kZQo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBHb29nbGUgSW5j Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9wY2kuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiArCj4g KyNkZWZpbmUgRFJNX0NPTk5fRFNNX1JFVklEIDEKPiArCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNN X0ZOX1BSSVZBQ1lfR0VUX1NUQVRVUwkxCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNNX0ZOX1BSSVZB Q1lfRU5BQkxFCQkyCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lfRElTQUJMRQkJ Mwo+ICsKPiArc3RhdGljIGNvbnN0IGd1aWRfdCBkcm1fY29ubl9kc21fZ3VpZCA9Cj4gKwlHVUlE X0lOSVQoMHhDNzAzMzExMywgMHg4NzIwLCAweDRDRUIsCj4gKwkJICAweDkwLCAweDkwLCAweDlE LCAweDUyLCAweEIzLCAweEU1LCAweDJELCAweDczKTsKPiArCj4gKy8qCj4gKyAqIE1ha2VzIF9E U00gY2FsbCB0byBzZXQgcHJpdmFjeSBzY3JlZW4gc3RhdHVzIG9yIGdldCBwcml2YWN5IHNjcmVl bi4gUmV0dXJuCj4gKyAqIHZhbHVlIG1hdHRlcnMgb25seSBmb3IgUFJJVkFDWV9HRVRfU1RBVFVT IGNhc2UuIFJldHVybnMgMCBpZiBkaXNhYmxlZCwgMSBpZgo+ICsgKiBlbmFibGVkLgo+ICsgKi8K PiArc3RhdGljIGludCBhY3BpX3ByaXZhY3lfc2NyZWVuX2NhbGxfZHNtKGFjcGlfaGFuZGxlIGNv bm5faGFuZGxlLCB1NjQgZnVuYykKPiArewo+ICsJdW5pb24gYWNwaV9vYmplY3QgKm9iajsKPiAr CWludCByZXQgPSAwOwo+ICsKPiArCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKGNvbm5faGFuZGxl LCAmZHJtX2Nvbm5fZHNtX2d1aWQsCj4gKwkJCQlEUk1fQ09OTl9EU01fUkVWSUQsIGZ1bmMsIE5V TEwpOwo+ICsJaWYgKCFvYmopIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gZXZh bHVhdGUgX0RTTSBmb3IgZm4gJWxseFxuIiwgZnVuYyk7Cj4gKwkJLyogQ2FuJ3QgZG8gbXVjaC4g Rm9yIGdldF92YWwsIGFzc3VtZSBwcml2YWN5X3NjcmVlbiBkaXNhYmxlZCAqLwo+ICsJCWdvdG8g ZG9uZTsKPiArCX0KPiArCj4gKwlpZiAoZnVuYyA9PSBEUk1fQ09OTl9EU01fRk5fUFJJVkFDWV9H RVRfU1RBVFVTICYmCj4gKwkgICAgb2JqLT50eXBlID09IEFDUElfVFlQRV9JTlRFR0VSKQo+ICsJ CXJldCA9ICEhb2JqLT5pbnRlZ2VyLnZhbHVlOwo+ICtkb25lOgo+ICsJQUNQSV9GUkVFKG9iaik7 Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICt2b2lkIGRybV9wcml2YWN5X3NjcmVlbl9zZXRf dmFsKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCQkgZW51bSBkcm1fcHJp dmFjeV9zY3JlZW4gdmFsKQo+ICt7Cj4gKwlhY3BpX2hhbmRsZSBhY3BpX2hhbmRsZSA9IGNvbm5l Y3Rvci0+cHJpdmFjeV9zY3JlZW5faGFuZGxlOwo+ICsKPiArCWlmICghYWNwaV9oYW5kbGUpCj4g KwkJcmV0dXJuOwo+ICsKPiArCWlmICh2YWwgPT0gRFJNX1BSSVZBQ1lfU0NSRUVOX0RJU0FCTEVE KQo+ICsJCWFjcGlfcHJpdmFjeV9zY3JlZW5fY2FsbF9kc20oYWNwaV9oYW5kbGUsCj4gKwkJCQkJ ICAgICBEUk1fQ09OTl9EU01fRk5fUFJJVkFDWV9ESVNBQkxFKTsKPiArCWVsc2UgaWYgKHZhbCA9 PSBEUk1fUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCkKPiArCQlhY3BpX3ByaXZhY3lfc2NyZWVuX2Nh bGxfZHNtKGFjcGlfaGFuZGxlLAo+ICsJCQkJCSAgICAgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lf RU5BQkxFKTsKPiArfQo+ICsKPiArZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gZHJtX3ByaXZhY3lf c2NyZWVuX2dldF92YWwoc3RydWN0IGRybV9jb25uZWN0b3IKPiArCQkJCQkJICAgKmNvbm5lY3Rv cikKPiArewo+ICsJYWNwaV9oYW5kbGUgYWNwaV9oYW5kbGUgPSBjb25uZWN0b3ItPnByaXZhY3lf c2NyZWVuX2hhbmRsZTsKPiArCj4gKwlpZiAoYWNwaV9oYW5kbGUgJiYKPiArCSAgICBhY3BpX3By aXZhY3lfc2NyZWVuX2NhbGxfZHNtKGFjcGlfaGFuZGxlLAo+ICsJCQkJCSBEUk1fQ09OTl9EU01f Rk5fUFJJVkFDWV9HRVRfU1RBVFVTKSkKPiArCQlyZXR1cm4gRFJNX1BSSVZBQ1lfU0NSRUVOX0VO QUJMRUQ7Cj4gKwo+ICsJcmV0dXJuIERSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxFRDsKPiArfQo+ ICsKPiArLyoKPiArICogU2VlIEFDUEkgU3BlYyB2Ni4zLCBUYWJsZSBCLTIsICJEaXNwbGF5IFR5 cGUiIGZvciBkZXRhaWxzLgo+ICsgKiBJbiBzaG9ydCwgdGhlc2UgbWFjcm9zIGRlZmluZSB0aGUg YmFzZSBfQURSIHZhbHVlcyBmb3IgQUNQSSBub2Rlcwo+ICsgKi8KPiArI2RlZmluZSBBQ1BJX0JB U0VfQURSX0ZPUl9PVEhFUlMJKDBVTEwgPDwgOCkKPiArI2RlZmluZSBBQ1BJX0JBU0VfQURSX0ZP Ul9WR0EJCSgxVUxMIDw8IDgpCj4gKyNkZWZpbmUgQUNQSV9CQVNFX0FEUl9GT1JfVFYJCSgyVUxM IDw8IDgpCj4gKyNkZWZpbmUgQUNQSV9CQVNFX0FEUl9GT1JfRVhUX01PTgkoM1VMTCA8PCA4KQo+ ICsjZGVmaW5lIEFDUElfQkFTRV9BRFJfRk9SX0lOVEVHUkFURUQJKDRVTEwgPDwgOCkKPiArCj4g KyNkZWZpbmUgQUNQSV9ERVZJQ0VfSURfU0NIRU1FCQkoMVVMTCA8PCAzMSkKPiArI2RlZmluZSBB Q1BJX0ZJUk1XQVJFX0NBTl9ERVRFQ1QJKDFVTEwgPDwgMTYpCj4gKwo+ICsvKgo+ICsgKiBSZWY6 IEFDUEkgU3BlYyA2LjMKPiArICogaHR0cHM6Ly91ZWZpLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVz L3Jlc291cmNlcy9BQ1BJXzZfM19maW5hbF9KYW4zMC5wZGYKPiArICogUGFnZXMgMTExOSAtIDEx MjMgZGVzY3JpYmUsIHdoYXQgSSBiZWxpZXZlLCBhIHN0YW5kYXJkIHdheSBvZgo+ICsgKiBpZGVu dGlmeWluZyAvIGFkZHJlc3NpbmcgImRpc3BsYXkgcGFuZWxzIiBpbiB0aGUgQUNQSS4gVGh1cyBp dCBwcm92aWRlcwo+ICsgKiBhIHdheSBmb3IgdGhlIEFDUEkgdG8gZGVmaW5lIGRldmljZXMgZm9y IHRoZSBkaXNwbGF5IHBhbmVscyBhdHRhY2hlZAo+ICsgKiB0byB0aGUgc3lzdGVtLiBJdCB0aHVz IHByb3ZpZGVzIGEgd2F5IGZvciB0aGUgQklPUyB0byBleHBvcnQgYW55IHBhbmVsCj4gKyAqIHNw ZWNpZmljIHByb3BlcnRpZXMgdG8gdGhlIHN5c3RlbSB2aWEgQUNQSSAobGlrZSBkZXZpY2UgdHJl ZXMpLgo+ICsgKgo+ICsgKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGxvb2tzIHVwIHRoZSBBQ1BJ IG5vZGUgZm9yIGEgY29ubmVjdG9yIGFuZCBsaW5rcwo+ICsgKiB0byBpdC4gVGVjaG5pY2FsbHkg aXQgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgcHJpdmFjeV9zY3JlZW4gY29kZSwgYW5kCj4gKyAq IGlkZWFsbHkgbWF5IGJlIGNhbGxlZCBmb3IgYWxsIGNvbm5lY3RvcnMuIEl0IGlzIGdlbmVyYWxs eSBhIGdvb2QgaWRlYSB0bwo+ICsgKiBiZSBhYmxlIHRvIGF0dGFjaCBhbiBBQ1BJIG5vZGUgdG8g ZGVzY3JpYmUgYW55dGhpbmcgaWYgbmVlZGVkLiAoVGhpcyBjYW4KPiArICogaGVscCBpbiBmdXR1 cmUgZm9yIG90aGVyIHBhbmVsIHNwZWNpZmljIGZlYXR1cmVzIG1heWJlKS4gSG93ZXZlciwgaXQK PiArICogbmVlZHMgYSAicG9ydCBpbmRleCIgd2hpY2ggSSBiZWxpZXZlIGlzIHRoZSBpbmRleCB3 aXRoaW4gYSBwYXJ0aWN1bGFyCj4gKyAqIHR5cGUgb2YgcG9ydCAoUmVmIHRvIHRoZSBwYWdlcyBv ZiBzcGVjIG1lbnRpb25lZCBhYm92ZSkuIFRoaXMgcG9ydCBpbmRleAo+ICsgKiB1bmZvcnR1bmF0 ZWx5IGlzIG5vdCBhdmFpbGFibGUgaW4gRFJNIGNvZGUsIHNvIGN1cnJlbnRseSBpdHMgY2FsbCBp cwo+ICsgKiBvcmlnaW5hdGVkIGZyb20gaTkxNSBkcml2ZXIuCj4gKyAqLwo+ICtzdGF0aWMgaW50 IGRybV9jb25uZWN0b3JfYXR0YWNoX2FjcGlfbm9kZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+ICsJCQkJCSAgdTggcG9ydF9pbmRleCkKPiArewo+ICsJc3RydWN0IGRldmljZSAq ZGV2ID0gJmNvbm5lY3Rvci0+ZGV2LT5wZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgYWNwaV9kZXZpY2Ug KmNvbm5fZGV2Owo+ICsJdTY0IGNvbm5fYWRkcjsKPiArCj4gKwkvKgo+ICsJICogRGV0ZXJtaW5l IHdoYXQgX0FEUiB0byBsb29rIGZvciwgZGVwZW5kaW5nIG9uIGRldmljZSB0eXBlIGFuZAo+ICsJ ICogcG9ydCBudW1iZXIuIFBvdGVudGlhbGx5IHdlIG9ubHkgY2FyZSBhYm91dCB0aGUKPiArCSAq IGVEUCAvIGludGVncmF0ZWQgZGlzcGxheXM/Cj4gKwkgKi8KPiArCXN3aXRjaCAoY29ubmVjdG9y LT5jb25uZWN0b3JfdHlwZSkgewo+ICsJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfZURQOgo+ICsJ CWNvbm5fYWRkciA9IEFDUElfQkFTRV9BRFJfRk9SX0lOVEVHUkFURUQgKyBwb3J0X2luZGV4Owo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfVkdBOgo+ICsJCWNvbm5fYWRk ciA9IEFDUElfQkFTRV9BRFJfRk9SX1ZHQSArIHBvcnRfaW5kZXg7Cj4gKwkJYnJlYWs7Cj4gKwlj YXNlIERSTV9NT0RFX0NPTk5FQ1RPUl9UVjoKPiArCQljb25uX2FkZHIgPSBBQ1BJX0JBU0VfQURS X0ZPUl9UViArIHBvcnRfaW5kZXg7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9NT0RFX0NPTk5F Q1RPUl9EaXNwbGF5UG9ydDoKPiArCQljb25uX2FkZHIgPSBBQ1BJX0JBU0VfQURSX0ZPUl9FWFRf TU9OICsgcG9ydF9pbmRleDsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1F Tk9UU1VQUDsKPiArCX0KPiArCj4gKwljb25uX2FkZHIgfD0gQUNQSV9ERVZJQ0VfSURfU0NIRU1F Owo+ICsJY29ubl9hZGRyIHw9IEFDUElfRklSTVdBUkVfQ0FOX0RFVEVDVDsKPiArCj4gKwlEUk1f REVWX0RFQlVHKGRldiwgIiVzOiBGaW5kaW5nIGRybV9jb25uZWN0b3IgQUNQSSBub2RlIGF0IF9B RFI9JWxsWFxuIiwKPiArCQkgICAgICBfX2Z1bmNfXywgY29ubl9hZGRyKTsKPiArCj4gKwkvKiBM b29rIHVwIHRoZSBjb25uZWN0b3IgZGV2aWNlLCB1bmRlciB0aGUgUENJIGRldmljZSAqLwo+ICsJ Y29ubl9kZXYgPSBhY3BpX2ZpbmRfY2hpbGRfZGV2aWNlKEFDUElfQ09NUEFOSU9OKGRldiksCj4g KwkJCQkJICBjb25uX2FkZHIsIGZhbHNlKTsKPiArCWlmICghY29ubl9kZXYpCj4gKwkJcmV0dXJu IC1FTk9ERVY7Cj4gKwo+ICsJY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9oYW5kbGUgPSBjb25u X2Rldi0+aGFuZGxlOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2Jvb2wgZHJtX3ByaXZhY3lf c2NyZWVuX3ByZXNlbnQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTggcG9ydF9p bmRleCkKPiArewo+ICsJYWNwaV9oYW5kbGUgaGFuZGxlOwo+ICsKPiArCWlmIChkcm1fY29ubmVj dG9yX2F0dGFjaF9hY3BpX25vZGUoY29ubmVjdG9yLCBwb3J0X2luZGV4KSkKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwo+ICsJaGFuZGxlID0gY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9oYW5kbGU7 Cj4gKwlpZiAoIWFjcGlfY2hlY2tfZHNtKGhhbmRsZSwgJmRybV9jb25uX2RzbV9ndWlkLAo+ICsJ CQkgICAgRFJNX0NPTk5fRFNNX1JFVklELAo+ICsJCQkgICAgMSA8PCBEUk1fQ09OTl9EU01fRk5f UFJJVkFDWV9HRVRfU1RBVFVTIHwKPiArCQkJICAgIDEgPDwgRFJNX0NPTk5fRFNNX0ZOX1BSSVZB Q1lfRU5BQkxFIHwKPiArCQkJICAgIDEgPDwgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lfRElTQUJM RSkpIHsKPiArCQlEUk1fV0FSTigiJXM6IE9kZCwgY29ubmVjdG9yIEFDUEkgbm9kZSBidXQgbm8g cHJpdmFjeSBzY3JuP1xuIiwKPiArCQkJIGNvbm5lY3Rvci0+ZGV2LT5kZXYpOwo+ICsJCXJldHVy biBmYWxzZTsKPiArCX0KPiArCURSTV9ERVZfSU5GTyhjb25uZWN0b3ItPmRldi0+ZGV2LCAic3Vw cG9ydHMgcHJpdmFjeSBzY3JlZW5cbiIpOwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4gaW5kZXggNTdlOWYwYmEzMzFiLi4zZmYz OTYyZDI3ZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4g QEAgLTM5LDYgKzM5LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4gICNp bmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1faGRjcC5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9wcml2YWN5X3NjcmVlbi5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9w cm9iZV9oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ICAKPiBAQCAtNjM1 NCw2ICs2MzU1LDggQEAgaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3QKPiAgCj4gIAkJY29ubmVjdG9y LT5zdGF0ZS0+c2NhbGluZ19tb2RlID0gRFJNX01PREVfU0NBTEVfQVNQRUNUOwo+ICAKPiArCQlp ZiAoZHJtX3ByaXZhY3lfc2NyZWVuX3ByZXNlbnQoY29ubmVjdG9yLCBwb3J0IC0gUE9SVF9BKSkK PiArCQkJZHJtX2Nvbm5lY3Rvcl9pbml0X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KGNvbm5lY3Rv cik7Cj4gIAl9Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaCBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+IGluZGV4IDY4MWNiNTkwZjk1Mi4u NjNiODMxOGJkNjhjIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+IEBAIC0yMjUsNiArMjI1LDIwIEBA IGVudW0gZHJtX2xpbmtfc3RhdHVzIHsKPiAgCURSTV9MSU5LX1NUQVRVU19CQUQgPSBEUk1fTU9E RV9MSU5LX1NUQVRVU19CQUQsCj4gIH07Cj4gIAo+ICsvKioKPiArICogZW51bSBkcm1fcHJpdmFj eV9zY3JlZW4gLSBwcml2YWN5X3NjcmVlbiBzdGF0dXMKPiArICoKPiArICogVGhpcyBlbnVtIGlz IHVzZWQgdG8gdHJhY2sgYW5kIGNvbnRyb2wgdGhlIHN0YXRlIG9mIHRoZSBwcml2YWN5IHNjcmVl bi4KPiArICogVGhlcmUgYXJlIG5vIHNlcGFyYXRlICNkZWZpbmVzIGZvciB0aGUgdWFwaSEKPiAr ICoKPiArICogQERSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxFRDogVGhlIHByaXZhY3ktc2NyZWVu IG9uIHRoZSBwYW5lbCBpcyBkaXNhYmxlZAo+ICsgKiBARFJNX1BSSVZBQ1lfU0NSRUVOX0VOQUJM RUQ6ICBUaGUgcHJpdmFjeS1zY3JlZW4gb24gdGhlIHBhbmVsIGlzIGVuYWJsZWQKPiArICovCj4g K2VudW0gZHJtX3ByaXZhY3lfc2NyZWVuIHsKPiArCURSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxF RCA9IDAsCj4gKwlEUk1fUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCA9IDEsCj4gK307Cj4gKwo+ICAv KioKPiAgICogZW51bSBkcm1fcGFuZWxfb3JpZW50YXRpb24gLSBwYW5lbF9vcmllbnRhdGlvbiBp bmZvIGZvciAmZHJtX2Rpc3BsYXlfaW5mbwo+ICAgKgo+IEBAIC0xNDEwLDYgKzE0MjQsOSBAQCBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciB7Cj4gIAo+ICAJLyoqIEBoZHJfc2lua19tZXRhZGF0YTogSERS IE1ldGFkYXRhIEluZm9ybWF0aW9uIHJlYWQgZnJvbSBzaW5rICovCj4gIAlzdHJ1Y3QgaGRyX3Np bmtfbWV0YWRhdGEgaGRyX3NpbmtfbWV0YWRhdGE7Cj4gKwo+ICsJLyogSGFuZGxlIHVzZWQgYnkg cHJpdmFjeSBzY3JlZW4gY29kZSAqLwo+ICsJdm9pZCAqcHJpdmFjeV9zY3JlZW5faGFuZGxlOwo+ ICB9Owo+ICAKPiAgI2RlZmluZSBvYmpfdG9fY29ubmVjdG9yKHgpIGNvbnRhaW5lcl9vZih4LCBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciwgYmFzZSkKPiBAQCAtMTU0Myw2ICsxNTYwLDcgQEAgaW50IGRy bV9jb25uZWN0b3JfaW5pdF9wYW5lbF9vcmllbnRhdGlvbl9wcm9wZXJ0eSgKPiAgCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Cj4gIGludCBk cm1fY29ubmVjdG9yX2F0dGFjaF9tYXhfYnBjX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4gIAkJCQkJICBpbnQgbWluLCBpbnQgbWF4KTsKPiAraW50IGRybV9jb25u ZWN0b3JfaW5pdF9wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKPiAgCj4gIC8qKgo+ICAgKiBzdHJ1Y3QgZHJtX3RpbGVfZ3JvdXAgLSBUaWxl IGdyb3VwIG1ldGFkYXRhCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZp Zy5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiBpbmRleCAzYmNiZTMwMzM5ZjAu LjZkNWQyM2RhOTBkNCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcu aAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oCj4gQEAgLTgxMyw2ICs4MTMs MTMgQEAgc3RydWN0IGRybV9tb2RlX2NvbmZpZyB7Cj4gIAkgKi8KPiAgCXN0cnVjdCBkcm1fcHJv cGVydHkgKnBhbmVsX29yaWVudGF0aW9uX3Byb3BlcnR5Owo+ICAKPiArCS8qKgo+ICsJICogQHBy aXZhY3lfc2NyZWVuX3Byb3BlcnR5OiBPcHRpb25hbCBjb25uZWN0b3IgcHJvcGVydHkgdG8gaW5k aWNhdGUKPiArCSAqIGFuZCBjb250cm9sIHRoZSBzdGF0ZSAoZW5hYmxlZCAvIGRpc2FibGVkKSBv ZiBwcml2YWN5LXNjcmVlbiBvbiB0aGUKPiArCSAqIHBhbmVsLCBpZiBwcmVzZW50Lgo+ICsJICov Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcml2YWN5X3NjcmVlbl9wcm9wZXJ0eTsKPiArCj4g IAkvKioKPiAgCSAqIEB3cml0ZWJhY2tfZmJfaWRfcHJvcGVydHk6IFByb3BlcnR5IGZvciB3cml0 ZWJhY2sgY29ubmVjdG9ycywgc3RvcmluZwo+ICAJICogdGhlIElEIG9mIHRoZSBvdXRwdXQgZnJh bWVidWZmZXIuCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5o IGIvaW5jbHVkZS9kcm0vZHJtX3ByaXZhY3lfc2NyZWVuLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzU4OWJiYzQ3NjU2Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2luY2x1ZGUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5oCj4gQEAgLTAsMCArMSwzMyBAQAo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBHb29nbGUgSW5jLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYg X19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9fCj4gKyNkZWZpbmUgX19EUk1fUFJJVkFDWV9TQ1JFRU5f SF9fCj4gKwo+ICsjaWZkZWYgQ09ORklHX0FDUEkKPiArYm9vbCBkcm1fcHJpdmFjeV9zY3JlZW5f cHJlc2VudChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1OCBwb3J0KTsKPiArdm9p ZCBkcm1fcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCQkJZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gdmFsKTsKPiArZW51bSBkcm1fcHJp dmFjeV9zY3JlZW4gZHJtX3ByaXZhY3lfc2NyZWVuX2dldF92YWwoc3RydWN0IGRybV9jb25uZWN0 b3IKPiArCQkJCQkJICAgKmNvbm5lY3Rvcik7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUgYm9v bCBkcm1fcHJpdmFjeV9zY3JlZW5fcHJlc2VudChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCQkJCSAgICAgIHU4IHBvcnQpCj4gK3sKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ ICsKPiArdm9pZCBkcm1fcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICsJCQkJZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gdmFsKQo+ICt7IH0K PiArCj4gK2VudW0gZHJtX3ByaXZhY3lfc2NyZWVuIGRybV9wcml2YWN5X3NjcmVlbl9nZXRfdmFs KAo+ICsJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXJldHVy biBEUk1fUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQ7Cj4gK30KPiArI2VuZGlmIC8qIENPTkZJR19B Q1BJICovCj4gKwo+ICsjZW5kaWYgLyogX19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9fICovCj4gLS0g Cj4gMi4yMy4wLjg2Ni5nYjg2OWI5OGQ0Yy1nb29nCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 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 0FC7FCA9EB9 for ; Wed, 23 Oct 2019 09:21:35 +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 E4CAA2084C for ; Wed, 23 Oct 2019 09:21:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E4CAA2084C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 4920989176; Wed, 23 Oct 2019 09:21:34 +0000 (UTC) Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id E48D589176 for ; Wed, 23 Oct 2019 09:21:32 +0000 (UTC) Received: by mail-wr1-x442.google.com with SMTP id r1so11430820wrs.9 for ; Wed, 23 Oct 2019 02:21:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=hn8D9HlEsPbkhWg9lbIBIet9NkmHLPjuXeikJJ7gSrw=; b=n5tDAOY48Fu8dHMLalCy1ZtF3DO4Ft1Nwa86FFAUMxqyxwlVwhjDK334e1TyTawHhj YaRtnmvkn6coM5b6gLV5REamUXAtXLNOm/vh9zd9DrON08Z9tI2eG+xVHw0ZifEEjldE VOaZovpm7gIDdrBhrNzjQkPkuCDSS9lQYN5J3C+Gtu6T37yZ0NhLqMs5l9yQakYw7mkp JDdfknhym5FF4cRwUSZJoyBOWgcjamSt4nWwHNHQ9eC1AG2oSI9SSnh2HO5GLjm/4s11 gWm8Zgrj4sbj+HdeRqkzXY1uqxiOBeiTfdusNOK+MYiPzJeBCWUxXyJjcGq6gxFP5+jN KrAg== X-Gm-Message-State: APjAAAWLyzIz5v+VfS4sRY0OoP2TumY9+dh6yiKM73N56DWBduEQqOC1 5R3hqcOLdCFgJCrXsJsgRzTSkw== X-Google-Smtp-Source: APXvYqxdDqv5OQ1s2mqNxW7PHfRsCvksPP87xgwgwjbsBoLbkTSMPzWP19HgkayLkaPl15bCiIxvhA== X-Received: by 2002:a05:6000:118f:: with SMTP id g15mr4045292wrx.242.1571822490034; Wed, 23 Oct 2019 02:21:30 -0700 (PDT) Received: from phenom.ffwll.local (212-51-149-96.fiber7.init7.net. [212.51.149.96]) by smtp.gmail.com with ESMTPSA id d8sm7872047wrr.71.2019.10.23.02.21.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Oct 2019 02:21:29 -0700 (PDT) Date: Wed, 23 Oct 2019 11:21:27 +0200 From: Daniel Vetter To: Rajat Jain Subject: Re: [PATCH] drm: Add support for integrated privacy screens Message-ID: <20191023092127.GY11828@phenom.ffwll.local> Mail-Followup-To: Rajat Jain , Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , Chris Wilson , Imre Deak , =?iso-8859-1?Q?Jos=E9?= Roberto de Souza , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, gregkh@linuxfoundation.org, mathewk@google.com, Daniel Thompson , Jonathan Corbet , Pavel Machek , seanpaul@google.com, Duncan Laurie , jsbarnes@google.com, rajatxjain@gmail.com References: <20191023001206.15741-1-rajatja@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191023001206.15741-1-rajatja@google.com> X-Operating-System: Linux phenom 5.2.0-2-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=hn8D9HlEsPbkhWg9lbIBIet9NkmHLPjuXeikJJ7gSrw=; b=STYENaT1GWt3vSQSzL+13on3OtnPcFf/5cKkTZFHx9/Ozl7Albnihj9Ka518G/6eek qIMRPL8mJYaaeIM1PfZz9uH1B5NCFzZDklq5tiETwmNE6HPcTNtTaxwN9K9DuFNQgYKj nJsc7rFhe4EbJ2OouUdAS4pQC0arh+zSCIkos= 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: seanpaul@google.com, David Airlie , dri-devel@lists.freedesktop.org, Daniel Thompson , Jonathan Corbet , jsbarnes@google.com, rajatxjain@gmail.com, intel-gfx@lists.freedesktop.org, mathewk@google.com, Rodrigo Vivi , =?iso-8859-1?Q?Jos=E9?= Roberto de Souza , Sean Paul , Duncan Laurie , gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, Pavel Machek Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191023092127.RAzHBRq4f2T8zRRWO2vldrJOyVmAgwy80oU2C2vSvkQ@z> T24gVHVlLCBPY3QgMjIsIDIwMTkgYXQgMDU6MTI6MDZQTSAtMDcwMCwgUmFqYXQgSmFpbiB3cm90 ZToKPiBDZXJ0YWluIGxhcHRvcHMgbm93IGNvbWUgd2l0aCBwYW5lbHMgdGhhdCBoYXZlIGludGVn cmF0ZWQgcHJpdmFjeQo+IHNjcmVlbnMgb24gdGhlbS4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg Zm9yIHN1Y2ggcGFuZWxzIGJ5IGFkZGluZwo+IGEgcHJpdmFjeS1zY3JlZW4gcHJvcGVydHkgdG8g dGhlIGRybV9jb25uZWN0b3IgZm9yIHRoZSBwYW5lbCwgdGhhdAo+IHRoZSB1c2Vyc3BhY2UgY2Fu IHRoZW4gdXNlIHRvIGNvbnRyb2wgYW5kIGNoZWNrIHRoZSBzdGF0dXMuIFRoZSBpZGVhCj4gd2Fz IGRpc2N1c3NlZCBoZXJlOgo+IAo+IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE5LzEwLzEvNzg2 Cj4gCj4gQUNQSSBtZXRob2RzIGFyZSB1c2VkIHRvIGlkZW50aWZ5LCBxdWVyeSBhbmQgY29udHJv bCBwcml2YWN5IHNjcmVlbjoKPiAKPiAqIElkZW50aWZ5aW5nIGFuIEFDUEkgb2JqZWN0IGNvcnJl c3BvbmRpbmcgdG8gdGhlIHBhbmVsOiBUaGUgcGF0Y2gKPiBmb2xsb3dzIEFDUEkgU3BlYyA2LjMg KGF2YWlsYWJsZSBhdAo+IGh0dHBzOi8vdWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9yZXNv dXJjZXMvQUNQSV82XzNfZmluYWxfSmFuMzAucGRmKS4KPiBQYWdlcyAxMTE5IC0gMTEyMyBkZXNj cmliZSB3aGF0IEkgYmVsaWV2ZSwgaXMgYSBzdGFuZGFyZCB3YXkgb2YKPiBpZGVudGlmeWluZyAv IGFkZHJlc3NpbmcgImRpc3BsYXkgcGFuZWxzIiBpbiB0aGUgQUNQSSB0YWJsZXMsIHRodXMKPiBh bGxvd2luZyBrZXJuZWwgdG8gYXR0YWNoIEFDUEkgbm9kZXMgdG8gdGhlIHBhbmVsLiBJTUhPLCB0 aGlzIGFiaWxpdHkKPiB0byBpZGVudGlmeSBhbmQgYXR0YWNoIEFDUEkgbm9kZXMgdG8gZHJtIGNv bm5lY3RvcnMgbWF5IGJlIHVzZWZ1bCBmb3IKPiByZWFzb25zIG90aGVyIHByaXZhY3ktc2NyZWVu cywgaW4gZnV0dXJlLgo+IAo+ICogSWRlbnRpZnlpbmcgdGhlIHByZXNlbmNlIG9mIHByaXZhY3kg c2NyZWVuLCBhbmQgY29udHJvbGxpbmcgaXQsIGlzIGRvbmUKPiB2aWEgQUNQSSBfRFNNIG1ldGhv ZHMuCj4gCj4gQ3VycmVudGx5LCB0aGlzIGlzIGRvbmUgb25seSBmb3IgdGhlIEludGVsIGRpc3Bs YXkgcG9ydHMuIEJ1dCBpbiBmdXR1cmUsCj4gdGhpcyBjYW4gYmUgZG9uZSBmb3IgYW55IG90aGVy IHBvcnRzIGlmIHRoZSBoYXJkd2FyZSBiZWNvbWVzIGF2YWlsYWJsZQo+IChlLmcuIGV4dGVybmFs IG1vbml0b3JzIHN1cHBvcnRpbmcgaW50ZWdyYXRlZCBwcml2YWN5IHNjcmVlbnM/KS4KPiAKPiBB bHNvLCB0aGlzIGNvZGUgY2FuIGJlIGV4dGVuZGVkIGluIGZ1dHVyZSB0byBzdXBwb3J0IG5vbi1B Q1BJIG1ldGhvZHMKPiAoZS5nLiB1c2luZyBhIGtlcm5lbCBHUElPIGRyaXZlciB0byB0b2dnbGUg YSBncGlvIHRoYXQgY29udHJvbHMgdGhlCj4gcHJpdmFjeS1zY3JlZW4pLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFJhamF0IEphaW4gPHJhamF0amFAZ29vZ2xlLmNvbT4KCk5ldyBwcm9wZXJ0aWVzIG5l ZWQgcHJvcGVydHkgZG9jcyBpbiB0aGUgcmVsZXZhbnQgc2VjdGlvbjoKCmh0dHBzOi8vZHJpLmZy ZWVkZXNrdG9wLm9yZy9kb2NzL2RybS9ncHUvZHJtLWttcy5odG1sI2ttcy1wcm9wZXJ0aWVzCgok IG1ha2UgaHRtbGRvY3MKCmZvciBidWlsZGluZyB0aGVtIGxvY2FsbHkuCgpDaGVlcnMsIERhbmll bAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAx ICsKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jICAgICAgIHwgICA1ICsKPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyAgICAgICAgIHwgIDM4ICsrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uYyAgICB8IDE3NiArKysrKysrKysrKysr KysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIHwg ICAzICsKPiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgICAgICAgIHwgIDE4ICsr Kwo+ICBpbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaCAgICAgICAgICAgfCAgIDcgKwo+ICBp bmNsdWRlL2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uaCAgICAgICAgfCAgMzMgKysrKysKPiAgOCBm aWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBpbmRleCA4MmZm ODI2YjMzY2MuLmUxZmMzM2Q2OWJiNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBAQCAtMTksNiArMTksNyBA QCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRybV9jYWNoZS5vIFwKPiAgCQlkcm1fc3luY29i ai5vIGRybV9sZWFzZS5vIGRybV93cml0ZWJhY2subyBkcm1fY2xpZW50Lm8gXAo+ICAJCWRybV9j bGllbnRfbW9kZXNldC5vIGRybV9hdG9taWNfdWFwaS5vIGRybV9oZGNwLm8KPiAgCj4gK2RybS0k KENPTkZJR19BQ1BJKSArPSBkcm1fcHJpdmFjeV9zY3JlZW4ubwo+ICBkcm0tJChDT05GSUdfRFJN X0xFR0FDWSkgKz0gZHJtX2xlZ2FjeV9taXNjLm8gZHJtX2J1ZnMubyBkcm1fY29udGV4dC5vIGRy bV9kbWEubyBkcm1fc2NhdHRlci5vIGRybV9sb2NrLm8KPiAgZHJtLSQoQ09ORklHX0RSTV9MSUJf UkFORE9NKSArPSBsaWIvZHJtX3JhbmRvbS5vCj4gIGRybS0kKENPTkZJR19EUk1fVk0pICs9IGRy bV92bS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+IGluZGV4IDdhMjZiZmI1MzI5Yy4u NDQxMzExNjVlNGVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3Vh cGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+IEBAIC0zMCw2 ICszMCw3IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICAjaW5jbHVkZSA8ZHJt L2RybV9wcmludC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1fcHJpdmFjeV9zY3JlZW4uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+ Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgo+ICAKPiBAQCAtNzY2LDYgKzc2Nyw4IEBA IHN0YXRpYyBpbnQgZHJtX2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJCQkJCSAgIGZlbmNlX3B0cik7Cj4gIAl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+bWF4X2JwY19wcm9wZXJ0eSkgewo+ICAJCXN0YXRl LT5tYXhfcmVxdWVzdGVkX2JwYyA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29u ZmlnLT5wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eSkgewo+ICsJCWRybV9wcml2YWN5X3NjcmVlbl9z ZXRfdmFsKGNvbm5lY3RvciwgdmFsKTsKPiAgCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+ YXRvbWljX3NldF9wcm9wZXJ0eSkgewo+ICAJCXJldHVybiBjb25uZWN0b3ItPmZ1bmNzLT5hdG9t aWNfc2V0X3Byb3BlcnR5KGNvbm5lY3RvciwKPiAgCQkJCXN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsK PiBAQCAtODQyLDYgKzg0NSw4IEBAIGRybV9hdG9taWNfY29ubmVjdG9yX2dldF9wcm9wZXJ0eShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCSp2YWwgPSAwOwo+ICAJfSBlbHNl IGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPm1heF9icGNfcHJvcGVydHkpIHsKPiAgCQkqdmFs ID0gc3RhdGUtPm1heF9yZXF1ZXN0ZWRfYnBjOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBj b25maWctPnByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KSB7Cj4gKwkJKnZhbCA9IGRybV9wcml2YWN5 X3NjcmVlbl9nZXRfdmFsKGNvbm5lY3Rvcik7Cj4gIAl9IGVsc2UgaWYgKGNvbm5lY3Rvci0+ZnVu Y3MtPmF0b21pY19nZXRfcHJvcGVydHkpIHsKPiAgCQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+ YXRvbWljX2dldF9wcm9wZXJ0eShjb25uZWN0b3IsCj4gIAkJCQlzdGF0ZSwgcHJvcGVydHksIHZh bCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gaW5kZXggNGM3NjY2MjRiMjBkLi5hMzFlMDM4 MjEzMmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiBAQCAtODIxLDYgKzgyMSwxMSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBkcm1fcGFuZWxfb3JpZW50 YXRpb25fZW51bV9saXN0W10gPSB7Cj4gIAl7IERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX1JJ R0hUX1VQLAkiUmlnaHQgU2lkZSBVcCIJfSwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX3Byb3BfZW51bV9saXN0IGRybV9wcml2YWN5X3NjcmVlbl9lbnVtX2xpc3RbXSA9IHsK PiArCXsgRFJNX1BSSVZBQ1lfU0NSRUVOX0RJU0FCTEVELCAiRGlzYWJsZWQiIH0sCj4gKwl7IERS TV9QUklWQUNZX1NDUkVFTl9FTkFCTEVELCAiRW5hYmxlZCIgfSwKPiArfTsKPiArCj4gIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IGRybV9kdmlfaV9zZWxlY3RfZW51bV9s aXN0W10gPSB7Cj4gIAl7IERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9BdXRvbWF0aWMsICJBdXRvbWF0 aWMiIH0sIC8qIERWSS1JIGFuZCBUVi1vdXQgKi8KPiAgCXsgRFJNX01PREVfU1VCQ09OTkVDVE9S X0RWSUQsICAgICAgIkRWSS1EIiAgICAgfSwgLyogRFZJLUkgICovCj4gQEAgLTIyNTMsNiArMjI1 OCwzOSBAQCBzdGF0aWMgdm9pZCBkcm1fdGlsZV9ncm91cF9mcmVlKHN0cnVjdCBrcmVmICprcmVm KQo+ICAJa2ZyZWUodGcpOwo+ICB9Cj4gIAo+ICsvKioKPiArICogZHJtX2Nvbm5lY3Rvcl9pbml0 X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5IC0KPiArICoJY3JlYXRlIGFuZCBhdHRhY2ggdGhlIGNv bm5lY3RlcidzIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5Lgo+ICsgKiBAY29ubmVjdG9yOiBjb25u ZWN0b3IgZm9yIHdoaWNoIHRvIGluaXQgdGhlIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5Lgo+ICsg Kgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGF0dGFjaGVzIHRoZSAicHJpdmFjeS1z Y3JlZW4iIHByb3BlcnR5IHRvIHRoZQo+ICsgKiBjb25uZWN0b3IuIEluaXRpYWwgc3RhdGUgb2Yg cHJpdmFjeS1zY3JlZW4gaXMgc2V0IHRvIGRpc2FibGVkLgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4gKyAqLwo+ ICtpbnQgZHJtX2Nvbm5lY3Rvcl9pbml0X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gKwo+ICsJ cHJvcCA9IGRldi0+bW9kZV9jb25maWcucHJpdmFjeV9zY3JlZW5fcHJvcGVydHk7Cj4gKwlpZiAo IXByb3ApIHsKPiArCQlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGRldiwgRFJNX01P REVfUFJPUF9FTlVNLAo+ICsJCQkJInByaXZhY3ktc2NyZWVuIiwgZHJtX3ByaXZhY3lfc2NyZWVu X2VudW1fbGlzdCwKPiArCQkJCUFSUkFZX1NJWkUoZHJtX3ByaXZhY3lfc2NyZWVuX2VudW1fbGlz dCkpOwo+ICsJCWlmICghcHJvcCkKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJCWRldi0+ bW9kZV9jb25maWcucHJpdmFjeV9zY3JlZW5fcHJvcGVydHkgPSBwcm9wOwo+ICsJfQo+ICsKPiAr CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsIHByb3AsCj4gKwkJ CQkgICBEUk1fUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr RVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2luaXRfcHJpdmFjeV9zY3JlZW5fcHJvcGVydHkp Owo+ICsKPiAgLyoqCj4gICAqIGRybV9tb2RlX3B1dF90aWxlX2dyb3VwIC0gZHJvcCBhIHJlZmVy ZW5jZSB0byBhIHRpbGUgZ3JvdXAuCj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9wcml2YWN5X3NjcmVlbi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjFkNjhlOGFhNmM1Zgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX3ByaXZhY3lfc2NyZWVuLmMKPiBAQCAtMCwwICsxLDE3NiBAQAo+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgo+ICsvKgo+ICsgKiBEUk0gcHJp dmFjeSBTY3JlZW4gY29kZQo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBHb29nbGUgSW5j Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9wY2kuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiArCj4g KyNkZWZpbmUgRFJNX0NPTk5fRFNNX1JFVklEIDEKPiArCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNN X0ZOX1BSSVZBQ1lfR0VUX1NUQVRVUwkxCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNNX0ZOX1BSSVZB Q1lfRU5BQkxFCQkyCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lfRElTQUJMRQkJ Mwo+ICsKPiArc3RhdGljIGNvbnN0IGd1aWRfdCBkcm1fY29ubl9kc21fZ3VpZCA9Cj4gKwlHVUlE X0lOSVQoMHhDNzAzMzExMywgMHg4NzIwLCAweDRDRUIsCj4gKwkJICAweDkwLCAweDkwLCAweDlE LCAweDUyLCAweEIzLCAweEU1LCAweDJELCAweDczKTsKPiArCj4gKy8qCj4gKyAqIE1ha2VzIF9E U00gY2FsbCB0byBzZXQgcHJpdmFjeSBzY3JlZW4gc3RhdHVzIG9yIGdldCBwcml2YWN5IHNjcmVl bi4gUmV0dXJuCj4gKyAqIHZhbHVlIG1hdHRlcnMgb25seSBmb3IgUFJJVkFDWV9HRVRfU1RBVFVT IGNhc2UuIFJldHVybnMgMCBpZiBkaXNhYmxlZCwgMSBpZgo+ICsgKiBlbmFibGVkLgo+ICsgKi8K PiArc3RhdGljIGludCBhY3BpX3ByaXZhY3lfc2NyZWVuX2NhbGxfZHNtKGFjcGlfaGFuZGxlIGNv bm5faGFuZGxlLCB1NjQgZnVuYykKPiArewo+ICsJdW5pb24gYWNwaV9vYmplY3QgKm9iajsKPiAr CWludCByZXQgPSAwOwo+ICsKPiArCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKGNvbm5faGFuZGxl LCAmZHJtX2Nvbm5fZHNtX2d1aWQsCj4gKwkJCQlEUk1fQ09OTl9EU01fUkVWSUQsIGZ1bmMsIE5V TEwpOwo+ICsJaWYgKCFvYmopIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gZXZh bHVhdGUgX0RTTSBmb3IgZm4gJWxseFxuIiwgZnVuYyk7Cj4gKwkJLyogQ2FuJ3QgZG8gbXVjaC4g Rm9yIGdldF92YWwsIGFzc3VtZSBwcml2YWN5X3NjcmVlbiBkaXNhYmxlZCAqLwo+ICsJCWdvdG8g ZG9uZTsKPiArCX0KPiArCj4gKwlpZiAoZnVuYyA9PSBEUk1fQ09OTl9EU01fRk5fUFJJVkFDWV9H RVRfU1RBVFVTICYmCj4gKwkgICAgb2JqLT50eXBlID09IEFDUElfVFlQRV9JTlRFR0VSKQo+ICsJ CXJldCA9ICEhb2JqLT5pbnRlZ2VyLnZhbHVlOwo+ICtkb25lOgo+ICsJQUNQSV9GUkVFKG9iaik7 Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICt2b2lkIGRybV9wcml2YWN5X3NjcmVlbl9zZXRf dmFsKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCQkgZW51bSBkcm1fcHJp dmFjeV9zY3JlZW4gdmFsKQo+ICt7Cj4gKwlhY3BpX2hhbmRsZSBhY3BpX2hhbmRsZSA9IGNvbm5l Y3Rvci0+cHJpdmFjeV9zY3JlZW5faGFuZGxlOwo+ICsKPiArCWlmICghYWNwaV9oYW5kbGUpCj4g KwkJcmV0dXJuOwo+ICsKPiArCWlmICh2YWwgPT0gRFJNX1BSSVZBQ1lfU0NSRUVOX0RJU0FCTEVE KQo+ICsJCWFjcGlfcHJpdmFjeV9zY3JlZW5fY2FsbF9kc20oYWNwaV9oYW5kbGUsCj4gKwkJCQkJ ICAgICBEUk1fQ09OTl9EU01fRk5fUFJJVkFDWV9ESVNBQkxFKTsKPiArCWVsc2UgaWYgKHZhbCA9 PSBEUk1fUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCkKPiArCQlhY3BpX3ByaXZhY3lfc2NyZWVuX2Nh bGxfZHNtKGFjcGlfaGFuZGxlLAo+ICsJCQkJCSAgICAgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lf RU5BQkxFKTsKPiArfQo+ICsKPiArZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gZHJtX3ByaXZhY3lf c2NyZWVuX2dldF92YWwoc3RydWN0IGRybV9jb25uZWN0b3IKPiArCQkJCQkJICAgKmNvbm5lY3Rv cikKPiArewo+ICsJYWNwaV9oYW5kbGUgYWNwaV9oYW5kbGUgPSBjb25uZWN0b3ItPnByaXZhY3lf c2NyZWVuX2hhbmRsZTsKPiArCj4gKwlpZiAoYWNwaV9oYW5kbGUgJiYKPiArCSAgICBhY3BpX3By aXZhY3lfc2NyZWVuX2NhbGxfZHNtKGFjcGlfaGFuZGxlLAo+ICsJCQkJCSBEUk1fQ09OTl9EU01f Rk5fUFJJVkFDWV9HRVRfU1RBVFVTKSkKPiArCQlyZXR1cm4gRFJNX1BSSVZBQ1lfU0NSRUVOX0VO QUJMRUQ7Cj4gKwo+ICsJcmV0dXJuIERSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxFRDsKPiArfQo+ ICsKPiArLyoKPiArICogU2VlIEFDUEkgU3BlYyB2Ni4zLCBUYWJsZSBCLTIsICJEaXNwbGF5IFR5 cGUiIGZvciBkZXRhaWxzLgo+ICsgKiBJbiBzaG9ydCwgdGhlc2UgbWFjcm9zIGRlZmluZSB0aGUg YmFzZSBfQURSIHZhbHVlcyBmb3IgQUNQSSBub2Rlcwo+ICsgKi8KPiArI2RlZmluZSBBQ1BJX0JB U0VfQURSX0ZPUl9PVEhFUlMJKDBVTEwgPDwgOCkKPiArI2RlZmluZSBBQ1BJX0JBU0VfQURSX0ZP Ul9WR0EJCSgxVUxMIDw8IDgpCj4gKyNkZWZpbmUgQUNQSV9CQVNFX0FEUl9GT1JfVFYJCSgyVUxM IDw8IDgpCj4gKyNkZWZpbmUgQUNQSV9CQVNFX0FEUl9GT1JfRVhUX01PTgkoM1VMTCA8PCA4KQo+ ICsjZGVmaW5lIEFDUElfQkFTRV9BRFJfRk9SX0lOVEVHUkFURUQJKDRVTEwgPDwgOCkKPiArCj4g KyNkZWZpbmUgQUNQSV9ERVZJQ0VfSURfU0NIRU1FCQkoMVVMTCA8PCAzMSkKPiArI2RlZmluZSBB Q1BJX0ZJUk1XQVJFX0NBTl9ERVRFQ1QJKDFVTEwgPDwgMTYpCj4gKwo+ICsvKgo+ICsgKiBSZWY6 IEFDUEkgU3BlYyA2LjMKPiArICogaHR0cHM6Ly91ZWZpLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVz L3Jlc291cmNlcy9BQ1BJXzZfM19maW5hbF9KYW4zMC5wZGYKPiArICogUGFnZXMgMTExOSAtIDEx MjMgZGVzY3JpYmUsIHdoYXQgSSBiZWxpZXZlLCBhIHN0YW5kYXJkIHdheSBvZgo+ICsgKiBpZGVu dGlmeWluZyAvIGFkZHJlc3NpbmcgImRpc3BsYXkgcGFuZWxzIiBpbiB0aGUgQUNQSS4gVGh1cyBp dCBwcm92aWRlcwo+ICsgKiBhIHdheSBmb3IgdGhlIEFDUEkgdG8gZGVmaW5lIGRldmljZXMgZm9y IHRoZSBkaXNwbGF5IHBhbmVscyBhdHRhY2hlZAo+ICsgKiB0byB0aGUgc3lzdGVtLiBJdCB0aHVz IHByb3ZpZGVzIGEgd2F5IGZvciB0aGUgQklPUyB0byBleHBvcnQgYW55IHBhbmVsCj4gKyAqIHNw ZWNpZmljIHByb3BlcnRpZXMgdG8gdGhlIHN5c3RlbSB2aWEgQUNQSSAobGlrZSBkZXZpY2UgdHJl ZXMpLgo+ICsgKgo+ICsgKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGxvb2tzIHVwIHRoZSBBQ1BJ IG5vZGUgZm9yIGEgY29ubmVjdG9yIGFuZCBsaW5rcwo+ICsgKiB0byBpdC4gVGVjaG5pY2FsbHkg aXQgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgcHJpdmFjeV9zY3JlZW4gY29kZSwgYW5kCj4gKyAq IGlkZWFsbHkgbWF5IGJlIGNhbGxlZCBmb3IgYWxsIGNvbm5lY3RvcnMuIEl0IGlzIGdlbmVyYWxs eSBhIGdvb2QgaWRlYSB0bwo+ICsgKiBiZSBhYmxlIHRvIGF0dGFjaCBhbiBBQ1BJIG5vZGUgdG8g ZGVzY3JpYmUgYW55dGhpbmcgaWYgbmVlZGVkLiAoVGhpcyBjYW4KPiArICogaGVscCBpbiBmdXR1 cmUgZm9yIG90aGVyIHBhbmVsIHNwZWNpZmljIGZlYXR1cmVzIG1heWJlKS4gSG93ZXZlciwgaXQK PiArICogbmVlZHMgYSAicG9ydCBpbmRleCIgd2hpY2ggSSBiZWxpZXZlIGlzIHRoZSBpbmRleCB3 aXRoaW4gYSBwYXJ0aWN1bGFyCj4gKyAqIHR5cGUgb2YgcG9ydCAoUmVmIHRvIHRoZSBwYWdlcyBv ZiBzcGVjIG1lbnRpb25lZCBhYm92ZSkuIFRoaXMgcG9ydCBpbmRleAo+ICsgKiB1bmZvcnR1bmF0 ZWx5IGlzIG5vdCBhdmFpbGFibGUgaW4gRFJNIGNvZGUsIHNvIGN1cnJlbnRseSBpdHMgY2FsbCBp cwo+ICsgKiBvcmlnaW5hdGVkIGZyb20gaTkxNSBkcml2ZXIuCj4gKyAqLwo+ICtzdGF0aWMgaW50 IGRybV9jb25uZWN0b3JfYXR0YWNoX2FjcGlfbm9kZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+ICsJCQkJCSAgdTggcG9ydF9pbmRleCkKPiArewo+ICsJc3RydWN0IGRldmljZSAq ZGV2ID0gJmNvbm5lY3Rvci0+ZGV2LT5wZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgYWNwaV9kZXZpY2Ug KmNvbm5fZGV2Owo+ICsJdTY0IGNvbm5fYWRkcjsKPiArCj4gKwkvKgo+ICsJICogRGV0ZXJtaW5l IHdoYXQgX0FEUiB0byBsb29rIGZvciwgZGVwZW5kaW5nIG9uIGRldmljZSB0eXBlIGFuZAo+ICsJ ICogcG9ydCBudW1iZXIuIFBvdGVudGlhbGx5IHdlIG9ubHkgY2FyZSBhYm91dCB0aGUKPiArCSAq IGVEUCAvIGludGVncmF0ZWQgZGlzcGxheXM/Cj4gKwkgKi8KPiArCXN3aXRjaCAoY29ubmVjdG9y LT5jb25uZWN0b3JfdHlwZSkgewo+ICsJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfZURQOgo+ICsJ CWNvbm5fYWRkciA9IEFDUElfQkFTRV9BRFJfRk9SX0lOVEVHUkFURUQgKyBwb3J0X2luZGV4Owo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfVkdBOgo+ICsJCWNvbm5fYWRk ciA9IEFDUElfQkFTRV9BRFJfRk9SX1ZHQSArIHBvcnRfaW5kZXg7Cj4gKwkJYnJlYWs7Cj4gKwlj YXNlIERSTV9NT0RFX0NPTk5FQ1RPUl9UVjoKPiArCQljb25uX2FkZHIgPSBBQ1BJX0JBU0VfQURS X0ZPUl9UViArIHBvcnRfaW5kZXg7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9NT0RFX0NPTk5F Q1RPUl9EaXNwbGF5UG9ydDoKPiArCQljb25uX2FkZHIgPSBBQ1BJX0JBU0VfQURSX0ZPUl9FWFRf TU9OICsgcG9ydF9pbmRleDsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1F Tk9UU1VQUDsKPiArCX0KPiArCj4gKwljb25uX2FkZHIgfD0gQUNQSV9ERVZJQ0VfSURfU0NIRU1F Owo+ICsJY29ubl9hZGRyIHw9IEFDUElfRklSTVdBUkVfQ0FOX0RFVEVDVDsKPiArCj4gKwlEUk1f REVWX0RFQlVHKGRldiwgIiVzOiBGaW5kaW5nIGRybV9jb25uZWN0b3IgQUNQSSBub2RlIGF0IF9B RFI9JWxsWFxuIiwKPiArCQkgICAgICBfX2Z1bmNfXywgY29ubl9hZGRyKTsKPiArCj4gKwkvKiBM b29rIHVwIHRoZSBjb25uZWN0b3IgZGV2aWNlLCB1bmRlciB0aGUgUENJIGRldmljZSAqLwo+ICsJ Y29ubl9kZXYgPSBhY3BpX2ZpbmRfY2hpbGRfZGV2aWNlKEFDUElfQ09NUEFOSU9OKGRldiksCj4g KwkJCQkJICBjb25uX2FkZHIsIGZhbHNlKTsKPiArCWlmICghY29ubl9kZXYpCj4gKwkJcmV0dXJu IC1FTk9ERVY7Cj4gKwo+ICsJY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9oYW5kbGUgPSBjb25u X2Rldi0+aGFuZGxlOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2Jvb2wgZHJtX3ByaXZhY3lf c2NyZWVuX3ByZXNlbnQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTggcG9ydF9p bmRleCkKPiArewo+ICsJYWNwaV9oYW5kbGUgaGFuZGxlOwo+ICsKPiArCWlmIChkcm1fY29ubmVj dG9yX2F0dGFjaF9hY3BpX25vZGUoY29ubmVjdG9yLCBwb3J0X2luZGV4KSkKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwo+ICsJaGFuZGxlID0gY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9oYW5kbGU7 Cj4gKwlpZiAoIWFjcGlfY2hlY2tfZHNtKGhhbmRsZSwgJmRybV9jb25uX2RzbV9ndWlkLAo+ICsJ CQkgICAgRFJNX0NPTk5fRFNNX1JFVklELAo+ICsJCQkgICAgMSA8PCBEUk1fQ09OTl9EU01fRk5f UFJJVkFDWV9HRVRfU1RBVFVTIHwKPiArCQkJICAgIDEgPDwgRFJNX0NPTk5fRFNNX0ZOX1BSSVZB Q1lfRU5BQkxFIHwKPiArCQkJICAgIDEgPDwgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lfRElTQUJM RSkpIHsKPiArCQlEUk1fV0FSTigiJXM6IE9kZCwgY29ubmVjdG9yIEFDUEkgbm9kZSBidXQgbm8g cHJpdmFjeSBzY3JuP1xuIiwKPiArCQkJIGNvbm5lY3Rvci0+ZGV2LT5kZXYpOwo+ICsJCXJldHVy biBmYWxzZTsKPiArCX0KPiArCURSTV9ERVZfSU5GTyhjb25uZWN0b3ItPmRldi0+ZGV2LCAic3Vw cG9ydHMgcHJpdmFjeSBzY3JlZW5cbiIpOwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4gaW5kZXggNTdlOWYwYmEzMzFiLi4zZmYz OTYyZDI3ZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4g QEAgLTM5LDYgKzM5LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4gICNp bmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1faGRjcC5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9wcml2YWN5X3NjcmVlbi5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9w cm9iZV9oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ICAKPiBAQCAtNjM1 NCw2ICs2MzU1LDggQEAgaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3QKPiAgCj4gIAkJY29ubmVjdG9y LT5zdGF0ZS0+c2NhbGluZ19tb2RlID0gRFJNX01PREVfU0NBTEVfQVNQRUNUOwo+ICAKPiArCQlp ZiAoZHJtX3ByaXZhY3lfc2NyZWVuX3ByZXNlbnQoY29ubmVjdG9yLCBwb3J0IC0gUE9SVF9BKSkK PiArCQkJZHJtX2Nvbm5lY3Rvcl9pbml0X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KGNvbm5lY3Rv cik7Cj4gIAl9Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaCBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+IGluZGV4IDY4MWNiNTkwZjk1Mi4u NjNiODMxOGJkNjhjIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+IEBAIC0yMjUsNiArMjI1LDIwIEBA IGVudW0gZHJtX2xpbmtfc3RhdHVzIHsKPiAgCURSTV9MSU5LX1NUQVRVU19CQUQgPSBEUk1fTU9E RV9MSU5LX1NUQVRVU19CQUQsCj4gIH07Cj4gIAo+ICsvKioKPiArICogZW51bSBkcm1fcHJpdmFj eV9zY3JlZW4gLSBwcml2YWN5X3NjcmVlbiBzdGF0dXMKPiArICoKPiArICogVGhpcyBlbnVtIGlz IHVzZWQgdG8gdHJhY2sgYW5kIGNvbnRyb2wgdGhlIHN0YXRlIG9mIHRoZSBwcml2YWN5IHNjcmVl bi4KPiArICogVGhlcmUgYXJlIG5vIHNlcGFyYXRlICNkZWZpbmVzIGZvciB0aGUgdWFwaSEKPiAr ICoKPiArICogQERSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxFRDogVGhlIHByaXZhY3ktc2NyZWVu IG9uIHRoZSBwYW5lbCBpcyBkaXNhYmxlZAo+ICsgKiBARFJNX1BSSVZBQ1lfU0NSRUVOX0VOQUJM RUQ6ICBUaGUgcHJpdmFjeS1zY3JlZW4gb24gdGhlIHBhbmVsIGlzIGVuYWJsZWQKPiArICovCj4g K2VudW0gZHJtX3ByaXZhY3lfc2NyZWVuIHsKPiArCURSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxF RCA9IDAsCj4gKwlEUk1fUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCA9IDEsCj4gK307Cj4gKwo+ICAv KioKPiAgICogZW51bSBkcm1fcGFuZWxfb3JpZW50YXRpb24gLSBwYW5lbF9vcmllbnRhdGlvbiBp bmZvIGZvciAmZHJtX2Rpc3BsYXlfaW5mbwo+ICAgKgo+IEBAIC0xNDEwLDYgKzE0MjQsOSBAQCBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciB7Cj4gIAo+ICAJLyoqIEBoZHJfc2lua19tZXRhZGF0YTogSERS IE1ldGFkYXRhIEluZm9ybWF0aW9uIHJlYWQgZnJvbSBzaW5rICovCj4gIAlzdHJ1Y3QgaGRyX3Np bmtfbWV0YWRhdGEgaGRyX3NpbmtfbWV0YWRhdGE7Cj4gKwo+ICsJLyogSGFuZGxlIHVzZWQgYnkg cHJpdmFjeSBzY3JlZW4gY29kZSAqLwo+ICsJdm9pZCAqcHJpdmFjeV9zY3JlZW5faGFuZGxlOwo+ ICB9Owo+ICAKPiAgI2RlZmluZSBvYmpfdG9fY29ubmVjdG9yKHgpIGNvbnRhaW5lcl9vZih4LCBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciwgYmFzZSkKPiBAQCAtMTU0Myw2ICsxNTYwLDcgQEAgaW50IGRy bV9jb25uZWN0b3JfaW5pdF9wYW5lbF9vcmllbnRhdGlvbl9wcm9wZXJ0eSgKPiAgCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Cj4gIGludCBk cm1fY29ubmVjdG9yX2F0dGFjaF9tYXhfYnBjX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4gIAkJCQkJICBpbnQgbWluLCBpbnQgbWF4KTsKPiAraW50IGRybV9jb25u ZWN0b3JfaW5pdF9wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKPiAgCj4gIC8qKgo+ICAgKiBzdHJ1Y3QgZHJtX3RpbGVfZ3JvdXAgLSBUaWxl IGdyb3VwIG1ldGFkYXRhCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZp Zy5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiBpbmRleCAzYmNiZTMwMzM5ZjAu LjZkNWQyM2RhOTBkNCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcu aAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oCj4gQEAgLTgxMyw2ICs4MTMs MTMgQEAgc3RydWN0IGRybV9tb2RlX2NvbmZpZyB7Cj4gIAkgKi8KPiAgCXN0cnVjdCBkcm1fcHJv cGVydHkgKnBhbmVsX29yaWVudGF0aW9uX3Byb3BlcnR5Owo+ICAKPiArCS8qKgo+ICsJICogQHBy aXZhY3lfc2NyZWVuX3Byb3BlcnR5OiBPcHRpb25hbCBjb25uZWN0b3IgcHJvcGVydHkgdG8gaW5k aWNhdGUKPiArCSAqIGFuZCBjb250cm9sIHRoZSBzdGF0ZSAoZW5hYmxlZCAvIGRpc2FibGVkKSBv ZiBwcml2YWN5LXNjcmVlbiBvbiB0aGUKPiArCSAqIHBhbmVsLCBpZiBwcmVzZW50Lgo+ICsJICov Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcml2YWN5X3NjcmVlbl9wcm9wZXJ0eTsKPiArCj4g IAkvKioKPiAgCSAqIEB3cml0ZWJhY2tfZmJfaWRfcHJvcGVydHk6IFByb3BlcnR5IGZvciB3cml0 ZWJhY2sgY29ubmVjdG9ycywgc3RvcmluZwo+ICAJICogdGhlIElEIG9mIHRoZSBvdXRwdXQgZnJh bWVidWZmZXIuCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5o IGIvaW5jbHVkZS9kcm0vZHJtX3ByaXZhY3lfc2NyZWVuLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzU4OWJiYzQ3NjU2Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2luY2x1ZGUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5oCj4gQEAgLTAsMCArMSwzMyBAQAo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBHb29nbGUgSW5jLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYg X19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9fCj4gKyNkZWZpbmUgX19EUk1fUFJJVkFDWV9TQ1JFRU5f SF9fCj4gKwo+ICsjaWZkZWYgQ09ORklHX0FDUEkKPiArYm9vbCBkcm1fcHJpdmFjeV9zY3JlZW5f cHJlc2VudChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1OCBwb3J0KTsKPiArdm9p ZCBkcm1fcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCQkJZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gdmFsKTsKPiArZW51bSBkcm1fcHJp dmFjeV9zY3JlZW4gZHJtX3ByaXZhY3lfc2NyZWVuX2dldF92YWwoc3RydWN0IGRybV9jb25uZWN0 b3IKPiArCQkJCQkJICAgKmNvbm5lY3Rvcik7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUgYm9v bCBkcm1fcHJpdmFjeV9zY3JlZW5fcHJlc2VudChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCQkJCSAgICAgIHU4IHBvcnQpCj4gK3sKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ ICsKPiArdm9pZCBkcm1fcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICsJCQkJZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gdmFsKQo+ICt7IH0K PiArCj4gK2VudW0gZHJtX3ByaXZhY3lfc2NyZWVuIGRybV9wcml2YWN5X3NjcmVlbl9nZXRfdmFs KAo+ICsJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXJldHVy biBEUk1fUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQ7Cj4gK30KPiArI2VuZGlmIC8qIENPTkZJR19B Q1BJICovCj4gKwo+ICsjZW5kaWYgLyogX19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9fICovCj4gLS0g Cj4gMi4yMy4wLjg2Ni5nYjg2OWI5OGQ0Yy1nb29nCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 81F33CA9EB9 for ; Wed, 23 Oct 2019 09:21:33 +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 628A52084C for ; Wed, 23 Oct 2019 09:21:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 628A52084C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 056126EA0C; Wed, 23 Oct 2019 09:21:33 +0000 (UTC) Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id BCBEC89176 for ; Wed, 23 Oct 2019 09:21:31 +0000 (UTC) Received: by mail-wr1-x444.google.com with SMTP id s1so12468873wro.0 for ; Wed, 23 Oct 2019 02:21:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=hn8D9HlEsPbkhWg9lbIBIet9NkmHLPjuXeikJJ7gSrw=; b=I8eefJUMEJbm/WUYB6mMWl7kHC6rkJXkO9/4UZLCOyV52Fe8qO23Um3brQGlJnlEJT BmerRmZIvF3HQr7206amS3Ui7P4Wgoe61k/Ab4lOobUCWQEbLCEQYNP0MnuJrVym/ZbZ 43+U1gIFyIeQiza7vBKz28jn1HZp/I0MLAc35T/uH4gidyyctP+eDGEFS2qI2SN1exRE 3qiWMmmLBnDSQNyr71PP/VJR4irZasPouP+gFOtKZAGLYevWQRomD+OjGFvi38x2umF0 6Xq5JhW0sZmV99zRj+uuPxcRVnj7uv/Mr4AiaZrdM6YR3L4kP17wp1bviGtUSoH3wGQQ s4tA== X-Gm-Message-State: APjAAAUOGz6A2tRZkgzmLIrczI6Iv+UQUmTlp/B2X5j1KAHJNXkxj0IQ NnbA7uV/vsozRFDPsEa5C6EYoQ== X-Google-Smtp-Source: APXvYqxdDqv5OQ1s2mqNxW7PHfRsCvksPP87xgwgwjbsBoLbkTSMPzWP19HgkayLkaPl15bCiIxvhA== X-Received: by 2002:a05:6000:118f:: with SMTP id g15mr4045292wrx.242.1571822490034; Wed, 23 Oct 2019 02:21:30 -0700 (PDT) Received: from phenom.ffwll.local (212-51-149-96.fiber7.init7.net. [212.51.149.96]) by smtp.gmail.com with ESMTPSA id d8sm7872047wrr.71.2019.10.23.02.21.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Oct 2019 02:21:29 -0700 (PDT) Date: Wed, 23 Oct 2019 11:21:27 +0200 From: Daniel Vetter To: Rajat Jain Message-ID: <20191023092127.GY11828@phenom.ffwll.local> Mail-Followup-To: Rajat Jain , Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , Chris Wilson , Imre Deak , =?iso-8859-1?Q?Jos=E9?= Roberto de Souza , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, gregkh@linuxfoundation.org, mathewk@google.com, Daniel Thompson , Jonathan Corbet , Pavel Machek , seanpaul@google.com, Duncan Laurie , jsbarnes@google.com, rajatxjain@gmail.com References: <20191023001206.15741-1-rajatja@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191023001206.15741-1-rajatja@google.com> X-Operating-System: Linux phenom 5.2.0-2-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=hn8D9HlEsPbkhWg9lbIBIet9NkmHLPjuXeikJJ7gSrw=; b=STYENaT1GWt3vSQSzL+13on3OtnPcFf/5cKkTZFHx9/Ozl7Albnihj9Ka518G/6eek qIMRPL8mJYaaeIM1PfZz9uH1B5NCFzZDklq5tiETwmNE6HPcTNtTaxwN9K9DuFNQgYKj nJsc7rFhe4EbJ2OouUdAS4pQC0arh+zSCIkos= Subject: Re: [Intel-gfx] [PATCH] drm: 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: seanpaul@google.com, David Airlie , dri-devel@lists.freedesktop.org, Daniel Thompson , Jonathan Corbet , jsbarnes@google.com, rajatxjain@gmail.com, intel-gfx@lists.freedesktop.org, mathewk@google.com, Maxime Ripard , Duncan Laurie , gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, Pavel Machek Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191023092127.BpIwyyFb1vpbEXYz0_rJ1-Rs5IwwYJAYMPELS_2cuxE@z> T24gVHVlLCBPY3QgMjIsIDIwMTkgYXQgMDU6MTI6MDZQTSAtMDcwMCwgUmFqYXQgSmFpbiB3cm90 ZToKPiBDZXJ0YWluIGxhcHRvcHMgbm93IGNvbWUgd2l0aCBwYW5lbHMgdGhhdCBoYXZlIGludGVn cmF0ZWQgcHJpdmFjeQo+IHNjcmVlbnMgb24gdGhlbS4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg Zm9yIHN1Y2ggcGFuZWxzIGJ5IGFkZGluZwo+IGEgcHJpdmFjeS1zY3JlZW4gcHJvcGVydHkgdG8g dGhlIGRybV9jb25uZWN0b3IgZm9yIHRoZSBwYW5lbCwgdGhhdAo+IHRoZSB1c2Vyc3BhY2UgY2Fu IHRoZW4gdXNlIHRvIGNvbnRyb2wgYW5kIGNoZWNrIHRoZSBzdGF0dXMuIFRoZSBpZGVhCj4gd2Fz IGRpc2N1c3NlZCBoZXJlOgo+IAo+IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE5LzEwLzEvNzg2 Cj4gCj4gQUNQSSBtZXRob2RzIGFyZSB1c2VkIHRvIGlkZW50aWZ5LCBxdWVyeSBhbmQgY29udHJv bCBwcml2YWN5IHNjcmVlbjoKPiAKPiAqIElkZW50aWZ5aW5nIGFuIEFDUEkgb2JqZWN0IGNvcnJl c3BvbmRpbmcgdG8gdGhlIHBhbmVsOiBUaGUgcGF0Y2gKPiBmb2xsb3dzIEFDUEkgU3BlYyA2LjMg KGF2YWlsYWJsZSBhdAo+IGh0dHBzOi8vdWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9yZXNv dXJjZXMvQUNQSV82XzNfZmluYWxfSmFuMzAucGRmKS4KPiBQYWdlcyAxMTE5IC0gMTEyMyBkZXNj cmliZSB3aGF0IEkgYmVsaWV2ZSwgaXMgYSBzdGFuZGFyZCB3YXkgb2YKPiBpZGVudGlmeWluZyAv IGFkZHJlc3NpbmcgImRpc3BsYXkgcGFuZWxzIiBpbiB0aGUgQUNQSSB0YWJsZXMsIHRodXMKPiBh bGxvd2luZyBrZXJuZWwgdG8gYXR0YWNoIEFDUEkgbm9kZXMgdG8gdGhlIHBhbmVsLiBJTUhPLCB0 aGlzIGFiaWxpdHkKPiB0byBpZGVudGlmeSBhbmQgYXR0YWNoIEFDUEkgbm9kZXMgdG8gZHJtIGNv bm5lY3RvcnMgbWF5IGJlIHVzZWZ1bCBmb3IKPiByZWFzb25zIG90aGVyIHByaXZhY3ktc2NyZWVu cywgaW4gZnV0dXJlLgo+IAo+ICogSWRlbnRpZnlpbmcgdGhlIHByZXNlbmNlIG9mIHByaXZhY3kg c2NyZWVuLCBhbmQgY29udHJvbGxpbmcgaXQsIGlzIGRvbmUKPiB2aWEgQUNQSSBfRFNNIG1ldGhv ZHMuCj4gCj4gQ3VycmVudGx5LCB0aGlzIGlzIGRvbmUgb25seSBmb3IgdGhlIEludGVsIGRpc3Bs YXkgcG9ydHMuIEJ1dCBpbiBmdXR1cmUsCj4gdGhpcyBjYW4gYmUgZG9uZSBmb3IgYW55IG90aGVy IHBvcnRzIGlmIHRoZSBoYXJkd2FyZSBiZWNvbWVzIGF2YWlsYWJsZQo+IChlLmcuIGV4dGVybmFs IG1vbml0b3JzIHN1cHBvcnRpbmcgaW50ZWdyYXRlZCBwcml2YWN5IHNjcmVlbnM/KS4KPiAKPiBB bHNvLCB0aGlzIGNvZGUgY2FuIGJlIGV4dGVuZGVkIGluIGZ1dHVyZSB0byBzdXBwb3J0IG5vbi1B Q1BJIG1ldGhvZHMKPiAoZS5nLiB1c2luZyBhIGtlcm5lbCBHUElPIGRyaXZlciB0byB0b2dnbGUg YSBncGlvIHRoYXQgY29udHJvbHMgdGhlCj4gcHJpdmFjeS1zY3JlZW4pLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFJhamF0IEphaW4gPHJhamF0amFAZ29vZ2xlLmNvbT4KCk5ldyBwcm9wZXJ0aWVzIG5l ZWQgcHJvcGVydHkgZG9jcyBpbiB0aGUgcmVsZXZhbnQgc2VjdGlvbjoKCmh0dHBzOi8vZHJpLmZy ZWVkZXNrdG9wLm9yZy9kb2NzL2RybS9ncHUvZHJtLWttcy5odG1sI2ttcy1wcm9wZXJ0aWVzCgok IG1ha2UgaHRtbGRvY3MKCmZvciBidWlsZGluZyB0aGVtIGxvY2FsbHkuCgpDaGVlcnMsIERhbmll bAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAx ICsKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jICAgICAgIHwgICA1ICsKPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyAgICAgICAgIHwgIDM4ICsrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uYyAgICB8IDE3NiArKysrKysrKysrKysr KysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIHwg ICAzICsKPiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgICAgICAgIHwgIDE4ICsr Kwo+ICBpbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaCAgICAgICAgICAgfCAgIDcgKwo+ICBp bmNsdWRlL2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uaCAgICAgICAgfCAgMzMgKysrKysKPiAgOCBm aWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL2RybS9kcm1fcHJpdmFjeV9zY3JlZW4uaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBpbmRleCA4MmZm ODI2YjMzY2MuLmUxZmMzM2Q2OWJiNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBAQCAtMTksNiArMTksNyBA QCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRybV9jYWNoZS5vIFwKPiAgCQlkcm1fc3luY29i ai5vIGRybV9sZWFzZS5vIGRybV93cml0ZWJhY2subyBkcm1fY2xpZW50Lm8gXAo+ICAJCWRybV9j bGllbnRfbW9kZXNldC5vIGRybV9hdG9taWNfdWFwaS5vIGRybV9oZGNwLm8KPiAgCj4gK2RybS0k KENPTkZJR19BQ1BJKSArPSBkcm1fcHJpdmFjeV9zY3JlZW4ubwo+ICBkcm0tJChDT05GSUdfRFJN X0xFR0FDWSkgKz0gZHJtX2xlZ2FjeV9taXNjLm8gZHJtX2J1ZnMubyBkcm1fY29udGV4dC5vIGRy bV9kbWEubyBkcm1fc2NhdHRlci5vIGRybV9sb2NrLm8KPiAgZHJtLSQoQ09ORklHX0RSTV9MSUJf UkFORE9NKSArPSBsaWIvZHJtX3JhbmRvbS5vCj4gIGRybS0kKENPTkZJR19EUk1fVk0pICs9IGRy bV92bS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+IGluZGV4IDdhMjZiZmI1MzI5Yy4u NDQxMzExNjVlNGVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3Vh cGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+IEBAIC0zMCw2 ICszMCw3IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICAjaW5jbHVkZSA8ZHJt L2RybV9wcmludC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1fcHJpdmFjeV9zY3JlZW4uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+ Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgo+ICAKPiBAQCAtNzY2LDYgKzc2Nyw4IEBA IHN0YXRpYyBpbnQgZHJtX2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJCQkJCSAgIGZlbmNlX3B0cik7Cj4gIAl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+bWF4X2JwY19wcm9wZXJ0eSkgewo+ICAJCXN0YXRl LT5tYXhfcmVxdWVzdGVkX2JwYyA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29u ZmlnLT5wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eSkgewo+ICsJCWRybV9wcml2YWN5X3NjcmVlbl9z ZXRfdmFsKGNvbm5lY3RvciwgdmFsKTsKPiAgCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+ YXRvbWljX3NldF9wcm9wZXJ0eSkgewo+ICAJCXJldHVybiBjb25uZWN0b3ItPmZ1bmNzLT5hdG9t aWNfc2V0X3Byb3BlcnR5KGNvbm5lY3RvciwKPiAgCQkJCXN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsK PiBAQCAtODQyLDYgKzg0NSw4IEBAIGRybV9hdG9taWNfY29ubmVjdG9yX2dldF9wcm9wZXJ0eShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCSp2YWwgPSAwOwo+ICAJfSBlbHNl IGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPm1heF9icGNfcHJvcGVydHkpIHsKPiAgCQkqdmFs ID0gc3RhdGUtPm1heF9yZXF1ZXN0ZWRfYnBjOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBj b25maWctPnByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KSB7Cj4gKwkJKnZhbCA9IGRybV9wcml2YWN5 X3NjcmVlbl9nZXRfdmFsKGNvbm5lY3Rvcik7Cj4gIAl9IGVsc2UgaWYgKGNvbm5lY3Rvci0+ZnVu Y3MtPmF0b21pY19nZXRfcHJvcGVydHkpIHsKPiAgCQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+ YXRvbWljX2dldF9wcm9wZXJ0eShjb25uZWN0b3IsCj4gIAkJCQlzdGF0ZSwgcHJvcGVydHksIHZh bCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gaW5kZXggNGM3NjY2MjRiMjBkLi5hMzFlMDM4 MjEzMmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiBAQCAtODIxLDYgKzgyMSwxMSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBkcm1fcGFuZWxfb3JpZW50 YXRpb25fZW51bV9saXN0W10gPSB7Cj4gIAl7IERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX1JJ R0hUX1VQLAkiUmlnaHQgU2lkZSBVcCIJfSwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX3Byb3BfZW51bV9saXN0IGRybV9wcml2YWN5X3NjcmVlbl9lbnVtX2xpc3RbXSA9IHsK PiArCXsgRFJNX1BSSVZBQ1lfU0NSRUVOX0RJU0FCTEVELCAiRGlzYWJsZWQiIH0sCj4gKwl7IERS TV9QUklWQUNZX1NDUkVFTl9FTkFCTEVELCAiRW5hYmxlZCIgfSwKPiArfTsKPiArCj4gIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IGRybV9kdmlfaV9zZWxlY3RfZW51bV9s aXN0W10gPSB7Cj4gIAl7IERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9BdXRvbWF0aWMsICJBdXRvbWF0 aWMiIH0sIC8qIERWSS1JIGFuZCBUVi1vdXQgKi8KPiAgCXsgRFJNX01PREVfU1VCQ09OTkVDVE9S X0RWSUQsICAgICAgIkRWSS1EIiAgICAgfSwgLyogRFZJLUkgICovCj4gQEAgLTIyNTMsNiArMjI1 OCwzOSBAQCBzdGF0aWMgdm9pZCBkcm1fdGlsZV9ncm91cF9mcmVlKHN0cnVjdCBrcmVmICprcmVm KQo+ICAJa2ZyZWUodGcpOwo+ICB9Cj4gIAo+ICsvKioKPiArICogZHJtX2Nvbm5lY3Rvcl9pbml0 X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5IC0KPiArICoJY3JlYXRlIGFuZCBhdHRhY2ggdGhlIGNv bm5lY3RlcidzIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5Lgo+ICsgKiBAY29ubmVjdG9yOiBjb25u ZWN0b3IgZm9yIHdoaWNoIHRvIGluaXQgdGhlIHByaXZhY3ktc2NyZWVuIHByb3BlcnR5Lgo+ICsg Kgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGF0dGFjaGVzIHRoZSAicHJpdmFjeS1z Y3JlZW4iIHByb3BlcnR5IHRvIHRoZQo+ICsgKiBjb25uZWN0b3IuIEluaXRpYWwgc3RhdGUgb2Yg cHJpdmFjeS1zY3JlZW4gaXMgc2V0IHRvIGRpc2FibGVkLgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4gKyAqLwo+ ICtpbnQgZHJtX2Nvbm5lY3Rvcl9pbml0X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gKwo+ICsJ cHJvcCA9IGRldi0+bW9kZV9jb25maWcucHJpdmFjeV9zY3JlZW5fcHJvcGVydHk7Cj4gKwlpZiAo IXByb3ApIHsKPiArCQlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGRldiwgRFJNX01P REVfUFJPUF9FTlVNLAo+ICsJCQkJInByaXZhY3ktc2NyZWVuIiwgZHJtX3ByaXZhY3lfc2NyZWVu X2VudW1fbGlzdCwKPiArCQkJCUFSUkFZX1NJWkUoZHJtX3ByaXZhY3lfc2NyZWVuX2VudW1fbGlz dCkpOwo+ICsJCWlmICghcHJvcCkKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJCWRldi0+ bW9kZV9jb25maWcucHJpdmFjeV9zY3JlZW5fcHJvcGVydHkgPSBwcm9wOwo+ICsJfQo+ICsKPiAr CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsIHByb3AsCj4gKwkJ CQkgICBEUk1fUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr RVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2luaXRfcHJpdmFjeV9zY3JlZW5fcHJvcGVydHkp Owo+ICsKPiAgLyoqCj4gICAqIGRybV9tb2RlX3B1dF90aWxlX2dyb3VwIC0gZHJvcCBhIHJlZmVy ZW5jZSB0byBhIHRpbGUgZ3JvdXAuCj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9wcml2YWN5X3NjcmVlbi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjFkNjhlOGFhNmM1Zgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX3ByaXZhY3lfc2NyZWVuLmMKPiBAQCAtMCwwICsxLDE3NiBAQAo+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgo+ICsvKgo+ICsgKiBEUk0gcHJp dmFjeSBTY3JlZW4gY29kZQo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBHb29nbGUgSW5j Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9wY2kuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiArCj4g KyNkZWZpbmUgRFJNX0NPTk5fRFNNX1JFVklEIDEKPiArCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNN X0ZOX1BSSVZBQ1lfR0VUX1NUQVRVUwkxCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNNX0ZOX1BSSVZB Q1lfRU5BQkxFCQkyCj4gKyNkZWZpbmUgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lfRElTQUJMRQkJ Mwo+ICsKPiArc3RhdGljIGNvbnN0IGd1aWRfdCBkcm1fY29ubl9kc21fZ3VpZCA9Cj4gKwlHVUlE X0lOSVQoMHhDNzAzMzExMywgMHg4NzIwLCAweDRDRUIsCj4gKwkJICAweDkwLCAweDkwLCAweDlE LCAweDUyLCAweEIzLCAweEU1LCAweDJELCAweDczKTsKPiArCj4gKy8qCj4gKyAqIE1ha2VzIF9E U00gY2FsbCB0byBzZXQgcHJpdmFjeSBzY3JlZW4gc3RhdHVzIG9yIGdldCBwcml2YWN5IHNjcmVl bi4gUmV0dXJuCj4gKyAqIHZhbHVlIG1hdHRlcnMgb25seSBmb3IgUFJJVkFDWV9HRVRfU1RBVFVT IGNhc2UuIFJldHVybnMgMCBpZiBkaXNhYmxlZCwgMSBpZgo+ICsgKiBlbmFibGVkLgo+ICsgKi8K PiArc3RhdGljIGludCBhY3BpX3ByaXZhY3lfc2NyZWVuX2NhbGxfZHNtKGFjcGlfaGFuZGxlIGNv bm5faGFuZGxlLCB1NjQgZnVuYykKPiArewo+ICsJdW5pb24gYWNwaV9vYmplY3QgKm9iajsKPiAr CWludCByZXQgPSAwOwo+ICsKPiArCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKGNvbm5faGFuZGxl LCAmZHJtX2Nvbm5fZHNtX2d1aWQsCj4gKwkJCQlEUk1fQ09OTl9EU01fUkVWSUQsIGZ1bmMsIE5V TEwpOwo+ICsJaWYgKCFvYmopIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gZXZh bHVhdGUgX0RTTSBmb3IgZm4gJWxseFxuIiwgZnVuYyk7Cj4gKwkJLyogQ2FuJ3QgZG8gbXVjaC4g Rm9yIGdldF92YWwsIGFzc3VtZSBwcml2YWN5X3NjcmVlbiBkaXNhYmxlZCAqLwo+ICsJCWdvdG8g ZG9uZTsKPiArCX0KPiArCj4gKwlpZiAoZnVuYyA9PSBEUk1fQ09OTl9EU01fRk5fUFJJVkFDWV9H RVRfU1RBVFVTICYmCj4gKwkgICAgb2JqLT50eXBlID09IEFDUElfVFlQRV9JTlRFR0VSKQo+ICsJ CXJldCA9ICEhb2JqLT5pbnRlZ2VyLnZhbHVlOwo+ICtkb25lOgo+ICsJQUNQSV9GUkVFKG9iaik7 Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICt2b2lkIGRybV9wcml2YWN5X3NjcmVlbl9zZXRf dmFsKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCQkgZW51bSBkcm1fcHJp dmFjeV9zY3JlZW4gdmFsKQo+ICt7Cj4gKwlhY3BpX2hhbmRsZSBhY3BpX2hhbmRsZSA9IGNvbm5l Y3Rvci0+cHJpdmFjeV9zY3JlZW5faGFuZGxlOwo+ICsKPiArCWlmICghYWNwaV9oYW5kbGUpCj4g KwkJcmV0dXJuOwo+ICsKPiArCWlmICh2YWwgPT0gRFJNX1BSSVZBQ1lfU0NSRUVOX0RJU0FCTEVE KQo+ICsJCWFjcGlfcHJpdmFjeV9zY3JlZW5fY2FsbF9kc20oYWNwaV9oYW5kbGUsCj4gKwkJCQkJ ICAgICBEUk1fQ09OTl9EU01fRk5fUFJJVkFDWV9ESVNBQkxFKTsKPiArCWVsc2UgaWYgKHZhbCA9 PSBEUk1fUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCkKPiArCQlhY3BpX3ByaXZhY3lfc2NyZWVuX2Nh bGxfZHNtKGFjcGlfaGFuZGxlLAo+ICsJCQkJCSAgICAgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lf RU5BQkxFKTsKPiArfQo+ICsKPiArZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gZHJtX3ByaXZhY3lf c2NyZWVuX2dldF92YWwoc3RydWN0IGRybV9jb25uZWN0b3IKPiArCQkJCQkJICAgKmNvbm5lY3Rv cikKPiArewo+ICsJYWNwaV9oYW5kbGUgYWNwaV9oYW5kbGUgPSBjb25uZWN0b3ItPnByaXZhY3lf c2NyZWVuX2hhbmRsZTsKPiArCj4gKwlpZiAoYWNwaV9oYW5kbGUgJiYKPiArCSAgICBhY3BpX3By aXZhY3lfc2NyZWVuX2NhbGxfZHNtKGFjcGlfaGFuZGxlLAo+ICsJCQkJCSBEUk1fQ09OTl9EU01f Rk5fUFJJVkFDWV9HRVRfU1RBVFVTKSkKPiArCQlyZXR1cm4gRFJNX1BSSVZBQ1lfU0NSRUVOX0VO QUJMRUQ7Cj4gKwo+ICsJcmV0dXJuIERSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxFRDsKPiArfQo+ ICsKPiArLyoKPiArICogU2VlIEFDUEkgU3BlYyB2Ni4zLCBUYWJsZSBCLTIsICJEaXNwbGF5IFR5 cGUiIGZvciBkZXRhaWxzLgo+ICsgKiBJbiBzaG9ydCwgdGhlc2UgbWFjcm9zIGRlZmluZSB0aGUg YmFzZSBfQURSIHZhbHVlcyBmb3IgQUNQSSBub2Rlcwo+ICsgKi8KPiArI2RlZmluZSBBQ1BJX0JB U0VfQURSX0ZPUl9PVEhFUlMJKDBVTEwgPDwgOCkKPiArI2RlZmluZSBBQ1BJX0JBU0VfQURSX0ZP Ul9WR0EJCSgxVUxMIDw8IDgpCj4gKyNkZWZpbmUgQUNQSV9CQVNFX0FEUl9GT1JfVFYJCSgyVUxM IDw8IDgpCj4gKyNkZWZpbmUgQUNQSV9CQVNFX0FEUl9GT1JfRVhUX01PTgkoM1VMTCA8PCA4KQo+ ICsjZGVmaW5lIEFDUElfQkFTRV9BRFJfRk9SX0lOVEVHUkFURUQJKDRVTEwgPDwgOCkKPiArCj4g KyNkZWZpbmUgQUNQSV9ERVZJQ0VfSURfU0NIRU1FCQkoMVVMTCA8PCAzMSkKPiArI2RlZmluZSBB Q1BJX0ZJUk1XQVJFX0NBTl9ERVRFQ1QJKDFVTEwgPDwgMTYpCj4gKwo+ICsvKgo+ICsgKiBSZWY6 IEFDUEkgU3BlYyA2LjMKPiArICogaHR0cHM6Ly91ZWZpLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVz L3Jlc291cmNlcy9BQ1BJXzZfM19maW5hbF9KYW4zMC5wZGYKPiArICogUGFnZXMgMTExOSAtIDEx MjMgZGVzY3JpYmUsIHdoYXQgSSBiZWxpZXZlLCBhIHN0YW5kYXJkIHdheSBvZgo+ICsgKiBpZGVu dGlmeWluZyAvIGFkZHJlc3NpbmcgImRpc3BsYXkgcGFuZWxzIiBpbiB0aGUgQUNQSS4gVGh1cyBp dCBwcm92aWRlcwo+ICsgKiBhIHdheSBmb3IgdGhlIEFDUEkgdG8gZGVmaW5lIGRldmljZXMgZm9y IHRoZSBkaXNwbGF5IHBhbmVscyBhdHRhY2hlZAo+ICsgKiB0byB0aGUgc3lzdGVtLiBJdCB0aHVz IHByb3ZpZGVzIGEgd2F5IGZvciB0aGUgQklPUyB0byBleHBvcnQgYW55IHBhbmVsCj4gKyAqIHNw ZWNpZmljIHByb3BlcnRpZXMgdG8gdGhlIHN5c3RlbSB2aWEgQUNQSSAobGlrZSBkZXZpY2UgdHJl ZXMpLgo+ICsgKgo+ICsgKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGxvb2tzIHVwIHRoZSBBQ1BJ IG5vZGUgZm9yIGEgY29ubmVjdG9yIGFuZCBsaW5rcwo+ICsgKiB0byBpdC4gVGVjaG5pY2FsbHkg aXQgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgcHJpdmFjeV9zY3JlZW4gY29kZSwgYW5kCj4gKyAq IGlkZWFsbHkgbWF5IGJlIGNhbGxlZCBmb3IgYWxsIGNvbm5lY3RvcnMuIEl0IGlzIGdlbmVyYWxs eSBhIGdvb2QgaWRlYSB0bwo+ICsgKiBiZSBhYmxlIHRvIGF0dGFjaCBhbiBBQ1BJIG5vZGUgdG8g ZGVzY3JpYmUgYW55dGhpbmcgaWYgbmVlZGVkLiAoVGhpcyBjYW4KPiArICogaGVscCBpbiBmdXR1 cmUgZm9yIG90aGVyIHBhbmVsIHNwZWNpZmljIGZlYXR1cmVzIG1heWJlKS4gSG93ZXZlciwgaXQK PiArICogbmVlZHMgYSAicG9ydCBpbmRleCIgd2hpY2ggSSBiZWxpZXZlIGlzIHRoZSBpbmRleCB3 aXRoaW4gYSBwYXJ0aWN1bGFyCj4gKyAqIHR5cGUgb2YgcG9ydCAoUmVmIHRvIHRoZSBwYWdlcyBv ZiBzcGVjIG1lbnRpb25lZCBhYm92ZSkuIFRoaXMgcG9ydCBpbmRleAo+ICsgKiB1bmZvcnR1bmF0 ZWx5IGlzIG5vdCBhdmFpbGFibGUgaW4gRFJNIGNvZGUsIHNvIGN1cnJlbnRseSBpdHMgY2FsbCBp cwo+ICsgKiBvcmlnaW5hdGVkIGZyb20gaTkxNSBkcml2ZXIuCj4gKyAqLwo+ICtzdGF0aWMgaW50 IGRybV9jb25uZWN0b3JfYXR0YWNoX2FjcGlfbm9kZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+ICsJCQkJCSAgdTggcG9ydF9pbmRleCkKPiArewo+ICsJc3RydWN0IGRldmljZSAq ZGV2ID0gJmNvbm5lY3Rvci0+ZGV2LT5wZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgYWNwaV9kZXZpY2Ug KmNvbm5fZGV2Owo+ICsJdTY0IGNvbm5fYWRkcjsKPiArCj4gKwkvKgo+ICsJICogRGV0ZXJtaW5l IHdoYXQgX0FEUiB0byBsb29rIGZvciwgZGVwZW5kaW5nIG9uIGRldmljZSB0eXBlIGFuZAo+ICsJ ICogcG9ydCBudW1iZXIuIFBvdGVudGlhbGx5IHdlIG9ubHkgY2FyZSBhYm91dCB0aGUKPiArCSAq IGVEUCAvIGludGVncmF0ZWQgZGlzcGxheXM/Cj4gKwkgKi8KPiArCXN3aXRjaCAoY29ubmVjdG9y LT5jb25uZWN0b3JfdHlwZSkgewo+ICsJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfZURQOgo+ICsJ CWNvbm5fYWRkciA9IEFDUElfQkFTRV9BRFJfRk9SX0lOVEVHUkFURUQgKyBwb3J0X2luZGV4Owo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfVkdBOgo+ICsJCWNvbm5fYWRk ciA9IEFDUElfQkFTRV9BRFJfRk9SX1ZHQSArIHBvcnRfaW5kZXg7Cj4gKwkJYnJlYWs7Cj4gKwlj YXNlIERSTV9NT0RFX0NPTk5FQ1RPUl9UVjoKPiArCQljb25uX2FkZHIgPSBBQ1BJX0JBU0VfQURS X0ZPUl9UViArIHBvcnRfaW5kZXg7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9NT0RFX0NPTk5F Q1RPUl9EaXNwbGF5UG9ydDoKPiArCQljb25uX2FkZHIgPSBBQ1BJX0JBU0VfQURSX0ZPUl9FWFRf TU9OICsgcG9ydF9pbmRleDsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1F Tk9UU1VQUDsKPiArCX0KPiArCj4gKwljb25uX2FkZHIgfD0gQUNQSV9ERVZJQ0VfSURfU0NIRU1F Owo+ICsJY29ubl9hZGRyIHw9IEFDUElfRklSTVdBUkVfQ0FOX0RFVEVDVDsKPiArCj4gKwlEUk1f REVWX0RFQlVHKGRldiwgIiVzOiBGaW5kaW5nIGRybV9jb25uZWN0b3IgQUNQSSBub2RlIGF0IF9B RFI9JWxsWFxuIiwKPiArCQkgICAgICBfX2Z1bmNfXywgY29ubl9hZGRyKTsKPiArCj4gKwkvKiBM b29rIHVwIHRoZSBjb25uZWN0b3IgZGV2aWNlLCB1bmRlciB0aGUgUENJIGRldmljZSAqLwo+ICsJ Y29ubl9kZXYgPSBhY3BpX2ZpbmRfY2hpbGRfZGV2aWNlKEFDUElfQ09NUEFOSU9OKGRldiksCj4g KwkJCQkJICBjb25uX2FkZHIsIGZhbHNlKTsKPiArCWlmICghY29ubl9kZXYpCj4gKwkJcmV0dXJu IC1FTk9ERVY7Cj4gKwo+ICsJY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9oYW5kbGUgPSBjb25u X2Rldi0+aGFuZGxlOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2Jvb2wgZHJtX3ByaXZhY3lf c2NyZWVuX3ByZXNlbnQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTggcG9ydF9p bmRleCkKPiArewo+ICsJYWNwaV9oYW5kbGUgaGFuZGxlOwo+ICsKPiArCWlmIChkcm1fY29ubmVj dG9yX2F0dGFjaF9hY3BpX25vZGUoY29ubmVjdG9yLCBwb3J0X2luZGV4KSkKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwo+ICsJaGFuZGxlID0gY29ubmVjdG9yLT5wcml2YWN5X3NjcmVlbl9oYW5kbGU7 Cj4gKwlpZiAoIWFjcGlfY2hlY2tfZHNtKGhhbmRsZSwgJmRybV9jb25uX2RzbV9ndWlkLAo+ICsJ CQkgICAgRFJNX0NPTk5fRFNNX1JFVklELAo+ICsJCQkgICAgMSA8PCBEUk1fQ09OTl9EU01fRk5f UFJJVkFDWV9HRVRfU1RBVFVTIHwKPiArCQkJICAgIDEgPDwgRFJNX0NPTk5fRFNNX0ZOX1BSSVZB Q1lfRU5BQkxFIHwKPiArCQkJICAgIDEgPDwgRFJNX0NPTk5fRFNNX0ZOX1BSSVZBQ1lfRElTQUJM RSkpIHsKPiArCQlEUk1fV0FSTigiJXM6IE9kZCwgY29ubmVjdG9yIEFDUEkgbm9kZSBidXQgbm8g cHJpdmFjeSBzY3JuP1xuIiwKPiArCQkJIGNvbm5lY3Rvci0+ZGV2LT5kZXYpOwo+ICsJCXJldHVy biBmYWxzZTsKPiArCX0KPiArCURSTV9ERVZfSU5GTyhjb25uZWN0b3ItPmRldi0+ZGV2LCAic3Vw cG9ydHMgcHJpdmFjeSBzY3JlZW5cbiIpOwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4gaW5kZXggNTdlOWYwYmEzMzFiLi4zZmYz OTYyZDI3ZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4g QEAgLTM5LDYgKzM5LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4gICNp bmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1faGRjcC5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9wcml2YWN5X3NjcmVlbi5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9w cm9iZV9oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ICAKPiBAQCAtNjM1 NCw2ICs2MzU1LDggQEAgaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3QKPiAgCj4gIAkJY29ubmVjdG9y LT5zdGF0ZS0+c2NhbGluZ19tb2RlID0gRFJNX01PREVfU0NBTEVfQVNQRUNUOwo+ICAKPiArCQlp ZiAoZHJtX3ByaXZhY3lfc2NyZWVuX3ByZXNlbnQoY29ubmVjdG9yLCBwb3J0IC0gUE9SVF9BKSkK PiArCQkJZHJtX2Nvbm5lY3Rvcl9pbml0X3ByaXZhY3lfc2NyZWVuX3Byb3BlcnR5KGNvbm5lY3Rv cik7Cj4gIAl9Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaCBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+IGluZGV4IDY4MWNiNTkwZjk1Mi4u NjNiODMxOGJkNjhjIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+IEBAIC0yMjUsNiArMjI1LDIwIEBA IGVudW0gZHJtX2xpbmtfc3RhdHVzIHsKPiAgCURSTV9MSU5LX1NUQVRVU19CQUQgPSBEUk1fTU9E RV9MSU5LX1NUQVRVU19CQUQsCj4gIH07Cj4gIAo+ICsvKioKPiArICogZW51bSBkcm1fcHJpdmFj eV9zY3JlZW4gLSBwcml2YWN5X3NjcmVlbiBzdGF0dXMKPiArICoKPiArICogVGhpcyBlbnVtIGlz IHVzZWQgdG8gdHJhY2sgYW5kIGNvbnRyb2wgdGhlIHN0YXRlIG9mIHRoZSBwcml2YWN5IHNjcmVl bi4KPiArICogVGhlcmUgYXJlIG5vIHNlcGFyYXRlICNkZWZpbmVzIGZvciB0aGUgdWFwaSEKPiAr ICoKPiArICogQERSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxFRDogVGhlIHByaXZhY3ktc2NyZWVu IG9uIHRoZSBwYW5lbCBpcyBkaXNhYmxlZAo+ICsgKiBARFJNX1BSSVZBQ1lfU0NSRUVOX0VOQUJM RUQ6ICBUaGUgcHJpdmFjeS1zY3JlZW4gb24gdGhlIHBhbmVsIGlzIGVuYWJsZWQKPiArICovCj4g K2VudW0gZHJtX3ByaXZhY3lfc2NyZWVuIHsKPiArCURSTV9QUklWQUNZX1NDUkVFTl9ESVNBQkxF RCA9IDAsCj4gKwlEUk1fUFJJVkFDWV9TQ1JFRU5fRU5BQkxFRCA9IDEsCj4gK307Cj4gKwo+ICAv KioKPiAgICogZW51bSBkcm1fcGFuZWxfb3JpZW50YXRpb24gLSBwYW5lbF9vcmllbnRhdGlvbiBp bmZvIGZvciAmZHJtX2Rpc3BsYXlfaW5mbwo+ICAgKgo+IEBAIC0xNDEwLDYgKzE0MjQsOSBAQCBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciB7Cj4gIAo+ICAJLyoqIEBoZHJfc2lua19tZXRhZGF0YTogSERS IE1ldGFkYXRhIEluZm9ybWF0aW9uIHJlYWQgZnJvbSBzaW5rICovCj4gIAlzdHJ1Y3QgaGRyX3Np bmtfbWV0YWRhdGEgaGRyX3NpbmtfbWV0YWRhdGE7Cj4gKwo+ICsJLyogSGFuZGxlIHVzZWQgYnkg cHJpdmFjeSBzY3JlZW4gY29kZSAqLwo+ICsJdm9pZCAqcHJpdmFjeV9zY3JlZW5faGFuZGxlOwo+ ICB9Owo+ICAKPiAgI2RlZmluZSBvYmpfdG9fY29ubmVjdG9yKHgpIGNvbnRhaW5lcl9vZih4LCBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciwgYmFzZSkKPiBAQCAtMTU0Myw2ICsxNTYwLDcgQEAgaW50IGRy bV9jb25uZWN0b3JfaW5pdF9wYW5lbF9vcmllbnRhdGlvbl9wcm9wZXJ0eSgKPiAgCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Cj4gIGludCBk cm1fY29ubmVjdG9yX2F0dGFjaF9tYXhfYnBjX3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4gIAkJCQkJICBpbnQgbWluLCBpbnQgbWF4KTsKPiAraW50IGRybV9jb25u ZWN0b3JfaW5pdF9wcml2YWN5X3NjcmVlbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKPiAgCj4gIC8qKgo+ICAgKiBzdHJ1Y3QgZHJtX3RpbGVfZ3JvdXAgLSBUaWxl IGdyb3VwIG1ldGFkYXRhCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZp Zy5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiBpbmRleCAzYmNiZTMwMzM5ZjAu LjZkNWQyM2RhOTBkNCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcu aAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oCj4gQEAgLTgxMyw2ICs4MTMs MTMgQEAgc3RydWN0IGRybV9tb2RlX2NvbmZpZyB7Cj4gIAkgKi8KPiAgCXN0cnVjdCBkcm1fcHJv cGVydHkgKnBhbmVsX29yaWVudGF0aW9uX3Byb3BlcnR5Owo+ICAKPiArCS8qKgo+ICsJICogQHBy aXZhY3lfc2NyZWVuX3Byb3BlcnR5OiBPcHRpb25hbCBjb25uZWN0b3IgcHJvcGVydHkgdG8gaW5k aWNhdGUKPiArCSAqIGFuZCBjb250cm9sIHRoZSBzdGF0ZSAoZW5hYmxlZCAvIGRpc2FibGVkKSBv ZiBwcml2YWN5LXNjcmVlbiBvbiB0aGUKPiArCSAqIHBhbmVsLCBpZiBwcmVzZW50Lgo+ICsJICov Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcml2YWN5X3NjcmVlbl9wcm9wZXJ0eTsKPiArCj4g IAkvKioKPiAgCSAqIEB3cml0ZWJhY2tfZmJfaWRfcHJvcGVydHk6IFByb3BlcnR5IGZvciB3cml0 ZWJhY2sgY29ubmVjdG9ycywgc3RvcmluZwo+ICAJICogdGhlIElEIG9mIHRoZSBvdXRwdXQgZnJh bWVidWZmZXIuCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5o IGIvaW5jbHVkZS9kcm0vZHJtX3ByaXZhY3lfc2NyZWVuLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzU4OWJiYzQ3NjU2Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2luY2x1ZGUvZHJtL2RybV9wcml2YWN5X3NjcmVlbi5oCj4gQEAgLTAsMCArMSwzMyBAQAo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBHb29nbGUgSW5jLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYg X19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9fCj4gKyNkZWZpbmUgX19EUk1fUFJJVkFDWV9TQ1JFRU5f SF9fCj4gKwo+ICsjaWZkZWYgQ09ORklHX0FDUEkKPiArYm9vbCBkcm1fcHJpdmFjeV9zY3JlZW5f cHJlc2VudChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1OCBwb3J0KTsKPiArdm9p ZCBkcm1fcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCQkJZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gdmFsKTsKPiArZW51bSBkcm1fcHJp dmFjeV9zY3JlZW4gZHJtX3ByaXZhY3lfc2NyZWVuX2dldF92YWwoc3RydWN0IGRybV9jb25uZWN0 b3IKPiArCQkJCQkJICAgKmNvbm5lY3Rvcik7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUgYm9v bCBkcm1fcHJpdmFjeV9zY3JlZW5fcHJlc2VudChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCQkJCSAgICAgIHU4IHBvcnQpCj4gK3sKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ ICsKPiArdm9pZCBkcm1fcHJpdmFjeV9zY3JlZW5fc2V0X3ZhbChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICsJCQkJZW51bSBkcm1fcHJpdmFjeV9zY3JlZW4gdmFsKQo+ICt7IH0K PiArCj4gK2VudW0gZHJtX3ByaXZhY3lfc2NyZWVuIGRybV9wcml2YWN5X3NjcmVlbl9nZXRfdmFs KAo+ICsJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXJldHVy biBEUk1fUFJJVkFDWV9TQ1JFRU5fRElTQUJMRUQ7Cj4gK30KPiArI2VuZGlmIC8qIENPTkZJR19B Q1BJICovCj4gKwo+ICsjZW5kaWYgLyogX19EUk1fUFJJVkFDWV9TQ1JFRU5fSF9fICovCj4gLS0g Cj4gMi4yMy4wLjg2Ni5nYjg2OWI5OGQ0Yy1nb29nCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4