All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Greear <greearb@candelatech.com>
To: Kalle Valo <kvalo@qca.qualcomm.com>, ath10k@lists.infradead.org
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH v2] ath10k: support firmware crash-by-assert
Date: Wed, 10 Sep 2014 09:34:24 -0700	[thread overview]
Message-ID: <54107D90.7080907@candelatech.com> (raw)
In-Reply-To: <20140910155928.30418.45160.stgit@potku.adurom.net>

On 09/10/2014 08:59 AM, Kalle Valo wrote:
> From: Ben Greear <greearb@candelatech.com>
>
> 10.1 firmware does not have an official way to
> cause assert on purpose, but it can be done with
> carefully crafted WMI command.  This is a different
> kind of crash from the 'hard' crash, which is
> a bad memory dereference.
>
> Different crashes decode in different manners, so
> this will help the crash-report testing as well as
> offer better ways to test firmware failure and
> recovery.
>
> kvalo: move the wmi command creation to debug.c, modify
> the info print

This looks fine to me.  I have not tested this version.

Thanks,
Ben

>
> Signed-off-by: Ben Greear <greearb@candelatech.com>
> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
> ---
>   drivers/net/wireless/ath/ath10k/debug.c |   28 +++++++++++++++++++++++++++-
>   1 file changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c
> index f948a4d8ee59..c5d01058c2a3 100644
> --- a/drivers/net/wireless/ath/ath10k/debug.c
> +++ b/drivers/net/wireless/ath/ath10k/debug.c
> @@ -565,6 +565,26 @@ static const struct file_operations fops_fw_stats = {
>   	.llseek = default_llseek,
>   };
>
> +/* This is a clean assert crash in firmware. */
> +static int ath10k_debug_fw_assert(struct ath10k *ar)
> +{
> +	struct wmi_vdev_install_key_cmd *cmd;
> +	struct sk_buff *skb;
> +
> +	skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd) + 16);
> +	if (!skb)
> +		return -ENOMEM;
> +
> +	cmd = (struct wmi_vdev_install_key_cmd *)skb->data;
> +	memset(cmd, 0, sizeof(*cmd));
> +
> +	/* big enough number so that firmware asserts */
> +	cmd->vdev_id = __cpu_to_le32(0x7ffe);
> +
> +	return ath10k_wmi_cmd_send(ar, skb,
> +				   ar->wmi.cmd->vdev_install_key_cmdid);
> +}
> +
>   static ssize_t ath10k_read_simulate_fw_crash(struct file *file,
>   					     char __user *user_buf,
>   					     size_t count, loff_t *ppos)
> @@ -574,7 +594,10 @@ static ssize_t ath10k_read_simulate_fw_crash(struct file *file,
>   			   " WMI_FORCE_FW_HANG_ASSERT to firmware if FW"
>   			   " supports that command.\n `hard` - this will send"
>   			   " to firmware command with illegal parameters"
> -			   " causing firmware crash.\n";
> +			   " causing firmware crash.\n"
> +			   "`assert` - this will send special illegal parameter"
> +			   " to firmware to cause assert failure"
> +			   " and crash.\n";
>
>   	return simple_read_from_buffer(user_buf, count, ppos, buf, strlen(buf));
>   }
> @@ -623,6 +646,9 @@ static ssize_t ath10k_write_simulate_fw_crash(struct file *file,
>   		 */
>   		ret = ath10k_wmi_vdev_set_param(ar, 0x7fff,
>   					ar->wmi.vdev_param->rts_threshold, 0);
> +	} else if (!strcmp(buf, "assert")) {
> +		ath10k_info(ar, "simulating firmware assert crash\n");
> +		ret = ath10k_debug_fw_assert(ar);
>   	} else {
>   		ret = -EINVAL;
>   		goto exit;
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com


_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

WARNING: multiple messages have this Message-ID (diff)
From: Ben Greear <greearb@candelatech.com>
To: Kalle Valo <kvalo@qca.qualcomm.com>, ath10k@lists.infradead.org
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH v2] ath10k: support firmware crash-by-assert
Date: Wed, 10 Sep 2014 09:34:24 -0700	[thread overview]
Message-ID: <54107D90.7080907@candelatech.com> (raw)
In-Reply-To: <20140910155928.30418.45160.stgit@potku.adurom.net>

On 09/10/2014 08:59 AM, Kalle Valo wrote:
> From: Ben Greear <greearb@candelatech.com>
>
> 10.1 firmware does not have an official way to
> cause assert on purpose, but it can be done with
> carefully crafted WMI command.  This is a different
> kind of crash from the 'hard' crash, which is
> a bad memory dereference.
>
> Different crashes decode in different manners, so
> this will help the crash-report testing as well as
> offer better ways to test firmware failure and
> recovery.
>
> kvalo: move the wmi command creation to debug.c, modify
> the info print

This looks fine to me.  I have not tested this version.

Thanks,
Ben

>
> Signed-off-by: Ben Greear <greearb@candelatech.com>
> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
> ---
>   drivers/net/wireless/ath/ath10k/debug.c |   28 +++++++++++++++++++++++++++-
>   1 file changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c
> index f948a4d8ee59..c5d01058c2a3 100644
> --- a/drivers/net/wireless/ath/ath10k/debug.c
> +++ b/drivers/net/wireless/ath/ath10k/debug.c
> @@ -565,6 +565,26 @@ static const struct file_operations fops_fw_stats = {
>   	.llseek = default_llseek,
>   };
>
> +/* This is a clean assert crash in firmware. */
> +static int ath10k_debug_fw_assert(struct ath10k *ar)
> +{
> +	struct wmi_vdev_install_key_cmd *cmd;
> +	struct sk_buff *skb;
> +
> +	skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd) + 16);
> +	if (!skb)
> +		return -ENOMEM;
> +
> +	cmd = (struct wmi_vdev_install_key_cmd *)skb->data;
> +	memset(cmd, 0, sizeof(*cmd));
> +
> +	/* big enough number so that firmware asserts */
> +	cmd->vdev_id = __cpu_to_le32(0x7ffe);
> +
> +	return ath10k_wmi_cmd_send(ar, skb,
> +				   ar->wmi.cmd->vdev_install_key_cmdid);
> +}
> +
>   static ssize_t ath10k_read_simulate_fw_crash(struct file *file,
>   					     char __user *user_buf,
>   					     size_t count, loff_t *ppos)
> @@ -574,7 +594,10 @@ static ssize_t ath10k_read_simulate_fw_crash(struct file *file,
>   			   " WMI_FORCE_FW_HANG_ASSERT to firmware if FW"
>   			   " supports that command.\n `hard` - this will send"
>   			   " to firmware command with illegal parameters"
> -			   " causing firmware crash.\n";
> +			   " causing firmware crash.\n"
> +			   "`assert` - this will send special illegal parameter"
> +			   " to firmware to cause assert failure"
> +			   " and crash.\n";
>
>   	return simple_read_from_buffer(user_buf, count, ppos, buf, strlen(buf));
>   }
> @@ -623,6 +646,9 @@ static ssize_t ath10k_write_simulate_fw_crash(struct file *file,
>   		 */
>   		ret = ath10k_wmi_vdev_set_param(ar, 0x7fff,
>   					ar->wmi.vdev_param->rts_threshold, 0);
> +	} else if (!strcmp(buf, "assert")) {
> +		ath10k_info(ar, "simulating firmware assert crash\n");
> +		ret = ath10k_debug_fw_assert(ar);
>   	} else {
>   		ret = -EINVAL;
>   		goto exit;
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com


  reply	other threads:[~2014-09-10 16:34 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-10 15:59 [PATCH v2] ath10k: support firmware crash-by-assert Kalle Valo
2014-09-10 15:59 ` Kalle Valo
2014-09-10 16:34 ` Ben Greear [this message]
2014-09-10 16:34   ` Ben Greear
2014-09-11 20:40   ` Kalle Valo
2014-09-11 20:40     ` Kalle Valo
2014-09-11 20:44 ` Kalle Valo
2014-09-11 20:44   ` Kalle Valo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54107D90.7080907@candelatech.com \
    --to=greearb@candelatech.com \
    --cc=ath10k@lists.infradead.org \
    --cc=kvalo@qca.qualcomm.com \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.