Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp1456796pxv; Fri, 16 Jul 2021 09:44:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXogAuZ/IOwM9Xqj0JTITwAkU+W6l86Mw3ft6aXHSlHA8gZtKR1HKHukShyOZcTNwllx82 X-Received: by 2002:a92:d10:: with SMTP id 16mr7095759iln.189.1626453843883; Fri, 16 Jul 2021 09:44:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626453843; cv=none; d=google.com; s=arc-20160816; b=rYQm+tzSeXGx0n+ismJ6ZJ+yUrKEo8l3H4hYbkJdSvhYw8YrOcNwE/tCMFqZsES5ug WEFf2ByaFK5ri5ORJZ/n+MxyfeZ1yDkeeu/0on8+uySCWIFWIADjU8Ikl8jYjWzJ6LRR TXpJ3HGp8HF/b6ojU9EeJlr0lH7DT6ZIc09yecordnUEijCdep4RdypdaMX4qr9lWd+E Hop/vXODPkQxD8On8LUeq7sR56g1tGF5K/Vjcc4MW4h+PHA84blKfNW9fkucv1X6a7BA AdRCY7olmQppUUXzIZZTO1y41fA1E5L2vp/FAckGiNQOFbXINvJRHaXxxjKCHr0wGx9J 0YaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=uTym669QebCCem4D35w7YjvVvSorbzUcZ1bUusuQn5o=; b=Dhi0KHn9kaUR6pfww5o6KI7h6RlmpC+Tw92xLjC/oElGDEyHPIkDSfd9rpQlHtSKmX PwKV007mKSz5tJKWX2HdOZpGgAXWSgLwMT774JGpCQ4KtUtzwUOV24xzVPat6gZMhtr1 zxmF6VP1FY2wPjiUdlnFwo/ytxJ7VdHbX4hzxqSBKfcHhCejfGOHmwZjF2lVB/YsraUo 6pVphsbyY0NsAisF44pWGtFm/TsWLjd/MD/GShqFscKxeNK47fC6ERRZCMAiunXg6Hzj XHIu7PPFC5vOrQK+/weIOTUVjFwg29NOVZUPLVJb1XgkC7Bl5UZIFbr0eER4NmFe2KR+ 16BQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=BqWFxgtf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a24si469197iol.81.2021.07.16.09.43.51; Fri, 16 Jul 2021 09:44:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=BqWFxgtf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229948AbhGPQpv (ORCPT + 99 others); Fri, 16 Jul 2021 12:45:51 -0400 Received: from mail.kernel.org ([198.145.29.99]:46936 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229498AbhGPQpv (ORCPT ); Fri, 16 Jul 2021 12:45:51 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 20E71613EE; Fri, 16 Jul 2021 16:42:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1626453776; bh=iyvboBbJB24fM/KsyAy5OW3yngHgd2gk9Z7P8CwT2uQ=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=BqWFxgtf2F90LRIp3skiNIGRSj9fbCyS/B5EneSGMlCDMjZzXsA3K4x3sYhcZKduJ 0Y1Je2sxlFdrU7lgi2JhXQ61+2LPmn/B9Pi+k+iK57R+3qzlnDzyPbBW0K4it149Hi xLOK7Bng3RL9dyJtTbKwMq0onxIFdHwuQZpW4+OyghyT+eT9dvPYV9qTMZyBfAOO1+ C27QrYhbrCiuxuJ3sa7PFS7iRwifeGGzGUDFFv+r2pYvlfWIoONcc2OraRS4l2QVW/ aheSxDUJ4Zwx58GZmR/p+mSKqNw2P2Stgy2F0/NQhyETJsz5v8VYoz2cYRAIfxvhWI lbf2D/XbMnaTQ== Received: by mail-ed1-f49.google.com with SMTP id w14so13723920edc.8; Fri, 16 Jul 2021 09:42:56 -0700 (PDT) X-Gm-Message-State: AOAM530BbHhTVyilZ9NrVJJ/GWtOlUfnGBR2m5pwik+RHL0s0+BB3HJ6 tV76lUDcYgKZM97OWtt79krVyutdEYh58FRN5A== X-Received: by 2002:aa7:da06:: with SMTP id r6mr16153573eds.38.1626453774729; Fri, 16 Jul 2021 09:42:54 -0700 (PDT) MIME-Version: 1.0 References: <1626418701-28467-1-git-send-email-yongqiang.niu@mediatek.com> <1626418701-28467-2-git-send-email-yongqiang.niu@mediatek.com> In-Reply-To: <1626418701-28467-2-git-send-email-yongqiang.niu@mediatek.com> From: Chun-Kuang Hu Date: Sat, 17 Jul 2021 00:42:43 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v1] mailbox: cmdq: add instruction time-out interrupt support To: Yongqiang Niu Cc: Chun-Kuang Hu , Rob Herring , Matthias Brugger , Philipp Zabel , David Airlie , Daniel Vetter , Jassi Brar , Fabien Parent , Dennis YC Hsieh , DTML , Linux ARM , "moderated list:ARM/Mediatek SoC support" , linux-kernel , DRI Development , Project_Global_Chrome_Upstream_Group@mediatek.com, Hsin-Yi Wang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Yongqiang: Yongqiang Niu =E6=96=BC 2021=E5=B9=B47=E6=9C= =8816=E6=97=A5 =E9=80=B1=E4=BA=94 =E4=B8=8B=E5=8D=882:58=E5=AF=AB=E9=81=93= =EF=BC=9A > > add time-out cycle setting to make sure time-out interrupt irq > will happened when instruction time-out for wait and poll > > Signed-off-by: Yongqiang Niu > --- > drivers/mailbox/mtk-cmdq-mailbox.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/mailbox/mtk-cmdq-mailbox.c b/drivers/mailbox/mtk-cmd= q-mailbox.c > index de4793e..9a76bcd 100644 > --- a/drivers/mailbox/mtk-cmdq-mailbox.c > +++ b/drivers/mailbox/mtk-cmdq-mailbox.c > @@ -35,6 +35,7 @@ > #define CMDQ_THR_END_ADDR 0x24 > #define CMDQ_THR_WAIT_TOKEN 0x30 > #define CMDQ_THR_PRIORITY 0x40 > +#define CMDQ_THR_INSTN_TIMEOUT_CYCLES 0x50 > > #define GCE_GCTL_VALUE 0x48 > > @@ -53,6 +54,15 @@ > #define CMDQ_JUMP_BY_OFFSET 0x10000000 > #define CMDQ_JUMP_BY_PA 0x10000001 > > +/* > + * instruction time-out > + * cycles to issue instruction time-out interrupt for wait and poll inst= ructions > + * GCE axi_clock 156MHz > + * 1 cycle =3D 6.41ns > + * instruction time out 2^22*2*6.41ns =3D 53ms I think every client has different timeout value, so it's not a good idea to have a unique timeout value in mailbox controller. Client could use timer or something similar to detect timeout. Regards, Chun-Kuang. > + */ > +#define CMDQ_INSTN_TIMEOUT_CYCLES 22 > + > struct cmdq_thread { > struct mbox_chan *chan; > void __iomem *base; > @@ -368,6 +378,7 @@ static int cmdq_mbox_send_data(struct mbox_chan *chan= , void *data) > writel((task->pa_base + pkt->cmd_buf_size) >> cmdq->shift= _pa, > thread->base + CMDQ_THR_END_ADDR); > > + writel(CMDQ_INSTN_TIMEOUT_CYCLES, thread->base + CMDQ_THR= _INSTN_TIMEOUT_CYCLES); > writel(thread->priority, thread->base + CMDQ_THR_PRIORITY= ); > writel(CMDQ_THR_IRQ_EN, thread->base + CMDQ_THR_IRQ_ENABL= E); > writel(CMDQ_THR_ENABLED, thread->base + CMDQ_THR_ENABLE_T= ASK); > -- > 1.8.1.1.dirty >