diff mbox series

[BlueZ,v5,1/2] vhci: Add support to trigger devcoredump and read the dump file

Message ID 20230329230734.BlueZ.v5.1.I21ac5a143b0e42eef4ff71ef04ef0e53a294932a@changeid (mailing list archive)
State Accepted
Commit 8bd2f29617743a5587ca9679957c2e4bf3b78aa9
Headers show
Series [BlueZ,v5,1/2] vhci: Add support to trigger devcoredump and read the dump file | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
tedd_an/CheckPatch success CheckPatch PASS
tedd_an/GitLint success Gitlint PASS
tedd_an/BuildEll success Build ELL PASS
tedd_an/BluezMake success Bluez Make PASS
tedd_an/MakeCheck success Bluez Make Check PASS
tedd_an/MakeDistcheck success Make Distcheck PASS
tedd_an/CheckValgrind success Check Valgrind PASS
tedd_an/CheckSmatch success CheckSparse PASS
tedd_an/bluezmakeextell success Make External ELL PASS
tedd_an/IncrementalBuild success Incremental Build PASS
tedd_an/ScanBuild success Scan Build PASS

Commit Message

Manish Mandlik March 30, 2023, 6:08 a.m. UTC
Add vhci support to trigger the hci devcoredump by writing to
force_devcoredump debugfs entry and read the generated devcoredump
file.

---

Changes in v5:
- Refactor vhci_read_devcd()

Changes in v4:
- Split into two patches - vhci patch and mgmt-tester patch

Changes in v3:
- Fix compiler warning for signed comparision in test_hci_devcd()

Changes in v2:
- Rename function names to *_devcd

 emulator/vhci.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++-
 emulator/vhci.h |  2 ++
 2 files changed, 62 insertions(+), 1 deletion(-)

Comments

bluez.test.bot@gmail.com March 30, 2023, 7:28 a.m. UTC | #1
This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=735224

---Test result---

Test Summary:
CheckPatch                    PASS      1.21 seconds
GitLint                       PASS      0.70 seconds
BuildEll                      PASS      27.03 seconds
BluezMake                     PASS      875.35 seconds
MakeCheck                     PASS      11.64 seconds
MakeDistcheck                 PASS      150.61 seconds
CheckValgrind                 PASS      247.98 seconds
CheckSmatch                   PASS      333.21 seconds
bluezmakeextell               PASS      98.98 seconds
IncrementalBuild              PASS      1423.83 seconds
ScanBuild                     PASS      1017.98 seconds



---
Regards,
Linux Bluetooth
patchwork-bot+bluetooth@kernel.org March 30, 2023, 6:10 p.m. UTC | #2
Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Wed, 29 Mar 2023 23:08:02 -0700 you wrote:
> Add vhci support to trigger the hci devcoredump by writing to
> force_devcoredump debugfs entry and read the generated devcoredump
> file.
> 
> ---
> 
> Changes in v5:
> - Refactor vhci_read_devcd()
> 
> [...]

Here is the summary with links:
  - [BlueZ,v5,1/2] vhci: Add support to trigger devcoredump and read the dump file
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=8bd2f2961774
  - [BlueZ,v5,2/2] mgmt-tester: Add devcoredump tests
    (no matching commit)

You are awesome, thank you!
Luiz Augusto von Dentz March 30, 2023, 6:18 p.m. UTC | #3
Hi Manish,

On Thu, Mar 30, 2023 at 11:10 AM <patchwork-bot+bluetooth@kernel.org> wrote:
>
> Hello:
>
> This series was applied to bluetooth/bluez.git (master)
> by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
>
> On Wed, 29 Mar 2023 23:08:02 -0700 you wrote:
> > Add vhci support to trigger the hci devcoredump by writing to
> > force_devcoredump debugfs entry and read the generated devcoredump
> > file.
> >
> > ---
> >
> > Changes in v5:
> > - Refactor vhci_read_devcd()
> >
> > [...]
>
> Here is the summary with links:
>   - [BlueZ,v5,1/2] vhci: Add support to trigger devcoredump and read the dump file
>     https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=8bd2f2961774
>   - [BlueZ,v5,2/2] mgmt-tester: Add devcoredump tests
>     (no matching commit)

Note that I did a small change to convert from tester_test_failed to
tester_test_abort that is why the no matching commit is shown above.

> You are awesome, thank you!
> --
> Deet-doot-dot, I am a bot.
> https://korg.docs.kernel.org/patchwork/pwbot.html
>
>
diff mbox series

Patch

diff --git a/emulator/vhci.c b/emulator/vhci.c
index a12b11e0f..ecf1db3c7 100644
--- a/emulator/vhci.c
+++ b/emulator/vhci.c
@@ -22,6 +22,7 @@ 
 #include <sys/uio.h>
 #include <fcntl.h>
 #include <unistd.h>
+#include <dirent.h>
 
 #include "lib/bluetooth.h"
 #include "lib/hci.h"
@@ -32,6 +33,7 @@ 
 #include "vhci.h"
 
 #define DEBUGFS_PATH "/sys/kernel/debug/bluetooth"
+#define DEVCORE_PATH "/sys/class/devcoredump"
 
 struct vhci {
 	enum btdev_type type;
@@ -184,7 +186,7 @@  struct btdev *vhci_get_btdev(struct vhci *vhci)
 	return vhci->btdev;
 }
 
-static int vhci_debugfs_write(struct vhci *vhci, char *option, void *data,
+static int vhci_debugfs_write(struct vhci *vhci, char *option, const void *data,
 			      size_t len)
 {
 	char path[64];
@@ -267,3 +269,60 @@  int vhci_set_force_static_address(struct vhci *vhci, bool enable)
 	return vhci_debugfs_write(vhci, "force_static_address", &val,
 							sizeof(val));
 }
+
+int vhci_force_devcd(struct vhci *vhci, const void *data, size_t len)
+{
+	return vhci_debugfs_write(vhci, "force_devcoredump", data, len);
+}
+
+int vhci_read_devcd(struct vhci *vhci, void *buf, size_t size)
+{
+	DIR *dir;
+	struct dirent *entry;
+	char filename[PATH_MAX];
+	int fd;
+	int ret;
+
+	dir = opendir(DEVCORE_PATH);
+	if (dir == NULL)
+		return -errno;
+
+	while ((entry = readdir(dir)) != NULL) {
+		if (strstr(entry->d_name, "devcd"))
+			break;
+	}
+
+	if (entry == NULL) {
+		ret = -ENOENT;
+		goto close_dir;
+	}
+
+	sprintf(filename, DEVCORE_PATH "/%s/data", entry->d_name);
+	fd  = open(filename, O_RDWR);
+	if (fd < 0) {
+		ret = -errno;
+		goto close_dir;
+	}
+
+	ret = read(fd, buf, size);
+	if (ret < 0) {
+		ret = -errno;
+		goto close_file;
+	}
+
+	/* Once the devcoredump is read, write anything to it to mark it for
+	 * cleanup.
+	 */
+	if (write(fd, "0", 1) < 0) {
+		ret = -errno;
+		goto close_file;
+	}
+
+close_file:
+	close(fd);
+
+close_dir:
+	closedir(dir);
+
+	return ret;
+}
diff --git a/emulator/vhci.h b/emulator/vhci.h
index 6da56cb58..68eae4c4a 100644
--- a/emulator/vhci.h
+++ b/emulator/vhci.h
@@ -29,3 +29,5 @@  int vhci_set_msft_opcode(struct vhci *vhci, uint16_t opcode);
 int vhci_set_aosp_capable(struct vhci *vhci, bool enable);
 int vhci_set_emu_opcode(struct vhci *vhci, uint16_t opcode);
 int vhci_set_force_static_address(struct vhci *vhci, bool enable);
+int vhci_force_devcd(struct vhci *vhci, const void *data, size_t len);
+int vhci_read_devcd(struct vhci *vhci, void *buf, size_t size);