From: Michal Kazior <michal.kazior@tieto.com> To: Ben Greear <greearb@candelatech.com> Cc: Kalle Valo <kvalo@qca.qualcomm.com>, "ath10k@lists.infradead.org" <ath10k@lists.infradead.org>, linux-wireless <linux-wireless@vger.kernel.org> Subject: Re: [PATCH v7 2/8] ath10k: provide firmware crash info via debugfs Date: Wed, 20 Aug 2014 08:28:14 +0200 [thread overview] Message-ID: <CA+BoTQ=ocpY2BDCGhMB7E9s4ykp18uXHMTc7rOn0qb7mDyZ5qw@mail.gmail.com> (raw) In-Reply-To: <53F36C63.8040809@candelatech.com> On 19 August 2014 17:25, Ben Greear <greearb@candelatech.com> wrote: > On 08/19/2014 02:33 AM, Michal Kazior wrote: >> On 19 August 2014 10:22, Kalle Valo <kvalo@qca.qualcomm.com> wrote: [...] >>> + __le32 target_version; >>> + __le32 fw_version_major; >>> + __le32 fw_version_minor; >>> + __le32 fw_version_release; >>> + __le32 fw_version_build; >>> + __le32 phy_capability; >>> + __le32 hw_min_tx_power; >>> + __le32 hw_max_tx_power; >>> + __le32 ht_cap_info; >>> + __le32 vht_cap_info; >>> + __le32 num_rf_chains; >> >> >> Hmm.. some of these values don't really change once driver is loaded >> so we could probably just export them as separate debugfs entries but >> perhaps that's an overkill just for dumping. > > > I think it will be easier for all involved if there is a single dump image > that > has all needed info. Likely the end user of the dump file will have little > or no > interaction with the host that dumped the file to begin with. I think there's been this idea about moving dumping to udev somewhat, no? Since this is just debugfs then I imagine you could have a userspace program that would create the single blob/crash report from things it thinks is important, e.g.. `uname -a`, debugfs entries (fw stack traces, dbglog, etc), recent kernel log buffer, etc. It could even all be stored in plaintext (with binary data encoded as a hexdump). But that, I guess, could be cumbersome, at least initially, until all major distros adapt. > >>> + dump_data->kernel_ver_code = cpu_to_le32(LINUX_VERSION_CODE); >>> + strlcpy(dump_data->kernel_ver, VERMAGIC_STRING, >>> + sizeof(dump_data->kernel_ver)); >>> + >>> + dump_data->tv_sec = cpu_to_le64(crash_data->timestamp.tv_sec); >>> + dump_data->tv_nsec = cpu_to_le64(crash_data->timestamp.tv_nsec); >>> + >>> + /* Gather dbg-log */ >>> + dump_tlv = (struct ath10k_tlv_dump_data *)(buf + sofar); >>> + dump_tlv->type = cpu_to_le32(ATH10K_FW_CRASH_DUMP_DBGLOG); >>> + dump_tlv->tlv_len = >>> cpu_to_le32(sizeof(crash_data->dbglog_entry_data)); >> >> >> Hmm should this really be sizeof()? Not next_idx (which effectively >> defines number of bytes of the dbglog)? > > > I haven't tried decoding this yet, but we may need to know the next_idx > to decode this properly. So basically a (length, payload) encoding would be necessary here instead of a single stream, right? >>> + ret = ath10k_pci_diag_read_mem(ar, dbuf.buffer, buffer, >>> + dbuf.length); >>> + if (ret != 0) { >>> + ath10k_warn("failed to read debug log buffer from >>> address 0x%x: %d\n", >>> + dbuf.buffer, ret); >>> + kfree(buffer); >>> + return; >>> + } >>> + >>> + ath10k_debug_dbglog_add(ar, buffer, dbuf.length); >>> + kfree(buffer); >> >> >> Is the `buffer` really a string of bytes (u8) or just u32 in disguise? >> If it's the former then on big-endian host the implicit byte swap will >> mess it up and userspace will have no way of knowing that now. > > > dbglog is array of 32 bit ints. Thanks, this clears things. Then it is necessary to byte-swap cpu_to_le32 before calling debug_dbglog_add. Michał
WARNING: multiple messages have this Message-ID (diff)
From: Michal Kazior <michal.kazior@tieto.com> To: Ben Greear <greearb@candelatech.com> Cc: Kalle Valo <kvalo@qca.qualcomm.com>, linux-wireless <linux-wireless@vger.kernel.org>, "ath10k@lists.infradead.org" <ath10k@lists.infradead.org> Subject: Re: [PATCH v7 2/8] ath10k: provide firmware crash info via debugfs Date: Wed, 20 Aug 2014 08:28:14 +0200 [thread overview] Message-ID: <CA+BoTQ=ocpY2BDCGhMB7E9s4ykp18uXHMTc7rOn0qb7mDyZ5qw@mail.gmail.com> (raw) In-Reply-To: <53F36C63.8040809@candelatech.com> On 19 August 2014 17:25, Ben Greear <greearb@candelatech.com> wrote: > On 08/19/2014 02:33 AM, Michal Kazior wrote: >> On 19 August 2014 10:22, Kalle Valo <kvalo@qca.qualcomm.com> wrote: [...] >>> + __le32 target_version; >>> + __le32 fw_version_major; >>> + __le32 fw_version_minor; >>> + __le32 fw_version_release; >>> + __le32 fw_version_build; >>> + __le32 phy_capability; >>> + __le32 hw_min_tx_power; >>> + __le32 hw_max_tx_power; >>> + __le32 ht_cap_info; >>> + __le32 vht_cap_info; >>> + __le32 num_rf_chains; >> >> >> Hmm.. some of these values don't really change once driver is loaded >> so we could probably just export them as separate debugfs entries but >> perhaps that's an overkill just for dumping. > > > I think it will be easier for all involved if there is a single dump image > that > has all needed info. Likely the end user of the dump file will have little > or no > interaction with the host that dumped the file to begin with. I think there's been this idea about moving dumping to udev somewhat, no? Since this is just debugfs then I imagine you could have a userspace program that would create the single blob/crash report from things it thinks is important, e.g.. `uname -a`, debugfs entries (fw stack traces, dbglog, etc), recent kernel log buffer, etc. It could even all be stored in plaintext (with binary data encoded as a hexdump). But that, I guess, could be cumbersome, at least initially, until all major distros adapt. > >>> + dump_data->kernel_ver_code = cpu_to_le32(LINUX_VERSION_CODE); >>> + strlcpy(dump_data->kernel_ver, VERMAGIC_STRING, >>> + sizeof(dump_data->kernel_ver)); >>> + >>> + dump_data->tv_sec = cpu_to_le64(crash_data->timestamp.tv_sec); >>> + dump_data->tv_nsec = cpu_to_le64(crash_data->timestamp.tv_nsec); >>> + >>> + /* Gather dbg-log */ >>> + dump_tlv = (struct ath10k_tlv_dump_data *)(buf + sofar); >>> + dump_tlv->type = cpu_to_le32(ATH10K_FW_CRASH_DUMP_DBGLOG); >>> + dump_tlv->tlv_len = >>> cpu_to_le32(sizeof(crash_data->dbglog_entry_data)); >> >> >> Hmm should this really be sizeof()? Not next_idx (which effectively >> defines number of bytes of the dbglog)? > > > I haven't tried decoding this yet, but we may need to know the next_idx > to decode this properly. So basically a (length, payload) encoding would be necessary here instead of a single stream, right? >>> + ret = ath10k_pci_diag_read_mem(ar, dbuf.buffer, buffer, >>> + dbuf.length); >>> + if (ret != 0) { >>> + ath10k_warn("failed to read debug log buffer from >>> address 0x%x: %d\n", >>> + dbuf.buffer, ret); >>> + kfree(buffer); >>> + return; >>> + } >>> + >>> + ath10k_debug_dbglog_add(ar, buffer, dbuf.length); >>> + kfree(buffer); >> >> >> Is the `buffer` really a string of bytes (u8) or just u32 in disguise? >> If it's the former then on big-endian host the implicit byte swap will >> mess it up and userspace will have no way of knowing that now. > > > dbglog is array of 32 bit ints. Thanks, this clears things. Then it is necessary to byte-swap cpu_to_le32 before calling debug_dbglog_add. Michał _______________________________________________ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
next prev parent reply other threads:[~2014-08-20 6:28 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-08-19 8:22 [PATCH v7 0/8] ath10k: firmware crash dump Kalle Valo 2014-08-19 8:22 ` Kalle Valo 2014-08-19 8:22 ` [PATCH v7 1/8] ath10k: add ath10k_pci_diag_* helpers Kalle Valo 2014-08-19 8:22 ` Kalle Valo 2014-08-19 8:22 ` [PATCH v7 2/8] ath10k: provide firmware crash info via debugfs Kalle Valo 2014-08-19 8:22 ` Kalle Valo 2014-08-19 9:33 ` Michal Kazior 2014-08-19 9:33 ` Michal Kazior 2014-08-19 15:25 ` Ben Greear 2014-08-19 15:25 ` Ben Greear 2014-08-19 16:05 ` Ben Greear 2014-08-19 16:05 ` Ben Greear 2014-08-20 7:36 ` Kalle Valo 2014-08-20 7:36 ` Kalle Valo 2014-08-20 6:28 ` Michal Kazior [this message] 2014-08-20 6:28 ` Michal Kazior 2014-08-20 6:48 ` Kalle Valo 2014-08-20 6:48 ` Kalle Valo 2014-08-20 6:56 ` Kalle Valo 2014-08-20 6:56 ` Kalle Valo 2014-08-20 13:13 ` Ben Greear 2014-08-20 13:13 ` Ben Greear 2014-08-20 7:29 ` Kalle Valo 2014-08-20 7:29 ` Kalle Valo 2014-08-20 13:08 ` Ben Greear 2014-08-20 13:08 ` Ben Greear 2014-08-20 14:19 ` Kalle Valo 2014-08-20 14:19 ` Kalle Valo 2014-08-20 14:52 ` Ben Greear 2014-08-20 14:52 ` Ben Greear 2014-08-19 8:23 ` [PATCH v7 3/8] ath10k: save firmware debug log messages Kalle Valo 2014-08-19 8:23 ` Kalle Valo 2014-08-19 9:39 ` Michal Kazior 2014-08-19 9:39 ` Michal Kazior 2014-08-19 9:44 ` Michal Kazior 2014-08-19 9:44 ` Michal Kazior 2014-08-19 15:16 ` Ben Greear 2014-08-19 15:16 ` Ben Greear 2014-08-19 8:23 ` [PATCH v7 4/8] ath10k: save firmware stack upon firmware crash Kalle Valo 2014-08-19 8:23 ` Kalle Valo 2014-08-19 9:37 ` Michal Kazior 2014-08-19 9:37 ` Michal Kazior 2014-08-19 8:23 ` [PATCH v7 5/8] ath10k: dump exception stack contents on " Kalle Valo 2014-08-19 8:23 ` Kalle Valo 2014-08-19 9:38 ` Michal Kazior 2014-08-19 9:38 ` Michal Kazior 2014-08-19 8:23 ` [PATCH v7 6/8] ath10k: save firmware RAM and ROM BSS sections on crash Kalle Valo 2014-08-19 8:23 ` Kalle Valo 2014-08-19 9:39 ` Michal Kazior 2014-08-19 9:39 ` Michal Kazior 2014-08-19 8:23 ` [PATCH v7 7/8] ath10k: rename ath10k_pci_hif_dump_area() to ath10k_pci_fw_crashed_dump() Kalle Valo 2014-08-19 8:23 ` Kalle Valo 2014-08-19 8:23 ` [PATCH v7 8/8] ath10k: print more driver info when firmware crashes Kalle Valo 2014-08-19 8:23 ` 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='CA+BoTQ=ocpY2BDCGhMB7E9s4ykp18uXHMTc7rOn0qb7mDyZ5qw@mail.gmail.com' \ --to=michal.kazior@tieto.com \ --cc=ath10k@lists.infradead.org \ --cc=greearb@candelatech.com \ --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: linkBe 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.