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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 CFF0EC47084 for ; Tue, 25 May 2021 07:09:25 +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 CC1E861005 for ; Tue, 25 May 2021 07:09:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CC1E861005 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=astier.eu 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 C916089F2A; Tue, 25 May 2021 07:09:23 +0000 (UTC) Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by gabe.freedesktop.org (Postfix) with ESMTPS id 41D456E8CF for ; Mon, 24 May 2021 16:47:51 +0000 (UTC) Received: by mail-wm1-x329.google.com with SMTP id l18-20020a1ced120000b029014c1adff1edso11781412wmh.4 for ; Mon, 24 May 2021 09:47:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=astier-eu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3I2ZNni0vuGSlO6ssnI4sarfm4yS8wntgI1aAqSqACQ=; b=SDBJengL6q3RuEk8yFkhQQAyBndB8O5xUNi+lIRqH2Z5RNNGppwhFVWnDp59uvmKSa Ot3u8zmyU0MgNwlQFWRS1Qhgl69Gyez+WlrNlvqNfYwRyNn5iJ56E5tsoFGF7vzanv0r kCOjbri25MtpRGsY2/bXLhTUTnPREGrqZkVnFAajLEMFvGsbAr5hQrBjWhuj0EwYGSjo GQ+EIUgs2DXBDImB8Q/UWncBZ6K9bGklcv6yxzAN5YbkRDJ+nOrLcHIElDA9VSXK8Mt2 fOhC9B8Mpbxpex3rqVUMBchRudCkvZjrVvw8w8Xgc/3WGxfHhnpMnd5NQ0ENO62DH0Qn MtJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3I2ZNni0vuGSlO6ssnI4sarfm4yS8wntgI1aAqSqACQ=; b=Hha6izJ2WGT6/LM2XPQ+KxCzQN35ERNHlZpkpz4LeYDNuTDoKoFp93jSMnBQRYnZuL XPSM5GyK4c+oIrcND/KNTC6Aq6NNVXgtF9LpwKMCFCWjvs7j7TPl4q6PcuPgiD/L47bw fAG9flx6OAqH3P02YLXipqyURPdG9fswVpyoJyH9KXeyXeIo8hfXsoJI3rhRNbfTle8L QycUVtY1j5lOUIrq/LHYaqEgQ89h/i/oS1XbNDMAjd40qvxbIKvZ4q+LqlYJWvtUhZNA 5KnCUVpJagXmx3RGPS/z+Lo/tBjde3+g3VNYCO/U2p9zd9jP6NaQY0vEeFtRnvSIhlT5 1QDA== X-Gm-Message-State: AOAM5334GHWroNHMs2/bn+flnv72th0GY+BymFCz+wTaMDMNJJaYKPpv Z5pMrakOCJFbAeNS38jxBxQPRg== X-Google-Smtp-Source: ABdhPJyMHBrdDa68SqLdo3dfQi174VSuakv9CY6fYIyHTnTRflkuLKlqpd5OZmFfr+a+4I3CLuboKQ== X-Received: by 2002:a1c:4601:: with SMTP id t1mr20329186wma.27.1621874869848; Mon, 24 May 2021 09:47:49 -0700 (PDT) Received: from localhost.localdomain ([2a01:e0a:806:8950:61f0:1b3d:bc7a:1d60]) by smtp.gmail.com with ESMTPSA id b10sm15226358wrr.27.2021.05.24.09.47.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 09:47:49 -0700 (PDT) From: Anisse Astier To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH 1/3] drm/i915/opregion: add support for mailbox #5 EDID Date: Mon, 24 May 2021 18:47:17 +0200 Message-Id: <20210524164719.6588-2-anisse@astier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210524164719.6588-1-anisse@astier.eu> References: <20210524164719.6588-1-anisse@astier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Tue, 25 May 2021 07:09:22 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jani Nikula , Hans de Goede , Uma Shankar , Anisse Astier Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The ACPI OpRegion Mailbox #5 ASLE extension may contain an EDID to be used for the embedded display. Add support for using it via by adding the EDID to the list of available modes on the connector. Based on original patch by: Jani Nikula Changes: - EDID is copied and validated with drm_edid_is_valid - Mode is now added via drm_add_edid_modes instead of using override mechanism Cc: Jani Nikula Cc: Uma Shankar Cc: Ville Syrjälä Signed-off-by: Anisse Astier --- drivers/gpu/drm/i915/display/intel_opregion.c | 69 ++++++++++++++++++- drivers/gpu/drm/i915/display/intel_opregion.h | 8 +++ 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c index dfd724e506b5..ef8d38f041eb 100644 --- a/drivers/gpu/drm/i915/display/intel_opregion.c +++ b/drivers/gpu/drm/i915/display/intel_opregion.c @@ -196,6 +196,8 @@ struct opregion_asle_ext { #define ASLE_IUER_WINDOWS_BTN (1 << 1) #define ASLE_IUER_POWER_BTN (1 << 0) +#define ASLE_PHED_EDID_VALID_MASK 0x3 + /* Software System Control Interrupt (SWSCI) */ #define SWSCI_SCIC_INDICATOR (1 << 0) #define SWSCI_SCIC_MAIN_FUNCTION_SHIFT 1 @@ -909,8 +911,10 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv) opregion->asle->ardy = ASLE_ARDY_NOT_READY; } - if (mboxes & MBOX_ASLE_EXT) + if (mboxes & MBOX_ASLE_EXT) { drm_dbg(&dev_priv->drm, "ASLE extension supported\n"); + opregion->asle_ext = base + OPREGION_ASLE_EXT_OFFSET; + } if (intel_load_vbt_firmware(dev_priv) == 0) goto out; @@ -1037,6 +1041,68 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv) return ret - 1; } +/** + * intel_opregion_edid_probe - Add EDID from ACPI OpRegion mailbox #5 + * @intel_connector: eDP connector + * + * This reads the ACPI Opregion mailbox #5 to extract the EDID that is passed + * to it. + * + * Will take a lock on the DRM mode_config to add the EDID; make sure it isn't + * called with lock taken. + * + */ +void intel_opregion_edid_probe(struct intel_connector *intel_connector) +{ + struct drm_connector *connector = &intel_connector->base; + struct drm_i915_private *i915 = to_i915(connector->dev); + struct intel_opregion *opregion = &i915->opregion; + const void *in_edid; + const struct edid *edid; + struct edid *new_edid; + int len, ret, num; + + if (!opregion->asle_ext || connector->override_edid) + return; + + in_edid = opregion->asle_ext->bddc; + + /* Validity corresponds to number of 128-byte blocks */ + len = (opregion->asle_ext->phed & ASLE_PHED_EDID_VALID_MASK) * 128; + if (!len || !memchr_inv(in_edid, 0, len)) + return; + + edid = in_edid; + + if (len < EDID_LENGTH * (1 + edid->extensions)) { + drm_dbg_kms(&i915->drm, "Invalid EDID in ACPI OpRegion (Mailbox #5)\n"); + return; + } + new_edid = drm_edid_duplicate(edid); + if (!new_edid) { + drm_err(&i915->drm, "Cannot duplicate EDID\n"); + return; + } + if (!drm_edid_is_valid(new_edid)) { + kfree(new_edid); + drm_dbg_kms(&i915->drm, "Cannot validate EDID in ACPI OpRegion (Mailbox #5)\n"); + return; + } + + ret = drm_connector_update_edid_property(connector, new_edid); + if (ret) { + kfree(new_edid); + return; + } + + mutex_lock(&connector->dev->mode_config.mutex); + num = drm_add_edid_modes(connector, new_edid); + mutex_unlock(&connector->dev->mode_config.mutex); + + drm_dbg_kms(&i915->drm, "Using OpRegion EDID for [CONNECTOR:%d:%s], added %d mode(s)\n", + connector->base.id, connector->name, num); +} + void intel_opregion_register(struct drm_i915_private *i915) { struct intel_opregion *opregion = &i915->opregion; @@ -1127,6 +1193,7 @@ void intel_opregion_unregister(struct drm_i915_private *i915) opregion->acpi = NULL; opregion->swsci = NULL; opregion->asle = NULL; + opregion->asle_ext = NULL; opregion->vbt = NULL; opregion->lid_state = NULL; } diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h b/drivers/gpu/drm/i915/display/intel_opregion.h index 4aa68ffbd30e..c1ecfcbb6f55 100644 --- a/drivers/gpu/drm/i915/display/intel_opregion.h +++ b/drivers/gpu/drm/i915/display/intel_opregion.h @@ -29,12 +29,14 @@ #include struct drm_i915_private; +struct intel_connector; struct intel_encoder; struct opregion_header; struct opregion_acpi; struct opregion_swsci; struct opregion_asle; +struct opregion_asle_ext; struct intel_opregion { struct opregion_header *header; @@ -43,6 +45,7 @@ struct intel_opregion { u32 swsci_gbda_sub_functions; u32 swsci_sbcb_sub_functions; struct opregion_asle *asle; + struct opregion_asle_ext *asle_ext; void *rvda; void *vbt_firmware; const void *vbt; @@ -71,6 +74,7 @@ int intel_opregion_notify_encoder(struct intel_encoder *intel_encoder, int intel_opregion_notify_adapter(struct drm_i915_private *dev_priv, pci_power_t state); int intel_opregion_get_panel_type(struct drm_i915_private *dev_priv); +void intel_opregion_edid_probe(struct intel_connector *connector); #else /* CONFIG_ACPI*/ @@ -117,6 +121,10 @@ static inline int intel_opregion_get_panel_type(struct drm_i915_private *dev) return -ENODEV; } +void intel_opregion_edid_probe(struct intel_connector *connector) +{ +} + #endif /* CONFIG_ACPI */ #endif -- 2.31.1 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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 64FA2C2B9F7 for ; Mon, 24 May 2021 16:47:55 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C8402613E6 for ; Mon, 24 May 2021 16:47:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C8402613E6 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=astier.eu 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 5ADC06E8D2; Mon, 24 May 2021 16:47:54 +0000 (UTC) Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8A8956E8CF for ; Mon, 24 May 2021 16:47:51 +0000 (UTC) Received: by mail-wm1-x330.google.com with SMTP id f6-20020a1c1f060000b0290175ca89f698so11767585wmf.5 for ; Mon, 24 May 2021 09:47:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=astier-eu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3I2ZNni0vuGSlO6ssnI4sarfm4yS8wntgI1aAqSqACQ=; b=SDBJengL6q3RuEk8yFkhQQAyBndB8O5xUNi+lIRqH2Z5RNNGppwhFVWnDp59uvmKSa Ot3u8zmyU0MgNwlQFWRS1Qhgl69Gyez+WlrNlvqNfYwRyNn5iJ56E5tsoFGF7vzanv0r kCOjbri25MtpRGsY2/bXLhTUTnPREGrqZkVnFAajLEMFvGsbAr5hQrBjWhuj0EwYGSjo GQ+EIUgs2DXBDImB8Q/UWncBZ6K9bGklcv6yxzAN5YbkRDJ+nOrLcHIElDA9VSXK8Mt2 fOhC9B8Mpbxpex3rqVUMBchRudCkvZjrVvw8w8Xgc/3WGxfHhnpMnd5NQ0ENO62DH0Qn MtJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3I2ZNni0vuGSlO6ssnI4sarfm4yS8wntgI1aAqSqACQ=; b=I528eOPDl14YDriiQpjJ53bARb6hX4XdXWQFwZwUqCQDc2koP9JmNZZWG6aR7J/NzY JLlui0+78t7zYnAKx8n6cChudDrY0B401CUruQQqMSUajccaBHPrpTEykNCIMTzCJYbz 0VVByLIGNi/F2X+DidOr85AX3NBr9Mp+pqHTI91VGYXA2++ZK/TS7lavLj/VG0vJWeGI aJEdz8eiviQtYQJw/bUQsQoALEqVu1UKgPH+RuaP+ppVrccCixuG9EZSyi/LF016nYjx GpTz9E+/MgqICfPdkB+HIOpQo2+BcmPTCozDcN4nUJzLZtkTqkdWl6gXhE24N12iHlj/ 97XQ== X-Gm-Message-State: AOAM531zpzRd6Nw1j0Msuh7eQ18lNrRCodyweY7I///Fc909ZDq9EUpE rBuSHvlfPWJcxsIzqPJszo8yFrNrbCM7tQ== X-Google-Smtp-Source: ABdhPJyMHBrdDa68SqLdo3dfQi174VSuakv9CY6fYIyHTnTRflkuLKlqpd5OZmFfr+a+4I3CLuboKQ== X-Received: by 2002:a1c:4601:: with SMTP id t1mr20329186wma.27.1621874869848; Mon, 24 May 2021 09:47:49 -0700 (PDT) Received: from localhost.localdomain ([2a01:e0a:806:8950:61f0:1b3d:bc7a:1d60]) by smtp.gmail.com with ESMTPSA id b10sm15226358wrr.27.2021.05.24.09.47.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 09:47:49 -0700 (PDT) From: Anisse Astier To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Mon, 24 May 2021 18:47:17 +0200 Message-Id: <20210524164719.6588-2-anisse@astier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210524164719.6588-1-anisse@astier.eu> References: <20210524164719.6588-1-anisse@astier.eu> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 1/3] drm/i915/opregion: add support for mailbox #5 EDID X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jani Nikula Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" VGhlIEFDUEkgT3BSZWdpb24gTWFpbGJveCAjNSBBU0xFIGV4dGVuc2lvbiBtYXkgY29udGFpbiBh biBFRElEIHRvIGJlCnVzZWQgZm9yIHRoZSBlbWJlZGRlZCBkaXNwbGF5LiBBZGQgc3VwcG9ydCBm b3IgdXNpbmcgaXQgdmlhIGJ5IGFkZGluZwp0aGUgRURJRCB0byB0aGUgbGlzdCBvZiBhdmFpbGFi bGUgbW9kZXMgb24gdGhlIGNvbm5lY3Rvci4KCkJhc2VkIG9uIG9yaWdpbmFsIHBhdGNoIGJ5OiBK YW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgoKQ2hhbmdlczoKIC0gRURJRCBpcyBj b3BpZWQgYW5kIHZhbGlkYXRlZCB3aXRoIGRybV9lZGlkX2lzX3ZhbGlkCiAtIE1vZGUgaXMgbm93 IGFkZGVkIHZpYSBkcm1fYWRkX2VkaWRfbW9kZXMgaW5zdGVhZCBvZiB1c2luZyBvdmVycmlkZQog ICBtZWNoYW5pc20KCkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgpDYzog VW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFuaXNzZSBBc3Rp ZXIgPGFuaXNzZUBhc3RpZXIuZXU+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9vcHJlZ2lvbi5jIHwgNjkgKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9vcHJlZ2lvbi5oIHwgIDggKysrCiAyIGZpbGVzIGNoYW5nZWQs IDc2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX29wcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX29wcmVnaW9uLmMKaW5kZXggZGZkNzI0ZTUwNmI1Li5lZjhkMzhmMDQx ZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ByZWdp b24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX29wcmVnaW9uLmMK QEAgLTE5Niw2ICsxOTYsOCBAQCBzdHJ1Y3Qgb3ByZWdpb25fYXNsZV9leHQgewogI2RlZmluZSBB U0xFX0lVRVJfV0lORE9XU19CVE4JCSgxIDw8IDEpCiAjZGVmaW5lIEFTTEVfSVVFUl9QT1dFUl9C VE4JCSgxIDw8IDApCiAKKyNkZWZpbmUgQVNMRV9QSEVEX0VESURfVkFMSURfTUFTSwkweDMKKwog LyogU29mdHdhcmUgU3lzdGVtIENvbnRyb2wgSW50ZXJydXB0IChTV1NDSSkgKi8KICNkZWZpbmUg U1dTQ0lfU0NJQ19JTkRJQ0FUT1IJCSgxIDw8IDApCiAjZGVmaW5lIFNXU0NJX1NDSUNfTUFJTl9G VU5DVElPTl9TSElGVAkxCkBAIC05MDksOCArOTExLDEwIEBAIGludCBpbnRlbF9vcHJlZ2lvbl9z ZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCW9wcmVnaW9uLT5hc2xl LT5hcmR5ID0gQVNMRV9BUkRZX05PVF9SRUFEWTsKIAl9CiAKLQlpZiAobWJveGVzICYgTUJPWF9B U0xFX0VYVCkKKwlpZiAobWJveGVzICYgTUJPWF9BU0xFX0VYVCkgewogCQlkcm1fZGJnKCZkZXZf cHJpdi0+ZHJtLCAiQVNMRSBleHRlbnNpb24gc3VwcG9ydGVkXG4iKTsKKwkJb3ByZWdpb24tPmFz bGVfZXh0ID0gYmFzZSArIE9QUkVHSU9OX0FTTEVfRVhUX09GRlNFVDsKKwl9CiAKIAlpZiAoaW50 ZWxfbG9hZF92YnRfZmlybXdhcmUoZGV2X3ByaXYpID09IDApCiAJCWdvdG8gb3V0OwpAQCAtMTAz Nyw2ICsxMDQxLDY4IEBAIGludGVsX29wcmVnaW9uX2dldF9wYW5lbF90eXBlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gcmV0IC0gMTsKIH0KIAorLyoqCisgKiBp bnRlbF9vcHJlZ2lvbl9lZGlkX3Byb2JlIC0gQWRkIEVESUQgZnJvbSBBQ1BJIE9wUmVnaW9uIG1h aWxib3ggIzUKKyAqIEBpbnRlbF9jb25uZWN0b3I6IGVEUCBjb25uZWN0b3IKKyAqCisgKiBUaGlz IHJlYWRzIHRoZSBBQ1BJIE9wcmVnaW9uIG1haWxib3ggIzUgdG8gZXh0cmFjdCB0aGUgRURJRCB0 aGF0IGlzIHBhc3NlZAorICogdG8gaXQuCisgKgorICogV2lsbCB0YWtlIGEgbG9jayBvbiB0aGUg RFJNIG1vZGVfY29uZmlnIHRvIGFkZCB0aGUgRURJRDsgbWFrZSBzdXJlIGl0IGlzbid0CisgKiBj YWxsZWQgd2l0aCBsb2NrIHRha2VuLgorICoKKyAqLwordm9pZCBpbnRlbF9vcHJlZ2lvbl9lZGlk X3Byb2JlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKK3sKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoY29ubmVjdG9yLT5kZXYpOwor CXN0cnVjdCBpbnRlbF9vcHJlZ2lvbiAqb3ByZWdpb24gPSAmaTkxNS0+b3ByZWdpb247CisJY29u c3Qgdm9pZCAqaW5fZWRpZDsKKwljb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZDsKKwlzdHJ1Y3QgZWRp ZCAqbmV3X2VkaWQ7CisJaW50IGxlbiwgcmV0LCBudW07CisKKwlpZiAoIW9wcmVnaW9uLT5hc2xl X2V4dCB8fCBjb25uZWN0b3ItPm92ZXJyaWRlX2VkaWQpCisJCXJldHVybjsKKworCWluX2VkaWQg PSBvcHJlZ2lvbi0+YXNsZV9leHQtPmJkZGM7CisKKwkvKiBWYWxpZGl0eSBjb3JyZXNwb25kcyB0 byBudW1iZXIgb2YgMTI4LWJ5dGUgYmxvY2tzICovCisJbGVuID0gKG9wcmVnaW9uLT5hc2xlX2V4 dC0+cGhlZCAmIEFTTEVfUEhFRF9FRElEX1ZBTElEX01BU0spICogMTI4OworCWlmICghbGVuIHx8 ICFtZW1jaHJfaW52KGluX2VkaWQsIDAsIGxlbikpCisJCXJldHVybjsKKworCWVkaWQgPSBpbl9l ZGlkOworCisJaWYgKGxlbiA8IEVESURfTEVOR1RIICogKDEgKyBlZGlkLT5leHRlbnNpb25zKSkg eworCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiSW52YWxpZCBFRElEIGluIEFDUEkgT3BSZWdp b24gKE1haWxib3ggIzUpXG4iKTsKKwkJcmV0dXJuOworCX0KKwluZXdfZWRpZCA9IGRybV9lZGlk X2R1cGxpY2F0ZShlZGlkKTsKKwlpZiAoIW5ld19lZGlkKSB7CisJCWRybV9lcnIoJmk5MTUtPmRy bSwgIkNhbm5vdCBkdXBsaWNhdGUgRURJRFxuIik7CisJCXJldHVybjsKKwl9CisJaWYgKCFkcm1f ZWRpZF9pc192YWxpZChuZXdfZWRpZCkpIHsKKwkJa2ZyZWUobmV3X2VkaWQpOworCQlkcm1fZGJn X2ttcygmaTkxNS0+ZHJtLCAiQ2Fubm90IHZhbGlkYXRlIEVESUQgaW4gQUNQSSBPcFJlZ2lvbiAo TWFpbGJveCAjNSlcbiIpOworCQlyZXR1cm47CisJfQorCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl91 cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIG5ld19lZGlkKTsKKwlpZiAocmV0KSB7CisJ CWtmcmVlKG5ld19lZGlkKTsKKwkJcmV0dXJuOworCX0KKworCW11dGV4X2xvY2soJmNvbm5lY3Rv ci0+ZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CisJbnVtID0gZHJtX2FkZF9lZGlkX21vZGVzKGNv bm5lY3RvciwgbmV3X2VkaWQpOworCW11dGV4X3VubG9jaygmY29ubmVjdG9yLT5kZXYtPm1vZGVf Y29uZmlnLm11dGV4KTsKKworCWRybV9kYmdfa21zKCZpOTE1LT5kcm0sICJVc2luZyBPcFJlZ2lv biBFRElEIGZvciBbQ09OTkVDVE9SOiVkOiVzXSwgYWRkZWQgJWQgbW9kZShzKVxuIiwKKwkJICAg IGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lLCBudW0pOworfQorCiB2b2lkIGlu dGVsX29wcmVnaW9uX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewog CXN0cnVjdCBpbnRlbF9vcHJlZ2lvbiAqb3ByZWdpb24gPSAmaTkxNS0+b3ByZWdpb247CkBAIC0x MTI3LDYgKzExOTMsNyBAQCB2b2lkIGludGVsX29wcmVnaW9uX3VucmVnaXN0ZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJb3ByZWdpb24tPmFjcGkgPSBOVUxMOwogCW9wcmVnaW9u LT5zd3NjaSA9IE5VTEw7CiAJb3ByZWdpb24tPmFzbGUgPSBOVUxMOworCW9wcmVnaW9uLT5hc2xl X2V4dCA9IE5VTEw7CiAJb3ByZWdpb24tPnZidCA9IE5VTEw7CiAJb3ByZWdpb24tPmxpZF9zdGF0 ZSA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX29wcmVnaW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX29wcmVn aW9uLmgKaW5kZXggNGFhNjhmZmJkMzBlLi5jMWVjZmNiYjZmNTUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ByZWdpb24uaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX29wcmVnaW9uLmgKQEAgLTI5LDEyICsyOSwxNCBAQAog I2luY2x1ZGUgPGxpbnV4L3BjaS5oPgogCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKK3N0cnVj dCBpbnRlbF9jb25uZWN0b3I7CiBzdHJ1Y3QgaW50ZWxfZW5jb2RlcjsKIAogc3RydWN0IG9wcmVn aW9uX2hlYWRlcjsKIHN0cnVjdCBvcHJlZ2lvbl9hY3BpOwogc3RydWN0IG9wcmVnaW9uX3N3c2Np Owogc3RydWN0IG9wcmVnaW9uX2FzbGU7CitzdHJ1Y3Qgb3ByZWdpb25fYXNsZV9leHQ7CiAKIHN0 cnVjdCBpbnRlbF9vcHJlZ2lvbiB7CiAJc3RydWN0IG9wcmVnaW9uX2hlYWRlciAqaGVhZGVyOwpA QCAtNDMsNiArNDUsNyBAQCBzdHJ1Y3QgaW50ZWxfb3ByZWdpb24gewogCXUzMiBzd3NjaV9nYmRh X3N1Yl9mdW5jdGlvbnM7CiAJdTMyIHN3c2NpX3NiY2Jfc3ViX2Z1bmN0aW9uczsKIAlzdHJ1Y3Qg b3ByZWdpb25fYXNsZSAqYXNsZTsKKwlzdHJ1Y3Qgb3ByZWdpb25fYXNsZV9leHQgKmFzbGVfZXh0 OwogCXZvaWQgKnJ2ZGE7CiAJdm9pZCAqdmJ0X2Zpcm13YXJlOwogCWNvbnN0IHZvaWQgKnZidDsK QEAgLTcxLDYgKzc0LDcgQEAgaW50IGludGVsX29wcmVnaW9uX25vdGlmeV9lbmNvZGVyKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAogaW50IGludGVsX29wcmVnaW9uX25vdGlm eV9hZGFwdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgIHBjaV9w b3dlcl90IHN0YXRlKTsKIGludCBpbnRlbF9vcHJlZ2lvbl9nZXRfcGFuZWxfdHlwZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpbnRlbF9vcHJlZ2lvbl9lZGlkX3By b2JlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CiAKICNlbHNlIC8qIENPTkZJ R19BQ1BJKi8KIApAQCAtMTE3LDYgKzEyMSwxMCBAQCBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9v cHJlZ2lvbl9nZXRfcGFuZWxfdHlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2KQogCXJl dHVybiAtRU5PREVWOwogfQogCit2b2lkIGludGVsX29wcmVnaW9uX2VkaWRfcHJvYmUoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworfQorCiAjZW5kaWYgLyogQ09ORklHX0FD UEkgKi8KIAogI2VuZGlmCi0tIAoyLjMxLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=