Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2563342pxa; Fri, 7 Aug 2020 14:30:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyc79RUgAHh1yO/4iNag0SscewIrzJ30SGQZUA+xrkk4CXgpFCQ80XFJUrJud9s6fMPzSFo X-Received: by 2002:a17:906:dbcb:: with SMTP id yc11mr10664353ejb.399.1596835842972; Fri, 07 Aug 2020 14:30:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596835842; cv=none; d=google.com; s=arc-20160816; b=OZDX7Qqs9Rng+0yk7gtm39zuwuUA4w4Bs4VDwYfF+ZLXwprWo6LvtkdJx2E61N+P1h rzCL6++wQPZMBkNlK3/tXwHNMHE/DCxVKZ9ffJQhIvaYK1JKR3rn1rZQLFBlI6FcNhLx J3SYbpS6zACqZXbRhRCMIRV4jHbi0iC2FB3V7sVOFYduvK1S+FXHQjj0pcTiFSLcuffj 2lp1qvP0KtkdOYUCUVeAYll+rrJNdXAMmbO5eb1r6uJd40afY823jQKiBpMQgRQUJ7Er 0aXfIlZI4NNFXJKv/gHI1F7GoVKNQaOuit1EKNeGHkWaEm+HZZ7EUH9YCV5zVyrw4SV0 KP5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=yecGcmW1H4YPmsU+YTc6bYsirnPkC2akIxfo68Ph3IA=; b=np740rTUrURudfSgPNvo7eIGGKbRl5VNRPuORi9bDn45ggDjwo4GX2+5SK7zFWFPH+ QkN/M9s6FaE0ASey+UM1cCNlScM4EQV6cSpgXp9/R2Mm8Mv5bS85E1xZQFWYdg2NSAV3 48kfO/EUAh/0SXhHmgV+ScVRI83OQcMXXC+zisNeMoQQ1n1YW08WT8w2yS0tWMEU3Skw qgP5Q/Y6t1av0i23Hde9h8qpBjasTjputeYTaT5n/cvNJRn58kkMk0S7cx1q5tv8pxrl BFkrE8VJApkY+iKSet8AN83G82bLq1t6gFs6oEQhB1hsfISjKUES60IrdSHvnwoq1yCr oNKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=gVBBXSHy; 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=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h22si6111739ejj.363.2020.08.07.14.30.20; Fri, 07 Aug 2020 14:30:42 -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=@chromium.org header.s=google header.b=gVBBXSHy; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726970AbgHGV33 (ORCPT + 99 others); Fri, 7 Aug 2020 17:29:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53418 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726015AbgHGV32 (ORCPT ); Fri, 7 Aug 2020 17:29:28 -0400 Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E1ED5C061756 for ; Fri, 7 Aug 2020 14:29:27 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id bs17so2249910edb.1 for ; Fri, 07 Aug 2020 14:29:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=yecGcmW1H4YPmsU+YTc6bYsirnPkC2akIxfo68Ph3IA=; b=gVBBXSHyNzt8rNePfxY1ncMz7C4eDz4YWTWWTL23EgpsUmW0Gtu+IKVQzZZPPajUsm p+OLXMUQs7aok7cm7IafP4KTyvjZ2lMscp0WHC6AWnh+T5kKyC6VdzIPuVb3JbmIPi0N MRZXC0Hsmo+yByNOzIxP7XAR4M6tykynCQNxo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=yecGcmW1H4YPmsU+YTc6bYsirnPkC2akIxfo68Ph3IA=; b=tLNANId32AyxH+HGtY9mwtzq7k7+h4KpDTVP+amehSo0sTcq58jXSpJ7F+q62lPGJN BgAZz0XZrzODUs613YWUHM+HOIrPag7Ks28xDYQpVr+a8gZZgghI62LdNT2VJT4iehn0 po/vH137k0CbrvAXvHlzsvZUO01Xm+JFcnBQKvYxlarM+5kbOiD682IyN3AxEo4rKQ0W z+SomPOtOYDXx3/Ge+tjF0MyjIBUbmuobDLqLkUwcfhf7insX41szJ9tr/Khw73KsPic 39DO2KXDgmaulc1meitraCjzpeR54zmLAjh5hcFu18EZd94s5BP3sHg8icIxLGHU0eal ir/w== X-Gm-Message-State: AOAM531ctURATU2rq1+YF7hr+i+D7UmESB4mOcVYmOU6sIsR9xKqKO5r xa5u32oMmQbGpQbhiTTBxY+GvKB1NWj9cw== X-Received: by 2002:a05:6402:1d32:: with SMTP id dh18mr10672567edb.14.1596835766451; Fri, 07 Aug 2020 14:29:26 -0700 (PDT) Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com. [209.85.221.54]) by smtp.gmail.com with ESMTPSA id m13sm6170553eds.10.2020.08.07.14.29.25 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Aug 2020 14:29:26 -0700 (PDT) Received: by mail-wr1-f54.google.com with SMTP id a5so2881366wrm.6 for ; Fri, 07 Aug 2020 14:29:25 -0700 (PDT) X-Received: by 2002:adf:dfc7:: with SMTP id q7mr13741548wrn.80.1596835765510; Fri, 07 Aug 2020 14:29:25 -0700 (PDT) MIME-Version: 1.0 References: <20200730114632.6717-1-stanimir.varbanov@linaro.org> <20200730114632.6717-3-stanimir.varbanov@linaro.org> In-Reply-To: <20200730114632.6717-3-stanimir.varbanov@linaro.org> From: Fritz Koenig Date: Fri, 7 Aug 2020 14:29:13 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 2/3] venus: Rework recovery mechanism To: Stanimir Varbanov Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 30, 2020 at 4:47 AM Stanimir Varbanov wrote: > > After power domains and clock restructuring the recovery for > sdm845 and v4 did not work properly. Fix that by reworking the > recovery function and the sequence. > > Signed-off-by: Stanimir Varbanov > --- > drivers/media/platform/qcom/venus/core.c | 24 ++++++++++--------- > drivers/media/platform/qcom/venus/hfi_venus.c | 11 --------- > 2 files changed, 13 insertions(+), 22 deletions(-) > > diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c > index 203c6538044f..46f6e34d435a 100644 > --- a/drivers/media/platform/qcom/venus/core.c > +++ b/drivers/media/platform/qcom/venus/core.c > @@ -6,6 +6,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -40,13 +41,7 @@ static void venus_event_notify(struct venus_core *core, u32 event) > mutex_unlock(&core->lock); > > disable_irq_nosync(core->irq); > - > - /* > - * Delay recovery to ensure venus has completed any pending cache > - * operations. Without this sleep, we see device reset when firmware is > - * unloaded after a system error. > - */ > - schedule_delayed_work(&core->work, msecs_to_jiffies(100)); > + schedule_delayed_work(&core->work, msecs_to_jiffies(10)); > } > > static const struct hfi_core_ops venus_core_ops = { > @@ -59,23 +54,30 @@ static void venus_sys_error_handler(struct work_struct *work) > container_of(work, struct venus_core, work.work); > int ret = 0; > > - dev_warn(core->dev, "system error has occurred, starting recovery!\n"); > - > pm_runtime_get_sync(core->dev); > > hfi_core_deinit(core, true); > - hfi_destroy(core); > + > + dev_warn(core->dev, "system error has occurred, starting recovery!\n"); > + > mutex_lock(&core->lock); > + > + while (pm_runtime_active(core->dev_dec) || pm_runtime_active(core->dev_enc)) > + msleep(10); > + > venus_shutdown(core); > > pm_runtime_put_sync(core->dev); > > + while (core->pmdomains[0] && pm_runtime_active(core->pmdomains[0])) > + usleep_range(1000, 1500); > + > + hfi_destroy(core); > ret |= hfi_create(core, &venus_core_ops); > > pm_runtime_get_sync(core->dev); > > ret |= venus_boot(core); > - > ret |= hfi_core_resume(core, true); > > enable_irq(core->irq); > diff --git a/drivers/media/platform/qcom/venus/hfi_venus.c b/drivers/media/platform/qcom/venus/hfi_venus.c > index 0d8855014ab3..3392fd177d22 100644 > --- a/drivers/media/platform/qcom/venus/hfi_venus.c > +++ b/drivers/media/platform/qcom/venus/hfi_venus.c > @@ -986,13 +986,6 @@ static void venus_process_msg_sys_error(struct venus_hfi_device *hdev, > > venus_set_state(hdev, VENUS_STATE_DEINIT); > > - /* > - * Once SYS_ERROR received from HW, it is safe to halt the AXI. > - * With SYS_ERROR, Venus FW may have crashed and HW might be > - * active and causing unnecessary transactions. Hence it is > - * safe to stop all AXI transactions from venus subsystem. > - */ > - venus_halt_axi(hdev); > venus_sfr_print(hdev); > } > > @@ -1009,10 +1002,6 @@ static irqreturn_t venus_isr_thread(struct venus_core *core) > res = hdev->core->res; > pkt = hdev->pkt_buf; > > - if (hdev->irq_status & WRAPPER_INTR_STATUS_A2HWD_MASK) { > - venus_sfr_print(hdev); > - hfi_process_watchdog_timeout(core); > - } > > while (!venus_iface_msgq_read(hdev, pkt)) { > msg_ret = hfi_process_msg_packet(core, pkt); > -- > 2.17.1 > Reviewed-by: Fritz Koenig