From patchwork Tue Nov 24 10:42:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: You-Sheng Yang X-Patchwork-Id: 1405442 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=canonical.com Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CgLGz44Ctz9sRR; Tue, 24 Nov 2020 21:43:55 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1khVna-0003CY-Jf; Tue, 24 Nov 2020 10:43:50 +0000 Received: from mail-pf1-f195.google.com ([209.85.210.195]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1khVnV-00036S-35 for kernel-team@lists.ubuntu.com; Tue, 24 Nov 2020 10:43:45 +0000 Received: by mail-pf1-f195.google.com with SMTP id b6so7662245pfp.7 for ; Tue, 24 Nov 2020 02:43:43 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=N9JORyfiyLc5elkOfE5q9FpG01aYSvOc6i+0LbDOjm4=; b=i6RmfUxa08PzYwcJIJHHd2STnSh6AQonxlQJJbOu6HySCFxqMu37VgfguqkNOcqGjl cFf6GK2PIAJ9k5YUBhSj+9OqQvg21shLsW5QexEt+Bk0z5oeVaKF9kIqr2Z8DBxaxcm1 36bzLcO57oY9HbysTMB/E8FElPWsqxkmeTMpZYJa9Pj1NydzCkfty70LpzDSjmdzKTxN GrYBRXLwDIgF972NNSiJqKfqbeEHDj2Q3wLiwJXEJP4MbWl7vsxvegspLwLUz+yNKRf8 J4STCPFQuwjPH8b6B7vvMBpZe3i0uuVVk26igG7nrUVXyn9efGbpYr35T1+KbikO5XGM 9KBw== X-Gm-Message-State: AOAM533JIM6MVsB1V/PB8yHWhY28Mbt3dEQpqwoo+WzAre6KrCnN24W8 J1q4JVa35bh898VgV6FaNppUYtXc0Bi/bw== X-Google-Smtp-Source: ABdhPJzUPlfWjvbXO05DAG4HpZQQVTHISp9gxq6z585N5vAP1UDDJzf+wRAskaC81Eqa3P06XC2Smg== X-Received: by 2002:a17:90a:5d0d:: with SMTP id s13mr4216370pji.230.1606214622108; Tue, 24 Nov 2020 02:43:42 -0800 (PST) Received: from localhost (61-220-137-37.HINET-IP.hinet.net. [61.220.137.37]) by smtp.gmail.com with ESMTPSA id r130sm7314247pfc.41.2020.11.24.02.43.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 02:43:41 -0800 (PST) From: You-Sheng Yang To: kernel-team@lists.ubuntu.com Subject: [PATCH 10/38][SRU][G/H] drm/i915: HDCP: retry link integrity check on failure Date: Tue, 24 Nov 2020 18:42:45 +0800 Message-Id: <20201124104313.421860-11-vicamo.yang@canonical.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201124104313.421860-1-vicamo.yang@canonical.com> References: <20201124104313.421860-1-vicamo.yang@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.210.195; envelope-from=vicamo@gmail.com; helo=mail-pf1-f195.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Oliver Barta BugLink: https://bugs.launchpad.net/bugs/1903969 A single Ri mismatch doesn't automatically mean that the link integrity is broken. Update and check of Ri and Ri' are done asynchronously. In case an update happens just between the read of Ri' and the check against Ri there will be a mismatch even if the link integrity is fine otherwise. Signed-off-by: Oliver Barta Reviewed-by: Sean Paul Reviewed-by: Ramalingam C Signed-off-by: Jani Nikula Link: https://patchwork.freedesktop.org/patch/msgid/20200504123524.7731-1-oliver.barta@aptiv.com (cherry picked from commit b08239b2f47190981309c29149e31f111f699aab) Signed-off-by: You-Sheng Yang --- drivers/gpu/drm/i915/display/intel_hdmi.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index 093751481271..e98d44772c7b 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -1545,7 +1545,7 @@ int intel_hdmi_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port, } static -bool intel_hdmi_hdcp_check_link(struct intel_digital_port *intel_dig_port) +bool intel_hdmi_hdcp_check_link_once(struct intel_digital_port *intel_dig_port) { struct drm_i915_private *i915 = to_i915(intel_dig_port->base.base.dev); struct intel_connector *connector = @@ -1568,8 +1568,7 @@ bool intel_hdmi_hdcp_check_link(struct intel_digital_port *intel_dig_port) if (wait_for((intel_de_read(i915, HDCP_STATUS(i915, cpu_transcoder, port)) & (HDCP_STATUS_RI_MATCH | HDCP_STATUS_ENC)) == (HDCP_STATUS_RI_MATCH | HDCP_STATUS_ENC), 1)) { - drm_err(&i915->drm, - "Ri' mismatch detected, link check failed (%x)\n", + drm_dbg_kms(&i915->drm, "Ri' mismatch detected (%x)\n", intel_de_read(i915, HDCP_STATUS(i915, cpu_transcoder, port))); return false; @@ -1577,6 +1576,20 @@ bool intel_hdmi_hdcp_check_link(struct intel_digital_port *intel_dig_port) return true; } +static +bool intel_hdmi_hdcp_check_link(struct intel_digital_port *intel_dig_port) +{ + struct drm_i915_private *i915 = to_i915(intel_dig_port->base.base.dev); + int retry; + + for (retry = 0; retry < 3; retry++) + if (intel_hdmi_hdcp_check_link_once(intel_dig_port)) + return true; + + drm_err(&i915->drm, "Link check failed\n"); + return false; +} + struct hdcp2_hdmi_msg_timeout { u8 msg_id; u16 timeout;