forked from Minki/linux
s390/zcore: remove memmap device
Remove unused /sys/kernel/debug/zcore/memmap device. Since at least version 1.24.0 of s390-tools zfcpdump no longer needs it and reads /proc/vmcore instead. Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com> Reviewed-by: Philipp Rudo <prudo@linux.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
parent
0188d08a46
commit
b39e7724b0
@ -1,8 +1,7 @@
|
|||||||
// SPDX-License-Identifier: GPL-1.0+
|
// SPDX-License-Identifier: GPL-1.0+
|
||||||
/*
|
/*
|
||||||
* zcore module to export memory content and register sets for creating system
|
* zcore module to export memory content and register sets for creating system
|
||||||
* dumps on SCSI disks (zfcpdump). The "zcore/mem" debugfs file shows the same
|
* dumps on SCSI disks (zfcpdump).
|
||||||
* dump format as s390 standalone dumps.
|
|
||||||
*
|
*
|
||||||
* For more information please refer to Documentation/s390/zfcpdump.rst
|
* For more information please refer to Documentation/s390/zfcpdump.rst
|
||||||
*
|
*
|
||||||
@ -16,7 +15,6 @@
|
|||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/debugfs.h>
|
#include <linux/debugfs.h>
|
||||||
#include <linux/memblock.h>
|
|
||||||
|
|
||||||
#include <asm/asm-offsets.h>
|
#include <asm/asm-offsets.h>
|
||||||
#include <asm/ipl.h>
|
#include <asm/ipl.h>
|
||||||
@ -33,8 +31,6 @@
|
|||||||
|
|
||||||
#define TRACE(x...) debug_sprintf_event(zcore_dbf, 1, x)
|
#define TRACE(x...) debug_sprintf_event(zcore_dbf, 1, x)
|
||||||
|
|
||||||
#define CHUNK_INFO_SIZE 34 /* 2 16-byte char, each followed by blank */
|
|
||||||
|
|
||||||
enum arch_id {
|
enum arch_id {
|
||||||
ARCH_S390 = 0,
|
ARCH_S390 = 0,
|
||||||
ARCH_S390X = 1,
|
ARCH_S390X = 1,
|
||||||
@ -48,7 +44,6 @@ struct ipib_info {
|
|||||||
static struct debug_info *zcore_dbf;
|
static struct debug_info *zcore_dbf;
|
||||||
static int hsa_available;
|
static int hsa_available;
|
||||||
static struct dentry *zcore_dir;
|
static struct dentry *zcore_dir;
|
||||||
static struct dentry *zcore_memmap_file;
|
|
||||||
static struct dentry *zcore_reipl_file;
|
static struct dentry *zcore_reipl_file;
|
||||||
static struct dentry *zcore_hsa_file;
|
static struct dentry *zcore_hsa_file;
|
||||||
static struct ipl_parameter_block *zcore_ipl_block;
|
static struct ipl_parameter_block *zcore_ipl_block;
|
||||||
@ -139,46 +134,6 @@ static void release_hsa(void)
|
|||||||
hsa_available = 0;
|
hsa_available = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t zcore_memmap_read(struct file *filp, char __user *buf,
|
|
||||||
size_t count, loff_t *ppos)
|
|
||||||
{
|
|
||||||
return simple_read_from_buffer(buf, count, ppos, filp->private_data,
|
|
||||||
memblock.memory.cnt * CHUNK_INFO_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int zcore_memmap_open(struct inode *inode, struct file *filp)
|
|
||||||
{
|
|
||||||
struct memblock_region *reg;
|
|
||||||
char *buf;
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
buf = kcalloc(memblock.memory.cnt, CHUNK_INFO_SIZE, GFP_KERNEL);
|
|
||||||
if (!buf) {
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
for_each_memblock(memory, reg) {
|
|
||||||
sprintf(buf + (i++ * CHUNK_INFO_SIZE), "%016llx %016llx ",
|
|
||||||
(unsigned long long) reg->base,
|
|
||||||
(unsigned long long) reg->size);
|
|
||||||
}
|
|
||||||
filp->private_data = buf;
|
|
||||||
return nonseekable_open(inode, filp);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int zcore_memmap_release(struct inode *inode, struct file *filp)
|
|
||||||
{
|
|
||||||
kfree(filp->private_data);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct file_operations zcore_memmap_fops = {
|
|
||||||
.owner = THIS_MODULE,
|
|
||||||
.read = zcore_memmap_read,
|
|
||||||
.open = zcore_memmap_open,
|
|
||||||
.release = zcore_memmap_release,
|
|
||||||
.llseek = no_llseek,
|
|
||||||
};
|
|
||||||
|
|
||||||
static ssize_t zcore_reipl_write(struct file *filp, const char __user *buf,
|
static ssize_t zcore_reipl_write(struct file *filp, const char __user *buf,
|
||||||
size_t count, loff_t *ppos)
|
size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
@ -335,17 +290,11 @@ static int __init zcore_init(void)
|
|||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
zcore_memmap_file = debugfs_create_file("memmap", S_IRUSR, zcore_dir,
|
|
||||||
NULL, &zcore_memmap_fops);
|
|
||||||
if (!zcore_memmap_file) {
|
|
||||||
rc = -ENOMEM;
|
|
||||||
goto fail_dir;
|
|
||||||
}
|
|
||||||
zcore_reipl_file = debugfs_create_file("reipl", S_IRUSR, zcore_dir,
|
zcore_reipl_file = debugfs_create_file("reipl", S_IRUSR, zcore_dir,
|
||||||
NULL, &zcore_reipl_fops);
|
NULL, &zcore_reipl_fops);
|
||||||
if (!zcore_reipl_file) {
|
if (!zcore_reipl_file) {
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto fail_memmap_file;
|
goto fail_dir;
|
||||||
}
|
}
|
||||||
zcore_hsa_file = debugfs_create_file("hsa", S_IRUSR|S_IWUSR, zcore_dir,
|
zcore_hsa_file = debugfs_create_file("hsa", S_IRUSR|S_IWUSR, zcore_dir,
|
||||||
NULL, &zcore_hsa_fops);
|
NULL, &zcore_hsa_fops);
|
||||||
@ -357,8 +306,6 @@ static int __init zcore_init(void)
|
|||||||
|
|
||||||
fail_reipl_file:
|
fail_reipl_file:
|
||||||
debugfs_remove(zcore_reipl_file);
|
debugfs_remove(zcore_reipl_file);
|
||||||
fail_memmap_file:
|
|
||||||
debugfs_remove(zcore_memmap_file);
|
|
||||||
fail_dir:
|
fail_dir:
|
||||||
debugfs_remove(zcore_dir);
|
debugfs_remove(zcore_dir);
|
||||||
fail:
|
fail:
|
||||||
|
Loading…
Reference in New Issue
Block a user