Skip to content

Commit

Permalink
[S390] vmcp: disallow modular build
Browse files Browse the repository at this point in the history
Change the tristate Kbuild option into a bool option so that the module
is either builtin or not available at all.
There have been too many cases where people were missing the 'vmcp'
device node and unable to send z/VM CP commands. So let's make sure
that on distros it will always be present.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Heiko Carstens authored and Martin Schwidefsky committed May 17, 2010
1 parent 86f2552 commit f73a2b0
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 32 deletions.
3 changes: 1 addition & 2 deletions drivers/s390/char/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -148,13 +148,12 @@ config VMLOGRDR
This driver depends on the IUCV support driver.

config VMCP
tristate "Support for the z/VM CP interface (VM only)"
bool "Support for the z/VM CP interface"
depends on S390
help
Select this option if you want to be able to interact with the control
program on z/VM


config MONREADER
tristate "API for reading z/VM monitor service records"
depends on IUCV
Expand Down
38 changes: 8 additions & 30 deletions drivers/s390/char/vmcp.c
Original file line number Diff line number Diff line change
@@ -1,35 +1,27 @@
/*
* Copyright IBM Corp. 2004,2007
* Copyright IBM Corp. 2004,2010
* Interface implementation for communication with the z/VM control program
* Author(s): Christian Borntraeger <borntraeger@de.ibm.com>
*
* Author(s): Christian Borntraeger <borntraeger@de.ibm.com>
*
* z/VMs CP offers the possibility to issue commands via the diagnose code 8
* this driver implements a character device that issues these commands and
* returns the answer of CP.
*
* The idea of this driver is based on cpint from Neale Ferguson and #CP in CMS
*/

#define KMSG_COMPONENT "vmcp"
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt

#include <linux/fs.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/miscdevice.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <asm/compat.h>
#include <asm/cpcmd.h>
#include <asm/debug.h>
#include <asm/uaccess.h>
#include "vmcp.h"

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Christian Borntraeger <borntraeger@de.ibm.com>");
MODULE_DESCRIPTION("z/VM CP interface");

static debug_info_t *vmcp_debug;

static int vmcp_open(struct inode *inode, struct file *file)
Expand Down Expand Up @@ -197,11 +189,8 @@ static int __init vmcp_init(void)
{
int ret;

if (!MACHINE_IS_VM) {
pr_warning("The z/VM CP interface device driver cannot be "
"loaded without z/VM\n");
return -ENODEV;
}
if (!MACHINE_IS_VM)
return 0;

vmcp_debug = debug_register("vmcp", 1, 1, 240);
if (!vmcp_debug)
Expand All @@ -214,19 +203,8 @@ static int __init vmcp_init(void)
}

ret = misc_register(&vmcp_dev);
if (ret) {
if (ret)
debug_unregister(vmcp_debug);
return ret;
}

return 0;
}

static void __exit vmcp_exit(void)
{
misc_deregister(&vmcp_dev);
debug_unregister(vmcp_debug);
return ret;
}

module_init(vmcp_init);
module_exit(vmcp_exit);
device_initcall(vmcp_init);

0 comments on commit f73a2b0

Please sign in to comment.