mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:36:20 +03:00
The compiler option -Wmissing-prototypes is being enabled globally in the upstream Linux kernel and this causes build failures for nvgpu. The build failures occur because either the driver is missing an include file which has the prototype or because the function is not declared statically when it should be (ie. there are no external users). Fix the various build failures and enable -Wmissing-prototypes to prevent any new instances from occurring. Bug 4404965 Change-Id: I551922836e37b0c94c158232d6277f4053e9d2d3 Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/3027483 (cherry picked from commit e8cbf90db2d0db7277db9e3eec9fb88d69c7fcc7) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/3035518 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
134 lines
3.4 KiB
C
134 lines
3.4 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
// SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
|
|
#include <linux/debugfs.h>
|
|
#include <linux/seq_file.h>
|
|
|
|
#include "swprofile_debugfs.h"
|
|
|
|
#include <nvgpu/swprofile.h>
|
|
#include <nvgpu/debug.h>
|
|
|
|
static int nvgpu_debugfs_swprofile_enable(void *data, u64 val)
|
|
{
|
|
struct nvgpu_swprofiler *p = (struct nvgpu_swprofiler *) data;
|
|
|
|
if (val == 0) {
|
|
nvgpu_swprofile_close(p);
|
|
return 0;
|
|
} else {
|
|
return nvgpu_swprofile_open(p->g, p);
|
|
}
|
|
}
|
|
|
|
DEFINE_SIMPLE_ATTRIBUTE(
|
|
nvgpu_debugfs_swprofile_enable_debugfs_fops,
|
|
NULL,
|
|
nvgpu_debugfs_swprofile_enable,
|
|
"%llu\n"
|
|
);
|
|
|
|
static void nvgpu_debugfs_write_to_seqfile_no_nl(void *ctx, const char *str)
|
|
{
|
|
seq_printf((struct seq_file *)ctx, str);
|
|
}
|
|
|
|
static int nvgpu_debugfs_swprofile_stats(struct seq_file *s, void *unused)
|
|
{
|
|
struct nvgpu_swprofiler *p = s->private;
|
|
struct nvgpu_debug_context o = {
|
|
.fn = nvgpu_debugfs_write_to_seqfile_no_nl,
|
|
.ctx = s,
|
|
};
|
|
|
|
nvgpu_swprofile_print_ranges(p->g, p, &o);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int nvgpu_debugfs_swprofile_stats_open(struct inode *inode, struct file *file)
|
|
{
|
|
return single_open(file, nvgpu_debugfs_swprofile_stats, inode->i_private);
|
|
}
|
|
|
|
static const struct file_operations nvgpu_debugfs_swprofile_stats_debugfs_fops = {
|
|
.open = nvgpu_debugfs_swprofile_stats_open,
|
|
.read = seq_read,
|
|
.llseek = seq_lseek,
|
|
.release = single_release,
|
|
};
|
|
|
|
static int nvgpu_debugfs_swprofile_raw_data(struct seq_file *s, void *unused)
|
|
{
|
|
struct nvgpu_swprofiler *p = s->private;
|
|
struct nvgpu_debug_context o = {
|
|
.fn = nvgpu_debugfs_write_to_seqfile_no_nl,
|
|
.ctx = s,
|
|
};
|
|
|
|
nvgpu_swprofile_print_raw_data(p->g, p, &o);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int nvgpu_debugfs_swprofile_raw_data_open(struct inode *inode, struct file *file)
|
|
{
|
|
return single_open(file, nvgpu_debugfs_swprofile_raw_data, inode->i_private);
|
|
}
|
|
|
|
static const struct file_operations nvgpu_debugfs_swprofile_raw_data_debugfs_fops = {
|
|
.open = nvgpu_debugfs_swprofile_raw_data_open,
|
|
.read = seq_read,
|
|
.llseek = seq_lseek,
|
|
.release = single_release,
|
|
};
|
|
|
|
static int nvgpu_debugfs_swprofile_basic_stats(struct seq_file *s, void *unused)
|
|
{
|
|
struct nvgpu_swprofiler *p = s->private;
|
|
struct nvgpu_debug_context o = {
|
|
.fn = nvgpu_debugfs_write_to_seqfile_no_nl,
|
|
.ctx = s,
|
|
};
|
|
|
|
nvgpu_swprofile_print_basic_stats(p->g, p, &o);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int nvgpu_debugfs_swprofile_basic_stats_open(struct inode *inode, struct file *file)
|
|
{
|
|
return single_open(file, nvgpu_debugfs_swprofile_basic_stats, inode->i_private);
|
|
}
|
|
|
|
static const struct file_operations nvgpu_debugfs_swprofile_basic_stats_debugfs_fops = {
|
|
.open = nvgpu_debugfs_swprofile_basic_stats_open,
|
|
.read = seq_read,
|
|
.llseek = seq_lseek,
|
|
.release = single_release,
|
|
};
|
|
|
|
void nvgpu_debugfs_swprofile_init(struct gk20a *g,
|
|
struct dentry *root,
|
|
struct nvgpu_swprofiler *p,
|
|
const char *name)
|
|
{
|
|
struct dentry *swprofile_root;
|
|
|
|
swprofile_root = debugfs_create_dir(name, root);
|
|
if (IS_ERR_OR_NULL(swprofile_root))
|
|
return;
|
|
|
|
debugfs_create_file("enable", 0200, swprofile_root, p,
|
|
&nvgpu_debugfs_swprofile_enable_debugfs_fops);
|
|
|
|
debugfs_create_file("percentiles", 0400, swprofile_root, p,
|
|
&nvgpu_debugfs_swprofile_stats_debugfs_fops);
|
|
|
|
debugfs_create_file("raw_data", 0400, swprofile_root, p,
|
|
&nvgpu_debugfs_swprofile_raw_data_debugfs_fops);
|
|
|
|
debugfs_create_file("basic_stats", 0400, swprofile_root, p,
|
|
&nvgpu_debugfs_swprofile_basic_stats_debugfs_fops);
|
|
}
|