From c60d8b7520bf14b6002ac93e7a205ff05913ab88 Mon Sep 17 00:00:00 2001 From: Thomas Fleury Date: Thu, 7 Jun 2018 14:55:03 -0700 Subject: gpu: nvgpu: add bios debugfs node Add bios debugfs node to get current VBIOS version. Bug 2113607 Change-Id: I8d52b651f923080000a4ad529e7efa05667563ba Signed-off-by: Thomas Fleury Reviewed-on: https://git-master.nvidia.com/r/1743030 Reviewed-by: Richard Zhao Reviewed-by: svc-mobile-coverity GVS: Gerrit_Virtual_Submit Reviewed-by: Seshendra Gadagottu Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/Makefile | 1 + drivers/gpu/nvgpu/os/linux/debug.c | 5 ++- drivers/gpu/nvgpu/os/linux/debug_bios.c | 60 +++++++++++++++++++++++++++++++++ drivers/gpu/nvgpu/os/linux/debug_bios.h | 21 ++++++++++++ 4 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 drivers/gpu/nvgpu/os/linux/debug_bios.c create mode 100644 drivers/gpu/nvgpu/os/linux/debug_bios.h (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile index 42d9855f..faf17a91 100644 --- a/drivers/gpu/nvgpu/Makefile +++ b/drivers/gpu/nvgpu/Makefile @@ -78,6 +78,7 @@ nvgpu-$(CONFIG_DEBUG_FS) += \ os/linux/debug_allocator.o \ os/linux/debug_hal.o \ os/linux/debug_clk.o \ + os/linux/debug_bios.o \ os/linux/debug_xve.o ifeq ($(CONFIG_NVGPU_TRACK_MEM_USAGE),y) diff --git a/drivers/gpu/nvgpu/os/linux/debug.c b/drivers/gpu/nvgpu/os/linux/debug.c index 8738f3e7..c4dae9e6 100644 --- a/drivers/gpu/nvgpu/os/linux/debug.c +++ b/drivers/gpu/nvgpu/os/linux/debug.c @@ -22,6 +22,7 @@ #include "debug_sched.h" #include "debug_hal.h" #include "debug_xve.h" +#include "debug_bios.h" #include "os_linux.h" #include "platform_gk20a.h" @@ -434,8 +435,10 @@ void gk20a_debug_init(struct gk20a *g, const char *debugfs_symlink) #ifdef CONFIG_NVGPU_TRACK_MEM_USAGE nvgpu_kmem_debugfs_init(g); #endif - if (g->pci_vendor_id) + if (g->pci_vendor_id) { nvgpu_xve_debugfs_init(g); + nvgpu_bios_debugfs_init(g); + } } void gk20a_debug_deinit(struct gk20a *g) diff --git a/drivers/gpu/nvgpu/os/linux/debug_bios.c b/drivers/gpu/nvgpu/os/linux/debug_bios.c new file mode 100644 index 00000000..f69ccf38 --- /dev/null +++ b/drivers/gpu/nvgpu/os/linux/debug_bios.c @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2018 NVIDIA Corporation. All rights reserved. + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include + +#include "debug_bios.h" +#include "os_linux.h" + +#include +#include + +static int bios_version_show(struct seq_file *s, void *unused) +{ + struct gk20a *g = s->private; + + seq_printf(s, "Version %02x.%02x.%02x.%02x.%02x\n", + (g->bios.vbios_version >> 24) & 0xFF, + (g->bios.vbios_version >> 16) & 0xFF, + (g->bios.vbios_version >> 8) & 0xFF, + (g->bios.vbios_version >> 0) & 0xFF, + (g->bios.vbios_oem_version) & 0xFF); + + return 0; +} + +static int bios_version_open(struct inode *inode, struct file *file) +{ + return single_open(file, bios_version_show, inode->i_private); +} + +static const struct file_operations bios_version_fops = { + .open = bios_version_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + + +int nvgpu_bios_debugfs_init(struct gk20a *g) +{ + struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g); + struct dentry *gpu_root = l->debugfs; + + debugfs_create_file("bios", S_IRUGO, + gpu_root, g, + &bios_version_fops); + + return 0; +} diff --git a/drivers/gpu/nvgpu/os/linux/debug_bios.h b/drivers/gpu/nvgpu/os/linux/debug_bios.h new file mode 100644 index 00000000..f8e7783c --- /dev/null +++ b/drivers/gpu/nvgpu/os/linux/debug_bios.h @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2018 NVIDIA Corporation. All rights reserved. + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef __NVGPU_DEBUG_BIOS_H__ +#define __NVGPU_DEBUG_BIOS_H__ + +struct gk20a; +int nvgpu_bios_debugfs_init(struct gk20a *g); + +#endif /* __NVGPU_DEBUG_BIOS_H__ */ -- cgit v1.2.2