Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp4562869rwb; Sat, 10 Dec 2022 10:31:26 -0800 (PST) X-Google-Smtp-Source: AA0mqf4NM6iTYMBocnLauIeY56IHpzKnNHS5H8f4vO0h3fcynfgPoHPd69CGldR239vis60cgV5g X-Received: by 2002:a05:6a21:328d:b0:a9:d06b:440b with SMTP id yt13-20020a056a21328d00b000a9d06b440bmr15888735pzb.30.1670697085969; Sat, 10 Dec 2022 10:31:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670697085; cv=none; d=google.com; s=arc-20160816; b=1GzEz2M+aj4QoUntesDfqiO/4WKlyciOfh2iXlEDulGd0rEW0xRZj2PxVzjNPJvEPU Wh5r+3E5eAGPL9cb2yx3kdlopOu43SZ9PaZR9KC4Ugz3YznMp1Av3Cz2bRb9C7DYKraO /K0o8RIka7CIKerdCT0GKypmXaO/HCXjjnJBAkt+JslGiNDPv6yMDMOW+clQoLrShPLf 4BYrnX4j0pNk4tvqx/hxHpraP9Z+SMnXrbKRUnQLPsNCXynwxjSqiuRwbU0I7A4Q17ke Ty2NurGfsregCzynQ3g17hWQ9o/wQhSBsM8NMHv9+O7EMRc+k5EMYp0E3j0GMBEPdjoQ Zq8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=d4LSP210pPsizDp0BFbLhYh/xU1PF2q/gTxyraEFraM=; b=bobeYPOEKAE6c0Yu1w7zWC7a3gohVJc5VzruIJLIc0eJtjWCyCmsxfUP82wzRzjUkG yXyRhgMNdxa9jk/KZWvgOzCHiAfCoQP3u9gHq7UEN4D6NOxGdT3A8kHmNnStfSW4Zumi 3CCtpnqajUr+zV3s3wvTprMgh99PPh/wznk6QtS9tgccxcsmRfsPB6VPFeqhBYTPIXP9 0b7o8R27aiQY+cztlaKASW63zzrXXwOfm4TQeoUvCH/4b3P0HxOyPdYWFtb5wiSgsgPx i5ARp2C3qes14kNeCuwemX5rX7q1d2+9G0jzFlsHmLRKss4ZDYX10ddNM5oz4QOs5rAh UpPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@skif-web.ru header.s=mail header.b=ojObATcg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s7-20020a639247000000b004792b0801f3si2809389pgn.558.2022.12.10.10.31.16; Sat, 10 Dec 2022 10:31:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@skif-web.ru header.s=mail header.b=ojObATcg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229758AbiLJSHM (ORCPT + 76 others); Sat, 10 Dec 2022 13:07:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229548AbiLJSHK (ORCPT ); Sat, 10 Dec 2022 13:07:10 -0500 X-Greylist: delayed 315 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Sat, 10 Dec 2022 10:07:07 PST Received: from forward103j.mail.yandex.net (forward103j.mail.yandex.net [5.45.198.246]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84CFF178B1 for ; Sat, 10 Dec 2022 10:07:07 -0800 (PST) Received: from forward101q.mail.yandex.net (forward101q.mail.yandex.net [IPv6:2a02:6b8:c0e:4b:0:640:4012:bb98]) by forward103j.mail.yandex.net (Yandex) with ESMTP id 798FF101AF4; Sat, 10 Dec 2022 21:01:47 +0300 (MSK) Received: from vla5-1ef2161cc1d7.qloud-c.yandex.net (vla5-1ef2161cc1d7.qloud-c.yandex.net [IPv6:2a02:6b8:c18:3607:0:640:1ef2:161c]) by forward101q.mail.yandex.net (Yandex) with ESMTP id 74E1F13E80002; Sat, 10 Dec 2022 21:01:47 +0300 (MSK) Received: by vla5-1ef2161cc1d7.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id j1gRoFCZEOs1-LYqGIaIh; Sat, 10 Dec 2022 21:01:46 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skif-web.ru; s=mail; t=1670695306; bh=d4LSP210pPsizDp0BFbLhYh/xU1PF2q/gTxyraEFraM=; h=Message-Id:Date:Cc:Subject:To:From; b=ojObATcgxbhAkntM7e5z327TbthRoYz/QbiRZaEzjRc/gdDlqzt+2mMwf+bH6tCnQ aiT/mHwkFWCPVDO9y0VNtBV1qdKqZmaz5qI1EgmFTP7ASBPo7fOZ5vjvzGMyri4vwk cwWcU+jaVX5kLFh9NaPyO7arokanAosSrZLiHHHc= Authentication-Results: vla5-1ef2161cc1d7.qloud-c.yandex.net; dkim=pass header.i=@skif-web.ru From: Alexey Lukyanchuk To: tvrtko.ursulin@linux.intel.com Cc: Alexey Lukyanchuk , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , David Airlie , Daniel Vetter , Greg Kroah-Hartman , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH RFC] fix dell wyse 3040 poweroff Date: Sat, 10 Dec 2022 21:01:19 +0300 Message-Id: <20221210180118.22087-1-skif@skif-web.ru> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NO_DNS_FOR_FROM,SPF_HELO_NONE, T_SPF_PERMERROR autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Dell wyse 3040 cat't poweroff aftet kernel 5.11. It happens because i915_driver_shutdown function. Disabling of this function mitigate this problem. Fixes: 440b354f3 ("drivers/gpu/drm:power off troubles on dell wyse 3040") Signed-off-by: Alexey Lukyanchuk --- There is trouble with i915_driver_shutdown function. After some diving I found that trouble looks like race condition in drm_atomic_get_connector_state function (drivers/gpu/drm/drm_atomic.c), maybe it linked to iterators. Now I fully exclude i915_driver_shutdown for wyse 3040 device. Can any one comment on this one please ? --- drivers/gpu/drm/i915/display/intel_quirks.c | 25 +++++++++++++++++++++ drivers/gpu/drm/i915/i915_driver.c | 3 +++ drivers/gpu/drm/i915/i915_drv.h | 1 + 3 files changed, 29 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c index e415cd7c0..a6a549d48 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.c +++ b/drivers/gpu/drm/i915/display/intel_quirks.c @@ -60,6 +60,12 @@ static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915) drm_info(&i915->drm, "Applying no pps backlight power quirk\n"); } +static void quirk_wyse_3040_shutdown_fix(struct drm_i915_private *i915) +{ + i915->quirks |= QUIRK_WYSE_3040_SHUTDOWN_FIX; + drm_info(&i915->drm, "Applying wyse 3040 shutdown fix\n"); +} + struct intel_quirk { int device; int subsystem_vendor; @@ -85,6 +91,12 @@ static int intel_dmi_no_pps_backlight(const struct dmi_system_id *id) return 1; } +static int wyse_3040_shutdown_fix(const struct dmi_system_id *id) +{ + DRM_INFO("This device need help with poweroff %s\n", id->ident); + return 1; +} + static const struct intel_dmi_quirk intel_dmi_quirks[] = { { .dmi_id_list = &(const struct dmi_system_id[]) { @@ -131,6 +143,19 @@ static const struct intel_dmi_quirk intel_dmi_quirks[] = { }, .hook = quirk_no_pps_backlight_power_hook, }, + { + .dmi_id_list = &(const struct dmi_system_id[]) { + { + .callback = wyse_3040_shutdown_fix, + .ident = "Dell Inc. 0G56C0", + .matches = {DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Dell Inc."), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "0G56C0"), + }, + }, + { } + }, + .hook = quirk_wyse_3040_shutdown_fix, + }, }; static struct intel_quirk intel_quirks[] = { diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c index deb8a8b76..af60fb79a 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -1079,6 +1079,9 @@ static void intel_shutdown_encoders(struct drm_i915_private *dev_priv) void i915_driver_shutdown(struct drm_i915_private *i915) { + if (!(i915->quirks & QUIRK_WYSE_3040_SHUTDOWN_FIX)) + return; + disable_rpm_wakeref_asserts(&i915->runtime_pm); intel_runtime_pm_disable(&i915->runtime_pm); intel_power_domains_disable(i915); diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 086bbe894..fdd6866e7 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -200,6 +200,7 @@ struct drm_i915_display_funcs { #define QUIRK_INCREASE_T12_DELAY (1<<6) #define QUIRK_INCREASE_DDI_DISABLED_TIME (1<<7) #define QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK (1<<8) +#define QUIRK_WYSE_3040_SHUTDOWN_FIX (1<<9) struct i915_suspend_saved_registers { u32 saveDSPARB; -- 2.25.1