From patchwork Wed Apr 11 01:27:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Y.C. Chen" X-Patchwork-Id: 10334721 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1AE926053B for ; Wed, 11 Apr 2018 01:28:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 193FC285DA for ; Wed, 11 Apr 2018 01:28:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0E046285EB; Wed, 11 Apr 2018 01:28:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4BFB1285DA for ; Wed, 11 Apr 2018 01:28:23 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 762886E3CE; Wed, 11 Apr 2018 01:28:20 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from msr19.hinet.net (msr19.hinet.net [168.95.4.119]) by gabe.freedesktop.org (Postfix) with ESMTP id 70E2C6E0A3 for ; Wed, 11 Apr 2018 01:28:18 +0000 (UTC) Received: from localhost.localdomain.com (211-20-114-70.HINET-IP.hinet.net [211.20.114.70]) (authenticated bits=0) by msr19.hinet.net (8.14.9/8.14.9) with ESMTP id w3B1S5f3018474; Wed, 11 Apr 2018 09:28:06 +0800 (CST) From: "Y.C. Chen" To: dri-devel@lists.freedesktop.org Subject: [PATCH] drm/ast: Fixed reboot test may cause system hanged Date: Wed, 11 Apr 2018 09:27:39 +0800 Message-Id: <1523410059-18415-1-git-send-email-yc_chen@aspeedtech.com> X-Mailer: git-send-email 1.8.3.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCrMTGxXJZpMhNd2XK2SiD/a/lLa58fc9mcfXWAiaLw93zmS0+NLUy W3T9usfswOpxv/s4k8f7fVfZPNZvucri0fOmhdWj6+599gDWKNbMvKT8igTWjI9PP7EXLBOs eNText7AeI+vi5GDQ0ggUqLxgX4XIycHm4CWxOepM5hAbBEBZYm/E1cxgpQwC0RJLNqRABIW FnCWeD9pNStImEVAVeLK2VyQMK+Am8SmIzdYQWwJAQWJKQ/fM09g5FjFKJJbXKFbnFtsqGuk l5GZl1qiB8SbGIEeWxHPzrOD8exJw0OMTBychxgFOBiVeHhFHu+KEmJNLCuuzAWJcx9ilORg UhLlXexxNkqILyk/pTIjsTgjvqg0J7X4EKMEB4+SCG9SMlCOt7ggMbc4Mx0mJcPBoSTBywuS EixKTU+tSMvMKUktgkifYjTmWPKiv4eZ49jlaT3MQix5+XmpUuK820DKBUAmZZTmwVXDouES o6yUMK9pPFANT0FqUW5mCar8K0ZxoB+EeQtApvBk5pXAnfMK6FImoEu3+5wBubQkESEFAMq1 BlHpAQAA 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: airlied@redhat.com, eich@suse.com MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: "Y.C. Chen" There is another thread still access standard VGA I/O while loading drm driver. Disable standard VGA I/O decode to avoid this issue. Signed-off-by: Y.C. Chen Reviewed-by: Benjamin Herrenschmidt --- drivers/gpu/drm/ast/ast_main.c | 5 ++++- drivers/gpu/drm/ast/ast_mode.c | 2 +- drivers/gpu/drm/ast/ast_post.c | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c index dac3558..82a2687 100644 --- a/drivers/gpu/drm/ast/ast_main.c +++ b/drivers/gpu/drm/ast/ast_main.c @@ -131,8 +131,8 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post) /* Enable extended register access */ - ast_enable_mmio(dev); ast_open_key(ast); + ast_enable_mmio(dev); /* Find out whether P2A works or whether to use device-tree */ ast_detect_config_mode(dev, &scu_rev); @@ -576,6 +576,9 @@ void ast_driver_unload(struct drm_device *dev) { struct ast_private *ast = dev->dev_private; + /* enable standard VGA decode */ + ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x04); + ast_release_firmware(dev); kfree(ast->dp501_fw_addr); ast_mode_fini(dev); diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c index 831b733..9d637b4 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -599,7 +599,7 @@ static int ast_crtc_mode_set(struct drm_crtc *crtc, return -EINVAL; ast_open_key(ast); - ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa1, 0xff, 0x04); + ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x06); ast_set_std_reg(crtc, adjusted_mode, &vbios_mode); ast_set_crtc_reg(crtc, adjusted_mode, &vbios_mode); diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c index f7d4213..c1d1ac5 100644 --- a/drivers/gpu/drm/ast/ast_post.c +++ b/drivers/gpu/drm/ast/ast_post.c @@ -46,7 +46,7 @@ void ast_enable_mmio(struct drm_device *dev) { struct ast_private *ast = dev->dev_private; - ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa1, 0xff, 0x04); + ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x06); }