Received: by 2002:ab2:1149:0:b0:1f3:1f8c:d0c6 with SMTP id z9csp2576169lqz; Wed, 3 Apr 2024 02:09:31 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVjSZ5bd3guUFgG9IZodjFaTZqDRgBgLxnBBqx6AESiwZBLFiWZFV6mnWPlYH6PZXw7Nv+vR6dDXZP8RZlbgiFVvoTQHvK82hVtDSazsA== X-Google-Smtp-Source: AGHT+IFYh8Qi1sMbsxpj4dldijXD+8EOLsXd7EQWS+/aE78z0odsncFG6rx3AbJ28WHauG/hvZjk X-Received: by 2002:a17:906:6a0b:b0:a4e:2c84:6424 with SMTP id qw11-20020a1709066a0b00b00a4e2c846424mr12372765ejc.56.1712135370977; Wed, 03 Apr 2024 02:09:30 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712135370; cv=pass; d=google.com; s=arc-20160816; b=U26SJBZsuNJyjL3am/6yh1lCtIo+HwTYDziXkUwChUNKtc3qFTsFyqBN78mXPsQ0I3 aT389UFnF/PNldsIxhhcdVcWHnkO2KnKSlvTCZi2B7HdaZ05lAIJyWS9s4BJeVpzwu3Z GqYIXWEJlw3aVaHUzkNQTgw8FXHik4jdEDfo7cbehUZjkR7bL4kVB9ESfZTCe+YVPOZb L+182MF+X494ly+4TXxZF2ogV9RUOwrh4Mq9PLCLQCfE3Rq0xOhWNgQN+/DP8S9DZjYw qpNN6wr6qh8EeTk1SYR8WNauVOPW0cglKjV2VLh56vAQ5wb2dmizx4BprzohbkqH6L9t /xgw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=40bcogkxuZB8jNS4+8DN9wM1uIBwHA07aHdeZ1iTwR8=; fh=8rwNY1J/nHNk4SHwdv6OGhl8Nef7Qz6f9JKcfdN3V6o=; b=ygS8fTnnbbDWVH7D1H3YO1L78rcwu7w6HI7w1TlcgpLJi+ukVkTMXGWfYz9p+4DRak 4l4slN/qbVnjZiZaWR1bY1EL/FoZkeoKrfc2osi7xCjT0rR9Jg/5qeJ54xlVMdYZBAoY Az64GQQyROYJ3I9ECp47jVRL2z0/C/IjTWpmpnfycSVtNnKkU6+hFNaYegOXYC/P/1qu J1jov1ZtTG3zCl1LiK8az5CGTqBEq3LvFsrz5F7CZjIkczKSFA9GaCsLBwrIueBH61u6 sDHTZ7aQTHBTALkl+Vl/4cclyeDv50GxuFlha107FQbNNAFfTKRv0aADNTs6b8OxlDRv 8edw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=pass (google.com: domain of linux-kernel+bounces-129393-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-129393-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=QUARANTINE) header.from=aspeedtech.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id h14-20020a17090619ce00b00a4743cf28dfsi6611373ejd.836.2024.04.03.02.09.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Apr 2024 02:09:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-129393-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=pass (google.com: domain of linux-kernel+bounces-129393-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-129393-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=QUARANTINE) header.from=aspeedtech.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id F393C1F286B5 for ; Wed, 3 Apr 2024 09:08:05 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 150A66FE00; Wed, 3 Apr 2024 09:07:59 +0000 (UTC) Received: from TWMBX01.aspeed.com (mail.aspeedtech.com [211.20.114.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 535EF6CDDB for ; Wed, 3 Apr 2024 09:07:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=211.20.114.72 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712135278; cv=none; b=kELzssal+Q0GN/O/m7vHF9Jm+CT4D8PdmeedDRdhMKq3vOrnZskjur6rR2LMcFj0tfgQ+nclS3LaHfdbyZzCouWKPcAdrBqNi1jifhvEnGgJNPpffm0VnT0LhK+hQV///6918Qn3cxuDqoWf8buRit4KRuQCZ5q1y0yz3QhpMJ0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712135278; c=relaxed/simple; bh=36gxGJifEXD/hnaYX25hmL9Tijx1egA+ts829G4M6To=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=GTQ2O2aTaOdmOF3+6wtb00uhLSyAp4rNPdestkNC64B3WDj2PgBO++SCExpXvClaPjwmXD+EH/3SerHtKmSoTNvJZ5qcShu4MKLquiOnc0CTIxydRnSHZeBx7n1D6zWlOuUDso5MJA0PZFa5RgwB8VZ7irfXAfvEsNmoGWIi9qY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=aspeedtech.com; spf=pass smtp.mailfrom=aspeedtech.com; arc=none smtp.client-ip=211.20.114.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=aspeedtech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=aspeedtech.com Received: from TWMBX01.aspeed.com (192.168.0.62) by TWMBX01.aspeed.com (192.168.0.62) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Wed, 3 Apr 2024 17:02:46 +0800 Received: from twmbx01.aspeed.com (192.168.10.10) by TWMBX01.aspeed.com (192.168.0.62) with Microsoft SMTP Server id 15.2.1258.12 via Frontend Transport; Wed, 3 Apr 2024 17:02:46 +0800 From: Jammy Huang To: , , , , , , CC: , Subject: [PATCH v2] drm/ast: Fix soft lockup Date: Wed, 3 Apr 2024 17:02:46 +0800 Message-ID: <20240403090246.1495487-1-jammy_huang@aspeedtech.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain There is a while-loop in ast_dp_set_on_off() that could lead to infinite-loop. This is because the register, VGACRI-Dx, checked in this API is a scratch register actually controlled by a MCU, named DPMCU, in BMC. These scratch registers are protected by scu-lock. If suc-lock is not off, DPMCU can not update these registers and then host will have soft lockup due to never updated status. DPMCU is used to control DP and relative registers to handshake with host's VGA driver. Even the most time-consuming task, DP's link training, is less than 100ms. 200ms should be enough. Signed-off-by: Jammy Huang Reviewed-by: Jocelyn Falempe --- drivers/gpu/drm/ast/ast_dp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/ast/ast_dp.c b/drivers/gpu/drm/ast/ast_dp.c index ebb6d8ebd44e..1e9259416980 100644 --- a/drivers/gpu/drm/ast/ast_dp.c +++ b/drivers/gpu/drm/ast/ast_dp.c @@ -180,6 +180,7 @@ void ast_dp_set_on_off(struct drm_device *dev, bool on) { struct ast_device *ast = to_ast_device(dev); u8 video_on_off = on; + u32 i = 0; // Video On/Off ast_set_index_reg_mask(ast, AST_IO_VGACRI, 0xE3, (u8) ~AST_DP_VIDEO_ENABLE, on); @@ -192,6 +193,8 @@ void ast_dp_set_on_off(struct drm_device *dev, bool on) ASTDP_MIRROR_VIDEO_ENABLE) != video_on_off) { // wait 1 ms mdelay(1); + if (++i > 200) + break; } } } base-commit: b0546776ad3f332e215cebc0b063ba4351971cca -- 2.25.1