2874c5fd28
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 3029 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
62 lines
1.3 KiB
C
62 lines
1.3 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Copyright (C) 2015 Imagination Technologies
|
|
* Author: Paul Burton <paul.burton@mips.com>
|
|
*/
|
|
|
|
#include <asm/bcache.h>
|
|
#include <asm/debug.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/debugfs.h>
|
|
#include <linux/init.h>
|
|
|
|
static ssize_t sc_prefetch_read(struct file *file, char __user *user_buf,
|
|
size_t count, loff_t *ppos)
|
|
{
|
|
bool enabled = bc_prefetch_is_enabled();
|
|
char buf[3];
|
|
|
|
buf[0] = enabled ? 'Y' : 'N';
|
|
buf[1] = '\n';
|
|
buf[2] = 0;
|
|
|
|
return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
|
|
}
|
|
|
|
static ssize_t sc_prefetch_write(struct file *file,
|
|
const char __user *user_buf,
|
|
size_t count, loff_t *ppos)
|
|
{
|
|
bool enabled;
|
|
int err;
|
|
|
|
err = kstrtobool_from_user(user_buf, count, &enabled);
|
|
if (err)
|
|
return err;
|
|
|
|
if (enabled)
|
|
bc_prefetch_enable();
|
|
else
|
|
bc_prefetch_disable();
|
|
|
|
return count;
|
|
}
|
|
|
|
static const struct file_operations sc_prefetch_fops = {
|
|
.open = simple_open,
|
|
.llseek = default_llseek,
|
|
.read = sc_prefetch_read,
|
|
.write = sc_prefetch_write,
|
|
};
|
|
|
|
static int __init sc_debugfs_init(void)
|
|
{
|
|
struct dentry *dir;
|
|
|
|
dir = debugfs_create_dir("l2cache", mips_debugfs_dir);
|
|
debugfs_create_file("prefetch", S_IRUGO | S_IWUSR, dir, NULL,
|
|
&sc_prefetch_fops);
|
|
return 0;
|
|
}
|
|
late_initcall(sc_debugfs_init);
|