Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp3274370rdb; Wed, 13 Sep 2023 07:25:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEzqUGkA19OMVll5PnvlbAldedlRlRo58tF2HcqN/6kkrvXzPF+dEQ5CL9k/CCc9SX9LJwb X-Received: by 2002:a17:90a:f405:b0:262:ded7:63d with SMTP id ch5-20020a17090af40500b00262ded7063dmr2379037pjb.17.1694615102592; Wed, 13 Sep 2023 07:25:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694615102; cv=none; d=google.com; s=arc-20160816; b=b40OAYhhErEhWCaTqnKkIL8y6IcchL853JeK29kzDJLkLYNeZ45gNGGMJJmNfzrP4y +tnMssh/SjCgnvlcpmQhMtEZdA7jdeN7UHs2lZtO1o+h/RGJgDpLKyQ5xG+WSd1IbEpr mfTr2HBd2Qqb19T/q80jZm3/ct/Vx9mHXmGW2T0nPXMu7I7h3hSHLHdfDoC7zSyoxvwg Nfevoeo/l4RVeLngtSTw9C7NJxs/xMLjJgaF/BwFdqgCCCEfJyhHDtjOnxkKmZk+t6XX t1jJ0QCiCaAIBP64U1nwdGj6eQhIcyWTldRNv58/ieFhpJBiw+DTrrEt2cY9BSah1t24 Qp1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=hqU1RJ1WXE7C4umw9vF83cEtO7a8YH9G1bytA7ixHHU=; fh=qEqFBS3nHfDgsFiL+pm7uRSEVOR8zSL9rgTYPsOYWfE=; b=qAMy3ZzQLnecmNCUsMHqM6OPICBEpypnSia00R+PZXVJ+tsukzT2C5WoZSgGqo0H2v 7LPf1G2kPbTsVUEDjT/p9vPk9TffVyBK5EWQBocEkfMLFOExz8pLN+jqS8gbNKcaI1K7 j1Lf7fS2M6ulki+30/+gdPVzGYZehay+O96bI4b7HjdI/rnZ0E17QASfdww0MsAwmWZ3 NfQbDEd0NXCWb4Y3lypTkIyMt4TD7VdghQO39NvZdWI2GpcNScnRKk1t0BdV3GpNlk8Z kdxNhJfmZ5LA3zFw9/i1AdxG2/ZmfHzP4g8TW/8CtvWYHjzJJYDMlxMOa74aJZAyos3S C3qQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b="HIt2c3/+"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Return-Path: Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id ds6-20020a17090b08c600b0026901c2adcasi1612163pjb.132.2023.09.13.07.25.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Sep 2023 07:25:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b="HIt2c3/+"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id B5F6E826ED71; Wed, 13 Sep 2023 01:35:20 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238957AbjIMIfL (ORCPT + 99 others); Wed, 13 Sep 2023 04:35:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238880AbjIMIfK (ORCPT ); Wed, 13 Sep 2023 04:35:10 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB35EC3 for ; Wed, 13 Sep 2023 01:35:06 -0700 (PDT) Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 5251D660732B; Wed, 13 Sep 2023 09:35:04 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1694594105; bh=b1+U2pGflwc/V1Z4xgUhLMPjPG7gNXIcxF/u4aJVNLw=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=HIt2c3/+tufCzvGPr6PR1hR57aag53jqn1I5ql+1dQscZQAyXpGYCsLgTUuEJ9nDM yVYqUD7YtKlFfXn4vrkeKKBSVsgPsGsX2jxEIU+NoxwY38Q5I98qWrbYqxROUcm4MM pCp0Q1vqc8ICoTFYzmUCNJu9IsglY8B9QQv6zSJGZyHqL+tmhHqZiUovsu+hIyd5kJ cJEPdxyhYZyIgZIBg2qU5Qn/Htrv9I8OKECZr+psUWMXjqjoCY/6dCG4KJyjKGgmqg Jbtq0fjIVYDIa5SKatpvytljZluz9rXCE9vswZWrb5018EtXV/vCsQ5dFoUiPaaEjS SNPvtrFk6Hykg== Message-ID: <5a4a0d12-d16a-0836-f6c5-6e6c2f3a9097@collabora.com> Date: Wed, 13 Sep 2023 10:35:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH] drm/mediatek: Add spinlock for setting vblank event in atomic_begin Content-Language: en-US To: "Jason-JH.Lin" , Chun-Kuang Hu Cc: Alexandre Mergnat , Eugen Hristev , Jason-ch Chen , Johnson Wang , Singo Chang , Nancy Lin , Shawn Sung , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Project_Global_Chrome_Upstream_Group@mediatek.com, Fei Shao References: <20230822132646.9811-1-jason-jh.lin@mediatek.com> From: AngeloGioacchino Del Regno In-Reply-To: <20230822132646.9811-1-jason-jh.lin@mediatek.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Wed, 13 Sep 2023 01:35:20 -0700 (PDT) X-Spam-Status: No, score=-2.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Il 22/08/23 15:26, Jason-JH.Lin ha scritto: > Add spinlock protection to avoid race condition on vblank event > between mtk_drm_crtc_atomic_begin() and mtk_drm_finish_page_flip(). > Hello Jason, Can you please provide more information about this race condition? (check below) > Fixes: 119f5173628a ("drm/mediatek: Add DRM Driver for Mediatek SoC MT8173.") > Signed-off-by: Jason-JH.Lin > --- > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > index d40142842f85..128a672fe3c9 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > @@ -746,6 +746,9 @@ static void mtk_drm_crtc_atomic_begin(struct drm_crtc *crtc, > crtc); > struct mtk_crtc_state *mtk_crtc_state = to_mtk_crtc_state(crtc_state); > struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc); > + unsigned long flags; > + > + spin_lock_irqsave(&crtc->dev->event_lock, flags); > > if (mtk_crtc->event && mtk_crtc_state->base.event) > DRM_ERROR("new event while there is still a pending event\n"); > @@ -756,6 +759,8 @@ static void mtk_drm_crtc_atomic_begin(struct drm_crtc *crtc, ...because my suspect is that what creates the race condition in this function is the unlocked *assignment* to mtk_crtc->event, not the rest. If I'm right, you don't need to unconditionally spinlock at the beginning of this function hence ever-so-slightly improving performance compared to this version. Can you please try this one and check if this *also* solves the issue? if (mtk_crtc_state->base.event) { mtk_crtc_state->base.event->pipe = drm_crtc_index(crtc); WARN_ON(drm_crtc_vblank_get(crtc) != 0); spin_lock_irqsave(&crtc->dev->event_lock, flags); mtk_crtc->event = mtk_crtc_state->base.event; spin_lock_irqrestore(&crtc->dev->event_lock, flags); mtk_crtc_state->base.event = NULL; } P.S.: I'd try that myself, but I can't seem to reproduce the issue. Regards, Angelo