Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3277332yba; Sun, 28 Apr 2019 22:21:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqzW8iivUvScdfvMLd6F9eF1cEduvzOyh2pIeFNQnVREzXP2u5MVR/xQuy5FgaU5NAdshw+i X-Received: by 2002:a17:902:820a:: with SMTP id x10mr21016492pln.316.1556515305284; Sun, 28 Apr 2019 22:21:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556515305; cv=none; d=google.com; s=arc-20160816; b=EVx58TBwRJ3DjP22xceiDK1beXEHBAiftap7kTXEZrn8ythekP9B4jrj7HtFRDwmSm g77C8oHlvxmOIlhBEy0ly+YGZhXqn40vg3YRIxJED+7YU6XRriVWwfcxe7bIe7+ZnpyM CYv8KlnVT5/3HU0WKSGgPK77xrWMCoVk4v8v7+uEbYwZmJxWE8SG3Gm9zUnJ3totB7RS g2TofixWv2VFzQDwPasVOjKDdKdbjAa818LuMCuglvgob0oSNF1RCZOdsl3EcYmIf/HJ 5P7n86jwiEpMpIgzK9tLqS39Y4nIMoSky/b0bg1jQf+ki3LAdVWlxwgadcHqYjsAQMC5 fQqg== 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=AJLIG7dxc1t4keHoNZMHwMCy4fC2upZVRrvXxBwgyGg=; b=w6/knLDoOBVBb9uyX6BmzlPIiIT8/75YSJhfw1Ep8cSVZqAf7N8UPmQ6ftyEqfaXNq B4YZfltzF4x1kBrTPJVBDIieF5LA0fndCjtJdmC8SDqluwrMBIan+FFyH5yXc7TPKJFJ Ucf62pZ2+W6psL1lylOeY5mhGDEEfmEAk/Pll+GOvpIfOCHtjEh4QnAOrY2AVgQzwa2s 4gcTE8t2vK5ZRHCYz+7Cx4yqxQRIPvNj5+AQ0eSKTSDg8FfRqC2/l1cqJNlmU6PJ0Agg 4q2C3sqifuFf64DITsFaDuYWoMGanBN8Log5orI7SGp9YojsErnqd3me4UoxQYqnHsBR Ihaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=A+HcLXWX; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-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. [209.132.180.67]) by mx.google.com with ESMTP id t2si32120333plq.56.2019.04.28.22.21.17; Sun, 28 Apr 2019 22:21:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=A+HcLXWX; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-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 S1727205AbfD2FUs (ORCPT + 99 others); Mon, 29 Apr 2019 01:20:48 -0400 Received: from mail-qt1-f195.google.com ([209.85.160.195]:44482 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726585AbfD2FUs (ORCPT ); Mon, 29 Apr 2019 01:20:48 -0400 Received: by mail-qt1-f195.google.com with SMTP id s10so10556578qtc.11 for ; Sun, 28 Apr 2019 22:20:48 -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=AJLIG7dxc1t4keHoNZMHwMCy4fC2upZVRrvXxBwgyGg=; b=A+HcLXWXR4GLpxqnbNa7AYORB4uD/vxTr52KYNmE9V/5Gfy2Ai+VCyTPCGPz45KOfx cMQqnUlNB/P7YqdEtTGN/zA2hjZ+rsT0oG44wiLOdTSVQh+Yjlem4PLHn7p31JCPM9al v90CEFpbu9KBXf1VWN+2d17t9QtKua8OeYEj0= 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=AJLIG7dxc1t4keHoNZMHwMCy4fC2upZVRrvXxBwgyGg=; b=n1hTLMXXVt1+0VPFf1HCyQTo2nXD50M5ZnEgbtI3XFmiJTm8OIhscOXjt59RS31aMh OPQM67GuXmccuFUOBT762wNkp1M8OVynla3kz1bN9FrSRhY1a6xT8s4V40oVbUuL7z5l HBXGNOx8FblK2c9koA/Ox2GFabf2yF5+Lz+b6y6hz85llLhPODAnCaFlu0JC5DpgzUKn sKbWh3z0kU6hsmgOdql4Euf+Bcr3L6pFAjab9ub7MyJ1cdJc9zBW+kyOQIJTtGFJRsxM fiZZ/Fj420IyurkOrfQOeXC3ypsJVRGqZay0qFcIb0Wfa5+hX0fwq1pErMUKA0LmOBYO Im+A== X-Gm-Message-State: APjAAAWJj78ze2lmWe3sd6jYOiZICOzzO5k8ExgQm0ER7tnImkGrlCMI yIgyRG4uS8Ijxo4f/aAF9m8MzgkT2an2IquHThoy4w== X-Received: by 2002:ac8:362e:: with SMTP id m43mr29209080qtb.339.1556515247704; Sun, 28 Apr 2019 22:20:47 -0700 (PDT) MIME-Version: 1.0 References: <1555406865-21514-1-git-send-email-wgong@codeaurora.org> In-Reply-To: <1555406865-21514-1-git-send-email-wgong@codeaurora.org> From: Nicolas Boichat Date: Mon, 29 Apr 2019 13:20:36 +0800 Message-ID: Subject: Re: [PATCH] ath10k: add support for simulate crash on SDIO chip To: Wen Gong Cc: ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, Claire Chang Content-Type: text/plain; charset="UTF-8" Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Tue, Apr 16, 2019 at 5:28 PM Wen Gong wrote: > > The command to simulate firmware crash: > echo soft > /sys/kernel/debug/ieee80211/phy0/ath10k/simulate_fw_crash > > It will send WMI_FORCE_FW_HANG_ASSERT to firmware, then it will trigger > CPU interrupt status register for SDIO chip, ath10k driver need to > configure it while enable SDIO interrupt, otherwise ath10k driver will > not get the assert error info. > > After this change, it will success for simulate firmware crash. > > Tested with QCA6174 SDIO with firmware > WLAN.RMH.4.4.1-00007-QCARMSWP-1. > > Signed-off-by: Wen Gong > --- > drivers/net/wireless/ath/ath10k/hw.h | 1 + > drivers/net/wireless/ath/ath10k/sdio.c | 8 ++++++-- > 2 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h > index 7131499..60521ed 100644 > --- a/drivers/net/wireless/ath/ath10k/hw.h > +++ b/drivers/net/wireless/ath/ath10k/hw.h > @@ -1095,6 +1095,7 @@ struct ath10k_hw_ops { > #define MBOX_CPU_INT_STATUS_ENABLE_ADDRESS 0x00000819 > #define MBOX_CPU_INT_STATUS_ENABLE_BIT_LSB 0 > #define MBOX_CPU_INT_STATUS_ENABLE_BIT_MASK 0x000000ff > +#define MBOX_CPU_STATUS_ENABLE_ASSERT_MASK 0x00000001 > #define MBOX_ERROR_STATUS_ENABLE_ADDRESS 0x0000081a > #define MBOX_ERROR_STATUS_ENABLE_RX_UNDERFLOW_LSB 1 > #define MBOX_ERROR_STATUS_ENABLE_RX_UNDERFLOW_MASK 0x00000002 > diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c > index fae56c6..78a2f3b 100644 > --- a/drivers/net/wireless/ath/ath10k/sdio.c > +++ b/drivers/net/wireless/ath/ath10k/sdio.c > @@ -850,6 +850,8 @@ static int ath10k_sdio_mbox_proc_cpu_intr(struct ath10k *ar) > > out: > mutex_unlock(&irq_data->mtx); > + ath10k_err(ar, "firmware crashed!\n"); > + queue_work(ar->workqueue, &ar->restart_work); Err, so you consider _any_ CPU interrupt to be caused by the FW crashing? Is that correct? If so, please at least add a comment. Otherwise, maybe you should run this only if MBOX_CPU_STATUS_ENABLE_ASSERT_MASK is set in cpu_int_status? > return ret; > } > > @@ -1495,8 +1497,10 @@ static int ath10k_sdio_hif_enable_intrs(struct ath10k *ar) > regs->int_status_en |= > FIELD_PREP(MBOX_INT_STATUS_ENABLE_MBOX_DATA_MASK, 1); > > - /* Set up the CPU Interrupt status Register */ > - regs->cpu_int_status_en = 0; > + /* Set up the CPU Interrupt Status Register, enable CPU sourced interrupt #0 > + * #0 is used for report assertion from target > + */ > + regs->cpu_int_status_en = FIELD_PREP(MBOX_CPU_STATUS_ENABLE_ASSERT_MASK, 1); > > /* Set up the Error Interrupt status Register */ > regs->err_int_status_en = > -- > 1.9.1 >